@zackbart/connecta 0.8.0 → 0.9.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/CHANGELOG.md +128 -0
- package/README.md +31 -55
- package/SECURITY.md +5 -11
- package/dist/activity.d.ts +0 -8
- package/dist/activity.d.ts.map +1 -1
- package/dist/activity.js +0 -1
- package/dist/activity.js.map +1 -1
- package/dist/auth/bearer.d.ts +1 -7
- package/dist/auth/bearer.d.ts.map +1 -1
- package/dist/auth/bearer.js +2 -23
- package/dist/auth/bearer.js.map +1 -1
- package/dist/auth/clerk.d.ts +2 -11
- package/dist/auth/clerk.d.ts.map +1 -1
- package/dist/auth/clerk.js +31 -46
- package/dist/auth/clerk.js.map +1 -1
- package/dist/auth/downstream-oauth.d.ts +15 -6
- package/dist/auth/downstream-oauth.d.ts.map +1 -1
- package/dist/auth/downstream-oauth.js +60 -11
- package/dist/auth/downstream-oauth.js.map +1 -1
- package/dist/call-admission.d.ts.map +1 -1
- package/dist/call-admission.js +0 -1
- package/dist/call-admission.js.map +1 -1
- package/dist/catalog-service.d.ts +1 -2
- package/dist/catalog-service.d.ts.map +1 -1
- package/dist/catalog-service.js +12 -18
- package/dist/catalog-service.js.map +1 -1
- package/dist/catalog.d.ts +6 -0
- package/dist/catalog.d.ts.map +1 -1
- package/dist/catalog.js +51 -0
- package/dist/catalog.js.map +1 -1
- package/dist/connectors/remote-mcp.d.ts +1 -1
- package/dist/connectors/remote-mcp.d.ts.map +1 -1
- package/dist/connectors/remote-mcp.js +73 -71
- package/dist/connectors/remote-mcp.js.map +1 -1
- package/dist/errors.d.ts +19 -1
- package/dist/errors.d.ts.map +1 -1
- package/dist/errors.js +1 -0
- package/dist/errors.js.map +1 -1
- package/dist/execute.d.ts +4 -9
- package/dist/execute.d.ts.map +1 -1
- package/dist/execute.js +41 -20
- package/dist/execute.js.map +1 -1
- package/dist/executor-result.js +1 -1
- package/dist/executor-result.js.map +1 -1
- package/dist/index.d.ts +3 -82
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +17 -90
- package/dist/index.js.map +1 -1
- package/dist/invocation.d.ts +5 -0
- package/dist/invocation.d.ts.map +1 -1
- package/dist/invocation.js +46 -10
- package/dist/invocation.js.map +1 -1
- package/dist/meta-tools.d.ts +4 -12
- package/dist/meta-tools.d.ts.map +1 -1
- package/dist/meta-tools.js +119 -169
- package/dist/meta-tools.js.map +1 -1
- package/dist/operator-ui/generated.d.ts +2 -2
- package/dist/operator-ui/generated.d.ts.map +1 -1
- package/dist/operator-ui/generated.js +2 -2
- package/dist/operator-ui/generated.js.map +1 -1
- package/dist/operator-ui/model.d.ts +1 -22
- package/dist/operator-ui/model.d.ts.map +1 -1
- package/dist/operator-ui/model.js.map +1 -1
- package/dist/registry.d.ts +11 -178
- package/dist/registry.d.ts.map +1 -1
- package/dist/registry.js +52 -330
- package/dist/registry.js.map +1 -1
- package/dist/retired-toolkits.d.ts +3 -0
- package/dist/retired-toolkits.d.ts.map +1 -0
- package/dist/retired-toolkits.js +9 -0
- package/dist/retired-toolkits.js.map +1 -0
- package/dist/routes/activity.d.ts.map +1 -1
- package/dist/routes/activity.js +2 -5
- package/dist/routes/activity.js.map +1 -1
- package/dist/routes/credentials.d.ts.map +1 -1
- package/dist/routes/credentials.js +1 -12
- package/dist/routes/credentials.js.map +1 -1
- package/dist/routes/mcp.d.ts.map +1 -1
- package/dist/routes/mcp.js +94 -188
- package/dist/routes/mcp.js.map +1 -1
- package/dist/routes/oauth.d.ts.map +1 -1
- package/dist/routes/oauth.js +3 -8
- package/dist/routes/oauth.js.map +1 -1
- package/dist/routes/shared.d.ts +9 -30
- package/dist/routes/shared.d.ts.map +1 -1
- package/dist/routes/shared.js +10 -69
- package/dist/routes/shared.js.map +1 -1
- package/dist/routes/ui.d.ts.map +1 -1
- package/dist/routes/ui.js +4 -10
- package/dist/routes/ui.js.map +1 -1
- package/dist/server.d.ts.map +1 -1
- package/dist/server.js +1 -31
- package/dist/server.js.map +1 -1
- package/dist/skills.d.ts +3 -6
- package/dist/skills.d.ts.map +1 -1
- package/dist/skills.js +9 -38
- package/dist/skills.js.map +1 -1
- package/dist/timeout.d.ts.map +1 -1
- package/dist/timeout.js +2 -4
- package/dist/timeout.js.map +1 -1
- package/dist/types.d.ts +8 -61
- package/dist/types.d.ts.map +1 -1
- package/dist/ui.d.ts +1 -2
- package/dist/ui.d.ts.map +1 -1
- package/dist/ui.js +5 -35
- package/dist/ui.js.map +1 -1
- package/dist/version.d.ts +1 -1
- package/dist/version.js +1 -1
- package/package.json +3 -2
- package/src/activity.ts +0 -9
- package/src/auth/bearer.ts +3 -32
- package/src/auth/clerk.ts +35 -48
- package/src/auth/downstream-oauth.ts +106 -24
- package/src/call-admission.ts +0 -1
- package/src/catalog-service.ts +23 -23
- package/src/catalog.ts +55 -0
- package/src/connectors/remote-mcp.ts +106 -86
- package/src/errors.ts +22 -0
- package/src/execute.ts +43 -24
- package/src/executor-result.ts +1 -1
- package/src/index.ts +24 -208
- package/src/invocation.ts +63 -10
- package/src/meta-tools.ts +139 -187
- package/src/operator-ui/browser.css +1 -54
- package/src/operator-ui/browser.ts +16 -150
- package/src/operator-ui/generated.ts +2 -2
- package/src/operator-ui/model.ts +1 -23
- package/src/registry.ts +59 -429
- package/src/retired-toolkits.ts +14 -0
- package/src/routes/activity.ts +1 -6
- package/src/routes/credentials.ts +0 -12
- package/src/routes/mcp.ts +110 -230
- package/src/routes/oauth.ts +2 -8
- package/src/routes/shared.ts +10 -100
- package/src/routes/ui.ts +2 -12
- package/src/server.ts +1 -31
- package/src/skills.ts +9 -38
- package/src/timeout.ts +2 -4
- package/src/types.ts +11 -62
- package/src/ui.ts +9 -46
- package/src/version.ts +1 -1
- package/dist/credential-health.d.ts +0 -205
- package/dist/credential-health.d.ts.map +0 -1
- package/dist/credential-health.js +0 -610
- package/dist/credential-health.js.map +0 -1
- package/dist/toolkits.d.ts +0 -124
- package/dist/toolkits.d.ts.map +0 -1
- package/dist/toolkits.js +0 -322
- package/dist/toolkits.js.map +0 -1
- package/src/credential-health.ts +0 -835
- package/src/toolkits.ts +0 -461
package/dist/meta-tools.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"meta-tools.js","sourceRoot":"","sources":["../src/meta-tools.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"meta-tools.js","sourceRoot":"","sources":["../src/meta-tools.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
export declare const OPERATOR_UI_CSS = "/* src/operator-ui/browser.css */\n:root {\n color-scheme: light;\n --ink: #000;\n --paper: #fff;\n --rule: #ccc;\n --muted: #666;\n --trace: #f5f5f5;\n --shell: 70rem;\n --pad: 1rem;\n --gap: 1.5rem;\n --sans:\n \"Helvetica Neue\",\n Helvetica,\n Arial,\n sans-serif;\n --mono:\n ui-monospace,\n \"SF Mono\",\n Menlo,\n Monaco,\n \"Cascadia Code\",\n Consolas,\n monospace;\n}\n* {\n border-radius: 0;\n box-sizing: border-box;\n}\nhtml {\n background: var(--paper);\n color: var(--ink);\n font-family: var(--sans);\n font-size: 16px;\n line-height: 1.5;\n -webkit-font-smoothing: antialiased;\n text-rendering: optimizeLegibility;\n}\nbody {\n margin: 0;\n min-height: 100vh;\n}\n::selection {\n background: var(--ink);\n color: var(--paper);\n}\n:is(h1, h2, h3, p, ul, ol) {\n margin: 0;\n padding: 0;\n}\n:is(h1, h2, h3) {\n font-size: inherit;\n font-weight: 400;\n}\n:is(ul, ol) {\n list-style: none;\n}\na {\n color: inherit;\n}\nbutton,\ninput {\n font: inherit;\n}\nbutton {\n background: none;\n border: 0;\n color: inherit;\n cursor: pointer;\n margin: 0;\n padding: 0;\n text-align: left;\n}\nbutton:disabled {\n cursor: wait;\n opacity: .5;\n}\ninput {\n background: var(--paper);\n border: 1px solid var(--rule);\n color: var(--ink);\n min-height: 2rem;\n padding: .2rem .5rem;\n}\ninput:focus-visible {\n outline-offset: -1px;\n}\n:is(a, button, input, summary):focus-visible {\n outline: 1px solid var(--ink);\n}\n:is(a, button, summary):focus-visible {\n outline-offset: 2px;\n}\n.skip-link {\n background: var(--paper);\n left: var(--pad);\n padding: .5rem;\n position: fixed;\n top: -4rem;\n z-index: 10;\n}\n.skip-link:focus {\n top: var(--pad);\n}\n.shell {\n margin: 0 auto;\n max-width: var(--shell);\n padding-left: var(--pad);\n padding-right: var(--pad);\n}\n.pgrid {\n column-gap: var(--gap);\n display: grid;\n grid-template-columns: repeat(3, minmax(0, 1fr));\n row-gap: 1rem;\n}\n.pcap {\n grid-column: 1;\n}\n.pbody {\n grid-column: 2 / -1;\n min-width: 0;\n}\n.cap,\n.meta {\n color: var(--muted);\n font-size: .9em;\n}\n.mono {\n font-family: var(--mono);\n font-size: .78rem;\n}\n.hidden {\n display: none !important;\n}\n.visually-hidden {\n clip: rect(0 0 0 0);\n clip-path: inset(50%);\n height: 1px;\n overflow: hidden;\n position: absolute;\n white-space: nowrap;\n width: 1px;\n}\n.masthead {\n align-items: start;\n padding-bottom: var(--pad);\n padding-top: var(--pad);\n}\n.brand {\n font-weight: 500;\n grid-column: 1;\n text-decoration: none;\n}\n.mast-nav {\n display: flex;\n gap: var(--gap);\n grid-column: 2 / -1;\n justify-content: space-between;\n min-width: 0;\n}\n.mast-actions {\n display: flex;\n gap: var(--gap);\n justify-content: flex-end;\n min-width: 0;\n}\n.page-nav,\n.session-actions {\n display: flex;\n flex-wrap: wrap;\n gap: .5rem var(--gap);\n}\n.mast-actions :is(a, button) {\n align-items: center;\n display: inline-flex;\n min-height: 2rem;\n}\n.navlink,\n.linklike {\n text-decoration: underline;\n text-decoration-thickness: 1.5px;\n text-underline-offset: .22em;\n}\n.navlink {\n text-decoration-color: transparent;\n}\n.navlink:hover,\n.navlink:focus-visible,\n.navlink[aria-current=page] {\n text-decoration-color: currentColor;\n}\n.linklike {\n text-decoration-color: currentColor;\n}\n.linklike:hover,\n.linklike:focus-visible {\n text-decoration-color: transparent;\n}\n.page {\n padding-bottom: 5rem;\n}\n.lead {\n margin-top: 6rem;\n}\n.section,\n.section + .section {\n margin-top: 3rem;\n}\n.lead-copy,\n.body-copy {\n max-width: 34em;\n}\n.lead-copy > * + *,\n.body-copy > * + * {\n margin-top: 1.5rem;\n}\n.row,\n.actions {\n align-items: center;\n display: flex;\n flex-wrap: wrap;\n gap: var(--gap);\n}\n.row input {\n flex: 1;\n min-width: 12rem;\n}\n.gate-actions {\n margin-top: 1.5rem;\n}\n#err {\n margin-top: 1.5rem;\n text-decoration: underline;\n}\n.endpoint {\n border-bottom: 1px solid var(--rule);\n border-top: 1px solid var(--rule);\n}\n.endpoint-row {\n align-items: baseline;\n display: flex;\n gap: var(--gap);\n min-width: 0;\n padding: .75rem 0;\n}\n.endpoint-row code {\n flex: 1;\n min-width: 0;\n overflow-x: auto;\n white-space: nowrap;\n}\n.endpoint-row button {\n flex: none;\n}\n.connector-tools {\n border-bottom: 1px solid var(--rule);\n}\n.toolbar {\n margin-bottom: 1.5rem;\n}\n.toolbar input {\n flex-basis: 18rem;\n}\n#notice {\n margin-bottom: .75rem;\n}\n#notice:empty {\n display: none;\n}\n#notice:not(:empty) {\n text-decoration: underline;\n}\n#oauthNotice {\n margin-bottom: .75rem;\n}\n#oauthNotice:empty {\n display: none;\n}\n.error-notice,\n.msg {\n text-decoration: underline;\n}\n.card,\n.credential-card,\n.activity-item {\n padding-left: 1.25rem;\n position: relative;\n}\n.card::before,\n.credential-card::before,\n.activity-item::before {\n background: var(--rule);\n bottom: 0;\n content: \"\";\n left: .25rem;\n position: absolute;\n top: 0;\n width: 1px;\n}\n.card {\n border-top: 1px solid var(--rule);\n padding-bottom: .75rem;\n padding-top: .75rem;\n}\n.connector-head {\n display: grid;\n gap: var(--gap);\n grid-template-columns: minmax(0, 2fr) minmax(10rem, 1fr);\n}\n.connector-title {\n align-items: baseline;\n display: flex;\n gap: .5rem;\n}\n.connector-title .dot,\n.activity-stamp .dot {\n margin-left: -1.25rem;\n}\n.activity-stamp {\n align-items: baseline;\n display: flex;\n gap: .75rem;\n}\n.card h2 {\n overflow-wrap: anywhere;\n}\n.connector-state {\n text-align: right;\n}\n.dot {\n background: var(--paper);\n border: 1px solid var(--ink);\n display: inline-block;\n flex: none;\n height: .5rem;\n width: .5rem;\n z-index: 1;\n}\n.dot.ok {\n background: var(--ink);\n}\n.dot.auth_required {\n background:\n linear-gradient(\n 90deg,\n var(--ink) 50%,\n var(--paper) 50%);\n}\n.connector-description {\n margin-top: .25rem;\n max-width: 40rem;\n}\n.connector-message,\n.connector-auth {\n margin-top: .75rem;\n}\n.connector-toolkits {\n align-items: baseline;\n display: flex;\n flex-wrap: wrap;\n gap: .25rem .5rem;\n margin-top: .5rem;\n}\n.scope-label {\n border: 1px solid var(--rule);\n display: inline-block;\n font-family: var(--mono);\n font-size: .72rem;\n padding: .05rem .35rem;\n}\n.toolkit-copy {\n margin-bottom: 1rem;\n max-width: 42rem;\n}\n.toolkit-ledger {\n border-bottom: 1px solid var(--rule);\n}\n.toolkit-card {\n border-top: 1px solid var(--rule);\n padding: .9rem 0 1rem;\n}\n.toolkit-head {\n display: grid;\n gap: var(--gap);\n grid-template-columns: minmax(0, 2fr) minmax(10rem, 1fr);\n}\n.toolkit-name {\n align-items: baseline;\n display: flex;\n flex-wrap: wrap;\n gap: .5rem;\n}\n.toolkit-name h3 {\n overflow-wrap: anywhere;\n}\n.toolkit-state {\n text-align: right;\n}\n.toolkit-connectors {\n display: flex;\n flex-wrap: wrap;\n gap: .5rem;\n margin-top: .75rem;\n}\n.toolkit-connector {\n border-left: 1px solid var(--ink);\n display: inline-flex;\n flex-wrap: wrap;\n gap: .4rem;\n padding-left: .5rem;\n}\n.toolkit-rules {\n margin-top: .75rem;\n}\n.toolkit-rules > * + * {\n margin-top: .25rem;\n}\n.toolkit-endpoint {\n margin-top: .75rem;\n}\n.credential-ledger {\n border-bottom: 1px solid var(--rule);\n}\n.credential-card {\n border-top: 1px solid var(--rule);\n padding-bottom: .75rem;\n padding-top: .75rem;\n}\n.credential-head {\n align-items: baseline;\n display: flex;\n flex-wrap: wrap;\n gap: .25rem var(--gap);\n justify-content: space-between;\n}\n.credential-copy {\n margin-top: .25rem;\n max-width: 40rem;\n}\n.credential-field-summary {\n border-top: 1px solid var(--rule);\n margin-top: .75rem;\n}\n.credential-field-summary > div {\n border-bottom: 1px solid var(--rule);\n display: flex;\n flex-wrap: wrap;\n gap: .25rem var(--gap);\n justify-content: space-between;\n padding: .5rem 0;\n}\n.credential-actions {\n display: flex;\n flex-wrap: wrap;\n gap: var(--gap);\n margin-top: .75rem;\n}\n.credential-actions button,\n.credential-form button,\n.activity-controls button,\n.activity-more {\n align-items: center;\n display: inline-flex;\n min-height: 2.75rem;\n}\n.credential-form {\n align-items: center;\n display: flex;\n flex-wrap: wrap;\n gap: .75rem var(--gap);\n margin-top: .75rem;\n}\n.credential-form > input {\n flex: 1 1 18rem;\n}\n.credential-fields {\n display: grid;\n flex: 1 1 100%;\n gap: .75rem;\n}\n.credential-field {\n align-items: center;\n display: grid;\n gap: var(--gap);\n grid-template-columns: minmax(9rem, 12rem) 1fr;\n}\n.credential-field input {\n min-width: 0;\n width: 100%;\n}\n.danger {\n text-decoration-style: double;\n}\ndetails {\n margin-top: .75rem;\n}\nsummary {\n cursor: pointer;\n list-style: none;\n width: max-content;\n}\nsummary::-webkit-details-marker {\n display: none;\n}\n.tool-list {\n border-bottom: 1px solid var(--rule);\n margin-top: .5rem;\n}\n.tool {\n border-top: 1px solid var(--rule);\n display: grid;\n gap: .25rem var(--gap);\n grid-template-columns: minmax(12rem, 1fr) minmax(0, 2fr);\n padding: .5rem 0;\n}\n.tool code {\n font-family: var(--mono);\n font-size: .78rem;\n overflow-wrap: anywhere;\n}\n.tool .td {\n color: var(--muted);\n font-size: .9em;\n}\n.empty {\n border-top: 1px solid var(--rule);\n padding: .75rem 0;\n}\n.activity-copy {\n margin-bottom: 1.5rem;\n}\n.activity-controls {\n margin-bottom: 1.5rem;\n}\n.activity-controls input {\n flex: 1 1 18rem;\n}\n#activityNotice {\n margin-bottom: .75rem;\n}\n.activity-ledger {\n border-bottom: 1px solid var(--rule);\n}\n.activity-item {\n border-top: 1px solid var(--rule);\n display: grid;\n gap: .25rem var(--gap);\n grid-template-columns: minmax(9rem, .85fr) minmax(12rem, 1.4fr) minmax(8rem, .9fr);\n padding-bottom: .75rem;\n padding-top: .75rem;\n}\n.activity-time,\n.activity-actor,\n.activity-detail {\n color: var(--muted);\n font-size: .82rem;\n}\n.activity-actor-id {\n color: var(--muted);\n margin-top: .1rem;\n}\n.activity-address {\n font-family: var(--mono);\n font-size: .78rem;\n overflow-wrap: anywhere;\n}\n.activity-outcome {\n font-size: .9em;\n}\n.activity-item.error .activity-outcome,\n.activity-item.timeout .activity-outcome,\n.activity-item.cancelled .activity-outcome {\n text-decoration: underline;\n}\n.activity-empty {\n border-top: 1px solid var(--rule);\n padding: .75rem 0;\n}\n.activity-more {\n margin-top: .75rem;\n}\n.unavailable {\n background: var(--trace);\n border-bottom: 1px solid var(--rule);\n border-top: 1px solid var(--rule);\n padding: .75rem;\n}\n@media (prefers-reduced-motion: reduce) {\n html:focus-within {\n scroll-behavior: auto;\n }\n}\n@media (max-width: 36.99rem) {\n .pgrid {\n grid-template-columns: repeat(2, minmax(0, 1fr));\n }\n .pcap,\n .pbody {\n grid-column: 1 / -1;\n }\n .masthead .brand {\n grid-column: 1;\n }\n .mast-nav {\n grid-column: 1 / -1;\n grid-row: 2;\n justify-content: flex-start;\n }\n .product {\n display: none;\n }\n .mast-actions {\n align-items: flex-start;\n flex-direction: column;\n font-size: .875rem;\n gap: .25rem;\n }\n .lead {\n margin-top: 4rem;\n }\n .section,\n .section + .section {\n margin-top: 2.5rem;\n }\n .connector-head,\n .toolkit-head,\n .tool,\n .activity-item {\n grid-template-columns: 1fr;\n }\n .connector-state,\n .toolkit-state {\n text-align: left;\n }\n .credential-field {\n align-items: start;\n grid-template-columns: 1fr;\n gap: .25rem;\n }\n input {\n min-height: 2.75rem;\n }\n}\n";
|
|
2
|
-
export declare const OPERATOR_UI_SCRIPT = "\"use strict\";\n(() => {\n // src/operator-ui/model.ts\n function filterUiConnectors(connectors, query) {\n const q = query.trim().toLowerCase();\n const filtered = [];\n for (const connector of connectors) {\n const connectorText = [\n connector.id,\n connector.title,\n connector.description,\n connector.status\n ].join(\" \").toLowerCase();\n const connectorMatches = Boolean(q && connectorText.includes(q));\n const tools = connector.tools.filter(\n (tool) => !q || connectorMatches || `${tool.name} ${tool.description ?? \"\"}`.toLowerCase().includes(q)\n );\n if (q && tools.length === 0 && !connectorMatches) continue;\n filtered.push({ connector, tools });\n }\n return filtered;\n }\n\n // src/operator-ui/browser.ts\n var KEY = \"connecta:token\";\n var $ = (id) => {\n const element = document.getElementById(id);\n if (!element) throw new Error(`Missing operator UI element #${id}`);\n return element;\n };\n var PAGE_META = {\n connections: { path: \"/\", label: \"Connections\" },\n credentials: { path: \"/credentials\", label: \"Credentials\" },\n activity: { path: \"/activity\", label: \"Activity\" }\n };\n var DATA = null;\n var ACTIVITY = [];\n var ACTIVITY_CURSOR = null;\n var ACTIVITY_LOADED = false;\n var CURRENT_PAGE = INITIAL_PAGE;\n var SESSION_GENERATION = 0;\n var ACTIVITY_GENERATION = 0;\n var CLERK_SESSION_ID = null;\n $(\"mcpUrl\").textContent = MCP_URL;\n function errorMessage(error, fallback) {\n return error instanceof Error && error.message ? error.message : fallback;\n }\n function closestElement(target, selector) {\n const candidate = target;\n return typeof candidate?.closest === \"function\" ? candidate.closest(selector) : null;\n }\n function esc(s) {\n return String(s == null ? \"\" : s).replace(/[&<>\"]/g, (c) => ({ \"&\": \"&\", \"<\": \"<\", \">\": \">\", '\"': \""\" })[c] ?? c);\n }\n function safeHttp(u) {\n try {\n const p = new URL(u).protocol;\n return p === \"http:\" || p === \"https:\" ? u : null;\n } catch {\n return null;\n }\n }\n function formatDate(value) {\n if (!value) return \"\";\n const date = new Date(value);\n return Number.isNaN(date.valueOf()) ? \"\" : date.toLocaleString();\n }\n function setNotice(message, isError = false) {\n $(\"credentialNotice\").textContent = message || \"\";\n $(\"credentialNotice\").classList.toggle(\"error-notice\", Boolean(isError));\n $(\"credentialNotice\").setAttribute(\"role\", isError ? \"alert\" : \"status\");\n }\n function setOauthNotice(message, isError = false) {\n $(\"oauthNotice\").textContent = message || \"\";\n $(\"oauthNotice\").classList.toggle(\"error-notice\", Boolean(isError));\n $(\"oauthNotice\").setAttribute(\"role\", isError ? \"alert\" : \"status\");\n }\n async function sessionToken() {\n return AUTH.kind === \"clerk\" ? await Clerk.session?.getToken() : localStorage.getItem(KEY);\n }\n function clearActivityState() {\n ACTIVITY_GENERATION += 1;\n ACTIVITY = [];\n ACTIVITY_CURSOR = null;\n ACTIVITY_LOADED = false;\n $(\"activityList\").innerHTML = \"\";\n $(\"activityList\").setAttribute(\"aria-busy\", \"false\");\n $(\"activityNotice\").textContent = \"\";\n $(\"activityNotice\").setAttribute(\"role\", \"status\");\n $(\"activitySummary\").textContent = \"Arguments and results are never stored.\";\n $(\"activitySearch\").value = \"\";\n $(\"refreshActivity\").disabled = false;\n $(\"moreActivity\").disabled = false;\n $(\"moreActivity\").classList.add(\"hidden\");\n }\n function clearIdentityState() {\n SESSION_GENERATION += 1;\n DATA = null;\n clearActivityState();\n $(\"list\").innerHTML = \"\";\n setOauthNotice(\"\");\n $(\"toolkitList\").innerHTML = \"\";\n $(\"filter\").value = \"\";\n $(\"credentialList\").innerHTML = \"\";\n $(\"credentialList\").setAttribute(\"aria-busy\", \"false\");\n $(\"credentialNotice\").textContent = \"\";\n $(\"credentialNotice\").setAttribute(\"role\", \"status\");\n $(\"credentialNotice\").classList.remove(\"error-notice\");\n $(\"credentialUnavailable\").textContent = \"\";\n $(\"credentialUnavailable\").classList.add(\"hidden\");\n $(\"credentialList\").classList.add(\"hidden\");\n $(\"activityUnavailable\").classList.add(\"hidden\");\n $(\"activityAvailable\").classList.add(\"hidden\");\n $(\"credentialsNav\").classList.add(\"hidden\");\n $(\"activityNav\").classList.add(\"hidden\");\n $(\"serverInfo\").textContent = PRODUCT_OPERATOR_LABEL;\n }\n function showGate(msg) {\n clearIdentityState();\n $(\"app\").classList.add(\"hidden\");\n $(\"appNav\").classList.add(\"hidden\");\n $(\"gate\").classList.remove(\"hidden\");\n $(\"err\").textContent = msg || \"\";\n if (AUTH.kind === \"clerk\") {\n const signedIn = Boolean(window.Clerk && Clerk.user);\n $(\"gateCopy\").textContent = signedIn ? \"Signed in with Clerk, but this account cannot open deployment-wide operator pages.\" : \"Sign in with Clerk to open this operator page.\";\n $(\"signin\").classList.toggle(\"hidden\", signedIn);\n $(\"gateSignout\").classList.toggle(\"hidden\", !signedIn);\n } else {\n $(\"gateCopy\").textContent = \"\";\n }\n }\n function pageForPath(path) {\n if (path === \"/credentials\") return \"credentials\";\n if (path === \"/activity\") return \"activity\";\n return \"connections\";\n }\n function credentialUnavailableCopy(capability) {\n if (capability === \"no_slots\") {\n return \"No connectors declare operator-managed credential slots. Connector credentials remain configuration-as-code until a slot is declared.\";\n }\n if (capability === \"vault_not_configured\") {\n return \"Credential storage is not configured. Set credentials.encryptionKey before managing connector credentials here.\";\n }\n return \"Credential management requires an eligible Clerk operator. Bearer-authenticated sessions can inspect connections but cannot manage stored credentials.\";\n }\n function updateCapabilities() {\n const credentialsAvailable = DATA?.credentialManagement === \"available\";\n $(\"credentialsNav\").classList.toggle(\"hidden\", !credentialsAvailable);\n $(\"activityNav\").classList.toggle(\"hidden\", !DATA?.activityEnabled);\n $(\"credentialUnavailable\").classList.toggle(\"hidden\", credentialsAvailable);\n $(\"credentialList\").classList.toggle(\"hidden\", !credentialsAvailable);\n $(\"credentialUnavailable\").textContent = credentialsAvailable ? \"\" : credentialUnavailableCopy(DATA?.credentialManagement);\n $(\"activityUnavailable\").classList.toggle(\"hidden\", Boolean(DATA?.activityEnabled));\n $(\"activityAvailable\").classList.toggle(\"hidden\", !DATA?.activityEnabled);\n }\n function activatePage(page, options) {\n const next = PAGE_META[page] ? page : \"connections\";\n CURRENT_PAGE = next;\n for (const name of Object.keys(PAGE_META)) {\n $(name + \"View\").classList.toggle(\"hidden\", name !== next);\n const link = $(name + \"Nav\");\n if (name === next) link.setAttribute(\"aria-current\", \"page\");\n else link.removeAttribute(\"aria-current\");\n }\n $(\"gateHeading\").textContent = PAGE_META[next].label;\n document.title = PAGE_META[next].label + \" \u2014 \" + TITLE_SUFFIX;\n if (DATA) {\n updateCapabilities();\n if (next === \"connections\") renderConnections();\n if (next === \"credentials\") renderCredentials();\n if (next === \"activity\" && DATA.activityEnabled && !ACTIVITY_LOADED) {\n loadActivity(true);\n }\n }\n if (next !== \"credentials\") {\n $(\"credentialList\").innerHTML = \"\";\n setNotice(\"\");\n }\n if (options?.focus) $(DATA ? next + \"Heading\" : \"gateHeading\").focus();\n }\n function navigateTo(page, href) {\n history.pushState({ operatorPage: page }, \"\", href);\n activatePage(page, { focus: true });\n }\n async function load() {\n const generation = SESSION_GENERATION;\n let token;\n try {\n token = await sessionToken();\n } catch (error) {\n if (generation !== SESSION_GENERATION) return;\n return showGate(\n \"Could not read the Clerk session: \" + errorMessage(error, \"unknown error\")\n );\n }\n if (generation !== SESSION_GENERATION) return;\n if (!token) return showGate(\"\");\n let res;\n try {\n res = await fetch(\"/ui/data\", { headers: { Authorization: \"Bearer \" + token } });\n } catch (error) {\n if (generation !== SESSION_GENERATION) return;\n return showGate(\"Network error: \" + errorMessage(error, \"unknown error\"));\n }\n if (generation !== SESSION_GENERATION) return;\n if (res.status === 401 || res.status === 403) {\n if (AUTH.kind === \"clerk\") {\n return showGate(\n res.status === 403 ? \"This Clerk account is not allowed to access connecta.\" : \"Your Clerk session was not accepted. Sign out and try again.\"\n );\n }\n localStorage.removeItem(KEY);\n return showGate(\"Token rejected \u2014 enter a valid bearer token.\");\n }\n if (!res.ok) return showGate(\"Error \" + res.status);\n let data;\n try {\n data = await res.json();\n } catch {\n if (generation !== SESSION_GENERATION) return;\n return showGate(\"Operator data could not be read.\");\n }\n if (generation !== SESSION_GENERATION) return;\n DATA = data;\n $(\"gate\").classList.add(\"hidden\");\n $(\"app\").classList.remove(\"hidden\");\n $(\"appNav\").classList.remove(\"hidden\");\n const si = data.serverInfo || {};\n $(\"serverInfo\").textContent = (si.name || PRODUCT_NAME) + \" v\" + (data.connectaVersion || \"?\");\n updateCapabilities();\n activatePage(CURRENT_PAGE);\n }\n function actorLabel(actor) {\n if (!actor || !actor.kind) return \"unknown\";\n return actor.label ? actor.kind + \" \u00B7 \" + actor.label : actor.id ? actor.kind + \" \u00B7 \" + actor.id : actor.kind;\n }\n function renderActivity() {\n const list = $(\"activityList\");\n list.innerHTML = \"\";\n const query = $(\"activitySearch\").value.trim().toLowerCase();\n const visible = ACTIVITY.filter((event) => {\n if (!query) return true;\n const actor = event.actor || {};\n return [\n event.address,\n event.connectorId,\n event.toolName,\n event.source,\n event.outcome,\n event.errorCode,\n actor.kind,\n actor.id,\n actor.namespace,\n actor.label\n ].some((value) => String(value || \"\").toLowerCase().includes(query));\n });\n const uniqueTools = new Set(ACTIVITY.map((event) => event.address)).size;\n $(\"activitySummary\").textContent = ACTIVITY.length ? ACTIVITY.length + \" loaded call\" + (ACTIVITY.length === 1 ? \"\" : \"s\") + \" \u00B7 \" + uniqueTools + \" tool\" + (uniqueTools === 1 ? \"\" : \"s\") + \" \u00B7 no arguments or results stored\" : \"Arguments and results are never stored.\";\n if (visible.length === 0) {\n list.innerHTML = '<div class=\"activity-empty\">' + (query ? \"No loaded activity matches this search.\" : \"No connector tool calls recorded yet.\") + \"</div>\";\n }\n for (const event of visible) {\n const item = document.createElement(\"article\");\n const outcomeClass = [\n \"success\",\n \"error\",\n \"timeout\",\n \"cancelled\"\n ].includes(event.outcome) ? event.outcome : \"error\";\n item.className = \"activity-item \" + outcomeClass;\n const retryCopy = event.attempts > 1 ? \" \u00B7 \" + esc(event.attempts) + \" attempts\" : \"\";\n const errorCopy = event.errorCode ? \" \u00B7 \" + esc(event.errorCode) : \"\";\n const actorId = event.actor?.id ? event.actor.namespace ? event.actor.namespace + \" \u00B7 \" + event.actor.id : event.actor.id : \"\";\n const stableActorId = actorId && (event.actor?.label || event.actor?.namespace) ? '<div class=\"activity-actor-id mono\">' + esc(actorId) + \"</div>\" : \"\";\n item.innerHTML = '<div class=\"activity-stamp\"><span class=\"dot ' + (outcomeClass === \"success\" ? \"ok\" : \"\") + '\" aria-hidden=\"true\"></span><div><time class=\"activity-time\" datetime=\"' + esc(event.occurredAt) + '\">' + esc(formatDate(event.occurredAt)) + '</time><div class=\"activity-actor\">' + esc(actorLabel(event.actor)) + \"</div>\" + stableActorId + '</div></div><div><div class=\"activity-address\">' + esc(event.address) + '</div><div class=\"activity-detail\">' + esc(event.source) + retryCopy + errorCopy + '</div></div><div><div class=\"activity-outcome\">' + esc(event.outcome) + '</div><div class=\"activity-detail\">' + esc(event.durationMs) + \" ms</div></div>\";\n list.appendChild(item);\n }\n $(\"moreActivity\").classList.toggle(\"hidden\", !ACTIVITY_CURSOR);\n }\n async function loadActivity(reset) {\n if (!DATA?.activityEnabled) return;\n const sessionGeneration = SESSION_GENERATION;\n if (reset) ACTIVITY_GENERATION += 1;\n const activityGeneration = ACTIVITY_GENERATION;\n const isCurrent = () => sessionGeneration === SESSION_GENERATION && activityGeneration === ACTIVITY_GENERATION;\n $(\"activityNotice\").textContent = \"Loading activity\u2026\";\n $(\"activityNotice\").setAttribute(\"role\", \"status\");\n $(\"activityList\").setAttribute(\"aria-busy\", \"true\");\n $(\"refreshActivity\").disabled = true;\n $(\"moreActivity\").disabled = true;\n try {\n const token = await sessionToken();\n if (!isCurrent()) return;\n if (!token) return showGate(\"Your session has expired.\");\n const cursor = reset ? null : ACTIVITY_CURSOR;\n const params = new URLSearchParams({ limit: \"50\" });\n if (cursor) params.set(\"cursor\", cursor);\n const res = await fetch(\"/ui/activity?\" + params, {\n headers: { Authorization: \"Bearer \" + token }\n });\n if (!isCurrent()) return;\n let payload = {};\n try {\n payload = await res.json();\n } catch {\n }\n if (!isCurrent()) return;\n if (res.status === 401) {\n return showGate(\"Your session was not accepted. Sign in again.\");\n }\n if (res.status === 403) {\n clearActivityState();\n $(\"activityNotice\").setAttribute(\"role\", \"alert\");\n $(\"activityNotice\").textContent = \"This identity may not read activity history.\";\n return;\n }\n if (!res.ok) {\n throw new Error(\n payload.error || \"Activity could not be loaded (\" + res.status + \").\"\n );\n }\n ACTIVITY = reset ? payload.events || [] : ACTIVITY.concat(payload.events || []);\n ACTIVITY_CURSOR = payload.nextCursor || null;\n ACTIVITY_LOADED = true;\n $(\"activityNotice\").textContent = \"\";\n renderActivity();\n } catch (error) {\n if (!isCurrent()) return;\n $(\"activityNotice\").setAttribute(\"role\", \"alert\");\n $(\"activityNotice\").textContent = errorMessage(\n error,\n \"Activity could not be loaded.\"\n );\n } finally {\n if (isCurrent()) {\n $(\"activityList\").setAttribute(\"aria-busy\", \"false\");\n $(\"refreshActivity\").disabled = false;\n $(\"moreActivity\").disabled = false;\n }\n }\n }\n function toolkitMcpUrl(name) {\n const url = new URL(MCP_URL, window.location.href);\n url.searchParams.set(\"toolkit\", name);\n return url.toString();\n }\n function renderToolkits() {\n const data = DATA;\n if (!data) return;\n const list = $(\"toolkitList\");\n const toolkits = data.toolkits || [];\n list.innerHTML = \"\";\n if (!toolkits.length) {\n list.innerHTML = '<p class=\"empty\">No toolkits are configured. Unscoped clients see the full connector registry.</p>';\n return;\n }\n const connectors = new Map(\n data.connectors.map((connector) => [connector.id, connector])\n );\n for (const toolkit of toolkits) {\n const el = document.createElement(\"article\");\n el.className = \"toolkit-card\";\n const connectorCount = toolkit.connectors.length;\n const toolCount = toolkit.toolCount || 0;\n let body = '<div class=\"toolkit-head\"><div><div class=\"toolkit-name\"><h3 class=\"mono\">' + esc(toolkit.name) + '</h3><span class=\"cap\">configured view</span></div>';\n body += '</div><div class=\"toolkit-state cap\">' + connectorCount + (connectorCount === 1 ? \" connector\" : \" connectors\") + \" \u00B7 \" + toolCount + (toolCount === 1 ? \" loaded tool\" : \" loaded tools\") + \"</div></div>\";\n body += '<ul class=\"toolkit-connectors\" aria-label=\"Included connectors\">';\n for (const id of toolkit.connectors) {\n const connector = connectors.get(id);\n body += '<li class=\"toolkit-connector\"><span>' + esc(connector?.title || id) + '</span><code class=\"mono\">' + esc(id) + \"</code></li>\";\n }\n body += \"</ul>\";\n body += '<div class=\"toolkit-rules meta\">';\n if (toolkit.includeTools.length) {\n body += '<p>Per-connector allowlist: <span class=\"mono\">' + toolkit.includeTools.map(esc).join('</span>, <span class=\"mono\">') + \"</span>. Connectors without an allowlist keep all tools.</p>\";\n }\n if (toolkit.excludeTools.length) {\n body += '<p>Hidden: <span class=\"mono\">' + toolkit.excludeTools.map(esc).join('</span>, <span class=\"mono\">') + \"</span></p>\";\n }\n if (!toolkit.includeTools.length && !toolkit.excludeTools.length) {\n body += \"<p>All tools on the included connectors are visible.</p>\";\n }\n body += \"</div>\";\n const endpoint = toolkitMcpUrl(toolkit.name);\n body += '<div class=\"endpoint toolkit-endpoint\"><div class=\"endpoint-row\"><code class=\"mono\">' + esc(endpoint) + '</code><button class=\"linklike\" type=\"button\" data-toolkit-copy=\"' + esc(toolkit.name) + '\" aria-label=\"Copy endpoint for ' + esc(toolkit.name) + '\">Copy URL</button></div></div>';\n el.innerHTML = body;\n list.appendChild(el);\n }\n }\n function renderConnections() {\n const data = DATA;\n if (!data) return;\n const q = $(\"filter\").value.trim().toLowerCase();\n const list = $(\"list\");\n list.innerHTML = \"\";\n for (const filtered of filterUiConnectors(data.connectors, q)) {\n const c = filtered.connector;\n const tools = filtered.tools;\n const el = document.createElement(\"div\");\n el.className = \"card\";\n const status = c.status === \"ok\" ? \"Connected\" : c.status === \"auth_required\" ? \"Authorization needed\" : \"Unavailable\";\n let head = '<div class=\"connector-head\"><div><div class=\"connector-title\"><span class=\"dot ' + esc(c.status) + '\" aria-hidden=\"true\"></span><h2>' + esc(c.title || c.id) + \"</h2></div>\";\n if (c.description) {\n head += '<p class=\"connector-description meta\">' + esc(c.description) + \"</p>\";\n }\n const memberships = (data.toolkits || []).filter((toolkit) => toolkit.connectors.includes(c.id)).map((toolkit) => toolkit.name);\n if (memberships.length) {\n head += '<div class=\"connector-toolkits meta\"><span>Toolkits</span>' + memberships.map(\n (name) => '<span class=\"scope-label\">' + esc(name) + \"</span>\"\n ).join(\"\") + \"</div>\";\n }\n head += '</div><div class=\"connector-state cap\">' + esc(status) + \" \u00B7 \" + c.toolCount + (c.toolCount === 1 ? \" tool\" : \" tools\") + '<br><span class=\"mono\">' + esc(c.id) + \"</span></div></div>\";\n if (c.message) {\n head += '<p class=\"connector-message msg\">' + esc(c.message) + \"</p>\";\n }\n if (c.credentialCheck) {\n const check = c.credentialCheck;\n const verdict = check.state === \"ok\" ? \"credential verified\" : check.state === \"auth_required\" ? \"credential needs authorization\" : \"credential check failed\";\n head += '<p class=\"connector-check meta\">Credential check: ' + esc(verdict) + \" \u00B7 \" + esc(formatDate(check.checkedAt)) + (check.message && check.message !== c.message ? \" \u2014 \" + esc(check.message) : \"\") + \"</p>\";\n }\n if (c.authorizationUrl) {\n const safe = safeHttp(c.authorizationUrl);\n head += safe ? '<p class=\"connector-auth\"><a class=\"linklike\" href=\"' + esc(safe) + '\" target=\"_blank\" rel=\"noopener\">Authorize connector \u2192</a></p>' : '<p class=\"connector-auth meta\">Authorization URL: ' + esc(c.authorizationUrl) + \"</p>\";\n }\n if (c.oauth && data.oauthManagement) {\n const oauthName = c.title || c.id;\n head += '<div class=\"credential-actions\">';\n head += '<button type=\"button\" class=\"linklike danger\" aria-label=\"Disconnect OAuth for ' + esc(oauthName) + '\" data-oauth-action=\"disconnect\" data-connector=\"' + esc(c.id) + '\">Disconnect OAuth</button>';\n head += '<button type=\"button\" class=\"linklike\" aria-label=\"' + (c.status === \"ok\" ? \"Reconnect OAuth for \" : \"Restart authorization for \") + esc(oauthName) + '\" data-oauth-action=\"reconnect\" data-connector=\"' + esc(c.id) + '\">' + (c.status === \"ok\" ? \"Reconnect OAuth\" : \"Restart authorization\") + \"</button></div>\";\n }\n if (c.credential) {\n head += '<p class=\"connector-auth\"><a class=\"linklike\" href=\"/credentials\" data-operator-page=\"credentials\">Manage credential \u2192</a></p>';\n }\n let body = \"\";\n if (tools.length) {\n body = \"<details\" + (q ? \" open\" : \"\") + '><summary class=\"linklike\">Show tools (' + tools.length + ')</summary><div class=\"tool-list\">';\n for (const t of tools) {\n body += '<div class=\"tool\"><code>' + esc(t.address) + \"</code>\";\n if (t.description) body += '<span class=\"td\">' + esc(t.description) + \"</span>\";\n body += \"</div>\";\n }\n body += \"</div></details>\";\n }\n el.innerHTML = head + body;\n list.appendChild(el);\n }\n if (!list.children.length) {\n list.innerHTML = '<p class=\"empty\">' + (q ? \"No connectors or tools match this filter.\" : \"No connectors are declared in this deployment.\") + \"</p>\";\n }\n renderToolkits();\n }\n async function oauthRequest(connector, method, generation) {\n const token = await sessionToken();\n if (generation !== SESSION_GENERATION) {\n throw new Error(\"The operator session changed.\");\n }\n if (!token) throw new Error(\"Your Clerk session has expired.\");\n const res = await fetch(\"/ui/oauth/\" + encodeURIComponent(connector), {\n method,\n headers: { Authorization: \"Bearer \" + token }\n });\n if (res.status === 204) return null;\n let payload = {};\n try {\n payload = await res.json();\n } catch {\n }\n if (!res.ok) throw new Error(payload.error || \"Request failed (\" + res.status + \").\");\n return payload;\n }\n $(\"list\").onclick = async (event) => {\n const button = closestElement(\n event.target,\n \"[data-oauth-action]\"\n );\n if (!button) return;\n const connector = button.dataset.connector;\n const action = button.dataset.oauthAction;\n if (!connector || action !== \"disconnect\" && action !== \"reconnect\") return;\n const generation = SESSION_GENERATION;\n const question = action === \"disconnect\" ? \"Disconnect OAuth for \" + connector + \"? Stored credentials and any pending authorization will be removed.\" : \"Restart OAuth for \" + connector + \"? Stored credentials and any pending authorization will be replaced.\";\n if (!window.confirm(question)) return;\n setOauthNotice(\"\");\n const buttons = [...document.querySelectorAll(\n '[data-connector=\"' + CSS.escape(connector) + '\"]'\n )];\n buttons.forEach((item) => {\n item.disabled = true;\n });\n try {\n const result = await oauthRequest(\n connector,\n action === \"disconnect\" ? \"DELETE\" : \"POST\",\n generation\n );\n if (generation !== SESSION_GENERATION) return;\n await load();\n if (generation !== SESSION_GENERATION) return;\n setOauthNotice(\n action === \"disconnect\" ? \"OAuth disconnected. Restart authorization when you are ready to reconnect.\" : result?.message || \"Authorization restarted. Open the authorization link to reconnect.\"\n );\n $(\"oauthNotice\").focus();\n } catch (error) {\n if (generation !== SESSION_GENERATION) return;\n try {\n await load();\n } catch {\n }\n if (generation !== SESSION_GENERATION) return;\n setOauthNotice(errorMessage(error, \"OAuth action failed.\"), true);\n $(\"oauthNotice\").focus();\n } finally {\n if (generation === SESSION_GENERATION) {\n buttons.forEach((item) => {\n item.disabled = false;\n });\n }\n }\n };\n function renderCredentials() {\n const data = DATA;\n if (!data) return;\n const list = $(\"credentialList\");\n list.innerHTML = \"\";\n if (data.credentialManagement !== \"available\") return;\n for (const c of data.connectors) {\n const cred = c.credential;\n if (!cred) continue;\n const configured = Boolean(cred.configured);\n const removable = configured || Boolean(cred.removable);\n const state = configured ? cred.fields?.length ? \"configured\" : \"configured \u00B7 \u2022\u2022\u2022\u2022\" + esc(cred.lastFour || \"\") : \"not configured\";\n const updated = configured && cred.updatedAt ? \" \u00B7 updated \" + esc(formatDate(cred.updatedAt)) : \"\";\n const el = document.createElement(\"section\");\n el.className = \"credential-card\";\n el.id = \"credential-\" + c.id;\n el.setAttribute(\"aria-labelledby\", \"credential-title-\" + c.id);\n let body = '<div class=\"credential-head\"><div class=\"connector-title\"><span class=\"dot ' + (configured ? \"ok\" : \"auth_required\") + '\" aria-hidden=\"true\"></span><h2 id=\"credential-title-' + esc(c.id) + '\">' + esc(c.title || c.id) + '</h2></div><span class=\"credential-state\">' + state + updated + \"</span></div>\";\n body += '<p class=\"mono\">' + esc(c.id) + \" \u00B7 \" + esc(cred.label) + \"</p>\";\n if (cred.description) {\n body += '<p class=\"credential-copy meta\">' + esc(cred.description) + \"</p>\";\n }\n if (cred.fields?.length) {\n body += '<div class=\"credential-field-summary\">';\n for (const field of cred.fields) {\n const fieldState = field.configured ? \"configured \u00B7 \u2022\u2022\u2022\u2022\" + esc(field.lastFour || \"\") + (field.updatedAt ? \" \u00B7 updated \" + esc(formatDate(field.updatedAt)) : \"\") : \"not configured\";\n body += \"<div><span>\" + esc(field.label) + '</span><span class=\"meta\">' + fieldState + \"</span></div>\";\n }\n body += \"</div>\";\n }\n if (c.credentialCheck) {\n const check = c.credentialCheck;\n const verdict = check.state === \"ok\" ? \"healthy\" : check.state === \"auth_required\" ? \"needs authorization\" : \"check failed\";\n body += '<p class=\"connector-check meta\">Liveness: ' + esc(verdict) + \" \u00B7 \" + esc(formatDate(check.checkedAt)) + (check.message ? \" \u2014 \" + esc(check.message) : \"\") + \"</p>\";\n }\n if (cred.error) body += '<div class=\"msg\">' + esc(cred.error) + \"</div>\";\n if (cred.notice) {\n body += '<p class=\"credential-copy meta\">' + esc(cred.notice) + \"</p>\";\n }\n body += '<div class=\"credential-actions\">';\n body += '<button class=\"linklike\" type=\"button\" data-credential-action=\"edit\" data-connector=\"' + esc(c.id) + '\">' + (removable ? \"Replace\" : \"Add credential\") + \"</button>\";\n if (configured && cred.testable) {\n body += '<button class=\"linklike\" type=\"button\" data-credential-action=\"test\" data-connector=\"' + esc(c.id) + '\">Test</button>';\n }\n if (removable) {\n body += '<button type=\"button\" class=\"linklike danger\" data-credential-action=\"remove\" data-connector=\"' + esc(c.id) + '\">Remove</button>';\n }\n body += \"</div>\";\n body += '<div class=\"credential-form hidden\" data-credential-form=\"' + esc(c.id) + '\">';\n if (cred.fields && cred.fields.length) {\n body += '<div class=\"credential-fields\">';\n for (const [index, field] of cred.fields.entries()) {\n const inputId = \"credential-input-\" + c.id + \"-\" + index;\n body += '<div class=\"credential-field\"><label for=\"' + esc(inputId) + '\">' + esc(field.label) + '</label><input id=\"' + esc(inputId) + '\" type=\"' + esc(field.inputType || \"password\") + '\" data-credential-field=\"' + esc(field.name) + '\" placeholder=\"' + esc(field.placeholder || field.label) + '\" autocomplete=\"' + (field.inputType === \"password\" ? \"new-password\" : \"off\") + '\" autocapitalize=\"none\" spellcheck=\"false\"></div>';\n }\n body += \"</div>\";\n } else {\n const inputId = \"credential-input-\" + c.id;\n body += '<label class=\"visually-hidden\" for=\"' + esc(inputId) + '\">' + esc(cred.label) + '</label><input id=\"' + esc(inputId) + '\" type=\"password\" data-credential-input=\"' + esc(c.id) + '\" aria-label=\"' + esc(cred.label) + '\" placeholder=\"' + esc(cred.placeholder || \"Paste credential\") + '\" autocomplete=\"new-password\" autocapitalize=\"none\" spellcheck=\"false\">';\n }\n body += '<button class=\"linklike\" type=\"button\" data-credential-action=\"save\" data-connector=\"' + esc(c.id) + '\">Save</button><button class=\"linklike\" type=\"button\" data-credential-action=\"cancel\" data-connector=\"' + esc(c.id) + '\">Cancel</button></div>';\n el.innerHTML = body;\n list.appendChild(el);\n }\n }\n async function credentialRequest(connector, method, action, body, generation) {\n const token = await sessionToken();\n if (generation !== SESSION_GENERATION) {\n throw new Error(\"The operator session changed.\");\n }\n if (!token) throw new Error(\"Your Clerk session has expired.\");\n const suffix = action ? \"/\" + action : \"\";\n const res = await fetch(\n \"/ui/credentials/\" + encodeURIComponent(connector) + suffix,\n {\n method,\n headers: {\n Authorization: \"Bearer \" + token,\n ...body ? { \"Content-Type\": \"application/json\" } : {}\n },\n ...body ? { body: JSON.stringify(body) } : {}\n }\n );\n if (res.status === 204) return null;\n let payload = {};\n try {\n payload = await res.json();\n } catch {\n }\n if (!res.ok) throw new Error(payload.error || \"Request failed (\" + res.status + \").\");\n return payload;\n }\n function credentialForm(connector) {\n const form = document.querySelector(\n '[data-credential-form=\"' + CSS.escape(connector) + '\"]'\n );\n if (!form) throw new Error(\"Credential form is unavailable.\");\n return form;\n }\n $(\"credentialList\").onclick = async (event) => {\n const button = closestElement(\n event.target,\n \"[data-credential-action]\"\n );\n if (!button) return;\n const connector = button.dataset.connector;\n const action = button.dataset.credentialAction;\n if (!connector || !action) return;\n const form = credentialForm(connector);\n const generation = SESSION_GENERATION;\n if (action === \"edit\") {\n form.classList.remove(\"hidden\");\n form.querySelector(\"input\")?.focus();\n return;\n }\n if (action === \"cancel\") {\n form.querySelectorAll(\"input\").forEach((input) => {\n input.value = \"\";\n });\n form.classList.add(\"hidden\");\n document.querySelector(\n '[data-credential-action=\"edit\"][data-connector=\"' + CSS.escape(connector) + '\"]'\n )?.focus();\n return;\n }\n if (action === \"remove\" && !window.confirm(\n \"Remove this credential? The connector will stop authenticating until a replacement is added.\"\n )) return;\n setNotice(\"\");\n $(\"credentialList\").setAttribute(\"aria-busy\", \"true\");\n const buttons = [...document.querySelectorAll(\n '[data-connector=\"' + CSS.escape(connector) + '\"]'\n )];\n buttons.forEach((item) => {\n item.disabled = true;\n });\n try {\n if (action === \"save\") {\n const fieldInputs = [\n ...form.querySelectorAll(\"[data-credential-field]\")\n ];\n if (fieldInputs.length) {\n const values = {};\n for (const input of fieldInputs) {\n const value = input.value.trim();\n if (!value) throw new Error(\"Complete every credential field before saving.\");\n const field = input.dataset.credentialField;\n if (!field) throw new Error(\"Credential field is unnamed.\");\n values[field] = value;\n }\n await credentialRequest(connector, \"PUT\", \"\", { values }, generation);\n } else {\n const input = form.querySelector(\n \"[data-credential-input]\"\n );\n if (!input) throw new Error(\"Credential input is unavailable.\");\n const value = input.value.trim();\n if (!value) throw new Error(\"Paste a credential before saving.\");\n await credentialRequest(connector, \"PUT\", \"\", { value }, generation);\n }\n if (generation !== SESSION_GENERATION) return;\n form.querySelectorAll(\"input\").forEach((input) => {\n input.value = \"\";\n });\n setNotice(\"Credential saved.\");\n await load();\n if (generation !== SESSION_GENERATION) return;\n $(\"credentialNotice\").focus();\n } else if (action === \"remove\") {\n await credentialRequest(connector, \"DELETE\", \"\", null, generation);\n if (generation !== SESSION_GENERATION) return;\n setNotice(\"Credential removed.\");\n await load();\n if (generation !== SESSION_GENERATION) return;\n $(\"credentialNotice\").focus();\n } else if (action === \"test\") {\n const result = await credentialRequest(\n connector,\n \"POST\",\n \"test\",\n null,\n generation\n );\n if (generation !== SESSION_GENERATION) return;\n setNotice(\n result?.message || (result?.ok ? \"Credential is valid.\" : \"Credential test failed.\"),\n !result?.ok\n );\n }\n } catch (error) {\n if (generation !== SESSION_GENERATION) return;\n setNotice(errorMessage(error, \"Credential action failed.\"), true);\n } finally {\n if (generation === SESSION_GENERATION) {\n $(\"credentialList\").setAttribute(\"aria-busy\", \"false\");\n buttons.forEach((item) => {\n item.disabled = false;\n });\n }\n }\n };\n $(\"save\").onclick = async () => {\n const v = $(\"token\").value.trim();\n if (!v) return;\n clearIdentityState();\n localStorage.setItem(KEY, v);\n $(\"token\").value = \"\";\n await load();\n if (DATA) $(CURRENT_PAGE + \"Heading\").focus();\n };\n $(\"change\").onclick = () => {\n localStorage.removeItem(KEY);\n showGate(\"\");\n $(\"token\").focus();\n };\n $(\"copyMcpUrl\").onclick = async () => {\n const button = $(\"copyMcpUrl\");\n try {\n await navigator.clipboard.writeText(MCP_URL);\n button.textContent = \"Copied\";\n } catch {\n button.textContent = \"Copy failed\";\n }\n window.setTimeout(() => {\n button.textContent = \"Copy URL\";\n }, 1600);\n };\n $(\"toolkitList\").onclick = async (event) => {\n const button = closestElement(\n event.target,\n \"[data-toolkit-copy]\"\n );\n if (!button) return;\n const toolkit = button.dataset.toolkitCopy;\n if (!toolkit) return;\n try {\n await navigator.clipboard.writeText(\n toolkitMcpUrl(toolkit)\n );\n button.textContent = \"Copied\";\n } catch {\n button.textContent = \"Copy failed\";\n }\n window.setTimeout(() => {\n button.textContent = \"Copy URL\";\n }, 1600);\n };\n $(\"signin\").onclick = () => Clerk.redirectToSignIn({\n signInFallbackRedirectUrl: window.location.href,\n signUpFallbackRedirectUrl: window.location.href\n });\n function signOut() {\n clearIdentityState();\n return Clerk.signOut({ redirectUrl: window.location.href });\n }\n $(\"gateSignout\").onclick = signOut;\n $(\"signout\").onclick = signOut;\n $(\"filter\").oninput = () => {\n if (DATA) renderConnections();\n };\n $(\"refreshActivity\").onclick = () => loadActivity(true);\n $(\"moreActivity\").onclick = () => loadActivity(false);\n $(\"activitySearch\").oninput = () => renderActivity();\n document.addEventListener(\"click\", (event) => {\n const link = closestElement(\n event.target,\n \"a[data-operator-page]\"\n );\n if (!link || event.defaultPrevented || event.button !== 0 || event.metaKey || event.ctrlKey || event.shiftKey || event.altKey) return;\n const target = new URL(link.href, window.location.href);\n if (target.origin !== window.location.origin) return;\n const page = link.dataset.operatorPage;\n if (page !== \"connections\" && page !== \"credentials\" && page !== \"activity\") return;\n event.preventDefault();\n navigateTo(page, target.pathname + target.search + target.hash);\n });\n window.addEventListener(\"popstate\", () => {\n activatePage(pageForPath(window.location.pathname), { focus: true });\n });\n async function init() {\n if (AUTH.kind === \"clerk\") {\n $(\"clerkGate\").classList.remove(\"hidden\");\n $(\"signout\").classList.remove(\"hidden\");\n try {\n if (!window.Clerk) {\n return showGate(\"Clerk could not load. Check your network and try again.\");\n }\n await Clerk.load({\n ...AUTH.signInUrl ? { signInUrl: AUTH.signInUrl } : {},\n ...AUTH.signUpUrl ? { signUpUrl: AUTH.signUpUrl } : {},\n signInFallbackRedirectUrl: window.location.href,\n signUpFallbackRedirectUrl: window.location.href,\n afterSignOutUrl: window.location.href\n });\n CLERK_SESSION_ID = Clerk.session?.id ?? null;\n Clerk.addListener((resources) => {\n const nextSessionId = resources.session?.id ?? null;\n if (nextSessionId === CLERK_SESSION_ID) return;\n CLERK_SESSION_ID = nextSessionId;\n showGate(\"\");\n void load();\n });\n } catch (error) {\n return showGate(\n \"Clerk could not initialize: \" + errorMessage(error, \"unknown error\")\n );\n }\n } else {\n $(\"tokenGate\").classList.remove(\"hidden\");\n $(\"change\").classList.remove(\"hidden\");\n }\n activatePage(pageForPath(window.location.pathname));\n await load();\n }\n if (AUTH.kind === \"clerk\") {\n window.addEventListener(\"load\", init);\n } else {\n init();\n }\n})();\n";
|
|
1
|
+
export declare const OPERATOR_UI_CSS = "/* src/operator-ui/browser.css */\n:root {\n color-scheme: light;\n --ink: #000;\n --paper: #fff;\n --rule: #ccc;\n --muted: #666;\n --trace: #f5f5f5;\n --shell: 70rem;\n --pad: 1rem;\n --gap: 1.5rem;\n --sans:\n \"Helvetica Neue\",\n Helvetica,\n Arial,\n sans-serif;\n --mono:\n ui-monospace,\n \"SF Mono\",\n Menlo,\n Monaco,\n \"Cascadia Code\",\n Consolas,\n monospace;\n}\n* {\n border-radius: 0;\n box-sizing: border-box;\n}\nhtml {\n background: var(--paper);\n color: var(--ink);\n font-family: var(--sans);\n font-size: 16px;\n line-height: 1.5;\n -webkit-font-smoothing: antialiased;\n text-rendering: optimizeLegibility;\n}\nbody {\n margin: 0;\n min-height: 100vh;\n}\n::selection {\n background: var(--ink);\n color: var(--paper);\n}\n:is(h1, h2, h3, p, ul, ol) {\n margin: 0;\n padding: 0;\n}\n:is(h1, h2, h3) {\n font-size: inherit;\n font-weight: 400;\n}\n:is(ul, ol) {\n list-style: none;\n}\na {\n color: inherit;\n}\nbutton,\ninput {\n font: inherit;\n}\nbutton {\n background: none;\n border: 0;\n color: inherit;\n cursor: pointer;\n margin: 0;\n padding: 0;\n text-align: left;\n}\nbutton:disabled {\n cursor: wait;\n opacity: .5;\n}\ninput {\n background: var(--paper);\n border: 1px solid var(--rule);\n color: var(--ink);\n min-height: 2rem;\n padding: .2rem .5rem;\n}\ninput:focus-visible {\n outline-offset: -1px;\n}\n:is(a, button, input, summary):focus-visible {\n outline: 1px solid var(--ink);\n}\n:is(a, button, summary):focus-visible {\n outline-offset: 2px;\n}\n.skip-link {\n background: var(--paper);\n left: var(--pad);\n padding: .5rem;\n position: fixed;\n top: -4rem;\n z-index: 10;\n}\n.skip-link:focus {\n top: var(--pad);\n}\n.shell {\n margin: 0 auto;\n max-width: var(--shell);\n padding-left: var(--pad);\n padding-right: var(--pad);\n}\n.pgrid {\n column-gap: var(--gap);\n display: grid;\n grid-template-columns: repeat(3, minmax(0, 1fr));\n row-gap: 1rem;\n}\n.pcap {\n grid-column: 1;\n}\n.pbody {\n grid-column: 2 / -1;\n min-width: 0;\n}\n.cap,\n.meta {\n color: var(--muted);\n font-size: .9em;\n}\n.mono {\n font-family: var(--mono);\n font-size: .78rem;\n}\n.hidden {\n display: none !important;\n}\n.visually-hidden {\n clip: rect(0 0 0 0);\n clip-path: inset(50%);\n height: 1px;\n overflow: hidden;\n position: absolute;\n white-space: nowrap;\n width: 1px;\n}\n.masthead {\n align-items: start;\n padding-bottom: var(--pad);\n padding-top: var(--pad);\n}\n.brand {\n font-weight: 500;\n grid-column: 1;\n text-decoration: none;\n}\n.mast-nav {\n display: flex;\n gap: var(--gap);\n grid-column: 2 / -1;\n justify-content: space-between;\n min-width: 0;\n}\n.mast-actions {\n display: flex;\n gap: var(--gap);\n justify-content: flex-end;\n min-width: 0;\n}\n.page-nav,\n.session-actions {\n display: flex;\n flex-wrap: wrap;\n gap: .5rem var(--gap);\n}\n.mast-actions :is(a, button) {\n align-items: center;\n display: inline-flex;\n min-height: 2rem;\n}\n.navlink,\n.linklike {\n text-decoration: underline;\n text-decoration-thickness: 1.5px;\n text-underline-offset: .22em;\n}\n.navlink {\n text-decoration-color: transparent;\n}\n.navlink:hover,\n.navlink:focus-visible,\n.navlink[aria-current=page] {\n text-decoration-color: currentColor;\n}\n.linklike {\n text-decoration-color: currentColor;\n}\n.linklike:hover,\n.linklike:focus-visible {\n text-decoration-color: transparent;\n}\n.page {\n padding-bottom: 5rem;\n}\n.lead {\n margin-top: 6rem;\n}\n.section,\n.section + .section {\n margin-top: 3rem;\n}\n.lead-copy,\n.body-copy {\n max-width: 34em;\n}\n.lead-copy > * + *,\n.body-copy > * + * {\n margin-top: 1.5rem;\n}\n.row,\n.actions {\n align-items: center;\n display: flex;\n flex-wrap: wrap;\n gap: var(--gap);\n}\n.row input {\n flex: 1;\n min-width: 12rem;\n}\n.gate-actions {\n margin-top: 1.5rem;\n}\n#err {\n margin-top: 1.5rem;\n text-decoration: underline;\n}\n.endpoint {\n border-bottom: 1px solid var(--rule);\n border-top: 1px solid var(--rule);\n}\n.endpoint-row {\n align-items: baseline;\n display: flex;\n gap: var(--gap);\n min-width: 0;\n padding: .75rem 0;\n}\n.endpoint-row code {\n flex: 1;\n min-width: 0;\n overflow-x: auto;\n white-space: nowrap;\n}\n.endpoint-row button {\n flex: none;\n}\n.connector-tools {\n border-bottom: 1px solid var(--rule);\n}\n.toolbar {\n margin-bottom: 1.5rem;\n}\n.toolbar input {\n flex-basis: 18rem;\n}\n#notice {\n margin-bottom: .75rem;\n}\n#notice:empty {\n display: none;\n}\n#notice:not(:empty) {\n text-decoration: underline;\n}\n#oauthNotice {\n margin-bottom: .75rem;\n}\n#oauthNotice:empty {\n display: none;\n}\n.error-notice,\n.msg {\n text-decoration: underline;\n}\n.card,\n.credential-card,\n.activity-item {\n padding-left: 1.25rem;\n position: relative;\n}\n.card::before,\n.credential-card::before,\n.activity-item::before {\n background: var(--rule);\n bottom: 0;\n content: \"\";\n left: .25rem;\n position: absolute;\n top: 0;\n width: 1px;\n}\n.card {\n border-top: 1px solid var(--rule);\n padding-bottom: .75rem;\n padding-top: .75rem;\n}\n.connector-head {\n display: grid;\n gap: var(--gap);\n grid-template-columns: minmax(0, 2fr) minmax(10rem, 1fr);\n}\n.connector-title {\n align-items: baseline;\n display: flex;\n gap: .5rem;\n}\n.connector-title .dot,\n.activity-stamp .dot {\n margin-left: -1.25rem;\n}\n.activity-stamp {\n align-items: baseline;\n display: flex;\n gap: .75rem;\n}\n.card h2 {\n overflow-wrap: anywhere;\n}\n.connector-state {\n text-align: right;\n}\n.dot {\n background: var(--paper);\n border: 1px solid var(--ink);\n display: inline-block;\n flex: none;\n height: .5rem;\n width: .5rem;\n z-index: 1;\n}\n.dot.ok {\n background: var(--ink);\n}\n.dot.auth_required {\n background:\n linear-gradient(\n 90deg,\n var(--ink) 50%,\n var(--paper) 50%);\n}\n.connector-description {\n margin-top: .25rem;\n max-width: 40rem;\n}\n.connector-message,\n.connector-auth {\n margin-top: .75rem;\n}\n.credential-ledger {\n border-bottom: 1px solid var(--rule);\n}\n.credential-card {\n border-top: 1px solid var(--rule);\n padding-bottom: .75rem;\n padding-top: .75rem;\n}\n.credential-head {\n align-items: baseline;\n display: flex;\n flex-wrap: wrap;\n gap: .25rem var(--gap);\n justify-content: space-between;\n}\n.credential-copy {\n margin-top: .25rem;\n max-width: 40rem;\n}\n.credential-field-summary {\n border-top: 1px solid var(--rule);\n margin-top: .75rem;\n}\n.credential-field-summary > div {\n border-bottom: 1px solid var(--rule);\n display: flex;\n flex-wrap: wrap;\n gap: .25rem var(--gap);\n justify-content: space-between;\n padding: .5rem 0;\n}\n.credential-actions {\n display: flex;\n flex-wrap: wrap;\n gap: var(--gap);\n margin-top: .75rem;\n}\n.credential-actions button,\n.credential-form button,\n.activity-controls button,\n.activity-more {\n align-items: center;\n display: inline-flex;\n min-height: 2.75rem;\n}\n.credential-form {\n align-items: center;\n display: flex;\n flex-wrap: wrap;\n gap: .75rem var(--gap);\n margin-top: .75rem;\n}\n.credential-form > input {\n flex: 1 1 18rem;\n}\n.credential-fields {\n display: grid;\n flex: 1 1 100%;\n gap: .75rem;\n}\n.credential-field {\n align-items: center;\n display: grid;\n gap: var(--gap);\n grid-template-columns: minmax(9rem, 12rem) 1fr;\n}\n.credential-field input {\n min-width: 0;\n width: 100%;\n}\n.danger {\n text-decoration-style: double;\n}\ndetails {\n margin-top: .75rem;\n}\nsummary {\n cursor: pointer;\n list-style: none;\n width: max-content;\n}\nsummary::-webkit-details-marker {\n display: none;\n}\n.tool-list {\n border-bottom: 1px solid var(--rule);\n margin-top: .5rem;\n}\n.tool {\n border-top: 1px solid var(--rule);\n display: grid;\n gap: .25rem var(--gap);\n grid-template-columns: minmax(12rem, 1fr) minmax(0, 2fr);\n padding: .5rem 0;\n}\n.tool code {\n font-family: var(--mono);\n font-size: .78rem;\n overflow-wrap: anywhere;\n}\n.tool .td {\n color: var(--muted);\n font-size: .9em;\n}\n.empty {\n border-top: 1px solid var(--rule);\n padding: .75rem 0;\n}\n.activity-copy {\n margin-bottom: 1.5rem;\n}\n.activity-controls {\n margin-bottom: 1.5rem;\n}\n.activity-controls input {\n flex: 1 1 18rem;\n}\n#activityNotice {\n margin-bottom: .75rem;\n}\n.activity-ledger {\n border-bottom: 1px solid var(--rule);\n}\n.activity-item {\n border-top: 1px solid var(--rule);\n display: grid;\n gap: .25rem var(--gap);\n grid-template-columns: minmax(9rem, .85fr) minmax(12rem, 1.4fr) minmax(8rem, .9fr);\n padding-bottom: .75rem;\n padding-top: .75rem;\n}\n.activity-time,\n.activity-actor,\n.activity-detail {\n color: var(--muted);\n font-size: .82rem;\n}\n.activity-actor-id {\n color: var(--muted);\n margin-top: .1rem;\n}\n.activity-address {\n font-family: var(--mono);\n font-size: .78rem;\n overflow-wrap: anywhere;\n}\n.activity-outcome {\n font-size: .9em;\n}\n.activity-item.error .activity-outcome,\n.activity-item.timeout .activity-outcome,\n.activity-item.cancelled .activity-outcome {\n text-decoration: underline;\n}\n.activity-empty {\n border-top: 1px solid var(--rule);\n padding: .75rem 0;\n}\n.activity-more {\n margin-top: .75rem;\n}\n.unavailable {\n background: var(--trace);\n border-bottom: 1px solid var(--rule);\n border-top: 1px solid var(--rule);\n padding: .75rem;\n}\n@media (prefers-reduced-motion: reduce) {\n html:focus-within {\n scroll-behavior: auto;\n }\n}\n@media (max-width: 36.99rem) {\n .pgrid {\n grid-template-columns: repeat(2, minmax(0, 1fr));\n }\n .pcap,\n .pbody {\n grid-column: 1 / -1;\n }\n .masthead .brand {\n grid-column: 1;\n }\n .mast-nav {\n grid-column: 1 / -1;\n grid-row: 2;\n justify-content: flex-start;\n }\n .product {\n display: none;\n }\n .mast-actions {\n align-items: flex-start;\n flex-direction: column;\n font-size: .875rem;\n gap: .25rem;\n }\n .lead {\n margin-top: 4rem;\n }\n .section,\n .section + .section {\n margin-top: 2.5rem;\n }\n .connector-head,\n .tool,\n .activity-item {\n grid-template-columns: 1fr;\n }\n .connector-state {\n text-align: left;\n }\n .credential-field {\n align-items: start;\n grid-template-columns: 1fr;\n gap: .25rem;\n }\n input {\n min-height: 2.75rem;\n }\n}\n";
|
|
2
|
+
export declare const OPERATOR_UI_SCRIPT = "\"use strict\";\n(() => {\n // src/operator-ui/model.ts\n function filterUiConnectors(connectors, query) {\n const q = query.trim().toLowerCase();\n const filtered = [];\n for (const connector of connectors) {\n const connectorText = [\n connector.id,\n connector.title,\n connector.description,\n connector.status\n ].join(\" \").toLowerCase();\n const connectorMatches = Boolean(q && connectorText.includes(q));\n const tools = connector.tools.filter(\n (tool) => !q || connectorMatches || `${tool.name} ${tool.description ?? \"\"}`.toLowerCase().includes(q)\n );\n if (q && tools.length === 0 && !connectorMatches) continue;\n filtered.push({ connector, tools });\n }\n return filtered;\n }\n\n // src/operator-ui/browser.ts\n var KEY = \"connecta:token\";\n var $ = (id) => {\n const element = document.getElementById(id);\n if (!element) throw new Error(`Missing operator UI element #${id}`);\n return element;\n };\n var PAGE_META = {\n connections: { path: \"/\", label: \"Connections\" },\n credentials: { path: \"/credentials\", label: \"Credentials\" },\n activity: { path: \"/activity\", label: \"Activity\" }\n };\n var DATA = null;\n var ACTIVITY = [];\n var ACTIVITY_CURSOR = null;\n var ACTIVITY_LOADED = false;\n var CURRENT_PAGE = INITIAL_PAGE;\n var SESSION_GENERATION = 0;\n var ACTIVITY_GENERATION = 0;\n var CLERK_SESSION_ID = null;\n $(\"mcpUrl\").textContent = MCP_URL;\n function errorMessage(error, fallback) {\n return error instanceof Error && error.message ? error.message : fallback;\n }\n function closestElement(target, selector) {\n const candidate = target;\n return typeof candidate?.closest === \"function\" ? candidate.closest(selector) : null;\n }\n function esc(s) {\n return String(s == null ? \"\" : s).replace(/[&<>\"]/g, (c) => ({ \"&\": \"&\", \"<\": \"<\", \">\": \">\", '\"': \""\" })[c] ?? c);\n }\n function safeHttp(u) {\n try {\n const p = new URL(u).protocol;\n return p === \"http:\" || p === \"https:\" ? u : null;\n } catch {\n return null;\n }\n }\n function formatDate(value) {\n if (!value) return \"\";\n const date = new Date(value);\n return Number.isNaN(date.valueOf()) ? \"\" : date.toLocaleString();\n }\n function setNotice(message, isError = false) {\n $(\"credentialNotice\").textContent = message || \"\";\n $(\"credentialNotice\").classList.toggle(\"error-notice\", Boolean(isError));\n $(\"credentialNotice\").setAttribute(\"role\", isError ? \"alert\" : \"status\");\n }\n function setOauthNotice(message, isError = false) {\n $(\"oauthNotice\").textContent = message || \"\";\n $(\"oauthNotice\").classList.toggle(\"error-notice\", Boolean(isError));\n $(\"oauthNotice\").setAttribute(\"role\", isError ? \"alert\" : \"status\");\n }\n async function sessionToken() {\n return AUTH.kind === \"clerk\" ? await Clerk.session?.getToken() : localStorage.getItem(KEY);\n }\n function clearActivityState() {\n ACTIVITY_GENERATION += 1;\n ACTIVITY = [];\n ACTIVITY_CURSOR = null;\n ACTIVITY_LOADED = false;\n $(\"activityList\").innerHTML = \"\";\n $(\"activityList\").setAttribute(\"aria-busy\", \"false\");\n $(\"activityNotice\").textContent = \"\";\n $(\"activityNotice\").setAttribute(\"role\", \"status\");\n $(\"activitySummary\").textContent = \"Arguments and results are never stored.\";\n $(\"activitySearch\").value = \"\";\n $(\"refreshActivity\").disabled = false;\n $(\"moreActivity\").disabled = false;\n $(\"moreActivity\").classList.add(\"hidden\");\n }\n function clearIdentityState() {\n SESSION_GENERATION += 1;\n DATA = null;\n clearActivityState();\n $(\"list\").innerHTML = \"\";\n setOauthNotice(\"\");\n $(\"filter\").value = \"\";\n $(\"credentialList\").innerHTML = \"\";\n $(\"credentialList\").setAttribute(\"aria-busy\", \"false\");\n $(\"credentialNotice\").textContent = \"\";\n $(\"credentialNotice\").setAttribute(\"role\", \"status\");\n $(\"credentialNotice\").classList.remove(\"error-notice\");\n $(\"credentialUnavailable\").textContent = \"\";\n $(\"credentialUnavailable\").classList.add(\"hidden\");\n $(\"credentialList\").classList.add(\"hidden\");\n $(\"activityUnavailable\").classList.add(\"hidden\");\n $(\"activityAvailable\").classList.add(\"hidden\");\n $(\"credentialsNav\").classList.add(\"hidden\");\n $(\"activityNav\").classList.add(\"hidden\");\n $(\"serverInfo\").textContent = PRODUCT_OPERATOR_LABEL;\n }\n function showGate(msg) {\n clearIdentityState();\n $(\"app\").classList.add(\"hidden\");\n $(\"appNav\").classList.add(\"hidden\");\n $(\"gate\").classList.remove(\"hidden\");\n $(\"err\").textContent = msg || \"\";\n if (AUTH.kind === \"clerk\") {\n const signedIn = Boolean(window.Clerk && Clerk.user);\n $(\"gateCopy\").textContent = signedIn ? \"Signed in with Clerk, but this account cannot open deployment-wide operator pages.\" : \"Sign in with Clerk to open this operator page.\";\n $(\"signin\").classList.toggle(\"hidden\", signedIn);\n $(\"gateSignout\").classList.toggle(\"hidden\", !signedIn);\n } else {\n $(\"gateCopy\").textContent = \"\";\n }\n }\n function pageForPath(path) {\n if (path === \"/credentials\") return \"credentials\";\n if (path === \"/activity\") return \"activity\";\n return \"connections\";\n }\n function credentialUnavailableCopy(capability) {\n if (capability === \"no_slots\") {\n return \"No connectors declare operator-managed credential slots. Connector credentials remain configuration-as-code until a slot is declared.\";\n }\n if (capability === \"vault_not_configured\") {\n return \"Credential storage is not configured. Set credentials.encryptionKey before managing connector credentials here.\";\n }\n return \"Credential management requires an eligible Clerk operator. Bearer-authenticated sessions can inspect connections but cannot manage stored credentials.\";\n }\n function updateCapabilities() {\n const credentialsAvailable = DATA?.credentialManagement === \"available\";\n $(\"credentialsNav\").classList.toggle(\"hidden\", !credentialsAvailable);\n $(\"activityNav\").classList.toggle(\"hidden\", !DATA?.activityEnabled);\n $(\"credentialUnavailable\").classList.toggle(\"hidden\", credentialsAvailable);\n $(\"credentialList\").classList.toggle(\"hidden\", !credentialsAvailable);\n $(\"credentialUnavailable\").textContent = credentialsAvailable ? \"\" : credentialUnavailableCopy(DATA?.credentialManagement);\n $(\"activityUnavailable\").classList.toggle(\"hidden\", Boolean(DATA?.activityEnabled));\n $(\"activityAvailable\").classList.toggle(\"hidden\", !DATA?.activityEnabled);\n }\n function activatePage(page, options) {\n const next = PAGE_META[page] ? page : \"connections\";\n CURRENT_PAGE = next;\n for (const name of Object.keys(PAGE_META)) {\n $(name + \"View\").classList.toggle(\"hidden\", name !== next);\n const link = $(name + \"Nav\");\n if (name === next) link.setAttribute(\"aria-current\", \"page\");\n else link.removeAttribute(\"aria-current\");\n }\n $(\"gateHeading\").textContent = PAGE_META[next].label;\n document.title = PAGE_META[next].label + \" \u2014 \" + TITLE_SUFFIX;\n if (DATA) {\n updateCapabilities();\n if (next === \"connections\") renderConnections();\n if (next === \"credentials\") renderCredentials();\n if (next === \"activity\" && DATA.activityEnabled && !ACTIVITY_LOADED) {\n loadActivity(true);\n }\n }\n if (next !== \"credentials\") {\n $(\"credentialList\").innerHTML = \"\";\n setNotice(\"\");\n }\n if (options?.focus) $(DATA ? next + \"Heading\" : \"gateHeading\").focus();\n }\n function navigateTo(page, href) {\n history.pushState({ operatorPage: page }, \"\", href);\n activatePage(page, { focus: true });\n }\n async function load() {\n const generation = SESSION_GENERATION;\n let token;\n try {\n token = await sessionToken();\n } catch (error) {\n if (generation !== SESSION_GENERATION) return;\n return showGate(\n \"Could not read the Clerk session: \" + errorMessage(error, \"unknown error\")\n );\n }\n if (generation !== SESSION_GENERATION) return;\n if (!token) return showGate(\"\");\n let res;\n try {\n res = await fetch(\"/ui/data\", { headers: { Authorization: \"Bearer \" + token } });\n } catch (error) {\n if (generation !== SESSION_GENERATION) return;\n return showGate(\"Network error: \" + errorMessage(error, \"unknown error\"));\n }\n if (generation !== SESSION_GENERATION) return;\n if (res.status === 401 || res.status === 403) {\n if (AUTH.kind === \"clerk\") {\n return showGate(\n res.status === 403 ? \"This Clerk account is not allowed to access connecta.\" : \"Your Clerk session was not accepted. Sign out and try again.\"\n );\n }\n localStorage.removeItem(KEY);\n return showGate(\"Token rejected \u2014 enter a valid bearer token.\");\n }\n if (!res.ok) return showGate(\"Error \" + res.status);\n let data;\n try {\n data = await res.json();\n } catch {\n if (generation !== SESSION_GENERATION) return;\n return showGate(\"Operator data could not be read.\");\n }\n if (generation !== SESSION_GENERATION) return;\n DATA = data;\n $(\"gate\").classList.add(\"hidden\");\n $(\"app\").classList.remove(\"hidden\");\n $(\"appNav\").classList.remove(\"hidden\");\n const si = data.serverInfo || {};\n $(\"serverInfo\").textContent = (si.name || PRODUCT_NAME) + \" v\" + (data.connectaVersion || \"?\");\n updateCapabilities();\n activatePage(CURRENT_PAGE);\n }\n function actorLabel(actor) {\n if (!actor || !actor.kind) return \"unknown\";\n return actor.label ? actor.kind + \" \u00B7 \" + actor.label : actor.id ? actor.kind + \" \u00B7 \" + actor.id : actor.kind;\n }\n function renderActivity() {\n const list = $(\"activityList\");\n list.innerHTML = \"\";\n const query = $(\"activitySearch\").value.trim().toLowerCase();\n const visible = ACTIVITY.filter((event) => {\n if (!query) return true;\n const actor = event.actor || {};\n return [\n event.address,\n event.connectorId,\n event.toolName,\n event.source,\n event.outcome,\n event.errorCode,\n actor.kind,\n actor.id,\n actor.namespace,\n actor.label\n ].some((value) => String(value || \"\").toLowerCase().includes(query));\n });\n const uniqueTools = new Set(ACTIVITY.map((event) => event.address)).size;\n $(\"activitySummary\").textContent = ACTIVITY.length ? ACTIVITY.length + \" loaded call\" + (ACTIVITY.length === 1 ? \"\" : \"s\") + \" \u00B7 \" + uniqueTools + \" tool\" + (uniqueTools === 1 ? \"\" : \"s\") + \" \u00B7 no arguments or results stored\" : \"Arguments and results are never stored.\";\n if (visible.length === 0) {\n list.innerHTML = '<div class=\"activity-empty\">' + (query ? \"No loaded activity matches this search.\" : \"No connector tool calls recorded yet.\") + \"</div>\";\n }\n for (const event of visible) {\n const item = document.createElement(\"article\");\n const outcomeClass = [\n \"success\",\n \"error\",\n \"timeout\",\n \"cancelled\"\n ].includes(event.outcome) ? event.outcome : \"error\";\n item.className = \"activity-item \" + outcomeClass;\n const retryCopy = event.attempts > 1 ? \" \u00B7 \" + esc(event.attempts) + \" attempts\" : \"\";\n const errorCopy = event.errorCode ? \" \u00B7 \" + esc(event.errorCode) : \"\";\n const actorId = event.actor?.id ? event.actor.namespace ? event.actor.namespace + \" \u00B7 \" + event.actor.id : event.actor.id : \"\";\n const stableActorId = actorId && (event.actor?.label || event.actor?.namespace) ? '<div class=\"activity-actor-id mono\">' + esc(actorId) + \"</div>\" : \"\";\n item.innerHTML = '<div class=\"activity-stamp\"><span class=\"dot ' + (outcomeClass === \"success\" ? \"ok\" : \"\") + '\" aria-hidden=\"true\"></span><div><time class=\"activity-time\" datetime=\"' + esc(event.occurredAt) + '\">' + esc(formatDate(event.occurredAt)) + '</time><div class=\"activity-actor\">' + esc(actorLabel(event.actor)) + \"</div>\" + stableActorId + '</div></div><div><div class=\"activity-address\">' + esc(event.address) + '</div><div class=\"activity-detail\">' + esc(event.source) + retryCopy + errorCopy + '</div></div><div><div class=\"activity-outcome\">' + esc(event.outcome) + '</div><div class=\"activity-detail\">' + esc(event.durationMs) + \" ms</div></div>\";\n list.appendChild(item);\n }\n $(\"moreActivity\").classList.toggle(\"hidden\", !ACTIVITY_CURSOR);\n }\n async function loadActivity(reset) {\n if (!DATA?.activityEnabled) return;\n const sessionGeneration = SESSION_GENERATION;\n if (reset) ACTIVITY_GENERATION += 1;\n const activityGeneration = ACTIVITY_GENERATION;\n const isCurrent = () => sessionGeneration === SESSION_GENERATION && activityGeneration === ACTIVITY_GENERATION;\n $(\"activityNotice\").textContent = \"Loading activity\u2026\";\n $(\"activityNotice\").setAttribute(\"role\", \"status\");\n $(\"activityList\").setAttribute(\"aria-busy\", \"true\");\n $(\"refreshActivity\").disabled = true;\n $(\"moreActivity\").disabled = true;\n try {\n const token = await sessionToken();\n if (!isCurrent()) return;\n if (!token) return showGate(\"Your session has expired.\");\n const cursor = reset ? null : ACTIVITY_CURSOR;\n const params = new URLSearchParams({ limit: \"50\" });\n if (cursor) params.set(\"cursor\", cursor);\n const res = await fetch(\"/ui/activity?\" + params, {\n headers: { Authorization: \"Bearer \" + token }\n });\n if (!isCurrent()) return;\n let payload = {};\n try {\n payload = await res.json();\n } catch {\n }\n if (!isCurrent()) return;\n if (res.status === 401) {\n return showGate(\"Your session was not accepted. Sign in again.\");\n }\n if (res.status === 403) {\n clearActivityState();\n $(\"activityNotice\").setAttribute(\"role\", \"alert\");\n $(\"activityNotice\").textContent = \"This identity may not read activity history.\";\n return;\n }\n if (!res.ok) {\n throw new Error(\n payload.error || \"Activity could not be loaded (\" + res.status + \").\"\n );\n }\n ACTIVITY = reset ? payload.events || [] : ACTIVITY.concat(payload.events || []);\n ACTIVITY_CURSOR = payload.nextCursor || null;\n ACTIVITY_LOADED = true;\n $(\"activityNotice\").textContent = \"\";\n renderActivity();\n } catch (error) {\n if (!isCurrent()) return;\n $(\"activityNotice\").setAttribute(\"role\", \"alert\");\n $(\"activityNotice\").textContent = errorMessage(\n error,\n \"Activity could not be loaded.\"\n );\n } finally {\n if (isCurrent()) {\n $(\"activityList\").setAttribute(\"aria-busy\", \"false\");\n $(\"refreshActivity\").disabled = false;\n $(\"moreActivity\").disabled = false;\n }\n }\n }\n function renderConnections() {\n const data = DATA;\n if (!data) return;\n const q = $(\"filter\").value.trim().toLowerCase();\n const list = $(\"list\");\n list.innerHTML = \"\";\n for (const filtered of filterUiConnectors(data.connectors, q)) {\n const c = filtered.connector;\n const tools = filtered.tools;\n const el = document.createElement(\"div\");\n el.className = \"card\";\n const status = c.status === \"ok\" ? \"Connected\" : c.status === \"auth_required\" ? \"Authorization needed\" : \"Unavailable\";\n let head = '<div class=\"connector-head\"><div><div class=\"connector-title\"><span class=\"dot ' + esc(c.status) + '\" aria-hidden=\"true\"></span><h2>' + esc(c.title || c.id) + \"</h2></div>\";\n if (c.description) {\n head += '<p class=\"connector-description meta\">' + esc(c.description) + \"</p>\";\n }\n head += '</div><div class=\"connector-state cap\">' + esc(status) + \" \u00B7 \" + c.toolCount + (c.toolCount === 1 ? \" tool\" : \" tools\") + '<br><span class=\"mono\">' + esc(c.id) + \"</span></div></div>\";\n if (c.message) {\n head += '<p class=\"connector-message msg\">' + esc(c.message) + \"</p>\";\n }\n if (c.authorizationUrl) {\n const safe = safeHttp(c.authorizationUrl);\n head += safe ? '<p class=\"connector-auth\"><a class=\"linklike\" href=\"' + esc(safe) + '\" target=\"_blank\" rel=\"noopener\">Authorize connector \u2192</a></p>' : '<p class=\"connector-auth meta\">Authorization URL: ' + esc(c.authorizationUrl) + \"</p>\";\n }\n if (c.oauth && data.oauthManagement) {\n const oauthName = c.title || c.id;\n head += '<div class=\"credential-actions\">';\n head += '<button type=\"button\" class=\"linklike danger\" aria-label=\"Disconnect OAuth for ' + esc(oauthName) + '\" data-oauth-action=\"disconnect\" data-connector=\"' + esc(c.id) + '\">Disconnect OAuth</button>';\n head += '<button type=\"button\" class=\"linklike\" aria-label=\"' + (c.status === \"ok\" ? \"Reconnect OAuth for \" : \"Restart authorization for \") + esc(oauthName) + '\" data-oauth-action=\"reconnect\" data-connector=\"' + esc(c.id) + '\">' + (c.status === \"ok\" ? \"Reconnect OAuth\" : \"Restart authorization\") + \"</button></div>\";\n }\n if (c.credential) {\n head += '<p class=\"connector-auth\"><a class=\"linklike\" href=\"/credentials\" data-operator-page=\"credentials\">Manage credential \u2192</a></p>';\n }\n let body = \"\";\n if (tools.length) {\n body = \"<details\" + (q ? \" open\" : \"\") + '><summary class=\"linklike\">Show tools (' + tools.length + ')</summary><div class=\"tool-list\">';\n for (const t of tools) {\n body += '<div class=\"tool\"><code>' + esc(t.address) + \"</code>\";\n if (t.description) body += '<span class=\"td\">' + esc(t.description) + \"</span>\";\n body += \"</div>\";\n }\n body += \"</div></details>\";\n }\n el.innerHTML = head + body;\n list.appendChild(el);\n }\n if (!list.children.length) {\n list.innerHTML = '<p class=\"empty\">' + (q ? \"No connectors or tools match this filter.\" : \"No connectors are declared in this deployment.\") + \"</p>\";\n }\n }\n async function operatorRequest(path, method, generation, body) {\n const token = await sessionToken();\n if (generation !== SESSION_GENERATION) {\n throw new Error(\"The operator session changed.\");\n }\n if (!token) throw new Error(\"Your Clerk session has expired.\");\n const res = await fetch(path, {\n method,\n headers: {\n Authorization: \"Bearer \" + token,\n ...body ? { \"Content-Type\": \"application/json\" } : {}\n },\n ...body ? { body: JSON.stringify(body) } : {}\n });\n if (res.status === 204) return null;\n let payload = {};\n try {\n payload = await res.json();\n } catch {\n }\n if (!res.ok) throw new Error(payload.error || \"Request failed (\" + res.status + \").\");\n return payload;\n }\n $(\"list\").onclick = async (event) => {\n const button = closestElement(\n event.target,\n \"[data-oauth-action]\"\n );\n if (!button) return;\n const connector = button.dataset.connector;\n const action = button.dataset.oauthAction;\n if (!connector || action !== \"disconnect\" && action !== \"reconnect\") return;\n const generation = SESSION_GENERATION;\n const question = action === \"disconnect\" ? \"Disconnect OAuth for \" + connector + \"? Stored credentials and any pending authorization will be removed.\" : \"Restart OAuth for \" + connector + \"? Stored credentials and any pending authorization will be replaced.\";\n if (!window.confirm(question)) return;\n setOauthNotice(\"\");\n const buttons = [...document.querySelectorAll(\n '[data-connector=\"' + CSS.escape(connector) + '\"]'\n )];\n buttons.forEach((item) => {\n item.disabled = true;\n });\n try {\n const result = await operatorRequest(\n \"/ui/oauth/\" + encodeURIComponent(connector),\n action === \"disconnect\" ? \"DELETE\" : \"POST\",\n generation\n );\n if (generation !== SESSION_GENERATION) return;\n await load();\n if (generation !== SESSION_GENERATION) return;\n setOauthNotice(\n action === \"disconnect\" ? \"OAuth disconnected. Restart authorization when you are ready to reconnect.\" : result?.message || \"Authorization restarted. Open the authorization link to reconnect.\"\n );\n $(\"oauthNotice\").focus();\n } catch (error) {\n if (generation !== SESSION_GENERATION) return;\n try {\n await load();\n } catch {\n }\n if (generation !== SESSION_GENERATION) return;\n setOauthNotice(errorMessage(error, \"OAuth action failed.\"), true);\n $(\"oauthNotice\").focus();\n } finally {\n if (generation === SESSION_GENERATION) {\n buttons.forEach((item) => {\n item.disabled = false;\n });\n }\n }\n };\n function renderCredentials() {\n const data = DATA;\n if (!data) return;\n const list = $(\"credentialList\");\n list.innerHTML = \"\";\n if (data.credentialManagement !== \"available\") return;\n for (const c of data.connectors) {\n const cred = c.credential;\n if (!cred) continue;\n const configured = Boolean(cred.configured);\n const removable = configured || Boolean(cred.removable);\n const state = configured ? cred.fields?.length ? \"configured\" : \"configured \u00B7 \u2022\u2022\u2022\u2022\" + esc(cred.lastFour || \"\") : \"not configured\";\n const updated = configured && cred.updatedAt ? \" \u00B7 updated \" + esc(formatDate(cred.updatedAt)) : \"\";\n const el = document.createElement(\"section\");\n el.className = \"credential-card\";\n el.id = \"credential-\" + c.id;\n el.setAttribute(\"aria-labelledby\", \"credential-title-\" + c.id);\n let body = '<div class=\"credential-head\"><div class=\"connector-title\"><span class=\"dot ' + (configured ? \"ok\" : \"auth_required\") + '\" aria-hidden=\"true\"></span><h2 id=\"credential-title-' + esc(c.id) + '\">' + esc(c.title || c.id) + '</h2></div><span class=\"credential-state\">' + state + updated + \"</span></div>\";\n body += '<p class=\"mono\">' + esc(c.id) + \" \u00B7 \" + esc(cred.label) + \"</p>\";\n if (cred.description) {\n body += '<p class=\"credential-copy meta\">' + esc(cred.description) + \"</p>\";\n }\n if (cred.fields?.length) {\n body += '<div class=\"credential-field-summary\">';\n for (const field of cred.fields) {\n const fieldState = field.configured ? \"configured \u00B7 \u2022\u2022\u2022\u2022\" + esc(field.lastFour || \"\") + (field.updatedAt ? \" \u00B7 updated \" + esc(formatDate(field.updatedAt)) : \"\") : \"not configured\";\n body += \"<div><span>\" + esc(field.label) + '</span><span class=\"meta\">' + fieldState + \"</span></div>\";\n }\n body += \"</div>\";\n }\n if (cred.error) body += '<div class=\"msg\">' + esc(cred.error) + \"</div>\";\n if (cred.notice) {\n body += '<p class=\"credential-copy meta\">' + esc(cred.notice) + \"</p>\";\n }\n body += '<div class=\"credential-actions\">';\n body += '<button class=\"linklike\" type=\"button\" data-credential-action=\"edit\" data-connector=\"' + esc(c.id) + '\">' + (removable ? \"Replace\" : \"Add credential\") + \"</button>\";\n if (configured && cred.testable) {\n body += '<button class=\"linklike\" type=\"button\" data-credential-action=\"test\" data-connector=\"' + esc(c.id) + '\">Test</button>';\n }\n if (removable) {\n body += '<button type=\"button\" class=\"linklike danger\" data-credential-action=\"remove\" data-connector=\"' + esc(c.id) + '\">Remove</button>';\n }\n body += \"</div>\";\n body += '<div class=\"credential-form hidden\" data-credential-form=\"' + esc(c.id) + '\">';\n if (cred.fields && cred.fields.length) {\n body += '<div class=\"credential-fields\">';\n for (const [index, field] of cred.fields.entries()) {\n const inputId = \"credential-input-\" + c.id + \"-\" + index;\n body += '<div class=\"credential-field\"><label for=\"' + esc(inputId) + '\">' + esc(field.label) + '</label><input id=\"' + esc(inputId) + '\" type=\"' + esc(field.inputType || \"password\") + '\" data-credential-field=\"' + esc(field.name) + '\" placeholder=\"' + esc(field.placeholder || field.label) + '\" autocomplete=\"' + (field.inputType === \"password\" ? \"new-password\" : \"off\") + '\" autocapitalize=\"none\" spellcheck=\"false\"></div>';\n }\n body += \"</div>\";\n } else {\n const inputId = \"credential-input-\" + c.id;\n body += '<label class=\"visually-hidden\" for=\"' + esc(inputId) + '\">' + esc(cred.label) + '</label><input id=\"' + esc(inputId) + '\" type=\"password\" data-credential-input=\"' + esc(c.id) + '\" aria-label=\"' + esc(cred.label) + '\" placeholder=\"' + esc(cred.placeholder || \"Paste credential\") + '\" autocomplete=\"new-password\" autocapitalize=\"none\" spellcheck=\"false\">';\n }\n body += '<button class=\"linklike\" type=\"button\" data-credential-action=\"save\" data-connector=\"' + esc(c.id) + '\">Save</button><button class=\"linklike\" type=\"button\" data-credential-action=\"cancel\" data-connector=\"' + esc(c.id) + '\">Cancel</button></div>';\n el.innerHTML = body;\n list.appendChild(el);\n }\n }\n async function credentialRequest(connector, method, action, body, generation) {\n const suffix = action ? \"/\" + action : \"\";\n return operatorRequest(\n \"/ui/credentials/\" + encodeURIComponent(connector) + suffix,\n method,\n generation,\n body ?? void 0\n );\n }\n function credentialForm(connector) {\n const form = document.querySelector(\n '[data-credential-form=\"' + CSS.escape(connector) + '\"]'\n );\n if (!form) throw new Error(\"Credential form is unavailable.\");\n return form;\n }\n $(\"credentialList\").onclick = async (event) => {\n const button = closestElement(\n event.target,\n \"[data-credential-action]\"\n );\n if (!button) return;\n const connector = button.dataset.connector;\n const action = button.dataset.credentialAction;\n if (!connector || !action) return;\n const form = credentialForm(connector);\n const generation = SESSION_GENERATION;\n if (action === \"edit\") {\n form.classList.remove(\"hidden\");\n form.querySelector(\"input\")?.focus();\n return;\n }\n if (action === \"cancel\") {\n form.querySelectorAll(\"input\").forEach((input) => {\n input.value = \"\";\n });\n form.classList.add(\"hidden\");\n document.querySelector(\n '[data-credential-action=\"edit\"][data-connector=\"' + CSS.escape(connector) + '\"]'\n )?.focus();\n return;\n }\n if (action === \"remove\" && !window.confirm(\n \"Remove this credential? The connector will stop authenticating until a replacement is added.\"\n )) return;\n setNotice(\"\");\n $(\"credentialList\").setAttribute(\"aria-busy\", \"true\");\n const buttons = [...document.querySelectorAll(\n '[data-connector=\"' + CSS.escape(connector) + '\"]'\n )];\n buttons.forEach((item) => {\n item.disabled = true;\n });\n try {\n if (action === \"save\") {\n const fieldInputs = [\n ...form.querySelectorAll(\"[data-credential-field]\")\n ];\n if (fieldInputs.length) {\n const values = {};\n for (const input of fieldInputs) {\n const value = input.value.trim();\n if (!value) throw new Error(\"Complete every credential field before saving.\");\n const field = input.dataset.credentialField;\n if (!field) throw new Error(\"Credential field is unnamed.\");\n values[field] = value;\n }\n await credentialRequest(connector, \"PUT\", \"\", { values }, generation);\n } else {\n const input = form.querySelector(\n \"[data-credential-input]\"\n );\n if (!input) throw new Error(\"Credential input is unavailable.\");\n const value = input.value.trim();\n if (!value) throw new Error(\"Paste a credential before saving.\");\n await credentialRequest(connector, \"PUT\", \"\", { value }, generation);\n }\n if (generation !== SESSION_GENERATION) return;\n form.querySelectorAll(\"input\").forEach((input) => {\n input.value = \"\";\n });\n setNotice(\"Credential saved.\");\n await load();\n if (generation !== SESSION_GENERATION) return;\n $(\"credentialNotice\").focus();\n } else if (action === \"remove\") {\n await credentialRequest(connector, \"DELETE\", \"\", null, generation);\n if (generation !== SESSION_GENERATION) return;\n setNotice(\"Credential removed.\");\n await load();\n if (generation !== SESSION_GENERATION) return;\n $(\"credentialNotice\").focus();\n } else if (action === \"test\") {\n const result = await credentialRequest(\n connector,\n \"POST\",\n \"test\",\n null,\n generation\n );\n if (generation !== SESSION_GENERATION) return;\n setNotice(\n result?.message || (result?.ok ? \"Credential is valid.\" : \"Credential test failed.\"),\n !result?.ok\n );\n }\n } catch (error) {\n if (generation !== SESSION_GENERATION) return;\n setNotice(errorMessage(error, \"Credential action failed.\"), true);\n } finally {\n if (generation === SESSION_GENERATION) {\n $(\"credentialList\").setAttribute(\"aria-busy\", \"false\");\n buttons.forEach((item) => {\n item.disabled = false;\n });\n }\n }\n };\n $(\"save\").onclick = async () => {\n const v = $(\"token\").value.trim();\n if (!v) return;\n clearIdentityState();\n localStorage.setItem(KEY, v);\n $(\"token\").value = \"\";\n await load();\n if (DATA) $(CURRENT_PAGE + \"Heading\").focus();\n };\n $(\"change\").onclick = () => {\n localStorage.removeItem(KEY);\n showGate(\"\");\n $(\"token\").focus();\n };\n $(\"copyMcpUrl\").onclick = async () => {\n const button = $(\"copyMcpUrl\");\n try {\n await navigator.clipboard.writeText(MCP_URL);\n button.textContent = \"Copied\";\n } catch {\n button.textContent = \"Copy failed\";\n }\n window.setTimeout(() => {\n button.textContent = \"Copy URL\";\n }, 1600);\n };\n $(\"signin\").onclick = () => Clerk.redirectToSignIn({\n signInFallbackRedirectUrl: window.location.href,\n signUpFallbackRedirectUrl: window.location.href\n });\n function signOut() {\n clearIdentityState();\n return Clerk.signOut({ redirectUrl: window.location.href });\n }\n $(\"gateSignout\").onclick = signOut;\n $(\"signout\").onclick = signOut;\n $(\"filter\").oninput = () => {\n if (DATA) renderConnections();\n };\n $(\"refreshActivity\").onclick = () => loadActivity(true);\n $(\"moreActivity\").onclick = () => loadActivity(false);\n $(\"activitySearch\").oninput = () => renderActivity();\n document.addEventListener(\"click\", (event) => {\n const link = closestElement(\n event.target,\n \"a[data-operator-page]\"\n );\n if (!link || event.defaultPrevented || event.button !== 0 || event.metaKey || event.ctrlKey || event.shiftKey || event.altKey) return;\n const target = new URL(link.href, window.location.href);\n if (target.origin !== window.location.origin) return;\n const page = link.dataset.operatorPage;\n if (page !== \"connections\" && page !== \"credentials\" && page !== \"activity\") return;\n event.preventDefault();\n navigateTo(page, target.pathname + target.search + target.hash);\n });\n window.addEventListener(\"popstate\", () => {\n activatePage(pageForPath(window.location.pathname), { focus: true });\n });\n async function init() {\n if (AUTH.kind === \"clerk\") {\n $(\"clerkGate\").classList.remove(\"hidden\");\n $(\"signout\").classList.remove(\"hidden\");\n try {\n if (!window.Clerk) {\n return showGate(\"Clerk could not load. Check your network and try again.\");\n }\n await Clerk.load({\n ...AUTH.signInUrl ? { signInUrl: AUTH.signInUrl } : {},\n ...AUTH.signUpUrl ? { signUpUrl: AUTH.signUpUrl } : {},\n signInFallbackRedirectUrl: window.location.href,\n signUpFallbackRedirectUrl: window.location.href,\n afterSignOutUrl: window.location.href\n });\n CLERK_SESSION_ID = Clerk.session?.id ?? null;\n Clerk.addListener((resources) => {\n const nextSessionId = resources.session?.id ?? null;\n if (nextSessionId === CLERK_SESSION_ID) return;\n CLERK_SESSION_ID = nextSessionId;\n showGate(\"\");\n void load();\n });\n } catch (error) {\n return showGate(\n \"Clerk could not initialize: \" + errorMessage(error, \"unknown error\")\n );\n }\n } else {\n $(\"tokenGate\").classList.remove(\"hidden\");\n $(\"change\").classList.remove(\"hidden\");\n }\n activatePage(pageForPath(window.location.pathname));\n await load();\n }\n if (AUTH.kind === \"clerk\") {\n window.addEventListener(\"load\", init);\n } else {\n init();\n }\n})();\n";
|
|
3
3
|
//# sourceMappingURL=generated.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"generated.d.ts","sourceRoot":"","sources":["../../src/operator-ui/generated.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,eAAe,
|
|
1
|
+
{"version":3,"file":"generated.d.ts","sourceRoot":"","sources":["../../src/operator-ui/generated.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,eAAe,wuUAAwuU,CAAC;AACrwU,eAAO,MAAM,kBAAkB,+jjCAA67iC,CAAC"}
|