@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,14 +1,30 @@
1
+ import { Buffer } from "node:buffer";
2
+ import * as crypto from "node:crypto";
3
+ import * as fsSync from "node:fs";
4
+ import * as fs from "node:fs/promises";
5
+ import * as path from "node:path";
1
6
  import { resolveSkcTmuxBinary } from "./psmux-detect";
7
+ import { tmuxRuntimeSessionPath } from "./session-layout";
8
+ import {
9
+ SKC_COORDINATOR_SESSION_ID_ENV,
10
+ SKC_COORDINATOR_SESSION_STATE_FILE_ENV,
11
+ SKC_TMUX_OWNER_GENERATION_ENV,
12
+ SKC_TMUX_OWNER_SERVER_KEY_ENV,
13
+ SKC_TMUX_OWNER_STATE_DIR_ENV,
14
+ } from "./session-state-sidecar";
2
15
  import {
3
16
  buildSkcTmuxExactOptionTarget,
4
17
  buildSkcTmuxExactSessionTarget,
5
18
  buildSkcTmuxProfileCommands,
6
19
  buildSkcTmuxSessionName,
20
+ buildSkcTmuxSessionSlug,
7
21
  buildSkcTmuxUntaggedSessionError,
8
22
  normalizeTmuxCreatedAt,
9
23
  resolveSkcTmuxCommand,
10
24
  SKC_TMUX_BRANCH_OPTION,
11
25
  SKC_TMUX_BRANCH_SLUG_OPTION,
26
+ SKC_TMUX_OWNER_GENERATION_OPTION,
27
+ SKC_TMUX_OWNER_SERVER_KEY_OPTION,
12
28
  SKC_TMUX_PROFILE_OPTION,
13
29
  SKC_TMUX_PROFILE_VALUE,
14
30
  SKC_TMUX_PROJECT_OPTION,
@@ -16,6 +32,23 @@ import {
16
32
  SKC_TMUX_SESSION_STATE_FILE_OPTION,
17
33
  SKC_TMUX_VERSION_OPTION,
18
34
  } from "./tmux-common";
35
+ import {
36
+ captureOwnerGenerationBaselineSync,
37
+ classifyCgroup,
38
+ closeExactTmuxOwner,
39
+ executeTmuxOwnerIsolationPlanSync,
40
+ isOwnerGenerationBaselineCurrentSync,
41
+ isValidOwnerVerdict,
42
+ lifecyclePaths,
43
+ type OwnerIsolationProbeSync,
44
+ type OwnerVerdict,
45
+ type PlanResponse,
46
+ planTmuxOwnerIsolationSync,
47
+ replaceOwnerGenerationSync,
48
+ type TmuxOwnerIsolationExecutionDependencies,
49
+ type TmuxOwnerIsolationExecutionResult,
50
+ type TmuxServerProof,
51
+ } from "./tmux-owner-isolation";
19
52
 
20
53
  export interface SkcTmuxSessionStatus {
21
54
  name: string;
@@ -30,6 +63,9 @@ export interface SkcTmuxSessionStatus {
30
63
  sessionId?: string;
31
64
  sessionStateFile?: string;
32
65
  version?: string;
66
+ ownerGeneration?: string;
67
+ nativeSessionId?: string;
68
+
33
69
  panePids: number[];
34
70
  profile?: string;
35
71
  }
@@ -42,6 +78,9 @@ export interface SkcTmuxSessionTagsForGc {
42
78
  sessionId?: string;
43
79
  sessionStateFile?: string;
44
80
  version?: string;
81
+ ownerGeneration?: string;
82
+ nativeSessionId?: string;
83
+
45
84
  createdAt?: string;
46
85
  attached?: boolean;
47
86
  panePids?: number[];
@@ -52,19 +91,88 @@ export interface SkcTmuxSessionsForGc {
52
91
  untagged: SkcTmuxSessionStatus[];
53
92
  }
54
93
 
94
+ export interface ProvenTmuxSessionIdentity {
95
+ nativeSessionId: string;
96
+ serverPid: number;
97
+ serverStartTime: string;
98
+ }
99
+
100
+ export interface ExpectedSkcTmuxSessionIdentity {
101
+ nativeSessionId: string;
102
+ ownerGeneration: string;
103
+ sessionId: string;
104
+ sessionStateFile: string;
105
+ project: string;
106
+ createdAt: string;
107
+ }
108
+
109
+ export interface ExactOwnerIdentity {
110
+ sessionId: string;
111
+ stateDir: string;
112
+ socketKey: string;
113
+ generation: string;
114
+ pid: number;
115
+ startTime: string;
116
+ }
117
+
118
+ export interface ForceCloseOwnerDependencies {
119
+ resolveOwner(sessionName: string, env: NodeJS.ProcessEnv): Promise<ExactOwnerIdentity>;
120
+ signalTerm(pid: number): void;
121
+ readProcessStartTime(pid: number): Promise<string | null>;
122
+ cleanupSession(sessionTarget: string, env: NodeJS.ProcessEnv): void;
123
+ now(): Date;
124
+ sleep(ms: number): Promise<void>;
125
+ listPanePids(sessionName: string, env: NodeJS.ProcessEnv): number[];
126
+ }
127
+
128
+ const FORCE_CLOSE_VERDICT_TIMEOUT_MS = 5_000;
129
+ const FORCE_CLOSE_VERDICT_POLL_MS = 50;
130
+
131
+ export type CreateOwnerIsolationTestDependencies = {
132
+ probe?: Partial<OwnerIsolationProbeSync>;
133
+ execute?: (plan: PlanResponse, deps: TmuxOwnerIsolationExecutionDependencies) => TmuxOwnerIsolationExecutionResult;
134
+ };
135
+
136
+ let createOwnerIsolationTestDependencies: CreateOwnerIsolationTestDependencies | null = null;
137
+ let mutationServerProofTestDependency: ((tmuxCommand: string, env: NodeJS.ProcessEnv) => unknown) | null = null;
138
+
139
+ /** @internal Test-only seam; production create always uses live fail-closed probes. */
140
+ export function __setCreateOwnerIsolationForTests(dependencies: CreateOwnerIsolationTestDependencies | null): void {
141
+ createOwnerIsolationTestDependencies = dependencies;
142
+ }
143
+
144
+ /** @internal Test-only seam; production mutations always use live fail-closed proofs. */
145
+ export function __setMutationServerProofForTests(
146
+ dependency: ((tmuxCommand: string, env: NodeJS.ProcessEnv) => unknown) | null,
147
+ ): void {
148
+ mutationServerProofTestDependency = dependency;
149
+ }
150
+
55
151
  function runTmux(args: string[], env: NodeJS.ProcessEnv = process.env): string {
56
152
  const tmuxCommand = resolveSkcTmuxCommand(env);
57
- const result = Bun.spawnSync([tmuxCommand, ...args], { stdout: "pipe", stderr: "pipe", env });
153
+ const result = Bun.spawnSync([tmuxCommand, ...args], {
154
+ stdout: "pipe",
155
+ stderr: "pipe",
156
+ env,
157
+ });
58
158
  if (result.exitCode === 0) return result.stdout.toString();
59
159
  throw new Error(result.stderr.toString().trim() || `tmux ${args.join(" ")} failed`);
60
160
  }
161
+ function normalizeExactTmuxTarget(sessionTarget: string, env: NodeJS.ProcessEnv, kind: "session" | "option"): string {
162
+ if (sessionTarget.startsWith("$")) return sessionTarget;
163
+ return kind === "option"
164
+ ? buildSkcTmuxExactOptionTarget(sessionTarget, { env })
165
+ : buildSkcTmuxExactSessionTarget(sessionTarget, { env });
166
+ }
61
167
 
62
- function tryKillSession(sessionName: string, env: NodeJS.ProcessEnv): void {
63
- try {
64
- runTmux(["kill-session", "-t", buildSkcTmuxExactSessionTarget(sessionName, { env })], env);
65
- } catch {
66
- // Best-effort cleanup only; preserve the original create/tag failure.
67
- }
168
+ function readExactSessionPanePids(sessionName: string, env: NodeJS.ProcessEnv): number[] {
169
+ return runTmux(
170
+ ["list-panes", "-s", "-t", normalizeExactTmuxTarget(sessionName, env, "session"), "-F", "#{pane_pid}"],
171
+ env,
172
+ )
173
+ .split("\n")
174
+ .map(value => Number.parseInt(value.trim(), 10))
175
+ .filter(pid => Number.isSafeInteger(pid) && pid > 0);
68
176
  }
69
177
 
70
178
  function parseBooleanFlag(value: string | undefined): boolean {
@@ -91,8 +199,11 @@ function parseSessionLine(line: string): SkcTmuxSessionStatus | null {
91
199
  project = "",
92
200
  sessionId = "",
93
201
  sessionStateFile = "",
202
+ ownerGeneration = "",
94
203
  version = "",
204
+ nativeSessionId = "",
95
205
  ] = line.split("\t");
206
+
96
207
  if (!name) return null;
97
208
  return {
98
209
  name,
@@ -112,6 +223,8 @@ function parseSessionLine(line: string): SkcTmuxSessionStatus | null {
112
223
  sessionId: sessionId || undefined,
113
224
  sessionStateFile: sessionStateFile || undefined,
114
225
  version: version || undefined,
226
+ ownerGeneration: ownerGeneration || undefined,
227
+ nativeSessionId: nativeSessionId || undefined,
115
228
  };
116
229
  }
117
230
 
@@ -148,7 +261,8 @@ function runListSessions(format: string, env: NodeJS.ProcessEnv = process.env):
148
261
  if (!match) return line;
149
262
  const [, name, windows, created] = match;
150
263
  const createdEpoch = String(Math.floor(new Date(`${created} UTC`).getTime() / 1000) || 0);
151
- return [name, windows, "0", createdEpoch, "", "", "0", "", "", "", "", "", "", ""].join("\t");
264
+
265
+ return [name, windows, "0", createdEpoch, "", "", "0", "", "", "", "", "", "", "", "", ""].join("\t");
152
266
  });
153
267
  }
154
268
  }
@@ -157,7 +271,8 @@ function runListSessions(format: string, env: NodeJS.ProcessEnv = process.env):
157
271
 
158
272
  function listSessionLines(env: NodeJS.ProcessEnv = process.env): string[] {
159
273
  return runListSessions(
160
- `#{session_name}\t#{session_windows}\t#{session_attached}\t#{session_created}\t#{${SKC_TMUX_PROFILE_OPTION}}\t#{session_key_table}\t#{session_panes}\t#{pane_pid}\t#{${SKC_TMUX_BRANCH_OPTION}}\t#{${SKC_TMUX_BRANCH_SLUG_OPTION}}\t#{${SKC_TMUX_PROJECT_OPTION}}\t#{${SKC_TMUX_SESSION_ID_OPTION}}\t#{${SKC_TMUX_SESSION_STATE_FILE_OPTION}}\t#{${SKC_TMUX_VERSION_OPTION}}`,
274
+ `#{session_name}\t#{session_windows}\t#{session_attached}\t#{session_created}\t#{${SKC_TMUX_PROFILE_OPTION}}\t#{session_key_table}\t#{session_panes}\t#{pane_pid}\t#{${SKC_TMUX_BRANCH_OPTION}}\t#{${SKC_TMUX_BRANCH_SLUG_OPTION}}\t#{${SKC_TMUX_PROJECT_OPTION}}\t#{${SKC_TMUX_SESSION_ID_OPTION}}\t#{${SKC_TMUX_SESSION_STATE_FILE_OPTION}}\t#{${SKC_TMUX_OWNER_GENERATION_OPTION}}\t#{${SKC_TMUX_VERSION_OPTION}}\t#{session_id}`,
275
+
161
276
  env,
162
277
  );
163
278
  }
@@ -242,40 +357,443 @@ export function statusSkcTmuxSession(sessionName: string, env: NodeJS.ProcessEnv
242
357
  export function createSkcTmuxSession(env: NodeJS.ProcessEnv = process.env): SkcTmuxSessionStatus {
243
358
  const tmuxCommand = resolveSkcTmuxCommand(env);
244
359
  const sessionName = buildSkcTmuxSessionName(env);
245
- // Build a shell-bootstrap command appropriate for the host shell. Psmux on
246
- // Windows runs the new-session command through PowerShell, so we use the
247
- // $env:VAR = ... assignment form there. POSIX keeps the historical exec
248
- // env form so the launched skc inherits SKC_TMUX_LAUNCHED without leaking
249
- // into the parent tmux server.
250
- const platform = process.platform;
251
- const command = platform === "win32" ? "$env:SKC_TMUX_LAUNCHED = '1'; skc" : "exec env SKC_TMUX_LAUNCHED=1 skc";
252
- const created = Bun.spawnSync([tmuxCommand, "new-session", "-d", "-s", sessionName, command], {
360
+ const cwd = process.cwd();
361
+ const sessionId = env[SKC_COORDINATOR_SESSION_ID_ENV]?.trim() || sessionName;
362
+ const stateFile =
363
+ env[SKC_COORDINATOR_SESSION_STATE_FILE_ENV]?.trim() ||
364
+ tmuxRuntimeSessionPath(cwd, env.SKC_SESSION_ID?.trim() || sessionId, buildSkcTmuxSessionSlug(sessionName));
365
+ const stateDir = path.dirname(stateFile);
366
+ const generation = crypto.randomUUID();
367
+ const childEnvironment: Record<string, string> = {
368
+ SKC_TMUX_LAUNCHED: "1",
369
+ [SKC_TMUX_OWNER_GENERATION_ENV]: generation,
370
+ [SKC_TMUX_OWNER_STATE_DIR_ENV]: stateDir,
371
+ [SKC_TMUX_OWNER_SERVER_KEY_ENV]: tmuxCommand,
372
+ [SKC_COORDINATOR_SESSION_ID_ENV]: sessionId,
373
+ [SKC_COORDINATOR_SESSION_STATE_FILE_ENV]: stateFile,
374
+ };
375
+ const shellQuote = (value: string): string => `'${value.replace(/'/g, `'\\''`)}'`;
376
+ const powershellQuote = (value: string): string => `'${value.replace(/'/g, "''")}'`;
377
+ const command =
378
+ process.platform === "win32"
379
+ ? `${Object.entries(childEnvironment)
380
+ .map(([name, value]) => `$env:${name} = ${powershellQuote(value)}`)
381
+ .join("; ")}; skc`
382
+ : `exec env ${Object.entries(childEnvironment)
383
+ .map(([name, value]) => `${name}=${shellQuote(value)}`)
384
+ .join(" ")} skc`;
385
+ const tmuxArgv = [
386
+ tmuxCommand,
387
+ "new-session",
388
+ "-d",
389
+ "-s",
390
+ sessionName,
391
+ ...(process.platform === "win32" ? [] : ["-P", "-F", "#{session_id}"]),
392
+ command,
393
+ ];
394
+ function probeTmuxServer(tmuxCommand: string, env: NodeJS.ProcessEnv): TmuxServerProof {
395
+ if (process.platform !== "linux") {
396
+ return {
397
+ state: "safe",
398
+ pid: 1,
399
+ startTime: "not-applicable",
400
+ cgroup: { classification: "not_applicable" },
401
+ };
402
+ }
403
+ const result = Bun.spawnSync([tmuxCommand, "display-message", "-p", "#{pid}"], {
404
+ stdout: "pipe",
405
+ stderr: "pipe",
406
+ env,
407
+ });
408
+ if (result.exitCode !== 0) {
409
+ const diagnostic = result.stderr.toString();
410
+ return /no server running|failed to connect|error connecting/.test(diagnostic)
411
+ ? { state: "absent" }
412
+ : { state: "unverifiable" };
413
+ }
414
+ const pid = Number(result.stdout.toString().trim());
415
+ if (!Number.isSafeInteger(pid) || pid <= 0) return { state: "unverifiable" };
416
+ try {
417
+ const stat = fsSync.readFileSync(`/proc/${pid}/stat`, "utf8");
418
+ const startTime = stat
419
+ .slice(stat.lastIndexOf(")") + 2)
420
+ .trim()
421
+ .split(/\s+/)[19];
422
+ if (!startTime) return { state: "unverifiable" };
423
+ const cgroup = classifyCgroup({
424
+ platform: process.platform,
425
+ cgroupText: fsSync.readFileSync(`/proc/${pid}/cgroup`, "utf8"),
426
+ });
427
+ return {
428
+ state:
429
+ cgroup.classification === "safe"
430
+ ? "safe"
431
+ : cgroup.classification === "unsafe_service"
432
+ ? "unsafe"
433
+ : "unverifiable",
434
+ pid,
435
+ startTime,
436
+ cgroup,
437
+ };
438
+ } catch {
439
+ return { state: "unverifiable" };
440
+ }
441
+ }
442
+
443
+ const probeServer = () => probeTmuxServer(tmuxCommand, env);
444
+
445
+ const testOwnerProbe = createOwnerIsolationTestDependencies?.probe;
446
+ const ownerProbe: OwnerIsolationProbeSync = {
447
+ readCallerCgroup:
448
+ testOwnerProbe?.readCallerCgroup ??
449
+ (() => {
450
+ try {
451
+ return fsSync.readFileSync("/proc/self/cgroup", "utf8");
452
+ } catch {
453
+ return null;
454
+ }
455
+ }),
456
+ probeServer: testOwnerProbe?.probeServer ?? probeServer,
457
+ recordAttempt:
458
+ testOwnerProbe?.recordAttempt ??
459
+ (({ attempt }) => {
460
+ const root = lifecyclePaths(stateDir, sessionId, generation).root;
461
+ const attemptFile = path.join(root, `attempt-${attempt.token}.json`);
462
+ fsSync.mkdirSync(root, { recursive: true, mode: 0o700 });
463
+ const descriptor = fsSync.openSync(attemptFile, "wx", 0o600);
464
+ try {
465
+ fsSync.writeFileSync(
466
+ descriptor,
467
+ `${JSON.stringify({
468
+ schema_version: 1,
469
+ generation,
470
+ session_id: sessionId,
471
+ ...attempt,
472
+ created_at: new Date().toISOString(),
473
+ })}\n`,
474
+ );
475
+ fsSync.fsyncSync(descriptor);
476
+ } finally {
477
+ fsSync.closeSync(descriptor);
478
+ }
479
+ const directory = fsSync.openSync(root, "r");
480
+ try {
481
+ fsSync.fsyncSync(directory);
482
+ } finally {
483
+ fsSync.closeSync(directory);
484
+ }
485
+ }),
486
+ };
487
+ if (resolveSkcTmuxBinary({ env }).isPsmux)
488
+ throw new Error("skc_tmux_owner_isolation_native_session_identity_unavailable");
489
+
490
+ const baseline = captureOwnerGenerationBaselineSync(stateDir, sessionId);
491
+ const ownerPlan = planTmuxOwnerIsolationSync(
492
+ {
493
+ schema_version: 1,
494
+ op: "plan",
495
+ platform: process.platform,
496
+ session_id: sessionId,
497
+ owner_generation: generation,
498
+ baseline,
499
+ cwd,
500
+ state_dir: stateDir,
501
+ socket_key: tmuxCommand,
502
+ tmux_argv: tmuxArgv,
503
+ },
504
+ ownerProbe,
505
+ );
506
+ if (!ownerPlan.ok) throw new Error(`skc_tmux_owner_isolation_${ownerPlan.code}:${ownerPlan.diagnostic}`);
507
+
508
+ const outcome = (createOwnerIsolationTestDependencies?.execute ?? executeTmuxOwnerIsolationPlanSync)(ownerPlan, {
509
+ socketKey: tmuxCommand,
510
+ spawn: (argv, stdinLine) => {
511
+ const result = stdinLine
512
+ ? Bun.spawnSync(argv, {
513
+ stdout: "pipe",
514
+ stderr: "pipe",
515
+ stdin: Buffer.from(stdinLine),
516
+ env,
517
+ })
518
+ : Bun.spawnSync(argv, { stdout: "pipe", stderr: "pipe", env });
519
+ return { exitCode: result.exitCode, stdout: result.stdout.toString() };
520
+ },
521
+ probeServer: ownerProbe.probeServer,
522
+ isCurrentGeneration: () => isOwnerGenerationBaselineCurrentSync(stateDir, sessionId, baseline),
523
+ cleanupSpawned: ({ execution, nativeSessionId, server }) => {
524
+ if (!server.pid || !server.startTime) throw new Error("skc_tmux_cleanup_target_changed");
525
+ cleanupExactCreatedTmuxSession(
526
+ nativeSessionId,
527
+ execution.attempt_session,
528
+ tmuxCommand,
529
+ env,
530
+ server.pid,
531
+ server.startTime,
532
+ );
533
+ },
534
+ });
535
+ if (!outcome.ok) throw new Error(`skc_tmux_owner_isolation_${outcome.code}:${outcome.diagnostic}`);
536
+
537
+ const nativeSessionId = outcome.native_session_id;
538
+ if (!nativeSessionId) throw new Error("skc_tmux_owner_isolation_native_session_identity_unavailable");
539
+ const server = requireSafeTmuxServerForMutation(tmuxCommand, env);
540
+ if (server.pid !== outcome.server_pid || server.startTime !== outcome.server_start_time)
541
+ throw new Error("skc_tmux_owner_changed_after_create");
542
+ if (!isNativeTmuxSessionBoundToName(nativeSessionId, sessionName, env))
543
+ throw new Error("skc_tmux_owner_changed_after_create");
544
+
545
+ try {
546
+ tagCreatedTmuxSession(
547
+ nativeSessionId,
548
+ sessionName,
549
+ outcome.server_pid,
550
+ env,
551
+ {
552
+ sessionId,
553
+ sessionStateFile: stateFile,
554
+ ownerGeneration: generation,
555
+ ownerServerKey: tmuxCommand,
556
+ version: env.npm_package_version ?? null,
557
+ },
558
+ tmuxCommand,
559
+ );
560
+ } catch (tagError) {
561
+ try {
562
+ cleanupExactCreatedTmuxSession(
563
+ nativeSessionId,
564
+ sessionName,
565
+ tmuxCommand,
566
+ env,
567
+ outcome.server_pid,
568
+ outcome.server_start_time,
569
+ );
570
+ } catch (cleanupError) {
571
+ throw new AggregateError([tagError, cleanupError], "skc_tmux_profile_tag_failed_cleanup_failed");
572
+ }
573
+ throw tagError;
574
+ }
575
+
576
+ if (nativeSessionId) {
577
+ const firstServer = requireSafeTmuxServerForMutation(tmuxCommand, env);
578
+ if (firstServer.pid !== outcome.server_pid || firstServer.startTime !== outcome.server_start_time)
579
+ throw new Error("skc_tmux_owner_changed_after_create");
580
+ const status = statusSkcTmuxSessionByNativeId(nativeSessionId, env);
581
+ const finalServer = requireSafeTmuxServerForMutation(tmuxCommand, env);
582
+ if (finalServer.pid !== firstServer.pid || finalServer.startTime !== firstServer.startTime)
583
+ throw new Error("skc_tmux_owner_changed_after_create");
584
+ try {
585
+ replaceOwnerGenerationSync(stateDir, sessionId, generation, baseline);
586
+ } catch (publicationError) {
587
+ try {
588
+ cleanupExactCreatedTmuxSession(
589
+ nativeSessionId,
590
+ sessionName,
591
+ tmuxCommand,
592
+ env,
593
+ outcome.server_pid,
594
+ outcome.server_start_time,
595
+ );
596
+ } catch (cleanupError) {
597
+ throw new AggregateError(
598
+ [publicationError, cleanupError],
599
+ "skc_tmux_owner_generation_publish_failed_cleanup_failed",
600
+ );
601
+ }
602
+ throw publicationError;
603
+ }
604
+ return status;
605
+ }
606
+ try {
607
+ replaceOwnerGenerationSync(stateDir, sessionId, generation, baseline);
608
+ } catch (publicationError) {
609
+ try {
610
+ cleanupExactCreatedTmuxSession(
611
+ nativeSessionId,
612
+ sessionName,
613
+ tmuxCommand,
614
+ env,
615
+ outcome.server_pid,
616
+ outcome.server_start_time,
617
+ );
618
+ } catch (cleanupError) {
619
+ throw new AggregateError(
620
+ [publicationError, cleanupError],
621
+ "skc_tmux_owner_generation_publish_failed_cleanup_failed",
622
+ );
623
+ }
624
+ throw publicationError;
625
+ }
626
+ return statusSkcTmuxSession(sessionName, env);
627
+ }
628
+
629
+ function statusSkcTmuxSessionByNativeId(nativeSessionId: string, env: NodeJS.ProcessEnv): SkcTmuxSessionStatus {
630
+ const name = runTmux(
631
+ ["display-message", "-p", "-t", normalizeExactTmuxTarget(nativeSessionId, env, "option"), "#{session_name}"],
632
+ env,
633
+ ).trim();
634
+ if (!name || readNativeTmuxSessionId(nativeSessionId, env) !== nativeSessionId)
635
+ throw new Error(`skc_tmux_owner_changed:${nativeSessionId}`);
636
+ return statusSkcTmuxSession(name, env);
637
+ }
638
+
639
+ function tmuxCommandArgument(value: string): string {
640
+ return `"${value.replaceAll("\\", "\\\\").replaceAll('"', '\\"').replaceAll("$", "\\$").replaceAll("`", "\\`")}"`;
641
+ }
642
+
643
+ function guardedTmuxSessionPredicate(
644
+ expectedPid: number,
645
+ nativeSessionId: string,
646
+ sessionName: string,
647
+ expectedOwnerGeneration?: string,
648
+ ): string {
649
+ const ownerGenerationPredicate = expectedOwnerGeneration
650
+ ? `#{==:#{${SKC_TMUX_OWNER_GENERATION_OPTION}},${expectedOwnerGeneration}}`
651
+ : "1";
652
+ return `#{&&:#{==:#{pid},${expectedPid}},#{&&:#{==:#{session_id},${nativeSessionId}},#{&&:#{==:#{session_name},${sessionName}},${ownerGenerationPredicate}}}}`;
653
+ }
654
+
655
+ function runGuardedTmuxSessionCommand(
656
+ nativeSessionId: string,
657
+ sessionName: string,
658
+ expectedPid: number,
659
+ env: NodeJS.ProcessEnv,
660
+ thenCommand: string,
661
+ expectedOwnerGeneration?: string,
662
+ ): void {
663
+ const result = runTmux(
664
+ [
665
+ "if-shell",
666
+ "-t",
667
+ normalizeExactTmuxTarget(nativeSessionId, env, "session"),
668
+ "-F",
669
+ guardedTmuxSessionPredicate(expectedPid, nativeSessionId, sessionName, expectedOwnerGeneration),
670
+ `${thenCommand} ; display-message -p __skc_tmux_guarded_mutation_ok__`,
671
+ "display-message -p __skc_tmux_guarded_mutation_refused__",
672
+ ],
673
+ env,
674
+ ).trim();
675
+ if (result !== "__skc_tmux_guarded_mutation_ok__") throw new Error("skc_tmux_cleanup_target_changed");
676
+ }
677
+
678
+ function tagCreatedTmuxSession(
679
+ nativeSessionId: string,
680
+ sessionName: string,
681
+ expectedPid: number,
682
+ env: NodeJS.ProcessEnv,
683
+ metadata: {
684
+ branch?: string | null;
685
+ branchSlug?: string | null;
686
+ project?: string | null;
687
+ sessionId?: string | null;
688
+ sessionStateFile?: string | null;
689
+ ownerGeneration?: string | null;
690
+ ownerServerKey?: string | null;
691
+ version?: string | null;
692
+ },
693
+ tmuxCommand: string,
694
+ ): void {
695
+ const target = `${nativeSessionId}:`;
696
+ const commands = buildSkcTmuxProfileCommands(target, env, metadata, { tmuxCommand })
697
+ .map(command => command.args.map(tmuxCommandArgument).join(" "))
698
+ .join(" ; ");
699
+ runGuardedTmuxSessionCommand(nativeSessionId, sessionName, expectedPid, env, commands);
700
+ }
701
+
702
+ function cleanupExactCreatedTmuxSession(
703
+ nativeSessionId: string,
704
+ sessionName: string,
705
+ tmuxCommand: string,
706
+ env: NodeJS.ProcessEnv,
707
+ expectedPid: number,
708
+ expectedStartTime: string,
709
+ ): void {
710
+ const server = requireSafeTmuxServerForMutation(tmuxCommand, env);
711
+ if (server.pid !== expectedPid || server.startTime !== expectedStartTime)
712
+ throw new Error("skc_tmux_cleanup_target_changed");
713
+ runGuardedTmuxSessionCommand(
714
+ nativeSessionId,
715
+ sessionName,
716
+ expectedPid,
717
+ env,
718
+ `kill-session -t ${tmuxCommandArgument(normalizeExactTmuxTarget(nativeSessionId, env, "session"))}`,
719
+ );
720
+ }
721
+
722
+ function requireSafeTmuxServerForMutation(
723
+ tmuxCommand: string,
724
+ env: NodeJS.ProcessEnv,
725
+ ): { pid: number; startTime: string } {
726
+ if (mutationServerProofTestDependency) {
727
+ const proof = mutationServerProofTestDependency(tmuxCommand, env);
728
+ if (
729
+ proof &&
730
+ typeof proof === "object" &&
731
+ Number.isSafeInteger((proof as { pid?: unknown }).pid) &&
732
+ typeof (proof as { startTime?: unknown }).startTime === "string"
733
+ )
734
+ return proof as { pid: number; startTime: string };
735
+ return { pid: 1, startTime: "test" };
736
+ }
737
+ if (process.platform !== "linux") return { pid: 1, startTime: "not-applicable" };
738
+ const result = Bun.spawnSync([tmuxCommand, "display-message", "-p", "#{pid}"], {
253
739
  stdout: "pipe",
254
740
  stderr: "pipe",
255
741
  env,
256
742
  });
257
- if (created.exitCode !== 0) throw new Error(created.stderr.toString().trim() || "skc_tmux_session_create_failed");
743
+ if (result.exitCode !== 0) throw new Error("skc_tmux_owner_isolation_server_unverifiable");
744
+ const pid = Number(result.stdout.toString().trim());
745
+ if (!Number.isSafeInteger(pid) || pid <= 0) throw new Error("skc_tmux_owner_isolation_server_unverifiable");
258
746
  try {
259
- // psmux 3.3.0 rejects the tmux `=NAME` exact-session prefix for option
260
- // commands, so the target is the bare session name on psmux and the
261
- // window-qualified `=NAME:` on tmux. The ownership-tag round-trip
262
- // (set-option @skc-*) is preserved on both; only the UX profile commands
263
- // (mouse / set-clipboard / mode-style / set-window-option) get filtered
264
- // by buildSkcTmuxProfileCommands when the active binary is psmux.
265
- const target = buildSkcTmuxExactOptionTarget(sessionName, { env });
266
- for (const profileCommand of buildSkcTmuxProfileCommands(target, env, {}, { tmuxCommand })) {
267
- runTmux(profileCommand.args, env);
268
- }
747
+ const stat = fsSync.readFileSync(`/proc/${pid}/stat`, "utf8");
748
+ const startTime = stat
749
+ .slice(stat.lastIndexOf(")") + 2)
750
+ .trim()
751
+ .split(/\s+/)[19];
752
+ const cgroup = classifyCgroup({
753
+ platform: process.platform,
754
+ cgroupText: fsSync.readFileSync(`/proc/${pid}/cgroup`, "utf8"),
755
+ });
756
+ if (!startTime || cgroup.classification !== "safe")
757
+ throw new Error(
758
+ `skc_tmux_owner_isolation_${cgroup.classification === "unsafe_service" ? "server_unsafe" : "server_unverifiable"}`,
759
+ );
760
+ return { pid, startTime };
269
761
  } catch (error) {
270
- tryKillSession(sessionName, env);
271
- throw error;
762
+ if (error instanceof Error && error.message.startsWith("skc_tmux_owner_isolation_")) throw error;
763
+ throw new Error("skc_tmux_owner_isolation_server_unverifiable");
272
764
  }
273
- return statusSkcTmuxSession(sessionName, env);
765
+ }
766
+
767
+ /** Proves a managed reusable name still resolves to one immutable session on one server. */
768
+ export function proveSkcTmuxSessionMutationTarget(
769
+ sessionName: string,
770
+ env: NodeJS.ProcessEnv = process.env,
771
+ ): ProvenTmuxSessionIdentity {
772
+ const session = statusSkcTmuxSession(sessionName, env);
773
+ if (readProfileForExactTarget(session.name, env) !== SKC_TMUX_PROFILE_VALUE)
774
+ throw new Error(`skc_tmux_session_not_managed:${sessionName}`);
775
+ const firstServer = requireSafeTmuxServerForMutation(resolveSkcTmuxCommand(env), env);
776
+ if (resolveSkcTmuxBinary({ env }).isPsmux) throw new Error(`skc_tmux_owner_unverifiable:${sessionName}`);
777
+ const nativeSessionId = readNativeTmuxSessionId(session.name, env);
778
+ if (!nativeSessionId) throw new Error(`skc_tmux_owner_unverifiable:${sessionName}`);
779
+ if (
780
+ readNativeTmuxSessionId(nativeSessionId, env) !== nativeSessionId ||
781
+ readProfileForExactTarget(nativeSessionId, env) !== SKC_TMUX_PROFILE_VALUE
782
+ )
783
+ throw new Error(`skc_tmux_owner_changed:${sessionName}`);
784
+ const finalServer = requireSafeTmuxServerForMutation(resolveSkcTmuxCommand(env), env);
785
+ if (finalServer.pid !== firstServer.pid || finalServer.startTime !== firstServer.startTime)
786
+ throw new Error(`skc_tmux_owner_changed:${sessionName}`);
787
+ return {
788
+ nativeSessionId,
789
+ serverPid: finalServer.pid,
790
+ serverStartTime: finalServer.startTime,
791
+ };
274
792
  }
275
793
 
276
794
  function readProfileForExactTarget(sessionName: string, env: NodeJS.ProcessEnv): string {
277
795
  const raw = runTmux(
278
- ["show-options", "-qv", "-t", buildSkcTmuxExactOptionTarget(sessionName, { env }), SKC_TMUX_PROFILE_OPTION],
796
+ ["show-options", "-qv", "-t", normalizeExactTmuxTarget(sessionName, env, "option"), SKC_TMUX_PROFILE_OPTION],
279
797
  env,
280
798
  ).trim();
281
799
  // tmux returns just the value; psmux returns `key value`. Strip the
@@ -291,7 +809,7 @@ function readProfileForExactTarget(sessionName: string, env: NodeJS.ProcessEnv):
291
809
  function readExactOptionForGc(sessionName: string, option: string, env: NodeJS.ProcessEnv): string | undefined {
292
810
  try {
293
811
  const raw = runTmux(
294
- ["show-options", "-qv", "-t", buildSkcTmuxExactOptionTarget(sessionName, { env }), option],
812
+ ["show-options", "-qv", "-t", normalizeExactTmuxTarget(sessionName, env, "option"), option],
295
813
  env,
296
814
  ).trim();
297
815
  if (!raw) return undefined;
@@ -316,6 +834,38 @@ function readExactOptionForGc(sessionName: string, option: string, env: NodeJS.P
316
834
  }
317
835
  }
318
836
 
837
+ function readNativeTmuxSessionId(sessionTarget: string, env: NodeJS.ProcessEnv): string | undefined {
838
+ if (resolveSkcTmuxBinary({ env }).isPsmux) return undefined;
839
+ try {
840
+ const sessionId = runTmux(
841
+ ["display-message", "-p", "-t", normalizeExactTmuxTarget(sessionTarget, env, "option"), "#{session_id}"],
842
+ env,
843
+ ).trim();
844
+ return sessionId || undefined;
845
+ } catch {
846
+ return undefined;
847
+ }
848
+ }
849
+
850
+ function isNativeTmuxSessionBoundToName(nativeSessionId: string, sessionName: string, env: NodeJS.ProcessEnv): boolean {
851
+ try {
852
+ return (
853
+ runTmux(
854
+ [
855
+ "display-message",
856
+ "-p",
857
+ "-t",
858
+ normalizeExactTmuxTarget(sessionName, env, "option"),
859
+ "#{session_id}\t#{session_name}",
860
+ ],
861
+ env,
862
+ ).trim() === `${nativeSessionId}\t${sessionName}`
863
+ );
864
+ } catch {
865
+ return false;
866
+ }
867
+ }
868
+
319
869
  function hydrateSessionFromExactOptions(session: SkcTmuxSessionStatus, env: NodeJS.ProcessEnv): SkcTmuxSessionStatus {
320
870
  if (session.profile === SKC_TMUX_PROFILE_VALUE) return session;
321
871
  const profile = readExactOptionForGc(session.name, SKC_TMUX_PROFILE_OPTION, env);
@@ -329,6 +879,9 @@ function hydrateSessionFromExactOptions(session: SkcTmuxSessionStatus, env: Node
329
879
  sessionId: session.sessionId ?? readExactOptionForGc(session.name, SKC_TMUX_SESSION_ID_OPTION, env),
330
880
  sessionStateFile:
331
881
  session.sessionStateFile ?? readExactOptionForGc(session.name, SKC_TMUX_SESSION_STATE_FILE_OPTION, env),
882
+ ownerGeneration:
883
+ session.ownerGeneration ?? readExactOptionForGc(session.name, SKC_TMUX_OWNER_GENERATION_OPTION, env),
884
+
332
885
  version: session.version ?? readExactOptionForGc(session.name, SKC_TMUX_VERSION_OPTION, env),
333
886
  };
334
887
  }
@@ -347,71 +900,321 @@ export function readTmuxSessionTagsForGc(
347
900
  sessionId: readExactOptionForGc(sessionName, SKC_TMUX_SESSION_ID_OPTION, env),
348
901
  sessionStateFile: readExactOptionForGc(sessionName, SKC_TMUX_SESSION_STATE_FILE_OPTION, env),
349
902
  version: readExactOptionForGc(sessionName, SKC_TMUX_VERSION_OPTION, env),
903
+ ownerGeneration: readExactOptionForGc(sessionName, SKC_TMUX_OWNER_GENERATION_OPTION, env),
904
+ nativeSessionId: session?.nativeSessionId,
350
905
  createdAt: session?.createdAt,
351
906
  attached: session?.attached,
352
907
  panePids: session?.panePids,
353
908
  };
354
909
  }
355
910
 
356
- export function removeSkcTmuxSession(sessionName: string, env: NodeJS.ProcessEnv = process.env): SkcTmuxSessionStatus {
911
+ export function removeSkcTmuxSession(
912
+ sessionName: string,
913
+ env: NodeJS.ProcessEnv = process.env,
914
+ expectedIdentity?: ExpectedSkcTmuxSessionIdentity,
915
+ ): SkcTmuxSessionStatus {
357
916
  const session = statusSkcTmuxSession(sessionName, env);
358
917
  if (session.attached || session.panePids.length > 0) {
359
918
  throw new Error(`skc_tmux_session_live:${sessionName}`);
360
919
  }
920
+ if (
921
+ expectedIdentity &&
922
+ (session.nativeSessionId !== expectedIdentity.nativeSessionId ||
923
+ session.ownerGeneration !== expectedIdentity.ownerGeneration ||
924
+ session.sessionId !== expectedIdentity.sessionId ||
925
+ session.sessionStateFile !== expectedIdentity.sessionStateFile ||
926
+ session.project !== expectedIdentity.project ||
927
+ session.createdAt !== expectedIdentity.createdAt)
928
+ )
929
+ throw new Error(`skc_tmux_owner_changed:${sessionName}`);
361
930
  if (readProfileForExactTarget(session.name, env) !== SKC_TMUX_PROFILE_VALUE) {
362
931
  throw new Error(`skc_tmux_session_not_managed:${sessionName}`);
363
932
  }
364
- runTmux(["kill-session", "-t", buildSkcTmuxExactSessionTarget(session.name, { env })], env);
933
+ if (resolveSkcTmuxBinary({ env }).isPsmux) throw new Error(`skc_tmux_owner_unverifiable:${sessionName}`);
934
+ const nativeSessionId = readNativeTmuxSessionId(session.name, env);
935
+ if (!nativeSessionId) throw new Error(`skc_tmux_owner_unverifiable:${sessionName}`);
936
+ if (expectedIdentity && nativeSessionId !== expectedIdentity.nativeSessionId)
937
+ throw new Error(`skc_tmux_owner_changed:${sessionName}`);
938
+ if (
939
+ expectedIdentity &&
940
+ readExactOptionForGc(session.name, SKC_TMUX_OWNER_GENERATION_OPTION, env) !== expectedIdentity.ownerGeneration
941
+ )
942
+ throw new Error(`skc_tmux_owner_changed:${sessionName}`);
943
+ const firstServer = requireSafeTmuxServerForMutation(resolveSkcTmuxCommand(env), env);
944
+ if (
945
+ readNativeTmuxSessionId(nativeSessionId, env) !== nativeSessionId ||
946
+ readProfileForExactTarget(nativeSessionId, env) !== SKC_TMUX_PROFILE_VALUE
947
+ )
948
+ throw new Error(`skc_tmux_owner_changed:${sessionName}`);
949
+ const finalServer = requireSafeTmuxServerForMutation(resolveSkcTmuxCommand(env), env);
950
+ if (finalServer.pid !== firstServer.pid || finalServer.startTime !== firstServer.startTime)
951
+ throw new Error(`skc_tmux_owner_changed:${sessionName}`);
952
+ runGuardedTmuxSessionCommand(
953
+ nativeSessionId,
954
+ session.name,
955
+ finalServer.pid,
956
+ env,
957
+ `kill-session -t '${nativeSessionId}'`,
958
+ expectedIdentity?.ownerGeneration,
959
+ );
365
960
  return session;
366
961
  }
367
962
 
963
+ async function readProcessStartTime(pid: number): Promise<string | null> {
964
+ try {
965
+ const stat = await fs.readFile(`/proc/${pid}/stat`, "utf8");
966
+ const close = stat.lastIndexOf(")");
967
+ const fields = stat
968
+ .slice(close + 2)
969
+ .trim()
970
+ .split(/\s+/);
971
+ return fields[19] ?? null;
972
+ } catch {
973
+ return null;
974
+ }
975
+ }
976
+
977
+ async function readCurrentGeneration(stateDir: string, sessionId: string): Promise<string | null> {
978
+ try {
979
+ const value: unknown = JSON.parse(
980
+ await fs.readFile(path.join(stateDir, sessionId, "owner-lifecycle", "generation.json"), "utf8"),
981
+ );
982
+ return typeof value === "object" &&
983
+ value !== null &&
984
+ typeof (value as { generation?: unknown }).generation === "string"
985
+ ? (value as { generation: string }).generation
986
+ : null;
987
+ } catch {
988
+ return null;
989
+ }
990
+ }
991
+
992
+ async function resolveExactOwner(
993
+ sessionName: string,
994
+ env: NodeJS.ProcessEnv,
995
+ exactPanePid: number,
996
+ ): Promise<ExactOwnerIdentity> {
997
+ const session = statusSkcTmuxSession(sessionName, env);
998
+ const sessionId = readExactOptionForGc(session.name, SKC_TMUX_SESSION_ID_OPTION, env);
999
+ const stateFile = readExactOptionForGc(session.name, SKC_TMUX_SESSION_STATE_FILE_OPTION, env);
1000
+ const ownerGeneration = readExactOptionForGc(session.name, SKC_TMUX_OWNER_GENERATION_OPTION, env);
1001
+ const ownerServerKey = readExactOptionForGc(session.name, SKC_TMUX_OWNER_SERVER_KEY_OPTION, env);
1002
+
1003
+ if (!sessionId || !stateFile) throw new Error(`skc_tmux_owner_unverifiable:${sessionName}`);
1004
+ const stateDir = path.dirname(stateFile);
1005
+ const generation = await readCurrentGeneration(stateDir, sessionId);
1006
+ const pid = exactPanePid;
1007
+ const startTime = await readProcessStartTime(pid);
1008
+ if (!generation || !ownerGeneration || ownerGeneration !== generation || !ownerServerKey || !startTime)
1009
+ throw new Error(`skc_tmux_owner_unverifiable:${sessionName}`);
1010
+
1011
+ return {
1012
+ sessionId,
1013
+ stateDir,
1014
+ socketKey: ownerServerKey,
1015
+ generation,
1016
+ pid,
1017
+ startTime,
1018
+ };
1019
+ }
1020
+
1021
+ async function requireUnchangedOwnerForCompatibilityCleanup(
1022
+ sessionName: string,
1023
+ nativeSessionId: string,
1024
+ env: NodeJS.ProcessEnv,
1025
+ identity: ExactOwnerIdentity,
1026
+ initialStateFile: string,
1027
+ initialServer: { pid: number; startTime: string },
1028
+ listPanePids: (sessionName: string, env: NodeJS.ProcessEnv) => number[],
1029
+ readStartTime: (pid: number) => Promise<string | null>,
1030
+ ): Promise<void> {
1031
+ try {
1032
+ const currentNativeSessionId = readNativeTmuxSessionId(nativeSessionId, env);
1033
+ if (!currentNativeSessionId) {
1034
+ if (readNativeTmuxSessionId(sessionName, env)) throw new Error(`skc_tmux_owner_changed:${sessionName}`);
1035
+ return;
1036
+ }
1037
+ const currentServer = requireSafeTmuxServerForMutation(resolveSkcTmuxCommand(env), env);
1038
+ const panePids = listPanePids(nativeSessionId, env);
1039
+ let currentPaneStartTime: string | null;
1040
+ try {
1041
+ currentPaneStartTime = await readStartTime(identity.pid);
1042
+ } catch (error) {
1043
+ if ((error as NodeJS.ErrnoException).code !== "ENOENT") throw error;
1044
+ currentPaneStartTime = null;
1045
+ }
1046
+ const mismatches = [
1047
+ currentServer.pid !== initialServer.pid ? "server_pid" : null,
1048
+ currentServer.startTime !== initialServer.startTime ? "server_start" : null,
1049
+ currentNativeSessionId !== nativeSessionId ? "native_id" : null,
1050
+ readProfileForExactTarget(nativeSessionId, env) !== SKC_TMUX_PROFILE_VALUE ? "profile" : null,
1051
+ panePids.length > 1 ? "pane_count" : null,
1052
+ panePids.length === 1 && panePids[0] !== identity.pid ? "pane_pid" : null,
1053
+ currentPaneStartTime !== null && currentPaneStartTime !== identity.startTime ? "pane_start" : null,
1054
+ readExactOptionForGc(nativeSessionId, SKC_TMUX_SESSION_ID_OPTION, env) !== identity.sessionId
1055
+ ? "session_id"
1056
+ : null,
1057
+ readExactOptionForGc(nativeSessionId, SKC_TMUX_SESSION_STATE_FILE_OPTION, env) !== initialStateFile
1058
+ ? "state_file"
1059
+ : null,
1060
+ readExactOptionForGc(nativeSessionId, SKC_TMUX_OWNER_GENERATION_OPTION, env) !== identity.generation
1061
+ ? "generation"
1062
+ : null,
1063
+ readExactOptionForGc(nativeSessionId, SKC_TMUX_OWNER_SERVER_KEY_OPTION, env) !== identity.socketKey
1064
+ ? "server_key"
1065
+ : null,
1066
+ ].filter((value): value is string => value !== null);
1067
+ if (mismatches.length > 0) throw new Error(`skc_tmux_owner_changed:${sessionName}:${mismatches.join(",")}`);
1068
+ } catch (error) {
1069
+ if (!readNativeTmuxSessionId(nativeSessionId, env)) {
1070
+ if (readNativeTmuxSessionId(sessionName, env)) throw new Error(`skc_tmux_owner_changed:${sessionName}`);
1071
+ return;
1072
+ }
1073
+ if (error instanceof Error && error.message.startsWith(`skc_tmux_owner_changed:${sessionName}`))
1074
+ throw new Error(`skc_tmux_owner_changed:${sessionName}`);
1075
+ throw new Error(`skc_tmux_owner_changed:${sessionName}`);
1076
+ }
1077
+ }
1078
+
1079
+ async function waitForExpectedVerdict(
1080
+ identity: ExactOwnerIdentity,
1081
+ sleep: (ms: number) => Promise<void>,
1082
+ now: () => Date,
1083
+ ): Promise<OwnerVerdict | null> {
1084
+ const deadline = now().getTime() + FORCE_CLOSE_VERDICT_TIMEOUT_MS;
1085
+ const paths = lifecyclePaths(identity.stateDir, identity.sessionId, identity.generation);
1086
+ const verdictFile = paths.verdictFile;
1087
+ const verdictAliasFile = paths.verdictAliasFile;
1088
+ while (now().getTime() <= deadline) {
1089
+ try {
1090
+ const [verdictBody, aliasBody] = await Promise.all([
1091
+ fs.readFile(verdictFile, "utf8"),
1092
+ fs.readFile(verdictAliasFile, "utf8"),
1093
+ ]);
1094
+ const verdict: unknown = JSON.parse(verdictBody);
1095
+ const alias: unknown = JSON.parse(aliasBody);
1096
+ if (
1097
+ isValidOwnerVerdict(verdict) &&
1098
+ typeof alias === "object" &&
1099
+ alias !== null &&
1100
+ Object.keys(alias).length === Object.keys(verdict).length + 1 &&
1101
+ Object.keys(alias).every(key => key === "owner_generation" || Object.hasOwn(verdict, key)) &&
1102
+ (alias as Record<string, unknown>).owner_generation === identity.generation &&
1103
+ Object.entries(verdict).every(
1104
+ ([key, value]) => Object.hasOwn(alias, key) && (alias as Record<string, unknown>)[key] === value,
1105
+ ) &&
1106
+ verdict.generation === identity.generation &&
1107
+ verdict.session_id === identity.sessionId &&
1108
+ verdict.server_key === identity.socketKey &&
1109
+ verdict.signal === "SIGTERM" &&
1110
+ verdict.result === "owner_term_then_session_cleanup" &&
1111
+ verdict.classification === "expected_operator_shutdown"
1112
+ )
1113
+ return verdict;
1114
+ } catch {}
1115
+ await sleep(FORCE_CLOSE_VERDICT_POLL_MS);
1116
+ }
1117
+ return null;
1118
+ }
1119
+
368
1120
  /**
369
- * Force-close a SKC-managed tmux session, even if a live pane is attached.
370
- *
371
- * This is the lifecycle-control counterpart to {@link removeSkcTmuxSession}: it
372
- * intentionally does NOT refuse live/attached panes (hard-kill is the contract),
373
- * but it keeps every safety check so it can only ever kill a genuinely
374
- * SKC-managed session:
375
- * - re-reads the exact tmux profile immediately before kill (never a non-SKC
376
- * session, even one that collides by name);
377
- * - when `expectedSessionId` is given, requires the `@skc-session-id` tag match;
378
- * - when `expectedStateFile` is given, requires the `@skc-session-state-file`
379
- * tag match.
380
- *
381
- * Returns the prior status (for audit). Throws a tagged error otherwise:
382
- * `skc_tmux_session_not_found`, `skc_tmux_session_not_managed`,
383
- * `skc_tmux_session_id_mismatch`, or `skc_tmux_session_state_file_mismatch`.
1121
+ * Requests an exact tagged owner shutdown. Session cleanup is compatibility-only
1122
+ * and follows a validated SIGTERM verdict; it never authorizes the close.
384
1123
  */
385
- export function forceCloseSkcTmuxSession(
1124
+ export async function forceCloseSkcTmuxSession(
386
1125
  sessionName: string,
387
1126
  env: NodeJS.ProcessEnv = process.env,
388
1127
  expectedSessionId?: string,
389
1128
  expectedStateFile?: string,
390
- ): SkcTmuxSessionStatus {
1129
+ deps: Partial<ForceCloseOwnerDependencies> = {},
1130
+ ): Promise<SkcTmuxSessionStatus> {
1131
+ if (resolveSkcTmuxBinary({ env }).isPsmux) throw new Error(`skc_tmux_owner_unverifiable:${sessionName}`);
391
1132
  const session = statusSkcTmuxSession(sessionName, env);
392
- if (readProfileForExactTarget(session.name, env) !== SKC_TMUX_PROFILE_VALUE) {
1133
+ if (readProfileForExactTarget(session.name, env) !== SKC_TMUX_PROFILE_VALUE)
393
1134
  throw new Error(`skc_tmux_session_not_managed:${sessionName}`);
394
- }
395
- if (expectedSessionId !== undefined) {
396
- const actual = readExactOptionForGc(session.name, SKC_TMUX_SESSION_ID_OPTION, env);
397
- if (actual !== expectedSessionId) {
398
- throw new Error(`skc_tmux_session_id_mismatch:${sessionName}`);
399
- }
400
- }
401
- if (expectedStateFile !== undefined) {
402
- const actual = readExactOptionForGc(session.name, SKC_TMUX_SESSION_STATE_FILE_OPTION, env);
403
- if (actual !== expectedStateFile) {
404
- throw new Error(`skc_tmux_session_state_file_mismatch:${sessionName}`);
405
- }
406
- }
407
- // Intentionally NOT refusing live/attached panes — force-close is hard-kill.
408
- runTmux(["kill-session", "-t", buildSkcTmuxExactSessionTarget(session.name, { env })], env);
1135
+ const exactPanePids = (deps.listPanePids ?? readExactSessionPanePids)(session.name, env);
1136
+ if (exactPanePids.length !== 1) throw new Error(`skc_tmux_owner_unverifiable:${sessionName}`);
1137
+ const actualSessionId = readExactOptionForGc(session.name, SKC_TMUX_SESSION_ID_OPTION, env);
1138
+ const actualStateFile = readExactOptionForGc(session.name, SKC_TMUX_SESSION_STATE_FILE_OPTION, env);
1139
+ const actualGeneration = readExactOptionForGc(session.name, SKC_TMUX_OWNER_GENERATION_OPTION, env);
1140
+ const actualServerKey = readExactOptionForGc(session.name, SKC_TMUX_OWNER_SERVER_KEY_OPTION, env);
1141
+
1142
+ if (expectedSessionId !== undefined && actualSessionId !== expectedSessionId)
1143
+ throw new Error(`skc_tmux_session_id_mismatch:${sessionName}`);
1144
+ if (expectedStateFile !== undefined && actualStateFile !== expectedStateFile)
1145
+ throw new Error(`skc_tmux_session_state_file_mismatch:${sessionName}`);
1146
+ if (!actualSessionId || !actualStateFile || !actualGeneration || !actualServerKey)
1147
+ throw new Error(`skc_tmux_owner_unverifiable:${sessionName}`);
1148
+ const nativeSessionId = readNativeTmuxSessionId(session.name, env);
1149
+ if (!nativeSessionId) throw new Error(`skc_tmux_owner_unverifiable:${sessionName}`);
1150
+
1151
+ const resolveOwner =
1152
+ deps.resolveOwner ?? ((name, targetEnv) => resolveExactOwner(name, targetEnv, exactPanePids[0]!));
1153
+ const identity = await resolveOwner(session.name, env);
1154
+ if (identity.pid !== exactPanePids[0]) throw new Error(`skc_tmux_owner_identity_mismatch:${sessionName}`);
1155
+ if (identity.sessionId !== actualSessionId || identity.stateDir !== path.dirname(actualStateFile))
1156
+ throw new Error(`skc_tmux_owner_identity_mismatch:${sessionName}`);
1157
+ if (identity.generation !== actualGeneration) throw new Error(`skc_tmux_owner_generation_mismatch:${sessionName}`);
1158
+ if (identity.socketKey !== actualServerKey) throw new Error(`skc_tmux_owner_server_key_mismatch:${sessionName}`);
1159
+ const initialServer = requireSafeTmuxServerForMutation(resolveSkcTmuxCommand(env), env);
1160
+
1161
+ const currentStartTime = await (deps.readProcessStartTime ?? readProcessStartTime)(identity.pid);
1162
+ if (currentStartTime !== identity.startTime) throw new Error("owner_pid_identity_mismatch");
1163
+ const now = deps.now ?? (() => new Date());
1164
+ const sleep = deps.sleep ?? (ms => Bun.sleep(ms));
1165
+ const dispatchId = crypto.randomUUID();
1166
+ await closeExactTmuxOwner(
1167
+ {
1168
+ stateDir: identity.stateDir,
1169
+ sessionId: identity.sessionId,
1170
+ generation: identity.generation,
1171
+ serverKey: identity.socketKey,
1172
+ pid: identity.pid,
1173
+ startTime: identity.startTime,
1174
+ dispatchId,
1175
+ createdAt: now().toISOString(),
1176
+ expiresAt: new Date(now().getTime() + FORCE_CLOSE_VERDICT_TIMEOUT_MS).toISOString(),
1177
+ },
1178
+ {
1179
+ readStartTime: deps.readProcessStartTime ?? readProcessStartTime,
1180
+ sendSigterm: async pid => {
1181
+ if ((await (deps.readProcessStartTime ?? readProcessStartTime)(pid)) !== identity.startTime)
1182
+ throw new Error("owner_pid_identity_mismatch");
1183
+ (deps.signalTerm ?? (target => process.kill(target, "SIGTERM")))(pid);
1184
+ },
1185
+
1186
+ waitForVerdict: () => waitForExpectedVerdict(identity, sleep, now),
1187
+ cleanupSession: async () => {
1188
+ await requireUnchangedOwnerForCompatibilityCleanup(
1189
+ session.name,
1190
+ nativeSessionId,
1191
+ env,
1192
+ identity,
1193
+ actualStateFile,
1194
+ initialServer,
1195
+ deps.listPanePids ?? readExactSessionPanePids,
1196
+ deps.readProcessStartTime ?? readProcessStartTime,
1197
+ );
1198
+ if (deps.cleanupSession) deps.cleanupSession(nativeSessionId, env);
1199
+ else
1200
+ runGuardedTmuxSessionCommand(
1201
+ nativeSessionId,
1202
+ session.name,
1203
+ initialServer.pid,
1204
+ env,
1205
+ `kill-session -t '${nativeSessionId}'`,
1206
+ );
1207
+ },
1208
+ },
1209
+ );
409
1210
  return session;
410
1211
  }
411
1212
 
412
1213
  export function attachSkcTmuxSession(sessionName: string, env: NodeJS.ProcessEnv = process.env): never {
1214
+ if (resolveSkcTmuxBinary({ env }).isPsmux) throw new Error(`skc_tmux_owner_unverifiable:${sessionName}`);
413
1215
  const session = statusSkcTmuxSession(sessionName, env);
414
1216
  const tmuxCommand = resolveSkcTmuxCommand(env);
1217
+ requireSafeTmuxServerForMutation(tmuxCommand, env);
415
1218
  const result = Bun.spawnSync(
416
1219
  [tmuxCommand, "attach-session", "-t", buildSkcTmuxExactSessionTarget(session.name, { env })],
417
1220
  {