pulseed 0.1.2 → 0.1.3

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 (256) hide show
  1. package/dist/adapters/agent-profile-loader.d.ts +26 -0
  2. package/dist/adapters/agent-profile-loader.d.ts.map +1 -0
  3. package/dist/adapters/agent-profile-loader.js +88 -0
  4. package/dist/adapters/agent-profile-loader.js.map +1 -0
  5. package/dist/adapters/claude-code-cli.d.ts.map +1 -1
  6. package/dist/adapters/claude-code-cli.js +3 -1
  7. package/dist/adapters/claude-code-cli.js.map +1 -1
  8. package/dist/adapters/mcp-client-manager.d.ts +22 -0
  9. package/dist/adapters/mcp-client-manager.d.ts.map +1 -0
  10. package/dist/adapters/mcp-client-manager.js +131 -0
  11. package/dist/adapters/mcp-client-manager.js.map +1 -0
  12. package/dist/adapters/mcp-datasource.d.ts +20 -0
  13. package/dist/adapters/mcp-datasource.d.ts.map +1 -0
  14. package/dist/adapters/mcp-datasource.js +116 -0
  15. package/dist/adapters/mcp-datasource.js.map +1 -0
  16. package/dist/adapters/openai-codex.d.ts.map +1 -1
  17. package/dist/adapters/openai-codex.js +3 -1
  18. package/dist/adapters/openai-codex.js.map +1 -1
  19. package/dist/cli/commands/daemon.d.ts +1 -0
  20. package/dist/cli/commands/daemon.d.ts.map +1 -1
  21. package/dist/cli/commands/daemon.js +110 -3
  22. package/dist/cli/commands/daemon.js.map +1 -1
  23. package/dist/cli/commands/goal-dispatch.d.ts.map +1 -1
  24. package/dist/cli/commands/goal-dispatch.js +15 -1
  25. package/dist/cli/commands/goal-dispatch.js.map +1 -1
  26. package/dist/cli/commands/goal-raw.d.ts +1 -0
  27. package/dist/cli/commands/goal-raw.d.ts.map +1 -1
  28. package/dist/cli/commands/goal-raw.js +3 -3
  29. package/dist/cli/commands/goal-raw.js.map +1 -1
  30. package/dist/cli/commands/goal-utils.d.ts +4 -2
  31. package/dist/cli/commands/goal-utils.d.ts.map +1 -1
  32. package/dist/cli/commands/goal-utils.js +35 -19
  33. package/dist/cli/commands/goal-utils.js.map +1 -1
  34. package/dist/cli/commands/goal-write.js +4 -4
  35. package/dist/cli/commands/goal-write.js.map +1 -1
  36. package/dist/cli/commands/run.d.ts +1 -1
  37. package/dist/cli/commands/run.d.ts.map +1 -1
  38. package/dist/cli/commands/run.js +2 -2
  39. package/dist/cli/commands/run.js.map +1 -1
  40. package/dist/cli/commands/suggest.d.ts.map +1 -1
  41. package/dist/cli/commands/suggest.js +6 -4
  42. package/dist/cli/commands/suggest.js.map +1 -1
  43. package/dist/cli/setup.d.ts +2 -1
  44. package/dist/cli/setup.d.ts.map +1 -1
  45. package/dist/cli/setup.js +19 -5
  46. package/dist/cli/setup.js.map +1 -1
  47. package/dist/cli/utils.d.ts.map +1 -1
  48. package/dist/cli/utils.js +5 -0
  49. package/dist/cli/utils.js.map +1 -1
  50. package/dist/cli-runner.d.ts.map +1 -1
  51. package/dist/cli-runner.js +45 -2
  52. package/dist/cli-runner.js.map +1 -1
  53. package/dist/core-loop.d.ts +4 -1
  54. package/dist/core-loop.d.ts.map +1 -1
  55. package/dist/core-loop.js +11 -4
  56. package/dist/core-loop.js.map +1 -1
  57. package/dist/drive/gap-calculator.d.ts +1 -1
  58. package/dist/drive/gap-calculator.d.ts.map +1 -1
  59. package/dist/drive/gap-calculator.js +12 -3
  60. package/dist/drive/gap-calculator.js.map +1 -1
  61. package/dist/execution/adapter-layer.d.ts +2 -0
  62. package/dist/execution/adapter-layer.d.ts.map +1 -1
  63. package/dist/execution/adapter-layer.js.map +1 -1
  64. package/dist/execution/task-executor.d.ts.map +1 -1
  65. package/dist/execution/task-executor.js +34 -3
  66. package/dist/execution/task-executor.js.map +1 -1
  67. package/dist/execution/task-lifecycle.d.ts +4 -0
  68. package/dist/execution/task-lifecycle.d.ts.map +1 -1
  69. package/dist/execution/task-lifecycle.js +12 -3
  70. package/dist/execution/task-lifecycle.js.map +1 -1
  71. package/dist/execution/task-prompt-builder.d.ts.map +1 -1
  72. package/dist/execution/task-prompt-builder.js +3 -0
  73. package/dist/execution/task-prompt-builder.js.map +1 -1
  74. package/dist/execution/task-verifier.d.ts.map +1 -1
  75. package/dist/execution/task-verifier.js +23 -3
  76. package/dist/execution/task-verifier.js.map +1 -1
  77. package/dist/goal/goal-decomposer.js +1 -1
  78. package/dist/goal/goal-decomposer.js.map +1 -1
  79. package/dist/goal/goal-refiner.d.ts.map +1 -1
  80. package/dist/goal/goal-refiner.js +10 -0
  81. package/dist/goal/goal-refiner.js.map +1 -1
  82. package/dist/knowledge/memory-persistence.d.ts.map +1 -1
  83. package/dist/knowledge/memory-persistence.js +18 -3
  84. package/dist/knowledge/memory-persistence.js.map +1 -1
  85. package/dist/llm/provider-config.d.ts +4 -0
  86. package/dist/llm/provider-config.d.ts.map +1 -1
  87. package/dist/llm/provider-config.js +42 -2
  88. package/dist/llm/provider-config.js.map +1 -1
  89. package/dist/llm/provider-factory.d.ts.map +1 -1
  90. package/dist/llm/provider-factory.js +3 -4
  91. package/dist/llm/provider-factory.js.map +1 -1
  92. package/dist/loop/core-loop-phases.d.ts.map +1 -1
  93. package/dist/loop/core-loop-phases.js +9 -4
  94. package/dist/loop/core-loop-phases.js.map +1 -1
  95. package/dist/loop/core-loop-types.d.ts +2 -0
  96. package/dist/loop/core-loop-types.d.ts.map +1 -1
  97. package/dist/loop/core-loop-types.js.map +1 -1
  98. package/dist/mcp-server/index.d.ts +4 -0
  99. package/dist/mcp-server/index.d.ts.map +1 -0
  100. package/dist/mcp-server/index.js +66 -0
  101. package/dist/mcp-server/index.js.map +1 -0
  102. package/dist/mcp-server/tools.d.ts +35 -0
  103. package/dist/mcp-server/tools.d.ts.map +1 -0
  104. package/dist/mcp-server/tools.js +160 -0
  105. package/dist/mcp-server/tools.js.map +1 -0
  106. package/dist/observation/observation-apply.d.ts.map +1 -1
  107. package/dist/observation/observation-apply.js +5 -1
  108. package/dist/observation/observation-apply.js.map +1 -1
  109. package/dist/observation/observation-engine.d.ts +4 -2
  110. package/dist/observation/observation-engine.d.ts.map +1 -1
  111. package/dist/observation/observation-engine.js +14 -6
  112. package/dist/observation/observation-engine.js.map +1 -1
  113. package/dist/observation/observation-llm.d.ts +10 -2
  114. package/dist/observation/observation-llm.d.ts.map +1 -1
  115. package/dist/observation/observation-llm.js +89 -10
  116. package/dist/observation/observation-llm.js.map +1 -1
  117. package/dist/observation/workspace-context.d.ts +1 -1
  118. package/dist/observation/workspace-context.d.ts.map +1 -1
  119. package/dist/observation/workspace-context.js +41 -9
  120. package/dist/observation/workspace-context.js.map +1 -1
  121. package/dist/orchestrator/goal-loop.d.ts +33 -0
  122. package/dist/orchestrator/goal-loop.d.ts.map +1 -0
  123. package/dist/orchestrator/goal-loop.js +72 -0
  124. package/dist/orchestrator/goal-loop.js.map +1 -0
  125. package/dist/prompt/context-assembler.js +3 -3
  126. package/dist/prompt/context-assembler.js.map +1 -1
  127. package/dist/prompt/purposes/strategy.d.ts +71 -26
  128. package/dist/prompt/purposes/strategy.d.ts.map +1 -1
  129. package/dist/prompt/purposes/strategy.js +34 -8
  130. package/dist/prompt/purposes/strategy.js.map +1 -1
  131. package/dist/reflection/dream-consolidation.d.ts +11 -0
  132. package/dist/reflection/dream-consolidation.d.ts.map +1 -0
  133. package/dist/reflection/dream-consolidation.js +61 -0
  134. package/dist/reflection/dream-consolidation.js.map +1 -0
  135. package/dist/reflection/evening-catchup.d.ts +13 -0
  136. package/dist/reflection/evening-catchup.d.ts.map +1 -0
  137. package/dist/reflection/evening-catchup.js +116 -0
  138. package/dist/reflection/evening-catchup.js.map +1 -0
  139. package/dist/reflection/index.d.ts +7 -0
  140. package/dist/reflection/index.d.ts.map +1 -0
  141. package/dist/reflection/index.js +6 -0
  142. package/dist/reflection/index.js.map +1 -0
  143. package/dist/reflection/morning-planning.d.ts +13 -0
  144. package/dist/reflection/morning-planning.d.ts.map +1 -0
  145. package/dist/reflection/morning-planning.js +107 -0
  146. package/dist/reflection/morning-planning.js.map +1 -0
  147. package/dist/reflection/types.d.ts +168 -0
  148. package/dist/reflection/types.d.ts.map +1 -0
  149. package/dist/reflection/types.js +58 -0
  150. package/dist/reflection/types.js.map +1 -0
  151. package/dist/reflection/weekly-review.d.ts +11 -0
  152. package/dist/reflection/weekly-review.d.ts.map +1 -0
  153. package/dist/reflection/weekly-review.js +114 -0
  154. package/dist/reflection/weekly-review.js.map +1 -0
  155. package/dist/runtime/cron-scheduler.d.ts +13 -0
  156. package/dist/runtime/cron-scheduler.d.ts.map +1 -0
  157. package/dist/runtime/cron-scheduler.js +90 -0
  158. package/dist/runtime/cron-scheduler.js.map +1 -0
  159. package/dist/runtime/daemon-runner.d.ts +34 -0
  160. package/dist/runtime/daemon-runner.d.ts.map +1 -1
  161. package/dist/runtime/daemon-runner.js +207 -4
  162. package/dist/runtime/daemon-runner.js.map +1 -1
  163. package/dist/runtime/event-server.d.ts +17 -2
  164. package/dist/runtime/event-server.d.ts.map +1 -1
  165. package/dist/runtime/event-server.js +214 -6
  166. package/dist/runtime/event-server.js.map +1 -1
  167. package/dist/runtime/hook-manager.d.ts +41 -0
  168. package/dist/runtime/hook-manager.d.ts.map +1 -0
  169. package/dist/runtime/hook-manager.js +167 -0
  170. package/dist/runtime/hook-manager.js.map +1 -0
  171. package/dist/runtime/notification-batcher.d.ts +28 -0
  172. package/dist/runtime/notification-batcher.d.ts.map +1 -0
  173. package/dist/runtime/notification-batcher.js +100 -0
  174. package/dist/runtime/notification-batcher.js.map +1 -0
  175. package/dist/runtime/notification-dispatcher.d.ts +5 -0
  176. package/dist/runtime/notification-dispatcher.d.ts.map +1 -1
  177. package/dist/runtime/notification-dispatcher.js +22 -0
  178. package/dist/runtime/notification-dispatcher.js.map +1 -1
  179. package/dist/runtime/trigger-mapper.d.ts +26 -0
  180. package/dist/runtime/trigger-mapper.d.ts.map +1 -0
  181. package/dist/runtime/trigger-mapper.js +89 -0
  182. package/dist/runtime/trigger-mapper.js.map +1 -0
  183. package/dist/strategy/strategy-helpers.d.ts +6 -0
  184. package/dist/strategy/strategy-helpers.d.ts.map +1 -1
  185. package/dist/strategy/strategy-helpers.js +20 -0
  186. package/dist/strategy/strategy-helpers.js.map +1 -1
  187. package/dist/strategy/strategy-manager-base.d.ts.map +1 -1
  188. package/dist/strategy/strategy-manager-base.js +16 -8
  189. package/dist/strategy/strategy-manager-base.js.map +1 -1
  190. package/dist/tui/app.d.ts.map +1 -1
  191. package/dist/tui/app.js +3 -2
  192. package/dist/tui/app.js.map +1 -1
  193. package/dist/tui/approval-overlay.d.ts.map +1 -1
  194. package/dist/tui/approval-overlay.js +5 -4
  195. package/dist/tui/approval-overlay.js.map +1 -1
  196. package/dist/tui/chat.d.ts.map +1 -1
  197. package/dist/tui/chat.js +6 -19
  198. package/dist/tui/chat.js.map +1 -1
  199. package/dist/tui/dashboard.d.ts.map +1 -1
  200. package/dist/tui/dashboard.js +3 -24
  201. package/dist/tui/dashboard.js.map +1 -1
  202. package/dist/tui/help-overlay.d.ts.map +1 -1
  203. package/dist/tui/help-overlay.js +2 -1
  204. package/dist/tui/help-overlay.js.map +1 -1
  205. package/dist/tui/markdown-renderer.d.ts.map +1 -1
  206. package/dist/tui/markdown-renderer.js +5 -4
  207. package/dist/tui/markdown-renderer.js.map +1 -1
  208. package/dist/tui/report-view.d.ts.map +1 -1
  209. package/dist/tui/report-view.js +1 -25
  210. package/dist/tui/report-view.js.map +1 -1
  211. package/dist/tui/theme.d.ts +47 -0
  212. package/dist/tui/theme.d.ts.map +1 -0
  213. package/dist/tui/theme.js +116 -0
  214. package/dist/tui/theme.js.map +1 -0
  215. package/dist/types/agent-profile.d.ts +32 -0
  216. package/dist/types/agent-profile.d.ts.map +1 -0
  217. package/dist/types/agent-profile.js +16 -0
  218. package/dist/types/agent-profile.js.map +1 -0
  219. package/dist/types/cron.d.ts +59 -0
  220. package/dist/types/cron.d.ts.map +1 -0
  221. package/dist/types/cron.js +13 -0
  222. package/dist/types/cron.js.map +1 -0
  223. package/dist/types/daemon.d.ts +47 -0
  224. package/dist/types/daemon.d.ts.map +1 -1
  225. package/dist/types/daemon.js +11 -0
  226. package/dist/types/daemon.js.map +1 -1
  227. package/dist/types/data-source.d.ts +9 -9
  228. package/dist/types/data-source.d.ts.map +1 -1
  229. package/dist/types/data-source.js +1 -1
  230. package/dist/types/data-source.js.map +1 -1
  231. package/dist/types/hook.d.ts +142 -0
  232. package/dist/types/hook.d.ts.map +1 -0
  233. package/dist/types/hook.js +43 -0
  234. package/dist/types/hook.js.map +1 -0
  235. package/dist/types/mcp.d.ts +170 -0
  236. package/dist/types/mcp.d.ts.map +1 -0
  237. package/dist/types/mcp.js +30 -0
  238. package/dist/types/mcp.js.map +1 -0
  239. package/dist/types/notification.d.ts +37 -0
  240. package/dist/types/notification.d.ts.map +1 -1
  241. package/dist/types/notification.js +7 -0
  242. package/dist/types/notification.js.map +1 -1
  243. package/dist/types/strategy.d.ts +12 -12
  244. package/dist/types/trigger.d.ts +77 -0
  245. package/dist/types/trigger.d.ts.map +1 -0
  246. package/dist/types/trigger.js +21 -0
  247. package/dist/types/trigger.js.map +1 -0
  248. package/package.json +8 -3
  249. package/dist/cli/commands/task-read 2.d.ts +0 -4
  250. package/dist/cli/commands/task-read 2.d.ts.map +0 -1
  251. package/dist/cli/commands/task-read 2.js +0 -195
  252. package/dist/cli/commands/task-read 2.js.map +0 -1
  253. package/dist/prompt/slot-definitions 2.d.ts +0 -33
  254. package/dist/prompt/slot-definitions 2.d.ts.map +0 -1
  255. package/dist/prompt/slot-definitions 2.js +0 -332
  256. package/dist/prompt/slot-definitions 2.js.map +0 -1
