@slkiser/opencode-quota 3.8.8 → 3.10.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 (107) hide show
  1. package/README.md +256 -70
  2. package/dist/bin/opencode-quota.d.ts.map +1 -1
  3. package/dist/bin/opencode-quota.js +4 -1
  4. package/dist/bin/opencode-quota.js.map +1 -1
  5. package/dist/lib/cli-show.d.ts.map +1 -1
  6. package/dist/lib/cli-show.js +94 -3
  7. package/dist/lib/cli-show.js.map +1 -1
  8. package/dist/lib/command-handled.d.ts +2 -2
  9. package/dist/lib/command-handled.d.ts.map +1 -1
  10. package/dist/lib/command-handled.js +19 -4
  11. package/dist/lib/command-handled.js.map +1 -1
  12. package/dist/lib/config.d.ts +1 -1
  13. package/dist/lib/config.d.ts.map +1 -1
  14. package/dist/lib/config.js +60 -5
  15. package/dist/lib/config.js.map +1 -1
  16. package/dist/lib/cursor-pricing.js +1 -1
  17. package/dist/lib/cursor-pricing.js.map +1 -1
  18. package/dist/lib/init-installer.d.ts.map +1 -1
  19. package/dist/lib/init-installer.js +6 -2
  20. package/dist/lib/init-installer.js.map +1 -1
  21. package/dist/lib/ollama-cloud-config.d.ts +37 -0
  22. package/dist/lib/ollama-cloud-config.d.ts.map +1 -0
  23. package/dist/lib/ollama-cloud-config.js +148 -0
  24. package/dist/lib/ollama-cloud-config.js.map +1 -0
  25. package/dist/lib/ollama-cloud.d.ts +17 -0
  26. package/dist/lib/ollama-cloud.d.ts.map +1 -0
  27. package/dist/lib/ollama-cloud.js +150 -0
  28. package/dist/lib/ollama-cloud.js.map +1 -0
  29. package/dist/lib/opencode-go.d.ts +12 -4
  30. package/dist/lib/opencode-go.d.ts.map +1 -1
  31. package/dist/lib/opencode-go.js +90 -7
  32. package/dist/lib/opencode-go.js.map +1 -1
  33. package/dist/lib/opencode-sqlite.d.ts.map +1 -1
  34. package/dist/lib/opencode-sqlite.js +90 -8
  35. package/dist/lib/opencode-sqlite.js.map +1 -1
  36. package/dist/lib/provider-metadata.d.ts +1 -1
  37. package/dist/lib/provider-metadata.d.ts.map +1 -1
  38. package/dist/lib/provider-metadata.js +9 -10
  39. package/dist/lib/provider-metadata.js.map +1 -1
  40. package/dist/lib/quota-command-format.d.ts +2 -0
  41. package/dist/lib/quota-command-format.d.ts.map +1 -1
  42. package/dist/lib/quota-command-format.js +4 -3
  43. package/dist/lib/quota-command-format.js.map +1 -1
  44. package/dist/lib/quota-dialog-commands.d.ts +43 -0
  45. package/dist/lib/quota-dialog-commands.d.ts.map +1 -0
  46. package/dist/lib/quota-dialog-commands.js +677 -0
  47. package/dist/lib/quota-dialog-commands.js.map +1 -0
  48. package/dist/lib/quota-export-types.d.ts +69 -0
  49. package/dist/lib/quota-export-types.d.ts.map +1 -0
  50. package/dist/lib/quota-export-types.js +9 -0
  51. package/dist/lib/quota-export-types.js.map +1 -0
  52. package/dist/lib/quota-export.d.ts +42 -0
  53. package/dist/lib/quota-export.d.ts.map +1 -0
  54. package/dist/lib/quota-export.js +130 -0
  55. package/dist/lib/quota-export.js.map +1 -0
  56. package/dist/lib/quota-render-data.d.ts +3 -0
  57. package/dist/lib/quota-render-data.d.ts.map +1 -1
  58. package/dist/lib/quota-render-data.js +22 -15
  59. package/dist/lib/quota-render-data.js.map +1 -1
  60. package/dist/lib/quota-state.d.ts +12 -0
  61. package/dist/lib/quota-state.d.ts.map +1 -1
  62. package/dist/lib/quota-state.js +38 -2
  63. package/dist/lib/quota-state.js.map +1 -1
  64. package/dist/lib/quota-stats-format.d.ts +5 -0
  65. package/dist/lib/quota-stats-format.d.ts.map +1 -1
  66. package/dist/lib/quota-stats-format.js +48 -13
  67. package/dist/lib/quota-stats-format.js.map +1 -1
  68. package/dist/lib/quota-status.d.ts.map +1 -1
  69. package/dist/lib/quota-status.js +0 -17
  70. package/dist/lib/quota-status.js.map +1 -1
  71. package/dist/lib/tui-runtime.d.ts +27 -0
  72. package/dist/lib/tui-runtime.d.ts.map +1 -1
  73. package/dist/lib/tui-runtime.js +104 -27
  74. package/dist/lib/tui-runtime.js.map +1 -1
  75. package/dist/lib/types.d.ts +35 -7
  76. package/dist/lib/types.d.ts.map +1 -1
  77. package/dist/lib/types.js +4 -0
  78. package/dist/lib/types.js.map +1 -1
  79. package/dist/lib/zai.d.ts.map +1 -1
  80. package/dist/lib/zai.js +8 -1
  81. package/dist/lib/zai.js.map +1 -1
  82. package/dist/plugin.d.ts.map +1 -1
  83. package/dist/plugin.js +6 -476
  84. package/dist/plugin.js.map +1 -1
  85. package/dist/providers/cursor.js +1 -1
  86. package/dist/providers/cursor.js.map +1 -1
  87. package/dist/providers/ollama-cloud.d.ts +9 -0
  88. package/dist/providers/ollama-cloud.d.ts.map +1 -0
  89. package/dist/providers/ollama-cloud.js +77 -0
  90. package/dist/providers/ollama-cloud.js.map +1 -0
  91. package/dist/providers/registry.js +2 -2
  92. package/dist/providers/registry.js.map +1 -1
  93. package/dist/tui.d.ts.map +1 -1
  94. package/dist/tui.tsx +252 -1
  95. package/package.json +5 -2
  96. package/dist/lib/crof-config.d.ts +0 -15
  97. package/dist/lib/crof-config.d.ts.map +0 -1
  98. package/dist/lib/crof-config.js +0 -33
  99. package/dist/lib/crof-config.js.map +0 -1
  100. package/dist/lib/crof.d.ts +0 -13
  101. package/dist/lib/crof.d.ts.map +0 -1
  102. package/dist/lib/crof.js +0 -70
  103. package/dist/lib/crof.js.map +0 -1
  104. package/dist/providers/crof.d.ts +0 -6
  105. package/dist/providers/crof.d.ts.map +0 -1
  106. package/dist/providers/crof.js +0 -56
  107. package/dist/providers/crof.js.map +0 -1
