pulseed 0.4.8 → 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.
Files changed (217) hide show
  1. package/README.md +15 -3
  2. package/dist/adapters/agents/claude-code-cli.d.ts +8 -1
  3. package/dist/adapters/agents/claude-code-cli.d.ts.map +1 -1
  4. package/dist/adapters/agents/claude-code-cli.js +25 -5
  5. package/dist/adapters/agents/claude-code-cli.js.map +1 -1
  6. package/dist/adapters/agents/openai-codex.d.ts +4 -0
  7. package/dist/adapters/agents/openai-codex.d.ts.map +1 -1
  8. package/dist/adapters/agents/openai-codex.js +16 -2
  9. package/dist/adapters/agents/openai-codex.js.map +1 -1
  10. package/dist/base/config/tool-metadata.js +1 -1
  11. package/dist/base/config/tool-metadata.js.map +1 -1
  12. package/dist/base/llm/provider-config.d.ts +11 -0
  13. package/dist/base/llm/provider-config.d.ts.map +1 -1
  14. package/dist/base/llm/provider-config.js +18 -5
  15. package/dist/base/llm/provider-config.js.map +1 -1
  16. package/dist/base/llm/provider-factory.d.ts.map +1 -1
  17. package/dist/base/llm/provider-factory.js +9 -3
  18. package/dist/base/llm/provider-factory.js.map +1 -1
  19. package/dist/base/state/state-manager.d.ts +7 -0
  20. package/dist/base/state/state-manager.d.ts.map +1 -1
  21. package/dist/base/state/state-manager.js +127 -17
  22. package/dist/base/state/state-manager.js.map +1 -1
  23. package/dist/base/utils/paths.d.ts +1 -0
  24. package/dist/base/utils/paths.d.ts.map +1 -1
  25. package/dist/base/utils/paths.js +3 -0
  26. package/dist/base/utils/paths.js.map +1 -1
  27. package/dist/index.d.ts +12 -0
  28. package/dist/index.d.ts.map +1 -1
  29. package/dist/index.js +6 -0
  30. package/dist/index.js.map +1 -1
  31. package/dist/interface/chat/chat-history.d.ts +152 -46
  32. package/dist/interface/chat/chat-history.d.ts.map +1 -1
  33. package/dist/interface/chat/chat-history.js +55 -9
  34. package/dist/interface/chat/chat-history.js.map +1 -1
  35. package/dist/interface/chat/chat-runner.d.ts +9 -1
  36. package/dist/interface/chat/chat-runner.d.ts.map +1 -1
  37. package/dist/interface/chat/chat-runner.js +152 -9
  38. package/dist/interface/chat/chat-runner.js.map +1 -1
  39. package/dist/interface/chat/chat-session-store.d.ts +71 -0
  40. package/dist/interface/chat/chat-session-store.d.ts.map +1 -0
  41. package/dist/interface/chat/chat-session-store.js +378 -0
  42. package/dist/interface/chat/chat-session-store.js.map +1 -0
  43. package/dist/interface/chat/cross-platform-session.d.ts.map +1 -1
  44. package/dist/interface/chat/cross-platform-session.js +40 -1
  45. package/dist/interface/chat/cross-platform-session.js.map +1 -1
  46. package/dist/interface/cli/cli-command-registry.js +5 -5
  47. package/dist/interface/cli/cli-command-registry.js.map +1 -1
  48. package/dist/interface/cli/cli-runner.d.ts.map +1 -1
  49. package/dist/interface/cli/cli-runner.js +4 -0
  50. package/dist/interface/cli/cli-runner.js.map +1 -1
  51. package/dist/interface/cli/commands/daemon.d.ts.map +1 -1
  52. package/dist/interface/cli/commands/daemon.js +44 -15
  53. package/dist/interface/cli/commands/daemon.js.map +1 -1
  54. package/dist/interface/cli/commands/schedule/cost.d.ts +3 -0
  55. package/dist/interface/cli/commands/schedule/cost.d.ts.map +1 -0
  56. package/dist/interface/cli/commands/schedule/cost.js +84 -0
  57. package/dist/interface/cli/commands/schedule/cost.js.map +1 -0
  58. package/dist/interface/cli/commands/schedule/edit.d.ts +4 -0
  59. package/dist/interface/cli/commands/schedule/edit.d.ts.map +1 -0
  60. package/dist/interface/cli/commands/schedule/edit.js +92 -0
  61. package/dist/interface/cli/commands/schedule/edit.js.map +1 -0
  62. package/dist/interface/cli/commands/schedule/history.d.ts +3 -0
  63. package/dist/interface/cli/commands/schedule/history.d.ts.map +1 -0
  64. package/dist/interface/cli/commands/schedule/history.js +39 -0
  65. package/dist/interface/cli/commands/schedule/history.js.map +1 -0
  66. package/dist/interface/cli/commands/schedule/run-now.d.ts +5 -0
  67. package/dist/interface/cli/commands/schedule/run-now.d.ts.map +1 -0
  68. package/dist/interface/cli/commands/schedule/run-now.js +94 -0
  69. package/dist/interface/cli/commands/schedule/run-now.js.map +1 -0
  70. package/dist/interface/cli/commands/schedule/shared.d.ts +12 -0
  71. package/dist/interface/cli/commands/schedule/shared.d.ts.map +1 -0
  72. package/dist/interface/cli/commands/schedule/shared.js +63 -0
  73. package/dist/interface/cli/commands/schedule/shared.js.map +1 -0
  74. package/dist/interface/cli/commands/schedule.d.ts +2 -1
  75. package/dist/interface/cli/commands/schedule.d.ts.map +1 -1
  76. package/dist/interface/cli/commands/schedule.js +57 -12
  77. package/dist/interface/cli/commands/schedule.js.map +1 -1
  78. package/dist/interface/cli/commands/skills.d.ts +3 -0
  79. package/dist/interface/cli/commands/skills.d.ts.map +1 -0
  80. package/dist/interface/cli/commands/skills.js +90 -0
  81. package/dist/interface/cli/commands/skills.js.map +1 -0
  82. package/dist/interface/cli/data-source-bootstrap.d.ts +11 -0
  83. package/dist/interface/cli/data-source-bootstrap.d.ts.map +1 -0
  84. package/dist/interface/cli/data-source-bootstrap.js +68 -0
  85. package/dist/interface/cli/data-source-bootstrap.js.map +1 -0
  86. package/dist/interface/cli/setup.d.ts +9 -3
  87. package/dist/interface/cli/setup.d.ts.map +1 -1
  88. package/dist/interface/cli/setup.js +31 -62
  89. package/dist/interface/cli/setup.js.map +1 -1
  90. package/dist/interface/cli/utils.d.ts.map +1 -1
  91. package/dist/interface/cli/utils.js +5 -0
  92. package/dist/interface/cli/utils.js.map +1 -1
  93. package/dist/interface/tui/entry.d.ts.map +1 -1
  94. package/dist/interface/tui/entry.js +41 -6
  95. package/dist/interface/tui/entry.js.map +1 -1
  96. package/dist/platform/observation/data-source-adapter.d.ts +1 -0
  97. package/dist/platform/observation/data-source-adapter.d.ts.map +1 -1
  98. package/dist/platform/observation/data-source-adapter.js +3 -0
  99. package/dist/platform/observation/data-source-adapter.js.map +1 -1
  100. package/dist/reflection/types.d.ts +2 -2
  101. package/dist/runtime/command-dispatcher.d.ts +1 -0
  102. package/dist/runtime/command-dispatcher.d.ts.map +1 -1
  103. package/dist/runtime/command-dispatcher.js +9 -0
  104. package/dist/runtime/command-dispatcher.js.map +1 -1
  105. package/dist/runtime/daemon/client.d.ts +7 -0
  106. package/dist/runtime/daemon/client.d.ts.map +1 -1
  107. package/dist/runtime/daemon/client.js +3 -0
  108. package/dist/runtime/daemon/client.js.map +1 -1
  109. package/dist/runtime/daemon/runner.d.ts +1 -0
  110. package/dist/runtime/daemon/runner.d.ts.map +1 -1
  111. package/dist/runtime/daemon/runner.js +26 -0
  112. package/dist/runtime/daemon/runner.js.map +1 -1
  113. package/dist/runtime/event/server.d.ts +6 -0
  114. package/dist/runtime/event/server.d.ts.map +1 -1
  115. package/dist/runtime/event/server.js +60 -0
  116. package/dist/runtime/event/server.js.map +1 -1
  117. package/dist/runtime/gateway/channel-policy.d.ts +40 -0
  118. package/dist/runtime/gateway/channel-policy.d.ts.map +1 -0
  119. package/dist/runtime/gateway/channel-policy.js +55 -0
  120. package/dist/runtime/gateway/channel-policy.js.map +1 -0
  121. package/dist/runtime/gateway/ingress-gateway.d.ts +13 -1
  122. package/dist/runtime/gateway/ingress-gateway.d.ts.map +1 -1
  123. package/dist/runtime/gateway/ingress-gateway.js +74 -2
  124. package/dist/runtime/gateway/ingress-gateway.js.map +1 -1
  125. package/dist/runtime/gateway/slack-channel-adapter.d.ts +3 -0
  126. package/dist/runtime/gateway/slack-channel-adapter.d.ts.map +1 -1
  127. package/dist/runtime/gateway/slack-channel-adapter.js +23 -4
  128. package/dist/runtime/gateway/slack-channel-adapter.js.map +1 -1
  129. package/dist/runtime/gateway/ws-channel-adapter.d.ts +7 -1
  130. package/dist/runtime/gateway/ws-channel-adapter.d.ts.map +1 -1
  131. package/dist/runtime/gateway/ws-channel-adapter.js +31 -2
  132. package/dist/runtime/gateway/ws-channel-adapter.js.map +1 -1
  133. package/dist/runtime/plugin-loader.d.ts +3 -2
  134. package/dist/runtime/plugin-loader.d.ts.map +1 -1
  135. package/dist/runtime/plugin-loader.js +4 -1
  136. package/dist/runtime/plugin-loader.js.map +1 -1
  137. package/dist/runtime/schedule/engine.d.ts +25 -1
  138. package/dist/runtime/schedule/engine.d.ts.map +1 -1
  139. package/dist/runtime/schedule/engine.js +195 -2
  140. package/dist/runtime/schedule/engine.js.map +1 -1
  141. package/dist/runtime/schedule/entry-resolver.d.ts +6 -0
  142. package/dist/runtime/schedule/entry-resolver.d.ts.map +1 -0
  143. package/dist/runtime/schedule/entry-resolver.js +21 -0
  144. package/dist/runtime/schedule/entry-resolver.js.map +1 -0
  145. package/dist/runtime/schedule/history.d.ts +4 -4
  146. package/dist/runtime/schedule/history.d.ts.map +1 -1
  147. package/dist/runtime/schedule/history.js +1 -1
  148. package/dist/runtime/schedule/history.js.map +1 -1
  149. package/dist/runtime/schedule/source.d.ts +15 -0
  150. package/dist/runtime/schedule/source.d.ts.map +1 -1
  151. package/dist/runtime/schedule/source.js +5 -0
  152. package/dist/runtime/schedule/source.js.map +1 -1
  153. package/dist/runtime/skills/skill-parser.d.ts +13 -0
  154. package/dist/runtime/skills/skill-parser.d.ts.map +1 -0
  155. package/dist/runtime/skills/skill-parser.js +64 -0
  156. package/dist/runtime/skills/skill-parser.js.map +1 -0
  157. package/dist/runtime/skills/skill-registry.d.ts +31 -0
  158. package/dist/runtime/skills/skill-registry.d.ts.map +1 -0
  159. package/dist/runtime/skills/skill-registry.js +108 -0
  160. package/dist/runtime/skills/skill-registry.js.map +1 -0
  161. package/dist/runtime/store/runtime-operation-schemas.d.ts +12 -12
  162. package/dist/runtime/terminal/backend.d.ts +25 -0
  163. package/dist/runtime/terminal/backend.d.ts.map +1 -0
  164. package/dist/runtime/terminal/backend.js +92 -0
  165. package/dist/runtime/terminal/backend.js.map +1 -0
  166. package/dist/runtime/types/daemon.d.ts +48 -0
  167. package/dist/runtime/types/daemon.d.ts.map +1 -1
  168. package/dist/runtime/types/daemon.js +8 -0
  169. package/dist/runtime/types/daemon.js.map +1 -1
  170. package/dist/runtime/types/schedule.d.ts +39 -13
  171. package/dist/runtime/types/schedule.d.ts.map +1 -1
  172. package/dist/runtime/types/schedule.js +3 -1
  173. package/dist/runtime/types/schedule.js.map +1 -1
  174. package/dist/tools/builtin/index.d.ts +2 -0
  175. package/dist/tools/builtin/index.d.ts.map +1 -1
  176. package/dist/tools/builtin/index.js +6 -2
  177. package/dist/tools/builtin/index.js.map +1 -1
  178. package/dist/tools/index.d.ts +1 -0
  179. package/dist/tools/index.d.ts.map +1 -1
  180. package/dist/tools/index.js +1 -0
  181. package/dist/tools/index.js.map +1 -1
  182. package/dist/tools/query/SkillSearchTool/SkillSearchTool.d.ts +28 -0
  183. package/dist/tools/query/SkillSearchTool/SkillSearchTool.d.ts.map +1 -0
  184. package/dist/tools/query/SkillSearchTool/SkillSearchTool.js +44 -0
  185. package/dist/tools/query/SkillSearchTool/SkillSearchTool.js.map +1 -0
  186. package/dist/tools/schedule/GetScheduleTool/GetScheduleTool.d.ts.map +1 -1
  187. package/dist/tools/schedule/GetScheduleTool/GetScheduleTool.js +1 -14
  188. package/dist/tools/schedule/GetScheduleTool/GetScheduleTool.js.map +1 -1
  189. package/dist/tools/schedule/PauseScheduleTool/PauseScheduleTool.d.ts.map +1 -1
  190. package/dist/tools/schedule/PauseScheduleTool/PauseScheduleTool.js +1 -14
  191. package/dist/tools/schedule/PauseScheduleTool/PauseScheduleTool.js.map +1 -1
  192. package/dist/tools/schedule/RemoveScheduleTool/RemoveScheduleTool.d.ts.map +1 -1
  193. package/dist/tools/schedule/RemoveScheduleTool/RemoveScheduleTool.js +1 -14
  194. package/dist/tools/schedule/RemoveScheduleTool/RemoveScheduleTool.js.map +1 -1
  195. package/dist/tools/schedule/ResumeScheduleTool/ResumeScheduleTool.d.ts.map +1 -1
  196. package/dist/tools/schedule/ResumeScheduleTool/ResumeScheduleTool.js +1 -14
  197. package/dist/tools/schedule/ResumeScheduleTool/ResumeScheduleTool.js.map +1 -1
  198. package/dist/tools/schedule/RunScheduleTool/RunScheduleTool.d.ts +40 -0
  199. package/dist/tools/schedule/RunScheduleTool/RunScheduleTool.d.ts.map +1 -0
  200. package/dist/tools/schedule/RunScheduleTool/RunScheduleTool.js +126 -0
  201. package/dist/tools/schedule/RunScheduleTool/RunScheduleTool.js.map +1 -0
  202. package/dist/tools/schedule/RunScheduleTool/constants.d.ts +5 -0
  203. package/dist/tools/schedule/RunScheduleTool/constants.d.ts.map +1 -0
  204. package/dist/tools/schedule/RunScheduleTool/constants.js +5 -0
  205. package/dist/tools/schedule/RunScheduleTool/constants.js.map +1 -0
  206. package/dist/tools/schedule/RunScheduleTool/prompt.d.ts +2 -0
  207. package/dist/tools/schedule/RunScheduleTool/prompt.d.ts.map +1 -0
  208. package/dist/tools/schedule/RunScheduleTool/prompt.js +2 -0
  209. package/dist/tools/schedule/RunScheduleTool/prompt.js.map +1 -0
  210. package/dist/tools/schedule/UpdateScheduleTool/UpdateScheduleTool.d.ts.map +1 -1
  211. package/dist/tools/schedule/UpdateScheduleTool/UpdateScheduleTool.js +1 -14
  212. package/dist/tools/schedule/UpdateScheduleTool/UpdateScheduleTool.js.map +1 -1
  213. package/package.json +4 -4
  214. package/dist/interface/cli/commands/chat.d.ts +0 -3
  215. package/dist/interface/cli/commands/chat.d.ts.map +0 -1
  216. package/dist/interface/cli/commands/chat.js +0 -278
  217. package/dist/interface/cli/commands/chat.js.map +0 -1
@@ -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: "cli" | "gateway" | "chat" | "tui";
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: "cli" | "gateway" | "chat" | "tui";
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?: "cli" | "gateway" | "chat" | "tui" | undefined;
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?: "cli" | "gateway" | "chat" | "tui" | undefined;
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: "cli" | "gateway" | "chat" | "tui";
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: "cli" | "gateway" | "chat" | "tui";
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?: "cli" | "gateway" | "chat" | "tui" | undefined;
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?: "cli" | "gateway" | "chat" | "tui" | undefined;
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: "cli" | "gateway" | "chat" | "tui";
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?: "cli" | "gateway" | "chat" | "tui" | undefined;
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: "cli" | "gateway" | "chat" | "tui";
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?: "cli" | "gateway" | "chat" | "tui" | undefined;
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;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAiC7B,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"}
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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"}