@openscout/protocol 0.2.63 → 0.2.82
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.
- package/LICENSE +202 -0
- package/README.md +103 -52
- package/dist/a2a.d.ts +224 -0
- package/dist/a2a.d.ts.map +1 -0
- package/dist/a2a.js +225 -0
- package/dist/activity.d.ts +70 -0
- package/dist/activity.d.ts.map +1 -0
- package/dist/activity.js +1 -0
- package/dist/actors.d.ts +7 -3
- package/dist/actors.d.ts.map +1 -0
- package/dist/actors.js +15 -1
- package/dist/agent-broker-feed.d.ts +84 -0
- package/dist/agent-broker-feed.d.ts.map +1 -0
- package/dist/agent-broker-feed.js +1 -0
- package/dist/agent-identity.d.ts +23 -0
- package/dist/agent-identity.d.ts.map +1 -0
- package/dist/agent-identity.js +122 -8
- package/dist/agent-runs.d.ts +191 -0
- package/dist/agent-runs.d.ts.map +1 -0
- package/dist/agent-runs.js +365 -0
- package/dist/assigned-roles.d.ts +205 -0
- package/dist/assigned-roles.d.ts.map +1 -0
- package/dist/assigned-roles.js +228 -0
- package/dist/broker-routes.d.ts +40 -0
- package/dist/broker-routes.d.ts.map +1 -0
- package/dist/broker-routes.js +56 -0
- package/dist/budget.d.ts +65 -0
- package/dist/budget.d.ts.map +1 -0
- package/dist/budget.js +19 -0
- package/dist/capability-matrix.d.ts +230 -0
- package/dist/capability-matrix.d.ts.map +1 -0
- package/dist/capability-matrix.js +304 -0
- package/dist/channel-identity.d.ts +40 -0
- package/dist/channel-identity.d.ts.map +1 -0
- package/dist/channel-identity.js +108 -0
- package/dist/collaboration.d.ts +45 -16
- package/dist/collaboration.d.ts.map +1 -0
- package/dist/collaboration.js +39 -23
- package/dist/common.d.ts +4 -3
- package/dist/common.d.ts.map +1 -0
- package/dist/conversations.d.ts +1 -0
- package/dist/conversations.d.ts.map +1 -0
- package/dist/cursor-transport.d.ts +22 -0
- package/dist/cursor-transport.d.ts.map +1 -0
- package/dist/cursor-transport.js +10 -0
- package/dist/debug-attach.d.ts +29 -0
- package/dist/debug-attach.d.ts.map +1 -0
- package/dist/debug-attach.js +6 -0
- package/dist/deliveries.d.ts +16 -2
- package/dist/deliveries.d.ts.map +1 -0
- package/dist/durable-actions.d.ts +94 -0
- package/dist/durable-actions.d.ts.map +1 -0
- package/dist/durable-actions.js +1 -0
- package/dist/events.d.ts +27 -1
- package/dist/events.d.ts.map +1 -0
- package/dist/events.js +14 -1
- package/dist/harness-feature-support.d.ts +76 -0
- package/dist/harness-feature-support.d.ts.map +1 -0
- package/dist/harness-feature-support.js +29 -0
- package/dist/host-integrations.d.ts +22 -0
- package/dist/host-integrations.d.ts.map +1 -0
- package/dist/host-integrations.js +64 -0
- package/dist/inbox.d.ts +50 -0
- package/dist/inbox.d.ts.map +1 -0
- package/dist/inbox.js +9 -0
- package/dist/index.d.ts +36 -2
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +35 -2
- package/dist/invocations.d.ts +121 -0
- package/dist/invocations.d.ts.map +1 -0
- package/dist/invocations.js +201 -1
- package/dist/mesh.d.ts +98 -0
- package/dist/mesh.d.ts.map +1 -0
- package/dist/mesh.js +18 -1
- package/dist/messages.d.ts +3 -0
- package/dist/messages.d.ts.map +1 -0
- package/dist/native-interactions.d.ts +30 -0
- package/dist/native-interactions.d.ts.map +1 -0
- package/dist/native-interactions.js +51 -0
- package/dist/observed-status.d.ts +33 -0
- package/dist/observed-status.d.ts.map +1 -0
- package/dist/observed-status.js +6 -0
- package/dist/orchestrator-prompt.d.ts +10 -0
- package/dist/orchestrator-prompt.d.ts.map +1 -0
- package/dist/orchestrator-prompt.js +36 -0
- package/dist/permission-policy.d.ts +5 -0
- package/dist/permission-policy.d.ts.map +1 -0
- package/dist/permission-policy.js +15 -0
- package/dist/provisional-agent-names.d.ts +30 -0
- package/dist/provisional-agent-names.d.ts.map +1 -0
- package/dist/provisional-agent-names.js +224 -0
- package/dist/read-receipts.d.ts +12 -0
- package/dist/read-receipts.d.ts.map +1 -0
- package/dist/read-receipts.js +1 -0
- package/dist/relay-agent-card.d.ts +10 -0
- package/dist/relay-agent-card.d.ts.map +1 -0
- package/dist/rendezvous.d.ts +97 -0
- package/dist/rendezvous.d.ts.map +1 -0
- package/dist/rendezvous.js +35 -0
- package/dist/reserved-vocabulary.d.ts +21 -0
- package/dist/reserved-vocabulary.d.ts.map +1 -0
- package/dist/reserved-vocabulary.js +101 -0
- package/dist/route-aliases.d.ts +112 -0
- package/dist/route-aliases.d.ts.map +1 -0
- package/dist/route-aliases.js +1 -0
- package/dist/runtime-catalog-contract.d.ts +39 -0
- package/dist/runtime-catalog-contract.d.ts.map +1 -0
- package/dist/runtime-catalog-contract.js +17 -0
- package/dist/runtime-catalog.d.ts +11 -0
- package/dist/runtime-catalog.d.ts.map +1 -0
- package/dist/runtime-catalog.generated.d.ts +230 -0
- package/dist/runtime-catalog.generated.d.ts.map +1 -0
- package/dist/runtime-catalog.generated.js +299 -0
- package/dist/runtime-catalog.js +192 -0
- package/dist/runtime-execution.d.ts +161 -0
- package/dist/runtime-execution.d.ts.map +1 -0
- package/dist/runtime-execution.js +327 -0
- package/dist/runtime-profiles.d.ts +12 -0
- package/dist/runtime-profiles.d.ts.map +1 -0
- package/dist/runtime-profiles.js +20 -0
- package/dist/scout-agent-card.d.ts +10 -0
- package/dist/scout-agent-card.d.ts.map +1 -0
- package/dist/scout-composer.d.ts +27 -0
- package/dist/scout-composer.d.ts.map +1 -0
- package/dist/scout-composer.js +192 -0
- package/dist/scout-delivery.d.ts +101 -4
- package/dist/scout-delivery.d.ts.map +1 -0
- package/dist/scout-dispatch.d.ts +44 -3
- package/dist/scout-dispatch.d.ts.map +1 -0
- package/dist/scout-reply-context.d.ts +14 -0
- package/dist/scout-reply-context.d.ts.map +1 -0
- package/dist/scout-reply-context.js +1 -0
- package/dist/session-display-state.d.ts +132 -0
- package/dist/session-display-state.d.ts.map +1 -0
- package/dist/session-display-state.js +94 -0
- package/dist/terminal-host-topology.d.ts +119 -0
- package/dist/terminal-host-topology.d.ts.map +1 -0
- package/dist/terminal-host-topology.js +21 -0
- package/dist/terminal-sessions.d.ts +142 -0
- package/dist/terminal-sessions.d.ts.map +1 -0
- package/dist/terminal-sessions.js +81 -0
- package/dist/terminal-surface-id.d.ts +73 -0
- package/dist/terminal-surface-id.d.ts.map +1 -0
- package/dist/terminal-surface-id.js +162 -0
- package/dist/terminal-workspaces.d.ts +199 -0
- package/dist/terminal-workspaces.d.ts.map +1 -0
- package/dist/terminal-workspaces.js +287 -0
- package/dist/thread-events.d.ts +1 -0
- package/dist/thread-events.d.ts.map +1 -0
- package/dist/time.d.ts +16 -0
- package/dist/time.d.ts.map +1 -0
- package/dist/time.js +33 -0
- package/dist/transports.d.ts +1 -0
- package/dist/transports.d.ts.map +1 -0
- package/package.json +37 -9
- package/src/a2a.ts +471 -0
- package/src/activity.ts +113 -0
- package/src/actors.ts +42 -8
- package/src/agent-broker-feed.ts +102 -0
- package/src/agent-identity.ts +143 -8
- package/src/agent-runs.ts +675 -0
- package/src/assigned-roles.ts +437 -0
- package/src/broker-routes.ts +62 -0
- package/src/budget.ts +88 -0
- package/src/capability-matrix.ts +648 -0
- package/src/channel-identity.ts +147 -0
- package/src/collaboration.ts +78 -48
- package/src/common.ts +24 -5
- package/src/cursor-transport.ts +34 -0
- package/src/debug-attach.ts +38 -0
- package/src/deliveries.ts +16 -1
- package/src/durable-actions.ts +125 -0
- package/src/events.ts +31 -0
- package/src/harness-feature-support.ts +116 -0
- package/src/host-integrations.ts +104 -0
- package/src/inbox.ts +68 -0
- package/src/index.ts +35 -2
- package/src/invocations.ts +353 -0
- package/src/mesh.ts +130 -0
- package/src/messages.ts +2 -0
- package/src/native-interactions.ts +100 -0
- package/src/observed-status.ts +90 -0
- package/src/orchestrator-prompt.ts +47 -0
- package/src/permission-policy.ts +21 -0
- package/src/provisional-agent-names.ts +272 -0
- package/src/read-receipts.ts +12 -0
- package/src/relay-agent-card.ts +73 -63
- package/src/rendezvous.ts +154 -0
- package/src/reserved-vocabulary.ts +135 -0
- package/src/route-aliases.ts +130 -0
- package/src/runtime-catalog-contract.ts +60 -0
- package/src/runtime-catalog.generated.ts +300 -0
- package/src/runtime-catalog.md +21 -0
- package/src/runtime-catalog.ts +193 -0
- package/src/runtime-catalog.v1.json +81 -0
- package/src/runtime-execution.ts +545 -0
- package/src/runtime-profiles.ts +37 -0
- package/src/scout-agent-card.ts +10 -0
- package/src/scout-composer.ts +249 -0
- package/src/scout-delivery.ts +117 -4
- package/src/scout-dispatch.ts +34 -2
- package/src/scout-reply-context.ts +15 -0
- package/src/session-display-state.ts +202 -0
- package/src/terminal-host-topology.ts +132 -0
- package/src/terminal-sessions.ts +187 -0
- package/src/terminal-surface-id.ts +189 -0
- package/src/terminal-workspaces.ts +455 -0
- package/src/time.ts +49 -0
- package/dist/agent-address.d.ts +0 -1
- package/dist/agent-address.js +0 -1
- package/dist/agent-selectors.d.ts +0 -1
- package/dist/agent-selectors.js +0 -1
- package/src/agent-address.ts +0 -1
- package/src/agent-identity.test.ts +0 -435
- package/src/agent-selectors.ts +0 -1
- package/src/scout-agent-card.test.ts +0 -54
|
@@ -0,0 +1,299 @@
|
|
|
1
|
+
// Generated automatically from runtime-catalog.v1.json. Do not edit.
|
|
2
|
+
export const SCOUT_RUNTIME_CATALOG_DATA = {
|
|
3
|
+
"schemaVersion": "openscout.runtime-catalog.v1",
|
|
4
|
+
"revision": "2026-08-18.1",
|
|
5
|
+
"harnesses": [
|
|
6
|
+
{
|
|
7
|
+
"id": "claude",
|
|
8
|
+
"label": "Claude Code",
|
|
9
|
+
"enabled": true,
|
|
10
|
+
"default": true,
|
|
11
|
+
"reasoningEfforts": [
|
|
12
|
+
"low",
|
|
13
|
+
"medium",
|
|
14
|
+
"high",
|
|
15
|
+
"xhigh",
|
|
16
|
+
"max"
|
|
17
|
+
],
|
|
18
|
+
"defaultReasoningEffort": "medium",
|
|
19
|
+
"models": [
|
|
20
|
+
{
|
|
21
|
+
"id": "claude-opus-5",
|
|
22
|
+
"label": "Opus 5",
|
|
23
|
+
"enabled": true,
|
|
24
|
+
"default": true,
|
|
25
|
+
"family": "Opus",
|
|
26
|
+
"version": "5"
|
|
27
|
+
},
|
|
28
|
+
{
|
|
29
|
+
"id": "claude-sonnet-4-6",
|
|
30
|
+
"label": "Sonnet 4.6",
|
|
31
|
+
"enabled": true,
|
|
32
|
+
"family": "Sonnet",
|
|
33
|
+
"version": "4.6"
|
|
34
|
+
},
|
|
35
|
+
{
|
|
36
|
+
"id": "claude-haiku-4-5",
|
|
37
|
+
"label": "Haiku 4.5",
|
|
38
|
+
"enabled": true,
|
|
39
|
+
"family": "Haiku",
|
|
40
|
+
"version": "4.5"
|
|
41
|
+
},
|
|
42
|
+
{
|
|
43
|
+
"id": "claude-opus-4-8",
|
|
44
|
+
"label": "Opus 4.8",
|
|
45
|
+
"enabled": true,
|
|
46
|
+
"family": "Opus",
|
|
47
|
+
"version": "4.8"
|
|
48
|
+
},
|
|
49
|
+
{
|
|
50
|
+
"id": "claude-opus-4-7",
|
|
51
|
+
"label": "Opus 4.7",
|
|
52
|
+
"enabled": true,
|
|
53
|
+
"family": "Opus",
|
|
54
|
+
"version": "4.7"
|
|
55
|
+
},
|
|
56
|
+
{
|
|
57
|
+
"id": "claude-sonnet-4-5",
|
|
58
|
+
"label": "Sonnet 4.5",
|
|
59
|
+
"enabled": true,
|
|
60
|
+
"family": "Sonnet",
|
|
61
|
+
"version": "4.5"
|
|
62
|
+
}
|
|
63
|
+
]
|
|
64
|
+
},
|
|
65
|
+
{
|
|
66
|
+
"id": "codex",
|
|
67
|
+
"label": "Codex",
|
|
68
|
+
"enabled": true,
|
|
69
|
+
"reasoningEfforts": [
|
|
70
|
+
"low",
|
|
71
|
+
"medium",
|
|
72
|
+
"high",
|
|
73
|
+
"xhigh"
|
|
74
|
+
],
|
|
75
|
+
"defaultReasoningEffort": "medium",
|
|
76
|
+
"models": [
|
|
77
|
+
{
|
|
78
|
+
"id": "gpt-5.6-sol",
|
|
79
|
+
"label": "5.6 Sol",
|
|
80
|
+
"enabled": true,
|
|
81
|
+
"default": true,
|
|
82
|
+
"family": "GPT",
|
|
83
|
+
"version": "5.6 Sol",
|
|
84
|
+
"reasoningEfforts": [
|
|
85
|
+
"low",
|
|
86
|
+
"medium",
|
|
87
|
+
"high",
|
|
88
|
+
"xhigh",
|
|
89
|
+
"ultra"
|
|
90
|
+
]
|
|
91
|
+
},
|
|
92
|
+
{
|
|
93
|
+
"id": "gpt-5.6-terra",
|
|
94
|
+
"label": "5.6 Terra",
|
|
95
|
+
"enabled": true,
|
|
96
|
+
"family": "GPT",
|
|
97
|
+
"version": "5.6 Terra",
|
|
98
|
+
"reasoningEfforts": [
|
|
99
|
+
"low",
|
|
100
|
+
"medium",
|
|
101
|
+
"high",
|
|
102
|
+
"xhigh",
|
|
103
|
+
"ultra"
|
|
104
|
+
]
|
|
105
|
+
},
|
|
106
|
+
{
|
|
107
|
+
"id": "gpt-5.6-luna",
|
|
108
|
+
"label": "5.6 Luna",
|
|
109
|
+
"enabled": true,
|
|
110
|
+
"family": "GPT",
|
|
111
|
+
"version": "5.6 Luna"
|
|
112
|
+
},
|
|
113
|
+
{
|
|
114
|
+
"id": "gpt-5.5",
|
|
115
|
+
"label": "5.5",
|
|
116
|
+
"enabled": true,
|
|
117
|
+
"family": "GPT",
|
|
118
|
+
"version": "5.5"
|
|
119
|
+
},
|
|
120
|
+
{
|
|
121
|
+
"id": "gpt-5.5-mini",
|
|
122
|
+
"label": "5.5 mini",
|
|
123
|
+
"enabled": true,
|
|
124
|
+
"family": "GPT",
|
|
125
|
+
"version": "5.5 mini"
|
|
126
|
+
}
|
|
127
|
+
]
|
|
128
|
+
},
|
|
129
|
+
{
|
|
130
|
+
"id": "grok",
|
|
131
|
+
"label": "Grok CLI",
|
|
132
|
+
"enabled": true,
|
|
133
|
+
"listed": false,
|
|
134
|
+
"reasoningEfforts": [
|
|
135
|
+
"low",
|
|
136
|
+
"medium",
|
|
137
|
+
"high",
|
|
138
|
+
"xhigh"
|
|
139
|
+
],
|
|
140
|
+
"defaultReasoningEffort": "medium",
|
|
141
|
+
"models": [
|
|
142
|
+
{
|
|
143
|
+
"id": "grok-4.6",
|
|
144
|
+
"label": "Grok 4.6",
|
|
145
|
+
"enabled": true,
|
|
146
|
+
"default": true,
|
|
147
|
+
"family": "Grok",
|
|
148
|
+
"version": "4.6",
|
|
149
|
+
"contextWindowTokens": 500000
|
|
150
|
+
},
|
|
151
|
+
{
|
|
152
|
+
"id": "grok-4.5",
|
|
153
|
+
"label": "Grok 4.5",
|
|
154
|
+
"enabled": true,
|
|
155
|
+
"family": "Grok",
|
|
156
|
+
"version": "4.5"
|
|
157
|
+
},
|
|
158
|
+
{
|
|
159
|
+
"id": "grok-4.3",
|
|
160
|
+
"label": "Grok 4.3",
|
|
161
|
+
"enabled": true,
|
|
162
|
+
"family": "Grok",
|
|
163
|
+
"version": "4.3"
|
|
164
|
+
}
|
|
165
|
+
]
|
|
166
|
+
},
|
|
167
|
+
{
|
|
168
|
+
"id": "grok-acp",
|
|
169
|
+
"label": "Grok",
|
|
170
|
+
"enabled": true,
|
|
171
|
+
"reasoningEfforts": null,
|
|
172
|
+
"models": [
|
|
173
|
+
{
|
|
174
|
+
"id": "grok-4.6",
|
|
175
|
+
"label": "Grok 4.6",
|
|
176
|
+
"enabled": true,
|
|
177
|
+
"default": true,
|
|
178
|
+
"family": "Grok",
|
|
179
|
+
"version": "4.6",
|
|
180
|
+
"contextWindowTokens": 500000
|
|
181
|
+
},
|
|
182
|
+
{
|
|
183
|
+
"id": "grok-4.5",
|
|
184
|
+
"label": "Grok 4.5",
|
|
185
|
+
"enabled": true,
|
|
186
|
+
"family": "Grok",
|
|
187
|
+
"version": "4.5"
|
|
188
|
+
},
|
|
189
|
+
{
|
|
190
|
+
"id": "grok-4.3",
|
|
191
|
+
"label": "Grok 4.3",
|
|
192
|
+
"enabled": true,
|
|
193
|
+
"family": "Grok",
|
|
194
|
+
"version": "4.3"
|
|
195
|
+
}
|
|
196
|
+
]
|
|
197
|
+
},
|
|
198
|
+
{
|
|
199
|
+
"id": "kimi",
|
|
200
|
+
"label": "Kimi Code",
|
|
201
|
+
"enabled": true,
|
|
202
|
+
"reasoningEfforts": null,
|
|
203
|
+
"models": []
|
|
204
|
+
},
|
|
205
|
+
{
|
|
206
|
+
"id": "flue",
|
|
207
|
+
"label": "Flue",
|
|
208
|
+
"enabled": true,
|
|
209
|
+
"reasoningEfforts": null,
|
|
210
|
+
"models": []
|
|
211
|
+
},
|
|
212
|
+
{
|
|
213
|
+
"id": "cursor",
|
|
214
|
+
"label": "Cursor CLI",
|
|
215
|
+
"enabled": true,
|
|
216
|
+
"reasoningEfforts": null,
|
|
217
|
+
"models": []
|
|
218
|
+
},
|
|
219
|
+
{
|
|
220
|
+
"id": "opencode",
|
|
221
|
+
"label": "OpenCode",
|
|
222
|
+
"enabled": true,
|
|
223
|
+
"reasoningEfforts": null,
|
|
224
|
+
"models": [
|
|
225
|
+
{
|
|
226
|
+
"id": "opencode-go/glm-5.2",
|
|
227
|
+
"label": "GLM-5.2",
|
|
228
|
+
"enabled": true,
|
|
229
|
+
"default": true,
|
|
230
|
+
"family": "GLM",
|
|
231
|
+
"version": "5.2"
|
|
232
|
+
},
|
|
233
|
+
{
|
|
234
|
+
"id": "opencode-go/glm-5.1",
|
|
235
|
+
"label": "GLM-5.1",
|
|
236
|
+
"enabled": true,
|
|
237
|
+
"family": "GLM",
|
|
238
|
+
"version": "5.1"
|
|
239
|
+
},
|
|
240
|
+
{
|
|
241
|
+
"id": "opencode-go/kimi-k3",
|
|
242
|
+
"label": "Kimi K3",
|
|
243
|
+
"enabled": true,
|
|
244
|
+
"family": "Kimi",
|
|
245
|
+
"version": "K3"
|
|
246
|
+
},
|
|
247
|
+
{
|
|
248
|
+
"id": "opencode-go/qwen3.8-max",
|
|
249
|
+
"label": "Qwen3.8 Max",
|
|
250
|
+
"enabled": true,
|
|
251
|
+
"family": "Qwen",
|
|
252
|
+
"version": "3.8 Max"
|
|
253
|
+
},
|
|
254
|
+
{
|
|
255
|
+
"id": "opencode-go/minimax-m3",
|
|
256
|
+
"label": "MiniMax M3",
|
|
257
|
+
"enabled": true,
|
|
258
|
+
"family": "MiniMax",
|
|
259
|
+
"version": "M3"
|
|
260
|
+
},
|
|
261
|
+
{
|
|
262
|
+
"id": "opencode-go/deepseek-v4-pro",
|
|
263
|
+
"label": "DeepSeek V4 Pro",
|
|
264
|
+
"enabled": true,
|
|
265
|
+
"family": "DeepSeek",
|
|
266
|
+
"version": "V4 Pro"
|
|
267
|
+
},
|
|
268
|
+
{
|
|
269
|
+
"id": "opencode-go/grok-4.5",
|
|
270
|
+
"label": "Grok 4.5",
|
|
271
|
+
"enabled": true,
|
|
272
|
+
"family": "Grok",
|
|
273
|
+
"version": "4.5"
|
|
274
|
+
},
|
|
275
|
+
{
|
|
276
|
+
"id": "opencode/nemotron-3-ultra-free",
|
|
277
|
+
"label": "Nemotron 3 Ultra (free)",
|
|
278
|
+
"enabled": true,
|
|
279
|
+
"family": "Nemotron",
|
|
280
|
+
"version": "3 Ultra Free"
|
|
281
|
+
},
|
|
282
|
+
{
|
|
283
|
+
"id": "opencode/laguna-s-2.1-free",
|
|
284
|
+
"label": "Laguna S 2.1 (free)",
|
|
285
|
+
"enabled": true,
|
|
286
|
+
"family": "Laguna",
|
|
287
|
+
"version": "S 2.1 Free"
|
|
288
|
+
}
|
|
289
|
+
]
|
|
290
|
+
},
|
|
291
|
+
{
|
|
292
|
+
"id": "pi",
|
|
293
|
+
"label": "Pi",
|
|
294
|
+
"enabled": true,
|
|
295
|
+
"reasoningEfforts": null,
|
|
296
|
+
"models": []
|
|
297
|
+
}
|
|
298
|
+
]
|
|
299
|
+
};
|
|
@@ -0,0 +1,192 @@
|
|
|
1
|
+
import { SCOUT_LAUNCHABLE_HARNESSES, SCOUT_REASONING_EFFORTS, } from "./runtime-catalog-contract.js";
|
|
2
|
+
const launchableHarnesses = new Set(SCOUT_LAUNCHABLE_HARNESSES);
|
|
3
|
+
const reasoningEfforts = new Set(SCOUT_REASONING_EFFORTS);
|
|
4
|
+
export const MAX_RUNTIME_MODELS_PER_HARNESS = 256;
|
|
5
|
+
function record(value) {
|
|
6
|
+
return value && typeof value === "object" && !Array.isArray(value)
|
|
7
|
+
? value
|
|
8
|
+
: null;
|
|
9
|
+
}
|
|
10
|
+
function text(value) {
|
|
11
|
+
return typeof value === "string" && value.trim() === value && value.length > 0
|
|
12
|
+
? value
|
|
13
|
+
: null;
|
|
14
|
+
}
|
|
15
|
+
function effortList(value, path, errors) {
|
|
16
|
+
if (value === null)
|
|
17
|
+
return null;
|
|
18
|
+
if (!Array.isArray(value)) {
|
|
19
|
+
errors.push(`${path} must be an array or null`);
|
|
20
|
+
return undefined;
|
|
21
|
+
}
|
|
22
|
+
const result = [];
|
|
23
|
+
const seen = new Set();
|
|
24
|
+
for (const candidate of value) {
|
|
25
|
+
if (typeof candidate !== "string" || !reasoningEfforts.has(candidate)) {
|
|
26
|
+
errors.push(`${path} contains unknown effort ${String(candidate)}`);
|
|
27
|
+
continue;
|
|
28
|
+
}
|
|
29
|
+
if (seen.add(candidate))
|
|
30
|
+
result.push(candidate);
|
|
31
|
+
else
|
|
32
|
+
errors.push(`${path} contains duplicate effort ${candidate}`);
|
|
33
|
+
}
|
|
34
|
+
return result;
|
|
35
|
+
}
|
|
36
|
+
function model(value, path, errors) {
|
|
37
|
+
const input = record(value);
|
|
38
|
+
if (!input) {
|
|
39
|
+
errors.push(`${path} must be an object`);
|
|
40
|
+
return null;
|
|
41
|
+
}
|
|
42
|
+
const id = text(input.id);
|
|
43
|
+
const label = text(input.label);
|
|
44
|
+
if (!id || !/^[A-Za-z0-9][A-Za-z0-9._/-]*$/u.test(id)) {
|
|
45
|
+
errors.push(`${path}.id must use provider-safe letters, numbers, dot, slash, underscore, or hyphen`);
|
|
46
|
+
}
|
|
47
|
+
if (!label)
|
|
48
|
+
errors.push(`${path}.label is required`);
|
|
49
|
+
if (typeof input.enabled !== "boolean")
|
|
50
|
+
errors.push(`${path}.enabled must be boolean`);
|
|
51
|
+
if (input.default === true && input.enabled !== true)
|
|
52
|
+
errors.push(`${path} cannot be default while disabled`);
|
|
53
|
+
if (!id || !label || typeof input.enabled !== "boolean")
|
|
54
|
+
return null;
|
|
55
|
+
const efforts = input.reasoningEfforts === undefined
|
|
56
|
+
? undefined
|
|
57
|
+
: effortList(input.reasoningEfforts, `${path}.reasoningEfforts`, errors);
|
|
58
|
+
const defaultEffort = input.defaultReasoningEffort == null ? null : text(input.defaultReasoningEffort);
|
|
59
|
+
const contextWindowTokens = input.contextWindowTokens;
|
|
60
|
+
if (contextWindowTokens !== undefined && (!Number.isInteger(contextWindowTokens) || Number(contextWindowTokens) <= 0)) {
|
|
61
|
+
errors.push(`${path}.contextWindowTokens must be a positive integer`);
|
|
62
|
+
}
|
|
63
|
+
if (input.defaultReasoningEffort != null && (!defaultEffort || !reasoningEfforts.has(defaultEffort))) {
|
|
64
|
+
errors.push(`${path}.defaultReasoningEffort is unknown`);
|
|
65
|
+
}
|
|
66
|
+
return {
|
|
67
|
+
id,
|
|
68
|
+
label,
|
|
69
|
+
enabled: input.enabled,
|
|
70
|
+
...(input.default === true ? { default: true } : {}),
|
|
71
|
+
...(text(input.description) ? { description: text(input.description) } : {}),
|
|
72
|
+
...(text(input.family) ? { family: text(input.family) } : {}),
|
|
73
|
+
...(text(input.version) ? { version: text(input.version) } : {}),
|
|
74
|
+
...(Number.isInteger(contextWindowTokens) && Number(contextWindowTokens) > 0
|
|
75
|
+
? { contextWindowTokens: Number(contextWindowTokens) }
|
|
76
|
+
: {}),
|
|
77
|
+
...(input.reasoningEfforts !== undefined ? { reasoningEfforts: efforts ?? null } : {}),
|
|
78
|
+
...(defaultEffort && reasoningEfforts.has(defaultEffort)
|
|
79
|
+
? { defaultReasoningEffort: defaultEffort }
|
|
80
|
+
: {}),
|
|
81
|
+
};
|
|
82
|
+
}
|
|
83
|
+
function harness(value, path, errors) {
|
|
84
|
+
const input = record(value);
|
|
85
|
+
if (!input) {
|
|
86
|
+
errors.push(`${path} must be an object`);
|
|
87
|
+
return null;
|
|
88
|
+
}
|
|
89
|
+
const id = text(input.id);
|
|
90
|
+
const label = text(input.label);
|
|
91
|
+
if (!id || !launchableHarnesses.has(id))
|
|
92
|
+
errors.push(`${path}.id is not a launchable harness`);
|
|
93
|
+
if (!label)
|
|
94
|
+
errors.push(`${path}.label is required`);
|
|
95
|
+
if (typeof input.enabled !== "boolean")
|
|
96
|
+
errors.push(`${path}.enabled must be boolean`);
|
|
97
|
+
if (input.listed !== undefined && typeof input.listed !== "boolean") {
|
|
98
|
+
errors.push(`${path}.listed must be boolean when provided`);
|
|
99
|
+
}
|
|
100
|
+
if (input.default === true && input.enabled !== true)
|
|
101
|
+
errors.push(`${path} cannot be default while disabled`);
|
|
102
|
+
const efforts = effortList(input.reasoningEfforts, `${path}.reasoningEfforts`, errors);
|
|
103
|
+
if (!id || !launchableHarnesses.has(id) || !label || typeof input.enabled !== "boolean" || efforts === undefined) {
|
|
104
|
+
return null;
|
|
105
|
+
}
|
|
106
|
+
if (!Array.isArray(input.models)) {
|
|
107
|
+
errors.push(`${path}.models must be an array`);
|
|
108
|
+
return null;
|
|
109
|
+
}
|
|
110
|
+
if (input.models.length > MAX_RUNTIME_MODELS_PER_HARNESS) {
|
|
111
|
+
errors.push(`${path}.models exceeds the ${MAX_RUNTIME_MODELS_PER_HARNESS}-model limit`);
|
|
112
|
+
return null;
|
|
113
|
+
}
|
|
114
|
+
const models = input.models
|
|
115
|
+
.map((entry, index) => model(entry, `${path}.models[${index}]`, errors))
|
|
116
|
+
.filter((entry) => Boolean(entry));
|
|
117
|
+
const ids = new Set();
|
|
118
|
+
for (const entry of models) {
|
|
119
|
+
if (!ids.add(entry.id))
|
|
120
|
+
errors.push(`${path} contains duplicate model ${entry.id}`);
|
|
121
|
+
const effective = entry.reasoningEfforts === undefined ? efforts : entry.reasoningEfforts;
|
|
122
|
+
if (entry.defaultReasoningEffort && !effective?.includes(entry.defaultReasoningEffort)) {
|
|
123
|
+
errors.push(`${path} model ${entry.id} has an unsupported default effort`);
|
|
124
|
+
}
|
|
125
|
+
}
|
|
126
|
+
if (models.filter((entry) => entry.default).length > 1)
|
|
127
|
+
errors.push(`${path} has more than one default model`);
|
|
128
|
+
for (const entry of models) {
|
|
129
|
+
if (entry.default && !entry.enabled)
|
|
130
|
+
errors.push(`${path} model ${entry.id} cannot be default while disabled`);
|
|
131
|
+
}
|
|
132
|
+
const defaultEffort = input.defaultReasoningEffort == null ? null : text(input.defaultReasoningEffort);
|
|
133
|
+
if (defaultEffort && !efforts?.includes(defaultEffort)) {
|
|
134
|
+
errors.push(`${path}.defaultReasoningEffort is not supported`);
|
|
135
|
+
}
|
|
136
|
+
return {
|
|
137
|
+
id: id,
|
|
138
|
+
label,
|
|
139
|
+
enabled: input.enabled,
|
|
140
|
+
...(typeof input.listed === "boolean" ? { listed: input.listed } : {}),
|
|
141
|
+
...(input.default === true ? { default: true } : {}),
|
|
142
|
+
reasoningEfforts: efforts,
|
|
143
|
+
...(defaultEffort && reasoningEfforts.has(defaultEffort)
|
|
144
|
+
? { defaultReasoningEffort: defaultEffort }
|
|
145
|
+
: {}),
|
|
146
|
+
models,
|
|
147
|
+
};
|
|
148
|
+
}
|
|
149
|
+
export function parseScoutRuntimeCatalog(value) {
|
|
150
|
+
const input = record(value);
|
|
151
|
+
if (!input)
|
|
152
|
+
return { ok: false, errors: ["catalog must be a JSON object"] };
|
|
153
|
+
const errors = [];
|
|
154
|
+
if (input.schemaVersion !== "openscout.runtime-catalog.v1")
|
|
155
|
+
errors.push("unexpected schemaVersion");
|
|
156
|
+
const revision = text(input.revision);
|
|
157
|
+
if (!revision || !/^\d{4}-\d{2}-\d{2}\.\d+$/u.test(revision)) {
|
|
158
|
+
errors.push("revision must use YYYY-MM-DD.N format");
|
|
159
|
+
}
|
|
160
|
+
if (!Array.isArray(input.harnesses) || input.harnesses.length === 0) {
|
|
161
|
+
errors.push("harnesses must be a non-empty array");
|
|
162
|
+
return { ok: false, errors };
|
|
163
|
+
}
|
|
164
|
+
const harnesses = input.harnesses
|
|
165
|
+
.map((entry, index) => harness(entry, `harnesses[${index}]`, errors))
|
|
166
|
+
.filter((entry) => Boolean(entry));
|
|
167
|
+
const ids = new Set();
|
|
168
|
+
const sharedModels = new Map();
|
|
169
|
+
for (const entry of harnesses) {
|
|
170
|
+
if (!ids.add(entry.id))
|
|
171
|
+
errors.push(`duplicate harness ${entry.id}`);
|
|
172
|
+
for (const model of entry.models) {
|
|
173
|
+
const signature = JSON.stringify([
|
|
174
|
+
model.label,
|
|
175
|
+
model.description ?? null,
|
|
176
|
+
model.family ?? null,
|
|
177
|
+
model.version ?? null,
|
|
178
|
+
model.contextWindowTokens ?? null,
|
|
179
|
+
]);
|
|
180
|
+
const prior = sharedModels.get(model.id);
|
|
181
|
+
if (prior && prior !== signature)
|
|
182
|
+
errors.push(`shared model ${model.id} has inconsistent metadata`);
|
|
183
|
+
sharedModels.set(model.id, signature);
|
|
184
|
+
}
|
|
185
|
+
}
|
|
186
|
+
if (harnesses.filter((entry) => entry.enabled && entry.default).length !== 1) {
|
|
187
|
+
errors.push("catalog must contain exactly one enabled default harness");
|
|
188
|
+
}
|
|
189
|
+
return errors.length || !revision
|
|
190
|
+
? { ok: false, errors }
|
|
191
|
+
: { ok: true, catalog: { schemaVersion: "openscout.runtime-catalog.v1", revision, harnesses } };
|
|
192
|
+
}
|
|
@@ -0,0 +1,161 @@
|
|
|
1
|
+
import { type ScoutLaunchableHarness, type ScoutOwnedRuntimeCatalog, type ScoutOwnedRuntimeHarness, type ScoutReasoningEffort } from "./runtime-catalog-contract.js";
|
|
2
|
+
export * from "./runtime-catalog-contract.js";
|
|
3
|
+
export interface ScoutRuntimeHarnessDefaults {
|
|
4
|
+
model: string | null;
|
|
5
|
+
reasoningEffort: ScoutReasoningEffort | null;
|
|
6
|
+
}
|
|
7
|
+
/**
|
|
8
|
+
* Scout's versioned product catalog. Harness vendors are execution adapters,
|
|
9
|
+
* not catalog authorities: availability, ordering, labels, defaults, and the
|
|
10
|
+
* per-model effort ladder come from runtime-catalog.v1.json. Running brokers
|
|
11
|
+
* may replace this bundled last-known-good seed with a newer valid revision.
|
|
12
|
+
*/
|
|
13
|
+
export declare const SCOUT_RUNTIME_CATALOG: ScoutOwnedRuntimeCatalog;
|
|
14
|
+
export declare function scoutRuntimeHarness(harness: string, catalog?: ScoutOwnedRuntimeCatalog): ScoutOwnedRuntimeHarness | undefined;
|
|
15
|
+
export declare function isScoutRuntimeHarnessEnabled(harness: string, catalog?: ScoutOwnedRuntimeCatalog): harness is ScoutLaunchableHarness;
|
|
16
|
+
/** Enabled and offered as its own picker row. Hidden transports remain legal. */
|
|
17
|
+
export declare function isScoutRuntimeHarnessListed(harness: string, catalog?: ScoutOwnedRuntimeCatalog): boolean;
|
|
18
|
+
export declare function scoutRuntimeDefaultHarness(catalog?: ScoutOwnedRuntimeCatalog): ScoutLaunchableHarness | null;
|
|
19
|
+
export declare function scoutRuntimeDefaultModel(harness: string, catalog?: ScoutOwnedRuntimeCatalog): string | null;
|
|
20
|
+
export declare function scoutRuntimeReasoningEfforts(harness: string, model?: string | null, catalog?: ScoutOwnedRuntimeCatalog): readonly ScoutReasoningEffort[] | null;
|
|
21
|
+
export declare function scoutRuntimeDefaultReasoningEffort(harness: string, model?: string | null, catalog?: ScoutOwnedRuntimeCatalog): ScoutReasoningEffort | null;
|
|
22
|
+
export declare function scoutRuntimeDefaultsByHarness(catalog?: ScoutOwnedRuntimeCatalog): Readonly<Partial<Record<ScoutLaunchableHarness, ScoutRuntimeHarnessDefaults>>>;
|
|
23
|
+
export declare const SCOUT_RUNTIME_DEFAULTS_BY_HARNESS: Readonly<Partial<Record<"codex" | "claude" | "grok" | "grok-acp" | "kimi" | "flue" | "cursor" | "opencode" | "pi", ScoutRuntimeHarnessDefaults>>>;
|
|
24
|
+
export declare const SCOUT_REASONING_EFFORTS_BY_HARNESS: Readonly<Partial<Record<ScoutLaunchableHarness, readonly ScoutReasoningEffort[]>>>;
|
|
25
|
+
export type ScoutRuntimeResolutionSource = "flag" | "literal" | "profile" | "endpoint" | "config" | "default";
|
|
26
|
+
export type ScoutRuntimeDriftState = "unknown" | "match" | "mismatch";
|
|
27
|
+
export interface ScoutRuntimeDimensionResolution {
|
|
28
|
+
requested?: string;
|
|
29
|
+
resolved?: string;
|
|
30
|
+
source?: ScoutRuntimeResolutionSource;
|
|
31
|
+
observed?: string;
|
|
32
|
+
observedAt?: number;
|
|
33
|
+
drift: ScoutRuntimeDriftState;
|
|
34
|
+
}
|
|
35
|
+
/**
|
|
36
|
+
* Durable execution truth for one concrete session. `requested` is caller
|
|
37
|
+
* intent, `resolved` is the spawn value after the launch ladder, and
|
|
38
|
+
* `observed` is populated only from harness-owned evidence.
|
|
39
|
+
*/
|
|
40
|
+
export interface ScoutExecutionResolution {
|
|
41
|
+
schemaVersion: "openscout.execution-resolution.v1";
|
|
42
|
+
harness: ScoutRuntimeDimensionResolution;
|
|
43
|
+
model: ScoutRuntimeDimensionResolution;
|
|
44
|
+
reasoningEffort: ScoutRuntimeDimensionResolution;
|
|
45
|
+
sessionId?: string;
|
|
46
|
+
resolvedAt?: number;
|
|
47
|
+
observedAt?: number;
|
|
48
|
+
}
|
|
49
|
+
export interface ScoutRuntimeModelOption {
|
|
50
|
+
id: string;
|
|
51
|
+
label: string;
|
|
52
|
+
description?: string;
|
|
53
|
+
harnesses: ScoutLaunchableHarness[];
|
|
54
|
+
source: "catalog" | "observed" | "configured" | "default";
|
|
55
|
+
family?: string;
|
|
56
|
+
version?: string;
|
|
57
|
+
}
|
|
58
|
+
export interface ScoutRuntimeEffortOption {
|
|
59
|
+
id: ScoutReasoningEffort;
|
|
60
|
+
label: string;
|
|
61
|
+
description?: string;
|
|
62
|
+
harnesses: ScoutLaunchableHarness[];
|
|
63
|
+
/**
|
|
64
|
+
* Model-scoped restriction, interpreted per harness: the rung is withheld
|
|
65
|
+
* only from catalog models of a harness that has at least one model named
|
|
66
|
+
* here. `max` naming `gpt-5.6-*` ids restricts Codex models but leaves
|
|
67
|
+
* Claude's ladder untouched. Empty/absent means every model of every listed
|
|
68
|
+
* harness supports the rung.
|
|
69
|
+
*/
|
|
70
|
+
models?: string[];
|
|
71
|
+
}
|
|
72
|
+
export interface ScoutRuntimeHarnessOption {
|
|
73
|
+
id: ScoutLaunchableHarness;
|
|
74
|
+
name?: string;
|
|
75
|
+
label: string;
|
|
76
|
+
description?: string | null;
|
|
77
|
+
state?: "ready" | "configured" | "installed" | "missing" | null;
|
|
78
|
+
ready?: boolean | null;
|
|
79
|
+
detail?: string | null;
|
|
80
|
+
}
|
|
81
|
+
export interface ScoutRuntimeCapabilityCatalog {
|
|
82
|
+
schemaVersion: "openscout.runtime-capabilities.v1";
|
|
83
|
+
catalogVersion?: ScoutOwnedRuntimeCatalog["schemaVersion"];
|
|
84
|
+
catalogRevision?: string;
|
|
85
|
+
generatedAt: number;
|
|
86
|
+
scope: "global" | "project" | "global+project";
|
|
87
|
+
projectRoot?: string;
|
|
88
|
+
harnesses: ScoutRuntimeHarnessOption[];
|
|
89
|
+
models: ScoutRuntimeModelOption[];
|
|
90
|
+
efforts: ScoutRuntimeEffortOption[];
|
|
91
|
+
defaults?: {
|
|
92
|
+
harness?: ScoutLaunchableHarness;
|
|
93
|
+
model?: string | null;
|
|
94
|
+
reasoningEffort?: ScoutReasoningEffort | null;
|
|
95
|
+
};
|
|
96
|
+
defaultsByHarness?: Partial<Record<ScoutLaunchableHarness, ScoutRuntimeHarnessDefaults>>;
|
|
97
|
+
warnings?: string[];
|
|
98
|
+
}
|
|
99
|
+
/** Project one nested catalog into the flat API model list. */
|
|
100
|
+
export declare function scoutRuntimeModelCatalog(catalog?: ScoutOwnedRuntimeCatalog): ScoutRuntimeModelOption[];
|
|
101
|
+
/** Projections retained for API compatibility; SCOUT_RUNTIME_CATALOG owns them. */
|
|
102
|
+
export declare const SCOUT_RUNTIME_MODEL_CATALOG: readonly ScoutRuntimeModelOption[];
|
|
103
|
+
export declare function scoutRuntimeEffortCatalog(catalog?: ScoutOwnedRuntimeCatalog): ScoutRuntimeEffortOption[];
|
|
104
|
+
export declare const SCOUT_RUNTIME_EFFORT_CATALOG: readonly ScoutRuntimeEffortOption[];
|
|
105
|
+
export type ScoutRuntimeTuple = {
|
|
106
|
+
harness?: string | null;
|
|
107
|
+
model?: string | null;
|
|
108
|
+
reasoningEffort?: string | null;
|
|
109
|
+
};
|
|
110
|
+
export interface ScoutRuntimeSpec {
|
|
111
|
+
harness: ScoutLaunchableHarness;
|
|
112
|
+
model?: string;
|
|
113
|
+
reasoningEffort?: ScoutReasoningEffort;
|
|
114
|
+
}
|
|
115
|
+
export type ScoutRuntimeSpecParseResult = {
|
|
116
|
+
ok: true;
|
|
117
|
+
value: ScoutRuntimeSpec;
|
|
118
|
+
} | {
|
|
119
|
+
ok: false;
|
|
120
|
+
error: string;
|
|
121
|
+
};
|
|
122
|
+
export type ScoutRuntimeModelNormalization = {
|
|
123
|
+
ok: true;
|
|
124
|
+
requested: string;
|
|
125
|
+
resolved: string;
|
|
126
|
+
} | {
|
|
127
|
+
ok: false;
|
|
128
|
+
requested: string;
|
|
129
|
+
error: string;
|
|
130
|
+
candidates?: string[];
|
|
131
|
+
};
|
|
132
|
+
/** Canonical model aliases shared by every request boundary and spawn path. */
|
|
133
|
+
export declare function normalizeScoutRuntimeModel(harness: string, input: string): ScoutRuntimeModelNormalization;
|
|
134
|
+
/** Parse the shell-safe `<harness>[/<model>[/<effort>]]` production. */
|
|
135
|
+
export declare function parseScoutRuntimeSpec(input: string): ScoutRuntimeSpecParseResult;
|
|
136
|
+
export declare function formatScoutRuntimeSpec(spec: ScoutRuntimeSpec): string;
|
|
137
|
+
export type ScoutRuntimeTupleIssue = {
|
|
138
|
+
code: "unsupported_harness" | "unsupported_reasoning_effort" | "reasoning_effort_harness_mismatch" | "unsupported_model_dimension" | "model_harness_mismatch";
|
|
139
|
+
dimension: "harness" | "model" | "reasoningEffort";
|
|
140
|
+
message: string;
|
|
141
|
+
};
|
|
142
|
+
export declare function isScoutLaunchableHarness(value: string | null | undefined): value is ScoutLaunchableHarness;
|
|
143
|
+
export declare function normalizeScoutReasoningEffort(value: string | null | undefined): ScoutReasoningEffort | null;
|
|
144
|
+
export declare function runtimeDimensionResolution(input: {
|
|
145
|
+
requested?: string | null;
|
|
146
|
+
resolved?: string | null;
|
|
147
|
+
source?: ScoutRuntimeResolutionSource;
|
|
148
|
+
observed?: string | null;
|
|
149
|
+
observedAt?: number;
|
|
150
|
+
}): ScoutRuntimeDimensionResolution;
|
|
151
|
+
export declare function createScoutExecutionResolution(input: {
|
|
152
|
+
requested?: ScoutRuntimeTuple;
|
|
153
|
+
resolved?: ScoutRuntimeTuple;
|
|
154
|
+
source?: Partial<Record<"harness" | "model" | "reasoningEffort", ScoutRuntimeResolutionSource>>;
|
|
155
|
+
observed?: ScoutRuntimeTuple;
|
|
156
|
+
sessionId?: string;
|
|
157
|
+
resolvedAt?: number;
|
|
158
|
+
observedAt?: number;
|
|
159
|
+
}): ScoutExecutionResolution;
|
|
160
|
+
export declare function validateScoutRuntimeTuple(input: ScoutRuntimeTuple, catalog?: Pick<ScoutRuntimeCapabilityCatalog, "models" | "efforts">): ScoutRuntimeTupleIssue[];
|
|
161
|
+
//# sourceMappingURL=runtime-execution.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"runtime-execution.d.ts","sourceRoot":"","sources":["../src/runtime-execution.ts"],"names":[],"mappings":"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"}
|