@stackmemoryai/stackmemory 0.5.58 → 0.5.61
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/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.map +7 -0
- package/dist/src/agents/verifiers/base-verifier.js.map +7 -0
- package/dist/src/agents/verifiers/formatter-verifier.js.map +7 -0
- package/dist/src/agents/verifiers/llm-judge.js.map +7 -0
- package/dist/src/cli/auto-detect.js.map +7 -0
- package/dist/src/cli/claude-sm-danger.js.map +7 -0
- package/dist/src/cli/claude-sm.js +1236 -0
- package/dist/src/cli/claude-sm.js.map +7 -0
- package/dist/src/cli/codex-sm-danger.js.map +7 -0
- package/dist/src/cli/codex-sm.js.map +7 -0
- package/dist/src/cli/commands/api.js.map +7 -0
- package/dist/src/cli/commands/auto-background.js.map +7 -0
- package/dist/src/cli/commands/cleanup-processes.js.map +7 -0
- package/dist/src/cli/commands/clear.js.map +7 -0
- package/dist/src/cli/commands/config.js.map +7 -0
- package/dist/src/cli/commands/context-rehydrate.js.map +7 -0
- package/dist/src/cli/commands/context.js.map +7 -0
- package/dist/src/cli/commands/daemon.js.map +7 -0
- package/dist/src/cli/commands/dashboard.js.map +7 -0
- package/dist/src/cli/commands/db.js.map +7 -0
- package/dist/src/cli/commands/decision.js.map +7 -0
- package/dist/src/cli/commands/discovery.js.map +7 -0
- package/dist/src/cli/commands/handoff.js.map +7 -0
- package/dist/src/cli/commands/hooks.js.map +7 -0
- package/dist/src/cli/commands/linear.js.map +7 -0
- package/dist/src/cli/commands/log.js.map +7 -0
- package/dist/src/cli/commands/login.js.map +7 -0
- package/dist/src/cli/commands/migrate.js.map +7 -0
- package/dist/src/cli/commands/model.js.map +7 -0
- package/dist/src/cli/commands/onboard.js.map +7 -0
- package/dist/src/cli/commands/projects.js.map +7 -0
- package/dist/src/cli/commands/ralph.js.map +7 -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.map +7 -0
- package/dist/src/cli/commands/session.js.map +7 -0
- package/dist/src/cli/commands/settings.js.map +7 -0
- package/dist/src/cli/commands/setup.js.map +7 -0
- package/dist/src/cli/commands/shell.js.map +7 -0
- package/dist/src/cli/commands/signup.js.map +7 -0
- package/dist/src/cli/commands/skills.js.map +7 -0
- package/dist/src/cli/commands/sms-notify.js.map +7 -0
- package/dist/src/cli/commands/storage-tier.js.map +7 -0
- package/dist/src/cli/commands/sweep.js.map +7 -0
- package/dist/src/cli/commands/tasks.js.map +7 -0
- package/dist/src/cli/commands/worktree.js.map +7 -0
- package/dist/src/cli/index.js +609 -0
- package/dist/src/cli/index.js.map +7 -0
- package/dist/src/cli/opencode-sm.js.map +7 -0
- package/dist/src/cli/utils/viewer.js.map +7 -0
- package/dist/src/core/config/config-manager.js.map +7 -0
- package/dist/src/core/config/feature-flags.js.map +7 -0
- package/dist/src/core/config/storage-config.js.map +7 -0
- package/dist/src/core/config/types.js.map +7 -0
- package/dist/src/core/context/auto-context.js.map +7 -0
- package/dist/src/core/context/dual-stack-manager.js.map +7 -0
- package/dist/src/core/context/enhanced-rehydration.js.map +7 -0
- package/dist/src/core/context/frame-database.js.map +7 -0
- package/dist/src/core/context/frame-digest.js.map +7 -0
- package/dist/src/core/context/frame-handoff-manager.js.map +7 -0
- package/dist/src/core/context/frame-lifecycle-hooks.js.map +7 -0
- package/dist/src/core/context/frame-recovery.js.map +7 -0
- package/dist/src/core/context/frame-stack.js.map +7 -0
- package/dist/src/core/context/index.js.map +7 -0
- package/dist/src/core/context/permission-manager.js.map +7 -0
- package/dist/src/core/context/recursive-context-manager.js.map +7 -0
- package/dist/src/core/context/refactored-frame-manager.js.map +7 -0
- package/dist/src/core/context/shared-context-layer.js.map +7 -0
- package/dist/src/core/context/stack-merge-resolver.js.map +7 -0
- package/dist/src/core/context/validation.js.map +7 -0
- package/dist/src/core/database/batch-operations.js.map +7 -0
- package/dist/src/core/database/connection-pool.js.map +7 -0
- package/dist/src/core/database/database-adapter.js.map +7 -0
- package/dist/src/core/database/migration-manager.js.map +7 -0
- package/dist/src/core/database/query-cache.js.map +7 -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.map +7 -0
- package/dist/src/core/digest/frame-digest-integration.js.map +7 -0
- package/dist/src/core/digest/hybrid-digest-generator.js.map +7 -0
- package/dist/src/core/digest/index.js.map +7 -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.map +7 -0
- package/dist/src/core/execution/parallel-executor.js.map +7 -0
- 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/frame/workflow-templates.js.map +7 -0
- package/dist/src/core/merge/conflict-detector.js.map +7 -0
- package/dist/src/core/merge/index.js.map +7 -0
- package/dist/src/core/merge/resolution-engine.js.map +7 -0
- package/dist/src/core/merge/stack-diff.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.map +7 -0
- package/dist/src/core/models/model-router.js.map +7 -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.map +7 -0
- package/dist/src/core/monitoring/progress-tracker.js.map +7 -0
- package/dist/src/core/monitoring/session-monitor.js.map +7 -0
- package/dist/src/core/performance/context-cache.js.map +7 -0
- package/dist/src/core/performance/index.js.map +7 -0
- package/dist/src/core/performance/lazy-context-loader.js.map +7 -0
- package/dist/src/core/performance/monitor.js.map +7 -0
- package/dist/src/core/performance/optimized-frame-context.js.map +7 -0
- package/dist/src/core/performance/performance-benchmark.js.map +7 -0
- package/dist/src/core/performance/performance-profiler.js.map +7 -0
- package/dist/src/core/performance/streaming-jsonl-parser.js.map +7 -0
- package/dist/src/core/persistence/postgres-adapter.js.map +7 -0
- package/dist/src/core/projects/project-isolation.js.map +7 -0
- package/dist/src/core/projects/project-manager.js.map +7 -0
- package/dist/src/core/query/query-parser.js.map +7 -0
- package/dist/src/core/query/query-templates.js.map +7 -0
- package/dist/src/core/retrieval/context-retriever.js.map +7 -0
- package/dist/src/core/retrieval/index.js.map +7 -0
- package/dist/src/core/retrieval/llm-context-retrieval.js.map +7 -0
- package/dist/src/core/retrieval/llm-provider.js.map +7 -0
- package/dist/src/core/retrieval/retrieval-audit.js.map +7 -0
- package/dist/src/core/retrieval/summary-generator.js.map +7 -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.map +7 -0
- package/dist/src/core/session/enhanced-handoff.js.map +7 -0
- package/dist/src/core/session/handoff-generator.js.map +7 -0
- package/dist/src/core/session/index.js.map +7 -0
- package/dist/src/core/session/session-manager.js.map +7 -0
- package/dist/src/core/skills/index.js.map +7 -0
- package/dist/src/core/skills/skill-storage.js.map +7 -0
- package/dist/src/core/skills/types.js.map +7 -0
- package/dist/src/core/storage/chromadb-adapter.js +380 -0
- package/dist/src/core/storage/chromadb-adapter.js.map +7 -0
- package/dist/src/core/storage/infinite-storage.js.map +7 -0
- package/dist/src/core/storage/remote-storage.js.map +7 -0
- package/dist/src/core/storage/two-tier-storage.js.map +7 -0
- package/dist/src/core/trace/cli-trace-wrapper.js.map +7 -0
- package/dist/src/core/trace/db-trace-wrapper.js.map +7 -0
- package/dist/src/core/trace/debug-trace.js.map +7 -0
- package/dist/src/core/trace/index.js.map +7 -0
- package/dist/src/core/trace/linear-api-wrapper.js.map +7 -0
- package/dist/src/core/trace/trace-detector.js.map +7 -0
- package/dist/src/core/trace/trace-store.js.map +7 -0
- package/dist/src/core/trace/types.js.map +7 -0
- package/dist/src/core/utils/async-mutex.js.map +7 -0
- package/dist/src/core/utils/compression.js.map +7 -0
- package/dist/src/core/utils/update-checker.js.map +7 -0
- package/dist/src/core/worktree/worktree-manager.js.map +7 -0
- package/dist/src/daemon/daemon-config.js.map +7 -0
- package/dist/src/daemon/services/context-service.js.map +7 -0
- package/dist/src/daemon/services/linear-service.js.map +7 -0
- package/dist/src/daemon/session-daemon.js.map +7 -0
- package/dist/src/daemon/unified-daemon.js.map +7 -0
- package/dist/src/features/analytics/api/analytics-api.js.map +7 -0
- package/dist/src/features/analytics/core/analytics-service.js.map +7 -0
- package/dist/src/features/analytics/index.js.map +7 -0
- package/dist/src/features/analytics/queries/metrics-queries.js.map +7 -0
- package/dist/src/features/browser/browser-mcp.js.map +7 -0
- package/dist/src/features/sweep/index.js.map +7 -0
- package/dist/src/features/sweep/prediction-client.js.map +7 -0
- package/dist/src/features/sweep/prompt-builder.js.map +7 -0
- package/dist/src/features/sweep/pty-wrapper.js.map +7 -0
- package/dist/src/features/sweep/state-watcher.js.map +7 -0
- package/dist/src/features/sweep/status-bar.js.map +7 -0
- package/dist/src/features/sweep/sweep-server-manager.js.map +7 -0
- package/dist/src/features/sweep/tab-interceptor.js.map +7 -0
- package/dist/src/features/sweep/types.js.map +7 -0
- package/dist/src/features/tasks/linear-task-manager.js.map +7 -0
- package/dist/src/features/tasks/task-aware-context.js.map +7 -0
- package/dist/src/features/tui/simple-monitor.js.map +7 -0
- package/dist/src/features/tui/swarm-monitor.js.map +7 -0
- package/dist/src/features/web/client/stores/task-store.js.map +7 -0
- package/dist/src/features/web/server/index.js.map +7 -0
- package/dist/src/hooks/auto-background.js.map +7 -0
- package/dist/src/hooks/claude-code-whatsapp-hook.js.map +7 -0
- package/dist/src/hooks/config.js.map +7 -0
- package/dist/src/hooks/daemon.js.map +7 -0
- package/dist/src/hooks/events.js.map +7 -0
- package/dist/src/hooks/index.js.map +7 -0
- package/dist/src/hooks/linear-task-picker.js.map +7 -0
- package/dist/src/hooks/schemas.js.map +7 -0
- package/dist/src/hooks/secure-fs.js.map +7 -0
- package/dist/src/hooks/security-logger.js.map +7 -0
- package/dist/src/hooks/session-summary.js.map +7 -0
- package/dist/src/hooks/sms-action-runner.js.map +7 -0
- package/dist/src/hooks/sms-notify.js.map +7 -0
- package/dist/src/hooks/sms-watcher.js.map +7 -0
- package/dist/src/hooks/sms-webhook.js.map +7 -0
- package/dist/src/hooks/whatsapp-commands.js.map +7 -0
- package/dist/src/hooks/whatsapp-scheduler.js.map +7 -0
- package/dist/src/hooks/whatsapp-sync.js.map +7 -0
- package/dist/src/index.js.map +7 -0
- package/dist/src/integrations/anthropic/client.js.map +7 -0
- package/dist/src/integrations/claude-code/agent-bridge.js.map +7 -0
- package/dist/src/integrations/claude-code/enhanced-pre-clear-hooks.js.map +7 -0
- package/dist/src/integrations/claude-code/lifecycle-hooks.js.map +7 -0
- package/dist/src/integrations/claude-code/post-task-hooks.js.map +7 -0
- package/dist/src/integrations/claude-code/subagent-client-stub.js.map +7 -0
- package/dist/src/integrations/claude-code/subagent-client.js.map +7 -0
- package/dist/src/integrations/claude-code/task-coordinator.js.map +7 -0
- package/dist/src/integrations/linear/auth.js.map +7 -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.map +7 -0
- package/dist/src/integrations/linear/migration.js.map +7 -0
- package/dist/src/integrations/linear/oauth-server.js.map +7 -0
- package/dist/src/integrations/linear/rest-client.js.map +7 -0
- package/dist/src/integrations/linear/sync-manager.js.map +7 -0
- package/dist/src/integrations/linear/sync-service.js.map +7 -0
- package/dist/src/integrations/linear/sync.js.map +7 -0
- package/dist/src/integrations/linear/unified-sync.js.map +7 -0
- package/dist/src/integrations/linear/webhook-handler.js.map +7 -0
- package/dist/src/integrations/linear/webhook-server.js.map +7 -0
- package/dist/src/integrations/linear/webhook.js.map +7 -0
- package/dist/src/integrations/mcp/handlers/code-execution-handlers.js.map +7 -0
- package/dist/src/integrations/mcp/handlers/context-handlers.js.map +7 -0
- package/dist/src/integrations/mcp/handlers/discovery-handlers.js.map +7 -0
- package/dist/src/integrations/mcp/handlers/index.js.map +7 -0
- package/dist/src/integrations/mcp/handlers/linear-handlers.js.map +7 -0
- package/dist/src/integrations/mcp/handlers/skill-handlers.js.map +7 -0
- package/dist/src/integrations/mcp/handlers/task-handlers.js.map +7 -0
- package/dist/src/integrations/mcp/handlers/trace-handlers.js.map +7 -0
- package/dist/src/integrations/mcp/index.js.map +7 -0
- package/dist/src/integrations/mcp/middleware/tool-scoring.js.map +7 -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.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.map +7 -0
- package/dist/src/integrations/mcp/tool-definitions.js.map +7 -0
- package/dist/src/integrations/ralph/bridge/ralph-stackmemory-bridge.js.map +7 -0
- package/dist/src/integrations/ralph/context/context-budget-manager.js.map +7 -0
- package/dist/src/integrations/ralph/context/stackmemory-context-loader.js.map +7 -0
- package/dist/src/integrations/ralph/coordination/enhanced-coordination.js.map +7 -0
- package/dist/src/integrations/ralph/index.js.map +7 -0
- package/dist/src/integrations/ralph/learning/pattern-learner.js.map +7 -0
- package/dist/src/integrations/ralph/lifecycle/iteration-lifecycle.js.map +7 -0
- package/dist/src/integrations/ralph/monitoring/swarm-dashboard.js.map +7 -0
- package/dist/src/integrations/ralph/monitoring/swarm-registry.js.map +7 -0
- package/dist/src/integrations/ralph/orchestration/multi-loop-orchestrator.js.map +7 -0
- package/dist/src/integrations/ralph/patterns/compounding-engineering-pattern.js.map +7 -0
- package/dist/src/integrations/ralph/patterns/extended-coherence-sessions.js.map +7 -0
- package/dist/src/integrations/ralph/patterns/oracle-worker-pattern.js.map +7 -0
- package/dist/src/integrations/ralph/performance/performance-optimizer.js.map +7 -0
- package/dist/src/integrations/ralph/recovery/crash-recovery.js.map +7 -0
- package/dist/src/integrations/ralph/state/state-reconciler.js.map +7 -0
- package/dist/src/integrations/ralph/swarm/git-workflow-manager.js.map +7 -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/visualization/ralph-debugger.js.map +7 -0
- package/dist/src/mcp/stackmemory-mcp-server.js.map +7 -0
- package/dist/src/middleware/exponential-rate-limiter.js.map +7 -0
- package/dist/src/models/user.model.js.map +7 -0
- package/dist/src/servers/production/auth-middleware.js.map +7 -0
- package/dist/src/services/config-service.js.map +7 -0
- package/dist/src/services/context-service.js.map +7 -0
- package/dist/src/skills/api-discovery.js.map +7 -0
- package/dist/src/skills/api-skill.js.map +7 -0
- package/dist/src/skills/claude-skills.js.map +7 -0
- package/dist/src/skills/dashboard-launcher.js.map +7 -0
- package/dist/src/skills/recursive-agent-orchestrator.js.map +7 -0
- package/dist/src/skills/repo-ingestion-skill.js +632 -0
- package/dist/src/skills/repo-ingestion-skill.js.map +7 -0
- package/dist/src/skills/unified-rlm-orchestrator.js.map +7 -0
- package/dist/src/types/task.js.map +7 -0
- package/dist/src/utils/env.js.map +7 -0
- package/dist/src/utils/formatting.js.map +7 -0
- package/dist/src/utils/process-cleanup.js.map +7 -0
- package/package.json +13 -9
- 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 +16 -7
- package/scripts/install.sh +14 -62
- package/scripts/status.ts +111 -46
- package/scripts/test-pre-publish-quick.sh +1 -1
- 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.map +0 -7
- package/dist/agents/verifiers/formatter-verifier.js.map +0 -7
- package/dist/agents/verifiers/llm-judge.js.map +0 -7
- 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.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.map +0 -7
- package/dist/cli/codex-sm.js.map +0 -7
- package/dist/cli/commands/api.js.map +0 -7
- package/dist/cli/commands/auto-background.js.map +0 -7
- package/dist/cli/commands/cleanup-processes.js.map +0 -7
- package/dist/cli/commands/clear.js.map +0 -7
- package/dist/cli/commands/config.js.map +0 -7
- package/dist/cli/commands/context-rehydrate.js.map +0 -7
- package/dist/cli/commands/context.js.map +0 -7
- package/dist/cli/commands/daemon.js.map +0 -7
- package/dist/cli/commands/dashboard.js.map +0 -7
- package/dist/cli/commands/db.js.map +0 -7
- package/dist/cli/commands/decision.js.map +0 -7
- package/dist/cli/commands/discovery.js.map +0 -7
- package/dist/cli/commands/handoff.js.map +0 -7
- 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.map +0 -7
- package/dist/cli/commands/log.js.map +0 -7
- package/dist/cli/commands/login.js.map +0 -7
- package/dist/cli/commands/migrate.js.map +0 -7
- 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.map +0 -7
- 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.map +0 -7
- package/dist/cli/commands/retrieval.js.map +0 -7
- package/dist/cli/commands/search.js +0 -156
- package/dist/cli/commands/search.js.map +0 -7
- package/dist/cli/commands/service.js.map +0 -7
- package/dist/cli/commands/session.js.map +0 -7
- package/dist/cli/commands/settings.js.map +0 -7
- package/dist/cli/commands/setup.js.map +0 -7
- package/dist/cli/commands/shell.js.map +0 -7
- package/dist/cli/commands/signup.js.map +0 -7
- package/dist/cli/commands/skills.js.map +0 -7
- package/dist/cli/commands/sms-notify.js.map +0 -7
- 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.map +0 -7
- 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.map +0 -7
- package/dist/cli/index.js +0 -594
- package/dist/cli/index.js.map +0 -7
- package/dist/cli/opencode-sm.js.map +0 -7
- 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.map +0 -7
- package/dist/core/config/feature-flags.js.map +0 -7
- package/dist/core/config/storage-config.js.map +0 -7
- package/dist/core/config/types.js.map +0 -7
- package/dist/core/context/auto-context.js.map +0 -7
- package/dist/core/context/dual-stack-manager.js.map +0 -7
- package/dist/core/context/enhanced-rehydration.js.map +0 -7
- package/dist/core/context/frame-database.js.map +0 -7
- package/dist/core/context/frame-digest.js.map +0 -7
- package/dist/core/context/frame-handoff-manager.js.map +0 -7
- 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.map +0 -7
- package/dist/core/context/frame-stack.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.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.map +0 -7
- package/dist/core/context/recursive-context-manager.js.map +0 -7
- package/dist/core/context/refactored-frame-manager.js.map +0 -7
- package/dist/core/context/shared-context-layer.js.map +0 -7
- package/dist/core/context/stack-merge-resolver.js.map +0 -7
- package/dist/core/context/validation.js.map +0 -7
- package/dist/core/database/batch-operations.js.map +0 -7
- package/dist/core/database/connection-pool.js.map +0 -7
- package/dist/core/database/database-adapter.js.map +0 -7
- 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.map +0 -7
- package/dist/core/database/query-router.js.map +0 -7
- package/dist/core/database/sqlite-adapter.js +0 -728
- package/dist/core/database/sqlite-adapter.js.map +0 -7
- package/dist/core/digest/enhanced-hybrid-digest.js.map +0 -7
- package/dist/core/digest/frame-digest-integration.js.map +0 -7
- package/dist/core/digest/hybrid-digest-generator.js.map +0 -7
- package/dist/core/digest/index.js.map +0 -7
- package/dist/core/digest/types.js.map +0 -7
- package/dist/core/errors/index.js +0 -512
- package/dist/core/errors/index.js.map +0 -7
- package/dist/core/errors/recovery.js.map +0 -7
- package/dist/core/execution/parallel-executor.js.map +0 -7
- package/dist/core/frame/workflow-templates.js.map +0 -7
- package/dist/core/merge/conflict-detector.js.map +0 -7
- package/dist/core/merge/index.js.map +0 -7
- package/dist/core/merge/resolution-engine.js.map +0 -7
- package/dist/core/merge/stack-diff.js.map +0 -7
- package/dist/core/models/fallback-monitor.js.map +0 -7
- package/dist/core/models/model-router.js.map +0 -7
- package/dist/core/monitoring/error-handler.js.map +0 -7
- package/dist/core/monitoring/logger.js +0 -150
- package/dist/core/monitoring/logger.js.map +0 -7
- package/dist/core/monitoring/metrics.js.map +0 -7
- package/dist/core/monitoring/progress-tracker.js.map +0 -7
- package/dist/core/monitoring/session-monitor.js.map +0 -7
- package/dist/core/performance/context-cache.js.map +0 -7
- package/dist/core/performance/index.js.map +0 -7
- package/dist/core/performance/lazy-context-loader.js.map +0 -7
- package/dist/core/performance/monitor.js.map +0 -7
- package/dist/core/performance/optimized-frame-context.js.map +0 -7
- package/dist/core/performance/performance-benchmark.js.map +0 -7
- package/dist/core/performance/performance-profiler.js.map +0 -7
- package/dist/core/performance/streaming-jsonl-parser.js.map +0 -7
- package/dist/core/persistence/postgres-adapter.js.map +0 -7
- package/dist/core/projects/project-isolation.js.map +0 -7
- package/dist/core/projects/project-manager.js.map +0 -7
- package/dist/core/query/query-parser.js.map +0 -7
- package/dist/core/query/query-templates.js.map +0 -7
- 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.map +0 -7
- package/dist/core/retrieval/llm-context-retrieval.js.map +0 -7
- package/dist/core/retrieval/llm-provider.js.map +0 -7
- 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.map +0 -7
- package/dist/core/retrieval/types.js.map +0 -7
- package/dist/core/session/clear-survival.js.map +0 -7
- package/dist/core/session/enhanced-handoff.js.map +0 -7
- 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.map +0 -7
- package/dist/core/skills/index.js.map +0 -7
- package/dist/core/skills/skill-storage.js.map +0 -7
- 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.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.map +0 -7
- package/dist/core/storage/two-tier-storage.js.map +0 -7
- package/dist/core/trace/cli-trace-wrapper.js.map +0 -7
- package/dist/core/trace/db-trace-wrapper.js.map +0 -7
- package/dist/core/trace/debug-trace.js.map +0 -7
- package/dist/core/trace/index.js.map +0 -7
- 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.map +0 -7
- package/dist/core/trace/trace-store.js.map +0 -7
- package/dist/core/trace/types.js.map +0 -7
- package/dist/core/utils/async-mutex.js.map +0 -7
- package/dist/core/utils/compression.js.map +0 -7
- package/dist/core/utils/update-checker.js.map +0 -7
- package/dist/core/worktree/worktree-manager.js.map +0 -7
- package/dist/daemon/daemon-config.js.map +0 -7
- package/dist/daemon/services/context-service.js.map +0 -7
- package/dist/daemon/services/linear-service.js.map +0 -7
- package/dist/daemon/session-daemon.js.map +0 -7
- package/dist/daemon/unified-daemon.js.map +0 -7
- package/dist/features/analytics/api/analytics-api.js.map +0 -7
- package/dist/features/analytics/core/analytics-service.js.map +0 -7
- package/dist/features/analytics/index.js.map +0 -7
- package/dist/features/analytics/queries/metrics-queries.js.map +0 -7
- package/dist/features/browser/browser-mcp.js.map +0 -7
- package/dist/features/sweep/index.js.map +0 -7
- package/dist/features/sweep/prediction-client.js.map +0 -7
- package/dist/features/sweep/prompt-builder.js.map +0 -7
- package/dist/features/sweep/pty-wrapper.js.map +0 -7
- package/dist/features/sweep/state-watcher.js.map +0 -7
- package/dist/features/sweep/status-bar.js.map +0 -7
- package/dist/features/sweep/sweep-server-manager.js.map +0 -7
- package/dist/features/sweep/tab-interceptor.js.map +0 -7
- package/dist/features/sweep/types.js.map +0 -7
- package/dist/features/tasks/linear-task-manager.js.map +0 -7
- package/dist/features/tasks/task-aware-context.js.map +0 -7
- package/dist/features/tui/simple-monitor.js.map +0 -7
- package/dist/features/tui/swarm-monitor.js.map +0 -7
- package/dist/features/web/client/stores/task-store.js.map +0 -7
- package/dist/features/web/server/index.js.map +0 -7
- package/dist/hooks/auto-background.js.map +0 -7
- package/dist/hooks/claude-code-whatsapp-hook.js.map +0 -7
- package/dist/hooks/config.js.map +0 -7
- package/dist/hooks/daemon.js.map +0 -7
- package/dist/hooks/events.js.map +0 -7
- package/dist/hooks/index.js.map +0 -7
- package/dist/hooks/linear-task-picker.js.map +0 -7
- package/dist/hooks/schemas.js.map +0 -7
- package/dist/hooks/secure-fs.js.map +0 -7
- package/dist/hooks/security-logger.js.map +0 -7
- package/dist/hooks/session-summary.js.map +0 -7
- package/dist/hooks/sms-action-runner.js.map +0 -7
- package/dist/hooks/sms-notify.js.map +0 -7
- package/dist/hooks/sms-watcher.js.map +0 -7
- package/dist/hooks/sms-webhook.js.map +0 -7
- package/dist/hooks/whatsapp-commands.js.map +0 -7
- package/dist/hooks/whatsapp-scheduler.js.map +0 -7
- package/dist/hooks/whatsapp-sync.js.map +0 -7
- package/dist/index.js.map +0 -7
- package/dist/integrations/anthropic/client.js.map +0 -7
- package/dist/integrations/claude-code/agent-bridge.js.map +0 -7
- package/dist/integrations/claude-code/enhanced-pre-clear-hooks.js.map +0 -7
- package/dist/integrations/claude-code/lifecycle-hooks.js.map +0 -7
- package/dist/integrations/claude-code/post-task-hooks.js.map +0 -7
- package/dist/integrations/claude-code/subagent-client-stub.js.map +0 -7
- package/dist/integrations/claude-code/subagent-client.js.map +0 -7
- package/dist/integrations/claude-code/task-coordinator.js.map +0 -7
- package/dist/integrations/linear/auth.js.map +0 -7
- package/dist/integrations/linear/auto-sync.js.map +0 -7
- package/dist/integrations/linear/client.js +0 -630
- package/dist/integrations/linear/client.js.map +0 -7
- package/dist/integrations/linear/config.js.map +0 -7
- package/dist/integrations/linear/migration.js.map +0 -7
- package/dist/integrations/linear/oauth-server.js.map +0 -7
- package/dist/integrations/linear/rest-client.js.map +0 -7
- package/dist/integrations/linear/sync-manager.js.map +0 -7
- package/dist/integrations/linear/sync-service.js.map +0 -7
- package/dist/integrations/linear/sync.js.map +0 -7
- package/dist/integrations/linear/unified-sync.js.map +0 -7
- package/dist/integrations/linear/webhook-handler.js.map +0 -7
- package/dist/integrations/linear/webhook-server.js.map +0 -7
- package/dist/integrations/linear/webhook.js.map +0 -7
- package/dist/integrations/mcp/handlers/code-execution-handlers.js.map +0 -7
- package/dist/integrations/mcp/handlers/context-handlers.js.map +0 -7
- package/dist/integrations/mcp/handlers/discovery-handlers.js.map +0 -7
- package/dist/integrations/mcp/handlers/index.js.map +0 -7
- package/dist/integrations/mcp/handlers/linear-handlers.js.map +0 -7
- package/dist/integrations/mcp/handlers/skill-handlers.js.map +0 -7
- package/dist/integrations/mcp/handlers/task-handlers.js.map +0 -7
- package/dist/integrations/mcp/handlers/trace-handlers.js.map +0 -7
- package/dist/integrations/mcp/index.js.map +0 -7
- package/dist/integrations/mcp/middleware/tool-scoring.js.map +0 -7
- package/dist/integrations/mcp/refactored-server.js.map +0 -7
- package/dist/integrations/mcp/remote-server.js +0 -691
- package/dist/integrations/mcp/remote-server.js.map +0 -7
- package/dist/integrations/mcp/schemas.js.map +0 -7
- package/dist/integrations/mcp/server.js +0 -1960
- package/dist/integrations/mcp/server.js.map +0 -7
- package/dist/integrations/mcp/tool-definitions-code.js.map +0 -7
- 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.map +0 -7
- package/dist/integrations/ralph/context/context-budget-manager.js.map +0 -7
- package/dist/integrations/ralph/context/stackmemory-context-loader.js.map +0 -7
- package/dist/integrations/ralph/coordination/enhanced-coordination.js.map +0 -7
- package/dist/integrations/ralph/index.js.map +0 -7
- package/dist/integrations/ralph/learning/pattern-learner.js.map +0 -7
- package/dist/integrations/ralph/lifecycle/iteration-lifecycle.js.map +0 -7
- package/dist/integrations/ralph/monitoring/swarm-dashboard.js.map +0 -7
- package/dist/integrations/ralph/monitoring/swarm-registry.js.map +0 -7
- package/dist/integrations/ralph/orchestration/multi-loop-orchestrator.js.map +0 -7
- package/dist/integrations/ralph/patterns/compounding-engineering-pattern.js.map +0 -7
- package/dist/integrations/ralph/patterns/extended-coherence-sessions.js.map +0 -7
- package/dist/integrations/ralph/patterns/oracle-worker-pattern.js.map +0 -7
- 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.map +0 -7
- package/dist/integrations/ralph/state/state-reconciler.js.map +0 -7
- package/dist/integrations/ralph/swarm/git-workflow-manager.js.map +0 -7
- package/dist/integrations/ralph/swarm/swarm-coordinator.js.map +0 -7
- package/dist/integrations/ralph/visualization/ralph-debugger.js.map +0 -7
- package/dist/mcp/stackmemory-mcp-server.js.map +0 -7
- package/dist/middleware/exponential-rate-limiter.js.map +0 -7
- package/dist/models/user.model.js.map +0 -7
- 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.map +0 -7
- package/dist/services/context-service.js.map +0 -7
- package/dist/skills/api-discovery.js.map +0 -7
- package/dist/skills/api-skill.js.map +0 -7
- package/dist/skills/claude-skills.js.map +0 -7
- package/dist/skills/dashboard-launcher.js.map +0 -7
- 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.map +0 -7
- package/dist/utils/env.js.map +0 -7
- package/dist/utils/formatting.js.map +0 -7
- 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/{agents → src/agents}/core/agent-task-manager.js +0 -0
- /package/dist/{agents → src/agents}/verifiers/base-verifier.js +0 -0
- /package/dist/{agents → src/agents}/verifiers/formatter-verifier.js +0 -0
- /package/dist/{agents → src/agents}/verifiers/llm-judge.js +0 -0
- /package/dist/{cli → src/cli}/auto-detect.js +0 -0
- /package/dist/{cli → src/cli}/claude-sm-danger.js +0 -0
- /package/dist/{cli → src/cli}/codex-sm-danger.js +0 -0
- /package/dist/{cli → src/cli}/codex-sm.js +0 -0
- /package/dist/{cli → src/cli}/commands/api.js +0 -0
- /package/dist/{cli → src/cli}/commands/auto-background.js +0 -0
- /package/dist/{cli → src/cli}/commands/cleanup-processes.js +0 -0
- /package/dist/{cli → src/cli}/commands/clear.js +0 -0
- /package/dist/{cli → src/cli}/commands/config.js +0 -0
- /package/dist/{cli → src/cli}/commands/context-rehydrate.js +0 -0
- /package/dist/{cli → src/cli}/commands/context.js +0 -0
- /package/dist/{cli → src/cli}/commands/daemon.js +0 -0
- /package/dist/{cli → src/cli}/commands/dashboard.js +0 -0
- /package/dist/{cli → src/cli}/commands/db.js +0 -0
- /package/dist/{cli → src/cli}/commands/decision.js +0 -0
- /package/dist/{cli → src/cli}/commands/discovery.js +0 -0
- /package/dist/{cli → src/cli}/commands/handoff.js +0 -0
- /package/dist/{cli → src/cli}/commands/hooks.js +0 -0
- /package/dist/{cli → src/cli}/commands/linear.js +0 -0
- /package/dist/{cli → src/cli}/commands/log.js +0 -0
- /package/dist/{cli → src/cli}/commands/login.js +0 -0
- /package/dist/{cli → src/cli}/commands/migrate.js +0 -0
- /package/dist/{cli → src/cli}/commands/model.js +0 -0
- /package/dist/{cli → src/cli}/commands/onboard.js +0 -0
- /package/dist/{cli → src/cli}/commands/projects.js +0 -0
- /package/dist/{cli → src/cli}/commands/ralph.js +0 -0
- /package/dist/{cli → src/cli}/commands/retrieval.js +0 -0
- /package/dist/{cli → src/cli}/commands/service.js +0 -0
- /package/dist/{cli → src/cli}/commands/session.js +0 -0
- /package/dist/{cli → src/cli}/commands/settings.js +0 -0
- /package/dist/{cli → src/cli}/commands/setup.js +0 -0
- /package/dist/{cli → src/cli}/commands/shell.js +0 -0
- /package/dist/{cli → src/cli}/commands/signup.js +0 -0
- /package/dist/{cli → src/cli}/commands/skills.js +0 -0
- /package/dist/{cli → src/cli}/commands/sms-notify.js +0 -0
- /package/dist/{cli → src/cli}/commands/storage-tier.js +0 -0
- /package/dist/{cli → src/cli}/commands/sweep.js +0 -0
- /package/dist/{cli → src/cli}/commands/tasks.js +0 -0
- /package/dist/{cli → src/cli}/commands/worktree.js +0 -0
- /package/dist/{cli → src/cli}/opencode-sm.js +0 -0
- /package/dist/{cli → src/cli}/utils/viewer.js +0 -0
- /package/dist/{core → src/core}/config/config-manager.js +0 -0
- /package/dist/{core → src/core}/config/feature-flags.js +0 -0
- /package/dist/{core → src/core}/config/storage-config.js +0 -0
- /package/dist/{core → src/core}/config/types.js +0 -0
- /package/dist/{core → src/core}/context/auto-context.js +0 -0
- /package/dist/{core → src/core}/context/dual-stack-manager.js +0 -0
- /package/dist/{core → src/core}/context/enhanced-rehydration.js +0 -0
- /package/dist/{core → src/core}/context/frame-database.js +0 -0
- /package/dist/{core → src/core}/context/frame-digest.js +0 -0
- /package/dist/{core → src/core}/context/frame-handoff-manager.js +0 -0
- /package/dist/{core → src/core}/context/frame-lifecycle-hooks.js +0 -0
- /package/dist/{core → src/core}/context/frame-recovery.js +0 -0
- /package/dist/{core → src/core}/context/frame-stack.js +0 -0
- /package/dist/{core → src/core}/context/frame-types.js +0 -0
- /package/dist/{core → src/core}/context/frame-types.js.map +0 -0
- /package/dist/{core → src/core}/context/index.js +0 -0
- /package/dist/{core → src/core}/context/permission-manager.js +0 -0
- /package/dist/{core → src/core}/context/recursive-context-manager.js +0 -0
- /package/dist/{core → src/core}/context/refactored-frame-manager.js +0 -0
- /package/dist/{core → src/core}/context/shared-context-layer.js +0 -0
- /package/dist/{core → src/core}/context/stack-merge-resolver.js +0 -0
- /package/dist/{core → src/core}/context/validation.js +0 -0
- /package/dist/{core → src/core}/database/batch-operations.js +0 -0
- /package/dist/{core → src/core}/database/connection-pool.js +0 -0
- /package/dist/{core → src/core}/database/database-adapter.js +0 -0
- /package/dist/{core → src/core}/database/migration-manager.js +0 -0
- /package/dist/{core → src/core}/database/query-cache.js +0 -0
- /package/dist/{core → src/core}/database/query-router.js +0 -0
- /package/dist/{core → src/core}/digest/enhanced-hybrid-digest.js +0 -0
- /package/dist/{core → src/core}/digest/frame-digest-integration.js +0 -0
- /package/dist/{core → src/core}/digest/hybrid-digest-generator.js +0 -0
- /package/dist/{core → src/core}/digest/index.js +0 -0
- /package/dist/{core → src/core}/digest/types.js +0 -0
- /package/dist/{core → src/core}/errors/recovery.js +0 -0
- /package/dist/{core → src/core}/execution/parallel-executor.js +0 -0
- /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/core}/frame/workflow-templates.js +0 -0
- /package/dist/{core → src/core}/merge/conflict-detector.js +0 -0
- /package/dist/{core → src/core}/merge/index.js +0 -0
- /package/dist/{core → src/core}/merge/resolution-engine.js +0 -0
- /package/dist/{core → src/core}/merge/stack-diff.js +0 -0
- /package/dist/{core → src/core/merge}/types.js +0 -0
- /package/dist/{core → src/core/merge}/types.js.map +0 -0
- /package/dist/{core → src/core}/models/fallback-monitor.js +0 -0
- /package/dist/{core → src/core}/models/model-router.js +0 -0
- /package/dist/{core → src/core}/monitoring/error-handler.js +0 -0
- /package/dist/{core → src/core}/monitoring/metrics.js +0 -0
- /package/dist/{core → src/core}/monitoring/progress-tracker.js +0 -0
- /package/dist/{core → src/core}/monitoring/session-monitor.js +0 -0
- /package/dist/{core → src/core}/performance/context-cache.js +0 -0
- /package/dist/{core → src/core}/performance/index.js +0 -0
- /package/dist/{core → src/core}/performance/lazy-context-loader.js +0 -0
- /package/dist/{core → src/core}/performance/monitor.js +0 -0
- /package/dist/{core → src/core}/performance/optimized-frame-context.js +0 -0
- /package/dist/{core → src/core}/performance/performance-benchmark.js +0 -0
- /package/dist/{core → src/core}/performance/performance-profiler.js +0 -0
- /package/dist/{core → src/core}/performance/streaming-jsonl-parser.js +0 -0
- /package/dist/{core → src/core}/persistence/postgres-adapter.js +0 -0
- /package/dist/{core → src/core}/projects/project-isolation.js +0 -0
- /package/dist/{core → src/core}/projects/project-manager.js +0 -0
- /package/dist/{core → src/core}/query/query-parser.js +0 -0
- /package/dist/{core → src/core}/query/query-templates.js +0 -0
- /package/dist/{core → src/core}/retrieval/context-retriever.js +0 -0
- /package/dist/{core → src/core}/retrieval/index.js +0 -0
- /package/dist/{core → src/core}/retrieval/llm-context-retrieval.js +0 -0
- /package/dist/{core → src/core}/retrieval/llm-provider.js +0 -0
- /package/dist/{core → src/core}/retrieval/retrieval-audit.js +0 -0
- /package/dist/{core → src/core}/retrieval/summary-generator.js +0 -0
- /package/dist/{core → src/core}/retrieval/types.js +0 -0
- /package/dist/{core → src/core}/session/clear-survival.js +0 -0
- /package/dist/{core → src/core}/session/enhanced-handoff.js +0 -0
- /package/dist/{core → src/core}/session/handoff-generator.js +0 -0
- /package/dist/{core → src/core}/session/index.js +0 -0
- /package/dist/{core → src/core}/session/session-manager.js +0 -0
- /package/dist/{core → src/core}/skills/index.js +0 -0
- /package/dist/{core → src/core}/skills/skill-storage.js +0 -0
- /package/dist/{core → src/core}/skills/types.js +0 -0
- /package/dist/{core → src/core}/storage/infinite-storage.js +0 -0
- /package/dist/{core → src/core}/storage/remote-storage.js +0 -0
- /package/dist/{core → src/core}/storage/two-tier-storage.js +0 -0
- /package/dist/{core → src/core}/trace/cli-trace-wrapper.js +0 -0
- /package/dist/{core → src/core}/trace/db-trace-wrapper.js +0 -0
- /package/dist/{core → src/core}/trace/debug-trace.js +0 -0
- /package/dist/{core → src/core}/trace/index.js +0 -0
- /package/dist/{core → src/core}/trace/linear-api-wrapper.js +0 -0
- /package/dist/{core → src/core}/trace/trace-detector.js +0 -0
- /package/dist/{core → src/core}/trace/trace-store.js +0 -0
- /package/dist/{core → src/core}/trace/types.js +0 -0
- /package/dist/{integrations/linear → src/core}/types.js +0 -0
- /package/dist/{integrations/linear → src/core}/types.js.map +0 -0
- /package/dist/{core → src/core}/utils/async-mutex.js +0 -0
- /package/dist/{core → src/core}/utils/compression.js +0 -0
- /package/dist/{core → src/core}/utils/update-checker.js +0 -0
- /package/dist/{core → src/core}/worktree/worktree-manager.js +0 -0
- /package/dist/{daemon → src/daemon}/daemon-config.js +0 -0
- /package/dist/{daemon → src/daemon}/services/context-service.js +0 -0
- /package/dist/{daemon → src/daemon}/services/linear-service.js +0 -0
- /package/dist/{daemon → src/daemon}/session-daemon.js +0 -0
- /package/dist/{daemon → src/daemon}/unified-daemon.js +0 -0
- /package/dist/{features → src/features}/analytics/api/analytics-api.js +0 -0
- /package/dist/{features → src/features}/analytics/core/analytics-service.js +0 -0
- /package/dist/{features → src/features}/analytics/index.js +0 -0
- /package/dist/{features → src/features}/analytics/queries/metrics-queries.js +0 -0
- /package/dist/{features → src/features}/analytics/types/metrics.js +0 -0
- /package/dist/{features → src/features}/analytics/types/metrics.js.map +0 -0
- /package/dist/{features → src/features}/browser/browser-mcp.js +0 -0
- /package/dist/{features → src/features}/sweep/index.js +0 -0
- /package/dist/{features → src/features}/sweep/prediction-client.js +0 -0
- /package/dist/{features → src/features}/sweep/prompt-builder.js +0 -0
- /package/dist/{features → src/features}/sweep/pty-wrapper.js +0 -0
- /package/dist/{features → src/features}/sweep/state-watcher.js +0 -0
- /package/dist/{features → src/features}/sweep/status-bar.js +0 -0
- /package/dist/{features → src/features}/sweep/sweep-server-manager.js +0 -0
- /package/dist/{features → src/features}/sweep/tab-interceptor.js +0 -0
- /package/dist/{features → src/features}/sweep/types.js +0 -0
- /package/dist/{features → src/features}/tasks/linear-task-manager.js +0 -0
- /package/dist/{features → src/features}/tasks/task-aware-context.js +0 -0
- /package/dist/{features → src/features}/tui/simple-monitor.js +0 -0
- /package/dist/{features → src/features}/tui/swarm-monitor.js +0 -0
- /package/dist/{features → src/features}/web/client/stores/task-store.js +0 -0
- /package/dist/{features → src/features}/web/server/index.js +0 -0
- /package/dist/{hooks → src/hooks}/auto-background.js +0 -0
- /package/dist/{hooks → src/hooks}/claude-code-whatsapp-hook.js +0 -0
- /package/dist/{hooks → src/hooks}/config.js +0 -0
- /package/dist/{hooks → src/hooks}/daemon.js +0 -0
- /package/dist/{hooks → src/hooks}/events.js +0 -0
- /package/dist/{hooks → src/hooks}/index.js +0 -0
- /package/dist/{hooks → src/hooks}/linear-task-picker.js +0 -0
- /package/dist/{hooks → src/hooks}/schemas.js +0 -0
- /package/dist/{hooks → src/hooks}/secure-fs.js +0 -0
- /package/dist/{hooks → src/hooks}/security-logger.js +0 -0
- /package/dist/{hooks → src/hooks}/session-summary.js +0 -0
- /package/dist/{hooks → src/hooks}/sms-action-runner.js +0 -0
- /package/dist/{hooks → src/hooks}/sms-notify.js +0 -0
- /package/dist/{hooks → src/hooks}/sms-watcher.js +0 -0
- /package/dist/{hooks → src/hooks}/sms-webhook.js +0 -0
- /package/dist/{hooks → src/hooks}/whatsapp-commands.js +0 -0
- /package/dist/{hooks → src/hooks}/whatsapp-scheduler.js +0 -0
- /package/dist/{hooks → src/hooks}/whatsapp-sync.js +0 -0
- /package/dist/{index.js → src/index.js} +0 -0
- /package/dist/{integrations → src/integrations}/anthropic/client.js +0 -0
- /package/dist/{integrations → src/integrations}/claude-code/agent-bridge.js +0 -0
- /package/dist/{integrations → src/integrations}/claude-code/enhanced-pre-clear-hooks.js +0 -0
- /package/dist/{integrations → src/integrations}/claude-code/lifecycle-hooks.js +0 -0
- /package/dist/{integrations → src/integrations}/claude-code/post-task-hooks.js +0 -0
- /package/dist/{integrations → src/integrations}/claude-code/subagent-client-stub.js +0 -0
- /package/dist/{integrations → src/integrations}/claude-code/subagent-client.js +0 -0
- /package/dist/{integrations → src/integrations}/claude-code/task-coordinator.js +0 -0
- /package/dist/{integrations → src/integrations}/linear/auth.js +0 -0
- /package/dist/{integrations → src/integrations}/linear/auto-sync.js +0 -0
- /package/dist/{integrations → src/integrations}/linear/config.js +0 -0
- /package/dist/{integrations → src/integrations}/linear/migration.js +0 -0
- /package/dist/{integrations → src/integrations}/linear/oauth-server.js +0 -0
- /package/dist/{integrations → src/integrations}/linear/rest-client.js +0 -0
- /package/dist/{integrations → src/integrations}/linear/sync-manager.js +0 -0
- /package/dist/{integrations → src/integrations}/linear/sync-service.js +0 -0
- /package/dist/{integrations → src/integrations}/linear/sync.js +0 -0
- /package/dist/{integrations/ralph → src/integrations/linear}/types.js +0 -0
- /package/dist/{integrations/ralph → src/integrations/linear}/types.js.map +0 -0
- /package/dist/{integrations → src/integrations}/linear/unified-sync.js +0 -0
- /package/dist/{integrations → src/integrations}/linear/webhook-handler.js +0 -0
- /package/dist/{integrations → src/integrations}/linear/webhook-server.js +0 -0
- /package/dist/{integrations → src/integrations}/linear/webhook.js +0 -0
- /package/dist/{integrations → src/integrations}/mcp/handlers/code-execution-handlers.js +0 -0
- /package/dist/{integrations → src/integrations}/mcp/handlers/context-handlers.js +0 -0
- /package/dist/{integrations → src/integrations}/mcp/handlers/discovery-handlers.js +0 -0
- /package/dist/{integrations → src/integrations}/mcp/handlers/index.js +0 -0
- /package/dist/{integrations → src/integrations}/mcp/handlers/linear-handlers.js +0 -0
- /package/dist/{integrations → src/integrations}/mcp/handlers/skill-handlers.js +0 -0
- /package/dist/{integrations → src/integrations}/mcp/handlers/task-handlers.js +0 -0
- /package/dist/{integrations → src/integrations}/mcp/handlers/trace-handlers.js +0 -0
- /package/dist/{integrations → src/integrations}/mcp/index.js +0 -0
- /package/dist/{integrations → src/integrations}/mcp/middleware/tool-scoring.js +0 -0
- /package/dist/{integrations → src/integrations}/mcp/refactored-server.js +0 -0
- /package/dist/{integrations → src/integrations}/mcp/schemas.js +0 -0
- /package/dist/{integrations → src/integrations}/mcp/tool-definitions-code.js +0 -0
- /package/dist/{integrations → src/integrations}/mcp/tool-definitions.js +0 -0
- /package/dist/{integrations → src/integrations}/ralph/bridge/ralph-stackmemory-bridge.js +0 -0
- /package/dist/{integrations → src/integrations}/ralph/context/context-budget-manager.js +0 -0
- /package/dist/{integrations → src/integrations}/ralph/context/stackmemory-context-loader.js +0 -0
- /package/dist/{integrations → src/integrations}/ralph/coordination/enhanced-coordination.js +0 -0
- /package/dist/{integrations → src/integrations}/ralph/index.js +0 -0
- /package/dist/{integrations → src/integrations}/ralph/learning/pattern-learner.js +0 -0
- /package/dist/{integrations → src/integrations}/ralph/lifecycle/iteration-lifecycle.js +0 -0
- /package/dist/{integrations → src/integrations}/ralph/monitoring/swarm-dashboard.js +0 -0
- /package/dist/{integrations → src/integrations}/ralph/monitoring/swarm-registry.js +0 -0
- /package/dist/{integrations → src/integrations}/ralph/orchestration/multi-loop-orchestrator.js +0 -0
- /package/dist/{integrations → src/integrations}/ralph/patterns/compounding-engineering-pattern.js +0 -0
- /package/dist/{integrations → src/integrations}/ralph/patterns/extended-coherence-sessions.js +0 -0
- /package/dist/{integrations → src/integrations}/ralph/patterns/oracle-worker-pattern.js +0 -0
- /package/dist/{integrations → src/integrations}/ralph/performance/performance-optimizer.js +0 -0
- /package/dist/{integrations → src/integrations}/ralph/recovery/crash-recovery.js +0 -0
- /package/dist/{integrations → src/integrations}/ralph/state/state-reconciler.js +0 -0
- /package/dist/{integrations → src/integrations}/ralph/swarm/git-workflow-manager.js +0 -0
- /package/dist/{integrations → src/integrations}/ralph/swarm/swarm-coordinator.js +0 -0
- /package/dist/{types/task.js.map → src/integrations/ralph/types.js.map} +0 -0
- /package/dist/{integrations → src/integrations}/ralph/visualization/ralph-debugger.js +0 -0
- /package/dist/{mcp → src/mcp}/stackmemory-mcp-server.js +0 -0
- /package/dist/{middleware → src/middleware}/exponential-rate-limiter.js +0 -0
- /package/dist/{models → src/models}/user.model.js +0 -0
- /package/dist/{servers → src/servers}/production/auth-middleware.js +0 -0
- /package/dist/{services → src/services}/config-service.js +0 -0
- /package/dist/{services → src/services}/context-service.js +0 -0
- /package/dist/{skills → src/skills}/api-discovery.js +0 -0
- /package/dist/{skills → src/skills}/api-skill.js +0 -0
- /package/dist/{skills → src/skills}/claude-skills.js +0 -0
- /package/dist/{skills → src/skills}/dashboard-launcher.js +0 -0
- /package/dist/{skills → src/skills}/recursive-agent-orchestrator.js +0 -0
- /package/dist/{skills → src/skills}/unified-rlm-orchestrator.js +0 -0
- /package/dist/{types → src/types}/task.js +0 -0
- /package/dist/{utils → src/utils}/env.js +0 -0
- /package/dist/{utils → src/utils}/formatting.js +0 -0
- /package/dist/{utils → src/utils}/process-cleanup.js +0 -0
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"version": 3,
|
|
3
|
-
"sources": ["../../../src/integrations/mcp/server.ts"],
|
|
4
|
-
"sourcesContent": ["#!/usr/bin/env node\n/**\n * StackMemory MCP Server - Local Instance\n * This runs locally and provides context to Claude Code\n */\n\nimport { Server } from '@modelcontextprotocol/sdk/server/index.js';\nimport { StdioServerTransport } from '@modelcontextprotocol/sdk/server/stdio.js';\nimport { z } from 'zod';\nimport Database from 'better-sqlite3';\nimport {\n validateInput,\n StartFrameSchema,\n CloseFrameSchema,\n AddAnchorSchema,\n CreateTaskSchema,\n UpdateTaskStatusSchema,\n AddDecisionSchema,\n GetContextSchema,\n} from './schemas.js';\nimport { readFileSync, existsSync, mkdirSync } from 'fs';\nimport { join, dirname } from 'path';\nimport { execSync } from 'child_process';\nimport { FrameManager, FrameType } from '../../core/context/index.js';\nimport { logger } from '../../core/monitoring/logger.js';\nimport { isFeatureEnabled } from '../../core/config/feature-flags.js';\n\n// Linear types - imported dynamically when needed\ntype LinearTaskManager =\n import('../../features/tasks/linear-task-manager.js').LinearTaskManager;\ntype LinearAuthManager = import('../linear/auth.js').LinearAuthManager;\ntype LinearSyncEngine = import('../linear/sync.js').LinearSyncEngine;\n\n// Re-export task types for handlers (these are just enums/types, not runtime deps)\nexport {\n TaskPriority,\n TaskStatus,\n} from '../../features/tasks/linear-task-manager.js';\nimport { BrowserMCPIntegration } from '../../features/browser/browser-mcp.js';\nimport { TraceDetector } from '../../core/trace/trace-detector.js';\nimport { ToolCall, Trace } from '../../core/trace/types.js';\nimport { LLMContextRetrieval } from '../../core/retrieval/index.js';\nimport { DiscoveryHandlers } from './handlers/discovery-handlers.js';\nimport { v4 as uuidv4 } from 'uuid';\n// Type-safe environment variable access\nfunction getEnv(key: string, defaultValue?: string): string {\n const value = process.env[key];\n if (value === undefined) {\n if (defaultValue !== undefined) return defaultValue;\n throw new Error(`Environment variable ${key} is required`);\n }\n return value;\n}\n\nfunction getOptionalEnv(key: string): string | undefined {\n return process.env[key];\n}\n\n// ============================================\n// Simple Local MCP Server\n// ============================================\n\nclass LocalStackMemoryMCP {\n private server: Server;\n private db: Database.Database;\n private projectRoot: string;\n private frameManager: FrameManager;\n private taskStore: LinearTaskManager | null = null;\n private linearAuthManager: LinearAuthManager | null = null;\n private linearSync: LinearSyncEngine | null = null;\n private projectId: string;\n private contexts: Map<string, any> = new Map();\n private browserMCP: BrowserMCPIntegration;\n private traceDetector: TraceDetector;\n private contextRetrieval: LLMContextRetrieval;\n private discoveryHandlers: DiscoveryHandlers;\n\n constructor() {\n // Find project root (where .git is)\n this.projectRoot = this.findProjectRoot();\n this.projectId = this.getProjectId();\n\n // Ensure .stackmemory directory exists\n const dbDir = join(this.projectRoot, '.stackmemory');\n if (!existsSync(dbDir)) {\n mkdirSync(dbDir, { recursive: true });\n }\n\n // Initialize database\n const dbPath = join(dbDir, 'context.db');\n this.db = new Database(dbPath);\n this.initDB();\n\n // Initialize frame manager\n this.frameManager = new FrameManager(this.db, this.projectId);\n\n // Initialize Linear integration (optional - lazy loaded)\n this.initLinearIfEnabled();\n\n // Initialize MCP server\n this.server = new Server(\n {\n name: 'stackmemory-local',\n version: '0.1.0',\n },\n {\n capabilities: {\n tools: {},\n },\n }\n );\n\n // Initialize Browser MCP integration\n this.browserMCP = new BrowserMCPIntegration({\n headless: process.env['BROWSER_HEADLESS'] !== 'false',\n defaultViewport: { width: 1280, height: 720 },\n });\n\n // Initialize Trace Detector with database persistence\n this.traceDetector = new TraceDetector({}, undefined, this.db);\n\n // Initialize LLM Context Retrieval\n this.contextRetrieval = new LLMContextRetrieval(\n this.db,\n this.frameManager,\n this.projectId\n );\n\n // Initialize Discovery Handlers\n this.discoveryHandlers = new DiscoveryHandlers({\n frameManager: this.frameManager,\n contextRetrieval: this.contextRetrieval,\n db: this.db,\n projectRoot: this.projectRoot,\n });\n\n this.setupHandlers();\n this.loadInitialContext();\n\n // Initialize Browser MCP with this server\n this.browserMCP.initialize(this.server).catch((error) => {\n logger.error('Failed to initialize Browser MCP', error);\n });\n\n logger.info('StackMemory MCP Server initialized', {\n projectRoot: this.projectRoot,\n projectId: this.projectId,\n });\n }\n\n private findProjectRoot(): string {\n let dir = process.cwd();\n while (dir !== '/') {\n if (existsSync(join(dir, '.git'))) {\n return dir;\n }\n dir = dirname(dir);\n }\n return process.cwd();\n }\n\n /**\n * Initialize Linear integration if enabled and credentials available\n */\n private async initLinearIfEnabled(): Promise<void> {\n if (!isFeatureEnabled('linear')) {\n logger.info('Linear integration disabled (no API key or LOCAL mode)');\n return;\n }\n\n try {\n const { LinearTaskManager } =\n await import('../../features/tasks/linear-task-manager.js');\n const { LinearAuthManager } = await import('../linear/auth.js');\n const { LinearSyncEngine, DEFAULT_SYNC_CONFIG } =\n await import('../linear/sync.js');\n\n this.taskStore = new LinearTaskManager(this.projectRoot, this.db);\n this.linearAuthManager = new LinearAuthManager(this.projectRoot);\n this.linearSync = new LinearSyncEngine(\n this.taskStore,\n this.linearAuthManager,\n DEFAULT_SYNC_CONFIG\n );\n\n logger.info('Linear integration initialized');\n } catch (error) {\n logger.warn('Failed to initialize Linear integration', { error });\n }\n }\n\n private initDB() {\n // Note: Don't create frames table here - FrameManager handles the schema\n // with the full run_id, project_id, parent_frame_id columns\n this.db.exec(`\n CREATE TABLE IF NOT EXISTS contexts (\n id TEXT PRIMARY KEY,\n type TEXT NOT NULL,\n content TEXT NOT NULL,\n importance REAL DEFAULT 0.5,\n created_at INTEGER DEFAULT (unixepoch()),\n last_accessed INTEGER DEFAULT (unixepoch()),\n access_count INTEGER DEFAULT 1\n );\n\n CREATE TABLE IF NOT EXISTS attention_log (\n id INTEGER PRIMARY KEY AUTOINCREMENT,\n context_id TEXT,\n query TEXT,\n response TEXT,\n influence_score REAL,\n timestamp INTEGER DEFAULT (unixepoch())\n );\n `);\n }\n\n private loadInitialContext() {\n // Load project information\n const projectInfo = this.getProjectInfo();\n this.addContext(\n 'project',\n `Project: ${projectInfo.name}\\nPath: ${projectInfo.path}`,\n 0.9\n );\n\n // Load recent git commits\n try {\n const recentCommits = execSync('git log --oneline -10', {\n cwd: this.projectRoot,\n }).toString();\n this.addContext('git_history', `Recent commits:\\n${recentCommits}`, 0.6);\n } catch {\n // Not a git repo or git not available\n }\n\n // Load README if exists\n const readmePath = join(this.projectRoot, 'README.md');\n if (existsSync(readmePath)) {\n const readme = readFileSync(readmePath, 'utf-8');\n const summary = readme.substring(0, 500);\n this.addContext('readme', `Project README:\\n${summary}...`, 0.8);\n }\n\n // Load any existing decisions from previous sessions\n this.loadStoredContexts();\n }\n\n private getProjectId(): string {\n // Use git remote or directory path as project ID\n // Algorithm must match session-manager and project-manager\n let identifier: string;\n try {\n identifier = execSync('git config --get remote.origin.url', {\n cwd: this.projectRoot,\n stdio: 'pipe',\n timeout: 5000,\n })\n .toString()\n .trim();\n } catch {\n identifier = this.projectRoot;\n }\n\n // Normalize: remove .git suffix, replace non-alphanumeric with dashes, take last 50 chars\n const cleaned = identifier\n .replace(/\\.git$/, '')\n .replace(/[^a-zA-Z0-9-]/g, '-')\n .toLowerCase();\n\n return cleaned.substring(cleaned.length - 50) || 'unknown';\n }\n\n private getProjectInfo() {\n const packageJsonPath = join(this.projectRoot, 'package.json');\n if (existsSync(packageJsonPath)) {\n const pkg = JSON.parse(readFileSync(packageJsonPath, 'utf-8'));\n return {\n name: pkg.name || 'unknown',\n path: this.projectRoot,\n };\n }\n return {\n name: this.projectRoot.split('/').pop() || 'unknown',\n path: this.projectRoot,\n };\n }\n\n private addContext(type: string, content: string, importance: number = 0.5) {\n const id = `${type}_${Date.now()}`;\n\n this.db\n .prepare(\n `\n INSERT OR REPLACE INTO contexts (id, type, content, importance)\n VALUES (?, ?, ?, ?)\n `\n )\n .run(id, type, content, importance);\n\n this.contexts.set(id, { type, content, importance });\n return id;\n }\n\n private loadStoredContexts() {\n const stored = this.db\n .prepare(\n `\n SELECT * FROM contexts \n ORDER BY importance DESC, last_accessed DESC\n LIMIT 50\n `\n )\n .all() as any[];\n\n stored.forEach((ctx) => {\n this.contexts.set(ctx.id, ctx);\n });\n }\n\n private setupHandlers() {\n // Tool listing\n this.server.setRequestHandler(\n z.object({\n method: z.literal('tools/list'),\n }),\n async () => {\n return {\n tools: [\n {\n name: 'get_context',\n description: 'Get current project context',\n inputSchema: {\n type: 'object',\n properties: {\n query: {\n type: 'string',\n description: 'What you want to know',\n },\n limit: {\n type: 'number',\n description: 'Max contexts to return',\n },\n },\n },\n },\n {\n name: 'add_decision',\n description: 'Record a decision or important information',\n inputSchema: {\n type: 'object',\n properties: {\n content: {\n type: 'string',\n description: 'The decision or information',\n },\n type: {\n type: 'string',\n enum: ['decision', 'constraint', 'learning'],\n },\n },\n required: ['content', 'type'],\n },\n },\n {\n name: 'start_frame',\n description: 'Start a new frame (task/subtask) on the call stack',\n inputSchema: {\n type: 'object',\n properties: {\n name: { type: 'string', description: 'Frame name/goal' },\n type: {\n type: 'string',\n enum: [\n 'task',\n 'subtask',\n 'tool_scope',\n 'review',\n 'write',\n 'debug',\n ],\n description: 'Frame type',\n },\n constraints: {\n type: 'array',\n items: { type: 'string' },\n description: 'Constraints for this frame',\n },\n },\n required: ['name', 'type'],\n },\n },\n {\n name: 'close_frame',\n description: 'Close current frame and generate digest',\n inputSchema: {\n type: 'object',\n properties: {\n result: {\n type: 'string',\n description: 'Frame completion result',\n },\n outputs: {\n type: 'object',\n description: 'Final outputs from frame',\n },\n },\n },\n },\n {\n name: 'add_anchor',\n description:\n 'Add anchored fact/decision/constraint to current frame',\n inputSchema: {\n type: 'object',\n properties: {\n type: {\n type: 'string',\n enum: [\n 'FACT',\n 'DECISION',\n 'CONSTRAINT',\n 'INTERFACE_CONTRACT',\n 'TODO',\n 'RISK',\n ],\n description: 'Anchor type',\n },\n text: { type: 'string', description: 'Anchor content' },\n priority: {\n type: 'number',\n description: 'Priority (0-10)',\n minimum: 0,\n maximum: 10,\n },\n },\n required: ['type', 'text'],\n },\n },\n {\n name: 'get_hot_stack',\n description: 'Get current active frames and context',\n inputSchema: {\n type: 'object',\n properties: {\n maxEvents: {\n type: 'number',\n description: 'Max recent events per frame',\n default: 20,\n },\n },\n },\n },\n {\n name: 'create_task',\n description: 'Create a new task in git-tracked JSONL storage',\n inputSchema: {\n type: 'object',\n properties: {\n title: { type: 'string', description: 'Task title' },\n description: {\n type: 'string',\n description: 'Task description',\n },\n priority: {\n type: 'string',\n enum: ['low', 'medium', 'high', 'urgent'],\n description: 'Task priority',\n },\n estimatedEffort: {\n type: 'number',\n description: 'Estimated effort in minutes',\n },\n dependsOn: {\n type: 'array',\n items: { type: 'string' },\n description: 'Task IDs this depends on',\n },\n tags: {\n type: 'array',\n items: { type: 'string' },\n description: 'Tags for categorization',\n },\n },\n required: ['title'],\n },\n },\n {\n name: 'update_task_status',\n description: 'Update task status with automatic time tracking',\n inputSchema: {\n type: 'object',\n properties: {\n taskId: { type: 'string', description: 'Task ID to update' },\n status: {\n type: 'string',\n enum: [\n 'pending',\n 'in_progress',\n 'completed',\n 'blocked',\n 'cancelled',\n ],\n description: 'New status',\n },\n reason: {\n type: 'string',\n description:\n 'Reason for status change (especially for blocked)',\n },\n },\n required: ['taskId', 'status'],\n },\n },\n {\n name: 'get_active_tasks',\n description: 'Get currently active tasks synced from Linear',\n inputSchema: {\n type: 'object',\n properties: {\n frameId: {\n type: 'string',\n description: 'Filter by specific frame ID',\n },\n status: {\n type: 'string',\n enum: [\n 'pending',\n 'in_progress',\n 'completed',\n 'blocked',\n 'cancelled',\n ],\n description: 'Filter by status',\n },\n priority: {\n type: 'string',\n enum: ['low', 'medium', 'high', 'urgent'],\n description: 'Filter by priority',\n },\n search: {\n type: 'string',\n description: 'Search in task title or description',\n },\n limit: {\n type: 'number',\n description: 'Max number of tasks to return (default: 20)',\n },\n },\n },\n },\n {\n name: 'get_task_metrics',\n description: 'Get project task metrics and analytics',\n inputSchema: {\n type: 'object',\n properties: {},\n },\n },\n {\n name: 'add_task_dependency',\n description: 'Add dependency relationship between tasks',\n inputSchema: {\n type: 'object',\n properties: {\n taskId: {\n type: 'string',\n description: 'Task that depends on another',\n },\n dependsOnId: {\n type: 'string',\n description: 'Task ID that this depends on',\n },\n },\n required: ['taskId', 'dependsOnId'],\n },\n },\n {\n name: 'linear_sync',\n description: 'Sync tasks with Linear',\n inputSchema: {\n type: 'object',\n properties: {\n direction: {\n type: 'string',\n enum: ['bidirectional', 'to_linear', 'from_linear'],\n description: 'Sync direction',\n },\n },\n },\n },\n {\n name: 'linear_update_task',\n description: 'Update a Linear task status',\n inputSchema: {\n type: 'object',\n properties: {\n issueId: {\n type: 'string',\n description: 'Linear issue ID or identifier (e.g., STA-34)',\n },\n status: {\n type: 'string',\n enum: ['todo', 'in-progress', 'done', 'canceled'],\n description: 'New status for the task',\n },\n title: {\n type: 'string',\n description: 'Update task title (optional)',\n },\n description: {\n type: 'string',\n description: 'Update task description (optional)',\n },\n priority: {\n type: 'number',\n enum: [1, 2, 3, 4],\n description: 'Priority (1=urgent, 2=high, 3=medium, 4=low)',\n },\n },\n required: ['issueId'],\n },\n },\n {\n name: 'linear_get_tasks',\n description: 'Get Linear tasks',\n inputSchema: {\n type: 'object',\n properties: {\n status: {\n type: 'string',\n enum: ['todo', 'in-progress', 'done', 'all'],\n description: 'Filter by status',\n },\n limit: {\n type: 'number',\n description: 'Maximum number of tasks to return',\n },\n },\n },\n },\n {\n name: 'linear_status',\n description: 'Get Linear integration status',\n inputSchema: {\n type: 'object',\n properties: {},\n },\n },\n {\n name: 'get_traces',\n description: 'Get detected traces (bundled tool call sequences)',\n inputSchema: {\n type: 'object',\n properties: {\n type: {\n type: 'string',\n enum: [\n 'search_driven',\n 'error_recovery',\n 'feature_implementation',\n 'refactoring',\n 'testing',\n 'exploration',\n 'debugging',\n 'documentation',\n 'build_deploy',\n 'unknown',\n ],\n description: 'Filter by trace type',\n },\n minScore: {\n type: 'number',\n description: 'Minimum importance score (0-1)',\n },\n limit: {\n type: 'number',\n description: 'Maximum number of traces to return',\n },\n },\n },\n },\n {\n name: 'get_trace_statistics',\n description: 'Get statistics about detected traces',\n inputSchema: {\n type: 'object',\n properties: {},\n },\n },\n {\n name: 'flush_traces',\n description: 'Flush any pending trace and finalize detection',\n inputSchema: {\n type: 'object',\n properties: {},\n },\n },\n {\n name: 'compress_old_traces',\n description: 'Compress traces older than specified hours',\n inputSchema: {\n type: 'object',\n properties: {\n ageHours: {\n type: 'number',\n description: 'Age threshold in hours (default: 24)',\n },\n },\n },\n },\n {\n name: 'smart_context',\n description:\n 'LLM-driven context retrieval - intelligently selects relevant frames based on query',\n inputSchema: {\n type: 'object',\n properties: {\n query: {\n type: 'string',\n description:\n 'Natural language query describing what context you need',\n },\n tokenBudget: {\n type: 'number',\n description:\n 'Maximum tokens to use for context (default: 4000)',\n },\n forceRefresh: {\n type: 'boolean',\n description: 'Force refresh of cached summaries',\n },\n },\n required: ['query'],\n },\n },\n {\n name: 'get_summary',\n description:\n 'Get compressed summary of project memory for analysis',\n inputSchema: {\n type: 'object',\n properties: {\n forceRefresh: {\n type: 'boolean',\n description: 'Force refresh of cached summary',\n },\n },\n },\n },\n // Discovery tools\n {\n name: 'sm_discover',\n description:\n 'Discover relevant files based on current context. Extracts keywords from active frames and searches codebase.',\n inputSchema: {\n type: 'object',\n properties: {\n query: {\n type: 'string',\n description: 'Optional query to focus the discovery',\n },\n depth: {\n type: 'string',\n enum: ['shallow', 'medium', 'deep'],\n description: 'Search depth',\n },\n maxFiles: {\n type: 'number',\n description: 'Maximum files to return',\n },\n },\n },\n },\n {\n name: 'sm_related_files',\n description: 'Find files related to a specific file or concept',\n inputSchema: {\n type: 'object',\n properties: {\n file: {\n type: 'string',\n description: 'File path to find related files for',\n },\n concept: {\n type: 'string',\n description: 'Concept to search for',\n },\n maxFiles: {\n type: 'number',\n description: 'Maximum files to return',\n },\n },\n },\n },\n {\n name: 'sm_session_summary',\n description:\n 'Get summary of current session with active tasks, files, and decisions',\n inputSchema: {\n type: 'object',\n properties: {\n includeFiles: {\n type: 'boolean',\n description: 'Include recently accessed files',\n },\n includeDecisions: {\n type: 'boolean',\n description: 'Include recent decisions',\n },\n },\n },\n },\n {\n name: 'sm_search',\n description:\n 'Search across StackMemory - frames, events, decisions, tasks',\n inputSchema: {\n type: 'object',\n properties: {\n query: {\n type: 'string',\n description: 'Search query',\n },\n scope: {\n type: 'string',\n enum: ['all', 'frames', 'events', 'decisions', 'tasks'],\n description: 'Scope of search',\n },\n limit: {\n type: 'number',\n description: 'Maximum results',\n },\n },\n required: ['query'],\n },\n },\n ],\n };\n }\n );\n\n // Tool execution\n this.server.setRequestHandler(\n z.object({\n method: z.literal('tools/call'),\n params: z.object({\n name: z.string(),\n arguments: z.record(z.unknown()),\n }),\n }),\n async (request) => {\n const { name, arguments: args } = request.params;\n const callId = uuidv4();\n const startTime = Date.now();\n\n // Log tool call event before execution\n const currentFrameId = this.frameManager.getCurrentFrameId();\n if (currentFrameId) {\n this.frameManager.addEvent('tool_call', {\n tool_name: name,\n arguments: args,\n timestamp: startTime,\n });\n }\n\n // Create ToolCall for trace detection\n const toolCall: ToolCall = {\n id: callId,\n tool: name,\n arguments: args,\n timestamp: startTime,\n };\n\n let result;\n let error;\n\n try {\n switch (name) {\n case 'get_context':\n result = await this.handleGetContext(args);\n break;\n\n case 'add_decision':\n result = await this.handleAddDecision(args);\n break;\n\n case 'start_frame':\n result = await this.handleStartFrame(args);\n break;\n\n case 'close_frame':\n result = await this.handleCloseFrame(args);\n break;\n\n case 'add_anchor':\n result = await this.handleAddAnchor(args);\n break;\n\n case 'get_hot_stack':\n result = await this.handleGetHotStack(args);\n break;\n\n case 'create_task':\n result = await this.handleCreateTask(args);\n break;\n\n case 'update_task_status':\n result = await this.handleUpdateTaskStatus(args);\n break;\n\n case 'get_active_tasks':\n result = await this.handleGetActiveTasks(args);\n break;\n\n case 'get_task_metrics':\n result = await this.handleGetTaskMetrics(args);\n break;\n\n case 'add_task_dependency':\n result = await this.handleAddTaskDependency(args);\n break;\n\n case 'linear_sync':\n result = await this.handleLinearSync(args);\n break;\n\n case 'linear_update_task':\n result = await this.handleLinearUpdateTask(args);\n break;\n\n case 'linear_get_tasks':\n result = await this.handleLinearGetTasks(args);\n break;\n\n case 'linear_status':\n result = await this.handleLinearStatus(args);\n break;\n\n case 'get_traces':\n result = await this.handleGetTraces(args);\n break;\n\n case 'get_trace_statistics':\n result = await this.handleGetTraceStatistics(args);\n break;\n\n case 'flush_traces':\n result = await this.handleFlushTraces(args);\n break;\n\n case 'compress_old_traces':\n result = await this.handleCompressOldTraces(args);\n break;\n\n case 'smart_context':\n result = await this.handleSmartContext(args);\n break;\n\n case 'get_summary':\n result = await this.handleGetSummary(args);\n break;\n\n // Discovery tools\n case 'sm_discover':\n result = await this.handleSmDiscover(args);\n break;\n\n case 'sm_related_files':\n result = await this.handleSmRelatedFiles(args);\n break;\n\n case 'sm_session_summary':\n result = await this.handleSmSessionSummary(args);\n break;\n\n case 'sm_search':\n result = await this.handleSmSearch(args);\n break;\n\n default:\n throw new Error(`Unknown tool: ${name}`);\n }\n } catch (err: unknown) {\n error = err instanceof Error ? err : new Error(String(err));\n toolCall.error = error.message;\n throw err;\n } finally {\n const endTime = Date.now();\n\n // Log tool result event after execution (success or failure)\n // Skip for close_frame since the frame no longer exists after closing\n if (currentFrameId && name !== 'close_frame') {\n try {\n this.frameManager.addEvent('tool_result', {\n tool_name: name,\n success: !error,\n result: error ? { error: error.message } : result,\n timestamp: endTime,\n });\n } catch {\n // Frame may have been closed, ignore logging error\n }\n }\n\n // Update tool call with results and add to trace detector\n toolCall.result = error ? undefined : result;\n toolCall.duration = endTime - startTime;\n\n // Extract files affected if available from result or args\n if (args.file_path || args.path) {\n toolCall.filesAffected = [args.file_path || args.path].filter(\n Boolean\n ) as string[];\n } else if ((result as any)?.files) {\n const files = (result as any).files;\n toolCall.filesAffected = Array.isArray(files) ? files : [files];\n }\n\n // Add to trace detector\n this.traceDetector.addToolCall(toolCall);\n }\n\n return result;\n }\n );\n }\n\n private async handleGetContext(args: any) {\n const { query = '', limit = 10 } = args;\n\n // Get relevant contexts\n const contexts = Array.from(this.contexts.values())\n .sort((a, b) => b.importance - a.importance)\n .slice(0, limit);\n\n // Update access counts\n contexts.forEach((ctx) => {\n this.db\n .prepare(\n `\n UPDATE contexts \n SET last_accessed = unixepoch(), \n access_count = access_count + 1\n WHERE id = ?\n `\n )\n .run(ctx.id);\n });\n\n // Format response\n const response = contexts\n .map(\n (ctx) =>\n `[${ctx.type.toUpperCase()}] (importance: ${ctx.importance.toFixed(2)})\\n${ctx.content}`\n )\n .join('\\n\\n---\\n\\n');\n\n // Log for attention tracking\n this.logAttention(query, response);\n\n return {\n content: [\n {\n type: 'text',\n text:\n response ||\n 'No context available yet. Start adding decisions and information!',\n },\n ],\n };\n }\n\n private async handleAddDecision(args: any) {\n const { content, type = 'decision' } = args;\n\n const id = this.addContext(type, content, 0.8);\n\n return {\n content: [\n {\n type: 'text',\n text: `\u2713 Added ${type}: ${content}\\nID: ${id}`,\n },\n ],\n };\n }\n\n private async handleStartFrame(args: unknown) {\n const { name, type, constraints } = validateInput(\n StartFrameSchema,\n args,\n 'start_frame'\n );\n\n const inputs: Record<string, any> = {};\n if (constraints) {\n inputs.constraints = constraints;\n }\n\n const frameId = this.frameManager.createFrame({\n type: type as FrameType,\n name,\n inputs,\n });\n\n // Log event\n this.frameManager.addEvent('user_message', {\n action: 'start_frame',\n name,\n type,\n constraints,\n });\n\n // Add as context\n this.addContext('active_frame', `Active frame: ${name} (${type})`, 0.9);\n\n const stackDepth = this.frameManager.getStackDepth();\n\n return {\n content: [\n {\n type: 'text',\n text: `\uD83D\uDE80 Started ${type}: ${name}\\nFrame ID: ${frameId}\\nStack depth: ${stackDepth}`,\n },\n ],\n };\n }\n\n private async handleCloseFrame(args: any) {\n const { result, outputs } = args;\n const currentFrameId = this.frameManager.getCurrentFrameId();\n\n if (!currentFrameId) {\n return {\n content: [\n {\n type: 'text',\n text: '\u26A0\uFE0F No active frame to close',\n },\n ],\n };\n }\n\n // Log completion event\n this.frameManager.addEvent('assistant_message', {\n action: 'close_frame',\n result,\n outputs,\n });\n\n this.frameManager.closeFrame(currentFrameId, outputs);\n\n const newStackDepth = this.frameManager.getStackDepth();\n\n return {\n content: [\n {\n type: 'text',\n text: `\u2705 Closed frame: ${result || 'completed'}\\nStack depth: ${newStackDepth}`,\n },\n ],\n };\n }\n\n private async handleAddAnchor(args: unknown) {\n const { type, text, priority } = validateInput(\n AddAnchorSchema,\n args,\n 'add_anchor'\n );\n\n const anchorId = this.frameManager.addAnchor(type, text, priority);\n\n // Log anchor creation\n this.frameManager.addEvent('decision', {\n anchor_type: type,\n text,\n priority,\n anchor_id: anchorId,\n });\n\n return {\n content: [\n {\n type: 'text',\n text: `\uD83D\uDCCC Added ${type}: ${text}\\nAnchor ID: ${anchorId}`,\n },\n ],\n };\n }\n\n private async handleGetHotStack(args: any) {\n const { maxEvents = 20 } = args;\n\n const hotStack = this.frameManager.getHotStackContext(maxEvents);\n const activePath = this.frameManager.getActiveFramePath();\n\n if (hotStack.length === 0) {\n return {\n content: [\n {\n type: 'text',\n text: '\uD83D\uDCDA No active frames. Start a frame with start_frame tool.',\n },\n ],\n };\n }\n\n let response = '\uD83D\uDCDA **Active Call Stack:**\\n\\n';\n\n activePath.forEach((frame, index) => {\n const indent = ' '.repeat(index);\n const context = hotStack[index];\n\n response += `${indent}${index + 1}. **${frame.name}** (${frame.type})\\n`;\n\n if (context && context.anchors && context.anchors.length > 0) {\n response += `${indent} \uD83D\uDCCC ${context.anchors.length} anchors\\n`;\n }\n\n if (context && context.recentEvents && context.recentEvents.length > 0) {\n response += `${indent} \uD83D\uDCDD ${context.recentEvents.length} recent events\\n`;\n }\n\n response += '\\n';\n });\n\n response += `**Total stack depth:** ${hotStack.length}`;\n\n // Log stack access\n this.frameManager.addEvent('observation', {\n action: 'get_hot_stack',\n stack_depth: hotStack.length,\n total_anchors: hotStack.reduce(\n (sum, frame) => sum + frame.anchors.length,\n 0\n ),\n total_events: hotStack.reduce(\n (sum, frame) => sum + frame.recentEvents.length,\n 0\n ),\n });\n\n return {\n content: [\n {\n type: 'text',\n text: response,\n },\n ],\n };\n }\n\n private logAttention(query: string, response: string) {\n // Simple attention logging for analysis\n this.db\n .prepare(\n `\n INSERT INTO attention_log (query, response)\n VALUES (?, ?)\n `\n )\n .run(query, response);\n }\n\n private async handleCreateTask(args: unknown) {\n const validated = validateInput(CreateTaskSchema, args, 'create_task');\n const { title, description, priority, tags } = validated;\n const { estimatedEffort, dependsOn } = args as any; // Legacy fields\n const currentFrameId = this.frameManager.getCurrentFrameId();\n\n if (!currentFrameId) {\n return {\n content: [\n {\n type: 'text',\n text: '\u26A0\uFE0F No active frame. Start a frame first with start_frame tool.',\n },\n ],\n };\n }\n\n const taskId = this.taskStore.createTask({\n title,\n description,\n priority: priority as TaskPriority,\n frameId: currentFrameId,\n dependsOn,\n tags,\n estimatedEffort,\n });\n\n // Log task creation event\n this.frameManager.addEvent('decision', {\n action: 'create_task',\n task_id: taskId,\n title,\n priority: priority || 'medium',\n });\n\n return {\n content: [\n {\n type: 'text',\n text: `\u2705 Created task: ${title}\\nID: ${taskId}\\nFrame: ${currentFrameId}\\nStored in: .stackmemory/tasks.jsonl`,\n },\n ],\n };\n }\n\n private async handleUpdateTaskStatus(args: any) {\n const { taskId, status, reason } = args;\n\n try {\n this.taskStore.updateTaskStatus(taskId, status as TaskStatus, reason);\n\n // Log status change event\n this.frameManager.addEvent('observation', {\n action: 'update_task_status',\n task_id: taskId,\n new_status: status,\n reason,\n });\n\n return {\n content: [\n {\n type: 'text',\n text: `\u2705 Updated task ${taskId} to ${status}${reason ? `\\nReason: ${reason}` : ''}`,\n },\n ],\n };\n } catch (error: unknown) {\n return {\n content: [\n {\n type: 'text',\n text: `\u274C Failed to update task: ${error}`,\n },\n ],\n };\n }\n }\n\n private async handleGetActiveTasks(args: any) {\n const { frameId, status, priority, search, limit = 20 } = args;\n let tasks = this.taskStore.getActiveTasks(frameId);\n\n // Apply filters\n if (status) {\n tasks = tasks.filter((t) => t.status === status);\n }\n if (priority) {\n tasks = tasks.filter((t) => t.priority === priority);\n }\n if (search) {\n const searchLower = search.toLowerCase();\n tasks = tasks.filter(\n (t) =>\n t.title.toLowerCase().includes(searchLower) ||\n (t.description && t.description.toLowerCase().includes(searchLower))\n );\n }\n\n // Sort by priority (urgent first) then by created_at\n const priorityOrder = { urgent: 0, high: 1, medium: 2, low: 3 };\n tasks.sort((a, b) => {\n const pa = priorityOrder[a.priority] ?? 2;\n const pb = priorityOrder[b.priority] ?? 2;\n if (pa !== pb) return pa - pb;\n return b.created_at - a.created_at;\n });\n\n // Limit results\n tasks = tasks.slice(0, limit);\n\n if (tasks.length === 0) {\n return {\n content: [\n {\n type: 'text',\n text: search\n ? `\uD83D\uDCDD No tasks matching \"${search}\"`\n : '\uD83D\uDCDD No active tasks found',\n },\n ],\n };\n }\n\n let response = `\uD83D\uDCDD **Tasks** (${tasks.length} found)\\n\\n`;\n tasks.forEach((task) => {\n const priorityIcon =\n { urgent: '\uD83D\uDD34', high: '\uD83D\uDFE0', medium: '\uD83D\uDFE1', low: '\uD83D\uDFE2' }[task.priority] ||\n '\u26AA';\n const statusIcon =\n {\n pending: '\u23F3',\n in_progress: '\uD83D\uDD04',\n completed: '\u2705',\n blocked: '\uD83D\uDEAB',\n cancelled: '\u274C',\n }[task.status] || '\u26AA';\n const effort = task.estimated_effort\n ? ` (~${task.estimated_effort}m)`\n : '';\n\n // Extract Linear ID from title if present\n const linearMatch = task.title.match(/\\[ENG-\\d+\\]/);\n const linearId = linearMatch ? linearMatch[0] : '';\n const title = linearId\n ? task.title.replace(linearId, '').trim()\n : task.title;\n\n response += `${statusIcon} ${priorityIcon} **${linearId || task.id}** ${title}${effort}\\n`;\n if (task.description) {\n const desc = task.description.split('\\n')[0].slice(0, 100);\n response += ` ${desc}${task.description.length > 100 ? '...' : ''}\\n`;\n }\n if (task.tags && task.tags.length > 0) {\n response += ` \uD83C\uDFF7\uFE0F ${task.tags.join(', ')}\\n`;\n }\n response += '\\n';\n });\n\n return {\n content: [\n {\n type: 'text',\n text: response,\n },\n ],\n };\n }\n\n private async handleGetTaskMetrics(_args: any) {\n const metrics = this.taskStore.getMetrics();\n\n let response = '\uD83D\uDCCA **Task Metrics**\\n\\n';\n response += `**Total Tasks:** ${metrics.total_tasks}\\n`;\n response += `**Completion Rate:** ${(metrics.completion_rate * 100).toFixed(1)}%\\n\\n`;\n\n response += '**By Status:**\\n';\n Object.entries(metrics.by_status).forEach(([status, count]) => {\n response += `- ${status}: ${count}\\n`;\n });\n\n response += '\\n**By Priority:**\\n';\n Object.entries(metrics.by_priority).forEach(([priority, count]) => {\n response += `- ${priority}: ${count}\\n`;\n });\n\n if (metrics.blocked_tasks > 0) {\n response += `\\n\u26A0\uFE0F **${metrics.blocked_tasks} blocked tasks**`;\n }\n\n if (metrics.avg_effort_accuracy > 0) {\n response += `\\n\uD83C\uDFAF **Effort Accuracy:** ${(metrics.avg_effort_accuracy * 100).toFixed(1)}%`;\n }\n\n return {\n content: [\n {\n type: 'text',\n text: response,\n },\n ],\n };\n }\n\n private async handleAddTaskDependency(args: any) {\n const { taskId, dependsOnId } = args;\n\n try {\n this.taskStore.addDependency(taskId, dependsOnId);\n\n // Log dependency creation\n this.frameManager.addEvent('decision', {\n action: 'add_task_dependency',\n task_id: taskId,\n depends_on_id: dependsOnId,\n });\n\n return {\n content: [\n {\n type: 'text',\n text: `\uD83D\uDD17 Added dependency: ${taskId} depends on ${dependsOnId}`,\n },\n ],\n };\n } catch (error: unknown) {\n return {\n content: [\n {\n type: 'text',\n text: `\u274C Failed to add dependency: ${error}`,\n },\n ],\n };\n }\n }\n\n // Linear Integration Handlers\n private async handleLinearSync(args: any) {\n try {\n const tokens = this.linearAuthManager.loadTokens();\n\n if (!tokens) {\n return {\n content: [\n {\n type: 'text',\n text: '\u274C Linear not authenticated. Run: stackmemory linear setup',\n },\n ],\n };\n }\n\n const syncConfig = { ...DEFAULT_SYNC_CONFIG, enabled: true };\n if (args.direction) {\n syncConfig.direction = args.direction;\n }\n\n // Update sync engine configuration for this sync\n this.linearSync.updateConfig(syncConfig);\n const result = await this.linearSync.sync();\n\n return {\n content: [\n {\n type: 'text',\n text: `\u2705 Linear sync completed\\n- To Linear: ${result.synced.toLinear} tasks\\n- From Linear: ${result.synced.fromLinear} tasks\\n- Updated: ${result.synced.updated} tasks`,\n },\n ],\n };\n } catch (error: any) {\n return {\n content: [\n {\n type: 'text',\n text: `\u274C Linear sync failed: ${error.message}`,\n },\n ],\n };\n }\n }\n\n private async handleLinearUpdateTask(args: any) {\n try {\n const { LinearClient } = await import('../linear/client.js');\n\n const tokens = this.linearAuthManager.loadTokens();\n\n if (!tokens) {\n return {\n content: [\n {\n type: 'text',\n text: '\u274C Linear not authenticated. Run: stackmemory linear setup',\n },\n ],\n };\n }\n\n const client = new LinearClient({\n apiKey: tokens.accessToken,\n useBearer: true,\n onUnauthorized: async () => {\n const refreshed = await this.linearAuthManager.refreshAccessToken();\n return refreshed.accessToken;\n },\n });\n\n // Find the issue\n let issue = await client.getIssue(args.issueId);\n if (!issue) {\n issue = await client.findIssueByIdentifier(args.issueId);\n }\n\n if (!issue) {\n return {\n content: [\n {\n type: 'text',\n text: `\u274C Linear issue ${args.issueId} not found`,\n },\n ],\n };\n }\n\n const updates: any = {};\n\n // Handle status update\n if (args.status) {\n const team = await client.getTeam();\n const states = await client.getWorkflowStates(team.id);\n\n const statusMap: Record<string, string> = {\n todo: 'unstarted',\n 'in-progress': 'started',\n done: 'completed',\n canceled: 'cancelled',\n };\n\n const targetType = statusMap[args.status] || args.status;\n const targetState = states.find((s: any) => s.type === targetType);\n\n if (!targetState) {\n return {\n content: [\n {\n type: 'text',\n text: `\u274C Invalid status: ${args.status}`,\n },\n ],\n };\n }\n\n updates.stateId = targetState.id;\n }\n\n if (args.title) updates.title = args.title;\n if (args.description) updates.description = args.description;\n if (args.priority) updates.priority = args.priority;\n\n const updatedIssue = await client.updateIssue(issue.id, updates);\n\n // Auto-sync to local tasks after update\n this.linearSync.updateConfig({\n ...DEFAULT_SYNC_CONFIG,\n enabled: true,\n direction: 'from_linear',\n });\n const syncResult = await this.linearSync.sync();\n\n let response = `\u2705 Updated ${updatedIssue.identifier}: ${updatedIssue.title}\\n`;\n if (args.status) {\n response += `Status: ${updatedIssue.state.name}\\n`;\n }\n response += `URL: ${updatedIssue.url}\\n`;\n response += `\\n\uD83D\uDD04 Local sync: ${syncResult.synced.fromLinear} new, ${syncResult.synced.updated} updated`;\n\n return {\n content: [\n {\n type: 'text',\n text: response,\n },\n ],\n };\n } catch (error: any) {\n return {\n content: [\n {\n type: 'text',\n text: `\u274C Failed to update Linear task: ${error.message}`,\n },\n ],\n };\n }\n }\n\n private async handleLinearGetTasks(args: any) {\n try {\n const { LinearClient } = await import('../linear/client.js');\n\n const tokens = this.linearAuthManager.loadTokens();\n\n if (!tokens) {\n return {\n content: [\n {\n type: 'text',\n text: '\u274C Linear not authenticated. Run: stackmemory linear setup',\n },\n ],\n };\n }\n\n const client = new LinearClient({\n apiKey: tokens.accessToken,\n useBearer: true,\n onUnauthorized: async () => {\n const refreshed = await this.linearAuthManager.refreshAccessToken();\n return refreshed.accessToken;\n },\n });\n\n let stateType: any = undefined;\n if (args.status && args.status !== 'all') {\n const statusMap: Record<string, string> = {\n todo: 'unstarted',\n 'in-progress': 'started',\n done: 'completed',\n };\n stateType = statusMap[args.status] || args.status;\n }\n\n const issues = await client.getIssues({\n stateType,\n limit: args.limit || 20,\n });\n\n if (!issues || issues.length === 0) {\n return {\n content: [\n {\n type: 'text',\n text: 'No Linear tasks found',\n },\n ],\n };\n }\n\n let response = `\uD83D\uDCCB **Linear Tasks** (${issues.length} items)\\n\\n`;\n issues.forEach((issue: any) => {\n const priority = issue.priority ? `P${issue.priority}` : '-';\n response += `- **${issue.identifier}**: ${issue.title}\\n`;\n response += ` Status: ${issue.state.name} | Priority: ${priority}\\n`;\n if (issue.assignee) {\n response += ` Assignee: ${issue.assignee.name}\\n`;\n }\n response += ` ${issue.url}\\n\\n`;\n });\n\n return {\n content: [\n {\n type: 'text',\n text: response,\n },\n ],\n };\n } catch (error: any) {\n return {\n content: [\n {\n type: 'text',\n text: `\u274C Failed to get Linear tasks: ${error.message}`,\n },\n ],\n };\n }\n }\n\n private async handleLinearStatus(_args: any) {\n try {\n const { LinearClient } = await import('../linear/client.js');\n\n const tokens = this.linearAuthManager.loadTokens();\n\n if (!tokens) {\n return {\n content: [\n {\n type: 'text',\n text: '\u274C Linear integration not configured\\nRun: stackmemory linear setup',\n },\n ],\n };\n }\n\n try {\n const client = new LinearClient({\n apiKey: tokens.accessToken,\n useBearer: true,\n onUnauthorized: async () => {\n const refreshed = await this.linearAuthManager.refreshAccessToken();\n return refreshed.accessToken;\n },\n });\n\n const viewer = await client.getViewer();\n const team = await client.getTeam();\n\n return {\n content: [\n {\n type: 'text',\n text: `\u2705 **Linear Integration Status**\\n\\nConnected as: ${viewer.name} (${viewer.email})\\nTeam: ${team.name} (${team.key})\\nTokens: Valid`,\n },\n ],\n };\n } catch (error: any) {\n return {\n content: [\n {\n type: 'text',\n text: `\u26A0\uFE0F Linear configured but connection failed: ${error.message}`,\n },\n ],\n };\n }\n } catch (error: any) {\n return {\n content: [\n {\n type: 'text',\n text: `\u274C Linear status check failed: ${error.message}`,\n },\n ],\n };\n }\n }\n\n private async handleGetTraces(args: any) {\n const { type, minScore, limit = 20 } = args;\n\n // Flush pending traces first\n this.traceDetector.flush();\n\n let traces = this.traceDetector.getTraces();\n\n // Apply filters\n if (type) {\n traces = traces.filter((t) => t.type === type);\n }\n\n if (minScore !== undefined) {\n traces = traces.filter((t) => t.score >= minScore);\n }\n\n // Sort by score and limit\n traces = traces.sort((a, b) => b.score - a.score).slice(0, limit);\n\n // Format traces for display\n const formattedTraces = traces.map((trace) => ({\n id: trace.id,\n type: trace.type,\n score: trace.score.toFixed(2),\n summary: trace.summary,\n toolCount: trace.tools.length,\n duration: `${((trace.metadata.endTime - trace.metadata.startTime) / 1000).toFixed(1)}s`,\n filesModified: trace.metadata.filesModified.length,\n hasErrors: trace.metadata.errorsEncountered.length > 0,\n compressed: !!trace.compressed,\n }));\n\n return {\n content: [\n {\n type: 'text',\n text: `Found ${formattedTraces.length} traces:\\n\\n${formattedTraces\n .map(\n (t) =>\n `[${t.type}] Score: ${t.score} | Tools: ${t.toolCount} | Duration: ${t.duration}\\n ${t.summary}`\n )\n .join('\\n\\n')}`,\n },\n ],\n };\n }\n\n private async handleGetTraceStatistics(args: any) {\n this.traceDetector.flush();\n const stats = this.traceDetector.getStatistics();\n\n const typeBreakdown = Object.entries(stats.tracesByType)\n .map(([type, count]) => ` ${type}: ${count}`)\n .join('\\n');\n\n return {\n content: [\n {\n type: 'text',\n text: `**Trace Statistics**\\n\\nTotal Traces: ${stats.totalTraces}\nAverage Score: ${stats.averageScore.toFixed(2)}\nAverage Length: ${stats.averageLength.toFixed(1)} tools\nHigh Importance (>0.7): ${stats.highImportanceCount}\nCompressed: ${stats.compressedCount}\n\n**Trace Types:**\n${typeBreakdown}`,\n },\n ],\n };\n }\n\n private async handleFlushTraces(args: any) {\n this.traceDetector.flush();\n\n return {\n content: [\n {\n type: 'text',\n text: 'Pending traces have been flushed and finalized.',\n },\n ],\n };\n }\n\n private async handleCompressOldTraces(args: any) {\n const { ageHours = 24 } = args;\n\n const compressedCount = this.traceDetector.compressOldTraces(ageHours);\n\n return {\n content: [\n {\n type: 'text',\n text: `Compressed ${compressedCount} traces older than ${ageHours} hours.`,\n },\n ],\n };\n }\n\n private async handleSmartContext(args: any) {\n const { query, tokenBudget = 4000, forceRefresh = false } = args;\n\n try {\n const result = await this.contextRetrieval.retrieveContext(query, {\n tokenBudget,\n forceRefresh,\n });\n\n // Log the retrieval\n const currentFrameId = this.frameManager.getCurrentFrameId();\n if (currentFrameId) {\n this.frameManager.addEvent('observation', {\n action: 'smart_context',\n query,\n framesRetrieved: result.frames.length,\n tokenUsage: result.tokenUsage,\n confidence: result.analysis.confidenceScore,\n });\n }\n\n // Build response with metadata\n let response = result.context;\n response += `\\n\\n---\\n\uD83D\uDCCA **Retrieval Stats**\\n`;\n response += `- Frames included: ${result.frames.length}\\n`;\n response += `- Tokens used: ${result.tokenUsage.used}/${result.tokenUsage.budget}\\n`;\n response += `- Confidence: ${(result.analysis.confidenceScore * 100).toFixed(0)}%\\n`;\n response += `- Time: ${result.metadata.retrievalTimeMs}ms`;\n\n return {\n content: [\n {\n type: 'text',\n text: response,\n },\n ],\n };\n } catch (error: any) {\n return {\n content: [\n {\n type: 'text',\n text: `\u274C Context retrieval failed: ${error.message}`,\n },\n ],\n };\n }\n }\n\n private async handleGetSummary(args: any) {\n const { forceRefresh = false } = args;\n\n try {\n const summary = this.contextRetrieval.getSummary(forceRefresh);\n\n // Format the summary for display\n let response = '\uD83D\uDCCB **Compressed Memory Summary**\\n\\n';\n\n // Recent session\n response += '## Recent Session\\n';\n response += `- Frames: ${summary.recentSession.frames.length}\\n`;\n response += `- Time range: ${new Date(summary.recentSession.timeRange.start).toLocaleString()} - ${new Date(summary.recentSession.timeRange.end).toLocaleString()}\\n`;\n\n if (summary.recentSession.dominantOperations.length > 0) {\n response += `- Dominant ops: ${summary.recentSession.dominantOperations\n .slice(0, 5)\n .map((o) => `${o.operation}(${o.count})`)\n .join(', ')}\\n`;\n }\n\n if (summary.recentSession.filesTouched.length > 0) {\n response += `- Files touched: ${summary.recentSession.filesTouched\n .slice(0, 5)\n .map((f) => f.path)\n .join(', ')}\\n`;\n }\n\n if (summary.recentSession.errorsEncountered.length > 0) {\n response += `- Errors: ${summary.recentSession.errorsEncountered.length}\\n`;\n }\n\n // Historical patterns\n response += '\\n## Historical Patterns\\n';\n response += `- Topic counts: ${Object.keys(summary.historicalPatterns.topicFrameCounts).length} topics\\n`;\n\n if (summary.historicalPatterns.keyDecisions.length > 0) {\n response += `\\n### Key Decisions (${summary.historicalPatterns.keyDecisions.length})\\n`;\n summary.historicalPatterns.keyDecisions.slice(0, 5).forEach((d) => {\n response += `- ${d.text.substring(0, 80)}${d.text.length > 80 ? '...' : ''}\\n`;\n });\n }\n\n if (summary.historicalPatterns.recurringIssues.length > 0) {\n response += `\\n### Recurring Issues (${summary.historicalPatterns.recurringIssues.length})\\n`;\n summary.historicalPatterns.recurringIssues.slice(0, 3).forEach((i) => {\n response += `- ${i.issueType} (${i.occurrenceCount} times)\\n`;\n });\n }\n\n // Queryable indices\n response += '\\n## Available Indices\\n';\n response += `- By time: ${Object.keys(summary.queryableIndices.byTimeframe).length} periods\\n`;\n response += `- By file: ${Object.keys(summary.queryableIndices.byFile).length} files\\n`;\n response += `- By topic: ${Object.keys(summary.queryableIndices.byTopic).length} topics\\n`;\n response += `- By error: ${Object.keys(summary.queryableIndices.byErrorType).length} error types\\n`;\n\n // Stats\n response += `\\n## Stats\\n`;\n response += `- Total frames: ${summary.stats.totalFrames}\\n`;\n response += `- Total anchors: ${summary.stats.totalAnchors}\\n`;\n response += `- Total events: ${summary.stats.totalEvents}\\n`;\n response += `- Generated: ${new Date(summary.generatedAt).toLocaleString()}`;\n\n return {\n content: [\n {\n type: 'text',\n text: response,\n },\n ],\n };\n } catch (error: any) {\n return {\n content: [\n {\n type: 'text',\n text: `\u274C Failed to get summary: ${error.message}`,\n },\n ],\n };\n }\n }\n\n // ============================================\n // Discovery Tools Handlers\n // ============================================\n\n private async handleSmDiscover(args: any) {\n return this.discoveryHandlers.handleDiscover(args);\n }\n\n private async handleSmRelatedFiles(args: any) {\n return this.discoveryHandlers.handleRelatedFiles(args);\n }\n\n private async handleSmSessionSummary(args: any) {\n return this.discoveryHandlers.handleSessionSummary(args);\n }\n\n private async handleSmSearch(args: any) {\n try {\n const { query, scope = 'all', limit = 20 } = args;\n\n if (!query) {\n throw new Error('Query is required');\n }\n\n const results: any[] = [];\n\n // Search frames\n if (scope === 'all' || scope === 'frames') {\n const frames = this.db\n .prepare(\n `\n SELECT frame_id, name, type, created_at, inputs, outputs\n FROM frames\n WHERE project_id = ? AND (name LIKE ? OR inputs LIKE ? OR outputs LIKE ?)\n ORDER BY created_at DESC\n LIMIT ?\n `\n )\n .all(\n this.projectId,\n `%${query}%`,\n `%${query}%`,\n `%${query}%`,\n limit\n ) as any[];\n\n frames.forEach((f) => {\n results.push({\n type: 'frame',\n id: f.frame_id,\n name: f.name,\n frameType: f.type,\n created: new Date(f.created_at * 1000).toISOString(),\n });\n });\n }\n\n // Search events\n if (scope === 'all' || scope === 'events') {\n const events = this.db\n .prepare(\n `\n SELECT e.event_id, e.type, e.data, e.timestamp, f.name as frame_name\n FROM events e\n JOIN frames f ON e.frame_id = f.frame_id\n WHERE f.project_id = ? AND e.data LIKE ?\n ORDER BY e.timestamp DESC\n LIMIT ?\n `\n )\n .all(this.projectId, `%${query}%`, limit) as any[];\n\n events.forEach((e) => {\n results.push({\n type: 'event',\n id: e.event_id,\n eventType: e.type,\n frame: e.frame_name,\n timestamp: new Date(e.timestamp * 1000).toISOString(),\n });\n });\n }\n\n // Search decisions/anchors\n if (scope === 'all' || scope === 'decisions') {\n const anchors = this.db\n .prepare(\n `\n SELECT a.anchor_id, a.type, a.text, a.priority, a.created_at, f.name as frame_name\n FROM anchors a\n JOIN frames f ON a.frame_id = f.frame_id\n WHERE f.project_id = ? AND a.text LIKE ?\n ORDER BY a.created_at DESC\n LIMIT ?\n `\n )\n .all(this.projectId, `%${query}%`, limit) as any[];\n\n anchors.forEach((a) => {\n results.push({\n type: 'decision',\n id: a.anchor_id,\n decisionType: a.type,\n text: a.text,\n priority: a.priority,\n frame: a.frame_name,\n });\n });\n }\n\n // Search tasks\n if (scope === 'all' || scope === 'tasks') {\n try {\n const tasks = this.db\n .prepare(\n `\n SELECT id, title, description, status, priority\n FROM task_cache\n WHERE title LIKE ? OR description LIKE ?\n ORDER BY created_at DESC\n LIMIT ?\n `\n )\n .all(`%${query}%`, `%${query}%`, limit) as any[];\n\n tasks.forEach((t) => {\n results.push({\n type: 'task',\n id: t.id,\n title: t.title,\n status: t.status,\n priority: t.priority,\n });\n });\n } catch {\n // Task table may not exist\n }\n }\n\n // Format results\n let response = `# Search Results for \"${query}\"\\n\\n`;\n response += `Found ${results.length} results\\n\\n`;\n\n const grouped = results.reduce(\n (acc, r) => {\n if (!acc[r.type]) acc[r.type] = [];\n acc[r.type].push(r);\n return acc;\n },\n {} as Record<string, any[]>\n );\n\n for (const [type, items] of Object.entries(grouped)) {\n response += `## ${type.charAt(0).toUpperCase() + type.slice(1)}s (${items.length})\\n`;\n for (const item of items.slice(0, 10)) {\n if (type === 'frame') {\n response += `- [${item.frameType}] ${item.name}\\n`;\n } else if (type === 'decision') {\n response += `- [${item.decisionType}] ${item.text.slice(0, 60)}...\\n`;\n } else if (type === 'task') {\n response += `- [${item.status}] ${item.title}\\n`;\n } else {\n response += `- ${JSON.stringify(item).slice(0, 80)}...\\n`;\n }\n }\n response += '\\n';\n }\n\n return {\n content: [\n {\n type: 'text',\n text: response,\n },\n ],\n metadata: { results, query, scope },\n };\n } catch (error: any) {\n return {\n content: [\n {\n type: 'text',\n text: `\u274C Search failed: ${error.message}`,\n },\n ],\n };\n }\n }\n\n async start() {\n const transport = new StdioServerTransport();\n await this.server.connect(transport);\n console.error('StackMemory MCP Server started');\n }\n}\n\n// Export the class\nexport default LocalStackMemoryMCP;\n\n// Export function to run the server\nexport async function runMCPServer(): Promise<void> {\n const server = new LocalStackMemoryMCP();\n await server.start();\n}\n\n// Start the server\nif (import.meta.url === `file://${process.argv[1]}`) {\n const server = new LocalStackMemoryMCP();\n server.start().catch(console.error);\n}\n"],
|
|
5
|
-
"mappings": "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",
|
|
6
|
-
"names": ["DEFAULT_SYNC_CONFIG"]
|
|
7
|
-
}
|
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"version": 3,
|
|
3
|
-
"sources": ["../../../src/integrations/mcp/tool-definitions-code.ts"],
|
|
4
|
-
"sourcesContent": ["/**\n * Code Execution Tool Definitions for MCP Server\n */\n\nexport const codeExecutionTools = [\n {\n name: 'code.execute',\n description: 'Execute Python, JavaScript, or TypeScript code in a sandboxed environment',\n inputSchema: {\n type: 'object',\n properties: {\n language: {\n type: 'string',\n enum: ['python', 'javascript', 'typescript'],\n description: 'Programming language to execute',\n },\n code: {\n type: 'string',\n description: 'Code to execute',\n },\n workingDirectory: {\n type: 'string',\n description: 'Optional working directory for execution',\n },\n timeout: {\n type: 'number',\n description: 'Execution timeout in milliseconds (default: 30000)',\n },\n force: {\n type: 'boolean',\n description: 'Force execution even if code validation fails',\n },\n },\n required: ['language', 'code'],\n },\n },\n {\n name: 'code.validate',\n description: 'Validate code for potential security issues',\n inputSchema: {\n type: 'object',\n properties: {\n code: {\n type: 'string',\n description: 'Code to validate',\n },\n },\n required: ['code'],\n },\n },\n {\n name: 'code.sandbox_status',\n description: 'Get status of the code execution sandbox',\n inputSchema: {\n type: 'object',\n properties: {},\n },\n },\n {\n name: 'code.clean_sandbox',\n description: 'Clean temporary files from the sandbox',\n inputSchema: {\n type: 'object',\n properties: {},\n },\n },\n];\n\n/**\n * Example of using code execution in restricted mode\n */\nexport const codeOnlyModeExample = `\n# When in code_only mode, Claude can ONLY execute code\n\n## Example Python execution:\n\\`\\`\\`python\nimport numpy as np\nimport matplotlib.pyplot as plt\n\n# Generate data\nx = np.linspace(0, 10, 100)\ny = np.sin(x)\n\n# Create visualization (won't display but will execute)\nplt.plot(x, y)\nplt.title('Sine Wave')\nplt.xlabel('X')\nplt.ylabel('Y')\n\n# Calculate statistics\nmean_y = np.mean(y)\nstd_y = np.std(y)\nprint(f\"Mean: {mean_y:.4f}\")\nprint(f\"Std: {std_y:.4f}\")\n\\`\\`\\`\n\n## Example JavaScript execution:\n\\`\\`\\`javascript\n// Process data\nconst data = Array.from({length: 10}, (_, i) => i ** 2);\n\n// Calculate sum\nconst sum = data.reduce((a, b) => a + b, 0);\nconsole.log('Sum of squares:', sum);\n\n// Async operation\nasync function fetchData() {\n // Simulate API call\n await new Promise(resolve => setTimeout(resolve, 100));\n return { status: 'success', data: [1, 2, 3] };\n}\n\nfetchData().then(result => {\n console.log('Async result:', result);\n});\n\\`\\`\\`\n\n## Benefits of code_only mode:\n1. Safe computational environment\n2. No file system modifications\n3. No network access\n4. Pure problem-solving focus\n5. Ideal for algorithms, data analysis, and mathematical computations\n`;"],
|
|
5
|
-
"mappings": ";;;;AAIO,MAAM,qBAAqB;AAAA,EAChC;AAAA,IACE,MAAM;AAAA,IACN,aAAa;AAAA,IACb,aAAa;AAAA,MACX,MAAM;AAAA,MACN,YAAY;AAAA,QACV,UAAU;AAAA,UACR,MAAM;AAAA,UACN,MAAM,CAAC,UAAU,cAAc,YAAY;AAAA,UAC3C,aAAa;AAAA,QACf;AAAA,QACA,MAAM;AAAA,UACJ,MAAM;AAAA,UACN,aAAa;AAAA,QACf;AAAA,QACA,kBAAkB;AAAA,UAChB,MAAM;AAAA,UACN,aAAa;AAAA,QACf;AAAA,QACA,SAAS;AAAA,UACP,MAAM;AAAA,UACN,aAAa;AAAA,QACf;AAAA,QACA,OAAO;AAAA,UACL,MAAM;AAAA,UACN,aAAa;AAAA,QACf;AAAA,MACF;AAAA,MACA,UAAU,CAAC,YAAY,MAAM;AAAA,IAC/B;AAAA,EACF;AAAA,EACA;AAAA,IACE,MAAM;AAAA,IACN,aAAa;AAAA,IACb,aAAa;AAAA,MACX,MAAM;AAAA,MACN,YAAY;AAAA,QACV,MAAM;AAAA,UACJ,MAAM;AAAA,UACN,aAAa;AAAA,QACf;AAAA,MACF;AAAA,MACA,UAAU,CAAC,MAAM;AAAA,IACnB;AAAA,EACF;AAAA,EACA;AAAA,IACE,MAAM;AAAA,IACN,aAAa;AAAA,IACb,aAAa;AAAA,MACX,MAAM;AAAA,MACN,YAAY,CAAC;AAAA,IACf;AAAA,EACF;AAAA,EACA;AAAA,IACE,MAAM;AAAA,IACN,aAAa;AAAA,IACb,aAAa;AAAA,MACX,MAAM;AAAA,MACN,YAAY,CAAC;AAAA,IACf;AAAA,EACF;AACF;AAKO,MAAM,sBAAsB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;",
|
|
6
|
-
"names": []
|
|
7
|
-
}
|
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"version": 3,
|
|
3
|
-
"sources": ["../../../src/integrations/mcp/tool-definitions.ts"],
|
|
4
|
-
"sourcesContent": ["/**\n * MCP Tool Definitions\n * Centralized tool schema definitions for the MCP server\n */\n\nexport interface MCPToolDefinition {\n name: string;\n description: string;\n inputSchema: {\n type: 'object';\n properties: Record<string, any>;\n required?: string[];\n };\n}\n\nexport class MCPToolDefinitions {\n /**\n * Get all tool definitions\n */\n getAllToolDefinitions(): MCPToolDefinition[] {\n return [\n ...this.getContextTools(),\n ...this.getTaskTools(),\n ...this.getLinearTools(),\n ...this.getTraceTools(),\n ...this.getDiscoveryTools(),\n ];\n }\n\n /**\n * Context management tools\n */\n private getContextTools(): MCPToolDefinition[] {\n return [\n {\n name: 'get_context',\n description: 'Get current project context and active frame information',\n inputSchema: {\n type: 'object',\n properties: {\n query: {\n type: 'string',\n description: 'What you want to know about the current context',\n },\n limit: {\n type: 'number',\n description: 'Max number of contexts to return',\n default: 5,\n },\n },\n },\n },\n {\n name: 'add_decision',\n description: 'Record a decision, constraint, or important information',\n inputSchema: {\n type: 'object',\n properties: {\n content: {\n type: 'string',\n description: 'The decision or information to record',\n },\n type: {\n type: 'string',\n enum: ['decision', 'constraint', 'learning'],\n description: 'Type of information being recorded',\n },\n },\n required: ['content', 'type'],\n },\n },\n {\n name: 'start_frame',\n description: 'Start a new frame (task/subtask) on the call stack',\n inputSchema: {\n type: 'object',\n properties: {\n name: {\n type: 'string',\n description: 'Frame name/goal',\n },\n type: {\n type: 'string',\n enum: [\n 'task',\n 'subtask',\n 'tool_scope',\n 'review',\n 'write',\n 'debug',\n ],\n default: 'task',\n description: 'Type of frame',\n },\n constraints: {\n type: 'array',\n items: { type: 'string' },\n description: 'List of constraints for this frame',\n },\n definitions: {\n type: 'object',\n description: 'Key definitions and context',\n },\n },\n required: ['name'],\n },\n },\n {\n name: 'close_frame',\n description: 'Close current or specified frame with optional summary',\n inputSchema: {\n type: 'object',\n properties: {\n frameId: {\n type: 'string',\n description: 'Frame ID to close (defaults to current)',\n },\n summary: {\n type: 'string',\n description: 'Summary of what was accomplished',\n },\n },\n },\n },\n {\n name: 'add_anchor',\n description:\n 'Add an important fact or decision anchor to current frame',\n inputSchema: {\n type: 'object',\n properties: {\n type: {\n type: 'string',\n enum: [\n 'FACT',\n 'DECISION',\n 'CONSTRAINT',\n 'INTERFACE_CONTRACT',\n 'TODO',\n 'RISK',\n ],\n description: 'Type of anchor',\n },\n text: {\n type: 'string',\n description: 'The anchor content',\n },\n priority: {\n type: 'number',\n minimum: 1,\n maximum: 10,\n default: 5,\n description: 'Priority level (1-10, higher = more important)',\n },\n },\n required: ['type', 'text'],\n },\n },\n {\n name: 'get_hot_stack',\n description: 'Get current hot stack of active frames',\n inputSchema: {\n type: 'object',\n properties: {\n max_events: {\n type: 'number',\n default: 10,\n description: 'Maximum events per frame to include',\n },\n },\n },\n },\n ];\n }\n\n /**\n * Task management tools\n */\n private getTaskTools(): MCPToolDefinition[] {\n return [\n {\n name: 'create_task',\n description: 'Create a new task',\n inputSchema: {\n type: 'object',\n properties: {\n title: {\n type: 'string',\n description: 'Task title',\n },\n description: {\n type: 'string',\n description: 'Task description',\n },\n priority: {\n type: 'string',\n enum: ['low', 'medium', 'high', 'critical'],\n default: 'medium',\n description: 'Task priority',\n },\n tags: {\n type: 'array',\n items: { type: 'string' },\n description: 'Task tags',\n },\n parent_id: {\n type: 'string',\n description: 'Parent task ID for subtasks',\n },\n },\n required: ['title'],\n },\n },\n {\n name: 'update_task_status',\n description: 'Update task status and progress',\n inputSchema: {\n type: 'object',\n properties: {\n task_id: {\n type: 'string',\n description: 'Task ID',\n },\n status: {\n type: 'string',\n enum: [\n 'pending',\n 'in-progress',\n 'blocked',\n 'completed',\n 'cancelled',\n ],\n description: 'New status',\n },\n progress: {\n type: 'number',\n minimum: 0,\n maximum: 100,\n description: 'Progress percentage',\n },\n },\n required: ['task_id', 'status'],\n },\n },\n {\n name: 'get_active_tasks',\n description: 'Get active tasks with optional filtering',\n inputSchema: {\n type: 'object',\n properties: {\n status: {\n type: 'string',\n enum: [\n 'pending',\n 'in-progress',\n 'blocked',\n 'completed',\n 'cancelled',\n ],\n description: 'Filter by status',\n },\n priority: {\n type: 'string',\n enum: ['low', 'medium', 'high', 'critical'],\n description: 'Filter by priority',\n },\n limit: {\n type: 'number',\n default: 20,\n description: 'Maximum tasks to return',\n },\n include_completed: {\n type: 'boolean',\n default: false,\n description: 'Include completed tasks',\n },\n tags: {\n type: 'array',\n items: { type: 'string' },\n description: 'Filter by tags',\n },\n search: {\n type: 'string',\n description: 'Search in title and description',\n },\n },\n },\n },\n {\n name: 'get_task_metrics',\n description: 'Get task analytics and metrics',\n inputSchema: {\n type: 'object',\n properties: {},\n },\n },\n {\n name: 'add_task_dependency',\n description: 'Add dependency between tasks',\n inputSchema: {\n type: 'object',\n properties: {\n task_id: {\n type: 'string',\n description: 'Task that depends on another',\n },\n depends_on: {\n type: 'string',\n description: 'Task that must be completed first',\n },\n dependency_type: {\n type: 'string',\n enum: ['blocks', 'related', 'subtask'],\n default: 'blocks',\n description: 'Type of dependency',\n },\n },\n required: ['task_id', 'depends_on'],\n },\n },\n ];\n }\n\n /**\n * Linear integration tools\n */\n private getLinearTools(): MCPToolDefinition[] {\n return [\n {\n name: 'linear_sync',\n description: 'Sync tasks with Linear issues',\n inputSchema: {\n type: 'object',\n properties: {\n direction: {\n type: 'string',\n enum: ['both', 'from_linear', 'to_linear'],\n default: 'both',\n description: 'Sync direction',\n },\n force: {\n type: 'boolean',\n default: false,\n description: 'Force sync even if no changes',\n },\n },\n },\n },\n {\n name: 'linear_update_task',\n description: 'Update Linear issue directly',\n inputSchema: {\n type: 'object',\n properties: {\n linear_id: {\n type: 'string',\n description: 'Linear issue ID',\n },\n status: {\n type: 'string',\n description: 'New status',\n },\n assignee_id: {\n type: 'string',\n description: 'Assignee user ID',\n },\n priority: {\n type: 'number',\n minimum: 0,\n maximum: 4,\n description:\n 'Priority (0=None, 1=Low, 2=Medium, 3=High, 4=Urgent)',\n },\n labels: {\n type: 'array',\n items: { type: 'string' },\n description: 'Label names to add',\n },\n },\n required: ['linear_id'],\n },\n },\n {\n name: 'linear_get_tasks',\n description: 'Get issues from Linear',\n inputSchema: {\n type: 'object',\n properties: {\n team_id: {\n type: 'string',\n description: 'Filter by team ID',\n },\n assignee_id: {\n type: 'string',\n description: 'Filter by assignee ID',\n },\n state: {\n type: 'string',\n enum: ['active', 'closed', 'all'],\n default: 'active',\n description: 'Issue state filter',\n },\n limit: {\n type: 'number',\n default: 20,\n description: 'Maximum issues to return',\n },\n search: {\n type: 'string',\n description: 'Search query',\n },\n },\n },\n },\n {\n name: 'linear_status',\n description: 'Get Linear integration status',\n inputSchema: {\n type: 'object',\n properties: {},\n },\n },\n ];\n }\n\n /**\n * Trace and debugging tools\n */\n private getTraceTools(): MCPToolDefinition[] {\n return [\n {\n name: 'get_traces',\n description: 'Get execution traces with optional filtering',\n inputSchema: {\n type: 'object',\n properties: {\n limit: {\n type: 'number',\n default: 20,\n description: 'Maximum traces to return',\n },\n pattern: {\n type: 'string',\n description: 'Filter by pattern name',\n },\n start_time: {\n type: 'string',\n format: 'date-time',\n description: 'Filter by start time',\n },\n end_time: {\n type: 'string',\n format: 'date-time',\n description: 'Filter by end time',\n },\n include_context: {\n type: 'boolean',\n default: false,\n description: 'Include full trace context',\n },\n },\n },\n },\n {\n name: 'analyze_traces',\n description: 'Analyze trace patterns for insights',\n inputSchema: {\n type: 'object',\n properties: {\n trace_id: {\n type: 'string',\n description: 'Specific trace to analyze',\n },\n analysis_type: {\n type: 'string',\n enum: ['performance', 'patterns', 'errors'],\n default: 'performance',\n description: 'Type of analysis to perform',\n },\n include_recommendations: {\n type: 'boolean',\n default: true,\n description: 'Include optimization recommendations',\n },\n },\n },\n },\n {\n name: 'start_browser_debug',\n description: 'Start browser debugging session',\n inputSchema: {\n type: 'object',\n properties: {\n url: {\n type: 'string',\n description: 'URL to navigate to',\n },\n headless: {\n type: 'boolean',\n default: false,\n description: 'Run browser in headless mode',\n },\n width: {\n type: 'number',\n default: 1280,\n description: 'Browser width',\n },\n height: {\n type: 'number',\n default: 720,\n description: 'Browser height',\n },\n capture_screenshots: {\n type: 'boolean',\n default: true,\n description: 'Enable screenshot capture',\n },\n },\n required: ['url'],\n },\n },\n {\n name: 'take_screenshot',\n description: 'Take screenshot in browser session',\n inputSchema: {\n type: 'object',\n properties: {\n session_id: {\n type: 'string',\n description: 'Browser session ID',\n },\n selector: {\n type: 'string',\n description: 'CSS selector to screenshot',\n },\n full_page: {\n type: 'boolean',\n default: false,\n description: 'Capture full page',\n },\n },\n required: ['session_id'],\n },\n },\n {\n name: 'execute_script',\n description: 'Execute JavaScript in browser session',\n inputSchema: {\n type: 'object',\n properties: {\n session_id: {\n type: 'string',\n description: 'Browser session ID',\n },\n script: {\n type: 'string',\n description: 'JavaScript code to execute',\n },\n args: {\n type: 'array',\n description: 'Arguments to pass to script',\n },\n },\n required: ['session_id', 'script'],\n },\n },\n {\n name: 'stop_browser_debug',\n description: 'Stop browser debugging session',\n inputSchema: {\n type: 'object',\n properties: {\n session_id: {\n type: 'string',\n description: 'Browser session ID to stop',\n },\n },\n required: ['session_id'],\n },\n },\n ];\n }\n\n /**\n * Discovery and exploration tools\n */\n private getDiscoveryTools(): MCPToolDefinition[] {\n return [\n {\n name: 'sm_discover',\n description:\n 'Discover relevant files based on current context. Extracts keywords from active frames and searches codebase for related files.',\n inputSchema: {\n type: 'object',\n properties: {\n query: {\n type: 'string',\n description: 'Optional query to focus the discovery',\n },\n depth: {\n type: 'string',\n enum: ['shallow', 'medium', 'deep'],\n default: 'medium',\n description:\n 'Search depth - shallow for quick results, deep for thorough exploration',\n },\n includePatterns: {\n type: 'array',\n items: { type: 'string' },\n description: 'File patterns to include (e.g., [\"*.ts\", \"*.md\"])',\n },\n excludePatterns: {\n type: 'array',\n items: { type: 'string' },\n description:\n 'Patterns to exclude (e.g., [\"node_modules\", \"dist\"])',\n },\n maxFiles: {\n type: 'number',\n default: 20,\n description: 'Maximum files to return',\n },\n },\n },\n },\n {\n name: 'sm_related_files',\n description:\n 'Find files related to a specific file or concept. Useful for understanding dependencies and connections.',\n inputSchema: {\n type: 'object',\n properties: {\n file: {\n type: 'string',\n description: 'File path to find related files for',\n },\n concept: {\n type: 'string',\n description: 'Concept or term to find related files for',\n },\n maxFiles: {\n type: 'number',\n default: 10,\n description: 'Maximum files to return',\n },\n },\n },\n },\n {\n name: 'sm_session_summary',\n description:\n 'Get a summary of the current session including active tasks, recent files, and decisions made.',\n inputSchema: {\n type: 'object',\n properties: {\n includeFiles: {\n type: 'boolean',\n default: true,\n description: 'Include list of recently accessed files',\n },\n includeDecisions: {\n type: 'boolean',\n default: true,\n description: 'Include recent decisions and constraints',\n },\n },\n },\n },\n {\n name: 'sm_search',\n description:\n 'Search across StackMemory context - frames, events, decisions, and tasks.',\n inputSchema: {\n type: 'object',\n properties: {\n query: {\n type: 'string',\n description: 'Search query',\n },\n scope: {\n type: 'string',\n enum: ['all', 'frames', 'events', 'decisions', 'tasks'],\n default: 'all',\n description: 'Scope of search',\n },\n limit: {\n type: 'number',\n default: 20,\n description: 'Maximum results to return',\n },\n },\n required: ['query'],\n },\n },\n ];\n }\n\n /**\n * Get tool definition by name\n */\n getToolDefinition(name: string): MCPToolDefinition | undefined {\n return this.getAllToolDefinitions().find((tool: any) => tool.name === name);\n }\n\n /**\n * Get tool names by category\n */\n getToolsByCategory(\n category: 'context' | 'task' | 'linear' | 'trace' | 'discovery'\n ): MCPToolDefinition[] {\n switch (category) {\n case 'context':\n return this.getContextTools();\n case 'task':\n return this.getTaskTools();\n case 'linear':\n return this.getLinearTools();\n case 'trace':\n return this.getTraceTools();\n case 'discovery':\n return this.getDiscoveryTools();\n default:\n return [];\n }\n }\n}\n"],
|
|
5
|
-
"mappings": "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",
|
|
6
|
-
"names": []
|
|
7
|
-
}
|
|
@@ -1,48 +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 LocalStackMemoryMCP from "./server";
|
|
6
|
-
async function testTraceIntegration() {
|
|
7
|
-
console.log("\u{1F9EA} Testing Trace Detection in MCP Server\n");
|
|
8
|
-
const mockServer = {
|
|
9
|
-
setRequestHandler: () => {
|
|
10
|
-
},
|
|
11
|
-
connect: () => Promise.resolve()
|
|
12
|
-
};
|
|
13
|
-
const MCPClass = LocalStackMemoryMCP;
|
|
14
|
-
const mcp = new MCPClass();
|
|
15
|
-
console.log("\u{1F4CB} Simulating tool calls:");
|
|
16
|
-
const baseTime = Date.now();
|
|
17
|
-
mcp.traceDetector.addToolCall({
|
|
18
|
-
id: "1",
|
|
19
|
-
tool: "get_context",
|
|
20
|
-
timestamp: baseTime,
|
|
21
|
-
arguments: { query: "authentication" }
|
|
22
|
-
});
|
|
23
|
-
console.log(" \u2713 Added get_context");
|
|
24
|
-
mcp.traceDetector.addToolCall({
|
|
25
|
-
id: "2",
|
|
26
|
-
tool: "add_decision",
|
|
27
|
-
timestamp: baseTime + 1e3,
|
|
28
|
-
arguments: { content: "Use JWT tokens", type: "decision" }
|
|
29
|
-
});
|
|
30
|
-
console.log(" \u2713 Added add_decision");
|
|
31
|
-
mcp.traceDetector.addToolCall({
|
|
32
|
-
id: "3",
|
|
33
|
-
tool: "start_frame",
|
|
34
|
-
timestamp: baseTime + 2e3,
|
|
35
|
-
arguments: { name: "implement-auth" }
|
|
36
|
-
});
|
|
37
|
-
console.log(" \u2713 Added start_frame");
|
|
38
|
-
mcp.traceDetector.flush();
|
|
39
|
-
const stats = await mcp.handleGetTraceStatistics({});
|
|
40
|
-
console.log("\n\u{1F4CA} Trace Statistics:");
|
|
41
|
-
console.log(stats.content[0].text);
|
|
42
|
-
const traces = await mcp.handleGetTraces({ limit: 10 });
|
|
43
|
-
console.log("\n\u{1F4DD} Detected Traces:");
|
|
44
|
-
console.log(traces.content[0].text);
|
|
45
|
-
console.log("\n\u2705 MCP Trace Integration Test Complete!");
|
|
46
|
-
}
|
|
47
|
-
testTraceIntegration().catch(console.error);
|
|
48
|
-
//# sourceMappingURL=trace-test.js.map
|
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"version": 3,
|
|
3
|
-
"sources": ["../../../src/integrations/mcp/trace-test.ts"],
|
|
4
|
-
"sourcesContent": ["/**\n * Test the trace detection integration with MCP server\n */\n\nimport LocalStackMemoryMCP from './server';\nimport { Server } from '@modelcontextprotocol/sdk/server/index.js';\n\nasync function testTraceIntegration() {\n console.log('\uD83E\uDDEA Testing Trace Detection in MCP Server\\n');\n\n // Mock minimal server setup\n const mockServer = {\n setRequestHandler: () => {},\n connect: () => Promise.resolve(),\n } as any;\n\n // Access the private methods through prototype\n const MCPClass = LocalStackMemoryMCP as any;\n const mcp = new MCPClass();\n\n // Simulate tool calls directly on the trace detector\n console.log('\uD83D\uDCCB Simulating tool calls:');\n\n // Simulate a search-driven trace\n const baseTime = Date.now();\n mcp.traceDetector.addToolCall({\n id: '1',\n tool: 'get_context',\n timestamp: baseTime,\n arguments: { query: 'authentication' },\n });\n console.log(' \u2713 Added get_context');\n\n mcp.traceDetector.addToolCall({\n id: '2',\n tool: 'add_decision',\n timestamp: baseTime + 1000,\n arguments: { content: 'Use JWT tokens', type: 'decision' },\n });\n console.log(' \u2713 Added add_decision');\n\n mcp.traceDetector.addToolCall({\n id: '3',\n tool: 'start_frame',\n timestamp: baseTime + 2000,\n arguments: { name: 'implement-auth' },\n });\n console.log(' \u2713 Added start_frame');\n\n // Flush traces\n mcp.traceDetector.flush();\n\n // Get statistics\n const stats = await mcp.handleGetTraceStatistics({});\n console.log('\\n\uD83D\uDCCA Trace Statistics:');\n console.log(stats.content[0].text);\n\n // Get traces\n const traces = await mcp.handleGetTraces({ limit: 10 });\n console.log('\\n\uD83D\uDCDD Detected Traces:');\n console.log(traces.content[0].text);\n\n console.log('\\n\u2705 MCP Trace Integration Test Complete!');\n}\n\n// Run the test\ntestTraceIntegration().catch(console.error);\n"],
|
|
5
|
-
"mappings": ";;;;AAIA,OAAO,yBAAyB;AAGhC,eAAe,uBAAuB;AACpC,UAAQ,IAAI,mDAA4C;AAGxD,QAAM,aAAa;AAAA,IACjB,mBAAmB,MAAM;AAAA,IAAC;AAAA,IAC1B,SAAS,MAAM,QAAQ,QAAQ;AAAA,EACjC;AAGA,QAAM,WAAW;AACjB,QAAM,MAAM,IAAI,SAAS;AAGzB,UAAQ,IAAI,kCAA2B;AAGvC,QAAM,WAAW,KAAK,IAAI;AAC1B,MAAI,cAAc,YAAY;AAAA,IAC5B,IAAI;AAAA,IACJ,MAAM;AAAA,IACN,WAAW;AAAA,IACX,WAAW,EAAE,OAAO,iBAAiB;AAAA,EACvC,CAAC;AACD,UAAQ,IAAI,4BAAuB;AAEnC,MAAI,cAAc,YAAY;AAAA,IAC5B,IAAI;AAAA,IACJ,MAAM;AAAA,IACN,WAAW,WAAW;AAAA,IACtB,WAAW,EAAE,SAAS,kBAAkB,MAAM,WAAW;AAAA,EAC3D,CAAC;AACD,UAAQ,IAAI,6BAAwB;AAEpC,MAAI,cAAc,YAAY;AAAA,IAC5B,IAAI;AAAA,IACJ,MAAM;AAAA,IACN,WAAW,WAAW;AAAA,IACtB,WAAW,EAAE,MAAM,iBAAiB;AAAA,EACtC,CAAC;AACD,UAAQ,IAAI,4BAAuB;AAGnC,MAAI,cAAc,MAAM;AAGxB,QAAM,QAAQ,MAAM,IAAI,yBAAyB,CAAC,CAAC;AACnD,UAAQ,IAAI,+BAAwB;AACpC,UAAQ,IAAI,MAAM,QAAQ,CAAC,EAAE,IAAI;AAGjC,QAAM,SAAS,MAAM,IAAI,gBAAgB,EAAE,OAAO,GAAG,CAAC;AACtD,UAAQ,IAAI,8BAAuB;AACnC,UAAQ,IAAI,OAAO,QAAQ,CAAC,EAAE,IAAI;AAElC,UAAQ,IAAI,+CAA0C;AACxD;AAGA,qBAAqB,EAAE,MAAM,QAAQ,KAAK;",
|
|
6
|
-
"names": []
|
|
7
|
-
}
|
|
@@ -1,189 +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 { logger } from "../../core/monitoring/logger.js";
|
|
6
|
-
import crypto from "crypto";
|
|
7
|
-
function getEnv(key, defaultValue) {
|
|
8
|
-
const value = process.env[key];
|
|
9
|
-
if (value === void 0) {
|
|
10
|
-
if (defaultValue !== void 0) return defaultValue;
|
|
11
|
-
throw new Error(`Environment variable ${key} is required`);
|
|
12
|
-
}
|
|
13
|
-
return value;
|
|
14
|
-
}
|
|
15
|
-
function getOptionalEnv(key) {
|
|
16
|
-
return process.env[key];
|
|
17
|
-
}
|
|
18
|
-
class OpenAIEmbeddingProvider {
|
|
19
|
-
apiKey;
|
|
20
|
-
model;
|
|
21
|
-
dimensions;
|
|
22
|
-
constructor(model = "text-embedding-ada-002") {
|
|
23
|
-
this.apiKey = process.env["OPENAI_API_KEY"];
|
|
24
|
-
this.model = model;
|
|
25
|
-
this.dimensions = model === "text-embedding-ada-002" ? 1536 : 3072;
|
|
26
|
-
}
|
|
27
|
-
async createEmbedding(text) {
|
|
28
|
-
if (!this.apiKey) {
|
|
29
|
-
throw new Error("OPENAI_API_KEY environment variable is not set");
|
|
30
|
-
}
|
|
31
|
-
try {
|
|
32
|
-
const response = await fetch("https://api.openai.com/v1/embeddings", {
|
|
33
|
-
method: "POST",
|
|
34
|
-
headers: {
|
|
35
|
-
"Content-Type": "application/json",
|
|
36
|
-
Authorization: `Bearer ${this.apiKey}`
|
|
37
|
-
},
|
|
38
|
-
body: JSON.stringify({
|
|
39
|
-
input: text,
|
|
40
|
-
model: this.model
|
|
41
|
-
})
|
|
42
|
-
});
|
|
43
|
-
if (!response.ok) {
|
|
44
|
-
throw new Error(`OpenAI API error: ${response.statusText}`);
|
|
45
|
-
}
|
|
46
|
-
const data = await response.json();
|
|
47
|
-
return data.data[0].embedding;
|
|
48
|
-
} catch (error) {
|
|
49
|
-
logger.error(
|
|
50
|
-
"Failed to create OpenAI embedding",
|
|
51
|
-
error instanceof Error ? error : new Error(String(error))
|
|
52
|
-
);
|
|
53
|
-
throw error;
|
|
54
|
-
}
|
|
55
|
-
}
|
|
56
|
-
getDimensions() {
|
|
57
|
-
return this.dimensions;
|
|
58
|
-
}
|
|
59
|
-
getName() {
|
|
60
|
-
return `OpenAI-${this.model}`;
|
|
61
|
-
}
|
|
62
|
-
}
|
|
63
|
-
class LocalEmbeddingProvider {
|
|
64
|
-
dimensions;
|
|
65
|
-
vocabulary = /* @__PURE__ */ new Map();
|
|
66
|
-
idf = /* @__PURE__ */ new Map();
|
|
67
|
-
documentCount = 0;
|
|
68
|
-
constructor(dimensions = 384) {
|
|
69
|
-
this.dimensions = dimensions;
|
|
70
|
-
}
|
|
71
|
-
tokenize(text) {
|
|
72
|
-
return text.toLowerCase().replace(/[^\w\s]/g, " ").split(/\s+/).filter((token) => token.length > 2);
|
|
73
|
-
}
|
|
74
|
-
getWordVector(word) {
|
|
75
|
-
const hash = crypto.createHash("sha256").update(word).digest();
|
|
76
|
-
const vector = new Array(this.dimensions).fill(0);
|
|
77
|
-
for (let i = 0; i < Math.min(hash.length, this.dimensions); i++) {
|
|
78
|
-
const value = (hash[i] - 128) / 128;
|
|
79
|
-
vector[i] = value;
|
|
80
|
-
}
|
|
81
|
-
return vector;
|
|
82
|
-
}
|
|
83
|
-
async createEmbedding(text) {
|
|
84
|
-
const tokens = this.tokenize(text);
|
|
85
|
-
const vector = new Array(this.dimensions).fill(0);
|
|
86
|
-
if (tokens.length === 0) {
|
|
87
|
-
return vector;
|
|
88
|
-
}
|
|
89
|
-
const termFreq = /* @__PURE__ */ new Map();
|
|
90
|
-
for (const token of tokens) {
|
|
91
|
-
termFreq.set(token, (termFreq.get(token) || 0) + 1);
|
|
92
|
-
}
|
|
93
|
-
this.documentCount++;
|
|
94
|
-
for (const token of new Set(tokens)) {
|
|
95
|
-
if (!this.vocabulary.has(token)) {
|
|
96
|
-
this.vocabulary.set(token, this.vocabulary.size);
|
|
97
|
-
}
|
|
98
|
-
this.idf.set(token, (this.idf.get(token) || 0) + 1);
|
|
99
|
-
}
|
|
100
|
-
let totalWeight = 0;
|
|
101
|
-
for (const [token, freq] of termFreq.entries()) {
|
|
102
|
-
const tf = freq / tokens.length;
|
|
103
|
-
const docFreq = this.idf.get(token) || 1;
|
|
104
|
-
const idf = Math.log((this.documentCount + 1) / (docFreq + 1));
|
|
105
|
-
const weight = tf * idf;
|
|
106
|
-
const wordVector = this.getWordVector(token);
|
|
107
|
-
for (let i = 0; i < this.dimensions; i++) {
|
|
108
|
-
vector[i] += wordVector[i] * weight;
|
|
109
|
-
}
|
|
110
|
-
totalWeight += weight;
|
|
111
|
-
}
|
|
112
|
-
if (totalWeight > 0) {
|
|
113
|
-
const magnitude = Math.sqrt(
|
|
114
|
-
vector.reduce((sum, val) => sum + val * val, 0)
|
|
115
|
-
);
|
|
116
|
-
if (magnitude > 0) {
|
|
117
|
-
for (let i = 0; i < this.dimensions; i++) {
|
|
118
|
-
vector[i] /= magnitude;
|
|
119
|
-
}
|
|
120
|
-
}
|
|
121
|
-
}
|
|
122
|
-
return vector;
|
|
123
|
-
}
|
|
124
|
-
getDimensions() {
|
|
125
|
-
return this.dimensions;
|
|
126
|
-
}
|
|
127
|
-
getName() {
|
|
128
|
-
return "Local-TFIDF";
|
|
129
|
-
}
|
|
130
|
-
}
|
|
131
|
-
class HybridEmbeddingProvider {
|
|
132
|
-
openai;
|
|
133
|
-
local;
|
|
134
|
-
useOpenAI;
|
|
135
|
-
constructor(dimensions = 1536) {
|
|
136
|
-
this.openai = new OpenAIEmbeddingProvider();
|
|
137
|
-
this.local = new LocalEmbeddingProvider(dimensions);
|
|
138
|
-
this.useOpenAI = !!process.env["OPENAI_API_KEY"];
|
|
139
|
-
if (!this.useOpenAI) {
|
|
140
|
-
logger.warn("OPENAI_API_KEY not set, using local embeddings");
|
|
141
|
-
}
|
|
142
|
-
}
|
|
143
|
-
async createEmbedding(text) {
|
|
144
|
-
if (this.useOpenAI) {
|
|
145
|
-
try {
|
|
146
|
-
return await this.openai.createEmbedding(text);
|
|
147
|
-
} catch (error) {
|
|
148
|
-
logger.warn(
|
|
149
|
-
"OpenAI embedding failed, falling back to local",
|
|
150
|
-
error instanceof Error ? error : void 0
|
|
151
|
-
);
|
|
152
|
-
this.useOpenAI = false;
|
|
153
|
-
}
|
|
154
|
-
}
|
|
155
|
-
const localEmbedding = await this.local.createEmbedding(text);
|
|
156
|
-
const targetDimensions = this.getDimensions();
|
|
157
|
-
if (localEmbedding.length < targetDimensions) {
|
|
158
|
-
return [
|
|
159
|
-
...localEmbedding,
|
|
160
|
-
...new Array(targetDimensions - localEmbedding.length).fill(0)
|
|
161
|
-
];
|
|
162
|
-
}
|
|
163
|
-
return localEmbedding.slice(0, targetDimensions);
|
|
164
|
-
}
|
|
165
|
-
getDimensions() {
|
|
166
|
-
return this.useOpenAI ? this.openai.getDimensions() : this.local.getDimensions();
|
|
167
|
-
}
|
|
168
|
-
getName() {
|
|
169
|
-
return this.useOpenAI ? this.openai.getName() : `Hybrid-${this.local.getName()}`;
|
|
170
|
-
}
|
|
171
|
-
}
|
|
172
|
-
function createEmbeddingProvider(type) {
|
|
173
|
-
switch (type) {
|
|
174
|
-
case "openai":
|
|
175
|
-
return new OpenAIEmbeddingProvider();
|
|
176
|
-
case "local":
|
|
177
|
-
return new LocalEmbeddingProvider();
|
|
178
|
-
case "hybrid":
|
|
179
|
-
default:
|
|
180
|
-
return new HybridEmbeddingProvider();
|
|
181
|
-
}
|
|
182
|
-
}
|
|
183
|
-
export {
|
|
184
|
-
HybridEmbeddingProvider,
|
|
185
|
-
LocalEmbeddingProvider,
|
|
186
|
-
OpenAIEmbeddingProvider,
|
|
187
|
-
createEmbeddingProvider
|
|
188
|
-
};
|
|
189
|
-
//# sourceMappingURL=embedding-provider.js.map
|