@@ -0,0 +1,26 @@
1
+ import { type AgentProfileWithPrompt } from "../types/agent-profile.js";
2
+ export declare class AgentProfileLoader {
3
+ private readonly agentsDir;
4
+ constructor(agentsDir: string);
5
+ /** Load all *.md files from agentsDir. Skips invalid files with a warning. */
6
+ loadAll(): Promise<AgentProfileWithPrompt[]>;
7
+ /** Load and validate a single agent profile file. Throws on invalid content. */
8
+ loadOne(filePath: string): Promise<AgentProfileWithPrompt>;
9
+ /**
10
+ * Split content on --- delimiters and parse YAML frontmatter.
11
+ * Expects format:
12
+ * ---
13
+ * key: value
14
+ * ---
15
+ * body text
16
+ */
17
+ static parseFrontmatter(content: string): {
18
+ frontmatter: Record<string, unknown>;
19
+ body: string;
20
+ };
21
+ /** Find a profile by exact name. Returns null if not found. */
22
+ findByName(profiles: AgentProfileWithPrompt[], name: string): AgentProfileWithPrompt | null;
23
+ /** Find all profiles that include the given capability. */
24
+ findByCapability(profiles: AgentProfileWithPrompt[], capability: string): AgentProfileWithPrompt[];
25
+ }
26
+ //# sourceMappingURL=agent-profile-loader.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"agent-profile-loader.d.ts","sourceRoot":"","sources":["../../src/adapters/agent-profile-loader.ts"],"names":[],"mappings":"AAQA,OAAO,EAAsB,KAAK,sBAAsB,EAAE,MAAM,2BAA2B,CAAC;AAI5F,qBAAa,kBAAkB;IACjB,OAAO,CAAC,QAAQ,CAAC,SAAS;gBAAT,SAAS,EAAE,MAAM;IAE9C,8EAA8E;IACxE,OAAO,IAAI,OAAO,CAAC,sBAAsB,EAAE,CAAC;IAyBlD,gFAAgF;IAC1E,OAAO,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,sBAAsB,CAAC;IAOhE;;;;;;;OAOG;IACH,MAAM,CAAC,gBAAgB,CAAC,OAAO,EAAE,MAAM,GAAG;QAAE,WAAW,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE;IA8BhG,+DAA+D;IAC/D,UAAU,CAAC,QAAQ,EAAE,sBAAsB,EAAE,EAAE,IAAI,EAAE,MAAM,GAAG,sBAAsB,GAAG,IAAI;IAI3F,2DAA2D;IAC3D,gBAAgB,CAAC,QAAQ,EAAE,sBAAsB,EAAE,EAAE,UAAU,EAAE,MAAM,GAAG,sBAAsB,EAAE;CAGnG"}
@@ -0,0 +1,88 @@
1
+ // ─── AgentProfileLoader ───
2
+ //
3
+ // Loads agent definition files from ~/.pulseed/agents/*.md.
4
+ // Each file has YAML frontmatter (AgentProfile fields) + a system prompt body.
5
+ import * as fsp from "node:fs/promises";
6
+ import * as path from "node:path";
7
+ import yaml from "js-yaml";
8
+ import { AgentProfileSchema } from "../types/agent-profile.js";
9
+ // ─── AgentProfileLoader ───
10
+ export class AgentProfileLoader {
11
+ agentsDir;
12
+ constructor(agentsDir) {
13
+ this.agentsDir = agentsDir;
14
+ }
15
+ /** Load all *.md files from agentsDir. Skips invalid files with a warning. */
16
+ async loadAll() {
17
+ let entries;
18
+ try {
19
+ entries = await fsp.readdir(this.agentsDir);
20
+ }
21
+ catch {
22
+ return [];
23
+ }
24
+ const mdFiles = entries.filter((e) => e.endsWith(".md"));
25
+ const results = [];
26
+ for (const file of mdFiles) {
27
+ const filePath = path.join(this.agentsDir, file);
28
+ try {
29
+ const profile = await this.loadOne(filePath);
30
+ results.push(profile);
31
+ }
32
+ catch (err) {
33
+ const msg = err instanceof Error ? err.message : String(err);
34
+ console.warn(`[agent-profile-loader] Skipping ${file}: ${msg}`);
35
+ }
36
+ }
37
+ return results;
38
+ }
39
+ /** Load and validate a single agent profile file. Throws on invalid content. */
40
+ async loadOne(filePath) {
41
+ const content = await fsp.readFile(filePath, "utf-8");
42
+ const { frontmatter, body } = AgentProfileLoader.parseFrontmatter(content);
43
+ const parsed = AgentProfileSchema.parse(frontmatter);
44
+ return { ...parsed, system_prompt: body.trim(), file_path: filePath };
45
+ }
46
+ /**
47
+ * Split content on --- delimiters and parse YAML frontmatter.
48
+ * Expects format:
49
+ * ---
50
+ * key: value
51
+ * ---
52
+ * body text
53
+ */
54
+ static parseFrontmatter(content) {
55
+ const lines = content.split("\n");
56
+ // Must start with ---
57
+ if (lines[0]?.trim() !== "---") {
58
+ return { frontmatter: {}, body: content };
59
+ }
60
+ // Find the closing ---
61
+ const closeIdx = lines.findIndex((line, i) => i > 0 && line.trim() === "---");
62
+ if (closeIdx === -1) {
63
+ return { frontmatter: {}, body: content };
64
+ }
65
+ const yamlLines = lines.slice(1, closeIdx).join("\n");
66
+ const bodyLines = lines.slice(closeIdx + 1).join("\n");
67
+ let frontmatter;
68
+ try {
69
+ const parsed = yaml.load(yamlLines);
70
+ frontmatter = (parsed !== null && typeof parsed === "object" && !Array.isArray(parsed))
71
+ ? parsed
72
+ : {};
73
+ }
74
+ catch {
75
+ frontmatter = {};
76
+ }
77
+ return { frontmatter, body: bodyLines };
78
+ }
79
+ /** Find a profile by exact name. Returns null if not found. */
80
+ findByName(profiles, name) {
81
+ return profiles.find((p) => p.name === name) ?? null;
82
+ }
83
+ /** Find all profiles that include the given capability. */
84
+ findByCapability(profiles, capability) {
85
+ return profiles.filter((p) => p.capabilities.includes(capability));
86
+ }
87
+ }
88
+ //# sourceMappingURL=agent-profile-loader.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"agent-profile-loader.js","sourceRoot":"","sources":["../../src/adapters/agent-profile-loader.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"claude-code-cli.d.ts","sourceRoot":"","sources":["../../src/adapters/claude-code-cli.ts"],"names":[],"mappings":"AAaA,OAAO,KAAK,EAAE,QAAQ,EAAE,SAAS,EAAE,WAAW,EAAE,MAAM,+BAA+B,CAAC;AAGtF,qBAAa,oBAAqB,YAAW,QAAQ;IACnD,QAAQ,CAAC,WAAW,qBAAqB;IACzC,QAAQ,CAAC,YAAY,yEAA0E;IAE/F;;;OAGG;IACH,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAS;IACjC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAqB;gBAEjC,OAAO,GAAE,MAAiB,EAAE,OAAO,CAAC,EAAE,MAAM;IAKlD,OAAO,CAAC,IAAI,EAAE,SAAS,GAAG,OAAO,CAAC,WAAW,CAAC;CAwBrD"}
1
+ {"version":3,"file":"claude-code-cli.d.ts","sourceRoot":"","sources":["../../src/adapters/claude-code-cli.ts"],"names":[],"mappings":"AAaA,OAAO,KAAK,EAAE,QAAQ,EAAE,SAAS,EAAE,WAAW,EAAE,MAAM,+BAA+B,CAAC;AAGtF,qBAAa,oBAAqB,YAAW,QAAQ;IACnD,QAAQ,CAAC,WAAW,qBAAqB;IACzC,QAAQ,CAAC,YAAY,yEAA0E;IAE/F;;;OAGG;IACH,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAS;IACjC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAqB;gBAEjC,OAAO,GAAE,MAAiB,EAAE,OAAO,CAAC,EAAE,MAAM;IAKlD,OAAO,CAAC,IAAI,EAAE,SAAS,GAAG,OAAO,CAAC,WAAW,CAAC;CA0BrD"}
@@ -35,7 +35,9 @@ export class ClaudeCodeCLIAdapter {
35
35
  if (task.allowed_tools && task.allowed_tools.length > 0) {
36
36
  spawnArgs.push("--allowedTools", task.allowed_tools.join(","));
37
37
  }
38
- const result = await spawnWithTimeout(this.cliPath, spawnArgs, { cwd: this.workDir, stdinData: task.prompt }, task.timeout_ms);
38
+ // Per-task cwd override (from workspace_path: constraint) takes priority over constructor workDir.
39
+ const cwd = task.cwd ?? this.workDir;
40
+ const result = await spawnWithTimeout(this.cliPath, spawnArgs, { cwd, stdinData: task.prompt }, task.timeout_ms);
39
41
  const elapsed = Date.now() - startedAt;
40
42
  return spawnResultToAgentResult(result, elapsed, task.timeout_ms);
41
43
  }
