@dotobokuri/fleet-console 1.61.0 → 1.63.0
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/README.md +2 -1
- package/dist/cli.mjs +242 -29
- package/dist/client/assets/{_baseUniq-9W447fNf.js → _baseUniq-CVUU389k.js} +1 -1
- package/dist/client/assets/{arc-hoitnVWi.js → arc-Fg3WjPoW.js} +1 -1
- package/dist/client/assets/{architectureDiagram-Q4EWVU46-DYd58Vfc.js → architectureDiagram-Q4EWVU46-gAB_QWIv.js} +1 -1
- package/dist/client/assets/{blockDiagram-DXYQGD6D-kuFqPdP_.js → blockDiagram-DXYQGD6D-DCY_3CSv.js} +1 -1
- package/dist/client/assets/{c4Diagram-AHTNJAMY-C7n41zCn.js → c4Diagram-AHTNJAMY-2ai4d9rg.js} +1 -1
- package/dist/client/assets/channel-DlA1BRCV.js +1 -0
- package/dist/client/assets/{chunk-4BX2VUAB-DrHeb54-.js → chunk-4BX2VUAB-C-sjgNCE.js} +1 -1
- package/dist/client/assets/{chunk-4TB4RGXK-DFjT6kwT.js → chunk-4TB4RGXK-Co7w9KaD.js} +1 -1
- package/dist/client/assets/{chunk-55IACEB6-DxEzuA7W.js → chunk-55IACEB6-Dspr2174.js} +1 -1
- package/dist/client/assets/{chunk-EDXVE4YY-aAlF0YEo.js → chunk-EDXVE4YY-UzzG0ax3.js} +1 -1
- package/dist/client/assets/{chunk-FMBD7UC4-DwqRMFL1.js → chunk-FMBD7UC4-DKXcUQqJ.js} +1 -1
- package/dist/client/assets/{chunk-OYMX7WX6-DCkUlaRi.js → chunk-OYMX7WX6-vW--qrkP.js} +1 -1
- package/dist/client/assets/{chunk-QZHKN3VN-B1Dx8Zhl.js → chunk-QZHKN3VN-DyE-yBhf.js} +1 -1
- package/dist/client/assets/{chunk-YZCP3GAM-J2bgJmn-.js → chunk-YZCP3GAM-C7LLTO2-.js} +1 -1
- package/dist/client/assets/classDiagram-6PBFFD2Q-rBpGSdtk.js +1 -0
- package/dist/client/assets/classDiagram-v2-HSJHXN6E-rBpGSdtk.js +1 -0
- package/dist/client/assets/clone-_1aYWCbr.js +1 -0
- package/dist/client/assets/{cose-bilkent-S5V4N54A-BxzLzyJp.js → cose-bilkent-S5V4N54A-BkDNeJiw.js} +1 -1
- package/dist/client/assets/{dagre-KV5264BT-D1ixDJxZ.js → dagre-KV5264BT-DqeN9oF3.js} +1 -1
- package/dist/client/assets/{diagram-5BDNPKRD-DZPIz1Pa.js → diagram-5BDNPKRD-BXzt4-3Y.js} +1 -1
- package/dist/client/assets/{diagram-G4DWMVQ6-Pbcr-a5H.js → diagram-G4DWMVQ6-DbzDYVOf.js} +1 -1
- package/dist/client/assets/{diagram-MMDJMWI5-CBssBmPY.js → diagram-MMDJMWI5-wPQu3o7B.js} +1 -1
- package/dist/client/assets/{diagram-TYMM5635-cVQUs6jp.js → diagram-TYMM5635-C-vwFwzf.js} +1 -1
- package/dist/client/assets/{erDiagram-SMLLAGMA-ChMSAXos.js → erDiagram-SMLLAGMA-CcukuTgN.js} +1 -1
- package/dist/client/assets/{flowDiagram-DWJPFMVM-FEIrU5mu.js → flowDiagram-DWJPFMVM-BT8ZNr2Y.js} +1 -1
- package/dist/client/assets/{ganttDiagram-T4ZO3ILL-D6ELHTJY.js → ganttDiagram-T4ZO3ILL-B_wNcZrL.js} +1 -1
- package/dist/client/assets/{gitGraphDiagram-UUTBAWPF-DTJ6HgV4.js → gitGraphDiagram-UUTBAWPF-dUwwvDSd.js} +1 -1
- package/dist/client/assets/{graph-uscjDdHm.js → graph-C4i_jr7e.js} +1 -1
- package/dist/client/assets/index-BXtDpU36.js +465 -0
- package/dist/client/assets/index-CLb_APbh.css +1 -0
- package/dist/client/assets/{infoDiagram-42DDH7IO-C2AlA___.js → infoDiagram-42DDH7IO-Bf2KPu0t.js} +1 -1
- package/dist/client/assets/{ishikawaDiagram-UXIWVN3A-BZGfIhBp.js → ishikawaDiagram-UXIWVN3A-DjHChg2o.js} +1 -1
- package/dist/client/assets/{journeyDiagram-VCZTEJTY-DnGNMdvj.js → journeyDiagram-VCZTEJTY-B08epGYF.js} +1 -1
- package/dist/client/assets/{kanban-definition-6JOO6SKY-BkuplZGR.js → kanban-definition-6JOO6SKY-BFasXRgc.js} +1 -1
- package/dist/client/assets/{layout-BBayH8iU.js → layout-Q_W10VzL.js} +1 -1
- package/dist/client/assets/{linear-BQvaHed0.js → linear-Dy4fc5kq.js} +1 -1
- package/dist/client/assets/{mermaid.core-CO0f3d6Y.js → mermaid.core-OtTy8N5f.js} +4 -4
- package/dist/client/assets/{min-B610GdeY.js → min-DODD7JTz.js} +1 -1
- package/dist/client/assets/{mindmap-definition-QFDTVHPH-gwkhgCyj.js → mindmap-definition-QFDTVHPH-DMhpsiYD.js} +1 -1
- package/dist/client/assets/{pieDiagram-DEJITSTG-DYU2zgk8.js → pieDiagram-DEJITSTG-C5usaVgs.js} +1 -1
- package/dist/client/assets/{quadrantDiagram-34T5L4WZ-B5Vkk65i.js → quadrantDiagram-34T5L4WZ-B-b2NvBz.js} +1 -1
- package/dist/client/assets/{requirementDiagram-MS252O5E-D4EcF7kq.js → requirementDiagram-MS252O5E-D6_4jY3n.js} +1 -1
- package/dist/client/assets/{sankeyDiagram-XADWPNL6-DFk-RMV4.js → sankeyDiagram-XADWPNL6-B6imEhCV.js} +1 -1
- package/dist/client/assets/{sequenceDiagram-FGHM5R23-B-beo9e0.js → sequenceDiagram-FGHM5R23-BRHNnuqK.js} +1 -1
- package/dist/client/assets/{stateDiagram-FHFEXIEX-VDT0TOd7.js → stateDiagram-FHFEXIEX-RiIddIHL.js} +1 -1
- package/dist/client/assets/stateDiagram-v2-QKLJ7IA2-CsHfIgMa.js +1 -0
- package/dist/client/assets/{timeline-definition-GMOUNBTQ-By4DMNqG.js → timeline-definition-GMOUNBTQ-BhP14Blt.js} +1 -1
- package/dist/client/assets/{vennDiagram-DHZGUBPP-DzlBrijd.js → vennDiagram-DHZGUBPP-CtzwrBNs.js} +1 -1
- package/dist/client/assets/{wardley-RL74JXVD-BHSHTMU6.js → wardley-RL74JXVD-TXsee18-.js} +1 -1
- package/dist/client/assets/{wardleyDiagram-NUSXRM2D-COB-cWHQ.js → wardleyDiagram-NUSXRM2D-CrJP7pf7.js} +1 -1
- package/dist/client/assets/{xychartDiagram-5P7HB3ND-C-GVSBHd.js → xychartDiagram-5P7HB3ND-rB-PigjI.js} +1 -1
- package/dist/client/index.html +2 -2
- package/dist/fleet-plugins/ledger/routes.mjs +19829 -428
- package/dist/fleet-plugins/quota/routes.mjs +213 -15
- package/dist/fleet-plugins/scuttlebutt/routes.mjs +226 -26
- package/dist/fleet-plugins/terminal/routes.mjs +7324 -5930
- package/dist/fleet.mjs +6710 -6046
- package/package.json +2 -2
- package/dist/client/assets/channel-D2TsEFjE.js +0 -1
- package/dist/client/assets/classDiagram-6PBFFD2Q-DhjJiPic.js +0 -1
- package/dist/client/assets/classDiagram-v2-HSJHXN6E-DhjJiPic.js +0 -1
- package/dist/client/assets/clone-DwVC2-Mi.js +0 -1
- package/dist/client/assets/index-DMjY1OQ0.js +0 -465
- package/dist/client/assets/index-Ec4RaE0g.css +0 -1
- package/dist/client/assets/stateDiagram-v2-QKLJ7IA2-wHPBl_p1.js +0 -1
- /package/{AGENTS.md → CLAUDE.md} +0 -0
|
@@ -18032,12 +18032,12 @@ var benchmarks_default = {
|
|
|
18032
18032
|
};
|
|
18033
18033
|
var models_default = {
|
|
18034
18034
|
version: 1,
|
|
18035
|
-
updatedAt: "2026-08-
|
|
18035
|
+
updatedAt: "2026-08-17T00:00:00Z",
|
|
18036
18036
|
providers: {
|
|
18037
18037
|
codex: {
|
|
18038
18038
|
name: "Codex",
|
|
18039
18039
|
defaultModel: "gpt-5.6-sol",
|
|
18040
|
-
source: "codex app-server model/list (codex-cli 0.147.0, 2026-08-11
|
|
18040
|
+
source: "codex app-server model/list (codex-cli 0.147.0, observed 2026-08-11) for model/effort/service-tier; Fleet catalog effort ladders are capped at max because harness launch capabilities are not model rungs; contextWindow=272000 is codex debug models context_window/max_context_window (codex-cli 0.146.0, observed 2026-08-02)",
|
|
18041
18041
|
models: [
|
|
18042
18042
|
{
|
|
18043
18043
|
modelId: "gpt-5.6-sol",
|
|
@@ -18051,8 +18051,7 @@ var models_default = {
|
|
|
18051
18051
|
"medium",
|
|
18052
18052
|
"high",
|
|
18053
18053
|
"xhigh",
|
|
18054
|
-
"max"
|
|
18055
|
-
"ultra"
|
|
18054
|
+
"max"
|
|
18056
18055
|
]
|
|
18057
18056
|
},
|
|
18058
18057
|
aliases: [
|
|
@@ -18074,8 +18073,7 @@ var models_default = {
|
|
|
18074
18073
|
"medium",
|
|
18075
18074
|
"high",
|
|
18076
18075
|
"xhigh",
|
|
18077
|
-
"max"
|
|
18078
|
-
"ultra"
|
|
18076
|
+
"max"
|
|
18079
18077
|
]
|
|
18080
18078
|
},
|
|
18081
18079
|
aliases: [
|
|
@@ -18095,8 +18093,7 @@ var models_default = {
|
|
|
18095
18093
|
"medium",
|
|
18096
18094
|
"high",
|
|
18097
18095
|
"xhigh",
|
|
18098
|
-
"max"
|
|
18099
|
-
"ultra"
|
|
18096
|
+
"max"
|
|
18100
18097
|
]
|
|
18101
18098
|
},
|
|
18102
18099
|
aliases: [
|
|
@@ -18118,8 +18115,7 @@ var models_default = {
|
|
|
18118
18115
|
"medium",
|
|
18119
18116
|
"high",
|
|
18120
18117
|
"xhigh",
|
|
18121
|
-
"max"
|
|
18122
|
-
"ultra"
|
|
18118
|
+
"max"
|
|
18123
18119
|
]
|
|
18124
18120
|
},
|
|
18125
18121
|
aliases: [
|
|
@@ -18530,6 +18526,115 @@ var models_default = {
|
|
|
18530
18526
|
}
|
|
18531
18527
|
]
|
|
18532
18528
|
}
|
|
18529
|
+
},
|
|
18530
|
+
pricing: {
|
|
18531
|
+
source: "openrouter",
|
|
18532
|
+
observedAt: "2026-08-16T00:00:00Z",
|
|
18533
|
+
models: {
|
|
18534
|
+
"openai/gpt-5.6-sol": {
|
|
18535
|
+
inputCostPerToken: 5e-6,
|
|
18536
|
+
outputCostPerToken: 3e-5,
|
|
18537
|
+
cacheReadInputTokenCost: 5e-7,
|
|
18538
|
+
cacheCreationInputTokenCost: 625e-8,
|
|
18539
|
+
aliases: [
|
|
18540
|
+
"gpt-5.6-sol"
|
|
18541
|
+
]
|
|
18542
|
+
},
|
|
18543
|
+
"openai/gpt-5.6-terra": {
|
|
18544
|
+
inputCostPerToken: 1e-6,
|
|
18545
|
+
outputCostPerToken: 6e-6,
|
|
18546
|
+
cacheReadInputTokenCost: 1e-7,
|
|
18547
|
+
cacheCreationInputTokenCost: 125e-8,
|
|
18548
|
+
aliases: [
|
|
18549
|
+
"gpt-5.6-terra"
|
|
18550
|
+
]
|
|
18551
|
+
},
|
|
18552
|
+
"openai/gpt-5.6-luna": {
|
|
18553
|
+
inputCostPerToken: 1e-7,
|
|
18554
|
+
outputCostPerToken: 6e-7,
|
|
18555
|
+
cacheReadInputTokenCost: 1e-8,
|
|
18556
|
+
cacheCreationInputTokenCost: 125e-9,
|
|
18557
|
+
aliases: [
|
|
18558
|
+
"gpt-5.6-luna"
|
|
18559
|
+
]
|
|
18560
|
+
},
|
|
18561
|
+
"x-ai/grok-4.5": {
|
|
18562
|
+
inputCostPerToken: 2e-6,
|
|
18563
|
+
outputCostPerToken: 6e-6,
|
|
18564
|
+
cacheReadInputTokenCost: 3e-7,
|
|
18565
|
+
aliases: [
|
|
18566
|
+
"grok-4.5"
|
|
18567
|
+
]
|
|
18568
|
+
},
|
|
18569
|
+
"x-ai/grok-4.6": {
|
|
18570
|
+
inputCostPerToken: 2e-6,
|
|
18571
|
+
outputCostPerToken: 6e-6,
|
|
18572
|
+
cacheReadInputTokenCost: 5e-7,
|
|
18573
|
+
aliases: [
|
|
18574
|
+
"grok-4.6"
|
|
18575
|
+
]
|
|
18576
|
+
},
|
|
18577
|
+
"anthropic/claude-opus-5": {
|
|
18578
|
+
inputCostPerToken: 5e-6,
|
|
18579
|
+
outputCostPerToken: 25e-6,
|
|
18580
|
+
cacheReadInputTokenCost: 5e-7,
|
|
18581
|
+
cacheCreationInputTokenCost: 625e-8,
|
|
18582
|
+
aliases: [
|
|
18583
|
+
"claude-opus-5"
|
|
18584
|
+
]
|
|
18585
|
+
},
|
|
18586
|
+
"anthropic/claude-fable-5": {
|
|
18587
|
+
inputCostPerToken: 1e-5,
|
|
18588
|
+
outputCostPerToken: 5e-5,
|
|
18589
|
+
cacheReadInputTokenCost: 1e-6,
|
|
18590
|
+
cacheCreationInputTokenCost: 125e-7,
|
|
18591
|
+
aliases: [
|
|
18592
|
+
"claude-fable-5"
|
|
18593
|
+
]
|
|
18594
|
+
},
|
|
18595
|
+
"moonshotai/kimi-k3": {
|
|
18596
|
+
inputCostPerToken: 3e-6,
|
|
18597
|
+
outputCostPerToken: 15e-6,
|
|
18598
|
+
cacheReadInputTokenCost: 3e-7,
|
|
18599
|
+
aliases: [
|
|
18600
|
+
"k3",
|
|
18601
|
+
"kimi-k3"
|
|
18602
|
+
]
|
|
18603
|
+
},
|
|
18604
|
+
"qwen/qwen3.8-max": {
|
|
18605
|
+
inputCostPerToken: 2e-6,
|
|
18606
|
+
outputCostPerToken: 6e-6,
|
|
18607
|
+
cacheReadInputTokenCost: 25e-8,
|
|
18608
|
+
cacheCreationInputTokenCost: 25e-7,
|
|
18609
|
+
aliases: [
|
|
18610
|
+
"qwen3.8-max"
|
|
18611
|
+
]
|
|
18612
|
+
},
|
|
18613
|
+
"deepseek/deepseek-v4-flash": {
|
|
18614
|
+
inputCostPerToken: 14e-8,
|
|
18615
|
+
outputCostPerToken: 28e-8,
|
|
18616
|
+
cacheReadInputTokenCost: 28e-10,
|
|
18617
|
+
aliases: [
|
|
18618
|
+
"deepseek-v4-flash"
|
|
18619
|
+
]
|
|
18620
|
+
},
|
|
18621
|
+
"deepseek/deepseek-v4-pro": {
|
|
18622
|
+
inputCostPerToken: 435e-9,
|
|
18623
|
+
outputCostPerToken: 87e-8,
|
|
18624
|
+
cacheReadInputTokenCost: 3625e-12,
|
|
18625
|
+
aliases: [
|
|
18626
|
+
"deepseek-v4-pro"
|
|
18627
|
+
]
|
|
18628
|
+
},
|
|
18629
|
+
"z-ai/glm-5.2": {
|
|
18630
|
+
inputCostPerToken: 14e-7,
|
|
18631
|
+
outputCostPerToken: 44e-7,
|
|
18632
|
+
cacheReadInputTokenCost: 26e-8,
|
|
18633
|
+
aliases: [
|
|
18634
|
+
"glm-5.2"
|
|
18635
|
+
]
|
|
18636
|
+
}
|
|
18637
|
+
}
|
|
18533
18638
|
}
|
|
18534
18639
|
};
|
|
18535
18640
|
var KIMI_AUTH_PROVIDER_ID = "Claude Code with Moonshot Kimi";
|
|
@@ -18541,8 +18646,7 @@ var GATEWAY_REASONING_EFFORTS = [
|
|
|
18541
18646
|
"medium",
|
|
18542
18647
|
"high",
|
|
18543
18648
|
"xhigh",
|
|
18544
|
-
"max"
|
|
18545
|
-
"ultra"
|
|
18649
|
+
"max"
|
|
18546
18650
|
];
|
|
18547
18651
|
var GatewayEffortUpstreamModelIdsSchema = external_exports.partialRecord(
|
|
18548
18652
|
external_exports.enum(GATEWAY_REASONING_EFFORTS),
|
|
@@ -18594,6 +18698,18 @@ var GatewayBenchmarksRegistrySchema = external_exports.object({
|
|
|
18594
18698
|
sources: external_exports.record(external_exports.string().min(1), GatewayBenchmarkSourceSchema),
|
|
18595
18699
|
models: external_exports.record(external_exports.string().min(1), GatewayBenchmarkModelEntrySchema)
|
|
18596
18700
|
}).strict();
|
|
18701
|
+
var GatewayModelPricingSchema = external_exports.object({
|
|
18702
|
+
inputCostPerToken: external_exports.number().nonnegative(),
|
|
18703
|
+
outputCostPerToken: external_exports.number().nonnegative(),
|
|
18704
|
+
cacheReadInputTokenCost: external_exports.number().nonnegative(),
|
|
18705
|
+
cacheCreationInputTokenCost: external_exports.number().nonnegative().optional(),
|
|
18706
|
+
aliases: external_exports.array(external_exports.string().min(1)).min(1)
|
|
18707
|
+
}).strict();
|
|
18708
|
+
var GatewayPricingRegistrySchema = external_exports.object({
|
|
18709
|
+
source: external_exports.literal("openrouter"),
|
|
18710
|
+
observedAt: external_exports.iso.datetime(),
|
|
18711
|
+
models: external_exports.record(external_exports.string().min(1), GatewayModelPricingSchema)
|
|
18712
|
+
}).strict();
|
|
18597
18713
|
var GatewayModelEntrySchema = external_exports.object({
|
|
18598
18714
|
modelId: external_exports.string().min(1),
|
|
18599
18715
|
name: external_exports.string().min(1),
|
|
@@ -18624,7 +18740,8 @@ var GatewayModelsRegistrySchema = external_exports.object({
|
|
|
18624
18740
|
kimi: GatewayProviderSchema,
|
|
18625
18741
|
opencode: GatewayProviderSchema,
|
|
18626
18742
|
xai: GatewayProviderSchema
|
|
18627
|
-
}).strict()
|
|
18743
|
+
}).strict(),
|
|
18744
|
+
pricing: GatewayPricingRegistrySchema
|
|
18628
18745
|
}).strict();
|
|
18629
18746
|
var UNSUPPORTED_GATEWAY_MODEL_EFFORT = Object.freeze({ supported: false });
|
|
18630
18747
|
var benchmarksRegistry = parseGatewayBenchmarksRegistry(benchmarks_default);
|
|
@@ -18648,6 +18765,15 @@ var registry2 = (() => {
|
|
|
18648
18765
|
return parsed;
|
|
18649
18766
|
})();
|
|
18650
18767
|
registry2.updatedAt;
|
|
18768
|
+
registry2.pricing.observedAt;
|
|
18769
|
+
Object.freeze(
|
|
18770
|
+
Object.fromEntries(
|
|
18771
|
+
Object.entries(registry2.pricing.models).map(([modelId, pricing]) => [
|
|
18772
|
+
modelId,
|
|
18773
|
+
Object.freeze({ ...pricing, aliases: Object.freeze([...pricing.aliases]) })
|
|
18774
|
+
])
|
|
18775
|
+
)
|
|
18776
|
+
);
|
|
18651
18777
|
Object.entries(benchmarksRegistry.sources).map(([sourceId, source]) => `${sourceId}:${source.observedAt}`).sort().join("|");
|
|
18652
18778
|
Object.freeze(
|
|
18653
18779
|
Object.fromEntries(
|
|
@@ -19091,6 +19217,9 @@ async function postJson(fetchImpl, url2, headers) {
|
|
|
19091
19217
|
function expired(error51) {
|
|
19092
19218
|
return error51 instanceof ProviderHttpError && (error51.statusCode === 401 || error51.statusCode === 403) ? { status: "expired" } : null;
|
|
19093
19219
|
}
|
|
19220
|
+
function providerHttpStatus(error51) {
|
|
19221
|
+
return error51 instanceof ProviderHttpError ? error51.statusCode : void 0;
|
|
19222
|
+
}
|
|
19094
19223
|
function sanitizeProviderError(error51) {
|
|
19095
19224
|
if (error51 instanceof ProviderResponseTooLargeError) return "Provider response too large";
|
|
19096
19225
|
if (error51 instanceof DOMException && error51.name === "AbortError") return "Provider request timed out";
|
|
@@ -19634,6 +19763,71 @@ async function fetchKimiUsage(deps = {}) {
|
|
|
19634
19763
|
throw error51;
|
|
19635
19764
|
}
|
|
19636
19765
|
}
|
|
19766
|
+
var OPENCODE_AUTH_PROVIDER_ID = "Claude Code with OpenCode Go";
|
|
19767
|
+
var OPENCODE_GO_API_BASE_URL = "https://opencode.ai/zen/go";
|
|
19768
|
+
var OPENCODE_GO_USAGE_URL = `${OPENCODE_GO_API_BASE_URL}/v1/usage`;
|
|
19769
|
+
var OPENCODE_SESSION_MS = 5 * HOUR_MS;
|
|
19770
|
+
var OPENCODE_MONTH_MS = 30 * 24 * HOUR_MS;
|
|
19771
|
+
var WINDOWS = [
|
|
19772
|
+
{ field: "rolling", id: "session", durationMs: OPENCODE_SESSION_MS },
|
|
19773
|
+
{ field: "weekly", id: "weekly", durationMs: WEEK_MS },
|
|
19774
|
+
{ field: "monthly", id: "cycle", durationMs: OPENCODE_MONTH_MS }
|
|
19775
|
+
];
|
|
19776
|
+
function windowPercent(row) {
|
|
19777
|
+
const value = row.percent;
|
|
19778
|
+
if (typeof value !== "number" || !Number.isFinite(value)) return void 0;
|
|
19779
|
+
return percent(value);
|
|
19780
|
+
}
|
|
19781
|
+
function parseOpencodeUsage(payload) {
|
|
19782
|
+
const usage4 = object2(object2(payload)?.usage);
|
|
19783
|
+
if (!usage4) return null;
|
|
19784
|
+
const windows = [];
|
|
19785
|
+
for (const spec of WINDOWS) {
|
|
19786
|
+
const row = object2(usage4[spec.field]);
|
|
19787
|
+
if (!row) return null;
|
|
19788
|
+
const usedPercent = windowPercent(row);
|
|
19789
|
+
if (usedPercent === void 0) return null;
|
|
19790
|
+
const resetsAt = safeTimestamp(row.resetsAt);
|
|
19791
|
+
const period = windowPeriod(spec.durationMs, "catalog", resetsAt);
|
|
19792
|
+
windows.push({
|
|
19793
|
+
id: spec.id,
|
|
19794
|
+
usedPercent,
|
|
19795
|
+
...resetsAt !== void 0 ? { resetsAt } : {},
|
|
19796
|
+
...period ? { period } : {}
|
|
19797
|
+
});
|
|
19798
|
+
}
|
|
19799
|
+
return {
|
|
19800
|
+
windows,
|
|
19801
|
+
cycleDays: Math.round(OPENCODE_MONTH_MS / 864e5)
|
|
19802
|
+
};
|
|
19803
|
+
}
|
|
19804
|
+
async function fetchOpencodeUsage(deps = {}) {
|
|
19805
|
+
if (deps.authService === void 0) {
|
|
19806
|
+
throw new Error("authService is required to probe OpenCode Go usage; pass it via createAiGatewayQuotaCollectors");
|
|
19807
|
+
}
|
|
19808
|
+
const apiKey = await deps.authService.getApiKey(OPENCODE_AUTH_PROVIDER_ID);
|
|
19809
|
+
if (!apiKey) return { status: "signed_out" };
|
|
19810
|
+
try {
|
|
19811
|
+
const usage4 = parseOpencodeUsage(await getJson(
|
|
19812
|
+
deps.fetch ?? fetch,
|
|
19813
|
+
OPENCODE_GO_USAGE_URL,
|
|
19814
|
+
{ Authorization: `Bearer ${apiKey}`, Accept: "application/json" }
|
|
19815
|
+
));
|
|
19816
|
+
if (!usage4) throw new Error("Provider response invalid");
|
|
19817
|
+
return {
|
|
19818
|
+
status: "ok",
|
|
19819
|
+
plan: "Go",
|
|
19820
|
+
cycleDays: usage4.cycleDays,
|
|
19821
|
+
windows: usage4.windows,
|
|
19822
|
+
fetchedAt: (deps.now ?? Date.now)()
|
|
19823
|
+
};
|
|
19824
|
+
} catch (error51) {
|
|
19825
|
+
if (providerHttpStatus(error51) === 403) return { status: "no_subscription" };
|
|
19826
|
+
const result = expired(error51);
|
|
19827
|
+
if (result) return result;
|
|
19828
|
+
throw error51;
|
|
19829
|
+
}
|
|
19830
|
+
}
|
|
19637
19831
|
var XAI_OIDC_ISSUER = "https://auth.x.ai";
|
|
19638
19832
|
var XAI_CLI_REFRESH_URL = "https://auth.x.ai/oauth2/token";
|
|
19639
19833
|
var XAI_CLI_DEFAULT_CLIENT_ID = "b1a00492-073a-47ea-816f-4c329264a828";
|
|
@@ -19921,6 +20115,7 @@ function createAiGatewayQuotaCollectors(deps) {
|
|
|
19921
20115
|
fetchCodex: () => fetchCodexUsage(providerDeps),
|
|
19922
20116
|
fetchCursor: () => fetchCursorUsage(providerDeps),
|
|
19923
20117
|
fetchKimi: () => fetchKimiUsage(providerDeps),
|
|
20118
|
+
fetchOpencode: () => fetchOpencodeUsage(providerDeps),
|
|
19924
20119
|
fetchXai: () => fetchXaiUsage(providerDeps)
|
|
19925
20120
|
};
|
|
19926
20121
|
}
|
|
@@ -19934,6 +20129,7 @@ function createQuotaService(deps) {
|
|
|
19934
20129
|
codex: deps.fetchCodex,
|
|
19935
20130
|
cursor: deps.fetchCursor,
|
|
19936
20131
|
kimi: deps.fetchKimi,
|
|
20132
|
+
opencode: deps.fetchOpencode,
|
|
19937
20133
|
xai: deps.fetchXai ?? (async () => ({ status: "signed_out" }))
|
|
19938
20134
|
};
|
|
19939
20135
|
const cache = /* @__PURE__ */ new Map();
|
|
@@ -19977,11 +20173,12 @@ function createQuotaService(deps) {
|
|
|
19977
20173
|
}
|
|
19978
20174
|
return {
|
|
19979
20175
|
async getSummary(options = {}) {
|
|
19980
|
-
const [claude, codex, cursor, kimi, xai] = await Promise.all([
|
|
20176
|
+
const [claude, codex, cursor, kimi, opencode, xai] = await Promise.all([
|
|
19981
20177
|
load("claude", options.force === true || options.forceProvider === "claude"),
|
|
19982
20178
|
load("codex", options.force === true || options.forceProvider === "codex"),
|
|
19983
20179
|
load("cursor", options.force === true || options.forceProvider === "cursor"),
|
|
19984
20180
|
load("kimi", options.force === true || options.forceProvider === "kimi"),
|
|
20181
|
+
load("opencode", options.force === true || options.forceProvider === "opencode"),
|
|
19985
20182
|
load("xai", options.force === true || options.forceProvider === "xai")
|
|
19986
20183
|
]);
|
|
19987
20184
|
return {
|
|
@@ -19990,6 +20187,7 @@ function createQuotaService(deps) {
|
|
|
19990
20187
|
codex: withRisk(codex),
|
|
19991
20188
|
cursor: withRisk(cursor),
|
|
19992
20189
|
kimi: withRisk(kimi),
|
|
20190
|
+
opencode: withRisk(opencode),
|
|
19993
20191
|
xai: withRisk(xai)
|
|
19994
20192
|
}
|
|
19995
20193
|
};
|
|
@@ -20856,7 +21054,7 @@ messageDesc(cursorAgentFile, 70);
|
|
|
20856
21054
|
new Set(REASONING_EFFORTS);
|
|
20857
21055
|
|
|
20858
21056
|
// ../fleet-plugins/quota/provider-order.ts
|
|
20859
|
-
var PROVIDER_ORDER_DEFAULT = ["claude", "codex", "xai", "cursor", "kimi"];
|
|
21057
|
+
var PROVIDER_ORDER_DEFAULT = ["claude", "codex", "xai", "cursor", "opencode", "kimi"];
|
|
20860
21058
|
function isProviderId(value) {
|
|
20861
21059
|
return PROVIDER_ORDER_DEFAULT.includes(value);
|
|
20862
21060
|
}
|