crewly 1.20.265 → 1.20.266

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 (104) hide show
  1. package/config/skills/agent/core/slack-file/SKILL.md +53 -0
  2. package/config/skills/agent/core/slack-file/execute.sh +72 -0
  3. package/config/skills/agent/core/slack-file/execute.test.sh +34 -0
  4. package/dist/backend/backend/src/constants.d.ts +56 -0
  5. package/dist/backend/backend/src/constants.d.ts.map +1 -1
  6. package/dist/backend/backend/src/constants.js +56 -0
  7. package/dist/backend/backend/src/constants.js.map +1 -1
  8. package/dist/backend/backend/src/controllers/connector/connector.routes.d.ts.map +1 -1
  9. package/dist/backend/backend/src/controllers/connector/connector.routes.js +6 -1
  10. package/dist/backend/backend/src/controllers/connector/connector.routes.js.map +1 -1
  11. package/dist/backend/backend/src/controllers/connector/remote-mcp-proxy.controller.d.ts +69 -0
  12. package/dist/backend/backend/src/controllers/connector/remote-mcp-proxy.controller.d.ts.map +1 -0
  13. package/dist/backend/backend/src/controllers/connector/remote-mcp-proxy.controller.js +203 -0
  14. package/dist/backend/backend/src/controllers/connector/remote-mcp-proxy.controller.js.map +1 -0
  15. package/dist/backend/backend/src/controllers/connector/remote-mcp.controller.d.ts +16 -0
  16. package/dist/backend/backend/src/controllers/connector/remote-mcp.controller.d.ts.map +1 -1
  17. package/dist/backend/backend/src/controllers/connector/remote-mcp.controller.js +126 -5
  18. package/dist/backend/backend/src/controllers/connector/remote-mcp.controller.js.map +1 -1
  19. package/dist/backend/backend/src/controllers/slack/slack.controller.d.ts.map +1 -1
  20. package/dist/backend/backend/src/controllers/slack/slack.controller.js +37 -0
  21. package/dist/backend/backend/src/controllers/slack/slack.controller.js.map +1 -1
  22. package/dist/backend/backend/src/index.d.ts.map +1 -1
  23. package/dist/backend/backend/src/index.js +5 -0
  24. package/dist/backend/backend/src/index.js.map +1 -1
  25. package/dist/backend/backend/src/services/ai/prompt-modules/skills-reference.module.d.ts.map +1 -1
  26. package/dist/backend/backend/src/services/ai/prompt-modules/skills-reference.module.js +2 -1
  27. package/dist/backend/backend/src/services/ai/prompt-modules/skills-reference.module.js.map +1 -1
  28. package/dist/backend/backend/src/services/cloud/mobile-api-relay.service.d.ts.map +1 -1
  29. package/dist/backend/backend/src/services/cloud/mobile-api-relay.service.js +4 -3
  30. package/dist/backend/backend/src/services/cloud/mobile-api-relay.service.js.map +1 -1
  31. package/dist/backend/backend/src/services/connector/remote-mcp-auth-card.d.ts +43 -0
  32. package/dist/backend/backend/src/services/connector/remote-mcp-auth-card.d.ts.map +1 -0
  33. package/dist/backend/backend/src/services/connector/remote-mcp-auth-card.js +98 -0
  34. package/dist/backend/backend/src/services/connector/remote-mcp-auth-card.js.map +1 -0
  35. package/dist/backend/backend/src/services/connector/remote-mcp-auth.service.d.ts +277 -0
  36. package/dist/backend/backend/src/services/connector/remote-mcp-auth.service.d.ts.map +1 -0
  37. package/dist/backend/backend/src/services/connector/remote-mcp-auth.service.js +719 -0
  38. package/dist/backend/backend/src/services/connector/remote-mcp-auth.service.js.map +1 -0
  39. package/dist/backend/backend/src/services/connector/remote-mcp-launch.service.d.ts +29 -5
  40. package/dist/backend/backend/src/services/connector/remote-mcp-launch.service.d.ts.map +1 -1
  41. package/dist/backend/backend/src/services/connector/remote-mcp-launch.service.js +40 -12
  42. package/dist/backend/backend/src/services/connector/remote-mcp-launch.service.js.map +1 -1
  43. package/dist/backend/backend/src/services/connector/remote-mcp-oauth.d.ts +196 -0
  44. package/dist/backend/backend/src/services/connector/remote-mcp-oauth.d.ts.map +1 -0
  45. package/dist/backend/backend/src/services/connector/remote-mcp-oauth.js +351 -0
  46. package/dist/backend/backend/src/services/connector/remote-mcp-oauth.js.map +1 -0
  47. package/dist/backend/backend/src/services/connector/remote-mcp-probe.service.d.ts +3 -1
  48. package/dist/backend/backend/src/services/connector/remote-mcp-probe.service.d.ts.map +1 -1
  49. package/dist/backend/backend/src/services/connector/remote-mcp-probe.service.js +8 -0
  50. package/dist/backend/backend/src/services/connector/remote-mcp-probe.service.js.map +1 -1
  51. package/dist/backend/backend/src/services/core/credential-files.d.ts.map +1 -1
  52. package/dist/backend/backend/src/services/core/credential-files.js +2 -0
  53. package/dist/backend/backend/src/services/core/credential-files.js.map +1 -1
  54. package/dist/backend/backend/src/services/slack/slack-file-fetch.service.d.ts +119 -0
  55. package/dist/backend/backend/src/services/slack/slack-file-fetch.service.d.ts.map +1 -0
  56. package/dist/backend/backend/src/services/slack/slack-file-fetch.service.js +415 -0
  57. package/dist/backend/backend/src/services/slack/slack-file-fetch.service.js.map +1 -0
  58. package/dist/backend/backend/src/services/slack/slack-file-ref.d.ts +69 -0
  59. package/dist/backend/backend/src/services/slack/slack-file-ref.d.ts.map +1 -0
  60. package/dist/backend/backend/src/services/slack/slack-file-ref.js +177 -0
  61. package/dist/backend/backend/src/services/slack/slack-file-ref.js.map +1 -0
  62. package/dist/backend/backend/src/services/slack/slack-initializer.d.ts.map +1 -1
  63. package/dist/backend/backend/src/services/slack/slack-initializer.js +16 -0
  64. package/dist/backend/backend/src/services/slack/slack-initializer.js.map +1 -1
  65. package/dist/backend/backend/src/services/slack/slack-orchestrator-bridge.d.ts +15 -0
  66. package/dist/backend/backend/src/services/slack/slack-orchestrator-bridge.d.ts.map +1 -1
  67. package/dist/backend/backend/src/services/slack/slack-orchestrator-bridge.js +84 -1
  68. package/dist/backend/backend/src/services/slack/slack-orchestrator-bridge.js.map +1 -1
  69. package/dist/backend/backend/src/types/slack.types.d.ts +11 -0
  70. package/dist/backend/backend/src/types/slack.types.d.ts.map +1 -1
  71. package/dist/backend/backend/src/types/slack.types.js.map +1 -1
  72. package/dist/backend/build-info.json +2 -2
  73. package/dist/cli/backend/src/constants.d.ts +56 -0
  74. package/dist/cli/backend/src/constants.d.ts.map +1 -1
  75. package/dist/cli/backend/src/constants.js +56 -0
  76. package/dist/cli/backend/src/constants.js.map +1 -1
  77. package/dist/cli/backend/src/services/ai/prompt-modules/skills-reference.module.d.ts.map +1 -1
  78. package/dist/cli/backend/src/services/ai/prompt-modules/skills-reference.module.js +2 -1
  79. package/dist/cli/backend/src/services/ai/prompt-modules/skills-reference.module.js.map +1 -1
  80. package/dist/cli/backend/src/services/connector/remote-mcp-launch.service.d.ts +29 -5
  81. package/dist/cli/backend/src/services/connector/remote-mcp-launch.service.d.ts.map +1 -1
  82. package/dist/cli/backend/src/services/connector/remote-mcp-launch.service.js +40 -12
  83. package/dist/cli/backend/src/services/connector/remote-mcp-launch.service.js.map +1 -1
  84. package/dist/cli/backend/src/services/core/credential-files.d.ts.map +1 -1
  85. package/dist/cli/backend/src/services/core/credential-files.js +2 -0
  86. package/dist/cli/backend/src/services/core/credential-files.js.map +1 -1
  87. package/dist/cli/backend/src/services/slack/slack-file-fetch.service.d.ts +119 -0
  88. package/dist/cli/backend/src/services/slack/slack-file-fetch.service.d.ts.map +1 -0
  89. package/dist/cli/backend/src/services/slack/slack-file-fetch.service.js +415 -0
  90. package/dist/cli/backend/src/services/slack/slack-file-fetch.service.js.map +1 -0
  91. package/dist/cli/backend/src/services/slack/slack-file-ref.d.ts +69 -0
  92. package/dist/cli/backend/src/services/slack/slack-file-ref.d.ts.map +1 -0
  93. package/dist/cli/backend/src/services/slack/slack-file-ref.js +177 -0
  94. package/dist/cli/backend/src/services/slack/slack-file-ref.js.map +1 -0
  95. package/dist/cli/backend/src/services/slack/slack-orchestrator-bridge.d.ts +15 -0
  96. package/dist/cli/backend/src/services/slack/slack-orchestrator-bridge.d.ts.map +1 -1
  97. package/dist/cli/backend/src/services/slack/slack-orchestrator-bridge.js +84 -1
  98. package/dist/cli/backend/src/services/slack/slack-orchestrator-bridge.js.map +1 -1
  99. package/dist/cli/backend/src/types/slack.types.d.ts +11 -0
  100. package/dist/cli/backend/src/types/slack.types.d.ts.map +1 -1
  101. package/dist/cli/backend/src/types/slack.types.js.map +1 -1
  102. package/frontend/dist/assets/{index-83188f0b.js → index-7e5ebf78.js} +111 -111
  103. package/frontend/dist/index.html +1 -1
  104. package/package.json +1 -1
