pulseed 0.4.4 → 0.4.6

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 (729) hide show
  1. package/README.md +27 -103
  2. package/dist/adapters/agents/native-agent-loop.d.ts +7 -0
  3. package/dist/adapters/agents/native-agent-loop.d.ts.map +1 -0
  4. package/dist/adapters/agents/native-agent-loop.js +19 -0
  5. package/dist/adapters/agents/native-agent-loop.js.map +1 -0
  6. package/dist/adapters/agents/openai-codex.d.ts +3 -0
  7. package/dist/adapters/agents/openai-codex.d.ts.map +1 -1
  8. package/dist/adapters/agents/openai-codex.js +7 -1
  9. package/dist/adapters/agents/openai-codex.js.map +1 -1
  10. package/dist/adapters/datasources/github-issue-datasource.d.ts +13 -0
  11. package/dist/adapters/datasources/github-issue-datasource.d.ts.map +1 -1
  12. package/dist/adapters/datasources/github-issue-datasource.js +114 -134
  13. package/dist/adapters/datasources/github-issue-datasource.js.map +1 -1
  14. package/dist/adapters/spawn-helper.js +3 -3
  15. package/dist/adapters/spawn-helper.js.map +1 -1
  16. package/dist/base/llm/provider-config.d.ts +11 -2
  17. package/dist/base/llm/provider-config.d.ts.map +1 -1
  18. package/dist/base/llm/provider-config.js +13 -7
  19. package/dist/base/llm/provider-config.js.map +1 -1
  20. package/dist/base/llm/provider-factory.d.ts +2 -2
  21. package/dist/base/llm/provider-factory.js +4 -4
  22. package/dist/base/llm/provider-factory.js.map +1 -1
  23. package/dist/base/state/state-manager.d.ts +12 -0
  24. package/dist/base/state/state-manager.d.ts.map +1 -1
  25. package/dist/base/state/state-manager.js +112 -109
  26. package/dist/base/state/state-manager.js.map +1 -1
  27. package/dist/index.d.ts +7 -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 +3 -2
  32. package/dist/interface/chat/chat-history.d.ts.map +1 -1
  33. package/dist/interface/chat/chat-history.js +3 -0
  34. package/dist/interface/chat/chat-history.js.map +1 -1
  35. package/dist/interface/chat/chat-runner.d.ts +9 -0
  36. package/dist/interface/chat/chat-runner.d.ts.map +1 -1
  37. package/dist/interface/chat/chat-runner.js +295 -44
  38. package/dist/interface/chat/chat-runner.js.map +1 -1
  39. package/dist/interface/chat/cross-platform-session.d.ts +78 -0
  40. package/dist/interface/chat/cross-platform-session.d.ts.map +1 -0
  41. package/dist/interface/chat/cross-platform-session.js +213 -0
  42. package/dist/interface/chat/cross-platform-session.js.map +1 -0
  43. package/dist/interface/chat/event-subscriber.d.ts +3 -1
  44. package/dist/interface/chat/event-subscriber.d.ts.map +1 -1
  45. package/dist/interface/chat/event-subscriber.js +13 -3
  46. package/dist/interface/chat/event-subscriber.js.map +1 -1
  47. package/dist/interface/cli/commands/chat.d.ts.map +1 -1
  48. package/dist/interface/cli/commands/chat.js +48 -3
  49. package/dist/interface/cli/commands/chat.js.map +1 -1
  50. package/dist/interface/cli/commands/config.d.ts.map +1 -1
  51. package/dist/interface/cli/commands/config.js +30 -1
  52. package/dist/interface/cli/commands/config.js.map +1 -1
  53. package/dist/interface/cli/commands/daemon.d.ts.map +1 -1
  54. package/dist/interface/cli/commands/daemon.js +15 -6
  55. package/dist/interface/cli/commands/daemon.js.map +1 -1
  56. package/dist/interface/cli/commands/doctor.d.ts +1 -0
  57. package/dist/interface/cli/commands/doctor.d.ts.map +1 -1
  58. package/dist/interface/cli/commands/doctor.js +36 -0
  59. package/dist/interface/cli/commands/doctor.js.map +1 -1
  60. package/dist/interface/cli/commands/install.d.ts +1 -0
  61. package/dist/interface/cli/commands/install.d.ts.map +1 -1
  62. package/dist/interface/cli/commands/install.js +6 -1
  63. package/dist/interface/cli/commands/install.js.map +1 -1
  64. package/dist/interface/cli/commands/notify.d.ts.map +1 -1
  65. package/dist/interface/cli/commands/notify.js +33 -21
  66. package/dist/interface/cli/commands/notify.js.map +1 -1
  67. package/dist/interface/cli/commands/setup/steps-notification.d.ts.map +1 -1
  68. package/dist/interface/cli/commands/setup/steps-notification.js +3 -2
  69. package/dist/interface/cli/commands/setup/steps-notification.js.map +1 -1
  70. package/dist/interface/cli/commands/setup-shared.js +6 -6
  71. package/dist/interface/cli/commands/setup-shared.js.map +1 -1
  72. package/dist/interface/cli/commands/setup.d.ts.map +1 -1
  73. package/dist/interface/cli/commands/setup.js +38 -1
  74. package/dist/interface/cli/commands/setup.js.map +1 -1
  75. package/dist/interface/cli/commands/telegram.d.ts.map +1 -1
  76. package/dist/interface/cli/commands/telegram.js +15 -1
  77. package/dist/interface/cli/commands/telegram.js.map +1 -1
  78. package/dist/interface/cli/setup.d.ts +12 -1
  79. package/dist/interface/cli/setup.d.ts.map +1 -1
  80. package/dist/interface/cli/setup.js +145 -16
  81. package/dist/interface/cli/setup.js.map +1 -1
  82. package/dist/interface/cli/utils.js +1 -1
  83. package/dist/interface/tui/entry.d.ts.map +1 -1
  84. package/dist/interface/tui/entry.js +69 -17
  85. package/dist/interface/tui/entry.js.map +1 -1
  86. package/dist/orchestrator/execution/adapter-layer.d.ts +19 -0
  87. package/dist/orchestrator/execution/adapter-layer.d.ts.map +1 -1
  88. package/dist/orchestrator/execution/adapter-layer.js.map +1 -1
  89. package/dist/orchestrator/execution/agent-loop/agent-loop-budget.d.ts +15 -0
  90. package/dist/orchestrator/execution/agent-loop/agent-loop-budget.d.ts.map +1 -0
  91. package/dist/orchestrator/execution/agent-loop/agent-loop-budget.js +12 -0
  92. package/dist/orchestrator/execution/agent-loop/agent-loop-budget.js.map +1 -0
  93. package/dist/orchestrator/execution/agent-loop/agent-loop-command-classifier.d.ts +9 -0
  94. package/dist/orchestrator/execution/agent-loop/agent-loop-command-classifier.d.ts.map +1 -0
  95. package/dist/orchestrator/execution/agent-loop/agent-loop-command-classifier.js +40 -0
  96. package/dist/orchestrator/execution/agent-loop/agent-loop-command-classifier.js.map +1 -0
  97. package/dist/orchestrator/execution/agent-loop/agent-loop-compactor.d.ts +33 -0
  98. package/dist/orchestrator/execution/agent-loop/agent-loop-compactor.d.ts.map +1 -0
  99. package/dist/orchestrator/execution/agent-loop/agent-loop-compactor.js +68 -0
  100. package/dist/orchestrator/execution/agent-loop/agent-loop-compactor.js.map +1 -0
  101. package/dist/orchestrator/execution/agent-loop/agent-loop-context-assembler.d.ts +38 -0
  102. package/dist/orchestrator/execution/agent-loop/agent-loop-context-assembler.d.ts.map +1 -0
  103. package/dist/orchestrator/execution/agent-loop/agent-loop-context-assembler.js +109 -0
  104. package/dist/orchestrator/execution/agent-loop/agent-loop-context-assembler.js.map +1 -0
  105. package/dist/orchestrator/execution/agent-loop/agent-loop-dogfood-benchmark.d.ts +76 -0
  106. package/dist/orchestrator/execution/agent-loop/agent-loop-dogfood-benchmark.d.ts.map +1 -0
  107. package/dist/orchestrator/execution/agent-loop/agent-loop-dogfood-benchmark.js +164 -0
  108. package/dist/orchestrator/execution/agent-loop/agent-loop-dogfood-benchmark.js.map +1 -0
  109. package/dist/orchestrator/execution/agent-loop/agent-loop-evaluator.d.ts +46 -0
  110. package/dist/orchestrator/execution/agent-loop/agent-loop-evaluator.d.ts.map +1 -0
  111. package/dist/orchestrator/execution/agent-loop/agent-loop-evaluator.js +75 -0
  112. package/dist/orchestrator/execution/agent-loop/agent-loop-evaluator.js.map +1 -0
  113. package/dist/orchestrator/execution/agent-loop/agent-loop-events.d.ts +98 -0
  114. package/dist/orchestrator/execution/agent-loop/agent-loop-events.d.ts.map +1 -0
  115. package/dist/orchestrator/execution/agent-loop/agent-loop-events.js +6 -0
  116. package/dist/orchestrator/execution/agent-loop/agent-loop-events.js.map +1 -0
  117. package/dist/orchestrator/execution/agent-loop/agent-loop-history.d.ts +8 -0
  118. package/dist/orchestrator/execution/agent-loop/agent-loop-history.d.ts.map +1 -0
  119. package/dist/orchestrator/execution/agent-loop/agent-loop-history.js +7 -0
  120. package/dist/orchestrator/execution/agent-loop/agent-loop-history.js.map +1 -0
  121. package/dist/orchestrator/execution/agent-loop/agent-loop-model-client-factory.d.ts +9 -0
  122. package/dist/orchestrator/execution/agent-loop/agent-loop-model-client-factory.d.ts.map +1 -0
  123. package/dist/orchestrator/execution/agent-loop/agent-loop-model-client-factory.js +19 -0
  124. package/dist/orchestrator/execution/agent-loop/agent-loop-model-client-factory.js.map +1 -0
  125. package/dist/orchestrator/execution/agent-loop/agent-loop-model-client.d.ts +13 -0
  126. package/dist/orchestrator/execution/agent-loop/agent-loop-model-client.d.ts.map +1 -0
  127. package/dist/orchestrator/execution/agent-loop/agent-loop-model-client.js +72 -0
  128. package/dist/orchestrator/execution/agent-loop/agent-loop-model-client.js.map +1 -0
  129. package/dist/orchestrator/execution/agent-loop/agent-loop-model-registry.d.ts +10 -0
  130. package/dist/orchestrator/execution/agent-loop/agent-loop-model-registry.d.ts.map +1 -0
  131. package/dist/orchestrator/execution/agent-loop/agent-loop-model-registry.js +26 -0
  132. package/dist/orchestrator/execution/agent-loop/agent-loop-model-registry.js.map +1 -0
  133. package/dist/orchestrator/execution/agent-loop/agent-loop-model.d.ts +87 -0
  134. package/dist/orchestrator/execution/agent-loop/agent-loop-model.d.ts.map +1 -0
  135. package/dist/orchestrator/execution/agent-loop/agent-loop-model.js +22 -0
  136. package/dist/orchestrator/execution/agent-loop/agent-loop-model.js.map +1 -0
  137. package/dist/orchestrator/execution/agent-loop/agent-loop-prompts.d.ts +5 -0
  138. package/dist/orchestrator/execution/agent-loop/agent-loop-prompts.d.ts.map +1 -0
  139. package/dist/orchestrator/execution/agent-loop/agent-loop-prompts.js +18 -0
  140. package/dist/orchestrator/execution/agent-loop/agent-loop-prompts.js.map +1 -0
  141. package/dist/orchestrator/execution/agent-loop/agent-loop-real-dogfood.d.ts +2 -0
  142. package/dist/orchestrator/execution/agent-loop/agent-loop-real-dogfood.d.ts.map +1 -0
  143. package/dist/orchestrator/execution/agent-loop/agent-loop-real-dogfood.js +362 -0
  144. package/dist/orchestrator/execution/agent-loop/agent-loop-real-dogfood.js.map +1 -0
  145. package/dist/orchestrator/execution/agent-loop/agent-loop-result.d.ts +42 -0
  146. package/dist/orchestrator/execution/agent-loop/agent-loop-result.d.ts.map +1 -0
  147. package/dist/orchestrator/execution/agent-loop/agent-loop-result.js +2 -0
  148. package/dist/orchestrator/execution/agent-loop/agent-loop-result.js.map +1 -0
  149. package/dist/orchestrator/execution/agent-loop/agent-loop-session-factory.d.ts +15 -0
  150. package/dist/orchestrator/execution/agent-loop/agent-loop-session-factory.d.ts.map +1 -0
  151. package/dist/orchestrator/execution/agent-loop/agent-loop-session-factory.js +26 -0
  152. package/dist/orchestrator/execution/agent-loop/agent-loop-session-factory.js.map +1 -0
  153. package/dist/orchestrator/execution/agent-loop/agent-loop-session-state.d.ts +39 -0
  154. package/dist/orchestrator/execution/agent-loop/agent-loop-session-state.d.ts.map +1 -0
  155. package/dist/orchestrator/execution/agent-loop/agent-loop-session-state.js +35 -0
  156. package/dist/orchestrator/execution/agent-loop/agent-loop-session-state.js.map +1 -0
  157. package/dist/orchestrator/execution/agent-loop/agent-loop-session.d.ts +21 -0
  158. package/dist/orchestrator/execution/agent-loop/agent-loop-session.d.ts.map +1 -0
  159. package/dist/orchestrator/execution/agent-loop/agent-loop-session.js +16 -0
  160. package/dist/orchestrator/execution/agent-loop/agent-loop-session.js.map +1 -0
  161. package/dist/orchestrator/execution/agent-loop/agent-loop-tool-output.d.ts +21 -0
  162. package/dist/orchestrator/execution/agent-loop/agent-loop-tool-output.d.ts.map +1 -0
  163. package/dist/orchestrator/execution/agent-loop/agent-loop-tool-output.js +2 -0
  164. package/dist/orchestrator/execution/agent-loop/agent-loop-tool-output.js.map +1 -0
  165. package/dist/orchestrator/execution/agent-loop/agent-loop-tool-router.d.ts +19 -0
  166. package/dist/orchestrator/execution/agent-loop/agent-loop-tool-router.d.ts.map +1 -0
  167. package/dist/orchestrator/execution/agent-loop/agent-loop-tool-router.js +34 -0
  168. package/dist/orchestrator/execution/agent-loop/agent-loop-tool-router.js.map +1 -0
  169. package/dist/orchestrator/execution/agent-loop/agent-loop-tool-runtime.d.ts +21 -0
  170. package/dist/orchestrator/execution/agent-loop/agent-loop-tool-runtime.d.ts.map +1 -0
  171. package/dist/orchestrator/execution/agent-loop/agent-loop-tool-runtime.js +114 -0
  172. package/dist/orchestrator/execution/agent-loop/agent-loop-tool-runtime.js.map +1 -0
  173. package/dist/orchestrator/execution/agent-loop/agent-loop-trace-store.d.ts +18 -0
  174. package/dist/orchestrator/execution/agent-loop/agent-loop-trace-store.d.ts.map +1 -0
  175. package/dist/orchestrator/execution/agent-loop/agent-loop-trace-store.js +31 -0
  176. package/dist/orchestrator/execution/agent-loop/agent-loop-trace-store.js.map +1 -0
  177. package/dist/orchestrator/execution/agent-loop/agent-loop-turn-context.d.ts +39 -0
  178. package/dist/orchestrator/execution/agent-loop/agent-loop-turn-context.d.ts.map +1 -0
  179. package/dist/orchestrator/execution/agent-loop/agent-loop-turn-context.js +5 -0
  180. package/dist/orchestrator/execution/agent-loop/agent-loop-turn-context.js.map +1 -0
  181. package/dist/orchestrator/execution/agent-loop/anthropic-messages-agent-loop-model-client.d.ts +23 -0
  182. package/dist/orchestrator/execution/agent-loop/anthropic-messages-agent-loop-model-client.d.ts.map +1 -0
  183. package/dist/orchestrator/execution/agent-loop/anthropic-messages-agent-loop-model-client.js +156 -0
  184. package/dist/orchestrator/execution/agent-loop/anthropic-messages-agent-loop-model-client.js.map +1 -0
  185. package/dist/orchestrator/execution/agent-loop/bounded-agent-loop-runner.d.ts +38 -0
  186. package/dist/orchestrator/execution/agent-loop/bounded-agent-loop-runner.d.ts.map +1 -0
  187. package/dist/orchestrator/execution/agent-loop/bounded-agent-loop-runner.js +479 -0
  188. package/dist/orchestrator/execution/agent-loop/bounded-agent-loop-runner.js.map +1 -0
  189. package/dist/orchestrator/execution/agent-loop/chat-agent-loop-runner.d.ts +67 -0
  190. package/dist/orchestrator/execution/agent-loop/chat-agent-loop-runner.d.ts.map +1 -0
  191. package/dist/orchestrator/execution/agent-loop/chat-agent-loop-runner.js +113 -0
  192. package/dist/orchestrator/execution/agent-loop/chat-agent-loop-runner.js.map +1 -0
  193. package/dist/orchestrator/execution/agent-loop/core-loop-control-tools.d.ts +33 -0
  194. package/dist/orchestrator/execution/agent-loop/core-loop-control-tools.d.ts.map +1 -0
  195. package/dist/orchestrator/execution/agent-loop/core-loop-control-tools.js +89 -0
  196. package/dist/orchestrator/execution/agent-loop/core-loop-control-tools.js.map +1 -0
  197. package/dist/orchestrator/execution/agent-loop/core-phase-runner.d.ts +32 -0
  198. package/dist/orchestrator/execution/agent-loop/core-phase-runner.d.ts.map +1 -0
  199. package/dist/orchestrator/execution/agent-loop/core-phase-runner.js +40 -0
  200. package/dist/orchestrator/execution/agent-loop/core-phase-runner.js.map +1 -0
  201. package/dist/orchestrator/execution/agent-loop/index.d.ts +35 -0
  202. package/dist/orchestrator/execution/agent-loop/index.d.ts.map +1 -0
  203. package/dist/orchestrator/execution/agent-loop/index.js +35 -0
  204. package/dist/orchestrator/execution/agent-loop/index.js.map +1 -0
  205. package/dist/orchestrator/execution/agent-loop/openai-responses-agent-loop-model-client.d.ts +18 -0
  206. package/dist/orchestrator/execution/agent-loop/openai-responses-agent-loop-model-client.d.ts.map +1 -0
  207. package/dist/orchestrator/execution/agent-loop/openai-responses-agent-loop-model-client.js +148 -0
  208. package/dist/orchestrator/execution/agent-loop/openai-responses-agent-loop-model-client.js.map +1 -0
  209. package/dist/orchestrator/execution/agent-loop/task-agent-loop-context.d.ts +26 -0
  210. package/dist/orchestrator/execution/agent-loop/task-agent-loop-context.d.ts.map +1 -0
  211. package/dist/orchestrator/execution/agent-loop/task-agent-loop-context.js +79 -0
  212. package/dist/orchestrator/execution/agent-loop/task-agent-loop-context.js.map +1 -0
  213. package/dist/orchestrator/execution/agent-loop/task-agent-loop-factory.d.ts +28 -0
  214. package/dist/orchestrator/execution/agent-loop/task-agent-loop-factory.d.ts.map +1 -0
  215. package/dist/orchestrator/execution/agent-loop/task-agent-loop-factory.js +96 -0
  216. package/dist/orchestrator/execution/agent-loop/task-agent-loop-factory.js.map +1 -0
  217. package/dist/orchestrator/execution/agent-loop/task-agent-loop-result.d.ts +54 -0
  218. package/dist/orchestrator/execution/agent-loop/task-agent-loop-result.d.ts.map +1 -0
  219. package/dist/orchestrator/execution/agent-loop/task-agent-loop-result.js +61 -0
  220. package/dist/orchestrator/execution/agent-loop/task-agent-loop-result.js.map +1 -0
  221. package/dist/orchestrator/execution/agent-loop/task-agent-loop-runner.d.ts +46 -0
  222. package/dist/orchestrator/execution/agent-loop/task-agent-loop-runner.d.ts.map +1 -0
  223. package/dist/orchestrator/execution/agent-loop/task-agent-loop-runner.js +70 -0
  224. package/dist/orchestrator/execution/agent-loop/task-agent-loop-runner.js.map +1 -0
  225. package/dist/orchestrator/execution/agent-loop/task-agent-loop-verification.d.ts +5 -0
  226. package/dist/orchestrator/execution/agent-loop/task-agent-loop-verification.d.ts.map +1 -0
  227. package/dist/orchestrator/execution/agent-loop/task-agent-loop-verification.js +94 -0
  228. package/dist/orchestrator/execution/agent-loop/task-agent-loop-verification.js.map +1 -0
  229. package/dist/orchestrator/execution/agent-loop/task-agent-loop-worktree.d.ts +23 -0
  230. package/dist/orchestrator/execution/agent-loop/task-agent-loop-worktree.d.ts.map +1 -0
  231. package/dist/orchestrator/execution/agent-loop/task-agent-loop-worktree.js +145 -0
  232. package/dist/orchestrator/execution/agent-loop/task-agent-loop-worktree.js.map +1 -0
  233. package/dist/orchestrator/execution/context/dimension-selector.d.ts +5 -1
  234. package/dist/orchestrator/execution/context/dimension-selector.d.ts.map +1 -1
  235. package/dist/orchestrator/execution/context/dimension-selector.js +9 -5
  236. package/dist/orchestrator/execution/context/dimension-selector.js.map +1 -1
  237. package/dist/orchestrator/execution/task/task-generation.d.ts.map +1 -1
  238. package/dist/orchestrator/execution/task/task-generation.js +46 -6
  239. package/dist/orchestrator/execution/task/task-generation.js.map +1 -1
  240. package/dist/orchestrator/execution/task/task-health-check.d.ts +1 -1
  241. package/dist/orchestrator/execution/task/task-health-check.d.ts.map +1 -1
  242. package/dist/orchestrator/execution/task/task-health-check.js +8 -8
  243. package/dist/orchestrator/execution/task/task-health-check.js.map +1 -1
  244. package/dist/orchestrator/execution/task/task-lifecycle.d.ts +22 -3
  245. package/dist/orchestrator/execution/task/task-lifecycle.d.ts.map +1 -1
  246. package/dist/orchestrator/execution/task/task-lifecycle.js +155 -25
  247. package/dist/orchestrator/execution/task/task-lifecycle.js.map +1 -1
  248. package/dist/orchestrator/execution/task/task-prompt-builder.d.ts.map +1 -1
  249. package/dist/orchestrator/execution/task/task-prompt-builder.js +63 -3
  250. package/dist/orchestrator/execution/task/task-prompt-builder.js.map +1 -1
  251. package/dist/orchestrator/execution/task/task-verifier-llm.d.ts.map +1 -1
  252. package/dist/orchestrator/execution/task/task-verifier-llm.js +19 -1
  253. package/dist/orchestrator/execution/task/task-verifier-llm.js.map +1 -1
  254. package/dist/orchestrator/execution/task/task-verifier-rules.d.ts.map +1 -1
  255. package/dist/orchestrator/execution/task/task-verifier-rules.js +96 -44
  256. package/dist/orchestrator/execution/task/task-verifier-rules.js.map +1 -1
  257. package/dist/orchestrator/execution/task/task-verifier-types.d.ts +8 -0
  258. package/dist/orchestrator/execution/task/task-verifier-types.d.ts.map +1 -1
  259. package/dist/orchestrator/execution/task/task-verifier-types.js.map +1 -1
  260. package/dist/orchestrator/execution/task/task-verifier.d.ts.map +1 -1
  261. package/dist/orchestrator/execution/task/task-verifier.js +19 -1
  262. package/dist/orchestrator/execution/task/task-verifier.js.map +1 -1
  263. package/dist/orchestrator/goal/tree-loop-orchestrator.d.ts +9 -0
  264. package/dist/orchestrator/goal/tree-loop-orchestrator.d.ts.map +1 -1
  265. package/dist/orchestrator/goal/tree-loop-orchestrator.js +32 -0
  266. package/dist/orchestrator/goal/tree-loop-orchestrator.js.map +1 -1
  267. package/dist/orchestrator/loop/core-loop/contracts.d.ts +9 -0
  268. package/dist/orchestrator/loop/core-loop/contracts.d.ts.map +1 -1
  269. package/dist/orchestrator/loop/core-loop/contracts.js.map +1 -1
  270. package/dist/orchestrator/loop/core-loop/decision-engine.d.ts +79 -0
  271. package/dist/orchestrator/loop/core-loop/decision-engine.d.ts.map +1 -0
  272. package/dist/orchestrator/loop/core-loop/decision-engine.js +141 -0
  273. package/dist/orchestrator/loop/core-loop/decision-engine.js.map +1 -0
  274. package/dist/orchestrator/loop/core-loop/evidence-ledger.d.ts +22 -0
  275. package/dist/orchestrator/loop/core-loop/evidence-ledger.d.ts.map +1 -0
  276. package/dist/orchestrator/loop/core-loop/evidence-ledger.js +36 -0
  277. package/dist/orchestrator/loop/core-loop/evidence-ledger.js.map +1 -0
  278. package/dist/orchestrator/loop/core-loop/iteration-kernel.d.ts +34 -0
  279. package/dist/orchestrator/loop/core-loop/iteration-kernel.d.ts.map +1 -0
  280. package/dist/orchestrator/loop/core-loop/iteration-kernel.js +356 -0
  281. package/dist/orchestrator/loop/core-loop/iteration-kernel.js.map +1 -0
  282. package/dist/orchestrator/loop/core-loop/phase-policy.d.ts +20 -0
  283. package/dist/orchestrator/loop/core-loop/phase-policy.d.ts.map +1 -0
  284. package/dist/orchestrator/loop/core-loop/phase-policy.js +96 -0
  285. package/dist/orchestrator/loop/core-loop/phase-policy.js.map +1 -0
  286. package/dist/orchestrator/loop/core-loop/phase-runtime.d.ts +29 -0
  287. package/dist/orchestrator/loop/core-loop/phase-runtime.d.ts.map +1 -0
  288. package/dist/orchestrator/loop/core-loop/phase-runtime.js +62 -0
  289. package/dist/orchestrator/loop/core-loop/phase-runtime.js.map +1 -0
  290. package/dist/orchestrator/loop/core-loop/phase-specs.d.ts +180 -0
  291. package/dist/orchestrator/loop/core-loop/phase-specs.d.ts.map +1 -0
  292. package/dist/orchestrator/loop/core-loop/phase-specs.js +116 -0
  293. package/dist/orchestrator/loop/core-loop/phase-specs.js.map +1 -0
  294. package/dist/orchestrator/loop/core-loop/preparation.d.ts +1 -5
  295. package/dist/orchestrator/loop/core-loop/preparation.d.ts.map +1 -1
  296. package/dist/orchestrator/loop/core-loop/preparation.js +2 -1
  297. package/dist/orchestrator/loop/core-loop/preparation.js.map +1 -1
  298. package/dist/orchestrator/loop/core-loop/task-cycle.d.ts +10 -2
  299. package/dist/orchestrator/loop/core-loop/task-cycle.d.ts.map +1 -1
  300. package/dist/orchestrator/loop/core-loop/task-cycle.js +37 -54
  301. package/dist/orchestrator/loop/core-loop/task-cycle.js.map +1 -1
  302. package/dist/orchestrator/loop/core-loop.d.ts +3 -0
  303. package/dist/orchestrator/loop/core-loop.d.ts.map +1 -1
  304. package/dist/orchestrator/loop/core-loop.js +58 -217
  305. package/dist/orchestrator/loop/core-loop.js.map +1 -1
  306. package/dist/orchestrator/loop/loop-result-types.d.ts +23 -0
  307. package/dist/orchestrator/loop/loop-result-types.d.ts.map +1 -1
  308. package/dist/orchestrator/loop/loop-result-types.js.map +1 -1
  309. package/dist/orchestrator/loop/tree-loop-runner.d.ts +6 -2
  310. package/dist/orchestrator/loop/tree-loop-runner.d.ts.map +1 -1
  311. package/dist/orchestrator/loop/tree-loop-runner.js +62 -6
  312. package/dist/orchestrator/loop/tree-loop-runner.js.map +1 -1
  313. package/dist/orchestrator/strategy/portfolio-manager.d.ts +3 -3
  314. package/dist/orchestrator/strategy/portfolio-manager.d.ts.map +1 -1
  315. package/dist/orchestrator/strategy/portfolio-manager.js +3 -3
  316. package/dist/orchestrator/strategy/portfolio-manager.js.map +1 -1
  317. package/dist/orchestrator/strategy/portfolio-rebalance.d.ts +3 -3
  318. package/dist/orchestrator/strategy/portfolio-rebalance.d.ts.map +1 -1
  319. package/dist/orchestrator/strategy/portfolio-rebalance.js +14 -7
  320. package/dist/orchestrator/strategy/portfolio-rebalance.js.map +1 -1
  321. package/dist/orchestrator/strategy/strategy-manager.d.ts +11 -1
  322. package/dist/orchestrator/strategy/strategy-manager.d.ts.map +1 -1
  323. package/dist/orchestrator/strategy/strategy-manager.js +23 -2
  324. package/dist/orchestrator/strategy/strategy-manager.js.map +1 -1
  325. package/dist/platform/dream/dream-activation-artifacts.d.ts +5 -0
  326. package/dist/platform/dream/dream-activation-artifacts.d.ts.map +1 -0
  327. package/dist/platform/dream/dream-activation-artifacts.js +35 -0
  328. package/dist/platform/dream/dream-activation-artifacts.js.map +1 -0
  329. package/dist/platform/dream/dream-activation.d.ts +7 -0
  330. package/dist/platform/dream/dream-activation.d.ts.map +1 -1
  331. package/dist/platform/dream/dream-activation.js +41 -0
  332. package/dist/platform/dream/dream-activation.js.map +1 -1
  333. package/dist/platform/dream/dream-consolidator.d.ts +51 -1
  334. package/dist/platform/dream/dream-consolidator.d.ts.map +1 -1
  335. package/dist/platform/dream/dream-consolidator.js +425 -74
  336. package/dist/platform/dream/dream-consolidator.js.map +1 -1
  337. package/dist/platform/dream/dream-event-workflows.d.ts +115 -0
  338. package/dist/platform/dream/dream-event-workflows.d.ts.map +1 -0
  339. package/dist/platform/dream/dream-event-workflows.js +328 -0
  340. package/dist/platform/dream/dream-event-workflows.js.map +1 -0
  341. package/dist/platform/dream/dream-soil-mutation.d.ts +28 -0
  342. package/dist/platform/dream/dream-soil-mutation.d.ts.map +1 -0
  343. package/dist/platform/dream/dream-soil-mutation.js +605 -0
  344. package/dist/platform/dream/dream-soil-mutation.js.map +1 -0
  345. package/dist/platform/dream/dream-soil-sync.d.ts +30 -0
  346. package/dist/platform/dream/dream-soil-sync.d.ts.map +1 -0
  347. package/dist/platform/dream/dream-soil-sync.js +87 -0
  348. package/dist/platform/dream/dream-soil-sync.js.map +1 -0
  349. package/dist/platform/dream/dream-types.d.ts +635 -50
  350. package/dist/platform/dream/dream-types.d.ts.map +1 -1
  351. package/dist/platform/dream/dream-types.js +70 -0
  352. package/dist/platform/dream/dream-types.js.map +1 -1
  353. package/dist/platform/dream/index.d.ts +4 -0
  354. package/dist/platform/dream/index.d.ts.map +1 -1
  355. package/dist/platform/dream/index.js +4 -0
  356. package/dist/platform/dream/index.js.map +1 -1
  357. package/dist/platform/knowledge/knowledge-decisions.d.ts.map +1 -1
  358. package/dist/platform/knowledge/knowledge-decisions.js +32 -0
  359. package/dist/platform/knowledge/knowledge-decisions.js.map +1 -1
  360. package/dist/platform/knowledge/knowledge-manager-lint.d.ts +1 -0
  361. package/dist/platform/knowledge/knowledge-manager-lint.d.ts.map +1 -1
  362. package/dist/platform/knowledge/knowledge-manager-lint.js +16 -3
  363. package/dist/platform/knowledge/knowledge-manager-lint.js.map +1 -1
  364. package/dist/platform/knowledge/knowledge-manager.d.ts +3 -0
  365. package/dist/platform/knowledge/knowledge-manager.d.ts.map +1 -1
  366. package/dist/platform/knowledge/knowledge-manager.js +38 -0
  367. package/dist/platform/knowledge/knowledge-manager.js.map +1 -1
  368. package/dist/platform/observation/workspace-context.d.ts.map +1 -1
  369. package/dist/platform/observation/workspace-context.js +12 -6
  370. package/dist/platform/observation/workspace-context.js.map +1 -1
  371. package/dist/platform/soil/checksum.d.ts +2 -0
  372. package/dist/platform/soil/checksum.d.ts.map +1 -0
  373. package/dist/platform/soil/checksum.js +17 -0
  374. package/dist/platform/soil/checksum.js.map +1 -0
  375. package/dist/platform/soil/compiler.d.ts +27 -0
  376. package/dist/platform/soil/compiler.d.ts.map +1 -0
  377. package/dist/platform/soil/compiler.js +78 -0
  378. package/dist/platform/soil/compiler.js.map +1 -0
  379. package/dist/platform/soil/config.d.ts +16 -0
  380. package/dist/platform/soil/config.d.ts.map +1 -0
  381. package/dist/platform/soil/config.js +30 -0
  382. package/dist/platform/soil/config.js.map +1 -0
  383. package/dist/platform/soil/content-projections.d.ts +24 -0
  384. package/dist/platform/soil/content-projections.d.ts.map +1 -0
  385. package/dist/platform/soil/content-projections.js +489 -0
  386. package/dist/platform/soil/content-projections.js.map +1 -0
  387. package/dist/platform/soil/contracts.d.ts +1127 -0
  388. package/dist/platform/soil/contracts.d.ts.map +1 -0
  389. package/dist/platform/soil/contracts.js +194 -0
  390. package/dist/platform/soil/contracts.js.map +1 -0
  391. package/dist/platform/soil/ddl.d.ts +8 -0
  392. package/dist/platform/soil/ddl.d.ts.map +1 -0
  393. package/dist/platform/soil/ddl.js +150 -0
  394. package/dist/platform/soil/ddl.js.map +1 -0
  395. package/dist/platform/soil/doctor.d.ts +34 -0
  396. package/dist/platform/soil/doctor.d.ts.map +1 -0
  397. package/dist/platform/soil/doctor.js +380 -0
  398. package/dist/platform/soil/doctor.js.map +1 -0
  399. package/dist/platform/soil/frontmatter.d.ts +15 -0
  400. package/dist/platform/soil/frontmatter.d.ts.map +1 -0
  401. package/dist/platform/soil/frontmatter.js +82 -0
  402. package/dist/platform/soil/frontmatter.js.map +1 -0
  403. package/dist/platform/soil/importer.d.ts +118 -0
  404. package/dist/platform/soil/importer.d.ts.map +1 -0
  405. package/dist/platform/soil/importer.js +145 -0
  406. package/dist/platform/soil/importer.js.map +1 -0
  407. package/dist/platform/soil/index-store.d.ts +89 -0
  408. package/dist/platform/soil/index-store.d.ts.map +1 -0
  409. package/dist/platform/soil/index-store.js +399 -0
  410. package/dist/platform/soil/index-store.js.map +1 -0
  411. package/dist/platform/soil/index.d.ts +20 -0
  412. package/dist/platform/soil/index.d.ts.map +1 -0
  413. package/dist/platform/soil/index.js +20 -0
  414. package/dist/platform/soil/index.js.map +1 -0
  415. package/dist/platform/soil/io.d.ts +18 -0
  416. package/dist/platform/soil/io.d.ts.map +1 -0
  417. package/dist/platform/soil/io.js +56 -0
  418. package/dist/platform/soil/io.js.map +1 -0
  419. package/dist/platform/soil/open.d.ts +32 -0
  420. package/dist/platform/soil/open.d.ts.map +1 -0
  421. package/dist/platform/soil/open.js +78 -0
  422. package/dist/platform/soil/open.js.map +1 -0
  423. package/dist/platform/soil/paths.d.ts +9 -0
  424. package/dist/platform/soil/paths.d.ts.map +1 -0
  425. package/dist/platform/soil/paths.js +78 -0
  426. package/dist/platform/soil/paths.js.map +1 -0
  427. package/dist/platform/soil/projections.d.ts +16 -0
  428. package/dist/platform/soil/projections.d.ts.map +1 -0
  429. package/dist/platform/soil/projections.js +265 -0
  430. package/dist/platform/soil/projections.js.map +1 -0
  431. package/dist/platform/soil/publish/apple-notes.d.ts +15 -0
  432. package/dist/platform/soil/publish/apple-notes.d.ts.map +1 -0
  433. package/dist/platform/soil/publish/apple-notes.js +58 -0
  434. package/dist/platform/soil/publish/apple-notes.js.map +1 -0
  435. package/dist/platform/soil/publish/config.d.ts +14 -0
  436. package/dist/platform/soil/publish/config.d.ts.map +1 -0
  437. package/dist/platform/soil/publish/config.js +59 -0
  438. package/dist/platform/soil/publish/config.js.map +1 -0
  439. package/dist/platform/soil/publish/index.d.ts +7 -0
  440. package/dist/platform/soil/publish/index.d.ts.map +1 -0
  441. package/dist/platform/soil/publish/index.js +7 -0
  442. package/dist/platform/soil/publish/index.js.map +1 -0
  443. package/dist/platform/soil/publish/notion.d.ts +51 -0
  444. package/dist/platform/soil/publish/notion.d.ts.map +1 -0
  445. package/dist/platform/soil/publish/notion.js +201 -0
  446. package/dist/platform/soil/publish/notion.js.map +1 -0
  447. package/dist/platform/soil/publish/publisher.d.ts +13 -0
  448. package/dist/platform/soil/publish/publisher.d.ts.map +1 -0
  449. package/dist/platform/soil/publish/publisher.js +55 -0
  450. package/dist/platform/soil/publish/publisher.js.map +1 -0
  451. package/dist/platform/soil/publish/snapshot.d.ts +4 -0
  452. package/dist/platform/soil/publish/snapshot.d.ts.map +1 -0
  453. package/dist/platform/soil/publish/snapshot.js +40 -0
  454. package/dist/platform/soil/publish/snapshot.js.map +1 -0
  455. package/dist/platform/soil/publish/types.d.ts +169 -0
  456. package/dist/platform/soil/publish/types.d.ts.map +1 -0
  457. package/dist/platform/soil/publish/types.js +32 -0
  458. package/dist/platform/soil/publish/types.js.map +1 -0
  459. package/dist/platform/soil/retriever.d.ts +52 -0
  460. package/dist/platform/soil/retriever.d.ts.map +1 -0
  461. package/dist/platform/soil/retriever.js +262 -0
  462. package/dist/platform/soil/retriever.js.map +1 -0
  463. package/dist/platform/soil/runtime-rebuild.d.ts +33 -0
  464. package/dist/platform/soil/runtime-rebuild.d.ts.map +1 -0
  465. package/dist/platform/soil/runtime-rebuild.js +201 -0
  466. package/dist/platform/soil/runtime-rebuild.js.map +1 -0
  467. package/dist/platform/soil/sqlite-repository.d.ts +25 -0
  468. package/dist/platform/soil/sqlite-repository.d.ts.map +1 -0
  469. package/dist/platform/soil/sqlite-repository.js +893 -0
  470. package/dist/platform/soil/sqlite-repository.js.map +1 -0
  471. package/dist/platform/soil/types.d.ts +506 -0
  472. package/dist/platform/soil/types.d.ts.map +1 -0
  473. package/dist/platform/soil/types.js +146 -0
  474. package/dist/platform/soil/types.js.map +1 -0
  475. package/dist/reflection/types.d.ts +2 -2
  476. package/dist/reporting/reporting-engine.d.ts.map +1 -1
  477. package/dist/reporting/reporting-engine.js +10 -0
  478. package/dist/reporting/reporting-engine.js.map +1 -1
  479. package/dist/runtime/approval-broker.d.ts.map +1 -1
  480. package/dist/runtime/approval-broker.js +32 -9
  481. package/dist/runtime/approval-broker.js.map +1 -1
  482. package/dist/runtime/daemon/client.d.ts +13 -0
  483. package/dist/runtime/daemon/client.d.ts.map +1 -1
  484. package/dist/runtime/daemon/client.js +41 -2
  485. package/dist/runtime/daemon/client.js.map +1 -1
  486. package/dist/runtime/daemon/runner-errors.d.ts +28 -0
  487. package/dist/runtime/daemon/runner-errors.d.ts.map +1 -0
  488. package/dist/runtime/daemon/runner-errors.js +41 -0
  489. package/dist/runtime/daemon/runner-errors.js.map +1 -0
  490. package/dist/runtime/daemon/runner-recovery.d.ts +12 -0
  491. package/dist/runtime/daemon/runner-recovery.d.ts.map +1 -0
  492. package/dist/runtime/daemon/runner-recovery.js +146 -0
  493. package/dist/runtime/daemon/runner-recovery.js.map +1 -0
  494. package/dist/runtime/daemon/runner.d.ts +6 -3
  495. package/dist/runtime/daemon/runner.d.ts.map +1 -1
  496. package/dist/runtime/daemon/runner.js +143 -172
  497. package/dist/runtime/daemon/runner.js.map +1 -1
  498. package/dist/runtime/event/server-sse.d.ts.map +1 -1
  499. package/dist/runtime/event/server-sse.js +0 -1
  500. package/dist/runtime/event/server-sse.js.map +1 -1
  501. package/dist/runtime/event/server.d.ts +27 -0
  502. package/dist/runtime/event/server.d.ts.map +1 -1
  503. package/dist/runtime/event/server.js +305 -71
  504. package/dist/runtime/event/server.js.map +1 -1
  505. package/dist/runtime/leader-lock-manager.d.ts.map +1 -1
  506. package/dist/runtime/leader-lock-manager.js +2 -1
  507. package/dist/runtime/leader-lock-manager.js.map +1 -1
  508. package/dist/runtime/notification-dispatcher.d.ts +7 -0
  509. package/dist/runtime/notification-dispatcher.d.ts.map +1 -1
  510. package/dist/runtime/notification-dispatcher.js +43 -1
  511. package/dist/runtime/notification-dispatcher.js.map +1 -1
  512. package/dist/runtime/notification-routing.d.ts +16 -0
  513. package/dist/runtime/notification-routing.d.ts.map +1 -0
  514. package/dist/runtime/notification-routing.js +147 -0
  515. package/dist/runtime/notification-routing.js.map +1 -0
  516. package/dist/runtime/plugin-loader.d.ts +2 -0
  517. package/dist/runtime/plugin-loader.d.ts.map +1 -1
  518. package/dist/runtime/plugin-loader.js +34 -2
  519. package/dist/runtime/plugin-loader.js.map +1 -1
  520. package/dist/runtime/schedule/engine-layers.d.ts.map +1 -1
  521. package/dist/runtime/schedule/engine-layers.js +106 -6
  522. package/dist/runtime/schedule/engine-layers.js.map +1 -1
  523. package/dist/runtime/schedule/engine.d.ts +2 -0
  524. package/dist/runtime/schedule/engine.d.ts.map +1 -1
  525. package/dist/runtime/schedule/engine.js +28 -0
  526. package/dist/runtime/schedule/engine.js.map +1 -1
  527. package/dist/runtime/schedule/history.d.ts +3 -3
  528. package/dist/runtime/schedule/presets.d.ts +128 -15
  529. package/dist/runtime/schedule/presets.d.ts.map +1 -1
  530. package/dist/runtime/schedule/presets.js +24 -0
  531. package/dist/runtime/schedule/presets.js.map +1 -1
  532. package/dist/runtime/schedule/source.d.ts +2 -2
  533. package/dist/runtime/types/cron.d.ts +4 -4
  534. package/dist/runtime/types/daemon.d.ts +3 -0
  535. package/dist/runtime/types/daemon.d.ts.map +1 -1
  536. package/dist/runtime/types/daemon.js +1 -0
  537. package/dist/runtime/types/daemon.js.map +1 -1
  538. package/dist/runtime/types/notification.d.ts +91 -0
  539. package/dist/runtime/types/notification.d.ts.map +1 -1
  540. package/dist/runtime/types/notification.js +10 -0
  541. package/dist/runtime/types/notification.js.map +1 -1
  542. package/dist/runtime/types/schedule.d.ts +60 -60
  543. package/dist/runtime/types/schedule.js +1 -1
  544. package/dist/runtime/types/schedule.js.map +1 -1
  545. package/dist/runtime/types/trigger.d.ts +6 -6
  546. package/dist/runtime/watchdog.d.ts +22 -0
  547. package/dist/runtime/watchdog.d.ts.map +1 -1
  548. package/dist/runtime/watchdog.js +47 -3
  549. package/dist/runtime/watchdog.js.map +1 -1
  550. package/dist/tools/builtin/index.d.ts +17 -0
  551. package/dist/tools/builtin/index.d.ts.map +1 -1
  552. package/dist/tools/builtin/index.js +46 -3
  553. package/dist/tools/builtin/index.js.map +1 -1
  554. package/dist/tools/execution/SoilDoctorTool/SoilDoctorTool.d.ts +43 -0
  555. package/dist/tools/execution/SoilDoctorTool/SoilDoctorTool.d.ts.map +1 -0
  556. package/dist/tools/execution/SoilDoctorTool/SoilDoctorTool.js +83 -0
  557. package/dist/tools/execution/SoilDoctorTool/SoilDoctorTool.js.map +1 -0
  558. package/dist/tools/execution/SoilDoctorTool/constants.d.ts +8 -0
  559. package/dist/tools/execution/SoilDoctorTool/constants.d.ts.map +1 -0
  560. package/dist/tools/execution/SoilDoctorTool/constants.js +8 -0
  561. package/dist/tools/execution/SoilDoctorTool/constants.js.map +1 -0
  562. package/dist/tools/execution/SoilDoctorTool/prompt.d.ts +2 -0
  563. package/dist/tools/execution/SoilDoctorTool/prompt.d.ts.map +1 -0
  564. package/dist/tools/execution/SoilDoctorTool/prompt.js +2 -0
  565. package/dist/tools/execution/SoilDoctorTool/prompt.js.map +1 -0
  566. package/dist/tools/execution/SoilImportTool/SoilImportTool.d.ts +109 -0
  567. package/dist/tools/execution/SoilImportTool/SoilImportTool.d.ts.map +1 -0
  568. package/dist/tools/execution/SoilImportTool/SoilImportTool.js +72 -0
  569. package/dist/tools/execution/SoilImportTool/SoilImportTool.js.map +1 -0
  570. package/dist/tools/execution/SoilImportTool/constants.d.ts +6 -0
  571. package/dist/tools/execution/SoilImportTool/constants.d.ts.map +1 -0
  572. package/dist/tools/execution/SoilImportTool/constants.js +6 -0
  573. package/dist/tools/execution/SoilImportTool/constants.js.map +1 -0
  574. package/dist/tools/execution/SoilImportTool/prompt.d.ts +2 -0
  575. package/dist/tools/execution/SoilImportTool/prompt.d.ts.map +1 -0
  576. package/dist/tools/execution/SoilImportTool/prompt.js +2 -0
  577. package/dist/tools/execution/SoilImportTool/prompt.js.map +1 -0
  578. package/dist/tools/execution/SoilOpenTool/SoilOpenTool.d.ts +46 -0
  579. package/dist/tools/execution/SoilOpenTool/SoilOpenTool.d.ts.map +1 -0
  580. package/dist/tools/execution/SoilOpenTool/SoilOpenTool.js +64 -0
  581. package/dist/tools/execution/SoilOpenTool/SoilOpenTool.js.map +1 -0
  582. package/dist/tools/execution/SoilOpenTool/constants.d.ts +6 -0
  583. package/dist/tools/execution/SoilOpenTool/constants.d.ts.map +1 -0
  584. package/dist/tools/execution/SoilOpenTool/constants.js +6 -0
  585. package/dist/tools/execution/SoilOpenTool/constants.js.map +1 -0
  586. package/dist/tools/execution/SoilOpenTool/prompt.d.ts +2 -0
  587. package/dist/tools/execution/SoilOpenTool/prompt.d.ts.map +1 -0
  588. package/dist/tools/execution/SoilOpenTool/prompt.js +2 -0
  589. package/dist/tools/execution/SoilOpenTool/prompt.js.map +1 -0
  590. package/dist/tools/execution/SoilPublishTool/SoilPublishTool.d.ts +49 -0
  591. package/dist/tools/execution/SoilPublishTool/SoilPublishTool.d.ts.map +1 -0
  592. package/dist/tools/execution/SoilPublishTool/SoilPublishTool.js +71 -0
  593. package/dist/tools/execution/SoilPublishTool/SoilPublishTool.js.map +1 -0
  594. package/dist/tools/execution/SoilPublishTool/constants.d.ts +6 -0
  595. package/dist/tools/execution/SoilPublishTool/constants.d.ts.map +1 -0
  596. package/dist/tools/execution/SoilPublishTool/constants.js +6 -0
  597. package/dist/tools/execution/SoilPublishTool/constants.js.map +1 -0
  598. package/dist/tools/execution/SoilPublishTool/prompt.d.ts +2 -0
  599. package/dist/tools/execution/SoilPublishTool/prompt.d.ts.map +1 -0
  600. package/dist/tools/execution/SoilPublishTool/prompt.js +2 -0
  601. package/dist/tools/execution/SoilPublishTool/prompt.js.map +1 -0
  602. package/dist/tools/execution/SoilRebuildTool/SoilRebuildTool.d.ts +34 -0
  603. package/dist/tools/execution/SoilRebuildTool/SoilRebuildTool.d.ts.map +1 -0
  604. package/dist/tools/execution/SoilRebuildTool/SoilRebuildTool.js +66 -0
  605. package/dist/tools/execution/SoilRebuildTool/SoilRebuildTool.js.map +1 -0
  606. package/dist/tools/execution/SoilRebuildTool/constants.d.ts +6 -0
  607. package/dist/tools/execution/SoilRebuildTool/constants.d.ts.map +1 -0
  608. package/dist/tools/execution/SoilRebuildTool/constants.js +6 -0
  609. package/dist/tools/execution/SoilRebuildTool/constants.js.map +1 -0
  610. package/dist/tools/execution/SoilRebuildTool/prompt.d.ts +2 -0
  611. package/dist/tools/execution/SoilRebuildTool/prompt.d.ts.map +1 -0
  612. package/dist/tools/execution/SoilRebuildTool/prompt.js +2 -0
  613. package/dist/tools/execution/SoilRebuildTool/prompt.js.map +1 -0
  614. package/dist/tools/executor.d.ts.map +1 -1
  615. package/dist/tools/executor.js +5 -2
  616. package/dist/tools/executor.js.map +1 -1
  617. package/dist/tools/fs/ApplyPatchTool/ApplyPatchTool.d.ts +38 -0
  618. package/dist/tools/fs/ApplyPatchTool/ApplyPatchTool.d.ts.map +1 -0
  619. package/dist/tools/fs/ApplyPatchTool/ApplyPatchTool.js +247 -0
  620. package/dist/tools/fs/ApplyPatchTool/ApplyPatchTool.js.map +1 -0
  621. package/dist/tools/fs/FileValidationTool/FileValidationTool.d.ts.map +1 -1
  622. package/dist/tools/fs/FileValidationTool/FileValidationTool.js +3 -2
  623. package/dist/tools/fs/FileValidationTool/FileValidationTool.js.map +1 -1
  624. package/dist/tools/fs/GlobTool/GlobTool.d.ts +1 -1
  625. package/dist/tools/fs/GlobTool/GlobTool.d.ts.map +1 -1
  626. package/dist/tools/fs/GlobTool/GlobTool.js +12 -1
  627. package/dist/tools/fs/GlobTool/GlobTool.js.map +1 -1
  628. package/dist/tools/fs/GrepTool/GrepTool.d.ts +1 -1
  629. package/dist/tools/fs/GrepTool/GrepTool.d.ts.map +1 -1
  630. package/dist/tools/fs/GrepTool/GrepTool.js +10 -3
  631. package/dist/tools/fs/GrepTool/GrepTool.js.map +1 -1
  632. package/dist/tools/fs/JsonQueryTool/JsonQueryTool.d.ts +1 -1
  633. package/dist/tools/fs/JsonQueryTool/JsonQueryTool.d.ts.map +1 -1
  634. package/dist/tools/fs/JsonQueryTool/JsonQueryTool.js +8 -1
  635. package/dist/tools/fs/JsonQueryTool/JsonQueryTool.js.map +1 -1
  636. package/dist/tools/fs/ListDirTool/ListDirTool.d.ts +2 -2
  637. package/dist/tools/fs/ListDirTool/ListDirTool.d.ts.map +1 -1
  638. package/dist/tools/fs/ListDirTool/ListDirTool.js +13 -5
  639. package/dist/tools/fs/ListDirTool/ListDirTool.js.map +1 -1
  640. package/dist/tools/fs/ReadTool/ReadTool.d.ts +1 -1
  641. package/dist/tools/fs/ReadTool/ReadTool.d.ts.map +1 -1
  642. package/dist/tools/fs/ReadTool/ReadTool.js +8 -1
  643. package/dist/tools/fs/ReadTool/ReadTool.js.map +1 -1
  644. package/dist/tools/index.d.ts +2 -0
  645. package/dist/tools/index.d.ts.map +1 -1
  646. package/dist/tools/index.js +1 -0
  647. package/dist/tools/index.js.map +1 -1
  648. package/dist/tools/media/ViewImageTool/ViewImageTool.d.ts +31 -0
  649. package/dist/tools/media/ViewImageTool/ViewImageTool.d.ts.map +1 -0
  650. package/dist/tools/media/ViewImageTool/ViewImageTool.js +53 -0
  651. package/dist/tools/media/ViewImageTool/ViewImageTool.js.map +1 -0
  652. package/dist/tools/mutation/ConfigureNotificationRoutingTool/ConfigureNotificationRoutingTool.d.ts +25 -0
  653. package/dist/tools/mutation/ConfigureNotificationRoutingTool/ConfigureNotificationRoutingTool.d.ts.map +1 -0
  654. package/dist/tools/mutation/ConfigureNotificationRoutingTool/ConfigureNotificationRoutingTool.js +59 -0
  655. package/dist/tools/mutation/ConfigureNotificationRoutingTool/ConfigureNotificationRoutingTool.js.map +1 -0
  656. package/dist/tools/mutation/ConfigureNotificationRoutingTool/constants.d.ts +5 -0
  657. package/dist/tools/mutation/ConfigureNotificationRoutingTool/constants.d.ts.map +1 -0
  658. package/dist/tools/mutation/ConfigureNotificationRoutingTool/constants.js +5 -0
  659. package/dist/tools/mutation/ConfigureNotificationRoutingTool/constants.js.map +1 -0
  660. package/dist/tools/mutation/ConfigureNotificationRoutingTool/prompt.d.ts +2 -0
  661. package/dist/tools/mutation/ConfigureNotificationRoutingTool/prompt.d.ts.map +1 -0
  662. package/dist/tools/mutation/ConfigureNotificationRoutingTool/prompt.js +5 -0
  663. package/dist/tools/mutation/ConfigureNotificationRoutingTool/prompt.js.map +1 -0
  664. package/dist/tools/mutation/TaskCreateTool/TaskCreateTool.d.ts +4 -4
  665. package/dist/tools/mutation/TaskOutputTool/TaskOutputTool.d.ts +2 -2
  666. package/dist/tools/network/GitHubCliTool/GitHubCliTool.d.ts +144 -0
  667. package/dist/tools/network/GitHubCliTool/GitHubCliTool.d.ts.map +1 -0
  668. package/dist/tools/network/GitHubCliTool/GitHubCliTool.js +245 -0
  669. package/dist/tools/network/GitHubCliTool/GitHubCliTool.js.map +1 -0
  670. package/dist/tools/network/HttpFetchTool/HttpFetchTool.d.ts +16 -0
  671. package/dist/tools/network/HttpFetchTool/HttpFetchTool.d.ts.map +1 -1
  672. package/dist/tools/network/HttpFetchTool/HttpFetchTool.js +252 -13
  673. package/dist/tools/network/HttpFetchTool/HttpFetchTool.js.map +1 -1
  674. package/dist/tools/network/McpStdioTool/McpStdioTool.d.ts +109 -0
  675. package/dist/tools/network/McpStdioTool/McpStdioTool.d.ts.map +1 -0
  676. package/dist/tools/network/McpStdioTool/McpStdioTool.js +121 -0
  677. package/dist/tools/network/McpStdioTool/McpStdioTool.js.map +1 -0
  678. package/dist/tools/query/GoalStateTool/GoalStateTool.js +1 -1
  679. package/dist/tools/query/GoalStateTool/GoalStateTool.js.map +1 -1
  680. package/dist/tools/query/MemoryRecallTool/MemoryRecallTool.d.ts +4 -4
  681. package/dist/tools/query/SoilQueryTool/SoilQueryTool.d.ts +118 -0
  682. package/dist/tools/query/SoilQueryTool/SoilQueryTool.d.ts.map +1 -0
  683. package/dist/tools/query/SoilQueryTool/SoilQueryTool.js +335 -0
  684. package/dist/tools/query/SoilQueryTool/SoilQueryTool.js.map +1 -0
  685. package/dist/tools/query/SoilQueryTool/constants.d.ts +8 -0
  686. package/dist/tools/query/SoilQueryTool/constants.d.ts.map +1 -0
  687. package/dist/tools/query/SoilQueryTool/constants.js +8 -0
  688. package/dist/tools/query/SoilQueryTool/constants.js.map +1 -0
  689. package/dist/tools/query/SoilQueryTool/prompt.d.ts +2 -0
  690. package/dist/tools/query/SoilQueryTool/prompt.d.ts.map +1 -0
  691. package/dist/tools/query/SoilQueryTool/prompt.js +2 -0
  692. package/dist/tools/query/SoilQueryTool/prompt.js.map +1 -0
  693. package/dist/tools/schedule/CreateScheduleTool/CreateScheduleTool.d.ts +164 -52
  694. package/dist/tools/schedule/CreateScheduleTool/CreateScheduleTool.d.ts.map +1 -1
  695. package/dist/tools/schedule/ListSchedulesTool/ListSchedulesTool.d.ts +4 -4
  696. package/dist/tools/schedule/UpdateScheduleTool/UpdateScheduleTool.d.ts +76 -76
  697. package/dist/tools/system/GitLogTool/GitLogTool.d.ts +4 -4
  698. package/dist/tools/system/ProcessSessionTool/ProcessSessionTool.d.ts +220 -0
  699. package/dist/tools/system/ProcessSessionTool/ProcessSessionTool.d.ts.map +1 -0
  700. package/dist/tools/system/ProcessSessionTool/ProcessSessionTool.js +354 -0
  701. package/dist/tools/system/ProcessSessionTool/ProcessSessionTool.js.map +1 -0
  702. package/dist/tools/system/ShellCommandTool/ShellCommandTool.d.ts +44 -0
  703. package/dist/tools/system/ShellCommandTool/ShellCommandTool.d.ts.map +1 -0
  704. package/dist/tools/system/ShellCommandTool/ShellCommandTool.js +40 -0
  705. package/dist/tools/system/ShellCommandTool/ShellCommandTool.js.map +1 -0
  706. package/dist/tools/system/UpdatePlanTool/UpdatePlanTool.d.ts +61 -0
  707. package/dist/tools/system/UpdatePlanTool/UpdatePlanTool.d.ts.map +1 -0
  708. package/dist/tools/system/UpdatePlanTool/UpdatePlanTool.js +42 -0
  709. package/dist/tools/system/UpdatePlanTool/UpdatePlanTool.js.map +1 -0
  710. package/dist/tools/types.d.ts +6 -2
  711. package/dist/tools/types.d.ts.map +1 -1
  712. package/dist/tools/types.js.map +1 -1
  713. package/package.json +7 -1
  714. package/dist/adapters/agents/browser-use-cli.d.ts +0 -19
  715. package/dist/adapters/agents/browser-use-cli.d.ts.map +0 -1
  716. package/dist/adapters/agents/browser-use-cli.js +0 -74
  717. package/dist/adapters/agents/browser-use-cli.js.map +0 -1
  718. package/dist/adapters/agents/openclaw-acp.d.ts +0 -32
  719. package/dist/adapters/agents/openclaw-acp.d.ts.map +0 -1
  720. package/dist/adapters/agents/openclaw-acp.js +0 -212
  721. package/dist/adapters/agents/openclaw-acp.js.map +0 -1
  722. package/dist/adapters/datasources/openclaw-datasource.d.ts +0 -33
  723. package/dist/adapters/datasources/openclaw-datasource.d.ts.map +0 -1
  724. package/dist/adapters/datasources/openclaw-datasource.js +0 -176
  725. package/dist/adapters/datasources/openclaw-datasource.js.map +0 -1
  726. package/dist/orchestrator/knowledge/memory/memory-lifecycle.d.ts +0 -2
  727. package/dist/orchestrator/knowledge/memory/memory-lifecycle.d.ts.map +0 -1
  728. package/dist/orchestrator/knowledge/memory/memory-lifecycle.js +0 -2
  729. package/dist/orchestrator/knowledge/memory/memory-lifecycle.js.map +0 -1
