@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
@@ -8,6 +8,7 @@ import type { Args as ParsedArgs } from "../cli/args";
8
8
  import { Settings } from "../config/settings";
9
9
  import { applyStartupModelProfiles, createSessionManager } from "../main";
10
10
  import { initializeExtensions } from "../modes/runtime-init";
11
+ import { initTheme } from "../modes/theme/theme";
11
12
  import { ACP_MCP_REQUEST_TIMEOUT_MS, ACP_MCP_STARTUP_HEADROOM_MS } from "../sdk/acp/mcp";
12
13
  import { Broker } from "../sdk/broker/broker";
13
14
  import { readBrokerDiscovery } from "../sdk/broker/discovery";
@@ -510,6 +511,12 @@ export async function runSessionHost(
510
511
  throw await registrationFailure(error);
511
512
  }
512
513
 
514
+ try {
515
+ await initTheme(false);
516
+ } catch (error) {
517
+ throw await registrationFailure(error);
518
+ }
519
+
513
520
  // The longer MCP startup ceiling is scoped to ACP lifecycle launches only:
514
521
  // it applies when this request actually carried `mcpServers`. Ordinary
515
522
  // CLI/SDK `mcpConfigPath` consumers keep the manager's short default.
@@ -518,8 +525,8 @@ export async function runSessionHost(
518
525
  // Inside it, the throw would be caught, reclassified as
519
526
  // `registration`/`failed`, and written a second time, losing the
520
527
  // `startup`/`pending` outcome the readiness cutoff is supposed to report.
521
- // Session-manager open and MCP config write already consumed part of the
522
- // budget, so re-read the clock here rather than reusing the earlier check.
528
+ // Session-manager open, MCP config write, and theme initialization already
529
+ // consumed part of the budget, so re-read the clock here.
523
530
  let mcpStartupTimeoutMs: number | undefined;
524
531
  if (mcpConfigPath !== undefined) {
525
532
  const remaining = request.semanticReadyDeadlineAt - now() - ACP_MCP_STARTUP_HEADROOM_MS;
@@ -606,9 +613,43 @@ export async function runSessionHost(
606
613
  })();
607
614
  return failureRollback;
608
615
  };
