@qvac/harness 1.0.0-rc.1 → 1.0.0-rc.3

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 (852) hide show
  1. package/CHANGELOG.md +1168 -1
  2. package/NOTICE.md +16 -0
  3. package/README.md +278 -471
  4. package/bench/README.md +94 -0
  5. package/bench/bfcl/checker.ts +313 -0
  6. package/bench/bfcl/data.ts +93 -0
  7. package/bench/bfcl/observe.ts +93 -0
  8. package/bench/bfcl/run.ts +213 -0
  9. package/bench/bfcl/tools.ts +72 -0
  10. package/bench/bridge/bridge.ts +392 -0
  11. package/bench/bridge/openai.ts +150 -0
  12. package/bench/bridge/python/qvac_bench/__init__.py +3 -0
  13. package/bench/bridge/python/qvac_bench/airline.py +42 -0
  14. package/bench/bridge/python/qvac_bench/approval.py +26 -0
  15. package/bench/bridge/python/qvac_bench/bfcl_multi_turn.py +152 -0
  16. package/bench/bridge/python/qvac_bench/client.py +88 -0
  17. package/bench/bridge/python/qvac_bench/harbor_agent.py +85 -0
  18. package/bench/bridge/python/qvac_bench/session.py +107 -0
  19. package/bench/bridge/python/qvac_bench/speed.py +30 -0
  20. package/bench/bridge/python/qvac_bench/tau2_agent.py +106 -0
  21. package/bench/bridge/python/qvac_bench/tools.py +11 -0
  22. package/bench/bridge/python/run_bfcl_multi_turn.py +95 -0
  23. package/bench/bridge/python/run_tau2.py +150 -0
  24. package/bench/bridge/python/smoke.py +47 -0
  25. package/bench/bridge/python/test_airline.py +28 -0
  26. package/bench/bridge/python/test_approval.py +57 -0
  27. package/bench/bridge/python/test_bfcl_multi_turn.py +185 -0
  28. package/bench/bridge/python/test_harbor_agent.py +107 -0
  29. package/bench/bridge/serve.ts +52 -0
  30. package/bench/bridge/transcript.ts +52 -0
  31. package/bench/bun-tsconfig.json +15 -0
  32. package/bench/cpu-main.mjs +216 -0
  33. package/bench/cpu.ts +457 -0
  34. package/bench/evidence/2026-09-28-review15.md +225 -0
  35. package/bench/evidence/redact-bun1.3.14.json +92 -0
  36. package/bench/evidence/redact-node24.11.json +92 -0
  37. package/bench/graph-metrics.ts +43 -0
  38. package/bench/harness.ts +73 -0
  39. package/bench/issue129-matrix.mjs +722 -0
  40. package/bench/redact-adversarial.ts +256 -0
  41. package/bench/repeat-cpu.mjs +281 -0
  42. package/bench/report.ts +1075 -0
  43. package/bench/skill-eval/harness.ts +30 -0
  44. package/bench/skill-eval/laws.ts +37 -0
  45. package/bench/skill-eval/mermaid/client.ts +132 -0
  46. package/bench/skill-eval/mermaid/validate.mjs +115 -0
  47. package/bench/skill-eval/pack.ts +61 -0
  48. package/bench/skill-eval/packs/diagrams/cases.ts +281 -0
  49. package/bench/skill-eval/packs/diagrams/index.ts +50 -0
  50. package/bench/skill-eval/packs/diagrams/score.ts +74 -0
  51. package/bench/skill-eval/packs/index.ts +5 -0
  52. package/bench/skill-eval/packs/weather/cases.ts +279 -0
  53. package/bench/skill-eval/packs/weather/fixtures/wttr.json +566 -0
  54. package/bench/skill-eval/packs/weather/fixtures.ts +84 -0
  55. package/bench/skill-eval/packs/weather/index.ts +55 -0
  56. package/bench/skill-eval/packs/weather/score.ts +92 -0
  57. package/bench/skill-eval/report.ts +194 -0
  58. package/bench/skill-eval/run.ts +316 -0
  59. package/bench/speed.ts +80 -0
  60. package/dist-lib/index.d.ts +101 -169
  61. package/dist-lib/index.js +423 -1506
  62. package/dist-lib/lib/addon-seal.bare.d.ts +1 -0
  63. package/dist-lib/lib/addon-seal.bare.js +3 -0
  64. package/dist-lib/lib/addon-seal.node.d.ts +1 -0
  65. package/dist-lib/lib/addon-seal.node.js +1 -0
  66. package/dist-lib/lib/agent/delegate.d.ts +83 -0
  67. package/dist-lib/lib/agent/delegate.js +261 -0
  68. package/dist-lib/lib/agent/follow.d.ts +32 -0
  69. package/dist-lib/lib/agent/follow.js +162 -0
  70. package/dist-lib/lib/agent/index.d.ts +37 -0
  71. package/dist-lib/lib/agent/index.js +42 -0
  72. package/dist-lib/lib/agent/plan.d.ts +6 -0
  73. package/dist-lib/lib/agent/plan.js +74 -0
  74. package/dist-lib/lib/agent/resolve.d.ts +3 -0
  75. package/dist-lib/lib/agent/resolve.js +78 -0
  76. package/dist-lib/lib/{capabilities → agent}/tool-names.d.ts +0 -1
  77. package/dist-lib/lib/{capabilities → agent}/tool-names.js +0 -1
  78. package/dist-lib/lib/{capabilities → agent}/tool-selection.d.ts +3 -6
  79. package/dist-lib/lib/{capabilities → agent}/tool-selection.js +9 -1
  80. package/dist-lib/lib/agent/tools.d.ts +14 -0
  81. package/dist-lib/lib/agent/tools.js +16 -0
  82. package/dist-lib/lib/agent/transfer.d.ts +7 -0
  83. package/dist-lib/lib/agent/transfer.js +26 -0
  84. package/dist-lib/lib/capabilities/agent-ports.d.ts +3 -0
  85. package/dist-lib/lib/capabilities/agent-ports.js +9 -0
  86. package/dist-lib/lib/capabilities/completion-engine/actors/answering.d.ts +1 -1
  87. package/dist-lib/lib/capabilities/completion-engine/actors/answering.js +25 -9
  88. package/dist-lib/lib/capabilities/completion-engine/actors/batching.d.ts +3 -0
  89. package/dist-lib/lib/capabilities/completion-engine/actors/batching.js +90 -0
  90. package/dist-lib/lib/capabilities/completion-engine/actors/direct-search.d.ts +2 -1
  91. package/dist-lib/lib/capabilities/completion-engine/actors/direct-search.js +14 -5
  92. package/dist-lib/lib/capabilities/completion-engine/actors/execute.d.ts +5 -3
  93. package/dist-lib/lib/capabilities/completion-engine/actors/execute.js +8 -3
  94. package/dist-lib/lib/capabilities/completion-engine/actors/executing.d.ts +29 -2
  95. package/dist-lib/lib/capabilities/completion-engine/actors/executing.js +100 -40
  96. package/dist-lib/lib/capabilities/completion-engine/actors/execution-plan.d.ts +11 -10
  97. package/dist-lib/lib/capabilities/completion-engine/actors/execution-plan.js +28 -21
  98. package/dist-lib/lib/capabilities/completion-engine/actors/finishing.js +2 -2
  99. package/dist-lib/lib/capabilities/completion-engine/actors/inspect-prepare.d.ts +4 -0
  100. package/dist-lib/lib/capabilities/completion-engine/actors/inspect-prepare.js +67 -0
  101. package/dist-lib/lib/capabilities/completion-engine/actors/inspecting.d.ts +10 -3
  102. package/dist-lib/lib/capabilities/completion-engine/actors/inspecting.js +14 -11
  103. package/dist-lib/lib/capabilities/completion-engine/actors/loading-skill.d.ts +7 -3
  104. package/dist-lib/lib/capabilities/completion-engine/actors/loading-skill.js +30 -31
  105. package/dist-lib/lib/capabilities/completion-engine/actors/preparing.d.ts +3 -2
  106. package/dist-lib/lib/capabilities/completion-engine/actors/preparing.js +86 -102
  107. package/dist-lib/lib/capabilities/completion-engine/actors/rejecting.d.ts +1 -1
  108. package/dist-lib/lib/capabilities/completion-engine/actors/rejecting.js +24 -7
  109. package/dist-lib/lib/capabilities/completion-engine/actors/rejection.d.ts +4 -2
  110. package/dist-lib/lib/capabilities/completion-engine/actors/rejection.js +8 -8
  111. package/dist-lib/lib/capabilities/completion-engine/actors/resolving.d.ts +1 -1
  112. package/dist-lib/lib/capabilities/completion-engine/actors/resolving.js +73 -15
  113. package/dist-lib/lib/capabilities/completion-engine/actors/retrieving.d.ts +10 -0
  114. package/dist-lib/lib/capabilities/completion-engine/actors/retrieving.js +56 -0
  115. package/dist-lib/lib/capabilities/completion-engine/actors/run-prepare.d.ts +4 -0
  116. package/dist-lib/lib/capabilities/completion-engine/actors/run-prepare.js +74 -0
  117. package/dist-lib/lib/capabilities/completion-engine/actors/skill-step.d.ts +2 -0
  118. package/dist-lib/lib/capabilities/completion-engine/actors/skill-step.js +76 -0
  119. package/dist-lib/lib/capabilities/completion-engine/actors/stream.d.ts +2 -2
  120. package/dist-lib/lib/capabilities/completion-engine/actors/stream.js +2 -1
  121. package/dist-lib/lib/capabilities/completion-engine/actors/streaming.d.ts +1 -1
  122. package/dist-lib/lib/capabilities/completion-engine/actors/streaming.js +84 -26
  123. package/dist-lib/lib/capabilities/completion-engine/actors/wrap-up.d.ts +1 -1
  124. package/dist-lib/lib/capabilities/completion-engine/actors/wrap-up.js +16 -6
  125. package/dist-lib/lib/capabilities/completion-engine/actors.d.ts +11 -0
  126. package/dist-lib/lib/capabilities/completion-engine/actors.js +216 -0
  127. package/dist-lib/lib/capabilities/completion-engine/driver.d.ts +12 -5
  128. package/dist-lib/lib/capabilities/completion-engine/driver.js +118 -33
  129. package/dist-lib/lib/capabilities/completion-engine/durable.d.ts +2 -1
  130. package/dist-lib/lib/capabilities/completion-engine/durable.js +6 -4
  131. package/dist-lib/lib/capabilities/completion-engine/engine.d.ts +65 -0
  132. package/dist-lib/lib/{machine → capabilities/completion-engine}/engine.js +67 -130
  133. package/dist-lib/lib/capabilities/completion-engine/index.d.ts +30 -0
  134. package/dist-lib/lib/capabilities/completion-engine/index.js +44 -0
  135. package/dist-lib/lib/capabilities/completion-engine/loop.d.ts +58 -0
  136. package/dist-lib/lib/capabilities/completion-engine/loop.js +62 -0
  137. package/dist-lib/lib/capabilities/completion-engine/metrics.d.ts +4 -0
  138. package/dist-lib/lib/capabilities/completion-engine/metrics.js +46 -0
  139. package/dist-lib/lib/capabilities/completion-engine/operations.d.ts +5 -2
  140. package/dist-lib/lib/capabilities/completion-engine/operations.js +84 -15
  141. package/dist-lib/lib/capabilities/completion-engine/ports.d.ts +25 -2
  142. package/dist-lib/lib/capabilities/completion-engine/ports.js +25 -16
  143. package/dist-lib/lib/capabilities/completion-engine/prepare-step.d.ts +26 -0
  144. package/dist-lib/lib/{machine → capabilities/completion-engine}/replay-output.d.ts +1 -1
  145. package/dist-lib/lib/{machine → capabilities/completion-engine}/replay-output.js +1 -1
  146. package/dist-lib/lib/capabilities/{completion-loop → completion-engine}/round.d.ts +24 -4
  147. package/dist-lib/lib/capabilities/{completion-loop → completion-engine}/round.js +242 -27
  148. package/dist-lib/lib/capabilities/completion-engine/session.d.ts +19 -12
  149. package/dist-lib/lib/capabilities/completion-engine/session.js +12 -6
  150. package/dist-lib/lib/capabilities/completion-engine/splice.d.ts +2 -0
  151. package/dist-lib/lib/capabilities/completion-engine/splice.js +7 -0
  152. package/dist-lib/lib/capabilities/completion-engine/stages.d.ts +23 -0
  153. package/dist-lib/lib/capabilities/completion-engine/tool-caller.d.ts +10 -0
  154. package/dist-lib/lib/capabilities/completion-engine/tool-caller.js +151 -0
  155. package/dist-lib/lib/capabilities/completion-engine/tool-execution.d.ts +77 -0
  156. package/dist-lib/lib/capabilities/{completion-loop → completion-engine}/tool-execution.js +74 -25
  157. package/dist-lib/lib/capabilities/{completion-loop → completion-engine}/turns.d.ts +8 -4
  158. package/dist-lib/lib/capabilities/completion-engine/turns.js +225 -0
  159. package/dist-lib/lib/capabilities/enhance.d.ts +1 -1
  160. package/dist-lib/lib/capabilities/enhance.js +3 -2
  161. package/dist-lib/lib/capabilities/invoke.d.ts +1 -1
  162. package/dist-lib/lib/capabilities/preview-model-source.d.ts +1 -10
  163. package/dist-lib/lib/capabilities/preview-model-source.js +3 -1
  164. package/dist-lib/lib/capabilities/sdk-tool.d.ts +10 -0
  165. package/dist-lib/lib/capabilities/sdk-tool.js +130 -0
  166. package/dist-lib/lib/capabilities/skill-entry.d.ts +8 -0
  167. package/dist-lib/lib/capabilities/skill-entry.js +14 -0
  168. package/dist-lib/lib/capabilities/tool-plan.d.ts +6 -5
  169. package/dist-lib/lib/capabilities/tool-plan.js +16 -10
  170. package/dist-lib/lib/capabilities/tool-turns.d.ts +29 -4
  171. package/dist-lib/lib/capabilities/tool-turns.js +120 -10
  172. package/dist-lib/lib/capabilities/usage-breakdown.d.ts +1 -1
  173. package/dist-lib/lib/capabilities/usage-breakdown.js +4 -1
  174. package/dist-lib/lib/connect.d.ts +6 -0
  175. package/dist-lib/lib/connect.js +153 -65
  176. package/dist-lib/lib/context-window.d.ts +4 -2
  177. package/dist-lib/lib/context-window.js +27 -16
  178. package/dist-lib/lib/contract/agent.d.ts +65 -0
  179. package/dist-lib/lib/{capabilities/types.d.ts → contract/completion.d.ts} +140 -26
  180. package/dist-lib/lib/contract/exec.d.ts +134 -0
  181. package/dist-lib/lib/{hooks/types.d.ts → contract/hooks.d.ts} +62 -10
  182. package/dist-lib/lib/contract/index.d.ts +5 -0
  183. package/dist-lib/lib/contract/knowledge.d.ts +60 -0
  184. package/dist-lib/lib/contract/knowledge.js +1 -0
  185. package/dist-lib/lib/contract/models.d.ts +56 -0
  186. package/dist-lib/lib/contract/models.js +1 -0
  187. package/dist-lib/lib/contract/run.d.ts +142 -0
  188. package/dist-lib/lib/contract/run.js +1 -0
  189. package/dist-lib/lib/contract/sandbox.d.ts +29 -0
  190. package/dist-lib/lib/contract/sandbox.js +1 -0
  191. package/dist-lib/lib/contract/skill-readiness.d.ts +14 -0
  192. package/dist-lib/lib/contract/skill-readiness.js +1 -0
  193. package/dist-lib/lib/{capabilities/voice.d.ts → contract/speech.d.ts} +11 -16
  194. package/dist-lib/lib/contract/speech.js +1 -0
  195. package/dist-lib/lib/contract-types.d.ts +43 -16
  196. package/dist-lib/lib/docx/index.d.ts +0 -1
  197. package/dist-lib/lib/docx/index.js +15 -24
  198. package/dist-lib/lib/embeddings/index.d.ts +63 -0
  199. package/dist-lib/lib/embeddings/index.js +267 -0
  200. package/dist-lib/lib/fold/index.d.ts +50 -0
  201. package/dist-lib/lib/fold/index.js +123 -0
  202. package/dist-lib/lib/{tools/exec/adapters/python/guarded-fetch.d.ts → guarded-fetch.d.ts} +5 -12
  203. package/dist-lib/lib/{tools/exec/adapters/python/guarded-fetch.js → guarded-fetch.js} +12 -34
  204. package/dist-lib/lib/helpers/completion-params.d.ts +3 -0
  205. package/dist-lib/lib/helpers/completion-params.js +12 -0
  206. package/dist-lib/lib/helpers/copy.d.ts +1 -0
  207. package/dist-lib/lib/helpers/copy.js +5 -0
  208. package/dist-lib/lib/helpers/drain.d.ts +5 -0
  209. package/dist-lib/lib/helpers/drain.js +19 -0
  210. package/dist-lib/lib/{machine/errors.d.ts → helpers/engine-error.d.ts} +6 -9
  211. package/dist-lib/lib/{machine/errors.js → helpers/engine-error.js} +9 -25
  212. package/dist-lib/lib/helpers/failure-result.d.ts +21 -0
  213. package/dist-lib/lib/helpers/failure-result.js +39 -0
  214. package/dist-lib/lib/helpers/head-tail.d.ts +7 -0
  215. package/dist-lib/lib/helpers/head-tail.js +19 -0
  216. package/dist-lib/lib/helpers/image-settings.d.ts +2 -0
  217. package/dist-lib/lib/helpers/image-settings.js +19 -0
  218. package/dist-lib/lib/helpers/mcp-methods.d.ts +2 -0
  219. package/dist-lib/lib/helpers/mcp-methods.js +14 -0
  220. package/dist-lib/lib/helpers/race-abort.d.ts +1 -1
  221. package/dist-lib/lib/helpers/race-abort.js +1 -1
  222. package/dist-lib/lib/helpers/repeated-reply.d.ts +2 -0
  223. package/dist-lib/lib/helpers/repeated-reply.js +63 -0
  224. package/dist-lib/lib/helpers/run-outcome.d.ts +5 -4
  225. package/dist-lib/lib/helpers/run-outcome.js +11 -9
  226. package/dist-lib/lib/{machine → helpers}/stable-stringify.js +1 -1
  227. package/dist-lib/lib/helpers/tool-call-markup.d.ts +1 -0
  228. package/dist-lib/lib/helpers/tool-call-markup.js +9 -5
  229. package/dist-lib/lib/helpers/tool-label.d.ts +2 -2
  230. package/dist-lib/lib/helpers/tool-label.js +3 -3
  231. package/dist-lib/lib/hooks/built-in/arg-repair.d.ts +1 -1
  232. package/dist-lib/lib/hooks/built-in/arg-repair.js +109 -19
  233. package/dist-lib/lib/hooks/built-in/egress.d.ts +1 -1
  234. package/dist-lib/lib/hooks/built-in/egress.js +13 -21
  235. package/dist-lib/lib/hooks/built-in/sandbox.d.ts +1 -1
  236. package/dist-lib/lib/hooks/built-in/skill-catalog.d.ts +1 -1
  237. package/dist-lib/lib/hooks/index.d.ts +48 -0
  238. package/dist-lib/lib/hooks/index.js +130 -0
  239. package/dist-lib/lib/hooks/run.d.ts +9 -6
  240. package/dist-lib/lib/hooks/run.js +113 -48
  241. package/dist-lib/lib/{completion-lifecycle.d.ts → lifecycle/completion-run.d.ts} +1 -1
  242. package/dist-lib/lib/{completion-lifecycle.js → lifecycle/completion-run.js} +1 -1
  243. package/dist-lib/lib/lifecycle/index.d.ts +83 -0
  244. package/dist-lib/lib/lifecycle/index.js +335 -0
  245. package/dist-lib/lib/{harness-lifecycle.js → lifecycle/machine.js} +2 -2
  246. package/dist-lib/lib/machine/completion/actions/completion.d.ts +11 -2
  247. package/dist-lib/lib/machine/completion/actions/completion.js +98 -14
  248. package/dist-lib/lib/machine/completion/actions/prepare.d.ts +9 -0
  249. package/dist-lib/lib/machine/completion/actions/prepare.js +30 -0
  250. package/dist-lib/lib/machine/completion/actions/tools.d.ts +10 -1
  251. package/dist-lib/lib/machine/completion/actions/tools.js +79 -7
  252. package/dist-lib/lib/machine/completion/context.d.ts +7 -2
  253. package/dist-lib/lib/machine/completion/context.js +29 -5
  254. package/dist-lib/lib/machine/completion/guards/retry.d.ts +1 -0
  255. package/dist-lib/lib/machine/completion/guards/retry.js +6 -3
  256. package/dist-lib/lib/machine/completion/implementations.d.ts +38 -12
  257. package/dist-lib/lib/machine/completion/implementations.js +81 -31
  258. package/dist-lib/lib/machine/completion/machine.d.ts +140 -63
  259. package/dist-lib/lib/machine/completion/machine.js +194 -58
  260. package/dist-lib/lib/machine/completion/ports.d.ts +7 -55
  261. package/dist-lib/lib/machine/completion/ports.js +1 -224
  262. package/dist-lib/lib/machine/completion/rules.d.ts +20 -19
  263. package/dist-lib/lib/machine/completion/rules.js +73 -52
  264. package/dist-lib/lib/machine/completion/types.d.ts +110 -187
  265. package/dist-lib/lib/machine/completion/version.d.ts +1 -0
  266. package/dist-lib/lib/machine/completion/version.js +1 -0
  267. package/dist-lib/lib/machine/definition.d.ts +23 -0
  268. package/dist-lib/lib/machine/definition.js +76 -0
  269. package/dist-lib/lib/machine/index.d.ts +463 -20
  270. package/dist-lib/lib/machine/index.js +15 -11
  271. package/dist-lib/lib/models/llm-presets.d.ts +1 -0
  272. package/dist-lib/lib/models/model-catalog-constants.d.ts +3 -1
  273. package/dist-lib/lib/models/model-catalog-constants.js +9 -1
  274. package/dist-lib/lib/models/model-catalog.d.ts +31 -4
  275. package/dist-lib/lib/models/model-catalog.js +89 -8
  276. package/dist-lib/lib/models/model-fit.d.ts +55 -0
  277. package/dist-lib/lib/models/model-fit.js +102 -0
  278. package/dist-lib/lib/models/model-handle.d.ts +4 -0
  279. package/dist-lib/lib/models/model-handle.js +8 -1
  280. package/dist-lib/lib/models/model-list.d.ts +4 -0
  281. package/dist-lib/lib/models/model-pool.d.ts +35 -10
  282. package/dist-lib/lib/models/model-pool.js +63 -14
  283. package/dist-lib/lib/models/music-catalog.d.ts +1 -1
  284. package/dist-lib/lib/models/music-catalog.js +8 -1
  285. package/dist-lib/lib/models/sdk-faults.d.ts +2 -0
  286. package/dist-lib/lib/models/sdk-faults.js +18 -0
  287. package/dist-lib/lib/models/tts-model-default.js +3 -3
  288. package/dist-lib/lib/office/engine/codes.d.ts +62 -0
  289. package/dist-lib/lib/office/engine/codes.js +61 -0
  290. package/dist-lib/lib/office/engine/docx/document.d.ts +216 -0
  291. package/dist-lib/lib/office/engine/docx/document.js +1152 -0
  292. package/dist-lib/lib/office/engine/docx/index.d.ts +7 -0
  293. package/dist-lib/lib/office/engine/docx/index.js +8 -0
  294. package/dist-lib/lib/office/engine/docx/styles.d.ts +31 -0
  295. package/dist-lib/lib/office/engine/docx/styles.js +173 -0
  296. package/dist-lib/lib/office/engine/docx/template.d.ts +18 -0
  297. package/dist-lib/lib/office/engine/docx/template.js +133 -0
  298. package/dist-lib/lib/office/engine/docx/text.d.ts +55 -0
  299. package/dist-lib/lib/office/engine/docx/text.js +538 -0
  300. package/dist-lib/lib/office/engine/drawingml/chart.d.ts +63 -0
  301. package/dist-lib/lib/office/engine/drawingml/chart.js +539 -0
  302. package/dist-lib/lib/office/engine/drawingml/text.d.ts +35 -0
  303. package/dist-lib/lib/office/engine/drawingml/text.js +352 -0
  304. package/dist-lib/lib/office/engine/errors.d.ts +6 -0
  305. package/dist-lib/lib/office/engine/errors.js +12 -0
  306. package/dist-lib/lib/office/engine/image.d.ts +8 -0
  307. package/dist-lib/lib/office/engine/image.js +48 -0
  308. package/dist-lib/lib/office/engine/index.d.ts +12 -0
  309. package/dist-lib/lib/office/engine/index.js +7 -0
  310. package/dist-lib/lib/office/engine/opc/content-types.d.ts +17 -0
  311. package/dist-lib/lib/office/engine/opc/content-types.js +74 -0
  312. package/dist-lib/lib/office/engine/opc/media.d.ts +13 -0
  313. package/dist-lib/lib/office/engine/opc/media.js +11 -0
  314. package/dist-lib/lib/office/engine/opc/package.d.ts +51 -0
  315. package/dist-lib/lib/office/engine/opc/package.js +324 -0
  316. package/dist-lib/lib/office/engine/opc/paths.d.ts +7 -0
  317. package/dist-lib/lib/office/engine/opc/paths.js +46 -0
  318. package/dist-lib/lib/office/engine/opc/properties.d.ts +7 -0
  319. package/dist-lib/lib/office/engine/opc/properties.js +75 -0
  320. package/dist-lib/lib/office/engine/opc/relationships.d.ts +23 -0
  321. package/dist-lib/lib/office/engine/opc/relationships.js +65 -0
  322. package/dist-lib/lib/office/engine/opc/zip.d.ts +15 -0
  323. package/dist-lib/lib/office/engine/opc/zip.js +264 -0
  324. package/dist-lib/lib/office/engine/pptx/fit.d.ts +12 -0
  325. package/dist-lib/lib/office/engine/pptx/fit.js +37 -0
  326. package/dist-lib/lib/office/engine/pptx/index.d.ts +8 -0
  327. package/dist-lib/lib/office/engine/pptx/index.js +8 -0
  328. package/dist-lib/lib/office/engine/pptx/inherit.d.ts +29 -0
  329. package/dist-lib/lib/office/engine/pptx/inherit.js +155 -0
  330. package/dist-lib/lib/office/engine/pptx/notes.d.ts +5 -0
  331. package/dist-lib/lib/office/engine/pptx/notes.js +85 -0
  332. package/dist-lib/lib/office/engine/pptx/presentation.d.ts +54 -0
  333. package/dist-lib/lib/office/engine/pptx/presentation.js +749 -0
  334. package/dist-lib/lib/office/engine/pptx/read.d.ts +9 -0
  335. package/dist-lib/lib/office/engine/pptx/read.js +66 -0
  336. package/dist-lib/lib/office/engine/pptx/shapes.d.ts +52 -0
  337. package/dist-lib/lib/office/engine/pptx/shapes.js +276 -0
  338. package/dist-lib/lib/office/engine/pptx/slides.d.ts +27 -0
  339. package/dist-lib/lib/office/engine/pptx/slides.js +123 -0
  340. package/dist-lib/lib/office/engine/pptx/template.d.ts +20 -0
  341. package/dist-lib/lib/office/engine/pptx/template.js +391 -0
  342. package/dist-lib/lib/office/engine/pptx/types.d.ts +120 -0
  343. package/dist-lib/lib/office/engine/pptx/types.js +1 -0
  344. package/dist-lib/lib/office/engine/units.d.ts +3 -0
  345. package/dist-lib/lib/office/engine/units.js +12 -0
  346. package/dist-lib/lib/office/engine/utf8.d.ts +2 -0
  347. package/dist-lib/lib/office/engine/utf8.js +103 -0
  348. package/dist-lib/lib/office/engine/xlsx/formula.d.ts +49 -0
  349. package/dist-lib/lib/office/engine/xlsx/formula.js +381 -0
  350. package/dist-lib/lib/office/engine/xlsx/index.d.ts +8 -0
  351. package/dist-lib/lib/office/engine/xlsx/index.js +8 -0
  352. package/dist-lib/lib/office/engine/xlsx/refs.d.ts +22 -0
  353. package/dist-lib/lib/office/engine/xlsx/refs.js +82 -0
  354. package/dist-lib/lib/office/engine/xlsx/reshape.d.ts +21 -0
  355. package/dist-lib/lib/office/engine/xlsx/reshape.js +424 -0
  356. package/dist-lib/lib/office/engine/xlsx/sheet.d.ts +108 -0
  357. package/dist-lib/lib/office/engine/xlsx/sheet.js +662 -0
  358. package/dist-lib/lib/office/engine/xlsx/strings.d.ts +15 -0
  359. package/dist-lib/lib/office/engine/xlsx/strings.js +93 -0
  360. package/dist-lib/lib/office/engine/xlsx/styles.d.ts +38 -0
  361. package/dist-lib/lib/office/engine/xlsx/styles.js +369 -0
  362. package/dist-lib/lib/office/engine/xlsx/template.d.ts +7 -0
  363. package/dist-lib/lib/office/engine/xlsx/template.js +54 -0
  364. package/dist-lib/lib/office/engine/xlsx/workbook.d.ts +161 -0
  365. package/dist-lib/lib/office/engine/xlsx/workbook.js +850 -0
  366. package/dist-lib/lib/office/engine/xlsx/write.d.ts +2 -0
  367. package/dist-lib/lib/office/engine/xlsx/write.js +42 -0
  368. package/dist-lib/lib/office/engine/xml.d.ts +45 -0
  369. package/dist-lib/lib/office/engine/xml.js +258 -0
  370. package/dist-lib/lib/office/extract.d.ts +9 -0
  371. package/dist-lib/lib/office/extract.js +19 -0
  372. package/dist-lib/lib/office/index.d.ts +1 -1
  373. package/dist-lib/lib/office/index.js +74 -19
  374. package/dist-lib/lib/plugins/addons.d.ts +2 -0
  375. package/dist-lib/lib/plugins/addons.js +12 -0
  376. package/dist-lib/lib/plugins/context.d.ts +16 -0
  377. package/dist-lib/lib/plugins/context.js +48 -0
  378. package/dist-lib/lib/plugins/index.d.ts +3 -0
  379. package/dist-lib/lib/plugins/index.js +1 -0
  380. package/dist-lib/lib/plugins/registry.d.ts +116 -0
  381. package/dist-lib/lib/plugins/registry.js +505 -0
  382. package/dist-lib/lib/plugins/runtime.d.ts +27 -0
  383. package/dist-lib/lib/plugins/runtime.js +143 -0
  384. package/dist-lib/lib/plugins/scope.d.ts +17 -0
  385. package/dist-lib/lib/plugins/scope.js +55 -0
  386. package/dist-lib/lib/prompt.d.ts +2 -5
  387. package/dist-lib/lib/prompt.js +9 -0
  388. package/dist-lib/lib/residency/completion-runtime.d.ts +52 -0
  389. package/dist-lib/lib/{capabilities → residency}/completion-runtime.js +22 -15
  390. package/dist-lib/lib/residency/index.d.ts +148 -0
  391. package/dist-lib/lib/residency/index.js +539 -0
  392. package/dist-lib/lib/run-log/boundary.d.ts +17 -0
  393. package/dist-lib/lib/run-log/boundary.js +58 -0
  394. package/dist-lib/lib/run-log/history-codec.d.ts +7 -6
  395. package/dist-lib/lib/run-log/history-codec.js +175 -46
  396. package/dist-lib/lib/run-log/index.d.ts +46 -0
  397. package/dist-lib/lib/run-log/index.js +40 -0
  398. package/dist-lib/lib/run-log/inspect.d.ts +53 -0
  399. package/dist-lib/lib/{run-log-inspect.js → run-log/inspect.js} +196 -139
  400. package/dist-lib/lib/run-log/live.d.ts +37 -0
  401. package/dist-lib/lib/run-log/live.js +195 -0
  402. package/dist-lib/lib/run-log/persisted-actor.d.ts +1 -6
  403. package/dist-lib/lib/run-log/persisted-actor.js +4 -3
  404. package/dist-lib/lib/run-log/protocol-types.d.ts +37 -14
  405. package/dist-lib/lib/run-log/protocol.d.ts +1 -2
  406. package/dist-lib/lib/run-log/protocol.js +45 -40
  407. package/dist-lib/lib/{run-log-redact.d.ts → run-log/redact.d.ts} +3 -2
  408. package/dist-lib/lib/{run-log-redact.js → run-log/redact.js} +101 -16
  409. package/dist-lib/lib/run-log/replay.d.ts +3 -2
  410. package/dist-lib/lib/run-log/replay.js +7 -6
  411. package/dist-lib/lib/run-log/request-codec.d.ts +17 -0
  412. package/dist-lib/lib/run-log/request-codec.js +87 -0
  413. package/dist-lib/lib/run-log/run-journal.d.ts +14 -8
  414. package/dist-lib/lib/run-log/run-journal.js +100 -75
  415. package/dist-lib/lib/sdk-loader.d.ts +2 -7
  416. package/dist-lib/lib/sdk-loader.js +8 -15
  417. package/dist-lib/lib/sdk-storage.js +3 -1
  418. package/dist-lib/lib/serve.js +139 -38
  419. package/dist-lib/lib/skills-host/index.d.ts +59 -0
  420. package/dist-lib/lib/skills-host/index.js +268 -0
  421. package/dist-lib/lib/spawn.d.ts +37 -3
  422. package/dist-lib/lib/spawn.js +7 -3
  423. package/dist-lib/lib/spill.d.ts +11 -0
  424. package/dist-lib/lib/spill.js +82 -0
  425. package/dist-lib/lib/tools/{exec/adapters/python → attachments}/output-policy.d.ts +2 -3
  426. package/dist-lib/lib/tools/{exec/adapters/python/attachments.d.ts → attachments/staging.d.ts} +2 -2
  427. package/dist-lib/lib/tools/{exec/adapters/python/attachments.js → attachments/staging.js} +3 -3
  428. package/dist-lib/lib/tools/catalog.d.ts +1 -1
  429. package/dist-lib/lib/tools/catalog.js +1 -1
  430. package/dist-lib/lib/tools/create-documents.d.ts +1 -1
  431. package/dist-lib/lib/tools/edit-documents.d.ts +1 -1
  432. package/dist-lib/lib/tools/exec/adapters/shell/shell-adapter.d.ts +5 -7
  433. package/dist-lib/lib/tools/exec/adapters/shell/shell-adapter.js +3 -2
  434. package/dist-lib/lib/tools/exec/bare-runtime.js +2 -4
  435. package/dist-lib/lib/tools/exec/python-source.d.ts +6 -0
  436. package/dist-lib/lib/tools/exec/python-source.js +243 -0
  437. package/dist-lib/lib/tools/exec/runner.d.ts +24 -45
  438. package/dist-lib/lib/tools/exec/runner.js +68 -34
  439. package/dist-lib/lib/tools/exec/scope.d.ts +2 -0
  440. package/dist-lib/lib/tools/exec/scope.js +33 -2
  441. package/dist-lib/lib/tools/exec/shell-guidance.d.ts +11 -9
  442. package/dist-lib/lib/tools/exec/shell-guidance.js +28 -57
  443. package/dist-lib/lib/tools/exec/video-tools.d.ts +0 -1
  444. package/dist-lib/lib/tools/exec/video-tools.js +0 -5
  445. package/dist-lib/lib/tools/exec.d.ts +7 -14
  446. package/dist-lib/lib/tools/exec.js +181 -457
  447. package/dist-lib/lib/tools/file-glob.d.ts +1 -1
  448. package/dist-lib/lib/tools/file-glob.js +1 -0
  449. package/dist-lib/lib/tools/fs/scope.d.ts +1 -0
  450. package/dist-lib/lib/tools/fs/scope.js +8 -3
  451. package/dist-lib/lib/tools/grep.d.ts +1 -1
  452. package/dist-lib/lib/tools/grep.js +1 -0
  453. package/dist-lib/lib/tools/http-request.d.ts +1 -1
  454. package/dist-lib/lib/tools/http-request.js +1 -0
  455. package/dist-lib/lib/tools/index.d.ts +21 -0
  456. package/dist-lib/lib/tools/index.js +46 -0
  457. package/dist-lib/lib/tools/office/ops.d.ts +13 -0
  458. package/dist-lib/lib/tools/office/ops.js +100 -0
  459. package/dist-lib/lib/tools/office.d.ts +12 -0
  460. package/dist-lib/lib/tools/office.js +486 -0
  461. package/dist-lib/lib/tools/operations/compile.d.ts +3 -3
  462. package/dist-lib/lib/tools/operations/compile.js +2 -1
  463. package/dist-lib/lib/tools/operations/decoders.js +1 -1
  464. package/dist-lib/lib/tools/operations/manifest.d.ts +1 -1
  465. package/dist-lib/lib/tools/outbound-guard.d.ts +3 -1
  466. package/dist-lib/lib/tools/outbound-guard.js +4 -0
  467. package/dist-lib/lib/tools/pdf/build.d.ts +43 -0
  468. package/dist-lib/lib/tools/pdf/build.js +150 -0
  469. package/dist-lib/lib/tools/pdf/images.d.ts +7 -0
  470. package/dist-lib/lib/tools/pdf/images.js +82 -0
  471. package/dist-lib/lib/tools/pdf/request.d.ts +63 -0
  472. package/dist-lib/lib/tools/pdf/request.js +335 -0
  473. package/dist-lib/lib/tools/pdf.d.ts +6 -0
  474. package/dist-lib/lib/tools/pdf.js +303 -0
  475. package/dist-lib/lib/tools/read-files.d.ts +1 -1
  476. package/dist-lib/lib/tools/read-files.js +5 -1
  477. package/dist-lib/lib/tools/skill.d.ts +2 -4
  478. package/dist-lib/lib/tools/skill.js +20 -22
  479. package/dist-lib/lib/tools/skills/auth-resolver.d.ts +1 -1
  480. package/dist-lib/lib/tools/skills/catalog.d.ts +9 -2
  481. package/dist-lib/lib/tools/skills/catalog.js +7 -7
  482. package/dist-lib/lib/tools/skills/cli-schema.js +1 -1
  483. package/dist-lib/lib/tools/skills/frontmatter-parser.d.ts +1 -0
  484. package/dist-lib/lib/tools/skills/frontmatter-parser.js +1 -0
  485. package/dist-lib/lib/tools/skills/mention.d.ts +1 -2
  486. package/dist-lib/lib/tools/skills/mention.js +0 -3
  487. package/dist-lib/lib/tools/skills/scope-key.d.ts +2 -1
  488. package/dist-lib/lib/tools/skills/scope-key.js +2 -3
  489. package/dist-lib/lib/tools/skills/skill-state.d.ts +2 -2
  490. package/dist-lib/lib/tools/skills/skill-state.js +11 -28
  491. package/dist-lib/lib/tools/toolsets.d.ts +3 -7
  492. package/dist-lib/lib/tools/toolsets.js +5 -9
  493. package/dist-lib/lib/tools/web-fetch.d.ts +1 -1
  494. package/dist-lib/lib/tools/web-fetch.js +42 -6
  495. package/dist-lib/lib/web-fetch/embedded-state.js +1 -1
  496. package/dist-lib/lib/web-fetch/extract.js +1 -1
  497. package/dist-lib/lib/web-fetch/images.js +1 -1
  498. package/dist-lib/lib/web-fetch/video.js +1 -1
  499. package/dist-lib/lib/wire.d.ts +8 -0
  500. package/dist-lib/lib/wire.js +112 -2
  501. package/dist-lib/plugins/code-mode/index.d.ts +16 -0
  502. package/dist-lib/plugins/code-mode/index.js +43 -0
  503. package/dist-lib/plugins/coding/index.d.ts +15 -0
  504. package/dist-lib/plugins/coding/index.js +42 -0
  505. package/dist-lib/plugins/coding/jobs.d.ts +24 -0
  506. package/dist-lib/plugins/coding/jobs.js +144 -0
  507. package/dist-lib/plugins/coding/session.d.ts +51 -0
  508. package/dist-lib/plugins/coding/session.js +263 -0
  509. package/dist-lib/plugins/coding/write-file.d.ts +3 -0
  510. package/dist-lib/plugins/coding/write-file.js +52 -0
  511. package/dist-lib/plugins/command-hooks/index.d.ts +88 -0
  512. package/dist-lib/plugins/command-hooks/index.js +338 -0
  513. package/dist-lib/plugins/external-agents/acp.d.ts +27 -0
  514. package/dist-lib/plugins/external-agents/acp.js +264 -0
  515. package/dist-lib/plugins/external-agents/cli.d.ts +3 -0
  516. package/dist-lib/plugins/external-agents/cli.js +199 -0
  517. package/dist-lib/plugins/external-agents/index.d.ts +25 -0
  518. package/dist-lib/plugins/external-agents/index.js +54 -0
  519. package/dist-lib/plugins/external-agents/process.d.ts +19 -0
  520. package/dist-lib/plugins/external-agents/process.js +92 -0
  521. package/dist-lib/plugins/external-agents/targets.d.ts +32 -0
  522. package/dist-lib/plugins/external-agents/targets.js +66 -0
  523. package/dist-lib/{lib/tools → plugins/image}/edit-image.d.ts +3 -2
  524. package/dist-lib/{lib/tools → plugins/image}/edit-image.js +7 -2
  525. package/dist-lib/{lib/tools → plugins/image}/generate-image.d.ts +6 -12
  526. package/dist-lib/{lib/tools → plugins/image}/generate-image.js +6 -7
  527. package/dist-lib/plugins/image/index.d.ts +25 -0
  528. package/dist-lib/plugins/image/index.js +76 -0
  529. package/dist-lib/plugins/knowledge/index.d.ts +21 -0
  530. package/dist-lib/plugins/knowledge/index.js +47 -0
  531. package/dist-lib/plugins/knowledge/search-tool.d.ts +4 -0
  532. package/dist-lib/plugins/knowledge/search-tool.js +38 -0
  533. package/dist-lib/plugins/knowledge/store.d.ts +42 -0
  534. package/dist-lib/plugins/knowledge/store.js +332 -0
  535. package/dist-lib/plugins/lsp/index.d.ts +32 -0
  536. package/dist-lib/plugins/lsp/index.js +77 -0
  537. package/dist-lib/plugins/lsp/pool.d.ts +24 -0
  538. package/dist-lib/plugins/lsp/pool.js +73 -0
  539. package/dist-lib/plugins/lsp/rpc.d.ts +37 -0
  540. package/dist-lib/plugins/lsp/rpc.js +145 -0
  541. package/dist-lib/plugins/lsp/server.d.ts +55 -0
  542. package/dist-lib/plugins/lsp/server.js +192 -0
  543. package/dist-lib/plugins/lsp/tool.d.ts +12 -0
  544. package/dist-lib/plugins/lsp/tool.js +366 -0
  545. package/dist-lib/plugins/mcp/call.d.ts +17 -0
  546. package/dist-lib/{lib/tools/mcp-call.js → plugins/mcp/call.js} +92 -84
  547. package/dist-lib/plugins/mcp/index.d.ts +21 -0
  548. package/dist-lib/plugins/mcp/index.js +85 -0
  549. package/dist-lib/{lib/tools → plugins}/mcp/protocol.d.ts +9 -16
  550. package/dist-lib/{lib/tools → plugins}/mcp/protocol.js +3 -16
  551. package/dist-lib/plugins/mcp/server.d.ts +23 -0
  552. package/dist-lib/plugins/mcp/server.js +108 -0
  553. package/dist-lib/{lib/tools → plugins/music}/generate-music.d.ts +6 -15
  554. package/dist-lib/{lib/tools → plugins/music}/generate-music.js +7 -8
  555. package/dist-lib/plugins/music/index.d.ts +24 -0
  556. package/dist-lib/plugins/music/index.js +48 -0
  557. package/dist-lib/{lib/tools/exec → plugins}/obsidian/cli-process.d.ts +2 -2
  558. package/dist-lib/{lib/tools/exec → plugins}/obsidian/cli-process.js +2 -2
  559. package/dist-lib/{lib/tools/exec → plugins}/obsidian/cli.d.ts +1 -1
  560. package/dist-lib/{lib/tools/exec → plugins}/obsidian/cli.js +7 -7
  561. package/dist-lib/{lib/tools/exec → plugins}/obsidian/command.js +1 -1
  562. package/dist-lib/{lib/tools/exec → plugins}/obsidian/guidance.d.ts +0 -1
  563. package/dist-lib/{lib/tools/exec → plugins}/obsidian/guidance.js +0 -7
  564. package/dist-lib/plugins/obsidian/index.d.ts +26 -0
  565. package/dist-lib/plugins/obsidian/index.js +138 -0
  566. package/dist-lib/{lib/tools/skills/obsidian-readiness.d.ts → plugins/obsidian/readiness.d.ts} +1 -0
  567. package/dist-lib/{lib/tools/skills/obsidian-readiness.js → plugins/obsidian/readiness.js} +7 -0
  568. package/dist-lib/plugins/python/guarded-fetch.d.ts +13 -0
  569. package/dist-lib/plugins/python/guarded-fetch.js +32 -0
  570. package/dist-lib/plugins/python/index.d.ts +18 -0
  571. package/dist-lib/plugins/python/index.js +19 -0
  572. package/dist-lib/{lib/tools/exec/adapters → plugins}/python/interrupt-timer.js +2 -2
  573. package/dist-lib/plugins/python/language.d.ts +8 -0
  574. package/dist-lib/plugins/python/language.js +377 -0
  575. package/dist-lib/{lib/tools/exec/adapters → plugins}/python/loader.d.ts +1 -0
  576. package/dist-lib/{lib/tools/exec/adapters → plugins}/python/loader.js +8 -1
  577. package/dist-lib/{lib/tools/exec/adapters → plugins}/python/memfs.js +3 -3
  578. package/dist-lib/{lib/tools/exec/adapters → plugins}/python/module-distributions.js +0 -3
  579. package/dist-lib/{lib/tools/exec/adapters → plugins}/python/pyodide.js +4 -4
  580. package/dist-lib/plugins/python/python-adapter.d.ts +41 -0
  581. package/dist-lib/plugins/python/python-adapter.js +515 -0
  582. package/dist-lib/{lib/tools/exec/adapters → plugins}/python/run-session.d.ts +1 -2
  583. package/dist-lib/{lib/tools/exec/adapters → plugins}/python/run-session.js +10 -99
  584. package/dist-lib/plugins/python/shell-redirect.d.ts +8 -0
  585. package/dist-lib/plugins/python/shell-redirect.js +25 -0
  586. package/dist-lib/{lib/tools/exec/adapters → plugins}/python/wheels.js +4 -3
  587. package/dist-lib/{lib/tools/exec/adapters → plugins}/python/worker/active.js +1 -1
  588. package/dist-lib/{lib/tools/exec/adapters → plugins}/python/worker/client.d.ts +1 -0
  589. package/dist-lib/{lib/tools/exec/adapters → plugins}/python/worker/client.js +6 -3
  590. package/dist-lib/plugins/python/worker/entry.d.ts +1 -0
  591. package/dist-lib/plugins/python/worker/entry.js +9 -0
  592. package/dist-lib/plugins/python/worker/interrupt-deadline.d.ts +1 -0
  593. package/dist-lib/{lib/tools/exec/adapters → plugins}/python/worker/interrupt-deadline.js +1 -1
  594. package/dist-lib/{lib/tools/exec/adapters → plugins}/python/worker/serve.js +2 -2
  595. package/dist-lib/{lib/tools/exec/adapters → plugins}/python/worker/spawn.d.ts +1 -0
  596. package/dist-lib/{lib/tools/exec/adapters → plugins}/python/worker/spawn.js +7 -0
  597. package/dist-lib/plugins/quickjs/index.d.ts +20 -0
  598. package/dist-lib/plugins/quickjs/index.js +25 -0
  599. package/dist-lib/plugins/quickjs/language.d.ts +3 -0
  600. package/dist-lib/plugins/quickjs/language.js +59 -0
  601. package/dist-lib/plugins/quickjs/runtime.d.ts +38 -0
  602. package/dist-lib/plugins/quickjs/runtime.js +421 -0
  603. package/dist-lib/plugins/quickjs/text-decoder.d.ts +1 -0
  604. package/dist-lib/plugins/quickjs/text-decoder.js +15 -0
  605. package/dist-lib/plugins/run-report/brand.d.ts +1 -0
  606. package/dist-lib/plugins/run-report/brand.js +1 -0
  607. package/dist-lib/plugins/run-report/flow-view.d.ts +6 -0
  608. package/dist-lib/plugins/run-report/flow-view.js +53 -0
  609. package/dist-lib/plugins/run-report/flow.d.ts +33 -0
  610. package/dist-lib/plugins/run-report/flow.js +201 -0
  611. package/dist-lib/plugins/run-report/index.d.ts +17 -0
  612. package/dist-lib/plugins/run-report/index.js +27 -0
  613. package/dist-lib/plugins/run-report/layout.d.ts +39 -0
  614. package/dist-lib/plugins/run-report/layout.js +175 -0
  615. package/dist-lib/plugins/run-report/meaning.d.ts +6 -0
  616. package/dist-lib/plugins/run-report/meaning.js +43 -0
  617. package/dist-lib/plugins/run-report/model.d.ts +86 -0
  618. package/dist-lib/plugins/run-report/model.js +387 -0
  619. package/dist-lib/plugins/run-report/page.d.ts +13 -0
  620. package/dist-lib/plugins/run-report/page.js +234 -0
  621. package/dist-lib/plugins/run-report/script.d.ts +1 -0
  622. package/dist-lib/plugins/run-report/script.js +661 -0
  623. package/dist-lib/plugins/run-report/story.d.ts +48 -0
  624. package/dist-lib/plugins/run-report/story.js +188 -0
  625. package/dist-lib/plugins/run-report/style.d.ts +1 -0
  626. package/dist-lib/plugins/run-report/style.js +410 -0
  627. package/dist-lib/plugins/run-report/why.d.ts +28 -0
  628. package/dist-lib/plugins/run-report/why.js +170 -0
  629. package/dist-lib/plugins/sandbox-macos/index.d.ts +48 -0
  630. package/dist-lib/plugins/sandbox-macos/index.js +175 -0
  631. package/dist-lib/plugins/sandbox-vm/index.d.ts +24 -0
  632. package/dist-lib/plugins/sandbox-vm/index.js +27 -0
  633. package/dist-lib/plugins/sandbox-vm/vm-shell.d.ts +46 -0
  634. package/dist-lib/plugins/sandbox-vm/vm-shell.js +106 -0
  635. package/dist-lib/{lib → plugins/speech}/audio-transcode-bare.js +2 -2
  636. package/dist-lib/plugins/speech/index.d.ts +17 -0
  637. package/dist-lib/plugins/speech/index.js +24 -0
  638. package/dist-lib/plugins/speech/speech-engine.d.ts +23 -0
  639. package/dist-lib/plugins/speech/speech-engine.js +55 -0
  640. package/dist-lib/plugins/speech/speech-runtime.d.ts +22 -0
  641. package/dist-lib/plugins/speech/speech-runtime.js +212 -0
  642. package/dist-lib/{lib/capabilities → plugins/speech}/speech-text.d.ts +1 -0
  643. package/dist-lib/{lib/capabilities → plugins/speech}/speech-text.js +10 -3
  644. package/dist-lib/plugins/speech/voice-lane.d.ts +2 -0
  645. package/dist-lib/plugins/speech/voice-lane.js +9 -0
  646. package/dist-lib/plugins/speech/voice.d.ts +17 -0
  647. package/dist-lib/{lib/capabilities → plugins/speech}/voice.js +27 -25
  648. package/dist-lib/plugins/translation/index.d.ts +22 -0
  649. package/dist-lib/plugins/translation/index.js +63 -0
  650. package/dist-lib/{lib/models → plugins/translation}/nmt-catalog.d.ts +0 -1
  651. package/dist-lib/{lib/models → plugins/translation}/nmt-catalog.js +0 -3
  652. package/dist-lib/{lib/tools → plugins/translation}/translate.d.ts +14 -6
  653. package/dist-lib/{lib/tools → plugins/translation}/translate.js +14 -8
  654. package/dist-lib/plugins/walkie-talkie/crew.d.ts +27 -0
  655. package/dist-lib/plugins/walkie-talkie/crew.js +103 -0
  656. package/dist-lib/plugins/walkie-talkie/index.d.ts +127 -0
  657. package/dist-lib/plugins/walkie-talkie/index.js +340 -0
  658. package/dist-lib/plugins/walkie-talkie/wire.d.ts +67 -0
  659. package/dist-lib/plugins/walkie-talkie/wire.js +136 -0
  660. package/dist-lib/plugins/weather/geocode.d.ts +25 -0
  661. package/dist-lib/plugins/weather/geocode.js +101 -0
  662. package/dist-lib/plugins/weather/index.d.ts +15 -0
  663. package/dist-lib/plugins/weather/index.js +17 -0
  664. package/dist-lib/plugins/weather/lookup.d.ts +6 -0
  665. package/dist-lib/plugins/weather/lookup.js +169 -0
  666. package/dist-lib/{lib/tools/weather-lookup → plugins/weather}/place.js +5 -1
  667. package/dist-lib/plugins/web-search/engine-registry.d.ts +44 -0
  668. package/dist-lib/plugins/web-search/engine-registry.js +17 -0
  669. package/dist-lib/{lib → plugins}/web-search/engines/aol.d.ts +1 -0
  670. package/dist-lib/{lib → plugins}/web-search/engines/aol.js +5 -3
  671. package/dist-lib/{lib → plugins}/web-search/engines/bing.d.ts +1 -0
  672. package/dist-lib/{lib → plugins}/web-search/engines/bing.js +9 -4
  673. package/dist-lib/{lib → plugins}/web-search/engines/brave.d.ts +1 -0
  674. package/dist-lib/{lib → plugins}/web-search/engines/brave.js +5 -3
  675. package/dist-lib/{lib → plugins}/web-search/engines/duckduckgo.d.ts +1 -0
  676. package/dist-lib/{lib → plugins}/web-search/engines/duckduckgo.js +5 -2
  677. package/dist-lib/{lib → plugins}/web-search/engines/google.d.ts +1 -0
  678. package/dist-lib/{lib → plugins}/web-search/engines/google.js +6 -4
  679. package/dist-lib/{lib → plugins}/web-search/engines/wikipedia.d.ts +1 -0
  680. package/dist-lib/{lib → plugins}/web-search/engines/wikipedia.js +5 -3
  681. package/dist-lib/{lib → plugins}/web-search/engines/yahoo.d.ts +1 -0
  682. package/dist-lib/{lib → plugins}/web-search/engines/yahoo.js +5 -3
  683. package/dist-lib/{lib → plugins}/web-search/fetch-html.js +1 -1
  684. package/dist-lib/plugins/web-search/index.d.ts +18 -0
  685. package/dist-lib/plugins/web-search/index.js +33 -0
  686. package/dist-lib/{lib → plugins}/web-search/orchestrator.d.ts +3 -1
  687. package/dist-lib/{lib → plugins}/web-search/orchestrator.js +5 -5
  688. package/dist-lib/plugins/web-search/tool.d.ts +3 -0
  689. package/dist-lib/{lib/tools/web-search.js → plugins/web-search/tool.js} +18 -14
  690. package/dist-lib/plugins/web-search/types.js +1 -0
  691. package/dist-lib/schema/generate.js +5 -2
  692. package/dist-lib/schema/harness.js +158 -7
  693. package/dist-lib/spec/bind.js +20 -4
  694. package/dist-lib/spec/calls.js +4 -0
  695. package/dist-lib/spec/hrpc/hrpc.json +52 -0
  696. package/dist-lib/spec/hrpc/index.js +51 -3
  697. package/dist-lib/spec/hrpc/messages.js +595 -17
  698. package/dist-lib/spec/hyperschema/index.js +595 -17
  699. package/dist-lib/spec/hyperschema/schema.json +464 -1
  700. package/dist-lib/spec/hyperschema/types.d.ts +113 -2
  701. package/package.json +255 -487
  702. package/patches/{@qvac%2Finference@0.20.0.patch → @qvac%2Finference@0.21.0.patch} +8 -8
  703. package/scripts/addon-externals.cjs +386 -0
  704. package/scripts/addon-externals.d.ts +30 -0
  705. package/wheels/manifest.json +1 -160
  706. package/worker/harness-sidecar.mjs +80 -59
  707. package/dist-lib/lib/capabilities/completion-engine/actors/inspect-preload.d.ts +0 -3
  708. package/dist-lib/lib/capabilities/completion-engine/actors/inspect-preload.js +0 -75
  709. package/dist-lib/lib/capabilities/completion-engine/actors/preload-failure.d.ts +0 -9
  710. package/dist-lib/lib/capabilities/completion-engine/actors/preload-failure.js +0 -11
  711. package/dist-lib/lib/capabilities/completion-engine/actors/preloading.d.ts +0 -3
  712. package/dist-lib/lib/capabilities/completion-engine/actors/preloading.js +0 -114
  713. package/dist-lib/lib/capabilities/completion-loop/index.d.ts +0 -80
  714. package/dist-lib/lib/capabilities/completion-loop/index.js +0 -158
  715. package/dist-lib/lib/capabilities/completion-loop/metrics.d.ts +0 -5
  716. package/dist-lib/lib/capabilities/completion-loop/metrics.js +0 -29
  717. package/dist-lib/lib/capabilities/completion-loop/tool-execution.d.ts +0 -60
  718. package/dist-lib/lib/capabilities/completion-loop/turns.js +0 -112
  719. package/dist-lib/lib/capabilities/completion-runtime.d.ts +0 -46
  720. package/dist-lib/lib/capabilities/completion.d.ts +0 -18
  721. package/dist-lib/lib/capabilities/completion.js +0 -22
  722. package/dist-lib/lib/helpers/recovery-required.d.ts +0 -1
  723. package/dist-lib/lib/helpers/recovery-required.js +0 -1
  724. package/dist-lib/lib/hooks/built-in/index.d.ts +0 -4
  725. package/dist-lib/lib/hooks/built-in/index.js +0 -4
  726. package/dist-lib/lib/hooks/pipeline.d.ts +0 -24
  727. package/dist-lib/lib/hooks/pipeline.js +0 -74
  728. package/dist-lib/lib/hooks/registry.d.ts +0 -2
  729. package/dist-lib/lib/hooks/registry.js +0 -7
  730. package/dist-lib/lib/machine/completion/actions/skills.d.ts +0 -9
  731. package/dist-lib/lib/machine/completion/actions/skills.js +0 -83
  732. package/dist-lib/lib/machine/engine.d.ts +0 -93
  733. package/dist-lib/lib/machine/guards.d.ts +0 -2
  734. package/dist-lib/lib/machine/guards.js +0 -6
  735. package/dist-lib/lib/office/pptx.d.ts +0 -1
  736. package/dist-lib/lib/office/pptx.js +0 -26
  737. package/dist-lib/lib/office/python.d.ts +0 -8
  738. package/dist-lib/lib/office/python.js +0 -32
  739. package/dist-lib/lib/office/xlsx.d.ts +0 -1
  740. package/dist-lib/lib/office/xlsx.js +0 -26
  741. package/dist-lib/lib/run-log-inspect.d.ts +0 -25
  742. package/dist-lib/lib/run-log-protocol.d.ts +0 -2
  743. package/dist-lib/lib/run-log-protocol.js +0 -1
  744. package/dist-lib/lib/tool-call-display.d.ts +0 -1
  745. package/dist-lib/lib/tools/exec/adapters/adapter.d.ts +0 -31
  746. package/dist-lib/lib/tools/exec/adapters/python/create-effect.d.ts +0 -7
  747. package/dist-lib/lib/tools/exec/adapters/python/create-effect.js +0 -318
  748. package/dist-lib/lib/tools/exec/adapters/python/python-adapter.d.ts +0 -89
  749. package/dist-lib/lib/tools/exec/adapters/python/python-adapter.js +0 -1371
  750. package/dist-lib/lib/tools/exec/adapters/python/worker/entry.js +0 -3
  751. package/dist-lib/lib/tools/exec/obsidian/route.d.ts +0 -17
  752. package/dist-lib/lib/tools/exec/obsidian/route.js +0 -91
  753. package/dist-lib/lib/tools/mcp-call.d.ts +0 -14
  754. package/dist-lib/lib/tools/rag-search.d.ts +0 -2
  755. package/dist-lib/lib/tools/rag-search.js +0 -105
  756. package/dist-lib/lib/tools/weather-lookup.d.ts +0 -8
  757. package/dist-lib/lib/tools/weather-lookup.js +0 -122
  758. package/dist-lib/lib/tools/web-search.d.ts +0 -6
  759. package/dist-lib/lib/web-search/engine-registry.d.ts +0 -7
  760. package/dist-lib/lib/web-search/engine-registry.js +0 -17
  761. package/wheels/cffi-2.0.0-cp314-cp314-pyemscripten_2026_0_wasm32.whl +0 -0
  762. package/wheels/cryptography-47.0.0-cp314-abi3-pyemscripten_2026_0_wasm32.whl +0 -0
  763. package/wheels/defusedxml-0.7.1-py2.py3-none-any.whl +0 -0
  764. package/wheels/et_xmlfile-2.0.0-py3-none-any.whl +0 -0
  765. package/wheels/fonttools-4.62.1-py3-none-any.whl +0 -0
  766. package/wheels/fpdf2-2.8.8-py3-none-any.whl +0 -0
  767. package/wheels/lxml-6.0.2-cp314-cp314-pyemscripten_2026_0_wasm32.whl +0 -0
  768. package/wheels/openpyxl-3.1.5-py2.py3-none-any.whl +0 -0
  769. package/wheels/pillow-12.2.0-cp314-cp314-pyemscripten_2026_0_wasm32.whl +0 -0
  770. package/wheels/pycparser-3.0-py3-none-any.whl +0 -0
  771. package/wheels/pypdf-6.15.0-py3-none-any.whl +0 -0
  772. package/wheels/python_docx-1.2.0-py3-none-any.whl +0 -0
  773. package/wheels/python_pptx-1.0.2-py3-none-any.whl +0 -0
  774. package/wheels/six-1.17.0-py2.py3-none-any.whl +0 -0
  775. package/wheels/typing_extensions-4.15.0-py3-none-any.whl +0 -0
  776. package/wheels/xlsxwriter-3.2.9-py3-none-any.whl +0 -0
  777. /package/dist-lib/lib/{tools/skills → agent}/tool-grants.d.ts +0 -0
  778. /package/dist-lib/lib/{tools/skills → agent}/tool-grants.js +0 -0
  779. /package/dist-lib/lib/capabilities/{types.js → completion-engine/prepare-step.js} +0 -0
  780. /package/dist-lib/lib/{hooks/types.js → capabilities/completion-engine/stages.js} +0 -0
  781. /package/dist-lib/lib/{tool-call-display.js → contract/agent.js} +0 -0
  782. /package/dist-lib/lib/{tools/exec/adapters/adapter.js → contract/completion.js} +0 -0
  783. /package/dist-lib/lib/{tools/exec/adapters/python/worker/entry.d.ts → contract/exec.js} +0 -0
  784. /package/dist-lib/lib/{tools/exec/adapters/python/worker/interrupt-deadline.d.ts → contract/hooks.js} +0 -0
  785. /package/dist-lib/lib/{web-search/types.js → contract/index.js} +0 -0
  786. /package/dist-lib/lib/{capabilities/completion-engine → helpers}/abort-polyfill.d.ts +0 -0
  787. /package/dist-lib/lib/{capabilities/completion-engine → helpers}/abort-polyfill.js +0 -0
  788. /package/dist-lib/lib/{web-search → helpers}/html-helpers.d.ts +0 -0
  789. /package/dist-lib/lib/{web-search → helpers}/html-helpers.js +0 -0
  790. /package/dist-lib/lib/{tools → helpers}/model-args.d.ts +0 -0
  791. /package/dist-lib/lib/{tools → helpers}/model-args.js +0 -0
  792. /package/dist-lib/lib/{machine → helpers}/stable-stringify.d.ts +0 -0
  793. /package/dist-lib/lib/{web-search → helpers}/user-agents.d.ts +0 -0
  794. /package/dist-lib/lib/{web-search → helpers}/user-agents.js +0 -0
  795. /package/dist-lib/lib/{harness-lifecycle.d.ts → lifecycle/machine.d.ts} +0 -0
  796. /package/dist-lib/lib/tools/{exec/adapters/python → attachments}/output-policy.js +0 -0
  797. /package/dist-lib/{lib/tools/exec → plugins}/obsidian/command.d.ts +0 -0
  798. /package/dist-lib/{lib/tools/exec → plugins}/obsidian/note-name.d.ts +0 -0
  799. /package/dist-lib/{lib/tools/exec → plugins}/obsidian/note-name.js +0 -0
  800. /package/dist-lib/{lib/tools/exec → plugins}/obsidian/output.d.ts +0 -0
  801. /package/dist-lib/{lib/tools/exec → plugins}/obsidian/output.js +0 -0
  802. /package/dist-lib/{lib/tools/exec → plugins}/obsidian/safe-path.d.ts +0 -0
  803. /package/dist-lib/{lib/tools/exec → plugins}/obsidian/safe-path.js +0 -0
  804. /package/dist-lib/{lib/tools/exec → plugins}/obsidian/vault-create.d.ts +0 -0
  805. /package/dist-lib/{lib/tools/exec → plugins}/obsidian/vault-create.js +0 -0
  806. /package/dist-lib/{lib/tools/exec → plugins}/obsidian/vault-fs.d.ts +0 -0
  807. /package/dist-lib/{lib/tools/exec → plugins}/obsidian/vault-fs.js +0 -0
  808. /package/dist-lib/{lib/tools/exec → plugins}/obsidian/vault-paths.d.ts +0 -0
  809. /package/dist-lib/{lib/tools/exec → plugins}/obsidian/vault-paths.js +0 -0
  810. /package/dist-lib/{lib/tools/exec → plugins}/obsidian/vault-read.d.ts +0 -0
  811. /package/dist-lib/{lib/tools/exec → plugins}/obsidian/vault-read.js +0 -0
  812. /package/dist-lib/{lib/tools/exec → plugins}/obsidian/vault-write.d.ts +0 -0
  813. /package/dist-lib/{lib/tools/exec → plugins}/obsidian/vault-write.js +0 -0
  814. /package/dist-lib/{lib/tools/exec/adapters → plugins}/python/deadline-state.d.ts +0 -0
  815. /package/dist-lib/{lib/tools/exec/adapters → plugins}/python/deadline-state.js +0 -0
  816. /package/dist-lib/{lib/tools/exec/adapters → plugins}/python/distributions.d.ts +0 -0
  817. /package/dist-lib/{lib/tools/exec/adapters → plugins}/python/distributions.js +0 -0
  818. /package/dist-lib/{lib/tools/exec/adapters → plugins}/python/interrupt-timer.d.ts +0 -0
  819. /package/dist-lib/{lib/tools/exec/adapters → plugins}/python/memfs.d.ts +0 -0
  820. /package/dist-lib/{lib/tools/exec/adapters → plugins}/python/module-distributions.d.ts +0 -0
  821. /package/dist-lib/{lib/tools/exec/adapters → plugins}/python/named-hosts.d.ts +0 -0
  822. /package/dist-lib/{lib/tools/exec/adapters → plugins}/python/named-hosts.js +0 -0
  823. /package/dist-lib/{lib/tools/exec/adapters → plugins}/python/net-shim.d.ts +0 -0
  824. /package/dist-lib/{lib/tools/exec/adapters → plugins}/python/net-shim.js +0 -0
  825. /package/dist-lib/{lib/tools/exec/adapters → plugins}/python/pyodide.d.ts +0 -0
  826. /package/dist-lib/{lib/tools/exec/adapters → plugins}/python/wheels.d.ts +0 -0
  827. /package/dist-lib/{lib/tools/exec/adapters → plugins}/python/worker/active.d.ts +0 -0
  828. /package/dist-lib/{lib/tools/exec/adapters → plugins}/python/worker/protocol.d.ts +0 -0
  829. /package/dist-lib/{lib/tools/exec/adapters → plugins}/python/worker/protocol.js +0 -0
  830. /package/dist-lib/{lib/tools/exec/adapters → plugins}/python/worker/serve.d.ts +0 -0
  831. /package/dist-lib/{lib/capabilities → plugins/speech}/audio-resample.d.ts +0 -0
  832. /package/dist-lib/{lib/capabilities → plugins/speech}/audio-resample.js +0 -0
  833. /package/dist-lib/{lib → plugins/speech}/audio-transcode-bare.d.ts +0 -0
  834. /package/dist-lib/{lib → plugins/speech}/audio-transcode-node.d.ts +0 -0
  835. /package/dist-lib/{lib → plugins/speech}/audio-transcode-node.js +0 -0
  836. /package/dist-lib/{lib/capabilities → plugins/speech}/speech-lexicon.d.ts +0 -0
  837. /package/dist-lib/{lib/capabilities → plugins/speech}/speech-lexicon.js +0 -0
  838. /package/dist-lib/{lib → plugins/speech}/wav-encode.d.ts +0 -0
  839. /package/dist-lib/{lib → plugins/speech}/wav-encode.js +0 -0
  840. /package/dist-lib/{lib/tools/weather-lookup → plugins/weather}/place.d.ts +0 -0
  841. /package/dist-lib/{lib/tools/weather-lookup → plugins/weather}/report.d.ts +0 -0
  842. /package/dist-lib/{lib/tools/weather-lookup → plugins/weather}/report.js +0 -0
  843. /package/dist-lib/{lib → plugins}/web-search/fetch-html.d.ts +0 -0
  844. /package/dist-lib/{lib → plugins}/web-search/format-results.d.ts +0 -0
  845. /package/dist-lib/{lib → plugins}/web-search/format-results.js +0 -0
  846. /package/dist-lib/{lib → plugins}/web-search/merge-results.d.ts +0 -0
  847. /package/dist-lib/{lib → plugins}/web-search/merge-results.js +0 -0
  848. /package/dist-lib/{lib → plugins}/web-search/types.d.ts +0 -0
  849. /package/dist-lib/{lib → plugins}/web-search/url-helpers.d.ts +0 -0
  850. /package/dist-lib/{lib → plugins}/web-search/url-helpers.js +0 -0
  851. /package/dist-lib/{lib → plugins}/web-search/url-normalize.d.ts +0 -0
  852. /package/dist-lib/{lib → plugins}/web-search/url-normalize.js +0 -0