@@ -1 +1 @@
1
- {"version":3,"file":"claude-code-cli.js","sourceRoot":"","sources":["../../src/adapters/claude-code-cli.ts"],"names":[],"mappings":"AAAA,+BAA+B;AAC/B,EAAE;AACF,gEAAgE;AAChE,mEAAmE;AACnE,8CAA8C;AAC9C,EAAE;AACF,wCAAwC;AACxC,2EAA2E;AAC3E,oEAAoE;AACpE,kFAAkF;AAClF,4FAA4F;AAC5F,kEAAkE;AAGlE,OAAO,EAAE,gBAAgB,EAAE,wBAAwB,EAAE,MAAM,mBAAmB,CAAC;AAE/E,MAAM,OAAO,oBAAoB;IACtB,WAAW,GAAG,iBAAiB,CAAC;IAChC,YAAY,GAAG,CAAC,cAAc,EAAE,YAAY,EAAE,aAAa,EAAE,cAAc,CAAU,CAAC;IAE/F;;;OAGG;IACc,OAAO,CAAS;IAChB,OAAO,CAAqB;IAE7C,YAAY,UAAkB,QAAQ,EAAE,OAAgB;QACtD,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;QACvB,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;IACzB,CAAC;IAED,KAAK,CAAC,OAAO,CAAC,IAAe;QAC3B,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QAE7B,0EAA0E;QAC1E,0EAA0E;QAC1E,MAAM,SAAS,GAAa,CAAC,SAAS,CAAC,CAAC;QAExC,2DAA2D;QAC3D,2EAA2E;QAC3E,iDAAiD;QACjD,IAAI,IAAI,CAAC,aAAa,IAAI,IAAI,CAAC,aAAa,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACxD,SAAS,CAAC,IAAI,CAAC,gBAAgB,EAAE,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;QACjE,CAAC;QAED,MAAM,MAAM,GAAG,MAAM,gBAAgB,CACnC,IAAI,CAAC,OAAO,EACZ,SAAS,EACT,EAAE,GAAG,EAAE,IAAI,CAAC,OAAO,EAAE,SAAS,EAAE,IAAI,CAAC,MAAM,EAAE,EAC7C,IAAI,CAAC,UAAU,CAChB,CAAC;QAEF,MAAM,OAAO,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,SAAS,CAAC;QACvC,OAAO,wBAAwB,CAAC,MAAM,EAAE,OAAO,EAAE,IAAI,CAAC,UAAU,CAAC,CAAC;IACpE,CAAC;CACF"}
1
+ {"version":3,"file":"claude-code-cli.js","sourceRoot":"","sources":["../../src/adapters/claude-code-cli.ts"],"names":[],"mappings":"AAAA,+BAA+B;AAC/B,EAAE;AACF,gEAAgE;AAChE,mEAAmE;AACnE,8CAA8C;AAC9C,EAAE;AACF,wCAAwC;AACxC,2EAA2E;AAC3E,oEAAoE;AACpE,kFAAkF;AAClF,4FAA4F;AAC5F,kEAAkE;AAGlE,OAAO,EAAE,gBAAgB,EAAE,wBAAwB,EAAE,MAAM,mBAAmB,CAAC;AAE/E,MAAM,OAAO,oBAAoB;IACtB,WAAW,GAAG,iBAAiB,CAAC;IAChC,YAAY,GAAG,CAAC,cAAc,EAAE,YAAY,EAAE,aAAa,EAAE,cAAc,CAAU,CAAC;IAE/F;;;OAGG;IACc,OAAO,CAAS;IAChB,OAAO,CAAqB;IAE7C,YAAY,UAAkB,QAAQ,EAAE,OAAgB;QACtD,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;QACvB,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;IACzB,CAAC;IAED,KAAK,CAAC,OAAO,CAAC,IAAe;QAC3B,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QAE7B,0EAA0E;QAC1E,0EAA0E;QAC1E,MAAM,SAAS,GAAa,CAAC,SAAS,CAAC,CAAC;QAExC,2DAA2D;QAC3D,2EAA2E;QAC3E,iDAAiD;QACjD,IAAI,IAAI,CAAC,aAAa,IAAI,IAAI,CAAC,aAAa,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACxD,SAAS,CAAC,IAAI,CAAC,gBAAgB,EAAE,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;QACjE,CAAC;QAED,mGAAmG;QACnG,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,IAAI,IAAI,CAAC,OAAO,CAAC;QACrC,MAAM,MAAM,GAAG,MAAM,gBAAgB,CACnC,IAAI,CAAC,OAAO,EACZ,SAAS,EACT,EAAE,GAAG,EAAE,SAAS,EAAE,IAAI,CAAC,MAAM,EAAE,EAC/B,IAAI,CAAC,UAAU,CAChB,CAAC;QAEF,MAAM,OAAO,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,SAAS,CAAC;QACvC,OAAO,wBAAwB,CAAC,MAAM,EAAE,OAAO,EAAE,IAAI,CAAC,UAAU,CAAC,CAAC;IACpE,CAAC;CACF"}
@@ -0,0 +1,22 @@
1
+ import type { MCPServerConfig, IMCPConnection } from "../types/mcp.js";
2
+ import { MCPDataSourceAdapter } from "./mcp-datasource.js";
3
+ export interface ServerStatus {
4
+ id: string;
5
+ name: string;
6
+ enabled: boolean;
7
+ connected: boolean;
8
+ }
9
+ export type MCPConnectionFactory = (config: MCPServerConfig) => IMCPConnection;
10
+ export declare class MCPClientManager {
11
+ private readonly baseDir;
12
+ private readonly connectionFactory?;
13
+ private adapters;
14
+ private serverConfigs;
15
+ constructor(baseDir: string, connectionFactory?: MCPConnectionFactory);
16
+ loadConfig(): Promise<MCPServerConfig[]>;
17
+ connectAll(): Promise<MCPDataSourceAdapter[]>;
18
+ disconnectAll(): Promise<void>;
19
+ getAdapter(serverId: string): MCPDataSourceAdapter | undefined;
20
+ listServers(): Promise<ServerStatus[]>;
21
+ }
22
+ //# sourceMappingURL=mcp-client-manager.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mcp-client-manager.d.ts","sourceRoot":"","sources":["../../src/adapters/mcp-client-manager.ts"],"names":[],"mappings":"AASA,OAAO,KAAK,EAAE,eAAe,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AACvE,OAAO,EAAE,oBAAoB,EAAE,MAAM,qBAAqB,CAAC;AAM3D,MAAM,WAAW,YAAY;IAC3B,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,OAAO,CAAC;IACjB,SAAS,EAAE,OAAO,CAAC;CACpB;AAID,MAAM,MAAM,oBAAoB,GAAG,CAAC,MAAM,EAAE,eAAe,KAAK,cAAc,CAAC;AAsD/E,qBAAa,gBAAgB;IAC3B,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAS;IACjC,OAAO,CAAC,QAAQ,CAAC,iBAAiB,CAAC,CAAuB;IAC1D,OAAO,CAAC,QAAQ,CAAgD;IAChE,OAAO,CAAC,aAAa,CAAyB;gBAElC,OAAO,EAAE,MAAM,EAAE,iBAAiB,CAAC,EAAE,oBAAoB;IAK/D,UAAU,IAAI,OAAO,CAAC,eAAe,EAAE,CAAC;IAgBxC,UAAU,IAAI,OAAO,CAAC,oBAAoB,EAAE,CAAC;IA+B7C,aAAa,IAAI,OAAO,CAAC,IAAI,CAAC;IAWpC,UAAU,CAAC,QAAQ,EAAE,MAAM,GAAG,oBAAoB,GAAG,SAAS;IAIxD,WAAW,IAAI,OAAO,CAAC,YAAY,EAAE,CAAC;CAY7C"}
@@ -0,0 +1,131 @@
1
+ // ─── MCPClientManager ───
2
+ //
3
+ // Manages multiple MCP server connections loaded from a config file.
4
+ // Each enabled server gets its own MCPDataSourceAdapter backed by a real
5
+ // MCP Client. For testability, a connection factory can be injected.
6
+ import * as fsp from "node:fs/promises";
7
+ import * as path from "node:path";
8
+ import { MCPServersConfigSchema } from "../types/mcp.js";
9
+ import { MCPDataSourceAdapter } from "./mcp-datasource.js";
10
+ const CONFIG_FILE = "mcp-servers.json";
11
+ // ─── Default factory using real MCP SDK ───
12
+ async function createRealConnection(config) {
13
+ const { Client } = await import("@modelcontextprotocol/sdk/client/index.js");
14
+ let connected = false;
15
+ // Dynamically import transports to avoid loading them when mocked
16
+ let transport;
17
+ if (config.transport === "stdio") {
18
+ const { StdioClientTransport } = await import("@modelcontextprotocol/sdk/client/stdio.js");
19
+ transport = new StdioClientTransport({
20
+ command: config.command ?? "",
21
+ args: config.args ?? [],
22
+ env: config.env,
23
+ });
24
+ }
25
+ else {
26
+ const { SSEClientTransport } = await import("@modelcontextprotocol/sdk/client/sse.js");
27
+ transport = new SSEClientTransport(new URL(config.url ?? ""));
28
+ }
29
+ const client = new Client({ name: "pulseed", version: "0.1.0" }, { capabilities: {} });
30
+ return {
31
+ async connect() {
32
+ await client.connect(transport);
33
+ connected = true;
34
+ },
35
+ async listTools() {
36
+ const result = await client.listTools();
37
+ return result.tools.map((t) => ({ name: t.name }));
38
+ },
39
+ async callTool(name, args) {
40
+ const result = await client.callTool({ name, arguments: args });
41
+ return result;
42
+ },
43
+ async close() {
44
+ await client.close();
45
+ connected = false;
46
+ },
47
+ isConnected() {
48
+ return connected;
49
+ },
50
+ };
51
+ }
52
+ // ─── MCPClientManager ───
53
+ export class MCPClientManager {
54
+ baseDir;
55
+ connectionFactory;
56
+ adapters = new Map();
57
+ serverConfigs = [];
58
+ constructor(baseDir, connectionFactory) {
59
+ this.baseDir = baseDir;
60
+ this.connectionFactory = connectionFactory;
61
+ }
62
+ async loadConfig() {
63
+ const configPath = path.join(this.baseDir, CONFIG_FILE);
64
+ let raw;
65
+ try {
66
+ raw = await fsp.readFile(configPath, "utf-8");
67
+ }
68
+ catch {
69
+ // No config file — return empty list
70
+ this.serverConfigs = [];
71
+ return [];
72
+ }
73
+ const parsed = MCPServersConfigSchema.parse(JSON.parse(raw));
74
+ this.serverConfigs = parsed.servers;
75
+ return this.serverConfigs;
76
+ }
77
+ async connectAll() {
78
+ const configs = this.serverConfigs.length > 0
79
+ ? this.serverConfigs
80
+ : await this.loadConfig();
81
+ const results = [];
82
+ for (const config of configs) {
83
+ if (!config.enabled)
84
+ continue;
85
+ let connection;
86
+ if (this.connectionFactory) {
87
+ connection = this.connectionFactory(config);
88
+ }
89
+ else {
90
+ connection = await createRealConnection(config);
91
+ }
92
+ const adapter = new MCPDataSourceAdapter(config, connection);
93
+ try {
94
+ await adapter.connect();
95
+ this.adapters.set(config.id, adapter);
96
+ results.push(adapter);
97
+ }
98
+ catch (err) {
99
+ // Connection failure is non-fatal — log and skip
100
+ console.warn(`[MCPClientManager] Failed to connect to "${config.name}": ${String(err)}`);
101
+ }
102
+ }
103
+ return results;
104
+ }
105
+ async disconnectAll() {
106
+ for (const adapter of this.adapters.values()) {
107
+ try {
108
+ await adapter.disconnect();
109
+ }
110
+ catch {
111
+ // Ignore disconnect errors
112
+ }
113
+ }
114
+ this.adapters.clear();
115
+ }
116
+ getAdapter(serverId) {
117
+ return this.adapters.get(serverId);
118
+ }
119
+ async listServers() {
120
+ const configs = this.serverConfigs.length > 0
121
+ ? this.serverConfigs
122
+ : await this.loadConfig();
123
+ return configs.map((c) => ({
124
+ id: c.id,
125
+ name: c.name,
126
+ enabled: c.enabled,
127
+ connected: this.adapters.get(c.id) !== undefined,
128
+ }));
129
+ }
130
+ }
131
+ //# sourceMappingURL=mcp-client-manager.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mcp-client-manager.js","sourceRoot":"","sources":["../../src/adapters/mcp-client-manager.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,20 @@
1
+ import type { IDataSourceAdapter } from "../observation/data-source-adapter.js";
2
+ import type { DataSourceType, DataSourceConfig, DataSourceQuery, DataSourceResult } from "../types/data-source.js";
3
+ import type { MCPServerConfig, IMCPConnection } from "../types/mcp.js";
4
+ export declare class MCPDataSourceAdapter implements IDataSourceAdapter {
5
+ readonly sourceId: string;
6
+ readonly sourceType: DataSourceType;
7
+ readonly config: DataSourceConfig;
8
+ private readonly serverConfig;
9
+ private readonly connection;
10
+ private connected;
11
+ constructor(serverConfig: MCPServerConfig, connection: IMCPConnection);
12
+ connect(): Promise<void>;
13
+ disconnect(): Promise<void>;
14
+ healthCheck(): Promise<boolean>;
15
+ getSupportedDimensions(): string[];
16
+ query(params: DataSourceQuery): Promise<DataSourceResult>;
17
+ private findMapping;
18
+ private parseTextValue;
19
+ }
20
+ //# sourceMappingURL=mcp-datasource.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mcp-datasource.d.ts","sourceRoot":"","sources":["../../src/adapters/mcp-datasource.ts"],"names":[],"mappings":"AASA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,uCAAuC,CAAC;AAChF,OAAO,KAAK,EACV,cAAc,EACd,gBAAgB,EAChB,eAAe,EACf,gBAAgB,EACjB,MAAM,yBAAyB,CAAC;AACjC,OAAO,KAAK,EACV,eAAe,EAEf,cAAc,EACf,MAAM,iBAAiB,CAAC;AAYzB,qBAAa,oBAAqB,YAAW,kBAAkB;IAC7D,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,UAAU,EAAE,cAAc,CAAS;IAC5C,QAAQ,CAAC,MAAM,EAAE,gBAAgB,CAAC;IAElC,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAkB;IAC/C,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAiB;IAC5C,OAAO,CAAC,SAAS,CAAS;gBAEd,YAAY,EAAE,eAAe,EAAE,UAAU,EAAE,cAAc;IAgB/D,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;IAMxB,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC;IAM3B,WAAW,IAAI,OAAO,CAAC,OAAO,CAAC;IAIrC,sBAAsB,IAAI,MAAM,EAAE;IAI5B,KAAK,CAAC,MAAM,EAAE,eAAe,GAAG,OAAO,CAAC,gBAAgB,CAAC;IAmD/D,OAAO,CAAC,WAAW;IAMnB,OAAO,CAAC,cAAc;CASvB"}
@@ -0,0 +1,116 @@
1
+ // ─── MCPDataSourceAdapter ───
2
+ //
3
+ // IDataSourceAdapter implementation that delegates observation to an MCP server
4
+ // via the Model Context Protocol. Each dimension is mapped to an MCP tool call
5
+ // defined in MCPServerConfig.tool_mappings.
6
+ //
7
+ // The MCP connection is injected (IMCPConnection) so that unit tests can mock
8
+ // the protocol layer without spawning real processes.
9
+ // ─── Glob pattern matcher ───
10
+ function matchesPattern(dimension, pattern) {
11
+ // Convert glob-style pattern ("test_*", "coverage") to a regex
12
+ const escaped = pattern.replace(/[.+^${}()|[\]\\]/g, "\\$&").replace(/\*/g, ".*");
13
+ return new RegExp(`^${escaped}$`).test(dimension);
14
+ }
15
+ // ─── MCPDataSourceAdapter ───
16
+ export class MCPDataSourceAdapter {
17
+ sourceId;
18
+ sourceType = "mcp";
19
+ config;
20
+ serverConfig;
21
+ connection;
22
+ connected = false;
23
+ constructor(serverConfig, connection) {
24
+ this.serverConfig = serverConfig;
25
+ this.connection = connection;
26
+ this.sourceId = serverConfig.id;
27
+ // Synthesize a minimal DataSourceConfig to satisfy the interface
28
+ this.config = {
29
+ id: serverConfig.id,
30
+ name: serverConfig.name,
31
+ type: "mcp",
32
+ connection: serverConfig.url ? { url: serverConfig.url } : {},
33
+ enabled: serverConfig.enabled,
34
+ created_at: new Date().toISOString(),
35
+ };
36
+ }
37
+ async connect() {
38
+ if (this.connected)
39
+ return;
40
+ await this.connection.connect();
41
+ this.connected = true;
42
+ }
43
+ async disconnect() {
44
+ if (!this.connected)
45
+ return;
46
+ await this.connection.close();
47
+ this.connected = false;
48
+ }
49
+ async healthCheck() {
50
+ return this.connection.isConnected();
51
+ }
52
+ getSupportedDimensions() {
53
+ return this.serverConfig.tool_mappings.map((m) => m.dimension_pattern);
54
+ }
55
+ async query(params) {
56
+ const mapping = this.findMapping(params.dimension_name);
57
+ if (!mapping) {
58
+ return {
59
+ value: null,
60
+ raw: null,
61
+ timestamp: new Date().toISOString(),
62
+ source_id: this.sourceId,
63
+ metadata: { reason: `No tool mapping for dimension: ${params.dimension_name}` },
64
+ };
65
+ }
66
+ const args = {
67
+ ...(mapping.args_template ?? {}),
68
+ dimension_name: params.dimension_name,
69
+ };
70
+ let raw;
71
+ let value = null;
72
+ try {
73
+ const result = await this.connection.callTool(mapping.tool_name, args);
74
+ raw = result;
75
+ // Extract text content from the first content item
76
+ const firstContent = result.content.find((c) => c.type === "text" && c.text !== undefined);
77
+ if (firstContent?.text !== undefined) {
78
+ const parsed = this.parseTextValue(firstContent.text);
79
+ value = parsed;
80
+ }
81
+ }
82
+ catch (err) {
83
+ return {
84
+ value: null,
85
+ raw: null,
86
+ timestamp: new Date().toISOString(),
87
+ source_id: this.sourceId,
88
+ metadata: { error: String(err) },
89
+ };
90
+ }
91
+ return {
92
+ value,
93
+ raw,
94
+ timestamp: new Date().toISOString(),
95
+ source_id: this.sourceId,
96
+ };
97
+ }
98
+ // ─── Private helpers ───
99
+ findMapping(dimensionName) {
100
+ return this.serverConfig.tool_mappings.find((m) => matchesPattern(dimensionName, m.dimension_pattern));
101
+ }
102
+ parseTextValue(text) {
103
+ const trimmed = text.trim();
104
+ if (trimmed === "null")
105
+ return null;
106
+ if (trimmed === "true")
107
+ return true;
108
+ if (trimmed === "false")
109
+ return false;
110
+ const num = Number(trimmed);
111
+ if (!isNaN(num) && trimmed !== "")
112
+ return num;
113
+ return trimmed;
114
+ }
115
+ }
116
+ //# sourceMappingURL=mcp-datasource.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mcp-datasource.js","sourceRoot":"","sources":["../../src/adapters/mcp-datasource.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"openai-codex.d.ts","sourceRoot":"","sources":["../../src/adapters/openai-codex.ts"],"names":[],"mappings":"AAgBA,OAAO,KAAK,EAAE,QAAQ,EAAE,SAAS,EAAE,WAAW,EAAE,MAAM,+BAA+B,CAAC;AACtF,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,sBAAsB,CAAC;AAGnD,MAAM,WAAW,2BAA2B;IAC1C,qEAAqE;IACrE,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB;;;;OAIG;IACH,aAAa,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC9B,0CAA0C;IAC1C,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,kFAAkF;IAClF,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED,qBAAa,qBAAsB,YAAW,QAAQ;IACpD,QAAQ,CAAC,WAAW,sBAAsB;IAC1C,QAAQ,CAAC,YAAY,yEAA0E;IAE/F,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAS;IACjC,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAgB;IAC9C,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAqB;IAC3C,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAS;IAClC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAS;gBAErB,MAAM,GAAE,2BAAgC,EAAE,MAAM,CAAC,EAAE,MAAM;IAS/D,OAAO,CAAC,IAAI,EAAE,SAAS,GAAG,OAAO,CAAC,WAAW,CAAC;CAqCrD"}
1
+ {"version":3,"file":"openai-codex.d.ts","sourceRoot":"","sources":["../../src/adapters/openai-codex.ts"],"names":[],"mappings":"AAgBA,OAAO,KAAK,EAAE,QAAQ,EAAE,SAAS,EAAE,WAAW,EAAE,MAAM,+BAA+B,CAAC;AACtF,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,sBAAsB,CAAC;AAGnD,MAAM,WAAW,2BAA2B;IAC1C,qEAAqE;IACrE,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB;;;;OAIG;IACH,aAAa,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC9B,0CAA0C;IAC1C,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,kFAAkF;IAClF,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED,qBAAa,qBAAsB,YAAW,QAAQ;IACpD,QAAQ,CAAC,WAAW,sBAAsB;IAC1C,QAAQ,CAAC,YAAY,yEAA0E;IAE/F,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAS;IACjC,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAgB;IAC9C,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAqB;IAC3C,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAS;IAClC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAS;gBAErB,MAAM,GAAE,2BAAgC,EAAE,MAAM,CAAC,EAAE,MAAM;IAS/D,OAAO,CAAC,IAAI,EAAE,SAAS,GAAG,OAAO,CAAC,WAAW,CAAC;CAuCrD"}
@@ -49,7 +49,9 @@ export class OpenAICodexCLIAdapter {
49
49
  "a native tool-restriction flag. Proceeding without restriction.", { allowed_tools: task.allowed_tools });
