@orion-agents/orion-code 0.1.2 → 0.1.4-2

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 (552) hide show
  1. package/README.md +98 -4
  2. package/README.zh-CN.md +116 -5
  3. package/dist/agents/coder.d.ts.map +1 -1
  4. package/dist/agents/coder.js.map +1 -1
  5. package/dist/agents/fork.d.ts +12 -4
  6. package/dist/agents/fork.d.ts.map +1 -1
  7. package/dist/agents/fork.js +28 -32
  8. package/dist/agents/fork.js.map +1 -1
  9. package/dist/agents/leader.d.ts.map +1 -1
  10. package/dist/agents/leader.js.map +1 -1
  11. package/dist/agents/worker-pool.d.ts.map +1 -1
  12. package/dist/agents/worker-pool.js +38 -29
  13. package/dist/agents/worker-pool.js.map +1 -1
  14. package/dist/cli.d.ts +1 -1
  15. package/dist/cli.d.ts.map +1 -1
  16. package/dist/cli.js +0 -1
  17. package/dist/cli.js.map +1 -1
  18. package/dist/commands/context-commands.d.ts +4 -0
  19. package/dist/commands/context-commands.d.ts.map +1 -0
  20. package/dist/commands/context-commands.js +52 -0
  21. package/dist/commands/context-commands.js.map +1 -0
  22. package/dist/commands/context-tool-command-handlers.d.ts +13 -0
  23. package/dist/commands/context-tool-command-handlers.d.ts.map +1 -0
  24. package/dist/commands/context-tool-command-handlers.js +573 -0
  25. package/dist/commands/context-tool-command-handlers.js.map +1 -0
  26. package/dist/commands/core-command-handlers.d.ts +12 -0
  27. package/dist/commands/core-command-handlers.d.ts.map +1 -0
  28. package/dist/commands/core-command-handlers.js +798 -0
  29. package/dist/commands/core-command-handlers.js.map +1 -0
  30. package/dist/commands/diagnostic-command-handlers.d.ts +14 -0
  31. package/dist/commands/diagnostic-command-handlers.d.ts.map +1 -0
  32. package/dist/commands/diagnostic-command-handlers.js +1043 -0
  33. package/dist/commands/diagnostic-command-handlers.js.map +1 -0
  34. package/dist/commands/diagnostic-commands.d.ts +4 -0
  35. package/dist/commands/diagnostic-commands.d.ts.map +1 -0
  36. package/dist/commands/diagnostic-commands.js +132 -0
  37. package/dist/commands/diagnostic-commands.js.map +1 -0
  38. package/dist/commands/index.d.ts +7 -8
  39. package/dist/commands/index.d.ts.map +1 -1
  40. package/dist/commands/index.js +34 -3448
  41. package/dist/commands/index.js.map +1 -1
  42. package/dist/commands/legacy-commands.d.ts +4 -0
  43. package/dist/commands/legacy-commands.d.ts.map +1 -0
  44. package/dist/commands/legacy-commands.js +44 -0
  45. package/dist/commands/legacy-commands.js.map +1 -0
  46. package/dist/commands/model-command-handlers.d.ts +13 -0
  47. package/dist/commands/model-command-handlers.d.ts.map +1 -0
  48. package/dist/commands/model-command-handlers.js +314 -0
  49. package/dist/commands/model-command-handlers.js.map +1 -0
  50. package/dist/commands/model-commands.d.ts +4 -0
  51. package/dist/commands/model-commands.d.ts.map +1 -0
  52. package/dist/commands/model-commands.js +52 -0
  53. package/dist/commands/model-commands.js.map +1 -0
  54. package/dist/commands/session-command-handlers.d.ts +9 -0
  55. package/dist/commands/session-command-handlers.d.ts.map +1 -0
  56. package/dist/commands/session-command-handlers.js +566 -0
  57. package/dist/commands/session-command-handlers.js.map +1 -0
  58. package/dist/commands/session-commands.d.ts +4 -0
  59. package/dist/commands/session-commands.d.ts.map +1 -0
  60. package/dist/commands/session-commands.js +78 -0
  61. package/dist/commands/session-commands.js.map +1 -0
  62. package/dist/commands/system-commands.d.ts +4 -0
  63. package/dist/commands/system-commands.d.ts.map +1 -0
  64. package/dist/commands/system-commands.js +92 -0
  65. package/dist/commands/system-commands.js.map +1 -0
  66. package/dist/commands/target-command.d.ts.map +1 -1
  67. package/dist/commands/target-command.js +29 -2
  68. package/dist/commands/target-command.js.map +1 -1
  69. package/dist/commands/tool-commands.d.ts +4 -0
  70. package/dist/commands/tool-commands.d.ts.map +1 -0
  71. package/dist/commands/tool-commands.js +49 -0
  72. package/dist/commands/tool-commands.js.map +1 -0
  73. package/dist/commands/types.d.ts +7 -5
  74. package/dist/commands/types.d.ts.map +1 -1
  75. package/dist/commands/types.js.map +1 -1
  76. package/dist/commands/workflow-command-handlers.d.ts +7 -0
  77. package/dist/commands/workflow-command-handlers.d.ts.map +1 -0
  78. package/dist/commands/workflow-command-handlers.js +35 -0
  79. package/dist/commands/workflow-command-handlers.js.map +1 -0
  80. package/dist/commands/workflow-commands.d.ts +4 -0
  81. package/dist/commands/workflow-commands.d.ts.map +1 -0
  82. package/dist/commands/workflow-commands.js +92 -0
  83. package/dist/commands/workflow-commands.js.map +1 -0
  84. package/dist/core/checkpoint.d.ts +12 -4
  85. package/dist/core/checkpoint.d.ts.map +1 -1
  86. package/dist/core/checkpoint.js +114 -28
  87. package/dist/core/checkpoint.js.map +1 -1
  88. package/dist/core/cost-tracker.d.ts +5 -1
  89. package/dist/core/cost-tracker.d.ts.map +1 -1
  90. package/dist/core/cost-tracker.js +12 -2
  91. package/dist/core/cost-tracker.js.map +1 -1
  92. package/dist/core/warn-dedup.d.ts +3 -0
  93. package/dist/core/warn-dedup.d.ts.map +1 -1
  94. package/dist/core/warn-dedup.js +6 -6
  95. package/dist/core/warn-dedup.js.map +1 -1
  96. package/dist/framework/index.d.ts +1 -1
  97. package/dist/framework/index.d.ts.map +1 -1
  98. package/dist/framework/index.js.map +1 -1
  99. package/dist/framework/prompt.d.ts +2 -2
  100. package/dist/framework/query.d.ts +5 -2
  101. package/dist/framework/query.d.ts.map +1 -1
  102. package/dist/framework/query.js +58 -10
  103. package/dist/framework/query.js.map +1 -1
  104. package/dist/framework/store.d.ts +4 -4
  105. package/dist/framework/tool-scheduler.d.ts +67 -4
  106. package/dist/framework/tool-scheduler.d.ts.map +1 -1
  107. package/dist/framework/tool-scheduler.js +271 -50
  108. package/dist/framework/tool-scheduler.js.map +1 -1
  109. package/dist/framework/tool.d.ts +36 -2
  110. package/dist/framework/tool.d.ts.map +1 -1
  111. package/dist/framework/tool.js +29 -1
  112. package/dist/framework/tool.js.map +1 -1
  113. package/dist/harness/assembler.d.ts.map +1 -1
  114. package/dist/harness/assembler.js +4 -2
  115. package/dist/harness/assembler.js.map +1 -1
  116. package/dist/harness/evidence.d.ts.map +1 -1
  117. package/dist/harness/evidence.js +3 -2
  118. package/dist/harness/evidence.js.map +1 -1
  119. package/dist/harness/safety.d.ts +11 -1
  120. package/dist/harness/safety.d.ts.map +1 -1
  121. package/dist/harness/safety.js +112 -16
  122. package/dist/harness/safety.js.map +1 -1
  123. package/dist/index.d.ts +1 -4
  124. package/dist/index.d.ts.map +1 -1
  125. package/dist/index.js.map +1 -1
  126. package/dist/init.d.ts +4 -8
  127. package/dist/init.d.ts.map +1 -1
  128. package/dist/init.js +4 -4
  129. package/dist/init.js.map +1 -1
  130. package/dist/ink-ui/App.d.ts +2 -2
  131. package/dist/ink-ui/components/Markdown.d.ts.map +1 -1
  132. package/dist/ink-ui/components/Markdown.js.map +1 -1
  133. package/dist/ink-ui/components/PixelHorseBanner.d.ts +2 -2
  134. package/dist/ink-ui/components/StatusLine.d.ts +2 -2
  135. package/dist/ink-ui/launch.d.ts +2 -2
  136. package/dist/ink-ui/screens/ReplScreen.d.ts +3 -2
  137. package/dist/ink-ui/screens/ReplScreen.d.ts.map +1 -1
  138. package/dist/ink-ui/screens/ReplScreen.js +65 -0
  139. package/dist/ink-ui/screens/ReplScreen.js.map +1 -1
  140. package/dist/memory/embeddings.d.ts.map +1 -1
  141. package/dist/memory/embeddings.js +3 -2
  142. package/dist/memory/embeddings.js.map +1 -1
  143. package/dist/memory/relevant-finder.d.ts +2 -1
  144. package/dist/memory/relevant-finder.d.ts.map +1 -1
  145. package/dist/memory/relevant-finder.js +17 -8
  146. package/dist/memory/relevant-finder.js.map +1 -1
  147. package/dist/memory/semantic-config.d.ts +9 -0
  148. package/dist/memory/semantic-config.d.ts.map +1 -0
  149. package/dist/memory/semantic-config.js +16 -0
  150. package/dist/memory/semantic-config.js.map +1 -0
  151. package/dist/memory/semantic-search.d.ts +1 -6
  152. package/dist/memory/semantic-search.d.ts.map +1 -1
  153. package/dist/memory/semantic-search.js +5 -16
  154. package/dist/memory/semantic-search.js.map +1 -1
  155. package/dist/memory/storage.d.ts +23 -0
  156. package/dist/memory/storage.d.ts.map +1 -1
  157. package/dist/memory/storage.js +109 -8
  158. package/dist/memory/storage.js.map +1 -1
  159. package/dist/memory/vector-store.d.ts +12 -0
  160. package/dist/memory/vector-store.d.ts.map +1 -1
  161. package/dist/memory/vector-store.js +139 -18
  162. package/dist/memory/vector-store.js.map +1 -1
  163. package/dist/migration/command.d.ts.map +1 -1
  164. package/dist/migration/command.js +0 -1
  165. package/dist/migration/command.js.map +1 -1
  166. package/dist/migration/migrate.d.ts.map +1 -1
  167. package/dist/migration/migrate.js +43 -109
  168. package/dist/migration/migrate.js.map +1 -1
  169. package/dist/migration/types.d.ts +0 -1
  170. package/dist/migration/types.d.ts.map +1 -1
  171. package/dist/print-ui/launch.d.ts +11 -3
  172. package/dist/print-ui/launch.d.ts.map +1 -1
  173. package/dist/print-ui/launch.js +25 -0
  174. package/dist/print-ui/launch.js.map +1 -1
  175. package/dist/product/environment.d.ts +3 -5
  176. package/dist/product/environment.d.ts.map +1 -1
  177. package/dist/product/environment.js +4 -32
  178. package/dist/product/environment.js.map +1 -1
  179. package/dist/product/index.d.ts +1 -1
  180. package/dist/product/index.d.ts.map +1 -1
  181. package/dist/product/index.js +1 -3
  182. package/dist/product/index.js.map +1 -1
  183. package/dist/product/paths.d.ts.map +1 -1
  184. package/dist/product/paths.js +12 -0
  185. package/dist/product/paths.js.map +1 -1
  186. package/dist/runtime/agent-runtime-controller.d.ts +3 -2
  187. package/dist/runtime/agent-runtime-controller.d.ts.map +1 -1
  188. package/dist/runtime/agent-runtime-controller.js +24 -3
  189. package/dist/runtime/agent-runtime-controller.js.map +1 -1
  190. package/dist/runtime/agent-runtime-protocol.d.ts +16 -1
  191. package/dist/runtime/agent-runtime-protocol.d.ts.map +1 -1
  192. package/dist/runtime/agent-runtime-protocol.js +12 -0
  193. package/dist/runtime/agent-runtime-protocol.js.map +1 -1
  194. package/dist/runtime/chat-checkpoint.d.ts +17 -0
  195. package/dist/runtime/chat-checkpoint.d.ts.map +1 -0
  196. package/dist/runtime/chat-checkpoint.js +108 -0
  197. package/dist/runtime/chat-checkpoint.js.map +1 -0
  198. package/dist/runtime/chat-controller.d.ts +16 -46
  199. package/dist/runtime/chat-controller.d.ts.map +1 -1
  200. package/dist/runtime/chat-controller.js +212 -1051
  201. package/dist/runtime/chat-controller.js.map +1 -1
  202. package/dist/runtime/chat-presentation.d.ts +60 -0
  203. package/dist/runtime/chat-presentation.d.ts.map +1 -0
  204. package/dist/runtime/chat-presentation.js +537 -0
  205. package/dist/runtime/chat-presentation.js.map +1 -0
  206. package/dist/runtime/chat-trace.d.ts +52 -0
  207. package/dist/runtime/chat-trace.d.ts.map +1 -0
  208. package/dist/runtime/chat-trace.js +234 -0
  209. package/dist/runtime/chat-trace.js.map +1 -0
  210. package/dist/runtime/chat-workspace.d.ts +22 -0
  211. package/dist/runtime/chat-workspace.d.ts.map +1 -0
  212. package/dist/runtime/chat-workspace.js +154 -0
  213. package/dist/runtime/chat-workspace.js.map +1 -0
  214. package/dist/runtime/goals/accounting.js +1 -1
  215. package/dist/runtime/goals/accounting.js.map +1 -1
  216. package/dist/runtime/goals/completion-audit.d.ts.map +1 -1
  217. package/dist/runtime/goals/completion-audit.js +5 -4
  218. package/dist/runtime/goals/completion-audit.js.map +1 -1
  219. package/dist/runtime/goals/coordinator.d.ts +3 -0
  220. package/dist/runtime/goals/coordinator.d.ts.map +1 -1
  221. package/dist/runtime/goals/coordinator.js +30 -2
  222. package/dist/runtime/goals/coordinator.js.map +1 -1
  223. package/dist/runtime/goals/prompt.d.ts +1 -1
  224. package/dist/runtime/goals/prompt.d.ts.map +1 -1
  225. package/dist/runtime/goals/prompt.js +3 -2
  226. package/dist/runtime/goals/prompt.js.map +1 -1
  227. package/dist/runtime/goals/tools.d.ts +21 -8
  228. package/dist/runtime/goals/tools.d.ts.map +1 -1
  229. package/dist/runtime/goals/tools.js +152 -21
  230. package/dist/runtime/goals/tools.js.map +1 -1
  231. package/dist/runtime/goals/types.d.ts +6 -0
  232. package/dist/runtime/goals/types.d.ts.map +1 -1
  233. package/dist/runtime/goals/types.js.map +1 -1
  234. package/dist/runtime/loop-budget.d.ts +2 -2
  235. package/dist/runtime/model-coordinator.d.ts.map +1 -1
  236. package/dist/runtime/model-coordinator.js.map +1 -1
  237. package/dist/runtime/subagents/child-executor-guard.d.ts.map +1 -1
  238. package/dist/runtime/subagents/child-executor-guard.js +4 -0
  239. package/dist/runtime/subagents/child-executor-guard.js.map +1 -1
  240. package/dist/runtime/subagents/index.d.ts +10 -3
  241. package/dist/runtime/subagents/index.d.ts.map +1 -1
  242. package/dist/runtime/subagents/index.js +25 -1
  243. package/dist/runtime/subagents/index.js.map +1 -1
  244. package/dist/runtime/subagents/policy.d.ts +1 -1
  245. package/dist/runtime/subagents/policy.d.ts.map +1 -1
  246. package/dist/runtime/subagents/policy.js.map +1 -1
  247. package/dist/runtime/subagents/presets.d.ts +2 -2
  248. package/dist/runtime/subagents/provider-gate.d.ts.map +1 -1
  249. package/dist/runtime/subagents/provider-gate.js +0 -1
  250. package/dist/runtime/subagents/provider-gate.js.map +1 -1
  251. package/dist/runtime/subagents/research-artifact.d.ts +101 -0
  252. package/dist/runtime/subagents/research-artifact.d.ts.map +1 -0
  253. package/dist/runtime/subagents/research-artifact.js +210 -0
  254. package/dist/runtime/subagents/research-artifact.js.map +1 -0
  255. package/dist/runtime/subagents/research-citation.d.ts +66 -0
  256. package/dist/runtime/subagents/research-citation.d.ts.map +1 -0
  257. package/dist/runtime/subagents/research-citation.js +185 -0
  258. package/dist/runtime/subagents/research-citation.js.map +1 -0
  259. package/dist/runtime/subagents/research-contract.d.ts +83 -0
  260. package/dist/runtime/subagents/research-contract.d.ts.map +1 -0
  261. package/dist/runtime/subagents/research-contract.js +337 -0
  262. package/dist/runtime/subagents/research-contract.js.map +1 -0
  263. package/dist/runtime/subagents/research-quality.d.ts +47 -0
  264. package/dist/runtime/subagents/research-quality.d.ts.map +1 -0
  265. package/dist/runtime/subagents/research-quality.js +125 -0
  266. package/dist/runtime/subagents/research-quality.js.map +1 -0
  267. package/dist/runtime/subagents/research-renderer.d.ts +95 -0
  268. package/dist/runtime/subagents/research-renderer.d.ts.map +1 -0
  269. package/dist/runtime/subagents/research-renderer.js +186 -0
  270. package/dist/runtime/subagents/research-renderer.js.map +1 -0
  271. package/dist/runtime/subagents/research-types.d.ts +105 -0
  272. package/dist/runtime/subagents/research-types.d.ts.map +1 -0
  273. package/dist/runtime/subagents/research-types.js +16 -0
  274. package/dist/runtime/subagents/research-types.js.map +1 -0
  275. package/dist/runtime/subagents/result-parser.d.ts +1 -5
  276. package/dist/runtime/subagents/result-parser.d.ts.map +1 -1
  277. package/dist/runtime/subagents/result-parser.js +5 -72
  278. package/dist/runtime/subagents/result-parser.js.map +1 -1
  279. package/dist/runtime/subagents/runtime-integration.d.ts +13 -7
  280. package/dist/runtime/subagents/runtime-integration.d.ts.map +1 -1
  281. package/dist/runtime/subagents/runtime-integration.js +112 -2
  282. package/dist/runtime/subagents/runtime-integration.js.map +1 -1
  283. package/dist/runtime/subagents/supervisor.d.ts +15 -1
  284. package/dist/runtime/subagents/supervisor.d.ts.map +1 -1
  285. package/dist/runtime/subagents/supervisor.js +58 -3
  286. package/dist/runtime/subagents/supervisor.js.map +1 -1
  287. package/dist/runtime/subagents/tool.d.ts +2 -2
  288. package/dist/runtime/subagents/tool.d.ts.map +1 -1
  289. package/dist/runtime/subagents/tool.js +129 -9
  290. package/dist/runtime/subagents/tool.js.map +1 -1
  291. package/dist/runtime/subagents/types.d.ts +20 -0
  292. package/dist/runtime/subagents/types.d.ts.map +1 -1
  293. package/dist/runtime/subagents/types.js.map +1 -1
  294. package/dist/runtime/subagents/web-research-adapter.d.ts +85 -0
  295. package/dist/runtime/subagents/web-research-adapter.d.ts.map +1 -0
  296. package/dist/runtime/subagents/web-research-adapter.js +328 -0
  297. package/dist/runtime/subagents/web-research-adapter.js.map +1 -0
  298. package/dist/runtime/turn-controller.d.ts.map +1 -1
  299. package/dist/runtime/turn-controller.js +3 -1
  300. package/dist/runtime/turn-controller.js.map +1 -1
  301. package/dist/runtime/ui-events.d.ts +25 -8
  302. package/dist/runtime/ui-events.d.ts.map +1 -1
  303. package/dist/runtime/ui-events.js.map +1 -1
  304. package/dist/runtime/ui-view-model.d.ts +40 -0
  305. package/dist/runtime/ui-view-model.d.ts.map +1 -1
  306. package/dist/runtime/ui-view-model.js +126 -0
  307. package/dist/runtime/ui-view-model.js.map +1 -1
  308. package/dist/services/agent-runner.d.ts +5 -2
  309. package/dist/services/agent-runner.d.ts.map +1 -1
  310. package/dist/services/agent-runner.js +18 -18
  311. package/dist/services/agent-runner.js.map +1 -1
  312. package/dist/services/atomic-write.d.ts +9 -1
  313. package/dist/services/atomic-write.d.ts.map +1 -1
  314. package/dist/services/atomic-write.js +55 -2
  315. package/dist/services/atomic-write.js.map +1 -1
  316. package/dist/services/auth/auth.d.ts +11 -7
  317. package/dist/services/auth/auth.d.ts.map +1 -1
  318. package/dist/services/auth/auth.js +133 -34
  319. package/dist/services/auth/auth.js.map +1 -1
  320. package/dist/services/auth/aws.d.ts +2 -0
  321. package/dist/services/auth/aws.d.ts.map +1 -1
  322. package/dist/services/auth/aws.js +126 -12
  323. package/dist/services/auth/aws.js.map +1 -1
  324. package/dist/services/auth/index.d.ts +1 -1
  325. package/dist/services/auth/index.d.ts.map +1 -1
  326. package/dist/services/auth/index.js +2 -1
  327. package/dist/services/auth/index.js.map +1 -1
  328. package/dist/services/auto-fix/autoFixConfig.d.ts +0 -3
  329. package/dist/services/auto-fix/autoFixConfig.d.ts.map +1 -1
  330. package/dist/services/auto-fix/autoFixConfig.js +25 -8
  331. package/dist/services/auto-fix/autoFixConfig.js.map +1 -1
  332. package/dist/services/auto-fix/autoFixHook.d.ts +7 -0
  333. package/dist/services/auto-fix/autoFixHook.d.ts.map +1 -1
  334. package/dist/services/auto-fix/autoFixHook.js +10 -1
  335. package/dist/services/auto-fix/autoFixHook.js.map +1 -1
  336. package/dist/services/compact/auto-compact.d.ts +2 -0
  337. package/dist/services/compact/auto-compact.d.ts.map +1 -1
  338. package/dist/services/compact/auto-compact.js +15 -1
  339. package/dist/services/compact/auto-compact.js.map +1 -1
  340. package/dist/services/compact/compact.d.ts.map +1 -1
  341. package/dist/services/compact/compact.js +9 -11
  342. package/dist/services/compact/compact.js.map +1 -1
  343. package/dist/services/compact/summary-generator.d.ts.map +1 -1
  344. package/dist/services/compact/summary-generator.js +28 -4
  345. package/dist/services/compact/summary-generator.js.map +1 -1
  346. package/dist/services/compact/tool-call-groups.d.ts +19 -0
  347. package/dist/services/compact/tool-call-groups.d.ts.map +1 -0
  348. package/dist/services/compact/tool-call-groups.js +105 -0
  349. package/dist/services/compact/tool-call-groups.js.map +1 -0
  350. package/dist/services/concurrent-sessions.d.ts +4 -0
  351. package/dist/services/concurrent-sessions.d.ts.map +1 -1
  352. package/dist/services/concurrent-sessions.js +76 -21
  353. package/dist/services/concurrent-sessions.js.map +1 -1
  354. package/dist/services/config-dir.d.ts.map +1 -1
  355. package/dist/services/config-dir.js +19 -5
  356. package/dist/services/config-dir.js.map +1 -1
  357. package/dist/services/config.d.ts +6 -4
  358. package/dist/services/config.d.ts.map +1 -1
  359. package/dist/services/config.js +16 -72
  360. package/dist/services/config.js.map +1 -1
  361. package/dist/services/doctor.d.ts +2 -2
  362. package/dist/services/doctor.js.map +1 -1
  363. package/dist/services/file-glob.d.ts.map +1 -1
  364. package/dist/services/file-glob.js +22 -2
  365. package/dist/services/file-glob.js.map +1 -1
  366. package/dist/services/file-lock.d.ts +7 -0
  367. package/dist/services/file-lock.d.ts.map +1 -0
  368. package/dist/services/file-lock.js +139 -0
  369. package/dist/services/file-lock.js.map +1 -0
  370. package/dist/services/global-config.d.ts +33 -0
  371. package/dist/services/global-config.d.ts.map +1 -1
  372. package/dist/services/global-config.js +67 -4
  373. package/dist/services/global-config.js.map +1 -1
  374. package/dist/services/goal-storage.d.ts.map +1 -1
  375. package/dist/services/goal-storage.js +52 -19
  376. package/dist/services/goal-storage.js.map +1 -1
  377. package/dist/services/llm.d.ts +12 -0
  378. package/dist/services/llm.d.ts.map +1 -1
  379. package/dist/services/llm.js +166 -69
  380. package/dist/services/llm.js.map +1 -1
  381. package/dist/services/mcp/transports.d.ts +0 -1
  382. package/dist/services/mcp/transports.d.ts.map +1 -1
  383. package/dist/services/mcp/transports.js +12 -13
  384. package/dist/services/mcp/transports.js.map +1 -1
  385. package/dist/services/model-catalog.d.ts +2 -0
  386. package/dist/services/model-catalog.d.ts.map +1 -1
  387. package/dist/services/model-catalog.js +25 -15
  388. package/dist/services/model-catalog.js.map +1 -1
  389. package/dist/services/model-context.d.ts +8 -0
  390. package/dist/services/model-context.d.ts.map +1 -1
  391. package/dist/services/model-context.js +147 -7
  392. package/dist/services/model-context.js.map +1 -1
  393. package/dist/services/model-registry.d.ts.map +1 -1
  394. package/dist/services/model-registry.js +32 -0
  395. package/dist/services/model-registry.js.map +1 -1
  396. package/dist/services/provider-resilience/coordinator.d.ts +9 -4
  397. package/dist/services/provider-resilience/coordinator.d.ts.map +1 -1
  398. package/dist/services/provider-resilience/coordinator.js +88 -21
  399. package/dist/services/provider-resilience/coordinator.js.map +1 -1
  400. package/dist/services/provider-resilience/error-classifier.d.ts +1 -0
  401. package/dist/services/provider-resilience/error-classifier.d.ts.map +1 -1
  402. package/dist/services/provider-resilience/error-classifier.js +50 -29
  403. package/dist/services/provider-resilience/error-classifier.js.map +1 -1
  404. package/dist/services/provider-resilience/index.d.ts +3 -3
  405. package/dist/services/provider-resilience/index.d.ts.map +1 -1
  406. package/dist/services/provider-resilience/index.js +3 -1
  407. package/dist/services/provider-resilience/index.js.map +1 -1
  408. package/dist/services/provider-resilience/request-gate.d.ts +6 -0
  409. package/dist/services/provider-resilience/request-gate.d.ts.map +1 -1
  410. package/dist/services/provider-resilience/request-gate.js +24 -9
  411. package/dist/services/provider-resilience/request-gate.js.map +1 -1
  412. package/dist/services/provider-resilience/stream-recovery.d.ts +1 -1
  413. package/dist/services/provider-resilience/stream-recovery.d.ts.map +1 -1
  414. package/dist/services/provider-resilience/stream-recovery.js +1 -1
  415. package/dist/services/provider-resilience/stream-recovery.js.map +1 -1
  416. package/dist/services/provider-resilience/types.d.ts +9 -0
  417. package/dist/services/provider-resilience/types.d.ts.map +1 -1
  418. package/dist/services/provider-resilience/types.js.map +1 -1
  419. package/dist/services/redaction.d.ts.map +1 -1
  420. package/dist/services/redaction.js +29 -1
  421. package/dist/services/redaction.js.map +1 -1
  422. package/dist/services/session-index.d.ts.map +1 -1
  423. package/dist/services/session-index.js +75 -44
  424. package/dist/services/session-index.js.map +1 -1
  425. package/dist/services/session-memory/sessionMemory.d.ts.map +1 -1
  426. package/dist/services/session-memory/sessionMemory.js +6 -3
  427. package/dist/services/session-memory/sessionMemory.js.map +1 -1
  428. package/dist/services/session-storage.d.ts +8 -0
  429. package/dist/services/session-storage.d.ts.map +1 -1
  430. package/dist/services/session-storage.js +105 -27
  431. package/dist/services/session-storage.js.map +1 -1
  432. package/dist/services/storage-maintenance.d.ts.map +1 -1
  433. package/dist/services/storage-maintenance.js +62 -9
  434. package/dist/services/storage-maintenance.js.map +1 -1
  435. package/dist/services/task-manager.d.ts +9 -4
  436. package/dist/services/task-manager.d.ts.map +1 -1
  437. package/dist/services/task-manager.js +18 -4
  438. package/dist/services/task-manager.js.map +1 -1
  439. package/dist/services/tool-allowlist.d.ts +100 -0
  440. package/dist/services/tool-allowlist.d.ts.map +1 -0
  441. package/dist/services/tool-allowlist.js +250 -0
  442. package/dist/services/tool-allowlist.js.map +1 -0
  443. package/dist/services/usage-state.d.ts +1 -0
  444. package/dist/services/usage-state.d.ts.map +1 -1
  445. package/dist/services/usage-state.js +81 -45
  446. package/dist/services/usage-state.js.map +1 -1
  447. package/dist/services/verification-profile.d.ts.map +1 -1
  448. package/dist/services/verification-profile.js +23 -3
  449. package/dist/services/verification-profile.js.map +1 -1
  450. package/dist/services/web-search-adapters.d.ts.map +1 -1
  451. package/dist/services/web-search-adapters.js +48 -18
  452. package/dist/services/web-search-adapters.js.map +1 -1
  453. package/dist/services/web-search-mcp.d.ts.map +1 -1
  454. package/dist/services/web-search-mcp.js +27 -11
  455. package/dist/services/web-search-mcp.js.map +1 -1
  456. package/dist/services/workspace-diff.d.ts +14 -0
  457. package/dist/services/workspace-diff.d.ts.map +1 -1
  458. package/dist/services/workspace-diff.js +60 -11
  459. package/dist/services/workspace-diff.js.map +1 -1
  460. package/dist/services/yaml-config.d.ts.map +1 -1
  461. package/dist/services/yaml-config.js +2 -1
  462. package/dist/services/yaml-config.js.map +1 -1
  463. package/dist/skills/loader.d.ts.map +1 -1
  464. package/dist/skills/loader.js +26 -11
  465. package/dist/skills/loader.js.map +1 -1
  466. package/dist/skills/runtime.d.ts +3 -3
  467. package/dist/skills/runtime.d.ts.map +1 -1
  468. package/dist/skills/runtime.js +37 -4
  469. package/dist/skills/runtime.js.map +1 -1
  470. package/dist/skills/types.d.ts +1 -1
  471. package/dist/skills/types.d.ts.map +1 -1
  472. package/dist/terminal-ui/launch.d.ts +36 -8
  473. package/dist/terminal-ui/launch.d.ts.map +1 -1
  474. package/dist/terminal-ui/launch.js +171 -1
  475. package/dist/terminal-ui/launch.js.map +1 -1
  476. package/dist/terminal-ui/raw-editor.js.map +1 -1
  477. package/dist/tools/bash_security.d.ts +58 -18
  478. package/dist/tools/bash_security.d.ts.map +1 -1
  479. package/dist/tools/bash_security.js +587 -80
  480. package/dist/tools/bash_security.js.map +1 -1
  481. package/dist/tools/git.d.ts +8 -4
  482. package/dist/tools/git.d.ts.map +1 -1
  483. package/dist/tools/git.js +518 -18
  484. package/dist/tools/git.js.map +1 -1
  485. package/dist/tools/index.d.ts +14 -4
  486. package/dist/tools/index.d.ts.map +1 -1
  487. package/dist/tools/index.js +292 -49
  488. package/dist/tools/index.js.map +1 -1
  489. package/dist/tools/lsp.d.ts +74 -6
  490. package/dist/tools/lsp.d.ts.map +1 -1
  491. package/dist/tools/lsp.js +24 -5
  492. package/dist/tools/lsp.js.map +1 -1
  493. package/dist/tools/mcp.d.ts +19 -6
  494. package/dist/tools/mcp.d.ts.map +1 -1
  495. package/dist/tools/mcp.js +143 -26
  496. package/dist/tools/mcp.js.map +1 -1
  497. package/dist/tools/plan.d.ts +4 -4
  498. package/dist/tools/sandbox.d.ts +141 -0
  499. package/dist/tools/sandbox.d.ts.map +1 -0
  500. package/dist/tools/sandbox.js +500 -0
  501. package/dist/tools/sandbox.js.map +1 -0
  502. package/dist/tools/todo.d.ts +3 -3
  503. package/dist/tools/web.d.ts +15 -4
  504. package/dist/tools/web.d.ts.map +1 -1
  505. package/dist/tools/web.js +346 -61
  506. package/dist/tools/web.js.map +1 -1
  507. package/dist/tui-core/frame.js.map +1 -1
  508. package/dist/tui-ui/launch.d.ts +3 -3
  509. package/dist/tui-ui/launch.d.ts.map +1 -1
  510. package/dist/tui-ui/launch.js +46 -8
  511. package/dist/tui-ui/launch.js.map +1 -1
  512. package/dist/tui-ui/layout.d.ts.map +1 -1
  513. package/dist/tui-ui/layout.js +64 -0
  514. package/dist/tui-ui/layout.js.map +1 -1
  515. package/dist/tui-ui/runner.d.ts +6 -0
  516. package/dist/tui-ui/runner.d.ts.map +1 -1
  517. package/dist/tui-ui/runner.js +82 -1
  518. package/dist/tui-ui/runner.js.map +1 -1
  519. package/dist/tui-ui/state.d.ts +28 -2
  520. package/dist/tui-ui/state.d.ts.map +1 -1
  521. package/dist/tui-ui/state.js +48 -7
  522. package/dist/tui-ui/state.js.map +1 -1
  523. package/dist/tui-ui/terminal-image.d.ts +3 -13
  524. package/dist/tui-ui/terminal-image.d.ts.map +1 -1
  525. package/dist/tui-ui/terminal-image.js +5 -160
  526. package/dist/tui-ui/terminal-image.js.map +1 -1
  527. package/dist/ui/markdown.js.map +1 -1
  528. package/dist/utils/debug-log.d.ts +52 -0
  529. package/dist/utils/debug-log.d.ts.map +1 -0
  530. package/dist/utils/debug-log.js +94 -0
  531. package/dist/utils/debug-log.js.map +1 -0
  532. package/dist/utils/errors.d.ts +25 -0
  533. package/dist/utils/errors.d.ts.map +1 -0
  534. package/dist/utils/errors.js +47 -0
  535. package/dist/utils/errors.js.map +1 -0
  536. package/dist/utils/json.d.ts +6 -0
  537. package/dist/utils/json.d.ts.map +1 -0
  538. package/dist/utils/json.js +66 -0
  539. package/dist/utils/json.js.map +1 -0
  540. package/dist/utils/mask.d.ts +35 -0
  541. package/dist/utils/mask.d.ts.map +1 -0
  542. package/dist/utils/mask.js +52 -0
  543. package/dist/utils/mask.js.map +1 -0
  544. package/dist/utils/observability.d.ts +22 -0
  545. package/dist/utils/observability.d.ts.map +1 -0
  546. package/dist/utils/observability.js +80 -0
  547. package/dist/utils/observability.js.map +1 -0
  548. package/dist/utils/token-estimate.d.ts +8 -0
  549. package/dist/utils/token-estimate.d.ts.map +1 -1
  550. package/dist/utils/token-estimate.js +30 -17
  551. package/dist/utils/token-estimate.js.map +1 -1
  552. package/package.json +9 -7
