pulseed 0.1.2 → 0.1.4

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 (334) 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/chat/chat-history.d.ts +80 -0
  20. package/dist/chat/chat-history.d.ts.map +1 -0
  21. package/dist/chat/chat-history.js +70 -0
  22. package/dist/chat/chat-history.js.map +1 -0
  23. package/dist/chat/chat-runner.d.ts +46 -0
  24. package/dist/chat/chat-runner.d.ts.map +1 -0
  25. package/dist/chat/chat-runner.js +141 -0
  26. package/dist/chat/chat-runner.js.map +1 -0
  27. package/dist/chat/escalation.d.ts +30 -0
  28. package/dist/chat/escalation.d.ts.map +1 -0
  29. package/dist/chat/escalation.js +53 -0
  30. package/dist/chat/escalation.js.map +1 -0
  31. package/dist/cli/commands/chat.d.ts +3 -0
  32. package/dist/cli/commands/chat.d.ts.map +1 -0
  33. package/dist/cli/commands/chat.js +148 -0
  34. package/dist/cli/commands/chat.js.map +1 -0
  35. package/dist/cli/commands/daemon.d.ts +1 -0
  36. package/dist/cli/commands/daemon.d.ts.map +1 -1
  37. package/dist/cli/commands/daemon.js +173 -3
  38. package/dist/cli/commands/daemon.js.map +1 -1
  39. package/dist/cli/commands/doctor.d.ts +19 -0
  40. package/dist/cli/commands/doctor.d.ts.map +1 -0
  41. package/dist/cli/commands/doctor.js +203 -0
  42. package/dist/cli/commands/doctor.js.map +1 -0
  43. package/dist/cli/commands/goal-dispatch.d.ts.map +1 -1
  44. package/dist/cli/commands/goal-dispatch.js +15 -1
  45. package/dist/cli/commands/goal-dispatch.js.map +1 -1
  46. package/dist/cli/commands/goal-raw.d.ts +1 -0
  47. package/dist/cli/commands/goal-raw.d.ts.map +1 -1
  48. package/dist/cli/commands/goal-raw.js +3 -3
  49. package/dist/cli/commands/goal-raw.js.map +1 -1
  50. package/dist/cli/commands/goal-utils.d.ts +4 -2
  51. package/dist/cli/commands/goal-utils.d.ts.map +1 -1
  52. package/dist/cli/commands/goal-utils.js +36 -19
  53. package/dist/cli/commands/goal-utils.js.map +1 -1
  54. package/dist/cli/commands/goal-write.js +4 -4
  55. package/dist/cli/commands/goal-write.js.map +1 -1
  56. package/dist/cli/commands/install.d.ts +16 -0
  57. package/dist/cli/commands/install.d.ts.map +1 -0
  58. package/dist/cli/commands/install.js +153 -0
  59. package/dist/cli/commands/install.js.map +1 -0
  60. package/dist/cli/commands/logs.d.ts +2 -0
  61. package/dist/cli/commands/logs.d.ts.map +1 -0
  62. package/dist/cli/commands/logs.js +201 -0
  63. package/dist/cli/commands/logs.js.map +1 -0
  64. package/dist/cli/commands/notify.d.ts +2 -0
  65. package/dist/cli/commands/notify.d.ts.map +1 -0
  66. package/dist/cli/commands/notify.js +277 -0
  67. package/dist/cli/commands/notify.js.map +1 -0
  68. package/dist/cli/commands/run.d.ts +1 -1
  69. package/dist/cli/commands/run.d.ts.map +1 -1
  70. package/dist/cli/commands/run.js +2 -2
  71. package/dist/cli/commands/run.js.map +1 -1
  72. package/dist/cli/commands/suggest.d.ts.map +1 -1
  73. package/dist/cli/commands/suggest.js +6 -4
  74. package/dist/cli/commands/suggest.js.map +1 -1
  75. package/dist/cli/setup.d.ts +2 -1
  76. package/dist/cli/setup.d.ts.map +1 -1
  77. package/dist/cli/setup.js +33 -9
  78. package/dist/cli/setup.js.map +1 -1
  79. package/dist/cli/utils.d.ts.map +1 -1
  80. package/dist/cli/utils.js +15 -0
  81. package/dist/cli/utils.js.map +1 -1
  82. package/dist/cli-runner.d.ts.map +1 -1
  83. package/dist/cli-runner.js +86 -2
  84. package/dist/cli-runner.js.map +1 -1
  85. package/dist/core-loop.d.ts +5 -2
  86. package/dist/core-loop.d.ts.map +1 -1
  87. package/dist/core-loop.js +18 -7
  88. package/dist/core-loop.js.map +1 -1
  89. package/dist/drive/drive-system.d.ts.map +1 -1
  90. package/dist/drive/drive-system.js +11 -2
  91. package/dist/drive/drive-system.js.map +1 -1
  92. package/dist/drive/gap-calculator.d.ts +1 -1
  93. package/dist/drive/gap-calculator.d.ts.map +1 -1
  94. package/dist/drive/gap-calculator.js +12 -3
  95. package/dist/drive/gap-calculator.js.map +1 -1
  96. package/dist/execution/adapter-layer.d.ts +2 -0
  97. package/dist/execution/adapter-layer.d.ts.map +1 -1
  98. package/dist/execution/adapter-layer.js.map +1 -1
  99. package/dist/execution/issue-context-fetcher.d.ts +19 -0
  100. package/dist/execution/issue-context-fetcher.d.ts.map +1 -0
  101. package/dist/execution/issue-context-fetcher.js +73 -0
  102. package/dist/execution/issue-context-fetcher.js.map +1 -0
  103. package/dist/execution/session-manager.d.ts.map +1 -1
  104. package/dist/execution/session-manager.js +3 -0
  105. package/dist/execution/session-manager.js.map +1 -1
  106. package/dist/execution/task-executor.d.ts.map +1 -1
  107. package/dist/execution/task-executor.js +34 -3
  108. package/dist/execution/task-executor.js.map +1 -1
  109. package/dist/execution/task-generation.d.ts.map +1 -1
  110. package/dist/execution/task-generation.js +8 -0
  111. package/dist/execution/task-generation.js.map +1 -1
  112. package/dist/execution/task-lifecycle.d.ts +4 -0
  113. package/dist/execution/task-lifecycle.d.ts.map +1 -1
  114. package/dist/execution/task-lifecycle.js +16 -4
  115. package/dist/execution/task-lifecycle.js.map +1 -1
  116. package/dist/execution/task-prompt-builder.d.ts.map +1 -1
  117. package/dist/execution/task-prompt-builder.js +33 -1
  118. package/dist/execution/task-prompt-builder.js.map +1 -1
  119. package/dist/execution/task-verifier.d.ts.map +1 -1
  120. package/dist/execution/task-verifier.js +39 -5
  121. package/dist/execution/task-verifier.js.map +1 -1
  122. package/dist/goal/goal-decomposer.js +1 -1
  123. package/dist/goal/goal-decomposer.js.map +1 -1
  124. package/dist/goal/goal-refiner.d.ts.map +1 -1
  125. package/dist/goal/goal-refiner.js +11 -1
  126. package/dist/goal/goal-refiner.js.map +1 -1
  127. package/dist/goal/goal-tree-manager.d.ts.map +1 -1
  128. package/dist/goal/goal-tree-manager.js +6 -0
  129. package/dist/goal/goal-tree-manager.js.map +1 -1
  130. package/dist/goal/refiner-prompts.d.ts.map +1 -1
  131. package/dist/goal/refiner-prompts.js +5 -1
  132. package/dist/goal/refiner-prompts.js.map +1 -1
  133. package/dist/goal/tree-loop-orchestrator.d.ts +3 -1
  134. package/dist/goal/tree-loop-orchestrator.d.ts.map +1 -1
  135. package/dist/goal/tree-loop-orchestrator.js +4 -4
  136. package/dist/goal/tree-loop-orchestrator.js.map +1 -1
  137. package/dist/knowledge/memory-persistence.d.ts.map +1 -1
  138. package/dist/knowledge/memory-persistence.js +18 -3
  139. package/dist/knowledge/memory-persistence.js.map +1 -1
  140. package/dist/llm/provider-config.d.ts +4 -0
  141. package/dist/llm/provider-config.d.ts.map +1 -1
  142. package/dist/llm/provider-config.js +42 -2
  143. package/dist/llm/provider-config.js.map +1 -1
  144. package/dist/llm/provider-factory.d.ts.map +1 -1
  145. package/dist/llm/provider-factory.js +3 -4
  146. package/dist/llm/provider-factory.js.map +1 -1
  147. package/dist/loop/core-loop-phases.d.ts +1 -1
  148. package/dist/loop/core-loop-phases.d.ts.map +1 -1
  149. package/dist/loop/core-loop-phases.js +18 -7
  150. package/dist/loop/core-loop-phases.js.map +1 -1
  151. package/dist/loop/core-loop-types.d.ts +2 -0
  152. package/dist/loop/core-loop-types.d.ts.map +1 -1
  153. package/dist/loop/core-loop-types.js.map +1 -1
  154. package/dist/loop/tree-loop-runner.d.ts.map +1 -1
  155. package/dist/loop/tree-loop-runner.js +10 -7
  156. package/dist/loop/tree-loop-runner.js.map +1 -1
  157. package/dist/mcp-server/index.d.ts +4 -0
  158. package/dist/mcp-server/index.d.ts.map +1 -0
  159. package/dist/mcp-server/index.js +66 -0
  160. package/dist/mcp-server/index.js.map +1 -0
  161. package/dist/mcp-server/tools.d.ts +35 -0
  162. package/dist/mcp-server/tools.d.ts.map +1 -0
  163. package/dist/mcp-server/tools.js +160 -0
  164. package/dist/mcp-server/tools.js.map +1 -0
  165. package/dist/observation/context-provider.d.ts +10 -0
  166. package/dist/observation/context-provider.d.ts.map +1 -1
  167. package/dist/observation/context-provider.js +35 -0
  168. package/dist/observation/context-provider.js.map +1 -1
  169. package/dist/observation/observation-apply.d.ts.map +1 -1
  170. package/dist/observation/observation-apply.js +5 -1
  171. package/dist/observation/observation-apply.js.map +1 -1
  172. package/dist/observation/observation-engine.d.ts +4 -2
  173. package/dist/observation/observation-engine.d.ts.map +1 -1
  174. package/dist/observation/observation-engine.js +15 -6
  175. package/dist/observation/observation-engine.js.map +1 -1
  176. package/dist/observation/observation-llm.d.ts +10 -2
  177. package/dist/observation/observation-llm.d.ts.map +1 -1
  178. package/dist/observation/observation-llm.js +94 -11
  179. package/dist/observation/observation-llm.js.map +1 -1
  180. package/dist/observation/workspace-context.d.ts +1 -1
  181. package/dist/observation/workspace-context.d.ts.map +1 -1
  182. package/dist/observation/workspace-context.js +91 -12
  183. package/dist/observation/workspace-context.js.map +1 -1
  184. package/dist/orchestrator/goal-loop.d.ts +33 -0
  185. package/dist/orchestrator/goal-loop.d.ts.map +1 -0
  186. package/dist/orchestrator/goal-loop.js +72 -0
  187. package/dist/orchestrator/goal-loop.js.map +1 -0
  188. package/dist/prompt/context-assembler.js +3 -3
  189. package/dist/prompt/context-assembler.js.map +1 -1
  190. package/dist/prompt/purposes/strategy.d.ts +71 -26
  191. package/dist/prompt/purposes/strategy.d.ts.map +1 -1
  192. package/dist/prompt/purposes/strategy.js +34 -8
  193. package/dist/prompt/purposes/strategy.js.map +1 -1
  194. package/dist/reflection/dream-consolidation.d.ts +11 -0
  195. package/dist/reflection/dream-consolidation.d.ts.map +1 -0
  196. package/dist/reflection/dream-consolidation.js +61 -0
  197. package/dist/reflection/dream-consolidation.js.map +1 -0
  198. package/dist/reflection/evening-catchup.d.ts +13 -0
  199. package/dist/reflection/evening-catchup.d.ts.map +1 -0
  200. package/dist/reflection/evening-catchup.js +116 -0
  201. package/dist/reflection/evening-catchup.js.map +1 -0
  202. package/dist/reflection/index.d.ts +7 -0
  203. package/dist/reflection/index.d.ts.map +1 -0
  204. package/dist/reflection/index.js +6 -0
  205. package/dist/reflection/index.js.map +1 -0
  206. package/dist/reflection/morning-planning.d.ts +13 -0
  207. package/dist/reflection/morning-planning.d.ts.map +1 -0
  208. package/dist/reflection/morning-planning.js +107 -0
  209. package/dist/reflection/morning-planning.js.map +1 -0
  210. package/dist/reflection/types.d.ts +168 -0
  211. package/dist/reflection/types.d.ts.map +1 -0
  212. package/dist/reflection/types.js +58 -0
  213. package/dist/reflection/types.js.map +1 -0
  214. package/dist/reflection/weekly-review.d.ts +11 -0
  215. package/dist/reflection/weekly-review.d.ts.map +1 -0
  216. package/dist/reflection/weekly-review.js +114 -0
  217. package/dist/reflection/weekly-review.js.map +1 -0
  218. package/dist/runtime/cron-scheduler.d.ts +13 -0
  219. package/dist/runtime/cron-scheduler.d.ts.map +1 -0
  220. package/dist/runtime/cron-scheduler.js +90 -0
  221. package/dist/runtime/cron-scheduler.js.map +1 -0
  222. package/dist/runtime/daemon-runner.d.ts +34 -0
  223. package/dist/runtime/daemon-runner.d.ts.map +1 -1
  224. package/dist/runtime/daemon-runner.js +207 -4
  225. package/dist/runtime/daemon-runner.js.map +1 -1
  226. package/dist/runtime/event-server.d.ts +17 -2
  227. package/dist/runtime/event-server.d.ts.map +1 -1
  228. package/dist/runtime/event-server.js +214 -6
  229. package/dist/runtime/event-server.js.map +1 -1
  230. package/dist/runtime/hook-manager.d.ts +41 -0
  231. package/dist/runtime/hook-manager.d.ts.map +1 -0
  232. package/dist/runtime/hook-manager.js +174 -0
  233. package/dist/runtime/hook-manager.js.map +1 -0
  234. package/dist/runtime/notification-batcher.d.ts +28 -0
  235. package/dist/runtime/notification-batcher.d.ts.map +1 -0
  236. package/dist/runtime/notification-batcher.js +100 -0
  237. package/dist/runtime/notification-batcher.js.map +1 -0
  238. package/dist/runtime/notification-dispatcher.d.ts +5 -0
  239. package/dist/runtime/notification-dispatcher.d.ts.map +1 -1
  240. package/dist/runtime/notification-dispatcher.js +22 -0
  241. package/dist/runtime/notification-dispatcher.js.map +1 -1
  242. package/dist/runtime/trigger-mapper.d.ts +26 -0
  243. package/dist/runtime/trigger-mapper.d.ts.map +1 -0
  244. package/dist/runtime/trigger-mapper.js +89 -0
  245. package/dist/runtime/trigger-mapper.js.map +1 -0
  246. package/dist/strategy/strategy-helpers.d.ts +6 -0
  247. package/dist/strategy/strategy-helpers.d.ts.map +1 -1
  248. package/dist/strategy/strategy-helpers.js +20 -0
  249. package/dist/strategy/strategy-helpers.js.map +1 -1
  250. package/dist/strategy/strategy-manager-base.d.ts.map +1 -1
  251. package/dist/strategy/strategy-manager-base.js +16 -8
  252. package/dist/strategy/strategy-manager-base.js.map +1 -1
  253. package/dist/tui/app.d.ts.map +1 -1
  254. package/dist/tui/app.js +3 -2
  255. package/dist/tui/app.js.map +1 -1
  256. package/dist/tui/approval-overlay.d.ts.map +1 -1
  257. package/dist/tui/approval-overlay.js +5 -4
  258. package/dist/tui/approval-overlay.js.map +1 -1
  259. package/dist/tui/chat.d.ts.map +1 -1
  260. package/dist/tui/chat.js +6 -19
  261. package/dist/tui/chat.js.map +1 -1
  262. package/dist/tui/dashboard.d.ts.map +1 -1
  263. package/dist/tui/dashboard.js +3 -24
  264. package/dist/tui/dashboard.js.map +1 -1
  265. package/dist/tui/entry.d.ts.map +1 -1
  266. package/dist/tui/entry.js +19 -1
  267. package/dist/tui/entry.js.map +1 -1
  268. package/dist/tui/help-overlay.d.ts.map +1 -1
  269. package/dist/tui/help-overlay.js +2 -1
  270. package/dist/tui/help-overlay.js.map +1 -1
  271. package/dist/tui/markdown-renderer.d.ts.map +1 -1
  272. package/dist/tui/markdown-renderer.js +5 -4
  273. package/dist/tui/markdown-renderer.js.map +1 -1
  274. package/dist/tui/report-view.d.ts.map +1 -1
  275. package/dist/tui/report-view.js +1 -25
  276. package/dist/tui/report-view.js.map +1 -1
  277. package/dist/tui/theme.d.ts +47 -0
  278. package/dist/tui/theme.d.ts.map +1 -0
  279. package/dist/tui/theme.js +116 -0
  280. package/dist/tui/theme.js.map +1 -0
  281. package/dist/types/agent-profile.d.ts +32 -0
  282. package/dist/types/agent-profile.d.ts.map +1 -0
  283. package/dist/types/agent-profile.js +16 -0
  284. package/dist/types/agent-profile.js.map +1 -0
  285. package/dist/types/cron.d.ts +59 -0
  286. package/dist/types/cron.d.ts.map +1 -0
  287. package/dist/types/cron.js +13 -0
  288. package/dist/types/cron.js.map +1 -0
  289. package/dist/types/daemon.d.ts +47 -0
  290. package/dist/types/daemon.d.ts.map +1 -1
  291. package/dist/types/daemon.js +11 -0
  292. package/dist/types/daemon.js.map +1 -1
  293. package/dist/types/data-source.d.ts +9 -9
  294. package/dist/types/data-source.d.ts.map +1 -1
  295. package/dist/types/data-source.js +1 -1
  296. package/dist/types/data-source.js.map +1 -1
  297. package/dist/types/goal-refiner.d.ts +3 -0
  298. package/dist/types/goal-refiner.d.ts.map +1 -1
  299. package/dist/types/goal-refiner.js +1 -0
  300. package/dist/types/goal-refiner.js.map +1 -1
  301. package/dist/types/hook.d.ts +142 -0
  302. package/dist/types/hook.d.ts.map +1 -0
  303. package/dist/types/hook.js +43 -0
  304. package/dist/types/hook.js.map +1 -0
  305. package/dist/types/mcp.d.ts +170 -0
  306. package/dist/types/mcp.d.ts.map +1 -0
  307. package/dist/types/mcp.js +30 -0
  308. package/dist/types/mcp.js.map +1 -0
  309. package/dist/types/notification.d.ts +37 -0
  310. package/dist/types/notification.d.ts.map +1 -1
  311. package/dist/types/notification.js +7 -0
  312. package/dist/types/notification.js.map +1 -1
  313. package/dist/types/session.d.ts +4 -4
  314. package/dist/types/session.d.ts.map +1 -1
  315. package/dist/types/session.js +1 -0
  316. package/dist/types/session.js.map +1 -1
  317. package/dist/types/strategy.d.ts +12 -12
  318. package/dist/types/trigger.d.ts +77 -0
  319. package/dist/types/trigger.d.ts.map +1 -0
  320. package/dist/types/trigger.js +21 -0
  321. package/dist/types/trigger.js.map +1 -0
  322. package/dist/utils/execFileNoThrow.d.ts +20 -0
  323. package/dist/utils/execFileNoThrow.d.ts.map +1 -0
  324. package/dist/utils/execFileNoThrow.js +33 -0
  325. package/dist/utils/execFileNoThrow.js.map +1 -0
  326. package/package.json +8 -3
  327. package/dist/cli/commands/task-read 2.d.ts +0 -4
  328. package/dist/cli/commands/task-read 2.d.ts.map +0 -1
  329. package/dist/cli/commands/task-read 2.js +0 -195
  330. package/dist/cli/commands/task-read 2.js.map +0 -1
  331. package/dist/prompt/slot-definitions 2.d.ts +0 -33
  332. package/dist/prompt/slot-definitions 2.d.ts.map +0 -1
  333. package/dist/prompt/slot-definitions 2.js +0 -332
  334. package/dist/prompt/slot-definitions 2.js.map +0 -1