50
50
  }
51
51
  // NOTE: --path is NOT supported by codex-cli 0.114.0; use cwd instead
52
- const result = await spawnWithTimeout(this.cliPath, spawnArgs, { cwd: this.repoPath, env: process.env, stdinData: task.prompt }, task.timeout_ms);
52
+ // Per-task cwd override (from workspace_path: constraint) takes priority over constructor repoPath.
53
+ const cwd = task.cwd ?? this.repoPath;
54
+ const result = await spawnWithTimeout(this.cliPath, spawnArgs, { cwd, env: process.env, stdinData: task.prompt }, task.timeout_ms);
53
55
  const elapsed = Date.now() - startedAt;
54
56
  return spawnResultToAgentResult(result, elapsed, task.timeout_ms);
55
57
  }
@@ -1 +1 @@
1
- {"version":3,"file":"openai-codex.js","sourceRoot":"","sources":["../../src/adapters/openai-codex.ts"],"names":[],"mappings":"AAAA,gCAAgC;AAChC,EAAE;AACF,+DAA+D;AAC/D,yEAAyE;AACzE,iDAAiD;AACjD,uEAAuE;AACvE,EAAE;AACF,yEAAyE;AACzE,EAAE;AACF,sCAAsC;AACtC,+DAA+D;AAC/D,oFAAoF;AACpF,4DAA4D;AAC5D,gFAAgF;AAChF,mFAAmF;AAInF,OAAO,EAAE,gBAAgB,EAAE,wBAAwB,EAAE,MAAM,mBAAmB,CAAC;AAiB/E,MAAM,OAAO,qBAAqB;IACvB,WAAW,GAAG,kBAAkB,CAAC;IACjC,YAAY,GAAG,CAAC,cAAc,EAAE,YAAY,EAAE,aAAa,EAAE,cAAc,CAAU,CAAC;IAE9E,OAAO,CAAS;IAChB,aAAa,CAAgB;IAC7B,KAAK,CAAqB;IAC1B,QAAQ,CAAS;IACjB,MAAM,CAAU;IAEjC,YAAY,SAAsC,EAAE,EAAE,MAAe;QACnE,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC,OAAO,IAAI,OAAO,CAAC;QACzC,IAAI,CAAC,aAAa;YAChB,MAAM,CAAC,aAAa,KAAK,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC,oBAAoB,CAAC;QACnF,IAAI,CAAC,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC;QAC1B,IAAI,CAAC,QAAQ,GAAG,MAAM,CAAC,QAAQ,EAAE,IAAI,EAAE,IAAI,GAAG,CAAC;QAC/C,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;IACvB,CAAC;IAED,KAAK,CAAC,OAAO,CAAC,IAAe;QAC3B,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QAE7B,uDAAuD;QACvD,gFAAgF;QAChF,MAAM,SAAS,GAAa,CAAC,MAAM,CAAC,CAAC;QAErC,IAAI,IAAI,CAAC,aAAa,EAAE,CAAC;YACvB,SAAS,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,aAAa,CAAC,CAAC;QAC3C,CAAC;QAED,IAAI,IAAI,CAAC,KAAK,EAAE,CAAC;YACf,SAAS,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC;QACnC,CAAC;QAED,yEAAyE;QACzE,yEAAyE;QACzE,sEAAsE;QACtE,IAAI,IAAI,CAAC,aAAa,IAAI,IAAI,CAAC,aAAa,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACxD,IAAI,CAAC,MAAM,EAAE,IAAI,CACf,8EAA8E;gBAC5E,iEAAiE,EACnE,EAAE,aAAa,EAAE,IAAI,CAAC,aAAa,EAAE,CACtC,CAAC;QACJ,CAAC;QAED,sEAAsE;QACtE,MAAM,MAAM,GAAG,MAAM,gBAAgB,CACnC,IAAI,CAAC,OAAO,EACZ,SAAS,EACT,EAAE,GAAG,EAAE,IAAI,CAAC,QAAQ,EAAE,GAAG,EAAE,OAAO,CAAC,GAAG,EAAE,SAAS,EAAE,IAAI,CAAC,MAAM,EAAE,EAChE,IAAI,CAAC,UAAU,CAChB,CAAC;QAEF,MAAM,OAAO,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,SAAS,CAAC;QACvC,OAAO,wBAAwB,CAAC,MAAM,EAAE,OAAO,EAAE,IAAI,CAAC,UAAU,CAAC,CAAC;IACpE,CAAC;CACF"}
1
+ {"version":3,"file":"openai-codex.js","sourceRoot":"","sources":["../../src/adapters/openai-codex.ts"],"names":[],"mappings":"AAAA,gCAAgC;AAChC,EAAE;AACF,+DAA+D;AAC/D,yEAAyE;AACzE,iDAAiD;AACjD,uEAAuE;AACvE,EAAE;AACF,yEAAyE;AACzE,EAAE;AACF,sCAAsC;AACtC,+DAA+D;AAC/D,oFAAoF;AACpF,4DAA4D;AAC5D,gFAAgF;AAChF,mFAAmF;AAInF,OAAO,EAAE,gBAAgB,EAAE,wBAAwB,EAAE,MAAM,mBAAmB,CAAC;AAiB/E,MAAM,OAAO,qBAAqB;IACvB,WAAW,GAAG,kBAAkB,CAAC;IACjC,YAAY,GAAG,CAAC,cAAc,EAAE,YAAY,EAAE,aAAa,EAAE,cAAc,CAAU,CAAC;IAE9E,OAAO,CAAS;IAChB,aAAa,CAAgB;IAC7B,KAAK,CAAqB;IAC1B,QAAQ,CAAS;IACjB,MAAM,CAAU;IAEjC,YAAY,SAAsC,EAAE,EAAE,MAAe;QACnE,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC,OAAO,IAAI,OAAO,CAAC;QACzC,IAAI,CAAC,aAAa;YAChB,MAAM,CAAC,aAAa,KAAK,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC,oBAAoB,CAAC;QACnF,IAAI,CAAC,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC;QAC1B,IAAI,CAAC,QAAQ,GAAG,MAAM,CAAC,QAAQ,EAAE,IAAI,EAAE,IAAI,GAAG,CAAC;QAC/C,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;IACvB,CAAC;IAED,KAAK,CAAC,OAAO,CAAC,IAAe;QAC3B,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QAE7B,uDAAuD;QACvD,gFAAgF;QAChF,MAAM,SAAS,GAAa,CAAC,MAAM,CAAC,CAAC;QAErC,IAAI,IAAI,CAAC,aAAa,EAAE,CAAC;YACvB,SAAS,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,aAAa,CAAC,CAAC;QAC3C,CAAC;QAED,IAAI,IAAI,CAAC,KAAK,EAAE,CAAC;YACf,SAAS,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC;QACnC,CAAC;QAED,yEAAyE;QACzE,yEAAyE;QACzE,sEAAsE;QACtE,IAAI,IAAI,CAAC,aAAa,IAAI,IAAI,CAAC,aAAa,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACxD,IAAI,CAAC,MAAM,EAAE,IAAI,CACf,8EAA8E;gBAC5E,iEAAiE,EACnE,EAAE,aAAa,EAAE,IAAI,CAAC,aAAa,EAAE,CACtC,CAAC;QACJ,CAAC;QAED,sEAAsE;QACtE,oGAAoG;QACpG,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,IAAI,IAAI,CAAC,QAAQ,CAAC;QACtC,MAAM,MAAM,GAAG,MAAM,gBAAgB,CACnC,IAAI,CAAC,OAAO,EACZ,SAAS,EACT,EAAE,GAAG,EAAE,GAAG,EAAE,OAAO,CAAC,GAAG,EAAE,SAAS,EAAE,IAAI,CAAC,MAAM,EAAE,EACjD,IAAI,CAAC,UAAU,CAChB,CAAC;QAEF,MAAM,OAAO,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,SAAS,CAAC;QACvC,OAAO,wBAAwB,CAAC,MAAM,EAAE,OAAO,EAAE,IAAI,CAAC,UAAU,CAAC,CAAC;IACpE,CAAC;CACF"}
@@ -1,6 +1,7 @@
1
1
  import { StateManager } from "../../state-manager.js";
