@revfleet/hscli 0.9.7 → 0.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 (87) hide show
  1. package/CHANGELOG.md +106 -0
  2. package/README.md +117 -10
  3. package/SECURITY.md +14 -3
  4. package/dist/cli.js +14 -1
  5. package/dist/cli.js.map +1 -1
  6. package/dist/commands/auth/index.d.ts +14 -0
  7. package/dist/commands/auth/index.js +208 -39
  8. package/dist/commands/auth/index.js.map +1 -1
  9. package/dist/commands/crm/describe.js +3 -3
  10. package/dist/commands/crm/describe.js.map +1 -1
  11. package/dist/commands/crm/index.js +2 -0
  12. package/dist/commands/crm/index.js.map +1 -1
  13. package/dist/commands/crm/record-layouts.d.ts +3 -0
  14. package/dist/commands/crm/record-layouts.js +246 -0
  15. package/dist/commands/crm/record-layouts.js.map +1 -0
  16. package/dist/commands/doctor/index.js +5 -5
  17. package/dist/commands/doctor/index.js.map +1 -1
  18. package/dist/commands/guide/index.js +1 -1
  19. package/dist/commands/guide/index.js.map +1 -1
  20. package/dist/commands/internal/index.js +20 -6
  21. package/dist/commands/internal/index.js.map +1 -1
  22. package/dist/commands/internal-session.d.ts +4 -0
  23. package/dist/commands/internal-session.js +27 -0
  24. package/dist/commands/internal-session.js.map +1 -1
  25. package/dist/commands/lists/index.js +18 -0
  26. package/dist/commands/lists/index.js.map +1 -1
  27. package/dist/commands/marketing/index.js +5 -5
  28. package/dist/commands/marketing/index.js.map +1 -1
  29. package/dist/commands/mcp.d.ts +2 -1
  30. package/dist/commands/mcp.js +49 -5
  31. package/dist/commands/mcp.js.map +1 -1
  32. package/dist/commands/settings/index.js +20 -0
  33. package/dist/commands/settings/index.js.map +1 -1
  34. package/dist/commands/ui/index.js +2 -2
  35. package/dist/commands/ui/index.js.map +1 -1
  36. package/dist/commands/workflows/index.js +2 -0
  37. package/dist/commands/workflows/index.js.map +1 -1
  38. package/dist/commands/workflows/internal.d.ts +3 -0
  39. package/dist/commands/workflows/internal.js +332 -0
  40. package/dist/commands/workflows/internal.js.map +1 -0
  41. package/dist/core/auth.d.ts +18 -2
  42. package/dist/core/auth.js +96 -3
  43. package/dist/core/auth.js.map +1 -1
  44. package/dist/core/capabilities.d.ts +8 -0
  45. package/dist/core/capabilities.js +31 -3
  46. package/dist/core/capabilities.js.map +1 -1
  47. package/dist/core/http.d.ts +6 -0
  48. package/dist/core/http.js +14 -3
  49. package/dist/core/http.js.map +1 -1
  50. package/dist/core/output.js +20 -4
  51. package/dist/core/output.js.map +1 -1
  52. package/dist/core/permissions.js +15 -1
  53. package/dist/core/permissions.js.map +1 -1
  54. package/dist/core/schema-cache.js +6 -2
  55. package/dist/core/schema-cache.js.map +1 -1
  56. package/dist/core/vault.js +10 -5
  57. package/dist/core/vault.js.map +1 -1
  58. package/dist/mcp/compat-hubspot.d.ts +5 -14
  59. package/dist/mcp/compat-hubspot.js +17 -14
  60. package/dist/mcp/compat-hubspot.js.map +1 -1
  61. package/dist/mcp/diagnostics.d.ts +157 -0
  62. package/dist/mcp/diagnostics.js +199 -0
  63. package/dist/mcp/diagnostics.js.map +1 -0
  64. package/dist/mcp/ecosystem.d.ts +107 -0
  65. package/dist/mcp/ecosystem.js +127 -0
  66. package/dist/mcp/ecosystem.js.map +1 -0
  67. package/dist/mcp/ext-tools.d.ts +4 -3
  68. package/dist/mcp/ext-tools.js +20 -8
  69. package/dist/mcp/ext-tools.js.map +1 -1
  70. package/dist/mcp/profiles.d.ts +9 -0
  71. package/dist/mcp/profiles.js +38 -4
  72. package/dist/mcp/profiles.js.map +1 -1
  73. package/dist/mcp/server.d.ts +118 -1
  74. package/dist/mcp/server.js +64 -7
  75. package/dist/mcp/server.js.map +1 -1
  76. package/docs/CAPABILITY_LIBRARY.md +1 -1
  77. package/docs/COMMAND_TREE.md +8 -4
  78. package/docs/COMPARISON.md +14 -6
  79. package/docs/COOKBOOK.md +51 -4
  80. package/docs/INTERNAL-ENDPOINTS-DISCOVERY.md +59 -0
  81. package/docs/INTERNAL-ENDPOINTS.md +13 -0
  82. package/docs/INTERNAL_ENDPOINTS.md +22 -4
  83. package/docs/MCP.md +48 -6
  84. package/docs/MCP_TOOL_CATALOG.md +188 -186
  85. package/docs/OPERATIONAL_PLAYBOOKS.md +9 -8
  86. package/docs/PORTAL_SETUP.md +2 -2
  87. package/package.json +1 -1