@@ -1,6 +1,8 @@
1
1
  import { randomUUID } from "node:crypto";
2
2
  import { execFile as execFileCb } from "child_process";
3
3
  import { promisify } from "util";
4
+ import * as fsPromises from "node:fs/promises";
5
+ import * as nodePath from "node:path";
4
6
  import { ObservationLogEntrySchema } from "../types/state.js";
5
7
  const execFile = promisify(execFileCb);
6
8
  import { LLMObservationResponseSchema } from "./observation-helpers.js";
@@ -14,15 +16,17 @@ import { OBSERVATION_SYSTEM_PROMPT } from "../prompt/purposes/observation.js";
14
16
  *
15
17
  * @param options Engine options (may contain gitContextFetcher override).
16
18
  * @param maxChars Maximum characters to return (default: 3000).
19
+ * @param cwd Working directory for git commands (defaults to process.cwd()).
17
20
  */
18
- export async function fetchGitDiffContext(options, maxChars = 3000) {
21
+ export async function fetchGitDiffContext(options, maxChars = 3000, cwd) {
19
22
  // Allow test injection via options
20
23
  if (options.gitContextFetcher) {
21
24
  return options.gitContextFetcher(maxChars);
22
25
  }
26
+ const execOptions = { timeout: 10000, encoding: "utf8", ...(cwd ? { cwd } : {}) };
23
27
  const parts = [];
24
28
  try {
25
- const { stdout: stat } = await execFile("git", ["diff", "--stat"], { timeout: 10000, encoding: "utf8" });
29
+ const { stdout: stat } = await execFile("git", ["diff", "--stat"], execOptions);
26
30
  if (stat.trim()) {
27
31
  parts.push("[git diff --stat]");
28
32
  parts.push(stat.trim());
@@ -32,7 +36,7 @@ export async function fetchGitDiffContext(options, maxChars = 3000) {
32
36
  // not a git repo or git unavailable
33
37
  }
34
38
  try {
35
- const { stdout: diff } = await execFile("git", ["diff"], { timeout: 10000, encoding: "utf8" });
39
+ const { stdout: diff } = await execFile("git", ["diff"], execOptions);
36
40
  if (diff.trim()) {
37
41
  parts.push("[git diff]");
38
42
  // Reserve space: subtract what we've already accumulated
@@ -47,6 +51,49 @@ export async function fetchGitDiffContext(options, maxChars = 3000) {
47
51
  }
48
52
  return parts.join("\n\n");
49
53
  }
54
+ const READABLE_EXTENSIONS = new Set([
55
+ ".ts", ".js", ".tsx", ".jsx", ".py", ".json", ".yaml", ".yml", ".toml", ".md", ".txt",
56
+ ]);
57
+ /**
58
+ * Read up to 10 files from workspacePath (top-level only) and return their
59
+ * contents formatted as === File: <name> ===\n<content>\n blocks.
60
+ * Filters to common code/config extensions. Caps total output at maxChars.
61
+ */
62
+ export async function readWorkspaceFiles(workspacePath, maxChars = 3000) {
63
+ let entries;
64
+ try {
65
+ entries = await fsPromises.readdir(workspacePath, { withFileTypes: true });
66
+ }
67
+ catch {
68
+ return "";
69
+ }
70
+ const files = entries
71
+ .filter((e) => e.isFile() && READABLE_EXTENSIONS.has(nodePath.extname(e.name).toLowerCase()))
72
+ .map((e) => e.name);
73
+ const parts = [];
74
+ let totalChars = 0;
75
+ for (const file of files.slice(0, 10)) {
76
+ if (totalChars >= maxChars)
77
+ break;
78
+ const filePath = nodePath.join(workspacePath, file);
79
+ let content;
80
+ try {
81
+ content = await fsPromises.readFile(filePath, "utf8");
82
+ }
83
+ catch {
84
+ continue;
85
+ }
86
+ const header = `=== File: ${file} ===\n`;
87
+ const remaining = maxChars - totalChars - header.length - 1; // -1 for trailing \n
88
+ if (remaining <= 0)
89
+ break;
90
+ const truncated = content.length > remaining ? content.slice(0, remaining) + "\n...(truncated)" : content;
91
+ const block = `${header}${truncated}\n`;
92
+ parts.push(block);
93
+ totalChars += block.length;
94
+ }
95
+ return parts.join("\n");
96
+ }
50
97
  /**
51
98
  * Infer the direction of change from a history of score values.
52
99
  */
@@ -85,20 +132,30 @@ function inferDirection(history) {
85
132
  * @param dryRun If true, do not write to state.
86
133
  * @param logger Optional logger.
87
134
  * @param dimensionHistory Optional history of prior observations for this dimension.
135
+ * @param workspacePath Optional workspace directory for git diff fallback.
88
136
  */
89
- export async function observeWithLLM(goalId, dimensionName, goalDescription, dimensionLabel, thresholdDescription, llmClient, options, applyObservation, workspaceContext, previousScore, dryRun, logger, dimensionHistory, gateway, currentValue, sourceAvailable) {
137
+ export async function observeWithLLM(goalId, dimensionName, goalDescription, dimensionLabel, thresholdDescription, llmClient, options, applyObservation, workspaceContext, previousScore, dryRun, logger, dimensionHistory, gateway, currentValue, sourceAvailable, workspacePath) {
90
138
  logger?.info(`[ObservationEngine] LLM observation for dimension "${dimensionLabel}" (goal: ${goalId})`);
91
139
  // Resolve workspace context: use provided context, fall back to git diff, or warn.
92
140
  let resolvedContext = workspaceContext;
93
141
  if (!resolvedContext || resolvedContext.trim().length === 0) {
94
- const gitCtx = await fetchGitDiffContext(options, 3000);
142
+ const gitCtx = await fetchGitDiffContext(options, 3000, workspacePath);
95
143
  if (gitCtx.trim().length > 0) {
96
144
  resolvedContext = gitCtx;
97
145
  logger?.info(`[ObservationEngine] No contextProvider output — using git diff fallback for "${dimensionLabel}"`);
98
146
  }
99
147
  }
148
+ // Second fallback: if both contextProvider and git diff returned empty,
149
+ // read workspace files directly so the LLM has actual evidence to evaluate.
150
+ if ((!resolvedContext || resolvedContext.trim().length === 0) && workspacePath) {
151
+ const filesCtx = await readWorkspaceFiles(workspacePath, 3000);
152
+ if (filesCtx.trim().length > 0) {
153
+ resolvedContext = filesCtx;
154
+ logger?.info(`[ObservationEngine] No git diff context — using workspace file fallback for "${dimensionLabel}"`);
155
+ }
156
+ }
100
157
  // Truncate to 4000 chars max to avoid token waste
101
- const MAX_CONTEXT_CHARS = 4000;
158
+ const MAX_CONTEXT_CHARS = 16000;
102
159
  if (resolvedContext && resolvedContext.length > MAX_CONTEXT_CHARS) {
103
160
  resolvedContext = resolvedContext.slice(0, MAX_CONTEXT_CHARS) + "\n...(truncated)";
104
161
  }
@@ -188,12 +245,16 @@ export async function observeWithLLM(goalId, dimensionName, goalDescription, dim
188
245
  catch (err) {
189
246
  // Fallback to direct LLM call if gateway fails
190
247
  logger?.warn(`[ObservationEngine] PromptGateway failed for "${dimensionLabel}", falling back to direct LLM: ${String(err)}`);
248
+ console.log(` [LLM] Calling LLM for observation (fallback) "${dimensionLabel}"...`);
191
249
  const response = await llmClient.sendMessage([{ role: "user", content: prompt }], { system: OBSERVATION_SYSTEM_PROMPT, max_tokens: 512, temperature: 0, model_tier: 'light' });
250
+ console.log(` [LLM] Observation (fallback) complete for "${dimensionLabel}".`);
192
251
  parsed = llmClient.parseJSON(response.content, LLMObservationResponseSchema);
193
252
  }
194
253
  }
195
254
  else {
255
+ console.log(` [LLM] Calling LLM for observation "${dimensionLabel}"...`);
196
256
  const response = await llmClient.sendMessage([{ role: "user", content: prompt }], { system: OBSERVATION_SYSTEM_PROMPT, max_tokens: 512, temperature: 0, model_tier: 'light' });
257
+ console.log(` [LLM] Observation complete for "${dimensionLabel}".`);
197
258
  parsed = llmClient.parseJSON(response.content, LLMObservationResponseSchema);
198
259
  }
199
260
  // P0: Score-evidence consistency check (§4.3)
@@ -203,6 +264,9 @@ export async function observeWithLLM(goalId, dimensionName, goalDescription, dim
203
264
  // RC-1: When no context but a previousScore is known from observation history,
204
265
  // preserve the previous score with degraded confidence rather than forcing 0.0.
205
266
  // "No context" means "can't verify", not "definitely zero".
267
+ // Fix Root Cause A: When no context and no previousScore, keep the LLM score
268
+ // but cap confidence at self_report level (0.10) rather than zeroing the score.
269
+ // A non-zero LLM score with reasoning is more informative than a forced 0.0.
206
270
  let score = parsed.score;
207
271
  let scorePreservedFromPrevious = false;
208
272
  if (!hasContext && score > 0.0 && !dryRun) {
@@ -212,25 +276,44 @@ export async function observeWithLLM(goalId, dimensionName, goalDescription, dim
212
276
  logger?.warn(`score preserved from previous observation (no context): ${previousScore.toFixed(3)}`);
213
277
  }
214
278
  else {
215
- logger?.warn(`score overridden to 0.0 (no evidence available, LLM returned ${score})`);
216
- score = 0.0;
279
+ // Keep LLM score but log a warning confidence will be capped at self_report level
280
+ logger?.warn(`score kept from LLM (no evidence available, confidence capped at self_report): ${score}`);
217
281
  }
218
282
  }
219
283
  // §3.3: Observation score jump suppression (±0.4/cycle)
220
284
  // When no mechanical source is available and the LLM score jumps more than 0.4
221
285
  // from the previous score, suppress the change and lower confidence.
286
+ // Exception: present/match threshold types have binary 0→1 transitions that are
287
+ // legitimate and must not be suppressed.
222
288
  const MAX_SCORE_DELTA = 0.4;
289
+ let isBinaryThreshold = false;
290
+ try {
291
+ const th = JSON.parse(thresholdDescription);
292
+ isBinaryThreshold = th.type === "present" || th.type === "match";
293
+ }
294
+ catch (err) {
295
+ logger?.warn(`[ObservationEngine] Failed to parse thresholdDescription for binary check: ${String(err)}`);
296
+ }
223
297
  let resolvedLayer;
224
298
  let resolvedConfidence;
225
- if (sourceAvailable === false) {
299
+ // Fix Root Cause B: When sourceAvailable=false but context IS available,
300
+ // use independent_review tier (workspace context provides real evidence).
301
+ // self_report tier only applies when BOTH sourceAvailable=false AND no context.
302
+ if (sourceAvailable === false && !hasContext) {
226
303
  resolvedLayer = "self_report";
227
- resolvedConfidence = hasContext ? 0.30 : (scorePreservedFromPrevious ? 0.30 : 0.10);
304
+ resolvedConfidence = scorePreservedFromPrevious ? 0.30 : 0.10;
305
+ }
306
+ else if (sourceAvailable === false && hasContext) {
307
+ // No dataSource but workspace context provides real evidence → independent_review
308
+ resolvedLayer = "independent_review";
309
+ resolvedConfidence = 0.70;
228
310
  }
229
311
  else {
230
312
  resolvedLayer = "independent_review";
231
313
  resolvedConfidence = hasContext ? 0.70 : (scorePreservedFromPrevious ? 0.30 : 0.10);
232
314
  }
233
- if (typeof previousScore === "number" &&
315
+ if (!(isBinaryThreshold && hasContext) &&
316
+ typeof previousScore === "number" &&
234
317
  previousScore !== null &&
235
318
  Math.abs(score - previousScore) > MAX_SCORE_DELTA) {
236
319
  const delta = Math.abs(score - previousScore);
@@ -1 +1 @@
1
- {"version":3,"file":"observation-llm.js","sourceRoot":"","sources":["../../src/observation/observation-llm.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"observation-llm.js","sourceRoot":"","sources":["../../src/observation/observation-llm.ts"],"names":[],"mappings":"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"}
@@ -4,5 +4,5 @@ export interface WorkspaceContextOptions {
4
4
  maxCharsPerFile?: number;
5
5
  externalFileMaxBytes?: number;
6
6
  }
7
- export declare function createWorkspaceContextProvider(options: WorkspaceContextOptions, getGoalDescription: (goalId: string) => string | undefined | Promise<string | undefined>): (goalId: string, dimensionName: string) => Promise<string>;
7
+ export declare function createWorkspaceContextProvider(options: WorkspaceContextOptions, getGoalDescription: (goalId: string) => string | undefined | Promise<string | undefined>, getGoalConstraints?: (goalId: string) => string[] | undefined | Promise<string[] | undefined>): (goalId: string, dimensionName: string) => Promise<string>;
8
8
  //# sourceMappingURL=workspace-context.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"workspace-context.d.ts","sourceRoot":"","sources":["../../src/observation/workspace-context.ts"],"names":[],"mappings":"AAIA,MAAM,WAAW,uBAAuB;IACtC,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,oBAAoB,CAAC,EAAE,MAAM,CAAC;CAC/B;AAuID,wBAAgB,8BAA8B,CAC5C,OAAO,EAAE,uBAAuB,EAChC,kBAAkB,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,MAAM,GAAG,SAAS,GAAG,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC,GACvF,CAAC,MAAM,EAAE,MAAM,EAAE,aAAa,EAAE,MAAM,KAAK,OAAO,CAAC,MAAM,CAAC,CA+G5D"}
1
+ {"version":3,"file":"workspace-context.d.ts","sourceRoot":"","sources":["../../src/observation/workspace-context.ts"],"names":[],"mappings":"AASA,MAAM,WAAW,uBAAuB;IACtC,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,oBAAoB,CAAC,EAAE,MAAM,CAAC;CAC/B;AAyID,wBAAgB,8BAA8B,CAC5C,OAAO,EAAE,uBAAuB,EAChC,kBAAkB,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,MAAM,GAAG,SAAS,GAAG,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC,EACxF,kBAAkB,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,MAAM,EAAE,GAAG,SAAS,GAAG,OAAO,CAAC,MAAM,EAAE,GAAG,SAAS,CAAC,GAC5F,CAAC,MAAM,EAAE,MAAM,EAAE,aAAa,EAAE,MAAM,KAAK,OAAO,CAAC,MAAM,CAAC,CAiM5D"}
@@ -1,6 +1,10 @@
1
+ import { execFile } from "node:child_process";
1
2
  import * as fsp from "node:fs/promises";
2
3
  import * as os from "node:os";
3
4
  import * as path from "node:path";
5
+ import { promisify } from "node:util";
6
+ import { dimensionNameToSearchTerms } from "./context-provider.js";
7
+ const execFileAsync = promisify(execFile);
4
8
  const ALLOWED_EXTERNAL_PREFIXES = [os.homedir(), "/tmp"];
5
9
  const DENIED_PREFIXES = [
6
10
  path.join(os.homedir(), '.ssh'),
@@ -73,6 +77,7 @@ const STOPWORDS = new Set([
73
77
  "after", "above", "below", "between", "each", "but", "also",
74
78
  ]);
75
79
  const EXCLUDE_DIRS = new Set(["node_modules", ".git", "dist", "coverage", ".DS_Store"]);
80
+ const SMALL_WORKSPACE_FILE_LIMIT = 10;
76
81
  function extractKeywords(text) {
77
82
  return text
78
83
  .toLowerCase()
@@ -128,12 +133,21 @@ async function readFileSection(filePath, maxChars) {
128
133
  return "";
129
134
  }
130
135
  }
131
- export function createWorkspaceContextProvider(options, getGoalDescription) {
132
- const { workDir, maxFiles = 5, maxCharsPerFile = 4000, externalFileMaxBytes = 10240 } = options;
136
+ export function createWorkspaceContextProvider(options, getGoalDescription, getGoalConstraints) {
137
+ const { workDir, maxFiles = 15, maxCharsPerFile = 6000, externalFileMaxBytes = 10240 } = options;
133
138
  return async (goalId, dimensionName) => {
134
139
  const goalDescription = (await getGoalDescription(goalId)) ?? "";
135
140
  const keywords = extractKeywords(goalDescription + " " + dimensionName);
136
- const parts = [`# Workspace: ${workDir}`];
141
+ // Resolve effective workDir: use workspace_path constraint from goal if available
142
+ let effectiveWorkDir = workDir;
143
+ if (getGoalConstraints) {
144
+ const constraints = (await getGoalConstraints(goalId)) ?? [];
145
+ const workspaceConstraint = constraints.find((c) => c.startsWith("workspace_path:"));
146
+ if (workspaceConstraint) {
147
+ effectiveWorkDir = workspaceConstraint.slice("workspace_path:".length);
148
+ }
149
+ }
150
+ const parts = [`# Workspace: ${effectiveWorkDir}`];
137
151
  // Read external absolute-path files mentioned in goal description
138
152
  const externalPaths = extractAbsolutePaths(goalDescription);
139
153
  for (const extPath of externalPaths) {
@@ -144,7 +158,7 @@ export function createWorkspaceContextProvider(options, getGoalDescription) {
144
158
  }
145
159
  // Directory listing
146
160
  try {
147
- const entries = await fsp.readdir(workDir);
161
+ const entries = await fsp.readdir(effectiveWorkDir);
148
162
  parts.push(`## Directory listing\n${entries.join(", ")}`);
149
163
  }
150
164
  catch {
@@ -154,7 +168,7 @@ export function createWorkspaceContextProvider(options, getGoalDescription) {
154
168
  const alwaysInclude = ["README.md", "package.json"];
155
169
  const alwaysIncludePaths = [];
156
170
  for (const rel of alwaysInclude) {
157
- const fp = path.join(workDir, rel);
171
+ const fp = path.join(effectiveWorkDir, rel);
158
172
  try {
159
173
  await fsp.access(fp);
160
174
  alwaysIncludePaths.push(fp);
@@ -167,7 +181,7 @@ export function createWorkspaceContextProvider(options, getGoalDescription) {
167
181
  const relativePathsInGoal = extractRelativePaths(goalDescription);
168
182
  const pathMatchedPaths = [];
169
183
  for (const rel of relativePathsInGoal) {
170
- const fp = path.join(workDir, rel);
184
+ const fp = path.join(effectiveWorkDir, rel);
171
185
  try {
172
186
  await fsp.access(fp);
173
187
  pathMatchedPaths.push(fp);
@@ -178,17 +192,50 @@ export function createWorkspaceContextProvider(options, getGoalDescription) {
178
192
  }
179
193
  // Collect all files (depth 3)
180
194
  const allFiles = [];
181
- await collectFiles(workDir, workDir, 0, allFiles);
195
+ await collectFiles(effectiveWorkDir, effectiveWorkDir, 0, allFiles);
196
+ // Small workspace fast path: include ALL files when total count is small
197
+ if (allFiles.length <= SMALL_WORKSPACE_FILE_LIMIT) {
198
+ for (const fp of allFiles) {
199
+ const rel = path.relative(effectiveWorkDir, fp);
200
+ const content = await readFileSection(fp, maxCharsPerFile);
201
+ if (content) {
202
+ parts.push(`## ${rel}\n\`\`\`\n${content}\n\`\`\``);
203
+ }
204
+ }
205
+ return parts.join("\n\n");
206
+ }
207
+ // Dimension-name derived file hints: extract segments and match kebab-case filenames
208
+ // e.g. "try_catch_added_in_drive_system_event_watcher" → find "drive-system.ts"
209
+ const dimSegments = dimensionName
210
+ .toLowerCase()
211
+ .split("_")
212
+ .filter((w) => w.length >= 4 && !STOPWORDS.has(w));
213
+ const dimHintPaths = [];
214
+ if (dimSegments.length >= 2) {
215
+ for (let i = 0; i < dimSegments.length - 1; i++) {
216
+ const pattern = `${dimSegments[i]}-${dimSegments[i + 1]}`;
217
+ const matched = allFiles.filter((fp) => path.basename(fp).toLowerCase().includes(pattern));
218
+ dimHintPaths.push(...matched);
219
+ }
220
+ }
221
+ // Also try single segments for direct matches (e.g. "verifier" → "task-verifier.ts")
222
+ for (const seg of dimSegments) {
223
+ if (seg.length >= 5) {
224
+ const matched = allFiles.filter((fp) => path.basename(fp).toLowerCase().includes(seg) && !dimHintPaths.includes(fp));
225
+ dimHintPaths.push(...matched);
226
+ }
227
+ }
182
228
  // Separate already-included from candidates
183
229
  const alwaysSet = new Set(alwaysIncludePaths);
184
230
  const pathMatchSet = new Set(pathMatchedPaths);
185
- const candidates = allFiles.filter((fp) => !alwaysSet.has(fp) && !pathMatchSet.has(fp));
231
+ const dimHintSet = new Set(dimHintPaths);
232
+ const candidates = allFiles.filter((fp) => !alwaysSet.has(fp) && !pathMatchSet.has(fp) && !dimHintSet.has(fp));
186
233
  // Phase 1: filename match
187
234
  const nameMatched = candidates.filter((fp) => fileMatchesKeywords(fp, keywords));
188
235
  // Phase 2: content match (only if we still need more)
189
236
  // alwaysInclude and pathMatch are treated as priority (outside maxFiles cap),
190
237
  // so keyword-match fills remaining slots up to maxFiles
191
- const neededFromCandidates = Math.max(0, maxFiles - alwaysIncludePaths.length - pathMatchedPaths.length);
238
+ const neededFromCandidates = Math.max(0, maxFiles - alwaysIncludePaths.length - pathMatchedPaths.length - dimHintPaths.length);
192
239
  let selected = nameMatched.slice(0, neededFromCandidates);
193
240
  if (selected.length < neededFromCandidates) {
194
241
  const remaining = candidates.filter((fp) => !selected.includes(fp));
@@ -199,9 +246,33 @@ export function createWorkspaceContextProvider(options, getGoalDescription) {
199
246
  ...contentMatched.slice(0, neededFromCandidates - selected.length),
200
247
  ];
201
248
  }
249
+ // Phase 3: grep content match — find files whose content contains dimension-derived terms
250
+ // but weren't caught by filename or keyword matching above
251
+ if (selected.length < neededFromCandidates) {
252
+ const searchTerms = dimensionNameToSearchTerms(dimensionName);
253
+ const alreadySelected = new Set([
254
+ ...alwaysIncludePaths, ...pathMatchedPaths, ...dimHintPaths, ...selected,
255
+ ]);
256
+ const grepMatched = [];
257
+ for (const term of searchTerms) {
258
+ try {
259
+ const { stdout } = await execFileAsync("grep", ["-rl", "--include=*.ts", "--include=*.js", "--include=*.json", term, effectiveWorkDir], { timeout: 5000 });
260
+ for (const fp of stdout.trim().split("\n").filter(Boolean)) {
261
+ if (!alreadySelected.has(fp) && !grepMatched.includes(fp)) {
262
+ grepMatched.push(fp);
263
+ }
264
+ }
265
+ }
266
+ catch {
267
+ // grep returns exit 1 for zero matches — silently ignore
268
+ }
269
+ }
270
+ const slotsLeft = neededFromCandidates - selected.length;
271
+ selected = [...selected, ...grepMatched.slice(0, slotsLeft)];
272
+ }
202
273
  // Read always-include files first
203
274
  for (const fp of alwaysIncludePaths) {
204
- const rel = path.relative(workDir, fp);
275
+ const rel = path.relative(effectiveWorkDir, fp);
205
276
  const content = await readFileSection(fp, maxCharsPerFile);
206
277
  if (content) {
207
278
  parts.push(`## ${rel}\n\`\`\`\n${content}\n\`\`\``);
@@ -209,7 +280,15 @@ export function createWorkspaceContextProvider(options, getGoalDescription) {
209
280
  }
210
281
  // Read explicit path-matched files (priority, same as alwaysInclude)
211
282
  for (const fp of pathMatchedPaths) {
212
- const rel = path.relative(workDir, fp);
283
+ const rel = path.relative(effectiveWorkDir, fp);
284
+ const content = await readFileSection(fp, maxCharsPerFile);
285
+ if (content) {
286
+ parts.push(`## ${rel}\n\`\`\`\n${content}\n\`\`\``);
287
+ }
288
+ }
289
+ // Read dimension-hint matched files (priority)
290
+ for (const fp of dimHintPaths) {
291
+ const rel = path.relative(effectiveWorkDir, fp);
213
292
  const content = await readFileSection(fp, maxCharsPerFile);
214
293
  if (content) {
215
294
  parts.push(`## ${rel}\n\`\`\`\n${content}\n\`\`\``);
@@ -217,7 +296,7 @@ export function createWorkspaceContextProvider(options, getGoalDescription) {
217
296
  }
218
297
  // Read selected keyword-matched files
219
298
  for (const fp of selected) {
220
- const rel = path.relative(workDir, fp);
299
+ const rel = path.relative(effectiveWorkDir, fp);
221
300
  const content = await readFileSection(fp, maxCharsPerFile);
222
301
  if (content) {
223
302
  parts.push(`## ${rel}\n\`\`\`\n${content}\n\`\`\``);
@@ -1 +1 @@
1
- {"version":3,"file":"workspace-context.js","sourceRoot":"","sources":["../../src/observation/workspace-context.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"workspace-context.js","sourceRoot":"","sources":["../../src/observation/workspace-context.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,33 @@
1
+ export type GoalLoopStopCode = "completed" | "max_iterations" | "max_wall_time_cap_seconds";
2
+ export interface GoalLoopStopReason {
3
+ code: GoalLoopStopCode;
4
+ message: string;
5
+ detail: {
6
+ iteration: number;
7
+ elapsed_ms: number;
8
+ max_iterations: number;
9
+ max_wall_time_cap_seconds: number;
10
+ };
11
+ }
12
+ export interface GoalLoopStepResult<T = void> {
13
+ done?: boolean;
14
+ value?: T;
15
+ }
16
+ export interface GoalLoopConfig {
17
+ maxIterations: number;
18
+ maxWallTimeCapSeconds: number;
19
+ nowMs?: () => number;
20
+ }
21
+ export interface GoalLoopRunResult<T = void> {
22
+ iterations: number;
23
+ elapsedMs: number;
24
+ value?: T;
25
+ stopReason: GoalLoopStopReason;
26
+ }
27
+ export declare class GoalLoop<T = void> {
28
+ private readonly config;
29
+ private readonly nowMs;
30
+ constructor(config: GoalLoopConfig);
31
+ run(step: (iteration: number) => Promise<GoalLoopStepResult<T>>): Promise<GoalLoopRunResult<T>>;
32
+ }
33
+ //# sourceMappingURL=goal-loop.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"goal-loop.d.ts","sourceRoot":"","sources":["../../src/orchestrator/goal-loop.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,gBAAgB,GACxB,WAAW,GACX,gBAAgB,GAChB,2BAA2B,CAAC;AAEhC,MAAM,WAAW,kBAAkB;IACjC,IAAI,EAAE,gBAAgB,CAAC;IACvB,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE;QACN,SAAS,EAAE,MAAM,CAAC;QAClB,UAAU,EAAE,MAAM,CAAC;QACnB,cAAc,EAAE,MAAM,CAAC;QACvB,yBAAyB,EAAE,MAAM,CAAC;KACnC,CAAC;CACH;AAED,MAAM,WAAW,kBAAkB,CAAC,CAAC,GAAG,IAAI;IAC1C,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,KAAK,CAAC,EAAE,CAAC,CAAC;CACX;AAED,MAAM,WAAW,cAAc;IAC7B,aAAa,EAAE,MAAM,CAAC;IACtB,qBAAqB,EAAE,MAAM,CAAC;IAC9B,KAAK,CAAC,EAAE,MAAM,MAAM,CAAC;CACtB;AAED,MAAM,WAAW,iBAAiB,CAAC,CAAC,GAAG,IAAI;IACzC,UAAU,EAAE,MAAM,CAAC;IACnB,SAAS,EAAE,MAAM,CAAC;IAClB,KAAK,CAAC,EAAE,CAAC,CAAC;IACV,UAAU,EAAE,kBAAkB,CAAC;CAChC;AAED,qBAAa,QAAQ,CAAC,CAAC,GAAG,IAAI;IAC5B,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAiB;IACxC,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAe;gBAEzB,MAAM,EAAE,cAAc;IAK5B,GAAG,CAAC,IAAI,EAAE,CAAC,SAAS,EAAE,MAAM,KAAK,OAAO,CAAC,kBAAkB,CAAC,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC;CAoEtG"}
@@ -0,0 +1,72 @@
1
+ export class GoalLoop {
2
+ config;
3
+ nowMs;
4
+ constructor(config) {
5
+ this.config = config;
6
+ this.nowMs = config.nowMs ?? (() => Date.now());
7
+ }
8
+ async run(step) {
9
+ const startedAtMs = this.nowMs();
10
+ let lastValue;
11
+ let iteration = 0;
12
+ while (iteration < this.config.maxIterations) {
13
+ iteration += 1;
14
+ const stepResult = await step(iteration);
15
+ if (typeof stepResult.value !== "undefined") {
16
+ lastValue = stepResult.value;
17
+ }
18
+ const elapsedMs = this.nowMs() - startedAtMs;
19
+ if (stepResult.done === true) {
20
+ return {
21
+ iterations: iteration,
22
+ elapsedMs,
23
+ value: lastValue,
24
+ stopReason: {
25
+ code: "completed",
26
+ message: "Goal loop completed by step result.",
27
+ detail: {
28
+ iteration,
29
+ elapsed_ms: elapsedMs,
30
+ max_iterations: this.config.maxIterations,
31
+ max_wall_time_cap_seconds: this.config.maxWallTimeCapSeconds,
32
+ },
33
+ },
34
+ };
35
+ }
36
+ if (elapsedMs >= this.config.maxWallTimeCapSeconds * 1000) {
37
+ return {
38
+ iterations: iteration,
39
+ elapsedMs,
40
+ value: lastValue,
41
+ stopReason: {
42
+ code: "max_wall_time_cap_seconds",
43
+ message: "Goal loop stopped because max wall-time cap was reached.",
44
+ detail: {
45
+ iteration,
46
+ elapsed_ms: elapsedMs,
47
+ max_iterations: this.config.maxIterations,
48
+ max_wall_time_cap_seconds: this.config.maxWallTimeCapSeconds,
49
+ },
50
+ },
51
+ };
52
+ }
53
+ }
54
+ const elapsedMs = this.nowMs() - startedAtMs;
55
+ return {
56
+ iterations: iteration,
57
+ elapsedMs,
58
+ value: lastValue,
59
+ stopReason: {
60
+ code: "max_iterations",
61
+ message: "Goal loop stopped because max iterations were reached.",
62
+ detail: {
63
+ iteration,
64
+ elapsed_ms: elapsedMs,
65
+ max_iterations: this.config.maxIterations,
66
+ max_wall_time_cap_seconds: this.config.maxWallTimeCapSeconds,
67
+ },
68
+ },
69
+ };
70
+ }
71
+ }
72
+ //# sourceMappingURL=goal-loop.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"goal-loop.js","sourceRoot":"","sources":["../../src/orchestrator/goal-loop.ts"],"names":[],"mappings":"AAkCA,MAAM,OAAO,QAAQ;IACF,MAAM,CAAiB;IACvB,KAAK,CAAe;IAErC,YAAY,MAAsB;QAChC,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QACrB,IAAI,CAAC,KAAK,GAAG,MAAM,CAAC,KAAK,IAAI,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC;IAClD,CAAC;IAED,KAAK,CAAC,GAAG,CAAC,IAA2D;QACnE,MAAM,WAAW,GAAG,IAAI,CAAC,KAAK,EAAE,CAAC;QACjC,IAAI,SAAwB,CAAC;QAC7B,IAAI,SAAS,GAAG,CAAC,CAAC;QAElB,OAAO,SAAS,GAAG,IAAI,CAAC,MAAM,CAAC,aAAa,EAAE,CAAC;YAC7C,SAAS,IAAI,CAAC,CAAC;YAEf,MAAM,UAAU,GAAG,MAAM,IAAI,CAAC,SAAS,CAAC,CAAC;YACzC,IAAI,OAAO,UAAU,CAAC,KAAK,KAAK,WAAW,EAAE,CAAC;gBAC5C,SAAS,GAAG,UAAU,CAAC,KAAK,CAAC;YAC/B,CAAC;YAED,MAAM,SAAS,GAAG,IAAI,CAAC,KAAK,EAAE,GAAG,WAAW,CAAC;YAC7C,IAAI,UAAU,CAAC,IAAI,KAAK,IAAI,EAAE,CAAC;gBAC7B,OAAO;oBACL,UAAU,EAAE,SAAS;oBACrB,SAAS;oBACT,KAAK,EAAE,SAAS;oBAChB,UAAU,EAAE;wBACV,IAAI,EAAE,WAAW;wBACjB,OAAO,EAAE,qCAAqC;wBAC9C,MAAM,EAAE;4BACN,SAAS;4BACT,UAAU,EAAE,SAAS;4BACrB,cAAc,EAAE,IAAI,CAAC,MAAM,CAAC,aAAa;4BACzC,yBAAyB,EAAE,IAAI,CAAC,MAAM,CAAC,qBAAqB;yBAC7D;qBACF;iBACF,CAAC;YACJ,CAAC;YAED,IAAI,SAAS,IAAI,IAAI,CAAC,MAAM,CAAC,qBAAqB,GAAG,IAAI,EAAE,CAAC;gBAC1D,OAAO;oBACL,UAAU,EAAE,SAAS;oBACrB,SAAS;oBACT,KAAK,EAAE,SAAS;oBAChB,UAAU,EAAE;wBACV,IAAI,EAAE,2BAA2B;wBACjC,OAAO,EAAE,0DAA0D;wBACnE,MAAM,EAAE;4BACN,SAAS;4BACT,UAAU,EAAE,SAAS;4BACrB,cAAc,EAAE,IAAI,CAAC,MAAM,CAAC,aAAa;4BACzC,yBAAyB,EAAE,IAAI,CAAC,MAAM,CAAC,qBAAqB;yBAC7D;qBACF;iBACF,CAAC;YACJ,CAAC;QACH,CAAC;QAED,MAAM,SAAS,GAAG,IAAI,CAAC,KAAK,EAAE,GAAG,WAAW,CAAC;QAC7C,OAAO;YACL,UAAU,EAAE,SAAS;YACrB,SAAS;YACT,KAAK,EAAE,SAAS;YAChB,UAAU,EAAE;gBACV,IAAI,EAAE,gBAAgB;gBACtB,OAAO,EAAE,wDAAwD;gBACjE,MAAM,EAAE;oBACN,SAAS;oBACT,UAAU,EAAE,SAAS;oBACrB,cAAc,EAAE,IAAI,CAAC,MAAM,CAAC,aAAa;oBACzC,yBAAyB,EAAE,IAAI,CAAC,MAAM,CAAC,qBAAqB;iBAC7D;aACF;SACF,CAAC;IACJ,CAAC;CACF"}