localant 1.0.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/LICENSE +21 -0
- package/README.md +290 -0
- package/SECURITY.md +87 -0
- package/examples/skills/hello-world/CHANGELOG.md +4 -0
- package/examples/skills/hello-world/LICENSE +1 -0
- package/examples/skills/hello-world/README.md +20 -0
- package/examples/skills/hello-world/examples/example.json +1 -0
- package/examples/skills/hello-world/package.json +9 -0
- package/examples/skills/hello-world/skill.json +32 -0
- package/examples/skills/hello-world/src/index.ts +19 -0
- package/examples/skills/hello-world/tests/index.test.ts +19 -0
- package/package.json +63 -0
- package/packages/cli/dist/bin.d.ts +3 -0
- package/packages/cli/dist/bin.d.ts.map +1 -0
- package/packages/cli/dist/bin.js +261 -0
- package/packages/cli/dist/bin.js.map +1 -0
- package/packages/cli/dist/doctor.d.ts +3 -0
- package/packages/cli/dist/doctor.d.ts.map +1 -0
- package/packages/cli/dist/doctor.js +35 -0
- package/packages/cli/dist/doctor.js.map +1 -0
- package/packages/cli/dist/index.d.ts +3 -0
- package/packages/cli/dist/index.d.ts.map +1 -0
- package/packages/cli/dist/index.js +3 -0
- package/packages/cli/dist/index.js.map +1 -0
- package/packages/cli/dist/runtime.d.ts +11 -0
- package/packages/cli/dist/runtime.d.ts.map +1 -0
- package/packages/cli/dist/runtime.js +82 -0
- package/packages/cli/dist/runtime.js.map +1 -0
- package/packages/cli/dist/util.d.ts +18 -0
- package/packages/cli/dist/util.d.ts.map +1 -0
- package/packages/cli/dist/util.js +47 -0
- package/packages/cli/dist/util.js.map +1 -0
- package/packages/cli/package.json +19 -0
- package/packages/dashboard/dist/index.d.ts +10 -0
- package/packages/dashboard/dist/index.d.ts.map +1 -0
- package/packages/dashboard/dist/index.js +178 -0
- package/packages/dashboard/dist/index.js.map +1 -0
- package/packages/dashboard/package.json +10 -0
- package/packages/gateway/dist/gateway.d.ts +85 -0
- package/packages/gateway/dist/gateway.d.ts.map +1 -0
- package/packages/gateway/dist/gateway.js +234 -0
- package/packages/gateway/dist/gateway.js.map +1 -0
- package/packages/gateway/dist/index.d.ts +13 -0
- package/packages/gateway/dist/index.d.ts.map +1 -0
- package/packages/gateway/dist/index.js +16 -0
- package/packages/gateway/dist/index.js.map +1 -0
- package/packages/gateway/dist/managers/coding-agent-manager.d.ts +71 -0
- package/packages/gateway/dist/managers/coding-agent-manager.d.ts.map +1 -0
- package/packages/gateway/dist/managers/coding-agent-manager.js +179 -0
- package/packages/gateway/dist/managers/coding-agent-manager.js.map +1 -0
- package/packages/gateway/dist/managers/fs-manager.d.ts +63 -0
- package/packages/gateway/dist/managers/fs-manager.d.ts.map +1 -0
- package/packages/gateway/dist/managers/fs-manager.js +229 -0
- package/packages/gateway/dist/managers/fs-manager.js.map +1 -0
- package/packages/gateway/dist/managers/git-manager.d.ts +21 -0
- package/packages/gateway/dist/managers/git-manager.d.ts.map +1 -0
- package/packages/gateway/dist/managers/git-manager.js +67 -0
- package/packages/gateway/dist/managers/git-manager.js.map +1 -0
- package/packages/gateway/dist/managers/mcp-bridge.d.ts +26 -0
- package/packages/gateway/dist/managers/mcp-bridge.d.ts.map +1 -0
- package/packages/gateway/dist/managers/mcp-bridge.js +92 -0
- package/packages/gateway/dist/managers/mcp-bridge.js.map +1 -0
- package/packages/gateway/dist/managers/project-registry.d.ts +17 -0
- package/packages/gateway/dist/managers/project-registry.d.ts.map +1 -0
- package/packages/gateway/dist/managers/project-registry.js +90 -0
- package/packages/gateway/dist/managers/project-registry.js.map +1 -0
- package/packages/gateway/dist/managers/shell-manager.d.ts +48 -0
- package/packages/gateway/dist/managers/shell-manager.d.ts.map +1 -0
- package/packages/gateway/dist/managers/shell-manager.js +132 -0
- package/packages/gateway/dist/managers/shell-manager.js.map +1 -0
- package/packages/gateway/dist/managers/skill-runtime.d.ts +37 -0
- package/packages/gateway/dist/managers/skill-runtime.d.ts.map +1 -0
- package/packages/gateway/dist/managers/skill-runtime.js +310 -0
- package/packages/gateway/dist/managers/skill-runtime.js.map +1 -0
- package/packages/gateway/dist/managers/tunnel-manager.d.ts +23 -0
- package/packages/gateway/dist/managers/tunnel-manager.d.ts.map +1 -0
- package/packages/gateway/dist/managers/tunnel-manager.js +106 -0
- package/packages/gateway/dist/managers/tunnel-manager.js.map +1 -0
- package/packages/gateway/dist/registry.d.ts +28 -0
- package/packages/gateway/dist/registry.d.ts.map +1 -0
- package/packages/gateway/dist/registry.js +20 -0
- package/packages/gateway/dist/registry.js.map +1 -0
- package/packages/gateway/dist/security/command-guard.d.ts +35 -0
- package/packages/gateway/dist/security/command-guard.d.ts.map +1 -0
- package/packages/gateway/dist/security/command-guard.js +105 -0
- package/packages/gateway/dist/security/command-guard.js.map +1 -0
- package/packages/gateway/dist/security/path-guard.d.ts +31 -0
- package/packages/gateway/dist/security/path-guard.d.ts.map +1 -0
- package/packages/gateway/dist/security/path-guard.js +101 -0
- package/packages/gateway/dist/security/path-guard.js.map +1 -0
- package/packages/gateway/dist/skill-runner.d.ts +2 -0
- package/packages/gateway/dist/skill-runner.d.ts.map +1 -0
- package/packages/gateway/dist/skill-runner.js +38 -0
- package/packages/gateway/dist/skill-runner.js.map +1 -0
- package/packages/gateway/dist/stores/approval-store.d.ts +34 -0
- package/packages/gateway/dist/stores/approval-store.d.ts.map +1 -0
- package/packages/gateway/dist/stores/approval-store.js +108 -0
- package/packages/gateway/dist/stores/approval-store.js.map +1 -0
- package/packages/gateway/dist/stores/audit-log.d.ts +23 -0
- package/packages/gateway/dist/stores/audit-log.d.ts.map +1 -0
- package/packages/gateway/dist/stores/audit-log.js +70 -0
- package/packages/gateway/dist/stores/audit-log.js.map +1 -0
- package/packages/gateway/dist/stores/config-store.d.ts +14 -0
- package/packages/gateway/dist/stores/config-store.d.ts.map +1 -0
- package/packages/gateway/dist/stores/config-store.js +57 -0
- package/packages/gateway/dist/stores/config-store.js.map +1 -0
- package/packages/gateway/dist/stores/secret-vault.d.ts +23 -0
- package/packages/gateway/dist/stores/secret-vault.d.ts.map +1 -0
- package/packages/gateway/dist/stores/secret-vault.js +74 -0
- package/packages/gateway/dist/stores/secret-vault.js.map +1 -0
- package/packages/gateway/dist/tools/adapters.d.ts +8 -0
- package/packages/gateway/dist/tools/adapters.d.ts.map +1 -0
- package/packages/gateway/dist/tools/adapters.js +178 -0
- package/packages/gateway/dist/tools/adapters.js.map +1 -0
- package/packages/gateway/dist/tools/adb.d.ts +3 -0
- package/packages/gateway/dist/tools/adb.d.ts.map +1 -0
- package/packages/gateway/dist/tools/adb.js +60 -0
- package/packages/gateway/dist/tools/adb.js.map +1 -0
- package/packages/gateway/dist/tools/article.d.ts +3 -0
- package/packages/gateway/dist/tools/article.d.ts.map +1 -0
- package/packages/gateway/dist/tools/article.js +230 -0
- package/packages/gateway/dist/tools/article.js.map +1 -0
- package/packages/gateway/dist/tools/audit-approval.d.ts +4 -0
- package/packages/gateway/dist/tools/audit-approval.d.ts.map +1 -0
- package/packages/gateway/dist/tools/audit-approval.js +64 -0
- package/packages/gateway/dist/tools/audit-approval.js.map +1 -0
- package/packages/gateway/dist/tools/browser.d.ts +3 -0
- package/packages/gateway/dist/tools/browser.d.ts.map +1 -0
- package/packages/gateway/dist/tools/browser.js +55 -0
- package/packages/gateway/dist/tools/browser.js.map +1 -0
- package/packages/gateway/dist/tools/coding-agent.d.ts +3 -0
- package/packages/gateway/dist/tools/coding-agent.d.ts.map +1 -0
- package/packages/gateway/dist/tools/coding-agent.js +103 -0
- package/packages/gateway/dist/tools/coding-agent.js.map +1 -0
- package/packages/gateway/dist/tools/filesystem.d.ts +3 -0
- package/packages/gateway/dist/tools/filesystem.d.ts.map +1 -0
- package/packages/gateway/dist/tools/filesystem.js +141 -0
- package/packages/gateway/dist/tools/filesystem.js.map +1 -0
- package/packages/gateway/dist/tools/git.d.ts +3 -0
- package/packages/gateway/dist/tools/git.d.ts.map +1 -0
- package/packages/gateway/dist/tools/git.js +92 -0
- package/packages/gateway/dist/tools/git.js.map +1 -0
- package/packages/gateway/dist/tools/index.d.ts +4 -0
- package/packages/gateway/dist/tools/index.d.ts.map +1 -0
- package/packages/gateway/dist/tools/index.js +29 -0
- package/packages/gateway/dist/tools/index.js.map +1 -0
- package/packages/gateway/dist/tools/project.d.ts +3 -0
- package/packages/gateway/dist/tools/project.d.ts.map +1 -0
- package/packages/gateway/dist/tools/project.js +86 -0
- package/packages/gateway/dist/tools/project.js.map +1 -0
- package/packages/gateway/dist/tools/shell.d.ts +3 -0
- package/packages/gateway/dist/tools/shell.d.ts.map +1 -0
- package/packages/gateway/dist/tools/shell.js +98 -0
- package/packages/gateway/dist/tools/shell.js.map +1 -0
- package/packages/gateway/dist/tools/skill.d.ts +3 -0
- package/packages/gateway/dist/tools/skill.d.ts.map +1 -0
- package/packages/gateway/dist/tools/skill.js +231 -0
- package/packages/gateway/dist/tools/skill.js.map +1 -0
- package/packages/gateway/dist/tools/system.d.ts +3 -0
- package/packages/gateway/dist/tools/system.d.ts.map +1 -0
- package/packages/gateway/dist/tools/system.js +78 -0
- package/packages/gateway/dist/tools/system.js.map +1 -0
- package/packages/gateway/dist/util/exec.d.ts +21 -0
- package/packages/gateway/dist/util/exec.d.ts.map +1 -0
- package/packages/gateway/dist/util/exec.js +50 -0
- package/packages/gateway/dist/util/exec.js.map +1 -0
- package/packages/gateway/package.json +18 -0
- package/packages/mcp/dist/http-server.d.ts +16 -0
- package/packages/mcp/dist/http-server.d.ts.map +1 -0
- package/packages/mcp/dist/http-server.js +138 -0
- package/packages/mcp/dist/http-server.js.map +1 -0
- package/packages/mcp/dist/index.d.ts +4 -0
- package/packages/mcp/dist/index.d.ts.map +1 -0
- package/packages/mcp/dist/index.js +3 -0
- package/packages/mcp/dist/index.js.map +1 -0
- package/packages/mcp/dist/mcp-server.d.ts +9 -0
- package/packages/mcp/dist/mcp-server.d.ts.map +1 -0
- package/packages/mcp/dist/mcp-server.js +26 -0
- package/packages/mcp/dist/mcp-server.js.map +1 -0
- package/packages/mcp/package.json +18 -0
- package/packages/shared/dist/config.d.ts +314 -0
- package/packages/shared/dist/config.d.ts.map +1 -0
- package/packages/shared/dist/config.js +146 -0
- package/packages/shared/dist/config.js.map +1 -0
- package/packages/shared/dist/index.d.ts +8 -0
- package/packages/shared/dist/index.d.ts.map +1 -0
- package/packages/shared/dist/index.js +8 -0
- package/packages/shared/dist/index.js.map +1 -0
- package/packages/shared/dist/logger.d.ts +8 -0
- package/packages/shared/dist/logger.d.ts.map +1 -0
- package/packages/shared/dist/logger.js +26 -0
- package/packages/shared/dist/logger.js.map +1 -0
- package/packages/shared/dist/net.d.ts +10 -0
- package/packages/shared/dist/net.d.ts.map +1 -0
- package/packages/shared/dist/net.js +35 -0
- package/packages/shared/dist/net.js.map +1 -0
- package/packages/shared/dist/paths.d.ts +30 -0
- package/packages/shared/dist/paths.d.ts.map +1 -0
- package/packages/shared/dist/paths.js +70 -0
- package/packages/shared/dist/paths.js.map +1 -0
- package/packages/shared/dist/redaction.d.ts +15 -0
- package/packages/shared/dist/redaction.d.ts.map +1 -0
- package/packages/shared/dist/redaction.js +58 -0
- package/packages/shared/dist/redaction.js.map +1 -0
- package/packages/shared/dist/risk.d.ts +23 -0
- package/packages/shared/dist/risk.d.ts.map +1 -0
- package/packages/shared/dist/risk.js +28 -0
- package/packages/shared/dist/risk.js.map +1 -0
- package/packages/shared/dist/types.d.ts +94 -0
- package/packages/shared/dist/types.d.ts.map +1 -0
- package/packages/shared/dist/types.js +2 -0
- package/packages/shared/dist/types.js.map +1 -0
- package/packages/shared/package.json +13 -0
- package/packages/skill-sdk/dist/index.d.ts +36 -0
- package/packages/skill-sdk/dist/index.d.ts.map +1 -0
- package/packages/skill-sdk/dist/index.js +20 -0
- package/packages/skill-sdk/dist/index.js.map +1 -0
- package/packages/skill-sdk/package.json +14 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"net.js","sourceRoot":"","sources":["../src/net.ts"],"names":[],"mappings":"AAAA,OAAO,GAAG,MAAM,UAAU,CAAC;AAE3B,iEAAiE;AACjE,SAAS,UAAU,CAAC,IAAY,EAAE,IAAY;IAC5C,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE;QAC7B,MAAM,MAAM,GAAG,GAAG,CAAC,YAAY,EAAE,CAAC;QAClC,MAAM,CAAC,IAAI,CAAC,OAAO,EAAE,GAAG,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC;QAC3C,MAAM,CAAC,IAAI,CAAC,WAAW,EAAE,GAAG,EAAE;YAC5B,MAAM,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC;QACpC,CAAC,CAAC,CAAC;QACH,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;IAC5B,CAAC,CAAC,CAAC;AACL,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,CAAC,KAAK,UAAU,iBAAiB,CACrC,SAAiB,EACjB,IAAI,GAAG,WAAW,EAClB,OAAiB,EAAE,EACnB,QAAQ,GAAG,EAAE;IAEb,MAAM,KAAK,GAAG,IAAI,GAAG,CAAC,IAAI,CAAC,CAAC;IAC5B,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,QAAQ,EAAE,CAAC,EAAE,EAAE,CAAC;QAClC,MAAM,IAAI,GAAG,SAAS,GAAG,CAAC,CAAC;QAC3B,IAAI,IAAI,GAAG,KAAK;YAAE,MAAM;QACxB,IAAI,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC;YAAE,SAAS;QAC9B,IAAI,MAAM,UAAU,CAAC,IAAI,EAAE,IAAI,CAAC;YAAE,OAAO,IAAI,CAAC;IAChD,CAAC;IACD,MAAM,IAAI,KAAK,CACb,2BAA2B,SAAS,OAAO,IAAI,WAAW,QAAQ,KAAK;QACrE,iDAAiD,CACpD,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Resolve the per-OS configuration directory.
|
|
3
|
+
* - macOS: ~/Library/Application Support/LocalAnt
|
|
4
|
+
* - Windows: %APPDATA%/LocalAnt
|
|
5
|
+
* - Linux: $XDG_CONFIG_HOME/LocalAnt or ~/.config/LocalAnt
|
|
6
|
+
*/
|
|
7
|
+
export declare function configDir(): string;
|
|
8
|
+
export interface AppPaths {
|
|
9
|
+
root: string;
|
|
10
|
+
configFile: string;
|
|
11
|
+
tokenFile: string;
|
|
12
|
+
auditLog: string;
|
|
13
|
+
approvalsFile: string;
|
|
14
|
+
secretsFile: string;
|
|
15
|
+
pidFile: string;
|
|
16
|
+
runtimeFile: string;
|
|
17
|
+
skillsDir: string;
|
|
18
|
+
backupsDir: string;
|
|
19
|
+
workspaceDir: string;
|
|
20
|
+
logsDir: string;
|
|
21
|
+
}
|
|
22
|
+
export declare function appPaths(base?: string): AppPaths;
|
|
23
|
+
export declare function defaultAllowedDirectories(): string[];
|
|
24
|
+
/**
|
|
25
|
+
* Paths that must never be readable or writable regardless of allowlist.
|
|
26
|
+
* Matched as path prefixes after normalization.
|
|
27
|
+
*/
|
|
28
|
+
export declare function sensitiveBlocklist(): string[];
|
|
29
|
+
export declare const APP_DISPLAY_NAME = "LocalAnt";
|
|
30
|
+
//# sourceMappingURL=paths.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"paths.d.ts","sourceRoot":"","sources":["../src/paths.ts"],"names":[],"mappings":"AAKA;;;;;GAKG;AACH,wBAAgB,SAAS,IAAI,MAAM,CAYlC;AAED,MAAM,WAAW,QAAQ;IACvB,IAAI,EAAE,MAAM,CAAC;IACb,UAAU,EAAE,MAAM,CAAC;IACnB,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,MAAM,CAAC;IACjB,aAAa,EAAE,MAAM,CAAC;IACtB,WAAW,EAAE,MAAM,CAAC;IACpB,OAAO,EAAE,MAAM,CAAC;IAChB,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE,MAAM,CAAC;IACnB,YAAY,EAAE,MAAM,CAAC;IACrB,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,wBAAgB,QAAQ,CAAC,IAAI,SAAc,GAAG,QAAQ,CAerD;AAED,wBAAgB,yBAAyB,IAAI,MAAM,EAAE,CAOpD;AAED;;;GAGG;AACH,wBAAgB,kBAAkB,IAAI,MAAM,EAAE,CAiB7C;AAED,eAAO,MAAM,gBAAgB,aAAW,CAAC"}
|
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
import os from "node:os";
|
|
2
|
+
import path from "node:path";
|
|
3
|
+
const APP_NAME = "LocalAnt";
|
|
4
|
+
/**
|
|
5
|
+
* Resolve the per-OS configuration directory.
|
|
6
|
+
* - macOS: ~/Library/Application Support/LocalAnt
|
|
7
|
+
* - Windows: %APPDATA%/LocalAnt
|
|
8
|
+
* - Linux: $XDG_CONFIG_HOME/LocalAnt or ~/.config/LocalAnt
|
|
9
|
+
*/
|
|
10
|
+
export function configDir() {
|
|
11
|
+
const home = os.homedir();
|
|
12
|
+
switch (process.platform) {
|
|
13
|
+
case "darwin":
|
|
14
|
+
return path.join(home, "Library", "Application Support", APP_NAME);
|
|
15
|
+
case "win32":
|
|
16
|
+
return path.join(process.env.APPDATA ?? path.join(home, "AppData", "Roaming"), APP_NAME);
|
|
17
|
+
default: {
|
|
18
|
+
const xdg = process.env.XDG_CONFIG_HOME;
|
|
19
|
+
return path.join(xdg && xdg.trim() ? xdg : path.join(home, ".config"), APP_NAME);
|
|
20
|
+
}
|
|
21
|
+
}
|
|
22
|
+
}
|
|
23
|
+
export function appPaths(base = configDir()) {
|
|
24
|
+
return {
|
|
25
|
+
root: base,
|
|
26
|
+
configFile: path.join(base, "config.json"),
|
|
27
|
+
tokenFile: path.join(base, "token"),
|
|
28
|
+
auditLog: path.join(base, "audit", "audit.jsonl"),
|
|
29
|
+
approvalsFile: path.join(base, "approvals.json"),
|
|
30
|
+
secretsFile: path.join(base, "secrets.json"),
|
|
31
|
+
pidFile: path.join(base, "gateway.pid"),
|
|
32
|
+
runtimeFile: path.join(base, "runtime.json"),
|
|
33
|
+
skillsDir: path.join(base, "skills"),
|
|
34
|
+
backupsDir: path.join(base, "backups"),
|
|
35
|
+
workspaceDir: path.join(base, "workspace"),
|
|
36
|
+
logsDir: path.join(base, "logs"),
|
|
37
|
+
};
|
|
38
|
+
}
|
|
39
|
+
export function defaultAllowedDirectories() {
|
|
40
|
+
const home = os.homedir();
|
|
41
|
+
return [
|
|
42
|
+
path.join(home, "Projects"),
|
|
43
|
+
path.join(home, "Developer"),
|
|
44
|
+
path.join(home, "Documents", APP_NAME),
|
|
45
|
+
];
|
|
46
|
+
}
|
|
47
|
+
/**
|
|
48
|
+
* Paths that must never be readable or writable regardless of allowlist.
|
|
49
|
+
* Matched as path prefixes after normalization.
|
|
50
|
+
*/
|
|
51
|
+
export function sensitiveBlocklist() {
|
|
52
|
+
const home = os.homedir();
|
|
53
|
+
const common = [
|
|
54
|
+
path.join(home, ".ssh"),
|
|
55
|
+
path.join(home, ".gnupg"),
|
|
56
|
+
path.join(home, ".aws"),
|
|
57
|
+
path.join(home, ".config", "gcloud"),
|
|
58
|
+
path.join(home, ".npmrc"),
|
|
59
|
+
path.join(home, ".netrc"),
|
|
60
|
+
];
|
|
61
|
+
if (process.platform === "darwin") {
|
|
62
|
+
return [...common, path.join(home, "Library", "Keychains"), "/private", "/etc", "/var", "/System"];
|
|
63
|
+
}
|
|
64
|
+
if (process.platform === "win32") {
|
|
65
|
+
return [...common, "C:\\Windows", "C:\\Program Files", "C:\\Program Files (x86)"];
|
|
66
|
+
}
|
|
67
|
+
return [...common, "/etc", "/var", "/sys", "/proc", "/boot"];
|
|
68
|
+
}
|
|
69
|
+
export const APP_DISPLAY_NAME = APP_NAME;
|
|
70
|
+
//# sourceMappingURL=paths.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"paths.js","sourceRoot":"","sources":["../src/paths.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Secret redaction utilities. Secrets must never appear in tool responses
|
|
3
|
+
* or in the audit log. We redact both known secret values and high-entropy
|
|
4
|
+
* token-shaped strings.
|
|
5
|
+
*/
|
|
6
|
+
/**
|
|
7
|
+
* Redact known secret values (exact substrings) plus token-shaped strings.
|
|
8
|
+
* @param knownSecrets explicit secret values to scrub (e.g. vault contents).
|
|
9
|
+
*/
|
|
10
|
+
export declare function redact(input: string, knownSecrets?: string[]): string;
|
|
11
|
+
/** Recursively redact strings inside an arbitrary JSON-like value. */
|
|
12
|
+
export declare function redactDeep<T>(value: T, knownSecrets?: string[]): T;
|
|
13
|
+
/** Truncate a string to a max length, appending a marker when cut. */
|
|
14
|
+
export declare function truncate(input: string, max: number): string;
|
|
15
|
+
//# sourceMappingURL=redaction.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"redaction.d.ts","sourceRoot":"","sources":["../src/redaction.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAgBH;;;GAGG;AACH,wBAAgB,MAAM,CAAC,KAAK,EAAE,MAAM,EAAE,YAAY,GAAE,MAAM,EAAO,GAAG,MAAM,CAWzE;AAED,sEAAsE;AACtE,wBAAgB,UAAU,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,YAAY,GAAE,MAAM,EAAO,GAAG,CAAC,CAetE;AAED,sEAAsE;AACtE,wBAAgB,QAAQ,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,MAAM,CAI3D"}
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Secret redaction utilities. Secrets must never appear in tool responses
|
|
3
|
+
* or in the audit log. We redact both known secret values and high-entropy
|
|
4
|
+
* token-shaped strings.
|
|
5
|
+
*/
|
|
6
|
+
const TOKEN_PATTERNS = [
|
|
7
|
+
// Common API key / token shapes
|
|
8
|
+
/\b(sk|pk|rk)-[A-Za-z0-9_-]{16,}\b/g,
|
|
9
|
+
/\bghp_[A-Za-z0-9]{20,}\b/g,
|
|
10
|
+
/\bgithub_pat_[A-Za-z0-9_]{20,}\b/g,
|
|
11
|
+
/\bxox[baprs]-[A-Za-z0-9-]{10,}\b/g,
|
|
12
|
+
/\bAKIA[0-9A-Z]{16}\b/g,
|
|
13
|
+
/\bey[A-Za-z0-9_-]{10,}\.[A-Za-z0-9_-]{10,}\.[A-Za-z0-9_-]{10,}\b/g, // JWT
|
|
14
|
+
// Authorization headers
|
|
15
|
+
/(Authorization:\s*Bearer\s+)[A-Za-z0-9._-]+/gi,
|
|
16
|
+
];
|
|
17
|
+
const REDACTED = "«redacted»";
|
|
18
|
+
/**
|
|
19
|
+
* Redact known secret values (exact substrings) plus token-shaped strings.
|
|
20
|
+
* @param knownSecrets explicit secret values to scrub (e.g. vault contents).
|
|
21
|
+
*/
|
|
22
|
+
export function redact(input, knownSecrets = []) {
|
|
23
|
+
let out = input;
|
|
24
|
+
for (const secret of knownSecrets) {
|
|
25
|
+
if (secret && secret.length >= 4) {
|
|
26
|
+
out = out.split(secret).join(REDACTED);
|
|
27
|
+
}
|
|
28
|
+
}
|
|
29
|
+
for (const pattern of TOKEN_PATTERNS) {
|
|
30
|
+
out = out.replace(pattern, (m, p1) => (p1 ? `${p1}${REDACTED}` : REDACTED));
|
|
31
|
+
}
|
|
32
|
+
return out;
|
|
33
|
+
}
|
|
34
|
+
/** Recursively redact strings inside an arbitrary JSON-like value. */
|
|
35
|
+
export function redactDeep(value, knownSecrets = []) {
|
|
36
|
+
if (typeof value === "string") {
|
|
37
|
+
return redact(value, knownSecrets);
|
|
38
|
+
}
|
|
39
|
+
if (Array.isArray(value)) {
|
|
40
|
+
return value.map((v) => redactDeep(v, knownSecrets));
|
|
41
|
+
}
|
|
42
|
+
if (value && typeof value === "object") {
|
|
43
|
+
const out = {};
|
|
44
|
+
for (const [k, v] of Object.entries(value)) {
|
|
45
|
+
out[k] = redactDeep(v, knownSecrets);
|
|
46
|
+
}
|
|
47
|
+
return out;
|
|
48
|
+
}
|
|
49
|
+
return value;
|
|
50
|
+
}
|
|
51
|
+
/** Truncate a string to a max length, appending a marker when cut. */
|
|
52
|
+
export function truncate(input, max) {
|
|
53
|
+
if (input.length <= max)
|
|
54
|
+
return input;
|
|
55
|
+
const omitted = input.length - max;
|
|
56
|
+
return `${input.slice(0, max)}\n… [truncated ${omitted} chars]`;
|
|
57
|
+
}
|
|
58
|
+
//# sourceMappingURL=redaction.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"redaction.js","sourceRoot":"","sources":["../src/redaction.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,MAAM,cAAc,GAAa;IAC/B,gCAAgC;IAChC,oCAAoC;IACpC,2BAA2B;IAC3B,mCAAmC;IACnC,mCAAmC;IACnC,uBAAuB;IACvB,mEAAmE,EAAE,MAAM;IAC3E,wBAAwB;IACxB,+CAA+C;CAChD,CAAC;AAEF,MAAM,QAAQ,GAAG,YAAY,CAAC;AAE9B;;;GAGG;AACH,MAAM,UAAU,MAAM,CAAC,KAAa,EAAE,eAAyB,EAAE;IAC/D,IAAI,GAAG,GAAG,KAAK,CAAC;IAChB,KAAK,MAAM,MAAM,IAAI,YAAY,EAAE,CAAC;QAClC,IAAI,MAAM,IAAI,MAAM,CAAC,MAAM,IAAI,CAAC,EAAE,CAAC;YACjC,GAAG,GAAG,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QACzC,CAAC;IACH,CAAC;IACD,KAAK,MAAM,OAAO,IAAI,cAAc,EAAE,CAAC;QACrC,GAAG,GAAG,GAAG,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC,CAAC,EAAE,EAAW,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,EAAE,GAAG,QAAQ,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC;IACvF,CAAC;IACD,OAAO,GAAG,CAAC;AACb,CAAC;AAED,sEAAsE;AACtE,MAAM,UAAU,UAAU,CAAI,KAAQ,EAAE,eAAyB,EAAE;IACjE,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;QAC9B,OAAO,MAAM,CAAC,KAAK,EAAE,YAAY,CAAiB,CAAC;IACrD,CAAC;IACD,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;QACzB,OAAO,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,UAAU,CAAC,CAAC,EAAE,YAAY,CAAC,CAAiB,CAAC;IACvE,CAAC;IACD,IAAI,KAAK,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;QACvC,MAAM,GAAG,GAA4B,EAAE,CAAC;QACxC,KAAK,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;YAC3C,GAAG,CAAC,CAAC,CAAC,GAAG,UAAU,CAAC,CAAC,EAAE,YAAY,CAAC,CAAC;QACvC,CAAC;QACD,OAAO,GAAmB,CAAC;IAC7B,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AAED,sEAAsE;AACtE,MAAM,UAAU,QAAQ,CAAC,KAAa,EAAE,GAAW;IACjD,IAAI,KAAK,CAAC,MAAM,IAAI,GAAG;QAAE,OAAO,KAAK,CAAC;IACtC,MAAM,OAAO,GAAG,KAAK,CAAC,MAAM,GAAG,GAAG,CAAC;IACnC,OAAO,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,kBAAkB,OAAO,SAAS,CAAC;AAClE,CAAC"}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Risk levels assigned to every tool. Higher = more dangerous.
|
|
3
|
+
*
|
|
4
|
+
* 0: read only
|
|
5
|
+
* 1: safe write draft (no existing data destroyed)
|
|
6
|
+
* 2: file modification
|
|
7
|
+
* 3: shell / agent / network write
|
|
8
|
+
* 4: destructive / publish / deploy / external irreversible action
|
|
9
|
+
*/
|
|
10
|
+
export type RiskLevel = 0 | 1 | 2 | 3 | 4;
|
|
11
|
+
export declare const RISK_LABELS: Record<RiskLevel, string>;
|
|
12
|
+
export type ApprovalRequirement = "none" | "single" | "double";
|
|
13
|
+
export interface RiskPolicy {
|
|
14
|
+
/** Require approval for risk level 1 tools. Default false. */
|
|
15
|
+
approveRisk1: boolean;
|
|
16
|
+
}
|
|
17
|
+
export declare const DEFAULT_RISK_POLICY: RiskPolicy;
|
|
18
|
+
/**
|
|
19
|
+
* Determine whether a tool invocation requires local approval and how strong.
|
|
20
|
+
* ChatGPT-side confirmation is never trusted on its own.
|
|
21
|
+
*/
|
|
22
|
+
export declare function approvalFor(risk: RiskLevel, policy?: RiskPolicy): ApprovalRequirement;
|
|
23
|
+
//# sourceMappingURL=risk.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"risk.d.ts","sourceRoot":"","sources":["../src/risk.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AACH,MAAM,MAAM,SAAS,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;AAE1C,eAAO,MAAM,WAAW,EAAE,MAAM,CAAC,SAAS,EAAE,MAAM,CAMjD,CAAC;AAEF,MAAM,MAAM,mBAAmB,GAAG,MAAM,GAAG,QAAQ,GAAG,QAAQ,CAAC;AAE/D,MAAM,WAAW,UAAU;IACzB,8DAA8D;IAC9D,YAAY,EAAE,OAAO,CAAC;CACvB;AAED,eAAO,MAAM,mBAAmB,EAAE,UAAoC,CAAC;AAEvE;;;GAGG;AACH,wBAAgB,WAAW,CAAC,IAAI,EAAE,SAAS,EAAE,MAAM,GAAE,UAAgC,GAAG,mBAAmB,CAc1G"}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
export const RISK_LABELS = {
|
|
2
|
+
0: "read-only",
|
|
3
|
+
1: "safe-write-draft",
|
|
4
|
+
2: "file-modification",
|
|
5
|
+
3: "shell/agent/network-write",
|
|
6
|
+
4: "destructive/publish/deploy",
|
|
7
|
+
};
|
|
8
|
+
export const DEFAULT_RISK_POLICY = { approveRisk1: false };
|
|
9
|
+
/**
|
|
10
|
+
* Determine whether a tool invocation requires local approval and how strong.
|
|
11
|
+
* ChatGPT-side confirmation is never trusted on its own.
|
|
12
|
+
*/
|
|
13
|
+
export function approvalFor(risk, policy = DEFAULT_RISK_POLICY) {
|
|
14
|
+
switch (risk) {
|
|
15
|
+
case 0:
|
|
16
|
+
return "none";
|
|
17
|
+
case 1:
|
|
18
|
+
return policy.approveRisk1 ? "single" : "none";
|
|
19
|
+
case 2:
|
|
20
|
+
case 3:
|
|
21
|
+
return "single";
|
|
22
|
+
case 4:
|
|
23
|
+
return "double";
|
|
24
|
+
default:
|
|
25
|
+
return "double";
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
//# sourceMappingURL=risk.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"risk.js","sourceRoot":"","sources":["../src/risk.ts"],"names":[],"mappings":"AAWA,MAAM,CAAC,MAAM,WAAW,GAA8B;IACpD,CAAC,EAAE,WAAW;IACd,CAAC,EAAE,kBAAkB;IACrB,CAAC,EAAE,mBAAmB;IACtB,CAAC,EAAE,2BAA2B;IAC9B,CAAC,EAAE,4BAA4B;CAChC,CAAC;AASF,MAAM,CAAC,MAAM,mBAAmB,GAAe,EAAE,YAAY,EAAE,KAAK,EAAE,CAAC;AAEvE;;;GAGG;AACH,MAAM,UAAU,WAAW,CAAC,IAAe,EAAE,SAAqB,mBAAmB;IACnF,QAAQ,IAAI,EAAE,CAAC;QACb,KAAK,CAAC;YACJ,OAAO,MAAM,CAAC;QAChB,KAAK,CAAC;YACJ,OAAO,MAAM,CAAC,YAAY,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC;QACjD,KAAK,CAAC,CAAC;QACP,KAAK,CAAC;YACJ,OAAO,QAAQ,CAAC;QAClB,KAAK,CAAC;YACJ,OAAO,QAAQ,CAAC;QAClB;YACE,OAAO,QAAQ,CAAC;IACpB,CAAC;AACH,CAAC"}
|
|
@@ -0,0 +1,94 @@
|
|
|
1
|
+
import type { RiskLevel } from "./risk.js";
|
|
2
|
+
import type { SkillPermissions } from "./config.js";
|
|
3
|
+
export interface AuditEntry {
|
|
4
|
+
id: string;
|
|
5
|
+
timestamp: string;
|
|
6
|
+
tool: string;
|
|
7
|
+
caller: string;
|
|
8
|
+
risk: RiskLevel;
|
|
9
|
+
inputSummary: string;
|
|
10
|
+
outputSummary: string;
|
|
11
|
+
approval: "not-required" | "approved" | "denied" | "auto";
|
|
12
|
+
durationMs: number;
|
|
13
|
+
error?: string;
|
|
14
|
+
}
|
|
15
|
+
export type ApprovalStatus = "pending" | "approved" | "denied" | "expired";
|
|
16
|
+
export type ApprovalScope = "once" | "session";
|
|
17
|
+
export interface ApprovalRequest {
|
|
18
|
+
id: string;
|
|
19
|
+
createdAt: string;
|
|
20
|
+
resolvedAt?: string;
|
|
21
|
+
status: ApprovalStatus;
|
|
22
|
+
tool: string;
|
|
23
|
+
risk: RiskLevel;
|
|
24
|
+
/** "single" or "double" — double requires two approvals. */
|
|
25
|
+
requirement: "single" | "double";
|
|
26
|
+
approvalsGiven: number;
|
|
27
|
+
reason: string;
|
|
28
|
+
summary: string;
|
|
29
|
+
caller: string;
|
|
30
|
+
sessionId?: string;
|
|
31
|
+
scope?: ApprovalScope;
|
|
32
|
+
}
|
|
33
|
+
export interface ProjectRecord {
|
|
34
|
+
id: string;
|
|
35
|
+
name: string;
|
|
36
|
+
path: string;
|
|
37
|
+
validateCommand?: string;
|
|
38
|
+
testCommand?: string;
|
|
39
|
+
defaultAgent?: string;
|
|
40
|
+
defaultBranch?: string;
|
|
41
|
+
stack?: string[];
|
|
42
|
+
registeredAt: string;
|
|
43
|
+
}
|
|
44
|
+
export interface ToolManifestEntry {
|
|
45
|
+
name: string;
|
|
46
|
+
description: string;
|
|
47
|
+
riskLevel: RiskLevel;
|
|
48
|
+
inputSchema: Record<string, unknown>;
|
|
49
|
+
}
|
|
50
|
+
export interface SkillManifest {
|
|
51
|
+
name: string;
|
|
52
|
+
displayName?: string;
|
|
53
|
+
version: string;
|
|
54
|
+
description: string;
|
|
55
|
+
author?: string;
|
|
56
|
+
license?: string;
|
|
57
|
+
entry: string;
|
|
58
|
+
riskLevel: RiskLevel;
|
|
59
|
+
permissions: SkillPermissions;
|
|
60
|
+
tools: ToolManifestEntry[];
|
|
61
|
+
}
|
|
62
|
+
export interface SkillState {
|
|
63
|
+
manifest: SkillManifest;
|
|
64
|
+
dir: string;
|
|
65
|
+
enabled: boolean;
|
|
66
|
+
generated: boolean;
|
|
67
|
+
installedAt: string;
|
|
68
|
+
source?: string;
|
|
69
|
+
valid: boolean;
|
|
70
|
+
validationErrors: string[];
|
|
71
|
+
}
|
|
72
|
+
export interface RuntimeInfo {
|
|
73
|
+
startedAt: string;
|
|
74
|
+
gatewayUrl: string;
|
|
75
|
+
dashboardUrl?: string;
|
|
76
|
+
mcpEndpoint?: string;
|
|
77
|
+
tunnelUrl?: string;
|
|
78
|
+
tunnelProvider?: string;
|
|
79
|
+
pid: number;
|
|
80
|
+
}
|
|
81
|
+
export interface CodingTask {
|
|
82
|
+
id: string;
|
|
83
|
+
agent: string;
|
|
84
|
+
projectId: string;
|
|
85
|
+
mode: "plan" | "execute";
|
|
86
|
+
task: string;
|
|
87
|
+
status: "queued" | "running" | "completed" | "failed" | "stopped";
|
|
88
|
+
branch?: string;
|
|
89
|
+
createdAt: string;
|
|
90
|
+
finishedAt?: string;
|
|
91
|
+
exitCode?: number;
|
|
92
|
+
approvedPlanId?: string;
|
|
93
|
+
}
|
|
94
|
+
//# sourceMappingURL=types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
import { z } from "zod";
|
|
2
|
+
import type { RiskLevel } from "@localant/shared";
|
|
3
|
+
export { z };
|
|
4
|
+
export type { RiskLevel };
|
|
5
|
+
/** Context handed to every skill tool handler at runtime. */
|
|
6
|
+
export interface SkillContext {
|
|
7
|
+
/** Resolve a named secret the skill is permitted to access. */
|
|
8
|
+
getSecret(name: string): Promise<string | undefined>;
|
|
9
|
+
/** Workspace directory the skill may use for scratch files. */
|
|
10
|
+
workspaceDir: string;
|
|
11
|
+
/** Structured logger scoped to the skill. */
|
|
12
|
+
log: (msg: string, extra?: unknown) => void;
|
|
13
|
+
}
|
|
14
|
+
export interface SkillToolDefinition<I = unknown, O = unknown> {
|
|
15
|
+
description: string;
|
|
16
|
+
riskLevel?: RiskLevel;
|
|
17
|
+
inputSchema: z.ZodType<I>;
|
|
18
|
+
handler: (input: I, ctx: SkillContext) => Promise<O> | O;
|
|
19
|
+
}
|
|
20
|
+
export interface SkillDefinition {
|
|
21
|
+
name: string;
|
|
22
|
+
displayName?: string;
|
|
23
|
+
description?: string;
|
|
24
|
+
version?: string;
|
|
25
|
+
tools: Record<string, SkillToolDefinition>;
|
|
26
|
+
}
|
|
27
|
+
/**
|
|
28
|
+
* Define a local skill. The returned object is consumed by the gateway skill
|
|
29
|
+
* runtime; authors should `export default defineSkill({...})`.
|
|
30
|
+
*/
|
|
31
|
+
export declare function defineSkill(def: SkillDefinition): SkillDefinition;
|
|
32
|
+
/** Helper to convert a Zod schema to a JSON-schema-ish object for manifests. */
|
|
33
|
+
export declare function describeTool(tool: SkillToolDefinition): {
|
|
34
|
+
riskLevel: RiskLevel;
|
|
35
|
+
};
|
|
36
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAElD,OAAO,EAAE,CAAC,EAAE,CAAC;AACb,YAAY,EAAE,SAAS,EAAE,CAAC;AAE1B,6DAA6D;AAC7D,MAAM,WAAW,YAAY;IAC3B,+DAA+D;IAC/D,SAAS,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC,CAAC;IACrD,+DAA+D;IAC/D,YAAY,EAAE,MAAM,CAAC;IACrB,6CAA6C;IAC7C,GAAG,EAAE,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,OAAO,KAAK,IAAI,CAAC;CAC7C;AAED,MAAM,WAAW,mBAAmB,CAAC,CAAC,GAAG,OAAO,EAAE,CAAC,GAAG,OAAO;IAC3D,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,CAAC,EAAE,SAAS,CAAC;IACtB,WAAW,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;IAC1B,OAAO,EAAE,CAAC,KAAK,EAAE,CAAC,EAAE,GAAG,EAAE,YAAY,KAAK,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;CAC1D;AAED,MAAM,WAAW,eAAe;IAC9B,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,mBAAmB,CAAC,CAAC;CAC5C;AAED;;;GAGG;AACH,wBAAgB,WAAW,CAAC,GAAG,EAAE,eAAe,GAAG,eAAe,CAQjE;AAED,gFAAgF;AAChF,wBAAgB,YAAY,CAAC,IAAI,EAAE,mBAAmB,GAAG;IAAE,SAAS,EAAE,SAAS,CAAA;CAAE,CAEhF"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import { z } from "zod";
|
|
2
|
+
export { z };
|
|
3
|
+
/**
|
|
4
|
+
* Define a local skill. The returned object is consumed by the gateway skill
|
|
5
|
+
* runtime; authors should `export default defineSkill({...})`.
|
|
6
|
+
*/
|
|
7
|
+
export function defineSkill(def) {
|
|
8
|
+
if (!def.name || !/^[a-z0-9][a-z0-9-]*$/.test(def.name)) {
|
|
9
|
+
throw new Error(`Invalid skill name: ${def.name}. Use lowercase kebab-case.`);
|
|
10
|
+
}
|
|
11
|
+
if (!def.tools || Object.keys(def.tools).length === 0) {
|
|
12
|
+
throw new Error(`Skill ${def.name} must define at least one tool.`);
|
|
13
|
+
}
|
|
14
|
+
return def;
|
|
15
|
+
}
|
|
16
|
+
/** Helper to convert a Zod schema to a JSON-schema-ish object for manifests. */
|
|
17
|
+
export function describeTool(tool) {
|
|
18
|
+
return { riskLevel: tool.riskLevel ?? 0 };
|
|
19
|
+
}
|
|
20
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAGxB,OAAO,EAAE,CAAC,EAAE,CAAC;AA4Bb;;;GAGG;AACH,MAAM,UAAU,WAAW,CAAC,GAAoB;IAC9C,IAAI,CAAC,GAAG,CAAC,IAAI,IAAI,CAAC,sBAAsB,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC;QACxD,MAAM,IAAI,KAAK,CAAC,uBAAuB,GAAG,CAAC,IAAI,6BAA6B,CAAC,CAAC;IAChF,CAAC;IACD,IAAI,CAAC,GAAG,CAAC,KAAK,IAAI,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACtD,MAAM,IAAI,KAAK,CAAC,SAAS,GAAG,CAAC,IAAI,iCAAiC,CAAC,CAAC;IACtE,CAAC;IACD,OAAO,GAAG,CAAC;AACb,CAAC;AAED,gFAAgF;AAChF,MAAM,UAAU,YAAY,CAAC,IAAyB;IACpD,OAAO,EAAE,SAAS,EAAE,IAAI,CAAC,SAAS,IAAI,CAAC,EAAE,CAAC;AAC5C,CAAC"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@localant/skill-sdk",
|
|
3
|
+
"version": "1.0.0",
|
|
4
|
+
"type": "module",
|
|
5
|
+
"main": "dist/index.js",
|
|
6
|
+
"types": "dist/index.d.ts",
|
|
7
|
+
"exports": {
|
|
8
|
+
".": "./dist/index.js"
|
|
9
|
+
},
|
|
10
|
+
"dependencies": {
|
|
11
|
+
"@localant/shared": "workspace:*",
|
|
12
|
+
"zod": "^3.24.1"
|
|
13
|
+
}
|
|
14
|
+
}
|