@sayknow-cli/coding-agent 0.3.11 → 0.3.13

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 (1161) hide show
  1. package/CHANGELOG.md +0 -21
  2. package/package.json +116 -117
  3. package/scripts/build-binary.ts +2 -43
  4. package/scripts/compile-args.ts +106 -0
  5. package/scripts/g004-tmux-smoke.ts +196 -36
  6. package/scripts/generate-docs-index.ts +3 -0
  7. package/src/build-metadata.ts +104 -0
  8. package/src/capability/mcp.ts +3 -1
  9. package/src/cli/daemon-cli.ts +19 -29
  10. package/src/cli/malloc-env-guard.test.ts +104 -0
  11. package/src/cli/malloc-env-guard.ts +149 -0
  12. package/src/cli/mcp-cli.ts +108 -26
  13. package/src/cli/notify-cli.ts +78 -14
  14. package/src/cli/session-picker.ts +23 -40
  15. package/src/cli/update-cli.ts +56 -37
  16. package/src/cli.ts +71 -10
  17. package/src/commands/daemon.ts +19 -5
  18. package/src/commands/harness.ts +515 -47
  19. package/src/commands/launch.ts +11 -3
  20. package/src/commands/mcp.ts +8 -8
  21. package/src/commands/notify.ts +5 -1
  22. package/src/commands/session.ts +6 -1
  23. package/src/commands/stats.ts +6 -2
  24. package/src/config/keybindings.ts +7 -2
  25. package/src/config/mcp-schema.json +21 -17
  26. package/src/config/model-profile-activation.ts +1 -1
  27. package/src/config/model-profiles.ts +23 -23
  28. package/src/config/settings-schema.ts +41 -1
  29. package/src/coordinator-mcp/model-preset.ts +100 -0
  30. package/src/coordinator-mcp/server.ts +2735 -435
  31. package/src/daemon/control-types.ts +11 -0
  32. package/src/daemon/operator-contract.ts +121 -0
  33. package/src/defaults/skc/extensions/grok-cli-vendor/src/models/catalog.ts +57 -17
  34. package/src/defaults/skc/extensions/grok-cli-vendor/src/payload/sanitize.ts +15 -2
  35. package/src/defaults/skc/extensions/grok-cli-vendor/src/provider/register.ts +5 -1
  36. package/src/discovery/builtin.ts +14 -0
  37. package/src/discovery/mcp-json.ts +14 -0
  38. package/src/eval/js/executor.ts +7 -1
  39. package/src/internal-urls/docs-index.generated.ts +10 -9
  40. package/src/internal-urls/local-protocol.ts +29 -10
  41. package/src/internal-urls/skc-protocol.ts +14 -1
  42. package/src/main.ts +298 -75
  43. package/src/modes/acp/acp-agent.ts +800 -114
  44. package/src/modes/acp/acp-client-bridge.ts +27 -5
  45. package/src/modes/acp/acp-event-mapper.ts +39 -1
  46. package/src/modes/acp/acp-mode.ts +29 -2
  47. package/src/modes/components/assistant-message.ts +33 -4
  48. package/src/modes/components/bash-execution.ts +43 -13
  49. package/src/modes/components/custom-editor.ts +5 -0
  50. package/src/modes/components/hook-selector.ts +16 -0
  51. package/src/modes/components/irc-sidebar.ts +206 -0
  52. package/src/modes/components/model-selector.ts +17 -6
  53. package/src/modes/components/pet-selector.ts +55 -0
  54. package/src/modes/components/sayknow-pet-widget.ts +360 -0
  55. package/src/modes/components/session-selector.ts +223 -222
  56. package/src/modes/components/settings-selector.ts +10 -0
  57. package/src/modes/components/status-line/presets.ts +5 -19
  58. package/src/modes/components/status-line/segments.ts +14 -0
  59. package/src/modes/components/status-line/types.ts +6 -0
  60. package/src/modes/components/status-line.ts +13 -6
  61. package/src/modes/components/tool-execution.ts +48 -7
  62. package/src/modes/components/user-message.ts +26 -9
  63. package/src/modes/components/welcome.ts +4 -1
  64. package/src/modes/controllers/command-controller.ts +29 -3
  65. package/src/modes/controllers/event-controller.ts +168 -45
  66. package/src/modes/controllers/extension-ui-controller.ts +36 -17
  67. package/src/modes/controllers/input-controller.ts +16 -4
  68. package/src/modes/controllers/selector-controller.ts +69 -18
  69. package/src/modes/interactive-mode.ts +194 -10
  70. package/src/modes/irc-observation-ledger.ts +127 -0
  71. package/src/modes/rpc/rpc-client.ts +30 -6
  72. package/src/modes/shared/agent-wire/deep-interview-gate.ts +45 -2
  73. package/src/modes/shared/agent-wire/unattended-session.ts +288 -1
  74. package/src/modes/shared/agent-wire/workflow-gate-broker.ts +130 -20
  75. package/src/modes/types.ts +34 -2
  76. package/src/modes/utils/hotkeys-markdown.ts +1 -0
  77. package/src/modes/utils/irc-message.ts +138 -0
  78. package/src/modes/utils/ui-helpers.ts +368 -80
  79. package/src/notifications/config.ts +44 -0
  80. package/src/notifications/daemon-paths.ts +8 -0
  81. package/src/notifications/index.ts +535 -75
  82. package/src/notifications/lifecycle-control-runtime.ts +930 -77
  83. package/src/notifications/notification-service.ts +710 -0
  84. package/src/notifications/rate-limit-pool.ts +46 -12
  85. package/src/notifications/telegram-daemon-control.ts +27 -2
  86. package/src/notifications/telegram-daemon.ts +663 -96
  87. package/src/notifications/telegram-reference.ts +73 -13
  88. package/src/notifications/topic-registry.ts +86 -9
  89. package/src/prompts/system/irc-peer-roster.md +1 -0
  90. package/src/prompts/system/subagent-system-prompt.md +1 -0
  91. package/src/prompts/system/system-prompt.md +1 -0
  92. package/src/prompts/tools/irc.md +1 -1
  93. package/src/prompts/tools/skill.md +2 -2
  94. package/src/registry/agent-registry.ts +3 -0
  95. package/src/runtime-mcp/config-writer.ts +4 -3
  96. package/src/runtime-mcp/config.ts +1 -0
  97. package/src/runtime-mcp/types.ts +4 -3
  98. package/src/sdk.ts +52 -1
  99. package/src/secrets/obfuscator.ts +4 -2
  100. package/src/session/agent-session.ts +513 -148
  101. package/src/session/cache-economics.ts +275 -0
  102. package/src/session/provider-safety-stop.ts +9 -0
  103. package/src/session/session-dump-format.ts +6 -0
  104. package/src/session/session-manager.ts +877 -79
  105. package/src/session/session-storage.ts +582 -38
  106. package/src/skc-runtime/session-state-sidecar.ts +756 -135
  107. package/src/skc-runtime/state-runtime.ts +105 -12
  108. package/src/skc-runtime/tmux-common.ts +26 -7
  109. package/src/skc-runtime/tmux-gc.ts +52 -9
  110. package/src/skc-runtime/tmux-owner-isolation-cli.ts +185 -0
  111. package/src/skc-runtime/tmux-owner-isolation.ts +2060 -0
  112. package/src/skc-runtime/tmux-sessions.ts +871 -68
  113. package/src/skc-runtime/workflow-manifest.generated.json +4 -28
  114. package/src/skc-runtime/workflow-manifest.ts +1 -7
  115. package/src/slash-commands/builtin-registry.ts +152 -13
  116. package/src/task/executor.ts +12 -3
  117. package/src/task/index.ts +8 -0
  118. package/src/task/receipt.ts +7 -2
  119. package/src/task/types.ts +26 -0
  120. package/src/tools/ask-answer-registry.ts +25 -0
  121. package/src/tools/bash-interactive.ts +9 -4
  122. package/src/tools/browser/readable.ts +2 -2
  123. package/src/tools/browser/tab-supervisor.ts +63 -6
  124. package/src/tools/browser.ts +8 -3
  125. package/src/tools/fetch.ts +5 -5
  126. package/src/tools/index.ts +81 -6
  127. package/src/tools/skill.ts +14 -11
  128. package/src/tools/sqlite-reader.ts +8 -4
  129. package/src/tui/output-block.ts +18 -6
  130. package/src/utils/external-editor.ts +6 -1
  131. package/src/utils/linkedom.ts +14 -0
  132. package/src/utils/pasted-image-path.ts +23 -9
  133. package/src/web/scrapers/arxiv.ts +2 -2
  134. package/src/web/scrapers/go-pkg.ts +2 -2
  135. package/src/web/scrapers/iacr.ts +2 -2
  136. package/src/web/scrapers/readthedocs.ts +2 -2
  137. package/src/web/scrapers/twitter.ts +3 -2
  138. package/src/web/scrapers/wikipedia.ts +2 -2
  139. package/dist/types/append-only-mode.d.ts +0 -31
  140. package/dist/types/async/index.d.ts +0 -2
  141. package/dist/types/async/job-manager.d.ts +0 -328
  142. package/dist/types/async/support.d.ts +0 -2
  143. package/dist/types/autoresearch/dashboard.d.ts +0 -4
  144. package/dist/types/autoresearch/git.d.ts +0 -36
  145. package/dist/types/autoresearch/helpers.d.ts +0 -24
  146. package/dist/types/autoresearch/index.d.ts +0 -2
  147. package/dist/types/autoresearch/state.d.ts +0 -17
  148. package/dist/types/autoresearch/storage.d.ts +0 -142
  149. package/dist/types/autoresearch/tools/init-experiment.d.ts +0 -31
  150. package/dist/types/autoresearch/tools/log-experiment.d.ts +0 -23
  151. package/dist/types/autoresearch/tools/run-experiment.d.ts +0 -8
  152. package/dist/types/autoresearch/tools/update-notes.d.ts +0 -12
  153. package/dist/types/autoresearch/types.d.ts +0 -154
  154. package/dist/types/capability/context-file.d.ts +0 -17
  155. package/dist/types/capability/extension-module.d.ts +0 -15
  156. package/dist/types/capability/extension.d.ts +0 -28
  157. package/dist/types/capability/fs.d.ts +0 -20
  158. package/dist/types/capability/hook.d.ts +0 -19
  159. package/dist/types/capability/index.d.ts +0 -80
  160. package/dist/types/capability/instruction.d.ts +0 -17
  161. package/dist/types/capability/mcp.d.ts +0 -47
  162. package/dist/types/capability/prompt.d.ts +0 -15
  163. package/dist/types/capability/rule.d.ts +0 -69
  164. package/dist/types/capability/settings.d.ts +0 -15
  165. package/dist/types/capability/skill.d.ts +0 -36
  166. package/dist/types/capability/slash-command.d.ts +0 -17
  167. package/dist/types/capability/ssh.d.ts +0 -23
  168. package/dist/types/capability/system-prompt.d.ts +0 -15
  169. package/dist/types/capability/tool.d.ts +0 -19
  170. package/dist/types/capability/types.d.ts +0 -154
  171. package/dist/types/cli/agents-cli.d.ts +0 -12
  172. package/dist/types/cli/args.d.ts +0 -57
  173. package/dist/types/cli/auth-broker-cli.d.ts +0 -25
  174. package/dist/types/cli/auth-gateway-cli.d.ts +0 -18
  175. package/dist/types/cli/classify-install-target.d.ts +0 -18
  176. package/dist/types/cli/commands/init-xdg.d.ts +0 -1
  177. package/dist/types/cli/completion-cli.d.ts +0 -41
  178. package/dist/types/cli/config-cli.d.ts +0 -23
  179. package/dist/types/cli/daemon-cli.d.ts +0 -25
  180. package/dist/types/cli/fast-help.d.ts +0 -1
  181. package/dist/types/cli/file-processor.d.ts +0 -11
  182. package/dist/types/cli/fixture-report.d.ts +0 -20
  183. package/dist/types/cli/fixture-report.test.d.ts +0 -1
  184. package/dist/types/cli/grep-cli.d.ts +0 -17
  185. package/dist/types/cli/initial-message.d.ts +0 -17
  186. package/dist/types/cli/list-models.d.ts +0 -36
  187. package/dist/types/cli/local-provider-smoke.d.ts +0 -59
  188. package/dist/types/cli/mcp-cli.d.ts +0 -25
  189. package/dist/types/cli/migrate-cli.d.ts +0 -20
  190. package/dist/types/cli/nofile-limit.d.ts +0 -11
  191. package/dist/types/cli/notify-cli.d.ts +0 -37
  192. package/dist/types/cli/plugin-cli.d.ts +0 -34
  193. package/dist/types/cli/read-cli.d.ts +0 -4
  194. package/dist/types/cli/session-picker.d.ts +0 -3
  195. package/dist/types/cli/setup-cli.d.ts +0 -73
  196. package/dist/types/cli/shell-cli.d.ts +0 -8
  197. package/dist/types/cli/skills-cli.d.ts +0 -9
  198. package/dist/types/cli/ssh-cli.d.ts +0 -21
  199. package/dist/types/cli/stats-cli.d.ts +0 -17
  200. package/dist/types/cli/telegram-cli.d.ts +0 -13
  201. package/dist/types/cli/update-cli.d.ts +0 -89
  202. package/dist/types/cli/web-search-cli.d.ts +0 -32
  203. package/dist/types/cli/worktree-cli.d.ts +0 -26
  204. package/dist/types/cli.d.ts +0 -135
  205. package/dist/types/commands/acp.d.ts +0 -12
  206. package/dist/types/commands/agents.d.ts +0 -34
  207. package/dist/types/commands/auth-broker.d.ts +0 -54
  208. package/dist/types/commands/auth-gateway.d.ts +0 -32
  209. package/dist/types/commands/codex-native-hook.d.ts +0 -6
  210. package/dist/types/commands/commit.d.ts +0 -27
  211. package/dist/types/commands/completion.d.ts +0 -29
  212. package/dist/types/commands/config.d.ts +0 -33
  213. package/dist/types/commands/contribution-prep.d.ts +0 -18
  214. package/dist/types/commands/coordinator.d.ts +0 -19
  215. package/dist/types/commands/daemon.d.ts +0 -41
  216. package/dist/types/commands/deep-interview.d.ts +0 -54
  217. package/dist/types/commands/gc.d.ts +0 -26
  218. package/dist/types/commands/grep.d.ts +0 -42
  219. package/dist/types/commands/harness.d.ts +0 -43
  220. package/dist/types/commands/launch.d.ts +0 -130
  221. package/dist/types/commands/local-provider.d.ts +0 -34
  222. package/dist/types/commands/mcp-serve.d.ts +0 -24
  223. package/dist/types/commands/mcp.d.ts +0 -70
  224. package/dist/types/commands/migrate.d.ts +0 -33
  225. package/dist/types/commands/notify.d.ts +0 -41
  226. package/dist/types/commands/plugin.d.ts +0 -58
  227. package/dist/types/commands/ralplan.d.ts +0 -7
  228. package/dist/types/commands/read.d.ts +0 -15
  229. package/dist/types/commands/rlm.d.ts +0 -10
  230. package/dist/types/commands/session.d.ts +0 -30
  231. package/dist/types/commands/setup.d.ts +0 -105
  232. package/dist/types/commands/shell.d.ts +0 -21
  233. package/dist/types/commands/skills.d.ts +0 -26
  234. package/dist/types/commands/ssh.d.ts +0 -48
  235. package/dist/types/commands/state.d.ts +0 -7
  236. package/dist/types/commands/stats.d.ts +0 -25
  237. package/dist/types/commands/team.d.ts +0 -24
  238. package/dist/types/commands/telegram.d.ts +0 -22
  239. package/dist/types/commands/ultragoal.d.ts +0 -8
  240. package/dist/types/commands/update.d.ts +0 -20
  241. package/dist/types/commands/web-search.d.ts +0 -87
  242. package/dist/types/commands/worktree.d.ts +0 -34
  243. package/dist/types/commit/agentic/agent.d.ts +0 -31
  244. package/dist/types/commit/agentic/fallback.d.ts +0 -5
  245. package/dist/types/commit/agentic/index.d.ts +0 -2
  246. package/dist/types/commit/agentic/state.d.ts +0 -58
  247. package/dist/types/commit/agentic/tools/analyze-file.d.ts +0 -19
  248. package/dist/types/commit/agentic/tools/git-file-diff.d.ts +0 -10
  249. package/dist/types/commit/agentic/tools/git-hunk.d.ts +0 -9
  250. package/dist/types/commit/agentic/tools/git-overview.d.ts +0 -9
  251. package/dist/types/commit/agentic/tools/index.d.ts +0 -16
  252. package/dist/types/commit/agentic/tools/propose-changelog.d.ts +0 -28
  253. package/dist/types/commit/agentic/tools/propose-commit.d.ts +0 -36
  254. package/dist/types/commit/agentic/tools/recent-commits.d.ts +0 -7
  255. package/dist/types/commit/agentic/tools/schemas.d.ts +0 -27
  256. package/dist/types/commit/agentic/tools/split-commit.d.ts +0 -53
  257. package/dist/types/commit/agentic/topo-sort.d.ts +0 -4
  258. package/dist/types/commit/agentic/trivial.d.ts +0 -7
  259. package/dist/types/commit/agentic/validation.d.ts +0 -20
  260. package/dist/types/commit/analysis/conventional.d.ts +0 -22
  261. package/dist/types/commit/analysis/index.d.ts +0 -4
  262. package/dist/types/commit/analysis/scope.d.ts +0 -6
  263. package/dist/types/commit/analysis/summary.d.ts +0 -19
  264. package/dist/types/commit/analysis/validation.d.ts +0 -8
  265. package/dist/types/commit/changelog/detect.d.ts +0 -2
  266. package/dist/types/commit/changelog/generate.d.ts +0 -30
  267. package/dist/types/commit/changelog/index.d.ts +0 -30
  268. package/dist/types/commit/changelog/parse.d.ts +0 -2
  269. package/dist/types/commit/cli.d.ts +0 -3
  270. package/dist/types/commit/git/diff.d.ts +0 -5
  271. package/dist/types/commit/index.d.ts +0 -4
  272. package/dist/types/commit/map-reduce/index.d.ts +0 -28
  273. package/dist/types/commit/map-reduce/map-phase.d.ts +0 -17
  274. package/dist/types/commit/map-reduce/reduce-phase.d.ts +0 -13
  275. package/dist/types/commit/map-reduce/utils.d.ts +0 -2
  276. package/dist/types/commit/message.d.ts +0 -2
  277. package/dist/types/commit/model-selection.d.ts +0 -15
  278. package/dist/types/commit/pipeline.d.ts +0 -5
  279. package/dist/types/commit/shared-llm.d.ts +0 -54
  280. package/dist/types/commit/types.d.ts +0 -78
  281. package/dist/types/commit/utils/exclusions.d.ts +0 -4
  282. package/dist/types/commit/utils.d.ts +0 -20
  283. package/dist/types/config/config-file.d.ts +0 -58
  284. package/dist/types/config/file-lock-gc.d.ts +0 -5
  285. package/dist/types/config/file-lock.d.ts +0 -36
  286. package/dist/types/config/keybindings.d.ts +0 -359
  287. package/dist/types/config/model-equivalence.d.ts +0 -24
  288. package/dist/types/config/model-profile-activation.d.ts +0 -64
  289. package/dist/types/config/model-profiles.d.ts +0 -39
  290. package/dist/types/config/model-registry.d.ts +0 -473
  291. package/dist/types/config/model-resolver.d.ts +0 -217
  292. package/dist/types/config/models-config-schema.d.ts +0 -700
  293. package/dist/types/config/prompt-templates.d.ts +0 -32
  294. package/dist/types/config/resolve-config-value.d.ts +0 -17
  295. package/dist/types/config/settings-schema.d.ts +0 -4183
  296. package/dist/types/config/settings.d.ts +0 -156
  297. package/dist/types/config/skill-settings-defaults.d.ts +0 -14
  298. package/dist/types/config/telegram-autostart.d.ts +0 -14
  299. package/dist/types/config/telegram-env-bridge.d.ts +0 -18
  300. package/dist/types/config.d.ts +0 -66
  301. package/dist/types/coordinator/contract.d.ts +0 -4
  302. package/dist/types/coordinator-mcp/policy.d.ts +0 -24
  303. package/dist/types/coordinator-mcp/safety.d.ts +0 -26
  304. package/dist/types/coordinator-mcp/server.d.ts +0 -66
  305. package/dist/types/cursor.d.ts +0 -24
  306. package/dist/types/daemon/builtin.d.ts +0 -20
  307. package/dist/types/daemon/control-types.d.ts +0 -57
  308. package/dist/types/daemon/runtime.d.ts +0 -25
  309. package/dist/types/dap/client.d.ts +0 -39
  310. package/dist/types/dap/config.d.ts +0 -6
  311. package/dist/types/dap/index.d.ts +0 -4
  312. package/dist/types/dap/session.d.ts +0 -108
  313. package/dist/types/dap/types.d.ts +0 -524
  314. package/dist/types/debug/crash-diagnostics.d.ts +0 -45
  315. package/dist/types/debug/index.d.ts +0 -15
  316. package/dist/types/debug/log-formatting.d.ts +0 -4
  317. package/dist/types/debug/log-viewer.d.ts +0 -68
  318. package/dist/types/debug/profiler.d.ts +0 -24
  319. package/dist/types/debug/raw-sse-buffer.d.ts +0 -44
  320. package/dist/types/debug/raw-sse.d.ts +0 -16
  321. package/dist/types/debug/report-bundle.d.ts +0 -55
  322. package/dist/types/debug/runtime-gauges.d.ts +0 -6
  323. package/dist/types/debug/system-info.d.ts +0 -26
  324. package/dist/types/deep-interview/plaintext-gate-guard.d.ts +0 -11
  325. package/dist/types/deep-interview/render-middleware.d.ts +0 -6
  326. package/dist/types/defaults/skc/extensions/grok-build/index.d.ts +0 -1
  327. package/dist/types/defaults/skc/extensions/grok-cli-vendor/src/index.d.ts +0 -1
  328. package/dist/types/defaults/skc/extensions/grok-cli-vendor/src/models/catalog.d.ts +0 -25
  329. package/dist/types/defaults/skc/extensions/grok-cli-vendor/src/payload/sanitize.d.ts +0 -27
  330. package/dist/types/defaults/skc/extensions/grok-cli-vendor/src/provider/billing.d.ts +0 -8
  331. package/dist/types/defaults/skc/extensions/grok-cli-vendor/src/provider/register.d.ts +0 -5
  332. package/dist/types/defaults/skc/extensions/grok-cli-vendor/src/provider/stream.d.ts +0 -10
  333. package/dist/types/defaults/skc/extensions/grok-cli-vendor/src/provider/usage.d.ts +0 -2
  334. package/dist/types/defaults/skc/extensions/grok-cli-vendor/src/shared/base-url.d.ts +0 -2
  335. package/dist/types/defaults/skc/extensions/grok-cli-vendor/src/shared/errors.d.ts +0 -38
  336. package/dist/types/defaults/skc-defaults.d.ts +0 -64
  337. package/dist/types/defaults/skc-grok-cli.d.ts +0 -5
  338. package/dist/types/discovery/agents-md.d.ts +0 -1
  339. package/dist/types/discovery/agents.d.ts +0 -12
  340. package/dist/types/discovery/builtin.d.ts +0 -1
  341. package/dist/types/discovery/claude-plugins.d.ts +0 -1
  342. package/dist/types/discovery/claude.d.ts +0 -1
  343. package/dist/types/discovery/cline.d.ts +0 -1
  344. package/dist/types/discovery/codex.d.ts +0 -1
  345. package/dist/types/discovery/cursor.d.ts +0 -19
  346. package/dist/types/discovery/gemini.d.ts +0 -1
  347. package/dist/types/discovery/github.d.ts +0 -1
  348. package/dist/types/discovery/helpers.d.ts +0 -271
  349. package/dist/types/discovery/index.d.ts +0 -48
  350. package/dist/types/discovery/mcp-json.d.ts +0 -1
  351. package/dist/types/discovery/opencode.d.ts +0 -1
  352. package/dist/types/discovery/plugin-dir-roots.d.ts +0 -15
  353. package/dist/types/discovery/ssh.d.ts +0 -1
  354. package/dist/types/discovery/substitute-plugin-root.d.ts +0 -5
  355. package/dist/types/discovery/vscode.d.ts +0 -1
  356. package/dist/types/discovery/windsurf.d.ts +0 -15
  357. package/dist/types/edit/apply-patch/index.d.ts +0 -35
  358. package/dist/types/edit/apply-patch/parser.d.ts +0 -34
  359. package/dist/types/edit/diff.d.ts +0 -75
  360. package/dist/types/edit/file-read-cache.d.ts +0 -25
  361. package/dist/types/edit/index.d.ts +0 -58
  362. package/dist/types/edit/modes/apply-patch.d.ts +0 -24
  363. package/dist/types/edit/modes/patch.d.ts +0 -99
  364. package/dist/types/edit/modes/replace.d.ts +0 -149
  365. package/dist/types/edit/normalize.d.ts +0 -43
  366. package/dist/types/edit/notebook.d.ts +0 -26
  367. package/dist/types/edit/read-file.d.ts +0 -8
  368. package/dist/types/edit/renderer.d.ts +0 -110
  369. package/dist/types/edit/streaming.d.ts +0 -66
  370. package/dist/types/eval/backend.d.ts +0 -40
  371. package/dist/types/eval/index.d.ts +0 -4
  372. package/dist/types/eval/js/context-manager.d.ts +0 -27
  373. package/dist/types/eval/js/executor.d.ts +0 -29
  374. package/dist/types/eval/js/index.d.ts +0 -10
  375. package/dist/types/eval/js/shared/helpers.d.ts +0 -38
  376. package/dist/types/eval/js/shared/indirect-eval.d.ts +0 -14
  377. package/dist/types/eval/js/shared/prelude.d.ts +0 -1
  378. package/dist/types/eval/js/shared/rewrite-imports.d.ts +0 -6
  379. package/dist/types/eval/js/shared/runtime.d.ts +0 -47
  380. package/dist/types/eval/js/shared/types.d.ts +0 -24
  381. package/dist/types/eval/js/tool-bridge.d.ts +0 -18
  382. package/dist/types/eval/js/worker-core.d.ts +0 -5
  383. package/dist/types/eval/js/worker-entry.d.ts +0 -1
  384. package/dist/types/eval/js/worker-protocol.d.ts +0 -77
  385. package/dist/types/eval/py/display.d.ts +0 -25
  386. package/dist/types/eval/py/executor.d.ts +0 -88
  387. package/dist/types/eval/py/index.d.ts +0 -10
  388. package/dist/types/eval/py/kernel.d.ts +0 -65
  389. package/dist/types/eval/py/prelude.d.ts +0 -1
  390. package/dist/types/eval/py/runtime.d.ts +0 -29
  391. package/dist/types/eval/py/tool-bridge.d.ts +0 -20
  392. package/dist/types/eval/types.d.ts +0 -52
  393. package/dist/types/exa/factory.d.ts +0 -13
  394. package/dist/types/exa/index.d.ts +0 -20
  395. package/dist/types/exa/mcp-client.d.ts +0 -45
  396. package/dist/types/exa/render.d.ts +0 -19
  397. package/dist/types/exa/researcher.d.ts +0 -9
  398. package/dist/types/exa/search.d.ts +0 -9
  399. package/dist/types/exa/types.d.ts +0 -155
  400. package/dist/types/exa/websets.d.ts +0 -9
  401. package/dist/types/exec/bash-executor.d.ts +0 -64
  402. package/dist/types/exec/exec.d.ts +0 -25
  403. package/dist/types/exec/idle-timeout-watchdog.d.ts +0 -18
  404. package/dist/types/exec/non-interactive-env.d.ts +0 -1
  405. package/dist/types/export/custom-share.d.ts +0 -20
  406. package/dist/types/export/html/index.d.ts +0 -10
  407. package/dist/types/export/html/template.generated.d.ts +0 -1
  408. package/dist/types/export/html/template.macro.d.ts +0 -5
  409. package/dist/types/export/ttsr.d.ts +0 -55
  410. package/dist/types/extensibility/custom-commands/bundled/ci-green/index.d.ts +0 -9
  411. package/dist/types/extensibility/custom-commands/index.d.ts +0 -2
  412. package/dist/types/extensibility/custom-commands/loader.d.ts +0 -29
  413. package/dist/types/extensibility/custom-commands/types.d.ts +0 -106
  414. package/dist/types/extensibility/custom-tools/index.d.ts +0 -6
  415. package/dist/types/extensibility/custom-tools/loader.d.ts +0 -69
  416. package/dist/types/extensibility/custom-tools/types.d.ts +0 -229
  417. package/dist/types/extensibility/custom-tools/wrapper.d.ts +0 -24
  418. package/dist/types/extensibility/extensions/compact-handler.d.ts +0 -26
  419. package/dist/types/extensibility/extensions/get-commands-handler.d.ts +0 -29
  420. package/dist/types/extensibility/extensions/index.d.ts +0 -9
  421. package/dist/types/extensibility/extensions/loader.d.ts +0 -43
  422. package/dist/types/extensibility/extensions/prefix-command-bridge.d.ts +0 -35
  423. package/dist/types/extensibility/extensions/runner.d.ts +0 -135
  424. package/dist/types/extensibility/extensions/types.d.ts +0 -918
  425. package/dist/types/extensibility/extensions/wrapper.d.ts +0 -55
  426. package/dist/types/extensibility/hooks/index.d.ts +0 -5
  427. package/dist/types/extensibility/hooks/loader.d.ts +0 -89
  428. package/dist/types/extensibility/hooks/runner.d.ts +0 -126
  429. package/dist/types/extensibility/hooks/tool-wrapper.d.ts +0 -25
  430. package/dist/types/extensibility/hooks/types.d.ts +0 -431
  431. package/dist/types/extensibility/plugins/doctor.d.ts +0 -3
  432. package/dist/types/extensibility/plugins/git-url.d.ts +0 -34
  433. package/dist/types/extensibility/plugins/index.d.ts +0 -8
  434. package/dist/types/extensibility/plugins/installer.d.ts +0 -5
  435. package/dist/types/extensibility/plugins/legacy-pi-compat.d.ts +0 -2
  436. package/dist/types/extensibility/plugins/loader.d.ts +0 -31
  437. package/dist/types/extensibility/plugins/manager.d.ts +0 -65
  438. package/dist/types/extensibility/plugins/marketplace/cache.d.ts +0 -41
  439. package/dist/types/extensibility/plugins/marketplace/fetcher.d.ts +0 -48
  440. package/dist/types/extensibility/plugins/marketplace/index.d.ts +0 -6
  441. package/dist/types/extensibility/plugins/marketplace/manager.d.ts +0 -57
  442. package/dist/types/extensibility/plugins/marketplace/registry.d.ts +0 -34
  443. package/dist/types/extensibility/plugins/marketplace/source-resolver.d.ts +0 -28
  444. package/dist/types/extensibility/plugins/marketplace/types.d.ts +0 -130
  445. package/dist/types/extensibility/plugins/parser.d.ts +0 -52
  446. package/dist/types/extensibility/plugins/security-scanner.d.ts +0 -31
  447. package/dist/types/extensibility/plugins/types.d.ts +0 -149
  448. package/dist/types/extensibility/runtime-skill-discovery.d.ts +0 -20
  449. package/dist/types/extensibility/shared-events.d.ts +0 -281
  450. package/dist/types/extensibility/skc-plugins/activation.d.ts +0 -14
  451. package/dist/types/extensibility/skc-plugins/compiler.d.ts +0 -19
  452. package/dist/types/extensibility/skc-plugins/constrained-hooks.d.ts +0 -29
  453. package/dist/types/extensibility/skc-plugins/index.d.ts +0 -18
  454. package/dist/types/extensibility/skc-plugins/injection.d.ts +0 -40
  455. package/dist/types/extensibility/skc-plugins/installer.d.ts +0 -13
  456. package/dist/types/extensibility/skc-plugins/loader.d.ts +0 -3
  457. package/dist/types/extensibility/skc-plugins/mcp-policy.d.ts +0 -26
  458. package/dist/types/extensibility/skc-plugins/observability.d.ts +0 -27
  459. package/dist/types/extensibility/skc-plugins/paths.d.ts +0 -8
  460. package/dist/types/extensibility/skc-plugins/prompt-appendix.d.ts +0 -16
  461. package/dist/types/extensibility/skc-plugins/registry.d.ts +0 -32
  462. package/dist/types/extensibility/skc-plugins/runtime-adapters.d.ts +0 -64
  463. package/dist/types/extensibility/skc-plugins/schema.d.ts +0 -3
  464. package/dist/types/extensibility/skc-plugins/session-validation.d.ts +0 -42
  465. package/dist/types/extensibility/skc-plugins/state.d.ts +0 -9
  466. package/dist/types/extensibility/skc-plugins/tools.d.ts +0 -8
  467. package/dist/types/extensibility/skc-plugins/types.d.ts +0 -220
  468. package/dist/types/extensibility/skc-plugins/validation.d.ts +0 -11
  469. package/dist/types/extensibility/skills.d.ts +0 -82
  470. package/dist/types/extensibility/slash-commands.d.ts +0 -48
  471. package/dist/types/extensibility/tool-proxy.d.ts +0 -4
  472. package/dist/types/extensibility/typebox.d.ts +0 -155
  473. package/dist/types/extensibility/utils.d.ts +0 -12
  474. package/dist/types/goals/index.d.ts +0 -3
  475. package/dist/types/goals/runtime.d.ts +0 -63
  476. package/dist/types/goals/state.d.ts +0 -32
  477. package/dist/types/goals/tools/goal-tool.d.ts +0 -62
  478. package/dist/types/harness-control-plane/classifier.d.ts +0 -13
  479. package/dist/types/harness-control-plane/control-endpoint.d.ts +0 -31
  480. package/dist/types/harness-control-plane/finalize.d.ts +0 -60
  481. package/dist/types/harness-control-plane/gc-adapter.d.ts +0 -3
  482. package/dist/types/harness-control-plane/operate.d.ts +0 -35
  483. package/dist/types/harness-control-plane/owner.d.ts +0 -53
  484. package/dist/types/harness-control-plane/phase-rollup.d.ts +0 -23
  485. package/dist/types/harness-control-plane/preserve.d.ts +0 -19
  486. package/dist/types/harness-control-plane/receipt-ingest.d.ts +0 -19
  487. package/dist/types/harness-control-plane/receipt-spool.d.ts +0 -19
  488. package/dist/types/harness-control-plane/receipts.d.ts +0 -149
  489. package/dist/types/harness-control-plane/rpc-adapter.d.ts +0 -69
  490. package/dist/types/harness-control-plane/seams.d.ts +0 -21
  491. package/dist/types/harness-control-plane/session-lease.d.ts +0 -65
  492. package/dist/types/harness-control-plane/state-machine.d.ts +0 -24
  493. package/dist/types/harness-control-plane/storage.d.ts +0 -81
  494. package/dist/types/harness-control-plane/types.d.ts +0 -187
  495. package/dist/types/hashline/anchors.d.ts +0 -20
  496. package/dist/types/hashline/apply.d.ts +0 -14
  497. package/dist/types/hashline/constants.d.ts +0 -19
  498. package/dist/types/hashline/diff-preview.d.ts +0 -2
  499. package/dist/types/hashline/diff.d.ts +0 -17
  500. package/dist/types/hashline/execute.d.ts +0 -4
  501. package/dist/types/hashline/hash.d.ts +0 -123
  502. package/dist/types/hashline/index.d.ts +0 -13
  503. package/dist/types/hashline/input.d.ts +0 -11
  504. package/dist/types/hashline/parser.d.ts +0 -7
  505. package/dist/types/hashline/prefixes.d.ts +0 -7
  506. package/dist/types/hashline/recovery.d.ts +0 -27
  507. package/dist/types/hashline/stream.d.ts +0 -2
  508. package/dist/types/hashline/types.d.ts +0 -77
  509. package/dist/types/hindsight/backend.d.ts +0 -13
  510. package/dist/types/hindsight/bank.d.ts +0 -54
  511. package/dist/types/hindsight/client.d.ts +0 -224
  512. package/dist/types/hindsight/config.d.ts +0 -51
  513. package/dist/types/hindsight/content.d.ts +0 -70
  514. package/dist/types/hindsight/index.d.ts +0 -8
  515. package/dist/types/hindsight/mental-models.d.ts +0 -125
  516. package/dist/types/hindsight/state.d.ts +0 -99
  517. package/dist/types/hindsight/transcript.d.ts +0 -28
  518. package/dist/types/hooks/codex-native-hooks-config.d.ts +0 -29
  519. package/dist/types/hooks/native-skill-hook.d.ts +0 -28
  520. package/dist/types/hooks/skill-keywords.d.ts +0 -18
  521. package/dist/types/hooks/skill-state.d.ts +0 -93
  522. package/dist/types/i18n/index.d.ts +0 -38
  523. package/dist/types/i18n/messages/de.d.ts +0 -2
  524. package/dist/types/i18n/messages/de.messages.d.ts +0 -1
  525. package/dist/types/i18n/messages/de.settings.d.ts +0 -1
  526. package/dist/types/i18n/messages/en.d.ts +0 -81
  527. package/dist/types/i18n/messages/es.d.ts +0 -2
  528. package/dist/types/i18n/messages/es.messages.d.ts +0 -1
  529. package/dist/types/i18n/messages/es.settings.d.ts +0 -1
  530. package/dist/types/i18n/messages/fr.d.ts +0 -2
  531. package/dist/types/i18n/messages/fr.messages.d.ts +0 -1
  532. package/dist/types/i18n/messages/fr.settings.d.ts +0 -1
  533. package/dist/types/i18n/messages/ja.d.ts +0 -2
  534. package/dist/types/i18n/messages/ja.messages.d.ts +0 -1
  535. package/dist/types/i18n/messages/ja.settings.d.ts +0 -1
  536. package/dist/types/i18n/messages/ko.d.ts +0 -2
  537. package/dist/types/i18n/messages/ko.messages.d.ts +0 -1
  538. package/dist/types/i18n/messages/ko.settings.d.ts +0 -1
  539. package/dist/types/i18n/messages/zh.d.ts +0 -2
  540. package/dist/types/i18n/messages/zh.messages.d.ts +0 -1
  541. package/dist/types/i18n/messages/zh.settings.d.ts +0 -1
  542. package/dist/types/index.d.ts +0 -33
  543. package/dist/types/internal-urls/agent-protocol.d.ts +0 -12
  544. package/dist/types/internal-urls/artifact-protocol.d.ts +0 -6
  545. package/dist/types/internal-urls/docs-index.generated.d.ts +0 -2
  546. package/dist/types/internal-urls/index.d.ts +0 -20
  547. package/dist/types/internal-urls/issue-pr-protocol.d.ts +0 -17
  548. package/dist/types/internal-urls/json-query.d.ts +0 -30
  549. package/dist/types/internal-urls/local-protocol.d.ts +0 -39
  550. package/dist/types/internal-urls/mcp-protocol.d.ts +0 -12
  551. package/dist/types/internal-urls/memory-protocol.d.ts +0 -23
  552. package/dist/types/internal-urls/parse.d.ts +0 -19
  553. package/dist/types/internal-urls/registry-helpers.d.ts +0 -11
  554. package/dist/types/internal-urls/router.d.ts +0 -14
  555. package/dist/types/internal-urls/rule-protocol.d.ts +0 -6
  556. package/dist/types/internal-urls/skc-protocol.d.ts +0 -12
  557. package/dist/types/internal-urls/skill-protocol.d.ts +0 -13
  558. package/dist/types/internal-urls/types.d.ts +0 -109
  559. package/dist/types/lsp/client.d.ts +0 -66
  560. package/dist/types/lsp/clients/biome-client.d.ts +0 -16
  561. package/dist/types/lsp/clients/index.d.ts +0 -19
  562. package/dist/types/lsp/clients/lsp-linter-client.d.ts +0 -16
  563. package/dist/types/lsp/clients/swiftlint-client.d.ts +0 -20
  564. package/dist/types/lsp/config.d.ts +0 -65
  565. package/dist/types/lsp/edits.d.ts +0 -23
  566. package/dist/types/lsp/index.d.ts +0 -130
  567. package/dist/types/lsp/lspmux.d.ts +0 -58
  568. package/dist/types/lsp/render.d.ts +0 -32
  569. package/dist/types/lsp/startup-events.d.ts +0 -12
  570. package/dist/types/lsp/types.d.ts +0 -306
  571. package/dist/types/lsp/utils.d.ts +0 -108
  572. package/dist/types/main.d.ts +0 -75
  573. package/dist/types/memories/index.d.ts +0 -28
  574. package/dist/types/memories/storage.d.ts +0 -110
  575. package/dist/types/memory-backend/index.d.ts +0 -4
  576. package/dist/types/memory-backend/local-backend.d.ts +0 -9
  577. package/dist/types/memory-backend/off-backend.d.ts +0 -7
  578. package/dist/types/memory-backend/resolve.d.ts +0 -15
  579. package/dist/types/memory-backend/types.d.ts +0 -61
  580. package/dist/types/migrate/action-planner.d.ts +0 -11
  581. package/dist/types/migrate/adapters/claude-code.d.ts +0 -2
  582. package/dist/types/migrate/adapters/codex.d.ts +0 -5
  583. package/dist/types/migrate/adapters/index.d.ts +0 -45
  584. package/dist/types/migrate/adapters/opencode.d.ts +0 -2
  585. package/dist/types/migrate/executor.d.ts +0 -2
  586. package/dist/types/migrate/mcp-mapper.d.ts +0 -20
  587. package/dist/types/migrate/report.d.ts +0 -18
  588. package/dist/types/migrate/skill-normalizer.d.ts +0 -27
  589. package/dist/types/migrate/types.d.ts +0 -126
  590. package/dist/types/modes/acp/acp-agent.d.ts +0 -61
  591. package/dist/types/modes/acp/acp-client-bridge.d.ts +0 -9
  592. package/dist/types/modes/acp/acp-event-mapper.d.ts +0 -34
  593. package/dist/types/modes/acp/acp-mode.d.ts +0 -5
  594. package/dist/types/modes/acp/index.d.ts +0 -2
  595. package/dist/types/modes/acp/terminal-auth.d.ts +0 -6
  596. package/dist/types/modes/bridge/auth.d.ts +0 -12
  597. package/dist/types/modes/bridge/bridge-client-bridge.d.ts +0 -9
  598. package/dist/types/modes/bridge/bridge-mode.d.ts +0 -47
  599. package/dist/types/modes/bridge/bridge-ui-context.d.ts +0 -88
  600. package/dist/types/modes/bridge/event-stream.d.ts +0 -8
  601. package/dist/types/modes/components/agent-dashboard.d.ts +0 -21
  602. package/dist/types/modes/components/assistant-message.d.ts +0 -20
  603. package/dist/types/modes/components/bash-execution.d.ts +0 -29
  604. package/dist/types/modes/components/bordered-loader.d.ts +0 -11
  605. package/dist/types/modes/components/branch-summary-message.d.ts +0 -13
  606. package/dist/types/modes/components/btw-panel.d.ts +0 -16
  607. package/dist/types/modes/components/compaction-summary-message.d.ts +0 -13
  608. package/dist/types/modes/components/countdown-timer.d.ts +0 -14
  609. package/dist/types/modes/components/custom-editor.d.ts +0 -67
  610. package/dist/types/modes/components/custom-message.d.ts +0 -15
  611. package/dist/types/modes/components/custom-model-preset-wizard.d.ts +0 -12
  612. package/dist/types/modes/components/custom-provider-wizard.d.ts +0 -10
  613. package/dist/types/modes/components/diff.d.ts +0 -11
  614. package/dist/types/modes/components/dynamic-border.d.ts +0 -14
  615. package/dist/types/modes/components/eval-execution.d.ts +0 -23
  616. package/dist/types/modes/components/execution-shared.d.ts +0 -46
  617. package/dist/types/modes/components/extensions/extension-dashboard.d.ts +0 -26
  618. package/dist/types/modes/components/extensions/extension-list.d.ts +0 -39
  619. package/dist/types/modes/components/extensions/index.d.ts +0 -8
  620. package/dist/types/modes/components/extensions/inspector-panel.d.ts +0 -8
  621. package/dist/types/modes/components/extensions/state-manager.d.ts +0 -50
  622. package/dist/types/modes/components/extensions/types.d.ts +0 -151
  623. package/dist/types/modes/components/footer.d.ts +0 -30
  624. package/dist/types/modes/components/history-search.d.ts +0 -7
  625. package/dist/types/modes/components/hook-editor.d.ts +0 -18
  626. package/dist/types/modes/components/hook-input.d.ts +0 -15
  627. package/dist/types/modes/components/hook-message.d.ts +0 -15
  628. package/dist/types/modes/components/hook-selector.d.ts +0 -53
  629. package/dist/types/modes/components/index.d.ts +0 -35
  630. package/dist/types/modes/components/jobs-overlay-model.d.ts +0 -31
  631. package/dist/types/modes/components/jobs-overlay.d.ts +0 -30
  632. package/dist/types/modes/components/keybinding-hints.d.ts +0 -40
  633. package/dist/types/modes/components/login-dialog.d.ts +0 -32
  634. package/dist/types/modes/components/message-frame.d.ts +0 -42
  635. package/dist/types/modes/components/model-selector.d.ts +0 -60
  636. package/dist/types/modes/components/oauth-selector.d.ts +0 -17
  637. package/dist/types/modes/components/plugin-selector.d.ts +0 -26
  638. package/dist/types/modes/components/plugin-settings.d.ts +0 -66
  639. package/dist/types/modes/components/provider-onboarding-selector.d.ts +0 -7
  640. package/dist/types/modes/components/queue-mode-selector.d.ts +0 -9
  641. package/dist/types/modes/components/queued-message-selector.d.ts +0 -12
  642. package/dist/types/modes/components/read-tool-group.d.ts +0 -30
  643. package/dist/types/modes/components/runtime-mcp-add-wizard.d.ts +0 -26
  644. package/dist/types/modes/components/session-observer-overlay.d.ts +0 -11
  645. package/dist/types/modes/components/session-selector.d.ts +0 -30
  646. package/dist/types/modes/components/settings-defs.d.ts +0 -50
  647. package/dist/types/modes/components/settings-selector.d.ts +0 -62
  648. package/dist/types/modes/components/show-images-selector.d.ts +0 -9
  649. package/dist/types/modes/components/skill-hud/render.d.ts +0 -2
  650. package/dist/types/modes/components/skill-message.d.ts +0 -10
  651. package/dist/types/modes/components/status-line/context-thresholds.d.ts +0 -4
  652. package/dist/types/modes/components/status-line/git-utils.d.ts +0 -28
  653. package/dist/types/modes/components/status-line/index.d.ts +0 -4
  654. package/dist/types/modes/components/status-line/presets.d.ts +0 -3
  655. package/dist/types/modes/components/status-line/segments.d.ts +0 -5
  656. package/dist/types/modes/components/status-line/separators.d.ts +0 -3
  657. package/dist/types/modes/components/status-line/token-rate.d.ts +0 -10
  658. package/dist/types/modes/components/status-line/types.d.ts +0 -77
  659. package/dist/types/modes/components/status-line.d.ts +0 -103
  660. package/dist/types/modes/components/theme-selector.d.ts +0 -10
  661. package/dist/types/modes/components/thinking-selector.d.ts +0 -15
  662. package/dist/types/modes/components/todo-reminder.d.ts +0 -13
  663. package/dist/types/modes/components/tool-execution.d.ts +0 -54
  664. package/dist/types/modes/components/tree-selector.d.ts +0 -31
  665. package/dist/types/modes/components/ttsr-notification.d.ts +0 -13
  666. package/dist/types/modes/components/two-column-body.d.ts +0 -9
  667. package/dist/types/modes/components/user-message-selector.d.ts +0 -28
  668. package/dist/types/modes/components/user-message.d.ts +0 -7
  669. package/dist/types/modes/components/visual-truncate.d.ts +0 -19
  670. package/dist/types/modes/components/welcome.d.ts +0 -45
  671. package/dist/types/modes/controllers/btw-controller.d.ts +0 -10
  672. package/dist/types/modes/controllers/command-controller-shared.d.ts +0 -47
  673. package/dist/types/modes/controllers/command-controller.d.ts +0 -40
  674. package/dist/types/modes/controllers/event-controller.d.ts +0 -17
  675. package/dist/types/modes/controllers/extension-ui-controller.d.ts +0 -80
  676. package/dist/types/modes/controllers/input-controller.d.ts +0 -42
  677. package/dist/types/modes/controllers/runtime-mcp-command-controller.d.ts +0 -10
  678. package/dist/types/modes/controllers/selector-controller.d.ts +0 -67
  679. package/dist/types/modes/controllers/ssh-command-controller.d.ts +0 -10
  680. package/dist/types/modes/controllers/todo-command-controller.d.ts +0 -7
  681. package/dist/types/modes/emoji-autocomplete.d.ts +0 -16
  682. package/dist/types/modes/index.d.ts +0 -10
  683. package/dist/types/modes/interactive-mode.d.ts +0 -275
  684. package/dist/types/modes/jobs-observer.d.ts +0 -57
  685. package/dist/types/modes/oauth-manual-input.d.ts +0 -8
  686. package/dist/types/modes/print-mode.d.ts +0 -45
  687. package/dist/types/modes/prompt-action-autocomplete.d.ts +0 -50
  688. package/dist/types/modes/rpc/host-tools.d.ts +0 -1
  689. package/dist/types/modes/rpc/host-uris.d.ts +0 -1
  690. package/dist/types/modes/rpc/rpc-client.d.ts +0 -288
  691. package/dist/types/modes/rpc/rpc-mode.d.ts +0 -85
  692. package/dist/types/modes/rpc/rpc-socket-security.d.ts +0 -10
  693. package/dist/types/modes/rpc/rpc-types.d.ts +0 -794
  694. package/dist/types/modes/runtime-init.d.ts +0 -21
  695. package/dist/types/modes/session-observer-registry.d.ts +0 -26
  696. package/dist/types/modes/shared/agent-wire/approval-gate.d.ts +0 -57
  697. package/dist/types/modes/shared/agent-wire/command-contract.d.ts +0 -18
  698. package/dist/types/modes/shared/agent-wire/command-dispatch.d.ts +0 -37
  699. package/dist/types/modes/shared/agent-wire/command-validation.d.ts +0 -2
  700. package/dist/types/modes/shared/agent-wire/deep-interview-gate.d.ts +0 -94
  701. package/dist/types/modes/shared/agent-wire/event-contract.d.ts +0 -103
  702. package/dist/types/modes/shared/agent-wire/event-envelope.d.ts +0 -60
  703. package/dist/types/modes/shared/agent-wire/event-observation.d.ts +0 -37
  704. package/dist/types/modes/shared/agent-wire/handshake.d.ts +0 -56
  705. package/dist/types/modes/shared/agent-wire/host-tool-bridge.d.ts +0 -16
  706. package/dist/types/modes/shared/agent-wire/host-uri-bridge.d.ts +0 -17
  707. package/dist/types/modes/shared/agent-wire/protocol.d.ts +0 -25
  708. package/dist/types/modes/shared/agent-wire/responses.d.ts +0 -4
  709. package/dist/types/modes/shared/agent-wire/scopes.d.ts +0 -18
  710. package/dist/types/modes/shared/agent-wire/session-registry.d.ts +0 -25
  711. package/dist/types/modes/shared/agent-wire/ui-request-broker.d.ts +0 -42
  712. package/dist/types/modes/shared/agent-wire/ui-result.d.ts +0 -27
  713. package/dist/types/modes/shared/agent-wire/unattended-action-policy.d.ts +0 -29
  714. package/dist/types/modes/shared/agent-wire/unattended-audit.d.ts +0 -68
  715. package/dist/types/modes/shared/agent-wire/unattended-run-controller.d.ts +0 -161
  716. package/dist/types/modes/shared/agent-wire/unattended-session.d.ts +0 -82
  717. package/dist/types/modes/shared/agent-wire/workflow-gate-broker.d.ts +0 -114
  718. package/dist/types/modes/shared/agent-wire/workflow-gate-schema.d.ts +0 -39
  719. package/dist/types/modes/shared.d.ts +0 -15
  720. package/dist/types/modes/slash-command-visibility.d.ts +0 -1
  721. package/dist/types/modes/theme/defaults/index.d.ts +0 -652
  722. package/dist/types/modes/theme/mermaid-cache.d.ts +0 -9
  723. package/dist/types/modes/theme/shimmer.d.ts +0 -38
  724. package/dist/types/modes/theme/theme.d.ts +0 -275
  725. package/dist/types/modes/tmux-scroll.d.ts +0 -18
  726. package/dist/types/modes/types.d.ts +0 -292
  727. package/dist/types/modes/utils/abort-message.d.ts +0 -4
  728. package/dist/types/modes/utils/context-usage.d.ts +0 -51
  729. package/dist/types/modes/utils/hotkeys-markdown.d.ts +0 -5
  730. package/dist/types/modes/utils/injected-user-submission.d.ts +0 -52
  731. package/dist/types/modes/utils/keybinding-matchers.d.ts +0 -10
  732. package/dist/types/modes/utils/terminal-bell.d.ts +0 -3
  733. package/dist/types/modes/utils/tools-markdown.d.ts +0 -5
  734. package/dist/types/modes/utils/ui-helpers.d.ts +0 -54
  735. package/dist/types/notifications/attachment-registry.d.ts +0 -17
  736. package/dist/types/notifications/chat-adapters.d.ts +0 -9
  737. package/dist/types/notifications/config-commands.d.ts +0 -64
  738. package/dist/types/notifications/config.d.ts +0 -98
  739. package/dist/types/notifications/daemon-paths.d.ts +0 -10
  740. package/dist/types/notifications/engine.d.ts +0 -59
  741. package/dist/types/notifications/helpers.d.ts +0 -55
  742. package/dist/types/notifications/html-format.d.ts +0 -75
  743. package/dist/types/notifications/index.d.ts +0 -192
  744. package/dist/types/notifications/lifecycle-commands.d.ts +0 -69
  745. package/dist/types/notifications/lifecycle-control-runtime.d.ts +0 -99
  746. package/dist/types/notifications/lifecycle-orchestrator.d.ts +0 -144
  747. package/dist/types/notifications/managed-daemon.d.ts +0 -48
  748. package/dist/types/notifications/operator-runtime.d.ts +0 -52
  749. package/dist/types/notifications/rate-limit-pool.d.ts +0 -95
  750. package/dist/types/notifications/recent-activity.d.ts +0 -39
  751. package/dist/types/notifications/reply-sent-store.d.ts +0 -53
  752. package/dist/types/notifications/rich-draft.d.ts +0 -68
  753. package/dist/types/notifications/rich-render.d.ts +0 -90
  754. package/dist/types/notifications/telegram-cli.d.ts +0 -19
  755. package/dist/types/notifications/telegram-daemon-cli.d.ts +0 -28
  756. package/dist/types/notifications/telegram-daemon-control.d.ts +0 -64
  757. package/dist/types/notifications/telegram-daemon.d.ts +0 -429
  758. package/dist/types/notifications/telegram-reference.d.ts +0 -119
  759. package/dist/types/notifications/threaded-inbound.d.ts +0 -77
  760. package/dist/types/notifications/threaded-render.d.ts +0 -88
  761. package/dist/types/notifications/topic-registry.d.ts +0 -69
  762. package/dist/types/plan-mode/approved-plan.d.ts +0 -49
  763. package/dist/types/plan-mode/state.d.ts +0 -6
  764. package/dist/types/registry/agent-registry.d.ts +0 -62
  765. package/dist/types/reminders/star-reminder.d.ts +0 -115
  766. package/dist/types/research-plan/index.d.ts +0 -1
  767. package/dist/types/research-plan/ledger.d.ts +0 -33
  768. package/dist/types/rlm/artifacts.d.ts +0 -9
  769. package/dist/types/rlm/complete-research-tool.d.ts +0 -35
  770. package/dist/types/rlm/data-context.d.ts +0 -6
  771. package/dist/types/rlm/index.d.ts +0 -47
  772. package/dist/types/rlm/notebook.d.ts +0 -12
  773. package/dist/types/rlm/preset.d.ts +0 -23
  774. package/dist/types/rlm/python-tool.d.ts +0 -16
  775. package/dist/types/rlm/report.d.ts +0 -14
  776. package/dist/types/rlm/types.d.ts +0 -37
  777. package/dist/types/runtime/process-lifecycle.d.ts +0 -108
  778. package/dist/types/runtime-api-key.d.ts +0 -7
  779. package/dist/types/runtime-credential-selector.d.ts +0 -7
  780. package/dist/types/runtime-mcp/client.d.ts +0 -74
  781. package/dist/types/runtime-mcp/config-writer.d.ts +0 -88
  782. package/dist/types/runtime-mcp/config.d.ts +0 -77
  783. package/dist/types/runtime-mcp/discoverable-tool-metadata.d.ts +0 -7
  784. package/dist/types/runtime-mcp/index.d.ts +0 -18
  785. package/dist/types/runtime-mcp/json-rpc.d.ts +0 -22
  786. package/dist/types/runtime-mcp/loader.d.ts +0 -45
  787. package/dist/types/runtime-mcp/manager.d.ts +0 -195
  788. package/dist/types/runtime-mcp/oauth-discovery.d.ts +0 -40
  789. package/dist/types/runtime-mcp/oauth-flow.d.ts +0 -59
  790. package/dist/types/runtime-mcp/render.d.ts +0 -25
  791. package/dist/types/runtime-mcp/smithery-auth.d.ts +0 -16
  792. package/dist/types/runtime-mcp/smithery-connect.d.ts +0 -38
  793. package/dist/types/runtime-mcp/smithery-registry.d.ts +0 -51
  794. package/dist/types/runtime-mcp/tool-bridge.d.ts +0 -86
  795. package/dist/types/runtime-mcp/tool-cache.d.ts +0 -8
  796. package/dist/types/runtime-mcp/transports/http.d.ts +0 -36
  797. package/dist/types/runtime-mcp/transports/index.d.ts +0 -5
  798. package/dist/types/runtime-mcp/transports/stdio.d.ts +0 -29
  799. package/dist/types/runtime-mcp/types.d.ts +0 -348
  800. package/dist/types/sdk.d.ts +0 -254
  801. package/dist/types/secrets/index.d.ts +0 -9
  802. package/dist/types/secrets/obfuscator.d.ts +0 -23
  803. package/dist/types/secrets/regex.d.ts +0 -2
  804. package/dist/types/session/agent-session.d.ts +0 -1185
  805. package/dist/types/session/agent-storage.d.ts +0 -101
  806. package/dist/types/session/artifacts.d.ts +0 -64
  807. package/dist/types/session/auth-broker-config.d.ts +0 -13
  808. package/dist/types/session/auth-storage.d.ts +0 -6
  809. package/dist/types/session/blob-store.d.ts +0 -160
  810. package/dist/types/session/client-bridge.d.ts +0 -88
  811. package/dist/types/session/contribution-prep.d.ts +0 -47
  812. package/dist/types/session/file-mention-pruning.d.ts +0 -8
  813. package/dist/types/session/history-storage.d.ts +0 -16
  814. package/dist/types/session/messages.d.ts +0 -169
  815. package/dist/types/session/session-dump-format.d.ts +0 -22
  816. package/dist/types/session/session-manager.d.ts +0 -660
  817. package/dist/types/session/session-storage.d.ts +0 -88
  818. package/dist/types/session/streaming-output.d.ts +0 -209
  819. package/dist/types/session/tool-choice-queue.d.ts +0 -84
  820. package/dist/types/session/yield-queue.d.ts +0 -24
  821. package/dist/types/setup/credential-auto-import.d.ts +0 -63
  822. package/dist/types/setup/credential-import.d.ts +0 -82
  823. package/dist/types/setup/hermes-setup.d.ts +0 -78
  824. package/dist/types/setup/host-plugin-setup.d.ts +0 -39
  825. package/dist/types/setup/model-onboarding-guidance.d.ts +0 -9
  826. package/dist/types/setup/provider-onboarding.d.ts +0 -52
  827. package/dist/types/skc-runtime/cli-write-receipt.d.ts +0 -24
  828. package/dist/types/skc-runtime/deep-interview-ambiguity.d.ts +0 -39
  829. package/dist/types/skc-runtime/deep-interview-recorder.d.ts +0 -114
  830. package/dist/types/skc-runtime/deep-interview-runtime.d.ts +0 -36
  831. package/dist/types/skc-runtime/deep-interview-state.d.ts +0 -127
  832. package/dist/types/skc-runtime/gc-render.d.ts +0 -6
  833. package/dist/types/skc-runtime/gc-runtime.d.ts +0 -134
  834. package/dist/types/skc-runtime/goal-mode-request.d.ts +0 -53
  835. package/dist/types/skc-runtime/launch-tmux.d.ts +0 -78
  836. package/dist/types/skc-runtime/launch-worktree.d.ts +0 -46
  837. package/dist/types/skc-runtime/ledger-event-renderer.d.ts +0 -68
  838. package/dist/types/skc-runtime/psmux-detect.d.ts +0 -78
  839. package/dist/types/skc-runtime/ralplan-runtime.d.ts +0 -26
  840. package/dist/types/skc-runtime/restricted-role-agent-bash.d.ts +0 -3
  841. package/dist/types/skc-runtime/session-layout.d.ts +0 -59
  842. package/dist/types/skc-runtime/session-resolution.d.ts +0 -47
  843. package/dist/types/skc-runtime/session-state-sidecar.d.ts +0 -39
  844. package/dist/types/skc-runtime/state-graph.d.ts +0 -4
  845. package/dist/types/skc-runtime/state-migrations.d.ts +0 -33
  846. package/dist/types/skc-runtime/state-renderer.d.ts +0 -70
  847. package/dist/types/skc-runtime/state-runtime.d.ts +0 -38
  848. package/dist/types/skc-runtime/state-schema.d.ts +0 -319
  849. package/dist/types/skc-runtime/state-validation.d.ts +0 -6
  850. package/dist/types/skc-runtime/state-writer.d.ts +0 -244
  851. package/dist/types/skc-runtime/team-gc.d.ts +0 -7
  852. package/dist/types/skc-runtime/team-runtime.d.ts +0 -355
  853. package/dist/types/skc-runtime/tmux-common.d.ts +0 -105
  854. package/dist/types/skc-runtime/tmux-gc.d.ts +0 -7
  855. package/dist/types/skc-runtime/tmux-sessions.d.ts +0 -62
  856. package/dist/types/skc-runtime/ultragoal-guard.d.ts +0 -93
  857. package/dist/types/skc-runtime/ultragoal-receipt-freshness.d.ts +0 -42
  858. package/dist/types/skc-runtime/ultragoal-runtime.d.ts +0 -410
  859. package/dist/types/skc-runtime/workflow-command-ref.d.ts +0 -43
  860. package/dist/types/skc-runtime/workflow-manifest.d.ts +0 -54
  861. package/dist/types/skill-state/active-state.d.ts +0 -126
  862. package/dist/types/skill-state/canonical-skills.d.ts +0 -3
  863. package/dist/types/skill-state/deep-interview-mutation-guard.d.ts +0 -38
  864. package/dist/types/skill-state/initial-phase.d.ts +0 -12
  865. package/dist/types/skill-state/workflow-hud.d.ts +0 -83
  866. package/dist/types/skill-state/workflow-state-contract.d.ts +0 -57
  867. package/dist/types/skill-state/workflow-state-version.d.ts +0 -3
  868. package/dist/types/slash-commands/acp-builtins.d.ts +0 -18
  869. package/dist/types/slash-commands/builtin-registry.d.ts +0 -24
  870. package/dist/types/slash-commands/helpers/context-report.d.ts +0 -7
  871. package/dist/types/slash-commands/helpers/fast-status-report.d.ts +0 -82
  872. package/dist/types/slash-commands/helpers/format.d.ts +0 -10
  873. package/dist/types/slash-commands/helpers/mcp.d.ts +0 -3
  874. package/dist/types/slash-commands/helpers/parse.d.ts +0 -33
  875. package/dist/types/slash-commands/helpers/ssh.d.ts +0 -3
  876. package/dist/types/slash-commands/helpers/todo.d.ts +0 -3
  877. package/dist/types/slash-commands/helpers/usage-report.d.ts +0 -7
  878. package/dist/types/slash-commands/types.d.ts +0 -120
  879. package/dist/types/ssh/config-writer.d.ts +0 -49
  880. package/dist/types/ssh/connection-manager.d.ts +0 -33
  881. package/dist/types/ssh/ssh-executor.d.ts +0 -37
  882. package/dist/types/ssh/sshfs-mount.d.ts +0 -6
  883. package/dist/types/ssh/utils.d.ts +0 -2
  884. package/dist/types/stt/downloader.d.ts +0 -9
  885. package/dist/types/stt/index.d.ts +0 -3
  886. package/dist/types/stt/recorder.d.ts +0 -13
  887. package/dist/types/stt/setup.d.ts +0 -18
  888. package/dist/types/stt/stt-controller.d.ts +0 -16
  889. package/dist/types/stt/transcriber.d.ts +0 -16
  890. package/dist/types/system-prompt.d.ts +0 -118
  891. package/dist/types/task/agents.d.ts +0 -28
  892. package/dist/types/task/commands.d.ts +0 -35
  893. package/dist/types/task/discovery.d.ts +0 -19
  894. package/dist/types/task/executor.d.ts +0 -124
  895. package/dist/types/task/fork-context-advisory.d.ts +0 -13
  896. package/dist/types/task/fork-context-budget.d.ts +0 -7
  897. package/dist/types/task/id.d.ts +0 -7
  898. package/dist/types/task/index.d.ts +0 -43
  899. package/dist/types/task/name-generator.d.ts +0 -16
  900. package/dist/types/task/output-manager.d.ts +0 -36
  901. package/dist/types/task/parallel.d.ts +0 -34
  902. package/dist/types/task/receipt.d.ts +0 -87
  903. package/dist/types/task/render.d.ts +0 -28
  904. package/dist/types/task/roi-reconciliation.d.ts +0 -27
  905. package/dist/types/task/simple-mode.d.ts +0 -8
  906. package/dist/types/task/skc-command.d.ts +0 -7
  907. package/dist/types/task/spawn-gate.d.ts +0 -29
  908. package/dist/types/task/subprocess-tool-registry.d.ts +0 -72
  909. package/dist/types/task/token-log.d.ts +0 -30
  910. package/dist/types/task/token-log.test.d.ts +0 -1
  911. package/dist/types/task/types.d.ts +0 -508
  912. package/dist/types/task/worktree.d.ts +0 -94
  913. package/dist/types/thinking-metadata.d.ts +0 -16
  914. package/dist/types/thinking.d.ts +0 -22
  915. package/dist/types/tool-discovery/tool-index.d.ts +0 -112
  916. package/dist/types/tools/archive-reader.d.ts +0 -40
  917. package/dist/types/tools/ask-answer-registry.d.ts +0 -13
  918. package/dist/types/tools/ask.d.ts +0 -123
  919. package/dist/types/tools/ast-edit.d.ts +0 -77
  920. package/dist/types/tools/ast-grep.d.ts +0 -69
  921. package/dist/types/tools/auto-generated-guard.d.ts +0 -17
  922. package/dist/types/tools/bash-allowed-prefixes.d.ts +0 -10
  923. package/dist/types/tools/bash-command-fixup.d.ts +0 -11
  924. package/dist/types/tools/bash-interactive.d.ts +0 -16
  925. package/dist/types/tools/bash-interceptor.d.ts +0 -24
  926. package/dist/types/tools/bash-pty-selection.d.ts +0 -7
  927. package/dist/types/tools/bash-skill-urls.d.ts +0 -31
  928. package/dist/types/tools/bash.d.ts +0 -157
  929. package/dist/types/tools/bisect.d.ts +0 -81
  930. package/dist/types/tools/browser/actions.d.ts +0 -54
  931. package/dist/types/tools/browser/attach.d.ts +0 -50
  932. package/dist/types/tools/browser/launch.d.ts +0 -62
  933. package/dist/types/tools/browser/readable.d.ts +0 -17
  934. package/dist/types/tools/browser/registry.d.ts +0 -57
  935. package/dist/types/tools/browser/render.d.ts +0 -53
  936. package/dist/types/tools/browser/tab-protocol.d.ts +0 -144
  937. package/dist/types/tools/browser/tab-supervisor.d.ts +0 -103
  938. package/dist/types/tools/browser/tab-worker-entry.d.ts +0 -1
  939. package/dist/types/tools/browser/tab-worker.d.ts +0 -19
  940. package/dist/types/tools/browser.d.ts +0 -211
  941. package/dist/types/tools/calculator.d.ts +0 -76
  942. package/dist/types/tools/checkpoint.d.ts +0 -63
  943. package/dist/types/tools/composer-bash-policy.d.ts +0 -14
  944. package/dist/types/tools/computer/render.d.ts +0 -17
  945. package/dist/types/tools/computer-gc.d.ts +0 -23
  946. package/dist/types/tools/computer.d.ts +0 -465
  947. package/dist/types/tools/conflict-detect.d.ts +0 -205
  948. package/dist/types/tools/context.d.ts +0 -19
  949. package/dist/types/tools/cron.d.ts +0 -91
  950. package/dist/types/tools/debug.d.ts +0 -209
  951. package/dist/types/tools/eval.d.ts +0 -108
  952. package/dist/types/tools/fetch.d.ts +0 -84
  953. package/dist/types/tools/file-recorder.d.ts +0 -13
  954. package/dist/types/tools/find.d.ts +0 -95
  955. package/dist/types/tools/fs-cache-invalidation.d.ts +0 -15
  956. package/dist/types/tools/gh-format.d.ts +0 -6
  957. package/dist/types/tools/gh-renderer.d.ts +0 -25
  958. package/dist/types/tools/gh.d.ts +0 -356
  959. package/dist/types/tools/github-cache.d.ts +0 -103
  960. package/dist/types/tools/grouped-file-output.d.ts +0 -36
  961. package/dist/types/tools/hindsight-recall.d.ts +0 -21
  962. package/dist/types/tools/hindsight-reflect.d.ts +0 -23
  963. package/dist/types/tools/hindsight-retain.d.ts +0 -27
  964. package/dist/types/tools/image-gen.d.ts +0 -79
  965. package/dist/types/tools/index.d.ts +0 -319
  966. package/dist/types/tools/irc.d.ts +0 -79
  967. package/dist/types/tools/job.d.ts +0 -78
  968. package/dist/types/tools/json-tree.d.ts +0 -23
  969. package/dist/types/tools/jtd-to-json-schema.d.ts +0 -29
  970. package/dist/types/tools/jtd-to-typescript.d.ts +0 -26
  971. package/dist/types/tools/jtd-utils.d.ts +0 -42
  972. package/dist/types/tools/list-limit.d.ts +0 -12
  973. package/dist/types/tools/match-line-format.d.ts +0 -11
  974. package/dist/types/tools/monitor.d.ts +0 -54
  975. package/dist/types/tools/output-meta.d.ts +0 -204
  976. package/dist/types/tools/path-utils.d.ts +0 -147
  977. package/dist/types/tools/plan-mode-guard.d.ts +0 -18
  978. package/dist/types/tools/read.d.ts +0 -85
  979. package/dist/types/tools/recipe/index.d.ts +0 -45
  980. package/dist/types/tools/recipe/render.d.ts +0 -36
  981. package/dist/types/tools/recipe/runner.d.ts +0 -60
  982. package/dist/types/tools/recipe/runners/cargo.d.ts +0 -16
  983. package/dist/types/tools/recipe/runners/index.d.ts +0 -2
  984. package/dist/types/tools/recipe/runners/just.d.ts +0 -2
  985. package/dist/types/tools/recipe/runners/make.d.ts +0 -2
  986. package/dist/types/tools/recipe/runners/pkg.d.ts +0 -2
  987. package/dist/types/tools/recipe/runners/task.d.ts +0 -2
  988. package/dist/types/tools/render-mermaid.d.ts +0 -37
  989. package/dist/types/tools/render-utils.d.ts +0 -158
  990. package/dist/types/tools/renderers.d.ts +0 -26
  991. package/dist/types/tools/resolve.d.ts +0 -80
  992. package/dist/types/tools/resource-gc.d.ts +0 -54
  993. package/dist/types/tools/review.d.ts +0 -63
  994. package/dist/types/tools/search-tool-bm25.d.ts +0 -65
  995. package/dist/types/tools/search.d.ts +0 -93
  996. package/dist/types/tools/skill-discovery.d.ts +0 -40
  997. package/dist/types/tools/skill.d.ts +0 -47
  998. package/dist/types/tools/sqlite-reader.d.ts +0 -94
  999. package/dist/types/tools/ssh.d.ts +0 -67
  1000. package/dist/types/tools/subagent-render.d.ts +0 -31
  1001. package/dist/types/tools/subagent.d.ts +0 -117
  1002. package/dist/types/tools/telegram-send.d.ts +0 -32
  1003. package/dist/types/tools/todo-write.d.ts +0 -120
  1004. package/dist/types/tools/tool-errors.d.ts +0 -33
  1005. package/dist/types/tools/tool-result.d.ts +0 -30
  1006. package/dist/types/tools/tool-timeouts.d.ts +0 -56
  1007. package/dist/types/tools/ultragoal-ask-guard.d.ts +0 -12
  1008. package/dist/types/tools/vim.d.ts +0 -58
  1009. package/dist/types/tools/write.d.ts +0 -59
  1010. package/dist/types/tools/yield.d.ts +0 -25
  1011. package/dist/types/tui/code-cell.d.ts +0 -32
  1012. package/dist/types/tui/file-list.d.ts +0 -22
  1013. package/dist/types/tui/hyperlink.d.ts +0 -42
  1014. package/dist/types/tui/index.d.ts +0 -11
  1015. package/dist/types/tui/output-block.d.ts +0 -28
  1016. package/dist/types/tui/status-line.d.ts +0 -18
  1017. package/dist/types/tui/tree-list.d.ts +0 -19
  1018. package/dist/types/tui/types.d.ts +0 -13
  1019. package/dist/types/tui/utils.d.ts +0 -36
  1020. package/dist/types/utils/changelog.d.ts +0 -37
  1021. package/dist/types/utils/clipboard.d.ts +0 -22
  1022. package/dist/types/utils/cmux-workspace.d.ts +0 -52
  1023. package/dist/types/utils/command-args.d.ts +0 -9
  1024. package/dist/types/utils/commit-message-generator.d.ts +0 -7
  1025. package/dist/types/utils/edit-mode.d.ts +0 -13
  1026. package/dist/types/utils/event-bus.d.ts +0 -6
  1027. package/dist/types/utils/external-editor.d.ts +0 -17
  1028. package/dist/types/utils/file-display-mode.d.ts +0 -27
  1029. package/dist/types/utils/file-mentions.d.ts +0 -25
  1030. package/dist/types/utils/git.d.ts +0 -393
  1031. package/dist/types/utils/image-loading.d.ts +0 -26
  1032. package/dist/types/utils/image-resize.d.ts +0 -39
  1033. package/dist/types/utils/lang-from-path.d.ts +0 -8
  1034. package/dist/types/utils/markit.d.ts +0 -7
  1035. package/dist/types/utils/open.d.ts +0 -2
  1036. package/dist/types/utils/pasted-image-path.d.ts +0 -30
  1037. package/dist/types/utils/session-color.d.ts +0 -10
  1038. package/dist/types/utils/shell-snapshot.d.ts +0 -5
  1039. package/dist/types/utils/sixel.d.ts +0 -21
  1040. package/dist/types/utils/title-generator.d.ts +0 -31
  1041. package/dist/types/utils/tool-choice.d.ts +0 -20
  1042. package/dist/types/utils/tools-manager.d.ts +0 -9
  1043. package/dist/types/vim/buffer.d.ts +0 -41
  1044. package/dist/types/vim/commands.d.ts +0 -6
  1045. package/dist/types/vim/engine.d.ts +0 -47
  1046. package/dist/types/vim/parser.d.ts +0 -3
  1047. package/dist/types/vim/render.d.ts +0 -25
  1048. package/dist/types/vim/types.d.ts +0 -182
  1049. package/dist/types/web/insane/bridge.d.ts +0 -103
  1050. package/dist/types/web/insane/url-guard.d.ts +0 -25
  1051. package/dist/types/web/kagi.d.ts +0 -23
  1052. package/dist/types/web/parallel.d.ts +0 -58
  1053. package/dist/types/web/scrapers/artifacthub.d.ts +0 -6
  1054. package/dist/types/web/scrapers/arxiv.d.ts +0 -5
  1055. package/dist/types/web/scrapers/aur.d.ts +0 -5
  1056. package/dist/types/web/scrapers/biorxiv.d.ts +0 -5
  1057. package/dist/types/web/scrapers/bluesky.d.ts +0 -5
  1058. package/dist/types/web/scrapers/brew.d.ts +0 -5
  1059. package/dist/types/web/scrapers/cheatsh.d.ts +0 -8
  1060. package/dist/types/web/scrapers/chocolatey.d.ts +0 -5
  1061. package/dist/types/web/scrapers/choosealicense.d.ts +0 -2
  1062. package/dist/types/web/scrapers/cisa-kev.d.ts +0 -5
  1063. package/dist/types/web/scrapers/clojars.d.ts +0 -5
  1064. package/dist/types/web/scrapers/coingecko.d.ts +0 -5
  1065. package/dist/types/web/scrapers/crates-io.d.ts +0 -5
  1066. package/dist/types/web/scrapers/crossref.d.ts +0 -2
  1067. package/dist/types/web/scrapers/devto.d.ts +0 -5
  1068. package/dist/types/web/scrapers/discogs.d.ts +0 -8
  1069. package/dist/types/web/scrapers/discourse.d.ts +0 -5
  1070. package/dist/types/web/scrapers/dockerhub.d.ts +0 -5
  1071. package/dist/types/web/scrapers/docs-rs.d.ts +0 -2
  1072. package/dist/types/web/scrapers/fdroid.d.ts +0 -5
  1073. package/dist/types/web/scrapers/firefox-addons.d.ts +0 -2
  1074. package/dist/types/web/scrapers/flathub.d.ts +0 -2
  1075. package/dist/types/web/scrapers/github-gist.d.ts +0 -5
  1076. package/dist/types/web/scrapers/github.d.ts +0 -12
  1077. package/dist/types/web/scrapers/gitlab.d.ts +0 -5
  1078. package/dist/types/web/scrapers/go-pkg.d.ts +0 -5
  1079. package/dist/types/web/scrapers/hackage.d.ts +0 -5
  1080. package/dist/types/web/scrapers/hackernews.d.ts +0 -2
  1081. package/dist/types/web/scrapers/hex.d.ts +0 -5
  1082. package/dist/types/web/scrapers/huggingface.d.ts +0 -2
  1083. package/dist/types/web/scrapers/iacr.d.ts +0 -5
  1084. package/dist/types/web/scrapers/index.d.ts +0 -84
  1085. package/dist/types/web/scrapers/jetbrains-marketplace.d.ts +0 -2
  1086. package/dist/types/web/scrapers/lemmy.d.ts +0 -2
  1087. package/dist/types/web/scrapers/lobsters.d.ts +0 -5
  1088. package/dist/types/web/scrapers/mastodon.d.ts +0 -5
  1089. package/dist/types/web/scrapers/maven.d.ts +0 -6
  1090. package/dist/types/web/scrapers/mdn.d.ts +0 -2
  1091. package/dist/types/web/scrapers/metacpan.d.ts +0 -5
  1092. package/dist/types/web/scrapers/musicbrainz.d.ts +0 -5
  1093. package/dist/types/web/scrapers/npm.d.ts +0 -5
  1094. package/dist/types/web/scrapers/nuget.d.ts +0 -5
  1095. package/dist/types/web/scrapers/nvd.d.ts +0 -5
  1096. package/dist/types/web/scrapers/ollama.d.ts +0 -2
  1097. package/dist/types/web/scrapers/open-vsx.d.ts +0 -5
  1098. package/dist/types/web/scrapers/opencorporates.d.ts +0 -5
  1099. package/dist/types/web/scrapers/openlibrary.d.ts +0 -5
  1100. package/dist/types/web/scrapers/orcid.d.ts +0 -5
  1101. package/dist/types/web/scrapers/osv.d.ts +0 -5
  1102. package/dist/types/web/scrapers/packagist.d.ts +0 -5
  1103. package/dist/types/web/scrapers/pub-dev.d.ts +0 -5
  1104. package/dist/types/web/scrapers/pubmed.d.ts +0 -5
  1105. package/dist/types/web/scrapers/pypi.d.ts +0 -5
  1106. package/dist/types/web/scrapers/rawg.d.ts +0 -2
  1107. package/dist/types/web/scrapers/readthedocs.d.ts +0 -2
  1108. package/dist/types/web/scrapers/reddit.d.ts +0 -5
  1109. package/dist/types/web/scrapers/repology.d.ts +0 -5
  1110. package/dist/types/web/scrapers/rfc.d.ts +0 -5
  1111. package/dist/types/web/scrapers/rubygems.d.ts +0 -5
  1112. package/dist/types/web/scrapers/searchcode.d.ts +0 -2
  1113. package/dist/types/web/scrapers/sec-edgar.d.ts +0 -5
  1114. package/dist/types/web/scrapers/semantic-scholar.d.ts +0 -2
  1115. package/dist/types/web/scrapers/snapcraft.d.ts +0 -2
  1116. package/dist/types/web/scrapers/sourcegraph.d.ts +0 -2
  1117. package/dist/types/web/scrapers/spdx.d.ts +0 -5
  1118. package/dist/types/web/scrapers/spotify.d.ts +0 -8
  1119. package/dist/types/web/scrapers/stackoverflow.d.ts +0 -6
  1120. package/dist/types/web/scrapers/terraform.d.ts +0 -5
  1121. package/dist/types/web/scrapers/tldr.d.ts +0 -7
  1122. package/dist/types/web/scrapers/twitter.d.ts +0 -5
  1123. package/dist/types/web/scrapers/types.d.ts +0 -83
  1124. package/dist/types/web/scrapers/utils.d.ts +0 -32
  1125. package/dist/types/web/scrapers/vimeo.d.ts +0 -5
  1126. package/dist/types/web/scrapers/vscode-marketplace.d.ts +0 -5
  1127. package/dist/types/web/scrapers/w3c.d.ts +0 -2
  1128. package/dist/types/web/scrapers/wikidata.d.ts +0 -5
  1129. package/dist/types/web/scrapers/wikipedia.d.ts +0 -5
  1130. package/dist/types/web/scrapers/youtube.d.ts +0 -13
  1131. package/dist/types/web/search/index.d.ts +0 -118
  1132. package/dist/types/web/search/provider.d.ts +0 -55
  1133. package/dist/types/web/search/providers/anthropic.d.ts +0 -32
  1134. package/dist/types/web/search/providers/base.d.ts +0 -90
  1135. package/dist/types/web/search/providers/brave.d.ts +0 -27
  1136. package/dist/types/web/search/providers/codex.d.ts +0 -35
  1137. package/dist/types/web/search/providers/duckduckgo.d.ts +0 -57
  1138. package/dist/types/web/search/providers/exa.d.ts +0 -52
  1139. package/dist/types/web/search/providers/gemini.d.ts +0 -57
  1140. package/dist/types/web/search/providers/insane.d.ts +0 -53
  1141. package/dist/types/web/search/providers/jina.d.ts +0 -26
  1142. package/dist/types/web/search/providers/kagi.d.ts +0 -24
  1143. package/dist/types/web/search/providers/kimi.d.ts +0 -27
  1144. package/dist/types/web/search/providers/openai-compatible.d.ts +0 -9
  1145. package/dist/types/web/search/providers/parallel.d.ts +0 -15
  1146. package/dist/types/web/search/providers/perplexity.d.ts +0 -38
  1147. package/dist/types/web/search/providers/searxng.d.ts +0 -44
  1148. package/dist/types/web/search/providers/synthetic.d.ts +0 -21
  1149. package/dist/types/web/search/providers/tavily.d.ts +0 -29
  1150. package/dist/types/web/search/providers/text-citations.d.ts +0 -23
  1151. package/dist/types/web/search/providers/utils.d.ts +0 -88
  1152. package/dist/types/web/search/providers/xai.d.ts +0 -64
  1153. package/dist/types/web/search/providers/zai.d.ts +0 -28
  1154. package/dist/types/web/search/render.d.ts +0 -36
  1155. package/dist/types/web/search/types.d.ts +0 -372
  1156. package/dist/types/web/search/utils.d.ts +0 -4
  1157. package/dist/types/workflow/workflow-intent-diff.d.ts +0 -25
  1158. package/dist/types/workflow/workflow-intent-report-consumer.d.ts +0 -50
  1159. package/dist/types/workflow/workflow-intent-report-schema.d.ts +0 -2
  1160. package/dist/types/workflow/workflow-intent-report.d.ts +0 -48
  1161. package/dist/types/workspace-tree.d.ts +0 -42
