@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/invariants.js
DELETED
|
@@ -1,243 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Runtime Invariant Validation
|
|
3
|
-
*
|
|
4
|
-
* This file provides runtime checks for logical invariants that TypeScript
|
|
5
|
-
* cannot verify at compile-time. These catch the "30% logic bugs" that
|
|
6
|
-
* slip through type checking.
|
|
7
|
-
*
|
|
8
|
-
* Philosophy: Fail Fast & Loud
|
|
9
|
-
* - Detect bugs immediately when invariant is violated
|
|
10
|
-
* - Throw descriptive errors with context
|
|
11
|
-
* - Better to crash than silently corrupt data
|
|
12
|
-
*/
|
|
13
|
-
/**
|
|
14
|
-
* Invariant check - throws if condition is false
|
|
15
|
-
*
|
|
16
|
-
* Use this for conditions that MUST be true for correctness
|
|
17
|
-
*/
|
|
18
|
-
export function invariant(condition, message, context) {
|
|
19
|
-
if (!condition) {
|
|
20
|
-
const fullMessage = context
|
|
21
|
-
? `Invariant violation: ${message}\nContext: ${JSON.stringify(context, null, 2)}`
|
|
22
|
-
: `Invariant violation: ${message}`;
|
|
23
|
-
throw new InvariantViolationError(fullMessage);
|
|
24
|
-
}
|
|
25
|
-
}
|
|
26
|
-
/**
|
|
27
|
-
* Custom error for invariant violations
|
|
28
|
-
*/
|
|
29
|
-
export class InvariantViolationError extends Error {
|
|
30
|
-
constructor(message) {
|
|
31
|
-
super(message);
|
|
32
|
-
this.name = 'InvariantViolationError';
|
|
33
|
-
}
|
|
34
|
-
}
|
|
35
|
-
/**
|
|
36
|
-
* Assert array is non-empty
|
|
37
|
-
*/
|
|
38
|
-
export function assertNonEmpty(array, message = 'Array must not be empty') {
|
|
39
|
-
invariant(array.length > 0, message, { arrayLength: array.length });
|
|
40
|
-
}
|
|
41
|
-
/**
|
|
42
|
-
* Assert value is defined (not null or undefined)
|
|
43
|
-
*/
|
|
44
|
-
export function assertDefined(value, message = 'Value must be defined') {
|
|
45
|
-
invariant(value !== null && value !== undefined, message, { value });
|
|
46
|
-
}
|
|
47
|
-
/**
|
|
48
|
-
* Assert number is positive
|
|
49
|
-
*/
|
|
50
|
-
export function assertPositive(value, message = 'Number must be positive') {
|
|
51
|
-
invariant(value > 0, message, { value });
|
|
52
|
-
}
|
|
53
|
-
/**
|
|
54
|
-
* Assert number is non-negative
|
|
55
|
-
*/
|
|
56
|
-
export function assertNonNegative(value, message = 'Number must be non-negative') {
|
|
57
|
-
invariant(value >= 0, message, { value });
|
|
58
|
-
}
|
|
59
|
-
/**
|
|
60
|
-
* Assert string is non-empty
|
|
61
|
-
*/
|
|
62
|
-
export function assertNonEmptyString(value, message = 'String must not be empty') {
|
|
63
|
-
invariant(value.trim().length > 0, message, { value, length: value.length });
|
|
64
|
-
}
|
|
65
|
-
/**
|
|
66
|
-
* Assert value is within range
|
|
67
|
-
*/
|
|
68
|
-
export function assertInRange(value, min, max, message) {
|
|
69
|
-
const msg = message || `Value must be between ${min} and ${max}`;
|
|
70
|
-
invariant(value >= min && value <= max, msg, { value, min, max });
|
|
71
|
-
}
|
|
72
|
-
/**
|
|
73
|
-
* Assert map has key
|
|
74
|
-
*/
|
|
75
|
-
export function assertHasKey(map, key, message) {
|
|
76
|
-
const msg = message || `Map must contain key`;
|
|
77
|
-
invariant(map.has(key), msg, { key, mapSize: map.size });
|
|
78
|
-
}
|
|
79
|
-
/**
|
|
80
|
-
* Assert object has property
|
|
81
|
-
*/
|
|
82
|
-
export function assertHasProperty(obj, key, message) {
|
|
83
|
-
const msg = message || `Object must have property "${key}"`;
|
|
84
|
-
invariant(key in obj, msg, { key, objectKeys: Object.keys(obj) });
|
|
85
|
-
}
|
|
86
|
-
/**
|
|
87
|
-
* MCP-SPECIFIC INVARIANTS
|
|
88
|
-
*/
|
|
89
|
-
/**
|
|
90
|
-
* Assert connection state is valid
|
|
91
|
-
*/
|
|
92
|
-
export function assertValidConnectionState(state, validStates) {
|
|
93
|
-
invariant(validStates.includes(state), `Invalid connection state: "${state}"`, { state, validStates });
|
|
94
|
-
}
|
|
95
|
-
/**
|
|
96
|
-
* Assert server name is valid format
|
|
97
|
-
*/
|
|
98
|
-
export function assertValidServerName(name) {
|
|
99
|
-
invariant(/^[a-z0-9-_]+$/i.test(name), `Invalid server name format: "${name}"`, { name, pattern: '^[a-z0-9-_]+$' });
|
|
100
|
-
invariant(name.length >= 1 && name.length <= 64, `Server name length must be between 1 and 64 characters`, { name, length: name.length });
|
|
101
|
-
}
|
|
102
|
-
/**
|
|
103
|
-
* Assert migration result is successful
|
|
104
|
-
*/
|
|
105
|
-
export function assertMigrationSuccess(result, context) {
|
|
106
|
-
const message = context
|
|
107
|
-
? `Migration must succeed: ${context}`
|
|
108
|
-
: 'Migration must succeed';
|
|
109
|
-
invariant(result.success, message, { error: result.error });
|
|
110
|
-
}
|
|
111
|
-
/**
|
|
112
|
-
* Assert no duplicate server names
|
|
113
|
-
*/
|
|
114
|
-
export function assertNoDuplicates(servers, message = 'Server names must be unique') {
|
|
115
|
-
const names = servers.map(s => s.name);
|
|
116
|
-
const unique = new Set(names);
|
|
117
|
-
invariant(names.length === unique.size, message, {
|
|
118
|
-
totalServers: names.length,
|
|
119
|
-
uniqueServers: unique.size,
|
|
120
|
-
duplicates: names.filter((name, index) => names.indexOf(name) !== index)
|
|
121
|
-
});
|
|
122
|
-
}
|
|
123
|
-
/**
|
|
124
|
-
* Assert mutex is locked
|
|
125
|
-
*/
|
|
126
|
-
export function assertMutexLocked(isLocked, key, message = 'Mutex must be locked before operation') {
|
|
127
|
-
invariant(isLocked, message, { key });
|
|
128
|
-
}
|
|
129
|
-
/**
|
|
130
|
-
* Assert mutex is unlocked
|
|
131
|
-
*/
|
|
132
|
-
export function assertMutexUnlocked(isLocked, key, message = 'Mutex must be unlocked before operation') {
|
|
133
|
-
invariant(!isLocked, message, { key });
|
|
134
|
-
}
|
|
135
|
-
/**
|
|
136
|
-
* Assert resource is not disposed
|
|
137
|
-
*/
|
|
138
|
-
export function assertNotDisposed(disposed, resourceName, message) {
|
|
139
|
-
const msg = message || `Resource "${resourceName}" must not be disposed`;
|
|
140
|
-
invariant(!disposed, msg, { resourceName, disposed });
|
|
141
|
-
}
|
|
142
|
-
/**
|
|
143
|
-
* Assert exactly one of multiple conditions is true
|
|
144
|
-
*/
|
|
145
|
-
export function assertExactlyOne(conditions, labels, message = 'Exactly one condition must be true') {
|
|
146
|
-
const trueCount = conditions.filter(Boolean).length;
|
|
147
|
-
invariant(trueCount === 1, message, {
|
|
148
|
-
trueCount,
|
|
149
|
-
conditions: conditions.map((cond, i) => ({ label: labels[i], value: cond }))
|
|
150
|
-
});
|
|
151
|
-
}
|
|
152
|
-
/**
|
|
153
|
-
* Assert at least one condition is true
|
|
154
|
-
*/
|
|
155
|
-
export function assertAtLeastOne(conditions, labels, message = 'At least one condition must be true') {
|
|
156
|
-
const trueCount = conditions.filter(Boolean).length;
|
|
157
|
-
invariant(trueCount >= 1, message, {
|
|
158
|
-
trueCount,
|
|
159
|
-
conditions: conditions.map((cond, i) => ({ label: labels[i], value: cond }))
|
|
160
|
-
});
|
|
161
|
-
}
|
|
162
|
-
/**
|
|
163
|
-
* Assert config is in expected format
|
|
164
|
-
*/
|
|
165
|
-
export function assertConfigFormat(config, expectedFormat, serverName) {
|
|
166
|
-
const isLegacy = config.command && !config.transport;
|
|
167
|
-
const isModern = config.transport && config.transport.type;
|
|
168
|
-
if (expectedFormat === 'legacy') {
|
|
169
|
-
invariant(isLegacy, `Config for "${serverName}" must be in legacy format`, { config, serverName });
|
|
170
|
-
}
|
|
171
|
-
else {
|
|
172
|
-
invariant(isModern, `Config for "${serverName}" must be in modern format`, { config, serverName });
|
|
173
|
-
}
|
|
174
|
-
}
|
|
175
|
-
/**
|
|
176
|
-
* Assert config has required fields
|
|
177
|
-
*/
|
|
178
|
-
export function assertConfigHasFields(config, requiredFields, serverName) {
|
|
179
|
-
for (const field of requiredFields) {
|
|
180
|
-
invariant(field in config && config[field] !== undefined, `Config for "${serverName}" missing required field: ${field}`, { config, serverName, missingField: field, requiredFields });
|
|
181
|
-
}
|
|
182
|
-
}
|
|
183
|
-
/**
|
|
184
|
-
* USAGE PATTERNS
|
|
185
|
-
*/
|
|
186
|
-
/**
|
|
187
|
-
* Pattern 1: Guard functions
|
|
188
|
-
*/
|
|
189
|
-
export function guardedConnect(serverName, config) {
|
|
190
|
-
// Runtime checks that complement TypeScript
|
|
191
|
-
assertValidServerName(serverName);
|
|
192
|
-
assertDefined(config, `Config for "${serverName}" must be defined`);
|
|
193
|
-
assertConfigHasFields(config, ['name', 'transport'], serverName);
|
|
194
|
-
// Now safe to proceed - invariants verified
|
|
195
|
-
console.log(`Connecting to ${serverName}`);
|
|
196
|
-
}
|
|
197
|
-
/**
|
|
198
|
-
* Pattern 2: State validation
|
|
199
|
-
*/
|
|
200
|
-
export function validateConnectionState(state, expectedStates) {
|
|
201
|
-
assertValidConnectionState(state, expectedStates);
|
|
202
|
-
}
|
|
203
|
-
/**
|
|
204
|
-
* Pattern 3: Pre/Post conditions
|
|
205
|
-
*/
|
|
206
|
-
export function criticalOperation(value) {
|
|
207
|
-
// Precondition
|
|
208
|
-
assertPositive(value, 'Input must be positive');
|
|
209
|
-
const result = value * 2;
|
|
210
|
-
// Postcondition
|
|
211
|
-
assertPositive(result, 'Result must be positive');
|
|
212
|
-
invariant(result > value, 'Result must be greater than input', { value, result });
|
|
213
|
-
return result;
|
|
214
|
-
}
|
|
215
|
-
/**
|
|
216
|
-
* Pattern 4: Loop invariants
|
|
217
|
-
*/
|
|
218
|
-
export function processServers(servers) {
|
|
219
|
-
assertNonEmpty(servers, 'Must have at least one server');
|
|
220
|
-
for (let i = 0; i < servers.length; i++) {
|
|
221
|
-
// Loop invariant: i is in valid range
|
|
222
|
-
assertInRange(i, 0, servers.length - 1, `Index out of bounds`);
|
|
223
|
-
const server = servers[i];
|
|
224
|
-
assertDefined(server, `Server at index ${i} must be defined`);
|
|
225
|
-
assertValidServerName(server.name);
|
|
226
|
-
// Process server...
|
|
227
|
-
}
|
|
228
|
-
}
|
|
229
|
-
/**
|
|
230
|
-
* Pattern 5: Resource management
|
|
231
|
-
*/
|
|
232
|
-
export class Resource {
|
|
233
|
-
disposed = false;
|
|
234
|
-
use() {
|
|
235
|
-
assertNotDisposed(this.disposed, 'Resource');
|
|
236
|
-
// Use resource...
|
|
237
|
-
}
|
|
238
|
-
dispose() {
|
|
239
|
-
assertNotDisposed(this.disposed, 'Resource');
|
|
240
|
-
this.disposed = true;
|
|
241
|
-
}
|
|
242
|
-
}
|
|
243
|
-
//# sourceMappingURL=invariants.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"invariants.js","sourceRoot":"","sources":["../../src/mcp/invariants.ts"],"names":[],"mappings":"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"}
|
package/dist/mcp/mutex-safe.d.ts
DELETED
|
@@ -1,151 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Type-Safe Mutex Implementation
|
|
3
|
-
*
|
|
4
|
-
* This is an improved version of mutex.ts that uses advanced TypeScript
|
|
5
|
-
* techniques to prevent logic bugs at compile-time.
|
|
6
|
-
*
|
|
7
|
-
* Improvements over basic mutex:
|
|
8
|
-
* 1. Branded types for lock tokens (proves lock is held)
|
|
9
|
-
* 2. Linear types (ensures release is called exactly once)
|
|
10
|
-
* 3. Result types (explicit error handling)
|
|
11
|
-
* 4. State tracking (prevents double-release)
|
|
12
|
-
*/
|
|
13
|
-
import { Result } from './type-safety.js';
|
|
14
|
-
/**
|
|
15
|
-
* Lock Token - Opaque type that proves caller holds the lock
|
|
16
|
-
*
|
|
17
|
-
* This token can ONLY be created by the Mutex class when a lock is acquired.
|
|
18
|
-
* Functions that require the lock can demand this token, proving at compile-time
|
|
19
|
-
* that the caller has acquired the lock.
|
|
20
|
-
*/
|
|
21
|
-
export declare class LockToken {
|
|
22
|
-
readonly key: string;
|
|
23
|
-
private readonly releaseFn;
|
|
24
|
-
private readonly __brand;
|
|
25
|
-
private _released;
|
|
26
|
-
private constructor();
|
|
27
|
-
/**
|
|
28
|
-
* Release the lock (can only be called once)
|
|
29
|
-
* This is a linear type - calling twice is a bug
|
|
30
|
-
*/
|
|
31
|
-
release(): void;
|
|
32
|
-
/**
|
|
33
|
-
* Check if already released (for debugging)
|
|
34
|
-
*/
|
|
35
|
-
isReleased(): boolean;
|
|
36
|
-
/**
|
|
37
|
-
* Internal factory - only Mutex can create tokens
|
|
38
|
-
*/
|
|
39
|
-
static _create(key: string, releaseFn: () => void): LockToken;
|
|
40
|
-
}
|
|
41
|
-
/**
|
|
42
|
-
* Improved Mutex with Type Safety
|
|
43
|
-
*
|
|
44
|
-
* Key improvements:
|
|
45
|
-
* - Lock tokens prove ownership at compile-time
|
|
46
|
-
* - Linear types prevent double-release
|
|
47
|
-
* - State tracking prevents invalid operations
|
|
48
|
-
* - Result types for explicit error handling
|
|
49
|
-
*/
|
|
50
|
-
export declare class SafeMutex {
|
|
51
|
-
private state;
|
|
52
|
-
private queue;
|
|
53
|
-
/**
|
|
54
|
-
* Acquire the mutex lock
|
|
55
|
-
*
|
|
56
|
-
* Returns a LockToken that:
|
|
57
|
-
* 1. Proves the lock is held (compile-time)
|
|
58
|
-
* 2. Must be released exactly once (runtime check)
|
|
59
|
-
* 3. Cannot be counterfeited (private constructor)
|
|
60
|
-
*/
|
|
61
|
-
acquire(key?: string): Promise<LockToken>;
|
|
62
|
-
/**
|
|
63
|
-
* Release the mutex lock
|
|
64
|
-
* Should only be called via LockToken.release()
|
|
65
|
-
*/
|
|
66
|
-
private release;
|
|
67
|
-
/**
|
|
68
|
-
* Execute function with automatic lock management
|
|
69
|
-
*
|
|
70
|
-
* This is safer than manual acquire/release because:
|
|
71
|
-
* 1. Guarantees release even if fn throws
|
|
72
|
-
* 2. Prevents forgetting to release
|
|
73
|
-
* 3. Returns Result type for explicit error handling
|
|
74
|
-
*/
|
|
75
|
-
runExclusive<T>(key: string, fn: () => Promise<T>): Promise<Result<T, Error>>;
|
|
76
|
-
/**
|
|
77
|
-
* Check if mutex is currently locked
|
|
78
|
-
*/
|
|
79
|
-
isLocked(): boolean;
|
|
80
|
-
/**
|
|
81
|
-
* Get lock holder (for debugging)
|
|
82
|
-
*/
|
|
83
|
-
getLockHolder(): string | null;
|
|
84
|
-
/**
|
|
85
|
-
* Get number of operations waiting for lock
|
|
86
|
-
*/
|
|
87
|
-
getQueueLength(): number;
|
|
88
|
-
/**
|
|
89
|
-
* Get lock duration in milliseconds
|
|
90
|
-
*/
|
|
91
|
-
getLockDuration(): number | null;
|
|
92
|
-
}
|
|
93
|
-
/**
|
|
94
|
-
* Per-key mutex manager with type safety
|
|
95
|
-
*/
|
|
96
|
-
export declare class SafeKeyedMutex {
|
|
97
|
-
private mutexes;
|
|
98
|
-
/** Get or create mutex for a key */
|
|
99
|
-
private getMutex;
|
|
100
|
-
/**
|
|
101
|
-
* Acquire mutex for a specific key
|
|
102
|
-
* Returns a LockToken that proves ownership
|
|
103
|
-
*/
|
|
104
|
-
acquire(key: string): Promise<LockToken>;
|
|
105
|
-
/**
|
|
106
|
-
* Execute function with mutex protection for a specific key
|
|
107
|
-
* Returns Result type for explicit error handling
|
|
108
|
-
*/
|
|
109
|
-
runExclusive<T>(key: string, fn: () => Promise<T>): Promise<Result<T, Error>>;
|
|
110
|
-
/**
|
|
111
|
-
* Check if a key is currently locked
|
|
112
|
-
*/
|
|
113
|
-
isLocked(key: string): boolean;
|
|
114
|
-
/**
|
|
115
|
-
* Get lock holder for a key
|
|
116
|
-
*/
|
|
117
|
-
getLockHolder(key: string): string | null;
|
|
118
|
-
/**
|
|
119
|
-
* Get number of operations waiting for a key
|
|
120
|
-
*/
|
|
121
|
-
getQueueLength(key: string): number;
|
|
122
|
-
/**
|
|
123
|
-
* Get lock duration for a key
|
|
124
|
-
*/
|
|
125
|
-
getLockDuration(key: string): number | null;
|
|
126
|
-
/**
|
|
127
|
-
* Clear mutex for a key (cleanup)
|
|
128
|
-
*/
|
|
129
|
-
clear(key: string): void;
|
|
130
|
-
/**
|
|
131
|
-
* Clear all mutexes (cleanup)
|
|
132
|
-
*/
|
|
133
|
-
clearAll(): void;
|
|
134
|
-
/**
|
|
135
|
-
* Get all active keys
|
|
136
|
-
*/
|
|
137
|
-
getKeys(): string[];
|
|
138
|
-
/**
|
|
139
|
-
* Get diagnostic info for all locks
|
|
140
|
-
*/
|
|
141
|
-
getDiagnostics(): Array<{
|
|
142
|
-
key: string;
|
|
143
|
-
locked: boolean;
|
|
144
|
-
holder: string | null;
|
|
145
|
-
queueLength: number;
|
|
146
|
-
duration: number | null;
|
|
147
|
-
}>;
|
|
148
|
-
}
|
|
149
|
-
/**
|
|
150
|
-
* USAGE EXAMPLES - See tests/mcp/safe-mutex.bench.ts for comprehensive examples
|
|
151
|
-
*/
|
package/dist/mcp/mutex-safe.js
DELETED
|
@@ -1,260 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Type-Safe Mutex Implementation
|
|
3
|
-
*
|
|
4
|
-
* This is an improved version of mutex.ts that uses advanced TypeScript
|
|
5
|
-
* techniques to prevent logic bugs at compile-time.
|
|
6
|
-
*
|
|
7
|
-
* Improvements over basic mutex:
|
|
8
|
-
* 1. Branded types for lock tokens (proves lock is held)
|
|
9
|
-
* 2. Linear types (ensures release is called exactly once)
|
|
10
|
-
* 3. Result types (explicit error handling)
|
|
11
|
-
* 4. State tracking (prevents double-release)
|
|
12
|
-
*/
|
|
13
|
-
import { Ok, Err } from './type-safety.js';
|
|
14
|
-
/**
|
|
15
|
-
* Lock Token - Opaque type that proves caller holds the lock
|
|
16
|
-
*
|
|
17
|
-
* This token can ONLY be created by the Mutex class when a lock is acquired.
|
|
18
|
-
* Functions that require the lock can demand this token, proving at compile-time
|
|
19
|
-
* that the caller has acquired the lock.
|
|
20
|
-
*/
|
|
21
|
-
export class LockToken {
|
|
22
|
-
key;
|
|
23
|
-
releaseFn;
|
|
24
|
-
// @ts-expect-error - Brand field is intentionally unused (for type safety only)
|
|
25
|
-
__brand;
|
|
26
|
-
// Track if released (for linear type checking)
|
|
27
|
-
_released = false;
|
|
28
|
-
constructor(key, releaseFn) {
|
|
29
|
-
this.key = key;
|
|
30
|
-
this.releaseFn = releaseFn;
|
|
31
|
-
}
|
|
32
|
-
/**
|
|
33
|
-
* Release the lock (can only be called once)
|
|
34
|
-
* This is a linear type - calling twice is a bug
|
|
35
|
-
*/
|
|
36
|
-
release() {
|
|
37
|
-
if (this._released) {
|
|
38
|
-
throw new Error(`Lock token already released! Linear type violation for key: ${this.key}`);
|
|
39
|
-
}
|
|
40
|
-
this._released = true;
|
|
41
|
-
this.releaseFn();
|
|
42
|
-
}
|
|
43
|
-
/**
|
|
44
|
-
* Check if already released (for debugging)
|
|
45
|
-
*/
|
|
46
|
-
isReleased() {
|
|
47
|
-
return this._released;
|
|
48
|
-
}
|
|
49
|
-
/**
|
|
50
|
-
* Internal factory - only Mutex can create tokens
|
|
51
|
-
*/
|
|
52
|
-
static _create(key, releaseFn) {
|
|
53
|
-
return new LockToken(key, releaseFn);
|
|
54
|
-
}
|
|
55
|
-
}
|
|
56
|
-
/**
|
|
57
|
-
* Improved Mutex with Type Safety
|
|
58
|
-
*
|
|
59
|
-
* Key improvements:
|
|
60
|
-
* - Lock tokens prove ownership at compile-time
|
|
61
|
-
* - Linear types prevent double-release
|
|
62
|
-
* - State tracking prevents invalid operations
|
|
63
|
-
* - Result types for explicit error handling
|
|
64
|
-
*/
|
|
65
|
-
export class SafeMutex {
|
|
66
|
-
state = { status: 'unlocked' };
|
|
67
|
-
queue = [];
|
|
68
|
-
/**
|
|
69
|
-
* Acquire the mutex lock
|
|
70
|
-
*
|
|
71
|
-
* Returns a LockToken that:
|
|
72
|
-
* 1. Proves the lock is held (compile-time)
|
|
73
|
-
* 2. Must be released exactly once (runtime check)
|
|
74
|
-
* 3. Cannot be counterfeited (private constructor)
|
|
75
|
-
*/
|
|
76
|
-
async acquire(key = 'default') {
|
|
77
|
-
// If locked, wait in queue
|
|
78
|
-
if (this.state.status === 'locked') {
|
|
79
|
-
await new Promise(resolve => {
|
|
80
|
-
this.queue.push(resolve);
|
|
81
|
-
});
|
|
82
|
-
}
|
|
83
|
-
// Acquire lock
|
|
84
|
-
this.state = {
|
|
85
|
-
status: 'locked',
|
|
86
|
-
acquiredAt: Date.now(),
|
|
87
|
-
key
|
|
88
|
-
};
|
|
89
|
-
// Create token with release function
|
|
90
|
-
const token = LockToken._create(key, () => {
|
|
91
|
-
this.release(key);
|
|
92
|
-
});
|
|
93
|
-
return token;
|
|
94
|
-
}
|
|
95
|
-
/**
|
|
96
|
-
* Release the mutex lock
|
|
97
|
-
* Should only be called via LockToken.release()
|
|
98
|
-
*/
|
|
99
|
-
release(key) {
|
|
100
|
-
// Verify we're actually locked
|
|
101
|
-
if (this.state.status !== 'locked') {
|
|
102
|
-
throw new Error('Cannot release unlocked mutex');
|
|
103
|
-
}
|
|
104
|
-
// Verify key matches (prevents releasing wrong lock)
|
|
105
|
-
if (this.state.status === 'locked' && this.state.key !== key) {
|
|
106
|
-
throw new Error(`Key mismatch: trying to release lock for "${key}" but lock is held for "${this.state.key}"`);
|
|
107
|
-
}
|
|
108
|
-
// Release lock
|
|
109
|
-
this.state = { status: 'unlocked' };
|
|
110
|
-
// Notify next waiting operation
|
|
111
|
-
const next = this.queue.shift();
|
|
112
|
-
if (next) {
|
|
113
|
-
next();
|
|
114
|
-
}
|
|
115
|
-
}
|
|
116
|
-
/**
|
|
117
|
-
* Execute function with automatic lock management
|
|
118
|
-
*
|
|
119
|
-
* This is safer than manual acquire/release because:
|
|
120
|
-
* 1. Guarantees release even if fn throws
|
|
121
|
-
* 2. Prevents forgetting to release
|
|
122
|
-
* 3. Returns Result type for explicit error handling
|
|
123
|
-
*/
|
|
124
|
-
async runExclusive(key, fn) {
|
|
125
|
-
const token = await this.acquire(key);
|
|
126
|
-
try {
|
|
127
|
-
const result = await fn();
|
|
128
|
-
return Ok(result);
|
|
129
|
-
}
|
|
130
|
-
catch (error) {
|
|
131
|
-
return Err(error instanceof Error ? error : new Error(String(error)));
|
|
132
|
-
}
|
|
133
|
-
finally {
|
|
134
|
-
// Always release, even if fn throws
|
|
135
|
-
if (!token.isReleased()) {
|
|
136
|
-
token.release();
|
|
137
|
-
}
|
|
138
|
-
}
|
|
139
|
-
}
|
|
140
|
-
/**
|
|
141
|
-
* Check if mutex is currently locked
|
|
142
|
-
*/
|
|
143
|
-
isLocked() {
|
|
144
|
-
return this.state.status === 'locked';
|
|
145
|
-
}
|
|
146
|
-
/**
|
|
147
|
-
* Get lock holder (for debugging)
|
|
148
|
-
*/
|
|
149
|
-
getLockHolder() {
|
|
150
|
-
return this.state.status === 'locked' ? this.state.key : null;
|
|
151
|
-
}
|
|
152
|
-
/**
|
|
153
|
-
* Get number of operations waiting for lock
|
|
154
|
-
*/
|
|
155
|
-
getQueueLength() {
|
|
156
|
-
return this.queue.length;
|
|
157
|
-
}
|
|
158
|
-
/**
|
|
159
|
-
* Get lock duration in milliseconds
|
|
160
|
-
*/
|
|
161
|
-
getLockDuration() {
|
|
162
|
-
if (this.state.status === 'locked') {
|
|
163
|
-
return Date.now() - this.state.acquiredAt;
|
|
164
|
-
}
|
|
165
|
-
return null;
|
|
166
|
-
}
|
|
167
|
-
}
|
|
168
|
-
/**
|
|
169
|
-
* Per-key mutex manager with type safety
|
|
170
|
-
*/
|
|
171
|
-
export class SafeKeyedMutex {
|
|
172
|
-
mutexes = new Map();
|
|
173
|
-
/** Get or create mutex for a key */
|
|
174
|
-
getMutex(key) {
|
|
175
|
-
const existing = this.mutexes.get(key);
|
|
176
|
-
if (existing)
|
|
177
|
-
return existing;
|
|
178
|
-
const mutex = new SafeMutex();
|
|
179
|
-
this.mutexes.set(key, mutex);
|
|
180
|
-
return mutex;
|
|
181
|
-
}
|
|
182
|
-
/**
|
|
183
|
-
* Acquire mutex for a specific key
|
|
184
|
-
* Returns a LockToken that proves ownership
|
|
185
|
-
*/
|
|
186
|
-
async acquire(key) {
|
|
187
|
-
const mutex = this.getMutex(key);
|
|
188
|
-
return await mutex.acquire(key);
|
|
189
|
-
}
|
|
190
|
-
/**
|
|
191
|
-
* Execute function with mutex protection for a specific key
|
|
192
|
-
* Returns Result type for explicit error handling
|
|
193
|
-
*/
|
|
194
|
-
async runExclusive(key, fn) {
|
|
195
|
-
const mutex = this.getMutex(key);
|
|
196
|
-
return await mutex.runExclusive(key, fn);
|
|
197
|
-
}
|
|
198
|
-
/**
|
|
199
|
-
* Check if a key is currently locked
|
|
200
|
-
*/
|
|
201
|
-
isLocked(key) {
|
|
202
|
-
const mutex = this.mutexes.get(key);
|
|
203
|
-
return mutex ? mutex.isLocked() : false;
|
|
204
|
-
}
|
|
205
|
-
/**
|
|
206
|
-
* Get lock holder for a key
|
|
207
|
-
*/
|
|
208
|
-
getLockHolder(key) {
|
|
209
|
-
const mutex = this.mutexes.get(key);
|
|
210
|
-
return mutex ? mutex.getLockHolder() : null;
|
|
211
|
-
}
|
|
212
|
-
/**
|
|
213
|
-
* Get number of operations waiting for a key
|
|
214
|
-
*/
|
|
215
|
-
getQueueLength(key) {
|
|
216
|
-
const mutex = this.mutexes.get(key);
|
|
217
|
-
return mutex ? mutex.getQueueLength() : 0;
|
|
218
|
-
}
|
|
219
|
-
/**
|
|
220
|
-
* Get lock duration for a key
|
|
221
|
-
*/
|
|
222
|
-
getLockDuration(key) {
|
|
223
|
-
const mutex = this.mutexes.get(key);
|
|
224
|
-
return mutex ? mutex.getLockDuration() : null;
|
|
225
|
-
}
|
|
226
|
-
/**
|
|
227
|
-
* Clear mutex for a key (cleanup)
|
|
228
|
-
*/
|
|
229
|
-
clear(key) {
|
|
230
|
-
this.mutexes.delete(key);
|
|
231
|
-
}
|
|
232
|
-
/**
|
|
233
|
-
* Clear all mutexes (cleanup)
|
|
234
|
-
*/
|
|
235
|
-
clearAll() {
|
|
236
|
-
this.mutexes.clear();
|
|
237
|
-
}
|
|
238
|
-
/**
|
|
239
|
-
* Get all active keys
|
|
240
|
-
*/
|
|
241
|
-
getKeys() {
|
|
242
|
-
return Array.from(this.mutexes.keys());
|
|
243
|
-
}
|
|
244
|
-
/**
|
|
245
|
-
* Get diagnostic info for all locks
|
|
246
|
-
*/
|
|
247
|
-
getDiagnostics() {
|
|
248
|
-
return Array.from(this.mutexes.entries()).map(([key, mutex]) => ({
|
|
249
|
-
key,
|
|
250
|
-
locked: mutex.isLocked(),
|
|
251
|
-
holder: mutex.getLockHolder(),
|
|
252
|
-
queueLength: mutex.getQueueLength(),
|
|
253
|
-
duration: mutex.getLockDuration()
|
|
254
|
-
}));
|
|
255
|
-
}
|
|
256
|
-
}
|
|
257
|
-
/**
|
|
258
|
-
* USAGE EXAMPLES - See tests/mcp/safe-mutex.bench.ts for comprehensive examples
|
|
259
|
-
*/
|
|
260
|
-
//# sourceMappingURL=mutex-safe.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"mutex-safe.js","sourceRoot":"","sources":["../../src/mcp/mutex-safe.ts"],"names":[],"mappings":"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"}
|