@openscout/protocol 0.2.64 → 0.2.83

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 (214) hide show
  1. package/LICENSE +202 -0
  2. package/README.md +103 -52
  3. package/dist/a2a.d.ts +224 -0
  4. package/dist/a2a.d.ts.map +1 -0
  5. package/dist/a2a.js +225 -0
  6. package/dist/activity.d.ts +70 -0
  7. package/dist/activity.d.ts.map +1 -0
  8. package/dist/activity.js +1 -0
  9. package/dist/actors.d.ts +7 -3
  10. package/dist/actors.d.ts.map +1 -0
  11. package/dist/actors.js +15 -1
  12. package/dist/agent-broker-feed.d.ts +84 -0
  13. package/dist/agent-broker-feed.d.ts.map +1 -0
  14. package/dist/agent-broker-feed.js +1 -0
  15. package/dist/agent-identity.d.ts +23 -0
  16. package/dist/agent-identity.d.ts.map +1 -0
  17. package/dist/agent-identity.js +122 -8
  18. package/dist/agent-runs.d.ts +191 -0
  19. package/dist/agent-runs.d.ts.map +1 -0
  20. package/dist/agent-runs.js +365 -0
  21. package/dist/assigned-roles.d.ts +205 -0
  22. package/dist/assigned-roles.d.ts.map +1 -0
  23. package/dist/assigned-roles.js +228 -0
  24. package/dist/broker-routes.d.ts +40 -0
  25. package/dist/broker-routes.d.ts.map +1 -0
  26. package/dist/broker-routes.js +56 -0
  27. package/dist/budget.d.ts +65 -0
  28. package/dist/budget.d.ts.map +1 -0
  29. package/dist/budget.js +19 -0
  30. package/dist/capability-matrix.d.ts +230 -0
  31. package/dist/capability-matrix.d.ts.map +1 -0
  32. package/dist/capability-matrix.js +304 -0
  33. package/dist/channel-identity.d.ts +40 -0
  34. package/dist/channel-identity.d.ts.map +1 -0
  35. package/dist/channel-identity.js +108 -0
  36. package/dist/collaboration.d.ts +45 -16
  37. package/dist/collaboration.d.ts.map +1 -0
  38. package/dist/collaboration.js +39 -23
  39. package/dist/common.d.ts +4 -3
  40. package/dist/common.d.ts.map +1 -0
  41. package/dist/conversations.d.ts +1 -0
  42. package/dist/conversations.d.ts.map +1 -0
  43. package/dist/cursor-transport.d.ts +22 -0
  44. package/dist/cursor-transport.d.ts.map +1 -0
  45. package/dist/cursor-transport.js +10 -0
  46. package/dist/debug-attach.d.ts +29 -0
  47. package/dist/debug-attach.d.ts.map +1 -0
  48. package/dist/debug-attach.js +6 -0
  49. package/dist/deliveries.d.ts +16 -2
  50. package/dist/deliveries.d.ts.map +1 -0
  51. package/dist/durable-actions.d.ts +94 -0
  52. package/dist/durable-actions.d.ts.map +1 -0
  53. package/dist/durable-actions.js +1 -0
  54. package/dist/events.d.ts +27 -1
  55. package/dist/events.d.ts.map +1 -0
  56. package/dist/events.js +14 -1
  57. package/dist/harness-feature-support.d.ts +76 -0
  58. package/dist/harness-feature-support.d.ts.map +1 -0
  59. package/dist/harness-feature-support.js +29 -0
  60. package/dist/host-integrations.d.ts +22 -0
  61. package/dist/host-integrations.d.ts.map +1 -0
  62. package/dist/host-integrations.js +64 -0
  63. package/dist/inbox.d.ts +50 -0
  64. package/dist/inbox.d.ts.map +1 -0
  65. package/dist/inbox.js +9 -0
  66. package/dist/index.d.ts +35 -2
  67. package/dist/index.d.ts.map +1 -0
  68. package/dist/index.js +34 -2
  69. package/dist/invocations.d.ts +119 -4
  70. package/dist/invocations.d.ts.map +1 -0
  71. package/dist/invocations.js +201 -1
  72. package/dist/mesh.d.ts +98 -0
  73. package/dist/mesh.d.ts.map +1 -0
  74. package/dist/mesh.js +18 -1
  75. package/dist/messages.d.ts +3 -0
  76. package/dist/messages.d.ts.map +1 -0
  77. package/dist/native-interactions.d.ts +30 -0
  78. package/dist/native-interactions.d.ts.map +1 -0
  79. package/dist/native-interactions.js +51 -0
  80. package/dist/observed-status.d.ts +33 -0
  81. package/dist/observed-status.d.ts.map +1 -0
  82. package/dist/observed-status.js +6 -0
  83. package/dist/orchestrator-prompt.d.ts +10 -0
  84. package/dist/orchestrator-prompt.d.ts.map +1 -0
  85. package/dist/orchestrator-prompt.js +36 -0
  86. package/dist/permission-policy.d.ts +5 -0
  87. package/dist/permission-policy.d.ts.map +1 -0
  88. package/dist/permission-policy.js +15 -0
  89. package/dist/provisional-agent-names.d.ts +30 -0
  90. package/dist/provisional-agent-names.d.ts.map +1 -0
  91. package/dist/provisional-agent-names.js +224 -0
  92. package/dist/read-receipts.d.ts +12 -0
  93. package/dist/read-receipts.d.ts.map +1 -0
  94. package/dist/read-receipts.js +1 -0
  95. package/dist/relay-agent-card.d.ts +10 -0
  96. package/dist/relay-agent-card.d.ts.map +1 -0
  97. package/dist/rendezvous.d.ts +97 -0
  98. package/dist/rendezvous.d.ts.map +1 -0
  99. package/dist/rendezvous.js +35 -0
  100. package/dist/reserved-vocabulary.d.ts +21 -0
  101. package/dist/reserved-vocabulary.d.ts.map +1 -0
  102. package/dist/reserved-vocabulary.js +101 -0
  103. package/dist/route-aliases.d.ts +112 -0
  104. package/dist/route-aliases.d.ts.map +1 -0
  105. package/dist/route-aliases.js +1 -0
  106. package/dist/runtime-catalog-contract.d.ts +39 -0
  107. package/dist/runtime-catalog-contract.d.ts.map +1 -0
  108. package/dist/runtime-catalog-contract.js +17 -0
  109. package/dist/runtime-catalog.d.ts +11 -0
  110. package/dist/runtime-catalog.d.ts.map +1 -0
  111. package/dist/runtime-catalog.generated.d.ts +230 -0
  112. package/dist/runtime-catalog.generated.d.ts.map +1 -0
  113. package/dist/runtime-catalog.generated.js +299 -0
  114. package/dist/runtime-catalog.js +192 -0
  115. package/dist/runtime-execution.d.ts +161 -0
  116. package/dist/runtime-execution.d.ts.map +1 -0
  117. package/dist/runtime-execution.js +327 -0
  118. package/dist/runtime-profiles.d.ts +12 -0
  119. package/dist/runtime-profiles.d.ts.map +1 -0
  120. package/dist/runtime-profiles.js +20 -0
  121. package/dist/scout-agent-card.d.ts +10 -0
  122. package/dist/scout-agent-card.d.ts.map +1 -0
  123. package/dist/scout-composer.d.ts +27 -0
  124. package/dist/scout-composer.d.ts.map +1 -0
  125. package/dist/scout-composer.js +192 -0
  126. package/dist/scout-delivery.d.ts +99 -4
  127. package/dist/scout-delivery.d.ts.map +1 -0
  128. package/dist/scout-dispatch.d.ts +40 -3
  129. package/dist/scout-dispatch.d.ts.map +1 -0
  130. package/dist/scout-reply-context.d.ts +1 -0
  131. package/dist/scout-reply-context.d.ts.map +1 -0
  132. package/dist/session-display-state.d.ts +132 -0
  133. package/dist/session-display-state.d.ts.map +1 -0
  134. package/dist/session-display-state.js +94 -0
  135. package/dist/terminal-host-topology.d.ts +119 -0
  136. package/dist/terminal-host-topology.d.ts.map +1 -0
  137. package/dist/terminal-host-topology.js +21 -0
  138. package/dist/terminal-sessions.d.ts +142 -0
  139. package/dist/terminal-sessions.d.ts.map +1 -0
  140. package/dist/terminal-sessions.js +81 -0
  141. package/dist/terminal-surface-id.d.ts +73 -0
  142. package/dist/terminal-surface-id.d.ts.map +1 -0
  143. package/dist/terminal-surface-id.js +162 -0
  144. package/dist/terminal-workspaces.d.ts +199 -0
  145. package/dist/terminal-workspaces.d.ts.map +1 -0
  146. package/dist/terminal-workspaces.js +287 -0
  147. package/dist/thread-events.d.ts +1 -0
  148. package/dist/thread-events.d.ts.map +1 -0
  149. package/dist/time.d.ts +16 -0
  150. package/dist/time.d.ts.map +1 -0
  151. package/dist/time.js +33 -0
  152. package/dist/transports.d.ts +1 -0
  153. package/dist/transports.d.ts.map +1 -0
  154. package/package.json +37 -9
  155. package/src/a2a.ts +471 -0
  156. package/src/activity.ts +113 -0
  157. package/src/actors.ts +42 -8
  158. package/src/agent-broker-feed.ts +102 -0
  159. package/src/agent-identity.ts +143 -8
  160. package/src/agent-runs.ts +675 -0
  161. package/src/assigned-roles.ts +437 -0
  162. package/src/broker-routes.ts +62 -0
  163. package/src/budget.ts +88 -0
  164. package/src/capability-matrix.ts +648 -0
  165. package/src/channel-identity.ts +147 -0
  166. package/src/collaboration.ts +78 -48
  167. package/src/common.ts +24 -5
  168. package/src/cursor-transport.ts +34 -0
  169. package/src/debug-attach.ts +38 -0
  170. package/src/deliveries.ts +16 -1
  171. package/src/durable-actions.ts +125 -0
  172. package/src/events.ts +31 -0
  173. package/src/harness-feature-support.ts +116 -0
  174. package/src/host-integrations.ts +104 -0
  175. package/src/inbox.ts +68 -0
  176. package/src/index.ts +34 -2
  177. package/src/invocations.ts +351 -4
  178. package/src/mesh.ts +130 -0
  179. package/src/messages.ts +2 -0
  180. package/src/native-interactions.ts +100 -0
  181. package/src/observed-status.ts +90 -0
  182. package/src/orchestrator-prompt.ts +47 -0
  183. package/src/permission-policy.ts +21 -0
  184. package/src/provisional-agent-names.ts +272 -0
  185. package/src/read-receipts.ts +12 -0
  186. package/src/relay-agent-card.ts +73 -63
  187. package/src/rendezvous.ts +154 -0
  188. package/src/reserved-vocabulary.ts +135 -0
  189. package/src/route-aliases.ts +130 -0
  190. package/src/runtime-catalog-contract.ts +60 -0
  191. package/src/runtime-catalog.generated.ts +300 -0
  192. package/src/runtime-catalog.md +21 -0
  193. package/src/runtime-catalog.ts +193 -0
  194. package/src/runtime-catalog.v1.json +81 -0
  195. package/src/runtime-execution.ts +545 -0
  196. package/src/runtime-profiles.ts +37 -0
  197. package/src/scout-agent-card.ts +10 -0
  198. package/src/scout-composer.ts +249 -0
  199. package/src/scout-delivery.ts +113 -3
  200. package/src/scout-dispatch.ts +33 -2
  201. package/src/session-display-state.ts +202 -0
  202. package/src/terminal-host-topology.ts +132 -0
  203. package/src/terminal-sessions.ts +187 -0
  204. package/src/terminal-surface-id.ts +189 -0
  205. package/src/terminal-workspaces.ts +455 -0
  206. package/src/time.ts +49 -0
  207. package/dist/agent-address.d.ts +0 -1
  208. package/dist/agent-address.js +0 -1
  209. package/dist/agent-selectors.d.ts +0 -1
  210. package/dist/agent-selectors.js +0 -1
  211. package/src/agent-address.ts +0 -1
  212. package/src/agent-identity.test.ts +0 -435
  213. package/src/agent-selectors.ts +0 -1
  214. package/src/scout-agent-card.test.ts +0 -54