package/README.md CHANGED
@@ -1,142 +1,66 @@
1
1
  <div align="center">
2
2
 
3
- <img src="assets/seedy.png" alt="Seedy PulSeed mascot" width="120" />
3
+ <img src="assets/seedy.png" alt="Seedy - PulSeed mascot" width="120" />
4
4
 
5
5
  # PulSeed
6
6
 
7
- ### An AI agent system that grows your goals from seed to tree.
7
+ Goal-driven orchestration for long-running work.
8
8
 
9
9
  [![Website](https://img.shields.io/badge/Website-pulseed.dev-blue)](https://pulseed.dev)
10
10
  [![CI](https://github.com/my-name-is-yu/PulSeed/actions/workflows/ci.yml/badge.svg)](https://github.com/my-name-is-yu/PulSeed/actions/workflows/ci.yml)
11
11
  [![npm version](https://img.shields.io/npm/v/pulseed.svg)](https://www.npmjs.com/package/pulseed)
12
12
  [![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)
13
13
 
14
- Set a goal. Seedy takes it from there — observing, planning, delegating to AI agents, and tracking progress until it's done.
15
-
16
- <br/>
17
14
  </div>
18
15
 
19
- ## What Can Seedy Do?
16
+ PulSeed is an AI agent orchestrator for goals that need more than one chat turn.
20
17
 
21
- - **Track long-term goals with real measurable progress** — "Increase test coverage to 90%," "Double monthly revenue," "Keep my dog healthy." Seedy decomposes goals into dimensions, measures each one, and keeps going.
22
- - **Delegate work to any AI agent** — Claude Code, OpenAI Codex, Browser Use, or your own custom adapter. Swap agents without changing goals.
23
- - **Know when to stop** — Seedy applies satisficing: when every dimension crosses its threshold with enough evidence, the goal is complete. No infinite loops. No premature exits.
24
- - **Stay safe** — Irreversible actions always need your approval. Trust is asymmetric: one failure costs more than three successes earn.
18
+ Naming note: `PulSeed` is the product name, and `pulseed` is the CLI and npm package name.
25
19
 
26
20
  ## Quick Start
27
21
 
28
- **1. Install PulSeed (Node.js 20+):**
22
+ 1. Install Node.js 20 or newer.
23
+ 2. Install the CLI:
29
24
 
30
25
  ```bash
31
26
  npm install -g pulseed
32
27
  ```
33
28
 
34
- **2. Set your API key:**
29
+ 3. Start PulSeed:
35
30
 
36
31
  ```bash
37
- export OPENAI_API_KEY=sk-...
38
-
39
- # Or use Anthropic
40
- # export PULSEED_LLM_PROVIDER=anthropic
41
- # export ANTHROPIC_API_KEY=sk-ant-...
32
+ pulseed
42
33
  ```
43
34
 
44
- **3. Plant a goal and let Seedy grow it:**
45
-
46
- ```bash
47
- pulseed goal add "Increase test coverage to 90%"
48
- pulseed run
49
- pulseed status
50
- ```
51
-
52
- Seedy assesses feasibility, breaks the goal down, delegates tasks to agents, and tracks progress automatically.
53
-
54
- > **Using OpenClaw?** Install the official plugin for seamless integration — see [`@pulseed/openclaw-plugin`](openclaw-plugin/README.md).
55
-
56
- ## Demos
57
-
58
- **Code Quality** — "Increase test coverage to 90%." Seedy observes current coverage, identifies untested modules, delegates test writing to a coding agent, and verifies with real test runs.
59
-
60
- **Revenue Target** — "Double monthly revenue within 6 months." Seedy tracks revenue metrics, identifies growth opportunities, delegates research and implementation, and measures actual outcomes.
61
-
62
- **Health Monitoring** — "Keep my dog healthy." Seedy monitors health indicators, schedules vet checkups, tracks nutrition, and escalates when human judgment is needed.
63
-
64
- More examples in [docs/usecase.md](docs/usecase.md).
65
-
66
- ## Features
67
-
68
- - **Goal-driven orchestration** — Set a destination, not step-by-step instructions
69
- - **Agent-agnostic** — Swap agents without changing goals
70
- - **Satisficing** — Knows when "good enough" is enough
71
- - **Asymmetric trust** — Failure costs more than success; safety by default
72
- - **Stall detection** — Detects loops and changes strategy automatically
73
- - **Plugin system** — Extend with custom adapters, notifiers, and data sources
74
- - **Goal trees** — Decompose large goals into sub-goals, each tracked independently
75
- - **TUI dashboard** — Real-time terminal UI with progress, logs, and approval flow
35
+ Then describe what you want in natural language, such as "Increase test coverage to 90%."
76
36
 
77
- Deep dive: [Architecture Map](docs/architecture-map.md) | [How it works](docs/mechanism.md)
37
+ ## Current Architecture
78
38
 
79
- ## Adapters
39
+ PulSeed uses two layers:
80
40
 
81
- | Adapter | Type | Use Case |
82
- |---------|------|----------|
83
- | `openclaw_gateway` | OpenClaw Gateway | Goal detection, agent orchestration |
84
- | `claude_code_cli` | CLI | Code execution, file operations |
85
- | `openai_codex_cli` | CLI | Code execution, file operations |
86
- | `browser_use_cli` | CLI | Web browsing, scraping |
87
- | `claude_api` | LLM API | Text generation, analysis |
88
- | `github_issue` | REST API | Issue creation, search |
89
- | `a2a` | A2A Protocol | Remote agent delegation |
41
+ - `CoreLoop` keeps a goal moving, checks progress, and decides whether to continue, refine, verify, or stop
42
+ - `AgentLoop` handles bounded tool-using work such as task execution, chat turns, and selected runtime phases
90
43
 
91
- Custom adapters: [Plugin Development Guide](docs/design/infrastructure/plugin-development-guide.md)
44
+ State, reports, schedules, and local memory live under `~/.pulseed/`.
92
45
 
93
- ## Plugins
94
-
95
- | Plugin | Description |
96
- |--------|-------------|
97
- | [`@pulseed/openclaw-plugin`](openclaw-plugin/) | OpenClaw Gateway — goal detection, agent orchestration, progress tracking |
98
- | [`@pulseed/slack-notifier`](plugins/slack-notifier/) | Slack notifications for goal events |
99
-
100
- ## Getting Started (Developers)
101
-
102
- **Programmatic usage:**
103
-
104
- ```typescript
105
- import { CoreLoop, StateManager } from "pulseed";
106
-
107
- const stateManager = new StateManager("~/.pulseed");
108
- const loop = new CoreLoop({ stateManager, /* ...adapters */ });
109
- await loop.runOnce();
110
- ```
111
-
112
- **CLI reference:** See [docs/getting-started.md](docs/getting-started.md) for the full command list.
113
-
114
- **Development setup:**
46
+ ## Main Command
115
47
 
116
48
  ```bash
117
- git clone https://github.com/my-name-is-yu/PulSeed.git
118
- cd PulSeed
119
- npm install
120
- npm run build
121
- npm test
49
+ pulseed
122
50
  ```
123
51
 
124
- State: `~/.pulseed/` | Reports: `~/.pulseed/reports/` | Ethics logs: `~/.pulseed/ethics/`
125
-
126
- ## Contributing
127
-
128
- See [CONTRIBUTING.md](CONTRIBUTING.md) for guidelines.
129
-
130
- ## Changelog
131
-
132
- See [CHANGELOG.md](CHANGELOG.md) for version history.
133
-
134
- ---
52
+ PulSeed is designed so the primary workflow can happen through natural language.
53
+ Use the lower-level CLI commands only when you need scriptable or diagnostic control.
135
54
 
136
- PulSeed stores all state locally. No telemetry. No phone-home. Your LLM provider is the only external connection.
55
+ ## Docs
137
56
 
138
- [MIT License](LICENSE)
57
+ - [Getting Started](docs/getting-started.md)
58
+ - [Docs Index](docs/index.md)
59
+ - [Mechanism](docs/mechanism.md)
60
+ - [Runtime](docs/runtime.md)
61
+ - [Configuration](docs/configuration.md)
62
+ - [Architecture Map](docs/architecture-map.md)
139
63
 
140
- ---
64
+ ## License
141
65
 
142
- **Plant the seed. Watch it grow.**
66
+ MIT
@@ -0,0 +1,7 @@
1
+ import type { AgentTask, AgentResult, IAdapter } from "../../orchestrator/execution/adapter-layer.js";
2
+ export declare class NativeAgentLoopAdapter implements IAdapter {
3
+ readonly adapterType = "agent_loop";
4
+ readonly capabilities: readonly ["general_purpose", "tool_calling", "native_agentloop"];
5
+ execute(_task: AgentTask): Promise<AgentResult>;
6
+ }
7
+ //# sourceMappingURL=native-agent-loop.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"native-agent-loop.d.ts","sourceRoot":"","sources":["../../../src/adapters/agents/native-agent-loop.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,WAAW,EAAE,QAAQ,EAAE,MAAM,+CAA+C,CAAC;AAEtG,qBAAa,sBAAuB,YAAW,QAAQ;IACrD,QAAQ,CAAC,WAAW,gBAAgB;IACpC,QAAQ,CAAC,YAAY,mEAIV;IAEL,OAAO,CAAC,KAAK,EAAE,SAAS,GAAG,OAAO,CAAC,WAAW,CAAC;CAUtD"}
@@ -0,0 +1,19 @@
1
+ export class NativeAgentLoopAdapter {
2
+ adapterType = "agent_loop";
3
+ capabilities = [
4
+ "general_purpose",
5
+ "tool_calling",
6
+ "native_agentloop",
7
+ ];
8
+ async execute(_task) {
9
+ return {
10
+ success: false,
11
+ output: "",
12
+ error: "NativeAgentLoopAdapter is a selection marker. TaskLifecycle must execute via TaskAgentLoopRunner.",
13
+ exit_code: null,
14
+ elapsed_ms: 0,
15
+ stopped_reason: "error",
16
+ };
17
+ }
18
+ }
19
+ //# sourceMappingURL=native-agent-loop.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"native-agent-loop.js","sourceRoot":"","sources":["../../../src/adapters/agents/native-agent-loop.ts"],"names":[],"mappings":"AAEA,MAAM,OAAO,sBAAsB;IACxB,WAAW,GAAG,YAAY,CAAC;IAC3B,YAAY,GAAG;QACtB,iBAAiB;QACjB,cAAc;QACd,kBAAkB;KACV,CAAC;IAEX,KAAK,CAAC,OAAO,CAAC,KAAgB;QAC5B,OAAO;YACL,OAAO,EAAE,KAAK;YACd,MAAM,EAAE,EAAE;YACV,KAAK,EAAE,mGAAmG;YAC1G,SAAS,EAAE,IAAI;YACf,UAAU,EAAE,CAAC;YACb,cAAc,EAAE,OAAO;SACxB,CAAC;IACJ,CAAC;CACF"}
@@ -13,6 +13,8 @@ export interface OpenAICodexCLIAdapterConfig {
13
13
  model?: string;
14
14
  /** Repository path passed to Codex for workspace-aware execution. Default: "." */
15
15
  repoPath?: string;
16
+ /** Pass --skip-git-repo-check. Default: true for daemon/test workspaces. */
17
+ skipGitRepoCheck?: boolean;
16
18
  }
17
19
  export declare class OpenAICodexCLIAdapter implements IAdapter {
18
20
  readonly adapterType = "openai_codex_cli";
@@ -21,6 +23,7 @@ export declare class OpenAICodexCLIAdapter implements IAdapter {
21
23
  private readonly sandboxPolicy;
22
24
  private readonly model;
23
25
  private readonly repoPath;
26
+ private readonly skipGitRepoCheck;
24
27
  private readonly logger?;
25
28
  constructor(config?: OpenAICodexCLIAdapterConfig, logger?: Logger);
26
29
  execute(task: AgentTask): Promise<AgentResult>;
@@ -1 +1 @@
1
- {"version":3,"file":"openai-codex.d.ts","sourceRoot":"","sources":["../../../src/adapters/agents/openai-codex.ts"],"names":[],"mappings":"AAgBA,OAAO,KAAK,EAAE,QAAQ,EAAE,SAAS,EAAE,WAAW,EAAE,MAAM,+CAA+C,CAAC;AACtG,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,yBAAyB,CAAC;AAGtD,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;CA2CrD"}
1
+ {"version":3,"file":"openai-codex.d.ts","sourceRoot":"","sources":["../../../src/adapters/agents/openai-codex.ts"],"names":[],"mappings":"AAiBA,OAAO,KAAK,EAAE,QAAQ,EAAE,SAAS,EAAE,WAAW,EAAE,MAAM,+CAA+C,CAAC;AACtG,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,yBAAyB,CAAC;AAGtD,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;IAClB,4EAA4E;IAC5E,gBAAgB,CAAC,EAAE,OAAO,CAAC;CAC5B;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,gBAAgB,CAAU;IAC3C,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAS;gBAErB,MAAM,GAAE,2BAAgC,EAAE,MAAM,CAAC,EAAE,MAAM;IAU/D,OAAO,CAAC,IAAI,EAAE,SAAS,GAAG,OAAO,CAAC,WAAW,CAAC;CA+CrD"}
@@ -12,7 +12,8 @@
12
12
  // - `-s danger-full-access` sets sandbox policy to allow full disk/command access
13
13
  // - `-m <model>` selects the model (e.g. "o4-mini", "o3")
14
14
  // - When [PROMPT] arg is omitted (or `-` is given), prompt is read from stdin
15
- // - NOTE: --full-auto does NOT exist in this version; use sandbox policy instead
15
+ // - --skip-git-repo-check allows execution in temporary/synced worktrees that
16
+ // are not in Codex's trusted directory list.
16
17
  import { spawnWithTimeout, spawnResultToAgentResult } from "../spawn-helper.js";
17
18
  export class OpenAICodexCLIAdapter {
18
19
  adapterType = "openai_codex_cli";
@@ -21,6 +22,7 @@ export class OpenAICodexCLIAdapter {
21
22
  sandboxPolicy;
22
23
  model;
23
24
  repoPath;
25
+ skipGitRepoCheck;
24
26
  logger;
25
27
  constructor(config = {}, logger) {
26
28
  this.cliPath = config.cliPath ?? "codex";
@@ -28,6 +30,7 @@ export class OpenAICodexCLIAdapter {
28
30
  config.sandboxPolicy !== undefined ? config.sandboxPolicy : "danger-full-access";
29
31
  this.model = config.model;
30
32
  this.repoPath = config.repoPath?.trim() || ".";
33
+ this.skipGitRepoCheck = config.skipGitRepoCheck ?? true;
31
34
  this.logger = logger;
32
35
  }
33
36
  async execute(task) {
@@ -41,6 +44,9 @@ export class OpenAICodexCLIAdapter {
41
44
  if (this.model) {
42
45
  spawnArgs.push("-m", this.model);
43
46
  }
47
+ if (this.skipGitRepoCheck) {
48
+ spawnArgs.push("--skip-git-repo-check");
49
+ }
44
50
  // allowed_tools: codex-cli does not have a native tool-restriction flag.
45
51
  // Log a warning for observability; toolset constraint is enforced at the
46
52
  // PulSeed layer (ToolsetLock) rather than being delegated to the CLI.
@@ -1 +1 @@
1
- {"version":3,"file":"openai-codex.js","sourceRoot":"","sources":["../../../src/adapters/agents/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,oBAAoB,CAAC;AAiBhF,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,EAAE,GAAG,OAAO,CAAC,GAAG,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,GAAG,EAAE,EAAE,SAAS,EAAE,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC;EACjG,IAAI,CAAC,aAAa;;;EAGlB,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,EAAE,EACzB,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/agents/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,gFAAgF;AAChF,iDAAiD;AAIjD,OAAO,EAAE,gBAAgB,EAAE,wBAAwB,EAAE,MAAM,oBAAoB,CAAC;AAmBhF,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,gBAAgB,CAAU;IAC1B,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,gBAAgB,GAAG,MAAM,CAAC,gBAAgB,IAAI,IAAI,CAAC;QACxD,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,IAAI,IAAI,CAAC,gBAAgB,EAAE,CAAC;YAC1B,SAAS,CAAC,IAAI,CAAC,uBAAuB,CAAC,CAAC;QAC1C,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,EAAE,GAAG,OAAO,CAAC,GAAG,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,GAAG,EAAE,EAAE,SAAS,EAAE,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC;EACjG,IAAI,CAAC,aAAa;;;EAGlB,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,EAAE,EACzB,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"}
@@ -20,6 +20,8 @@ export declare class GitHubIssueDataSourceAdapter implements IDataSourceAdapter
20
20
  healthCheck(): Promise<boolean>;
21
21
  private resolveRepo;
22
22
  private resolveLabel;
23
+ private resolveQueryContext;
24
+ private resolveQueryPlan;
23
25
  /**
24
26
  * Spawn `gh issue list` for a single state and call back with results.
25
27
  * Uses a callback so the result can be returned synchronously inside
@@ -38,6 +40,17 @@ export declare class GitHubIssueDataSourceAdapter implements IDataSourceAdapter
38
40
  * microtask gaps.
39
41
  */
40
42
  private spawnList;
43
+ private createListProcess;
44
+ private buildCountResult;
45
+ private createSingleStateResultBuilder;
46
+ private createAggregateResultBuilder;
47
+ private buildSingleStateResult;
48
+ private buildAggregateResult;
49
+ private buildErrorResult;
50
+ private buildMetricResult;
51
+ private buildUnknownDimensionResult;
52
+ private buildCompletionMetadata;
53
+ private buildAggregateMetrics;
41
54
  private buildListArgs;
42
55
  private parseIssueList;
43
56
  }
@@ -1 +1 @@
1
- {"version":3,"file":"github-issue-datasource.d.ts","sourceRoot":"","sources":["../../../src/adapters/datasources/github-issue-datasource.ts"],"names":[],"mappings":"AAeA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,mDAAmD,CAAC;AAC5F,OAAO,KAAK,EACV,cAAc,EACd,gBAAgB,EAChB,eAAe,EACf,gBAAgB,EACjB,MAAM,iCAAiC,CAAC;AAIzC,UAAU,kBAAmB,SAAQ,gBAAgB;IACnD,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAcD,qBAAa,4BAA6B,YAAW,kBAAkB;IACrE,QAAQ,CAAC,UAAU,EAAE,cAAc,CAAY;IAC/C,QAAQ,CAAC,MAAM,EAAE,gBAAgB,CAAC;IAElC,OAAO,CAAC,MAAM,CAAS;gBAEX,MAAM,EAAE,gBAAgB,EAAE,MAAM,GAAE,MAAa;IAK3D,IAAI,QAAQ,IAAI,MAAM,CAErB;IAED;;;OAGG;IACG,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;IAI9B,KAAK,CAAC,MAAM,EAAE,eAAe,GAAG,OAAO,CAAC,kBAAkB,CAAC;IAoH3D,sBAAsB,IAAI,MAAM,EAAE;IAI5B,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC;IAIjC,WAAW,IAAI,OAAO,CAAC,OAAO,CAAC;IAoC/B,OAAO,CAAC,WAAW;IAWnB,OAAO,CAAC,YAAY;IAKpB;;;;OAIG;IACH,OAAO,CAAC,aAAa;IAgDrB;;;;OAIG;IACH,OAAO,CAAC,eAAe;IA6BvB;;;;OAIG;IACH,OAAO,CAAC,SAAS;IA8CjB,OAAO,CAAC,aAAa;IA2BrB,OAAO,CAAC,cAAc;CAWvB"}
1
+ {"version":3,"file":"github-issue-datasource.d.ts","sourceRoot":"","sources":["../../../src/adapters/datasources/github-issue-datasource.ts"],"names":[],"mappings":"AAeA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,mDAAmD,CAAC;AAC5F,OAAO,KAAK,EACV,cAAc,EACd,gBAAgB,EAChB,eAAe,EACf,gBAAgB,EACjB,MAAM,iCAAiC,CAAC;AAIzC,UAAU,kBAAmB,SAAQ,gBAAgB;IACnD,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAkBD,qBAAa,4BAA6B,YAAW,kBAAkB;IACrE,QAAQ,CAAC,UAAU,EAAE,cAAc,CAAY;IAC/C,QAAQ,CAAC,MAAM,EAAE,gBAAgB,CAAC;IAElC,OAAO,CAAC,MAAM,CAAS;gBAEX,MAAM,EAAE,gBAAgB,EAAE,MAAM,GAAE,MAAa;IAK3D,IAAI,QAAQ,IAAI,MAAM,CAErB;IAED;;;OAGG;IACG,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;IAI9B,KAAK,CAAC,MAAM,EAAE,eAAe,GAAG,OAAO,CAAC,kBAAkB,CAAC;IA0B3D,sBAAsB,IAAI,MAAM,EAAE;IAI5B,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC;IAIjC,WAAW,IAAI,OAAO,CAAC,OAAO,CAAC;IAoC/B,OAAO,CAAC,WAAW;IAWnB,OAAO,CAAC,YAAY;IAKpB,OAAO,CAAC,mBAAmB;IAyB3B,OAAO,CAAC,gBAAgB;IAcxB;;;;OAIG;IACH,OAAO,CAAC,aAAa;IAcrB;;;;OAIG;IACH,OAAO,CAAC,eAAe;IA6BvB;;;;OAIG;IACH,OAAO,CAAC,SAAS;IA4CjB,OAAO,CAAC,iBAAiB;IASzB,OAAO,CAAC,gBAAgB;IAIxB,OAAO,CAAC,8BAA8B;IAMtC,OAAO,CAAC,4BAA4B;IAQpC,OAAO,CAAC,sBAAsB;IAQ9B,OAAO,CAAC,oBAAoB;IAyB5B,OAAO,CAAC,gBAAgB;IAUxB,OAAO,CAAC,iBAAiB;IASzB,OAAO,CAAC,2BAA2B;IASnC,OAAO,CAAC,uBAAuB;IAc/B,OAAO,CAAC,qBAAqB;IAsB7B,OAAO,CAAC,aAAa;IA2BrB,OAAO,CAAC,cAAc;CAWvB"}
@@ -32,110 +32,15 @@ export class GitHubIssueDataSourceAdapter {
32
32
  // No-op network validation — gh CLI availability is checked at query/healthCheck time.
33
33
  }
34
34
  query(params) {
35
- const config = this.config;
36
- const repo = this.resolveRepo(config);
37
- const label = this.resolveLabel(config);
38
- const timeoutMs = params.timeout_ms ?? 10_000;
39
- const sourceId = this.sourceId;
40
- // Check dimension_mapping for redirect
41
- const dimMapping = config.dimension_mapping ?? {};
42
- const dimension = params.expression ?? params.dimension_name;
43
- const resolvedDimension = dimMapping[dimension] ?? dimension;
44
- // Unknown dimension — return immediately without spawning
45
- const knownDimensions = new Set([
46
- "open_issue_count",
47
- "closed_issue_count",
48
- "total_issue_count",
49
- "completion_ratio",
50
- ]);
51
- if (!knownDimensions.has(resolvedDimension)) {
52
- return Promise.resolve({
53
- value: null,
54
- raw: [],
55
- timestamp: new Date().toISOString(),
56
- source_id: sourceId,
57
- });
35
+ const { repo, label, timeoutMs, resolvedDimension, sourceId } = this.resolveQueryContext(params);
36
+ const queryPlan = this.resolveQueryPlan(resolvedDimension);
37
+ if (queryPlan === null) {
38
+ return Promise.resolve(this.buildUnknownDimensionResult(sourceId));
58
39
  }
59
- // ── Dimensions that require only open issues ──────────────────────────
60
- if (resolvedDimension === "open_issue_count") {
61
- return this.queryOneState("open", repo, label, timeoutMs, (openIssues, err) => {
62
- if (err !== null) {
63
- return {
64
- value: null,
65
- raw: [],
66
- timestamp: new Date().toISOString(),
67
- source_id: sourceId,
68
- error: err,
69
- };
70
- }
71
- return {
72
- value: openIssues.length,
73
- raw: openIssues,
74
- timestamp: new Date().toISOString(),
75
- source_id: sourceId,
76
- };
77
- });
40
+ if (queryPlan.kind === "single") {
41
+ return this.queryOneState(queryPlan.state, repo, label, timeoutMs, this.createSingleStateResultBuilder(sourceId));
78
42
  }
79
- if (resolvedDimension === "closed_issue_count") {
80
- return this.queryOneState("closed", repo, label, timeoutMs, (closedIssues, err) => {
81
- if (err !== null) {
82
- return {
83
- value: null,
84
- raw: [],
85
- timestamp: new Date().toISOString(),
86
- source_id: sourceId,
87
- error: err,
88
- };
89
- }
90
- return {
91
- value: closedIssues.length,
92
- raw: closedIssues,
93
- timestamp: new Date().toISOString(),
94
- source_id: sourceId,
95
- };
96
- });
97
- }
98
- // ── Dimensions that require both open and closed issues ───────────────
99
- // (completion_ratio, total_issue_count)
100
- return this.queryBothStates(repo, label, timeoutMs, (openIssues, closedIssues, err) => {
101
- if (err !== null) {
102
- return {
103
- value: null,
104
- raw: [],
105
- timestamp: new Date().toISOString(),
106
- source_id: sourceId,
107
- error: err,
108
- };
109
- }
110
- const openCount = openIssues.length;
111
- const closedCount = closedIssues.length;
112
- const totalCount = openCount + closedCount;
113
- const completionRatio = totalCount === 0 ? 0 : closedCount / totalCount;
114
- const allIssues = [...openIssues, ...closedIssues];
115
- let value;
116
- switch (resolvedDimension) {
117
- case "total_issue_count":
118
- value = totalCount;
119
- break;
120
- case "completion_ratio":
121
- value = completionRatio;
122
- break;
123
- default:
124
- value = 0;
125
- }
126
- return {
127
- value,
128
- raw: allIssues,
129
- timestamp: new Date().toISOString(),
130
- source_id: sourceId,
131
- metadata: {
132
- open_count: openCount,
133
- closed_count: closedCount,
134
- total_count: totalCount,
135
- completion_ratio: completionRatio,
136
- },
137
- };
138
- });
43
+ return this.queryBothStates(repo, label, timeoutMs, this.createAggregateResultBuilder(sourceId, queryPlan.dimension));
139
44
  }
140
45
  getSupportedDimensions() {
141
46
  return ["open_issue_count", "closed_issue_count", "total_issue_count", "completion_ratio"];
@@ -190,6 +95,36 @@ export class GitHubIssueDataSourceAdapter {
190
95
  const mapping = config.dimension_mapping ?? {};
191
96
  return mapping["_label"] ?? "pulseed";
192
97
  }
98
+ resolveQueryContext(params) {
99
+ const config = this.config;
100
+ const repo = this.resolveRepo(config);
101
+ const label = this.resolveLabel(config);
102
+ const timeoutMs = params.timeout_ms ?? 10_000;
103
+ const sourceId = this.sourceId;
104
+ const dimMapping = config.dimension_mapping ?? {};
105
+ const dimension = params.expression ?? params.dimension_name;
106
+ const resolvedDimension = dimMapping[dimension] ?? dimension;
107
+ return {
108
+ repo,
109
+ label,
110
+ timeoutMs,
111
+ resolvedDimension,
112
+ sourceId,
113
+ };
114
+ }
115
+ resolveQueryPlan(resolvedDimension) {
116
+ switch (resolvedDimension) {
117
+ case "open_issue_count":
118
+ return { kind: "single", state: "open" };
119
+ case "closed_issue_count":
120
+ return { kind: "single", state: "closed" };
121
+ case "total_issue_count":
122
+ case "completion_ratio":
123
+ return { kind: "aggregate", dimension: resolvedDimension };
124
+ default:
125
+ return null;
126
+ }
127
+ }
193
128
  /**
194
129
  * Spawn `gh issue list` for a single state and call back with results.
195
130
  * Uses a callback so the result can be returned synchronously inside
@@ -197,36 +132,8 @@ export class GitHubIssueDataSourceAdapter {
197
132
  */
198
133
  queryOneState(state, repo, label, timeoutMs, cb) {
199
134
  return new Promise((resolve) => {
200
- let stdout = "";
201
- let stderr = "";
202
- let timedOut = false;
203
- const args = this.buildListArgs(state, repo, label);
204
- const child = spawn(this.ghPath, args, { stdio: ["ignore", "pipe", "pipe"] });
205
- const timeoutHandle = setTimeout(() => {
206
- timedOut = true;
207
- child.kill("SIGTERM");
208
- }, timeoutMs);
209
- child.stdout.on("data", (chunk) => {
210
- stdout += chunk.toString("utf8");
211
- });
212
- child.stderr.on("data", (chunk) => {
213
- stderr += chunk.toString("utf8");
214
- });
215
- child.on("error", (err) => {
216
- clearTimeout(timeoutHandle);
217
- resolve(cb([], err.message));
218
- });
219
- child.on("close", (code) => {
220
- clearTimeout(timeoutHandle);
221
- if (timedOut) {
222
- resolve(cb([], `gh issue list timed out after ${timeoutMs}ms`));
223
- return;
224
- }
225
- if (code !== 0) {
226
- resolve(cb([], stderr.trim() || `gh issue list exited with code ${code}`));
227
- return;
228
- }
229
- resolve(cb(this.parseIssueList(stdout), null));
135
+ this.spawnList(state, repo, label, timeoutMs, (issues, err) => {
136
+ resolve(cb(issues, err));
230
137
  });
231
138
  });
232
139
  }
@@ -260,11 +167,10 @@ export class GitHubIssueDataSourceAdapter {
260
167
  * microtask gaps.
261
168
  */
262
169
  spawnList(state, repo, label, timeoutMs, cb) {
170
+ const child = this.createListProcess(state, repo, label);
263
171
  let stdout = "";
264
172
  let stderr = "";
265
173
  let timedOut = false;
266
- const args = this.buildListArgs(state, repo, label);
267
- const child = spawn(this.ghPath, args, { stdio: ["ignore", "pipe", "pipe"] });
268
174
  const timeoutHandle = setTimeout(() => {
269
175
  timedOut = true;
270
176
  child.kill("SIGTERM");
@@ -292,6 +198,80 @@ export class GitHubIssueDataSourceAdapter {
292
198
  cb(this.parseIssueList(stdout), null);
293
199
  });
294
200
  }
201
+ createListProcess(state, repo, label) {
202
+ const args = this.buildListArgs(state, repo, label);
203
+ return spawn(this.ghPath, args, { stdio: ["ignore", "pipe", "pipe"] });
204
+ }
205
+ buildCountResult(sourceId, issues) {
206
+ return this.buildMetricResult(sourceId, issues.length, issues);
207
+ }
208
+ createSingleStateResultBuilder(sourceId) {
209
+ return (issues, err) => this.buildSingleStateResult(sourceId, issues, err);
210
+ }
211
+ createAggregateResultBuilder(sourceId, dimension) {
212
+ return (openIssues, closedIssues, err) => this.buildAggregateResult(sourceId, dimension, openIssues, closedIssues, err);
213
+ }
214
+ buildSingleStateResult(sourceId, issues, err) {
215
+ return err !== null ? this.buildErrorResult(sourceId, err) : this.buildCountResult(sourceId, issues);
216
+ }
217
+ buildAggregateResult(sourceId, dimension, openIssues, closedIssues, err) {
218
+ if (err !== null) {
219
+ return this.buildErrorResult(sourceId, err);
220
+ }
221
+ const aggregate = this.buildAggregateMetrics(openIssues, closedIssues);
222
+ const value = dimension === "total_issue_count" ? aggregate.totalCount : aggregate.completionRatio;
223
+ return {
224
+ ...this.buildMetricResult(sourceId, value, aggregate.allIssues),
225
+ metadata: this.buildCompletionMetadata(aggregate.openCount, aggregate.closedCount, aggregate.totalCount, aggregate.completionRatio),
226
+ };
227
+ }
228
+ buildErrorResult(sourceId, error) {
229
+ return {
230
+ value: null,
231
+ raw: [],
232
+ timestamp: new Date().toISOString(),
233
+ source_id: sourceId,
234
+ error,
235
+ };
236
+ }
237
+ buildMetricResult(sourceId, value, raw) {
238
+ return {
239
+ value,
240
+ raw,
241
+ timestamp: new Date().toISOString(),
242
+ source_id: sourceId,
243
+ };
244
+ }
245
+ buildUnknownDimensionResult(sourceId) {
246
+ return {
247
+ value: null,
248
+ raw: [],
249
+ timestamp: new Date().toISOString(),
250
+ source_id: sourceId,
251
+ };
252
+ }
253
+ buildCompletionMetadata(openCount, closedCount, totalCount, completionRatio) {
254
+ return {
255
+ open_count: openCount,
256
+ closed_count: closedCount,
257
+ total_count: totalCount,
258
+ completion_ratio: completionRatio,
259
+ };
260
+ }
261
+ buildAggregateMetrics(openIssues, closedIssues) {
262
+ const openCount = openIssues.length;
263
+ const closedCount = closedIssues.length;
264
+ const totalCount = openCount + closedCount;
265
+ const completionRatio = totalCount === 0 ? 0 : closedCount / totalCount;
266
+ const allIssues = [...openIssues, ...closedIssues];
267
+ return {
268
+ openCount,
269
+ closedCount,
270
+ totalCount,
271
+ completionRatio,
272
+ allIssues,
273
+ };
274
+ }
295
275
  buildListArgs(state, repo, label) {
296
276
  const args = [
297
277
  "issue",