616
+ const sessionEndpointPath = path.join(request.stateRoot, "sdk", `${request.sessionId}.json`);
617
+ const exitAfterSessionDisposal = async (): Promise<void> => {
618
+ await disposeSession();
619
+ let failure: SdkStartupFailure | undefined;
620
+ try {
621
+ const endpoint = JSON.parse(await fs.readFile(sessionEndpointPath, "utf8")) as {
622
+ pid?: unknown;
623
+ sessionId?: unknown;
624
+ };
625
+ if (endpoint.pid === process.pid && endpoint.sessionId === request.sessionId)
626
+ failure = {
627
+ phase: "startup",
628
+ reason: "failed",
629
+ message: `SDK host endpoint remained after graceful shutdown: ${request.sessionId}`,
630
+ };
631
+ } catch (error) {
632
+ if ((error as NodeJS.ErrnoException).code !== "ENOENT") {
633
+ failure = {
634
+ phase: "startup",
635
+ reason: "failed",
636
+ message: `SDK host endpoint cleanup could not be verified: ${request.sessionId}`,
637
+ };
638
+ }
639
+ }
640
+ if (failure) {
641
+ process.exitCode = 1;
642
+ process.stderr.write(`${failure.message}\n`);
643
+ await writeFailure(failure, rollback.result).catch(() => {});
644
+ }
645
+ process.exit(process.exitCode ?? 0);
646
+ };
647
+ let stopping = false;
609
648
  const stop = () => {
610
649
  if (capability.result?.status === "started") {
611
- void disposeSession().finally(() => process.exit(0));
650
+ if (stopping) return;
651
+ stopping = true;
652
+ void exitAfterSessionDisposal();
612
653
  return;
613
654
  }
614
655
  const failure = capability.normalizeFailure("startup", "failed", "SDK lifecycle host terminated.");
@@ -733,50 +774,45 @@ class SdkServeHelp extends Command {
733
774
 
734
775
  class SdkSessionHelp extends Command {
735
776
  static description =
736
- "Manage SDK sessions: `gjc sdk session list|inspect|send|status|tail|elevate`, or the explicit raw hatch `gjc sdk session raw control|query|global`. The session CLI is broker-bound, credential-free by default, and elevation approval requires an attended operator.";
777
+ "Manage SDK sessions: `gjc sdk session list|inspect|send|status|tail`, or the explicit raw hatch `gjc sdk session raw control|query|global`. The session CLI is broker-bound and credential-free.";
737
778
  static args = {
738
779
  verb: Args.string({
739
780
  description: "Session verb",
740
781
  required: false,
741
- options: ["list", "inspect", "send", "status", "tail", "elevate", "raw"],
782
+ options: ["list", "inspect", "send", "status", "tail", "raw"],
742
783
  }),
743
784
  target: Args.string({
744
785
  description: "Session id (or the raw kind control|query|global for `raw`)",
745
786
  required: false,
746
787
  }),
747
- opRef: Args.string({ description: "Operation reference to report on (status only)", required: false }),
788
+ opRef: Args.string({
789
+ description: "Operation reference for status, or session id for raw control/query",
790
+ required: false,
791
+ }),
748
792
  };
749
793
  static flags = {
750
794
  "agent-dir": Flags.string({ description: "SDK broker state directory" }),
751
- json: Flags.boolean({ description: "Emit JSON output (default for SDK session commands)" }),
752
795
  repo: Flags.string({
753
796
  description: "Workspace directory for saved-session resolution (default: current directory)",
754
797
  }),
755
798
  op: Flags.string({ description: "Raw control or global operation" }),
756
799
  query: Flags.string({ description: "Raw query name" }),
757
- kind: Flags.string({ description: "Elevation operation kind (control|global)", options: ["control", "global"] }),
758
800
  "json-input": Flags.string({ description: "SDK request JSON object" }),
759
801
  "json-input-file": Flags.string({ description: "Read SDK request JSON from a 0600 file" }),
760
802
  "json-input-stdin": Flags.boolean({ description: "Read SDK request JSON from standard input" }),
761
803
  "idempotency-key": Flags.string({ description: "Caller idempotency key required for SDK lifecycle globals" }),
762
- "elevation-request-id": Flags.string({ description: "Approved elevation grant id for allowlisted raw controls" }),
763
804
  confirm: Flags.boolean({ description: "Confirm a destructive SDK control operation" }),
764
805
  cursor: Flags.string({
765
- description:
766
- "Raw query continuation cursor, or a saved checkpoint token to resume tail from (re-minted per connection)",
806
+ description: "Raw query continuation cursor, or a saved checkpoint token to resume tail from",
767
807
  }),
768
- "show-endpoint-credential": Flags.boolean({ description: "Allow session.get_endpoint secret output" }),
769
- yes: Flags.boolean({ description: "Confirm endpoint credential output on a TTY" }),
770
808
  text: Flags.string({ description: "Prompt text for send (alternative to --json-input)" }),
771
809
  "op-ref": Flags.string({ description: "Operation reference for send (defaults to a generated ULID)" }),
772
810
  wait: Flags.boolean({
773
- description: "send --wait: poll turn.prompt_status until terminal or the wait window elapses (never cancels)",
811
+ description: "send --wait: poll turn.result with kind=prompt until terminal or the wait window elapses",
774
812
  }),
775
813
  "timeout-ms": Flags.string({ description: "Wait window for send --wait, status, and live tail follow" }),
776
- strict: Flags.boolean({ description: "tail --strict: fail closed (exit 1 retention_gap) on retention gaps" }),
777
- "until-idle": Flags.boolean({
778
- description: "tail --until-idle: exit once the observed event stream reaches a terminal turn state",
779
- }),
814
+ strict: Flags.boolean({ description: "tail --strict: fail closed on retention gaps" }),
815
+ "until-idle": Flags.boolean({ description: "tail --until-idle: exit after an observed terminal turn state" }),
780
816
  "all-events": Flags.boolean({ description: "tail --all-events: include every event-ring kind" }),
781
817
  };
782
818
  async run(): Promise<void> {}
@@ -791,7 +827,6 @@ class SdkSessionCommand extends Command {
791
827
  const verb = args.verb;
792
828
  const target = args.target;
793
829
  const flagRec = flags as Record<string, unknown>;
794
- const timeoutMs = parsePositiveTimeout(flagRec["timeout-ms"] as string | undefined, "--timeout-ms");
795
830
  await runSdkSessionCli({
796
831
  action: verb,
797
832
  ...(verb === "raw"
@@ -809,13 +844,9 @@ class SdkSessionCommand extends Command {
809
844
  jsonInputStdin: Boolean(flagRec["json-input-stdin"]),
810
845
  confirm: Boolean(flagRec.confirm),
811
846
  idempotencyKey: flagRec["idempotency-key"] as string | undefined,
812
- elevationRequestId: flagRec["elevation-request-id"] as string | undefined,
813
- operationKind: flagRec.kind as "control" | "global" | undefined,
814
847
  cursor: flagRec.cursor as string | undefined,
815
- showEndpointCredential: Boolean(flagRec["show-endpoint-credential"]),
816
- yes: Boolean(flagRec.yes),
817
848
  wait: Boolean(flagRec.wait),
818
- timeoutMs,
849
+ timeoutMs: parsePositiveTimeout(flagRec["timeout-ms"] as string | undefined, "--timeout-ms"),
819
850
  strict: Boolean(flagRec.strict),
820
851
  untilIdle: Boolean(flagRec["until-idle"]),
821
852
  allEvents: Boolean(flagRec["all-events"]),
@@ -832,7 +863,7 @@ class SdkGuidesHelp extends Command {
832
863
  guideId: Args.string({ required: false, description: "Guide id for show" }),
833
864
  };
834
865
  static flags = {
835
- "agent-dir": Flags.string({ description: "SDK broker state directory" }),
866
+ "agent-dir": Flags.string({ description: "SDK state directory for the verified guide cache" }),
836
867
  url: Flags.string({ description: "HTTPS allowlisted manifest URL for refresh" }),
837
868
  "timeout-ms": Flags.string({ description: "Bounded refresh timeout in milliseconds" }),
838
869
  };
@@ -886,13 +917,11 @@ export default class Sdk extends Command {
886
917
  return;
887
918
  }
888
919
  if (action === "session") {
889
- const instance = new SdkSessionCommand(this.argv.slice(1), this.config);
890
- await instance.run();
920
+ await new SdkSessionCommand(this.argv.slice(1), this.config).run();
891
921
  return;
892
922
  }
893
923
  if (action === "guides") {
894
- const instance = new SdkGuidesCommand(this.argv.slice(1), this.config);
895
- await instance.run();
924
+ await new SdkGuidesCommand(this.argv.slice(1), this.config).run();
896
925
  return;
897
926
  }
898
927
  if (action === "serve") {
@@ -917,22 +946,26 @@ export default class Sdk extends Command {
917
946
  try {
918
947
  await broker.start();
919
948
  } catch (error) {
920
- // Surface why this detached broker failed before discovery: the caller
921
- // spawns with stdio ignored, so the durable marker is the only channel.
949
+ // This process spawns detached with stdio ignored (see ensure.ts), so the
950
+ // durable marker is the only channel the caller has to see why start()
951
+ // failed instead of a bare exit code (#3963).
922
952
  await writeBrokerStartupFailureMarker(agentDir, {
923
953
  reason: error instanceof Error ? error.message : String(error),
924
954
  exitCode: 1,
925
955
  signal: null,
956
+ pid: process.pid,
926
957
  });
927
958
  throw error;
928
959
  }
929
960
  if (!broker.ownsDiscovery) {
930
961
  // Another broker owns discovery; this process exits cleanly (code 0) as
931
- // the race loser. Record why so the caller can diagnose a missing winner.
962
+ // the race loser. Record why so a caller polling for a winner that never
963
+ // appears can diagnose the loss instead of seeing only a bare exit 0.
932
964
  await writeBrokerStartupFailureMarker(agentDir, {
933
965
  reason: "Another broker owns the lock/discovery; this broker exited as the race loser.",
934
966
  exitCode: 0,
935
967
  signal: null,
968
+ pid: process.pid,
936
969
  });
937
970
  return;
938
971
  }
@@ -12,6 +12,7 @@ const COMPONENTS: SetupComponent[] = [
12
12
  "defaults",
13
13
  "hermes",
14
14
  "hooks",
15
+ "paseo",
15
16
  "provider",
16
17
  "python",
17
18
  "stt",
@@ -59,6 +60,8 @@ export default class Setup extends Command {
59
60
  "api-key-env": Flags.string({ description: "Read provider API key from this environment variable" }),
60
61
  model: Flags.string({ description: "Model id to add (repeat or comma-separate)", multiple: true }),
61
62
  "models-path": Flags.string({ description: "Override models config path" }),
63
+ remove: Flags.boolean({ description: "Roll back the Paseo registration GJC created" }),
64
+ mpreset: Flags.string({ description: "Register an additional gjc-<preset> Paseo provider" }),
62
65
  yes: Flags.boolean({ char: "y", description: "Import discovered credentials without an interactive prompt" }),
63
66
  "dry-run": Flags.boolean({ description: "Preview discovered credentials without importing" }),
64
67
  };
@@ -93,6 +96,8 @@ export default class Setup extends Command {
93
96
  gjcCommand: flags["gjc-command"],
94
97
  target: flags.target,
95
98
  profileDir: flags["profile-dir"],
99
+ remove: flags.remove,
100
+ mpreset: flags.mpreset,
96
101
  yes: flags.yes,
97
102
  dryRun: flags["dry-run"],
98
103
  },
@@ -1,13 +1,13 @@
1
1
  /**
2
- * Inspect bundled workflow skills.
2
+ * Inspect bundled workflow skills and filesystem-discovered custom skills.
3
3
  */
4
4
  import { Args, Command, Flags, renderCommandHelp } from "@gajae-code/utils/cli";
5
5
  import { runSkillsCommand, type SkillsAction, type SkillsCommandArgs } from "../cli/skills-cli";
6
6
 
7
- const ACTIONS: SkillsAction[] = ["list", "read"];
7
+ const ACTIONS: SkillsAction[] = ["list", "read", "discover"];
8
8
 
9
9
  export default class Skills extends Command {
10
- static description = "Inspect bundled GJC workflow skills";
10
+ static description = "Inspect bundled GJC workflow skills and discover custom filesystem skills";
11
11
 
12
12
  static args = {
13
13
  action: Args.string({
@@ -23,12 +23,19 @@ export default class Skills extends Command {
23
23
 
24
24
  static flags = {
25
25
  json: Flags.boolean({ description: "Output JSON" }),
26
+ source: Flags.string({
27
+ description: "Scope for discover: all, project, or user",
28
+ options: ["all", "project", "user"],
29
+ default: "all",
30
+ }),
26
31
  };
27
32
 
28
33
  static examples = [
29
34
  "# List bundled workflow skills\n gjc skills list",
30
35
  "# Read an embedded workflow skill without requiring .gjc files\n gjc skills read ultragoal",
31
36
  "# Machine-readable embedded skill content\n gjc skills read ralplan --json",
37
+ "# Show filesystem-discovered skills (project and user) with diagnostics\n gjc skills discover",
38
+ "# Show only project-scope skills (project .gjc/skills locations)\n gjc skills discover --source project --json",
32
39
  ];
33
40
 
34
41
  async run(): Promise<void> {
@@ -41,7 +48,10 @@ export default class Skills extends Command {
41
48
  const cmd: SkillsCommandArgs = {
42
49
  action: args.action as SkillsAction,
43
50
  name: args.name,
44
- flags: { json: flags.json },
51
+ flags: {
52
+ json: flags.json,
53
+ source: (flags.source as "all" | "project" | "user" | undefined) ?? "all",
54
+ },
45
55
  };
46
56
  await runSkillsCommand(cmd);
47
57
  }
@@ -1,4 +1,5 @@
1
- import { Command } from "@gajae-code/utils/cli";
1
+ import { Command, renderCommandHelp } from "@gajae-code/utils/cli";
2
+ import { ensureWorkflowSettingsMigrated } from "../config/settings";
2
3
  import {
3
4
  GJC_SESSION_FILE_ENV,
4
5
  GJC_SESSION_ID_ENV,
@@ -16,6 +17,14 @@ export default class Ultragoal extends Command {
16
17
  static delegateHelp = true;
17
18
 
18
19
  async run(): Promise<void> {
20
+ // A read-only help request must not perform the workflow-settings
21
+ // migration (which can create/drain agent.db, write config.yml, and
22
+ // retire legacy settings.json): render help before the trigger.
23
+ if (this.argv.includes("--help") || this.argv.includes("-h")) {
24
+ renderCommandHelp("gjc", "ultragoal", Ultragoal);
25
+ return;
26
+ }
27
+ await ensureWorkflowSettingsMigrated(process.cwd());
19
28
  const isReviewStart = this.argv.includes("review") && this.argv.includes("review-start");
20
29
  const shouldActivateGoalMode = isUltragoalCreateGoalsInvocation(this.argv);
21
30
  const result = await runNativeUltragoalCommand(this.argv);
@@ -2,10 +2,15 @@
2
2
  * Check for and install updates.
3
3
  */
4
4
  import { getProjectDir } from "@gajae-code/utils";
5
- import { Command, Flags } from "@gajae-code/utils/cli";
6
- import { runUpdateCommand } from "../cli/update-cli";
5
+ import { Args, Command, Flags } from "@gajae-code/utils/cli";
6
+ import { runManagedNotifyRecovery, runUpdateCommand } from "../cli/update-cli";
7
7
  import { Settings } from "../config/settings";
8
- import { isUpdateChannel, UPDATE_CHANNELS, type UpdateChannel } from "../config/update-channel";
8
+ import {
9
+ isUpdateChannel,
10
+ resolveMachineLocalUpdateChannel,
11
+ UPDATE_CHANNELS,
12
+ type UpdateChannel,
13
+ } from "../config/update-channel";
9
14
  import { initTheme } from "../modes/theme/theme";
10
15
 
11
16
  export default class Update extends Command {
@@ -19,8 +24,20 @@ export default class Update extends Command {
19
24
  }),
20
25
  };
21
26
 
27
+ static args = {
28
+ action: Args.string({
29
+ description: "Internal post-update recovery action (update-recovery)",
30
+ required: false,
31
+ options: ["update-recovery"],
32
+ }),
33
+ };
34
+
22
35
  async run(): Promise<void> {
23
- const { flags } = await this.parse(Update);
36
+ const { args, flags } = await this.parse(Update);
37
+ if (args.action === "update-recovery") {
38
+ await runManagedNotifyRecovery({});
39
+ return;
40
+ }
24
41
  let channel: UpdateChannel | undefined;
25
42
  if (flags.channel !== undefined) {
26
43
  if (!isUpdateChannel(flags.channel)) {
@@ -32,17 +49,11 @@ export default class Update extends Command {
32
49
  channel = flags.channel;
33
50
  } else {
34
51
  const settings = await Settings.init({ cwd: getProjectDir() });
35
- const configured = settings.get("startup.updateChannel");
36
- if (isUpdateChannel(configured)) {
37
- channel = configured;
38
- } else {
39
- // A hand-edited invalid value degrades to the schema default instead of
40
- // leaking into output or the registry lookup.
41
- process.stderr.write(
42
- `Ignoring invalid startup.updateChannel "${configured}". Expected one of: ${UPDATE_CHANNELS.join(", ")}; using stable.\n`,
43
- );
44
- channel = "stable";
45
- }
52
+ // Update selection is machine-local: a project `.gjc/config.yml`
53
+ // startup.updateChannel override must never silently pick the
54
+ // global release channel, so read the user/global layer only and
55
+ // fall back to the stable schema default when it is unset.
56
+ channel = resolveMachineLocalUpdateChannel(settings);
46
57
  }
47
58
  await initTheme();
48
59
  await runUpdateCommand({ force: flags.force, check: flags.check, channel });
@@ -0,0 +1,57 @@
1
+ import * as nodeWorkerThreads from "node:worker_threads";
2
+ import type { NativeExactFileIdentity, NativeExactUnlinkResult, NativeNoReplaceResult } from "@gajae-code/natives";
3
+ import { exactReplacePath, linkNoReplacePath, renameNoReplacePath } from "@gajae-code/natives";
4
+
5
+ export type AtomicYamlNativeWorkerRequest =
6
+ | {
7
+ operation: "exact-replace";
8
+ sourcePath: string;
9
+ destinationPath: string;
10
+ expectedSource: NativeExactFileIdentity;
11
+ expectedDestination: NativeExactFileIdentity;
12
+ }
13
+ | {
14
+ operation: "no-replace";
15
+ sourcePath: string;
16
+ destinationPath: string;
17
+ }
18
+ | {
19
+ operation: "no-replace-link";
20
+ sourcePath: string;
21
+ destinationPath: string;
22
+ };
23
+
24
+ export type AtomicYamlNativeWorkerResponse =
25
+ | { type: "result"; result: NativeExactUnlinkResult | NativeNoReplaceResult }
26
+ | { type: "error"; name?: string; message: string; stack?: string };
27
+
28
+ const { parentPort } = nodeWorkerThreads;
29
+ if (!parentPort) throw new Error("atomic YAML native worker: missing parentPort");
30
+
31
+ const port = parentPort;
32
+ port.once("message", (request: AtomicYamlNativeWorkerRequest) => {
33
+ try {
34
+ const result =
35
+ request.operation === "exact-replace"
36
+ ? exactReplacePath(
37
+ request.sourcePath,
38
+ request.destinationPath,
39
+ request.expectedSource,
40
+ request.expectedDestination,
41
+ )
42
+ : request.operation === "no-replace-link"
43
+ ? linkNoReplacePath(request.sourcePath, request.destinationPath)
44
+ : renameNoReplacePath(request.sourcePath, request.destinationPath);
45
+ port.postMessage({ type: "result", result } satisfies AtomicYamlNativeWorkerResponse);
46
+ } catch (error) {
47
+ const failure = error instanceof Error ? error : new Error(String(error));
48
+ port.postMessage({
49
+ type: "error",
50
+ name: failure.name,
51
+ message: failure.message,
52
+ stack: failure.stack,
53
+ } satisfies AtomicYamlNativeWorkerResponse);
54
+ } finally {
55
+ port.close();
56
+ }
57
+ });