mirror of
https://github.com/Termix-SSH/Termix.git
synced 2026-10-28 14:15:24 +00:00
chore: rename the plugin sdk to @termix-ssh/plugin-sdk
This commit is contained in:
1 parent
0c4f673318
commit
e608505b39
132 files changed
+250
-1336
No files matched your search
@@ -9,7 +9,7 @@
|
||||
import type {
|
||||
PluginLoginMethod,
|
||||
PluginSecondFactor,
|
||||
} from "@termix/plugin-sdk/backend";
|
||||
} from "@termix-ssh/plugin-sdk/backend";
|
||||
|
||||
export type LoginMethod = PluginLoginMethod & { pluginId: string };
|
||||
export type SecondFactor = PluginSecondFactor & { pluginId: string };
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
import type { PluginVerifiedIdentity } from "@termix/plugin-sdk/backend";
|
||||
import type { PluginVerifiedIdentity } from "@termix-ssh/plugin-sdk/backend";
|
||||
|
||||
export { LoginMethodError } from "@termix/plugin-sdk/backend";
|
||||
export { LoginMethodError } from "@termix-ssh/plugin-sdk/backend";
|
||||
|
||||
/** The logout claims a login carried, stored as sessions.external_session_ref. */
|
||||
export interface ExternalSessionRef {
|
||||
|
||||
@@ -10,7 +10,7 @@
|
||||
* on this path has to decrypt and the async work stays in one place.
|
||||
*/
|
||||
|
||||
import type { PluginManifest } from "@termix/plugin-sdk/manifest";
|
||||
import type { PluginManifest } from "@termix-ssh/plugin-sdk/manifest";
|
||||
import { createCurrentPluginSettingsRepository } from "../repositories/factory.js";
|
||||
import type { PluginSettingsRecord } from "../repositories/plugin-settings-repository.js";
|
||||
import {
|
||||
@@ -22,7 +22,7 @@ import {
|
||||
import {
|
||||
coerceSettingValue,
|
||||
validateSettingValue,
|
||||
} from "@termix/plugin-sdk/settings";
|
||||
} from "@termix-ssh/plugin-sdk/settings";
|
||||
import { getPluginRuntime } from "../../plugins/index.js";
|
||||
import { consume } from "../../plugins/registry.js";
|
||||
import { sshLogger } from "../../utils/logger.js";
|
||||
|
||||
@@ -2,7 +2,7 @@ import {
|
||||
CORE_KEYBINDING_ACTIONS,
|
||||
validateKeybindingActionParams,
|
||||
type PluginKeybindingActionContribution,
|
||||
} from "@termix/plugin-sdk/manifest";
|
||||
} from "@termix-ssh/plugin-sdk/manifest";
|
||||
|
||||
export interface DeclaredKeybindingAction extends PluginKeybindingActionContribution {
|
||||
pluginId: string;
|
||||
|
||||
@@ -18,7 +18,7 @@ import express, { type Request, type Response } from "express";
|
||||
import { databaseLogger } from "../../utils/logger.js";
|
||||
import { getPluginRouter, isPluginInstalled } from "../../plugins/http.js";
|
||||
import { getRequestBasePath } from "../../utils/request-origin.js";
|
||||
import type { PluginLegacyRedirect } from "@termix/plugin-sdk/manifest";
|
||||
import type { PluginLegacyRedirect } from "@termix-ssh/plugin-sdk/manifest";
|
||||
|
||||
const router = express.Router();
|
||||
|
||||
|
||||
@@ -32,7 +32,7 @@ import {
|
||||
import type {
|
||||
PluginManifest,
|
||||
PluginSettingsField,
|
||||
} from "@termix/plugin-sdk/manifest";
|
||||
} from "@termix-ssh/plugin-sdk/manifest";
|
||||
|
||||
const router = express.Router();
|
||||
|
||||
|
||||
@@ -105,7 +105,7 @@ async function prepareKey(
|
||||
if (certPublicKey && certPublicKey.trim()) {
|
||||
try {
|
||||
const { applyCertificateAuth } =
|
||||
await import("@termix/plugin-sdk/ssh-certs");
|
||||
await import("@termix-ssh/plugin-sdk/ssh-certs");
|
||||
await applyCertificateAuth(
|
||||
config,
|
||||
env.client,
|
||||
|
||||
@@ -6,8 +6,8 @@
|
||||
import type {
|
||||
PluginManifest,
|
||||
PluginSettingsField,
|
||||
} from "@termix/plugin-sdk/manifest";
|
||||
import { coerceSettingValue } from "@termix/plugin-sdk/settings";
|
||||
} from "@termix-ssh/plugin-sdk/manifest";
|
||||
import { coerceSettingValue } from "@termix-ssh/plugin-sdk/settings";
|
||||
import {
|
||||
CORE_HOST_DEFAULTS,
|
||||
CORE_NAMESPACE,
|
||||
|
||||
@@ -12,7 +12,7 @@
|
||||
* host's own.
|
||||
*/
|
||||
|
||||
import type { PluginManifest } from "@termix/plugin-sdk/manifest";
|
||||
import type { PluginManifest } from "@termix-ssh/plugin-sdk/manifest";
|
||||
import {
|
||||
createCurrentHostDefaultsRepository,
|
||||
createCurrentPluginSettingsRepository,
|
||||
|
||||
@@ -5,7 +5,7 @@
|
||||
* the owner's; this swaps it for the viewer's at read time.
|
||||
*/
|
||||
|
||||
import type { PluginManifest } from "@termix/plugin-sdk/manifest";
|
||||
import type { PluginManifest } from "@termix-ssh/plugin-sdk/manifest";
|
||||
import { createCurrentHostDefaultsRepository } from "../../database/repositories/factory.js";
|
||||
import type { HostRow } from "../../database/repositories/host-defaults-repository.js";
|
||||
import {
|
||||
|
||||
@@ -6,7 +6,7 @@
|
||||
import {
|
||||
coerceSettingValue,
|
||||
validateSettingValue,
|
||||
} from "@termix/plugin-sdk/settings";
|
||||
} from "@termix-ssh/plugin-sdk/settings";
|
||||
import { createCurrentHostDefaultsRepository } from "../../database/repositories/factory.js";
|
||||
import type { HostDefaultsScope } from "../../database/repositories/host-defaults-repository.js";
|
||||
import { validateSettingsSave } from "../../plugins/settings.js";
|
||||
|
||||
@@ -4,7 +4,7 @@
|
||||
* share and sync a protocol's login without the plugin's code running.
|
||||
*/
|
||||
|
||||
import type { PluginProtocolContribution } from "@termix/plugin-sdk/manifest";
|
||||
import type { PluginProtocolContribution } from "@termix-ssh/plugin-sdk/manifest";
|
||||
import { SSH_AUTH_PROTOCOL } from "../../../types/auth-protocols.js";
|
||||
|
||||
export interface DeclaredHostProtocol extends PluginProtocolContribution {
|
||||
|
||||
@@ -6,7 +6,7 @@
|
||||
* terminal's, so they are core's and have a column of their own.
|
||||
*/
|
||||
|
||||
import type { HostSshOptions } from "@termix/plugin-sdk/backend";
|
||||
import type { HostSshOptions } from "@termix-ssh/plugin-sdk/backend";
|
||||
|
||||
export type { HostSshOptions };
|
||||
|
||||
|
||||
@@ -4,7 +4,7 @@
|
||||
* reach nobody, same as a plugin's.
|
||||
*/
|
||||
|
||||
import type { PluginNotification } from "@termix/plugin-sdk/backend";
|
||||
import type { PluginNotification } from "@termix-ssh/plugin-sdk/backend";
|
||||
import { activeNotifyHub } from "../plugins/notify-hub.js";
|
||||
import { resolveAudience } from "../plugins/ctx-notify.js";
|
||||
import { systemLogger } from "../utils/logger.js";
|
||||
|
||||
@@ -15,7 +15,7 @@ import {
|
||||
DEFAULT_FRONTEND_ENTRY,
|
||||
DEFAULT_LOCALES_DIR,
|
||||
type PluginManifest,
|
||||
} from "@termix/plugin-sdk/manifest";
|
||||
} from "@termix-ssh/plugin-sdk/manifest";
|
||||
import type { LoadedPlugin } from "./loader.js";
|
||||
|
||||
type AssetPlugin = Pick<LoadedPlugin, "id" | "dir" | "manifest"> &
|
||||
|
||||
@@ -23,9 +23,9 @@
|
||||
import type {
|
||||
PluginCredentials,
|
||||
PluginSshKeyCredential,
|
||||
} from "@termix/plugin-sdk/backend";
|
||||
} from "@termix-ssh/plugin-sdk/backend";
|
||||
import ssh2 from "ssh2";
|
||||
import type { PluginManifest } from "@termix/plugin-sdk/manifest";
|
||||
import type { PluginManifest } from "@termix-ssh/plugin-sdk/manifest";
|
||||
import { assertCapability, capabilityRefused } from "./permissions.js";
|
||||
import { getActor } from "./actor.js";
|
||||
import type { DisposableBag } from "./disposables.js";
|
||||
|
||||
@@ -20,9 +20,9 @@ import type {
|
||||
PluginShareableUser,
|
||||
PluginShareableRole,
|
||||
PluginHostJumpHost,
|
||||
} from "@termix/plugin-sdk/backend";
|
||||
import { PLUGIN_HOST_INPUT_KEYS } from "@termix/plugin-sdk/backend";
|
||||
import type { PluginManifest } from "@termix/plugin-sdk/manifest";
|
||||
} from "@termix-ssh/plugin-sdk/backend";
|
||||
import { PLUGIN_HOST_INPUT_KEYS } from "@termix-ssh/plugin-sdk/backend";
|
||||
import type { PluginManifest } from "@termix-ssh/plugin-sdk/manifest";
|
||||
import { assertCapability, capabilityRefused } from "./permissions.js";
|
||||
import { hostSessionStatus } from "../hosts/host-session-status.js";
|
||||
import { getActor } from "./actor.js";
|
||||
|
||||
@@ -10,8 +10,8 @@ import type {
|
||||
PluginNotificationAudience,
|
||||
PluginNotify,
|
||||
PluginNotifyResult,
|
||||
} from "@termix/plugin-sdk/backend";
|
||||
import type { PluginManifest } from "@termix/plugin-sdk/manifest";
|
||||
} from "@termix-ssh/plugin-sdk/backend";
|
||||
import type { PluginManifest } from "@termix-ssh/plugin-sdk/manifest";
|
||||
import { assertCapability, capabilityRefused } from "./permissions.js";
|
||||
import { getActor } from "./actor.js";
|
||||
import { activeNotifyHub, registerNotifyHub } from "./notify-hub.js";
|
||||
|
||||
@@ -3,8 +3,8 @@
|
||||
* plugins:read. Ids and versions only, nothing operational.
|
||||
*/
|
||||
|
||||
import type { PluginPlugins } from "@termix/plugin-sdk/backend";
|
||||
import type { PluginManifest } from "@termix/plugin-sdk/manifest";
|
||||
import type { PluginPlugins } from "@termix-ssh/plugin-sdk/backend";
|
||||
import type { PluginManifest } from "@termix-ssh/plugin-sdk/manifest";
|
||||
import { assertCapability } from "./permissions.js";
|
||||
|
||||
export function createPluginPlugins(manifest: PluginManifest): PluginPlugins {
|
||||
|
||||
@@ -16,8 +16,8 @@ import type {
|
||||
PluginBinarySpec,
|
||||
PluginProcess,
|
||||
PluginProcessHandle,
|
||||
} from "@termix/plugin-sdk/backend";
|
||||
import type { PluginManifest } from "@termix/plugin-sdk/manifest";
|
||||
} from "@termix-ssh/plugin-sdk/backend";
|
||||
import type { PluginManifest } from "@termix-ssh/plugin-sdk/manifest";
|
||||
import { assertCapability } from "./permissions.js";
|
||||
import { getPluginDataDir } from "./paths.js";
|
||||
import type { DisposableBag } from "./disposables.js";
|
||||
|
||||
@@ -12,9 +12,9 @@ import type {
|
||||
PluginSsh,
|
||||
PluginSshConnectOptions,
|
||||
PluginSshHost,
|
||||
} from "@termix/plugin-sdk/backend";
|
||||
import type { PluginManifest } from "@termix/plugin-sdk/manifest";
|
||||
import { PluginSshInteractionError } from "@termix/plugin-sdk/backend";
|
||||
} from "@termix-ssh/plugin-sdk/backend";
|
||||
import type { PluginManifest } from "@termix-ssh/plugin-sdk/manifest";
|
||||
import { PluginSshInteractionError } from "@termix-ssh/plugin-sdk/backend";
|
||||
import {
|
||||
assertCapability,
|
||||
capabilityRefused,
|
||||
|
||||
@@ -4,8 +4,8 @@
|
||||
* say that it renews it. Every call is audited.
|
||||
*/
|
||||
|
||||
import type { PluginSystem } from "@termix/plugin-sdk/backend";
|
||||
import type { PluginManifest } from "@termix/plugin-sdk/manifest";
|
||||
import type { PluginSystem } from "@termix-ssh/plugin-sdk/backend";
|
||||
import type { PluginManifest } from "@termix-ssh/plugin-sdk/manifest";
|
||||
import { assertCapability } from "./permissions.js";
|
||||
import type { DisposableBag } from "./disposables.js";
|
||||
|
||||
|
||||
@@ -42,14 +42,14 @@ import {
|
||||
import { registerPluginWsRoute, registerPluginWsUpgrade } from "./ws.js";
|
||||
import { resolvePermission } from "./rbac.js";
|
||||
import * as pluginSettings from "./settings.js";
|
||||
import type { PluginManifest } from "@termix/plugin-sdk/manifest";
|
||||
import type { PluginManifest } from "@termix-ssh/plugin-sdk/manifest";
|
||||
import {
|
||||
type PluginContext,
|
||||
type PluginModule,
|
||||
type PluginOpenIsolatedWindowRequest,
|
||||
type PluginExternalClientRequest,
|
||||
} from "@termix/plugin-sdk/backend";
|
||||
import type { PluginTableDefinition } from "@termix/plugin-sdk/db";
|
||||
} from "@termix-ssh/plugin-sdk/backend";
|
||||
import type { PluginTableDefinition } from "@termix-ssh/plugin-sdk/db";
|
||||
import * as syncRegistry from "./sync-registry.js";
|
||||
import {
|
||||
needsExplicitPersist,
|
||||
|
||||
@@ -11,8 +11,8 @@ import { sql } from "drizzle-orm";
|
||||
import { pluginLogger } from "../utils/logger.js";
|
||||
import { resolveDatabaseDialect } from "../database/db/dialect.js";
|
||||
import type { DatabaseDialect } from "../database/db/dialect.js";
|
||||
import type { PluginTableDefinition } from "@termix/plugin-sdk/db";
|
||||
import { prefixedTableName, tablePrefix } from "@termix/plugin-sdk/db";
|
||||
import type { PluginTableDefinition } from "@termix-ssh/plugin-sdk/db";
|
||||
import { prefixedTableName, tablePrefix } from "@termix-ssh/plugin-sdk/db";
|
||||
import { buildTable } from "./table-builder.js";
|
||||
import {
|
||||
applyPluginMigrations,
|
||||
|
||||
@@ -24,8 +24,8 @@ import express, {
|
||||
import type {
|
||||
PluginMiddleware,
|
||||
PluginRouterOptions,
|
||||
} from "@termix/plugin-sdk/backend";
|
||||
import type { PluginManifest } from "@termix/plugin-sdk/manifest";
|
||||
} from "@termix-ssh/plugin-sdk/backend";
|
||||
import type { PluginManifest } from "@termix-ssh/plugin-sdk/manifest";
|
||||
import { pluginLogger } from "../utils/logger.js";
|
||||
import { AuthManager } from "../utils/auth-manager.js";
|
||||
import { runAsActor } from "./actor.js";
|
||||
|
||||
@@ -20,7 +20,7 @@ import * as tar from "tar";
|
||||
import { pluginLogger } from "../utils/logger.js";
|
||||
import { isTermixCompatible, parseManifest } from "./manifest.js";
|
||||
import { getLocalVersion } from "../utils/app-version.js";
|
||||
import type { PluginManifest } from "@termix/plugin-sdk/manifest";
|
||||
import type { PluginManifest } from "@termix-ssh/plugin-sdk/manifest";
|
||||
import {
|
||||
getBundledPluginsDir,
|
||||
getPluginBackendEntry,
|
||||
@@ -39,7 +39,7 @@ import {
|
||||
import { resolveRequirements } from "./service-registry.js";
|
||||
import { resolveSecretRequirements } from "./secret-registry.js";
|
||||
import { recordConflict } from "./conflicts.js";
|
||||
import { tablePrefix } from "@termix/plugin-sdk/db";
|
||||
import { tablePrefix } from "@termix-ssh/plugin-sdk/db";
|
||||
|
||||
export type PluginState =
|
||||
| "loaded"
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
/**
|
||||
* Manifest validation, re-exported from the SDK.
|
||||
*
|
||||
* The contract lives in @termix/plugin-sdk/manifest so the server, the
|
||||
* The contract lives in @termix-ssh/plugin-sdk/manifest so the server, the
|
||||
* authoring script and plugin authors all read the same rules. This file used
|
||||
* to carry its own copy of the enums and validators, which meant three places
|
||||
* had to be edited together and quietly drifted when they were not.
|
||||
@@ -17,7 +17,7 @@ export {
|
||||
SYSTEM_ROLE_NAMES,
|
||||
RESERVED_PERMISSION_PREFIXES,
|
||||
qualifyPermission,
|
||||
} from "@termix/plugin-sdk/manifest";
|
||||
} from "@termix-ssh/plugin-sdk/manifest";
|
||||
|
||||
export type {
|
||||
PluginManifest,
|
||||
@@ -36,10 +36,10 @@ export type {
|
||||
HostCapabilityContribution,
|
||||
ActionContributionKind,
|
||||
ParsedManifest,
|
||||
} from "@termix/plugin-sdk/manifest";
|
||||
} from "@termix-ssh/plugin-sdk/manifest";
|
||||
|
||||
export type {
|
||||
Capability,
|
||||
CapabilityInfo,
|
||||
CapabilityRisk,
|
||||
} from "@termix/plugin-sdk/capabilities";
|
||||
} from "@termix-ssh/plugin-sdk/capabilities";
|
||||
@@ -18,12 +18,12 @@ import path from "node:path";
|
||||
import { sql } from "drizzle-orm";
|
||||
import { pluginLogger } from "../utils/logger.js";
|
||||
import type { DatabaseDialect } from "../database/db/dialect.js";
|
||||
import { LEGACY_TABLE_OWNERS } from "@termix/plugin-sdk/db";
|
||||
import { LEGACY_TABLE_OWNERS } from "@termix-ssh/plugin-sdk/db";
|
||||
import {
|
||||
collectOwnedIndexes,
|
||||
findUnownedTableWrites,
|
||||
splitStatements,
|
||||
} from "@termix/plugin-sdk/ddl";
|
||||
} from "@termix-ssh/plugin-sdk/ddl";
|
||||
|
||||
// The splitter is shared with createTestDb in the SDK, so tests apply a
|
||||
// migration exactly the way this runner does.
|
||||
|
||||
@@ -4,7 +4,7 @@
|
||||
* alert reaches nobody.
|
||||
*/
|
||||
|
||||
import type { PluginNotifyHub } from "@termix/plugin-sdk/backend";
|
||||
import type { PluginNotifyHub } from "@termix-ssh/plugin-sdk/backend";
|
||||
import { hasCapability } from "./permissions.js";
|
||||
|
||||
interface HubRegistration {
|
||||
|
||||
@@ -4,7 +4,7 @@ import { fileURLToPath } from "node:url";
|
||||
import {
|
||||
DEFAULT_BACKEND_ENTRY,
|
||||
type PluginManifest,
|
||||
} from "@termix/plugin-sdk/manifest";
|
||||
} from "@termix-ssh/plugin-sdk/manifest";
|
||||
|
||||
/**
|
||||
* Where user-installed plugins live. Resolved per call rather than captured at
|
||||
|
||||
@@ -16,7 +16,7 @@
|
||||
*/
|
||||
|
||||
import { createCurrentPluginPermissionGrantRepository } from "../database/repositories/factory.js";
|
||||
import { PluginCapabilityError } from "@termix/plugin-sdk/backend";
|
||||
import { PluginCapabilityError } from "@termix-ssh/plugin-sdk/backend";
|
||||
import { getActor } from "./actor.js";
|
||||
|
||||
const cache = new Map<string, Set<string>>();
|
||||
|
||||
@@ -3,7 +3,7 @@
|
||||
* bag, so deactivate clears every one of them.
|
||||
*/
|
||||
|
||||
import type { PluginSchedule } from "@termix/plugin-sdk/backend";
|
||||
import type { PluginSchedule } from "@termix-ssh/plugin-sdk/backend";
|
||||
import type { DisposableBag } from "./disposables.js";
|
||||
|
||||
type Log = (message: string, error: unknown) => void;
|
||||
|
||||
@@ -14,12 +14,12 @@
|
||||
import type {
|
||||
PluginManifest,
|
||||
PluginSettingsField,
|
||||
} from "@termix/plugin-sdk/manifest";
|
||||
} from "@termix-ssh/plugin-sdk/manifest";
|
||||
import {
|
||||
coerceSettingValue,
|
||||
isRedactedSecret,
|
||||
validateSettingValue,
|
||||
} from "@termix/plugin-sdk/settings";
|
||||
} from "@termix-ssh/plugin-sdk/settings";
|
||||
import {
|
||||
createCurrentHostRepository,
|
||||
createCurrentPluginSettingsRepository,
|
||||
|
||||
@@ -14,7 +14,7 @@
|
||||
import type {
|
||||
SyncEntityRegistration,
|
||||
SyncRow,
|
||||
} from "@termix/plugin-sdk/backend";
|
||||
} from "@termix-ssh/plugin-sdk/backend";
|
||||
|
||||
/** Core-only extras a plugin registration cannot set. */
|
||||
export interface CoreSyncEntityOptions {
|
||||
|
||||
@@ -6,11 +6,11 @@
|
||||
* core keeps one import site.
|
||||
*/
|
||||
|
||||
export { buildTable } from "@termix/plugin-sdk/table-builder";
|
||||
export { buildTable } from "@termix-ssh/plugin-sdk/table-builder";
|
||||
export {
|
||||
createTableSql,
|
||||
adoptTableSql,
|
||||
dropTableSql,
|
||||
addColumnSql,
|
||||
keyedColumns,
|
||||
} from "@termix/plugin-sdk/ddl";
|
||||
} from "@termix-ssh/plugin-sdk/ddl";
|
||||
@@ -7,9 +7,9 @@
|
||||
*/
|
||||
|
||||
import { sql } from "drizzle-orm";
|
||||
import { columnName, createTableSql } from "@termix/plugin-sdk/ddl";
|
||||
import { prefixedTableName } from "@termix/plugin-sdk/db";
|
||||
import type { PluginTableDefinition } from "@termix/plugin-sdk/db";
|
||||
import { columnName, createTableSql } from "@termix-ssh/plugin-sdk/ddl";
|
||||
import { prefixedTableName } from "@termix-ssh/plugin-sdk/db";
|
||||
import type { PluginTableDefinition } from "@termix-ssh/plugin-sdk/db";
|
||||
import {
|
||||
runStatement,
|
||||
selectRows,
|
||||
|
||||
@@ -25,7 +25,7 @@ import { WebSocketServer, type WebSocket } from "ws";
|
||||
import type {
|
||||
PluginWebSocketHandler,
|
||||
PluginWebSocketOptions,
|
||||
} from "@termix/plugin-sdk/backend";
|
||||
} from "@termix-ssh/plugin-sdk/backend";
|
||||
import { pluginLogger } from "../utils/logger.js";
|
||||
import { recordConflict } from "./conflicts.js";
|
||||
import { extractWebSocketToken } from "../utils/ws-auth.js";
|
||||
|
||||
@@ -9,7 +9,7 @@
|
||||
*/
|
||||
|
||||
import os from "os";
|
||||
import type { SyncRow } from "@termix/plugin-sdk/backend";
|
||||
import type { SyncRow } from "@termix-ssh/plugin-sdk/backend";
|
||||
import {
|
||||
getEntity,
|
||||
listEntities,
|
||||
|
||||
@@ -10,7 +10,7 @@
|
||||
import fs from "fs";
|
||||
import path from "path";
|
||||
import semver from "semver";
|
||||
import type { PluginDesktopMode } from "@termix/plugin-sdk/manifest";
|
||||
import type { PluginDesktopMode } from "@termix-ssh/plugin-sdk/manifest";
|
||||
import { syncLogger } from "../../utils/logger.js";
|
||||
import { sendCoreAlert } from "../../notify/core-notify.js";
|
||||
import {
|
||||
|
||||
@@ -9,7 +9,7 @@ import express, {
|
||||
type Response,
|
||||
} from "express";
|
||||
import { and, eq, isNotNull } from "drizzle-orm";
|
||||
import type { SyncRow } from "@termix/plugin-sdk/backend";
|
||||
import type { SyncRow } from "@termix-ssh/plugin-sdk/backend";
|
||||
import type { AuthenticatedRequest } from "../../../types/index.js";
|
||||
import { AuthManager } from "../../utils/auth-manager.js";
|
||||
import { syncLogger } from "../../utils/logger.js";
|
||||
|
||||
@@ -6,8 +6,8 @@
|
||||
*/
|
||||
|
||||
import { and, eq } from "drizzle-orm";
|
||||
import type { SyncRow } from "@termix/plugin-sdk/backend";
|
||||
import type { PluginManifest } from "@termix/plugin-sdk/manifest";
|
||||
import type { SyncRow } from "@termix-ssh/plugin-sdk/backend";
|
||||
import type { PluginManifest } from "@termix-ssh/plugin-sdk/manifest";
|
||||
import {
|
||||
hosts,
|
||||
sshCredentials,
|
||||
|
||||
@@ -9,8 +9,8 @@
|
||||
*/
|
||||
|
||||
import { and, eq } from "drizzle-orm";
|
||||
import type { SyncRow } from "@termix/plugin-sdk/backend";
|
||||
import type { PluginManifest } from "@termix/plugin-sdk/manifest";
|
||||
import type { SyncRow } from "@termix-ssh/plugin-sdk/backend";
|
||||
import type { PluginManifest } from "@termix-ssh/plugin-sdk/manifest";
|
||||
import { hosts, sshCredentials, sshFolders } from "../database/db/schema.js";
|
||||
import {
|
||||
createCurrentHostDefaultsRepository,
|
||||
|
||||
@@ -4,7 +4,7 @@
|
||||
* for the wire like the host's own and a credential named by its syncId.
|
||||
*/
|
||||
|
||||
import type { SyncRow } from "@termix/plugin-sdk/backend";
|
||||
import type { SyncRow } from "@termix-ssh/plugin-sdk/backend";
|
||||
import type { HostProtocolLogin } from "../database/repositories/host-protocol-auth-repository.js";
|
||||
import { createCurrentHostProtocolAuthRepository } from "../database/repositories/factory.js";
|
||||
import {
|
||||
|
||||
@@ -9,7 +9,7 @@
|
||||
*/
|
||||
|
||||
import type { Response } from "express";
|
||||
import type { SyncRow } from "@termix/plugin-sdk/backend";
|
||||
import type { SyncRow } from "@termix-ssh/plugin-sdk/backend";
|
||||
import { listEntities } from "../../plugins/sync-registry.js";
|
||||
import { syncLogger } from "../../utils/logger.js";
|
||||
import { registerCoreSyncEntities } from "../entities.js";
|
||||
|
||||
@@ -7,7 +7,7 @@
|
||||
* holds up the rest of the batch.
|
||||
*/
|
||||
|
||||
import type { SyncRow } from "@termix/plugin-sdk/backend";
|
||||
import type { SyncRow } from "@termix-ssh/plugin-sdk/backend";
|
||||
import { getEntity } from "../../plugins/sync-registry.js";
|
||||
import { PermissionManager } from "../../utils/permission-manager.js";
|
||||
import { syncLogger } from "../../utils/logger.js";
|
||||
|
||||
@@ -8,7 +8,7 @@
|
||||
|
||||
import crypto from "crypto";
|
||||
import { and, eq, getTableColumns, type SQL } from "drizzle-orm";
|
||||
import type { SyncRow } from "@termix/plugin-sdk/backend";
|
||||
import type { SyncRow } from "@termix-ssh/plugin-sdk/backend";
|
||||
import { createCurrentRepositoryContext } from "../database/repositories/factory.js";
|
||||
import { DataCrypto } from "../utils/data-crypto.js";
|
||||
import { SystemCrypto } from "../utils/system-crypto.js";
|
||||
|
||||
@@ -7,7 +7,10 @@
|
||||
*/
|
||||
|
||||
import crypto from "crypto";
|
||||
import type { SyncEntityReference, SyncRow } from "@termix/plugin-sdk/backend";
|
||||
import type {
|
||||
SyncEntityReference,
|
||||
SyncRow,
|
||||
} from "@termix-ssh/plugin-sdk/backend";
|
||||
import { FieldCrypto } from "../utils/field-crypto.js";
|
||||
import type { RegisteredSyncEntity } from "../plugins/sync-registry.js";
|
||||
|
||||
|
||||
@@ -6,7 +6,7 @@
|
||||
*/
|
||||
|
||||
import { beforeEach, describe, expect, it, vi } from "vitest";
|
||||
import type { PluginManifest } from "@termix/plugin-sdk/manifest";
|
||||
import type { PluginManifest } from "@termix-ssh/plugin-sdk/manifest";
|
||||
|
||||
interface Row {
|
||||
pluginId: string;
|
||||
|
||||
@@ -28,7 +28,7 @@ describe("afterPack plugin SDK copy", () => {
|
||||
fs.mkdirSync(path.join(sdk, "src"));
|
||||
fs.writeFileSync(
|
||||
path.join(sdk, "package.json"),
|
||||
'{"name":"@termix/plugin-sdk"}',
|
||||
'{"name":"@termix-ssh/plugin-sdk"}',
|
||||
);
|
||||
fs.writeFileSync(path.join(sdk, "dist", "settings.js"), "export {};");
|
||||
fs.writeFileSync(path.join(sdk, "src", "settings.ts"), "");
|
||||
@@ -41,7 +41,7 @@ describe("afterPack plugin SDK copy", () => {
|
||||
resources,
|
||||
"app.asar.unpacked",
|
||||
"node_modules",
|
||||
"@termix",
|
||||
"@termix-ssh",
|
||||
"plugin-sdk",
|
||||
),
|
||||
);
|
||||
|
||||
@@ -37,7 +37,7 @@ vi.mock("../../../hosts/host-key-verifier.js", () => ({
|
||||
createHostVerifier: mocks.createHostVerifier,
|
||||
},
|
||||
}));
|
||||
vi.mock("@termix/plugin-sdk/ssh-certs", () => ({
|
||||
vi.mock("@termix-ssh/plugin-sdk/ssh-certs", () => ({
|
||||
applyCertificateAuth: mocks.applyCertificateAuth,
|
||||
}));
|
||||
vi.mock("../../../hosts/terminal-auth-helpers.js", () => ({
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
import { describe, expect, it, vi } from "vitest";
|
||||
|
||||
vi.mock("../../../database/repositories/factory.js", () => ({}));
|
||||
import type { PluginManifest } from "@termix/plugin-sdk/manifest";
|
||||
import type { PluginManifest } from "@termix-ssh/plugin-sdk/manifest";
|
||||
import {
|
||||
buildCatalog,
|
||||
catalogNamespaces,
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
import { describe, expect, it, vi } from "vitest";
|
||||
import type { PluginManifest } from "@termix/plugin-sdk/manifest";
|
||||
import type { PluginManifest } from "@termix-ssh/plugin-sdk/manifest";
|
||||
|
||||
const rows = vi.hoisted(() => ({
|
||||
owned: [] as Array<Record<string, unknown>>,
|
||||
|
||||
@@ -22,7 +22,7 @@ vi.mock("../../utils/audit-logger.js", () => ({
|
||||
|
||||
import { createPluginContext, createPluginHandle } from "../../plugins/ctx.js";
|
||||
import { runAsActor } from "../../plugins/actor.js";
|
||||
import type { PluginManifest } from "@termix/plugin-sdk/manifest";
|
||||
import type { PluginManifest } from "@termix-ssh/plugin-sdk/manifest";
|
||||
|
||||
function contextFor(pluginId: string) {
|
||||
const manifest = {
|
||||
|
||||
@@ -5,7 +5,7 @@
|
||||
*/
|
||||
|
||||
import { beforeEach, describe, expect, it, vi } from "vitest";
|
||||
import type { PluginManifest } from "@termix/plugin-sdk/manifest";
|
||||
import type { PluginManifest } from "@termix-ssh/plugin-sdk/manifest";
|
||||
import {
|
||||
createAuthState,
|
||||
fakeAuthManager,
|
||||
@@ -53,7 +53,8 @@ vi.mock("../../utils/trusted-proxy-auth.js", () => ({
|
||||
isTrustedProxyAuthEnabled: () => h.trustedProxy,
|
||||
}));
|
||||
vi.mock("../../plugins/permissions.js", async () => {
|
||||
const { PluginCapabilityError } = await import("@termix/plugin-sdk/backend");
|
||||
const { PluginCapabilityError } =
|
||||
await import("@termix-ssh/plugin-sdk/backend");
|
||||
return {
|
||||
assertCapability: async (
|
||||
pluginId: string,
|
||||
@@ -170,10 +171,9 @@ function setup() {
|
||||
request.ip ?? "unknown",
|
||||
"4:bob",
|
||||
);
|
||||
throw new (await import("@termix/plugin-sdk/backend")).LoginMethodError(
|
||||
"Invalid username or password",
|
||||
401,
|
||||
);
|
||||
throw new (
|
||||
await import("@termix-ssh/plugin-sdk/backend")
|
||||
).LoginMethodError("Invalid username or password", 401);
|
||||
}
|
||||
return {
|
||||
kind: "external",
|
||||
|
||||
@@ -28,7 +28,7 @@ vi.mock("../../utils/audit-logger.js", () => ({
|
||||
|
||||
import { createPluginContext, createPluginHandle } from "../../plugins/ctx.js";
|
||||
import { invalidatePluginPermissionCache } from "../../plugins/permissions.js";
|
||||
import type { PluginManifest } from "@termix/plugin-sdk/manifest";
|
||||
import type { PluginManifest } from "@termix-ssh/plugin-sdk/manifest";
|
||||
|
||||
function manifestFor(pluginId: string, capabilities: string[]): PluginManifest {
|
||||
return {
|
||||
|
||||
@@ -119,7 +119,7 @@ import {
|
||||
requireSecretResolver,
|
||||
resetSecretResolverRegistryForTests,
|
||||
} from "../../hosts/connect/secret-resolver-registry.js";
|
||||
import type { PluginManifest } from "@termix/plugin-sdk/manifest";
|
||||
import type { PluginManifest } from "@termix-ssh/plugin-sdk/manifest";
|
||||
import ssh2 from "ssh2";
|
||||
import { setHostProtocolSource } from "../../hosts/protocol-auth/registry.js";
|
||||
|
||||
|
||||
@@ -70,7 +70,7 @@ import {
|
||||
resetSyncRegistry,
|
||||
listEntityTypes,
|
||||
} from "../../plugins/sync-registry.js";
|
||||
import type { PluginManifest } from "@termix/plugin-sdk/manifest";
|
||||
import type { PluginManifest } from "@termix-ssh/plugin-sdk/manifest";
|
||||
|
||||
function manifestFor(pluginId: string, capabilities: string[]): PluginManifest {
|
||||
return {
|
||||
|
||||
@@ -36,7 +36,7 @@ vi.mock("../../utils/electron-ipc-bridge.js", () => ({
|
||||
|
||||
import { createPluginContext, createPluginHandle } from "../../plugins/ctx.js";
|
||||
import { invalidatePluginPermissionCache } from "../../plugins/permissions.js";
|
||||
import type { PluginManifest } from "@termix/plugin-sdk/manifest";
|
||||
import type { PluginManifest } from "@termix-ssh/plugin-sdk/manifest";
|
||||
|
||||
function manifestFor(pluginId: string, capabilities: string[]): PluginManifest {
|
||||
return {
|
||||
|
||||
@@ -36,7 +36,8 @@ const h = vi.hoisted(() => ({
|
||||
}));
|
||||
|
||||
vi.mock("../../plugins/permissions.js", async () => {
|
||||
const { PluginCapabilityError } = await import("@termix/plugin-sdk/backend");
|
||||
const { PluginCapabilityError } =
|
||||
await import("@termix-ssh/plugin-sdk/backend");
|
||||
return {
|
||||
assertCapability: async (
|
||||
pluginId: string,
|
||||
@@ -204,7 +205,8 @@ vi.mock("../../hosts/delete-host.js", () => ({
|
||||
}));
|
||||
|
||||
const { createPluginHosts } = await import("../../plugins/ctx-hosts.js");
|
||||
const { PluginCapabilityError } = await import("@termix/plugin-sdk/backend");
|
||||
const { PluginCapabilityError } =
|
||||
await import("@termix-ssh/plugin-sdk/backend");
|
||||
|
||||
function manifest(capabilities: string[]) {
|
||||
return {
|
||||
|
||||
@@ -8,7 +8,7 @@ import { beforeEach, describe, expect, it, vi } from "vitest";
|
||||
import type {
|
||||
PluginNotification,
|
||||
PluginNotifyHub,
|
||||
} from "@termix/plugin-sdk/backend";
|
||||
} from "@termix-ssh/plugin-sdk/backend";
|
||||
|
||||
const grants = new Map<string, string[]>();
|
||||
const auditEntries: Array<Record<string, unknown>> = [];
|
||||
@@ -81,7 +81,7 @@ import { createPluginContext, createPluginHandle } from "../../plugins/ctx.js";
|
||||
import { invalidatePluginPermissionCache } from "../../plugins/permissions.js";
|
||||
import { runAsActor } from "../../plugins/actor.js";
|
||||
import { clearNotifyHub } from "../../plugins/notify-hub.js";
|
||||
import type { PluginManifest } from "@termix/plugin-sdk/manifest";
|
||||
import type { PluginManifest } from "@termix-ssh/plugin-sdk/manifest";
|
||||
|
||||
function contextFor(
|
||||
capabilities: string[],
|
||||
|
||||
@@ -1,8 +1,9 @@
|
||||
import { describe, expect, it, vi } from "vitest";
|
||||
import type { PluginManifest } from "@termix/plugin-sdk/manifest";
|
||||
import type { PluginManifest } from "@termix-ssh/plugin-sdk/manifest";
|
||||
|
||||
vi.mock("../../plugins/permissions.js", async () => {
|
||||
const { PluginCapabilityError } = await import("@termix/plugin-sdk/backend");
|
||||
const { PluginCapabilityError } =
|
||||
await import("@termix-ssh/plugin-sdk/backend");
|
||||
return {
|
||||
assertCapability: async (
|
||||
pluginId: string,
|
||||
@@ -40,7 +41,8 @@ vi.mock("../../plugins/index.js", () => ({
|
||||
}));
|
||||
|
||||
const { createPluginPlugins } = await import("../../plugins/ctx-plugins.js");
|
||||
const { PluginCapabilityError } = await import("@termix/plugin-sdk/backend");
|
||||
const { PluginCapabilityError } =
|
||||
await import("@termix-ssh/plugin-sdk/backend");
|
||||
|
||||
const manifest = (capabilities: string[]) =>
|
||||
({ id: "reader", capabilities }) as unknown as PluginManifest;
|
||||
|
||||
@@ -7,7 +7,8 @@ import { afterEach, beforeEach, describe, expect, it, vi } from "vitest";
|
||||
const h = vi.hoisted(() => ({ granted: new Set<string>() }));
|
||||
|
||||
vi.mock("../../plugins/permissions.js", async () => {
|
||||
const { PluginCapabilityError } = await import("@termix/plugin-sdk/backend");
|
||||
const { PluginCapabilityError } =
|
||||
await import("@termix-ssh/plugin-sdk/backend");
|
||||
return {
|
||||
assertCapability: async (
|
||||
pluginId: string,
|
||||
@@ -23,7 +24,8 @@ vi.mock("../../plugins/permissions.js", async () => {
|
||||
|
||||
const { createPluginProcess } = await import("../../plugins/ctx-process.js");
|
||||
const { DisposableBag } = await import("../../plugins/disposables.js");
|
||||
const { PluginCapabilityError } = await import("@termix/plugin-sdk/backend");
|
||||
const { PluginCapabilityError } =
|
||||
await import("@termix-ssh/plugin-sdk/backend");
|
||||
|
||||
const DECLARED = ["process:spawn", "network:outbound"];
|
||||
|
||||
|
||||
@@ -75,7 +75,7 @@ vi.mock("../../utils/audit-logger.js", () => ({
|
||||
import { createPluginContext, createPluginHandle } from "../../plugins/ctx.js";
|
||||
import { invalidatePluginPermissionCache } from "../../plugins/permissions.js";
|
||||
import { runAsActor } from "../../plugins/actor.js";
|
||||
import type { PluginManifest } from "@termix/plugin-sdk/manifest";
|
||||
import type { PluginManifest } from "@termix-ssh/plugin-sdk/manifest";
|
||||
|
||||
function contextFor(capabilities: string[]) {
|
||||
grants.set("demo", capabilities);
|
||||
|
||||
@@ -13,7 +13,7 @@ import {
|
||||
clearServiceRegistry,
|
||||
getRegistration,
|
||||
} from "../../plugins/service-registry.js";
|
||||
import type { PluginManifest } from "@termix/plugin-sdk/manifest";
|
||||
import type { PluginManifest } from "@termix-ssh/plugin-sdk/manifest";
|
||||
|
||||
function contextFor(pluginId: string, names?: string[]) {
|
||||
const manifest = {
|
||||
|
||||
@@ -22,7 +22,8 @@ vi.mock("../../utils/logger.js", () => {
|
||||
return { pluginLogger: log, sshLogger: log, logger: log, authLogger: log };
|
||||
});
|
||||
vi.mock("../../plugins/permissions.js", async () => {
|
||||
const { PluginCapabilityError } = await import("@termix/plugin-sdk/backend");
|
||||
const { PluginCapabilityError } =
|
||||
await import("@termix-ssh/plugin-sdk/backend");
|
||||
return {
|
||||
assertCapability: async (
|
||||
pluginId: string,
|
||||
@@ -142,7 +143,8 @@ const { classifyKeyboardInteractive } =
|
||||
await import("../../hosts/connect/keyboard-interactive.js");
|
||||
const { getLoginMethod, getSecondFactor } =
|
||||
await import("../../auth/registry.js");
|
||||
const { PluginCapabilityError } = await import("@termix/plugin-sdk/backend");
|
||||
const { PluginCapabilityError } =
|
||||
await import("@termix-ssh/plugin-sdk/backend");
|
||||
|
||||
function manifest(capabilities: string[], auth: Record<string, string[]> = {}) {
|
||||
return {
|
||||
@@ -647,7 +649,7 @@ describe("ctx.auth", () => {
|
||||
it("refuses enrolment when core policy forbids second factors", async () => {
|
||||
h.granted = new Set(["auth:provide"]);
|
||||
h.factors = [];
|
||||
const { LoginMethodError } = await import("@termix/plugin-sdk/backend");
|
||||
const { LoginMethodError } = await import("@termix-ssh/plugin-sdk/backend");
|
||||
h.policyError = new LoginMethodError("password login is off", 409);
|
||||
const auth = createPluginAuth({
|
||||
manifest: manifest(["auth:provide"], { secondFactors: ["pin"] }),
|
||||
|
||||
@@ -18,7 +18,8 @@ vi.mock("../../utils/logger.js", () => {
|
||||
return { pluginLogger: log, sshLogger: log, logger: log, authLogger: log };
|
||||
});
|
||||
vi.mock("../../plugins/permissions.js", async () => {
|
||||
const { PluginCapabilityError } = await import("@termix/plugin-sdk/backend");
|
||||
const { PluginCapabilityError } =
|
||||
await import("@termix-ssh/plugin-sdk/backend");
|
||||
return {
|
||||
assertCapability: async (
|
||||
pluginId: string,
|
||||
@@ -110,7 +111,7 @@ const { DisposableBag } = await import("../../plugins/disposables.js");
|
||||
const { registerSshAuthProvider, resetSshAuthRegistryForTests } =
|
||||
await import("../../hosts/connect/auth-provider-registry.js");
|
||||
const { PluginCapabilityError, PluginSshInteractionError } =
|
||||
await import("@termix/plugin-sdk/backend");
|
||||
await import("@termix-ssh/plugin-sdk/backend");
|
||||
|
||||
const ALL = ["ssh:connect", "credentials:use", "credentials:read"];
|
||||
|
||||
|
||||
@@ -9,7 +9,8 @@ const h = vi.hoisted(() => ({
|
||||
}));
|
||||
|
||||
vi.mock("../../plugins/permissions.js", async () => {
|
||||
const { PluginCapabilityError } = await import("@termix/plugin-sdk/backend");
|
||||
const { PluginCapabilityError } =
|
||||
await import("@termix-ssh/plugin-sdk/backend");
|
||||
return {
|
||||
assertCapability: async (
|
||||
pluginId: string,
|
||||
@@ -56,7 +57,8 @@ vi.mock("../../tls/acme-challenges.js", () => ({
|
||||
|
||||
const { createPluginSystem } = await import("../../plugins/ctx-system.js");
|
||||
const { DisposableBag } = await import("../../plugins/disposables.js");
|
||||
const { PluginCapabilityError } = await import("@termix/plugin-sdk/backend");
|
||||
const { PluginCapabilityError } =
|
||||
await import("@termix-ssh/plugin-sdk/backend");
|
||||
|
||||
let audits: Array<{ action: string; success: boolean }>;
|
||||
|
||||
|
||||
@@ -6,7 +6,7 @@ import {
|
||||
isValidPackageName,
|
||||
buildSudoCommand,
|
||||
parseUpgradable,
|
||||
} from "@termix/plugin-sdk/host-commands";
|
||||
} from "@termix-ssh/plugin-sdk/host-commands";
|
||||
|
||||
describe("parsePlatformProbe", () => {
|
||||
it("prefers dnf over yum when both are present", () => {
|
||||
|
||||
@@ -17,7 +17,7 @@ import {
|
||||
text,
|
||||
timestamp,
|
||||
varchar,
|
||||
} from "@termix/plugin-sdk/db";
|
||||
} from "@termix-ssh/plugin-sdk/db";
|
||||
import { createTableSql, dropTableSql } from "../../plugins/table-builder.js";
|
||||
import {
|
||||
adoptLegacyTableSql,
|
||||
|
||||
@@ -9,7 +9,7 @@
|
||||
import crypto from "node:crypto";
|
||||
import { sql } from "drizzle-orm";
|
||||
import { afterEach, beforeEach, describe, expect, it, vi } from "vitest";
|
||||
import type { PluginManifest } from "@termix/plugin-sdk/manifest";
|
||||
import type { PluginManifest } from "@termix-ssh/plugin-sdk/manifest";
|
||||
import { TestSqliteDatabase } from "../database/repositories/test-support.js";
|
||||
import type { DatabaseContext } from "../../database/repositories/database-context.js";
|
||||
|
||||
|
||||
@@ -16,9 +16,9 @@ import {
|
||||
id,
|
||||
refUser,
|
||||
text,
|
||||
} from "@termix/plugin-sdk/db";
|
||||
import { adoptTableSql } from "@termix/plugin-sdk/ddl";
|
||||
import { createMockCtx, createTestDb } from "@termix/plugin-sdk/testing";
|
||||
} from "@termix-ssh/plugin-sdk/db";
|
||||
import { adoptTableSql } from "@termix-ssh/plugin-sdk/ddl";
|
||||
import { createMockCtx, createTestDb } from "@termix-ssh/plugin-sdk/testing";
|
||||
|
||||
let root: string;
|
||||
let pluginDir: string;
|
||||
|
||||
@@ -37,7 +37,8 @@ function secretHost(id: number): Record<string, unknown> {
|
||||
}
|
||||
|
||||
vi.mock("../../../plugins/permissions.js", async () => {
|
||||
const { PluginCapabilityError } = await import("@termix/plugin-sdk/backend");
|
||||
const { PluginCapabilityError } =
|
||||
await import("@termix-ssh/plugin-sdk/backend");
|
||||
const granted = (capability: string, declared: readonly string[]) =>
|
||||
declared.includes(capability) && h.granted.has(capability);
|
||||
return {
|
||||
|
||||
@@ -27,7 +27,8 @@ const { createPluginContext, createPluginHandle } =
|
||||
const { invalidatePluginPermissionCache } =
|
||||
await import("../../../plugins/permissions.js");
|
||||
const { runAsActor } = await import("../../../plugins/actor.js");
|
||||
const { PluginCapabilityError } = await import("@termix/plugin-sdk/backend");
|
||||
const { PluginCapabilityError } =
|
||||
await import("@termix-ssh/plugin-sdk/backend");
|
||||
|
||||
const PLUGIN_ID = "walker";
|
||||
const ACTOR = "user-walker";
|
||||
|
||||
@@ -13,7 +13,7 @@ import { afterEach, beforeEach, describe, expect, it, vi } from "vitest";
|
||||
import {
|
||||
collectOwnedIndexes,
|
||||
findUnownedTableWrites,
|
||||
} from "@termix/plugin-sdk/ddl";
|
||||
} from "@termix-ssh/plugin-sdk/ddl";
|
||||
|
||||
const state = vi.hoisted(() => ({
|
||||
db: null as unknown,
|
||||
|
||||
@@ -11,7 +11,7 @@ import os from "node:os";
|
||||
import path from "node:path";
|
||||
import { PluginLoader, prefixesOverlap } from "../../../plugins/loader.js";
|
||||
import { parseManifest } from "../../../plugins/manifest.js";
|
||||
import { RESERVED_PLUGIN_IDS } from "@termix/plugin-sdk/manifest";
|
||||
import { RESERVED_PLUGIN_IDS } from "@termix-ssh/plugin-sdk/manifest";
|
||||
import { createFixturePlugin } from "../fixture-plugin.js";
|
||||
|
||||
vi.mock("../../../database/repositories/factory.js", () => ({
|
||||
|
||||
@@ -11,7 +11,7 @@ import { afterEach, beforeEach, describe, expect, it, vi } from "vitest";
|
||||
import express from "express";
|
||||
import type { AddressInfo } from "node:net";
|
||||
import type { Server } from "node:http";
|
||||
import type { PluginManifest } from "@termix/plugin-sdk/manifest";
|
||||
import type { PluginManifest } from "@termix-ssh/plugin-sdk/manifest";
|
||||
|
||||
const state = vi.hoisted(() => ({
|
||||
userId: "user-1",
|
||||
|
||||
@@ -8,7 +8,7 @@
|
||||
*/
|
||||
|
||||
import { beforeEach, describe, expect, it, vi } from "vitest";
|
||||
import type { PluginManifest } from "@termix/plugin-sdk/manifest";
|
||||
import type { PluginManifest } from "@termix-ssh/plugin-sdk/manifest";
|
||||
|
||||
interface Row {
|
||||
pluginId: string;
|
||||
|
||||
@@ -15,8 +15,8 @@ import {
|
||||
prefixedTableName,
|
||||
tablePrefix,
|
||||
adoptLegacyTable,
|
||||
} from "@termix/plugin-sdk/db";
|
||||
import { splitStatements } from "@termix/plugin-sdk/ddl";
|
||||
} from "@termix-ssh/plugin-sdk/db";
|
||||
import { splitStatements } from "@termix-ssh/plugin-sdk/ddl";
|
||||
import {
|
||||
adoptTableSql,
|
||||
createTableSql,
|
||||
|
||||
@@ -15,7 +15,7 @@ import {
|
||||
refUser,
|
||||
text,
|
||||
varchar,
|
||||
} from "@termix/plugin-sdk/db";
|
||||
} from "@termix-ssh/plugin-sdk/db";
|
||||
|
||||
let sqlite: Database.Database;
|
||||
|
||||
|
||||
@@ -4,7 +4,7 @@
|
||||
*/
|
||||
|
||||
import { beforeEach, describe, expect, it, vi } from "vitest";
|
||||
import type { PluginManifest } from "@termix/plugin-sdk/manifest";
|
||||
import type { PluginManifest } from "@termix-ssh/plugin-sdk/manifest";
|
||||
|
||||
const h = vi.hoisted(() => ({
|
||||
stored: new Map<string, unknown>(),
|
||||
|
||||
Vendored
+1
-1
@@ -1 +1 @@
|
||||
export type * from "@termix/plugin-sdk/desktop";
|
||||
export type * from "@termix-ssh/plugin-sdk/desktop";
|
||||
+2
-2
@@ -2,7 +2,7 @@ import type {
|
||||
HostProtocolAuthSummary,
|
||||
HostProtocolAuthType,
|
||||
HostSshOptions,
|
||||
} from "@termix/plugin-sdk/frontend";
|
||||
} from "@termix-ssh/plugin-sdk/frontend";
|
||||
import type { Request } from "express";
|
||||
import type { RefObject } from "react";
|
||||
import type { HostAuthOverrides } from "./auth-protocols.js";
|
||||
@@ -280,7 +280,7 @@ export interface CredentialBackend {
|
||||
*/
|
||||
export type HostTerminalConfig = Record<string, unknown>;
|
||||
|
||||
export type { HostSshOptions } from "@termix/plugin-sdk/frontend";
|
||||
export type { HostSshOptions } from "@termix-ssh/plugin-sdk/frontend";
|
||||
|
||||
// ============================================================================
|
||||
// TAB TYPES
|
||||
|
||||
@@ -6,7 +6,7 @@ import type {
|
||||
} from "./index.js";
|
||||
import type { HostAuthOverrides } from "./auth-protocols.js";
|
||||
import type { DefaultOverrides } from "./host-defaults.js";
|
||||
import type { QuickConnectLogin } from "@termix/plugin-sdk/frontend";
|
||||
import type { QuickConnectLogin } from "@termix-ssh/plugin-sdk/frontend";
|
||||
|
||||
export type Host = {
|
||||
id: string;
|
||||
|
||||
+1
-1
@@ -1,6 +1,6 @@
|
||||
/* eslint-disable react-refresh/only-export-components */
|
||||
/* eslint-disable react-hooks/exhaustive-deps */
|
||||
import type { TabHandle } from "@termix/plugin-sdk/frontend";
|
||||
import type { TabHandle } from "@termix-ssh/plugin-sdk/frontend";
|
||||
import { toast } from "sonner";
|
||||
import { useTranslation } from "react-i18next";
|
||||
import { Sheet, SheetContent } from "@/components/sheet";
|
||||
|
||||
@@ -84,7 +84,7 @@ export interface PluginContributions {
|
||||
export {
|
||||
isRedactedSecret,
|
||||
type RedactedSecret,
|
||||
} from "@termix/plugin-sdk/settings";
|
||||
} from "@termix-ssh/plugin-sdk/settings";
|
||||
|
||||
export type PluginSettingsValues = Record<string, unknown>;
|
||||
|
||||
|
||||
@@ -8,7 +8,7 @@ import {
|
||||
useState,
|
||||
} from "react";
|
||||
import type React from "react";
|
||||
import { useConnectionRetry } from "@termix/plugin-sdk/frontend";
|
||||
import { useConnectionRetry } from "@termix-ssh/plugin-sdk/frontend";
|
||||
import {
|
||||
ConnectionLogProvider,
|
||||
useConnectionLog,
|
||||
|
||||
@@ -12,7 +12,7 @@
|
||||
* - Electron pointed at a remote Termix server, for hosts whose connection
|
||||
* origin resolves there.
|
||||
*
|
||||
* A7 re-exports both through @termix/plugin-sdk/frontend. They live here for
|
||||
* A7 re-exports both through @termix-ssh/plugin-sdk/frontend. They live here for
|
||||
* now because plugin frontends are still bundled with the shell.
|
||||
*/
|
||||
|
||||
|
||||
@@ -2,7 +2,7 @@ import { useCallback, useEffect, useMemo, useRef, useState } from "react";
|
||||
import { useTranslation } from "react-i18next";
|
||||
import { KeyRound, LibraryBig, Plus, Server, Trash2 } from "lucide-react";
|
||||
import { toast } from "sonner";
|
||||
import type { HostDraft } from "@termix/plugin-sdk/frontend";
|
||||
import type { HostDraft } from "@termix-ssh/plugin-sdk/frontend";
|
||||
import { Button } from "@/components/button";
|
||||
import { EmptyState } from "@/components/empty-state";
|
||||
import { FakeSwitch } from "@/components/section-card";
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
import type { HostDraft } from "@termix/plugin-sdk/frontend";
|
||||
import type { HostDraft } from "@termix-ssh/plugin-sdk/frontend";
|
||||
import type { HostDefaultsLevel } from "@/types/host-defaults";
|
||||
|
||||
export type ManageMode = "hosts" | "credentials" | "defaults";
|
||||
|
||||
@@ -3,7 +3,7 @@ import type {
|
||||
Disposer,
|
||||
PluginManifest,
|
||||
TermixApp,
|
||||
} from "@termix/plugin-sdk/frontend";
|
||||
} from "@termix-ssh/plugin-sdk/frontend";
|
||||
import {
|
||||
PLUGIN_SETTINGS_CHANGED_EVENT,
|
||||
type PluginContributions,
|
||||
|
||||
@@ -2,7 +2,7 @@ import type { ComponentType } from "react";
|
||||
import type {
|
||||
LoginMethodUIProps,
|
||||
SecondFactorUIProps,
|
||||
} from "@termix/plugin-sdk/frontend";
|
||||
} from "@termix-ssh/plugin-sdk/frontend";
|
||||
import { createRegistry } from "@/lib/registry";
|
||||
|
||||
/**
|
||||
|
||||
@@ -15,7 +15,7 @@ import {
|
||||
type PluginHostRecord,
|
||||
type SettingsScope,
|
||||
type SettingsState,
|
||||
} from "@termix/plugin-sdk/frontend";
|
||||
} from "@termix-ssh/plugin-sdk/frontend";
|
||||
import { usePermissions } from "@/hooks/use-permissions";
|
||||
import { useTheme } from "@/components/theme-provider";
|
||||
import { createPluginApi, pluginApiFor } from "@/lib/plugin-transport";
|
||||
|
||||
@@ -2,7 +2,7 @@ import type { ResourceKey } from "i18next";
|
||||
import type {
|
||||
FrontendModule,
|
||||
PluginManifest,
|
||||
} from "@termix/plugin-sdk/frontend";
|
||||
} from "@termix-ssh/plugin-sdk/frontend";
|
||||
import i18n, { setPluginLocaleResolver } from "@/i18n/i18n";
|
||||
import { getPlugins, type PluginSummary } from "@/api/plugins-api";
|
||||
import { getBackendUrl } from "@/main-axios";
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
/**
|
||||
* @termix/plugin-sdk/ui: the shell's components, for plugins.
|
||||
* @termix-ssh/plugin-sdk/ui: the shell's components, for plugins.
|
||||
*
|
||||
* Everything exported here is public API. A plugin builds its UI from these
|
||||
* so it looks like the rest of the app and picks up theme changes, and it
|
||||
@@ -244,7 +244,7 @@ export { remoteServerUrl as linkedServerUrl } from "@/plugin-host/desktop";
|
||||
|
||||
// Dashboard reads. The calls a plugin makes on the user's behalf (recent
|
||||
// activity, sudo autofill, open tabs, keybindings) are typed in
|
||||
// @termix/plugin-sdk/frontend instead.
|
||||
// @termix-ssh/plugin-sdk/frontend instead.
|
||||
export {
|
||||
getRecentActivity,
|
||||
getUptime,
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
/**
|
||||
* The Termix side of @termix/plugin-sdk/testing's renderWithApp.
|
||||
* The Termix side of @termix-ssh/plugin-sdk/testing's renderWithApp.
|
||||
*
|
||||
* Activates a plugin against the real registries, the real app object and
|
||||
* the real SDK bridge, then renders whatever it registered with Testing
|
||||
@@ -12,13 +12,13 @@ import { render } from "@testing-library/react";
|
||||
import type {
|
||||
HostActionContribution,
|
||||
PluginManifest,
|
||||
} from "@termix/plugin-sdk/frontend";
|
||||
} from "@termix-ssh/plugin-sdk/frontend";
|
||||
import type {
|
||||
FrontendPluginModule,
|
||||
RenderWithAppOptions,
|
||||
RenderedPluginApp,
|
||||
ShellCall,
|
||||
} from "@termix/plugin-sdk/testing";
|
||||
} from "@termix-ssh/plugin-sdk/testing";
|
||||
import i18n from "@/i18n/i18n";
|
||||
import type { PluginSummary } from "@/api/plugins-api";
|
||||
import { ThemeProvider } from "@/components/theme-provider";
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
import { isFieldActive } from "@termix/plugin-sdk/settings";
|
||||
import { isFieldActive } from "@termix-ssh/plugin-sdk/settings";
|
||||
import type { PluginSettingsField } from "@/api/plugins-api";
|
||||
|
||||
/**
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
import type { ConfirmOptions } from "@/components/surface/surface-scope";
|
||||
import type { ComponentType, Ref } from "react";
|
||||
import type { HostDraft } from "@termix/plugin-sdk/frontend";
|
||||
import type { HostDraft } from "@termix-ssh/plugin-sdk/frontend";
|
||||
import type { Host, Tab } from "@/types/ui-types";
|
||||
import { createRegistry } from "@/lib/registry";
|
||||
import { viewOwner } from "@/plugin-host/view-ownership";
|
||||
|
||||
@@ -90,8 +90,8 @@ import {
|
||||
import { useSshAuthEditors } from "@/plugin-host/auth-registry";
|
||||
import { useSshAuthProviders } from "@/hooks/useSshAuthProviders";
|
||||
import { SshAuthProviderFields } from "./SshAuthProviderFields";
|
||||
import type { PluginSettingsField } from "@termix/plugin-sdk/manifest";
|
||||
import type { HostDraft } from "@termix/plugin-sdk/frontend";
|
||||
import type { PluginSettingsField } from "@termix-ssh/plugin-sdk/manifest";
|
||||
import type { HostDraft } from "@termix-ssh/plugin-sdk/frontend";
|
||||
import { PluginComponent } from "@/plugin-host/component-registry";
|
||||
import {
|
||||
toCredentialOption,
|
||||
|
||||
@@ -5,7 +5,7 @@ import {
|
||||
type HostDraft,
|
||||
type HostProtocolAuthForm,
|
||||
type HostProtocolAuthSummary,
|
||||
} from "@termix/plugin-sdk/frontend";
|
||||
} from "@termix-ssh/plugin-sdk/frontend";
|
||||
import type { DefaultOverrides } from "@/types/host-defaults";
|
||||
import {
|
||||
listHostProtocols,
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
import { useEffect, useRef, useState } from "react";
|
||||
import { useTranslation } from "react-i18next";
|
||||
import type { PluginSettingsField } from "@termix/plugin-sdk/manifest";
|
||||
import type { PluginSettingsField } from "@termix-ssh/plugin-sdk/manifest";
|
||||
import { SettingsFieldRow } from "@/settings/SettingsFields";
|
||||
import {
|
||||
getPluginHostSettings,
|
||||
|
||||
Loaded 100 of 132 files, more files were not shown because too many files have changed in this diff.
Show more
Reference in new issue
Block a user