@@ -1,13 +1,41 @@
1
+ import { randomUUID } from "node:crypto";
1
2
  import * as fsSync from "node:fs";
2
3
  import * as fs from "node:fs/promises";
3
4
  import * as path from "node:path";
4
5
  import type { AssistantMessage } from "@sayknow-cli/ai";
5
- import { logger, postmortem } from "@sayknow-cli/utils";
6
+ import { postmortem } from "@sayknow-cli/utils";
6
7
  import { sessionRuntimeDir } from "./session-layout";
8
+ import {
9
+ isValidOwnerIntent,
10
+ lifecyclePaths,
11
+ type ObserveTerminalRequest,
12
+ type OwnerIntent,
13
+ type OwnerVerdict,
14
+ observeOwnerTerminal,
15
+ type TerminalSignal,
16
+ } from "./tmux-owner-isolation";
7
17
 
18
+ /** Managed tmux owner provenance propagated only to the launched child process. */
19
+ export const SKC_TMUX_OWNER_GENERATION_ENV = "SKC_TMUX_OWNER_GENERATION";
20
+ export const SKC_TMUX_OWNER_STATE_DIR_ENV = "SKC_TMUX_OWNER_STATE_DIR";
21
+ export const SKC_TMUX_OWNER_SERVER_KEY_ENV = "SKC_TMUX_OWNER_SERVER_KEY";
8
22
  export const SKC_COORDINATOR_SESSION_STATE_FILE_ENV = "SKC_COORDINATOR_SESSION_STATE_FILE";
