@zergai/ztc 0.4.0-beta.1 → 0.5.0-beta.1

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 (718) hide show
  1. package/README.md +398 -45
  2. package/RUST_THIRD_PARTY_LICENSES.txt +1080 -822
  3. package/THIRD_PARTY_NOTICES.md +273 -12
  4. package/bin/zmux-darwin-arm64 +0 -0
  5. package/bin/ztc-audio-darwin-arm64 +0 -0
  6. package/bin/ztc-capture-darwin-arm64 +0 -0
  7. package/bin/ztc-computer-darwin-arm64 +0 -0
  8. package/bin/ztc-llm-darwin-arm64 +0 -0
  9. package/bin/ztc-tts-darwin-arm64 +0 -0
  10. package/bin/ztc-tui-darwin-arm64 +0 -0
  11. package/bin/ztc-zlicky-overlay-darwin-arm64 +0 -0
  12. package/bin/zterm-darwin-arm64 +0 -0
  13. package/dist/App.js +1206 -209
  14. package/dist/agent/agent.d.ts +74 -8
  15. package/dist/agent/agent.js +1073 -184
  16. package/dist/agent/backends/account_rotation.d.ts +4 -0
  17. package/dist/agent/backends/account_rotation.js +8 -2
  18. package/dist/agent/backends/anthropic.d.ts +13 -0
  19. package/dist/agent/backends/anthropic.js +169 -28
  20. package/dist/agent/backends/claude_cli.js +18 -8
  21. package/dist/agent/backends/codex_app_server.d.ts +1 -0
  22. package/dist/agent/backends/codex_app_server.js +55 -3
  23. package/dist/agent/backends/codex_auth.d.ts +1 -0
  24. package/dist/agent/backends/codex_auth.js +67 -13
  25. package/dist/agent/backends/codex_buffered_recovery.d.ts +27 -0
  26. package/dist/agent/backends/codex_buffered_recovery.js +293 -0
  27. package/dist/agent/backends/gemini.js +3 -1
  28. package/dist/agent/backends/http_error.d.ts +26 -0
  29. package/dist/agent/backends/http_error.js +221 -0
  30. package/dist/agent/backends/index.d.ts +9 -2
  31. package/dist/agent/backends/index.js +22 -2
  32. package/dist/agent/backends/openai.d.ts +0 -6
  33. package/dist/agent/backends/openai.js +5 -2
  34. package/dist/agent/backends/openai_compatible.d.ts +5 -4
  35. package/dist/agent/backends/openai_compatible.js +26 -19
  36. package/dist/agent/backends/openai_responses.d.ts +8 -3
  37. package/dist/agent/backends/openai_responses.js +77 -33
  38. package/dist/agent/backends/provider_ids.d.ts +1 -0
  39. package/dist/agent/backends/provider_ids.js +4 -0
  40. package/dist/agent/backends/request_metrics.js +12 -2
  41. package/dist/agent/backends/types.d.ts +109 -6
  42. package/dist/agent/backends/types.js +5 -1
  43. package/dist/agent/backends/zrouter_stream.d.ts +6 -1
  44. package/dist/agent/backends/zrouter_stream.js +160 -42
  45. package/dist/agent/background_registry.d.ts +2 -0
  46. package/dist/agent/background_registry.js +1 -0
  47. package/dist/agent/claim_observation.d.ts +6 -0
  48. package/dist/agent/claim_observation.js +54 -0
  49. package/dist/agent/commands/accounts.js +46 -177
  50. package/dist/agent/commands/attention.d.ts +2 -0
  51. package/dist/agent/commands/attention.js +67 -0
  52. package/dist/agent/commands/auth.js +18 -2
  53. package/dist/agent/commands/board.d.ts +2 -0
  54. package/dist/agent/commands/board.js +169 -0
  55. package/dist/agent/commands/clipboard.js +50 -1
  56. package/dist/agent/commands/compact.js +21 -13
  57. package/dist/agent/commands/config.js +4 -1
  58. package/dist/agent/commands/context.js +6 -1
  59. package/dist/agent/commands/desktop.d.ts +2 -0
  60. package/dist/agent/commands/desktop.js +29 -0
  61. package/dist/agent/commands/effort.js +14 -6
  62. package/dist/agent/commands/environment.d.ts +3 -0
  63. package/dist/agent/commands/environment.js +109 -0
  64. package/dist/agent/commands/evidence.d.ts +2 -0
  65. package/dist/agent/commands/evidence.js +9 -0
  66. package/dist/agent/commands/fork.js +4 -3
  67. package/dist/agent/commands/goal.d.ts +33 -1
  68. package/dist/agent/commands/goal.js +174 -14
  69. package/dist/agent/commands/goal_exit.d.ts +36 -0
  70. package/dist/agent/commands/goal_exit.js +120 -0
  71. package/dist/agent/commands/help.js +3 -1
  72. package/dist/agent/commands/history.js +3 -1
  73. package/dist/agent/commands/inbox.d.ts +2 -0
  74. package/dist/agent/commands/inbox.js +148 -0
  75. package/dist/agent/commands/index.js +16 -1
  76. package/dist/agent/commands/input_mode.js +8 -6
  77. package/dist/agent/commands/job.d.ts +2 -0
  78. package/dist/agent/commands/job.js +93 -0
  79. package/dist/agent/commands/keybindings.js +4 -1
  80. package/dist/agent/commands/label.d.ts +2 -0
  81. package/dist/agent/commands/label.js +77 -0
  82. package/dist/agent/commands/layout.d.ts +2 -0
  83. package/dist/agent/commands/layout.js +20 -0
  84. package/dist/agent/commands/mirror.js +16 -1
  85. package/dist/agent/commands/model.js +12 -2
  86. package/dist/agent/commands/permissions.d.ts +3 -1
  87. package/dist/agent/commands/permissions.js +79 -89
  88. package/dist/agent/commands/plan.js +5 -15
  89. package/dist/agent/commands/profile.js +21 -2
  90. package/dist/agent/commands/provider_selection.js +20 -1
  91. package/dist/agent/commands/rename.js +1 -1
  92. package/dist/agent/commands/resources.d.ts +2 -0
  93. package/dist/agent/commands/resources.js +67 -0
  94. package/dist/agent/commands/rewind.d.ts +3 -0
  95. package/dist/agent/commands/rewind.js +16 -0
  96. package/dist/agent/commands/runbooks.d.ts +2 -0
  97. package/dist/agent/commands/runbooks.js +73 -0
  98. package/dist/agent/commands/runbooks_lazy.d.ts +2 -0
  99. package/dist/agent/commands/runbooks_lazy.js +8 -0
  100. package/dist/agent/commands/sessions.d.ts +1 -1
  101. package/dist/agent/commands/sessions.js +33 -5
  102. package/dist/agent/commands/settings.js +185 -39
  103. package/dist/agent/commands/setup.d.ts +2 -0
  104. package/dist/agent/commands/setup.js +78 -0
  105. package/dist/agent/commands/share.d.ts +2 -0
  106. package/dist/agent/commands/share.js +64 -0
  107. package/dist/agent/commands/status.js +14 -2
  108. package/dist/agent/commands/types.d.ts +99 -6
  109. package/dist/agent/commands/update.js +8 -0
  110. package/dist/agent/commands/usage.d.ts +2 -0
  111. package/dist/agent/commands/usage.js +8 -0
  112. package/dist/agent/factory.d.ts +11 -0
  113. package/dist/agent/factory.js +113 -88
  114. package/dist/agent/loop_policy.d.ts +6 -3
  115. package/dist/agent/loop_policy.js +12 -3
  116. package/dist/agent/measurement_guidance.d.ts +2 -0
  117. package/dist/agent/measurement_guidance.js +5 -0
  118. package/dist/agent/request_encoder.d.ts +8 -1
  119. package/dist/agent/request_encoder.js +95 -23
  120. package/dist/agent/runtime/benchmark_comparison.d.ts +30 -0
  121. package/dist/agent/runtime/benchmark_comparison.js +94 -0
  122. package/dist/agent/runtime/benchmark_contract.d.ts +48 -0
  123. package/dist/agent/runtime/benchmark_contract.js +90 -0
  124. package/dist/agent/runtime/checked_commands.d.ts +32 -0
  125. package/dist/agent/runtime/checked_commands.js +119 -0
  126. package/dist/agent/runtime/command_execution_policy.d.ts +26 -0
  127. package/dist/agent/runtime/command_execution_policy.js +91 -0
  128. package/dist/agent/runtime/command_jobs.d.ts +36 -18
  129. package/dist/agent/runtime/command_jobs.js +151 -13
  130. package/dist/agent/runtime/command_panes.d.ts +59 -0
  131. package/dist/agent/runtime/command_panes.js +398 -0
  132. package/dist/agent/runtime/command_wait.d.ts +19 -0
  133. package/dist/agent/runtime/command_wait.js +167 -0
  134. package/dist/agent/runtime/cpu_benchmark.d.ts +30 -0
  135. package/dist/agent/runtime/cpu_benchmark.js +126 -0
  136. package/dist/agent/runtime/delegated_evidence.d.ts +26 -0
  137. package/dist/agent/runtime/delegated_evidence.js +80 -0
  138. package/dist/agent/runtime/evidence.d.ts +127 -0
  139. package/dist/agent/runtime/evidence.js +468 -0
  140. package/dist/agent/runtime/execution_context.d.ts +7 -0
  141. package/dist/agent/runtime/execution_context.js +39 -3
  142. package/dist/agent/runtime/json_verifier_recipe.d.ts +8 -0
  143. package/dist/agent/runtime/json_verifier_recipe.js +66 -0
  144. package/dist/agent/runtime/measurements.d.ts +110 -0
  145. package/dist/agent/runtime/measurements.js +317 -0
  146. package/dist/agent/runtime/policy.d.ts +4 -0
  147. package/dist/agent/runtime/policy.js +31 -20
  148. package/dist/agent/runtime/provider_native_evidence.d.ts +20 -0
  149. package/dist/agent/runtime/provider_native_evidence.js +86 -0
  150. package/dist/agent/runtime/recovery.d.ts +2 -0
  151. package/dist/agent/runtime/recovery.js +45 -2
  152. package/dist/agent/runtime/remote_broker_transport.d.ts +10 -0
  153. package/dist/agent/runtime/remote_broker_transport.js +84 -0
  154. package/dist/agent/runtime/remote_deletion_receipts.d.ts +3 -0
  155. package/dist/agent/runtime/remote_deletion_receipts.js +43 -0
  156. package/dist/agent/runtime/remote_journal_replay.d.ts +13 -0
  157. package/dist/agent/runtime/remote_journal_replay.js +233 -0
  158. package/dist/agent/runtime/remote_mutation_journal.d.ts +25 -0
  159. package/dist/agent/runtime/remote_mutation_journal.js +208 -0
  160. package/dist/agent/runtime/remote_resource_endpoint.d.ts +7 -0
  161. package/dist/agent/runtime/remote_resource_endpoint.js +6 -0
  162. package/dist/agent/runtime/remote_resource_errors.d.ts +5 -0
  163. package/dist/agent/runtime/remote_resource_errors.js +9 -0
  164. package/dist/agent/runtime/remote_resource_script.d.ts +2 -0
  165. package/dist/agent/runtime/remote_resource_script.js +1009 -0
  166. package/dist/agent/runtime/remote_resources.d.ts +29 -0
  167. package/dist/agent/runtime/remote_resources.js +160 -0
  168. package/dist/agent/runtime/source_verification.d.ts +12 -0
  169. package/dist/agent/runtime/source_verification.js +210 -0
  170. package/dist/agent/runtime/source_verification_contract.d.ts +75 -0
  171. package/dist/agent/runtime/source_verification_contract.js +203 -0
  172. package/dist/agent/runtime/tool_checkpoints.d.ts +11 -0
  173. package/dist/agent/runtime/tool_checkpoints.js +26 -0
  174. package/dist/agent/runtime/tool_effects.d.ts +5 -0
  175. package/dist/agent/runtime/tool_progress.d.ts +12 -0
  176. package/dist/agent/runtime/tool_progress.js +76 -0
  177. package/dist/agent/runtime/tool_runtime.d.ts +16 -1
  178. package/dist/agent/runtime/tool_runtime.js +204 -10
  179. package/dist/agent/runtime/tracing.d.ts +1 -1
  180. package/dist/agent/runtime/verifier_capture.d.ts +9 -0
  181. package/dist/agent/runtime/verifier_capture.js +100 -0
  182. package/dist/agent/runtime/verifier_contract.d.ts +24 -0
  183. package/dist/agent/runtime/verifier_contract.js +41 -0
  184. package/dist/agent/subagent.d.ts +20 -10
  185. package/dist/agent/subagent.js +266 -29
  186. package/dist/agent/tool_response_directory.d.ts +24 -0
  187. package/dist/agent/tool_response_directory.js +61 -0
  188. package/dist/agent/tool_response_source.d.ts +8 -0
  189. package/dist/agent/tool_response_source.js +49 -0
  190. package/dist/agent/tool_response_store.d.ts +75 -4
  191. package/dist/agent/tool_response_store.js +583 -64
  192. package/dist/agent/tools/ask_user.d.ts +3 -1
  193. package/dist/agent/tools/ask_user.js +30 -11
  194. package/dist/agent/tools/background.js +1 -0
  195. package/dist/agent/tools/benchmark_cpu.d.ts +2 -0
  196. package/dist/agent/tools/benchmark_cpu.js +102 -0
  197. package/dist/agent/tools/compare_benchmarks.d.ts +2 -0
  198. package/dist/agent/tools/compare_benchmarks.js +53 -0
  199. package/dist/agent/tools/deferred.js +1 -0
  200. package/dist/agent/tools/delegate.js +18 -2
  201. package/dist/agent/tools/helper_requirements.d.ts +7 -0
  202. package/dist/agent/tools/helper_requirements.js +19 -0
  203. package/dist/agent/tools/index.d.ts +1 -0
  204. package/dist/agent/tools/index.js +3 -0
  205. package/dist/agent/tools/measurement_report.d.ts +22 -0
  206. package/dist/agent/tools/measurement_report.js +190 -0
  207. package/dist/agent/tools/pane.d.ts +0 -7
  208. package/dist/agent/tools/pane.js +5 -4
  209. package/dist/agent/tools/project_context.d.ts +3 -0
  210. package/dist/agent/tools/project_context.js +45 -0
  211. package/dist/agent/tools/recall_tool_response.d.ts +3 -5
  212. package/dist/agent/tools/recall_tool_response.js +19 -29
  213. package/dist/agent/tools/registry.d.ts +1 -0
  214. package/dist/agent/tools/registry.js +23 -0
  215. package/dist/agent/tools/related_sessions.d.ts +2 -0
  216. package/dist/agent/tools/related_sessions.js +156 -0
  217. package/dist/agent/tools/routine.js +13 -3
  218. package/dist/agent/tools/session_evidence.d.ts +3 -0
  219. package/dist/agent/tools/session_evidence.js +72 -0
  220. package/dist/agent/tools/shell.d.ts +4 -3
  221. package/dist/agent/tools/shell.js +174 -47
  222. package/dist/agent/tools/tool_search.js +3 -2
  223. package/dist/agent/tools/types.d.ts +28 -0
  224. package/dist/agent/tools/verify_artifact.d.ts +2 -0
  225. package/dist/agent/tools/verify_artifact.js +60 -0
  226. package/dist/agent/tools/workflow.js +1 -0
  227. package/dist/app/activity.d.ts +6 -1
  228. package/dist/app/activity.js +81 -12
  229. package/dist/app/agent_runner.d.ts +6 -1
  230. package/dist/app/agent_runner.js +34 -19
  231. package/dist/app/command_context.js +106 -10
  232. package/dist/app/controller.d.ts +15 -4
  233. package/dist/app/controller.js +29 -3
  234. package/dist/app/escape_stop.d.ts +11 -0
  235. package/dist/app/escape_stop.js +15 -0
  236. package/dist/app/liveness.d.ts +6 -4
  237. package/dist/app/liveness.js +13 -3
  238. package/dist/app/model_catalog_cache.d.ts +5 -0
  239. package/dist/app/model_catalog_cache.js +138 -0
  240. package/dist/app/ordered_transcript.js +43 -4
  241. package/dist/app/prompt_turn.d.ts +14 -0
  242. package/dist/app/prompt_turn.js +53 -0
  243. package/dist/app/recap.d.ts +3 -0
  244. package/dist/app/recap.js +9 -3
  245. package/dist/app/restart.d.ts +3 -2
  246. package/dist/app/restart.js +22 -7
  247. package/dist/app/rewind.d.ts +3 -3
  248. package/dist/app/rewind.js +3 -3
  249. package/dist/app/selection_completion.d.ts +17 -2
  250. package/dist/app/selection_completion.js +84 -9
  251. package/dist/app/session_manager.d.ts +38 -6
  252. package/dist/app/session_manager.js +263 -60
  253. package/dist/app/session_messages.d.ts +3 -0
  254. package/dist/app/session_messages.js +60 -0
  255. package/dist/app/task_scope_router.d.ts +20 -0
  256. package/dist/app/task_scope_router.js +173 -0
  257. package/dist/app/transcript_window.d.ts +2 -0
  258. package/dist/app/transcript_window.js +4 -0
  259. package/dist/app/workspace_admission_details.d.ts +3 -0
  260. package/dist/app/workspace_admission_details.js +26 -0
  261. package/dist/app/workspace_layout_controller.d.ts +11 -0
  262. package/dist/app/workspace_layout_controller.js +88 -0
  263. package/dist/app/workspace_monitor.d.ts +1 -0
  264. package/dist/app/workspace_monitor.js +216 -0
  265. package/dist/app/workspace_presets.d.ts +29 -0
  266. package/dist/app/workspace_presets.js +192 -0
  267. package/dist/attention/queue.d.ts +37 -0
  268. package/dist/attention/queue.js +183 -0
  269. package/dist/bench/rf_shared.d.ts +2 -0
  270. package/dist/board/binding.d.ts +42 -0
  271. package/dist/board/binding.js +38 -0
  272. package/dist/board/client.d.ts +42 -0
  273. package/dist/board/client.js +60 -0
  274. package/dist/cli.js +1 -1
  275. package/dist/cli_args.js +19 -17
  276. package/dist/cli_main.js +110 -13
  277. package/dist/cli_ratatui.d.ts +183 -16
  278. package/dist/cli_ratatui.js +3989 -1255
  279. package/dist/components/ActivityLine.d.ts +3 -2
  280. package/dist/components/ActivityLine.js +2 -2
  281. package/dist/components/InputArea.d.ts +19 -1
  282. package/dist/components/InputArea.js +264 -190
  283. package/dist/components/MessageList.d.ts +2 -0
  284. package/dist/components/MessageList.js +3 -1
  285. package/dist/components/SingleMessage.d.ts +2 -0
  286. package/dist/components/SingleMessage.js +4 -2
  287. package/dist/components/StatusBar.d.ts +4 -2
  288. package/dist/components/StatusBar.js +3 -1
  289. package/dist/conductor_branch.js +3 -0
  290. package/dist/config/api_retry.d.ts +6 -1
  291. package/dist/config/api_retry.js +19 -1
  292. package/dist/config/defaults.d.ts +2 -1
  293. package/dist/config/defaults.js +9 -2
  294. package/dist/config/message_display.d.ts +1 -0
  295. package/dist/config/message_display.js +17 -2
  296. package/dist/config/permissions.d.ts +21 -0
  297. package/dist/config/permissions.js +89 -0
  298. package/dist/config/resolved.d.ts +2 -2
  299. package/dist/config/types.d.ts +32 -5
  300. package/dist/config.d.ts +38 -4
  301. package/dist/config.js +290 -42
  302. package/dist/context/project_intelligence.d.ts +44 -0
  303. package/dist/context/project_intelligence.js +246 -0
  304. package/dist/desktop/cli_launch.d.ts +8 -0
  305. package/dist/desktop/cli_launch.js +6 -0
  306. package/dist/desktop/cli_shim.d.ts +8 -0
  307. package/dist/desktop/cli_shim.js +120 -0
  308. package/dist/desktop/runtime.d.ts +16 -0
  309. package/dist/desktop/runtime.js +161 -0
  310. package/dist/desktop/worker_launch.d.ts +7 -0
  311. package/dist/desktop/worker_launch.js +7 -0
  312. package/dist/diagnostics/cargo_mutants_selection.d.ts +27 -0
  313. package/dist/diagnostics/cargo_mutants_selection.js +48 -0
  314. package/dist/diagnostics/native_terminal_benchmark.d.ts +58 -0
  315. package/dist/diagnostics/native_terminal_benchmark.js +1247 -0
  316. package/dist/diagnostics/session_evidence_package.d.ts +40 -0
  317. package/dist/diagnostics/session_evidence_package.js +234 -0
  318. package/dist/diagnostics/session_export.d.ts +93 -0
  319. package/dist/diagnostics/session_export.js +634 -0
  320. package/dist/emulation/tool_adapters.js +48 -18
  321. package/dist/emulation/ztc_addendum.d.ts +1 -0
  322. package/dist/emulation/ztc_addendum.js +13 -12
  323. package/dist/environment/service_runner.d.ts +1 -0
  324. package/dist/environment/service_runner.js +68 -0
  325. package/dist/environment/store.d.ts +120 -0
  326. package/dist/environment/store.js +387 -0
  327. package/dist/events.d.ts +40 -1
  328. package/dist/events.js +10 -17
  329. package/dist/goal_contract.d.ts +25 -0
  330. package/dist/goal_contract.js +44 -0
  331. package/dist/headless.d.ts +31 -0
  332. package/dist/headless.js +578 -70
  333. package/dist/headless_cli.js +8 -0
  334. package/dist/headless_cli_args.d.ts +1 -0
  335. package/dist/headless_cli_args.js +1 -0
  336. package/dist/intake/cli.d.ts +1 -0
  337. package/dist/intake/cli.js +33 -0
  338. package/dist/intake/format.d.ts +2 -0
  339. package/dist/intake/format.js +14 -0
  340. package/dist/intake/notifications.d.ts +16 -0
  341. package/dist/intake/notifications.js +132 -0
  342. package/dist/intake/store.d.ts +56 -0
  343. package/dist/intake/store.js +238 -0
  344. package/dist/library.d.ts +8 -0
  345. package/dist/library.js +19 -10
  346. package/dist/mcp/client.d.ts +1 -0
  347. package/dist/mcp/client.js +20 -0
  348. package/dist/modes/builtin/plan.yaml +2 -2
  349. package/dist/modes/handlers.js +1 -1
  350. package/dist/onboarding/first_run.d.ts +3 -0
  351. package/dist/onboarding/first_run.js +33 -25
  352. package/dist/onboarding/setup.d.ts +32 -0
  353. package/dist/onboarding/setup.js +133 -0
  354. package/dist/onboarding/setup_agent_health.d.ts +17 -0
  355. package/dist/onboarding/setup_agent_health.js +79 -0
  356. package/dist/onboarding/setup_environment.d.ts +66 -0
  357. package/dist/onboarding/setup_environment.js +219 -0
  358. package/dist/onboarding/setup_workspace.d.ts +17 -0
  359. package/dist/onboarding/setup_workspace.js +129 -0
  360. package/dist/optimize/adapters/index.d.ts +4 -1
  361. package/dist/optimize/adapters/index.js +7 -0
  362. package/dist/optimize/adapters/kernelbench.js +14 -5
  363. package/dist/optimize/adapters/popcorn.js +3 -2
  364. package/dist/optimize/adapters/profile_benchmark.js +13 -7
  365. package/dist/optimize/adapters/rfbench.js +25 -14
  366. package/dist/optimize/adapters/types.d.ts +3 -0
  367. package/dist/optimize/adapters/zergpod.js +5 -2
  368. package/dist/optimize/baseline.js +10 -21
  369. package/dist/optimize/branch.js +9 -12
  370. package/dist/optimize/combine.js +2 -3
  371. package/dist/optimize/executor.js +34 -48
  372. package/dist/optimize/measurements.d.ts +55 -0
  373. package/dist/optimize/measurements.js +173 -0
  374. package/dist/optimize/results.d.ts +1 -0
  375. package/dist/optimize/results.js +11 -33
  376. package/dist/optimize/tge.js +2 -1
  377. package/dist/panes/initial_input.d.ts +19 -0
  378. package/dist/panes/initial_input.js +206 -0
  379. package/dist/panes/labels.d.ts +16 -0
  380. package/dist/panes/labels.js +42 -0
  381. package/dist/panes/model_catalog.d.ts +3 -3
  382. package/dist/panes/model_catalog.js +28 -4
  383. package/dist/panes/pane_registry.js +6 -2
  384. package/dist/panes/types.d.ts +3 -0
  385. package/dist/panes/ztc_launch.js +19 -0
  386. package/dist/plugin/optimization.d.ts +2 -0
  387. package/dist/plugin/optimization.js +1 -0
  388. package/dist/plugin/runtime.d.ts +2 -0
  389. package/dist/plugin/simulation.d.ts +6 -1
  390. package/dist/plugin/simulation_contract.d.ts +836 -1
  391. package/dist/plugin/simulation_documents.d.ts +22 -0
  392. package/dist/plugin/simulation_documents.js +1 -0
  393. package/dist/plugin/simulation_interventions.d.ts +103 -0
  394. package/dist/plugin/simulation_interventions.js +1 -0
  395. package/dist/plugin/simulation_living.d.ts +1 -0
  396. package/dist/plugin/simulation_living.js +3 -0
  397. package/dist/plugin/simulation_meetings.d.ts +121 -0
  398. package/dist/plugin/simulation_meetings.js +1 -0
  399. package/dist/plugin/simulation_story_review.d.ts +111 -0
  400. package/dist/plugin/simulation_story_review.js +1 -0
  401. package/dist/plugin/simulation_storyteller.d.ts +91 -0
  402. package/dist/plugin/simulation_storyteller.js +1 -0
  403. package/dist/plugin/simulation_structured.d.ts +2 -0
  404. package/dist/plugin/simulation_structured.js +2 -0
  405. package/dist/plugin/simulation_toolkit.d.ts +21 -0
  406. package/dist/plugin/simulation_toolkit.js +24 -0
  407. package/dist/prompts/tool_delegate_task.j2 +1 -1
  408. package/dist/remote-broker/Dockerfile +10 -0
  409. package/dist/remote-broker/archive.py +1227 -0
  410. package/dist/remote-broker/cutover.py +761 -0
  411. package/dist/remote-broker/requirements.txt +5 -0
  412. package/dist/remote-broker/resources.json +6 -0
  413. package/dist/remote-broker/resources.write-staging.example.json +18 -0
  414. package/dist/remote-broker/retained.py +686 -0
  415. package/dist/remote-broker/retained_cleanup.py +550 -0
  416. package/dist/remote-broker/server.py +648 -0
  417. package/dist/remote-broker/worker.py +1007 -0
  418. package/dist/router_auth.d.ts +31 -0
  419. package/dist/router_auth.js +155 -9
  420. package/dist/runbooks/catalog.d.ts +3 -0
  421. package/dist/runbooks/catalog.js +26 -0
  422. package/dist/runbooks/library.d.ts +11 -0
  423. package/dist/runbooks/library.js +95 -0
  424. package/dist/runbooks/package.d.ts +43 -0
  425. package/dist/runbooks/package.js +102 -0
  426. package/dist/session.d.ts +65 -13
  427. package/dist/session.js +548 -43
  428. package/dist/session_handoff.d.ts +25 -0
  429. package/dist/session_handoff.js +322 -0
  430. package/dist/session_handoff_contract.d.ts +89 -0
  431. package/dist/session_handoff_contract.js +179 -0
  432. package/dist/session_media.d.ts +41 -0
  433. package/dist/session_media.js +357 -0
  434. package/dist/session_ownership.d.ts +16 -0
  435. package/dist/session_ownership.js +221 -0
  436. package/dist/session_public.d.ts +10 -2
  437. package/dist/session_public.js +6 -1
  438. package/dist/simulation/dynamic_history.d.ts +42 -0
  439. package/dist/simulation/dynamic_history.js +173 -0
  440. package/dist/simulation/engines/swarm/pane_manager.js +7 -6
  441. package/dist/simulation/inference.d.ts +3 -1
  442. package/dist/simulation/inference.js +19 -1
  443. package/dist/simulation/intervention_generation.d.ts +27 -0
  444. package/dist/simulation/intervention_generation.js +246 -0
  445. package/dist/simulation/intervention_material.d.ts +4 -0
  446. package/dist/simulation/intervention_material.js +81 -0
  447. package/dist/simulation/living/context.d.ts +3130 -0
  448. package/dist/simulation/living/context.js +944 -0
  449. package/dist/simulation/living/definer.d.ts +12 -0
  450. package/dist/simulation/living/definer.js +223 -0
  451. package/dist/simulation/living/definition.d.ts +257 -0
  452. package/dist/simulation/living/definition.js +341 -0
  453. package/dist/simulation/living/frame.d.ts +259 -0
  454. package/dist/simulation/living/frame.js +223 -0
  455. package/dist/simulation/living/identifiers.d.ts +2 -0
  456. package/dist/simulation/living/identifiers.js +12 -0
  457. package/dist/simulation/living/index.d.ts +15 -0
  458. package/dist/simulation/living/index.js +15 -0
  459. package/dist/simulation/living/inference.d.ts +219 -0
  460. package/dist/simulation/living/inference.js +576 -0
  461. package/dist/simulation/living/mechanics.d.ts +54 -0
  462. package/dist/simulation/living/mechanics.js +588 -0
  463. package/dist/simulation/living/model-input.d.ts +25 -0
  464. package/dist/simulation/living/model-input.js +215 -0
  465. package/dist/simulation/living/open-world.d.ts +257 -0
  466. package/dist/simulation/living/open-world.js +102 -0
  467. package/dist/simulation/living/projection.d.ts +7 -0
  468. package/dist/simulation/living/projection.js +31 -0
  469. package/dist/simulation/living/recall.d.ts +17 -0
  470. package/dist/simulation/living/recall.js +25 -0
  471. package/dist/simulation/living/reduce.d.ts +15 -0
  472. package/dist/simulation/living/reduce.js +1853 -0
  473. package/dist/simulation/living/replay.d.ts +6 -0
  474. package/dist/simulation/living/replay.js +22 -0
  475. package/dist/simulation/living/runtime.d.ts +140 -0
  476. package/dist/simulation/living/runtime.js +3020 -0
  477. package/dist/simulation/living/shared-kinds.d.ts +24 -0
  478. package/dist/simulation/living/shared-kinds.js +96 -0
  479. package/dist/simulation/living/types.d.ts +2785 -0
  480. package/dist/simulation/living/types.js +669 -0
  481. package/dist/simulation/llm.d.ts +3 -1
  482. package/dist/simulation/llm.js +90 -30
  483. package/dist/simulation/memory/embedding.d.ts +1 -1
  484. package/dist/simulation/memory/embedding.js +9 -3
  485. package/dist/simulation/memory/filesystem.d.ts +2 -0
  486. package/dist/simulation/memory/filesystem.js +5 -1
  487. package/dist/simulation/memory/filesystem_file_tree.d.ts +4 -1
  488. package/dist/simulation/memory/filesystem_file_tree.js +41 -10
  489. package/dist/simulation/memory/filesystem_invariants.js +1 -2
  490. package/dist/simulation/memory/filesystem_types.d.ts +1 -0
  491. package/dist/simulation/memory/memory.d.ts +2 -0
  492. package/dist/simulation/memory/memory.js +5 -1
  493. package/dist/simulation/orchestration/intent.js +0 -2
  494. package/dist/simulation/orchestration/lifecycle.js +0 -2
  495. package/dist/simulation/plugin_host.d.ts +25 -1
  496. package/dist/simulation/plugin_host.js +334 -17
  497. package/dist/simulation/session_documents.d.ts +20 -0
  498. package/dist/simulation/session_documents.js +62 -0
  499. package/dist/simulation/session_input_validation.d.ts +43 -0
  500. package/dist/simulation/session_input_validation.js +364 -0
  501. package/dist/simulation/session_inputs.d.ts +32 -0
  502. package/dist/simulation/session_inputs.js +154 -0
  503. package/dist/simulation/telemetry.d.ts +11 -14
  504. package/dist/simulation/telemetry.js +177 -54
  505. package/dist/simulation/toolkit/bounded_turns.d.ts +13 -0
  506. package/dist/simulation/toolkit/bounded_turns.js +80 -0
  507. package/dist/simulation/toolkit/dynamic_agents.d.ts +25 -0
  508. package/dist/simulation/toolkit/dynamic_agents.js +218 -0
  509. package/dist/simulation/toolkit/dynamic_digest.d.ts +1 -0
  510. package/dist/simulation/toolkit/dynamic_digest.js +8 -0
  511. package/dist/simulation/toolkit/dynamic_documents.d.ts +7 -0
  512. package/dist/simulation/toolkit/dynamic_documents.js +71 -0
  513. package/dist/simulation/toolkit/dynamic_driver.d.ts +8 -0
  514. package/dist/simulation/toolkit/dynamic_driver.js +269 -0
  515. package/dist/simulation/toolkit/dynamic_game.d.ts +53 -0
  516. package/dist/simulation/toolkit/dynamic_game.js +805 -0
  517. package/dist/simulation/toolkit/dynamic_knowledge.d.ts +15 -0
  518. package/dist/simulation/toolkit/dynamic_knowledge.js +91 -0
  519. package/dist/simulation/toolkit/dynamic_mechanics.d.ts +22 -0
  520. package/dist/simulation/toolkit/dynamic_mechanics.js +910 -0
  521. package/dist/simulation/toolkit/dynamic_meetings.d.ts +239 -0
  522. package/dist/simulation/toolkit/dynamic_meetings.js +350 -0
  523. package/dist/simulation/toolkit/dynamic_progress.d.ts +131 -0
  524. package/dist/simulation/toolkit/dynamic_progress.js +214 -0
  525. package/dist/simulation/toolkit/dynamic_projection.d.ts +9 -0
  526. package/dist/simulation/toolkit/dynamic_projection.js +219 -0
  527. package/dist/simulation/toolkit/dynamic_runtime.d.ts +412 -0
  528. package/dist/simulation/toolkit/dynamic_runtime.js +6536 -0
  529. package/dist/simulation/toolkit/dynamic_state.d.ts +111 -0
  530. package/dist/simulation/toolkit/dynamic_state.js +1967 -0
  531. package/dist/simulation/toolkit/dynamic_story_review.d.ts +508 -0
  532. package/dist/simulation/toolkit/dynamic_story_review.js +333 -0
  533. package/dist/simulation/toolkit/dynamic_storyteller.d.ts +77 -0
  534. package/dist/simulation/toolkit/dynamic_storyteller.js +114 -0
  535. package/dist/simulation/toolkit/dynamic_storyteller_runtime.d.ts +26 -0
  536. package/dist/simulation/toolkit/dynamic_storyteller_runtime.js +126 -0
  537. package/dist/simulation/toolkit/dynamic_world.d.ts +22 -0
  538. package/dist/simulation/toolkit/dynamic_world.js +377 -0
  539. package/dist/simulation/toolkit/structured_output.d.ts +5 -0
  540. package/dist/simulation/toolkit/structured_output.js +321 -0
  541. package/dist/simulation/types/world.d.ts +2 -0
  542. package/dist/simulation/world/artifact_store.js +1 -1
  543. package/dist/simulation/world/memory_manager.d.ts +5 -0
  544. package/dist/simulation/world/memory_manager.js +17 -2
  545. package/dist/simulation/world/state.d.ts +3 -2
  546. package/dist/simulation/world/state.js +15 -5
  547. package/dist/skills/bundled/measurement-validation/SKILL.md +144 -0
  548. package/dist/terminal_attach.d.ts +1 -0
  549. package/dist/terminal_attach.js +113 -0
  550. package/dist/tool_progress.d.ts +3 -0
  551. package/dist/tool_progress.js +27 -0
  552. package/dist/types.d.ts +145 -10
  553. package/dist/types.js +3 -0
  554. package/dist/ui/core/input.d.ts +3 -0
  555. package/dist/ui/core/input_segments.d.ts +18 -1
  556. package/dist/ui/core/input_segments.js +131 -47
  557. package/dist/ui/core/input_state.d.ts +12 -0
  558. package/dist/ui/core/layout_yoga.d.ts +1 -1
  559. package/dist/ui/core/turn_metadata.d.ts +5 -0
  560. package/dist/ui/core/turn_metadata.js +22 -0
  561. package/dist/ui/ink/render.d.ts +2 -1
  562. package/dist/ui/ink/render.js +6 -5
  563. package/dist/ui/ratatui/headless_pane_manager.d.ts +14 -1
  564. package/dist/ui/ratatui/headless_pane_manager.js +293 -104
  565. package/dist/ui/ratatui/index.d.ts +1 -0
  566. package/dist/ui/ratatui/input.d.ts +4 -0
  567. package/dist/ui/ratatui/input.js +15 -0
  568. package/dist/ui/ratatui/ipc_path.d.ts +2 -0
  569. package/dist/ui/ratatui/ipc_path.js +29 -1
  570. package/dist/ui/ratatui/mux_persistence.d.ts +3 -1
  571. package/dist/ui/ratatui/mux_persistence.js +139 -1
  572. package/dist/ui/ratatui/pane_relay.d.ts +1 -1
  573. package/dist/ui/ratatui/pane_relay.js +55 -27
  574. package/dist/ui/ratatui/process.d.ts +17 -1
  575. package/dist/ui/ratatui/process.js +80 -7
  576. package/dist/ui/ratatui/protocol.d.ts +236 -1
  577. package/dist/ui/ratatui/protocol.js +90 -0
  578. package/dist/ui/scrollback.d.ts +2 -1
  579. package/dist/ui/scrollback.js +9 -4
  580. package/dist/ui/stream_typewriter.d.ts +8 -3
  581. package/dist/ui/stream_typewriter.js +30 -1
  582. package/dist/ui/streaming_scrollback.d.ts +1 -0
  583. package/dist/ui/streaming_scrollback.js +1 -1
  584. package/dist/ui/transcript_render_cache.js +10 -0
  585. package/dist/ui/views/activity_line.d.ts +5 -3
  586. package/dist/ui/views/activity_line.js +65 -7
  587. package/dist/ui/views/app.d.ts +6 -3
  588. package/dist/ui/views/app.js +17 -6
  589. package/dist/ui/views/completion_menu.js +10 -5
  590. package/dist/ui/views/input_area.d.ts +7 -3
  591. package/dist/ui/views/input_area.js +15 -9
  592. package/dist/ui/views/message_list.d.ts +4 -1
  593. package/dist/ui/views/message_list.js +89 -19
  594. package/dist/ui/views/queue_panel.d.ts +3 -1
  595. package/dist/ui/views/queue_panel.js +9 -2
  596. package/dist/ui/views/status_bar.d.ts +4 -2
  597. package/dist/ui/views/status_bar.js +28 -13
  598. package/dist/ui/views/theme.d.ts +2 -0
  599. package/dist/ui/views/theme.js +2 -0
  600. package/dist/ui/widgets/color_panel.js +18 -0
  601. package/dist/ui/widgets/form.js +8 -0
  602. package/dist/ui/widgets/log_view.js +7 -0
  603. package/dist/ui/widgets/navigator_panel.js +8 -0
  604. package/dist/ui/widgets/prompt_viewer.js +2 -0
  605. package/dist/ui/widgets/questionnaire.d.ts +2 -0
  606. package/dist/ui/widgets/questionnaire.js +79 -16
  607. package/dist/ui/widgets/resume_panel.d.ts +2 -0
  608. package/dist/ui/widgets/resume_panel.js +26 -15
  609. package/dist/ui/widgets/rewind_panel.d.ts +2 -2
  610. package/dist/ui/widgets/rewind_panel.js +4 -2
  611. package/dist/ui/widgets/select.js +16 -27
  612. package/dist/ui/widgets/settings_panel.js +16 -0
  613. package/dist/ui/widgets/status_line_panel.d.ts +1 -0
  614. package/dist/ui/widgets/status_line_panel.js +30 -4
  615. package/dist/ui/widgets/text_input.d.ts +2 -0
  616. package/dist/ui/widgets/text_input.js +15 -1
  617. package/dist/ui/widgets/types.d.ts +2 -0
  618. package/dist/usage_projection.d.ts +24 -0
  619. package/dist/usage_projection.js +130 -0
  620. package/dist/usage_snapshot.d.ts +36 -0
  621. package/dist/usage_snapshot.js +131 -0
  622. package/dist/utils/assistant_message.d.ts +2 -0
  623. package/dist/utils/assistant_message.js +5 -0
  624. package/dist/utils/atomic_write.d.ts +6 -2
  625. package/dist/utils/atomic_write.js +29 -4
  626. package/dist/utils/checked_shell.d.ts +25 -0
  627. package/dist/utils/checked_shell.js +107 -0
  628. package/dist/utils/compaction.d.ts +4 -1
  629. package/dist/utils/compaction.js +31 -7
  630. package/dist/utils/context.d.ts +4 -4
  631. package/dist/utils/context.js +14 -12
  632. package/dist/utils/deepseek.d.ts +2 -2
  633. package/dist/utils/deepseek.js +13 -5
  634. package/dist/utils/ephemeral.js +4 -0
  635. package/dist/utils/ephemeral_tools.d.ts +18 -0
  636. package/dist/utils/ephemeral_tools.js +97 -0
  637. package/dist/utils/jev_client.d.ts +4 -0
  638. package/dist/utils/jev_client.js +15 -0
  639. package/dist/utils/model_cache.d.ts +15 -0
  640. package/dist/utils/model_cache.js +143 -0
  641. package/dist/utils/models.d.ts +4 -2
  642. package/dist/utils/models.js +12 -16
  643. package/dist/utils/reasoning.d.ts +8 -1
  644. package/dist/utils/reasoning.js +31 -11
  645. package/dist/utils/router_catalog.d.ts +49 -0
  646. package/dist/utils/router_catalog.js +271 -0
  647. package/dist/utils/sandbox.d.ts +9 -0
  648. package/dist/utils/sandbox.js +118 -15
  649. package/dist/utils/shell.d.ts +7 -0
  650. package/dist/utils/shell.js +98 -34
  651. package/dist/utils/subprocess_env.d.ts +3 -0
  652. package/dist/utils/subprocess_env.js +27 -1
  653. package/dist/web/accounts_mirror.d.ts +3 -1
  654. package/dist/web/accounts_mirror.js +13 -9
  655. package/dist/web/child_publication.d.ts +17 -0
  656. package/dist/web/child_publication.js +45 -0
  657. package/dist/web/mirror_authenticator.d.ts +31 -11
  658. package/dist/web/mirror_authenticator.js +67 -17
  659. package/dist/web/mirror_client.d.ts +31 -4
  660. package/dist/web/mirror_client.js +189 -23
  661. package/dist/web/mirror_stream.d.ts +84 -22
  662. package/dist/web/mirror_stream.js +676 -95
  663. package/dist/web/observer_query_redaction.d.ts +6 -0
  664. package/dist/web/observer_query_redaction.js +58 -0
  665. package/dist/web/pane_registry.d.ts +2 -0
  666. package/dist/web/pane_registry.js +86 -22
  667. package/dist/web/tool_image.d.ts +6 -0
  668. package/dist/web/tool_image.js +17 -0
  669. package/dist/web/view_plugin.d.ts +14 -0
  670. package/dist/web/view_plugin.js +23 -1
  671. package/dist/worker/executor.js +31 -12
  672. package/dist/worker/index.d.ts +1 -0
  673. package/dist/worker/toolsets.js +3 -1
  674. package/dist/worker/types.d.ts +12 -1
  675. package/dist/workflows/registry.js +1 -0
  676. package/dist/workflows/registry_handle.d.ts +2 -0
  677. package/dist/workflows/runtime.d.ts +2 -0
  678. package/dist/workflows/runtime.js +1 -0
  679. package/dist/workspace_agent.d.ts +7 -0
  680. package/dist/workspace_agent.js +36 -0
  681. package/dist/workspace_collision.d.ts +76 -0
  682. package/dist/workspace_collision.js +688 -0
  683. package/dist/workspace_layout.d.ts +18 -0
  684. package/dist/workspace_layout.js +121 -0
  685. package/dist/workspace_runtime.d.ts +44 -0
  686. package/dist/workspace_runtime.js +82 -0
  687. package/dist/workspace_session_context.d.ts +62 -0
  688. package/dist/workspace_session_context.js +160 -0
  689. package/dist/zlm-embed.mjs +32518 -9615
  690. package/dist/zlm.js +1 -0
  691. package/node_modules/@zerg/model-contracts/LICENSE.md +375 -0
  692. package/node_modules/@zerg/model-contracts/README.md +90 -0
  693. package/node_modules/@zerg/model-contracts/index.d.ts +20 -0
  694. package/node_modules/@zerg/model-contracts/index.js +223 -0
  695. package/node_modules/@zerg/model-contracts/package.json +8 -0
  696. package/node_modules/glob/node_modules/brace-expansion/index.js +78 -22
  697. package/node_modules/glob/node_modules/brace-expansion/package.json +1 -1
  698. package/node_modules/readdir-glob/node_modules/brace-expansion/index.js +78 -22
  699. package/node_modules/readdir-glob/node_modules/brace-expansion/package.json +1 -1
  700. package/package.json +45 -24
  701. package/packages/model-contracts/LICENSE.md +375 -0
  702. package/packages/model-contracts/README.md +90 -0
  703. package/packages/model-contracts/index.d.ts +20 -0
  704. package/packages/model-contracts/index.js +223 -0
  705. package/packages/model-contracts/package.json +8 -0
  706. package/remote-broker/Dockerfile +10 -0
  707. package/remote-broker/README.md +308 -0
  708. package/remote-broker/archive.py +1227 -0
  709. package/remote-broker/cutover.py +761 -0
  710. package/remote-broker/requirements.txt +5 -0
  711. package/remote-broker/resources.example.json +6 -0
  712. package/remote-broker/resources.write-staging.example.json +18 -0
  713. package/remote-broker/retained.py +686 -0
  714. package/remote-broker/retained_cleanup.py +550 -0
  715. package/remote-broker/server.py +648 -0
  716. package/scripts/build-remote-broker.mjs +13 -0
  717. package/scripts/ensure-local-packages.mjs +6 -0
  718. package/scripts/node-pty-helpers.mjs +103 -0
