pulseed 0.4.9 → 0.4.10
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.md +3 -3
- package/dist/adapters/agents/claude-code-cli.d.ts +8 -1
- package/dist/adapters/agents/claude-code-cli.d.ts.map +1 -1
- package/dist/adapters/agents/claude-code-cli.js +25 -5
- package/dist/adapters/agents/claude-code-cli.js.map +1 -1
- package/dist/adapters/agents/openai-codex.d.ts +4 -0
- package/dist/adapters/agents/openai-codex.d.ts.map +1 -1
- package/dist/adapters/agents/openai-codex.js +16 -2
- package/dist/adapters/agents/openai-codex.js.map +1 -1
- package/dist/base/llm/provider-config.d.ts +11 -0
- package/dist/base/llm/provider-config.d.ts.map +1 -1
- package/dist/base/llm/provider-config.js +5 -0
- package/dist/base/llm/provider-config.js.map +1 -1
- package/dist/base/llm/provider-factory.d.ts.map +1 -1
- package/dist/base/llm/provider-factory.js +9 -3
- package/dist/base/llm/provider-factory.js.map +1 -1
- package/dist/base/utils/paths.d.ts +1 -0
- package/dist/base/utils/paths.d.ts.map +1 -1
- package/dist/base/utils/paths.js +3 -0
- package/dist/base/utils/paths.js.map +1 -1
- package/dist/index.d.ts +10 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +5 -0
- package/dist/index.js.map +1 -1
- package/dist/interface/chat/cross-platform-session.d.ts.map +1 -1
- package/dist/interface/chat/cross-platform-session.js +40 -1
- package/dist/interface/chat/cross-platform-session.js.map +1 -1
- package/dist/interface/cli/cli-command-registry.d.ts.map +1 -1
- package/dist/interface/cli/cli-command-registry.js +5 -1
- package/dist/interface/cli/cli-command-registry.js.map +1 -1
- package/dist/interface/cli/cli-runner.d.ts.map +1 -1
- package/dist/interface/cli/cli-runner.js +4 -0
- package/dist/interface/cli/cli-runner.js.map +1 -1
- package/dist/interface/cli/commands/daemon.d.ts.map +1 -1
- package/dist/interface/cli/commands/daemon.js +44 -15
- package/dist/interface/cli/commands/daemon.js.map +1 -1
- package/dist/interface/cli/commands/schedule/cost.d.ts +3 -0
- package/dist/interface/cli/commands/schedule/cost.d.ts.map +1 -0
- package/dist/interface/cli/commands/schedule/cost.js +84 -0
- package/dist/interface/cli/commands/schedule/cost.js.map +1 -0
- package/dist/interface/cli/commands/schedule/edit.d.ts +4 -0
- package/dist/interface/cli/commands/schedule/edit.d.ts.map +1 -0
- package/dist/interface/cli/commands/schedule/edit.js +92 -0
- package/dist/interface/cli/commands/schedule/edit.js.map +1 -0
- package/dist/interface/cli/commands/schedule/history.d.ts +3 -0
- package/dist/interface/cli/commands/schedule/history.d.ts.map +1 -0
- package/dist/interface/cli/commands/schedule/history.js +39 -0
- package/dist/interface/cli/commands/schedule/history.js.map +1 -0
- package/dist/interface/cli/commands/schedule/run-now.d.ts +5 -0
- package/dist/interface/cli/commands/schedule/run-now.d.ts.map +1 -0
- package/dist/interface/cli/commands/schedule/run-now.js +94 -0
- package/dist/interface/cli/commands/schedule/run-now.js.map +1 -0
- package/dist/interface/cli/commands/schedule/shared.d.ts +12 -0
- package/dist/interface/cli/commands/schedule/shared.d.ts.map +1 -0
- package/dist/interface/cli/commands/schedule/shared.js +63 -0
- package/dist/interface/cli/commands/schedule/shared.js.map +1 -0
- package/dist/interface/cli/commands/schedule.d.ts +2 -1
- package/dist/interface/cli/commands/schedule.d.ts.map +1 -1
- package/dist/interface/cli/commands/schedule.js +57 -12
- package/dist/interface/cli/commands/schedule.js.map +1 -1
- package/dist/interface/cli/commands/skills.d.ts +3 -0
- package/dist/interface/cli/commands/skills.d.ts.map +1 -0
- package/dist/interface/cli/commands/skills.js +90 -0
- package/dist/interface/cli/commands/skills.js.map +1 -0
- package/dist/interface/cli/data-source-bootstrap.d.ts +11 -0
- package/dist/interface/cli/data-source-bootstrap.d.ts.map +1 -0
- package/dist/interface/cli/data-source-bootstrap.js +68 -0
- package/dist/interface/cli/data-source-bootstrap.js.map +1 -0
- package/dist/interface/cli/setup.d.ts +9 -3
- package/dist/interface/cli/setup.d.ts.map +1 -1
- package/dist/interface/cli/setup.js +31 -62
- package/dist/interface/cli/setup.js.map +1 -1
- package/dist/interface/cli/utils.d.ts.map +1 -1
- package/dist/interface/cli/utils.js +5 -0
- package/dist/interface/cli/utils.js.map +1 -1
- package/dist/interface/tui/entry.d.ts.map +1 -1
- package/dist/interface/tui/entry.js +41 -6
- package/dist/interface/tui/entry.js.map +1 -1
- package/dist/platform/observation/data-source-adapter.d.ts +1 -0
- package/dist/platform/observation/data-source-adapter.d.ts.map +1 -1
- package/dist/platform/observation/data-source-adapter.js +3 -0
- package/dist/platform/observation/data-source-adapter.js.map +1 -1
- package/dist/reflection/types.d.ts +2 -2
- package/dist/runtime/command-dispatcher.d.ts +1 -0
- package/dist/runtime/command-dispatcher.d.ts.map +1 -1
- package/dist/runtime/command-dispatcher.js +9 -0
- package/dist/runtime/command-dispatcher.js.map +1 -1
- package/dist/runtime/daemon/client.d.ts +7 -0
- package/dist/runtime/daemon/client.d.ts.map +1 -1
- package/dist/runtime/daemon/client.js +3 -0
- package/dist/runtime/daemon/client.js.map +1 -1
- package/dist/runtime/daemon/runner.d.ts +1 -0
- package/dist/runtime/daemon/runner.d.ts.map +1 -1
- package/dist/runtime/daemon/runner.js +26 -0
- package/dist/runtime/daemon/runner.js.map +1 -1
- package/dist/runtime/event/server.d.ts +6 -0
- package/dist/runtime/event/server.d.ts.map +1 -1
- package/dist/runtime/event/server.js +60 -0
- package/dist/runtime/event/server.js.map +1 -1
- package/dist/runtime/gateway/channel-policy.d.ts +40 -0
- package/dist/runtime/gateway/channel-policy.d.ts.map +1 -0
- package/dist/runtime/gateway/channel-policy.js +55 -0
- package/dist/runtime/gateway/channel-policy.js.map +1 -0
- package/dist/runtime/gateway/ingress-gateway.d.ts +13 -1
- package/dist/runtime/gateway/ingress-gateway.d.ts.map +1 -1
- package/dist/runtime/gateway/ingress-gateway.js +74 -2
- package/dist/runtime/gateway/ingress-gateway.js.map +1 -1
- package/dist/runtime/gateway/slack-channel-adapter.d.ts +3 -0
- package/dist/runtime/gateway/slack-channel-adapter.d.ts.map +1 -1
- package/dist/runtime/gateway/slack-channel-adapter.js +23 -4
- package/dist/runtime/gateway/slack-channel-adapter.js.map +1 -1
- package/dist/runtime/gateway/ws-channel-adapter.d.ts +7 -1
- package/dist/runtime/gateway/ws-channel-adapter.d.ts.map +1 -1
- package/dist/runtime/gateway/ws-channel-adapter.js +31 -2
- package/dist/runtime/gateway/ws-channel-adapter.js.map +1 -1
- package/dist/runtime/plugin-loader.d.ts +3 -2
- package/dist/runtime/plugin-loader.d.ts.map +1 -1
- package/dist/runtime/plugin-loader.js +4 -1
- package/dist/runtime/plugin-loader.js.map +1 -1
- package/dist/runtime/schedule/engine.d.ts +25 -1
- package/dist/runtime/schedule/engine.d.ts.map +1 -1
- package/dist/runtime/schedule/engine.js +195 -2
- package/dist/runtime/schedule/engine.js.map +1 -1
- package/dist/runtime/schedule/entry-resolver.d.ts +6 -0
- package/dist/runtime/schedule/entry-resolver.d.ts.map +1 -0
- package/dist/runtime/schedule/entry-resolver.js +21 -0
- package/dist/runtime/schedule/entry-resolver.js.map +1 -0
- package/dist/runtime/schedule/history.d.ts +4 -4
- package/dist/runtime/schedule/history.d.ts.map +1 -1
- package/dist/runtime/schedule/history.js +1 -1
- package/dist/runtime/schedule/history.js.map +1 -1
- package/dist/runtime/schedule/source.d.ts +15 -0
- package/dist/runtime/schedule/source.d.ts.map +1 -1
- package/dist/runtime/schedule/source.js +5 -0
- package/dist/runtime/schedule/source.js.map +1 -1
- package/dist/runtime/skills/skill-parser.d.ts +13 -0
- package/dist/runtime/skills/skill-parser.d.ts.map +1 -0
- package/dist/runtime/skills/skill-parser.js +64 -0
- package/dist/runtime/skills/skill-parser.js.map +1 -0
- package/dist/runtime/skills/skill-registry.d.ts +31 -0
- package/dist/runtime/skills/skill-registry.d.ts.map +1 -0
- package/dist/runtime/skills/skill-registry.js +108 -0
- package/dist/runtime/skills/skill-registry.js.map +1 -0
- package/dist/runtime/store/runtime-operation-schemas.d.ts +12 -12
- package/dist/runtime/terminal/backend.d.ts +25 -0
- package/dist/runtime/terminal/backend.d.ts.map +1 -0
- package/dist/runtime/terminal/backend.js +92 -0
- package/dist/runtime/terminal/backend.js.map +1 -0
- package/dist/runtime/types/daemon.d.ts +48 -0
- package/dist/runtime/types/daemon.d.ts.map +1 -1
- package/dist/runtime/types/daemon.js +8 -0
- package/dist/runtime/types/daemon.js.map +1 -1
- package/dist/runtime/types/schedule.d.ts +39 -13
- package/dist/runtime/types/schedule.d.ts.map +1 -1
- package/dist/runtime/types/schedule.js +3 -1
- package/dist/runtime/types/schedule.js.map +1 -1
- package/dist/tools/builtin/index.d.ts +2 -0
- package/dist/tools/builtin/index.d.ts.map +1 -1
- package/dist/tools/builtin/index.js +6 -2
- package/dist/tools/builtin/index.js.map +1 -1
- package/dist/tools/index.d.ts +1 -0
- package/dist/tools/index.d.ts.map +1 -1
- package/dist/tools/index.js +1 -0
- package/dist/tools/index.js.map +1 -1
- package/dist/tools/query/SkillSearchTool/SkillSearchTool.d.ts +28 -0
- package/dist/tools/query/SkillSearchTool/SkillSearchTool.d.ts.map +1 -0
- package/dist/tools/query/SkillSearchTool/SkillSearchTool.js +44 -0
- package/dist/tools/query/SkillSearchTool/SkillSearchTool.js.map +1 -0
- package/dist/tools/schedule/GetScheduleTool/GetScheduleTool.d.ts.map +1 -1
- package/dist/tools/schedule/GetScheduleTool/GetScheduleTool.js +1 -14
- package/dist/tools/schedule/GetScheduleTool/GetScheduleTool.js.map +1 -1
- package/dist/tools/schedule/PauseScheduleTool/PauseScheduleTool.d.ts.map +1 -1
- package/dist/tools/schedule/PauseScheduleTool/PauseScheduleTool.js +1 -14
- package/dist/tools/schedule/PauseScheduleTool/PauseScheduleTool.js.map +1 -1
- package/dist/tools/schedule/RemoveScheduleTool/RemoveScheduleTool.d.ts.map +1 -1
- package/dist/tools/schedule/RemoveScheduleTool/RemoveScheduleTool.js +1 -14
- package/dist/tools/schedule/RemoveScheduleTool/RemoveScheduleTool.js.map +1 -1
- package/dist/tools/schedule/ResumeScheduleTool/ResumeScheduleTool.d.ts.map +1 -1
- package/dist/tools/schedule/ResumeScheduleTool/ResumeScheduleTool.js +1 -14
- package/dist/tools/schedule/ResumeScheduleTool/ResumeScheduleTool.js.map +1 -1
- package/dist/tools/schedule/RunScheduleTool/RunScheduleTool.d.ts +40 -0
- package/dist/tools/schedule/RunScheduleTool/RunScheduleTool.d.ts.map +1 -0
- package/dist/tools/schedule/RunScheduleTool/RunScheduleTool.js +126 -0
- package/dist/tools/schedule/RunScheduleTool/RunScheduleTool.js.map +1 -0
- package/dist/tools/schedule/RunScheduleTool/constants.d.ts +5 -0
- package/dist/tools/schedule/RunScheduleTool/constants.d.ts.map +1 -0
- package/dist/tools/schedule/RunScheduleTool/constants.js +5 -0
- package/dist/tools/schedule/RunScheduleTool/constants.js.map +1 -0
- package/dist/tools/schedule/RunScheduleTool/prompt.d.ts +2 -0
- package/dist/tools/schedule/RunScheduleTool/prompt.d.ts.map +1 -0
- package/dist/tools/schedule/RunScheduleTool/prompt.js +2 -0
- package/dist/tools/schedule/RunScheduleTool/prompt.js.map +1 -0
- package/dist/tools/schedule/UpdateScheduleTool/UpdateScheduleTool.d.ts.map +1 -1
- package/dist/tools/schedule/UpdateScheduleTool/UpdateScheduleTool.js +1 -14
- package/dist/tools/schedule/UpdateScheduleTool/UpdateScheduleTool.js.map +1 -1
- package/package.json +3 -3
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"source.js","sourceRoot":"","sources":["../../../src/runtime/schedule/source.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,6EAA6E;AAC7E,MAAM,CAAC,MAAM,2BAA2B,GAAG,CAAC,CAAC,MAAM,CAAC;IAClD,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE,EAAY,4BAA4B;IAC/D,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,EAAc,sCAAsC;IACzE,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE;IAChB,KAAK,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,WAAW,EAAE,OAAO,EAAE,MAAM,EAAE,cAAc,CAAC,CAAC;IAC7D,OAAO,EAAE,CAAC,CAAC,MAAM,CAAC;QAChB,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC;QAClC,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,EAAG,gBAAgB;QACpD,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,EAAM,oBAAoB;KACzD,CAAC,CAAC,MAAM,CACP,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,KAAK,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,EACzD,EAAE,OAAO,EAAE,qEAAqE,EAAE,CACnF;IACD,QAAQ,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,EAAE,uBAAuB;IACpE,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;CACjC,CAAC,CAAC"}
|
|
1
|
+
{"version":3,"file":"source.js","sourceRoot":"","sources":["../../../src/runtime/schedule/source.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,6EAA6E;AAC7E,MAAM,CAAC,MAAM,2BAA2B,GAAG,CAAC,CAAC,MAAM,CAAC;IAClD,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE,EAAY,4BAA4B;IAC/D,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,EAAc,sCAAsC;IACzE,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE;IAChB,KAAK,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,WAAW,EAAE,OAAO,EAAE,MAAM,EAAE,cAAc,CAAC,CAAC;IAC7D,OAAO,EAAE,CAAC,CAAC,MAAM,CAAC;QAChB,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC;QAClC,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,EAAG,gBAAgB;QACpD,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,EAAM,oBAAoB;KACzD,CAAC,CAAC,MAAM,CACP,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,KAAK,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,EACzD,EAAE,OAAO,EAAE,qEAAqE,EAAE,CACnF;IACD,OAAO,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC;IAClC,SAAS,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE;IACjC,KAAK,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE;IAC7B,IAAI,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE;IAC5B,YAAY,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE;IACpC,QAAQ,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,EAAE,uBAAuB;IACpE,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;CACjC,CAAC,CAAC"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
export type SkillSource = "home" | "workspace";
|
|
2
|
+
export interface ParsedSkillFile {
|
|
3
|
+
id: string;
|
|
4
|
+
name: string;
|
|
5
|
+
description: string;
|
|
6
|
+
path: string;
|
|
7
|
+
relativePath: string;
|
|
8
|
+
source: SkillSource;
|
|
9
|
+
}
|
|
10
|
+
export declare function parseSkillFile(content: string, filePath: string, source: SkillSource, root: string): ParsedSkillFile;
|
|
11
|
+
export declare function toSafeSkillId(value: string): string;
|
|
12
|
+
export declare function isPathInside(root: string, candidate: string): boolean;
|
|
13
|
+
//# sourceMappingURL=skill-parser.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"skill-parser.d.ts","sourceRoot":"","sources":["../../../src/runtime/skills/skill-parser.ts"],"names":[],"mappings":"AAEA,MAAM,MAAM,WAAW,GAAG,MAAM,GAAG,WAAW,CAAC;AAE/C,MAAM,WAAW,eAAe;IAC9B,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,IAAI,EAAE,MAAM,CAAC;IACb,YAAY,EAAE,MAAM,CAAC;IACrB,MAAM,EAAE,WAAW,CAAC;CACrB;AAED,wBAAgB,cAAc,CAC5B,OAAO,EAAE,MAAM,EACf,QAAQ,EAAE,MAAM,EAChB,MAAM,EAAE,WAAW,EACnB,IAAI,EAAE,MAAM,GACX,eAAe,CAejB;AAED,wBAAgB,aAAa,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CASnD;AAED,wBAAgB,YAAY,CAAC,IAAI,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,OAAO,CAKrE"}
|
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
import * as path from "node:path";
|
|
2
|
+
export function parseSkillFile(content, filePath, source, root) {
|
|
3
|
+
const parsed = splitFrontmatter(content);
|
|
4
|
+
const firstHeading = parsed.body.match(/^#\s+(.+)$/m)?.[1]?.trim();
|
|
5
|
+
const description = parsed.attributes.description ?? firstBodyText(parsed.body);
|
|
6
|
+
const name = firstHeading ?? parsed.attributes.name ?? path.basename(path.dirname(filePath));
|
|
7
|
+
const relativePath = path.relative(root, filePath);
|
|
8
|
+
return {
|
|
9
|
+
id: toSafeSkillId(path.dirname(relativePath)),
|
|
10
|
+
name,
|
|
11
|
+
description,
|
|
12
|
+
path: filePath,
|
|
13
|
+
relativePath,
|
|
14
|
+
source,
|
|
15
|
+
};
|
|
16
|
+
}
|
|
17
|
+
export function toSafeSkillId(value) {
|
|
18
|
+
const normalized = value
|
|
19
|
+
.replace(/\\/g, "/")
|
|
20
|
+
.split("/")
|
|
21
|
+
.filter(Boolean)
|
|
22
|
+
.map((part) => part.toLowerCase().replace(/[^a-z0-9._-]+/g, "-").replace(/^-+|-+$/g, ""))
|
|
23
|
+
.filter((part) => part.length > 0 && part !== "." && part !== "..")
|
|
24
|
+
.join("/");
|
|
25
|
+
return normalized === "." ? "" : normalized;
|
|
26
|
+
}
|
|
27
|
+
export function isPathInside(root, candidate) {
|
|
28
|
+
const resolvedRoot = path.resolve(root);
|
|
29
|
+
const resolvedCandidate = path.resolve(candidate);
|
|
30
|
+
const relative = path.relative(resolvedRoot, resolvedCandidate);
|
|
31
|
+
return relative === "" || (!relative.startsWith("..") && !path.isAbsolute(relative));
|
|
32
|
+
}
|
|
33
|
+
function splitFrontmatter(content) {
|
|
34
|
+
const lines = content.split(/\r?\n/);
|
|
35
|
+
if (lines[0]?.trim() !== "---") {
|
|
36
|
+
return { attributes: {}, body: content };
|
|
37
|
+
}
|
|
38
|
+
const end = lines.findIndex((line, index) => index > 0 && line.trim() === "---");
|
|
39
|
+
if (end < 0) {
|
|
40
|
+
return { attributes: {}, body: content };
|
|
41
|
+
}
|
|
42
|
+
const attributes = {};
|
|
43
|
+
for (const line of lines.slice(1, end)) {
|
|
44
|
+
const match = /^([A-Za-z_][A-Za-z0-9_-]*)\s*:\s*(.*)$/.exec(line);
|
|
45
|
+
if (!match)
|
|
46
|
+
continue;
|
|
47
|
+
const key = match[1].toLowerCase();
|
|
48
|
+
const value = match[2].trim().replace(/^['"]|['"]$/g, "");
|
|
49
|
+
if ((key === "name" || key === "description") && value.length > 0) {
|
|
50
|
+
attributes[key] = value;
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
return {
|
|
54
|
+
attributes,
|
|
55
|
+
body: lines.slice(end + 1).join("\n"),
|
|
56
|
+
};
|
|
57
|
+
}
|
|
58
|
+
function firstBodyText(body) {
|
|
59
|
+
return body
|
|
60
|
+
.split(/\r?\n/)
|
|
61
|
+
.map((line) => line.trim())
|
|
62
|
+
.find((line) => line.length > 0 && !line.startsWith("#") && !line.startsWith("---")) ?? "";
|
|
63
|
+
}
|
|
64
|
+
//# sourceMappingURL=skill-parser.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"skill-parser.js","sourceRoot":"","sources":["../../../src/runtime/skills/skill-parser.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
import { type SkillSource } from "./skill-parser.js";
|
|
2
|
+
export interface SkillRecord {
|
|
3
|
+
id: string;
|
|
4
|
+
name: string;
|
|
5
|
+
description: string;
|
|
6
|
+
path: string;
|
|
7
|
+
relativePath: string;
|
|
8
|
+
source: SkillSource;
|
|
9
|
+
}
|
|
10
|
+
export interface SkillRegistryOptions {
|
|
11
|
+
homeSkillsDir?: string;
|
|
12
|
+
workspaceRoot?: string;
|
|
13
|
+
}
|
|
14
|
+
export declare class SkillRegistry {
|
|
15
|
+
private readonly homeSkillsDir;
|
|
16
|
+
private readonly workspaceRoot;
|
|
17
|
+
constructor(options?: SkillRegistryOptions);
|
|
18
|
+
list(): Promise<SkillRecord[]>;
|
|
19
|
+
search(query: string): Promise<SkillRecord[]>;
|
|
20
|
+
get(idOrName: string): Promise<SkillRecord | null>;
|
|
21
|
+
read(idOrName: string): Promise<{
|
|
22
|
+
skill: SkillRecord;
|
|
23
|
+
body: string;
|
|
24
|
+
} | null>;
|
|
25
|
+
install(sourcePath: string, options?: {
|
|
26
|
+
namespace?: string;
|
|
27
|
+
force?: boolean;
|
|
28
|
+
}): Promise<SkillRecord>;
|
|
29
|
+
private scanRoot;
|
|
30
|
+
}
|
|
31
|
+
//# sourceMappingURL=skill-registry.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"skill-registry.d.ts","sourceRoot":"","sources":["../../../src/runtime/skills/skill-registry.ts"],"names":[],"mappings":"AAIA,OAAO,EAIL,KAAK,WAAW,EACjB,MAAM,mBAAmB,CAAC;AAE3B,MAAM,WAAW,WAAW;IAC1B,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,IAAI,EAAE,MAAM,CAAC;IACb,YAAY,EAAE,MAAM,CAAC;IACrB,MAAM,EAAE,WAAW,CAAC;CACrB;AAED,MAAM,WAAW,oBAAoB;IACnC,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB;AAED,qBAAa,aAAa;IACxB,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAS;IACvC,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAqB;gBAEvC,OAAO,GAAE,oBAAyB;IAKxC,IAAI,IAAI,OAAO,CAAC,WAAW,EAAE,CAAC;IAW9B,MAAM,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,EAAE,CAAC;IAY7C,GAAG,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,GAAG,IAAI,CAAC;IASlD,IAAI,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC;QAAE,KAAK,EAAE,WAAW,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,GAAG,IAAI,CAAC;IAM5E,OAAO,CAAC,UAAU,EAAE,MAAM,EAAE,OAAO,GAAE;QAAE,SAAS,CAAC,EAAE,MAAM,CAAC;QAAC,KAAK,CAAC,EAAE,OAAO,CAAA;KAAO,GAAG,OAAO,CAAC,WAAW,CAAC;YA4BhG,QAAQ;CAavB"}
|
|
@@ -0,0 +1,108 @@
|
|
|
1
|
+
import * as fsp from "node:fs/promises";
|
|
2
|
+
import * as fs from "node:fs";
|
|
3
|
+
import * as path from "node:path";
|
|
4
|
+
import { getSkillsDir } from "../../base/utils/paths.js";
|
|
5
|
+
import { isPathInside, parseSkillFile, toSafeSkillId, } from "./skill-parser.js";
|
|
6
|
+
export class SkillRegistry {
|
|
7
|
+
homeSkillsDir;
|
|
8
|
+
workspaceRoot;
|
|
9
|
+
constructor(options = {}) {
|
|
10
|
+
this.homeSkillsDir = options.homeSkillsDir ?? getSkillsDir();
|
|
11
|
+
this.workspaceRoot = options.workspaceRoot;
|
|
12
|
+
}
|
|
13
|
+
async list() {
|
|
14
|
+
const home = await this.scanRoot(this.homeSkillsDir, "home");
|
|
15
|
+
const workspaceSkillsDir = this.workspaceRoot
|
|
16
|
+
? path.join(this.workspaceRoot, "skills")
|
|
17
|
+
: undefined;
|
|
18
|
+
const workspace = workspaceSkillsDir
|
|
19
|
+
? await this.scanRoot(workspaceSkillsDir, "workspace")
|
|
20
|
+
: [];
|
|
21
|
+
return [...home, ...workspace].sort((a, b) => a.id.localeCompare(b.id));
|
|
22
|
+
}
|
|
23
|
+
async search(query) {
|
|
24
|
+
const normalized = query.trim().toLowerCase();
|
|
25
|
+
if (!normalized)
|
|
26
|
+
return [];
|
|
27
|
+
const skills = await this.list();
|
|
28
|
+
return skills.filter((skill) => [
|
|
29
|
+
skill.id,
|
|
30
|
+
skill.name,
|
|
31
|
+
skill.description,
|
|
32
|
+
skill.relativePath,
|
|
33
|
+
].some((value) => value.toLowerCase().includes(normalized)));
|
|
34
|
+
}
|
|
35
|
+
async get(idOrName) {
|
|
36
|
+
const normalized = idOrName.trim().toLowerCase();
|
|
37
|
+
const skills = await this.list();
|
|
38
|
+
return skills.find((skill) => skill.id.toLowerCase() === normalized ||
|
|
39
|
+
skill.name.toLowerCase() === normalized) ?? null;
|
|
40
|
+
}
|
|
41
|
+
async read(idOrName) {
|
|
42
|
+
const skill = await this.get(idOrName);
|
|
43
|
+
if (!skill)
|
|
44
|
+
return null;
|
|
45
|
+
return { skill, body: await fsp.readFile(skill.path, "utf-8") };
|
|
46
|
+
}
|
|
47
|
+
async install(sourcePath, options = {}) {
|
|
48
|
+
const stat = await fsp.stat(sourcePath);
|
|
49
|
+
const skillFile = stat.isDirectory() ? path.join(sourcePath, "SKILL.md") : sourcePath;
|
|
50
|
+
if (!skillFile.endsWith("SKILL.md")) {
|
|
51
|
+
throw new Error("skill install source must be a SKILL.md file or a directory containing SKILL.md");
|
|
52
|
+
}
|
|
53
|
+
const content = await fsp.readFile(skillFile, "utf-8");
|
|
54
|
+
const parsed = parseSkillFile(content, skillFile, "home", path.dirname(skillFile));
|
|
55
|
+
const namespace = toSafeSkillId(options.namespace?.trim() || "imported") || "imported";
|
|
56
|
+
const parsedId = parsed.id === "." ? "" : parsed.id;
|
|
57
|
+
const safeName = toSafeSkillId(parsedId || path.basename(path.dirname(skillFile)) || parsed.name);
|
|
58
|
+
const destDir = path.join(this.homeSkillsDir, namespace, safeName);
|
|
59
|
+
const destFile = path.join(destDir, "SKILL.md");
|
|
60
|
+
if (!isPathInside(this.homeSkillsDir, destFile)) {
|
|
61
|
+
throw new Error("skill install destination must stay inside the skills directory");
|
|
62
|
+
}
|
|
63
|
+
if (fs.existsSync(destFile) && !options.force) {
|
|
64
|
+
throw new Error(`skill "${namespace}/${safeName}" already exists; use --force to overwrite`);
|
|
65
|
+
}
|
|
66
|
+
await fsp.mkdir(destDir, { recursive: true });
|
|
67
|
+
await fsp.copyFile(skillFile, destFile);
|
|
68
|
+
return {
|
|
69
|
+
...parseSkillFile(content, destFile, "home", this.homeSkillsDir),
|
|
70
|
+
id: `${namespace}/${safeName}`,
|
|
71
|
+
relativePath: path.relative(this.homeSkillsDir, destFile),
|
|
72
|
+
};
|
|
73
|
+
}
|
|
74
|
+
async scanRoot(root, source) {
|
|
75
|
+
const found = [];
|
|
76
|
+
await walk(root, async (file) => {
|
|
77
|
+
if (path.basename(file) !== "SKILL.md")
|
|
78
|
+
return;
|
|
79
|
+
try {
|
|
80
|
+
const content = await fsp.readFile(file, "utf-8");
|
|
81
|
+
found.push(parseSkillFile(content, file, source, root));
|
|
82
|
+
}
|
|
83
|
+
catch {
|
|
84
|
+
// Ignore unreadable skill files while keeping the registry usable.
|
|
85
|
+
}
|
|
86
|
+
});
|
|
87
|
+
return found;
|
|
88
|
+
}
|
|
89
|
+
}
|
|
90
|
+
async function walk(root, visit) {
|
|
91
|
+
let entries;
|
|
92
|
+
try {
|
|
93
|
+
entries = await fsp.readdir(root, { withFileTypes: true });
|
|
94
|
+
}
|
|
95
|
+
catch {
|
|
96
|
+
return;
|
|
97
|
+
}
|
|
98
|
+
for (const entry of entries) {
|
|
99
|
+
const fullPath = path.join(root, entry.name);
|
|
100
|
+
if (entry.isDirectory()) {
|
|
101
|
+
await walk(fullPath, visit);
|
|
102
|
+
}
|
|
103
|
+
else if (entry.isFile()) {
|
|
104
|
+
await visit(fullPath);
|
|
105
|
+
}
|
|
106
|
+
}
|
|
107
|
+
}
|
|
108
|
+
//# sourceMappingURL=skill-registry.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"skill-registry.js","sourceRoot":"","sources":["../../../src/runtime/skills/skill-registry.ts"],"names":[],"mappings":"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"}
|
|
@@ -10,13 +10,13 @@ export declare const RuntimeControlActorSchema: z.ZodObject<{
|
|
|
10
10
|
identity_key: z.ZodOptional<z.ZodString>;
|
|
11
11
|
user_id: z.ZodOptional<z.ZodString>;
|
|
12
12
|
}, "strip", z.ZodTypeAny, {
|
|
13
|
-
surface: "
|
|
13
|
+
surface: "gateway" | "cli" | "chat" | "tui";
|
|
14
14
|
platform?: string | undefined;
|
|
15
15
|
conversation_id?: string | undefined;
|
|
16
16
|
identity_key?: string | undefined;
|
|
17
17
|
user_id?: string | undefined;
|
|
18
18
|
}, {
|
|
19
|
-
surface: "
|
|
19
|
+
surface: "gateway" | "cli" | "chat" | "tui";
|
|
20
20
|
platform?: string | undefined;
|
|
21
21
|
conversation_id?: string | undefined;
|
|
22
22
|
identity_key?: string | undefined;
|
|
@@ -32,7 +32,7 @@ export declare const RuntimeControlReplyTargetSchema: z.ZodObject<{
|
|
|
32
32
|
identity_key: z.ZodOptional<z.ZodString>;
|
|
33
33
|
user_id: z.ZodOptional<z.ZodString>;
|
|
34
34
|
}, "strip", z.ZodTypeAny, {
|
|
35
|
-
surface?: "
|
|
35
|
+
surface?: "gateway" | "cli" | "chat" | "tui" | undefined;
|
|
36
36
|
platform?: string | undefined;
|
|
37
37
|
conversation_id?: string | undefined;
|
|
38
38
|
identity_key?: string | undefined;
|
|
@@ -40,7 +40,7 @@ export declare const RuntimeControlReplyTargetSchema: z.ZodObject<{
|
|
|
40
40
|
response_channel?: string | undefined;
|
|
41
41
|
outbox_topic?: string | undefined;
|
|
42
42
|
}, {
|
|
43
|
-
surface?: "
|
|
43
|
+
surface?: "gateway" | "cli" | "chat" | "tui" | undefined;
|
|
44
44
|
platform?: string | undefined;
|
|
45
45
|
conversation_id?: string | undefined;
|
|
46
46
|
identity_key?: string | undefined;
|
|
@@ -62,13 +62,13 @@ export declare const RuntimeControlOperationSchema: z.ZodObject<{
|
|
|
62
62
|
identity_key: z.ZodOptional<z.ZodString>;
|
|
63
63
|
user_id: z.ZodOptional<z.ZodString>;
|
|
64
64
|
}, "strip", z.ZodTypeAny, {
|
|
65
|
-
surface: "
|
|
65
|
+
surface: "gateway" | "cli" | "chat" | "tui";
|
|
66
66
|
platform?: string | undefined;
|
|
67
67
|
conversation_id?: string | undefined;
|
|
68
68
|
identity_key?: string | undefined;
|
|
69
69
|
user_id?: string | undefined;
|
|
70
70
|
}, {
|
|
71
|
-
surface: "
|
|
71
|
+
surface: "gateway" | "cli" | "chat" | "tui";
|
|
72
72
|
platform?: string | undefined;
|
|
73
73
|
conversation_id?: string | undefined;
|
|
74
74
|
identity_key?: string | undefined;
|
|
@@ -83,7 +83,7 @@ export declare const RuntimeControlOperationSchema: z.ZodObject<{
|
|
|
83
83
|
identity_key: z.ZodOptional<z.ZodString>;
|
|
84
84
|
user_id: z.ZodOptional<z.ZodString>;
|
|
85
85
|
}, "strip", z.ZodTypeAny, {
|
|
86
|
-
surface?: "
|
|
86
|
+
surface?: "gateway" | "cli" | "chat" | "tui" | undefined;
|
|
87
87
|
platform?: string | undefined;
|
|
88
88
|
conversation_id?: string | undefined;
|
|
89
89
|
identity_key?: string | undefined;
|
|
@@ -91,7 +91,7 @@ export declare const RuntimeControlOperationSchema: z.ZodObject<{
|
|
|
91
91
|
response_channel?: string | undefined;
|
|
92
92
|
outbox_topic?: string | undefined;
|
|
93
93
|
}, {
|
|
94
|
-
surface?: "
|
|
94
|
+
surface?: "gateway" | "cli" | "chat" | "tui" | undefined;
|
|
95
95
|
platform?: string | undefined;
|
|
96
96
|
conversation_id?: string | undefined;
|
|
97
97
|
identity_key?: string | undefined;
|
|
@@ -139,14 +139,14 @@ export declare const RuntimeControlOperationSchema: z.ZodObject<{
|
|
|
139
139
|
operation_id: string;
|
|
140
140
|
requested_at: string;
|
|
141
141
|
requested_by: {
|
|
142
|
-
surface: "
|
|
142
|
+
surface: "gateway" | "cli" | "chat" | "tui";
|
|
143
143
|
platform?: string | undefined;
|
|
144
144
|
conversation_id?: string | undefined;
|
|
145
145
|
identity_key?: string | undefined;
|
|
146
146
|
user_id?: string | undefined;
|
|
147
147
|
};
|
|
148
148
|
reply_target: {
|
|
149
|
-
surface?: "
|
|
149
|
+
surface?: "gateway" | "cli" | "chat" | "tui" | undefined;
|
|
150
150
|
platform?: string | undefined;
|
|
151
151
|
conversation_id?: string | undefined;
|
|
152
152
|
identity_key?: string | undefined;
|
|
@@ -177,14 +177,14 @@ export declare const RuntimeControlOperationSchema: z.ZodObject<{
|
|
|
177
177
|
operation_id: string;
|
|
178
178
|
requested_at: string;
|
|
179
179
|
requested_by: {
|
|
180
|
-
surface: "
|
|
180
|
+
surface: "gateway" | "cli" | "chat" | "tui";
|
|
181
181
|
platform?: string | undefined;
|
|
182
182
|
conversation_id?: string | undefined;
|
|
183
183
|
identity_key?: string | undefined;
|
|
184
184
|
user_id?: string | undefined;
|
|
185
185
|
};
|
|
186
186
|
reply_target: {
|
|
187
|
-
surface?: "
|
|
187
|
+
surface?: "gateway" | "cli" | "chat" | "tui" | undefined;
|
|
188
188
|
platform?: string | undefined;
|
|
189
189
|
conversation_id?: string | undefined;
|
|
190
190
|
identity_key?: string | undefined;
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
export type TerminalBackendType = "local" | "docker";
|
|
2
|
+
export interface DockerTerminalBackendConfig {
|
|
3
|
+
image: string;
|
|
4
|
+
workdir?: string;
|
|
5
|
+
network?: "none" | "host" | "bridge";
|
|
6
|
+
env?: Record<string, string>;
|
|
7
|
+
volumes?: string[];
|
|
8
|
+
}
|
|
9
|
+
export interface TerminalBackendConfig {
|
|
10
|
+
type: TerminalBackendType;
|
|
11
|
+
docker?: DockerTerminalBackendConfig;
|
|
12
|
+
}
|
|
13
|
+
export interface TerminalCommandSpec {
|
|
14
|
+
command: string;
|
|
15
|
+
args: string[];
|
|
16
|
+
cwd?: string;
|
|
17
|
+
env?: NodeJS.ProcessEnv;
|
|
18
|
+
stdinData?: string;
|
|
19
|
+
}
|
|
20
|
+
export interface ResolvedTerminalCommandSpec extends TerminalCommandSpec {
|
|
21
|
+
backend: TerminalBackendType;
|
|
22
|
+
}
|
|
23
|
+
export declare function resolveTerminalBackendConfig(config: TerminalBackendConfig | undefined): TerminalBackendConfig;
|
|
24
|
+
export declare function wrapTerminalCommand(spec: TerminalCommandSpec, backendConfig: TerminalBackendConfig | undefined): ResolvedTerminalCommandSpec;
|
|
25
|
+
//# sourceMappingURL=backend.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"backend.d.ts","sourceRoot":"","sources":["../../../src/runtime/terminal/backend.ts"],"names":[],"mappings":"AAEA,MAAM,MAAM,mBAAmB,GAAG,OAAO,GAAG,QAAQ,CAAC;AAErD,MAAM,WAAW,2BAA2B;IAC1C,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,OAAO,CAAC,EAAE,MAAM,GAAG,MAAM,GAAG,QAAQ,CAAC;IACrC,GAAG,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC7B,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;CACpB;AAED,MAAM,WAAW,qBAAqB;IACpC,IAAI,EAAE,mBAAmB,CAAC;IAC1B,MAAM,CAAC,EAAE,2BAA2B,CAAC;CACtC;AAED,MAAM,WAAW,mBAAmB;IAClC,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,MAAM,EAAE,CAAC;IACf,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,GAAG,CAAC,EAAE,MAAM,CAAC,UAAU,CAAC;IACxB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,2BAA4B,SAAQ,mBAAmB;IACtE,OAAO,EAAE,mBAAmB,CAAC;CAC9B;AAWD,wBAAgB,4BAA4B,CAC1C,MAAM,EAAE,qBAAqB,GAAG,SAAS,GACxC,qBAAqB,CAgBvB;AAED,wBAAgB,mBAAmB,CACjC,IAAI,EAAE,mBAAmB,EACzB,aAAa,EAAE,qBAAqB,GAAG,SAAS,GAC/C,2BAA2B,CA2B7B"}
|
|
@@ -0,0 +1,92 @@
|
|
|
1
|
+
import * as path from "node:path";
|
|
2
|
+
const DEFAULT_CONTAINER_WORKDIR = "/workspace";
|
|
3
|
+
const DOCKER_ENV_DENYLIST = new Set([
|
|
4
|
+
"PWD",
|
|
5
|
+
"OLDPWD",
|
|
6
|
+
"SHLVL",
|
|
7
|
+
"_",
|
|
8
|
+
]);
|
|
9
|
+
export function resolveTerminalBackendConfig(config) {
|
|
10
|
+
if (!config)
|
|
11
|
+
return { type: "local" };
|
|
12
|
+
if (config.type === "local")
|
|
13
|
+
return { type: "local" };
|
|
14
|
+
if (!config.docker?.image?.trim()) {
|
|
15
|
+
throw new Error("terminal backend docker.image is required when type is docker");
|
|
16
|
+
}
|
|
17
|
+
return {
|
|
18
|
+
type: "docker",
|
|
19
|
+
docker: {
|
|
20
|
+
image: config.docker.image,
|
|
21
|
+
workdir: config.docker.workdir ?? DEFAULT_CONTAINER_WORKDIR,
|
|
22
|
+
network: config.docker.network ?? "none",
|
|
23
|
+
env: config.docker.env,
|
|
24
|
+
volumes: config.docker.volumes,
|
|
25
|
+
},
|
|
26
|
+
};
|
|
27
|
+
}
|
|
28
|
+
export function wrapTerminalCommand(spec, backendConfig) {
|
|
29
|
+
const backend = resolveTerminalBackendConfig(backendConfig);
|
|
30
|
+
if (backend.type === "local") {
|
|
31
|
+
return { ...spec, backend: "local" };
|
|
32
|
+
}
|
|
33
|
+
const docker = backend.docker;
|
|
34
|
+
const hostCwd = path.resolve(spec.cwd ?? process.cwd());
|
|
35
|
+
const containerWorkdir = docker.workdir ?? DEFAULT_CONTAINER_WORKDIR;
|
|
36
|
+
const containerEnv = normalizeContainerEnv(spec.env, docker.env);
|
|
37
|
+
return {
|
|
38
|
+
command: "docker",
|
|
39
|
+
args: buildDockerRunArgs({
|
|
40
|
+
command: spec.command,
|
|
41
|
+
args: spec.args,
|
|
42
|
+
image: docker.image,
|
|
43
|
+
network: docker.network ?? "none",
|
|
44
|
+
hostCwd,
|
|
45
|
+
containerWorkdir,
|
|
46
|
+
volumes: docker.volumes ?? [],
|
|
47
|
+
env: containerEnv,
|
|
48
|
+
}),
|
|
49
|
+
env: spec.env,
|
|
50
|
+
stdinData: spec.stdinData,
|
|
51
|
+
backend: "docker",
|
|
52
|
+
};
|
|
53
|
+
}
|
|
54
|
+
function buildDockerRunArgs(input) {
|
|
55
|
+
return [
|
|
56
|
+
"run",
|
|
57
|
+
"--rm",
|
|
58
|
+
"-i",
|
|
59
|
+
"--network",
|
|
60
|
+
input.network,
|
|
61
|
+
...buildVolumeArgs(input.hostCwd, input.containerWorkdir, input.volumes),
|
|
62
|
+
...buildEnvArgs(input.env),
|
|
63
|
+
input.image,
|
|
64
|
+
input.command,
|
|
65
|
+
...input.args,
|
|
66
|
+
];
|
|
67
|
+
}
|
|
68
|
+
function buildVolumeArgs(hostCwd, containerWorkdir, extraVolumes) {
|
|
69
|
+
return [
|
|
70
|
+
"-v",
|
|
71
|
+
`${hostCwd}:${containerWorkdir}`,
|
|
72
|
+
"-w",
|
|
73
|
+
containerWorkdir,
|
|
74
|
+
...extraVolumes.flatMap((volume) => ["-v", volume]),
|
|
75
|
+
];
|
|
76
|
+
}
|
|
77
|
+
function buildEnvArgs(env) {
|
|
78
|
+
return Object.entries(env).flatMap(([key, value]) => ["-e", `${key}=${value}`]);
|
|
79
|
+
}
|
|
80
|
+
function normalizeContainerEnv(specEnv, dockerEnv) {
|
|
81
|
+
const result = {};
|
|
82
|
+
for (const [key, value] of Object.entries(specEnv ?? {})) {
|
|
83
|
+
if (value === undefined || DOCKER_ENV_DENYLIST.has(key))
|
|
84
|
+
continue;
|
|
85
|
+
result[key] = value;
|
|
86
|
+
}
|
|
87
|
+
for (const [key, value] of Object.entries(dockerEnv ?? {})) {
|
|
88
|
+
result[key] = value;
|
|
89
|
+
}
|
|
90
|
+
return result;
|
|
91
|
+
}
|
|
92
|
+
//# sourceMappingURL=backend.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"backend.js","sourceRoot":"","sources":["../../../src/runtime/terminal/backend.ts"],"names":[],"mappings":"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"}
|
|
@@ -36,6 +36,38 @@ export declare const DaemonConfigSchema: z.ZodObject<{
|
|
|
36
36
|
iterations_per_cycle: z.ZodDefault<z.ZodNumber>;
|
|
37
37
|
max_concurrent_goals: z.ZodDefault<z.ZodNumber>;
|
|
38
38
|
event_server_port: z.ZodDefault<z.ZodNumber>;
|
|
39
|
+
gateway: z.ZodDefault<z.ZodObject<{
|
|
40
|
+
slack: z.ZodDefault<z.ZodObject<{
|
|
41
|
+
enabled: z.ZodDefault<z.ZodBoolean>;
|
|
42
|
+
signing_secret: z.ZodOptional<z.ZodString>;
|
|
43
|
+
path: z.ZodDefault<z.ZodString>;
|
|
44
|
+
channel_goal_map: z.ZodDefault<z.ZodRecord<z.ZodString, z.ZodString>>;
|
|
45
|
+
}, "strip", z.ZodTypeAny, {
|
|
46
|
+
path: string;
|
|
47
|
+
enabled: boolean;
|
|
48
|
+
channel_goal_map: Record<string, string>;
|
|
49
|
+
signing_secret?: string | undefined;
|
|
50
|
+
}, {
|
|
51
|
+
path?: string | undefined;
|
|
52
|
+
enabled?: boolean | undefined;
|
|
53
|
+
signing_secret?: string | undefined;
|
|
54
|
+
channel_goal_map?: Record<string, string> | undefined;
|
|
55
|
+
}>>;
|
|
56
|
+
}, "strip", z.ZodTypeAny, {
|
|
57
|
+
slack: {
|
|
58
|
+
path: string;
|
|
59
|
+
enabled: boolean;
|
|
60
|
+
channel_goal_map: Record<string, string>;
|
|
61
|
+
signing_secret?: string | undefined;
|
|
62
|
+
};
|
|
63
|
+
}, {
|
|
64
|
+
slack?: {
|
|
65
|
+
path?: string | undefined;
|
|
66
|
+
enabled?: boolean | undefined;
|
|
67
|
+
signing_secret?: string | undefined;
|
|
68
|
+
channel_goal_map?: Record<string, string> | undefined;
|
|
69
|
+
} | undefined;
|
|
70
|
+
}>>;
|
|
39
71
|
proactive_mode: z.ZodDefault<z.ZodBoolean>;
|
|
40
72
|
proactive_interval_ms: z.ZodDefault<z.ZodNumber>;
|
|
41
73
|
goal_review_interval_ms: z.ZodDefault<z.ZodNumber>;
|
|
@@ -79,6 +111,14 @@ export declare const DaemonConfigSchema: z.ZodObject<{
|
|
|
79
111
|
iterations_per_cycle: number;
|
|
80
112
|
max_concurrent_goals: number;
|
|
81
113
|
event_server_port: number;
|
|
114
|
+
gateway: {
|
|
115
|
+
slack: {
|
|
116
|
+
path: string;
|
|
117
|
+
enabled: boolean;
|
|
118
|
+
channel_goal_map: Record<string, string>;
|
|
119
|
+
signing_secret?: string | undefined;
|
|
120
|
+
};
|
|
121
|
+
};
|
|
82
122
|
proactive_mode: boolean;
|
|
83
123
|
proactive_interval_ms: number;
|
|
84
124
|
goal_review_interval_ms: number;
|
|
@@ -114,6 +154,14 @@ export declare const DaemonConfigSchema: z.ZodObject<{
|
|
|
114
154
|
iterations_per_cycle?: number | undefined;
|
|
115
155
|
max_concurrent_goals?: number | undefined;
|
|
116
156
|
event_server_port?: number | undefined;
|
|
157
|
+
gateway?: {
|
|
158
|
+
slack?: {
|
|
159
|
+
path?: string | undefined;
|
|
160
|
+
enabled?: boolean | undefined;
|
|
161
|
+
signing_secret?: string | undefined;
|
|
162
|
+
channel_goal_map?: Record<string, string> | undefined;
|
|
163
|
+
} | undefined;
|
|
164
|
+
} | undefined;
|
|
117
165
|
proactive_mode?: boolean | undefined;
|
|
118
166
|
proactive_interval_ms?: number | undefined;
|
|
119
167
|
goal_review_interval_ms?: number | undefined;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"daemon.d.ts","sourceRoot":"","sources":["../../../src/runtime/types/daemon.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAKxB,eAAO,MAAM,kBAAkB
|
|
1
|
+
{"version":3,"file":"daemon.d.ts","sourceRoot":"","sources":["../../../src/runtime/types/daemon.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAKxB,eAAO,MAAM,kBAAkB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAyC7B,CAAC;AACH,MAAM,MAAM,YAAY,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,kBAAkB,CAAC,CAAC;AAE9D,eAAO,MAAM,sBAAsB;;;;;;;;;;;;;;;;;;;;;EAOjC,CAAC;AACH,MAAM,MAAM,gBAAgB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,sBAAsB,CAAC,CAAC;AAGtE,eAAO,MAAM,iBAAiB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAY5B,CAAC;AACH,MAAM,MAAM,WAAW,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,iBAAiB,CAAC,CAAC;AAG5D,eAAO,MAAM,aAAa;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAcxB,CAAC;AACH,MAAM,MAAM,OAAO,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,aAAa,CAAC,CAAC"}
|
|
@@ -23,6 +23,14 @@ export const DaemonConfigSchema = z.object({
|
|
|
23
23
|
iterations_per_cycle: z.number().int().positive().default(10), // max CoreLoop iterations per daemon cycle
|
|
24
24
|
max_concurrent_goals: z.number().int().positive().default(4), // max goals the supervisor may execute at once
|
|
25
25
|
event_server_port: z.number().int().nonnegative().default(41700), // EventServer HTTP port (0 = OS-assigned, safe for tests)
|
|
26
|
+
gateway: z.object({
|
|
27
|
+
slack: z.object({
|
|
28
|
+
enabled: z.boolean().default(false),
|
|
29
|
+
signing_secret: z.string().optional(),
|
|
30
|
+
path: z.string().default("/slack/events"),
|
|
31
|
+
channel_goal_map: z.record(z.string()).default({}),
|
|
32
|
+
}).default({}),
|
|
33
|
+
}).default({}),
|
|
26
34
|
proactive_mode: z.boolean().default(false),
|
|
27
35
|
proactive_interval_ms: z.number().default(3_600_000), // 1 hour minimum between proactive ticks
|
|
28
36
|
goal_review_interval_ms: z.number().int().nonnegative().default(7 * 24 * 60 * 60 * 1000), // weekly goal review cadence
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"daemon.js","sourceRoot":"","sources":["../../../src/runtime/types/daemon.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"daemon.js","sourceRoot":"","sources":["../../../src/runtime/types/daemon.ts"],"names":[],"mappings":"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"}
|