@@ -0,0 +1,228 @@
1
+ /**
2
+ * Assigned roles: small explicit duties with hooks and allowed actions.
3
+ *
4
+ * Not agentClass, harness, or identity. No assignment → no hooks → no mission log.
5
+ * First role: orchestrator (mission spine + cheap mission log).
6
+ *
7
+ * See docs/proposals/assigned-roles-and-mission-log.md
8
+ */
9
+ /* ── Hook moments ── */
10
+ export const SCOUT_ROLE_HOOK_IDS = [
11
+ "mission.started",
12
+ "turn.ended",
13
+ "delegation.created",
14
+ "child.updated",
15
+ "waiting.entered",
16
+ "mission.heartbeat",
17
+ "mission.finished",
18
+ ];
19
+ /**
20
+ * Scout-side lifecycle moments (broker fires these; role definitions bind actions).
21
+ * Distinct from optional soft "hooks" the agent may also honor.
22
+ */
23
+ export const SCOUT_ROLE_LIFECYCLE_EVENT_IDS = [
24
+ "ask.completed",
25
+ "ask.failed",
26
+ "work.completed",
27
+ ];
28
+ /* ── Actions (v0 string ids; expand as tools land) ── */
29
+ export const SCOUT_MISSION_LOG_APPEND = "mission_log.append";
30
+ export const SCOUT_WORK_CHILD_LINK = "work.child_link";
31
+ export const SCOUT_WORK_SET_NEXT_MOVE = "work.set_next_move";
32
+ export const SCOUT_ROLE_ACTION_IDS = [
33
+ SCOUT_MISSION_LOG_APPEND,
34
+ SCOUT_WORK_CHILD_LINK,
35
+ SCOUT_WORK_SET_NEXT_MOVE,
36
+ ];
37
+ /* ── Catalog ── */
38
+ export const SCOUT_ORCHESTRATOR_ROLE_ID = "orchestrator";
39
+ /** Orchestrator lifecycle: auto post-ask / post-work summary into mission log. */
40
+ export const SCOUT_ORCHESTRATOR_LIFECYCLE = [
41
+ {
42
+ on: "ask.completed",
43
+ action: SCOUT_MISSION_LOG_APPEND,
44
+ when: "either",
45
+ functionId: "post_ask_summary",
46
+ },
47
+ {
48
+ on: "ask.failed",
49
+ action: SCOUT_MISSION_LOG_APPEND,
50
+ when: "either",
51
+ functionId: "post_ask_summary",
52
+ },
53
+ {
54
+ on: "work.completed",
55
+ action: SCOUT_MISSION_LOG_APPEND,
56
+ when: "target",
57
+ functionId: "post_work_summary",
58
+ },
59
+ ];
60
+ export const SCOUT_ORCHESTRATOR_ROLE = {
61
+ id: SCOUT_ORCHESTRATOR_ROLE_ID,
62
+ label: "Orchestrator",
63
+ summary: "Owns a long-running mission spine and keeps a cheap mission log current.",
64
+ hooks: SCOUT_ROLE_HOOK_IDS,
65
+ actions: [
66
+ SCOUT_MISSION_LOG_APPEND,
67
+ SCOUT_WORK_CHILD_LINK,
68
+ SCOUT_WORK_SET_NEXT_MOVE,
69
+ ],
70
+ lifecycle: SCOUT_ORCHESTRATOR_LIFECYCLE,
71
+ };
72
+ /** Built-in catalog. Future roles (qa, sre, reviewer) append here. */
73
+ export const SCOUT_ROLE_CATALOG = [
74
+ SCOUT_ORCHESTRATOR_ROLE,
75
+ ];
76
+ /* ── Mission log (situation plane; not chat) ── */
77
+ export const SCOUT_MISSION_LOG_KINDS = [
78
+ "heartbeat",
79
+ "progress",
80
+ "delegation",
81
+ "waiting",
82
+ "decision",
83
+ "risk",
84
+ "integration",
85
+ "done",
86
+ "failed",
87
+ ];
88
+ /** Soft limits for writers, tool schemas, and prompts — single source of truth. */
89
+ export const SCOUT_MISSION_LOG_LIMITS = {
90
+ intentMaxWords: 16,
91
+ /** Short current-action line (field name: `status`, not `now`). */
92
+ statusMaxWords: 24,
93
+ noteMaxChars: 240,
94
+ };
95
+ /* ── Helpers ── */
96
+ export function scoutRoleDefinition(roleId, catalog = SCOUT_ROLE_CATALOG) {
97
+ return catalog.find((role) => role.id === roleId);
98
+ }
99
+ export function isScoutRoleHookId(value) {
100
+ return SCOUT_ROLE_HOOK_IDS.includes(value);
101
+ }
102
+ export function isScoutMissionLogKind(value) {
103
+ return SCOUT_MISSION_LOG_KINDS.includes(value);
104
+ }
105
+ export function assignmentAppliesTo(assignment, ctx) {
106
+ switch (assignment.scope.kind) {
107
+ case "agent":
108
+ return true;
109
+ case "mission":
110
+ return ctx.missionId !== undefined
111
+ && assignment.scope.missionId === ctx.missionId;
112
+ case "project":
113
+ return ctx.projectRoot !== undefined
114
+ && assignment.scope.projectRoot === ctx.projectRoot;
115
+ default:
116
+ return false;
117
+ }
118
+ }
119
+ export function activeScoutRoleAssignments(assignments) {
120
+ return assignments.filter((assignment) => assignment.active);
121
+ }
122
+ export function scoutRoleAssignmentsForAgent(assignments, agentId, opts) {
123
+ const activeOnly = opts?.activeOnly ?? true;
124
+ return assignments.filter((assignment) => {
125
+ if (assignment.agentId !== agentId)
126
+ return false;
127
+ if (activeOnly && !assignment.active)
128
+ return false;
129
+ return true;
130
+ });
131
+ }
132
+ export function scoutRoleAssignmentsForMission(assignments, missionId, opts) {
133
+ const activeOnly = opts?.activeOnly ?? true;
134
+ const includeStanding = opts?.includeStanding ?? true;
135
+ const ctx = { missionId };
136
+ return assignments.filter((assignment) => {
137
+ if (activeOnly && !assignment.active)
138
+ return false;
139
+ if (opts?.roleId && assignment.roleId !== opts.roleId)
140
+ return false;
141
+ if (assignment.scope.kind === "agent")
142
+ return includeStanding;
143
+ return assignmentAppliesTo(assignment, ctx);
144
+ });
145
+ }
146
+ /** Distinct agent ids holding an active role for a mission (incl. standing if enabled). */
147
+ export function activeRoleHoldersForMission(assignments, missionId, roleId, opts) {
148
+ const rows = scoutRoleAssignmentsForMission(assignments, missionId, {
149
+ activeOnly: true,
150
+ roleId,
151
+ includeStanding: opts?.includeStanding ?? true,
152
+ });
153
+ return [...new Set(rows.map((row) => row.agentId))];
154
+ }
155
+ /**
156
+ * True when this agent may write the mission log for a mission under the
157
+ * anti-spam rules: active assignment whose definition includes mission_log.append
158
+ * and whose scope applies to the mission (or standing agent-scope).
159
+ */
160
+ export function agentMayWriteMissionLog(opts) {
161
+ const catalog = opts.catalog ?? SCOUT_ROLE_CATALOG;
162
+ const ctx = {
163
+ missionId: opts.missionId,
164
+ projectRoot: opts.projectRoot,
165
+ };
166
+ for (const assignment of opts.assignments) {
167
+ if (!assignment.active)
168
+ continue;
169
+ if (assignment.agentId !== opts.agentId)
170
+ continue;
171
+ if (!assignmentAppliesTo(assignment, ctx))
172
+ continue;
173
+ const definition = scoutRoleDefinition(assignment.roleId, catalog);
174
+ if (!definition?.actions.includes(SCOUT_MISSION_LOG_APPEND))
175
+ continue;
176
+ return true;
177
+ }
178
+ return false;
179
+ }
180
+ export function roleDefinitionAllowsHook(definition, hookId) {
181
+ return definition.hooks.includes(hookId);
182
+ }
183
+ export function assignmentsMatchingHook(opts) {
184
+ const catalog = opts.catalog ?? SCOUT_ROLE_CATALOG;
185
+ const ctx = opts.context ?? {};
186
+ return opts.assignments.filter((assignment) => {
187
+ if (!assignment.active)
188
+ return false;
189
+ if (!assignmentAppliesTo(assignment, ctx))
190
+ return false;
191
+ const definition = scoutRoleDefinition(assignment.roleId, catalog);
192
+ if (!definition || !roleDefinitionAllowsHook(definition, opts.hookId)) {
193
+ return false;
194
+ }
195
+ return true;
196
+ });
197
+ }
198
+ function wordCount(value) {
199
+ return value.trim().split(/\s+/u).filter(Boolean).length;
200
+ }
201
+ /** Soft structural validation for writers and tests (untrusted tool args). */
202
+ export function validateMissionLogEntryFields(input) {
203
+ const errors = [];
204
+ if (typeof input.intent !== "string" || !input.intent.trim()) {
205
+ errors.push("intent is required");
206
+ }
207
+ else if (wordCount(input.intent) > SCOUT_MISSION_LOG_LIMITS.intentMaxWords) {
208
+ errors.push(`intent should be ≤ ${SCOUT_MISSION_LOG_LIMITS.intentMaxWords} words`);
209
+ }
210
+ if (typeof input.status !== "string" || !input.status.trim()) {
211
+ errors.push("status is required");
212
+ }
213
+ else if (wordCount(input.status) > SCOUT_MISSION_LOG_LIMITS.statusMaxWords) {
214
+ errors.push(`status should be ≤ ${SCOUT_MISSION_LOG_LIMITS.statusMaxWords} words`);
215
+ }
216
+ if (typeof input.kind !== "string" || !isScoutMissionLogKind(input.kind)) {
217
+ errors.push(`unknown kind: ${String(input.kind)}`);
218
+ }
219
+ if (input.note !== undefined && input.note !== null) {
220
+ if (typeof input.note !== "string") {
221
+ errors.push("note must be a string");
222
+ }
223
+ else if (input.note.trim().length > SCOUT_MISSION_LOG_LIMITS.noteMaxChars) {
224
+ errors.push(`note should be ≤ ${SCOUT_MISSION_LOG_LIMITS.noteMaxChars} characters`);
225
+ }
226
+ }
227
+ return errors.length === 0 ? { ok: true } : { ok: false, errors };
228
+ }
@@ -0,0 +1,40 @@
1
+ export declare const scoutBrokerPaths: {
2
+ readonly health: "/health";
3
+ readonly v1: {
4
+ readonly home: "/v1/home";
5
+ readonly node: "/v1/node";
6
+ readonly snapshot: "/v1/snapshot";
7
+ readonly capabilities: "/v1/capabilities";
8
+ readonly runtimeCatalog: "/v1/runtime-catalog";
9
+ readonly topologySnapshot: "/v1/topology/snapshot";
10
+ readonly tailDiscover: "/v1/tail/discover";
11
+ readonly tailRecent: "/v1/tail/recent";
12
+ readonly repoWatchSnapshot: "/v1/repo-watch/snapshot";
13
+ readonly messages: "/v1/messages";
14
+ readonly brokerMessages: "/v1/broker/messages";
15
+ readonly eventsStream: "/v1/events/stream";
16
+ readonly actors: "/v1/actors";
17
+ readonly agents: "/v1/agents";
18
+ readonly endpoints: "/v1/endpoints";
19
+ readonly conversations: "/v1/conversations";
20
+ readonly invocations: "/v1/invocations";
21
+ readonly flights: "/v1/flights";
22
+ readonly deliver: "/v1/deliver";
23
+ readonly rendezvousMatch: "/v1/rendezvous/match";
24
+ readonly aliases: "/v1/aliases";
25
+ readonly aliasesResolve: "/v1/aliases/resolve";
26
+ readonly activity: "/v1/activity";
27
+ readonly collaborationRecords: "/v1/collaboration/records";
28
+ readonly collaborationEvents: "/v1/collaboration/events";
29
+ readonly pairingAttach: "/v1/pairing/attach";
30
+ readonly pairingDetach: "/v1/pairing/detach";
31
+ readonly localSessionsAttach: "/v1/local-sessions/attach";
32
+ readonly localSessionsDetach: "/v1/local-sessions/detach";
33
+ };
34
+ };
35
+ export declare function scoutBrokerMessagesListPath(search: URLSearchParams): string;
36
+ export declare function scoutBrokerMessagesPath(search: URLSearchParams): string;
37
+ export declare function scoutBrokerInvocationPath(invocationId: string): string;
38
+ export declare function scoutBrokerInvocationStreamPath(invocationId: string): string;
39
+ export declare function scoutBrokerInvocationLifecyclePath(invocationId: string): string;
40
+ //# sourceMappingURL=broker-routes.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"broker-routes.d.ts","sourceRoot":"","sources":["../src/broker-routes.ts"],"names":[],"mappings":"AAIA,eAAO,MAAM,gBAAgB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAiCnB,CAAC;AAEX,wBAAgB,2BAA2B,CAAC,MAAM,EAAE,eAAe,GAAG,MAAM,CAG3E;AAED,wBAAgB,uBAAuB,CAAC,MAAM,EAAE,eAAe,GAAG,MAAM,CAKvE;AAED,wBAAgB,yBAAyB,CAAC,YAAY,EAAE,MAAM,GAAG,MAAM,CAEtE;AAED,wBAAgB,+BAA+B,CAAC,YAAY,EAAE,MAAM,GAAG,MAAM,CAE5E;AAED,wBAAgB,kCAAkC,CAAC,YAAY,EAAE,MAAM,GAAG,MAAM,CAE/E"}
@@ -0,0 +1,56 @@
1
+ // Canonical client-side paths for the broker HTTP API. The routes defined here
2
+ // are served by the broker runtime; a route-inventory test ensures every entry
3
+ // in this map matches a live implementation.
4
+ export const scoutBrokerPaths = {
5
+ health: "/health",
6
+ v1: {
7
+ home: "/v1/home",
8
+ node: "/v1/node",
9
+ snapshot: "/v1/snapshot",
10
+ capabilities: "/v1/capabilities",
11
+ runtimeCatalog: "/v1/runtime-catalog",
12
+ topologySnapshot: "/v1/topology/snapshot",
13
+ tailDiscover: "/v1/tail/discover",
14
+ tailRecent: "/v1/tail/recent",
15
+ repoWatchSnapshot: "/v1/repo-watch/snapshot",
16
+ messages: "/v1/messages",
17
+ brokerMessages: "/v1/broker/messages",
18
+ eventsStream: "/v1/events/stream",
19
+ actors: "/v1/actors",
20
+ agents: "/v1/agents",
21
+ endpoints: "/v1/endpoints",
22
+ conversations: "/v1/conversations",
23
+ invocations: "/v1/invocations",
24
+ flights: "/v1/flights",
25
+ deliver: "/v1/deliver",
26
+ rendezvousMatch: "/v1/rendezvous/match",
27
+ aliases: "/v1/aliases",
28
+ aliasesResolve: "/v1/aliases/resolve",
29
+ activity: "/v1/activity",
30
+ collaborationRecords: "/v1/collaboration/records",
31
+ collaborationEvents: "/v1/collaboration/events",
32
+ pairingAttach: "/v1/pairing/attach",
33
+ pairingDetach: "/v1/pairing/detach",
34
+ localSessionsAttach: "/v1/local-sessions/attach",
35
+ localSessionsDetach: "/v1/local-sessions/detach",
36
+ },
37
+ };
38
+ export function scoutBrokerMessagesListPath(search) {
39
+ const q = search.toString();
40
+ return q ? `${scoutBrokerPaths.v1.messages}?${q}` : scoutBrokerPaths.v1.messages;
41
+ }
42
+ export function scoutBrokerMessagesPath(search) {
43
+ const q = search.toString();
44
+ return q
45
+ ? `${scoutBrokerPaths.v1.brokerMessages}?${q}`
46
+ : scoutBrokerPaths.v1.brokerMessages;
47
+ }
48
+ export function scoutBrokerInvocationPath(invocationId) {
49
+ return `${scoutBrokerPaths.v1.invocations}/${encodeURIComponent(invocationId)}`;
50
+ }
51
+ export function scoutBrokerInvocationStreamPath(invocationId) {
52
+ return `${scoutBrokerInvocationPath(invocationId)}/stream`;
53
+ }
54
+ export function scoutBrokerInvocationLifecyclePath(invocationId) {
55
+ return `${scoutBrokerInvocationPath(invocationId)}/lifecycle`;
56
+ }
@@ -0,0 +1,65 @@
1
+ import type { AgentHarness } from "./actors.js";
2
+ import type { DeliveryTransport, MetadataMap, ScoutId } from "./common.js";
3
+ export declare const BUDGET_USAGE_SCOPES: readonly ["protocol_overhead", "harness_execution"];
4
+ export type BudgetUsageScope = typeof BUDGET_USAGE_SCOPES[number];
5
+ export declare const BUDGET_USAGE_SOURCES: readonly ["provider_exact", "provider_reported", "provider_session_snapshot", "observed_transcript", "tokenizer_estimate", "char_heuristic", "manual_estimate"];
6
+ export type BudgetUsageSource = typeof BUDGET_USAGE_SOURCES[number];
7
+ export interface BudgetUsageRecord {
8
+ id: ScoutId;
9
+ scope: BudgetUsageScope;
10
+ source: BudgetUsageSource;
11
+ provider?: string;
12
+ harness?: AgentHarness | string;
13
+ transport?: DeliveryTransport | string;
14
+ model?: string;
15
+ agentId?: ScoutId;
16
+ endpointId?: ScoutId;
17
+ sessionId?: ScoutId;
18
+ projectRoot?: string;
19
+ conversationId?: ScoutId;
20
+ messageId?: ScoutId;
21
+ invocationId?: ScoutId;
22
+ flightId?: ScoutId;
23
+ workId?: ScoutId;
24
+ occurredAt: number;
25
+ inputTokens?: number;
26
+ outputTokens?: number;
27
+ reasoningOutputTokens?: number;
28
+ cacheCreationInputTokens?: number;
29
+ cacheReadInputTokens?: number;
30
+ totalTokens?: number;
31
+ estimatedUsd?: number;
32
+ billedUsd?: number;
33
+ currency?: string;
34
+ dedupKey?: string;
35
+ metadata?: MetadataMap;
36
+ createdAt?: number;
37
+ }
38
+ export declare const BUDGET_QUOTA_WINDOW_SOURCES: readonly ["provider_reported", "observed", "estimated", "manual"];
39
+ export type BudgetQuotaWindowSource = typeof BUDGET_QUOTA_WINDOW_SOURCES[number];
40
+ export interface BudgetQuotaWindowSnapshot {
41
+ id: ScoutId;
42
+ source: BudgetQuotaWindowSource;
43
+ provider?: string;
44
+ harness?: AgentHarness | string;
45
+ transport?: DeliveryTransport | string;
46
+ model?: string;
47
+ agentId?: ScoutId;
48
+ endpointId?: ScoutId;
49
+ sessionId?: ScoutId;
50
+ userId?: string;
51
+ accountId?: string;
52
+ planType?: string;
53
+ label: "5h" | "weekly" | string;
54
+ windowKind?: "primary" | "secondary" | "five_hour" | "weekly" | string;
55
+ usedPercent?: number;
56
+ percentRemaining?: number;
57
+ used?: number;
58
+ limit?: number;
59
+ resetAt?: number;
60
+ windowMs?: number;
61
+ capturedAt: number;
62
+ metadata?: MetadataMap;
63
+ createdAt?: number;
64
+ }
65
+ //# sourceMappingURL=budget.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"budget.d.ts","sourceRoot":"","sources":["../src/budget.ts"],"names":[],"mappings":"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"}
package/dist/budget.js ADDED
@@ -0,0 +1,19 @@
1
+ export const BUDGET_USAGE_SCOPES = [
2
+ "protocol_overhead",
3
+ "harness_execution",
4
+ ];
5
+ export const BUDGET_USAGE_SOURCES = [
6
+ "provider_exact",
7
+ "provider_reported",
8
+ "provider_session_snapshot",
9
+ "observed_transcript",
10
+ "tokenizer_estimate",
11
+ "char_heuristic",
12
+ "manual_estimate",
13
+ ];
14
+ export const BUDGET_QUOTA_WINDOW_SOURCES = [
15
+ "provider_reported",
16
+ "observed",
17
+ "estimated",
18
+ "manual",
19
+ ];
@@ -0,0 +1,230 @@
1
+ import type { AgentHarness } from "./actors.js";
2
+ import type { MetadataMap, ScoutId } from "./common.js";
3
+ import type { HarnessFeatureSupportMap } from "./harness-feature-support.js";
4
+ export type ScoutCapabilityProviderKind = "broker" | "mcp" | "harness" | "shell" | "app_connector" | "extension_pack" | "remote_peer" | "provider" | "model" | "runtime_probe";
5
+ export type ScoutCapabilitySourceKind = "broker" | "mcp_server" | "harness_adapter" | "provider_catalog" | "model_catalog" | "project_manifest" | "extension_pack" | "runtime_probe" | "observed_execution" | "human_annotation";
6
+ export type ScoutCapabilityEvidenceKind = "protocol_discovery" | "adapter_report" | "catalog" | "project_manifest" | "extension_pack" | "runtime_probe" | "observed_execution" | "human_annotation" | "upstream";
7
+ export type ScoutCapabilityEvidenceTrust = "verified" | "observed" | "declared" | "advisory" | "unknown";
8
+ export interface ScoutCapabilityEvidence {
9
+ kind: ScoutCapabilityEvidenceKind;
10
+ ref: string;
11
+ sourceId?: string;
12
+ observedAt?: number;
13
+ protocol?: string;
14
+ protocolVersion?: string;
15
+ trust?: ScoutCapabilityEvidenceTrust;
16
+ metadata?: MetadataMap;
17
+ }
18
+ export interface ScoutCapabilityScope {
19
+ projectRoot?: string;
20
+ workspaceRoot?: string;
21
+ agentId?: ScoutId;
22
+ sessionId?: ScoutId;
23
+ harness?: AgentHarness | (string & {});
24
+ machineId?: ScoutId;
25
+ permissionProfile?: string;
26
+ channelId?: ScoutId;
27
+ environmentId?: ScoutId;
28
+ }
29
+ export type ScoutCapabilityEffect = "read" | "write" | "execute" | "network" | "notify" | "admin" | "unknown";
30
+ export interface ScoutCapabilityMethodHints {
31
+ readOnly?: boolean;
32
+ destructive?: boolean;
33
+ idempotent?: boolean;
34
+ openWorld?: boolean;
35
+ annotationsTrusted?: boolean;
36
+ }
37
+ export interface ScoutCapabilityMethod {
38
+ name: string;
39
+ displayName?: string;
40
+ description?: string;
41
+ inputSchema?: unknown;
42
+ outputSchema?: unknown;
43
+ effects: ScoutCapabilityEffect[];
44
+ idempotent?: boolean;
45
+ requiresApproval?: boolean;
46
+ hints?: ScoutCapabilityMethodHints;
47
+ metadata?: MetadataMap;
48
+ }
49
+ export type ScoutCapabilityReadinessState = "ready" | "degraded" | "missing" | "disabled" | "unknown";
50
+ export interface ScoutCapabilityReadiness {
51
+ state: ScoutCapabilityReadinessState;
52
+ detail?: string;
53
+ checkedAt?: number;
54
+ missing?: string[];
55
+ evidence?: ScoutCapabilityEvidence[];
56
+ }
57
+ export type ScoutCapabilityEnforcementLevel = "broker_native" | "mcp_server" | "harness_native" | "sandbox_native" | "container" | "remote_authority" | "advisory" | "unknown";
58
+ export type ScoutCapabilityPolicyTrust = "enforced" | "declared" | "advisory" | "unknown";
59
+ export interface ScoutCapabilityEnforcement {
60
+ level: ScoutCapabilityEnforcementLevel;
61
+ trust: ScoutCapabilityPolicyTrust;
62
+ reason?: string;
63
+ }
64
+ export interface ScoutCapabilityProvenance {
65
+ sourceKind: ScoutCapabilitySourceKind;
66
+ sourceId: string;
67
+ sourceName?: string;
68
+ capturedAt: number;
69
+ protocol?: string;
70
+ protocolVersion?: string;
71
+ evidence?: ScoutCapabilityEvidence[];
72
+ }
73
+ export interface ScoutCapabilityDefinition {
74
+ id: ScoutId;
75
+ name: string;
76
+ displayName: string;
77
+ description?: string;
78
+ provider: ScoutCapabilityProviderKind;
79
+ providerId?: string;
80
+ methods: ScoutCapabilityMethod[];
81
+ scope?: ScoutCapabilityScope;
82
+ readiness: ScoutCapabilityReadiness;
83
+ enforcement: ScoutCapabilityEnforcement;
84
+ provenance: ScoutCapabilityProvenance;
85
+ enabled: boolean;
86
+ version?: string;
87
+ metadata?: MetadataMap;
88
+ }
89
+ export interface ScoutCapabilityMatrixSource {
90
+ kind: ScoutCapabilitySourceKind;
91
+ id: string;
92
+ name?: string;
93
+ capturedAt: number;
94
+ protocol?: string;
95
+ protocolVersion?: string;
96
+ raw?: unknown;
97
+ metadata?: MetadataMap;
98
+ }
99
+ export interface ScoutCapabilityMatrixSnapshot {
100
+ generatedAt: number;
101
+ scope?: ScoutCapabilityScope;
102
+ sources: ScoutCapabilityMatrixSource[];
103
+ capabilities: ScoutCapabilityDefinition[];
104
+ harnessSupport?: Record<string, HarnessFeatureSupportMap>;
105
+ warnings: string[];
106
+ }
107
+ export interface McpServerCapabilities {
108
+ tools?: {
109
+ listChanged?: boolean;
110
+ [key: string]: unknown;
111
+ } | boolean;
112
+ resources?: {
113
+ subscribe?: boolean;
114
+ listChanged?: boolean;
115
+ [key: string]: unknown;
116
+ } | boolean;
117
+ prompts?: {
118
+ listChanged?: boolean;
119
+ [key: string]: unknown;
120
+ } | boolean;
121
+ logging?: Record<string, unknown> | boolean;
122
+ completions?: Record<string, unknown> | boolean;
123
+ tasks?: Record<string, unknown> | boolean;
124
+ [key: string]: unknown;
125
+ }
126
+ export interface McpToolAnnotations {
127
+ title?: string;
128
+ readOnlyHint?: boolean;
129
+ destructiveHint?: boolean;
130
+ idempotentHint?: boolean;
131
+ openWorldHint?: boolean;
132
+ [key: string]: unknown;
133
+ }
134
+ export interface McpToolDefinition {
135
+ name: string;
136
+ title?: string;
137
+ description?: string;
138
+ inputSchema?: unknown;
139
+ outputSchema?: unknown;
140
+ annotations?: McpToolAnnotations;
141
+ icons?: unknown[];
142
+ _meta?: MetadataMap;
143
+ [key: string]: unknown;
144
+ }
145
+ export interface McpToolsListResult {
146
+ tools?: readonly McpToolDefinition[];
147
+ nextCursor?: string;
148
+ [key: string]: unknown;
149
+ }
150
+ export interface NormalizeMcpToolsOptions {
151
+ serverId: string;
152
+ serverName?: string;
153
+ protocolVersion?: string;
154
+ capturedAt?: number;
155
+ scope?: ScoutCapabilityScope;
156
+ serverCapabilities?: McpServerCapabilities;
157
+ tools: readonly McpToolDefinition[] | McpToolsListResult;
158
+ enabled?: boolean;
159
+ readiness?: Partial<ScoutCapabilityReadiness>;
160
+ }
161
+ export type ScoutModelModality = "text" | "image" | "audio" | "video" | "file" | "embedding" | "unknown";
162
+ export interface ScoutModelFeatureSupport {
163
+ streaming?: boolean;
164
+ toolCalling?: boolean;
165
+ structuredOutput?: boolean;
166
+ embeddings?: boolean;
167
+ usageTelemetry?: boolean;
168
+ }
169
+ export interface ScoutModelCatalogEntry {
170
+ providerId: string;
171
+ modelId: string;
172
+ displayName?: string;
173
+ inputModalities?: ScoutModelModality[];
174
+ outputModalities?: ScoutModelModality[];
175
+ features?: ScoutModelFeatureSupport;
176
+ contextWindowTokens?: number;
177
+ maxOutputTokens?: number;
178
+ metadata?: MetadataMap;
179
+ }
180
+ export interface NormalizeModelCatalogOptions {
181
+ sourceId: string;
182
+ sourceName?: string;
183
+ capturedAt?: number;
184
+ scope?: ScoutCapabilityScope;
185
+ models: readonly ScoutModelCatalogEntry[];
186
+ enabled?: boolean;
187
+ }
188
+ export type ScoutCapabilityAvailabilityDecision = {
189
+ decision: "allow";
190
+ capabilityId: ScoutId;
191
+ methodName: string;
192
+ reason: string;
193
+ } | {
194
+ decision: "deny";
195
+ capabilityId?: ScoutId;
196
+ methodName?: string;
197
+ reason: "capability_missing" | "capability_disabled" | "method_missing" | "readiness_missing" | "readiness_disabled";
198
+ detail: string;
199
+ } | {
200
+ decision: "require_approval";
201
+ capabilityId: ScoutId;
202
+ methodName: string;
203
+ reason: "method_requires_approval";
204
+ detail: string;
205
+ } | {
206
+ decision: "downgrade";
207
+ capabilityId: ScoutId;
208
+ methodName: string;
209
+ reason: "readiness_degraded";
210
+ detail: string;
211
+ } | {
212
+ decision: "unknown";
213
+ capabilityId: ScoutId;
214
+ methodName: string;
215
+ reason: "readiness_unknown";
216
+ detail: string;
217
+ };
218
+ export interface EvaluateScoutCapabilityAvailabilityOptions {
219
+ capabilityId: ScoutId;
220
+ methodName?: string;
221
+ requireReady?: boolean;
222
+ }
223
+ export declare function makeMcpToolCapabilityId(serverId: string, toolName: string): ScoutId;
224
+ export declare function makeModelCapabilityId(providerId: string, modelId: string): ScoutId;
225
+ export declare function inferMcpToolEffects(annotations: McpToolAnnotations | undefined): ScoutCapabilityEffect[];
226
+ export declare function normalizeMcpToolsToScoutCapabilities(options: NormalizeMcpToolsOptions): ScoutCapabilityDefinition[];
227
+ export declare function buildMcpCapabilityMatrixSnapshot(options: NormalizeMcpToolsOptions): ScoutCapabilityMatrixSnapshot;
228
+ export declare function normalizeModelCatalogToScoutCapabilities(options: NormalizeModelCatalogOptions): ScoutCapabilityDefinition[];
229
+ export declare function evaluateScoutCapabilityAvailability(snapshot: ScoutCapabilityMatrixSnapshot, options: EvaluateScoutCapabilityAvailabilityOptions): ScoutCapabilityAvailabilityDecision;
230
+ //# sourceMappingURL=capability-matrix.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"capability-matrix.d.ts","sourceRoot":"","sources":["../src/capability-matrix.ts"],"names":[],"mappings":"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"}