@stackmemoryai/stackmemory 0.5.59 → 0.5.62
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +105 -1
- package/dist/scripts/initialize.js +68 -1
- package/dist/scripts/initialize.js.map +2 -2
- package/dist/src/cli/claude-sm.js +130 -50
- package/dist/src/cli/claude-sm.js.map +2 -2
- package/dist/src/cli/index.js +18 -3
- package/dist/src/cli/index.js.map +3 -3
- package/dist/src/core/extensions/custom-tools.js +567 -0
- package/dist/src/core/extensions/custom-tools.js.map +7 -0
- package/dist/src/core/extensions/index.js +55 -0
- package/dist/src/core/extensions/index.js.map +7 -0
- package/dist/src/core/extensions/loader.js +709 -0
- package/dist/src/core/extensions/loader.js.map +7 -0
- package/dist/src/core/extensions/plugin-system.js +506 -0
- package/dist/src/core/extensions/plugin-system.js.map +7 -0
- package/dist/src/core/extensions/provider-adapter.js +617 -0
- package/dist/src/core/extensions/provider-adapter.js.map +7 -0
- package/dist/src/core/extensions/sandbox-runtime.js +664 -0
- package/dist/src/core/extensions/sandbox-runtime.js.map +7 -0
- package/dist/src/core/retrieval/index.js +2 -0
- package/dist/src/core/retrieval/index.js.map +2 -2
- package/dist/src/core/retrieval/privacy-filter.js +129 -0
- package/dist/src/core/retrieval/privacy-filter.js.map +7 -0
- package/dist/src/core/retrieval/unified-context-assembler.js +273 -0
- package/dist/src/core/retrieval/unified-context-assembler.js.map +7 -0
- package/dist/src/core/storage/chromadb-adapter.js +32 -6
- package/dist/src/core/storage/chromadb-adapter.js.map +2 -2
- package/dist/src/hooks/diffmem-hooks.js +377 -0
- package/dist/src/hooks/diffmem-hooks.js.map +7 -0
- package/dist/src/integrations/diffmem/client.js +209 -0
- package/dist/src/integrations/diffmem/client.js.map +7 -0
- package/dist/src/integrations/diffmem/config.js +15 -0
- package/dist/src/integrations/diffmem/config.js.map +7 -0
- package/dist/{core/session → src/integrations/diffmem}/index.js +5 -8
- package/dist/src/integrations/diffmem/index.js.map +7 -0
- package/dist/src/integrations/mcp/handlers/diffmem-handlers.js +456 -0
- package/dist/src/integrations/mcp/handlers/diffmem-handlers.js.map +7 -0
- package/dist/src/integrations/mcp/server.js +121 -0
- package/dist/src/integrations/mcp/server.js.map +2 -2
- package/dist/src/skills/repo-ingestion-skill.js +35 -12
- package/dist/src/skills/repo-ingestion-skill.js.map +2 -2
- package/package.json +13 -7
- package/scripts/background-sync-manager.js +145 -83
- package/scripts/claude-sm-autostart.js +17 -12
- package/scripts/gepa/README.md +275 -0
- package/scripts/gepa/config.json +53 -0
- package/scripts/gepa/evals/coding-tasks.jsonl +5 -0
- package/scripts/gepa/evals/fixtures/buggy-loop.js +18 -0
- package/scripts/gepa/evals/fixtures/callback-hell.js +53 -0
- package/scripts/gepa/generations/gen-000/baseline.md +124 -0
- package/scripts/gepa/hooks/auto-optimize.js +494 -0
- package/scripts/gepa/hooks/eval-tracker.js +203 -0
- package/scripts/gepa/hooks/reflect.js +311 -0
- package/scripts/gepa/optimize.js +611 -0
- package/scripts/gepa/state.json +14 -0
- package/scripts/initialize.ts +83 -1
- package/scripts/test-pre-publish-quick.sh +1 -1
- package/dist/agents/core/agent-task-manager.js +0 -527
- package/dist/agents/core/agent-task-manager.js.map +0 -7
- package/dist/agents/testing-agent.js +0 -614
- package/dist/agents/testing-agent.js.map +0 -7
- package/dist/agents/verifiers/base-verifier.js +0 -133
- package/dist/agents/verifiers/base-verifier.js.map +0 -7
- package/dist/agents/verifiers/formatter-verifier.js +0 -130
- package/dist/agents/verifiers/formatter-verifier.js.map +0 -7
- package/dist/agents/verifiers/llm-judge.js +0 -252
- package/dist/agents/verifiers/llm-judge.js.map +0 -7
- package/dist/cli/auto-detect.js +0 -321
- package/dist/cli/auto-detect.js.map +0 -7
- package/dist/cli/browser-test.js +0 -33
- package/dist/cli/browser-test.js.map +0 -7
- package/dist/cli/claude-sm-danger.js +0 -21
- package/dist/cli/claude-sm-danger.js.map +0 -7
- package/dist/cli/claude-sm.js +0 -1156
- package/dist/cli/claude-sm.js.map +0 -7
- package/dist/cli/codex-sm-danger.js +0 -21
- package/dist/cli/codex-sm-danger.js.map +0 -7
- package/dist/cli/codex-sm.js +0 -349
- package/dist/cli/codex-sm.js.map +0 -7
- package/dist/cli/commands/api.js +0 -232
- package/dist/cli/commands/api.js.map +0 -7
- package/dist/cli/commands/auto-background.js +0 -180
- package/dist/cli/commands/auto-background.js.map +0 -7
- package/dist/cli/commands/cleanup-processes.js +0 -68
- package/dist/cli/commands/cleanup-processes.js.map +0 -7
- package/dist/cli/commands/clear.js +0 -202
- package/dist/cli/commands/clear.js.map +0 -7
- package/dist/cli/commands/config.js +0 -445
- package/dist/cli/commands/config.js.map +0 -7
- package/dist/cli/commands/context-rehydrate.js +0 -751
- package/dist/cli/commands/context-rehydrate.js.map +0 -7
- package/dist/cli/commands/context.js +0 -343
- package/dist/cli/commands/context.js.map +0 -7
- package/dist/cli/commands/daemon.js +0 -392
- package/dist/cli/commands/daemon.js.map +0 -7
- package/dist/cli/commands/dashboard.js +0 -210
- package/dist/cli/commands/dashboard.js.map +0 -7
- package/dist/cli/commands/db.js +0 -147
- package/dist/cli/commands/db.js.map +0 -7
- package/dist/cli/commands/decision.js +0 -266
- package/dist/cli/commands/decision.js.map +0 -7
- package/dist/cli/commands/discovery.js +0 -279
- package/dist/cli/commands/discovery.js.map +0 -7
- package/dist/cli/commands/handoff.js +0 -624
- package/dist/cli/commands/handoff.js.map +0 -7
- package/dist/cli/commands/hooks.js +0 -298
- package/dist/cli/commands/hooks.js.map +0 -7
- package/dist/cli/commands/linear-unified.js +0 -353
- package/dist/cli/commands/linear-unified.js.map +0 -7
- package/dist/cli/commands/linear.js +0 -529
- package/dist/cli/commands/linear.js.map +0 -7
- package/dist/cli/commands/log.js +0 -169
- package/dist/cli/commands/log.js.map +0 -7
- package/dist/cli/commands/login.js +0 -172
- package/dist/cli/commands/login.js.map +0 -7
- package/dist/cli/commands/migrate.js +0 -240
- package/dist/cli/commands/migrate.js.map +0 -7
- package/dist/cli/commands/model.js +0 -533
- package/dist/cli/commands/model.js.map +0 -7
- package/dist/cli/commands/monitor.js +0 -313
- package/dist/cli/commands/monitor.js.map +0 -7
- package/dist/cli/commands/onboard.js +0 -536
- package/dist/cli/commands/onboard.js.map +0 -7
- package/dist/cli/commands/projects.js +0 -199
- package/dist/cli/commands/projects.js.map +0 -7
- package/dist/cli/commands/quality.js +0 -413
- package/dist/cli/commands/quality.js.map +0 -7
- package/dist/cli/commands/ralph.js +0 -909
- package/dist/cli/commands/ralph.js.map +0 -7
- package/dist/cli/commands/retrieval.js +0 -248
- package/dist/cli/commands/retrieval.js.map +0 -7
- package/dist/cli/commands/search.js +0 -173
- package/dist/cli/commands/search.js.map +0 -7
- package/dist/cli/commands/service.js +0 -749
- package/dist/cli/commands/service.js.map +0 -7
- package/dist/cli/commands/session.js +0 -200
- package/dist/cli/commands/session.js.map +0 -7
- package/dist/cli/commands/settings.js +0 -306
- package/dist/cli/commands/settings.js.map +0 -7
- package/dist/cli/commands/setup.js +0 -701
- package/dist/cli/commands/setup.js.map +0 -7
- package/dist/cli/commands/shell.js +0 -249
- package/dist/cli/commands/shell.js.map +0 -7
- package/dist/cli/commands/signup.js +0 -50
- package/dist/cli/commands/signup.js.map +0 -7
- package/dist/cli/commands/skills.js +0 -470
- package/dist/cli/commands/skills.js.map +0 -7
- package/dist/cli/commands/sms-notify.js +0 -795
- package/dist/cli/commands/sms-notify.js.map +0 -7
- package/dist/cli/commands/storage-tier.js +0 -183
- package/dist/cli/commands/storage-tier.js.map +0 -7
- package/dist/cli/commands/storage.js +0 -360
- package/dist/cli/commands/storage.js.map +0 -7
- package/dist/cli/commands/sweep.js +0 -249
- package/dist/cli/commands/sweep.js.map +0 -7
- package/dist/cli/commands/tasks.js +0 -213
- package/dist/cli/commands/tasks.js.map +0 -7
- package/dist/cli/commands/test.js +0 -286
- package/dist/cli/commands/test.js.map +0 -7
- package/dist/cli/commands/workflow.js +0 -142
- package/dist/cli/commands/workflow.js.map +0 -7
- package/dist/cli/commands/worktree.js +0 -319
- package/dist/cli/commands/worktree.js.map +0 -7
- package/dist/cli/index.js +0 -594
- package/dist/cli/index.js.map +0 -7
- package/dist/cli/opencode-sm.js +0 -448
- package/dist/cli/opencode-sm.js.map +0 -7
- package/dist/cli/utils/viewer.js +0 -96
- package/dist/cli/utils/viewer.js.map +0 -7
- package/dist/core/analytics/team-analytics.js +0 -378
- package/dist/core/analytics/team-analytics.js.map +0 -7
- package/dist/core/config/config-manager.js +0 -398
- package/dist/core/config/config-manager.js.map +0 -7
- package/dist/core/config/feature-flags.js +0 -76
- package/dist/core/config/feature-flags.js.map +0 -7
- package/dist/core/config/storage-config.js +0 -115
- package/dist/core/config/storage-config.js.map +0 -7
- package/dist/core/config/types.js +0 -144
- package/dist/core/config/types.js.map +0 -7
- package/dist/core/context/auto-context.js +0 -80
- package/dist/core/context/auto-context.js.map +0 -7
- package/dist/core/context/dual-stack-manager.js +0 -870
- package/dist/core/context/dual-stack-manager.js.map +0 -7
- package/dist/core/context/enhanced-rehydration.js +0 -994
- package/dist/core/context/enhanced-rehydration.js.map +0 -7
- package/dist/core/context/frame-database.js +0 -479
- package/dist/core/context/frame-database.js.map +0 -7
- package/dist/core/context/frame-digest.js +0 -250
- package/dist/core/context/frame-digest.js.map +0 -7
- package/dist/core/context/frame-handoff-manager.js +0 -778
- package/dist/core/context/frame-handoff-manager.js.map +0 -7
- package/dist/core/context/frame-lifecycle-hooks.js +0 -119
- package/dist/core/context/frame-lifecycle-hooks.js.map +0 -7
- package/dist/core/context/frame-manager.js +0 -1069
- package/dist/core/context/frame-manager.js.map +0 -7
- package/dist/core/context/frame-recovery.js +0 -302
- package/dist/core/context/frame-recovery.js.map +0 -7
- package/dist/core/context/frame-stack.js +0 -314
- package/dist/core/context/frame-stack.js.map +0 -7
- package/dist/core/context/frame-types.js +0 -5
- package/dist/core/context/frame-types.js.map +0 -7
- package/dist/core/context/incremental-gc.js +0 -290
- package/dist/core/context/incremental-gc.js.map +0 -7
- package/dist/core/context/index.js +0 -25
- package/dist/core/context/index.js.map +0 -7
- package/dist/core/context/model-aware-compaction.js +0 -623
- package/dist/core/context/model-aware-compaction.js.map +0 -7
- package/dist/core/context/permission-manager.js +0 -185
- package/dist/core/context/permission-manager.js.map +0 -7
- package/dist/core/context/recursive-context-manager.js +0 -592
- package/dist/core/context/recursive-context-manager.js.map +0 -7
- package/dist/core/context/refactored-frame-manager.js +0 -754
- package/dist/core/context/refactored-frame-manager.js.map +0 -7
- package/dist/core/context/shared-context-layer.js +0 -621
- package/dist/core/context/shared-context-layer.js.map +0 -7
- package/dist/core/context/stack-merge-resolver.js +0 -749
- package/dist/core/context/stack-merge-resolver.js.map +0 -7
- package/dist/core/context/validation.js +0 -130
- package/dist/core/context/validation.js.map +0 -7
- package/dist/core/database/batch-operations.js +0 -384
- package/dist/core/database/batch-operations.js.map +0 -7
- package/dist/core/database/connection-pool.js +0 -330
- package/dist/core/database/connection-pool.js.map +0 -7
- package/dist/core/database/database-adapter.js +0 -60
- package/dist/core/database/database-adapter.js.map +0 -7
- package/dist/core/database/migration-manager.js +0 -614
- package/dist/core/database/migration-manager.js.map +0 -7
- package/dist/core/database/paradedb-adapter.js +0 -990
- package/dist/core/database/paradedb-adapter.js.map +0 -7
- package/dist/core/database/query-cache.js +0 -298
- package/dist/core/database/query-cache.js.map +0 -7
- package/dist/core/database/query-router.js +0 -430
- package/dist/core/database/query-router.js.map +0 -7
- package/dist/core/database/sqlite-adapter.js +0 -738
- package/dist/core/database/sqlite-adapter.js.map +0 -7
- package/dist/core/digest/enhanced-hybrid-digest.js +0 -277
- package/dist/core/digest/enhanced-hybrid-digest.js.map +0 -7
- package/dist/core/digest/frame-digest-integration.js +0 -176
- package/dist/core/digest/frame-digest-integration.js.map +0 -7
- package/dist/core/digest/hybrid-digest-generator.js +0 -553
- package/dist/core/digest/hybrid-digest-generator.js.map +0 -7
- package/dist/core/digest/index.js +0 -9
- package/dist/core/digest/index.js.map +0 -7
- package/dist/core/digest/types.js +0 -25
- package/dist/core/digest/types.js.map +0 -7
- package/dist/core/errors/error-utils.js +0 -208
- package/dist/core/errors/error-utils.js.map +0 -7
- package/dist/core/errors/index.js +0 -521
- package/dist/core/errors/index.js.map +0 -7
- package/dist/core/errors/recovery.js +0 -269
- package/dist/core/errors/recovery.js.map +0 -7
- package/dist/core/execution/parallel-executor.js +0 -258
- package/dist/core/execution/parallel-executor.js.map +0 -7
- package/dist/core/frame/workflow-templates.js +0 -319
- package/dist/core/frame/workflow-templates.js.map +0 -7
- package/dist/core/merge/conflict-detector.js +0 -431
- package/dist/core/merge/conflict-detector.js.map +0 -7
- package/dist/core/merge/index.js +0 -9
- package/dist/core/merge/index.js.map +0 -7
- package/dist/core/merge/resolution-engine.js +0 -558
- package/dist/core/merge/resolution-engine.js.map +0 -7
- package/dist/core/merge/stack-diff.js +0 -532
- package/dist/core/merge/stack-diff.js.map +0 -7
- package/dist/core/merge/unified-merge-resolver.js +0 -303
- package/dist/core/merge/unified-merge-resolver.js.map +0 -7
- package/dist/core/models/fallback-monitor.js +0 -232
- package/dist/core/models/fallback-monitor.js.map +0 -7
- package/dist/core/models/model-router.js +0 -340
- package/dist/core/models/model-router.js.map +0 -7
- package/dist/core/monitoring/error-handler.js +0 -49
- package/dist/core/monitoring/error-handler.js.map +0 -7
- package/dist/core/monitoring/logger.js +0 -202
- package/dist/core/monitoring/logger.js.map +0 -7
- package/dist/core/monitoring/metrics.js +0 -172
- package/dist/core/monitoring/metrics.js.map +0 -7
- package/dist/core/monitoring/progress-tracker.js +0 -189
- package/dist/core/monitoring/progress-tracker.js.map +0 -7
- package/dist/core/monitoring/session-monitor.js +0 -300
- package/dist/core/monitoring/session-monitor.js.map +0 -7
- package/dist/core/performance/context-cache.js +0 -273
- package/dist/core/performance/context-cache.js.map +0 -7
- package/dist/core/performance/index.js +0 -11
- package/dist/core/performance/index.js.map +0 -7
- package/dist/core/performance/lazy-context-loader.js +0 -327
- package/dist/core/performance/lazy-context-loader.js.map +0 -7
- package/dist/core/performance/monitor.js +0 -221
- package/dist/core/performance/monitor.js.map +0 -7
- package/dist/core/performance/optimized-frame-context.js +0 -345
- package/dist/core/performance/optimized-frame-context.js.map +0 -7
- package/dist/core/performance/performance-benchmark.js +0 -277
- package/dist/core/performance/performance-benchmark.js.map +0 -7
- package/dist/core/performance/performance-profiler.js +0 -370
- package/dist/core/performance/performance-profiler.js.map +0 -7
- package/dist/core/performance/streaming-jsonl-parser.js +0 -195
- package/dist/core/performance/streaming-jsonl-parser.js.map +0 -7
- package/dist/core/persistence/postgres-adapter.js +0 -349
- package/dist/core/persistence/postgres-adapter.js.map +0 -7
- package/dist/core/projects/project-isolation.js +0 -201
- package/dist/core/projects/project-isolation.js.map +0 -7
- package/dist/core/projects/project-manager.js +0 -697
- package/dist/core/projects/project-manager.js.map +0 -7
- package/dist/core/query/query-parser.js +0 -370
- package/dist/core/query/query-parser.js.map +0 -7
- package/dist/core/query/query-templates.js +0 -321
- package/dist/core/query/query-templates.js.map +0 -7
- package/dist/core/retrieval/context-retriever.js +0 -479
- package/dist/core/retrieval/context-retriever.js.map +0 -7
- package/dist/core/retrieval/graph-retrieval.js +0 -662
- package/dist/core/retrieval/graph-retrieval.js.map +0 -7
- package/dist/core/retrieval/hierarchical-retrieval.js +0 -656
- package/dist/core/retrieval/hierarchical-retrieval.js.map +0 -7
- package/dist/core/retrieval/index.js +0 -8
- package/dist/core/retrieval/index.js.map +0 -7
- package/dist/core/retrieval/llm-context-retrieval.js +0 -613
- package/dist/core/retrieval/llm-context-retrieval.js.map +0 -7
- package/dist/core/retrieval/llm-provider.js +0 -151
- package/dist/core/retrieval/llm-provider.js.map +0 -7
- package/dist/core/retrieval/retrieval-audit.js +0 -236
- package/dist/core/retrieval/retrieval-audit.js.map +0 -7
- package/dist/core/retrieval/retrieval-benchmarks.js +0 -521
- package/dist/core/retrieval/retrieval-benchmarks.js.map +0 -7
- package/dist/core/retrieval/summary-generator.js +0 -589
- package/dist/core/retrieval/summary-generator.js.map +0 -7
- package/dist/core/retrieval/types.js +0 -21
- package/dist/core/retrieval/types.js.map +0 -7
- package/dist/core/security/index.js +0 -35
- package/dist/core/security/index.js.map +0 -7
- package/dist/core/security/input-sanitizer.js +0 -321
- package/dist/core/security/input-sanitizer.js.map +0 -7
- package/dist/core/session/clear-survival.js +0 -465
- package/dist/core/session/clear-survival.js.map +0 -7
- package/dist/core/session/enhanced-handoff.js +0 -792
- package/dist/core/session/enhanced-handoff.js.map +0 -7
- package/dist/core/session/handoff-generator.js +0 -343
- package/dist/core/session/handoff-generator.js.map +0 -7
- package/dist/core/session/index.js.map +0 -7
- package/dist/core/session/session-manager.js +0 -347
- package/dist/core/session/session-manager.js.map +0 -7
- package/dist/core/skills/index.js +0 -7
- package/dist/core/skills/index.js.map +0 -7
- package/dist/core/skills/skill-storage.js +0 -764
- package/dist/core/skills/skill-storage.js.map +0 -7
- package/dist/core/skills/types.js +0 -193
- package/dist/core/skills/types.js.map +0 -7
- package/dist/core/storage/chromadb-adapter.js +0 -354
- package/dist/core/storage/chromadb-adapter.js.map +0 -7
- package/dist/core/storage/infinite-storage.js +0 -510
- package/dist/core/storage/infinite-storage.js.map +0 -7
- package/dist/core/storage/railway-optimized-storage.js +0 -591
- package/dist/core/storage/railway-optimized-storage.js.map +0 -7
- package/dist/core/storage/remote-storage.js +0 -489
- package/dist/core/storage/remote-storage.js.map +0 -7
- package/dist/core/storage/two-tier-storage.js +0 -766
- package/dist/core/storage/two-tier-storage.js.map +0 -7
- package/dist/core/trace/cli-trace-wrapper.js +0 -132
- package/dist/core/trace/cli-trace-wrapper.js.map +0 -7
- package/dist/core/trace/db-trace-wrapper.js +0 -247
- package/dist/core/trace/db-trace-wrapper.js.map +0 -7
- package/dist/core/trace/debug-trace.js +0 -417
- package/dist/core/trace/debug-trace.js.map +0 -7
- package/dist/core/trace/index.js +0 -109
- package/dist/core/trace/index.js.map +0 -7
- package/dist/core/trace/linear-api-wrapper.js +0 -178
- package/dist/core/trace/linear-api-wrapper.js.map +0 -7
- package/dist/core/trace/trace-demo.js +0 -154
- package/dist/core/trace/trace-demo.js.map +0 -7
- package/dist/core/trace/trace-detector.demo.js +0 -142
- package/dist/core/trace/trace-detector.demo.js.map +0 -7
- package/dist/core/trace/trace-detector.js +0 -528
- package/dist/core/trace/trace-detector.js.map +0 -7
- package/dist/core/trace/trace-store.js +0 -345
- package/dist/core/trace/trace-store.js.map +0 -7
- package/dist/core/trace/types.js +0 -77
- package/dist/core/trace/types.js.map +0 -7
- package/dist/core/utils/async-mutex.js +0 -114
- package/dist/core/utils/async-mutex.js.map +0 -7
- package/dist/core/utils/compression.js +0 -83
- package/dist/core/utils/compression.js.map +0 -7
- package/dist/core/utils/update-checker.js +0 -218
- package/dist/core/utils/update-checker.js.map +0 -7
- package/dist/core/worktree/worktree-manager.js +0 -465
- package/dist/core/worktree/worktree-manager.js.map +0 -7
- package/dist/daemon/daemon-config.js +0 -149
- package/dist/daemon/daemon-config.js.map +0 -7
- package/dist/daemon/services/context-service.js +0 -122
- package/dist/daemon/services/context-service.js.map +0 -7
- package/dist/daemon/services/linear-service.js +0 -136
- package/dist/daemon/services/linear-service.js.map +0 -7
- package/dist/daemon/session-daemon.js +0 -312
- package/dist/daemon/session-daemon.js.map +0 -7
- package/dist/daemon/unified-daemon.js +0 -276
- package/dist/daemon/unified-daemon.js.map +0 -7
- package/dist/features/analytics/api/analytics-api.js +0 -287
- package/dist/features/analytics/api/analytics-api.js.map +0 -7
- package/dist/features/analytics/core/analytics-service.js +0 -282
- package/dist/features/analytics/core/analytics-service.js.map +0 -7
- package/dist/features/analytics/index.js +0 -18
- package/dist/features/analytics/index.js.map +0 -7
- package/dist/features/analytics/queries/metrics-queries.js +0 -277
- package/dist/features/analytics/queries/metrics-queries.js.map +0 -7
- package/dist/features/analytics/types/metrics.js +0 -5
- package/dist/features/analytics/types/metrics.js.map +0 -7
- package/dist/features/browser/browser-mcp.js +0 -492
- package/dist/features/browser/browser-mcp.js.map +0 -7
- package/dist/features/sweep/index.js +0 -20
- package/dist/features/sweep/index.js.map +0 -7
- package/dist/features/sweep/prediction-client.js +0 -155
- package/dist/features/sweep/prediction-client.js.map +0 -7
- package/dist/features/sweep/prompt-builder.js +0 -85
- package/dist/features/sweep/prompt-builder.js.map +0 -7
- package/dist/features/sweep/pty-wrapper.js +0 -171
- package/dist/features/sweep/pty-wrapper.js.map +0 -7
- package/dist/features/sweep/state-watcher.js +0 -87
- package/dist/features/sweep/state-watcher.js.map +0 -7
- package/dist/features/sweep/status-bar.js +0 -88
- package/dist/features/sweep/status-bar.js.map +0 -7
- package/dist/features/sweep/sweep-server-manager.js +0 -226
- package/dist/features/sweep/sweep-server-manager.js.map +0 -7
- package/dist/features/sweep/tab-interceptor.js +0 -38
- package/dist/features/sweep/tab-interceptor.js.map +0 -7
- package/dist/features/sweep/types.js +0 -18
- package/dist/features/sweep/types.js.map +0 -7
- package/dist/features/tasks/linear-task-manager.js +0 -487
- package/dist/features/tasks/linear-task-manager.js.map +0 -7
- package/dist/features/tasks/task-aware-context.js +0 -410
- package/dist/features/tasks/task-aware-context.js.map +0 -7
- package/dist/features/tui/simple-monitor.js +0 -116
- package/dist/features/tui/simple-monitor.js.map +0 -7
- package/dist/features/tui/swarm-monitor.js +0 -648
- package/dist/features/tui/swarm-monitor.js.map +0 -7
- package/dist/features/web/client/stores/task-store.js +0 -26
- package/dist/features/web/client/stores/task-store.js.map +0 -7
- package/dist/features/web/server/index.js +0 -194
- package/dist/features/web/server/index.js.map +0 -7
- package/dist/hooks/auto-background.js +0 -151
- package/dist/hooks/auto-background.js.map +0 -7
- package/dist/hooks/claude-code-whatsapp-hook.js +0 -197
- package/dist/hooks/claude-code-whatsapp-hook.js.map +0 -7
- package/dist/hooks/config.js +0 -150
- package/dist/hooks/config.js.map +0 -7
- package/dist/hooks/daemon.js +0 -364
- package/dist/hooks/daemon.js.map +0 -7
- package/dist/hooks/events.js +0 -58
- package/dist/hooks/events.js.map +0 -7
- package/dist/hooks/index.js +0 -12
- package/dist/hooks/index.js.map +0 -7
- package/dist/hooks/linear-task-picker.js +0 -186
- package/dist/hooks/linear-task-picker.js.map +0 -7
- package/dist/hooks/schemas.js +0 -197
- package/dist/hooks/schemas.js.map +0 -7
- package/dist/hooks/secure-fs.js +0 -49
- package/dist/hooks/secure-fs.js.map +0 -7
- package/dist/hooks/security-logger.js +0 -155
- package/dist/hooks/security-logger.js.map +0 -7
- package/dist/hooks/session-summary.js +0 -222
- package/dist/hooks/session-summary.js.map +0 -7
- package/dist/hooks/sms-action-runner.js +0 -371
- package/dist/hooks/sms-action-runner.js.map +0 -7
- package/dist/hooks/sms-notify.js +0 -506
- package/dist/hooks/sms-notify.js.map +0 -7
- package/dist/hooks/sms-watcher.js +0 -93
- package/dist/hooks/sms-watcher.js.map +0 -7
- package/dist/hooks/sms-webhook.js +0 -555
- package/dist/hooks/sms-webhook.js.map +0 -7
- package/dist/hooks/whatsapp-commands.js +0 -479
- package/dist/hooks/whatsapp-commands.js.map +0 -7
- package/dist/hooks/whatsapp-scheduler.js +0 -317
- package/dist/hooks/whatsapp-scheduler.js.map +0 -7
- package/dist/hooks/whatsapp-sync.js +0 -409
- package/dist/hooks/whatsapp-sync.js.map +0 -7
- package/dist/index.js +0 -25
- package/dist/index.js.map +0 -7
- package/dist/integrations/anthropic/client.js +0 -263
- package/dist/integrations/anthropic/client.js.map +0 -7
- package/dist/integrations/claude-code/agent-bridge.js +0 -768
- package/dist/integrations/claude-code/agent-bridge.js.map +0 -7
- package/dist/integrations/claude-code/enhanced-pre-clear-hooks.js +0 -459
- package/dist/integrations/claude-code/enhanced-pre-clear-hooks.js.map +0 -7
- package/dist/integrations/claude-code/lifecycle-hooks.js +0 -254
- package/dist/integrations/claude-code/lifecycle-hooks.js.map +0 -7
- package/dist/integrations/claude-code/post-task-hooks.js +0 -545
- package/dist/integrations/claude-code/post-task-hooks.js.map +0 -7
- package/dist/integrations/claude-code/subagent-client-stub.js +0 -20
- package/dist/integrations/claude-code/subagent-client-stub.js.map +0 -7
- package/dist/integrations/claude-code/subagent-client.js +0 -511
- package/dist/integrations/claude-code/subagent-client.js.map +0 -7
- package/dist/integrations/claude-code/task-coordinator.js +0 -360
- package/dist/integrations/claude-code/task-coordinator.js.map +0 -7
- package/dist/integrations/linear/auth.js +0 -337
- package/dist/integrations/linear/auth.js.map +0 -7
- package/dist/integrations/linear/auto-sync.js +0 -258
- package/dist/integrations/linear/auto-sync.js.map +0 -7
- package/dist/integrations/linear/client.js +0 -634
- package/dist/integrations/linear/client.js.map +0 -7
- package/dist/integrations/linear/config.js +0 -130
- package/dist/integrations/linear/config.js.map +0 -7
- package/dist/integrations/linear/migration.js +0 -361
- package/dist/integrations/linear/migration.js.map +0 -7
- package/dist/integrations/linear/oauth-server.js +0 -454
- package/dist/integrations/linear/oauth-server.js.map +0 -7
- package/dist/integrations/linear/rest-client.js +0 -213
- package/dist/integrations/linear/rest-client.js.map +0 -7
- package/dist/integrations/linear/sync-manager.js +0 -236
- package/dist/integrations/linear/sync-manager.js.map +0 -7
- package/dist/integrations/linear/sync-service.js +0 -231
- package/dist/integrations/linear/sync-service.js.map +0 -7
- package/dist/integrations/linear/sync.js +0 -782
- package/dist/integrations/linear/sync.js.map +0 -7
- package/dist/integrations/linear/types.js +0 -5
- package/dist/integrations/linear/types.js.map +0 -7
- package/dist/integrations/linear/unified-sync.js +0 -589
- package/dist/integrations/linear/unified-sync.js.map +0 -7
- package/dist/integrations/linear/webhook-handler.js +0 -219
- package/dist/integrations/linear/webhook-handler.js.map +0 -7
- package/dist/integrations/linear/webhook-server.js +0 -218
- package/dist/integrations/linear/webhook-server.js.map +0 -7
- package/dist/integrations/linear/webhook.js +0 -291
- package/dist/integrations/linear/webhook.js.map +0 -7
- package/dist/integrations/mcp/handlers/code-execution-handlers.js +0 -266
- package/dist/integrations/mcp/handlers/code-execution-handlers.js.map +0 -7
- package/dist/integrations/mcp/handlers/context-handlers.js +0 -257
- package/dist/integrations/mcp/handlers/context-handlers.js.map +0 -7
- package/dist/integrations/mcp/handlers/discovery-handlers.js +0 -497
- package/dist/integrations/mcp/handlers/discovery-handlers.js.map +0 -7
- package/dist/integrations/mcp/handlers/index.js +0 -166
- package/dist/integrations/mcp/handlers/index.js.map +0 -7
- package/dist/integrations/mcp/handlers/linear-handlers.js +0 -247
- package/dist/integrations/mcp/handlers/linear-handlers.js.map +0 -7
- package/dist/integrations/mcp/handlers/skill-handlers.js +0 -529
- package/dist/integrations/mcp/handlers/skill-handlers.js.map +0 -7
- package/dist/integrations/mcp/handlers/task-handlers.js +0 -239
- package/dist/integrations/mcp/handlers/task-handlers.js.map +0 -7
- package/dist/integrations/mcp/handlers/trace-handlers.js +0 -308
- package/dist/integrations/mcp/handlers/trace-handlers.js.map +0 -7
- package/dist/integrations/mcp/index.js +0 -23
- package/dist/integrations/mcp/index.js.map +0 -7
- package/dist/integrations/mcp/middleware/tool-scoring.js +0 -356
- package/dist/integrations/mcp/middleware/tool-scoring.js.map +0 -7
- package/dist/integrations/mcp/refactored-server.js +0 -374
- package/dist/integrations/mcp/refactored-server.js.map +0 -7
- package/dist/integrations/mcp/remote-server.js +0 -682
- package/dist/integrations/mcp/remote-server.js.map +0 -7
- package/dist/integrations/mcp/schemas.js +0 -147
- package/dist/integrations/mcp/schemas.js.map +0 -7
- package/dist/integrations/mcp/server.js +0 -1975
- package/dist/integrations/mcp/server.js.map +0 -7
- package/dist/integrations/mcp/tool-definitions-code.js +0 -125
- package/dist/integrations/mcp/tool-definitions-code.js.map +0 -7
- package/dist/integrations/mcp/tool-definitions.js +0 -702
- package/dist/integrations/mcp/tool-definitions.js.map +0 -7
- package/dist/integrations/mcp/trace-test.js +0 -48
- package/dist/integrations/mcp/trace-test.js.map +0 -7
- package/dist/integrations/pg-aiguide/embedding-provider.js +0 -189
- package/dist/integrations/pg-aiguide/embedding-provider.js.map +0 -7
- package/dist/integrations/pg-aiguide/semantic-search.js +0 -187
- package/dist/integrations/pg-aiguide/semantic-search.js.map +0 -7
- package/dist/integrations/pg-aiguide/timescale-analytics.js +0 -224
- package/dist/integrations/pg-aiguide/timescale-analytics.js.map +0 -7
- package/dist/integrations/ralph/bridge/ralph-stackmemory-bridge.js +0 -860
- package/dist/integrations/ralph/bridge/ralph-stackmemory-bridge.js.map +0 -7
- package/dist/integrations/ralph/context/context-budget-manager.js +0 -301
- package/dist/integrations/ralph/context/context-budget-manager.js.map +0 -7
- package/dist/integrations/ralph/context/stackmemory-context-loader.js +0 -360
- package/dist/integrations/ralph/context/stackmemory-context-loader.js.map +0 -7
- package/dist/integrations/ralph/coordination/enhanced-coordination.js +0 -410
- package/dist/integrations/ralph/coordination/enhanced-coordination.js.map +0 -7
- package/dist/integrations/ralph/index.js +0 -18
- package/dist/integrations/ralph/index.js.map +0 -7
- package/dist/integrations/ralph/learning/pattern-learner.js +0 -401
- package/dist/integrations/ralph/learning/pattern-learner.js.map +0 -7
- package/dist/integrations/ralph/lifecycle/iteration-lifecycle.js +0 -448
- package/dist/integrations/ralph/lifecycle/iteration-lifecycle.js.map +0 -7
- package/dist/integrations/ralph/monitoring/swarm-dashboard.js +0 -294
- package/dist/integrations/ralph/monitoring/swarm-dashboard.js.map +0 -7
- package/dist/integrations/ralph/monitoring/swarm-registry.js +0 -108
- package/dist/integrations/ralph/monitoring/swarm-registry.js.map +0 -7
- package/dist/integrations/ralph/orchestration/multi-loop-orchestrator.js +0 -463
- package/dist/integrations/ralph/orchestration/multi-loop-orchestrator.js.map +0 -7
- package/dist/integrations/ralph/patterns/compounding-engineering-pattern.js +0 -400
- package/dist/integrations/ralph/patterns/compounding-engineering-pattern.js.map +0 -7
- package/dist/integrations/ralph/patterns/extended-coherence-sessions.js +0 -473
- package/dist/integrations/ralph/patterns/extended-coherence-sessions.js.map +0 -7
- package/dist/integrations/ralph/patterns/oracle-worker-pattern.js +0 -388
- package/dist/integrations/ralph/patterns/oracle-worker-pattern.js.map +0 -7
- package/dist/integrations/ralph/performance/performance-optimizer.js +0 -358
- package/dist/integrations/ralph/performance/performance-optimizer.js.map +0 -7
- package/dist/integrations/ralph/ralph-integration-demo.js +0 -182
- package/dist/integrations/ralph/ralph-integration-demo.js.map +0 -7
- package/dist/integrations/ralph/recovery/crash-recovery.js +0 -462
- package/dist/integrations/ralph/recovery/crash-recovery.js.map +0 -7
- package/dist/integrations/ralph/state/state-reconciler.js +0 -404
- package/dist/integrations/ralph/state/state-reconciler.js.map +0 -7
- package/dist/integrations/ralph/swarm/git-workflow-manager.js +0 -428
- package/dist/integrations/ralph/swarm/git-workflow-manager.js.map +0 -7
- package/dist/integrations/ralph/swarm/swarm-coordinator.js +0 -996
- package/dist/integrations/ralph/swarm/swarm-coordinator.js.map +0 -7
- package/dist/integrations/ralph/types.js +0 -5
- package/dist/integrations/ralph/types.js.map +0 -7
- package/dist/integrations/ralph/visualization/ralph-debugger.js +0 -585
- package/dist/integrations/ralph/visualization/ralph-debugger.js.map +0 -7
- package/dist/mcp/stackmemory-mcp-server.js +0 -554
- package/dist/mcp/stackmemory-mcp-server.js.map +0 -7
- package/dist/middleware/exponential-rate-limiter.js +0 -289
- package/dist/middleware/exponential-rate-limiter.js.map +0 -7
- package/dist/models/user.model.js +0 -358
- package/dist/models/user.model.js.map +0 -7
- package/dist/servers/production/auth-middleware.js +0 -528
- package/dist/servers/production/auth-middleware.js.map +0 -7
- package/dist/servers/railway/config.js +0 -55
- package/dist/servers/railway/config.js.map +0 -7
- package/dist/servers/railway/index-enhanced.js +0 -160
- package/dist/servers/railway/index-enhanced.js.map +0 -7
- package/dist/servers/railway/index.js +0 -1349
- package/dist/servers/railway/index.js.map +0 -7
- package/dist/servers/railway/simple.js +0 -64
- package/dist/servers/railway/simple.js.map +0 -7
- package/dist/servers/railway/storage-test.js +0 -459
- package/dist/servers/railway/storage-test.js.map +0 -7
- package/dist/services/config-service.js +0 -65
- package/dist/services/config-service.js.map +0 -7
- package/dist/services/context-service.js +0 -194
- package/dist/services/context-service.js.map +0 -7
- package/dist/skills/api-discovery.js +0 -354
- package/dist/skills/api-discovery.js.map +0 -7
- package/dist/skills/api-skill.js +0 -475
- package/dist/skills/api-skill.js.map +0 -7
- package/dist/skills/claude-skills.js +0 -1061
- package/dist/skills/claude-skills.js.map +0 -7
- package/dist/skills/dashboard-launcher.js +0 -216
- package/dist/skills/dashboard-launcher.js.map +0 -7
- package/dist/skills/recursive-agent-orchestrator.js +0 -575
- package/dist/skills/recursive-agent-orchestrator.js.map +0 -7
- package/dist/skills/repo-ingestion-skill.js +0 -609
- package/dist/skills/repo-ingestion-skill.js.map +0 -7
- package/dist/skills/security-secrets-scanner.js +0 -284
- package/dist/skills/security-secrets-scanner.js.map +0 -7
- package/dist/skills/unified-rlm-orchestrator.js +0 -404
- package/dist/skills/unified-rlm-orchestrator.js.map +0 -7
- package/dist/types/task.js +0 -5
- package/dist/types/task.js.map +0 -7
- package/dist/utils/env.js +0 -50
- package/dist/utils/env.js.map +0 -7
- package/dist/utils/formatting.js +0 -62
- package/dist/utils/formatting.js.map +0 -7
- package/dist/utils/process-cleanup.js +0 -136
- package/dist/utils/process-cleanup.js.map +0 -7
- package/dist/validation/schemas.js +0 -222
- package/dist/validation/schemas.js.map +0 -7
- /package/dist/{core/merge → src/core/extensions}/types.js +0 -0
- /package/dist/{core/merge → src/core/extensions}/types.js.map +0 -0
- /package/dist/{core → src/integrations/diffmem}/types.js +0 -0
- /package/dist/{core → src/integrations/diffmem}/types.js.map +0 -0
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"version": 3,
|
|
3
|
-
"sources": ["../../../src/agents/verifiers/llm-judge.ts"],
|
|
4
|
-
"sourcesContent": ["/**\n * LLM Judge - Semantic validation using LLM\n * Implements Spotify's LLM judge pattern that \"vetoes about a quarter of agent sessions\"\n */\n\nimport {\n BaseVerifier,\n VerifierContext,\n VerifierResult,\n VerifierConfig,\n} from './base-verifier.js';\nimport { logger } from '../../core/monitoring/logger.js';\n\nexport interface LLMJudgeContext extends VerifierContext {\n originalPrompt: string;\n proposedChanges: string;\n acceptanceCriteria?: string[];\n previousFeedback?: string[];\n}\n\nexport interface JudgementCriteria {\n adherenceToRequirements: number; // 0-1\n codeQuality: number; // 0-1\n safety: number; // 0-1\n completeness: number; // 0-1\n semanticCorrectness: number; // 0-1\n}\n\nexport class LLMJudge extends BaseVerifier {\n // Spotify reports ~75% pass rate (25% veto rate)\n private readonly VETO_THRESHOLD = 0.7;\n private readonly CRITERIA_WEIGHTS = {\n adherenceToRequirements: 0.3,\n codeQuality: 0.2,\n safety: 0.2,\n completeness: 0.15,\n semanticCorrectness: 0.15,\n };\n\n constructor(config?: Partial<VerifierConfig>) {\n super({\n id: 'llm-judge',\n name: 'LLM Semantic Judge',\n type: 'semantic',\n enabled: true,\n stopOnError: true, // Stop on semantic failures (Spotify pattern)\n timeout: 30000,\n ...config,\n });\n }\n\n shouldActivate(context: VerifierContext): boolean {\n // Always activate for semantic validation (Spotify always includes this)\n return true;\n }\n\n async verify(\n input: string | Buffer,\n context: VerifierContext\n ): Promise<VerifierResult> {\n const llmContext = context as LLMJudgeContext;\n\n if (!llmContext.originalPrompt) {\n return this.createResult(\n false,\n 'Missing original prompt for semantic validation',\n 'error'\n );\n }\n\n try {\n return await this.withTimeout(async () => {\n const judgement = await this.performJudgement(\n input.toString(),\n llmContext\n );\n return this.createJudgementResult(judgement, llmContext);\n });\n } catch (error: unknown) {\n logger.error(\n 'LLM Judge failed',\n error instanceof Error ? error : undefined\n );\n return this.createResult(\n false,\n `Semantic validation error: ${error instanceof Error ? error.message : String(error)}`,\n 'error'\n );\n }\n }\n\n private async performJudgement(\n proposedChanges: string,\n context: LLMJudgeContext\n ): Promise<JudgementCriteria> {\n // In production, this would call an actual LLM API\n // For now, simulate judgement with realistic patterns\n\n const criteria: JudgementCriteria = {\n adherenceToRequirements: this.evaluateAdherence(proposedChanges, context),\n codeQuality: this.evaluateCodeQuality(proposedChanges),\n safety: this.evaluateSafety(proposedChanges),\n completeness: this.evaluateCompleteness(proposedChanges, context),\n semanticCorrectness: this.evaluateSemanticCorrectness(\n proposedChanges,\n context\n ),\n };\n\n // Log judgement for analysis (Spotify's trace collection)\n logger.info('LLM Judge evaluation', {\n criteria,\n overallScore: this.calculateOverallScore(criteria),\n willVeto: this.calculateOverallScore(criteria) < this.VETO_THRESHOLD,\n });\n\n return criteria;\n }\n\n private evaluateAdherence(\n proposedChanges: string,\n context: LLMJudgeContext\n ): number {\n // Simulate checking if changes match original requirements\n const hasKeywords = context.originalPrompt\n .toLowerCase()\n .split(' ')\n .filter((word) => word.length > 4)\n .some((keyword) => proposedChanges.toLowerCase().includes(keyword));\n\n // Check acceptance criteria if provided\n if (context.acceptanceCriteria) {\n const metCriteria = context.acceptanceCriteria.filter((criterion) =>\n this.checkCriterion(criterion, proposedChanges)\n ).length;\n const criteriaScore = metCriteria / context.acceptanceCriteria.length;\n return hasKeywords ? Math.min(1, criteriaScore + 0.2) : criteriaScore;\n }\n\n // Simulate realistic pass rate (~75%)\n return hasKeywords ? 0.75 + Math.random() * 0.2 : 0.4 + Math.random() * 0.3;\n }\n\n private evaluateCodeQuality(proposedChanges: string): number {\n // Simple heuristics for code quality\n const indicators = {\n hasComments:\n proposedChanges.includes('//') || proposedChanges.includes('/*'),\n hasErrorHandling:\n proposedChanges.includes('try') || proposedChanges.includes('catch'),\n hasTests:\n proposedChanges.includes('test') || proposedChanges.includes('expect'),\n properNaming: !/[a-z]{20,}|[A-Z]{10,}/.test(proposedChanges), // No extremely long names\n reasonable_length:\n proposedChanges.length > 50 && proposedChanges.length < 5000,\n };\n\n const score =\n Object.values(indicators).filter(Boolean).length /\n Object.keys(indicators).length;\n return Math.min(1, score + 0.2); // Boost slightly\n }\n\n private evaluateSafety(proposedChanges: string): number {\n // Check for dangerous patterns\n const dangerousPatterns = [\n /eval\\s*\\(/,\n /exec\\s*\\(/,\n /rm\\s+-rf/,\n /DROP\\s+TABLE/i,\n /DELETE\\s+FROM/i,\n /<script>/i,\n /document\\.write/,\n /innerHTML\\s*=/,\n ];\n\n const hasDangerousPattern = dangerousPatterns.some((pattern) =>\n pattern.test(proposedChanges)\n );\n\n return hasDangerousPattern ? 0.3 : 0.9 + Math.random() * 0.1;\n }\n\n private evaluateCompleteness(\n proposedChanges: string,\n context: LLMJudgeContext\n ): number {\n // Check if the solution seems complete\n const hasImplementation = proposedChanges.length > 100;\n const hasStructure =\n proposedChanges.includes('function') ||\n proposedChanges.includes('class') ||\n proposedChanges.includes('const') ||\n proposedChanges.includes('def');\n\n if (context.acceptanceCriteria) {\n const addressedCriteria = context.acceptanceCriteria.filter((criterion) =>\n proposedChanges\n .toLowerCase()\n .includes(criterion.toLowerCase().split(' ')[0])\n ).length;\n return addressedCriteria / context.acceptanceCriteria.length;\n }\n\n return hasImplementation && hasStructure ? 0.8 + Math.random() * 0.15 : 0.4;\n }\n\n private evaluateSemanticCorrectness(\n proposedChanges: string,\n context: LLMJudgeContext\n ): number {\n // Simulate semantic analysis\n // In production, this would use embeddings and semantic similarity\n\n // Check if previous feedback was addressed\n if (context.previousFeedback && context.previousFeedback.length > 0) {\n const addressedFeedback = context.previousFeedback.filter((feedback) => {\n const keywords = feedback\n .toLowerCase()\n .split(' ')\n .filter((w) => w.length > 4);\n return keywords.some((keyword) =>\n proposedChanges.toLowerCase().includes(keyword)\n );\n }).length;\n\n if (addressedFeedback > 0) {\n return Math.min(\n 1,\n 0.7 + (addressedFeedback / context.previousFeedback.length) * 0.3\n );\n }\n }\n\n // Default semantic score (realistic distribution)\n return 0.65 + Math.random() * 0.25;\n }\n\n private checkCriterion(criterion: string, proposedChanges: string): boolean {\n // Simple keyword matching for criteria\n const keywords = criterion\n .toLowerCase()\n .split(' ')\n .filter((word) => word.length > 3);\n const matchedKeywords = keywords.filter((keyword) =>\n proposedChanges.toLowerCase().includes(keyword)\n );\n return matchedKeywords.length >= keywords.length * 0.5;\n }\n\n private calculateOverallScore(criteria: JudgementCriteria): number {\n let score = 0;\n for (const [key, weight] of Object.entries(this.CRITERIA_WEIGHTS)) {\n score += criteria[key as keyof JudgementCriteria] * weight;\n }\n return score;\n }\n\n private createJudgementResult(\n criteria: JudgementCriteria,\n context: LLMJudgeContext\n ): VerifierResult {\n const overallScore = this.calculateOverallScore(criteria);\n const passed = overallScore >= this.VETO_THRESHOLD;\n\n // Generate detailed feedback\n const feedback = this.generateJudgementFeedback(\n criteria,\n overallScore,\n context\n );\n\n // Determine severity based on score\n const severity =\n overallScore < 0.5\n ? 'error'\n : overallScore < this.VETO_THRESHOLD\n ? 'warning'\n : 'info';\n\n return this.createResult(\n passed,\n feedback,\n severity,\n {\n expected: 'Changes that fully address the original requirements',\n actual: `Score: ${(overallScore * 100).toFixed(1)}%`,\n suggestion: this.generateSuggestions(criteria),\n },\n passed\n ? undefined\n : {\n command: 'Review and adjust approach based on feedback',\n description: 'Manual review required',\n safe: false,\n confidence: overallScore,\n }\n );\n }\n\n private generateJudgementFeedback(\n criteria: JudgementCriteria,\n overallScore: number,\n context: LLMJudgeContext\n ): string {\n if (overallScore >= this.VETO_THRESHOLD) {\n return (\n `Semantic validation PASSED (${(overallScore * 100).toFixed(1)}% confidence). ` +\n `Changes adequately address the requirements.`\n );\n }\n\n // Identify weakest areas\n const weakAreas: string[] = [];\n if (criteria.adherenceToRequirements < 0.6) {\n weakAreas.push('requirements adherence');\n }\n if (criteria.codeQuality < 0.6) {\n weakAreas.push('code quality');\n }\n if (criteria.safety < 0.7) {\n weakAreas.push('safety concerns');\n }\n if (criteria.completeness < 0.6) {\n weakAreas.push('completeness');\n }\n if (criteria.semanticCorrectness < 0.6) {\n weakAreas.push('semantic correctness');\n }\n\n return (\n `Semantic validation VETOED (${(overallScore * 100).toFixed(1)}% confidence). ` +\n `Issues found with: ${weakAreas.join(', ')}. ` +\n `Agent should course-correct based on this feedback.`\n );\n }\n\n private generateSuggestions(criteria: JudgementCriteria): string {\n const suggestions: string[] = [];\n\n if (criteria.adherenceToRequirements < 0.7) {\n suggestions.push(\n 'Review original requirements and ensure all are addressed'\n );\n }\n if (criteria.codeQuality < 0.7) {\n suggestions.push(\n 'Improve code structure, add error handling and comments'\n );\n }\n if (criteria.safety < 0.8) {\n suggestions.push(\n 'Review code for security vulnerabilities and unsafe patterns'\n );\n }\n if (criteria.completeness < 0.7) {\n suggestions.push('Ensure solution is complete and handles edge cases');\n }\n if (criteria.semanticCorrectness < 0.7) {\n suggestions.push('Verify logic correctness and alignment with intent');\n }\n\n return suggestions.length > 0\n ? suggestions.join('; ')\n : 'Continue with current approach';\n }\n\n /**\n * Get veto statistics (for monitoring)\n */\n getVetoRate(): number {\n // In production, this would track actual veto rate\n // Spotify reports ~25% veto rate\n return 0.25;\n }\n\n /**\n * Check if agent can course-correct after veto\n * Spotify: \"When vetoed, agents can course correct half the time\"\n */\n canCourseCorrect(previousAttempts: number): boolean {\n // 50% chance of successful course correction\n return previousAttempts < 2 && Math.random() > 0.5;\n }\n}\n"],
|
|
5
|
-
"mappings": "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",
|
|
6
|
-
"names": []
|
|
7
|
-
}
|
package/dist/cli/auto-detect.js
DELETED
|
@@ -1,321 +0,0 @@
|
|
|
1
|
-
import { fileURLToPath as __fileURLToPath } from 'url';
|
|
2
|
-
import { dirname as __pathDirname } from 'path';
|
|
3
|
-
const __filename = __fileURLToPath(import.meta.url);
|
|
4
|
-
const __dirname = __pathDirname(__filename);
|
|
5
|
-
import { execSync } from "child_process";
|
|
6
|
-
import * as fs from "fs";
|
|
7
|
-
import * as path from "path";
|
|
8
|
-
class ClaudeAutoDetect {
|
|
9
|
-
projectRoot;
|
|
10
|
-
constructor(projectRoot = process.cwd()) {
|
|
11
|
-
this.projectRoot = projectRoot;
|
|
12
|
-
}
|
|
13
|
-
/**
|
|
14
|
-
* Main detection logic
|
|
15
|
-
*/
|
|
16
|
-
detect() {
|
|
17
|
-
const result = {
|
|
18
|
-
shouldUseWorktree: false,
|
|
19
|
-
reasons: [],
|
|
20
|
-
confidence: "low",
|
|
21
|
-
suggestions: []
|
|
22
|
-
};
|
|
23
|
-
const checks = [
|
|
24
|
-
this.checkUncommittedChanges(),
|
|
25
|
-
this.checkActiveInstances(),
|
|
26
|
-
this.checkBranchProtection(),
|
|
27
|
-
this.checkFileConflicts(),
|
|
28
|
-
this.checkResourceUsage(),
|
|
29
|
-
this.checkTaskComplexity()
|
|
30
|
-
];
|
|
31
|
-
let score = 0;
|
|
32
|
-
for (const check of checks) {
|
|
33
|
-
if (check.detected) {
|
|
34
|
-
score += check.weight;
|
|
35
|
-
result.reasons.push(check.reason);
|
|
36
|
-
if (check.suggestion) {
|
|
37
|
-
result.suggestions.push(check.suggestion);
|
|
38
|
-
}
|
|
39
|
-
}
|
|
40
|
-
}
|
|
41
|
-
if (score >= 7) {
|
|
42
|
-
result.shouldUseWorktree = true;
|
|
43
|
-
result.confidence = "high";
|
|
44
|
-
} else if (score >= 4) {
|
|
45
|
-
result.shouldUseWorktree = true;
|
|
46
|
-
result.confidence = "medium";
|
|
47
|
-
} else if (score >= 2) {
|
|
48
|
-
result.shouldUseWorktree = false;
|
|
49
|
-
result.confidence = "medium";
|
|
50
|
-
result.suggestions.push(
|
|
51
|
-
"Consider using --worktree if making significant changes"
|
|
52
|
-
);
|
|
53
|
-
}
|
|
54
|
-
return result;
|
|
55
|
-
}
|
|
56
|
-
/**
|
|
57
|
-
* Check for uncommitted changes
|
|
58
|
-
*/
|
|
59
|
-
checkUncommittedChanges() {
|
|
60
|
-
try {
|
|
61
|
-
const status = execSync("git status --porcelain", {
|
|
62
|
-
cwd: this.projectRoot,
|
|
63
|
-
encoding: "utf8"
|
|
64
|
-
});
|
|
65
|
-
if (status.trim().length > 0) {
|
|
66
|
-
const lines = status.trim().split("\n").length;
|
|
67
|
-
return {
|
|
68
|
-
detected: true,
|
|
69
|
-
weight: lines > 10 ? 3 : 2,
|
|
70
|
-
reason: `${lines} uncommitted changes in working directory`,
|
|
71
|
-
suggestion: "Commit or stash changes before proceeding, or use worktree"
|
|
72
|
-
};
|
|
73
|
-
}
|
|
74
|
-
} catch {
|
|
75
|
-
}
|
|
76
|
-
return { detected: false, weight: 0, reason: "" };
|
|
77
|
-
}
|
|
78
|
-
/**
|
|
79
|
-
* Check for other active Claude instances
|
|
80
|
-
*/
|
|
81
|
-
checkActiveInstances() {
|
|
82
|
-
const lockDir = path.join(this.projectRoot, ".claude-worktree-locks");
|
|
83
|
-
if (fs.existsSync(lockDir)) {
|
|
84
|
-
try {
|
|
85
|
-
const locks = fs.readdirSync(lockDir).filter((f) => f.endsWith(".lock"));
|
|
86
|
-
const activeLocks = locks.filter((lockFile) => {
|
|
87
|
-
const lockPath = path.join(lockDir, lockFile);
|
|
88
|
-
const stats = fs.statSync(lockPath);
|
|
89
|
-
const ageHours = (Date.now() - stats.mtimeMs) / (1e3 * 60 * 60);
|
|
90
|
-
return ageHours < 24;
|
|
91
|
-
});
|
|
92
|
-
if (activeLocks.length > 0) {
|
|
93
|
-
return {
|
|
94
|
-
detected: true,
|
|
95
|
-
weight: activeLocks.length >= 2 ? 4 : 3,
|
|
96
|
-
reason: `${activeLocks.length} other Claude instance(s) active`,
|
|
97
|
-
suggestion: "Use worktree to avoid conflicts with other instances"
|
|
98
|
-
};
|
|
99
|
-
}
|
|
100
|
-
} catch {
|
|
101
|
-
}
|
|
102
|
-
}
|
|
103
|
-
return { detected: false, weight: 0, reason: "" };
|
|
104
|
-
}
|
|
105
|
-
/**
|
|
106
|
-
* Check if on protected branch
|
|
107
|
-
*/
|
|
108
|
-
checkBranchProtection() {
|
|
109
|
-
try {
|
|
110
|
-
const branch = execSync("git rev-parse --abbrev-ref HEAD", {
|
|
111
|
-
cwd: this.projectRoot,
|
|
112
|
-
encoding: "utf8"
|
|
113
|
-
}).trim();
|
|
114
|
-
const protectedBranches = [
|
|
115
|
-
"main",
|
|
116
|
-
"master",
|
|
117
|
-
"production",
|
|
118
|
-
"staging",
|
|
119
|
-
"develop"
|
|
120
|
-
];
|
|
121
|
-
if (protectedBranches.includes(branch)) {
|
|
122
|
-
return {
|
|
123
|
-
detected: true,
|
|
124
|
-
weight: 4,
|
|
125
|
-
reason: `Working on protected branch: ${branch}`,
|
|
126
|
-
suggestion: "Create a feature branch or use worktree"
|
|
127
|
-
};
|
|
128
|
-
}
|
|
129
|
-
} catch {
|
|
130
|
-
}
|
|
131
|
-
return { detected: false, weight: 0, reason: "" };
|
|
132
|
-
}
|
|
133
|
-
/**
|
|
134
|
-
* Check for potential file conflicts
|
|
135
|
-
*/
|
|
136
|
-
checkFileConflicts() {
|
|
137
|
-
const ideFiles = [
|
|
138
|
-
".vscode/settings.json",
|
|
139
|
-
".idea/workspace.xml",
|
|
140
|
-
".sublime-workspace"
|
|
141
|
-
];
|
|
142
|
-
let openIDEs = 0;
|
|
143
|
-
for (const ideFile of ideFiles) {
|
|
144
|
-
const filePath = path.join(this.projectRoot, ideFile);
|
|
145
|
-
if (fs.existsSync(filePath)) {
|
|
146
|
-
try {
|
|
147
|
-
const stats = fs.statSync(filePath);
|
|
148
|
-
const ageMinutes = (Date.now() - stats.mtimeMs) / (1e3 * 60);
|
|
149
|
-
if (ageMinutes < 5) {
|
|
150
|
-
openIDEs++;
|
|
151
|
-
}
|
|
152
|
-
} catch {
|
|
153
|
-
}
|
|
154
|
-
}
|
|
155
|
-
}
|
|
156
|
-
if (openIDEs > 1) {
|
|
157
|
-
return {
|
|
158
|
-
detected: true,
|
|
159
|
-
weight: 2,
|
|
160
|
-
reason: "Multiple IDEs/editors detected",
|
|
161
|
-
suggestion: "Use worktree to avoid file lock conflicts"
|
|
162
|
-
};
|
|
163
|
-
}
|
|
164
|
-
return { detected: false, weight: 0, reason: "" };
|
|
165
|
-
}
|
|
166
|
-
/**
|
|
167
|
-
* Check system resource usage
|
|
168
|
-
*/
|
|
169
|
-
checkResourceUsage() {
|
|
170
|
-
try {
|
|
171
|
-
const worktrees = execSync("git worktree list", {
|
|
172
|
-
cwd: this.projectRoot,
|
|
173
|
-
encoding: "utf8"
|
|
174
|
-
}).trim().split("\n").length;
|
|
175
|
-
if (worktrees > 3) {
|
|
176
|
-
return {
|
|
177
|
-
detected: true,
|
|
178
|
-
weight: 1,
|
|
179
|
-
reason: `${worktrees} worktrees already exist`,
|
|
180
|
-
suggestion: "Consider cleaning up old worktrees"
|
|
181
|
-
};
|
|
182
|
-
}
|
|
183
|
-
} catch {
|
|
184
|
-
}
|
|
185
|
-
return { detected: false, weight: 0, reason: "" };
|
|
186
|
-
}
|
|
187
|
-
/**
|
|
188
|
-
* Detect task complexity from user input or context
|
|
189
|
-
*/
|
|
190
|
-
checkTaskComplexity() {
|
|
191
|
-
try {
|
|
192
|
-
const recentCommit = execSync("git log -1 --pretty=%B", {
|
|
193
|
-
cwd: this.projectRoot,
|
|
194
|
-
encoding: "utf8"
|
|
195
|
-
}).toLowerCase();
|
|
196
|
-
const complexIndicators = [
|
|
197
|
-
"refactor",
|
|
198
|
-
"breaking change",
|
|
199
|
-
"major",
|
|
200
|
-
"experiment",
|
|
201
|
-
"prototype",
|
|
202
|
-
"redesign",
|
|
203
|
-
"migration"
|
|
204
|
-
];
|
|
205
|
-
for (const indicator of complexIndicators) {
|
|
206
|
-
if (recentCommit.includes(indicator)) {
|
|
207
|
-
return {
|
|
208
|
-
detected: true,
|
|
209
|
-
weight: 2,
|
|
210
|
-
reason: "Recent complex changes detected",
|
|
211
|
-
suggestion: "Use worktree for experimental or major changes"
|
|
212
|
-
};
|
|
213
|
-
}
|
|
214
|
-
}
|
|
215
|
-
} catch {
|
|
216
|
-
}
|
|
217
|
-
return { detected: false, weight: 0, reason: "" };
|
|
218
|
-
}
|
|
219
|
-
/**
|
|
220
|
-
* Get current environment status
|
|
221
|
-
*/
|
|
222
|
-
getStatus() {
|
|
223
|
-
const status = {
|
|
224
|
-
git: false,
|
|
225
|
-
worktrees: 0,
|
|
226
|
-
instances: 0,
|
|
227
|
-
branch: "unknown",
|
|
228
|
-
uncommittedChanges: 0
|
|
229
|
-
};
|
|
230
|
-
try {
|
|
231
|
-
execSync("git rev-parse --git-dir", {
|
|
232
|
-
cwd: this.projectRoot,
|
|
233
|
-
stdio: "ignore"
|
|
234
|
-
});
|
|
235
|
-
status.git = true;
|
|
236
|
-
status.branch = execSync("git rev-parse --abbrev-ref HEAD", {
|
|
237
|
-
cwd: this.projectRoot,
|
|
238
|
-
encoding: "utf8"
|
|
239
|
-
}).trim();
|
|
240
|
-
const worktreeList = execSync("git worktree list", {
|
|
241
|
-
cwd: this.projectRoot,
|
|
242
|
-
encoding: "utf8"
|
|
243
|
-
});
|
|
244
|
-
status.worktrees = worktreeList.trim().split("\n").length;
|
|
245
|
-
const changes = execSync("git status --porcelain", {
|
|
246
|
-
cwd: this.projectRoot,
|
|
247
|
-
encoding: "utf8"
|
|
248
|
-
});
|
|
249
|
-
status.uncommittedChanges = changes.trim() ? changes.trim().split("\n").length : 0;
|
|
250
|
-
} catch {
|
|
251
|
-
}
|
|
252
|
-
const lockDir = path.join(this.projectRoot, ".claude-worktree-locks");
|
|
253
|
-
if (fs.existsSync(lockDir)) {
|
|
254
|
-
try {
|
|
255
|
-
const locks = fs.readdirSync(lockDir).filter((f) => f.endsWith(".lock"));
|
|
256
|
-
status.instances = locks.filter((lockFile) => {
|
|
257
|
-
const lockPath = path.join(lockDir, lockFile);
|
|
258
|
-
const stats = fs.statSync(lockPath);
|
|
259
|
-
const ageHours = (Date.now() - stats.mtimeMs) / (1e3 * 60 * 60);
|
|
260
|
-
return ageHours < 24;
|
|
261
|
-
}).length;
|
|
262
|
-
} catch {
|
|
263
|
-
}
|
|
264
|
-
}
|
|
265
|
-
return status;
|
|
266
|
-
}
|
|
267
|
-
/**
|
|
268
|
-
* Smart recommendation based on context
|
|
269
|
-
*/
|
|
270
|
-
recommend(taskDescription) {
|
|
271
|
-
const detection = this.detect();
|
|
272
|
-
const status = this.getStatus();
|
|
273
|
-
let taskType = "general";
|
|
274
|
-
if (taskDescription) {
|
|
275
|
-
const lower = taskDescription.toLowerCase();
|
|
276
|
-
if (lower.includes("ui") || lower.includes("frontend") || lower.includes("component")) {
|
|
277
|
-
taskType = "frontend";
|
|
278
|
-
} else if (lower.includes("api") || lower.includes("backend") || lower.includes("database")) {
|
|
279
|
-
taskType = "backend";
|
|
280
|
-
} else if (lower.includes("test") || lower.includes("debug") || lower.includes("fix")) {
|
|
281
|
-
taskType = "debugging";
|
|
282
|
-
} else if (lower.includes("refactor") || lower.includes("clean")) {
|
|
283
|
-
taskType = "refactoring";
|
|
284
|
-
}
|
|
285
|
-
}
|
|
286
|
-
let mode = "normal";
|
|
287
|
-
const flags = [];
|
|
288
|
-
let reason = "";
|
|
289
|
-
if (detection.shouldUseWorktree) {
|
|
290
|
-
mode = "worktree";
|
|
291
|
-
flags.push("--worktree");
|
|
292
|
-
reason = detection.reasons[0] || "Isolation recommended";
|
|
293
|
-
}
|
|
294
|
-
switch (taskType) {
|
|
295
|
-
case "frontend":
|
|
296
|
-
if (mode === "worktree") {
|
|
297
|
-
mode = "chrome";
|
|
298
|
-
flags.push("--chrome");
|
|
299
|
-
reason += "; Chrome automation for UI work";
|
|
300
|
-
}
|
|
301
|
-
break;
|
|
302
|
-
case "backend":
|
|
303
|
-
if (mode === "worktree") {
|
|
304
|
-
mode = "sandbox";
|
|
305
|
-
flags.push("--sandbox");
|
|
306
|
-
reason += "; Sandboxed for API development";
|
|
307
|
-
}
|
|
308
|
-
break;
|
|
309
|
-
case "refactoring":
|
|
310
|
-
if (mode === "normal" && status.uncommittedChanges === 0) {
|
|
311
|
-
reason = "Clean working directory, safe to proceed";
|
|
312
|
-
}
|
|
313
|
-
break;
|
|
314
|
-
}
|
|
315
|
-
return { mode, reason, flags };
|
|
316
|
-
}
|
|
317
|
-
}
|
|
318
|
-
export {
|
|
319
|
-
ClaudeAutoDetect
|
|
320
|
-
};
|
|
321
|
-
//# sourceMappingURL=auto-detect.js.map
|
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"version": 3,
|
|
3
|
-
"sources": ["../../src/cli/auto-detect.ts"],
|
|
4
|
-
"sourcesContent": ["/**\n * Auto-detection utilities for Claude-SM\n * Automatically detects when worktree isolation is needed\n */\n\nimport { execSync } from 'child_process';\nimport * as fs from 'fs';\nimport * as path from 'path';\n\nexport interface DetectionResult {\n shouldUseWorktree: boolean;\n reasons: string[];\n confidence: 'high' | 'medium' | 'low';\n suggestions: string[];\n}\n\nexport class ClaudeAutoDetect {\n private projectRoot: string;\n\n constructor(projectRoot: string = process.cwd()) {\n this.projectRoot = projectRoot;\n }\n\n /**\n * Main detection logic\n */\n public detect(): DetectionResult {\n const result: DetectionResult = {\n shouldUseWorktree: false,\n reasons: [],\n confidence: 'low',\n suggestions: [],\n };\n\n // Check various conditions\n const checks = [\n this.checkUncommittedChanges(),\n this.checkActiveInstances(),\n this.checkBranchProtection(),\n this.checkFileConflicts(),\n this.checkResourceUsage(),\n this.checkTaskComplexity(),\n ];\n\n // Aggregate results\n let score = 0;\n for (const check of checks) {\n if (check.detected) {\n score += check.weight;\n result.reasons.push(check.reason);\n if (check.suggestion) {\n result.suggestions.push(check.suggestion);\n }\n }\n }\n\n // Determine recommendation\n if (score >= 7) {\n result.shouldUseWorktree = true;\n result.confidence = 'high';\n } else if (score >= 4) {\n result.shouldUseWorktree = true;\n result.confidence = 'medium';\n } else if (score >= 2) {\n result.shouldUseWorktree = false;\n result.confidence = 'medium';\n result.suggestions.push(\n 'Consider using --worktree if making significant changes'\n );\n }\n\n return result;\n }\n\n /**\n * Check for uncommitted changes\n */\n private checkUncommittedChanges(): {\n detected: boolean;\n weight: number;\n reason: string;\n suggestion?: string;\n } {\n try {\n const status = execSync('git status --porcelain', {\n cwd: this.projectRoot,\n encoding: 'utf8',\n });\n\n if (status.trim().length > 0) {\n const lines = status.trim().split('\\n').length;\n return {\n detected: true,\n weight: lines > 10 ? 3 : 2,\n reason: `${lines} uncommitted changes in working directory`,\n suggestion:\n 'Commit or stash changes before proceeding, or use worktree',\n };\n }\n } catch {}\n\n return { detected: false, weight: 0, reason: '' };\n }\n\n /**\n * Check for other active Claude instances\n */\n private checkActiveInstances(): {\n detected: boolean;\n weight: number;\n reason: string;\n suggestion?: string;\n } {\n const lockDir = path.join(this.projectRoot, '.claude-worktree-locks');\n\n if (fs.existsSync(lockDir)) {\n try {\n const locks = fs\n .readdirSync(lockDir)\n .filter((f) => f.endsWith('.lock'));\n const activeLocks = locks.filter((lockFile) => {\n const lockPath = path.join(lockDir, lockFile);\n const stats = fs.statSync(lockPath);\n const ageHours = (Date.now() - stats.mtimeMs) / (1000 * 60 * 60);\n return ageHours < 24;\n });\n\n if (activeLocks.length > 0) {\n return {\n detected: true,\n weight: activeLocks.length >= 2 ? 4 : 3,\n reason: `${activeLocks.length} other Claude instance(s) active`,\n suggestion: 'Use worktree to avoid conflicts with other instances',\n };\n }\n } catch {}\n }\n\n return { detected: false, weight: 0, reason: '' };\n }\n\n /**\n * Check if on protected branch\n */\n private checkBranchProtection(): {\n detected: boolean;\n weight: number;\n reason: string;\n suggestion?: string;\n } {\n try {\n const branch = execSync('git rev-parse --abbrev-ref HEAD', {\n cwd: this.projectRoot,\n encoding: 'utf8',\n }).trim();\n\n const protectedBranches = [\n 'main',\n 'master',\n 'production',\n 'staging',\n 'develop',\n ];\n\n if (protectedBranches.includes(branch)) {\n return {\n detected: true,\n weight: 4,\n reason: `Working on protected branch: ${branch}`,\n suggestion: 'Create a feature branch or use worktree',\n };\n }\n } catch {}\n\n return { detected: false, weight: 0, reason: '' };\n }\n\n /**\n * Check for potential file conflicts\n */\n private checkFileConflicts(): {\n detected: boolean;\n weight: number;\n reason: string;\n suggestion?: string;\n } {\n // Check if multiple editors/IDEs are open\n const ideFiles = [\n '.vscode/settings.json',\n '.idea/workspace.xml',\n '.sublime-workspace',\n ];\n\n let openIDEs = 0;\n for (const ideFile of ideFiles) {\n const filePath = path.join(this.projectRoot, ideFile);\n if (fs.existsSync(filePath)) {\n try {\n const stats = fs.statSync(filePath);\n const ageMinutes = (Date.now() - stats.mtimeMs) / (1000 * 60);\n if (ageMinutes < 5) {\n openIDEs++;\n }\n } catch {}\n }\n }\n\n if (openIDEs > 1) {\n return {\n detected: true,\n weight: 2,\n reason: 'Multiple IDEs/editors detected',\n suggestion: 'Use worktree to avoid file lock conflicts',\n };\n }\n\n return { detected: false, weight: 0, reason: '' };\n }\n\n /**\n * Check system resource usage\n */\n private checkResourceUsage(): {\n detected: boolean;\n weight: number;\n reason: string;\n suggestion?: string;\n } {\n try {\n // Check number of git worktrees\n const worktrees = execSync('git worktree list', {\n cwd: this.projectRoot,\n encoding: 'utf8',\n })\n .trim()\n .split('\\n').length;\n\n if (worktrees > 3) {\n return {\n detected: true,\n weight: 1,\n reason: `${worktrees} worktrees already exist`,\n suggestion: 'Consider cleaning up old worktrees',\n };\n }\n } catch {}\n\n return { detected: false, weight: 0, reason: '' };\n }\n\n /**\n * Detect task complexity from user input or context\n */\n private checkTaskComplexity(): {\n detected: boolean;\n weight: number;\n reason: string;\n suggestion?: string;\n } {\n // Check for complex task indicators in recent commits\n try {\n const recentCommit = execSync('git log -1 --pretty=%B', {\n cwd: this.projectRoot,\n encoding: 'utf8',\n }).toLowerCase();\n\n const complexIndicators = [\n 'refactor',\n 'breaking change',\n 'major',\n 'experiment',\n 'prototype',\n 'redesign',\n 'migration',\n ];\n\n for (const indicator of complexIndicators) {\n if (recentCommit.includes(indicator)) {\n return {\n detected: true,\n weight: 2,\n reason: 'Recent complex changes detected',\n suggestion: 'Use worktree for experimental or major changes',\n };\n }\n }\n } catch {}\n\n return { detected: false, weight: 0, reason: '' };\n }\n\n /**\n * Get current environment status\n */\n public getStatus(): {\n git: boolean;\n worktrees: number;\n instances: number;\n branch: string;\n uncommittedChanges: number;\n } {\n const status = {\n git: false,\n worktrees: 0,\n instances: 0,\n branch: 'unknown',\n uncommittedChanges: 0,\n };\n\n // Check Git\n try {\n execSync('git rev-parse --git-dir', {\n cwd: this.projectRoot,\n stdio: 'ignore',\n });\n status.git = true;\n\n // Get branch\n status.branch = execSync('git rev-parse --abbrev-ref HEAD', {\n cwd: this.projectRoot,\n encoding: 'utf8',\n }).trim();\n\n // Count worktrees\n const worktreeList = execSync('git worktree list', {\n cwd: this.projectRoot,\n encoding: 'utf8',\n });\n status.worktrees = worktreeList.trim().split('\\n').length;\n\n // Count changes\n const changes = execSync('git status --porcelain', {\n cwd: this.projectRoot,\n encoding: 'utf8',\n });\n status.uncommittedChanges = changes.trim()\n ? changes.trim().split('\\n').length\n : 0;\n } catch {}\n\n // Count instances\n const lockDir = path.join(this.projectRoot, '.claude-worktree-locks');\n if (fs.existsSync(lockDir)) {\n try {\n const locks = fs\n .readdirSync(lockDir)\n .filter((f) => f.endsWith('.lock'));\n status.instances = locks.filter((lockFile) => {\n const lockPath = path.join(lockDir, lockFile);\n const stats = fs.statSync(lockPath);\n const ageHours = (Date.now() - stats.mtimeMs) / (1000 * 60 * 60);\n return ageHours < 24;\n }).length;\n } catch {}\n }\n\n return status;\n }\n\n /**\n * Smart recommendation based on context\n */\n public recommend(taskDescription?: string): {\n mode: 'normal' | 'worktree' | 'sandbox' | 'chrome';\n reason: string;\n flags: string[];\n } {\n const detection = this.detect();\n const status = this.getStatus();\n\n // Analyze task description if provided\n let taskType = 'general';\n if (taskDescription) {\n const lower = taskDescription.toLowerCase();\n if (\n lower.includes('ui') ||\n lower.includes('frontend') ||\n lower.includes('component')\n ) {\n taskType = 'frontend';\n } else if (\n lower.includes('api') ||\n lower.includes('backend') ||\n lower.includes('database')\n ) {\n taskType = 'backend';\n } else if (\n lower.includes('test') ||\n lower.includes('debug') ||\n lower.includes('fix')\n ) {\n taskType = 'debugging';\n } else if (lower.includes('refactor') || lower.includes('clean')) {\n taskType = 'refactoring';\n }\n }\n\n // Determine mode and flags\n let mode: 'normal' | 'worktree' | 'sandbox' | 'chrome' = 'normal';\n const flags: string[] = [];\n let reason = '';\n\n if (detection.shouldUseWorktree) {\n mode = 'worktree';\n flags.push('--worktree');\n reason = detection.reasons[0] || 'Isolation recommended';\n }\n\n // Add task-specific flags\n switch (taskType) {\n case 'frontend':\n if (mode === 'worktree') {\n mode = 'chrome';\n flags.push('--chrome');\n reason += '; Chrome automation for UI work';\n }\n break;\n case 'backend':\n if (mode === 'worktree') {\n mode = 'sandbox';\n flags.push('--sandbox');\n reason += '; Sandboxed for API development';\n }\n break;\n case 'refactoring':\n if (mode === 'normal' && status.uncommittedChanges === 0) {\n // Refactoring on clean working directory is OK\n reason = 'Clean working directory, safe to proceed';\n }\n break;\n }\n\n return { mode, reason, flags };\n }\n}\n"],
|
|
5
|
-
"mappings": ";;;;AAKA,SAAS,gBAAgB;AACzB,YAAY,QAAQ;AACpB,YAAY,UAAU;AASf,MAAM,iBAAiB;AAAA,EACpB;AAAA,EAER,YAAY,cAAsB,QAAQ,IAAI,GAAG;AAC/C,SAAK,cAAc;AAAA,EACrB;AAAA;AAAA;AAAA;AAAA,EAKO,SAA0B;AAC/B,UAAM,SAA0B;AAAA,MAC9B,mBAAmB;AAAA,MACnB,SAAS,CAAC;AAAA,MACV,YAAY;AAAA,MACZ,aAAa,CAAC;AAAA,IAChB;AAGA,UAAM,SAAS;AAAA,MACb,KAAK,wBAAwB;AAAA,MAC7B,KAAK,qBAAqB;AAAA,MAC1B,KAAK,sBAAsB;AAAA,MAC3B,KAAK,mBAAmB;AAAA,MACxB,KAAK,mBAAmB;AAAA,MACxB,KAAK,oBAAoB;AAAA,IAC3B;AAGA,QAAI,QAAQ;AACZ,eAAW,SAAS,QAAQ;AAC1B,UAAI,MAAM,UAAU;AAClB,iBAAS,MAAM;AACf,eAAO,QAAQ,KAAK,MAAM,MAAM;AAChC,YAAI,MAAM,YAAY;AACpB,iBAAO,YAAY,KAAK,MAAM,UAAU;AAAA,QAC1C;AAAA,MACF;AAAA,IACF;AAGA,QAAI,SAAS,GAAG;AACd,aAAO,oBAAoB;AAC3B,aAAO,aAAa;AAAA,IACtB,WAAW,SAAS,GAAG;AACrB,aAAO,oBAAoB;AAC3B,aAAO,aAAa;AAAA,IACtB,WAAW,SAAS,GAAG;AACrB,aAAO,oBAAoB;AAC3B,aAAO,aAAa;AACpB,aAAO,YAAY;AAAA,QACjB;AAAA,MACF;AAAA,IACF;AAEA,WAAO;AAAA,EACT;AAAA;AAAA;AAAA;AAAA,EAKQ,0BAKN;AACA,QAAI;AACF,YAAM,SAAS,SAAS,0BAA0B;AAAA,QAChD,KAAK,KAAK;AAAA,QACV,UAAU;AAAA,MACZ,CAAC;AAED,UAAI,OAAO,KAAK,EAAE,SAAS,GAAG;AAC5B,cAAM,QAAQ,OAAO,KAAK,EAAE,MAAM,IAAI,EAAE;AACxC,eAAO;AAAA,UACL,UAAU;AAAA,UACV,QAAQ,QAAQ,KAAK,IAAI;AAAA,UACzB,QAAQ,GAAG,KAAK;AAAA,UAChB,YACE;AAAA,QACJ;AAAA,MACF;AAAA,IACF,QAAQ;AAAA,IAAC;AAET,WAAO,EAAE,UAAU,OAAO,QAAQ,GAAG,QAAQ,GAAG;AAAA,EAClD;AAAA;AAAA;AAAA;AAAA,EAKQ,uBAKN;AACA,UAAM,UAAU,KAAK,KAAK,KAAK,aAAa,wBAAwB;AAEpE,QAAI,GAAG,WAAW,OAAO,GAAG;AAC1B,UAAI;AACF,cAAM,QAAQ,GACX,YAAY,OAAO,EACnB,OAAO,CAAC,MAAM,EAAE,SAAS,OAAO,CAAC;AACpC,cAAM,cAAc,MAAM,OAAO,CAAC,aAAa;AAC7C,gBAAM,WAAW,KAAK,KAAK,SAAS,QAAQ;AAC5C,gBAAM,QAAQ,GAAG,SAAS,QAAQ;AAClC,gBAAM,YAAY,KAAK,IAAI,IAAI,MAAM,YAAY,MAAO,KAAK;AAC7D,iBAAO,WAAW;AAAA,QACpB,CAAC;AAED,YAAI,YAAY,SAAS,GAAG;AAC1B,iBAAO;AAAA,YACL,UAAU;AAAA,YACV,QAAQ,YAAY,UAAU,IAAI,IAAI;AAAA,YACtC,QAAQ,GAAG,YAAY,MAAM;AAAA,YAC7B,YAAY;AAAA,UACd;AAAA,QACF;AAAA,MACF,QAAQ;AAAA,MAAC;AAAA,IACX;AAEA,WAAO,EAAE,UAAU,OAAO,QAAQ,GAAG,QAAQ,GAAG;AAAA,EAClD;AAAA;AAAA;AAAA;AAAA,EAKQ,wBAKN;AACA,QAAI;AACF,YAAM,SAAS,SAAS,mCAAmC;AAAA,QACzD,KAAK,KAAK;AAAA,QACV,UAAU;AAAA,MACZ,CAAC,EAAE,KAAK;AAER,YAAM,oBAAoB;AAAA,QACxB;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,MACF;AAEA,UAAI,kBAAkB,SAAS,MAAM,GAAG;AACtC,eAAO;AAAA,UACL,UAAU;AAAA,UACV,QAAQ;AAAA,UACR,QAAQ,gCAAgC,MAAM;AAAA,UAC9C,YAAY;AAAA,QACd;AAAA,MACF;AAAA,IACF,QAAQ;AAAA,IAAC;AAET,WAAO,EAAE,UAAU,OAAO,QAAQ,GAAG,QAAQ,GAAG;AAAA,EAClD;AAAA;AAAA;AAAA;AAAA,EAKQ,qBAKN;AAEA,UAAM,WAAW;AAAA,MACf;AAAA,MACA;AAAA,MACA;AAAA,IACF;AAEA,QAAI,WAAW;AACf,eAAW,WAAW,UAAU;AAC9B,YAAM,WAAW,KAAK,KAAK,KAAK,aAAa,OAAO;AACpD,UAAI,GAAG,WAAW,QAAQ,GAAG;AAC3B,YAAI;AACF,gBAAM,QAAQ,GAAG,SAAS,QAAQ;AAClC,gBAAM,cAAc,KAAK,IAAI,IAAI,MAAM,YAAY,MAAO;AAC1D,cAAI,aAAa,GAAG;AAClB;AAAA,UACF;AAAA,QACF,QAAQ;AAAA,QAAC;AAAA,MACX;AAAA,IACF;AAEA,QAAI,WAAW,GAAG;AAChB,aAAO;AAAA,QACL,UAAU;AAAA,QACV,QAAQ;AAAA,QACR,QAAQ;AAAA,QACR,YAAY;AAAA,MACd;AAAA,IACF;AAEA,WAAO,EAAE,UAAU,OAAO,QAAQ,GAAG,QAAQ,GAAG;AAAA,EAClD;AAAA;AAAA;AAAA;AAAA,EAKQ,qBAKN;AACA,QAAI;AAEF,YAAM,YAAY,SAAS,qBAAqB;AAAA,QAC9C,KAAK,KAAK;AAAA,QACV,UAAU;AAAA,MACZ,CAAC,EACE,KAAK,EACL,MAAM,IAAI,EAAE;AAEf,UAAI,YAAY,GAAG;AACjB,eAAO;AAAA,UACL,UAAU;AAAA,UACV,QAAQ;AAAA,UACR,QAAQ,GAAG,SAAS;AAAA,UACpB,YAAY;AAAA,QACd;AAAA,MACF;AAAA,IACF,QAAQ;AAAA,IAAC;AAET,WAAO,EAAE,UAAU,OAAO,QAAQ,GAAG,QAAQ,GAAG;AAAA,EAClD;AAAA;AAAA;AAAA;AAAA,EAKQ,sBAKN;AAEA,QAAI;AACF,YAAM,eAAe,SAAS,0BAA0B;AAAA,QACtD,KAAK,KAAK;AAAA,QACV,UAAU;AAAA,MACZ,CAAC,EAAE,YAAY;AAEf,YAAM,oBAAoB;AAAA,QACxB;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,MACF;AAEA,iBAAW,aAAa,mBAAmB;AACzC,YAAI,aAAa,SAAS,SAAS,GAAG;AACpC,iBAAO;AAAA,YACL,UAAU;AAAA,YACV,QAAQ;AAAA,YACR,QAAQ;AAAA,YACR,YAAY;AAAA,UACd;AAAA,QACF;AAAA,MACF;AAAA,IACF,QAAQ;AAAA,IAAC;AAET,WAAO,EAAE,UAAU,OAAO,QAAQ,GAAG,QAAQ,GAAG;AAAA,EAClD;AAAA;AAAA;AAAA;AAAA,EAKO,YAML;AACA,UAAM,SAAS;AAAA,MACb,KAAK;AAAA,MACL,WAAW;AAAA,MACX,WAAW;AAAA,MACX,QAAQ;AAAA,MACR,oBAAoB;AAAA,IACtB;AAGA,QAAI;AACF,eAAS,2BAA2B;AAAA,QAClC,KAAK,KAAK;AAAA,QACV,OAAO;AAAA,MACT,CAAC;AACD,aAAO,MAAM;AAGb,aAAO,SAAS,SAAS,mCAAmC;AAAA,QAC1D,KAAK,KAAK;AAAA,QACV,UAAU;AAAA,MACZ,CAAC,EAAE,KAAK;AAGR,YAAM,eAAe,SAAS,qBAAqB;AAAA,QACjD,KAAK,KAAK;AAAA,QACV,UAAU;AAAA,MACZ,CAAC;AACD,aAAO,YAAY,aAAa,KAAK,EAAE,MAAM,IAAI,EAAE;AAGnD,YAAM,UAAU,SAAS,0BAA0B;AAAA,QACjD,KAAK,KAAK;AAAA,QACV,UAAU;AAAA,MACZ,CAAC;AACD,aAAO,qBAAqB,QAAQ,KAAK,IACrC,QAAQ,KAAK,EAAE,MAAM,IAAI,EAAE,SAC3B;AAAA,IACN,QAAQ;AAAA,IAAC;AAGT,UAAM,UAAU,KAAK,KAAK,KAAK,aAAa,wBAAwB;AACpE,QAAI,GAAG,WAAW,OAAO,GAAG;AAC1B,UAAI;AACF,cAAM,QAAQ,GACX,YAAY,OAAO,EACnB,OAAO,CAAC,MAAM,EAAE,SAAS,OAAO,CAAC;AACpC,eAAO,YAAY,MAAM,OAAO,CAAC,aAAa;AAC5C,gBAAM,WAAW,KAAK,KAAK,SAAS,QAAQ;AAC5C,gBAAM,QAAQ,GAAG,SAAS,QAAQ;AAClC,gBAAM,YAAY,KAAK,IAAI,IAAI,MAAM,YAAY,MAAO,KAAK;AAC7D,iBAAO,WAAW;AAAA,QACpB,CAAC,EAAE;AAAA,MACL,QAAQ;AAAA,MAAC;AAAA,IACX;AAEA,WAAO;AAAA,EACT;AAAA;AAAA;AAAA;AAAA,EAKO,UAAU,iBAIf;AACA,UAAM,YAAY,KAAK,OAAO;AAC9B,UAAM,SAAS,KAAK,UAAU;AAG9B,QAAI,WAAW;AACf,QAAI,iBAAiB;AACnB,YAAM,QAAQ,gBAAgB,YAAY;AAC1C,UACE,MAAM,SAAS,IAAI,KACnB,MAAM,SAAS,UAAU,KACzB,MAAM,SAAS,WAAW,GAC1B;AACA,mBAAW;AAAA,MACb,WACE,MAAM,SAAS,KAAK,KACpB,MAAM,SAAS,SAAS,KACxB,MAAM,SAAS,UAAU,GACzB;AACA,mBAAW;AAAA,MACb,WACE,MAAM,SAAS,MAAM,KACrB,MAAM,SAAS,OAAO,KACtB,MAAM,SAAS,KAAK,GACpB;AACA,mBAAW;AAAA,MACb,WAAW,MAAM,SAAS,UAAU,KAAK,MAAM,SAAS,OAAO,GAAG;AAChE,mBAAW;AAAA,MACb;AAAA,IACF;AAGA,QAAI,OAAqD;AACzD,UAAM,QAAkB,CAAC;AACzB,QAAI,SAAS;AAEb,QAAI,UAAU,mBAAmB;AAC/B,aAAO;AACP,YAAM,KAAK,YAAY;AACvB,eAAS,UAAU,QAAQ,CAAC,KAAK;AAAA,IACnC;AAGA,YAAQ,UAAU;AAAA,MAChB,KAAK;AACH,YAAI,SAAS,YAAY;AACvB,iBAAO;AACP,gBAAM,KAAK,UAAU;AACrB,oBAAU;AAAA,QACZ;AACA;AAAA,MACF,KAAK;AACH,YAAI,SAAS,YAAY;AACvB,iBAAO;AACP,gBAAM,KAAK,WAAW;AACtB,oBAAU;AAAA,QACZ;AACA;AAAA,MACF,KAAK;AACH,YAAI,SAAS,YAAY,OAAO,uBAAuB,GAAG;AAExD,mBAAS;AAAA,QACX;AACA;AAAA,IACJ;AAEA,WAAO,EAAE,MAAM,QAAQ,MAAM;AAAA,EAC/B;AACF;",
|
|
6
|
-
"names": []
|
|
7
|
-
}
|
package/dist/cli/browser-test.js
DELETED
|
@@ -1,33 +0,0 @@
|
|
|
1
|
-
#!/usr/bin/env node
|
|
2
|
-
import { fileURLToPath as __fileURLToPath } from 'url';
|
|
3
|
-
import { dirname as __pathDirname } from 'path';
|
|
4
|
-
const __filename = __fileURLToPath(import.meta.url);
|
|
5
|
-
const __dirname = __pathDirname(__filename);
|
|
6
|
-
import { BrowserMCPIntegration } from "../features/browser/browser-mcp.js";
|
|
7
|
-
async function testBrowserMCP() {
|
|
8
|
-
console.log("Testing Browser MCP Integration...\n");
|
|
9
|
-
const browser = new BrowserMCPIntegration({
|
|
10
|
-
headless: false,
|
|
11
|
-
// Show browser for testing
|
|
12
|
-
defaultViewport: { width: 1280, height: 720 }
|
|
13
|
-
});
|
|
14
|
-
await browser.initialize();
|
|
15
|
-
console.log("Browser MCP initialized successfully!");
|
|
16
|
-
console.log("\nAvailable tools:");
|
|
17
|
-
console.log(" - browser_navigate");
|
|
18
|
-
console.log(" - browser_screenshot");
|
|
19
|
-
console.log(" - browser_click");
|
|
20
|
-
console.log(" - browser_type");
|
|
21
|
-
console.log(" - browser_evaluate");
|
|
22
|
-
console.log(" - browser_wait");
|
|
23
|
-
console.log(" - browser_get_content");
|
|
24
|
-
console.log(" - browser_close");
|
|
25
|
-
console.log("\nBrowser MCP is ready to use with StackMemory!");
|
|
26
|
-
await browser.cleanup();
|
|
27
|
-
process.exit(0);
|
|
28
|
-
}
|
|
29
|
-
testBrowserMCP().catch((error) => {
|
|
30
|
-
console.error("Browser MCP test failed:", error);
|
|
31
|
-
process.exit(1);
|
|
32
|
-
});
|
|
33
|
-
//# sourceMappingURL=browser-test.js.map
|
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"version": 3,
|
|
3
|
-
"sources": ["../../src/cli/browser-test.ts"],
|
|
4
|
-
"sourcesContent": ["#!/usr/bin/env node\n/**\n * Test Browser MCP integration locally\n */\n\nimport { BrowserMCPIntegration } from '../features/browser/browser-mcp.js';\n\nasync function testBrowserMCP() {\n console.log('Testing Browser MCP Integration...\\n');\n\n const browser = new BrowserMCPIntegration({\n headless: false, // Show browser for testing\n defaultViewport: { width: 1280, height: 720 },\n });\n\n await browser.initialize();\n\n console.log('Browser MCP initialized successfully!');\n console.log('\\nAvailable tools:');\n console.log(' - browser_navigate');\n console.log(' - browser_screenshot');\n console.log(' - browser_click');\n console.log(' - browser_type');\n console.log(' - browser_evaluate');\n console.log(' - browser_wait');\n console.log(' - browser_get_content');\n console.log(' - browser_close');\n\n console.log('\\nBrowser MCP is ready to use with StackMemory!');\n\n // Clean up\n await browser.cleanup();\n process.exit(0);\n}\n\ntestBrowserMCP().catch((error) => {\n console.error('Browser MCP test failed:', error);\n process.exit(1);\n});\n"],
|
|
5
|
-
"mappings": ";;;;;AAKA,SAAS,6BAA6B;AAEtC,eAAe,iBAAiB;AAC9B,UAAQ,IAAI,sCAAsC;AAElD,QAAM,UAAU,IAAI,sBAAsB;AAAA,IACxC,UAAU;AAAA;AAAA,IACV,iBAAiB,EAAE,OAAO,MAAM,QAAQ,IAAI;AAAA,EAC9C,CAAC;AAED,QAAM,QAAQ,WAAW;AAEzB,UAAQ,IAAI,uCAAuC;AACnD,UAAQ,IAAI,oBAAoB;AAChC,UAAQ,IAAI,sBAAsB;AAClC,UAAQ,IAAI,wBAAwB;AACpC,UAAQ,IAAI,mBAAmB;AAC/B,UAAQ,IAAI,kBAAkB;AAC9B,UAAQ,IAAI,sBAAsB;AAClC,UAAQ,IAAI,kBAAkB;AAC9B,UAAQ,IAAI,yBAAyB;AACrC,UAAQ,IAAI,mBAAmB;AAE/B,UAAQ,IAAI,iDAAiD;AAG7D,QAAM,QAAQ,QAAQ;AACtB,UAAQ,KAAK,CAAC;AAChB;AAEA,eAAe,EAAE,MAAM,CAAC,UAAU;AAChC,UAAQ,MAAM,4BAA4B,KAAK;AAC/C,UAAQ,KAAK,CAAC;AAChB,CAAC;",
|
|
6
|
-
"names": []
|
|
7
|
-
}
|
|
@@ -1,21 +0,0 @@
|
|
|
1
|
-
#!/usr/bin/env node
|
|
2
|
-
import { fileURLToPath as __fileURLToPath } from 'url';
|
|
3
|
-
import { dirname as __pathDirname } from 'path';
|
|
4
|
-
const __filename = __fileURLToPath(import.meta.url);
|
|
5
|
-
const __dirname = __pathDirname(__filename);
|
|
6
|
-
import { spawn } from "child_process";
|
|
7
|
-
import * as path from "path";
|
|
8
|
-
const claudeSmPath = path.join(__dirname, "claude-sm.js");
|
|
9
|
-
const args = ["--dangerously-skip-permissions", ...process.argv.slice(2)];
|
|
10
|
-
const child = spawn("node", [claudeSmPath, ...args], {
|
|
11
|
-
stdio: "inherit",
|
|
12
|
-
env: process.env
|
|
13
|
-
});
|
|
14
|
-
child.on("exit", (code) => {
|
|
15
|
-
process.exit(code || 0);
|
|
16
|
-
});
|
|
17
|
-
child.on("error", (err) => {
|
|
18
|
-
console.error("Failed to launch claude-sm:", err.message);
|
|
19
|
-
process.exit(1);
|
|
20
|
-
});
|
|
21
|
-
//# sourceMappingURL=claude-sm-danger.js.map
|
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"version": 3,
|
|
3
|
-
"sources": ["../../src/cli/claude-sm-danger.ts"],
|
|
4
|
-
"sourcesContent": ["#!/usr/bin/env node\n\n/**\n * claude-sm-danger: Claude-SM wrapper with --dangerously-skip-permissions\n * Shorthand for: claude-sm --dangerously-skip-permissions [args]\n */\n\nimport { spawn } from 'child_process';\nimport * as path from 'path';\n\n// __filename and __dirname are provided by esbuild banner for ESM compatibility\n\n// Get the claude-sm script path\nconst claudeSmPath = path.join(__dirname, 'claude-sm.js');\n\n// Prepend the danger flag to all args\nconst args = ['--dangerously-skip-permissions', ...process.argv.slice(2)];\n\n// Spawn claude-sm with the danger flag\nconst child = spawn('node', [claudeSmPath, ...args], {\n stdio: 'inherit',\n env: process.env,\n});\n\nchild.on('exit', (code) => {\n process.exit(code || 0);\n});\n\nchild.on('error', (err) => {\n console.error('Failed to launch claude-sm:', err.message);\n process.exit(1);\n});\n"],
|
|
5
|
-
"mappings": ";;;;;AAOA,SAAS,aAAa;AACtB,YAAY,UAAU;AAKtB,MAAM,eAAe,KAAK,KAAK,WAAW,cAAc;AAGxD,MAAM,OAAO,CAAC,kCAAkC,GAAG,QAAQ,KAAK,MAAM,CAAC,CAAC;AAGxE,MAAM,QAAQ,MAAM,QAAQ,CAAC,cAAc,GAAG,IAAI,GAAG;AAAA,EACnD,OAAO;AAAA,EACP,KAAK,QAAQ;AACf,CAAC;AAED,MAAM,GAAG,QAAQ,CAAC,SAAS;AACzB,UAAQ,KAAK,QAAQ,CAAC;AACxB,CAAC;AAED,MAAM,GAAG,SAAS,CAAC,QAAQ;AACzB,UAAQ,MAAM,+BAA+B,IAAI,OAAO;AACxD,UAAQ,KAAK,CAAC;AAChB,CAAC;",
|
|
6
|
-
"names": []
|
|
7
|
-
}
|