@the-open-engine/zeroshot 6.38.0 → 6.39.0

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 (381) hide show
  1. package/cli/event-copy.js +8 -7
  2. package/cli/event-copy.ts +12 -0
  3. package/cli/index.js +7 -31
  4. package/cli/json-export.js +61 -64
  5. package/cli/json-export.ts +112 -0
  6. package/cli/message-formatter-utils.js +68 -56
  7. package/cli/message-formatter-utils.ts +121 -0
  8. package/cli/message-formatters-normal.js +124 -259
  9. package/cli/message-formatters-normal.ts +250 -0
  10. package/cli/message-formatters-watch.js +81 -84
  11. package/cli/message-formatters-watch.ts +189 -0
  12. package/lib/agent-cli-provider/adapters/codex.d.ts.map +1 -1
  13. package/lib/agent-cli-provider/adapters/codex.js +3 -1
  14. package/lib/agent-cli-provider/adapters/codex.js.map +1 -1
  15. package/lib/cluster/generated/protocol-schema.cjs +1 -1
  16. package/lib/cluster/generated/protocol-schema.mjs +1 -1
  17. package/lib/cluster/generated/protocol.d.cts +8 -0
  18. package/lib/cluster/generated/protocol.d.mts +8 -0
  19. package/lib/cluster/generated/protocol.d.ts +8 -0
  20. package/lib/clusters-registry.d.ts +23 -0
  21. package/lib/clusters-registry.js +17 -29
  22. package/lib/completion.d.ts +12 -0
  23. package/lib/completion.js +84 -94
  24. package/lib/compose-utils.d.ts +32 -0
  25. package/lib/compose-utils.js +57 -72
  26. package/lib/detached-startup.d.ts +83 -0
  27. package/lib/detached-startup.js +231 -302
  28. package/lib/docker-config.d.ts +43 -0
  29. package/lib/docker-config.js +150 -325
  30. package/lib/docker-env-auth.d.ts +17 -0
  31. package/lib/docker-env-auth.js +75 -0
  32. package/lib/git-remote-utils.d.ts +48 -0
  33. package/lib/git-remote-utils.js +147 -213
  34. package/lib/id-detector.d.ts +15 -0
  35. package/lib/id-detector.js +37 -41
  36. package/lib/path-check.d.ts +30 -0
  37. package/lib/path-check.js +42 -45
  38. package/lib/process-liveness.d.ts +16 -0
  39. package/lib/process-liveness.js +19 -12
  40. package/lib/provider-credential-path.d.ts +16 -0
  41. package/lib/provider-credential-path.js +31 -29
  42. package/lib/provider-defaults.d.ts +30 -0
  43. package/lib/provider-defaults.js +47 -42
  44. package/lib/provider-detection.d.ts +11 -0
  45. package/lib/provider-detection.js +91 -54
  46. package/lib/provider-names.d.ts +38 -0
  47. package/lib/provider-names.js +56 -64
  48. package/lib/repo-settings.d.ts +28 -0
  49. package/lib/repo-settings.js +83 -59
  50. package/lib/run-mode.d.ts +21 -0
  51. package/lib/run-mode.js +21 -20
  52. package/lib/run-plan.d.ts +28 -0
  53. package/lib/run-plan.js +17 -16
  54. package/lib/settings/claude-auth.d.ts +35 -0
  55. package/lib/settings/claude-auth.js +30 -47
  56. package/lib/settings-defaults.d.ts +20 -0
  57. package/lib/settings-defaults.js +149 -0
  58. package/lib/settings-error.d.ts +7 -0
  59. package/lib/settings-error.js +8 -0
  60. package/lib/settings-issue-providers.d.ts +10 -0
  61. package/lib/settings-issue-providers.js +12 -0
  62. package/lib/settings-models.d.ts +22 -0
  63. package/lib/settings-models.js +93 -0
  64. package/lib/settings-storage.d.ts +23 -0
  65. package/lib/settings-storage.js +205 -0
  66. package/lib/settings-validation.d.ts +7 -0
  67. package/lib/settings-validation.js +182 -0
  68. package/lib/settings.d.ts +29 -0
  69. package/lib/settings.js +41 -736
  70. package/lib/setup-apply-types.d.ts +66 -0
  71. package/lib/setup-apply-types.js +2 -0
  72. package/lib/setup-apply.d.ts +39 -0
  73. package/lib/setup-apply.js +267 -264
  74. package/lib/setup-journal.d.ts +41 -0
  75. package/lib/setup-journal.js +119 -76
  76. package/lib/setup-plan-types.d.ts +102 -0
  77. package/lib/setup-plan-types.js +2 -0
  78. package/lib/setup-plan.d.ts +30 -0
  79. package/lib/setup-plan.js +300 -324
  80. package/lib/setup-undo.d.ts +44 -0
  81. package/lib/setup-undo.js +61 -74
  82. package/lib/start-cluster-config.d.ts +26 -0
  83. package/lib/start-cluster-config.js +56 -0
  84. package/lib/start-cluster-environment.d.ts +40 -0
  85. package/lib/start-cluster-environment.js +134 -0
  86. package/lib/start-cluster-run-options.d.ts +53 -0
  87. package/lib/start-cluster-run-options.js +147 -0
  88. package/lib/start-cluster.d.ts +64 -0
  89. package/lib/start-cluster.js +98 -454
  90. package/lib/stream-json-parser.d.ts +17 -0
  91. package/lib/stream-json-parser.js +51 -52
  92. package/npm-shrinkwrap.json +2 -2
  93. package/package.json +12 -6
  94. package/scripts/postinstall.js +27 -0
  95. package/scripts/rust-distribution.js +23 -14
  96. package/src/agent/agent-command-proofs-context.js +35 -45
  97. package/src/agent/agent-command-proofs-context.ts +87 -0
  98. package/src/agent/agent-config-settings.js +19 -0
  99. package/src/agent/agent-config-settings.ts +41 -0
  100. package/src/agent/agent-config.js +122 -231
  101. package/src/agent/agent-config.ts +285 -0
  102. package/src/agent/agent-context-builder.js +38 -273
  103. package/src/agent/agent-context-builder.ts +51 -0
  104. package/src/agent/agent-context-environment-sections.js +105 -0
  105. package/src/agent/agent-context-environment-sections.ts +134 -0
  106. package/src/agent/agent-context-packs.js +165 -0
  107. package/src/agent/agent-context-packs.ts +296 -0
  108. package/src/agent/agent-context-prompt-sections.js +100 -0
  109. package/src/agent/agent-context-prompt-sections.ts +148 -0
  110. package/src/agent/agent-context-sections.js +25 -334
  111. package/src/agent/agent-context-sections.ts +36 -0
  112. package/src/agent/agent-context-sources.js +96 -149
  113. package/src/agent/agent-context-sources.ts +253 -0
  114. package/src/agent/agent-context-types.js +2 -0
  115. package/src/agent/agent-context-types.ts +132 -0
  116. package/src/agent/agent-context-validation-sections.js +73 -0
  117. package/src/agent/agent-context-validation-sections.ts +129 -0
  118. package/src/agent/agent-input-injector.js +99 -118
  119. package/src/agent/agent-input-injector.ts +195 -0
  120. package/src/agent/agent-liveness-poll.js +74 -78
  121. package/src/agent/agent-liveness-poll.ts +163 -0
  122. package/src/agent/agent-quality-gate-schema.js +77 -86
  123. package/src/agent/agent-quality-gate-schema.ts +135 -0
  124. package/src/agent/agent-quality-gates-context.js +44 -50
  125. package/src/agent/agent-quality-gates-context.ts +91 -0
  126. package/src/agent/agent-stuck-detector.js +171 -239
  127. package/src/agent/agent-stuck-detector.ts +288 -0
  128. package/src/agent/agent-trigger-evaluator.js +29 -46
  129. package/src/agent/agent-trigger-evaluator.ts +98 -0
  130. package/src/agent/context-metrics.js +110 -141
  131. package/src/agent/context-metrics.ts +261 -0
  132. package/src/agent/context-pack-builder.js +72 -358
  133. package/src/agent/context-pack-builder.ts +105 -0
  134. package/src/agent/context-pack-core.js +70 -0
  135. package/src/agent/context-pack-core.ts +96 -0
  136. package/src/agent/context-pack-selection.js +119 -0
  137. package/src/agent/context-pack-selection.ts +187 -0
  138. package/src/agent/context-pack-truncation.js +139 -0
  139. package/src/agent/context-pack-truncation.ts +208 -0
  140. package/src/agent/context-pack-types.js +2 -0
  141. package/src/agent/context-pack-types.ts +98 -0
  142. package/src/agent/context-replay-policy.js +30 -39
  143. package/src/agent/context-replay-policy.ts +71 -0
  144. package/src/agent/critical-agent-policy.js +6 -10
  145. package/src/agent/critical-agent-policy.ts +20 -0
  146. package/src/agent/guidance-queue.js +74 -87
  147. package/src/agent/guidance-queue.ts +166 -0
  148. package/src/agent/output-extraction-error-detail.js +45 -0
  149. package/src/agent/output-extraction-error-detail.ts +49 -0
  150. package/src/agent/output-extraction-failures.js +125 -0
  151. package/src/agent/output-extraction-failures.ts +149 -0
  152. package/src/agent/output-extraction-json.js +234 -0
  153. package/src/agent/output-extraction-json.ts +235 -0
  154. package/src/agent/output-extraction-pi.js +124 -0
  155. package/src/agent/output-extraction-pi.ts +137 -0
  156. package/src/agent/output-extraction-types.js +2 -0
  157. package/src/agent/output-extraction-types.ts +49 -0
  158. package/src/agent/output-extraction.js +17 -617
  159. package/src/agent/output-extraction.ts +30 -0
  160. package/src/agent/output-reformatter-errors.js +83 -0
  161. package/src/agent/output-reformatter-errors.ts +106 -0
  162. package/src/agent/output-reformatter-types.js +2 -0
  163. package/src/agent/output-reformatter-types.ts +86 -0
  164. package/src/agent/output-reformatter.js +140 -185
  165. package/src/agent/output-reformatter.ts +238 -0
  166. package/src/agent/pi-terminal-lifecycle-types.js +2 -0
  167. package/src/agent/pi-terminal-lifecycle-types.ts +41 -0
  168. package/src/agent/pi-terminal-lifecycle.js +186 -206
  169. package/src/agent/pi-terminal-lifecycle.ts +297 -0
  170. package/src/agent/provider-control-plane.js +22 -21
  171. package/src/agent/provider-control-plane.ts +52 -0
  172. package/src/agent/provider-terminal-failure-types.js +2 -0
  173. package/src/agent/provider-terminal-failure-types.ts +60 -0
  174. package/src/agent/provider-terminal-failure.js +194 -191
  175. package/src/agent/provider-terminal-failure.ts +262 -0
  176. package/src/agent/rate-limit-backoff.js +31 -74
  177. package/src/agent/rate-limit-backoff.ts +71 -0
  178. package/src/agent/schema-utils.js +85 -125
  179. package/src/agent/schema-utils.ts +148 -0
  180. package/src/agent/structured-output-error.js +34 -33
  181. package/src/agent/structured-output-error.ts +105 -0
  182. package/src/agent/validation-platform.js +27 -27
  183. package/src/agent/validation-platform.ts +49 -0
  184. package/src/agent-cli-provider/adapters/codex.ts +3 -1
  185. package/src/attach/attach-client.js +232 -405
  186. package/src/attach/attach-client.ts +300 -0
  187. package/src/attach/attach-server-cleanup.js +43 -0
  188. package/src/attach/attach-server-cleanup.ts +39 -0
  189. package/src/attach/attach-server-clients.js +117 -0
  190. package/src/attach/attach-server-clients.ts +122 -0
  191. package/src/attach/attach-server-events.js +38 -0
  192. package/src/attach/attach-server-events.ts +36 -0
  193. package/src/attach/attach-server-pty.js +45 -0
  194. package/src/attach/attach-server-pty.ts +64 -0
  195. package/src/attach/attach-server-runtime.js +73 -0
  196. package/src/attach/attach-server-runtime.ts +62 -0
  197. package/src/attach/attach-server-socket.js +28 -0
  198. package/src/attach/attach-server-socket.ts +23 -0
  199. package/src/attach/attach-server-types.js +2 -0
  200. package/src/attach/attach-server-types.ts +82 -0
  201. package/src/attach/attach-server.js +106 -523
  202. package/src/attach/attach-server.ts +158 -0
  203. package/src/attach/index.js +18 -35
  204. package/src/attach/index.ts +18 -0
  205. package/src/attach/protocol.js +95 -184
  206. package/src/attach/protocol.ts +181 -0
  207. package/src/attach/ring-buffer.js +76 -102
  208. package/src/attach/ring-buffer.ts +109 -0
  209. package/src/attach/send-input.js +64 -75
  210. package/src/attach/send-input.ts +94 -0
  211. package/src/attach/socket-discovery.js +164 -218
  212. package/src/attach/socket-discovery.ts +230 -0
  213. package/src/attach/socket-paths.js +42 -61
  214. package/src/attach/socket-paths.ts +81 -0
  215. package/src/claude-credentials.js +51 -54
  216. package/src/claude-credentials.ts +89 -0
  217. package/src/cluster/generated/protocol-schema.ts +1 -1
  218. package/src/cluster/generated/protocol.ts +2 -1
  219. package/src/command-proofs.js +110 -141
  220. package/src/command-proofs.ts +216 -0
  221. package/src/config-router.js +81 -73
  222. package/src/config-router.ts +131 -0
  223. package/src/copy-worker.js +53 -29
  224. package/src/copy-worker.ts +75 -0
  225. package/src/darwin-keychain-boundary.js +80 -111
  226. package/src/darwin-keychain-boundary.ts +148 -0
  227. package/src/guidance-topics.js +4 -5
  228. package/src/guidance-topics.ts +10 -0
  229. package/src/input-helpers.js +33 -54
  230. package/src/input-helpers.ts +58 -0
  231. package/src/ledger-sequence.js +45 -48
  232. package/src/ledger-sequence.ts +63 -0
  233. package/src/legacy-lib/clusters-registry.ts +40 -0
  234. package/src/legacy-lib/completion.ts +148 -0
  235. package/src/legacy-lib/compose-utils.ts +102 -0
  236. package/src/legacy-lib/detached-startup.ts +449 -0
  237. package/src/legacy-lib/docker-config.ts +282 -0
  238. package/src/legacy-lib/docker-env-auth.ts +116 -0
  239. package/src/legacy-lib/git-remote-utils.ts +244 -0
  240. package/src/legacy-lib/id-detector.ts +57 -0
  241. package/src/legacy-lib/js-yaml.d.ts +3 -0
  242. package/src/legacy-lib/omelette.d.ts +15 -0
  243. package/src/legacy-lib/path-check.ts +89 -0
  244. package/src/legacy-lib/process-liveness.ts +36 -0
  245. package/src/legacy-lib/provider-credential-path.ts +57 -0
  246. package/src/legacy-lib/provider-defaults.ts +114 -0
  247. package/src/legacy-lib/provider-detection.ts +67 -0
  248. package/src/legacy-lib/provider-names.ts +126 -0
  249. package/src/legacy-lib/repo-settings.ts +88 -0
  250. package/src/legacy-lib/run-mode.ts +58 -0
  251. package/src/legacy-lib/run-plan.ts +49 -0
  252. package/src/legacy-lib/settings/claude-auth.ts +80 -0
  253. package/src/legacy-lib/settings-defaults.ts +212 -0
  254. package/src/legacy-lib/settings-error.ts +8 -0
  255. package/src/legacy-lib/settings-issue-providers.ts +18 -0
  256. package/src/legacy-lib/settings-models.ts +124 -0
  257. package/src/legacy-lib/settings-storage.ts +277 -0
  258. package/src/legacy-lib/settings-validation.ts +220 -0
  259. package/src/legacy-lib/settings.ts +87 -0
  260. package/src/legacy-lib/setup-apply-types.ts +70 -0
  261. package/src/legacy-lib/setup-apply.ts +456 -0
  262. package/src/legacy-lib/setup-journal.ts +185 -0
  263. package/src/legacy-lib/setup-plan-types.ts +96 -0
  264. package/src/legacy-lib/setup-plan.ts +500 -0
  265. package/src/legacy-lib/setup-undo.ts +142 -0
  266. package/src/legacy-lib/start-cluster-config.ts +124 -0
  267. package/src/legacy-lib/start-cluster-environment.ts +165 -0
  268. package/src/legacy-lib/start-cluster-run-options.ts +279 -0
  269. package/src/legacy-lib/start-cluster.ts +237 -0
  270. package/src/legacy-lib/stream-json-parser.ts +88 -0
  271. package/src/message-buffer.js +55 -71
  272. package/src/message-buffer.ts +107 -0
  273. package/src/message-bus-bridge.js +92 -133
  274. package/src/message-bus-bridge.ts +149 -0
  275. package/src/name-generator-shared.js +220 -0
  276. package/src/name-generator-shared.ts +231 -0
  277. package/src/name-generator.js +8 -217
  278. package/src/name-generator.ts +27 -0
  279. package/src/omp-blob-root.js +83 -64
  280. package/src/omp-blob-root.ts +116 -0
  281. package/src/omp-config-overlay.js +65 -38
  282. package/src/omp-config-overlay.ts +110 -0
  283. package/src/omp-execution-fingerprint.js +38 -43
  284. package/src/omp-execution-fingerprint.ts +92 -0
  285. package/src/omp-session-limits.js +10 -15
  286. package/src/omp-session-limits.ts +53 -0
  287. package/src/omp-session-partition.js +2 -2
  288. package/src/omp-session-verifier.js +1 -1
  289. package/src/orchestrator.js +19 -4
  290. package/src/providers/anthropic/index.js +3 -1
  291. package/src/providers/anthropic/index.ts +13 -0
  292. package/src/providers/capabilities.js +19 -27
  293. package/src/providers/capabilities.ts +44 -0
  294. package/src/providers/google/index.js +3 -1
  295. package/src/providers/google/index.ts +13 -0
  296. package/src/providers/openai/index.js +3 -1
  297. package/src/providers/openai/index.ts +13 -0
  298. package/src/providers/opencode/index.js +3 -1
  299. package/src/providers/opencode/index.ts +13 -0
  300. package/src/quality-gates.js +67 -127
  301. package/src/quality-gates.ts +149 -0
  302. package/src/repo-settings-access.js +40 -0
  303. package/src/repo-settings-access.ts +64 -0
  304. package/src/schemas/sub-cluster.js +127 -183
  305. package/src/schemas/sub-cluster.ts +238 -0
  306. package/src/state-snapshot-normalization.js +224 -0
  307. package/src/state-snapshot-normalization.ts +222 -0
  308. package/src/state-snapshot.js +192 -359
  309. package/src/state-snapshot.ts +291 -0
  310. package/src/state-snapshotter.js +118 -130
  311. package/src/state-snapshotter.ts +167 -0
  312. package/src/sub-cluster-wrapper.js +4 -13
  313. package/src/task-run-model-args.js +87 -124
  314. package/src/task-run-model-args.ts +204 -0
  315. package/src/task-runner.js +5 -25
  316. package/src/task-runner.ts +28 -0
  317. package/src/task-startup-error.js +73 -58
  318. package/src/task-startup-error.ts +126 -0
  319. package/src/template-validation/consensus-gate-contracts.js +2 -0
  320. package/src/template-validation/consensus-gate-contracts.ts +70 -0
  321. package/src/template-validation/consensus-gate-scenarios.js +76 -0
  322. package/src/template-validation/consensus-gate-scenarios.ts +130 -0
  323. package/src/template-validation/consensus-gate-stage.js +34 -0
  324. package/src/template-validation/consensus-gate-stage.ts +56 -0
  325. package/src/template-validation/random-topology-contracts.js +2 -0
  326. package/src/template-validation/random-topology-contracts.ts +54 -0
  327. package/src/template-validation/random-topology-dispatch.js +25 -0
  328. package/src/template-validation/random-topology-dispatch.ts +33 -0
  329. package/src/template-validation/random-topology-message-loop.js +53 -0
  330. package/src/template-validation/random-topology-message-loop.ts +73 -0
  331. package/src/template-validation/random-topology-operations.js +79 -0
  332. package/src/template-validation/random-topology-operations.ts +101 -0
  333. package/src/template-validation/random-topology-runtime.js +25 -0
  334. package/src/template-validation/random-topology-runtime.ts +43 -0
  335. package/src/template-validation/random-topology-scenario.js +52 -0
  336. package/src/template-validation/random-topology-scenario.ts +57 -0
  337. package/src/template-validation/random-topology-schema.js +159 -0
  338. package/src/template-validation/random-topology-schema.ts +190 -0
  339. package/src/template-validation/random-topology-state.js +28 -0
  340. package/src/template-validation/random-topology-state.ts +30 -0
  341. package/src/template-validation/random-topology-trigger-evaluation.js +45 -0
  342. package/src/template-validation/random-topology-trigger-evaluation.ts +65 -0
  343. package/src/template-validation/random-topology-trigger.js +75 -0
  344. package/src/template-validation/random-topology-trigger.ts +88 -0
  345. package/src/template-validation/report-formatter.js +40 -46
  346. package/src/template-validation/report-formatter.ts +101 -0
  347. package/src/template-validation/simulate-consensus-gates.js +111 -302
  348. package/src/template-validation/simulate-consensus-gates.ts +196 -0
  349. package/src/template-validation/simulate-random-topology.js +26 -519
  350. package/src/template-validation/simulate-random-topology.ts +57 -0
  351. package/src/template-validation/simulate-two-stage-validation.js +41 -265
  352. package/src/template-validation/simulate-two-stage-validation.ts +55 -0
  353. package/src/template-validation/simulation-agent-runtime.js +25 -0
  354. package/src/template-validation/simulation-agent-runtime.ts +40 -0
  355. package/src/template-validation/simulation-agent.js +29 -0
  356. package/src/template-validation/simulation-agent.ts +73 -0
  357. package/src/template-validation/simulation-runtime.js +34 -0
  358. package/src/template-validation/simulation-runtime.ts +72 -0
  359. package/src/template-validation/two-stage-contracts.js +2 -0
  360. package/src/template-validation/two-stage-contracts.ts +41 -0
  361. package/src/template-validation/two-stage-inputs.js +21 -0
  362. package/src/template-validation/two-stage-inputs.ts +29 -0
  363. package/src/template-validation/two-stage-results.js +30 -0
  364. package/src/template-validation/two-stage-results.ts +40 -0
  365. package/src/template-validation/two-stage-scenario.js +86 -0
  366. package/src/template-validation/two-stage-scenario.ts +120 -0
  367. package/src/worktree-claude-config.js +182 -220
  368. package/src/worktree-claude-config.ts +272 -0
  369. package/src/worktree-tooling-env.js +103 -125
  370. package/src/worktree-tooling-env.ts +142 -0
  371. package/task-lib/completion.js +2 -3
  372. package/task-lib/completion.ts +9 -0
  373. package/task-lib/config.js +1 -4
  374. package/task-lib/config.ts +11 -0
  375. package/task-lib/name-generator.js +4 -226
  376. package/task-lib/name-generator.ts +11 -0
  377. package/task-lib/omp-session-cleanup.js +1 -1
  378. package/task-lib/omp-storage-root.js +8 -12
  379. package/task-lib/omp-storage-root.ts +62 -0
  380. package/task-lib/process-termination.js +143 -166
  381. package/task-lib/process-termination.ts +268 -0
