@slkiser/opencode-quota 2.4.1 → 2.5.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 (44) hide show
  1. package/README.md +189 -234
  2. package/dist/index.d.ts +1 -1
  3. package/dist/index.d.ts.map +1 -1
  4. package/dist/index.js.map +1 -1
  5. package/dist/lib/copilot.d.ts +24 -18
  6. package/dist/lib/copilot.d.ts.map +1 -1
  7. package/dist/lib/copilot.js +472 -350
  8. package/dist/lib/copilot.js.map +1 -1
  9. package/dist/lib/entries.d.ts +11 -3
  10. package/dist/lib/entries.d.ts.map +1 -1
  11. package/dist/lib/entries.js.map +1 -1
  12. package/dist/lib/format.js.map +1 -1
  13. package/dist/lib/grouped-entry-normalization.d.ts +7 -0
  14. package/dist/lib/grouped-entry-normalization.d.ts.map +1 -0
  15. package/dist/lib/grouped-entry-normalization.js +50 -0
  16. package/dist/lib/grouped-entry-normalization.js.map +1 -0
  17. package/dist/lib/grouped-header-format.d.ts +5 -0
  18. package/dist/lib/grouped-header-format.d.ts.map +1 -0
  19. package/dist/lib/grouped-header-format.js +16 -0
  20. package/dist/lib/grouped-header-format.js.map +1 -0
  21. package/dist/lib/quota-command-format.d.ts +2 -3
  22. package/dist/lib/quota-command-format.d.ts.map +1 -1
  23. package/dist/lib/quota-command-format.js +14 -43
  24. package/dist/lib/quota-command-format.js.map +1 -1
  25. package/dist/lib/quota-status.d.ts.map +1 -1
  26. package/dist/lib/quota-status.js +30 -0
  27. package/dist/lib/quota-status.js.map +1 -1
  28. package/dist/lib/toast-format-grouped.d.ts +1 -9
  29. package/dist/lib/toast-format-grouped.d.ts.map +1 -1
  30. package/dist/lib/toast-format-grouped.js +8 -25
  31. package/dist/lib/toast-format-grouped.js.map +1 -1
  32. package/dist/lib/types.d.ts +53 -37
  33. package/dist/lib/types.d.ts.map +1 -1
  34. package/dist/lib/types.js.map +1 -1
  35. package/dist/providers/copilot.d.ts.map +1 -1
  36. package/dist/providers/copilot.js +69 -8
  37. package/dist/providers/copilot.js.map +1 -1
  38. package/dist/providers/openai.d.ts.map +1 -1
  39. package/dist/providers/openai.js.map +1 -1
  40. package/dist/providers/qwen-code.d.ts.map +1 -1
  41. package/dist/providers/qwen-code.js.map +1 -1
  42. package/dist/providers/zai.d.ts.map +1 -1
  43. package/dist/providers/zai.js.map +1 -1
  44. package/package.json +1 -1
@@ -1,16 +1,17 @@
1
1
  /**
2
- * GitHub Copilot quota fetcher
2
+ * GitHub Copilot premium request usage fetcher.
3
3
  *
4
- * Strategy (new Copilot API reality):
5
- *
6
- * 1) Preferred: GitHub public billing API using a fine-grained PAT
7
- * configured in ~/.config/opencode/copilot-quota-token.json.
8
- * 2) Best-effort: internal endpoint using OpenCode's stored OAuth token
9
- * (legacy formats or via token exchange).
4
+ * The plugin only uses documented GitHub billing APIs:
5
+ * - /users/{username}/settings/billing/premium_request/usage
6
+ * - /organizations/{org}/settings/billing/premium_request/usage
7
+ * - /enterprises/{enterprise}/settings/billing/premium_request/usage
10
8
  */
11
9
  import type { AuthData, CopilotQuotaConfig, CopilotResult } from "./types.js";
