@defai.digital/ax-cli 4.4.7 → 4.4.10
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/bin/ax-cli +1 -5
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +158 -9
- package/dist/index.js.map +1 -1
- package/dist/setup.d.ts +27 -0
- package/dist/setup.d.ts.map +1 -0
- package/dist/setup.js +591 -0
- package/dist/setup.js.map +1 -0
- package/package.json +43 -135
- package/LICENSE +0 -22
- package/README.md +0 -420
- package/config-defaults/messages.yaml +0 -75
- package/config-defaults/models.yaml +0 -57
- package/config-defaults/prompts.yaml +0 -948
- package/config-defaults/settings.yaml +0 -157
- package/dist/agent/agent-executor.d.ts +0 -61
- package/dist/agent/agent-executor.js +0 -194
- package/dist/agent/agent-executor.js.map +0 -1
- package/dist/agent/agent-router.d.ts +0 -68
- package/dist/agent/agent-router.js +0 -242
- package/dist/agent/agent-router.js.map +0 -1
- package/dist/agent/context-manager.d.ts +0 -122
- package/dist/agent/context-manager.js +0 -406
- package/dist/agent/context-manager.js.map +0 -1
- package/dist/agent/core/index.d.ts +0 -8
- package/dist/agent/core/index.js +0 -9
- package/dist/agent/core/index.js.map +0 -1
- package/dist/agent/core/types.d.ts +0 -92
- package/dist/agent/core/types.js +0 -11
- package/dist/agent/core/types.js.map +0 -1
- package/dist/agent/dependency-resolver.d.ts +0 -90
- package/dist/agent/dependency-resolver.js +0 -366
- package/dist/agent/dependency-resolver.js.map +0 -1
- package/dist/agent/execution/index.d.ts +0 -9
- package/dist/agent/execution/index.js +0 -9
- package/dist/agent/execution/index.js.map +0 -1
- package/dist/agent/execution/tool-executor.d.ts +0 -93
- package/dist/agent/execution/tool-executor.js +0 -552
- package/dist/agent/execution/tool-executor.js.map +0 -1
- package/dist/agent/index.d.ts +0 -14
- package/dist/agent/index.js +0 -145
- package/dist/agent/index.js.map +0 -1
- package/dist/agent/llm-agent.d.ts +0 -368
- package/dist/agent/llm-agent.js +0 -1931
- package/dist/agent/llm-agent.js.map +0 -1
- package/dist/agent/loop-detector.d.ts +0 -72
- package/dist/agent/loop-detector.js +0 -335
- package/dist/agent/loop-detector.js.map +0 -1
- package/dist/agent/parallel-tools.d.ts +0 -69
- package/dist/agent/parallel-tools.js +0 -188
- package/dist/agent/parallel-tools.js.map +0 -1
- package/dist/agent/planning/index.d.ts +0 -9
- package/dist/agent/planning/index.js +0 -9
- package/dist/agent/planning/index.js.map +0 -1
- package/dist/agent/planning/plan-executor.d.ts +0 -79
- package/dist/agent/planning/plan-executor.js +0 -240
- package/dist/agent/planning/plan-executor.js.map +0 -1
- package/dist/agent/progress-tracker.d.ts +0 -94
- package/dist/agent/progress-tracker.js +0 -225
- package/dist/agent/progress-tracker.js.map +0 -1
- package/dist/agent/specialized/analysis-agent.d.ts +0 -11
- package/dist/agent/specialized/analysis-agent.js +0 -24
- package/dist/agent/specialized/analysis-agent.js.map +0 -1
- package/dist/agent/specialized/debug-agent.d.ts +0 -11
- package/dist/agent/specialized/debug-agent.js +0 -46
- package/dist/agent/specialized/debug-agent.js.map +0 -1
- package/dist/agent/specialized/documentation-agent.d.ts +0 -11
- package/dist/agent/specialized/documentation-agent.js +0 -24
- package/dist/agent/specialized/documentation-agent.js.map +0 -1
- package/dist/agent/specialized/index.d.ts +0 -11
- package/dist/agent/specialized/index.js +0 -12
- package/dist/agent/specialized/index.js.map +0 -1
- package/dist/agent/specialized/performance-agent.d.ts +0 -11
- package/dist/agent/specialized/performance-agent.js +0 -24
- package/dist/agent/specialized/performance-agent.js.map +0 -1
- package/dist/agent/specialized/refactoring-agent.d.ts +0 -11
- package/dist/agent/specialized/refactoring-agent.js +0 -24
- package/dist/agent/specialized/refactoring-agent.js.map +0 -1
- package/dist/agent/specialized/testing-agent.d.ts +0 -11
- package/dist/agent/specialized/testing-agent.js +0 -24
- package/dist/agent/specialized/testing-agent.js.map +0 -1
- package/dist/agent/status-reporter.d.ts +0 -114
- package/dist/agent/status-reporter.js +0 -335
- package/dist/agent/status-reporter.js.map +0 -1
- package/dist/agent/streaming/index.d.ts +0 -9
- package/dist/agent/streaming/index.js +0 -9
- package/dist/agent/streaming/index.js.map +0 -1
- package/dist/agent/streaming/stream-handler.d.ts +0 -62
- package/dist/agent/streaming/stream-handler.js +0 -217
- package/dist/agent/streaming/stream-handler.js.map +0 -1
- package/dist/agent/subagent-orchestrator.d.ts +0 -166
- package/dist/agent/subagent-orchestrator.js +0 -487
- package/dist/agent/subagent-orchestrator.js.map +0 -1
- package/dist/agent/subagent-types.d.ts +0 -261
- package/dist/agent/subagent-types.js +0 -257
- package/dist/agent/subagent-types.js.map +0 -1
- package/dist/agent/subagent.d.ts +0 -116
- package/dist/agent/subagent.js +0 -507
- package/dist/agent/subagent.js.map +0 -1
- package/dist/checkpoint/index.d.ts +0 -9
- package/dist/checkpoint/index.js +0 -11
- package/dist/checkpoint/index.js.map +0 -1
- package/dist/checkpoint/manager.d.ts +0 -101
- package/dist/checkpoint/manager.js +0 -407
- package/dist/checkpoint/manager.js.map +0 -1
- package/dist/checkpoint/storage.d.ts +0 -39
- package/dist/checkpoint/storage.js +0 -350
- package/dist/checkpoint/storage.js.map +0 -1
- package/dist/checkpoint/types.d.ts +0 -111
- package/dist/checkpoint/types.js +0 -17
- package/dist/checkpoint/types.js.map +0 -1
- package/dist/commands/cache.d.ts +0 -7
- package/dist/commands/cache.js +0 -284
- package/dist/commands/cache.js.map +0 -1
- package/dist/commands/custom-commands.d.ts +0 -77
- package/dist/commands/custom-commands.js +0 -251
- package/dist/commands/custom-commands.js.map +0 -1
- package/dist/commands/design.d.ts +0 -18
- package/dist/commands/design.js +0 -511
- package/dist/commands/design.js.map +0 -1
- package/dist/commands/doctor.d.ts +0 -6
- package/dist/commands/doctor.js +0 -773
- package/dist/commands/doctor.js.map +0 -1
- package/dist/commands/frontend.d.ts +0 -9
- package/dist/commands/frontend.js +0 -645
- package/dist/commands/frontend.js.map +0 -1
- package/dist/commands/init/wizard.d.ts +0 -55
- package/dist/commands/init/wizard.js +0 -189
- package/dist/commands/init/wizard.js.map +0 -1
- package/dist/commands/init.d.ts +0 -8
- package/dist/commands/init.js +0 -195
- package/dist/commands/init.js.map +0 -1
- package/dist/commands/mcp-migrate.d.ts +0 -9
- package/dist/commands/mcp-migrate.js +0 -175
- package/dist/commands/mcp-migrate.js.map +0 -1
- package/dist/commands/mcp.d.ts +0 -2
- package/dist/commands/mcp.js +0 -1292
- package/dist/commands/mcp.js.map +0 -1
- package/dist/commands/memory.d.ts +0 -6
- package/dist/commands/memory.js +0 -555
- package/dist/commands/memory.js.map +0 -1
- package/dist/commands/models.d.ts +0 -5
- package/dist/commands/models.js +0 -213
- package/dist/commands/models.js.map +0 -1
- package/dist/commands/plan.d.ts +0 -43
- package/dist/commands/plan.js +0 -362
- package/dist/commands/plan.js.map +0 -1
- package/dist/commands/rewind.d.ts +0 -19
- package/dist/commands/rewind.js +0 -221
- package/dist/commands/rewind.js.map +0 -1
- package/dist/commands/setup.d.ts +0 -14
- package/dist/commands/setup.js +0 -733
- package/dist/commands/setup.js.map +0 -1
- package/dist/commands/status.d.ts +0 -7
- package/dist/commands/status.js +0 -437
- package/dist/commands/status.js.map +0 -1
- package/dist/commands/templates.d.ts +0 -5
- package/dist/commands/templates.js +0 -245
- package/dist/commands/templates.js.map +0 -1
- package/dist/commands/update.d.ts +0 -49
- package/dist/commands/update.js +0 -366
- package/dist/commands/update.js.map +0 -1
- package/dist/commands/usage.d.ts +0 -8
- package/dist/commands/usage.js +0 -264
- package/dist/commands/usage.js.map +0 -1
- package/dist/commands/vscode.d.ts +0 -7
- package/dist/commands/vscode.js +0 -419
- package/dist/commands/vscode.js.map +0 -1
- package/dist/constants.d.ts +0 -236
- package/dist/constants.js +0 -288
- package/dist/constants.js.map +0 -1
- package/dist/design/figma-alias.d.ts +0 -170
- package/dist/design/figma-alias.js +0 -577
- package/dist/design/figma-alias.js.map +0 -1
- package/dist/design/figma-audit.d.ts +0 -40
- package/dist/design/figma-audit.js +0 -383
- package/dist/design/figma-audit.js.map +0 -1
- package/dist/design/figma-client.d.ts +0 -131
- package/dist/design/figma-client.js +0 -369
- package/dist/design/figma-client.js.map +0 -1
- package/dist/design/figma-map.d.ts +0 -29
- package/dist/design/figma-map.js +0 -346
- package/dist/design/figma-map.js.map +0 -1
- package/dist/design/figma-tokens.d.ts +0 -73
- package/dist/design/figma-tokens.js +0 -448
- package/dist/design/figma-tokens.js.map +0 -1
- package/dist/design/index.d.ts +0 -13
- package/dist/design/index.js +0 -20
- package/dist/design/index.js.map +0 -1
- package/dist/design/types.d.ts +0 -98
- package/dist/design/types.js +0 -9
- package/dist/design/types.js.map +0 -1
- package/dist/hooks/hook-runner.d.ts +0 -142
- package/dist/hooks/hook-runner.js +0 -436
- package/dist/hooks/hook-runner.js.map +0 -1
- package/dist/hooks/index.d.ts +0 -9
- package/dist/hooks/index.js +0 -10
- package/dist/hooks/index.js.map +0 -1
- package/dist/hooks/manager.d.ts +0 -84
- package/dist/hooks/manager.js +0 -348
- package/dist/hooks/manager.js.map +0 -1
- package/dist/hooks/types.d.ts +0 -134
- package/dist/hooks/types.js +0 -9
- package/dist/hooks/types.js.map +0 -1
- package/dist/index.d.ts +0 -2
- package/dist/ipc/index.d.ts +0 -9
- package/dist/ipc/index.js +0 -10
- package/dist/ipc/index.js.map +0 -1
- package/dist/ipc/vscode-client.d.ts +0 -200
- package/dist/ipc/vscode-client.js +0 -495
- package/dist/ipc/vscode-client.js.map +0 -1
- package/dist/llm/client.d.ts +0 -205
- package/dist/llm/client.js +0 -735
- package/dist/llm/client.js.map +0 -1
- package/dist/llm/tools.d.ts +0 -102
- package/dist/llm/tools.js +0 -275
- package/dist/llm/tools.js.map +0 -1
- package/dist/llm/types.d.ts +0 -428
- package/dist/llm/types.js +0 -194
- package/dist/llm/types.js.map +0 -1
- package/dist/mcp/automatosx-auto-discovery.d.ts +0 -66
- package/dist/mcp/automatosx-auto-discovery.js +0 -169
- package/dist/mcp/automatosx-auto-discovery.js.map +0 -1
- package/dist/mcp/automatosx-loader.d.ts +0 -99
- package/dist/mcp/automatosx-loader.js +0 -250
- package/dist/mcp/automatosx-loader.js.map +0 -1
- package/dist/mcp/cancellation.d.ts +0 -182
- package/dist/mcp/cancellation.js +0 -275
- package/dist/mcp/cancellation.js.map +0 -1
- package/dist/mcp/client-v2.d.ts +0 -500
- package/dist/mcp/client-v2.js +0 -1433
- package/dist/mcp/client-v2.js.map +0 -1
- package/dist/mcp/client.d.ts +0 -170
- package/dist/mcp/client.js +0 -232
- package/dist/mcp/client.js.map +0 -1
- package/dist/mcp/config-detector.d.ts +0 -90
- package/dist/mcp/config-detector.js +0 -250
- package/dist/mcp/config-detector.js.map +0 -1
- package/dist/mcp/config-migrator.d.ts +0 -68
- package/dist/mcp/config-migrator.js +0 -291
- package/dist/mcp/config-migrator.js.map +0 -1
- package/dist/mcp/config.d.ts +0 -24
- package/dist/mcp/config.js +0 -273
- package/dist/mcp/config.js.map +0 -1
- package/dist/mcp/constants.d.ts +0 -66
- package/dist/mcp/constants.js +0 -85
- package/dist/mcp/constants.js.map +0 -1
- package/dist/mcp/content-length-transport.d.ts +0 -106
- package/dist/mcp/content-length-transport.js +0 -413
- package/dist/mcp/content-length-transport.js.map +0 -1
- package/dist/mcp/debug.d.ts +0 -211
- package/dist/mcp/debug.js +0 -404
- package/dist/mcp/debug.js.map +0 -1
- package/dist/mcp/error-formatter.d.ts +0 -40
- package/dist/mcp/error-formatter.js +0 -207
- package/dist/mcp/error-formatter.js.map +0 -1
- package/dist/mcp/error-remediation.d.ts +0 -45
- package/dist/mcp/error-remediation.js +0 -291
- package/dist/mcp/error-remediation.js.map +0 -1
- package/dist/mcp/health.d.ts +0 -120
- package/dist/mcp/health.js +0 -267
- package/dist/mcp/health.js.map +0 -1
- package/dist/mcp/index.d.ts +0 -56
- package/dist/mcp/index.js +0 -89
- package/dist/mcp/index.js.map +0 -1
- package/dist/mcp/invariants.d.ts +0 -141
- package/dist/mcp/invariants.js +0 -243
- package/dist/mcp/invariants.js.map +0 -1
- package/dist/mcp/mutex-safe.d.ts +0 -151
- package/dist/mcp/mutex-safe.js +0 -260
- package/dist/mcp/mutex-safe.js.map +0 -1
- package/dist/mcp/progress.d.ts +0 -155
- package/dist/mcp/progress.js +0 -252
- package/dist/mcp/progress.js.map +0 -1
- package/dist/mcp/prompts.d.ts +0 -68
- package/dist/mcp/prompts.js +0 -129
- package/dist/mcp/prompts.js.map +0 -1
- package/dist/mcp/provider-mcp-loader.d.ts +0 -130
- package/dist/mcp/provider-mcp-loader.js +0 -292
- package/dist/mcp/provider-mcp-loader.js.map +0 -1
- package/dist/mcp/reconnection.d.ts +0 -101
- package/dist/mcp/reconnection.js +0 -253
- package/dist/mcp/reconnection.js.map +0 -1
- package/dist/mcp/registry.d.ts +0 -75
- package/dist/mcp/registry.js +0 -276
- package/dist/mcp/registry.js.map +0 -1
- package/dist/mcp/resources.d.ts +0 -58
- package/dist/mcp/resources.js +0 -144
- package/dist/mcp/resources.js.map +0 -1
- package/dist/mcp/schema-validator.d.ts +0 -82
- package/dist/mcp/schema-validator.js +0 -161
- package/dist/mcp/schema-validator.js.map +0 -1
- package/dist/mcp/ssrf-protection.d.ts +0 -86
- package/dist/mcp/ssrf-protection.js +0 -311
- package/dist/mcp/ssrf-protection.js.map +0 -1
- package/dist/mcp/subscriptions.d.ts +0 -168
- package/dist/mcp/subscriptions.js +0 -248
- package/dist/mcp/subscriptions.js.map +0 -1
- package/dist/mcp/templates.d.ts +0 -52
- package/dist/mcp/templates.js +0 -627
- package/dist/mcp/templates.js.map +0 -1
- package/dist/mcp/transports.d.ts +0 -80
- package/dist/mcp/transports.js +0 -237
- package/dist/mcp/transports.js.map +0 -1
- package/dist/mcp/type-safety.d.ts +0 -225
- package/dist/mcp/type-safety.js +0 -237
- package/dist/mcp/type-safety.js.map +0 -1
- package/dist/mcp/validation.d.ts +0 -29
- package/dist/mcp/validation.js +0 -339
- package/dist/mcp/validation.js.map +0 -1
- package/dist/mcp/zai-detector.d.ts +0 -63
- package/dist/mcp/zai-detector.js +0 -193
- package/dist/mcp/zai-detector.js.map +0 -1
- package/dist/mcp/zai-templates.d.ts +0 -90
- package/dist/mcp/zai-templates.js +0 -157
- package/dist/mcp/zai-templates.js.map +0 -1
- package/dist/memory/context-generator.d.ts +0 -84
- package/dist/memory/context-generator.js +0 -546
- package/dist/memory/context-generator.js.map +0 -1
- package/dist/memory/context-injector.d.ts +0 -97
- package/dist/memory/context-injector.js +0 -159
- package/dist/memory/context-injector.js.map +0 -1
- package/dist/memory/context-store.d.ts +0 -103
- package/dist/memory/context-store.js +0 -264
- package/dist/memory/context-store.js.map +0 -1
- package/dist/memory/index.d.ts +0 -43
- package/dist/memory/index.js +0 -49
- package/dist/memory/index.js.map +0 -1
- package/dist/memory/provider-context-store.d.ts +0 -127
- package/dist/memory/provider-context-store.js +0 -385
- package/dist/memory/provider-context-store.js.map +0 -1
- package/dist/memory/schemas.d.ts +0 -118
- package/dist/memory/schemas.js +0 -106
- package/dist/memory/schemas.js.map +0 -1
- package/dist/memory/stats-collector.d.ts +0 -73
- package/dist/memory/stats-collector.js +0 -170
- package/dist/memory/stats-collector.js.map +0 -1
- package/dist/memory/types.d.ts +0 -177
- package/dist/memory/types.js +0 -73
- package/dist/memory/types.js.map +0 -1
- package/dist/permissions/index.d.ts +0 -6
- package/dist/permissions/index.js +0 -7
- package/dist/permissions/index.js.map +0 -1
- package/dist/permissions/permission-manager.d.ts +0 -149
- package/dist/permissions/permission-manager.js +0 -410
- package/dist/permissions/permission-manager.js.map +0 -1
- package/dist/planner/dependency-resolver.d.ts +0 -72
- package/dist/planner/dependency-resolver.js +0 -272
- package/dist/planner/dependency-resolver.js.map +0 -1
- package/dist/planner/index.d.ts +0 -12
- package/dist/planner/index.js +0 -28
- package/dist/planner/index.js.map +0 -1
- package/dist/planner/plan-generator.d.ts +0 -74
- package/dist/planner/plan-generator.js +0 -244
- package/dist/planner/plan-generator.js.map +0 -1
- package/dist/planner/plan-storage.d.ts +0 -113
- package/dist/planner/plan-storage.js +0 -398
- package/dist/planner/plan-storage.js.map +0 -1
- package/dist/planner/prompts/planning-prompt.d.ts +0 -62
- package/dist/planner/prompts/planning-prompt.js +0 -414
- package/dist/planner/prompts/planning-prompt.js.map +0 -1
- package/dist/planner/task-planner.d.ts +0 -139
- package/dist/planner/task-planner.js +0 -532
- package/dist/planner/task-planner.js.map +0 -1
- package/dist/planner/token-estimator.d.ts +0 -63
- package/dist/planner/token-estimator.js +0 -295
- package/dist/planner/token-estimator.js.map +0 -1
- package/dist/planner/types.d.ts +0 -425
- package/dist/planner/types.js +0 -213
- package/dist/planner/types.js.map +0 -1
- package/dist/provider/config.d.ts +0 -227
- package/dist/provider/config.js +0 -430
- package/dist/provider/config.js.map +0 -1
- package/dist/schemas/api-schemas.d.ts +0 -45
- package/dist/schemas/api-schemas.js +0 -129
- package/dist/schemas/api-schemas.js.map +0 -1
- package/dist/schemas/confirmation-schemas.d.ts +0 -39
- package/dist/schemas/confirmation-schemas.js +0 -48
- package/dist/schemas/confirmation-schemas.js.map +0 -1
- package/dist/schemas/index-unified.d.ts +0 -12
- package/dist/schemas/index-unified.js +0 -17
- package/dist/schemas/index-unified.js.map +0 -1
- package/dist/schemas/index.d.ts +0 -83
- package/dist/schemas/index.js +0 -139
- package/dist/schemas/index.js.map +0 -1
- package/dist/schemas/settings-schemas.d.ts +0 -186
- package/dist/schemas/settings-schemas.js +0 -324
- package/dist/schemas/settings-schemas.js.map +0 -1
- package/dist/schemas/tool-schemas.d.ts +0 -127
- package/dist/schemas/tool-schemas.js +0 -84
- package/dist/schemas/tool-schemas.js.map +0 -1
- package/dist/schemas/yaml-schemas.d.ts +0 -231
- package/dist/schemas/yaml-schemas.js +0 -199
- package/dist/schemas/yaml-schemas.js.map +0 -1
- package/dist/sdk/errors.d.ts +0 -100
- package/dist/sdk/errors.js +0 -138
- package/dist/sdk/errors.js.map +0 -1
- package/dist/sdk/index.d.ts +0 -901
- package/dist/sdk/index.js +0 -1272
- package/dist/sdk/index.js.map +0 -1
- package/dist/sdk/progress-reporter.d.ts +0 -123
- package/dist/sdk/progress-reporter.js +0 -220
- package/dist/sdk/progress-reporter.js.map +0 -1
- package/dist/sdk/testing.d.ts +0 -427
- package/dist/sdk/testing.js +0 -725
- package/dist/sdk/testing.js.map +0 -1
- package/dist/sdk/tool-registry.d.ts +0 -194
- package/dist/sdk/tool-registry.js +0 -326
- package/dist/sdk/tool-registry.js.map +0 -1
- package/dist/sdk/types.d.ts +0 -53
- package/dist/sdk/types.js +0 -8
- package/dist/sdk/types.js.map +0 -1
- package/dist/sdk/unified-logger.d.ts +0 -173
- package/dist/sdk/unified-logger.js +0 -327
- package/dist/sdk/unified-logger.js.map +0 -1
- package/dist/sdk/version.d.ts +0 -163
- package/dist/sdk/version.js +0 -205
- package/dist/sdk/version.js.map +0 -1
- package/dist/tools/ask-user.d.ts +0 -126
- package/dist/tools/ask-user.js +0 -290
- package/dist/tools/ask-user.js.map +0 -1
- package/dist/tools/ax-agent.d.ts +0 -71
- package/dist/tools/ax-agent.js +0 -283
- package/dist/tools/ax-agent.js.map +0 -1
- package/dist/tools/bash-output.d.ts +0 -25
- package/dist/tools/bash-output.js +0 -146
- package/dist/tools/bash-output.js.map +0 -1
- package/dist/tools/bash.d.ts +0 -67
- package/dist/tools/bash.js +0 -522
- package/dist/tools/bash.js.map +0 -1
- package/dist/tools/confirmation-tool.d.ts +0 -16
- package/dist/tools/confirmation-tool.js +0 -76
- package/dist/tools/confirmation-tool.js.map +0 -1
- package/dist/tools/definitions/ask-user.d.ts +0 -8
- package/dist/tools/definitions/ask-user.js +0 -168
- package/dist/tools/definitions/ask-user.js.map +0 -1
- package/dist/tools/definitions/ax-agent.d.ts +0 -8
- package/dist/tools/definitions/ax-agent.js +0 -276
- package/dist/tools/definitions/ax-agent.js.map +0 -1
- package/dist/tools/definitions/bash-output.d.ts +0 -7
- package/dist/tools/definitions/bash-output.js +0 -78
- package/dist/tools/definitions/bash-output.js.map +0 -1
- package/dist/tools/definitions/bash.d.ts +0 -8
- package/dist/tools/definitions/bash.js +0 -152
- package/dist/tools/definitions/bash.js.map +0 -1
- package/dist/tools/definitions/create-file.d.ts +0 -7
- package/dist/tools/definitions/create-file.js +0 -129
- package/dist/tools/definitions/create-file.js.map +0 -1
- package/dist/tools/definitions/design.d.ts +0 -12
- package/dist/tools/definitions/design.js +0 -368
- package/dist/tools/definitions/design.js.map +0 -1
- package/dist/tools/definitions/index.d.ts +0 -49
- package/dist/tools/definitions/index.js +0 -87
- package/dist/tools/definitions/index.js.map +0 -1
- package/dist/tools/definitions/multi-edit.d.ts +0 -7
- package/dist/tools/definitions/multi-edit.js +0 -123
- package/dist/tools/definitions/multi-edit.js.map +0 -1
- package/dist/tools/definitions/search.d.ts +0 -7
- package/dist/tools/definitions/search.js +0 -159
- package/dist/tools/definitions/search.js.map +0 -1
- package/dist/tools/definitions/str-replace-editor.d.ts +0 -7
- package/dist/tools/definitions/str-replace-editor.js +0 -145
- package/dist/tools/definitions/str-replace-editor.js.map +0 -1
- package/dist/tools/definitions/todo.d.ts +0 -8
- package/dist/tools/definitions/todo.js +0 -261
- package/dist/tools/definitions/todo.js.map +0 -1
- package/dist/tools/definitions/view-file.d.ts +0 -7
- package/dist/tools/definitions/view-file.js +0 -111
- package/dist/tools/definitions/view-file.js.map +0 -1
- package/dist/tools/design-tool.d.ts +0 -68
- package/dist/tools/design-tool.js +0 -299
- package/dist/tools/design-tool.js.map +0 -1
- package/dist/tools/format-generators.d.ts +0 -62
- package/dist/tools/format-generators.js +0 -291
- package/dist/tools/format-generators.js.map +0 -1
- package/dist/tools/index.d.ts +0 -8
- package/dist/tools/index.js +0 -11
- package/dist/tools/index.js.map +0 -1
- package/dist/tools/priority-registry.d.ts +0 -124
- package/dist/tools/priority-registry.js +0 -401
- package/dist/tools/priority-registry.js.map +0 -1
- package/dist/tools/priority.d.ts +0 -158
- package/dist/tools/priority.js +0 -350
- package/dist/tools/priority.js.map +0 -1
- package/dist/tools/registry.d.ts +0 -146
- package/dist/tools/registry.js +0 -171
- package/dist/tools/registry.js.map +0 -1
- package/dist/tools/search.d.ts +0 -85
- package/dist/tools/search.js +0 -430
- package/dist/tools/search.js.map +0 -1
- package/dist/tools/text-editor.d.ts +0 -87
- package/dist/tools/text-editor.js +0 -1369
- package/dist/tools/text-editor.js.map +0 -1
- package/dist/tools/todo-tool.d.ts +0 -20
- package/dist/tools/todo-tool.js +0 -186
- package/dist/tools/todo-tool.js.map +0 -1
- package/dist/tools/types.d.ts +0 -175
- package/dist/tools/types.js +0 -11
- package/dist/tools/types.js.map +0 -1
- package/dist/types/index.d.ts +0 -30
- package/dist/types/index.js +0 -2
- package/dist/types/index.js.map +0 -1
- package/dist/types/project-analysis.d.ts +0 -84
- package/dist/types/project-analysis.js +0 -5
- package/dist/types/project-analysis.js.map +0 -1
- package/dist/types/template.d.ts +0 -53
- package/dist/types/template.js +0 -5
- package/dist/types/template.js.map +0 -1
- package/dist/ui/app.d.ts +0 -7
- package/dist/ui/app.js +0 -102
- package/dist/ui/app.js.map +0 -1
- package/dist/ui/components/api-key-input.d.ts +0 -7
- package/dist/ui/components/api-key-input.js +0 -92
- package/dist/ui/components/api-key-input.js.map +0 -1
- package/dist/ui/components/chat-history.d.ts +0 -12
- package/dist/ui/components/chat-history.js +0 -391
- package/dist/ui/components/chat-history.js.map +0 -1
- package/dist/ui/components/chat-input.d.ts +0 -13
- package/dist/ui/components/chat-input.js +0 -179
- package/dist/ui/components/chat-input.js.map +0 -1
- package/dist/ui/components/chat-interface.d.ts +0 -11
- package/dist/ui/components/chat-interface.js +0 -830
- package/dist/ui/components/chat-interface.js.map +0 -1
- package/dist/ui/components/collapsible-tool-result.d.ts +0 -42
- package/dist/ui/components/collapsible-tool-result.js +0 -216
- package/dist/ui/components/collapsible-tool-result.js.map +0 -1
- package/dist/ui/components/command-suggestions.d.ts +0 -29
- package/dist/ui/components/command-suggestions.js +0 -88
- package/dist/ui/components/command-suggestions.js.map +0 -1
- package/dist/ui/components/confirmation-dialog.d.ts +0 -11
- package/dist/ui/components/confirmation-dialog.js +0 -100
- package/dist/ui/components/confirmation-dialog.js.map +0 -1
- package/dist/ui/components/context-breakdown.d.ts +0 -23
- package/dist/ui/components/context-breakdown.js +0 -124
- package/dist/ui/components/context-breakdown.js.map +0 -1
- package/dist/ui/components/diff-renderer.d.ts +0 -13
- package/dist/ui/components/diff-renderer.js +0 -192
- package/dist/ui/components/diff-renderer.js.map +0 -1
- package/dist/ui/components/index.d.ts +0 -18
- package/dist/ui/components/index.js +0 -20
- package/dist/ui/components/index.js.map +0 -1
- package/dist/ui/components/keyboard-help.d.ts +0 -17
- package/dist/ui/components/keyboard-help.js +0 -122
- package/dist/ui/components/keyboard-help.js.map +0 -1
- package/dist/ui/components/keyboard-hints.d.ts +0 -35
- package/dist/ui/components/keyboard-hints.js +0 -142
- package/dist/ui/components/keyboard-hints.js.map +0 -1
- package/dist/ui/components/loading-spinner.d.ts +0 -9
- package/dist/ui/components/loading-spinner.js +0 -120
- package/dist/ui/components/loading-spinner.js.map +0 -1
- package/dist/ui/components/mcp-dashboard.d.ts +0 -15
- package/dist/ui/components/mcp-dashboard.js +0 -520
- package/dist/ui/components/mcp-dashboard.js.map +0 -1
- package/dist/ui/components/mcp-status.d.ts +0 -5
- package/dist/ui/components/mcp-status.js +0 -58
- package/dist/ui/components/mcp-status.js.map +0 -1
- package/dist/ui/components/model-selection.d.ts +0 -12
- package/dist/ui/components/model-selection.js +0 -17
- package/dist/ui/components/model-selection.js.map +0 -1
- package/dist/ui/components/phase-progress.d.ts +0 -21
- package/dist/ui/components/phase-progress.js +0 -185
- package/dist/ui/components/phase-progress.js.map +0 -1
- package/dist/ui/components/question-dialog.d.ts +0 -17
- package/dist/ui/components/question-dialog.js +0 -181
- package/dist/ui/components/question-dialog.js.map +0 -1
- package/dist/ui/components/quick-actions.d.ts +0 -12
- package/dist/ui/components/quick-actions.js +0 -171
- package/dist/ui/components/quick-actions.js.map +0 -1
- package/dist/ui/components/reasoning-display.d.ts +0 -36
- package/dist/ui/components/reasoning-display.js +0 -46
- package/dist/ui/components/reasoning-display.js.map +0 -1
- package/dist/ui/components/status-bar.d.ts +0 -47
- package/dist/ui/components/status-bar.js +0 -310
- package/dist/ui/components/status-bar.js.map +0 -1
- package/dist/ui/components/subagent-monitor.d.ts +0 -41
- package/dist/ui/components/subagent-monitor.js +0 -122
- package/dist/ui/components/subagent-monitor.js.map +0 -1
- package/dist/ui/components/toast-notification.d.ts +0 -197
- package/dist/ui/components/toast-notification.js +0 -190
- package/dist/ui/components/toast-notification.js.map +0 -1
- package/dist/ui/components/tool-group-display.d.ts +0 -19
- package/dist/ui/components/tool-group-display.js +0 -222
- package/dist/ui/components/tool-group-display.js.map +0 -1
- package/dist/ui/components/virtualized-chat-history.d.ts +0 -33
- package/dist/ui/components/virtualized-chat-history.js +0 -182
- package/dist/ui/components/virtualized-chat-history.js.map +0 -1
- package/dist/ui/components/welcome-panel.d.ts +0 -11
- package/dist/ui/components/welcome-panel.js +0 -225
- package/dist/ui/components/welcome-panel.js.map +0 -1
- package/dist/ui/hooks/use-chat-reducer.d.ts +0 -69
- package/dist/ui/hooks/use-chat-reducer.js +0 -118
- package/dist/ui/hooks/use-chat-reducer.js.map +0 -1
- package/dist/ui/hooks/use-enhanced-input.d.ts +0 -53
- package/dist/ui/hooks/use-enhanced-input.js +0 -1275
- package/dist/ui/hooks/use-enhanced-input.js.map +0 -1
- package/dist/ui/hooks/use-input-handler.d.ts +0 -79
- package/dist/ui/hooks/use-input-handler.js +0 -2251
- package/dist/ui/hooks/use-input-handler.js.map +0 -1
- package/dist/ui/hooks/use-input-history.d.ts +0 -9
- package/dist/ui/hooks/use-input-history.js +0 -168
- package/dist/ui/hooks/use-input-history.js.map +0 -1
- package/dist/ui/shared/max-sized-box.d.ts +0 -17
- package/dist/ui/shared/max-sized-box.js +0 -14
- package/dist/ui/shared/max-sized-box.js.map +0 -1
- package/dist/ui/themes/index.d.ts +0 -5
- package/dist/ui/themes/index.js +0 -5
- package/dist/ui/themes/index.js.map +0 -1
- package/dist/ui/themes/theme-registry.d.ts +0 -55
- package/dist/ui/themes/theme-registry.js +0 -202
- package/dist/ui/themes/theme-registry.js.map +0 -1
- package/dist/ui/utils/bracketed-paste-handler.d.ts +0 -97
- package/dist/ui/utils/bracketed-paste-handler.js +0 -322
- package/dist/ui/utils/bracketed-paste-handler.js.map +0 -1
- package/dist/ui/utils/change-summarizer.d.ts +0 -20
- package/dist/ui/utils/change-summarizer.js +0 -282
- package/dist/ui/utils/change-summarizer.js.map +0 -1
- package/dist/ui/utils/code-colorizer.d.ts +0 -9
- package/dist/ui/utils/code-colorizer.js +0 -13
- package/dist/ui/utils/code-colorizer.js.map +0 -1
- package/dist/ui/utils/colors.d.ts +0 -41
- package/dist/ui/utils/colors.js +0 -80
- package/dist/ui/utils/colors.js.map +0 -1
- package/dist/ui/utils/image-handler.d.ts +0 -29
- package/dist/ui/utils/image-handler.js +0 -129
- package/dist/ui/utils/image-handler.js.map +0 -1
- package/dist/ui/utils/markdown-renderer.d.ts +0 -4
- package/dist/ui/utils/markdown-renderer.js +0 -40
- package/dist/ui/utils/markdown-renderer.js.map +0 -1
- package/dist/ui/utils/semantic-action-detector.d.ts +0 -49
- package/dist/ui/utils/semantic-action-detector.js +0 -339
- package/dist/ui/utils/semantic-action-detector.js.map +0 -1
- package/dist/ui/utils/tool-grouper.d.ts +0 -94
- package/dist/ui/utils/tool-grouper.js +0 -618
- package/dist/ui/utils/tool-grouper.js.map +0 -1
- package/dist/utils/api-error.d.ts +0 -61
- package/dist/utils/api-error.js +0 -176
- package/dist/utils/api-error.js.map +0 -1
- package/dist/utils/audit-logger.d.ts +0 -206
- package/dist/utils/audit-logger.js +0 -286
- package/dist/utils/audit-logger.js.map +0 -1
- package/dist/utils/auto-accept-logger.d.ts +0 -175
- package/dist/utils/auto-accept-logger.js +0 -423
- package/dist/utils/auto-accept-logger.js.map +0 -1
- package/dist/utils/automatosx-detector.d.ts +0 -19
- package/dist/utils/automatosx-detector.js +0 -52
- package/dist/utils/automatosx-detector.js.map +0 -1
- package/dist/utils/background-task-manager.d.ts +0 -114
- package/dist/utils/background-task-manager.js +0 -470
- package/dist/utils/background-task-manager.js.map +0 -1
- package/dist/utils/cache.d.ts +0 -77
- package/dist/utils/cache.js +0 -180
- package/dist/utils/cache.js.map +0 -1
- package/dist/utils/command-security.d.ts +0 -85
- package/dist/utils/command-security.js +0 -210
- package/dist/utils/command-security.js.map +0 -1
- package/dist/utils/config-loader.d.ts +0 -190
- package/dist/utils/config-loader.js +0 -108
- package/dist/utils/config-loader.js.map +0 -1
- package/dist/utils/confirmation-service.d.ts +0 -51
- package/dist/utils/confirmation-service.js +0 -220
- package/dist/utils/confirmation-service.js.map +0 -1
- package/dist/utils/console-messenger.d.ts +0 -80
- package/dist/utils/console-messenger.js +0 -142
- package/dist/utils/console-messenger.js.map +0 -1
- package/dist/utils/custom-instructions.d.ts +0 -1
- package/dist/utils/custom-instructions.js +0 -24
- package/dist/utils/custom-instructions.js.map +0 -1
- package/dist/utils/encryption.d.ts +0 -86
- package/dist/utils/encryption.js +0 -236
- package/dist/utils/encryption.js.map +0 -1
- package/dist/utils/enhanced-error-messages.d.ts +0 -33
- package/dist/utils/enhanced-error-messages.js +0 -440
- package/dist/utils/enhanced-error-messages.js.map +0 -1
- package/dist/utils/error-handler.d.ts +0 -65
- package/dist/utils/error-handler.js +0 -148
- package/dist/utils/error-handler.js.map +0 -1
- package/dist/utils/error-translator.d.ts +0 -25
- package/dist/utils/error-translator.js +0 -203
- package/dist/utils/error-translator.js.map +0 -1
- package/dist/utils/external-editor.d.ts +0 -47
- package/dist/utils/external-editor.js +0 -179
- package/dist/utils/external-editor.js.map +0 -1
- package/dist/utils/file-cache.d.ts +0 -148
- package/dist/utils/file-cache.js +0 -413
- package/dist/utils/file-cache.js.map +0 -1
- package/dist/utils/file-lock.d.ts +0 -141
- package/dist/utils/file-lock.js +0 -554
- package/dist/utils/file-lock.js.map +0 -1
- package/dist/utils/file-mentions.d.ts +0 -68
- package/dist/utils/file-mentions.js +0 -225
- package/dist/utils/file-mentions.js.map +0 -1
- package/dist/utils/history-manager.d.ts +0 -52
- package/dist/utils/history-manager.js +0 -211
- package/dist/utils/history-manager.js.map +0 -1
- package/dist/utils/history-migration.d.ts +0 -9
- package/dist/utils/history-migration.js +0 -37
- package/dist/utils/history-migration.js.map +0 -1
- package/dist/utils/image-processor.d.ts +0 -33
- package/dist/utils/image-processor.js +0 -124
- package/dist/utils/image-processor.js.map +0 -1
- package/dist/utils/index.d.ts +0 -92
- package/dist/utils/index.js +0 -111
- package/dist/utils/index.js.map +0 -1
- package/dist/utils/init-previewer.d.ts +0 -56
- package/dist/utils/init-previewer.js +0 -239
- package/dist/utils/init-previewer.js.map +0 -1
- package/dist/utils/init-validator.d.ts +0 -65
- package/dist/utils/init-validator.js +0 -252
- package/dist/utils/init-validator.js.map +0 -1
- package/dist/utils/input-sanitizer.d.ts +0 -210
- package/dist/utils/input-sanitizer.js +0 -362
- package/dist/utils/input-sanitizer.js.map +0 -1
- package/dist/utils/instruction-generator.d.ts +0 -21
- package/dist/utils/instruction-generator.js +0 -233
- package/dist/utils/instruction-generator.js.map +0 -1
- package/dist/utils/json-utils.d.ts +0 -72
- package/dist/utils/json-utils.js +0 -226
- package/dist/utils/json-utils.js.map +0 -1
- package/dist/utils/llm-optimized-instruction-generator.d.ts +0 -36
- package/dist/utils/llm-optimized-instruction-generator.js +0 -365
- package/dist/utils/llm-optimized-instruction-generator.js.map +0 -1
- package/dist/utils/message-optimizer.d.ts +0 -100
- package/dist/utils/message-optimizer.js +0 -297
- package/dist/utils/message-optimizer.js.map +0 -1
- package/dist/utils/onboarding-manager.d.ts +0 -45
- package/dist/utils/onboarding-manager.js +0 -131
- package/dist/utils/onboarding-manager.js.map +0 -1
- package/dist/utils/parallel-analyzer.d.ts +0 -123
- package/dist/utils/parallel-analyzer.js +0 -241
- package/dist/utils/parallel-analyzer.js.map +0 -1
- package/dist/utils/paste-utils.d.ts +0 -99
- package/dist/utils/paste-utils.js +0 -295
- package/dist/utils/paste-utils.js.map +0 -1
- package/dist/utils/path-helpers.d.ts +0 -8
- package/dist/utils/path-helpers.js +0 -35
- package/dist/utils/path-helpers.js.map +0 -1
- package/dist/utils/path-security.d.ts +0 -92
- package/dist/utils/path-security.js +0 -300
- package/dist/utils/path-security.js.map +0 -1
- package/dist/utils/path-utils.d.ts +0 -83
- package/dist/utils/path-utils.js +0 -122
- package/dist/utils/path-utils.js.map +0 -1
- package/dist/utils/path-validator.d.ts +0 -66
- package/dist/utils/path-validator.js +0 -141
- package/dist/utils/path-validator.js.map +0 -1
- package/dist/utils/performance.d.ts +0 -74
- package/dist/utils/performance.js +0 -133
- package/dist/utils/performance.js.map +0 -1
- package/dist/utils/process-pool.d.ts +0 -109
- package/dist/utils/process-pool.js +0 -332
- package/dist/utils/process-pool.js.map +0 -1
- package/dist/utils/progress-tracker.d.ts +0 -51
- package/dist/utils/progress-tracker.js +0 -152
- package/dist/utils/progress-tracker.js.map +0 -1
- package/dist/utils/project-analyzer.d.ts +0 -49
- package/dist/utils/project-analyzer.js +0 -396
- package/dist/utils/project-analyzer.js.map +0 -1
- package/dist/utils/prompt-builder.d.ts +0 -14
- package/dist/utils/prompt-builder.js +0 -100
- package/dist/utils/prompt-builder.js.map +0 -1
- package/dist/utils/provider-context.d.ts +0 -243
- package/dist/utils/provider-context.js +0 -421
- package/dist/utils/provider-context.js.map +0 -1
- package/dist/utils/provider-file-cache.d.ts +0 -91
- package/dist/utils/provider-file-cache.js +0 -165
- package/dist/utils/provider-file-cache.js.map +0 -1
- package/dist/utils/provider-settings.d.ts +0 -181
- package/dist/utils/provider-settings.js +0 -450
- package/dist/utils/provider-settings.js.map +0 -1
- package/dist/utils/rate-limiter.d.ts +0 -222
- package/dist/utils/rate-limiter.js +0 -338
- package/dist/utils/rate-limiter.js.map +0 -1
- package/dist/utils/retry-helper.d.ts +0 -81
- package/dist/utils/retry-helper.js +0 -244
- package/dist/utils/retry-helper.js.map +0 -1
- package/dist/utils/safety-rules.d.ts +0 -64
- package/dist/utils/safety-rules.js +0 -225
- package/dist/utils/safety-rules.js.map +0 -1
- package/dist/utils/settings-manager.d.ts +0 -256
- package/dist/utils/settings-manager.js +0 -967
- package/dist/utils/settings-manager.js.map +0 -1
- package/dist/utils/setup-validator.d.ts +0 -47
- package/dist/utils/setup-validator.js +0 -304
- package/dist/utils/setup-validator.js.map +0 -1
- package/dist/utils/string-utils.d.ts +0 -19
- package/dist/utils/string-utils.js +0 -28
- package/dist/utils/string-utils.js.map +0 -1
- package/dist/utils/template-manager.d.ts +0 -62
- package/dist/utils/template-manager.js +0 -366
- package/dist/utils/template-manager.js.map +0 -1
- package/dist/utils/text-utils.d.ts +0 -82
- package/dist/utils/text-utils.js +0 -203
- package/dist/utils/text-utils.js.map +0 -1
- package/dist/utils/token-counter.d.ts +0 -76
- package/dist/utils/token-counter.js +0 -231
- package/dist/utils/token-counter.js.map +0 -1
- package/dist/utils/usage-tracker.d.ts +0 -78
- package/dist/utils/usage-tracker.js +0 -126
- package/dist/utils/usage-tracker.js.map +0 -1
- package/dist/utils/version.d.ts +0 -14
- package/dist/utils/version.js +0 -70
- package/dist/utils/version.js.map +0 -1
package/dist/mcp/type-safety.js
DELETED
|
@@ -1,237 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Smart constructor for ServerName
|
|
3
|
-
* Validates server name format at runtime
|
|
4
|
-
*/
|
|
5
|
-
export function createServerName(name) {
|
|
6
|
-
// Server names must be alphanumeric with hyphens/underscores
|
|
7
|
-
if (!/^[a-z0-9-_]+$/i.test(name)) {
|
|
8
|
-
return null;
|
|
9
|
-
}
|
|
10
|
-
if (name.length < 1 || name.length > 64) {
|
|
11
|
-
return null;
|
|
12
|
-
}
|
|
13
|
-
return name;
|
|
14
|
-
}
|
|
15
|
-
/**
|
|
16
|
-
* Smart constructor for ConfigFilePath
|
|
17
|
-
*/
|
|
18
|
-
export function createConfigFilePath(path) {
|
|
19
|
-
if (!path || path.trim().length === 0) {
|
|
20
|
-
return null;
|
|
21
|
-
}
|
|
22
|
-
// Must be absolute path or relative starting with .
|
|
23
|
-
if (!path.startsWith('/') && !path.startsWith('.')) {
|
|
24
|
-
return null;
|
|
25
|
-
}
|
|
26
|
-
return path;
|
|
27
|
-
}
|
|
28
|
-
/**
|
|
29
|
-
* Smart constructor for ToolName
|
|
30
|
-
* Validates tool name format at runtime
|
|
31
|
-
*/
|
|
32
|
-
export function createToolName(name) {
|
|
33
|
-
// Tool names can have underscores (for MCP prefix like mcp__server__tool)
|
|
34
|
-
if (!/^[a-zA-Z0-9_-]+$/.test(name)) {
|
|
35
|
-
return null;
|
|
36
|
-
}
|
|
37
|
-
if (name.length < 1 || name.length > 128) {
|
|
38
|
-
return null;
|
|
39
|
-
}
|
|
40
|
-
return name;
|
|
41
|
-
}
|
|
42
|
-
/**
|
|
43
|
-
* Type-safe state transition
|
|
44
|
-
* PREVENTS: Invalid state transitions at compile time
|
|
45
|
-
*/
|
|
46
|
-
export function transition(_from, to) {
|
|
47
|
-
return to;
|
|
48
|
-
}
|
|
49
|
-
/**
|
|
50
|
-
* TECHNIQUE 3: Exhaustiveness Checking
|
|
51
|
-
* Ensures all cases are handled (prevents forgotten branches)
|
|
52
|
-
*/
|
|
53
|
-
export function assertNever(value) {
|
|
54
|
-
throw new Error(`Unexpected value: ${JSON.stringify(value)}`);
|
|
55
|
-
}
|
|
56
|
-
/**
|
|
57
|
-
* Example: Handle all connection states
|
|
58
|
-
*/
|
|
59
|
-
export function handleConnectionState(state) {
|
|
60
|
-
switch (state.status) {
|
|
61
|
-
case 'idle':
|
|
62
|
-
return `Server ${state.serverName} is idle`;
|
|
63
|
-
case 'connecting':
|
|
64
|
-
return `Connecting to ${state.serverName} (started ${Date.now() - state.startedAt}ms ago)`;
|
|
65
|
-
case 'connected':
|
|
66
|
-
return `Connected to ${state.serverName} (uptime: ${Date.now() - state.connectedAt}ms)`;
|
|
67
|
-
case 'disconnecting':
|
|
68
|
-
return `Disconnecting from ${state.serverName}`;
|
|
69
|
-
case 'failed':
|
|
70
|
-
return `Connection to ${state.serverName} failed: ${state.error.message}`;
|
|
71
|
-
default:
|
|
72
|
-
// If we add a new state and forget to handle it, TypeScript error here!
|
|
73
|
-
return assertNever(state);
|
|
74
|
-
}
|
|
75
|
-
}
|
|
76
|
-
/**
|
|
77
|
-
* Smart constructor that proves array is non-empty
|
|
78
|
-
*/
|
|
79
|
-
export function asNonEmpty(arr) {
|
|
80
|
-
if (arr.length === 0) {
|
|
81
|
-
return null;
|
|
82
|
-
}
|
|
83
|
-
return arr;
|
|
84
|
-
}
|
|
85
|
-
/**
|
|
86
|
-
* Functions that require non-empty arrays can enforce it at compile time
|
|
87
|
-
*/
|
|
88
|
-
export function getFirstServer(servers) {
|
|
89
|
-
return servers[0]; // TypeScript knows this is safe!
|
|
90
|
-
}
|
|
91
|
-
/**
|
|
92
|
-
* Helper to create success result
|
|
93
|
-
*/
|
|
94
|
-
export function Ok(value) {
|
|
95
|
-
return { success: true, value };
|
|
96
|
-
}
|
|
97
|
-
/**
|
|
98
|
-
* Helper to create error result
|
|
99
|
-
*/
|
|
100
|
-
export function Err(error) {
|
|
101
|
-
return { success: false, error };
|
|
102
|
-
}
|
|
103
|
-
/**
|
|
104
|
-
* Map over result (only if success)
|
|
105
|
-
*/
|
|
106
|
-
export function mapResult(result, fn) {
|
|
107
|
-
if (result.success) {
|
|
108
|
-
return Ok(fn(result.value));
|
|
109
|
-
}
|
|
110
|
-
return result;
|
|
111
|
-
}
|
|
112
|
-
/**
|
|
113
|
-
* Chain results (flatMap)
|
|
114
|
-
*/
|
|
115
|
-
export function andThen(result, fn) {
|
|
116
|
-
if (result.success) {
|
|
117
|
-
return fn(result.value);
|
|
118
|
-
}
|
|
119
|
-
return result;
|
|
120
|
-
}
|
|
121
|
-
// Resource handle that can only be used once
|
|
122
|
-
export class LinearResource {
|
|
123
|
-
resource;
|
|
124
|
-
_used = false;
|
|
125
|
-
constructor(resource) {
|
|
126
|
-
this.resource = resource;
|
|
127
|
-
}
|
|
128
|
-
/**
|
|
129
|
-
* Use the resource exactly once
|
|
130
|
-
* Compile-time: Can't call use() twice on same instance
|
|
131
|
-
* Runtime: Throws if called twice
|
|
132
|
-
*/
|
|
133
|
-
use(fn) {
|
|
134
|
-
if (this._used) {
|
|
135
|
-
throw new Error('Resource already used! Linear type violation.');
|
|
136
|
-
}
|
|
137
|
-
this._used = true;
|
|
138
|
-
try {
|
|
139
|
-
return fn(this.resource);
|
|
140
|
-
}
|
|
141
|
-
finally {
|
|
142
|
-
this.resource.dispose();
|
|
143
|
-
}
|
|
144
|
-
}
|
|
145
|
-
}
|
|
146
|
-
/**
|
|
147
|
-
* TECHNIQUE 7: Opaque Types for Mutex Tokens
|
|
148
|
-
* Prove at compile-time that caller has acquired the lock
|
|
149
|
-
*/
|
|
150
|
-
// Opaque token that proves lock is held
|
|
151
|
-
export class MutexToken {
|
|
152
|
-
serverName;
|
|
153
|
-
// @ts-expect-error - Brand field is intentionally unused (for type safety only)
|
|
154
|
-
__brand;
|
|
155
|
-
// Private constructor - can only be created by Mutex
|
|
156
|
-
constructor(serverName) {
|
|
157
|
-
this.serverName = serverName;
|
|
158
|
-
}
|
|
159
|
-
// Only Mutex can create tokens
|
|
160
|
-
static create(serverName) {
|
|
161
|
-
return new MutexToken(serverName);
|
|
162
|
-
}
|
|
163
|
-
}
|
|
164
|
-
/**
|
|
165
|
-
* Operations that require a lock must receive a token
|
|
166
|
-
* This proves at compile-time that the caller holds the lock!
|
|
167
|
-
*/
|
|
168
|
-
export function performCriticalOperation(serverName, token, operation) {
|
|
169
|
-
// Verify token matches server (runtime check)
|
|
170
|
-
if (token.serverName !== serverName) {
|
|
171
|
-
throw new Error('Token is for wrong server!');
|
|
172
|
-
}
|
|
173
|
-
// Proceed with operation - we KNOW we have the lock
|
|
174
|
-
operation();
|
|
175
|
-
}
|
|
176
|
-
/**
|
|
177
|
-
* TECHNIQUE 8: Const Assertions for Immutability
|
|
178
|
-
* Prevent accidental mutations
|
|
179
|
-
*/
|
|
180
|
-
export const MCP_STATES = {
|
|
181
|
-
IDLE: 'idle',
|
|
182
|
-
CONNECTING: 'connecting',
|
|
183
|
-
CONNECTED: 'connected',
|
|
184
|
-
DISCONNECTING: 'disconnecting',
|
|
185
|
-
FAILED: 'failed'
|
|
186
|
-
};
|
|
187
|
-
/**
|
|
188
|
-
* TECHNIQUE 11: Recursive Type Guards
|
|
189
|
-
* Deep validation of nested structures
|
|
190
|
-
*/
|
|
191
|
-
export function isValidConnectionState(value) {
|
|
192
|
-
if (typeof value !== 'object' || value === null) {
|
|
193
|
-
return false;
|
|
194
|
-
}
|
|
195
|
-
const state = value;
|
|
196
|
-
if (typeof state.status !== 'string') {
|
|
197
|
-
return false;
|
|
198
|
-
}
|
|
199
|
-
if (typeof state.serverName !== 'string') {
|
|
200
|
-
return false;
|
|
201
|
-
}
|
|
202
|
-
switch (state.status) {
|
|
203
|
-
case 'idle':
|
|
204
|
-
return true;
|
|
205
|
-
case 'connecting':
|
|
206
|
-
return typeof state.startedAt === 'number';
|
|
207
|
-
case 'connected':
|
|
208
|
-
return typeof state.connectedAt === 'number' && state.client !== undefined;
|
|
209
|
-
case 'disconnecting':
|
|
210
|
-
return state.client !== undefined;
|
|
211
|
-
case 'failed':
|
|
212
|
-
return state.error instanceof Error && typeof state.failedAt === 'number';
|
|
213
|
-
default:
|
|
214
|
-
return false;
|
|
215
|
-
}
|
|
216
|
-
}
|
|
217
|
-
/**
|
|
218
|
-
* Convert unknown error to Error instance
|
|
219
|
-
* Utility to reduce repeated error instanceof checks throughout the codebase
|
|
220
|
-
*/
|
|
221
|
-
export function toError(error) {
|
|
222
|
-
return error instanceof Error ? error : new Error(String(error));
|
|
223
|
-
}
|
|
224
|
-
/**
|
|
225
|
-
* Wrap async function to return Result
|
|
226
|
-
*/
|
|
227
|
-
export async function tryCatch(fn) {
|
|
228
|
-
try {
|
|
229
|
-
const value = await fn();
|
|
230
|
-
return Ok(value);
|
|
231
|
-
}
|
|
232
|
-
catch (error) {
|
|
233
|
-
return Err(toError(error));
|
|
234
|
-
}
|
|
235
|
-
}
|
|
236
|
-
// Usage examples moved to tests/mcp/type-safety.test.ts
|
|
237
|
-
//# sourceMappingURL=type-safety.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"type-safety.js","sourceRoot":"","sources":["../../src/mcp/type-safety.ts"],"names":[],"mappings":"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"}
|
package/dist/mcp/validation.d.ts
DELETED
|
@@ -1,29 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* MCP Server Configuration Validation (Phase 4)
|
|
3
|
-
*
|
|
4
|
-
* Provides pre-flight checks to validate MCP server configurations
|
|
5
|
-
* before attempting connection, improving error messages and UX.
|
|
6
|
-
*/
|
|
7
|
-
import type { MCPServerConfig } from '../schemas/settings-schemas.js';
|
|
8
|
-
export interface ValidationResult {
|
|
9
|
-
valid: boolean;
|
|
10
|
-
warnings: string[];
|
|
11
|
-
errors: string[];
|
|
12
|
-
}
|
|
13
|
-
export interface ValidationIssue {
|
|
14
|
-
type: 'error' | 'warning';
|
|
15
|
-
message: string;
|
|
16
|
-
field?: string;
|
|
17
|
-
}
|
|
18
|
-
/**
|
|
19
|
-
* Validate an MCP server configuration with pre-flight checks
|
|
20
|
-
*/
|
|
21
|
-
export declare function validateServerConfig(config: MCPServerConfig): Promise<ValidationResult>;
|
|
22
|
-
/**
|
|
23
|
-
* Format validation result for display
|
|
24
|
-
*/
|
|
25
|
-
export declare function formatValidationResult(result: ValidationResult): string;
|
|
26
|
-
/**
|
|
27
|
-
* Get the list of safe MCP commands (for documentation/testing)
|
|
28
|
-
*/
|
|
29
|
-
export declare function getSafeMCPCommands(): readonly string[];
|
package/dist/mcp/validation.js
DELETED
|
@@ -1,339 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* MCP Server Configuration Validation (Phase 4)
|
|
3
|
-
*
|
|
4
|
-
* Provides pre-flight checks to validate MCP server configurations
|
|
5
|
-
* before attempting connection, improving error messages and UX.
|
|
6
|
-
*/
|
|
7
|
-
import { execFile } from 'child_process';
|
|
8
|
-
import { promisify } from 'util';
|
|
9
|
-
import { getTemplate } from './templates.js';
|
|
10
|
-
import { getAuditLogger, AuditCategory } from '../utils/audit-logger.js';
|
|
11
|
-
const execFileAsync = promisify(execFile);
|
|
12
|
-
/**
|
|
13
|
-
* Safe commands whitelist for MCP stdio transport
|
|
14
|
-
* Only these commands are allowed to prevent command injection
|
|
15
|
-
*/
|
|
16
|
-
const SAFE_MCP_COMMANDS = [
|
|
17
|
-
// Node.js package managers
|
|
18
|
-
'node',
|
|
19
|
-
'npm',
|
|
20
|
-
'npx',
|
|
21
|
-
'bun',
|
|
22
|
-
'deno',
|
|
23
|
-
'pnpm',
|
|
24
|
-
'yarn',
|
|
25
|
-
// Python
|
|
26
|
-
'python',
|
|
27
|
-
'python3',
|
|
28
|
-
'pip',
|
|
29
|
-
'pip3',
|
|
30
|
-
'uvx',
|
|
31
|
-
// Docker
|
|
32
|
-
'docker',
|
|
33
|
-
// Common shell commands (for legitimate MCP servers)
|
|
34
|
-
'bash',
|
|
35
|
-
'sh',
|
|
36
|
-
'zsh',
|
|
37
|
-
// Full paths allowed (validated separately)
|
|
38
|
-
];
|
|
39
|
-
/**
|
|
40
|
-
* Validate an MCP server configuration with pre-flight checks
|
|
41
|
-
*/
|
|
42
|
-
export async function validateServerConfig(config) {
|
|
43
|
-
const warnings = [];
|
|
44
|
-
const errors = [];
|
|
45
|
-
// 1. Validate transport configuration exists
|
|
46
|
-
if (!config.transport) {
|
|
47
|
-
errors.push('Transport configuration is required');
|
|
48
|
-
return { valid: false, warnings, errors };
|
|
49
|
-
}
|
|
50
|
-
// 2. Transport-specific validation
|
|
51
|
-
switch (config.transport.type) {
|
|
52
|
-
case 'stdio':
|
|
53
|
-
await validateStdioTransport(config, errors, warnings);
|
|
54
|
-
break;
|
|
55
|
-
case 'http':
|
|
56
|
-
case 'sse':
|
|
57
|
-
await validateHttpTransport(config, errors, warnings);
|
|
58
|
-
break;
|
|
59
|
-
case 'streamable_http':
|
|
60
|
-
await validateStreamableHttpTransport(config, errors, warnings);
|
|
61
|
-
break;
|
|
62
|
-
}
|
|
63
|
-
// 3. Validate required environment variables from template
|
|
64
|
-
validateRequiredEnvVars(config, errors, warnings);
|
|
65
|
-
// 4. Validate server name
|
|
66
|
-
if (!config.name || config.name.trim() === '') {
|
|
67
|
-
errors.push('Server name cannot be empty');
|
|
68
|
-
}
|
|
69
|
-
else if (!/^[a-z0-9-_]+$/i.test(config.name)) {
|
|
70
|
-
warnings.push(`Server name "${config.name}" contains special characters. Recommended: alphanumeric, hyphens, underscores only`);
|
|
71
|
-
}
|
|
72
|
-
return {
|
|
73
|
-
valid: errors.length === 0,
|
|
74
|
-
warnings,
|
|
75
|
-
errors
|
|
76
|
-
};
|
|
77
|
-
}
|
|
78
|
-
/**
|
|
79
|
-
* Validate command against whitelist
|
|
80
|
-
* Prevents command injection by only allowing safe commands
|
|
81
|
-
*/
|
|
82
|
-
function validateCommandWhitelist(command) {
|
|
83
|
-
// BUG FIX: Handle empty or whitespace-only commands
|
|
84
|
-
const trimmedCommand = command.trim();
|
|
85
|
-
if (!trimmedCommand) {
|
|
86
|
-
return {
|
|
87
|
-
valid: false,
|
|
88
|
-
error: 'Command cannot be empty'
|
|
89
|
-
};
|
|
90
|
-
}
|
|
91
|
-
// Allow full paths (they will be validated separately)
|
|
92
|
-
if (trimmedCommand.includes('/') || trimmedCommand.includes('\\')) {
|
|
93
|
-
// Validate path doesn't contain shell metacharacters
|
|
94
|
-
const dangerousChars = /[;&|`$()<>]/;
|
|
95
|
-
if (dangerousChars.test(trimmedCommand)) {
|
|
96
|
-
return {
|
|
97
|
-
valid: false,
|
|
98
|
-
error: `Command path contains dangerous characters: ${trimmedCommand}`
|
|
99
|
-
};
|
|
100
|
-
}
|
|
101
|
-
return { valid: true };
|
|
102
|
-
}
|
|
103
|
-
// Check against whitelist
|
|
104
|
-
// BUG FIX: Use trimmed command and handle empty result from split
|
|
105
|
-
const baseCommand = trimmedCommand.split(/\s+/)[0] || '';
|
|
106
|
-
if (!baseCommand || !SAFE_MCP_COMMANDS.includes(baseCommand)) {
|
|
107
|
-
return {
|
|
108
|
-
valid: false,
|
|
109
|
-
error: `Command "${baseCommand || '(empty)'}" is not in the safe commands whitelist. ` +
|
|
110
|
-
`Allowed: ${SAFE_MCP_COMMANDS.join(', ')}. ` +
|
|
111
|
-
`Use full path for custom commands.`
|
|
112
|
-
};
|
|
113
|
-
}
|
|
114
|
-
return { valid: true };
|
|
115
|
-
}
|
|
116
|
-
/**
|
|
117
|
-
* Validate command arguments for injection attempts
|
|
118
|
-
*/
|
|
119
|
-
function validateCommandArgs(args) {
|
|
120
|
-
const dangerousPatterns = /[;&|`$()<>]/;
|
|
121
|
-
for (let i = 0; i < args.length; i++) {
|
|
122
|
-
const arg = args[i];
|
|
123
|
-
// Check for shell metacharacters
|
|
124
|
-
if (dangerousPatterns.test(arg)) {
|
|
125
|
-
return {
|
|
126
|
-
valid: false,
|
|
127
|
-
error: `Argument ${i} contains dangerous shell metacharacters: "${arg}"`
|
|
128
|
-
};
|
|
129
|
-
}
|
|
130
|
-
// Check for null bytes
|
|
131
|
-
if (arg.includes('\0')) {
|
|
132
|
-
return {
|
|
133
|
-
valid: false,
|
|
134
|
-
error: `Argument ${i} contains null byte`
|
|
135
|
-
};
|
|
136
|
-
}
|
|
137
|
-
}
|
|
138
|
-
return { valid: true };
|
|
139
|
-
}
|
|
140
|
-
/**
|
|
141
|
-
* Validate stdio transport configuration
|
|
142
|
-
*/
|
|
143
|
-
async function validateStdioTransport(config, errors, warnings) {
|
|
144
|
-
if (!config.transport || config.transport.type !== 'stdio')
|
|
145
|
-
return;
|
|
146
|
-
const { command, args } = config.transport;
|
|
147
|
-
// Check if command exists
|
|
148
|
-
if (!command || command.trim() === '') {
|
|
149
|
-
errors.push('Command is required for stdio transport');
|
|
150
|
-
return;
|
|
151
|
-
}
|
|
152
|
-
// SECURITY: Validate command against whitelist (REQ-SEC-004)
|
|
153
|
-
const whitelistResult = validateCommandWhitelist(command);
|
|
154
|
-
if (!whitelistResult.valid) {
|
|
155
|
-
// REQ-SEC-008: Audit log command injection attempt
|
|
156
|
-
const auditLogger = getAuditLogger();
|
|
157
|
-
auditLogger.logCritical({
|
|
158
|
-
category: AuditCategory.COMMAND_EXECUTION,
|
|
159
|
-
action: 'mcp_command_injection_attempt',
|
|
160
|
-
resource: config.name,
|
|
161
|
-
outcome: 'failure',
|
|
162
|
-
error: whitelistResult.error,
|
|
163
|
-
details: { command, configName: config.name },
|
|
164
|
-
});
|
|
165
|
-
errors.push(whitelistResult.error || 'Command not allowed');
|
|
166
|
-
return; // Don't continue if command is not allowed
|
|
167
|
-
}
|
|
168
|
-
// Validate args
|
|
169
|
-
if (args && !Array.isArray(args)) {
|
|
170
|
-
errors.push('Arguments must be an array');
|
|
171
|
-
return;
|
|
172
|
-
}
|
|
173
|
-
// SECURITY: Validate arguments for injection attempts (REQ-SEC-004)
|
|
174
|
-
if (args && args.length > 0) {
|
|
175
|
-
const argsResult = validateCommandArgs(args);
|
|
176
|
-
if (!argsResult.valid) {
|
|
177
|
-
errors.push(argsResult.error || 'Invalid arguments');
|
|
178
|
-
return;
|
|
179
|
-
}
|
|
180
|
-
}
|
|
181
|
-
// Commands that require at least one argument (script/module to run)
|
|
182
|
-
// Without args, these commands start a REPL and wait for input, causing MCP timeout
|
|
183
|
-
const commandsRequiringArgs = ['node', 'python', 'python3', 'deno', 'bun'];
|
|
184
|
-
const baseCommand = command.split(/\s+/)[0].split('/').pop() || command;
|
|
185
|
-
if (commandsRequiringArgs.includes(baseCommand) && (!args || args.length === 0)) {
|
|
186
|
-
errors.push(`Command "${command}" requires at least one argument (e.g., a script file). ` +
|
|
187
|
-
`Empty args will cause the process to hang waiting for input.`);
|
|
188
|
-
return;
|
|
189
|
-
}
|
|
190
|
-
// Check if command is executable (after whitelist check)
|
|
191
|
-
const commandExists = await checkCommandExists(command);
|
|
192
|
-
if (!commandExists) {
|
|
193
|
-
warnings.push(`Command "${command}" not found in PATH. Please install it or provide full path.`);
|
|
194
|
-
}
|
|
195
|
-
// Check for common npm package patterns
|
|
196
|
-
if (command === 'npx' && args && args.length > 0) {
|
|
197
|
-
const packageName = args[0];
|
|
198
|
-
if (packageName.startsWith('@modelcontextprotocol/')) {
|
|
199
|
-
// This is an official MCP server package - good!
|
|
200
|
-
warnings.push(`Ensure "${packageName}" is installed: npm install -g ${packageName}`);
|
|
201
|
-
}
|
|
202
|
-
}
|
|
203
|
-
}
|
|
204
|
-
/**
|
|
205
|
-
* Validate HTTP/SSE transport configuration
|
|
206
|
-
*/
|
|
207
|
-
async function validateHttpTransport(config, errors, warnings) {
|
|
208
|
-
if (!config.transport || (config.transport.type !== 'http' && config.transport.type !== 'sse'))
|
|
209
|
-
return;
|
|
210
|
-
const { url } = config.transport;
|
|
211
|
-
// Check if URL exists
|
|
212
|
-
if (!url || url.trim() === '') {
|
|
213
|
-
errors.push(`URL is required for ${config.transport.type} transport`);
|
|
214
|
-
return;
|
|
215
|
-
}
|
|
216
|
-
// Validate URL format
|
|
217
|
-
try {
|
|
218
|
-
const parsedUrl = new URL(url);
|
|
219
|
-
// Check protocol
|
|
220
|
-
if (parsedUrl.protocol !== 'http:' && parsedUrl.protocol !== 'https:') {
|
|
221
|
-
errors.push(`Invalid protocol "${parsedUrl.protocol}". Expected http: or https:`);
|
|
222
|
-
}
|
|
223
|
-
// Warn about http (not https)
|
|
224
|
-
if (parsedUrl.protocol === 'http:' && !parsedUrl.hostname.includes('localhost') && !parsedUrl.hostname.includes('127.0.0.1')) {
|
|
225
|
-
warnings.push('Using http:// instead of https:// for remote server. Consider using encrypted connection.');
|
|
226
|
-
}
|
|
227
|
-
// Check if URL is accessible (non-blocking)
|
|
228
|
-
const accessible = await checkUrlAccessible(url);
|
|
229
|
-
if (!accessible) {
|
|
230
|
-
warnings.push(`Unable to reach "${url}". Server may not be running or URL may be incorrect.`);
|
|
231
|
-
}
|
|
232
|
-
}
|
|
233
|
-
catch {
|
|
234
|
-
errors.push(`Invalid URL format: ${url}`);
|
|
235
|
-
}
|
|
236
|
-
}
|
|
237
|
-
/**
|
|
238
|
-
* Validate streamable HTTP transport configuration
|
|
239
|
-
*/
|
|
240
|
-
async function validateStreamableHttpTransport(config, errors, _warnings) {
|
|
241
|
-
if (!config.transport || config.transport.type !== 'streamable_http')
|
|
242
|
-
return;
|
|
243
|
-
const { url } = config.transport;
|
|
244
|
-
if (!url || url.trim() === '') {
|
|
245
|
-
errors.push('URL is required for streamable_http transport');
|
|
246
|
-
return;
|
|
247
|
-
}
|
|
248
|
-
try {
|
|
249
|
-
new URL(url);
|
|
250
|
-
}
|
|
251
|
-
catch {
|
|
252
|
-
errors.push(`Invalid URL format: ${url}`);
|
|
253
|
-
}
|
|
254
|
-
}
|
|
255
|
-
/**
|
|
256
|
-
* Validate required environment variables based on template
|
|
257
|
-
*/
|
|
258
|
-
function validateRequiredEnvVars(config, errors, _warnings) {
|
|
259
|
-
// Try to get template for this server
|
|
260
|
-
const template = getTemplate(config.name);
|
|
261
|
-
if (!template || !template.requiredEnv)
|
|
262
|
-
return;
|
|
263
|
-
// Check each required environment variable
|
|
264
|
-
for (const envVar of template.requiredEnv) {
|
|
265
|
-
const hasInConfig = config.transport?.env && envVar.name in config.transport.env;
|
|
266
|
-
const hasInProcess = envVar.name in process.env;
|
|
267
|
-
if (!hasInConfig && !hasInProcess) {
|
|
268
|
-
errors.push(`Missing required environment variable: ${envVar.name} - ${envVar.description}`);
|
|
269
|
-
}
|
|
270
|
-
}
|
|
271
|
-
}
|
|
272
|
-
/**
|
|
273
|
-
* Check if a command exists in PATH
|
|
274
|
-
* Uses execFile to prevent command injection vulnerabilities
|
|
275
|
-
*/
|
|
276
|
-
async function checkCommandExists(command) {
|
|
277
|
-
try {
|
|
278
|
-
// Handle full paths
|
|
279
|
-
if (command.includes('/') || command.includes('\\')) {
|
|
280
|
-
return true; // Assume full paths are valid
|
|
281
|
-
}
|
|
282
|
-
// Check if command exists in PATH using execFile (prevents command injection)
|
|
283
|
-
const checkCommand = process.platform === 'win32' ? 'where' : 'which';
|
|
284
|
-
await execFileAsync(checkCommand, [command]);
|
|
285
|
-
return true;
|
|
286
|
-
}
|
|
287
|
-
catch {
|
|
288
|
-
return false;
|
|
289
|
-
}
|
|
290
|
-
}
|
|
291
|
-
/**
|
|
292
|
-
* Check if a URL is accessible (with timeout)
|
|
293
|
-
*/
|
|
294
|
-
async function checkUrlAccessible(url) {
|
|
295
|
-
const controller = new AbortController();
|
|
296
|
-
const timeout = setTimeout(() => controller.abort(), 3000);
|
|
297
|
-
try {
|
|
298
|
-
const response = await fetch(url, {
|
|
299
|
-
method: 'HEAD',
|
|
300
|
-
signal: controller.signal
|
|
301
|
-
});
|
|
302
|
-
return response.ok || response.status === 404; // 404 means server exists
|
|
303
|
-
}
|
|
304
|
-
catch {
|
|
305
|
-
return false;
|
|
306
|
-
}
|
|
307
|
-
finally {
|
|
308
|
-
clearTimeout(timeout);
|
|
309
|
-
}
|
|
310
|
-
}
|
|
311
|
-
/**
|
|
312
|
-
* Format validation result for display
|
|
313
|
-
*/
|
|
314
|
-
export function formatValidationResult(result) {
|
|
315
|
-
const lines = [];
|
|
316
|
-
if (result.errors.length > 0) {
|
|
317
|
-
lines.push('❌ Validation Failed\n');
|
|
318
|
-
result.errors.forEach(error => {
|
|
319
|
-
lines.push(` • ${error}`);
|
|
320
|
-
});
|
|
321
|
-
}
|
|
322
|
-
if (result.warnings.length > 0) {
|
|
323
|
-
lines.push(result.errors.length > 0 ? '\n⚠️ Warnings\n' : '⚠️ Warnings\n');
|
|
324
|
-
result.warnings.forEach(warning => {
|
|
325
|
-
lines.push(` • ${warning}`);
|
|
326
|
-
});
|
|
327
|
-
}
|
|
328
|
-
if (result.valid && result.warnings.length === 0) {
|
|
329
|
-
lines.push('✅ Configuration is valid');
|
|
330
|
-
}
|
|
331
|
-
return lines.join('\n');
|
|
332
|
-
}
|
|
333
|
-
/**
|
|
334
|
-
* Get the list of safe MCP commands (for documentation/testing)
|
|
335
|
-
*/
|
|
336
|
-
export function getSafeMCPCommands() {
|
|
337
|
-
return SAFE_MCP_COMMANDS;
|
|
338
|
-
}
|
|
339
|
-
//# sourceMappingURL=validation.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"validation.js","sourceRoot":"","sources":["../../src/mcp/validation.ts"],"names":[],"mappings":"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"}
|