@@ -1,9 +1,12 @@
1
1
  /**
2
2
  * OpenCode Go dashboard scraper.
3
3
  *
4
- * Fetches the OpenCode Go workspace page and parses SolidJS SSR hydration
5
- * output for known usage windows (`rollingUsage`, `weeklyUsage`, and
6
- * `monthlyUsage`) containing `usagePercent` and `resetInSec`.
4
+ * Fetches the OpenCode Go workspace page and parses usage data from two
5
+ * possible formats:
6
+ * 1. SolidJS SSR hydration output (`$R[\d+]={...usagePercent...resetInSec...}`)
7
+ * 2. HTML with `data-slot` attributes (newer format)
8
+ *
9
+ * The scraper tries SolidJS SSR first, then falls back to data-slot parsing.
7
10
  */
8
11
  import { fetchWithTimeout } from "./http.js";
9
12
  import { sanitizeDisplayText } from "./display-sanitize.js";
@@ -41,6 +44,78 @@ function parseWindowUsage(html, rePctFirst, reResetFirst) {
41
44
  }
42
45
  return null;
43
46
  }
47
+ /**
48
+ * Parse human-readable time strings like "1 hour 56 minutes", "6 days 2 hours", "26 days 17 hours"
49
+ * into seconds.
50
+ */
51
+ function parseHumanReadableTime(timeStr) {
52
+ const normalized = timeStr.toLowerCase().trim().replace(/\s+/g, " ");
53
+ if (["reset-now", "reset now", "now", "resets now"].includes(normalized)) {
54
+ return 0;
55
+ }
56
+ let totalSeconds = 0;
57
+ // Match patterns like "X days", "X hours", "X minutes", "X seconds"
58
+ const dayMatch = normalized.match(/(\d+(?:\.\d+)?)\s*days?/);
59
+ const hourMatch = normalized.match(/(\d+(?:\.\d+)?)\s*hours?/);
60
+ const minuteMatch = normalized.match(/(\d+(?:\.\d+)?)\s*minutes?/);
61
+ const secondMatch = normalized.match(/(\d+(?:\.\d+)?)\s*seconds?/);
62
+ const hasDuration = Boolean(dayMatch || hourMatch || minuteMatch || secondMatch);
63
+ if (dayMatch)
64
+ totalSeconds += Number(dayMatch[1]) * 86400;
65
+ if (hourMatch)
66
+ totalSeconds += Number(hourMatch[1]) * 3600;
67
+ if (minuteMatch)
68
+ totalSeconds += Number(minuteMatch[1]) * 60;
69
+ if (secondMatch)
70
+ totalSeconds += Number(secondMatch[1]);
71
+ return hasDuration ? totalSeconds : null;
72
+ }
73
+ /**
74
+ * Parse the newer data-slot HTML format.
75
+ * Returns a record of window names to their usage data.
76
+ */
77
+ function parseDataSlotFormat(html) {
78
+ const result = {};
79
+ const items = html.split(/data-slot="usage-item"/);
80
+ for (let i = 1; i < items.length; i++) {
81
+ const content = items[i];
82
+ // Extract the label (Rolling Usage, Weekly Usage, Monthly Usage)
83
+ const labelMatch = content.match(/data-slot="usage-label">([^<]+)</);
84
+ if (!labelMatch)
85
+ continue;
86
+ const label = labelMatch[1].trim().toLowerCase();
87
+ // Extract usage percentage - get the number after data-slot="usage-value">
88
+ const usageMatch = content.match(/data-slot="usage-value">[^0-9]*(\d+(?:\.\d+)?)/);
89
+ if (!usageMatch)
90
+ continue;
91
+ const usagePercent = Number(usageMatch[1]);
92
+ // Extract reset time - get content between reset-time/reset-now and </span>
93
+ const resetMatch = content.match(/data-slot="(reset-time|reset-now)">([\s\S]*?)<\/span>/);
94
+ if (!resetMatch)
95
+ continue;
96
+ // Clean up SolidJS comments and "Resets in" prefix
97
+ const resetContent = resetMatch[2]
98
+ .replace(/<!--\$-->/g, "")
99
+ .replace(/<!--\/-->/g, "")
100
+ .replace(/Resets?\s*in\s*/i, "")
101
+ .trim();
102
+ const resetInSec = resetMatch[1] === "reset-now" ? 0 : parseHumanReadableTime(resetContent);
103
+ if (!Number.isFinite(usagePercent) || resetInSec === null || !Number.isFinite(resetInSec))
104
+ continue;
105
+ // Map label to window key
106
+ let windowKey = null;
107
+ if (label.includes("rolling"))
108
+ windowKey = "rolling";
109
+ else if (label.includes("weekly"))
110
+ windowKey = "weekly";
111
+ else if (label.includes("monthly"))
112
+ windowKey = "monthly";
113
+ if (windowKey) {
114
+ result[windowKey] = { usagePercent, resetInSec };
115
+ }
116
+ }
117
+ return result;
118
+ }
44
119
  function sanitizeMessage(text, maxLength = 120) {
45
120
  const sanitized = sanitizeDisplayText(text).replace(/\s+/g, " ").trim();
46
121
  return (sanitized || "unknown").slice(0, maxLength);
@@ -74,9 +149,17 @@ export async function queryOpenCodeGoQuota(workspaceId, authCookie, options = {}
74
149
  };
75
150
  }
76
151
  const html = await response.text();
77
- const rolling = parseWindowUsage(html, RE_ROLLING_PCT_FIRST, RE_ROLLING_RESET_FIRST);
78
- const weekly = parseWindowUsage(html, RE_WEEKLY_PCT_FIRST, RE_WEEKLY_RESET_FIRST);
79
- const monthly = parseWindowUsage(html, RE_MONTHLY_PCT_FIRST, RE_MONTHLY_RESET_FIRST);
152
+ // Try SolidJS SSR format first (more reliable when present)
153
+ let rolling = parseWindowUsage(html, RE_ROLLING_PCT_FIRST, RE_ROLLING_RESET_FIRST);
154
+ let weekly = parseWindowUsage(html, RE_WEEKLY_PCT_FIRST, RE_WEEKLY_RESET_FIRST);
155
+ let monthly = parseWindowUsage(html, RE_MONTHLY_PCT_FIRST, RE_MONTHLY_RESET_FIRST);
156
+ // Fall back to data-slot HTML format if SSR found nothing
157
+ if (!rolling && !weekly && !monthly) {
158
+ const dataSlotResult = parseDataSlotFormat(html);
159
+ rolling = dataSlotResult.rolling ?? null;
160
+ weekly = dataSlotResult.weekly ?? null;
161
+ monthly = dataSlotResult.monthly ?? null;
162
+ }
80
163
  if (!rolling && !weekly && !monthly) {
81
164
  return {
82
165
  success: false,
@@ -98,5 +181,5 @@ export async function queryOpenCodeGoQuota(workspaceId, authCookie, options = {}
98
181
  };
99
182
  }
100
183
  }
