chore: rename the plugin sdk to @termix-ssh/plugin-sdk

This commit is contained in:
LukeGus committed 2026-10-05 18:23:03 -05:00
1 parent 0c4f673318
commit e608505b39
132 files changed
+250 -1336

No files matched your search

+1 -1
View File
@@ -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";
+1 -1
View File
@@ -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 {
+4 -2
View File
@@ -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 {
+2 -2
View File
@@ -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"];
+4 -2
View File
@@ -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",
+1 -1
View File
@@ -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;
+2 -2
View File
@@ -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,
+1 -1
View File
@@ -15,7 +15,7 @@ import {
refUser,
text,
varchar,
} from "@termix/plugin-sdk/db";
} from "@termix-ssh/plugin-sdk/db";
let sqlite: Database.Database;