@@ -0,0 +1,94 @@
1
+ # bench
2
+
3
+ Runs the harness on published benchmarks with local models. `harness.ts` builds the tool list the
4
+ sidecar builds, so a score is the product's. Results render on one page with `report.ts`.
5
+
6
+ The other files here (`cpu.ts`, `graph-metrics.ts`, `issue129-matrix.mjs` and friends) are the
7
+ completion engine's own performance runners and are unrelated. [`skill-eval/`](#skill-eval)
8
+ measures a bundled skill's wording on the real model.
9
+
10
+ ## BFCL v4
11
+
12
+ The eleven single-turn categories of the Berkeley Function Calling Leaderboard, downloaded from a
13
+ pinned gorilla commit and judged by a port of its AST checker. Each case's functions are the run's
14
+ only tools. `strict` scores the first round as BFCL does; `across rounds` also credits parallel
15
+ calls made one round at a time.
16
+
17
+ ```
18
+ bare bench/bfcl/run.ts --models Qwen3.5-2B-Q4_K_M,Qwen3.5-9B-Q4_K_M --limit 50 --out output/bfcl/run
19
+ ```
20
+
21
+ Set `QVAC_BENCH_CODE_MODE=1` to give the model `run_code` beside the case's functions; a script's
22
+ inner calls are the ones scored.
23
+
24
+ ## BFCL v4 multi-turn
25
+
26
+ The four multi-turn categories, run on gorilla's own backends and scored by BFCL's checker; the report says how. Needs a Python 3.12 venv with `bfcl-eval` at the gorilla commit the single-turn adapter pins, without its deps.
27
+
28
+ ```
29
+ python3.12 -m venv output/venvs/bfcl && output/venvs/bfcl/bin/pip install --no-deps \
30
+ "bfcl-eval @ git+https://github.com/ShishirPatil/gorilla@6ea57973c7a6097fd7c5915698c54c17c5b1b6c8#subdirectory=berkeley-function-call-leaderboard"
31
+ output/venvs/bfcl/bin/pip install mpmath==1.3.0 filelock==3.20.0 overrides tenacity \
32
+ tree_sitter==0.21.3 tree-sitter-java==0.21.0 tree-sitter-javascript==0.21.4
33
+ output/venvs/bfcl/bin/python bench/bridge/python/run_bfcl_multi_turn.py \
34
+ --models Qwen3.5-2B-Q4_K_M,Qwen3.5-9B-Q4_K_M --limit 10 --out output/bfcl-multi-turn/run
35
+ ```
36
+
37
+ `--limit` is entries per category, spread evenly over its 200; `--out` must be a new dir. Tests,
38
+ with no model: `cd bench/bridge/python && ../../../output/venvs/bfcl/bin/python -m unittest test_bfcl_multi_turn`.
39
+
40
+ ## tau2-bench
41
+
42
+ The harness is the agent over the stdio bridge; tau2's orchestrator runs the tools and scores the
43
+ task. The simulated user is a raw local model behind `bridge/openai.ts`, so scores are tau2's own
44
+ but not comparable to its GPT-4.1-user leaderboard. Needs a Python 3.12 venv with tau2 installed.
45
+
46
+ ```
47
+ python3.12 -m venv output/venvs/tau2 && output/venvs/tau2/bin/pip install -e <tau2-bench checkout> websockets
48
+ output/venvs/tau2/bin/python bench/bridge/python/run_tau2.py --domain airline --tasks 20 \
49
+ --model Qwen3.5-4B-Q4_K_M --user-model Qwen3.5-9B-Q4_K_M --out output/tau2/run
50
+ ```
51
+
52
+ Set `QVAC_BRIDGE_PLAN=1` to give the agent the `update_plan` tool, and compare against a run without it.
53
+
54
+ ## Terminal-Bench 2.0
55
+
56
+ A Harbor agent runs the harness with one bash tool in the task container. Needs a container
57
+ runtime: with OrbStack, give it 4 or more CPUs and 8 GB or more of memory before a full run. Run
58
+ one task at a time (`-n 1`): every trial loads the model in its own bridge process.
59
+
60
+ ```
61
+ QVAC_HARNESS_REPO=$PWD PYTHONPATH=bench/bridge/python uv tool run harbor run \
62
+ --dataset terminal-bench@2.0 -a qvac_bench.harbor_agent:QvacHarnessAgent \
63
+ -m Qwen3.5-9B-Q4_K_M -n 1 --ak max_tool_rounds=10
64
+ ```
65
+
66
+ `max_tool_rounds` is the run's round limit; leave it out for the harness default. Each trial's
67
+ `agent/qvac.jsonl` records the bash calls, the done frame and the load average at the start and end.
68
+
69
+ ## Skill eval
70
+
71
+ Runs a `SKILL.md` variant against the current one on the real local model, with the skill's tools
72
+ answered from recorded fixtures and every reply judged by fixed rules, never by a second model. A
73
+ pack in `skill-eval/packs/` is one skill's prompts, fixtures and scoring; `weather` and `diagrams`
74
+ ship. See [the decision](../docs/decisions/2026-09-10-skill-wording-is-measured-offline.md).
75
+
76
+ ```
77
+ bun run skill-eval --pack weather --repeats 3
78
+ bun run skill-eval --help
79
+ ```
80
+
81
+ ## Report
82
+
83
+ ```
84
+ bare bench/report.ts \
85
+ --bfcl main=output/bfcl/run \
86
+ --bfcl-multi-turn main=output/bfcl-multi-turn/run \
87
+ --tau2 "before=output/tau2/old" --tau2 "after=output/tau2/run" \
88
+ --terminal "10 rounds=jobs/<job>" \
89
+ --out docs/bench/benchmarks.html
90
+ ```
91
+
92
+ Each `--bfcl`, `--bfcl-multi-turn`, `--tau2` and `--terminal` run is `label=dir` (for `--terminal`, Harbor's job dir); the first BFCL run and the last τ² run are the ones the headline cards report, and τ² runs are listed in the order given.
93
+
94
+ Outside a checkout with vendored wheels, set `QVAC_PYTHON_WHEELS_DIR` to a checkout's `wheels/`.
@@ -0,0 +1,313 @@
1
+ import { isRecord } from '../../lib/guards.ts'
2
+
3
+ // a port of BFCL's single-turn AST checker (bfcl_eval/eval_checker/ast_eval/ast_checker.py)
4
+ export interface ParamDoc {
5
+ readonly type: string
6
+ readonly description?: string
7
+ readonly items?: ParamDoc
8
+ readonly properties?: Readonly<Record<string, ParamDoc>>
9
+ readonly enum?: readonly unknown[]
10
+ readonly required?: readonly string[]
11
+ readonly default?: unknown
12
+ }
13
+
14
+ export interface FunctionDoc {
15
+ readonly name: string
16
+ readonly description: string
17
+ readonly parameters: {
18
+ readonly type: string
19
+ readonly properties: Readonly<Record<string, ParamDoc>>
20
+ readonly required?: readonly string[]
21
+ }
22
+ }
23
+
24
+ // one call as BFCL writes it: { name: { param: value } }
25
+ export type Call = Readonly<Record<string, Readonly<Record<string, unknown>>>>
26
+ export type Answer = Readonly<Record<string, Readonly<Record<string, readonly unknown[]>>>>
27
+
28
+ export interface Verdict {
29
+ readonly valid: boolean
30
+ readonly error: string | null
31
+ }
32
+
33
+ type Kind = 'string' | 'integer' | 'float' | 'boolean' | 'array' | 'dict' | 'null'
34
+
35
+ const PYTHON_KIND: Record<string, Kind> = {
36
+ string: 'string',
37
+ integer: 'integer',
38
+ float: 'float',
39
+ boolean: 'boolean',
40
+ array: 'array',
41
+ tuple: 'array',
42
+ dict: 'dict',
43
+ any: 'string'
44
+ }
45
+
46
+ const NESTED = ['array', 'tuple']
47
+ const VALID: Verdict = { valid: true, error: null }
48
+
49
+ export interface Subject {
50
+ readonly category: string
51
+ readonly docs: readonly FunctionDoc[]
52
+ readonly answers: readonly Answer[] | null
53
+ }
54
+
55
+ interface Expectation {
56
+ readonly possible: readonly unknown[]
57
+ readonly expected: Kind
58
+ readonly nested: Kind | null
59
+ }
60
+
61
+ export function check(subject: Subject, calls: readonly Call[]): Verdict {
62
+ const { category, docs } = subject
63
+ if (category.includes('irrelevance')) {
64
+ return calls.length ? invalid('called a function when none applied') : VALID
65
+ }
66
+
67
+ if (category.includes('relevance')) {
68
+ return calls.length ? VALID : invalid('made no call')
69
+ }
70
+
71
+ const expected = subject.answers ?? []
72
+ if (calls.length !== expected.length) {
73
+ return invalid(`wrong number of functions: ${calls.length} for ${expected.length}`)
74
+ }
75
+
76
+ if (!category.includes('parallel')) {
77
+ return simple(docFor(docs, nameOf(expected[0])), calls[0], expected[0])
78
+ }
79
+
80
+ // unordered: each expected call claims the first unclaimed call that satisfies it
81
+ const matched = new Set<number>()
82
+ for (const answer of expected) {
83
+ const doc = docFor(docs, nameOf(answer))
84
+ const index = calls.findIndex((call, at) => !matched.has(at) && simple(doc, call, answer).valid)
85
+ if (index < 0) {
86
+ return invalid(`no call matches ${nameOf(answer)}`)
87
+ }
88
+
89
+ matched.add(index)
90
+ }
91
+
92
+ return VALID
93
+ }
94
+
95
+ function simple(doc: FunctionDoc | undefined, call: Call, answer: Answer): Verdict {
96
+ const name = nameOf(answer)
97
+ const possible = answer[name]
98
+ if (!doc || !(name in call)) {
99
+ return invalid(`function ${name} not called`)
100
+ }
101
+
102
+ const params = call[name]
103
+ const missing = (doc.parameters.required ?? []).find((param) => !(param in params))
104
+ if (missing) {
105
+ return invalid(`missing required parameter ${missing}`)
106
+ }
107
+
108
+ for (const [param, value] of Object.entries(params)) {
109
+ const detail = doc.parameters.properties[param]
110
+ if (!detail || !(param in possible)) {
111
+ return invalid(`unexpected parameter ${param}`)
112
+ }
113
+
114
+ const verdict = checkParam(param, value, expectationOf(detail, possible[param]))
115
+ if (!verdict.valid) {
116
+ return verdict
117
+ }
118
+ }
119
+
120
+ const unset = Object.keys(possible).find(
121
+ (param) => !(param in params) && !possible[param].includes('')
122
+ )
123
+
124
+ return unset ? invalid(`optional parameter ${unset} not provided`) : VALID
125
+ }
126
+
127
+ function expectationOf(detail: ParamDoc, possible: readonly unknown[]): Expectation {
128
+ const nested =
129
+ NESTED.includes(detail.type) && detail.items ? PYTHON_KIND[detail.items.type] : null
130
+ return { possible, expected: PYTHON_KIND[detail.type] ?? 'string', nested }
131
+ }
132
+
133
+ function checkParam(param: string, value: unknown, expectation: Expectation): Verdict {
134
+ const { possible, expected, nested } = expectation
135
+ const typed = typeCheck(value, expectation)
136
+ if (typed === null) {
137
+ return invalid(`wrong type for ${param}: ${JSON.stringify(value)} is not ${expected}`)
138
+ }
139
+
140
+ // a value of the answer's type where the schema wanted another is a variable: compare it plainly
141
+ const special = typed.variable ? null : specialCheck(value, expected, nested)
142
+ const matches = special ? special(possible) : possible.some((option) => equal(value, option))
143
+
144
+ return matches ? VALID : invalid(`invalid value for ${param}: ${JSON.stringify(value)}`)
145
+ }
146
+
147
+ function specialCheck(
148
+ value: unknown,
149
+ expected: Kind,
150
+ nested: Kind | null
151
+ ): ((possible: readonly unknown[]) => boolean) | null {
152
+ if (expected === 'dict') {
153
+ return (possible) => dictFits(value, possible)
154
+ }
155
+
156
+ if (expected === 'array' && nested === 'dict') {
157
+ return (possible) => listDictFits(value, possible)
158
+ }
159
+
160
+ if (expected === 'string') {
161
+ return (possible) => stringFits(value, possible)
162
+ }
163
+
164
+ if (expected === 'array') {
165
+ return (possible) => listFits(value, possible)
166
+ }
167
+
168
+ return null
169
+ }
170
+
171
+ interface Typed {
172
+ readonly variable: boolean
173
+ }
174
+
175
+ function typeCheck(value: unknown, expectation: Expectation): Typed | null {
176
+ const { possible, expected, nested } = expectation
177
+ const answerKind = possibleKind(possible)
178
+ const variable = answerKind !== null && !sameKind(answerKind, expected)
179
+ if (sameKind(kindOf(value), expected)) {
180
+ if (nested === null || !Array.isArray(value)) {
181
+ return { variable }
182
+ }
183
+
184
+ const itemsFit = possible.some(
185
+ (option) => !Array.isArray(option) || value.every((item) => sameKind(kindOf(item), nested))
186
+ )
187
+
188
+ return itemsFit ? { variable } : null
189
+ }
190
+
191
+ return answerKind !== null && sameKind(kindOf(value), answerKind) ? { variable: true } : null
192
+ }
193
+
194
+ function stringFits(value: unknown, possible: readonly unknown[]): boolean {
195
+ const wanted = possible.filter((option) => typeof option === 'string').map(standardize)
196
+ return wanted.includes(standardize(String(value)))
197
+ }
198
+
199
+ function listFits(value: unknown, possible: readonly unknown[]): boolean {
200
+ if (!Array.isArray(value)) {
201
+ return false
202
+ }
203
+
204
+ const output = value.map(standardizeItem)
205
+
206
+ return possible.filter(Array.isArray).some((option) => equal(output, option.map(standardizeItem)))
207
+ }
208
+
209
+ function dictFits(value: unknown, possible: readonly unknown[]): boolean {
210
+ return isDict(value) && possible.some((option) => isDict(option) && dictMatches(value, option))
211
+ }
212
+
213
+ function dictMatches(output: Record<string, unknown>, option: Record<string, unknown>): boolean {
214
+ const valuesFit = Object.entries(output).every(([key, item]) => {
215
+ const candidates = option[key]
216
+ return (
217
+ Array.isArray(candidates) &&
218
+ candidates.map(standardizeItem).some((candidate) => equal(standardizeItem(item), candidate))
219
+ )
220
+ })
221
+ const keysFit = Object.entries(option).every(
222
+ ([key, candidates]) => key in output || (Array.isArray(candidates) && candidates.includes(''))
223
+ )
224
+
225
+ return valuesFit && keysFit
226
+ }
227
+
228
+ function listDictFits(value: unknown, possible: readonly unknown[]): boolean {
229
+ if (!Array.isArray(value)) {
230
+ return false
231
+ }
232
+
233
+ return possible.some(
234
+ (option) =>
235
+ Array.isArray(option) &&
236
+ option.length === value.length &&
237
+ value.every((item, index) => dictFits(item, [option[index]]))
238
+ )
239
+ }
240
+
241
+ // BFCL forgives spacing and ",./-_*^" punctuation and case: "April 1, 2024" is "April 1 2024"
242
+ export function standardize(text: string): string {
243
+ return text
244
+ .replace(/[ ,./\-_*^]/g, '')
245
+ .toLowerCase()
246
+ .replaceAll("'", '"')
247
+ }
248
+
249
+ function standardizeItem(item: unknown): unknown {
250
+ return typeof item === 'string' ? standardize(item) : item
251
+ }
252
+
253
+ // JSON keeps no int/float distinction in JavaScript, so 5 and 5.0 are one number here
254
+ function kindOf(value: unknown): Kind {
255
+ if (value === null) {
256
+ return 'null'
257
+ }
258
+
259
+ if (Array.isArray(value)) {
260
+ return 'array'
261
+ }
262
+
263
+ if (typeof value === 'number') {
264
+ return Number.isInteger(value) ? 'integer' : 'float'
265
+ }
266
+
267
+ if (typeof value === 'boolean') {
268
+ return 'boolean'
269
+ }
270
+
271
+ return isRecord(value) ? 'dict' : 'string'
272
+ }
273
+
274
+ function sameKind(left: Kind, right: Kind): boolean {
275
+ const numeric = (kind: Kind) => kind === 'integer' || kind === 'float'
276
+ return left === right || (numeric(left) && numeric(right))
277
+ }
278
+
279
+ function possibleKind(possible: readonly unknown[]): Kind | null {
280
+ const first = possible.find((option) => option !== '')
281
+ return first === undefined ? null : kindOf(first)
282
+ }
283
+
284
+ function equal(left: unknown, right: unknown): boolean {
285
+ if (Array.isArray(left) && Array.isArray(right)) {
286
+ return left.length === right.length && left.every((item, index) => equal(item, right[index]))
287
+ }
288
+
289
+ if (isDict(left) && isDict(right)) {
290
+ const keys = Object.keys(left)
291
+ return (
292
+ keys.length === Object.keys(right).length && keys.every((key) => equal(left[key], right[key]))
293
+ )
294
+ }
295
+
296
+ return left === right
297
+ }
298
+
299
+ function isDict(value: unknown): value is Record<string, unknown> {
300
+ return isRecord(value) && !Array.isArray(value)
301
+ }
302
+
303
+ function nameOf(answer: Answer): string {
304
+ return Object.keys(answer)[0]
305
+ }
306
+
307
+ function docFor(docs: readonly FunctionDoc[], name: string): FunctionDoc | undefined {
308
+ return docs.find((doc) => doc.name === name)
309
+ }
310
+
311
+ function invalid(error: string): Verdict {
312
+ return { valid: false, error }
313
+ }
@@ -0,0 +1,93 @@
1
+ import fs from 'fs'
2
+ import path from 'path'
3
+ import fetch from '#fetch'
4
+ import type { Message } from '../../lib/contract/index.ts'
5
+ import type { Answer, FunctionDoc } from './checker.ts'
6
+
7
+ // the gorilla commit the data and the checker port were read from
8
+ export const BFCL_COMMIT = '6ea57973c7a6097fd7c5915698c54c17c5b1b6c8'
9
+ const BFCL_DATA = `https://raw.githubusercontent.com/ShishirPatil/gorilla/${BFCL_COMMIT}/berkeley-function-call-leaderboard/bfcl_eval/data`
10
+
11
+ // the single-turn categories BFCL scores by AST; multi-turn, memory and web search need executors
12
+ export const CATEGORIES = [
13
+ 'simple_python',
14
+ 'multiple',
15
+ 'parallel',
16
+ 'parallel_multiple',
17
+ 'irrelevance',
18
+ 'live_simple',
19
+ 'live_multiple',
20
+ 'live_parallel',
21
+ 'live_parallel_multiple',
22
+ 'live_irrelevance',
23
+ 'live_relevance'
24
+ ]
25
+
26
+ // the params the #157 stopgap rewrites, keyed as sdkProperty keys them
27
+ export const SHAPES = ['nested', 'default-only', 'untouched'] as const
28
+ export type Shape = (typeof SHAPES)[number]
29
+
30
+ export function shapeOf(functions: readonly FunctionDoc[]): Shape {
31
+ const params = functions.flatMap((doc) => Object.values(doc.parameters.properties))
32
+ if (params.some((param) => param.properties || param.items)) {
33
+ return 'nested'
34
+ }
35
+
36
+ return params.some((param) => param.default !== undefined) ? 'default-only' : 'untouched'
37
+ }
38
+
39
+ export interface BfclCase {
40
+ readonly id: string
41
+ readonly category: string
42
+ readonly turns: Message[]
43
+ readonly functions: FunctionDoc[]
44
+ readonly answers: Answer[] | null
45
+ }
46
+
47
+ export interface LoadOptions {
48
+ readonly dir: string
49
+ // cases per category, spread evenly across it
50
+ readonly limit: number
51
+ }
52
+
53
+ export async function loadCategory(category: string, options: LoadOptions): Promise<BfclCase[]> {
54
+ const entries = await lines(`BFCL_v4_${category}.json`, options.dir)
55
+ // relevance and irrelevance are judged by whether a call was made, so they ship no answers
56
+ const answers = category.includes('relevance')
57
+ ? new Map()
58
+ : new Map(
59
+ (await lines(`possible_answer/BFCL_v4_${category}.json`, options.dir)).map((entry) => [
60
+ entry.id,
61
+ entry.ground_truth
62
+ ])
63
+ )
64
+ const all = entries.map((entry): BfclCase => ({
65
+ id: entry.id,
66
+ category,
67
+ turns: entry.question[0],
68
+ functions: entry.function,
69
+ answers: answers.get(entry.id) ?? null
70
+ }))
71
+ const step = Math.max(1, Math.floor(all.length / Math.min(options.limit, all.length)))
72
+
73
+ return all.filter((_, index) => index % step === 0).slice(0, options.limit)
74
+ }
75
+
76
+ async function lines(file: string, dir: string) {
77
+ const local = path.join(dir, file)
78
+ if (!fs.existsSync(local)) {
79
+ const response = await fetch(`${BFCL_DATA}/${file}`)
80
+ if (!response.ok) {
81
+ throw new Error(`BFCL ${file}: HTTP ${response.status}`)
82
+ }
83
+
84
+ fs.mkdirSync(path.dirname(local), { recursive: true })
85
+ fs.writeFileSync(local, await response.text())
86
+ }
87
+
88
+ return fs
89
+ .readFileSync(local, 'utf8')
90
+ .split('\n')
91
+ .filter(Boolean)
92
+ .map((line) => JSON.parse(line))
93
+ }
@@ -0,0 +1,93 @@
1
+ import type {
2
+ CompletionEvent,
3
+ LlmGenerationParams,
4
+ MetricsEvent
5
+ } from '../../lib/contract/index.ts'
6
+ import { errorMessage } from '../../lib/guards.ts'
7
+ import type { Call } from './checker.ts'
8
+
9
+ export interface Made {
10
+ readonly first: Call[]
11
+ readonly all: Call[]
12
+ readonly reply: string
13
+ readonly error: string | null
14
+ readonly metrics: MetricsEvent | null
15
+ readonly firstCallRound: number | null
16
+ // what the second round was sent, where a re-ask is forced
17
+ readonly reaskParams: LlmGenerationParams | null
18
+ }
19
+
20
+ export interface Observing {
21
+ readonly original: (name: string) => string
22
+ readonly stop: () => void
23
+ // distinct calls that end the run; null ends it with the first round instead
24
+ readonly enough: number | null
25
+ }
26
+
27
+ export async function observe(
28
+ events: AsyncIterable<CompletionEvent>,
29
+ observing: Observing
30
+ ): Promise<Made> {
31
+ const { original, stop, enough } = observing
32
+ const first: Call[] = []
33
+ const all: Call[] = []
34
+ let firstRound: number | undefined
35
+ let doneRound: number | undefined
36
+ let stopped = false
37
+ let reply = ''
38
+ let error: string | null = null
39
+ let metrics: MetricsEvent | null = null
40
+ let reaskParams: LlmGenerationParams | null = null
41
+ try {
42
+ for await (const event of events) {
43
+ if (event.type === 'metrics') {
44
+ metrics = event
45
+ }
46
+
47
+ // a stopped run is drained, not left, so its speed still arrives; the rest is not scored
48
+ if (stopped) {
49
+ continue
50
+ }
51
+
52
+ // stop only at a round boundary, so every call of the round that finished the work is seen
53
+ if (doneRound !== undefined && (event.round ?? doneRound) > doneRound) {
54
+ stopped = true
55
+ stop()
56
+ continue
57
+ }
58
+
59
+ // a script's own calls arrive as tool calls of the same round, so they are the ones scored
60
+ if (event.type === 'tool-call' && event.name !== 'run_code') {
61
+ firstRound ??= event.round
62
+ record(
63
+ { [original(event.name)]: event.args },
64
+ event.round === firstRound ? first : null,
65
+ all
66
+ )
67
+ doneRound ??= enough === null || all.length >= enough ? event.round : undefined
68
+ } else if (event.type === 'content' && firstRound === undefined) {
69
+ reply += event.text
70
+ } else if (event.type === 'error') {
71
+ error = event.message
72
+ } else if (event.type === 'aborted') {
73
+ error = 'aborted'
74
+ } else if (event.type === 'inference-call' && event.call.round === 1) {
75
+ reaskParams ??= event.call.generationParams ?? null
76
+ }
77
+ }
78
+ } catch (err) {
79
+ if (!stopped) {
80
+ error = errorMessage(err)
81
+ }
82
+ }
83
+
84
+ return { first, all, reply, error, metrics, firstCallRound: firstRound ?? null, reaskParams }
85
+ }
86
+
87
+ // a repeat of the same call is one call to BFCL, not a second
88
+ function record(call: Call, first: Call[] | null, all: Call[]): void {
89
+ first?.push(call)
90
+ if (!all.some((seen) => JSON.stringify(seen) === JSON.stringify(call))) {
91
+ all.push(call)
92
+ }
93
+ }