@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.
- package/README.md +1 -1
- package/dist/lib/config-local-adapters.d.ts +18 -0
- package/dist/lib/config-local-adapters.js +271 -0
- package/dist/lib/config-local-adapters.js.map +1 -0
- package/dist/lib/config-local-contracts.d.ts +28 -0
- package/dist/lib/config-local-contracts.js +200 -0
- package/dist/lib/config-local-contracts.js.map +1 -0
- package/dist/lib/config-local-prompts.d.ts +10 -0
- package/dist/lib/config-local-prompts.js +185 -0
- package/dist/lib/config-local-prompts.js.map +1 -0
- package/dist/lib/config-local-types.d.ts +23 -0
- package/dist/lib/config-local-types.js +2 -0
- package/dist/lib/config-local-types.js.map +1 -0
- package/dist/lib/config-local.js +3 -649
- package/dist/lib/config-local.js.map +1 -1
- package/dist/lib/discovery-tools.d.ts +4 -0
- package/dist/lib/discovery-tools.js +546 -0
- package/dist/lib/discovery-tools.js.map +1 -0
- package/dist/lib/dynamic-repository-builder.d.ts +1 -1
- package/dist/lib/dynamic-script-context-contract.d.ts +100 -0
- package/dist/lib/dynamic-script-context-contract.js +163 -0
- package/dist/lib/dynamic-script-context-contract.js.map +1 -0
- package/dist/lib/enfyra-mcp-server.d.ts +3 -0
- package/dist/lib/enfyra-mcp-server.js +79 -0
- package/dist/lib/enfyra-mcp-server.js.map +1 -0
- package/dist/lib/enfyra-tool-logic.d.ts +7 -0
- package/dist/lib/enfyra-tool-logic.js +8 -0
- package/dist/lib/enfyra-tool-logic.js.map +1 -0
- package/dist/lib/enfyra-tool-types.d.ts +27 -0
- package/dist/lib/enfyra-tool-types.js +2 -0
- package/dist/lib/enfyra-tool-types.js.map +1 -0
- package/dist/lib/extension-api-builders.d.ts +17 -0
- package/dist/lib/extension-api-builders.js +235 -0
- package/dist/lib/extension-api-builders.js.map +1 -0
- package/dist/lib/extension-component-builders.d.ts +87 -0
- package/dist/lib/extension-component-builders.js +623 -0
- package/dist/lib/extension-component-builders.js.map +1 -0
- package/dist/lib/extension-contract-review.d.ts +26 -0
- package/dist/lib/extension-contract-review.js +187 -0
- package/dist/lib/extension-contract-review.js.map +1 -0
- package/dist/lib/extension-theme-contract.d.ts +63 -0
- package/dist/lib/extension-theme-contract.js +417 -0
- package/dist/lib/extension-theme-contract.js.map +1 -0
- package/dist/lib/identity-tools.d.ts +4 -0
- package/dist/lib/identity-tools.js +46 -0
- package/dist/lib/identity-tools.js.map +1 -0
- package/dist/lib/log-tools.d.ts +4 -0
- package/dist/lib/log-tools.js +65 -0
- package/dist/lib/log-tools.js.map +1 -0
- package/dist/lib/mcp-example-connect.d.ts +9 -0
- package/dist/lib/mcp-example-connect.js +442 -0
- package/dist/lib/mcp-example-connect.js.map +1 -0
- package/dist/lib/mcp-example-extensions.d.ts +9 -0
- package/dist/lib/mcp-example-extensions.js +729 -0
- package/dist/lib/mcp-example-extensions.js.map +1 -0
- package/dist/lib/mcp-example-files.d.ts +9 -0
- package/dist/lib/mcp-example-files.js +51 -0
- package/dist/lib/mcp-example-files.js.map +1 -0
- package/dist/lib/mcp-example-flows.d.ts +9 -0
- package/dist/lib/mcp-example-flows.js +76 -0
- package/dist/lib/mcp-example-flows.js.map +1 -0
- package/dist/lib/mcp-example-graphql.d.ts +9 -0
- package/dist/lib/mcp-example-graphql.js +57 -0
- package/dist/lib/mcp-example-graphql.js.map +1 -0
- package/dist/lib/mcp-example-handlers-hooks.d.ts +9 -0
- package/dist/lib/mcp-example-handlers-hooks.js +328 -0
- package/dist/lib/mcp-example-handlers-hooks.js.map +1 -0
- package/dist/lib/mcp-example-oauth-setup.d.ts +9 -0
- package/dist/lib/mcp-example-oauth-setup.js +41 -0
- package/dist/lib/mcp-example-oauth-setup.js.map +1 -0
- package/dist/lib/mcp-example-permissions-rls.d.ts +9 -0
- package/dist/lib/mcp-example-permissions-rls.js +210 -0
- package/dist/lib/mcp-example-permissions-rls.js.map +1 -0
- package/dist/lib/mcp-example-queries-deep.d.ts +9 -0
- package/dist/lib/mcp-example-queries-deep.js +220 -0
- package/dist/lib/mcp-example-queries-deep.js.map +1 -0
- package/dist/lib/mcp-example-schema-relations.d.ts +9 -0
- package/dist/lib/mcp-example-schema-relations.js +148 -0
- package/dist/lib/mcp-example-schema-relations.js.map +1 -0
- package/dist/lib/mcp-example-websocket.d.ts +9 -0
- package/dist/lib/mcp-example-websocket.js +103 -0
- package/dist/lib/mcp-example-websocket.js.map +1 -0
- package/dist/lib/mcp-examples.d.ts +5 -5
- package/dist/lib/mcp-examples.js +22 -2394
- package/dist/lib/mcp-examples.js.map +1 -1
- package/dist/lib/method-tools.d.ts +4 -0
- package/dist/lib/method-tools.js +217 -0
- package/dist/lib/method-tools.js.map +1 -0
- package/dist/lib/package-tools.d.ts +4 -0
- package/dist/lib/package-tools.js +98 -0
- package/dist/lib/package-tools.js.map +1 -0
- package/dist/lib/platform-data-operations.d.ts +24 -0
- package/dist/lib/platform-data-operations.js +71 -0
- package/dist/lib/platform-data-operations.js.map +1 -0
- package/dist/lib/platform-endpoint-workflow.d.ts +42 -0
- package/dist/lib/platform-endpoint-workflow.js +382 -0
- package/dist/lib/platform-endpoint-workflow.js.map +1 -0
- package/dist/lib/platform-extension-source.d.ts +487 -0
- package/dist/lib/platform-extension-source.js +524 -0
- package/dist/lib/platform-extension-source.js.map +1 -0
- package/dist/lib/platform-extension-tools.d.ts +1 -0
- package/dist/lib/platform-extension-tools.js +416 -0
- package/dist/lib/platform-extension-tools.js.map +1 -0
- package/dist/lib/platform-extension-ui.d.ts +4 -0
- package/dist/lib/platform-extension-ui.js +5 -0
- package/dist/lib/platform-extension-ui.js.map +1 -0
- package/dist/lib/platform-extension-workflow.d.ts +54 -0
- package/dist/lib/platform-extension-workflow.js +194 -0
- package/dist/lib/platform-extension-workflow.js.map +1 -0
- package/dist/lib/platform-flow-operations.d.ts +554 -0
- package/dist/lib/platform-flow-operations.js +317 -0
- package/dist/lib/platform-flow-operations.js.map +1 -0
- package/dist/lib/platform-flow-tools.d.ts +1 -0
- package/dist/lib/platform-flow-tools.js +248 -0
- package/dist/lib/platform-flow-tools.js.map +1 -0
- package/dist/lib/platform-operation-logic.d.ts +10 -0
- package/dist/lib/platform-operation-logic.js +11 -0
- package/dist/lib/platform-operation-logic.js.map +1 -0
- package/dist/lib/platform-operation-tools.d.ts +1 -324
- package/dist/lib/platform-operation-tools.js +13 -4620
- package/dist/lib/platform-operation-tools.js.map +1 -1
- package/dist/lib/platform-operation-types.d.ts +46 -0
- package/dist/lib/platform-operation-types.js +2 -0
- package/dist/lib/platform-operation-types.js.map +1 -0
- package/dist/lib/platform-policy-tools.d.ts +1 -0
- package/dist/lib/platform-policy-tools.js +248 -0
- package/dist/lib/platform-policy-tools.js.map +1 -0
- package/dist/lib/platform-resource-operations.d.ts +124 -0
- package/dist/lib/platform-resource-operations.js +109 -0
- package/dist/lib/platform-resource-operations.js.map +1 -0
- package/dist/lib/platform-resource-tools.d.ts +1 -0
- package/dist/lib/platform-resource-tools.js +70 -0
- package/dist/lib/platform-resource-tools.js.map +1 -0
- package/dist/lib/platform-route-operations.d.ts +222 -0
- package/dist/lib/platform-route-operations.js +290 -0
- package/dist/lib/platform-route-operations.js.map +1 -0
- package/dist/lib/platform-route-tools.d.ts +1 -0
- package/dist/lib/platform-route-tools.js +307 -0
- package/dist/lib/platform-route-tools.js.map +1 -0
- package/dist/lib/platform-shared-operations.d.ts +7 -0
- package/dist/lib/platform-shared-operations.js +4 -0
- package/dist/lib/platform-shared-operations.js.map +1 -0
- package/dist/lib/platform-websocket-tools.d.ts +1 -0
- package/dist/lib/platform-websocket-tools.js +70 -0
- package/dist/lib/platform-websocket-tools.js.map +1 -0
- package/dist/lib/record-tools.d.ts +4 -0
- package/dist/lib/record-tools.js +418 -0
- package/dist/lib/record-tools.js.map +1 -0
- package/dist/lib/required-knowledge.d.ts +1 -1
- package/dist/lib/required-knowledge.js +3 -2
- package/dist/lib/required-knowledge.js.map +1 -1
- package/dist/lib/route-access-tools.d.ts +4 -0
- package/dist/lib/route-access-tools.js +172 -0
- package/dist/lib/route-access-tools.js.map +1 -0
- package/dist/lib/route-definition-tools.d.ts +4 -0
- package/dist/lib/route-definition-tools.js +285 -0
- package/dist/lib/route-definition-tools.js.map +1 -0
- package/dist/lib/route-inspection-tools.d.ts +4 -0
- package/dist/lib/route-inspection-tools.js +319 -0
- package/dist/lib/route-inspection-tools.js.map +1 -0
- package/dist/lib/route-tools.d.ts +1 -0
- package/dist/lib/route-tools.js +9 -0
- package/dist/lib/route-tools.js.map +1 -0
- package/dist/lib/runtime-zone-registry.d.ts +27 -0
- package/dist/lib/runtime-zone-registry.js +81 -0
- package/dist/lib/runtime-zone-registry.js.map +1 -0
- package/dist/lib/runtime-zone-search.d.ts +303 -0
- package/dist/lib/runtime-zone-search.js +596 -0
- package/dist/lib/runtime-zone-search.js.map +1 -0
- package/dist/lib/runtime-zone-tools.d.ts +2 -307
- package/dist/lib/runtime-zone-tools.js +2 -674
- package/dist/lib/runtime-zone-tools.js.map +1 -1
- package/dist/lib/schema-column-tools.d.ts +3 -0
- package/dist/lib/schema-column-tools.js +80 -0
- package/dist/lib/schema-column-tools.js.map +1 -0
- package/dist/lib/schema-mutation-coordinator.d.ts +28 -0
- package/dist/lib/schema-mutation-coordinator.js +154 -0
- package/dist/lib/schema-mutation-coordinator.js.map +1 -0
- package/dist/lib/schema-relation-contracts.d.ts +39 -0
- package/dist/lib/schema-relation-contracts.js +160 -0
- package/dist/lib/schema-relation-contracts.js.map +1 -0
- package/dist/lib/schema-relation-tools.d.ts +3 -0
- package/dist/lib/schema-relation-tools.js +61 -0
- package/dist/lib/schema-relation-tools.js.map +1 -0
- package/dist/lib/schema-table-contracts.d.ts +28 -0
- package/dist/lib/schema-table-contracts.js +263 -0
- package/dist/lib/schema-table-contracts.js.map +1 -0
- package/dist/lib/schema-table-tools.d.ts +3 -0
- package/dist/lib/schema-table-tools.js +297 -0
- package/dist/lib/schema-table-tools.js.map +1 -0
- package/dist/lib/schema-tool-operations.d.ts +150 -0
- package/dist/lib/schema-tool-operations.js +468 -0
- package/dist/lib/schema-tool-operations.js.map +1 -0
- package/dist/lib/schema-tool-types.d.ts +38 -0
- package/dist/lib/schema-tool-types.js +2 -0
- package/dist/lib/schema-tool-types.js.map +1 -0
- package/dist/lib/schema-verification.d.ts +14 -0
- package/dist/lib/schema-verification.js +105 -0
- package/dist/lib/schema-verification.js.map +1 -0
- package/dist/lib/script-tools.d.ts +4 -0
- package/dist/lib/script-tools.js +127 -0
- package/dist/lib/script-tools.js.map +1 -0
- package/dist/lib/system-tools.d.ts +4 -0
- package/dist/lib/system-tools.js +41 -0
- package/dist/lib/system-tools.js.map +1 -0
- package/dist/lib/table-tool-logic.d.ts +5 -0
- package/dist/lib/table-tool-logic.js +6 -0
- package/dist/lib/table-tool-logic.js.map +1 -0
- package/dist/lib/table-tools.d.ts +1 -84
- package/dist/lib/table-tools.js +7 -1522
- package/dist/lib/table-tools.js.map +1 -1
- package/dist/lib/tool-catalog.d.ts +2 -1
- package/dist/lib/tool-catalog.js +23 -2
- package/dist/lib/tool-catalog.js.map +1 -1
- package/dist/lib/tool-metadata-operations.d.ts +27 -0
- package/dist/lib/tool-metadata-operations.js +93 -0
- package/dist/lib/tool-metadata-operations.js.map +1 -0
- package/dist/lib/tool-permission-profile.d.ts +37 -0
- package/dist/lib/tool-permission-profile.js +106 -0
- package/dist/lib/tool-permission-profile.js.map +1 -0
- package/dist/lib/tool-record-operations.d.ts +102 -0
- package/dist/lib/tool-record-operations.js +260 -0
- package/dist/lib/tool-record-operations.js.map +1 -0
- package/dist/lib/tool-route-inspection.d.ts +47 -0
- package/dist/lib/tool-route-inspection.js +168 -0
- package/dist/lib/tool-route-inspection.js.map +1 -0
- package/dist/lib/tool-routing.d.ts +3 -417
- package/dist/lib/tool-routing.js +3 -1038
- package/dist/lib/tool-routing.js.map +1 -1
- package/dist/lib/tool-runtime-config.d.ts +33 -0
- package/dist/lib/tool-runtime-config.js +237 -0
- package/dist/lib/tool-runtime-config.js.map +1 -0
- package/dist/lib/tool-script-operations.d.ts +34 -0
- package/dist/lib/tool-script-operations.js +153 -0
- package/dist/lib/tool-script-operations.js.map +1 -0
- package/dist/lib/workflow-definitions.d.ts +366 -0
- package/dist/lib/workflow-definitions.js +703 -0
- package/dist/lib/workflow-definitions.js.map +1 -0
- package/dist/lib/workflow-planner.d.ts +45 -0
- package/dist/lib/workflow-planner.js +338 -0
- package/dist/lib/workflow-planner.js.map +1 -0
- package/dist/lib/workflow-types.d.ts +39 -0
- package/dist/lib/workflow-types.js +2 -0
- package/dist/lib/workflow-types.js.map +1 -0
- package/dist/mcp-server-entry.d.ts +0 -3
- package/dist/mcp-server-entry.js +2 -3249
- package/dist/mcp-server-entry.js.map +1 -1
- 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`;
|
|
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":"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"}
|
|
@@ -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
|
+
};
|