@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
@@ -1,141 +0,0 @@
1
- import type { LifecycleErrorReason, ResumeCandidate, SessionCreateFrame, SessionLifecycleRequest } from "./index";
2
- /** Durable idempotency state for a single lifecycle request. */
3
- export type LedgerState = "in_progress" | "success" | "failure" | "terminal_uncertain";
4
- /** One persisted idempotency entry, keyed by `chatId:updateId`. */
5
- export interface LedgerEntry {
6
- requestHash: string;
7
- state: LedgerState;
8
- requestId: string;
9
- verb: SessionLifecycleRequest["type"];
10
- intendedSessionId?: string;
11
- startupPromptRef?: string;
12
- createdAt: number;
13
- updatedAt: number;
14
- targetSummary: Record<string, unknown>;
15
- sessionId?: string;
16
- tmuxSession?: string;
17
- sessionStateFile?: string;
18
- endpointUrl?: string;
19
- /** Close effect outcome: whether the tmux process is confirmed gone. */
20
- processGone?: boolean;
21
- reason?: LifecycleErrorReason;
22
- resumeMode?: ResumeEffectResult["mode"];
23
- }
24
- /** The full on-disk ledger document. */
25
- export interface LedgerDoc {
26
- version: 1;
27
- entries: Record<string, LedgerEntry>;
28
- }
29
- /** Persistence boundary: atomic + fsynced read/write of the ledger document. */
30
- export interface LedgerStore {
31
- read(): Promise<LedgerDoc>;
32
- /** Write atomically (temp + fsync + rename) under a per-ledger lock. */
33
- write(doc: LedgerDoc): Promise<void>;
34
- }
35
- /** Redacted audit-v2 event. */
36
- export interface AuditEvent {
37
- schemaVersion: 2;
38
- ts: string;
39
- event: "accepted" | "rejected" | "duplicate_reack" | "rate_limited" | "spawn_started" | "recovered_in_progress" | "success" | "failure" | "terminal_uncertain";
40
- chatRef: string;
41
- updateId: number;
42
- requestRef: string;
43
- verb: SessionLifecycleRequest["type"];
44
- targetKind: CanonicalTargetKind;
45
- targetRef: string;
46
- reason?: LifecycleErrorReason;
47
- }
48
- export interface CreateEffectResult {
49
- sessionId: string;
50
- tmuxSession: string;
51
- sessionStateFile?: string;
52
- endpointUrl: string;
53
- topicThreadId: string;
54
- }
55
- export interface ResumeEffectResult extends CreateEffectResult {
56
- mode: "reattached" | "cold_restarted";
57
- }
58
- /** Injected effects + policy. Pure orchestration calls into these. */
59
- export interface OrchestratorDeps {
60
- /** The single paired chat id. Anything else is rejected before parsing. */
61
- pairedChatId: string;
62
- /** In-memory, derived 32-byte audit-v2 HMAC key. */
63
- auditRedactionKey: Uint8Array;
64
- now: () => number;
65
- store: LedgerStore;
66
- audit: (event: AuditEvent) => Promise<void> | void;
67
- /** Resolves the returned tmux provider once per request for psmux preflight. */
68
- isPsmuxProvider: () => boolean;
69
- /** Per-chat create rate limiter: returns true when allowed. */
70
- allowCreate: (chatId: string, nowMs: number) => boolean;
71
- /** Persist the once-consumed 0600 startup-prompt file after durably recording its ref. */
72
- writeStartupPrompt: (requestId: string, prompt: string | undefined, persistRef: (ref: string) => Promise<void>) => Promise<string | undefined>;
73
- /** Spawn a session for a create/cold-restart. */
74
- spawnCreate: (frame: SessionCreateFrame, ids: {
75
- lifecycleRequestId: string;
76
- intendedSessionId: string;
77
- startupPromptRef?: string;
78
- }) => Promise<CreateEffectResult>;
79
- closeSession: (target: {
80
- sessionId: string;
81
- tmuxSession?: string;
82
- sessionStateFile?: string;
83
- }) => Promise<{
84
- processGone: boolean;
85
- }>;
86
- resumeSession: (target: {
87
- sessionIdOrPrefix: string;
88
- path?: string;
89
- }) => Promise<ResumeEffectResult | {
90
- ambiguous: ResumeCandidate[];
91
- } | {
92
- notFound: true;
93
- }>;
94
- }
95
- export type CanonicalTargetKind = "existing_path" | "worktree" | "plain_dir" | "session_close" | "session_resume";
96
- export declare function canonicalTarget(frame: SessionLifecycleRequest): string;
97
- export declare function canonicalRequest(frame: SessionLifecycleRequest): string;
98
- export declare function requestHash(frame: SessionLifecycleRequest): string;
99
- export declare function auditRedactionRef(key: Uint8Array, domain: string, value: string): string;
100
- export declare function summarizeTarget(frame: SessionLifecycleRequest): Record<string, unknown>;
101
- export declare function ledgerKey(chatId: string, updateId: number): string;
102
- /** How a freshly-arrived request relates to the durable ledger. */
103
- export type DuplicateClass = {
104
- kind: "new";
105
- } | {
106
- kind: "reack_success";
107
- entry: LedgerEntry;
108
- } | {
109
- kind: "reack_failure";
110
- entry: LedgerEntry;
111
- } | {
112
- kind: "in_progress";
113
- entry: LedgerEntry;
114
- } | {
115
- kind: "terminal_uncertain";
116
- entry: LedgerEntry;
117
- } | {
118
- kind: "conflict";
119
- entry: LedgerEntry;
120
- };
121
- /** Classify a request against an existing ledger entry (pure). */
122
- export declare function classifyDuplicate(existing: LedgerEntry | undefined, hash: string): DuplicateClass;
123
- /** The structured outcome the daemon translates into a wire response frame. */
124
- export type LifecycleOutcome = {
125
- status: "ok";
126
- entry: LedgerEntry;
127
- mode?: "reattached" | "cold_restarted";
128
- } | {
129
- status: "error";
130
- reason: LifecycleErrorReason;
131
- message: string;
132
- candidates?: ResumeCandidate[];
133
- } | {
134
- status: "pending";
135
- entry: LedgerEntry;
136
- };
137
- /**
138
- * Handle one authenticated lifecycle request. Enforces paired-chat gating,
139
- * idempotency, and rate limiting BEFORE any side effect, then dispatches.
140
- */
141
- export declare function handleLifecycleRequest(frame: SessionLifecycleRequest, deps: OrchestratorDeps): Promise<LifecycleOutcome>;
@@ -1,31 +0,0 @@
1
- #!/usr/bin/env bun
2
- /**
3
- * Reference CLI for the Gajae-Code SDK Telegram client.
4
- *
5
- * Bridges a running GJC session's notification endpoint to a Telegram bot so you
6
- * can answer asks / see idle pings from your phone — no RPC mode required. This
7
- * is an EXAMPLE/template (the SDK contract is in `docs/sdk.md`);
8
- * Discord/Slack clients are written the same way.
9
- *
10
- * Usage:
11
- * bun run packages/coding-agent/src/sdk/bus/telegram-cli.ts \
12
- * --bot-token <token> [--chat-id <id>] [--endpoint-file <path> | --session-id <id>] [--repo <dir>]
13
- *
14
- * Env fallbacks: GJC_TG_BOT_TOKEN, GJC_TG_CHAT_ID.
15
- * If --chat-id is omitted it is auto-resolved from getUpdates (message the bot once).
16
- * If neither --endpoint-file nor --session-id is given, the newest endpoint file
17
- * under <repo>/.gjc/state/sdk/ is used.
18
- */
19
- import { type TelegramNotificationSound } from "./telegram-reference";
20
- interface CliArgs {
21
- botToken?: string;
22
- chatId?: string;
23
- endpointFile?: string;
24
- sessionId?: string;
25
- repo: string;
26
- apiBase?: string;
27
- sound: TelegramNotificationSound;
28
- force: boolean;
29
- }
30
- export declare function parseArgs(argv: string[]): CliArgs;
31
- export {};
@@ -1,20 +0,0 @@
1
- /**
2
- * Exact elevation-gated allowlist, fully qualified and enumerative.
3
- *
4
- * The elevation allowlist is the exact set of registry operations below (the
5
- * raw destructive lifecycle and workflow-approval operations). It is declared
6
- * ONCE here as a `Set<string>` of `"kind:sdkId"` keys and mechanically pinned
7
- * against `operation-registry.ts` by the allowlist unit test: every key must
8
- * resolve via `findOperation(kind, sdkId)` and no elevatable operation may be
9
- * silently missing. Any operation NOT in this set is rejected at issue with
10
- * `elevation_not_allowlisted` before any ledger reservation. There is no
11
- * generalized policy engine: this is the deterministic predicate.
12
- */
13
- export declare const ELEVATION_ALLOWLIST_KEYS: readonly ["global:session.close", "global:session.delete", "control:session.delete", "control:session.close", "control:context.clear", "control:session.cwd.move", "control:compaction.run", "control:bash.execute", "control:bash.background", "control:queue.message.remove", "control:queue.message.update", "control:retry.abort", "control:retry.now", "control:bash.abort", "control:retry.auto.set", "control:compaction.auto.set", "control:extension.set_enabled", "control:queue.interrupt_mode.set", "control:queue.follow_up_mode.set", "control:queue.steering_mode.set", "control:tools.active.set", "control:permission_mode.set", "control:service_tier.set", "control:workflow.gate_answer", "control:workflow.plan_approve"];
14
- /**
15
- * Whether `(kind, sdkId)` is the fully qualified identity of an allowlisted
16
- * elevation-gated operation. The pair is validated against the operation
17
- * registry before any elevation is admitted, so a key can never name an
18
- * operation that does not exist.
19
- */
20
- export declare function isElevationAllowlisted(kind: unknown, sdkId: unknown): boolean;
@@ -1,93 +0,0 @@
1
- import { SDK_STATE_VERSION } from "../broker/state-version";
2
- import { classifyProcessIncarnationLiveness } from "./owner";
3
- /**
4
- * Durable elevation audit trail.
5
- *
6
- * Append-only JSONL under the same elevation-local lock as the grant ledger,
7
- * mode 0600. Every state transition of a grant — issue, operator answer,
8
- * expiry, misuse, duplicate answer, claim, and dispatch outcome — is
9
- * recorded with the exact identity evidence the transition consumed, so an
10
- * auditor can reproduce why a grant reached its terminal state without
11
- * trusting in-memory state.
12
- *
13
- * The audit stream is an evidence trail, never an authority: audit rows are
14
- * append-only, are never re-read to drive decisions, and a corrupted row is
15
- * quarantined (like ledger rows) instead of failing the ledger.
16
- */
17
- export type ElevationAuditEvent = {
18
- kind: "issued";
19
- } | {
20
- kind: "answered";
21
- outcome: "granted" | "denied" | "expired" | "misused" | "target_unavailable" | "duplicate_answer";
22
- } | {
23
- kind: "expired";
24
- } | {
25
- kind: "misused";
26
- } | {
27
- kind: "duplicate_answer";
28
- } | {
29
- kind: "claimed";
30
- claim: {
31
- ownerId: string;
32
- epoch: number;
33
- pid: number;
34
- incarnation: string;
35
- };
36
- } | {
37
- kind: "dispatched";
38
- dispatch: {
39
- ownerId: string;
40
- epoch: number;
41
- dispatchedAt: number;
42
- };
43
- outcome: {
44
- status: "ok" | "failed";
45
- code?: string;
46
- message?: string;
47
- dispatchedAt: number;
48
- };
49
- } | {
50
- kind: "consumed";
51
- message: string;
52
- } | {
53
- kind: "unavailable";
54
- reason: string;
55
- };
56
- export interface ElevationAuditEntry {
57
- version: typeof SDK_STATE_VERSION;
58
- ts: number;
59
- elevationRequestId: string;
60
- issueIndex: number;
61
- event: ElevationAuditEvent;
62
- }
63
- export type ElevationAuditEventName = ElevationAuditEvent["kind"];
64
- export declare function isElevationAuditEntry(value: unknown): value is ElevationAuditEntry;
65
- export interface ElevationAuditOptions {
66
- /** Injectable clock. */
67
- now?: () => number;
68
- /**
69
- * Injectable tri-state process-incarnation liveness classifier, defaulting
70
- * to `classifyProcessIncarnationLiveness`. The audit trail records the
71
- * liveness verdict behind `consumed`/`unavailable` settlements so the
72
- * crash-truth settlement is reproducible; the verdict never drives the
73
- * settlement itself (that lives in the ledger).
74
- */
75
- classifyLiveness?: typeof classifyProcessIncarnationLiveness;
76
- }
77
- export declare class ElevationAudit {
78
- #private;
79
- constructor(agentDir: string, options?: ElevationAuditOptions);
80
- get warnings(): readonly string[];
81
- /**
82
- * Appends one audit row for an elevation grant transition. Callers MUST
83
- * hold the same elevation-local lock that guards the grant ledger; the
84
- * audit row and the grant row therefore commit together.
85
- */
86
- append(entry: Omit<ElevationAuditEntry, "version">): Promise<void>;
87
- /**
88
- * Opens the audit stream: creates the 0600 directory/file if absent and
89
- * quarantines any corrupt tail so subsequent appends are always readable.
90
- * Called under the same lock as `ElevationLedger.open()`.
91
- */
92
- open(): Promise<this>;
93
- }
@@ -1,3 +0,0 @@
1
- export declare function signElevationCapability(authorityToken: string, requestId: string, sdkId: string, input: Record<string, unknown>): string;
2
- export declare function verifyElevationCapability(authorityToken: string, capability: string, sdkId: string, input: Record<string, unknown>): boolean;
3
- export declare function elevationAuthorityPath(stateRoot: string, sessionId: string): string;
@@ -1,72 +0,0 @@
1
- /**
2
- * Fully qualified elevation request digest.
3
- *
4
- * An elevation grant binds the exact operation the operator approved. The
5
- * digest covers the complete `{kind, sdkId, input}` triple so substituting a
6
- * different operation or different input bytes changes the digest and the
7
- * gate presentation fails closed (`misused`). The top-level
8
- * `elevationRequestId` correlation field is deliberately excluded: it is the
9
- * durable correlation ID assigned to a request, not part of the approved
10
- * content, and the same content re-issued under a new ID must produce the
11
- * same digest.
12
- *
13
- * Only allowlisted operations can be elevated; anything else is refused so a
14
- * caller cannot mint a grant for an operation outside the elevation policy.
15
- */
16
- export declare const ELEVATION_OPERATION_KINDS: readonly ["control", "query", "global"];
17
- export type ElevationOperationKind = (typeof ELEVATION_OPERATION_KINDS)[number];
18
- export interface ElevationOperation {
19
- kind: ElevationOperationKind;
20
- sdkId: string;
21
- }
22
- /**
23
- * Operations that require an elevation grant. Default SDK scope
24
- * (list/query/send/tail) stays grant-free; destructive lifecycle operations
25
- * and workflow approval operations are elevatable and therefore gated.
26
- */
27
- export declare const ELEVATION_ALLOWLIST: readonly {
28
- kind: ElevationOperationKind;
29
- sdkId: string;
30
- }[];
31
- export declare function isElevatableOperation(kind: unknown, sdkId: unknown): boolean;
32
- /**
33
- * Whether the `(kind, sdkId)` pair names a registry operation that the
34
- * elevation allowlist recognizes. Used by the ledger row validator so a
35
- * persisted row can never bind an operation outside the allowlist.
36
- */
37
- export declare function isKnownElevationOperation(kind: unknown, sdkId: unknown): boolean;
38
- /**
39
- * Canonical JSON encoding for elevation digest leaves.
40
- *
41
- * Intentionally byte-compatible with the broker's identity canonicalization
42
- * (`canonicalJson` in `sdk/broker/broker.ts`): object keys sorted, compact
43
- * separators, `undefined` fields preserved verbatim, arrays joined without
44
- * separators. The broker computes the request digest at issue time and the
45
- * ledger recomputes/compares the same encoding, so digest verification is
46
- * stable across issue, gate presentation, and answer.
47
- */
48
- export declare function canonicalElevationJson(value: unknown): string;
49
- export type ElevationDigestResult = {
50
- ok: true;
51
- digest: string;
52
- } | {
53
- ok: false;
54
- error: {
55
- code: string;
56
- message: string;
57
- };
58
- };
59
- /**
60
- * Computes the fully qualified digest for an elevation request.
61
- *
62
- * `input` is digested exactly as supplied except that a top-level
63
- * `elevationRequestId` field is removed first (it is the correlation ID, not
64
- * approved content). Operations outside `ELEVATION_ALLOWLIST` are refused
65
- * with `elevation_not_required` so the broker never mints a grant for an
66
- * operation that does not need one.
67
- */
68
- export declare function elevationRequestDigest(request: {
69
- kind: unknown;
70
- sdkId: unknown;
71
- input: unknown;
72
- }): ElevationDigestResult;
@@ -1,85 +0,0 @@
1
- export declare const ELEVATION_RECEIPT_VERSION = 1;
2
- /**
3
- * Identity of the broker tenure that claims a grant and dispatches it.
4
- *
5
- * `ownerId` is the broker instance owner id and `epoch` increments per broker
6
- * start, so a restart (even of the same object) yields a new tenure. `pid` and
7
- * `incarnation` are retained for truthful tri-state liveness replay.
8
- */
9
- export interface ElevationClaimIdentity {
10
- ownerId: string;
11
- epoch: number;
12
- pid: number;
13
- incarnation: string;
14
- }
15
- export type ElevationReceiptState = "claimed" | "dispatched" | "uncertain";
16
- /**
17
- * Durable dispatch outcome. `unknown` is the crash truth: the grant was
18
- * consumed by a claim but the dispatch outcome is not knowable, so retry
19
- * requires a new grant.
20
- */
21
- export type ElevationDispatchOutcome = {
22
- status: "ok";
23
- dispatchedAt: number;
24
- } | {
25
- status: "failed";
26
- code: string;
27
- message: string;
28
- dispatchedAt: number;
29
- } | {
30
- status: "unknown";
31
- message: string;
32
- dispatchedAt: number;
33
- };
34
- /**
35
- * Owner/epoch-bound dispatch receipt.
36
- *
37
- * State machine: `claimed` (grant spent, dispatch in flight, bound to the
38
- * claiming broker tenure) -> `dispatched` (terminal, outcome recorded) or
39
- * `uncertain` (terminal truth: the claim's outcome is unknowable after its
40
- * broker tenure died). Replay never fabricates an outcome: a receipt left in
41
- * `claimed` by a dead tenure is truthfully terminalized to `uncertain`.
42
- */
43
- export interface ElevationDispatchReceipt {
44
- version: typeof ELEVATION_RECEIPT_VERSION;
45
- elevationRequestId: string;
46
- issueIndex: number;
47
- state: ElevationReceiptState;
48
- claim: ElevationClaimIdentity & {
49
- claimedAt: number;
50
- };
51
- dispatch?: {
52
- ownerId: string;
53
- epoch: number;
54
- dispatchedAt: number;
55
- };
56
- outcome?: ElevationDispatchOutcome;
57
- ts: number;
58
- }
59
- export declare function isElevationRequestId(value: unknown): value is string;
60
- export declare function isElevationClaimIdentity(value: unknown): value is ElevationClaimIdentity;
61
- export declare function isElevationDispatchOutcome(value: unknown): value is ElevationDispatchOutcome;
62
- export declare function isElevationDispatchReceipt(value: unknown): value is ElevationDispatchReceipt;
63
- export declare function claimReceipt(requestId: string, issueIndex: number, claim: ElevationClaimIdentity, claimedAt: number): ElevationDispatchReceipt;
64
- export declare function dispatchReceipt(receipt: ElevationDispatchReceipt, dispatch: {
65
- ownerId: string;
66
- epoch: number;
67
- dispatchedAt: number;
68
- }, outcome: ElevationDispatchOutcome): ElevationDispatchReceipt;
69
- export declare function uncertainReceipt(receipt: ElevationDispatchReceipt, at: number): ElevationDispatchReceipt;
70
- export declare function receiptClaimMatches(receipt: ElevationDispatchReceipt, identity: ElevationClaimIdentity): boolean;
71
- /**
72
- * Who may answer an elevation gate.
73
- *
74
- * Internal operator-only: the answer boundary is the broker's internal
75
- * operator attestation (`local_operator`), reached only through broker-owned
76
- * surfaces. There is no public `elevation.answer` operation and no
77
- * requester-correlation check: the answerer is structurally an operator
78
- * attestation, so requester self-approval is impossible by construction.
79
- */
80
- export type ElevationAnswerAuthority = {
81
- source: "local_operator";
82
- attestedBy: string;
83
- };
84
- /** Structural guard for the internal operator attestation. */
85
- export declare function isElevationAnswerAuthority(value: unknown): value is ElevationAnswerAuthority;
@@ -1,163 +0,0 @@
1
- import { SDK_STATE_VERSION } from "../broker/state-version";
2
- import { type ElevationOperation } from "./digest";
3
- import { type ElevationAnswerAuthority, type ElevationClaimIdentity, type ElevationDispatchOutcome, type ElevationDispatchReceipt } from "./dispatch-receipt";
4
- import { type BrokerOwnerPrincipal, classifyProcessIncarnationLiveness } from "./owner";
5
- /**
6
- * Broker-owned elevation grant ledger.
7
- *
8
- * Durable state machine (per elevation request):
9
- * `requested -> granted -> claimed -> dispatched(outcome)`; terminal
10
- * `denied`/`expired`/`misused`/`target_unavailable`; crash truth
11
- * `consumed` (claimed but outcome unknown). Grants are single-use: the claim
12
- * CAS consumes the grant before dispatch, and a crash between consume and
13
- * dispatch is replayed truthfully as `consumed` with outcome `unknown`
14
- * (retry requires a new grant — fail closed).
15
- *
16
- * All mutations and reads serialize on one elevation-local
17
- * `withFileLock` transaction covering grants (`grants.jsonl`), dispatch
18
- * receipts (`receipts.jsonl`), the issue index (`index.json`), and the
19
- * audit trail (`audit.jsonl`), so a claim, its receipt, and the issue
20
- * sequence commit together.
21
- *
22
- * The answer boundary is internal operator-only: there is no public
23
- * `elevation.answer` operation; answers are admitted only from the internal
24
- * operator attestation, so requester self-approval is impossible by
25
- * construction.
26
- */
27
- export type ElevationGrantState = "requested" | "granted" | "claimed" | "dispatched" | "consumed" | "denied" | "expired" | "misused" | "target_unavailable";
28
- export interface ElevationSessionIdentity {
29
- sessionId: string;
30
- /** Exact endpoint state root bound at issue time; never the repo root. */
31
- endpointStateRoot: string;
32
- endpointGeneration: number;
33
- endpointIncarnation: string;
34
- }
35
- /** Audit-only requester binding; never an identity claim. */
36
- export interface ElevationRequester {
37
- source: "broker_connection";
38
- connectionId: string;
39
- }
40
- export interface ElevationGrantRecord {
41
- version: typeof SDK_STATE_VERSION;
42
- /** Durable correlation ID; UUID, path-safe. */
43
- elevationRequestId: string;
44
- /** Monotonic path-safe issue sequence, allocated under the ledger lock. */
45
- issueIndex: number;
46
- state: ElevationGrantState;
47
- operation: ElevationOperation;
48
- requestDigest: string;
49
- sessionIdentity: ElevationSessionIdentity;
50
- principal: BrokerOwnerPrincipal;
51
- requester: ElevationRequester;
52
- requestedAt: number;
53
- expiresAt: number;
54
- outcome?: ElevationDispatchOutcome;
55
- ts: number;
56
- }
57
- export type ElevationErrorCode = "not_found" | "invalid_input" | "idempotency_conflict" | "grant_spent" | "elevation_claim_in_progress" | "elevation_required" | "elevation_unavailable" | "elevation_not_required" | "endpoint_stale" | "target_unavailable" | "expired" | "misused" | "duplicate_answer" | "terminal_uncertain" | (string & {});
58
- export type ElevationResult<T> = {
59
- ok: true;
60
- value: T;
61
- } | {
62
- ok: false;
63
- error: {
64
- code: ElevationErrorCode;
65
- message: string;
66
- };
67
- };
68
- export interface ElevationIssueParams {
69
- /** Optional caller-supplied correlation ID for idempotent retry; the broker generates a UUID otherwise. */
70
- elevationRequestId?: string;
71
- operation: ElevationOperation;
72
- input: Record<string, unknown>;
73
- sessionIdentity: ElevationSessionIdentity;
74
- principal: BrokerOwnerPrincipal;
75
- requester: ElevationRequester;
76
- expiresInMs?: number;
77
- }
78
- export interface ElevationIssueValue {
79
- replay: boolean;
80
- elevationRequestId: string;
81
- issueIndex: number;
82
- requestDigest: string;
83
- state: ElevationGrantState;
84
- requestedAt: number;
85
- expiresAt: number;
86
- grant: ElevationGrantRecord;
87
- }
88
- export interface ElevationAnswerParams {
89
- elevationRequestId: string;
90
- answer: "approve" | "deny";
91
- /** Digest the answering surface presented from the gate payload. */
92
- presentedDigest: string;
93
- /** Broker-owner principal attesting the answer authority. */
94
- principal: BrokerOwnerPrincipal;
95
- answerer: ElevationAnswerAuthority;
96
- /** Current broker-resolved target identity; undefined means the session is unreachable. */
97
- currentSessionIdentity?: ElevationSessionIdentity;
98
- }
99
- export type ElevationAnswerOutcome = "granted" | "denied" | "expired" | "misused" | "target_unavailable" | "duplicate_answer";
100
- export interface ElevationAnswerValue {
101
- outcome: ElevationAnswerOutcome;
102
- grant: ElevationGrantRecord;
103
- }
104
- export interface ElevationClaimParams {
105
- elevationRequestId: string;
106
- claimIdentity: ElevationClaimIdentity;
107
- /** Current broker-resolved target identity; undefined means the session is unreachable. */
108
- currentSessionIdentity?: ElevationSessionIdentity;
109
- }
110
- export interface ElevationClaimValue {
111
- grant: ElevationGrantRecord;
112
- receipt: ElevationDispatchReceipt;
113
- }
114
- export interface ElevationDispatchParams {
115
- elevationRequestId: string;
116
- dispatchIdentity: ElevationClaimIdentity;
117
- outcome: ElevationDispatchOutcome;
118
- }
119
- export interface ElevationDispatchValue {
120
- grant: ElevationGrantRecord;
121
- receipt: ElevationDispatchReceipt;
122
- }
123
- export interface ElevationReadValue {
124
- grant: ElevationGrantRecord;
125
- receipt?: ElevationDispatchReceipt;
126
- }
127
- export interface ElevationListValue {
128
- grants: ElevationReadValue[];
129
- }
130
- export interface ElevationLedgerOptions {
131
- /** Defaults to the GJC_SDK_ELEVATION_ENABLED environment flag. */
132
- enabled?: boolean;
133
- /** Request lifetime before the grant expires. */
134
- ttlMs?: number;
135
- /** Injectable clock. */
136
- now?: () => number;
137
- /**
138
- * Injectable tri-state process-incarnation liveness classifier (defaults to
139
- * `classifyProcessIncarnationLiveness`). Test seam for crash-state replay:
140
- * "unknown" must always fail closed as `elevation_claim_in_progress`.
141
- */
142
- classifyLiveness?: typeof classifyProcessIncarnationLiveness;
143
- }
144
- declare function isElevationOperation(value: unknown): value is ElevationOperation;
145
- declare function isElevationGrantRecord(value: unknown): value is ElevationGrantRecord;
146
- export declare class ElevationLedger {
147
- #private;
148
- constructor(agentDir: string, options?: ElevationLedgerOptions);
149
- get warnings(): readonly string[];
150
- open(): Promise<this>;
151
- assertSupportedStateVersions(): Promise<void>;
152
- issue(params: ElevationIssueParams): Promise<ElevationResult<ElevationIssueValue>>;
153
- answer(params: ElevationAnswerParams): Promise<ElevationResult<ElevationAnswerValue>>;
154
- claim(params: ElevationClaimParams): Promise<ElevationResult<ElevationClaimValue>>;
155
- dispatch(params: ElevationDispatchParams): Promise<ElevationResult<ElevationDispatchValue>>;
156
- /** Pure read without reconciliation writes; used before actions. */
157
- get(elevationRequestId: string): Promise<ElevationResult<ElevationReadValue>>;
158
- /** Truthful read: reconciles expiry and crash-state claims before returning. */
159
- resolve(elevationRequestId: string, claimIdentity: ElevationClaimIdentity): Promise<ElevationResult<ElevationReadValue>>;
160
- /** Truthful listing: reconciles every grant before returning. */
161
- list(claimIdentity: ElevationClaimIdentity): Promise<ElevationResult<ElevationListValue>>;
162
- }
163
- export { isElevationGrantRecord, isElevationOperation };
@@ -1,48 +0,0 @@
1
- /**
2
- * Broker-owner principal.
3
- *
4
- * The elevation authority is the broker itself under the existing loopback
5
- * trust model: one local OS-user/broker authority derived entirely from
6
- * broker-owned state, never from caller input. `agentDirUid` is the uid that
7
- * owns the agent directory, `brokerPid`/`brokerIncarnation` identify the
8
- * broker process tenure so a restarted broker cannot attest the same
9
- * authority.
10
- */
11
- export interface BrokerOwnerPrincipal {
12
- kind: "broker_owner";
13
- owner: {
14
- agentDirUid: number;
15
- brokerPid: number;
16
- brokerIncarnation: string;
17
- };
18
- }
19
- export declare function isBrokerOwnerPrincipal(value: unknown): value is BrokerOwnerPrincipal;
20
- export declare function sameBrokerOwnerPrincipal(left: BrokerOwnerPrincipal, right: BrokerOwnerPrincipal): boolean;
21
- /**
22
- * Reads the broker-owner principal from broker-owned state. Throws when the
23
- * broker cannot attest a canonical process incarnation (the broker refuses to
24
- * start in that case anyway), so callers treat a throw as "authority
25
- * unavailable".
26
- */
27
- export declare function readBrokerOwnerPrincipal(agentDir: string, brokerPid: number, brokerIncarnation: string): Promise<BrokerOwnerPrincipal>;
28
- export type ProcessIncarnationLiveness = "alive" | "dead" | "unknown";
29
- /**
30
- * Tri-state liveness of a process incarnation.
31
- *
32
- * - `alive`: the pid is running and its current incarnation matches the
33
- * stored one, so the original process tenure is still live.
34
- * - `dead`: ESRCH (the pid is provably gone — independent of any persisted
35
- * incarnation text), or the pid is running under a *different* canonical
36
- * incarnation (PID reuse), which provably means the original process
37
- * ended.
38
- * - `unknown`: the pid is malformed, the persisted or observed incarnation
39
- * is malformed/undefined, or the current incarnation cannot be read.
40
- * Unknown never implies death: elevation claims must fail closed with
41
- * `elevation_claim_in_progress` instead of terminalizing state on
42
- * unprovable liveness.
43
- *
44
- * ESRCH is independent positive death proof: a pid that provably does not
45
- * exist is dead regardless of the persisted incarnation text, so a corrupt
46
- * persisted incarnation can never stall recovery forever.
47
- */
48
- export declare function classifyProcessIncarnationLiveness(pid: unknown, incarnation: unknown): ProcessIncarnationLiveness;
@@ -1 +0,0 @@
1
- export {};
@@ -1 +0,0 @@
1
- export {};
@@ -1 +0,0 @@
1
- export {};