feat: harden plugin api for separate repos, signed updates and generic external login

This commit is contained in:
LukeGus committed 2026-09-29 18:11:59 -05:00
1 parent fb9c168b6b
commit 80944301dd
310 files changed
+6577 -4927

No files matched your search

+4 -2
View File
@@ -20,7 +20,8 @@
"files:own",
"network:serve",
"ui:surface",
"events:core"
"events:core",
"db:core-refs"
],
"provides": [
{
@@ -71,7 +72,8 @@
"key": "enableSessionRecording",
"labelKey": "hosts.enableSessionRecording",
"editorTab": "general"
}
},
"uses": ["terminal.toolbarStatus"]
},
"locales": "locales",
"platforms": ["linux", "win32", "darwin"]
+26 -2
View File
@@ -6,10 +6,34 @@
"scripts": {
"build": "termix-plugin build",
"test": "termix-plugin test",
"typecheck": "tsc -b ../../tsconfig.plugins.backend.json ../../tsconfig.plugins.frontend.json",
"typecheck": "tsc -p .",
"validate": "termix-plugin validate"
},
"dependencies": {
"@xterm/addon-fit": "^0.11.0",
"@xterm/xterm": "^6.0.0",
"guacamole-common-js": "^1.5.0",
"lucide-react": "^1.33.0"
},
"devDependencies": {
"@termix/plugin-sdk": "*"
"@termix/plugin-sdk": "^1.0.0",
"@types/node": "^26.2.0",
"@types/react": "^19.2.18",
"@types/react-dom": "^19.2.4",
"better-sqlite3": "^13.0.3",
"jsdom": "^30.0.1",
"vitest": "^4.1.11"
},
"peerDependencies": {
"@termix/plugin-sdk": "^1.0.0",
"drizzle-orm": "^0.45.2",
"express": "^5.2.1",
"react": "^19.2.8"
},
"termix": {
"patches": [
"xterm-android-ime",
"guacamole-common-js-flush"
]
}
}
@@ -50,7 +50,11 @@ async function setup() {
.run("user-1", "alice");
db.sqlite.prepare("INSERT INTO ssh_data (id) VALUES (?)").run(7);
const table = await db.database.define(sessionRecordings);
return createSessionRecordingRepository(db.database, table, fakeHosts);
return createSessionRecordingRepository(
db.database,
table,
fakeHosts as never,
);
}
describe("session recording repository", () => {
@@ -59,7 +59,11 @@ async function setup(): Promise<{
trackSession: () => () => {},
recordActivity: async () => {},
};
const repo = createSessionRecordingRepository(db.database, table, hosts);
const repo = createSessionRecordingRepository(
db.database,
table,
hosts as never,
);
const mock = createMockCtx({
pluginId: manifest.id,