@gajae-code/coding-agent 0.16.7 → 0.17.1

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 (321) hide show
  1. package/CHANGELOG.md +180 -1
  2. package/dist/types/capability/fs.d.ts +37 -4
  3. package/dist/types/capability/index.d.ts +19 -0
  4. package/dist/types/capability/types.d.ts +9 -0
  5. package/dist/types/cli/doctor/args.d.ts +36 -0
  6. package/dist/types/cli/doctor/checks.d.ts +18 -0
  7. package/dist/types/cli/doctor/config-repairs.d.ts +38 -0
  8. package/dist/types/cli/doctor/context.d.ts +89 -0
  9. package/dist/types/cli/doctor/files.d.ts +27 -0
  10. package/dist/types/cli/doctor/ids.d.ts +20 -0
  11. package/dist/types/cli/doctor/install-repairs.d.ts +94 -0
  12. package/dist/types/cli/doctor/journal.d.ts +43 -0
  13. package/dist/types/cli/doctor/managed-link.d.ts +39 -0
  14. package/dist/types/cli/doctor/native-probe.d.ts +2 -0
  15. package/dist/types/cli/doctor/permission-repairs.d.ts +25 -0
  16. package/dist/types/cli/doctor/plugin-quarantine.d.ts +77 -0
  17. package/dist/types/cli/doctor/plugin-restore.d.ts +40 -0
  18. package/dist/types/cli/doctor/plugin-targets.d.ts +11 -0
  19. package/dist/types/cli/doctor/probe-client.d.ts +9 -0
  20. package/dist/types/cli/doctor/probe-types.d.ts +18 -0
  21. package/dist/types/cli/doctor/probe.d.ts +3 -0
  22. package/dist/types/cli/doctor/projection-probe.d.ts +2 -0
  23. package/dist/types/cli/doctor/repairs.d.ts +28 -0
  24. package/dist/types/cli/doctor/report.d.ts +27 -0
  25. package/dist/types/cli/doctor/runner.d.ts +4 -0
  26. package/dist/types/cli/doctor/safety.d.ts +10 -0
  27. package/dist/types/cli/doctor/service-repairs.d.ts +8 -0
  28. package/dist/types/cli/doctor/service-targets.d.ts +41 -0
  29. package/dist/types/cli/doctor/types.d.ts +145 -0
  30. package/dist/types/cli/doctor-cli.d.ts +7 -0
  31. package/dist/types/cli/doctor-supervisor.d.ts +121 -0
  32. package/dist/types/cli/doctor-worker.d.ts +29 -0
  33. package/dist/types/cli/install-activation.d.ts +158 -0
  34. package/dist/types/cli/macos-community-app.d.ts +41 -0
  35. package/dist/types/cli/mcp-cli.d.ts +0 -11
  36. package/dist/types/cli/update-cli.d.ts +41 -4
  37. package/dist/types/cli-main.d.ts +174 -0
  38. package/dist/types/cli.d.ts +1 -171
  39. package/dist/types/commands/doctor.d.ts +7 -0
  40. package/dist/types/commands/sdk.d.ts +17 -8
  41. package/dist/types/config/autorouting-tier-map.d.ts +19 -0
  42. package/dist/types/config/file-lock.d.ts +27 -3
  43. package/dist/types/config/model-preset-registry.d.ts +1 -0
  44. package/dist/types/config/model-registry.d.ts +12 -5
  45. package/dist/types/config/model-resolver.d.ts +16 -3
  46. package/dist/types/config/models-config-schema.d.ts +2 -0
  47. package/dist/types/config/settings-schema.d.ts +1 -1
  48. package/dist/types/coordinator-mcp/question-gate-codec.d.ts +1 -1
  49. package/dist/types/coordinator-mcp/session-reaper.d.ts +15 -5
  50. package/dist/types/cursor.d.ts +9 -9
  51. package/dist/types/discovery/agents-md.d.ts +6 -1
  52. package/dist/types/discovery/helpers.d.ts +36 -7
  53. package/dist/types/discovery/index.d.ts +1 -1
  54. package/dist/types/discovery/mcp-json.d.ts +2 -0
  55. package/dist/types/extensibility/extensions/loader.d.ts +22 -1
  56. package/dist/types/extensibility/gjc-plugins/lifecycle.d.ts +14 -1
  57. package/dist/types/extensibility/gjc-plugins/paths.d.ts +2 -1
  58. package/dist/types/extensibility/gjc-plugins/types.d.ts +25 -0
  59. package/dist/types/extensibility/plugins/manager.d.ts +33 -4
  60. package/dist/types/extensibility/plugins/marketplace/cache.d.ts +6 -0
  61. package/dist/types/extensibility/plugins/marketplace/manager.d.ts +186 -0
  62. package/dist/types/extensibility/plugins/marketplace/registry.d.ts +27 -0
  63. package/dist/types/extensibility/plugins/marketplace/source-resolver.d.ts +16 -1
  64. package/dist/types/extensibility/runtime-skill-discovery.d.ts +16 -3
  65. package/dist/types/gjc-runtime/autoresearch-runtime.d.ts +6 -0
  66. package/dist/types/gjc-runtime/launch-worktree.d.ts +53 -0
  67. package/dist/types/gjc-runtime/session-layout.d.ts +8 -0
  68. package/dist/types/gjc-runtime/session-state-lock.d.ts +15 -0
  69. package/dist/types/gjc-runtime/session-state-sidecar.d.ts +13 -0
  70. package/dist/types/gjc-runtime/ultragoal-runtime.d.ts +6 -0
  71. package/dist/types/main.d.ts +19 -1
  72. package/dist/types/modes/acp/acp-agent.d.ts +40 -0
  73. package/dist/types/modes/components/agent-dashboard.d.ts +1 -0
  74. package/dist/types/modes/components/model-selector.d.ts +2 -0
  75. package/dist/types/modes/interactive-mode.d.ts +1 -1
  76. package/dist/types/runtime-mcp/config-writer.d.ts +47 -0
  77. package/dist/types/runtime-mcp/policy-json-edit.d.ts +60 -0
  78. package/dist/types/runtime-mcp/startup-policy.d.ts +4 -0
  79. package/dist/types/runtime-mcp/types.d.ts +2 -2
  80. package/dist/types/sdk/acp/adapter.d.ts +5 -1
  81. package/dist/types/sdk/broker/broker.d.ts +51 -0
  82. package/dist/types/sdk/broker/daemon-entry.d.ts +39 -0
  83. package/dist/types/sdk/broker/discovery.d.ts +38 -0
  84. package/dist/types/sdk/broker/doctor-restart.d.ts +79 -0
  85. package/dist/types/sdk/broker/endpoint-authority.d.ts +7 -0
  86. package/dist/types/sdk/broker/ensure.d.ts +14 -0
  87. package/dist/types/sdk/broker/lifecycle.d.ts +2 -0
  88. package/dist/types/sdk/broker/process-incarnation.d.ts +50 -0
  89. package/dist/types/sdk/broker/runtime.d.ts +26 -0
  90. package/dist/types/sdk/broker/session-index.d.ts +13 -4
  91. package/dist/types/sdk/broker/worktree-occupancy.d.ts +14 -0
  92. package/dist/types/sdk/bus/chat-daemon-cli.d.ts +16 -0
  93. package/dist/types/sdk/bus/chat-daemon-control.d.ts +101 -6
  94. package/dist/types/sdk/bus/chat-daemon-runtime.d.ts +16 -0
  95. package/dist/types/sdk/bus/daemon-startup-exclusion.d.ts +43 -0
  96. package/dist/types/sdk/bus/doctor-daemon-restart-client.d.ts +51 -0
  97. package/dist/types/sdk/bus/doctor-daemon-restart.d.ts +39 -0
  98. package/dist/types/sdk/bus/index.d.ts +2 -0
  99. package/dist/types/sdk/bus/notification-service.d.ts +3 -0
  100. package/dist/types/sdk/bus/telegram-daemon-cli.d.ts +11 -0
  101. package/dist/types/sdk/bus/telegram-daemon-contract.d.ts +1 -1
  102. package/dist/types/sdk/bus/telegram-daemon-control.d.ts +5 -0
  103. package/dist/types/sdk/bus/telegram-daemon-owner-registry.d.ts +1 -0
  104. package/dist/types/sdk/bus/telegram-daemon.d.ts +36 -5
  105. package/dist/types/sdk/cli/session-cli.d.ts +1 -0
  106. package/dist/types/sdk/host/session-runtime.d.ts +4 -0
  107. package/dist/types/sdk/host/surface-policy.d.ts +3 -1
  108. package/dist/types/sdk/lifecycle/service.d.ts +44 -10
  109. package/dist/types/sdk/prompt-deadline-lease.d.ts +6 -3
  110. package/dist/types/sdk/prompt-deadline-manager.d.ts +2 -2
  111. package/dist/types/sdk/prompt-failure.d.ts +47 -0
  112. package/dist/types/sdk/prompt-status.d.ts +19 -0
  113. package/dist/types/sdk/router/session-router.d.ts +3 -4
  114. package/dist/types/sdk/service-artifact-paths.d.ts +16 -0
  115. package/dist/types/sdk/session-authority.d.ts +9 -0
  116. package/dist/types/sdk/session.d.ts +3 -1
  117. package/dist/types/session/agent-session.d.ts +1 -1
  118. package/dist/types/session/blob-store.d.ts +1 -1
  119. package/dist/types/session/fallback-chain-controller.d.ts +3 -6
  120. package/dist/types/session/internal/managed-session-scope.d.ts +44 -0
  121. package/dist/types/session/primary-control-surface.d.ts +4 -0
  122. package/dist/types/session/session-manager.d.ts +6 -0
  123. package/dist/types/system-prompt.d.ts +6 -0
  124. package/dist/types/tools/ask.d.ts +25 -0
  125. package/dist/types/tools/image-gen.d.ts +0 -4
  126. package/dist/types/tools/skill-discovery.d.ts +7 -5
  127. package/dist/types/tools/ultragoal-ask-guard.d.ts +7 -4
  128. package/dist/types/utils/changelog.d.ts +0 -9
  129. package/dist/types/utils/mupdf-wasm.d.ts +1 -0
  130. package/package.json +9 -8
  131. package/scripts/compile-args.ts +8 -4
  132. package/src/capability/fs.ts +395 -17
  133. package/src/capability/index.ts +273 -10
  134. package/src/capability/types.ts +9 -0
  135. package/src/cli/customize-doctor.ts +18 -12
  136. package/src/cli/doctor/args.ts +236 -0
  137. package/src/cli/doctor/checks.ts +431 -0
  138. package/src/cli/doctor/config-repairs.ts +517 -0
  139. package/src/cli/doctor/context.ts +149 -0
  140. package/src/cli/doctor/files.ts +149 -0
  141. package/src/cli/doctor/ids.ts +115 -0
  142. package/src/cli/doctor/install-repairs.ts +335 -0
  143. package/src/cli/doctor/journal.ts +423 -0
  144. package/src/cli/doctor/managed-link.ts +514 -0
  145. package/src/cli/doctor/native-probe.ts +13 -0
  146. package/src/cli/doctor/permission-repairs.ts +242 -0
  147. package/src/cli/doctor/plugin-quarantine.ts +377 -0
  148. package/src/cli/doctor/plugin-restore.ts +59 -0
  149. package/src/cli/doctor/plugin-targets.ts +373 -0
  150. package/src/cli/doctor/probe-client.ts +195 -0
  151. package/src/cli/doctor/probe-types.ts +21 -0
  152. package/src/cli/doctor/probe.ts +42 -0
  153. package/src/cli/doctor/projection-probe.ts +249 -0
  154. package/src/cli/doctor/repairs.ts +1157 -0
  155. package/src/cli/doctor/report.ts +176 -0
  156. package/src/cli/doctor/runner.ts +342 -0
  157. package/src/cli/doctor/safety.ts +40 -0
  158. package/src/cli/doctor/service-repairs.ts +452 -0
  159. package/src/cli/doctor/service-targets.ts +274 -0
  160. package/src/cli/doctor/types.ts +164 -0
  161. package/src/cli/doctor-cli.ts +62 -0
  162. package/src/cli/doctor-supervisor.ts +571 -0
  163. package/src/cli/doctor-worker.ts +181 -0
  164. package/src/cli/install-activation.ts +666 -0
  165. package/src/cli/macos-community-app.ts +1449 -0
  166. package/src/cli/mcp-cli.ts +11 -21
  167. package/src/cli/nofile-limit.ts +5 -1
  168. package/src/cli/plugin-cli.ts +6 -1
  169. package/src/cli/update-cli.ts +362 -264
  170. package/src/cli-main.ts +517 -0
  171. package/src/cli.ts +64 -433
  172. package/src/commands/autoresearch.ts +11 -5
  173. package/src/commands/completion.ts +1 -1
  174. package/src/commands/doctor.ts +13 -0
  175. package/src/commands/sdk.ts +58 -10
  176. package/src/commands/ultragoal.ts +11 -5
  177. package/src/config/autorouting-tier-map.ts +7 -0
  178. package/src/config/file-lock.ts +736 -71
  179. package/src/config/mcp-schema.json +3 -3
  180. package/src/config/model-preset-registry.ts +1 -0
  181. package/src/config/model-registry.ts +80 -27
  182. package/src/config/model-resolver.ts +33 -4
  183. package/src/config/models-config-schema.ts +2 -0
  184. package/src/config/settings-schema.ts +6 -2
  185. package/src/coordinator-mcp/question-gate-codec.ts +1 -0
  186. package/src/coordinator-mcp/server.ts +534 -51
  187. package/src/coordinator-mcp/session-reaper.ts +64 -8
  188. package/src/cursor.ts +223 -53
  189. package/src/discovery/agents-md.ts +74 -8
  190. package/src/discovery/agents.ts +32 -7
  191. package/src/discovery/builtin.ts +184 -75
  192. package/src/discovery/claude-plugins.ts +85 -17
  193. package/src/discovery/cline.ts +38 -10
  194. package/src/discovery/cursor.ts +19 -6
  195. package/src/discovery/gemini.ts +62 -22
  196. package/src/discovery/github.ts +13 -3
  197. package/src/discovery/helpers.ts +483 -89
  198. package/src/discovery/index.ts +1 -0
  199. package/src/discovery/mcp-json.ts +36 -10
  200. package/src/discovery/opencode.ts +36 -19
  201. package/src/discovery/ssh.ts +11 -8
  202. package/src/discovery/windsurf.ts +12 -3
  203. package/src/exec/bash-executor.ts +10 -3
  204. package/src/exec/isolated-shell.ts +15 -2
  205. package/src/extensibility/extensions/loader.ts +88 -26
  206. package/src/extensibility/gjc-plugins/lifecycle.ts +189 -0
  207. package/src/extensibility/gjc-plugins/paths.ts +4 -1
  208. package/src/extensibility/gjc-plugins/types.ts +27 -0
  209. package/src/extensibility/plugins/manager.ts +200 -22
  210. package/src/extensibility/plugins/marketplace/cache.ts +55 -2
  211. package/src/extensibility/plugins/marketplace/manager.ts +1262 -162
  212. package/src/extensibility/plugins/marketplace/registry.ts +153 -0
  213. package/src/extensibility/plugins/marketplace/source-resolver.ts +116 -10
  214. package/src/extensibility/runtime-skill-discovery.ts +61 -9
  215. package/src/extensibility/skill-management.ts +7 -1
  216. package/src/gjc-runtime/autoresearch-runtime.ts +10 -1
  217. package/src/gjc-runtime/launch-worktree.test.ts +248 -0
  218. package/src/gjc-runtime/launch-worktree.ts +275 -38
  219. package/src/gjc-runtime/repository-binding.ts +26 -1
  220. package/src/gjc-runtime/session-layout.ts +10 -0
  221. package/src/gjc-runtime/session-state-lock.ts +330 -23
  222. package/src/gjc-runtime/session-state-sidecar.ts +328 -80
  223. package/src/gjc-runtime/ultragoal-runtime.ts +10 -1
  224. package/src/harness-control-plane/session-lease.ts +2 -2
  225. package/src/internal-urls/docs-index.generated.ts +28 -26
  226. package/src/main.ts +150 -29
  227. package/src/memories/index.ts +24 -2
  228. package/src/modes/acp/acp-agent.ts +522 -68
  229. package/src/modes/components/agent-dashboard.ts +3 -1
  230. package/src/modes/components/model-selector.ts +28 -19
  231. package/src/modes/components/plugin-settings.ts +2 -1
  232. package/src/modes/controllers/selector-controller.ts +15 -9
  233. package/src/modes/interactive-mode.ts +21 -3
  234. package/src/prompts/system/system-prompt.md +5 -1
  235. package/src/prompts/tools/browser.md +1 -1
  236. package/src/prompts/tools/move-session.md +4 -0
  237. package/src/prompts/tools/read.md +2 -1
  238. package/src/prompts/tools/skill-discovery.md +6 -5
  239. package/src/prompts/tools/task.md +1 -0
  240. package/src/runtime-mcp/config-writer.ts +228 -0
  241. package/src/runtime-mcp/oauth-discovery.ts +114 -14
  242. package/src/runtime-mcp/policy-json-edit.ts +129 -0
  243. package/src/runtime-mcp/startup-policy.ts +14 -0
  244. package/src/runtime-mcp/types.ts +2 -2
  245. package/src/sdk/acp/adapter.ts +27 -12
  246. package/src/sdk/broker/broker.ts +273 -44
  247. package/src/sdk/broker/daemon-entry.ts +119 -0
  248. package/src/sdk/broker/discovery.ts +173 -20
  249. package/src/sdk/broker/doctor-restart.ts +206 -0
  250. package/src/sdk/broker/endpoint-authority.ts +36 -0
  251. package/src/sdk/broker/ensure.ts +49 -14
  252. package/src/sdk/broker/lifecycle.ts +174 -42
  253. package/src/sdk/broker/process-incarnation.ts +86 -2
  254. package/src/sdk/broker/runtime.ts +145 -21
  255. package/src/sdk/broker/session-index.ts +136 -22
  256. package/src/sdk/broker/spawn-substrate.ts +4 -1
  257. package/src/sdk/broker/transport.ts +5 -0
  258. package/src/sdk/broker/worktree-occupancy.ts +21 -1
  259. package/src/sdk/bus/chat-daemon-cli.ts +63 -0
  260. package/src/sdk/bus/chat-daemon-control.ts +260 -64
  261. package/src/sdk/bus/chat-daemon-runtime.ts +141 -25
  262. package/src/sdk/bus/daemon-startup-exclusion.ts +119 -0
  263. package/src/sdk/bus/doctor-daemon-restart-client.ts +291 -0
  264. package/src/sdk/bus/doctor-daemon-restart.ts +92 -0
  265. package/src/sdk/bus/index.ts +252 -51
  266. package/src/sdk/bus/kind-aware-reconciliation.ts +76 -41
  267. package/src/sdk/bus/notification-service.ts +21 -3
  268. package/src/sdk/bus/reconciliation-store.ts +17 -11
  269. package/src/sdk/bus/telegram-daemon-cli.ts +91 -5
  270. package/src/sdk/bus/telegram-daemon-contract.ts +1 -1
  271. package/src/sdk/bus/telegram-daemon-control.ts +47 -0
  272. package/src/sdk/bus/telegram-daemon-owner-registry.ts +1 -1
  273. package/src/sdk/bus/telegram-daemon.ts +178 -13
  274. package/src/sdk/cli/session-cli.ts +100 -12
  275. package/src/sdk/host/host.ts +2 -7
  276. package/src/sdk/host/session-runtime.test.ts +329 -8
  277. package/src/sdk/host/session-runtime.ts +202 -50
  278. package/src/sdk/host/surface-policy.ts +8 -1
  279. package/src/sdk/lifecycle/service.ts +199 -22
  280. package/src/sdk/mcp/server.ts +1 -1
  281. package/src/sdk/prompt-deadline-lease.ts +12 -4
  282. package/src/sdk/prompt-deadline-manager.ts +5 -7
  283. package/src/sdk/prompt-failure.ts +148 -0
  284. package/src/sdk/prompt-status.ts +30 -1
  285. package/src/sdk/prompt-watchdog.ts +11 -3
  286. package/src/sdk/protocol/operation-inventory.generated.json +18 -0
  287. package/src/sdk/protocol/operation-registry.ts +20 -8
  288. package/src/sdk/router/session-router.ts +8 -3
  289. package/src/sdk/service-artifact-paths.ts +26 -0
  290. package/src/sdk/session-authority.ts +10 -0
  291. package/src/sdk/session.ts +361 -194
  292. package/src/session/agent-session.ts +398 -93
  293. package/src/session/blob-store.ts +9 -9
  294. package/src/session/fallback-chain-controller.ts +3 -7
  295. package/src/session/internal/managed-session-scope.ts +445 -29
  296. package/src/session/internal/managed-session-storage.ts +38 -6
  297. package/src/session/primary-control-surface.ts +12 -0
  298. package/src/session/session-manager.ts +11 -3
  299. package/src/session/session-storage.ts +1 -1
  300. package/src/session-import/codex.ts +6 -1
  301. package/src/session-import/redact.ts +7 -0
  302. package/src/skill-state/workflow-mutation-guard.ts +645 -39
  303. package/src/slash-commands/builtin-registry.ts +7 -3
  304. package/src/system-prompt.ts +8 -0
  305. package/src/task/executor.ts +36 -3
  306. package/src/task/types.ts +27 -5
  307. package/src/tools/ask.ts +114 -34
  308. package/src/tools/browser/actions.ts +2 -2
  309. package/src/tools/browser/tab-worker.ts +11 -8
  310. package/src/tools/descriptors.ts +6 -1
  311. package/src/tools/fetch.ts +7 -2
  312. package/src/tools/image-gen.ts +33 -34
  313. package/src/tools/read.ts +78 -32
  314. package/src/tools/skill-discovery.ts +17 -7
  315. package/src/tools/tool-catalog.generated.ts +8 -8
  316. package/src/tools/ultragoal-ask-guard.ts +16 -26
  317. package/src/utils/changelog.ts +7 -1
  318. package/src/utils/git.ts +3 -1
  319. package/src/utils/markit.ts +24 -2
  320. package/src/utils/mupdf-wasm.ts +26 -0
  321. package/src/web/search/providers/openai-compatible.ts +191 -14
