clinkx 1.0.0 → 1.1.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 (331) hide show
  1. package/CHANGELOG.md +86 -0
  2. package/README.md +72 -0
  3. package/clinkx-workflows/dist/chairman-knobs.d.ts +24 -0
  4. package/clinkx-workflows/dist/chairman-knobs.js +27 -0
  5. package/clinkx-workflows/dist/chairman-knobs.js.map +1 -0
  6. package/clinkx-workflows/dist/clink-client.d.ts +10 -0
  7. package/clinkx-workflows/dist/clink-client.js +39 -1
  8. package/clinkx-workflows/dist/clink-client.js.map +1 -1
  9. package/clinkx-workflows/dist/config.d.ts +29 -1
  10. package/clinkx-workflows/dist/config.js +35 -2
  11. package/clinkx-workflows/dist/config.js.map +1 -1
  12. package/clinkx-workflows/dist/context-preflight.d.ts +5 -0
  13. package/clinkx-workflows/dist/context-preflight.js.map +1 -1
  14. package/clinkx-workflows/dist/council-execution-policy.d.ts +68 -0
  15. package/clinkx-workflows/dist/council-execution-policy.js +110 -0
  16. package/clinkx-workflows/dist/council-execution-policy.js.map +1 -0
  17. package/clinkx-workflows/dist/council-expander.d.ts +9 -8
  18. package/clinkx-workflows/dist/council-expander.js +18 -9
  19. package/clinkx-workflows/dist/council-expander.js.map +1 -1
  20. package/clinkx-workflows/dist/dashboard/activity-contract.d.ts +5557 -4
  21. package/clinkx-workflows/dist/dashboard/activity-contract.js +55 -3
  22. package/clinkx-workflows/dist/dashboard/activity-contract.js.map +1 -1
  23. package/clinkx-workflows/dist/dashboard/activity-reader.d.ts +9 -5
  24. package/clinkx-workflows/dist/dashboard/activity-reader.js +15 -2
  25. package/clinkx-workflows/dist/dashboard/activity-reader.js.map +1 -1
  26. package/clinkx-workflows/dist/dashboard/api-routes.d.ts +4 -0
  27. package/clinkx-workflows/dist/dashboard/api-routes.js +133 -25
  28. package/clinkx-workflows/dist/dashboard/api-routes.js.map +1 -1
  29. package/clinkx-workflows/dist/dashboard/context-builder-invocation-contract.d.ts +3865 -0
  30. package/clinkx-workflows/dist/dashboard/context-builder-invocation-contract.js +69 -0
  31. package/clinkx-workflows/dist/dashboard/context-builder-invocation-contract.js.map +1 -0
  32. package/clinkx-workflows/dist/dashboard/context-run-reader.d.ts +36 -2
  33. package/clinkx-workflows/dist/dashboard/context-run-reader.js +142 -19
  34. package/clinkx-workflows/dist/dashboard/context-run-reader.js.map +1 -1
  35. package/clinkx-workflows/dist/dashboard/contracts.d.ts +20027 -480
  36. package/clinkx-workflows/dist/dashboard/contracts.js +133 -6
  37. package/clinkx-workflows/dist/dashboard/contracts.js.map +1 -1
  38. package/clinkx-workflows/dist/dashboard/index.d.ts +4 -0
  39. package/clinkx-workflows/dist/dashboard/index.js +4 -0
  40. package/clinkx-workflows/dist/dashboard/index.js.map +1 -1
  41. package/clinkx-workflows/dist/dashboard/invocation-contract.d.ts +786 -0
  42. package/clinkx-workflows/dist/dashboard/invocation-contract.js +201 -0
  43. package/clinkx-workflows/dist/dashboard/invocation-contract.js.map +1 -0
  44. package/clinkx-workflows/dist/dashboard/lazy-content.d.ts +14 -1
  45. package/clinkx-workflows/dist/dashboard/lazy-content.js +53 -2
  46. package/clinkx-workflows/dist/dashboard/lazy-content.js.map +1 -1
  47. package/clinkx-workflows/dist/dashboard/native-transcript/contract.d.ts +90 -0
  48. package/clinkx-workflows/dist/dashboard/native-transcript/contract.js +31 -0
  49. package/clinkx-workflows/dist/dashboard/native-transcript/contract.js.map +1 -0
  50. package/clinkx-workflows/dist/dashboard/native-transcript/projection.d.ts +12 -0
  51. package/clinkx-workflows/dist/dashboard/native-transcript/projection.js +286 -0
  52. package/clinkx-workflows/dist/dashboard/native-transcript/projection.js.map +1 -0
  53. package/clinkx-workflows/dist/dashboard/progress-report-contract.d.ts +147 -4
  54. package/clinkx-workflows/dist/dashboard/progress-report-contract.js +11 -11
  55. package/clinkx-workflows/dist/dashboard/progress-report-contract.js.map +1 -1
  56. package/clinkx-workflows/dist/dashboard/progress-report-reader.js +4 -56
  57. package/clinkx-workflows/dist/dashboard/progress-report-reader.js.map +1 -1
  58. package/clinkx-workflows/dist/dashboard/progress-report-status-store.d.ts +2 -1
  59. package/clinkx-workflows/dist/dashboard/progress-report-status-store.js +6 -5
  60. package/clinkx-workflows/dist/dashboard/progress-report-status-store.js.map +1 -1
  61. package/clinkx-workflows/dist/dashboard/prompt-builder-library-contract.d.ts +194 -0
  62. package/clinkx-workflows/dist/dashboard/prompt-builder-library-contract.js +89 -0
  63. package/clinkx-workflows/dist/dashboard/prompt-builder-library-contract.js.map +1 -0
  64. package/clinkx-workflows/dist/dashboard/prompt-builder-library-store.d.ts +26 -0
  65. package/clinkx-workflows/dist/dashboard/prompt-builder-library-store.js +102 -0
  66. package/clinkx-workflows/dist/dashboard/prompt-builder-library-store.js.map +1 -0
  67. package/clinkx-workflows/dist/dashboard/request-admission.js +4 -0
  68. package/clinkx-workflows/dist/dashboard/request-admission.js.map +1 -1
  69. package/clinkx-workflows/dist/dashboard/scanner.d.ts +3 -0
  70. package/clinkx-workflows/dist/dashboard/scanner.js +52 -8
  71. package/clinkx-workflows/dist/dashboard/scanner.js.map +1 -1
  72. package/clinkx-workflows/dist/dashboard/server-factory.d.ts +14 -1
  73. package/clinkx-workflows/dist/dashboard/server-factory.js +73 -21
  74. package/clinkx-workflows/dist/dashboard/server-factory.js.map +1 -1
  75. package/clinkx-workflows/dist/dashboard/session-log-contract.d.ts +223 -56
  76. package/clinkx-workflows/dist/dashboard/session-log-contract.js +26 -0
  77. package/clinkx-workflows/dist/dashboard/session-log-contract.js.map +1 -1
  78. package/clinkx-workflows/dist/dashboard/session-log-journal.js +10 -3
  79. package/clinkx-workflows/dist/dashboard/session-log-journal.js.map +1 -1
  80. package/clinkx-workflows/dist/dashboard/session-log-redaction.d.ts +9 -1
  81. package/clinkx-workflows/dist/dashboard/session-log-redaction.js +793 -59
  82. package/clinkx-workflows/dist/dashboard/session-log-redaction.js.map +1 -1
  83. package/clinkx-workflows/dist/dashboard-ui/assets/index-JPHQVtn9.js +106 -0
  84. package/clinkx-workflows/dist/dashboard-ui/assets/style-DOMHk-j6.css +1 -0
  85. package/clinkx-workflows/dist/dashboard-ui/index.html +2 -2
  86. package/clinkx-workflows/dist/delegate-finalizer-policy.d.ts +26 -0
  87. package/clinkx-workflows/dist/delegate-finalizer-policy.js +72 -0
  88. package/clinkx-workflows/dist/delegate-finalizer-policy.js.map +1 -0
  89. package/clinkx-workflows/dist/delegate-signature.d.ts +14 -0
  90. package/clinkx-workflows/dist/delegate-signature.js +14 -0
  91. package/clinkx-workflows/dist/delegate-signature.js.map +1 -0
  92. package/clinkx-workflows/dist/delegate-validate.d.ts +32 -2
  93. package/clinkx-workflows/dist/delegate-validate.js +51 -0
  94. package/clinkx-workflows/dist/delegate-validate.js.map +1 -1
  95. package/clinkx-workflows/dist/engine.d.ts +113 -3
  96. package/clinkx-workflows/dist/engine.js +476 -80
  97. package/clinkx-workflows/dist/engine.js.map +1 -1
  98. package/clinkx-workflows/dist/errors.d.ts +22 -2
  99. package/clinkx-workflows/dist/errors.js +30 -2
  100. package/clinkx-workflows/dist/errors.js.map +1 -1
  101. package/clinkx-workflows/dist/fidelity.d.ts +47 -1
  102. package/clinkx-workflows/dist/fidelity.js +54 -1
  103. package/clinkx-workflows/dist/fidelity.js.map +1 -1
  104. package/clinkx-workflows/dist/fingerprint.d.ts +24 -6
  105. package/clinkx-workflows/dist/fingerprint.js +32 -9
  106. package/clinkx-workflows/dist/fingerprint.js.map +1 -1
  107. package/clinkx-workflows/dist/index.js +53 -1
  108. package/clinkx-workflows/dist/index.js.map +1 -1
  109. package/clinkx-workflows/dist/logger.d.ts +1 -1
  110. package/clinkx-workflows/dist/logger.js +17 -3
  111. package/clinkx-workflows/dist/logger.js.map +1 -1
  112. package/clinkx-workflows/dist/monotonic-clock.d.ts +19 -0
  113. package/clinkx-workflows/dist/monotonic-clock.js +22 -0
  114. package/clinkx-workflows/dist/monotonic-clock.js.map +1 -0
  115. package/clinkx-workflows/dist/plan-review/contract.d.ts +52 -52
  116. package/clinkx-workflows/dist/plan-review/publication.d.ts +4 -4
  117. package/clinkx-workflows/dist/plan-review/run-state.d.ts +16 -16
  118. package/clinkx-workflows/dist/roster-contract.d.ts +889 -0
  119. package/clinkx-workflows/dist/roster-contract.js +180 -0
  120. package/clinkx-workflows/dist/roster-contract.js.map +1 -0
  121. package/clinkx-workflows/dist/rosters.d.ts +14 -0
  122. package/clinkx-workflows/dist/rosters.js +169 -0
  123. package/clinkx-workflows/dist/rosters.js.map +1 -0
  124. package/clinkx-workflows/dist/run-health.d.ts +7 -0
  125. package/clinkx-workflows/dist/run-health.js +25 -0
  126. package/clinkx-workflows/dist/run-health.js.map +1 -0
  127. package/clinkx-workflows/dist/schema.d.ts +64 -0
  128. package/clinkx-workflows/dist/schema.js +24 -0
  129. package/clinkx-workflows/dist/schema.js.map +1 -1
  130. package/clinkx-workflows/dist/server.js +2 -0
  131. package/clinkx-workflows/dist/server.js.map +1 -1
  132. package/clinkx-workflows/dist/shutdown.d.ts +15 -2
  133. package/clinkx-workflows/dist/shutdown.js +60 -16
  134. package/clinkx-workflows/dist/shutdown.js.map +1 -1
  135. package/clinkx-workflows/dist/state-schema.d.ts +23 -0
  136. package/clinkx-workflows/dist/state.d.ts +5 -0
  137. package/clinkx-workflows/dist/state.js +128 -21
  138. package/clinkx-workflows/dist/state.js.map +1 -1
  139. package/clinkx-workflows/dist/stdio-watchdog.d.ts +52 -0
  140. package/clinkx-workflows/dist/stdio-watchdog.js +212 -0
  141. package/clinkx-workflows/dist/stdio-watchdog.js.map +1 -0
  142. package/clinkx-workflows/dist/types.d.ts +6 -0
  143. package/clinkx-workflows/dist/validators/council.d.ts +50 -50
  144. package/clinkx-workflows/dist/validators/plan-review.d.ts +3 -3
  145. package/clinkx-workflows/dist/workflow-tools.d.ts +70 -0
  146. package/clinkx-workflows/dist/workflow-tools.js +760 -168
  147. package/clinkx-workflows/dist/workflow-tools.js.map +1 -1
  148. package/clinkx-workflows/templates/council/answer-chairman.txt +3 -0
  149. package/clinkx-workflows/templates/council/answer-cross-reviewer.txt +3 -0
  150. package/clinkx-workflows/templates/council/answer-specialist.txt +3 -0
  151. package/clinkx-workflows/templates/council/chairman.txt +3 -0
  152. package/clinkx-workflows/templates/council/code-review-chairman.txt +3 -0
  153. package/clinkx-workflows/templates/council/code-review-cross-reviewer.txt +3 -0
  154. package/clinkx-workflows/templates/council/code-review-reviewer.txt +3 -0
  155. package/clinkx-workflows/templates/council/debug-chairman.txt +3 -0
  156. package/clinkx-workflows/templates/council/debug-cross-reviewer.txt +3 -0
  157. package/clinkx-workflows/templates/council/debug-debugger.txt +3 -0
  158. package/clinkx-workflows/templates/council/discover-analyst.txt +3 -0
  159. package/clinkx-workflows/templates/council/discover-chairman.txt +3 -0
  160. package/clinkx-workflows/templates/council/discover-cross-reviewer.txt +3 -0
  161. package/clinkx-workflows/templates/council/member.txt +3 -0
  162. package/clinkx-workflows/templates/council/plan-review-chairman.txt +3 -0
  163. package/clinkx-workflows/templates/council/plan-review-cross-reviewer.txt +3 -0
  164. package/clinkx-workflows/templates/council/plan-review-reviewer.txt +3 -0
  165. package/clinkx-workflows/templates/council/reviewer.txt +3 -0
  166. package/clinkx-workflows/workflows/council-answer.yaml +3 -0
  167. package/clinkx-workflows/workflows/council-code-review.yaml +3 -0
  168. package/clinkx-workflows/workflows/council-debug.yaml +3 -0
  169. package/clinkx-workflows/workflows/council-default.yaml +7 -0
  170. package/clinkx-workflows/workflows/council-discover.yaml +3 -0
  171. package/clinkx-workflows/workflows/council-plan-review.yaml +3 -0
  172. package/conf/adapters/agy.json +9 -2
  173. package/conf/adapters/claude.json +7 -0
  174. package/conf/adapters/codex.json +7 -0
  175. package/conf/adapters/glm.json +19 -3
  176. package/conf/adapters/grok.json +9 -2
  177. package/conf/adapters/hapi/agy.json +9 -2
  178. package/conf/adapters/hapi/claude.json +7 -0
  179. package/conf/adapters/hapi/codex.json +7 -0
  180. package/conf/adapters/hapi/glm.json +20 -4
  181. package/conf/rosters/default-council.json +21 -0
  182. package/dist/activity-journal.d.ts +17 -3
  183. package/dist/activity-journal.js +404 -79
  184. package/dist/activity-journal.js.map +1 -1
  185. package/dist/codex/agent-tools.js +36 -0
  186. package/dist/codex/agent-tools.js.map +1 -1
  187. package/dist/codex/app-server-client.d.ts +3 -0
  188. package/dist/codex/app-server-client.js +11 -0
  189. package/dist/codex/app-server-client.js.map +1 -1
  190. package/dist/codex/app-server-registry.d.ts +18 -0
  191. package/dist/codex/app-server-registry.js +88 -2
  192. package/dist/codex/app-server-registry.js.map +1 -1
  193. package/dist/codex/client-types.d.ts +7 -1
  194. package/dist/codex/protocol.d.ts +4 -4
  195. package/dist/config.d.ts +220 -23
  196. package/dist/config.js +104 -1
  197. package/dist/config.js.map +1 -1
  198. package/dist/context-builder/bundle.d.ts +13 -0
  199. package/dist/context-builder/bundle.js +46 -0
  200. package/dist/context-builder/bundle.js.map +1 -1
  201. package/dist/context-builder/delegate-finalizer-effective.d.ts +33 -0
  202. package/dist/context-builder/delegate-finalizer-effective.js +82 -0
  203. package/dist/context-builder/delegate-finalizer-effective.js.map +1 -0
  204. package/dist/context-builder/delegate-packet.d.ts +18 -0
  205. package/dist/context-builder/delegate-packet.js +73 -9
  206. package/dist/context-builder/delegate-packet.js.map +1 -1
  207. package/dist/context-builder/delegate-reconstruction.d.ts +29 -0
  208. package/dist/context-builder/delegate-reconstruction.js +110 -41
  209. package/dist/context-builder/delegate-reconstruction.js.map +1 -1
  210. package/dist/context-builder/delegate-validation.d.ts +31 -0
  211. package/dist/context-builder/delegate-validation.js +87 -10
  212. package/dist/context-builder/delegate-validation.js.map +1 -1
  213. package/dist/context-builder/delegate.d.ts +9 -0
  214. package/dist/context-builder/delegate.js +210 -59
  215. package/dist/context-builder/delegate.js.map +1 -1
  216. package/dist/context-builder/diagnostics.d.ts +1 -1
  217. package/dist/context-builder/diagnostics.js.map +1 -1
  218. package/dist/context-builder/discovery-progress.d.ts +25 -0
  219. package/dist/context-builder/discovery-progress.js +64 -0
  220. package/dist/context-builder/discovery-progress.js.map +1 -0
  221. package/dist/context-builder/discovery-watchdog.d.ts +15 -0
  222. package/dist/context-builder/discovery-watchdog.js +39 -0
  223. package/dist/context-builder/discovery-watchdog.js.map +1 -0
  224. package/dist/context-builder/discovery.d.ts +7 -0
  225. package/dist/context-builder/discovery.js +119 -7
  226. package/dist/context-builder/discovery.js.map +1 -1
  227. package/dist/context-builder/external-gaps.d.ts +73 -0
  228. package/dist/context-builder/external-gaps.js +248 -0
  229. package/dist/context-builder/external-gaps.js.map +1 -0
  230. package/dist/context-builder/globs.d.ts +1 -0
  231. package/dist/context-builder/globs.js +15 -0
  232. package/dist/context-builder/globs.js.map +1 -1
  233. package/dist/context-builder/handler.d.ts +42 -1
  234. package/dist/context-builder/handler.js +690 -62
  235. package/dist/context-builder/handler.js.map +1 -1
  236. package/dist/context-builder/invocation-sidecar.d.ts +41 -0
  237. package/dist/context-builder/invocation-sidecar.js +189 -0
  238. package/dist/context-builder/invocation-sidecar.js.map +1 -0
  239. package/dist/context-builder/lifecycle-contract.d.ts +51 -51
  240. package/dist/context-builder/mutation-lock.d.ts +32 -0
  241. package/dist/context-builder/mutation-lock.js +321 -0
  242. package/dist/context-builder/mutation-lock.js.map +1 -0
  243. package/dist/context-builder/review-coverage.d.ts +32 -0
  244. package/dist/context-builder/review-coverage.js +130 -23
  245. package/dist/context-builder/review-coverage.js.map +1 -1
  246. package/dist/context-builder/schema.d.ts +76 -1
  247. package/dist/context-builder/schema.js +21 -1
  248. package/dist/context-builder/schema.js.map +1 -1
  249. package/dist/context-builder/secrets.d.ts +31 -0
  250. package/dist/context-builder/secrets.js +865 -83
  251. package/dist/context-builder/secrets.js.map +1 -1
  252. package/dist/context-builder/status.d.ts +1 -1
  253. package/dist/context-builder/status.js +1 -0
  254. package/dist/context-builder/status.js.map +1 -1
  255. package/dist/context-builder/storage.d.ts +29 -5
  256. package/dist/context-builder/storage.js +311 -236
  257. package/dist/context-builder/storage.js.map +1 -1
  258. package/dist/context-builder/versions.d.ts +19 -4
  259. package/dist/context-builder/versions.js +19 -4
  260. package/dist/context-builder/versions.js.map +1 -1
  261. package/dist/context-builder/workflow-runner.d.ts +6 -0
  262. package/dist/context-builder/workflow-runner.js +363 -173
  263. package/dist/context-builder/workflow-runner.js.map +1 -1
  264. package/dist/dashboard-adapter-catalog.js +7 -0
  265. package/dist/dashboard-adapter-catalog.js.map +1 -1
  266. package/dist/dashboard-cli.d.ts +2 -0
  267. package/dist/dashboard-cli.js +40 -2
  268. package/dist/dashboard-cli.js.map +1 -1
  269. package/dist/dashboard-companion/client.d.ts +1 -0
  270. package/dist/dashboard-companion/client.js +22 -3
  271. package/dist/dashboard-companion/client.js.map +1 -1
  272. package/dist/dashboard-companion/protocol.js +4 -1
  273. package/dist/dashboard-companion/protocol.js.map +1 -1
  274. package/dist/dashboard-gateway/index.d.ts +1 -0
  275. package/dist/dashboard-gateway/index.js +33 -2
  276. package/dist/dashboard-gateway/index.js.map +1 -1
  277. package/dist/handler.js +5 -1
  278. package/dist/handler.js.map +1 -1
  279. package/dist/index.d.ts +18 -1
  280. package/dist/index.js +145 -7
  281. package/dist/index.js.map +1 -1
  282. package/dist/logger.d.ts +1 -1
  283. package/dist/logger.js +18 -3
  284. package/dist/logger.js.map +1 -1
  285. package/dist/parsers/agy-stream-json.d.ts +14 -0
  286. package/dist/parsers/agy-stream-json.js +172 -0
  287. package/dist/parsers/agy-stream-json.js.map +1 -0
  288. package/dist/parsers/extract.js +5 -1
  289. package/dist/parsers/extract.js.map +1 -1
  290. package/dist/parsers/observed-invocation.d.ts +20 -0
  291. package/dist/parsers/observed-invocation.js +42 -0
  292. package/dist/parsers/observed-invocation.js.map +1 -0
  293. package/dist/pipeline.d.ts +13 -0
  294. package/dist/pipeline.js +60 -10
  295. package/dist/pipeline.js.map +1 -1
  296. package/dist/progress-report/lock.d.ts +74 -0
  297. package/dist/progress-report/lock.js +343 -0
  298. package/dist/progress-report/lock.js.map +1 -0
  299. package/dist/progress-report/schema.d.ts +808 -0
  300. package/dist/progress-report/schema.js +119 -0
  301. package/dist/progress-report/schema.js.map +1 -0
  302. package/dist/progress-report/store.d.ts +66 -0
  303. package/dist/progress-report/store.js +766 -0
  304. package/dist/progress-report/store.js.map +1 -0
  305. package/dist/progress-report/tools.d.ts +20 -0
  306. package/dist/progress-report/tools.js +141 -0
  307. package/dist/progress-report/tools.js.map +1 -0
  308. package/dist/prompt-mode.d.ts +1 -1
  309. package/dist/prompt-mode.js +7 -2
  310. package/dist/prompt-mode.js.map +1 -1
  311. package/dist/runner.d.ts +7 -0
  312. package/dist/runner.js +10 -3
  313. package/dist/runner.js.map +1 -1
  314. package/dist/safety.d.ts +50 -0
  315. package/dist/safety.js +182 -1
  316. package/dist/safety.js.map +1 -1
  317. package/dist/schema.d.ts +8 -0
  318. package/dist/schema.js +20 -0
  319. package/dist/schema.js.map +1 -1
  320. package/dist/server.d.ts +6 -1
  321. package/dist/server.js +94 -8
  322. package/dist/server.js.map +1 -1
  323. package/dist/session-log-stream.d.ts +1 -1
  324. package/dist/session-log-stream.js +280 -33
  325. package/dist/session-log-stream.js.map +1 -1
  326. package/dist/stdio-activity.d.ts +28 -0
  327. package/dist/stdio-activity.js +72 -0
  328. package/dist/stdio-activity.js.map +1 -0
  329. package/package.json +2 -1
  330. package/clinkx-workflows/dist/dashboard-ui/assets/index-DOkMXTfB.js +0 -25
  331. package/clinkx-workflows/dist/dashboard-ui/assets/style-ChJsn0KD.css +0 -1
