studiograph 1.3.48-next.265 → 1.3.48-next.267

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (111) hide show
  1. package/dist/mcp/connector-catalog.d.ts +100 -0
  2. package/dist/mcp/connector-catalog.js +234 -0
  3. package/dist/mcp/connector-catalog.js.map +1 -0
  4. package/dist/mcp/connector-manager.js +6 -1
  5. package/dist/mcp/connector-manager.js.map +1 -1
  6. package/dist/mcp/tools.js +35 -10
  7. package/dist/mcp/tools.js.map +1 -1
  8. package/dist/server/canonical-origin.d.ts +41 -0
  9. package/dist/server/canonical-origin.js +62 -0
  10. package/dist/server/canonical-origin.js.map +1 -0
  11. package/dist/server/routes/artifact-export-api.js +10 -14
  12. package/dist/server/routes/artifact-export-api.js.map +1 -1
  13. package/dist/server/routes/connectors-api.js +39 -15
  14. package/dist/server/routes/connectors-api.js.map +1 -1
  15. package/dist/server/routes/oauth-api.d.ts +1 -5
  16. package/dist/server/routes/oauth-api.js +8 -16
  17. package/dist/server/routes/oauth-api.js.map +1 -1
  18. package/dist/web/_app/immutable/assets/{3.CuCc4ZHI.css → 3.DzGYDX-U.css} +1 -1
  19. package/dist/web/_app/immutable/assets/4.BLOz0wHY.css +1 -0
  20. package/dist/web/_app/immutable/assets/AgentRunSparkle.CKB3dqsz.css +1 -0
  21. package/dist/web/_app/immutable/assets/KanbanView.BAlTjtYG.css +1 -0
  22. package/dist/web/_app/immutable/assets/SettingsDialog.CFukBBGR.css +1 -0
  23. package/dist/web/_app/immutable/assets/{WorkspaceView.Cd6TS6oo.css → WorkspaceView.CjUSwQuU.css} +1 -1
  24. package/dist/web/_app/immutable/chunks/{BpMTCpZW2.js → A3PbRVDI2.js} +1 -1
  25. package/dist/web/_app/immutable/chunks/{Cm5olAoz.js → AI-17gyY.js} +1 -1
  26. package/dist/web/_app/immutable/chunks/B67Zknhm.js +12 -0
  27. package/dist/web/_app/immutable/chunks/{S0v4n3M8.js → BQEM_BEG.js} +1 -1
  28. package/dist/web/_app/immutable/chunks/{DWo0EAlb.js → BScg4GjA.js} +2 -2
  29. package/dist/web/_app/immutable/chunks/{CpOrPclx.js → Bi5JIkOP.js} +1 -1
  30. package/dist/web/_app/immutable/chunks/{C1buLhjm.js → Biwwwz6X.js} +1 -1
  31. package/dist/web/_app/immutable/chunks/Bjs00b2h2.js +1 -0
  32. package/dist/web/_app/immutable/chunks/{DIZIxzq42.js → C-6KVArM2.js} +1 -1
  33. package/dist/web/_app/immutable/chunks/C65Q_mg3.js +2 -0
  34. package/dist/web/_app/immutable/chunks/{Dfgg4DDd.js → C9rNF-Bd.js} +1 -1
  35. package/dist/web/_app/immutable/chunks/{DPRbIB3f.js → CUxoKSVx.js} +1 -1
  36. package/dist/web/_app/immutable/chunks/{iBMhzBmq.js → C_qoFhYr.js} +1 -1
  37. package/dist/web/_app/immutable/chunks/{B-CQqYgt.js → Cb3BVFFn.js} +1 -1
  38. package/dist/web/_app/immutable/chunks/{Ej_xBsFC.js → CcrN3rzd.js} +1 -1
  39. package/dist/web/_app/immutable/chunks/{DA2on8nn2.js → ChQT3VLU2.js} +1 -1
  40. package/dist/web/_app/immutable/chunks/{BcarInLG.js → CxfwdM7W.js} +3 -3
  41. package/dist/web/_app/immutable/chunks/{B4dNFbPh.js → D4KW6Wch.js} +1 -1
  42. package/dist/web/_app/immutable/chunks/DAU9K362.js +1 -0
  43. package/dist/web/_app/immutable/chunks/DAqLp_2P.js +1 -0
  44. package/dist/web/_app/immutable/chunks/{BmFdfOoW.js → DHW8pXbR.js} +1 -1
  45. package/dist/web/_app/immutable/chunks/{iFJGBP2P.js → DJTvBXur.js} +1 -1
  46. package/dist/web/_app/immutable/chunks/{C9uLX8pa.js → DQGoiRR0.js} +1 -1
  47. package/dist/web/_app/immutable/chunks/DRN5mkzR.js +1 -0
  48. package/dist/web/_app/immutable/chunks/{q1tHnoyc2.js → DRRnTiLr2.js} +1 -1
  49. package/dist/web/_app/immutable/chunks/{Dig68LLS2.js → DWwl2R562.js} +1 -1
  50. package/dist/web/_app/immutable/chunks/Ddh1A5eA.js +2 -0
  51. package/dist/web/_app/immutable/chunks/{Cn714K-w.js → DhCzBEAa.js} +1 -1
  52. package/dist/web/_app/immutable/chunks/{BYC7bZbA.js → DnDp6J5t.js} +1 -1
  53. package/dist/web/_app/immutable/chunks/{il1jgTa3.js → DqABu-W5.js} +1 -1
  54. package/dist/web/_app/immutable/chunks/DtxycoZJ.js +2 -0
  55. package/dist/web/_app/immutable/chunks/{CqzLrdin.js → GsfCDqgx.js} +1 -1
  56. package/dist/web/_app/immutable/chunks/{B_JkXNED.js → HSAlbmU2.js} +1 -1
  57. package/dist/web/_app/immutable/chunks/{CWw5e4gQ.js → HsZnhz65.js} +1 -1
  58. package/dist/web/_app/immutable/chunks/{P8t1RSi32.js → KEU82pwj2.js} +1 -1
  59. package/dist/web/_app/immutable/chunks/R7Lu4BpY2.js +2 -0
  60. package/dist/web/_app/immutable/chunks/{CSFqzxo72.js → SDP5VNA82.js} +1 -1
  61. package/dist/web/_app/immutable/chunks/{B_p4bA2Z.js → YeWKDUtx.js} +1 -1
  62. package/dist/web/_app/immutable/chunks/{BhKuC9G4.js → _F7l3B26.js} +3 -3
  63. package/dist/web/_app/immutable/chunks/_V7dwjfe2.js +1 -0
  64. package/dist/web/_app/immutable/chunks/{D5nkV1N62.js → gXc9dKWI2.js} +1 -1
  65. package/dist/web/_app/immutable/chunks/{ygCGHqA72.js → hAyVfjCD2.js} +1 -1
  66. package/dist/web/_app/immutable/chunks/{CAwlBxR4.js → mw5OAhDc.js} +1 -1
  67. package/dist/web/_app/immutable/chunks/{Dx23ktx_.js → rJY_35Ba.js} +1 -1
  68. package/dist/web/_app/immutable/chunks/{DL8zIIt52.js → w9r21hdX2.js} +1 -1
  69. package/dist/web/_app/immutable/chunks/zdCEzdCk2.js +2 -0
  70. package/dist/web/_app/immutable/entry/app.DZmPbzi-.js +2 -0
  71. package/dist/web/_app/immutable/entry/start.BrU16SCN.js +1 -0
  72. package/dist/web/_app/immutable/nodes/{0.DVp5GCVE.js → 0.WAToqGqG.js} +2 -2
  73. package/dist/web/_app/immutable/nodes/{1.CfprkEBr.js → 1.CG1VY7mY.js} +1 -1
  74. package/dist/web/_app/immutable/nodes/{10.BpEOm6nm.js → 10.CZx92OMI.js} +1 -1
  75. package/dist/web/_app/immutable/nodes/{11.CGIBMhCc.js → 11.BoIW7Gc9.js} +1 -1
  76. package/dist/web/_app/immutable/nodes/{12.DffLJqj9.js → 12.Awh-CsBU.js} +1 -1
  77. package/dist/web/_app/immutable/nodes/{13.Cpl6M5Je.js → 13.CP5W0zb1.js} +1 -1
  78. package/dist/web/_app/immutable/nodes/{15.DoEwRs9L.js → 15.Dxl8GaH9.js} +1 -1
  79. package/dist/web/_app/immutable/nodes/{16.DawYNLRh.js → 16.C1oMKtaO.js} +1 -1
  80. package/dist/web/_app/immutable/nodes/{18.Dd18FDRk.js → 18.hVgSF_XO.js} +1 -1
  81. package/dist/web/_app/immutable/nodes/{19.DE0sV2lh.js → 19.CfAettkI.js} +1 -1
  82. package/dist/web/_app/immutable/nodes/{2.CkhFkTfL.js → 2.D3rvssHU.js} +4 -4
  83. package/dist/web/_app/immutable/nodes/3.CPHCnvu4.js +6 -0
  84. package/dist/web/_app/immutable/nodes/{4.DH4T3JKw.js → 4.dJkBkHoL.js} +4 -4
  85. package/dist/web/_app/immutable/nodes/{5.9uCJft9u.js → 5.Btfug_nX.js} +1 -1
  86. package/dist/web/_app/immutable/nodes/{6.DbtX1ydg.js → 6.Dkpwd5NE.js} +1 -1
  87. package/dist/web/_app/immutable/nodes/{7.DM94YJ9w.js → 7.Dq8uor4d.js} +1 -1
  88. package/dist/web/_app/immutable/nodes/{8.Bg8J3W9C.js → 8.Dt1RslW6.js} +1 -1
  89. package/dist/web/_app/immutable/nodes/{9.CiW_jtxU.js → 9.CcUccR1_.js} +1 -1
  90. package/dist/web/_app/version.json +1 -1
  91. package/dist/web/index.html +13 -13
  92. package/package.json +1 -1
  93. package/dist/web/_app/immutable/assets/4.BQtJCY5N.css +0 -1
  94. package/dist/web/_app/immutable/assets/KanbanView.BB_ORPCc.css +0 -1
  95. package/dist/web/_app/immutable/assets/SettingsDialog.CHzfQoo_.css +0 -1
  96. package/dist/web/_app/immutable/chunks/BgEzcid7.js +0 -1
  97. package/dist/web/_app/immutable/chunks/C2g_t-iJ2.js +0 -1
  98. package/dist/web/_app/immutable/chunks/CY6YkeE6.js +0 -1
  99. package/dist/web/_app/immutable/chunks/Cv4gSLga.js +0 -12
  100. package/dist/web/_app/immutable/chunks/DJDRGW3N2.js +0 -2
  101. package/dist/web/_app/immutable/chunks/DQEMvxpX.js +0 -2
  102. package/dist/web/_app/immutable/chunks/DiblfoaV.js +0 -1
  103. package/dist/web/_app/immutable/chunks/DkLBuVqB2.js +0 -2
  104. package/dist/web/_app/immutable/chunks/VfK-wQaf.js +0 -2
  105. package/dist/web/_app/immutable/chunks/baoK95Zs.js +0 -2
  106. package/dist/web/_app/immutable/chunks/i2CC1kS1.js +0 -1
  107. package/dist/web/_app/immutable/entry/app.Bius3tuc.js +0 -2
  108. package/dist/web/_app/immutable/entry/start.Bs7yVyhH.js +0 -1
  109. package/dist/web/_app/immutable/nodes/3.5qIJ7QFU.js +0 -6
  110. /package/dist/web/_app/immutable/assets/{run-with-agent.D6hf2pNJ.css → CodeMirrorEditor.D6hf2pNJ.css} +0 -0
  111. /package/dist/web/_app/immutable/chunks/{B_y9A6Kg2.js → B_y9A6Kg.js} +0 -0