@@ -80,20 +80,52 @@ export async function lifecycleArgs(
80
80
  }
81
81
 
82
82
  /**
83
- * How long a session host tolerates the complete absence of a live broker
84
- * publication before treating itself as orphaned. Hosts intentionally survive
85
- * broker restarts (a replacement broker republishes discovery within seconds),
86
- * so this must comfortably exceed a restart window while still bounding the
87
- * lifetime of hosts whose broker is gone for good — otherwise every crashed or
83
+ * How long a session host tolerates losing the broker it was launched under
84
+ * before treating itself as orphaned.
85
+ *
86
+ * A host is reachable only through its own broker: routing lives in the broker
87
+ * process and a replacement broker never adopts hosts from an earlier
88
+ * incarnation, so a host that outlives its broker is stranded no matter how
89
+ * healthy the agent directory looks afterwards. The grace still has to outlast
90
+ * a restart-shaped gap, because a broker that is merely slow to republish must
91
+ * never cost a live host — but it must stay finite, or every crashed or
88
92
  * torn-down broker leaks a detached multi-hundred-megabyte host forever.
89
93
  */
90
94
  export const SESSION_HOST_BROKER_ABSENCE_GRACE_MS = 10 * 60_000;
91
95
  const SESSION_HOST_BROKER_POLL_MS = 15_000;