101
- export { parseWindowUsage as _parseWindowUsage };
184
+ export { parseWindowUsage as _parseWindowUsage, parseDataSlotFormat as _parseDataSlotFormat };
102
185
  //# sourceMappingURL=opencode-go.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"opencode-go.js","sourceRoot":"","sources":["../../src/lib/opencode-go.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"opencode-go.js","sourceRoot":"","sources":["../../src/lib/opencode-go.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,EAAE,gBAAgB,EAAE,MAAM,WAAW,CAAC;AAC7C,OAAO,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AAG5D,MAAM,oBAAoB,GAAG,gCAAgC,CAAC;AAC9D,MAAM,oBAAoB,GAAG,KAAK,CAAC;AACnC,MAAM,UAAU,GAAG,8EAA8E,CAAC;AAElG,MAAM,iBAAiB,GAAG,MAAM,CAAC;AAEjC;;;GAGG;AACH,MAAM,sBAAsB,GAAG,MAAM,CAAC,GAAG,CAAA,mBAAmB,CAAC;AAE7D,MAAM,oBAAoB,GAAG,IAAI,MAAM,CACrC,MAAM,CAAC,GAAG,CAAA,+CAA+C,sBAAsB,mBAAmB,sBAAsB,SAAS,CAClI,CAAC;AACF,MAAM,sBAAsB,GAAG,IAAI,MAAM,CACvC,MAAM,CAAC,GAAG,CAAA,6CAA6C,sBAAsB,qBAAqB,sBAAsB,SAAS,CAClI,CAAC;AAEF,MAAM,mBAAmB,GAAG,IAAI,MAAM,CACpC,MAAM,CAAC,GAAG,CAAA,8CAA8C,sBAAsB,mBAAmB,sBAAsB,SAAS,CACjI,CAAC;AACF,MAAM,qBAAqB,GAAG,IAAI,MAAM,CACtC,MAAM,CAAC,GAAG,CAAA,4CAA4C,sBAAsB,qBAAqB,sBAAsB,SAAS,CACjI,CAAC;AAEF,MAAM,oBAAoB,GAAG,IAAI,MAAM,CACrC,MAAM,CAAC,GAAG,CAAA,+CAA+C,sBAAsB,mBAAmB,sBAAsB,SAAS,CAClI,CAAC;AACF,MAAM,sBAAsB,GAAG,IAAI,MAAM,CACvC,MAAM,CAAC,GAAG,CAAA,6CAA6C,sBAAsB,qBAAqB,sBAAsB,SAAS,CAClI,CAAC;AAOF,SAAS,gBAAgB,CACvB,IAAY,EACZ,UAAkB,EAClB,YAAoB;IAEpB,MAAM,aAAa,GAAG,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC5C,IAAI,aAAa,EAAE,CAAC;QAClB,MAAM,YAAY,GAAG,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC;QAC9C,MAAM,UAAU,GAAG,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC;QAC5C,IAAI,MAAM,CAAC,QAAQ,CAAC,YAAY,CAAC,IAAI,MAAM,CAAC,QAAQ,CAAC,UAAU,CAAC,EAAE,CAAC;YACjE,OAAO,EAAE,YAAY,EAAE,UAAU,EAAE,CAAC;QACtC,CAAC;IACH,CAAC;IAED,MAAM,eAAe,GAAG,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAChD,IAAI,eAAe,EAAE,CAAC;QACpB,MAAM,UAAU,GAAG,MAAM,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,CAAC;QAC9C,MAAM,YAAY,GAAG,MAAM,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,CAAC;QAChD,IAAI,MAAM,CAAC,QAAQ,CAAC,YAAY,CAAC,IAAI,MAAM,CAAC,QAAQ,CAAC,UAAU,CAAC,EAAE,CAAC;YACjE,OAAO,EAAE,YAAY,EAAE,UAAU,EAAE,CAAC;QACtC,CAAC;IACH,CAAC;IAED,OAAO,IAAI,CAAC;AACd,CAAC;AAED;;;GAGG;AACH,SAAS,sBAAsB,CAAC,OAAe;IAC7C,MAAM,UAAU,GAAG,OAAO,CAAC,WAAW,EAAE,CAAC,IAAI,EAAE,CAAC,OAAO,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IACrE,IAAI,CAAC,WAAW,EAAE,WAAW,EAAE,KAAK,EAAE,YAAY,CAAC,CAAC,QAAQ,CAAC,UAAU,CAAC,EAAE,CAAC;QACzE,OAAO,CAAC,CAAC;IACX,CAAC;IAED,IAAI,YAAY,GAAG,CAAC,CAAC;IAErB,oEAAoE;IACpE,MAAM,QAAQ,GAAG,UAAU,CAAC,KAAK,CAAC,yBAAyB,CAAC,CAAC;IAC7D,MAAM,SAAS,GAAG,UAAU,CAAC,KAAK,CAAC,0BAA0B,CAAC,CAAC;IAC/D,MAAM,WAAW,GAAG,UAAU,CAAC,KAAK,CAAC,4BAA4B,CAAC,CAAC;IACnE,MAAM,WAAW,GAAG,UAAU,CAAC,KAAK,CAAC,4BAA4B,CAAC,CAAC;IACnE,MAAM,WAAW,GAAG,OAAO,CAAC,QAAQ,IAAI,SAAS,IAAI,WAAW,IAAI,WAAW,CAAC,CAAC;IAEjF,IAAI,QAAQ;QAAE,YAAY,IAAI,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC;IAC1D,IAAI,SAAS;QAAE,YAAY,IAAI,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC;IAC3D,IAAI,WAAW;QAAE,YAAY,IAAI,MAAM,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC;IAC7D,IAAI,WAAW;QAAE,YAAY,IAAI,MAAM,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC;IAExD,OAAO,WAAW,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,IAAI,CAAC;AAC3C,CAAC;AAED;;;GAGG;AACH,SAAS,mBAAmB,CAAC,IAAY;IACvC,MAAM,MAAM,GAAgD,EAAE,CAAC;IAE/D,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,wBAAwB,CAAC,CAAC;IAEnD,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QACtC,MAAM,OAAO,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;QAEzB,iEAAiE;QACjE,MAAM,UAAU,GAAG,OAAO,CAAC,KAAK,CAAC,kCAAkC,CAAC,CAAC;QACrE,IAAI,CAAC,UAAU;YAAE,SAAS;QAE1B,MAAM,KAAK,GAAG,UAAU,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;QAEjD,2EAA2E;QAC3E,MAAM,UAAU,GAAG,OAAO,CAAC,KAAK,CAAC,gDAAgD,CAAC,CAAC;QACnF,IAAI,CAAC,UAAU;YAAE,SAAS;QAC1B,MAAM,YAAY,GAAG,MAAM,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC;QAE3C,4EAA4E;QAC5E,MAAM,UAAU,GAAG,OAAO,CAAC,KAAK,CAAC,uDAAuD,CAAC,CAAC;QAC1F,IAAI,CAAC,UAAU;YAAE,SAAS;QAE1B,mDAAmD;QACnD,MAAM,YAAY,GAAG,UAAU,CAAC,CAAC,CAAC;aAC/B,OAAO,CAAC,YAAY,EAAE,EAAE,CAAC;aACzB,OAAO,CAAC,YAAY,EAAE,EAAE,CAAC;aACzB,OAAO,CAAC,kBAAkB,EAAE,EAAE,CAAC;aAC/B,IAAI,EAAE,CAAC;QAEV,MAAM,UAAU,GAAG,UAAU,CAAC,CAAC,CAAC,KAAK,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,sBAAsB,CAAC,YAAY,CAAC,CAAC;QAE5F,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,YAAY,CAAC,IAAI,UAAU,KAAK,IAAI,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,UAAU,CAAC;YAAE,SAAS;QAEpG,0BAA0B;QAC1B,IAAI,SAAS,GAAkB,IAAI,CAAC;QACpC,IAAI,KAAK,CAAC,QAAQ,CAAC,SAAS,CAAC;YAAE,SAAS,GAAG,SAAS,CAAC;aAChD,IAAI,KAAK,CAAC,QAAQ,CAAC,QAAQ,CAAC;YAAE,SAAS,GAAG,QAAQ,CAAC;aACnD,IAAI,KAAK,CAAC,QAAQ,CAAC,SAAS,CAAC;YAAE,SAAS,GAAG,SAAS,CAAC;QAE1D,IAAI,SAAS,EAAE,CAAC;YACd,MAAM,CAAC,SAAS,CAAC,GAAG,EAAE,YAAY,EAAE,UAAU,EAAE,CAAC;QACnD,CAAC;IACH,CAAC;IAED,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,SAAS,eAAe,CAAC,IAAY,EAAE,SAAS,GAAG,GAAG;IACpD,MAAM,SAAS,GAAG,mBAAmB,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC;IACxE,OAAO,CAAC,SAAS,IAAI,SAAS,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,SAAS,CAAC,CAAC;AACtD,CAAC;AAED,SAAS,oBAAoB,CAAC,MAA0B,EAAE,GAAW;IACnE,MAAM,YAAY,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,MAAM,CAAC,YAAY,CAAC,CAAC;IACtD,MAAM,UAAU,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,MAAM,CAAC,UAAU,CAAC,CAAC;IAElD,OAAO;QACL,YAAY;QACZ,UAAU;QACV,gBAAgB,EAAE,GAAG,GAAG,YAAY;QACpC,YAAY,EAAE,IAAI,IAAI,CAAC,GAAG,GAAG,UAAU,GAAG,IAAI,CAAC,CAAC,WAAW,EAAE;KAC9D,CAAC;AACJ,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,oBAAoB,CACxC,WAAmB,EACnB,UAAkB,EAClB,UAAyC,EAAE;IAE3C,IAAI,CAAC;QACH,MAAM,GAAG,GAAG,GAAG,oBAAoB,GAAG,kBAAkB,CAAC,WAAW,CAAC,GAAG,oBAAoB,EAAE,CAAC;QAE/F,MAAM,QAAQ,GAAG,MAAM,gBAAgB,CACrC,GAAG,EACH;YACE,MAAM,EAAE,KAAK;YACb,OAAO,EAAE;gBACP,YAAY,EAAE,UAAU;gBACxB,MAAM,EAAE,WAAW;gBACnB,MAAM,EAAE,QAAQ,UAAU,EAAE;aAC7B;SACF,EACD,OAAO,CAAC,gBAAgB,IAAI,iBAAiB,CAC9C,CAAC;QAEF,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC;YACjB,MAAM,IAAI,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC;YACnC,OAAO;gBACL,OAAO,EAAE,KAAK;gBACd,KAAK,EAAE,+BAA+B,QAAQ,CAAC,MAAM,KAAK,eAAe,CAAC,IAAI,CAAC,EAAE;aAClF,CAAC;QACJ,CAAC;QAED,MAAM,IAAI,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC;QAEnC,4DAA4D;QAC5D,IAAI,OAAO,GAAG,gBAAgB,CAAC,IAAI,EAAE,oBAAoB,EAAE,sBAAsB,CAAC,CAAC;QACnF,IAAI,MAAM,GAAG,gBAAgB,CAAC,IAAI,EAAE,mBAAmB,EAAE,qBAAqB,CAAC,CAAC;QAChF,IAAI,OAAO,GAAG,gBAAgB,CAAC,IAAI,EAAE,oBAAoB,EAAE,sBAAsB,CAAC,CAAC;QAEnF,0DAA0D;QAC1D,IAAI,CAAC,OAAO,IAAI,CAAC,MAAM,IAAI,CAAC,OAAO,EAAE,CAAC;YACpC,MAAM,cAAc,GAAG,mBAAmB,CAAC,IAAI,CAAC,CAAC;YACjD,OAAO,GAAG,cAAc,CAAC,OAAO,IAAI,IAAI,CAAC;YACzC,MAAM,GAAG,cAAc,CAAC,MAAM,IAAI,IAAI,CAAC;YACvC,OAAO,GAAG,cAAc,CAAC,OAAO,IAAI,IAAI,CAAC;QAC3C,CAAC;QAED,IAAI,CAAC,OAAO,IAAI,CAAC,MAAM,IAAI,CAAC,OAAO,EAAE,CAAC;YACpC,OAAO;gBACL,OAAO,EAAE,KAAK;gBACd,KAAK,EACH,yGAAyG;aAC5G,CAAC;QACJ,CAAC;QAED,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QACvB,OAAO;YACL,OAAO,EAAE,IAAI;YACb,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,oBAAoB,CAAC,OAAO,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YACnE,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,oBAAoB,CAAC,MAAM,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YAChE,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,oBAAoB,CAAC,OAAO,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;SACpE,CAAC;IACJ,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,OAAO;YACL,OAAO,EAAE,KAAK;YACd,KAAK,EAAE,eAAe,CAAC,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;SACzE,CAAC;IACJ,CAAC;AACH,CAAC;AAED,OAAO,EAAE,gBAAgB,IAAI,iBAAiB,EAAE,mBAAmB,IAAI,oBAAoB,EAAE,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"opencode-sqlite.d.ts","sourceRoot":"","sources":["../../src/lib/opencode-sqlite.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,UAAU;IACzB,GAAG,CAAC,CAAC,GAAG,OAAO,EAAE,GAAG,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,OAAO,EAAE,GAAG,CAAC,EAAE,CAAC;IACvD,GAAG,CAAC,CAAC,GAAG,OAAO,EAAE,GAAG,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,OAAO,EAAE,GAAG,CAAC,GAAG,IAAI,CAAC;IAC5D,KAAK,IAAI,IAAI,CAAC;CACf;AA6BD,wBAAsB,0BAA0B,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,CAAC,CAgCpF"}