9
23
  export const SKC_COORDINATOR_SESSION_ID_ENV = "SKC_COORDINATOR_SESSION_ID";
10
24
  export const SKC_COORDINATOR_SESSION_BRANCH_ENV = "SKC_COORDINATOR_SESSION_BRANCH";
25
+ export const SKC_COORDINATOR_SESSION_LAUNCH_ID_ENV = "SKC_COORDINATOR_SESSION_LAUNCH_ID";
26
+ export const SKC_COORDINATOR_SESSION_READINESS_FILE_ENV = "SKC_COORDINATOR_SESSION_READINESS_FILE";
27
+
28
+ export type RuntimeInputReadyMarker = Readonly<{
29
+ schema_version: 1;
30
+ session_id: string;
31
+ launch_id: string;
32
+ state: "ready_for_input";
33
+ event: "interactive_input_ready";
34
+ source: "skc_interactive_runtime";
35
+ ready_for_input: true;
36
+ created_at: string;
37
+ }>;
38
+
11
39
  const SKC_SESSION_PROMPT_ACCEPTED_JSON_ENV = "SKC_SESSION_PROMPT_ACCEPTED_JSON";
12
40
  const SKC_SESSION_WORKTREE_BASELINE_DIRTY_ENV = "SKC_SESSION_WORKTREE_BASELINE_DIRTY";
