@slkiser/opencode-quota 3.6.0 → 3.6.1
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 +148 -146
- package/dist/lib/crof-config.d.ts +21 -0
- package/dist/lib/crof-config.d.ts.map +1 -0
- package/dist/lib/crof-config.js +35 -0
- package/dist/lib/crof-config.js.map +1 -0
- package/dist/lib/crof.d.ts +13 -0
- package/dist/lib/crof.d.ts.map +1 -0
- package/dist/lib/crof.js +70 -0
- package/dist/lib/crof.js.map +1 -0
- package/dist/lib/provider-metadata.d.ts +3 -3
- package/dist/lib/provider-metadata.d.ts.map +1 -1
- package/dist/lib/provider-metadata.js +10 -0
- package/dist/lib/provider-metadata.js.map +1 -1
- package/dist/lib/quota-status.d.ts.map +1 -1
- package/dist/lib/quota-status.js +17 -0
- package/dist/lib/quota-status.js.map +1 -1
- package/dist/lib/types.d.ts +7 -0
- package/dist/lib/types.d.ts.map +1 -1
- package/dist/lib/types.js.map +1 -1
- package/dist/providers/crof.d.ts +6 -0
- package/dist/providers/crof.d.ts.map +1 -0
- package/dist/providers/crof.js +57 -0
- package/dist/providers/crof.js.map +1 -0
- package/dist/providers/registry.d.ts.map +1 -1
- package/dist/providers/registry.js +2 -0
- package/dist/providers/registry.js.map +1 -1
- package/package.json +1 -1
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Crof.ai provider wrapper.
|
|
3
|
+
*/
|
|
4
|
+
import { formatCrofCreditsValue, hasCrofApiKeyConfigured, queryCrofQuota } from "../lib/crof.js";
|
|
5
|
+
import { isCanonicalProviderAvailable } from "../lib/provider-availability.js";
|
|
6
|
+
import { modelProviderMatchesRuntimeId } from "../lib/provider-model-matching.js";
|
|
7
|
+
import { attemptedErrorResult, attemptedResult, notAttemptedResult } from "./result-helpers.js";
|
|
8
|
+
function formatRequestAmount(value) {
|
|
9
|
+
if (!Number.isFinite(value))
|
|
10
|
+
return "0";
|
|
11
|
+
if (Number.isInteger(value))
|
|
12
|
+
return String(Math.trunc(value));
|
|
13
|
+
return value.toFixed(2).replace(/\.?0+$/u, "");
|
|
14
|
+
}
|
|
15
|
+
export const crofProvider = {
|
|
16
|
+
id: "crof",
|
|
17
|
+
async isAvailable(ctx) {
|
|
18
|
+
const providerAvailable = await isCanonicalProviderAvailable({
|
|
19
|
+
ctx,
|
|
20
|
+
providerId: "crof",
|
|
21
|
+
fallbackOnError: false,
|
|
22
|
+
});
|
|
23
|
+
if (providerAvailable)
|
|
24
|
+
return true;
|
|
25
|
+
return await hasCrofApiKeyConfigured();
|
|
26
|
+
},
|
|
27
|
+
matchesCurrentModel(model) {
|
|
28
|
+
return modelProviderMatchesRuntimeId(model, "crof");
|
|
29
|
+
},
|
|
30
|
+
async fetch(ctx) {
|
|
31
|
+
const result = await queryCrofQuota({ requestTimeoutMs: ctx.config?.requestTimeoutMs });
|
|
32
|
+
if (!result) {
|
|
33
|
+
return notAttemptedResult();
|
|
34
|
+
}
|
|
35
|
+
if (!result.success) {
|
|
36
|
+
return attemptedErrorResult("Crof", result.error);
|
|
37
|
+
}
|
|
38
|
+
const entries = [
|
|
39
|
+
{
|
|
40
|
+
name: "Crof Requests",
|
|
41
|
+
group: "Crof",
|
|
42
|
+
label: "Requests:",
|
|
43
|
+
right: `${formatRequestAmount(result.usableRequests)}/${formatRequestAmount(result.requestsPlan)}`,
|
|
44
|
+
percentRemaining: result.percentRemaining,
|
|
45
|
+
},
|
|
46
|
+
{
|
|
47
|
+
kind: "value",
|
|
48
|
+
name: "Crof Credits",
|
|
49
|
+
group: "Crof",
|
|
50
|
+
label: "Credits:",
|
|
51
|
+
value: formatCrofCreditsValue(result.credits),
|
|
52
|
+
},
|
|
53
|
+
];
|
|
54
|
+
return attemptedResult(entries);
|
|
55
|
+
},
|
|
56
|
+
};
|
|
57
|
+
//# sourceMappingURL=crof.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"crof.js","sourceRoot":"","sources":["../../src/providers/crof.ts"],"names":[],"mappings":"AAAA;;GAEG;AAQH,OAAO,EAAE,sBAAsB,EAAE,uBAAuB,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AACjG,OAAO,EAAE,4BAA4B,EAAE,MAAM,iCAAiC,CAAC;AAC/E,OAAO,EAAE,6BAA6B,EAAE,MAAM,mCAAmC,CAAC;AAClF,OAAO,EAAE,oBAAoB,EAAE,eAAe,EAAE,kBAAkB,EAAE,MAAM,qBAAqB,CAAC;AAEhG,SAAS,mBAAmB,CAAC,KAAa;IACxC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC;QAAE,OAAO,GAAG,CAAC;IACxC,IAAI,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC;QAAE,OAAO,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC;IAC9D,OAAO,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,SAAS,EAAE,EAAE,CAAC,CAAC;AACjD,CAAC;AAED,MAAM,CAAC,MAAM,YAAY,GAAkB;IACzC,EAAE,EAAE,MAAM;IAEV,KAAK,CAAC,WAAW,CAAC,GAAyB;QACzC,MAAM,iBAAiB,GAAG,MAAM,4BAA4B,CAAC;YAC3D,GAAG;YACH,UAAU,EAAE,MAAM;YAClB,eAAe,EAAE,KAAK;SACvB,CAAC,CAAC;QACH,IAAI,iBAAiB;YAAE,OAAO,IAAI,CAAC;QAEnC,OAAO,MAAM,uBAAuB,EAAE,CAAC;IACzC,CAAC;IAED,mBAAmB,CAAC,KAAa;QAC/B,OAAO,6BAA6B,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;IACtD,CAAC;IAED,KAAK,CAAC,KAAK,CAAC,GAAyB;QACnC,MAAM,MAAM,GAAG,MAAM,cAAc,CAAC,EAAE,gBAAgB,EAAE,GAAG,CAAC,MAAM,EAAE,gBAAgB,EAAE,CAAC,CAAC;QAExF,IAAI,CAAC,MAAM,EAAE,CAAC;YACZ,OAAO,kBAAkB,EAAE,CAAC;QAC9B,CAAC;QAED,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;YACpB,OAAO,oBAAoB,CAAC,MAAM,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC;QACpD,CAAC;QAED,MAAM,OAAO,GAAsB;YACjC;gBACE,IAAI,EAAE,eAAe;gBACrB,KAAK,EAAE,MAAM;gBACb,KAAK,EAAE,WAAW;gBAClB,KAAK,EAAE,GAAG,mBAAmB,CAAC,MAAM,CAAC,cAAc,CAAC,IAAI,mBAAmB,CAAC,MAAM,CAAC,YAAY,CAAC,EAAE;gBAClG,gBAAgB,EAAE,MAAM,CAAC,gBAAgB;aAC1C;YACD;gBACE,IAAI,EAAE,OAAO;gBACb,IAAI,EAAE,cAAc;gBACpB,KAAK,EAAE,MAAM;gBACb,KAAK,EAAE,UAAU;gBACjB,KAAK,EAAE,sBAAsB,CAAC,MAAM,CAAC,OAAO,CAAC;aAC9C;SACF,CAAC;QAEF,OAAO,eAAe,CAAC,OAAO,CAAC,CAAC;IAClC,CAAC;CACF,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"registry.d.ts","sourceRoot":"","sources":["../../src/providers/registry.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;
|
|
1
|
+
{"version":3,"file":"registry.d.ts","sourceRoot":"","sources":["../../src/providers/registry.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAkBvD,wBAAgB,YAAY,IAAI,aAAa,EAAE,CAoB9C"}
|
|
@@ -11,6 +11,7 @@ import { googleAntigravityProvider } from "./google-antigravity.js";
|
|
|
11
11
|
import { googleGeminiCliProvider } from "./google-gemini-cli.js";
|
|
12
12
|
import { syntheticProvider } from "./synthetic.js";
|
|
13
13
|
import { chutesProvider } from "./chutes.js";
|
|
14
|
+
import { crofProvider } from "./crof.js";
|
|
14
15
|
import { qwenCodeProvider } from "./qwen-code.js";
|
|
15
16
|
import { alibabaCodingPlanProvider } from "./alibaba-coding-plan.js";
|
|
16
17
|
import { zaiProvider } from "./zai.js";
|
|
@@ -29,6 +30,7 @@ export function getProviders() {
|
|
|
29
30
|
alibabaCodingPlanProvider,
|
|
30
31
|
syntheticProvider,
|
|
31
32
|
chutesProvider,
|
|
33
|
+
crofProvider,
|
|
32
34
|
googleAntigravityProvider,
|
|
33
35
|
googleGeminiCliProvider,
|
|
34
36
|
zaiProvider,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"registry.js","sourceRoot":"","sources":["../../src/providers/registry.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAGH,OAAO,EAAE,iBAAiB,EAAE,MAAM,gBAAgB,CAAC;AACnD,OAAO,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AAC/C,OAAO,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAC7C,OAAO,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAC7C,OAAO,EAAE,yBAAyB,EAAE,MAAM,yBAAyB,CAAC;AACpE,OAAO,EAAE,uBAAuB,EAAE,MAAM,wBAAwB,CAAC;AACjE,OAAO,EAAE,iBAAiB,EAAE,MAAM,gBAAgB,CAAC;AACnD,OAAO,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAC7C,OAAO,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;AAClD,OAAO,EAAE,yBAAyB,EAAE,MAAM,0BAA0B,CAAC;AACrE,OAAO,EAAE,WAAW,EAAE,MAAM,UAAU,CAAC;AACvC,OAAO,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AAC/C,OAAO,EAAE,yBAAyB,EAAE,MAAM,0BAA0B,CAAC;AACrE,OAAO,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAC;AACtD,OAAO,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;AAElD,MAAM,UAAU,YAAY;IAC1B,oDAAoD;IACpD,OAAO;QACL,iBAAiB;QACjB,eAAe;QACf,cAAc;QACd,cAAc;QACd,gBAAgB;QAChB,yBAAyB;QACzB,iBAAiB;QACjB,cAAc;QACd,yBAAyB;QACzB,uBAAuB;QACvB,WAAW;QACX,eAAe;QACf,yBAAyB;QACzB,gBAAgB;QAChB,kBAAkB;KACnB,CAAC;AACJ,CAAC"}
|
|
1
|
+
{"version":3,"file":"registry.js","sourceRoot":"","sources":["../../src/providers/registry.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAGH,OAAO,EAAE,iBAAiB,EAAE,MAAM,gBAAgB,CAAC;AACnD,OAAO,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AAC/C,OAAO,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAC7C,OAAO,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAC7C,OAAO,EAAE,yBAAyB,EAAE,MAAM,yBAAyB,CAAC;AACpE,OAAO,EAAE,uBAAuB,EAAE,MAAM,wBAAwB,CAAC;AACjE,OAAO,EAAE,iBAAiB,EAAE,MAAM,gBAAgB,CAAC;AACnD,OAAO,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAC7C,OAAO,EAAE,YAAY,EAAE,MAAM,WAAW,CAAC;AACzC,OAAO,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;AAClD,OAAO,EAAE,yBAAyB,EAAE,MAAM,0BAA0B,CAAC;AACrE,OAAO,EAAE,WAAW,EAAE,MAAM,UAAU,CAAC;AACvC,OAAO,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AAC/C,OAAO,EAAE,yBAAyB,EAAE,MAAM,0BAA0B,CAAC;AACrE,OAAO,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAC;AACtD,OAAO,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;AAElD,MAAM,UAAU,YAAY;IAC1B,oDAAoD;IACpD,OAAO;QACL,iBAAiB;QACjB,eAAe;QACf,cAAc;QACd,cAAc;QACd,gBAAgB;QAChB,yBAAyB;QACzB,iBAAiB;QACjB,cAAc;QACd,YAAY;QACZ,yBAAyB;QACzB,uBAAuB;QACvB,WAAW;QACX,eAAe;QACf,yBAAyB;QACzB,gBAAgB;QAChB,kBAAkB;KACnB,CAAC;AACJ,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@slkiser/opencode-quota",
|
|
3
|
-
"version": "3.6.
|
|
3
|
+
"version": "3.6.1",
|
|
4
4
|
"description": "OpenCode quota & tokens usage with zero context window pollution. Supports GitHub Copilot, OpenAI (Plus/Pro), Qwen Code, Chutes AI, Synthetic, Google Antigravity, Z.ai coding plan and more.",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "./dist/index.js",
|