@@ -0,0 +1,100 @@
1
+ /**
2
+ * Connector Catalog
3
+ *
4
+ * Curated catalog of MCP connectors Studiograph promotes as "Available" tiles
5
+ * in Settings → External Connectors, plus the runtime OAuth-routing table for
6
+ * the broker-backed subset.
7
+ *
8
+ * Each entry declares a `kind` that drives BOTH the client add-flow and the
9
+ * server-side auth path:
10
+ * - 'broker' — pre-registered OAuth app on auth.studiograph.com. The runtime
11
+ * routes OAuth through the broker (which holds the client secret). Requires
12
+ * a `hostname` for routing + a matching entry in the broker's CONNECTORS map.
13
+ * - 'dcr' — the remote MCP server self-registers via Dynamic Client
14
+ * Registration (RFC 7591). No broker app, no per-instance credentials.
15
+ * - 'token' — the user supplies an API key (Bearer Authorization header).
16
+ *
17
+ * `kind` is correctness-bearing, not cosmetic: ONLY 'broker' entries feed the
18
+ * OAuth routing table (`BROKER_HOSTS`). A 'dcr'/'token' hostname must never
19
+ * enter it, or its OAuth would wrongly route through the broker.
20
+ * `assertCatalogInvariants` guards the related invariant (every broker entry
21
+ * has a hostname) at module load — failing at boot, not at a user's click.
22
+ *
23
+ * Adding a 'broker' entry is a deliberate decision (provider relationship,
24
+ * rate-limit exposure, single point of compromise) — see
25
+ * docs/agents/agent-system.md § "Adding a new service to the broker". Adding a
26
+ * 'dcr'/'token' entry is just a verified URL + metadata.
27
+ */
28
+ declare const BROKER_URL = "https://auth.studiograph.com";
29
+ /** How a catalog connector authenticates — drives add-flow + routing. */
30
+ export type ConnectorAuthKind = 'broker' | 'dcr' | 'token';
31
+ /** Maturity badge shown on a visible tile. */
32
+ export type ConnectorStatus = 'stable' | 'beta' | 'limited';
33
+ export interface CatalogConnector {
34
+ /** url-safe slug — internal identity (config filename, OAuth state, polling key). */
35
+ name: string;
36
+ /** User-facing display label for the catalog tile. */
37
+ displayName: string;
38
+ /** Canonical MCP server URL the tile imports when added. Verified periodically. */
39
+ serverUrl: string;
40
+ /** Auth path + client add-flow this connector uses. */
41
+ kind: ConnectorAuthKind;
42
+ /** Maturity badge for a visible tile. Omit for hidden entries. */
43
+ status?: ConnectorStatus;
44
+ /** One-line honest capability note (e.g. "comments only") so a tile can't oversell. */
45
+ capability?: string;
46
+ /** Short marketing blurb for the tile. */
47
+ description?: string;
48
+ /** Grouping for the tile grid: 'Design' | 'CRM' | 'Comms' | 'Docs' … */
49
+ category?: string;
50
+ /** Icon asset slug for the tile (UI falls back to a generic glyph). */
51
+ icon?: string;
52
+ /**
53
+ * If true, the catalog suppresses the tile even though the runtime still
54
+ * routes OAuth (for broker entries) should someone configure it manually.
55
+ * Use for entries whose OAuth app/scope isn't generally available yet.
56
+ */
57
+ catalogHidden?: boolean;
58
+ /** kind:'broker' ONLY — hostname used for runtime OAuth routing to the broker. */
59
+ hostname?: string;
60
+ /** kind:'token' ONLY — how to prompt the user for their key (Bearer Authorization). */
61
+ token?: {
62
+ label: string;
63
+ helpUrl?: string;
64
+ };
65
+ }
66
+ /** Public catalog projection (drops routing/visibility internals). */
67
+ export type AvailableCatalogConnector = Omit<CatalogConnector, 'hostname' | 'catalogHidden'>;
68
+ export declare const CATALOG_CONNECTORS: readonly CatalogConnector[];
69
+ /**
70
+ * Pure invariant check, exported for direct unit testing AND called once at
71
+ * module load (below). Invariant: every kind:'broker' entry MUST have a
72
+ * non-empty hostname, because broker OAuth routing is keyed on hostname — a
73
+ * broker entry without one would silently drop out of `BROKER_HOSTS` and fail
74
+ * Connect at runtime.
75
+ */
76
+ export declare function assertCatalogInvariants(entries: readonly CatalogConnector[]): void;
77
+ /**
78
+ * Check if a connector URL has broker support.
79
+ * Returns the broker connect URL, or undefined if not supported.
80
+ */
81
+ export declare function getBrokerConnectUrl(connectorUrl: string, state: string): string | undefined;
82
+ /**
83
+ * Check if a connector URL is supported by the broker.
84
+ */
85
+ export declare function hasBrokerSupport(connectorUrl: string): boolean;
86
+ /**
87
+ * Catalog entries owners can add from Settings. Drops `catalogHidden` entries
88
+ * and anything already configured (matched by name OR displayName, case-
89
+ * insensitive). Projects the tile metadata the UI renders plus the `kind` /
90
+ * `status` that drive the add-flow and the badge.
91
+ */
92
+ export declare function listAvailableConnectors(configuredNames?: ReadonlySet<string>): AvailableCatalogConnector[];
93
+ /**
94
+ * Look up a catalog connector by slug or display name (case-insensitive).
95
+ * Used to enrich an already-configured connector with its curated catalog
96
+ * metadata (description) and to tell catalog connectors from custom ones.
97
+ */
98
+ export declare function getCatalogConnector(name: string): CatalogConnector | undefined;
99
+ /** Broker base URL for claim retrieval. */
100
+ export { BROKER_URL };
@@ -0,0 +1,234 @@
1
+ /**
2
+ * Connector Catalog
3
+ *
4
+ * Curated catalog of MCP connectors Studiograph promotes as "Available" tiles
5
+ * in Settings → External Connectors, plus the runtime OAuth-routing table for
6
+ * the broker-backed subset.
7
+ *
8
+ * Each entry declares a `kind` that drives BOTH the client add-flow and the
9
+ * server-side auth path:
10
+ * - 'broker' — pre-registered OAuth app on auth.studiograph.com. The runtime
11
+ * routes OAuth through the broker (which holds the client secret). Requires
12
+ * a `hostname` for routing + a matching entry in the broker's CONNECTORS map.
13
+ * - 'dcr' — the remote MCP server self-registers via Dynamic Client
14
+ * Registration (RFC 7591). No broker app, no per-instance credentials.
15
+ * - 'token' — the user supplies an API key (Bearer Authorization header).
16
+ *
17
+ * `kind` is correctness-bearing, not cosmetic: ONLY 'broker' entries feed the
18
+ * OAuth routing table (`BROKER_HOSTS`). A 'dcr'/'token' hostname must never
19
+ * enter it, or its OAuth would wrongly route through the broker.
20
+ * `assertCatalogInvariants` guards the related invariant (every broker entry
21
+ * has a hostname) at module load — failing at boot, not at a user's click.
22
+ *
23
+ * Adding a 'broker' entry is a deliberate decision (provider relationship,
24
+ * rate-limit exposure, single point of compromise) — see
25
+ * docs/agents/agent-system.md § "Adding a new service to the broker". Adding a
26
+ * 'dcr'/'token' entry is just a verified URL + metadata.
27
+ */
28
+ const BROKER_URL = 'https://auth.studiograph.com';
29
+ export const CATALOG_CONNECTORS = [
30
+ {
31
+ hostname: 'mcp.asana.com',
32
+ name: 'asana',
33
+ displayName: 'Asana',
34
+ serverUrl: 'https://mcp.asana.com/sse',
35
+ kind: 'broker',
36
+ status: 'stable',
37
+ category: 'Productivity',
38
+ description: 'Tasks, projects, and portfolios.',
39
+ },
40
+ {
41
+ hostname: 'mcp.figma.com',
42
+ name: 'figma',
43
+ displayName: 'Figma',
44
+ // Endpoint verified correct (Figma's official remote MCP server). Kept here
45
+ // so the broker still routes OAuth if someone configures it manually.
46
+ serverUrl: 'https://mcp.figma.com/mcp',
47
+ kind: 'broker',
48
+ // Hidden until Figma grants Studiograph access to the gated `mcp:connect`
49
+ // OAuth scope via their MCP catalog allowlist. Until then the OAuth flow
50
+ // fails with `Invalid scopes for app` (the scope is not available to
51
+ // general third-party apps). The broker CONNECTORS entry + endpoints are
52
+ // ready; only the scope grant + broker FIGMA_CLIENT_ID/SECRET are missing.
53
+ // See docs/agents/agent-system.md § "Adding a new service to the broker".
54
+ catalogHidden: true,
55
+ },
56
+ {
57
+ // Self-serve via Dynamic Client Registration (no broker app). Verified
58
+ // first-party: this exact url + requiresOAuth is a working connector in a
59
+ // live workspace.
60
+ name: 'superhuman',
61
+ displayName: 'Superhuman',
62
+ serverUrl: 'https://mcp.mail.superhuman.com/mcp',
63
+ kind: 'dcr',
64
+ status: 'stable',
65
+ category: 'Email',
66
+ description: 'Email and calendar — triage, draft, send, and schedule.',
67
+ },
68
+ {
69
+ // Self-serve via Dynamic Client Registration. Linear's remote MCP supports
70
+ // OAuth 2.1 + DCR (https://linear.app/docs/mcp), so this is one-click —
71
+ // no API key needed. (Linear also accepts a Bearer API key, but DCR is the
72
+ // cleaner add-flow.)
73
+ name: 'linear',
74
+ displayName: 'Linear',
75
+ serverUrl: 'https://mcp.linear.app/mcp',
76
+ kind: 'dcr',
77
+ status: 'stable',
78
+ category: 'Productivity',
79
+ description: 'Issues and projects — create, update, and search.',
80
+ },
81
+ {
82
+ // Notion remote MCP: OAuth 2.0 + DCR (RFC 7591) — https://developers.notion.com/guides/mcp
83
+ name: 'notion',
84
+ displayName: 'Notion',
85
+ serverUrl: 'https://mcp.notion.com/mcp',
86
+ kind: 'dcr',
87
+ status: 'stable',
88
+ category: 'Docs',
89
+ description: 'Pages and databases — search, read, and update.',
90
+ },
91
+ {
92
+ // GitHub official remote MCP. NOT dcr: its authorization server
93
+ // (github.com/login/oauth) has no DCR registration_endpoint, so a generic
94
+ // client can't self-register (it's "one-click" only for GitHub's
95
+ // pre-registered clients). But the server accepts a PAT via
96
+ // `Authorization: Bearer <pat>`, so it works as a self-serve token tile.
97
+ // https://docs.github.com/copilot (remote MCP server, PAT auth)
98
+ name: 'github',
99
+ displayName: 'GitHub',
100
+ serverUrl: 'https://api.githubcopilot.com/mcp/',
101
+ kind: 'token',
102
+ status: 'stable',
103
+ category: 'Developer',
104
+ description: 'Repositories, issues, and pull requests.',
105
+ token: { label: 'Personal access token', helpUrl: 'https://github.com/settings/tokens' },
106
+ },
107
+ {
108
+ // Sentry remote MCP: OAuth only — https://docs.sentry.io/product/sentry-mcp
109
+ name: 'sentry',
110
+ displayName: 'Sentry',
111
+ serverUrl: 'https://mcp.sentry.dev/mcp',
112
+ kind: 'dcr',
113
+ status: 'stable',
114
+ category: 'Developer',
115
+ description: 'Errors and performance — triage and debug issues.',
116
+ },
117
+ {
118
+ // Atlassian Rovo remote MCP: OAuth 2.1 + DCR — https://support.atlassian.com/atlassian-rovo-mcp-server
119
+ name: 'atlassian',
120
+ displayName: 'Atlassian',
121
+ serverUrl: 'https://mcp.atlassian.com/v1/mcp',
122
+ kind: 'dcr',
123
+ status: 'stable',
124
+ category: 'Productivity',
125
+ description: 'Jira and Confluence — issues, pages, and search.',
126
+ },
127
+ {
128
+ // DocuSign e-signature. Broker connector (pre-registered OAuth app on
129
+ // auth.studiograph.com). DocuSign's Authorization Code grant is NOT
130
+ // allowlist-gated (unlike Figma's mcp:connect), so once the broker app +
131
+ // secrets are live, Connect works. The matching broker entry lives in
132
+ // studiograph-auth-proxy/src/index.ts (`docusign`, scope `signature`,
133
+ // client_secret_basic). See docs/agents/agent-system.md § "Adding a new
134
+ // service to the broker".
135
+ //
136
+ // DEMO endpoints (mcp-d / account-d) for pre-go-live testing. At go-live
137
+ // flip BOTH this hostname/serverUrl to mcp.docusign.com AND the broker
138
+ // entry's authorization/token endpoints to account.docusign.com, then
139
+ // remove catalogHidden.
140
+ //
141
+ // Hidden until: (1) the broker DOCUSIGN_CLIENT_ID/SECRET are set, and
142
+ // (2) the Integration Key passes DocuSign go-live (for the prod flip).
143
+ // The custom `send_artifact_for_signature` tool (artifact → PDF → envelope
144
+ // with fields placed from the artifact's signature-zones) is a separate
145
+ // first-class tool that reuses this connector's broker-minted token; it
146
+ // ships separately.
147
+ hostname: 'mcp-d.docusign.com',
148
+ name: 'docusign',
149
+ displayName: 'DocuSign',
150
+ serverUrl: 'https://mcp-d.docusign.com/mcp',
151
+ kind: 'broker',
152
+ category: 'Finance & Ops',
153
+ description: 'Send documents for e-signature and track envelopes.',
154
+ catalogHidden: true,
155
+ },
156
+ ];
157
+ /**
158
+ * Pure invariant check, exported for direct unit testing AND called once at
159
+ * module load (below). Invariant: every kind:'broker' entry MUST have a
160
+ * non-empty hostname, because broker OAuth routing is keyed on hostname — a
161
+ * broker entry without one would silently drop out of `BROKER_HOSTS` and fail
162
+ * Connect at runtime.
163
+ */
164
+ export function assertCatalogInvariants(entries) {
165
+ for (const c of entries) {
166
+ if (c.kind === 'broker' && !c.hostname?.trim()) {
167
+ throw new Error(`Catalog connector "${c.name}" is kind:'broker' but has no hostname — broker OAuth routing requires one.`);
168
+ }
169
+ }
170
+ }
171
+ assertCatalogInvariants(CATALOG_CONNECTORS);
172
+ /**
173
+ * Internal OAuth-routing table — hostname → slug, built from the BROKER subset
174
+ * ONLY. dcr/token connectors must never appear here (see module header).
175
+ */
176
+ const BROKER_HOSTS = new Map(CATALOG_CONNECTORS
177
+ .filter((c) => c.kind === 'broker' && !!c.hostname)
178
+ .map(c => [c.hostname, c.name]));
179
+ /**
180
+ * Check if a connector URL has broker support.
181
+ * Returns the broker connect URL, or undefined if not supported.
182
+ */
183
+ export function getBrokerConnectUrl(connectorUrl, state) {
184
+ try {
185
+ const hostname = new URL(connectorUrl).hostname;
186
+ const connectorName = BROKER_HOSTS.get(hostname);
187
+ if (!connectorName)
188
+ return undefined;
189
+ return `${BROKER_URL}/connect/${connectorName}?state=${encodeURIComponent(state)}`;
190
+ }
191
+ catch {
192
+ return undefined;
193
+ }
194
+ }
195
+ /**
196
+ * Check if a connector URL is supported by the broker.
197
+ */
198
+ export function hasBrokerSupport(connectorUrl) {
199
+ try {
200
+ return BROKER_HOSTS.has(new URL(connectorUrl).hostname);
201
+ }
202
+ catch {
203
+ return false;
204
+ }
205
+ }
206
+ /**
207
+ * Catalog entries owners can add from Settings. Drops `catalogHidden` entries
208
+ * and anything already configured (matched by name OR displayName, case-
209
+ * insensitive). Projects the tile metadata the UI renders plus the `kind` /
210
+ * `status` that drive the add-flow and the badge.
211
+ */
212
+ export function listAvailableConnectors(configuredNames = new Set()) {
213
+ const normalized = new Set([...configuredNames].map(n => n.toLowerCase()));
214
+ return CATALOG_CONNECTORS
215
+ .filter(c => !c.catalogHidden)
216
+ .filter(c => !normalized.has(c.name.toLowerCase()) && !normalized.has(c.displayName.toLowerCase()))
217
+ // Drop the routing/visibility internals; everything else is the public
218
+ // tile projection. Destructure-rest (not a hand-listed field map) so the
219
+ // payload can't silently drift from `AvailableCatalogConnector` when a new
220
+ // tile field is added.
221
+ .map(({ hostname, catalogHidden, ...tile }) => tile);
222
+ }
223
+ /**
224
+ * Look up a catalog connector by slug or display name (case-insensitive).
225
+ * Used to enrich an already-configured connector with its curated catalog
226
+ * metadata (description) and to tell catalog connectors from custom ones.
227
+ */
228
+ export function getCatalogConnector(name) {
229
+ const lc = name.toLowerCase();
230
+ return CATALOG_CONNECTORS.find(c => c.name.toLowerCase() === lc || c.displayName.toLowerCase() === lc);
231
+ }
232
+ /** Broker base URL for claim retrieval. */
233
+ export { BROKER_URL };
234
+ //# sourceMappingURL=connector-catalog.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"connector-catalog.js","sourceRoot":"","sources":["../../src/mcp/connector-catalog.ts"],"names":[],"mappings":"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"}
@@ -30,7 +30,7 @@ import { Client } from '@modelcontextprotocol/sdk/client/index.js';
30
30
  import { StreamableHTTPClientTransport } from '@modelcontextprotocol/sdk/client/streamableHttp.js';