@@ -0,0 +1,185 @@
1
+ "use strict";
2
+ /**
3
+ * Citation, conflict, and evidence-candidate resolution (v0.1.4, P0-R3).
4
+ *
5
+ * Turns a `ResearchPacket` (with its claims + sources) into:
6
+ * - resolved claim->source bindings (reference-integrity validated),
7
+ * - same-URL multi-version dedupe (older revisions marked `stale` on hash drift),
8
+ * - conflict records for contradictory sources (never auto-picked),
9
+ * - a verification classification per claim,
10
+ * - evidence candidates (only rule-compliant claims; research vs execution kept
11
+ * distinct so a web summary can never stand in for test/build/file facts),
12
+ * - a completion audit that stays `partial`/`unmet` for claims that have sources
13
+ * but no independent verification.
14
+ *
15
+ * This module is pure (no IO) so it is fully testable without network or disk.
16
+ */
17
+ Object.defineProperty(exports, "__esModule", { value: true });
18
+ exports.urlKey = urlKey;
19
+ exports.resolveCitations = resolveCitations;
20
+ /** Normalize a URL for dedupe: drop fragment + trailing slash, lowercase host. */
21
+ function urlKey(url) {
22
+ if (!url)
23
+ return '';
24
+ try {
25
+ const u = new URL(url);
26
+ const host = u.host.toLowerCase();
27
+ let path = u.pathname;
28
+ if (path.length > 1 && path.endsWith('/'))
29
+ path = path.slice(0, -1);
30
+ const query = u.search;
31
+ return `${u.protocol}//${host}${path}${query}`;
32
+ }
33
+ catch {
34
+ return url;
35
+ }
36
+ }
37
+ /**
38
+ * Resolve citations for a packet.
39
+ *
40
+ * Reference integrity: a claim binding to an unknown source id is flagged
41
+ * `dangling` (and downgraded to `unverified`). Dedupe: sources sharing a
42
+ * canonical URL key are collapsed; the newest by `retrievedAt` wins and older
43
+ * revisions with a different content hash are marked `stale`. Conflict: a claim
44
+ * backed by both a `retrieved` source and a `failed`/`blocked` source (or two
45
+ * sources explicitly flagged contradictory) yields a conflict record and is
46
+ * never silently resolved in the model-favorable direction.
47
+ */
48
+ function resolveCitations(packet) {
49
+ const sourceIds = new Set(packet.sources.map(s => s.id));
50
+ const byId = new Map(packet.sources.map(s => [s.id, s]));
51
+ // --- dedupe same-URL multi-version -> stale ---
52
+ const staleSourceIds = [];
53
+ const groups = new Map();
54
+ for (const s of packet.sources) {
55
+ const key = urlKey(s.canonicalUrl);
56
+ if (!key)
57
+ continue;
58
+ const arr = groups.get(key) ?? [];
59
+ arr.push(s);
60
+ groups.set(key, arr);
61
+ }
62
+ for (const [, group] of groups) {
63
+ if (group.length < 2)
64
+ continue;
65
+ // newest by retrievedAt wins; older ones with a different hash become stale.
66
+ const sorted = [...group].sort((a, b) => b.retrievedAt.localeCompare(a.retrievedAt));
67
+ const winner = sorted[0];
68
+ for (let i = 1; i < sorted.length; i++) {
69
+ const s = sorted[i];
70
+ if (s.contentHash && winner.contentHash && s.contentHash !== winner.contentHash) {
71
+ staleSourceIds.push(s.id);
72
+ s.status = 'stale';
73
+ }
74
+ }
75
+ }
76
+ const staleSet = new Set(staleSourceIds);
77
+ const bindings = [];
78
+ const conflicts = [];
79
+ const evidenceCandidates = [];
80
+ for (const claim of packet.claims) {
81
+ const referenced = claim.sourceIds.filter(id => sourceIds.has(id));
82
+ const danglingRefs = claim.sourceIds.filter(id => !sourceIds.has(id));
83
+ const active = referenced.filter(id => !staleSet.has(id));
84
+ const activeSources = active.map(id => byId.get(id)).filter(Boolean);
85
+ const hasRetrieved = activeSources.some(s => s.status === 'retrieved');
86
+ const hasFailed = activeSources.some(s => s.status === 'failed' || s.status === 'blocked');
87
+ let status;
88
+ if (danglingRefs.length > 0 && referenced.length === 0) {
89
+ status = 'dangling';
90
+ }
91
+ else if (hasRetrieved && hasFailed) {
92
+ status = 'conflicted';
93
+ }
94
+ else if (active.length === 0 && referenced.length > 0) {
95
+ status = 'stale_only';
96
+ }
97
+ else {
98
+ status = 'bound';
99
+ }
100
+ if (status === 'conflicted') {
101
+ conflicts.push({
102
+ claimId: claim.id,
103
+ sourceIds: active,
104
+ reason: 'claim backed by both a retrieved source and a failed/blocked source',
105
+ });
106
+ }
107
+ bindings.push({
108
+ claimId: claim.id,
109
+ sourceIds: active,
110
+ referencedSourceIds: referenced,
111
+ status,
112
+ });
113
+ // Verification classification: conflicted -> contradicted.
114
+ const verification = status === 'conflicted'
115
+ ? 'contradicted'
116
+ : classifyVerification(claim, hasRetrieved, activeSources);
117
+ claim.verification = verification;
118
+ // Evidence candidate: only rule-compliant claims.
119
+ if ((verification === 'observed' || verification === 'partially_observed') &&
120
+ claim.evidenceKind !== 'inference' &&
121
+ status !== 'conflicted') {
122
+ const primary = activeSources.find(s => s.status === 'retrieved');
123
+ const isFile = primary?.kind === 'file';
124
+ evidenceCandidates.push({
125
+ claimId: claim.id,
126
+ kind: isFile ? 'execution' : 'research',
127
+ basis: isFile ? 'file' : 'external',
128
+ summary: claim.text,
129
+ });
130
+ }
131
+ }
132
+ const audit = auditCompletion(packet, bindings);
133
+ return {
134
+ packetId: packet.packetId,
135
+ bindings,
136
+ conflicts,
137
+ staleSourceIds,
138
+ evidenceCandidates,
139
+ audit,
140
+ };
141
+ }
142
+ function classifyVerification(claim, hasRetrieved, activeSources) {
143
+ if (claim.evidenceKind === 'inference')
144
+ return 'unverified';
145
+ if (!hasRetrieved)
146
+ return 'unverified';
147
+ const onlyExcerpt = activeSources.every(s => !!s.excerpt && s.excerpt.length < 4000 && !s.contentHash);
148
+ return onlyExcerpt ? 'partially_observed' : 'observed';
149
+ }
150
+ /**
151
+ * Completion audit. The key invariant (plan exit condition): a claim that HAS
152
+ * sources but no independent verification must keep the audit `partial`/`unmet`
153
+ * - never `met`. We therefore treat any claim with referenced sources whose
154
+ * verification is not `observed` as unverified for audit purposes.
155
+ */
156
+ function auditCompletion(packet, bindings) {
157
+ const notes = [];
158
+ const unverifiedClaimIds = [];
159
+ for (const claim of packet.claims) {
160
+ const binding = bindings.find(b => b.claimId === claim.id);
161
+ const hasSources = (binding?.referencedSourceIds.length ?? 0) > 0;
162
+ const independentlyVerified = claim.verification === 'observed';
163
+ if (!independentlyVerified) {
164
+ if (hasSources) {
165
+ unverifiedClaimIds.push(claim.id);
166
+ notes.push(`claim ${claim.id} has sources but no independent verification (stays partial)`);
167
+ }
168
+ else {
169
+ unverifiedClaimIds.push(claim.id);
170
+ }
171
+ }
172
+ }
173
+ let status;
174
+ if (unverifiedClaimIds.length === 0) {
175
+ status = 'met';
176
+ }
177
+ else if (packet.claims.some(c => (bindings.find(b => b.claimId === c.id)?.referencedSourceIds.length ?? 0) > 0)) {
178
+ status = 'partial';
179
+ }
180
+ else {
181
+ status = 'unmet';
182
+ }
183
+ return { status, unverifiedClaimIds, notes };
184
+ }
185
+ //# sourceMappingURL=research-citation.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"research-citation.js","sourceRoot":"","sources":["../../../src/runtime/subagents/research-citation.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,83 @@
1
+ /**
2
+ * Research contract and normalizer (v0.1.4, P0-R1).
3
+ *
4
+ * Responsibilities:
5
+ * - Validate a `ResearchRequest` before any work happens.
6
+ * - Map a legacy `SubtaskResult` (existing `research` role output) into a
7
+ * versioned `ResearchPacket` without rewriting the runtime.
8
+ * - Fail closed: missing summary, over-limit sources, or an `observed` claim
9
+ * without a source binding are rejected. Non-completed results never yield
10
+ * `observed` claims (no "looks researched" masquerading as verified).
11
+ * - Provide a deterministic serialization + content hash contract so packets
12
+ * are replayable and de-duplicable.
13
+ */
14
+ import type { SubtaskPacket, SubtaskResult } from './types';
15
+ import { type ResearchPacket, type ResearchRequest, type ResearchSource } from './research-types';
16
+ /** Hard caps independent of per-request budget, to bound abuse. */
17
+ export declare const RESEARCH_HARD_LIMITS: {
18
+ readonly maxSources: {
19
+ readonly min: 1;
20
+ readonly max: 200;
21
+ };
22
+ readonly maxFetchBytes: {
23
+ readonly min: 0;
24
+ readonly max: number;
25
+ };
26
+ readonly maxDurationMs: {
27
+ readonly min: 1000;
28
+ readonly max: 600000;
29
+ };
30
+ readonly maxClaims: 500;
31
+ readonly maxSummaryLen: 20000;
32
+ };
33
+ export interface ValidationResult {
34
+ ok: boolean;
35
+ errors: string[];
36
+ }
37
+ export interface PacketContext {
38
+ sessionId: string;
39
+ projectPath: string;
40
+ goalId?: string;
41
+ objectiveRevision?: number;
42
+ }
43
+ export interface ResearchPacketInputs {
44
+ /** Sources produced by the root-approved dedicated web adapter. */
45
+ externalSources?: readonly ResearchSource[];
46
+ /** Adapter diagnostics that should survive persistence/resume. */
47
+ externalNotes?: readonly string[];
48
+ externalTimedOut?: boolean;
49
+ externalAborted?: boolean;
50
+ }
51
+ /** Validate a research request before scheduling any work. */
52
+ export declare function validateResearchRequest(req: Partial<ResearchRequest> | null | undefined): ValidationResult;
53
+ /** Convenience builder for a local-only research request (POC-1 default). */
54
+ export declare function createLocalResearchRequest(objective: string, projectRoot: string, overrides?: Partial<ResearchRequest>): ResearchRequest;
55
+ /**
56
+ * Materialize the model-facing capability into the authoritative request.
57
+ * Project root/objective/path scope are always runtime-owned; the model can
58
+ * only narrow external domains and budgets. Missing capability means local.
59
+ */
60
+ export declare function createResearchRequestForSubtask(packet: SubtaskPacket, projectRoot: string, overrides?: Partial<ResearchRequest>): ResearchRequest;
61
+ /**
62
+ * Map a legacy `SubtaskResult` into a versioned `ResearchPacket`.
63
+ *
64
+ * File findings become `observed` file claims bound to a `file` source. Findings
65
+ * without a file become `inference`/`unverified` claims. Failed/cancelled/timed
66
+ * out results downgrade every claim to `unverified` so a partial run can never
67
+ * report a verified conclusion.
68
+ */
69
+ export declare function subtaskResultToPacket(result: SubtaskResult, request: ResearchRequest, ctx: PacketContext, inputs?: ResearchPacketInputs): ResearchPacket;
70
+ /**
71
+ * Fail-closed packet validation. An `observed`/`partially_observed` claim must
72
+ * bind to at least one existing source; an inference claim must not be marked
73
+ * `observed`; source counts must respect the request budget.
74
+ */
75
+ export declare function validatePacket(packet: ResearchPacket): ValidationResult;
76
+ /** Deterministic JSON (sorted keys) for a value. */
77
+ export declare function stableStringify(value: unknown): string;
78
+ /**
79
+ * Content hash over the canonical packet body (timestamps excluded). Proves what
80
+ * was read, NOT that the content is true; used for dedupe and drift detection.
81
+ */
82
+ export declare function hashPacket(packet: ResearchPacket): string;
83
+ //# sourceMappingURL=research-contract.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"research-contract.d.ts","sourceRoot":"","sources":["../../../src/runtime/subagents/research-contract.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAIH,OAAO,KAAK,EAAE,aAAa,EAAE,aAAa,EAAgB,MAAM,SAAS,CAAC;AAC1E,OAAO,EAIL,KAAK,cAAc,EACnB,KAAK,eAAe,EACpB,KAAK,cAAc,EAEpB,MAAM,kBAAkB,CAAC;AAE1B,mEAAmE;AACnE,eAAO,MAAM,oBAAoB;;;;;;;;;;;;;;;CAMvB,CAAC;AAEX,MAAM,WAAW,gBAAgB;IAC/B,EAAE,EAAE,OAAO,CAAC;IACZ,MAAM,EAAE,MAAM,EAAE,CAAC;CAClB;AAED,MAAM,WAAW,aAAa;IAC5B,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,EAAE,MAAM,CAAC;IACpB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,iBAAiB,CAAC,EAAE,MAAM,CAAC;CAC5B;AAED,MAAM,WAAW,oBAAoB;IACnC,mEAAmE;IACnE,eAAe,CAAC,EAAE,SAAS,cAAc,EAAE,CAAC;IAC5C,kEAAkE;IAClE,aAAa,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IAClC,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAC3B,eAAe,CAAC,EAAE,OAAO,CAAC;CAC3B;AAoBD,8DAA8D;AAC9D,wBAAgB,uBAAuB,CACrC,GAAG,EAAE,OAAO,CAAC,eAAe,CAAC,GAAG,IAAI,GAAG,SAAS,GAC/C,gBAAgB,CAoClB;AAED,6EAA6E;AAC7E,wBAAgB,0BAA0B,CACxC,SAAS,EAAE,MAAM,EACjB,WAAW,EAAE,MAAM,EACnB,SAAS,GAAE,OAAO,CAAC,eAAe,CAAM,GACvC,eAAe,CAWjB;AAED;;;;GAIG;AACH,wBAAgB,+BAA+B,CAC7C,MAAM,EAAE,aAAa,EACrB,WAAW,EAAE,MAAM,EACnB,SAAS,GAAE,OAAO,CAAC,eAAe,CAAM,GACvC,eAAe,CAkBjB;AA6DD;;;;;;;GAOG;AACH,wBAAgB,qBAAqB,CACnC,MAAM,EAAE,aAAa,EACrB,OAAO,EAAE,eAAe,EACxB,GAAG,EAAE,aAAa,EAClB,MAAM,GAAE,oBAAyB,GAChC,cAAc,CAkFhB;AAED;;;;GAIG;AACH,wBAAgB,cAAc,CAAC,MAAM,EAAE,cAAc,GAAG,gBAAgB,CA8CvE;AAaD,oDAAoD;AACpD,wBAAgB,eAAe,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,CAEtD;AAWD;;;GAGG;AACH,wBAAgB,UAAU,CAAC,MAAM,EAAE,cAAc,GAAG,MAAM,CAIzD"}
@@ -0,0 +1,337 @@
1
+ "use strict";
2
+ /**
3
+ * Research contract and normalizer (v0.1.4, P0-R1).
4
+ *
5
+ * Responsibilities:
6
+ * - Validate a `ResearchRequest` before any work happens.
7
+ * - Map a legacy `SubtaskResult` (existing `research` role output) into a
8
+ * versioned `ResearchPacket` without rewriting the runtime.
9
+ * - Fail closed: missing summary, over-limit sources, or an `observed` claim
10
+ * without a source binding are rejected. Non-completed results never yield
11
+ * `observed` claims (no "looks researched" masquerading as verified).
12
+ * - Provide a deterministic serialization + content hash contract so packets
13
+ * are replayable and de-duplicable.
14
+ */
15
+ Object.defineProperty(exports, "__esModule", { value: true });
16
+ exports.RESEARCH_HARD_LIMITS = void 0;
17
+ exports.validateResearchRequest = validateResearchRequest;
18
+ exports.createLocalResearchRequest = createLocalResearchRequest;
19
+ exports.createResearchRequestForSubtask = createResearchRequestForSubtask;
20
+ exports.subtaskResultToPacket = subtaskResultToPacket;
21
+ exports.validatePacket = validatePacket;
22
+ exports.stableStringify = stableStringify;
23
+ exports.hashPacket = hashPacket;
24
+ const crypto_1 = require("crypto");
25
+ const path_1 = require("path");
26
+ const research_types_1 = require("./research-types");
27
+ /** Hard caps independent of per-request budget, to bound abuse. */
28
+ exports.RESEARCH_HARD_LIMITS = {
29
+ maxSources: { min: 1, max: 200 },
30
+ maxFetchBytes: { min: 0, max: 32 * 1024 * 1024 },
31
+ maxDurationMs: { min: 1000, max: 600000 },
32
+ maxClaims: 500,
33
+ maxSummaryLen: 20000,
34
+ };
35
+ function nowIso() {
36
+ return new Date().toISOString();
37
+ }
38
+ function validateIntegerBudget(name, value, limits, errors) {
39
+ if (typeof value !== 'number' || !Number.isSafeInteger(value)) {
40
+ errors.push(`${name} must be a safe integer`);
41
+ return;
42
+ }
43
+ if (value < limits.min)
44
+ errors.push(`${name} must be >= ${limits.min}`);
45
+ if (value > limits.max)
46
+ errors.push(`${name} must be <= ${limits.max}`);
47
+ }
48
+ /** Validate a research request before scheduling any work. */
49
+ function validateResearchRequest(req) {
50
+ const errors = [];
51
+ if (!req || typeof req !== 'object') {
52
+ return { ok: false, errors: ['request is required'] };
53
+ }
54
+ if (typeof req.schemaVersion !== 'number')
55
+ errors.push('schemaVersion is required');
56
+ if (req.schemaVersion !== undefined && req.schemaVersion !== research_types_1.RESEARCH_SCHEMA_VERSION) {
57
+ errors.push(`unsupported schemaVersion ${req.schemaVersion}`);
58
+ }
59
+ if (typeof req.objective !== 'string' || !req.objective.trim())
60
+ errors.push('objective is required');
61
+ if (!req.scope || typeof req.scope.projectRoot !== 'string')
62
+ errors.push('scope.projectRoot is required');
63
+ if (req.mode !== 'local' && req.mode !== 'web' && req.mode !== 'mixed') {
64
+ errors.push('mode must be local | web | mixed');
65
+ }
66
+ validateIntegerBudget('maxSources', req.maxSources, exports.RESEARCH_HARD_LIMITS.maxSources, errors);
67
+ validateIntegerBudget('maxFetchBytes', req.maxFetchBytes, exports.RESEARCH_HARD_LIMITS.maxFetchBytes, errors);
68
+ validateIntegerBudget('maxDurationMs', req.maxDurationMs, exports.RESEARCH_HARD_LIMITS.maxDurationMs, errors);
69
+ if (req.goalBinding) {
70
+ if (typeof req.goalBinding.goalId !== 'string')
71
+ errors.push('goalBinding.goalId is required');
72
+ if (typeof req.goalBinding.objectiveRevision !== 'number') {
73
+ errors.push('goalBinding.objectiveRevision is required');
74
+ }
75
+ }
76
+ return { ok: errors.length === 0, errors };
77
+ }
78
+ /** Convenience builder for a local-only research request (POC-1 default). */
79
+ function createLocalResearchRequest(objective, projectRoot, overrides = {}) {
80
+ return {
81
+ schemaVersion: research_types_1.RESEARCH_SCHEMA_VERSION,
82
+ objective,
83
+ scope: { projectRoot, ...(overrides.scope ?? {}) },
84
+ mode: overrides.mode ?? 'local',
85
+ maxSources: overrides.maxSources ?? 50,
86
+ maxFetchBytes: overrides.maxFetchBytes ?? 0,
87
+ maxDurationMs: overrides.maxDurationMs ?? 120000,
88
+ ...overrides,
89
+ };
90
+ }
91
+ /**
92
+ * Materialize the model-facing capability into the authoritative request.
93
+ * Project root/objective/path scope are always runtime-owned; the model can
94
+ * only narrow external domains and budgets. Missing capability means local.
95
+ */
96
+ function createResearchRequestForSubtask(packet, projectRoot, overrides = {}) {
97
+ const capability = packet.research;
98
+ const mode = capability?.mode ?? 'local';
99
+ return createLocalResearchRequest(packet.objective, projectRoot, {
100
+ mode,
101
+ scope: {
102
+ projectRoot,
103
+ ...(packet.scope?.paths ? { paths: [...packet.scope.paths] } : {}),
104
+ ...(capability?.domains ? { domains: [...capability.domains] } : {}),
105
+ ...(capability?.freshness ? { freshness: capability.freshness } : {}),
106
+ ...(capability?.asOf ? { asOf: capability.asOf } : {}),
107
+ },
108
+ maxSources: capability?.maxSources ?? 50,
109
+ maxFetchBytes: capability?.maxFetchBytes ?? (mode === 'local' ? 0 : 2 * 1024 * 1024),
110
+ maxDurationMs: capability?.maxDurationMs ?? 120000,
111
+ ...(packet.expectedOutput ? { expectedOutput: packet.expectedOutput } : {}),
112
+ ...overrides,
113
+ });
114
+ }
115
+ function deriveVerification(status, hasFile) {
116
+ // Fail closed: a non-completed result can never produce an `observed` claim.
117
+ if (status !== 'completed')
118
+ return 'unverified';
119
+ return hasFile ? 'observed' : 'unverified';
120
+ }
121
+ function hasUnsafePathSyntax(value) {
122
+ const hasUrlScheme = /^[a-z][a-z\d+.-]*:/iu.test(value) && !/^[a-z]:\//iu.test(value);
123
+ return (/[\u0000-\u001f\u007f]/u.test(value) ||
124
+ hasUrlScheme ||
125
+ (path_1.win32.isAbsolute(value) && !(0, path_1.isAbsolute)(value)));
126
+ }
127
+ /**
128
+ * Normalize an untrusted result path against the runtime-owned project root.
129
+ * Absolute paths are accepted only when native path resolution proves they are
130
+ * inside the project; the packet always receives a portable relative path.
131
+ */
132
+ function normalizeProjectSourcePath(rawPath, projectRoot) {
133
+ if (typeof rawPath !== 'string')
134
+ return null;
135
+ const candidateInput = rawPath.trim().replace(/\\/gu, '/');
136
+ if (!candidateInput || hasUnsafePathSyntax(candidateInput))
137
+ return null;
138
+ const resolvedRoot = (0, path_1.resolve)(projectRoot);
139
+ const resolvedCandidate = (0, path_1.isAbsolute)(candidateInput)
140
+ ? (0, path_1.resolve)(candidateInput)
141
+ : (0, path_1.resolve)(resolvedRoot, candidateInput);
142
+ const projectRelative = (0, path_1.relative)(resolvedRoot, resolvedCandidate);
143
+ if (!projectRelative ||
144
+ projectRelative === '..' ||
145
+ projectRelative.startsWith(`..${path_1.sep}`) ||
146
+ (0, path_1.isAbsolute)(projectRelative)) {
147
+ return null;
148
+ }
149
+ const portable = projectRelative.split(path_1.sep).join('/');
150
+ return isNormalizedProjectSourcePath(portable) ? portable : null;
151
+ }
152
+ /** Persisted/replayed file sources must already satisfy the canonical schema. */
153
+ function isNormalizedProjectSourcePath(projectPath) {
154
+ if (typeof projectPath !== 'string' || !projectPath || projectPath !== projectPath.trim()) {
155
+ return false;
156
+ }
157
+ if (projectPath.includes('\\') || hasUnsafePathSyntax(projectPath))
158
+ return false;
159
+ const normalized = path_1.posix.normalize(projectPath);
160
+ return (normalized === projectPath &&
161
+ normalized !== '.' &&
162
+ normalized !== '..' &&
163
+ !normalized.startsWith('../') &&
164
+ !path_1.posix.isAbsolute(normalized));
165
+ }
166
+ /**
167
+ * Map a legacy `SubtaskResult` into a versioned `ResearchPacket`.
168
+ *
169
+ * File findings become `observed` file claims bound to a `file` source. Findings
170
+ * without a file become `inference`/`unverified` claims. Failed/cancelled/timed
171
+ * out results downgrade every claim to `unverified` so a partial run can never
172
+ * report a verified conclusion.
173
+ */
174
+ function subtaskResultToPacket(result, request, ctx, inputs = {}) {
175
+ const sources = [];
176
+ const sourceByPath = new Map();
177
+ const ensureFileSource = (rawPath) => {
178
+ const projectPath = normalizeProjectSourcePath(rawPath, ctx.projectPath);
179
+ if (!projectPath)
180
+ return undefined;
181
+ const existing = sourceByPath.get(projectPath);
182
+ if (existing)
183
+ return existing;
184
+ const source = {
185
+ id: `src-${sources.length + 1}`,
186
+ kind: 'file',
187
+ projectPath,
188
+ provider: 'local',
189
+ retrievedAt: nowIso(),
190
+ status: 'retrieved',
191
+ };
192
+ sourceByPath.set(projectPath, source);
193
+ sources.push(source);
194
+ return source;
195
+ };
196
+ for (const filePath of result.files)
197
+ ensureFileSource(filePath);
198
+ // The source budget covers local and external sources together. Web sources
199
+ // are already normalized/redacted by the dedicated adapter; clone and
200
+ // re-key collisions so persisted packets remain internally referential.
201
+ for (const external of inputs.externalSources ?? []) {
202
+ if (sources.length >= request.maxSources)
203
+ break;
204
+ const usedIds = new Set(sources.map(source => source.id));
205
+ let id = external.id;
206
+ let suffix = 1;
207
+ while (usedIds.has(id))
208
+ id = `${external.id}-${suffix++}`;
209
+ sources.push({ ...external, id });
210
+ }
211
+ const claims = result.findings.map((finding, i) => {
212
+ const bound = ensureFileSource(finding.file);
213
+ const hasFile = bound !== undefined;
214
+ const evidenceKind = hasFile ? 'file' : 'inference';
215
+ const verification = deriveVerification(result.status, hasFile);
216
+ const text = finding.evidence ? `${finding.title}: ${finding.evidence}` : finding.title;
217
+ const claim = {
218
+ id: `clm-${i + 1}`,
219
+ text,
220
+ sourceIds: bound ? [bound.id] : [],
221
+ evidenceKind,
222
+ verification,
223
+ };
224
+ if (finding.severity) {
225
+ const confidence = finding.severity === 'critical' || finding.severity === 'high'
226
+ ? 'high'
227
+ : finding.severity === 'medium'
228
+ ? 'medium'
229
+ : 'low';
230
+ claim.confidence = confidence;
231
+ }
232
+ return claim;
233
+ });
234
+ const packet = {
235
+ schemaVersion: research_types_1.RESEARCH_SCHEMA_VERSION,
236
+ packetId: `pkt-${result.id}`,
237
+ projectPath: ctx.projectPath,
238
+ sessionId: ctx.sessionId,
239
+ ...(ctx.goalId ? { goalId: ctx.goalId } : {}),
240
+ ...(ctx.objectiveRevision !== undefined ? { objectiveRevision: ctx.objectiveRevision } : {}),
241
+ request,
242
+ summary: result.summary,
243
+ claims,
244
+ sources,
245
+ gaps: [...(inputs.externalNotes ?? [])],
246
+ risks: [
247
+ ...result.risks,
248
+ ...(inputs.externalTimedOut ? ['external research timed out'] : []),
249
+ ...(inputs.externalAborted ? ['external research cancelled by parent'] : []),
250
+ ],
251
+ usage: result.usage,
252
+ createdAt: nowIso(),
253
+ };
254
+ return packet;
255
+ }
256
+ /**
257
+ * Fail-closed packet validation. An `observed`/`partially_observed` claim must
258
+ * bind to at least one existing source; an inference claim must not be marked
259
+ * `observed`; source counts must respect the request budget.
260
+ */
261
+ function validatePacket(packet) {
262
+ const requestValidation = validateResearchRequest(packet.request);
263
+ const errors = requestValidation.errors.map(error => `packet.request: ${error}`);
264
+ if (!packet.summary || !packet.summary.trim())
265
+ errors.push('packet.summary is required');
266
+ if (packet.schemaVersion !== research_types_1.RESEARCH_SCHEMA_VERSION) {
267
+ errors.push(`unsupported schemaVersion ${packet.schemaVersion}`);
268
+ }
269
+ if (packet.summary.length > exports.RESEARCH_HARD_LIMITS.maxSummaryLen) {
270
+ errors.push('packet.summary exceeds max length');
271
+ }
272
+ if (packet.claims.length > exports.RESEARCH_HARD_LIMITS.maxClaims) {
273
+ errors.push(`claims ${packet.claims.length} exceed max ${exports.RESEARCH_HARD_LIMITS.maxClaims}`);
274
+ }
275
+ const sourceIds = new Set(packet.sources.map(s => s.id));
276
+ for (const source of packet.sources) {
277
+ if (!source.provider)
278
+ errors.push(`source ${source.id} missing provider`);
279
+ if (!source.status)
280
+ errors.push(`source ${source.id} missing status`);
281
+ if ((source.kind === 'file' || source.projectPath !== undefined) &&
282
+ !isNormalizedProjectSourcePath(source.projectPath)) {
283
+ errors.push(`source ${source.id} has invalid projectPath`);
284
+ }
285
+ }
286
+ if (packet.sources.length > packet.request.maxSources) {
287
+ errors.push(`sources ${packet.sources.length} exceed request.maxSources ${packet.request.maxSources}`);
288
+ }
289
+ for (const claim of packet.claims) {
290
+ for (const sid of claim.sourceIds) {
291
+ if (!sourceIds.has(sid))
292
+ errors.push(`claim ${claim.id} references unknown source ${sid}`);
293
+ }
294
+ const verified = claim.verification === 'observed' || claim.verification === 'partially_observed';
295
+ if (verified && claim.sourceIds.length === 0) {
296
+ errors.push(`claim ${claim.id} marked ${claim.verification} but has no source binding`);
297
+ }
298
+ if (claim.verification === 'observed' && claim.evidenceKind === 'inference') {
299
+ errors.push(`claim ${claim.id} is inference but marked observed`);
300
+ }
301
+ }
302
+ return { ok: errors.length === 0, errors };
303
+ }
304
+ function sortDeep(value) {
305
+ if (Array.isArray(value))
306
+ return value.map(sortDeep);
307
+ if (value && typeof value === 'object') {
308
+ const obj = value;
309
+ const sorted = {};
310
+ for (const key of Object.keys(obj).sort())
311
+ sorted[key] = sortDeep(obj[key]);
312
+ return sorted;
313
+ }
314
+ return value;
315
+ }
316
+ /** Deterministic JSON (sorted keys) for a value. */
317
+ function stableStringify(value) {
318
+ return JSON.stringify(sortDeep(value));
319
+ }
320
+ /** Strip volatile timestamps so the content hash is reproducible across runs. */
321
+ function packetContentForHash(packet) {
322
+ return sortDeep({
323
+ ...packet,
324
+ createdAt: undefined,
325
+ sources: packet.sources.map(s => ({ ...s, retrievedAt: undefined })),
326
+ });
327
+ }
328
+ /**
329
+ * Content hash over the canonical packet body (timestamps excluded). Proves what
330
+ * was read, NOT that the content is true; used for dedupe and drift detection.
331
+ */
332
+ function hashPacket(packet) {
333
+ return (0, crypto_1.createHash)('sha256')
334
+ .update(stableStringify(packetContentForHash(packet)))
335
+ .digest('hex');
336
+ }
337
+ //# sourceMappingURL=research-contract.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"research-contract.js","sourceRoot":"","sources":["../../../src/runtime/subagents/research-contract.ts"],"names":[],"mappings":"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"}