package/dist/logger.js CHANGED
@@ -1,7 +1,22 @@
1
1
  import pino from "pino";
2
2
  const LOG_LEVEL = process.env["CLINKX_LOG_LEVEL"] ?? "info";
3
- // Construct the stderr destination explicitly so we can inspect it.
4
- const stderrDestination = pino.destination({ fd: 2, sync: false });
3
+ // Use Node's stderr stream directly. SonicBoom's asynchronous destination
4
+ // installs a synchronous exit flush that can retry forever after a Darwin
5
+ // STDIO peer closes fd 2, blocking process.exit and every watchdog timer.
6
+ // Diagnostics remain best-effort; they must never prevent process teardown.
7
+ let stderrFailed = false;
8
+ process.stderr.on("error", () => {
9
+ // Keep the entrypoint's error listeners intact, but stop diagnostics from
10
+ // recursively producing EPIPE while those listeners initiate shutdown.
11
+ stderrFailed = true;
12
+ });
13
+ const stderrDestination = {
14
+ get fd() { return process.stderr.fd; },
15
+ write(message) {
16
+ if (!stderrFailed)
17
+ process.stderr.write(message);
18
+ },
19
+ };
5
20
  /**
6
21
  * ClinkX logger — writes exclusively to stderr (fd 2).
7
22
  *
@@ -16,7 +31,7 @@ export const logger = pino({
16
31
  * Startup self-check: verify logger writes to stderr, not stdout.
17
32
  * Fails fast if the invariant is violated.
18
33
  *
19
- * We inspect the pino SonicBoom destination's `fd` property
34
+ * We inspect the destination's `fd` property
20
35
  * to confirm it points at fd 2 (stderr).
21
36
  */