@@ -0,0 +1,321 @@
1
+ const MAX_DEPTH = 40;
2
+ const OMIT_SCHEMA = { type: 'object', properties: { __ztcOptional: { type: 'string', const: 'omitted' } }, required: ['__ztcOptional'], additionalProperties: false };
3
+ const COMPACT_KEYS = 'x-ztc-compact-keys';
4
+ const KEYED_RELATIONSHIPS = 'x-ztc-keyed-relationships';
5
+ /** Validate standard patterns even in absent fields and unused branches. */
6
+ function validateConstraints(schema, depth) {
7
+ guardDepth(depth);
8
+ if (Object.hasOwn(schema, 'pattern')) {
9
+ if (typeof schema.pattern !== 'string')
10
+ throw new Error('Invalid string pattern');
11
+ new RegExp(schema.pattern, 'u');
12
+ }
13
+ schemaChildren(schema).forEach(child => validateConstraints(child, depth + 1));
14
+ }
15
+ function schemaChildren(schema) {
16
+ return [
17
+ ...(object(schema.properties) ? Object.values(schema.properties) : []),
18
+ ...(object(schema.items) ? [schema.items] : []),
19
+ ...(Array.isArray(schema.oneOf) ? schema.oneOf : []),
20
+ ...(Array.isArray(schema.anyOf) ? schema.anyOf : []),
21
+ ].filter(object);
22
+ }
23
+ function compactKey(index) {
24
+ let result = '';
25
+ do {
26
+ result = String.fromCharCode(97 + index % 26) + result;
27
+ index = Math.floor(index / 26) - 1;
28
+ } while (index >= 0);
29
+ return result;
30
+ }
31
+ function keyDictionary(schema) {
32
+ const names = new Set();
33
+ function collect(node, depth) {
34
+ guardDepth(depth);
35
+ if (node.additionalProperties === false && object(node.properties)) {
36
+ Object.keys(node.properties).forEach(key => names.add(key));
37
+ }
38
+ schemaChildren(node).forEach(child => collect(child, depth + 1));
39
+ }
40
+ collect(schema, 0);
41
+ return new Map([...names].sort().map((key, index) => [key, compactKey(index)]));
42
+ }
43
+ function renameSchema(schema, keys, depth) {
44
+ guardDepth(depth);
45
+ const result = { ...schema };
46
+ delete result[COMPACT_KEYS];
47
+ const closed = schema.additionalProperties === false;
48
+ if (object(schema.properties)) {
49
+ result.properties = Object.fromEntries(Object.entries(schema.properties).map(([key, child]) => [
50
+ closed ? keys.get(key) : key,
51
+ object(child) ? {
52
+ ...renameSchema(child, keys, depth + 1),
53
+ ...(closed ? { description: typeof child.description === 'string' ? `${key}: ${child.description}` : key } : {}),
54
+ } : child,
55
+ ]));
56
+ if (closed && Array.isArray(schema.required))
57
+ result.required = schema.required.map(key => keys.get(String(key)) ?? key);
58
+ }
59
+ if (object(schema.items))
60
+ result.items = renameSchema(schema.items, keys, depth + 1);
61
+ for (const keyword of ['oneOf', 'anyOf']) {
62
+ if (Array.isArray(schema[keyword]))
63
+ result[keyword] = schema[keyword].map(child => renameSchema(child, keys, depth + 1));
64
+ }
65
+ return result;
66
+ }
67
+ function restoreKeys(value, schema, keys, depth) {
68
+ guardDepth(depth);
69
+ const alternatives = schema.oneOf ?? schema.anyOf;
70
+ if (Array.isArray(alternatives)) {
71
+ const candidates = alternatives.filter(branch => matches(value, branch, depth + 1, true));
72
+ if (candidates.length === 0)
73
+ throw new Error('Simulation output matches no schema branch or contains an unknown key');
74
+ const restored = candidates.map(branch => restoreKeys(value, branch, keys, depth + 1));
75
+ if (new Set(restored.map(item => JSON.stringify(item))).size !== 1)
76
+ throw new Error('Simulation output has ambiguous compact keys');
77
+ return restored[0];
78
+ }
79
+ if (Array.isArray(value) && object(schema.items)) {
80
+ const items = schema.items;
81
+ return value.map(item => restoreKeys(item, items, keys, depth + 1));
82
+ }
83
+ if (object(value) && object(schema.properties)) {
84
+ const properties = schema.properties;
85
+ const closed = schema.additionalProperties === false;
86
+ const required = new Set(Array.isArray(schema.required) ? schema.required : []);
87
+ return Object.fromEntries(Object.entries(value).map(([key, item]) => {
88
+ if (!Object.hasOwn(properties, key)) {
89
+ if (closed)
90
+ throw new Error('Simulation output contains an unknown key');
91
+ return [key, item];
92
+ }
93
+ const child = properties[key];
94
+ const omitted = !required.has(key) && (item === null || matchesOmission(item));
95
+ const restored = object(child) && !omitted ? restoreKeys(item, child, keys, depth + 1) : item;
96
+ return [closed ? keys.get(key) : key, restored];
97
+ }));
98
+ }
99
+ return value;
100
+ }
101
+ function object(value) {
102
+ return value !== null && typeof value === 'object' && !Array.isArray(value);
103
+ }
104
+ function guardDepth(depth) {
105
+ if (depth > MAX_DEPTH)
106
+ throw new Error('Simulation output schema depth exceeded');
107
+ }
108
+ function valueType(value) {
109
+ return value === null ? 'null' : Array.isArray(value) ? 'array' : typeof value;
110
+ }
111
+ function compile(schema, depth) {
112
+ guardDepth(depth);
113
+ const output = { ...schema };
114
+ delete output[KEYED_RELATIONSHIPS];
115
+ // The provider subset omits uniqueness; canonical simulation validation retains it.
116
+ delete output.uniqueItems;
117
+ if (Array.isArray(output.enum) && output.enum.length === 0)
118
+ return null;
119
+ if ('const' in output) {
120
+ output.type = valueType(output.const);
121
+ if (Array.isArray(output.const)) {
122
+ output.minItems = output.const.length;
123
+ output.maxItems = output.const.length;
124
+ output.items = output.const.length === 0 ? { type: 'string' } : { anyOf: output.const.map(item => ({ const: item })) };
125
+ // Structured output accepts scalar constants only; source validation retains array order.
126
+ delete output.const;
127
+ }
128
+ if (object(output.const)) {
129
+ output.properties = Object.fromEntries(Object.entries(output.const).map(([key, value]) => [key, { const: value }]));
130
+ output.required = Object.keys(output.const);
131
+ delete output.const;
132
+ }
133
+ }
134
+ if (Array.isArray(output.enum) && output.type === undefined) {
135
+ const types = [...new Set(output.enum.map(valueType))];
136
+ output.type = types.length === 1 ? types[0] : types;
137
+ }
138
+ const alternatives = output.oneOf ?? output.anyOf;
139
+ if (Array.isArray(alternatives)) {
140
+ output.anyOf = alternatives.map(branch => compile(branch, depth + 1)).filter(branch => branch !== null);
141
+ delete output.oneOf;
142
+ if (output.anyOf.length === 0)
143
+ return null;
144
+ }
145
+ if (object(output.items)) {
146
+ output.items = compile(output.items, depth + 1);
147
+ if (output.items === null) {
148
+ if (Number(output.minItems ?? 0) > 0)
149
+ return null;
150
+ output.items = { type: 'string' };
151
+ output.maxItems = 0;
152
+ }
153
+ }
154
+ if (object(output.properties)) {
155
+ const required = new Set(Array.isArray(output.required) ? output.required : []);
156
+ const properties = [];
157
+ for (const [key, property] of Object.entries(output.properties)) {
158
+ if (!object(property))
159
+ throw new Error('Simulation output property needs an object schema');
160
+ const converted = compile(property, depth + 1);
161
+ if (required.has(key)) {
162
+ if (converted === null)
163
+ return null;
164
+ properties.push([key, converted]);
165
+ }
166
+ else {
167
+ properties.push([key, converted === null ? { type: 'null' } : {
168
+ anyOf: [converted, permitsNull(property, depth + 1) ? OMIT_SCHEMA : { type: 'null' }],
169
+ }]);
170
+ }
171
+ }
172
+ output.properties = Object.fromEntries(properties);
173
+ output.required = properties.map(([key]) => key);
174
+ output.additionalProperties = false;
175
+ }
176
+ return output;
177
+ }
178
+ /** Translate the inference schema only. Canonical validators still own acceptance. */
179
+ export function compileStrictSimulationSchema(schema) {
180
+ validateConstraints(schema, 0);
181
+ const result = compile(schema[COMPACT_KEYS] === true ? renameSchema(schema, keyDictionary(schema), 0) : schema, 0);
182
+ if (result === null)
183
+ throw new Error('Simulation output schema has no possible value');
184
+ return result;
185
+ }
186
+ function permitsNull(schema, depth) {
187
+ guardDepth(depth);
188
+ if ('const' in schema)
189
+ return schema.const === null;
190
+ if (Array.isArray(schema.enum))
191
+ return schema.enum.includes(null);
192
+ const alternatives = schema.oneOf ?? schema.anyOf;
193
+ if (Array.isArray(alternatives))
194
+ return alternatives.some(branch => permitsNull(branch, depth + 1));
195
+ return schema.type === 'null' || (Array.isArray(schema.type) && schema.type.includes('null'));
196
+ }
197
+ /** Select a union by its declared types and discriminants, not by model prose. */
198
+ function matches(value, schema, depth, rejectUnknown = false) {
199
+ guardDepth(depth);
200
+ if ('const' in schema) {
201
+ if (object(schema.const) && object(value)) {
202
+ if (Object.keys(value).length !== Object.keys(schema.const).length
203
+ || !Object.entries(schema.const).every(([key, item]) => matches(value[key], { const: item }, depth + 1, rejectUnknown)))
204
+ return false;
205
+ }
206
+ else if (JSON.stringify(value) !== JSON.stringify(schema.const))
207
+ return false;
208
+ }
209
+ if (Array.isArray(schema.enum) && !schema.enum.includes(value))
210
+ return false;
211
+ if (typeof value === 'string' && typeof schema.pattern === 'string' && !new RegExp(schema.pattern, 'u').test(value))
212
+ return false;
213
+ if (schema.type !== undefined) {
214
+ const types = Array.isArray(schema.type) ? schema.type : [schema.type];
215
+ if (!types.includes(valueType(value)) && !(types.includes('integer') && Number.isInteger(value)))
216
+ return false;
217
+ }
218
+ const alternatives = schema.oneOf ?? schema.anyOf;
219
+ if (Array.isArray(alternatives) && !alternatives.some(branch => matches(value, branch, depth + 1, rejectUnknown)))
220
+ return false;
221
+ if (Array.isArray(value) && object(schema.items)) {
222
+ const items = schema.items;
223
+ if (!value.every(item => matches(item, items, depth + 1, rejectUnknown)))
224
+ return false;
225
+ }
226
+ if (object(value) && object(schema.properties)) {
227
+ if (rejectUnknown && schema.additionalProperties === false && Object.keys(value).some(key => !Object.hasOwn(schema.properties, key)))
228
+ return false;
229
+ const required = new Set(Array.isArray(schema.required) ? schema.required : []);
230
+ for (const [key, property] of Object.entries(schema.properties)) {
231
+ if (!Object.hasOwn(value, key)) {
232
+ if (required.has(key))
233
+ return false;
234
+ else
235
+ continue;
236
+ }
237
+ if (!required.has(key) && (value[key] === null || matchesOmission(value[key])))
238
+ continue;
239
+ if (object(property) && !matches(value[key], property, depth + 1, rejectUnknown))
240
+ return false;
241
+ }
242
+ }
243
+ return true;
244
+ }
245
+ function matchesOmission(value) {
246
+ return object(value) && Object.keys(value).length === 1 && value.__ztcOptional === 'omitted';
247
+ }
248
+ function decode(value, schema, depth) {
249
+ guardDepth(depth);
250
+ if (typeof value === 'string' && typeof schema.pattern === 'string' && !new RegExp(schema.pattern, 'u').test(value)) {
251
+ throw new Error('Simulation output violates string pattern');
252
+ }
253
+ const alternatives = schema.oneOf ?? schema.anyOf;
254
+ if (Array.isArray(alternatives)) {
255
+ const candidates = alternatives.filter(branch => matches(value, branch, depth + 1));
256
+ if (candidates.length === 0)
257
+ throw new Error('Simulation output matches no schema branch');
258
+ const decoded = candidates.map(branch => decode(value, branch, depth + 1));
259
+ if (new Set(decoded.map(item => JSON.stringify(item))).size !== 1)
260
+ throw new Error('Simulation output has ambiguous optional fields');
261
+ return decoded[0];
262
+ }
263
+ if (Array.isArray(value) && object(schema.items)) {
264
+ const items = schema.items;
265
+ return value.map(item => decode(item, items, depth + 1));
266
+ }
267
+ if (object(value) && object(schema.properties)) {
268
+ const required = new Set(Array.isArray(schema.required) ? schema.required : []);
269
+ const output = [];
270
+ for (const [key, item] of Object.entries(value)) {
271
+ const property = Object.hasOwn(schema.properties, key) ? schema.properties[key] : undefined;
272
+ if (object(property)) {
273
+ if (!required.has(key) && permitsNull(property, depth + 1) && matchesOmission(item))
274
+ continue;
275
+ if (item === null && !required.has(key) && !permitsNull(property, depth + 1))
276
+ continue;
277
+ output.push([key, decode(item, property, depth + 1)]);
278
+ }
279
+ else
280
+ output.push([key, item]);
281
+ }
282
+ return Object.fromEntries(output);
283
+ }
284
+ return value;
285
+ }
286
+ // JSON.parse validates syntax; this version-scoped scan preserves duplicate-key evidence.
287
+ function assertUniqueJsonKeys(text) {
288
+ const containers = [];
289
+ for (const match of text.matchAll(/"(?:\\[\s\S]|[^"\\])*"|[{}\[\]]/g)) {
290
+ const token = match[0];
291
+ if (token === '{')
292
+ containers.push(new Set());
293
+ else if (token === '[')
294
+ containers.push(null);
295
+ else if (token === '}' || token === ']')
296
+ containers.pop();
297
+ else {
298
+ let following = match.index + token.length;
299
+ while (/\s/u.test(text[following] ?? ''))
300
+ following += 1;
301
+ if (text[following] !== ':')
302
+ continue;
303
+ const key = JSON.parse(token);
304
+ const keys = containers.at(-1);
305
+ if (keys.has(key))
306
+ throw new Error('Simulation output contains duplicate JSON keys');
307
+ keys.add(key);
308
+ }
309
+ }
310
+ }
311
+ export function decodeStrictSimulationOutput(text, schema) {
312
+ validateConstraints(schema, 0);
313
+ let value = JSON.parse(text);
314
+ if (schema[KEYED_RELATIONSHIPS] === 2)
315
+ assertUniqueJsonKeys(text);
316
+ if (schema[COMPACT_KEYS] === true) {
317
+ const keys = keyDictionary(schema);
318
+ value = restoreKeys(value, renameSchema(schema, keys, 0), new Map([...keys].map(([key, alias]) => [alias, key])), 0);
319
+ }
320
+ return JSON.stringify(decode(value, schema, 0));
321
+ }
@@ -186,6 +186,8 @@ export interface SimBlueprint {
186
186
  export type DocumentType = string;
187
187
  /** A document in the company's document trail. Agents create and send these. */
188
188
  export interface DocumentEntry {
189
+ provenance?: import('../../plugin/simulation_documents.js').SimulationDocumentProvenanceV1;
190
+ ownerActorId?: string;
189
191
  id: string;
190
192
  /** Links to SimArtifact if formal (counts toward targets) */
191
193
  artifactId?: string;
@@ -170,7 +170,7 @@ export class ArtifactStore {
170
170
  };
171
171
  this.documentTrail.push(entry);
172
172
  const maxDocumentTrail = 100;
173
- if (this.documentTrail.length > maxDocumentTrail) {
173
+ if (this.documentTrail.length > maxDocumentTrail && !this.documentTrail.some(document => document.ownerActorId !== undefined)) {
174
174
  this.documentTrail = this.documentTrail.slice(-maxDocumentTrail);
175
175
  this.rebuildDocumentsByAgent();
176
176
  }
@@ -12,9 +12,11 @@ export interface MemoryTelemetrySnapshot {
12
12
  files: Array<[MemoryTelemetryFileName, number]>;
13
13
  }
14
14
  export interface MemoryManagerDeps {
15
+ provider?: string;
15
16
  invariantMode?: InvariantMode;
16
17
  outputDir?: string;
17
18
  backend?: MemoryBackendKind;
19
+ detached?: boolean;
18
20
  }
19
21
  declare const MEMORY_TELEMETRY_FILES: readonly ["memory_ops.jsonl", "memory_retrieval.jsonl", "memory_curator.jsonl", "prompt_packets.jsonl"];
20
22
  type MemoryTelemetryFileName = typeof MEMORY_TELEMETRY_FILES[number];
@@ -22,11 +24,14 @@ export declare class MemoryManager {
22
24
  private memories;
23
25
  private embeddings;
24
26
  private embeddingProvider;
27
+ private readonly provider?;
25
28
  private clock;
26
29
  private warnedOverflow;
27
30
  private invariantMode?;
28
31
  private backend;
29
32
  private outputDir?;
33
+ private readonly detached;
34
+ private detachedTelemetry?;
30
35
  constructor(clock: SimClock, deps?: MemoryManagerDeps);
31
36
  /** Swap the clock (used during checkpoint restore). */
32
37
  setClock(clock: SimClock): void;
@@ -17,17 +17,22 @@ export class MemoryManager {
17
17
  memories = new Map();
18
18
  embeddings = new Map();
19
19
  embeddingProvider;
20
+ provider;
20
21
  clock;
21
22
  warnedOverflow = false;
22
23
  invariantMode;
23
24
  backend;
24
25
  outputDir;
26
+ detached;
27
+ detachedTelemetry;
25
28
  constructor(clock, deps) {
26
29
  this.clock = clock;
27
- this.embeddingProvider = createEmbeddingProvider(this.embeddings);
30
+ this.provider = deps?.provider;
31
+ this.embeddingProvider = createEmbeddingProvider(this.embeddings, this.provider);
28
32
  this.invariantMode = deps?.invariantMode;
29
33
  this.backend = deps?.backend ?? resolveMemoryBackendKind();
30
34
  this.outputDir = deps?.outputDir;
35
+ this.detached = deps?.detached ?? false;
31
36
  }
32
37
  /** Swap the clock (used during checkpoint restore). */
33
38
  setClock(clock) {
@@ -155,7 +160,7 @@ export class MemoryManager {
155
160
  m.setEmbeddingsAccessor(() => this.embeddings);
156
161
  return [agentId, m];
157
162
  }));
158
- this.embeddingProvider = createEmbeddingProvider(this.embeddings);
163
+ this.embeddingProvider = createEmbeddingProvider(this.embeddings, this.provider);
159
164
  this.warnedOverflow = false;
160
165
  this.restoreTelemetry(normalized.telemetry);
161
166
  }
@@ -166,6 +171,7 @@ export class MemoryManager {
166
171
  }
167
172
  return new FileSystemMemory(agentId, this.clock, {
168
173
  outputDir: this.outputDir,
174
+ detached: this.detached,
169
175
  personaSeed,
170
176
  invariantMode: this.invariantMode,
171
177
  });
@@ -175,6 +181,7 @@ export class MemoryManager {
175
181
  getEmbeddings: () => this.embeddings,
176
182
  invariantMode: this.invariantMode,
177
183
  outputDir: this.outputDir,
184
+ detached: this.detached,
178
185
  });
179
186
  }
180
187
  restoreAgentMemory(agentId, snapshot) {
@@ -185,6 +192,7 @@ export class MemoryManager {
185
192
  }
186
193
  return FileSystemMemory.fromSnapshot(snapshot, this.clock, {
187
194
  outputDir: this.outputDir,
195
+ detached: this.detached,
188
196
  invariantMode: this.invariantMode,
189
197
  });
190
198
  case 'associative':
@@ -192,6 +200,7 @@ export class MemoryManager {
192
200
  agentId,
193
201
  invariantMode: this.invariantMode,
194
202
  outputDir: this.outputDir,
203
+ detached: this.detached,
195
204
  });
196
205
  default:
197
206
  throw new Error(`invalid memory backend kind for ${agentId}: ${String(snapshot.kind)}`);
@@ -239,6 +248,8 @@ export class MemoryManager {
239
248
  };
240
249
  }
