@gajae-code/coding-agent 0.13.3 → 0.14.0

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 (599) hide show
  1. package/CHANGELOG.md +184 -2
  2. package/README.md +2 -0
  3. package/bin/gajaessi.js +4 -0
  4. package/dist/types/async/job-manager.d.ts +55 -2
  5. package/dist/types/async/support.d.ts +14 -0
  6. package/dist/types/capability/mcp.d.ts +6 -0
  7. package/dist/types/capability/types.d.ts +6 -0
  8. package/dist/types/cli/accounts-cli.d.ts +19 -0
  9. package/dist/types/cli/args.d.ts +3 -0
  10. package/dist/types/cli/config-cli.d.ts +6 -0
  11. package/dist/types/cli/crash-cli.d.ts +10 -0
  12. package/dist/types/cli/customize-doctor.d.ts +145 -0
  13. package/dist/types/cli/daemon-cli.d.ts +3 -1
  14. package/dist/types/cli/mcp-cli.d.ts +11 -0
  15. package/dist/types/cli/notify-cli.d.ts +1 -1
  16. package/dist/types/cli/root-flags.d.ts +12 -0
  17. package/dist/types/cli/setup-cli.d.ts +3 -1
  18. package/dist/types/cli/skills-cli.d.ts +2 -1
  19. package/dist/types/cli/update-cli.d.ts +19 -1
  20. package/dist/types/cli.d.ts +6 -0
  21. package/dist/types/commands/accounts.d.ts +40 -0
  22. package/dist/types/commands/crash.d.ts +24 -0
  23. package/dist/types/commands/customize.d.ts +22 -0
  24. package/dist/types/commands/daemon.d.ts +1 -1
  25. package/dist/types/commands/launch.d.ts +6 -0
  26. package/dist/types/commands/setup.d.ts +6 -0
  27. package/dist/types/commands/skills.d.ts +6 -1
  28. package/dist/types/commands/update.d.ts +7 -0
  29. package/dist/types/config/atomic-yaml-patch-worker.d.ts +25 -0
  30. package/dist/types/config/atomic-yaml-patch.d.ts +62 -2
  31. package/dist/types/config/config-schema-version.d.ts +10 -0
  32. package/dist/types/config/file-lock.d.ts +18 -0
  33. package/dist/types/config/model-profile-activation.d.ts +3 -1
  34. package/dist/types/config/model-registry.d.ts +9 -1
  35. package/dist/types/config/models-config-schema.d.ts +2 -0
  36. package/dist/types/config/settings-schema.d.ts +70 -6
  37. package/dist/types/config/settings.d.ts +63 -0
  38. package/dist/types/config/skill-settings-defaults.d.ts +26 -0
  39. package/dist/types/config/task-delegation.d.ts +39 -0
  40. package/dist/types/config/update-channel.d.ts +10 -0
  41. package/dist/types/coordinator-mcp/server.d.ts +5 -1
  42. package/dist/types/crash/index-store.d.ts +87 -0
  43. package/dist/types/crash/nudge.d.ts +50 -0
  44. package/dist/types/crash/record-loader.d.ts +17 -0
  45. package/dist/types/crash/report.d.ts +134 -0
  46. package/dist/types/crash/sanitize.d.ts +25 -0
  47. package/dist/types/cursor.d.ts +13 -2
  48. package/dist/types/customization/import.d.ts +37 -0
  49. package/dist/types/customization/index.d.ts +4 -0
  50. package/dist/types/customization/inventory.d.ts +25 -0
  51. package/dist/types/customization/mutations.d.ts +32 -0
  52. package/dist/types/customization/types.d.ts +115 -0
  53. package/dist/types/daemon/control-types.d.ts +8 -1
  54. package/dist/types/daemon/operator-contract.d.ts +4 -4
  55. package/dist/types/discovery/claude.d.ts +39 -1
  56. package/dist/types/discovery/codex.d.ts +39 -1
  57. package/dist/types/discovery/index.d.ts +2 -0
  58. package/dist/types/discovery/mcp-compat.d.ts +30 -0
  59. package/dist/types/edit/renderer.d.ts +23 -0
  60. package/dist/types/extensibility/extensions/runner.d.ts +3 -0
  61. package/dist/types/extensibility/extensions/types.d.ts +21 -4
  62. package/dist/types/extensibility/gjc-plugins/observability.d.ts +6 -1
  63. package/dist/types/extensibility/gjc-plugins/registry.d.ts +8 -1
  64. package/dist/types/extensibility/hooks/loader.d.ts +19 -5
  65. package/dist/types/extensibility/runtime-skill-discovery.d.ts +22 -1
  66. package/dist/types/extensibility/skill-management.d.ts +107 -0
  67. package/dist/types/gjc-runtime/deep-interview-runtime.d.ts +3 -1
  68. package/dist/types/gjc-runtime/launch-worktree.d.ts +8 -0
  69. package/dist/types/gjc-runtime/linux-proc.d.ts +3 -0
  70. package/dist/types/gjc-runtime/ralplan-runtime.d.ts +10 -6
  71. package/dist/types/gjc-runtime/session-state-lock.d.ts +104 -0
  72. package/dist/types/gjc-runtime/session-state-sidecar.d.ts +120 -2
  73. package/dist/types/gjc-runtime/state-writer.d.ts +10 -1
  74. package/dist/types/gjc-runtime/ultragoal-guard.d.ts +4 -2
  75. package/dist/types/gjc-runtime/ultragoal-runtime.d.ts +8 -6
  76. package/dist/types/gjc-runtime/workflow-settings.d.ts +109 -0
  77. package/dist/types/hooks/events.d.ts +60 -0
  78. package/dist/types/hooks/normalize.d.ts +83 -0
  79. package/dist/types/hooks/skill-state.d.ts +9 -2
  80. package/dist/types/main.d.ts +1 -1
  81. package/dist/types/modes/acp/abort-scope.d.ts +13 -0
  82. package/dist/types/modes/acp/acp-agent.d.ts +7 -4
  83. package/dist/types/modes/components/customization/customization-dashboard.d.ts +44 -0
  84. package/dist/types/modes/components/customization/import-wizard.d.ts +21 -0
  85. package/dist/types/modes/components/customization/index.d.ts +1 -0
  86. package/dist/types/modes/components/gajae-pet-widget.d.ts +8 -30
  87. package/dist/types/modes/components/irc-sidebar.d.ts +1 -0
  88. package/dist/types/modes/components/iterm-pet-transport.d.ts +122 -0
  89. package/dist/types/modes/components/oauth-selector.d.ts +10 -4
  90. package/dist/types/modes/components/pet-capability.d.ts +11 -25
  91. package/dist/types/modes/components/status-line/gh.d.ts +6 -2
  92. package/dist/types/modes/controllers/extension-ui-controller.d.ts +1 -1
  93. package/dist/types/modes/controllers/selector-controller.d.ts +7 -8
  94. package/dist/types/modes/controllers/stt-controller.d.ts +1 -1
  95. package/dist/types/modes/interactive-mode.d.ts +1 -0
  96. package/dist/types/modes/types.d.ts +1 -0
  97. package/dist/types/modes/utils/injected-user-submission.d.ts +10 -0
  98. package/dist/types/runtime-mcp/config.d.ts +9 -0
  99. package/dist/types/runtime-mcp/manager.d.ts +26 -1
  100. package/dist/types/runtime-mcp/oauth-discovery.d.ts +4 -0
  101. package/dist/types/runtime-mcp/oauth-flow.d.ts +24 -1
  102. package/dist/types/runtime-mcp/pool-key.d.ts +2 -0
  103. package/dist/types/runtime-mcp/protocol.d.ts +278 -0
  104. package/dist/types/runtime-mcp/scope-config.d.ts +29 -0
  105. package/dist/types/runtime-mcp/tool-bridge.d.ts +15 -13
  106. package/dist/types/runtime-mcp/transports/http.d.ts +9 -0
  107. package/dist/types/runtime-mcp/types.d.ts +102 -10
  108. package/dist/types/sdk/acp/adapter.d.ts +26 -5
  109. package/dist/types/sdk/broker/broker.d.ts +3 -55
  110. package/dist/types/sdk/broker/lifecycle.d.ts +18 -12
  111. package/dist/types/sdk/broker/session-index.d.ts +14 -5
  112. package/dist/types/sdk/broker/startup-failure.d.ts +16 -1
  113. package/dist/types/sdk/bus/chat-daemon-control.d.ts +51 -1
  114. package/dist/types/sdk/bus/chat-daemon-runtime.d.ts +4 -41
  115. package/dist/types/sdk/bus/config.d.ts +11 -0
  116. package/dist/types/sdk/bus/conversation-store.d.ts +0 -1
  117. package/dist/types/sdk/bus/daemon-paths.d.ts +6 -0
  118. package/dist/types/sdk/bus/discord-conversation.d.ts +2 -0
  119. package/dist/types/sdk/bus/discord-daemon.d.ts +17 -12
  120. package/dist/types/sdk/bus/existing-thread-readiness.d.ts +4 -34
  121. package/dist/types/sdk/bus/inbound-reaction-ordering.d.ts +61 -0
  122. package/dist/types/sdk/bus/index.d.ts +85 -99
  123. package/dist/types/sdk/bus/kind-aware-reconciliation.d.ts +29 -7
  124. package/dist/types/sdk/bus/managed-daemon.d.ts +2 -32
  125. package/dist/types/sdk/bus/notification-service.d.ts +52 -0
  126. package/dist/types/sdk/bus/operator-runtime.d.ts +1 -1
  127. package/dist/types/sdk/bus/prompt-reconciliation.d.ts +16 -5
  128. package/dist/types/sdk/bus/reconciliation-store.d.ts +113 -5
  129. package/dist/types/sdk/bus/session-control.d.ts +25 -1
  130. package/dist/types/sdk/bus/slack-conversation.d.ts +4 -0
  131. package/dist/types/sdk/bus/slack-daemon.d.ts +9 -17
  132. package/dist/types/sdk/bus/slack-live-provider.d.ts +3 -1
  133. package/dist/types/sdk/bus/slack-provider.d.ts +4 -0
  134. package/dist/types/sdk/bus/slack-thread-binding.d.ts +6 -40
  135. package/dist/types/sdk/bus/telegram-adoption-intent.d.ts +30 -104
  136. package/dist/types/sdk/bus/telegram-daemon-cli.d.ts +10 -0
  137. package/dist/types/sdk/bus/telegram-daemon-contract.d.ts +262 -19
  138. package/dist/types/sdk/bus/telegram-daemon-orphan-reap.d.ts +125 -0
  139. package/dist/types/sdk/bus/telegram-daemon-owner-registry.d.ts +22 -0
  140. package/dist/types/sdk/bus/telegram-daemon.d.ts +119 -310
  141. package/dist/types/sdk/bus/telegram-reference.d.ts +1 -47
  142. package/dist/types/sdk/bus/threaded-render.d.ts +1 -0
  143. package/dist/types/sdk/bus/topic-registry.d.ts +33 -17
  144. package/dist/types/sdk/cli/rows.d.ts +2 -11
  145. package/dist/types/sdk/cli/session-cli.d.ts +15 -25
  146. package/dist/types/sdk/client/client.d.ts +97 -1
  147. package/dist/types/sdk/host/control/dispatch.d.ts +0 -7
  148. package/dist/types/sdk/host/control/index.d.ts +1 -1
  149. package/dist/types/sdk/host/control/operations.d.ts +18 -5
  150. package/dist/types/sdk/host/control/runtime-gate.d.ts +19 -0
  151. package/dist/types/sdk/host/host.d.ts +15 -1
  152. package/dist/types/sdk/host/query/handlers.d.ts +5 -0
  153. package/dist/types/sdk/host/reverse-leases.d.ts +1 -1
  154. package/dist/types/sdk/host/session-runtime.d.ts +127 -7
  155. package/dist/types/sdk/host/types.d.ts +1 -1
  156. package/dist/types/sdk/host/websocket-transport.d.ts +1 -1
  157. package/dist/types/sdk/index.d.ts +2 -1
  158. package/dist/types/sdk/lifecycle/broker-client.d.ts +8 -0
  159. package/dist/types/sdk/lifecycle/client.d.ts +59 -0
  160. package/dist/types/sdk/lifecycle/index.d.ts +3 -0
  161. package/dist/types/sdk/lifecycle/service.d.ts +232 -0
  162. package/dist/types/sdk/mcp/server.d.ts +9 -6
  163. package/dist/types/sdk/prompt-deadline-lease.d.ts +43 -0
  164. package/dist/types/sdk/prompt-deadline-manager.d.ts +28 -0
  165. package/dist/types/sdk/prompt-status.d.ts +10 -3
  166. package/dist/types/sdk/protocol/operation-registry.d.ts +5 -0
  167. package/dist/types/sdk/receipt-state.d.ts +17 -0
  168. package/dist/types/sdk/reconciliation-extensions.d.ts +2 -0
  169. package/dist/types/sdk/router/index.d.ts +1 -0
  170. package/dist/types/sdk/router/session-router.d.ts +152 -0
  171. package/dist/types/sdk/session-list.d.ts +22 -0
  172. package/dist/types/sdk/session-reconnect.d.ts +43 -1
  173. package/dist/types/sdk/session.d.ts +34 -1
  174. package/dist/types/sdk/transport/serve-cli.d.ts +1 -4
  175. package/dist/types/session/account-inventory.d.ts +86 -0
  176. package/dist/types/session/agent-session.d.ts +145 -6
  177. package/dist/types/session/agent-storage.d.ts +10 -0
  178. package/dist/types/session/coordinator-tool-label.d.ts +28 -0
  179. package/dist/types/session/internal/managed-session-storage.d.ts +23 -4
  180. package/dist/types/session/messages.d.ts +1 -1
  181. package/dist/types/session/secure-token-file.d.ts +3 -0
  182. package/dist/types/session/session-manager.d.ts +40 -1
  183. package/dist/types/session/startup-auth-config.d.ts +44 -0
  184. package/dist/types/session/terminal-abort.d.ts +378 -0
  185. package/dist/types/session/yield-queue.d.ts +7 -0
  186. package/dist/types/session-import/claude.d.ts +26 -0
  187. package/dist/types/session-import/codex.d.ts +88 -0
  188. package/dist/types/session-import/command.d.ts +35 -0
  189. package/dist/types/session-import/detect.d.ts +22 -0
  190. package/dist/types/session-import/index.d.ts +7 -0
  191. package/dist/types/session-import/provider-codex.d.ts +22 -0
  192. package/dist/types/session-import/provider-service.d.ts +38 -0
  193. package/dist/types/session-import/redact.d.ts +23 -0
  194. package/dist/types/session-import/service.d.ts +47 -0
  195. package/dist/types/session-import/types.d.ts +120 -0
  196. package/dist/types/setup/paseo/check.d.ts +16 -0
  197. package/dist/types/setup/paseo/install-saga.d.ts +115 -0
  198. package/dist/types/setup/paseo/json-publisher.d.ts +76 -0
  199. package/dist/types/setup/paseo/orchestration-preferences.d.ts +24 -0
  200. package/dist/types/setup/paseo/paseo-ownership.d.ts +87 -0
  201. package/dist/types/setup/paseo/paseo-setup.d.ts +29 -0
  202. package/dist/types/setup/paseo/provider-config.d.ts +35 -0
  203. package/dist/types/setup/paseo/remove.d.ts +14 -0
  204. package/dist/types/setup/paseo/result-types.d.ts +59 -0
  205. package/dist/types/setup/paseo/setup-deps.d.ts +73 -0
  206. package/dist/types/setup/paseo/skills-bridge.d.ts +44 -0
  207. package/dist/types/skill-state/active-state.d.ts +5 -1
  208. package/dist/types/slash-commands/acp-builtins.d.ts +5 -1
  209. package/dist/types/slash-commands/builtin-registry.d.ts +2 -0
  210. package/dist/types/slash-commands/helpers/credential-switch.d.ts +12 -0
  211. package/dist/types/slash-commands/helpers/usage-report.d.ts +5 -6
  212. package/dist/types/slash-commands/types.d.ts +7 -1
  213. package/dist/types/task/executor.d.ts +10 -0
  214. package/dist/types/task/index.d.ts +3 -1
  215. package/dist/types/tools/ask-answer-registry.d.ts +6 -3
  216. package/dist/types/tools/bash-sleep-advisory.d.ts +14 -0
  217. package/dist/types/tools/bash.d.ts +2 -6
  218. package/dist/types/tools/browser/attach.d.ts +11 -0
  219. package/dist/types/tools/browser/launch.d.ts +20 -0
  220. package/dist/types/tools/browser/profile-discovery.d.ts +6 -0
  221. package/dist/types/tools/browser/render.d.ts +1 -0
  222. package/dist/types/tools/browser.d.ts +3 -1
  223. package/dist/types/tools/image-gen.d.ts +9 -2
  224. package/dist/types/tools/index.d.ts +8 -0
  225. package/dist/types/tools/monitor.d.ts +1 -1
  226. package/dist/types/tools/skill-discovery.d.ts +8 -1
  227. package/dist/types/tools/subagent.d.ts +2 -0
  228. package/dist/types/tools/ultragoal-ask-guard.d.ts +2 -2
  229. package/dist/types/utils/herdr-pane.d.ts +76 -0
  230. package/package.json +19 -9
  231. package/scripts/build-binary.ts +2 -1
  232. package/scripts/build-sdk-package-smoke.ts +2 -13
  233. package/scripts/capture-sticky-viewport-showcase.ts +0 -1
  234. package/scripts/compile-args.ts +2 -0
  235. package/scripts/generate-sdk-adapter-parity-manifest.ts +31 -16
  236. package/scripts/generate-sdk-operation-inventory.ts +28 -0
  237. package/scripts/generate-telegram-baseline-manifest.ts +1 -0
  238. package/scripts/generate-tool-catalog.ts +6 -4
  239. package/scripts/verify-gjc-sdk-canonicalization.ts +5 -39
  240. package/src/async/job-manager.ts +352 -17
  241. package/src/async/support.ts +25 -0
  242. package/src/autoresearch/dashboard.ts +28 -13
  243. package/src/capability/index.ts +3 -1
  244. package/src/capability/mcp.ts +6 -0
  245. package/src/capability/types.ts +6 -0
  246. package/src/cli/accounts-cli.ts +395 -0
  247. package/src/cli/args.ts +23 -0
  248. package/src/cli/auth-broker-cli.ts +136 -66
  249. package/src/cli/auth-gateway-cli.ts +94 -70
  250. package/src/cli/config-cli.ts +27 -2
  251. package/src/cli/crash-cli.ts +78 -0
  252. package/src/cli/customize-doctor.ts +1605 -0
  253. package/src/cli/daemon-cli.ts +12 -3
  254. package/src/cli/fast-help.ts +1 -0
  255. package/src/cli/mcp-cli.ts +128 -60
  256. package/src/cli/notify-cli.ts +8 -14
  257. package/src/cli/root-flags.ts +8 -0
  258. package/src/cli/setup-cli.ts +145 -0
  259. package/src/cli/skills-cli.ts +38 -2
  260. package/src/cli/update-cli.ts +167 -12
  261. package/src/cli.ts +4 -0
  262. package/src/commands/accounts.ts +71 -0
  263. package/src/commands/crash.ts +35 -0
  264. package/src/commands/customize.ts +84 -0
  265. package/src/commands/daemon.ts +2 -2
  266. package/src/commands/deep-interview.ts +2 -0
  267. package/src/commands/launch.ts +1 -0
  268. package/src/commands/mcp.ts +12 -7
  269. package/src/commands/ralplan.ts +2 -0
  270. package/src/commands/sdk.ts +65 -32
  271. package/src/commands/setup.ts +5 -0
  272. package/src/commands/skills.ts +14 -4
  273. package/src/commands/ultragoal.ts +10 -1
  274. package/src/commands/update.ts +26 -15
  275. package/src/config/atomic-yaml-patch-worker.ts +57 -0
  276. package/src/config/atomic-yaml-patch.ts +769 -29
  277. package/src/config/config-schema-version.ts +10 -0
  278. package/src/config/file-lock.ts +70 -1
  279. package/src/config/mcp-schema.json +52 -14
  280. package/src/config/model-profile-activation.ts +20 -1
  281. package/src/config/model-profiles.ts +29 -19
  282. package/src/config/model-registry.ts +132 -21
  283. package/src/config/models-config-schema.ts +1 -1
  284. package/src/config/settings-schema.ts +76 -6
  285. package/src/config/settings.ts +4038 -199
  286. package/src/config/skill-settings-defaults.ts +41 -3
  287. package/src/config/task-delegation.ts +87 -0
  288. package/src/config/update-channel.ts +23 -0
  289. package/src/coordinator-mcp/server.ts +377 -308
  290. package/src/crash/index-store.ts +723 -0
  291. package/src/crash/nudge.ts +89 -0
  292. package/src/crash/record-loader.ts +149 -0
  293. package/src/crash/report.ts +551 -0
  294. package/src/crash/sanitize.ts +129 -0
  295. package/src/cursor.ts +36 -10
  296. package/src/customization/import.ts +946 -0
  297. package/src/customization/index.ts +4 -0
  298. package/src/customization/inventory.ts +335 -0
  299. package/src/customization/mutations.ts +141 -0
  300. package/src/customization/types.ts +223 -0
  301. package/src/daemon/control-types.ts +8 -1
  302. package/src/daemon/operator-contract.ts +6 -6
  303. package/src/defaults/gjc/skills/deep-interview/SKILL.md +11 -22
  304. package/src/defaults/gjc/skills/ralplan/SKILL.md +36 -23
  305. package/src/defaults/gjc/skills/ultragoal/SKILL.md +16 -0
  306. package/src/discovery/claude-hooks.ts +38 -0
  307. package/src/discovery/claude.ts +142 -209
  308. package/src/discovery/codex-hooks.ts +38 -0
  309. package/src/discovery/codex.ts +132 -198
  310. package/src/discovery/helpers.ts +8 -1
  311. package/src/discovery/index.ts +2 -0
  312. package/src/discovery/mcp-compat.ts +234 -0
  313. package/src/discovery/mcp-json.ts +6 -0
  314. package/src/edit/renderer.ts +40 -0
  315. package/src/edit/streaming.ts +4 -2
  316. package/src/exec/bash-executor.ts +24 -20
  317. package/src/export/html/index.ts +51 -2
  318. package/src/extensibility/extensions/loader.ts +9 -1
  319. package/src/extensibility/extensions/runner.ts +17 -4
  320. package/src/extensibility/extensions/types.ts +31 -6
  321. package/src/extensibility/gjc-plugins/constrained-hooks.ts +33 -0
  322. package/src/extensibility/gjc-plugins/installer.ts +9 -5
  323. package/src/extensibility/gjc-plugins/observability.ts +8 -2
  324. package/src/extensibility/gjc-plugins/registry.ts +13 -2
  325. package/src/extensibility/gjc-plugins/runtime-adapters.ts +3 -1
  326. package/src/extensibility/gjc-plugins/schema.ts +222 -39
  327. package/src/extensibility/hooks/loader.ts +154 -10
  328. package/src/extensibility/runtime-skill-discovery.ts +257 -60
  329. package/src/extensibility/skill-management.ts +368 -0
  330. package/src/extensibility/skills.ts +52 -16
  331. package/src/gjc-runtime/deep-interview-runtime.ts +45 -61
  332. package/src/gjc-runtime/launch-worktree.ts +56 -2
  333. package/src/gjc-runtime/linux-proc.ts +7 -1
  334. package/src/gjc-runtime/ralplan-runtime.ts +100 -164
  335. package/src/gjc-runtime/session-state-lock.ts +992 -0
  336. package/src/gjc-runtime/session-state-sidecar.ts +644 -142
  337. package/src/gjc-runtime/state-writer.ts +39 -14
  338. package/src/gjc-runtime/tmux-owner-isolation.ts +5 -4
  339. package/src/gjc-runtime/ultragoal-guard.ts +11 -4
  340. package/src/gjc-runtime/ultragoal-runtime.ts +44 -41
  341. package/src/gjc-runtime/workflow-settings.ts +596 -0
  342. package/src/goals/tools/goal-tool.ts +6 -1
  343. package/src/hooks/events.ts +291 -0
  344. package/src/hooks/native-skill-hook.ts +4 -0
  345. package/src/hooks/normalize.ts +369 -0
  346. package/src/hooks/skill-state.ts +165 -46
  347. package/src/internal-urls/docs-index.generated.ts +40 -32
  348. package/src/main.ts +32 -5
  349. package/src/migrate/mcp-mapper.ts +25 -2
  350. package/src/modes/acp/abort-scope.ts +29 -0
  351. package/src/modes/acp/acp-agent.ts +423 -98
  352. package/src/modes/components/assistant-message.ts +6 -1
  353. package/src/modes/components/customization/customization-dashboard.ts +443 -0
  354. package/src/modes/components/customization/import-wizard.ts +372 -0
  355. package/src/modes/components/customization/index.ts +1 -0
  356. package/src/modes/components/gajae-pet-widget.ts +539 -213
  357. package/src/modes/components/irc-sidebar.ts +11 -0
  358. package/src/modes/components/iterm-pet-transport.ts +585 -0
  359. package/src/modes/components/oauth-selector.ts +277 -86
  360. package/src/modes/components/pet-capability.ts +39 -40
  361. package/src/modes/components/settings-selector.ts +9 -0
  362. package/src/modes/components/status-line/gh.ts +45 -1
  363. package/src/modes/components/status-line/segments.ts +16 -1
  364. package/src/modes/components/tool-status-header.ts +13 -3
  365. package/src/modes/controllers/command-controller.ts +20 -8
  366. package/src/modes/controllers/extension-ui-controller.ts +56 -257
  367. package/src/modes/controllers/input-controller.ts +10 -0
  368. package/src/modes/controllers/runtime-mcp-command-controller.ts +16 -3
  369. package/src/modes/controllers/selector-controller.ts +177 -72
  370. package/src/modes/controllers/stt-controller.ts +3 -3
  371. package/src/modes/interactive-mode.ts +88 -16
  372. package/src/modes/print-mode.ts +35 -6
  373. package/src/modes/runtime-init.ts +21 -68
  374. package/src/modes/types.ts +1 -0
  375. package/src/modes/utils/injected-user-submission.ts +25 -0
  376. package/src/modes/utils/terminal-bell.ts +15 -1
  377. package/src/prompts/agent-fragments/ralplan-persistence.md +1 -1
  378. package/src/prompts/agent-fragments/restricted-bash.md +1 -1
  379. package/src/prompts/agents/critic.md +1 -1
  380. package/src/prompts/system/rlm-research.md +1 -1
  381. package/src/prompts/system/system-prompt.md +0 -2
  382. package/src/prompts/tools/bash.md +7 -1
  383. package/src/prompts/tools/browser.md +1 -1
  384. package/src/prompts/tools/cron.md +6 -6
  385. package/src/prompts/tools/read.md +0 -2
  386. package/src/prompts/tools/skill-discovery.md +4 -2
  387. package/src/runtime-mcp/client.ts +427 -23
  388. package/src/runtime-mcp/config.ts +37 -5
  389. package/src/runtime-mcp/manager-pool.test.ts +56 -0
  390. package/src/runtime-mcp/manager.ts +52 -2
  391. package/src/runtime-mcp/oauth-discovery.ts +13 -0
  392. package/src/runtime-mcp/oauth-flow.ts +46 -1
  393. package/src/runtime-mcp/pool-key.ts +5 -1
  394. package/src/runtime-mcp/pool.test.ts +9 -0
  395. package/src/runtime-mcp/protocol.test.ts +353 -0
  396. package/src/runtime-mcp/protocol.ts +624 -0
  397. package/src/runtime-mcp/scope-config.ts +78 -0
  398. package/src/runtime-mcp/tool-bridge.ts +44 -10
  399. package/src/runtime-mcp/transports/http.ts +84 -13
  400. package/src/runtime-mcp/types.ts +123 -12
  401. package/src/sdk/acp/adapter.ts +328 -97
  402. package/src/sdk/broker/broker.ts +160 -741
  403. package/src/sdk/broker/ensure.ts +9 -1
  404. package/src/sdk/broker/lifecycle.ts +510 -116
  405. package/src/sdk/broker/operation-receipt-ledger.ts +11 -2
  406. package/src/sdk/broker/process-incarnation.ts +19 -0
  407. package/src/sdk/broker/session-index.ts +516 -117
  408. package/src/sdk/broker/startup-failure.ts +28 -5
  409. package/src/sdk/broker/transport.ts +1 -13
  410. package/src/sdk/bus/chat-daemon-cli.ts +4 -2
  411. package/src/sdk/bus/chat-daemon-control.ts +67 -6
  412. package/src/sdk/bus/chat-daemon-runtime.ts +183 -859
  413. package/src/sdk/bus/config.ts +13 -0
  414. package/src/sdk/bus/conversation-store.ts +59 -171
  415. package/src/sdk/bus/daemon-paths.ts +20 -0
  416. package/src/sdk/bus/discord-conversation.ts +2 -0
  417. package/src/sdk/bus/discord-daemon.ts +524 -126
  418. package/src/sdk/bus/discord-live-provider.ts +206 -79
  419. package/src/sdk/bus/existing-thread-readiness.ts +4 -97
  420. package/src/sdk/bus/inbound-reaction-ordering.ts +122 -0
  421. package/src/sdk/bus/index.ts +2480 -456
  422. package/src/sdk/bus/kind-aware-reconciliation.ts +204 -34
  423. package/src/sdk/bus/lifecycle-commands.ts +2 -2
  424. package/src/sdk/bus/managed-daemon.ts +2 -145
  425. package/src/sdk/bus/notification-service.ts +196 -0
  426. package/src/sdk/bus/operator-runtime.ts +1 -1
  427. package/src/sdk/bus/prompt-reconciliation.ts +24 -15
  428. package/src/sdk/bus/reconciliation-store.ts +553 -24
  429. package/src/sdk/bus/session-control.ts +49 -3
  430. package/src/sdk/bus/slack-conversation.ts +4 -0
  431. package/src/sdk/bus/slack-daemon.ts +733 -134
  432. package/src/sdk/bus/slack-live-provider.ts +65 -15
  433. package/src/sdk/bus/slack-provider.ts +4 -0
  434. package/src/sdk/bus/slack-thread-binding.ts +9 -104
  435. package/src/sdk/bus/telegram-adoption-intent.ts +299 -209
  436. package/src/sdk/bus/telegram-daemon-cli.ts +194 -7
  437. package/src/sdk/bus/telegram-daemon-contract.ts +265 -19
  438. package/src/sdk/bus/telegram-daemon-control.ts +3 -13
  439. package/src/sdk/bus/telegram-daemon-orphan-reap.ts +498 -0
  440. package/src/sdk/bus/telegram-daemon-owner-registry.ts +176 -0
  441. package/src/sdk/bus/telegram-daemon.ts +2552 -2280
  442. package/src/sdk/bus/telegram-reference.ts +1 -226
  443. package/src/sdk/bus/telegram-setup.ts +2 -2
  444. package/src/sdk/bus/threaded-render.ts +1 -0
  445. package/src/sdk/bus/topic-registry.ts +279 -146
  446. package/src/sdk/cli/rows.ts +2 -35
  447. package/src/sdk/cli/session-cli.ts +776 -700
  448. package/src/sdk/client/client.ts +892 -1
  449. package/src/sdk/host/control/dispatch.ts +93 -58
  450. package/src/sdk/host/control/index.ts +1 -1
  451. package/src/sdk/host/control/operations.ts +18 -10
  452. package/src/sdk/host/control/runtime-gate.ts +40 -0
  453. package/src/sdk/host/host.ts +63 -12
  454. package/src/sdk/host/query/handlers.ts +66 -7
  455. package/src/sdk/host/reverse-leases.ts +2 -2
  456. package/src/sdk/host/sdk-surface-parity.test.ts +1 -1
  457. package/src/sdk/host/session-runtime.test.ts +2787 -34
  458. package/src/sdk/host/session-runtime.ts +1489 -101
  459. package/src/sdk/host/surface-policy.ts +12 -8
  460. package/src/sdk/host/types.ts +1 -1
  461. package/src/sdk/host/websocket-transport.lifecycle.test.ts +31 -59
  462. package/src/sdk/host/websocket-transport.ts +85 -50
  463. package/src/sdk/index.ts +2 -1
  464. package/src/sdk/lifecycle/broker-client.ts +53 -0
  465. package/src/sdk/lifecycle/client.ts +234 -0
  466. package/src/sdk/lifecycle/index.ts +3 -0
  467. package/src/sdk/{bus/recent-activity.ts → lifecycle/recent-sessions.ts} +5 -2
  468. package/src/sdk/lifecycle/service.ts +720 -0
  469. package/src/sdk/mcp/server.ts +226 -188
  470. package/src/sdk/prompt-deadline-lease.ts +55 -0
  471. package/src/sdk/prompt-deadline-manager.ts +148 -0
  472. package/src/sdk/prompt-status.ts +11 -3
  473. package/src/sdk/protocol/operation-inventory.generated.json +272 -129
  474. package/src/sdk/protocol/operation-registry.ts +71 -8
  475. package/src/sdk/receipt-state.ts +43 -0
  476. package/src/sdk/reconciliation-extensions.ts +14 -0
  477. package/src/sdk/router/index.ts +1 -0
  478. package/src/sdk/router/session-router.ts +1658 -0
  479. package/src/sdk/session-list.ts +93 -0
  480. package/src/sdk/session-reconnect.ts +45 -1
  481. package/src/sdk/session.ts +716 -120
  482. package/src/sdk/transport/serve-cli.ts +18 -34
  483. package/src/session/account-inventory.ts +603 -0
  484. package/src/session/agent-session.ts +2857 -582
  485. package/src/session/agent-storage.ts +35 -0
  486. package/src/session/blob-store.ts +32 -1
  487. package/src/session/coordinator-tool-label.ts +40 -0
  488. package/src/session/internal/managed-session-scope.ts +4 -0
  489. package/src/session/internal/managed-session-storage.ts +173 -12
  490. package/src/session/messages.ts +1 -1
  491. package/src/session/secure-token-file.ts +80 -0
  492. package/src/session/session-manager.ts +730 -58
  493. package/src/session/session-storage.ts +25 -16
  494. package/src/session/startup-auth-config.ts +297 -0
  495. package/src/session/terminal-abort.ts +1253 -0
  496. package/src/session/yield-queue.ts +57 -15
  497. package/src/session-import/claude.ts +334 -0
  498. package/src/session-import/codex.ts +1033 -0
  499. package/src/session-import/command.ts +77 -0
  500. package/src/session-import/detect.ts +133 -0
  501. package/src/session-import/index.ts +7 -0
  502. package/src/session-import/provider-codex.ts +327 -0
  503. package/src/session-import/provider-service.ts +457 -0
  504. package/src/session-import/redact.ts +128 -0
  505. package/src/session-import/service.ts +1264 -0
  506. package/src/session-import/types.ts +148 -0
  507. package/src/setup/paseo/check.ts +213 -0
  508. package/src/setup/paseo/install-saga.ts +293 -0
  509. package/src/setup/paseo/json-publisher.ts +263 -0
  510. package/src/setup/paseo/orchestration-preferences.ts +86 -0
  511. package/src/setup/paseo/paseo-ownership.ts +224 -0
  512. package/src/setup/paseo/paseo-setup.ts +253 -0
  513. package/src/setup/paseo/provider-config.ts +139 -0
  514. package/src/setup/paseo/remove.ts +183 -0
  515. package/src/setup/paseo/result-types.ts +79 -0
  516. package/src/setup/paseo/setup-deps.ts +175 -0
  517. package/src/setup/paseo/skills-bridge.ts +260 -0
  518. package/src/skill-state/active-state.ts +21 -11
  519. package/src/slash-commands/acp-builtins.ts +9 -1
  520. package/src/slash-commands/builtin-registry.ts +98 -16
  521. package/src/slash-commands/helpers/credential-switch.ts +143 -0
  522. package/src/slash-commands/helpers/mcp.ts +9 -3
  523. package/src/slash-commands/helpers/usage-report.ts +61 -56
  524. package/src/slash-commands/types.ts +7 -2
  525. package/src/task/executor.ts +30 -11
  526. package/src/task/index.ts +66 -7
  527. package/src/task/render.ts +23 -9
  528. package/src/tools/ask-answer-registry.ts +23 -7
  529. package/src/tools/ask.ts +8 -4
  530. package/src/tools/bash-sleep-advisory.ts +115 -0
  531. package/src/tools/bash.ts +98 -18
  532. package/src/tools/browser/attach.ts +71 -3
  533. package/src/tools/browser/launch.ts +86 -13
  534. package/src/tools/browser/profile-discovery.ts +57 -7
  535. package/src/tools/browser/render.ts +8 -1
  536. package/src/tools/browser.ts +130 -21
  537. package/src/tools/computer.enforcement.test.ts +1 -1
  538. package/src/tools/computer.ts +3 -2
  539. package/src/tools/cron.ts +12 -1
  540. package/src/tools/image-gen.ts +27 -16
  541. package/src/tools/index.ts +8 -0
  542. package/src/tools/job.ts +33 -6
  543. package/src/tools/monitor.ts +41 -2
  544. package/src/tools/skill-discovery.ts +21 -29
  545. package/src/tools/subagent.ts +142 -24
  546. package/src/tools/tool-catalog.generated.ts +6 -6
  547. package/src/tools/ultragoal-ask-guard.ts +10 -3
  548. package/src/utils/herdr-pane.ts +345 -0
  549. package/src/utils/title-generator.ts +2 -0
  550. package/src/web/scrapers/index.ts +6 -4
  551. package/dist/types/cli/malloc-env-guard.test.d.ts +0 -1
  552. package/dist/types/defaults/gjc-defaults.test.d.ts +0 -1
  553. package/dist/types/memory-backend/lazy-loading.test.d.ts +0 -1
  554. package/dist/types/runtime/boot-ordering.test.d.ts +0 -1
  555. package/dist/types/runtime/lazy-service.test.d.ts +0 -1
  556. package/dist/types/runtime/network-prewarm-service.test.d.ts +0 -1
  557. package/dist/types/runtime/workspace-tree-service.test.d.ts +0 -1
  558. package/dist/types/runtime-mcp/config.test.d.ts +0 -1
  559. package/dist/types/runtime-mcp/http.test.d.ts +0 -1
  560. package/dist/types/runtime-mcp/manager-pool.test.d.ts +0 -1
  561. package/dist/types/runtime-mcp/pool-key.test.d.ts +0 -1
  562. package/dist/types/runtime-mcp/pool.test.d.ts +0 -1
  563. package/dist/types/sdk/bus/lifecycle-control-runtime.d.ts +0 -117
  564. package/dist/types/sdk/bus/lifecycle-orchestrator.d.ts +0 -141
  565. package/dist/types/sdk/bus/telegram-cli.d.ts +0 -31
  566. package/dist/types/sdk/elevation/allowlist.d.ts +0 -20
  567. package/dist/types/sdk/elevation/audit.d.ts +0 -93
  568. package/dist/types/sdk/elevation/capability.d.ts +0 -3
  569. package/dist/types/sdk/elevation/digest.d.ts +0 -72
  570. package/dist/types/sdk/elevation/dispatch-receipt.d.ts +0 -85
  571. package/dist/types/sdk/elevation/grant-ledger.d.ts +0 -163
  572. package/dist/types/sdk/elevation/owner.d.ts +0 -48
  573. package/dist/types/sdk/host/import-graph.test.d.ts +0 -1
  574. package/dist/types/sdk/host/sdk-surface-parity.test.d.ts +0 -1
  575. package/dist/types/sdk/host/session-runtime.test.d.ts +0 -1
  576. package/dist/types/sdk/host/websocket-transport.lifecycle.test.d.ts +0 -1
  577. package/dist/types/session/auth-broker-config.d.ts +0 -13
  578. package/dist/types/session/heap-eviction-artifacts.test.d.ts +0 -1
  579. package/dist/types/skills/skills.test.d.ts +0 -1
  580. package/dist/types/slash-commands/notify-command.test.d.ts +0 -1
  581. package/dist/types/task/token-log.test.d.ts +0 -1
  582. package/dist/types/tools/computer.enforcement.test.d.ts +0 -1
  583. package/dist/types/tools/descriptors.test.d.ts +0 -1
  584. package/scripts/g005-daemon-smoke.ts +0 -180
  585. package/scripts/g011-daemon-path-smoke.ts +0 -153
  586. package/src/sdk/bus/lifecycle-control-runtime.ts +0 -1733
  587. package/src/sdk/bus/lifecycle-orchestrator.ts +0 -489
  588. package/src/sdk/bus/telegram-cli.ts +0 -212
  589. package/src/sdk/elevation/allowlist.ts +0 -54
  590. package/src/sdk/elevation/audit.ts +0 -208
  591. package/src/sdk/elevation/capability.ts +0 -41
  592. package/src/sdk/elevation/digest.ts +0 -129
  593. package/src/sdk/elevation/dispatch-receipt.ts +0 -184
  594. package/src/sdk/elevation/grant-ledger.ts +0 -1142
  595. package/src/sdk/elevation/owner.ts +0 -109
  596. package/src/session/auth-broker-config.ts +0 -109
  597. /package/dist/types/{ai-core-import-gate.test.d.ts → discovery/claude-hooks.d.ts} +0 -0
  598. /package/dist/types/{cli/fixture-report.test.d.ts → discovery/codex-hooks.d.ts} +0 -0
  599. /package/dist/types/sdk/{bus/recent-activity.d.ts → lifecycle/recent-sessions.d.ts} +0 -0