12
- type CopilotAuthKeyName = "github-copilot" | "copilot" | "copilot-chat";
13
- type CopilotPatTokenKind = "github_pat" | "ghp" | "other";
10
+ type CopilotAuthKeyName = "github-copilot" | "copilot" | "copilot-chat" | "github-copilot-chat";
11
+ type CopilotPatTokenKind = "github_pat" | "ghp" | "ghu" | "ghs" | "other";
12
+ type EffectiveCopilotAuthSource = "pat" | "oauth" | "none";
13
+ type CopilotBillingMode = "user_quota" | "organization_usage" | "enterprise_usage" | "none";
14
+ type CopilotRemainingTotalsState = "available" | "not_available_from_org_usage" | "not_available_from_enterprise_usage" | "unavailable";
14
15
  export type CopilotPatState = "absent" | "invalid" | "valid";
15
16
  export interface CopilotPatReadResult {
16
17
  state: CopilotPatState;
@@ -28,24 +29,29 @@ export interface CopilotQuotaAuthDiagnostics {
28
29
  hasRefreshToken: boolean;
29
30
  hasAccessToken: boolean;
30
31
  };
31
- effectiveSource: "pat" | "oauth" | "none";
32
+ effectiveSource: EffectiveCopilotAuthSource;
32
33
  override: "pat_overrides_oauth" | "none";
34
+ billingMode: CopilotBillingMode;
35
+ billingScope: "user" | "organization" | "enterprise" | "none";
36
+ billingApiAccessLikely: boolean;
37
+ remainingTotalsState: CopilotRemainingTotalsState;
38
+ queryPeriod?: {
39
+ year: number;
40
+ month: number;
41
+ };
42
+ usernameFilter?: string;
43
+ billingTargetError?: string;
44
+ tokenCompatibilityError?: string;
33
45
  }
34
46
  export declare function getCopilotPatConfigCandidatePaths(): string[];
35
47
  export declare function readQuotaConfigWithMeta(): CopilotPatReadResult;
36
48
  export declare function getCopilotQuotaAuthDiagnostics(authData: AuthData | null): CopilotQuotaAuthDiagnostics;
37
49
  /**
38
- * Query GitHub Copilot premium requests quota
50
+ * Query GitHub Copilot premium request usage.
39
51
  *
40
- * @returns Quota result, error, or null if not configured
52
+ * PAT configuration wins over OpenCode OAuth auth when both are present.
41
53
  */
42
54
  export declare function queryCopilotQuota(): Promise<CopilotResult>;
43
- /**
44
- * Format Copilot quota for toast display
45
- *
46
- * @param result - Copilot quota result
47
- * @returns Formatted string like "Copilot 229/300 (24%)" or null
48
- */
49
55
  export declare function formatCopilotQuota(result: CopilotResult): string | null;
50
56
  export {};
51
57
  //# sourceMappingURL=copilot.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"copilot.d.ts","sourceRoot":"","sources":["../../src/lib/copilot.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,KAAK,EACV,QAAQ,EAER,kBAAkB,EAKlB,aAAa,EACd,MAAM,YAAY,CAAC;AAwDpB,KAAK,kBAAkB,GAAG,gBAAgB,GAAG,SAAS,GAAG,cAAc,CAAC;AAExE,KAAK,mBAAmB,GAAG,YAAY,GAAG,KAAK,GAAG,OAAO,CAAC;AAE1D,MAAM,MAAM,eAAe,GAAG,QAAQ,GAAG,SAAS,GAAG,OAAO,CAAC;AAE7D,MAAM,WAAW,oBAAoB;IACnC,KAAK,EAAE,eAAe,CAAC;IACvB,YAAY,EAAE,MAAM,EAAE,CAAC;IACvB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,MAAM,CAAC,EAAE,kBAAkB,CAAC;IAC5B,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,SAAS,CAAC,EAAE,mBAAmB,CAAC;CACjC;AAED,MAAM,WAAW,2BAA2B;IAC1C,GAAG,EAAE,oBAAoB,CAAC;IAC1B,KAAK,EAAE;QACL,UAAU,EAAE,OAAO,CAAC;QACpB,OAAO,EAAE,kBAAkB,GAAG,IAAI,CAAC;QACnC,eAAe,EAAE,OAAO,CAAC;QACzB,cAAc,EAAE,OAAO,CAAC;KACzB,CAAC;IACF,eAAe,EAAE,KAAK,GAAG,OAAO,GAAG,MAAM,CAAC;IAC1C,QAAQ,EAAE,qBAAqB,GAAG,MAAM,CAAC;CAC1C;AAuBD,wBAAgB,iCAAiC,IAAI,MAAM,EAAE,CAK5D;AA4FD,wBAAgB,uBAAuB,IAAI,oBAAoB,CA0C9D;AA6DD,wBAAgB,8BAA8B,CAAC,QAAQ,EAAE,QAAQ,GAAG,IAAI,GAAG,2BAA2B,CAuBrG;AA4ND;;;;GAIG;AACH,wBAAsB,iBAAiB,IAAI,OAAO,CAAC,aAAa,CAAC,CAiFhE;AAED;;;;;GAKG;AACH,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,aAAa,GAAG,MAAM,GAAG,IAAI,CAevE"}
