localant 1.0.2 → 1.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.ja.md +185 -0
- package/README.md +137 -20
- package/SECURITY.md +63 -8
- package/assets/hero.png +0 -0
- package/assets/localant-icon.png +0 -0
- package/examples/skills/article-publisher/README.md +41 -0
- package/examples/skills/article-publisher/package.json +9 -0
- package/examples/skills/article-publisher/skill.json +134 -0
- package/examples/skills/article-publisher/src/index.ts +186 -0
- package/examples/skills/article-publisher/tests/skill.test.ts +72 -0
- package/package.json +15 -5
- package/packages/cli/dist/autostart.d.ts +14 -0
- package/packages/cli/dist/autostart.d.ts.map +1 -0
- package/packages/cli/dist/autostart.js +98 -0
- package/packages/cli/dist/autostart.js.map +1 -0
- package/packages/cli/dist/bin.js +214 -2
- package/packages/cli/dist/bin.js.map +1 -1
- package/packages/cli/dist/runtime.d.ts.map +1 -1
- package/packages/cli/dist/runtime.js +56 -8
- package/packages/cli/dist/runtime.js.map +1 -1
- package/packages/cli/dist/serveo-setup.d.ts +37 -0
- package/packages/cli/dist/serveo-setup.d.ts.map +1 -0
- package/packages/cli/dist/serveo-setup.js +168 -0
- package/packages/cli/dist/serveo-setup.js.map +1 -0
- package/packages/cli/dist/util.d.ts +6 -0
- package/packages/cli/dist/util.d.ts.map +1 -1
- package/packages/cli/dist/util.js +20 -0
- package/packages/cli/dist/util.js.map +1 -1
- package/packages/cli/package.json +1 -1
- package/packages/dashboard/dist/index.d.ts +5 -4
- package/packages/dashboard/dist/index.d.ts.map +1 -1
- package/packages/dashboard/dist/index.js +781 -44
- package/packages/dashboard/dist/index.js.map +1 -1
- package/packages/gateway/dist/gateway.d.ts +14 -1
- package/packages/gateway/dist/gateway.d.ts.map +1 -1
- package/packages/gateway/dist/gateway.js +59 -6
- package/packages/gateway/dist/gateway.js.map +1 -1
- package/packages/gateway/dist/index.d.ts +3 -0
- package/packages/gateway/dist/index.d.ts.map +1 -1
- package/packages/gateway/dist/index.js +3 -0
- package/packages/gateway/dist/index.js.map +1 -1
- package/packages/gateway/dist/managers/coding-agent-manager.d.ts +14 -0
- package/packages/gateway/dist/managers/coding-agent-manager.d.ts.map +1 -1
- package/packages/gateway/dist/managers/coding-agent-manager.js +21 -2
- package/packages/gateway/dist/managers/coding-agent-manager.js.map +1 -1
- package/packages/gateway/dist/managers/fs-manager.d.ts +73 -0
- package/packages/gateway/dist/managers/fs-manager.d.ts.map +1 -1
- package/packages/gateway/dist/managers/fs-manager.js +290 -6
- package/packages/gateway/dist/managers/fs-manager.js.map +1 -1
- package/packages/gateway/dist/managers/git-manager.d.ts +6 -0
- package/packages/gateway/dist/managers/git-manager.d.ts.map +1 -1
- package/packages/gateway/dist/managers/git-manager.js +24 -0
- package/packages/gateway/dist/managers/git-manager.js.map +1 -1
- package/packages/gateway/dist/managers/lsp-service.d.ts +88 -0
- package/packages/gateway/dist/managers/lsp-service.d.ts.map +1 -0
- package/packages/gateway/dist/managers/lsp-service.js +249 -0
- package/packages/gateway/dist/managers/lsp-service.js.map +1 -0
- package/packages/gateway/dist/managers/mcp-bridge.d.ts +2 -1
- package/packages/gateway/dist/managers/mcp-bridge.d.ts.map +1 -1
- package/packages/gateway/dist/managers/mcp-bridge.js +23 -2
- package/packages/gateway/dist/managers/mcp-bridge.js.map +1 -1
- package/packages/gateway/dist/managers/shell-manager.d.ts +19 -0
- package/packages/gateway/dist/managers/shell-manager.d.ts.map +1 -1
- package/packages/gateway/dist/managers/shell-manager.js +28 -0
- package/packages/gateway/dist/managers/shell-manager.js.map +1 -1
- package/packages/gateway/dist/managers/skill-runtime.d.ts +8 -0
- package/packages/gateway/dist/managers/skill-runtime.d.ts.map +1 -1
- package/packages/gateway/dist/managers/skill-runtime.js +15 -0
- package/packages/gateway/dist/managers/skill-runtime.js.map +1 -1
- package/packages/gateway/dist/managers/tunnel-manager.d.ts +19 -1
- package/packages/gateway/dist/managers/tunnel-manager.d.ts.map +1 -1
- package/packages/gateway/dist/managers/tunnel-manager.js +289 -8
- package/packages/gateway/dist/managers/tunnel-manager.js.map +1 -1
- package/packages/gateway/dist/security/command-guard.d.ts +3 -0
- package/packages/gateway/dist/security/command-guard.d.ts.map +1 -1
- package/packages/gateway/dist/security/command-guard.js +15 -7
- package/packages/gateway/dist/security/command-guard.js.map +1 -1
- package/packages/gateway/dist/security/path-guard.d.ts +3 -0
- package/packages/gateway/dist/security/path-guard.d.ts.map +1 -1
- package/packages/gateway/dist/security/path-guard.js +8 -2
- package/packages/gateway/dist/security/path-guard.js.map +1 -1
- package/packages/gateway/dist/stores/config-store.d.ts +10 -0
- package/packages/gateway/dist/stores/config-store.d.ts.map +1 -1
- package/packages/gateway/dist/stores/config-store.js +47 -3
- package/packages/gateway/dist/stores/config-store.js.map +1 -1
- package/packages/gateway/dist/stores/secret-vault.d.ts +19 -3
- package/packages/gateway/dist/stores/secret-vault.d.ts.map +1 -1
- package/packages/gateway/dist/stores/secret-vault.js +47 -6
- package/packages/gateway/dist/stores/secret-vault.js.map +1 -1
- package/packages/gateway/dist/tools/adapters.d.ts.map +1 -1
- package/packages/gateway/dist/tools/adapters.js +198 -7
- package/packages/gateway/dist/tools/adapters.js.map +1 -1
- package/packages/gateway/dist/tools/adb.d.ts.map +1 -1
- package/packages/gateway/dist/tools/adb.js +42 -0
- package/packages/gateway/dist/tools/adb.js.map +1 -1
- package/packages/gateway/dist/tools/agent.d.ts +10 -0
- package/packages/gateway/dist/tools/agent.d.ts.map +1 -0
- package/packages/gateway/dist/tools/agent.js +35 -0
- package/packages/gateway/dist/tools/agent.js.map +1 -0
- package/packages/gateway/dist/tools/aliases.d.ts +7 -0
- package/packages/gateway/dist/tools/aliases.d.ts.map +1 -0
- package/packages/gateway/dist/tools/aliases.js +64 -0
- package/packages/gateway/dist/tools/aliases.js.map +1 -0
- package/packages/gateway/dist/tools/bash.d.ts +10 -0
- package/packages/gateway/dist/tools/bash.d.ts.map +1 -0
- package/packages/gateway/dist/tools/bash.js +67 -0
- package/packages/gateway/dist/tools/bash.js.map +1 -0
- package/packages/gateway/dist/tools/browser.d.ts.map +1 -1
- package/packages/gateway/dist/tools/browser.js +9 -0
- package/packages/gateway/dist/tools/browser.js.map +1 -1
- package/packages/gateway/dist/tools/control.d.ts +8 -0
- package/packages/gateway/dist/tools/control.d.ts.map +1 -0
- package/packages/gateway/dist/tools/control.js +134 -0
- package/packages/gateway/dist/tools/control.js.map +1 -0
- package/packages/gateway/dist/tools/editing.d.ts +8 -0
- package/packages/gateway/dist/tools/editing.d.ts.map +1 -0
- package/packages/gateway/dist/tools/editing.js +102 -0
- package/packages/gateway/dist/tools/editing.js.map +1 -0
- package/packages/gateway/dist/tools/git.d.ts.map +1 -1
- package/packages/gateway/dist/tools/git.js +67 -0
- package/packages/gateway/dist/tools/git.js.map +1 -1
- package/packages/gateway/dist/tools/index.d.ts.map +1 -1
- package/packages/gateway/dist/tools/index.js +17 -2
- package/packages/gateway/dist/tools/index.js.map +1 -1
- package/packages/gateway/dist/tools/lsp.d.ts +10 -0
- package/packages/gateway/dist/tools/lsp.d.ts.map +1 -0
- package/packages/gateway/dist/tools/lsp.js +111 -0
- package/packages/gateway/dist/tools/lsp.js.map +1 -0
- package/packages/gateway/dist/tools/question.d.ts +10 -0
- package/packages/gateway/dist/tools/question.d.ts.map +1 -0
- package/packages/gateway/dist/tools/question.js +30 -0
- package/packages/gateway/dist/tools/question.js.map +1 -0
- package/packages/gateway/dist/tools/shell.d.ts +1 -1
- package/packages/gateway/dist/tools/shell.d.ts.map +1 -1
- package/packages/gateway/dist/tools/shell.js +15 -0
- package/packages/gateway/dist/tools/shell.js.map +1 -1
- package/packages/gateway/dist/tools/skill.d.ts.map +1 -1
- package/packages/gateway/dist/tools/skill.js +2 -7
- package/packages/gateway/dist/tools/skill.js.map +1 -1
- package/packages/gateway/dist/tools/system.js +2 -2
- package/packages/gateway/dist/tools/system.js.map +1 -1
- package/packages/gateway/dist/tools/validation.d.ts +3 -0
- package/packages/gateway/dist/tools/validation.d.ts.map +1 -0
- package/packages/gateway/dist/tools/validation.js +120 -0
- package/packages/gateway/dist/tools/validation.js.map +1 -0
- package/packages/mcp/dist/http-server.d.ts +1 -1
- package/packages/mcp/dist/http-server.d.ts.map +1 -1
- package/packages/mcp/dist/http-server.js +544 -20
- package/packages/mcp/dist/http-server.js.map +1 -1
- package/packages/mcp/dist/mcp-server.d.ts.map +1 -1
- package/packages/mcp/dist/mcp-server.js +5 -1
- package/packages/mcp/dist/mcp-server.js.map +1 -1
- package/packages/shared/dist/config.d.ts +146 -16
- package/packages/shared/dist/config.d.ts.map +1 -1
- package/packages/shared/dist/config.js +93 -7
- package/packages/shared/dist/config.js.map +1 -1
- package/packages/shared/dist/index.d.ts +2 -0
- package/packages/shared/dist/index.d.ts.map +1 -1
- package/packages/shared/dist/index.js +2 -0
- package/packages/shared/dist/index.js.map +1 -1
- package/packages/shared/dist/paths.d.ts +19 -2
- package/packages/shared/dist/paths.d.ts.map +1 -1
- package/packages/shared/dist/paths.js +50 -3
- package/packages/shared/dist/paths.js.map +1 -1
- package/packages/shared/dist/tool-profiles.d.ts +34 -0
- package/packages/shared/dist/tool-profiles.d.ts.map +1 -0
- package/packages/shared/dist/tool-profiles.js +188 -0
- package/packages/shared/dist/tool-profiles.js.map +1 -0
- package/packages/shared/dist/version.d.ts +9 -0
- package/packages/shared/dist/version.d.ts.map +1 -0
- package/packages/shared/dist/version.js +9 -0
- package/packages/shared/dist/version.js.map +1 -0
- package/assets/icon.svg +0 -25
- package/packages/gateway/dist/tools/article.d.ts +0 -3
- package/packages/gateway/dist/tools/article.d.ts.map +0 -1
- package/packages/gateway/dist/tools/article.js +0 -230
- package/packages/gateway/dist/tools/article.js.map +0 -1
|
@@ -1,26 +1,43 @@
|
|
|
1
1
|
import fs from "node:fs";
|
|
2
2
|
import path from "node:path";
|
|
3
3
|
import crypto from "node:crypto";
|
|
4
|
-
import { ConfigSchema, defaultConfig, appPaths } from "@localant/shared";
|
|
4
|
+
import { ConfigSchema, defaultConfig, appPaths, migrateLegacyConfigDir } from "@localant/shared";
|
|
5
5
|
/** Loads, persists and initializes on-disk configuration and identity files. */
|
|
6
6
|
export class ConfigStore {
|
|
7
7
|
paths;
|
|
8
|
+
/** True only when using the real default location (not an explicit test base). */
|
|
9
|
+
isDefaultLocation;
|
|
8
10
|
constructor(base) {
|
|
9
11
|
this.paths = appPaths(base);
|
|
12
|
+
this.isDefaultLocation = base === undefined;
|
|
10
13
|
}
|
|
11
14
|
/** Create config dir tree and default files if missing. Idempotent. */
|
|
12
15
|
ensureInitialized() {
|
|
13
16
|
const p = this.paths;
|
|
17
|
+
// Before creating anything, migrate a pre-1.x install into ~/.localant.
|
|
18
|
+
if (this.isDefaultLocation) {
|
|
19
|
+
migrateLegacyConfigDir(p.root);
|
|
20
|
+
}
|
|
14
21
|
for (const dir of [p.root, path.dirname(p.auditLog), p.skillsDir, p.backupsDir, p.workspaceDir, p.logsDir]) {
|
|
15
22
|
fs.mkdirSync(dir, { recursive: true });
|
|
16
23
|
}
|
|
17
24
|
if (!fs.existsSync(p.configFile)) {
|
|
18
|
-
|
|
25
|
+
const config = defaultConfig();
|
|
26
|
+
config.tunnel.provider = "serveo";
|
|
27
|
+
const rand = crypto.randomBytes(16).toString("hex");
|
|
28
|
+
config.tunnel.subdomain = `localant-${rand}`;
|
|
29
|
+
this.save(config);
|
|
19
30
|
}
|
|
20
31
|
if (!fs.existsSync(p.tokenFile)) {
|
|
21
32
|
const token = crypto.randomBytes(32).toString("base64url");
|
|
22
33
|
fs.writeFileSync(p.tokenFile, token, { mode: 0o600 });
|
|
23
34
|
}
|
|
35
|
+
if (!fs.existsSync(p.vaultKeyFile)) {
|
|
36
|
+
// A dedicated, random 256-bit vault key kept independent of the auth
|
|
37
|
+
// token, so rotating the token never makes stored secrets undecryptable.
|
|
38
|
+
const key = crypto.randomBytes(32).toString("base64");
|
|
39
|
+
fs.writeFileSync(p.vaultKeyFile, key, { mode: 0o600 });
|
|
40
|
+
}
|
|
24
41
|
if (!fs.existsSync(p.secretsFile)) {
|
|
25
42
|
fs.writeFileSync(p.secretsFile, JSON.stringify({}), { mode: 0o600 });
|
|
26
43
|
}
|
|
@@ -34,7 +51,20 @@ export class ConfigStore {
|
|
|
34
51
|
load() {
|
|
35
52
|
try {
|
|
36
53
|
const raw = JSON.parse(fs.readFileSync(this.paths.configFile, "utf8"));
|
|
37
|
-
|
|
54
|
+
const config = ConfigSchema.parse(raw);
|
|
55
|
+
// Merge missing default coding agents into existing config automatically
|
|
56
|
+
const def = defaultConfig();
|
|
57
|
+
let changed = false;
|
|
58
|
+
for (const [key, val] of Object.entries(def.codingAgents)) {
|
|
59
|
+
if (!config.codingAgents[key]) {
|
|
60
|
+
config.codingAgents[key] = val;
|
|
61
|
+
changed = true;
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
if (changed) {
|
|
65
|
+
this.save(config);
|
|
66
|
+
}
|
|
67
|
+
return config;
|
|
38
68
|
}
|
|
39
69
|
catch {
|
|
40
70
|
return defaultConfig();
|
|
@@ -53,5 +83,19 @@ export class ConfigStore {
|
|
|
53
83
|
getToken() {
|
|
54
84
|
return fs.readFileSync(this.paths.tokenFile, "utf8").trim();
|
|
55
85
|
}
|
|
86
|
+
/** Read the dedicated vault key (base64). Independent of the auth token. */
|
|
87
|
+
getVaultKey() {
|
|
88
|
+
return Buffer.from(fs.readFileSync(this.paths.vaultKeyFile, "utf8").trim(), "base64");
|
|
89
|
+
}
|
|
90
|
+
/**
|
|
91
|
+
* Generate a fresh auth token and persist it. Returns the new token. Because
|
|
92
|
+
* the vault key is stored separately, rotating the token does NOT invalidate
|
|
93
|
+
* stored secrets.
|
|
94
|
+
*/
|
|
95
|
+
rotateToken() {
|
|
96
|
+
const token = crypto.randomBytes(32).toString("base64url");
|
|
97
|
+
fs.writeFileSync(this.paths.tokenFile, token, { mode: 0o600 });
|
|
98
|
+
return token;
|
|
99
|
+
}
|
|
56
100
|
}
|
|
57
101
|
//# sourceMappingURL=config-store.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config-store.js","sourceRoot":"","sources":["../../src/stores/config-store.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,SAAS,CAAC;AACzB,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,MAAM,MAAM,aAAa,CAAC;AACjC,OAAO,EAAE,YAAY,EAAe,aAAa,EAAE,QAAQ,EAAiB,MAAM,kBAAkB,CAAC;
|
|
1
|
+
{"version":3,"file":"config-store.js","sourceRoot":"","sources":["../../src/stores/config-store.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,16 +1,26 @@
|
|
|
1
1
|
import type { AppPaths } from "@localant/shared";
|
|
2
2
|
/**
|
|
3
3
|
* Local secret vault. Values are encrypted at rest with AES-256-GCM using a
|
|
4
|
-
* key
|
|
5
|
-
*
|
|
4
|
+
* dedicated random vault key stored separately from the auth token (see
|
|
5
|
+
* ConfigStore.getVaultKey). This means rotating the auth token never makes
|
|
6
|
+
* stored secrets undecryptable. Secret *values* are never returned by listing
|
|
7
|
+
* operations and never logged.
|
|
8
|
+
*
|
|
9
|
+
* For backward compatibility, a `legacyToken` may be supplied: secrets written
|
|
10
|
+
* by older versions (which derived the key from the auth token) are decrypted
|
|
11
|
+
* with the legacy key on read and transparently re-encrypted with the dedicated
|
|
12
|
+
* key via {@link migrate}.
|
|
6
13
|
*/
|
|
7
14
|
export declare class SecretVault {
|
|
8
15
|
private readonly file;
|
|
9
16
|
private readonly key;
|
|
10
|
-
|
|
17
|
+
private readonly legacyKey?;
|
|
18
|
+
constructor(paths: AppPaths, key: Buffer, legacyToken?: string);
|
|
11
19
|
private read;
|
|
12
20
|
private write;
|
|
13
21
|
private encrypt;
|
|
22
|
+
private decryptWith;
|
|
23
|
+
/** Decrypt with the current key, falling back to the legacy token-derived key. */
|
|
14
24
|
private decrypt;
|
|
15
25
|
set(name: string, value: string): void;
|
|
16
26
|
get(name: string): string | undefined;
|
|
@@ -19,5 +29,11 @@ export declare class SecretVault {
|
|
|
19
29
|
list(): string[];
|
|
20
30
|
/** All current secret values, for redaction purposes only. */
|
|
21
31
|
allValues(): string[];
|
|
32
|
+
/**
|
|
33
|
+
* Re-encrypt any secrets that only decrypt under the legacy token-derived key
|
|
34
|
+
* with the dedicated vault key. Idempotent; a no-op when there is no legacy
|
|
35
|
+
* key or nothing needs migrating. Returns the number of secrets migrated.
|
|
36
|
+
*/
|
|
37
|
+
migrate(): number;
|
|
22
38
|
}
|
|
23
39
|
//# sourceMappingURL=secret-vault.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"secret-vault.d.ts","sourceRoot":"","sources":["../../src/stores/secret-vault.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAEjD
|
|
1
|
+
{"version":3,"file":"secret-vault.d.ts","sourceRoot":"","sources":["../../src/stores/secret-vault.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAEjD;;;;;;;;;;;GAWG;AACH,qBAAa,WAAW;IACtB,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAS;IAC9B,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAS;IAC7B,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAS;gBAExB,KAAK,EAAE,QAAQ,EAAE,GAAG,EAAE,MAAM,EAAE,WAAW,CAAC,EAAE,MAAM;IAQ9D,OAAO,CAAC,IAAI;IAQZ,OAAO,CAAC,KAAK;IAIb,OAAO,CAAC,OAAO;IAQf,OAAO,CAAC,WAAW;IAYnB,kFAAkF;IAClF,OAAO,CAAC,OAAO;IAMf,GAAG,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,IAAI;IAMtC,GAAG,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS;IAKrC,MAAM,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO;IAQ7B,iCAAiC;IACjC,IAAI,IAAI,MAAM,EAAE;IAIhB,8DAA8D;IAC9D,SAAS,IAAI,MAAM,EAAE;IAMrB;;;;OAIG;IACH,OAAO,IAAI,MAAM;CAelB"}
|
|
@@ -2,15 +2,26 @@ import fs from "node:fs";
|
|
|
2
2
|
import crypto from "node:crypto";
|
|
3
3
|
/**
|
|
4
4
|
* Local secret vault. Values are encrypted at rest with AES-256-GCM using a
|
|
5
|
-
* key
|
|
6
|
-
*
|
|
5
|
+
* dedicated random vault key stored separately from the auth token (see
|
|
6
|
+
* ConfigStore.getVaultKey). This means rotating the auth token never makes
|
|
7
|
+
* stored secrets undecryptable. Secret *values* are never returned by listing
|
|
8
|
+
* operations and never logged.
|
|
9
|
+
*
|
|
10
|
+
* For backward compatibility, a `legacyToken` may be supplied: secrets written
|
|
11
|
+
* by older versions (which derived the key from the auth token) are decrypted
|
|
12
|
+
* with the legacy key on read and transparently re-encrypted with the dedicated
|
|
13
|
+
* key via {@link migrate}.
|
|
7
14
|
*/
|
|
8
15
|
export class SecretVault {
|
|
9
16
|
file;
|
|
10
17
|
key;
|
|
11
|
-
|
|
18
|
+
legacyKey;
|
|
19
|
+
constructor(paths, key, legacyToken) {
|
|
12
20
|
this.file = paths.secretsFile;
|
|
13
|
-
this.key =
|
|
21
|
+
this.key = key;
|
|
22
|
+
this.legacyKey = legacyToken
|
|
23
|
+
? crypto.createHash("sha256").update(`cla-vault:${legacyToken}`).digest()
|
|
24
|
+
: undefined;
|
|
14
25
|
}
|
|
15
26
|
read() {
|
|
16
27
|
try {
|
|
@@ -30,12 +41,12 @@ export class SecretVault {
|
|
|
30
41
|
const tag = cipher.getAuthTag();
|
|
31
42
|
return `${iv.toString("base64")}.${tag.toString("base64")}.${enc.toString("base64")}`;
|
|
32
43
|
}
|
|
33
|
-
|
|
44
|
+
decryptWith(blob, key) {
|
|
34
45
|
try {
|
|
35
46
|
const [ivB, tagB, encB] = blob.split(".");
|
|
36
47
|
if (!ivB || !tagB || !encB)
|
|
37
48
|
return undefined;
|
|
38
|
-
const decipher = crypto.createDecipheriv("aes-256-gcm",
|
|
49
|
+
const decipher = crypto.createDecipheriv("aes-256-gcm", key, Buffer.from(ivB, "base64"));
|
|
39
50
|
decipher.setAuthTag(Buffer.from(tagB, "base64"));
|
|
40
51
|
return Buffer.concat([decipher.update(Buffer.from(encB, "base64")), decipher.final()]).toString("utf8");
|
|
41
52
|
}
|
|
@@ -43,6 +54,13 @@ export class SecretVault {
|
|
|
43
54
|
return undefined;
|
|
44
55
|
}
|
|
45
56
|
}
|
|
57
|
+
/** Decrypt with the current key, falling back to the legacy token-derived key. */
|
|
58
|
+
decrypt(blob) {
|
|
59
|
+
const primary = this.decryptWith(blob, this.key);
|
|
60
|
+
if (primary !== undefined)
|
|
61
|
+
return primary;
|
|
62
|
+
return this.legacyKey ? this.decryptWith(blob, this.legacyKey) : undefined;
|
|
63
|
+
}
|
|
46
64
|
set(name, value) {
|
|
47
65
|
const data = this.read();
|
|
48
66
|
data[name] = this.encrypt(value);
|
|
@@ -70,5 +88,28 @@ export class SecretVault {
|
|
|
70
88
|
.map((k) => this.get(k))
|
|
71
89
|
.filter((v) => typeof v === "string" && v.length > 0);
|
|
72
90
|
}
|
|
91
|
+
/**
|
|
92
|
+
* Re-encrypt any secrets that only decrypt under the legacy token-derived key
|
|
93
|
+
* with the dedicated vault key. Idempotent; a no-op when there is no legacy
|
|
94
|
+
* key or nothing needs migrating. Returns the number of secrets migrated.
|
|
95
|
+
*/
|
|
96
|
+
migrate() {
|
|
97
|
+
if (!this.legacyKey)
|
|
98
|
+
return 0;
|
|
99
|
+
const data = this.read();
|
|
100
|
+
let migrated = 0;
|
|
101
|
+
for (const [name, blob] of Object.entries(data)) {
|
|
102
|
+
if (this.decryptWith(blob, this.key) !== undefined)
|
|
103
|
+
continue; // already current
|
|
104
|
+
const legacy = this.decryptWith(blob, this.legacyKey);
|
|
105
|
+
if (legacy !== undefined) {
|
|
106
|
+
data[name] = this.encrypt(legacy);
|
|
107
|
+
migrated++;
|
|
108
|
+
}
|
|
109
|
+
}
|
|
110
|
+
if (migrated > 0)
|
|
111
|
+
this.write(data);
|
|
112
|
+
return migrated;
|
|
113
|
+
}
|
|
73
114
|
}
|
|
74
115
|
//# sourceMappingURL=secret-vault.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"secret-vault.js","sourceRoot":"","sources":["../../src/stores/secret-vault.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,SAAS,CAAC;AACzB,OAAO,MAAM,MAAM,aAAa,CAAC;AAGjC
|
|
1
|
+
{"version":3,"file":"secret-vault.js","sourceRoot":"","sources":["../../src/stores/secret-vault.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"adapters.d.ts","sourceRoot":"","sources":["../../src/tools/adapters.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"adapters.d.ts","sourceRoot":"","sources":["../../src/tools/adapters.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,eAAe,CAAC;AAM7C;;;;GAIG;AACH,wBAAgB,oBAAoB,CAAC,EAAE,EAAE,OAAO,GAAG,IAAI,CA0OtD"}
|
|
@@ -1,5 +1,11 @@
|
|
|
1
|
+
import fs from "node:fs";
|
|
2
|
+
import os from "node:os";
|
|
3
|
+
import path from "node:path";
|
|
1
4
|
import { z } from "zod";
|
|
2
5
|
import { commandExists, execFileSafe } from "../util/exec.js";
|
|
6
|
+
const fsReadFileSync = (file) => fs.readFileSync(file, "utf8");
|
|
7
|
+
const joinHome = (rel) => path.join(os.homedir(), rel);
|
|
8
|
+
const joinCwd = (rel) => path.join(process.cwd(), rel);
|
|
3
9
|
/**
|
|
4
10
|
* Adapters bridge external systems (OpenClaw, Desktop Commander) and arbitrary
|
|
5
11
|
* MCP servers. They never expose external tools to ChatGPT unmediated — every
|
|
@@ -112,20 +118,40 @@ export function registerAdapterTools(gw) {
|
|
|
112
118
|
});
|
|
113
119
|
r.register({
|
|
114
120
|
name: "mcp_server_register",
|
|
115
|
-
description: "Register a downstream MCP server (stdio) to bridge through the gateway.",
|
|
121
|
+
description: "Register a downstream MCP server (stdio or streamable-http) to bridge through the gateway.",
|
|
116
122
|
risk: 2,
|
|
117
|
-
inputSchema: z
|
|
123
|
+
inputSchema: z
|
|
124
|
+
.object({
|
|
118
125
|
name: z.string(),
|
|
119
|
-
|
|
126
|
+
transport: z.enum(["stdio", "streamable-http"]).default("stdio"),
|
|
127
|
+
command: z.string().optional(),
|
|
120
128
|
args: z.array(z.string()).default([]),
|
|
129
|
+
url: z.string().optional(),
|
|
130
|
+
headers: z.record(z.string(), z.string()).optional(),
|
|
131
|
+
bearerTokenSecretName: z.string().optional(),
|
|
121
132
|
enabled: z.boolean().default(false),
|
|
133
|
+
})
|
|
134
|
+
.superRefine((v, ctx) => {
|
|
135
|
+
if (v.transport === "stdio" && !v.command)
|
|
136
|
+
ctx.addIssue({ code: z.ZodIssueCode.custom, message: "stdio requires command" });
|
|
137
|
+
if (v.transport === "streamable-http" && !v.url)
|
|
138
|
+
ctx.addIssue({ code: z.ZodIssueCode.custom, message: "streamable-http requires url" });
|
|
122
139
|
}),
|
|
123
|
-
summarize: (i) => `register mcp server ${i.name}`,
|
|
140
|
+
summarize: (i) => `register mcp server ${i.name} (${i.transport})`,
|
|
124
141
|
handler: (i) => {
|
|
125
142
|
const cfg = gw.config();
|
|
126
|
-
const
|
|
127
|
-
|
|
128
|
-
|
|
143
|
+
const entry = i.transport === "stdio"
|
|
144
|
+
? { transport: "stdio", command: i.command, args: i.args, enabled: i.enabled }
|
|
145
|
+
: {
|
|
146
|
+
transport: "streamable-http",
|
|
147
|
+
url: i.url,
|
|
148
|
+
args: [],
|
|
149
|
+
headers: i.headers,
|
|
150
|
+
bearerTokenSecretName: i.bearerTokenSecretName,
|
|
151
|
+
enabled: i.enabled,
|
|
152
|
+
};
|
|
153
|
+
gw.saveConfig({ ...cfg, mcpServers: { ...cfg.mcpServers, [i.name]: entry } });
|
|
154
|
+
return { registered: i.name, transport: i.transport, enabled: i.enabled };
|
|
129
155
|
},
|
|
130
156
|
});
|
|
131
157
|
r.register({
|
|
@@ -166,6 +192,171 @@ export function registerAdapterTools(gw) {
|
|
|
166
192
|
summarize: (i) => `${i.name}.${i.tool}`,
|
|
167
193
|
handler: (i) => gw.bridge.callTool(i.name, i.tool, i.input ?? {}),
|
|
168
194
|
});
|
|
195
|
+
// ---------- MCP config imports (all imported servers start DISABLED) ----------
|
|
196
|
+
const importServers = (servers) => {
|
|
197
|
+
const cfg = gw.config();
|
|
198
|
+
const next = { ...cfg.mcpServers };
|
|
199
|
+
const imported = [];
|
|
200
|
+
for (const [name, s] of Object.entries(servers)) {
|
|
201
|
+
if (next[name])
|
|
202
|
+
continue; // never override an existing (possibly enabled) server
|
|
203
|
+
next[name] = { ...s, args: s.args ?? [], enabled: false };
|
|
204
|
+
imported.push(name);
|
|
205
|
+
}
|
|
206
|
+
if (imported.length)
|
|
207
|
+
gw.saveConfig({ ...cfg, mcpServers: next });
|
|
208
|
+
return { imported };
|
|
209
|
+
};
|
|
210
|
+
r.register({
|
|
211
|
+
name: "mcp_import_claude_config",
|
|
212
|
+
description: "Import MCP servers from Claude Code config (.mcp.json / ~/.claude.json). Imported servers start disabled.",
|
|
213
|
+
risk: 2,
|
|
214
|
+
inputSchema: z.object({ path: z.string().optional() }),
|
|
215
|
+
summarize: () => "import claude mcp config",
|
|
216
|
+
handler: (i) => importServers(readClaudeServers(i.path)),
|
|
217
|
+
});
|
|
218
|
+
r.register({
|
|
219
|
+
name: "mcp_import_codex_config",
|
|
220
|
+
description: "Import MCP servers from Codex config (~/.codex/config.toml / .codex/config.toml). Imported servers start disabled.",
|
|
221
|
+
risk: 2,
|
|
222
|
+
inputSchema: z.object({ path: z.string().optional() }),
|
|
223
|
+
summarize: () => "import codex mcp config",
|
|
224
|
+
handler: (i) => importServers(readCodexServers(i.path)),
|
|
225
|
+
});
|
|
226
|
+
r.register({
|
|
227
|
+
name: "mcp_import_opencode_config",
|
|
228
|
+
description: "Import MCP servers from OpenCode config (opencode.json / opencode.jsonc). Imported servers start disabled.",
|
|
229
|
+
risk: 2,
|
|
230
|
+
inputSchema: z.object({ path: z.string().optional() }),
|
|
231
|
+
summarize: () => "import opencode mcp config",
|
|
232
|
+
handler: (i) => importServers(readOpencodeServers(i.path)),
|
|
233
|
+
});
|
|
234
|
+
r.register({
|
|
235
|
+
name: "mcp_import_all_agent_configs",
|
|
236
|
+
description: "Import MCP servers from Claude Code, Codex, and OpenCode configs. Imported servers start disabled.",
|
|
237
|
+
risk: 2,
|
|
238
|
+
inputSchema: z.object({}).strip(),
|
|
239
|
+
summarize: () => "import all agent mcp configs",
|
|
240
|
+
handler: () => importServers({ ...readClaudeServers(), ...readCodexServers(), ...readOpencodeServers() }),
|
|
241
|
+
});
|
|
242
|
+
}
|
|
243
|
+
/** Safely read + parse a JSON file, returning {} on any error. */
|
|
244
|
+
function readJson(file) {
|
|
245
|
+
try {
|
|
246
|
+
return JSON.parse(fsReadFileSync(file));
|
|
247
|
+
}
|
|
248
|
+
catch {
|
|
249
|
+
return {};
|
|
250
|
+
}
|
|
251
|
+
}
|
|
252
|
+
function normalizeServers(obj) {
|
|
253
|
+
const out = {};
|
|
254
|
+
if (!obj || typeof obj !== "object")
|
|
255
|
+
return out;
|
|
256
|
+
for (const [name, raw] of Object.entries(obj)) {
|
|
257
|
+
if (!raw || typeof raw !== "object")
|
|
258
|
+
continue;
|
|
259
|
+
if (typeof raw.url === "string") {
|
|
260
|
+
out[name] = { transport: "streamable-http", url: raw.url, headers: raw.headers };
|
|
261
|
+
}
|
|
262
|
+
else if (typeof raw.command === "string") {
|
|
263
|
+
out[name] = { transport: "stdio", command: raw.command, args: raw.args ?? [] };
|
|
264
|
+
}
|
|
265
|
+
}
|
|
266
|
+
return out;
|
|
267
|
+
}
|
|
268
|
+
function readClaudeServers(explicit) {
|
|
269
|
+
const candidates = explicit ? [explicit] : [joinCwd(".mcp.json"), joinHome(".claude.json")];
|
|
270
|
+
const merged = {};
|
|
271
|
+
for (const file of candidates) {
|
|
272
|
+
const json = readJson(file);
|
|
273
|
+
Object.assign(merged, normalizeServers(json.mcpServers));
|
|
274
|
+
}
|
|
275
|
+
return merged;
|
|
276
|
+
}
|
|
277
|
+
function readCodexServers(explicit) {
|
|
278
|
+
const candidates = explicit ? [explicit] : [joinHome(".codex/config.toml"), joinCwd(".codex/config.toml")];
|
|
279
|
+
const merged = {};
|
|
280
|
+
for (const file of candidates) {
|
|
281
|
+
let text = "";
|
|
282
|
+
try {
|
|
283
|
+
text = fsReadFileSync(file);
|
|
284
|
+
}
|
|
285
|
+
catch {
|
|
286
|
+
continue;
|
|
287
|
+
}
|
|
288
|
+
Object.assign(merged, parseCodexToml(text));
|
|
289
|
+
}
|
|
290
|
+
return merged;
|
|
291
|
+
}
|
|
292
|
+
function readOpencodeServers(explicit) {
|
|
293
|
+
const candidates = explicit ? [explicit] : [joinCwd("opencode.json"), joinCwd("opencode.jsonc")];
|
|
294
|
+
const merged = {};
|
|
295
|
+
for (const file of candidates) {
|
|
296
|
+
let text = "";
|
|
297
|
+
try {
|
|
298
|
+
text = fsReadFileSync(file);
|
|
299
|
+
}
|
|
300
|
+
catch {
|
|
301
|
+
continue;
|
|
302
|
+
}
|
|
303
|
+
try {
|
|
304
|
+
const json = JSON.parse(stripJsonComments(text));
|
|
305
|
+
// OpenCode uses `mcp` keyed by name with { type, command/url }.
|
|
306
|
+
const mcp = (json.mcp ?? json.mcpServers);
|
|
307
|
+
if (mcp) {
|
|
308
|
+
for (const [name, raw] of Object.entries(mcp)) {
|
|
309
|
+
if (typeof raw.url === "string")
|
|
310
|
+
merged[name] = { transport: "streamable-http", url: raw.url };
|
|
311
|
+
else if (Array.isArray(raw.command))
|
|
312
|
+
merged[name] = { transport: "stdio", command: raw.command[0], args: raw.command.slice(1) };
|
|
313
|
+
else if (typeof raw.command === "string")
|
|
314
|
+
merged[name] = { transport: "stdio", command: raw.command, args: raw.args ?? [] };
|
|
315
|
+
}
|
|
316
|
+
}
|
|
317
|
+
}
|
|
318
|
+
catch {
|
|
319
|
+
/* ignore */
|
|
320
|
+
}
|
|
321
|
+
}
|
|
322
|
+
return merged;
|
|
323
|
+
}
|
|
324
|
+
/** Minimal TOML reader for Codex `[mcp_servers.<name>]` blocks. */
|
|
325
|
+
function parseCodexToml(text) {
|
|
326
|
+
const out = {};
|
|
327
|
+
let current;
|
|
328
|
+
for (const line of text.split("\n")) {
|
|
329
|
+
const header = /^\s*\[mcp_servers\.([^\]]+)\]\s*$/.exec(line);
|
|
330
|
+
if (header && header[1]) {
|
|
331
|
+
current = header[1].replace(/["']/g, "");
|
|
332
|
+
out[current] = { transport: "stdio", args: [] };
|
|
333
|
+
continue;
|
|
334
|
+
}
|
|
335
|
+
if (!current)
|
|
336
|
+
continue;
|
|
337
|
+
const entry = out[current];
|
|
338
|
+
if (!entry)
|
|
339
|
+
continue;
|
|
340
|
+
const cmd = /^\s*command\s*=\s*"([^"]+)"/.exec(line);
|
|
341
|
+
if (cmd)
|
|
342
|
+
entry.command = cmd[1];
|
|
343
|
+
const url = /^\s*url\s*=\s*"([^"]+)"/.exec(line);
|
|
344
|
+
if (url) {
|
|
345
|
+
entry.url = url[1];
|
|
346
|
+
entry.transport = "streamable-http";
|
|
347
|
+
}
|
|
348
|
+
const args = /^\s*args\s*=\s*\[(.*)\]/.exec(line);
|
|
349
|
+
if (args && args[1] !== undefined)
|
|
350
|
+
entry.args = args[1].split(",").map((s) => s.trim().replace(/["']/g, "")).filter(Boolean);
|
|
351
|
+
}
|
|
352
|
+
// Drop entries with neither command nor url.
|
|
353
|
+
for (const [k, v] of Object.entries(out))
|
|
354
|
+
if (!v.command && !v.url)
|
|
355
|
+
delete out[k];
|
|
356
|
+
return out;
|
|
357
|
+
}
|
|
358
|
+
function stripJsonComments(text) {
|
|
359
|
+
return text.replace(/\/\*[\s\S]*?\*\//g, "").replace(/(^|[^:])\/\/.*$/gm, "$1");
|
|
169
360
|
}
|
|
170
361
|
async function requireCli(cmd, args, hint) {
|
|
171
362
|
if (!(await commandExists(cmd)))
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"adapters.js","sourceRoot":"","sources":["../../src/tools/adapters.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"adapters.js","sourceRoot":"","sources":["../../src/tools/adapters.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"adb.d.ts","sourceRoot":"","sources":["../../src/tools/adb.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,eAAe,CAAC;AAc7C,wBAAgB,gBAAgB,CAAC,EAAE,EAAE,OAAO,GAAG,IAAI,
|
|
1
|
+
{"version":3,"file":"adb.d.ts","sourceRoot":"","sources":["../../src/tools/adb.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,eAAe,CAAC;AAc7C,wBAAgB,gBAAgB,CAAC,EAAE,EAAE,OAAO,GAAG,IAAI,CAwFlD"}
|
|
@@ -56,5 +56,47 @@ export function registerAdbTools(gw) {
|
|
|
56
56
|
return { output: await adb(["install", "-r", resolved], i.serial) };
|
|
57
57
|
},
|
|
58
58
|
});
|
|
59
|
+
r.register({ name: "adb_uninstall", description: "Uninstall an app by package. Requires approval (risk 3).", risk: 3, inputSchema: dev.extend({ pkg: z.string() }), summarize: (i) => `adb uninstall ${i.pkg}`, handler: async (i) => ({ output: await adb(["uninstall", i.pkg], i.serial) }) });
|
|
60
|
+
r.register({ name: "adb_screen_size", description: "Get the device screen size.", risk: 0, inputSchema: dev, handler: async (i) => ({ output: await adb(["shell", "wm", "size"], i.serial) }) });
|
|
61
|
+
r.register({ name: "adb_current_package", description: "Get the current foreground package name.", risk: 0, inputSchema: dev, handler: async (i) => ({ output: await adb(["shell", "dumpsys", "window", "windows"], i.serial) }) });
|
|
62
|
+
r.register({ name: "adb_dump_ui", description: "Dump the current UI hierarchy (uiautomator).", risk: 1, inputSchema: dev, handler: async (i) => ({ output: await adb(["shell", "uiautomator", "dump", "/dev/tty"], i.serial) }) });
|
|
63
|
+
r.register({
|
|
64
|
+
name: "adb_pull",
|
|
65
|
+
description: "Pull a file from the device into the workspace directory. Risk 3.",
|
|
66
|
+
risk: 3,
|
|
67
|
+
inputSchema: dev.extend({ devicePath: z.string(), localName: z.string().optional() }),
|
|
68
|
+
summarize: (i) => `adb pull ${i.devicePath}`,
|
|
69
|
+
handler: async (i) => {
|
|
70
|
+
const dest = path.join(gw.paths.workspaceDir, i.localName ?? `adb-pull-${Date.now()}`);
|
|
71
|
+
gw.pathGuard.assertAccess(dest, "write");
|
|
72
|
+
return { output: await adb(["pull", i.devicePath, dest], i.serial), localPath: dest };
|
|
73
|
+
},
|
|
74
|
+
});
|
|
75
|
+
r.register({
|
|
76
|
+
name: "adb_push",
|
|
77
|
+
description: "Push a local file (inside an allowed directory) to the device. Risk 3.",
|
|
78
|
+
risk: 3,
|
|
79
|
+
inputSchema: dev.extend({ localPath: z.string(), devicePath: z.string() }),
|
|
80
|
+
summarize: (i) => `adb push ${i.localPath}`,
|
|
81
|
+
handler: async (i) => {
|
|
82
|
+
const resolved = gw.pathGuard.assertAccess(i.localPath, "read");
|
|
83
|
+
return { output: await adb(["push", resolved, i.devicePath], i.serial) };
|
|
84
|
+
},
|
|
85
|
+
});
|
|
86
|
+
r.register({
|
|
87
|
+
name: "adb_shell",
|
|
88
|
+
description: "Run an adb shell command. Dangerous commands (rm -rf, reboot, wipe, …) are rejected. Risk 3.",
|
|
89
|
+
risk: 3,
|
|
90
|
+
inputSchema: dev.extend({ command: z.string() }),
|
|
91
|
+
summarize: (i) => `adb shell ${i.command.slice(0, 60)}`,
|
|
92
|
+
handler: async (i) => {
|
|
93
|
+
const lower = i.command.toLowerCase();
|
|
94
|
+
const dangerous = ["rm -rf", "reboot", "wipe", "format", "dd ", "mkfs", "fastboot", "pm clear"];
|
|
95
|
+
if (dangerous.some((d) => lower.includes(d))) {
|
|
96
|
+
throw new Error(`adb_shell rejected: '${i.command}' contains a dangerous operation.`);
|
|
97
|
+
}
|
|
98
|
+
return { output: await adb(["shell", ...i.command.split(" ")], i.serial) };
|
|
99
|
+
},
|
|
100
|
+
});
|
|
59
101
|
}
|
|
60
102
|
//# sourceMappingURL=adb.js.map
|