@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.
Files changed (68) hide show
  1. package/README.md +2 -1
  2. package/dist/cli.mjs +242 -29
  3. package/dist/client/assets/{_baseUniq-9W447fNf.js → _baseUniq-CVUU389k.js} +1 -1
  4. package/dist/client/assets/{arc-hoitnVWi.js → arc-Fg3WjPoW.js} +1 -1
  5. package/dist/client/assets/{architectureDiagram-Q4EWVU46-DYd58Vfc.js → architectureDiagram-Q4EWVU46-gAB_QWIv.js} +1 -1
  6. package/dist/client/assets/{blockDiagram-DXYQGD6D-kuFqPdP_.js → blockDiagram-DXYQGD6D-DCY_3CSv.js} +1 -1
  7. package/dist/client/assets/{c4Diagram-AHTNJAMY-C7n41zCn.js → c4Diagram-AHTNJAMY-2ai4d9rg.js} +1 -1
  8. package/dist/client/assets/channel-DlA1BRCV.js +1 -0
  9. package/dist/client/assets/{chunk-4BX2VUAB-DrHeb54-.js → chunk-4BX2VUAB-C-sjgNCE.js} +1 -1
  10. package/dist/client/assets/{chunk-4TB4RGXK-DFjT6kwT.js → chunk-4TB4RGXK-Co7w9KaD.js} +1 -1
  11. package/dist/client/assets/{chunk-55IACEB6-DxEzuA7W.js → chunk-55IACEB6-Dspr2174.js} +1 -1
  12. package/dist/client/assets/{chunk-EDXVE4YY-aAlF0YEo.js → chunk-EDXVE4YY-UzzG0ax3.js} +1 -1
  13. package/dist/client/assets/{chunk-FMBD7UC4-DwqRMFL1.js → chunk-FMBD7UC4-DKXcUQqJ.js} +1 -1
  14. package/dist/client/assets/{chunk-OYMX7WX6-DCkUlaRi.js → chunk-OYMX7WX6-vW--qrkP.js} +1 -1
  15. package/dist/client/assets/{chunk-QZHKN3VN-B1Dx8Zhl.js → chunk-QZHKN3VN-DyE-yBhf.js} +1 -1
  16. package/dist/client/assets/{chunk-YZCP3GAM-J2bgJmn-.js → chunk-YZCP3GAM-C7LLTO2-.js} +1 -1
  17. package/dist/client/assets/classDiagram-6PBFFD2Q-rBpGSdtk.js +1 -0
  18. package/dist/client/assets/classDiagram-v2-HSJHXN6E-rBpGSdtk.js +1 -0
  19. package/dist/client/assets/clone-_1aYWCbr.js +1 -0
  20. package/dist/client/assets/{cose-bilkent-S5V4N54A-BxzLzyJp.js → cose-bilkent-S5V4N54A-BkDNeJiw.js} +1 -1
  21. package/dist/client/assets/{dagre-KV5264BT-D1ixDJxZ.js → dagre-KV5264BT-DqeN9oF3.js} +1 -1
  22. package/dist/client/assets/{diagram-5BDNPKRD-DZPIz1Pa.js → diagram-5BDNPKRD-BXzt4-3Y.js} +1 -1
  23. package/dist/client/assets/{diagram-G4DWMVQ6-Pbcr-a5H.js → diagram-G4DWMVQ6-DbzDYVOf.js} +1 -1
  24. package/dist/client/assets/{diagram-MMDJMWI5-CBssBmPY.js → diagram-MMDJMWI5-wPQu3o7B.js} +1 -1
  25. package/dist/client/assets/{diagram-TYMM5635-cVQUs6jp.js → diagram-TYMM5635-C-vwFwzf.js} +1 -1
  26. package/dist/client/assets/{erDiagram-SMLLAGMA-ChMSAXos.js → erDiagram-SMLLAGMA-CcukuTgN.js} +1 -1
  27. package/dist/client/assets/{flowDiagram-DWJPFMVM-FEIrU5mu.js → flowDiagram-DWJPFMVM-BT8ZNr2Y.js} +1 -1
  28. package/dist/client/assets/{ganttDiagram-T4ZO3ILL-D6ELHTJY.js → ganttDiagram-T4ZO3ILL-B_wNcZrL.js} +1 -1
  29. package/dist/client/assets/{gitGraphDiagram-UUTBAWPF-DTJ6HgV4.js → gitGraphDiagram-UUTBAWPF-dUwwvDSd.js} +1 -1
  30. package/dist/client/assets/{graph-uscjDdHm.js → graph-C4i_jr7e.js} +1 -1
  31. package/dist/client/assets/index-BXtDpU36.js +465 -0
  32. package/dist/client/assets/index-CLb_APbh.css +1 -0
  33. package/dist/client/assets/{infoDiagram-42DDH7IO-C2AlA___.js → infoDiagram-42DDH7IO-Bf2KPu0t.js} +1 -1
  34. package/dist/client/assets/{ishikawaDiagram-UXIWVN3A-BZGfIhBp.js → ishikawaDiagram-UXIWVN3A-DjHChg2o.js} +1 -1
  35. package/dist/client/assets/{journeyDiagram-VCZTEJTY-DnGNMdvj.js → journeyDiagram-VCZTEJTY-B08epGYF.js} +1 -1
  36. package/dist/client/assets/{kanban-definition-6JOO6SKY-BkuplZGR.js → kanban-definition-6JOO6SKY-BFasXRgc.js} +1 -1
  37. package/dist/client/assets/{layout-BBayH8iU.js → layout-Q_W10VzL.js} +1 -1
  38. package/dist/client/assets/{linear-BQvaHed0.js → linear-Dy4fc5kq.js} +1 -1
  39. package/dist/client/assets/{mermaid.core-CO0f3d6Y.js → mermaid.core-OtTy8N5f.js} +4 -4
  40. package/dist/client/assets/{min-B610GdeY.js → min-DODD7JTz.js} +1 -1
  41. package/dist/client/assets/{mindmap-definition-QFDTVHPH-gwkhgCyj.js → mindmap-definition-QFDTVHPH-DMhpsiYD.js} +1 -1
  42. package/dist/client/assets/{pieDiagram-DEJITSTG-DYU2zgk8.js → pieDiagram-DEJITSTG-C5usaVgs.js} +1 -1
  43. package/dist/client/assets/{quadrantDiagram-34T5L4WZ-B5Vkk65i.js → quadrantDiagram-34T5L4WZ-B-b2NvBz.js} +1 -1
  44. package/dist/client/assets/{requirementDiagram-MS252O5E-D4EcF7kq.js → requirementDiagram-MS252O5E-D6_4jY3n.js} +1 -1
  45. package/dist/client/assets/{sankeyDiagram-XADWPNL6-DFk-RMV4.js → sankeyDiagram-XADWPNL6-B6imEhCV.js} +1 -1
  46. package/dist/client/assets/{sequenceDiagram-FGHM5R23-B-beo9e0.js → sequenceDiagram-FGHM5R23-BRHNnuqK.js} +1 -1
  47. package/dist/client/assets/{stateDiagram-FHFEXIEX-VDT0TOd7.js → stateDiagram-FHFEXIEX-RiIddIHL.js} +1 -1
  48. package/dist/client/assets/stateDiagram-v2-QKLJ7IA2-CsHfIgMa.js +1 -0
  49. package/dist/client/assets/{timeline-definition-GMOUNBTQ-By4DMNqG.js → timeline-definition-GMOUNBTQ-BhP14Blt.js} +1 -1
  50. package/dist/client/assets/{vennDiagram-DHZGUBPP-DzlBrijd.js → vennDiagram-DHZGUBPP-CtzwrBNs.js} +1 -1
  51. package/dist/client/assets/{wardley-RL74JXVD-BHSHTMU6.js → wardley-RL74JXVD-TXsee18-.js} +1 -1
  52. package/dist/client/assets/{wardleyDiagram-NUSXRM2D-COB-cWHQ.js → wardleyDiagram-NUSXRM2D-CrJP7pf7.js} +1 -1
  53. package/dist/client/assets/{xychartDiagram-5P7HB3ND-C-GVSBHd.js → xychartDiagram-5P7HB3ND-rB-PigjI.js} +1 -1
  54. package/dist/client/index.html +2 -2
  55. package/dist/fleet-plugins/ledger/routes.mjs +19829 -428
  56. package/dist/fleet-plugins/quota/routes.mjs +213 -15
  57. package/dist/fleet-plugins/scuttlebutt/routes.mjs +226 -26
  58. package/dist/fleet-plugins/terminal/routes.mjs +7324 -5930
  59. package/dist/fleet.mjs +6710 -6046
  60. package/package.json +2 -2
  61. package/dist/client/assets/channel-D2TsEFjE.js +0 -1
  62. package/dist/client/assets/classDiagram-6PBFFD2Q-DhjJiPic.js +0 -1
  63. package/dist/client/assets/classDiagram-v2-HSJHXN6E-DhjJiPic.js +0 -1
  64. package/dist/client/assets/clone-DwVC2-Mi.js +0 -1
  65. package/dist/client/assets/index-DMjY1OQ0.js +0 -465
  66. package/dist/client/assets/index-Ec4RaE0g.css +0 -1
  67. package/dist/client/assets/stateDiagram-v2-QKLJ7IA2-wHPBl_p1.js +0 -1
  68. /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-15T00:00:00Z",
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 \u2014 ultra advertised for sol/sol-wm/terra, luna stops at max) for model/effort/service-tier; contextWindow=272000 is codex debug models context_window/max_context_window (codex-cli 0.146.0, 2026-08-02)",
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
  }