@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,144 @@
1
+ ---
2
+ id: measurement-validation
3
+ name: measurement-validation
4
+ description: Establish measurement meaning, comparability and instrumentation before optimizing a reported bottleneck
5
+ keywords: [measurement, profiling, benchmark, performance, optimization, instrumentation]
6
+ ---
7
+
8
+ # Measurement validation workflow
9
+
10
+ Before expensive implementation or a full benchmark, define the discriminating
11
+ check: which measured field, workload and runtime path would support or refute
12
+ the proposed bottleneck? A plausible number does not answer that question.
13
+
14
+ 1. **Declare the question.** State the metric definition, unit, timing domain,
15
+ workload, stage, input shape, selected ranks and scope. Prefill and decode
16
+ are different workloads. Host time, device time, diagnostic synchronization,
17
+ logical allocation counts and fresh physical allocations are different
18
+ measurements. Do not infer these definitions from a field name.
19
+ 2. **Capture the original source.** Use a managed `run_command`/`read_command`
20
+ observation whose entire output is one JSON envelope, as shown below. Keep
21
+ its observation ID and captured digest through `session_evidence`. Project
22
+ analyzers produce this generic format; domain-specific profile interpretation
23
+ belongs in the project, not in ZTC core. Do not strip arbitrary log text to
24
+ find a convenient numeric JSON object.
25
+ 3. **Run a small instrumentation smoke.** In the requested mode and selected
26
+ runtime path, demonstrate the expected field actually appears. Check that
27
+ field's unit, timing domain, rank and shape before the expensive full run.
28
+ A field emitted in another mode or path is insufficient. If the field is
29
+ absent, stop to resolve the instrumentation rather than claiming a zero cost.
30
+ 4. **Validate retained observations.** Discover `measurement_report` with
31
+ `tool_search`, then pass one observation ID for assessment or two IDs in
32
+ baseline/candidate order for comparison. Pass declared requirements, not
33
+ copied values, fabricated receipts or model-written measurements. Check
34
+ compatibility and every reason before using the numbers.
35
+ 5. **Respect lifecycle.** A startup artifact with `passed: false` and a running
36
+ owner job is incomplete. It is not a failed final run. Re-read the same job
37
+ from cursor 0 until a complete terminal observation is available; do not relaunch it just
38
+ to obtain a final-looking artifact. Unavailable, partial or malformed source
39
+ observations remain unknown.
40
+ 6. **Keep hierarchy and overlap explicit.** Never sum an inclusive parent and
41
+ child, or an ancestor and descendant, as exclusive wall-time shares. Sum
42
+ only explicitly exclusive measurements in the same timing domain, scope
43
+ and rank. Cross-rank overlap is not serial wall time. A parent denominator
44
+ must use the same units/domain/scope/rank as its selected components.
45
+ 7. **Interpret conservatively.** Arithmetic residuals stay unattributed. Record
46
+ a residual explanation as a hypothesis with supporting observation IDs via
47
+ `session_evidence`; demonstrate independent attribution before calling it a
48
+ measured removable performance win. An increase from 78.58 to 79.63 ms is
49
+ an increase of 1.05 ms, not a speedup. A zero baseline has no defined relative
50
+ percentage. Do not manufacture component shares from unexplained remainder.
51
+
52
+ Compatibility checks reported shape and meaning against the visible declaration.
53
+ It does not prove producer truth, current source identity or correctness:
54
+ benchmark eligibility remains unknown. Source qualification, correctness checks
55
+ and benchmark admission are separate requirements. A report never authorizes a
56
+ command or changes user instructions.
57
+
58
+ ## Producer envelope (one complete JSON document)
59
+
60
+ ```json
61
+ {
62
+ "schemaVersion": 1,
63
+ "runId": "smoke-baseline",
64
+ "source": {
65
+ "revision": "reported-project-revision",
66
+ "artifactSha256": "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
67
+ },
68
+ "workload": {
69
+ "id": "decode-fixture",
70
+ "stage": "decode",
71
+ "inputShape": { "batch": 1, "tokens": 1 }
72
+ },
73
+ "instrumentation": {
74
+ "mode": "production-timing",
75
+ "version": "1",
76
+ "synchronization": "production",
77
+ "runtimePath": "fixture/decode"
78
+ },
79
+ "completion": { "status": "completed", "passed": true },
80
+ "smoke": {
81
+ "mode": "production-timing",
82
+ "runtimePath": "fixture/decode",
83
+ "fields": ["step-r0"],
84
+ "passed": true
85
+ },
86
+ "metrics": [
87
+ {
88
+ "id": "step-r0",
89
+ "value": 78.58,
90
+ "unit": "ms",
91
+ "timingDomain": "host-wall",
92
+ "scope": "step",
93
+ "rank": 0,
94
+ "worldSize": 1,
95
+ "coverage": "inclusive"
96
+ }
97
+ ]
98
+ }
99
+ ```
100
+
101
+ Metric IDs are unique across ranks. Child metrics declare `parentId`. Requested
102
+ `smokeFields` name actual metric IDs present in both `metrics` and `smoke.fields`.
103
+ The terminal observation must capture the output from byte 0; a final JSON
104
+ suffix after earlier log text is incomplete. The whole serialized command
105
+ receipt must fit 32768 UTF-8 bytes, and the tool report is bounded to 64 KiB.
106
+ The
107
+ source revision/hash above are producer reports, not a host certification.
108
+
109
+ ## Tool requirements
110
+
111
+ ```json
112
+ {
113
+ "observation_ids": ["original-baseline-observation", "original-candidate-observation"],
114
+ "requirements": {
115
+ "workload": {
116
+ "id": "decode-fixture",
117
+ "stage": "decode",
118
+ "inputShape": { "batch": 1, "tokens": 1 }
119
+ },
120
+ "instrumentation": {
121
+ "mode": "production-timing",
122
+ "version": "1",
123
+ "synchronization": "production",
124
+ "runtimePath": "fixture/decode"
125
+ },
126
+ "metricIds": ["step-r0"],
127
+ "unit": "ms",
128
+ "timingDomain": "host-wall",
129
+ "scope": "step",
130
+ "worldSize": 1,
131
+ "expectedRanks": [0],
132
+ "smokeFields": ["step-r0"],
133
+ "aggregation": "none"
134
+ }
135
+ }
136
+ ```
137
+
138
+ Declare every rank needed for the question; an explicit rank-0 selection does
139
+ not establish all-rank coverage. No automatic unit conversion is performed.
140
+ Use `aggregation: "sum_exclusive"` only for comparable exclusive components;
141
+ optional `totalMetricId` names an inclusive denominator and requests an
142
+ arithmetic residual with no attribution.
143
+ If source capture cannot fit the bounded envelope, reduce the project analyzer's
144
+ output to a focused profile while retaining its original source identity.
@@ -0,0 +1 @@
1
+ export declare function runTerminalAttachCli(args: string[]): Promise<number>;
@@ -0,0 +1,113 @@
1
+ /** Durable terminal attachment through local tmux or authenticated OpenSSH. */
2
+ import { spawn } from 'node:child_process';
3
+ import { resolve } from 'node:path';
4
+ const HELP = `Usage: ztc attach --session <tmux-session> [--ssh <host>] [--ssh-config <file>] [--read-only] [--no-reconnect]
5
+
6
+ Attach to an existing tmux session. The task keeps running in tmux when you detach or the connection drops.
7
+ Local native ZTC sessions also remain available through Ctrl+B W.
8
+ Remote hosts use your OpenSSH configuration and require a verified known host key.
9
+ --read-only observes the tmux session without forwarding input or changing its size.
10
+ This flag restricts the terminal client; it does not reduce your SSH account permissions.
11
+ Remote connections retry up to three times after a transport interruption. Run the same command to reconnect later.
12
+ Ctrl+B D detaches without ending the task. Create the backend on its host first: tmux new-session -s <name> ztc
13
+ `;
14
+ export async function runTerminalAttachCli(args) {
15
+ if (args.length === 1 && ['--help', '-h'].includes(args[0])) {
16
+ process.stdout.write(HELP);
17
+ return 0;
18
+ }
19
+ let session = '';
20
+ let host = '';
21
+ let sshConfig = '';
22
+ let readOnly = false;
23
+ let reconnect = true;
24
+ const seen = new Set();
25
+ try {
26
+ for (let i = 0; i < args.length; i++) {
27
+ const flag = args[i];
28
+ if (seen.has(flag))
29
+ throw new Error(`Specify ${flag} only once.`);
30
+ seen.add(flag);
31
+ if (flag === '--read-only') {
32
+ readOnly = true;
33
+ continue;
34
+ }
35
+ if (flag === '--no-reconnect') {
36
+ reconnect = false;
37
+ continue;
38
+ }
39
+ if (!['--session', '--ssh', '--ssh-config'].includes(flag))
40
+ throw new Error(`Unknown attach option: ${flag}`);
41
+ const value = args[++i];
42
+ if (!value)
43
+ throw new Error(`Missing value for ${flag}.`);
44
+ if (flag === '--session') {
45
+ if (!/^[A-Za-z0-9_][A-Za-z0-9_.-]{0,63}$/.test(value))
46
+ throw new Error('Invalid tmux session. Use 1–64 letters, numbers, underscores, dots or dashes.');
47
+ session = value;
48
+ }
49
+ else if (flag === '--ssh') {
50
+ if (value.startsWith('-') || !/^[A-Za-z0-9_.@:[\]-]+$/.test(value))
51
+ throw new Error('Invalid SSH host. Use a trusted OpenSSH host alias or user@hostname.');
52
+ host = value;
53
+ }
54
+ else
55
+ sshConfig = resolve(value);
56
+ }
57
+ if (!session)
58
+ throw new Error('A named tmux backend is required: --session <name>.');
59
+ if (sshConfig && !host)
60
+ throw new Error('--ssh-config requires --ssh.');
61
+ }
62
+ catch (error) {
63
+ process.stderr.write(`[ztc attach] ${error instanceof Error ? error.message : String(error)}\n${HELP}`);
64
+ return 2;
65
+ }
66
+ if (!process.stdin.isTTY || !process.stdout.isTTY) {
67
+ process.stderr.write('[ztc attach] Attachment requires an interactive terminal.\n');
68
+ return 2;
69
+ }
70
+ const tmuxArgs = ['attach-session', ...(readOnly ? ['-r'] : []), '-t', `=${session}`];
71
+ const executable = host ? 'ssh' : 'tmux';
72
+ const command = host
73
+ ? [...(sshConfig ? ['-F', sshConfig] : []), '-tt', '-o', 'StrictHostKeyChecking=yes', '-o', 'ServerAliveInterval=5', '-o', 'ServerAliveCountMax=2', '--', host, 'tmux', ...tmuxArgs]
74
+ : tmuxArgs;
75
+ process.stderr.write(`[ztc attach] ${readOnly ? 'Read-only observation' : 'Terminal control'} · ${host || 'local host'} · tmux ${session}\n`);
76
+ const limit = host && reconnect ? 4 : 1;
77
+ for (let attempt = 0; attempt < limit; attempt++) {
78
+ const code = await new Promise(resolveExit => {
79
+ const child = spawn(executable, command, { stdio: 'inherit' });
80
+ let interrupted = null;
81
+ let forceStop = null;
82
+ const stop = (signal, exitCode) => {
83
+ if (interrupted !== null)
84
+ return;
85
+ interrupted = exitCode;
86
+ child.kill(signal);
87
+ forceStop = setTimeout(() => {
88
+ if (child.exitCode === null && child.signalCode === null)
89
+ child.kill('SIGKILL');
90
+ }, 2000);
91
+ forceStop.unref();
92
+ };
93
+ const onInterrupt = () => stop('SIGINT', 130);
94
+ const onTerminate = () => stop('SIGTERM', 143);
95
+ process.on('SIGINT', onInterrupt);
96
+ process.on('SIGTERM', onTerminate);
97
+ const finish = (status) => {
98
+ process.off('SIGINT', onInterrupt);
99
+ process.off('SIGTERM', onTerminate);
100
+ if (forceStop)
101
+ clearTimeout(forceStop);
102
+ resolveExit(interrupted ?? status);
103
+ };
104
+ child.once('error', error => { process.stderr.write(`[ztc attach] ${error.message}\n`); finish(127); });
105
+ child.once('exit', (status, signal) => finish(status ?? (signal ? 130 : 1)));
106
+ });
107
+ if (code !== 255 || attempt + 1 === limit)
108
+ return code;
109
+ process.stderr.write(`[ztc attach] SSH disconnected. Reconnecting to the same tmux session (${attempt + 1}/3).\n`);
110
+ await new Promise(resolveWait => setTimeout(resolveWait, 1000));
111
+ }
112
+ return 1;
113
+ }
@@ -0,0 +1,3 @@
1
+ import type { AgentState } from './types.js';
2
+ /** Parse only bounded display facts; this DTO grants no execution or evidence authority. */
3
+ export declare function parseToolProgress(value: unknown): NonNullable<AgentState['toolProgress']> | null;
@@ -0,0 +1,27 @@
1
+ /** Parse only bounded display facts; this DTO grants no execution or evidence authority. */
2
+ export function parseToolProgress(value) {
3
+ if (typeof value !== 'object' || value === null || Array.isArray(value))
4
+ return null;
5
+ const row = value;
6
+ if (typeof row.toolCallId !== 'string' || !row.toolCallId
7
+ || new TextEncoder().encode(row.toolCallId).length > 256 || /[\u0000-\u001f\u007f]/u.test(row.toolCallId)
8
+ || typeof row.tool !== 'string' || !row.tool
9
+ || new TextEncoder().encode(row.tool).length > 128 || /[\u0000-\u001f\u007f]/u.test(row.tool)
10
+ || typeof row.progress !== 'object' || row.progress === null || Array.isArray(row.progress))
11
+ return null;
12
+ const progress = row.progress;
13
+ const { startedAt, lastOutputAt, outputBytes, outputLines, latestLine } = progress;
14
+ if (typeof startedAt !== 'number' || !Number.isSafeInteger(startedAt) || startedAt < 0
15
+ || (lastOutputAt !== undefined && (typeof lastOutputAt !== 'number'
16
+ || !Number.isSafeInteger(lastOutputAt) || lastOutputAt < startedAt))
17
+ || typeof outputBytes !== 'number' || !Number.isSafeInteger(outputBytes) || outputBytes < 0
18
+ || typeof outputLines !== 'number' || !Number.isSafeInteger(outputLines) || outputLines < 0
19
+ || typeof latestLine !== 'string' || new TextEncoder().encode(latestLine).length > 512)
20
+ return null;
21
+ return {
22
+ toolCallId: row.toolCallId,
23
+ tool: row.tool,
24
+ progress: { startedAt, ...(lastOutputAt === undefined ? {} : { lastOutputAt: lastOutputAt }),
25
+ outputBytes, outputLines, latestLine },
26
+ };
27
+ }
package/dist/types.d.ts CHANGED
@@ -1,4 +1,5 @@
1
- import type { RequestMetrics, TokenUsage } from './agent/backends/types.js';
1
+ import type { RequestContentBlock, RequestMetrics, TokenUsage } from './agent/backends/types.js';
2
+ import type { EvidenceSnapshot } from './agent/runtime/evidence.js';
2
3
  export type MessageRole = 'user' | 'assistant' | 'tool' | 'system';