92
96
 
93
97
  /**
94
- * Resolves only once no live broker publication has been observable in
95
- * `agentDir` for the full grace window. A reappearing broker (including a
96
- * replacement with a different pid) resets the window; an unreadable
98
+ * Identity of the broker incarnation an observation describes, or `null` when
99
+ * it carries no usable identity.
100
+ *
101
+ * Two observations with different identities are two different brokers, never
102
+ * the same broker seen twice: `incarnation` is start-time derived, so it
103
+ * separates a genuine survivor from a successor that merely reused the pid.
104
+ */
105
+ function brokerPublicationIdentity(observation: unknown): string | null {
106
+ if (!observation || typeof observation !== "object") return null;
107
+ const { ownerId, pid, incarnation } = observation as {
108
+ ownerId?: unknown;
109
+ pid?: unknown;
110
+ incarnation?: unknown;
111
+ };
112
+ const parts = [
113
+ typeof ownerId === "string" ? ownerId : "",
114
+ Number.isSafeInteger(pid) ? String(pid) : "",
115
+ typeof incarnation === "string" ? incarnation : "",
116
+ ];
117
+ return parts.some(part => part !== "") ? parts.join(":") : null;
118
+ }
119
+
120
+ /**
121
+ * Resolves only once the broker this host was launched under has been
122
+ * unobservable for the full grace window.
123
+ *
124
+ * The first identifiable publication pins that broker. A later publication from
125
+ * a different incarnation is a replacement, and a replacement cannot route to
126
+ * this host — observing one is evidence of being stranded, not of being alive —
127
+ * so it accrues against the bound instead of resetting it. Only the pinned
128
+ * broker reappearing resets the window. An unreadable or unidentifiable
97
129
  * publication is not proof of orphanhood but accrues against the same bound.
98
130
  */
