@enfyra/mcp-server 0.1.69 → 0.1.71

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 (248) hide show
  1. package/README.md +1 -1
  2. package/dist/lib/config-local-adapters.d.ts +18 -0
  3. package/dist/lib/config-local-adapters.js +271 -0
  4. package/dist/lib/config-local-adapters.js.map +1 -0
  5. package/dist/lib/config-local-contracts.d.ts +28 -0
  6. package/dist/lib/config-local-contracts.js +200 -0
  7. package/dist/lib/config-local-contracts.js.map +1 -0
  8. package/dist/lib/config-local-prompts.d.ts +10 -0
  9. package/dist/lib/config-local-prompts.js +185 -0
  10. package/dist/lib/config-local-prompts.js.map +1 -0
  11. package/dist/lib/config-local-types.d.ts +23 -0
  12. package/dist/lib/config-local-types.js +2 -0
  13. package/dist/lib/config-local-types.js.map +1 -0
  14. package/dist/lib/config-local.js +3 -649
  15. package/dist/lib/config-local.js.map +1 -1
  16. package/dist/lib/discovery-tools.d.ts +4 -0
  17. package/dist/lib/discovery-tools.js +546 -0
  18. package/dist/lib/discovery-tools.js.map +1 -0
  19. package/dist/lib/dynamic-repository-builder.d.ts +1 -1
  20. package/dist/lib/dynamic-script-context-contract.d.ts +100 -0
  21. package/dist/lib/dynamic-script-context-contract.js +163 -0
  22. package/dist/lib/dynamic-script-context-contract.js.map +1 -0
  23. package/dist/lib/enfyra-mcp-server.d.ts +3 -0
  24. package/dist/lib/enfyra-mcp-server.js +79 -0
  25. package/dist/lib/enfyra-mcp-server.js.map +1 -0
  26. package/dist/lib/enfyra-tool-logic.d.ts +7 -0
  27. package/dist/lib/enfyra-tool-logic.js +8 -0
  28. package/dist/lib/enfyra-tool-logic.js.map +1 -0
  29. package/dist/lib/enfyra-tool-types.d.ts +27 -0
  30. package/dist/lib/enfyra-tool-types.js +2 -0
  31. package/dist/lib/enfyra-tool-types.js.map +1 -0
  32. package/dist/lib/extension-api-builders.d.ts +17 -0
  33. package/dist/lib/extension-api-builders.js +235 -0
  34. package/dist/lib/extension-api-builders.js.map +1 -0
  35. package/dist/lib/extension-component-builders.d.ts +87 -0
  36. package/dist/lib/extension-component-builders.js +623 -0
  37. package/dist/lib/extension-component-builders.js.map +1 -0
  38. package/dist/lib/extension-contract-review.d.ts +26 -0
  39. package/dist/lib/extension-contract-review.js +187 -0
  40. package/dist/lib/extension-contract-review.js.map +1 -0
  41. package/dist/lib/extension-theme-contract.d.ts +63 -0
  42. package/dist/lib/extension-theme-contract.js +417 -0
  43. package/dist/lib/extension-theme-contract.js.map +1 -0
  44. package/dist/lib/identity-tools.d.ts +4 -0
  45. package/dist/lib/identity-tools.js +46 -0
  46. package/dist/lib/identity-tools.js.map +1 -0
  47. package/dist/lib/log-tools.d.ts +4 -0
  48. package/dist/lib/log-tools.js +65 -0
  49. package/dist/lib/log-tools.js.map +1 -0
  50. package/dist/lib/mcp-example-connect.d.ts +9 -0
  51. package/dist/lib/mcp-example-connect.js +442 -0
  52. package/dist/lib/mcp-example-connect.js.map +1 -0
  53. package/dist/lib/mcp-example-extensions.d.ts +9 -0
  54. package/dist/lib/mcp-example-extensions.js +729 -0
  55. package/dist/lib/mcp-example-extensions.js.map +1 -0
  56. package/dist/lib/mcp-example-files.d.ts +9 -0
  57. package/dist/lib/mcp-example-files.js +51 -0
  58. package/dist/lib/mcp-example-files.js.map +1 -0
  59. package/dist/lib/mcp-example-flows.d.ts +9 -0
  60. package/dist/lib/mcp-example-flows.js +76 -0
  61. package/dist/lib/mcp-example-flows.js.map +1 -0
  62. package/dist/lib/mcp-example-graphql.d.ts +9 -0
  63. package/dist/lib/mcp-example-graphql.js +57 -0
  64. package/dist/lib/mcp-example-graphql.js.map +1 -0
  65. package/dist/lib/mcp-example-handlers-hooks.d.ts +9 -0
  66. package/dist/lib/mcp-example-handlers-hooks.js +328 -0
  67. package/dist/lib/mcp-example-handlers-hooks.js.map +1 -0
  68. package/dist/lib/mcp-example-oauth-setup.d.ts +9 -0
  69. package/dist/lib/mcp-example-oauth-setup.js +41 -0
  70. package/dist/lib/mcp-example-oauth-setup.js.map +1 -0
  71. package/dist/lib/mcp-example-permissions-rls.d.ts +9 -0
  72. package/dist/lib/mcp-example-permissions-rls.js +210 -0
  73. package/dist/lib/mcp-example-permissions-rls.js.map +1 -0
  74. package/dist/lib/mcp-example-queries-deep.d.ts +9 -0
  75. package/dist/lib/mcp-example-queries-deep.js +220 -0
  76. package/dist/lib/mcp-example-queries-deep.js.map +1 -0
  77. package/dist/lib/mcp-example-schema-relations.d.ts +9 -0
  78. package/dist/lib/mcp-example-schema-relations.js +148 -0
  79. package/dist/lib/mcp-example-schema-relations.js.map +1 -0
  80. package/dist/lib/mcp-example-websocket.d.ts +9 -0
  81. package/dist/lib/mcp-example-websocket.js +103 -0
  82. package/dist/lib/mcp-example-websocket.js.map +1 -0
  83. package/dist/lib/mcp-examples.d.ts +5 -5
  84. package/dist/lib/mcp-examples.js +22 -2394
  85. package/dist/lib/mcp-examples.js.map +1 -1
  86. package/dist/lib/method-tools.d.ts +4 -0
  87. package/dist/lib/method-tools.js +217 -0
  88. package/dist/lib/method-tools.js.map +1 -0
  89. package/dist/lib/package-tools.d.ts +4 -0
  90. package/dist/lib/package-tools.js +98 -0
  91. package/dist/lib/package-tools.js.map +1 -0
  92. package/dist/lib/platform-data-operations.d.ts +24 -0
  93. package/dist/lib/platform-data-operations.js +71 -0
  94. package/dist/lib/platform-data-operations.js.map +1 -0
  95. package/dist/lib/platform-endpoint-workflow.d.ts +42 -0
  96. package/dist/lib/platform-endpoint-workflow.js +382 -0
  97. package/dist/lib/platform-endpoint-workflow.js.map +1 -0
  98. package/dist/lib/platform-extension-source.d.ts +487 -0
  99. package/dist/lib/platform-extension-source.js +524 -0
  100. package/dist/lib/platform-extension-source.js.map +1 -0
  101. package/dist/lib/platform-extension-tools.d.ts +1 -0
  102. package/dist/lib/platform-extension-tools.js +416 -0
  103. package/dist/lib/platform-extension-tools.js.map +1 -0
  104. package/dist/lib/platform-extension-ui.d.ts +4 -0
  105. package/dist/lib/platform-extension-ui.js +5 -0
  106. package/dist/lib/platform-extension-ui.js.map +1 -0
  107. package/dist/lib/platform-extension-workflow.d.ts +54 -0
  108. package/dist/lib/platform-extension-workflow.js +194 -0
  109. package/dist/lib/platform-extension-workflow.js.map +1 -0
  110. package/dist/lib/platform-flow-operations.d.ts +554 -0
  111. package/dist/lib/platform-flow-operations.js +317 -0
  112. package/dist/lib/platform-flow-operations.js.map +1 -0
  113. package/dist/lib/platform-flow-tools.d.ts +1 -0
  114. package/dist/lib/platform-flow-tools.js +248 -0
  115. package/dist/lib/platform-flow-tools.js.map +1 -0
  116. package/dist/lib/platform-operation-logic.d.ts +10 -0
  117. package/dist/lib/platform-operation-logic.js +11 -0
  118. package/dist/lib/platform-operation-logic.js.map +1 -0
  119. package/dist/lib/platform-operation-tools.d.ts +1 -324
  120. package/dist/lib/platform-operation-tools.js +13 -4620
  121. package/dist/lib/platform-operation-tools.js.map +1 -1
  122. package/dist/lib/platform-operation-types.d.ts +46 -0
  123. package/dist/lib/platform-operation-types.js +2 -0
  124. package/dist/lib/platform-operation-types.js.map +1 -0
  125. package/dist/lib/platform-policy-tools.d.ts +1 -0
  126. package/dist/lib/platform-policy-tools.js +248 -0
  127. package/dist/lib/platform-policy-tools.js.map +1 -0
  128. package/dist/lib/platform-resource-operations.d.ts +124 -0
  129. package/dist/lib/platform-resource-operations.js +109 -0
  130. package/dist/lib/platform-resource-operations.js.map +1 -0
  131. package/dist/lib/platform-resource-tools.d.ts +1 -0
  132. package/dist/lib/platform-resource-tools.js +70 -0
  133. package/dist/lib/platform-resource-tools.js.map +1 -0
  134. package/dist/lib/platform-route-operations.d.ts +222 -0
  135. package/dist/lib/platform-route-operations.js +290 -0
  136. package/dist/lib/platform-route-operations.js.map +1 -0
  137. package/dist/lib/platform-route-tools.d.ts +1 -0
  138. package/dist/lib/platform-route-tools.js +307 -0
  139. package/dist/lib/platform-route-tools.js.map +1 -0
  140. package/dist/lib/platform-shared-operations.d.ts +7 -0
  141. package/dist/lib/platform-shared-operations.js +4 -0
  142. package/dist/lib/platform-shared-operations.js.map +1 -0
  143. package/dist/lib/platform-websocket-tools.d.ts +1 -0
  144. package/dist/lib/platform-websocket-tools.js +70 -0
  145. package/dist/lib/platform-websocket-tools.js.map +1 -0
  146. package/dist/lib/record-tools.d.ts +4 -0
  147. package/dist/lib/record-tools.js +418 -0
  148. package/dist/lib/record-tools.js.map +1 -0
  149. package/dist/lib/required-knowledge.d.ts +1 -1
  150. package/dist/lib/required-knowledge.js +3 -2
  151. package/dist/lib/required-knowledge.js.map +1 -1
  152. package/dist/lib/route-access-tools.d.ts +4 -0
  153. package/dist/lib/route-access-tools.js +172 -0
  154. package/dist/lib/route-access-tools.js.map +1 -0
  155. package/dist/lib/route-definition-tools.d.ts +4 -0
  156. package/dist/lib/route-definition-tools.js +285 -0
  157. package/dist/lib/route-definition-tools.js.map +1 -0
  158. package/dist/lib/route-inspection-tools.d.ts +4 -0
  159. package/dist/lib/route-inspection-tools.js +319 -0
  160. package/dist/lib/route-inspection-tools.js.map +1 -0
  161. package/dist/lib/route-tools.d.ts +1 -0
  162. package/dist/lib/route-tools.js +9 -0
  163. package/dist/lib/route-tools.js.map +1 -0
  164. package/dist/lib/runtime-zone-registry.d.ts +27 -0
  165. package/dist/lib/runtime-zone-registry.js +81 -0
  166. package/dist/lib/runtime-zone-registry.js.map +1 -0
  167. package/dist/lib/runtime-zone-search.d.ts +303 -0
  168. package/dist/lib/runtime-zone-search.js +596 -0
  169. package/dist/lib/runtime-zone-search.js.map +1 -0
  170. package/dist/lib/runtime-zone-tools.d.ts +2 -307
  171. package/dist/lib/runtime-zone-tools.js +2 -674
  172. package/dist/lib/runtime-zone-tools.js.map +1 -1
  173. package/dist/lib/schema-column-tools.d.ts +3 -0
  174. package/dist/lib/schema-column-tools.js +80 -0
  175. package/dist/lib/schema-column-tools.js.map +1 -0
  176. package/dist/lib/schema-mutation-coordinator.d.ts +28 -0
  177. package/dist/lib/schema-mutation-coordinator.js +154 -0
  178. package/dist/lib/schema-mutation-coordinator.js.map +1 -0
  179. package/dist/lib/schema-relation-contracts.d.ts +39 -0
  180. package/dist/lib/schema-relation-contracts.js +160 -0
  181. package/dist/lib/schema-relation-contracts.js.map +1 -0
  182. package/dist/lib/schema-relation-tools.d.ts +3 -0
  183. package/dist/lib/schema-relation-tools.js +61 -0
  184. package/dist/lib/schema-relation-tools.js.map +1 -0
  185. package/dist/lib/schema-table-contracts.d.ts +28 -0
  186. package/dist/lib/schema-table-contracts.js +263 -0
  187. package/dist/lib/schema-table-contracts.js.map +1 -0
  188. package/dist/lib/schema-table-tools.d.ts +3 -0
  189. package/dist/lib/schema-table-tools.js +297 -0
  190. package/dist/lib/schema-table-tools.js.map +1 -0
  191. package/dist/lib/schema-tool-operations.d.ts +150 -0
  192. package/dist/lib/schema-tool-operations.js +468 -0
  193. package/dist/lib/schema-tool-operations.js.map +1 -0
  194. package/dist/lib/schema-tool-types.d.ts +38 -0
  195. package/dist/lib/schema-tool-types.js +2 -0
  196. package/dist/lib/schema-tool-types.js.map +1 -0
  197. package/dist/lib/schema-verification.d.ts +14 -0
  198. package/dist/lib/schema-verification.js +105 -0
  199. package/dist/lib/schema-verification.js.map +1 -0
  200. package/dist/lib/script-tools.d.ts +4 -0
  201. package/dist/lib/script-tools.js +127 -0
  202. package/dist/lib/script-tools.js.map +1 -0
  203. package/dist/lib/system-tools.d.ts +4 -0
  204. package/dist/lib/system-tools.js +41 -0
  205. package/dist/lib/system-tools.js.map +1 -0
  206. package/dist/lib/table-tool-logic.d.ts +5 -0
  207. package/dist/lib/table-tool-logic.js +6 -0
  208. package/dist/lib/table-tool-logic.js.map +1 -0
  209. package/dist/lib/table-tools.d.ts +1 -84
  210. package/dist/lib/table-tools.js +7 -1522
  211. package/dist/lib/table-tools.js.map +1 -1
  212. package/dist/lib/tool-catalog.d.ts +2 -1
  213. package/dist/lib/tool-catalog.js +23 -2
  214. package/dist/lib/tool-catalog.js.map +1 -1
  215. package/dist/lib/tool-metadata-operations.d.ts +27 -0
  216. package/dist/lib/tool-metadata-operations.js +93 -0
  217. package/dist/lib/tool-metadata-operations.js.map +1 -0
  218. package/dist/lib/tool-permission-profile.d.ts +37 -0
  219. package/dist/lib/tool-permission-profile.js +106 -0
  220. package/dist/lib/tool-permission-profile.js.map +1 -0
  221. package/dist/lib/tool-record-operations.d.ts +102 -0
  222. package/dist/lib/tool-record-operations.js +260 -0
  223. package/dist/lib/tool-record-operations.js.map +1 -0
  224. package/dist/lib/tool-route-inspection.d.ts +47 -0
  225. package/dist/lib/tool-route-inspection.js +168 -0
  226. package/dist/lib/tool-route-inspection.js.map +1 -0
  227. package/dist/lib/tool-routing.d.ts +3 -417
  228. package/dist/lib/tool-routing.js +3 -1038
  229. package/dist/lib/tool-routing.js.map +1 -1
  230. package/dist/lib/tool-runtime-config.d.ts +33 -0
  231. package/dist/lib/tool-runtime-config.js +237 -0
  232. package/dist/lib/tool-runtime-config.js.map +1 -0
  233. package/dist/lib/tool-script-operations.d.ts +34 -0
  234. package/dist/lib/tool-script-operations.js +153 -0
  235. package/dist/lib/tool-script-operations.js.map +1 -0
  236. package/dist/lib/workflow-definitions.d.ts +366 -0
  237. package/dist/lib/workflow-definitions.js +703 -0
  238. package/dist/lib/workflow-definitions.js.map +1 -0
  239. package/dist/lib/workflow-planner.d.ts +45 -0
  240. package/dist/lib/workflow-planner.js +338 -0
  241. package/dist/lib/workflow-planner.js.map +1 -0
  242. package/dist/lib/workflow-types.d.ts +39 -0
  243. package/dist/lib/workflow-types.js +2 -0
  244. package/dist/lib/workflow-types.js.map +1 -0
  245. package/dist/mcp-server-entry.d.ts +0 -3
  246. package/dist/mcp-server-entry.js +2 -3249
  247. package/dist/mcp-server-entry.js.map +1 -1
  248. package/package.json +1 -1