@@ -0,0 +1,73 @@
1
+ /** The five Paseo skills this setup links. `context-search` is deliberately excluded. */
2
+ export declare const INSTALL_SKILL_NAMES: readonly ["paseo", "paseo-advisor", "paseo-committee", "paseo-handoff", "paseo-loop"];
3
+ export type InstallSkillName = (typeof INSTALL_SKILL_NAMES)[number];
4
+ /** Prefix used to enumerate Paseo-owned skills when scanning for drift. */
5
+ export declare const PASEO_SKILL_PREFIX = "paseo";
6
+ /** Base provider key written into `agents.providers`. */
7
+ export declare const PROVIDER_KEY = "gjc";
8
+ /** Paseo's undocumented provider inheritance contract, reverse-engineered from a hand-written config. */
9
+ export declare const PROVIDER_EXTENDS = "acp";
10
+ /**
11
+ * Role keys Paseo stores under `providers` in `orchestration-preferences.json`.
12
+ *
13
+ * Verified against a live file: the roles are nested, not top-level, and the
14
+ * sibling `preferences` array belongs to the user.
15
+ */
16
+ export declare const ORCHESTRATION_ROLE_KEYS: readonly ["impl", "ui", "research", "planning", "audit"];
17
+ export interface PaseoPaths {
18
+ /** `~/.paseo/config.json` */
19
+ readonly configJson: string;
20
+ /** `~/.paseo/orchestration-preferences.json` */
21
+ readonly orchestrationPreferences: string;
22
+ /** `~/.agents/skills` -- READ-ONLY, never written by this setup. */
23
+ readonly agentsSkillsDir: string;
24
+ /** `<agentDir>/paseo-skills` -- the bridge directory this setup owns. */
25
+ readonly bridgeDir: string;
26
+ /** `<agentDir>/paseo/provenance.json` -- GJC-side ownership ledger. */
27
+ readonly provenanceLedger: string;
28
+ /** `<agentDir>/paseo/intent.json` -- durable crash-recovery intent record. */
29
+ readonly intentRecord: string;
30
+ /** `<agentDir>/skills` -- second protected tree, never written by this setup. */
31
+ readonly gjcSkillsDir: string;
32
+ }
33
+ /** A provider row as `paseo provider ls --json` reports it. */
34
+ export interface PaseoProviderRow {
35
+ readonly id: string;
36
+ /** Paseo reports `"available"` for a provider it can actually reach. */
37
+ readonly status?: string;
38
+ }
39
+ /** Distinct outcomes of probing `paseo provider ls --json`. Never collapsed into a boolean. */
40
+ export type PaseoLsOutcome = {
41
+ readonly kind: "ok";
42
+ readonly providerIds: readonly string[];
43
+ readonly rows: readonly PaseoProviderRow[];
44
+ } | {
45
+ readonly kind: "unavailable";
46
+ readonly detail: string;
47
+ } | {
48
+ readonly kind: "timeout";
49
+ readonly timeoutMs: number;
50
+ } | {
51
+ readonly kind: "malformed";
52
+ readonly detail: string;
53
+ } | {
54
+ readonly kind: "nonzero-exit";
55
+ readonly exitCode: number;
56
+ readonly detail: string;
57
+ };
58
+ export interface PaseoSetupDependencies {
59
+ readonly paths: PaseoPaths;
60
+ /** Bounded probe of the Paseo daemon. MUST enforce `timeoutMs` and kill the child on expiry. */
61
+ runProviderLs(timeoutMs: number): Promise<PaseoLsOutcome>;
62
+ now(): Date;
63
+ }
64
+ export declare function createDefaultPaseoPaths(agentDir?: string, home?: string): PaseoPaths;
65
+ /**
66
+ * Parse `paseo provider ls --json`.
67
+ *
68
+ * The measured shape is an array of `{ provider, label, status, ... }` rows.
69
+ * `id` and `name` are also accepted because the key is undocumented and has no
70
+ * stability guarantee, and a bare string array is accepted for the same reason.
71
+ */
72
+ export declare function parseProviderLs(stdout: string): PaseoLsOutcome;
73
+ export declare function createDefaultPaseoSetupDependencies(): PaseoSetupDependencies;
@@ -0,0 +1,44 @@
1
+ import type { CasReceipt } from "../../config/atomic-yaml-patch";
2
+ import type { Settings } from "../../config/settings";
3
+ import type { DriftReason } from "./result-types";
4
+ import { type InstallSkillName, type PaseoSetupDependencies } from "./setup-deps";
5
+ type BridgeEntryAction = "create" | "noop" | "prune-and-recreate";
6
+ type BridgeEntryPlan = {
7
+ readonly name: InstallSkillName;
8
+ readonly action: BridgeEntryAction;
9
+ readonly linkPath: string;
10
+ readonly targetPath: string;
11
+ /** The dangling link text captured during preflight, used as an unlink guard. */
12
+ readonly danglingTarget?: string;
13
+ };
14
+ /** Immutable preflight evidence consumed by the install saga and its inverse. */
15
+ export interface SkillsBridgePreflight {
16
+ readonly bridgeDir: string;
17
+ readonly bridgeDirCreated: boolean;
18
+ readonly entries: Readonly<Record<InstallSkillName, BridgeEntryPlan>>;
19
+ }
20
+ /** What the forward operation actually created, rather than what preflight intended to create. */
21
+ export interface SkillsBridgeInstallResult {
22
+ readonly createdEntries: readonly InstallSkillName[];
23
+ readonly bridgeDirCreated: boolean;
24
+ }
25
+ export declare class SkillsBridgeError extends Error {
26
+ constructor(message: string);
27
+ }
28
+ /**
29
+ * Classify every allowlisted bridge entry without mutating either skill tree.
30
+ * All conflicts are accumulated so the caller can report them together.
31
+ */
32
+ export declare function preflightSkillsBridge(deps: PaseoSetupDependencies): Promise<SkillsBridgePreflight>;
33
+ /** Create only preflight-approved bridge links; symlink publication never replaces an existing entry. */
34
+ export declare function installSkillsBridge(preflight: SkillsBridgePreflight): Promise<SkillsBridgeInstallResult>;
35
+ /**
36
+ * Undo exactly the links this run created. A changed link is reported as a
37
+ * conflict rather than being deleted; this makes compensation safe after edits.
38
+ */
39
+ export declare function inverseSkillsBridge(deps: PaseoSetupDependencies, result: SkillsBridgeInstallResult): Promise<void>;
40
+ /** Find Paseo-prefixed bridge or source entries that the locked install allowlist does not repair. */
41
+ export declare function scanSkillsBridgeDrift(deps: PaseoSetupDependencies): Promise<readonly DriftReason[]>;
42
+ /** Append the bridge directory without discarding concurrent user config changes. */
43
+ export declare function registerSkillsBridgeDirectory(settings: Settings, bridgeDir: string): Promise<CasReceipt>;
44
+ export {};
@@ -1,3 +1,4 @@
1
+ import { type GuardedWriteResult } from "../gjc-runtime/state-writer";
1
2
  import { CANONICAL_GJC_WORKFLOW_SKILLS, type CanonicalGjcWorkflowSkill } from "./canonical-skills";