1
+ {"version":3,"file":"copilot.d.ts","sourceRoot":"","sources":["../../src/lib/copilot.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAKH,OAAO,KAAK,EACV,QAAQ,EAIR,kBAAkB,EAElB,aAAa,EAGd,MAAM,YAAY,CAAC;AAWpB,KAAK,kBAAkB,GACnB,gBAAgB,GAChB,SAAS,GACT,cAAc,GACd,qBAAqB,CAAC;AAC1B,KAAK,mBAAmB,GAAG,YAAY,GAAG,KAAK,GAAG,KAAK,GAAG,KAAK,GAAG,OAAO,CAAC;AAC1E,KAAK,0BAA0B,GAAG,KAAK,GAAG,OAAO,GAAG,MAAM,CAAC;AAC3D,KAAK,kBAAkB,GAAG,YAAY,GAAG,oBAAoB,GAAG,kBAAkB,GAAG,MAAM,CAAC;AAC5F,KAAK,2BAA2B,GAC5B,WAAW,GACX,8BAA8B,GAC9B,qCAAqC,GACrC,aAAa,CAAC;AA4BlB,MAAM,MAAM,eAAe,GAAG,QAAQ,GAAG,SAAS,GAAG,OAAO,CAAC;AAE7D,MAAM,WAAW,oBAAoB;IACnC,KAAK,EAAE,eAAe,CAAC;IACvB,YAAY,EAAE,MAAM,EAAE,CAAC;IACvB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,MAAM,CAAC,EAAE,kBAAkB,CAAC;IAC5B,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,SAAS,CAAC,EAAE,mBAAmB,CAAC;CACjC;AAED,MAAM,WAAW,2BAA2B;IAC1C,GAAG,EAAE,oBAAoB,CAAC;IAC1B,KAAK,EAAE;QACL,UAAU,EAAE,OAAO,CAAC;QACpB,OAAO,EAAE,kBAAkB,GAAG,IAAI,CAAC;QACnC,eAAe,EAAE,OAAO,CAAC;QACzB,cAAc,EAAE,OAAO,CAAC;KACzB,CAAC;IACF,eAAe,EAAE,0BAA0B,CAAC;IAC5C,QAAQ,EAAE,qBAAqB,GAAG,MAAM,CAAC;IACzC,WAAW,EAAE,kBAAkB,CAAC;IAChC,YAAY,EAAE,MAAM,GAAG,cAAc,GAAG,YAAY,GAAG,MAAM,CAAC;IAC9D,sBAAsB,EAAE,OAAO,CAAC;IAChC,oBAAoB,EAAE,2BAA2B,CAAC;IAClD,WAAW,CAAC,EAAE;QACZ,IAAI,EAAE,MAAM,CAAC;QACb,KAAK,EAAE,MAAM,CAAC;KACf,CAAC;IACF,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,uBAAuB,CAAC,EAAE,MAAM,CAAC;CAClC;AAiOD,wBAAgB,iCAAiC,IAAI,MAAM,EAAE,CAK5D;AA6DD,wBAAgB,uBAAuB,IAAI,oBAAoB,CAsC9D;AA0BD,wBAAgB,8BAA8B,CAAC,QAAQ,EAAE,QAAQ,GAAG,IAAI,GAAG,2BAA2B,CA8CrG;AAqTD;;;;GAIG;AACH,wBAAsB,iBAAiB,IAAI,OAAO,CAAC,aAAa,CAAC,CAmFhE;AAED,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,aAAa,GAAG,MAAM,GAAG,IAAI,CA0BvE"}