2
2
  import { CharacterConfigManager } from "../../traits/character-config.js";
3
3
  export declare function cmdStart(stateManager: StateManager, characterConfigManager: CharacterConfigManager, args: string[]): Promise<void>;
4
+ export declare function cmdDaemonStatus(_args: string[]): Promise<void>;
4
5
  export declare function cmdStop(_args: string[]): Promise<void>;
5
6
  export declare function cmdCron(args: string[]): Promise<void>;
6
7
  //# sourceMappingURL=daemon.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"daemon.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/daemon.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAC;AACtD,OAAO,EAAE,sBAAsB,EAAE,MAAM,kCAAkC,CAAC;AAS1E,wBAAsB,QAAQ,CAC5B,YAAY,EAAE,YAAY,EAC1B,sBAAsB,EAAE,sBAAsB,EAC9C,IAAI,EAAE,MAAM,EAAE,GACb,OAAO,CAAC,IAAI,CAAC,CA+Cf;AAED,wBAAsB,OAAO,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CA0B5D;AAED,wBAAsB,OAAO,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CA6B3D"}
1
+ {"version":3,"file":"daemon.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/daemon.ts"],"names":[],"mappings":"AASA,OAAO,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAC;AACtD,OAAO,EAAE,sBAAsB,EAAE,MAAM,kCAAkC,CAAC;AAW1E,wBAAsB,QAAQ,CAC5B,YAAY,EAAE,YAAY,EAC1B,sBAAsB,EAAE,sBAAsB,EAC9C,IAAI,EAAE,MAAM,EAAE,GACb,OAAO,CAAC,IAAI,CAAC,CA2Gf;AAED,wBAAsB,eAAe,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAoDpE;AAED,wBAAsB,OAAO,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CA0B5D;AAED,wBAAsB,OAAO,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CA6B3D"}