@farmslot/protocol 0.5.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 (227) hide show
  1. package/CHANGELOG.md +7 -0
  2. package/README.md +213 -0
  3. package/dist/agent-roles.d.ts +15 -0
  4. package/dist/agent-roles.d.ts.map +1 -0
  5. package/dist/agent-roles.js +101 -0
  6. package/dist/agent-roles.js.map +1 -0
  7. package/dist/events.d.ts +265 -0
  8. package/dist/events.d.ts.map +1 -0
  9. package/dist/events.js +72 -0
  10. package/dist/events.js.map +1 -0
  11. package/dist/frames.d.ts +29 -0
  12. package/dist/frames.d.ts.map +1 -0
  13. package/dist/frames.js +15 -0
  14. package/dist/frames.js.map +1 -0
  15. package/dist/github-ref.d.ts +15 -0
  16. package/dist/github-ref.d.ts.map +1 -0
  17. package/dist/github-ref.js +30 -0
  18. package/dist/github-ref.js.map +1 -0
  19. package/dist/index.d.ts +14 -0
  20. package/dist/index.d.ts.map +1 -0
  21. package/dist/index.js +14 -0
  22. package/dist/index.js.map +1 -0
  23. package/dist/methods/auth.d.ts +46 -0
  24. package/dist/methods/auth.d.ts.map +1 -0
  25. package/dist/methods/auth.js +5 -0
  26. package/dist/methods/auth.js.map +1 -0
  27. package/dist/methods/backlog.d.ts +63 -0
  28. package/dist/methods/backlog.d.ts.map +1 -0
  29. package/dist/methods/backlog.js +12 -0
  30. package/dist/methods/backlog.js.map +1 -0
  31. package/dist/methods/chat.d.ts +290 -0
  32. package/dist/methods/chat.d.ts.map +1 -0
  33. package/dist/methods/chat.js +22 -0
  34. package/dist/methods/chat.js.map +1 -0
  35. package/dist/methods/config.d.ts +81 -0
  36. package/dist/methods/config.d.ts.map +1 -0
  37. package/dist/methods/config.js +16 -0
  38. package/dist/methods/config.js.map +1 -0
  39. package/dist/methods/copilot.d.ts +23 -0
  40. package/dist/methods/copilot.d.ts.map +1 -0
  41. package/dist/methods/copilot.js +5 -0
  42. package/dist/methods/copilot.js.map +1 -0
  43. package/dist/methods/decisions.d.ts +9 -0
  44. package/dist/methods/decisions.d.ts.map +1 -0
  45. package/dist/methods/decisions.js +2 -0
  46. package/dist/methods/decisions.js.map +1 -0
  47. package/dist/methods/diagnostics.d.ts +8 -0
  48. package/dist/methods/diagnostics.d.ts.map +1 -0
  49. package/dist/methods/diagnostics.js +2 -0
  50. package/dist/methods/diagnostics.js.map +1 -0
  51. package/dist/methods/dispatch.d.ts +198 -0
  52. package/dist/methods/dispatch.d.ts.map +1 -0
  53. package/dist/methods/dispatch.js +12 -0
  54. package/dist/methods/dispatch.js.map +1 -0
  55. package/dist/methods/eval.d.ts +119 -0
  56. package/dist/methods/eval.d.ts.map +1 -0
  57. package/dist/methods/eval.js +9 -0
  58. package/dist/methods/eval.js.map +1 -0
  59. package/dist/methods/fleet.d.ts +86 -0
  60. package/dist/methods/fleet.d.ts.map +1 -0
  61. package/dist/methods/fleet.js +9 -0
  62. package/dist/methods/fleet.js.map +1 -0
  63. package/dist/methods/fs.d.ts +42 -0
  64. package/dist/methods/fs.d.ts.map +1 -0
  65. package/dist/methods/fs.js +2 -0
  66. package/dist/methods/fs.js.map +1 -0
  67. package/dist/methods/git.d.ts +103 -0
  68. package/dist/methods/git.d.ts.map +1 -0
  69. package/dist/methods/git.js +2 -0
  70. package/dist/methods/git.js.map +1 -0
  71. package/dist/methods/index.d.ts +25 -0
  72. package/dist/methods/index.d.ts.map +1 -0
  73. package/dist/methods/index.js +26 -0
  74. package/dist/methods/index.js.map +1 -0
  75. package/dist/methods/intelligence.d.ts +218 -0
  76. package/dist/methods/intelligence.d.ts.map +1 -0
  77. package/dist/methods/intelligence.js +20 -0
  78. package/dist/methods/intelligence.js.map +1 -0
  79. package/dist/methods/nodes.d.ts +22 -0
  80. package/dist/methods/nodes.d.ts.map +1 -0
  81. package/dist/methods/nodes.js +2 -0
  82. package/dist/methods/nodes.js.map +1 -0
  83. package/dist/methods/pr.d.ts +75 -0
  84. package/dist/methods/pr.d.ts.map +1 -0
  85. package/dist/methods/pr.js +2 -0
  86. package/dist/methods/pr.js.map +1 -0
  87. package/dist/methods/registry.d.ts +196 -0
  88. package/dist/methods/registry.d.ts.map +1 -0
  89. package/dist/methods/registry.js +229 -0
  90. package/dist/methods/registry.js.map +1 -0
  91. package/dist/methods/resources.d.ts +89 -0
  92. package/dist/methods/resources.d.ts.map +1 -0
  93. package/dist/methods/resources.js +13 -0
  94. package/dist/methods/resources.js.map +1 -0
  95. package/dist/methods/run.d.ts +398 -0
  96. package/dist/methods/run.d.ts.map +1 -0
  97. package/dist/methods/run.js +34 -0
  98. package/dist/methods/run.js.map +1 -0
  99. package/dist/methods/search.d.ts +19 -0
  100. package/dist/methods/search.d.ts.map +1 -0
  101. package/dist/methods/search.js +2 -0
  102. package/dist/methods/search.js.map +1 -0
  103. package/dist/methods/slot.d.ts +192 -0
  104. package/dist/methods/slot.d.ts.map +1 -0
  105. package/dist/methods/slot.js +21 -0
  106. package/dist/methods/slot.js.map +1 -0
  107. package/dist/methods/task.d.ts +18 -0
  108. package/dist/methods/task.d.ts.map +1 -0
  109. package/dist/methods/task.js +2 -0
  110. package/dist/methods/task.js.map +1 -0
  111. package/dist/methods/terminal.d.ts +66 -0
  112. package/dist/methods/terminal.d.ts.map +1 -0
  113. package/dist/methods/terminal.js +2 -0
  114. package/dist/methods/terminal.js.map +1 -0
  115. package/dist/methods/tmux.d.ts +108 -0
  116. package/dist/methods/tmux.d.ts.map +1 -0
  117. package/dist/methods/tmux.js +3 -0
  118. package/dist/methods/tmux.js.map +1 -0
  119. package/dist/methods/workspace.d.ts +11 -0
  120. package/dist/methods/workspace.d.ts.map +1 -0
  121. package/dist/methods/workspace.js +2 -0
  122. package/dist/methods/workspace.js.map +1 -0
  123. package/dist/methods.d.ts +2 -0
  124. package/dist/methods.d.ts.map +1 -0
  125. package/dist/methods.js +3 -0
  126. package/dist/methods.js.map +1 -0
  127. package/dist/recipe-compat.d.ts +89 -0
  128. package/dist/recipe-compat.d.ts.map +1 -0
  129. package/dist/recipe-compat.js +977 -0
  130. package/dist/recipe-compat.js.map +1 -0
  131. package/dist/run-family-readiness.d.ts +31 -0
  132. package/dist/run-family-readiness.d.ts.map +1 -0
  133. package/dist/run-family-readiness.js +223 -0
  134. package/dist/run-family-readiness.js.map +1 -0
  135. package/dist/signal.d.ts +14 -0
  136. package/dist/signal.d.ts.map +1 -0
  137. package/dist/signal.js +4 -0
  138. package/dist/signal.js.map +1 -0
  139. package/dist/step-io.d.ts +277 -0
  140. package/dist/step-io.d.ts.map +1 -0
  141. package/dist/step-io.js +26 -0
  142. package/dist/step-io.js.map +1 -0
  143. package/dist/surfaces.d.ts +36 -0
  144. package/dist/surfaces.d.ts.map +1 -0
  145. package/dist/surfaces.js +392 -0
  146. package/dist/surfaces.js.map +1 -0
  147. package/dist/tmux-worker-watchlist.d.ts +36 -0
  148. package/dist/tmux-worker-watchlist.d.ts.map +1 -0
  149. package/dist/tmux-worker-watchlist.js +82 -0
  150. package/dist/tmux-worker-watchlist.js.map +1 -0
  151. package/dist/types/agents.d.ts +59 -0
  152. package/dist/types/agents.d.ts.map +1 -0
  153. package/dist/types/agents.js +10 -0
  154. package/dist/types/agents.js.map +1 -0
  155. package/dist/types/backlog.d.ts +66 -0
  156. package/dist/types/backlog.d.ts.map +1 -0
  157. package/dist/types/backlog.js +13 -0
  158. package/dist/types/backlog.js.map +1 -0
  159. package/dist/types/chat.d.ts +203 -0
  160. package/dist/types/chat.d.ts.map +1 -0
  161. package/dist/types/chat.js +19 -0
  162. package/dist/types/chat.js.map +1 -0
  163. package/dist/types/common.d.ts +13 -0
  164. package/dist/types/common.d.ts.map +1 -0
  165. package/dist/types/common.js +3 -0
  166. package/dist/types/common.js.map +1 -0
  167. package/dist/types/config.d.ts +154 -0
  168. package/dist/types/config.d.ts.map +1 -0
  169. package/dist/types/config.js +2 -0
  170. package/dist/types/config.js.map +1 -0
  171. package/dist/types/dispatch.d.ts +77 -0
  172. package/dist/types/dispatch.d.ts.map +1 -0
  173. package/dist/types/dispatch.js +2 -0
  174. package/dist/types/dispatch.js.map +1 -0
  175. package/dist/types/evals.d.ts +341 -0
  176. package/dist/types/evals.d.ts.map +1 -0
  177. package/dist/types/evals.js +459 -0
  178. package/dist/types/evals.js.map +1 -0
  179. package/dist/types/family.d.ts +163 -0
  180. package/dist/types/family.d.ts.map +1 -0
  181. package/dist/types/family.js +2 -0
  182. package/dist/types/family.js.map +1 -0
  183. package/dist/types/index.d.ts +17 -0
  184. package/dist/types/index.d.ts.map +1 -0
  185. package/dist/types/index.js +17 -0
  186. package/dist/types/index.js.map +1 -0
  187. package/dist/types/recipes.d.ts +94 -0
  188. package/dist/types/recipes.d.ts.map +1 -0
  189. package/dist/types/recipes.js +7 -0
  190. package/dist/types/recipes.js.map +1 -0
  191. package/dist/types/resources.d.ts +110 -0
  192. package/dist/types/resources.d.ts.map +1 -0
  193. package/dist/types/resources.js +2 -0
  194. package/dist/types/resources.js.map +1 -0
  195. package/dist/types/reviews.d.ts +85 -0
  196. package/dist/types/reviews.d.ts.map +1 -0
  197. package/dist/types/reviews.js +2 -0
  198. package/dist/types/reviews.js.map +1 -0
  199. package/dist/types/runs.d.ts +1105 -0
  200. package/dist/types/runs.d.ts.map +1 -0
  201. package/dist/types/runs.js +297 -0
  202. package/dist/types/runs.js.map +1 -0
  203. package/dist/types/slots.d.ts +108 -0
  204. package/dist/types/slots.d.ts.map +1 -0
  205. package/dist/types/slots.js +2 -0
  206. package/dist/types/slots.js.map +1 -0
  207. package/dist/types/task.d.ts +37 -0
  208. package/dist/types/task.d.ts.map +1 -0
  209. package/dist/types/task.js +2 -0
  210. package/dist/types/task.js.map +1 -0
  211. package/dist/types/terminal.d.ts +12 -0
  212. package/dist/types/terminal.d.ts.map +1 -0
  213. package/dist/types/terminal.js +2 -0
  214. package/dist/types/terminal.js.map +1 -0
  215. package/dist/types/workspace.d.ts +44 -0
  216. package/dist/types/workspace.d.ts.map +1 -0
  217. package/dist/types/workspace.js +2 -0
  218. package/dist/types/workspace.js.map +1 -0
  219. package/dist/types.d.ts +2 -0
  220. package/dist/types.d.ts.map +1 -0
  221. package/dist/types.js +3 -0
  222. package/dist/types.js.map +1 -0
  223. package/dist/version.d.ts +2 -0
  224. package/dist/version.d.ts.map +1 -0
  225. package/dist/version.js +7 -0
  226. package/dist/version.js.map +1 -0
  227. package/package.json +109 -0