241
250
  snapshotTelemetry() {
251
+ if (this.detached)
252
+ return structuredClone(this.detachedTelemetry);
242
253
  if (!this.outputDir)
243
254
  return undefined;
244
255
  const telemetryDir = join(this.outputDir, 'telemetry');
@@ -250,6 +261,10 @@ export class MemoryManager {
250
261
  };
251
262
  }
252
263
  restoreTelemetry(snapshot) {
264
+ if (this.detached) {
265
+ this.detachedTelemetry = structuredClone(snapshot);
266
+ return;
267
+ }
253
268
  if (!this.outputDir || !snapshot)
254
269
  return;
255
270
  const telemetryDir = join(this.outputDir, 'telemetry');
@@ -109,7 +109,7 @@ export declare class SimState {
109
109
  private _pendingMemoryWrites;
110
110
  private _pendingMemoryWriteErrors;
111
111
  private activeWorldTransition;
112
- constructor(goal: SimGoal, config: SimConfig, preset?: DomainPreset, restoredWorldId?: string, restoredWorldContext?: WorldContextSnapshot);
112
+ constructor(goal: SimGoal, config: SimConfig, preset?: DomainPreset, restoredWorldId?: string, restoredWorldContext?: WorldContextSnapshot, detached?: boolean);
113
113
  private get worldContext();
114
114
  private get agentRegistry();
115
115
  private get artifactStore();
@@ -429,7 +429,8 @@ export declare class SimState {
429
429
  exportArtifacts(format?: 'jsonl' | 'json', outputPath?: string): string;
430
430
  createCheckpoint(extensions?: CheckpointExtensions): SimulationCheckpoint;
431
431
  saveCheckpoint(outputPath?: string, extensions?: CheckpointExtensions): string;
432
- static loadCheckpoint(checkpointPath: string): Promise<SimState>;
432
+ static loadCheckpoint(checkpointPath: string, outputDirectory?: string): Promise<SimState>;
433
+ static fromCheckpoint(raw: unknown, outputDirectory?: string, detached?: boolean): Promise<SimState>;
433
434
  getStatus(): Record<string, unknown>;
434
435
  getRuntimePeriodNumber(): number | null;
435
436
  getCheckpointExtension(namespace: string): CheckpointExtension | null;
@@ -373,7 +373,7 @@ export class SimState {
373
373
  _pendingMemoryWrites = new Set();
374
374
  _pendingMemoryWriteErrors = [];
375
375
  activeWorldTransition = null;
376
- constructor(goal, config, preset, restoredWorldId, restoredWorldContext) {
376
+ constructor(goal, config, preset, restoredWorldId, restoredWorldContext, detached = false) {
377
377
  this.id = restoredWorldId
378
378
  ?? `sim-${Date.now()}-${Math.random().toString(36).slice(2, 8)}`;
379
379
  this.goal = goal;
@@ -387,7 +387,7 @@ export class SimState {
387
387
  this.preset = preset ?? (config.domain
388
388
  ? DomainFactory.load(config.domain)
389
389
  : DomainFactory.createEmpty());
390
- this.persistence = createSimulationPersistence(this.id, this.goal, this.config);
390
+ this.persistence = detached ? null : createSimulationPersistence(this.id, this.goal, this.config);
391
391
  if (restoredWorldContext !== undefined) {
392
392
  if (restoredWorldContext.config.worldId !== this.id) {
393
393
  throw new Error('checkpoint: simulation identity does not match world context identity');
@@ -485,8 +485,10 @@ export class SimState {
485
485
  this.world = createWorld(definition, restoredWorldContext);
486
486
  const memCfg = this.preset.memoryConfig;
487
487
  this.memoryManager = new MemoryManager({ nowMs: () => this.calendar.getCurrentTime().getTime() }, {
488
+ provider: this.config.provider,
488
489
  invariantMode: memCfg?.invariants?.mode,
489
490
  outputDir: this.config.outputDir,
491
+ detached,
490
492
  });
491
493
  }
492
494
  get worldContext() {
@@ -1025,6 +1027,9 @@ export class SimState {
1025
1027
  }
1026
1028
  /** Add a document to the company trail. Records in creator's and recipients' memories. */
1027
1029
  addDocument(doc) {
1030
+ if (doc.ownerActorId !== undefined) {
1031
+ return this.artifactStore.addDocument(doc, new Date(this.calendar.getCurrentTime()));
1032
+ }
1028
1033
  const document = this.withInheritedDocumentArtifact({
1029
1034
  ...doc,
1030
1035
  content: this.normalizeDocumentContent(doc.content),
@@ -1805,8 +1810,11 @@ export class SimState {
1805
1810
  this.persistence?.recordCheckpoint(requestedPath, checkpoint.savedAt);
1806
1811
  return requestedPath;
1807
1812
  }
1808
- static async loadCheckpoint(checkpointPath) {
1813
+ static async loadCheckpoint(checkpointPath, outputDirectory) {
1809
1814
  const raw = JSON.parse(readBoundedCheckpoint(checkpointPath));
1815
+ return SimState.fromCheckpoint(raw, outputDirectory);
1816
+ }
1817
+ static async fromCheckpoint(raw, outputDirectory, detached = false) {
1810
1818
  const checkpoint = parseSimulationCheckpoint(raw);
1811
1819
  if (checkpoint.schemaVersion !== SIMULATION_CHECKPOINT_VERSION) {
1812
1820
  throw new Error(`Unsupported simulation checkpoint version ${checkpoint.schemaVersion}; expected ${SIMULATION_CHECKPOINT_VERSION}`);
@@ -1817,7 +1825,9 @@ export class SimState {
1817
1825
  if (checkpoint.worldContext.currentTime !== checkpoint.calendar.current) {
1818
1826
  throw new Error('checkpoint: calendar time does not match world context time');
1819
1827
  }
1820
- const state = new SimState(checkpoint.goal, checkpoint.config, undefined, checkpoint.simulationId, checkpoint.worldContext);
1828
+ const state = new SimState(checkpoint.goal, outputDirectory === undefined
1829
+ ? checkpoint.config
1830
+ : { ...checkpoint.config, outputDir: outputDirectory }, undefined, checkpoint.simulationId, checkpoint.worldContext, detached);
1821
1831
  state.externalAgentConfigs = checkpoint.externalAgentConfigs;
1822
1832
  state.agentRegistry.restore(checkpoint.agents);
1823
1833
  state.memoryManager.restore(checkpoint.memory);
@@ -1848,7 +1858,7 @@ export class SimState {
1848
1858
  : undefined);
1849
1859
  const pluginData = objectField(checkpoint.extensions['ztc.host']?.data, 'pluginData');
1850
1860
  const graphValue = objectField(pluginData, 'sim-graph');
1851
- if (checkpoint.config.features?.graph_memory && graphValue !== undefined) {
1861
+ if (!detached && checkpoint.config.features?.graph_memory && graphValue !== undefined) {
1852
1862
  const graph = simulationFactGraphFromJson(graphValue);
1853
1863
  try {
1854
1864
  await rebuildStateGraphSidecar(state, graph, { fresh: true });