@openscout/protocol 0.3.2 → 0.3.3

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.
@@ -1,6 +1,6 @@
1
1
  export declare const SCOUT_RUNTIME_CATALOG_DATA: {
2
2
  readonly schemaVersion: "openscout.runtime-catalog.v1";
3
- readonly revision: "2026-10-01.1";
3
+ readonly revision: "2026-10-05.1";
4
4
  readonly harnesses: readonly [{
5
5
  readonly id: "claude";
6
6
  readonly label: "Claude Code";
@@ -99,6 +99,19 @@ export declare const SCOUT_RUNTIME_CATALOG_DATA: {
99
99
  readonly presentation: {
100
100
  readonly detail: "Most capable";
101
101
  };
102
+ }, {
103
+ readonly id: "gpt-6.1-sol";
104
+ readonly label: "6.1 Sol";
105
+ readonly enabled: true;
106
+ readonly description: "Complex coding, computer use, and professional work at a lower cost than Astra";
107
+ readonly family: "GPT";
108
+ readonly version: "6.1 Sol";
109
+ readonly contextWindowTokens: 1050000;
110
+ readonly reasoningEfforts: readonly ["low", "medium", "high", "xhigh", "max", "ultra"];
111
+ readonly defaultReasoningEffort: "medium";
112
+ readonly presentation: {
113
+ readonly detail: "Latest";
114
+ };
102
115
  }, {
103
116
  readonly id: "gpt-6-sol";
104
117
  readonly label: "6 Sol";
@@ -1 +1 @@
1
- {"version":3,"file":"runtime-catalog.generated.d.ts","sourceRoot":"","sources":["../src/runtime-catalog.generated.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,0BAA0B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA0c7B,CAAC"}
1
+ {"version":3,"file":"runtime-catalog.generated.d.ts","sourceRoot":"","sources":["../src/runtime-catalog.generated.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,0BAA0B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA+d7B,CAAC"}
@@ -1,7 +1,7 @@
1
1
  // Generated automatically from runtime-catalog.v1.json. Do not edit.
2
2
  export const SCOUT_RUNTIME_CATALOG_DATA = {
3
3
  "schemaVersion": "openscout.runtime-catalog.v1",
4
- "revision": "2026-10-01.1",
4
+ "revision": "2026-10-05.1",
5
5
  "harnesses": [
6
6
  {
7
7
  "id": "claude",
@@ -130,6 +130,27 @@ export const SCOUT_RUNTIME_CATALOG_DATA = {
130
130
  "detail": "Most capable"
131
131
  }
132
132
  },
133
+ {
134
+ "id": "gpt-6.1-sol",
135
+ "label": "6.1 Sol",
136
+ "enabled": true,
137
+ "description": "Complex coding, computer use, and professional work at a lower cost than Astra",
138
+ "family": "GPT",
139
+ "version": "6.1 Sol",
140
+ "contextWindowTokens": 1050000,
141
+ "reasoningEfforts": [
142
+ "low",
143
+ "medium",
144
+ "high",
145
+ "xhigh",
146
+ "max",
147
+ "ultra"
148
+ ],
149
+ "defaultReasoningEffort": "medium",
150
+ "presentation": {
151
+ "detail": "Latest"
152
+ }
153
+ },
133
154
  {
134
155
  "id": "gpt-6-sol",
135
156
  "label": "6 Sol",
@@ -5,10 +5,10 @@ export interface ScoutRuntimeHarnessDefaults {
5
5
  reasoningEffort: ScoutReasoningEffort | null;
6
6
  }
7
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.
8
+ * Scout's published, versioned catalog controls enabled names, ordering,
9
+ * labels and model effort metadata. A running broker can adopt newer data
10
+ * without an app/package update. Adapters separately report harness readiness;
11
+ * actual execution errors remain authoritative for a particular task.
12
12
  */
13
13
  export declare const SCOUT_RUNTIME_CATALOG: ScoutOwnedRuntimeCatalog;
14
14
  export declare function scoutRuntimeHarness(harness: string, catalog?: ScoutOwnedRuntimeCatalog): ScoutOwnedRuntimeHarness | undefined;
@@ -131,6 +131,11 @@ export type ScoutRuntimeTuple = {
131
131
  harness?: string | null;
132
132
  model?: string | null;
133
133
  reasoningEffort?: string | null;
134
+ /** Existing task context remains usable after a published choice is disabled. */
135
+ session?: "new" | "reuse" | "existing" | "fork" | "any";
136
+ targetSessionId?: string;
137
+ forkFromSessionId?: string;
138
+ forkFromStateId?: string;
134
139
  };
135
140
  export interface ScoutRuntimeSpec {
136
141
  harness: ScoutLaunchableHarness;
@@ -161,12 +166,12 @@ export type ScoutRuntimeModelNormalization = {
161
166
  */
162
167
  export declare function scoutRuntimeLatestModelInFamily(harness: string, family: string, catalog?: ScoutOwnedRuntimeCatalog): string | undefined;
163
168
  /** Canonical model aliases shared by every request boundary and spawn path. */
164
- export declare function normalizeScoutRuntimeModel(harness: string, input: string): ScoutRuntimeModelNormalization;
169
+ export declare function normalizeScoutRuntimeModel(harness: string, input: string, catalog?: ScoutOwnedRuntimeCatalog): ScoutRuntimeModelNormalization;
165
170
  /** Parse the shell-safe `<harness>[/<model>[/<effort>]]` production. */
166
171
  export declare function parseScoutRuntimeSpec(input: string): ScoutRuntimeSpecParseResult;
167
172
  export declare function formatScoutRuntimeSpec(spec: ScoutRuntimeSpec): string;
168
173
  export type ScoutRuntimeTupleIssue = {
169
- code: "unsupported_harness" | "unsupported_reasoning_effort" | "reasoning_effort_harness_mismatch" | "unsupported_model_dimension" | "model_harness_mismatch";
174
+ code: "unsupported_harness" | "disabled_model" | "unsupported_reasoning_effort" | "reasoning_effort_harness_mismatch" | "unsupported_model_dimension" | "model_harness_mismatch";
170
175
  dimension: "harness" | "model" | "reasoningEffort";
171
176
  message: string;
172
177
  };
@@ -1 +1 @@
1
- {"version":3,"file":"runtime-execution.d.ts","sourceRoot":"","sources":["../src/runtime-execution.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"runtime-execution.d.ts","sourceRoot":"","sources":["../src/runtime-execution.ts"],"names":[],"mappings":"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"}
@@ -2,10 +2,10 @@ import { SCOUT_RUNTIME_CATALOG_DATA } from "./runtime-catalog.generated.js";
2
2
  import { SCOUT_LAUNCHABLE_HARNESSES, SCOUT_REASONING_EFFORT_LABELS, SCOUT_REASONING_EFFORTS, } from "./runtime-catalog-contract.js";
3
3
  export * from "./runtime-catalog-contract.js";
4
4
  /**
5
- * Scout's versioned product catalog. Harness vendors are execution adapters,
6
- * not catalog authorities: availability, ordering, labels, defaults, and the
7
- * per-model effort ladder come from runtime-catalog.v1.json. Running brokers
8
- * may replace this bundled last-known-good seed with a newer valid revision.
5
+ * Scout's published, versioned catalog controls enabled names, ordering,
6
+ * labels and model effort metadata. A running broker can adopt newer data
7
+ * without an app/package update. Adapters separately report harness readiness;
8
+ * actual execution errors remain authoritative for a particular task.
9
9
  */
10
10
  export const SCOUT_RUNTIME_CATALOG = SCOUT_RUNTIME_CATALOG_DATA;
11
11
  export function scoutRuntimeHarness(harness, catalog = SCOUT_RUNTIME_CATALOG) {
@@ -162,7 +162,7 @@ export function scoutRuntimeLatestModelInFamily(harness, family, catalog = SCOUT
162
162
  return (models.find((model) => model.default) ?? models[0])?.id;
163
163
  }
164
164
  /** Canonical model aliases shared by every request boundary and spawn path. */
165
- export function normalizeScoutRuntimeModel(harness, input) {
165
+ export function normalizeScoutRuntimeModel(harness, input, catalog = SCOUT_RUNTIME_CATALOG) {
166
166
  const requested = input.trim();
167
167
  if (!requested) {
168
168
  return { ok: false, requested, error: "model cannot be empty" };
@@ -183,7 +183,7 @@ export function normalizeScoutRuntimeModel(harness, input) {
183
183
  }
184
184
  if (normalizedHarness === "claude") {
185
185
  const family = CLAUDE_FAMILY_ALIASES[lower];
186
- const resolved = family ? scoutRuntimeLatestModelInFamily("claude", family) : undefined;
186
+ const resolved = family ? scoutRuntimeLatestModelInFamily("claude", family, catalog) : undefined;
187
187
  return { ok: true, requested, resolved: resolved ?? requested };
188
188
  }
189
189
  return { ok: true, requested, resolved: requested };
@@ -215,10 +215,8 @@ export function parseScoutRuntimeSpec(input) {
215
215
  error: `unsupported reasoning effort "${effortRaw}"; expected one of: ${SCOUT_REASONING_EFFORTS.join(", ")}`,
216
216
  };
217
217
  }
218
- const issues = validateScoutRuntimeTuple({ harness, model, reasoningEffort });
219
- if (issues.length > 0) {
220
- return { ok: false, error: issues.map((issue) => issue.message).join("; ") };
221
- }
218
+ // Parse syntax locally. The broker validates model/effort legality against
219
+ // its current published catalog, which can be newer than this CLI package.
222
220
  return {
223
221
  ok: true,
224
222
  value: {
@@ -295,9 +293,14 @@ export function createScoutExecutionResolution(input) {
295
293
  export function validateScoutRuntimeTuple(input, catalog, ownedCatalog = SCOUT_RUNTIME_CATALOG) {
296
294
  const rawHarness = input.harness?.trim().toLowerCase();
297
295
  const harness = rawHarness === "oc" ? "opencode" : rawHarness;
298
- const model = input.model?.trim();
296
+ const requestedModel = input.model?.trim();
297
+ const normalizedModel = harness && requestedModel
298
+ ? normalizeScoutRuntimeModel(harness, requestedModel, ownedCatalog) : null;
299
+ const model = normalizedModel?.ok ? normalizedModel.resolved : requestedModel;
299
300
  const effortRaw = input.reasoningEffort?.trim();
300
301
  const issues = [];
302
+ const existingContext = Boolean(input.targetSessionId || input.forkFromSessionId || input.forkFromStateId)
303
+ || input.session === "existing" || input.session === "fork";
301
304
  // Harness membership and model selectability come from the owned catalog —
302
305
  // the live broker snapshot when one is supplied, the bundled default
303
306
  // otherwise — never a hand-maintained list.
@@ -317,7 +320,7 @@ export function validateScoutRuntimeTuple(input, catalog, ownedCatalog = SCOUT_R
317
320
  message: `unsupported reasoning effort "${effortRaw}"; expected one of: ${SCOUT_REASONING_EFFORTS.join(", ")}`,
318
321
  });
319
322
  }
320
- else if (effort && harness) {
323
+ else if (effort && harness && !existingContext) {
321
324
  const catalogEffort = catalog?.efforts.find((candidate) => candidate.id === effort);
322
325
  let supported = catalogEffort
323
326
  ? catalogEffort.harnesses.includes(harness)
@@ -339,7 +342,16 @@ export function validateScoutRuntimeTuple(input, catalog, ownedCatalog = SCOUT_R
339
342
  });
340
343
  }
341
344
  }
342
- if (model && harness && !isModelSelectableHarness(harness, ownedCatalog)) {
345
+ const ownedHarness = harness ? scoutRuntimeHarness(harness, ownedCatalog) : undefined;
346
+ const publishedModel = ownedHarness?.models.find((candidate) => candidate.id.toLowerCase() === model?.toLowerCase());
347
+ if (model && publishedModel?.enabled === false && ownedHarness?.allowCustomModels !== true && !existingContext) {
348
+ issues.push({
349
+ code: "disabled_model",
350
+ dimension: "model",
351
+ message: `model "${model}" is disabled in the Scout runtime catalog`,
352
+ });
353
+ }
354
+ else if (model && harness && !existingContext && !isModelSelectableHarness(harness, ownedCatalog)) {
343
355
  issues.push({
344
356
  code: "unsupported_model_dimension",
345
357
  dimension: "model",
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@openscout/protocol",
3
- "version": "0.3.2",
3
+ "version": "0.3.3",
4
4
  "description": "Typed protocol for the OpenScout local control plane",
5
5
  "license": "Apache-2.0",
6
6
  "type": "module",
@@ -57,5 +57,5 @@
57
57
  "devDependencies": {
58
58
  "typescript": "^5"
59
59
  },
60
- "gitHead": "65d147203683d13f827837bb9c150d9d8a87b85e"
60
+ "gitHead": "2fed47b16bba310fa90ad47196b3eb5e697ea152"
61
61
  }
@@ -2,7 +2,7 @@
2
2
 
3
3
  export const SCOUT_RUNTIME_CATALOG_DATA = {
4
4
  "schemaVersion": "openscout.runtime-catalog.v1",
5
- "revision": "2026-10-01.1",
5
+ "revision": "2026-10-05.1",
6
6
  "harnesses": [
7
7
  {
8
8
  "id": "claude",
@@ -131,6 +131,27 @@ export const SCOUT_RUNTIME_CATALOG_DATA = {
131
131
  "detail": "Most capable"
132
132
  }
133
133
  },
134
+ {
135
+ "id": "gpt-6.1-sol",
136
+ "label": "6.1 Sol",
137
+ "enabled": true,
138
+ "description": "Complex coding, computer use, and professional work at a lower cost than Astra",
139
+ "family": "GPT",
140
+ "version": "6.1 Sol",
141
+ "contextWindowTokens": 1050000,
142
+ "reasoningEfforts": [
143
+ "low",
144
+ "medium",
145
+ "high",
146
+ "xhigh",
147
+ "max",
148
+ "ultra"
149
+ ],
150
+ "defaultReasoningEffort": "medium",
151
+ "presentation": {
152
+ "detail": "Latest"
153
+ }
154
+ },
134
155
  {
135
156
  "id": "gpt-6-sol",
136
157
  "label": "6 Sol",
@@ -1,21 +1,72 @@
1
1
  # Runtime model catalog
2
2
 
3
- The operator contract is intentionally one step:
3
+ Scout publishes its enabled models, labels, ordering, defaults, reasoning
4
+ choices and context windows as versioned JSON. The canonical source is
5
+ `packages/protocol/src/runtime-catalog.v1.json`; the public data endpoint is
6
+ `https://openscout.app/.well-known/runtime-catalog.v1.json`.
4
7
 
5
- 1. Edit `packages/protocol/src/runtime-catalog.v1.json`.
8
+ The catalog controls product choices. Harness adapters separately check the
9
+ local executable and readiness, then launch the selected identifier through
10
+ their normal integration. A provider rejection is reported as an execution
11
+ failure. An installed harness's advertised model list does not silently rewrite
12
+ Scout's published enabled list. A model in this catalog does not prove that a
13
+ particular provider account, client or workspace can use it.
6
14
 
7
- That is all. The deployed well-known route publishes the same JSON and every
8
- running `scoutd` checks it once a minute. Valid revisions replace the bundled
9
- or persisted last-known-good catalog; malformed or unreachable revisions are
10
- quarantined with a warning. No generator, daemon restart, app rebuild, or
11
- cache-bust command is part of a model update.
15
+ `Default` leaves the model and effort unspecified and uses the harness's own
16
+ configuration. A suggested catalog default does not replace that configuration.
17
+
18
+ ## Review and publish model data
19
+
20
+ 1. Optionally run `bun scripts/check-runtime-model-updates.ts`. This prints a
21
+ read-only comparison with [Models.dev's model metadata](https://models.dev/models.json).
22
+ It proposes new model facts and context-window changes; it does not enable
23
+ models, rename IDs, change defaults or publish anything. Upstream context
24
+ values describe provider/API metadata and may differ from a harness's usable
25
+ budget. Verify identifiers, context windows and reasoning controls against
26
+ the harness and provider documentation.
27
+ 2. Edit `packages/protocol/src/runtime-catalog.v1.json`, including each model's
28
+ explicit `enabled` flag. Increment its `YYYY-MM-DD.N` revision. New model
29
+ names are data; use exact launch identifiers rather than guessed aliases.
30
+ 3. Run `bun scripts/generate-runtime-catalog.ts` and then the same command with
31
+ `--check`. The generated bundled fallback and public-site mirror must match
32
+ the reviewed source. Review the data change and deploy the landing site
33
+ through the authorized local site process. No app rebuild, package publish,
34
+ daemon restart or hosted workflow is part of model-data publication.
35
+ 4. Run `bun scripts/generate-runtime-catalog.ts --verify-live` after deployment.
36
+ This read-only check requires the public JSON's revision and bytes to
37
+ match the generated source mirror; generating a local mirror alone does not prove publication.
38
+
39
+ Current clients check the published catalog once a minute, save the valid model
40
+ list and check time, and use conditional requests with the catalog ETag. The
41
+ saved list stays available offline, with the bundled catalog as a first-install
42
+ fallback. A separate upcoming client update changes the normal network check
43
+ to once a day and adds a **Refresh models** action that checks immediately.
44
+ Existing clients keep their one-minute refresh schedule until they receive
45
+ that client update. Ordinary model-data changes need no subsequent package
46
+ update.
12
47
 
13
48
  To intentionally restore older model contents, publish them under a new,
14
49
  higher revision. Scout rejects revision downgrades and same-revision content
15
50
  changes so retries cannot roll back or silently replace a catalog.
16
51
 
17
- Increment the `YYYY-MM-DD.N` `revision` and add the provider's exact model ID,
18
- label, harness, default, effort metadata, and `contextWindowTokens` when the
19
- provider publishes it. Do not infer an aggregator-qualified ID from a
20
- vendor announcement: xAI's `grok-4.6` proves the Grok IDs, but not an
52
+ Normal model additions, removals and metadata changes require only a JSON
53
+ publication. Adding a new harness or execution protocol can still require an
54
+ adapter update. Do not infer an aggregator-qualified ID from a vendor
55
+ announcement: xAI's `grok-4.6` proves the Grok ID, but not an
21
56
  `opencode-go/grok-4.6` ID.
57
+
58
+ Catalog requests can provide aggregate request-volume measurements in existing
59
+ hosting logs. Request volume is not a unique-user count: checks, manual
60
+ refreshes and retries affect it. The client sends no installation identifier,
61
+ project path, account data or model-selection event with a catalog request.
62
+
63
+ The `gpt-6.1-sol` entry is distinct from `gpt-6-sol`. OpenAI documents its exact
64
+ identifier, 1,050,000-token API context window and medium API default effort in
65
+ [the API model documentation](https://developers.openai.com/api/docs/models/gpt-6.1-sol).
66
+ The API effort list runs from low through max; Scout's Codex entry also includes
67
+ Ultra because [the Codex model guide](https://learn.chatgpt.com/docs/models)
68
+ documents Light through Ultra for this model, subject to plan, client and
69
+ workspace availability. Ultra is a Codex control, rather than an additional
70
+ API effort. Existing catalog defaults remain unchanged. This publication does
71
+ not prove that the mini's installed client or account can use the model, or
72
+ diagnose an older client's rejection.
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "schemaVersion": "openscout.runtime-catalog.v1",
3
- "revision": "2026-10-01.1",
3
+ "revision": "2026-10-05.1",
4
4
  "harnesses": [
5
5
  {
6
6
  "id": "claude",
@@ -30,6 +30,7 @@
30
30
  "presentation": { "short": "Codex", "monogram": "◈" },
31
31
  "models": [
32
32
  { "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"], "defaultReasoningEffort": "low", "presentation": { "detail": "Most capable" } },
33
+ { "id": "gpt-6.1-sol", "label": "6.1 Sol", "enabled": true, "description": "Complex coding, computer use, and professional work at a lower cost than Astra", "family": "GPT", "version": "6.1 Sol", "contextWindowTokens": 1050000, "reasoningEfforts": ["low", "medium", "high", "xhigh", "max", "ultra"], "defaultReasoningEffort": "medium", "presentation": { "detail": "Latest" } },
33
34
  { "id": "gpt-6-sol", "label": "6 Sol", "enabled": true, "description": "Complex coding and agentic workflows", "family": "GPT", "version": "6 Sol", "contextWindowTokens": 272000, "reasoningEfforts": ["low", "medium", "high", "xhigh", "max", "ultra"], "presentation": { "detail": "Coding" } },
34
35
  { "id": "gpt-6-luna", "label": "6 Luna", "enabled": true, "description": "Efficient focused coding and repeatable tasks", "family": "GPT", "version": "6 Luna", "contextWindowTokens": 272000, "reasoningEfforts": ["low", "medium", "high", "xhigh", "max"], "presentation": { "detail": "Efficient" } },
35
36
  { "id": "gpt-5.6-sol", "label": "5.6 Sol", "enabled": true, "family": "GPT", "version": "5.6 Sol", "reasoningEfforts": ["low", "medium", "high", "xhigh", "ultra"], "presentation": { "detail": "Frontier" } },
@@ -18,10 +18,10 @@ export interface ScoutRuntimeHarnessDefaults {
18
18
  }
19
19
 
20
20
  /**
21
- * Scout's versioned product catalog. Harness vendors are execution adapters,
22
- * not catalog authorities: availability, ordering, labels, defaults, and the
23
- * per-model effort ladder come from runtime-catalog.v1.json. Running brokers
24
- * may replace this bundled last-known-good seed with a newer valid revision.
21
+ * Scout's published, versioned catalog controls enabled names, ordering,
22
+ * labels and model effort metadata. A running broker can adopt newer data
23
+ * without an app/package update. Adapters separately report harness readiness;
24
+ * actual execution errors remain authoritative for a particular task.
25
25
  */
26
26
  export const SCOUT_RUNTIME_CATALOG: ScoutOwnedRuntimeCatalog = SCOUT_RUNTIME_CATALOG_DATA;
27
27
 
@@ -331,6 +331,11 @@ export type ScoutRuntimeTuple = {
331
331
  harness?: string | null;
332
332
  model?: string | null;
333
333
  reasoningEffort?: string | null;
334
+ /** Existing task context remains usable after a published choice is disabled. */
335
+ session?: "new" | "reuse" | "existing" | "fork" | "any";
336
+ targetSessionId?: string;
337
+ forkFromSessionId?: string;
338
+ forkFromStateId?: string;
334
339
  };
335
340
 
336
341
  export interface ScoutRuntimeSpec {
@@ -373,6 +378,7 @@ export function scoutRuntimeLatestModelInFamily(
373
378
  export function normalizeScoutRuntimeModel(
374
379
  harness: string,
375
380
  input: string,
381
+ catalog: ScoutOwnedRuntimeCatalog = SCOUT_RUNTIME_CATALOG,
376
382
  ): ScoutRuntimeModelNormalization {
377
383
  const requested = input.trim();
378
384
  if (!requested) {
@@ -394,7 +400,7 @@ export function normalizeScoutRuntimeModel(
394
400
  }
395
401
  if (normalizedHarness === "claude") {
396
402
  const family = CLAUDE_FAMILY_ALIASES[lower];
397
- const resolved = family ? scoutRuntimeLatestModelInFamily("claude", family) : undefined;
403
+ const resolved = family ? scoutRuntimeLatestModelInFamily("claude", family, catalog) : undefined;
398
404
  return { ok: true, requested, resolved: resolved ?? requested };
399
405
  }
400
406
  return { ok: true, requested, resolved: requested };
@@ -427,10 +433,8 @@ export function parseScoutRuntimeSpec(input: string): ScoutRuntimeSpecParseResul
427
433
  error: `unsupported reasoning effort "${effortRaw}"; expected one of: ${SCOUT_REASONING_EFFORTS.join(", ")}`,
428
434
  };
429
435
  }
430
- const issues = validateScoutRuntimeTuple({ harness, model, reasoningEffort });
431
- if (issues.length > 0) {
432
- return { ok: false, error: issues.map((issue) => issue.message).join("; ") };
433
- }
436
+ // Parse syntax locally. The broker validates model/effort legality against
437
+ // its current published catalog, which can be newer than this CLI package.
434
438
  return {
435
439
  ok: true,
436
440
  value: {
@@ -453,6 +457,7 @@ export function formatScoutRuntimeSpec(spec: ScoutRuntimeSpec): string {
453
457
  export type ScoutRuntimeTupleIssue = {
454
458
  code:
455
459
  | "unsupported_harness"
460
+ | "disabled_model"
456
461
  | "unsupported_reasoning_effort"
457
462
  | "reasoning_effort_harness_mismatch"
458
463
  | "unsupported_model_dimension"
@@ -544,9 +549,14 @@ export function validateScoutRuntimeTuple(
544
549
  ): ScoutRuntimeTupleIssue[] {
545
550
  const rawHarness = input.harness?.trim().toLowerCase();
546
551
  const harness = rawHarness === "oc" ? "opencode" : rawHarness;
547
- const model = input.model?.trim();
552
+ const requestedModel = input.model?.trim();
553
+ const normalizedModel = harness && requestedModel
554
+ ? normalizeScoutRuntimeModel(harness, requestedModel, ownedCatalog) : null;
555
+ const model = normalizedModel?.ok ? normalizedModel.resolved : requestedModel;
548
556
  const effortRaw = input.reasoningEffort?.trim();
549
557
  const issues: ScoutRuntimeTupleIssue[] = [];
558
+ const existingContext = Boolean(input.targetSessionId || input.forkFromSessionId || input.forkFromStateId)
559
+ || input.session === "existing" || input.session === "fork";
550
560
 
551
561
  // Harness membership and model selectability come from the owned catalog —
552
562
  // the live broker snapshot when one is supplied, the bundled default
@@ -567,7 +577,7 @@ export function validateScoutRuntimeTuple(
567
577
  dimension: "reasoningEffort",
568
578
  message: `unsupported reasoning effort "${effortRaw}"; expected one of: ${SCOUT_REASONING_EFFORTS.join(", ")}`,
569
579
  });
570
- } else if (effort && harness) {
580
+ } else if (effort && harness && !existingContext) {
571
581
  const catalogEffort = catalog?.efforts.find((candidate) => candidate.id === effort);
572
582
  let supported = catalogEffort
573
583
  ? catalogEffort.harnesses.includes(harness as ScoutLaunchableHarness)
@@ -594,7 +604,15 @@ export function validateScoutRuntimeTuple(
594
604
  }
595
605
  }
596
606
 
597
- if (model && harness && !isModelSelectableHarness(harness, ownedCatalog)) {
607
+ const ownedHarness = harness ? scoutRuntimeHarness(harness, ownedCatalog) : undefined;
608
+ const publishedModel = ownedHarness?.models.find((candidate) => candidate.id.toLowerCase() === model?.toLowerCase());
609
+ if (model && publishedModel?.enabled === false && ownedHarness?.allowCustomModels !== true && !existingContext) {
610
+ issues.push({
611
+ code: "disabled_model",
612
+ dimension: "model",
613
+ message: `model "${model}" is disabled in the Scout runtime catalog`,
614
+ });
615
+ } else if (model && harness && !existingContext && !isModelSelectableHarness(harness, ownedCatalog)) {
598
616
  issues.push({
599
617
  code: "unsupported_model_dimension",
600
618
  dimension: "model",