@openscout/protocol 0.2.97 → 0.2.102

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.
@@ -2,7 +2,7 @@
2
2
 
3
3
  export const SCOUT_RUNTIME_CATALOG_DATA = {
4
4
  "schemaVersion": "openscout.runtime-catalog.v1",
5
- "revision": "2026-09-01.1",
5
+ "revision": "2026-09-10.1",
6
6
  "harnesses": [
7
7
  {
8
8
  "id": "claude",
@@ -82,11 +82,27 @@ export const SCOUT_RUNTIME_CATALOG_DATA = {
82
82
  ],
83
83
  "defaultReasoningEffort": "medium",
84
84
  "models": [
85
+ {
86
+ "id": "gpt-6-astra",
87
+ "label": "6 Astra",
88
+ "enabled": true,
89
+ "default": true,
90
+ "description": "Most capable for complex reasoning, coding, computer use, research, and document creation",
91
+ "family": "GPT",
92
+ "version": "6 Astra",
93
+ "contextWindowTokens": 1050000,
94
+ "reasoningEfforts": [
95
+ "low",
96
+ "medium",
97
+ "high",
98
+ "xhigh",
99
+ "max"
100
+ ]
101
+ },
85
102
  {
86
103
  "id": "gpt-5.6-sol",
87
104
  "label": "5.6 Sol",
88
105
  "enabled": true,
89
- "default": true,
90
106
  "family": "GPT",
91
107
  "version": "5.6 Sol",
92
108
  "reasoningEfforts": [
@@ -145,7 +161,7 @@ export const SCOUT_RUNTIME_CATALOG_DATA = {
145
161
  "high",
146
162
  "xhigh"
147
163
  ],
148
- "defaultReasoningEffort": "medium",
164
+ "defaultReasoningEffort": "high",
149
165
  "models": [
150
166
  {
151
167
  "id": "grok-4.6",
@@ -161,14 +177,8 @@ export const SCOUT_RUNTIME_CATALOG_DATA = {
161
177
  "label": "Grok 4.5",
162
178
  "enabled": true,
163
179
  "family": "Grok",
164
- "version": "4.5"
165
- },
166
- {
167
- "id": "grok-4.3",
168
- "label": "Grok 4.3",
169
- "enabled": true,
170
- "family": "Grok",
171
- "version": "4.3"
180
+ "version": "4.5",
181
+ "contextWindowTokens": 500000
172
182
  }
173
183
  ]
174
184
  },
@@ -176,7 +186,13 @@ export const SCOUT_RUNTIME_CATALOG_DATA = {
176
186
  "id": "grok-acp",
177
187
  "label": "Grok",
178
188
  "enabled": true,
179
- "reasoningEfforts": null,
189
+ "reasoningEfforts": [
190
+ "low",
191
+ "medium",
192
+ "high",
193
+ "xhigh"
194
+ ],
195
+ "defaultReasoningEffort": "high",
180
196
  "models": [
181
197
  {
182
198
  "id": "grok-4.6",
@@ -192,14 +208,8 @@ export const SCOUT_RUNTIME_CATALOG_DATA = {
192
208
  "label": "Grok 4.5",
193
209
  "enabled": true,
194
210
  "family": "Grok",
195
- "version": "4.5"
196
- },
197
- {
198
- "id": "grok-4.3",
199
- "label": "Grok 4.3",
200
- "enabled": true,
201
- "family": "Grok",
202
- "version": "4.3"
211
+ "version": "4.5",
212
+ "contextWindowTokens": 500000
203
213
  }
204
214
  ]
205
215
  },
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "schemaVersion": "openscout.runtime-catalog.v1",
3
- "revision": "2026-09-01.1",
3
+ "revision": "2026-09-10.1",
4
4
  "harnesses": [
5
5
  {
6
6
  "id": "claude",
@@ -26,7 +26,8 @@
26
26
  "reasoningEfforts": ["low", "medium", "high", "xhigh"],
27
27
  "defaultReasoningEffort": "medium",
28
28
  "models": [
29
- { "id": "gpt-5.6-sol", "label": "5.6 Sol", "enabled": true, "default": true, "family": "GPT", "version": "5.6 Sol", "reasoningEfforts": ["low", "medium", "high", "xhigh", "ultra"] },
29
+ { "id": "gpt-6-astra", "label": "6 Astra", "enabled": true, "default": true, "description": "Most capable for complex reasoning, coding, computer use, research, and document creation", "family": "GPT", "version": "6 Astra", "contextWindowTokens": 1050000, "reasoningEfforts": ["low", "medium", "high", "xhigh", "max"] },
30
+ { "id": "gpt-5.6-sol", "label": "5.6 Sol", "enabled": true, "family": "GPT", "version": "5.6 Sol", "reasoningEfforts": ["low", "medium", "high", "xhigh", "ultra"] },
30
31
  { "id": "gpt-5.6-terra", "label": "5.6 Terra", "enabled": true, "family": "GPT", "version": "5.6 Terra", "reasoningEfforts": ["low", "medium", "high", "xhigh", "ultra"] },
31
32
  { "id": "gpt-5.6-luna", "label": "5.6 Luna", "enabled": true, "family": "GPT", "version": "5.6 Luna" },
32
33
  { "id": "gpt-5.5", "label": "5.5", "enabled": true, "family": "GPT", "version": "5.5" },
@@ -39,22 +40,21 @@
39
40
  "enabled": true,
40
41
  "listed": false,
41
42
  "reasoningEfforts": ["low", "medium", "high", "xhigh"],
42
- "defaultReasoningEffort": "medium",
43
+ "defaultReasoningEffort": "high",
43
44
  "models": [
44
45
  { "id": "grok-4.6", "label": "Grok 4.6", "enabled": true, "default": true, "family": "Grok", "version": "4.6", "contextWindowTokens": 500000 },
45
- { "id": "grok-4.5", "label": "Grok 4.5", "enabled": true, "family": "Grok", "version": "4.5" },
46
- { "id": "grok-4.3", "label": "Grok 4.3", "enabled": true, "family": "Grok", "version": "4.3" }
46
+ { "id": "grok-4.5", "label": "Grok 4.5", "enabled": true, "family": "Grok", "version": "4.5", "contextWindowTokens": 500000 }
47
47
  ]
48
48
  },
49
49
  {
50
50
  "id": "grok-acp",
51
51
  "label": "Grok",
52
52
  "enabled": true,
53
- "reasoningEfforts": null,
53
+ "reasoningEfforts": ["low", "medium", "high", "xhigh"],
54
+ "defaultReasoningEffort": "high",
54
55
  "models": [
55
56
  { "id": "grok-4.6", "label": "Grok 4.6", "enabled": true, "default": true, "family": "Grok", "version": "4.6", "contextWindowTokens": 500000 },
56
- { "id": "grok-4.5", "label": "Grok 4.5", "enabled": true, "family": "Grok", "version": "4.5" },
57
- { "id": "grok-4.3", "label": "Grok 4.3", "enabled": true, "family": "Grok", "version": "4.3" }
57
+ { "id": "grok-4.5", "label": "Grok 4.5", "enabled": true, "family": "Grok", "version": "4.5", "contextWindowTokens": 500000 }
58
58
  ]
59
59
  },
60
60
  { "id": "kimi", "label": "Kimi Code", "enabled": true, "reasoningEfforts": null, "models": [] },
@@ -322,6 +322,9 @@ export function normalizeScoutRuntimeModel(
322
322
  const normalizedHarness = harness.trim().toLowerCase();
323
323
  const lower = requested.toLowerCase();
324
324
  if (normalizedHarness === "codex") {
325
+ if (lower === "6" || lower === "gpt-6" || lower === "astra") {
326
+ return { ok: true, requested, resolved: "gpt-6-astra" };
327
+ }
325
328
  if (lower === "5.6" || lower === "gpt-5.6") {
326
329
  return { ok: true, requested, resolved: "gpt-5.6-sol" };
327
330
  }
@@ -63,6 +63,7 @@ export type ScoutOperatorSignal =
63
63
  replyExpectation: "required";
64
64
  /** What the agent is asking for. Never empty — that is the whole point. */
65
65
  question: string;
66
+ requestKind?: "permission";
66
67
  /** Optional discrete choices, when the answer is a selection. */
67
68
  options?: string[];
68
69
  /** Why the agent cannot continue without it. */
@@ -120,6 +120,21 @@ export type HerdrWorkspaceProjection = {
120
120
  tabs: HerdrTabProjection[];
121
121
  };
122
122
 
123
+ /**
124
+ * Why a projection is not live.
125
+ *
126
+ * `not_running` is the ordinary case: no herdr server answers for this session,
127
+ * so its persisted layout is the honest thing to show.
128
+ *
129
+ * `unreadable` is the case worth naming. A herdr server for this session IS
130
+ * running, but it did not answer the topology commands — a protocol skew
131
+ * between the installed client and a long-lived server is the common cause,
132
+ * and a busy server or a timeout look the same from here. Collapsing that into
133
+ * `not_running` would state, of live work, that it is not running. The
134
+ * projection says which it is so a reader never has to guess.
135
+ */
136
+ export type HerdrTopologyUnavailableReason = "not_running" | "unreadable";
137
+
123
138
  export type HerdrSessionTopology = {
124
139
  /** Herdr session name, e.g. "openscout". */
125
140
  session: string;
@@ -134,8 +149,23 @@ export type HerdrSessionTopology = {
134
149
  * projection is live.
135
150
  */
136
151
  savedAt?: number | null;
152
+ /**
153
+ * Why this projection is not live. Set only when `running` is false; absent
154
+ * on a live read. See {@link HerdrTopologyUnavailableReason}.
155
+ */
156
+ unavailable?: HerdrTopologyUnavailableReason | null;
137
157
  };
138
158
 
139
- export function emptyHerdrSessionTopology(session: string, running: boolean): HerdrSessionTopology {
140
- return { session, running, workspaces: [], observedAt: Date.now() };
159
+ export function emptyHerdrSessionTopology(
160
+ session: string,
161
+ running: boolean,
162
+ unavailable?: HerdrTopologyUnavailableReason | null,
163
+ ): HerdrSessionTopology {
164
+ return {
165
+ session,
166
+ running,
167
+ workspaces: [],
168
+ observedAt: Date.now(),
169
+ ...(running ? {} : { unavailable: unavailable ?? "not_running" }),
170
+ };
141
171
  }