1
+ {"version":3,"file":"opencode-sqlite.d.ts","sourceRoot":"","sources":["../../src/lib/opencode-sqlite.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,UAAU;IACzB,GAAG,CAAC,CAAC,GAAG,OAAO,EAAE,GAAG,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,OAAO,EAAE,GAAG,CAAC,EAAE,CAAC;IACvD,GAAG,CAAC,CAAC,GAAG,OAAO,EAAE,GAAG,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,OAAO,EAAE,GAAG,CAAC,GAAG,IAAI,CAAC;IAC5D,KAAK,IAAI,IAAI,CAAC;CACf;AAkLD,wBAAsB,0BAA0B,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,CAAC,CAMpF"}
@@ -1,7 +1,7 @@
1
1
  function toParams(params) {
2
2
  return Array.isArray(params) ? params : [];
3
3
  }
4
- function runPragma(db, sql) {
4
+ function runBunPragma(db, sql) {
5
5
  try {
6
6
  db.query(sql).run();
7
7
  }
@@ -9,23 +9,58 @@ function runPragma(db, sql) {
9
9
  // ignore
10
10
  }
11
11
  }
12
- export async function openOpenCodeSqliteReadOnly(dbPath) {
12
+ function runPreparedPragma(db, sql) {
13
+ try {
14
+ db.prepare(sql).run();
15
+ }
16
+ catch {
17
+ // ignore
18
+ }
19
+ }
20
+ function runNodePragma(db, sql) {
21
+ try {
22
+ db.exec(sql);
23
+ }
24
+ catch {
25
+ // ignore
26
+ }
27
+ }
28
+ function createPreparedSqliteConn(db) {
29
+ return {
30
+ all(sql, params) {
31
+ const stmt = db.prepare(sql);
32
+ return stmt.all(...toParams(params));
33
+ },
34
+ get(sql, params) {
35
+ const stmt = db.prepare(sql);
36
+ const row = stmt.get(...toParams(params));
37
+ return row ?? null;
38
+ },
39
+ close() {
40
+ try {
41
+ db.close();
42
+ }
43
+ catch {
44
+ // ignore
45
+ }
46
+ },
47
+ };
48
+ }
49
+ async function openWithBunSqlite(dbPath) {
13
50
  const mod = (await import("bun:sqlite"));
14
51
  const db = new mod.Database(dbPath, { readonly: true });
15
52
  // Keep reads deterministic and avoid accidental writes.
16
- runPragma(db, "PRAGMA query_only = ON;");
53
+ runBunPragma(db, "PRAGMA query_only = ON;");
17
54
  // Avoid transient SQLITE_BUSY errors (WAL).
18
- runPragma(db, "PRAGMA busy_timeout = 5000;");
55
+ runBunPragma(db, "PRAGMA busy_timeout = 5000;");
19
56
  return {
20
57
  all(sql, params) {
21
58
  const stmt = db.query(sql);
22
- const p = toParams(params);
23
- return (p.length ? stmt.all(...p) : stmt.all());
59
+ return stmt.all(...toParams(params));
24
60
  },
25
61
  get(sql, params) {
26
62
  const stmt = db.query(sql);
27
- const p = toParams(params);
28
- const row = (p.length ? stmt.get(...p) : stmt.get());
63
+ const row = stmt.get(...toParams(params));
29
64
  return row ?? null;
30
65
  },
31
66
  close() {
@@ -38,4 +73,51 @@ export async function openOpenCodeSqliteReadOnly(dbPath) {
38
73
  },
39
74
  };
40
75
  }
76
+ async function importNodeSqlite() {
77
+ try {
78
+ return (await import("node:sqlite"));
79
+ }
80
+ catch {
81
+ return null;
82
+ }
83
+ }
84
+ async function openWithNodeSqlite(dbPath, mod) {
85
+ const db = new mod.DatabaseSync(dbPath, {
86
+ readOnly: true,
87
+ enableForeignKeyConstraints: true,
88
+ open: true,
89
+ });
90
+ // Keep reads deterministic and avoid accidental writes.
91
+ runNodePragma(db, "PRAGMA query_only = ON;");
92
+ // Avoid transient SQLITE_BUSY errors (WAL).
93
+ runNodePragma(db, "PRAGMA busy_timeout = 5000;");
94
+ return createPreparedSqliteConn(db);
95
+ }
96
+ async function openWithBetterSqlite3(dbPath) {
97
+ const mod = (await import("better-sqlite3"));
98
+ const db = new mod.default(dbPath, { readonly: true });
99
+ // Keep reads deterministic and avoid accidental writes.
100
+ runPreparedPragma(db, "PRAGMA query_only = ON;");
101
+ // Avoid transient SQLITE_BUSY errors (WAL).
102
+ runPreparedPragma(db, "PRAGMA busy_timeout = 5000;");
103
+ return createPreparedSqliteConn(db);
104
+ }
105
+ async function openWithNodeRuntimeSqlite(dbPath) {
106
+ const nodeSqlite = await importNodeSqlite();
107
+ if (nodeSqlite) {
108
+ return openWithNodeSqlite(dbPath, nodeSqlite);
109
+ }
110
+ try {
111
+ return await openWithBetterSqlite3(dbPath);
112
+ }
113
+ catch (cause) {
114
+ throw new Error("OpenCode SQLite backend unavailable in this Node runtime; node:sqlite or optional better-sqlite3 is required for local history reads.", { cause });
115
+ }
116
+ }
117
+ export async function openOpenCodeSqliteReadOnly(dbPath) {
118
+ if (typeof globalThis === "object" && "Bun" in globalThis) {
119
+ return openWithBunSqlite(dbPath);
120
+ }
121
+ return openWithNodeRuntimeSqlite(dbPath);
122
+ }
41
123
  //# sourceMappingURL=opencode-sqlite.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"opencode-sqlite.js","sourceRoot":"","sources":["../../src/lib/opencode-sqlite.ts"],"names":[],"mappings":"AAqBA,SAAS,QAAQ,CAAC,MAAkB;IAClC,OAAO,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC;AAC7C,CAAC;AAED,SAAS,SAAS,CAAC,EAAkB,EAAE,GAAW;IAChD,IAAI,CAAC;QACH,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,CAAC;IACtB,CAAC;IAAC,MAAM,CAAC;QACP,SAAS;IACX,CAAC;AACH,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,0BAA0B,CAAC,MAAc;IAC7D,MAAM,GAAG,GAAG,CAAC,MAAM,MAAM,CAAC,YAAY,CAAC,CAA+B,CAAC;IACvE,MAAM,EAAE,GAAG,IAAI,GAAG,CAAC,QAAQ,CAAC,MAAM,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC;IAExD,wDAAwD;IACxD,SAAS,CAAC,EAAE,EAAE,yBAAyB,CAAC,CAAC;IAEzC,4CAA4C;IAC5C,SAAS,CAAC,EAAE,EAAE,6BAA6B,CAAC,CAAC;IAE7C,OAAO;QACL,GAAG,CAAc,GAAW,EAAE,MAAkB;YAC9C,MAAM,IAAI,GAAG,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;YAC3B,MAAM,CAAC,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC;YAC3B,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,EAAE,CAAQ,CAAC;QACzD,CAAC;QAED,GAAG,CAAc,GAAW,EAAE,MAAkB;YAC9C,MAAM,IAAI,GAAG,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;YAC3B,MAAM,CAAC,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC;YAC3B,MAAM,GAAG,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,EAAE,CAAkB,CAAC;YACtE,OAAO,GAAG,IAAI,IAAI,CAAC;QACrB,CAAC;QAED,KAAK;YACH,IAAI,CAAC;gBACH,EAAE,CAAC,KAAK,EAAE,CAAC;YACb,CAAC;YAAC,MAAM,CAAC;gBACP,SAAS;YACX,CAAC;QACH,CAAC;KACF,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"opencode-sqlite.js","sourceRoot":"","sources":["../../src/lib/opencode-sqlite.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,4 @@
1
- export type CanonicalQuotaProviderId = "anthropic" | "copilot" | "openai" | "cursor" | "qwen-code" | "alibaba-coding-plan" | "synthetic" | "chutes" | "crof" | "google-antigravity" | "google-gemini-cli" | "zai" | "zhipu" | "nanogpt" | "minimax-coding-plan" | "minimax-china-coding-plan" | "kimi-for-coding" | "deepseek" | "opencode-go";
1
+ export type CanonicalQuotaProviderId = "anthropic" | "copilot" | "openai" | "cursor" | "qwen-code" | "alibaba-coding-plan" | "synthetic" | "chutes" | "google-antigravity" | "google-gemini-cli" | "zai" | "zhipu" | "nanogpt" | "minimax-coding-plan" | "minimax-china-coding-plan" | "kimi-for-coding" | "deepseek" | "opencode-go" | "ollama-cloud";
2
2
  export type QuotaProviderAutoSetup = "yes" | "usually" | "manual_env_config" | "needs_quick_setup";
3
3
  export type QuotaProviderAuthentication = "opencode_auth_oauth_token" | "opencode_auth_api_key" | "companion_auth_oauth_token" | "local_cli_auth" | "github_oauth_or_pat" | "external_api_key" | "state_only";
4
4
  export type QuotaProviderAuthFallback = "env_api_key" | "global_opencode_config";
@@ -1 +1 @@
1
- {"version":3,"file":"provider-metadata.d.ts","sourceRoot":"","sources":["../../src/lib/provider-metadata.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,wBAAwB,GAChC,WAAW,GACX,SAAS,GACT,QAAQ,GACR,QAAQ,GACR,WAAW,GACX,qBAAqB,GACrB,WAAW,GACX,QAAQ,GACR,MAAM,GACN,oBAAoB,GACpB,mBAAmB,GACnB,KAAK,GACL,OAAO,GACP,SAAS,GACT,qBAAqB,GACrB,2BAA2B,GAC3B,iBAAiB,GACjB,UAAU,GACV,aAAa,CAAC;AAElB,MAAM,MAAM,sBAAsB,GAAG,KAAK,GAAG,SAAS,GAAG,mBAAmB,GAAG,mBAAmB,CAAC;AAEnG,MAAM,MAAM,2BAA2B,GACnC,2BAA2B,GAC3B,uBAAuB,GACvB,4BAA4B,GAC5B,gBAAgB,GAChB,qBAAqB,GACrB,kBAAkB,GAClB,YAAY,CAAC;AAEjB,MAAM,MAAM,yBAAyB,GAAG,aAAa,GAAG,wBAAwB,CAAC;AAEjF,MAAM,MAAM,wBAAwB,GAChC,YAAY,GACZ,kBAAkB,GAClB,0BAA0B,GAC1B,kBAAkB,CAAC;AAEvB,MAAM,WAAW,kBAAkB;IACjC,EAAE,EAAE,wBAAwB,CAAC;IAC7B,SAAS,EAAE,sBAAsB,CAAC;IAClC,cAAc,EAAE,2BAA2B,CAAC;IAC5C,aAAa,CAAC,EAAE,yBAAyB,EAAE,CAAC;IAC5C,KAAK,EAAE,wBAAwB,CAAC;IAChC,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,MAAM,uBAAuB,GAAG,QAAQ,CAAC,MAAM,CAAC,wBAAwB,EAAE,SAAS,MAAM,EAAE,CAAC,CAAC,CAAC;AAEpG,eAAO,MAAM,qBAAqB,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAsBlE,CAAC;AAEF,eAAO,MAAM,0BAA0B,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CA4BvE,CAAC;AAEF,eAAO,MAAM,0BAA0B,EAAE,uBA+BxC,CAAC;AAQF,eAAO,MAAM,qBAAqB,EAAE,SAAS,kBAAkB,EAyI9D,CAAC;AAMF,wBAAgB,wBAAwB,CAAC,EAAE,EAAE,MAAM,GAAG,MAAM,CAG3D;AAED,wBAAgB,qBAAqB,CAAC,EAAE,EAAE,MAAM,GAAG,kBAAkB,GAAG,SAAS,CAGhF;AAED,wBAAgB,4BAA4B,CAAC,EAAE,EAAE,MAAM,GAAG,MAAM,CAG/D;AAED,wBAAgB,0BAA0B,CAAC,EAAE,EAAE,MAAM,GAAG,SAAS,MAAM,EAAE,CAOxE;AAED,wBAAgB,0BAA0B,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAE9D"}
1
+ {"version":3,"file":"provider-metadata.d.ts","sourceRoot":"","sources":["../../src/lib/provider-metadata.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,wBAAwB,GAChC,WAAW,GACX,SAAS,GACT,QAAQ,GACR,QAAQ,GACR,WAAW,GACX,qBAAqB,GACrB,WAAW,GACX,QAAQ,GACR,oBAAoB,GACpB,mBAAmB,GACnB,KAAK,GACL,OAAO,GACP,SAAS,GACT,qBAAqB,GACrB,2BAA2B,GAC3B,iBAAiB,GACjB,UAAU,GACV,aAAa,GACb,cAAc,CAAC;AAEnB,MAAM,MAAM,sBAAsB,GAAG,KAAK,GAAG,SAAS,GAAG,mBAAmB,GAAG,mBAAmB,CAAC;AAEnG,MAAM,MAAM,2BAA2B,GACnC,2BAA2B,GAC3B,uBAAuB,GACvB,4BAA4B,GAC5B,gBAAgB,GAChB,qBAAqB,GACrB,kBAAkB,GAClB,YAAY,CAAC;AAEjB,MAAM,MAAM,yBAAyB,GAAG,aAAa,GAAG,wBAAwB,CAAC;AAEjF,MAAM,MAAM,wBAAwB,GAChC,YAAY,GACZ,kBAAkB,GAClB,0BAA0B,GAC1B,kBAAkB,CAAC;AAEvB,MAAM,WAAW,kBAAkB;IACjC,EAAE,EAAE,wBAAwB,CAAC;IAC7B,SAAS,EAAE,sBAAsB,CAAC;IAClC,cAAc,EAAE,2BAA2B,CAAC;IAC5C,aAAa,CAAC,EAAE,yBAAyB,EAAE,CAAC;IAC5C,KAAK,EAAE,wBAAwB,CAAC;IAChC,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,MAAM,uBAAuB,GAAG,QAAQ,CAAC,MAAM,CAAC,wBAAwB,EAAE,SAAS,MAAM,EAAE,CAAC,CAAC,CAAC;AAEpG,eAAO,MAAM,qBAAqB,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAsBlE,CAAC;AAEF,eAAO,MAAM,0BAA0B,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CA4BvE,CAAC;AAEF,eAAO,MAAM,0BAA0B,EAAE,uBA+BxC,CAAC;AAQF,eAAO,MAAM,qBAAqB,EAAE,SAAS,kBAAkB,EAuI9D,CAAC;AAMF,wBAAgB,wBAAwB,CAAC,EAAE,EAAE,MAAM,GAAG,MAAM,CAG3D;AAED,wBAAgB,qBAAqB,CAAC,EAAE,EAAE,MAAM,GAAG,kBAAkB,GAAG,SAAS,CAGhF;AAED,wBAAgB,4BAA4B,CAAC,EAAE,EAAE,MAAM,GAAG,MAAM,CAG/D;AAED,wBAAgB,0BAA0B,CAAC,EAAE,EAAE,MAAM,GAAG,SAAS,MAAM,EAAE,CAOxE;AAED,wBAAgB,0BAA0B,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAE9D"}
@@ -6,7 +6,6 @@ export const QUOTA_PROVIDER_LABELS = {
6
6
  "google-gemini-cli": "Gemini CLI",
7
7
  synthetic: "Synthetic",
8
8
  chutes: "Chutes",
9
- crof: "Crof",
10
9
  cursor: "Cursor",
11
10
  "qwen-code": "Qwen",
12
11
  "alibaba-coding-plan": "Alibaba Coding Plan",
@@ -20,6 +19,7 @@ export const QUOTA_PROVIDER_LABELS = {
20
19
  "kimi-code": "Kimi Code",
21
20
  deepseek: "DeepSeek",
22
21
  "opencode-go": "OpenCode Go",
22
+ "ollama-cloud": "Ollama Cloud",
23
23
  };
24
24
  export const QUOTA_PROVIDER_ID_SYNONYMS = {
25
25
  "github-copilot": "copilot",
@@ -59,7 +59,6 @@ export const QUOTA_PROVIDER_RUNTIME_IDS = {
59
59
  "alibaba-coding-plan": ["alibaba-coding-plan"],
60
60
  synthetic: ["synthetic"],
61
61
  chutes: ["chutes", "chutes-ai"],
62
- crof: ["crof"],
63
62
  "google-antigravity": ["google-antigravity", "google", "antigravity"],
64
63
  "google-gemini-cli": [
65
64
  "google-gemini-cli",
@@ -81,6 +80,7 @@ export const QUOTA_PROVIDER_RUNTIME_IDS = {
81
80
  "kimi-for-coding": ["kimi-for-coding", "kimi", "kimi-code"],
82
81
  deepseek: ["deepseek"],
83
82
  "opencode-go": ["opencode-go"],
83
+ "ollama-cloud": ["ollama-cloud"],
84
84
  };
85
85
  const LIVE_LOCAL_USAGE_PROVIDER_ID_SET = new Set([
86
86
  "qwen-code",
@@ -144,14 +144,6 @@ export const QUOTA_PROVIDER_SHAPES = [
144
144
  authFallbacks: ["env_api_key", "global_opencode_config"],
145
145
  quota: "remote_api",
146
146
  },
147
- {
148
- id: "crof",
149
- autoSetup: "manual_env_config",
150
- authentication: "external_api_key",
151
- authFallbacks: ["env_api_key", "global_opencode_config"],
152
- quota: "remote_api",
153
- notes: "Requires CROF_API_KEY, CROFAI_API_KEY, or trusted user/global config; not available through OpenCode /connect",
154
- },
155
147
  {
156
148
  id: "google-antigravity",
157
149
  autoSetup: "needs_quick_setup",
@@ -223,6 +215,13 @@ export const QUOTA_PROVIDER_SHAPES = [
223
215
  quickSetupAnchor: "opencode-go",
224
216
  notes: "Scrapes the OpenCode Go dashboard; requires workspaceId and authCookie",
225
217
  },
218
+ {
219
+ id: "ollama-cloud",
220
+ autoSetup: "manual_env_config",
221
+ authentication: "state_only",
222
+ quota: "remote_api",
223
+ notes: "Scrapes the Ollama Cloud settings page; requires __Secure-session cookie via OLLAMA_USAGE_COOKIE env or ollama-usage config",
224
+ },
226
225
  ];
227
226
  const QUOTA_PROVIDER_SHAPES_BY_ID = Object.fromEntries(QUOTA_PROVIDER_SHAPES.map((shape) => [shape.id, shape]));
228
227
  export function normalizeQuotaProviderId(id) {
@@ -1 +1 @@
1
- {"version":3,"file":"provider-metadata.js","sourceRoot":"","sources":["../../src/lib/provider-metadata.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"provider-metadata.js","sourceRoot":"","sources":["../../src/lib/provider-metadata.ts"],"names":[],"mappings":"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"}
@@ -7,10 +7,12 @@
7
7
  * - Includes session token summary (input/output per model)
8
8
  */
9
9
  import type { QuotaToastEntry, QuotaToastError, SessionTokensData } from "./entries.js";
10
+ import type { PercentDisplayMode } from "./types.js";
10
11
  export declare function formatQuotaCommand(params: {
11
12
  entries: QuotaToastEntry[];
12
13
  errors: QuotaToastError[];
13
14
  sessionTokens?: SessionTokensData;
14
15
  generatedAtMs?: number;
16
+ percentDisplayMode?: PercentDisplayMode;
15
17
  }): string;
16
18
  //# sourceMappingURL=quota-command-format.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"quota-command-format.d.ts","sourceRoot":"","sources":["../../src/lib/quota-command-format.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,KAAK,EAAE,eAAe,EAAE,eAAe,EAAE,iBAAiB,EAAE,MAAM,cAAc,CAAC;AAwGxF,wBAAgB,kBAAkB,CAAC,MAAM,EAAE;IACzC,OAAO,EAAE,eAAe,EAAE,CAAC;IAC3B,MAAM,EAAE,eAAe,EAAE,CAAC;IAC1B,aAAa,CAAC,EAAE,iBAAiB,CAAC;IAClC,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB,GAAG,MAAM,CAET"}
1
+ {"version":3,"file":"quota-command-format.d.ts","sourceRoot":"","sources":["../../src/lib/quota-command-format.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,KAAK,EAAE,eAAe,EAAE,eAAe,EAAE,iBAAiB,EAAE,MAAM,cAAc,CAAC;AACxF,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,YAAY,CAAC;AA0GrD,wBAAgB,kBAAkB,CAAC,MAAM,EAAE;IACzC,OAAO,EAAE,eAAe,EAAE,CAAC;IAC3B,MAAM,EAAE,eAAe,EAAE,CAAC;IAC1B,aAAa,CAAC,EAAE,iBAAiB,CAAC;IAClC,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,kBAAkB,CAAC,EAAE,kBAAkB,CAAC;CACzC,GAAG,MAAM,CAET"}
@@ -7,7 +7,7 @@
7
7
  * - Includes session token summary (input/output per model)
8
8
  */
9
9
  import { isValueEntry } from "./entries.js";
10
- import { bar, clampInt, padRight } from "./format-utils.js";
10
+ import { bar, formatDisplayedPercentLabel, padRight, resolveDisplayedPercent } from "./format-utils.js";
11
11
  import { formatGroupedHeader } from "./grouped-header-format.js";
12
12
  import { groupQuotaEntries } from "./grouped-entry-normalization.js";
13
13
  import { renderPlainTextReport } from "./report-document.js";
@@ -56,8 +56,9 @@ function buildQuotaCommandDocument(params) {
56
56
  lines.push(` ${labelCol} ${row.value}${suffix}`);
57
57
  continue;
58
58
  }
59
- const pct = clampInt(row.percentRemaining, 0, 100);
60
- lines.push(` ${labelCol} ${bar(pct, barWidth)} ${pct}% left${suffix}`);
59
+ const pct = resolveDisplayedPercent(row.percentRemaining, params.percentDisplayMode);
60
+ const pctLabel = formatDisplayedPercentLabel(row.percentRemaining, params.percentDisplayMode);
61
+ lines.push(` ${labelCol} ${bar(pct, barWidth)} ${pctLabel}${suffix}`);
61
62
  }
62
63
  return {
63
64
  id: `group-${index}`,
@@ -1 +1 @@
1
- {"version":3,"file":"quota-command-format.js","sourceRoot":"","sources":["../../src/lib/quota-command-format.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"quota-command-format.js","sourceRoot":"","sources":["../../src/lib/quota-command-format.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,43 @@
1
+ import { type SessionTokenError } from "./quota-status.js";
2
+ import { type SessionModelMeta } from "./quota-render-data.js";
3
+ import { type QuotaRuntimeClient } from "./quota-runtime-context.js";
4
+ import type { RuntimeContextRootHints } from "./config-file-utils.js";
5
+ export type QuotaDialogCommandId = "quota" | "quota_status" | "quota_announcements" | "pricing_refresh" | TokenReportCommandId;
6
+ export type QuotaDialogCommandSpec = {
7
+ id: QuotaDialogCommandId;
8
+ slashName: string;
9
+ title: string;
10
+ description: string;
11
+ dialogSize: "medium" | "large" | "xlarge";
12
+ requiresSession?: boolean;
13
+ acceptsArguments?: boolean;
14
+ };
15
+ export type QuotaDialogCommandOutputResult = {
16
+ state: "output";
17
+ command: QuotaDialogCommandId;
18
+ title: string;
19
+ output: string;
20
+ dialogSize: "medium" | "large" | "xlarge";
21
+ } | {
22
+ state: "noop";
23
+ command: QuotaDialogCommandId;
24
+ reason: "disabled";
25
+ };
26
+ type TokenReportCommandId = "tokens_today" | "tokens_daily" | "tokens_weekly" | "tokens_monthly" | "tokens_all" | "tokens_session" | "tokens_session_all" | "tokens_between";
27
+ export declare const QUOTA_DIALOG_COMMANDS: readonly QuotaDialogCommandSpec[];
28
+ export declare function isQuotaDialogCommand(command: string): command is QuotaDialogCommandId;
29
+ export declare function buildQuotaDialogCommandOutput(params: {
30
+ command: QuotaDialogCommandId;
31
+ arguments?: string;
32
+ client: QuotaRuntimeClient;
33
+ roots: RuntimeContextRootHints;
34
+ sessionID?: string;
35
+ sessionMeta?: SessionModelMeta;
36
+ resolveSessionMeta?: (sessionID: string) => Promise<SessionModelMeta>;
37
+ generatedAtMs?: number;
38
+ lastSessionTokenError?: SessionTokenError;
39
+ setLastSessionTokenError?: (error: SessionTokenError | undefined) => void;
40
+ log?: (message: string, extra?: Record<string, unknown>) => Promise<void>;
41
+ }): Promise<QuotaDialogCommandOutputResult>;
42
+ export {};
43
+ //# sourceMappingURL=quota-dialog-commands.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"quota-dialog-commands.d.ts","sourceRoot":"","sources":["../../src/lib/quota-dialog-commands.ts"],"names":[],"mappings":"AAQA,OAAO,EAA0B,KAAK,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AA4BnF,OAAO,EAQL,KAAK,gBAAgB,EACtB,MAAM,wBAAwB,CAAC;AAChC,OAAO,EAIL,KAAK,kBAAkB,EAExB,MAAM,4BAA4B,CAAC;AACpC,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,wBAAwB,CAAC;AAMtE,MAAM,MAAM,oBAAoB,GAC5B,OAAO,GACP,cAAc,GACd,qBAAqB,GACrB,iBAAiB,GACjB,oBAAoB,CAAC;AAEzB,MAAM,MAAM,sBAAsB,GAAG;IACnC,EAAE,EAAE,oBAAoB,CAAC;IACzB,SAAS,EAAE,MAAM,CAAC;IAClB,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,EAAE,MAAM,CAAC;IACpB,UAAU,EAAE,QAAQ,GAAG,OAAO,GAAG,QAAQ,CAAC;IAC1C,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,gBAAgB,CAAC,EAAE,OAAO,CAAC;CAC5B,CAAC;AAEF,MAAM,MAAM,8BAA8B,GACtC;IACE,KAAK,EAAE,QAAQ,CAAC;IAChB,OAAO,EAAE,oBAAoB,CAAC;IAC9B,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,UAAU,EAAE,QAAQ,GAAG,OAAO,GAAG,QAAQ,CAAC;CAC3C,GACD;IACE,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,oBAAoB,CAAC;IAC9B,MAAM,EAAE,UAAU,CAAC;CACpB,CAAC;AAEN,KAAK,oBAAoB,GACrB,cAAc,GACd,cAAc,GACd,eAAe,GACf,gBAAgB,GAChB,YAAY,GACZ,gBAAgB,GAChB,oBAAoB,GACpB,gBAAgB,CAAC;AAkHrB,eAAO,MAAM,qBAAqB,EAAE,SAAS,sBAAsB,EA2CzD,CAAC;AAWX,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,IAAI,oBAAoB,CAErF;AAshBD,wBAAsB,6BAA6B,CAAC,MAAM,EAAE;IAC1D,OAAO,EAAE,oBAAoB,CAAC;IAC9B,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,MAAM,EAAE,kBAAkB,CAAC;IAC3B,KAAK,EAAE,uBAAuB,CAAC;IAC/B,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,WAAW,CAAC,EAAE,gBAAgB,CAAC;IAC/B,kBAAkB,CAAC,EAAE,CAAC,SAAS,EAAE,MAAM,KAAK,OAAO,CAAC,gBAAgB,CAAC,CAAC;IACtE,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,qBAAqB,CAAC,EAAE,iBAAiB,CAAC;IAC1C,wBAAwB,CAAC,EAAE,CAAC,KAAK,EAAE,iBAAiB,GAAG,SAAS,KAAK,IAAI,CAAC;IAC1E,GAAG,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;CAC3E,GAAG,OAAO,CAAC,8BAA8B,CAAC,CAsH1C"}