99
131
  export async function watchSessionHostBrokerLiveness(deps: {
@@ -110,6 +142,7 @@ export async function watchSessionHostBrokerLiveness(deps: {
110
142
  const graceMs = deps.graceMs ?? SESSION_HOST_BROKER_ABSENCE_GRACE_MS;
111
143
  const pollMs = deps.pollMs ?? SESSION_HOST_BROKER_POLL_MS;
112
144
  let absentSince: number | null = null;
145
+ let ownBroker: string | null = null;
113
146
  for (;;) {
114
147
  let live: unknown = null;
115
148
  try {
@@ -117,7 +150,9 @@ export async function watchSessionHostBrokerLiveness(deps: {
117
150
  } catch {
118
151
  // Transient read failures are ambiguity, not proof of orphanhood.
119
152
  }
120
- if (live) {
153
+ const identity = brokerPublicationIdentity(live);
154
+ if (identity !== null && (ownBroker === null || identity === ownBroker)) {
155
+ ownBroker ??= identity;
121
156
  absentSince = null;
122
157
  } else {
123
158
  absentSince ??= now();
@@ -872,7 +907,7 @@ class SdkSessionHelp extends Command {
872
907
  description:
873
908
  "session list scope: repo (default), cwd, worktree, or all; search scope: repo (default), pwd, or global",
874
909
  }),
875
- limit: Flags.integer({ description: "Search page size from 1 to 100" }),
910
+ limit: Flags.integer({ description: "Search or raw session.list page size from 1 to 100" }),
876
911
  json: Flags.boolean({ description: "Render search as the SdkSearchResultV1 JSON envelope" }),
877
912
  text: Flags.string({ description: "Prompt text for send (alternative to --json-input)" }),
878
913
  "op-ref": Flags.string({ description: "Operation reference for send (defaults to a generated ULID)" }),
@@ -883,6 +918,7 @@ class SdkSessionHelp extends Command {
883
918
  strict: Flags.boolean({ description: "tail --strict: fail closed on retention gaps" }),
884
919
  "until-idle": Flags.boolean({ description: "tail --until-idle: exit after an observed terminal turn state" }),
885
920
  "all-events": Flags.boolean({ description: "tail --all-events: include every event-ring kind" }),
921
+ page: Flags.boolean({ description: "raw global session.list: return exactly one broker page" }),
886
922
  };
887
923
  async run(): Promise<void> {}
888
924
  }
@@ -983,6 +1019,8 @@ class SdkSessionCommand extends Command {
983
1019
  strict: Boolean(flagRec.strict),
984
1020
  untilIdle: Boolean(flagRec["until-idle"]),
985
1021
  allEvents: Boolean(flagRec["all-events"]),
1022
+ page: Boolean(flagRec.page),
1023
+ limit: flagRec.limit as number | undefined,
986
1024
  agentDir: flagRec["agent-dir"] as string | undefined,
987
1025
  repo: flagRec.repo as string | undefined,
988
1026
  scope: flagRec.scope as string | undefined,
@@ -1110,6 +1148,15 @@ export default class Sdk extends Command {
1110
1148
  const startupDelayMs = Number(process.env.GJC_SDK_TEST_BROKER_STARTUP_DELAY_MS ?? 0);
1111
1149
  if (Number.isSafeInteger(startupDelayMs) && startupDelayMs > 0 && startupDelayMs <= 10_000)
1112
1150
  await Bun.sleep(startupDelayMs);
1151
+ // The real broker-internal entry point is the only place that reads this
1152
+ // launcher-supplied environment variable; it is validated here and handed
1153
+ // to Broker as a typed setting, never read a second time inside broker.ts
1154
+ // from process.env directly.
1155
+ const restartRequestEnv = process.env.GJC_BROKER_RESTART_REQUEST;
1156
+ const restartRequestId =
1157
+ typeof restartRequestEnv === "string" && /^[A-Za-z0-9_-]{1,256}$/.test(restartRequestEnv)
1158
+ ? restartRequestEnv
1159
+ : undefined;
1113
1160
  const candidate = new Broker({
1114
1161
  agentDir,
1115
1162
  masterOrphanGraceMs: (await Settings.loadForScope({ cwd: process.cwd(), agentDir })).get(
@@ -1124,6 +1171,7 @@ export default class Sdk extends Command {
1124
1171
  await settings.close();
1125
1172
  }
1126
1173
  },
1174
+ ...(restartRequestId === undefined ? {} : { restartRequestId }),
1127
1175
  });
1128
1176
  broker = candidate;
1129
1177
  await candidate.start();
@@ -1,4 +1,4 @@
1
- import { Command, renderCommandHelp } from "@gajae-code/utils/cli";
1
+ import { Command } from "@gajae-code/utils/cli";
2
2
  import { ensureWorkflowSettingsMigrated } from "../config/settings";
3
3
  import {
4
4
  GJC_SESSION_FILE_ENV,
@@ -8,7 +8,7 @@ import {
8
8
  writeCurrentSessionGoalModeState,
9
9
  writePendingGoalModeRequest,
10
10
  } from "../gjc-runtime/goal-mode-request";
11
- import { runNativeUltragoalCommand } from "../gjc-runtime/ultragoal-runtime";
11
+ import { isUltragoalHelpInvocation, runNativeUltragoalCommand } from "../gjc-runtime/ultragoal-runtime";
12
12
 
13
13
  export default class Ultragoal extends Command {
14
14
  static description = "Run native GJC Ultragoal workflow commands";
@@ -19,9 +19,15 @@ export default class Ultragoal extends Command {
19
19
  async run(): Promise<void> {
20
20
  // A read-only help request must not perform the workflow-settings
21
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);
22
+ // retire legacy settings.json): render help before the trigger. The
23
+ // native runtime owns help rendering because it is verb-aware — dropping
24
+ // to a generic command-level renderer here would discard the verb and
25
+ // hide every per-verb flag (`review --help`, `checkpoint --help`, ...).
26
+ if (isUltragoalHelpInvocation(this.argv)) {
27
+ const help = await runNativeUltragoalCommand(this.argv);
28
+ if (help.stdout) process.stdout.write(help.stdout);
29
+ if (help.stderr) process.stderr.write(help.stderr);
30
+ process.exitCode = help.status;
25
31
  return;
26
32
  }
27
33
  await ensureWorkflowSettingsMigrated(process.cwd());
@@ -373,6 +373,9 @@ export const TIER_MAP_SKIP_LIST = {
373
373
  "opencode-go/muse-spark-1.2-contributor": {
374
374
  rationale: "post-rebase catalog addition from dev; not yet curated",
375
375
  },
376
+ "opencode-go/muse-spark-1.3-contributor": {
377
+ rationale: "catalog addition from PR #5485; not yet curated",
378
+ },
376
379
  "opencode-go/qwen3.8-flash": { rationale: "post-rebase catalog addition from dev; not yet curated" },
377
380
  "opencode-go/qwen3.8-max": { rationale: "post-rebase catalog addition from dev; not yet curated" },
378
381
  "opencode-zen/grok-4.6": { rationale: "post-rebase catalog addition from dev; not yet curated" },
@@ -4330,6 +4333,8 @@ export const TIER_MAP_SKIP_LIST = {
4330
4333
  "openai-codex/gpt-5.5": { baseline: true, rationale: "pre-feature baseline; not yet curated" },
4331
4334
  "openai-codex/gpt-5.6-luna": { baseline: true, rationale: "pre-feature baseline; not yet curated" },
4332
4335
  "openai-codex/gpt-image-2": { baseline: true, rationale: "multimodal catalog addition; not yet curated" },
4336
+ "openai-codex/gpt-image-2.5-flare": { baseline: true, rationale: "multimodal catalog addition; not yet curated" },
4337
+ "openai-codex/gpt-image-2.5-sunburst": { baseline: true, rationale: "multimodal catalog addition; not yet curated" },
4333
4338
  "openai/codex-mini-latest": { baseline: true, rationale: "pre-feature baseline; not yet curated" },
4334
4339
  "openai/gpt-4": { baseline: true, rationale: "pre-feature baseline; not yet curated" },
4335
4340
  "openai/gpt-4-turbo": { baseline: true, rationale: "pre-feature baseline; not yet curated" },
@@ -4370,6 +4375,8 @@ export const TIER_MAP_SKIP_LIST = {
4370
4375
  "openai/gpt-5.6-sol": { baseline: true, rationale: "pre-feature baseline; not yet curated" },
4371
4376
  "openai/gpt-5.6-terra": { baseline: true, rationale: "pre-feature baseline; not yet curated" },
4372
4377
  "openai/gpt-image-2": { baseline: true, rationale: "multimodal catalog addition; not yet curated" },
4378
+ "openai/gpt-image-2.5-flare": { baseline: true, rationale: "multimodal catalog addition; not yet curated" },
4379
+ "openai/gpt-image-2.5-sunburst": { baseline: true, rationale: "multimodal catalog addition; not yet curated" },
4373
4380
  "openai/gpt-realtime-2.1": { baseline: true, rationale: "pre-feature baseline; not yet curated" },
4374
4381
  "openai/o1": { baseline: true, rationale: "pre-feature baseline; not yet curated" },
4375
4382
  "openai/o1-pro": { baseline: true, rationale: "pre-feature baseline; not yet curated" },