@gajae-code/coding-agent 0.14.2 → 0.15.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 (345) hide show
  1. package/CHANGELOG.md +120 -1
  2. package/dist/types/async/job-manager.d.ts +4 -1
  3. package/dist/types/autoresearch/dashboard.d.ts +29 -4
  4. package/dist/types/autoresearch/data-context.d.ts +25 -0
  5. package/dist/types/autoresearch/git.d.ts +65 -7
  6. package/dist/types/autoresearch/harness.d.ts +58 -0
  7. package/dist/types/autoresearch/prompts.d.ts +51 -0
  8. package/dist/types/autoresearch/runs.d.ts +173 -0
  9. package/dist/types/autoresearch/types.d.ts +9 -139
  10. package/dist/types/capability/types.d.ts +20 -0
  11. package/dist/types/cli/accounts-cli.d.ts +1 -0
  12. package/dist/types/commands/{rlm.d.ts → autoresearch.d.ts} +2 -4
  13. package/dist/types/config/autorouting-contract.d.ts +146 -0
  14. package/dist/types/config/autorouting-generator.d.ts +40 -0
  15. package/dist/types/config/autorouting-tier-map.d.ts +16844 -0
  16. package/dist/types/config/autorouting.d.ts +35 -0
  17. package/dist/types/config/model-discovery-manager.d.ts +8 -1
  18. package/dist/types/config/model-registry.d.ts +30 -1
  19. package/dist/types/config/provider-selection-policy.d.ts +23 -0
  20. package/dist/types/config/settings-schema.d.ts +61 -3
  21. package/dist/types/config/settings.d.ts +3 -0
  22. package/dist/types/coordinator/contract.d.ts +1 -1
  23. package/dist/types/coordinator-mcp/durability.d.ts +29 -0
  24. package/dist/types/coordinator-mcp/event-webhook.d.ts +50 -0
  25. package/dist/types/coordinator-mcp/question-state.d.ts +1 -1
  26. package/dist/types/coordinator-mcp/server.d.ts +14 -0
  27. package/dist/types/crash/index-store.d.ts +3 -0
  28. package/dist/types/crash/record-loader.d.ts +2 -0
  29. package/dist/types/crash/upstream/relay.d.ts +5 -3
  30. package/dist/types/cursor.d.ts +12 -0
  31. package/dist/types/defaults/gjc-defaults.d.ts +35 -1
  32. package/dist/types/defaults/gjc-skills.generated.d.ts +1 -1
  33. package/dist/types/discovery/helpers.d.ts +1 -1
  34. package/dist/types/edit/index.d.ts +2 -1
  35. package/dist/types/eval/py/executor.d.ts +2 -0
  36. package/dist/types/extensibility/extensions/loader.d.ts +32 -0
  37. package/dist/types/extensibility/gjc-plugins/types.d.ts +1 -1
  38. package/dist/types/extensibility/skills.d.ts +2 -0
  39. package/dist/types/gjc-runtime/autoresearch-runtime.d.ts +194 -0
  40. package/dist/types/gjc-runtime/gc-runtime.d.ts +1 -1
  41. package/dist/types/gjc-runtime/psmux-detect.d.ts +1 -1
  42. package/dist/types/gjc-runtime/python-transcript.d.ts +19 -0
  43. package/dist/types/gjc-runtime/ralplan-runtime.d.ts +2 -8
  44. package/dist/types/gjc-runtime/session-layout.d.ts +6 -3
  45. package/dist/types/gjc-runtime/state-renderer.d.ts +0 -22
  46. package/dist/types/gjc-runtime/state-schema.d.ts +7 -7
  47. package/dist/types/gjc-runtime/tmux-common.d.ts +2 -2
  48. package/dist/types/gjc-runtime/ultragoal-change-set.d.ts +38 -1
  49. package/dist/types/gjc-runtime/ultragoal-runtime.d.ts +2 -24
  50. package/dist/types/gjc-runtime/ultragoal-validation-policy.d.ts +73 -0
  51. package/dist/types/gjc-runtime/workflow-recovery-projection.d.ts +100 -0
  52. package/dist/types/hooks/skill-keywords.d.ts +1 -1
  53. package/dist/types/main.d.ts +0 -10
  54. package/dist/types/modes/acp/acp-agent.d.ts +13 -6
  55. package/dist/types/modes/components/model-selector.d.ts +14 -0
  56. package/dist/types/modes/components/skill-hud/render.d.ts +6 -1
  57. package/dist/types/modes/components/smart-routing-panel.d.ts +82 -0
  58. package/dist/types/modes/controllers/selector-controller.d.ts +14 -0
  59. package/dist/types/modes/interactive-mode.d.ts +3 -0
  60. package/dist/types/modes/types.d.ts +9 -0
  61. package/dist/types/rlm/artifacts.d.ts +4 -4
  62. package/dist/types/runtime/optional-runtime-services.d.ts +2 -1
  63. package/dist/types/runtime/workspace-tree-service.d.ts +5 -1
  64. package/dist/types/runtime-mcp/config.d.ts +6 -0
  65. package/dist/types/runtime-mcp/manager.d.ts +10 -0
  66. package/dist/types/sdk/acp/adapter.d.ts +0 -4
  67. package/dist/types/sdk/broker/broker.d.ts +1 -1
  68. package/dist/types/sdk/broker/lifecycle.d.ts +57 -2
  69. package/dist/types/sdk/broker/session-index.d.ts +15 -0
  70. package/dist/types/sdk/bus/chat-daemon-control.d.ts +6 -0
  71. package/dist/types/sdk/bus/chat-daemon-runtime.d.ts +4 -0
  72. package/dist/types/sdk/bus/index.d.ts +8 -0
  73. package/dist/types/sdk/bus/kind-aware-reconciliation.d.ts +2 -0
  74. package/dist/types/sdk/bus/telegram-daemon-contract.d.ts +12 -2
  75. package/dist/types/sdk/client/client.d.ts +39 -4
  76. package/dist/types/sdk/host/host.d.ts +1 -0
  77. package/dist/types/sdk/host/internal-autorouting-state.d.ts +3 -0
  78. package/dist/types/sdk/host/model-pin.d.ts +29 -0
  79. package/dist/types/sdk/host/session-runtime.d.ts +2 -1
  80. package/dist/types/sdk/lifecycle-session.d.ts +13 -0
  81. package/dist/types/sdk/router/session-router.d.ts +27 -1
  82. package/dist/types/sdk/session.d.ts +11 -1
  83. package/dist/types/session/agent-session.d.ts +36 -6
  84. package/dist/types/session/artifacts.d.ts +16 -1
  85. package/dist/types/session/internal/managed-session-storage.d.ts +7 -0
  86. package/dist/types/session/session-manager.d.ts +84 -2
  87. package/dist/types/session/session-staging-paths.d.ts +3 -0
  88. package/dist/types/skill-state/canonical-skills.d.ts +1 -1
  89. package/dist/types/skill-state/workflow-hud.d.ts +12 -21
  90. package/dist/types/skill-state/workflow-mutation-guard.d.ts +1 -0
  91. package/dist/types/slash-commands/helpers/autorouting-status.d.ts +8 -0
  92. package/dist/types/system-prompt.d.ts +23 -0
  93. package/dist/types/task/executor.d.ts +35 -4
  94. package/dist/types/task/index.d.ts +17 -3
  95. package/dist/types/task/receipt.d.ts +3 -1
  96. package/dist/types/task/types.d.ts +144 -0
  97. package/dist/types/tools/atomic-file-write.d.ts +72 -0
  98. package/dist/types/tools/descriptors.d.ts +1 -0
  99. package/dist/types/tools/index.d.ts +36 -1
  100. package/dist/types/tools/move-session.d.ts +40 -0
  101. package/dist/types/tools/python.d.ts +12 -0
  102. package/dist/types/tools/resource-gc.d.ts +0 -3
  103. package/dist/types/tools/search.d.ts +8 -1
  104. package/dist/types/tools/skill.d.ts +9 -4
  105. package/dist/types/tools/subagent.d.ts +33 -3
  106. package/dist/types/utils/xml-escape.d.ts +2 -0
  107. package/dist/types/workflow/workflow-intent-diff.d.ts +2 -2
  108. package/dist/types/workflow/workflow-intent-report-consumer.d.ts +1 -1
  109. package/package.json +11 -12
  110. package/scripts/build-sdk-package-smoke.ts +7 -5
  111. package/scripts/check-autorouting-tier-map.ts +183 -0
  112. package/scripts/generate-sdk-operation-inventory.ts +12 -0
  113. package/scripts/generate-tool-catalog.ts +40 -5
  114. package/src/async/job-manager.ts +5 -2
  115. package/src/autoresearch/dashboard.ts +134 -314
  116. package/src/autoresearch/data-context.ts +35 -0
  117. package/src/autoresearch/git.ts +186 -26
  118. package/src/autoresearch/{helpers.ts → harness.ts} +65 -40
  119. package/src/autoresearch/{prompt-setup.md → prompts/prompt-setup.md} +7 -7
  120. package/src/autoresearch/prompts/prompt.md +103 -0
  121. package/src/autoresearch/prompts.ts +126 -0
  122. package/src/autoresearch/runs.ts +708 -0
  123. package/src/autoresearch/types.ts +9 -150
  124. package/src/capability/index.ts +4 -4
  125. package/src/capability/types.ts +20 -0
  126. package/src/cli/accounts-cli.ts +21 -5
  127. package/src/cli/config-cli.ts +25 -1
  128. package/src/cli/fast-help.ts +1 -2
  129. package/src/cli/list-models.ts +5 -8
  130. package/src/cli/setup-cli.ts +8 -0
  131. package/src/cli.ts +2 -21
  132. package/src/commands/autoresearch.ts +33 -0
  133. package/src/commands/coordinator.ts +15 -0
  134. package/src/commands/launch.ts +2 -4
  135. package/src/commands/quick-lane.ts +1 -1
  136. package/src/commands/sdk.ts +24 -0
  137. package/src/commands/state.ts +1 -1
  138. package/src/config/autorouting-contract.ts +474 -0
  139. package/src/config/autorouting-generator.ts +238 -0
  140. package/src/config/autorouting-tier-map.ts +6108 -0
  141. package/src/config/autorouting.ts +120 -0
  142. package/src/config/model-discovery-manager.ts +42 -11
  143. package/src/config/model-registry.ts +348 -68
  144. package/src/config/provider-selection-policy.ts +60 -9
  145. package/src/config/settings-schema.ts +195 -6
  146. package/src/config/settings.ts +62 -1
  147. package/src/config.ts +2 -3
  148. package/src/coordinator/contract.ts +0 -1
  149. package/src/coordinator-mcp/codex-handoff.ts +68 -42
  150. package/src/coordinator-mcp/durability.ts +200 -0
  151. package/src/coordinator-mcp/event-webhook.ts +278 -0
  152. package/src/coordinator-mcp/question-state.ts +109 -46
  153. package/src/coordinator-mcp/server.ts +932 -504
  154. package/src/crash/index-store.ts +126 -22
  155. package/src/crash/record-loader.ts +7 -0
  156. package/src/crash/upstream/relay.ts +82 -34
  157. package/src/cursor.ts +84 -1
  158. package/src/debug/index.ts +26 -0
  159. package/src/defaults/gjc/skills/autoresearch/SKILL.md +116 -0
  160. package/src/defaults/gjc/skills/autoresearch/auto-critic.md +46 -0
  161. package/src/defaults/gjc/skills/autoresearch/auto-iterate.md +42 -0
  162. package/src/defaults/gjc/skills/deep-interview/SKILL.md +17 -37
  163. package/src/defaults/gjc/skills/ralplan/SKILL.md +21 -18
  164. package/src/defaults/gjc/skills/ultragoal/SKILL.md +6 -17
  165. package/src/defaults/gjc/skills/ultragoal/ai-slop-cleaner.md +2 -2
  166. package/src/defaults/gjc-defaults.ts +89 -2
  167. package/src/defaults/gjc-skills.generated.ts +24 -17
  168. package/src/discovery/builtin.ts +18 -5
  169. package/src/discovery/helpers.ts +6 -6
  170. package/src/edit/index.ts +5 -2
  171. package/src/eval/py/executor.ts +8 -0
  172. package/src/extensibility/extensions/loader.ts +135 -13
  173. package/src/extensibility/extensions/wrapper.ts +1 -2
  174. package/src/extensibility/gjc-plugins/schema.ts +1 -1
  175. package/src/extensibility/runtime-skill-discovery.ts +2 -2
  176. package/src/extensibility/skill-management.ts +2 -3
  177. package/src/extensibility/skills.ts +16 -8
  178. package/src/gjc-runtime/autoresearch-runtime.ts +1509 -0
  179. package/src/gjc-runtime/gc-render.ts +0 -1
  180. package/src/gjc-runtime/gc-runtime.ts +1 -11
  181. package/src/gjc-runtime/launch-tmux.ts +3 -3
  182. package/src/gjc-runtime/psmux-detect.ts +2 -2
  183. package/src/gjc-runtime/python-transcript.ts +58 -0
  184. package/src/gjc-runtime/ralplan-runtime.ts +6 -18
  185. package/src/gjc-runtime/session-layout.ts +18 -7
  186. package/src/gjc-runtime/session-state-sidecar.ts +58 -9
  187. package/src/gjc-runtime/state-renderer.ts +0 -38
  188. package/src/gjc-runtime/state-runtime.ts +43 -22
  189. package/src/gjc-runtime/state-schema.ts +1 -1
  190. package/src/gjc-runtime/tmux-common.ts +7 -7
  191. package/src/gjc-runtime/ultragoal-change-set.ts +232 -11
  192. package/src/gjc-runtime/ultragoal-runtime.ts +309 -114
  193. package/src/gjc-runtime/ultragoal-validation-policy.ts +247 -0
  194. package/src/gjc-runtime/workflow-command-ref.ts +15 -11
  195. package/src/gjc-runtime/workflow-manifest.generated.json +413 -532
  196. package/src/gjc-runtime/workflow-manifest.ts +43 -83
  197. package/src/gjc-runtime/workflow-recovery-projection.ts +616 -0
  198. package/src/hooks/skill-keywords.ts +3 -3
  199. package/src/hooks/skill-state.ts +2 -2
  200. package/src/internal-urls/docs-index.generated.ts +26 -24
  201. package/src/lsp/index.ts +25 -5
  202. package/src/main.ts +2 -27
  203. package/src/modes/acp/acp-agent.ts +200 -75
  204. package/src/modes/components/model-selector.ts +216 -13
  205. package/src/modes/components/oauth-selector.ts +5 -5
  206. package/src/modes/components/skill-hud/render.ts +173 -35
  207. package/src/modes/components/smart-routing-panel.ts +531 -0
  208. package/src/modes/components/tool-status-header.ts +6 -3
  209. package/src/modes/controllers/command-controller.ts +17 -7
  210. package/src/modes/controllers/input-controller.ts +44 -9
  211. package/src/modes/controllers/runtime-mcp-command-controller.ts +4 -0
  212. package/src/modes/controllers/selector-controller.ts +298 -65
  213. package/src/modes/interactive-mode.ts +8 -1
  214. package/src/modes/shared/agent-wire/workflow-gate-types.ts +1 -1
  215. package/src/modes/types.ts +9 -1
  216. package/src/prompts/agents/planner.md +1 -1
  217. package/src/prompts/system/system-prompt.md +1 -1
  218. package/src/prompts/system/volatile-project-context.md +2 -1
  219. package/src/prompts/tools/move-session.md +15 -0
  220. package/src/prompts/tools/python.md +12 -0
  221. package/src/prompts/tools/skill-discovery.md +1 -1
  222. package/src/prompts/tools/skill.md +2 -2
  223. package/src/prompts/tools/task-summary.md +1 -0
  224. package/src/prompts/tools/task.md +6 -0
  225. package/src/rlm/artifacts.ts +12 -10
  226. package/src/runtime/optional-runtime-services.ts +3 -2
  227. package/src/runtime/workspace-tree-service.ts +11 -3
  228. package/src/runtime-mcp/config.ts +8 -1
  229. package/src/runtime-mcp/manager.ts +33 -0
  230. package/src/sdk/acp/adapter.ts +48 -1
  231. package/src/sdk/broker/broker.ts +30 -2
  232. package/src/sdk/broker/discovery.ts +217 -2
  233. package/src/sdk/broker/lifecycle.ts +385 -59
  234. package/src/sdk/broker/session-index.ts +243 -48
  235. package/src/sdk/broker/transport.ts +1 -0
  236. package/src/sdk/bus/chat-daemon-control.ts +8 -2
  237. package/src/sdk/bus/chat-daemon-runtime.ts +5 -0
  238. package/src/sdk/bus/index.ts +208 -11
  239. package/src/sdk/bus/kind-aware-reconciliation.ts +16 -0
  240. package/src/sdk/bus/reconciliation-store.ts +27 -5
  241. package/src/sdk/bus/telegram-daemon-contract.ts +12 -2
  242. package/src/sdk/client/client.ts +204 -22
  243. package/src/sdk/host/host.ts +16 -0
  244. package/src/sdk/host/internal-autorouting-state.ts +13 -0
  245. package/src/sdk/host/model-pin.ts +101 -0
  246. package/src/sdk/host/reverse-leases.ts +2 -1
  247. package/src/sdk/host/session-runtime.test.ts +224 -1
  248. package/src/sdk/host/session-runtime.ts +125 -37
  249. package/src/sdk/lifecycle/service.ts +3 -1
  250. package/src/sdk/lifecycle-session.ts +42 -1
  251. package/src/sdk/protocol/operation-inventory.generated.json +66 -0
  252. package/src/sdk/router/session-router.ts +375 -36
  253. package/src/sdk/session.ts +547 -47
  254. package/src/session/account-inventory.ts +1 -1
  255. package/src/session/agent-session.ts +765 -189
  256. package/src/session/artifacts.ts +234 -4
  257. package/src/session/internal/managed-session-storage.ts +91 -4
  258. package/src/session/provider-safety-stop-hint.ts +3 -2
  259. package/src/session/session-manager.ts +775 -16
  260. package/src/session/session-staging-paths.ts +8 -0
  261. package/src/setup/hermes/templates/operator-instructions.v1.md +0 -1
  262. package/src/setup/host-plugin-setup.ts +2 -2
  263. package/src/skill-state/active-state.ts +2 -2
  264. package/src/skill-state/canonical-skills.ts +1 -1
  265. package/src/skill-state/initial-phase.ts +1 -1
  266. package/src/skill-state/workflow-hud.ts +41 -41
  267. package/src/skill-state/workflow-mutation-guard.ts +26 -7
  268. package/src/slash-commands/builtin-registry.ts +77 -0
  269. package/src/slash-commands/helpers/autorouting-status.ts +55 -0
  270. package/src/system-prompt.ts +102 -5
  271. package/src/task/discovery.ts +2 -3
  272. package/src/task/executor.ts +617 -43
  273. package/src/task/index.ts +262 -15
  274. package/src/task/receipt.ts +30 -0
  275. package/src/task/render.ts +11 -1
  276. package/src/task/types.ts +316 -0
  277. package/src/tools/atomic-file-write.ts +594 -0
  278. package/src/tools/bisect.ts +3 -2
  279. package/src/tools/descriptors.test.ts +3 -0
  280. package/src/tools/descriptors.ts +24 -0
  281. package/src/tools/image-gen.ts +5 -1
  282. package/src/tools/index.ts +62 -5
  283. package/src/tools/move-session.ts +107 -0
  284. package/src/tools/python.ts +205 -0
  285. package/src/tools/read.ts +88 -15
  286. package/src/tools/renderers.ts +2 -0
  287. package/src/tools/resource-gc.ts +8 -177
  288. package/src/tools/search.ts +30 -6
  289. package/src/tools/skill-discovery.ts +1 -0
  290. package/src/tools/skill.ts +37 -7
  291. package/src/tools/subagent-render.ts +119 -13
  292. package/src/tools/subagent.ts +91 -74
  293. package/src/tools/tool-catalog.generated.ts +64 -2
  294. package/src/tools/write.ts +16 -12
  295. package/src/utils/xml-escape.ts +14 -0
  296. package/src/web/search/providers/codex.ts +2 -2
  297. package/src/workflow/workflow-intent-diff.ts +13 -12
  298. package/src/workflow/workflow-intent-report-consumer.ts +6 -6
  299. package/dist/types/autoresearch/helpers.d.ts +0 -24
  300. package/dist/types/autoresearch/index.d.ts +0 -2
  301. package/dist/types/autoresearch/state.d.ts +0 -17
  302. package/dist/types/autoresearch/storage.d.ts +0 -142
  303. package/dist/types/autoresearch/tools/init-experiment.d.ts +0 -31
  304. package/dist/types/autoresearch/tools/log-experiment.d.ts +0 -23
  305. package/dist/types/autoresearch/tools/run-experiment.d.ts +0 -8
  306. package/dist/types/autoresearch/tools/update-notes.d.ts +0 -12
  307. package/dist/types/commands/team.d.ts +0 -24
  308. package/dist/types/gjc-runtime/team-gc.d.ts +0 -7
  309. package/dist/types/gjc-runtime/team-launch.d.ts +0 -61
  310. package/dist/types/gjc-runtime/team-notify.d.ts +0 -45
  311. package/dist/types/gjc-runtime/team-runtime.d.ts +0 -336
  312. package/dist/types/gjc-runtime/team-store.d.ts +0 -168
  313. package/dist/types/gjc-runtime/team-worker-heartbeat.d.ts +0 -43
  314. package/dist/types/gjc-runtime/team-worker-memory-guard.d.ts +0 -92
  315. package/dist/types/gjc-runtime/team-workers.d.ts +0 -83
  316. package/dist/types/rlm/index.d.ts +0 -47
  317. package/dist/types/rlm/preset.d.ts +0 -23
  318. package/dist/types/rlm/python-tool.d.ts +0 -16
  319. package/src/autoresearch/command-resume.md +0 -14
  320. package/src/autoresearch/index.ts +0 -536
  321. package/src/autoresearch/prompt.md +0 -103
  322. package/src/autoresearch/resume-message.md +0 -10
  323. package/src/autoresearch/state.ts +0 -273
  324. package/src/autoresearch/storage.ts +0 -699
  325. package/src/autoresearch/tools/init-experiment.ts +0 -272
  326. package/src/autoresearch/tools/log-experiment.ts +0 -524
  327. package/src/autoresearch/tools/run-experiment.ts +0 -475
  328. package/src/autoresearch/tools/update-notes.ts +0 -109
  329. package/src/commands/rlm.ts +0 -19
  330. package/src/commands/team.ts +0 -238
  331. package/src/defaults/gjc/skills/deep-interview/auto-research-greenfield.md +0 -42
  332. package/src/defaults/gjc/skills/team/SKILL.md +0 -467
  333. package/src/gjc-runtime/team-gc.ts +0 -49
  334. package/src/gjc-runtime/team-launch.ts +0 -404
  335. package/src/gjc-runtime/team-notify.ts +0 -326
  336. package/src/gjc-runtime/team-runtime.ts +0 -5923
  337. package/src/gjc-runtime/team-store.ts +0 -878
  338. package/src/gjc-runtime/team-worker-heartbeat.ts +0 -149
  339. package/src/gjc-runtime/team-worker-memory-guard.ts +0 -363
  340. package/src/gjc-runtime/team-workers.ts +0 -1123
  341. package/src/prompts/system/rlm-report-command.md +0 -1
  342. package/src/prompts/system/rlm-research.md +0 -23
  343. package/src/rlm/index.ts +0 -365
  344. package/src/rlm/preset.ts +0 -76
  345. package/src/rlm/python-tool.ts +0 -68
