@sayknow-cli/coding-agent 0.3.6 → 0.3.8

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 (1264) hide show
  1. package/README.md +76 -0
  2. package/dist/types/append-only-mode.d.ts +31 -0
  3. package/dist/types/async/index.d.ts +2 -0
  4. package/dist/types/async/job-manager.d.ts +328 -0
  5. package/dist/types/async/support.d.ts +2 -0
  6. package/dist/types/autoresearch/dashboard.d.ts +4 -0
  7. package/dist/types/autoresearch/git.d.ts +36 -0
  8. package/dist/types/autoresearch/helpers.d.ts +24 -0
  9. package/dist/types/autoresearch/index.d.ts +2 -0
  10. package/dist/types/autoresearch/state.d.ts +17 -0
  11. package/dist/types/autoresearch/storage.d.ts +142 -0
  12. package/dist/types/autoresearch/tools/init-experiment.d.ts +31 -0
  13. package/dist/types/autoresearch/tools/log-experiment.d.ts +23 -0
  14. package/dist/types/autoresearch/tools/run-experiment.d.ts +8 -0
  15. package/dist/types/autoresearch/tools/update-notes.d.ts +12 -0
  16. package/dist/types/autoresearch/types.d.ts +154 -0
  17. package/dist/types/capability/context-file.d.ts +17 -0
  18. package/dist/types/capability/extension-module.d.ts +15 -0
  19. package/dist/types/capability/extension.d.ts +28 -0
  20. package/dist/types/capability/fs.d.ts +20 -0
  21. package/dist/types/capability/hook.d.ts +19 -0
  22. package/dist/types/capability/index.d.ts +80 -0
  23. package/dist/types/capability/instruction.d.ts +17 -0
  24. package/dist/types/capability/mcp.d.ts +47 -0
  25. package/dist/types/capability/prompt.d.ts +15 -0
  26. package/dist/types/capability/rule.d.ts +69 -0
  27. package/dist/types/capability/settings.d.ts +15 -0
  28. package/dist/types/capability/skill.d.ts +36 -0
  29. package/dist/types/capability/slash-command.d.ts +17 -0
  30. package/dist/types/capability/ssh.d.ts +23 -0
  31. package/dist/types/capability/system-prompt.d.ts +15 -0
  32. package/dist/types/capability/tool.d.ts +19 -0
  33. package/dist/types/capability/types.d.ts +154 -0
  34. package/dist/types/cli/agents-cli.d.ts +12 -0
  35. package/dist/types/cli/args.d.ts +56 -0
  36. package/dist/types/cli/auth-broker-cli.d.ts +25 -0
  37. package/dist/types/cli/auth-gateway-cli.d.ts +18 -0
  38. package/dist/types/cli/classify-install-target.d.ts +18 -0
  39. package/dist/types/cli/commands/init-xdg.d.ts +1 -0
  40. package/dist/types/cli/completion-cli.d.ts +41 -0
  41. package/dist/types/cli/config-cli.d.ts +23 -0
  42. package/dist/types/cli/daemon-cli.d.ts +25 -0
  43. package/dist/types/cli/fast-help.d.ts +1 -0
  44. package/dist/types/cli/file-processor.d.ts +11 -0
  45. package/dist/types/cli/fixture-report.d.ts +20 -0
  46. package/dist/types/cli/fixture-report.test.d.ts +1 -0
  47. package/dist/types/cli/grep-cli.d.ts +17 -0
  48. package/dist/types/cli/initial-message.d.ts +17 -0
  49. package/dist/types/cli/list-models.d.ts +36 -0
  50. package/dist/types/cli/local-provider-smoke.d.ts +59 -0
  51. package/dist/types/cli/mcp-cli.d.ts +25 -0
  52. package/dist/types/cli/migrate-cli.d.ts +20 -0
  53. package/dist/types/cli/nofile-limit.d.ts +11 -0
  54. package/dist/types/cli/notify-cli.d.ts +32 -0
  55. package/dist/types/cli/plugin-cli.d.ts +34 -0
  56. package/dist/types/cli/read-cli.d.ts +4 -0
  57. package/dist/types/cli/session-picker.d.ts +3 -0
  58. package/dist/types/cli/setup-cli.d.ts +73 -0
  59. package/dist/types/cli/shell-cli.d.ts +8 -0
  60. package/dist/types/cli/skills-cli.d.ts +9 -0
  61. package/dist/types/cli/ssh-cli.d.ts +21 -0
  62. package/dist/types/cli/stats-cli.d.ts +17 -0
  63. package/dist/types/cli/telegram-cli.d.ts +13 -0
  64. package/dist/types/cli/update-cli.d.ts +89 -0
  65. package/dist/types/cli/web-search-cli.d.ts +32 -0
  66. package/dist/types/cli/worktree-cli.d.ts +26 -0
  67. package/dist/types/cli.d.ts +132 -0
  68. package/dist/types/commands/acp.d.ts +12 -0
  69. package/dist/types/commands/agents.d.ts +34 -0
  70. package/dist/types/commands/auth-broker.d.ts +54 -0
  71. package/dist/types/commands/auth-gateway.d.ts +32 -0
  72. package/dist/types/commands/codex-native-hook.d.ts +6 -0
  73. package/dist/types/commands/commit.d.ts +27 -0
  74. package/dist/types/commands/completion.d.ts +29 -0
  75. package/dist/types/commands/config.d.ts +33 -0
  76. package/dist/types/commands/contribution-prep.d.ts +18 -0
  77. package/dist/types/commands/coordinator.d.ts +19 -0
  78. package/dist/types/commands/daemon.d.ts +41 -0
  79. package/dist/types/commands/deep-interview.d.ts +54 -0
  80. package/dist/types/commands/gc.d.ts +26 -0
  81. package/dist/types/commands/grep.d.ts +42 -0
  82. package/dist/types/commands/harness.d.ts +43 -0
  83. package/dist/types/commands/launch.d.ts +127 -0
  84. package/dist/types/commands/local-provider.d.ts +34 -0
  85. package/dist/types/commands/mcp-serve.d.ts +24 -0
  86. package/dist/types/commands/mcp.d.ts +70 -0
  87. package/dist/types/commands/migrate.d.ts +33 -0
  88. package/dist/types/commands/notify.d.ts +41 -0
  89. package/dist/types/commands/plugin.d.ts +58 -0
  90. package/dist/types/commands/ralplan.d.ts +7 -0
  91. package/dist/types/commands/read.d.ts +15 -0
  92. package/dist/types/commands/rlm.d.ts +10 -0
  93. package/dist/types/commands/session.d.ts +30 -0
  94. package/dist/types/commands/setup.d.ts +105 -0
  95. package/dist/types/commands/shell.d.ts +21 -0
  96. package/dist/types/commands/skills.d.ts +26 -0
  97. package/dist/types/commands/ssh.d.ts +48 -0
  98. package/dist/types/commands/state.d.ts +7 -0
  99. package/dist/types/commands/stats.d.ts +25 -0
  100. package/dist/types/commands/team.d.ts +24 -0
  101. package/dist/types/commands/telegram.d.ts +22 -0
  102. package/dist/types/commands/ultragoal.d.ts +8 -0
  103. package/dist/types/commands/update.d.ts +20 -0
  104. package/dist/types/commands/web-search.d.ts +87 -0
  105. package/dist/types/commands/worktree.d.ts +34 -0
  106. package/dist/types/commit/agentic/agent.d.ts +31 -0
  107. package/dist/types/commit/agentic/fallback.d.ts +5 -0
  108. package/dist/types/commit/agentic/index.d.ts +2 -0
  109. package/dist/types/commit/agentic/state.d.ts +58 -0
  110. package/dist/types/commit/agentic/tools/analyze-file.d.ts +19 -0
  111. package/dist/types/commit/agentic/tools/git-file-diff.d.ts +10 -0
  112. package/dist/types/commit/agentic/tools/git-hunk.d.ts +9 -0
  113. package/dist/types/commit/agentic/tools/git-overview.d.ts +9 -0
  114. package/dist/types/commit/agentic/tools/index.d.ts +16 -0
  115. package/dist/types/commit/agentic/tools/propose-changelog.d.ts +28 -0
  116. package/dist/types/commit/agentic/tools/propose-commit.d.ts +36 -0
  117. package/dist/types/commit/agentic/tools/recent-commits.d.ts +7 -0
  118. package/dist/types/commit/agentic/tools/schemas.d.ts +27 -0
  119. package/dist/types/commit/agentic/tools/split-commit.d.ts +53 -0
  120. package/dist/types/commit/agentic/topo-sort.d.ts +4 -0
  121. package/dist/types/commit/agentic/trivial.d.ts +7 -0
  122. package/dist/types/commit/agentic/validation.d.ts +20 -0
  123. package/dist/types/commit/analysis/conventional.d.ts +22 -0
  124. package/dist/types/commit/analysis/index.d.ts +4 -0
  125. package/dist/types/commit/analysis/scope.d.ts +6 -0
  126. package/dist/types/commit/analysis/summary.d.ts +19 -0
  127. package/dist/types/commit/analysis/validation.d.ts +8 -0
  128. package/dist/types/commit/changelog/detect.d.ts +2 -0
  129. package/dist/types/commit/changelog/generate.d.ts +30 -0
  130. package/dist/types/commit/changelog/index.d.ts +30 -0
  131. package/dist/types/commit/changelog/parse.d.ts +2 -0
  132. package/dist/types/commit/cli.d.ts +3 -0
  133. package/dist/types/commit/git/diff.d.ts +5 -0
  134. package/dist/types/commit/index.d.ts +4 -0
  135. package/dist/types/commit/map-reduce/index.d.ts +28 -0
  136. package/dist/types/commit/map-reduce/map-phase.d.ts +17 -0
  137. package/dist/types/commit/map-reduce/reduce-phase.d.ts +13 -0
  138. package/dist/types/commit/map-reduce/utils.d.ts +2 -0
  139. package/dist/types/commit/message.d.ts +2 -0
  140. package/dist/types/commit/model-selection.d.ts +15 -0
  141. package/dist/types/commit/pipeline.d.ts +5 -0
  142. package/dist/types/commit/shared-llm.d.ts +54 -0
  143. package/dist/types/commit/types.d.ts +78 -0
  144. package/dist/types/commit/utils/exclusions.d.ts +4 -0
  145. package/dist/types/commit/utils.d.ts +20 -0
  146. package/dist/types/config/config-file.d.ts +58 -0
  147. package/dist/types/config/file-lock-gc.d.ts +5 -0
  148. package/dist/types/config/file-lock.d.ts +36 -0
  149. package/dist/types/config/keybindings.d.ts +359 -0
  150. package/dist/types/config/model-equivalence.d.ts +24 -0
  151. package/dist/types/config/model-profile-activation.d.ts +64 -0
  152. package/dist/types/config/model-profiles.d.ts +39 -0
  153. package/dist/types/config/model-registry.d.ts +465 -0
  154. package/dist/types/config/model-resolver.d.ts +217 -0
  155. package/dist/types/config/models-config-schema.d.ts +700 -0
  156. package/dist/types/config/prompt-templates.d.ts +32 -0
  157. package/dist/types/config/resolve-config-value.d.ts +17 -0
  158. package/dist/types/config/settings-schema.d.ts +4169 -0
  159. package/dist/types/config/settings.d.ts +149 -0
  160. package/dist/types/config/skill-settings-defaults.d.ts +14 -0
  161. package/dist/types/config/telegram-autostart.d.ts +14 -0
  162. package/dist/types/config/telegram-env-bridge.d.ts +18 -0
  163. package/dist/types/config.d.ts +66 -0
  164. package/dist/types/coordinator/contract.d.ts +4 -0
  165. package/dist/types/coordinator-mcp/policy.d.ts +24 -0
  166. package/dist/types/coordinator-mcp/safety.d.ts +26 -0
  167. package/dist/types/coordinator-mcp/server.d.ts +66 -0
  168. package/dist/types/cursor.d.ts +24 -0
  169. package/dist/types/daemon/builtin.d.ts +20 -0
  170. package/dist/types/daemon/control-types.d.ts +57 -0
  171. package/dist/types/daemon/runtime.d.ts +25 -0
  172. package/dist/types/dap/client.d.ts +39 -0
  173. package/dist/types/dap/config.d.ts +6 -0
  174. package/dist/types/dap/index.d.ts +4 -0
  175. package/dist/types/dap/session.d.ts +108 -0
  176. package/dist/types/dap/types.d.ts +524 -0
  177. package/dist/types/debug/crash-diagnostics.d.ts +45 -0
  178. package/dist/types/debug/index.d.ts +15 -0
  179. package/dist/types/debug/log-formatting.d.ts +4 -0
  180. package/dist/types/debug/log-viewer.d.ts +68 -0
  181. package/dist/types/debug/profiler.d.ts +24 -0
  182. package/dist/types/debug/raw-sse-buffer.d.ts +44 -0
  183. package/dist/types/debug/raw-sse.d.ts +16 -0
  184. package/dist/types/debug/report-bundle.d.ts +55 -0
  185. package/dist/types/debug/runtime-gauges.d.ts +6 -0
  186. package/dist/types/debug/system-info.d.ts +26 -0
  187. package/dist/types/deep-interview/plaintext-gate-guard.d.ts +11 -0
  188. package/dist/types/deep-interview/render-middleware.d.ts +6 -0
  189. package/dist/types/defaults/skc/extensions/grok-build/index.d.ts +1 -0
  190. package/dist/types/defaults/skc/extensions/grok-cli-vendor/src/index.d.ts +1 -0
  191. package/dist/types/defaults/skc/extensions/grok-cli-vendor/src/models/catalog.d.ts +25 -0
  192. package/dist/types/defaults/skc/extensions/grok-cli-vendor/src/payload/sanitize.d.ts +27 -0
  193. package/dist/types/defaults/skc/extensions/grok-cli-vendor/src/provider/billing.d.ts +8 -0
  194. package/dist/types/defaults/skc/extensions/grok-cli-vendor/src/provider/register.d.ts +5 -0
  195. package/dist/types/defaults/skc/extensions/grok-cli-vendor/src/provider/stream.d.ts +10 -0
  196. package/dist/types/defaults/skc/extensions/grok-cli-vendor/src/provider/usage.d.ts +2 -0
  197. package/dist/types/defaults/skc/extensions/grok-cli-vendor/src/shared/base-url.d.ts +2 -0
  198. package/dist/types/defaults/skc/extensions/grok-cli-vendor/src/shared/errors.d.ts +38 -0
  199. package/dist/types/defaults/skc-defaults.d.ts +64 -0
  200. package/dist/types/defaults/skc-grok-cli.d.ts +5 -0
  201. package/dist/types/discovery/agents-md.d.ts +1 -0
  202. package/dist/types/discovery/agents.d.ts +12 -0
  203. package/dist/types/discovery/builtin.d.ts +1 -0
  204. package/dist/types/discovery/claude-plugins.d.ts +1 -0
  205. package/dist/types/discovery/claude.d.ts +1 -0
  206. package/dist/types/discovery/cline.d.ts +1 -0
  207. package/dist/types/discovery/codex.d.ts +1 -0
  208. package/dist/types/discovery/cursor.d.ts +19 -0
  209. package/dist/types/discovery/gemini.d.ts +1 -0
  210. package/dist/types/discovery/github.d.ts +1 -0
  211. package/dist/types/discovery/helpers.d.ts +271 -0
  212. package/dist/types/discovery/index.d.ts +48 -0
  213. package/dist/types/discovery/mcp-json.d.ts +1 -0
  214. package/dist/types/discovery/opencode.d.ts +1 -0
  215. package/dist/types/discovery/plugin-dir-roots.d.ts +15 -0
  216. package/dist/types/discovery/ssh.d.ts +1 -0
  217. package/dist/types/discovery/substitute-plugin-root.d.ts +5 -0
  218. package/dist/types/discovery/vscode.d.ts +1 -0
  219. package/dist/types/discovery/windsurf.d.ts +15 -0
  220. package/dist/types/edit/apply-patch/index.d.ts +35 -0
  221. package/dist/types/edit/apply-patch/parser.d.ts +34 -0
  222. package/dist/types/edit/diff.d.ts +75 -0
  223. package/dist/types/edit/file-read-cache.d.ts +25 -0
  224. package/dist/types/edit/index.d.ts +58 -0
  225. package/dist/types/edit/modes/apply-patch.d.ts +24 -0
  226. package/dist/types/edit/modes/patch.d.ts +99 -0
  227. package/dist/types/edit/modes/replace.d.ts +149 -0
  228. package/dist/types/edit/normalize.d.ts +43 -0
  229. package/dist/types/edit/notebook.d.ts +26 -0
  230. package/dist/types/edit/read-file.d.ts +8 -0
  231. package/dist/types/edit/renderer.d.ts +110 -0
  232. package/dist/types/edit/streaming.d.ts +66 -0
  233. package/dist/types/eval/backend.d.ts +40 -0
  234. package/dist/types/eval/index.d.ts +4 -0
  235. package/dist/types/eval/js/context-manager.d.ts +27 -0
  236. package/dist/types/eval/js/executor.d.ts +29 -0
  237. package/dist/types/eval/js/index.d.ts +10 -0
  238. package/dist/types/eval/js/shared/helpers.d.ts +38 -0
  239. package/dist/types/eval/js/shared/indirect-eval.d.ts +14 -0
  240. package/dist/types/eval/js/shared/prelude.d.ts +1 -0
  241. package/dist/types/eval/js/shared/rewrite-imports.d.ts +6 -0
  242. package/dist/types/eval/js/shared/runtime.d.ts +47 -0
  243. package/dist/types/eval/js/shared/types.d.ts +24 -0
  244. package/dist/types/eval/js/tool-bridge.d.ts +18 -0
  245. package/dist/types/eval/js/worker-core.d.ts +5 -0
  246. package/dist/types/eval/js/worker-entry.d.ts +1 -0
  247. package/dist/types/eval/js/worker-protocol.d.ts +77 -0
  248. package/dist/types/eval/py/display.d.ts +25 -0
  249. package/dist/types/eval/py/executor.d.ts +88 -0
  250. package/dist/types/eval/py/index.d.ts +10 -0
  251. package/dist/types/eval/py/kernel.d.ts +65 -0
  252. package/dist/types/eval/py/prelude.d.ts +1 -0
  253. package/dist/types/eval/py/runtime.d.ts +29 -0
  254. package/dist/types/eval/py/tool-bridge.d.ts +20 -0
  255. package/dist/types/eval/types.d.ts +52 -0
  256. package/dist/types/exa/factory.d.ts +13 -0
  257. package/dist/types/exa/index.d.ts +20 -0
  258. package/dist/types/exa/mcp-client.d.ts +45 -0
  259. package/dist/types/exa/render.d.ts +19 -0
  260. package/dist/types/exa/researcher.d.ts +9 -0
  261. package/dist/types/exa/search.d.ts +9 -0
  262. package/dist/types/exa/types.d.ts +155 -0
  263. package/dist/types/exa/websets.d.ts +9 -0
  264. package/dist/types/exec/bash-executor.d.ts +64 -0
  265. package/dist/types/exec/exec.d.ts +25 -0
  266. package/dist/types/exec/idle-timeout-watchdog.d.ts +18 -0
  267. package/dist/types/exec/non-interactive-env.d.ts +1 -0
  268. package/dist/types/export/custom-share.d.ts +20 -0
  269. package/dist/types/export/html/index.d.ts +10 -0
  270. package/dist/types/export/html/template.generated.d.ts +1 -0
  271. package/dist/types/export/html/template.macro.d.ts +5 -0
  272. package/dist/types/export/ttsr.d.ts +55 -0
  273. package/dist/types/extensibility/custom-commands/bundled/ci-green/index.d.ts +9 -0
  274. package/dist/types/extensibility/custom-commands/index.d.ts +2 -0
  275. package/dist/types/extensibility/custom-commands/loader.d.ts +29 -0
  276. package/dist/types/extensibility/custom-commands/types.d.ts +106 -0
  277. package/dist/types/extensibility/custom-tools/index.d.ts +6 -0
  278. package/dist/types/extensibility/custom-tools/loader.d.ts +69 -0
  279. package/dist/types/extensibility/custom-tools/types.d.ts +229 -0
  280. package/dist/types/extensibility/custom-tools/wrapper.d.ts +24 -0
  281. package/dist/types/extensibility/extensions/compact-handler.d.ts +26 -0
  282. package/dist/types/extensibility/extensions/get-commands-handler.d.ts +29 -0
  283. package/dist/types/extensibility/extensions/index.d.ts +9 -0
  284. package/dist/types/extensibility/extensions/loader.d.ts +43 -0
  285. package/dist/types/extensibility/extensions/prefix-command-bridge.d.ts +35 -0
  286. package/dist/types/extensibility/extensions/runner.d.ts +135 -0
  287. package/dist/types/extensibility/extensions/types.d.ts +918 -0
  288. package/dist/types/extensibility/extensions/wrapper.d.ts +55 -0
  289. package/dist/types/extensibility/hooks/index.d.ts +5 -0
  290. package/dist/types/extensibility/hooks/loader.d.ts +89 -0
  291. package/dist/types/extensibility/hooks/runner.d.ts +126 -0
  292. package/dist/types/extensibility/hooks/tool-wrapper.d.ts +25 -0
  293. package/dist/types/extensibility/hooks/types.d.ts +431 -0
  294. package/dist/types/extensibility/plugins/doctor.d.ts +3 -0
  295. package/dist/types/extensibility/plugins/git-url.d.ts +34 -0
  296. package/dist/types/extensibility/plugins/index.d.ts +8 -0
  297. package/dist/types/extensibility/plugins/installer.d.ts +5 -0
  298. package/dist/types/extensibility/plugins/legacy-pi-compat.d.ts +2 -0
  299. package/dist/types/extensibility/plugins/loader.d.ts +31 -0
  300. package/dist/types/extensibility/plugins/manager.d.ts +65 -0
  301. package/dist/types/extensibility/plugins/marketplace/cache.d.ts +41 -0
  302. package/dist/types/extensibility/plugins/marketplace/fetcher.d.ts +48 -0
  303. package/dist/types/extensibility/plugins/marketplace/index.d.ts +6 -0
  304. package/dist/types/extensibility/plugins/marketplace/manager.d.ts +57 -0
  305. package/dist/types/extensibility/plugins/marketplace/registry.d.ts +34 -0
  306. package/dist/types/extensibility/plugins/marketplace/source-resolver.d.ts +28 -0
  307. package/dist/types/extensibility/plugins/marketplace/types.d.ts +130 -0
  308. package/dist/types/extensibility/plugins/parser.d.ts +52 -0
  309. package/dist/types/extensibility/plugins/security-scanner.d.ts +31 -0
  310. package/dist/types/extensibility/plugins/types.d.ts +149 -0
  311. package/dist/types/extensibility/shared-events.d.ts +281 -0
  312. package/dist/types/extensibility/skc-plugins/activation.d.ts +14 -0
  313. package/dist/types/extensibility/skc-plugins/compiler.d.ts +19 -0
  314. package/dist/types/extensibility/skc-plugins/constrained-hooks.d.ts +29 -0
  315. package/dist/types/extensibility/skc-plugins/index.d.ts +18 -0
  316. package/dist/types/extensibility/skc-plugins/injection.d.ts +40 -0
  317. package/dist/types/extensibility/skc-plugins/installer.d.ts +13 -0
  318. package/dist/types/extensibility/skc-plugins/loader.d.ts +3 -0
  319. package/dist/types/extensibility/skc-plugins/mcp-policy.d.ts +26 -0
  320. package/dist/types/extensibility/skc-plugins/observability.d.ts +27 -0
  321. package/dist/types/extensibility/skc-plugins/paths.d.ts +8 -0
  322. package/dist/types/extensibility/skc-plugins/prompt-appendix.d.ts +16 -0
  323. package/dist/types/extensibility/skc-plugins/registry.d.ts +32 -0
  324. package/dist/types/extensibility/skc-plugins/runtime-adapters.d.ts +64 -0
  325. package/dist/types/extensibility/skc-plugins/schema.d.ts +3 -0
  326. package/dist/types/extensibility/skc-plugins/session-validation.d.ts +42 -0
  327. package/dist/types/extensibility/skc-plugins/state.d.ts +9 -0
  328. package/dist/types/extensibility/skc-plugins/tools.d.ts +8 -0
  329. package/dist/types/extensibility/skc-plugins/types.d.ts +220 -0
  330. package/dist/types/extensibility/skc-plugins/validation.d.ts +11 -0
  331. package/dist/types/extensibility/skills.d.ts +82 -0
  332. package/dist/types/extensibility/slash-commands.d.ts +48 -0
  333. package/dist/types/extensibility/tool-proxy.d.ts +4 -0
  334. package/dist/types/extensibility/typebox.d.ts +155 -0
  335. package/dist/types/extensibility/utils.d.ts +12 -0
  336. package/dist/types/goals/index.d.ts +3 -0
  337. package/dist/types/goals/runtime.d.ts +63 -0
  338. package/dist/types/goals/state.d.ts +32 -0
  339. package/dist/types/goals/tools/goal-tool.d.ts +62 -0
  340. package/dist/types/harness-control-plane/classifier.d.ts +13 -0
  341. package/dist/types/harness-control-plane/control-endpoint.d.ts +31 -0
  342. package/dist/types/harness-control-plane/finalize.d.ts +60 -0
  343. package/dist/types/harness-control-plane/gc-adapter.d.ts +3 -0
  344. package/dist/types/harness-control-plane/operate.d.ts +35 -0
  345. package/dist/types/harness-control-plane/owner.d.ts +53 -0
  346. package/dist/types/harness-control-plane/phase-rollup.d.ts +23 -0
  347. package/dist/types/harness-control-plane/preserve.d.ts +19 -0
  348. package/dist/types/harness-control-plane/receipt-ingest.d.ts +19 -0
  349. package/dist/types/harness-control-plane/receipt-spool.d.ts +19 -0
  350. package/dist/types/harness-control-plane/receipts.d.ts +149 -0
  351. package/dist/types/harness-control-plane/rpc-adapter.d.ts +69 -0
  352. package/dist/types/harness-control-plane/seams.d.ts +21 -0
  353. package/dist/types/harness-control-plane/session-lease.d.ts +65 -0
  354. package/dist/types/harness-control-plane/state-machine.d.ts +24 -0
  355. package/dist/types/harness-control-plane/storage.d.ts +81 -0
  356. package/dist/types/harness-control-plane/types.d.ts +187 -0
  357. package/dist/types/hashline/anchors.d.ts +20 -0
  358. package/dist/types/hashline/apply.d.ts +14 -0
  359. package/dist/types/hashline/constants.d.ts +19 -0
  360. package/dist/types/hashline/diff-preview.d.ts +2 -0
  361. package/dist/types/hashline/diff.d.ts +17 -0
  362. package/dist/types/hashline/execute.d.ts +4 -0
  363. package/dist/types/hashline/hash.d.ts +123 -0
  364. package/dist/types/hashline/index.d.ts +13 -0
  365. package/dist/types/hashline/input.d.ts +11 -0
  366. package/dist/types/hashline/parser.d.ts +7 -0
  367. package/dist/types/hashline/prefixes.d.ts +7 -0
  368. package/dist/types/hashline/recovery.d.ts +27 -0
  369. package/dist/types/hashline/stream.d.ts +2 -0
  370. package/dist/types/hashline/types.d.ts +77 -0
  371. package/dist/types/hindsight/backend.d.ts +13 -0
  372. package/dist/types/hindsight/bank.d.ts +54 -0
  373. package/dist/types/hindsight/client.d.ts +224 -0
  374. package/dist/types/hindsight/config.d.ts +51 -0
  375. package/dist/types/hindsight/content.d.ts +70 -0
  376. package/dist/types/hindsight/index.d.ts +8 -0
  377. package/dist/types/hindsight/mental-models.d.ts +125 -0
  378. package/dist/types/hindsight/state.d.ts +99 -0
  379. package/dist/types/hindsight/transcript.d.ts +28 -0
  380. package/dist/types/hooks/codex-native-hooks-config.d.ts +29 -0
  381. package/dist/types/hooks/native-skill-hook.d.ts +28 -0
  382. package/dist/types/hooks/skill-keywords.d.ts +18 -0
  383. package/dist/types/hooks/skill-state.d.ts +93 -0
  384. package/dist/types/i18n/index.d.ts +38 -0
  385. package/dist/types/i18n/messages/de.d.ts +2 -0
  386. package/dist/types/i18n/messages/de.messages.d.ts +1 -0
  387. package/dist/types/i18n/messages/de.settings.d.ts +1 -0
  388. package/dist/types/i18n/messages/en.d.ts +81 -0
  389. package/dist/types/i18n/messages/es.d.ts +2 -0
  390. package/dist/types/i18n/messages/es.messages.d.ts +1 -0
  391. package/dist/types/i18n/messages/es.settings.d.ts +1 -0
  392. package/dist/types/i18n/messages/fr.d.ts +2 -0
  393. package/dist/types/i18n/messages/fr.messages.d.ts +1 -0
  394. package/dist/types/i18n/messages/fr.settings.d.ts +1 -0
  395. package/dist/types/i18n/messages/ja.d.ts +2 -0
  396. package/dist/types/i18n/messages/ja.messages.d.ts +1 -0
  397. package/dist/types/i18n/messages/ja.settings.d.ts +1 -0
  398. package/dist/types/i18n/messages/ko.d.ts +2 -0
  399. package/dist/types/i18n/messages/ko.messages.d.ts +1 -0
  400. package/dist/types/i18n/messages/ko.settings.d.ts +1 -0
  401. package/dist/types/i18n/messages/zh.d.ts +2 -0
  402. package/dist/types/i18n/messages/zh.messages.d.ts +1 -0
  403. package/dist/types/i18n/messages/zh.settings.d.ts +1 -0
  404. package/dist/types/index.d.ts +33 -0
  405. package/dist/types/internal-urls/agent-protocol.d.ts +12 -0
  406. package/dist/types/internal-urls/artifact-protocol.d.ts +6 -0
  407. package/dist/types/internal-urls/docs-index.generated.d.ts +2 -0
  408. package/dist/types/internal-urls/index.d.ts +20 -0
  409. package/dist/types/internal-urls/issue-pr-protocol.d.ts +17 -0
  410. package/dist/types/internal-urls/json-query.d.ts +30 -0
  411. package/dist/types/internal-urls/local-protocol.d.ts +39 -0
  412. package/dist/types/internal-urls/mcp-protocol.d.ts +12 -0
  413. package/dist/types/internal-urls/memory-protocol.d.ts +23 -0
  414. package/dist/types/internal-urls/parse.d.ts +19 -0
  415. package/dist/types/internal-urls/registry-helpers.d.ts +11 -0
  416. package/dist/types/internal-urls/router.d.ts +14 -0
  417. package/dist/types/internal-urls/rule-protocol.d.ts +6 -0
  418. package/dist/types/internal-urls/skc-protocol.d.ts +12 -0
  419. package/dist/types/internal-urls/skill-protocol.d.ts +13 -0
  420. package/dist/types/internal-urls/types.d.ts +109 -0
  421. package/dist/types/lsp/client.d.ts +66 -0
  422. package/dist/types/lsp/clients/biome-client.d.ts +16 -0
  423. package/dist/types/lsp/clients/index.d.ts +19 -0
  424. package/dist/types/lsp/clients/lsp-linter-client.d.ts +16 -0
  425. package/dist/types/lsp/clients/swiftlint-client.d.ts +20 -0
  426. package/dist/types/lsp/config.d.ts +65 -0
  427. package/dist/types/lsp/edits.d.ts +23 -0
  428. package/dist/types/lsp/index.d.ts +130 -0
  429. package/dist/types/lsp/lspmux.d.ts +58 -0
  430. package/dist/types/lsp/render.d.ts +32 -0
  431. package/dist/types/lsp/startup-events.d.ts +12 -0
  432. package/dist/types/lsp/types.d.ts +306 -0
  433. package/dist/types/lsp/utils.d.ts +108 -0
  434. package/dist/types/main.d.ts +75 -0
  435. package/dist/types/memories/index.d.ts +28 -0
  436. package/dist/types/memories/storage.d.ts +110 -0
  437. package/dist/types/memory-backend/index.d.ts +4 -0
  438. package/dist/types/memory-backend/local-backend.d.ts +9 -0
  439. package/dist/types/memory-backend/off-backend.d.ts +7 -0
  440. package/dist/types/memory-backend/resolve.d.ts +15 -0
  441. package/dist/types/memory-backend/types.d.ts +61 -0
  442. package/dist/types/migrate/action-planner.d.ts +11 -0
  443. package/dist/types/migrate/adapters/claude-code.d.ts +2 -0
  444. package/dist/types/migrate/adapters/codex.d.ts +5 -0
  445. package/dist/types/migrate/adapters/index.d.ts +45 -0
  446. package/dist/types/migrate/adapters/opencode.d.ts +2 -0
  447. package/dist/types/migrate/executor.d.ts +2 -0
  448. package/dist/types/migrate/mcp-mapper.d.ts +20 -0
  449. package/dist/types/migrate/report.d.ts +18 -0
  450. package/dist/types/migrate/skill-normalizer.d.ts +27 -0
  451. package/dist/types/migrate/types.d.ts +126 -0
  452. package/dist/types/modes/acp/acp-agent.d.ts +61 -0
  453. package/dist/types/modes/acp/acp-client-bridge.d.ts +9 -0
  454. package/dist/types/modes/acp/acp-event-mapper.d.ts +34 -0
  455. package/dist/types/modes/acp/acp-mode.d.ts +5 -0
  456. package/dist/types/modes/acp/index.d.ts +2 -0
  457. package/dist/types/modes/acp/terminal-auth.d.ts +6 -0
  458. package/dist/types/modes/bridge/auth.d.ts +12 -0
  459. package/dist/types/modes/bridge/bridge-client-bridge.d.ts +9 -0
  460. package/dist/types/modes/bridge/bridge-mode.d.ts +47 -0
  461. package/dist/types/modes/bridge/bridge-ui-context.d.ts +88 -0
  462. package/dist/types/modes/bridge/event-stream.d.ts +8 -0
  463. package/dist/types/modes/components/agent-dashboard.d.ts +21 -0
  464. package/dist/types/modes/components/assistant-message.d.ts +20 -0
  465. package/dist/types/modes/components/bash-execution.d.ts +29 -0
  466. package/dist/types/modes/components/bordered-loader.d.ts +11 -0
  467. package/dist/types/modes/components/branch-summary-message.d.ts +13 -0
  468. package/dist/types/modes/components/btw-panel.d.ts +16 -0
  469. package/dist/types/modes/components/compaction-summary-message.d.ts +13 -0
  470. package/dist/types/modes/components/countdown-timer.d.ts +14 -0
  471. package/dist/types/modes/components/custom-editor.d.ts +67 -0
  472. package/dist/types/modes/components/custom-message.d.ts +15 -0
  473. package/dist/types/modes/components/custom-model-preset-wizard.d.ts +12 -0
  474. package/dist/types/modes/components/custom-provider-wizard.d.ts +10 -0
  475. package/dist/types/modes/components/diff.d.ts +11 -0
  476. package/dist/types/modes/components/dynamic-border.d.ts +14 -0
  477. package/dist/types/modes/components/eval-execution.d.ts +23 -0
  478. package/dist/types/modes/components/execution-shared.d.ts +46 -0
  479. package/dist/types/modes/components/extensions/extension-dashboard.d.ts +26 -0
  480. package/dist/types/modes/components/extensions/extension-list.d.ts +39 -0
  481. package/dist/types/modes/components/extensions/index.d.ts +8 -0
  482. package/dist/types/modes/components/extensions/inspector-panel.d.ts +8 -0
  483. package/dist/types/modes/components/extensions/state-manager.d.ts +50 -0
  484. package/dist/types/modes/components/extensions/types.d.ts +151 -0
  485. package/dist/types/modes/components/footer.d.ts +30 -0
  486. package/dist/types/modes/components/history-search.d.ts +7 -0
  487. package/dist/types/modes/components/hook-editor.d.ts +18 -0
  488. package/dist/types/modes/components/hook-input.d.ts +15 -0
  489. package/dist/types/modes/components/hook-message.d.ts +15 -0
  490. package/dist/types/modes/components/hook-selector.d.ts +53 -0
  491. package/dist/types/modes/components/index.d.ts +35 -0
  492. package/dist/types/modes/components/jobs-overlay-model.d.ts +31 -0
  493. package/dist/types/modes/components/jobs-overlay.d.ts +30 -0
  494. package/dist/types/modes/components/keybinding-hints.d.ts +40 -0
  495. package/dist/types/modes/components/login-dialog.d.ts +32 -0
  496. package/dist/types/modes/components/message-frame.d.ts +42 -0
  497. package/dist/types/modes/components/model-selector.d.ts +60 -0
  498. package/dist/types/modes/components/oauth-selector.d.ts +17 -0
  499. package/dist/types/modes/components/plugin-selector.d.ts +26 -0
  500. package/dist/types/modes/components/plugin-settings.d.ts +66 -0
  501. package/dist/types/modes/components/provider-onboarding-selector.d.ts +7 -0
  502. package/dist/types/modes/components/queue-mode-selector.d.ts +9 -0
  503. package/dist/types/modes/components/queued-message-selector.d.ts +12 -0
  504. package/dist/types/modes/components/read-tool-group.d.ts +30 -0
  505. package/dist/types/modes/components/runtime-mcp-add-wizard.d.ts +26 -0
  506. package/dist/types/modes/components/session-observer-overlay.d.ts +11 -0
  507. package/dist/types/modes/components/session-selector.d.ts +30 -0
  508. package/dist/types/modes/components/settings-defs.d.ts +50 -0
  509. package/dist/types/modes/components/settings-selector.d.ts +62 -0
  510. package/dist/types/modes/components/show-images-selector.d.ts +9 -0
  511. package/dist/types/modes/components/skill-hud/render.d.ts +2 -0
  512. package/dist/types/modes/components/skill-message.d.ts +10 -0
  513. package/dist/types/modes/components/status-line/context-thresholds.d.ts +4 -0
  514. package/dist/types/modes/components/status-line/git-utils.d.ts +28 -0
  515. package/dist/types/modes/components/status-line/index.d.ts +4 -0
  516. package/dist/types/modes/components/status-line/presets.d.ts +3 -0
  517. package/dist/types/modes/components/status-line/segments.d.ts +5 -0
  518. package/dist/types/modes/components/status-line/separators.d.ts +3 -0
  519. package/dist/types/modes/components/status-line/token-rate.d.ts +10 -0
  520. package/dist/types/modes/components/status-line/types.d.ts +77 -0
  521. package/dist/types/modes/components/status-line.d.ts +103 -0
  522. package/dist/types/modes/components/theme-selector.d.ts +10 -0
  523. package/dist/types/modes/components/thinking-selector.d.ts +10 -0
  524. package/dist/types/modes/components/todo-reminder.d.ts +13 -0
  525. package/dist/types/modes/components/tool-execution.d.ts +54 -0
  526. package/dist/types/modes/components/tree-selector.d.ts +31 -0
  527. package/dist/types/modes/components/ttsr-notification.d.ts +13 -0
  528. package/dist/types/modes/components/two-column-body.d.ts +9 -0
  529. package/dist/types/modes/components/user-message-selector.d.ts +28 -0
  530. package/dist/types/modes/components/user-message.d.ts +7 -0
  531. package/dist/types/modes/components/visual-truncate.d.ts +19 -0
  532. package/dist/types/modes/components/welcome.d.ts +45 -0
  533. package/dist/types/modes/controllers/btw-controller.d.ts +10 -0
  534. package/dist/types/modes/controllers/command-controller-shared.d.ts +47 -0
  535. package/dist/types/modes/controllers/command-controller.d.ts +40 -0
  536. package/dist/types/modes/controllers/event-controller.d.ts +17 -0
  537. package/dist/types/modes/controllers/extension-ui-controller.d.ts +80 -0
  538. package/dist/types/modes/controllers/input-controller.d.ts +42 -0
  539. package/dist/types/modes/controllers/runtime-mcp-command-controller.d.ts +10 -0
  540. package/dist/types/modes/controllers/selector-controller.d.ts +66 -0
  541. package/dist/types/modes/controllers/ssh-command-controller.d.ts +10 -0
  542. package/dist/types/modes/controllers/todo-command-controller.d.ts +7 -0
  543. package/dist/types/modes/emoji-autocomplete.d.ts +16 -0
  544. package/dist/types/modes/index.d.ts +10 -0
  545. package/dist/types/modes/interactive-mode.d.ts +273 -0
  546. package/dist/types/modes/jobs-observer.d.ts +57 -0
  547. package/dist/types/modes/oauth-manual-input.d.ts +8 -0
  548. package/dist/types/modes/print-mode.d.ts +45 -0
  549. package/dist/types/modes/prompt-action-autocomplete.d.ts +50 -0
  550. package/dist/types/modes/rpc/host-tools.d.ts +1 -0
  551. package/dist/types/modes/rpc/host-uris.d.ts +1 -0
  552. package/dist/types/modes/rpc/rpc-client.d.ts +288 -0
  553. package/dist/types/modes/rpc/rpc-mode.d.ts +87 -0
  554. package/dist/types/modes/rpc/rpc-socket-security.d.ts +7 -0
  555. package/dist/types/modes/rpc/rpc-types.d.ts +794 -0
  556. package/dist/types/modes/runtime-init.d.ts +21 -0
  557. package/dist/types/modes/session-observer-registry.d.ts +26 -0
  558. package/dist/types/modes/shared/agent-wire/approval-gate.d.ts +57 -0
  559. package/dist/types/modes/shared/agent-wire/command-contract.d.ts +18 -0
  560. package/dist/types/modes/shared/agent-wire/command-dispatch.d.ts +37 -0
  561. package/dist/types/modes/shared/agent-wire/command-validation.d.ts +2 -0
  562. package/dist/types/modes/shared/agent-wire/deep-interview-gate.d.ts +94 -0
  563. package/dist/types/modes/shared/agent-wire/event-contract.d.ts +103 -0
  564. package/dist/types/modes/shared/agent-wire/event-envelope.d.ts +60 -0
  565. package/dist/types/modes/shared/agent-wire/event-observation.d.ts +37 -0
  566. package/dist/types/modes/shared/agent-wire/handshake.d.ts +56 -0
  567. package/dist/types/modes/shared/agent-wire/host-tool-bridge.d.ts +16 -0
  568. package/dist/types/modes/shared/agent-wire/host-uri-bridge.d.ts +17 -0
  569. package/dist/types/modes/shared/agent-wire/protocol.d.ts +25 -0
  570. package/dist/types/modes/shared/agent-wire/responses.d.ts +4 -0
  571. package/dist/types/modes/shared/agent-wire/scopes.d.ts +18 -0
  572. package/dist/types/modes/shared/agent-wire/session-registry.d.ts +25 -0
  573. package/dist/types/modes/shared/agent-wire/ui-request-broker.d.ts +42 -0
  574. package/dist/types/modes/shared/agent-wire/ui-result.d.ts +27 -0
  575. package/dist/types/modes/shared/agent-wire/unattended-action-policy.d.ts +29 -0
  576. package/dist/types/modes/shared/agent-wire/unattended-audit.d.ts +68 -0
  577. package/dist/types/modes/shared/agent-wire/unattended-run-controller.d.ts +161 -0
  578. package/dist/types/modes/shared/agent-wire/unattended-session.d.ts +82 -0
  579. package/dist/types/modes/shared/agent-wire/workflow-gate-broker.d.ts +114 -0
  580. package/dist/types/modes/shared/agent-wire/workflow-gate-schema.d.ts +39 -0
  581. package/dist/types/modes/shared.d.ts +15 -0
  582. package/dist/types/modes/slash-command-visibility.d.ts +1 -0
  583. package/dist/types/modes/theme/defaults/index.d.ts +652 -0
  584. package/dist/types/modes/theme/mermaid-cache.d.ts +9 -0
  585. package/dist/types/modes/theme/shimmer.d.ts +38 -0
  586. package/dist/types/modes/theme/theme.d.ts +275 -0
  587. package/dist/types/modes/tmux-scroll.d.ts +18 -0
  588. package/dist/types/modes/types.d.ts +289 -0
  589. package/dist/types/modes/utils/abort-message.d.ts +4 -0
  590. package/dist/types/modes/utils/context-usage.d.ts +51 -0
  591. package/dist/types/modes/utils/hotkeys-markdown.d.ts +5 -0
  592. package/dist/types/modes/utils/keybinding-matchers.d.ts +10 -0
  593. package/dist/types/modes/utils/terminal-bell.d.ts +3 -0
  594. package/dist/types/modes/utils/tools-markdown.d.ts +5 -0
  595. package/dist/types/modes/utils/ui-helpers.d.ts +54 -0
  596. package/dist/types/notifications/attachment-registry.d.ts +17 -0
  597. package/dist/types/notifications/chat-adapters.d.ts +9 -0
  598. package/dist/types/notifications/config-commands.d.ts +26 -0
  599. package/dist/types/notifications/config.d.ts +82 -0
  600. package/dist/types/notifications/daemon-paths.d.ts +10 -0
  601. package/dist/types/notifications/engine.d.ts +59 -0
  602. package/dist/types/notifications/helpers.d.ts +55 -0
  603. package/dist/types/notifications/html-format.d.ts +75 -0
  604. package/dist/types/notifications/index.d.ts +179 -0
  605. package/dist/types/notifications/lifecycle-commands.d.ts +68 -0
  606. package/dist/types/notifications/lifecycle-control-runtime.d.ts +98 -0
  607. package/dist/types/notifications/lifecycle-orchestrator.d.ts +144 -0
  608. package/dist/types/notifications/managed-daemon.d.ts +48 -0
  609. package/dist/types/notifications/operator-runtime.d.ts +52 -0
  610. package/dist/types/notifications/rate-limit-pool.d.ts +95 -0
  611. package/dist/types/notifications/recent-activity.d.ts +39 -0
  612. package/dist/types/notifications/telegram-cli.d.ts +19 -0
  613. package/dist/types/notifications/telegram-daemon-cli.d.ts +28 -0
  614. package/dist/types/notifications/telegram-daemon-control.d.ts +64 -0
  615. package/dist/types/notifications/telegram-daemon.d.ts +407 -0
  616. package/dist/types/notifications/telegram-reference.d.ts +112 -0
  617. package/dist/types/notifications/threaded-inbound.d.ts +77 -0
  618. package/dist/types/notifications/threaded-render.d.ts +78 -0
  619. package/dist/types/notifications/topic-registry.d.ts +70 -0
  620. package/dist/types/plan-mode/approved-plan.d.ts +49 -0
  621. package/dist/types/plan-mode/state.d.ts +6 -0
  622. package/dist/types/registry/agent-registry.d.ts +62 -0
  623. package/dist/types/reminders/star-reminder.d.ts +115 -0
  624. package/dist/types/research-plan/index.d.ts +1 -0
  625. package/dist/types/research-plan/ledger.d.ts +33 -0
  626. package/dist/types/rlm/artifacts.d.ts +9 -0
  627. package/dist/types/rlm/complete-research-tool.d.ts +35 -0
  628. package/dist/types/rlm/data-context.d.ts +6 -0
  629. package/dist/types/rlm/index.d.ts +47 -0
  630. package/dist/types/rlm/notebook.d.ts +12 -0
  631. package/dist/types/rlm/preset.d.ts +23 -0
  632. package/dist/types/rlm/python-tool.d.ts +16 -0
  633. package/dist/types/rlm/report.d.ts +14 -0
  634. package/dist/types/rlm/types.d.ts +37 -0
  635. package/dist/types/runtime/process-lifecycle.d.ts +108 -0
  636. package/dist/types/runtime-api-key.d.ts +7 -0
  637. package/dist/types/runtime-mcp/client.d.ts +74 -0
  638. package/dist/types/runtime-mcp/config-writer.d.ts +88 -0
  639. package/dist/types/runtime-mcp/config.d.ts +77 -0
  640. package/dist/types/runtime-mcp/discoverable-tool-metadata.d.ts +7 -0
  641. package/dist/types/runtime-mcp/index.d.ts +18 -0
  642. package/dist/types/runtime-mcp/json-rpc.d.ts +22 -0
  643. package/dist/types/runtime-mcp/loader.d.ts +45 -0
  644. package/dist/types/runtime-mcp/manager.d.ts +195 -0
  645. package/dist/types/runtime-mcp/oauth-discovery.d.ts +40 -0
  646. package/dist/types/runtime-mcp/oauth-flow.d.ts +59 -0
  647. package/dist/types/runtime-mcp/render.d.ts +25 -0
  648. package/dist/types/runtime-mcp/smithery-auth.d.ts +16 -0
  649. package/dist/types/runtime-mcp/smithery-connect.d.ts +38 -0
  650. package/dist/types/runtime-mcp/smithery-registry.d.ts +51 -0
  651. package/dist/types/runtime-mcp/tool-bridge.d.ts +86 -0
  652. package/dist/types/runtime-mcp/tool-cache.d.ts +8 -0
  653. package/dist/types/runtime-mcp/transports/http.d.ts +36 -0
  654. package/dist/types/runtime-mcp/transports/index.d.ts +5 -0
  655. package/dist/types/runtime-mcp/transports/stdio.d.ts +29 -0
  656. package/dist/types/runtime-mcp/types.d.ts +348 -0
  657. package/dist/types/sdk.d.ts +248 -0
  658. package/dist/types/secrets/index.d.ts +9 -0
  659. package/dist/types/secrets/obfuscator.d.ts +23 -0
  660. package/dist/types/secrets/regex.d.ts +2 -0
  661. package/dist/types/session/agent-session.d.ts +1182 -0
  662. package/dist/types/session/agent-storage.d.ts +101 -0
  663. package/dist/types/session/artifacts.d.ts +64 -0
  664. package/dist/types/session/auth-broker-config.d.ts +13 -0
  665. package/dist/types/session/auth-storage.d.ts +6 -0
  666. package/dist/types/session/blob-store.d.ts +160 -0
  667. package/dist/types/session/client-bridge.d.ts +88 -0
  668. package/dist/types/session/contribution-prep.d.ts +47 -0
  669. package/dist/types/session/file-mention-pruning.d.ts +8 -0
  670. package/dist/types/session/history-storage.d.ts +16 -0
  671. package/dist/types/session/messages.d.ts +169 -0
  672. package/dist/types/session/session-dump-format.d.ts +22 -0
  673. package/dist/types/session/session-manager.d.ts +660 -0
  674. package/dist/types/session/session-storage.d.ts +88 -0
  675. package/dist/types/session/streaming-output.d.ts +209 -0
  676. package/dist/types/session/tool-choice-queue.d.ts +84 -0
  677. package/dist/types/session/yield-queue.d.ts +24 -0
  678. package/dist/types/setup/credential-auto-import.d.ts +63 -0
  679. package/dist/types/setup/credential-import.d.ts +82 -0
  680. package/dist/types/setup/hermes-setup.d.ts +78 -0
  681. package/dist/types/setup/host-plugin-setup.d.ts +39 -0
  682. package/dist/types/setup/model-onboarding-guidance.d.ts +9 -0
  683. package/dist/types/setup/provider-onboarding.d.ts +52 -0
  684. package/dist/types/skc-runtime/cli-write-receipt.d.ts +24 -0
  685. package/dist/types/skc-runtime/deep-interview-ambiguity.d.ts +39 -0
  686. package/dist/types/skc-runtime/deep-interview-recorder.d.ts +114 -0
  687. package/dist/types/skc-runtime/deep-interview-runtime.d.ts +36 -0
  688. package/dist/types/skc-runtime/deep-interview-state.d.ts +127 -0
  689. package/dist/types/skc-runtime/gc-render.d.ts +6 -0
  690. package/dist/types/skc-runtime/gc-runtime.d.ts +134 -0
  691. package/dist/types/skc-runtime/goal-mode-request.d.ts +53 -0
  692. package/dist/types/skc-runtime/launch-tmux.d.ts +78 -0
  693. package/dist/types/skc-runtime/launch-worktree.d.ts +46 -0
  694. package/dist/types/skc-runtime/ledger-event-renderer.d.ts +68 -0
  695. package/dist/types/skc-runtime/psmux-detect.d.ts +78 -0
  696. package/dist/types/skc-runtime/ralplan-runtime.d.ts +26 -0
  697. package/dist/types/skc-runtime/restricted-role-agent-bash.d.ts +3 -0
  698. package/dist/types/skc-runtime/session-layout.d.ts +59 -0
  699. package/dist/types/skc-runtime/session-resolution.d.ts +47 -0
  700. package/dist/types/skc-runtime/session-state-sidecar.d.ts +39 -0
  701. package/dist/types/skc-runtime/state-graph.d.ts +4 -0
  702. package/dist/types/skc-runtime/state-migrations.d.ts +33 -0
  703. package/dist/types/skc-runtime/state-renderer.d.ts +70 -0
  704. package/dist/types/skc-runtime/state-runtime.d.ts +38 -0
  705. package/dist/types/skc-runtime/state-schema.d.ts +319 -0
  706. package/dist/types/skc-runtime/state-validation.d.ts +6 -0
  707. package/dist/types/skc-runtime/state-writer.d.ts +244 -0
  708. package/dist/types/skc-runtime/team-gc.d.ts +7 -0
  709. package/dist/types/skc-runtime/team-runtime.d.ts +355 -0
  710. package/dist/types/skc-runtime/tmux-common.d.ts +104 -0
  711. package/dist/types/skc-runtime/tmux-gc.d.ts +7 -0
  712. package/dist/types/skc-runtime/tmux-sessions.d.ts +62 -0
  713. package/dist/types/skc-runtime/ultragoal-guard.d.ts +93 -0
  714. package/dist/types/skc-runtime/ultragoal-receipt-freshness.d.ts +42 -0
  715. package/dist/types/skc-runtime/ultragoal-runtime.d.ts +410 -0
  716. package/dist/types/skc-runtime/workflow-command-ref.d.ts +43 -0
  717. package/dist/types/skc-runtime/workflow-manifest.d.ts +54 -0
  718. package/dist/types/skill-state/active-state.d.ts +126 -0
  719. package/dist/types/skill-state/canonical-skills.d.ts +3 -0
  720. package/dist/types/skill-state/deep-interview-mutation-guard.d.ts +38 -0
  721. package/dist/types/skill-state/initial-phase.d.ts +12 -0
  722. package/dist/types/skill-state/workflow-hud.d.ts +83 -0
  723. package/dist/types/skill-state/workflow-state-contract.d.ts +57 -0
  724. package/dist/types/skill-state/workflow-state-version.d.ts +3 -0
  725. package/dist/types/slash-commands/acp-builtins.d.ts +18 -0
  726. package/dist/types/slash-commands/builtin-registry.d.ts +24 -0
  727. package/dist/types/slash-commands/helpers/context-report.d.ts +7 -0
  728. package/dist/types/slash-commands/helpers/fast-status-report.d.ts +82 -0
  729. package/dist/types/slash-commands/helpers/format.d.ts +10 -0
  730. package/dist/types/slash-commands/helpers/mcp.d.ts +3 -0
  731. package/dist/types/slash-commands/helpers/parse.d.ts +33 -0
  732. package/dist/types/slash-commands/helpers/ssh.d.ts +3 -0
  733. package/dist/types/slash-commands/helpers/todo.d.ts +3 -0
  734. package/dist/types/slash-commands/helpers/usage-report.d.ts +7 -0
  735. package/dist/types/slash-commands/types.d.ts +120 -0
  736. package/dist/types/ssh/config-writer.d.ts +49 -0
  737. package/dist/types/ssh/connection-manager.d.ts +33 -0
  738. package/dist/types/ssh/ssh-executor.d.ts +37 -0
  739. package/dist/types/ssh/sshfs-mount.d.ts +6 -0
  740. package/dist/types/ssh/utils.d.ts +2 -0
  741. package/dist/types/stt/downloader.d.ts +9 -0
  742. package/dist/types/stt/index.d.ts +3 -0
  743. package/dist/types/stt/recorder.d.ts +13 -0
  744. package/dist/types/stt/setup.d.ts +18 -0
  745. package/dist/types/stt/stt-controller.d.ts +16 -0
  746. package/dist/types/stt/transcriber.d.ts +16 -0
  747. package/dist/types/system-prompt.d.ts +118 -0
  748. package/dist/types/task/agents.d.ts +28 -0
  749. package/dist/types/task/commands.d.ts +35 -0
  750. package/dist/types/task/discovery.d.ts +19 -0
  751. package/dist/types/task/executor.d.ts +124 -0
  752. package/dist/types/task/fork-context-advisory.d.ts +13 -0
  753. package/dist/types/task/fork-context-budget.d.ts +7 -0
  754. package/dist/types/task/id.d.ts +7 -0
  755. package/dist/types/task/index.d.ts +43 -0
  756. package/dist/types/task/name-generator.d.ts +16 -0
  757. package/dist/types/task/output-manager.d.ts +36 -0
  758. package/dist/types/task/parallel.d.ts +34 -0
  759. package/dist/types/task/receipt.d.ts +87 -0
  760. package/dist/types/task/render.d.ts +28 -0
  761. package/dist/types/task/roi-reconciliation.d.ts +27 -0
  762. package/dist/types/task/simple-mode.d.ts +8 -0
  763. package/dist/types/task/skc-command.d.ts +7 -0
  764. package/dist/types/task/spawn-gate.d.ts +29 -0
  765. package/dist/types/task/subprocess-tool-registry.d.ts +72 -0
  766. package/dist/types/task/token-log.d.ts +30 -0
  767. package/dist/types/task/token-log.test.d.ts +1 -0
  768. package/dist/types/task/types.d.ts +508 -0
  769. package/dist/types/task/worktree.d.ts +94 -0
  770. package/dist/types/thinking-metadata.d.ts +16 -0
  771. package/dist/types/thinking.d.ts +22 -0
  772. package/dist/types/tool-discovery/tool-index.d.ts +112 -0
  773. package/dist/types/tools/archive-reader.d.ts +40 -0
  774. package/dist/types/tools/ask-answer-registry.d.ts +13 -0
  775. package/dist/types/tools/ask.d.ts +123 -0
  776. package/dist/types/tools/ast-edit.d.ts +77 -0
  777. package/dist/types/tools/ast-grep.d.ts +69 -0
  778. package/dist/types/tools/auto-generated-guard.d.ts +17 -0
  779. package/dist/types/tools/bash-allowed-prefixes.d.ts +10 -0
  780. package/dist/types/tools/bash-command-fixup.d.ts +11 -0
  781. package/dist/types/tools/bash-interactive.d.ts +16 -0
  782. package/dist/types/tools/bash-interceptor.d.ts +24 -0
  783. package/dist/types/tools/bash-pty-selection.d.ts +7 -0
  784. package/dist/types/tools/bash-skill-urls.d.ts +31 -0
  785. package/dist/types/tools/bash.d.ts +157 -0
  786. package/dist/types/tools/bisect.d.ts +81 -0
  787. package/dist/types/tools/browser/actions.d.ts +54 -0
  788. package/dist/types/tools/browser/attach.d.ts +50 -0
  789. package/dist/types/tools/browser/launch.d.ts +62 -0
  790. package/dist/types/tools/browser/readable.d.ts +17 -0
  791. package/dist/types/tools/browser/registry.d.ts +57 -0
  792. package/dist/types/tools/browser/render.d.ts +53 -0
  793. package/dist/types/tools/browser/tab-protocol.d.ts +144 -0
  794. package/dist/types/tools/browser/tab-supervisor.d.ts +103 -0
  795. package/dist/types/tools/browser/tab-worker-entry.d.ts +1 -0
  796. package/dist/types/tools/browser/tab-worker.d.ts +19 -0
  797. package/dist/types/tools/browser.d.ts +211 -0
  798. package/dist/types/tools/calculator.d.ts +76 -0
  799. package/dist/types/tools/checkpoint.d.ts +63 -0
  800. package/dist/types/tools/composer-bash-policy.d.ts +14 -0
  801. package/dist/types/tools/computer/render.d.ts +17 -0
  802. package/dist/types/tools/computer-gc.d.ts +23 -0
  803. package/dist/types/tools/computer.d.ts +465 -0
  804. package/dist/types/tools/conflict-detect.d.ts +205 -0
  805. package/dist/types/tools/context.d.ts +19 -0
  806. package/dist/types/tools/cron.d.ts +91 -0
  807. package/dist/types/tools/debug.d.ts +209 -0
  808. package/dist/types/tools/eval.d.ts +108 -0
  809. package/dist/types/tools/fetch.d.ts +84 -0
  810. package/dist/types/tools/file-recorder.d.ts +13 -0
  811. package/dist/types/tools/find.d.ts +95 -0
  812. package/dist/types/tools/fs-cache-invalidation.d.ts +15 -0
  813. package/dist/types/tools/gh-format.d.ts +6 -0
  814. package/dist/types/tools/gh-renderer.d.ts +25 -0
  815. package/dist/types/tools/gh.d.ts +356 -0
  816. package/dist/types/tools/github-cache.d.ts +103 -0
  817. package/dist/types/tools/grouped-file-output.d.ts +36 -0
  818. package/dist/types/tools/hindsight-recall.d.ts +21 -0
  819. package/dist/types/tools/hindsight-reflect.d.ts +23 -0
  820. package/dist/types/tools/hindsight-retain.d.ts +27 -0
  821. package/dist/types/tools/image-gen.d.ts +79 -0
  822. package/dist/types/tools/index.d.ts +318 -0
  823. package/dist/types/tools/irc.d.ts +79 -0
  824. package/dist/types/tools/job.d.ts +78 -0
  825. package/dist/types/tools/json-tree.d.ts +23 -0
  826. package/dist/types/tools/jtd-to-json-schema.d.ts +29 -0
  827. package/dist/types/tools/jtd-to-typescript.d.ts +26 -0
  828. package/dist/types/tools/jtd-utils.d.ts +42 -0
  829. package/dist/types/tools/list-limit.d.ts +12 -0
  830. package/dist/types/tools/match-line-format.d.ts +11 -0
  831. package/dist/types/tools/monitor.d.ts +54 -0
  832. package/dist/types/tools/output-meta.d.ts +204 -0
  833. package/dist/types/tools/path-utils.d.ts +147 -0
  834. package/dist/types/tools/plan-mode-guard.d.ts +18 -0
  835. package/dist/types/tools/read.d.ts +85 -0
  836. package/dist/types/tools/recipe/index.d.ts +45 -0
  837. package/dist/types/tools/recipe/render.d.ts +36 -0
  838. package/dist/types/tools/recipe/runner.d.ts +60 -0
  839. package/dist/types/tools/recipe/runners/cargo.d.ts +16 -0
  840. package/dist/types/tools/recipe/runners/index.d.ts +2 -0
  841. package/dist/types/tools/recipe/runners/just.d.ts +2 -0
  842. package/dist/types/tools/recipe/runners/make.d.ts +2 -0
  843. package/dist/types/tools/recipe/runners/pkg.d.ts +2 -0
  844. package/dist/types/tools/recipe/runners/task.d.ts +2 -0
  845. package/dist/types/tools/render-mermaid.d.ts +37 -0
  846. package/dist/types/tools/render-utils.d.ts +158 -0
  847. package/dist/types/tools/renderers.d.ts +26 -0
  848. package/dist/types/tools/resolve.d.ts +80 -0
  849. package/dist/types/tools/resource-gc.d.ts +54 -0
  850. package/dist/types/tools/review.d.ts +63 -0
  851. package/dist/types/tools/search-tool-bm25.d.ts +65 -0
  852. package/dist/types/tools/search.d.ts +93 -0
  853. package/dist/types/tools/skill.d.ts +47 -0
  854. package/dist/types/tools/sqlite-reader.d.ts +94 -0
  855. package/dist/types/tools/ssh.d.ts +67 -0
  856. package/dist/types/tools/subagent-render.d.ts +31 -0
  857. package/dist/types/tools/subagent.d.ts +117 -0
  858. package/dist/types/tools/telegram-send.d.ts +32 -0
  859. package/dist/types/tools/todo-write.d.ts +120 -0
  860. package/dist/types/tools/tool-errors.d.ts +33 -0
  861. package/dist/types/tools/tool-result.d.ts +30 -0
  862. package/dist/types/tools/tool-timeouts.d.ts +56 -0
  863. package/dist/types/tools/ultragoal-ask-guard.d.ts +12 -0
  864. package/dist/types/tools/vim.d.ts +58 -0
  865. package/dist/types/tools/write.d.ts +59 -0
  866. package/dist/types/tools/yield.d.ts +25 -0
  867. package/dist/types/tui/code-cell.d.ts +32 -0
  868. package/dist/types/tui/file-list.d.ts +22 -0
  869. package/dist/types/tui/hyperlink.d.ts +42 -0
  870. package/dist/types/tui/index.d.ts +11 -0
  871. package/dist/types/tui/output-block.d.ts +28 -0
  872. package/dist/types/tui/status-line.d.ts +18 -0
  873. package/dist/types/tui/tree-list.d.ts +19 -0
  874. package/dist/types/tui/types.d.ts +13 -0
  875. package/dist/types/tui/utils.d.ts +36 -0
  876. package/dist/types/utils/changelog.d.ts +37 -0
  877. package/dist/types/utils/clipboard.d.ts +22 -0
  878. package/dist/types/utils/cmux-workspace.d.ts +52 -0
  879. package/dist/types/utils/command-args.d.ts +9 -0
  880. package/dist/types/utils/commit-message-generator.d.ts +7 -0
  881. package/dist/types/utils/edit-mode.d.ts +13 -0
  882. package/dist/types/utils/event-bus.d.ts +6 -0
  883. package/dist/types/utils/external-editor.d.ts +17 -0
  884. package/dist/types/utils/file-display-mode.d.ts +27 -0
  885. package/dist/types/utils/file-mentions.d.ts +25 -0
  886. package/dist/types/utils/git.d.ts +393 -0
  887. package/dist/types/utils/image-loading.d.ts +26 -0
  888. package/dist/types/utils/image-resize.d.ts +39 -0
  889. package/dist/types/utils/lang-from-path.d.ts +8 -0
  890. package/dist/types/utils/markit.d.ts +7 -0
  891. package/dist/types/utils/open.d.ts +2 -0
  892. package/dist/types/utils/session-color.d.ts +10 -0
  893. package/dist/types/utils/shell-snapshot.d.ts +5 -0
  894. package/dist/types/utils/sixel.d.ts +21 -0
  895. package/dist/types/utils/title-generator.d.ts +31 -0
  896. package/dist/types/utils/tool-choice.d.ts +20 -0
  897. package/dist/types/utils/tools-manager.d.ts +9 -0
  898. package/dist/types/vim/buffer.d.ts +41 -0
  899. package/dist/types/vim/commands.d.ts +6 -0
  900. package/dist/types/vim/engine.d.ts +47 -0
  901. package/dist/types/vim/parser.d.ts +3 -0
  902. package/dist/types/vim/render.d.ts +25 -0
  903. package/dist/types/vim/types.d.ts +182 -0
  904. package/dist/types/web/insane/bridge.d.ts +103 -0
  905. package/dist/types/web/insane/url-guard.d.ts +25 -0
  906. package/dist/types/web/kagi.d.ts +23 -0
  907. package/dist/types/web/parallel.d.ts +58 -0
  908. package/dist/types/web/scrapers/artifacthub.d.ts +6 -0
  909. package/dist/types/web/scrapers/arxiv.d.ts +5 -0
  910. package/dist/types/web/scrapers/aur.d.ts +5 -0
  911. package/dist/types/web/scrapers/biorxiv.d.ts +5 -0
  912. package/dist/types/web/scrapers/bluesky.d.ts +5 -0
  913. package/dist/types/web/scrapers/brew.d.ts +5 -0
  914. package/dist/types/web/scrapers/cheatsh.d.ts +8 -0
  915. package/dist/types/web/scrapers/chocolatey.d.ts +5 -0
  916. package/dist/types/web/scrapers/choosealicense.d.ts +2 -0
  917. package/dist/types/web/scrapers/cisa-kev.d.ts +5 -0
  918. package/dist/types/web/scrapers/clojars.d.ts +5 -0
  919. package/dist/types/web/scrapers/coingecko.d.ts +5 -0
  920. package/dist/types/web/scrapers/crates-io.d.ts +5 -0
  921. package/dist/types/web/scrapers/crossref.d.ts +2 -0
  922. package/dist/types/web/scrapers/devto.d.ts +5 -0
  923. package/dist/types/web/scrapers/discogs.d.ts +8 -0
  924. package/dist/types/web/scrapers/discourse.d.ts +5 -0
  925. package/dist/types/web/scrapers/dockerhub.d.ts +5 -0
  926. package/dist/types/web/scrapers/docs-rs.d.ts +2 -0
  927. package/dist/types/web/scrapers/fdroid.d.ts +5 -0
  928. package/dist/types/web/scrapers/firefox-addons.d.ts +2 -0
  929. package/dist/types/web/scrapers/flathub.d.ts +2 -0
  930. package/dist/types/web/scrapers/github-gist.d.ts +5 -0
  931. package/dist/types/web/scrapers/github.d.ts +12 -0
  932. package/dist/types/web/scrapers/gitlab.d.ts +5 -0
  933. package/dist/types/web/scrapers/go-pkg.d.ts +5 -0
  934. package/dist/types/web/scrapers/hackage.d.ts +5 -0
  935. package/dist/types/web/scrapers/hackernews.d.ts +2 -0
  936. package/dist/types/web/scrapers/hex.d.ts +5 -0
  937. package/dist/types/web/scrapers/huggingface.d.ts +2 -0
  938. package/dist/types/web/scrapers/iacr.d.ts +5 -0
  939. package/dist/types/web/scrapers/index.d.ts +84 -0
  940. package/dist/types/web/scrapers/jetbrains-marketplace.d.ts +2 -0
  941. package/dist/types/web/scrapers/lemmy.d.ts +2 -0
  942. package/dist/types/web/scrapers/lobsters.d.ts +5 -0
  943. package/dist/types/web/scrapers/mastodon.d.ts +5 -0
  944. package/dist/types/web/scrapers/maven.d.ts +6 -0
  945. package/dist/types/web/scrapers/mdn.d.ts +2 -0
  946. package/dist/types/web/scrapers/metacpan.d.ts +5 -0
  947. package/dist/types/web/scrapers/musicbrainz.d.ts +5 -0
  948. package/dist/types/web/scrapers/npm.d.ts +5 -0
  949. package/dist/types/web/scrapers/nuget.d.ts +5 -0
  950. package/dist/types/web/scrapers/nvd.d.ts +5 -0
  951. package/dist/types/web/scrapers/ollama.d.ts +2 -0
  952. package/dist/types/web/scrapers/open-vsx.d.ts +5 -0
  953. package/dist/types/web/scrapers/opencorporates.d.ts +5 -0
  954. package/dist/types/web/scrapers/openlibrary.d.ts +5 -0
  955. package/dist/types/web/scrapers/orcid.d.ts +5 -0
  956. package/dist/types/web/scrapers/osv.d.ts +5 -0
  957. package/dist/types/web/scrapers/packagist.d.ts +5 -0
  958. package/dist/types/web/scrapers/pub-dev.d.ts +5 -0
  959. package/dist/types/web/scrapers/pubmed.d.ts +5 -0
  960. package/dist/types/web/scrapers/pypi.d.ts +5 -0
  961. package/dist/types/web/scrapers/rawg.d.ts +2 -0
  962. package/dist/types/web/scrapers/readthedocs.d.ts +2 -0
  963. package/dist/types/web/scrapers/reddit.d.ts +5 -0
  964. package/dist/types/web/scrapers/repology.d.ts +5 -0
  965. package/dist/types/web/scrapers/rfc.d.ts +5 -0
  966. package/dist/types/web/scrapers/rubygems.d.ts +5 -0
  967. package/dist/types/web/scrapers/searchcode.d.ts +2 -0
  968. package/dist/types/web/scrapers/sec-edgar.d.ts +5 -0
  969. package/dist/types/web/scrapers/semantic-scholar.d.ts +2 -0
  970. package/dist/types/web/scrapers/snapcraft.d.ts +2 -0
  971. package/dist/types/web/scrapers/sourcegraph.d.ts +2 -0
  972. package/dist/types/web/scrapers/spdx.d.ts +5 -0
  973. package/dist/types/web/scrapers/spotify.d.ts +8 -0
  974. package/dist/types/web/scrapers/stackoverflow.d.ts +6 -0
  975. package/dist/types/web/scrapers/terraform.d.ts +5 -0
  976. package/dist/types/web/scrapers/tldr.d.ts +7 -0
  977. package/dist/types/web/scrapers/twitter.d.ts +5 -0
  978. package/dist/types/web/scrapers/types.d.ts +83 -0
  979. package/dist/types/web/scrapers/utils.d.ts +32 -0
  980. package/dist/types/web/scrapers/vimeo.d.ts +5 -0
  981. package/dist/types/web/scrapers/vscode-marketplace.d.ts +5 -0
  982. package/dist/types/web/scrapers/w3c.d.ts +2 -0
  983. package/dist/types/web/scrapers/wikidata.d.ts +5 -0
  984. package/dist/types/web/scrapers/wikipedia.d.ts +5 -0
  985. package/dist/types/web/scrapers/youtube.d.ts +13 -0
  986. package/dist/types/web/search/index.d.ts +118 -0
  987. package/dist/types/web/search/provider.d.ts +55 -0
  988. package/dist/types/web/search/providers/anthropic.d.ts +32 -0
  989. package/dist/types/web/search/providers/base.d.ts +90 -0
  990. package/dist/types/web/search/providers/brave.d.ts +27 -0
  991. package/dist/types/web/search/providers/codex.d.ts +35 -0
  992. package/dist/types/web/search/providers/duckduckgo.d.ts +57 -0
  993. package/dist/types/web/search/providers/exa.d.ts +52 -0
  994. package/dist/types/web/search/providers/gemini.d.ts +57 -0
  995. package/dist/types/web/search/providers/insane.d.ts +53 -0
  996. package/dist/types/web/search/providers/jina.d.ts +26 -0
  997. package/dist/types/web/search/providers/kagi.d.ts +24 -0
  998. package/dist/types/web/search/providers/kimi.d.ts +27 -0
  999. package/dist/types/web/search/providers/openai-compatible.d.ts +9 -0
  1000. package/dist/types/web/search/providers/parallel.d.ts +15 -0
  1001. package/dist/types/web/search/providers/perplexity.d.ts +38 -0
  1002. package/dist/types/web/search/providers/searxng.d.ts +44 -0
  1003. package/dist/types/web/search/providers/synthetic.d.ts +21 -0
  1004. package/dist/types/web/search/providers/tavily.d.ts +29 -0
  1005. package/dist/types/web/search/providers/text-citations.d.ts +23 -0
  1006. package/dist/types/web/search/providers/utils.d.ts +88 -0
  1007. package/dist/types/web/search/providers/xai.d.ts +64 -0
  1008. package/dist/types/web/search/providers/zai.d.ts +28 -0
  1009. package/dist/types/web/search/render.d.ts +36 -0
  1010. package/dist/types/web/search/types.d.ts +372 -0
  1011. package/dist/types/web/search/utils.d.ts +4 -0
  1012. package/dist/types/workflow/workflow-intent-diff.d.ts +25 -0
  1013. package/dist/types/workflow/workflow-intent-report-consumer.d.ts +50 -0
  1014. package/dist/types/workflow/workflow-intent-report-schema.d.ts +2 -0
  1015. package/dist/types/workflow/workflow-intent-report.d.ts +48 -0
  1016. package/dist/types/workspace-tree.d.ts +42 -0
  1017. package/package.json +118 -117
  1018. package/scripts/build-binary.ts +3 -0
  1019. package/src/append-only-mode.ts +58 -0
  1020. package/src/autoresearch/prompt.md +1 -1
  1021. package/src/autoresearch/tools/log-experiment.ts +1 -1
  1022. package/src/capability/mcp.ts +2 -0
  1023. package/src/capability/rule.ts +9 -0
  1024. package/src/cli/completion-cli.ts +234 -0
  1025. package/src/cli/config-cli.ts +61 -9
  1026. package/src/cli/fast-help.ts +1 -0
  1027. package/src/cli/fixture-report.test.ts +230 -0
  1028. package/src/cli/fixture-report.ts +171 -0
  1029. package/src/cli/nofile-limit.ts +48 -0
  1030. package/src/cli/notify-cli.ts +92 -8
  1031. package/src/cli/telegram-cli.ts +156 -0
  1032. package/src/cli/update-cli.ts +109 -9
  1033. package/src/cli/web-search-cli.ts +5 -7
  1034. package/src/cli.ts +31 -2
  1035. package/src/commands/completion.ts +84 -0
  1036. package/src/commands/config.ts +2 -0
  1037. package/src/commands/contribution-prep.ts +1 -1
  1038. package/src/commands/deep-interview.ts +2 -1
  1039. package/src/commands/launch.ts +1 -1
  1040. package/src/commands/ralplan.ts +1 -0
  1041. package/src/commands/telegram.ts +47 -0
  1042. package/src/config/file-lock.ts +73 -34
  1043. package/src/config/keybindings.ts +17 -8
  1044. package/src/config/mcp-schema.json +4 -0
  1045. package/src/config/model-profile-activation.ts +65 -0
  1046. package/src/config/model-profiles.ts +31 -2
  1047. package/src/config/settings-schema.ts +279 -7
  1048. package/src/config/settings.ts +22 -0
  1049. package/src/config/telegram-autostart.ts +107 -0
  1050. package/src/config/telegram-env-bridge.ts +92 -0
  1051. package/src/defaults/skc/skills/ralplan/SKILL.md +29 -20
  1052. package/src/defaults/skc/skills/team/SKILL.md +17 -14
  1053. package/src/defaults/skc/skills/ultragoal/SKILL.md +95 -115
  1054. package/src/defaults/skc/skills/ultragoal/pipeline-validation-contracts.md +30 -0
  1055. package/src/defaults/skc-defaults.ts +25 -0
  1056. package/src/discovery/builtin.ts +12 -0
  1057. package/src/discovery/cursor.ts +5 -84
  1058. package/src/discovery/gemini.ts +3 -89
  1059. package/src/discovery/helpers.ts +10 -0
  1060. package/src/discovery/index.ts +5 -1
  1061. package/src/discovery/mcp-json.ts +11 -0
  1062. package/src/discovery/opencode.ts +5 -122
  1063. package/src/discovery/windsurf.ts +4 -82
  1064. package/src/edit/read-file.ts +9 -1
  1065. package/src/export/html/template.generated.ts +1 -1
  1066. package/src/export/html/template.js +60 -2
  1067. package/src/export/ttsr.ts +96 -18
  1068. package/src/extensibility/extensions/runner.ts +185 -220
  1069. package/src/extensibility/extensions/types.ts +20 -0
  1070. package/src/extensibility/skc-plugins/runtime-adapters.ts +156 -44
  1071. package/src/extensibility/skills.ts +30 -2
  1072. package/src/goals/runtime.ts +10 -2
  1073. package/src/hindsight/backend.ts +1 -3
  1074. package/src/hooks/native-skill-hook.ts +124 -4
  1075. package/src/hooks/skill-state.ts +33 -73
  1076. package/src/i18n/messages/de.ts +1 -0
  1077. package/src/i18n/messages/en.ts +1 -0
  1078. package/src/i18n/messages/es.ts +1 -0
  1079. package/src/i18n/messages/fr.ts +1 -0
  1080. package/src/i18n/messages/ja.settings.ts +28 -0
  1081. package/src/i18n/messages/ja.ts +1 -0
  1082. package/src/i18n/messages/ko.settings.ts +28 -0
  1083. package/src/i18n/messages/ko.ts +1 -0
  1084. package/src/i18n/messages/zh.settings.ts +28 -0
  1085. package/src/i18n/messages/zh.ts +1 -0
  1086. package/src/internal-urls/docs-index.generated.ts +21 -8
  1087. package/src/main.ts +100 -45
  1088. package/src/memories/index.ts +12 -1
  1089. package/src/migrate/executor.ts +23 -6
  1090. package/src/modes/acp/acp-agent.ts +7 -6
  1091. package/src/modes/components/agent-dashboard.ts +1 -34
  1092. package/src/modes/components/assistant-message.ts +241 -82
  1093. package/src/modes/components/custom-editor.ts +27 -0
  1094. package/src/modes/components/extensions/extension-dashboard.ts +2 -48
  1095. package/src/modes/components/hook-selector.ts +21 -3
  1096. package/src/modes/components/model-selector.ts +118 -15
  1097. package/src/modes/components/queued-message-selector.ts +92 -0
  1098. package/src/modes/components/session-selector.ts +19 -9
  1099. package/src/modes/components/settings-selector.ts +64 -5
  1100. package/src/modes/components/skill-message.ts +18 -10
  1101. package/src/modes/components/status-line/presets.ts +11 -0
  1102. package/src/modes/components/status-line/segments.ts +10 -2
  1103. package/src/modes/components/status-line.ts +341 -99
  1104. package/src/modes/components/tool-execution.ts +44 -19
  1105. package/src/modes/components/tree-selector.ts +28 -8
  1106. package/src/modes/components/two-column-body.ts +36 -0
  1107. package/src/modes/components/welcome.ts +335 -63
  1108. package/src/modes/controllers/command-controller.ts +66 -6
  1109. package/src/modes/controllers/event-controller.ts +70 -47
  1110. package/src/modes/controllers/extension-ui-controller.ts +22 -12
  1111. package/src/modes/controllers/input-controller.ts +367 -53
  1112. package/src/modes/controllers/selector-controller.ts +152 -52
  1113. package/src/modes/interactive-mode.ts +80 -39
  1114. package/src/modes/print-mode.ts +43 -4
  1115. package/src/modes/prompt-action-autocomplete.ts +47 -14
  1116. package/src/modes/rpc/rpc-mode.ts +29 -3
  1117. package/src/modes/rpc/rpc-types.ts +10 -0
  1118. package/src/modes/shared/agent-wire/command-validation.ts +4 -0
  1119. package/src/modes/shared/agent-wire/deep-interview-gate.ts +72 -15
  1120. package/src/modes/shared/agent-wire/event-contract.ts +22 -0
  1121. package/src/modes/shared/agent-wire/event-envelope.ts +82 -0
  1122. package/src/modes/shared/agent-wire/scopes.ts +1 -0
  1123. package/src/modes/shared/agent-wire/workflow-gate-schema.ts +20 -0
  1124. package/src/modes/slash-command-visibility.ts +9 -0
  1125. package/src/modes/theme/theme.ts +5 -1
  1126. package/src/modes/types.ts +9 -1
  1127. package/src/modes/utils/hotkeys-markdown.ts +6 -2
  1128. package/src/modes/utils/ui-helpers.ts +95 -9
  1129. package/src/notifications/config.ts +25 -5
  1130. package/src/notifications/daemon-paths.ts +2 -0
  1131. package/src/notifications/html-format.ts +75 -1
  1132. package/src/notifications/index.ts +149 -16
  1133. package/src/notifications/lifecycle-commands.ts +37 -7
  1134. package/src/notifications/lifecycle-control-runtime.ts +12 -3
  1135. package/src/notifications/lifecycle-orchestrator.ts +19 -6
  1136. package/src/notifications/recent-activity.ts +32 -8
  1137. package/src/notifications/telegram-daemon-cli.ts +13 -4
  1138. package/src/notifications/telegram-daemon-control.ts +14 -3
  1139. package/src/notifications/telegram-daemon.ts +382 -93
  1140. package/src/notifications/telegram-reference.ts +36 -30
  1141. package/src/notifications/threaded-render.ts +31 -7
  1142. package/src/prompts/agents/architect.md +24 -12
  1143. package/src/prompts/agents/critic.md +27 -20
  1144. package/src/prompts/agents/executor.md +14 -11
  1145. package/src/prompts/agents/planner.md +24 -14
  1146. package/src/prompts/ci-green-request.md +3 -8
  1147. package/src/prompts/goals/goal-continuation.md +0 -5
  1148. package/src/prompts/goals/goal-mode-active.md +0 -5
  1149. package/src/prompts/system/agent-creation-architect.md +2 -2
  1150. package/src/prompts/system/plan-mode-active.md +1 -1
  1151. package/src/prompts/system/plan-mode-subagent.md +3 -3
  1152. package/src/prompts/system/project-prompt.md +0 -13
  1153. package/src/prompts/system/subagent-system-prompt.md +3 -2
  1154. package/src/prompts/system/system-prompt.md +42 -12
  1155. package/src/prompts/system/volatile-project-context.md +10 -0
  1156. package/src/prompts/system/web-search.md +4 -7
  1157. package/src/prompts/tools/apply-patch.md +6 -0
  1158. package/src/prompts/tools/ast-edit.md +1 -0
  1159. package/src/prompts/tools/bash.md +2 -2
  1160. package/src/prompts/tools/bisect.md +22 -0
  1161. package/src/prompts/tools/browser.md +1 -1
  1162. package/src/prompts/tools/computer.md +2 -2
  1163. package/src/prompts/tools/cron.md +0 -2
  1164. package/src/prompts/tools/eval.md +2 -2
  1165. package/src/prompts/tools/find.md +1 -1
  1166. package/src/prompts/tools/github.md +6 -6
  1167. package/src/prompts/tools/goal.md +1 -3
  1168. package/src/prompts/tools/image-gen.md +12 -5
  1169. package/src/prompts/tools/irc.md +5 -4
  1170. package/src/prompts/tools/job.md +2 -2
  1171. package/src/prompts/tools/lsp.md +1 -1
  1172. package/src/prompts/tools/monitor.md +2 -2
  1173. package/src/prompts/tools/patch.md +2 -2
  1174. package/src/prompts/tools/replace.md +2 -21
  1175. package/src/prompts/tools/rewind.md +1 -1
  1176. package/src/prompts/tools/search-tool-bm25.md +1 -11
  1177. package/src/prompts/tools/search.md +1 -1
  1178. package/src/prompts/tools/skill.md +3 -2
  1179. package/src/prompts/tools/ssh.md +2 -1
  1180. package/src/prompts/tools/subagent.md +2 -2
  1181. package/src/prompts/tools/task.md +4 -5
  1182. package/src/prompts/tools/todo-write.md +1 -1
  1183. package/src/prompts/tools/vim.md +1 -0
  1184. package/src/prompts/tools/web-search.md +2 -0
  1185. package/src/prompts/tools/write.md +8 -2
  1186. package/src/runtime-api-key.ts +16 -0
  1187. package/src/runtime-mcp/config-writer.ts +28 -0
  1188. package/src/runtime-mcp/config.ts +7 -0
  1189. package/src/runtime-mcp/loader.ts +3 -0
  1190. package/src/runtime-mcp/manager.ts +3 -0
  1191. package/src/runtime-mcp/types.ts +6 -0
  1192. package/src/sdk.ts +62 -39
  1193. package/src/session/agent-session.ts +1041 -150
  1194. package/src/session/agent-storage.ts +4 -0
  1195. package/src/session/file-mention-pruning.ts +64 -0
  1196. package/src/session/messages.ts +4 -0
  1197. package/src/session/session-manager.ts +161 -22
  1198. package/src/skc-runtime/deep-interview-ambiguity.ts +206 -0
  1199. package/src/skc-runtime/deep-interview-recorder.ts +62 -8
  1200. package/src/skc-runtime/deep-interview-state.ts +44 -2
  1201. package/src/skc-runtime/ralplan-runtime.ts +22 -6
  1202. package/src/skc-runtime/restricted-role-agent-bash.ts +1 -0
  1203. package/src/skc-runtime/session-state-sidecar.ts +413 -27
  1204. package/src/skc-runtime/state-runtime.ts +20 -7
  1205. package/src/skc-runtime/state-writer.ts +20 -5
  1206. package/src/skc-runtime/ultragoal-guard.ts +205 -90
  1207. package/src/skc-runtime/ultragoal-receipt-freshness.ts +315 -0
  1208. package/src/skc-runtime/ultragoal-runtime.ts +1671 -275
  1209. package/src/skc-runtime/workflow-manifest.generated.json +108 -5
  1210. package/src/skc-runtime/workflow-manifest.ts +74 -2
  1211. package/src/skill-state/active-state.ts +141 -5
  1212. package/src/skill-state/deep-interview-mutation-guard.ts +67 -3
  1213. package/src/slash-commands/builtin-registry.ts +248 -81
  1214. package/src/slash-commands/types.ts +2 -0
  1215. package/src/system-prompt.ts +64 -15
  1216. package/src/task/executor.ts +137 -24
  1217. package/src/task/fork-context-advisory.ts +2 -7
  1218. package/src/task/fork-context-budget.ts +9 -0
  1219. package/src/task/index.ts +13 -6
  1220. package/src/task/output-manager.ts +20 -8
  1221. package/src/task/receipt.ts +26 -7
  1222. package/src/task/token-log.test.ts +188 -0
  1223. package/src/task/token-log.ts +179 -0
  1224. package/src/tools/ast-grep.ts +10 -7
  1225. package/src/tools/bash.ts +39 -14
  1226. package/src/tools/bisect.ts +367 -0
  1227. package/src/tools/computer.ts +246 -43
  1228. package/src/tools/index.ts +11 -1
  1229. package/src/tools/output-meta.ts +116 -4
  1230. package/src/tools/search.ts +8 -2
  1231. package/src/tools/skill.ts +16 -1
  1232. package/src/tools/telegram-send.ts +6 -0
  1233. package/src/tools/ultragoal-ask-guard.ts +39 -5
  1234. package/src/utils/cmux-workspace.ts +233 -0
  1235. package/src/utils/file-mentions.ts +39 -7
  1236. package/src/utils/git.ts +73 -0
  1237. package/src/utils/title-generator.ts +2 -0
  1238. package/src/web/kagi.ts +1 -1
  1239. package/src/web/parallel.ts +2 -2
  1240. package/src/web/scrapers/youtube.ts +24 -12
  1241. package/src/web/search/index.ts +137 -52
  1242. package/src/web/search/provider.ts +80 -0
  1243. package/src/web/search/providers/anthropic.ts +1 -1
  1244. package/src/web/search/providers/brave.ts +1 -1
  1245. package/src/web/search/providers/codex.ts +1 -1
  1246. package/src/web/search/providers/duckduckgo.ts +1 -1
  1247. package/src/web/search/providers/exa.ts +1 -1
  1248. package/src/web/search/providers/gemini.ts +7 -3
  1249. package/src/web/search/providers/jina.ts +1 -1
  1250. package/src/web/search/providers/kimi.ts +6 -1
  1251. package/src/web/search/providers/openai-compatible.ts +1 -1
  1252. package/src/web/search/providers/parallel.ts +1 -1
  1253. package/src/web/search/providers/perplexity.ts +2 -2
  1254. package/src/web/search/providers/searxng.ts +1 -1
  1255. package/src/web/search/providers/synthetic.ts +1 -1
  1256. package/src/web/search/providers/tavily.ts +1 -1
  1257. package/src/web/search/providers/utils.ts +67 -17
  1258. package/src/web/search/providers/xai.ts +1 -1
  1259. package/src/web/search/providers/zai.ts +1 -1
  1260. package/src/web/search/render.ts +3 -0
  1261. package/src/workflow/workflow-intent-diff.ts +222 -0
  1262. package/src/workflow/workflow-intent-report-consumer.ts +221 -0
  1263. package/src/workflow/workflow-intent-report-schema.ts +129 -0
  1264. package/src/workflow/workflow-intent-report.ts +135 -0