2
3
  import type { WorkflowStateReceipt } from "./workflow-state-contract";
3
4
  export declare const SKILL_ACTIVE_STATE_FILE = "skill-active-state.json";
@@ -95,6 +96,8 @@ export interface SyncSkillActiveStateOptions {
95
96
  handoff_at?: string;
96
97
  active_subskills?: ActiveSubskillEntry[];
97
98
  sourceRevision?: number;
99
+ /** Internal seed path: retain the authoritative entry receipt if snapshot rebuilding fails. */
100
+ bestEffortSnapshot?: boolean;
98
101
  }
99
102
  export declare function normalizeWorkflowHudSummary(raw: unknown): WorkflowHudSummary | undefined;
100
103
  export declare function isCanonicalGjcWorkflowSkill(skill: string): skill is CanonicalGjcWorkflowSkill;
@@ -111,6 +114,7 @@ export declare function isWorkflowContinuationInert(skill: string, phase: string
111
114
  export declare function listActiveSkills(raw: unknown): SkillActiveEntry[];
112
115
  export declare function normalizeSkillActiveState(raw: unknown): SkillActiveState | null;
113
116
  export declare function getSkillActiveStatePaths(cwd: string, sessionId?: string): SkillActiveStatePaths;
117
+ export declare function upstreamPlanningPipelineSkills(skill: string): string[];
114
118
  export declare function collapsePlanningPipeline(entries: readonly SkillActiveEntry[]): SkillActiveEntry[];
115
119
  export type VisibleSkillActiveStateCacheTier = "security" | "hud";
116
120
  export interface ReadVisibleSkillActiveStateOptions {
@@ -132,7 +136,7 @@ interface ActiveStateSignature {
132
136
  export declare function computeActiveStateSignature(cwd: string, sessionId: string): Promise<ActiveStateSignature>;
133
137
  export declare function invalidateVisibleSkillActiveStateCache(cwd?: string, sessionId?: string): void;
134
138
  export declare function readVisibleSkillActiveState(cwd: string, sessionId?: string, opts?: ReadVisibleSkillActiveStateOptions): Promise<SkillActiveState | null>;
135
- export declare function syncSkillActiveState(options: SyncSkillActiveStateOptions): Promise<void>;
139
+ export declare function syncSkillActiveState(options: SyncSkillActiveStateOptions): Promise<GuardedWriteResult | undefined>;
136
140
  export interface ApplyHandoffOptions {
137
141
  cwd: string;
138
142
  caller: SyncSkillActiveStateOptions;
@@ -14,5 +14,9 @@ export declare const ACP_BUILTIN_SLASH_COMMANDS: AvailableCommand[];
14
14
  * - `{ consumed: true }` when the command handled the input entirely.
15
15
  * - `{ prompt }` when the command was handled but a residual prompt should be
16
16
  * sent to the model.
17
+ * When `disabledOnly` is set, ACP-enabled builtins also return `false` so a
18
+ * transport can apply only the unavailable-over-ACP policy before forwarding.
17
19
  */
18
- export declare function executeAcpBuiltinSlashCommand(text: string, runtime: AcpBuiltinCommandRuntime): Promise<AcpBuiltinSlashCommandResult>;
20
+ export declare function executeAcpBuiltinSlashCommand(text: string, runtime: AcpBuiltinCommandRuntime, options?: {
21
+ disabledOnly?: boolean;
22
+ }): Promise<AcpBuiltinSlashCommandResult>;
@@ -36,6 +36,8 @@ export declare const BUILTIN_SLASH_COMMANDS_INTERNAL: ReadonlyArray<SlashCommand
36
36
  * but remaining text should be sent as a prompt.
37
37
  */
38
38
  export declare function executeBuiltinSlashCommand(text: string, runtime: BuiltinSlashCommandRuntime): Promise<string | boolean>;
39
+ /** Dispatch a command explicitly authorized for trusted local non-interactive mode. */
40
+ export declare function executeLocalHeadlessBuiltinSlashCommand(text: string, runtime: SlashCommandRuntime): Promise<false | Exclude<SlashCommandResult, undefined>>;
39
41
  /** Look up a unified spec by name or alias. Used by the ACP dispatcher. */
40
42
  export declare function lookupBuiltinSlashCommand(name: string): SlashCommandSpec | undefined;
41
43
  export type { ParsedSlashCommand, SlashCommandResult, SlashCommandRuntime, SlashCommandSpec, TuiSlashCommandRuntime };
@@ -0,0 +1,12 @@
1
+ import type { SlashCommandRuntime } from "../types";
2
+ /**
3
+ * List every provider's stored OAuth accounts, marking which row each
4
+ * currently-tracked session is using.
5
+ */
6
+ export declare function buildCredentialListText(runtime: SlashCommandRuntime): Promise<string>;
7
+ /**
8
+ * Switch the running session's stored OAuth credential for a provider,
9
+ * independent of quota state. Returns the confirmation/error text to show
10
+ * the user; never throws.
11
+ */
12
+ export declare function switchSessionCredentialCommand(runtime: SlashCommandRuntime, args: string): Promise<string>;
@@ -1,7 +1,6 @@
1
1
  import type { SlashCommandRuntime } from "../types";
2
- /**
3
- * Build the `/usage` ACP-mode text. Prefers provider-reported limits when the
4
- * session exposes `fetchUsageReports`; otherwise falls back to the local
5
- * session-manager tallies.
6
- */
7
- export declare function buildUsageReportText(runtime: SlashCommandRuntime): Promise<string>;
2
+ export interface UsageReportOptions {
3
+ check?: boolean;
4
+ }
5
+ /** Build `/usage`; plain mode is cache-only and never fetches or probes. */
6
+ export declare function buildUsageReportText(runtime: SlashCommandRuntime, options?: UsageReportOptions): Promise<string>;
@@ -30,12 +30,14 @@ export interface ParsedSlashCommand {
30
30
  * Result returned by a slash-command handler.
31
31
  *
32
32
  * - `void` / `undefined` — command was handled and consumed; no further input.
33
- * - `{ consumed: true }` — explicit equivalent of the above (ACP shape).
33
+ * - `{ consumed: true, exitCode?: number }` — explicit equivalent of the above;
34
+ * trusted local headless mode applies an optional non-zero process status.
34
35
  * - `{ prompt: string }` — command handled, pass `prompt` through as the new
35
36
  * user input (e.g. `/force <tool> <prompt>` keeps `<prompt>` as the message).
36
37
  */
37
38
  export type SlashCommandResult = undefined | {
38
39
  consumed: true;
40
+ exitCode?: number;
39
41
  } | {
40
42
  prompt: string;
41
43
  };
@@ -95,6 +97,10 @@ export interface SlashCommandSpec extends BuiltinSlashCommand {
95
97
  * not silently drop it from `available_commands_update`.
96
98
  */
97
99
  acpInputHint?: string;
100
+ /** Set false for trusted local commands that must never be advertised or dispatched through ACP. */
101
+ acp?: boolean;
102
+ /** Explicitly authorizes this handler in trusted local non-interactive print mode. */
103
+ localHeadless?: boolean;
98
104
  /**
99
105
  * Text/ACP-mode handler. The same body is invoked from the ACP dispatcher
100
106
  * and, via the TUI adapter, when no `handleTui` override is provided.
@@ -5,6 +5,7 @@
5
5
  */
6
6
  import type { AgentTelemetryConfig, ThinkingLevel } from "@gajae-code/agent-core";
7
7
  import { type Model, type ServiceTier } from "@gajae-code/ai/core";
8
+ import { AsyncJobManager } from "../async";
8
9
  import { ModelRegistry } from "../config/model-registry";
9
10
  import type { PromptTemplate } from "../config/prompt-templates";
10
11
  import { Settings } from "../config/settings";
@@ -96,6 +97,15 @@ export interface ExecutorOptions {
96
97
  */
97
98
  parentArtifactManager?: ArtifactManager;
98
99
  managedPersistence?: ManagedTaskPersistence;
100
+ /**
101
+ * The parent session's ENDPOINT-owned AsyncJobManager (resolved by the
102
+ * TaskTool via forEndpoint(sessionId) ?? instance()). Model metadata and
103
+ * live-handle state for THIS subagent are recorded in the SAME manager the
104
+ * task job runs in — with concurrent top-level sessions the process-global
105
+ * instance belongs to a different session and would surface this subagent
106
+ * under the wrong session's record (review thread P1).
107
+ */
108
+ asyncJobManager?: AsyncJobManager;
99
109
  parentHindsightSessionState?: HindsightSessionState;
100
110
  /**
101
111
  * Parent agent's OpenTelemetry configuration. When defined, the subagent's
@@ -1,7 +1,7 @@
1
1
  import type { AgentTool, AgentToolResult, AgentToolUpdateCallback } from "@gajae-code/agent-core";
2
2
  import type { Model } from "@gajae-code/ai/core";
3
+ import { type SubagentRunOutcome } from "@gajae-code/coding-agent/async";
3
4
  import type { ToolSession } from "..";
4
- import { type SubagentRunOutcome } from "../async";
5
5
  import type { Theme } from "../modes/theme/theme";
6
6
  import { type SingleResult, type TaskToolDetails, type TaskToolSchemaInstance } from "./types";
7
7
  import "../tools/review";
@@ -48,5 +48,7 @@ export declare class TaskTool implements AgentTool<TaskToolSchemaInstance, TaskT
48
48
  * multi-repo workspaces fail closed prior to context/discovery (#2901).
49
49
  */
50
50
  static create(session: ToolSession): Promise<TaskTool>;
51
+ /** Create catalog metadata from bundled agents only, without ambient filesystem discovery. */
52
+ static createForToolCatalog(session: ToolSession): Promise<TaskTool>;
51
53
  execute(_toolCallId: string, rawParams: unknown, signal?: AbortSignal, onUpdate?: AgentToolUpdateCallback<TaskToolDetails>): Promise<AgentToolResult<TaskToolDetails>>;
52
54
  }
@@ -3,15 +3,18 @@
3
3
  *
4
4
  * Decouples the `ask` tool (which reads the source via `AgentSession`) from the
5
5
  * notifications extension (which registers one), without threading a new method
6
- * through the extension/runner/controller wiring. A session has at most one
7
- * source; registering returns a disposer.
6
+ * through the extension/runner/controller wiring. A session may have multiple
7
+ * sources. A "protocol" source always takes precedence over an "interactive"
8
+ * source regardless of registration order; within the same kind, the most
9
+ * recently registered source wins. Registering returns a disposer.
8
10
  */
9
11
  /** Error code a remote ask source uses to signal that its own timeout fired. */
10
12
  export declare const GJC_ASK_TIMEOUT_CODE = "gjc.ask.timeout";
11
13
  import type { WorkflowGateEmitter } from "../modes/shared/agent-wire/workflow-gate-broker";
12
14
  import type { AskAnswerSource } from "./index";
15
+ export type AskAnswerSourceKind = "protocol" | "interactive";
13
16
  /** Register `source` for `sessionId`. Returns a disposer that restores the prior source. */
14
- export declare function registerAskAnswerSource(sessionId: string, source: AskAnswerSource): () => void;
17
+ export declare function registerAskAnswerSource(sessionId: string, source: AskAnswerSource, kind?: AskAnswerSourceKind): () => void;
15
18
  /** The highest-priority answer source for `sessionId`, if one is registered. */
16
19
  export declare function getAskAnswerSource(sessionId: string): AskAnswerSource | undefined;
17
20
  /** Publish a session's current workflow-gate emitter after mode initialization. */
@@ -0,0 +1,14 @@
1
+ /**
2
+ * Detect a long blocking sleep in a bash command and return an advisory notice,
3
+ * or `undefined` if the command does not contain a qualifying sleep. The notice
4
+ * is appended to the bash result output; it never blocks execution.
5
+ *
6
+ * `timeoutSec` is the effective (already-clamped) execution timeout the command
7
+ * will run under, when known. The bash tool kills the command at this timeout
8
+ * whether the sleep fits inside it or not. Passing it lets the notice report
9
+ * the bounded effective silent wait the operator will actually observe, instead
10
+ * of the requested duration (which may be much longer and is never reached).
11
+ * When `timeoutSec` is `undefined` (no timeout known at the construction
12
+ * boundary), the notice reports only the requested duration and stays useful.
13
+ */
14
+ export declare function longSleepAdvisory(command: string, timeoutSec?: number): string | undefined;
@@ -48,11 +48,6 @@ export interface BashToolDetails {
48
48
  export declare function summarizeBashToolActivity(kind: "args" | "result", value: unknown): string | undefined;
49
49
  export interface BashToolOptions {
50
50
  }
51
- /**
52
- * Bash tool implementation.
53
- *
54
- * Executes bash commands with optional timeout and working directory.
55
- */
56
51
  export declare class BashTool implements AgentTool<BashToolSchema, BashToolDetails> {
57
52
  #private;
58
53
  private readonly session;
@@ -83,6 +78,7 @@ export declare class BashTool implements AgentTool<BashToolSchema, BashToolDetai
83
78
  ownerId?: string;
84
79
  label?: string;
85
80
  ctx?: AgentToolContext;
81
+ toolCallId?: string;
86
82
  onRawLine?: (line: string, jobId: string) => void;
87
83
  shouldAcceptRawLine?: (jobId: string) => boolean;
88
84
  lifecycle?: import("../async").AsyncJobLifecycleCleanup;
@@ -91,7 +87,7 @@ export declare class BashTool implements AgentTool<BashToolSchema, BashToolDetai
91
87
  label: string;
92
88
  commandCwd: string;
93
89
  }>;
94
- execute(_toolCallId: string, { command: rawCommand, env: rawEnv, timeout: rawTimeout, cwd, async: asyncRequested, pty, }: BashToolInput, signal?: AbortSignal, onUpdate?: AgentToolUpdateCallback<BashToolDetails>, ctx?: AgentToolContext): Promise<AgentToolResult<BashToolDetails>>;
90
+ execute(toolCallId: string, { command: rawCommand, env: rawEnv, timeout: rawTimeout, cwd, async: asyncRequested, pty, }: BashToolInput, signal?: AbortSignal, onUpdate?: AgentToolUpdateCallback<BashToolDetails>, ctx?: AgentToolContext): Promise<AgentToolResult<BashToolDetails>>;
95
91
  }
96
92
  export interface BashRenderArgs {
97
93
  command?: string;
@@ -32,6 +32,16 @@ export declare function findRunningChromeProfile(exe: string, profile: {
32
32
  userDataDir: string;
33
33
  profileDirectory: string;
34
34
  }, signal?: AbortSignal): Promise<RunningChromeProfile | null>;
35
+ interface ProfileProcessScanOptions {
36
+ platform?: NodeJS.Platform;
37
+ linuxPids?: readonly number[];
38
+ linuxExecutablePaths?: ReadonlyMap<number, string>;
39
+ signal?: AbortSignal;
40
+ }
41
+ export declare function findRunningChromeProfileForTest(exe: string, profile: {
42
+ userDataDir: string;
43
+ profileDirectory: string;
44
+ }, options: ProfileProcessScanOptions): Promise<RunningChromeProfile | null>;
35
45
  /**
36
46
  * Pick the best page target on an attached browser. Without a matcher, prefer
37
47
  * a page that doesn't look like a helper window (devtools, request handler,
@@ -48,3 +58,4 @@ export declare function gracefulKillTreeOnce(pid: number, gracePeriodMs?: number
48
58
  * (single-instance apps may keep an orphan around) and tear them all down.
49
59
  */
50
60
  export declare function killExistingByPath(executablePath: string, signal?: AbortSignal): Promise<number>;
61
+ export {};
@@ -19,7 +19,27 @@ export declare function resolveBrowserEnvOverridesForTest(): {
19
19
  proxy: string | undefined;
20
20
  proxyBypassLoopback: boolean;
21
21
  ignoreCertErrors: boolean;
22
+ programFiles: string | undefined;
23
+ programFilesX86: string | undefined;
24
+ localAppData: string | undefined;
22
25
  };
26
+ /** True for a Microsoft Edge executable path (excluded from Chrome profile mode). */
27
+ export declare function isEdgeExecutable(candidate: string): boolean;
28
+ /** True only for executable names owned by Google Chrome or Chromium. */
29
+ export declare function isChromeProfileExecutable(candidate: string): boolean;
30
+ /**
31
+ * Validate the executable identity used for profile mode. Most symlinks are
32
+ * judged by their resolved target so a renamed cross-brand browser cannot pass
33
+ * by alias. Snap's canonical `/snap/bin/chromium` launcher is the exception:
34
+ * it resolves to the generic `/usr/bin/snap` dispatcher by design.
35
+ */
36
+ export declare function isChromeProfileExecutableForLaunch(candidate: string, resolvedCandidate: string): boolean;
37
+ /**
38
+ * Installed Chrome/Chromium executable for saved-profile mode, or undefined when
39
+ * none is present. Edge is excluded on purpose: a discovered Chrome user data
40
+ * directory must never be opened by a different browser brand.
41
+ */
42
+ export declare function resolveSystemChromeForProfile(): string | undefined;
23
43
  export interface LaunchHeadlessOptions {
24
44
  headless: boolean;
25
45
  viewport?: {
@@ -14,6 +14,12 @@ export interface DiscoveryEnv {
14
14
  exists: (p: string) => boolean;
15
15
  /** Windows LOCALAPPDATA override (tests / non-default installs). */
16
16
  localAppData?: string;
17
+ /** Linux Chrome-specific default user-data override. */
18
+ chromeUserDataDir?: string;
19
+ /** Linux Chrome config-home override (takes precedence over XDG_CONFIG_HOME). */
20
+ chromeConfigHome?: string;
21
+ /** Linux XDG config-home override. */
22
+ xdgConfigHome?: string;
17
23
  }
18
24
  /** Candidate Chrome user-data roots for the platform (most common first). */
19
25
  export declare function chromeUserDataRoots(env: DiscoveryEnv): string[];
@@ -35,6 +35,7 @@ interface BrowserRenderContext {
35
35
  expanded?: boolean;
36
36
  previewLines?: number;
37
37
  }
38
+ export declare function describeBrowserForTest(args: BrowserRenderArgs, details: BrowserToolDetails | undefined): string | undefined;
38
39
  export declare const browserToolRenderer: {
39
40
  renderCall(args: BrowserRenderArgs, options: RenderResultOptions, theme: Theme): Component;
40
41
  renderResult(result: {
@@ -1,6 +1,7 @@
1
1
  import type { AgentTool, AgentToolContext, AgentToolResult, AgentToolUpdateCallback } from "@gajae-code/agent-core";
2
2
  import * as z from "zod/v4";
3
3
  import type { ToolSession } from "../sdk";
4
+ import { type DiscoveryEnv } from "./browser/profile-discovery";
4
5
  import { type BrowserKind, type BrowserKindTag } from "./browser/registry";
5
6
  import type { Observation, ScreenshotResult } from "./browser/tab-protocol";
6
7
  import type { OutputMeta } from "./output-meta";
@@ -107,7 +108,8 @@ export interface BrowserToolDetails {
107
108
  result?: string;
108
109
  meta?: OutputMeta;
109
110
  }
110
- export declare function resolveBrowserKindForTest(params: BrowserParams, session: ToolSession): BrowserKind;
111
+ export declare function resolveBrowserKindForTest(params: BrowserParams, session: ToolSession, signal?: AbortSignal, discoveryEnv?: DiscoveryEnv): Promise<BrowserKind>;
112
+ export declare function isDefaultChromeUserDataDirForTest(candidate: string, roots: readonly string[], platform?: NodeJS.Platform, signal?: AbortSignal): Promise<boolean>;
111
113
  /**
112
114
  * Browser tool: stateful, multi-tab. Three actions:
113
115
  * - `open` → acquire/create a named tab on a browser kind (headless | spawned | connected) and optionally goto a url.
@@ -4,7 +4,14 @@ import { type ModelRegistry } from "../config/model-registry";
4
4
  import type { Settings } from "../config/settings";
5
5
  import type { CustomTool } from "../extensibility/custom-tools/types";
6
6
  export declare function redactImageProviderText(value: unknown, activeApiKey?: string): string;
7
- type ImageProvider = "alibaba" | "antigravity" | "gemini" | "openai" | "openai-codex" | "openrouter" | (string & {});
7
+ type ImageProvider = "alibaba" | "antigravity" | "gemini" | "openai" | "openai-codex" | "openrouter";
8
+ export declare class UnsupportedImageProviderError extends Error {
9
+ readonly provider: string;
10
+ readonly modelId: string;
11
+ readonly api: Model["api"];
12
+ readonly code: "unsupported_image_provider";
13
+ constructor(provider: string, modelId: string, api: Model["api"]);
14
+ }
8
15
  declare const responseModalitySchema: z.ZodEnum<{
9
16
  IMAGE: "IMAGE";
10
17
  TEXT: "TEXT";
@@ -133,7 +140,7 @@ export declare function resolveImageRoleModel(settings: Settings, modelRegistry:
133
140
  export declare function resolveImageModel(provider: string, modelOverride: string | null): string;
134
141
  /** Test seam: the Google image key fallback as resolved from trusted env. */
135
142
  export declare function googleImageApiKeyFromEnvForTest(): string | undefined;
136
- export declare function isOpenAIHostedImageModel(model: Model | undefined): model is Model;
143
+ export declare function isOpenAIHostedImageModel(model: Model | undefined): boolean;
137
144
  /** Test seam: the image-request base URL as resolved from trusted env. */
138
145
  export declare function getOpenAIImageBaseUrlForTest(model: Model, authCredentialType?: "api_key" | "oauth"): string;
139
146
  export declare const imageGenTool: CustomTool<typeof imageGenSchema, ImageGenToolDetails>;
@@ -1,5 +1,6 @@
1
1
  import type { AgentTelemetryConfig, AgentTool } from "@gajae-code/agent-core";
2
2
  import type { Model, ServiceTier, ToolChoice } from "@gajae-code/ai/core";
3
+ import type { AsyncJobManager } from "../async";
3
4
  import type { PromptTemplate } from "../config/prompt-templates";
4
5
  import type { Settings } from "../config/settings";
5
6
  import type { Skill } from "../extensibility/skills";
@@ -169,6 +170,8 @@ export interface ToolSession {
169
170
  hasForegroundBashBackgroundRequestHandler?: () => boolean;
170
171
  /** Request that the active managed foreground bash call fold into a background job, if supported. */
171
172
  requestForegroundBashBackground?: () => boolean;
173
+ /** Get the session-owned or inherited async job manager. */
174
+ getAsyncJobManager?: () => AsyncJobManager | undefined;
172
175
  /** Get session ID */
173
176
  getSessionId?: () => string | null;
174
177
  /** Get credential-selection session identity. */
@@ -234,6 +237,11 @@ export interface ToolSession {
234
237
  agentOutputManager?: AgentOutputManager;
235
238
  /** Settings instance for passing to subagents */
236
239
  settings: Settings;
240
+ /**
241
+ * The session's REQUESTED effective agent directory, independent of the
242
+ * global Settings singleton (which can be reused across sessions).
243
+ */
244
+ getSessionAgentDir?: () => string;
237
245
  /** Live service-tier intent of the parent session, inherited by `inherit` subagents. */
238
246
  serviceTier?: ServiceTier;
239
247
  /** Whether the effective subagent tier grants fast mode for a resolved provider. */
@@ -49,6 +49,6 @@ export declare class MonitorTool implements AgentTool<typeof monitorSchema, Moni
49
49
  readonly loadMode = "discoverable";
50
50
  constructor(session: ToolSession);
51
51
  static createIf(session: ToolSession): MonitorTool | null;
52
- execute(_toolCallId: string, params: MonitorParams, _signal?: AbortSignal, _onUpdate?: AgentToolUpdateCallback<MonitorToolDetails>, context?: AgentToolContext): Promise<AgentToolResult<MonitorToolDetails>>;
52
+ execute(toolCallId: string, params: MonitorParams, _signal?: AbortSignal, _onUpdate?: AgentToolUpdateCallback<MonitorToolDetails>, context?: AgentToolContext): Promise<AgentToolResult<MonitorToolDetails>>;
53
53
  }
54
54
  export {};
@@ -17,11 +17,18 @@ export interface SkillDiscoveryToolDetails {
17
17
  count: number;
18
18
  /**
19
19
  * Present only when zero candidates were returned AND discovery config gates
20
- * (`skills.enabled` / `skills.enablePiProject` / `skills.enablePiUser`)
20
+ * (`skills.enabled` / `skills.trustProjectSkills` / `skills.trustUserSkills`)
21
21
  * prevented some or all of the requested scope from being searched. Without
22
22
  * this, a disabled config is indistinguishable from "no skills exist".
23
23
  */
24
24
  notice?: string;
25
+ /**
26
+ * Human-readable diagnostics for skills that were scanned but not
27
+ * advertised (protected-name collisions with bundled workflow skills,
28
+ * include/ignore/disable policy filters, invalid frontmatter, shadowing,
29
+ * scan failures). Bounded; empty when nothing was filtered.
30
+ */
31
+ diagnostics?: string[];
25
32
  }
26
33
  export declare class SkillDiscoveryTool implements AgentTool<typeof skillDiscoverySchema, SkillDiscoveryToolDetails> {
27
34
  #private;
@@ -114,6 +114,8 @@ export declare class SubagentTool implements AgentTool<typeof subagentSchema, Su
114
114
  }, z.core.$strip>;
115
115
  readonly strict = true;
116
116
  readonly loadMode = "discoverable";
117
+ /** Test-only seam: substitute the liveness clock. Returns a restore function. */
118
+ withLivenessClock(nowMs: () => number): () => void;
117
119
  constructor(session: ToolSession);
118
120
  execute(_toolCallId: string, params: SubagentParams, signal?: AbortSignal, onUpdate?: AgentToolUpdateCallback<SubagentToolDetails>, _context?: AgentToolContext): Promise<AgentToolResult<SubagentToolDetails>>;
119
121
  }
@@ -8,5 +8,5 @@ export interface UltragoalAskGuardContext {
8
8
  sessionId?: string | null;
9
9
  }
10
10
  export declare function formatUltragoalAskBlockMessage(diagnostic: UltragoalAskBlockDiagnostic): string;
11
- export declare function assertUltragoalAskAllowed(cwd: string, context?: UltragoalAskGuardContext): Promise<void>;
12
- export declare function guardToolForUltragoalAsk<T extends AgentTool>(tool: T, getCwd: () => string, getContext?: () => UltragoalAskGuardContext): T;
11
+ export declare function assertUltragoalAskAllowed(cwd: string, context?: UltragoalAskGuardContext, agentDir?: string): Promise<void>;
12
+ export declare function guardToolForUltragoalAsk<T extends AgentTool>(tool: T, getCwd: () => string, getContext?: () => UltragoalAskGuardContext, getSessionAgentDir?: () => string | undefined): T;
@@ -0,0 +1,76 @@
1
+ export type HerdrAgentState = "idle" | "working" | "blocked";
2
+ export interface HerdrPaneEnvironment {
3
+ paneId: string;
4
+ binPath: string;
5
+ }
6
+ export interface HerdrReportProcess {
7
+ exited: Promise<number>;
8
+ kill(): void;
9
+ unref(): void;
10
+ }
11
+ export interface HerdrReporterOptions {
12
+ env?: NodeJS.ProcessEnv;
13
+ which?: (command: string) => string | null;
14
+ spawn?: (command: string[], options: {
15
+ env: NodeJS.ProcessEnv;
16
+ stdin: "ignore";
17
+ stdout: "ignore";
18
+ stderr: "ignore";
19
+ }) => HerdrReportProcess;
20
+ }
21
+ /** Session event shape consumed by the reporter. Narrow on purpose: the state
22
+ * machine is driven only by lifecycle transitions, never by message content. */
23
+ export interface HerdrSessionEvent {
24
+ type: string;
25
+ toolName?: string;
26
+ }
27
+ export interface HerdrReporter {
28
+ /** Report a new agent state. Deduplicated against the last reported state. */
29
+ report(state: HerdrAgentState): void;
30
+ /** Release this pane's lifecycle authority and stop listening. Idempotent. */
31
+ release(): void;
32
+ /** Current reported state, for tests and diagnostics. */
33
+ readonly state: HerdrAgentState | null;
34
+ }
35
+ /**
36
+ * Resolve the pane environment. Returns null unless gjc is demonstrably inside
37
+ * a Herdr pane AND a herdr binary is resolvable.
38
+ *
39
+ * `HERDR_BIN_PATH` is honored first because Herdr sets it for its own panes;
40
+ * otherwise the binary is resolved from PATH. No home-directory guessing: an
41
+ * unverified path scavenged from an install layout is a command this process
42
+ * would execute, and PATH/`HERDR_BIN_PATH` are the trust boundary Herdr itself
43
+ * documents.
44
+ */
45
+ export declare function resolveHerdrPaneEnvironment(options?: HerdrReporterOptions): HerdrPaneEnvironment | null;
46
+ /** Build the argv for a state report. Exported for tests. */
47
+ export declare function buildHerdrReportArgs(paneId: string, state: HerdrAgentState, seq: number): string[];
48
+ /** Build the argv for an authority release. Exported for tests. */
49
+ export declare function buildHerdrReleaseArgs(paneId: string, seq: number): string[];
50
+ /**
51
+ * Collapse a session name into a single-line pane title. Control characters are
52
+ * removed rather than escaped: the value reaches a terminal surface, and a
53
+ * model-generated session name must never be able to inject escapes.
54
+ */
55
+ export declare function sanitizeHerdrPaneTitle(title: string | undefined): string | undefined;
56
+ /** Build the argv for a pane title report. Exported for tests. */
57
+ export declare function buildHerdrTitleArgs(paneId: string, title: string, seq: number): string[];
58
+ /** Build the argv that retracts a previously reported pane title. Exported for tests. */
59
+ export declare function buildHerdrClearTitleArgs(paneId: string, seq: number): string[];
60
+ /**
61
+ * Report the current session title for this pane. No-op outside a Herdr pane or
62
+ * when the session has no usable name, so a pane keeps the last real title
63
+ * instead of flickering to a placeholder during startup or a rename.
64
+ */
65
+ export declare function syncHerdrPaneTitle(sessionName: string | undefined, options?: HerdrReporterOptions): void;
66
+ /**
67
+ * Create a reporter bound to a pane. `subscribe` supplies the session event
68
+ * stream and is parameterized so the state machine is testable without a live
69
+ * session.
70
+ */
71
+ export declare function createHerdrReporter(paneEnv: HerdrPaneEnvironment, subscribe: (listener: (event: HerdrSessionEvent) => void) => () => void, options?: HerdrReporterOptions): HerdrReporter;
72
+ /**
73
+ * Install the Herdr reporter for a running session. No-op outside a Herdr pane.
74
+ * Returns the reporter so callers can release it deterministically, or null.
75
+ */
76
+ export declare function installHerdrReporter(subscribe: (listener: (event: HerdrSessionEvent) => void) => () => void, options?: HerdrReporterOptions): HerdrReporter | null;