@@ -1,336 +0,0 @@
1
- import type { WorkflowHudSummary } from "../skill-state/active-state";
2
- import type { GcPidProbe, GcRecord } from "./gc-runtime";
3
- import type { GjcTeamApiClaimResult, GjcTeamMailboxDeliveryTransport, GjcTeamNotification, GjcTeamNotificationSummary, GjcTeamTask, GjcTeamTaskMetadataInput, GjcTeamTaskStatus } from "./team-store";
4
- export type { GjcTeamApiClaimResult, GjcTeamMailboxDeliveryInput, GjcTeamMailboxDeliveryResult, GjcTeamMailboxDeliveryTransport, GjcTeamMailboxDeliveryTransportKind, GjcTeamNotification, GjcTeamNotificationDeliveryState, GjcTeamNotificationSummary, GjcTeamPaneAttemptResult, GjcTeamTask, GjcTeamTaskClaim, GjcTeamTaskMetadataInput, GjcTeamTaskStatus, } from "./team-store";
5
- export declare const GJC_TEAM_DEFAULT_WORKERS = 3;
6
- export declare const GJC_TEAM_MAX_WORKERS = 20;
7
- export type GjcTeamWorkerCli = "gjc";
8
- export interface GjcTeamLeader {
9
- session_id: string;
10
- pane_id: string;
11
- cwd: string;
12
- }
13
- export interface GjcTeamWorker {
14
- id: string;
15
- name: string;
16
- index: number;
17
- agent_type: string;
18
- role: string;
19
- pane_id?: string;
20
- status: "starting" | "idle" | "busy" | "stopped";
21
- last_heartbeat: string;
22
- assigned_tasks: string[];
23
- worktree_repo_root?: string;
24
- worktree_path?: string;
25
- worktree_branch?: string | null;
26
- worktree_detached?: boolean;
27
- worktree_created?: boolean;
28
- worktree_base_ref?: string;
29
- team_state_root?: string;
30
- }
31
- export type GjcTeamPhase = "starting" | "running" | "awaiting_integration" | "complete" | "failed" | "cancelled";
32
- export type GjcWorkerStatusState = "idle" | "working" | "blocked" | "done" | "failed" | "draining" | "unknown";
33
- export type GjcTeamWorkerLifecycleState = "starting" | "ready" | "working" | "draining" | "stopped" | "failed" | "unknown";
34
- export type GjcTeamShutdownMode = "graceful" | "force" | "abort";
35
- export type GjcTeamWorktreeMode = {
36
- enabled: false;
37
- } | {
38
- enabled: true;
39
- detached: true;
40
- name: null;
41
- } | {
42
- enabled: true;
43
- detached: false;
44
- name: string;
45
- };
46
- export interface GjcTeamConfig {
47
- /**
48
- * Launch-time platform. Persisted so the monitor path resolves the same
49
- * provider context the launch did instead of re-reading `process.platform`,
50
- * which makes Windows-authority branches unreachable off Windows.
51
- */
52
- platform?: NodeJS.Platform;
53
- team_name: string;
54
- display_name: string;
55
- requested_name: string;
56
- task: string;
57
- agent_type: string;
58
- worker_count: number;
59
- max_workers: number;
60
- state_root: string;
61
- gjc_session_id?: string;
62
- worker_command: string;
63
- worker_cli_plan: GjcTeamWorkerCli[];
64
- tmux_command: string;
65
- tmux_session: string;
66
- tmux_session_name: string;
67
- tmux_target: string;
68
- tmux_provider_generation?: string;
69
- tmux_provider_state_dir?: string;
70
- tmux_provider_session_id?: string;
71
- workspace_mode: "direct" | "worktree";
72
- dry_run: boolean;
73
- leader: GjcTeamLeader;
74
- leader_cwd: string;
75
- team_state_root: string;
76
- workers: GjcTeamWorker[];
77
- created_at: string;
78
- updated_at: string;
79
- }
80
- export type GjcTeamIntegrationStatus = "idle" | "integrated" | "integration_failed" | "merge_conflict" | "cherry_pick_conflict" | "rebase_conflict";
81
- export interface GjcTeamWorkerIntegrationState {
82
- last_seen_head?: string;
83
- last_integrated_head?: string;
84
- last_leader_head?: string;
85
- last_rebased_leader_head?: string;
86
- status?: GjcTeamIntegrationStatus;
87
- conflict_commit?: string;
88
- conflict_files?: string[];
89
- updated_at?: string;
90
- }
91
- export interface GjcTeamMonitorSnapshot {
92
- integration_by_worker: Record<string, GjcTeamWorkerIntegrationState>;
93
- updated_at: string;
94
- }
95
- export interface GjcTeamWorkerLifecycle {
96
- worker: string;
97
- lifecycle_state: GjcTeamWorkerLifecycleState;
98
- worker_status_state: GjcWorkerStatusState;
99
- pane_id?: string;
100
- pid?: number;
101
- started_at?: string;
102
- updated_at: string;
103
- stopped_at?: string;
104
- stop_reason?: string;
105
- shutdown_request_id?: string;
106
- shutdown_requested_at?: string;
107
- shutdown_acknowledged_at?: string;
108
- shutdown_ack_status?: string;
109
- shutdown_mode?: GjcTeamShutdownMode;
110
- }
111
- export interface GjcTeamSnapshot {
112
- team_name: string;
113
- display_name: string;
114
- phase: GjcTeamPhase;
115
- state_dir: string;
116
- tmux_session: string;
117
- tmux_session_name: string;
118
- tmux_target: string;
119
- task_total: number;
120
- task_counts: Record<GjcTeamTaskStatus, number>;
121
- workers: GjcTeamWorker[];
122
- integration_by_worker?: Record<string, GjcTeamWorkerIntegrationState>;
123
- worker_lifecycle_by_id: Record<string, GjcTeamWorkerLifecycle>;
124
- notification_summary: GjcTeamNotificationSummary;
125
- updated_at: string;
126
- }
127
- export interface GjcTeamSnapshotOptions {
128
- reconcileNotifications?: boolean;
129
- }
130
- export interface GjcTeamStartOptions {
131
- workerCount: number;
132
- agentType: string;
133
- task: string;
134
- teamName?: string;
135
- worktreeMode?: GjcTeamWorktreeMode;
136
- cwd?: string;
137
- env?: NodeJS.ProcessEnv;
138
- dryRun?: boolean;
139
- platform?: NodeJS.Platform;
140
- mailboxDeliveryTransport?: GjcTeamMailboxDeliveryTransport;
141
- }
142
- export type GjcTeamLivenessRecoveryReason = "claim_expired" | "stale_heartbeat" | "missing_pane" | "worker_lifecycle_failed" | "worker_lifecycle_stopped";
143
- export interface GjcTeamRecoveredClaim {
144
- task_id: string;
145
- worker: string;
146
- reasons: GjcTeamLivenessRecoveryReason[];
147
- }
148
- export interface GjcTeamLivenessRecoveryResult {
149
- recovered_claims: GjcTeamRecoveredClaim[];
150
- stale_workers: Record<string, GjcTeamLivenessRecoveryReason[]>;
151
- }
152
- export interface GjcTeamMailboxMessage {
153
- message_id: string;
154
- from_worker: string;
155
- to_worker: string;
156
- body: string;
157
- created_at: string;
158
- delivered_at?: string;
159
- notified_at?: string;
160
- idempotency_key?: string;
161
- }
162
- export declare function resolveGjcTeamWorkerCli(env?: NodeJS.ProcessEnv): GjcTeamWorkerCli;
163
- export declare function resolveGjcTeamWorkerCliPlan(workerCount: number, env?: NodeJS.ProcessEnv): GjcTeamWorkerCli[];
164
- export declare function translateGjcWorkerLaunchArgsForCli(workerCli: GjcTeamWorkerCli, args: string[]): string[];
165
- export interface GjcTeamEvent {
166
- event_id: string;
167
- ts: string;
168
- type: string;
169
- worker?: string;
170
- task_id?: string;
171
- message?: string;
172
- data?: Record<string, unknown>;
173
- }
174
- export interface GjcTeamTraceEvent {
175
- schema_version: 1;
176
- trace_id: string;
177
- span_id: string;
178
- source_event_id: string;
179
- event_type: string;
180
- ts: string;
181
- worker?: string;
182
- task_id?: string;
183
- message?: string;
184
- evidence_refs?: string[];
185
- data?: Record<string, unknown>;
186
- }
187
- export interface WorkerStatusFile {
188
- state: GjcWorkerStatusState;
189
- current_task_id?: string;
190
- reason?: string;
191
- updated_at: string;
192
- }
193
- export interface WorkerHeartbeatFile {
194
- pid: number;
195
- last_turn_at: string;
196
- turn_count: number;
197
- alive: boolean;
198
- process_start_time?: string;
199
- }
200
- export interface GjcWorkerIntegrationAttemptRequestResult {
201
- requested: boolean;
202
- reason: "requested" | "not_worker" | "missing_worktree" | "no_changes" | "deduped" | "git_error";
203
- worker?: string;
204
- team_name?: string;
205
- fingerprint?: string;
206
- head?: string | null;
207
- status?: GjcWorkerCheckpointClassification["kind"];
208
- }
209
- export interface GjcWorkerIntegrationAttemptOptions {
210
- signal?: AbortSignal;
211
- }
212
- export declare const GJC_TEAM_API_OPERATIONS: readonly ["send-message", "broadcast", "mailbox-list", "mailbox-mark-delivered", "mailbox-mark-notified", "notification-list", "notification-read", "notification-replay", "notification-mark-pane-attempt", "worker-startup-ack", "worker-continuation-ack", "create-task", "read-task", "list-tasks", "update-task", "claim-task", "transition-task-status", "transition-task", "release-task-claim", "read-config", "read-manifest", "read-worker-status", "update-worker-status", "read-worker-heartbeat", "recover-stale-claims", "update-worker-heartbeat", "read-worker-memory-guard", "update-worker-memory-guard", "apply-worker-memory-guard", "write-worker-inbox", "write-worker-identity", "append-event", "read-events", "read-traces", "await-event", "write-shutdown-request", "read-shutdown-ack", "read-monitor-snapshot", "write-monitor-snapshot", "read-task-approval", "write-task-approval"];
213
- export type GjcTeamApiOperation = (typeof GJC_TEAM_API_OPERATIONS)[number];
214
- export declare class UnknownGjcTeamApiOperationError extends Error {
215
- readonly code = "unknown_team_api_operation";
216
- readonly operation: string;
217
- readonly suggestions: readonly string[];
218
- constructor(operation: string, suggestions: readonly string[]);
219
- }
220
- export interface GjcTeamRuntimeTestSeams {
221
- nowMs?: () => number;
222
- continuationTmuxDispatch?: (command: string, args: readonly string[]) => {
223
- exitCode?: number;
224
- } | Promise<{
225
- exitCode?: number;
226
- }>;
227
- continuationBeforeDispatch?: () => Promise<void>;
228
- continuationAckPoll?: () => Promise<void>;
229
- }
230
- /** @internal Test-only seam; production code leaves the real clock and tmux dispatch intact. */
231
- export declare function __setGjcTeamRuntimeTestSeamsForTests(seams: GjcTeamRuntimeTestSeams | undefined): void;
232
- export declare function resolveGjcTeamStateRoot(cwd?: string, env?: NodeJS.ProcessEnv): string;
233
- /** @internal */
234
- export declare function listTeamWorkerGcRecords(teamRoot: string, probe: GcPidProbe): Promise<GcRecord[]>;
235
- /** @internal */
236
- export declare function pruneTeamWorkerGcRecord(record: GcRecord, probe: GcPidProbe): Promise<boolean>;
237
- export declare function persistGjcTeamModeStateSummary(snapshot: GjcTeamSnapshot, cwd?: string): Promise<void>;
238
- export declare function recoverGjcTeamStaleClaims(teamName: string, cwd?: string, env?: NodeJS.ProcessEnv): Promise<GjcTeamLivenessRecoveryResult>;
239
- export declare function resolveWorkerWorktreePath(input: {
240
- repoRoot: string;
241
- stateDir: string;
242
- teamName: string;
243
- workerId: string;
244
- platform: NodeJS.Platform;
245
- isPsmux: boolean;
246
- }): string;
247
- /**
248
- * Check whether the current process can launch a team without changing tmux state.
249
- * Unlike the launch path, this never adopts or tags an unmanaged tmux session.
250
- */
251
- export declare function probeGjcTeamAvailability(env?: NodeJS.ProcessEnv): {
252
- available: true;
253
- } | {
254
- available: false;
255
- reason: string;
256
- };
257
- export declare function resolveGjcWorkerCommand(cwd?: string, env?: NodeJS.ProcessEnv, platform?: NodeJS.Platform, argv?: string[], execPath?: string): string;
258
- export { buildWorkerCommand } from "./team-launch";
259
- export type GjcWorkerCheckpointClassification = {
260
- kind: "clean";
261
- files: string[];
262
- } | {
263
- kind: "eligible";
264
- files: string[];
265
- } | {
266
- kind: "protected_only";
267
- files: string[];
268
- } | {
269
- kind: "conflicted";
270
- files: string[];
271
- } | {
272
- kind: "git_error";
273
- files: string[];
274
- detail: string;
275
- };
276
- export declare function classifyGjcTeamCheckpointFiles(files: string[]): {
277
- eligible: string[];
278
- protected: string[];
279
- };
280
- export declare function classifyWorkerCheckpointStatus(cwd: string): GjcWorkerCheckpointClassification;
281
- export declare function classifyWorkerCheckpointStatusAsync(cwd: string, signal?: AbortSignal): Promise<GjcWorkerCheckpointClassification>;
282
- export declare function startGjcTeam(options: GjcTeamStartOptions): Promise<GjcTeamSnapshot>;
283
- export declare function readGjcTeamSnapshot(teamName: string, cwd?: string, env?: NodeJS.ProcessEnv, options?: GjcTeamSnapshotOptions): Promise<GjcTeamSnapshot>;
284
- export declare function monitorGjcTeamSnapshot(teamName: string, cwd?: string, env?: NodeJS.ProcessEnv): Promise<GjcTeamSnapshot>;
285
- export declare function requestGjcWorkerIntegrationAttempt(cwd?: string, env?: NodeJS.ProcessEnv, options?: GjcWorkerIntegrationAttemptOptions): Promise<GjcWorkerIntegrationAttemptRequestResult>;
286
- export declare function buildTeamHudSummary(snapshot: GjcTeamSnapshot, latestEvent?: GjcTeamEvent, latestMessage?: GjcTeamMailboxMessage): Promise<WorkflowHudSummary>;
287
- export declare function monitorGjcTeam(teamName: string, cwd?: string, env?: NodeJS.ProcessEnv): Promise<GjcTeamSnapshot>;
288
- export declare function listGjcTeams(cwd?: string, env?: NodeJS.ProcessEnv): Promise<GjcTeamSnapshot[]>;
289
- /** Positive stale windows are clamped so a worker can publish strictly before expiry. */
290
- export declare function parseHeartbeatStaleMs(env: NodeJS.ProcessEnv): number;
291
- export declare function shutdownGjcTeam(teamName: string, cwd?: string, env?: NodeJS.ProcessEnv): Promise<GjcTeamSnapshot>;
292
- export declare function listGjcTeamTasks(teamName: string, cwd?: string, env?: NodeJS.ProcessEnv): Promise<GjcTeamTask[]>;
293
- export declare function readGjcTeamTask(teamName: string, taskId: string, cwd?: string, env?: NodeJS.ProcessEnv): Promise<GjcTeamTask>;
294
- export declare function createGjcTeamTask(teamName: string, subject: string, description: string, cwd?: string, env?: NodeJS.ProcessEnv, taskOptions?: GjcTeamTaskMetadataInput): Promise<GjcTeamTask>;
295
- export declare function updateGjcTeamTask(teamName: string, taskId: string, updates: Partial<Pick<GjcTeamTask, "subject" | "description" | "blocked_by" | "depends_on" | "lane" | "required_role" | "allowed_roles">>, cwd?: string, env?: NodeJS.ProcessEnv): Promise<GjcTeamTask>;
296
- export declare function claimGjcTeamTask(teamName: string, workerId: string, cwd?: string, env?: NodeJS.ProcessEnv, taskId?: string): Promise<GjcTeamApiClaimResult>;
297
- export declare function transitionGjcTeamTaskStatus(teamName: string, taskId: string, status: GjcTeamTaskStatus, cwd?: string, env?: NodeJS.ProcessEnv, claimToken?: string, workerId?: string, completionEvidenceInput?: unknown): Promise<GjcTeamTask>;
298
- export declare function transitionGjcTeamTask(teamName: string, taskId: string, status: GjcTeamTaskStatus | "complete", cwd?: string, env?: NodeJS.ProcessEnv, claimToken?: string, completionEvidenceInput?: unknown): Promise<GjcTeamTask>;
299
- export declare function releaseGjcTeamTaskClaim(teamName: string, taskId: string, claimToken: string, workerId: string, cwd?: string, env?: NodeJS.ProcessEnv): Promise<GjcTeamTask>;
300
- export declare function replayGjcTeamNotifications(teamName: string, cwd?: string, env?: NodeJS.ProcessEnv, transport?: GjcTeamMailboxDeliveryTransport): Promise<{
301
- notifications: GjcTeamNotification[];
302
- summary: GjcTeamNotificationSummary;
303
- }>;
304
- export declare function sendGjcTeamMessage(teamName: string, fromWorker: string, toWorker: string, body: string, cwd?: string, env?: NodeJS.ProcessEnv, idempotencyKey?: string, transport?: GjcTeamMailboxDeliveryTransport): Promise<GjcTeamMailboxMessage>;
305
- export declare function broadcastGjcTeamMessage(teamName: string, fromWorker: string, body: string, cwd?: string, env?: NodeJS.ProcessEnv, idempotencyKey?: string): Promise<GjcTeamMailboxMessage[]>;
306
- export declare function listGjcTeamMailbox(teamName: string, worker: string, cwd?: string, env?: NodeJS.ProcessEnv): Promise<GjcTeamMailboxMessage[]>;
307
- export declare function markGjcTeamMailboxMessage(teamName: string, worker: string, messageId: string, field: "delivered_at" | "notified_at", cwd?: string, env?: NodeJS.ProcessEnv): Promise<GjcTeamMailboxMessage>;
308
- export declare const readGjcWorkerStatus: (teamName: string, worker: string, cwd?: string, env?: NodeJS.ProcessEnv) => Promise<WorkerStatusFile>;
309
- export declare function updateGjcWorkerStatus(teamName: string, worker: string, status: GjcWorkerStatusState, cwd?: string, env?: NodeJS.ProcessEnv, currentTaskId?: string, reason?: string): Promise<WorkerStatusFile>;
310
- export declare const readGjcWorkerHeartbeat: (teamName: string, worker: string, cwd?: string, env?: NodeJS.ProcessEnv) => Promise<WorkerHeartbeatFile | null>;
311
- export declare function updateGjcWorkerHeartbeat(teamName: string, worker: string, heartbeat: WorkerHeartbeatFile, cwd?: string, env?: NodeJS.ProcessEnv): Promise<WorkerHeartbeatFile>;
312
- /**
313
- * Refresh liveness without discarding metadata written by other heartbeat
314
- * producers. The read/merge/write sequence shares the team mutation fence with
315
- * CLI heartbeat updates, so a runtime tick cannot overwrite a newer turn count.
316
- */
317
- export declare function refreshGjcWorkerHeartbeat(teamName: string, worker: string, pid: number, cwd?: string, env?: NodeJS.ProcessEnv): Promise<WorkerHeartbeatFile>;
318
- export declare function writeGjcWorkerInbox(teamName: string, worker: string, content: string, cwd?: string, env?: NodeJS.ProcessEnv): Promise<{
319
- path: string;
320
- }>;
321
- export declare function writeGjcWorkerIdentity(teamName: string, worker: GjcTeamWorker, cwd?: string, env?: NodeJS.ProcessEnv): Promise<GjcTeamWorker>;
322
- export declare function readGjcTeamEvents(teamName: string, cwd?: string, env?: NodeJS.ProcessEnv): Promise<GjcTeamEvent[]>;
323
- export declare function readGjcTeamTraces(teamName: string, cwd?: string, env?: NodeJS.ProcessEnv): Promise<GjcTeamTraceEvent[]>;
324
- export declare function appendGjcTeamEvent(teamName: string, type: string, worker?: string, cwd?: string, env?: NodeJS.ProcessEnv): Promise<GjcTeamEvent>;
325
- export declare function awaitGjcTeamEvent(teamName: string, _timeoutMs?: number, cwd?: string, env?: NodeJS.ProcessEnv): Promise<{
326
- status: "event" | "timeout";
327
- event?: GjcTeamEvent;
328
- }>;
329
- export declare function writeGjcMonitorSnapshot(teamName: string, snapshot: unknown, cwd?: string, env?: NodeJS.ProcessEnv): Promise<unknown>;
330
- export declare function readGjcMonitorSnapshot(teamName: string, cwd?: string, env?: NodeJS.ProcessEnv): Promise<unknown>;
331
- export declare function writeGjcTaskApproval(teamName: string, taskId: string, approval: Record<string, unknown>, cwd?: string, env?: NodeJS.ProcessEnv): Promise<Record<string, unknown>>;
332
- export declare function readGjcTaskApproval(teamName: string, taskId: string, cwd?: string, env?: NodeJS.ProcessEnv): Promise<Record<string, unknown> | null>;
333
- export declare function writeGjcShutdownRequest(teamName: string, worker: string, requestedBy: string, cwd?: string, env?: NodeJS.ProcessEnv, requestId?: string, mode?: GjcTeamShutdownMode, requestedAt?: string): Promise<Record<string, unknown>>;
334
- export declare const readGjcShutdownAck: (teamName: string, worker: string, cwd?: string, env?: NodeJS.ProcessEnv) => Promise<Record<string, unknown> | null>;
335
- export declare function executeGjcTeamApiOperation(operation: string, input: Record<string, unknown>, cwd?: string, env?: NodeJS.ProcessEnv): Promise<unknown>;
336
- export declare function parseTeamLaunchArgs(argv: string[]): GjcTeamStartOptions;
@@ -1,168 +0,0 @@
1
- import type { GjcTeamConfig, GjcTeamMailboxMessage } from "./team-runtime";
2
- export type GjcTeamNotificationDeliveryState = "pending" | "sent" | "queued" | "deferred" | "failed" | "delivered" | "acknowledged";
3
- export type GjcTeamPaneAttemptResult = "sent" | "queued" | "deferred" | "failed";
4
- export type GjcTeamMailboxDeliveryTransportKind = "sdk" | "pane";
5
- export interface GjcTeamNotification {
6
- id: string;
7
- kind: "mailbox_message" | "worker_lifecycle" | "invalid_attempt";
8
- team_name: string;
9
- recipient: string;
10
- source: {
11
- type: "message" | "task" | "worker" | "event";
12
- id: string;
13
- };
14
- idempotency_key?: string;
15
- delivery_state: GjcTeamNotificationDeliveryState;
16
- pane_attempt_result?: GjcTeamPaneAttemptResult;
17
- pane_attempt_reason?: string;
18
- pane_attempt_at?: string;
19
- created_at: string;
20
- updated_at: string;
21
- replay_count: number;
22
- }
23
- export interface GjcTeamNotificationSummary {
24
- total: number;
25
- replay_eligible: number;
26
- by_state: Record<GjcTeamNotificationDeliveryState, number>;
27
- }
28
- export interface GjcTeamMailboxDeliveryInput {
29
- team_name: string;
30
- state_dir: string;
31
- config: GjcTeamConfig;
32
- notification: GjcTeamNotification;
33
- message: GjcTeamMailboxMessage;
34
- cwd: string;
35
- env: NodeJS.ProcessEnv;
36
- }
37
- export type GjcTeamMailboxDeliveryResult = {
38
- transport: "sdk";
39
- state: GjcTeamNotificationDeliveryState;
40
- reason?: string;
41
- } | {
42
- transport: "pane";
43
- state: GjcTeamPaneAttemptResult;
44
- reason?: string;
45
- };
46
- export interface GjcTeamMailboxDeliveryTransport {
47
- deliverMailboxMessage(input: GjcTeamMailboxDeliveryInput): Promise<GjcTeamMailboxDeliveryResult | null>;
48
- }
49
- export type GjcTeamTaskStatus = "pending" | "blocked" | "in_progress" | "completed" | "failed";
50
- export interface GjcTeamTaskClaim {
51
- owner: string;
52
- token: string;
53
- leased_until: string;
54
- }
55
- export type GjcTeamTaskCompletionEvidenceKind = "command" | "inspection" | "artifact";
56
- export type GjcTeamTaskCompletionEvidenceStatus = "passed" | "failed" | "not_run" | "verified" | "rejected";
57
- export interface GjcTeamTaskCompletionEvidenceItem {
58
- kind: GjcTeamTaskCompletionEvidenceKind;
59
- status: GjcTeamTaskCompletionEvidenceStatus;
60
- summary: string;
61
- command?: string;
62
- artifact?: string;
63
- location?: string;
64
- output?: string;
65
- }
66
- export interface GjcTeamTaskCompletionEvidence {
67
- summary: string;
68
- items: GjcTeamTaskCompletionEvidenceItem[];
69
- files?: string[];
70
- notes?: string;
71
- recorded_by: string;
72
- recorded_at: string;
73
- }
74
- export interface GjcTeamTask {
75
- id: string;
76
- subject: string;
77
- description: string;
78
- title: string;
79
- objective: string;
80
- status: GjcTeamTaskStatus;
81
- assignee?: string;
82
- owner?: string;
83
- result?: string;
84
- completion_evidence?: GjcTeamTaskCompletionEvidence;
85
- error?: string;
86
- blocked_by?: string[];
87
- depends_on?: string[];
88
- lane?: string;
89
- required_role?: string;
90
- allowed_roles?: string[];
91
- version: number;
92
- claim?: GjcTeamTaskClaim;
93
- created_at: string;
94
- updated_at: string;
95
- completed_at?: string;
96
- }
97
- export type GjcTeamTaskMetadataInput = Partial<Pick<GjcTeamTask, "owner" | "lane" | "required_role" | "allowed_roles" | "depends_on" | "blocked_by">>;
98
- export interface GjcTeamTaskWorker {
99
- id: string;
100
- role: string;
101
- agent_type: string;
102
- }
103
- export interface GjcTeamApiClaimResult {
104
- ok: boolean;
105
- task?: GjcTeamTask;
106
- worker_id?: string;
107
- claim_token?: string;
108
- reason?: string;
109
- }
110
- export type GjcTeamWorkerClaimSelection = {
111
- kind: "none";
112
- } | {
113
- kind: "exact";
114
- task: GjcTeamTask;
115
- claim: GjcTeamTaskClaim;
116
- } | {
117
- kind: "ambiguous";
118
- tasks: GjcTeamTask[];
119
- };
120
- export declare function selectCurrentClaimedTaskForWorker(tasks: readonly GjcTeamTask[], workerId: string): GjcTeamWorkerClaimSelection;
121
- export declare function findGjcTeamClaimedTaskForWorker(tasks: readonly GjcTeamTask[], workerId: string): GjcTeamTask | undefined;
122
- type EventAppender = (event: {
123
- type: string;
124
- task_id?: string;
125
- worker?: string;
126
- message: string;
127
- data?: Record<string, unknown>;
128
- }) => Promise<void>;
129
- /** The sole strict schema gate for persisted task and claim authority records. */
130
- export declare function isCanonicalPersistedGjcTeamTaskClaim(value: unknown): value is GjcTeamTaskClaim;
131
- export declare function isCanonicalPersistedGjcTeamTask(value: unknown, fileId?: string): value is GjcTeamTask;
132
- export declare function withGjcTeamMutationFence<T>(dir: string, fn: () => Promise<T>): Promise<T>;
133
- export declare function taskMetadataFromInput(input: Record<string, unknown>, includeOwner?: boolean): GjcTeamTaskMetadataInput;
134
- export declare function normalizeGjcTeamTask(raw: GjcTeamTask): GjcTeamTask;
135
- export declare function normalizeGjcTeamTaskCompletionEvidence(id: string, owner: string, input: unknown, recordedAt?: string): GjcTeamTaskCompletionEvidence;
136
- export declare function getGjcTeamTaskCompletionEvidenceFailure(task: GjcTeamTask): string | null;
137
- export declare const isGjcTeamTaskCompletionVerified: (task: GjcTeamTask) => boolean;
138
- export declare function readGjcTeamTasksFromDir(dir: string): Promise<GjcTeamTask[]>;
139
- declare const teamTaskMutationCapability: unique symbol;
140
- /**
141
- * This is intentionally structural only: callers can invoke methods supplied by
142
- * `withGjcTeamTaskMutation`, but cannot create an active capability. Each method
143
- * closes over a private brand and is revoked when that callback settles.
144
- */
145
- export interface GjcTeamTaskMutationCapability {
146
- create(subject: string, description: string, options: GjcTeamTaskMetadataInput): Promise<GjcTeamTask>;
147
- update(id: string, updates: Partial<Pick<GjcTeamTask, "subject" | "description" | "blocked_by" | "depends_on" | "lane" | "required_role" | "allowed_roles">>): Promise<GjcTeamTask>;
148
- claim(worker: GjcTeamTaskWorker, id?: string): Promise<GjcTeamApiClaimResult>;
149
- transition(id: string, status: GjcTeamTaskStatus, token?: string, workerId?: string, evidenceInput?: unknown): Promise<GjcTeamTask>;
150
- release(id: string, token: string, workerId: string): Promise<GjcTeamTask>;
151
- writeRecovered(task: GjcTeamTask): Promise<void>;
152
- }
153
- export declare function withGjcTeamTaskMutation<T>(store: GjcTeamTaskStore, fn: (capability: GjcTeamTaskMutationCapability) => Promise<T>): Promise<T>;
154
- export declare class GjcTeamTaskStore {
155
- #private;
156
- readonly dir: string;
157
- readonly appendEvent: EventAppender;
158
- constructor(dir: string, appendEvent: EventAppender);
159
- withMutationCapability<T>(capabilityBrand: typeof teamTaskMutationCapability, fn: (capability: GjcTeamTaskMutationCapability) => Promise<T>): Promise<T>;
160
- list(): Promise<GjcTeamTask[]>;
161
- read(id: string): Promise<GjcTeamTask>;
162
- create(subject: string, description: string, options: GjcTeamTaskMetadataInput): Promise<GjcTeamTask>;
163
- update(id: string, updates: Partial<Pick<GjcTeamTask, "subject" | "description" | "blocked_by" | "depends_on" | "lane" | "required_role" | "allowed_roles">>): Promise<GjcTeamTask>;
164
- claim(worker: GjcTeamTaskWorker, id?: string): Promise<GjcTeamApiClaimResult>;
165
- transition(id: string, status: GjcTeamTaskStatus, token?: string, workerId?: string, evidenceInput?: unknown): Promise<GjcTeamTask>;
166
- release(id: string, token: string, workerId: string): Promise<GjcTeamTask>;
167
- }
168
- export {};
@@ -1,43 +0,0 @@
1
- import { type WorkerHeartbeatFile } from "./team-runtime";
2
- export interface GjcTeamWorkerIdentity {
3
- teamName: string;
4
- workerId: string;
5
- }
6
- /** Resolves the team identity injected into a worker pane by `gjc team` startup. */
7
- export declare function resolveGjcTeamWorkerIdentity(env?: NodeJS.ProcessEnv): GjcTeamWorkerIdentity | undefined;
8
- /** Refresh cadence derived from the leader's stale window; `0` disables publishing. */
9
- export declare function resolveGjcTeamWorkerHeartbeatIntervalMs(env?: NodeJS.ProcessEnv): number;
10
- /**
11
- * Publish one runtime-owned heartbeat for the worker this process is running as.
12
- * Returns `undefined` when the process is not a team worker.
13
- *
14
- * `turn_count` and process-incarnation metadata are merged under the same
15
- * mutation fence used by CLI heartbeat updates.
16
- */
17
- export declare function writeGjcTeamWorkerRuntimeHeartbeat(cwd?: string, env?: NodeJS.ProcessEnv): Promise<WorkerHeartbeatFile | undefined>;
18
- export interface GjcTeamWorkerHeartbeatReporterOptions {
19
- write: () => Promise<void>;
20
- intervalMs: number;
21
- }
22
- /**
23
- * Publishes a worker heartbeat while a turn is in flight.
24
- *
25
- * Writes never overlap; a slow or failing write is logged and skipped rather
26
- * than queued, because only the most recent record matters. The timer is
27
- * unreferenced so it can never hold the process open.
28
- */
29
- export declare class GjcTeamWorkerHeartbeatReporter {
30
- #private;
31
- constructor(options: GjcTeamWorkerHeartbeatReporterOptions);
32
- /** Reporter for the current process, or `undefined` when it is not a team worker. */
33
- static forProcess(cwd: () => string, env?: NodeJS.ProcessEnv): GjcTeamWorkerHeartbeatReporter | undefined;
34
- get isRunning(): boolean;
35
- /** Publish immediately, then keep publishing until {@link stop} or {@link dispose}. */
36
- start(): void;
37
- /** Stop periodic publishing after one final record, so the idle stamp is fresh. */
38
- stop(): void;
39
- /** Await the write in flight, if any. */
40
- flush(): Promise<void>;
41
- /** Permanently stop publishing. Idempotent. */
42
- dispose(): void;
43
- }
@@ -1,92 +0,0 @@
1
- import { type StateWriterOptions } from "./state-writer";
2
- export type GjcTeamWorkerMemoryGuardState = "idle" | "advisory" | "retrying" | "checkpointed" | "replaced" | "blocked";
3
- export type GjcTeamWorkerMemoryGuardCheckpointKind = "clean" | "eligible" | "protected_only" | "conflicted" | "git_error";
4
- export type GjcTeamWorkerMemoryGuardPidProbe = {
5
- kind: "live";
6
- start_time: string;
7
- } | {
8
- kind: "absent";
9
- } | {
10
- kind: "unverifiable";
11
- reason: string;
12
- };
13
- export interface GjcTeamWorkerMemoryGuardCheckpoint {
14
- kind: GjcTeamWorkerMemoryGuardCheckpointKind;
15
- files: string[];
16
- head?: string | null;
17
- commit?: string | null;
18
- recorded_at: string;
19
- }
20
- export interface GjcTeamWorkerMemoryGuardReplacement {
21
- old_pane_id?: string;
22
- new_pane_id?: string;
23
- recorded_at: string;
24
- }
25
- export interface GjcTeamWorkerMemoryGuardLedger {
26
- schema_version: 1;
27
- worker_id: string;
28
- platform: string;
29
- state: GjcTeamWorkerMemoryGuardState;
30
- automatic_action_allowed: boolean;
31
- retry_count: number;
32
- retry_limit: number;
33
- current_task_id?: string;
34
- last_incident_id?: string;
35
- last_reason?: string;
36
- last_pid_probe?: GjcTeamWorkerMemoryGuardPidProbe;
37
- last_checkpoint?: GjcTeamWorkerMemoryGuardCheckpoint;
38
- last_replacement?: GjcTeamWorkerMemoryGuardReplacement;
39
- updated_at: string;
40
- }
41
- export interface GjcTeamWorkerMemoryGuardSelectionCandidate {
42
- worker_id: string;
43
- platform: string;
44
- excess_bytes: number;
45
- retry_count: number;
46
- retry_limit: number;
47
- blocked?: boolean;
48
- current_task_id?: string;
49
- }
50
- export interface GjcTeamWorkerMemoryGuardSelection {
51
- worker_id: string;
52
- excess_bytes: number;
53
- retry_count: number;
54
- current_task_id?: string;
55
- }
56
- export declare function workerMemoryGuardLedgerPath(dir: string, workerId: string): string;
57
- export declare function normalizeGjcTeamWorkerMemoryGuardPidProbe(value: unknown): GjcTeamWorkerMemoryGuardPidProbe | undefined;
58
- export declare function isCanonicalGjcTeamWorkerMemoryGuardCheckpoint(value: unknown): value is GjcTeamWorkerMemoryGuardCheckpoint;
59
- export declare function isCanonicalGjcTeamWorkerMemoryGuardReplacement(value: unknown): value is GjcTeamWorkerMemoryGuardReplacement;
60
- export declare function isCanonicalGjcTeamWorkerMemoryGuardPidProbe(value: unknown): value is GjcTeamWorkerMemoryGuardPidProbe;
61
- export declare function isCanonicalGjcTeamWorkerMemoryGuardLedger(value: unknown): value is GjcTeamWorkerMemoryGuardLedger;
62
- export declare function createInitialGjcTeamWorkerMemoryGuardLedger(input: {
63
- workerId: string;
64
- platform: string;
65
- now: string;
66
- retryLimit?: number;
67
- }): GjcTeamWorkerMemoryGuardLedger;
68
- export declare function selectGjcTeamWorkerMemoryGuardCandidate(candidates: readonly GjcTeamWorkerMemoryGuardSelectionCandidate[]): GjcTeamWorkerMemoryGuardSelection | undefined;
69
- export type TeamWorkerMemoryGuardAction = "advisory" | "replace" | "blocked";
70
- export type TeamWorkerMemoryGuardResult = "noop" | "scheduled" | "succeeded" | "failed" | "blocked";
71
- export interface TeamWorkerMemoryGuardLedgerEntry {
72
- schema_version: 1;
73
- recorded_at: string;
74
- incident_id: string;
75
- team_name: string;
76
- worker_id: string;
77
- task_id: string;
78
- claim_token: string;
79
- attempt: number;
80
- platform: NodeJS.Platform;
81
- action: TeamWorkerMemoryGuardAction;
82
- result: TeamWorkerMemoryGuardResult;
83
- reason: string;
84
- }
85
- export declare function isCanonicalTeamWorkerMemoryGuardLedgerEntry(value: unknown): value is TeamWorkerMemoryGuardLedgerEntry;
86
- export declare function teamWorkerMemoryGuardDir(workerDirPath: string): string;
87
- export declare function teamWorkerMemoryGuardLedgerPath(workerDirPath: string): string;
88
- export declare function canMutateTeamWorkerMemoryGuard(platform: NodeJS.Platform): boolean;
89
- export declare function advisoryReasonForTeamWorkerMemoryGuard(platform: NodeJS.Platform): string | undefined;
90
- export declare function appendTeamWorkerMemoryGuardLedgerEntry(workerDirPath: string, entry: TeamWorkerMemoryGuardLedgerEntry, options?: StateWriterOptions): Promise<string>;
91
- export declare function readTeamWorkerMemoryGuardLedger(workerDirPath: string): Promise<TeamWorkerMemoryGuardLedgerEntry[]>;
92
- export declare function nextTeamWorkerMemoryGuardAttempt(entries: readonly TeamWorkerMemoryGuardLedgerEntry[], incidentId: string): number;