3
4
  export type ToolStatus = 'pending' | 'running' | 'complete' | 'error';
4
5
  export type AgentStatus = 'idle' | 'thinking' | 'tool_use' | 'streaming' | 'error';
@@ -11,7 +12,10 @@ export type TodoStatus = typeof TODO_STATUSES[number];
11
12
  * never ASCII `...`) if they want one.
12
13
  */
13
14
  export declare const AGENT_STATUS_LABELS: Record<AgentStatus, string>;
14
- export type InputMode = 'queue' | 'interrupt';
15
+ export type CanonicalInputMode = 'steer' | 'interrupt';
16
+ /** `queue` is a legacy spelling of steer; Tab owns end-of-turn queuing. */
17
+ export type InputMode = CanonicalInputMode | 'queue';
18
+ export declare function normalizeInputMode(mode: InputMode): CanonicalInputMode;
15
19
  /**
16
20
  * When a busy-turn submission should reach the model.
17
21
  *
@@ -66,6 +70,13 @@ export interface FormWidgetData {
66
70
  submitLabel?: string;
67
71
  formId: string;
68
72
  }
73
+ /** Source-qualified image bytes owned by the checkpoint beside which they are stored. */
74
+ export interface DurableImageReference {
75
+ version: 1;
76
+ sessionFile: string;
77
+ file: string;
78
+ sha256: string;
79
+ }
69
80
  export interface MessageAttachment {
70
81
  id: string;
71
82
  kind: 'image';
@@ -75,26 +86,110 @@ export interface MessageAttachment {
75
86
  url?: string;
76
87
  localPath?: string;
77
88
  stale?: boolean;
89
+ durable?: DurableImageReference;
78
90
  }
79
91
  export interface MessageInput {
80
92
  text: string;
81
93
  attachments: MessageAttachment[];
82
94
  pane_id?: number;
83
95
  }
96
+ /** Usage belongs to the prompt which dispatched the request, including its workers. */
97
+ export interface ModelUsage extends TokenUsage {
98
+ /** The call completed without reporting usage; a complete total is unavailable. */
99
+ unreported?: boolean;
100
+ }
101
+ export type ModelUsageObserver = ((usage: ModelUsage) => void) & {
102
+ forRequest?: () => ModelUsageObserver;
103
+ workerStarted?: () => () => void;
104
+ getTurn?: () => PromptTurnMetadata;
105
+ };
106
+ export interface PromptTurnMetadata {
107
+ id: string;
108
+ startedAt: number;
109
+ finishedAt?: number;
110
+ tokens: number;
111
+ estimated: boolean;
112
+ usageIncomplete?: boolean;
113
+ }
114
+ /** Bounded, source-linked host warning about a claim; not an execution receipt. */
115
+ export interface HostClaimObservation {
116
+ version: 1;
117
+ sourceMessageId: string;
118
+ sourceSha256: string;
119
+ basis: 'no_tool_calls' | 'contradictory_tool_output';
120
+ toolCallCount: number;
121
+ observedAt: string;
122
+ }
84
123
  export interface Message {
85
124
  id: string;
86
125
  role: MessageRole;
87
126
  content: string;
127
+ /** Ordered model-facing blocks, including opaque signed thinking. Not UI text. */
128
+ nativeContent?: string | RequestContentBlock[];
129
+ /** Model that produced/submitted nativeContent; do not replay across models. */
130
+ nativeModel?: string;
131
+ /** Stable system/tool prefix identity for opaque native reasoning. */
132
+ nativeContextId?: string;
88
133
  timestamp: Date;
134
+ turn?: PromptTurnMetadata;
89
135
  toolCalls?: ToolCall[];
90
136
  isStreaming?: boolean;
91
- metadata?: Record<string, unknown>;
137
+ metadata?: Record<string, unknown> & {
138
+ /** Opaque provider context for API replay; never displayed as assistant reasoning. */
139
+ providerReasoning?: string;
140
+ /** Durable host Clear event UUID; resaves and compaction preserve its identity. */
141
+ taskHandoffReset?: string;
142
+ /** Historical host warning replayed only while its authored source still matches. */
143
+ hostClaimObservation?: HostClaimObservation;
144
+ /** Host observations are literal text; quoted media/tool-result tokens authorize no new reads. */
145
+ hostContext?: boolean;
146
+ };
92
147
  attachments?: MessageAttachment[];
93
148
  widget?: FormWidgetData;
94
149
  }
150
+ /** Bounded host observation of an active managed-command wait, never inferred from tool text. */
151
+ export interface CommandWaitingState {
152
+ kind: 'managed_command';
153
+ toolCallId: string;
154
+ jobId: string;
155
+ cursor: number;
156
+ startedAt: number;
157
+ deadlineAt?: number;
158
+ }
159
+ /** Informational output observed while an owned tool invocation is running. */
160
+ export interface AgentToolProgress {
161
+ startedAt: number;
162
+ lastOutputAt?: number;
163
+ outputBytes: number;
164
+ outputLines: number;
165
+ /** Latest observed logical line/current partial, capped at 512 UTF-8 bytes. */
166
+ latestLine: string;
167
+ }
95
168
  export interface AgentState {
96
169
  status: AgentStatus;
170
+ /** Fresh, bounded local advisory evidence, never a remote mutation grant. */
171
+ workspaceCollision?: import('./workspace_collision.js').WorkspaceCollisionSnapshot;
172
+ taskHandoff?: {
173
+ sessionId: string;
174
+ projection: import('./session_handoff_contract.js').TaskHandoffProjection | null;
175
+ };
176
+ evidence?: {
177
+ sessionId: string;
178
+ snapshot: EvidenceSnapshot;
179
+ };
180
+ waiting?: CommandWaitingState;
181
+ requestRetry?: {
182
+ phase: 'retry' | 'recovery';
183
+ attempt: number;
184
+ delay: number;
185
+ rateLimited?: boolean;
186
+ };
97
187
  currentTool?: string;
188
+ toolProgress?: {
189
+ toolCallId: string;
190
+ tool: string;
191
+ progress: AgentToolProgress;
192
+ };
98
193
  tokensUsed?: number;
99
194
  contextTokens?: number;
100
195
  /**
@@ -128,19 +223,33 @@ export interface ZTCConfig {
128
223
  timeout?: number;
129
224
  tools?: string[];
130
225
  }
226
+ export interface ToolParameterSchema {
227
+ type: string;
228
+ description?: string;
229
+ enum?: string[];
230
+ minimum?: number;
231
+ maximum?: number;
232
+ minLength?: number;
233
+ maxLength?: number;
234
+ minItems?: number;
235
+ maxItems?: number;
236
+ uniqueItems?: boolean;
237
+ properties?: Record<string, ToolParameterSchema>;
238
+ items?: ToolParameterSchema;
239
+ required?: string[];
240
+ additionalProperties?: boolean;
241
+ }
131
242
  export interface ToolDefinition {
132
243
  name: string;
133
244
  description: string;
134
245
  parameters: {
135
246
  type: 'object';
136
- properties: Record<string, {
137
- type: string;
138
- description: string;
139
- enum?: string[];
140
- minimum?: number;
141
- maximum?: number;
142
- }>;
247
+ properties: Record<string, ToolParameterSchema>;
143
248
  required?: string[];
249
+ oneOf?: {
250
+ required: string[];
251
+ }[];
252
+ additionalProperties?: boolean;
144
253
  };
145
254
  /**
146
255
  * This tool duplicates a capability that harness-owning providers (Codex App
@@ -152,6 +261,17 @@ export interface ToolDefinition {
152
261
  overlapsProviderHarness?: boolean;
153
262
  }
154
263
  export type AgentEvent = {
264
+ type: 'request_usage';
265
+ receipt: import('./usage_snapshot.js').UsageReceipt;
266
+ } | {
267
+ type: 'task_handoff';
268
+ sessionId: string;
269
+ projection: import('./session_handoff_contract.js').TaskHandoffProjection | null;
270
+ } | {
271
+ type: 'evidence';
272
+ sessionId: string;
273
+ snapshot: EvidenceSnapshot;
274
+ } | {
155
275
  type: 'history_checkpoint';
156
276
  messages: Message[];
157
277
  } | {
@@ -161,6 +281,11 @@ export type AgentEvent = {
161
281
  tool: string;
162
282
  args: Record<string, unknown>;
163
283
  toolCallId: string;
284
+ } | {
285
+ type: 'tool_progress';
286
+ toolCallId: string;
287
+ tool: string;
288
+ progress: AgentToolProgress;
164
289
  } | {
165
290
  type: 'tool_end';
166
291
  tool: string;
@@ -171,6 +296,13 @@ export type AgentEvent = {
171
296
  tool: string;
172
297
  error: string;
173
298
  toolCallId: string;
299
+ } | {
300
+ type: 'command_wait';
301
+ waiting: CommandWaitingState;
302
+ } | {
303
+ type: 'command_wait_end';
304
+ toolCallId: string;
305
+ reason: 'output' | 'terminal' | 'deadline' | 'steering' | 'cancelled' | 'error';
174
306
  } | {
175
307
  type: 'stream_start';
176
308
  } | {
@@ -197,6 +329,9 @@ export type AgentEvent = {
197
329
  maxAttempts: number;
198
330
  delay: number;
199
331
  reason: string;
332
+ phase?: 'retry' | 'recovery';
333
+ elapsedMs?: number;
334
+ rateLimited?: boolean;
200
335
  } | {
201
336
  type: 'auto_continue';
202
337
  reason?: string;
package/dist/types.js CHANGED
@@ -12,3 +12,6 @@ export const AGENT_STATUS_LABELS = {
12
12
  streaming: 'Streaming',
13
13
  error: 'Error',
14
14
  };
15
+ export function normalizeInputMode(mode) {
16
+ return mode === 'queue' ? 'steer' : mode;
17
+ }
@@ -7,6 +7,8 @@ export interface InputKey {
7
7
  rightArrow?: boolean;
8
8
  ctrl?: boolean;
9
9
  meta?: boolean;
10
+ alt?: boolean;
11
+ super?: boolean;
10
12
  backspace?: boolean;
11
13
  delete?: boolean;
12
14
  tab?: boolean;
@@ -19,6 +21,7 @@ export interface InputKey {
19
21
  export interface InputEvent {
20
22
  input: string;
21
23
  key: InputKey;
24
+ paste?: true;
22
25
  }
23
26
  export interface InputBus {
24
27
  subscribe(handler: (event: InputEvent) => void): () => void;
@@ -1,10 +1,16 @@
1
- import { InputSegment, InputCursor, InputState } from './input_state.js';
1
+ import { InputSegment, InputCursor, InputState, InputKill, InputDraftSnapshot } from './input_state.js';
2
+ import type { MessageInput } from '../../types.js';
2
3
  export declare const PASTE_BADGE_THRESHOLD = 4;
3
4
  export declare function normalizeSegments(segments: InputSegment[]): InputSegment[];
4
5
  export declare function clampCursor(segments: InputSegment[], cursor: InputCursor): InputCursor;
5
6
  export declare function insertText(state: InputState, text: string): InputState;
6
7
  export declare function insertSegment(state: InputState, segment: InputSegment): InputState;
7
8
  export declare function insertBadge(state: InputState, segment: InputSegment): InputState;
9
+ /** The focused text badge, or its immediate neighbor across a text boundary. */
10
+ export declare function getExpandablePasteIndex(state: Pick<InputState, 'segments' | 'cursor'>): number;
11
+ export declare function getPasteExpansionHint(state: Pick<InputState, 'segments' | 'cursor'>): string | null;
12
+ /** Expand only the targeted text badge, preserving attachments and draft bytes. */
13
+ export declare function expandPasteBadge(state: InputState): InputState;
8
14
  export declare function backspace(state: InputState): InputState;
9
15
  export declare function deleteForward(state: InputState): InputState;
10
16
  export declare function killToEnd(state: InputState): InputState;
@@ -18,6 +24,8 @@ export declare function textCursorIndex(segments: InputSegment[], cursor: InputC
18
24
  export declare function cursorFromTextIndex(segments: InputSegment[], pos: number): InputCursor;
19
25
  export declare function getPlainText(segments: InputSegment[]): string;
20
26
  export declare function serializeSegments(segments: InputSegment[]): string;
27
+ /** Capture admitted images separately; path-only badges keep their legacy tokens. */
28
+ export declare function serializeMessageInput(segments: readonly InputSegment[]): MessageInput;
21
29
  export declare function createEmptyState(): InputState;
22
30
  export declare function moveToStart(state: InputState): InputState;
23
31
  export declare function moveToEnd(state: InputState): InputState;
@@ -65,5 +73,14 @@ export interface VerticalMove {
65
73
  * caller's signal that the caret is at an edge, where history takes over.
66
74
  */
67
75
  export declare function moveVertical(state: InputState, direction: -1 | 1, goalColumn?: number): VerticalMove;
76
+ /** Whole-draft kills retain badge identity and the original caret. */
77
+ export declare function killInputDraft(state: InputState): {
78
+ state: InputState;
79
+ killed: InputDraftSnapshot;
80
+ };
81
+ export declare function yankInputKill(state: InputState, killed: InputKill): InputState;
82
+ export declare function getInputShortcutHint(state: Pick<InputState, 'segments' | 'cursor'>, running?: boolean, canYank?: boolean): string | null;
83
+ /** Save history and clear a submitted draft in one place for both renderers. */
84
+ export declare function recordInputHistory(state: InputState, entry?: string, maxEntries?: number): InputState;
68
85
  export declare function historyUp(state: InputState): InputState;
69
86
  export declare function historyDown(state: InputState): InputState;