@slkiser/opencode-quota 4.1.0 → 4.3.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 +85 -28
- package/dist/lib/api-key-resolver.d.ts +73 -22
- package/dist/lib/api-key-resolver.d.ts.map +1 -1
- package/dist/lib/api-key-resolver.js +102 -15
- package/dist/lib/api-key-resolver.js.map +1 -1
- package/dist/lib/chutes-config.d.ts.map +1 -1
- package/dist/lib/chutes-config.js +2 -4
- package/dist/lib/chutes-config.js.map +1 -1
- package/dist/lib/config.d.ts +1 -1
- package/dist/lib/config.d.ts.map +1 -1
- package/dist/lib/config.js +22 -0
- package/dist/lib/config.js.map +1 -1
- package/dist/lib/copilot.d.ts.map +1 -1
- package/dist/lib/copilot.js +82 -31
- package/dist/lib/copilot.js.map +1 -1
- package/dist/lib/deepseek-auth.d.ts.map +1 -1
- package/dist/lib/deepseek-auth.js +3 -7
- package/dist/lib/deepseek-auth.js.map +1 -1
- package/dist/lib/entries.d.ts +9 -4
- package/dist/lib/entries.d.ts.map +1 -1
- package/dist/lib/entries.js.map +1 -1
- package/dist/lib/glm-coding-plan.d.ts +18 -0
- package/dist/lib/glm-coding-plan.d.ts.map +1 -0
- package/dist/lib/glm-coding-plan.js +68 -0
- package/dist/lib/glm-coding-plan.js.map +1 -0
- package/dist/lib/google-agy-companion.d.ts +4 -25
- package/dist/lib/google-agy-companion.d.ts.map +1 -1
- package/dist/lib/google-agy-companion.js +47 -272
- package/dist/lib/google-agy-companion.js.map +1 -1
- package/dist/lib/google-agy.d.ts.map +1 -1
- package/dist/lib/google-agy.js +7 -25
- package/dist/lib/google-agy.js.map +1 -1
- package/dist/lib/google-antigravity-companion.d.ts +4 -25
- package/dist/lib/google-antigravity-companion.d.ts.map +1 -1
- package/dist/lib/google-antigravity-companion.js +44 -283
- package/dist/lib/google-antigravity-companion.js.map +1 -1
- package/dist/lib/google-companion-credentials.d.ts +70 -0
- package/dist/lib/google-companion-credentials.d.ts.map +1 -0
- package/dist/lib/google-companion-credentials.js +265 -0
- package/dist/lib/google-companion-credentials.js.map +1 -0
- package/dist/lib/google-gemini-cli-companion.d.ts +4 -25
- package/dist/lib/google-gemini-cli-companion.d.ts.map +1 -1
- package/dist/lib/google-gemini-cli-companion.js +47 -258
- package/dist/lib/google-gemini-cli-companion.js.map +1 -1
- package/dist/lib/google-gemini-cli.d.ts.map +1 -1
- package/dist/lib/google-gemini-cli.js +2 -20
- package/dist/lib/google-gemini-cli.js.map +1 -1
- package/dist/lib/google.d.ts.map +1 -1
- package/dist/lib/google.js +23 -45
- package/dist/lib/google.js.map +1 -1
- package/dist/lib/kimi-auth.d.ts +3 -26
- package/dist/lib/kimi-auth.d.ts.map +1 -1
- package/dist/lib/kimi-auth.js +24 -91
- package/dist/lib/kimi-auth.js.map +1 -1
- package/dist/lib/maintainer-announcements.js +2 -2
- package/dist/lib/maintainer-announcements.js.map +1 -1
- package/dist/lib/map-with-concurrency.d.ts +2 -0
- package/dist/lib/map-with-concurrency.d.ts.map +1 -0
- package/dist/lib/map-with-concurrency.js +17 -0
- package/dist/lib/map-with-concurrency.js.map +1 -0
- package/dist/lib/nanogpt-config.d.ts.map +1 -1
- package/dist/lib/nanogpt-config.js +2 -4
- package/dist/lib/nanogpt-config.js.map +1 -1
- package/dist/lib/openrouter.d.ts +13 -0
- package/dist/lib/openrouter.d.ts.map +1 -0
- package/dist/lib/openrouter.js +41 -0
- package/dist/lib/openrouter.js.map +1 -0
- package/dist/lib/provider-metadata.d.ts +11 -0
- package/dist/lib/provider-metadata.d.ts.map +1 -1
- package/dist/lib/provider-metadata.js +11 -0
- package/dist/lib/provider-metadata.js.map +1 -1
- package/dist/lib/quota-dialog-commands.d.ts.map +1 -1
- package/dist/lib/quota-dialog-commands.js +3 -10
- package/dist/lib/quota-dialog-commands.js.map +1 -1
- package/dist/lib/quota-export.d.ts.map +1 -1
- package/dist/lib/quota-export.js +1 -0
- package/dist/lib/quota-export.js.map +1 -1
- package/dist/lib/quota-providers-remote.d.ts +0 -1
- package/dist/lib/quota-providers-remote.d.ts.map +1 -1
- package/dist/lib/quota-providers-remote.js +3 -16
- package/dist/lib/quota-providers-remote.js.map +1 -1
- package/dist/lib/quota-render-data.d.ts.map +1 -1
- package/dist/lib/quota-render-data.js +40 -15
- package/dist/lib/quota-render-data.js.map +1 -1
- package/dist/lib/quota-runtime-context.d.ts +2 -0
- package/dist/lib/quota-runtime-context.d.ts.map +1 -1
- package/dist/lib/quota-runtime-context.js +40 -0
- package/dist/lib/quota-runtime-context.js.map +1 -1
- package/dist/lib/quota-state.d.ts.map +1 -1
- package/dist/lib/quota-state.js +89 -5
- package/dist/lib/quota-state.js.map +1 -1
- package/dist/lib/quota-status.d.ts +7 -17
- package/dist/lib/quota-status.d.ts.map +1 -1
- package/dist/lib/quota-status.js +116 -1036
- package/dist/lib/quota-status.js.map +1 -1
- package/dist/lib/quota-telemetry.d.ts +45 -0
- package/dist/lib/quota-telemetry.d.ts.map +1 -0
- package/dist/lib/quota-telemetry.js +300 -0
- package/dist/lib/quota-telemetry.js.map +1 -0
- package/dist/lib/synthetic-config.d.ts.map +1 -1
- package/dist/lib/synthetic-config.js +2 -4
- package/dist/lib/synthetic-config.js.map +1 -1
- package/dist/lib/tui-runtime.d.ts.map +1 -1
- package/dist/lib/tui-runtime.js +10 -1
- package/dist/lib/tui-runtime.js.map +1 -1
- package/dist/lib/types.d.ts +17 -1
- package/dist/lib/types.d.ts.map +1 -1
- package/dist/lib/types.js +3 -0
- package/dist/lib/types.js.map +1 -1
- package/dist/lib/zai-auth.d.ts +3 -26
- package/dist/lib/zai-auth.d.ts.map +1 -1
- package/dist/lib/zai-auth.js +24 -94
- package/dist/lib/zai-auth.js.map +1 -1
- package/dist/lib/zai.d.ts +1 -8
- package/dist/lib/zai.d.ts.map +1 -1
- package/dist/lib/zai.js +11 -97
- package/dist/lib/zai.js.map +1 -1
- package/dist/lib/zhipu-auth.d.ts +3 -26
- package/dist/lib/zhipu-auth.d.ts.map +1 -1
- package/dist/lib/zhipu-auth.js +24 -94
- package/dist/lib/zhipu-auth.js.map +1 -1
- package/dist/lib/zhipu.d.ts +1 -8
- package/dist/lib/zhipu.d.ts.map +1 -1
- package/dist/lib/zhipu.js +10 -89
- package/dist/lib/zhipu.js.map +1 -1
- package/dist/plugin.d.ts.map +1 -1
- package/dist/plugin.js +4 -0
- package/dist/plugin.js.map +1 -1
- package/dist/providers/alibaba-coding-plan.d.ts.map +1 -1
- package/dist/providers/alibaba-coding-plan.js +33 -6
- package/dist/providers/alibaba-coding-plan.js.map +1 -1
- package/dist/providers/anthropic.d.ts.map +1 -1
- package/dist/providers/anthropic.js +35 -7
- package/dist/providers/anthropic.js.map +1 -1
- package/dist/providers/chutes.d.ts.map +1 -1
- package/dist/providers/chutes.js +10 -3
- package/dist/providers/chutes.js.map +1 -1
- package/dist/providers/copilot.d.ts.map +1 -1
- package/dist/providers/copilot.js +79 -29
- package/dist/providers/copilot.js.map +1 -1
- package/dist/providers/cursor.d.ts.map +1 -1
- package/dist/providers/cursor.js +34 -6
- package/dist/providers/cursor.js.map +1 -1
- package/dist/providers/deepseek.d.ts.map +1 -1
- package/dist/providers/deepseek.js +10 -3
- package/dist/providers/deepseek.js.map +1 -1
- package/dist/providers/glm-coding-plan-provider.d.ts +9 -0
- package/dist/providers/glm-coding-plan-provider.d.ts.map +1 -1
- package/dist/providers/glm-coding-plan-provider.js +24 -2
- package/dist/providers/glm-coding-plan-provider.js.map +1 -1
- package/dist/providers/google-agy.d.ts.map +1 -1
- package/dist/providers/google-agy.js +23 -6
- package/dist/providers/google-agy.js.map +1 -1
- package/dist/providers/google-antigravity.d.ts.map +1 -1
- package/dist/providers/google-antigravity.js +31 -6
- package/dist/providers/google-antigravity.js.map +1 -1
- package/dist/providers/google-gemini-cli.d.ts.map +1 -1
- package/dist/providers/google-gemini-cli.js +24 -6
- package/dist/providers/google-gemini-cli.js.map +1 -1
- package/dist/providers/kimi-code.d.ts.map +1 -1
- package/dist/providers/kimi-code.js +27 -8
- package/dist/providers/kimi-code.js.map +1 -1
- package/dist/providers/mimo.d.ts.map +1 -1
- package/dist/providers/mimo.js +12 -5
- package/dist/providers/mimo.js.map +1 -1
- package/dist/providers/minimax-coding-plan.d.ts.map +1 -1
- package/dist/providers/minimax-coding-plan.js +37 -6
- package/dist/providers/minimax-coding-plan.js.map +1 -1
- package/dist/providers/nanogpt.d.ts.map +1 -1
- package/dist/providers/nanogpt.js +41 -4
- package/dist/providers/nanogpt.js.map +1 -1
- package/dist/providers/openai.d.ts.map +1 -1
- package/dist/providers/openai.js +20 -3
- package/dist/providers/openai.js.map +1 -1
- package/dist/providers/opencode-go.d.ts.map +1 -1
- package/dist/providers/opencode-go.js +33 -15
- package/dist/providers/opencode-go.js.map +1 -1
- package/dist/providers/opencode-zen.d.ts.map +1 -1
- package/dist/providers/opencode-zen.js +27 -22
- package/dist/providers/opencode-zen.js.map +1 -1
- package/dist/providers/openrouter.d.ts +6 -0
- package/dist/providers/openrouter.d.ts.map +1 -0
- package/dist/providers/openrouter.js +25 -0
- package/dist/providers/openrouter.js.map +1 -0
- package/dist/providers/quota-providers.js +2 -1
- package/dist/providers/quota-providers.js.map +1 -1
- package/dist/providers/qwen-code.d.ts.map +1 -1
- package/dist/providers/qwen-code.js +19 -5
- package/dist/providers/qwen-code.js.map +1 -1
- 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/dist/providers/result-helpers.d.ts +29 -1
- package/dist/providers/result-helpers.d.ts.map +1 -1
- package/dist/providers/result-helpers.js +69 -0
- package/dist/providers/result-helpers.js.map +1 -1
- package/dist/providers/synthetic.d.ts.map +1 -1
- package/dist/providers/synthetic.js +10 -3
- package/dist/providers/synthetic.js.map +1 -1
- package/dist/providers/zai.d.ts.map +1 -1
- package/dist/providers/zai.js +2 -1
- package/dist/providers/zai.js.map +1 -1
- package/dist/providers/zhipu.d.ts.map +1 -1
- package/dist/providers/zhipu.js +2 -1
- package/dist/providers/zhipu.js.map +1 -1
- package/dist/tui.d.ts.map +1 -1
- package/dist/tui.js +4 -0
- package/dist/tui.tsx +5 -0
- package/package.json +10 -2
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"deepseek-auth.js","sourceRoot":"","sources":["../../src/lib/deepseek-auth.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAChE,OAAO,EACL,4BAA4B,EAC5B,qCAAqC,GACtC,MAAM,uBAAuB,CAAC;AAO/B,MAAM,yBAAyB,GAAG,CAAC,kBAAkB,CAAU,CAAC;AAChE,MAAM,sBAAsB,GAAG,CAAC,UAAU,CAAU,CAAC;AAQrD,OAAO,EAAE,qCAAqC,IAAI,+BAA+B,EAAE,MAAM,uBAAuB,CAAC;AAEjH,MAAM,sBAAsB,GAAG,4BAA4B,CAAoB;IAC7E,OAAO,EAAE
|
|
1
|
+
{"version":3,"file":"deepseek-auth.js","sourceRoot":"","sources":["../../src/lib/deepseek-auth.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAChE,OAAO,EACL,4BAA4B,EAC5B,qCAAqC,GACtC,MAAM,uBAAuB,CAAC;AAO/B,MAAM,yBAAyB,GAAG,CAAC,kBAAkB,CAAU,CAAC;AAChE,MAAM,sBAAsB,GAAG,CAAC,UAAU,CAAU,CAAC;AAQrD,OAAO,EAAE,qCAAqC,IAAI,+BAA+B,EAAE,MAAM,uBAAuB,CAAC;AAEjH,MAAM,sBAAsB,GAAG,4BAA4B,CAAoB;IAC7E,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,kBAAkB,EAAE,MAAM,EAAE,sBAAsB,EAAE,CAAC;IACvE,YAAY,EAAE,sBAAsB;IACpC,cAAc,EAAE,yBAAyB;IACzC,gBAAgB,EAAE,eAAe;IACjC,iBAAiB,EAAE,gBAAgB;IACnC,mBAAmB,EAAE,qCAAqC;IAC1D,IAAI,EAAE;QACJ,QAAQ,EAAE,YAAY;QACtB,YAAY;QACZ,UAAU,EAAE,WAAW;KACxB;CACF,CAAC,CAAC;AAEH,MAAM,CAAC,KAAK,UAAU,qBAAqB;IACzC,OAAO,sBAAsB,CAAC,OAAO,EAAE,CAAC;AAC1C,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,iBAAiB;IACrC,OAAO,sBAAsB,CAAC,GAAG,EAAE,CAAC;AACtC,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,yBAAyB;IAM7C,OAAO,sBAAsB,CAAC,WAAW,EAAE,CAAC;AAC9C,CAAC"}
|
package/dist/lib/entries.d.ts
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import type { CursorQuotaPlan, OpenCodeGoWindowKey } from "./types.js";
|
|
2
2
|
import type { QuotaProviderDefinition } from "./quota-providers.js";
|
|
3
3
|
import type { RuntimeProviderIdResolver } from "./runtime-provider-ids.js";
|
|
4
|
+
import type { QuotaTelemetryToken } from "./quota-telemetry.js";
|
|
4
5
|
/**
|
|
5
6
|
* Normalized quota output model.
|
|
6
7
|
*
|
|
@@ -87,8 +88,8 @@ export interface SessionTokensData {
|
|
|
87
88
|
totalOutput: number;
|
|
88
89
|
}
|
|
89
90
|
export interface QuotaProviderStatusDetail {
|
|
90
|
-
key: string;
|
|
91
|
-
value: string;
|
|
91
|
+
readonly key: string;
|
|
92
|
+
readonly value: string;
|
|
92
93
|
}
|
|
93
94
|
export interface QuotaProviderPresentation {
|
|
94
95
|
singleWindowDisplayName?: string;
|
|
@@ -130,8 +131,11 @@ export interface QuotaProviderResult {
|
|
|
130
131
|
errors: QuotaToastError[];
|
|
131
132
|
/** Internal provider diagnostics; not projected into normal presentation/export surfaces. */
|
|
132
133
|
diagnostics?: QuotaProviderDiagnostic[];
|
|
133
|
-
/**
|
|
134
|
-
|
|
134
|
+
/**
|
|
135
|
+
* Safe, single-line provider details from this fetch attempt. Diagnostic consumers
|
|
136
|
+
* may reuse them, but must not refetch when details are absent.
|
|
137
|
+
*/
|
|
138
|
+
statusDetails?: readonly QuotaProviderStatusDetail[];
|
|
135
139
|
presentation?: QuotaProviderPresentation;
|
|
136
140
|
}
|
|
137
141
|
export interface QuotaProviderMatchContext {
|
|
@@ -175,6 +179,7 @@ export interface QuotaProviderContext {
|
|
|
175
179
|
currentProviderID?: string;
|
|
176
180
|
enabledProviders: string[] | "auto";
|
|
177
181
|
quotaProviders?: QuotaProviderDefinition[];
|
|
182
|
+
telemetryToken?: QuotaTelemetryToken;
|
|
178
183
|
};
|
|
179
184
|
}
|
|
180
185
|
export interface QuotaProvider {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"entries.d.ts","sourceRoot":"","sources":["../../src/lib/entries.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,mBAAmB,EAAE,MAAM,YAAY,CAAC;AACvE,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,sBAAsB,CAAC;AACpE,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,2BAA2B,CAAC;
|
|
1
|
+
{"version":3,"file":"entries.d.ts","sourceRoot":"","sources":["../../src/lib/entries.ts"],"names":[],"mappings":"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"}
|
package/dist/lib/entries.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"entries.js","sourceRoot":"","sources":["../../src/lib/entries.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"entries.js","sourceRoot":"","sources":["../../src/lib/entries.ts"],"names":[],"mappings":"AA2FA,MAAM,UAAU,YAAY,CAAC,CAAkB;IAC7C,OAAO,CAAC,CAAC,IAAI,KAAK,OAAO,CAAC;AAC5B,CAAC;AAED,MAAM,UAAU,cAAc,CAC5B,CAAkB;IAElB,OAAO,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;AAC1B,CAAC"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import type { InvalidAwareAuthResult } from "./api-key-resolver.js";
|
|
2
|
+
import type { ZaiResult } from "./types.js";
|
|
3
|
+
type GlmCodingPlanDescriptor = {
|
|
4
|
+
label: string;
|
|
5
|
+
endpoint: string;
|
|
6
|
+
httpErrorPrefix: string;
|
|
7
|
+
resolveAuth: () => Promise<InvalidAwareAuthResult>;
|
|
8
|
+
} & ({
|
|
9
|
+
envelope: "zai";
|
|
10
|
+
apiErrorPrefix: string;
|
|
11
|
+
} | {
|
|
12
|
+
envelope: "zhipu";
|
|
13
|
+
});
|
|
14
|
+
export declare function queryGlmCodingPlanQuota(descriptor: GlmCodingPlanDescriptor, options?: {
|
|
15
|
+
requestTimeoutMs?: number;
|
|
16
|
+
}): Promise<ZaiResult>;
|
|
17
|
+
export {};
|
|
18
|
+
//# sourceMappingURL=glm-coding-plan.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"glm-coding-plan.d.ts","sourceRoot":"","sources":["../../src/lib/glm-coding-plan.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,uBAAuB,CAAC;AACpE,OAAO,KAAK,EAAiC,SAAS,EAAE,MAAM,YAAY,CAAC;AAU3E,KAAK,uBAAuB,GAAG;IAC7B,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,MAAM,CAAC;IACjB,eAAe,EAAE,MAAM,CAAC;IACxB,WAAW,EAAE,MAAM,OAAO,CAAC,sBAAsB,CAAC,CAAC;CACpD,GAAG,CAAC;IAAE,QAAQ,EAAE,KAAK,CAAC;IAAC,cAAc,EAAE,MAAM,CAAA;CAAE,GAAG;IAAE,QAAQ,EAAE,OAAO,CAAA;CAAE,CAAC,CAAC;AAE1E,wBAAsB,uBAAuB,CAC3C,UAAU,EAAE,uBAAuB,EACnC,OAAO,GAAE;IAAE,gBAAgB,CAAC,EAAE,MAAM,CAAA;CAAO,GAC1C,OAAO,CAAC,SAAS,CAAC,CAmEpB"}
|
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
import { sanitizeDisplaySnippet, sanitizeDisplayText } from "./display-sanitize.js";
|
|
2
|
+
import { clampPercent } from "./format-utils.js";
|
|
3
|
+
import { fetchWithTimeout } from "./http.js";
|
|
4
|
+
export async function queryGlmCodingPlanQuota(descriptor, options = {}) {
|
|
5
|
+
const auth = await descriptor.resolveAuth();
|
|
6
|
+
if (auth.state === "none")
|
|
7
|
+
return null;
|
|
8
|
+
if (auth.state === "invalid")
|
|
9
|
+
return { success: false, error: auth.error };
|
|
10
|
+
try {
|
|
11
|
+
return await fetchWithTimeout(descriptor.endpoint, {
|
|
12
|
+
request: {
|
|
13
|
+
headers: {
|
|
14
|
+
Authorization: auth.apiKey,
|
|
15
|
+
"User-Agent": "OpenCode-Quota-Toast/1.0",
|
|
16
|
+
"Content-Type": "application/json",
|
|
17
|
+
},
|
|
18
|
+
},
|
|
19
|
+
timeoutMs: options.requestTimeoutMs,
|
|
20
|
+
consume: async (response) => {
|
|
21
|
+
if (!response.ok) {
|
|
22
|
+
const body = sanitizeDisplaySnippet(await response.text(), 120);
|
|
23
|
+
return {
|
|
24
|
+
success: false,
|
|
25
|
+
error: `${descriptor.httpErrorPrefix} ${response.status}: ${body}`,
|
|
26
|
+
};
|
|
27
|
+
}
|
|
28
|
+
const body = (await response.json());
|
|
29
|
+
if (descriptor.envelope === "zai" &&
|
|
30
|
+
(body.success === false || (typeof body.code === "number" && body.code >= 400))) {
|
|
31
|
+
const message = typeof body.msg === "string" ? sanitizeDisplayText(body.msg) : "";
|
|
32
|
+
return {
|
|
33
|
+
success: false,
|
|
34
|
+
error: message ||
|
|
35
|
+
(typeof body.code === "number"
|
|
36
|
+
? `${descriptor.apiErrorPrefix} ${body.code}`
|
|
37
|
+
: descriptor.apiErrorPrefix),
|
|
38
|
+
};
|
|
39
|
+
}
|
|
40
|
+
const limits = descriptor.envelope === "zai" ? (body.data?.limits ?? body.limits) : body.data?.limits;
|
|
41
|
+
if (!Array.isArray(limits))
|
|
42
|
+
return { success: false, error: "Invalid quota data" };
|
|
43
|
+
const windows = {};
|
|
44
|
+
for (const limit of limits) {
|
|
45
|
+
const resetDate = limit.nextResetTime ? new Date(Math.round(limit.nextResetTime)) : null;
|
|
46
|
+
const resetTimeIso = resetDate && Number.isFinite(resetDate.valueOf()) && resetDate.valueOf() > 0
|
|
47
|
+
? resetDate.toISOString()
|
|
48
|
+
: undefined;
|
|
49
|
+
const window = { percentRemaining: clampPercent(100 - limit.percentage), resetTimeIso };
|
|
50
|
+
if (limit.type === "TOKENS_LIMIT" && limit.unit === 3)
|
|
51
|
+
windows.fiveHour = window;
|
|
52
|
+
else if (limit.type === "TOKENS_LIMIT" && limit.unit === 6)
|
|
53
|
+
windows.weekly = window;
|
|
54
|
+
else if (limit.type === "TIME_LIMIT")
|
|
55
|
+
windows.mcp = window;
|
|
56
|
+
}
|
|
57
|
+
return { success: true, label: descriptor.label, windows };
|
|
58
|
+
},
|
|
59
|
+
});
|
|
60
|
+
}
|
|
61
|
+
catch (error) {
|
|
62
|
+
return {
|
|
63
|
+
success: false,
|
|
64
|
+
error: sanitizeDisplayText(error instanceof Error ? error.message : String(error)),
|
|
65
|
+
};
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
//# sourceMappingURL=glm-coding-plan.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"glm-coding-plan.js","sourceRoot":"","sources":["../../src/lib/glm-coding-plan.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,28 +1,7 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
} | {
|
|
6
|
-
state: "missing";
|
|
7
|
-
importSpecifier: string;
|
|
8
|
-
error: string;
|
|
9
|
-
} | {
|
|
10
|
-
state: "invalid";
|
|
11
|
-
importSpecifier: string;
|
|
12
|
-
error: string;
|
|
13
|
-
resolvedPath?: string;
|
|
14
|
-
};
|
|
15
|
-
export type AgyConfiguredCredentials = {
|
|
16
|
-
state: "configured";
|
|
17
|
-
clientId: string;
|
|
18
|
-
clientSecret: string;
|
|
19
|
-
resolvedPath: string;
|
|
20
|
-
};
|
|
21
|
-
export type AgyClientCredentials = AgyConfiguredCredentials | {
|
|
22
|
-
state: "missing" | "invalid";
|
|
23
|
-
error: string;
|
|
24
|
-
resolvedPath?: string;
|
|
25
|
-
};
|
|
1
|
+
import { type GoogleCompanionClientCredentials, type GoogleCompanionConfiguredCredentials, type GoogleCompanionPresence } from "./google-companion-credentials.js";
|
|
2
|
+
export type AgyCompanionPresence = GoogleCompanionPresence;
|
|
3
|
+
export type AgyConfiguredCredentials = GoogleCompanionConfiguredCredentials;
|
|
4
|
+
export type AgyClientCredentials = GoogleCompanionClientCredentials;
|
|
26
5
|
export declare function inspectAgyCompanionPresence(): Promise<AgyCompanionPresence>;
|
|
27
6
|
export declare function resolveAgyClientCredentials(): Promise<AgyClientCredentials>;
|
|
28
7
|
export declare function clearAgyCompanionCacheForTests(): void;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"google-agy-companion.d.ts","sourceRoot":"","sources":["../../src/lib/google-agy-companion.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"google-agy-companion.d.ts","sourceRoot":"","sources":["../../src/lib/google-agy-companion.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,KAAK,gCAAgC,EACrC,KAAK,oCAAoC,EAEzC,KAAK,uBAAuB,EAC7B,MAAM,mCAAmC,CAAC;AA0D3C,MAAM,MAAM,oBAAoB,GAAG,uBAAuB,CAAC;AAC3D,MAAM,MAAM,wBAAwB,GAAG,oCAAoC,CAAC;AAC5E,MAAM,MAAM,oBAAoB,GAAG,gCAAgC,CAAC;AAEpE,wBAAsB,2BAA2B,IAAI,OAAO,CAAC,oBAAoB,CAAC,CAEjF;AAED,wBAAsB,2BAA2B,IAAI,OAAO,CAAC,oBAAoB,CAAC,CAEjF;AAED,wBAAgB,8BAA8B,IAAI,IAAI,CAErD"}
|
|
@@ -1,289 +1,64 @@
|
|
|
1
|
-
import {
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
import { pathToFileURL } from "node:url";
|
|
6
|
-
import { getOpencodeRuntimeDirCandidates } from "./opencode-runtime-paths.js";
|
|
7
|
-
const require = createRequire(import.meta.url);
|
|
8
|
-
const COMPANION_PACKAGE_NAME = "@anthonyhaussman/opencode-agy-auth";
|
|
9
|
-
const COMPANION_JS_IMPORT_SPECIFIERS = [
|
|
10
|
-
`${COMPANION_PACKAGE_NAME}/dist/src/constants.js`,
|
|
11
|
-
`${COMPANION_PACKAGE_NAME}/src/constants.js`,
|
|
12
|
-
];
|
|
13
|
-
const COMPANION_SOURCE_IMPORT_SPECIFIER = `${COMPANION_PACKAGE_NAME}/src/constants.ts`;
|
|
14
|
-
const COMPANION_PACKAGE_JSON_SPECIFIER = `${COMPANION_PACKAGE_NAME}/package.json`;
|
|
15
|
-
const COMPANION_DIRECT_CANDIDATE_PATHS = [
|
|
1
|
+
import { createGoogleCompanionCredentialResolver, } from "./google-companion-credentials.js";
|
|
2
|
+
const PACKAGE_NAME = "@anthonyhaussman/opencode-agy-auth";
|
|
3
|
+
const SOURCE_SPECIFIER = `${PACKAGE_NAME}/src/constants.ts`;
|
|
4
|
+
const RUNTIME_CANDIDATES = [
|
|
16
5
|
["src", "constants.ts"],
|
|
17
6
|
["src", "constants.js"],
|
|
18
7
|
["dist", "src", "constants.js"],
|
|
19
8
|
["dist", "index.js"],
|
|
20
9
|
];
|
|
21
|
-
const
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
}
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
return message.includes("Cannot find module");
|
|
34
|
-
}
|
|
35
|
-
function isPackagePathNotExportedError(error) {
|
|
36
|
-
if (!error || typeof error !== "object") {
|
|
37
|
-
return false;
|
|
38
|
-
}
|
|
39
|
-
return "code" in error && error.code === "ERR_PACKAGE_PATH_NOT_EXPORTED";
|
|
40
|
-
}
|
|
41
|
-
function isFallthroughResolutionError(error) {
|
|
42
|
-
return isModuleNotFoundError(error) || isPackagePathNotExportedError(error);
|
|
43
|
-
}
|
|
44
|
-
function normalizeCredential(value) {
|
|
45
|
-
return typeof value === "string" ? value.trim() : "";
|
|
46
|
-
}
|
|
47
|
-
function getCompanionResolvePaths() {
|
|
48
|
-
const paths = [...getOpencodeRuntimeDirCandidates().cacheDirs];
|
|
49
|
-
return paths;
|
|
50
|
-
}
|
|
51
|
-
function getRuntimePackageRoots() {
|
|
52
|
-
const cacheDirs = getOpencodeRuntimeDirCandidates().cacheDirs;
|
|
53
|
-
const packageRoots = cacheDirs.map((cacheDir) => join(cacheDir, "node_modules", COMPANION_PACKAGE_NAME));
|
|
54
|
-
for (const cacheDir of cacheDirs) {
|
|
55
|
-
try {
|
|
56
|
-
const packagesDir = join(cacheDir, "packages");
|
|
57
|
-
if (COMPANION_PACKAGE_NAME.startsWith("@")) {
|
|
58
|
-
const [scope, name] = COMPANION_PACKAGE_NAME.split("/");
|
|
59
|
-
const scopeDir = join(packagesDir, scope);
|
|
60
|
-
const entries = readdirSync(scopeDir, { withFileTypes: true });
|
|
61
|
-
for (const entry of entries) {
|
|
62
|
-
if (entry.isDirectory() && entry.name.startsWith(name)) {
|
|
63
|
-
const packagePath = join(scopeDir, entry.name);
|
|
64
|
-
packageRoots.push(packagePath);
|
|
65
|
-
packageRoots.push(join(packagePath, "node_modules", COMPANION_PACKAGE_NAME));
|
|
66
|
-
}
|
|
67
|
-
}
|
|
68
|
-
}
|
|
69
|
-
else {
|
|
70
|
-
const entries = readdirSync(packagesDir, { withFileTypes: true });
|
|
71
|
-
for (const entry of entries) {
|
|
72
|
-
if (entry.isDirectory() && entry.name.startsWith(COMPANION_PACKAGE_NAME)) {
|
|
73
|
-
packageRoots.push(join(packagesDir, entry.name));
|
|
74
|
-
packageRoots.push(join(packagesDir, entry.name, "node_modules", COMPANION_PACKAGE_NAME));
|
|
75
|
-
}
|
|
76
|
-
}
|
|
77
|
-
}
|
|
78
|
-
}
|
|
79
|
-
catch {
|
|
80
|
-
// Ignore if packages dir doesn't exist
|
|
81
|
-
}
|
|
82
|
-
}
|
|
83
|
-
return packageRoots;
|
|
84
|
-
}
|
|
85
|
-
function markPackageFoundForExportBlock(error, context) {
|
|
86
|
-
if (isPackagePathNotExportedError(error)) {
|
|
87
|
-
context.packageFound = true;
|
|
88
|
-
}
|
|
89
|
-
}
|
|
90
|
-
function resolveCompanionSpecifier(specifier, context) {
|
|
91
|
-
try {
|
|
92
|
-
return require.resolve(specifier);
|
|
93
|
-
}
|
|
94
|
-
catch (error) {
|
|
95
|
-
markPackageFoundForExportBlock(error, context);
|
|
96
|
-
if (!isFallthroughResolutionError(error)) {
|
|
97
|
-
throw error;
|
|
98
|
-
}
|
|
99
|
-
try {
|
|
100
|
-
return require.resolve(specifier, { paths: getCompanionResolvePaths() });
|
|
101
|
-
}
|
|
102
|
-
catch (resolvePathsError) {
|
|
103
|
-
markPackageFoundForExportBlock(resolvePathsError, context);
|
|
104
|
-
throw resolvePathsError;
|
|
105
|
-
}
|
|
106
|
-
}
|
|
107
|
-
}
|
|
108
|
-
function buildConfiguredState(params) {
|
|
109
|
-
return {
|
|
110
|
-
presence: {
|
|
111
|
-
state: "present",
|
|
112
|
-
importSpecifier: params.importSpecifier,
|
|
113
|
-
resolvedPath: params.resolvedPath,
|
|
10
|
+
const descriptor = {
|
|
11
|
+
packageName: PACKAGE_NAME,
|
|
12
|
+
packageScan: "scoped",
|
|
13
|
+
clientIdExport: "AGY_CLIENT_ID",
|
|
14
|
+
clientSecretExport: "AGY_CLIENT_SECRET",
|
|
15
|
+
missingImportSpecifier: SOURCE_SPECIFIER,
|
|
16
|
+
missingError: `Install ${PACKAGE_NAME} separately to enable Google AGY quota`,
|
|
17
|
+
invalidError: `Installed ${PACKAGE_NAME} package is incompatible`,
|
|
18
|
+
stages: [
|
|
19
|
+
{
|
|
20
|
+
kind: "dynamic-import",
|
|
21
|
+
specifiers: [`${PACKAGE_NAME}/dist/src/constants.js`, `${PACKAGE_NAME}/src/constants.js`],
|
|
114
22
|
},
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
23
|
+
{
|
|
24
|
+
kind: "source-specifier",
|
|
25
|
+
importSpecifier: SOURCE_SPECIFIER,
|
|
26
|
+
searchRuntimePaths: false,
|
|
27
|
+
readErrors: "fallthrough-all",
|
|
120
28
|
},
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
state: "invalid",
|
|
127
|
-
importSpecifier,
|
|
128
|
-
...(resolvedPath ? { resolvedPath } : {}),
|
|
129
|
-
error: COMPANION_INVALID_ERROR,
|
|
29
|
+
{
|
|
30
|
+
kind: "runtime-files",
|
|
31
|
+
importSpecifier: SOURCE_SPECIFIER,
|
|
32
|
+
candidatePaths: RUNTIME_CANDIDATES,
|
|
33
|
+
readErrors: "fallthrough-all",
|
|
130
34
|
},
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
35
|
+
{
|
|
36
|
+
kind: "package-json",
|
|
37
|
+
importSpecifier: `${PACKAGE_NAME}/package.json`,
|
|
38
|
+
candidateImportSpecifier: SOURCE_SPECIFIER,
|
|
39
|
+
candidatePaths: [
|
|
40
|
+
["src", "constants.ts"],
|
|
41
|
+
["dist", "index.js"],
|
|
42
|
+
],
|
|
43
|
+
readErrors: "fallthrough-all",
|
|
44
|
+
resolutionErrorImportSpecifier: SOURCE_SPECIFIER,
|
|
45
|
+
exhaustedInvalidPath: "first-candidate",
|
|
135
46
|
},
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
.match(/(?:export\s+const|const|var)\s+AGY_CLIENT_ID\s*=\s*["']([^"']+)["']/)?.[1]
|
|
141
|
-
?.trim() ?? "";
|
|
142
|
-
const clientSecret = content
|
|
143
|
-
.match(/(?:export\s+const|const|var)\s+AGY_CLIENT_SECRET\s*=\s*["']([^"']+)["']/)?.[1]
|
|
144
|
-
?.trim() ?? "";
|
|
145
|
-
return clientId && clientSecret ? { clientId, clientSecret } : null;
|
|
146
|
-
}
|
|
147
|
-
function getPackageCredentialPaths(packageRoot) {
|
|
148
|
-
return COMPANION_DIRECT_CANDIDATE_PATHS.map((parts) => join(packageRoot, ...parts));
|
|
149
|
-
}
|
|
150
|
-
function getRuntimeSourceConstantPaths() {
|
|
151
|
-
return getRuntimePackageRoots().flatMap((packageRoot) => getPackageCredentialPaths(packageRoot));
|
|
152
|
-
}
|
|
153
|
-
async function tryReadSourceConstantsPath(resolvedPath) {
|
|
154
|
-
try {
|
|
155
|
-
const content = await readFile(resolvedPath, "utf8");
|
|
156
|
-
const credentials = parseSourceCredentials(content);
|
|
157
|
-
if (!credentials) {
|
|
158
|
-
return buildInvalidState(COMPANION_SOURCE_IMPORT_SPECIFIER, resolvedPath);
|
|
159
|
-
}
|
|
160
|
-
return buildConfiguredState({
|
|
161
|
-
importSpecifier: COMPANION_SOURCE_IMPORT_SPECIFIER,
|
|
162
|
-
resolvedPath,
|
|
163
|
-
clientId: credentials.clientId,
|
|
164
|
-
clientSecret: credentials.clientSecret,
|
|
165
|
-
});
|
|
166
|
-
}
|
|
167
|
-
catch {
|
|
168
|
-
return null;
|
|
169
|
-
}
|
|
170
|
-
}
|
|
171
|
-
async function tryResolveJsConstants(importSpecifier, context) {
|
|
172
|
-
let resolvedPath;
|
|
173
|
-
try {
|
|
174
|
-
resolvedPath = resolveCompanionSpecifier(importSpecifier, context);
|
|
175
|
-
}
|
|
176
|
-
catch (error) {
|
|
177
|
-
if (isFallthroughResolutionError(error)) {
|
|
178
|
-
return null;
|
|
179
|
-
}
|
|
180
|
-
return buildInvalidState(importSpecifier);
|
|
181
|
-
}
|
|
182
|
-
let companionModule;
|
|
183
|
-
try {
|
|
184
|
-
companionModule = (await import(pathToFileURL(resolvedPath).href));
|
|
185
|
-
}
|
|
186
|
-
catch {
|
|
187
|
-
return buildInvalidState(importSpecifier, resolvedPath);
|
|
188
|
-
}
|
|
189
|
-
const clientId = normalizeCredential(companionModule.AGY_CLIENT_ID);
|
|
190
|
-
const clientSecret = normalizeCredential(companionModule.AGY_CLIENT_SECRET);
|
|
191
|
-
if (!clientId || !clientSecret) {
|
|
192
|
-
return buildInvalidState(importSpecifier, resolvedPath);
|
|
193
|
-
}
|
|
194
|
-
return buildConfiguredState({ importSpecifier, resolvedPath, clientId, clientSecret });
|
|
195
|
-
}
|
|
196
|
-
async function tryResolvePackageEntry(context) {
|
|
197
|
-
try {
|
|
198
|
-
const packageEntryPath = resolveCompanionSpecifier(COMPANION_PACKAGE_NAME, context);
|
|
199
|
-
const packageEntryResolved = await tryReadSourceConstantsPath(packageEntryPath);
|
|
200
|
-
return packageEntryResolved ?? buildInvalidState(COMPANION_PACKAGE_NAME, packageEntryPath);
|
|
201
|
-
}
|
|
202
|
-
catch (error) {
|
|
203
|
-
return isFallthroughResolutionError(error) ? null : buildInvalidState(COMPANION_PACKAGE_NAME);
|
|
204
|
-
}
|
|
205
|
-
}
|
|
206
|
-
async function tryResolveSourceConstants(context) {
|
|
207
|
-
let resolvedPath;
|
|
208
|
-
try {
|
|
209
|
-
resolvedPath = require.resolve(COMPANION_SOURCE_IMPORT_SPECIFIER);
|
|
210
|
-
}
|
|
211
|
-
catch (error) {
|
|
212
|
-
if (!isFallthroughResolutionError(error)) {
|
|
213
|
-
return buildInvalidState(COMPANION_SOURCE_IMPORT_SPECIFIER);
|
|
214
|
-
}
|
|
215
|
-
for (const candidatePath of getRuntimeSourceConstantPaths()) {
|
|
216
|
-
const runtimeResolved = await tryReadSourceConstantsPath(candidatePath);
|
|
217
|
-
if (runtimeResolved) {
|
|
218
|
-
return runtimeResolved;
|
|
219
|
-
}
|
|
220
|
-
}
|
|
221
|
-
try {
|
|
222
|
-
const packageJsonPath = resolveCompanionSpecifier(COMPANION_PACKAGE_JSON_SPECIFIER, context);
|
|
223
|
-
const packageRoot = dirname(packageJsonPath);
|
|
224
|
-
for (const candidatePath of [
|
|
225
|
-
join(packageRoot, "src", "constants.ts"),
|
|
226
|
-
join(packageRoot, "dist", "index.js"),
|
|
227
|
-
]) {
|
|
228
|
-
const packageResolved = await tryReadSourceConstantsPath(candidatePath);
|
|
229
|
-
if (packageResolved) {
|
|
230
|
-
return packageResolved;
|
|
231
|
-
}
|
|
232
|
-
}
|
|
233
|
-
resolvedPath = join(packageRoot, "src", "constants.ts");
|
|
234
|
-
}
|
|
235
|
-
catch (packageError) {
|
|
236
|
-
if (isFallthroughResolutionError(packageError)) {
|
|
237
|
-
return tryResolvePackageEntry(context);
|
|
238
|
-
}
|
|
239
|
-
return buildInvalidState(COMPANION_SOURCE_IMPORT_SPECIFIER);
|
|
240
|
-
}
|
|
241
|
-
}
|
|
242
|
-
return ((await tryReadSourceConstantsPath(resolvedPath)) ??
|
|
243
|
-
buildInvalidState(COMPANION_SOURCE_IMPORT_SPECIFIER, resolvedPath));
|
|
244
|
-
}
|
|
245
|
-
async function resolveCompanionState() {
|
|
246
|
-
const context = { packageFound: false };
|
|
247
|
-
for (const importSpecifier of COMPANION_JS_IMPORT_SPECIFIERS) {
|
|
248
|
-
const resolved = await tryResolveJsConstants(importSpecifier, context);
|
|
249
|
-
if (resolved) {
|
|
250
|
-
return resolved;
|
|
251
|
-
}
|
|
252
|
-
}
|
|
253
|
-
const sourceResolved = await tryResolveSourceConstants(context);
|
|
254
|
-
if (sourceResolved) {
|
|
255
|
-
return sourceResolved;
|
|
256
|
-
}
|
|
257
|
-
if (context.packageFound) {
|
|
258
|
-
return buildInvalidState(COMPANION_PACKAGE_NAME);
|
|
259
|
-
}
|
|
260
|
-
return {
|
|
261
|
-
presence: {
|
|
262
|
-
state: "missing",
|
|
263
|
-
importSpecifier: COMPANION_SOURCE_IMPORT_SPECIFIER,
|
|
264
|
-
error: COMPANION_MISSING_ERROR,
|
|
265
|
-
},
|
|
266
|
-
credentials: {
|
|
267
|
-
state: "missing",
|
|
268
|
-
error: COMPANION_MISSING_ERROR,
|
|
47
|
+
{
|
|
48
|
+
kind: "package-entry",
|
|
49
|
+
importSpecifier: PACKAGE_NAME,
|
|
50
|
+
readErrors: "fallthrough-all",
|
|
269
51
|
},
|
|
270
|
-
|
|
271
|
-
}
|
|
272
|
-
|
|
273
|
-
if (!resolvedCompanionStatePromise) {
|
|
274
|
-
resolvedCompanionStatePromise = resolveCompanionState();
|
|
275
|
-
}
|
|
276
|
-
return resolvedCompanionStatePromise;
|
|
277
|
-
}
|
|
52
|
+
],
|
|
53
|
+
};
|
|
54
|
+
const resolver = createGoogleCompanionCredentialResolver(descriptor);
|
|
278
55
|
export async function inspectAgyCompanionPresence() {
|
|
279
|
-
|
|
280
|
-
return resolved.presence;
|
|
56
|
+
return resolver.inspect();
|
|
281
57
|
}
|
|
282
58
|
export async function resolveAgyClientCredentials() {
|
|
283
|
-
|
|
284
|
-
return resolved.credentials;
|
|
59
|
+
return resolver.resolveCredentials();
|
|
285
60
|
}
|
|
286
61
|
export function clearAgyCompanionCacheForTests() {
|
|
287
|
-
|
|
62
|
+
resolver.clearCacheForTests();
|
|
288
63
|
}
|
|
289
64
|
//# sourceMappingURL=google-agy-companion.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"google-agy-companion.js","sourceRoot":"","sources":["../../src/lib/google-agy-companion.ts"],"names":[],"mappings":"AAAA,OAAO,
|
|
1
|
+
{"version":3,"file":"google-agy-companion.js","sourceRoot":"","sources":["../../src/lib/google-agy-companion.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,uCAAuC,GAKxC,MAAM,mCAAmC,CAAC;AAE3C,MAAM,YAAY,GAAG,oCAAoC,CAAC;AAC1D,MAAM,gBAAgB,GAAG,GAAG,YAAY,mBAAmB,CAAC;AAC5D,MAAM,kBAAkB,GAAG;IACzB,CAAC,KAAK,EAAE,cAAc,CAAC;IACvB,CAAC,KAAK,EAAE,cAAc,CAAC;IACvB,CAAC,MAAM,EAAE,KAAK,EAAE,cAAc,CAAC;IAC/B,CAAC,MAAM,EAAE,UAAU,CAAC;CACZ,CAAC;AAEX,MAAM,UAAU,GAAG;IACjB,WAAW,EAAE,YAAY;IACzB,WAAW,EAAE,QAAQ;IACrB,cAAc,EAAE,eAAe;IAC/B,kBAAkB,EAAE,mBAAmB;IACvC,sBAAsB,EAAE,gBAAgB;IACxC,YAAY,EAAE,WAAW,YAAY,wCAAwC;IAC7E,YAAY,EAAE,aAAa,YAAY,0BAA0B;IACjE,MAAM,EAAE;QACN;YACE,IAAI,EAAE,gBAAgB;YACtB,UAAU,EAAE,CAAC,GAAG,YAAY,wBAAwB,EAAE,GAAG,YAAY,mBAAmB,CAAC;SAC1F;QACD;YACE,IAAI,EAAE,kBAAkB;YACxB,eAAe,EAAE,gBAAgB;YACjC,kBAAkB,EAAE,KAAK;YACzB,UAAU,EAAE,iBAAiB;SAC9B;QACD;YACE,IAAI,EAAE,eAAe;YACrB,eAAe,EAAE,gBAAgB;YACjC,cAAc,EAAE,kBAAkB;YAClC,UAAU,EAAE,iBAAiB;SAC9B;QACD;YACE,IAAI,EAAE,cAAc;YACpB,eAAe,EAAE,GAAG,YAAY,eAAe;YAC/C,wBAAwB,EAAE,gBAAgB;YAC1C,cAAc,EAAE;gBACd,CAAC,KAAK,EAAE,cAAc,CAAC;gBACvB,CAAC,MAAM,EAAE,UAAU,CAAC;aACrB;YACD,UAAU,EAAE,iBAAiB;YAC7B,8BAA8B,EAAE,gBAAgB;YAChD,oBAAoB,EAAE,iBAAiB;SACxC;QACD;YACE,IAAI,EAAE,eAAe;YACrB,eAAe,EAAE,YAAY;YAC7B,UAAU,EAAE,iBAAiB;SAC9B;KACF;CAC2C,CAAC;AAE/C,MAAM,QAAQ,GAAG,uCAAuC,CAAC,UAAU,CAAC,CAAC;AAMrE,MAAM,CAAC,KAAK,UAAU,2BAA2B;IAC/C,OAAO,QAAQ,CAAC,OAAO,EAAE,CAAC;AAC5B,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,2BAA2B;IAC/C,OAAO,QAAQ,CAAC,kBAAkB,EAAE,CAAC;AACvC,CAAC;AAED,MAAM,UAAU,8BAA8B;IAC5C,QAAQ,CAAC,kBAAkB,EAAE,CAAC;AAChC,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"google-agy.d.ts","sourceRoot":"","sources":["../../src/lib/google-agy.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"google-agy.d.ts","sourceRoot":"","sources":["../../src/lib/google-agy.ts"],"names":[],"mappings":"AAeA,OAAO,KAAK,EACV,QAAQ,EACR,sBAAsB,EAItB,eAAe,EAGhB,MAAM,YAAY,CAAC;AAEpB,eAAO,MAAM,iCAAiC,OAAQ,CAAC;AAEvD,eAAO,MAAM,aAAa,iEAI4B,CAAC;AAcvD,KAAK,YAAY,GAAG;IAClB,YAAY,EAAE,MAAM,CAAC;IACrB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,gBAAgB,CAAC,EAAE,MAAM,CAAC;CAC3B,CAAC;AAEF,MAAM,MAAM,UAAU,GAAG;IACvB,SAAS,EAAE,sBAAsB,CAAC;IAClC,YAAY,EAAE,MAAM,CAAC;IACrB,SAAS,EAAE,MAAM,CAAC;IAClB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB,CAAC;AAeF,MAAM,MAAM,eAAe,GACvB;IACE,KAAK,EAAE,SAAS,CAAC;IACjB,SAAS,CAAC,EAAE,SAAS,CAAC;IACtB,YAAY,EAAE,CAAC,CAAC;IAChB,iBAAiB,EAAE,CAAC,CAAC;CACtB,GACD;IACE,KAAK,EAAE,SAAS,CAAC;IACjB,SAAS,EAAE,sBAAsB,CAAC;IAClC,YAAY,EAAE,MAAM,CAAC;IACrB,iBAAiB,EAAE,MAAM,CAAC;CAC3B,GACD;IACE,KAAK,EAAE,SAAS,CAAC;IACjB,SAAS,CAAC,EAAE,sBAAsB,CAAC;IACnC,YAAY,EAAE,MAAM,CAAC;IACrB,iBAAiB,EAAE,MAAM,CAAC;IAC1B,KAAK,EAAE,MAAM,CAAC;CACf,CAAC;AAEN,KAAK,YAAY,GAAG;IAClB,MAAM,CAAC,EAAE;QACP,GAAG,CAAC,EAAE,MAAM,OAAO,CAAC;YAAE,IAAI,CAAC,EAAE,OAAO,CAAA;SAAE,CAAC,CAAC;KACzC,CAAC;CACH,CAAC;AAUF,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,MAAM,GAAG,SAAS,GAAG,YAAY,CAO9E;AAED,wBAAgB,kBAAkB,CAChC,IAAI,EAAE,QAAQ,GAAG,IAAI,GAAG,SAAS,EACjC,mBAAmB,CAAC,EAAE,MAAM,GAC3B,UAAU,EAAE,CAsDd;AAED,wBAAsB,6BAA6B,CACjD,MAAM,CAAC,EAAE,YAAY,GACpB,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC,CAyB7B;AAED,wBAAsB,sBAAsB,CAAC,MAAM,CAAC,EAAE,YAAY,GAAG,OAAO,CAAC,eAAe,CAAC,CAwC5F;AAED,wBAAsB,2BAA2B,CAAC,MAAM,CAAC,EAAE,YAAY,GAAG,OAAO,CAAC,OAAO,CAAC,CAWzF;AAuID,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAyDzD;AAgPD,wBAAsB,mBAAmB,CACvC,MAAM,CAAC,EAAE,YAAY,EACrB,OAAO,GAAE;IAAE,gBAAgB,CAAC,EAAE,MAAM,CAAA;CAAO,GAC1C,OAAO,CAAC,eAAe,CAAC,CAqD1B;AAED,wBAAgB,4BAA4B,IAAI,IAAI,CAEnD"}
|