13
41
 
@@ -19,6 +47,7 @@ const HEARTBEAT_MS = 1000;
19
47
 
20
48
  type LastPayloadCacheEntry = { mtimeMs: number; size: number; payload: Record<string, unknown> };
21
49
  const lastPayloadByStateFile = new Map<string, LastPayloadCacheEntry>();
50
+ const stateFileWriteChains = new Map<string, Promise<void>>();
22
51
 
23
52
  /** Test-only counters for runtime sidecar hot-path assertions. */
24
53
  export const __sessionStateSidecarPerfCounters = {
@@ -28,18 +57,30 @@ export const __sessionStateSidecarPerfCounters = {
28
57
  },
29
58
  };
30
59
 
31
- const lastWrittenPayloadByStateFile = new Map<string, Record<string, unknown>>();
32
-
33
60
  interface RuntimeStateEvent {
34
61
  type: string;
35
62
  messages?: unknown[];
36
63
  }
37
64
 
38
- interface RuntimeStateContext {
65
+ export interface OwnerTerminalContext {
66
+ generation: string;
67
+ stateDir: string;
68
+ socketKey: string;
69
+ scope?: string | null;
70
+ ownerPid?: number | null;
71
+ ownerName?: string | null;
72
+ operatorDispatchId?: string | null;
73
+ }
74
+
75
+ export interface RuntimeStateContext {
39
76
  sessionId: string;
40
77
  cwd: string;
41
78
  sessionFile?: string | null;
42
79
  branch?: string | null;
80
+ /** Public-safe owner metadata used to persist the canonical terminal verdict. */
81
+ ownerTerminal?: OwnerTerminalContext | null;
82
+ /** Internal fail-closed marker set only when managed owner metadata is malformed or missing. */
83
+ ownerTerminalMetadataInvalid?: boolean;
43
84
  }
44
85
 
45
86
  interface RuntimeStateSidecarPayload {
@@ -60,19 +101,166 @@ export type TerminalRuntimeStateStatus =
60
101
  reason:
61
102
  | "missing_state_file"
62
103
  | "invalid_json"
104
+ | "invalid_state_marker"
63
105
  | "session_id_mismatch"
64
106
  | "cwd_mismatch"
65
107
  | "session_file_mismatch"
66
108
  | "non_terminal_state";
67
109
  };
68
110
 
111
+ function runtimeReadinessMarkerConflict(): Error {
112
+ const error = new Error("runtime_readiness_marker_conflict");
113
+ Object.assign(error, { code: "runtime_readiness_marker_conflict" });
114
+ return error;
115
+ }
116
+
117
+ function isRuntimeInputReadyMarker(value: unknown): value is RuntimeInputReadyMarker {
118
+ if (!value || typeof value !== "object") return false;
119
+ const marker = value as Record<string, unknown>;
120
+ return (
121
+ marker.schema_version === 1 &&
122
+ typeof marker.session_id === "string" &&
123
+ typeof marker.launch_id === "string" &&
124
+ marker.state === "ready_for_input" &&
125
+ marker.event === "interactive_input_ready" &&
126
+ marker.source === "skc_interactive_runtime" &&
127
+ marker.ready_for_input === true &&
128
+ typeof marker.created_at === "string" &&
129
+ marker.created_at.length > 0 &&
130
+ Number.isFinite(Date.parse(marker.created_at))
131
+ );
132
+ }
133
+
134
+ function immutableRuntimeInputReadyMarker(marker: RuntimeInputReadyMarker): RuntimeInputReadyMarker {
135
+ return Object.freeze({ ...marker });
136
+ }
137
+
138
+ async function readRuntimeInputReadyMarker(readinessFile: string): Promise<RuntimeInputReadyMarker | null> {
139
+ let text: string;
140
+ try {
141
+ text = await Bun.file(readinessFile).text();
142
+ } catch (error) {
143
+ const code = (error as { code?: unknown }).code;
144
+ if (code === "ENOENT" || code === "ENOTDIR") return null;
145
+ throw runtimeReadinessMarkerConflict();
146
+ }
147
+ try {
148
+ const marker = JSON.parse(text) as unknown;
149
+ if (!isRuntimeInputReadyMarker(marker)) throw runtimeReadinessMarkerConflict();
150
+ return immutableRuntimeInputReadyMarker(marker);
151
+ } catch (error) {
152
+ if ((error as { code?: unknown }).code === "runtime_readiness_marker_conflict") throw error;
153
+ throw runtimeReadinessMarkerConflict();
154
+ }
155
+ }
156
+
157
+ export async function persistCoordinatorRuntimeInputReady(): Promise<RuntimeInputReadyMarker | null> {
158
+ const stateFile = process.env[SKC_COORDINATOR_SESSION_STATE_FILE_ENV]?.trim();
159
+ const sessionId = process.env[SKC_COORDINATOR_SESSION_ID_ENV]?.trim();
160
+ const launchId = process.env[SKC_COORDINATOR_SESSION_LAUNCH_ID_ENV]?.trim();
161
+ const readinessFile = process.env[SKC_COORDINATOR_SESSION_READINESS_FILE_ENV]?.trim();
162
+ if (!stateFile || !sessionId || !launchId || !readinessFile) return null;
163
+
164
+ const expected = { sessionId, launchId };
165
+ const existing = await readRuntimeInputReadyMarker(readinessFile);
166
+ if (existing) {
167
+ if (existing.session_id !== expected.sessionId || existing.launch_id !== expected.launchId) {
168
+ throw runtimeReadinessMarkerConflict();
169
+ }
170
+ return existing;
171
+ }
172
+
173
+ const marker = immutableRuntimeInputReadyMarker({
174
+ schema_version: 1,
175
+ session_id: expected.sessionId,
176
+ launch_id: expected.launchId,
177
+ state: "ready_for_input",
178
+ event: "interactive_input_ready",
179
+ source: "skc_interactive_runtime",
180
+ ready_for_input: true,
181
+ created_at: new Date().toISOString(),
182
+ });
183
+ const tempFile = path.join(
184
+ path.dirname(readinessFile),
185
+ `.${path.basename(readinessFile)}.${process.pid}.${randomUUID()}.tmp`,
186
+ );
187
+ try {
188
+ await fs.mkdir(path.dirname(readinessFile), { recursive: true });
189
+ await fs.writeFile(tempFile, `${JSON.stringify(marker)}\n`, { flag: "wx" });
190
+ try {
191
+ await fs.link(tempFile, readinessFile);
192
+ } catch (error) {
193
+ if ((error as { code?: unknown }).code !== "EEXIST") throw runtimeReadinessMarkerConflict();
194
+ const raced = await readRuntimeInputReadyMarker(readinessFile);
195
+ if (raced && raced.session_id === expected.sessionId && raced.launch_id === expected.launchId) return raced;
196
+ throw runtimeReadinessMarkerConflict();
197
+ }
198
+ return marker;
199
+ } finally {
200
+ await fs.rm(tempFile, { force: true });
201
+ }
202
+ }
203
+
69
204
  function sameResolvedPath(left: string, right: string): boolean {
70
205
  return path.resolve(left) === path.resolve(right);
71
206
  }
72
207
 
73
- function isCoordinatorOwnedStateFile(stateFile: string): boolean {
74
- const coordinatorStateFile = process.env[SKC_COORDINATOR_SESSION_STATE_FILE_ENV]?.trim();
75
- return !!coordinatorStateFile && sameResolvedPath(coordinatorStateFile, stateFile);
208
+ function normalizedIdentity(context: Pick<RuntimeStateContext, "sessionId" | "cwd" | "sessionFile">): {
209
+ sessionId: string;
210
+ cwd: string;
211
+ workdir: string;
212
+ sessionFile: string | null;
213
+ } {
214
+ const explicitStateFile = process.env[SKC_COORDINATOR_SESSION_STATE_FILE_ENV]?.trim();
215
+ const sessionId = explicitStateFile
216
+ ? process.env[SKC_COORDINATOR_SESSION_ID_ENV]?.trim() || context.sessionId.trim()
217
+ : context.sessionId.trim();
218
+ const cwd = context.cwd.trim();
219
+ if (!sessionId || !cwd) throw new PreviousRuntimeStateReadError();
220
+ return {
221
+ sessionId,
222
+ cwd: path.resolve(cwd),
223
+ workdir: path.resolve(cwd),
224
+ sessionFile: context.sessionFile == null ? null : path.resolve(context.sessionFile),
225
+ };
226
+ }
227
+
228
+ async function serializeStateFileWrite<T>(stateFile: string, operation: () => Promise<T>): Promise<T> {
229
+ const prior = stateFileWriteChains.get(stateFile) ?? Promise.resolve();
230
+ const current = prior.catch(() => {}).then(operation);
231
+ const settled = current.then(
232
+ () => undefined,
233
+ () => undefined,
234
+ );
235
+ stateFileWriteChains.set(stateFile, settled);
236
+ try {
237
+ return await current;
238
+ } finally {
239
+ if (stateFileWriteChains.get(stateFile) === settled) stateFileWriteChains.delete(stateFile);
240
+ }
241
+ }
242
+
243
+ function validRuntimeStateMarker(value: unknown): value is RuntimeStateSidecarPayload {
244
+ if (!value || typeof value !== "object" || Array.isArray(value)) return false;
245
+ const payload = value as RuntimeStateSidecarPayload;
246
+ return (
247
+ payload.schema_version === 1 &&
248
+ typeof payload.session_id === "string" &&
249
+ payload.session_id.trim().length > 0 &&
250
+ payload.session_id === payload.session_id.trim() &&
251
+ (payload.state === "ready_for_input" ||
252
+ payload.state === "running" ||
253
+ payload.state === "needs_user_input" ||
254
+ payload.state === "completed" ||
255
+ payload.state === "errored") &&
256
+ typeof payload.cwd === "string" &&
257
+ payload.cwd.trim().length > 0 &&
258
+ typeof payload.workdir === "string" &&
259
+ payload.workdir.trim().length > 0 &&
260
+ Object.hasOwn(payload, "session_file") &&
261
+ (payload.session_file === null ||
262
+ (typeof payload.session_file === "string" && payload.session_file.trim().length > 0))
263
+ );
76
264
  }
77
265
 
78
266
  export async function readTerminalRuntimeStateMarker(input: {
@@ -83,28 +271,34 @@ export async function readTerminalRuntimeStateMarker(input: {
83
271
  }): Promise<TerminalRuntimeStateStatus> {
84
272
  const stateFile = input.stateFile?.trim();
85
273
  const sessionId = input.sessionId?.trim();
86
- if (!stateFile || !sessionId) return { terminal: false, reason: "missing_state_file" };
87
- let payload: RuntimeStateSidecarPayload;
274
+ const cwd = input.cwd?.trim();
275
+ if (!stateFile || !sessionId || !cwd || input.sessionId !== sessionId)
276
+ return { terminal: false, reason: "missing_state_file" };
277
+ let value: unknown;
88
278
  try {
89
- payload = JSON.parse(await Bun.file(stateFile).text()) as RuntimeStateSidecarPayload;
279
+ value = JSON.parse(await Bun.file(stateFile).text());
90
280
  } catch (error) {
91
281
  const code = (error as { code?: unknown }).code;
92
282
  return {
93
283
  terminal: false,
94
- reason: code === "ENOENT" || code === "ENOTDIR" ? "missing_state_file" : "invalid_json",
284
+ reason: code === "ENOENT" ? "missing_state_file" : "invalid_json",
95
285
  };
96
286
  }
287
+ if (!validRuntimeStateMarker(value)) return { terminal: false, reason: "invalid_state_marker" };
288
+ const payload = value;
97
289
  if (payload.session_id !== sessionId) return { terminal: false, reason: "session_id_mismatch" };
98
- if (input.cwd && typeof payload.cwd === "string" && !sameResolvedPath(payload.cwd, input.cwd)) {
290
+ if (!sameResolvedPath(payload.cwd as string, cwd) || !sameResolvedPath(payload.workdir as string, cwd))
99
291
  return { terminal: false, reason: "cwd_mismatch" };
100
- }
292
+ const sessionFile = input.sessionFile == null ? null : path.resolve(input.sessionFile);
101
293
  if (
102
- input.sessionFile &&
103
- typeof payload.session_file === "string" &&
104
- !sameResolvedPath(payload.session_file, input.sessionFile)
105
- ) {
294
+ payload.session_file !== sessionFile &&
295
+ !(
296
+ typeof payload.session_file === "string" &&
297
+ typeof sessionFile === "string" &&
298
+ sameResolvedPath(payload.session_file, sessionFile)
299
+ )
300
+ )
106
301
  return { terminal: false, reason: "session_file_mismatch" };
107
- }
108
302
  if (payload.state === "completed" || payload.state === "errored") return { terminal: true, state: payload.state };
109
303
  return { terminal: false, reason: "non_terminal_state" };
110
304
  }
@@ -161,35 +355,105 @@ export function eventAffectsCoordinatorRuntimeState(event: RuntimeStateEvent): b
161
355
  return stateForEvent(event) !== null;
162
356
  }
163
357
 
358
+ class PreviousRuntimeStateReadError extends Error {
359
+ constructor() {
360
+ super("Existing runtime state marker is invalid or unreadable; refusing to overwrite.");
361
+ this.name = "PreviousRuntimeStateReadError";
362
+ }
363
+ }
364
+
365
+ function isAbsentStateFileError(error: unknown): boolean {
366
+ return (error as { code?: unknown }).code === "ENOENT";
367
+ }
368
+
369
+ function parsePreviousPayload(raw: string): Record<string, unknown> {
370
+ const payload: unknown = JSON.parse(raw);
371
+ if (!validPreviousRuntimeStatePayload(payload)) throw new PreviousRuntimeStateReadError();
372
+ return payload;
373
+ }
374
+
375
+ function validPreviousRuntimeStatePayload(value: unknown): value is Record<string, unknown> {
376
+ if (!value || typeof value !== "object" || Array.isArray(value)) return false;
377
+ const payload = value as Record<string, unknown>;
378
+ if (
379
+ payload.schema_version !== 1 ||
380
+ typeof payload.session_id !== "string" ||
381
+ payload.session_id.trim().length === 0 ||
382
+ (payload.state !== "booting" &&
383
+ payload.state !== "ready_for_input" &&
384
+ payload.state !== "running" &&
385
+ payload.state !== "needs_user_input" &&
386
+ payload.state !== "completed" &&
387
+ payload.state !== "errored" &&
388
+ payload.state !== "stale" &&
389
+ payload.state !== "unknown")
390
+ )
391
+ return false;
392
+ if (typeof payload.cwd !== "string" || payload.cwd.trim().length === 0) return false;
393
+ if (typeof payload.workdir !== "string" || payload.workdir.trim().length === 0) return false;
394
+ if (
395
+ !Object.hasOwn(payload, "session_file") ||
396
+ (payload.session_file !== null && typeof payload.session_file !== "string")
397
+ )
398
+ return false;
399
+ if (payload.ready_for_input !== undefined && typeof payload.ready_for_input !== "boolean") return false;
400
+ if (payload.live !== undefined && payload.live !== null && typeof payload.live !== "boolean") return false;
401
+ if (payload.reason !== undefined && payload.reason !== null && typeof payload.reason !== "string") return false;
402
+ if (
403
+ payload.updated_at !== undefined &&
404
+ (typeof payload.updated_at !== "string" || !Number.isFinite(Date.parse(payload.updated_at)))
405
+ )
406
+ return false;
407
+ if (payload.ready_for_input !== undefined) {
408
+ const expectedReady = payload.state === "ready_for_input" || payload.state === "completed";
409
+ if (payload.ready_for_input !== expectedReady) return false;
410
+ }
411
+ if (payload.live !== undefined && payload.live !== null && payload.live !== (payload.state === "running"))
412
+ return false;
413
+ return true;
414
+ }
415
+
164
416
  function readPreviousPayload(stateFile: string): Record<string, unknown> {
417
+ let raw: string;
165
418
  try {
166
- return JSON.parse(fsSync.readFileSync(stateFile, "utf8")) as Record<string, unknown>;
167
- } catch {
168
- return {};
419
+ raw = fsSync.readFileSync(stateFile, "utf8");
420
+ } catch (error) {
421
+ lastPayloadByStateFile.delete(stateFile);
422
+ if (isAbsentStateFileError(error)) return {};
423
+ throw new PreviousRuntimeStateReadError();
424
+ }
425
+ try {
426
+ return parsePreviousPayload(raw);
427
+ } catch (error) {
428
+ lastPayloadByStateFile.delete(stateFile);
429
+ if (error instanceof PreviousRuntimeStateReadError) throw error;
430
+ throw new PreviousRuntimeStateReadError();
169
431
  }
170
432
  }
171
433
 
172
434
  async function readPreviousPayloadForEvent(stateFile: string): Promise<Record<string, unknown>> {
173
- if (!isCoordinatorOwnedStateFile(stateFile)) {
174
- const cachedWritten = lastWrittenPayloadByStateFile.get(stateFile);
175
- if (cachedWritten) return cachedWritten;
176
- }
177
- let stat: Awaited<ReturnType<typeof fs.stat>>;
435
+ let stat: fsSync.Stats;
178
436
  try {
179
437
  stat = await fs.stat(stateFile);
180
- } catch {
438
+ } catch (error) {
439
+ lastPayloadByStateFile.delete(stateFile);
440
+ if (isAbsentStateFileError(error)) return {};
441
+ throw new PreviousRuntimeStateReadError();
442
+ }
443
+ if (!stat.isFile()) {
181
444
  lastPayloadByStateFile.delete(stateFile);
182
- return {};
445
+ throw new PreviousRuntimeStateReadError();
183
446
  }
184
447
  const cached = lastPayloadByStateFile.get(stateFile);
185
448
  if (cached && cached.mtimeMs === stat.mtimeMs && cached.size === stat.size) return cached.payload;
186
449
  try {
187
- const payload = JSON.parse(await Bun.file(stateFile).text()) as Record<string, unknown>;
450
+ const payload = parsePreviousPayload(await Bun.file(stateFile).text());
188
451
  lastPayloadByStateFile.set(stateFile, { mtimeMs: stat.mtimeMs, size: stat.size, payload });
189
452
  return payload;
190
- } catch {
453
+ } catch (error) {
191
454
  lastPayloadByStateFile.delete(stateFile);
192
- return {};
455
+ if (error instanceof PreviousRuntimeStateReadError) throw error;
456
+ throw new PreviousRuntimeStateReadError();
193
457
  }
194
458
  }
195
459
 
@@ -213,7 +477,6 @@ function shouldSkipRuntimeStateWrite(
213
477
  }
214
478
 
215
479
  function rememberWrittenPayload(stateFile: string, payload: Record<string, unknown>): void {
216
- lastWrittenPayloadByStateFile.set(stateFile, payload);
217
480
  try {
218
481
  const stat = fsSync.statSync(stateFile);
219
482
  lastPayloadByStateFile.set(stateFile, { mtimeMs: stat.mtimeMs, size: stat.size, payload });
@@ -223,30 +486,42 @@ function rememberWrittenPayload(stateFile: string, payload: Record<string, unkno
223
486
  }
224
487
  function shouldPreserveTerminalPayload(
225
488
  previous: RuntimeStateSidecarPayload,
226
- input: { sessionId: string; cwd: string; sessionFile?: string | null },
489
+ input: { sessionId: string; cwd: string; sessionFile: string | null },
227
490
  ): boolean {
491
+ if (!validRuntimeStateMarker(previous)) return false;
228
492
  if (previous.state !== "completed" && previous.state !== "errored") return false;
229
493
  const source = previous.final_response?.source;
230
494
  if (source !== "agent_end" && source !== "launch_error") return false;
231
- if (typeof previous.session_id === "string" && previous.session_id !== input.sessionId) return false;
232
- if (typeof previous.cwd === "string" && !sameResolvedPath(previous.cwd, input.cwd)) return false;
233
- if (typeof previous.workdir === "string" && !sameResolvedPath(previous.workdir, input.cwd)) return false;
234
- if (
235
- input.sessionFile &&
236
- typeof previous.session_file === "string" &&
237
- !sameResolvedPath(previous.session_file, input.sessionFile)
238
- ) {
239
- return false;
240
- }
241
- return true;
495
+ return (
496
+ previous.session_id === input.sessionId &&
497
+ sameResolvedPath(previous.cwd as string, input.cwd) &&
498
+ sameResolvedPath(previous.workdir as string, input.cwd) &&
499
+ (previous.session_file === input.sessionFile ||
500
+ (typeof previous.session_file === "string" &&
501
+ typeof input.sessionFile === "string" &&
502
+ sameResolvedPath(previous.session_file, input.sessionFile)))
503
+ );
242
504
  }
243
505
 
244
- function cachedTerminalPayload(
245
- stateFile: string,
246
- input: { sessionId: string; cwd: string; sessionFile?: string | null },
247
- ): RuntimeStateSidecarPayload | null {
248
- const cached = lastWrittenPayloadByStateFile.get(stateFile) as RuntimeStateSidecarPayload | undefined;
249
- return cached && shouldPreserveTerminalPayload(cached, input) ? cached : null;
506
+ function assertPreviousRuntimeStateIdentity(
507
+ previous: Record<string, unknown>,
508
+ input: { sessionId: string; cwd: string; sessionFile: string | null },
509
+ ): void {
510
+ if (Object.keys(previous).length === 0) return;
511
+ if (
512
+ previous.session_id !== input.sessionId ||
513
+ typeof previous.cwd !== "string" ||
514
+ typeof previous.workdir !== "string" ||
515
+ !sameResolvedPath(previous.cwd, input.cwd) ||
516
+ !sameResolvedPath(previous.workdir, input.cwd) ||
517
+ (previous.session_file !== input.sessionFile &&
518
+ !(
519
+ typeof previous.session_file === "string" &&
520
+ typeof input.sessionFile === "string" &&
521
+ sameResolvedPath(previous.session_file, input.sessionFile)
522
+ ))
523
+ )
524
+ throw new PreviousRuntimeStateReadError();
250
525
  }
251
526
 
252
527
  function runtimeStateFileForContext(context: RuntimeStateContext): string | null {
@@ -269,9 +544,11 @@ function basePayload(input: {
269
544
  reason: string | null;
270
545
  sessionId: string;
271
546
  }): Record<string, unknown> {
547
+ const identity = normalizedIdentity(input.context);
548
+ if (identity.sessionId !== input.sessionId) throw new PreviousRuntimeStateReadError();
272
549
  return {
273
550
  schema_version: 1,
274
- session_id: input.sessionId,
551
+ session_id: identity.sessionId,
275
552
  state: input.state,
276
553
  ready_for_input: input.state === "completed" || input.state === "ready_for_input",
277
554
  updated_at: input.now,
@@ -281,10 +558,11 @@ function basePayload(input: {
281
558
  reason: input.reason,
282
559
  source: input.source,
283
560
  event: input.event,
284
- cwd: input.context.cwd,
285
- workdir: input.context.cwd,
561
+ cwd: identity.cwd,
562
+ workdir: identity.workdir,
286
563
  branch: branchForContext(input.context),
287
- session_file: input.context.sessionFile ?? null,
564
+ session_file: identity.sessionFile,
565
+ ...(input.context.ownerTerminal ? { owner_generation: input.context.ownerTerminal.generation } : {}),
288
566
  };
289
567
  }
290
568
  function booleanFromUnknown(value: unknown): boolean | null {
@@ -372,10 +650,10 @@ function postmortemExitDetails(
372
650
  const observedChanges = observedRecoverableWorktreeChanges(typeof previous.cwd === "string" ? previous.cwd : cwd);
373
651
  const worktreeBaselineDirty = worktreeBaselineDirtyFromEnvOrMarker();
374
652
  const worktreeChangedSinceBaseline = worktreeBaselineDirty === false && observedChanges;
653
+ const previousStateIsTerminal = previous.state === "completed" || previous.state === "errored";
375
654
  if (reason === postmortem.Reason.EXIT || reason === postmortem.Reason.MANUAL) {
376
655
  const exitCode = numericProcessExitCode(0) ?? 0;
377
- const exitedBeforeTerminalState =
378
- exitCode === 0 && reason === postmortem.Reason.EXIT && previous.state === "running";
656
+ const exitedBeforeTerminalState = exitCode === 0 && reason === postmortem.Reason.EXIT && !previousStateIsTerminal;
379
657
  const state: RuntimeState = exitCode === 0 && !exitedBeforeTerminalState ? "completed" : "errored";
380
658
  const exitReason = exitedBeforeTerminalState
381
659
  ? "process_exit_before_terminal_state"
@@ -442,10 +720,129 @@ function postmortemExitDetails(
442
720
  };
443
721
  }
444
722
 
445
- function writeStateFileSync(stateFile: string, payload: Record<string, unknown>): void {
446
- fsSync.mkdirSync(path.dirname(stateFile), { recursive: true });
447
- fsSync.writeFileSync(stateFile, `${JSON.stringify(payload)}\n`);
448
- rememberWrittenPayload(stateFile, payload);
723
+ async function writeStateFileSync(stateFile: string, payload: Record<string, unknown>): Promise<void> {
724
+ await writeStateFile(stateFile, payload);
725
+ }
726
+
727
+ interface StateFileLockOwner {
728
+ pid: number;
729
+ start_time: string;
730
+ token: string;
731
+ }
732
+
733
+ function processStartTime(pid: number): string | null {
734
+ try {
735
+ const stat = fsSync.readFileSync(`/proc/${pid}/stat`, "utf8");
736
+ const close = stat.lastIndexOf(")");
737
+ const fields = stat
738
+ .slice(close + 1)
739
+ .trim()
740
+ .split(/\s+/);
741
+ return fields[19] ?? null;
742
+ } catch {
743
+ return null;
744
+ }
745
+ }
746
+
747
+ function validLockOwner(value: unknown): value is StateFileLockOwner {
748
+ if (!value || typeof value !== "object") return false;
749
+ const owner = value as Partial<StateFileLockOwner>;
750
+ return (
751
+ typeof owner.pid === "number" &&
752
+ Number.isSafeInteger(owner.pid) &&
753
+ owner.pid > 0 &&
754
+ typeof owner.start_time === "string" &&
755
+ typeof owner.token === "string" &&
756
+ owner.token.length > 0
757
+ );
758
+ }
759
+
760
+ function lockOwnerIsAlive(value: unknown): boolean {
761
+ if (!validLockOwner(value)) return false;
762
+ const owner = value;
763
+ try {
764
+ process.kill(owner.pid, 0);
765
+ } catch (error) {
766
+ if ((error as NodeJS.ErrnoException).code === "ESRCH") return false;
767
+ return true;
768
+ }
769
+ const currentStartTime = processStartTime(owner.pid);
770
+ return currentStartTime === null || currentStartTime === owner.start_time;
771
+ }
772
+
773
+ async function reclaimStaleStateFileLock(lockFile: string): Promise<void> {
774
+ let raw: string;
775
+ try {
776
+ raw = await fs.readFile(lockFile, "utf8");
777
+ } catch (error) {
778
+ if ((error as NodeJS.ErrnoException).code === "ENOENT") return;
779
+ throw error;
780
+ }
781
+ let owner: unknown;
782
+ try {
783
+ owner = JSON.parse(raw);
784
+ } catch {
785
+ owner = null;
786
+ }
787
+ if (!validLockOwner(owner)) {
788
+ const stat = await fs.stat(lockFile);
789
+ if (Date.now() - stat.mtimeMs < 30_000) return;
790
+ } else if (lockOwnerIsAlive(owner)) return;
791
+ try {
792
+ if ((await fs.readFile(lockFile, "utf8")) === raw) await fs.rm(lockFile);
793
+ } catch (error) {
794
+ if ((error as NodeJS.ErrnoException).code !== "ENOENT") throw error;
795
+ }
796
+ }
797
+
798
+ async function withStateFileLock<T>(stateFile: string, operation: () => Promise<T>): Promise<T> {
799
+ const lockFile = `${stateFile}.lock`;
800
+ const owner: StateFileLockOwner = {
801
+ pid: process.pid,
802
+ start_time: processStartTime(process.pid) ?? "unknown",
803
+ token: randomUUID(),
804
+ };
805
+ await fs.mkdir(path.dirname(stateFile), { recursive: true });
806
+ for (let attempt = 0; attempt < 12_000; attempt++) {
807
+ let handle: fs.FileHandle | undefined;
808
+ try {
809
+ handle = await fs.open(lockFile, "wx");
810
+ try {
811
+ await handle.writeFile(JSON.stringify(owner));
812
+ } catch (error) {
813
+ await handle.close().catch(() => undefined);
814
+ handle = undefined;
815
+ await fs.rm(lockFile, { force: true }).catch(() => undefined);
816
+ throw error;
817
+ }
818
+ const outcome = await operation().then(
819
+ value => ({ ok: true as const, value }),
820
+ error => ({ ok: false as const, error }),
821
+ );
822
+ await handle.close();
823
+ try {
824
+ if ((await fs.readFile(lockFile, "utf8")) === JSON.stringify(owner)) await fs.rm(lockFile);
825
+ } catch (error) {
826
+ if ((error as NodeJS.ErrnoException).code !== "ENOENT") throw error;
827
+ }
828
+ if (!outcome.ok) throw outcome.error;
829
+ return outcome.value;
830
+ } catch (error) {
831
+ if (handle) throw error;
832
+ if ((error as { code?: unknown }).code !== "EEXIST") throw error;
833
+ await reclaimStaleStateFileLock(lockFile);
834
+ await Bun.sleep(5);
835
+ }
836
+ }
837
+ throw new PreviousRuntimeStateReadError();
838
+ }
839
+
840
+ function coordinatorTransactionLockFile(stateFile: string): string {
841
+ return path.resolve(path.dirname(stateFile), "..", "locks", "mutation.lock");
842
+ }
843
+
844
+ async function withCoordinatorTransactionLock<T>(stateFile: string, operation: () => Promise<T>): Promise<T> {
845
+ return await withStateFileLock(coordinatorTransactionLockFile(stateFile), operation);
449
846
  }
450
847
 
451
848
  async function writeStateFile(stateFile: string, payload: Record<string, unknown>): Promise<void> {
@@ -454,110 +851,334 @@ async function writeStateFile(stateFile: string, payload: Record<string, unknown
454
851
  rememberWrittenPayload(stateFile, payload);
455
852
  }
456
853
 
854
+ function contextWithManagedOwnerGeneration(context: RuntimeStateContext): RuntimeStateContext {
855
+ if (context.ownerTerminal) return context;
856
+ const ownerTerminal = ownerTerminalContextFromEnvironment();
857
+ if (ownerTerminal === "invalid") throw new PreviousRuntimeStateReadError();
858
+ return ownerTerminal ? { ...context, ownerTerminal } : context;
859
+ }
860
+
457
861
  export async function persistCoordinatorRuntimeStateFromEvent(
458
862
  event: RuntimeStateEvent,
459
863
  context: RuntimeStateContext,
460
864
  ): Promise<void> {
461
865
  __sessionStateSidecarPerfCounters.persistFromEventCalls += 1;
462
866
  const stateFile = runtimeStateFileForContext(context);
463
- if (!stateFile) return;
464
867
  const state = stateForEvent(event);
465
- if (!state) return;
466
- const nowMs = Date.now();
467
- const now = new Date(nowMs).toISOString();
468
- const previous = await readPreviousPayloadForEvent(stateFile);
469
- const finalResponse = finalResponseForEvent(event);
470
- const sessionId = process.env[SKC_COORDINATOR_SESSION_STATE_FILE_ENV]?.trim()
471
- ? process.env[SKC_COORDINATOR_SESSION_ID_ENV]?.trim() || context.sessionId
472
- : context.sessionId;
473
- const payload = {
474
- ...basePayload({
475
- context,
476
- previous,
477
- state,
478
- now,
479
- source: "agent_session_event",
480
- event: event.type,
481
- reason: null,
482
- sessionId,
483
- }),
484
- ...(state === "completed" || state === "errored" ? { ended_at: now } : {}),
485
- ...(finalResponse ? { final_response: finalResponse } : {}),
486
- ...(state === "errored"
487
- ? {
488
- error: {
489
- code: "agent_error",
490
- message: publicSafeErrorMessage(lastAssistant(event.messages)?.errorMessage ?? "agent_error"),
491
- recoverable: true,
492
- },
493
- }
494
- : {}),
868
+ if (!stateFile || !state) return;
869
+ context = contextWithManagedOwnerGeneration(context);
870
+ const identity = normalizedIdentity(context);
871
+ await serializeStateFileWrite(
872
+ stateFile,
873
+ async () =>
874
+ await withCoordinatorTransactionLock(
875
+ stateFile,
876
+ async () =>
877
+ await withStateFileLock(stateFile, async () => {
878
+ const nowMs = Date.now();
879
+ const now = new Date(nowMs).toISOString();
880
+ const previous = await readPreviousPayloadForEvent(stateFile);
881
+ assertPreviousRuntimeStateIdentity(previous, identity);
882
+ const payload = {
883
+ ...basePayload({
884
+ context,
885
+ previous,
886
+ state,
887
+ now,
888
+ source: "agent_session_event",
889
+ event: event.type,
890
+ reason: null,
891
+ sessionId: identity.sessionId,
892
+ }),
893
+ ...(state === "completed" || state === "errored" ? { ended_at: now } : {}),
894
+ ...(finalResponseForEvent(event) ? { final_response: finalResponseForEvent(event) } : {}),
895
+ ...(state === "errored"
896
+ ? { error: { code: "agent_error", message: "SKC agent reported an error", recoverable: true } }
897
+ : {}),
898
+ };
899
+ if (shouldSkipRuntimeStateWrite(previous, payload, nowMs)) return;
900
+ await writeStateFile(stateFile, payload);
901
+ }),
902
+ ),
903
+ );
904
+ }
905
+
906
+ function ownerTerminalSignal(reason: postmortem.Reason): TerminalSignal {
907
+ if (reason === postmortem.Reason.SIGTERM) return "SIGTERM";
908
+ if (reason === postmortem.Reason.SIGINT) return "SIGINT";
909
+ if (reason === postmortem.Reason.SIGHUP) return "SIGHUP";
910
+ if (reason === postmortem.Reason.EXIT) return "EXIT";
911
+ if (reason === postmortem.Reason.MANUAL) return "MANUAL";
912
+ return "UNKNOWN";
913
+ }
914
+
915
+ function ownerTerminalPayload(verdict: OwnerVerdict, _owner: OwnerTerminalContext): Record<string, unknown> {
916
+ return {
917
+ generation: verdict.generation,
918
+ socket_key: verdict.server_key,
919
+ signal: verdict.signal,
920
+ result: verdict.result,
921
+ classification: verdict.classification,
922
+ observer: verdict.observer,
923
+ observed_at: verdict.observed_at,
924
+ ...(verdict.intent_id ? { intent_id: verdict.intent_id } : {}),
925
+ dedupe_key: verdict.dedupe_key,
495
926
  };
496
- if (state === "completed" || state === "errored") rememberWrittenPayload(stateFile, payload);
497
- try {
498
- if (shouldSkipRuntimeStateWrite(previous, payload, nowMs)) return;
499
- await writeStateFile(stateFile, payload);
500
- } catch (error) {
501
- logger.warn("Failed to persist coordinator runtime state", { error: String(error), stateFile });
927
+ }
928
+
929
+ export function ownerTerminalContextFromEnvironment(): OwnerTerminalContext | "invalid" | null {
930
+ const generation = process.env[SKC_TMUX_OWNER_GENERATION_ENV];
931
+ const stateDir = process.env[SKC_TMUX_OWNER_STATE_DIR_ENV];
932
+ const socketKey = process.env[SKC_TMUX_OWNER_SERVER_KEY_ENV];
933
+ const supplied = [generation, stateDir, socketKey].some(value => value !== undefined);
934
+ const managedLaunch = process.platform === "linux" && process.env.SKC_TMUX_LAUNCHED === "1";
935
+ if (!supplied) return managedLaunch ? "invalid" : null;
936
+ const normalizedGeneration = generation?.trim();
937
+ const normalizedStateDir = stateDir?.trim();
938
+ const normalizedSocketKey = socketKey?.trim();
939
+ if (
940
+ !normalizedGeneration ||
941
+ !normalizedStateDir ||
942
+ !normalizedSocketKey ||
943
+ !/^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/i.test(normalizedGeneration) ||
944
+ !path.isAbsolute(normalizedStateDir) ||
945
+ /[\u0000-\u001f\u007f]/.test(normalizedSocketKey)
946
+ ) {
947
+ return "invalid";
502
948
  }
949
+ return { generation: normalizedGeneration, stateDir: normalizedStateDir, socketKey: normalizedSocketKey };
503
950
  }
504
951
 
505
- export function persistCoordinatorRuntimeStateFromPostmortem(
952
+ async function persistInvalidOwnerTerminalMetadata(
506
953
  reason: postmortem.Reason,
507
954
  context: RuntimeStateContext,
508
- ): void {
509
- const stateFile = runtimeStateFileForContext(context);
510
- if (!stateFile) return;
511
- const sessionId = process.env[SKC_COORDINATOR_SESSION_STATE_FILE_ENV]?.trim()
512
- ? process.env[SKC_COORDINATOR_SESSION_ID_ENV]?.trim() || context.sessionId
513
- : context.sessionId;
514
- const preserveInput = { sessionId, cwd: context.cwd, sessionFile: context.sessionFile };
515
- const cachedTerminal = cachedTerminalPayload(stateFile, preserveInput);
516
- const previous: Record<string, unknown> = cachedTerminal
517
- ? (cachedTerminal as unknown as Record<string, unknown>)
518
- : readPreviousPayload(stateFile);
519
- if (cachedTerminal || shouldPreserveTerminalPayload(previous as RuntimeStateSidecarPayload, preserveInput)) return;
520
- const previousForDetails: RuntimeStateSidecarPayload =
521
- (previous as RuntimeStateSidecarPayload).state === "completed" ||
522
- (previous as RuntimeStateSidecarPayload).state === "errored"
523
- ? { ...(previous as RuntimeStateSidecarPayload), state: "running" }
524
- : (previous as RuntimeStateSidecarPayload);
955
+ stateFile: string,
956
+ sessionId: string,
957
+ previous: Record<string, unknown>,
958
+ ): Promise<void> {
525
959
  const now = new Date().toISOString();
526
- const details = postmortemExitDetails(reason, previousForDetails, context.cwd);
527
- const payload = {
960
+ await writeStateFileSync(stateFile, {
528
961
  ...basePayload({
529
962
  context,
530
963
  previous,
531
- state: details.state,
964
+ state: "errored",
532
965
  now,
533
966
  source: "process_postmortem",
534
- event: "process_exit",
535
- reason: details.reason,
967
+ event: "owner_terminal",
968
+ reason: "owner_metadata_invalid",
536
969
  sessionId,
537
970
  }),
538
971
  ended_at: now,
539
972
  detected_at: now,
540
- exit_kind: details.exitKind,
541
- exit_code: details.exitCode,
542
- signal: details.signal,
543
- ...(details.error ? { error: details.error } : {}),
544
- ...(details.recovery ? { recovery: details.recovery } : {}),
973
+ signal: ownerTerminalSignal(reason),
974
+ error: {
975
+ code: "owner_metadata_invalid",
976
+ message: "SKC managed tmux owner metadata was unavailable or invalid",
977
+ recoverable: true,
978
+ },
979
+ recovery: {
980
+ action: "recover_or_resume_session",
981
+ reason: "managed tmux owner provenance could not be validated",
982
+ },
545
983
  previous_runtime_state: typeof previous.state === "string" ? previous.state : null,
546
- prompt_accepted: details.promptAccepted,
547
- observed_recoverable_worktree_changes: details.observedRecoverableWorktreeChanges,
548
- worktree_baseline_dirty: details.worktreeBaselineDirty,
549
- worktree_changed_since_baseline: details.worktreeChangedSinceBaseline,
550
- };
984
+ });
985
+ }
986
+
987
+ async function operatorDispatchIdForOwner(
988
+ owner: OwnerTerminalContext,
989
+ request: Omit<ObserveTerminalRequest, "operator_dispatch_id">,
990
+ ): Promise<string | undefined> {
551
991
  try {
552
- writeStateFileSync(stateFile, payload);
553
- } catch (error) {
554
- logger.warn("Failed to persist coordinator runtime state during postmortem", { error: String(error), stateFile });
992
+ const intent = JSON.parse(
993
+ await Bun.file(lifecyclePaths(owner.stateDir, request.session_id, owner.generation).intentFile).text(),
994
+ ) as unknown;
995
+ if (!isValidOwnerIntent(intent)) return undefined;
996
+ const dispatchId = owner.operatorDispatchId ?? intent.dispatch_id;
997
+ return isValidOwnerIntent(intent as OwnerIntent, { ...request, operator_dispatch_id: dispatchId })
998
+ ? dispatchId
999
+ : undefined;
1000
+ } catch {
1001
+ return undefined;
555
1002
  }
556
1003
  }
557
1004
 
1005
+ async function persistCoordinatorRuntimeStateFromOwnerTerminalPostmortem(
1006
+ reason: postmortem.Reason,
1007
+ context: RuntimeStateContext,
1008
+ stateFile: string,
1009
+ sessionId: string,
1010
+ previous: Record<string, unknown>,
1011
+ ): Promise<void> {
1012
+ const owner = context.ownerTerminal;
1013
+ if (!owner) return;
1014
+ try {
1015
+ const now = new Date().toISOString();
1016
+ const observation: Omit<ObserveTerminalRequest, "operator_dispatch_id"> = {
1017
+ schema_version: 1,
1018
+ op: "observe_terminal",
1019
+ session_id: sessionId,
1020
+ owner_generation: owner.generation,
1021
+ state_dir: owner.stateDir,
1022
+ socket_key: owner.socketKey,
1023
+ observer: "sidecar",
1024
+ observed_at: now,
1025
+ signal: ownerTerminalSignal(reason),
1026
+ exit_code: numericProcessExitCode(null),
1027
+ exit_kind: String(reason),
1028
+ reason: "process_postmortem",
1029
+ };
1030
+ const operatorDispatchId = await operatorDispatchIdForOwner(owner, observation);
1031
+ const verdict = await observeOwnerTerminal({
1032
+ ...observation,
1033
+ ...(operatorDispatchId ? { operator_dispatch_id: operatorDispatchId } : {}),
1034
+ });
1035
+ const expected = verdict.classification === "expected_operator_shutdown";
1036
+ const state: RuntimeState = expected ? "completed" : "errored";
1037
+ const payload = {
1038
+ ...basePayload({
1039
+ context,
1040
+ previous,
1041
+ state,
1042
+ now,
1043
+ source: "process_postmortem",
1044
+ event: "owner_terminal",
1045
+ reason: verdict.classification,
1046
+ sessionId,
1047
+ }),
1048
+ ended_at: now,
1049
+ detected_at: now,
1050
+ owner_terminal: ownerTerminalPayload(verdict, owner),
1051
+ ...(expected
1052
+ ? {}
1053
+ : {
1054
+ error: {
1055
+ code: verdict.classification,
1056
+ message: "SKC owner terminal verdict requires session recovery",
1057
+ recoverable: true,
1058
+ },
1059
+ recovery: {
1060
+ action: "recover_or_resume_session",
1061
+ reason: "owner terminal verdict was not an expected operator shutdown",
1062
+ },
1063
+ }),
1064
+ previous_runtime_state: typeof previous.state === "string" ? previous.state : null,
1065
+ };
1066
+ await writeStateFileSync(stateFile, payload);
1067
+ } catch {
1068
+ const now = new Date().toISOString();
1069
+ await writeStateFileSync(stateFile, {
1070
+ ...basePayload({
1071
+ context,
1072
+ previous,
1073
+ state: "errored",
1074
+ now,
1075
+ source: "process_postmortem",
1076
+ event: "owner_terminal",
1077
+ reason: "owner_verdict_unavailable",
1078
+ sessionId,
1079
+ }),
1080
+ ended_at: now,
1081
+ detected_at: now,
1082
+ error: {
1083
+ code: "owner_verdict_unavailable",
1084
+ message: "SKC owner terminal verdict was unavailable",
1085
+ recoverable: true,
1086
+ },
1087
+ recovery: {
1088
+ action: "recover_or_resume_session",
1089
+ reason: "owner terminal could not be authoritatively classified",
1090
+ },
1091
+ previous_runtime_state: typeof previous.state === "string" ? previous.state : null,
1092
+ });
1093
+ }
1094
+ }
1095
+
1096
+ export async function persistCoordinatorRuntimeStateFromPostmortem(
1097
+ reason: postmortem.Reason,
1098
+ context: RuntimeStateContext,
1099
+ ): Promise<void> {
1100
+ const stateFile = runtimeStateFileForContext(context);
1101
+ if (!stateFile) return;
1102
+ const identity = normalizedIdentity(context);
1103
+ await serializeStateFileWrite(
1104
+ stateFile,
1105
+ async () =>
1106
+ await withCoordinatorTransactionLock(
1107
+ stateFile,
1108
+ async () =>
1109
+ await withStateFileLock(stateFile, async () => {
1110
+ const previous = readPreviousPayload(stateFile);
1111
+ assertPreviousRuntimeStateIdentity(previous, identity);
1112
+ if (shouldPreserveTerminalPayload(previous as RuntimeStateSidecarPayload, identity)) return;
1113
+ // The immutable owner verdict remains in its lifecycle artifact; never replace a
1114
+ // complete agent terminal payload merely to mirror that verdict here.
1115
+ if (process.platform === "linux" && context.ownerTerminalMetadataInvalid) {
1116
+ await persistInvalidOwnerTerminalMetadata(
1117
+ reason,
1118
+ context,
1119
+ stateFile,
1120
+ identity.sessionId,
1121
+ previous,
1122
+ );
1123
+ return;
1124
+ }
1125
+ if (process.platform === "linux" && context.ownerTerminal) {
1126
+ await persistCoordinatorRuntimeStateFromOwnerTerminalPostmortem(
1127
+ reason,
1128
+ context,
1129
+ stateFile,
1130
+ identity.sessionId,
1131
+ previous,
1132
+ );
1133
+ return;
1134
+ }
1135
+ const previousForDetails: RuntimeStateSidecarPayload =
1136
+ (previous as RuntimeStateSidecarPayload).state === "completed" ||
1137
+ (previous as RuntimeStateSidecarPayload).state === "errored"
1138
+ ? { ...(previous as RuntimeStateSidecarPayload), state: "running" }
1139
+ : (previous as RuntimeStateSidecarPayload);
1140
+ const now = new Date().toISOString();
1141
+ const details = postmortemExitDetails(reason, previousForDetails, identity.cwd);
1142
+ const payload = {
1143
+ ...basePayload({
1144
+ context,
1145
+ previous,
1146
+ state: details.state,
1147
+ now,
1148
+ source: "process_postmortem",
1149
+ event: "process_exit",
1150
+ reason: details.reason,
1151
+ sessionId: identity.sessionId,
1152
+ }),
1153
+ ended_at: now,
1154
+ detected_at: now,
1155
+ exit_kind: details.exitKind,
1156
+ exit_code: details.exitCode,
1157
+ signal: details.signal,
1158
+ ...(details.error ? { error: details.error } : {}),
1159
+ ...(details.recovery ? { recovery: details.recovery } : {}),
1160
+ previous_runtime_state: typeof previous.state === "string" ? previous.state : null,
1161
+ prompt_accepted: details.promptAccepted,
1162
+ observed_recoverable_worktree_changes: details.observedRecoverableWorktreeChanges,
1163
+ worktree_baseline_dirty: details.worktreeBaselineDirty,
1164
+ worktree_changed_since_baseline: details.worktreeChangedSinceBaseline,
1165
+ };
1166
+ await writeStateFileSync(stateFile, payload);
1167
+ }),
1168
+ ),
1169
+ );
1170
+ }
1171
+
558
1172
  export function registerCoordinatorRuntimeStateFinalizer(context: RuntimeStateContext): () => void {
559
1173
  if (!runtimeStateFileForContext(context)) return () => {};
560
- return postmortem.register("coordinator-runtime-state", reason => {
561
- persistCoordinatorRuntimeStateFromPostmortem(reason, context);
1174
+ const ownerTerminal = ownerTerminalContextFromEnvironment();
1175
+ const finalizerContext: RuntimeStateContext =
1176
+ ownerTerminal === "invalid"
1177
+ ? { ...context, ownerTerminalMetadataInvalid: true }
1178
+ : ownerTerminal
1179
+ ? { ...context, ownerTerminal }
1180
+ : context;
1181
+ return postmortem.register("coordinator-runtime-state", async reason => {
1182
+ await persistCoordinatorRuntimeStateFromPostmortem(reason, finalizerContext);
562
1183
  });
563
1184
  }