package/CHANGELOG.md ADDED
@@ -0,0 +1,7 @@
1
+ # Changelog
2
+
3
+ All notable changes to `@farmslot/protocol` are tracked here.
4
+
5
+ ## Unreleased
6
+
7
+ - Active-development baseline; add user-facing changes here before release or package publication.
package/README.md ADDED
@@ -0,0 +1,213 @@
1
+ # @farmslot/protocol
2
+
3
+ Shared TypeScript contract for Farmslot gateway, nodes, recipes, runners, and
4
+ artifact packages.
5
+
6
+ This package is intentionally small at runtime: it exports protocol constants,
7
+ TypeScript types, and validation helpers. It does **not** execute recipes, talk
8
+ to browsers/devices, or contain project-specific actions.
9
+
10
+ ## Canonical documents
11
+
12
+ The npm package is a consumable API surface. The source-of-truth architecture is
13
+ published on the Farmslot docs site:
14
+
15
+ - [Recipe Protocol v1](https://farmslot.io/docs/reference/recipe-protocol-v1) — canonical recipe schema, action vocabulary, graph rules, artifacts, and quality rules.
16
+ - [Recipe Runner Protocol](https://farmslot.io/docs/reference/recipe-runner-protocol) — runner-facing manifest and artifact guidance.
17
+ - [Recipe Composition Quality](https://farmslot.io/docs/reference/recipe-composition-quality) — how to keep flows concise, reusable, and reviewable.
18
+
19
+ If this README conflicts with the public Recipe Protocol v1 reference, the protocol reference wins.
20
+
21
+ ## Install
22
+
23
+ ```bash
24
+ yarn add @farmslot/protocol
25
+ # or
26
+ npm install @farmslot/protocol
27
+ ```
28
+
29
+ ## Main exports
30
+
31
+ ```ts
32
+ import {
33
+ OFFICIAL_RECIPE_ACTIONS,
34
+ RECIPE_PROTOCOL_SCHEMA_VERSION,
35
+ getRecipeActionManifestActionNames,
36
+ getRecipeWorkflowActions,
37
+ validateArtifactManifestDocument,
38
+ validateRecipeActionManifestDocument,
39
+ validateRecipeArtifactPackage,
40
+ validateRecipeDocument,
41
+ validateRecipeWithManifest,
42
+ type OfficialActionName,
43
+ type RecipeActionManifestDocument,
44
+ } from '@farmslot/protocol';
45
+ ```
46
+
47
+ ## Public API map
48
+
49
+ | Import path | Use for |
50
+ | --------------------------------- | -------------------------------------------------------------------------------------------------- |
51
+ | `@farmslot/protocol` | Preferred root import for common constants, validators, helpers, and shared types. |
52
+ | `@farmslot/protocol/types` | Compatibility import for all shared domain data contracts. |
53
+ | `@farmslot/protocol/types/*.js` | Focused domain imports such as runs, slots, reviews, family observability, resources, and recipes. |
54
+ | `@farmslot/protocol/methods` | Compatibility import for all Gateway RPC method contracts. |
55
+ | `@farmslot/protocol/methods/*.js` | Focused RPC imports for one method family such as run, slot, fleet, dispatch, or chat. |
56
+
57
+ Prefer focused domain imports when they make ownership clearer. Keep root exports stable for application ergonomics and backwards compatibility.
58
+
59
+ Key responsibilities:
60
+
61
+ - define the stable Recipe Protocol v1 action vocabulary;
62
+ - validate recipe documents and workflow graph shape;
63
+ - validate action manifests declared by project runners;
64
+ - validate recipe usage against a manifest;
65
+ - validate runner artifact packages (`recipe.json`, `summary.json`, `trace.json`, `artifact-manifest.json`);
66
+ - share gateway/node/run family types used by Farmslot apps.
67
+
68
+ ## Source layout
69
+
70
+ The protocol package is organized by contract ownership:
71
+
72
+ | Path | Owns |
73
+ | ------------------------------ | ------------------------------------------------------------------------------------ |
74
+ | `src/index.ts` | Package root export surface. Keep it stable and intentional. |
75
+ | `src/version.ts` | Node↔Gateway protocol compatibility version. |
76
+ | `src/frames.ts` | WebSocket request/response/event frame shapes and binary relay magic bytes. |
77
+ | `src/events.ts` | Gateway event names and event payload map. |
78
+ | `src/methods/registry.ts` | Canonical RPC method string registry. |
79
+ | `src/methods/*.ts` | Domain-specific RPC params/results and typed method-name maps. |
80
+ | `src/types/*.ts` | Domain-specific data contracts for runs, slots, recipes, reviews, resources, etc. |
81
+ | `src/types/index.ts` | Domain type barrel for compatibility; new code should still edit the owner file. |
82
+ | `src/recipe-compat.ts` | Recipe Protocol v1 validation, manifest validation, and artifact-package validation. |
83
+ | `src/step-io.ts` | Worker/runner step IO and artifact reference contracts. |
84
+ | `src/agent-roles.ts` | Agent role labels/window/ranking helpers shared by Gateway and clients. |
85
+ | `src/github-ref.ts` | Canonical GitHub PR ref parsing/formatting helpers. |
86
+ | `src/run-family-readiness.ts` | Shared run-family readiness projection helpers. |
87
+ | `src/surfaces.ts` | Command Center surface registry used by safe chat/tool routing. |
88
+ | `src/tmux-worker-watchlist.ts` | Shared tmux worker watchlist predicates. |
89
+
90
+ Compatibility barrels (`src/methods.ts`, `src/types.ts`, `src/methods/index.ts`,
91
+ and `src/types/index.ts`) are allowed because this is a consumed package. They
92
+ should only re-export owner modules; do not put implementation logic in barrels.
93
+
94
+ ## Export and versioning rules
95
+
96
+ - Public package imports must continue to work for:
97
+ - `@farmslot/protocol`
98
+ - `@farmslot/protocol/types`
99
+ - `@farmslot/protocol/methods`
100
+ - domain imports such as `@farmslot/protocol/types/runs.js`.
101
+ - Add new fields as optional unless every caller is upgraded in the same PR.
102
+ - Bump `PROTOCOL_VERSION` in `src/version.ts` when node↔gateway methods, events,
103
+ binary frames, or required payload fields change.
104
+ - Keep `package.json` `exports` aligned with any new domain directories.
105
+ - Do not export service internals, UI-only state, or project-specific concepts.
106
+
107
+ ## Recipe validation
108
+
109
+ ```ts
110
+ import { validateRecipeDocument } from '@farmslot/protocol';
111
+
112
+ const result = validateRecipeDocument(recipeJson);
113
+ if (result.status === 'invalid') {
114
+ throw new Error(result.findings.map((finding) => finding.message).join('\n'));
115
+ }
116
+ ```
117
+
118
+ `validateRecipeDocument` checks protocol-level structure. It does not prove that
119
+ a project runner can execute every action. Use `validateRecipeWithManifest` for
120
+ that.
121
+
122
+ ## Action manifest validation
123
+
124
+ Every runner publishes a manifest describing what it can actually execute.
125
+ Official actions come from `OFFICIAL_RECIPE_ACTIONS`; project actions must be
126
+ namespaced, for example `example.trade.place_order` or `checkout.ensure_cart`.
127
+
128
+ ```ts
129
+ import {
130
+ validateRecipeActionManifestDocument,
131
+ validateRecipeWithManifest,
132
+ type RecipeActionManifestDocument,
133
+ } from '@farmslot/protocol';
134
+
135
+ const manifest: RecipeActionManifestDocument = {
136
+ runner_protocol_version: 1,
137
+ action_registry_version: 1,
138
+ supported_official_actions: ['command', 'wait', 'end'],
139
+ custom_actions: [
140
+ {
141
+ name: 'example.echo',
142
+ description: 'Echoes a message for adapter smoke tests.',
143
+ schema: { type: 'object', required: ['message'] },
144
+ },
145
+ ],
146
+ };
147
+
148
+ const manifestResult = validateRecipeActionManifestDocument(manifest);
149
+ const recipeResult = validateRecipeWithManifest(recipeJson, manifest);
150
+ ```
151
+
152
+ A valid manifest must stay honest: declare only actions the runner implements,
153
+ and keep custom actions durable enough to reuse across tasks.
154
+
155
+ ## Artifact package validation
156
+
157
+ Recipe runs should emit a portable evidence package. Use protocol validation
158
+ before a gateway or reviewer trusts the result.
159
+
160
+ ```ts
161
+ import { validateRecipeArtifactPackage } from '@farmslot/protocol';
162
+
163
+ const result = validateRecipeArtifactPackage({
164
+ manifest: artifactManifestJson,
165
+ artifactPaths: ['recipe.json', 'summary.json', 'trace.json', 'artifact-manifest.json'],
166
+ recipe: recipeJson,
167
+ });
168
+ ```
169
+
170
+ ## Maintenance rules
171
+
172
+ These rules keep the public contract small and stable:
173
+
174
+ 1. **Protocol owns vocabulary, not project behavior.** Do not add wallet, Perps,
175
+ checkout, or app-specific actions to the official action list.
176
+ 2. **Parameterize before multiplying.** Prefer one configurable action/flow over
177
+ many near-duplicates.
178
+ 3. **Fail closed.** Unknown actions, undeclared preconditions, invalid artifact
179
+ paths, and malformed manifests should produce validation errors, not warnings
180
+ that execution ignores.
181
+ 4. **No fabricated proof.** Protocol fields must support real user-visible proof;
182
+ setup can prepare fixtures, but proof-phase recipes must not fake UI/app state.
183
+ 5. **Artifacts must be portable.** Paths are relative, secrets are redacted, and
184
+ summaries/traces must be useful outside the original machine.
185
+ 6. **Docs and types move together.** Any field or rule change must update
186
+ the public Recipe Protocol v1 reference, tests, and exported types in the same PR.
187
+ 7. **Tests cover every domain contract.** Domain files need focused tests, and
188
+ package quality must run the full `src/**/*.test.ts` set.
189
+ 8. **Barrels are compatibility only.** Add logic to `src/methods/*`,
190
+ `src/types/*`, or focused helper owners, never to compatibility barrels.
191
+
192
+ ## Change checklist
193
+
194
+ Before merging protocol changes:
195
+
196
+ 1. Identify the owner module (`src/types/*`, `src/methods/*`, or focused helper).
197
+ 2. Update the owner types/helpers and colocated tests.
198
+ 3. Update compatibility exports only if a new public owner module is introduced.
199
+ 4. Update canonical docs when Recipe Protocol v1, runner artifacts, or public APIs change.
200
+ 5. Run full protocol quality and any affected package/service quality.
201
+
202
+ ## Local quality
203
+
204
+ From the Farmslot repository root:
205
+
206
+ ```bash
207
+ yarn workspace @farmslot/protocol quality
208
+ # or, for protocol tests through Command Center wiring:
209
+ yarn test:protocol
210
+ ```
211
+
212
+ Do not publish a protocol version unless these pass and the canonical docs match
213
+ the exported API.
@@ -0,0 +1,15 @@
1
+ import { AGENT_ROLES, type AgentRole, type FlowType } from './types.js';
2
+ export { AGENT_ROLES };
3
+ export declare const AGENT_ROLE_LABELS: Record<AgentRole, string>;
4
+ export declare const AGENT_ROLE_SHORT_LABELS: Record<AgentRole, string>;
5
+ export declare const AGENT_ROLE_WINDOWS: Record<AgentRole, string | null>;
6
+ export declare const AGENT_ROLE_RANKS: Record<AgentRole, number>;
7
+ export declare function primaryRoleForFlow(flowType?: FlowType | string | null): AgentRole;
8
+ export declare function contextIdFor(role: AgentRole): string;
9
+ export declare function agentRoleLabel(role: AgentRole): string;
10
+ export declare function agentRoleShortLabel(role: AgentRole): string;
11
+ export declare function agentRoleWindow(role: AgentRole): string | null;
12
+ export declare function agentRoleRank(role: AgentRole): number;
13
+ export declare function signalFileForTask(taskFile?: string | null): string | null;
14
+ export declare function agentContextTaskFile(taskFile?: string | null, activeTaskFile?: string | null): string | null;
15
+ //# sourceMappingURL=agent-roles.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"agent-roles.d.ts","sourceRoot":"","sources":["../src/agent-roles.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,KAAK,SAAS,EAAE,KAAK,QAAQ,EAAE,MAAM,YAAY,CAAC;AAExE,OAAO,EAAE,WAAW,EAAE,CAAC;AAEvB,eAAO,MAAM,iBAAiB,EAAE,MAAM,CAAC,SAAS,EAAE,MAAM,CAQvD,CAAC;AAEF,eAAO,MAAM,uBAAuB,EAAE,MAAM,CAAC,SAAS,EAAE,MAAM,CAQ7D,CAAC;AAEF,eAAO,MAAM,kBAAkB,EAAE,MAAM,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI,CAQ/D,CAAC;AAKF,eAAO,MAAM,gBAAgB,EAAE,MAAM,CAAC,SAAS,EAAE,MAAM,CAQtD,CAAC;AAEF,wBAAgB,kBAAkB,CAAC,QAAQ,CAAC,EAAE,QAAQ,GAAG,MAAM,GAAG,IAAI,GAAG,SAAS,CAQjF;AAED,wBAAgB,YAAY,CAAC,IAAI,EAAE,SAAS,GAAG,MAAM,CAEpD;AAED,wBAAgB,cAAc,CAAC,IAAI,EAAE,SAAS,GAAG,MAAM,CAEtD;AAED,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,SAAS,GAAG,MAAM,CAE3D;AAED,wBAAgB,eAAe,CAAC,IAAI,EAAE,SAAS,GAAG,MAAM,GAAG,IAAI,CAE9D;AAED,wBAAgB,aAAa,CAAC,IAAI,EAAE,SAAS,GAAG,MAAM,CASrD;AAED,wBAAgB,iBAAiB,CAAC,QAAQ,CAAC,EAAE,MAAM,GAAG,IAAI,GAAG,MAAM,GAAG,IAAI,CAazE;AAED,wBAAgB,oBAAoB,CAClC,QAAQ,CAAC,EAAE,MAAM,GAAG,IAAI,EACxB,cAAc,CAAC,EAAE,MAAM,GAAG,IAAI,GAC7B,MAAM,GAAG,IAAI,CAEf"}
@@ -0,0 +1,101 @@
1
+ import { AGENT_ROLES } from './types.js';
2
+ export { AGENT_ROLES };
3
+ export const AGENT_ROLE_LABELS = {
4
+ primary: 'Primary',
5
+ dev: 'Dev',
6
+ 'fix-bug': 'Bugfix',
7
+ review: 'Review',
8
+ 'self-review': 'Self-review',
9
+ 'self-review-fix': 'Self-review fix',
10
+ 'ci-fix': 'CI fix',
11
+ };
12
+ export const AGENT_ROLE_SHORT_LABELS = {
13
+ primary: 'MAIN',
14
+ dev: 'DEV',
15
+ 'fix-bug': 'BUG',
16
+ review: 'REV',
17
+ 'self-review': 'S-REV',
18
+ 'self-review-fix': 'S-FIX',
19
+ 'ci-fix': 'CI',
20
+ };
21
+ export const AGENT_ROLE_WINDOWS = {
22
+ primary: null,
23
+ dev: 'dev',
24
+ 'fix-bug': 'bugfix',
25
+ review: 'review',
26
+ 'self-review': 'self-review',
27
+ 'self-review-fix': null, // runs in the primary worker's window, not a separate one
28
+ 'ci-fix': 'ci-fix',
29
+ };
30
+ // Rank groups keep the flow-owned worker first, then optional review/fix loops
31
+ // in the order they are normally spawned. Gaps leave room for new intermediate
32
+ // roles without reordering persisted/UI state.
33
+ export const AGENT_ROLE_RANKS = {
34
+ primary: 0,
35
+ dev: 1,
36
+ 'fix-bug': 2,
37
+ review: 3,
38
+ 'self-review': 10,
39
+ 'self-review-fix': 20,
40
+ 'ci-fix': 30,
41
+ };
42
+ export function primaryRoleForFlow(flowType) {
43
+ if (flowType === 'dev')
44
+ return 'dev';
45
+ if (flowType === 'fix-bug')
46
+ return 'fix-bug';
47
+ if (flowType === 'review-pr')
48
+ return 'review';
49
+ // Non-worker orchestration flows (pr-complete, merge-main) and null/undefined
50
+ // reuse the default session window instead of claiming a role-scoped worker window.
51
+ if (!flowType || flowType === 'pr-complete' || flowType === 'merge-main')
52
+ return 'primary';
53
+ throw new Error(`primaryRoleForFlow: unknown flow type '${flowType}'`);
54
+ }
55
+ export function contextIdFor(role) {
56
+ return role;
57
+ }
58
+ export function agentRoleLabel(role) {
59
+ return AGENT_ROLE_LABELS[role];
60
+ }
61
+ export function agentRoleShortLabel(role) {
62
+ return AGENT_ROLE_SHORT_LABELS[role] ?? role.toUpperCase();
63
+ }
64
+ export function agentRoleWindow(role) {
65
+ return AGENT_ROLE_WINDOWS[role];
66
+ }
67
+ export function agentRoleRank(role) {
68
+ const rank = AGENT_ROLE_RANKS[role];
69
+ if (rank === undefined) {
70
+ console.warn(`[agent-roles] unknown role rank for '${role}' — this may indicate a gateway/UI version mismatch`);
71
+ return 99;
72
+ }
73
+ return rank;
74
+ }
75
+ export function signalFileForTask(taskFile) {
76
+ if (!taskFile)
77
+ return null;
78
+ const trimmed = taskFile.trim();
79
+ if (!trimmed)
80
+ return null;
81
+ // Only derive from scoped task paths. A bare "TASK.md" has no stable
82
+ // context directory; explicit bare signalFile values are resolved by the
83
+ // gateway beside the already-resolved task file instead.
84
+ if (trimmed.startsWith('/') || !trimmed.includes('/'))
85
+ return null;
86
+ const normalized = trimmed.replace(/\/+$/, '');
87
+ const separator = normalized.lastIndexOf('/');
88
+ if (separator < 0)
89
+ return null;
90
+ return `${normalized.slice(0, separator)}/SIGNAL.json`;
91
+ }
92
+ export function agentContextTaskFile(taskFile, activeTaskFile) {
93
+ return scopedAgentTaskFile(taskFile) ?? scopedAgentTaskFile(activeTaskFile);
94
+ }
95
+ function scopedAgentTaskFile(taskFile) {
96
+ const candidate = taskFile?.trim();
97
+ if (!candidate || candidate.startsWith('/') || !candidate.includes('/'))
98
+ return null;
99
+ return candidate;
100
+ }
101
+ //# sourceMappingURL=agent-roles.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"agent-roles.js","sourceRoot":"","sources":["../src/agent-roles.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,265 @@
1
+ import type { TmuxWorkerRef } from './methods/tmux.js';
2
+ import type { TaskProgressResult } from './methods.js';
3
+ import type { WorkerSignal } from './signal.js';
4
+ import type { CIWatchFixProgress, CIWatchFixTrigger, CIWatchPhase } from './step-io.js';
5
+ import type { AgentRole, BacklogItem, ChatMessage, FleetStatus, MachineHealth, MonitorViolation, PendingDecision, PRStatus, QueueItem, ResourceStateUpdate, Run, ScriptComplete, ScriptOutput, SlotStatus, StreamFrame, StreamStatus, TerminalData } from './types.js';
6
+ export declare const Events: {
7
+ readonly FLEET_UPDATED: "fleet.updated";
8
+ readonly SLOT_CHANGED: "slot.changed";
9
+ readonly SCRIPT_OUTPUT: "script.output";
10
+ readonly SCRIPT_COMPLETE: "script.complete";
11
+ readonly FLEET_REFRESH_SCHEDULED: "fleet.refresh.scheduled";
12
+ readonly FLEET_REFRESH_SLOT_UPDATE: "fleet.refresh.slot-update";
13
+ readonly FLEET_REFRESH_SUMMARY: "fleet.refresh.summary";
14
+ readonly TERMINAL_DATA: "terminal.data";
15
+ readonly TERMINAL_MODE: "terminal.mode";
16
+ readonly TERMINAL_EXITED: "terminal.exited";
17
+ readonly PR_UPDATED: "pr.updated";
18
+ readonly DECISION_NEW: "decision.new";
19
+ readonly DECISION_RESOLVED: "decision.resolved";
20
+ readonly DECISION_UPDATED: "decision.updated";
21
+ readonly MONITOR_VIOLATION: "monitor.violation";
22
+ readonly NODE_CONNECTED: "node.connected";
23
+ readonly NODE_DISCONNECTED: "node.disconnected";
24
+ readonly NODE_VERSION_MISMATCH: "node.version.mismatch";
25
+ readonly TASK_PROGRESS_UPDATED: "task.progress.updated";
26
+ readonly WORKER_SIGNAL: "worker.signal";
27
+ readonly WORKSPACE_METRO_DATA: "workspace.metro.data";
28
+ readonly STREAM_FRAME: "stream.frame";
29
+ readonly STREAM_STATUS: "stream.status";
30
+ readonly QUEUE_UPDATED: "queue.updated";
31
+ readonly BACKLOG_UPDATED: "backlog.updated";
32
+ readonly CI_CHECK_UPDATED: "ci.check.updated";
33
+ readonly RUN_CREATED: "run.created";
34
+ readonly RUN_UPDATED: "run.updated";
35
+ readonly RUN_COMPLETED: "run.completed";
36
+ readonly RUN_STEP_COMPLETED: "run.step.completed";
37
+ readonly RUN_DECISION_NEW: "run.decision.new";
38
+ readonly RUN_DECISION_RESOLVED: "run.decision.resolved";
39
+ readonly RUN_DECISION_UPDATED: "run.decision.updated";
40
+ readonly RUN_DELETED: "run.deleted";
41
+ readonly RUN_IMPROVEMENT_FAILED: "run.improvement.failed";
42
+ readonly HELLO: "hello";
43
+ readonly CHAT_RESPONSE: "chat.response";
44
+ readonly CHAT_MEMORY_SAVED: "chat.memory.saved";
45
+ readonly COPILOT_OBSERVER_NOTIFICATION: "copilot.observer.notification";
46
+ readonly NODE_HEALTH_UPDATED: "node.health.updated";
47
+ readonly RESOURCE_STATUS_UPDATED: "resource.status.updated";
48
+ readonly RESOURCE_RELAUNCHED: "resource.relaunched";
49
+ readonly FLEET_THUMBNAILS_UPDATED: "fleet.thumbnails.updated";
50
+ readonly GITHUB_RATE_LIMIT: "github.rateLimit";
51
+ readonly LLM_AUTH_LOGIN_PROGRESS: "llm.auth.login.progress";
52
+ };
53
+ export interface FleetUpdatedPayload {
54
+ fleet: FleetStatus;
55
+ }
56
+ export interface SlotChangedPayload {
57
+ slot: SlotStatus;
58
+ }
59
+ export interface ScriptOutputPayload extends ScriptOutput {
60
+ }
61
+ export interface ScriptCompletePayload extends ScriptComplete {
62
+ }
63
+ export interface TerminalDataPayload extends TerminalData {
64
+ }
65
+ export interface TerminalModePayload {
66
+ slotId?: string;
67
+ worker?: TmuxWorkerRef;
68
+ runId?: string;
69
+ role?: AgentRole;
70
+ contextId?: string;
71
+ mode: string;
72
+ }
73
+ export interface TerminalExitedPayload {
74
+ slotId?: string;
75
+ worker?: TmuxWorkerRef;
76
+ runId?: string;
77
+ role?: AgentRole;
78
+ contextId?: string;
79
+ exitCode: number;
80
+ }
81
+ export interface PRUpdatedPayload {
82
+ pr: PRStatus;
83
+ }
84
+ export interface DecisionNewPayload {
85
+ decision?: PendingDecision;
86
+ slotId?: string | null;
87
+ runId?: string;
88
+ id?: string;
89
+ type?: string;
90
+ title?: string;
91
+ description?: string;
92
+ context?: Record<string, unknown>;
93
+ actions?: PendingDecision['actions'];
94
+ createdAt?: string;
95
+ }
96
+ export interface DecisionResolvedPayload {
97
+ id?: string;
98
+ decisionId?: string;
99
+ }
100
+ export interface DecisionUpdatedPayload {
101
+ decision: PendingDecision;
102
+ runId?: string;
103
+ }
104
+ export interface MonitorViolationPayload {
105
+ violation: MonitorViolation;
106
+ }
107
+ export interface NodeConnectedPayload {
108
+ machine: string;
109
+ pid: number;
110
+ protocolVersion?: string;
111
+ versionMatch?: boolean;
112
+ }
113
+ export interface NodeDisconnectedPayload {
114
+ machine: string;
115
+ }
116
+ export interface NodeVersionMismatchPayload {
117
+ machine: string;
118
+ nodeVersion: string;
119
+ gatewayVersion: string;
120
+ }
121
+ export interface TaskProgressUpdatedPayload {
122
+ slotId: string;
123
+ runId: string | null;
124
+ role?: AgentRole;
125
+ contextId?: string;
126
+ progress: TaskProgressResult;
127
+ }
128
+ export interface WorkerSignalPayload {
129
+ slotId: string;
130
+ runId?: string | null;
131
+ role?: AgentRole;
132
+ contextId?: string;
133
+ signal: WorkerSignal;
134
+ }
135
+ export interface WorkspaceMetroDataPayload {
136
+ slotId: string;
137
+ data: string;
138
+ }
139
+ export interface StreamFramePayload extends StreamFrame {
140
+ }
141
+ export interface StreamStatusPayload extends StreamStatus {
142
+ }
143
+ export interface QueueUpdatedPayload {
144
+ items: QueueItem[];
145
+ }
146
+ export interface BacklogUpdatedPayload {
147
+ items: BacklogItem[];
148
+ }
149
+ export interface CiCheckSummary {
150
+ total: number;
151
+ passed: number;
152
+ failed: number;
153
+ pending: number;
154
+ }
155
+ export interface CiCheckUpdatedPayload {
156
+ runId: string;
157
+ prNumber: number;
158
+ checkSummary: CiCheckSummary;
159
+ recommendation: string;
160
+ passedNames: string[];
161
+ failedNames: string[];
162
+ pendingNames: string[];
163
+ pollCount: number;
164
+ pollIntervalMs?: number;
165
+ lastCheckedAt?: string;
166
+ phase?: CIWatchPhase;
167
+ fixInProgress?: boolean;
168
+ fixTrigger?: CIWatchFixTrigger;
169
+ fixProgress?: CIWatchFixProgress;
170
+ activeTaskFile?: string | null;
171
+ nextPollAt?: string | null;
172
+ lastSignalAt?: string | null;
173
+ dedupReason?: string | null;
174
+ lastFixCommitSha?: string | null;
175
+ timeoutWindowStartedAt?: string;
176
+ lastProgressAt?: string;
177
+ lastProgressReason?: string;
178
+ }
179
+ export interface RunCreatedPayload {
180
+ run: Run;
181
+ }
182
+ export interface RunUpdatedPayload {
183
+ run: Run;
184
+ }
185
+ export interface RunCompletedPayload {
186
+ run: Run;
187
+ }
188
+ export interface RunStepCompletedPayload {
189
+ runId: string;
190
+ stepName: string;
191
+ run?: Run;
192
+ }
193
+ export interface RunDecisionNewPayload {
194
+ runId: string;
195
+ decision: PendingDecision;
196
+ slotId?: string | null;
197
+ }
198
+ export interface RunDecisionResolvedPayload {
199
+ runId: string;
200
+ decisionId: string;
201
+ }
202
+ export interface RunImprovementFailedPayload {
203
+ runId: string;
204
+ error: string;
205
+ }
206
+ export interface RunDeletedPayload {
207
+ runId: string;
208
+ }
209
+ export interface HelloPayload {
210
+ fleet: FleetStatus | null;
211
+ }
212
+ export interface ChatResponsePayload {
213
+ sessionId: string;
214
+ seq?: number;
215
+ state: 'delta' | 'final' | 'error' | 'aborted';
216
+ text?: string;
217
+ statusText?: string;
218
+ message?: ChatMessage;
219
+ suggestedActions?: ChatMessage['suggestedActions'];
220
+ errorMessage?: string;
221
+ }
222
+ export interface ChatMemorySavedPayload {
223
+ path: string;
224
+ sessionId?: string;
225
+ }
226
+ export interface CopilotObserverNotificationPayload {
227
+ id: string;
228
+ ts: string;
229
+ type: string;
230
+ severity: 'warn' | 'error';
231
+ summary: string;
232
+ slotId?: string;
233
+ runId?: string;
234
+ }
235
+ export interface NodeHealthUpdatedPayload {
236
+ machine: string;
237
+ health: MachineHealth;
238
+ }
239
+ export interface ResourceStatusUpdatedPayload {
240
+ slotId: string;
241
+ resources: ResourceStateUpdate[];
242
+ }
243
+ export interface ResourceRelaunchedPayload {
244
+ slotId: string;
245
+ resourceId: string;
246
+ oldPid: number;
247
+ newPid: number;
248
+ at: string;
249
+ }
250
+ export interface GitHubRateLimitPayload {
251
+ remaining: number;
252
+ limit: number;
253
+ resetAt: string;
254
+ percentUsed: number;
255
+ }
256
+ export interface FleetThumbnail {
257
+ data: string;
258
+ width: number;
259
+ height: number;
260
+ ts: number;
261
+ }
262
+ export interface FleetThumbnailsUpdatedPayload {
263
+ thumbnails: Record<string, FleetThumbnail>;
264
+ }
265
+ //# sourceMappingURL=events.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"events.d.ts","sourceRoot":"","sources":["../src/events.ts"],"names":[],"mappings":"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"}