@@ -0,0 +1,332 @@
1
+ import { createHash } from "node:crypto";
2
+ import { chmodSync, mkdirSync, writeFileSync } from "node:fs";
3
+ import { resolve } from "node:path";
4
+ import { addBrowserSessionOptions, resolveBrowserSession, verifyBrowserSessionPortal } from "../internal-session.js";
5
+ import { encodePathSegment, parseJsonPayload, parseNumberFlag } from "../crm/shared.js";
6
+ import { enforceWritePolicy } from "../../core/policy.js";
7
+ import { CliError, printResult } from "../../core/output.js";
8
+ const HYBRID_BATCH_PATH = "/api/automationplatform/v1/hybrid/batch";
9
+ const HIGH_RISK_WARNING = [
10
+ "HIGH RISK: this command replaces a complete workflow through an undocumented internal HubSpot endpoint.",
11
+ "The contract may change without notice. The command refuses active workflows, never retries the save,",
12
+ "writes a private rollback snapshot, and verifies current state plus revision history after the request.",
13
+ ].join(" ");
14
+ export function registerInternalWorkflowCommands(workflows, getCtx) {
15
+ addBrowserSessionOptions(workflows
16
+ .command("inspect")
17
+ .argument("<flowId>", "Workflow flow ID")
18
+ .description("Read the current full internal workflow definition with provenance")).action(async (flowId, opts) => {
19
+ const ctx = getCtx();
20
+ const id = encodePathSegment(flowId, "flowId");
21
+ const session = resolveBrowserSession(ctx, opts, "Workflow inspection", true);
22
+ const endpoint = `/api/automationplatform/v1/flows/${id}?portalId=${encodeURIComponent(session.portalId)}`;
23
+ const result = await session.client.request(endpoint);
24
+ printResult(ctx, {
25
+ source: "internal-browser-session",
26
+ endpoint: "/api/automationplatform/v1/flows/{flowId}",
27
+ portalId: session.portalId,
28
+ flowId,
29
+ complete: true,
30
+ result,
31
+ });
32
+ });
33
+ addBrowserSessionOptions(workflows
34
+ .command("revisions")
35
+ .argument("<flowId>", "Workflow flow ID")
36
+ .option("--limit <n>", "Page size", "100")
37
+ .option("--after <cursor>", "Revision cursor")
38
+ .description("Read full workflow revisions and authors from the internal history endpoint")).action(async (flowId, opts) => {
39
+ const ctx = getCtx();
40
+ const id = encodePathSegment(flowId, "flowId");
41
+ const session = resolveBrowserSession(ctx, opts, "Workflow revisions", true);
42
+ const limit = parseNumberFlag(opts.limit ?? "100", "--limit");
43
+ const params = new URLSearchParams({ portalId: session.portalId, limit: String(limit) });
44
+ if (opts.after?.trim())
45
+ params.set("after", opts.after.trim());
46
+ const result = await session.client.request(`/api/automationplatform/v1/hybrid/revisions/${id}?${params.toString()}`);
47
+ const nextAfter = revisionCursor(result);
48
+ printResult(ctx, {
49
+ source: "internal-browser-session",
50
+ endpoint: "/api/automationplatform/v1/hybrid/revisions/{flowId}",
51
+ portalId: session.portalId,
52
+ flowId,
53
+ requestedLimit: limit,
54
+ complete: !nextAfter,
55
+ ...(nextAfter ? { nextAfter } : {}),
56
+ result,
57
+ });
58
+ });
59
+ addBrowserSessionOptions(workflows
60
+ .command("errors")
61
+ .argument("<flowId>", "Workflow flow ID")
62
+ .description("Read recent workflow canvas execution and enrollment errors")).action(async (flowId, opts) => {
63
+ const ctx = getCtx();
64
+ const id = encodePathSegment(flowId, "flowId");
65
+ const session = resolveBrowserSession(ctx, opts, "Workflow errors", true);
66
+ const result = await session.client.request(`/api/automationapps/v1/insights/canvas/errors/${id}`);
67
+ printResult(ctx, {
68
+ source: "internal-browser-session",
69
+ endpoint: "/api/automationapps/v1/insights/canvas/errors/{flowId}",
70
+ portalId: session.portalId,
71
+ flowId,
72
+ window: "rolling-7-days",
73
+ complete: false,
74
+ result,
75
+ });
76
+ });
77
+ addBrowserSessionOptions(workflows
78
+ .command("update-internal")
79
+ .argument("<flowId>", "Exactly one disabled workflow flow ID")
80
+ .requiredOption("--expected-portal-id <id>", "Portal ID expected from the same browser session")
81
+ .requiredOption("--data <payload>", "Full workflow JSON payload or @file")
82
+ .option("--snapshot-dir <path>", "Private rollback snapshot directory", "./hscli-workflow-snapshots")
83
+ .option("--execute", "Execute after validation; otherwise produce a plan only")
84
+ .option("--experimental-internal-write", "Acknowledge use of an unstable internal HubSpot write endpoint")
85
+ .option("--acknowledge <text>", "Required exact phrase: REPLACE WORKFLOW <flowId>")
86
+ .description("HIGH RISK: validate, snapshot, replace once via hybrid/batch, then verify")).action(async (flowId, opts) => {
87
+ const ctx = getCtx();
88
+ const rawFlowId = flowId.trim();
89
+ const id = encodePathSegment(rawFlowId, "flowId");
90
+ const expectedPortalId = requirePortalId(opts.expectedPortalId, "--expected-portal-id");
91
+ const declaredPortalId = requirePortalId(opts.portalId, "--portal-id");
92
+ if (declaredPortalId !== expectedPortalId) {
93
+ throw new CliError("EXPECTED_PORTAL_MISMATCH", `--portal-id ${declaredPortalId} does not match --expected-portal-id ${expectedPortalId}.`);
94
+ }
95
+ if (opts.execute)
96
+ enforceExecuteGates(ctx, opts, rawFlowId);
97
+ const input = requireSingleFlow(parseJsonPayload(opts.data));
98
+ assertFlowId(input, rawFlowId, "input");
99
+ const session = resolveBrowserSession(ctx, opts, "Internal workflow replacement", true);
100
+ const identity = await verifyBrowserSessionPortal(session.client, expectedPortalId);
101
+ const currentPath = `/api/automationplatform/v1/flows/${id}?portalId=${encodeURIComponent(expectedPortalId)}`;
102
+ const current = unwrapFlow(await session.client.request(currentPath));
103
+ assertFlowId(current, rawFlowId, "current workflow");
104
+ assertInactive(current);
105
+ assertStateUnchanged(current, input);
106
+ const currentVersion = requireVersion(current, "current workflow");
107
+ const proposedVersion = currentVersion + 1;
108
+ const proposed = withCurrentState({ ...input, version: proposedVersion }, current);
109
+ const validationRaw = await session.client.request(`/api/automationplatform/v1/validation?portalId=${encodeURIComponent(expectedPortalId)}`, { method: "POST", body: proposed, permissionMode: "read" });
110
+ const validation = normalizeValidation(validationRaw);
111
+ if (!validation.valid) {
112
+ throw new CliError("WORKFLOW_VALIDATION_FAILED", "HubSpot rejected the proposed workflow definition.", undefined, validationRaw);
113
+ }
114
+ const snapshot = writeSnapshot(opts.snapshotDir, rawFlowId, expectedPortalId, current, proposed);
115
+ if (!opts.execute) {
116
+ printResult(ctx, {
117
+ executionMode: "plan-only",
118
+ risk: "HIGH",
119
+ warning: HIGH_RISK_WARNING,
120
+ source: "internal-browser-session",
121
+ portalId: expectedPortalId,
122
+ portalProof: identity.source,
123
+ flowId: rawFlowId,
124
+ currentVersion,
125
+ proposedVersion,
126
+ validation,
127
+ snapshot,
128
+ requirementsToExecute: [
129
+ "--execute",
130
+ "--experimental-internal-write",
131
+ "--acknowledge \"REPLACE WORKFLOW <flowId>\"",
132
+ "global --force",
133
+ "global --change-ticket <id>",
134
+ "sealed hscli action contract",
135
+ ],
136
+ });
137
+ return;
138
+ }
139
+ enforceWritePolicy(ctx, "POST", HYBRID_BATCH_PATH);
140
+ let reconciledAfterUncertainOutcome = false;
141
+ try {
142
+ await session.client.request(HYBRID_BATCH_PATH, {
143
+ method: "POST",
144
+ body: proposed,
145
+ retryMode: "never",
146
+ });
147
+ }
148
+ catch (error) {
149
+ if (!(error instanceof CliError) || !["HTTP_OUTCOME_UNKNOWN", "HTTP_RETRY_DISABLED"].includes(error.code))
150
+ throw error;
151
+ const reconciled = unwrapFlow(await session.client.request(currentPath));
152
+ if (requireVersion(reconciled, "reconciled workflow") !== proposedVersion) {
153
+ throw new CliError("WORKFLOW_SAVE_OUTCOME_UNKNOWN", "The internal save returned an ambiguous outcome and the expected version is not visible. Do not retry; inspect current state and revisions.", error.status, { snapshot: snapshot.path, expectedVersion: proposedVersion });
154
+ }
155
+ reconciledAfterUncertainOutcome = true;
156
+ }
157
+ const verifiedCurrent = unwrapFlow(await session.client.request(currentPath));
158
+ const verifiedVersion = requireVersion(verifiedCurrent, "verified workflow");
159
+ const revisions = await session.client.request(`/api/automationplatform/v1/hybrid/revisions/${id}?portalId=${encodeURIComponent(expectedPortalId)}&limit=100`);
160
+ const revisionFound = revisionEntries(revisions).some((entry) => (optionalVersion(entry) === proposedVersion && optionalFlowId(entry) === rawFlowId));
161
+ const currentVersionMatched = verifiedVersion === proposedVersion;
162
+ if (!currentVersionMatched || !revisionFound) {
163
+ throw new CliError("WORKFLOW_POST_SAVE_VERIFICATION_FAILED", "The save response could not be proven by both current state and revision history. Do not retry automatically.", undefined, { snapshot: snapshot.path, expectedVersion: proposedVersion, verifiedVersion, revisionFound });
164
+ }
165
+ printResult(ctx, {
166
+ executionMode: "executed",
167
+ risk: "HIGH",
168
+ warning: HIGH_RISK_WARNING,
169
+ source: "internal-browser-session",
170
+ portalId: expectedPortalId,
171
+ portalProof: identity.source,
172
+ flowId: rawFlowId,
173
+ currentVersion,
174
+ appliedVersion: proposedVersion,
175
+ validation,
176
+ snapshot,
177
+ retryPolicy: "never",
178
+ reconciledAfterUncertainOutcome,
179
+ verification: { currentVersionMatched, revisionFound },
180
+ changeTicket: ctx.changeTicket,
181
+ actionContractId: process.env.HSCLI_ACTION_CONTRACT_ID,
182
+ });
183
+ });
184
+ }
185
+ function enforceExecuteGates(ctx, opts, flowId) {
186
+ const acknowledgement = `REPLACE WORKFLOW ${flowId}`;
187
+ if (opts.acknowledge !== acknowledgement) {
188
+ throw new CliError("WORKFLOW_HIGH_RISK_ACK_REQUIRED", `Execution requires --acknowledge "${acknowledgement}".`);
189
+ }
190
+ if (!opts.experimentalInternalWrite) {
191
+ throw new CliError("EXPERIMENTAL_INTERNAL_WRITE_REQUIRED", "Execution requires --experimental-internal-write.");
192
+ }
193
+ if (!ctx.force) {
194
+ throw new CliError("WRITE_CONFIRMATION_REQUIRED", "Execution requires global --force.");
195
+ }
196
+ if (!ctx.changeTicket?.trim()) {
197
+ throw new CliError("CHANGE_TICKET_REQUIRED", "Execution requires global --change-ticket <id>.");
198
+ }
199
+ if (!process.env.HSCLI_ACTION_CONTRACT_ID?.trim()) {
200
+ throw new CliError("ACTION_CONTRACT_REQUIRED", "Execution is only allowed through `hscli agent contract apply` with a sealed action contract.");
201
+ }
202
+ }
203
+ function requirePortalId(value, flag) {
204
+ const normalized = value?.trim() ?? "";
205
+ if (!/^\d+$/.test(normalized))
206
+ throw new CliError("INVALID_PORTAL_ID", `${flag} must be a numeric HubSpot portal ID.`);
207
+ return normalized;
208
+ }
209
+ function requireSingleFlow(value) {
210
+ if (!isRecord(value) || Array.isArray(value.results) || Array.isArray(value.flows)) {
211
+ throw new CliError("WORKFLOW_SINGLE_FLOW_REQUIRED", "--data must contain exactly one full workflow object, not a batch or list wrapper.");
212
+ }
213
+ return value;
214
+ }
215
+ function unwrapFlow(value) {
216
+ if (!isRecord(value))
217
+ throw new CliError("WORKFLOW_RESPONSE_INVALID", "HubSpot did not return a workflow object.");
218
+ if (isRecord(value.flow))
219
+ return value.flow;
220
+ return value;
221
+ }
222
+ function optionalFlowId(flow) {
223
+ for (const key of ["id", "flowId"]) {
224
+ const value = flow[key];
225
+ if (typeof value === "string" && value.trim())
226
+ return value.trim();
227
+ if (typeof value === "number" && Number.isSafeInteger(value))
228
+ return String(value);
229
+ }
230
+ return undefined;
231
+ }
232
+ function assertFlowId(flow, expected, label) {
233
+ const actual = optionalFlowId(flow);
234
+ if (!actual || actual !== expected) {
235
+ throw new CliError("WORKFLOW_ID_MISMATCH", `${label} ID '${actual ?? "missing"}' does not match requested flow '${expected}'.`);
236
+ }
237
+ }
238
+ function optionalVersion(flow) {
239
+ const version = flow.version;
240
+ if (typeof version === "number" && Number.isSafeInteger(version) && version >= 0)
241
+ return version;
242
+ if (typeof version === "string" && /^\d+$/.test(version))
243
+ return Number(version);
244
+ return undefined;
245
+ }
246
+ function requireVersion(flow, label) {
247
+ const version = optionalVersion(flow);
248
+ if (version === undefined)
249
+ throw new CliError("WORKFLOW_VERSION_REQUIRED", `${label} does not expose a numeric version; refusing optimistic save.`);
250
+ return version;
251
+ }
252
+ const STATE_KEYS = ["isEnabled", "enabled", "status", "state"];
253
+ function assertInactive(flow) {
254
+ const active = flow.isEnabled === true || flow.enabled === true || ["ON", "ACTIVE", "ENABLED", "PUBLISHED"].includes(String(flow.status ?? flow.state ?? "").toUpperCase());
255
+ if (active)
256
+ throw new CliError("WORKFLOW_ACTIVE_WRITE_BLOCKED", "Internal replacement is limited to disabled workflows.");
257
+ }
258
+ function assertStateUnchanged(current, proposed) {
259
+ for (const key of STATE_KEYS) {
260
+ if (key in current && key in proposed && current[key] !== proposed[key]) {
261
+ throw new CliError("WORKFLOW_STATE_CHANGE_BLOCKED", `Internal replacement cannot change workflow state field '${key}'.`);
262
+ }
263
+ }
264
+ }
265
+ function withCurrentState(proposed, current) {
266
+ const output = { ...proposed };
267
+ for (const key of STATE_KEYS)
268
+ if (key in current)
269
+ output[key] = current[key];
270
+ return output;
271
+ }
272
+ function normalizeValidation(value) {
273
+ if (Array.isArray(value))
274
+ return { valid: value.length === 0, errorCount: value.length, warningCount: 0 };
275
+ if (!isRecord(value))
276
+ throw new CliError("WORKFLOW_VALIDATION_UNRECOGNIZED", "HubSpot returned an unrecognized validation response.");
277
+ const errors = arrayValue(value.errors) ?? arrayValue(value.validationErrors);
278
+ const warnings = arrayValue(value.warnings) ?? arrayValue(value.validationWarnings) ?? [];
279
+ const explicit = typeof value.valid === "boolean" ? value.valid : typeof value.isValid === "boolean" ? value.isValid : undefined;
280
+ if (explicit === undefined && errors === undefined) {
281
+ throw new CliError("WORKFLOW_VALIDATION_UNRECOGNIZED", "HubSpot validation response contained neither a validity flag nor an errors array.");
282
+ }
283
+ const errorCount = errors?.length ?? 0;
284
+ return { valid: explicit !== false && errorCount === 0, errorCount, warningCount: warnings.length };
285
+ }
286
+ function writeSnapshot(rawDir, flowId, portalId, current, proposed) {
287
+ const dir = resolve(rawDir);
288
+ mkdirSync(dir, { recursive: true, mode: 0o700 });
289
+ chmodSync(dir, 0o700);
290
+ const currentSha256 = digest(current);
291
+ const proposedSha256 = digest(proposed);
292
+ const path = resolve(dir, `portal-${portalId}-workflow-${flowId}-v${requireVersion(current, "current workflow")}.snapshot.json`);
293
+ writeFileSync(path, JSON.stringify({
294
+ schema: "hscli.workflow-internal-snapshot/v1",
295
+ capturedAt: new Date().toISOString(),
296
+ portalId,
297
+ flowId,
298
+ currentSha256,
299
+ proposedSha256,
300
+ current,
301
+ proposed,
302
+ }, null, 2), { encoding: "utf8", mode: 0o600 });
303
+ chmodSync(path, 0o600);
304
+ return { path, currentSha256, proposedSha256 };
305
+ }
306
+ function revisionEntries(value) {
307
+ if (Array.isArray(value))
308
+ return value.filter(isRecord);
309
+ if (!isRecord(value))
310
+ return [];
311
+ for (const key of ["results", "revisions"]) {
312
+ if (Array.isArray(value[key]))
313
+ return value[key].filter(isRecord);
314
+ }
315
+ return [];
316
+ }
317
+ function revisionCursor(value) {
318
+ if (!isRecord(value) || !isRecord(value.paging) || !isRecord(value.paging.next))
319
+ return undefined;
320
+ const after = value.paging.next.after;
321
+ return typeof after === "string" || typeof after === "number" ? String(after) : undefined;
322
+ }
323
+ function arrayValue(value) {
324
+ return Array.isArray(value) ? value : undefined;
325
+ }
326
+ function digest(value) {
327
+ return createHash("sha256").update(JSON.stringify(value)).digest("hex");
328
+ }
329
+ function isRecord(value) {
330
+ return Boolean(value && typeof value === "object" && !Array.isArray(value));
331
+ }
332
+ //# sourceMappingURL=internal.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"internal.js","sourceRoot":"","sources":["../../../src/commands/workflows/internal.ts"],"names":[],"mappings":"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"}
@@ -1,9 +1,12 @@
1
+ export type AuthMode = "private-app" | "service-key" | "personal-access-key" | "oauth";
1
2
  export interface AuthProfile {
2
3
  token: string;
3
- authMode?: "private-app" | "oauth";
4
+ authMode?: AuthMode;
5
+ personalAccessKey?: string;
4
6
  refreshToken?: string;
5
7
  expiresAt?: string;
6
8
  scopes?: string[];
9
+ scopeGroups?: string[];
7
10
  userId?: string;
8
11
  oauthClientId?: string;
9
12
  oauthClientSecretEnv?: string;
@@ -13,6 +16,18 @@ export interface AuthProfile {
13
16
  apiDomain?: string;
14
17
  hublet?: string;
15
18
  mode?: "read-only" | "read-write";
19
+ hubName?: string;
20
+ accountType?: string;
21
+ identityVerified?: boolean;
22
+ }
23
+ export interface PersonalAccessKeyToken {
24
+ accessToken: string;
25
+ expiresAt: string;
26
+ portalId: string;
27
+ userId?: string;
28
+ scopeGroups: string[];
29
+ hubName?: string;
30
+ accountType?: string;
16
31
  }
17
32
  export declare function normalizeHublet(value: string | undefined): string | undefined;
18
33
  export declare function normalizeStoredHublet(value: string): string;
@@ -37,8 +52,9 @@ export declare function getHscliHomeDir(): string;
37
52
  export declare function saveToken(profile: string, token: string): void;
38
53
  export declare function saveProfile(profile: string, data: AuthProfile): void;
39
54
  export declare function getToken(profile: string): string;
40
- export declare function resolveAuthMode(profile: AuthProfile): "private-app" | "oauth";
55
+ export declare function resolveAuthMode(profile: AuthProfile): AuthMode;
41
56
  export declare function getValidAccessToken(profileName: string): Promise<string>;
57
+ export declare function exchangePersonalAccessKey(personalAccessKey: string, portalId?: string): Promise<PersonalAccessKeyToken>;
42
58
  export declare function removeToken(profile: string): boolean;
43
59
  export declare function hasProfile(profile: string): boolean;
44
60
  export declare function listProfiles(): string[];
package/dist/core/auth.js CHANGED
@@ -4,7 +4,10 @@ import { homedir } from "node:os";
4
4
  import { CliError } from "./output.js";
5
5
  import { isVaultEncrypted, readVaultData, writeVaultData, getVaultPassphrase } from "./vault.js";
6
6
  const oauthRefreshInFlight = new Map();
7
+ const personalAccessKeyRefreshInFlight = new Map();
7
8
  const OAUTH_EXPIRY_BUFFER_MS = 60_000;
9
+ const PERSONAL_ACCESS_KEY_EXPIRY_BUFFER_MS = 5 * 60_000;
10
+ const PERSONAL_ACCESS_KEY_EXCHANGE_URL = "https://api.hubapi.com/localdevauth/v1/auth/refresh";
8
11
  export function normalizeHublet(value) {
9
12
  const normalized = value?.trim().toLowerCase();
10
13
  if (!normalized || normalized === "na" || normalized === "na1" || normalized === "global" || normalized === "prod")
@@ -153,7 +156,7 @@ export function getToken(profile) {
153
156
  const file = readAuthFile();
154
157
  const token = file.profiles[profile]?.token;
155
158
  if (!token) {
156
- throw new CliError("AUTH_PROFILE_NOT_FOUND", `No token found for profile '${profile}'. Run 'hscli auth login --token <token>'.`);
159
+ throw new CliError("AUTH_PROFILE_NOT_FOUND", `No credential found for profile '${profile}'. Run 'hscli auth login --profile ${profile}'.`);
157
160
  }
158
161
  return token;
159
162
  }
@@ -164,7 +167,24 @@ export function resolveAuthMode(profile) {
164
167
  }
165
168
  export async function getValidAccessToken(profileName) {
166
169
  const profile = getProfile(profileName);
167
- if (resolveAuthMode(profile) !== "oauth" || !profile.refreshToken || !profile.expiresAt) {
170
+ const authMode = resolveAuthMode(profile);
171
+ if (authMode === "personal-access-key") {
172
+ if (!profile.personalAccessKey?.trim()) {
173
+ throw new CliError("AUTH_PAK_MISSING", `Personal access key profile '${profileName}' is missing its refresh credential. Re-authenticate this profile with a personal access key.`);
174
+ }
175
+ const expiresAt = profile.expiresAt ? Date.parse(profile.expiresAt) : Number.NaN;
176
+ if (Number.isFinite(expiresAt) && expiresAt - Date.now() > PERSONAL_ACCESS_KEY_EXPIRY_BUFFER_MS) {
177
+ return profile.token;
178
+ }
179
+ const existing = personalAccessKeyRefreshInFlight.get(profileName);
180
+ if (existing)
181
+ return existing;
182
+ const refresh = refreshPersonalAccessKeyToken(profileName, profile)
183
+ .finally(() => personalAccessKeyRefreshInFlight.delete(profileName));
184
+ personalAccessKeyRefreshInFlight.set(profileName, refresh);
185
+ return refresh;
186
+ }
187
+ if (authMode !== "oauth" || !profile.refreshToken || !profile.expiresAt) {
168
188
  return profile.token;
169
189
  }
170
190
  const expiresAt = Date.parse(profile.expiresAt);
@@ -179,6 +199,73 @@ export async function getValidAccessToken(profileName) {
179
199
  oauthRefreshInFlight.set(profileName, refresh);
180
200
  return refresh;
181
201
  }
202
+ export async function exchangePersonalAccessKey(personalAccessKey, portalId) {
203
+ const credential = personalAccessKey.trim();
204
+ if (!credential)
205
+ throw new CliError("AUTH_INVALID_TOKEN", "Personal access key cannot be empty");
206
+ const url = new URL(PERSONAL_ACCESS_KEY_EXCHANGE_URL);
207
+ if (portalId?.trim()) {
208
+ const expectedPortalId = portalId.trim();
209
+ if (!/^\d+$/.test(expectedPortalId)) {
210
+ throw new CliError("AUTH_PORTAL_ID_INVALID", "Portal ID must contain digits only.");
211
+ }
212
+ url.searchParams.set("portalId", expectedPortalId);
213
+ }
214
+ let response;
215
+ try {
216
+ response = await fetch(url.toString(), {
217
+ method: "POST",
218
+ headers: { "Content-Type": "application/json" },
219
+ body: JSON.stringify({ encodedOAuthRefreshToken: credential }),
220
+ signal: AbortSignal.timeout(30_000),
221
+ });
222
+ }
223
+ catch (error) {
224
+ throw new CliError("AUTH_PAK_EXCHANGE_FAILED", `Personal access key exchange failed: ${error instanceof Error ? error.message : String(error)}`);
225
+ }
226
+ const data = await response.json().catch(() => ({}));
227
+ if (!response.ok) {
228
+ throw new CliError("AUTH_PAK_EXCHANGE_FAILED", `Personal access key exchange failed (${response.status})`, response.status, data);
229
+ }
230
+ const accessToken = typeof data.oauthAccessToken === "string" ? data.oauthAccessToken.trim() : "";
231
+ const resolvedPortalId = data.hubId === undefined || data.hubId === null ? "" : String(data.hubId);
232
+ const expiresAtMillis = Number(data.expiresAtMillis);
233
+ if (!accessToken || !resolvedPortalId || !Number.isFinite(expiresAtMillis) || expiresAtMillis <= 0) {
234
+ throw new CliError("AUTH_PAK_EXCHANGE_FAILED", "Personal access key exchange response is missing oauthAccessToken, hubId, or expiresAtMillis.", response.status, data);
235
+ }
236
+ const scopeGroups = Array.isArray(data.scopeGroups)
237
+ ? data.scopeGroups.map(String).filter(Boolean)
238
+ : [];
239
+ return {
240
+ accessToken,
241
+ expiresAt: new Date(expiresAtMillis).toISOString(),
242
+ portalId: resolvedPortalId,
243
+ userId: data.userId === undefined || data.userId === null ? undefined : String(data.userId),
244
+ scopeGroups,
245
+ hubName: typeof data.hubName === "string" ? data.hubName : undefined,
246
+ accountType: typeof data.accountType === "string" ? data.accountType : undefined,
247
+ };
248
+ }
249
+ async function refreshPersonalAccessKeyToken(profileName, profile) {
250
+ const token = await exchangePersonalAccessKey(profile.personalAccessKey, profile.portalId);
251
+ if (profile.portalId && token.portalId !== profile.portalId) {
252
+ throw new CliError("AUTH_PAK_PORTAL_MISMATCH", `Personal access key for profile '${profileName}' resolved to portal ${token.portalId}, expected ${profile.portalId}. Profile was not modified.`);
253
+ }
254
+ saveProfile(profileName, {
255
+ ...profile,
256
+ token: token.accessToken,
257
+ authMode: "personal-access-key",
258
+ expiresAt: token.expiresAt,
259
+ scopes: undefined,
260
+ scopeGroups: token.scopeGroups,
261
+ portalId: token.portalId,
262
+ userId: token.userId ?? profile.userId,
263
+ hubName: token.hubName ?? profile.hubName,
264
+ accountType: token.accountType ?? profile.accountType,
265
+ identityVerified: true,
266
+ });
267
+ return token.accessToken;
268
+ }
182
269
  async function refreshOAuthAccessToken(profileName, profile) {
183
270
  const clientId = profile.oauthClientId?.trim() || process.env.HSCLI_OAUTH_CLIENT_ID?.trim();
184
271
  const secretEnv = profile.oauthClientSecretEnv?.trim() || "HSCLI_OAUTH_CLIENT_SECRET";
@@ -214,6 +301,12 @@ async function refreshOAuthAccessToken(profileName, profile) {
214
301
  if (!accessToken) {
215
302
  throw new CliError("AUTH_OAUTH_REFRESH_FAILED", "OAuth refresh response did not include access_token.", response.status, data);
216
303
  }
304
+ const resolvedPortalId = data.hub_id === undefined || data.hub_id === null
305
+ ? undefined
306
+ : String(data.hub_id);
307
+ if (profile.portalId && resolvedPortalId && resolvedPortalId !== profile.portalId) {
308
+ throw new CliError("AUTH_OAUTH_PORTAL_MISMATCH", `OAuth refresh for profile '${profileName}' resolved to portal ${resolvedPortalId}, expected ${profile.portalId}. Profile was not modified.`);
309
+ }
217
310
  const expiresIn = Number(data.expires_in ?? 0);
218
311
  const expiresAt = Number.isFinite(expiresIn) && expiresIn > 0
219
312
  ? new Date(Date.now() + expiresIn * 1000).toISOString()
@@ -234,7 +327,7 @@ async function refreshOAuthAccessToken(profileName, profile) {
234
327
  scopes,
235
328
  oauthClientId: clientId,
236
329
  oauthClientSecretEnv: secretEnv,
237
- portalId: data.hub_id === undefined ? profile.portalId : String(data.hub_id),
330
+ portalId: resolvedPortalId ?? profile.portalId,
238
331
  userId: data.user_id === undefined ? profile.userId : String(data.user_id),
239
332
  };
240
333
  saveProfile(profileName, updated);
@@ -1 +1 @@
1
- {"version":3,"file":"auth.js","sourceRoot":"","sources":["../../src/core/auth.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,YAAY,EAAE,aAAa,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,SAAS,CAAC;AACxF,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAClC,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AACvC,OAAO,EAAE,gBAAgB,EAAE,aAAa,EAAE,cAAc,EAAE,kBAAkB,EAAE,MAAM,YAAY,CAAC;AAmBjG,MAAM,oBAAoB,GAAG,IAAI,GAAG,EAA2B,CAAC;AAChE,MAAM,sBAAsB,GAAG,MAAM,CAAC;AAEtC,MAAM,UAAU,eAAe,CAAC,KAAyB;IACvD,MAAM,UAAU,GAAG,KAAK,EAAE,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;IAC/C,IAAI,CAAC,UAAU,IAAI,UAAU,KAAK,IAAI,IAAI,UAAU,KAAK,KAAK,IAAI,UAAU,KAAK,QAAQ,IAAI,UAAU,KAAK,MAAM;QAAE,OAAO,SAAS,CAAC;IACrI,IAAI,CAAC,qBAAqB,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE,CAAC;QAC5C,MAAM,IAAI,QAAQ,CAAC,gBAAgB,EAAE,mBAAmB,KAAK,6CAA6C,CAAC,CAAC;IAC9G,CAAC;IACD,OAAO,UAAU,CAAC;AACpB,CAAC;AAED,MAAM,UAAU,qBAAqB,CAAC,KAAa;IACjD,MAAM,UAAU,GAAG,KAAK,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;IAC9C,IAAI,CAAC,UAAU;QAAE,MAAM,IAAI,QAAQ,CAAC,gBAAgB,EAAE,yBAAyB,CAAC,CAAC;IACjF,IAAI,UAAU,KAAK,IAAI,IAAI,UAAU,KAAK,QAAQ,IAAI,UAAU,KAAK,MAAM;QAAE,OAAO,KAAK,CAAC;IAC1F,IAAI,CAAC,qBAAqB,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE,CAAC;QAC5C,MAAM,IAAI,QAAQ,CAAC,gBAAgB,EAAE,mBAAmB,KAAK,6CAA6C,CAAC,CAAC;IAC9G,CAAC;IACD,OAAO,UAAU,CAAC;AACpB,CAAC;AAED,MAAM,UAAU,kBAAkB,CAAC,KAAa;IAC9C,MAAM,UAAU,GAAG,KAAK;SACrB,IAAI,EAAE;SACN,OAAO,CAAC,eAAe,EAAE,EAAE,CAAC;SAC5B,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC;SACnB,WAAW,EAAE,CAAC;IACjB,IAAI,CAAC,mCAAmC,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE,CAAC;QAC1D,MAAM,IAAI,QAAQ,CAAC,oBAAoB,EAAE,+DAA+D,CAAC,CAAC;IAC5G,CAAC;IACD,OAAO,UAAU,CAAC;AACpB,CAAC;AAED,MAAM,UAAU,mBAAmB,CAAC,KAAa;IAC/C,OAAO,WAAW,kBAAkB,CAAC,KAAK,CAAC,EAAE,CAAC;AAChD,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,YAAY,CAAC,OAA6B;IACxD,IAAI,OAAO,CAAC,MAAM;QAAE,OAAO,eAAe,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;IAE3D,IAAI,OAAO,CAAC,mBAAmB;QAAE,OAAO,eAAe,CAAC,OAAO,CAAC,mBAAmB,CAAC,CAAC;IAErF,4DAA4D;IAC5D,IAAI,OAAO,CAAC,QAAQ,EAAE,CAAC;QACrB,MAAM,KAAK,GAAG,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAC,oBAAoB,CAAC,CAAC;QAC3D,IAAI,KAAK;YAAE,OAAO,eAAe,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;IAC9C,CAAC;IAED,wDAAwD;IACxD,IAAI,OAAO,CAAC,KAAK,EAAE,CAAC;QAClB,MAAM,UAAU,GAAG,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,mBAAmB,CAAC,CAAC;QAC5D,IAAI,UAAU;YAAE,OAAO,eAAe,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC;IACxD,CAAC;IAED,OAAO,SAAS,CAAC;AACnB,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,gBAAgB,CAAC,MAAe;IAC9C,MAAM,UAAU,GAAG,eAAe,CAAC,MAAM,CAAC,CAAC;IAC3C,IAAI,CAAC,UAAU;QAAE,OAAO,gBAAgB,CAAC;IACzC,OAAO,OAAO,UAAU,aAAa,CAAC;AACxC,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,aAAa,CAAC,OAAe;IAC3C,IAAI,CAAC;QACH,MAAM,IAAI,GAAG,UAAU,CAAC,OAAO,CAAC,CAAC;QACjC,IAAI,IAAI,CAAC,SAAS;YAAE,OAAO,WAAW,IAAI,CAAC,SAAS,EAAE,CAAC;QACvD,MAAM,MAAM,GAAG,YAAY,CAAC,IAAI,CAAC,CAAC;QAClC,OAAO,WAAW,gBAAgB,CAAC,MAAM,CAAC,EAAE,CAAC;IAC/C,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,wBAAwB,CAAC;IAClC,CAAC;AACH,CAAC;AAMD,MAAM,UAAU,eAAe;IAC7B,8DAA8D;IAC9D,+DAA+D;IAC/D,MAAM,QAAQ,GAAG,OAAO,CAAC,GAAG,CAAC,UAAU,EAAE,IAAI,EAAE,CAAC;IAChD,IAAI,QAAQ;QAAE,OAAO,QAAQ,CAAC;IAC9B,OAAO,IAAI,CAAC,OAAO,EAAE,EAAE,WAAW,CAAC,CAAC;AACtC,CAAC;AAED,SAAS,SAAS;IAChB,MAAM,IAAI,GAAG,eAAe,EAAE,CAAC;IAC/B,OAAO,EAAE,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,WAAW,CAAC,EAAE,CAAC;AACtD,CAAC;AAED,SAAS,YAAY;IACnB,MAAM,EAAE,GAAG,EAAE,GAAG,SAAS,EAAE,CAAC;IAC5B,oFAAoF;IACpF,IAAI,gBAAgB,CAAC,GAAG,CAAC,EAAE,CAAC;QAC1B,MAAM,UAAU,GAAG,kBAAkB,EAAE,CAAC;QACxC,IAAI,CAAC,UAAU,EAAE,CAAC;YAChB,MAAM,IAAI,QAAQ,CAChB,2BAA2B,EAC3B,gIAAgI,CACjI,CAAC;QACJ,CAAC;QACD,OAAO,aAAa,CAAC,GAAG,EAAE,UAAU,CAAa,CAAC;IACpD,CAAC;IACD,MAAM,EAAE,IAAI,EAAE,GAAG,SAAS,EAAE,CAAC;IAC7B,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC;QAAE,OAAO,EAAE,QAAQ,EAAE,EAAE,EAAE,CAAC;IAC/C,OAAO,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,IAAI,EAAE,MAAM,CAAC,CAAa,CAAC;AAC5D,CAAC;AAED,SAAS,aAAa,CAAC,IAAc;IACnC,MAAM,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,SAAS,EAAE,CAAC;IAClC,SAAS,CAAC,GAAG,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC;IACjD,IAAI,OAAO,CAAC,QAAQ,KAAK,OAAO,EAAE,CAAC;QACjC,SAAS,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;IACxB,CAAC;IACD,wFAAwF;IACxF,IAAI,gBAAgB,CAAC,GAAG,CAAC,EAAE,CAAC;QAC1B,MAAM,UAAU,GAAG,kBAAkB,EAAE,CAAC;QACxC,IAAI,CAAC,UAAU,EAAE,CAAC;YAChB,MAAM,IAAI,QAAQ,CAChB,2BAA2B,EAC3B,gIAAgI,CACjI,CAAC;QACJ,CAAC;QACD,cAAc,CAAC,GAAG,EAAE,IAAI,EAAE,UAAU,CAAC,CAAC;QACtC,OAAO;IACT,CAAC;IACD,aAAa,CAAC,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC;IACpE,IAAI,OAAO,CAAC,QAAQ,KAAK,OAAO,EAAE,CAAC;QACjC,SAAS,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;IACzB,CAAC;AACH,CAAC;AAED,MAAM,UAAU,SAAS,CAAC,OAAe,EAAE,KAAa;IACtD,IAAI,CAAC,KAAK,EAAE,IAAI,EAAE;QAAE,MAAM,IAAI,QAAQ,CAAC,oBAAoB,EAAE,uBAAuB,CAAC,CAAC;IACtF,MAAM,IAAI,GAAG,YAAY,EAAE,CAAC;IAC5B,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC;IACtE,aAAa,CAAC,IAAI,CAAC,CAAC;AACtB,CAAC;AAED,MAAM,UAAU,WAAW,CAAC,OAAe,EAAE,IAAiB;IAC5D,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,IAAI,EAAE;QAAE,MAAM,IAAI,QAAQ,CAAC,oBAAoB,EAAE,uBAAuB,CAAC,CAAC;IAC3F,MAAM,IAAI,GAAG,YAAY,EAAE,CAAC;IAC5B,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE,GAAG,IAAI,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,EAAE,CAAC;IAC1F,aAAa,CAAC,IAAI,CAAC,CAAC;AACtB,CAAC;AAED,MAAM,UAAU,QAAQ,CAAC,OAAe;IACtC,MAAM,IAAI,GAAG,YAAY,EAAE,CAAC;IAC5B,MAAM,KAAK,GAAG,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE,KAAK,CAAC;IAC5C,IAAI,CAAC,KAAK,EAAE,CAAC;QACX,MAAM,IAAI,QAAQ,CAAC,wBAAwB,EAAE,+BAA+B,OAAO,4CAA4C,CAAC,CAAC;IACnI,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AAED,MAAM,UAAU,eAAe,CAAC,OAAoB;IAClD,IAAI,OAAO,CAAC,QAAQ;QAAE,OAAO,OAAO,CAAC,QAAQ,CAAC;IAC9C,OAAO,OAAO,CAAC,YAAY,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,aAAa,CAAC;AACxD,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,mBAAmB,CAAC,WAAmB;IAC3D,MAAM,OAAO,GAAG,UAAU,CAAC,WAAW,CAAC,CAAC;IACxC,IAAI,eAAe,CAAC,OAAO,CAAC,KAAK,OAAO,IAAI,CAAC,OAAO,CAAC,YAAY,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE,CAAC;QACxF,OAAO,OAAO,CAAC,KAAK,CAAC;IACvB,CAAC;IACD,MAAM,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;IAChD,IAAI,MAAM,CAAC,QAAQ,CAAC,SAAS,CAAC,IAAI,SAAS,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,sBAAsB,EAAE,CAAC;QAClF,OAAO,OAAO,CAAC,KAAK,CAAC;IACvB,CAAC;IACD,MAAM,QAAQ,GAAG,oBAAoB,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;IACvD,IAAI,QAAQ;QAAE,OAAO,QAAQ,CAAC;IAC9B,MAAM,OAAO,GAAG,uBAAuB,CAAC,WAAW,EAAE,OAAO,CAAC;SAC1D,OAAO,CAAC,GAAG,EAAE,CAAC,oBAAoB,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC,CAAC;IAC3D,oBAAoB,CAAC,GAAG,CAAC,WAAW,EAAE,OAAO,CAAC,CAAC;IAC/C,OAAO,OAAO,CAAC;AACjB,CAAC;AAED,KAAK,UAAU,uBAAuB,CAAC,WAAmB,EAAE,OAAoB;IAC9E,MAAM,QAAQ,GAAG,OAAO,CAAC,aAAa,EAAE,IAAI,EAAE,IAAI,OAAO,CAAC,GAAG,CAAC,qBAAqB,EAAE,IAAI,EAAE,CAAC;IAC5F,MAAM,SAAS,GAAG,OAAO,CAAC,oBAAoB,EAAE,IAAI,EAAE,IAAI,2BAA2B,CAAC;IACtF,MAAM,YAAY,GAAG,OAAO,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE,IAAI,EAAE,CAAC;IACpD,IAAI,CAAC,QAAQ,EAAE,CAAC;QACd,MAAM,IAAI,QAAQ,CAAC,mCAAmC,EAAE,kBAAkB,WAAW,yBAAyB,CAAC,CAAC;IAClH,CAAC;IACD,IAAI,CAAC,YAAY,EAAE,CAAC;QAClB,MAAM,IAAI,QAAQ,CAChB,mCAAmC,EACnC,qEAAqE,SAAS,IAAI,CACnF,CAAC;IACJ,CAAC;IAED,MAAM,OAAO,GAAG,IAAI,eAAe,EAAE,CAAC;IACtC,OAAO,CAAC,GAAG,CAAC,YAAY,EAAE,eAAe,CAAC,CAAC;IAC3C,OAAO,CAAC,GAAG,CAAC,WAAW,EAAE,QAAQ,CAAC,CAAC;IACnC,OAAO,CAAC,GAAG,CAAC,eAAe,EAAE,YAAY,CAAC,CAAC;IAC3C,OAAO,CAAC,GAAG,CAAC,eAAe,EAAE,OAAO,CAAC,YAAa,CAAC,CAAC;IACpD,IAAI,QAAkB,CAAC;IACvB,IAAI,CAAC;QACH,QAAQ,GAAG,MAAM,KAAK,CAAC,4CAA4C,EAAE;YACnE,MAAM,EAAE,MAAM;YACd,OAAO,EAAE,EAAE,cAAc,EAAE,iDAAiD,EAAE;YAC9E,IAAI,EAAE,OAAO,CAAC,QAAQ,EAAE;YACxB,MAAM,EAAE,WAAW,CAAC,OAAO,CAAC,MAAM,CAAC;SACpC,CAAC,CAAC;IACL,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,MAAM,IAAI,QAAQ,CAChB,2BAA2B,EAC3B,yBAAyB,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAClF,CAAC;IACJ,CAAC;IACD,MAAM,IAAI,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC,CAA4B,CAAC;IAChF,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC;QACjB,MAAM,IAAI,QAAQ,CAAC,2BAA2B,EAAE,yBAAyB,QAAQ,CAAC,MAAM,GAAG,EAAE,QAAQ,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;IACtH,CAAC;IACD,MAAM,WAAW,GAAG,OAAO,IAAI,CAAC,YAAY,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,YAAY,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;IAC1F,IAAI,CAAC,WAAW,EAAE,CAAC;QACjB,MAAM,IAAI,QAAQ,CAAC,2BAA2B,EAAE,sDAAsD,EAAE,QAAQ,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;IACjI,CAAC;IACD,MAAM,SAAS,GAAG,MAAM,CAAC,IAAI,CAAC,UAAU,IAAI,CAAC,CAAC,CAAC;IAC/C,MAAM,SAAS,GAAG,MAAM,CAAC,QAAQ,CAAC,SAAS,CAAC,IAAI,SAAS,GAAG,CAAC;QAC3D,CAAC,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,SAAS,GAAG,IAAI,CAAC,CAAC,WAAW,EAAE;QACvD,CAAC,CAAC,OAAO,CAAC,SAAS,CAAC;IACtB,MAAM,MAAM,GAAG,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC;QACvC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC;QACzC,CAAC,CAAC,OAAO,IAAI,CAAC,KAAK,KAAK,QAAQ;YAC9B,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC;YAC3C,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC;IACrB,MAAM,OAAO,GAAgB;QAC3B,GAAG,OAAO;QACV,KAAK,EAAE,WAAW;QAClB,QAAQ,EAAE,OAAO;QACjB,YAAY,EAAE,OAAO,IAAI,CAAC,aAAa,KAAK,QAAQ,IAAI,IAAI,CAAC,aAAa,CAAC,IAAI,EAAE;YAC/E,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,IAAI,EAAE;YAC3B,CAAC,CAAC,OAAO,CAAC,YAAY;QACxB,SAAS;QACT,MAAM;QACN,aAAa,EAAE,QAAQ;QACvB,oBAAoB,EAAE,SAAS;QAC/B,QAAQ,EAAE,IAAI,CAAC,MAAM,KAAK,SAAS,CAAC,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC;QAC5E,MAAM,EAAE,IAAI,CAAC,OAAO,KAAK,SAAS,CAAC,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC;KAC3E,CAAC;IACF,WAAW,CAAC,WAAW,EAAE,OAAO,CAAC,CAAC;IAClC,OAAO,WAAW,CAAC;AACrB,CAAC;AAED,MAAM,UAAU,WAAW,CAAC,OAAe;IACzC,MAAM,IAAI,GAAG,YAAY,EAAE,CAAC;IAC5B,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC;QAAE,OAAO,KAAK,CAAC;IAC1C,OAAO,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;IAC9B,aAAa,CAAC,IAAI,CAAC,CAAC;IACpB,OAAO,IAAI,CAAC;AACd,CAAC;AAED,MAAM,UAAU,UAAU,CAAC,OAAe;IACxC,MAAM,IAAI,GAAG,YAAY,EAAE,CAAC;IAC5B,OAAO,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC;AACzC,CAAC;AAED,MAAM,UAAU,YAAY;IAC1B,OAAO,MAAM,CAAC,IAAI,CAAC,YAAY,EAAE,CAAC,QAAQ,CAAC,CAAC,IAAI,EAAE,CAAC;AACrD,CAAC;AAED,MAAM,UAAU,UAAU,CAAC,OAAe;IACxC,MAAM,KAAK,GAAG,YAAY,EAAE,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;IAC/C,IAAI,CAAC,KAAK,EAAE,CAAC;QACX,MAAM,IAAI,QAAQ,CAAC,wBAAwB,EAAE,yBAAyB,OAAO,IAAI,CAAC,CAAC;IACrF,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC"}
1
+ {"version":3,"file":"auth.js","sourceRoot":"","sources":["../../src/core/auth.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,YAAY,EAAE,aAAa,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,SAAS,CAAC;AACxF,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAClC,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AACvC,OAAO,EAAE,gBAAgB,EAAE,aAAa,EAAE,cAAc,EAAE,kBAAkB,EAAE,MAAM,YAAY,CAAC;AA0BjG,MAAM,oBAAoB,GAAG,IAAI,GAAG,EAA2B,CAAC;AAChE,MAAM,gCAAgC,GAAG,IAAI,GAAG,EAA2B,CAAC;AAC5E,MAAM,sBAAsB,GAAG,MAAM,CAAC;AACtC,MAAM,oCAAoC,GAAG,CAAC,GAAG,MAAM,CAAC;AACxD,MAAM,gCAAgC,GAAG,qDAAqD,CAAC;AAY/F,MAAM,UAAU,eAAe,CAAC,KAAyB;IACvD,MAAM,UAAU,GAAG,KAAK,EAAE,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;IAC/C,IAAI,CAAC,UAAU,IAAI,UAAU,KAAK,IAAI,IAAI,UAAU,KAAK,KAAK,IAAI,UAAU,KAAK,QAAQ,IAAI,UAAU,KAAK,MAAM;QAAE,OAAO,SAAS,CAAC;IACrI,IAAI,CAAC,qBAAqB,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE,CAAC;QAC5C,MAAM,IAAI,QAAQ,CAAC,gBAAgB,EAAE,mBAAmB,KAAK,6CAA6C,CAAC,CAAC;IAC9G,CAAC;IACD,OAAO,UAAU,CAAC;AACpB,CAAC;AAED,MAAM,UAAU,qBAAqB,CAAC,KAAa;IACjD,MAAM,UAAU,GAAG,KAAK,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;IAC9C,IAAI,CAAC,UAAU;QAAE,MAAM,IAAI,QAAQ,CAAC,gBAAgB,EAAE,yBAAyB,CAAC,CAAC;IACjF,IAAI,UAAU,KAAK,IAAI,IAAI,UAAU,KAAK,QAAQ,IAAI,UAAU,KAAK,MAAM;QAAE,OAAO,KAAK,CAAC;IAC1F,IAAI,CAAC,qBAAqB,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE,CAAC;QAC5C,MAAM,IAAI,QAAQ,CAAC,gBAAgB,EAAE,mBAAmB,KAAK,6CAA6C,CAAC,CAAC;IAC9G,CAAC;IACD,OAAO,UAAU,CAAC;AACpB,CAAC;AAED,MAAM,UAAU,kBAAkB,CAAC,KAAa;IAC9C,MAAM,UAAU,GAAG,KAAK;SACrB,IAAI,EAAE;SACN,OAAO,CAAC,eAAe,EAAE,EAAE,CAAC;SAC5B,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC;SACnB,WAAW,EAAE,CAAC;IACjB,IAAI,CAAC,mCAAmC,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE,CAAC;QAC1D,MAAM,IAAI,QAAQ,CAAC,oBAAoB,EAAE,+DAA+D,CAAC,CAAC;IAC5G,CAAC;IACD,OAAO,UAAU,CAAC;AACpB,CAAC;AAED,MAAM,UAAU,mBAAmB,CAAC,KAAa;IAC/C,OAAO,WAAW,kBAAkB,CAAC,KAAK,CAAC,EAAE,CAAC;AAChD,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,YAAY,CAAC,OAA6B;IACxD,IAAI,OAAO,CAAC,MAAM;QAAE,OAAO,eAAe,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;IAE3D,IAAI,OAAO,CAAC,mBAAmB;QAAE,OAAO,eAAe,CAAC,OAAO,CAAC,mBAAmB,CAAC,CAAC;IAErF,4DAA4D;IAC5D,IAAI,OAAO,CAAC,QAAQ,EAAE,CAAC;QACrB,MAAM,KAAK,GAAG,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAC,oBAAoB,CAAC,CAAC;QAC3D,IAAI,KAAK;YAAE,OAAO,eAAe,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;IAC9C,CAAC;IAED,wDAAwD;IACxD,IAAI,OAAO,CAAC,KAAK,EAAE,CAAC;QAClB,MAAM,UAAU,GAAG,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,mBAAmB,CAAC,CAAC;QAC5D,IAAI,UAAU;YAAE,OAAO,eAAe,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC;IACxD,CAAC;IAED,OAAO,SAAS,CAAC;AACnB,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,gBAAgB,CAAC,MAAe;IAC9C,MAAM,UAAU,GAAG,eAAe,CAAC,MAAM,CAAC,CAAC;IAC3C,IAAI,CAAC,UAAU;QAAE,OAAO,gBAAgB,CAAC;IACzC,OAAO,OAAO,UAAU,aAAa,CAAC;AACxC,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,aAAa,CAAC,OAAe;IAC3C,IAAI,CAAC;QACH,MAAM,IAAI,GAAG,UAAU,CAAC,OAAO,CAAC,CAAC;QACjC,IAAI,IAAI,CAAC,SAAS;YAAE,OAAO,WAAW,IAAI,CAAC,SAAS,EAAE,CAAC;QACvD,MAAM,MAAM,GAAG,YAAY,CAAC,IAAI,CAAC,CAAC;QAClC,OAAO,WAAW,gBAAgB,CAAC,MAAM,CAAC,EAAE,CAAC;IAC/C,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,wBAAwB,CAAC;IAClC,CAAC;AACH,CAAC;AAMD,MAAM,UAAU,eAAe;IAC7B,8DAA8D;IAC9D,+DAA+D;IAC/D,MAAM,QAAQ,GAAG,OAAO,CAAC,GAAG,CAAC,UAAU,EAAE,IAAI,EAAE,CAAC;IAChD,IAAI,QAAQ;QAAE,OAAO,QAAQ,CAAC;IAC9B,OAAO,IAAI,CAAC,OAAO,EAAE,EAAE,WAAW,CAAC,CAAC;AACtC,CAAC;AAED,SAAS,SAAS;IAChB,MAAM,IAAI,GAAG,eAAe,EAAE,CAAC;IAC/B,OAAO,EAAE,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,WAAW,CAAC,EAAE,CAAC;AACtD,CAAC;AAED,SAAS,YAAY;IACnB,MAAM,EAAE,GAAG,EAAE,GAAG,SAAS,EAAE,CAAC;IAC5B,oFAAoF;IACpF,IAAI,gBAAgB,CAAC,GAAG,CAAC,EAAE,CAAC;QAC1B,MAAM,UAAU,GAAG,kBAAkB,EAAE,CAAC;QACxC,IAAI,CAAC,UAAU,EAAE,CAAC;YAChB,MAAM,IAAI,QAAQ,CAChB,2BAA2B,EAC3B,gIAAgI,CACjI,CAAC;QACJ,CAAC;QACD,OAAO,aAAa,CAAC,GAAG,EAAE,UAAU,CAAa,CAAC;IACpD,CAAC;IACD,MAAM,EAAE,IAAI,EAAE,GAAG,SAAS,EAAE,CAAC;IAC7B,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC;QAAE,OAAO,EAAE,QAAQ,EAAE,EAAE,EAAE,CAAC;IAC/C,OAAO,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,IAAI,EAAE,MAAM,CAAC,CAAa,CAAC;AAC5D,CAAC;AAED,SAAS,aAAa,CAAC,IAAc;IACnC,MAAM,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,SAAS,EAAE,CAAC;IAClC,SAAS,CAAC,GAAG,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC;IACjD,IAAI,OAAO,CAAC,QAAQ,KAAK,OAAO,EAAE,CAAC;QACjC,SAAS,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;IACxB,CAAC;IACD,wFAAwF;IACxF,IAAI,gBAAgB,CAAC,GAAG,CAAC,EAAE,CAAC;QAC1B,MAAM,UAAU,GAAG,kBAAkB,EAAE,CAAC;QACxC,IAAI,CAAC,UAAU,EAAE,CAAC;YAChB,MAAM,IAAI,QAAQ,CAChB,2BAA2B,EAC3B,gIAAgI,CACjI,CAAC;QACJ,CAAC;QACD,cAAc,CAAC,GAAG,EAAE,IAAI,EAAE,UAAU,CAAC,CAAC;QACtC,OAAO;IACT,CAAC;IACD,aAAa,CAAC,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC;IACpE,IAAI,OAAO,CAAC,QAAQ,KAAK,OAAO,EAAE,CAAC;QACjC,SAAS,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;IACzB,CAAC;AACH,CAAC;AAED,MAAM,UAAU,SAAS,CAAC,OAAe,EAAE,KAAa;IACtD,IAAI,CAAC,KAAK,EAAE,IAAI,EAAE;QAAE,MAAM,IAAI,QAAQ,CAAC,oBAAoB,EAAE,uBAAuB,CAAC,CAAC;IACtF,MAAM,IAAI,GAAG,YAAY,EAAE,CAAC;IAC5B,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC;IACtE,aAAa,CAAC,IAAI,CAAC,CAAC;AACtB,CAAC;AAED,MAAM,UAAU,WAAW,CAAC,OAAe,EAAE,IAAiB;IAC5D,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,IAAI,EAAE;QAAE,MAAM,IAAI,QAAQ,CAAC,oBAAoB,EAAE,uBAAuB,CAAC,CAAC;IAC3F,MAAM,IAAI,GAAG,YAAY,EAAE,CAAC;IAC5B,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE,GAAG,IAAI,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,EAAE,CAAC;IAC1F,aAAa,CAAC,IAAI,CAAC,CAAC;AACtB,CAAC;AAED,MAAM,UAAU,QAAQ,CAAC,OAAe;IACtC,MAAM,IAAI,GAAG,YAAY,EAAE,CAAC;IAC5B,MAAM,KAAK,GAAG,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE,KAAK,CAAC;IAC5C,IAAI,CAAC,KAAK,EAAE,CAAC;QACX,MAAM,IAAI,QAAQ,CAAC,wBAAwB,EAAE,oCAAoC,OAAO,sCAAsC,OAAO,IAAI,CAAC,CAAC;IAC7I,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AAED,MAAM,UAAU,eAAe,CAAC,OAAoB;IAClD,IAAI,OAAO,CAAC,QAAQ;QAAE,OAAO,OAAO,CAAC,QAAQ,CAAC;IAC9C,OAAO,OAAO,CAAC,YAAY,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,aAAa,CAAC;AACxD,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,mBAAmB,CAAC,WAAmB;IAC3D,MAAM,OAAO,GAAG,UAAU,CAAC,WAAW,CAAC,CAAC;IACxC,MAAM,QAAQ,GAAG,eAAe,CAAC,OAAO,CAAC,CAAC;IAC1C,IAAI,QAAQ,KAAK,qBAAqB,EAAE,CAAC;QACvC,IAAI,CAAC,OAAO,CAAC,iBAAiB,EAAE,IAAI,EAAE,EAAE,CAAC;YACvC,MAAM,IAAI,QAAQ,CAChB,kBAAkB,EAClB,gCAAgC,WAAW,+FAA+F,CAC3I,CAAC;QACJ,CAAC;QACD,MAAM,SAAS,GAAG,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC;QACjF,IAAI,MAAM,CAAC,QAAQ,CAAC,SAAS,CAAC,IAAI,SAAS,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,oCAAoC,EAAE,CAAC;YAChG,OAAO,OAAO,CAAC,KAAK,CAAC;QACvB,CAAC;QACD,MAAM,QAAQ,GAAG,gCAAgC,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;QACnE,IAAI,QAAQ;YAAE,OAAO,QAAQ,CAAC;QAC9B,MAAM,OAAO,GAAG,6BAA6B,CAAC,WAAW,EAAE,OAAO,CAAC;aAChE,OAAO,CAAC,GAAG,EAAE,CAAC,gCAAgC,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC,CAAC;QACvE,gCAAgC,CAAC,GAAG,CAAC,WAAW,EAAE,OAAO,CAAC,CAAC;QAC3D,OAAO,OAAO,CAAC;IACjB,CAAC;IACD,IAAI,QAAQ,KAAK,OAAO,IAAI,CAAC,OAAO,CAAC,YAAY,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE,CAAC;QACxE,OAAO,OAAO,CAAC,KAAK,CAAC;IACvB,CAAC;IACD,MAAM,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;IAChD,IAAI,MAAM,CAAC,QAAQ,CAAC,SAAS,CAAC,IAAI,SAAS,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,sBAAsB,EAAE,CAAC;QAClF,OAAO,OAAO,CAAC,KAAK,CAAC;IACvB,CAAC;IACD,MAAM,QAAQ,GAAG,oBAAoB,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;IACvD,IAAI,QAAQ;QAAE,OAAO,QAAQ,CAAC;IAC9B,MAAM,OAAO,GAAG,uBAAuB,CAAC,WAAW,EAAE,OAAO,CAAC;SAC1D,OAAO,CAAC,GAAG,EAAE,CAAC,oBAAoB,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC,CAAC;IAC3D,oBAAoB,CAAC,GAAG,CAAC,WAAW,EAAE,OAAO,CAAC,CAAC;IAC/C,OAAO,OAAO,CAAC;AACjB,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,yBAAyB,CAC7C,iBAAyB,EACzB,QAAiB;IAEjB,MAAM,UAAU,GAAG,iBAAiB,CAAC,IAAI,EAAE,CAAC;IAC5C,IAAI,CAAC,UAAU;QAAE,MAAM,IAAI,QAAQ,CAAC,oBAAoB,EAAE,qCAAqC,CAAC,CAAC;IACjG,MAAM,GAAG,GAAG,IAAI,GAAG,CAAC,gCAAgC,CAAC,CAAC;IACtD,IAAI,QAAQ,EAAE,IAAI,EAAE,EAAE,CAAC;QACrB,MAAM,gBAAgB,GAAG,QAAQ,CAAC,IAAI,EAAE,CAAC;QACzC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,gBAAgB,CAAC,EAAE,CAAC;YACpC,MAAM,IAAI,QAAQ,CAAC,wBAAwB,EAAE,qCAAqC,CAAC,CAAC;QACtF,CAAC;QACD,GAAG,CAAC,YAAY,CAAC,GAAG,CAAC,UAAU,EAAE,gBAAgB,CAAC,CAAC;IACrD,CAAC;IAED,IAAI,QAAkB,CAAC;IACvB,IAAI,CAAC;QACH,QAAQ,GAAG,MAAM,KAAK,CAAC,GAAG,CAAC,QAAQ,EAAE,EAAE;YACrC,MAAM,EAAE,MAAM;YACd,OAAO,EAAE,EAAE,cAAc,EAAE,kBAAkB,EAAE;YAC/C,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE,wBAAwB,EAAE,UAAU,EAAE,CAAC;YAC9D,MAAM,EAAE,WAAW,CAAC,OAAO,CAAC,MAAM,CAAC;SACpC,CAAC,CAAC;IACL,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,MAAM,IAAI,QAAQ,CAChB,0BAA0B,EAC1B,wCAAwC,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CACjG,CAAC;IACJ,CAAC;IAED,MAAM,IAAI,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC,CAA4B,CAAC;IAChF,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC;QACjB,MAAM,IAAI,QAAQ,CAChB,0BAA0B,EAC1B,wCAAwC,QAAQ,CAAC,MAAM,GAAG,EAC1D,QAAQ,CAAC,MAAM,EACf,IAAI,CACL,CAAC;IACJ,CAAC;IAED,MAAM,WAAW,GAAG,OAAO,IAAI,CAAC,gBAAgB,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,gBAAgB,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;IAClG,MAAM,gBAAgB,GAAG,IAAI,CAAC,KAAK,KAAK,SAAS,IAAI,IAAI,CAAC,KAAK,KAAK,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IACnG,MAAM,eAAe,GAAG,MAAM,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;IACrD,IAAI,CAAC,WAAW,IAAI,CAAC,gBAAgB,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,eAAe,CAAC,IAAI,eAAe,IAAI,CAAC,EAAE,CAAC;QACnG,MAAM,IAAI,QAAQ,CAChB,0BAA0B,EAC1B,+FAA+F,EAC/F,QAAQ,CAAC,MAAM,EACf,IAAI,CACL,CAAC;IACJ,CAAC;IAED,MAAM,WAAW,GAAG,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,WAAW,CAAC;QACjD,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC;QAC9C,CAAC,CAAC,EAAE,CAAC;IACP,OAAO;QACL,WAAW;QACX,SAAS,EAAE,IAAI,IAAI,CAAC,eAAe,CAAC,CAAC,WAAW,EAAE;QAClD,QAAQ,EAAE,gBAAgB;QAC1B,MAAM,EAAE,IAAI,CAAC,MAAM,KAAK,SAAS,IAAI,IAAI,CAAC,MAAM,KAAK,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC;QAC3F,WAAW;QACX,OAAO,EAAE,OAAO,IAAI,CAAC,OAAO,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,SAAS;QACpE,WAAW,EAAE,OAAO,IAAI,CAAC,WAAW,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,SAAS;KACjF,CAAC;AACJ,CAAC;AAED,KAAK,UAAU,6BAA6B,CAAC,WAAmB,EAAE,OAAoB;IACpF,MAAM,KAAK,GAAG,MAAM,yBAAyB,CAAC,OAAO,CAAC,iBAAkB,EAAE,OAAO,CAAC,QAAQ,CAAC,CAAC;IAC5F,IAAI,OAAO,CAAC,QAAQ,IAAI,KAAK,CAAC,QAAQ,KAAK,OAAO,CAAC,QAAQ,EAAE,CAAC;QAC5D,MAAM,IAAI,QAAQ,CAChB,0BAA0B,EAC1B,oCAAoC,WAAW,wBAAwB,KAAK,CAAC,QAAQ,cAAc,OAAO,CAAC,QAAQ,6BAA6B,CACjJ,CAAC;IACJ,CAAC;IACD,WAAW,CAAC,WAAW,EAAE;QACvB,GAAG,OAAO;QACV,KAAK,EAAE,KAAK,CAAC,WAAW;QACxB,QAAQ,EAAE,qBAAqB;QAC/B,SAAS,EAAE,KAAK,CAAC,SAAS;QAC1B,MAAM,EAAE,SAAS;QACjB,WAAW,EAAE,KAAK,CAAC,WAAW;QAC9B,QAAQ,EAAE,KAAK,CAAC,QAAQ;QACxB,MAAM,EAAE,KAAK,CAAC,MAAM,IAAI,OAAO,CAAC,MAAM;QACtC,OAAO,EAAE,KAAK,CAAC,OAAO,IAAI,OAAO,CAAC,OAAO;QACzC,WAAW,EAAE,KAAK,CAAC,WAAW,IAAI,OAAO,CAAC,WAAW;QACrD,gBAAgB,EAAE,IAAI;KACvB,CAAC,CAAC;IACH,OAAO,KAAK,CAAC,WAAW,CAAC;AAC3B,CAAC;AAED,KAAK,UAAU,uBAAuB,CAAC,WAAmB,EAAE,OAAoB;IAC9E,MAAM,QAAQ,GAAG,OAAO,CAAC,aAAa,EAAE,IAAI,EAAE,IAAI,OAAO,CAAC,GAAG,CAAC,qBAAqB,EAAE,IAAI,EAAE,CAAC;IAC5F,MAAM,SAAS,GAAG,OAAO,CAAC,oBAAoB,EAAE,IAAI,EAAE,IAAI,2BAA2B,CAAC;IACtF,MAAM,YAAY,GAAG,OAAO,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE,IAAI,EAAE,CAAC;IACpD,IAAI,CAAC,QAAQ,EAAE,CAAC;QACd,MAAM,IAAI,QAAQ,CAAC,mCAAmC,EAAE,kBAAkB,WAAW,yBAAyB,CAAC,CAAC;IAClH,CAAC;IACD,IAAI,CAAC,YAAY,EAAE,CAAC;QAClB,MAAM,IAAI,QAAQ,CAChB,mCAAmC,EACnC,qEAAqE,SAAS,IAAI,CACnF,CAAC;IACJ,CAAC;IAED,MAAM,OAAO,GAAG,IAAI,eAAe,EAAE,CAAC;IACtC,OAAO,CAAC,GAAG,CAAC,YAAY,EAAE,eAAe,CAAC,CAAC;IAC3C,OAAO,CAAC,GAAG,CAAC,WAAW,EAAE,QAAQ,CAAC,CAAC;IACnC,OAAO,CAAC,GAAG,CAAC,eAAe,EAAE,YAAY,CAAC,CAAC;IAC3C,OAAO,CAAC,GAAG,CAAC,eAAe,EAAE,OAAO,CAAC,YAAa,CAAC,CAAC;IACpD,IAAI,QAAkB,CAAC;IACvB,IAAI,CAAC;QACH,QAAQ,GAAG,MAAM,KAAK,CAAC,4CAA4C,EAAE;YACnE,MAAM,EAAE,MAAM;YACd,OAAO,EAAE,EAAE,cAAc,EAAE,iDAAiD,EAAE;YAC9E,IAAI,EAAE,OAAO,CAAC,QAAQ,EAAE;YACxB,MAAM,EAAE,WAAW,CAAC,OAAO,CAAC,MAAM,CAAC;SACpC,CAAC,CAAC;IACL,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,MAAM,IAAI,QAAQ,CAChB,2BAA2B,EAC3B,yBAAyB,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAClF,CAAC;IACJ,CAAC;IACD,MAAM,IAAI,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC,CAA4B,CAAC;IAChF,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC;QACjB,MAAM,IAAI,QAAQ,CAAC,2BAA2B,EAAE,yBAAyB,QAAQ,CAAC,MAAM,GAAG,EAAE,QAAQ,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;IACtH,CAAC;IACD,MAAM,WAAW,GAAG,OAAO,IAAI,CAAC,YAAY,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,YAAY,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;IAC1F,IAAI,CAAC,WAAW,EAAE,CAAC;QACjB,MAAM,IAAI,QAAQ,CAAC,2BAA2B,EAAE,sDAAsD,EAAE,QAAQ,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;IACjI,CAAC;IACD,MAAM,gBAAgB,GAAG,IAAI,CAAC,MAAM,KAAK,SAAS,IAAI,IAAI,CAAC,MAAM,KAAK,IAAI;QACxE,CAAC,CAAC,SAAS;QACX,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IACxB,IAAI,OAAO,CAAC,QAAQ,IAAI,gBAAgB,IAAI,gBAAgB,KAAK,OAAO,CAAC,QAAQ,EAAE,CAAC;QAClF,MAAM,IAAI,QAAQ,CAChB,4BAA4B,EAC5B,8BAA8B,WAAW,wBAAwB,gBAAgB,cAAc,OAAO,CAAC,QAAQ,6BAA6B,CAC7I,CAAC;IACJ,CAAC;IACD,MAAM,SAAS,GAAG,MAAM,CAAC,IAAI,CAAC,UAAU,IAAI,CAAC,CAAC,CAAC;IAC/C,MAAM,SAAS,GAAG,MAAM,CAAC,QAAQ,CAAC,SAAS,CAAC,IAAI,SAAS,GAAG,CAAC;QAC3D,CAAC,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,SAAS,GAAG,IAAI,CAAC,CAAC,WAAW,EAAE;QACvD,CAAC,CAAC,OAAO,CAAC,SAAS,CAAC;IACtB,MAAM,MAAM,GAAG,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC;QACvC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC;QACzC,CAAC,CAAC,OAAO,IAAI,CAAC,KAAK,KAAK,QAAQ;YAC9B,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC;YAC3C,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC;IACrB,MAAM,OAAO,GAAgB;QAC3B,GAAG,OAAO;QACV,KAAK,EAAE,WAAW;QAClB,QAAQ,EAAE,OAAO;QACjB,YAAY,EAAE,OAAO,IAAI,CAAC,aAAa,KAAK,QAAQ,IAAI,IAAI,CAAC,aAAa,CAAC,IAAI,EAAE;YAC/E,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,IAAI,EAAE;YAC3B,CAAC,CAAC,OAAO,CAAC,YAAY;QACxB,SAAS;QACT,MAAM;QACN,aAAa,EAAE,QAAQ;QACvB,oBAAoB,EAAE,SAAS;QAC/B,QAAQ,EAAE,gBAAgB,IAAI,OAAO,CAAC,QAAQ;QAC9C,MAAM,EAAE,IAAI,CAAC,OAAO,KAAK,SAAS,CAAC,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC;KAC3E,CAAC;IACF,WAAW,CAAC,WAAW,EAAE,OAAO,CAAC,CAAC;IAClC,OAAO,WAAW,CAAC;AACrB,CAAC;AAED,MAAM,UAAU,WAAW,CAAC,OAAe;IACzC,MAAM,IAAI,GAAG,YAAY,EAAE,CAAC;IAC5B,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC;QAAE,OAAO,KAAK,CAAC;IAC1C,OAAO,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;IAC9B,aAAa,CAAC,IAAI,CAAC,CAAC;IACpB,OAAO,IAAI,CAAC;AACd,CAAC;AAED,MAAM,UAAU,UAAU,CAAC,OAAe;IACxC,MAAM,IAAI,GAAG,YAAY,EAAE,CAAC;IAC5B,OAAO,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC;AACzC,CAAC;AAED,MAAM,UAAU,YAAY;IAC1B,OAAO,MAAM,CAAC,IAAI,CAAC,YAAY,EAAE,CAAC,QAAQ,CAAC,CAAC,IAAI,EAAE,CAAC;AACrD,CAAC;AAED,MAAM,UAAU,UAAU,CAAC,OAAe;IACxC,MAAM,KAAK,GAAG,YAAY,EAAE,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;IAC/C,IAAI,CAAC,KAAK,EAAE,CAAC;QACX,MAAM,IAAI,QAAQ,CAAC,wBAAwB,EAAE,yBAAyB,OAAO,IAAI,CAAC,CAAC;IACrF,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC"}
@@ -34,6 +34,13 @@ export interface CapabilityProbeResult {
34
34
  };
35
35
  capabilities: Array<EndpointCapabilityDefinition & CachedCapabilityStatus>;
36
36
  }
37
+ export interface CapabilityCacheSummary {
38
+ status: "missing-context" | "missing" | "expired" | "fresh";
39
+ expiresAt?: string;
40
+ supported: number;
41
+ unsupported: number;
42
+ unknown: number;
43
+ }
37
44
  export declare function preflightEndpointCapability(options: {
38
45
  profile: string;
39
46
  path: string;
@@ -57,4 +64,5 @@ export declare function probeCapabilities(options: {
57
64
  ttlMs?: number;
58
65
  }): Promise<CapabilityProbeResult>;
59
66
  export declare function listEndpointCapabilities(): EndpointCapabilityDefinition[];
67
+ export declare function summarizeCapabilityCache(profileName: string): CapabilityCacheSummary;
60
68
  export {};