@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
@@ -1,141 +1,122 @@
1
- /**
2
- * AgentInputInjector - Live guidance injection for running agents
3
- *
4
- * Resolves the current task, validates attachable socket availability,
5
- * and sends input via attach STDIN when possible.
6
- */
7
-
8
- const { getTask } = require('../../task-lib/store.js');
9
- const { sendInput } = require('../attach/send-input');
10
- const { isSocketAlive } = require('../attach/socket-discovery');
11
-
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ function isTaskStoreModule(value) {
6
+ return (typeof value === 'object' &&
7
+ value !== null &&
8
+ 'getTask' in value &&
9
+ typeof value.getTask === 'function');
10
+ }
11
+ const taskStoreModule = require('../../task-lib/store.js');
12
+ if (!isTaskStoreModule(taskStoreModule)) {
13
+ throw new TypeError('task store must export getTask');
14
+ }
15
+ const getTask = taskStoreModule.getTask;
16
+ const send_input_1 = __importDefault(require("../attach/send-input"));
17
+ const { sendInput } = send_input_1.default;
18
+ const socket_discovery_1 = __importDefault(require("../attach/socket-discovery"));
19
+ const { isSocketAlive } = socket_discovery_1.default;
12
20
  const DEFAULT_TIMEOUT_MS = 1500;