@@ -0,0 +1 @@
1
+ {"version":3,"file":"remote-mcp-auth.service.js","sourceRoot":"","sources":["../../../../../../backend/src/services/connector/remote-mcp-auth.service.ts"],"names":[],"mappings":"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"}
@@ -1,7 +1,12 @@
1
1
  /**
2
2
  * Hand remote MCP servers to an agent at launch.
3
3
  *
4
- * For each server whose `mcp:<id>` allowlist admits the agent's role:
4
+ * For each server whose `mcp:<id>` allowlist admits the agent's role, the
5
+ * agent gets the backend's proxy (`<api>/api/connectors/remote-mcp/<id>/mcp`,
6
+ * see remote-mcp-proxy.controller) rather than the server itself: the
7
+ * server URL (Zoho's carries its key) and OAuth tokens never reach an agent
8
+ * config. The only credential in the files is the agent's own identity
9
+ * (`X-Agent-Session` + badge), which the proxy checks against the allowlist.
5
10
  *
6
11
  * | Runtime | How |
7
12
  * |---|---|
@@ -27,6 +32,8 @@ export interface RemoteMcpLaunchInput {
27
32
  crewlyHome?: string;
28
33
  /** Override the store (tests). */
29
34
  service?: RemoteMcpService;
35
+ /** Override the backend base URL (tests). */
36
+ apiBaseUrl?: string;
30
37
  }
