easyeda-mcp-pro 0.35.1 → 0.35.3

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 CHANGED
@@ -110,7 +110,7 @@ For advanced configurations, manual instructions, and specific clients, see [Ins
110
110
 
111
111
  ## Overview
112
112
 
113
- easyeda-mcp-pro is a [Model Context Protocol (MCP)](https://modelcontextprotocol.io) server that bridges AI assistants with hardware design workflows in EasyEDA Pro. It exposes up to 60 profile-gated MCP tools for schematic inspection and editing, controlled EasyEDA Pro API calls, BOM management, design rule checks, PCB board analysis, fabrication exports, diagnostics, and supplier integration.
113
+ easyeda-mcp-pro is a [Model Context Protocol (MCP)](https://modelcontextprotocol.io) server that bridges AI assistants with hardware design workflows in EasyEDA Pro. It exposes up to 115 profile-gated MCP tools for schematic inspection and editing, controlled EasyEDA Pro API calls, BOM management, design rule checks, PCB board analysis, fabrication exports, diagnostics, and supplier integration.
114
114
 
115
115
  The server connects to EasyEDA Pro via a WebSocket bridge extension, enabling real-time access to open project data. It integrates with JLCPCB, LCSC, Mouser, and DigiKey for BOM sourcing and pricing.
116
116
 
@@ -129,8 +129,19 @@ The server connects to EasyEDA Pro via a WebSocket bridge extension, enabling re
129
129
 
130
130
  ## Prerequisites
131
131
 
132
- - **Node.js** >=24 <27 (required for the latest JavaScript features)
133
- - **pnpm** >=11 (for local development; the npm package is self-contained)
132
+ - **Node.js**: Node.js 24.x is required; repository automation is pinned to **24.18.0**.
133
+ - **pnpm**: local development and automation require exactly **11.5.1**.
134
+
135
+ Prepare the supported runtime before installing dependencies:
136
+
137
+ ```bash
138
+ nvm install 24.18.0
139
+ nvm use 24.18.0
140
+ corepack enable
141
+ corepack prepare pnpm@11.5.1 --activate
142
+ node scripts/check-runtime.mjs --require-pnpm
143
+ ```
144
+
134
145
  - **EasyEDA Pro** with the bundled bridge extension installed and running
135
146
  - For supplier integration: API credentials from JLCPCB, LCSC, Mouser, or DigiKey
136
147
 
@@ -487,18 +498,23 @@ Enable suppliers by setting their credentials. All suppliers are disabled by def
487
498
  - **Mouser**: `MOUSER_ENABLED=true` + API key
488
499
  - **DigiKey**: `DIGIKEY_ENABLED=true` + OAuth2 client ID/secret
489
500
 
490
- ### AI Assistance (experimental)
501
+ ### Reserved AI configuration
502
+
503
+ No in-process AI provider client is currently implemented. The `AI_*` variables remain accepted for
504
+ configuration compatibility but are reported as `reserved`, are always ineffective, and must not be
505
+ used to infer that the server sends design data to an AI provider. Do not supply an API key.
491
506
 
492
- Configure an AI provider for LLM-assisted design review:
507
+ | Variable | Default | Current behavior |
508
+ | --------------------------- | ------- | ----------------------------------------------------- |
509
+ | `AI_PROVIDER` | `none` | Reserved; no provider client is invoked |
510
+ | `AI_MODEL` | `''` | Reserved; no model is selected |
511
+ | `AI_API_KEY` | `''` | Reserved; no credential consumer exists |
512
+ | `AI_MAX_TOKENS` | `8000` | Reserved compatibility setting |
513
+ | `AI_TIMEOUT_MS` | `60000` | Reserved compatibility setting |
514
+ | `AI_ALLOW_DESIGN_MUTATIONS` | `false` | Reserved; cannot enable AI-originated design mutation |
493
515
 
494
- | Variable | Default | Description |
495
- | --------------------------- | ------- | ----------------------------------------------- |
496
- | `AI_PROVIDER` | `none` | `anthropic`, `openai`, `openrouter`, or `local` |
497
- | `AI_MODEL` | `''` | Model name (e.g., `claude-sonnet-4-20250514`) |
498
- | `AI_API_KEY` | `''` | AI provider API key |
499
- | `AI_MAX_TOKENS` | `8000` | Max tokens per AI response |
500
- | `AI_TIMEOUT_MS` | `60000` | AI request timeout in ms |
501
- | `AI_ALLOW_DESIGN_MUTATIONS` | `false` | Allow AI to modify schematic/board designs |
516
+ Use `easyeda_get_feature_flags` or `easyeda_get_capabilities` to inspect `configured`, `effective`,
517
+ and `maturity` values for optional settings.
502
518
 
503
519
  ### HTTP transport
504
520
 
@@ -559,12 +575,19 @@ See `.env.example` for the complete list of configuration variables.
559
575
 
560
576
  ## MCP Tools
561
577
 
562
- The server currently registers up to 77 profile-gated tools. Tools are filtered by the active `TOOL_PROFILE`:
578
+ The server registers profile-gated tools according to the active `TOOL_PROFILE`. The table below is generated from the same registry used at runtime:
579
+
580
+ <!-- capability-counts:start -->
563
581
 
564
- - `core`: 48 tools
565
- - `pro`: 63 tools
566
- - `full`: 73 tools
567
- - `dev`: 77 tools
582
+ | Profile | Registered tools |
583
+ | -------------- | ---------------: |
584
+ | `core` | 71 |
585
+ | `pro` | 98 |
586
+ | `full` | 110 |
587
+ | `dev` | 115 |
588
+ | `experimental` | 115 |
589
+
590
+ <!-- capability-counts:end -->
568
591
 
569
592
  `core` exposes the standard workflow tools, `pro` adds manufacturing exports, `full` adds controlled documented EasyEDA API calls, and `dev` adds runtime probes for debugging.
570
593
 
@@ -666,7 +689,7 @@ The schematic write APIs use EasyEDA Pro extension APIs that EasyEDA currently m
666
689
  │ (via Plugin) │ Protocol │ └───────────────┘ │
667
690
  └─────────────────┘ │ ┌───────────────┐ │
668
691
  │ │ ToolRegistry │ │
669
- │ │ (up to 60 tools) │ │
692
+ │ │ (up to 115 tools) │ │
670
693
  │ └───────────────┘ │
671
694
  │ ┌───────────────┐ │
672
695
  │ │ Storage │──┼──► SQLite
@@ -701,6 +724,8 @@ required by EasyEDA Pro.
701
724
 
702
725
  Installation: Open EasyEDA Pro → **Settings** → **Extensions** → **Extension Manager...** → **Import Extension**, then select the `.eext` file. Make sure **Allow External Interaction** is enabled for the extension.
703
726
 
727
+ For local bridge development, an experimental loopback-only CDP transport is documented in the [CDP Bridge guide](docs/guide/cdp-bridge.md). The extension remains the recommended transport for normal use. Public delivery targets and milestone lifecycle rules are maintained in the [roadmap](docs/ROADMAP.md).
728
+
704
729
  ---
705
730
 
706
731
  ## Agent plugin and skills
@@ -770,8 +795,19 @@ qualified human review before purchase, fabrication, or assembly.
770
795
 
771
796
  ### Prerequisites
772
797
 
773
- - **Node.js** >=24 <27
774
- - **pnpm** >=11
798
+ - **Node.js**: Node.js 24.x is required; repository automation is pinned to **24.18.0**.
799
+ - **pnpm**: local development and automation require exactly **11.5.1**.
800
+
801
+ Prepare the supported runtime before installing dependencies:
802
+
803
+ ```bash
804
+ nvm install 24.18.0
805
+ nvm use 24.18.0
806
+ corepack enable
807
+ corepack prepare pnpm@11.5.1 --activate
808
+ node scripts/check-runtime.mjs --require-pnpm
809
+ ```
810
+
775
811
  - **Go Task** (optional, for Taskfile commands)
776
812
 
777
813
  ### Quick Start
@@ -793,7 +829,7 @@ pnpm typecheck # TypeScript
793
829
  pnpm lint # ESLint
794
830
 
795
831
  # Test
796
- pnpm test # Vitest (812 tests across 67 files)
832
+ pnpm test # Vitest suite
797
833
  pnpm test:coverage # With coverage report
798
834
 
799
835
  # Golden E2E fixture smoke tests are included in `pnpm test`
@@ -846,7 +882,7 @@ src/
846
882
  │ ├── http.ts # HTTP/Streamable HTTP transport
847
883
  │ └── oauth-resource-metadata.ts
848
884
  ├── storage/ # Node.js sqlite storage (cache, artifacts)
849
- ├── tools/ # Up to 60 profile-gated MCP tool definitions
885
+ ├── tools/ # Up to 115 profile-gated MCP tool definitions
850
886
  │ ├── register.ts, registry.ts, types.ts, transaction.ts
851
887
  │ ├── L0_diagnostics_core.ts, L0_diagnostics_api.ts
852
888
  │ ├── L1_schematic_read.ts, L1_schematic_write.ts
@@ -884,8 +920,8 @@ See [Security Architecture & Threat Model](docs/security-architecture.md) for th
884
920
  This repository uses automated workflows to manage dependencies and releases:
885
921
 
886
922
  - **Renovate**: Automatically scans and updates dependencies based on rules configured in [.github/renovate.json](.github/renovate.json). For details on PR policies and automerging, see [Repository Governance](docs/REPOSITORY_GOVERNANCE.md).
887
- - **Release Please**: Automatically bumps package versions, updates files (like `package.json`, `server.json`, `extension.json`), and generates `CHANGELOG.md` upon merging Release PRs. For the full release procedure and Conventional Commit conventions, see [Release Process](docs/RELEASE_PROCESS.md).
888
- - **Secure Publishing**: The release workflow builds all assets (including `easyeda-bridge-extension.eext`), publishes to the NPM registry with cryptographic provenance, and uploads assets directly to the GitHub release.
923
+ - **Release Please**: Automates stable version bumps, release metadata, and `CHANGELOG.md`. Numbered `rc.N` candidates use the isolated prerelease path. See the [Release Policy](docs/RELEASE_POLICY.md) and [Release Process](docs/RELEASE_PROCESS.md).
924
+ - **Secure Publishing**: The release workflow rebuilds and verifies all assets, publishes npm with provenance to channel-safe `latest` or `next` dist-tags, uploads the extension and SBOM to the matching GitHub Release, and keeps GHCR/MCP Registry promotion aligned with the selected channel.
889
925
 
890
926
  ---
891
927
 
@@ -0,0 +1,10 @@
1
+ {
2
+ "schemaVersion": 1,
3
+ "node": {
4
+ "supportedMajor": 24,
5
+ "pinnedVersion": "24.18.0"
6
+ },
7
+ "pnpm": {
8
+ "pinnedVersion": "11.5.1"
9
+ }
10
+ }
@@ -1,3 +1,4 @@
1
+ export { evaluateNodeRuntime, evaluatePnpmRuntime } from '../runtime/policy.js';
1
2
  type CliCommand = 'server' | 'setup-local' | 'setup' | 'extension' | 'doctor' | 'help' | 'version' | 'init';
2
3
  export interface ParsedCliArgs {
3
4
  command: CliCommand;
@@ -34,11 +35,24 @@ export interface RemoteBackendDoctorStatus {
34
35
  httpAuthDisabled: boolean;
35
36
  warnings: string[];
36
37
  }
38
+ export interface UserServiceRuntimeStatus {
39
+ applicable: boolean;
40
+ installed: boolean;
41
+ unitPath: string;
42
+ execStart?: string;
43
+ nodePath?: string;
44
+ nodePathExists?: boolean;
45
+ nodeVersion?: string | null;
46
+ nodeSupported?: boolean;
47
+ issues: string[];
48
+ }
37
49
  export interface DoctorReport {
38
50
  setup: LocalSetupInfo;
39
51
  nodeVersion: string;
40
52
  nodeSupported: boolean;
41
53
  pnpmVersion: string | null;
54
+ pnpmSupported: boolean;
55
+ userServiceRuntime?: UserServiceRuntimeStatus;
42
56
  envValid: boolean;
43
57
  envIssues: string[];
44
58
  bridgeHost: string;
@@ -53,11 +67,18 @@ export interface DoctorReport {
53
67
  remoteBackend?: RemoteBackendDoctorStatus;
54
68
  }
55
69
  export declare function parseCliArgs(args: string[]): ParsedCliArgs;
56
- export declare function formatSetupLocalReport(setup?: LocalSetupInfo): string;
70
+ export declare function formatSetupLocalReport(setup?: LocalSetupInfo, nodeExecutablePath?: string): string;
71
+ export declare function pnpmExecutableForPlatform(platform: NodeJS.Platform): string;
72
+ export declare function inspectUserServiceRuntime(options?: {
73
+ platform?: NodeJS.Platform;
74
+ unitPath?: string;
75
+ unitText?: string | null;
76
+ executableExists?: (path: string) => boolean;
77
+ readNodeVersion?: (path: string) => Promise<string | null>;
78
+ }): Promise<UserServiceRuntimeStatus>;
57
79
  export declare function createDoctorReport(packageRoot?: string): Promise<DoctorReport>;
58
80
  export declare function formatDoctorReport(report: DoctorReport, options?: {
59
81
  fix?: boolean;
60
82
  }): string;
61
83
  export declare function formatHelp(): string;
62
84
  export declare function formatVersion(packageRoot?: string): string;
63
- export {};
@@ -1,4 +1,5 @@
1
1
  import { existsSync, readFileSync } from 'node:fs';
2
+ import { homedir } from 'node:os';
2
3
  import { connect as createConnection } from 'node:net';
3
4
  import { join } from 'node:path';
4
5
  import { fileURLToPath } from 'node:url';
@@ -8,6 +9,8 @@ import { ToolRegistry } from '../tools/registry.js';
8
9
  import { registerBuiltinTools } from '../tools/register.js';
9
10
  import { EnvSchema, getBridgePairingConfigIssue, getHttpSecurityConfigIssues, } from '../config/env.js';
10
11
  import { parsePortScanSpec } from '../bridge/manager.js';
12
+ import { evaluateNodeRuntime, evaluatePnpmRuntime, PINNED_NODE_VERSION, PINNED_PNPM_VERSION, } from '../runtime/policy.js';
13
+ export { evaluateNodeRuntime, evaluatePnpmRuntime } from '../runtime/policy.js';
11
14
  function remoteBackendStatusFromConfig(config) {
12
15
  if (!config)
13
16
  return undefined;
@@ -142,7 +145,7 @@ function getLocalSetupInfo(packageRoot = resolvePackageRoot()) {
142
145
  extensionPackageExists: existsSync(extensionPackagePath),
143
146
  };
144
147
  }
145
- export function formatSetupLocalReport(setup = getLocalSetupInfo()) {
148
+ export function formatSetupLocalReport(setup = getLocalSetupInfo(), nodeExecutablePath = process.execPath) {
146
149
  return [
147
150
  'easyeda-mcp-pro local setup',
148
151
  '',
@@ -154,7 +157,7 @@ export function formatSetupLocalReport(setup = getLocalSetupInfo()) {
154
157
  stringifyConfig({
155
158
  mcpServers: {
156
159
  'easyeda-mcp-pro': {
157
- command: 'node',
160
+ command: nodeExecutablePath,
158
161
  args: [setup.serverEntryPath],
159
162
  },
160
163
  },
@@ -174,10 +177,98 @@ export function formatSetupLocalReport(setup = getLocalSetupInfo()) {
174
177
  '1. Install or reload the EasyEDA extension package above.',
175
178
  '2. Add one MCP config block to your MCP client.',
176
179
  '3. Open an EasyEDA Pro project, then use MCP Bridge > Connect.',
177
- '4. Do not run node dist/index.js manually when your MCP client auto-starts it.',
180
+ `4. Rerun setup after replacing or moving this Node runtime: ${nodeExecutablePath}`,
178
181
  ].join('\n');
179
182
  }
180
183
  const execFileAsync = promisify(execFile);
184
+ export function pnpmExecutableForPlatform(platform) {
185
+ return platform === 'win32' ? 'pnpm.cmd' : 'pnpm';
186
+ }
187
+ function parseSystemdExecStart(unitText) {
188
+ const line = unitText
189
+ .split(/\r?\n/)
190
+ .map((entry) => entry.trim())
191
+ .find((entry) => entry.startsWith('ExecStart='));
192
+ if (!line)
193
+ return undefined;
194
+ return line.slice('ExecStart='.length).trim() || undefined;
195
+ }
196
+ function firstCommandToken(command) {
197
+ if (command.startsWith('"')) {
198
+ const end = command.indexOf('"', 1);
199
+ return end > 1 ? command.slice(1, end) : undefined;
200
+ }
201
+ return /^\S+/.exec(command)?.[0];
202
+ }
203
+ export async function inspectUserServiceRuntime(options = {}) {
204
+ const platform = options.platform ?? process.platform;
205
+ const unitPath = options.unitPath ??
206
+ join(process.env.XDG_CONFIG_HOME ?? join(homedir(), '.config'), 'systemd', 'user', 'easyeda-mcp-pro.service');
207
+ if (platform !== 'linux') {
208
+ return { applicable: false, installed: false, unitPath, issues: [] };
209
+ }
210
+ const installed = options.unitText !== undefined ? options.unitText !== null : existsSync(unitPath);
211
+ if (!installed)
212
+ return { applicable: true, installed: false, unitPath, issues: [] };
213
+ const unitText = options.unitText ?? readFileSync(unitPath, 'utf8');
214
+ const execStart = parseSystemdExecStart(unitText);
215
+ const issues = [];
216
+ if (!execStart) {
217
+ issues.push('User service has no ExecStart command.');
218
+ return { applicable: true, installed: true, unitPath, issues };
219
+ }
220
+ const nodePath = firstCommandToken(execStart);
221
+ if (!nodePath) {
222
+ issues.push('User service ExecStart command could not be parsed.');
223
+ return { applicable: true, installed: true, unitPath, execStart, issues };
224
+ }
225
+ const executableExists = options.executableExists ?? existsSync;
226
+ const nodePathExists = executableExists(nodePath);
227
+ if (!nodePathExists) {
228
+ issues.push(`ExecStart Node executable does not exist: ${nodePath}.`);
229
+ if (/^Restart=on-failure$/m.test(unitText)) {
230
+ issues.push('Restart=on-failure can turn this missing executable into a restart loop.');
231
+ }
232
+ return {
233
+ applicable: true,
234
+ installed: true,
235
+ unitPath,
236
+ execStart,
237
+ nodePath,
238
+ nodePathExists,
239
+ nodeVersion: null,
240
+ nodeSupported: false,
241
+ issues,
242
+ };
243
+ }
244
+ const readNodeVersion = options.readNodeVersion ??
245
+ (async (path) => {
246
+ try {
247
+ const { stdout } = await execFileAsync(path, ['--version']);
248
+ return stdout.trim().replace(/^v/, '');
249
+ }
250
+ catch {
251
+ return null;
252
+ }
253
+ });
254
+ const nodeVersion = await readNodeVersion(nodePath);
255
+ const nodeSupported = nodeVersion ? evaluateNodeRuntime(nodeVersion).supported : false;
256
+ if (!nodeVersion)
257
+ issues.push(`Unable to read Node.js version from ${nodePath}.`);
258
+ else if (!nodeSupported)
259
+ issues.push(`User service requires Node.js 24.x but ${nodePath} reports ${nodeVersion}.`);
260
+ return {
261
+ applicable: true,
262
+ installed: true,
263
+ unitPath,
264
+ execStart,
265
+ nodePath,
266
+ nodePathExists,
267
+ nodeVersion,
268
+ nodeSupported,
269
+ issues,
270
+ };
271
+ }
181
272
  export async function createDoctorReport(packageRoot = resolvePackageRoot()) {
182
273
  const setup = getLocalSetupInfo(packageRoot);
183
274
  const env = parseCliEnv();
@@ -192,12 +283,17 @@ export async function createDoctorReport(packageRoot = resolvePackageRoot()) {
192
283
  }
193
284
  let pnpmVersion = null;
194
285
  try {
195
- const { stdout } = await execFileAsync('pnpm', ['--version']);
286
+ const { stdout } = await execFileAsync(pnpmExecutableForPlatform(process.platform), [
287
+ '--version',
288
+ ]);
196
289
  pnpmVersion = stdout.trim();
197
290
  }
198
291
  catch {
199
292
  // Ignore if pnpm is not found
200
293
  }
294
+ const nodeEvaluation = evaluateNodeRuntime(process.versions.node);
295
+ const pnpmEvaluation = evaluatePnpmRuntime(pnpmVersion);
296
+ const userServiceRuntime = await inspectUserServiceRuntime();
201
297
  let toolCounts = undefined;
202
298
  if (env.config) {
203
299
  const registry = new ToolRegistry();
@@ -215,8 +311,10 @@ export async function createDoctorReport(packageRoot = resolvePackageRoot()) {
215
311
  return {
216
312
  setup,
217
313
  nodeVersion: process.versions.node,
218
- nodeSupported: isSupportedNodeVersion(process.versions.node),
314
+ nodeSupported: nodeEvaluation.supported,
219
315
  pnpmVersion,
316
+ pnpmSupported: pnpmEvaluation.supported,
317
+ userServiceRuntime,
220
318
  envValid: env.issues.length === 0,
221
319
  envIssues: env.issues,
222
320
  bridgeHost,
@@ -232,11 +330,15 @@ function buildSuggestedFixes(report) {
232
330
  const fixes = [];
233
331
  const reachable = report.bridgePorts.find((port) => port.reachable);
234
332
  if (!report.nodeSupported) {
235
- const major = Number(report.nodeVersion.split('.')[0]);
236
- fixes.push(`Node.js ${report.nodeVersion} is not supported (need >=24 <27, found major ${Number.isFinite(major) ? major : '?'}).`, ' Fix: nvm install 24 && nvm use 24 (or upgrade Node.js from https://nodejs.org)');
333
+ fixes.push(`Node.js ${report.nodeVersion} is not supported (required: 24.x; pinned: ${PINNED_NODE_VERSION}).`, ` Fix: nvm install ${PINNED_NODE_VERSION} && nvm use ${PINNED_NODE_VERSION} (or install the pinned Node.js runtime from https://nodejs.org)`);
334
+ }
335
+ if (!report.pnpmSupported) {
336
+ fixes.push(report.pnpmVersion
337
+ ? `pnpm ${report.pnpmVersion} is not supported (required: ${PINNED_PNPM_VERSION}).`
338
+ : 'pnpm was not found on PATH.', ' Fix: corepack enable', ` Fix: corepack prepare pnpm@${PINNED_PNPM_VERSION} --activate`);
237
339
  }
238
- if (!report.pnpmVersion) {
239
- fixes.push('pnpm was not found on PATH.', ' Fix: npm install -g pnpm (only needed for local development, not for npx usage)');
340
+ if (report.userServiceRuntime?.installed && report.userServiceRuntime.issues.length > 0) {
341
+ fixes.push(...report.userServiceRuntime.issues, ' Fix: systemctl --user disable --now easyeda-mcp-pro.service', ' Fix: Rerun your MCP client setup under the supported Node.js runtime; do not preserve a stale absolute ExecStart path.');
240
342
  }
241
343
  if (!report.envValid) {
242
344
  fixes.push('Environment configuration is invalid:');
@@ -292,14 +394,24 @@ export function formatDoctorReport(report, options) {
292
394
  const remoteBackendStr = report.remoteBackend
293
395
  ? `${report.remoteBackend.backend} / transport=${report.remoteBackend.transport} / session=${report.remoteBackend.remoteSessionConfigured ? 'configured' : 'per-request'} / oauth=${report.remoteBackend.oauthEnabled ? 'enabled' : 'disabled'}${report.remoteBackend.warnings.length ? ` / warnings=${report.remoteBackend.warnings.length}` : ''}`
294
396
  : 'Unknown remote backend configuration';
397
+ let pnpmStatus = 'MISSING';
398
+ if (report.pnpmVersion)
399
+ pnpmStatus = report.pnpmSupported ? 'OK' : 'UNSUPPORTED';
400
+ const pnpmVersionSuffix = report.pnpmVersion ? ` ${report.pnpmVersion}` : '';
295
401
  const lines = [
296
402
  'easyeda-mcp-pro doctor',
297
403
  '',
298
- `Node.js: ${status(report.nodeSupported)} ${report.nodeVersion} (supported: >=24 <27)`,
299
- `pnpm: ${report.pnpmVersion ? 'OK ' + report.pnpmVersion : 'MISSING'}`,
404
+ `Node.js: ${report.nodeSupported ? 'OK' : 'UNSUPPORTED'} ${report.nodeVersion} (required: 24.x; pinned: ${PINNED_NODE_VERSION})`,
405
+ `pnpm: ${pnpmStatus}${pnpmVersionSuffix} (required: ${PINNED_PNPM_VERSION})`,
300
406
  `Environment: ${status(report.envValid)}${report.envIssues.length ? ` ${report.envIssues.join('; ')}` : ''}`,
301
407
  `MCP server entry: ${status(report.setup.serverEntryExists)} ${report.setup.serverEntryPath}`,
302
408
  `EasyEDA extension package: ${status(report.setup.extensionPackageExists)} ${report.setup.extensionPackagePath}`,
409
+ ...(report.userServiceRuntime?.installed
410
+ ? [
411
+ `User service runtime: ${report.userServiceRuntime.issues.length === 0 ? 'OK' : 'BROKEN'} ${report.userServiceRuntime.nodePath ?? report.userServiceRuntime.execStart ?? report.userServiceRuntime.unitPath}`,
412
+ ...report.userServiceRuntime.issues.map((issue) => `User service warning: ${issue}`),
413
+ ]
414
+ : []),
303
415
  `Bridge server: ${reachable ? 'OK' : 'INFO'} ${bridgeStatus}`,
304
416
  `Remote backend: ${remoteBackendStr}`,
305
417
  ...(report.remoteBackend?.warnings.length
@@ -390,10 +502,6 @@ function readPackageInfo(packageRoot) {
390
502
  version: parsed.version ?? '0.0.0',
391
503
  };
392
504
  }
393
- function isSupportedNodeVersion(version) {
394
- const major = Number(version.split('.')[0]);
395
- return Number.isInteger(major) && major >= 24 && major < 27;
396
- }
397
505
  function status(ok) {
398
506
  return ok ? 'OK' : 'MISSING';
399
507
  }
@@ -1 +1 @@
1
- {"version":3,"file":"local-setup.js","sourceRoot":"","sources":["../../src/cli/local-setup.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"local-setup.js","sourceRoot":"","sources":["../../src/cli/local-setup.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AACnD,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAClC,OAAO,EAAE,OAAO,IAAI,gBAAgB,EAAE,MAAM,UAAU,CAAC;AACvD,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AACzC,OAAO,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AAC9C,OAAO,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AACtC,OAAO,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AACpD,OAAO,EAAE,oBAAoB,EAAE,MAAM,sBAAsB,CAAC;AAE5D,OAAO,EACL,SAAS,EACT,2BAA2B,EAC3B,2BAA2B,GAE5B,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AACzD,OAAO,EACL,mBAAmB,EACnB,mBAAmB,EACnB,mBAAmB,EACnB,mBAAmB,GACpB,MAAM,sBAAsB,CAAC;AAE9B,OAAO,EAAE,mBAAmB,EAAE,mBAAmB,EAAE,MAAM,sBAAsB,CAAC;AAgFhF,SAAS,6BAA6B,CACpC,MAA6B;IAE7B,IAAI,CAAC,MAAM;QAAE,OAAO,SAAS,CAAC;IAC9B,MAAM,QAAQ,GAAa,EAAE,CAAC;IAC9B,MAAM,OAAO,GAAG,MAAM,CAAC,kBAAkB,CAAC;IAC1C,MAAM,SAAS,GAAG,MAAM,CAAC,SAAS,CAAC;IACnC,MAAM,uBAAuB,GAAG,MAAM,CAAC,qBAAqB,CAAC,IAAI,EAAE,CAAC,MAAM,GAAG,CAAC,CAAC;IAC/E,MAAM,YAAY,GAAG,MAAM,CAAC,aAAa,CAAC;IAC1C,MAAM,gBAAgB,GAAG,MAAM,CAAC,kBAAkB,CAAC;IAEnD,IAAI,OAAO,KAAK,cAAc,EAAE,CAAC;QAC/B,IAAI,SAAS,KAAK,MAAM,EAAE,CAAC;YACzB,QAAQ,CAAC,IAAI,CACX,qFAAqF,CACtF,CAAC;QACJ,CAAC;QACD,IAAI,CAAC,uBAAuB,EAAE,CAAC;YAC7B,QAAQ,CAAC,IAAI,CACX,2FAA2F,CAC5F,CAAC;QACJ,CAAC;QACD,IAAI,CAAC,YAAY,EAAE,CAAC;YAClB,QAAQ,CAAC,IAAI,CACX,wHAAwH,CACzH,CAAC;QACJ,CAAC;QACD,IAAI,gBAAgB,EAAE,CAAC;YACrB,QAAQ,CAAC,IAAI,CAAC,6EAA6E,CAAC,CAAC;QAC/F,CAAC;IACH,CAAC;IAED,OAAO,EAAE,OAAO,EAAE,SAAS,EAAE,uBAAuB,EAAE,YAAY,EAAE,gBAAgB,EAAE,QAAQ,EAAE,CAAC;AACnG,CAAC;AAED,SAAS,sBAAsB,CAAC,MAA6B;IAC3D,MAAM,gBAAgB,GAAG,OAAO,CAAC,MAAM,EAAE,gBAAgB,IAAI,MAAM,EAAE,oBAAoB,CAAC,CAAC;IAC3F,MAAM,sBAAsB,GAAG,OAAO,CAAC,MAAM,EAAE,YAAY,CAAC,CAAC;IAC7D,MAAM,gBAAgB,GAAG,OAAO,CAAC,MAAM,EAAE,cAAc,CAAC,CAAC;IACzD,MAAM,iBAAiB,GAAG,OAAO,CAAC,MAAM,EAAE,iBAAiB,IAAI,MAAM,EAAE,qBAAqB,CAAC,CAAC;IAE9F,OAAO;QACL,MAAM,EAAE;YACN,OAAO,EAAE,MAAM,EAAE,WAAW,KAAK,cAAc;YAC/C,UAAU,EAAE,gBAAgB;YAC5B,IAAI,EAAE,MAAM,EAAE,WAAW,IAAI,UAAU;YACvC,gBAAgB,EACd,MAAM,EAAE,WAAW,KAAK,cAAc;gBACpC,CAAC,CAAC,gBAAgB;oBAChB,CAAC,CAAC,SAAS;oBACX,CAAC,CAAC,SAAS;gBACb,CAAC,CAAC,cAAc;SACrB;QACD,IAAI,EAAE;YACJ,OAAO,EAAE,OAAO,CAAC,MAAM,EAAE,iBAAiB,CAAC;YAC3C,UAAU,EAAE,OAAO,CAAC,MAAM,EAAE,iBAAiB,IAAI,sBAAsB,CAAC;YACxE,IAAI,EAAE,MAAM,EAAE,iBAAiB;gBAC7B,CAAC,CAAC,kBAAkB;gBACpB,CAAC,CAAC,sBAAsB;oBACtB,CAAC,CAAC,cAAc;oBAChB,CAAC,CAAC,UAAU;YAChB,gBAAgB,EAAE,sBAAsB,CAAC,CAAC,CAAC,kBAAkB,CAAC,CAAC,CAAC,kBAAkB;SACnF;QACD,MAAM,EAAE;YACN,OAAO,EAAE,OAAO,CAAC,MAAM,EAAE,cAAc,CAAC;YACxC,UAAU,EAAE,gBAAgB;YAC5B,IAAI,EAAE,MAAM,EAAE,cAAc,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,UAAU;YACjD,gBAAgB,EAAE,MAAM,EAAE,cAAc;gBACtC,CAAC,CAAC,gBAAgB;oBAChB,CAAC,CAAC,SAAS;oBACX,CAAC,CAAC,SAAS;gBACb,CAAC,CAAC,cAAc;SACnB;QACD,OAAO,EAAE;YACP,OAAO,EAAE,OAAO,CAAC,MAAM,EAAE,eAAe,CAAC;YACzC,UAAU,EAAE,iBAAiB;YAC7B,IAAI,EAAE,MAAM,EAAE,eAAe;gBAC3B,CAAC,CAAC,MAAM,EAAE,eAAe;oBACvB,CAAC,CAAC,SAAS;oBACX,CAAC,CAAC,YAAY;gBAChB,CAAC,CAAC,UAAU;YACd,gBAAgB,EAAE,MAAM,EAAE,eAAe;gBACvC,CAAC,CAAC,iBAAiB;oBACjB,CAAC,CAAC,SAAS;oBACX,CAAC,CAAC,SAAS;gBACb,CAAC,CAAC,cAAc;SACnB;KACF,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,YAAY,CAAC,IAAc;IACzC,MAAM,KAAK,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;IACtB,IAAI,CAAC,KAAK;QAAE,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,CAAC;IAEzC,QAAQ,KAAK,EAAE,CAAC;QACd,KAAK,eAAe,CAAC;QACrB,KAAK,aAAa;YAChB,OAAO,EAAE,OAAO,EAAE,aAAa,EAAE,CAAC;QACpC,KAAK,SAAS,CAAC;QACf,KAAK,OAAO,CAAC,CAAC,CAAC;YACb,MAAM,MAAM,GAAG,IAAI,CAAC,CAAC,CAAC,IAAI,MAAM,CAAC;YACjC,MAAM,UAAU,GAAG,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC;YAC7C,MAAM,OAAO,GAAG,UAAU,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,UAAU,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;YACrE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,WAAW,EAAE,MAAM,EAAE,YAAY,EAAE,OAAO,EAAE,CAAC;QAC1E,CAAC;QACD,KAAK,aAAa,CAAC;QACnB,KAAK,WAAW,CAAC,CAAC,CAAC;YACjB,MAAM,IAAI,GAAG,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;YACrC,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;YACvC,MAAM,IAAI,GAAG,OAAO,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;YAC5D,OAAO,EAAE,OAAO,EAAE,WAAW,EAAE,aAAa,EAAE,IAAI,EAAE,aAAa,EAAE,IAAI,EAAE,CAAC;QAC5E,CAAC;QACD,KAAK,UAAU,CAAC;QAChB,KAAK,QAAQ;YACX,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC;QAClE,KAAK,QAAQ,CAAC;QACd,KAAK,MAAM;YACT,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,CAAC;QAC7B,KAAK,QAAQ,CAAC;QACd,KAAK,IAAI,CAAC;QACV,KAAK,MAAM;YACT,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,CAAC;QAC7B,KAAK,WAAW,CAAC;QACjB,KAAK,IAAI,CAAC;QACV,KAAK,SAAS;YACZ,OAAO,EAAE,OAAO,EAAE,SAAS,EAAE,CAAC;QAChC;YACE,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,CAAC;IACjC,CAAC;AACH,CAAC;AAED,SAAS,kBAAkB,CAAC,OAAO,GAAG,MAAM,CAAC,IAAI,CAAC,GAAG;IACnD,OAAO,aAAa,CAAC,IAAI,GAAG,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC,CAAC;AACnD,CAAC;AAED,SAAS,iBAAiB,CAAC,WAAW,GAAG,kBAAkB,EAAE;IAC3D,MAAM,WAAW,GAAG,eAAe,CAAC,WAAW,CAAC,CAAC;IACjD,MAAM,eAAe,GAAG,IAAI,CAAC,WAAW,EAAE,MAAM,EAAE,UAAU,CAAC,CAAC;IAC9D,MAAM,oBAAoB,GAAG,IAAI,CAAC,WAAW,EAAE,+BAA+B,CAAC,CAAC;IAEhF,OAAO;QACL,WAAW,EAAE,WAAW,CAAC,IAAI;QAC7B,cAAc,EAAE,WAAW,CAAC,OAAO;QACnC,WAAW;QACX,eAAe;QACf,oBAAoB;QACpB,iBAAiB,EAAE,UAAU,CAAC,eAAe,CAAC;QAC9C,sBAAsB,EAAE,UAAU,CAAC,oBAAoB,CAAC;KACzD,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,sBAAsB,CACpC,KAAK,GAAG,iBAAiB,EAAE,EAC3B,kBAAkB,GAAG,OAAO,CAAC,QAAQ;IAErC,OAAO;QACL,6BAA6B;QAC7B,EAAE;QACF,YAAY,KAAK,CAAC,WAAW,IAAI,KAAK,CAAC,cAAc,EAAE;QACvD,qBAAqB,MAAM,CAAC,KAAK,CAAC,iBAAiB,CAAC,IAAI,KAAK,CAAC,eAAe,EAAE;QAC/E,8BAA8B,MAAM,CAAC,KAAK,CAAC,sBAAsB,CAAC,IAAI,KAAK,CAAC,oBAAoB,EAAE;QAClG,EAAE;QACF,0DAA0D;QAC1D,eAAe,CAAC;YACd,UAAU,EAAE;gBACV,iBAAiB,EAAE;oBACjB,OAAO,EAAE,kBAAkB;oBAC3B,IAAI,EAAE,CAAC,KAAK,CAAC,eAAe,CAAC;iBAC9B;aACF;SACF,CAAC;QACF,EAAE;QACF,qDAAqD;QACrD,eAAe,CAAC;YACd,UAAU,EAAE;gBACV,iBAAiB,EAAE;oBACjB,OAAO,EAAE,KAAK;oBACd,IAAI,EAAE,CAAC,IAAI,EAAE,GAAG,KAAK,CAAC,WAAW,SAAS,CAAC;iBAC5C;aACF;SACF,CAAC;QACF,EAAE;QACF,aAAa;QACb,2DAA2D;QAC3D,iDAAiD;QACjD,gEAAgE;QAChE,+DAA+D,kBAAkB,EAAE;KACpF,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACf,CAAC;AAED,MAAM,aAAa,GAAG,SAAS,CAAC,QAAQ,CAAC,CAAC;AAE1C,MAAM,UAAU,yBAAyB,CAAC,QAAyB;IACjE,OAAO,QAAQ,KAAK,OAAO,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,MAAM,CAAC;AACpD,CAAC;AAED,SAAS,qBAAqB,CAAC,QAAgB;IAC7C,MAAM,IAAI,GAAG,QAAQ;SAClB,KAAK,CAAC,OAAO,CAAC;SACd,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC;SAC5B,IAAI,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,UAAU,CAAC,YAAY,CAAC,CAAC,CAAC;IACnD,IAAI,CAAC,IAAI;QAAE,OAAO,SAAS,CAAC;IAC5B,OAAO,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,IAAI,SAAS,CAAC;AAC7D,CAAC;AAED,SAAS,iBAAiB,CAAC,OAAe;IACxC,IAAI,OAAO,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;QAC5B,MAAM,GAAG,GAAG,OAAO,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;QACpC,OAAO,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;IACrD,CAAC;IACD,OAAO,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;AACnC,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,yBAAyB,CAC7C,UAMI,EAAE;IAEN,MAAM,QAAQ,GAAG,OAAO,CAAC,QAAQ,IAAI,OAAO,CAAC,QAAQ,CAAC;IACtD,MAAM,QAAQ,GACZ,OAAO,CAAC,QAAQ;QAChB,IAAI,CACF,OAAO,CAAC,GAAG,CAAC,eAAe,IAAI,IAAI,CAAC,OAAO,EAAE,EAAE,SAAS,CAAC,EACzD,SAAS,EACT,MAAM,EACN,yBAAyB,CAC1B,CAAC;IACJ,IAAI,QAAQ,KAAK,OAAO,EAAE,CAAC;QACzB,OAAO,EAAE,UAAU,EAAE,KAAK,EAAE,SAAS,EAAE,KAAK,EAAE,QAAQ,EAAE,MAAM,EAAE,EAAE,EAAE,CAAC;IACvE,CAAC;IAED,MAAM,SAAS,GACb,OAAO,CAAC,QAAQ,KAAK,SAAS,CAAC,CAAC,CAAC,OAAO,CAAC,QAAQ,KAAK,IAAI,CAAC,CAAC,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC;IACpF,IAAI,CAAC,SAAS;QAAE,OAAO,EAAE,UAAU,EAAE,IAAI,EAAE,SAAS,EAAE,KAAK,EAAE,QAAQ,EAAE,MAAM,EAAE,EAAE,EAAE,CAAC;IAEpF,MAAM,QAAQ,GAAG,OAAO,CAAC,QAAQ,IAAI,YAAY,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;IACpE,MAAM,SAAS,GAAG,qBAAqB,CAAC,QAAQ,CAAC,CAAC;IAClD,MAAM,MAAM,GAAa,EAAE,CAAC;IAC5B,IAAI,CAAC,SAAS,EAAE,CAAC;QACf,MAAM,CAAC,IAAI,CAAC,wCAAwC,CAAC,CAAC;QACtD,OAAO,EAAE,UAAU,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,EAAE,CAAC;IACjE,CAAC;IAED,MAAM,QAAQ,GAAG,iBAAiB,CAAC,SAAS,CAAC,CAAC;IAC9C,IAAI,CAAC,QAAQ,EAAE,CAAC;QACd,MAAM,CAAC,IAAI,CAAC,qDAAqD,CAAC,CAAC;QACnE,OAAO,EAAE,UAAU,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,EAAE,CAAC;IAC5E,CAAC;IAED,MAAM,gBAAgB,GAAG,OAAO,CAAC,gBAAgB,IAAI,UAAU,CAAC;IAChE,MAAM,cAAc,GAAG,gBAAgB,CAAC,QAAQ,CAAC,CAAC;IAClD,IAAI,CAAC,cAAc,EAAE,CAAC;QACpB,MAAM,CAAC,IAAI,CAAC,6CAA6C,QAAQ,GAAG,CAAC,CAAC;QACtE,IAAI,uBAAuB,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC;YAC3C,MAAM,CAAC,IAAI,CAAC,0EAA0E,CAAC,CAAC;QAC1F,CAAC;QACD,OAAO;YACL,UAAU,EAAE,IAAI;YAChB,SAAS,EAAE,IAAI;YACf,QAAQ;YACR,SAAS;YACT,QAAQ;YACR,cAAc;YACd,WAAW,EAAE,IAAI;YACjB,aAAa,EAAE,KAAK;YACpB,MAAM;SACP,CAAC;IACJ,CAAC;IAED,MAAM,eAAe,GACnB,OAAO,CAAC,eAAe;QACvB,CAAC,KAAK,EAAE,IAAY,EAAE,EAAE;YACtB,IAAI,CAAC;gBACH,MAAM,EAAE,MAAM,EAAE,GAAG,MAAM,aAAa,CAAC,IAAI,EAAE,CAAC,WAAW,CAAC,CAAC,CAAC;gBAC5D,OAAO,MAAM,CAAC,IAAI,EAAE,CAAC,OAAO,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;YACzC,CAAC;YAAC,MAAM,CAAC;gBACP,OAAO,IAAI,CAAC;YACd,CAAC;QACH,CAAC,CAAC,CAAC;IACL,MAAM,WAAW,GAAG,MAAM,eAAe,CAAC,QAAQ,CAAC,CAAC;IACpD,MAAM,aAAa,GAAG,WAAW,CAAC,CAAC,CAAC,mBAAmB,CAAC,WAAW,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,KAAK,CAAC;IACvF,IAAI,CAAC,WAAW;QAAE,MAAM,CAAC,IAAI,CAAC,uCAAuC,QAAQ,GAAG,CAAC,CAAC;SAC7E,IAAI,CAAC,aAAa;QACrB,MAAM,CAAC,IAAI,CAAC,0CAA0C,QAAQ,YAAY,WAAW,GAAG,CAAC,CAAC;IAE5F,OAAO;QACL,UAAU,EAAE,IAAI;QAChB,SAAS,EAAE,IAAI;QACf,QAAQ;QACR,SAAS;QACT,QAAQ;QACR,cAAc;QACd,WAAW;QACX,aAAa;QACb,MAAM;KACP,CAAC;AACJ,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,kBAAkB,CACtC,WAAW,GAAG,kBAAkB,EAAE;IAElC,MAAM,KAAK,GAAG,iBAAiB,CAAC,WAAW,CAAC,CAAC;IAC7C,MAAM,GAAG,GAAG,WAAW,EAAE,CAAC;IAC1B,MAAM,UAAU,GAAG,GAAG,CAAC,MAAM,EAAE,WAAW,IAAI,WAAW,CAAC;IAC1D,MAAM,KAAK,GAAG,iBAAiB,CAAC,GAAG,CAAC,MAAM,EAAE,gBAAgB,IAAI,OAAO,CAAC,CAAC;IACzE,MAAM,WAAW,GAAG,EAAE,CAAC;IAEvB,KAAK,MAAM,IAAI,IAAI,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC;QACtC,WAAW,CAAC,IAAI,CAAC;YACf,IAAI;YACJ,SAAS,EAAE,MAAM,YAAY,CAAC,UAAU,EAAE,IAAI,CAAC;SAChD,CAAC,CAAC;IACL,CAAC;IAED,IAAI,WAAW,GAAG,IAAI,CAAC;IACvB,IAAI,CAAC;QACH,MAAM,EAAE,MAAM,EAAE,GAAG,MAAM,aAAa,CAAC,yBAAyB,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE;YAClF,WAAW;SACZ,CAAC,CAAC;QACH,WAAW,GAAG,MAAM,CAAC,IAAI,EAAE,CAAC;IAC9B,CAAC;IAAC,MAAM,CAAC;QACP,8BAA8B;IAChC,CAAC;IAED,MAAM,cAAc,GAAG,mBAAmB,CAAC,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;IAClE,MAAM,cAAc,GAAG,mBAAmB,CAAC,WAAW,CAAC,CAAC;IACxD,MAAM,kBAAkB,GAAG,MAAM,yBAAyB,EAAE,CAAC;IAE7D,IAAI,UAAU,GAAG,SAAS,CAAC;IAC3B,IAAI,GAAG,CAAC,MAAM,EAAE,CAAC;QACf,MAAM,QAAQ,GAAG,IAAI,YAAY,EAAE,CAAC;QACpC,QAAQ,CAAC,UAAU,CAAC,GAAG,CAAC,MAAM,CAAC,YAA2B,CAAC,CAAC;QAC5D,oBAAoB,CAAC,QAAQ,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;QAC3C,UAAU,GAAG;YACX,OAAO,EAAE,GAAG,CAAC,MAAM,CAAC,YAAY;YAChC,OAAO,EAAE,QAAQ,CAAC,eAAe,EAAE,CAAC,MAAM;YAC1C,KAAK,EAAE,QAAQ,CAAC,WAAW,EAAE,CAAC,MAAM;SACrC,CAAC;IACJ,CAAC;IAED,MAAM,iBAAiB,GAAG,sBAAsB,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;IAC7D,MAAM,aAAa,GAAG,6BAA6B,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;IAChE,MAAM,iBAAiB,GAA4B,MAAM,CAAC,WAAW,CACnE,MAAM,CAAC,OAAO,CAAC,iBAAiB,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,EAAE,MAAM,CAAC,EAAE,EAAE,CAAC,CAAC,IAAI,EAAE,MAAM,CAAC,UAAU,CAAC,CAAC,CACrF,CAAC;IAEF,OAAO;QACL,KAAK;QACL,WAAW,EAAE,OAAO,CAAC,QAAQ,CAAC,IAAI;QAClC,aAAa,EAAE,cAAc,CAAC,SAAS;QACvC,WAAW;QACX,aAAa,EAAE,cAAc,CAAC,SAAS;QACvC,kBAAkB;QAClB,QAAQ,EAAE,GAAG,CAAC,MAAM,CAAC,MAAM,KAAK,CAAC;QACjC,SAAS,EAAE,GAAG,CAAC,MAAM;QACrB,UAAU;QACV,WAAW;QACX,UAAU;QACV,iBAAiB;QACjB,iBAAiB;QACjB,aAAa;KACd,CAAC;AACJ,CAAC;AAED,4FAA4F;AAC5F,SAAS,mBAAmB,CAAC,MAAoB;IAC/C,MAAM,KAAK,GAAa,EAAE,CAAC;IAC3B,MAAM,SAAS,GAAG,MAAM,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;IAEpE,IAAI,CAAC,MAAM,CAAC,aAAa,EAAE,CAAC;QAC1B,KAAK,CAAC,IAAI,CACR,WAAW,MAAM,CAAC,WAAW,8CAA8C,mBAAmB,IAAI,EAClG,sBAAsB,mBAAmB,eAAe,mBAAmB,oEAAoE,CAChJ,CAAC;IACJ,CAAC;IAED,IAAI,CAAC,MAAM,CAAC,aAAa,EAAE,CAAC;QAC1B,KAAK,CAAC,IAAI,CACR,MAAM,CAAC,WAAW;YAChB,CAAC,CAAC,QAAQ,MAAM,CAAC,WAAW,gCAAgC,mBAAmB,IAAI;YACnF,CAAC,CAAC,6BAA6B,EACjC,wBAAwB,EACxB,gCAAgC,mBAAmB,aAAa,CACjE,CAAC;IACJ,CAAC;IAED,IAAI,MAAM,CAAC,kBAAkB,EAAE,SAAS,IAAI,MAAM,CAAC,kBAAkB,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACxF,KAAK,CAAC,IAAI,CACR,GAAG,MAAM,CAAC,kBAAkB,CAAC,MAAM,EACnC,+DAA+D,EAC/D,0HAA0H,CAC3H,CAAC;IACJ,CAAC;IAED,IAAI,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAC;QACrB,KAAK,CAAC,IAAI,CAAC,uCAAuC,CAAC,CAAC;QACpD,KAAK,MAAM,KAAK,IAAI,MAAM,CAAC,SAAS,EAAE,CAAC;YACrC,KAAK,CAAC,IAAI,CAAC,sBAAsB,KAAK,EAAE,CAAC,CAAC;QAC5C,CAAC;IACH,CAAC;IAED,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,iBAAiB,EAAE,CAAC;QACpC,KAAK,CAAC,IAAI,CACR,iCAAiC,MAAM,CAAC,KAAK,CAAC,eAAe,GAAG,EAChE,2FAA2F,CAC5F,CAAC;IACJ,CAAC;IAED,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,sBAAsB,EAAE,CAAC;QACzC,KAAK,CAAC,IAAI,CACR,yCAAyC,MAAM,CAAC,KAAK,CAAC,oBAAoB,GAAG,EAC7E,uFAAuF,CACxF,CAAC;IACJ,CAAC;IAED,IAAI,CAAC,SAAS,EAAE,CAAC;QACf,KAAK,CAAC,IAAI,CACR,qCAAqC,MAAM,CAAC,UAAU,oBAAoB,MAAM,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,EAC9H,mHAAmH,EACnH,wHAAwH,EACxH,kHAAkH,EAClH,kIAAkI,CACnI,CAAC;IACJ,CAAC;SAAM,IAAI,SAAS,CAAC,IAAI,KAAK,MAAM,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC;QAC1D,KAAK,CAAC,IAAI,CACR,2CAA2C,SAAS,CAAC,IAAI,yCAAyC,MAAM,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE,IAAI,IAAI,EACjI,0BAA0B,SAAS,CAAC,IAAI,kDAAkD,CAC3F,CAAC;IACJ,CAAC;IAED,IAAI,MAAM,CAAC,aAAa,EAAE,QAAQ,CAAC,MAAM,EAAE,CAAC;QAC1C,KAAK,CAAC,IAAI,CAAC,kCAAkC,CAAC,CAAC;QAC/C,KAAK,MAAM,OAAO,IAAI,MAAM,CAAC,aAAa,CAAC,QAAQ,EAAE,CAAC;YACpD,KAAK,CAAC,IAAI,CAAC,UAAU,OAAO,EAAE,CAAC,CAAC;QAClC,CAAC;IACH,CAAC;IAED,IAAI,MAAM,CAAC,iBAAiB,EAAE,CAAC;QAC7B,KAAK,MAAM,CAAC,IAAI,EAAE,MAAM,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,iBAAiB,CAAC,EAAE,CAAC;YACtE,IAAI,MAAM,CAAC,gBAAgB,KAAK,SAAS,EAAE,CAAC;gBAC1C,KAAK,CAAC,IAAI,CACR,GAAG,IAAI,uDAAuD,MAAM,CAAC,IAAI,IAAI,EAC7E,kBAAkB,IAAI,8FAA8F,CACrH,CAAC;YACJ,CAAC;QACH,CAAC;IACH,CAAC;IAED,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACvB,KAAK,CAAC,IAAI,CAAC,sCAAsC,CAAC,CAAC;IACrD,CAAC;IAED,OAAO,KAAK,CAAC;AACf,CAAC;AAED,MAAM,UAAU,kBAAkB,CAAC,MAAoB,EAAE,OAA2B;IAClF,MAAM,SAAS,GAAG,MAAM,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;IACpE,MAAM,YAAY,GAAG,SAAS;QAC5B,CAAC,CAAC,gBAAgB,MAAM,CAAC,UAAU,IAAI,SAAS,CAAC,IAAI,EAAE;QACvD,CAAC,CAAC,cAAc,MAAM,CAAC,UAAU,IAAI,MAAM,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC;IAE/F,MAAM,OAAO,GAAG,MAAM,CAAC,iBAAiB;QACtC,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,iBAAiB,CAAC;aACrC,GAAG,CACF,CAAC,CAAC,IAAI,EAAE,MAAM,CAAC,EAAE,EAAE,CACjB,GAAG,IAAI,KAAK,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,UAAU,MAAM,MAAM,CAAC,UAAU,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,SAAS,MAAM,MAAM,CAAC,gBAAgB,MAAM,MAAM,CAAC,IAAI,EAAE,CACxJ;aACA,IAAI,CAAC,IAAI,CAAC;QACf,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,iBAAiB,CAAC;aACrC,GAAG,CAAC,CAAC,CAAC,IAAI,EAAE,YAAY,CAAC,EAAE,EAAE,CAAC,GAAG,IAAI,KAAK,YAAY,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,SAAS,EAAE,CAAC;aACpF,IAAI,CAAC,IAAI,CAAC,CAAC;IAElB,MAAM,QAAQ,GAAG,MAAM,CAAC,UAAU;QAChC,CAAC,CAAC,YAAY,MAAM,CAAC,UAAU,CAAC,OAAO,UAAU,MAAM,CAAC,UAAU,CAAC,OAAO,MAAM,MAAM,CAAC,UAAU,CAAC,KAAK,gBAAgB;QACvH,CAAC,CAAC,4BAA4B,CAAC;IAEjC,MAAM,gBAAgB,GAAG,MAAM,CAAC,aAAa;QAC3C,CAAC,CAAC,GAAG,MAAM,CAAC,aAAa,CAAC,OAAO,gBAAgB,MAAM,CAAC,aAAa,CAAC,SAAS,cAAc,MAAM,CAAC,aAAa,CAAC,uBAAuB,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,aAAa,YAAY,MAAM,CAAC,aAAa,CAAC,YAAY,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,UAAU,GAAG,MAAM,CAAC,aAAa,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,eAAe,MAAM,CAAC,aAAa,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE;QACpV,CAAC,CAAC,sCAAsC,CAAC;IAC3C,IAAI,UAAU,GAAG,SAAS,CAAC;IAC3B,IAAI,MAAM,CAAC,WAAW;QAAE,UAAU,GAAG,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,aAAa,CAAC;IACjF,MAAM,iBAAiB,GAAG,MAAM,CAAC,WAAW,CAAC,CAAC,CAAC,IAAI,MAAM,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;IAE7E,MAAM,KAAK,GAAG;QACZ,wBAAwB;QACxB,EAAE;QACF,YAAY,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,aAAa,IAAI,MAAM,CAAC,WAAW,6BAA6B,mBAAmB,GAAG;QAChI,SAAS,UAAU,GAAG,iBAAiB,eAAe,mBAAmB,GAAG;QAC5E,gBAAgB,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,GAAG,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE;QAC5G,qBAAqB,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,iBAAiB,CAAC,IAAI,MAAM,CAAC,KAAK,CAAC,eAAe,EAAE;QAC7F,8BAA8B,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,sBAAsB,CAAC,IAAI,MAAM,CAAC,KAAK,CAAC,oBAAoB,EAAE;QAChH,GAAG,CAAC,MAAM,CAAC,kBAAkB,EAAE,SAAS;YACtC,CAAC,CAAC;gBACE,yBAAyB,MAAM,CAAC,kBAAkB,CAAC,MAAM,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,QAAQ,IAAI,MAAM,CAAC,kBAAkB,CAAC,QAAQ,IAAI,MAAM,CAAC,kBAAkB,CAAC,SAAS,IAAI,MAAM,CAAC,kBAAkB,CAAC,QAAQ,EAAE;gBAC7M,GAAG,MAAM,CAAC,kBAAkB,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,yBAAyB,KAAK,EAAE,CAAC;aACrF;YACH,CAAC,CAAC,EAAE,CAAC;QACP,kBAAkB,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,IAAI,YAAY,EAAE;QAC7D,mBAAmB,gBAAgB,EAAE;QACrC,GAAG,CAAC,MAAM,CAAC,aAAa,EAAE,QAAQ,CAAC,MAAM;YACvC,CAAC,CAAC,MAAM,CAAC,aAAa,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,mBAAmB,OAAO,EAAE,CAAC;YAC9E,CAAC,CAAC,EAAE,CAAC;QACP,UAAU,QAAQ,EAAE;QACpB,YAAY,OAAO,EAAE;QACrB,EAAE;QACF,SAAS;YACP,CAAC,CAAC,6GAA6G;YAC/G,CAAC,CAAC,gGAAgG;KACrG,CAAC;IAEF,IAAI,OAAO,EAAE,GAAG,EAAE,CAAC;QACjB,KAAK,CAAC,IAAI,CAAC,EAAE,EAAE,kBAAkB,EAAE,GAAG,mBAAmB,CAAC,MAAM,CAAC,CAAC,CAAC;IACrE,CAAC;IAED,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC1B,CAAC;AAED,MAAM,UAAU,UAAU;IACxB,OAAO;QACL,iBAAiB;QACjB,EAAE;QACF,QAAQ;QACR,iFAAiF;QACjF,EAAE;QACF,8EAA8E;QAC9E,EAAE;QACF,6EAA6E;QAC7E,2FAA2F;QAC3F,4CAA4C;QAC5C,EAAE;QACF,6FAA6F;QAC7F,2DAA2D;QAC3D,kEAAkE;QAClE,EAAE;QACF,iFAAiF;QACjF,2FAA2F;QAC3F,sFAAsF;QACtF,sEAAsE;QACtE,EAAE;QACF,WAAW;QACX,6EAA6E;QAC7E,yEAAyE;QACzE,+EAA+E;QAC/E,6EAA6E;KAC9E,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACf,CAAC;AAED,MAAM,UAAU,aAAa,CAAC,WAAW,GAAG,kBAAkB,EAAE;IAC9D,MAAM,WAAW,GAAG,eAAe,CAAC,WAAW,CAAC,CAAC;IACjD,OAAO,GAAG,WAAW,CAAC,IAAI,IAAI,WAAW,CAAC,OAAO,EAAE,CAAC;AACtD,CAAC;AAED,KAAK,UAAU,YAAY,CAAC,IAAY,EAAE,IAAY,EAAE,SAAS,GAAG,IAAI;IACtE,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE;QAC7B,MAAM,MAAM,GAAG,gBAAgB,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC;QAChD,IAAI,OAAO,GAAG,KAAK,CAAC;QAEpB,MAAM,MAAM,GAAG,CAAC,SAAkB,EAAQ,EAAE;YAC1C,IAAI,OAAO;gBAAE,OAAO;YACpB,OAAO,GAAG,IAAI,CAAC;YACf,MAAM,CAAC,OAAO,EAAE,CAAC;YACjB,OAAO,CAAC,SAAS,CAAC,CAAC;QACrB,CAAC,CAAC;QAEF,MAAM,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC;QAC7B,MAAM,CAAC,IAAI,CAAC,SAAS,EAAE,GAAG,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC;QAC3C,MAAM,CAAC,IAAI,CAAC,SAAS,EAAE,GAAG,EAAE,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;QAC5C,MAAM,CAAC,IAAI,CAAC,OAAO,EAAE,GAAG,EAAE,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;IAC5C,CAAC,CAAC,CAAC;AACL,CAAC;AAED,SAAS,WAAW;IAClB,MAAM,MAAM,GAAG,SAAS,CAAC,SAAS,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;IAChD,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;QACpB,OAAO;YACL,MAAM,EAAE,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,KAAK,CAAC,OAAO,EAAE,CAAC;SACxF,CAAC;IACJ,CAAC;IAED,MAAM,MAAM,GAAG,2BAA2B,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;IACxD,MAAM,kBAAkB,GAAG,2BAA2B,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;IACpE,IAAI,kBAAkB;QAAE,MAAM,CAAC,OAAO,CAAC,kBAAkB,CAAC,CAAC;IAC3D,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC;QAAE,OAAO,EAAE,MAAM,EAAE,CAAC;IAEzC,OAAO,EAAE,MAAM,EAAE,MAAM,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,EAAE,CAAC;AAC7C,CAAC;AAED,SAAS,eAAe,CAAC,WAAmB;IAC1C,MAAM,GAAG,GAAG,YAAY,CAAC,IAAI,CAAC,WAAW,EAAE,cAAc,CAAC,EAAE,MAAM,CAAC,CAAC;IACpE,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAyB,CAAC;IACvD,OAAO;QACL,IAAI,EAAE,MAAM,CAAC,IAAI,IAAI,iBAAiB;QACtC,OAAO,EAAE,MAAM,CAAC,OAAO,IAAI,OAAO;KACnC,CAAC;AACJ,CAAC;AAED,SAAS,MAAM,CAAC,EAAW;IACzB,OAAO,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC;AAC/B,CAAC;AAED,SAAS,eAAe,CAAC,KAAc;IACrC,OAAO,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;AACxC,CAAC"}
@@ -1,15 +1,17 @@
1
+ import { getFeatureMaturity } from './feature-maturity.js';
1
2
  export function loadFeatureFlags(config) {
3
+ const maturity = getFeatureMaturity(config);
2
4
  return {
3
- mcpTasksEnabled: config.MCP_TASKS_ENABLED,
4
- mcpAppsEnabled: config.MCP_APPS_ENABLED,
5
- mcpV2Experimental: config.MCP_V2_EXPERIMENTAL,
5
+ mcpTasksEnabled: maturity.mcp_tasks.effective,
6
+ mcpAppsEnabled: maturity.mcp_apps.effective,
7
+ mcpV2Experimental: maturity.mcp_v2.effective,
6
8
  jlcpcbOrderingEnabled: config.JLCPCB_ENABLE_ORDERING,
7
9
  jlcsearchEnabled: config.JLCSEARCH_ENABLED,
8
10
  mouserEnabled: config.MOUSER_ENABLED,
9
11
  digikeyEnabled: config.DIGIKEY_ENABLED,
10
- oauthEnabled: config.OAUTH_ENABLED,
11
- otelEnabled: config.OTEL_ENABLED,
12
- aiEnabled: config.AI_PROVIDER !== 'none',
12
+ oauthEnabled: maturity.oauth.effective,
13
+ otelEnabled: maturity.otel_export.effective,
14
+ aiEnabled: maturity.ai_provider.effective,
13
15
  devBridge: config.EASYEDA_DEV_BRIDGE,
14
16
  bridgeRawExecEnabled: config.BRIDGE_RAW_EXEC_ENABLED,
15
17
  rawExecExperimental: config.MCP_RAW_EXEC_EXPERIMENTAL,
@@ -1 +1 @@
1
- {"version":3,"file":"feature-flags.js","sourceRoot":"","sources":["../../src/config/feature-flags.ts"],"names":[],"mappings":"AAkBA,MAAM,UAAU,gBAAgB,CAAC,MAAiB;IAChD,OAAO;QACL,eAAe,EAAE,MAAM,CAAC,iBAAiB;QACzC,cAAc,EAAE,MAAM,CAAC,gBAAgB;QACvC,iBAAiB,EAAE,MAAM,CAAC,mBAAmB;QAC7C,qBAAqB,EAAE,MAAM,CAAC,sBAAsB;QACpD,gBAAgB,EAAE,MAAM,CAAC,iBAAiB;QAC1C,aAAa,EAAE,MAAM,CAAC,cAAc;QACpC,cAAc,EAAE,MAAM,CAAC,eAAe;QACtC,YAAY,EAAE,MAAM,CAAC,aAAa;QAClC,WAAW,EAAE,MAAM,CAAC,YAAY;QAChC,SAAS,EAAE,MAAM,CAAC,WAAW,KAAK,MAAM;QACxC,SAAS,EAAE,MAAM,CAAC,kBAAkB;QACpC,oBAAoB,EAAE,MAAM,CAAC,uBAAuB;QACpD,mBAAmB,EAAE,MAAM,CAAC,yBAAyB;KACtD,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"feature-flags.js","sourceRoot":"","sources":["../../src/config/feature-flags.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,kBAAkB,EAAE,MAAM,uBAAuB,CAAC;AAkB3D,MAAM,UAAU,gBAAgB,CAAC,MAAiB;IAChD,MAAM,QAAQ,GAAG,kBAAkB,CAAC,MAAM,CAAC,CAAC;IAC5C,OAAO;QACL,eAAe,EAAE,QAAQ,CAAC,SAAS,CAAC,SAAS;QAC7C,cAAc,EAAE,QAAQ,CAAC,QAAQ,CAAC,SAAS;QAC3C,iBAAiB,EAAE,QAAQ,CAAC,MAAM,CAAC,SAAS;QAC5C,qBAAqB,EAAE,MAAM,CAAC,sBAAsB;QACpD,gBAAgB,EAAE,MAAM,CAAC,iBAAiB;QAC1C,aAAa,EAAE,MAAM,CAAC,cAAc;QACpC,cAAc,EAAE,MAAM,CAAC,eAAe;QACtC,YAAY,EAAE,QAAQ,CAAC,KAAK,CAAC,SAAS;QACtC,WAAW,EAAE,QAAQ,CAAC,WAAW,CAAC,SAAS;QAC3C,SAAS,EAAE,QAAQ,CAAC,WAAW,CAAC,SAAS;QACzC,SAAS,EAAE,MAAM,CAAC,kBAAkB;QACpC,oBAAoB,EAAE,MAAM,CAAC,uBAAuB;QACpD,mBAAmB,EAAE,MAAM,CAAC,yBAAyB;KACtD,CAAC;AACJ,CAAC"}
@@ -0,0 +1,25 @@
1
+ import { type EnvConfig } from './env.js';
2
+ export type FeatureMaturity = 'implemented' | 'experimental' | 'reserved';
3
+ export interface FeatureMaturityEntry {
4
+ maturity: FeatureMaturity;
5
+ configured: boolean;
6
+ effective: boolean;
7
+ note: string;
8
+ }
9
+ export interface FeatureMaturityReport {
10
+ mcp_tasks: FeatureMaturityEntry;
11
+ mcp_apps: FeatureMaturityEntry;
12
+ mcp_v2: FeatureMaturityEntry;
13
+ ai_provider: FeatureMaturityEntry;
14
+ otel_export: FeatureMaturityEntry;
15
+ remote_relay: FeatureMaturityEntry;
16
+ raw_execution: FeatureMaturityEntry;
17
+ oauth: FeatureMaturityEntry;
18
+ [key: string]: FeatureMaturityEntry;
19
+ }
20
+ /**
21
+ * Describe user-visible configuration independently from whether a value was set.
22
+ * Reserved settings remain parseable for compatibility but cannot be reported as
23
+ * active until a runtime implementation consumes them.
24
+ */
25
+ export declare function getFeatureMaturity(config: EnvConfig): FeatureMaturityReport;
@@ -0,0 +1,60 @@
1
+ /**
2
+ * Describe user-visible configuration independently from whether a value was set.
3
+ * Reserved settings remain parseable for compatibility but cannot be reported as
4
+ * active until a runtime implementation consumes them.
5
+ */
6
+ export function getFeatureMaturity(config) {
7
+ return {
8
+ mcp_tasks: {
9
+ maturity: 'reserved',
10
+ configured: config.MCP_TASKS_ENABLED,
11
+ effective: false,
12
+ note: 'The setting is reserved; this server does not advertise or execute MCP Tasks.',
13
+ },
14
+ mcp_apps: {
15
+ maturity: 'reserved',
16
+ configured: config.MCP_APPS_ENABLED,
17
+ effective: false,
18
+ note: 'The setting is reserved; no MCP Apps UI/resource runtime is registered.',
19
+ },
20
+ mcp_v2: {
21
+ maturity: 'reserved',
22
+ configured: config.MCP_V2_EXPERIMENTAL,
23
+ effective: false,
24
+ note: 'The setting is reserved and does not change the negotiated MCP protocol.',
25
+ },
26
+ ai_provider: {
27
+ maturity: 'reserved',
28
+ configured: config.AI_PROVIDER !== 'none',
29
+ effective: false,
30
+ note: 'Provider/model settings are reserved; no in-process AI provider is invoked.',
31
+ },
32
+ otel_export: {
33
+ maturity: 'reserved',
34
+ configured: config.OTEL_ENABLED,
35
+ effective: false,
36
+ note: 'OTLP settings are reserved; the current observability path is local structured metrics.',
37
+ },
38
+ remote_relay: {
39
+ maturity: 'experimental',
40
+ configured: config.MCP_BRIDGE_BACKEND === 'remote_relay',
41
+ effective: config.MCP_BRIDGE_BACKEND === 'remote_relay',
42
+ note: 'The paired relay path is implemented behind explicit configuration and is not Beta.',
43
+ },
44
+ raw_execution: {
45
+ maturity: 'experimental',
46
+ configured: config.MCP_RAW_EXEC_EXPERIMENTAL || config.BRIDGE_RAW_EXEC_ENABLED,
47
+ effective: config.NODE_ENV !== 'production' &&
48
+ config.MCP_RAW_EXEC_EXPERIMENTAL &&
49
+ config.BRIDGE_RAW_EXEC_ENABLED,
50
+ note: 'Raw execution requires both development-only gates and remains quarantined.',
51
+ },
52
+ oauth: {
53
+ maturity: 'implemented',
54
+ configured: config.OAUTH_ENABLED,
55
+ effective: config.OAUTH_ENABLED,
56
+ note: 'OAuth/JWKS validation is implemented and mandatory for non-loopback HTTP.',
57
+ },
58
+ };
59
+ }
60
+ //# sourceMappingURL=feature-maturity.js.map