@stackmemoryai/stackmemory 0.5.5 → 0.5.7
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/dist/agents/core/agent-task-manager.js +4 -0
- package/dist/agents/core/agent-task-manager.js.map +1 -1
- package/dist/agents/testing-agent.js +4 -0
- package/dist/agents/testing-agent.js.map +1 -1
- package/dist/agents/verifiers/base-verifier.js +4 -0
- package/dist/agents/verifiers/base-verifier.js.map +1 -1
- package/dist/agents/verifiers/formatter-verifier.js +4 -0
- package/dist/agents/verifiers/formatter-verifier.js.map +1 -1
- package/dist/agents/verifiers/llm-judge.js +4 -0
- package/dist/agents/verifiers/llm-judge.js.map +1 -1
- package/dist/cli/auto-detect.js +4 -0
- package/dist/cli/auto-detect.js.map +1 -1
- package/dist/cli/browser-test.js +4 -0
- package/dist/cli/browser-test.js.map +1 -1
- package/dist/cli/claude-sm-danger.js +4 -3
- package/dist/cli/claude-sm-danger.js.map +2 -2
- package/dist/cli/claude-sm.js +4 -0
- package/dist/cli/claude-sm.js.map +2 -2
- package/dist/cli/codex-sm.js +4 -0
- package/dist/cli/codex-sm.js.map +1 -1
- package/dist/cli/commands/api.js +4 -0
- package/dist/cli/commands/api.js.map +1 -1
- package/dist/cli/commands/auto-background.js +180 -0
- package/dist/cli/commands/auto-background.js.map +7 -0
- package/dist/cli/commands/cleanup-processes.js +4 -0
- package/dist/cli/commands/cleanup-processes.js.map +1 -1
- package/dist/cli/commands/clear.js +4 -0
- package/dist/cli/commands/clear.js.map +1 -1
- package/dist/cli/commands/config.js +4 -0
- package/dist/cli/commands/config.js.map +1 -1
- package/dist/cli/commands/context-rehydrate.js +4 -0
- package/dist/cli/commands/context-rehydrate.js.map +1 -1
- package/dist/cli/commands/context.js +4 -0
- package/dist/cli/commands/context.js.map +1 -1
- package/dist/cli/commands/dashboard.js +4 -0
- package/dist/cli/commands/dashboard.js.map +1 -1
- package/dist/cli/commands/db.js +4 -0
- package/dist/cli/commands/db.js.map +1 -1
- package/dist/cli/commands/decision.js +4 -0
- package/dist/cli/commands/decision.js.map +1 -1
- package/dist/cli/commands/handoff.js +4 -0
- package/dist/cli/commands/handoff.js.map +1 -1
- package/dist/cli/commands/hooks.js +4 -0
- package/dist/cli/commands/hooks.js.map +1 -1
- package/dist/cli/commands/linear-unified.js +4 -0
- package/dist/cli/commands/linear-unified.js.map +1 -1
- package/dist/cli/commands/linear.js +4 -0
- package/dist/cli/commands/linear.js.map +1 -1
- package/dist/cli/commands/log.js +4 -0
- package/dist/cli/commands/log.js.map +1 -1
- package/dist/cli/commands/login.js +4 -0
- package/dist/cli/commands/login.js.map +1 -1
- package/dist/cli/commands/migrate.js +4 -0
- package/dist/cli/commands/migrate.js.map +1 -1
- package/dist/cli/commands/monitor.js +4 -0
- package/dist/cli/commands/monitor.js.map +1 -1
- package/dist/cli/commands/onboard.js +4 -0
- package/dist/cli/commands/onboard.js.map +1 -1
- package/dist/cli/commands/projects.js +4 -0
- package/dist/cli/commands/projects.js.map +1 -1
- package/dist/cli/commands/quality.js +4 -0
- package/dist/cli/commands/quality.js.map +1 -1
- package/dist/cli/commands/ralph.js +4 -0
- package/dist/cli/commands/ralph.js.map +1 -1
- package/dist/cli/commands/search.js +4 -0
- package/dist/cli/commands/search.js.map +1 -1
- package/dist/cli/commands/service.js +4 -0
- package/dist/cli/commands/service.js.map +1 -1
- package/dist/cli/commands/session.js +4 -0
- package/dist/cli/commands/session.js.map +1 -1
- package/dist/cli/commands/shell.js +5 -4
- package/dist/cli/commands/shell.js.map +2 -2
- package/dist/cli/commands/signup.js +4 -0
- package/dist/cli/commands/signup.js.map +1 -1
- package/dist/cli/commands/skills.js +4 -0
- package/dist/cli/commands/skills.js.map +1 -1
- package/dist/cli/commands/storage-tier.js +4 -0
- package/dist/cli/commands/storage-tier.js.map +1 -1
- package/dist/cli/commands/storage.js +4 -0
- package/dist/cli/commands/storage.js.map +1 -1
- package/dist/cli/commands/sweep.js +5 -4
- package/dist/cli/commands/sweep.js.map +2 -2
- package/dist/cli/commands/tasks.js +4 -0
- package/dist/cli/commands/tasks.js.map +1 -1
- package/dist/cli/commands/test.js +4 -0
- package/dist/cli/commands/test.js.map +1 -1
- package/dist/cli/commands/workflow.js +4 -0
- package/dist/cli/commands/workflow.js.map +1 -1
- package/dist/cli/commands/worktree.js +4 -0
- package/dist/cli/commands/worktree.js.map +1 -1
- package/dist/cli/index.js +6 -0
- package/dist/cli/index.js.map +2 -2
- package/dist/cli/utils/viewer.js +4 -0
- package/dist/cli/utils/viewer.js.map +1 -1
- package/dist/core/analytics/team-analytics.js +4 -0
- package/dist/core/analytics/team-analytics.js.map +1 -1
- package/dist/core/config/config-manager.js +4 -0
- package/dist/core/config/config-manager.js.map +1 -1
- package/dist/core/config/storage-config.js +4 -0
- package/dist/core/config/storage-config.js.map +1 -1
- package/dist/core/config/types.js +4 -0
- package/dist/core/config/types.js.map +1 -1
- package/dist/core/context/auto-context.js +4 -0
- package/dist/core/context/auto-context.js.map +1 -1
- package/dist/core/context/compaction-handler.js +4 -0
- package/dist/core/context/compaction-handler.js.map +1 -1
- package/dist/core/context/context-bridge.js +4 -0
- package/dist/core/context/context-bridge.js.map +1 -1
- package/dist/core/context/dual-stack-manager.js +4 -0
- package/dist/core/context/dual-stack-manager.js.map +1 -1
- package/dist/core/context/enhanced-rehydration.js +4 -0
- package/dist/core/context/enhanced-rehydration.js.map +1 -1
- package/dist/core/context/frame-database.js +4 -0
- package/dist/core/context/frame-database.js.map +1 -1
- package/dist/core/context/frame-digest.js +4 -0
- package/dist/core/context/frame-digest.js.map +1 -1
- package/dist/core/context/frame-handoff-manager.js +4 -0
- package/dist/core/context/frame-handoff-manager.js.map +1 -1
- package/dist/core/context/frame-manager.js +4 -0
- package/dist/core/context/frame-manager.js.map +1 -1
- package/dist/core/context/frame-stack.js +4 -0
- package/dist/core/context/frame-stack.js.map +1 -1
- package/dist/core/context/frame-types.js +4 -0
- package/dist/core/context/incremental-gc.js +4 -0
- package/dist/core/context/incremental-gc.js.map +1 -1
- package/dist/core/context/index.js +4 -0
- package/dist/core/context/index.js.map +1 -1
- package/dist/core/context/model-aware-compaction.js +4 -0
- package/dist/core/context/model-aware-compaction.js.map +1 -1
- package/dist/core/context/permission-manager.js +4 -0
- package/dist/core/context/permission-manager.js.map +1 -1
- package/dist/core/context/recursive-context-manager.js +4 -0
- package/dist/core/context/recursive-context-manager.js.map +1 -1
- package/dist/core/context/refactored-frame-manager.js +4 -0
- package/dist/core/context/refactored-frame-manager.js.map +1 -1
- package/dist/core/context/shared-context-layer.js +4 -0
- package/dist/core/context/shared-context-layer.js.map +1 -1
- package/dist/core/context/stack-merge-resolver.js +4 -0
- package/dist/core/context/stack-merge-resolver.js.map +1 -1
- package/dist/core/context/validation.js +4 -0
- package/dist/core/context/validation.js.map +1 -1
- package/dist/core/database/batch-operations.js +4 -0
- package/dist/core/database/batch-operations.js.map +1 -1
- package/dist/core/database/connection-pool.js +4 -0
- package/dist/core/database/connection-pool.js.map +1 -1
- package/dist/core/database/database-adapter.js +4 -0
- package/dist/core/database/database-adapter.js.map +1 -1
- package/dist/core/database/migration-manager.js +4 -0
- package/dist/core/database/migration-manager.js.map +1 -1
- package/dist/core/database/paradedb-adapter.js +4 -0
- package/dist/core/database/paradedb-adapter.js.map +1 -1
- package/dist/core/database/query-cache.js +4 -0
- package/dist/core/database/query-cache.js.map +1 -1
- package/dist/core/database/query-router.js +4 -0
- package/dist/core/database/query-router.js.map +1 -1
- package/dist/core/database/sqlite-adapter.js +4 -0
- package/dist/core/database/sqlite-adapter.js.map +1 -1
- package/dist/core/digest/enhanced-hybrid-digest.js +4 -0
- package/dist/core/digest/enhanced-hybrid-digest.js.map +1 -1
- package/dist/core/digest/frame-digest-integration.js +4 -0
- package/dist/core/digest/frame-digest-integration.js.map +1 -1
- package/dist/core/digest/hybrid-digest-generator.js +4 -0
- package/dist/core/digest/hybrid-digest-generator.js.map +1 -1
- package/dist/core/digest/index.js +4 -0
- package/dist/core/digest/index.js.map +1 -1
- package/dist/core/digest/types.js +4 -0
- package/dist/core/digest/types.js.map +1 -1
- package/dist/core/errors/index.js +4 -0
- package/dist/core/errors/index.js.map +1 -1
- package/dist/core/errors/recovery.js +4 -0
- package/dist/core/errors/recovery.js.map +1 -1
- package/dist/core/execution/parallel-executor.js +4 -0
- package/dist/core/execution/parallel-executor.js.map +1 -1
- package/dist/core/frame/workflow-templates.js +4 -0
- package/dist/core/frame/workflow-templates.js.map +1 -1
- package/dist/core/merge/conflict-detector.js +4 -0
- package/dist/core/merge/conflict-detector.js.map +1 -1
- package/dist/core/merge/index.js +4 -0
- package/dist/core/merge/index.js.map +1 -1
- package/dist/core/merge/resolution-engine.js +4 -0
- package/dist/core/merge/resolution-engine.js.map +1 -1
- package/dist/core/merge/stack-diff.js +4 -0
- package/dist/core/merge/stack-diff.js.map +1 -1
- package/dist/core/merge/types.js +4 -0
- package/dist/core/monitoring/error-handler.js +4 -0
- package/dist/core/monitoring/error-handler.js.map +1 -1
- package/dist/core/monitoring/logger.js +4 -0
- package/dist/core/monitoring/logger.js.map +1 -1
- package/dist/core/monitoring/metrics.js +4 -0
- package/dist/core/monitoring/metrics.js.map +1 -1
- package/dist/core/monitoring/progress-tracker.js +4 -0
- package/dist/core/monitoring/progress-tracker.js.map +1 -1
- package/dist/core/monitoring/session-monitor.js +4 -0
- package/dist/core/monitoring/session-monitor.js.map +1 -1
- package/dist/core/performance/context-cache.js +4 -0
- package/dist/core/performance/context-cache.js.map +1 -1
- package/dist/core/performance/index.js +4 -0
- package/dist/core/performance/index.js.map +1 -1
- package/dist/core/performance/lazy-context-loader.js +4 -0
- package/dist/core/performance/lazy-context-loader.js.map +1 -1
- package/dist/core/performance/monitor.js +4 -0
- package/dist/core/performance/monitor.js.map +1 -1
- package/dist/core/performance/optimized-frame-context.js +4 -0
- package/dist/core/performance/optimized-frame-context.js.map +1 -1
- package/dist/core/performance/performance-benchmark.js +4 -0
- package/dist/core/performance/performance-benchmark.js.map +1 -1
- package/dist/core/performance/performance-profiler.js +4 -0
- package/dist/core/performance/performance-profiler.js.map +1 -1
- package/dist/core/performance/streaming-jsonl-parser.js +4 -0
- package/dist/core/performance/streaming-jsonl-parser.js.map +1 -1
- package/dist/core/persistence/postgres-adapter.js +4 -0
- package/dist/core/persistence/postgres-adapter.js.map +1 -1
- package/dist/core/projects/project-isolation.js +4 -0
- package/dist/core/projects/project-isolation.js.map +1 -1
- package/dist/core/projects/project-manager.js +4 -0
- package/dist/core/projects/project-manager.js.map +1 -1
- package/dist/core/query/query-parser.js +4 -0
- package/dist/core/query/query-parser.js.map +1 -1
- package/dist/core/query/query-templates.js +4 -0
- package/dist/core/query/query-templates.js.map +1 -1
- package/dist/core/retrieval/context-retriever.js +4 -0
- package/dist/core/retrieval/context-retriever.js.map +1 -1
- package/dist/core/retrieval/graph-retrieval.js +4 -0
- package/dist/core/retrieval/graph-retrieval.js.map +1 -1
- package/dist/core/retrieval/hierarchical-retrieval.js +4 -0
- package/dist/core/retrieval/hierarchical-retrieval.js.map +1 -1
- package/dist/core/retrieval/index.js +4 -0
- package/dist/core/retrieval/index.js.map +1 -1
- package/dist/core/retrieval/llm-context-retrieval.js +4 -0
- package/dist/core/retrieval/llm-context-retrieval.js.map +1 -1
- package/dist/core/retrieval/retrieval-benchmarks.js +4 -0
- package/dist/core/retrieval/retrieval-benchmarks.js.map +1 -1
- package/dist/core/retrieval/summary-generator.js +4 -0
- package/dist/core/retrieval/summary-generator.js.map +1 -1
- package/dist/core/retrieval/types.js +4 -0
- package/dist/core/retrieval/types.js.map +1 -1
- package/dist/core/session/clear-survival.js +4 -0
- package/dist/core/session/clear-survival.js.map +1 -1
- package/dist/core/session/enhanced-handoff.js +4 -0
- package/dist/core/session/enhanced-handoff.js.map +1 -1
- package/dist/core/session/handoff-generator.js +4 -0
- package/dist/core/session/handoff-generator.js.map +1 -1
- package/dist/core/session/index.js +4 -0
- package/dist/core/session/index.js.map +1 -1
- package/dist/core/session/session-manager.js +4 -0
- package/dist/core/session/session-manager.js.map +1 -1
- package/dist/core/skills/index.js +4 -0
- package/dist/core/skills/index.js.map +1 -1
- package/dist/core/skills/skill-storage.js +4 -0
- package/dist/core/skills/skill-storage.js.map +1 -1
- package/dist/core/skills/types.js +4 -0
- package/dist/core/skills/types.js.map +1 -1
- package/dist/core/storage/chromadb-adapter.js +4 -0
- package/dist/core/storage/chromadb-adapter.js.map +1 -1
- package/dist/core/storage/infinite-storage.js +4 -0
- package/dist/core/storage/infinite-storage.js.map +1 -1
- package/dist/core/storage/railway-optimized-storage.js +4 -0
- package/dist/core/storage/railway-optimized-storage.js.map +1 -1
- package/dist/core/storage/remote-storage.js +4 -0
- package/dist/core/storage/remote-storage.js.map +1 -1
- package/dist/core/storage/two-tier-storage.js +4 -0
- package/dist/core/storage/two-tier-storage.js.map +1 -1
- package/dist/core/trace/cli-trace-wrapper.js +4 -0
- package/dist/core/trace/cli-trace-wrapper.js.map +1 -1
- package/dist/core/trace/db-trace-wrapper.js +4 -0
- package/dist/core/trace/db-trace-wrapper.js.map +1 -1
- package/dist/core/trace/debug-trace.js +4 -0
- package/dist/core/trace/debug-trace.js.map +1 -1
- package/dist/core/trace/index.js +4 -0
- package/dist/core/trace/index.js.map +1 -1
- package/dist/core/trace/linear-api-wrapper.js +4 -0
- package/dist/core/trace/linear-api-wrapper.js.map +1 -1
- package/dist/core/trace/trace-demo.js +4 -0
- package/dist/core/trace/trace-demo.js.map +1 -1
- package/dist/core/trace/trace-detector.demo.js +4 -0
- package/dist/core/trace/trace-detector.demo.js.map +1 -1
- package/dist/core/trace/trace-detector.js +4 -0
- package/dist/core/trace/trace-detector.js.map +1 -1
- package/dist/core/trace/trace-store.js +4 -0
- package/dist/core/trace/trace-store.js.map +1 -1
- package/dist/core/trace/types.js +4 -0
- package/dist/core/trace/types.js.map +1 -1
- package/dist/core/types.js +4 -0
- package/dist/core/utils/compression.js +4 -0
- package/dist/core/utils/compression.js.map +1 -1
- package/dist/core/utils/update-checker.js +4 -0
- package/dist/core/utils/update-checker.js.map +1 -1
- package/dist/core/worktree/worktree-manager.js +4 -0
- package/dist/core/worktree/worktree-manager.js.map +1 -1
- package/dist/daemon/session-daemon.js +4 -0
- package/dist/daemon/session-daemon.js.map +1 -1
- package/dist/features/analytics/api/analytics-api.js +4 -0
- package/dist/features/analytics/api/analytics-api.js.map +1 -1
- package/dist/features/analytics/core/analytics-service.js +4 -0
- package/dist/features/analytics/core/analytics-service.js.map +1 -1
- package/dist/features/analytics/index.js +4 -0
- package/dist/features/analytics/index.js.map +1 -1
- package/dist/features/analytics/queries/metrics-queries.js +4 -0
- package/dist/features/analytics/queries/metrics-queries.js.map +1 -1
- package/dist/features/analytics/types/metrics.js +4 -0
- package/dist/features/browser/browser-mcp.js +4 -0
- package/dist/features/browser/browser-mcp.js.map +1 -1
- package/dist/features/tasks/linear-task-manager.js +4 -0
- package/dist/features/tasks/linear-task-manager.js.map +1 -1
- package/dist/features/tasks/task-aware-context.js +4 -0
- package/dist/features/tasks/task-aware-context.js.map +1 -1
- package/dist/features/tui/simple-monitor.js +4 -0
- package/dist/features/tui/simple-monitor.js.map +1 -1
- package/dist/features/tui/swarm-monitor.js +4 -0
- package/dist/features/tui/swarm-monitor.js.map +1 -1
- package/dist/features/web/client/stores/task-store.js +4 -0
- package/dist/features/web/client/stores/task-store.js.map +1 -1
- package/dist/features/web/server/index.js +4 -0
- package/dist/features/web/server/index.js.map +1 -1
- package/dist/hooks/auto-background.js +146 -0
- package/dist/hooks/auto-background.js.map +7 -0
- package/dist/hooks/config.js +4 -0
- package/dist/hooks/config.js.map +1 -1
- package/dist/hooks/daemon.js +4 -0
- package/dist/hooks/daemon.js.map +1 -1
- package/dist/hooks/events.js +4 -0
- package/dist/hooks/events.js.map +1 -1
- package/dist/hooks/index.js +5 -0
- package/dist/hooks/index.js.map +2 -2
- package/dist/index.js +4 -0
- package/dist/index.js.map +1 -1
- package/dist/integrations/anthropic/client.js +4 -0
- package/dist/integrations/anthropic/client.js.map +1 -1
- package/dist/integrations/claude-code/agent-bridge.js +4 -0
- package/dist/integrations/claude-code/agent-bridge.js.map +1 -1
- package/dist/integrations/claude-code/enhanced-pre-clear-hooks.js +4 -0
- package/dist/integrations/claude-code/enhanced-pre-clear-hooks.js.map +1 -1
- package/dist/integrations/claude-code/lifecycle-hooks.js +4 -0
- package/dist/integrations/claude-code/lifecycle-hooks.js.map +1 -1
- package/dist/integrations/claude-code/post-task-hooks.js +4 -0
- package/dist/integrations/claude-code/post-task-hooks.js.map +1 -1
- package/dist/integrations/claude-code/subagent-client-stub.js +4 -0
- package/dist/integrations/claude-code/subagent-client-stub.js.map +1 -1
- package/dist/integrations/claude-code/subagent-client.js +4 -0
- package/dist/integrations/claude-code/subagent-client.js.map +1 -1
- package/dist/integrations/claude-code/task-coordinator.js +4 -0
- package/dist/integrations/claude-code/task-coordinator.js.map +1 -1
- package/dist/integrations/linear/auth.js +4 -0
- package/dist/integrations/linear/auth.js.map +1 -1
- package/dist/integrations/linear/auto-sync.js +4 -0
- package/dist/integrations/linear/auto-sync.js.map +1 -1
- package/dist/integrations/linear/client.js +4 -0
- package/dist/integrations/linear/client.js.map +1 -1
- package/dist/integrations/linear/config.js +4 -0
- package/dist/integrations/linear/config.js.map +1 -1
- package/dist/integrations/linear/migration.js +4 -0
- package/dist/integrations/linear/migration.js.map +1 -1
- package/dist/integrations/linear/oauth-server.js +4 -0
- package/dist/integrations/linear/oauth-server.js.map +1 -1
- package/dist/integrations/linear/rest-client.js +4 -0
- package/dist/integrations/linear/rest-client.js.map +1 -1
- package/dist/integrations/linear/sync-manager.js +4 -0
- package/dist/integrations/linear/sync-manager.js.map +1 -1
- package/dist/integrations/linear/sync-service.js +4 -0
- package/dist/integrations/linear/sync-service.js.map +1 -1
- package/dist/integrations/linear/sync.js +4 -0
- package/dist/integrations/linear/sync.js.map +1 -1
- package/dist/integrations/linear/types.js +4 -0
- package/dist/integrations/linear/unified-sync.js +4 -0
- package/dist/integrations/linear/unified-sync.js.map +1 -1
- package/dist/integrations/linear/webhook-handler.js +4 -0
- package/dist/integrations/linear/webhook-handler.js.map +1 -1
- package/dist/integrations/linear/webhook-server.js +4 -0
- package/dist/integrations/linear/webhook-server.js.map +1 -1
- package/dist/integrations/linear/webhook.js +4 -0
- package/dist/integrations/linear/webhook.js.map +1 -1
- package/dist/integrations/mcp/handlers/code-execution-handlers.js +4 -0
- package/dist/integrations/mcp/handlers/code-execution-handlers.js.map +1 -1
- package/dist/integrations/mcp/handlers/context-handlers.js +4 -0
- package/dist/integrations/mcp/handlers/context-handlers.js.map +1 -1
- package/dist/integrations/mcp/handlers/index.js +4 -0
- package/dist/integrations/mcp/handlers/index.js.map +1 -1
- package/dist/integrations/mcp/handlers/linear-handlers.js +4 -0
- package/dist/integrations/mcp/handlers/linear-handlers.js.map +1 -1
- package/dist/integrations/mcp/handlers/skill-handlers.js +4 -0
- package/dist/integrations/mcp/handlers/skill-handlers.js.map +1 -1
- package/dist/integrations/mcp/handlers/task-handlers.js +4 -0
- package/dist/integrations/mcp/handlers/task-handlers.js.map +1 -1
- package/dist/integrations/mcp/handlers/trace-handlers.js +4 -0
- package/dist/integrations/mcp/handlers/trace-handlers.js.map +1 -1
- package/dist/integrations/mcp/index.js +4 -0
- package/dist/integrations/mcp/index.js.map +1 -1
- package/dist/integrations/mcp/middleware/tool-scoring.js +4 -0
- package/dist/integrations/mcp/middleware/tool-scoring.js.map +1 -1
- package/dist/integrations/mcp/refactored-server.js +4 -0
- package/dist/integrations/mcp/refactored-server.js.map +1 -1
- package/dist/integrations/mcp/server.js +4 -0
- package/dist/integrations/mcp/server.js.map +1 -1
- package/dist/integrations/mcp/tool-definitions-code.js +4 -0
- package/dist/integrations/mcp/tool-definitions-code.js.map +1 -1
- package/dist/integrations/mcp/tool-definitions.js +4 -0
- package/dist/integrations/mcp/tool-definitions.js.map +1 -1
- package/dist/integrations/mcp/trace-test.js +4 -0
- package/dist/integrations/mcp/trace-test.js.map +1 -1
- package/dist/integrations/pg-aiguide/embedding-provider.js +4 -0
- package/dist/integrations/pg-aiguide/embedding-provider.js.map +1 -1
- package/dist/integrations/pg-aiguide/semantic-search.js +4 -0
- package/dist/integrations/pg-aiguide/semantic-search.js.map +1 -1
- package/dist/integrations/pg-aiguide/timescale-analytics.js +4 -0
- package/dist/integrations/pg-aiguide/timescale-analytics.js.map +1 -1
- package/dist/integrations/ralph/bridge/ralph-stackmemory-bridge.js +4 -0
- package/dist/integrations/ralph/bridge/ralph-stackmemory-bridge.js.map +1 -1
- package/dist/integrations/ralph/context/context-budget-manager.js +4 -0
- package/dist/integrations/ralph/context/context-budget-manager.js.map +1 -1
- package/dist/integrations/ralph/context/stackmemory-context-loader.js +4 -0
- package/dist/integrations/ralph/context/stackmemory-context-loader.js.map +1 -1
- package/dist/integrations/ralph/coordination/enhanced-coordination.js +4 -0
- package/dist/integrations/ralph/coordination/enhanced-coordination.js.map +1 -1
- package/dist/integrations/ralph/index.js +4 -0
- package/dist/integrations/ralph/index.js.map +1 -1
- package/dist/integrations/ralph/learning/pattern-learner.js +4 -0
- package/dist/integrations/ralph/learning/pattern-learner.js.map +1 -1
- package/dist/integrations/ralph/lifecycle/iteration-lifecycle.js +4 -0
- package/dist/integrations/ralph/lifecycle/iteration-lifecycle.js.map +1 -1
- package/dist/integrations/ralph/monitoring/swarm-dashboard.js +4 -0
- package/dist/integrations/ralph/monitoring/swarm-dashboard.js.map +1 -1
- package/dist/integrations/ralph/monitoring/swarm-registry.js +4 -0
- package/dist/integrations/ralph/monitoring/swarm-registry.js.map +1 -1
- package/dist/integrations/ralph/orchestration/multi-loop-orchestrator.js +4 -0
- package/dist/integrations/ralph/orchestration/multi-loop-orchestrator.js.map +1 -1
- package/dist/integrations/ralph/patterns/compounding-engineering-pattern.js +4 -0
- package/dist/integrations/ralph/patterns/compounding-engineering-pattern.js.map +1 -1
- package/dist/integrations/ralph/patterns/extended-coherence-sessions.js +4 -0
- package/dist/integrations/ralph/patterns/extended-coherence-sessions.js.map +1 -1
- package/dist/integrations/ralph/patterns/oracle-worker-pattern.js +4 -0
- package/dist/integrations/ralph/patterns/oracle-worker-pattern.js.map +1 -1
- package/dist/integrations/ralph/performance/performance-optimizer.js +4 -0
- package/dist/integrations/ralph/performance/performance-optimizer.js.map +1 -1
- package/dist/integrations/ralph/ralph-integration-demo.js +4 -0
- package/dist/integrations/ralph/ralph-integration-demo.js.map +1 -1
- package/dist/integrations/ralph/recovery/crash-recovery.js +4 -0
- package/dist/integrations/ralph/recovery/crash-recovery.js.map +1 -1
- package/dist/integrations/ralph/state/state-reconciler.js +4 -0
- package/dist/integrations/ralph/state/state-reconciler.js.map +1 -1
- package/dist/integrations/ralph/swarm/git-workflow-manager.js +4 -0
- package/dist/integrations/ralph/swarm/git-workflow-manager.js.map +1 -1
- package/dist/integrations/ralph/swarm/swarm-coordinator.js +4 -0
- package/dist/integrations/ralph/swarm/swarm-coordinator.js.map +1 -1
- package/dist/integrations/ralph/types.js +4 -0
- package/dist/integrations/ralph/visualization/ralph-debugger.js +4 -0
- package/dist/integrations/ralph/visualization/ralph-debugger.js.map +1 -1
- package/dist/mcp/stackmemory-mcp-server.js +4 -0
- package/dist/mcp/stackmemory-mcp-server.js.map +1 -1
- package/dist/middleware/exponential-rate-limiter.js +4 -0
- package/dist/middleware/exponential-rate-limiter.js.map +1 -1
- package/dist/models/user.model.js +4 -0
- package/dist/models/user.model.js.map +1 -1
- package/dist/servers/production/auth-middleware.js +4 -0
- package/dist/servers/production/auth-middleware.js.map +1 -1
- package/dist/servers/railway/config.js +4 -0
- package/dist/servers/railway/config.js.map +1 -1
- package/dist/servers/railway/index-enhanced.js +4 -0
- package/dist/servers/railway/index-enhanced.js.map +1 -1
- package/dist/servers/railway/index.js +4 -0
- package/dist/servers/railway/index.js.map +1 -1
- package/dist/servers/railway/simple.js +4 -0
- package/dist/servers/railway/simple.js.map +1 -1
- package/dist/servers/railway/storage-test.js +4 -0
- package/dist/servers/railway/storage-test.js.map +1 -1
- package/dist/services/config-service.js +4 -0
- package/dist/services/config-service.js.map +1 -1
- package/dist/services/context-service.js +4 -0
- package/dist/services/context-service.js.map +1 -1
- package/dist/skills/api-discovery.js +4 -0
- package/dist/skills/api-discovery.js.map +1 -1
- package/dist/skills/api-skill.js +4 -0
- package/dist/skills/api-skill.js.map +1 -1
- package/dist/skills/claude-skills.js +4 -0
- package/dist/skills/claude-skills.js.map +1 -1
- package/dist/skills/dashboard-launcher.js +4 -0
- package/dist/skills/dashboard-launcher.js.map +1 -1
- package/dist/skills/recursive-agent-orchestrator.js +4 -0
- package/dist/skills/recursive-agent-orchestrator.js.map +1 -1
- package/dist/skills/repo-ingestion-skill.js +4 -0
- package/dist/skills/repo-ingestion-skill.js.map +1 -1
- package/dist/skills/security-secrets-scanner.js +4 -0
- package/dist/skills/security-secrets-scanner.js.map +1 -1
- package/dist/skills/unified-rlm-orchestrator.js +4 -0
- package/dist/skills/unified-rlm-orchestrator.js.map +1 -1
- package/dist/types/task.js +4 -0
- package/dist/utils/env.js +4 -0
- package/dist/utils/env.js.map +1 -1
- package/dist/utils/formatting.js +4 -0
- package/dist/utils/formatting.js.map +1 -1
- package/dist/utils/process-cleanup.js +4 -0
- package/dist/utils/process-cleanup.js.map +1 -1
- package/dist/validation/schemas.js +4 -0
- package/dist/validation/schemas.js.map +1 -1
- package/package.json +1 -1
- package/scripts/install-auto-background-hook.sh +144 -0
- package/templates/claude-hooks/auto-background-hook.js +156 -0
|
@@ -2,6 +2,6 @@
|
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../../../src/integrations/mcp/handlers/trace-handlers.ts"],
|
|
4
4
|
"sourcesContent": ["/**\n * Trace and debugging MCP tool handlers\n * Handles trace detection, analysis, and debugging tools\n */\n\nimport { TraceDetector } from '../../../core/trace/trace-detector.js';\nimport { ToolCall } from '../../../core/trace/types.js';\nimport { BrowserMCPIntegration } from '../../../features/browser/browser-mcp.js';\nimport { logger } from '../../../core/monitoring/logger.js';\n\nexport interface TraceHandlerDependencies {\n traceDetector: TraceDetector;\n browserMCP: BrowserMCPIntegration;\n}\n\nexport class TraceHandlers {\n constructor(private deps: TraceHandlerDependencies) {}\n\n /**\n * Get traces with optional filtering\n */\n async handleGetTraces(args: any): Promise<any> {\n try {\n const { \n limit = 20, \n pattern, \n start_time,\n end_time,\n include_context = false \n } = args;\n\n const filters: any = { limit };\n \n if (pattern) {\n filters.pattern = pattern;\n }\n \n if (start_time) {\n filters.startTime = new Date(start_time);\n }\n \n if (end_time) {\n filters.endTime = new Date(end_time);\n }\n\n const traces = await this.deps.traceDetector.getTraces();\n\n if (traces.length === 0) {\n return {\n content: [\n {\n type: 'text',\n text: 'No traces found matching criteria',\n },\n ],\n };\n }\n\n const tracesSummary = traces.map((trace: any) => {\n const duration = trace.metadata.endTime && trace.metadata.startTime ? trace.metadata.endTime - trace.metadata.startTime : 'ongoing';\n return {\n id: trace.id,\n pattern: trace.compressed?.pattern || 'Unknown',\n toolCount: trace.tools.length,\n duration: typeof duration === 'number' ? `${duration}ms` : duration,\n status: 'completed',\n startTime: new Date(trace.metadata.startTime).toISOString(),\n };\n });\n\n const summaryText = tracesSummary.map((t: any) => \n `${t.id}: ${t.pattern} (${t.toolCount} tools, ${t.duration}) [${t.status}]`\n ).join('\\n');\n\n const result: any = {\n content: [\n {\n type: 'text',\n text: `Traces (${traces.length}):\\n${summaryText}`,\n },\n ],\n metadata: {\n traces: tracesSummary,\n totalCount: traces.length,\n filters,\n },\n };\n\n // Include full context if requested\n if (include_context) {\n result.metadata.fullTraces = traces;\n }\n\n return result;\n } catch (error: unknown) {\n logger.error('Error getting traces', error instanceof Error ? error : new Error(String(error)));\n throw error;\n }\n }\n\n /**\n * Analyze trace patterns\n */\n async handleAnalyzeTraces(args: any): Promise<any> {\n try {\n const { \n trace_id, \n analysis_type = 'performance',\n include_recommendations = true \n } = args;\n\n let analysis;\n\n if (trace_id) {\n // Analyze specific trace\n const traces = this.deps.traceDetector.getTraces();\n const trace = traces.find((t: any) => t.id === trace_id);\n if (!trace) {\n throw new Error(`Trace not found: ${trace_id}`);\n }\n // Basic trace analysis based on type\n analysis = this.analyzeTrace(trace, analysis_type);\n } else {\n // Analyze all recent traces\n // Analyze recent traces\n const traces = this.deps.traceDetector.getTraces();\n analysis = this.analyzeRecentTraces(traces, analysis_type);\n }\n\n let analysisText = `Trace Analysis (${analysis_type}):\\n\\n`;\n\n switch (analysis_type) {\n case 'performance':\n analysisText += `Performance Metrics:\n- Avg duration: ${analysis.avgDuration}ms\n- Slowest operation: ${analysis.slowestOperation?.name} (${analysis.slowestOperation?.duration}ms)\n- Tool usage: ${analysis.toolUsageStats}\n- Bottlenecks: ${analysis.bottlenecks?.join(', ') || 'None detected'}`;\n break;\n\n case 'patterns':\n analysisText += `Pattern Analysis:\n- Common sequences: ${analysis.commonSequences?.join(', ') || 'None'}\n- Repetitive operations: ${analysis.repetitiveOps?.join(', ') || 'None'}\n- Success rate: ${analysis.successRate}%\n- Failure patterns: ${analysis.failurePatterns?.join(', ') || 'None'}`;\n break;\n\n case 'errors':\n analysisText += `Error Analysis:\n- Error rate: ${analysis.errorRate}%\n- Common errors: ${analysis.commonErrors?.join(', ') || 'None'}\n- Error sources: ${analysis.errorSources?.join(', ') || 'None'}\n- Recovery patterns: ${analysis.recoveryPatterns?.join(', ') || 'None'}`;\n break;\n\n default:\n analysisText += JSON.stringify(analysis, null, 2);\n }\n\n if (include_recommendations && analysis.recommendations) {\n analysisText += '\\n\\nRecommendations:\\n';\n analysisText += analysis.recommendations.map((rec: string, i: number) => \n `${i + 1}. ${rec}`\n ).join('\\n');\n }\n\n return {\n content: [\n {\n type: 'text',\n text: analysisText,\n },\n ],\n metadata: {\n analysis,\n analysisType: analysis_type,\n traceId: trace_id,\n },\n };\n } catch (error: unknown) {\n logger.error('Error analyzing traces', error instanceof Error ? error : new Error(String(error)));\n throw error;\n }\n }\n\n /**\n * Start browser debugging session\n */\n async handleStartBrowserDebug(args: any): Promise<any> {\n try {\n const { \n url, \n headless = false,\n width = 1280,\n height = 720,\n capture_screenshots = true \n } = args;\n\n if (!url) {\n throw new Error('URL is required for browser debugging');\n }\n\n // Mock browser session start since startSession method doesn't exist\n const sessionId = `session_${Date.now()}`;\n\n // Mock navigate since method is private\n logger.info(`Would navigate session ${sessionId} to ${url}`);\n\n logger.info('Started browser debug session', { sessionId, url });\n\n return {\n content: [\n {\n type: 'text',\n text: `Started browser debug session: ${sessionId}\\nNavigated to: ${url}`,\n },\n ],\n metadata: {\n sessionId,\n url,\n options: { headless, width, height, capture_screenshots },\n },\n };\n } catch (error: unknown) {\n logger.error('Error starting browser debug session', error instanceof Error ? error : new Error(String(error)));\n throw error;\n }\n }\n\n /**\n * Take screenshot for debugging\n */\n async handleTakeScreenshot(args: any): Promise<any> {\n try {\n const { session_id, selector, full_page = false } = args;\n\n if (!session_id) {\n throw new Error('Session ID is required');\n }\n\n // Mock screenshot since method is private \n const screenshot = { data: 'mock-screenshot-data', format: 'png' };\n\n return {\n content: [\n {\n type: 'text',\n text: 'Screenshot captured successfully',\n },\n {\n type: 'image',\n data: screenshot.data,\n mimeType: 'image/png',\n },\n ],\n metadata: {\n sessionId: session_id,\n selector,\n fullPage: full_page,\n timestamp: Date.now(),\n },\n };\n } catch (error: unknown) {\n logger.error('Error taking screenshot', error instanceof Error ? error : new Error(String(error)));\n throw error;\n }\n }\n\n /**\n * Execute JavaScript in browser for debugging\n */\n async handleExecuteScript(args: any): Promise<any> {\n try {\n const { session_id, script, args: scriptArgs = [] } = args;\n\n if (!session_id) {\n throw new Error('Session ID is required');\n }\n\n if (!script) {\n throw new Error('Script is required');\n }\n\n // Mock script execution since executeScript doesn't exist\n const result = { output: 'Mock script execution result' };\n\n return {\n content: [\n {\n type: 'text',\n text: `Script executed successfully:\\nResult: ${JSON.stringify(result, null, 2)}`,\n },\n ],\n metadata: {\n sessionId: session_id,\n script,\n result,\n timestamp: Date.now(),\n },\n };\n } catch (error: unknown) {\n logger.error('Error executing script', error instanceof Error ? error : new Error(String(error)));\n throw error;\n }\n }\n\n /**\n * Stop browser debugging session\n */\n async handleStopBrowserDebug(args: any): Promise<any> {\n try {\n const { session_id } = args;\n\n if (!session_id) {\n throw new Error('Session ID is required');\n }\n\n // Mock session close since method is private\n logger.info(`Would close session ${session_id}`);\n\n logger.info('Stopped browser debug session', { sessionId: session_id });\n\n return {\n content: [\n {\n type: 'text',\n text: `Stopped browser debug session: ${session_id}`,\n },\n ],\n metadata: {\n sessionId: session_id,\n timestamp: Date.now(),\n },\n };\n } catch (error: unknown) {\n logger.error('Error stopping browser debug session', error instanceof Error ? error : new Error(String(error)));\n throw error;\n }\n }\n\n private analyzeTrace(trace: any, analysisType: string): any {\n return {\n type: analysisType,\n summary: `Analysis of trace ${trace.id}`,\n toolCount: trace.tools.length,\n score: trace.score,\n patterns: trace.compressed?.pattern || 'Unknown'\n };\n }\n\n private analyzeRecentTraces(traces: any[], analysisType: string): any {\n return {\n type: analysisType,\n summary: `Analysis of ${traces.length} recent traces`,\n totalTraces: traces.length,\n avgScore: traces.length > 0 ? traces.reduce((sum, t) => sum + t.score, 0) / traces.length : 0,\n commonPatterns: traces.map((t: any) => t.compressed?.pattern).filter(Boolean)\n };\n }\n}"],
|
|
5
|
-
"mappings": "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",
|
|
5
|
+
"mappings": "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",
|
|
6
6
|
"names": []
|
|
7
7
|
}
|
|
@@ -1,3 +1,7 @@
|
|
|
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);
|
|
1
5
|
import { RefactoredStackMemoryMCP } from "./refactored-server.js";
|
|
2
6
|
import { MCPHandlerFactory } from "./handlers/index.js";
|
|
3
7
|
import { ContextHandlers } from "./handlers/context-handlers.js";
|
|
@@ -2,6 +2,6 @@
|
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../../src/integrations/mcp/index.ts"],
|
|
4
4
|
"sourcesContent": ["/**\n * MCP Integration Exports\n * Provides access to both original and refactored MCP server implementations\n */\n\n// Export refactored server as primary\nexport { RefactoredStackMemoryMCP as StackMemoryMCP } from './refactored-server.js';\n\n// Export handler modules for direct access\nexport { MCPHandlerFactory } from './handlers/index.js';\nexport { ContextHandlers } from './handlers/context-handlers.js';\nexport { TaskHandlers } from './handlers/task-handlers.js';\nexport { LinearHandlers } from './handlers/linear-handlers.js';\nexport { TraceHandlers } from './handlers/trace-handlers.js';\n\n// Export tool definitions\nexport { MCPToolDefinitions } from './tool-definitions.js';\n\n// Re-export original server for backwards compatibility\nexport { default as LegacyStackMemoryMCP } from './server.js';"],
|
|
5
|
-
"mappings": "AAMA,SAAqC,gCAAsB;AAG3D,SAAS,yBAAyB;AAClC,SAAS,uBAAuB;AAChC,SAAS,oBAAoB;AAC7B,SAAS,sBAAsB;AAC/B,SAAS,qBAAqB;AAG9B,SAAS,0BAA0B;AAGnC,SAAoB,WAAXA,gBAAuC;",
|
|
5
|
+
"mappings": ";;;;AAMA,SAAqC,gCAAsB;AAG3D,SAAS,yBAAyB;AAClC,SAAS,uBAAuB;AAChC,SAAS,oBAAoB;AAC7B,SAAS,sBAAsB;AAC/B,SAAS,qBAAqB;AAG9B,SAAS,0BAA0B;AAGnC,SAAoB,WAAXA,gBAAuC;",
|
|
6
6
|
"names": ["default"]
|
|
7
7
|
}
|
|
@@ -1,3 +1,7 @@
|
|
|
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);
|
|
1
5
|
import { ConfigManager } from "../../../core/config/config-manager.js";
|
|
2
6
|
import { TraceDetector } from "../../../core/trace/trace-detector.js";
|
|
3
7
|
import { logger } from "../../../core/monitoring/logger.js";
|
|
@@ -2,6 +2,6 @@
|
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../../../src/integrations/mcp/middleware/tool-scoring.ts"],
|
|
4
4
|
"sourcesContent": ["/**\n * Tool Scoring Middleware for MCP\n * Integrates ConfigManager weight profiles with tool execution\n */\n\nimport { ConfigManager } from '../../../core/config/config-manager.js';\nimport { TraceDetector } from '../../../core/trace/trace-detector.js';\nimport { ToolCall } from '../../../core/trace/types.js';\nimport { logger } from '../../../core/monitoring/logger.js';\nimport { v4 as uuidv4 } from 'uuid';\nimport Database from 'better-sqlite3';\n\nexport interface ToolScoringMetrics {\n profileName: string;\n toolName: string;\n score: number;\n factors: {\n filesAffected: number;\n isPermanent: boolean;\n referenceCount: number;\n };\n timestamp: number;\n}\n\nexport interface ProfileUsageStats {\n profileName: string;\n usageCount: number;\n totalScore: number;\n avgScore: number;\n highScoreTools: string[];\n lastUsed: number;\n}\n\n/**\n * Middleware for scoring tool calls and tracking profile effectiveness\n */\nexport class ToolScoringMiddleware {\n private configManager: ConfigManager;\n private traceDetector: TraceDetector;\n private metrics: ToolScoringMetrics[] = [];\n private profileStats: Map<string, ProfileUsageStats> = new Map();\n private db?: Database.Database;\n \n constructor(\n configManager?: ConfigManager,\n traceDetector?: TraceDetector,\n db?: Database.Database\n ) {\n this.configManager = configManager || new ConfigManager();\n this.traceDetector = traceDetector || new TraceDetector();\n this.db = db;\n \n this.initializeDatabase();\n this.loadMetrics();\n }\n \n /**\n * Initialize database tables for metrics\n */\n private initializeDatabase(): void {\n if (!this.db) return;\n \n // Create metrics table\n this.db.exec(`\n CREATE TABLE IF NOT EXISTS tool_scoring_metrics (\n id TEXT PRIMARY KEY,\n profile_name TEXT NOT NULL,\n tool_name TEXT NOT NULL,\n score REAL NOT NULL,\n files_affected INTEGER DEFAULT 0,\n is_permanent BOOLEAN DEFAULT FALSE,\n reference_count INTEGER DEFAULT 0,\n timestamp INTEGER NOT NULL,\n created_at DATETIME DEFAULT CURRENT_TIMESTAMP\n )\n `);\n \n // Create profile stats table\n this.db.exec(`\n CREATE TABLE IF NOT EXISTS profile_usage_stats (\n profile_name TEXT PRIMARY KEY,\n usage_count INTEGER DEFAULT 0,\n total_score REAL DEFAULT 0,\n avg_score REAL DEFAULT 0,\n high_score_tools TEXT,\n last_used INTEGER,\n updated_at DATETIME DEFAULT CURRENT_TIMESTAMP\n )\n `);\n \n // Create indexes\n this.db.exec(`\n CREATE INDEX IF NOT EXISTS idx_metrics_profile ON tool_scoring_metrics(profile_name);\n CREATE INDEX IF NOT EXISTS idx_metrics_tool ON tool_scoring_metrics(tool_name);\n CREATE INDEX IF NOT EXISTS idx_metrics_timestamp ON tool_scoring_metrics(timestamp);\n `);\n }\n \n /**\n * Load existing metrics from database\n */\n private loadMetrics(): void {\n if (!this.db) return;\n \n try {\n // Load recent metrics (last 7 days)\n const cutoff = Date.now() - 7 * 24 * 60 * 60 * 1000;\n const stmt = this.db.prepare(`\n SELECT * FROM tool_scoring_metrics \n WHERE timestamp > ? \n ORDER BY timestamp DESC\n `);\n \n const rows = stmt.all(cutoff) as any[];\n this.metrics = rows.map((row: any) => ({\n profileName: row.profile_name,\n toolName: row.tool_name,\n score: row.score,\n factors: {\n filesAffected: row.files_affected,\n isPermanent: row.is_permanent === 1,\n referenceCount: row.reference_count,\n },\n timestamp: row.timestamp,\n }));\n \n // Load profile stats\n const statsStmt = this.db.prepare(`\n SELECT * FROM profile_usage_stats\n `);\n \n const statsRows = statsStmt.all() as any[];\n statsRows.forEach(row => {\n this.profileStats.set(row.profile_name, {\n profileName: row.profile_name,\n usageCount: row.usage_count,\n totalScore: row.total_score,\n avgScore: row.avg_score,\n highScoreTools: row.high_score_tools ? JSON.parse(row.high_score_tools) : [],\n lastUsed: row.last_used,\n });\n });\n \n logger.info('Loaded tool scoring metrics', {\n metricsCount: this.metrics.length,\n profilesCount: this.profileStats.size,\n });\n } catch (error: unknown) {\n logger.error('Failed to load metrics', error);\n }\n }\n \n /**\n * Score a tool call and track it\n */\n async scoreToolCall(\n toolName: string,\n args: any,\n result?: any,\n error?: string\n ): Promise<number> {\n // Extract factors from arguments and result\n const factors = this.extractScoringFactors(toolName, args, result);\n \n // Calculate score using current profile\n const score = this.configManager.calculateScore(toolName, factors);\n \n // Get current profile name\n const config = this.configManager.getConfig();\n const profileName = config.profile || 'default';\n \n // Track the metric\n const metric: ToolScoringMetrics = {\n profileName,\n toolName,\n score,\n factors,\n timestamp: Date.now(),\n };\n \n this.metrics.push(metric);\n this.updateProfileStats(profileName, toolName, score);\n \n // Save to database\n this.saveMetric(metric);\n \n // Add to trace detector if significant\n if (score > 0.3) {\n const toolCall: ToolCall = {\n id: uuidv4(),\n tool: toolName,\n arguments: args,\n timestamp: Date.now(),\n result,\n error,\n filesAffected: factors.filesAffected > 0 ? this.getFilesFromArgs(args) : undefined,\n };\n \n this.traceDetector.addToolCall(toolCall);\n }\n \n // Log high-importance operations\n if (score > 0.8) {\n logger.warn('High-importance tool call', {\n tool: toolName,\n score,\n profile: profileName,\n factors,\n });\n }\n \n return score;\n }\n \n /**\n * Extract scoring factors from tool arguments and results\n */\n private extractScoringFactors(\n toolName: string,\n args: any,\n result?: any\n ): { filesAffected: number; isPermanent: boolean; referenceCount: number } {\n let filesAffected = 0;\n let isPermanent = false;\n let referenceCount = 0;\n \n // Check for file-related arguments\n if (args.file || args.files || args.path || args.paths) {\n filesAffected = 1;\n if (args.files || args.paths) {\n filesAffected = Array.isArray(args.files || args.paths) \n ? (args.files || args.paths).length \n : 1;\n }\n }\n \n // Check if tool makes permanent changes\n const permanentTools = [\n 'write', 'edit', 'create', 'delete', 'update',\n 'add_decision', 'create_task', 'linear_update_task'\n ];\n \n if (permanentTools.some(t => toolName.includes(t))) {\n isPermanent = true;\n }\n \n // Extract reference count from result if available\n if (result?.referenceCount !== undefined) {\n referenceCount = result.referenceCount;\n } else if (result?.references?.length) {\n referenceCount = result.references.length;\n }\n \n return { filesAffected, isPermanent, referenceCount };\n }\n \n /**\n * Get file paths from arguments\n */\n private getFilesFromArgs(args: any): string[] {\n const files: string[] = [];\n \n if (args.file) files.push(args.file);\n if (args.path) files.push(args.path);\n if (args.files && Array.isArray(args.files)) files.push(...args.files);\n if (args.paths && Array.isArray(args.paths)) files.push(...args.paths);\n \n return files;\n }\n \n /**\n * Update profile usage statistics\n */\n private updateProfileStats(profileName: string, toolName: string, score: number): void {\n let stats = this.profileStats.get(profileName);\n \n if (!stats) {\n stats = {\n profileName,\n usageCount: 0,\n totalScore: 0,\n avgScore: 0,\n highScoreTools: [],\n lastUsed: Date.now(),\n };\n this.profileStats.set(profileName, stats);\n }\n \n stats.usageCount++;\n stats.totalScore += score;\n stats.avgScore = stats.totalScore / stats.usageCount;\n stats.lastUsed = Date.now();\n \n // Track high-score tools\n if (score > 0.7 && !stats.highScoreTools.includes(toolName)) {\n stats.highScoreTools.push(toolName);\n if (stats.highScoreTools.length > 10) {\n stats.highScoreTools.shift(); // Keep only last 10\n }\n }\n \n this.saveProfileStats(stats);\n }\n \n /**\n * Save metric to database\n */\n private saveMetric(metric: ToolScoringMetrics): void {\n if (!this.db) return;\n \n try {\n const stmt = this.db.prepare(`\n INSERT INTO tool_scoring_metrics (\n id, profile_name, tool_name, score,\n files_affected, is_permanent, reference_count,\n timestamp\n ) VALUES (?, ?, ?, ?, ?, ?, ?, ?)\n `);\n \n stmt.run(\n uuidv4(),\n metric.profileName,\n metric.toolName,\n metric.score,\n metric.factors.filesAffected,\n metric.factors.isPermanent ? 1 : 0,\n metric.factors.referenceCount,\n metric.timestamp\n );\n } catch (error: unknown) {\n logger.error('Failed to save metric', error);\n }\n }\n \n /**\n * Save profile stats to database\n */\n private saveProfileStats(stats: ProfileUsageStats): void {\n if (!this.db) return;\n \n try {\n const stmt = this.db.prepare(`\n INSERT OR REPLACE INTO profile_usage_stats (\n profile_name, usage_count, total_score, avg_score,\n high_score_tools, last_used\n ) VALUES (?, ?, ?, ?, ?, ?)\n `);\n \n stmt.run(\n stats.profileName,\n stats.usageCount,\n stats.totalScore,\n stats.avgScore,\n JSON.stringify(stats.highScoreTools),\n stats.lastUsed\n );\n } catch (error: unknown) {\n logger.error('Failed to save profile stats', error);\n }\n }\n \n /**\n * Get profile effectiveness report\n */\n getProfileReport(profileName?: string): any {\n if (profileName) {\n const stats = this.profileStats.get(profileName);\n if (!stats) {\n return { error: `Profile '${profileName}' not found or not used yet` };\n }\n \n return {\n profile: profileName,\n usage: stats.usageCount,\n avgScore: stats.avgScore.toFixed(3),\n highScoreTools: stats.highScoreTools,\n lastUsed: new Date(stats.lastUsed).toISOString(),\n };\n }\n \n // Return report for all profiles\n const profiles = Array.from(this.profileStats.values())\n .sort((a, b) => b.avgScore - a.avgScore);\n \n return {\n profileCount: profiles.length,\n mostEffective: profiles[0]?.profileName || 'none',\n profiles: profiles.map((p: any) => ({\n name: p.profileName,\n usage: p.usageCount,\n avgScore: p.avgScore.toFixed(3),\n })),\n };\n }\n \n /**\n * Get tool scoring trends\n */\n getToolTrends(toolName: string, hours: number = 24): any {\n const cutoff = Date.now() - hours * 60 * 60 * 1000;\n const relevantMetrics = this.metrics.filter((m: any) => m.toolName === toolName && m.timestamp > cutoff\n );\n \n if (relevantMetrics.length === 0) {\n return { tool: toolName, message: 'No recent data' };\n }\n \n const scores = relevantMetrics.map((m: any) => m.score);\n const avgScore = scores.reduce((a, b) => a + b, 0) / scores.length;\n const maxScore = Math.max(...scores);\n const minScore = Math.min(...scores);\n \n return {\n tool: toolName,\n period: `${hours}h`,\n count: relevantMetrics.length,\n avgScore: avgScore.toFixed(3),\n maxScore: maxScore.toFixed(3),\n minScore: minScore.toFixed(3),\n trend: this.calculateTrend(relevantMetrics),\n };\n }\n \n /**\n * Calculate score trend\n */\n private calculateTrend(metrics: ToolScoringMetrics[]): string {\n if (metrics.length < 2) return 'stable';\n \n const firstHalf = metrics.slice(0, Math.floor(metrics.length / 2));\n const secondHalf = metrics.slice(Math.floor(metrics.length / 2));\n \n const firstAvg = firstHalf.reduce((a, m) => a + m.score, 0) / firstHalf.length;\n const secondAvg = secondHalf.reduce((a, m) => a + m.score, 0) / secondHalf.length;\n \n const diff = secondAvg - firstAvg;\n \n if (diff > 0.1) return 'increasing';\n if (diff < -0.1) return 'decreasing';\n return 'stable';\n }\n \n /**\n * Clean old metrics\n */\n cleanOldMetrics(daysToKeep: number = 30): number {\n const cutoff = Date.now() - daysToKeep * 24 * 60 * 60 * 1000;\n const oldCount = this.metrics.length;\n \n this.metrics = this.metrics.filter((m: any) => m.timestamp > cutoff);\n \n if (this.db) {\n try {\n const stmt = this.db.prepare(`\n DELETE FROM tool_scoring_metrics WHERE timestamp < ?\n `);\n stmt.run(cutoff);\n } catch (error: unknown) {\n logger.error('Failed to clean old metrics', error);\n }\n }\n \n return oldCount - this.metrics.length;\n }\n}"],
|
|
5
|
-
"mappings": "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",
|
|
5
|
+
"mappings": "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",
|
|
6
6
|
"names": []
|
|
7
7
|
}
|
|
@@ -1,4 +1,8 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
|
+
import { fileURLToPath as __fileURLToPath } from 'url';
|
|
3
|
+
import { dirname as __pathDirname } from 'path';
|
|
4
|
+
const __filename = __fileURLToPath(import.meta.url);
|
|
5
|
+
const __dirname = __pathDirname(__filename);
|
|
2
6
|
import { Server } from "@modelcontextprotocol/sdk/server/index.js";
|
|
3
7
|
import { StdioServerTransport } from "@modelcontextprotocol/sdk/server/stdio.js";
|
|
4
8
|
import { z } from "zod";
|
|
@@ -2,6 +2,6 @@
|
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../../src/integrations/mcp/refactored-server.ts"],
|
|
4
4
|
"sourcesContent": ["#!/usr/bin/env node\n/**\n * Refactored StackMemory MCP Server - Modular Implementation\n * Clean, maintainable MCP server using focused handler modules\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 { readFileSync, existsSync, mkdirSync } from 'fs';\nimport { join, dirname } from 'path';\nimport { execSync } from 'child_process';\nimport { v4 as uuidv4 } from 'uuid';\n\n// Core components\nimport { RefactoredFrameManager } from '../../core/context/refactored-frame-manager.js';\nimport { LinearTaskManager } from '../../features/tasks/linear-task-manager.js';\nimport { LinearAuthManager } from '../linear/auth.js';\nimport { LinearSyncEngine, DEFAULT_SYNC_CONFIG } from '../linear/sync.js';\nimport { BrowserMCPIntegration } from '../../features/browser/browser-mcp.js';\nimport { TraceDetector } from '../../core/trace/trace-detector.js';\nimport { LLMContextRetrieval } from '../../core/retrieval/index.js';\nimport { ConfigManager } from '../../core/config/config-manager.js';\nimport { logger } from '../../core/monitoring/logger.js';\n\n// Handler modules\nimport { MCPHandlerFactory, MCPHandlerDependencies } from './handlers/index.js';\nimport { MCPToolDefinitions } from './tool-definitions.js';\nimport { ToolScoringMiddleware } from './middleware/tool-scoring.js';\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/**\n * Configuration for MCP server\n */\ninterface MCPServerConfig {\n headless?: boolean;\n viewportWidth?: number;\n viewportHeight?: number;\n enableTracing?: boolean;\n enableBrowser?: boolean;\n}\n\n/**\n * Refactored StackMemory MCP Server\n */\nclass RefactoredStackMemoryMCP {\n private server!: Server;\n private db!: Database.Database;\n private projectRoot: string;\n private projectId: string;\n \n // Core components\n private frameManager!: RefactoredFrameManager;\n private taskStore!: LinearTaskManager;\n private linearAuthManager!: LinearAuthManager;\n private linearSync!: LinearSyncEngine;\n private browserMCP!: BrowserMCPIntegration;\n private traceDetector!: TraceDetector;\n private contextRetrieval!: LLMContextRetrieval;\n private configManager!: ConfigManager;\n private toolScoringMiddleware!: ToolScoringMiddleware;\n \n // Handler factory\n private handlerFactory!: MCPHandlerFactory;\n private toolDefinitions!: MCPToolDefinitions;\n\n constructor(config: MCPServerConfig = {}) {\n this.projectRoot = this.findProjectRoot();\n this.projectId = this.getProjectId();\n \n this.initializeDatabase();\n this.initializeComponents(config);\n this.initializeServer();\n this.setupHandlers();\n }\n\n /**\n * Initialize database connection\n */\n private initializeDatabase(): void {\n const dbDir = join(this.projectRoot, '.stackmemory');\n if (!existsSync(dbDir)) {\n mkdirSync(dbDir, { recursive: true });\n }\n\n const dbPath = join(dbDir, 'context.db');\n this.db = new Database(dbPath);\n \n logger.info('Database initialized', { dbPath });\n }\n\n /**\n * Initialize core components\n */\n private initializeComponents(config: MCPServerConfig): void {\n // Configuration manager\n const configPath = join(this.projectRoot, '.stackmemory', 'config.yaml');\n this.configManager = new ConfigManager(configPath);\n\n // Frame manager\n this.frameManager = new RefactoredFrameManager(this.db, this.projectId);\n\n // Task store\n this.taskStore = new LinearTaskManager(this.projectRoot, this.db);\n\n // Linear integration\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 // Browser integration (if enabled)\n if (config.enableBrowser !== false) {\n this.browserMCP = new BrowserMCPIntegration({\n headless: config.headless ?? process.env['BROWSER_HEADLESS'] !== 'false',\n defaultViewport: { \n width: config.viewportWidth ?? 1280, \n height: config.viewportHeight ?? 720 \n },\n });\n }\n\n // Trace detector with ConfigManager (if enabled)\n if (config.enableTracing !== false) {\n this.traceDetector = new TraceDetector({}, this.configManager, this.db);\n }\n\n // Tool scoring middleware\n this.toolScoringMiddleware = new ToolScoringMiddleware(\n this.configManager,\n this.traceDetector,\n this.db\n );\n\n // Context retrieval\n this.contextRetrieval = new LLMContextRetrieval(\n this.db,\n this.frameManager as any,\n this.projectId,\n {}\n );\n\n logger.info('Core components initialized');\n }\n\n /**\n * Initialize MCP server\n */\n private initializeServer(): void {\n this.server = new Server(\n {\n name: 'stackmemory-refactored',\n version: '0.2.0',\n },\n {\n capabilities: {\n tools: {},\n },\n }\n );\n\n logger.info('MCP server initialized');\n }\n\n /**\n * Setup MCP handlers\n */\n private setupHandlers(): void {\n // Create handler factory with dependencies\n const dependencies: MCPHandlerDependencies = {\n frameManager: this.frameManager as any,\n contextRetrieval: this.contextRetrieval,\n taskStore: this.taskStore,\n projectId: this.projectId,\n linearAuthManager: this.linearAuthManager,\n linearSync: this.linearSync,\n traceDetector: this.traceDetector,\n browserMCP: this.browserMCP,\n };\n\n this.handlerFactory = new MCPHandlerFactory(dependencies);\n this.toolDefinitions = new MCPToolDefinitions();\n\n // Setup tool listing handler\n this.setupToolListHandler();\n \n // Setup tool execution handler\n this.setupToolExecutionHandler();\n\n logger.info('MCP handlers configured');\n }\n\n /**\n * Setup tool listing handler\n */\n private setupToolListHandler(): void {\n this.server.setRequestHandler(\n z.object({\n method: z.literal('tools/list'),\n }),\n async () => {\n const tools = this.toolDefinitions.getAllToolDefinitions();\n \n logger.debug('Listed tools', { count: tools.length });\n \n return { tools };\n }\n );\n }\n\n /**\n * Setup tool execution handler\n */\n private setupToolExecutionHandler(): void {\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 logger.info('Tool call started', { toolName: name, callId });\n\n try {\n // Log tool call event\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 call_id: callId,\n });\n }\n\n // Check if handler exists\n if (!this.handlerFactory.hasHandler(name)) {\n throw new Error(`Unknown tool: ${name}`);\n }\n\n // Execute tool handler\n const handler = this.handlerFactory.getHandler(name);\n const result = await handler(args);\n\n const duration = Date.now() - startTime;\n\n // Score the tool call using current profile\n const score = await this.toolScoringMiddleware.scoreToolCall(\n name,\n args,\n result,\n undefined // no error\n );\n\n // Log tool result event with score\n if (currentFrameId) {\n this.frameManager.addEvent('tool_result', {\n tool_name: name,\n call_id: callId,\n duration,\n success: true,\n result_size: JSON.stringify(result).length,\n importance_score: score,\n profile: this.configManager.getConfig().profile || 'default',\n });\n }\n\n // Update trace detector\n if (this.traceDetector) {\n this.traceDetector.addToolCall({\n id: callId,\n tool: name,\n arguments: args,\n timestamp: startTime,\n result,\n duration,\n });\n }\n\n logger.info('Tool call completed', { \n toolName: name, \n callId, \n duration \n });\n\n return result;\n\n } catch (error: unknown) {\n const duration = Date.now() - startTime;\n const errorMessage = error instanceof Error ? error.message : String(error);\n\n // Score the failed tool call\n const score = await this.toolScoringMiddleware.scoreToolCall(\n name,\n args,\n undefined,\n errorMessage\n );\n\n // Log error event with score\n const currentFrameId = this.frameManager.getCurrentFrameId();\n if (currentFrameId) {\n this.frameManager.addEvent('tool_result', {\n tool_name: name,\n call_id: callId,\n duration,\n success: false,\n error: errorMessage,\n importance_score: score,\n profile: this.configManager.getConfig().profile || 'default',\n });\n }\n\n logger.error('Tool call failed', { \n toolName: name, \n callId, \n duration, \n error: errorMessage \n });\n\n return {\n content: [\n {\n type: 'text',\n text: `Error executing ${name}: ${errorMessage}`,\n },\n ],\n isError: true,\n };\n }\n }\n );\n }\n\n /**\n * Start the MCP server\n */\n async start(): Promise<void> {\n try {\n // Initialize components\n await this.frameManager.initialize();\n\n // Start server\n const transport = new StdioServerTransport();\n await this.server.connect(transport);\n\n logger.info('StackMemory MCP Server started', {\n projectRoot: this.projectRoot,\n projectId: this.projectId,\n availableTools: this.handlerFactory.getAvailableTools().length,\n });\n\n // Setup cleanup handlers\n this.setupCleanup();\n\n } catch (error: unknown) {\n logger.error('Failed to start MCP server', error instanceof Error ? error : new Error(String(error)));\n throw error;\n }\n }\n\n /**\n * Setup cleanup handlers\n */\n private setupCleanup(): void {\n const cleanup = async () => {\n logger.info('Shutting down MCP server...');\n \n try {\n if (this.browserMCP) {\n await this.browserMCP.cleanup();\n }\n \n if (this.db) {\n this.db.close();\n }\n \n logger.info('MCP server shutdown complete');\n } catch (error: unknown) {\n logger.error('Error during cleanup', error instanceof Error ? error : new Error(String(error)));\n }\n \n process.exit(0);\n };\n\n process.on('SIGINT', cleanup);\n process.on('SIGTERM', cleanup);\n process.on('uncaughtException', (error) => {\n logger.error('Uncaught exception', error instanceof Error ? error : new Error(String(error)));\n cleanup();\n });\n }\n\n /**\n * Find project root directory\n */\n private findProjectRoot(): string {\n let currentDir = process.cwd();\n const rootDir = '/';\n\n while (currentDir !== rootDir) {\n if (existsSync(join(currentDir, '.git'))) {\n return currentDir;\n }\n currentDir = dirname(currentDir);\n }\n\n return process.cwd();\n }\n\n /**\n * Get project ID from git remote or directory name\n */\n private getProjectId(): string {\n try {\n const remoteUrl = execSync('git remote get-url origin', { \n cwd: this.projectRoot, \n encoding: 'utf8' \n }).trim();\n \n const match = remoteUrl.match(/([^/]+\\/[^/]+)(?:\\.git)?$/);\n if (match) {\n return match[1];\n }\n } catch (error: unknown) {\n logger.debug('Could not get git remote URL', error);\n }\n\n return this.projectRoot.split('/').pop() || 'unknown';\n }\n}\n\n/**\n * Main entry point\n */\nasync function main(): Promise<void> {\n try {\n const config: MCPServerConfig = {\n headless: process.env['BROWSER_HEADLESS'] !== 'false',\n enableTracing: process.env['DISABLE_TRACING'] !== 'true',\n enableBrowser: process.env['DISABLE_BROWSER'] !== 'true',\n };\n\n const server = new RefactoredStackMemoryMCP(config);\n await server.start();\n\n } catch (error: unknown) {\n logger.error('Failed to start server', error instanceof Error ? error : new Error(String(error)));\n process.exit(1);\n }\n}\n\n// Run if this is the main module\nif (import.meta.url === `file://${process.argv[1]}`) {\n main().catch((error) => {\n console.error('Fatal error:', error);\n process.exit(1);\n });\n}\n\nexport { RefactoredStackMemoryMCP };"],
|
|
5
|
-
"mappings": "
|
|
5
|
+
"mappings": "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",
|
|
6
6
|
"names": []
|
|
7
7
|
}
|
|
@@ -1,4 +1,8 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
|
+
import { fileURLToPath as __fileURLToPath } from 'url';
|
|
3
|
+
import { dirname as __pathDirname } from 'path';
|
|
4
|
+
const __filename = __fileURLToPath(import.meta.url);
|
|
5
|
+
const __dirname = __pathDirname(__filename);
|
|
2
6
|
import { Server } from "@modelcontextprotocol/sdk/server/index.js";
|
|
3
7
|
import { StdioServerTransport } from "@modelcontextprotocol/sdk/server/stdio.js";
|
|
4
8
|
import { z } from "zod";
|
|
@@ -2,6 +2,6 @@
|
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../../src/integrations/mcp/server.ts"],
|
|
4
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 { readFileSync, existsSync, mkdirSync } from 'fs';\nimport { join, dirname } from 'path';\nimport { execSync } from 'child_process';\nimport { FrameManager, FrameType } from '../../core/context/frame-manager.js';\nimport {\n LinearTaskManager,\n TaskPriority,\n TaskStatus,\n} from '../../features/tasks/linear-task-manager.js';\nimport { LinearAuthManager, LinearOAuthSetup } from '../linear/auth.js';\nimport { LinearSyncEngine, DEFAULT_SYNC_CONFIG } from '../linear/sync.js';\nimport { logger } from '../../core/monitoring/logger.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 { 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// ============================================\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;\n private linearAuthManager: LinearAuthManager;\n private linearSync: LinearSyncEngine;\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\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 task store\n this.taskStore = new LinearTaskManager(this.projectRoot, this.db);\n\n // Initialize Linear integration\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 // 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 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 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 ],\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 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: any) {\n const { name, type, constraints } = args;\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: any) {\n const { type, text, priority = 5 } = args;\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: any) {\n const { title, description, priority, estimatedEffort, dependsOn, tags } =\n 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. 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 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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",
|
|
5
|
+
"mappings": "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",
|
|
6
6
|
"names": []
|
|
7
7
|
}
|
|
@@ -2,6 +2,6 @@
|
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../../src/integrations/mcp/tool-definitions-code.ts"],
|
|
4
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;",
|
|
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
6
|
"names": []
|
|
7
7
|
}
|
|
@@ -1,3 +1,7 @@
|
|
|
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);
|
|
1
5
|
class MCPToolDefinitions {
|
|
2
6
|
/**
|
|
3
7
|
* Get all tool definitions
|