package/README.md CHANGED
@@ -101,7 +101,7 @@ npx @enfyra/mcp-server@latest config [options]
101
101
  | `ENFYRA_API_TOKEN` | Programmatic token from the Enfyra admin UI `/me` | Required |
102
102
  | `ENFYRA_MCP_TOOLSET` | `guided` for the normal curated toolset or `full` for low-level debugging tools | `guided` |
103
103
  | `ENFYRA_MCP_PROFILE` | Guided domain surface: `all`, `extension`, `schema`, `runtime`, or `operations`; ignored by `full` | `all` |
104
- | `ENFYRA_MCP_DYNAMIC_TOOLS` | `on` starts `guided/all` with a compact router and exposes exact tools after `select_enfyra_workflow`; use `off` for hosts that do not refresh `tools/list_changed` | `on` for `guided/all` |
104
+ | `ENFYRA_MCP_DYNAMIC_TOOLS` | `on` starts `guided/all` with a compact router and exposes exact tools after `select_enfyra_workflow`; `off` exposes the complete guided manifest immediately and is written automatically for Codex configs | `on` for `guided/all` |
105
105
 
106
106
  The API token is exchanged for a short-lived access token at runtime. It is not sent directly as a Bearer token.
107
107
 
@@ -0,0 +1,18 @@
1
+ import type { ExistingEnv } from './config-local-contracts.js';
2
+ type ServerEntry = ReturnType<typeof buildServerEntry>;
3
+ export declare function ensureProjectConfigIgnored(root: string, paths: string[]): Promise<void>;
4
+ export declare function assertProjectConfigUntracked(root: string, paths: string[]): Promise<void>;
5
+ export declare function buildServerEntry(apiUrl: string, apiToken: string): {
6
+ command: string;
7
+ args: string[];
8
+ env: {
9
+ ENFYRA_API_URL: string;
10
+ ENFYRA_API_TOKEN: string;
11
+ };
12
+ };
13
+ export declare function mergeMcpFile(absPath: string, serverEntry: ServerEntry): Promise<void>;
14
+ export declare function mergeVscodeMcpFile(absPath: string, serverEntry: ServerEntry): Promise<void>;
15
+ export declare function mergeCodexConfig(absPath: string, apiUrl: string, apiToken: string): Promise<void>;
16
+ export declare function getClientPath(client: any, root: any): string;
17
+ export declare function loadExistingEnfyraEnv(root: string, readClaude: boolean, readCursor: boolean, readCodex: boolean, readVscode: boolean, readAntigravity: boolean): Promise<ExistingEnv>;
18
+ export {};
@@ -0,0 +1,271 @@
1
+ import { appendFile, chmod, readFile, writeFile, mkdir } from 'node:fs/promises';
2
+ import { execFile as execFileCallback } from 'node:child_process';
3
+ import { dirname, join, relative } from 'node:path';
4
+ import { promisify } from 'node:util';
5
+ const SERVER_KEY = 'enfyra';
6
+ const MCP_PACKAGE_SPEC = '@enfyra/mcp-server@latest';
7
+ const PRIVATE_FILE_MODE = 0o600;
8
+ const execFile = promisify(execFileCallback);
9
+ async function writePrivateFile(path, content) {
10
+ await writeFile(path, content, { encoding: 'utf8', mode: PRIVATE_FILE_MODE });
11
+ await chmod(path, PRIVATE_FILE_MODE);
12
+ }
13
+ export async function ensureProjectConfigIgnored(root, paths) {
14
+ const gitignorePath = join(root, '.gitignore');
15
+ let gitignore = '';
16
+ try {
17
+ gitignore = await readFile(gitignorePath, 'utf8');
18
+ }
19
+ catch (error) {
20
+ if (error.code !== 'ENOENT')
21
+ throw error;
22
+ }
23
+ const existing = new Set(gitignore.split(/\r?\n/).map((line) => line.trim()).filter(Boolean));
24
+ const entries = paths
25
+ .map((path) => relative(root, path).split('\\').join('/'))
26
+ .filter((path) => path && !existing.has(path));
27
+ if (!entries.length)
28
+ return;
29
+ const prefix = gitignore && !gitignore.endsWith('\n') ? '\n' : '';
30
+ await appendFile(gitignorePath, `${prefix}${entries.join('\n')}\n`, {
31
+ encoding: 'utf8',
32
+ mode: PRIVATE_FILE_MODE,
33
+ });
34
+ }
35
+ export async function assertProjectConfigUntracked(root, paths) {
36
+ const entries = paths
37
+ .map((path) => relative(root, path).split('\\').join('/'))
38
+ .filter(Boolean);
39
+ if (!entries.length)
40
+ return;
41
+ try {
42
+ const { stdout } = await execFile('git', [
43
+ '-C',
44
+ root,
45
+ 'ls-files',
46
+ '--',
47
+ ...entries,
48
+ ]);
49
+ const tracked = stdout.trim().split(/\r?\n/).filter(Boolean);
50
+ if (tracked.length) {
51
+ throw new Error(`Refusing to write tracked MCP config files: ${tracked.join(', ')}. Remove them from Git tracking before storing a token.`);
52
+ }
53
+ }
54
+ catch (error) {
55
+ if (error?.code === 128)
56
+ return;
57
+ throw error;
58
+ }
59
+ }
60
+ export function buildServerEntry(apiUrl, apiToken) {
61
+ return {
62
+ command: 'npx',
63
+ args: ['-y', MCP_PACKAGE_SPEC],
64
+ env: {
65
+ ENFYRA_API_URL: apiUrl,
66
+ ENFYRA_API_TOKEN: apiToken,
67
+ },
68
+ };
69
+ }
70
+ export async function mergeMcpFile(absPath, serverEntry) {
71
+ let data = { mcpServers: {} };
72
+ try {
73
+ const raw = await readFile(absPath, 'utf8');
74
+ const parsed = JSON.parse(raw);
75
+ if (parsed && typeof parsed === 'object' && !Array.isArray(parsed)) {
76
+ data = { ...parsed, mcpServers: parsed.mcpServers && typeof parsed.mcpServers === 'object' ? { ...parsed.mcpServers } : {} };
77
+ }
78
+ }
79
+ catch (e) {
80
+ if (e.code !== 'ENOENT')
81
+ throw e;
82
+ }
83
+ data.mcpServers = { ...data.mcpServers, [SERVER_KEY]: serverEntry };
84
+ const dir = dirname(absPath);
85
+ await mkdir(dir, { recursive: true });
86
+ await writePrivateFile(absPath, `${JSON.stringify(data, null, 2)}\n`);
87
+ }
88
+ export async function mergeVscodeMcpFile(absPath, serverEntry) {
89
+ let data = { servers: {} };
90
+ try {
91
+ const raw = await readFile(absPath, 'utf8');
92
+ const parsed = JSON.parse(raw);
93
+ if (parsed && typeof parsed === 'object') {
94
+ data = {
95
+ ...parsed,
96
+ servers: parsed.servers && typeof parsed.servers === 'object' ? { ...parsed.servers } : {},
97
+ };
98
+ }
99
+ }
100
+ catch (e) {
101
+ if (e.code !== 'ENOENT')
102
+ throw e;
103
+ }
104
+ data.servers = {
105
+ ...data.servers,
106
+ [SERVER_KEY]: {
107
+ type: 'stdio',
108
+ ...serverEntry,
109
+ },
110
+ };
111
+ await mkdir(dirname(absPath), { recursive: true });
112
+ await writePrivateFile(absPath, `${JSON.stringify(data, null, 2)}\n`);
113
+ }
114
+ function tomlString(value) {
115
+ return JSON.stringify(String(value ?? ''));
116
+ }
117
+ function buildCodexTomlBlock(apiUrl, apiToken) {
118
+ return [
119
+ '[mcp_servers.enfyra]',
120
+ 'command = "npx"',
121
+ `args = ["-y", "${MCP_PACKAGE_SPEC}"]`,
122
+ '',
123
+ '[mcp_servers.enfyra.env]',
124
+ `ENFYRA_API_URL = ${tomlString(apiUrl)}`,
125
+ `ENFYRA_API_TOKEN = ${tomlString(apiToken)}`,
126
+ 'ENFYRA_MCP_DYNAMIC_TOOLS = "off"',
127
+ '',
128
+ ].join('\n');
129
+ }
130
+ export async function mergeCodexConfig(absPath, apiUrl, apiToken) {
131
+ let raw = '';
132
+ try {
133
+ raw = await readFile(absPath, 'utf8');
134
+ }
135
+ catch (e) {
136
+ if (e.code !== 'ENOENT')
137
+ throw e;
138
+ }
139
+ const kept = [];
140
+ let skip = false;
141
+ for (const line of raw.split(/\r?\n/)) {
142
+ const header = line.match(/^\s*\[([^\]]+)\]\s*$/);
143
+ if (header) {
144
+ const section = header[1].trim();
145
+ skip = section === 'mcp_servers.enfyra' || section.startsWith('mcp_servers.enfyra.');
146
+ }
147
+ if (!skip)
148
+ kept.push(line);
149
+ }
150
+ const prefix = kept.join('\n').trimEnd();
151
+ const next = prefix ? `${prefix}\n\n${buildCodexTomlBlock(apiUrl, apiToken)}` : buildCodexTomlBlock(apiUrl, apiToken);
152
+ await mkdir(dirname(absPath), { recursive: true });
153
+ await writePrivateFile(absPath, next);
154
+ }
155
+ function parseTomlString(value) {
156
+ const trimmed = String(value || '').trim();
157
+ if (!trimmed)
158
+ return '';
159
+ try {
160
+ return JSON.parse(trimmed);
161
+ }
162
+ catch {
163
+ return trimmed.replace(/^['"]|['"]$/g, '');
164
+ }
165
+ }
166
+ async function readCodexEnfyraEnv(absPath) {
167
+ try {
168
+ const raw = await readFile(absPath, 'utf8');
169
+ const values = { apiUrl: '', apiToken: '' };
170
+ let inEnv = false;
171
+ for (const line of raw.split(/\r?\n/)) {
172
+ const header = line.match(/^\s*\[([^\]]+)\]\s*$/);
173
+ if (header) {
174
+ inEnv = header[1].trim() === 'mcp_servers.enfyra.env';
175
+ continue;
176
+ }
177
+ if (!inEnv)
178
+ continue;
179
+ const pair = line.match(/^\s*([A-Z0-9_]+)\s*=\s*(.+?)\s*$/);
180
+ if (!pair)
181
+ continue;
182
+ const key = pair[1];
183
+ const value = parseTomlString(pair[2]);
184
+ if (key === 'ENFYRA_API_URL')
185
+ values.apiUrl = value;
186
+ if (key === 'ENFYRA_API_TOKEN')
187
+ values.apiToken = value;
188
+ }
189
+ if (values.apiUrl || values.apiToken)
190
+ return values;
191
+ }
192
+ catch {
193
+ /* */
194
+ }
195
+ return null;
196
+ }
197
+ function getCodexConfigPath(root) {
198
+ return join(root, '.codex', 'config.toml');
199
+ }
200
+ function getClaudeConfigPath(root) {
201
+ return join(root, '.mcp.json');
202
+ }
203
+ function getCursorConfigPath(root) {
204
+ return join(root, '.cursor', 'mcp.json');
205
+ }
206
+ function getVscodeConfigPath(root) {
207
+ return join(root, '.vscode', 'mcp.json');
208
+ }
209
+ function getAntigravityConfigPath(root) {
210
+ return join(root, '.agents', 'mcp_config.json');
211
+ }
212
+ export function getClientPath(client, root) {
213
+ if (client === 'claude')
214
+ return getClaudeConfigPath(root);
215
+ if (client === 'cursor')
216
+ return getCursorConfigPath(root);
217
+ if (client === 'codex')
218
+ return getCodexConfigPath(root);
219
+ if (client === 'vscode')
220
+ return getVscodeConfigPath(root);
221
+ if (client === 'antigravity')
222
+ return getAntigravityConfigPath(root);
223
+ throw new Error(`Unknown MCP client: ${client}`);
224
+ }
225
+ async function readMcpServerEnv(absPath, serverRootKey) {
226
+ try {
227
+ const raw = await readFile(absPath, 'utf8');
228
+ const j = JSON.parse(raw);
229
+ const e = j?.[serverRootKey]?.[SERVER_KEY]?.env;
230
+ if (e && typeof e === 'object' && (e.ENFYRA_API_URL || e.ENFYRA_API_TOKEN)) {
231
+ return {
232
+ apiUrl: typeof e.ENFYRA_API_URL === 'string' ? e.ENFYRA_API_URL : '',
233
+ apiToken: typeof e.ENFYRA_API_TOKEN === 'string' ? e.ENFYRA_API_TOKEN : '',
234
+ };
235
+ }
236
+ }
237
+ catch {
238
+ /* */
239
+ }
240
+ return null;
241
+ }
242
+ export async function loadExistingEnfyraEnv(root, readClaude, readCursor, readCodex, readVscode, readAntigravity) {
243
+ const paths = [];
244
+ if (readClaude)
245
+ paths.push({ path: getClaudeConfigPath(root), rootKey: 'mcpServers' });
246
+ if (readCursor)
247
+ paths.push({ path: getCursorConfigPath(root), rootKey: 'mcpServers' });
248
+ if (!readClaude && readCursor)
249
+ paths.push({ path: getClaudeConfigPath(root), rootKey: 'mcpServers' });
250
+ if (readVscode)
251
+ paths.push({ path: getVscodeConfigPath(root), rootKey: 'servers' });
252
+ if (readAntigravity)
253
+ paths.push({ path: getAntigravityConfigPath(root), rootKey: 'mcpServers' });
254
+ const seen = new Set();
255
+ for (const entry of paths) {
256
+ const key = `${entry.rootKey}:${entry.path}`;
257
+ if (seen.has(key))
258
+ continue;
259
+ seen.add(key);
260
+ const env = await readMcpServerEnv(entry.path, entry.rootKey);
261
+ if (env)
262
+ return env;
263
+ }
264
+ if (readCodex) {
265
+ const codex = await readCodexEnfyraEnv(getCodexConfigPath(root));
266
+ if (codex)
267
+ return codex;
268
+ }
269
+ return { apiUrl: '', apiToken: '' };
270
+ }
271
+ //# sourceMappingURL=config-local-adapters.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"config-local-adapters.js","sourceRoot":"","sources":["../../src/lib/config-local-adapters.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,KAAK,EAAE,QAAQ,EAAE,SAAS,EAAE,KAAK,EAAE,MAAM,kBAAkB,CAAC;AACjF,OAAO,EAAE,QAAQ,IAAI,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AAClE,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAC;AACpD,OAAO,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AAGtC,MAAM,UAAU,GAAG,QAAQ,CAAC;AAC5B,MAAM,gBAAgB,GAAG,2BAA2B,CAAC;AACrD,MAAM,iBAAiB,GAAG,KAAK,CAAC;AAChC,MAAM,QAAQ,GAAG,SAAS,CAAC,gBAAgB,CAAC,CAAC;AAI7C,KAAK,UAAU,gBAAgB,CAAC,IAAY,EAAE,OAAe;IAC3D,MAAM,SAAS,CAAC,IAAI,EAAE,OAAO,EAAE,EAAE,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,iBAAiB,EAAE,CAAC,CAAC;IAC9E,MAAM,KAAK,CAAC,IAAI,EAAE,iBAAiB,CAAC,CAAC;AACvC,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,0BAA0B,CAAC,IAAY,EAAE,KAAe;IAC5E,MAAM,aAAa,GAAG,IAAI,CAAC,IAAI,EAAE,YAAY,CAAC,CAAC;IAC/C,IAAI,SAAS,GAAG,EAAE,CAAC;IACnB,IAAI,CAAC;QACH,SAAS,GAAG,MAAM,QAAQ,CAAC,aAAa,EAAE,MAAM,CAAC,CAAC;IACpD,CAAC;IAAC,OAAO,KAAU,EAAE,CAAC;QACpB,IAAI,KAAK,CAAC,IAAI,KAAK,QAAQ;YAAE,MAAM,KAAK,CAAC;IAC3C,CAAC;IACD,MAAM,QAAQ,GAAG,IAAI,GAAG,CACtB,SAAS,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CACpE,CAAC;IACF,MAAM,OAAO,GAAG,KAAK;SAClB,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,QAAQ,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;SACzD,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC;IACjD,IAAI,CAAC,OAAO,CAAC,MAAM;QAAE,OAAO;IAC5B,MAAM,MAAM,GAAG,SAAS,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC;IAClE,MAAM,UAAU,CAAC,aAAa,EAAE,GAAG,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE;QAClE,QAAQ,EAAE,MAAM;QAChB,IAAI,EAAE,iBAAiB;KACxB,CAAC,CAAC;AACL,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,4BAA4B,CAAC,IAAY,EAAE,KAAe;IAC9E,MAAM,OAAO,GAAG,KAAK;SAClB,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,QAAQ,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;SACzD,MAAM,CAAC,OAAO,CAAC,CAAC;IACnB,IAAI,CAAC,OAAO,CAAC,MAAM;QAAE,OAAO;IAC5B,IAAI,CAAC;QACH,MAAM,EAAE,MAAM,EAAE,GAAG,MAAM,QAAQ,CAAC,KAAK,EAAE;YACvC,IAAI;YACJ,IAAI;YACJ,UAAU;YACV,IAAI;YACJ,GAAG,OAAO;SACX,CAAC,CAAC;QACH,MAAM,OAAO,GAAG,MAAM,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;QAC7D,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;YACnB,MAAM,IAAI,KAAK,CACb,+CAA+C,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,yDAAyD,CAC3H,CAAC;QACJ,CAAC;IACH,CAAC;IAAC,OAAO,KAAU,EAAE,CAAC;QACpB,IAAI,KAAK,EAAE,IAAI,KAAK,GAAG;YAAE,OAAO;QAChC,MAAM,KAAK,CAAC;IACd,CAAC;AACH,CAAC;AAED,MAAM,UAAU,gBAAgB,CAAC,MAAc,EAAE,QAAgB;IAC/D,OAAO;QACL,OAAO,EAAE,KAAK;QACd,IAAI,EAAE,CAAC,IAAI,EAAE,gBAAgB,CAAC;QAC9B,GAAG,EAAE;YACH,cAAc,EAAE,MAAM;YACtB,gBAAgB,EAAE,QAAQ;SAC3B;KACF,CAAC;AACJ,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,YAAY,CAAC,OAAe,EAAE,WAAwB;IAC1E,IAAI,IAAI,GAA4C,EAAE,UAAU,EAAE,EAAE,EAAE,CAAC;IACvE,IAAI,CAAC;QACH,MAAM,GAAG,GAAG,MAAM,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;QAC5C,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QAC/B,IAAI,MAAM,IAAI,OAAO,MAAM,KAAK,QAAQ,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC;YACnE,IAAI,GAAG,EAAE,GAAG,MAAM,EAAE,UAAU,EAAE,MAAM,CAAC,UAAU,IAAI,OAAO,MAAM,CAAC,UAAU,KAAK,QAAQ,CAAC,CAAC,CAAC,EAAE,GAAG,MAAM,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC;QAC/H,CAAC;IACH,CAAC;IAAC,OAAO,CAAM,EAAE,CAAC;QAChB,IAAI,CAAC,CAAC,IAAI,KAAK,QAAQ;YAAE,MAAM,CAAC,CAAC;IACnC,CAAC;IACD,IAAI,CAAC,UAAU,GAAG,EAAE,GAAG,IAAI,CAAC,UAAU,EAAE,CAAC,UAAU,CAAC,EAAE,WAAW,EAAE,CAAC;IACpE,MAAM,GAAG,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;IAC7B,MAAM,KAAK,CAAC,GAAG,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IACtC,MAAM,gBAAgB,CAAC,OAAO,EAAE,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC;AACxE,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,kBAAkB,CAAC,OAAe,EAAE,WAAwB;IAChF,IAAI,IAAI,GAAyC,EAAE,OAAO,EAAE,EAAE,EAAE,CAAC;IACjE,IAAI,CAAC;QACH,MAAM,GAAG,GAAG,MAAM,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;QAC5C,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QAC/B,IAAI,MAAM,IAAI,OAAO,MAAM,KAAK,QAAQ,EAAE,CAAC;YACzC,IAAI,GAAG;gBACL,GAAG,MAAM;gBACT,OAAO,EAAE,MAAM,CAAC,OAAO,IAAI,OAAO,MAAM,CAAC,OAAO,KAAK,QAAQ,CAAC,CAAC,CAAC,EAAE,GAAG,MAAM,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE;aAC3F,CAAC;QACJ,CAAC;IACH,CAAC;IAAC,OAAO,CAAM,EAAE,CAAC;QAChB,IAAI,CAAC,CAAC,IAAI,KAAK,QAAQ;YAAE,MAAM,CAAC,CAAC;IACnC,CAAC;IACD,IAAI,CAAC,OAAO,GAAG;QACb,GAAG,IAAI,CAAC,OAAO;QACf,CAAC,UAAU,CAAC,EAAE;YACZ,IAAI,EAAE,OAAO;YACb,GAAG,WAAW;SACf;KACF,CAAC;IACF,MAAM,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IACnD,MAAM,gBAAgB,CAAC,OAAO,EAAE,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC;AACxE,CAAC;AAED,SAAS,UAAU,CAAC,KAAc;IAChC,OAAO,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,KAAK,IAAI,EAAE,CAAC,CAAC,CAAC;AAC7C,CAAC;AAED,SAAS,mBAAmB,CAAC,MAAc,EAAE,QAAgB;IAC3D,OAAO;QACL,sBAAsB;QACtB,iBAAiB;QACjB,kBAAkB,gBAAgB,IAAI;QACtC,EAAE;QACF,0BAA0B;QAC1B,oBAAoB,UAAU,CAAC,MAAM,CAAC,EAAE;QACxC,sBAAsB,UAAU,CAAC,QAAQ,CAAC,EAAE;QAC5C,kCAAkC;QAClC,EAAE;KACH,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACf,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,gBAAgB,CAAC,OAAe,EAAE,MAAc,EAAE,QAAgB;IACtF,IAAI,GAAG,GAAG,EAAE,CAAC;IACb,IAAI,CAAC;QACH,GAAG,GAAG,MAAM,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;IACxC,CAAC;IAAC,OAAO,CAAM,EAAE,CAAC;QAChB,IAAI,CAAC,CAAC,IAAI,KAAK,QAAQ;YAAE,MAAM,CAAC,CAAC;IACnC,CAAC;IAED,MAAM,IAAI,GAAG,EAAE,CAAC;IAChB,IAAI,IAAI,GAAG,KAAK,CAAC;IACjB,KAAK,MAAM,IAAI,IAAI,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,EAAE,CAAC;QACtC,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,sBAAsB,CAAC,CAAC;QAClD,IAAI,MAAM,EAAE,CAAC;YACX,MAAM,OAAO,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;YACjC,IAAI,GAAG,OAAO,KAAK,oBAAoB,IAAI,OAAO,CAAC,UAAU,CAAC,qBAAqB,CAAC,CAAC;QACvF,CAAC;QACD,IAAI,CAAC,IAAI;YAAE,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC7B,CAAC;IAED,MAAM,MAAM,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,CAAC;IACzC,MAAM,IAAI,GAAG,MAAM,CAAC,CAAC,CAAC,GAAG,MAAM,OAAO,mBAAmB,CAAC,MAAM,EAAE,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAC,mBAAmB,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;IACtH,MAAM,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IACnD,MAAM,gBAAgB,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;AACxC,CAAC;AAED,SAAS,eAAe,CAAC,KAAc;IACrC,MAAM,OAAO,GAAG,MAAM,CAAC,KAAK,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;IAC3C,IAAI,CAAC,OAAO;QAAE,OAAO,EAAE,CAAC;IACxB,IAAI,CAAC;QACH,OAAO,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;IAC7B,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,OAAO,CAAC,OAAO,CAAC,cAAc,EAAE,EAAE,CAAC,CAAC;IAC7C,CAAC;AACH,CAAC;AAED,KAAK,UAAU,kBAAkB,CAAC,OAAe;IAC/C,IAAI,CAAC;QACH,MAAM,GAAG,GAAG,MAAM,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;QAC5C,MAAM,MAAM,GAAG,EAAE,MAAM,EAAE,EAAE,EAAE,QAAQ,EAAE,EAAE,EAAE,CAAC;QAC5C,IAAI,KAAK,GAAG,KAAK,CAAC;QAClB,KAAK,MAAM,IAAI,IAAI,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,EAAE,CAAC;YACtC,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,sBAAsB,CAAC,CAAC;YAClD,IAAI,MAAM,EAAE,CAAC;gBACX,KAAK,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,KAAK,wBAAwB,CAAC;gBACtD,SAAS;YACX,CAAC;YACD,IAAI,CAAC,KAAK;gBAAE,SAAS;YACrB,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,kCAAkC,CAAC,CAAC;YAC5D,IAAI,CAAC,IAAI;gBAAE,SAAS;YACpB,MAAM,GAAG,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;YACpB,MAAM,KAAK,GAAG,eAAe,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;YACvC,IAAI,GAAG,KAAK,gBAAgB;gBAAE,MAAM,CAAC,MAAM,GAAG,KAAK,CAAC;YACpD,IAAI,GAAG,KAAK,kBAAkB;gBAAE,MAAM,CAAC,QAAQ,GAAG,KAAK,CAAC;QAC1D,CAAC;QACD,IAAI,MAAM,CAAC,MAAM,IAAI,MAAM,CAAC,QAAQ;YAAE,OAAO,MAAM,CAAC;IACtD,CAAC;IAAC,MAAM,CAAC;QACP,KAAK;IACP,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAED,SAAS,kBAAkB,CAAC,IAAY;IACtC,OAAO,IAAI,CAAC,IAAI,EAAE,QAAQ,EAAE,aAAa,CAAC,CAAC;AAC7C,CAAC;AAED,SAAS,mBAAmB,CAAC,IAAY;IACvC,OAAO,IAAI,CAAC,IAAI,EAAE,WAAW,CAAC,CAAC;AACjC,CAAC;AAED,SAAS,mBAAmB,CAAC,IAAY;IACvC,OAAO,IAAI,CAAC,IAAI,EAAE,SAAS,EAAE,UAAU,CAAC,CAAC;AAC3C,CAAC;AAED,SAAS,mBAAmB,CAAC,IAAY;IACvC,OAAO,IAAI,CAAC,IAAI,EAAE,SAAS,EAAE,UAAU,CAAC,CAAC;AAC3C,CAAC;AAED,SAAS,wBAAwB,CAAC,IAAY;IAC5C,OAAO,IAAI,CAAC,IAAI,EAAE,SAAS,EAAE,iBAAiB,CAAC,CAAC;AAClD,CAAC;AAED,MAAM,UAAU,aAAa,CAAC,MAAM,EAAE,IAAI;IACxC,IAAI,MAAM,KAAK,QAAQ;QAAE,OAAO,mBAAmB,CAAC,IAAI,CAAC,CAAC;IAC1D,IAAI,MAAM,KAAK,QAAQ;QAAE,OAAO,mBAAmB,CAAC,IAAI,CAAC,CAAC;IAC1D,IAAI,MAAM,KAAK,OAAO;QAAE,OAAO,kBAAkB,CAAC,IAAI,CAAC,CAAC;IACxD,IAAI,MAAM,KAAK,QAAQ;QAAE,OAAO,mBAAmB,CAAC,IAAI,CAAC,CAAC;IAC1D,IAAI,MAAM,KAAK,aAAa;QAAE,OAAO,wBAAwB,CAAC,IAAI,CAAC,CAAC;IACpE,MAAM,IAAI,KAAK,CAAC,uBAAuB,MAAM,EAAE,CAAC,CAAC;AACnD,CAAC;AAED,KAAK,UAAU,gBAAgB,CAAC,OAAe,EAAE,aAAuC;IACtF,IAAI,CAAC;QACH,MAAM,GAAG,GAAG,MAAM,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;QAC5C,MAAM,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QAC1B,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,aAAa,CAAC,EAAE,CAAC,UAAU,CAAC,EAAE,GAAG,CAAC;QAChD,IAAI,CAAC,IAAI,OAAO,CAAC,KAAK,QAAQ,IAAI,CAAC,CAAC,CAAC,cAAc,IAAI,CAAC,CAAC,gBAAgB,CAAC,EAAE,CAAC;YAC3E,OAAO;gBACL,MAAM,EAAE,OAAO,CAAC,CAAC,cAAc,KAAK,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,EAAE;gBACpE,QAAQ,EAAE,OAAO,CAAC,CAAC,gBAAgB,KAAK,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC,CAAC,EAAE;aAC3E,CAAC;QACJ,CAAC;IACH,CAAC;IAAC,MAAM,CAAC;QACP,KAAK;IACP,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,qBAAqB,CAAC,IAAY,EAAE,UAAmB,EAAE,UAAmB,EAAE,SAAkB,EAAE,UAAmB,EAAE,eAAwB;IACnK,MAAM,KAAK,GAA+D,EAAE,CAAC;IAC7E,IAAI,UAAU;QAAE,KAAK,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,mBAAmB,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,YAAY,EAAE,CAAC,CAAC;IACvF,IAAI,UAAU;QAAE,KAAK,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,mBAAmB,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,YAAY,EAAE,CAAC,CAAC;IACvF,IAAI,CAAC,UAAU,IAAI,UAAU;QAAE,KAAK,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,mBAAmB,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,YAAY,EAAE,CAAC,CAAC;IACtG,IAAI,UAAU;QAAE,KAAK,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,mBAAmB,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,SAAS,EAAE,CAAC,CAAC;IACpF,IAAI,eAAe;QAAE,KAAK,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,wBAAwB,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,YAAY,EAAE,CAAC,CAAC;IACjG,MAAM,IAAI,GAAG,IAAI,GAAG,EAAE,CAAC;IACvB,KAAK,MAAM,KAAK,IAAI,KAAK,EAAE,CAAC;QAC1B,MAAM,GAAG,GAAG,GAAG,KAAK,CAAC,OAAO,IAAI,KAAK,CAAC,IAAI,EAAE,CAAC;QAC7C,IAAI,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC;YAAE,SAAS;QAC5B,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QACd,MAAM,GAAG,GAAG,MAAM,gBAAgB,CAAC,KAAK,CAAC,IAAI,EAAE,KAAK,CAAC,OAAO,CAAC,CAAC;QAC9D,IAAI,GAAG;YAAE,OAAO,GAAG,CAAC;IACtB,CAAC;IACD,IAAI,SAAS,EAAE,CAAC;QACd,MAAM,KAAK,GAAG,MAAM,kBAAkB,CAAC,kBAAkB,CAAC,IAAI,CAAC,CAAC,CAAC;QACjE,IAAI,KAAK;YAAE,OAAO,KAAK,CAAC;IAC1B,CAAC;IACD,OAAO,EAAE,MAAM,EAAE,EAAE,EAAE,QAAQ,EAAE,EAAE,EAAE,CAAC;AACtC,CAAC"}
@@ -0,0 +1,28 @@
1
+ import type { ClientKey, ExistingEnv, ParsedArgs } from './config-local-types.js';
2
+ export type { ChoiceClientKey, ClientKey, ClientSelection, ExistingEnv, KeypressInfo, ParsedArgs, TargetChoice } from './config-local-types.js';
3
+ export declare const style: {
4
+ bold: (value: string) => string;
5
+ dim: (value: string) => string;
6
+ cyan: (value: string) => string;
7
+ green: (value: string) => string;
8
+ magenta: (value: string) => string;
9
+ blue: (value: string) => string;
10
+ yellow: (value: string) => string;
11
+ underline: (value: string) => string;
12
+ inverse: (value: string) => string;
13
+ };
14
+ export declare const clients: Record<ClientKey, {
15
+ label: string;
16
+ path: string;
17
+ color: (value: string) => string;
18
+ }>;
19
+ export declare function statusIcon(kind: 'success' | 'warn' | string): string;
20
+ export declare function isCancelError(error: unknown): boolean;
21
+ export declare function exitCancelled(): void;
22
+ export declare function printHelp(): void;
23
+ export declare function parseArgs(argv: string[]): ParsedArgs;
24
+ export declare function normalizeAppUrl(appUrl: unknown): string;
25
+ export declare function deriveApiUrlFromAppUrl(appUrl: unknown): string;
26
+ export declare function deriveAppUrlFromApiUrl(apiUrl: unknown): string;
27
+ export declare function deriveMeUrl(appUrl: unknown): string;
28
+ export declare function resolveDefaultAppUrl(opts: ParsedArgs, existing: ExistingEnv): string;
@@ -0,0 +1,200 @@
1
+ import { stdout as output } from 'node:process';
2
+ const forceColor = process.env.FORCE_COLOR != null && process.env.FORCE_COLOR !== '0';
3
+ const canStyle = forceColor || (output.isTTY && process.env.NO_COLOR == null);
4
+ export const style = {
5
+ bold: (value) => canStyle ? `\x1B[1m${value}\x1B[22m` : value,
6
+ dim: (value) => canStyle ? `\x1B[2m${value}\x1B[22m` : value,
7
+ cyan: (value) => canStyle ? `\x1B[36m${value}\x1B[39m` : value,
8
+ green: (value) => canStyle ? `\x1B[32m${value}\x1B[39m` : value,
9
+ magenta: (value) => canStyle ? `\x1B[35m${value}\x1B[39m` : value,
10
+ blue: (value) => canStyle ? `\x1B[34m${value}\x1B[39m` : value,
11
+ yellow: (value) => canStyle ? `\x1B[33m${value}\x1B[39m` : value,
12
+ underline: (value) => canStyle ? `\x1B[4m${value}\x1B[24m` : value,
13
+ inverse: (value) => canStyle ? `\x1B[7m${value}\x1B[27m` : value,
14
+ };
15
+ export const clients = {
16
+ codex: {
17
+ label: 'Codex',
18
+ path: './.codex/config.toml',
19
+ color: style.green,
20
+ },
21
+ claude: {
22
+ label: 'Claude Code',
23
+ path: './.mcp.json',
24
+ color: style.magenta,
25
+ },
26
+ cursor: {
27
+ label: 'Cursor',
28
+ path: './.cursor/mcp.json',
29
+ color: style.cyan,
30
+ },
31
+ vscode: {
32
+ label: 'VS Code / Copilot',
33
+ path: './.vscode/mcp.json',
34
+ color: style.blue,
35
+ },
36
+ antigravity: {
37
+ label: 'Antigravity',
38
+ path: './.agents/mcp_config.json',
39
+ color: style.yellow,
40
+ },
41
+ };
42
+ export function statusIcon(kind) {
43
+ if (kind === 'success')
44
+ return canStyle ? style.green('✓') : 'Done';
45
+ if (kind === 'warn')
46
+ return canStyle ? style.yellow('!') : 'Warning';
47
+ return canStyle ? style.cyan('•') : '-';
48
+ }
49
+ export function isCancelError(error) {
50
+ const item = error;
51
+ return item?.code === 'ABORT_ERR' || (item?.message || '') === 'Cancelled';
52
+ }
53
+ export function exitCancelled() {
54
+ console.log('\nCancelled.');
55
+ process.exit(130);
56
+ }
57
+ export function printHelp() {
58
+ console.log(`${style.bold('Enfyra MCP config')}
59
+ ${style.dim('Write project-local MCP client config for Enfyra.')}
60
+
61
+ ${style.bold('Usage')}
62
+ npx @enfyra/mcp-server@latest config [options]
63
+
64
+ ${style.bold('Supported clients')}
65
+ Codex ./.codex/config.toml
66
+ Claude Code ./.mcp.json
67
+ Cursor ./.cursor/mcp.json
68
+ VS Code ./.vscode/mcp.json
69
+ Antigravity ./.agents/mcp_config.json
70
+
71
+ ${style.bold('Options')}
72
+ --app-url <url> Enfyra app/admin URL, for example https://demo.enfyra.io
73
+ --api-token, -t <secret> ENFYRA_API_TOKEN
74
+ --reconfig Always choose target again in interactive mode and replace the old enfyra config for that target
75
+ --yes Non-interactive: no prompts (CI / scripts); use CLI, env, existing file, then defaults
76
+
77
+ ${style.bold('Client selection')}
78
+ Non-interactive default is all supported clients. In a TTY with no target flags, choose with ↑/↓.
79
+
80
+ --claude-code, --claude, --claude-only Only ./.mcp.json (Claude Code project scope)
81
+ --cursor, --cursor-only Only ./.cursor/mcp.json (Cursor)
82
+ --codex, --codex-only Only ./.codex/config.toml (Codex project scope)
83
+ --vscode, --copilot, --vscode-only Only ./.vscode/mcp.json (VS Code / Copilot)
84
+ --antigravity, --antigravity-only Only ./.agents/mcp_config.json (Antigravity)
85
+ Passing multiple target flags writes each selected target.
86
+
87
+ -h, --help Show this help
88
+
89
+ ${style.bold('Interactive mode')}
90
+ Choose Codex, Claude Code, Cursor, VS Code, Antigravity, or all clients; then enter ENFYRA_APP_URL and ENFYRA_API_TOKEN.
91
+ Existing Enfyra config and environment variables are used as defaults. Re-run anytime to update.
92
+
93
+ ${style.bold('Examples')}
94
+ npx @enfyra/mcp-server@latest config
95
+ npx @enfyra/mcp-server@latest config --yes
96
+ npx @enfyra/mcp-server@latest config --codex --cursor
97
+ npx @enfyra/mcp-server@latest config --vscode
98
+ npx @enfyra/mcp-server@latest config --antigravity
99
+ npx @enfyra/mcp-server@latest config --claude-code
100
+ npx @enfyra/mcp-server@latest config --reconfig
101
+ npx @enfyra/mcp-server@latest config --app-url http://localhost:3000 -t 'efy_pat_...'
102
+ ENFYRA_APP_URL=https://demo.enfyra.io ENFYRA_API_TOKEN=efy_pat_... npx @enfyra/mcp-server@latest config --yes
103
+ `);
104
+ }
105
+ export function parseArgs(argv) {
106
+ const out = {
107
+ appUrl: undefined,
108
+ apiToken: undefined,
109
+ claude: true,
110
+ cursor: true,
111
+ codex: true,
112
+ help: false,
113
+ yes: false,
114
+ reconfig: false,
115
+ vscode: true,
116
+ antigravity: true,
117
+ targetExplicit: false,
118
+ };
119
+ let pickClaude = false;
120
+ let pickCursor = false;
121
+ let pickCodex = false;
122
+ let pickVscode = false;
123
+ let pickAntigravity = false;
124
+ for (let i = 0; i < argv.length; i += 1) {
125
+ const a = argv[i];
126
+ const next = () => {
127
+ const v = argv[i + 1];
128
+ if (v == null)
129
+ throw new Error(`Missing value after ${a}`);
130
+ i += 1;
131
+ return v;
132
+ };
133
+ if (a === '--help' || a === '-h')
134
+ out.help = true;
135
+ else if (a === 'help')
136
+ out.help = true;
137
+ else if (a === '--yes')
138
+ out.yes = true;
139
+ else if (a === '--reconfig')
140
+ out.reconfig = true;
141
+ else if (a === '--app-url')
142
+ out.appUrl = next();
143
+ else if (a === '--api-url' || a === '-a') {
144
+ throw new Error(`${a} is no longer supported for setup; use --app-url instead`);
145
+ }
146
+ else if (a === '--api-token' || a === '-t')
147
+ out.apiToken = next();
148
+ else if (a === '--email' || a === '-e' || a === '--password' || a === '-p') {
149
+ throw new Error(`${a} is no longer supported; use --api-token instead`);
150
+ }
151
+ else if (a === '--claude-only' || a === '--claude-code' || a === '--claude')
152
+ pickClaude = true;
153
+ else if (a === '--cursor-only' || a === '--cursor')
154
+ pickCursor = true;
155
+ else if (a === '--codex-only' || a === '--codex')
156
+ pickCodex = true;
157
+ else if (a === '--vscode-only' || a === '--vscode' || a === '--copilot')
158
+ pickVscode = true;
159
+ else if (a === '--antigravity-only' || a === '--antigravity')
160
+ pickAntigravity = true;
161
+ else
162
+ throw new Error(`Unknown argument: ${a}`);
163
+ }
164
+ out.targetExplicit = pickClaude || pickCursor || pickCodex || pickVscode || pickAntigravity;
165
+ if (out.targetExplicit) {
166
+ out.claude = pickClaude;
167
+ out.cursor = pickCursor;
168
+ out.codex = pickCodex;
169
+ out.vscode = pickVscode;
170
+ out.antigravity = pickAntigravity;
171
+ }
172
+ return out;
173
+ }
174
+ export function normalizeAppUrl(appUrl) {
175
+ const raw = String(appUrl || '').trim().replace(/\/+$/, '');
176
+ if (!raw)
177
+ return '';
178
+ return raw.replace(/\/(?:api|enfyra)$/i, '') || raw;
179
+ }
180
+ export function deriveApiUrlFromAppUrl(appUrl) {
181
+ const normalized = normalizeAppUrl(appUrl);
182
+ return normalized ? `${normalized}/api` : 'http://localhost:3000/api';
183
+ }
184
+ export function deriveAppUrlFromApiUrl(apiUrl) {
185
+ return normalizeAppUrl(apiUrl);
186
+ }
187
+ export function deriveMeUrl(appUrl) {
188
+ const normalized = normalizeAppUrl(appUrl);
189
+ return normalized ? `${normalized}/me` : '/me';
190
+ }
191
+ export function resolveDefaultAppUrl(opts, existing) {
192
+ const appCandidate = opts.appUrl ?? process.env.ENFYRA_APP_URL;
193
+ if (appCandidate)
194
+ return normalizeAppUrl(appCandidate);
195
+ const apiCandidate = process.env.ENFYRA_API_URL ?? existing.apiUrl;
196
+ if (apiCandidate)
197
+ return deriveAppUrlFromApiUrl(apiCandidate);
198
+ return 'http://localhost:3000';
199
+ }
200
+ //# sourceMappingURL=config-local-contracts.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"config-local-contracts.js","sourceRoot":"","sources":["../../src/lib/config-local-contracts.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,10 @@
1
+ import { type ClientSelection, type ExistingEnv, type ParsedArgs } from './config-local-contracts.js';
2
+ export declare function promptTargetChoice(): Promise<ClientSelection>;
3
+ export declare function promptConfig(opts: ParsedArgs, existing: ExistingEnv): Promise<{
4
+ apiUrl: string;
5
+ apiToken: string;
6
+ }>;
7
+ export declare function resolveNonInteractive(opts: ParsedArgs, existing: ExistingEnv): {
8
+ apiUrl: string;
9
+ apiToken: string;
10
+ };