@stackmemoryai/stackmemory 0.5.57 → 0.5.59
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/codex-smd +6 -0
- package/dist/cli/codex-sm-danger.js +21 -0
- package/dist/cli/codex-sm-danger.js.map +7 -0
- package/dist/cli/commands/handoff.js +33 -3
- package/dist/cli/commands/handoff.js.map +2 -2
- package/dist/cli/commands/search.js +20 -3
- package/dist/cli/commands/search.js.map +2 -2
- package/dist/core/database/sqlite-adapter.js +13 -3
- package/dist/core/database/sqlite-adapter.js.map +2 -2
- package/dist/core/errors/error-utils.js +208 -0
- package/dist/core/errors/error-utils.js.map +7 -0
- package/dist/core/errors/index.js +13 -4
- package/dist/core/errors/index.js.map +2 -2
- package/dist/core/merge/unified-merge-resolver.js +303 -0
- package/dist/core/merge/unified-merge-resolver.js.map +7 -0
- package/dist/core/monitoring/logger.js +61 -9
- package/dist/core/monitoring/logger.js.map +2 -2
- package/dist/core/security/index.js +35 -0
- package/dist/core/security/index.js.map +7 -0
- package/dist/core/security/input-sanitizer.js +321 -0
- package/dist/core/security/input-sanitizer.js.map +7 -0
- package/dist/core/session/enhanced-handoff.js +136 -2
- package/dist/core/session/enhanced-handoff.js.map +3 -3
- package/dist/integrations/linear/client.js +5 -1
- package/dist/integrations/linear/client.js.map +2 -2
- package/dist/integrations/mcp/remote-server.js +27 -36
- package/dist/integrations/mcp/remote-server.js.map +2 -2
- package/dist/integrations/mcp/server.js +44 -29
- package/dist/integrations/mcp/server.js.map +3 -3
- package/dist/scripts/benchmark-performance.js +48 -0
- package/dist/scripts/benchmark-performance.js.map +7 -0
- package/dist/scripts/check-redis.js +42 -0
- package/dist/scripts/check-redis.js.map +7 -0
- package/dist/scripts/initialize.js +116 -0
- package/dist/scripts/initialize.js.map +7 -0
- package/dist/scripts/list-linear-tasks.js +124 -0
- package/dist/scripts/list-linear-tasks.js.map +7 -0
- package/dist/scripts/measure-handoff-impact.js +340 -0
- package/dist/scripts/measure-handoff-impact.js.map +7 -0
- package/dist/scripts/query-chromadb.js +160 -0
- package/dist/scripts/query-chromadb.js.map +7 -0
- package/dist/scripts/show-linear-summary.js +119 -0
- package/dist/scripts/show-linear-summary.js.map +7 -0
- package/dist/scripts/simple-swarm-demo.js +90 -0
- package/dist/scripts/simple-swarm-demo.js.map +7 -0
- package/dist/scripts/status.js +155 -0
- package/dist/scripts/status.js.map +7 -0
- package/dist/scripts/test-chromadb-sync.js +192 -0
- package/dist/scripts/test-chromadb-sync.js.map +7 -0
- package/dist/scripts/test-ralph-iteration-fix.js +86 -0
- package/dist/scripts/test-ralph-iteration-fix.js.map +7 -0
- package/dist/scripts/test-ralph-iterations.js +121 -0
- package/dist/scripts/test-ralph-iterations.js.map +7 -0
- package/dist/scripts/test-redis-storage.js +389 -0
- package/dist/scripts/test-redis-storage.js.map +7 -0
- package/dist/scripts/test-simple-ralph-state-sync.js +115 -0
- package/dist/scripts/test-simple-ralph-state-sync.js.map +7 -0
- package/dist/scripts/test-swarm-fixes.js +125 -0
- package/dist/scripts/test-swarm-fixes.js.map +7 -0
- package/dist/scripts/test-swarm-tui.js +23 -0
- package/dist/scripts/test-swarm-tui.js.map +7 -0
- package/dist/scripts/test-tui-shortcuts.js +52 -0
- package/dist/scripts/test-tui-shortcuts.js.map +7 -0
- package/dist/scripts/validate-tui-shortcuts.js +60 -0
- package/dist/scripts/validate-tui-shortcuts.js.map +7 -0
- package/dist/src/agents/core/agent-task-manager.js +527 -0
- package/dist/src/agents/core/agent-task-manager.js.map +7 -0
- package/dist/src/agents/verifiers/base-verifier.js +133 -0
- package/dist/src/agents/verifiers/base-verifier.js.map +7 -0
- package/dist/src/agents/verifiers/formatter-verifier.js +130 -0
- package/dist/src/agents/verifiers/formatter-verifier.js.map +7 -0
- package/dist/src/agents/verifiers/llm-judge.js +252 -0
- package/dist/src/agents/verifiers/llm-judge.js.map +7 -0
- package/dist/src/cli/auto-detect.js +321 -0
- package/dist/src/cli/auto-detect.js.map +7 -0
- package/dist/src/cli/claude-sm-danger.js +21 -0
- package/dist/src/cli/claude-sm-danger.js.map +7 -0
- package/dist/src/cli/claude-sm.js +1156 -0
- package/dist/src/cli/claude-sm.js.map +7 -0
- package/dist/src/cli/codex-sm-danger.js +21 -0
- package/dist/src/cli/codex-sm-danger.js.map +7 -0
- package/dist/src/cli/codex-sm.js +349 -0
- package/dist/src/cli/codex-sm.js.map +7 -0
- package/dist/src/cli/commands/api.js +232 -0
- package/dist/src/cli/commands/api.js.map +7 -0
- package/dist/src/cli/commands/auto-background.js +180 -0
- package/dist/src/cli/commands/auto-background.js.map +7 -0
- package/dist/src/cli/commands/cleanup-processes.js +68 -0
- package/dist/src/cli/commands/cleanup-processes.js.map +7 -0
- package/dist/src/cli/commands/clear.js +202 -0
- package/dist/src/cli/commands/clear.js.map +7 -0
- package/dist/src/cli/commands/config.js +445 -0
- package/dist/src/cli/commands/config.js.map +7 -0
- package/dist/src/cli/commands/context-rehydrate.js +751 -0
- package/dist/src/cli/commands/context-rehydrate.js.map +7 -0
- package/dist/src/cli/commands/context.js +343 -0
- package/dist/src/cli/commands/context.js.map +7 -0
- package/dist/src/cli/commands/daemon.js +392 -0
- package/dist/src/cli/commands/daemon.js.map +7 -0
- package/dist/src/cli/commands/dashboard.js +210 -0
- package/dist/src/cli/commands/dashboard.js.map +7 -0
- package/dist/src/cli/commands/db.js +147 -0
- package/dist/src/cli/commands/db.js.map +7 -0
- package/dist/src/cli/commands/decision.js +266 -0
- package/dist/src/cli/commands/decision.js.map +7 -0
- package/dist/src/cli/commands/discovery.js +279 -0
- package/dist/src/cli/commands/discovery.js.map +7 -0
- package/dist/src/cli/commands/handoff.js +624 -0
- package/dist/src/cli/commands/handoff.js.map +7 -0
- package/dist/src/cli/commands/hooks.js +298 -0
- package/dist/src/cli/commands/hooks.js.map +7 -0
- package/dist/src/cli/commands/linear.js +529 -0
- package/dist/src/cli/commands/linear.js.map +7 -0
- package/dist/src/cli/commands/log.js +169 -0
- package/dist/src/cli/commands/log.js.map +7 -0
- package/dist/src/cli/commands/login.js +172 -0
- package/dist/src/cli/commands/login.js.map +7 -0
- package/dist/src/cli/commands/migrate.js +240 -0
- package/dist/src/cli/commands/migrate.js.map +7 -0
- package/dist/src/cli/commands/model.js +533 -0
- package/dist/src/cli/commands/model.js.map +7 -0
- package/dist/src/cli/commands/onboard.js +536 -0
- package/dist/src/cli/commands/onboard.js.map +7 -0
- package/dist/src/cli/commands/projects.js +199 -0
- package/dist/src/cli/commands/projects.js.map +7 -0
- package/dist/src/cli/commands/ralph.js +909 -0
- package/dist/src/cli/commands/ralph.js.map +7 -0
- package/dist/src/cli/commands/retrieval.js +248 -0
- package/dist/src/cli/commands/retrieval.js.map +7 -0
- package/dist/src/cli/commands/search.js +173 -0
- package/dist/src/cli/commands/search.js.map +7 -0
- package/dist/src/cli/commands/service.js +749 -0
- package/dist/src/cli/commands/service.js.map +7 -0
- package/dist/src/cli/commands/session.js +200 -0
- package/dist/src/cli/commands/session.js.map +7 -0
- package/dist/src/cli/commands/settings.js +306 -0
- package/dist/src/cli/commands/settings.js.map +7 -0
- package/dist/src/cli/commands/setup.js +701 -0
- package/dist/src/cli/commands/setup.js.map +7 -0
- package/dist/src/cli/commands/shell.js +249 -0
- package/dist/src/cli/commands/shell.js.map +7 -0
- package/dist/src/cli/commands/signup.js +50 -0
- package/dist/src/cli/commands/signup.js.map +7 -0
- package/dist/src/cli/commands/skills.js +470 -0
- package/dist/src/cli/commands/skills.js.map +7 -0
- package/dist/src/cli/commands/sms-notify.js +795 -0
- package/dist/src/cli/commands/sms-notify.js.map +7 -0
- package/dist/src/cli/commands/storage-tier.js +183 -0
- package/dist/src/cli/commands/storage-tier.js.map +7 -0
- package/dist/src/cli/commands/sweep.js +249 -0
- package/dist/src/cli/commands/sweep.js.map +7 -0
- package/dist/src/cli/commands/tasks.js +213 -0
- package/dist/src/cli/commands/tasks.js.map +7 -0
- package/dist/src/cli/commands/worktree.js +319 -0
- package/dist/src/cli/commands/worktree.js.map +7 -0
- package/dist/src/cli/index.js +594 -0
- package/dist/src/cli/index.js.map +7 -0
- package/dist/src/cli/opencode-sm.js +448 -0
- package/dist/src/cli/opencode-sm.js.map +7 -0
- package/dist/src/cli/utils/viewer.js +96 -0
- package/dist/src/cli/utils/viewer.js.map +7 -0
- package/dist/src/core/config/config-manager.js +398 -0
- package/dist/src/core/config/config-manager.js.map +7 -0
- package/dist/src/core/config/feature-flags.js +76 -0
- package/dist/src/core/config/feature-flags.js.map +7 -0
- package/dist/src/core/config/storage-config.js +115 -0
- package/dist/src/core/config/storage-config.js.map +7 -0
- package/dist/src/core/config/types.js +144 -0
- package/dist/src/core/config/types.js.map +7 -0
- package/dist/src/core/context/auto-context.js +80 -0
- package/dist/src/core/context/auto-context.js.map +7 -0
- package/dist/src/core/context/dual-stack-manager.js +870 -0
- package/dist/src/core/context/dual-stack-manager.js.map +7 -0
- package/dist/src/core/context/enhanced-rehydration.js +994 -0
- package/dist/src/core/context/enhanced-rehydration.js.map +7 -0
- package/dist/src/core/context/frame-database.js +479 -0
- package/dist/src/core/context/frame-database.js.map +7 -0
- package/dist/src/core/context/frame-digest.js +250 -0
- package/dist/src/core/context/frame-digest.js.map +7 -0
- package/dist/src/core/context/frame-handoff-manager.js +778 -0
- package/dist/src/core/context/frame-handoff-manager.js.map +7 -0
- package/dist/src/core/context/frame-lifecycle-hooks.js +119 -0
- package/dist/src/core/context/frame-lifecycle-hooks.js.map +7 -0
- package/dist/src/core/context/frame-recovery.js +302 -0
- package/dist/src/core/context/frame-recovery.js.map +7 -0
- package/dist/src/core/context/frame-stack.js +314 -0
- package/dist/src/core/context/frame-stack.js.map +7 -0
- package/dist/src/core/context/frame-types.js +5 -0
- package/dist/src/core/context/frame-types.js.map +7 -0
- package/dist/src/core/context/index.js +25 -0
- package/dist/src/core/context/index.js.map +7 -0
- package/dist/src/core/context/permission-manager.js +185 -0
- package/dist/src/core/context/permission-manager.js.map +7 -0
- package/dist/src/core/context/recursive-context-manager.js +592 -0
- package/dist/src/core/context/recursive-context-manager.js.map +7 -0
- package/dist/src/core/context/refactored-frame-manager.js +754 -0
- package/dist/src/core/context/refactored-frame-manager.js.map +7 -0
- package/dist/src/core/context/shared-context-layer.js +621 -0
- package/dist/src/core/context/shared-context-layer.js.map +7 -0
- package/dist/src/core/context/stack-merge-resolver.js +749 -0
- package/dist/src/core/context/stack-merge-resolver.js.map +7 -0
- package/dist/src/core/context/validation.js +130 -0
- package/dist/src/core/context/validation.js.map +7 -0
- package/dist/src/core/database/batch-operations.js +384 -0
- package/dist/src/core/database/batch-operations.js.map +7 -0
- package/dist/src/core/database/connection-pool.js +330 -0
- package/dist/src/core/database/connection-pool.js.map +7 -0
- package/dist/src/core/database/database-adapter.js +60 -0
- package/dist/src/core/database/database-adapter.js.map +7 -0
- package/dist/src/core/database/migration-manager.js +614 -0
- package/dist/src/core/database/migration-manager.js.map +7 -0
- package/dist/src/core/database/query-cache.js +298 -0
- package/dist/src/core/database/query-cache.js.map +7 -0
- package/dist/src/core/database/query-router.js +430 -0
- package/dist/src/core/database/query-router.js.map +7 -0
- package/dist/src/core/database/sqlite-adapter.js +738 -0
- package/dist/src/core/database/sqlite-adapter.js.map +7 -0
- package/dist/src/core/digest/enhanced-hybrid-digest.js +277 -0
- package/dist/src/core/digest/enhanced-hybrid-digest.js.map +7 -0
- package/dist/src/core/digest/frame-digest-integration.js +176 -0
- package/dist/src/core/digest/frame-digest-integration.js.map +7 -0
- package/dist/src/core/digest/hybrid-digest-generator.js +553 -0
- package/dist/src/core/digest/hybrid-digest-generator.js.map +7 -0
- package/dist/src/core/digest/index.js +9 -0
- package/dist/src/core/digest/index.js.map +7 -0
- package/dist/src/core/digest/types.js +25 -0
- package/dist/src/core/digest/types.js.map +7 -0
- package/dist/src/core/errors/error-utils.js +208 -0
- package/dist/src/core/errors/error-utils.js.map +7 -0
- package/dist/src/core/errors/index.js +521 -0
- package/dist/src/core/errors/index.js.map +7 -0
- package/dist/src/core/errors/recovery.js +269 -0
- package/dist/src/core/errors/recovery.js.map +7 -0
- package/dist/src/core/execution/parallel-executor.js +258 -0
- package/dist/src/core/execution/parallel-executor.js.map +7 -0
- package/dist/src/core/frame/workflow-templates.js +319 -0
- package/dist/src/core/frame/workflow-templates.js.map +7 -0
- package/dist/src/core/merge/conflict-detector.js +431 -0
- package/dist/src/core/merge/conflict-detector.js.map +7 -0
- package/dist/src/core/merge/index.js +9 -0
- package/dist/src/core/merge/index.js.map +7 -0
- package/dist/src/core/merge/resolution-engine.js +558 -0
- package/dist/src/core/merge/resolution-engine.js.map +7 -0
- package/dist/src/core/merge/stack-diff.js +532 -0
- package/dist/src/core/merge/stack-diff.js.map +7 -0
- package/dist/src/core/merge/types.js +5 -0
- package/dist/src/core/merge/types.js.map +7 -0
- package/dist/src/core/merge/unified-merge-resolver.js +303 -0
- package/dist/src/core/merge/unified-merge-resolver.js.map +7 -0
- package/dist/src/core/models/fallback-monitor.js +232 -0
- package/dist/src/core/models/fallback-monitor.js.map +7 -0
- package/dist/src/core/models/model-router.js +340 -0
- package/dist/src/core/models/model-router.js.map +7 -0
- package/dist/src/core/monitoring/error-handler.js +49 -0
- package/dist/src/core/monitoring/error-handler.js.map +7 -0
- package/dist/src/core/monitoring/logger.js +202 -0
- package/dist/src/core/monitoring/logger.js.map +7 -0
- package/dist/src/core/monitoring/metrics.js +172 -0
- package/dist/src/core/monitoring/metrics.js.map +7 -0
- package/dist/src/core/monitoring/progress-tracker.js +189 -0
- package/dist/src/core/monitoring/progress-tracker.js.map +7 -0
- package/dist/src/core/monitoring/session-monitor.js +300 -0
- package/dist/src/core/monitoring/session-monitor.js.map +7 -0
- package/dist/src/core/performance/context-cache.js +273 -0
- package/dist/src/core/performance/context-cache.js.map +7 -0
- package/dist/src/core/performance/index.js +11 -0
- package/dist/src/core/performance/index.js.map +7 -0
- package/dist/src/core/performance/lazy-context-loader.js +327 -0
- package/dist/src/core/performance/lazy-context-loader.js.map +7 -0
- package/dist/src/core/performance/monitor.js +221 -0
- package/dist/src/core/performance/monitor.js.map +7 -0
- package/dist/src/core/performance/optimized-frame-context.js +345 -0
- package/dist/src/core/performance/optimized-frame-context.js.map +7 -0
- package/dist/src/core/performance/performance-benchmark.js +277 -0
- package/dist/src/core/performance/performance-benchmark.js.map +7 -0
- package/dist/src/core/performance/performance-profiler.js +370 -0
- package/dist/src/core/performance/performance-profiler.js.map +7 -0
- package/dist/src/core/performance/streaming-jsonl-parser.js +195 -0
- package/dist/src/core/performance/streaming-jsonl-parser.js.map +7 -0
- package/dist/src/core/persistence/postgres-adapter.js +349 -0
- package/dist/src/core/persistence/postgres-adapter.js.map +7 -0
- package/dist/src/core/projects/project-isolation.js +201 -0
- package/dist/src/core/projects/project-isolation.js.map +7 -0
- package/dist/src/core/projects/project-manager.js +697 -0
- package/dist/src/core/projects/project-manager.js.map +7 -0
- package/dist/src/core/query/query-parser.js +370 -0
- package/dist/src/core/query/query-parser.js.map +7 -0
- package/dist/src/core/query/query-templates.js +321 -0
- package/dist/src/core/query/query-templates.js.map +7 -0
- package/dist/src/core/retrieval/context-retriever.js +479 -0
- package/dist/src/core/retrieval/context-retriever.js.map +7 -0
- package/dist/src/core/retrieval/index.js +8 -0
- package/dist/src/core/retrieval/index.js.map +7 -0
- package/dist/src/core/retrieval/llm-context-retrieval.js +613 -0
- package/dist/src/core/retrieval/llm-context-retrieval.js.map +7 -0
- package/dist/src/core/retrieval/llm-provider.js +151 -0
- package/dist/src/core/retrieval/llm-provider.js.map +7 -0
- package/dist/src/core/retrieval/retrieval-audit.js +236 -0
- package/dist/src/core/retrieval/retrieval-audit.js.map +7 -0
- package/dist/src/core/retrieval/summary-generator.js +589 -0
- package/dist/src/core/retrieval/summary-generator.js.map +7 -0
- package/dist/src/core/retrieval/types.js +21 -0
- package/dist/src/core/retrieval/types.js.map +7 -0
- package/dist/src/core/security/index.js +35 -0
- package/dist/src/core/security/index.js.map +7 -0
- package/dist/src/core/security/input-sanitizer.js +321 -0
- package/dist/src/core/security/input-sanitizer.js.map +7 -0
- package/dist/src/core/session/clear-survival.js +465 -0
- package/dist/src/core/session/clear-survival.js.map +7 -0
- package/dist/src/core/session/enhanced-handoff.js +792 -0
- package/dist/src/core/session/enhanced-handoff.js.map +7 -0
- package/dist/src/core/session/handoff-generator.js +343 -0
- package/dist/src/core/session/handoff-generator.js.map +7 -0
- package/dist/src/core/session/index.js +15 -0
- package/dist/src/core/session/index.js.map +7 -0
- package/dist/src/core/session/session-manager.js +347 -0
- package/dist/src/core/session/session-manager.js.map +7 -0
- package/dist/src/core/skills/index.js +7 -0
- package/dist/src/core/skills/index.js.map +7 -0
- package/dist/src/core/skills/skill-storage.js +764 -0
- package/dist/src/core/skills/skill-storage.js.map +7 -0
- package/dist/src/core/skills/types.js +193 -0
- package/dist/src/core/skills/types.js.map +7 -0
- package/dist/src/core/storage/chromadb-adapter.js +354 -0
- package/dist/src/core/storage/chromadb-adapter.js.map +7 -0
- package/dist/src/core/storage/infinite-storage.js +510 -0
- package/dist/src/core/storage/infinite-storage.js.map +7 -0
- package/dist/src/core/storage/remote-storage.js +489 -0
- package/dist/src/core/storage/remote-storage.js.map +7 -0
- package/dist/src/core/storage/two-tier-storage.js +766 -0
- package/dist/src/core/storage/two-tier-storage.js.map +7 -0
- package/dist/src/core/trace/cli-trace-wrapper.js +132 -0
- package/dist/src/core/trace/cli-trace-wrapper.js.map +7 -0
- package/dist/src/core/trace/db-trace-wrapper.js +247 -0
- package/dist/src/core/trace/db-trace-wrapper.js.map +7 -0
- package/dist/src/core/trace/debug-trace.js +417 -0
- package/dist/src/core/trace/debug-trace.js.map +7 -0
- package/dist/src/core/trace/index.js +109 -0
- package/dist/src/core/trace/index.js.map +7 -0
- package/dist/src/core/trace/linear-api-wrapper.js +178 -0
- package/dist/src/core/trace/linear-api-wrapper.js.map +7 -0
- package/dist/src/core/trace/trace-detector.js +528 -0
- package/dist/src/core/trace/trace-detector.js.map +7 -0
- package/dist/src/core/trace/trace-store.js +345 -0
- package/dist/src/core/trace/trace-store.js.map +7 -0
- package/dist/src/core/trace/types.js +77 -0
- package/dist/src/core/trace/types.js.map +7 -0
- package/dist/src/core/types.js +5 -0
- package/dist/src/core/types.js.map +7 -0
- package/dist/src/core/utils/async-mutex.js +114 -0
- package/dist/src/core/utils/async-mutex.js.map +7 -0
- package/dist/src/core/utils/compression.js +83 -0
- package/dist/src/core/utils/compression.js.map +7 -0
- package/dist/src/core/utils/update-checker.js +218 -0
- package/dist/src/core/utils/update-checker.js.map +7 -0
- package/dist/src/core/worktree/worktree-manager.js +465 -0
- package/dist/src/core/worktree/worktree-manager.js.map +7 -0
- package/dist/src/daemon/daemon-config.js +149 -0
- package/dist/src/daemon/daemon-config.js.map +7 -0
- package/dist/src/daemon/services/context-service.js +122 -0
- package/dist/src/daemon/services/context-service.js.map +7 -0
- package/dist/src/daemon/services/linear-service.js +136 -0
- package/dist/src/daemon/services/linear-service.js.map +7 -0
- package/dist/src/daemon/session-daemon.js +312 -0
- package/dist/src/daemon/session-daemon.js.map +7 -0
- package/dist/src/daemon/unified-daemon.js +276 -0
- package/dist/src/daemon/unified-daemon.js.map +7 -0
- package/dist/src/features/analytics/api/analytics-api.js +287 -0
- package/dist/src/features/analytics/api/analytics-api.js.map +7 -0
- package/dist/src/features/analytics/core/analytics-service.js +282 -0
- package/dist/src/features/analytics/core/analytics-service.js.map +7 -0
- package/dist/src/features/analytics/index.js +18 -0
- package/dist/src/features/analytics/index.js.map +7 -0
- package/dist/src/features/analytics/queries/metrics-queries.js +277 -0
- package/dist/src/features/analytics/queries/metrics-queries.js.map +7 -0
- package/dist/src/features/analytics/types/metrics.js +5 -0
- package/dist/src/features/analytics/types/metrics.js.map +7 -0
- package/dist/src/features/browser/browser-mcp.js +492 -0
- package/dist/src/features/browser/browser-mcp.js.map +7 -0
- package/dist/src/features/sweep/index.js +20 -0
- package/dist/src/features/sweep/index.js.map +7 -0
- package/dist/src/features/sweep/prediction-client.js +155 -0
- package/dist/src/features/sweep/prediction-client.js.map +7 -0
- package/dist/src/features/sweep/prompt-builder.js +85 -0
- package/dist/src/features/sweep/prompt-builder.js.map +7 -0
- package/dist/src/features/sweep/pty-wrapper.js +171 -0
- package/dist/src/features/sweep/pty-wrapper.js.map +7 -0
- package/dist/src/features/sweep/state-watcher.js +87 -0
- package/dist/src/features/sweep/state-watcher.js.map +7 -0
- package/dist/src/features/sweep/status-bar.js +88 -0
- package/dist/src/features/sweep/status-bar.js.map +7 -0
- package/dist/src/features/sweep/sweep-server-manager.js +226 -0
- package/dist/src/features/sweep/sweep-server-manager.js.map +7 -0
- package/dist/src/features/sweep/tab-interceptor.js +38 -0
- package/dist/src/features/sweep/tab-interceptor.js.map +7 -0
- package/dist/src/features/sweep/types.js +18 -0
- package/dist/src/features/sweep/types.js.map +7 -0
- package/dist/src/features/tasks/linear-task-manager.js +487 -0
- package/dist/src/features/tasks/linear-task-manager.js.map +7 -0
- package/dist/src/features/tasks/task-aware-context.js +410 -0
- package/dist/src/features/tasks/task-aware-context.js.map +7 -0
- package/dist/src/features/tui/simple-monitor.js +116 -0
- package/dist/src/features/tui/simple-monitor.js.map +7 -0
- package/dist/src/features/tui/swarm-monitor.js +648 -0
- package/dist/src/features/tui/swarm-monitor.js.map +7 -0
- package/dist/src/features/web/client/stores/task-store.js +26 -0
- package/dist/src/features/web/client/stores/task-store.js.map +7 -0
- package/dist/src/features/web/server/index.js +194 -0
- package/dist/src/features/web/server/index.js.map +7 -0
- package/dist/src/hooks/auto-background.js +151 -0
- package/dist/src/hooks/auto-background.js.map +7 -0
- package/dist/src/hooks/claude-code-whatsapp-hook.js +197 -0
- package/dist/src/hooks/claude-code-whatsapp-hook.js.map +7 -0
- package/dist/src/hooks/config.js +150 -0
- package/dist/src/hooks/config.js.map +7 -0
- package/dist/src/hooks/daemon.js +364 -0
- package/dist/src/hooks/daemon.js.map +7 -0
- package/dist/src/hooks/events.js +58 -0
- package/dist/src/hooks/events.js.map +7 -0
- package/dist/src/hooks/index.js +12 -0
- package/dist/src/hooks/index.js.map +7 -0
- package/dist/src/hooks/linear-task-picker.js +186 -0
- package/dist/src/hooks/linear-task-picker.js.map +7 -0
- package/dist/src/hooks/schemas.js +197 -0
- package/dist/src/hooks/schemas.js.map +7 -0
- package/dist/src/hooks/secure-fs.js +49 -0
- package/dist/src/hooks/secure-fs.js.map +7 -0
- package/dist/src/hooks/security-logger.js +155 -0
- package/dist/src/hooks/security-logger.js.map +7 -0
- package/dist/src/hooks/session-summary.js +222 -0
- package/dist/src/hooks/session-summary.js.map +7 -0
- package/dist/src/hooks/sms-action-runner.js +371 -0
- package/dist/src/hooks/sms-action-runner.js.map +7 -0
- package/dist/src/hooks/sms-notify.js +506 -0
- package/dist/src/hooks/sms-notify.js.map +7 -0
- package/dist/src/hooks/sms-watcher.js +93 -0
- package/dist/src/hooks/sms-watcher.js.map +7 -0
- package/dist/src/hooks/sms-webhook.js +555 -0
- package/dist/src/hooks/sms-webhook.js.map +7 -0
- package/dist/src/hooks/whatsapp-commands.js +479 -0
- package/dist/src/hooks/whatsapp-commands.js.map +7 -0
- package/dist/src/hooks/whatsapp-scheduler.js +317 -0
- package/dist/src/hooks/whatsapp-scheduler.js.map +7 -0
- package/dist/src/hooks/whatsapp-sync.js +409 -0
- package/dist/src/hooks/whatsapp-sync.js.map +7 -0
- package/dist/src/index.js +25 -0
- package/dist/src/index.js.map +7 -0
- package/dist/src/integrations/anthropic/client.js +263 -0
- package/dist/src/integrations/anthropic/client.js.map +7 -0
- package/dist/src/integrations/claude-code/agent-bridge.js +768 -0
- package/dist/src/integrations/claude-code/agent-bridge.js.map +7 -0
- package/dist/src/integrations/claude-code/enhanced-pre-clear-hooks.js +459 -0
- package/dist/src/integrations/claude-code/enhanced-pre-clear-hooks.js.map +7 -0
- package/dist/src/integrations/claude-code/lifecycle-hooks.js +254 -0
- package/dist/src/integrations/claude-code/lifecycle-hooks.js.map +7 -0
- package/dist/src/integrations/claude-code/post-task-hooks.js +545 -0
- package/dist/src/integrations/claude-code/post-task-hooks.js.map +7 -0
- package/dist/src/integrations/claude-code/subagent-client-stub.js +20 -0
- package/dist/src/integrations/claude-code/subagent-client-stub.js.map +7 -0
- package/dist/src/integrations/claude-code/subagent-client.js +511 -0
- package/dist/src/integrations/claude-code/subagent-client.js.map +7 -0
- package/dist/src/integrations/claude-code/task-coordinator.js +360 -0
- package/dist/src/integrations/claude-code/task-coordinator.js.map +7 -0
- package/dist/src/integrations/linear/auth.js +337 -0
- package/dist/src/integrations/linear/auth.js.map +7 -0
- package/dist/src/integrations/linear/auto-sync.js +258 -0
- package/dist/src/integrations/linear/auto-sync.js.map +7 -0
- package/dist/src/integrations/linear/client.js +634 -0
- package/dist/src/integrations/linear/client.js.map +7 -0
- package/dist/src/integrations/linear/config.js +130 -0
- package/dist/src/integrations/linear/config.js.map +7 -0
- package/dist/src/integrations/linear/migration.js +361 -0
- package/dist/src/integrations/linear/migration.js.map +7 -0
- package/dist/src/integrations/linear/oauth-server.js +454 -0
- package/dist/src/integrations/linear/oauth-server.js.map +7 -0
- package/dist/src/integrations/linear/rest-client.js +213 -0
- package/dist/src/integrations/linear/rest-client.js.map +7 -0
- package/dist/src/integrations/linear/sync-manager.js +236 -0
- package/dist/src/integrations/linear/sync-manager.js.map +7 -0
- package/dist/src/integrations/linear/sync-service.js +231 -0
- package/dist/src/integrations/linear/sync-service.js.map +7 -0
- package/dist/src/integrations/linear/sync.js +782 -0
- package/dist/src/integrations/linear/sync.js.map +7 -0
- package/dist/src/integrations/linear/types.js +5 -0
- package/dist/src/integrations/linear/types.js.map +7 -0
- package/dist/src/integrations/linear/unified-sync.js +589 -0
- package/dist/src/integrations/linear/unified-sync.js.map +7 -0
- package/dist/src/integrations/linear/webhook-handler.js +219 -0
- package/dist/src/integrations/linear/webhook-handler.js.map +7 -0
- package/dist/src/integrations/linear/webhook-server.js +218 -0
- package/dist/src/integrations/linear/webhook-server.js.map +7 -0
- package/dist/src/integrations/linear/webhook.js +291 -0
- package/dist/src/integrations/linear/webhook.js.map +7 -0
- package/dist/src/integrations/mcp/handlers/code-execution-handlers.js +266 -0
- package/dist/src/integrations/mcp/handlers/code-execution-handlers.js.map +7 -0
- package/dist/src/integrations/mcp/handlers/context-handlers.js +257 -0
- package/dist/src/integrations/mcp/handlers/context-handlers.js.map +7 -0
- package/dist/src/integrations/mcp/handlers/discovery-handlers.js +497 -0
- package/dist/src/integrations/mcp/handlers/discovery-handlers.js.map +7 -0
- package/dist/src/integrations/mcp/handlers/index.js +166 -0
- package/dist/src/integrations/mcp/handlers/index.js.map +7 -0
- package/dist/src/integrations/mcp/handlers/linear-handlers.js +247 -0
- package/dist/src/integrations/mcp/handlers/linear-handlers.js.map +7 -0
- package/dist/src/integrations/mcp/handlers/skill-handlers.js +529 -0
- package/dist/src/integrations/mcp/handlers/skill-handlers.js.map +7 -0
- package/dist/src/integrations/mcp/handlers/task-handlers.js +239 -0
- package/dist/src/integrations/mcp/handlers/task-handlers.js.map +7 -0
- package/dist/src/integrations/mcp/handlers/trace-handlers.js +308 -0
- package/dist/src/integrations/mcp/handlers/trace-handlers.js.map +7 -0
- package/dist/src/integrations/mcp/index.js +23 -0
- package/dist/src/integrations/mcp/index.js.map +7 -0
- package/dist/src/integrations/mcp/middleware/tool-scoring.js +356 -0
- package/dist/src/integrations/mcp/middleware/tool-scoring.js.map +7 -0
- package/dist/src/integrations/mcp/refactored-server.js +374 -0
- package/dist/src/integrations/mcp/refactored-server.js.map +7 -0
- package/dist/src/integrations/mcp/remote-server.js +682 -0
- package/dist/src/integrations/mcp/remote-server.js.map +7 -0
- package/dist/src/integrations/mcp/schemas.js +147 -0
- package/dist/src/integrations/mcp/schemas.js.map +7 -0
- package/dist/src/integrations/mcp/server.js +1975 -0
- package/dist/src/integrations/mcp/server.js.map +7 -0
- package/dist/src/integrations/mcp/tool-definitions-code.js +125 -0
- package/dist/src/integrations/mcp/tool-definitions-code.js.map +7 -0
- package/dist/src/integrations/mcp/tool-definitions.js +702 -0
- package/dist/src/integrations/mcp/tool-definitions.js.map +7 -0
- package/dist/src/integrations/ralph/bridge/ralph-stackmemory-bridge.js +860 -0
- package/dist/src/integrations/ralph/bridge/ralph-stackmemory-bridge.js.map +7 -0
- package/dist/src/integrations/ralph/context/context-budget-manager.js +301 -0
- package/dist/src/integrations/ralph/context/context-budget-manager.js.map +7 -0
- package/dist/src/integrations/ralph/context/stackmemory-context-loader.js +360 -0
- package/dist/src/integrations/ralph/context/stackmemory-context-loader.js.map +7 -0
- package/dist/src/integrations/ralph/coordination/enhanced-coordination.js +410 -0
- package/dist/src/integrations/ralph/coordination/enhanced-coordination.js.map +7 -0
- package/dist/src/integrations/ralph/index.js +18 -0
- package/dist/src/integrations/ralph/index.js.map +7 -0
- package/dist/src/integrations/ralph/learning/pattern-learner.js +401 -0
- package/dist/src/integrations/ralph/learning/pattern-learner.js.map +7 -0
- package/dist/src/integrations/ralph/lifecycle/iteration-lifecycle.js +448 -0
- package/dist/src/integrations/ralph/lifecycle/iteration-lifecycle.js.map +7 -0
- package/dist/src/integrations/ralph/monitoring/swarm-dashboard.js +294 -0
- package/dist/src/integrations/ralph/monitoring/swarm-dashboard.js.map +7 -0
- package/dist/src/integrations/ralph/monitoring/swarm-registry.js +108 -0
- package/dist/src/integrations/ralph/monitoring/swarm-registry.js.map +7 -0
- package/dist/src/integrations/ralph/orchestration/multi-loop-orchestrator.js +463 -0
- package/dist/src/integrations/ralph/orchestration/multi-loop-orchestrator.js.map +7 -0
- package/dist/src/integrations/ralph/patterns/compounding-engineering-pattern.js +400 -0
- package/dist/src/integrations/ralph/patterns/compounding-engineering-pattern.js.map +7 -0
- package/dist/src/integrations/ralph/patterns/extended-coherence-sessions.js +473 -0
- package/dist/src/integrations/ralph/patterns/extended-coherence-sessions.js.map +7 -0
- package/dist/src/integrations/ralph/patterns/oracle-worker-pattern.js +388 -0
- package/dist/src/integrations/ralph/patterns/oracle-worker-pattern.js.map +7 -0
- package/dist/src/integrations/ralph/performance/performance-optimizer.js +358 -0
- package/dist/src/integrations/ralph/performance/performance-optimizer.js.map +7 -0
- package/dist/src/integrations/ralph/recovery/crash-recovery.js +462 -0
- package/dist/src/integrations/ralph/recovery/crash-recovery.js.map +7 -0
- package/dist/src/integrations/ralph/state/state-reconciler.js +404 -0
- package/dist/src/integrations/ralph/state/state-reconciler.js.map +7 -0
- package/dist/src/integrations/ralph/swarm/git-workflow-manager.js +428 -0
- package/dist/src/integrations/ralph/swarm/git-workflow-manager.js.map +7 -0
- package/dist/src/integrations/ralph/swarm/swarm-coordinator.js +996 -0
- package/dist/src/integrations/ralph/swarm/swarm-coordinator.js.map +7 -0
- package/dist/src/integrations/ralph/types.js +5 -0
- package/dist/src/integrations/ralph/types.js.map +7 -0
- package/dist/src/integrations/ralph/visualization/ralph-debugger.js +585 -0
- package/dist/src/integrations/ralph/visualization/ralph-debugger.js.map +7 -0
- package/dist/src/mcp/stackmemory-mcp-server.js +554 -0
- package/dist/src/mcp/stackmemory-mcp-server.js.map +7 -0
- package/dist/src/middleware/exponential-rate-limiter.js +289 -0
- package/dist/src/middleware/exponential-rate-limiter.js.map +7 -0
- package/dist/src/models/user.model.js +358 -0
- package/dist/src/models/user.model.js.map +7 -0
- package/dist/src/servers/production/auth-middleware.js +528 -0
- package/dist/src/servers/production/auth-middleware.js.map +7 -0
- package/dist/src/services/config-service.js +65 -0
- package/dist/src/services/config-service.js.map +7 -0
- package/dist/src/services/context-service.js +194 -0
- package/dist/src/services/context-service.js.map +7 -0
- package/dist/src/skills/api-discovery.js +354 -0
- package/dist/src/skills/api-discovery.js.map +7 -0
- package/dist/src/skills/api-skill.js +475 -0
- package/dist/src/skills/api-skill.js.map +7 -0
- package/dist/src/skills/claude-skills.js +1061 -0
- package/dist/src/skills/claude-skills.js.map +7 -0
- package/dist/src/skills/dashboard-launcher.js +216 -0
- package/dist/src/skills/dashboard-launcher.js.map +7 -0
- package/dist/src/skills/recursive-agent-orchestrator.js +575 -0
- package/dist/src/skills/recursive-agent-orchestrator.js.map +7 -0
- package/dist/src/skills/repo-ingestion-skill.js +609 -0
- package/dist/src/skills/repo-ingestion-skill.js.map +7 -0
- package/dist/src/skills/unified-rlm-orchestrator.js +404 -0
- package/dist/src/skills/unified-rlm-orchestrator.js.map +7 -0
- package/dist/src/types/task.js +5 -0
- package/dist/src/types/task.js.map +7 -0
- package/dist/src/utils/env.js +50 -0
- package/dist/src/utils/env.js.map +7 -0
- package/dist/src/utils/formatting.js +62 -0
- package/dist/src/utils/formatting.js.map +7 -0
- package/dist/src/utils/process-cleanup.js +136 -0
- package/dist/src/utils/process-cleanup.js.map +7 -0
- package/package.json +4 -3
- package/scripts/create-cleanup-issues.js +302 -0
- package/scripts/demos/browser-test.ts +39 -0
- package/scripts/demos/ralph-integration-demo.ts +244 -0
- package/scripts/demos/trace-demo.ts +214 -0
- package/scripts/demos/trace-detector.demo.ts +171 -0
- package/scripts/demos/trace-test.ts +67 -0
- package/scripts/initialize.ts +16 -7
- package/scripts/install.sh +14 -62
- package/scripts/status.ts +111 -46
- package/scripts/test-claude-config.sh +123 -0
- package/scripts/validate-claude-config.sh +155 -0
package/scripts/initialize.ts
CHANGED
|
@@ -83,19 +83,28 @@ if (!existsSync(jsonlPath)) {
|
|
|
83
83
|
}
|
|
84
84
|
|
|
85
85
|
// 5. Create MCP config for Claude Code
|
|
86
|
-
const
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
86
|
+
const isMacOS = process.platform === 'darwin';
|
|
87
|
+
const mcpConfigPath = isMacOS
|
|
88
|
+
? join(
|
|
89
|
+
process.env['HOME'] || '~',
|
|
90
|
+
'Library',
|
|
91
|
+
'Application Support',
|
|
92
|
+
'Claude',
|
|
93
|
+
'claude_desktop_config.json'
|
|
94
|
+
)
|
|
95
|
+
: join(
|
|
96
|
+
process.env['HOME'] || '~',
|
|
97
|
+
'.config',
|
|
98
|
+
'claude',
|
|
99
|
+
'claude_desktop_config.json'
|
|
100
|
+
);
|
|
92
101
|
console.log(chalk.blue('\n📝 MCP Configuration for Claude Code:\n'));
|
|
93
102
|
|
|
94
103
|
const mcpConfig = {
|
|
95
104
|
mcpServers: {
|
|
96
105
|
stackmemory: {
|
|
97
106
|
command: 'node',
|
|
98
|
-
args: [join(projectRoot, 'dist', 'mcp
|
|
107
|
+
args: [join(projectRoot, 'dist', 'integrations', 'mcp', 'server.js')],
|
|
99
108
|
env: {
|
|
100
109
|
PROJECT_ROOT: projectRoot,
|
|
101
110
|
},
|
package/scripts/install.sh
CHANGED
|
@@ -43,10 +43,12 @@ mkdir -p "$INSTALL_DIR"
|
|
|
43
43
|
|
|
44
44
|
# Copy all necessary files
|
|
45
45
|
cp -r "$CURRENT_DIR/src" "$INSTALL_DIR/" 2>/dev/null || true
|
|
46
|
-
cp -r "$CURRENT_DIR/
|
|
46
|
+
cp -r "$CURRENT_DIR/scripts" "$INSTALL_DIR/" 2>/dev/null || true
|
|
47
|
+
cp -r "$CURRENT_DIR/attention-scoring" "$INSTALL_DIR/" 2>/dev/null || true
|
|
47
48
|
cp -r "$CURRENT_DIR/p2p-sync" "$INSTALL_DIR/" 2>/dev/null || true
|
|
48
49
|
cp "$CURRENT_DIR/package.json" "$INSTALL_DIR/"
|
|
49
50
|
cp "$CURRENT_DIR/tsconfig.json" "$INSTALL_DIR/"
|
|
51
|
+
cp "$CURRENT_DIR/esbuild.config.js" "$INSTALL_DIR/"
|
|
50
52
|
|
|
51
53
|
# 2. Install dependencies
|
|
52
54
|
echo -e "${GREEN}[2/5]${NC} Installing dependencies..."
|
|
@@ -90,7 +92,7 @@ for CONFIG_DIR in "$MCP_CONFIG_DIR" "$ALT_MCP_DIR"; do
|
|
|
90
92
|
|
|
91
93
|
config.mcpServers.stackmemory = {
|
|
92
94
|
command: 'node',
|
|
93
|
-
args: ['$INSTALL_DIR/dist/
|
|
95
|
+
args: ['$INSTALL_DIR/dist/integrations/mcp/server.js'],
|
|
94
96
|
env: {
|
|
95
97
|
STACKMEMORY_GLOBAL: 'true'
|
|
96
98
|
}
|
|
@@ -106,7 +108,7 @@ for CONFIG_DIR in "$MCP_CONFIG_DIR" "$ALT_MCP_DIR"; do
|
|
|
106
108
|
"mcpServers": {
|
|
107
109
|
"stackmemory": {
|
|
108
110
|
"command": "node",
|
|
109
|
-
"args": ["$INSTALL_DIR/dist/
|
|
111
|
+
"args": ["$INSTALL_DIR/dist/integrations/mcp/server.js"],
|
|
110
112
|
"env": {
|
|
111
113
|
"STACKMEMORY_GLOBAL": "true"
|
|
112
114
|
}
|
|
@@ -124,75 +126,25 @@ echo -e "${GREEN}[5/5]${NC} Creating global command..."
|
|
|
124
126
|
# Create bin directory if it doesn't exist
|
|
125
127
|
mkdir -p "$HOME/.local/bin"
|
|
126
128
|
|
|
127
|
-
# Create the global stackmemory command
|
|
129
|
+
# Create the global stackmemory command - delegates to the real CLI
|
|
128
130
|
cat > "$HOME/.local/bin/stackmemory" << 'EOF'
|
|
129
131
|
#!/usr/bin/env node
|
|
130
132
|
|
|
131
133
|
const { spawn } = require('child_process');
|
|
132
134
|
const path = require('path');
|
|
133
|
-
const fs = require('fs');
|
|
134
135
|
const os = require('os');
|
|
135
136
|
|
|
136
137
|
const installDir = path.join(os.homedir(), '.stackmemory');
|
|
137
|
-
const
|
|
138
|
-
|
|
139
|
-
// Check if we're in a git repo
|
|
140
|
-
function isGitRepo() {
|
|
141
|
-
try {
|
|
142
|
-
require('child_process').execSync('git rev-parse --git-dir', { stdio: 'ignore' });
|
|
143
|
-
return true;
|
|
144
|
-
} catch (e) {
|
|
145
|
-
return false;
|
|
146
|
-
}
|
|
147
|
-
}
|
|
138
|
+
const cliPath = path.join(installDir, 'dist', 'cli', 'index.js');
|
|
148
139
|
|
|
149
|
-
//
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
const config = {
|
|
156
|
-
projectId: path.basename(process.cwd()),
|
|
157
|
-
userId: process.env.USER || 'default',
|
|
158
|
-
initialized: new Date().toISOString()
|
|
159
|
-
};
|
|
160
|
-
|
|
161
|
-
fs.writeFileSync('.stackmemory/config.json', JSON.stringify(config, null, 2));
|
|
162
|
-
fs.writeFileSync('.stackmemory/frames.jsonl', '');
|
|
163
|
-
|
|
164
|
-
// Add to .gitignore
|
|
165
|
-
if (fs.existsSync('.gitignore')) {
|
|
166
|
-
const gitignore = fs.readFileSync('.gitignore', 'utf8');
|
|
167
|
-
if (!gitignore.includes('.stackmemory')) {
|
|
168
|
-
fs.appendFileSync('.gitignore', '\n# StackMemory\n.stackmemory/*.db\n.stackmemory/*.db-*\n');
|
|
169
|
-
}
|
|
170
|
-
}
|
|
171
|
-
|
|
172
|
-
console.log('✅ StackMemory initialized!');
|
|
173
|
-
}
|
|
140
|
+
// Pass all arguments to the real CLI
|
|
141
|
+
const args = process.argv.slice(2);
|
|
142
|
+
const child = spawn('node', [cliPath, ...args], {
|
|
143
|
+
env: { ...process.env, PROJECT_ROOT: process.cwd() },
|
|
144
|
+
stdio: 'inherit'
|
|
145
|
+
});
|
|
174
146
|
|
|
175
|
-
|
|
176
|
-
const command = process.argv[2];
|
|
177
|
-
|
|
178
|
-
switch(command) {
|
|
179
|
-
case 'init':
|
|
180
|
-
// Already handled above
|
|
181
|
-
break;
|
|
182
|
-
case 'status':
|
|
183
|
-
require(path.join(installDir, 'dist', 'scripts', 'status.js'));
|
|
184
|
-
break;
|
|
185
|
-
case 'test':
|
|
186
|
-
require(path.join(installDir, 'dist', 'test', 'test-framework.js'));
|
|
187
|
-
break;
|
|
188
|
-
default:
|
|
189
|
-
// Start MCP server
|
|
190
|
-
const child = spawn('node', [mcpServer], {
|
|
191
|
-
env: { ...process.env, PROJECT_ROOT: process.cwd() },
|
|
192
|
-
stdio: 'inherit'
|
|
193
|
-
});
|
|
194
|
-
child.on('exit', code => process.exit(code));
|
|
195
|
-
}
|
|
147
|
+
child.on('exit', code => process.exit(code || 0));
|
|
196
148
|
EOF
|
|
197
149
|
|
|
198
150
|
chmod +x "$HOME/.local/bin/stackmemory"
|
package/scripts/status.ts
CHANGED
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
*/
|
|
5
5
|
|
|
6
6
|
import Database from 'better-sqlite3';
|
|
7
|
-
import { existsSync } from 'fs';
|
|
7
|
+
import { existsSync, readFileSync } from 'fs';
|
|
8
8
|
import { join } from 'path';
|
|
9
9
|
import chalk from 'chalk';
|
|
10
10
|
|
|
@@ -20,7 +20,8 @@ interface ContextRow {
|
|
|
20
20
|
}
|
|
21
21
|
|
|
22
22
|
interface FrameRow {
|
|
23
|
-
|
|
23
|
+
name: string;
|
|
24
|
+
type: string;
|
|
24
25
|
started: string;
|
|
25
26
|
}
|
|
26
27
|
|
|
@@ -30,18 +31,46 @@ interface AttentionRow {
|
|
|
30
31
|
}
|
|
31
32
|
|
|
32
33
|
const projectRoot = process.cwd();
|
|
33
|
-
const
|
|
34
|
+
const stackDir = join(projectRoot, '.stackmemory');
|
|
35
|
+
const dbPath = join(stackDir, 'context.db');
|
|
36
|
+
const configPath = join(stackDir, 'config.json');
|
|
37
|
+
|
|
38
|
+
// Check if .stackmemory directory exists
|
|
39
|
+
console.log(chalk.blue.bold('\n[StackMemory Status]\n'));
|
|
34
40
|
|
|
41
|
+
if (!existsSync(stackDir)) {
|
|
42
|
+
console.log(chalk.red('[X] .stackmemory directory not found'));
|
|
43
|
+
console.log(chalk.gray(' Run: stackmemory init'));
|
|
44
|
+
process.exit(1);
|
|
45
|
+
}
|
|
46
|
+
console.log(chalk.green('[OK] .stackmemory directory exists'));
|
|
47
|
+
|
|
48
|
+
// Show config.json contents
|
|
49
|
+
if (existsSync(configPath)) {
|
|
50
|
+
try {
|
|
51
|
+
const config = JSON.parse(readFileSync(configPath, 'utf-8'));
|
|
52
|
+
console.log(chalk.green('[OK] config.json found'));
|
|
53
|
+
console.log(chalk.gray(` version: ${config.version || 'unknown'}`));
|
|
54
|
+
console.log(chalk.gray(` project: ${config.project || 'unknown'}`));
|
|
55
|
+
console.log(
|
|
56
|
+
chalk.gray(` initialized: ${config.initialized || 'unknown'}`)
|
|
57
|
+
);
|
|
58
|
+
} catch {
|
|
59
|
+
console.log(chalk.yellow('[!] config.json exists but failed to parse'));
|
|
60
|
+
}
|
|
61
|
+
} else {
|
|
62
|
+
console.log(chalk.yellow('[!] config.json not found'));
|
|
63
|
+
}
|
|
64
|
+
|
|
65
|
+
// Check database
|
|
35
66
|
if (!existsSync(dbPath)) {
|
|
36
|
-
console.log(chalk.red('
|
|
37
|
-
console.log(chalk.gray('Run: npm run init'));
|
|
67
|
+
console.log(chalk.red('[X] context.db not found'));
|
|
38
68
|
process.exit(1);
|
|
39
69
|
}
|
|
70
|
+
console.log(chalk.green('[OK] context.db exists'));
|
|
40
71
|
|
|
41
72
|
const db = new Database(dbPath, { readonly: true });
|
|
42
73
|
|
|
43
|
-
console.log(chalk.blue.bold('\n📊 StackMemory Status\n'));
|
|
44
|
-
|
|
45
74
|
// Get statistics
|
|
46
75
|
const stats = {
|
|
47
76
|
contexts: db
|
|
@@ -55,43 +84,45 @@ const stats = {
|
|
|
55
84
|
.get() as CountResult,
|
|
56
85
|
};
|
|
57
86
|
|
|
58
|
-
console.log(chalk.
|
|
59
|
-
console.log(
|
|
60
|
-
console.log(
|
|
61
|
-
console.log(
|
|
87
|
+
console.log(chalk.cyan('\n[Database Stats]'));
|
|
88
|
+
console.log(` Contexts: ${stats.contexts.count}`);
|
|
89
|
+
console.log(` Frames: ${stats.frames.count}`);
|
|
90
|
+
console.log(` Attention logs: ${stats.attention.count}`);
|
|
62
91
|
|
|
63
92
|
// Get top contexts by importance
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
93
|
+
if (stats.contexts.count > 0) {
|
|
94
|
+
console.log(chalk.cyan('\n[Top Contexts by Importance]'));
|
|
95
|
+
|
|
96
|
+
const topContexts = db
|
|
97
|
+
.prepare(
|
|
98
|
+
`
|
|
99
|
+
SELECT type, substr(content, 1, 60) as preview, importance, access_count
|
|
100
|
+
FROM contexts
|
|
101
|
+
ORDER BY importance DESC, access_count DESC
|
|
102
|
+
LIMIT 5
|
|
103
|
+
`
|
|
104
|
+
)
|
|
105
|
+
.all() as ContextRow[];
|
|
76
106
|
|
|
77
|
-
topContexts.forEach((ctx, i) => {
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
});
|
|
107
|
+
topContexts.forEach((ctx, i) => {
|
|
108
|
+
const importance = '*'.repeat(Math.round(ctx.importance * 5));
|
|
109
|
+
console.log(
|
|
110
|
+
chalk.white(` ${i + 1}.`) +
|
|
111
|
+
` [${ctx.type}] ` +
|
|
112
|
+
chalk.gray(`(${ctx.access_count} uses)`) +
|
|
113
|
+
` ${importance}`
|
|
114
|
+
);
|
|
115
|
+
console.log(chalk.gray(` ${ctx.preview}...`));
|
|
116
|
+
});
|
|
117
|
+
}
|
|
87
118
|
|
|
88
|
-
// Get active frames
|
|
119
|
+
// Get active frames (using correct schema: name, type, state)
|
|
89
120
|
const activeFrames = db
|
|
90
121
|
.prepare(
|
|
91
122
|
`
|
|
92
|
-
SELECT
|
|
123
|
+
SELECT name, type, datetime(created_at, 'unixepoch') as started
|
|
93
124
|
FROM frames
|
|
94
|
-
WHERE
|
|
125
|
+
WHERE state = 'active'
|
|
95
126
|
ORDER BY created_at DESC
|
|
96
127
|
LIMIT 3
|
|
97
128
|
`
|
|
@@ -99,10 +130,10 @@ const activeFrames = db
|
|
|
99
130
|
.all() as FrameRow[];
|
|
100
131
|
|
|
101
132
|
if (activeFrames.length > 0) {
|
|
102
|
-
console.log(chalk.
|
|
133
|
+
console.log(chalk.cyan('\n[Active Frames]'));
|
|
103
134
|
activeFrames.forEach((frame) => {
|
|
104
|
-
console.log(chalk.green('
|
|
105
|
-
console.log(chalk.gray(`
|
|
135
|
+
console.log(chalk.green(' *') + ` ${frame.name} (${frame.type})`);
|
|
136
|
+
console.log(chalk.gray(` Started: ${frame.started}`));
|
|
106
137
|
});
|
|
107
138
|
}
|
|
108
139
|
|
|
@@ -110,7 +141,7 @@ if (activeFrames.length > 0) {
|
|
|
110
141
|
const recentAttention = db
|
|
111
142
|
.prepare(
|
|
112
143
|
`
|
|
113
|
-
SELECT
|
|
144
|
+
SELECT
|
|
114
145
|
substr(query, 1, 50) as query_preview,
|
|
115
146
|
COUNT(*) as count
|
|
116
147
|
FROM attention_log
|
|
@@ -123,10 +154,10 @@ const recentAttention = db
|
|
|
123
154
|
.all() as AttentionRow[];
|
|
124
155
|
|
|
125
156
|
if (recentAttention.length > 0) {
|
|
126
|
-
console.log(chalk.
|
|
157
|
+
console.log(chalk.cyan('\n[Recent Query Patterns]'));
|
|
127
158
|
recentAttention.forEach((pattern) => {
|
|
128
159
|
console.log(
|
|
129
|
-
chalk.yellow('?') + ` "${pattern.query_preview}..." (${pattern.count}x)`
|
|
160
|
+
chalk.yellow(' ?') + ` "${pattern.query_preview}..." (${pattern.count}x)`
|
|
130
161
|
);
|
|
131
162
|
});
|
|
132
163
|
}
|
|
@@ -145,15 +176,49 @@ const oldContexts = db
|
|
|
145
176
|
if (oldContexts.count > 0) {
|
|
146
177
|
console.log(
|
|
147
178
|
chalk.yellow(
|
|
148
|
-
`\n
|
|
179
|
+
`\n[!] ${oldContexts.count} contexts haven't been accessed in 7+ days`
|
|
149
180
|
)
|
|
150
181
|
);
|
|
151
182
|
}
|
|
152
183
|
|
|
184
|
+
// Check MCP configuration
|
|
185
|
+
console.log(chalk.cyan('\n[MCP Configuration]'));
|
|
186
|
+
const mcpConfigPaths = [
|
|
187
|
+
join(
|
|
188
|
+
process.env.HOME || '',
|
|
189
|
+
'Library/Application Support/Claude/claude_desktop_config.json'
|
|
190
|
+
),
|
|
191
|
+
join(process.env.HOME || '', '.config/claude/claude_desktop_config.json'),
|
|
192
|
+
];
|
|
193
|
+
|
|
194
|
+
let mcpFound = false;
|
|
195
|
+
for (const mcpPath of mcpConfigPaths) {
|
|
196
|
+
if (existsSync(mcpPath)) {
|
|
197
|
+
try {
|
|
198
|
+
const mcpConfig = JSON.parse(readFileSync(mcpPath, 'utf-8'));
|
|
199
|
+
const hasStackMemory =
|
|
200
|
+
mcpConfig.mcpServers?.stackmemory ||
|
|
201
|
+
mcpConfig.mcpServers?.['stackmemory-mcp'];
|
|
202
|
+
if (hasStackMemory) {
|
|
203
|
+
console.log(chalk.green(' [OK] MCP server configured'));
|
|
204
|
+
mcpFound = true;
|
|
205
|
+
} else {
|
|
206
|
+
console.log(
|
|
207
|
+
chalk.yellow(' [!] MCP config exists but stackmemory not configured')
|
|
208
|
+
);
|
|
209
|
+
}
|
|
210
|
+
} catch {
|
|
211
|
+
console.log(chalk.yellow(` [!] Failed to parse ${mcpPath}`));
|
|
212
|
+
}
|
|
213
|
+
break;
|
|
214
|
+
}
|
|
215
|
+
}
|
|
216
|
+
if (!mcpFound) {
|
|
217
|
+
console.log(chalk.gray(' [--] No MCP configuration found'));
|
|
218
|
+
}
|
|
219
|
+
|
|
153
220
|
console.log(
|
|
154
|
-
chalk.gray(
|
|
155
|
-
'\n💡 Tip: Run "npm run analyze" for detailed attention analysis\n'
|
|
156
|
-
)
|
|
221
|
+
chalk.gray('\nTip: Run "npm run analyze" for detailed attention analysis\n')
|
|
157
222
|
);
|
|
158
223
|
|
|
159
224
|
db.close();
|
|
@@ -0,0 +1,123 @@
|
|
|
1
|
+
#!/bin/bash
|
|
2
|
+
# Test CLAUDE.md format effectiveness
|
|
3
|
+
# Compares compact vs verbose configurations
|
|
4
|
+
|
|
5
|
+
set -e
|
|
6
|
+
|
|
7
|
+
CLAUDE_DIR="$HOME/.claude"
|
|
8
|
+
VERBOSE_FILE="$CLAUDE_DIR/CLAUDE.md"
|
|
9
|
+
COMPACT_FILE="$CLAUDE_DIR/CLAUDE.compact.md"
|
|
10
|
+
BACKUP_FILE="$CLAUDE_DIR/CLAUDE.backup.md"
|
|
11
|
+
RESULTS_DIR="/tmp/claude-config-test-$(date +%Y%m%d-%H%M%S)"
|
|
12
|
+
|
|
13
|
+
mkdir -p "$RESULTS_DIR"
|
|
14
|
+
|
|
15
|
+
echo "=== CLAUDE.md A/B Test ==="
|
|
16
|
+
echo "Results: $RESULTS_DIR"
|
|
17
|
+
echo ""
|
|
18
|
+
|
|
19
|
+
# Test prompts that exercise CLAUDE.md rules
|
|
20
|
+
declare -a TEST_PROMPTS=(
|
|
21
|
+
"What's your communication style preference?"
|
|
22
|
+
"I want to add a feature. Should you ask clarifying questions or just start coding?"
|
|
23
|
+
"Write a function to hash a password"
|
|
24
|
+
"What should you do before editing a file?"
|
|
25
|
+
"How do you handle ESM imports in TypeScript?"
|
|
26
|
+
)
|
|
27
|
+
|
|
28
|
+
# Token counts
|
|
29
|
+
VERBOSE_TOKENS=$(cat "$VERBOSE_FILE" 2>/dev/null | wc -c | awk '{print int($1/3.5)}')
|
|
30
|
+
COMPACT_TOKENS=$(cat "$COMPACT_FILE" 2>/dev/null | wc -c | awk '{print int($1/3.5)}')
|
|
31
|
+
|
|
32
|
+
echo "Token comparison:"
|
|
33
|
+
echo " Verbose: ~$VERBOSE_TOKENS tokens"
|
|
34
|
+
echo " Compact: ~$COMPACT_TOKENS tokens"
|
|
35
|
+
echo " Savings: ~$((VERBOSE_TOKENS - COMPACT_TOKENS)) tokens ($(( (VERBOSE_TOKENS - COMPACT_TOKENS) * 100 / VERBOSE_TOKENS ))%)"
|
|
36
|
+
echo ""
|
|
37
|
+
|
|
38
|
+
# Backup current config
|
|
39
|
+
cp "$VERBOSE_FILE" "$BACKUP_FILE"
|
|
40
|
+
|
|
41
|
+
run_test() {
|
|
42
|
+
local config_name=$1
|
|
43
|
+
local config_file=$2
|
|
44
|
+
local output_dir="$RESULTS_DIR/$config_name"
|
|
45
|
+
mkdir -p "$output_dir"
|
|
46
|
+
|
|
47
|
+
echo "Testing with $config_name config..."
|
|
48
|
+
|
|
49
|
+
# Swap config
|
|
50
|
+
cp "$config_file" "$VERBOSE_FILE"
|
|
51
|
+
|
|
52
|
+
local i=0
|
|
53
|
+
for prompt in "${TEST_PROMPTS[@]}"; do
|
|
54
|
+
i=$((i + 1))
|
|
55
|
+
echo " Prompt $i: ${prompt:0:40}..."
|
|
56
|
+
|
|
57
|
+
# Run claude with prompt, capture output
|
|
58
|
+
# Using --print flag for non-interactive mode
|
|
59
|
+
claude --print "$prompt" > "$output_dir/prompt_$i.txt" 2>&1 || true
|
|
60
|
+
|
|
61
|
+
# Brief pause to avoid rate limiting
|
|
62
|
+
sleep 1
|
|
63
|
+
done
|
|
64
|
+
|
|
65
|
+
echo " Done. Outputs in $output_dir/"
|
|
66
|
+
}
|
|
67
|
+
|
|
68
|
+
# Test verbose config
|
|
69
|
+
if [ -f "$VERBOSE_FILE" ]; then
|
|
70
|
+
# Save original verbose as .verbose for testing
|
|
71
|
+
cp "$VERBOSE_FILE" "$CLAUDE_DIR/CLAUDE.verbose.md"
|
|
72
|
+
run_test "verbose" "$CLAUDE_DIR/CLAUDE.verbose.md"
|
|
73
|
+
fi
|
|
74
|
+
|
|
75
|
+
# Test compact config
|
|
76
|
+
if [ -f "$COMPACT_FILE" ]; then
|
|
77
|
+
run_test "compact" "$COMPACT_FILE"
|
|
78
|
+
fi
|
|
79
|
+
|
|
80
|
+
# Restore original config
|
|
81
|
+
cp "$BACKUP_FILE" "$VERBOSE_FILE"
|
|
82
|
+
rm -f "$BACKUP_FILE"
|
|
83
|
+
|
|
84
|
+
echo ""
|
|
85
|
+
echo "=== Analysis ==="
|
|
86
|
+
|
|
87
|
+
# Compare output lengths (proxy for verbosity)
|
|
88
|
+
echo "Output lengths (chars):"
|
|
89
|
+
echo " Verbose config:"
|
|
90
|
+
for f in "$RESULTS_DIR/verbose"/prompt_*.txt; do
|
|
91
|
+
[ -f "$f" ] && echo " $(basename $f): $(wc -c < "$f")"
|
|
92
|
+
done
|
|
93
|
+
|
|
94
|
+
echo " Compact config:"
|
|
95
|
+
for f in "$RESULTS_DIR/compact"/prompt_*.txt; do
|
|
96
|
+
[ -f "$f" ] && echo " $(basename $f): $(wc -c < "$f")"
|
|
97
|
+
done
|
|
98
|
+
|
|
99
|
+
# Check for key behaviors
|
|
100
|
+
echo ""
|
|
101
|
+
echo "Behavior checks:"
|
|
102
|
+
|
|
103
|
+
check_behavior() {
|
|
104
|
+
local name=$1
|
|
105
|
+
local pattern=$2
|
|
106
|
+
local verbose_match=$(grep -l "$pattern" "$RESULTS_DIR/verbose"/*.txt 2>/dev/null | wc -l)
|
|
107
|
+
local compact_match=$(grep -l "$pattern" "$RESULTS_DIR/compact"/*.txt 2>/dev/null | wc -l)
|
|
108
|
+
echo " $name: verbose=$verbose_match compact=$compact_match"
|
|
109
|
+
}
|
|
110
|
+
|
|
111
|
+
check_behavior "Concise style" "concise\|brief\|short"
|
|
112
|
+
check_behavior "Security mention" "security\|validate\|hash"
|
|
113
|
+
check_behavior "ESM/extension" "\.js\|extension\|ESM"
|
|
114
|
+
check_behavior "Read before edit" "read\|before\|first"
|
|
115
|
+
|
|
116
|
+
echo ""
|
|
117
|
+
echo "=== Summary ==="
|
|
118
|
+
echo "Config files preserved. Review outputs in:"
|
|
119
|
+
echo " $RESULTS_DIR/verbose/"
|
|
120
|
+
echo " $RESULTS_DIR/compact/"
|
|
121
|
+
echo ""
|
|
122
|
+
echo "To manually compare:"
|
|
123
|
+
echo " diff $RESULTS_DIR/verbose/prompt_1.txt $RESULTS_DIR/compact/prompt_1.txt"
|
|
@@ -0,0 +1,155 @@
|
|
|
1
|
+
#!/bin/bash
|
|
2
|
+
# Validate CLAUDE.md configurations - token counts and coverage
|
|
3
|
+
set -e
|
|
4
|
+
|
|
5
|
+
CLAUDE_DIR="$HOME/.claude"
|
|
6
|
+
AGENT_DOCS="$CLAUDE_DIR/agent_docs"
|
|
7
|
+
|
|
8
|
+
echo "=== CLAUDE.md Config Validation ==="
|
|
9
|
+
echo ""
|
|
10
|
+
|
|
11
|
+
# Token estimation function
|
|
12
|
+
count_tokens() {
|
|
13
|
+
local file=$1
|
|
14
|
+
if [ -f "$file" ]; then
|
|
15
|
+
local chars=$(wc -c < "$file")
|
|
16
|
+
echo $((chars / 4)) # ~4 chars per token estimate
|
|
17
|
+
else
|
|
18
|
+
echo "0"
|
|
19
|
+
fi
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
# 1. Token Comparison
|
|
23
|
+
echo "## Token Counts"
|
|
24
|
+
echo ""
|
|
25
|
+
printf "%-40s %8s %8s\n" "File" "Lines" "~Tokens"
|
|
26
|
+
printf "%-40s %8s %8s\n" "----" "-----" "-------"
|
|
27
|
+
|
|
28
|
+
total_verbose=0
|
|
29
|
+
total_compact=0
|
|
30
|
+
|
|
31
|
+
for file in "$CLAUDE_DIR"/*.md; do
|
|
32
|
+
[ -f "$file" ] || continue
|
|
33
|
+
name=$(basename "$file")
|
|
34
|
+
lines=$(wc -l < "$file" | tr -d ' ')
|
|
35
|
+
tokens=$(count_tokens "$file")
|
|
36
|
+
printf "%-40s %8s %8s\n" "$name" "$lines" "$tokens"
|
|
37
|
+
|
|
38
|
+
if [[ "$name" == *".compact.md" ]]; then
|
|
39
|
+
total_compact=$((total_compact + tokens))
|
|
40
|
+
else
|
|
41
|
+
total_verbose=$((total_verbose + tokens))
|
|
42
|
+
fi
|
|
43
|
+
done
|
|
44
|
+
|
|
45
|
+
echo ""
|
|
46
|
+
|
|
47
|
+
# 2. Agent Docs Comparison
|
|
48
|
+
echo "## Agent Docs"
|
|
49
|
+
echo ""
|
|
50
|
+
printf "%-40s %8s %8s\n" "File" "Lines" "~Tokens"
|
|
51
|
+
printf "%-40s %8s %8s\n" "----" "-----" "-------"
|
|
52
|
+
|
|
53
|
+
verbose_docs=0
|
|
54
|
+
compact_docs=0
|
|
55
|
+
|
|
56
|
+
for file in "$AGENT_DOCS"/*.md; do
|
|
57
|
+
[ -f "$file" ] || continue
|
|
58
|
+
name=$(basename "$file")
|
|
59
|
+
lines=$(wc -l < "$file" | tr -d ' ')
|
|
60
|
+
tokens=$(count_tokens "$file")
|
|
61
|
+
printf "%-40s %8s %8s\n" "$name" "$lines" "$tokens"
|
|
62
|
+
|
|
63
|
+
if [[ "$name" == *".compact.md" ]]; then
|
|
64
|
+
compact_docs=$((compact_docs + tokens))
|
|
65
|
+
else
|
|
66
|
+
verbose_docs=$((verbose_docs + tokens))
|
|
67
|
+
fi
|
|
68
|
+
done
|
|
69
|
+
|
|
70
|
+
echo ""
|
|
71
|
+
|
|
72
|
+
# 3. Summary
|
|
73
|
+
echo "## Summary"
|
|
74
|
+
echo ""
|
|
75
|
+
echo "Main configs:"
|
|
76
|
+
echo " Verbose total: ~$total_verbose tokens"
|
|
77
|
+
echo " Compact total: ~$total_compact tokens"
|
|
78
|
+
if [ $total_verbose -gt 0 ]; then
|
|
79
|
+
savings=$((100 - (total_compact * 100 / total_verbose)))
|
|
80
|
+
echo " Savings: ${savings}%"
|
|
81
|
+
fi
|
|
82
|
+
|
|
83
|
+
echo ""
|
|
84
|
+
echo "Agent docs:"
|
|
85
|
+
echo " Verbose total: ~$verbose_docs tokens"
|
|
86
|
+
echo " Compact total: ~$compact_docs tokens"
|
|
87
|
+
if [ $verbose_docs -gt 0 ]; then
|
|
88
|
+
savings=$((100 - (compact_docs * 100 / verbose_docs)))
|
|
89
|
+
echo " Savings: ${savings}%"
|
|
90
|
+
fi
|
|
91
|
+
|
|
92
|
+
echo ""
|
|
93
|
+
|
|
94
|
+
# 4. Reference Validation
|
|
95
|
+
echo "## Reference Validation"
|
|
96
|
+
echo ""
|
|
97
|
+
|
|
98
|
+
# Check CLAUDE.md references
|
|
99
|
+
if [ -f "$CLAUDE_DIR/CLAUDE.md" ]; then
|
|
100
|
+
echo "Checking CLAUDE.md references..."
|
|
101
|
+
refs=$(grep -oE '[A-Z_]+\.compact\.md' "$CLAUDE_DIR/CLAUDE.md" 2>/dev/null || true)
|
|
102
|
+
|
|
103
|
+
missing=0
|
|
104
|
+
for ref in $refs; do
|
|
105
|
+
if [ -f "$AGENT_DOCS/$ref" ]; then
|
|
106
|
+
echo " [OK] $ref"
|
|
107
|
+
else
|
|
108
|
+
echo " [MISSING] $ref"
|
|
109
|
+
missing=$((missing + 1))
|
|
110
|
+
fi
|
|
111
|
+
done
|
|
112
|
+
|
|
113
|
+
if [ $missing -eq 0 ] && [ -n "$refs" ]; then
|
|
114
|
+
echo " All references valid"
|
|
115
|
+
elif [ -z "$refs" ]; then
|
|
116
|
+
echo " No compact doc references found"
|
|
117
|
+
else
|
|
118
|
+
echo " WARNING: $missing missing references"
|
|
119
|
+
fi
|
|
120
|
+
else
|
|
121
|
+
echo " CLAUDE.md not found"
|
|
122
|
+
fi
|
|
123
|
+
|
|
124
|
+
echo ""
|
|
125
|
+
|
|
126
|
+
# 5. Key Rules Coverage
|
|
127
|
+
echo "## Key Rules Coverage"
|
|
128
|
+
echo ""
|
|
129
|
+
|
|
130
|
+
check_rule() {
|
|
131
|
+
local name=$1
|
|
132
|
+
local pattern=$2
|
|
133
|
+
local file=$3
|
|
134
|
+
|
|
135
|
+
if grep -qiE "$pattern" "$file" 2>/dev/null; then
|
|
136
|
+
echo " [OK] $name"
|
|
137
|
+
else
|
|
138
|
+
echo " [MISSING] $name"
|
|
139
|
+
fi
|
|
140
|
+
}
|
|
141
|
+
|
|
142
|
+
echo "CLAUDE.md rules:"
|
|
143
|
+
if [ -f "$CLAUDE_DIR/CLAUDE.md" ]; then
|
|
144
|
+
check_rule "Security/secrets" "secret|credential|api.?key" "$CLAUDE_DIR/CLAUDE.md"
|
|
145
|
+
check_rule "ESM imports" "\.js|ESM|extension" "$CLAUDE_DIR/CLAUDE.md"
|
|
146
|
+
check_rule "Validation" "lint|test|build" "$CLAUDE_DIR/CLAUDE.md"
|
|
147
|
+
check_rule "Git workflow" "commit|branch|push" "$CLAUDE_DIR/CLAUDE.md"
|
|
148
|
+
check_rule "Error handling" "error|throw|undefined" "$CLAUDE_DIR/CLAUDE.md"
|
|
149
|
+
check_rule "Thinking modes" "think|ultra" "$CLAUDE_DIR/CLAUDE.md"
|
|
150
|
+
check_rule "Coverage" "coverage|untested" "$CLAUDE_DIR/CLAUDE.md"
|
|
151
|
+
check_rule "Branch naming" "feature/|fix/|chore/" "$CLAUDE_DIR/CLAUDE.md"
|
|
152
|
+
fi
|
|
153
|
+
|
|
154
|
+
echo ""
|
|
155
|
+
echo "=== Validation Complete ==="
|