@@ -0,0 +1,165 @@
1
+ "use strict";
2
+ const contextSections = require("./agent-context-sections");
3
+ const contextSources = require("./agent-context-sources");
4
+ const qualityGatesContext = require("./agent-quality-gates-context");
5
+ const commandProofsContext = require("./agent-command-proofs-context");
6
+ const { buildHeaderContext, buildInstructionsSection, buildJsonSchemaSection, buildLegacyOutputSchemaSection, buildRepoToolingSection, buildTriggeringMessageSection, buildValidatorSkipSection, } = contextSections;
7
+ const { buildSourcePack } = contextSources;
8
+ const { buildRequiredQualityGatesSection } = qualityGatesContext;
9
+ const { buildCommandProofsSection } = commandProofsContext;
10
+ function pushStaticPack({ packs, packId, section, text, order, options = {}, }) {
11
+ if (!text) {
12
+ return order;
13
+ }
14
+ packs.push({
15
+ id: packId,
16
+ section,
17
+ priority: 'required',
18
+ order,
19
+ preserve: options.preserve || false,
20
+ render: () => text,
21
+ });
22
+ return order + 1;
23
+ }
24
+ function appendSourcePacks(packs, strategy, params, startingOrder) {
25
+ if (!Array.isArray(strategy.sources)) {
26
+ return startingOrder;
27
+ }
28
+ let order = startingOrder;
29
+ strategy.sources.forEach((source, index) => {
30
+ packs.push({
31
+ ...buildSourcePack({ source, index, ...params }),
32
+ order,
33
+ });
34
+ order += 1;
35
+ });
36
+ return order;
37
+ }
38
+ function buildStaticSections(params) {
39
+ const { id, role, iteration, config, selectedPrompt, queuedGuidance, messageBus, cluster, triggeringMessage, worktree, isolation, } = params;
40
+ const isIsolated = !!(worktree?.enabled || isolation?.enabled);
41
+ return {
42
+ header: buildHeaderContext({ id, role, iteration, isIsolated }),
43
+ instructions: buildInstructionsSection({
44
+ config,
45
+ selectedPrompt,
46
+ id,
47
+ }),
48
+ repoTooling: buildRepoToolingSection({ config, worktree }),
49
+ commandProofs: buildCommandProofsSection(config),
50
+ legacyOutputSchema: buildLegacyOutputSchemaSection(config),
51
+ queuedGuidance: queuedGuidance || '',
52
+ requiredQualityGates: buildRequiredQualityGatesSection(config),
53
+ jsonSchema: buildJsonSchemaSection(config),
54
+ validatorSkip: buildValidatorSkipSection({
55
+ role,
56
+ messageBus,
57
+ cluster,
58
+ isolation,
59
+ }),
60
+ triggeringMessage: buildTriggeringMessageSection(triggeringMessage),
61
+ };
62
+ }
63
+ function buildPacks(params) {
64
+ const { strategy, messageBus, cluster, lastTaskEndTime, lastAgentStartTime, triggeringMessage } = params;
65
+ const sections = buildStaticSections(params);
66
+ const packs = [];
67
+ let order = 0;
68
+ const staticPackIds = [
69
+ 'header',
70
+ 'instructions',
71
+ 'repoTooling',
72
+ 'commandProofs',
73
+ 'queuedGuidance',
74
+ 'legacyOutputSchema',
75
+ 'requiredQualityGates',
76
+ 'jsonSchema',
77
+ ];
78
+ for (const packId of staticPackIds) {
79
+ order = pushStaticPack({
80
+ packs,
81
+ packId,
82
+ section: packId,
83
+ text: sections[packId],
84
+ order,
85
+ });
86
+ }
87
+ order = appendSourcePacks(packs, strategy, {
88
+ messageBus,
89
+ cluster,
90
+ lastTaskEndTime,
91
+ lastAgentStartTime,
92
+ throughId: params.contextThroughId,
93
+ triggeringMessageId: triggeringMessage?.id,
94
+ }, order);
95
+ order = pushStaticPack({
96
+ packs,
97
+ packId: 'validatorSkip',
98
+ section: 'validatorSkip',
99
+ text: sections.validatorSkip,
100
+ order,
101
+ });
102
+ pushStaticPack({
103
+ packs,
104
+ packId: 'triggeringMessage',
105
+ section: 'triggeringMessage',
106
+ text: sections.triggeringMessage,
107
+ order,
108
+ options: { preserve: true },
109
+ });
110
+ return packs;
111
+ }
112
+ function buildContinuationPacks(params) {
113
+ const { id, iteration, config, selectedPrompt, queuedGuidance, triggeringMessage, strategy, messageBus, cluster, lastTaskEndTime, lastAgentStartTime, continuationSequence, contextThroughId, previousPromptIdentity, currentPromptIdentity, } = params;
114
+ const packs = [];
115
+ let order = 0;
116
+ order = pushStaticPack({
117
+ packs,
118
+ packId: 'continuationHeader',
119
+ section: 'continuationHeader',
120
+ text: `## Continuation Turn\n\nAgent: ${id}\nIteration: ${iteration}\n\n` +
121
+ 'Apply only the new material below while retaining the existing session instructions.\n\n',
122
+ order,
123
+ });
124
+ if (config.promptConfig?.type === 'rules' && currentPromptIdentity !== previousPromptIdentity) {
125
+ order = pushStaticPack({
126
+ packs,
127
+ packId: 'iterationInstructions',
128
+ section: 'iterationInstructions',
129
+ text: buildInstructionsSection({ config, selectedPrompt, id }),
130
+ order,
131
+ });
132
+ }
133
+ order = pushStaticPack({
134
+ packs,
135
+ packId: 'queuedGuidance',
136
+ section: 'queuedGuidance',
137
+ text: queuedGuidance || '',
138
+ order,
139
+ });
140
+ order = appendSourcePacks(packs, strategy, {
141
+ messageBus,
142
+ cluster,
143
+ lastTaskEndTime,
144
+ lastAgentStartTime,
145
+ afterId: continuationSequence,
146
+ throughId: contextThroughId,
147
+ triggeringMessageId: triggeringMessage?.id,
148
+ }, order);
149
+ pushStaticPack({
150
+ packs,
151
+ packId: 'triggeringMessage',
152
+ section: 'triggeringMessage',
153
+ text: buildTriggeringMessageSection(triggeringMessage),
154
+ order,
155
+ options: { preserve: true },
156
+ });
157
+ return packs;
158
+ }
159
+ function buildAgentContextPacks(params, strategy, continuation) {
160
+ const contextPacksParams = { ...params, strategy };
161
+ return continuation ? buildContinuationPacks(contextPacksParams) : buildPacks(contextPacksParams);
162
+ }
163
+ module.exports = {
164
+ buildAgentContextPacks,
165
+ };
@@ -0,0 +1,296 @@
1
+ import contextSections = require('./agent-context-sections');
2
+ import contextSources = require('./agent-context-sources');
3
+ import qualityGatesContext = require('./agent-quality-gates-context');
4
+ import commandProofsContext = require('./agent-command-proofs-context');
5
+
6
+ import type {
7
+ BuildContextParams,
8
+ ContextMessageBus,
9
+ ContextCluster,
10
+ ContextStrategy,
11
+ } from './agent-context-types';
12
+ import type { ContextPack } from './context-pack-types';
13
+
14
+ interface StaticPackOptions {
15
+ preserve?: boolean;
16
+ }
17
+
18
+ interface StaticPackParams {
19
+ packs: ContextPack[];
20
+ packId: string;
21
+ section: string;
22
+ text: string | null | undefined;
23
+ order: number;
24
+ options?: StaticPackOptions;
25
+ }
26
+
27
+ interface SourcePackContext {
28
+ messageBus: ContextMessageBus;
29
+ cluster: ContextCluster;
30
+ lastTaskEndTime?: number | null | undefined;
31
+ lastAgentStartTime?: number | null | undefined;
32
+ afterId?: unknown;
33
+ throughId?: unknown;
34
+ triggeringMessageId?: unknown;
35
+ }
36
+
37
+ interface ContextPacksParams extends BuildContextParams {
38
+ strategy: ContextStrategy;
39
+ }
40
+
41
+ interface StaticSections {
42
+ header: string;
43
+ instructions: string;
44
+ repoTooling: string;
45
+ commandProofs: string;
46
+ legacyOutputSchema: string;
47
+ queuedGuidance: string;
48
+ requiredQualityGates: string;
49
+ jsonSchema: string;
50
+ validatorSkip: string;
51
+ triggeringMessage: string;
52
+ }
53
+
54
+ const {
55
+ buildHeaderContext,
56
+ buildInstructionsSection,
57
+ buildJsonSchemaSection,
58
+ buildLegacyOutputSchemaSection,
59
+ buildRepoToolingSection,
60
+ buildTriggeringMessageSection,
61
+ buildValidatorSkipSection,
62
+ } = contextSections;
63
+ const { buildSourcePack } = contextSources;
64
+ const { buildRequiredQualityGatesSection } = qualityGatesContext;
65
+ const { buildCommandProofsSection } = commandProofsContext;
66
+
67
+ function pushStaticPack({
68
+ packs,
69
+ packId,
70
+ section,
71
+ text,
72
+ order,
73
+ options = {},
74
+ }: StaticPackParams): number {
75
+ if (!text) {
76
+ return order;
77
+ }
78
+
79
+ packs.push({
80
+ id: packId,
81
+ section,
82
+ priority: 'required',
83
+ order,
84
+ preserve: options.preserve || false,
85
+ render: () => text,
86
+ });
87
+
88
+ return order + 1;
89
+ }
90
+
91
+ function appendSourcePacks(
92
+ packs: ContextPack[],
93
+ strategy: ContextStrategy,
94
+ params: SourcePackContext,
95
+ startingOrder: number
96
+ ): number {
97
+ if (!Array.isArray(strategy.sources)) {
98
+ return startingOrder;
99
+ }
100
+
101
+ let order = startingOrder;
102
+ strategy.sources.forEach((source, index) => {
103
+ packs.push({
104
+ ...buildSourcePack({ source, index, ...params }),
105
+ order,
106
+ });
107
+ order += 1;
108
+ });
109
+
110
+ return order;
111
+ }
112
+
113
+ function buildStaticSections(params: BuildContextParams): StaticSections {
114
+ const {
115
+ id,
116
+ role,
117
+ iteration,
118
+ config,
119
+ selectedPrompt,
120
+ queuedGuidance,
121
+ messageBus,
122
+ cluster,
123
+ triggeringMessage,
124
+ worktree,
125
+ isolation,
126
+ } = params;
127
+ const isIsolated = !!(worktree?.enabled || isolation?.enabled);
128
+
129
+ return {
130
+ header: buildHeaderContext({ id, role, iteration, isIsolated }),
131
+ instructions: buildInstructionsSection({
132
+ config,
133
+ selectedPrompt,
134
+ id,
135
+ }),
136
+ repoTooling: buildRepoToolingSection({ config, worktree }),
137
+ commandProofs: buildCommandProofsSection(config),
138
+ legacyOutputSchema: buildLegacyOutputSchemaSection(config),
139
+ queuedGuidance: queuedGuidance || '',
140
+ requiredQualityGates: buildRequiredQualityGatesSection(config),
141
+ jsonSchema: buildJsonSchemaSection(config),
142
+ validatorSkip: buildValidatorSkipSection({
143
+ role,
144
+ messageBus,
145
+ cluster,
146
+ isolation,
147
+ }),
148
+ triggeringMessage: buildTriggeringMessageSection(triggeringMessage),
149
+ };
150
+ }
151
+
152
+ function buildPacks(params: ContextPacksParams): ContextPack[] {
153
+ const { strategy, messageBus, cluster, lastTaskEndTime, lastAgentStartTime, triggeringMessage } =
154
+ params;
155
+ const sections = buildStaticSections(params);
156
+ const packs: ContextPack[] = [];
157
+ let order = 0;
158
+ const staticPackIds: (keyof StaticSections)[] = [
159
+ 'header',
160
+ 'instructions',
161
+ 'repoTooling',
162
+ 'commandProofs',
163
+ 'queuedGuidance',
164
+ 'legacyOutputSchema',
165
+ 'requiredQualityGates',
166
+ 'jsonSchema',
167
+ ];
168
+
169
+ for (const packId of staticPackIds) {
170
+ order = pushStaticPack({
171
+ packs,
172
+ packId,
173
+ section: packId,
174
+ text: sections[packId],
175
+ order,
176
+ });
177
+ }
178
+
179
+ order = appendSourcePacks(
180
+ packs,
181
+ strategy,
182
+ {
183
+ messageBus,
184
+ cluster,
185
+ lastTaskEndTime,
186
+ lastAgentStartTime,
187
+ throughId: params.contextThroughId,
188
+ triggeringMessageId: triggeringMessage?.id,
189
+ },
190
+ order
191
+ );
192
+ order = pushStaticPack({
193
+ packs,
194
+ packId: 'validatorSkip',
195
+ section: 'validatorSkip',
196
+ text: sections.validatorSkip,
197
+ order,
198
+ });
199
+ pushStaticPack({
200
+ packs,
201
+ packId: 'triggeringMessage',
202
+ section: 'triggeringMessage',
203
+ text: sections.triggeringMessage,
204
+ order,
205
+ options: { preserve: true },
206
+ });
207
+
208
+ return packs;
209
+ }
210
+
211
+ function buildContinuationPacks(params: ContextPacksParams): ContextPack[] {
212
+ const {
213
+ id,
214
+ iteration,
215
+ config,
216
+ selectedPrompt,
217
+ queuedGuidance,
218
+ triggeringMessage,
219
+ strategy,
220
+ messageBus,
221
+ cluster,
222
+ lastTaskEndTime,
223
+ lastAgentStartTime,
224
+ continuationSequence,
225
+ contextThroughId,
226
+ previousPromptIdentity,
227
+ currentPromptIdentity,
228
+ } = params;
229
+ const packs: ContextPack[] = [];
230
+ let order = 0;
231
+
232
+ order = pushStaticPack({
233
+ packs,
234
+ packId: 'continuationHeader',
235
+ section: 'continuationHeader',
236
+ text:
237
+ `## Continuation Turn\n\nAgent: ${id}\nIteration: ${iteration}\n\n` +
238
+ 'Apply only the new material below while retaining the existing session instructions.\n\n',
239
+ order,
240
+ });
241
+
242
+ if (config.promptConfig?.type === 'rules' && currentPromptIdentity !== previousPromptIdentity) {
243
+ order = pushStaticPack({
244
+ packs,
245
+ packId: 'iterationInstructions',
246
+ section: 'iterationInstructions',
247
+ text: buildInstructionsSection({ config, selectedPrompt, id }),
248
+ order,
249
+ });
250
+ }
251
+
252
+ order = pushStaticPack({
253
+ packs,
254
+ packId: 'queuedGuidance',
255
+ section: 'queuedGuidance',
256
+ text: queuedGuidance || '',
257
+ order,
258
+ });
259
+ order = appendSourcePacks(
260
+ packs,
261
+ strategy,
262
+ {
263
+ messageBus,
264
+ cluster,
265
+ lastTaskEndTime,
266
+ lastAgentStartTime,
267
+ afterId: continuationSequence,
268
+ throughId: contextThroughId,
269
+ triggeringMessageId: triggeringMessage?.id,
270
+ },
271
+ order
272
+ );
273
+ pushStaticPack({
274
+ packs,
275
+ packId: 'triggeringMessage',
276
+ section: 'triggeringMessage',
277
+ text: buildTriggeringMessageSection(triggeringMessage),
278
+ order,
279
+ options: { preserve: true },
280
+ });
281
+
282
+ return packs;
283
+ }
284
+
285
+ function buildAgentContextPacks(
286
+ params: BuildContextParams,
287
+ strategy: ContextStrategy,
288
+ continuation: boolean
289
+ ): ContextPack[] {
290
+ const contextPacksParams = { ...params, strategy };
291
+ return continuation ? buildContinuationPacks(contextPacksParams) : buildPacks(contextPacksParams);
292
+ }
293
+
294
+ export = {
295
+ buildAgentContextPacks,
296
+ };
@@ -0,0 +1,100 @@
1
+ "use strict";
2
+ const EXAMPLE_PRIMITIVE_VALUES = {
3
+ boolean: true,
4
+ number: 0,
5
+ integer: 0,
6
+ };
7
+ function generateExampleValue(propSchema, key) {
8
+ if (!propSchema) {
9
+ return undefined;
10
+ }
11
+ if (Array.isArray(propSchema.enum) && propSchema.enum.length > 0) {
12
+ return propSchema.enum[0];
13
+ }
14
+ if (propSchema.type === 'string') {
15
+ return propSchema.description || `${key} value`;
16
+ }
17
+ if (propSchema.type === 'array') {
18
+ return [];
19
+ }
20
+ if (propSchema.type === 'object') {
21
+ return generateExampleFromSchema(propSchema) || {};
22
+ }
23
+ return propSchema.type === undefined ? undefined : EXAMPLE_PRIMITIVE_VALUES[propSchema.type];
24
+ }
25
+ function generateExampleFromSchema(schema) {
26
+ if (!schema || schema.type !== 'object' || !schema.properties) {
27
+ return null;
28
+ }
29
+ const example = {};
30
+ for (const [key, propSchema] of Object.entries(schema.properties)) {
31
+ const value = generateExampleValue(propSchema, key);
32
+ if (value !== undefined) {
33
+ example[key] = value;
34
+ }
35
+ }
36
+ return example;
37
+ }
38
+ function buildInstructionsSection({ config, selectedPrompt, id, }) {
39
+ const promptText = selectedPrompt || (typeof config.prompt === 'string' ? config.prompt : config.prompt?.system);
40
+ if (promptText) {
41
+ return `## Instructions\n\n${promptText}\n\n`;
42
+ }
43
+ if (config.prompt && typeof config.prompt !== 'string' && !config.prompt.system) {
44
+ const serializedPrompt = JSON.stringify(config.prompt);
45
+ throw new Error(`Agent "${id}" has invalid prompt format. ` +
46
+ `Expected string or object with .system property, got: ${serializedPrompt.slice(0, 100)}...`);
47
+ }
48
+ return '';
49
+ }
50
+ function resolveLegacyOutputFormat(config) {
51
+ return typeof config.prompt === 'string' ? undefined : config.prompt?.outputFormat;
52
+ }
53
+ function buildLegacyOutputSchemaSection(config) {
54
+ const outputFormat = resolveLegacyOutputFormat(config);
55
+ if (!outputFormat) {
56
+ return '';
57
+ }
58
+ const rules = (outputFormat.rules || []).map((rule) => `- ${rule}`).join('\n');
59
+ return [
60
+ '## Output Schema (REQUIRED)',
61
+ '',
62
+ '```json',
63
+ JSON.stringify(outputFormat.example, null, 2),
64
+ '```',
65
+ '',
66
+ 'STRING VALUES IN THIS SCHEMA: Dense. Factual. No filler words. No pleasantries.',
67
+ rules,
68
+ '',
69
+ ]
70
+ .filter(Boolean)
71
+ .join('\n');
72
+ }
73
+ function buildJsonSchemaSection(config) {
74
+ if (!config.jsonSchema || config.outputFormat !== 'json') {
75
+ return '';
76
+ }
77
+ const lines = [
78
+ '## 🔴 OUTPUT FORMAT - JSON ONLY',
79
+ '',
80
+ 'Your response must be ONLY valid JSON. No other text before or after.',
81
+ 'Start with { and end with }. Nothing else.',
82
+ '',
83
+ 'Required schema:',
84
+ '```json',
85
+ JSON.stringify(config.jsonSchema, null, 2),
86
+ '```',
87
+ '',
88
+ ];
89
+ const example = generateExampleFromSchema(config.jsonSchema);
90
+ if (example) {
91
+ lines.push('Example output:', '```json', JSON.stringify(example, null, 2), '```', '');
92
+ }
93
+ lines.push('CRITICAL RULES:', '- Output ONLY the JSON object - no explanation, no thinking, no preamble', '- Use EXACTLY the enum values specified (case-sensitive)', '- Include ALL required fields', '');
94
+ return lines.join('\n');
95
+ }
96
+ module.exports = {
97
+ buildInstructionsSection,
98
+ buildJsonSchemaSection,
99
+ buildLegacyOutputSchemaSection,
100
+ };
@@ -0,0 +1,148 @@
1
+ import type { AgentContextConfig, JsonSchema, LegacyOutputFormat } from './agent-context-types';
2
+
3
+ interface InstructionsSectionParams {
4
+ config: AgentContextConfig;
5
+ selectedPrompt?: string | null | undefined;
6
+ id: string;
7
+ }
8
+
9
+ const EXAMPLE_PRIMITIVE_VALUES: Readonly<Record<string, boolean | number>> = {
10
+ boolean: true,
11
+ number: 0,
12
+ integer: 0,
13
+ };
14
+
15
+ function generateExampleValue(propSchema: JsonSchema | null | undefined, key: string): unknown {
16
+ if (!propSchema) {
17
+ return undefined;
18
+ }
19
+
20
+ if (Array.isArray(propSchema.enum) && propSchema.enum.length > 0) {
21
+ return propSchema.enum[0];
22
+ }
23
+
24
+ if (propSchema.type === 'string') {
25
+ return propSchema.description || `${key} value`;
26
+ }
27
+
28
+ if (propSchema.type === 'array') {
29
+ return [];
30
+ }
31
+
32
+ if (propSchema.type === 'object') {
33
+ return generateExampleFromSchema(propSchema) || {};
34
+ }
35
+
36
+ return propSchema.type === undefined ? undefined : EXAMPLE_PRIMITIVE_VALUES[propSchema.type];
37
+ }
38
+
39
+ function generateExampleFromSchema(
40
+ schema: JsonSchema | null | undefined
41
+ ): Record<string, unknown> | null {
42
+ if (!schema || schema.type !== 'object' || !schema.properties) {
43
+ return null;
44
+ }
45
+
46
+ const example: Record<string, unknown> = {};
47
+
48
+ for (const [key, propSchema] of Object.entries(schema.properties)) {
49
+ const value = generateExampleValue(propSchema, key);
50
+ if (value !== undefined) {
51
+ example[key] = value;
52
+ }
53
+ }
54
+
55
+ return example;
56
+ }
57
+
58
+ function buildInstructionsSection({
59
+ config,
60
+ selectedPrompt,
61
+ id,
62
+ }: InstructionsSectionParams): string {
63
+ const promptText =
64
+ selectedPrompt || (typeof config.prompt === 'string' ? config.prompt : config.prompt?.system);
65
+
66
+ if (promptText) {
67
+ return `## Instructions\n\n${promptText}\n\n`;
68
+ }
69
+
70
+ if (config.prompt && typeof config.prompt !== 'string' && !config.prompt.system) {
71
+ const serializedPrompt = JSON.stringify(config.prompt);
72
+ throw new Error(
73
+ `Agent "${id}" has invalid prompt format. ` +
74
+ `Expected string or object with .system property, got: ${serializedPrompt.slice(0, 100)}...`
75
+ );
76
+ }
77
+
78
+ return '';
79
+ }
80
+
81
+ function resolveLegacyOutputFormat(
82
+ config: AgentContextConfig
83
+ ): LegacyOutputFormat | null | undefined {
84
+ return typeof config.prompt === 'string' ? undefined : config.prompt?.outputFormat;
85
+ }
86
+
87
+ function buildLegacyOutputSchemaSection(config: AgentContextConfig): string {
88
+ const outputFormat = resolveLegacyOutputFormat(config);
89
+ if (!outputFormat) {
90
+ return '';
91
+ }
92
+
93
+ const rules = (outputFormat.rules || []).map((rule) => `- ${rule}`).join('\n');
94
+
95
+ return [
96
+ '## Output Schema (REQUIRED)',
97
+ '',
98
+ '```json',
99
+ JSON.stringify(outputFormat.example, null, 2),
100
+ '```',
101
+ '',
102
+ 'STRING VALUES IN THIS SCHEMA: Dense. Factual. No filler words. No pleasantries.',
103
+ rules,
104
+ '',
105
+ ]
106
+ .filter(Boolean)
107
+ .join('\n');
108
+ }
109
+
110
+ function buildJsonSchemaSection(config: AgentContextConfig): string {
111
+ if (!config.jsonSchema || config.outputFormat !== 'json') {
112
+ return '';
113
+ }
114
+
115
+ const lines = [
116
+ '## 🔴 OUTPUT FORMAT - JSON ONLY',
117
+ '',
118
+ 'Your response must be ONLY valid JSON. No other text before or after.',
119
+ 'Start with { and end with }. Nothing else.',
120
+ '',
121
+ 'Required schema:',
122
+ '```json',
123
+ JSON.stringify(config.jsonSchema, null, 2),
124
+ '```',
125
+ '',
126
+ ];
127
+
128
+ const example = generateExampleFromSchema(config.jsonSchema);
129
+ if (example) {
130
+ lines.push('Example output:', '```json', JSON.stringify(example, null, 2), '```', '');
131
+ }
132
+
133
+ lines.push(
134
+ 'CRITICAL RULES:',
135
+ '- Output ONLY the JSON object - no explanation, no thinking, no preamble',
136
+ '- Use EXACTLY the enum values specified (case-sensitive)',
137
+ '- Include ALL required fields',
138
+ ''
139
+ );
140
+
141
+ return lines.join('\n');
142
+ }
143
+
144
+ export = {
145
+ buildInstructionsSection,
146
+ buildJsonSchemaSection,
147
+ buildLegacyOutputSchemaSection,
148
+ };