@@ -8,9 +8,16 @@ import { withFileLock } from "../config/file-lock";
8
8
  import type { Settings } from "../config/settings";
9
9
  import type { DaemonRuntimeInfo } from "../daemon/control-types";
10
10
  import { resolveSkcRuntimeSpawnInfo } from "../daemon/runtime";
11
- import { getNotificationConfig, isGloballyConfigured, tokenFingerprint } from "./config";
11
+ import { getNotificationConfig, isTelegramConfigured, tokenFingerprint } from "./config";
12
12
  import { parseInThreadConfigCommand } from "./config-commands";
13
- import { buildCompactChoiceGrid, TELEGRAM_PARSE_MODE } from "./html-format";
13
+ import { daemonPaths } from "./daemon-paths";
14
+ import {
15
+ buildCompactChoiceGrid,
16
+ code,
17
+ splitTelegramHtml,
18
+ TELEGRAM_MESSAGE_LIMIT,
19
+ TELEGRAM_PARSE_MODE,
20
+ } from "./html-format";
14
21
  import type {
15
22
  SessionCloseTarget,
16
23
  SessionCreateTarget,
@@ -20,6 +27,7 @@ import type {
20
27
  } from "./index";
21
28
  import {
22
29
  formatLifecycleOutcome,
30
+ isLifecycleCommandLikeText,
23
31
  isLifecycleCommandText,
24
32
  lifecycleUsage,
25
33
  parseLifecycleCommand,
@@ -41,7 +49,6 @@ import {
41
49
  buildActionMessage,
42
50
  type CallbackRoute,
43
51
  createAliasTable,
44
- type PendingAsk,
45
52
  readEndpoint,
46
53
  routeInboundUpdate,
47
54
  } from "./telegram-reference";
@@ -49,7 +56,7 @@ import { decideThreadedInbound, type InboundAttachment } from "./threaded-inboun
49
56
  import { renderThreadedFrame, type ThreadedSend } from "./threaded-render";
50
57
  import { TopicRegistry, type TopicRegistryState } from "./topic-registry";
51
58
 
52
- export type EnsureDaemonResult = "owner_spawned" | "attached" | "disabled";
59
+ export type EnsureDaemonResult = "owner_spawned" | "attached" | "disabled" | "blocked";
53
60
 
54
61
  export interface DaemonState {
55
62
  pid: number;
@@ -62,16 +69,6 @@ export interface DaemonState {
62
69
  version: 1;
63
70
  stoppedAt?: number;
64
71
  }
65
-
66
- export interface DaemonPaths {
67
- dir: string;
68
- lock: string;
69
- state: string;
70
- roots: string;
71
- steal: string;
72
- aliases: string;
73
- }
74
-
75
72
  export interface TelegramDaemonFs {
76
73
  mkdir(path: string, opts?: fs.MakeDirectoryOptions): Promise<void>;
77
74
  readFile(path: string, encoding: BufferEncoding): Promise<string>;
@@ -129,8 +126,27 @@ const TYPING_REFRESH_INTERVAL_MS = 4_000;
129
126
  // messages: queued on receipt, consumed once a turn picks the message up.
130
127
  const QUEUED_REACTION = "👀";
131
128
  const PENDING_TOPIC_FRAME_LIMIT = 20;
129
+ const SEEN_UPDATE_ID_LIMIT = 1_000;
132
130
  const CONSUMED_REACTION = "✅";
133
131
 
132
+ function splitTelegramPlainText(text: string, max = TELEGRAM_MESSAGE_LIMIT): string[] {
133
+ if (text.length <= max) return [text];
134
+ const chunks: string[] = [];
135
+ let out = "";
136
+ for (const ch of text) {
137
+ if (out.length + ch.length > max) {
138
+ chunks.push(out);
139
+ out = "";
140
+ }
141
+ out += ch;
142
+ }
143
+ if (out) chunks.push(out);
144
+ return chunks;
145
+ }
146
+ function endpointGenerationKey(url: string, token: string): string {
147
+ return `${url}\0${token}`;
148
+ }
149
+
134
150
  /**
135
151
  * Whether `err` is a transient network failure worth retrying. Telegram API
136
152
  * calls over HTTP/2 occasionally surface mid-stream `ECONNRESET` (and similar)
@@ -184,17 +200,7 @@ async function fetchWithRetry(
184
200
  throw lastErr;
185
201
  }
186
202
 
187
- export function daemonPaths(agentDir: string): DaemonPaths {
188
- const dir = path.join(agentDir, "notifications");
189
- return {
190
- dir,
191
- lock: path.join(dir, "telegram-daemon.lock"),
192
- state: path.join(dir, "telegram-daemon.state.json"),
193
- roots: path.join(dir, "telegram-daemon.roots.json"),
194
- steal: path.join(dir, "telegram-daemon.steal"),
195
- aliases: path.join(dir, "telegram-callback-aliases.json"),
196
- };
197
- }
203
+ export { type DaemonPaths, daemonPaths } from "./daemon-paths";
198
204
 
199
205
  /**
200
206
  * Attach session-lifecycle control (create/close/resume) to the running daemon.
@@ -262,7 +268,7 @@ export async function registerNotificationRoot(input: {
262
268
  const fsImpl = input.fs ?? nodeFs;
263
269
  const paths = daemonPaths(input.settings.getAgentDir());
264
270
  await ensureDir(fsImpl, paths.dir);
265
- const root = path.join(input.cwd, ".skc", "state");
271
+ const root = notificationRootForCwd(input.cwd);
266
272
  await withFileLock(
267
273
  paths.roots,
268
274
  async () => {
@@ -281,6 +287,29 @@ export async function registerNotificationRoot(input: {
281
287
  return root;
282
288
  }
283
289
 
290
+ function notificationRootForCwd(cwd: string): string {
291
+ return path.join(cwd, ".skc", "state");
292
+ }
293
+
294
+ function ownerIdentityMatches(state: DaemonState, tokenFingerprint: string, chatId: string): boolean {
295
+ return state.tokenFingerprint === tokenFingerprint && state.chatId === chatId;
296
+ }
297
+
298
+ function liveOwnerUsesDifferentIdentity(input: {
299
+ state: DaemonState | undefined;
300
+ tokenFingerprint: string;
301
+ chatId: string;
302
+ pidAlive: (pid: number) => boolean;
303
+ }): boolean {
304
+ const { state } = input;
305
+ return Boolean(
306
+ state &&
307
+ state.version === DAEMON_VERSION &&
308
+ !ownerIdentityMatches(state, input.tokenFingerprint, input.chatId) &&
309
+ input.pidAlive(state.pid),
310
+ );
311
+ }
312
+
284
313
  export function isFreshLiveOwner(input: {
285
314
  state: DaemonState | undefined;
286
315
  now: number;
@@ -292,8 +321,7 @@ export function isFreshLiveOwner(input: {
292
321
  return Boolean(
293
322
  state &&
294
323
  state.version === DAEMON_VERSION &&
295
- state.tokenFingerprint === input.tokenFingerprint &&
296
- state.chatId === input.chatId &&
324
+ ownerIdentityMatches(state, input.tokenFingerprint, input.chatId) &&
297
325
  input.now - state.heartbeatAt <= HEARTBEAT_TTL_MS &&
298
326
  input.pidAlive(state.pid),
299
327
  );
@@ -309,7 +337,13 @@ export async function acquireDaemonOwnership(input: {
309
337
  pid?: number;
310
338
  pidAlive?: (pid: number) => boolean;
311
339
  randomId?: () => string;
312
- }): Promise<{ acquired: boolean; ownerId?: string; attached?: boolean }> {
340
+ }): Promise<{
341
+ acquired: boolean;
342
+ ownerId?: string;
343
+ attached?: boolean;
344
+ blocked?: boolean;
345
+ reason?: "identity_mismatch";
346
+ }> {
313
347
  const fsImpl = input.fs ?? nodeFs;
314
348
  const now = input.now ?? Date.now;
315
349
  const pid = input.pid ?? process.pid;
@@ -319,6 +353,16 @@ export async function acquireDaemonOwnership(input: {
319
353
  const ownerId = input.randomId?.() ?? `${pid}-${now().toString(36)}-${Math.random().toString(36).slice(2)}`;
320
354
  const roots = input.roots ?? (await readJson<{ roots?: string[] }>(fsImpl, paths.roots))?.roots ?? [];
321
355
  const existing = await readJson<DaemonState>(fsImpl, paths.state);
356
+ if (
357
+ liveOwnerUsesDifferentIdentity({
358
+ state: existing,
359
+ tokenFingerprint: input.tokenFingerprint,
360
+ chatId: input.chatId,
361
+ pidAlive,
362
+ })
363
+ ) {
364
+ return { acquired: false, blocked: true, reason: "identity_mismatch" };
365
+ }
322
366
  if (
323
367
  isFreshLiveOwner({
324
368
  state: existing,
@@ -344,6 +388,16 @@ export async function acquireDaemonOwnership(input: {
344
388
  return { acquired: true, ownerId };
345
389
  }
346
390
  const afterLock = await readJson<DaemonState>(fsImpl, paths.state);
391
+ if (
392
+ liveOwnerUsesDifferentIdentity({
393
+ state: afterLock,
394
+ tokenFingerprint: input.tokenFingerprint,
395
+ chatId: input.chatId,
396
+ pidAlive,
397
+ })
398
+ ) {
399
+ return { acquired: false, blocked: true, reason: "identity_mismatch" };
400
+ }
347
401
  if (
348
402
  isFreshLiveOwner({
349
403
  state: afterLock,
@@ -370,6 +424,16 @@ export async function acquireDaemonOwnership(input: {
370
424
  ) {
371
425
  return { acquired: false, attached: true };
372
426
  }
427
+ if (
428
+ liveOwnerUsesDifferentIdentity({
429
+ state: rechecked,
430
+ tokenFingerprint: input.tokenFingerprint,
431
+ chatId: input.chatId,
432
+ pidAlive,
433
+ })
434
+ ) {
435
+ return { acquired: false, blocked: true, reason: "identity_mismatch" };
436
+ }
373
437
  if (rechecked && pidAlive(rechecked.pid)) {
374
438
  return { acquired: false, attached: true };
375
439
  }
@@ -547,7 +611,16 @@ export async function spawnTelegramDaemonOwner(
547
611
  ownerId: ownership.ownerId ?? "",
548
612
  agentDir,
549
613
  });
550
- if (!ownership.acquired) return { result: "attached", runtime, warnings: [] };
614
+ if (!ownership.acquired) {
615
+ if (ownership.blocked) {
616
+ return {
617
+ result: "blocked",
618
+ runtime,
619
+ warnings: ["live telegram daemon uses a different bot token or chat; refusing to attach"],
620
+ };
621
+ }
622
+ return { result: "attached", runtime, warnings: [] };
623
+ }
551
624
  const spawnImpl = deps.spawn ?? defaultDaemonSpawn;
552
625
  const child = spawnImpl(command, args, {
553
626
  detached: true,
@@ -563,13 +636,18 @@ export async function ensureTelegramDaemonRunning(
563
636
  deps: TelegramDaemonDeps = {},
564
637
  ): Promise<EnsureDaemonResult> {
565
638
  const cfg = getNotificationConfig(input.settings);
566
- if (!isGloballyConfigured(cfg) || !cfg.botToken || !cfg.chatId) return "disabled";
567
- const root = await registerNotificationRoot({ ...input, fs: deps.fs });
639
+ if (!isTelegramConfigured(cfg)) return "disabled";
640
+ const root = notificationRootForCwd(input.cwd);
568
641
  const fp = tokenFingerprint(cfg.botToken);
569
642
  const spawned = await spawnTelegramDaemonOwner(
570
643
  { settings: input.settings, roots: [root], tokenFingerprint: fp, chatId: cfg.chatId },
571
644
  deps,
572
645
  );
646
+ if (spawned.result === "blocked") {
647
+ logger.warn(`notifications: failed to ensure Telegram daemon: ${spawned.warnings.join("; ")}`);
648
+ return spawned.result;
649
+ }
650
+ await registerNotificationRoot({ ...input, fs: deps.fs });
573
651
  return spawned.result;
574
652
  }
575
653
 
@@ -770,6 +848,7 @@ export interface TelegramDaemonOptions {
770
848
  interface SessionSocket {
771
849
  sessionId: string;
772
850
  token: string;
851
+ endpointKey: string;
773
852
  ws: WebSocket;
774
853
  pending: Map<string, { sessionId: string; actionId: string }>;
775
854
  /** True once the server advertised the `client_ping_pong` capability. */
@@ -790,6 +869,8 @@ interface PendingThreadedFrame {
790
869
  export class TelegramNotificationDaemon {
791
870
  readonly aliasTable: AliasTable;
792
871
  readonly messageRoutes = new Map<string | number, CallbackRoute | Omit<CallbackRoute, "answer">>();
872
+ /** Telegram message id backing each streamed `${sessionId}:${coalesceKey}`, for in-place edits. */
873
+ private readonly liveMessages = new Map<string, number>();
793
874
  readonly sessions = new Map<string, SessionSocket>();
794
875
  private readonly runtime: NotificationOperatorRuntime;
795
876
  private readonly sessionRouter: OperatorEventRouter<SessionSocket>;
@@ -806,12 +887,16 @@ export class TelegramNotificationDaemon {
806
887
  private readonly topicOwnerByIdentity = new Map<string, string>();
807
888
  /** Non-identity frames held until identity creates the correct thread. */
808
889
  private readonly pendingThreadedFrames = new Map<string, PendingThreadedFrame[]>();
890
+ /** Endpoint generation tombstones for sessions that already sent session_closed. */
891
+ private readonly closedEndpointKeys = new Map<string, string>();
809
892
  /** True once the daemon has nudged the user to enable Threaded Mode. */
810
893
  private threadedFallbackNoticeSent = false;
811
894
  /** Sessions whose identity header was already sent flat (Threaded Mode off). */
812
895
  private readonly flatIdentitySent = new Set<string>();
813
896
  /** Cached result of whether the paired chat is a private chat (flat-fallback gate). */
814
897
  private pairedChatPrivate: boolean | undefined;
898
+ /** Bot username from getMe, cached once at owner startup for group/forum command targeting. */
899
+ private botUsername: string | undefined;
815
900
  /** Sessions whose agent loop is currently busy (drives the typing indicator). */
816
901
  private get busy(): Set<string> {
817
902
  return this.dispatchState.busy;
@@ -1070,26 +1155,43 @@ export class TelegramNotificationDaemon {
1070
1155
  text: string | undefined,
1071
1156
  updateId: number | undefined,
1072
1157
  threadId: number | undefined,
1158
+ commandCtx: { chatType?: string; botUsername?: string },
1073
1159
  ): Promise<boolean> {
1074
- if (!isLifecycleCommandText(text)) return false;
1075
- const reply = (body: string) =>
1076
- this.botApi
1077
- .call("sendMessage", {
1078
- chat_id: this.opts.chatId,
1079
- ...(threadId !== undefined ? { message_thread_id: threadId } : {}),
1080
- text: body,
1081
- })
1082
- .catch(() => undefined);
1160
+ if (!isLifecycleCommandText(text, commandCtx)) return false;
1161
+ if (!(await this.pairedChatIsPrivate())) return true;
1162
+ const reply = async (body: string): Promise<void> => {
1163
+ for (const text of splitTelegramPlainText(body)) {
1164
+ await this.botApi
1165
+ .call("sendMessage", {
1166
+ chat_id: this.opts.chatId,
1167
+ ...(threadId !== undefined ? { message_thread_id: threadId } : {}),
1168
+ text,
1169
+ })
1170
+ .catch(() => undefined);
1171
+ }
1172
+ };
1173
+ const replyHtml = async (body: string): Promise<void> => {
1174
+ for (const text of splitTelegramHtml(body)) {
1175
+ await this.botApi
1176
+ .call("sendMessage", {
1177
+ chat_id: this.opts.chatId,
1178
+ ...(threadId !== undefined ? { message_thread_id: threadId } : {}),
1179
+ text,
1180
+ parse_mode: TELEGRAM_PARSE_MODE,
1181
+ })
1182
+ .catch(() => undefined);
1183
+ }
1184
+ };
1083
1185
 
1186
+ const parsed = parseLifecycleCommand(text, commandCtx);
1187
+ if (parsed.kind === "none") return false;
1084
1188
  if (!this.lifecycleControlActive) {
1085
1189
  await reply("Session lifecycle control is not available right now.");
1086
1190
  return true;
1087
1191
  }
1088
1192
  if (updateId !== undefined && this.dispatchState.seenUpdateIds.has(updateId)) return true;
1089
- if (updateId !== undefined) this.dispatchState.seenUpdateIds.add(updateId);
1193
+ if (updateId !== undefined) await this.rememberSeenUpdateId(updateId);
1090
1194
 
1091
- const parsed = parseLifecycleCommand(text);
1092
- if (parsed.kind === "none") return false;
1093
1195
  if (parsed.kind === "usage" || parsed.kind === "reject") {
1094
1196
  await reply(parsed.message);
1095
1197
  return true;
@@ -1098,11 +1200,12 @@ export class TelegramNotificationDaemon {
1098
1200
  const recent = listRecentSessions({
1099
1201
  sessionsRoot: path.join(this.opts.settings.getAgentDir(), "sessions"),
1100
1202
  limit: 10,
1203
+ includeInternal: false,
1101
1204
  });
1102
- const lines = recent.length
1103
- ? recent.map(e => `\u2022 ${e.sessionId}${e.path ? ` (${e.path})` : ""}`).join("\n")
1205
+ const body = recent.length
1206
+ ? recent.map(e => `• ${code(e.sessionId)}${e.path ? ` (${code(e.path)})` : ""}`).join("\n")
1104
1207
  : "No recent sessions.";
1105
- await reply(lines);
1208
+ await replyHtml(body);
1106
1209
  return true;
1107
1210
  }
1108
1211
 
@@ -1121,6 +1224,17 @@ export class TelegramNotificationDaemon {
1121
1224
  return true;
1122
1225
  }
1123
1226
 
1227
+ private async refreshBotIdentity(): Promise<void> {
1228
+ try {
1229
+ const response = (await this.botApi.call("getMe", {})) as { result?: { username?: unknown } };
1230
+ const username = response.result?.username;
1231
+ this.botUsername =
1232
+ typeof username === "string" && username.trim() ? username.trim().replace(/^@/, "") : undefined;
1233
+ } catch {
1234
+ this.botUsername = undefined;
1235
+ }
1236
+ }
1237
+
1124
1238
  /** Map a lifecycle response/error to a user-facing message (G010 surfacing). */
1125
1239
  private formatLifecycleResponse(r: SessionLifecycleResponse): string {
1126
1240
  return formatLifecycleOutcome(r);
@@ -1205,7 +1319,9 @@ export class TelegramNotificationDaemon {
1205
1319
  matches: msg => msg.type === "session_closed",
1206
1320
  handle: async session => {
1207
1321
  this.busy.delete(session.sessionId);
1322
+ this.closedEndpointKeys.set(session.sessionId, session.endpointKey);
1208
1323
  await this.deleteTopic(session.sessionId);
1324
+ this.dropSession(session, "session_closed");
1209
1325
  },
1210
1326
  });
1211
1327
  }
@@ -1221,6 +1337,51 @@ export class TelegramNotificationDaemon {
1221
1337
  await writeJsonAtomic(this.fsImpl, paths.aliases, this.aliasTable.serialize());
1222
1338
  }
1223
1339
 
1340
+ async loadSeenUpdateIds(): Promise<void> {
1341
+ const raw = await readJson<{ updateIds?: unknown }>(
1342
+ this.fsImpl,
1343
+ daemonPaths(this.opts.settings.getAgentDir()).seenUpdates,
1344
+ );
1345
+ this.dispatchState.seenUpdateIds.clear();
1346
+ const updateIds = Array.isArray(raw?.updateIds) ? raw.updateIds : [];
1347
+ for (const updateId of updateIds) {
1348
+ if (Number.isSafeInteger(updateId) && Number(updateId) >= 0) {
1349
+ this.dispatchState.seenUpdateIds.add(Number(updateId));
1350
+ }
1351
+ }
1352
+ this.pruneSeenUpdateIds();
1353
+ }
1354
+
1355
+ async persistSeenUpdateIds(): Promise<void> {
1356
+ const paths = daemonPaths(this.opts.settings.getAgentDir());
1357
+ await ensureDir(this.fsImpl, paths.dir);
1358
+ await writeJsonAtomic(this.fsImpl, paths.seenUpdates, {
1359
+ version: 1,
1360
+ updateIds: [...this.dispatchState.seenUpdateIds].slice(-SEEN_UPDATE_ID_LIMIT),
1361
+ });
1362
+ }
1363
+
1364
+ private pruneSeenUpdateIds(): void {
1365
+ let extra = this.dispatchState.seenUpdateIds.size - SEEN_UPDATE_ID_LIMIT;
1366
+ if (extra <= 0) return;
1367
+ for (const updateId of this.dispatchState.seenUpdateIds) {
1368
+ this.dispatchState.seenUpdateIds.delete(updateId);
1369
+ extra -= 1;
1370
+ if (extra <= 0) break;
1371
+ }
1372
+ }
1373
+
1374
+ private async rememberSeenUpdateId(updateId: number): Promise<void> {
1375
+ if (!Number.isSafeInteger(updateId) || updateId < 0) return;
1376
+ this.dispatchState.seenUpdateIds.add(updateId);
1377
+ this.pruneSeenUpdateIds();
1378
+ try {
1379
+ await this.persistSeenUpdateIds();
1380
+ } catch (err) {
1381
+ logger.warn(`notifications: failed to persist Telegram update id ${updateId}: ${String(err)}`);
1382
+ }
1383
+ }
1384
+
1224
1385
  async scanRoots(): Promise<void> {
1225
1386
  const paths = daemonPaths(this.opts.settings.getAgentDir());
1226
1387
  const rootState = await readJson<{ roots?: string[] }>(this.fsImpl, paths.roots);
@@ -1242,6 +1403,9 @@ export class TelegramNotificationDaemon {
1242
1403
  // would chase a dead, token-bearing record forever.
1243
1404
  const pidAlive = this.opts.pidAlive ?? defaultPidAlive;
1244
1405
  if (endpoint.stale || (endpoint.pid !== undefined && !pidAlive(endpoint.pid))) continue;
1406
+ const endpointKey = endpointGenerationKey(endpoint.url, endpoint.token);
1407
+ if (this.closedEndpointKeys.get(sessionId) === endpointKey) continue;
1408
+ this.closedEndpointKeys.delete(sessionId);
1245
1409
  this.connectSession(sessionId, endpoint.url, endpoint.token);
1246
1410
  } catch {}
1247
1411
  }
@@ -1251,9 +1415,12 @@ export class TelegramNotificationDaemon {
1251
1415
  connectSession(sessionId: string, url: string, token: string): void {
1252
1416
  const WS = this.opts.WebSocketImpl ?? WebSocket;
1253
1417
  const ws = new WS(`${url}/?token=${encodeURIComponent(token)}`);
1418
+ const endpointKey = endpointGenerationKey(url, token);
1419
+ this.closedEndpointKeys.delete(sessionId);
1254
1420
  const session: SessionSocket = {
1255
1421
  sessionId,
1256
1422
  token,
1423
+ endpointKey,
1257
1424
  ws,
1258
1425
  pending: new Map(),
1259
1426
  capable: false,
@@ -1334,13 +1501,17 @@ export class TelegramNotificationDaemon {
1334
1501
  * (so a delayed old close cannot delete a replacement), and best-effort closes
1335
1502
  * the socket. `scanRoots()` then reconnects the session.
1336
1503
  */
1337
- private dropSession(session: SessionSocket, _reason: string): void {
1504
+ private dropSession(session: SessionSocket, reason: string): void {
1338
1505
  const clearIntervalImpl = this.opts.clearIntervalImpl ?? clearInterval;
1339
1506
  if (session.pingTimer) {
1340
1507
  clearIntervalImpl(session.pingTimer);
1341
1508
  session.pingTimer = undefined;
1342
1509
  }
1343
- if (this.sessions.get(session.sessionId) === session) {
1510
+ const isCurrentSession = this.sessions.get(session.sessionId) === session;
1511
+ if (isCurrentSession || reason === "session_closed") {
1512
+ this.deleteMessageRoutes(session.sessionId);
1513
+ }
1514
+ if (isCurrentSession) {
1344
1515
  this.sessions.delete(session.sessionId);
1345
1516
  }
1346
1517
  if (session.ws.readyState !== WebSocket.CLOSED) {
@@ -1350,6 +1521,14 @@ export class TelegramNotificationDaemon {
1350
1521
  }
1351
1522
  }
1352
1523
 
1524
+ private deleteMessageRoutes(sessionId: string, actionId?: string): void {
1525
+ for (const [messageId, route] of this.messageRoutes.entries()) {
1526
+ if (route.sessionId === sessionId && (actionId === undefined || route.actionId === actionId)) {
1527
+ this.messageRoutes.delete(messageId);
1528
+ }
1529
+ }
1530
+ }
1531
+
1353
1532
  private static readonly THREADED_FRAMES = new Set([
1354
1533
  "identity_header",
1355
1534
  "context_update",
@@ -1402,6 +1581,13 @@ export class TelegramNotificationDaemon {
1402
1581
  return undefined;
1403
1582
  }
1404
1583
 
1584
+ private sessionCanClaimIdentity(session: SessionSocket, msg: { repo?: unknown; branch?: unknown }): boolean {
1585
+ const current = this.sessions.get(session.sessionId);
1586
+ if (current) return current === session;
1587
+ const ownerId = this.topicOwnerForIdentity(msg);
1588
+ return !ownerId || ownerId === session.sessionId;
1589
+ }
1590
+
1405
1591
  private async submitThreadedFrame(sessionId: string, send: ThreadedSend, topicId: string): Promise<void> {
1406
1592
  this.pool.submit({
1407
1593
  sessionId,
@@ -1412,6 +1598,11 @@ export class TelegramNotificationDaemon {
1412
1598
  await this.flushPool();
1413
1599
  }
1414
1600
 
1601
+ private async existingTopicForPrivateChat(sessionId: string): Promise<string | undefined> {
1602
+ if (!(await this.pairedChatIsPrivate())) return undefined;
1603
+ return this.topics.get(sessionId)?.topicId;
1604
+ }
1605
+
1415
1606
  private rememberPendingThreadedFrame(sessionId: string, send: ThreadedSend, msg: Record<string, unknown>): void {
1416
1607
  const frames = this.pendingThreadedFrames.get(sessionId) ?? [];
1417
1608
  frames.push({ send, msg });
@@ -1433,6 +1624,7 @@ export class TelegramNotificationDaemon {
1433
1624
  * one-time nudge) or drop fail-closed for a non-private chat.
1434
1625
  */
1435
1626
  private async ensureTopic(sessionId: string, name: string): Promise<string | undefined> {
1627
+ if (!(await this.pairedChatIsPrivate())) return undefined;
1436
1628
  const existing = this.topics.get(sessionId);
1437
1629
  if (existing) return existing.topicId;
1438
1630
  try {
@@ -1476,6 +1668,9 @@ export class TelegramNotificationDaemon {
1476
1668
  })) as { ok?: boolean };
1477
1669
  if (res?.ok === false) return;
1478
1670
  this.topics.delete(sessionId);
1671
+ for (const k of [...this.liveMessages.keys()]) {
1672
+ if (k.startsWith(`${sessionId}:`)) this.liveMessages.delete(k);
1673
+ }
1479
1674
  this.topicOwnerByIdentity.forEach((ownerSessionId, identityKey) => {
1480
1675
  if (ownerSessionId === sessionId) this.topicOwnerByIdentity.delete(identityKey);
1481
1676
  });
@@ -1605,10 +1800,25 @@ export class TelegramNotificationDaemon {
1605
1800
 
1606
1801
  /** Drain the shared rate-limit pool and deliver each granted send to its topic. */
1607
1802
  private async flushPool(): Promise<void> {
1608
- for (const item of this.pool.drain()) {
1803
+ const batch = this.pool.drain();
1804
+ // Within a batch a finalized frame supersedes any still-queued live frame for
1805
+ // the same streamed message (finalized outranks live), so drop the stale live
1806
+ // edit — otherwise the authoritative final text could be overwritten by an
1807
+ // older partial delivered right after it.
1808
+ const finalizedKeys = new Set<string>();
1809
+ for (const item of batch) {
1810
+ if (item.lane === "finalized" && item.coalesceKey !== undefined) {
1811
+ finalizedKeys.add(`${item.sessionId}:${item.coalesceKey}`);
1812
+ }
1813
+ }
1814
+ for (const item of batch) {
1609
1815
  const { send, topicId } = item.payload;
1816
+ if (topicId && !(await this.pairedChatIsPrivate())) continue;
1610
1817
  // Threaded topic when available; otherwise deliver flat to the paired chat.
1611
1818
  const threadField = topicId ? { message_thread_id: Number(topicId) } : {};
1819
+ const ckey = send.editable ? item.coalesceKey : undefined;
1820
+ const editKey = ckey !== undefined ? `${item.sessionId}:${ckey}` : undefined;
1821
+ if (item.lane === "live" && editKey && finalizedKeys.has(editKey)) continue;
1612
1822
  try {
1613
1823
  if (send.method === "sendPhoto" && send.photoBase64) {
1614
1824
  // Real photo upload (the default botApi multiparts base64 -> file).
@@ -1631,19 +1841,79 @@ export class TelegramNotificationDaemon {
1631
1841
  parse_mode: TELEGRAM_PARSE_MODE,
1632
1842
  });
1633
1843
  } else if (send.text) {
1634
- await this.botApi.call("sendMessage", {
1635
- chat_id: this.opts.chatId,
1636
- ...threadField,
1637
- text: send.text,
1638
- parse_mode: TELEGRAM_PARSE_MODE,
1639
- });
1844
+ const chunks = splitTelegramHtml(send.text);
1845
+ const existingId = editKey ? this.liveMessages.get(editKey) : undefined;
1846
+ if (editKey && existingId !== undefined && chunks.length === 1) {
1847
+ // In-place edit of the streamed message. An unchanged edit is
1848
+ // rejected by Telegram ("message is not modified") and swallowed.
1849
+ await this.botApi.call("editMessageText", {
1850
+ chat_id: this.opts.chatId,
1851
+ message_id: existingId,
1852
+ text: chunks[0],
1853
+ parse_mode: TELEGRAM_PARSE_MODE,
1854
+ });
1855
+ } else {
1856
+ // A single granted slot MUST map to a single Telegram send. When the
1857
+ // rendered text splits into multiple chunks (e.g. a long finalized
1858
+ // turn raised via SKC_NOTIFICATIONS_TURN_MAX), deliver the first
1859
+ // chunk on this token and re-submit the remaining chunks as their
1860
+ // own pool items so each consumes a token on a later drain.
1861
+ // Otherwise one frame would fan out into many sends against a single
1862
+ // slot, bypassing the per-chat rate-limit / fairness invariant.
1863
+ const res = (await this.botApi.call("sendMessage", {
1864
+ chat_id: this.opts.chatId,
1865
+ ...threadField,
1866
+ text: chunks[0]!,
1867
+ parse_mode: TELEGRAM_PARSE_MODE,
1868
+ })) as { result?: { message_id?: number } };
1869
+ for (let i = 1; i < chunks.length; i++) {
1870
+ // Continuation chunks are fresh, non-editable text sends: no
1871
+ // coalesce key (they neither replace nor are replaced by other
1872
+ // frames) and no media payload.
1873
+ this.pool.submit({
1874
+ sessionId: item.sessionId,
1875
+ lane: item.lane,
1876
+ payload: {
1877
+ send: {
1878
+ ...send,
1879
+ method: "sendMessage",
1880
+ text: chunks[i]!,
1881
+ editable: false,
1882
+ coalesceKey: undefined,
1883
+ photoBase64: undefined,
1884
+ documentBase64: undefined,
1885
+ },
1886
+ topicId,
1887
+ },
1888
+ });
1889
+ }
1890
+ const firstMessageId = res?.result?.message_id;
1891
+ if (editKey && ckey !== undefined && firstMessageId !== undefined) {
1892
+ this.recordLiveMessage(item.sessionId, ckey, firstMessageId);
1893
+ }
1894
+ }
1640
1895
  }
1641
1896
  } catch {
1642
- // Best-effort: a failed send must never stop the daemon.
1897
+ // Best-effort: a failed send/edit must never stop the daemon.
1643
1898
  }
1644
1899
  }
1645
1900
  }
1646
1901
 
1902
+ /**
1903
+ * Track the Telegram message id backing a streamed `(sessionId, coalesceKey)`
1904
+ * so later live/finalized frames edit it in place. Evicts this session's stale
1905
+ * same-category entries (e.g. prior turns) so the map stays bounded.
1906
+ */
1907
+ private recordLiveMessage(sessionId: string, coalesceKey: string, messageId: number): void {
1908
+ const mapKey = `${sessionId}:${coalesceKey}`;
1909
+ const category = coalesceKey.split(":")[0] ?? "";
1910
+ const prefix = `${sessionId}:${category}:`;
1911
+ for (const k of [...this.liveMessages.keys()]) {
1912
+ if (k !== mapKey && k.startsWith(prefix)) this.liveMessages.delete(k);
1913
+ }
1914
+ this.liveMessages.set(mapKey, messageId);
1915
+ }
1916
+
1647
1917
  /**
1648
1918
  * Threaded Mode is unavailable (the bot owner has not enabled forum topics in
1649
1919
  * @BotFather, so `createForumTopic` fails). Deliver the rendered frame flat to
@@ -1663,9 +1933,10 @@ export class TelegramNotificationDaemon {
1663
1933
  }
1664
1934
 
1665
1935
  /**
1666
- * Resolve once (cached) whether the paired `chatId` is a private chat. Flat
1667
- * fallback is only safe in a private DM; any non-private chat or an unresolvable
1668
- * `getChat` is treated as not-private so delivery fails closed.
1936
+ * Resolve (and cache successful resolution of) whether the paired `chatId` is a
1937
+ * private chat. Topic and flat delivery are only safe in a private DM; any
1938
+ * non-private chat fails closed, while a transient `getChat` failure fails closed
1939
+ * for the current attempt and is retried later.
1669
1940
  */
1670
1941
  private async pairedChatIsPrivate(): Promise<boolean> {
1671
1942
  if (this.pairedChatPrivate !== undefined) return this.pairedChatPrivate;
@@ -1674,15 +1945,16 @@ export class TelegramNotificationDaemon {
1674
1945
  result?: { type?: string };
1675
1946
  };
1676
1947
  this.pairedChatPrivate = res.result?.type === "private";
1677
- } catch {
1678
- this.pairedChatPrivate = false;
1948
+ return this.pairedChatPrivate;
1949
+ } catch (e) {
1950
+ logger.warn(`notifications: getChat failed while checking Telegram chat privacy: ${String(e)}`);
1951
+ return false;
1679
1952
  }
1680
- return this.pairedChatPrivate;
1681
1953
  }
1682
1954
 
1683
1955
  /** Tell the user once (per daemon run) how to enable Threaded Mode. */
1684
1956
  private async notifyThreadedFallback(): Promise<void> {
1685
- if (this.threadedFallbackNoticeSent) return;
1957
+ if (this.threadedFallbackNoticeSent || !(await this.pairedChatIsPrivate())) return;
1686
1958
  this.threadedFallbackNoticeSent = true;
1687
1959
  try {
1688
1960
  await this.botApi.call("sendMessage", {
@@ -1727,7 +1999,7 @@ export class TelegramNotificationDaemon {
1727
1999
  /** Send a single `typing` chat action into a busy session's topic (best-effort). */
1728
2000
  private async sendTyping(sessionId: string): Promise<void> {
1729
2001
  const topicId = this.topics.get(sessionId)?.topicId;
1730
- if (!topicId) return;
2002
+ if (!topicId || !(await this.pairedChatIsPrivate())) return;
1731
2003
  try {
1732
2004
  await this.botApi.call("sendChatAction", {
1733
2005
  chat_id: this.opts.chatId,
@@ -1741,6 +2013,7 @@ export class TelegramNotificationDaemon {
1741
2013
 
1742
2014
  /** Set a native reaction on an inbound thread message (best-effort). */
1743
2015
  private async setReaction(messageId: number, emoji: string): Promise<void> {
2016
+ if (!(await this.pairedChatIsPrivate())) return;
1744
2017
  try {
1745
2018
  await this.botApi.call("setMessageReaction", {
1746
2019
  chat_id: this.opts.chatId,
@@ -1768,12 +2041,12 @@ export class TelegramNotificationDaemon {
1768
2041
  if (typeof msg?.type === "string" && TelegramNotificationDaemon.THREADED_FRAMES.has(msg.type)) {
1769
2042
  const send = renderThreadedFrame(msg);
1770
2043
  if (!send) return;
1771
- const existingTopic = this.topics.get(session.sessionId)?.topicId;
2044
+ const existingTopic = await this.existingTopicForPrivateChat(session.sessionId);
1772
2045
  if (!send.identity && !existingTopic && !this.flatIdentitySent.has(session.sessionId)) {
1773
2046
  this.rememberPendingThreadedFrame(session.sessionId, send, msg as Record<string, unknown>);
1774
2047
  return;
1775
2048
  }
1776
- if (send.identity) {
2049
+ if (send.identity && !this.sessionCanClaimIdentity(session, msg)) {
1777
2050
  const ownerId = this.topicOwnerForIdentity(msg);
1778
2051
  const ownerTopic = ownerId ? this.topics.get(ownerId) : undefined;
1779
2052
  if (ownerId && ownerId !== session.sessionId && ownerTopic) {
@@ -1839,19 +2112,24 @@ export class TelegramNotificationDaemon {
1839
2112
  const inline_keyboard = buildCompactChoiceGrid(options, (i: number) =>
1840
2113
  this.aliasTable.put({ sessionId: session.sessionId, actionId: msg.id, answer: i }),
1841
2114
  );
1842
- const result = (await this.botApi.call("sendMessage", {
1843
- chat_id: this.opts.chatId,
1844
- ...threadField,
1845
- text: rendered.text,
1846
- parse_mode: TELEGRAM_PARSE_MODE,
1847
- ...(inline_keyboard.length ? { reply_markup: { inline_keyboard } } : {}),
1848
- })) as { result?: { message_id?: number } };
2115
+ const chunks = splitTelegramHtml(rendered.text);
2116
+ let result: { result?: { message_id?: number } } = {};
2117
+ for (let i = 0; i < chunks.length; i++) {
2118
+ result = (await this.botApi.call("sendMessage", {
2119
+ chat_id: this.opts.chatId,
2120
+ ...threadField,
2121
+ text: chunks[i]!,
2122
+ parse_mode: TELEGRAM_PARSE_MODE,
2123
+ ...(i === chunks.length - 1 && inline_keyboard.length ? { reply_markup: { inline_keyboard } } : {}),
2124
+ })) as { result?: { message_id?: number } };
2125
+ }
1849
2126
  const messageId = result.result?.message_id;
1850
2127
  if (messageId !== undefined)
1851
2128
  this.messageRoutes.set(String(messageId), { sessionId: session.sessionId, actionId: msg.id });
1852
2129
  await this.persistAliases();
1853
2130
  } else if (msg.type === "action_resolved" && msg.id) {
1854
2131
  session.pending.delete(msg.id);
2132
+ this.deleteMessageRoutes(session.sessionId, msg.id);
1855
2133
  for (const [alias, route] of this.aliasTable.entries()) {
1856
2134
  if (route.sessionId === session.sessionId && route.actionId === msg.id) this.aliasTable.delete(alias);
1857
2135
  }
@@ -1859,19 +2137,22 @@ export class TelegramNotificationDaemon {
1859
2137
  }
1860
2138
  }
1861
2139
 
1862
- pendingBySession = (sessionId?: string): PendingAsk[] => {
1863
- const result: PendingAsk[] = [];
1864
- for (const session of this.sessions.values()) {
1865
- if (sessionId && session.sessionId !== sessionId) continue;
1866
- result.push(...session.pending.values());
2140
+ private async answerCallbackQueryBestEffort(callbackId: unknown, text?: string): Promise<void> {
2141
+ if (typeof callbackId !== "string") return;
2142
+ try {
2143
+ await this.botApi.call("answerCallbackQuery", {
2144
+ callback_query_id: callbackId,
2145
+ ...(text === undefined ? {} : { text }),
2146
+ });
2147
+ } catch {
2148
+ // Telegram callback acknowledgements only dismiss the client-side spinner;
2149
+ // they must never block the already-validated local reply path.
1867
2150
  }
1868
- return result;
1869
- };
2151
+ }
1870
2152
 
1871
2153
  private async sendStaleGuidance(callbackId: unknown): Promise<void> {
1872
- if (typeof callbackId === "string") {
1873
- await this.botApi.call("answerCallbackQuery", { callback_query_id: callbackId, text: "Button is stale" });
1874
- }
2154
+ await this.answerCallbackQueryBestEffort(callbackId, "Button is stale");
2155
+ if (!(await this.pairedChatIsPrivate())) return;
1875
2156
  await this.botApi.call("sendMessage", {
1876
2157
  chat_id: this.opts.chatId,
1877
2158
  text: "This button is stale after notification daemon restart. Please answer locally in the SKC session or wait for a fresh notification.",
@@ -1886,12 +2167,18 @@ export class TelegramNotificationDaemon {
1886
2167
  // session input.
1887
2168
  {
1888
2169
  const m = (update as { update_id?: number; message?: Record<string, unknown> }).message;
1889
- const chatId = (m?.chat as { id?: unknown } | undefined)?.id;
2170
+ const chat = m?.chat as { id?: unknown; type?: unknown } | undefined;
2171
+ const chatId = chat?.id;
2172
+ const chatType = typeof chat?.type === "string" ? chat.type : undefined;
1890
2173
  const cmdText = typeof m?.text === "string" ? m.text : undefined;
1891
- if (m !== undefined && String(chatId) === String(this.opts.chatId) && isLifecycleCommandText(cmdText)) {
1892
- const updateId = (update as { update_id?: number }).update_id;
1893
- const threadId = typeof m.message_thread_id === "number" ? (m.message_thread_id as number) : undefined;
1894
- if (await this.handleLifecycleCommand(cmdText, updateId, threadId)) return;
2174
+ const commandCtx = { chatType, botUsername: this.botUsername };
2175
+ if (m !== undefined && String(chatId) === String(this.opts.chatId)) {
2176
+ if (chatType !== undefined && chatType !== "private" && isLifecycleCommandLikeText(cmdText)) return;
2177
+ if (isLifecycleCommandText(cmdText, commandCtx)) {
2178
+ const updateId = (update as { update_id?: number }).update_id;
2179
+ const threadId = typeof m.message_thread_id === "number" ? (m.message_thread_id as number) : undefined;
2180
+ if (await this.handleLifecycleCommand(cmdText, updateId, threadId, commandCtx)) return;
2181
+ }
1895
2182
  }
1896
2183
  }
1897
2184
  // Threaded injection: a free-text message in a known topic (not a button
@@ -1916,7 +2203,6 @@ export class TelegramNotificationDaemon {
1916
2203
  });
1917
2204
  if (inbound.kind === "duplicate") return;
1918
2205
  if (inbound.kind === "inject") {
1919
- this.dispatchState.seenUpdateIds.add(inbound.updateId);
1920
2206
  const session = this.sessions.get(inbound.sessionId);
1921
2207
  if (session?.ws.readyState === WebSocket.OPEN) {
1922
2208
  const attachmentResult = inbound.attachment
@@ -1941,6 +2227,7 @@ export class TelegramNotificationDaemon {
1941
2227
  token: session.token,
1942
2228
  }),
1943
2229
  );
2230
+ await this.rememberSeenUpdateId(inbound.updateId);
1944
2231
  if (inbound.messageId !== undefined) await this.setReaction(inbound.messageId, QUEUED_REACTION);
1945
2232
  return;
1946
2233
  }
@@ -1959,6 +2246,7 @@ export class TelegramNotificationDaemon {
1959
2246
  },
1960
2247
  ),
1961
2248
  );
2249
+ await this.rememberSeenUpdateId(inbound.updateId);
1962
2250
  // User turns get a native delivery double-check: queued on receipt,
1963
2251
  // flipped to consumed when the session acks the turn that picks it
1964
2252
  // up. Config commands are not user turns and get no reaction.
@@ -1974,7 +2262,6 @@ export class TelegramNotificationDaemon {
1974
2262
  const decision = routeInboundUpdate(update, {
1975
2263
  aliasTable: this.aliasTable,
1976
2264
  messageRoutes: this.messageRoutes,
1977
- pendingBySession: this.pendingBySession,
1978
2265
  pairedChatId: this.opts.chatId,
1979
2266
  });
1980
2267
  if (decision.kind === "reply") {
@@ -1983,11 +2270,10 @@ export class TelegramNotificationDaemon {
1983
2270
  await this.sendStaleGuidance(callbackId);
1984
2271
  return;
1985
2272
  }
1986
- if (typeof callbackId === "string")
1987
- await this.botApi.call("answerCallbackQuery", { callback_query_id: callbackId });
1988
2273
  session.ws.send(
1989
2274
  JSON.stringify({ type: "reply", id: decision.actionId, answer: decision.answer, token: session.token }),
1990
2275
  );
2276
+ await this.answerCallbackQueryBestEffort(callbackId);
1991
2277
  } else if (decision.kind === "stale") {
1992
2278
  await this.sendStaleGuidance(callbackId);
1993
2279
  }
@@ -2030,9 +2316,11 @@ export class TelegramNotificationDaemon {
2030
2316
  this.startScanTimer();
2031
2317
  this.startTypingTimer();
2032
2318
  try {
2319
+ await this.refreshBotIdentity();
2033
2320
  await this.registerBotCommands();
2034
2321
  await this.loadAliases();
2035
2322
  await this.loadTopics();
2323
+ await this.loadSeenUpdateIds();
2036
2324
  await this.runScan();
2037
2325
  // Owner-only: start the session-lifecycle control server now that
2038
2326
  // ownership is confirmed (singleton-safe). Best-effort; degrades.
@@ -2093,6 +2381,7 @@ export class TelegramNotificationDaemon {
2093
2381
  // (e.g. after reload) reloads aliases/topics seamlessly.
2094
2382
  await this.persistAliases().catch(() => undefined);
2095
2383
  await this.persistTopics().catch(() => undefined);
2384
+ await this.persistSeenUpdateIds().catch(() => undefined);
2096
2385
  await this.opts.control?.clear?.(this.opts.ownerId).catch(() => undefined);
2097
2386
  await releaseDaemonOwnership({
2098
2387
  settings: this.opts.settings,