@autohq/cli 0.1.372 → 0.1.374
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/dist/agent-bridge.js +94 -4
- package/dist/index.js +96 -6
- package/package.json +1 -1
package/dist/agent-bridge.js
CHANGED
|
@@ -23492,7 +23492,7 @@ Object.assign(lookup, {
|
|
|
23492
23492
|
// package.json
|
|
23493
23493
|
var package_default = {
|
|
23494
23494
|
name: "@autohq/cli",
|
|
23495
|
-
version: "0.1.
|
|
23495
|
+
version: "0.1.374",
|
|
23496
23496
|
license: "SEE LICENSE IN README.md",
|
|
23497
23497
|
publishConfig: {
|
|
23498
23498
|
access: "public"
|
|
@@ -25412,10 +25412,15 @@ var AgentModelOpenRouterSchema = external_exports.object({
|
|
|
25412
25412
|
models: external_exports.array(external_exports.string().trim().min(1).regex(OPENROUTER_MODEL_SLUG_PATTERN)).min(1).max(3),
|
|
25413
25413
|
provider: AgentModelOpenRouterProviderPrefsSchema.optional()
|
|
25414
25414
|
}).strict();
|
|
25415
|
+
var AgentModelFallbackSchema = external_exports.object({
|
|
25416
|
+
provider: ModelApiTokenProviderSchema.optional(),
|
|
25417
|
+
id: external_exports.string().trim().min(1).max(256)
|
|
25418
|
+
}).strict();
|
|
25415
25419
|
var AgentModelSelectionSchema = external_exports.object({
|
|
25416
25420
|
provider: ModelApiTokenProviderSchema.optional(),
|
|
25417
25421
|
id: external_exports.string().trim().min(1).max(256),
|
|
25418
|
-
openrouter: AgentModelOpenRouterSchema.optional()
|
|
25422
|
+
openrouter: AgentModelOpenRouterSchema.optional(),
|
|
25423
|
+
fallbacks: external_exports.array(AgentModelFallbackSchema).min(1).max(2).optional()
|
|
25419
25424
|
}).strict();
|
|
25420
25425
|
var ResolvedAgentModelSelectionSchema = AgentModelSelectionSchema.extend({
|
|
25421
25426
|
provider: ModelApiTokenProviderSchema
|
|
@@ -25426,7 +25431,12 @@ var ModelRoutingOpenRouterSchema = external_exports.object({
|
|
|
25426
25431
|
}).strict();
|
|
25427
25432
|
var ModelRoutingConfigSchema = external_exports.object({
|
|
25428
25433
|
primaryModelId: external_exports.string().min(1),
|
|
25429
|
-
openrouter: ModelRoutingOpenRouterSchema.optional()
|
|
25434
|
+
openrouter: ModelRoutingOpenRouterSchema.optional(),
|
|
25435
|
+
// Capability 1 — the ordered same-provider fallback chain the gateway
|
|
25436
|
+
// rewrites `body.model` through when the primary exhausts the transient
|
|
25437
|
+
// retry loop. Mutually exclusive with `openrouter` by construction (the
|
|
25438
|
+
// authored fields are mutually exclusive at validation).
|
|
25439
|
+
fallbackModelIds: external_exports.array(external_exports.string().min(1)).min(1).max(2).optional()
|
|
25430
25440
|
}).strict();
|
|
25431
25441
|
var InvalidModelSelectionError = class extends Error {
|
|
25432
25442
|
constructor(message) {
|
|
@@ -25566,6 +25576,71 @@ function validateAgentModelOpenRouterForHarness(spec, context) {
|
|
|
25566
25576
|
seen.add(id);
|
|
25567
25577
|
}
|
|
25568
25578
|
}
|
|
25579
|
+
function validateAgentModelFallbacksForHarness(spec, context) {
|
|
25580
|
+
const fallbacks = spec.model?.fallbacks;
|
|
25581
|
+
if (!fallbacks || fallbacks.length === 0) {
|
|
25582
|
+
return;
|
|
25583
|
+
}
|
|
25584
|
+
if (spec.model?.openrouter) {
|
|
25585
|
+
context.addIssue({
|
|
25586
|
+
code: external_exports.ZodIssueCode.custom,
|
|
25587
|
+
path: ["model", "fallbacks"],
|
|
25588
|
+
message: "model.fallbacks and model.openrouter cannot be combined"
|
|
25589
|
+
});
|
|
25590
|
+
return;
|
|
25591
|
+
}
|
|
25592
|
+
const primary = spec.resolvedModel;
|
|
25593
|
+
if (!primary) {
|
|
25594
|
+
return;
|
|
25595
|
+
}
|
|
25596
|
+
const seenIds = /* @__PURE__ */ new Set([primary.id]);
|
|
25597
|
+
for (const [index, fallback] of fallbacks.entries()) {
|
|
25598
|
+
let resolved;
|
|
25599
|
+
try {
|
|
25600
|
+
resolved = resolveModelSelectionForHarness(spec.harness, {
|
|
25601
|
+
provider: fallback.provider ?? primary.provider,
|
|
25602
|
+
id: fallback.id
|
|
25603
|
+
});
|
|
25604
|
+
} catch (error51) {
|
|
25605
|
+
context.addIssue({
|
|
25606
|
+
code: external_exports.ZodIssueCode.custom,
|
|
25607
|
+
path: ["model", "fallbacks", index],
|
|
25608
|
+
message: error51 instanceof Error ? error51.message : String(error51)
|
|
25609
|
+
});
|
|
25610
|
+
continue;
|
|
25611
|
+
}
|
|
25612
|
+
if (resolved.provider !== primary.provider) {
|
|
25613
|
+
context.addIssue({
|
|
25614
|
+
code: external_exports.ZodIssueCode.custom,
|
|
25615
|
+
path: ["model", "fallbacks", index, "provider"],
|
|
25616
|
+
message: `model.fallbacks entries must resolve to the primary's provider (${primary.provider}); got ${resolved.provider}`
|
|
25617
|
+
});
|
|
25618
|
+
continue;
|
|
25619
|
+
}
|
|
25620
|
+
if (seenIds.has(resolved.id)) {
|
|
25621
|
+
context.addIssue({
|
|
25622
|
+
code: external_exports.ZodIssueCode.custom,
|
|
25623
|
+
path: ["model", "fallbacks", index, "id"],
|
|
25624
|
+
message: "model.fallbacks ids must be distinct and must not repeat the primary model id"
|
|
25625
|
+
});
|
|
25626
|
+
continue;
|
|
25627
|
+
}
|
|
25628
|
+
seenIds.add(resolved.id);
|
|
25629
|
+
try {
|
|
25630
|
+
validateReasoningEffortForHarness({
|
|
25631
|
+
harness: spec.harness,
|
|
25632
|
+
model: resolved,
|
|
25633
|
+
reasoningEffort: spec.reasoningEffort
|
|
25634
|
+
});
|
|
25635
|
+
} catch (error51) {
|
|
25636
|
+
context.addIssue({
|
|
25637
|
+
code: external_exports.ZodIssueCode.custom,
|
|
25638
|
+
path: ["model", "fallbacks", index],
|
|
25639
|
+
message: error51 instanceof Error ? error51.message : String(error51)
|
|
25640
|
+
});
|
|
25641
|
+
}
|
|
25642
|
+
}
|
|
25643
|
+
}
|
|
25569
25644
|
function validateAgentModelFieldsForHarness(spec, context) {
|
|
25570
25645
|
const harness = spec.harness;
|
|
25571
25646
|
if (harness !== "claude-code" && harness !== "codex") {
|
|
@@ -25600,6 +25675,15 @@ function validateAgentModelFieldsForHarness(spec, context) {
|
|
|
25600
25675
|
{ harness, model: spec.model, resolvedModel },
|
|
25601
25676
|
context
|
|
25602
25677
|
);
|
|
25678
|
+
validateAgentModelFallbacksForHarness(
|
|
25679
|
+
{
|
|
25680
|
+
harness,
|
|
25681
|
+
model: spec.model,
|
|
25682
|
+
reasoningEffort: spec.reasoningEffort,
|
|
25683
|
+
resolvedModel
|
|
25684
|
+
},
|
|
25685
|
+
context
|
|
25686
|
+
);
|
|
25603
25687
|
}
|
|
25604
25688
|
function validateModelProviderForHarness(harness, provider) {
|
|
25605
25689
|
const rules = modelRulesForHarness(harness);
|
|
@@ -28726,6 +28810,10 @@ var RunRuntimeRestartSchema = external_exports.object({
|
|
|
28726
28810
|
logTail: external_exports.string().nullable(),
|
|
28727
28811
|
logTailTruncated: external_exports.boolean()
|
|
28728
28812
|
});
|
|
28813
|
+
var RunModelFallbackSchema = external_exports.object({
|
|
28814
|
+
activatedAt: external_exports.string().datetime().nullable(),
|
|
28815
|
+
fallbackModelId: external_exports.string().nullable()
|
|
28816
|
+
});
|
|
28729
28817
|
var RunSummarySchema = external_exports.object({
|
|
28730
28818
|
session: external_exports.object({
|
|
28731
28819
|
id: SessionIdSchema2,
|
|
@@ -28811,7 +28899,9 @@ var RunSummarySchema = external_exports.object({
|
|
|
28811
28899
|
runtimeRestarts: external_exports.object({
|
|
28812
28900
|
count: external_exports.number().int().nonnegative(),
|
|
28813
28901
|
recent: external_exports.array(RunRuntimeRestartSchema)
|
|
28814
|
-
})
|
|
28902
|
+
}),
|
|
28903
|
+
/** Latest same-provider model-fallback activation for the session, if any. */
|
|
28904
|
+
modelFallback: RunModelFallbackSchema
|
|
28815
28905
|
});
|
|
28816
28906
|
|
|
28817
28907
|
// ../../packages/schemas/src/session-turns.ts
|
package/dist/index.js
CHANGED
|
@@ -16805,6 +16805,71 @@ function validateAgentModelOpenRouterForHarness(spec, context) {
|
|
|
16805
16805
|
seen.add(id);
|
|
16806
16806
|
}
|
|
16807
16807
|
}
|
|
16808
|
+
function validateAgentModelFallbacksForHarness(spec, context) {
|
|
16809
|
+
const fallbacks = spec.model?.fallbacks;
|
|
16810
|
+
if (!fallbacks || fallbacks.length === 0) {
|
|
16811
|
+
return;
|
|
16812
|
+
}
|
|
16813
|
+
if (spec.model?.openrouter) {
|
|
16814
|
+
context.addIssue({
|
|
16815
|
+
code: external_exports.ZodIssueCode.custom,
|
|
16816
|
+
path: ["model", "fallbacks"],
|
|
16817
|
+
message: "model.fallbacks and model.openrouter cannot be combined"
|
|
16818
|
+
});
|
|
16819
|
+
return;
|
|
16820
|
+
}
|
|
16821
|
+
const primary = spec.resolvedModel;
|
|
16822
|
+
if (!primary) {
|
|
16823
|
+
return;
|
|
16824
|
+
}
|
|
16825
|
+
const seenIds = /* @__PURE__ */ new Set([primary.id]);
|
|
16826
|
+
for (const [index, fallback] of fallbacks.entries()) {
|
|
16827
|
+
let resolved;
|
|
16828
|
+
try {
|
|
16829
|
+
resolved = resolveModelSelectionForHarness(spec.harness, {
|
|
16830
|
+
provider: fallback.provider ?? primary.provider,
|
|
16831
|
+
id: fallback.id
|
|
16832
|
+
});
|
|
16833
|
+
} catch (error51) {
|
|
16834
|
+
context.addIssue({
|
|
16835
|
+
code: external_exports.ZodIssueCode.custom,
|
|
16836
|
+
path: ["model", "fallbacks", index],
|
|
16837
|
+
message: error51 instanceof Error ? error51.message : String(error51)
|
|
16838
|
+
});
|
|
16839
|
+
continue;
|
|
16840
|
+
}
|
|
16841
|
+
if (resolved.provider !== primary.provider) {
|
|
16842
|
+
context.addIssue({
|
|
16843
|
+
code: external_exports.ZodIssueCode.custom,
|
|
16844
|
+
path: ["model", "fallbacks", index, "provider"],
|
|
16845
|
+
message: `model.fallbacks entries must resolve to the primary's provider (${primary.provider}); got ${resolved.provider}`
|
|
16846
|
+
});
|
|
16847
|
+
continue;
|
|
16848
|
+
}
|
|
16849
|
+
if (seenIds.has(resolved.id)) {
|
|
16850
|
+
context.addIssue({
|
|
16851
|
+
code: external_exports.ZodIssueCode.custom,
|
|
16852
|
+
path: ["model", "fallbacks", index, "id"],
|
|
16853
|
+
message: "model.fallbacks ids must be distinct and must not repeat the primary model id"
|
|
16854
|
+
});
|
|
16855
|
+
continue;
|
|
16856
|
+
}
|
|
16857
|
+
seenIds.add(resolved.id);
|
|
16858
|
+
try {
|
|
16859
|
+
validateReasoningEffortForHarness({
|
|
16860
|
+
harness: spec.harness,
|
|
16861
|
+
model: resolved,
|
|
16862
|
+
reasoningEffort: spec.reasoningEffort
|
|
16863
|
+
});
|
|
16864
|
+
} catch (error51) {
|
|
16865
|
+
context.addIssue({
|
|
16866
|
+
code: external_exports.ZodIssueCode.custom,
|
|
16867
|
+
path: ["model", "fallbacks", index],
|
|
16868
|
+
message: error51 instanceof Error ? error51.message : String(error51)
|
|
16869
|
+
});
|
|
16870
|
+
}
|
|
16871
|
+
}
|
|
16872
|
+
}
|
|
16808
16873
|
function validateAgentModelFieldsForHarness(spec, context) {
|
|
16809
16874
|
const harness = spec.harness;
|
|
16810
16875
|
if (harness !== "claude-code" && harness !== "codex") {
|
|
@@ -16839,6 +16904,15 @@ function validateAgentModelFieldsForHarness(spec, context) {
|
|
|
16839
16904
|
{ harness, model: spec.model, resolvedModel },
|
|
16840
16905
|
context
|
|
16841
16906
|
);
|
|
16907
|
+
validateAgentModelFallbacksForHarness(
|
|
16908
|
+
{
|
|
16909
|
+
harness,
|
|
16910
|
+
model: spec.model,
|
|
16911
|
+
reasoningEffort: spec.reasoningEffort,
|
|
16912
|
+
resolvedModel
|
|
16913
|
+
},
|
|
16914
|
+
context
|
|
16915
|
+
);
|
|
16842
16916
|
}
|
|
16843
16917
|
function validateModelProviderForHarness(harness, provider) {
|
|
16844
16918
|
const rules = modelRulesForHarness(harness);
|
|
@@ -16867,7 +16941,7 @@ function validateModelIdForProvider(input) {
|
|
|
16867
16941
|
`${input.provider} model ids are not open for ${input.harness}`
|
|
16868
16942
|
);
|
|
16869
16943
|
}
|
|
16870
|
-
var MODEL_API_TOKEN_PROVIDERS, ModelApiTokenProviderSchema, CLAUDE_CODE_REASONING_EFFORTS, CODEX_REASONING_EFFORTS, ClaudeCodeReasoningEffortSchema, CodexReasoningEffortSchema, AgentReasoningEffortSchema, OPENROUTER_MODEL_SLUG_PATTERN, AgentModelOpenRouterProviderPrefsSchema, AgentModelOpenRouterSchema, AgentModelSelectionSchema, ResolvedAgentModelSelectionSchema, ModelRoutingOpenRouterSchema, ModelRoutingConfigSchema, InvalidModelSelectionError, HARNESS_MODEL_RULES;
|
|
16944
|
+
var MODEL_API_TOKEN_PROVIDERS, ModelApiTokenProviderSchema, CLAUDE_CODE_REASONING_EFFORTS, CODEX_REASONING_EFFORTS, ClaudeCodeReasoningEffortSchema, CodexReasoningEffortSchema, AgentReasoningEffortSchema, OPENROUTER_MODEL_SLUG_PATTERN, AgentModelOpenRouterProviderPrefsSchema, AgentModelOpenRouterSchema, AgentModelFallbackSchema, AgentModelSelectionSchema, ResolvedAgentModelSelectionSchema, ModelRoutingOpenRouterSchema, ModelRoutingConfigSchema, InvalidModelSelectionError, HARNESS_MODEL_RULES;
|
|
16871
16945
|
var init_model_selection = __esm({
|
|
16872
16946
|
"../../packages/schemas/src/model-selection.ts"() {
|
|
16873
16947
|
"use strict";
|
|
@@ -16918,10 +16992,15 @@ var init_model_selection = __esm({
|
|
|
16918
16992
|
models: external_exports.array(external_exports.string().trim().min(1).regex(OPENROUTER_MODEL_SLUG_PATTERN)).min(1).max(3),
|
|
16919
16993
|
provider: AgentModelOpenRouterProviderPrefsSchema.optional()
|
|
16920
16994
|
}).strict();
|
|
16995
|
+
AgentModelFallbackSchema = external_exports.object({
|
|
16996
|
+
provider: ModelApiTokenProviderSchema.optional(),
|
|
16997
|
+
id: external_exports.string().trim().min(1).max(256)
|
|
16998
|
+
}).strict();
|
|
16921
16999
|
AgentModelSelectionSchema = external_exports.object({
|
|
16922
17000
|
provider: ModelApiTokenProviderSchema.optional(),
|
|
16923
17001
|
id: external_exports.string().trim().min(1).max(256),
|
|
16924
|
-
openrouter: AgentModelOpenRouterSchema.optional()
|
|
17002
|
+
openrouter: AgentModelOpenRouterSchema.optional(),
|
|
17003
|
+
fallbacks: external_exports.array(AgentModelFallbackSchema).min(1).max(2).optional()
|
|
16925
17004
|
}).strict();
|
|
16926
17005
|
ResolvedAgentModelSelectionSchema = AgentModelSelectionSchema.extend({
|
|
16927
17006
|
provider: ModelApiTokenProviderSchema
|
|
@@ -16932,7 +17011,12 @@ var init_model_selection = __esm({
|
|
|
16932
17011
|
}).strict();
|
|
16933
17012
|
ModelRoutingConfigSchema = external_exports.object({
|
|
16934
17013
|
primaryModelId: external_exports.string().min(1),
|
|
16935
|
-
openrouter: ModelRoutingOpenRouterSchema.optional()
|
|
17014
|
+
openrouter: ModelRoutingOpenRouterSchema.optional(),
|
|
17015
|
+
// Capability 1 — the ordered same-provider fallback chain the gateway
|
|
17016
|
+
// rewrites `body.model` through when the primary exhausts the transient
|
|
17017
|
+
// retry loop. Mutually exclusive with `openrouter` by construction (the
|
|
17018
|
+
// authored fields are mutually exclusive at validation).
|
|
17019
|
+
fallbackModelIds: external_exports.array(external_exports.string().min(1)).min(1).max(2).optional()
|
|
16936
17020
|
}).strict();
|
|
16937
17021
|
InvalidModelSelectionError = class extends Error {
|
|
16938
17022
|
constructor(message) {
|
|
@@ -20291,7 +20375,7 @@ var init_runtime_restart_diagnostics = __esm({
|
|
|
20291
20375
|
});
|
|
20292
20376
|
|
|
20293
20377
|
// ../../packages/schemas/src/session-introspection.ts
|
|
20294
|
-
var TruncatedValueSchema, RunConversationSearchSnippetSchema, RunConversationSearchMatchSchema, RunConversationSearchResponseSchema, SessionToolExchangeSchema, SessionToolExchangesResponseSchema, SESSION_TRIGGER_DELIVERY_ACTIONS, SessionTriggerDeliveryActionSchema, SESSION_EVENT_ORIGIN_KINDS, SessionEventOriginKindSchema, SessionTriggerDeliveryRecordSchema, SessionTriggersResponseSchema, RunBindingRecordSchema, RunBindingsResponseSchema, RunTurnSchema, SessionToolStatSchema, RunRuntimeRestartSchema, RunSummarySchema;
|
|
20378
|
+
var TruncatedValueSchema, RunConversationSearchSnippetSchema, RunConversationSearchMatchSchema, RunConversationSearchResponseSchema, SessionToolExchangeSchema, SessionToolExchangesResponseSchema, SESSION_TRIGGER_DELIVERY_ACTIONS, SessionTriggerDeliveryActionSchema, SESSION_EVENT_ORIGIN_KINDS, SessionEventOriginKindSchema, SessionTriggerDeliveryRecordSchema, SessionTriggersResponseSchema, RunBindingRecordSchema, RunBindingsResponseSchema, RunTurnSchema, SessionToolStatSchema, RunRuntimeRestartSchema, RunModelFallbackSchema, RunSummarySchema;
|
|
20295
20379
|
var init_session_introspection = __esm({
|
|
20296
20380
|
"../../packages/schemas/src/session-introspection.ts"() {
|
|
20297
20381
|
"use strict";
|
|
@@ -20442,6 +20526,10 @@ var init_session_introspection = __esm({
|
|
|
20442
20526
|
logTail: external_exports.string().nullable(),
|
|
20443
20527
|
logTailTruncated: external_exports.boolean()
|
|
20444
20528
|
});
|
|
20529
|
+
RunModelFallbackSchema = external_exports.object({
|
|
20530
|
+
activatedAt: external_exports.string().datetime().nullable(),
|
|
20531
|
+
fallbackModelId: external_exports.string().nullable()
|
|
20532
|
+
});
|
|
20445
20533
|
RunSummarySchema = external_exports.object({
|
|
20446
20534
|
session: external_exports.object({
|
|
20447
20535
|
id: SessionIdSchema,
|
|
@@ -20527,7 +20615,9 @@ var init_session_introspection = __esm({
|
|
|
20527
20615
|
runtimeRestarts: external_exports.object({
|
|
20528
20616
|
count: external_exports.number().int().nonnegative(),
|
|
20529
20617
|
recent: external_exports.array(RunRuntimeRestartSchema)
|
|
20530
|
-
})
|
|
20618
|
+
}),
|
|
20619
|
+
/** Latest same-provider model-fallback activation for the session, if any. */
|
|
20620
|
+
modelFallback: RunModelFallbackSchema
|
|
20531
20621
|
});
|
|
20532
20622
|
}
|
|
20533
20623
|
});
|
|
@@ -31744,7 +31834,7 @@ var init_package = __esm({
|
|
|
31744
31834
|
"package.json"() {
|
|
31745
31835
|
package_default = {
|
|
31746
31836
|
name: "@autohq/cli",
|
|
31747
|
-
version: "0.1.
|
|
31837
|
+
version: "0.1.374",
|
|
31748
31838
|
license: "SEE LICENSE IN README.md",
|
|
31749
31839
|
publishConfig: {
|
|
31750
31840
|
access: "public"
|