@wootsup/mcp 0.1.0-rc.8 → 0.1.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 +7 -7
- package/dist/index.d.ts +19 -0
- package/dist/index.js +72 -6
- package/dist/index.js.map +1 -1
- package/dist/modules/apimapper/cache.d.ts +2 -2
- package/dist/modules/apimapper/cache.js +107 -25
- package/dist/modules/apimapper/cache.js.map +1 -1
- package/dist/modules/apimapper/client.d.ts +40 -0
- package/dist/modules/apimapper/client.js +82 -12
- package/dist/modules/apimapper/client.js.map +1 -1
- package/dist/modules/apimapper/connections-format.d.ts +51 -0
- package/dist/modules/apimapper/connections-format.js +261 -0
- package/dist/modules/apimapper/connections-format.js.map +1 -0
- package/dist/modules/apimapper/connections-trim.d.ts +82 -0
- package/dist/modules/apimapper/connections-trim.js +224 -0
- package/dist/modules/apimapper/connections-trim.js.map +1 -0
- package/dist/modules/apimapper/connections.d.ts +14 -2
- package/dist/modules/apimapper/connections.js +447 -143
- package/dist/modules/apimapper/connections.js.map +1 -1
- package/dist/modules/apimapper/credentials-format.d.ts +21 -0
- package/dist/modules/apimapper/credentials-format.js +145 -0
- package/dist/modules/apimapper/credentials-format.js.map +1 -0
- package/dist/modules/apimapper/credentials.d.ts +12 -2
- package/dist/modules/apimapper/credentials.js +253 -72
- package/dist/modules/apimapper/credentials.js.map +1 -1
- package/dist/modules/apimapper/diagnose.d.ts +54 -2
- package/dist/modules/apimapper/diagnose.js +193 -11
- package/dist/modules/apimapper/diagnose.js.map +1 -1
- package/dist/modules/apimapper/elicitation.d.ts +54 -0
- package/dist/modules/apimapper/elicitation.js +90 -0
- package/dist/modules/apimapper/elicitation.js.map +1 -0
- package/dist/modules/apimapper/flows-format.d.ts +50 -0
- package/dist/modules/apimapper/flows-format.js +318 -0
- package/dist/modules/apimapper/flows-format.js.map +1 -0
- package/dist/modules/apimapper/flows.d.ts +13 -2
- package/dist/modules/apimapper/flows.js +325 -118
- package/dist/modules/apimapper/flows.js.map +1 -1
- package/dist/modules/apimapper/gateway/advanced-tool.d.ts +9 -0
- package/dist/modules/apimapper/gateway/advanced-tool.js +214 -0
- package/dist/modules/apimapper/gateway/advanced-tool.js.map +1 -0
- package/dist/modules/apimapper/gateway/capturing-server.d.ts +81 -0
- package/dist/modules/apimapper/gateway/capturing-server.js +87 -0
- package/dist/modules/apimapper/gateway/capturing-server.js.map +1 -0
- package/dist/modules/apimapper/gateway/essentials.d.ts +4 -0
- package/dist/modules/apimapper/gateway/essentials.js +28 -0
- package/dist/modules/apimapper/gateway/essentials.js.map +1 -0
- package/dist/modules/apimapper/gateway/test-support.d.ts +17 -0
- package/dist/modules/apimapper/gateway/test-support.js +43 -0
- package/dist/modules/apimapper/gateway/test-support.js.map +1 -0
- package/dist/modules/apimapper/get-skill.d.ts +3 -3
- package/dist/modules/apimapper/get-skill.js +4 -2
- package/dist/modules/apimapper/get-skill.js.map +1 -1
- package/dist/modules/apimapper/graph-builder.js +1 -1
- package/dist/modules/apimapper/graph-builder.js.map +1 -1
- package/dist/modules/apimapper/graph.d.ts +2 -2
- package/dist/modules/apimapper/graph.js +165 -34
- package/dist/modules/apimapper/graph.js.map +1 -1
- package/dist/modules/apimapper/index.d.ts +17 -1
- package/dist/modules/apimapper/index.js +66 -17
- package/dist/modules/apimapper/index.js.map +1 -1
- package/dist/modules/apimapper/inspect.d.ts +3 -2
- package/dist/modules/apimapper/inspect.js +97 -13
- package/dist/modules/apimapper/inspect.js.map +1 -1
- package/dist/modules/apimapper/library.d.ts +2 -2
- package/dist/modules/apimapper/library.js +303 -60
- package/dist/modules/apimapper/library.js.map +1 -1
- package/dist/modules/apimapper/license-format.d.ts +22 -0
- package/dist/modules/apimapper/license-format.js +149 -0
- package/dist/modules/apimapper/license-format.js.map +1 -0
- package/dist/modules/apimapper/license.d.ts +16 -2
- package/dist/modules/apimapper/license.js +85 -37
- package/dist/modules/apimapper/license.js.map +1 -1
- package/dist/modules/apimapper/local-sources.d.ts +2 -2
- package/dist/modules/apimapper/local-sources.js +58 -30
- package/dist/modules/apimapper/local-sources.js.map +1 -1
- package/dist/modules/apimapper/misc.d.ts +30 -2
- package/dist/modules/apimapper/misc.js +129 -50
- package/dist/modules/apimapper/misc.js.map +1 -1
- package/dist/modules/apimapper/node-schema.d.ts +52 -0
- package/dist/modules/apimapper/node-schema.js +70 -2
- package/dist/modules/apimapper/node-schema.js.map +1 -1
- package/dist/modules/apimapper/normalizers.d.ts +1 -0
- package/dist/modules/apimapper/normalizers.js +51 -0
- package/dist/modules/apimapper/normalizers.js.map +1 -1
- package/dist/modules/apimapper/onboarding.d.ts +48 -2
- package/dist/modules/apimapper/onboarding.js +324 -17
- package/dist/modules/apimapper/onboarding.js.map +1 -1
- package/dist/modules/apimapper/read-cache.d.ts +31 -2
- package/dist/modules/apimapper/read-cache.js +20 -6
- package/dist/modules/apimapper/read-cache.js.map +1 -1
- package/dist/modules/apimapper/render/_shared.d.ts +24 -0
- package/dist/modules/apimapper/render/_shared.js +84 -0
- package/dist/modules/apimapper/render/_shared.js.map +1 -0
- package/dist/modules/apimapper/render/dag.d.ts +18 -0
- package/dist/modules/apimapper/render/dag.js +70 -0
- package/dist/modules/apimapper/render/dag.js.map +1 -0
- package/dist/modules/apimapper/render/index.d.ts +2 -0
- package/dist/modules/apimapper/render/index.js +112 -0
- package/dist/modules/apimapper/render/index.js.map +1 -0
- package/dist/modules/apimapper/render/renderers/chart-bar.d.ts +2 -0
- package/dist/modules/apimapper/render/renderers/chart-bar.js +70 -0
- package/dist/modules/apimapper/render/renderers/chart-bar.js.map +1 -0
- package/dist/modules/apimapper/render/renderers/chart-line.d.ts +2 -0
- package/dist/modules/apimapper/render/renderers/chart-line.js +71 -0
- package/dist/modules/apimapper/render/renderers/chart-line.js.map +1 -0
- package/dist/modules/apimapper/render/renderers/diff.d.ts +2 -0
- package/dist/modules/apimapper/render/renderers/diff.js +154 -0
- package/dist/modules/apimapper/render/renderers/diff.js.map +1 -0
- package/dist/modules/apimapper/render/renderers/flow-diagram.d.ts +1 -0
- package/dist/modules/apimapper/render/renderers/flow-diagram.js +180 -0
- package/dist/modules/apimapper/render/renderers/flow-diagram.js.map +1 -0
- package/dist/modules/apimapper/render/renderers/json-tree.d.ts +2 -0
- package/dist/modules/apimapper/render/renderers/json-tree.js +87 -0
- package/dist/modules/apimapper/render/renderers/json-tree.js.map +1 -0
- package/dist/modules/apimapper/render/renderers/schema-diagram.d.ts +2 -0
- package/dist/modules/apimapper/render/renderers/schema-diagram.js +83 -0
- package/dist/modules/apimapper/render/renderers/schema-diagram.js.map +1 -0
- package/dist/modules/apimapper/render/renderers/table.d.ts +2 -0
- package/dist/modules/apimapper/render/renderers/table.js +75 -0
- package/dist/modules/apimapper/render/renderers/table.js.map +1 -0
- package/dist/modules/apimapper/render/schemas.d.ts +23 -0
- package/dist/modules/apimapper/render/schemas.js +56 -0
- package/dist/modules/apimapper/render/schemas.js.map +1 -0
- package/dist/modules/apimapper/render/secret-masking.d.ts +5 -0
- package/dist/modules/apimapper/render/secret-masking.js +51 -0
- package/dist/modules/apimapper/render/secret-masking.js.map +1 -0
- package/dist/modules/apimapper/render/sidecar.d.ts +21 -0
- package/dist/modules/apimapper/render/sidecar.js +66 -0
- package/dist/modules/apimapper/render/sidecar.js.map +1 -0
- package/dist/modules/apimapper/render/token-cap.d.ts +21 -0
- package/dist/modules/apimapper/render/token-cap.js +57 -0
- package/dist/modules/apimapper/render/token-cap.js.map +1 -0
- package/dist/modules/apimapper/schema.d.ts +2 -2
- package/dist/modules/apimapper/schema.js +100 -32
- package/dist/modules/apimapper/schema.js.map +1 -1
- package/dist/modules/apimapper/settings-format.d.ts +23 -0
- package/dist/modules/apimapper/settings-format.js +135 -0
- package/dist/modules/apimapper/settings-format.js.map +1 -0
- package/dist/modules/apimapper/settings.d.ts +2 -2
- package/dist/modules/apimapper/settings.js +101 -40
- package/dist/modules/apimapper/settings.js.map +1 -1
- package/dist/modules/apimapper/skill-resources.d.ts +2 -2
- package/dist/modules/apimapper/skill-resources.js.map +1 -1
- package/dist/modules/apimapper/token-baseline.harness.d.ts +91 -0
- package/dist/modules/apimapper/token-baseline.harness.js +291 -0
- package/dist/modules/apimapper/token-baseline.harness.js.map +1 -0
- package/dist/modules/apimapper/toolslist-size.d.ts +55 -0
- package/dist/modules/apimapper/toolslist-size.js +190 -0
- package/dist/modules/apimapper/toolslist-size.js.map +1 -0
- package/dist/modules/apimapper/types.d.ts +23 -8
- package/dist/modules/apimapper/types.js +26 -1
- package/dist/modules/apimapper/types.js.map +1 -1
- package/dist/modules/apimapper/use-profile.d.ts +21 -0
- package/dist/modules/apimapper/use-profile.js +56 -2
- package/dist/modules/apimapper/use-profile.js.map +1 -1
- package/dist/modules/apimapper/workflows.d.ts +2 -2
- package/dist/modules/apimapper/workflows.js +143 -16
- package/dist/modules/apimapper/workflows.js.map +1 -1
- package/dist/platform/index.js +44 -5
- package/dist/platform/index.js.map +1 -1
- package/dist/setup-cli.d.ts +53 -0
- package/dist/setup-cli.js +135 -6
- package/dist/setup-cli.js.map +1 -1
- package/docs/architecture.md +1 -1
- package/docs/tools.md +1 -1
- package/manifest.json +12 -3
- package/package.json +9 -4
- package/skills/apimapper/SKILL.md +1 -1
- package/skills/apimapper/reference/render.md +132 -0
- package/skills/apimapper/reference/troubleshooting.md +1 -1
- package/skills/apimapper/reference/yootheme.md +1 -1
|
@@ -8,47 +8,95 @@
|
|
|
8
8
|
// SECURITY: All credential responses are routed through `sanitizeSecrets()`
|
|
9
9
|
// in client.ts → request({sanitize:true}). Even if the PHP backend
|
|
10
10
|
// regresses and returns auth_data, the MCP layer never leaks it. See
|
|
11
|
-
// credential-sanitizer.ts.
|
|
11
|
+
// credential-sanitizer.ts. The sanitize happens INSIDE `request()` before
|
|
12
|
+
// the result is returned — so `r.data` is already redacted by the time any
|
|
13
|
+
// structuredContent builder serializes it into `_meta.ui.payload`.
|
|
14
|
+
//
|
|
15
|
+
// rc.13 Welle 3 (2026-05-20) — heavy read tools migrated to the toolkit's
|
|
16
|
+
// structuredContent builders. Migration is purely additive: every builder
|
|
17
|
+
// preserves the text `content` block and adds `_meta.ui` for Rich Card
|
|
18
|
+
// rendering.
|
|
19
|
+
// - credential_list → tableResult (display="data-table"); T1 (W3.2)
|
|
20
|
+
// carries explicit compactColumns + compactMap; IA-7 keeps the opaque
|
|
21
|
+
// `id` column llmOnly; IA-10 puts the next-step guidance in the footer.
|
|
22
|
+
// - credential_get → detailResult (display="detail") with an IA-10
|
|
23
|
+
// "Next steps" group — sanitised, secret-free metadata only.
|
|
24
|
+
// - mutating tools (create/update/delete/link/oauth_authorize_begin) keep
|
|
25
|
+
// their formatResult success payloads (small confirmations, and
|
|
26
|
+
// credential_delete's preview is consumed via raw JSON.parse by the
|
|
27
|
+
// Wave-2A pin tests); only their ERROR branch upgrades to errorResult.
|
|
28
|
+
// - all error returns → errorResult (display="error", isError:true).
|
|
29
|
+
// The column constants, row maps, detail builder and next-step strings live
|
|
30
|
+
// in the sibling credentials-format.ts so this module stays a lean
|
|
31
|
+
// tool-registration surface.
|
|
12
32
|
import { z } from "zod";
|
|
13
|
-
import { formatResult,
|
|
33
|
+
import { formatResult, tableResult, errorResult, readOnly, creating, mutating, destructive, elicitChoice, } from "@getimo/mcp-toolkit";
|
|
14
34
|
import { request, hintFor } from "./client.js";
|
|
15
|
-
|
|
35
|
+
import { toRows } from "./types.js";
|
|
36
|
+
import { CREDENTIAL_TABLE_COLUMNS, CREDENTIAL_COMPACT_COLUMNS, CREDENTIAL_LIST_NEXT_STEPS, mapCredentialRow, compactCredentialRow, buildCredentialDetail, } from "./credentials-format.js";
|
|
37
|
+
import { ambiguityFallbackError, } from "./elicitation.js";
|
|
38
|
+
/** The provider slug of an OAuth credential — `oauth_provider` then `provider`. */
|
|
39
|
+
function credentialProvider(c) {
|
|
40
|
+
return c.oauth_provider ?? c.provider ?? undefined;
|
|
41
|
+
}
|
|
42
|
+
/**
|
|
43
|
+
* Register the credential CRUD + OAuth tools.
|
|
44
|
+
*
|
|
45
|
+
* @param server the tool registrar (essentials forward, rest captured).
|
|
46
|
+
* @param elicitation optional elicitation capability (the real McpServer, or
|
|
47
|
+
* any `{ server: { elicitInput } }`). Supplied only by the host wiring in
|
|
48
|
+
* index.ts. When omitted, `oauth_authorize_begin` falls back to a
|
|
49
|
+
* structured error on genuine ambiguity instead of prompting.
|
|
50
|
+
*/
|
|
51
|
+
export function registerCredentialTools(server, elicitation) {
|
|
16
52
|
// ── apimapper_credential_list ──────────────────────────────────────
|
|
17
53
|
server.registerTool("apimapper_credential_list", {
|
|
18
54
|
title: "List Credentials",
|
|
55
|
+
// rc.10 A6 (2026-05-19) — explicit hint that auth_type is a
|
|
56
|
+
// CLIENT-SIDE filter applied after the server returns the full
|
|
57
|
+
// set. Previously the AI made repeat calls with different
|
|
58
|
+
// auth_type values expecting different data — they were always
|
|
59
|
+
// the same set, just filtered locally.
|
|
19
60
|
description: "List all stored credentials (sanitised — secrets omitted). " +
|
|
20
|
-
"
|
|
21
|
-
"
|
|
61
|
+
"The `auth_type` parameter is a CLIENT-SIDE filter — the server returns the same set " +
|
|
62
|
+
"regardless of `auth_type`. Calling repeatedly with different `auth_type` values returns " +
|
|
63
|
+
"identical underlying data; a single call returns everything. " +
|
|
64
|
+
"Use apimapper_credential_get for one credential's full metadata." +
|
|
65
|
+
"\n\nExample:\n apimapper_credential_list({}) // returns all credentials\n" +
|
|
66
|
+
" apimapper_credential_list({ auth_type: 'oauth2_code' }) // local filter only",
|
|
22
67
|
inputSchema: {
|
|
23
68
|
auth_type: z
|
|
24
69
|
.enum(["api_key", "bearer", "basic_auth", "oauth2_code", "oauth2_cc", "all"])
|
|
25
70
|
.default("all")
|
|
26
|
-
.describe("Filter by auth_type (server wire-format field)"),
|
|
71
|
+
.describe("Filter by auth_type (server wire-format field). Applied CLIENT-SIDE after the server returns all credentials — calling with different values does NOT change what the server returns."),
|
|
27
72
|
},
|
|
28
|
-
annotations: readOnly(),
|
|
73
|
+
annotations: readOnly({ title: "List Credentials", openWorld: true }),
|
|
29
74
|
}, async ({ auth_type }) => {
|
|
30
75
|
const r = await request("/credentials", {}, { sanitize: true });
|
|
31
76
|
if (!r.success) {
|
|
32
|
-
return
|
|
77
|
+
return errorResult({
|
|
78
|
+
message: r.error ?? "credential list failed",
|
|
79
|
+
code: r.errorCode ?? (r.status ? String(r.status) : undefined),
|
|
80
|
+
suggestion: hintFor(r.errorCode),
|
|
81
|
+
details: { auth_type },
|
|
82
|
+
});
|
|
33
83
|
}
|
|
34
84
|
const raw = Array.isArray(r.data?.credentials) ? r.data.credentials : [];
|
|
35
85
|
const items = auth_type === "all" ? raw : raw.filter((c) => c.auth_type === auth_type);
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
{ key: "updated_at", label: "UPDATED", width: 22 },
|
|
49
|
-
],
|
|
86
|
+
// W3.1 — tableResult: ASCII table for the LLM + typed DataTable payload
|
|
87
|
+
// for the Rich Card. T1 (W3.2): explicit compactColumns/compactMap drop
|
|
88
|
+
// PROVIDER/UPDATED at 21+ rows. IA-7: id stays llmOnly. IA-10: the
|
|
89
|
+
// footer carries the next-step guidance.
|
|
90
|
+
// SECURITY: `items` is the sanitised set — `request` was called with
|
|
91
|
+
// `{ sanitize: true }`, so any leaked auth_data was already stripped
|
|
92
|
+
// before it could reach the tableResult UI payload.
|
|
93
|
+
return tableResult(toRows(items), {
|
|
94
|
+
columns: CREDENTIAL_TABLE_COLUMNS,
|
|
95
|
+
compactColumns: CREDENTIAL_COMPACT_COLUMNS,
|
|
96
|
+
map: mapCredentialRow,
|
|
97
|
+
compactMap: compactCredentialRow,
|
|
50
98
|
header: (n) => `${n} credentials`,
|
|
51
|
-
footer:
|
|
99
|
+
footer: CREDENTIAL_LIST_NEXT_STEPS,
|
|
52
100
|
});
|
|
53
101
|
});
|
|
54
102
|
// ── apimapper_credential_get ───────────────────────────────────────
|
|
@@ -61,31 +109,35 @@ export function registerCredentialTools(server) {
|
|
|
61
109
|
inputSchema: {
|
|
62
110
|
id: z.string().describe('Credential ID (e.g., "cred_abc123"). Use apimapper_credential_list to find.'),
|
|
63
111
|
},
|
|
64
|
-
annotations: readOnly(),
|
|
112
|
+
annotations: readOnly({ title: "Get Credential", openWorld: true }),
|
|
65
113
|
}, async ({ id }) => {
|
|
66
114
|
const r = await request(`/credentials/${encodeURIComponent(id)}`, {}, { sanitize: true });
|
|
67
115
|
if (!r.success) {
|
|
68
|
-
return
|
|
116
|
+
return errorResult({
|
|
117
|
+
message: r.error ?? "credential get failed",
|
|
118
|
+
code: r.errorCode ?? (r.status ? String(r.status) : undefined),
|
|
119
|
+
suggestion: hintFor(r.errorCode),
|
|
120
|
+
details: { id },
|
|
121
|
+
});
|
|
69
122
|
}
|
|
70
123
|
// Server may return either `credential: {...}` envelope or bare object.
|
|
71
124
|
const cred = r.data && typeof r.data === "object" && "credential" in r.data
|
|
72
125
|
? r.data.credential
|
|
73
126
|
: r.data;
|
|
74
127
|
if (!cred || Object.keys(cred).length === 0) {
|
|
75
|
-
return
|
|
128
|
+
return errorResult({
|
|
129
|
+
message: "credential not found",
|
|
130
|
+
code: r.status ? String(r.status) : "not_found",
|
|
131
|
+
suggestion: hintFor("not_found"),
|
|
132
|
+
details: { id },
|
|
133
|
+
});
|
|
76
134
|
}
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
provider: cred.provider || null,
|
|
84
|
-
created_at: cred.created_at,
|
|
85
|
-
updated_at: cred.updated_at,
|
|
86
|
-
note: "Secret fields stripped at MCP boundary. To inspect a secret, open API Mapper → Credentials in your admin UI.",
|
|
87
|
-
};
|
|
88
|
-
return formatResult(mapped, false, { maxChars: 3000 });
|
|
135
|
+
// W3.1 — detailResult: grouped key-value detail for the Rich Card.
|
|
136
|
+
// SECURITY: `cred` is already sanitised (request `{ sanitize: true }`)
|
|
137
|
+
// and the `Credential` type omits `auth_data` — buildCredentialDetail
|
|
138
|
+
// surfaces only non-secret metadata. IA-7: opaque IDs are copyable code
|
|
139
|
+
// entries. IA-10: a dedicated "Next steps" group carries follow-ups.
|
|
140
|
+
return buildCredentialDetail(id, cred);
|
|
89
141
|
});
|
|
90
142
|
// ── apimapper_credential_create ────────────────────────────────────
|
|
91
143
|
server.registerTool("apimapper_credential_create", {
|
|
@@ -109,17 +161,16 @@ export function registerCredentialTools(server) {
|
|
|
109
161
|
provider: z.string().optional().describe('Generic provider slug for credential-by-provider filtering'),
|
|
110
162
|
oauth_token_expires_at: z.string().optional().describe('ISO timestamp when access token expires (oauth2_* only)'),
|
|
111
163
|
},
|
|
112
|
-
annotations: creating(),
|
|
164
|
+
annotations: creating({ title: "Create Credential", openWorld: true }),
|
|
113
165
|
}, async (input) => {
|
|
114
166
|
const r = await request("/credentials", { method: "POST", body: JSON.stringify(input) }, { sanitize: true });
|
|
115
167
|
if (!r.success) {
|
|
116
|
-
return
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
}, true);
|
|
168
|
+
return errorResult({
|
|
169
|
+
message: r.error ?? "credential create failed",
|
|
170
|
+
code: r.errorCode ?? (r.status ? String(r.status) : undefined),
|
|
171
|
+
suggestion: hintFor(r.errorCode),
|
|
172
|
+
details: { name: input.name, auth_type: input.auth_type },
|
|
173
|
+
});
|
|
123
174
|
}
|
|
124
175
|
const cred = r.data?.credential;
|
|
125
176
|
return formatResult({
|
|
@@ -144,11 +195,16 @@ export function registerCredentialTools(server) {
|
|
|
144
195
|
'Examples: {"name":"Renamed"}, {"auth_data":{"api_key":"newkey"}}, ' +
|
|
145
196
|
'{"oauth_token_expires_at":"2026-12-31T00:00:00Z"}'),
|
|
146
197
|
},
|
|
147
|
-
annotations: mutating(),
|
|
198
|
+
annotations: mutating({ title: "Update Credential", openWorld: true }),
|
|
148
199
|
}, async ({ id, patch }) => {
|
|
149
200
|
const r = await request(`/credentials/${encodeURIComponent(id)}`, { method: "PUT", body: JSON.stringify(patch) }, { sanitize: true });
|
|
150
201
|
if (!r.success) {
|
|
151
|
-
return
|
|
202
|
+
return errorResult({
|
|
203
|
+
message: r.error ?? "credential update failed",
|
|
204
|
+
code: r.errorCode ?? (r.status ? String(r.status) : undefined),
|
|
205
|
+
suggestion: hintFor(r.errorCode),
|
|
206
|
+
details: { id },
|
|
207
|
+
});
|
|
152
208
|
}
|
|
153
209
|
const cred = r.data?.credential;
|
|
154
210
|
return formatResult({
|
|
@@ -172,10 +228,13 @@ export function registerCredentialTools(server) {
|
|
|
172
228
|
.default(false)
|
|
173
229
|
.describe("Must be true to execute. On confirm:false, returns a preview."),
|
|
174
230
|
},
|
|
175
|
-
annotations: destructive(),
|
|
231
|
+
annotations: destructive({ title: "Delete Credential", openWorld: true }),
|
|
176
232
|
}, async ({ id, confirm }) => {
|
|
177
233
|
if (!confirm) {
|
|
178
|
-
// Preview: fetch metadata for informed confirmation.
|
|
234
|
+
// Preview: fetch metadata for informed confirmation. Stays on
|
|
235
|
+
// formatResult — the Wave-2A pin tests consume this preview via a
|
|
236
|
+
// raw JSON.parse of content[0].text; a structured builder would
|
|
237
|
+
// append the structured-meta marker and break that contract.
|
|
179
238
|
const preview = await request(`/credentials/${encodeURIComponent(id)}`, {}, { sanitize: true });
|
|
180
239
|
// Guard explicitly on preview.success — the previous type-narrowing
|
|
181
240
|
// was unsound (cast to Credential | undefined relied on `cred` being
|
|
@@ -202,7 +261,12 @@ export function registerCredentialTools(server) {
|
|
|
202
261
|
}
|
|
203
262
|
const r = await request(`/credentials/${encodeURIComponent(id)}`, { method: "DELETE" });
|
|
204
263
|
if (!r.success) {
|
|
205
|
-
return
|
|
264
|
+
return errorResult({
|
|
265
|
+
message: r.error ?? "credential delete failed",
|
|
266
|
+
code: r.errorCode ?? (r.status ? String(r.status) : undefined),
|
|
267
|
+
suggestion: hintFor(r.errorCode),
|
|
268
|
+
details: { id },
|
|
269
|
+
});
|
|
206
270
|
}
|
|
207
271
|
return formatResult({ deleted: true, id }, false, { maxChars: 1500 });
|
|
208
272
|
});
|
|
@@ -216,7 +280,7 @@ export function registerCredentialTools(server) {
|
|
|
216
280
|
connection_id: z.string().describe("Connection ID. Use apimapper_connection_list."),
|
|
217
281
|
credential_id: z.string().describe("Credential ID. Use apimapper_credential_list."),
|
|
218
282
|
},
|
|
219
|
-
annotations: mutating(),
|
|
283
|
+
annotations: mutating({ title: "Link Credential", openWorld: true }),
|
|
220
284
|
}, async ({ connection_id, credential_id }) => {
|
|
221
285
|
// Connection wire = snake_case (verified vs ConnectionProbeCore.php:89).
|
|
222
286
|
// PHP fromControllerResponse(_, 'connection') → {success, connection:{…}}.
|
|
@@ -228,16 +292,14 @@ export function registerCredentialTools(server) {
|
|
|
228
292
|
body: JSON.stringify({ credential_id }),
|
|
229
293
|
}, { unwrapInnerSuccess: true });
|
|
230
294
|
if (!r.success) {
|
|
231
|
-
return
|
|
232
|
-
|
|
233
|
-
|
|
234
|
-
|
|
235
|
-
payloadFailed: r.payloadFailed,
|
|
236
|
-
context: { connection_id, credential_id },
|
|
237
|
-
hint: r.payloadFailed
|
|
295
|
+
return errorResult({
|
|
296
|
+
message: r.error ?? "credential link failed",
|
|
297
|
+
code: r.errorCode ?? (r.status ? String(r.status) : undefined),
|
|
298
|
+
suggestion: r.payloadFailed
|
|
238
299
|
? "Connection update returned success:false — verify the connection_id exists and credential_id is valid."
|
|
239
300
|
: hintFor(r.errorCode),
|
|
240
|
-
|
|
301
|
+
details: { connection_id, credential_id, payloadFailed: r.payloadFailed },
|
|
302
|
+
});
|
|
241
303
|
}
|
|
242
304
|
const conn = r.data && typeof r.data === "object" && "connection" in r.data
|
|
243
305
|
? r.data.connection
|
|
@@ -261,19 +323,88 @@ export function registerCredentialTools(server) {
|
|
|
261
323
|
title: "Begin OAuth2 Authorize Flow",
|
|
262
324
|
description: "Initiate the OAuth2 authorization-code flow for a credential. Returns the upstream " +
|
|
263
325
|
"authorize URL the user must visit in a browser to grant consent. " +
|
|
264
|
-
"After consent: call apimapper_credential_get to verify the credential was populated." +
|
|
265
|
-
"
|
|
326
|
+
"After consent: call apimapper_credential_get to verify the credential was populated. " +
|
|
327
|
+
"If `credential_id` is omitted, supply `provider` to scope the lookup — when exactly " +
|
|
328
|
+
"one OAuth credential matches it is used automatically; when several match the user " +
|
|
329
|
+
"is asked to pick." +
|
|
330
|
+
"\n\nExample:\n apimapper_oauth_authorize_begin({ credential_id: 'cred_google_drive' })\n" +
|
|
331
|
+
" apimapper_oauth_authorize_begin({ provider: 'google' }) // resolves by provider",
|
|
266
332
|
inputSchema: {
|
|
267
333
|
credential_id: z
|
|
268
334
|
.string()
|
|
269
|
-
.
|
|
335
|
+
.optional()
|
|
336
|
+
.describe("Credential ID (must be type oauth2_code). Use apimapper_credential_list. " +
|
|
337
|
+
"Omit to resolve by `provider` instead."),
|
|
338
|
+
provider: z
|
|
339
|
+
.string()
|
|
340
|
+
.optional()
|
|
341
|
+
.describe('OAuth provider slug to resolve the credential when `credential_id` is omitted ' +
|
|
342
|
+
'(e.g., "google", "meta"). Match is case-insensitive against the credential\'s ' +
|
|
343
|
+
"oauth_provider / provider field."),
|
|
270
344
|
scopes: z
|
|
271
345
|
.array(z.string())
|
|
272
346
|
.optional()
|
|
273
347
|
.describe('Override scopes (e.g., ["https://www.googleapis.com/auth/spreadsheets.readonly"])'),
|
|
274
348
|
},
|
|
275
|
-
annotations: creating(),
|
|
276
|
-
}, async ({ credential_id, scopes }) => {
|
|
349
|
+
annotations: creating({ title: "Begin OAuth Authorization", openWorld: true }),
|
|
350
|
+
}, async ({ credential_id, provider, scopes }) => {
|
|
351
|
+
// W3.6 — resolve the credential when `credential_id` is omitted.
|
|
352
|
+
// Exactly 1 OAuth credential matching `provider` → auto-pick;
|
|
353
|
+
// >1 → elicitChoice; 0 → structured error; elicitChoice null
|
|
354
|
+
// (unsupported client / declined) → structured candidate-list error.
|
|
355
|
+
let resolvedCredentialId = credential_id;
|
|
356
|
+
if (!resolvedCredentialId) {
|
|
357
|
+
const lr = await request("/credentials", {}, { sanitize: true });
|
|
358
|
+
if (!lr.success) {
|
|
359
|
+
return errorResult({
|
|
360
|
+
message: lr.error ?? "credential lookup failed",
|
|
361
|
+
code: lr.errorCode ?? (lr.status ? String(lr.status) : undefined),
|
|
362
|
+
suggestion: hintFor(lr.errorCode),
|
|
363
|
+
details: { provider },
|
|
364
|
+
});
|
|
365
|
+
}
|
|
366
|
+
const all = Array.isArray(lr.data?.credentials) ? lr.data.credentials : [];
|
|
367
|
+
// OAuth authorize-code flow only applies to oauth2_code credentials.
|
|
368
|
+
const oauthCreds = all.filter((c) => c.auth_type === "oauth2_code");
|
|
369
|
+
const matches = provider
|
|
370
|
+
? oauthCreds.filter((c) => credentialProvider(c)?.toLowerCase() === provider.toLowerCase())
|
|
371
|
+
: oauthCreds;
|
|
372
|
+
if (matches.length === 0) {
|
|
373
|
+
return errorResult({
|
|
374
|
+
message: provider
|
|
375
|
+
? `No oauth2_code credential matches provider "${provider}".`
|
|
376
|
+
: "No oauth2_code credential found.",
|
|
377
|
+
code: "credential_not_found",
|
|
378
|
+
suggestion: "Create one with apimapper_credential_create (auth_type: 'oauth2_code'), " +
|
|
379
|
+
"or pass an explicit `credential_id`.",
|
|
380
|
+
details: { provider },
|
|
381
|
+
});
|
|
382
|
+
}
|
|
383
|
+
if (matches.length === 1) {
|
|
384
|
+
resolvedCredentialId = matches[0].id;
|
|
385
|
+
}
|
|
386
|
+
else {
|
|
387
|
+
const candidates = matches.map((c) => ({
|
|
388
|
+
id: c.id,
|
|
389
|
+
label: c.name,
|
|
390
|
+
}));
|
|
391
|
+
const picked = elicitation
|
|
392
|
+
? await elicitChoice(elicitation, provider
|
|
393
|
+
? `Several "${provider}" OAuth credentials exist. Pick the one to authorize.`
|
|
394
|
+
: "Several OAuth credentials exist. Pick the one to authorize.", candidates.map((c) => c.id))
|
|
395
|
+
: null;
|
|
396
|
+
if (picked === null) {
|
|
397
|
+
return ambiguityFallbackError({
|
|
398
|
+
code: "credential_ambiguous",
|
|
399
|
+
paramName: "credential_id",
|
|
400
|
+
what: "OAuth credentials",
|
|
401
|
+
candidates,
|
|
402
|
+
extraDetails: { provider },
|
|
403
|
+
});
|
|
404
|
+
}
|
|
405
|
+
resolvedCredentialId = picked;
|
|
406
|
+
}
|
|
407
|
+
}
|
|
277
408
|
// Wire-key alignment with PHP OAuthController (audit F-A3-01 + F-A3-02):
|
|
278
409
|
// - Request: PHP reads `existing_credential_id` (not `credential_id`).
|
|
279
410
|
// Wave 1B accepted both, but sending the canonical key directly is
|
|
@@ -284,17 +415,67 @@ export function registerCredentialTools(server) {
|
|
|
284
415
|
// before or after the alias ships.
|
|
285
416
|
const r = await request("/oauth/authorize", {
|
|
286
417
|
method: "POST",
|
|
287
|
-
body: JSON.stringify({ existing_credential_id:
|
|
418
|
+
body: JSON.stringify({ existing_credential_id: resolvedCredentialId, scopes }),
|
|
288
419
|
});
|
|
289
420
|
if (!r.success) {
|
|
290
|
-
return
|
|
421
|
+
return errorResult({
|
|
422
|
+
message: r.error ?? "oauth authorize failed",
|
|
423
|
+
code: r.errorCode ?? (r.status ? String(r.status) : undefined),
|
|
424
|
+
suggestion: hintFor(r.errorCode),
|
|
425
|
+
details: { credential_id: resolvedCredentialId },
|
|
426
|
+
});
|
|
291
427
|
}
|
|
292
428
|
const authorizeUrl = r.data?.authorize_url ?? r.data?.authorization_url;
|
|
293
|
-
|
|
294
|
-
|
|
295
|
-
|
|
296
|
-
|
|
297
|
-
|
|
429
|
+
// F-7.1 (Pass-1 consolidation) — terminal URL UX.
|
|
430
|
+
//
|
|
431
|
+
// Thomas live-smoked the bug: Claude Code rendered the authorize URL
|
|
432
|
+
// inside a JSON.stringify(_, null, 2) payload, so triple-click
|
|
433
|
+
// copied the indented text and the URL pasted into the browser with
|
|
434
|
+
// line-breaks + leading whitespace.
|
|
435
|
+
//
|
|
436
|
+
// Best-practice consensus (see citations below) is to surface the
|
|
437
|
+
// URL as BARE text on its own line:
|
|
438
|
+
// - URL alone on its own line, no leading whitespace, no trailing
|
|
439
|
+
// punctuation.
|
|
440
|
+
// - Blank lines above + below so triple-click selects only the URL.
|
|
441
|
+
// - NO markdown link wrap `[label](url)` — claude-code#30162
|
|
442
|
+
// anti-pattern (masks URL, breaks copy).
|
|
443
|
+
// - NO fenced code block around the URL — terminal URL-detectors
|
|
444
|
+
// are inconsistent inside ```.
|
|
445
|
+
// - NO JSON-pretty-print around the URL — that's the bug.
|
|
446
|
+
// - NO server-emitted OSC-8 escape — Claude Code auto-wraps bare
|
|
447
|
+
// URLs (claude-code#13008); double-wrap is broken, and Warp /
|
|
448
|
+
// macOS Terminal / tmux+Claude Code paths have no OSC-8 fallback
|
|
449
|
+
// (claude-code#27047, Warp#6393).
|
|
450
|
+
// - structuredContent still carries the URL + state + credential_id
|
|
451
|
+
// for programmatic consumers (MCP spec 2025-06-18 — structured
|
|
452
|
+
// JSON mirror alongside text content).
|
|
453
|
+
//
|
|
454
|
+
// Citations: MCP spec 2025-06-18 server/tools section; claude-code
|
|
455
|
+
// issues #13008, #30162, #27047; Warp#6393; Notion MCP plain-URL
|
|
456
|
+
// pattern (github.com/makenotion/notion-mcp-server).
|
|
457
|
+
const lines = [
|
|
458
|
+
"Open this URL in your browser to authorize the credential:",
|
|
459
|
+
"",
|
|
460
|
+
authorizeUrl ?? "(no authorize URL returned)",
|
|
461
|
+
"",
|
|
462
|
+
`After approval, call apimapper_credential_get({ id: "${resolvedCredentialId}" }) to verify the credential was populated.`,
|
|
463
|
+
];
|
|
464
|
+
if (r.data?.state) {
|
|
465
|
+
lines.push("", `State: ${r.data.state}`);
|
|
466
|
+
}
|
|
467
|
+
if (scopes && scopes.length > 0) {
|
|
468
|
+
lines.push(`Scopes: ${scopes.join(", ")}`);
|
|
469
|
+
}
|
|
470
|
+
return {
|
|
471
|
+
content: [{ type: "text", text: lines.join("\n") }],
|
|
472
|
+
structuredContent: {
|
|
473
|
+
authorize_url: authorizeUrl,
|
|
474
|
+
credential_id: resolvedCredentialId,
|
|
475
|
+
state: r.data?.state,
|
|
476
|
+
...(scopes && scopes.length > 0 ? { scopes } : {}),
|
|
477
|
+
},
|
|
478
|
+
};
|
|
298
479
|
});
|
|
299
480
|
}
|
|
300
481
|
//# sourceMappingURL=credentials.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"credentials.js","sourceRoot":"","sources":["../../../src/modules/apimapper/credentials.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"credentials.js","sourceRoot":"","sources":["../../../src/modules/apimapper/credentials.ts"],"names":[],"mappings":"AAAA,uEAAuE;AACvE,EAAE;AACF,4EAA4E;AAC5E,2EAA2E;AAC3E,uEAAuE;AACvE,8DAA8D;AAC9D,EAAE;AACF,4EAA4E;AAC5E,mEAAmE;AACnE,qEAAqE;AACrE,0EAA0E;AAC1E,2EAA2E;AAC3E,mEAAmE;AACnE,EAAE;AACF,0EAA0E;AAC1E,0EAA0E;AAC1E,uEAAuE;AACvE,aAAa;AACb,sEAAsE;AACtE,0EAA0E;AAC1E,4EAA4E;AAC5E,qEAAqE;AACrE,iEAAiE;AACjE,4EAA4E;AAC5E,oEAAoE;AACpE,wEAAwE;AACxE,2EAA2E;AAC3E,uEAAuE;AACvE,4EAA4E;AAC5E,mEAAmE;AACnE,6BAA6B;AAG7B,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EACL,YAAY,EACZ,WAAW,EACX,WAAW,EACX,QAAQ,EACR,QAAQ,EACR,QAAQ,EACR,WAAW,EACX,YAAY,GACb,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,aAAa,CAAC;AAE/C,OAAO,EAAE,MAAM,EAAE,MAAM,YAAY,CAAC;AACpC,OAAO,EACL,wBAAwB,EACxB,0BAA0B,EAC1B,0BAA0B,EAC1B,gBAAgB,EAChB,oBAAoB,EACpB,qBAAqB,GACtB,MAAM,yBAAyB,CAAC;AACjC,OAAO,EACL,sBAAsB,GAGvB,MAAM,kBAAkB,CAAC;AAE1B,mFAAmF;AACnF,SAAS,kBAAkB,CAAC,CAAa;IACvC,OAAO,CAAC,CAAC,cAAc,IAAI,CAAC,CAAC,QAAQ,IAAI,SAAS,CAAC;AACrD,CAAC;AAED;;;;;;;;GAQG;AACH,MAAM,UAAU,uBAAuB,CACrC,MAAqB,EACrB,WAAsC;IAEtC,sEAAsE;IACtE,MAAM,CAAC,YAAY,CACjB,2BAA2B,EAC3B;QACE,KAAK,EAAE,kBAAkB;QACzB,4DAA4D;QAC5D,+DAA+D;QAC/D,0DAA0D;QAC1D,+DAA+D;QAC/D,uCAAuC;QACvC,WAAW,EACT,6DAA6D;YAC7D,sFAAsF;YACtF,0FAA0F;YAC1F,+DAA+D;YAC/D,kEAAkE;YAClE,6EAA6E;YAC7E,iFAAiF;QACnF,WAAW,EAAE;YACX,SAAS,EAAE,CAAC;iBACT,IAAI,CAAC,CAAC,SAAS,EAAE,QAAQ,EAAE,YAAY,EAAE,aAAa,EAAE,WAAW,EAAE,KAAK,CAAC,CAAC;iBAC5E,OAAO,CAAC,KAAK,CAAC;iBACd,QAAQ,CACP,uLAAuL,CACxL;SACJ;QACD,WAAW,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,kBAAkB,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC;KACtE,EACD,KAAK,EAAE,EAAE,SAAS,EAAE,EAAE,EAAE;QACtB,MAAM,CAAC,GAAG,MAAM,OAAO,CAAgC,cAAc,EAAE,EAAE,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC;QAC/F,IAAI,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC;YACf,OAAO,WAAW,CAAC;gBACjB,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,wBAAwB;gBAC5C,IAAI,EAAE,CAAC,CAAC,SAAS,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;gBAC9D,UAAU,EAAE,OAAO,CAAC,CAAC,CAAC,SAAS,CAAC;gBAChC,OAAO,EAAE,EAAE,SAAS,EAAE;aACvB,CAAC,CAAC;QACL,CAAC;QACD,MAAM,GAAG,GAAG,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,EAAE,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE,CAAC;QACzE,MAAM,KAAK,GAAG,SAAS,KAAK,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,SAAS,KAAK,SAAS,CAAC,CAAC;QACvF,wEAAwE;QACxE,wEAAwE;QACxE,mEAAmE;QACnE,yCAAyC;QACzC,qEAAqE;QACrE,qEAAqE;QACrE,oDAAoD;QACpD,OAAO,WAAW,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE;YAChC,OAAO,EAAE,wBAAwB;YACjC,cAAc,EAAE,0BAA0B;YAC1C,GAAG,EAAE,gBAAgB;YACrB,UAAU,EAAE,oBAAoB;YAChC,MAAM,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,cAAc;YACjC,MAAM,EAAE,0BAA0B;SACnC,CAAC,CAAC;IACL,CAAC,CACF,CAAC;IAEF,sEAAsE;IACtE,MAAM,CAAC,YAAY,CACjB,0BAA0B,EAC1B;QACE,KAAK,EAAE,4BAA4B;QACnC,WAAW,EACT,gFAAgF;YAChF,0EAA0E;YAC1E,mCAAmC;YACnC,qEAAqE;QACvE,WAAW,EAAE;YACX,EAAE,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,6EAA6E,CAAC;SACvG;QACD,WAAW,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,gBAAgB,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC;KACpE,EACD,KAAK,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE;QACf,MAAM,CAAC,GAAG,MAAM,OAAO,CACrB,gBAAgB,kBAAkB,CAAC,EAAE,CAAC,EAAE,EACxC,EAAE,EACF,EAAE,QAAQ,EAAE,IAAI,EAAE,CACnB,CAAC;QACF,IAAI,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC;YACf,OAAO,WAAW,CAAC;gBACjB,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,uBAAuB;gBAC3C,IAAI,EAAE,CAAC,CAAC,SAAS,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;gBAC9D,UAAU,EAAE,OAAO,CAAC,CAAC,CAAC,SAAS,CAAC;gBAChC,OAAO,EAAE,EAAE,EAAE,EAAE;aAChB,CAAC,CAAC;QACL,CAAC;QACD,wEAAwE;QACxE,MAAM,IAAI,GACR,CAAC,CAAC,IAAI,IAAI,OAAO,CAAC,CAAC,IAAI,KAAK,QAAQ,IAAI,YAAY,IAAI,CAAC,CAAC,IAAI;YAC5D,CAAC,CAAE,CAAC,CAAC,IAAmC,CAAC,UAAU;YACnD,CAAC,CAAE,CAAC,CAAC,IAAmB,CAAC;QAC7B,IAAI,CAAC,IAAI,IAAI,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAC5C,OAAO,WAAW,CAAC;gBACjB,OAAO,EAAE,sBAAsB;gBAC/B,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,WAAW;gBAC/C,UAAU,EAAE,OAAO,CAAC,WAAW,CAAC;gBAChC,OAAO,EAAE,EAAE,EAAE,EAAE;aAChB,CAAC,CAAC;QACL,CAAC;QACD,mEAAmE;QACnE,uEAAuE;QACvE,sEAAsE;QACtE,wEAAwE;QACxE,qEAAqE;QACrE,OAAO,qBAAqB,CAAC,EAAE,EAAE,IAAI,CAAC,CAAC;IACzC,CAAC,CACF,CAAC;IAEF,sEAAsE;IACtE,MAAM,CAAC,YAAY,CACjB,6BAA6B,EAC7B;QACE,KAAK,EAAE,mBAAmB;QAC1B,WAAW,EACT,8DAA8D;YAC9D,2EAA2E;YAC3E,sIAAsI;QACxI,WAAW,EAAE;YACX,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,iDAAiD,CAAC;YACnF,SAAS,EAAE,CAAC;iBACT,IAAI,CAAC,CAAC,SAAS,EAAE,QAAQ,EAAE,YAAY,EAAE,aAAa,EAAE,WAAW,CAAC,CAAC;iBACrE,QAAQ,CAAC,iDAAiD,CAAC;YAC9D,SAAS,EAAE,CAAC;iBACT,MAAM,CAAC,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC;iBAC/B,QAAQ,CACP,+CAA+C;gBAC7C,8BAA8B;gBAC9B,2BAA2B;gBAC3B,mDAAmD;gBACnD,uGAAuG,CAC1G;YACH,cAAc,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,iEAAiE,CAAC;YACjH,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,4DAA4D,CAAC;YACtG,sBAAsB,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,yDAAyD,CAAC;SAClH;QACD,WAAW,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,mBAAmB,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC;KACvE,EACD,KAAK,EAAE,KAAK,EAAE,EAAE;QACd,MAAM,CAAC,GAAG,MAAM,OAAO,CACrB,cAAc,EACd,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,EAAE,EAC/C,EAAE,QAAQ,EAAE,IAAI,EAAE,CACnB,CAAC;QACF,IAAI,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC;YACf,OAAO,WAAW,CAAC;gBACjB,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,0BAA0B;gBAC9C,IAAI,EAAE,CAAC,CAAC,SAAS,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;gBAC9D,UAAU,EAAE,OAAO,CAAC,CAAC,CAAC,SAAS,CAAC;gBAChC,OAAO,EAAE,EAAE,IAAI,EAAE,KAAK,CAAC,IAAI,EAAE,SAAS,EAAE,KAAK,CAAC,SAAS,EAAE;aAC1D,CAAC,CAAC;QACL,CAAC;QACD,MAAM,IAAI,GAAG,CAAC,CAAC,IAAI,EAAE,UAAU,CAAC;QAChC,OAAO,YAAY,CACjB;YACE,OAAO,EAAE,IAAI;YACb,EAAE,EAAE,IAAI,EAAE,EAAE;YACZ,IAAI,EAAE,IAAI,EAAE,IAAI;YAChB,SAAS,EAAE,IAAI,EAAE,SAAS;YAC1B,IAAI,EAAE,+CAA+C;SACtD,EACD,KAAK,EACL,EAAE,QAAQ,EAAE,IAAI,EAAE,CACnB,CAAC;IACJ,CAAC,CACF,CAAC;IAEF,sEAAsE;IACtE,MAAM,CAAC,YAAY,CACjB,6BAA6B,EAC7B;QACE,KAAK,EAAE,mBAAmB;QAC1B,WAAW,EACT,8EAA8E;YAC9E,mCAAmC;YACnC,0GAA0G;QAC5G,WAAW,EAAE;YACX,EAAE,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,uDAAuD,CAAC;YAChF,KAAK,EAAE,CAAC;iBACL,MAAM,CAAC,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC;iBAC/B,QAAQ,CACP,sCAAsC;gBACpC,oEAAoE;gBACpE,mDAAmD,CACtD;SACJ;QACD,WAAW,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,mBAAmB,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC;KACvE,EACD,KAAK,EAAE,EAAE,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE;QACtB,MAAM,CAAC,GAAG,MAAM,OAAO,CACrB,gBAAgB,kBAAkB,CAAC,EAAE,CAAC,EAAE,EACxC,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,EAAE,EAC9C,EAAE,QAAQ,EAAE,IAAI,EAAE,CACnB,CAAC;QACF,IAAI,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC;YACf,OAAO,WAAW,CAAC;gBACjB,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,0BAA0B;gBAC9C,IAAI,EAAE,CAAC,CAAC,SAAS,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;gBAC9D,UAAU,EAAE,OAAO,CAAC,CAAC,CAAC,SAAS,CAAC;gBAChC,OAAO,EAAE,EAAE,EAAE,EAAE;aAChB,CAAC,CAAC;QACL,CAAC;QACD,MAAM,IAAI,GAAG,CAAC,CAAC,IAAI,EAAE,UAAU,CAAC;QAChC,OAAO,YAAY,CACjB;YACE,OAAO,EAAE,IAAI;YACb,EAAE,EAAE,IAAI,EAAE,EAAE;YACZ,IAAI,EAAE,IAAI,EAAE,IAAI;YAChB,SAAS,EAAE,IAAI,EAAE,SAAS;YAC1B,IAAI,EAAE,+DAA+D;SACtE,EACD,KAAK,EACL,EAAE,QAAQ,EAAE,IAAI,EAAE,CACnB,CAAC;IACJ,CAAC,CACF,CAAC;IAEF,sEAAsE;IACtE,MAAM,CAAC,YAAY,CACjB,6BAA6B,EAC7B;QACE,KAAK,EAAE,mBAAmB;QAC1B,WAAW,EACT,2EAA2E;YAC3E,iGAAiG;YACjG,wFAAwF;QAC1F,WAAW,EAAE;YACX,EAAE,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,uDAAuD,CAAC;YAChF,OAAO,EAAE,CAAC;iBACP,OAAO,EAAE;iBACT,OAAO,CAAC,KAAK,CAAC;iBACd,QAAQ,CAAC,+DAA+D,CAAC;SAC7E;QACD,WAAW,EAAE,WAAW,CAAC,EAAE,KAAK,EAAE,mBAAmB,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC;KAC1E,EACD,KAAK,EAAE,EAAE,EAAE,EAAE,OAAO,EAAE,EAAE,EAAE;QACxB,IAAI,CAAC,OAAO,EAAE,CAAC;YACb,8DAA8D;YAC9D,kEAAkE;YAClE,gEAAgE;YAChE,6DAA6D;YAC7D,MAAM,OAAO,GAAG,MAAM,OAAO,CAC3B,gBAAgB,kBAAkB,CAAC,EAAE,CAAC,EAAE,EACxC,EAAE,EACF,EAAE,QAAQ,EAAE,IAAI,EAAE,CACnB,CAAC;YACF,oEAAoE;YACpE,qEAAqE;YACrE,qCAAqC;YACrC,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC;gBACrB,OAAO,YAAY,CAAC;oBAClB,OAAO,EAAE,IAAI;oBACb,OAAO,EAAE,yFAAyF;oBAClG,MAAM,EAAE,EAAE,EAAE,EAAE,IAAI,EAAE,sCAAsC,EAAE;oBAC5D,WAAW,EAAE,0DAA0D;iBACxE,CAAC,CAAC;YACL,CAAC;YACD,MAAM,IAAI,GACR,OAAO,CAAC,IAAI,IAAI,OAAO,OAAO,CAAC,IAAI,KAAK,QAAQ,IAAI,YAAY,IAAI,OAAO,CAAC,IAAI;gBAC9E,CAAC,CAAE,OAAO,CAAC,IAAmC,CAAC,UAAU;gBACzD,CAAC,CAAE,OAAO,CAAC,IAA+B,CAAC;YAC/C,OAAO,YAAY,CAAC;gBAClB,OAAO,EAAE,IAAI;gBACb,OAAO,EAAE,yFAAyF;gBAClG,MAAM,EAAE,IAAI;oBACV,CAAC,CAAC,EAAE,EAAE,EAAE,IAAI,CAAC,EAAE,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,SAAS,EAAE,IAAI,CAAC,SAAS,EAAE,QAAQ,EAAE,IAAI,CAAC,cAAc,IAAI,IAAI,CAAC,QAAQ,EAAE;oBAC7G,CAAC,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,sCAAsC,EAAE;gBACxD,WAAW,EAAE,0DAA0D;aACxE,CAAC,CAAC;QACL,CAAC;QACD,MAAM,CAAC,GAAG,MAAM,OAAO,CAAC,gBAAgB,kBAAkB,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC,CAAC;QACxF,IAAI,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC;YACf,OAAO,WAAW,CAAC;gBACjB,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,0BAA0B;gBAC9C,IAAI,EAAE,CAAC,CAAC,SAAS,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;gBAC9D,UAAU,EAAE,OAAO,CAAC,CAAC,CAAC,SAAS,CAAC;gBAChC,OAAO,EAAE,EAAE,EAAE,EAAE;aAChB,CAAC,CAAC;QACL,CAAC;QACD,OAAO,YAAY,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,EAAE,EAAE,EAAE,KAAK,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC;IACxE,CAAC,CACF,CAAC;IAEF,sEAAsE;IACtE,MAAM,CAAC,YAAY,CACjB,2BAA2B,EAC3B;QACE,KAAK,EAAE,+BAA+B;QACtC,WAAW,EACT,kEAAkE;YAClE,+EAA+E;YAC/E,8GAA8G;QAChH,WAAW,EAAE;YACX,aAAa,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,+CAA+C,CAAC;YACnF,aAAa,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,+CAA+C,CAAC;SACpF;QACD,WAAW,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,iBAAiB,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC;KACrE,EACD,KAAK,EAAE,EAAE,aAAa,EAAE,aAAa,EAAE,EAAE,EAAE;QACzC,yEAAyE;QACzE,2EAA2E;QAC3E,iEAAiE;QACjE,uEAAuE;QACvE,2CAA2C;QAC3C,MAAM,CAAC,GAAG,MAAM,OAAO,CACrB,gBAAgB,kBAAkB,CAAC,aAAa,CAAC,EAAE,EACnD;YACE,MAAM,EAAE,KAAK;YACb,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE,aAAa,EAAE,CAAC;SACxC,EACD,EAAE,kBAAkB,EAAE,IAAI,EAAE,CAC7B,CAAC;QACF,IAAI,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC;YACf,OAAO,WAAW,CAAC;gBACjB,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,wBAAwB;gBAC5C,IAAI,EAAE,CAAC,CAAC,SAAS,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;gBAC9D,UAAU,EAAE,CAAC,CAAC,aAAa;oBACzB,CAAC,CAAC,wGAAwG;oBAC1G,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,SAAS,CAAC;gBACxB,OAAO,EAAE,EAAE,aAAa,EAAE,aAAa,EAAE,aAAa,EAAE,CAAC,CAAC,aAAa,EAAE;aAC1E,CAAC,CAAC;QACL,CAAC;QACD,MAAM,IAAI,GAAG,CAAC,CAAC,IAAI,IAAI,OAAO,CAAC,CAAC,IAAI,KAAK,QAAQ,IAAI,YAAY,IAAI,CAAC,CAAC,IAAI;YACzE,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,UAAU;YACnB,CAAC,CAAC,SAAS,CAAC;QACd,MAAM,kBAAkB,GACtB,IAAI,IAAI,OAAO,IAAI,KAAK,QAAQ,IAAI,eAAe,IAAI,IAAI;YACzD,CAAC,CAAE,IAAmC,CAAC,aAAa;YACpD,CAAC,CAAC,SAAS,CAAC;QAChB,MAAM,QAAQ,GAAG,kBAAkB,KAAK,aAAa,CAAC;QACtD,OAAO,YAAY,CACjB;YACE,MAAM,EAAE,IAAI;YACZ,aAAa;YACb,aAAa;YACb,QAAQ;YACR,IAAI,EAAE,QAAQ;gBACZ,CAAC,CAAC,SAAS;gBACX,CAAC,CAAC,oGAAoG;SACzG,EACD,KAAK,EACL,EAAE,QAAQ,EAAE,IAAI,EAAE,CACnB,CAAC;IACJ,CAAC,CACF,CAAC;IAEF,sEAAsE;IACtE,MAAM,CAAC,YAAY,CACjB,iCAAiC,EACjC;QACE,KAAK,EAAE,6BAA6B;QACpC,WAAW,EACT,qFAAqF;YACrF,mEAAmE;YACnE,uFAAuF;YACvF,sFAAsF;YACtF,qFAAqF;YACrF,mBAAmB;YACnB,2FAA2F;YAC3F,oFAAoF;QACtF,WAAW,EAAE;YACX,aAAa,EAAE,CAAC;iBACb,MAAM,EAAE;iBACR,QAAQ,EAAE;iBACV,QAAQ,CACP,2EAA2E;gBACzE,wCAAwC,CAC3C;YACH,QAAQ,EAAE,CAAC;iBACR,MAAM,EAAE;iBACR,QAAQ,EAAE;iBACV,QAAQ,CACP,gFAAgF;gBAC9E,gFAAgF;gBAChF,kCAAkC,CACrC;YACH,MAAM,EAAE,CAAC;iBACN,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC;iBACjB,QAAQ,EAAE;iBACV,QAAQ,CAAC,mFAAmF,CAAC;SACjG;QACD,WAAW,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,2BAA2B,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC;KAC/E,EACD,KAAK,EAAE,EAAE,aAAa,EAAE,QAAQ,EAAE,MAAM,EAAE,EAAE,EAAE;QAC5C,iEAAiE;QACjE,8DAA8D;QAC9D,6DAA6D;QAC7D,qEAAqE;QACrE,IAAI,oBAAoB,GAAG,aAAa,CAAC;QACzC,IAAI,CAAC,oBAAoB,EAAE,CAAC;YAC1B,MAAM,EAAE,GAAG,MAAM,OAAO,CACtB,cAAc,EACd,EAAE,EACF,EAAE,QAAQ,EAAE,IAAI,EAAE,CACnB,CAAC;YACF,IAAI,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC;gBAChB,OAAO,WAAW,CAAC;oBACjB,OAAO,EAAE,EAAE,CAAC,KAAK,IAAI,0BAA0B;oBAC/C,IAAI,EAAE,EAAE,CAAC,SAAS,IAAI,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;oBACjE,UAAU,EAAE,OAAO,CAAC,EAAE,CAAC,SAAS,CAAC;oBACjC,OAAO,EAAE,EAAE,QAAQ,EAAE;iBACtB,CAAC,CAAC;YACL,CAAC;YACD,MAAM,GAAG,GAAG,KAAK,CAAC,OAAO,CAAC,EAAE,CAAC,IAAI,EAAE,WAAW,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE,CAAC;YAC3E,qEAAqE;YACrE,MAAM,UAAU,GAAG,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,SAAS,KAAK,aAAa,CAAC,CAAC;YACpE,MAAM,OAAO,GAAG,QAAQ;gBACtB,CAAC,CAAC,UAAU,CAAC,MAAM,CACf,CAAC,CAAC,EAAE,EAAE,CAAC,kBAAkB,CAAC,CAAC,CAAC,EAAE,WAAW,EAAE,KAAK,QAAQ,CAAC,WAAW,EAAE,CACvE;gBACH,CAAC,CAAC,UAAU,CAAC;YACf,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;gBACzB,OAAO,WAAW,CAAC;oBACjB,OAAO,EAAE,QAAQ;wBACf,CAAC,CAAC,+CAA+C,QAAQ,IAAI;wBAC7D,CAAC,CAAC,kCAAkC;oBACtC,IAAI,EAAE,sBAAsB;oBAC5B,UAAU,EACR,0EAA0E;wBAC1E,sCAAsC;oBACxC,OAAO,EAAE,EAAE,QAAQ,EAAE;iBACtB,CAAC,CAAC;YACL,CAAC;YACD,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;gBACzB,oBAAoB,GAAG,OAAO,CAAC,CAAC,CAAE,CAAC,EAAE,CAAC;YACxC,CAAC;iBAAM,CAAC;gBACN,MAAM,UAAU,GAA2B,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;oBAC7D,EAAE,EAAE,CAAC,CAAC,EAAE;oBACR,KAAK,EAAE,CAAC,CAAC,IAAI;iBACd,CAAC,CAAC,CAAC;gBACJ,MAAM,MAAM,GAAG,WAAW;oBACxB,CAAC,CAAC,MAAM,YAAY,CAChB,WAAW,EACX,QAAQ;wBACN,CAAC,CAAC,YAAY,QAAQ,uDAAuD;wBAC7E,CAAC,CAAC,6DAA6D,EACjE,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAC5B;oBACH,CAAC,CAAC,IAAI,CAAC;gBACT,IAAI,MAAM,KAAK,IAAI,EAAE,CAAC;oBACpB,OAAO,sBAAsB,CAAC;wBAC5B,IAAI,EAAE,sBAAsB;wBAC5B,SAAS,EAAE,eAAe;wBAC1B,IAAI,EAAE,mBAAmB;wBACzB,UAAU;wBACV,YAAY,EAAE,EAAE,QAAQ,EAAE;qBAC3B,CAAC,CAAC;gBACL,CAAC;gBACD,oBAAoB,GAAG,MAAM,CAAC;YAChC,CAAC;QACH,CAAC;QAED,yEAAyE;QACzE,yEAAyE;QACzE,uEAAuE;QACvE,qCAAqC;QACrC,mEAAmE;QACnE,mEAAmE;QACnE,mEAAmE;QACnE,uCAAuC;QACvC,MAAM,CAAC,GAAG,MAAM,OAAO,CAIpB,kBAAkB,EAAE;YACrB,MAAM,EAAE,MAAM;YACd,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE,sBAAsB,EAAE,oBAAoB,EAAE,MAAM,EAAE,CAAC;SAC/E,CAAC,CAAC;QACH,IAAI,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC;YACf,OAAO,WAAW,CAAC;gBACjB,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,wBAAwB;gBAC5C,IAAI,EAAE,CAAC,CAAC,SAAS,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;gBAC9D,UAAU,EAAE,OAAO,CAAC,CAAC,CAAC,SAAS,CAAC;gBAChC,OAAO,EAAE,EAAE,aAAa,EAAE,oBAAoB,EAAE;aACjD,CAAC,CAAC;QACL,CAAC;QACD,MAAM,YAAY,GAAG,CAAC,CAAC,IAAI,EAAE,aAAa,IAAI,CAAC,CAAC,IAAI,EAAE,iBAAiB,CAAC;QACxE,kDAAkD;QAClD,EAAE;QACF,qEAAqE;QACrE,+DAA+D;QAC/D,oEAAoE;QACpE,oCAAoC;QACpC,EAAE;QACF,kEAAkE;QAClE,oCAAoC;QACpC,oEAAoE;QACpE,mBAAmB;QACnB,sEAAsE;QACtE,+DAA+D;QAC/D,6CAA6C;QAC7C,mEAAmE;QACnE,mCAAmC;QACnC,4DAA4D;QAC5D,mEAAmE;QACnE,kEAAkE;QAClE,qEAAqE;QACrE,sCAAsC;QACtC,sEAAsE;QACtE,mEAAmE;QACnE,2CAA2C;QAC3C,EAAE;QACF,mEAAmE;QACnE,iEAAiE;QACjE,qDAAqD;QACrD,MAAM,KAAK,GAAa;YACtB,4DAA4D;YAC5D,EAAE;YACF,YAAY,IAAI,6BAA6B;YAC7C,EAAE;YACF,wDAAwD,oBAAoB,8CAA8C;SAC3H,CAAC;QACF,IAAI,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,CAAC;YAClB,KAAK,CAAC,IAAI,CAAC,EAAE,EAAE,UAAU,CAAC,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC;QAC3C,CAAC;QACD,IAAI,MAAM,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAChC,KAAK,CAAC,IAAI,CAAC,WAAW,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QAC7C,CAAC;QACD,OAAO;YACL,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAe,EAAE,IAAI,EAAE,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;YAC5D,iBAAiB,EAAE;gBACjB,aAAa,EAAE,YAAY;gBAC3B,aAAa,EAAE,oBAAoB;gBACnC,KAAK,EAAE,CAAC,CAAC,IAAI,EAAE,KAAK;gBACpB,GAAG,CAAC,MAAM,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;aACnD;SACF,CAAC;IACJ,CAAC,CACF,CAAC;AACJ,CAAC"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type {
|
|
1
|
+
import type { ToolRegistrar } from "./gateway/capturing-server.js";
|
|
2
2
|
export type DiagnoseBlocker = "malformed-token" | "expired" | "phishing-risk" | "plugin-missing" | "identity-error" | "scope-too-narrow" | "capability-missing";
|
|
3
3
|
export interface DiagnoseCheck {
|
|
4
4
|
name: string;
|
|
@@ -11,8 +11,60 @@ export interface DiagnoseResult {
|
|
|
11
11
|
recommendation: string;
|
|
12
12
|
blockers: DiagnoseBlocker[];
|
|
13
13
|
}
|
|
14
|
+
/**
|
|
15
|
+
* Check whether a token's scope set covers a required scope, respecting
|
|
16
|
+
* the read ⊂ write ⊂ admin hierarchy. Returns true iff the token holds
|
|
17
|
+
* a scope that implies (or equals) the required one.
|
|
18
|
+
*
|
|
19
|
+
* @param tokenScopes - The `scope` array decoded from the token payload.
|
|
20
|
+
* @param required - The scope this caller needs (e.g. "read").
|
|
21
|
+
*/
|
|
22
|
+
export declare function hasScope(tokenScopes: readonly string[], required: string): boolean;
|
|
23
|
+
/**
|
|
24
|
+
* F-05: Hard wall-clock cap on every identity probe.
|
|
25
|
+
*
|
|
26
|
+
* Without this, a non-responsive target server can stall the diagnosis
|
|
27
|
+
* indefinitely — the setup wizard appears to hang and the user has no
|
|
28
|
+
* cancel affordance. 5 seconds is a generous-but-bounded budget: real
|
|
29
|
+
* WP/Joomla identity endpoints respond in <500ms typically; a 5s ceiling
|
|
30
|
+
* surfaces "this server isn't responding" within a UX-acceptable window.
|
|
31
|
+
*
|
|
32
|
+
* Exported for tests that may want to override or assert on the value.
|
|
33
|
+
*/
|
|
34
|
+
export declare const PROBE_TIMEOUT_MS = 5000;
|
|
35
|
+
/**
|
|
36
|
+
* Wrapper around `fetch()` that hard-binds an `AbortSignal.timeout()` to
|
|
37
|
+
* each request. Used by both WordPress and Joomla identity probes so the
|
|
38
|
+
* timeout policy is enforced in exactly one place (no DRY drift).
|
|
39
|
+
*
|
|
40
|
+
* Exported (W1.9 / F-15) so the `apimapper_health` downstream probe of
|
|
41
|
+
* api.wootsup.com can reuse the same primitive — the timeout contract is
|
|
42
|
+
* generic (URL/init/timeoutMs), not diagnose-specific, so a re-export
|
|
43
|
+
* avoids duplicating the AbortSignal.timeout wiring across files. If a
|
|
44
|
+
* future third consumer materialises, the function moves to a shared
|
|
45
|
+
* `http-utils.ts` module; today, two callers in the same module folder
|
|
46
|
+
* does not warrant a new file.
|
|
47
|
+
*
|
|
48
|
+
* If the caller passes a `signal` in `init`, it is silently overridden —
|
|
49
|
+
* the probe contract is "you get a timeout, full stop". A future caller
|
|
50
|
+
* that wants both timeout AND user-cancellation should compose signals
|
|
51
|
+
* via `AbortSignal.any([userSignal, AbortSignal.timeout(ms)])`, but that
|
|
52
|
+
* is intentionally out of scope here.
|
|
53
|
+
*
|
|
54
|
+
* On timeout the underlying fetch rejects with `DOMException("...",
|
|
55
|
+
* "TimeoutError")` (or `"AbortError"` on older runtimes). The caller is
|
|
56
|
+
* expected to narrow on `error.name` to surface a "timeout after Nms"
|
|
57
|
+
* message rather than a generic transport failure.
|
|
58
|
+
*
|
|
59
|
+
* @param url - URL to fetch.
|
|
60
|
+
* @param init - Optional RequestInit. Any `signal` field is overridden.
|
|
61
|
+
* @param timeoutMs - Timeout in milliseconds. Must be a finite, positive
|
|
62
|
+
* integer; falls back to {@link PROBE_TIMEOUT_MS} otherwise.
|
|
63
|
+
* @returns The Response on success.
|
|
64
|
+
*/
|
|
65
|
+
export declare function fetchWithTimeout(url: string, init?: RequestInit, timeoutMs?: number): Promise<Response>;
|
|
14
66
|
/**
|
|
15
67
|
* Run the full diagnosis chain. Never throws; always returns DiagnoseResult.
|
|
16
68
|
*/
|
|
17
69
|
export declare function diagnoseSite(token: string, siteUrl: string): Promise<DiagnoseResult>;
|
|
18
|
-
export declare function registerDiagnoseTool(server:
|
|
70
|
+
export declare function registerDiagnoseTool(server: ToolRegistrar): void;
|