31
31
  import { enforceConnectorConfig } from '../core/schemas/connector.js';
32
32
  import { McpOAuthProvider } from './oauth-provider.js';
33
- import { hasBrokerSupport } from './oauth-registry.js';
33
+ import { hasBrokerSupport } from './connector-catalog.js';
34
34
  import { log } from '../utils/log.js';
35
35
  export const CONNECTORS_DIR = join(homedir(), '.studiograph', 'connectors');
36
36
  // ── ConnectorManager ──────────────────────────────────────────────────────────
@@ -220,6 +220,11 @@ export class ConnectorManager {
220
220
  result.description = config.description;
221
221
  if (config.oauth)
222
222
  result.oauth = config.oauth;
223
+ // Preserve an explicit OAuth-mode declaration (e.g. a catalog `dcr` tile
224
+ // that knows it needs OAuth) so the import path doesn't have to rediscover
225
+ // it via a best-effort probe.
226
+ if (typeof config.requiresOAuth === 'boolean')
227
+ result.requiresOAuth = config.requiresOAuth;
223
228
  return result;
224
229
  }
225
230
  /** Try to infer a connector name from the URL. */
@@ -1 +1 @@
1
- {"version":3,"file":"connector-manager.js","sourceRoot":"","sources":["../../src/mcp/connector-manager.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"connector-manager.js","sourceRoot":"","sources":["../../src/mcp/connector-manager.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AAEH,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,WAAW,EAAE,YAAY,EAAE,aAAa,EAAE,UAAU,EAAE,MAAM,IAAI,CAAC;AACjG,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AAC5B,OAAO,EAAE,OAAO,EAAE,MAAM,IAAI,CAAC;AAC7B,OAAO,EAAE,MAAM,EAAE,MAAM,2CAA2C,CAAC;AACnE,OAAO,EAAE,6BAA6B,EAAE,MAAM,oDAAoD,CAAC;AAEnG,OAAO,EAAE,sBAAsB,EAAE,MAAM,8BAA8B,CAAC;AACtE,OAAO,EAAE,gBAAgB,EAAyB,MAAM,qBAAqB,CAAC;AAC9E,OAAO,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAE1D,OAAO,EAAE,GAAG,EAAE,MAAM,iBAAiB,CAAC;AAEtC,MAAM,CAAC,MAAM,cAAc,GAAG,IAAI,CAAC,OAAO,EAAE,EAAE,cAAc,EAAE,YAAY,CAAC,CAAC;AAsB5E,iFAAiF;AAEjF,MAAM,OAAO,gBAAgB;IAE3B,6EAA6E;IAE7E;;OAEG;IACH,MAAM,CAAC,WAAW,CAAC,aAAsB;QACvC,MAAM,gBAAgB,GAAG,aAAa;YACpC,CAAC,CAAC,gBAAgB,CAAC,QAAQ,CAAC,IAAI,CAAC,aAAa,EAAE,cAAc,EAAE,YAAY,CAAC,CAAC;YAC9E,CAAC,CAAC,EAAE,CAAC;QACP,MAAM,cAAc,GAAG,gBAAgB,CAAC,QAAQ,CAAC,cAAc,CAAC,CAAC;QAEjE,MAAM,MAAM,GAAG,IAAI,GAAG,EAA2B,CAAC;QAClD,KAAK,MAAM,CAAC,IAAI,gBAAgB,EAAE,CAAC;YACjC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;QACxB,CAAC;QACD,KAAK,MAAM,CAAC,IAAI,cAAc,EAAE,CAAC;YAC/B,MAAM,IAAI,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;YAChC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC,gBAAgB,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QAClE,CAAC;QAED,OAAO,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC;IACrC,CAAC;IAED;;OAEG;IACH,MAAM,CAAC,oBAAoB,CAAC,aAAqB;QAC/C,OAAO,gBAAgB,CAAC,QAAQ,CAAC,IAAI,CAAC,aAAa,EAAE,cAAc,EAAE,YAAY,CAAC,CAAC,CAAC;IACtF,CAAC;IAED;;;;;;;;;;OAUG;IACH,MAAM,CAAC,UAAU,CAAC,MAAuB;QACvC,SAAS,CAAC,cAAc,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QAC/C,MAAM,IAAI,GAAG,IAAI,CAAC,cAAc,EAAE,GAAG,MAAM,CAAC,IAAI,OAAO,CAAC,CAAC;QACzD,aAAa,CAAC,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,GAAG,IAAI,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC;QAC7E,KAAK,gBAAgB,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC;IAC3C,CAAC;IAED;;;OAGG;IACK,MAAM,CAAC,KAAK,CAAC,UAAU,CAAC,MAAuB;QACrD,IAAI,CAAC;YACH,MAAM,EAAE,qBAAqB,EAAE,GAAG,MAAM,MAAM,CAAC,+BAA+B,CAAC,CAAC;YAChF,MAAM,qBAAqB,CAAC,MAAa,CAAC,CAAC;QAC7C,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,GAAG,CAAC,IAAI,CAAC,kCAAkC,MAAM,CAAC,IAAI,mBAAmB,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QAC/H,CAAC;IACH,CAAC;IAED,iFAAiF;IACjF,MAAM,CAAC,mBAAmB,CAAC,MAAuB,EAAE,aAAqB;QACvE,MAAM,GAAG,GAAG,IAAI,CAAC,aAAa,EAAE,cAAc,EAAE,YAAY,CAAC,CAAC;QAC9D,SAAS,CAAC,GAAG,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QACpC,MAAM,QAAQ,GAAG,gBAAgB,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC;QACvD,qEAAqE;QACrE,sEAAsE;QACtE,oEAAoE;QACpE,kEAAkE;QAClE,wDAAwD;QACxD,0DAA0D;QAC1D,sBAAsB,CAAC,QAAQ,CAAC,CAAC;QACjC,MAAM,IAAI,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,MAAM,CAAC,IAAI,OAAO,CAAC,CAAC;QAC9C,aAAa,CAAC,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC;IAChE,CAAC;IAED,MAAM,CAAC,YAAY,CAAC,IAAY,EAAE,aAAsB;QACtD,IAAI,OAAO,GAAG,KAAK,CAAC;QACpB,MAAM,MAAM,GAAG,IAAI,CAAC,cAAc,EAAE,GAAG,IAAI,OAAO,CAAC,CAAC;QACpD,IAAI,UAAU,CAAC,MAAM,CAAC,EAAE,CAAC;YAAC,UAAU,CAAC,MAAM,CAAC,CAAC;YAAC,OAAO,GAAG,IAAI,CAAC;QAAC,CAAC;QAC/D,IAAI,aAAa,EAAE,CAAC;YAClB,MAAM,MAAM,GAAG,IAAI,CAAC,aAAa,EAAE,cAAc,EAAE,YAAY,EAAE,GAAG,IAAI,OAAO,CAAC,CAAC;YACjF,IAAI,UAAU,CAAC,MAAM,CAAC,EAAE,CAAC;gBAAC,UAAU,CAAC,MAAM,CAAC,CAAC;gBAAC,OAAO,GAAG,IAAI,CAAC;YAAC,CAAC;QACjE,CAAC;QACD,OAAO,OAAO,CAAC;IACjB,CAAC;IAED,mEAAmE;IACnE,MAAM,CAAC,UAAU,CAAC,IAAY,EAAE,aAAsB;QACpD,IAAI,QAAQ,GAA2B,IAAI,CAAC;QAC5C,IAAI,aAAa,EAAE,CAAC;YAClB,MAAM,MAAM,GAAG,IAAI,CAAC,aAAa,EAAE,cAAc,EAAE,YAAY,EAAE,GAAG,IAAI,OAAO,CAAC,CAAC;YACjF,IAAI,UAAU,CAAC,MAAM,CAAC,EAAE,CAAC;gBACvB,IAAI,CAAC;oBAAC,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC;gBAAC,CAAC;gBAAC,MAAM,CAAC,CAAC,UAAU,CAAC,CAAC;YACpF,CAAC;QACH,CAAC;QACD,IAAI,QAAQ,GAA2B,IAAI,CAAC;QAC5C,MAAM,MAAM,GAAG,IAAI,CAAC,cAAc,EAAE,GAAG,IAAI,OAAO,CAAC,CAAC;QACpD,IAAI,UAAU,CAAC,MAAM,CAAC,EAAE,CAAC;YACvB,IAAI,CAAC;gBAAC,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC;YAAC,CAAC;YAAC,MAAM,CAAC,CAAC,UAAU,CAAC,CAAC;QACpF,CAAC;QACD,IAAI,CAAC,QAAQ,IAAI,CAAC,QAAQ;YAAE,OAAO,IAAI,CAAC;QACxC,IAAI,CAAC,QAAQ;YAAE,OAAO,QAAQ,CAAC;QAC/B,IAAI,CAAC,QAAQ;YAAE,OAAO,QAAQ,CAAC;QAC/B,OAAO,gBAAgB,CAAC,MAAM,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;IACrD,CAAC;IAED;;;OAGG;IACH,MAAM,CAAC,YAAY,CAAC,MAAuB;QACzC,MAAM,QAAQ,GAAoB,EAAE,GAAG,MAAM,EAAE,CAAC;QAChD,MAAM,MAAM,GAAG,MAAM,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,OAAO,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;QAE5D,6BAA6B;QAC7B,IAAI,QAAQ,CAAC,OAAO,EAAE,CAAC;YACrB,QAAQ,CAAC,OAAO,GAAG,EAAE,GAAG,QAAQ,CAAC,OAAO,EAAE,CAAC;YAC3C,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC;gBAC5D,IAAI,GAAG,CAAC,WAAW,EAAE,KAAK,eAAe,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;oBACpE,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,IAAI,MAAM,OAAO,CAAC;gBAC5C,CAAC;YACH,CAAC;QACH,CAAC;QAED,4BAA4B;QAC5B,IAAI,QAAQ,CAAC,KAAK,EAAE,aAAa,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,aAAa,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;YACnF,QAAQ,CAAC,KAAK,GAAG,EAAE,GAAG,QAAQ,CAAC,KAAK,EAAE,aAAa,EAAE,IAAI,MAAM,eAAe,EAAE,CAAC;QACnF,CAAC;QAED,OAAO,QAAQ,CAAC;IAClB,CAAC;IAED,yEAAyE;IACzE,MAAM,CAAC,aAAa,CAAC,KAAa;QAChC,OAAO,KAAK,CAAC,OAAO,CAAC,uBAAuB,EAAE,CAAC,KAAK,EAAE,IAAI,EAAE,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,KAAK,CAAC,CAAC;IAC7F,CAAC;IAED,4EAA4E;IAE5E;;;;;;OAMG;IACH,MAAM,CAAC,gBAAgB,CAAC,IAAY,EAAE,WAAoB;QACxD,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QAChC,IAAI,CAAC,MAAM,IAAI,OAAO,MAAM,KAAK,QAAQ;YAAE,MAAM,IAAI,KAAK,CAAC,cAAc,CAAC,CAAC;QAE3E,+BAA+B;QAC/B,IAAI,MAAM,CAAC,UAAU,IAAI,OAAO,MAAM,CAAC,UAAU,KAAK,QAAQ,EAAE,CAAC;YAC/D,MAAM,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,UAAU,CAAC;iBAC9C,MAAM,CAAC,CAAC,CAAC,EAAE,MAAM,CAAgB,EAAE,EAAE,CAAC,MAAM,CAAC,GAAG,CAAC;iBACjD,GAAG,CAAC,CAAC,CAAC,IAAI,EAAE,MAAM,CAAgB,EAAE,EAAE,CAAC,CAAC;gBACvC,IAAI;gBACJ,GAAG,gBAAgB,CAAC,sBAAsB,CAAC,MAAM,CAAC;aACnD,CAAC,CAAC,CAAC;YACN,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC;gBAAE,MAAM,IAAI,KAAK,CAAC,kFAAkF,CAAC,CAAC;YAC9H,OAAO,OAAO,CAAC;QACjB,CAAC;QAED,6BAA6B;QAC7B,IAAI,MAAM,CAAC,IAAI,IAAI,MAAM,CAAC,GAAG,EAAE,CAAC;YAC9B,OAAO,CAAC,EAAE,GAAG,gBAAgB,CAAC,sBAAsB,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC;QACrF,CAAC;QAED,kCAAkC;QAClC,IAAI,MAAM,CAAC,GAAG,EAAE,CAAC;YACf,MAAM,IAAI,GAAG,WAAW,IAAI,gBAAgB,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC;YAChE,OAAO,CAAC,EAAE,IAAI,EAAE,GAAG,gBAAgB,CAAC,sBAAsB,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;QACxE,CAAC;QAED,MAAM,IAAI,KAAK,CAAC,yEAAyE,CAAC,CAAC;IAC7F,CAAC;IAEO,MAAM,CAAC,sBAAsB,CAAC,MAAW;QAC/C,MAAM,MAAM,GAAQ,EAAE,CAAC;QACvB,IAAI,MAAM,CAAC,GAAG;YAAE,MAAM,CAAC,GAAG,GAAG,MAAM,CAAC,GAAG,CAAC;QACxC,IAAI,MAAM,CAAC,OAAO;YAAE,MAAM,CAAC,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC;QACpD,IAAI,MAAM,CAAC,WAAW;YAAE,MAAM,CAAC,WAAW,GAAG,MAAM,CAAC,WAAW,CAAC;QAChE,IAAI,MAAM,CAAC,KAAK;YAAE,MAAM,CAAC,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC;QAC9C,yEAAyE;QACzE,2EAA2E;QAC3E,8BAA8B;QAC9B,IAAI,OAAO,MAAM,CAAC,aAAa,KAAK,SAAS;YAAE,MAAM,CAAC,aAAa,GAAG,MAAM,CAAC,aAAa,CAAC;QAC3F,OAAO,MAAM,CAAC;IAChB,CAAC;IAED,kDAAkD;IAC1C,MAAM,CAAC,UAAU,CAAC,MAAW;QACnC,IAAI,MAAM,CAAC,GAAG,EAAE,CAAC;YACf,IAAI,CAAC;gBACH,MAAM,IAAI,GAAG,IAAI,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,QAAQ,CAAC;gBAC1C,OAAO,IAAI,CAAC,OAAO,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC,OAAO,CAAC,qBAAqB,EAAE,EAAE,CAAC,CAAC,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;YAC3F,CAAC;YAAC,MAAM,CAAC,CAAC,kBAAkB,CAAC,CAAC;QAChC,CAAC;QACD,OAAO,aAAa,IAAI,CAAC,GAAG,EAAE,EAAE,CAAC;IACnC,CAAC;IAED,6EAA6E;IAE7E;;;;;;;;;;;;;;;;;;OAkBG;IACH,MAAM,CAAC,KAAK,CAAC,UAAU,CACrB,OAA0B,EAC1B,IAQC;QAED,MAAM,SAAS,GAAG,IAAI,EAAE,SAAS,IAAI,MAAM,CAAC;QAC5C,MAAM,OAAO,GAAG,OAAO,CAAC,GAAG,CAAC,mBAAmB,KAAK,GAAG,CAAC;QACxD,IAAI,OAAO,EAAE,CAAC;YACZ,GAAG,CAAC,IAAI,CACN,4BAA4B,OAAO,CAAC,MAAM,sBAAsB,IAAI,EAAE,MAAM,IAAI,MAAM,iBAAiB,IAAI,EAAE,WAAW,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,SAAS,EAAE,CACnJ,CAAC;QACJ,CAAC;QACD,wEAAwE;QACxE,8EAA8E;QAC9E,2EAA2E;QAC3E,yEAAyE;QACzE,uCAAuC;QACvC,EAAE;QACF,4EAA4E;QAC5E,uEAAuE;QACvE,wEAAwE;QACxE,yEAAyE;QACzE,MAAM,OAAO,GAAG,MAAM,OAAO,CAAC,GAAG,CAC/B,OAAO,CAAC,GAAG,CAAC,KAAK,EAAE,MAAM,EAAE,EAAE;YAC3B,IAAI,YAAY,GAAW,SAAS,CAAC;YACrC,IAAI,KAAiC,CAAC;YACtC,IAAI,CAAC;gBACH,MAAM,QAAQ,GAAG,gBAAgB,CAAC,oBAAoB,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;gBACrE,YAAY,GAAG,QAAQ,CAAC,IAAI,CAAC;gBAC7B,IAAI,OAAO,EAAE,CAAC;oBACZ,GAAG,CAAC,IAAI,CAAC,iBAAiB,MAAM,CAAC,IAAI,mBAAmB,QAAQ,CAAC,IAAI,EAAE,CAAC,CAAC;gBAC3E,CAAC;gBACD,IAAI,QAAQ,CAAC,IAAI,KAAK,kBAAkB;oBAAE,OAAO,EAAE,CAAC;gBACpD,IAAI,QAAQ,CAAC,IAAI,KAAK,oBAAoB;oBAAE,OAAO,EAAE,CAAC;gBACtD,MAAM,QAAQ,GAAG,QAAQ,CAAC,IAAI,KAAK,YAAY,CAAC,CAAC,CAAC,QAAQ,CAAC,YAAY,CAAC,CAAC,CAAC,SAAS,CAAC;gBACpF,8DAA8D;gBAC9D,kEAAkE;gBAClE,OAAO,MAAM,OAAO,CAAC,IAAI,CAAC;oBACxB,gBAAgB,CAAC,oBAAoB,CAAC,MAAM,EAAE,QAAQ,CAAC;oBACvD,IAAI,OAAO,CAAQ,CAAC,CAAC,EAAE,MAAM,EAAE,EAAE;wBAC/B,KAAK,GAAG,UAAU,CAAC,GAAG,EAAE,CAAC,MAAM,CAAC,IAAI,KAAK,CAAC,sBAAsB,CAAC,CAAC,EAAE,SAAS,CAAC,CAAC;oBACjF,CAAC,CAAC;iBACH,CAAC,CAAC;YACL,CAAC;YAAC,OAAO,GAAG,EAAE,CAAC;gBACb,MAAM,GAAG,GAAG,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;gBAC7D,MAAM,WAAW,GAAG,yDAAyD,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;gBACxF,gEAAgE;gBAChE,+DAA+D;gBAC/D,8DAA8D;gBAC9D,6DAA6D;gBAC7D,2DAA2D;gBAC3D,6DAA6D;gBAC7D,wDAAwD;gBACxD,4DAA4D;gBAC5D,gDAAgD;gBAChD,MAAM,wBAAwB,GAC5B,YAAY,KAAK,YAAY;oBAC7B,gBAAgB,CAAC,MAAM,CAAC,GAAG,CAAC;oBAC5B,yCAAyC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;gBACtD,IAAI,wBAAwB,EAAE,CAAC;oBAC7B,GAAG,CAAC,IAAI,CACN,2CAA2C,MAAM,CAAC,IAAI,mDAAmD;wBACvG,gGAAgG,CACnG,CAAC;oBACF,OAAO,EAAE,CAAC;gBACZ,CAAC;gBACD,6DAA6D;gBAC7D,6DAA6D;gBAC7D,+DAA+D;gBAC/D,6DAA6D;gBAC7D,0DAA0D;gBAC1D,0DAA0D;gBAC1D,4DAA4D;gBAC5D,sDAAsD;gBACtD,IAAI,WAAW,IAAI,YAAY,KAAK,YAAY;oBAAE,OAAO,EAAE,CAAC;gBAC5D,IAAI,WAAW,IAAI,YAAY,KAAK,YAAY,EAAE,CAAC;oBACjD,GAAG,CAAC,IAAI,CACN,wCAAwC,MAAM,CAAC,IAAI,uCAAuC,GAAG,IAAI;wBAC/F,6BAA6B,CAChC,CAAC;oBACF,OAAO,EAAE,CAAC;gBACZ,CAAC;gBACD,GAAG,CAAC,IAAI,CAAC,sCAAsC,MAAM,CAAC,IAAI,MAAM,GAAG,EAAE,CAAC,CAAC;gBACvE,OAAO,EAAE,CAAC;YACZ,CAAC;oBAAS,CAAC;gBACT,IAAI,KAAK;oBAAE,YAAY,CAAC,KAAK,CAAC,CAAC;YACjC,CAAC;QACH,CAAC,CAAC,CACH,CAAC;QACF,OAAO,OAAO,CAAC,IAAI,EAAE,CAAC;IACxB,CAAC;IAED;;;;;;;;;;;;;;;OAeG;IACH,MAAM,CAAC,oBAAoB,CACzB,MAAuB,EACvB,IAAyE;QAOzE,iEAAiE;QACjE,MAAM,UAAU,GAAG,MAAM,CAAC,OAAO,EAAE,CAAC,eAAe,CAAC,IAAI,EAAE,CAAC;QAC3D,IAAI,UAAU,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,gBAAgB,CAAC,aAAa,CAAC,UAAU,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC;YACzF,OAAO,EAAE,IAAI,EAAE,kBAAkB,EAAE,CAAC;QACtC,CAAC;QAED,MAAM,YAAY,GAChB,CAAC,CAAC,IAAI,EAAE,MAAM;YACd,CAAC,CAAC,IAAI,EAAE,WAAW;YACnB,IAAI,CAAC,WAAW,CAAC,cAAc,CAAC,IAAI,CAAC,MAAM,EAAE,MAAM,CAAC,IAAI,CAAC,CAAC;QAC5D,MAAM,kBAAkB,GAAG,CAAC,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC,eAAe,CAAC,CAAC;QAE/D,iEAAiE;QACjE,8EAA8E;QAC9E,IAAI,YAAY,EAAE,CAAC;YACjB,MAAM,UAAU,GAAG,gBAAgB,CAAC,wBAAwB,CAAC,MAAM,CAAC,CAAC;YACrE,MAAM,QAAQ,GAAG,IAAI,gBAAgB,CACnC,MAAM,CAAC,IAAI,EACX,IAAK,CAAC,MAAO,EACb,IAAK,CAAC,WAAY,EAClB,IAAI,EAAE,SAAS,IAAI,EAAE,EACrB,UAAU,CACX,CAAC;YACF,OAAO,EAAE,IAAI,EAAE,YAAY,EAAE,YAAY,EAAE,QAAQ,EAAE,CAAC;QACxD,CAAC;QAED,IAAI,kBAAkB;YAAE,OAAO,EAAE,IAAI,EAAE,kBAAkB,EAAE,CAAC;QAE5D,IAAI,MAAM,CAAC,aAAa;YAAE,OAAO,EAAE,IAAI,EAAE,oBAAoB,EAAE,CAAC;QAEhE,oCAAoC;QACpC,OAAO,EAAE,IAAI,EAAE,kBAAkB,EAAE,CAAC;IACtC,CAAC;IAED,gFAAgF;IACxE,MAAM,CAAC,wBAAwB,CAAC,MAAuB;QAC7D,IAAI,MAAM,CAAC,KAAK,EAAE,SAAS,EAAE,CAAC;YAC5B,OAAO;gBACL,SAAS,EAAE,MAAM,CAAC,KAAK,CAAC,SAAS;gBACjC,aAAa,EAAE,MAAM,CAAC,KAAK,CAAC,aAAa;aAC1C,CAAC;QACJ,CAAC;QACD,2EAA2E;QAC3E,uEAAuE;QACvE,2EAA2E;QAC3E,IAAI,gBAAgB,CAAC,MAAM,CAAC,GAAG,CAAC;YAAE,OAAO,SAAS,CAAC;QACnD,OAAO,SAAS,CAAC;IACnB,CAAC;IAED,6EAA6E;IAErE,MAAM,CAAC,QAAQ,CAAC,GAAW;QACjC,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC;YAAE,OAAO,EAAE,CAAC;QAChC,IAAI,OAAiB,CAAC;QACtB,IAAI,CAAC;YAAC,OAAO,GAAG,WAAW,CAAC,GAAG,CAAC,CAAC;QAAC,CAAC;QAAC,MAAM,CAAC;YAAC,OAAO,EAAE,CAAC;QAAC,CAAC;QACxD,MAAM,OAAO,GAAsB,EAAE,CAAC;QACtC,KAAK,MAAM,KAAK,IAAI,OAAO,EAAE,CAAC;YAC5B,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,OAAO,CAAC;gBAAE,SAAS;YACvC,IAAI,CAAC;gBACH,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,IAAI,CAAC,GAAG,EAAE,KAAK,CAAC,EAAE,OAAO,CAAC,CAAoB,CAAC;gBACnF,IAAI,OAAO,GAAG,CAAC,IAAI,KAAK,QAAQ,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC;oBAC9C,GAAG,CAAC,IAAI,CAAC,0DAA0D,KAAK,EAAE,CAAC,CAAC;oBAC5E,SAAS;gBACX,CAAC;gBACD,IAAI,CAAC,gBAAgB,CAAC,SAAS,CAAC,GAAG,EAAE,KAAK,CAAC;oBAAE,SAAS;gBACtD,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;YACpB,CAAC;YAAC,MAAM,CAAC;gBACP,GAAG,CAAC,IAAI,CAAC,gCAAgC,KAAK,aAAa,CAAC,CAAC;YAC/D,CAAC;QACH,CAAC;QACD,OAAO,OAAO,CAAC;IACjB,CAAC;IAEO,MAAM,CAAC,MAAM,CAAC,IAAqB,EAAE,OAAwB;QACnE,MAAM,MAAM,GAAoB,EAAE,GAAG,IAAI,EAAE,CAAC;QAC5C,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC;YACnD,IAAI,KAAK,KAAK,SAAS,IAAI,KAAK,KAAK,IAAI,EAAE,CAAC;gBAC1C,IAAI,GAAG,KAAK,SAAS,IAAI,MAAM,CAAC,OAAO,EAAE,CAAC;oBACxC,MAAM,CAAC,OAAO,GAAG,EAAE,GAAG,MAAM,CAAC,OAAO,EAAE,GAAI,KAAgC,EAAE,CAAC;gBAC/E,CAAC;qBAAM,CAAC;oBACL,MAAc,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;gBAC/B,CAAC;YACH,CAAC;QACH,CAAC;QACD,OAAO,MAAM,CAAC;IAChB,CAAC;IAEO,MAAM,CAAC,SAAS,CAAC,MAAuB,EAAE,QAAgB;QAChE,IAAI,CAAC,MAAM,CAAC,GAAG,EAAE,CAAC;YAChB,qEAAqE;YACrE,oEAAoE;YACpE,qEAAqE;YACrE,gCAAgC;YAChC,IAAI,OAAO,CAAC,GAAG,CAAC,mBAAmB,KAAK,GAAG,EAAE,CAAC;gBAC5C,GAAG,CAAC,IAAI,CAAC,2BAA2B,MAAM,CAAC,IAAI,4BAA4B,CAAC,CAAC;YAC/E,CAAC;YACD,OAAO,KAAK,CAAC;QACf,CAAC;QACD,OAAO,IAAI,CAAC;IACd,CAAC;IAEO,MAAM,CAAC,KAAK,CAAC,oBAAoB,CACvC,MAAuB,EACvB,YAAkC;QAElC,MAAM,MAAM,GAAG,IAAI,MAAM,CAAC,EAAE,IAAI,EAAE,aAAa,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC,CAAC;QAErE,yEAAyE;QACzE,0EAA0E;QAC1E,iEAAiE;QACjE,yEAAyE;QACzE,+CAA+C;QAC/C,EAAE;QACF,uEAAuE;QACvE,wCAAwC;QACxC,MAAM,aAAa,GAAsE,EAAE,CAAC;QAC5F,IAAI,YAAY,EAAE,CAAC;YACjB,aAAa,CAAC,YAAY,GAAG,YAAY,CAAC;QAC5C,CAAC;aAAM,CAAC;YACN,MAAM,OAAO,GAA2B,EAAE,CAAC;YAC3C,IAAI,MAAM,CAAC,OAAO,EAAE,CAAC;gBACnB,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE,CAAC;oBAC1D,OAAO,CAAC,GAAG,CAAC,GAAG,gBAAgB,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;gBACvD,CAAC;YACH,CAAC;YACD,IAAI,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,MAAM,GAAG,CAAC;gBAAE,aAAa,CAAC,WAAW,GAAG,EAAE,OAAO,EAAE,CAAC;QAC/E,CAAC;QACD,MAAM,SAAS,GAAG,IAAI,6BAA6B,CAAC,IAAI,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,aAAa,CAAC,CAAC;QACxF,MAAM,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;QAEhC,MAAM,EAAE,KAAK,EAAE,WAAW,EAAE,GAAG,MAAM,MAAM,CAAC,SAAS,EAAE,CAAC;QACxD,MAAM,KAAK,GAAG,MAAM,CAAC,WAAW,IAAI,MAAM,CAAC,IAAI,CAAC;QAEhD,OAAO,WAAW,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;YAC9B,IAAI,EAAS,GAAG,MAAM,CAAC,IAAI,KAAK,IAAI,CAAC,IAAI,EAAE;YAC3C,KAAK,EAAQ,GAAG,KAAK,KAAK,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,IAAI,EAAE;YACnD,WAAW,EAAE,IAAI,MAAM,CAAC,IAAI,KAAK,IAAI,CAAC,WAAW,IAAI,IAAI,CAAC,IAAI,EAAE;YAChE,UAAU,EAAG,IAAI,CAAC,WAAW;YAE7B,OAAO,EAAE,KAAK,EAAE,WAAmB,EAAE,MAAW,EAAE,EAAE;gBAClD,IAAI,CAAC;oBACH,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,QAAQ,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,SAAS,EAAE,MAAM,EAAE,CAAC,CAAC;oBAC7E,MAAM,IAAI,GAAI,MAAM,CAAC,OAAiB;yBACnC,MAAM,CAAC,CAAC,CAAM,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,MAAM,CAAC;yBACrC,GAAG,CAAC,CAAC,CAAM,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC;yBACvB,IAAI,CAAC,IAAI,CAAC,CAAC;oBACd,OAAO;wBACL,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAe,EAAE,IAAI,EAAE,IAAI,IAAI,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC;wBACnF,OAAO,EAAE,MAAM;qBAChB,CAAC;gBACJ,CAAC;gBAAC,OAAO,GAAG,EAAE,CAAC;oBACb,MAAM,GAAG,GAAG,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;oBAC7D,OAAO;wBACL,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAe,EAAE,IAAI,EAAE,iBAAiB,MAAM,CAAC,IAAI,KAAK,IAAI,CAAC,IAAI,KAAK,GAAG,EAAE,EAAE,CAAC;wBAChG,OAAO,EAAE,IAAI;qBACd,CAAC;gBACJ,CAAC;YACH,CAAC;SACF,CAAC,CAAC,CAAC;IACN,CAAC;CACF"}
package/dist/mcp/tools.js CHANGED
@@ -18,6 +18,7 @@ import { z } from 'zod';
18
18
  import { ENTITY_SCHEMAS } from '../core/validation.js';
19
19
  import { isWorkspaceOwner } from '../services/auth-service.js';
20
20
  import { mintArtifactAssetTokenForBundle } from '../server/artifact-asset-mint.js';
21
+ import { resolveConfiguredBaseUrl, readWorkspaceOriginConfig } from '../server/canonical-origin.js';
21
22
  import { getAccessibleRepos, hasRepoAccess, canWriteRepo, isFolderAdminOrOwner, getAccessibleEntityIds, filterWikilinks, } from '../services/access-control.js';
22
23
  import { assetDeleteDenial } from '../services/asset-delete-authz.js';
23
24
  import { isArchivedRepo } from '../core/types.js';
@@ -265,6 +266,21 @@ export function registerTools(server, wm, authService, ctx) {
265
266
  // pass through untouched.
266
267
  const baseRegisterTool = server.registerTool.bind(server);
267
268
  const reg = ((name, def, handler) => baseRegisterTool(name, PINNED_SET.has(name) ? { ...def, ...PIN_META } : def, handler));
269
+ // Resolve the render origin + bundle-scoped asset token shared by inspect_artifact
270
+ // and export_artifact, so BOTH render paths load workspace fonts/images faithfully.
271
+ // base_url defaults to the server's CONFIGURED origin (env → workspace server_url →
272
+ // railway) so a caller that omits it still gets authorized /api/assets/* loads; the
273
+ // token is minted only for a PERSISTED target (repo + entity_id), which is also the
274
+ // only case the origin is defaulted — a bundle-only inspect has no repo to scope a
275
+ // token to, so it renders against whatever base_url was (or wasn't) passed.
276
+ const resolveRenderAssets = (baseUrlArg, repo, entityId, bundle) => {
277
+ const baseUrl = baseUrlArg
278
+ ?? ((repo && entityId) ? (resolveConfiguredBaseUrl(readWorkspaceOriginConfig(wm.getWorkspacePath())) ?? undefined) : undefined);
279
+ const assetToken = (baseUrl && repo && entityId)
280
+ ? mintArtifactAssetTokenForBundle(wm, authService, repo, entityId, bundle, String(user.id)).token
281
+ : undefined;
282
+ return { baseUrl, assetToken };
283
+ };
268
284
  // External-agent identity: "<owner first name>'s <token name>", or
269
285
  // "<owner first name>'s agent" as a fallback when the token has no name
270
286
  // (older tokens or contexts that didn't thread the token through). First name
@@ -1107,12 +1123,10 @@ export function registerTools(server, wm, authService, ctx) {
1107
1123
  const entity = wm.getGraph(parsed.repo).get('artifact', parsed.entity_id);
1108
1124
  bundle = parseArtifactBundleFromBody(entity.document.content, `Artifact ${parsed.repo}/${parsed.entity_id}`);
1109
1125
  }
1110
- // With a base_url + a persisted target, mint a bundle-scoped asset token
1111
- // so the headless render's `/api/assets/...` image loads resolve
1112
- // (token-mode auth) instead of aborting to the broken-image placeholder.
1113
- const assetToken = (parsed.base_url && parsed.repo && parsed.entity_id)
1114
- ? mintArtifactAssetTokenForBundle(wm, authService, parsed.repo, parsed.entity_id, bundle, String(user.id)).token
1115
- : undefined;
1126
+ // Resolve the render origin + asset token so a persisted inspect loads its
1127
+ // workspace fonts/images (token-mode auth) instead of broken-image
1128
+ // placeholders defaulting base_url to the server origin when omitted.
1129
+ const { baseUrl, assetToken } = resolveRenderAssets(parsed.base_url, parsed.repo, parsed.entity_id, bundle);
1116
1130
  const options = {
1117
1131
  context: parsed.context,
1118
1132
  frameIndexes: parsed.frame_indexes,
@@ -1120,7 +1134,7 @@ export function registerTools(server, wm, authService, ctx) {
1120
1134
  includePageScreenshot: parsed.include_page_screenshot,
1121
1135
  includeFrameScreenshots: parsed.include_frame_screenshots,
1122
1136
  screenshotFormat: parsed.screenshot_format,
1123
- baseUrl: parsed.base_url,
1137
+ baseUrl,
1124
1138
  assetToken,
1125
1139
  };
1126
1140
  // Emit screenshots as real MCP image content blocks (vision) + a
@@ -1158,7 +1172,7 @@ export function registerTools(server, wm, authService, ctx) {
1158
1172
  repo: z.string().describe('Folder containing the artifact entry.'),
1159
1173
  entity_id: z.string().describe('Persisted artifact entity id.'),
1160
1174
  format: z.enum(['html', 'png', 'pdf']).describe('Export format to produce. HTML returns text content; PNG/PDF return base64 bytes.'),
1161
- base_url: z.string().optional().describe('Optional app origin such as http://localhost:3000, used only to allow same-origin /api/assets/* font/image loads during PNG/PDF render.'),
1175
+ base_url: z.string().optional().describe('Optional app origin such as http://localhost:3000 that authorizes same-origin /api/assets/* font/image loads during PNG/PDF render. Defaults to the server\'s configured origin, so workspace fonts/images render faithfully without it; pass it only to override (e.g. a local dev origin).'),
1162
1176
  });
1163
1177
  reg('export_artifact', {
1164
1178
  description: 'Export a persisted Artifact Canvas entry as HTML, PNG, or PDF. HTML returns text content; workspace images ' +
@@ -1174,6 +1188,16 @@ export function registerTools(server, wm, authService, ctx) {
1174
1188
  const entity = wm.getGraph(repo).get('artifact', entity_id);
1175
1189
  const bundle = parseArtifactBundleFromBody(entity.document.content, `Artifact ${repo}/${entity_id}`);
1176
1190
  const typedFormat = format;
1191
+ // A PNG/PDF render loads workspace fonts/images over /api/assets/*, which
1192
+ // needs both a base origin to resolve the root-relative URLs and a token to
1193
+ // authorize them. Resolve both via the shared helper (defaults the origin to
1194
+ // the server's configured one so callers get faithful output without passing
1195
+ // base_url). Without any origin the render still succeeds but substitutes
1196
+ // fallback fonts — flag that so it isn't a silent fidelity loss.
1197
+ const { baseUrl: effectiveBaseUrl, assetToken } = resolveRenderAssets(base_url, repo, entity_id, bundle);
1198
+ const fidelityNote = (typedFormat !== 'html' && !effectiveBaseUrl)
1199
+ ? 'No app origin is configured (set STUDIOGRAPH_PUBLIC_URL / workspace server_url) and base_url was not provided, so workspace fonts and images could NOT be authorized for this render — the output uses fallback fonts and omits workspace images. Pass base_url (e.g. the app origin) for faithful output.'
1200
+ : undefined;
1177
1201
  let bytes;
1178
1202
  let filename = artifactExportFilename(bundle, typedFormat);
1179
1203
  let mimeType;
@@ -1192,7 +1216,7 @@ export function registerTools(server, wm, authService, ctx) {
1192
1216
  });
1193
1217
  }
1194
1218
  else if (typedFormat === 'png') {
1195
- const pngFiles = await renderArtifactPngFiles(bundle, { baseUrl: base_url });
1219
+ const pngFiles = await renderArtifactPngFiles(bundle, { baseUrl: effectiveBaseUrl, assetToken });
1196
1220
  if (pngFiles.length > 1) {
1197
1221
  const namedFiles = nameArtifactPngFiles(bundle, pngFiles);
1198
1222
  bytes = await zipArtifactPngFiles(namedFiles);
@@ -1204,7 +1228,7 @@ export function registerTools(server, wm, authService, ctx) {
1204
1228
  }
1205
1229
  }
1206
1230
  else {
1207
- bytes = await renderArtifactPdf(bundle, { baseUrl: base_url });
1231
+ bytes = await renderArtifactPdf(bundle, { baseUrl: effectiveBaseUrl, assetToken });
1208
1232
  }
1209
1233
  return ok({
1210
1234
  success: true,
@@ -1212,6 +1236,7 @@ export function registerTools(server, wm, authService, ctx) {
1212
1236
  entity_id,
1213
1237
  format: typedFormat,
1214
1238
  filename,
1239
+ ...(fidelityNote ? { note: fidelityNote } : {}),
1215
1240
  ...exportedData(typedFormat, bytes, mimeType),
1216
1241
  });
1217
1242
  }