31
38
  /** What {@link buildRemoteMcpLaunchFlags} decided. */
32
39
  export interface RemoteMcpLaunchResult {
@@ -46,16 +53,33 @@ export interface RemoteMcpLaunchResult {
46
53
  */
47
54
  export declare function remoteMcpSessionDir(crewlyHome: string, sessionName: string): string;
48
55
  /**
49
- * Claude Code's `--mcp-config` body.
56
+ * The proxy URL an agent uses for a server.
57
+ *
58
+ * @param apiBaseUrl - Backend base, e.g. `http://localhost:8787`
59
+ * @param id - Server id
60
+ * @returns `<base>/api/connectors/remote-mcp/<id>/mcp`
61
+ */
62
+ export declare function remoteMcpProxyUrl(apiBaseUrl: string, id: string): string;
63
+ /**
64
+ * Headers that identify the agent to the proxy.
65
+ *
66
+ * @param sessionName - Agent session
67
+ * @returns `X-Agent-Session` and `X-Agent-Badge`
68
+ */
69
+ export declare function proxyIdentityHeaders(sessionName: string): Record<string, string>;
70
+ /**
71
+ * Claude Code's `--mcp-config` body: every server through the proxy.
50
72
  *
51
73
  * @param servers - Allowed servers
52
- * @returns `{ mcpServers: { <id>: { type: 'http', url, headers? } } }`
74
+ * @param sessionName - Agent session (identity headers)
75
+ * @param apiBaseUrl - Backend base URL
76
+ * @returns `{ mcpServers: { <id>: { type: 'http', url: <proxy>, headers } } }`
53
77
  */
54
- export declare function buildClaudeMcpConfig(servers: RemoteMcpServer[]): {
78
+ export declare function buildClaudeMcpConfig(servers: RemoteMcpServer[], sessionName: string, apiBaseUrl: string): {
55
79
  mcpServers: Record<string, {
56
80
  type: 'http';
57
81
  url: string;
58
- headers?: Record<string, string>;
82
+ headers: Record<string, string>;
59
83
  }>;
60
84
  };
61
85
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"remote-mcp-launch.service.d.ts","sourceRoot":"","sources":["../../../../../../backend/src/services/connector/remote-mcp-launch.service.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAOH,OAAO,EAAE,gBAAgB,EAAmB,KAAK,eAAe,EAAE,MAAM,yBAAyB,CAAC;AAIlG,mDAAmD;AACnD,MAAM,WAAW,oBAAoB;IACnC,wBAAwB;IACxB,WAAW,EAAE,MAAM,CAAC;IACpB,2CAA2C;IAC3C,IAAI,EAAE,MAAM,CAAC;IACb,8BAA8B;IAC9B,WAAW,EAAE,MAAM,CAAC;IACpB,oCAAoC;IACpC,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,kCAAkC;IAClC,OAAO,CAAC,EAAE,gBAAgB,CAAC;CAC5B;AAED,sDAAsD;AACtD,MAAM,WAAW,qBAAqB;IACpC,iEAAiE;IACjE,KAAK,EAAE,MAAM,EAAE,CAAC;IAChB,sCAAsC;IACtC,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,+CAA+C;IAC/C,OAAO,CAAC,EAAE,YAAY,GAAG,qBAAqB,GAAG,OAAO,CAAC;CAC1D;AAYD;;;;;;GAMG;AACH,wBAAgB,mBAAmB,CAAC,UAAU,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,GAAG,MAAM,CAGnF;AAED;;;;;GAKG;AACH,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,eAAe,EAAE,GAAG;IAAE,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,GAAG,EAAE,MAAM,CAAC;QAAC,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;KAAE,CAAC,CAAA;CAAE,CAMhK;AAED;;;;;GAKG;AACH,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,MAAM,CAGzE;AAaD;;;;;;;GAOG;AACH,wBAAsB,yBAAyB,CAAC,KAAK,EAAE,oBAAoB,GAAG,OAAO,CAAC,qBAAqB,CAAC,CAgD3G"}
1
+ {"version":3,"file":"remote-mcp-launch.service.d.ts","sourceRoot":"","sources":["../../../../../../backend/src/services/connector/remote-mcp-launch.service.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AAOH,OAAO,EAAE,gBAAgB,EAAmB,KAAK,eAAe,EAAE,MAAM,yBAAyB,CAAC;AAMlG,mDAAmD;AACnD,MAAM,WAAW,oBAAoB;IACnC,wBAAwB;IACxB,WAAW,EAAE,MAAM,CAAC;IACpB,2CAA2C;IAC3C,IAAI,EAAE,MAAM,CAAC;IACb,8BAA8B;IAC9B,WAAW,EAAE,MAAM,CAAC;IACpB,oCAAoC;IACpC,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,kCAAkC;IAClC,OAAO,CAAC,EAAE,gBAAgB,CAAC;IAC3B,6CAA6C;IAC7C,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED,sDAAsD;AACtD,MAAM,WAAW,qBAAqB;IACpC,iEAAiE;IACjE,KAAK,EAAE,MAAM,EAAE,CAAC;IAChB,sCAAsC;IACtC,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,+CAA+C;IAC/C,OAAO,CAAC,EAAE,YAAY,GAAG,qBAAqB,GAAG,OAAO,CAAC;CAC1D;AAYD;;;;;;GAMG;AACH,wBAAgB,mBAAmB,CAAC,UAAU,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,GAAG,MAAM,CAGnF;AAED;;;;;;GAMG;AACH,wBAAgB,iBAAiB,CAAC,UAAU,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,GAAG,MAAM,CAExE;AAED;;;;;GAKG;AACH,wBAAgB,oBAAoB,CAAC,WAAW,EAAE,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAEhF;AAED;;;;;;;GAOG;AACH,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,eAAe,EAAE,EAAE,WAAW,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG;IAAE,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,GAAG,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;KAAE,CAAC,CAAA;CAAE,CAMxM;AAED;;;;;GAKG;AACH,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,MAAM,CAGzE;AAaD;;;;;;;GAOG;AACH,wBAAsB,yBAAyB,CAAC,KAAK,EAAE,oBAAoB,GAAG,OAAO,CAAC,qBAAqB,CAAC,CAgD3G"}
@@ -1,7 +1,12 @@
1
1
  /**
2
2
  * Hand remote MCP servers to an agent at launch.
3
3
  *
4
- * For each server whose `mcp:<id>` allowlist admits the agent's role:
4
+ * For each server whose `mcp:<id>` allowlist admits the agent's role, the
5
+ * agent gets the backend's proxy (`<api>/api/connectors/remote-mcp/<id>/mcp`,
6
+ * see remote-mcp-proxy.controller) rather than the server itself: the
7
+ * server URL (Zoho's carries its key) and OAuth tokens never reach an agent
8
+ * config. The only credential in the files is the agent's own identity
9
+ * (`X-Agent-Session` + badge), which the proxy checks against the allowlist.
5
10
  *
6
11
  * | Runtime | How |
7
12
  * |---|---|
@@ -20,6 +25,8 @@ import { getCrewlyHomePath } from '../core/crewly-home.utils.js';
20
25
  import { LoggerService } from '../core/logger.service.js';
21
26
  import { REMOTE_MCP_CONSTANTS, RUNTIME_TYPES } from '../../constants.js';
22
27
  import { RemoteMcpService, writeSecretJson } from './remote-mcp.service.js';
28
+ import { getLocalApiBaseUrl } from '../../utils/local-api-url.utils.js';
29
+ import { mintAgentBadge } from '../core/owner-auth.service.js';
23
30
  const C = REMOTE_MCP_CONSTANTS;
24
31
  /**
25
32
  * Quote for a POSIX shell.
@@ -42,15 +49,36 @@ export function remoteMcpSessionDir(crewlyHome, sessionName) {
42
49
  return path.join(crewlyHome, C.RUNTIME_DIR, safe);
43
50
  }
44
51
  /**
45
- * Claude Code's `--mcp-config` body.
52
+ * The proxy URL an agent uses for a server.
53
+ *
54
+ * @param apiBaseUrl - Backend base, e.g. `http://localhost:8787`
55
+ * @param id - Server id
56
+ * @returns `<base>/api/connectors/remote-mcp/<id>/mcp`
57
+ */
58
+ export function remoteMcpProxyUrl(apiBaseUrl, id) {
59
+ return `${apiBaseUrl.replace(/\/$/, '')}/api/connectors/remote-mcp/${encodeURIComponent(id)}${C.PROXY_SUFFIX}`;
60
+ }
61
+ /**
62
+ * Headers that identify the agent to the proxy.
63
+ *
64
+ * @param sessionName - Agent session
65
+ * @returns `X-Agent-Session` and `X-Agent-Badge`
66
+ */
67
+ export function proxyIdentityHeaders(sessionName) {
68
+ return { 'X-Agent-Session': sessionName, 'X-Agent-Badge': mintAgentBadge(sessionName) };
69
+ }
70
+ /**
71
+ * Claude Code's `--mcp-config` body: every server through the proxy.
46
72
  *
47
73
  * @param servers - Allowed servers
48
- * @returns `{ mcpServers: { <id>: { type: 'http', url, headers? } } }`
74
+ * @param sessionName - Agent session (identity headers)
75
+ * @param apiBaseUrl - Backend base URL
76
+ * @returns `{ mcpServers: { <id>: { type: 'http', url: <proxy>, headers } } }`
49
77
  */
50
- export function buildClaudeMcpConfig(servers) {
78
+ export function buildClaudeMcpConfig(servers, sessionName, apiBaseUrl) {
51
79
  const mcpServers = {};
52
80
  for (const s of servers) {
53
- mcpServers[s.id] = { type: 'http', url: s.url, ...(s.headers && Object.keys(s.headers).length ? { headers: s.headers } : {}) };
81
+ mcpServers[s.id] = { type: 'http', url: remoteMcpProxyUrl(apiBaseUrl, s.id), headers: proxyIdentityHeaders(sessionName) };
54
82
  }
55
83
  return { mcpServers };
56
84
  }
@@ -86,6 +114,7 @@ export async function buildRemoteMcpLaunchFlags(input) {
86
114
  const logger = LoggerService.getInstance().createComponentLogger('RemoteMcpLaunch');
87
115
  const { sessionName, role, runtimeType } = input;
88
116
  const crewlyHome = input.crewlyHome || getCrewlyHomePath();
117
+ const apiBaseUrl = input.apiBaseUrl || getLocalApiBaseUrl();
89
118
  const dir = remoteMcpSessionDir(crewlyHome, sessionName);
90
119
  try {
91
120
  const servers = await (input.service ?? RemoteMcpService.getInstance()).serversForRole(role);
@@ -102,20 +131,19 @@ export async function buildRemoteMcpLaunchFlags(input) {
102
131
  await fs.chmod(dir, 0o700);
103
132
  if (runtimeType === RUNTIME_TYPES.CLAUDE_CODE) {
104
133
  const file = path.join(dir, C.CLAUDE_CONFIG_FILE);
105
- await writeSecretJson(file, buildClaudeMcpConfig(servers));
134
+ await writeSecretJson(file, buildClaudeMcpConfig(servers, sessionName, apiBaseUrl));
106
135
  logger.info('Remote MCP servers: added via --mcp-config', { sessionName, role, servers: ids });
107
136
  return { flags: ['--mcp-config', shq(file)], servers: ids };
108
137
  }
109
138
  const flags = [];
139
+ const headersToml = toTomlInlineTable(proxyIdentityHeaders(sessionName));
110
140
  for (const s of servers) {
111
141
  const urlFile = path.join(dir, `codex-${s.id}-url.toml`);
112
- await writeSecretText(urlFile, JSON.stringify(s.url));
142
+ await writeSecretText(urlFile, JSON.stringify(remoteMcpProxyUrl(apiBaseUrl, s.id)));
113
143
  flags.push('-c', `"mcp_servers.${s.id}.url=$(cat ${shq(urlFile)})"`);
114
- if (s.headers && Object.keys(s.headers).length > 0) {
115
- const headersFile = path.join(dir, `codex-${s.id}-headers.toml`);
116
- await writeSecretText(headersFile, toTomlInlineTable(s.headers));
117
- flags.push('-c', `"mcp_servers.${s.id}.http_headers=$(cat ${shq(headersFile)})"`);
118
- }
144
+ const headersFile = path.join(dir, `codex-${s.id}-headers.toml`);
145
+ await writeSecretText(headersFile, headersToml);
146
+ flags.push('-c', `"mcp_servers.${s.id}.http_headers=$(cat ${shq(headersFile)})"`);
119
147
  }
120
148
  logger.info('Remote MCP servers: added via codex -c mcp_servers', { sessionName, role, servers: ids });
121
149
  return { flags, servers: ids };
@@ -1 +1 @@
1
- {"version":3,"file":"remote-mcp-launch.service.js","sourceRoot":"","sources":["../../../../../../backend/src/services/connector/remote-mcp-launch.service.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"remote-mcp-launch.service.js","sourceRoot":"","sources":["../../../../../../backend/src/services/connector/remote-mcp-launch.service.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,196 @@
1
+ /**
2
+ * MCP authorization, client side: the protocol pieces a remote MCP server
3
+ * that wants OAuth needs (MCP spec "Authorization", 2025-06-18).
4
+ *
5
+ * 1. The server answers 401 with
6
+ * `WWW-Authenticate: Bearer resource_metadata="<url>"` ({@link parseWwwAuthenticate}).
7
+ * 2. Protected resource metadata (RFC 9728) names the authorization server
8
+ * ({@link fetchProtectedResourceMetadata}).
9
+ * 3. Authorization server metadata (RFC 8414, OpenID Connect discovery as a
10
+ * fallback) gives the endpoints ({@link fetchAuthorizationServerMetadata}).
11
+ * 4. Dynamic client registration (RFC 7591) when the server offers it
12
+ * ({@link registerClient}); otherwise the owner enters a client id.
13
+ * 5. Authorization code + PKCE S256 ({@link createPkcePair},
14
+ * {@link buildAuthorizeUrl}), `resource` (RFC 8707) on every request.
15
+ * 6. Code exchange and refresh ({@link exchangeCode}, {@link refreshTokens}).
16
+ *
17
+ * Pure functions over an injectable fetch. No URL, code, token or secret
18
+ * ever goes into an error message.
19
+ *
20
+ * @module services/connector/remote-mcp-oauth
21
+ */
22
+ /** Minimal fetch (injectable for tests). */
23
+ export type OAuthFetch = (url: string, init: {
24
+ method: string;
25
+ headers: Record<string, string>;
26
+ body?: string;
27
+ signal?: AbortSignal;
28
+ redirect?: 'follow' | 'manual' | 'error';
29
+ }) => Promise<{
30
+ status: number;
31
+ ok: boolean;
32
+ headers: {
33
+ get(name: string): string | null;
34
+ };
35
+ text(): Promise<string>;
36
+ }>;
37
+ /** An OAuth failure. `code` is stable; the message is owner-safe. */
38
+ export declare class RemoteMcpOAuthError extends Error {
39
+ readonly code: 'discovery_failed' | 'registration_unsupported' | 'registration_failed' | 'pkce_unsupported' | 'token_failed' | 'invalid_grant' | 'network';
40
+ constructor(code: 'discovery_failed' | 'registration_unsupported' | 'registration_failed' | 'pkce_unsupported' | 'token_failed' | 'invalid_grant' | 'network', message: string);
41
+ }
42
+ /** What `WWW-Authenticate: Bearer …` carried. */
43
+ export interface BearerChallenge {
44
+ resourceMetadata?: string;
45
+ scope?: string;
46
+ error?: string;
47
+ }
48
+ /** RFC 9728 protected resource metadata (the fields we use). */
49
+ export interface ProtectedResourceMetadata {
50
+ resource?: string;
51
+ authorization_servers?: string[];
52
+ scopes_supported?: string[];
53
+ }
54
+ /** RFC 8414 authorization server metadata (the fields we use). */
55
+ export interface AuthorizationServerMetadata {
56
+ issuer?: string;
57
+ authorization_endpoint: string;
58
+ token_endpoint: string;
59
+ registration_endpoint?: string;
60
+ scopes_supported?: string[];
61
+ code_challenge_methods_supported?: string[];
62
+ token_endpoint_auth_methods_supported?: string[];
63
+ }
64
+ /** Everything discovery learned. */
65
+ export interface DiscoveredAuthorization {
66
+ /** `resource` to send (RFC 8707). */
67
+ resource: string;
68
+ /** Scope to ask for, if any. */
69
+ scope?: string;
70
+ /** Issuer / AS base. */
71
+ issuer: string;
72
+ metadata: AuthorizationServerMetadata;
73
+ }
74
+ /** A registered (or owner-entered) client. */
75
+ export interface OAuthClient {
76
+ clientId: string;
77
+ clientSecret?: string;
78
+ /** How the token endpoint wants the client to authenticate. */
79
+ tokenAuthMethod: 'none' | 'client_secret_post' | 'client_secret_basic';
80
+ /** The redirect URI it was registered for. */
81
+ redirectUri: string;
82
+ }
83
+ /** Tokens from the token endpoint. */
84
+ export interface OAuthTokens {
85
+ accessToken: string;
86
+ refreshToken?: string;
87
+ /** Epoch ms. */
88
+ expiresAt: number;
89
+ scope?: string;
90
+ tokenType: string;
91
+ }
92
+ /**
93
+ * Parse `WWW-Authenticate` for a Bearer challenge.
94
+ *
95
+ * @param header - Header value (may hold several challenges)
96
+ * @returns The Bearer challenge's parameters, or null when there is none
97
+ */
98
+ export declare function parseWwwAuthenticate(header: string | null | undefined): BearerChallenge | null;
99
+ /**
100
+ * A discovery URL must be https (http only for a localhost server).
101
+ *
102
+ * @param raw - URL from a header or document
103
+ * @param serverUrl - The MCP server (decides whether http is acceptable)
104
+ * @returns The parsed URL, or null when unacceptable
105
+ */
106
+ export declare function safeDiscoveryUrl(raw: unknown, serverUrl: string): URL | null;
107
+ /**
108
+ * RFC 9728 metadata: the URL the challenge named, else the well-known
109
+ * locations (path-suffixed first, then root).
110
+ *
111
+ * @param serverUrl - MCP server URL
112
+ * @param challenge - Parsed challenge, if any
113
+ * @param fetchImpl - fetch
114
+ * @returns The metadata, or null when the server publishes none
115
+ */
116
+ export declare function fetchProtectedResourceMetadata(serverUrl: string, challenge: BearerChallenge | null, fetchImpl: OAuthFetch): Promise<ProtectedResourceMetadata | null>;
117
+ /**
118
+ * RFC 8414 / OIDC discovery for an issuer, in the order the MCP spec gives.
119
+ *
120
+ * @param issuer - Authorization server issuer URL
121
+ * @param serverUrl - MCP server (for the https rule)
122
+ * @param fetchImpl - fetch
123
+ * @returns The metadata
124
+ * @throws RemoteMcpOAuthError discovery_failed | pkce_unsupported
125
+ */
126
+ export declare function fetchAuthorizationServerMetadata(issuer: string, serverUrl: string, fetchImpl: OAuthFetch): Promise<AuthorizationServerMetadata>;
127
+ /**
128
+ * Full discovery from a 401 challenge.
129
+ *
130
+ * @param serverUrl - MCP server URL (secret; never in errors)
131
+ * @param challenge - Parsed `WWW-Authenticate`, if any
132
+ * @param fetchImpl - fetch
133
+ * @returns Resource, scope, issuer and endpoints
134
+ * @throws RemoteMcpOAuthError discovery_failed | pkce_unsupported
135
+ */
136
+ export declare function discoverAuthorization(serverUrl: string, challenge: BearerChallenge | null, fetchImpl: OAuthFetch): Promise<DiscoveredAuthorization>;
137
+ /**
138
+ * Register Crewly as a public client (RFC 7591).
139
+ *
140
+ * @param metadata - AS metadata (must have `registration_endpoint`)
141
+ * @param redirectUri - The Cloud callback
142
+ * @param fetchImpl - fetch
143
+ * @returns The client
144
+ * @throws RemoteMcpOAuthError registration_unsupported | registration_failed
145
+ */
146
+ export declare function registerClient(metadata: AuthorizationServerMetadata, redirectUri: string, fetchImpl: OAuthFetch): Promise<OAuthClient>;
147
+ /**
148
+ * A PKCE verifier and its S256 challenge.
149
+ *
150
+ * @param random - Random source (tests)
151
+ * @returns `{ verifier, challenge }`
152
+ */
153
+ export declare function createPkcePair(random?: (n: number) => Buffer): {
154
+ verifier: string;
155
+ challenge: string;
156
+ };
157
+ /**
158
+ * The authorize URL, without `state` (the Cloud broker adds it).
159
+ *
160
+ * @param discovered - Discovery result
161
+ * @param client - Client
162
+ * @param challenge - PKCE challenge
163
+ * @returns The URL
164
+ */
165
+ export declare function buildAuthorizeUrl(discovered: DiscoveredAuthorization, client: OAuthClient, challenge: string): string;
166
+ /**
167
+ * Exchange an authorization code.
168
+ *
169
+ * @param args - Endpoint, client, code, verifier, resource
170
+ * @param fetchImpl - fetch
171
+ * @param now - Clock
172
+ * @returns Tokens
173
+ */
174
+ export declare function exchangeCode(args: {
175
+ tokenEndpoint: string;
176
+ client: OAuthClient;
177
+ code: string;
178
+ verifier: string;
179
+ resource: string;
180
+ }, fetchImpl: OAuthFetch, now?: () => number): Promise<OAuthTokens>;
181
+ /**
182
+ * Refresh an access token. A server that does not rotate refresh tokens
183
+ * returns none; the caller keeps the old one.
184
+ *
185
+ * @param args - Endpoint, client, refresh token, resource
186
+ * @param fetchImpl - fetch
187
+ * @param now - Clock
188
+ * @returns Tokens
189
+ */
190
+ export declare function refreshTokens(args: {
191
+ tokenEndpoint: string;
192
+ client: OAuthClient;
193
+ refreshToken: string;
194
+ resource: string;
195
+ }, fetchImpl: OAuthFetch, now?: () => number): Promise<OAuthTokens>;
196
+ //# sourceMappingURL=remote-mcp-oauth.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"remote-mcp-oauth.d.ts","sourceRoot":"","sources":["../../../../../../backend/src/services/connector/remote-mcp-oauth.ts"],"names":[],"mappings":"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"}