13
-
14
- function buildResult({ status, reason = null, method = null, taskId = null }) {
15
- return {
16
- status,
17
- reason,
18
- method,
19
- taskId,
20
- };
21
+ function buildResult({ status, reason = null, method = null, taskId = null, }) {
22
+ return {
23
+ status,
24
+ reason,
25
+ method,
26
+ taskId,
27
+ };
21
28
  }
22
-
23
29
  function ensureValidInputs(agent, text) {
24
- if (!agent) {
25
- throw new Error('AgentInputInjector: agent is required');
26
- }
27
- if (typeof text !== 'string') {
28
- throw new Error('AgentInputInjector: text must be a string');
29
- }
30
- if (!text.trim()) {
31
- throw new Error('AgentInputInjector: text cannot be empty');
32
- }
30
+ if (!agent) {
31
+ throw new Error('AgentInputInjector: agent is required');
32
+ }
33
+ if (typeof text !== 'string') {
34
+ throw new Error('AgentInputInjector: text must be a string');
35
+ }
36
+ if (!text.trim()) {
37
+ throw new Error('AgentInputInjector: text cannot be empty');
38
+ }
39
+ return { agent, text };
33
40
  }
34
-
35
41
  function buildUnsupported(reason, taskId) {
36
- return buildResult({
37
- status: 'unsupported',
38
- reason,
39
- taskId,
40
- });
42
+ return buildResult({
43
+ status: 'unsupported',
44
+ reason,
45
+ taskId,
46
+ });
41
47
  }
42
-
43
48
  function getTaskId(agent) {
44
- return agent.currentTaskId || null;
49
+ return agent.currentTaskId || null;
45
50
  }
46
-
47
51
  function checkIsolation(agent, taskId) {
48
- if (agent.isolation?.enabled) {
49
- return buildUnsupported('isolation-enabled', taskId);
50
- }
51
- return null;
52
- }
53
-
54
- function checkTaskId(taskId) {
55
- if (!taskId) {
56
- return buildUnsupported('no-current-task', null);
57
- }
58
- return null;
59
- }
60
-
61
- function checkTaskInfo(taskInfo, taskId) {
62
- if (!taskInfo) {
63
- return buildUnsupported('task-not-found', taskId);
64
- }
65
- if (!taskInfo.socketPath) {
66
- return buildUnsupported('no-socket', taskId);
67
- }
68
- if (!taskInfo.attachable) {
69
- return buildUnsupported('task-not-attachable', taskId);
70
- }
71
- return null;
52
+ if (agent.isolation?.enabled) {
53
+ return buildUnsupported('isolation-enabled', taskId);
54
+ }
55
+ return null;
72
56
  }
73
-
74
57
  async function checkSocketAlive(socketPath, taskId) {
75
- const socketAlive = await isSocketAlive(socketPath);
76
- if (!socketAlive) {
77
- return buildUnsupported('socket-not-alive', taskId);
78
- }
79
- return null;
58
+ const socketAlive = await isSocketAlive(socketPath);
59
+ if (!socketAlive) {
60
+ return buildUnsupported('socket-not-alive', taskId);
61
+ }
62
+ return null;
80
63
  }
81
-
82
64
  function normalizePayload(text) {
83
- return text.endsWith('\n') ? text : `${text}\n`;
65
+ return text.endsWith('\n') ? text : `${text}\n`;
84
66
  }
85
-
86
67
  function resolveTimeout(options) {
87
- return options.timeoutMs || DEFAULT_TIMEOUT_MS;
68
+ return options.timeoutMs || DEFAULT_TIMEOUT_MS;
88
69
  }
89
-
90
70
  function buildInjected(taskId) {
91
- return buildResult({
92
- status: 'injected',
93
- method: 'pty',
94
- taskId,
95
- });
71
+ return buildResult({
72
+ status: 'injected',
73
+ method: 'pty',
74
+ taskId,
75
+ });
96
76
  }
97
-
98
77
  function buildSendFailure(reason, taskId) {
99
- return buildResult({
100
- status: 'unsupported',
101
- reason: reason || 'send-failed',
102
- method: 'pty',
103
- taskId,
104
- });
78
+ return buildResult({
79
+ status: 'unsupported',
80
+ reason: reason || 'send-failed',
81
+ method: 'pty',
82
+ taskId,
83
+ });
105
84
  }
106
-
107
- async function injectInput(agent, text, options = {}) {
108
- ensureValidInputs(agent, text);
109
-
110
- const taskId = getTaskId(agent);
111
- const isolationResult = checkIsolation(agent, taskId);
112
- if (isolationResult) return isolationResult;
113
-
114
- const taskIdResult = checkTaskId(taskId);
115
- if (taskIdResult) return taskIdResult;
116
-
117
- const taskInfo = getTask(taskId);
118
- const taskInfoResult = checkTaskInfo(taskInfo, taskId);
119
- if (taskInfoResult) return taskInfoResult;
120
-
121
- const socketResult = await checkSocketAlive(taskInfo.socketPath, taskId);
122
- if (socketResult) return socketResult;
123
-
124
- const payload = normalizePayload(text);
125
- const timeoutMs = resolveTimeout(options);
126
- const result = await sendInput({
127
- socketPath: taskInfo.socketPath,
128
- data: payload,
129
- timeoutMs,
130
- });
131
-
132
- if (!result.ok) {
133
- return buildSendFailure(result.error, taskId);
134
- }
135
-
136
- return buildInjected(taskId);
85
+ async function injectInput(agentValue, textValue, options = {}) {
86
+ const { agent, text } = ensureValidInputs(agentValue, textValue);
87
+ const taskId = getTaskId(agent);
88
+ const isolationResult = checkIsolation(agent, taskId);
89
+ if (isolationResult)
90
+ return isolationResult;
91
+ if (!taskId) {
92
+ return buildUnsupported('no-current-task', null);
93
+ }
94
+ const taskInfo = getTask(taskId);
95
+ if (!taskInfo) {
96
+ return buildUnsupported('task-not-found', taskId);
97
+ }
98
+ if (!taskInfo.socketPath) {
99
+ return buildUnsupported('no-socket', taskId);
100
+ }
101
+ if (!taskInfo.attachable) {
102
+ return buildUnsupported('task-not-attachable', taskId);
103
+ }
104
+ const socketPath = taskInfo.socketPath;
105
+ const socketResult = await checkSocketAlive(socketPath, taskId);
106
+ if (socketResult)
107
+ return socketResult;
108
+ const payload = normalizePayload(text);
109
+ const timeoutMs = resolveTimeout(options);
110
+ const result = await sendInput({
111
+ socketPath,
112
+ data: payload,
113
+ timeoutMs,
114
+ });
115
+ if (!result.ok) {
116
+ return buildSendFailure(result.error, taskId);
117
+ }
118
+ return buildInjected(taskId);
137
119
  }
138
-
139
120
  module.exports = {
140
- injectInput,
121
+ injectInput,
141
122
  };
@@ -0,0 +1,195 @@
1
+ type InjectionStatus = 'unsupported' | 'injected';
2
+ type InjectionMethod = 'pty';
3
+
4
+ interface InjectionResult {
5
+ status: InjectionStatus;
6
+ reason: string | null;
7
+ method: InjectionMethod | null;
8
+ taskId: string | null;
9
+ }
10
+
11
+ interface BuildResultParams {
12
+ status: InjectionStatus;
13
+ reason?: string | null | undefined;
14
+ method?: InjectionMethod | null | undefined;
15
+ taskId?: string | null | undefined;
16
+ }
17
+
18
+ interface AgentInputTarget {
19
+ currentTaskId?: string | null;
20
+ isolation?: {
21
+ enabled?: unknown;
22
+ } | null;
23
+ }
24
+
25
+ interface TaskInfo {
26
+ socketPath?: string | null;
27
+ attachable?: unknown;
28
+ }
29
+
30
+ interface TaskStoreModule {
31
+ getTask(taskId: string): TaskInfo | null | undefined;
32
+ }
33
+
34
+ interface InjectInputOptions {
35
+ timeoutMs?: number;
36
+ }
37
+
38
+ function isTaskStoreModule(value: unknown): value is TaskStoreModule {
39
+ return (
40
+ typeof value === 'object' &&
41
+ value !== null &&
42
+ 'getTask' in value &&
43
+ typeof value.getTask === 'function'
44
+ );
45
+ }
46
+
47
+ const taskStoreModule: unknown = require('../../task-lib/store.js');
48
+ if (!isTaskStoreModule(taskStoreModule)) {
49
+ throw new TypeError('task store must export getTask');
50
+ }
51
+ const getTask = taskStoreModule.getTask;
52
+
53
+ import sendInputModule from '../attach/send-input';
54
+
55
+ const { sendInput } = sendInputModule;
56
+
57
+ import socketDiscovery from '../attach/socket-discovery';
58
+
59
+ const { isSocketAlive } = socketDiscovery;
60
+
61
+ const DEFAULT_TIMEOUT_MS = 1500;
62
+
63
+ function buildResult({
64
+ status,
65
+ reason = null,
66
+ method = null,
67
+ taskId = null,
68
+ }: BuildResultParams): InjectionResult {
69
+ return {
70
+ status,
71
+ reason,
72
+ method,
73
+ taskId,
74
+ };
75
+ }
76
+
77
+ function ensureValidInputs(
78
+ agent: AgentInputTarget | null | undefined,
79
+ text: unknown
80
+ ): { agent: AgentInputTarget; text: string } {
81
+ if (!agent) {
82
+ throw new Error('AgentInputInjector: agent is required');
83
+ }
84
+ if (typeof text !== 'string') {
85
+ throw new Error('AgentInputInjector: text must be a string');
86
+ }
87
+ if (!text.trim()) {
88
+ throw new Error('AgentInputInjector: text cannot be empty');
89
+ }
90
+ return { agent, text };
91
+ }
92
+
93
+ function buildUnsupported(reason: string, taskId: string | null): InjectionResult {
94
+ return buildResult({
95
+ status: 'unsupported',
96
+ reason,
97
+ taskId,
98
+ });
99
+ }
100
+
101
+ function getTaskId(agent: AgentInputTarget): string | null {
102
+ return agent.currentTaskId || null;
103
+ }
104
+
105
+ function checkIsolation(agent: AgentInputTarget, taskId: string | null): InjectionResult | null {
106
+ if (agent.isolation?.enabled) {
107
+ return buildUnsupported('isolation-enabled', taskId);
108
+ }
109
+ return null;
110
+ }
111
+
112
+ async function checkSocketAlive(
113
+ socketPath: string,
114
+ taskId: string
115
+ ): Promise<InjectionResult | null> {
116
+ const socketAlive = await isSocketAlive(socketPath);
117
+ if (!socketAlive) {
118
+ return buildUnsupported('socket-not-alive', taskId);
119
+ }
120
+ return null;
121
+ }
122
+
123
+ function normalizePayload(text: string): string {
124
+ return text.endsWith('\n') ? text : `${text}\n`;
125
+ }
126
+
127
+ function resolveTimeout(options: InjectInputOptions): number {
128
+ return options.timeoutMs || DEFAULT_TIMEOUT_MS;
129
+ }
130
+
131
+ function buildInjected(taskId: string): InjectionResult {
132
+ return buildResult({
133
+ status: 'injected',
134
+ method: 'pty',
135
+ taskId,
136
+ });
137
+ }
138
+
139
+ function buildSendFailure(reason: string | null | undefined, taskId: string): InjectionResult {
140
+ return buildResult({
141
+ status: 'unsupported',
142
+ reason: reason || 'send-failed',
143
+ method: 'pty',
144
+ taskId,
145
+ });
146
+ }
147
+
148
+ async function injectInput(
149
+ agentValue: AgentInputTarget | null | undefined,
150
+ textValue: unknown,
151
+ options: InjectInputOptions = {}
152
+ ): Promise<InjectionResult> {
153
+ const { agent, text } = ensureValidInputs(agentValue, textValue);
154
+
155
+ const taskId = getTaskId(agent);
156
+ const isolationResult = checkIsolation(agent, taskId);
157
+ if (isolationResult) return isolationResult;
158
+
159
+ if (!taskId) {
160
+ return buildUnsupported('no-current-task', null);
161
+ }
162
+
163
+ const taskInfo = getTask(taskId);
164
+ if (!taskInfo) {
165
+ return buildUnsupported('task-not-found', taskId);
166
+ }
167
+ if (!taskInfo.socketPath) {
168
+ return buildUnsupported('no-socket', taskId);
169
+ }
170
+ if (!taskInfo.attachable) {
171
+ return buildUnsupported('task-not-attachable', taskId);
172
+ }
173
+
174
+ const socketPath = taskInfo.socketPath;
175
+ const socketResult = await checkSocketAlive(socketPath, taskId);
176
+ if (socketResult) return socketResult;
177
+
178
+ const payload = normalizePayload(text);
179
+ const timeoutMs = resolveTimeout(options);
180
+ const result = await sendInput({
181
+ socketPath,
182
+ data: payload,
183
+ timeoutMs,
184
+ });
185
+
186
+ if (!result.ok) {
187
+ return buildSendFailure(result.error, taskId);
188
+ }
189
+
190
+ return buildInjected(taskId);
191
+ }
192
+
193
+ export = {
194
+ injectInput,
195
+ };
@@ -1,93 +1,89 @@
1
- const { isPlatformSupported } = require('./agent-stuck-detector');
2
-
1
+ "use strict";
2
+ function isAgentStuckDetectorModule(value) {
3
+ return (typeof value === 'object' &&
4
+ value !== null &&
5
+ 'isPlatformSupported' in value &&
6
+ typeof value.isPlatformSupported === 'function');
7
+ }
8
+ const agentStuckDetectorModule = require('./agent-stuck-detector');
9
+ if (!isAgentStuckDetectorModule(agentStuckDetectorModule)) {
10
+ throw new TypeError('agent-stuck-detector must export isPlatformSupported');
11
+ }
12
+ const isPlatformSupported = agentStuckDetectorModule.isPlatformSupported;
3
13
  function hasRecoverableTask(agent) {
4
- return (
5
- Boolean(agent.currentTask) ||
6
- Boolean(agent.isolation?.enabled && agent.currentTaskId) ||
7
- agent.nestedExecutions?.hasActive === true
8
- );
14
+ return (Boolean(agent.currentTask) ||
15
+ Boolean(agent.isolation?.enabled && agent.currentTaskId) ||
16
+ agent.nestedExecutions?.hasActive === true);
9
17
  }
10
-
11
18
  function handlePendingTermination(agent, settings, now, attemptTermination) {
12
- if (!agent.livenessTerminationContext) return false;
13
- if (now >= agent.livenessTerminationRetryAt) attemptTermination(agent, settings);
14
- return true;
19
+ if (!agent.livenessTerminationContext)
20
+ return false;
21
+ if (now >= agent.livenessTerminationRetryAt)
22
+ attemptTermination(agent, settings);
23
+ return true;
15
24
  }
16
-
17
25
  function taskTiming(agent, now) {
18
- const taskStartedAt = agent.taskStartedAt || agent.lastOutputTime || now;
19
- const lastOutputTime = agent.lastOutputTime || taskStartedAt;
20
- return {
21
- taskRuntime: now - taskStartedAt,
22
- timeSinceLastOutput: now - lastOutputTime,
23
- lastOutputTime,
24
- };
26
+ const taskStartedAt = agent.taskStartedAt || agent.lastOutputTime || now;
27
+ const lastOutputTime = agent.lastOutputTime || taskStartedAt;
28
+ return {
29
+ taskRuntime: now - taskStartedAt,
30
+ timeSinceLastOutput: now - lastOutputTime,
31
+ lastOutputTime,
32
+ };
25
33
  }
26
-
27
34
  function handleTaskTimeout(context, timing) {
28
- const { agent, settings, configuredTimeout, beginTermination } = context;
29
- if (!configuredTimeout || timing.taskRuntime < configuredTimeout) return false;
30
- beginTermination(
31
- agent,
32
- settings,
33
- `Task timed out after ${configuredTimeout}ms`,
34
- 'AGENT_TASK_TIMEOUT',
35
- {
36
- taskId: agent.currentTaskId,
37
- taskRuntime: timing.taskRuntime,
38
- timeout: configuredTimeout,
39
- }
40
- );
41
- return true;
35
+ const { agent, settings, configuredTimeout, beginTermination } = context;
36
+ if (!configuredTimeout || timing.taskRuntime < configuredTimeout)
37
+ return false;
38
+ beginTermination(agent, settings, `Task timed out after ${configuredTimeout}ms`, 'AGENT_TASK_TIMEOUT', {
39
+ taskId: agent.currentTaskId,
40
+ taskRuntime: timing.taskRuntime,
41
+ timeout: configuredTimeout,
42
+ });
43
+ return true;
42
44
  }
43
-
44
45
  function publishStaleWarning(context, timing) {
45
- const { agent, staleDuration, warningsBeforeKill } = context;
46
- agent.consecutiveStaleWarnings += 1;
47
- agent._publishLifecycle('AGENT_STALE_WARNING', {
48
- taskId: agent.currentTaskId,
49
- timeSinceLastOutput: timing.timeSinceLastOutput,
50
- staleDuration,
51
- lastOutputTime: timing.lastOutputTime,
52
- consecutiveWarnings: agent.consecutiveStaleWarnings,
53
- warningsBeforeKill,
54
- processDiagnosticsAvailable: isPlatformSupported(),
55
- analysis: `Provider produced no output for ${timing.timeSinceLastOutput}ms`,
56
- });
46
+ const { agent, staleDuration, warningsBeforeKill } = context;
47
+ agent.consecutiveStaleWarnings += 1;
48
+ agent._publishLifecycle('AGENT_STALE_WARNING', {
49
+ taskId: agent.currentTaskId,
50
+ timeSinceLastOutput: timing.timeSinceLastOutput,
51
+ staleDuration,
52
+ lastOutputTime: timing.lastOutputTime,
53
+ consecutiveWarnings: agent.consecutiveStaleWarnings,
54
+ warningsBeforeKill,
55
+ processDiagnosticsAvailable: isPlatformSupported(),
56
+ analysis: `Provider produced no output for ${timing.timeSinceLastOutput}ms`,
57
+ });
57
58
  }
58
-
59
59
  function terminateForInactivity(context, timing) {
60
- const { agent, settings, staleDuration, beginTermination } = context;
61
- beginTermination(
62
- agent,
63
- settings,
64
- `Provider produced no output for ${timing.timeSinceLastOutput}ms`,
65
- 'PROVIDER_INACTIVITY_TIMEOUT',
66
- {
67
- taskId: agent.currentTaskId,
68
- timeSinceLastOutput: timing.timeSinceLastOutput,
69
- staleDuration,
70
- consecutiveWarnings: agent.consecutiveStaleWarnings,
71
- }
72
- );
60
+ const { agent, settings, staleDuration, beginTermination } = context;
61
+ beginTermination(agent, settings, `Provider produced no output for ${timing.timeSinceLastOutput}ms`, 'PROVIDER_INACTIVITY_TIMEOUT', {
62
+ taskId: agent.currentTaskId,
63
+ timeSinceLastOutput: timing.timeSinceLastOutput,
64
+ staleDuration,
65
+ consecutiveWarnings: agent.consecutiveStaleWarnings,
66
+ });
73
67
  }
74
-
75
68
  function createLivenessPoll(context) {
76
- const { agent, settings, staleDuration, warningsBeforeKill, attemptTermination } = context;
77
- return () => {
78
- if (!hasRecoverableTask(agent) || agent.livenessTerminationStarted) return;
79
- const now = Date.now();
80
- if (handlePendingTermination(agent, settings, now, attemptTermination)) return;
81
- const timing = taskTiming(agent, now);
82
- if (handleTaskTimeout(context, timing)) return;
83
- if (timing.timeSinceLastOutput < staleDuration) {
84
- agent.consecutiveStaleWarnings = 0;
85
- return;
86
- }
87
- publishStaleWarning(context, timing);
88
- if (agent.consecutiveStaleWarnings < warningsBeforeKill) return;
89
- terminateForInactivity(context, timing);
90
- };
69
+ const { agent, settings, staleDuration, warningsBeforeKill, attemptTermination } = context;
70
+ return () => {
71
+ if (!hasRecoverableTask(agent) || agent.livenessTerminationStarted)
72
+ return;
73
+ const now = Date.now();
74
+ if (handlePendingTermination(agent, settings, now, attemptTermination))
75
+ return;
76
+ const timing = taskTiming(agent, now);
77
+ if (handleTaskTimeout(context, timing))
78
+ return;
79
+ if (timing.timeSinceLastOutput < staleDuration) {
80
+ agent.consecutiveStaleWarnings = 0;
81
+ return;
82
+ }
83
+ publishStaleWarning(context, timing);
84
+ if (agent.consecutiveStaleWarnings < warningsBeforeKill)
85
+ return;
86
+ terminateForInactivity(context, timing);
87
+ };
91
88
  }
92
-
93
89
  module.exports = { createLivenessPoll };