22
37
  export function assertStderrLogger() {
@@ -1 +1 @@
1
- {"version":3,"file":"logger.js","sourceRoot":"","sources":["../src/logger.ts"],"names":[],"mappings":"AAAA,OAAO,IAAI,MAAM,MAAM,CAAC;AAExB,MAAM,SAAS,GAAG,OAAO,CAAC,GAAG,CAAC,kBAAkB,CAAC,IAAI,MAAM,CAAC;AAE5D,oEAAoE;AACpE,MAAM,iBAAiB,GAAG,IAAI,CAAC,WAAW,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC;AAEnE;;;;;GAKG;AACH,MAAM,CAAC,MAAM,MAAM,GAAG,IAAI,CACxB;IACE,IAAI,EAAE,QAAQ;IACd,KAAK,EAAE,SAAS;CACjB,EACD,iBAAiB,CAClB,CAAC;AAEF;;;;;;GAMG;AACH,MAAM,UAAU,kBAAkB;IAChC,MAAM,IAAI,GAAG,iBAA+C,CAAC;IAC7D,MAAM,EAAE,GAAG,IAAI,CAAC,EAAE,CAAC;IACnB,IAAI,EAAE,KAAK,CAAC,EAAE,CAAC;QACb,MAAM,IAAI,KAAK,CACb,gCAAgC,MAAM,CAAC,EAAE,CAAC,4BAA4B;YACpE,mDAAmD,CACtD,CAAC;IACJ,CAAC;AACH,CAAC"}
1
+ {"version":3,"file":"logger.js","sourceRoot":"","sources":["../src/logger.ts"],"names":[],"mappings":"AAAA,OAAO,IAAI,MAAM,MAAM,CAAC;AAExB,MAAM,SAAS,GAAG,OAAO,CAAC,GAAG,CAAC,kBAAkB,CAAC,IAAI,MAAM,CAAC;AAE5D,0EAA0E;AAC1E,0EAA0E;AAC1E,0EAA0E;AAC1E,4EAA4E;AAC5E,IAAI,YAAY,GAAG,KAAK,CAAC;AACzB,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC,OAAO,EAAE,GAAG,EAAE;IAC9B,0EAA0E;IAC1E,uEAAuE;IACvE,YAAY,GAAG,IAAI,CAAC;AACtB,CAAC,CAAC,CAAC;AACH,MAAM,iBAAiB,GAAG;IACxB,IAAI,EAAE,KAAa,OAAO,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC;IAC9C,KAAK,CAAC,OAAe;QACnB,IAAI,CAAC,YAAY;YAAE,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;IACnD,CAAC;CACF,CAAC;AAEF;;;;;GAKG;AACH,MAAM,CAAC,MAAM,MAAM,GAAG,IAAI,CACxB;IACE,IAAI,EAAE,QAAQ;IACd,KAAK,EAAE,SAAS;CACjB,EACD,iBAAiB,CAClB,CAAC;AAEF;;;;;;GAMG;AACH,MAAM,UAAU,kBAAkB;IAChC,MAAM,IAAI,GAAG,iBAA+C,CAAC;IAC7D,MAAM,EAAE,GAAG,IAAI,CAAC,EAAE,CAAC;IACnB,IAAI,EAAE,KAAK,CAAC,EAAE,CAAC;QACb,MAAM,IAAI,KAAK,CACb,gCAAgC,MAAM,CAAC,EAAE,CAAC,4BAA4B;YACpE,mDAAmD,CACtD,CAAC;IACJ,CAAC;AACH,CAAC"}
@@ -0,0 +1,14 @@
1
+ import type { Parser } from "./types.js";
2
+ /**
3
+ * Parse agy `--output-format stream-json` NDJSON delivered over stdin.
4
+ *
5
+ * Discriminator is `event`, not Claude's `type`.
6
+ * Stream: init → step_update* → exactly one result (one-shot).
7
+ * Canonical text: event=result → result.response (first trimmed-nonempty string).
8
+ * Fallback: concatenate every agent_response text_delta in stream order.
9
+ * Also tolerate a single `--output-format json` object {status, response}
10
+ * with no wrapping `event`.
11
+ *
12
+ * Shipped invocation is stdin + `--output-format stream-json` (no `--print`).
13
+ */
14
+ export declare const agyStreamJsonParser: Parser;
@@ -0,0 +1,172 @@
1
+ import { preferredText } from "./utils.js";
2
+ const AGY_ERROR_MAX_CHARS = 4096;
3
+ function isRecord(value) {
4
+ return value != null && typeof value === "object" && !Array.isArray(value);
5
+ }
6
+ function sliceAgyError(value) {
7
+ if (typeof value !== "string" || value.trim().length === 0)
8
+ return undefined;
9
+ return value.slice(0, AGY_ERROR_MAX_CHARS);
10
+ }
11
+ /**
12
+ * Parse agy `--output-format stream-json` NDJSON delivered over stdin.
13
+ *
14
+ * Discriminator is `event`, not Claude's `type`.
15
+ * Stream: init → step_update* → exactly one result (one-shot).
16
+ * Canonical text: event=result → result.response (first trimmed-nonempty string).
17
+ * Fallback: concatenate every agent_response text_delta in stream order.
18
+ * Also tolerate a single `--output-format json` object {status, response}
19
+ * with no wrapping `event`.
20
+ *
21
+ * Shipped invocation is stdin + `--output-format stream-json` (no `--print`).
22
+ */
23
+ export const agyStreamJsonParser = {
24
+ name: "agy_stream_json",
25
+ preferredBuffers: ["stdoutHead", "stdoutTail"],
26
+ parse(input) {
27
+ const text = preferredText(input, ["stdoutHead", "stdoutTail"]);
28
+ if (text.trim().length === 0)
29
+ return null;
30
+ const lines = text
31
+ .split("\n")
32
+ .map((l) => l.trim())
33
+ .filter((l) => l.length > 0);
34
+ let resultText = null;
35
+ let resultLatched = false;
36
+ let resultEventCount = 0;
37
+ let sawResultEvent = false;
38
+ let invalidResponse = false;
39
+ let agyStatus;
40
+ let agyError;
41
+ let assistantText = "";
42
+ let assistantEventCount = 0;
43
+ const applyResultPayload = (payload) => {
44
+ sawResultEvent = true;
45
+ resultEventCount++;
46
+ const status = payload["status"];
47
+ if (agyStatus === undefined && typeof status === "string") {
48
+ agyStatus = status;
49
+ }
50
+ if (agyError === undefined) {
51
+ const captured = sliceAgyError(payload["error"]);
52
+ if (captured !== undefined) {
53
+ agyError = captured;
54
+ }
55
+ }
56
+ // Present non-string response: fail-closed only if no nonempty string
57
+ // has already won. Otherwise ignore the late malformed event (first-wins).
58
+ if ("response" in payload && typeof payload["response"] !== "string") {
59
+ if (resultText == null)
60
+ invalidResponse = true;
61
+ else
62
+ resultLatched = true;
63
+ return;
64
+ }
65
+ const response = payload["response"];
66
+ if (typeof response === "string" && response.trim().length > 0) {
67
+ if (resultText == null) {
68
+ resultText = response;
69
+ }
70
+ else {
71
+ resultLatched = true;
72
+ }
73
+ }
74
+ // Empty/whitespace SUCCESS does not occupy resultText (Claude latch split).
75
+ };
76
+ for (const line of lines) {
77
+ let parsed;
78
+ try {
79
+ parsed = JSON.parse(line);
80
+ }
81
+ catch {
82
+ continue;
83
+ }
84
+ if (!isRecord(parsed))
85
+ continue;
86
+ if (parsed["event"] === "result" && isRecord(parsed["result"])) {
87
+ applyResultPayload(parsed["result"]);
88
+ continue;
89
+ }
90
+ if (parsed["event"] !== "step_update")
91
+ continue;
92
+ const step = parsed["step_update"];
93
+ if (!isRecord(step))
94
+ continue;
95
+ if (step["step_type"] !== "agent_response")
96
+ continue;
97
+ const delta = step["text_delta"];
98
+ if (typeof delta !== "string")
99
+ continue;
100
+ assistantEventCount++;
101
+ assistantText += delta;
102
+ }
103
+ if (!sawResultEvent) {
104
+ let envelope;
105
+ try {
106
+ envelope = JSON.parse(text.trim());
107
+ }
108
+ catch {
109
+ envelope = undefined;
110
+ }
111
+ if (isRecord(envelope) &&
112
+ typeof envelope["response"] === "string" &&
113
+ typeof envelope["status"] === "string") {
114
+ applyResultPayload(envelope);
115
+ }
116
+ }
117
+ if (!sawResultEvent) {
118
+ if (assistantText.length === 0)
119
+ return null;
120
+ return {
121
+ content: assistantText,
122
+ source: "parser",
123
+ metadata: {
124
+ parser: "agy_stream_json",
125
+ resultEventCount,
126
+ resultLatched,
127
+ assistantEventCount,
128
+ },
129
+ };
130
+ }
131
+ const metadata = {
132
+ parser: "agy_stream_json",
133
+ resultEventCount,
134
+ resultLatched,
135
+ assistantEventCount,
136
+ };
137
+ if (agyStatus !== undefined) {
138
+ metadata["agy_status"] = agyStatus;
139
+ }
140
+ if (agyError !== undefined) {
141
+ metadata["agy_error"] = agyError;
142
+ }
143
+ if (invalidResponse) {
144
+ metadata["parse_status"] = "invalid";
145
+ metadata["rejection_reason"] = "provider_result_invalid_response";
146
+ return {
147
+ content: agyError ?? "",
148
+ source: "parser",
149
+ metadata,
150
+ };
151
+ }
152
+ const content = resultText ?? "";
153
+ const contentEmpty = content.trim().length === 0;
154
+ if (contentEmpty &&
155
+ agyStatus !== undefined &&
156
+ agyStatus !== "SUCCESS") {
157
+ metadata["parse_status"] = "invalid";
158
+ metadata["rejection_reason"] = "provider_result_failed";
159
+ return {
160
+ content: agyError ?? "",
161
+ source: "parser",
162
+ metadata,
163
+ };
164
+ }
165
+ return {
166
+ content,
167
+ source: "parser",
168
+ metadata,
169
+ };
170
+ },
171
+ };
172
+ //# sourceMappingURL=agy-stream-json.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"agy-stream-json.js","sourceRoot":"","sources":["../../src/parsers/agy-stream-json.ts"],"names":[],"mappings":"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"}
@@ -4,6 +4,7 @@ import { jsonExtractParser } from "./json-extract.js";
4
4
  import { codexJsonlParser } from "./codex-jsonl.js";
5
5
  import { claudeJsonParser } from "./claude-json.js";
6
6
  import { claudeStreamJsonParser } from "./claude-stream-json.js";
7
+ import { agyStreamJsonParser } from "./agy-stream-json.js";
7
8
  import { extractSummary } from "./summary.js";
8
9
  import { readResultFile } from "../result-contract.js";
9
10
  import { stripAnsi } from "../strip-ansi.js";
@@ -14,6 +15,7 @@ const PARSERS = [
14
15
  codexJsonlParser,
15
16
  claudeJsonParser,
16
17
  claudeStreamJsonParser,
18
+ agyStreamJsonParser,
17
19
  ];
18
20
  export function parserByName(name) {
19
21
  return PARSERS.find((p) => p.name === name) ?? null;
@@ -37,7 +39,9 @@ async function tryReadResultContract(workdir, contract) {
37
39
  }
38
40
  function rawStdoutFallback(input) {
39
41
  // JSONL adapters emit final events late; prefer tail.
40
- const preferTailFirst = input.adapter.parser === "codex_jsonl" || input.adapter.parser === "jsonl" || input.adapter.parser === "claude_stream_json";
42
+ const preferTailFirst = input.adapter.parser === "codex_jsonl" ||
43
+ input.adapter.parser === "claude_stream_json" ||
44
+ input.adapter.parser === "agy_stream_json";
41
45
  const content = preferTailFirst
42
46
  ? input.stdoutTail.length > 0
43
47
  ? input.stdoutTail
@@ -1 +1 @@
1
- {"version":3,"file":"extract.js","sourceRoot":"","sources":["../../src/parsers/extract.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"extract.js","sourceRoot":"","sources":["../../src/parsers/extract.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,20 @@
1
+ /**
2
+ * PURE observer for the Claude-family stream-json `system/init` model.
3
+ *
4
+ * Extracts ONLY the model id from the first `type:"system"` + `subtype:"init"`
5
+ * event whose `model` is a non-empty string. Deliberately separate from
6
+ * `claudeStreamJsonParser`, whose result/assistant text extraction must not
7
+ * change: this is a side-effect-free read for invocation observability.
8
+ *
9
+ * Semantics:
10
+ * - split on newlines; each non-empty trimmed line is JSON.parse'd in a
11
+ * try/catch; unparseable lines are skipped
12
+ * - the first object with type==="system" AND subtype==="init" AND a
13
+ * non-empty string `model` WINS; later init events are ignored
14
+ * - assistant `message.model` and effort fields are ignored entirely
15
+ * - no match → {} (key omitted, never `model: undefined`)
16
+ * - never throws, even on truncated or adversarial input
17
+ */
18
+ export declare function observeClaudeStreamJsonInit(text: string): {
19
+ readonly model?: string;
20
+ };
@@ -0,0 +1,42 @@
1
+ /**
2
+ * PURE observer for the Claude-family stream-json `system/init` model.
3
+ *
4
+ * Extracts ONLY the model id from the first `type:"system"` + `subtype:"init"`
5
+ * event whose `model` is a non-empty string. Deliberately separate from
6
+ * `claudeStreamJsonParser`, whose result/assistant text extraction must not
7
+ * change: this is a side-effect-free read for invocation observability.
8
+ *
9
+ * Semantics:
10
+ * - split on newlines; each non-empty trimmed line is JSON.parse'd in a
11
+ * try/catch; unparseable lines are skipped
12
+ * - the first object with type==="system" AND subtype==="init" AND a
13
+ * non-empty string `model` WINS; later init events are ignored
14
+ * - assistant `message.model` and effort fields are ignored entirely
15
+ * - no match → {} (key omitted, never `model: undefined`)
16
+ * - never throws, even on truncated or adversarial input
17
+ */
18
+ export function observeClaudeStreamJsonInit(text) {
19
+ for (const line of text.split("\n")) {
20
+ const trimmed = line.trim();
21
+ if (trimmed.length === 0)
22
+ continue;
23
+ let parsed;
24
+ try {
25
+ parsed = JSON.parse(trimmed);
26
+ }
27
+ catch {
28
+ continue;
29
+ }
30
+ if (parsed == null || typeof parsed !== "object")
31
+ continue;
32
+ const rec = parsed;
33
+ if (rec["type"] !== "system" || rec["subtype"] !== "init")
34
+ continue;
35
+ const model = rec["model"];
36
+ if (typeof model !== "string" || model.length === 0)
37
+ continue;
38
+ return { model };
39
+ }
40
+ return {};
41
+ }
42
+ //# sourceMappingURL=observed-invocation.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"observed-invocation.js","sourceRoot":"","sources":["../../src/parsers/observed-invocation.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AACH,MAAM,UAAU,2BAA2B,CAAC,IAAY;IAGtD,KAAK,MAAM,IAAI,IAAI,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC;QACpC,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC;QAC5B,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC;YAAE,SAAS;QAEnC,IAAI,MAAe,CAAC;QACpB,IAAI,CAAC;YACH,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAY,CAAC;QAC1C,CAAC;QAAC,MAAM,CAAC;YACP,SAAS;QACX,CAAC;QAED,IAAI,MAAM,IAAI,IAAI,IAAI,OAAO,MAAM,KAAK,QAAQ;YAAE,SAAS;QAC3D,MAAM,GAAG,GAAG,MAAiC,CAAC;QAE9C,IAAI,GAAG,CAAC,MAAM,CAAC,KAAK,QAAQ,IAAI,GAAG,CAAC,SAAS,CAAC,KAAK,MAAM;YAAE,SAAS;QAEpE,MAAM,KAAK,GAAG,GAAG,CAAC,OAAO,CAAC,CAAC;QAC3B,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC;YAAE,SAAS;QAE9D,OAAO,EAAE,KAAK,EAAE,CAAC;IACnB,CAAC;IAED,OAAO,EAAE,CAAC;AACZ,CAAC"}
@@ -2,6 +2,7 @@ import type { ClinkInput } from "./schema.js";
2
2
  import type { AdapterRegistry } from "./registry.js";
3
3
  import { type RunResult } from "./runner.js";
4
4
  import type { SessionLogOwnerV1 } from "../clinkx-workflows/dist/dashboard/session-log-contract.js";
5
+ import type { ObservedInvocationV1 } from "../clinkx-workflows/dist/dashboard/invocation-contract.js";
5
6
  import type { Server } from "@modelcontextprotocol/sdk/server/index.js";
6
7
  import type { ActivityJournal } from "./activity-journal.js";
7
8
  export declare function pickPreferTail(head: string, tail: string): string;
@@ -30,6 +31,8 @@ export interface PipelineResult {
30
31
  }>;
31
32
  isError?: boolean;
32
33
  jsonFidelity?: PipelineJsonFidelityMetadata;
34
+ /** Runtime-observed invocation knobs reported by the provider; omit-when-absent. */
35
+ observedInvocation?: ObservedInvocationV1;
33
36
  }
34
37
  export type PipelineJsonTopLevelType = "object" | "array" | "string" | "number" | "boolean" | "null";
35
38
  export interface PipelineJsonFidelityMetadata {
@@ -65,6 +68,14 @@ export interface PipelineJsonFidelityMetadata {
65
68
  readonly acceptable: boolean;
66
69
  readonly violations: string[];
67
70
  };
71
+ /**
72
+ * result.isError as it stood before the strict block, so a delegate caller
73
+ * can tell a provider failure (bad model, HTTP 402, non-zero exit) from a
74
+ * fidelity-only rejection, which the strict block also marks isError.
75
+ */
76
+ readonly preStrictIsError: boolean;
77
+ /** Primary semantic failure reason (e.g. "invalid_json_output"), if any. */
78
+ readonly semanticFailureReason: string | null;
68
79
  }
69
80
  export declare function executePipeline(input: ClinkInput, registry: AdapterRegistry, options?: {
70
81
  signal?: AbortSignal;
@@ -74,6 +85,8 @@ export declare function executePipeline(input: ClinkInput, registry: AdapterRegi
74
85
  };
75
86
  jsonFidelity?: "strict";
76
87
  allowTimeoutBelowAdapter?: boolean;
88
+ /** Floor for the subprocess startup idle timeout (delegate calls only). */
89
+ minIdleStartupSeconds?: number;
77
90
  activityJournal?: ActivityJournal;
78
91
  sessionLogOwner?: SessionLogOwnerV1;
79
92
  }): Promise<PipelineResult>;
package/dist/pipeline.js CHANGED
@@ -6,10 +6,13 @@ import { runSubprocess } from "./runner.js";
6
6
  import { directSessionLogsEnabled } from "./config.js";
7
7
  import { Semaphore } from "./concurrency.js";
8
8
  import { CancellationError, InvalidParamsError } from "./errors.js";
9
+ import { resolveInvocationApplication } from "./safety.js";
9
10
  import { extractResult } from "./parsers/extract.js";
10
11
  import { extractSummary } from "./parsers/summary.js";
11
12
  import { findAllJsonBlocks } from "./parsers/utils.js";
13
+ import { observeClaudeStreamJsonInit } from "./parsers/observed-invocation.js";
12
14
  import { stripAnsi } from "./strip-ansi.js";
15
+ import { buildObservedInvocationV1 } from "../clinkx-workflows/dist/dashboard/invocation-contract.js";
13
16
  import { ProgressReporter } from "./progress.js";
14
17
  import { logger } from "./logger.js";
15
18
  const DEFAULT_MAX_RESPONSE_CHARS = 20_000;
@@ -259,8 +262,19 @@ export async function executePipeline(input, registry, options) {
259
262
  const mergedArgs = roleConfig?.extra_args
260
263
  ? [...baseAdapter.args, ...roleConfig.extra_args]
261
264
  : baseAdapter.args;
262
- const effectiveArgs = mergedArgs;
263
- const adapter = effectiveParser !== baseAdapter.parser || effectiveArgs !== baseAdapter.args
265
+ const knobs = {
266
+ ...(input.model != null ? { model: input.model } : {}),
267
+ ...(input.effort != null ? { effort: input.effort } : {}),
268
+ };
269
+ const invocationApplication = resolveInvocationApplication(baseAdapter, mergedArgs, knobs);
270
+ const effectiveArgs = invocationApplication.args;
271
+ const invocation = invocationApplication.audit;
272
+ // resolveInvocationApplication always returns a fresh argv array, even with no
273
+ // overrides — compare request/role intent, not array identity.
274
+ const adapter = effectiveParser !== baseAdapter.parser ||
275
+ roleConfig?.extra_args != null ||
276
+ input.model != null ||
277
+ input.effort != null
264
278
  ? { ...baseAdapter, parser: effectiveParser, args: effectiveArgs }
265
279
  : baseAdapter;
266
280
  // 1c. App-server backend boundary — the synchronous pipeline (reached by the
@@ -308,6 +322,7 @@ export async function executePipeline(input, registry, options) {
308
322
  adapter: adapter.name,
309
323
  role: input.role ?? "default",
310
324
  projectFolders: [process.cwd()],
325
+ invocation,
311
326
  });
312
327
  }
313
328
  if (options?.progress) {
@@ -349,6 +364,9 @@ export async function executePipeline(input, registry, options) {
349
364
  if (adapter.idle_timeout_startup_seconds != null) {
350
365
  runOptions.idleTimeoutStartupSeconds = adapter.idle_timeout_startup_seconds;
351
366
  }
367
+ if (options?.minIdleStartupSeconds != null) {
368
+ runOptions.minIdleTimeoutStartupSeconds = options.minIdleStartupSeconds;
369
+ }
352
370
  if (options?.signal != null) {
353
371
  runOptions.signal = options.signal;
354
372
  }
@@ -411,6 +429,22 @@ export async function executePipeline(input, registry, options) {
411
429
  exitCode: runResult.exitCode,
412
430
  tolerateNonzeroExitForParse: adapter.tolerate_nonzero_exit_for_parse,
413
431
  });
432
+ // 7a. Runtime invocation observability — Claude-family stream-json emits
433
+ // the effective model in its first system/init event. Purely additive:
434
+ // observer trouble never fails the call.
435
+ let observedInvocation;
436
+ try {
437
+ if (adapter.parser === "claude_stream_json") {
438
+ const { model } = observeClaudeStreamJsonInit(runResult.stdoutHead);
439
+ observedInvocation = buildObservedInvocationV1("claude_stream_json_init", model === undefined ? {} : { model });
440
+ }
441
+ }
442
+ catch (error) {
443
+ logger.debug({
444
+ adapter: adapter.name,
445
+ err: error instanceof Error ? error.message : String(error),
446
+ }, "observed invocation extraction failed; continuing without it");
447
+ }
414
448
  let output = extracted.result.content;
415
449
  const parseMetadata = extracted.result.metadata;
416
450
  const parseStatus = typeof parseMetadata?.["parse_status"] === "string"
@@ -704,7 +738,8 @@ export async function executePipeline(input, registry, options) {
704
738
  if (runResult.terminationReason !== "none") {
705
739
  violations.push("terminated");
706
740
  }
707
- if (result.isError === true) {
741
+ const preStrictIsError = result.isError === true;
742
+ if (preStrictIsError) {
708
743
  violations.push("pipeline_error");
709
744
  }
710
745
  const acceptable = violations.length === 0;
@@ -741,6 +776,8 @@ export async function executePipeline(input, registry, options) {
741
776
  acceptable,
742
777
  violations,
743
778
  },
779
+ preStrictIsError,
780
+ semanticFailureReason,
744
781
  };
745
782
  if (!acceptable) {
746
783
  result.isError = true;
@@ -750,6 +787,9 @@ export async function executePipeline(input, registry, options) {
750
787
  if (input.continuation_id && output && !result.isError) {
751
788
  continuationCache.set(input.continuation_id, output);
752
789
  }
790
+ if (observedInvocation !== undefined) {
791
+ result.observedInvocation = observedInvocation;
792
+ }
753
793
  // Debug metadata (only when debug=true)
754
794
  if (input.debug) {
755
795
  result.content.push({
@@ -779,6 +819,11 @@ export async function executePipeline(input, registry, options) {
779
819
  adapter_config_path: registry.getAdapterSource(adapter.name) ?? null,
780
820
  adapter_command: adapter.command,
781
821
  adapter_parser: adapter.parser,
822
+ ...(input.model !== undefined ? { requested_model: input.model } : {}),
823
+ ...(input.effort !== undefined ? { requested_effort: input.effort } : {}),
824
+ ...(observedInvocation === undefined
825
+ ? {}
826
+ : { observed_invocation: observedInvocation }),
782
827
  thread_id: threadId,
783
828
  codex_panic_class: panicClass ?? null,
784
829
  ...(semanticFailureReason != null
@@ -792,13 +837,18 @@ export async function executePipeline(input, registry, options) {
792
837
  }),
793
838
  });
794
839
  }
795
- await activity?.complete(result.isError === true
796
- ? { status: "failed", outcomeKind: "error" }
797
- : {
798
- status: "succeeded",
799
- outcomeKind: "success",
800
- resultText: result.content[0]?.text ?? "",
801
- });
840
+ await activity?.complete({
841
+ ...(result.isError === true
842
+ ? { status: "failed", outcomeKind: "error" }
843
+ : {
844
+ status: "succeeded",
845
+ outcomeKind: "success",
846
+ resultText: result.content[0]?.text ?? "",
847
+ }),
848
+ ...(observedInvocation === undefined
849
+ ? {}
850
+ : { observedInvocation }),
851
+ });
802
852
  return result;
803
853
  }
804
854
  catch (error) {