@stackmemoryai/stackmemory 0.5.58 → 0.5.61
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +105 -1
- package/dist/scripts/benchmark-performance.js +48 -0
- package/dist/scripts/benchmark-performance.js.map +7 -0
- package/dist/scripts/check-redis.js +42 -0
- package/dist/scripts/check-redis.js.map +7 -0
- package/dist/scripts/initialize.js +116 -0
- package/dist/scripts/initialize.js.map +7 -0
- package/dist/scripts/list-linear-tasks.js +124 -0
- package/dist/scripts/list-linear-tasks.js.map +7 -0
- package/dist/scripts/measure-handoff-impact.js +340 -0
- package/dist/scripts/measure-handoff-impact.js.map +7 -0
- package/dist/scripts/query-chromadb.js +160 -0
- package/dist/scripts/query-chromadb.js.map +7 -0
- package/dist/scripts/show-linear-summary.js +119 -0
- package/dist/scripts/show-linear-summary.js.map +7 -0
- package/dist/scripts/simple-swarm-demo.js +90 -0
- package/dist/scripts/simple-swarm-demo.js.map +7 -0
- package/dist/scripts/status.js +155 -0
- package/dist/scripts/status.js.map +7 -0
- package/dist/scripts/test-chromadb-sync.js +192 -0
- package/dist/scripts/test-chromadb-sync.js.map +7 -0
- package/dist/scripts/test-ralph-iteration-fix.js +86 -0
- package/dist/scripts/test-ralph-iteration-fix.js.map +7 -0
- package/dist/scripts/test-ralph-iterations.js +121 -0
- package/dist/scripts/test-ralph-iterations.js.map +7 -0
- package/dist/scripts/test-redis-storage.js +389 -0
- package/dist/scripts/test-redis-storage.js.map +7 -0
- package/dist/scripts/test-simple-ralph-state-sync.js +115 -0
- package/dist/scripts/test-simple-ralph-state-sync.js.map +7 -0
- package/dist/scripts/test-swarm-fixes.js +125 -0
- package/dist/scripts/test-swarm-fixes.js.map +7 -0
- package/dist/scripts/test-swarm-tui.js +23 -0
- package/dist/scripts/test-swarm-tui.js.map +7 -0
- package/dist/scripts/test-tui-shortcuts.js +52 -0
- package/dist/scripts/test-tui-shortcuts.js.map +7 -0
- package/dist/scripts/validate-tui-shortcuts.js +60 -0
- package/dist/scripts/validate-tui-shortcuts.js.map +7 -0
- package/dist/src/agents/core/agent-task-manager.js.map +7 -0
- package/dist/src/agents/verifiers/base-verifier.js.map +7 -0
- package/dist/src/agents/verifiers/formatter-verifier.js.map +7 -0
- package/dist/src/agents/verifiers/llm-judge.js.map +7 -0
- package/dist/src/cli/auto-detect.js.map +7 -0
- package/dist/src/cli/claude-sm-danger.js.map +7 -0
- package/dist/src/cli/claude-sm.js +1236 -0
- package/dist/src/cli/claude-sm.js.map +7 -0
- package/dist/src/cli/codex-sm-danger.js.map +7 -0
- package/dist/src/cli/codex-sm.js.map +7 -0
- package/dist/src/cli/commands/api.js.map +7 -0
- package/dist/src/cli/commands/auto-background.js.map +7 -0
- package/dist/src/cli/commands/cleanup-processes.js.map +7 -0
- package/dist/src/cli/commands/clear.js.map +7 -0
- package/dist/src/cli/commands/config.js.map +7 -0
- package/dist/src/cli/commands/context-rehydrate.js.map +7 -0
- package/dist/src/cli/commands/context.js.map +7 -0
- package/dist/src/cli/commands/daemon.js.map +7 -0
- package/dist/src/cli/commands/dashboard.js.map +7 -0
- package/dist/src/cli/commands/db.js.map +7 -0
- package/dist/src/cli/commands/decision.js.map +7 -0
- package/dist/src/cli/commands/discovery.js.map +7 -0
- package/dist/src/cli/commands/handoff.js.map +7 -0
- package/dist/src/cli/commands/hooks.js.map +7 -0
- package/dist/src/cli/commands/linear.js.map +7 -0
- package/dist/src/cli/commands/log.js.map +7 -0
- package/dist/src/cli/commands/login.js.map +7 -0
- package/dist/src/cli/commands/migrate.js.map +7 -0
- package/dist/src/cli/commands/model.js.map +7 -0
- package/dist/src/cli/commands/onboard.js.map +7 -0
- package/dist/src/cli/commands/projects.js.map +7 -0
- package/dist/src/cli/commands/ralph.js.map +7 -0
- package/dist/src/cli/commands/retrieval.js.map +7 -0
- package/dist/src/cli/commands/search.js +173 -0
- package/dist/src/cli/commands/search.js.map +7 -0
- package/dist/src/cli/commands/service.js.map +7 -0
- package/dist/src/cli/commands/session.js.map +7 -0
- package/dist/src/cli/commands/settings.js.map +7 -0
- package/dist/src/cli/commands/setup.js.map +7 -0
- package/dist/src/cli/commands/shell.js.map +7 -0
- package/dist/src/cli/commands/signup.js.map +7 -0
- package/dist/src/cli/commands/skills.js.map +7 -0
- package/dist/src/cli/commands/sms-notify.js.map +7 -0
- package/dist/src/cli/commands/storage-tier.js.map +7 -0
- package/dist/src/cli/commands/sweep.js.map +7 -0
- package/dist/src/cli/commands/tasks.js.map +7 -0
- package/dist/src/cli/commands/worktree.js.map +7 -0
- package/dist/src/cli/index.js +609 -0
- package/dist/src/cli/index.js.map +7 -0
- package/dist/src/cli/opencode-sm.js.map +7 -0
- package/dist/src/cli/utils/viewer.js.map +7 -0
- package/dist/src/core/config/config-manager.js.map +7 -0
- package/dist/src/core/config/feature-flags.js.map +7 -0
- package/dist/src/core/config/storage-config.js.map +7 -0
- package/dist/src/core/config/types.js.map +7 -0
- package/dist/src/core/context/auto-context.js.map +7 -0
- package/dist/src/core/context/dual-stack-manager.js.map +7 -0
- package/dist/src/core/context/enhanced-rehydration.js.map +7 -0
- package/dist/src/core/context/frame-database.js.map +7 -0
- package/dist/src/core/context/frame-digest.js.map +7 -0
- package/dist/src/core/context/frame-handoff-manager.js.map +7 -0
- package/dist/src/core/context/frame-lifecycle-hooks.js.map +7 -0
- package/dist/src/core/context/frame-recovery.js.map +7 -0
- package/dist/src/core/context/frame-stack.js.map +7 -0
- package/dist/src/core/context/index.js.map +7 -0
- package/dist/src/core/context/permission-manager.js.map +7 -0
- package/dist/src/core/context/recursive-context-manager.js.map +7 -0
- package/dist/src/core/context/refactored-frame-manager.js.map +7 -0
- package/dist/src/core/context/shared-context-layer.js.map +7 -0
- package/dist/src/core/context/stack-merge-resolver.js.map +7 -0
- package/dist/src/core/context/validation.js.map +7 -0
- package/dist/src/core/database/batch-operations.js.map +7 -0
- package/dist/src/core/database/connection-pool.js.map +7 -0
- package/dist/src/core/database/database-adapter.js.map +7 -0
- package/dist/src/core/database/migration-manager.js.map +7 -0
- package/dist/src/core/database/query-cache.js.map +7 -0
- package/dist/src/core/database/query-router.js.map +7 -0
- package/dist/src/core/database/sqlite-adapter.js +738 -0
- package/dist/src/core/database/sqlite-adapter.js.map +7 -0
- package/dist/src/core/digest/enhanced-hybrid-digest.js.map +7 -0
- package/dist/src/core/digest/frame-digest-integration.js.map +7 -0
- package/dist/src/core/digest/hybrid-digest-generator.js.map +7 -0
- package/dist/src/core/digest/index.js.map +7 -0
- package/dist/src/core/digest/types.js.map +7 -0
- package/dist/src/core/errors/error-utils.js +208 -0
- package/dist/src/core/errors/error-utils.js.map +7 -0
- package/dist/src/core/errors/index.js +521 -0
- package/dist/src/core/errors/index.js.map +7 -0
- package/dist/src/core/errors/recovery.js.map +7 -0
- package/dist/src/core/execution/parallel-executor.js.map +7 -0
- package/dist/src/core/extensions/custom-tools.js +567 -0
- package/dist/src/core/extensions/custom-tools.js.map +7 -0
- package/dist/src/core/extensions/index.js +55 -0
- package/dist/src/core/extensions/index.js.map +7 -0
- package/dist/src/core/extensions/loader.js +709 -0
- package/dist/src/core/extensions/loader.js.map +7 -0
- package/dist/src/core/extensions/plugin-system.js +506 -0
- package/dist/src/core/extensions/plugin-system.js.map +7 -0
- package/dist/src/core/extensions/provider-adapter.js +617 -0
- package/dist/src/core/extensions/provider-adapter.js.map +7 -0
- package/dist/src/core/extensions/sandbox-runtime.js +664 -0
- package/dist/src/core/extensions/sandbox-runtime.js.map +7 -0
- package/dist/src/core/frame/workflow-templates.js.map +7 -0
- package/dist/src/core/merge/conflict-detector.js.map +7 -0
- package/dist/src/core/merge/index.js.map +7 -0
- package/dist/src/core/merge/resolution-engine.js.map +7 -0
- package/dist/src/core/merge/stack-diff.js.map +7 -0
- package/dist/src/core/merge/unified-merge-resolver.js +303 -0
- package/dist/src/core/merge/unified-merge-resolver.js.map +7 -0
- package/dist/src/core/models/fallback-monitor.js.map +7 -0
- package/dist/src/core/models/model-router.js.map +7 -0
- package/dist/src/core/monitoring/error-handler.js.map +7 -0
- package/dist/src/core/monitoring/logger.js +202 -0
- package/dist/src/core/monitoring/logger.js.map +7 -0
- package/dist/src/core/monitoring/metrics.js.map +7 -0
- package/dist/src/core/monitoring/progress-tracker.js.map +7 -0
- package/dist/src/core/monitoring/session-monitor.js.map +7 -0
- package/dist/src/core/performance/context-cache.js.map +7 -0
- package/dist/src/core/performance/index.js.map +7 -0
- package/dist/src/core/performance/lazy-context-loader.js.map +7 -0
- package/dist/src/core/performance/monitor.js.map +7 -0
- package/dist/src/core/performance/optimized-frame-context.js.map +7 -0
- package/dist/src/core/performance/performance-benchmark.js.map +7 -0
- package/dist/src/core/performance/performance-profiler.js.map +7 -0
- package/dist/src/core/performance/streaming-jsonl-parser.js.map +7 -0
- package/dist/src/core/persistence/postgres-adapter.js.map +7 -0
- package/dist/src/core/projects/project-isolation.js.map +7 -0
- package/dist/src/core/projects/project-manager.js.map +7 -0
- package/dist/src/core/query/query-parser.js.map +7 -0
- package/dist/src/core/query/query-templates.js.map +7 -0
- package/dist/src/core/retrieval/context-retriever.js.map +7 -0
- package/dist/src/core/retrieval/index.js.map +7 -0
- package/dist/src/core/retrieval/llm-context-retrieval.js.map +7 -0
- package/dist/src/core/retrieval/llm-provider.js.map +7 -0
- package/dist/src/core/retrieval/retrieval-audit.js.map +7 -0
- package/dist/src/core/retrieval/summary-generator.js.map +7 -0
- package/dist/src/core/retrieval/types.js.map +7 -0
- package/dist/src/core/security/index.js +35 -0
- package/dist/src/core/security/index.js.map +7 -0
- package/dist/src/core/security/input-sanitizer.js +321 -0
- package/dist/src/core/security/input-sanitizer.js.map +7 -0
- package/dist/src/core/session/clear-survival.js.map +7 -0
- package/dist/src/core/session/enhanced-handoff.js.map +7 -0
- package/dist/src/core/session/handoff-generator.js.map +7 -0
- package/dist/src/core/session/index.js.map +7 -0
- package/dist/src/core/session/session-manager.js.map +7 -0
- package/dist/src/core/skills/index.js.map +7 -0
- package/dist/src/core/skills/skill-storage.js.map +7 -0
- package/dist/src/core/skills/types.js.map +7 -0
- package/dist/src/core/storage/chromadb-adapter.js +380 -0
- package/dist/src/core/storage/chromadb-adapter.js.map +7 -0
- package/dist/src/core/storage/infinite-storage.js.map +7 -0
- package/dist/src/core/storage/remote-storage.js.map +7 -0
- package/dist/src/core/storage/two-tier-storage.js.map +7 -0
- package/dist/src/core/trace/cli-trace-wrapper.js.map +7 -0
- package/dist/src/core/trace/db-trace-wrapper.js.map +7 -0
- package/dist/src/core/trace/debug-trace.js.map +7 -0
- package/dist/src/core/trace/index.js.map +7 -0
- package/dist/src/core/trace/linear-api-wrapper.js.map +7 -0
- package/dist/src/core/trace/trace-detector.js.map +7 -0
- package/dist/src/core/trace/trace-store.js.map +7 -0
- package/dist/src/core/trace/types.js.map +7 -0
- package/dist/src/core/utils/async-mutex.js.map +7 -0
- package/dist/src/core/utils/compression.js.map +7 -0
- package/dist/src/core/utils/update-checker.js.map +7 -0
- package/dist/src/core/worktree/worktree-manager.js.map +7 -0
- package/dist/src/daemon/daemon-config.js.map +7 -0
- package/dist/src/daemon/services/context-service.js.map +7 -0
- package/dist/src/daemon/services/linear-service.js.map +7 -0
- package/dist/src/daemon/session-daemon.js.map +7 -0
- package/dist/src/daemon/unified-daemon.js.map +7 -0
- package/dist/src/features/analytics/api/analytics-api.js.map +7 -0
- package/dist/src/features/analytics/core/analytics-service.js.map +7 -0
- package/dist/src/features/analytics/index.js.map +7 -0
- package/dist/src/features/analytics/queries/metrics-queries.js.map +7 -0
- package/dist/src/features/browser/browser-mcp.js.map +7 -0
- package/dist/src/features/sweep/index.js.map +7 -0
- package/dist/src/features/sweep/prediction-client.js.map +7 -0
- package/dist/src/features/sweep/prompt-builder.js.map +7 -0
- package/dist/src/features/sweep/pty-wrapper.js.map +7 -0
- package/dist/src/features/sweep/state-watcher.js.map +7 -0
- package/dist/src/features/sweep/status-bar.js.map +7 -0
- package/dist/src/features/sweep/sweep-server-manager.js.map +7 -0
- package/dist/src/features/sweep/tab-interceptor.js.map +7 -0
- package/dist/src/features/sweep/types.js.map +7 -0
- package/dist/src/features/tasks/linear-task-manager.js.map +7 -0
- package/dist/src/features/tasks/task-aware-context.js.map +7 -0
- package/dist/src/features/tui/simple-monitor.js.map +7 -0
- package/dist/src/features/tui/swarm-monitor.js.map +7 -0
- package/dist/src/features/web/client/stores/task-store.js.map +7 -0
- package/dist/src/features/web/server/index.js.map +7 -0
- package/dist/src/hooks/auto-background.js.map +7 -0
- package/dist/src/hooks/claude-code-whatsapp-hook.js.map +7 -0
- package/dist/src/hooks/config.js.map +7 -0
- package/dist/src/hooks/daemon.js.map +7 -0
- package/dist/src/hooks/events.js.map +7 -0
- package/dist/src/hooks/index.js.map +7 -0
- package/dist/src/hooks/linear-task-picker.js.map +7 -0
- package/dist/src/hooks/schemas.js.map +7 -0
- package/dist/src/hooks/secure-fs.js.map +7 -0
- package/dist/src/hooks/security-logger.js.map +7 -0
- package/dist/src/hooks/session-summary.js.map +7 -0
- package/dist/src/hooks/sms-action-runner.js.map +7 -0
- package/dist/src/hooks/sms-notify.js.map +7 -0
- package/dist/src/hooks/sms-watcher.js.map +7 -0
- package/dist/src/hooks/sms-webhook.js.map +7 -0
- package/dist/src/hooks/whatsapp-commands.js.map +7 -0
- package/dist/src/hooks/whatsapp-scheduler.js.map +7 -0
- package/dist/src/hooks/whatsapp-sync.js.map +7 -0
- package/dist/src/index.js.map +7 -0
- package/dist/src/integrations/anthropic/client.js.map +7 -0
- package/dist/src/integrations/claude-code/agent-bridge.js.map +7 -0
- package/dist/src/integrations/claude-code/enhanced-pre-clear-hooks.js.map +7 -0
- package/dist/src/integrations/claude-code/lifecycle-hooks.js.map +7 -0
- package/dist/src/integrations/claude-code/post-task-hooks.js.map +7 -0
- package/dist/src/integrations/claude-code/subagent-client-stub.js.map +7 -0
- package/dist/src/integrations/claude-code/subagent-client.js.map +7 -0
- package/dist/src/integrations/claude-code/task-coordinator.js.map +7 -0
- package/dist/src/integrations/linear/auth.js.map +7 -0
- package/dist/src/integrations/linear/auto-sync.js.map +7 -0
- package/dist/src/integrations/linear/client.js +634 -0
- package/dist/src/integrations/linear/client.js.map +7 -0
- package/dist/src/integrations/linear/config.js.map +7 -0
- package/dist/src/integrations/linear/migration.js.map +7 -0
- package/dist/src/integrations/linear/oauth-server.js.map +7 -0
- package/dist/src/integrations/linear/rest-client.js.map +7 -0
- package/dist/src/integrations/linear/sync-manager.js.map +7 -0
- package/dist/src/integrations/linear/sync-service.js.map +7 -0
- package/dist/src/integrations/linear/sync.js.map +7 -0
- package/dist/src/integrations/linear/unified-sync.js.map +7 -0
- package/dist/src/integrations/linear/webhook-handler.js.map +7 -0
- package/dist/src/integrations/linear/webhook-server.js.map +7 -0
- package/dist/src/integrations/linear/webhook.js.map +7 -0
- package/dist/src/integrations/mcp/handlers/code-execution-handlers.js.map +7 -0
- package/dist/src/integrations/mcp/handlers/context-handlers.js.map +7 -0
- package/dist/src/integrations/mcp/handlers/discovery-handlers.js.map +7 -0
- package/dist/src/integrations/mcp/handlers/index.js.map +7 -0
- package/dist/src/integrations/mcp/handlers/linear-handlers.js.map +7 -0
- package/dist/src/integrations/mcp/handlers/skill-handlers.js.map +7 -0
- package/dist/src/integrations/mcp/handlers/task-handlers.js.map +7 -0
- package/dist/src/integrations/mcp/handlers/trace-handlers.js.map +7 -0
- package/dist/src/integrations/mcp/index.js.map +7 -0
- package/dist/src/integrations/mcp/middleware/tool-scoring.js.map +7 -0
- package/dist/src/integrations/mcp/refactored-server.js.map +7 -0
- package/dist/src/integrations/mcp/remote-server.js +682 -0
- package/dist/src/integrations/mcp/remote-server.js.map +7 -0
- package/dist/src/integrations/mcp/schemas.js.map +7 -0
- package/dist/src/integrations/mcp/server.js +1975 -0
- package/dist/src/integrations/mcp/server.js.map +7 -0
- package/dist/src/integrations/mcp/tool-definitions-code.js.map +7 -0
- package/dist/src/integrations/mcp/tool-definitions.js.map +7 -0
- package/dist/src/integrations/ralph/bridge/ralph-stackmemory-bridge.js.map +7 -0
- package/dist/src/integrations/ralph/context/context-budget-manager.js.map +7 -0
- package/dist/src/integrations/ralph/context/stackmemory-context-loader.js.map +7 -0
- package/dist/src/integrations/ralph/coordination/enhanced-coordination.js.map +7 -0
- package/dist/src/integrations/ralph/index.js.map +7 -0
- package/dist/src/integrations/ralph/learning/pattern-learner.js.map +7 -0
- package/dist/src/integrations/ralph/lifecycle/iteration-lifecycle.js.map +7 -0
- package/dist/src/integrations/ralph/monitoring/swarm-dashboard.js.map +7 -0
- package/dist/src/integrations/ralph/monitoring/swarm-registry.js.map +7 -0
- package/dist/src/integrations/ralph/orchestration/multi-loop-orchestrator.js.map +7 -0
- package/dist/src/integrations/ralph/patterns/compounding-engineering-pattern.js.map +7 -0
- package/dist/src/integrations/ralph/patterns/extended-coherence-sessions.js.map +7 -0
- package/dist/src/integrations/ralph/patterns/oracle-worker-pattern.js.map +7 -0
- package/dist/src/integrations/ralph/performance/performance-optimizer.js.map +7 -0
- package/dist/src/integrations/ralph/recovery/crash-recovery.js.map +7 -0
- package/dist/src/integrations/ralph/state/state-reconciler.js.map +7 -0
- package/dist/src/integrations/ralph/swarm/git-workflow-manager.js.map +7 -0
- package/dist/src/integrations/ralph/swarm/swarm-coordinator.js.map +7 -0
- package/dist/src/integrations/ralph/types.js +5 -0
- package/dist/src/integrations/ralph/visualization/ralph-debugger.js.map +7 -0
- package/dist/src/mcp/stackmemory-mcp-server.js.map +7 -0
- package/dist/src/middleware/exponential-rate-limiter.js.map +7 -0
- package/dist/src/models/user.model.js.map +7 -0
- package/dist/src/servers/production/auth-middleware.js.map +7 -0
- package/dist/src/services/config-service.js.map +7 -0
- package/dist/src/services/context-service.js.map +7 -0
- package/dist/src/skills/api-discovery.js.map +7 -0
- package/dist/src/skills/api-skill.js.map +7 -0
- package/dist/src/skills/claude-skills.js.map +7 -0
- package/dist/src/skills/dashboard-launcher.js.map +7 -0
- package/dist/src/skills/recursive-agent-orchestrator.js.map +7 -0
- package/dist/src/skills/repo-ingestion-skill.js +632 -0
- package/dist/src/skills/repo-ingestion-skill.js.map +7 -0
- package/dist/src/skills/unified-rlm-orchestrator.js.map +7 -0
- package/dist/src/types/task.js.map +7 -0
- package/dist/src/utils/env.js.map +7 -0
- package/dist/src/utils/formatting.js.map +7 -0
- package/dist/src/utils/process-cleanup.js.map +7 -0
- package/package.json +13 -9
- package/scripts/background-sync-manager.js +145 -83
- package/scripts/claude-sm-autostart.js +17 -12
- package/scripts/gepa/README.md +275 -0
- package/scripts/gepa/config.json +53 -0
- package/scripts/gepa/evals/coding-tasks.jsonl +5 -0
- package/scripts/gepa/evals/fixtures/buggy-loop.js +18 -0
- package/scripts/gepa/evals/fixtures/callback-hell.js +53 -0
- package/scripts/gepa/generations/gen-000/baseline.md +124 -0
- package/scripts/gepa/hooks/auto-optimize.js +494 -0
- package/scripts/gepa/hooks/eval-tracker.js +203 -0
- package/scripts/gepa/hooks/reflect.js +311 -0
- package/scripts/gepa/optimize.js +611 -0
- package/scripts/gepa/state.json +14 -0
- package/scripts/initialize.ts +16 -7
- package/scripts/install.sh +14 -62
- package/scripts/status.ts +111 -46
- package/scripts/test-pre-publish-quick.sh +1 -1
- package/dist/agents/core/agent-task-manager.js.map +0 -7
- package/dist/agents/testing-agent.js +0 -614
- package/dist/agents/testing-agent.js.map +0 -7
- package/dist/agents/verifiers/base-verifier.js.map +0 -7
- package/dist/agents/verifiers/formatter-verifier.js.map +0 -7
- package/dist/agents/verifiers/llm-judge.js.map +0 -7
- package/dist/cli/auto-detect.js.map +0 -7
- package/dist/cli/browser-test.js +0 -33
- package/dist/cli/browser-test.js.map +0 -7
- package/dist/cli/claude-sm-danger.js.map +0 -7
- package/dist/cli/claude-sm.js +0 -1156
- package/dist/cli/claude-sm.js.map +0 -7
- package/dist/cli/codex-sm-danger.js.map +0 -7
- package/dist/cli/codex-sm.js.map +0 -7
- package/dist/cli/commands/api.js.map +0 -7
- package/dist/cli/commands/auto-background.js.map +0 -7
- package/dist/cli/commands/cleanup-processes.js.map +0 -7
- package/dist/cli/commands/clear.js.map +0 -7
- package/dist/cli/commands/config.js.map +0 -7
- package/dist/cli/commands/context-rehydrate.js.map +0 -7
- package/dist/cli/commands/context.js.map +0 -7
- package/dist/cli/commands/daemon.js.map +0 -7
- package/dist/cli/commands/dashboard.js.map +0 -7
- package/dist/cli/commands/db.js.map +0 -7
- package/dist/cli/commands/decision.js.map +0 -7
- package/dist/cli/commands/discovery.js.map +0 -7
- package/dist/cli/commands/handoff.js.map +0 -7
- package/dist/cli/commands/hooks.js.map +0 -7
- package/dist/cli/commands/linear-unified.js +0 -353
- package/dist/cli/commands/linear-unified.js.map +0 -7
- package/dist/cli/commands/linear.js.map +0 -7
- package/dist/cli/commands/log.js.map +0 -7
- package/dist/cli/commands/login.js.map +0 -7
- package/dist/cli/commands/migrate.js.map +0 -7
- package/dist/cli/commands/model.js.map +0 -7
- package/dist/cli/commands/monitor.js +0 -313
- package/dist/cli/commands/monitor.js.map +0 -7
- package/dist/cli/commands/onboard.js.map +0 -7
- package/dist/cli/commands/projects.js.map +0 -7
- package/dist/cli/commands/quality.js +0 -413
- package/dist/cli/commands/quality.js.map +0 -7
- package/dist/cli/commands/ralph.js.map +0 -7
- package/dist/cli/commands/retrieval.js.map +0 -7
- package/dist/cli/commands/search.js +0 -156
- package/dist/cli/commands/search.js.map +0 -7
- package/dist/cli/commands/service.js.map +0 -7
- package/dist/cli/commands/session.js.map +0 -7
- package/dist/cli/commands/settings.js.map +0 -7
- package/dist/cli/commands/setup.js.map +0 -7
- package/dist/cli/commands/shell.js.map +0 -7
- package/dist/cli/commands/signup.js.map +0 -7
- package/dist/cli/commands/skills.js.map +0 -7
- package/dist/cli/commands/sms-notify.js.map +0 -7
- package/dist/cli/commands/storage-tier.js.map +0 -7
- package/dist/cli/commands/storage.js +0 -360
- package/dist/cli/commands/storage.js.map +0 -7
- package/dist/cli/commands/sweep.js.map +0 -7
- package/dist/cli/commands/tasks.js.map +0 -7
- package/dist/cli/commands/test.js +0 -286
- package/dist/cli/commands/test.js.map +0 -7
- package/dist/cli/commands/workflow.js +0 -142
- package/dist/cli/commands/workflow.js.map +0 -7
- package/dist/cli/commands/worktree.js.map +0 -7
- package/dist/cli/index.js +0 -594
- package/dist/cli/index.js.map +0 -7
- package/dist/cli/opencode-sm.js.map +0 -7
- package/dist/cli/utils/viewer.js.map +0 -7
- package/dist/core/analytics/team-analytics.js +0 -378
- package/dist/core/analytics/team-analytics.js.map +0 -7
- package/dist/core/config/config-manager.js.map +0 -7
- package/dist/core/config/feature-flags.js.map +0 -7
- package/dist/core/config/storage-config.js.map +0 -7
- package/dist/core/config/types.js.map +0 -7
- package/dist/core/context/auto-context.js.map +0 -7
- package/dist/core/context/dual-stack-manager.js.map +0 -7
- package/dist/core/context/enhanced-rehydration.js.map +0 -7
- package/dist/core/context/frame-database.js.map +0 -7
- package/dist/core/context/frame-digest.js.map +0 -7
- package/dist/core/context/frame-handoff-manager.js.map +0 -7
- package/dist/core/context/frame-lifecycle-hooks.js.map +0 -7
- package/dist/core/context/frame-manager.js +0 -1069
- package/dist/core/context/frame-manager.js.map +0 -7
- package/dist/core/context/frame-recovery.js.map +0 -7
- package/dist/core/context/frame-stack.js.map +0 -7
- package/dist/core/context/incremental-gc.js +0 -290
- package/dist/core/context/incremental-gc.js.map +0 -7
- package/dist/core/context/index.js.map +0 -7
- package/dist/core/context/model-aware-compaction.js +0 -623
- package/dist/core/context/model-aware-compaction.js.map +0 -7
- package/dist/core/context/permission-manager.js.map +0 -7
- package/dist/core/context/recursive-context-manager.js.map +0 -7
- package/dist/core/context/refactored-frame-manager.js.map +0 -7
- package/dist/core/context/shared-context-layer.js.map +0 -7
- package/dist/core/context/stack-merge-resolver.js.map +0 -7
- package/dist/core/context/validation.js.map +0 -7
- package/dist/core/database/batch-operations.js.map +0 -7
- package/dist/core/database/connection-pool.js.map +0 -7
- package/dist/core/database/database-adapter.js.map +0 -7
- package/dist/core/database/migration-manager.js.map +0 -7
- package/dist/core/database/paradedb-adapter.js +0 -990
- package/dist/core/database/paradedb-adapter.js.map +0 -7
- package/dist/core/database/query-cache.js.map +0 -7
- package/dist/core/database/query-router.js.map +0 -7
- package/dist/core/database/sqlite-adapter.js +0 -728
- package/dist/core/database/sqlite-adapter.js.map +0 -7
- package/dist/core/digest/enhanced-hybrid-digest.js.map +0 -7
- package/dist/core/digest/frame-digest-integration.js.map +0 -7
- package/dist/core/digest/hybrid-digest-generator.js.map +0 -7
- package/dist/core/digest/index.js.map +0 -7
- package/dist/core/digest/types.js.map +0 -7
- package/dist/core/errors/index.js +0 -512
- package/dist/core/errors/index.js.map +0 -7
- package/dist/core/errors/recovery.js.map +0 -7
- package/dist/core/execution/parallel-executor.js.map +0 -7
- package/dist/core/frame/workflow-templates.js.map +0 -7
- package/dist/core/merge/conflict-detector.js.map +0 -7
- package/dist/core/merge/index.js.map +0 -7
- package/dist/core/merge/resolution-engine.js.map +0 -7
- package/dist/core/merge/stack-diff.js.map +0 -7
- package/dist/core/models/fallback-monitor.js.map +0 -7
- package/dist/core/models/model-router.js.map +0 -7
- package/dist/core/monitoring/error-handler.js.map +0 -7
- package/dist/core/monitoring/logger.js +0 -150
- package/dist/core/monitoring/logger.js.map +0 -7
- package/dist/core/monitoring/metrics.js.map +0 -7
- package/dist/core/monitoring/progress-tracker.js.map +0 -7
- package/dist/core/monitoring/session-monitor.js.map +0 -7
- package/dist/core/performance/context-cache.js.map +0 -7
- package/dist/core/performance/index.js.map +0 -7
- package/dist/core/performance/lazy-context-loader.js.map +0 -7
- package/dist/core/performance/monitor.js.map +0 -7
- package/dist/core/performance/optimized-frame-context.js.map +0 -7
- package/dist/core/performance/performance-benchmark.js.map +0 -7
- package/dist/core/performance/performance-profiler.js.map +0 -7
- package/dist/core/performance/streaming-jsonl-parser.js.map +0 -7
- package/dist/core/persistence/postgres-adapter.js.map +0 -7
- package/dist/core/projects/project-isolation.js.map +0 -7
- package/dist/core/projects/project-manager.js.map +0 -7
- package/dist/core/query/query-parser.js.map +0 -7
- package/dist/core/query/query-templates.js.map +0 -7
- package/dist/core/retrieval/context-retriever.js.map +0 -7
- package/dist/core/retrieval/graph-retrieval.js +0 -662
- package/dist/core/retrieval/graph-retrieval.js.map +0 -7
- package/dist/core/retrieval/hierarchical-retrieval.js +0 -656
- package/dist/core/retrieval/hierarchical-retrieval.js.map +0 -7
- package/dist/core/retrieval/index.js.map +0 -7
- package/dist/core/retrieval/llm-context-retrieval.js.map +0 -7
- package/dist/core/retrieval/llm-provider.js.map +0 -7
- package/dist/core/retrieval/retrieval-audit.js.map +0 -7
- package/dist/core/retrieval/retrieval-benchmarks.js +0 -521
- package/dist/core/retrieval/retrieval-benchmarks.js.map +0 -7
- package/dist/core/retrieval/summary-generator.js.map +0 -7
- package/dist/core/retrieval/types.js.map +0 -7
- package/dist/core/session/clear-survival.js.map +0 -7
- package/dist/core/session/enhanced-handoff.js.map +0 -7
- package/dist/core/session/handoff-generator.js.map +0 -7
- package/dist/core/session/index.js.map +0 -7
- package/dist/core/session/session-manager.js.map +0 -7
- package/dist/core/skills/index.js.map +0 -7
- package/dist/core/skills/skill-storage.js.map +0 -7
- package/dist/core/skills/types.js.map +0 -7
- package/dist/core/storage/chromadb-adapter.js +0 -354
- package/dist/core/storage/chromadb-adapter.js.map +0 -7
- package/dist/core/storage/infinite-storage.js.map +0 -7
- package/dist/core/storage/railway-optimized-storage.js +0 -591
- package/dist/core/storage/railway-optimized-storage.js.map +0 -7
- package/dist/core/storage/remote-storage.js.map +0 -7
- package/dist/core/storage/two-tier-storage.js.map +0 -7
- package/dist/core/trace/cli-trace-wrapper.js.map +0 -7
- package/dist/core/trace/db-trace-wrapper.js.map +0 -7
- package/dist/core/trace/debug-trace.js.map +0 -7
- package/dist/core/trace/index.js.map +0 -7
- package/dist/core/trace/linear-api-wrapper.js.map +0 -7
- package/dist/core/trace/trace-demo.js +0 -154
- package/dist/core/trace/trace-demo.js.map +0 -7
- package/dist/core/trace/trace-detector.demo.js +0 -142
- package/dist/core/trace/trace-detector.demo.js.map +0 -7
- package/dist/core/trace/trace-detector.js.map +0 -7
- package/dist/core/trace/trace-store.js.map +0 -7
- package/dist/core/trace/types.js.map +0 -7
- package/dist/core/utils/async-mutex.js.map +0 -7
- package/dist/core/utils/compression.js.map +0 -7
- package/dist/core/utils/update-checker.js.map +0 -7
- package/dist/core/worktree/worktree-manager.js.map +0 -7
- package/dist/daemon/daemon-config.js.map +0 -7
- package/dist/daemon/services/context-service.js.map +0 -7
- package/dist/daemon/services/linear-service.js.map +0 -7
- package/dist/daemon/session-daemon.js.map +0 -7
- package/dist/daemon/unified-daemon.js.map +0 -7
- package/dist/features/analytics/api/analytics-api.js.map +0 -7
- package/dist/features/analytics/core/analytics-service.js.map +0 -7
- package/dist/features/analytics/index.js.map +0 -7
- package/dist/features/analytics/queries/metrics-queries.js.map +0 -7
- package/dist/features/browser/browser-mcp.js.map +0 -7
- package/dist/features/sweep/index.js.map +0 -7
- package/dist/features/sweep/prediction-client.js.map +0 -7
- package/dist/features/sweep/prompt-builder.js.map +0 -7
- package/dist/features/sweep/pty-wrapper.js.map +0 -7
- package/dist/features/sweep/state-watcher.js.map +0 -7
- package/dist/features/sweep/status-bar.js.map +0 -7
- package/dist/features/sweep/sweep-server-manager.js.map +0 -7
- package/dist/features/sweep/tab-interceptor.js.map +0 -7
- package/dist/features/sweep/types.js.map +0 -7
- package/dist/features/tasks/linear-task-manager.js.map +0 -7
- package/dist/features/tasks/task-aware-context.js.map +0 -7
- package/dist/features/tui/simple-monitor.js.map +0 -7
- package/dist/features/tui/swarm-monitor.js.map +0 -7
- package/dist/features/web/client/stores/task-store.js.map +0 -7
- package/dist/features/web/server/index.js.map +0 -7
- package/dist/hooks/auto-background.js.map +0 -7
- package/dist/hooks/claude-code-whatsapp-hook.js.map +0 -7
- package/dist/hooks/config.js.map +0 -7
- package/dist/hooks/daemon.js.map +0 -7
- package/dist/hooks/events.js.map +0 -7
- package/dist/hooks/index.js.map +0 -7
- package/dist/hooks/linear-task-picker.js.map +0 -7
- package/dist/hooks/schemas.js.map +0 -7
- package/dist/hooks/secure-fs.js.map +0 -7
- package/dist/hooks/security-logger.js.map +0 -7
- package/dist/hooks/session-summary.js.map +0 -7
- package/dist/hooks/sms-action-runner.js.map +0 -7
- package/dist/hooks/sms-notify.js.map +0 -7
- package/dist/hooks/sms-watcher.js.map +0 -7
- package/dist/hooks/sms-webhook.js.map +0 -7
- package/dist/hooks/whatsapp-commands.js.map +0 -7
- package/dist/hooks/whatsapp-scheduler.js.map +0 -7
- package/dist/hooks/whatsapp-sync.js.map +0 -7
- package/dist/index.js.map +0 -7
- package/dist/integrations/anthropic/client.js.map +0 -7
- package/dist/integrations/claude-code/agent-bridge.js.map +0 -7
- package/dist/integrations/claude-code/enhanced-pre-clear-hooks.js.map +0 -7
- package/dist/integrations/claude-code/lifecycle-hooks.js.map +0 -7
- package/dist/integrations/claude-code/post-task-hooks.js.map +0 -7
- package/dist/integrations/claude-code/subagent-client-stub.js.map +0 -7
- package/dist/integrations/claude-code/subagent-client.js.map +0 -7
- package/dist/integrations/claude-code/task-coordinator.js.map +0 -7
- package/dist/integrations/linear/auth.js.map +0 -7
- package/dist/integrations/linear/auto-sync.js.map +0 -7
- package/dist/integrations/linear/client.js +0 -630
- package/dist/integrations/linear/client.js.map +0 -7
- package/dist/integrations/linear/config.js.map +0 -7
- package/dist/integrations/linear/migration.js.map +0 -7
- package/dist/integrations/linear/oauth-server.js.map +0 -7
- package/dist/integrations/linear/rest-client.js.map +0 -7
- package/dist/integrations/linear/sync-manager.js.map +0 -7
- package/dist/integrations/linear/sync-service.js.map +0 -7
- package/dist/integrations/linear/sync.js.map +0 -7
- package/dist/integrations/linear/unified-sync.js.map +0 -7
- package/dist/integrations/linear/webhook-handler.js.map +0 -7
- package/dist/integrations/linear/webhook-server.js.map +0 -7
- package/dist/integrations/linear/webhook.js.map +0 -7
- package/dist/integrations/mcp/handlers/code-execution-handlers.js.map +0 -7
- package/dist/integrations/mcp/handlers/context-handlers.js.map +0 -7
- package/dist/integrations/mcp/handlers/discovery-handlers.js.map +0 -7
- package/dist/integrations/mcp/handlers/index.js.map +0 -7
- package/dist/integrations/mcp/handlers/linear-handlers.js.map +0 -7
- package/dist/integrations/mcp/handlers/skill-handlers.js.map +0 -7
- package/dist/integrations/mcp/handlers/task-handlers.js.map +0 -7
- package/dist/integrations/mcp/handlers/trace-handlers.js.map +0 -7
- package/dist/integrations/mcp/index.js.map +0 -7
- package/dist/integrations/mcp/middleware/tool-scoring.js.map +0 -7
- package/dist/integrations/mcp/refactored-server.js.map +0 -7
- package/dist/integrations/mcp/remote-server.js +0 -691
- package/dist/integrations/mcp/remote-server.js.map +0 -7
- package/dist/integrations/mcp/schemas.js.map +0 -7
- package/dist/integrations/mcp/server.js +0 -1960
- package/dist/integrations/mcp/server.js.map +0 -7
- package/dist/integrations/mcp/tool-definitions-code.js.map +0 -7
- package/dist/integrations/mcp/tool-definitions.js.map +0 -7
- package/dist/integrations/mcp/trace-test.js +0 -48
- package/dist/integrations/mcp/trace-test.js.map +0 -7
- package/dist/integrations/pg-aiguide/embedding-provider.js +0 -189
- package/dist/integrations/pg-aiguide/embedding-provider.js.map +0 -7
- package/dist/integrations/pg-aiguide/semantic-search.js +0 -187
- package/dist/integrations/pg-aiguide/semantic-search.js.map +0 -7
- package/dist/integrations/pg-aiguide/timescale-analytics.js +0 -224
- package/dist/integrations/pg-aiguide/timescale-analytics.js.map +0 -7
- package/dist/integrations/ralph/bridge/ralph-stackmemory-bridge.js.map +0 -7
- package/dist/integrations/ralph/context/context-budget-manager.js.map +0 -7
- package/dist/integrations/ralph/context/stackmemory-context-loader.js.map +0 -7
- package/dist/integrations/ralph/coordination/enhanced-coordination.js.map +0 -7
- package/dist/integrations/ralph/index.js.map +0 -7
- package/dist/integrations/ralph/learning/pattern-learner.js.map +0 -7
- package/dist/integrations/ralph/lifecycle/iteration-lifecycle.js.map +0 -7
- package/dist/integrations/ralph/monitoring/swarm-dashboard.js.map +0 -7
- package/dist/integrations/ralph/monitoring/swarm-registry.js.map +0 -7
- package/dist/integrations/ralph/orchestration/multi-loop-orchestrator.js.map +0 -7
- package/dist/integrations/ralph/patterns/compounding-engineering-pattern.js.map +0 -7
- package/dist/integrations/ralph/patterns/extended-coherence-sessions.js.map +0 -7
- package/dist/integrations/ralph/patterns/oracle-worker-pattern.js.map +0 -7
- package/dist/integrations/ralph/performance/performance-optimizer.js.map +0 -7
- package/dist/integrations/ralph/ralph-integration-demo.js +0 -182
- package/dist/integrations/ralph/ralph-integration-demo.js.map +0 -7
- package/dist/integrations/ralph/recovery/crash-recovery.js.map +0 -7
- package/dist/integrations/ralph/state/state-reconciler.js.map +0 -7
- package/dist/integrations/ralph/swarm/git-workflow-manager.js.map +0 -7
- package/dist/integrations/ralph/swarm/swarm-coordinator.js.map +0 -7
- package/dist/integrations/ralph/visualization/ralph-debugger.js.map +0 -7
- package/dist/mcp/stackmemory-mcp-server.js.map +0 -7
- package/dist/middleware/exponential-rate-limiter.js.map +0 -7
- package/dist/models/user.model.js.map +0 -7
- package/dist/servers/production/auth-middleware.js.map +0 -7
- package/dist/servers/railway/config.js +0 -55
- package/dist/servers/railway/config.js.map +0 -7
- package/dist/servers/railway/index-enhanced.js +0 -160
- package/dist/servers/railway/index-enhanced.js.map +0 -7
- package/dist/servers/railway/index.js +0 -1349
- package/dist/servers/railway/index.js.map +0 -7
- package/dist/servers/railway/simple.js +0 -64
- package/dist/servers/railway/simple.js.map +0 -7
- package/dist/servers/railway/storage-test.js +0 -459
- package/dist/servers/railway/storage-test.js.map +0 -7
- package/dist/services/config-service.js.map +0 -7
- package/dist/services/context-service.js.map +0 -7
- package/dist/skills/api-discovery.js.map +0 -7
- package/dist/skills/api-skill.js.map +0 -7
- package/dist/skills/claude-skills.js.map +0 -7
- package/dist/skills/dashboard-launcher.js.map +0 -7
- package/dist/skills/recursive-agent-orchestrator.js.map +0 -7
- package/dist/skills/repo-ingestion-skill.js +0 -609
- package/dist/skills/repo-ingestion-skill.js.map +0 -7
- package/dist/skills/security-secrets-scanner.js +0 -284
- package/dist/skills/security-secrets-scanner.js.map +0 -7
- package/dist/skills/unified-rlm-orchestrator.js.map +0 -7
- package/dist/utils/env.js.map +0 -7
- package/dist/utils/formatting.js.map +0 -7
- package/dist/utils/process-cleanup.js.map +0 -7
- package/dist/validation/schemas.js +0 -222
- package/dist/validation/schemas.js.map +0 -7
- /package/dist/{agents → src/agents}/core/agent-task-manager.js +0 -0
- /package/dist/{agents → src/agents}/verifiers/base-verifier.js +0 -0
- /package/dist/{agents → src/agents}/verifiers/formatter-verifier.js +0 -0
- /package/dist/{agents → src/agents}/verifiers/llm-judge.js +0 -0
- /package/dist/{cli → src/cli}/auto-detect.js +0 -0
- /package/dist/{cli → src/cli}/claude-sm-danger.js +0 -0
- /package/dist/{cli → src/cli}/codex-sm-danger.js +0 -0
- /package/dist/{cli → src/cli}/codex-sm.js +0 -0
- /package/dist/{cli → src/cli}/commands/api.js +0 -0
- /package/dist/{cli → src/cli}/commands/auto-background.js +0 -0
- /package/dist/{cli → src/cli}/commands/cleanup-processes.js +0 -0
- /package/dist/{cli → src/cli}/commands/clear.js +0 -0
- /package/dist/{cli → src/cli}/commands/config.js +0 -0
- /package/dist/{cli → src/cli}/commands/context-rehydrate.js +0 -0
- /package/dist/{cli → src/cli}/commands/context.js +0 -0
- /package/dist/{cli → src/cli}/commands/daemon.js +0 -0
- /package/dist/{cli → src/cli}/commands/dashboard.js +0 -0
- /package/dist/{cli → src/cli}/commands/db.js +0 -0
- /package/dist/{cli → src/cli}/commands/decision.js +0 -0
- /package/dist/{cli → src/cli}/commands/discovery.js +0 -0
- /package/dist/{cli → src/cli}/commands/handoff.js +0 -0
- /package/dist/{cli → src/cli}/commands/hooks.js +0 -0
- /package/dist/{cli → src/cli}/commands/linear.js +0 -0
- /package/dist/{cli → src/cli}/commands/log.js +0 -0
- /package/dist/{cli → src/cli}/commands/login.js +0 -0
- /package/dist/{cli → src/cli}/commands/migrate.js +0 -0
- /package/dist/{cli → src/cli}/commands/model.js +0 -0
- /package/dist/{cli → src/cli}/commands/onboard.js +0 -0
- /package/dist/{cli → src/cli}/commands/projects.js +0 -0
- /package/dist/{cli → src/cli}/commands/ralph.js +0 -0
- /package/dist/{cli → src/cli}/commands/retrieval.js +0 -0
- /package/dist/{cli → src/cli}/commands/service.js +0 -0
- /package/dist/{cli → src/cli}/commands/session.js +0 -0
- /package/dist/{cli → src/cli}/commands/settings.js +0 -0
- /package/dist/{cli → src/cli}/commands/setup.js +0 -0
- /package/dist/{cli → src/cli}/commands/shell.js +0 -0
- /package/dist/{cli → src/cli}/commands/signup.js +0 -0
- /package/dist/{cli → src/cli}/commands/skills.js +0 -0
- /package/dist/{cli → src/cli}/commands/sms-notify.js +0 -0
- /package/dist/{cli → src/cli}/commands/storage-tier.js +0 -0
- /package/dist/{cli → src/cli}/commands/sweep.js +0 -0
- /package/dist/{cli → src/cli}/commands/tasks.js +0 -0
- /package/dist/{cli → src/cli}/commands/worktree.js +0 -0
- /package/dist/{cli → src/cli}/opencode-sm.js +0 -0
- /package/dist/{cli → src/cli}/utils/viewer.js +0 -0
- /package/dist/{core → src/core}/config/config-manager.js +0 -0
- /package/dist/{core → src/core}/config/feature-flags.js +0 -0
- /package/dist/{core → src/core}/config/storage-config.js +0 -0
- /package/dist/{core → src/core}/config/types.js +0 -0
- /package/dist/{core → src/core}/context/auto-context.js +0 -0
- /package/dist/{core → src/core}/context/dual-stack-manager.js +0 -0
- /package/dist/{core → src/core}/context/enhanced-rehydration.js +0 -0
- /package/dist/{core → src/core}/context/frame-database.js +0 -0
- /package/dist/{core → src/core}/context/frame-digest.js +0 -0
- /package/dist/{core → src/core}/context/frame-handoff-manager.js +0 -0
- /package/dist/{core → src/core}/context/frame-lifecycle-hooks.js +0 -0
- /package/dist/{core → src/core}/context/frame-recovery.js +0 -0
- /package/dist/{core → src/core}/context/frame-stack.js +0 -0
- /package/dist/{core → src/core}/context/frame-types.js +0 -0
- /package/dist/{core → src/core}/context/frame-types.js.map +0 -0
- /package/dist/{core → src/core}/context/index.js +0 -0
- /package/dist/{core → src/core}/context/permission-manager.js +0 -0
- /package/dist/{core → src/core}/context/recursive-context-manager.js +0 -0
- /package/dist/{core → src/core}/context/refactored-frame-manager.js +0 -0
- /package/dist/{core → src/core}/context/shared-context-layer.js +0 -0
- /package/dist/{core → src/core}/context/stack-merge-resolver.js +0 -0
- /package/dist/{core → src/core}/context/validation.js +0 -0
- /package/dist/{core → src/core}/database/batch-operations.js +0 -0
- /package/dist/{core → src/core}/database/connection-pool.js +0 -0
- /package/dist/{core → src/core}/database/database-adapter.js +0 -0
- /package/dist/{core → src/core}/database/migration-manager.js +0 -0
- /package/dist/{core → src/core}/database/query-cache.js +0 -0
- /package/dist/{core → src/core}/database/query-router.js +0 -0
- /package/dist/{core → src/core}/digest/enhanced-hybrid-digest.js +0 -0
- /package/dist/{core → src/core}/digest/frame-digest-integration.js +0 -0
- /package/dist/{core → src/core}/digest/hybrid-digest-generator.js +0 -0
- /package/dist/{core → src/core}/digest/index.js +0 -0
- /package/dist/{core → src/core}/digest/types.js +0 -0
- /package/dist/{core → src/core}/errors/recovery.js +0 -0
- /package/dist/{core → src/core}/execution/parallel-executor.js +0 -0
- /package/dist/{core/merge → src/core/extensions}/types.js +0 -0
- /package/dist/{core/merge → src/core/extensions}/types.js.map +0 -0
- /package/dist/{core → src/core}/frame/workflow-templates.js +0 -0
- /package/dist/{core → src/core}/merge/conflict-detector.js +0 -0
- /package/dist/{core → src/core}/merge/index.js +0 -0
- /package/dist/{core → src/core}/merge/resolution-engine.js +0 -0
- /package/dist/{core → src/core}/merge/stack-diff.js +0 -0
- /package/dist/{core → src/core/merge}/types.js +0 -0
- /package/dist/{core → src/core/merge}/types.js.map +0 -0
- /package/dist/{core → src/core}/models/fallback-monitor.js +0 -0
- /package/dist/{core → src/core}/models/model-router.js +0 -0
- /package/dist/{core → src/core}/monitoring/error-handler.js +0 -0
- /package/dist/{core → src/core}/monitoring/metrics.js +0 -0
- /package/dist/{core → src/core}/monitoring/progress-tracker.js +0 -0
- /package/dist/{core → src/core}/monitoring/session-monitor.js +0 -0
- /package/dist/{core → src/core}/performance/context-cache.js +0 -0
- /package/dist/{core → src/core}/performance/index.js +0 -0
- /package/dist/{core → src/core}/performance/lazy-context-loader.js +0 -0
- /package/dist/{core → src/core}/performance/monitor.js +0 -0
- /package/dist/{core → src/core}/performance/optimized-frame-context.js +0 -0
- /package/dist/{core → src/core}/performance/performance-benchmark.js +0 -0
- /package/dist/{core → src/core}/performance/performance-profiler.js +0 -0
- /package/dist/{core → src/core}/performance/streaming-jsonl-parser.js +0 -0
- /package/dist/{core → src/core}/persistence/postgres-adapter.js +0 -0
- /package/dist/{core → src/core}/projects/project-isolation.js +0 -0
- /package/dist/{core → src/core}/projects/project-manager.js +0 -0
- /package/dist/{core → src/core}/query/query-parser.js +0 -0
- /package/dist/{core → src/core}/query/query-templates.js +0 -0
- /package/dist/{core → src/core}/retrieval/context-retriever.js +0 -0
- /package/dist/{core → src/core}/retrieval/index.js +0 -0
- /package/dist/{core → src/core}/retrieval/llm-context-retrieval.js +0 -0
- /package/dist/{core → src/core}/retrieval/llm-provider.js +0 -0
- /package/dist/{core → src/core}/retrieval/retrieval-audit.js +0 -0
- /package/dist/{core → src/core}/retrieval/summary-generator.js +0 -0
- /package/dist/{core → src/core}/retrieval/types.js +0 -0
- /package/dist/{core → src/core}/session/clear-survival.js +0 -0
- /package/dist/{core → src/core}/session/enhanced-handoff.js +0 -0
- /package/dist/{core → src/core}/session/handoff-generator.js +0 -0
- /package/dist/{core → src/core}/session/index.js +0 -0
- /package/dist/{core → src/core}/session/session-manager.js +0 -0
- /package/dist/{core → src/core}/skills/index.js +0 -0
- /package/dist/{core → src/core}/skills/skill-storage.js +0 -0
- /package/dist/{core → src/core}/skills/types.js +0 -0
- /package/dist/{core → src/core}/storage/infinite-storage.js +0 -0
- /package/dist/{core → src/core}/storage/remote-storage.js +0 -0
- /package/dist/{core → src/core}/storage/two-tier-storage.js +0 -0
- /package/dist/{core → src/core}/trace/cli-trace-wrapper.js +0 -0
- /package/dist/{core → src/core}/trace/db-trace-wrapper.js +0 -0
- /package/dist/{core → src/core}/trace/debug-trace.js +0 -0
- /package/dist/{core → src/core}/trace/index.js +0 -0
- /package/dist/{core → src/core}/trace/linear-api-wrapper.js +0 -0
- /package/dist/{core → src/core}/trace/trace-detector.js +0 -0
- /package/dist/{core → src/core}/trace/trace-store.js +0 -0
- /package/dist/{core → src/core}/trace/types.js +0 -0
- /package/dist/{integrations/linear → src/core}/types.js +0 -0
- /package/dist/{integrations/linear → src/core}/types.js.map +0 -0
- /package/dist/{core → src/core}/utils/async-mutex.js +0 -0
- /package/dist/{core → src/core}/utils/compression.js +0 -0
- /package/dist/{core → src/core}/utils/update-checker.js +0 -0
- /package/dist/{core → src/core}/worktree/worktree-manager.js +0 -0
- /package/dist/{daemon → src/daemon}/daemon-config.js +0 -0
- /package/dist/{daemon → src/daemon}/services/context-service.js +0 -0
- /package/dist/{daemon → src/daemon}/services/linear-service.js +0 -0
- /package/dist/{daemon → src/daemon}/session-daemon.js +0 -0
- /package/dist/{daemon → src/daemon}/unified-daemon.js +0 -0
- /package/dist/{features → src/features}/analytics/api/analytics-api.js +0 -0
- /package/dist/{features → src/features}/analytics/core/analytics-service.js +0 -0
- /package/dist/{features → src/features}/analytics/index.js +0 -0
- /package/dist/{features → src/features}/analytics/queries/metrics-queries.js +0 -0
- /package/dist/{features → src/features}/analytics/types/metrics.js +0 -0
- /package/dist/{features → src/features}/analytics/types/metrics.js.map +0 -0
- /package/dist/{features → src/features}/browser/browser-mcp.js +0 -0
- /package/dist/{features → src/features}/sweep/index.js +0 -0
- /package/dist/{features → src/features}/sweep/prediction-client.js +0 -0
- /package/dist/{features → src/features}/sweep/prompt-builder.js +0 -0
- /package/dist/{features → src/features}/sweep/pty-wrapper.js +0 -0
- /package/dist/{features → src/features}/sweep/state-watcher.js +0 -0
- /package/dist/{features → src/features}/sweep/status-bar.js +0 -0
- /package/dist/{features → src/features}/sweep/sweep-server-manager.js +0 -0
- /package/dist/{features → src/features}/sweep/tab-interceptor.js +0 -0
- /package/dist/{features → src/features}/sweep/types.js +0 -0
- /package/dist/{features → src/features}/tasks/linear-task-manager.js +0 -0
- /package/dist/{features → src/features}/tasks/task-aware-context.js +0 -0
- /package/dist/{features → src/features}/tui/simple-monitor.js +0 -0
- /package/dist/{features → src/features}/tui/swarm-monitor.js +0 -0
- /package/dist/{features → src/features}/web/client/stores/task-store.js +0 -0
- /package/dist/{features → src/features}/web/server/index.js +0 -0
- /package/dist/{hooks → src/hooks}/auto-background.js +0 -0
- /package/dist/{hooks → src/hooks}/claude-code-whatsapp-hook.js +0 -0
- /package/dist/{hooks → src/hooks}/config.js +0 -0
- /package/dist/{hooks → src/hooks}/daemon.js +0 -0
- /package/dist/{hooks → src/hooks}/events.js +0 -0
- /package/dist/{hooks → src/hooks}/index.js +0 -0
- /package/dist/{hooks → src/hooks}/linear-task-picker.js +0 -0
- /package/dist/{hooks → src/hooks}/schemas.js +0 -0
- /package/dist/{hooks → src/hooks}/secure-fs.js +0 -0
- /package/dist/{hooks → src/hooks}/security-logger.js +0 -0
- /package/dist/{hooks → src/hooks}/session-summary.js +0 -0
- /package/dist/{hooks → src/hooks}/sms-action-runner.js +0 -0
- /package/dist/{hooks → src/hooks}/sms-notify.js +0 -0
- /package/dist/{hooks → src/hooks}/sms-watcher.js +0 -0
- /package/dist/{hooks → src/hooks}/sms-webhook.js +0 -0
- /package/dist/{hooks → src/hooks}/whatsapp-commands.js +0 -0
- /package/dist/{hooks → src/hooks}/whatsapp-scheduler.js +0 -0
- /package/dist/{hooks → src/hooks}/whatsapp-sync.js +0 -0
- /package/dist/{index.js → src/index.js} +0 -0
- /package/dist/{integrations → src/integrations}/anthropic/client.js +0 -0
- /package/dist/{integrations → src/integrations}/claude-code/agent-bridge.js +0 -0
- /package/dist/{integrations → src/integrations}/claude-code/enhanced-pre-clear-hooks.js +0 -0
- /package/dist/{integrations → src/integrations}/claude-code/lifecycle-hooks.js +0 -0
- /package/dist/{integrations → src/integrations}/claude-code/post-task-hooks.js +0 -0
- /package/dist/{integrations → src/integrations}/claude-code/subagent-client-stub.js +0 -0
- /package/dist/{integrations → src/integrations}/claude-code/subagent-client.js +0 -0
- /package/dist/{integrations → src/integrations}/claude-code/task-coordinator.js +0 -0
- /package/dist/{integrations → src/integrations}/linear/auth.js +0 -0
- /package/dist/{integrations → src/integrations}/linear/auto-sync.js +0 -0
- /package/dist/{integrations → src/integrations}/linear/config.js +0 -0
- /package/dist/{integrations → src/integrations}/linear/migration.js +0 -0
- /package/dist/{integrations → src/integrations}/linear/oauth-server.js +0 -0
- /package/dist/{integrations → src/integrations}/linear/rest-client.js +0 -0
- /package/dist/{integrations → src/integrations}/linear/sync-manager.js +0 -0
- /package/dist/{integrations → src/integrations}/linear/sync-service.js +0 -0
- /package/dist/{integrations → src/integrations}/linear/sync.js +0 -0
- /package/dist/{integrations/ralph → src/integrations/linear}/types.js +0 -0
- /package/dist/{integrations/ralph → src/integrations/linear}/types.js.map +0 -0
- /package/dist/{integrations → src/integrations}/linear/unified-sync.js +0 -0
- /package/dist/{integrations → src/integrations}/linear/webhook-handler.js +0 -0
- /package/dist/{integrations → src/integrations}/linear/webhook-server.js +0 -0
- /package/dist/{integrations → src/integrations}/linear/webhook.js +0 -0
- /package/dist/{integrations → src/integrations}/mcp/handlers/code-execution-handlers.js +0 -0
- /package/dist/{integrations → src/integrations}/mcp/handlers/context-handlers.js +0 -0
- /package/dist/{integrations → src/integrations}/mcp/handlers/discovery-handlers.js +0 -0
- /package/dist/{integrations → src/integrations}/mcp/handlers/index.js +0 -0
- /package/dist/{integrations → src/integrations}/mcp/handlers/linear-handlers.js +0 -0
- /package/dist/{integrations → src/integrations}/mcp/handlers/skill-handlers.js +0 -0
- /package/dist/{integrations → src/integrations}/mcp/handlers/task-handlers.js +0 -0
- /package/dist/{integrations → src/integrations}/mcp/handlers/trace-handlers.js +0 -0
- /package/dist/{integrations → src/integrations}/mcp/index.js +0 -0
- /package/dist/{integrations → src/integrations}/mcp/middleware/tool-scoring.js +0 -0
- /package/dist/{integrations → src/integrations}/mcp/refactored-server.js +0 -0
- /package/dist/{integrations → src/integrations}/mcp/schemas.js +0 -0
- /package/dist/{integrations → src/integrations}/mcp/tool-definitions-code.js +0 -0
- /package/dist/{integrations → src/integrations}/mcp/tool-definitions.js +0 -0
- /package/dist/{integrations → src/integrations}/ralph/bridge/ralph-stackmemory-bridge.js +0 -0
- /package/dist/{integrations → src/integrations}/ralph/context/context-budget-manager.js +0 -0
- /package/dist/{integrations → src/integrations}/ralph/context/stackmemory-context-loader.js +0 -0
- /package/dist/{integrations → src/integrations}/ralph/coordination/enhanced-coordination.js +0 -0
- /package/dist/{integrations → src/integrations}/ralph/index.js +0 -0
- /package/dist/{integrations → src/integrations}/ralph/learning/pattern-learner.js +0 -0
- /package/dist/{integrations → src/integrations}/ralph/lifecycle/iteration-lifecycle.js +0 -0
- /package/dist/{integrations → src/integrations}/ralph/monitoring/swarm-dashboard.js +0 -0
- /package/dist/{integrations → src/integrations}/ralph/monitoring/swarm-registry.js +0 -0
- /package/dist/{integrations → src/integrations}/ralph/orchestration/multi-loop-orchestrator.js +0 -0
- /package/dist/{integrations → src/integrations}/ralph/patterns/compounding-engineering-pattern.js +0 -0
- /package/dist/{integrations → src/integrations}/ralph/patterns/extended-coherence-sessions.js +0 -0
- /package/dist/{integrations → src/integrations}/ralph/patterns/oracle-worker-pattern.js +0 -0
- /package/dist/{integrations → src/integrations}/ralph/performance/performance-optimizer.js +0 -0
- /package/dist/{integrations → src/integrations}/ralph/recovery/crash-recovery.js +0 -0
- /package/dist/{integrations → src/integrations}/ralph/state/state-reconciler.js +0 -0
- /package/dist/{integrations → src/integrations}/ralph/swarm/git-workflow-manager.js +0 -0
- /package/dist/{integrations → src/integrations}/ralph/swarm/swarm-coordinator.js +0 -0
- /package/dist/{types/task.js.map → src/integrations/ralph/types.js.map} +0 -0
- /package/dist/{integrations → src/integrations}/ralph/visualization/ralph-debugger.js +0 -0
- /package/dist/{mcp → src/mcp}/stackmemory-mcp-server.js +0 -0
- /package/dist/{middleware → src/middleware}/exponential-rate-limiter.js +0 -0
- /package/dist/{models → src/models}/user.model.js +0 -0
- /package/dist/{servers → src/servers}/production/auth-middleware.js +0 -0
- /package/dist/{services → src/services}/config-service.js +0 -0
- /package/dist/{services → src/services}/context-service.js +0 -0
- /package/dist/{skills → src/skills}/api-discovery.js +0 -0
- /package/dist/{skills → src/skills}/api-skill.js +0 -0
- /package/dist/{skills → src/skills}/claude-skills.js +0 -0
- /package/dist/{skills → src/skills}/dashboard-launcher.js +0 -0
- /package/dist/{skills → src/skills}/recursive-agent-orchestrator.js +0 -0
- /package/dist/{skills → src/skills}/unified-rlm-orchestrator.js +0 -0
- /package/dist/{types → src/types}/task.js +0 -0
- /package/dist/{utils → src/utils}/env.js +0 -0
- /package/dist/{utils → src/utils}/formatting.js +0 -0
- /package/dist/{utils → src/utils}/process-cleanup.js +0 -0
|
@@ -1,521 +0,0 @@
|
|
|
1
|
-
import { fileURLToPath as __fileURLToPath } from 'url';
|
|
2
|
-
import { dirname as __pathDirname } from 'path';
|
|
3
|
-
const __filename = __fileURLToPath(import.meta.url);
|
|
4
|
-
const __dirname = __pathDirname(__filename);
|
|
5
|
-
import { logger } from "../monitoring/logger.js";
|
|
6
|
-
import { LLMContextRetrieval } from "./llm-context-retrieval.js";
|
|
7
|
-
import { HierarchicalRetrieval } from "./hierarchical-retrieval.js";
|
|
8
|
-
import { GraphRetrieval } from "./graph-retrieval.js";
|
|
9
|
-
class RetrievalBenchmarks {
|
|
10
|
-
db;
|
|
11
|
-
flatRetrieval;
|
|
12
|
-
hierarchicalRetrieval;
|
|
13
|
-
graphRetrieval;
|
|
14
|
-
frameManager;
|
|
15
|
-
constructor(db, frameManager, projectId) {
|
|
16
|
-
this.db = db;
|
|
17
|
-
this.frameManager = frameManager;
|
|
18
|
-
this.flatRetrieval = new LLMContextRetrieval(db, frameManager, projectId);
|
|
19
|
-
this.hierarchicalRetrieval = new HierarchicalRetrieval(db);
|
|
20
|
-
this.graphRetrieval = new GraphRetrieval(db);
|
|
21
|
-
this.initializeSchema();
|
|
22
|
-
}
|
|
23
|
-
initializeSchema() {
|
|
24
|
-
this.db.exec(`
|
|
25
|
-
CREATE TABLE IF NOT EXISTS benchmark_results (
|
|
26
|
-
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
|
27
|
-
timestamp INTEGER DEFAULT (unixepoch() * 1000),
|
|
28
|
-
strategy TEXT NOT NULL,
|
|
29
|
-
query TEXT NOT NULL,
|
|
30
|
-
difficulty TEXT,
|
|
31
|
-
category TEXT,
|
|
32
|
-
precision REAL,
|
|
33
|
-
recall REAL,
|
|
34
|
-
f1_score REAL,
|
|
35
|
-
query_time_ms INTEGER,
|
|
36
|
-
tokens_used INTEGER,
|
|
37
|
-
semantic_drift REAL,
|
|
38
|
-
trace_count INTEGER,
|
|
39
|
-
retrieved_ids TEXT,
|
|
40
|
-
expected_ids TEXT
|
|
41
|
-
)
|
|
42
|
-
`);
|
|
43
|
-
this.db.exec(`
|
|
44
|
-
CREATE INDEX IF NOT EXISTS idx_benchmark_strategy ON benchmark_results(strategy);
|
|
45
|
-
CREATE INDEX IF NOT EXISTS idx_benchmark_timestamp ON benchmark_results(timestamp);
|
|
46
|
-
CREATE INDEX IF NOT EXISTS idx_benchmark_difficulty ON benchmark_results(difficulty);
|
|
47
|
-
`);
|
|
48
|
-
}
|
|
49
|
-
/**
|
|
50
|
-
* Generate benchmark queries based on current data
|
|
51
|
-
*/
|
|
52
|
-
async generateBenchmarkQueries(traces) {
|
|
53
|
-
const queries = [];
|
|
54
|
-
const recentTraces = traces.sort((a, b) => b.metadata.startTime - a.metadata.startTime).slice(0, 10);
|
|
55
|
-
for (const trace of recentTraces.slice(0, 3)) {
|
|
56
|
-
queries.push({
|
|
57
|
-
query: `Show me the ${trace.type} operation from ${new Date(trace.metadata.startTime).toLocaleString()}`,
|
|
58
|
-
expectedTraceIds: [trace.id],
|
|
59
|
-
expectedTopics: [trace.type],
|
|
60
|
-
difficulty: "easy",
|
|
61
|
-
category: "specific_lookup"
|
|
62
|
-
});
|
|
63
|
-
}
|
|
64
|
-
const topicGroups = this.groupByTopic(traces);
|
|
65
|
-
for (const [topic, topicTraces] of topicGroups.entries()) {
|
|
66
|
-
if (topicTraces.length >= 5) {
|
|
67
|
-
queries.push({
|
|
68
|
-
query: `What ${topic} operations have been performed recently?`,
|
|
69
|
-
expectedTraceIds: topicTraces.slice(0, 10).map((t) => t.id),
|
|
70
|
-
expectedTopics: [topic],
|
|
71
|
-
difficulty: "medium",
|
|
72
|
-
category: "topic_search"
|
|
73
|
-
});
|
|
74
|
-
}
|
|
75
|
-
}
|
|
76
|
-
if (traces.length > 50) {
|
|
77
|
-
const errorTraces = traces.filter(
|
|
78
|
-
(t) => t.metadata.errorsEncountered.length > 0
|
|
79
|
-
);
|
|
80
|
-
if (errorTraces.length > 0) {
|
|
81
|
-
queries.push({
|
|
82
|
-
query: "What errors occurred and how were they resolved?",
|
|
83
|
-
expectedTraceIds: errorTraces.map((t) => t.id),
|
|
84
|
-
expectedTopics: ["error", "fix", "debug"],
|
|
85
|
-
difficulty: "hard",
|
|
86
|
-
category: "error_analysis"
|
|
87
|
-
});
|
|
88
|
-
}
|
|
89
|
-
const decisionTraces = traces.filter(
|
|
90
|
-
(t) => t.metadata.decisionsRecorded.length > 0
|
|
91
|
-
);
|
|
92
|
-
if (decisionTraces.length > 0) {
|
|
93
|
-
queries.push({
|
|
94
|
-
query: "What architectural decisions were made and why?",
|
|
95
|
-
expectedTraceIds: decisionTraces.map((t) => t.id),
|
|
96
|
-
expectedTopics: ["decision", "architecture", "design"],
|
|
97
|
-
difficulty: "hard",
|
|
98
|
-
category: "decision_tracking"
|
|
99
|
-
});
|
|
100
|
-
}
|
|
101
|
-
}
|
|
102
|
-
queries.push({
|
|
103
|
-
query: "something about code",
|
|
104
|
-
expectedTraceIds: [],
|
|
105
|
-
expectedTopics: [],
|
|
106
|
-
difficulty: "hard",
|
|
107
|
-
category: "vague_query"
|
|
108
|
-
});
|
|
109
|
-
queries.push({
|
|
110
|
-
query: "the thing we did yesterday with the files",
|
|
111
|
-
expectedTraceIds: [],
|
|
112
|
-
expectedTopics: [],
|
|
113
|
-
difficulty: "hard",
|
|
114
|
-
category: "ambiguous_query"
|
|
115
|
-
});
|
|
116
|
-
return queries;
|
|
117
|
-
}
|
|
118
|
-
/**
|
|
119
|
-
* Run benchmarks on all strategies
|
|
120
|
-
*/
|
|
121
|
-
async runBenchmarks(traces, sampleSize = 10) {
|
|
122
|
-
logger.info("Starting retrieval benchmarks", {
|
|
123
|
-
traceCount: traces.length,
|
|
124
|
-
sampleSize
|
|
125
|
-
});
|
|
126
|
-
const queries = await this.generateBenchmarkQueries(traces);
|
|
127
|
-
const sampledQueries = this.sampleQueries(queries, sampleSize);
|
|
128
|
-
const results = [];
|
|
129
|
-
await this.hierarchicalRetrieval.buildHierarchy(traces);
|
|
130
|
-
const frames = await this.frameManager.getAllFrames();
|
|
131
|
-
await this.graphRetrieval.buildGraph(traces, frames);
|
|
132
|
-
for (const query of sampledQueries) {
|
|
133
|
-
const result = await this.benchmarkFlatRetrieval(query, traces);
|
|
134
|
-
results.push(result);
|
|
135
|
-
await this.saveResult(result, traces.length);
|
|
136
|
-
}
|
|
137
|
-
for (const query of sampledQueries) {
|
|
138
|
-
const result = await this.benchmarkHierarchicalRetrieval(query, traces);
|
|
139
|
-
results.push(result);
|
|
140
|
-
await this.saveResult(result, traces.length);
|
|
141
|
-
}
|
|
142
|
-
for (const query of sampledQueries) {
|
|
143
|
-
const result = await this.benchmarkGraphRetrieval(query, traces);
|
|
144
|
-
results.push(result);
|
|
145
|
-
await this.saveResult(result, traces.length);
|
|
146
|
-
}
|
|
147
|
-
const report = this.generateReport(results, traces.length);
|
|
148
|
-
logger.info("Benchmarks complete", {
|
|
149
|
-
strategies: 3,
|
|
150
|
-
queries: sampledQueries.length,
|
|
151
|
-
avgF1: {
|
|
152
|
-
flat: report.strategies.flat.avgF1Score,
|
|
153
|
-
hierarchical: report.strategies.hierarchical.avgF1Score,
|
|
154
|
-
graph: report.strategies.graph.avgF1Score
|
|
155
|
-
}
|
|
156
|
-
});
|
|
157
|
-
return report;
|
|
158
|
-
}
|
|
159
|
-
/**
|
|
160
|
-
* Benchmark flat embedding retrieval
|
|
161
|
-
*/
|
|
162
|
-
async benchmarkFlatRetrieval(query, traces) {
|
|
163
|
-
const startTime = Date.now();
|
|
164
|
-
try {
|
|
165
|
-
const result = await this.flatRetrieval.retrieveContext(query.query, {
|
|
166
|
-
tokenBudget: 4e3
|
|
167
|
-
});
|
|
168
|
-
const retrievedIds = result.frames.map((f) => f.id);
|
|
169
|
-
const queryTime = Date.now() - startTime;
|
|
170
|
-
return this.evaluateResult(
|
|
171
|
-
"flat",
|
|
172
|
-
query,
|
|
173
|
-
retrievedIds,
|
|
174
|
-
queryTime,
|
|
175
|
-
result.tokenUsage.used,
|
|
176
|
-
"Standard flat embedding retrieval"
|
|
177
|
-
);
|
|
178
|
-
} catch (error) {
|
|
179
|
-
logger.error("Flat retrieval failed", error);
|
|
180
|
-
return this.createErrorResult("flat", query, error);
|
|
181
|
-
}
|
|
182
|
-
}
|
|
183
|
-
/**
|
|
184
|
-
* Benchmark hierarchical retrieval
|
|
185
|
-
*/
|
|
186
|
-
async benchmarkHierarchicalRetrieval(query, traces) {
|
|
187
|
-
const startTime = Date.now();
|
|
188
|
-
try {
|
|
189
|
-
const context = await this.hierarchicalRetrieval.retrieve(
|
|
190
|
-
query.query,
|
|
191
|
-
4,
|
|
192
|
-
4e3
|
|
193
|
-
);
|
|
194
|
-
const queryTime = Date.now() - startTime;
|
|
195
|
-
const retrievedIds = this.extractTraceIds(context);
|
|
196
|
-
return this.evaluateResult(
|
|
197
|
-
"hierarchical",
|
|
198
|
-
query,
|
|
199
|
-
retrievedIds,
|
|
200
|
-
queryTime,
|
|
201
|
-
context.length / 4,
|
|
202
|
-
// Estimate tokens
|
|
203
|
-
"Hierarchical retrieval with progressive summarization"
|
|
204
|
-
);
|
|
205
|
-
} catch (error) {
|
|
206
|
-
logger.error("Hierarchical retrieval failed", error);
|
|
207
|
-
return this.createErrorResult("hierarchical", query, error);
|
|
208
|
-
}
|
|
209
|
-
}
|
|
210
|
-
/**
|
|
211
|
-
* Benchmark graph retrieval
|
|
212
|
-
*/
|
|
213
|
-
async benchmarkGraphRetrieval(query, traces) {
|
|
214
|
-
const startTime = Date.now();
|
|
215
|
-
try {
|
|
216
|
-
const paths = await this.graphRetrieval.traverse(query.query, {
|
|
217
|
-
maxHops: 3,
|
|
218
|
-
minWeight: 0.3
|
|
219
|
-
});
|
|
220
|
-
const queryTime = Date.now() - startTime;
|
|
221
|
-
const retrievedIds = /* @__PURE__ */ new Set();
|
|
222
|
-
for (const path of paths) {
|
|
223
|
-
for (const node of path.nodes) {
|
|
224
|
-
if (node.metadata.traceIds) {
|
|
225
|
-
node.metadata.traceIds.forEach((id) => retrievedIds.add(id));
|
|
226
|
-
}
|
|
227
|
-
}
|
|
228
|
-
}
|
|
229
|
-
return this.evaluateResult(
|
|
230
|
-
"graph",
|
|
231
|
-
query,
|
|
232
|
-
Array.from(retrievedIds),
|
|
233
|
-
queryTime,
|
|
234
|
-
paths.length * 100,
|
|
235
|
-
// Estimate tokens
|
|
236
|
-
"Graph-based retrieval with explicit relationships"
|
|
237
|
-
);
|
|
238
|
-
} catch (error) {
|
|
239
|
-
logger.error("Graph retrieval failed", error);
|
|
240
|
-
return this.createErrorResult("graph", query, error);
|
|
241
|
-
}
|
|
242
|
-
}
|
|
243
|
-
/**
|
|
244
|
-
* Evaluate retrieval results
|
|
245
|
-
*/
|
|
246
|
-
evaluateResult(strategy, query, retrievedIds, queryTimeMs, tokensUsed, explanation) {
|
|
247
|
-
const expectedSet = new Set(query.expectedTraceIds);
|
|
248
|
-
const retrievedSet = new Set(retrievedIds);
|
|
249
|
-
const truePositives = [...retrievedSet].filter(
|
|
250
|
-
(id) => expectedSet.has(id)
|
|
251
|
-
).length;
|
|
252
|
-
const falsePositives = retrievedSet.size - truePositives;
|
|
253
|
-
const falseNegatives = expectedSet.size - truePositives;
|
|
254
|
-
const precision = retrievedSet.size > 0 ? truePositives / retrievedSet.size : 0;
|
|
255
|
-
const recall = expectedSet.size > 0 ? truePositives / expectedSet.size : 1;
|
|
256
|
-
const f1Score = precision + recall > 0 ? 2 * (precision * recall) / (precision + recall) : 0;
|
|
257
|
-
const semanticDrift = this.calculateSemanticDrift(query, retrievedIds);
|
|
258
|
-
return {
|
|
259
|
-
strategy,
|
|
260
|
-
query,
|
|
261
|
-
retrievedTraceIds: retrievedIds,
|
|
262
|
-
precision,
|
|
263
|
-
recall,
|
|
264
|
-
f1Score,
|
|
265
|
-
queryTimeMs,
|
|
266
|
-
tokensUsed,
|
|
267
|
-
semanticDrift,
|
|
268
|
-
explanation
|
|
269
|
-
};
|
|
270
|
-
}
|
|
271
|
-
/**
|
|
272
|
-
* Calculate semantic drift indicator
|
|
273
|
-
*/
|
|
274
|
-
calculateSemanticDrift(query, retrievedIds) {
|
|
275
|
-
if (query.category === "vague_query" && retrievedIds.length > 10) {
|
|
276
|
-
return 0.8;
|
|
277
|
-
}
|
|
278
|
-
if (query.category === "specific_lookup" && retrievedIds.length === 0) {
|
|
279
|
-
return 0.7;
|
|
280
|
-
}
|
|
281
|
-
return 0.1;
|
|
282
|
-
}
|
|
283
|
-
/**
|
|
284
|
-
* Create error result
|
|
285
|
-
*/
|
|
286
|
-
createErrorResult(strategy, query, error) {
|
|
287
|
-
return {
|
|
288
|
-
strategy,
|
|
289
|
-
query,
|
|
290
|
-
retrievedTraceIds: [],
|
|
291
|
-
precision: 0,
|
|
292
|
-
recall: 0,
|
|
293
|
-
f1Score: 0,
|
|
294
|
-
queryTimeMs: 0,
|
|
295
|
-
tokensUsed: 0,
|
|
296
|
-
semanticDrift: 1,
|
|
297
|
-
explanation: `Error: ${error.message}`
|
|
298
|
-
};
|
|
299
|
-
}
|
|
300
|
-
/**
|
|
301
|
-
* Generate benchmark report
|
|
302
|
-
*/
|
|
303
|
-
generateReport(results, traceCount) {
|
|
304
|
-
const byStrategy = this.groupByStrategy(results);
|
|
305
|
-
const report = {
|
|
306
|
-
timestamp: Date.now(),
|
|
307
|
-
traceCount,
|
|
308
|
-
strategies: {
|
|
309
|
-
flat: this.calculateStrategyMetrics(byStrategy.flat || []),
|
|
310
|
-
hierarchical: this.calculateStrategyMetrics(
|
|
311
|
-
byStrategy.hierarchical || []
|
|
312
|
-
),
|
|
313
|
-
graph: this.calculateStrategyMetrics(byStrategy.graph || [])
|
|
314
|
-
},
|
|
315
|
-
warnings: [],
|
|
316
|
-
recommendations: []
|
|
317
|
-
};
|
|
318
|
-
if (report.strategies.flat.semanticCollapse) {
|
|
319
|
-
report.warnings.push("Flat embedding shows signs of semantic collapse");
|
|
320
|
-
}
|
|
321
|
-
if (report.strategies.flat.avgQueryTime > 1e3) {
|
|
322
|
-
report.warnings.push("Flat retrieval query time exceeds 1 second");
|
|
323
|
-
}
|
|
324
|
-
const bestStrategy = this.getBestStrategy(report.strategies);
|
|
325
|
-
report.recommendations.push(`Best overall strategy: ${bestStrategy}`);
|
|
326
|
-
if (traceCount > 1e4) {
|
|
327
|
-
report.recommendations.push("Consider hierarchical retrieval for scale");
|
|
328
|
-
}
|
|
329
|
-
if (report.strategies.graph.avgF1Score > report.strategies.flat.avgF1Score * 1.2) {
|
|
330
|
-
report.recommendations.push(
|
|
331
|
-
"Graph retrieval significantly outperforms flat - consider switching"
|
|
332
|
-
);
|
|
333
|
-
}
|
|
334
|
-
return report;
|
|
335
|
-
}
|
|
336
|
-
/**
|
|
337
|
-
* Calculate strategy metrics
|
|
338
|
-
*/
|
|
339
|
-
calculateStrategyMetrics(results) {
|
|
340
|
-
if (results.length === 0) {
|
|
341
|
-
return {
|
|
342
|
-
avgPrecision: 0,
|
|
343
|
-
avgRecall: 0,
|
|
344
|
-
avgF1Score: 0,
|
|
345
|
-
avgQueryTime: 0,
|
|
346
|
-
avgTokensUsed: 0,
|
|
347
|
-
semanticCollapse: false,
|
|
348
|
-
collapseIndicators: []
|
|
349
|
-
};
|
|
350
|
-
}
|
|
351
|
-
const avgPrecision = results.reduce((sum, r) => sum + r.precision, 0) / results.length;
|
|
352
|
-
const avgRecall = results.reduce((sum, r) => sum + r.recall, 0) / results.length;
|
|
353
|
-
const avgF1Score = results.reduce((sum, r) => sum + r.f1Score, 0) / results.length;
|
|
354
|
-
const avgQueryTime = results.reduce((sum, r) => sum + r.queryTimeMs, 0) / results.length;
|
|
355
|
-
const avgTokensUsed = results.reduce((sum, r) => sum + r.tokensUsed, 0) / results.length;
|
|
356
|
-
const collapseIndicators = [];
|
|
357
|
-
const avgDrift = results.reduce((sum, r) => sum + (r.semanticDrift || 0), 0) / results.length;
|
|
358
|
-
if (avgDrift > 0.5) {
|
|
359
|
-
collapseIndicators.push("High semantic drift detected");
|
|
360
|
-
}
|
|
361
|
-
const uniqueResults = new Set(
|
|
362
|
-
results.map((r) => r.retrievedTraceIds.sort().join(","))
|
|
363
|
-
);
|
|
364
|
-
if (uniqueResults.size < results.length * 0.3) {
|
|
365
|
-
collapseIndicators.push(
|
|
366
|
-
"Low result diversity - possible embedding collapse"
|
|
367
|
-
);
|
|
368
|
-
}
|
|
369
|
-
const specificQueries = results.filter(
|
|
370
|
-
(r) => r.query.difficulty === "easy"
|
|
371
|
-
);
|
|
372
|
-
const specificPrecision = specificQueries.reduce((sum, r) => sum + r.precision, 0) / (specificQueries.length || 1);
|
|
373
|
-
if (specificPrecision < 0.5) {
|
|
374
|
-
collapseIndicators.push("Poor precision on specific queries");
|
|
375
|
-
}
|
|
376
|
-
return {
|
|
377
|
-
avgPrecision,
|
|
378
|
-
avgRecall,
|
|
379
|
-
avgF1Score,
|
|
380
|
-
avgQueryTime,
|
|
381
|
-
avgTokensUsed,
|
|
382
|
-
semanticCollapse: collapseIndicators.length > 0,
|
|
383
|
-
collapseIndicators
|
|
384
|
-
};
|
|
385
|
-
}
|
|
386
|
-
/**
|
|
387
|
-
* Determine best strategy
|
|
388
|
-
*/
|
|
389
|
-
getBestStrategy(strategies) {
|
|
390
|
-
const scores = {
|
|
391
|
-
flat: strategies.flat.avgF1Score * (1 - strategies.flat.avgQueryTime / 5e3),
|
|
392
|
-
hierarchical: strategies.hierarchical.avgF1Score * (1 - strategies.hierarchical.avgQueryTime / 5e3),
|
|
393
|
-
graph: strategies.graph.avgF1Score * (1 - strategies.graph.avgQueryTime / 5e3)
|
|
394
|
-
};
|
|
395
|
-
return Object.entries(scores).sort((a, b) => b[1] - a[1])[0][0];
|
|
396
|
-
}
|
|
397
|
-
/**
|
|
398
|
-
* Group traces by topic
|
|
399
|
-
*/
|
|
400
|
-
groupByTopic(traces) {
|
|
401
|
-
const groups = /* @__PURE__ */ new Map();
|
|
402
|
-
for (const trace of traces) {
|
|
403
|
-
if (!groups.has(trace.type)) {
|
|
404
|
-
groups.set(trace.type, []);
|
|
405
|
-
}
|
|
406
|
-
groups.get(trace.type).push(trace);
|
|
407
|
-
}
|
|
408
|
-
return groups;
|
|
409
|
-
}
|
|
410
|
-
/**
|
|
411
|
-
* Group results by strategy
|
|
412
|
-
*/
|
|
413
|
-
groupByStrategy(results) {
|
|
414
|
-
const grouped = {};
|
|
415
|
-
for (const result of results) {
|
|
416
|
-
if (!grouped[result.strategy]) {
|
|
417
|
-
grouped[result.strategy] = [];
|
|
418
|
-
}
|
|
419
|
-
grouped[result.strategy].push(result);
|
|
420
|
-
}
|
|
421
|
-
return grouped;
|
|
422
|
-
}
|
|
423
|
-
/**
|
|
424
|
-
* Sample queries for benchmarking
|
|
425
|
-
*/
|
|
426
|
-
sampleQueries(queries, sampleSize) {
|
|
427
|
-
const byDifficulty = this.groupByDifficulty(queries);
|
|
428
|
-
const sampled = [];
|
|
429
|
-
const perDifficulty = Math.ceil(sampleSize / 3);
|
|
430
|
-
for (const difficulty of ["easy", "medium", "hard"]) {
|
|
431
|
-
const difficultyQueries = byDifficulty[difficulty] || [];
|
|
432
|
-
const sample = this.randomSample(difficultyQueries, perDifficulty);
|
|
433
|
-
sampled.push(...sample);
|
|
434
|
-
}
|
|
435
|
-
return sampled.slice(0, sampleSize);
|
|
436
|
-
}
|
|
437
|
-
/**
|
|
438
|
-
* Group queries by difficulty
|
|
439
|
-
*/
|
|
440
|
-
groupByDifficulty(queries) {
|
|
441
|
-
const grouped = {};
|
|
442
|
-
for (const query of queries) {
|
|
443
|
-
if (!grouped[query.difficulty]) {
|
|
444
|
-
grouped[query.difficulty] = [];
|
|
445
|
-
}
|
|
446
|
-
grouped[query.difficulty].push(query);
|
|
447
|
-
}
|
|
448
|
-
return grouped;
|
|
449
|
-
}
|
|
450
|
-
/**
|
|
451
|
-
* Random sample from array
|
|
452
|
-
*/
|
|
453
|
-
randomSample(array, size) {
|
|
454
|
-
const shuffled = [...array].sort(() => Math.random() - 0.5);
|
|
455
|
-
return shuffled.slice(0, size);
|
|
456
|
-
}
|
|
457
|
-
/**
|
|
458
|
-
* Extract trace IDs from context string
|
|
459
|
-
*/
|
|
460
|
-
extractTraceIds(context) {
|
|
461
|
-
const matches = context.match(/trace_[a-f0-9]{16}/g) || [];
|
|
462
|
-
return [...new Set(matches)];
|
|
463
|
-
}
|
|
464
|
-
/**
|
|
465
|
-
* Save benchmark result to database
|
|
466
|
-
*/
|
|
467
|
-
async saveResult(result, traceCount) {
|
|
468
|
-
this.db.prepare(
|
|
469
|
-
`
|
|
470
|
-
INSERT INTO benchmark_results (
|
|
471
|
-
strategy, query, difficulty, category,
|
|
472
|
-
precision, recall, f1_score,
|
|
473
|
-
query_time_ms, tokens_used, semantic_drift,
|
|
474
|
-
trace_count, retrieved_ids, expected_ids
|
|
475
|
-
) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)
|
|
476
|
-
`
|
|
477
|
-
).run(
|
|
478
|
-
result.strategy,
|
|
479
|
-
result.query.query,
|
|
480
|
-
result.query.difficulty,
|
|
481
|
-
result.query.category,
|
|
482
|
-
result.precision,
|
|
483
|
-
result.recall,
|
|
484
|
-
result.f1Score,
|
|
485
|
-
result.queryTimeMs,
|
|
486
|
-
result.tokensUsed,
|
|
487
|
-
result.semanticDrift || 0,
|
|
488
|
-
traceCount,
|
|
489
|
-
JSON.stringify(result.retrievedTraceIds),
|
|
490
|
-
JSON.stringify(result.query.expectedTraceIds)
|
|
491
|
-
);
|
|
492
|
-
}
|
|
493
|
-
/**
|
|
494
|
-
* Get historical benchmark trends
|
|
495
|
-
*/
|
|
496
|
-
getHistoricalTrends(days = 7) {
|
|
497
|
-
const cutoff = Date.now() - days * 24 * 60 * 60 * 1e3;
|
|
498
|
-
const trends = this.db.prepare(
|
|
499
|
-
`
|
|
500
|
-
SELECT
|
|
501
|
-
strategy,
|
|
502
|
-
DATE(timestamp / 1000, 'unixepoch') as date,
|
|
503
|
-
AVG(precision) as avg_precision,
|
|
504
|
-
AVG(recall) as avg_recall,
|
|
505
|
-
AVG(f1_score) as avg_f1,
|
|
506
|
-
AVG(query_time_ms) as avg_query_time,
|
|
507
|
-
AVG(semantic_drift) as avg_drift,
|
|
508
|
-
COUNT(*) as query_count
|
|
509
|
-
FROM benchmark_results
|
|
510
|
-
WHERE timestamp > ?
|
|
511
|
-
GROUP BY strategy, date
|
|
512
|
-
ORDER BY date, strategy
|
|
513
|
-
`
|
|
514
|
-
).all(cutoff);
|
|
515
|
-
return trends;
|
|
516
|
-
}
|
|
517
|
-
}
|
|
518
|
-
export {
|
|
519
|
-
RetrievalBenchmarks
|
|
520
|
-
};
|
|
521
|
-
//# sourceMappingURL=retrieval-benchmarks.js.map
|
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"version": 3,
|
|
3
|
-
"sources": ["../../../src/core/retrieval/retrieval-benchmarks.ts"],
|
|
4
|
-
"sourcesContent": ["/**\n * Retrieval Quality Benchmarks at Scale\n * Tests different retrieval strategies to monitor for semantic collapse\n *\n * Key metrics:\n * - Precision: How relevant are retrieved results?\n * - Recall: Are we missing important context?\n * - Semantic Drift: Do embeddings collapse over time?\n * - Query Latency: Performance at scale\n */\n\nimport Database from 'better-sqlite3';\nimport { logger } from '../monitoring/logger.js';\nimport { Trace } from '../trace/types.js';\nimport { LLMContextRetrieval } from './llm-context-retrieval.js';\nimport { HierarchicalRetrieval } from './hierarchical-retrieval.js';\nimport { GraphRetrieval } from './graph-retrieval.js';\nimport { FrameManager } from '../context/index.js';\n\nexport interface BenchmarkQuery {\n query: string;\n expectedTraceIds: string[];\n expectedTopics: string[];\n difficulty: 'easy' | 'medium' | 'hard';\n category: string;\n}\n\nexport interface BenchmarkResult {\n strategy: 'flat' | 'hierarchical' | 'graph';\n query: BenchmarkQuery;\n retrievedTraceIds: string[];\n precision: number;\n recall: number;\n f1Score: number;\n queryTimeMs: number;\n tokensUsed: number;\n semanticDrift?: number;\n explanation: string;\n}\n\nexport interface BenchmarkReport {\n timestamp: number;\n traceCount: number;\n strategies: {\n flat: StrategyMetrics;\n hierarchical: StrategyMetrics;\n graph: StrategyMetrics;\n };\n warnings: string[];\n recommendations: string[];\n}\n\nexport interface StrategyMetrics {\n avgPrecision: number;\n avgRecall: number;\n avgF1Score: number;\n avgQueryTime: number;\n avgTokensUsed: number;\n semanticCollapse: boolean;\n collapseIndicators: string[];\n}\n\n/**\n * Benchmark suite for retrieval quality at scale\n */\nexport class RetrievalBenchmarks {\n private db: Database.Database;\n private flatRetrieval: LLMContextRetrieval;\n private hierarchicalRetrieval: HierarchicalRetrieval;\n private graphRetrieval: GraphRetrieval;\n private frameManager: FrameManager;\n\n constructor(\n db: Database.Database,\n frameManager: FrameManager,\n projectId: string\n ) {\n this.db = db;\n this.frameManager = frameManager;\n\n // Initialize retrieval strategies\n this.flatRetrieval = new LLMContextRetrieval(db, frameManager, projectId);\n this.hierarchicalRetrieval = new HierarchicalRetrieval(db);\n this.graphRetrieval = new GraphRetrieval(db);\n\n this.initializeSchema();\n }\n\n private initializeSchema(): void {\n this.db.exec(`\n CREATE TABLE IF NOT EXISTS benchmark_results (\n id INTEGER PRIMARY KEY AUTOINCREMENT,\n timestamp INTEGER DEFAULT (unixepoch() * 1000),\n strategy TEXT NOT NULL,\n query TEXT NOT NULL,\n difficulty TEXT,\n category TEXT,\n precision REAL,\n recall REAL,\n f1_score REAL,\n query_time_ms INTEGER,\n tokens_used INTEGER,\n semantic_drift REAL,\n trace_count INTEGER,\n retrieved_ids TEXT,\n expected_ids TEXT\n )\n `);\n\n this.db.exec(`\n CREATE INDEX IF NOT EXISTS idx_benchmark_strategy ON benchmark_results(strategy);\n CREATE INDEX IF NOT EXISTS idx_benchmark_timestamp ON benchmark_results(timestamp);\n CREATE INDEX IF NOT EXISTS idx_benchmark_difficulty ON benchmark_results(difficulty);\n `);\n }\n\n /**\n * Generate benchmark queries based on current data\n */\n async generateBenchmarkQueries(traces: Trace[]): Promise<BenchmarkQuery[]> {\n const queries: BenchmarkQuery[] = [];\n\n // Easy: Recent specific traces\n const recentTraces = traces\n .sort((a, b) => b.metadata.startTime - a.metadata.startTime)\n .slice(0, 10);\n\n for (const trace of recentTraces.slice(0, 3)) {\n queries.push({\n query: `Show me the ${trace.type} operation from ${new Date(trace.metadata.startTime).toLocaleString()}`,\n expectedTraceIds: [trace.id],\n expectedTopics: [trace.type],\n difficulty: 'easy',\n category: 'specific_lookup',\n });\n }\n\n // Medium: Topic-based queries\n const topicGroups = this.groupByTopic(traces);\n\n for (const [topic, topicTraces] of topicGroups.entries()) {\n if (topicTraces.length >= 5) {\n queries.push({\n query: `What ${topic} operations have been performed recently?`,\n expectedTraceIds: topicTraces.slice(0, 10).map((t) => t.id),\n expectedTopics: [topic],\n difficulty: 'medium',\n category: 'topic_search',\n });\n }\n }\n\n // Hard: Cross-topic and temporal queries\n if (traces.length > 50) {\n // Find traces with errors\n const errorTraces = traces.filter(\n (t) => t.metadata.errorsEncountered.length > 0\n );\n\n if (errorTraces.length > 0) {\n queries.push({\n query: 'What errors occurred and how were they resolved?',\n expectedTraceIds: errorTraces.map((t) => t.id),\n expectedTopics: ['error', 'fix', 'debug'],\n difficulty: 'hard',\n category: 'error_analysis',\n });\n }\n\n // Find decision chains\n const decisionTraces = traces.filter(\n (t) => t.metadata.decisionsRecorded.length > 0\n );\n\n if (decisionTraces.length > 0) {\n queries.push({\n query: 'What architectural decisions were made and why?',\n expectedTraceIds: decisionTraces.map((t) => t.id),\n expectedTopics: ['decision', 'architecture', 'design'],\n difficulty: 'hard',\n category: 'decision_tracking',\n });\n }\n }\n\n // Adversarial: Test for semantic collapse\n queries.push({\n query: 'something about code',\n expectedTraceIds: [],\n expectedTopics: [],\n difficulty: 'hard',\n category: 'vague_query',\n });\n\n queries.push({\n query: 'the thing we did yesterday with the files',\n expectedTraceIds: [],\n expectedTopics: [],\n difficulty: 'hard',\n category: 'ambiguous_query',\n });\n\n return queries;\n }\n\n /**\n * Run benchmarks on all strategies\n */\n async runBenchmarks(\n traces: Trace[],\n sampleSize: number = 10\n ): Promise<BenchmarkReport> {\n logger.info('Starting retrieval benchmarks', {\n traceCount: traces.length,\n sampleSize,\n });\n\n const queries = await this.generateBenchmarkQueries(traces);\n const sampledQueries = this.sampleQueries(queries, sampleSize);\n\n const results: BenchmarkResult[] = [];\n\n // Build hierarchical and graph structures\n await this.hierarchicalRetrieval.buildHierarchy(traces);\n const frames = await this.frameManager.getAllFrames();\n await this.graphRetrieval.buildGraph(traces, frames);\n\n // Test flat retrieval\n for (const query of sampledQueries) {\n const result = await this.benchmarkFlatRetrieval(query, traces);\n results.push(result);\n await this.saveResult(result, traces.length);\n }\n\n // Test hierarchical retrieval\n for (const query of sampledQueries) {\n const result = await this.benchmarkHierarchicalRetrieval(query, traces);\n results.push(result);\n await this.saveResult(result, traces.length);\n }\n\n // Test graph retrieval\n for (const query of sampledQueries) {\n const result = await this.benchmarkGraphRetrieval(query, traces);\n results.push(result);\n await this.saveResult(result, traces.length);\n }\n\n // Generate report\n const report = this.generateReport(results, traces.length);\n\n logger.info('Benchmarks complete', {\n strategies: 3,\n queries: sampledQueries.length,\n avgF1: {\n flat: report.strategies.flat.avgF1Score,\n hierarchical: report.strategies.hierarchical.avgF1Score,\n graph: report.strategies.graph.avgF1Score,\n },\n });\n\n return report;\n }\n\n /**\n * Benchmark flat embedding retrieval\n */\n private async benchmarkFlatRetrieval(\n query: BenchmarkQuery,\n traces: Trace[]\n ): Promise<BenchmarkResult> {\n const startTime = Date.now();\n\n try {\n const result = await this.flatRetrieval.retrieveContext(query.query, {\n tokenBudget: 4000,\n });\n\n const retrievedIds = result.frames.map((f) => f.id);\n const queryTime = Date.now() - startTime;\n\n return this.evaluateResult(\n 'flat',\n query,\n retrievedIds,\n queryTime,\n result.tokenUsage.used,\n 'Standard flat embedding retrieval'\n );\n } catch (error: unknown) {\n logger.error('Flat retrieval failed', error);\n return this.createErrorResult('flat', query, error as Error);\n }\n }\n\n /**\n * Benchmark hierarchical retrieval\n */\n private async benchmarkHierarchicalRetrieval(\n query: BenchmarkQuery,\n traces: Trace[]\n ): Promise<BenchmarkResult> {\n const startTime = Date.now();\n\n try {\n const context = await this.hierarchicalRetrieval.retrieve(\n query.query,\n 4,\n 4000\n );\n\n const queryTime = Date.now() - startTime;\n\n // Extract trace IDs from context (simplified)\n const retrievedIds = this.extractTraceIds(context);\n\n return this.evaluateResult(\n 'hierarchical',\n query,\n retrievedIds,\n queryTime,\n context.length / 4, // Estimate tokens\n 'Hierarchical retrieval with progressive summarization'\n );\n } catch (error: unknown) {\n logger.error('Hierarchical retrieval failed', error);\n return this.createErrorResult('hierarchical', query, error as Error);\n }\n }\n\n /**\n * Benchmark graph retrieval\n */\n private async benchmarkGraphRetrieval(\n query: BenchmarkQuery,\n traces: Trace[]\n ): Promise<BenchmarkResult> {\n const startTime = Date.now();\n\n try {\n const paths = await this.graphRetrieval.traverse(query.query, {\n maxHops: 3,\n minWeight: 0.3,\n });\n\n const queryTime = Date.now() - startTime;\n\n // Extract trace IDs from paths\n const retrievedIds = new Set<string>();\n for (const path of paths) {\n for (const node of path.nodes) {\n if (node.metadata.traceIds) {\n node.metadata.traceIds.forEach((id) => retrievedIds.add(id));\n }\n }\n }\n\n return this.evaluateResult(\n 'graph',\n query,\n Array.from(retrievedIds),\n queryTime,\n paths.length * 100, // Estimate tokens\n 'Graph-based retrieval with explicit relationships'\n );\n } catch (error: unknown) {\n logger.error('Graph retrieval failed', error);\n return this.createErrorResult('graph', query, error as Error);\n }\n }\n\n /**\n * Evaluate retrieval results\n */\n private evaluateResult(\n strategy: 'flat' | 'hierarchical' | 'graph',\n query: BenchmarkQuery,\n retrievedIds: string[],\n queryTimeMs: number,\n tokensUsed: number,\n explanation: string\n ): BenchmarkResult {\n const expectedSet = new Set(query.expectedTraceIds);\n const retrievedSet = new Set(retrievedIds);\n\n // Calculate metrics\n const truePositives = [...retrievedSet].filter((id) =>\n expectedSet.has(id)\n ).length;\n const falsePositives = retrievedSet.size - truePositives;\n const falseNegatives = expectedSet.size - truePositives;\n\n const precision =\n retrievedSet.size > 0 ? truePositives / retrievedSet.size : 0;\n const recall = expectedSet.size > 0 ? truePositives / expectedSet.size : 1;\n const f1Score =\n precision + recall > 0\n ? (2 * (precision * recall)) / (precision + recall)\n : 0;\n\n // Check for semantic drift (simplified)\n const semanticDrift = this.calculateSemanticDrift(query, retrievedIds);\n\n return {\n strategy,\n query,\n retrievedTraceIds: retrievedIds,\n precision,\n recall,\n f1Score,\n queryTimeMs,\n tokensUsed,\n semanticDrift,\n explanation,\n };\n }\n\n /**\n * Calculate semantic drift indicator\n */\n private calculateSemanticDrift(\n query: BenchmarkQuery,\n retrievedIds: string[]\n ): number {\n // If vague query returns too many results, indicates collapse\n if (query.category === 'vague_query' && retrievedIds.length > 10) {\n return 0.8; // High drift\n }\n\n // If specific query returns nothing, indicates problem\n if (query.category === 'specific_lookup' && retrievedIds.length === 0) {\n return 0.7;\n }\n\n return 0.1; // Normal\n }\n\n /**\n * Create error result\n */\n private createErrorResult(\n strategy: 'flat' | 'hierarchical' | 'graph',\n query: BenchmarkQuery,\n error: Error\n ): BenchmarkResult {\n return {\n strategy,\n query,\n retrievedTraceIds: [],\n precision: 0,\n recall: 0,\n f1Score: 0,\n queryTimeMs: 0,\n tokensUsed: 0,\n semanticDrift: 1.0,\n explanation: `Error: ${error.message}`,\n };\n }\n\n /**\n * Generate benchmark report\n */\n private generateReport(\n results: BenchmarkResult[],\n traceCount: number\n ): BenchmarkReport {\n const byStrategy = this.groupByStrategy(results);\n\n const report: BenchmarkReport = {\n timestamp: Date.now(),\n traceCount,\n strategies: {\n flat: this.calculateStrategyMetrics(byStrategy.flat || []),\n hierarchical: this.calculateStrategyMetrics(\n byStrategy.hierarchical || []\n ),\n graph: this.calculateStrategyMetrics(byStrategy.graph || []),\n },\n warnings: [],\n recommendations: [],\n };\n\n // Generate warnings\n if (report.strategies.flat.semanticCollapse) {\n report.warnings.push('Flat embedding shows signs of semantic collapse');\n }\n\n if (report.strategies.flat.avgQueryTime > 1000) {\n report.warnings.push('Flat retrieval query time exceeds 1 second');\n }\n\n // Generate recommendations\n const bestStrategy = this.getBestStrategy(report.strategies);\n report.recommendations.push(`Best overall strategy: ${bestStrategy}`);\n\n if (traceCount > 10000) {\n report.recommendations.push('Consider hierarchical retrieval for scale');\n }\n\n if (\n report.strategies.graph.avgF1Score >\n report.strategies.flat.avgF1Score * 1.2\n ) {\n report.recommendations.push(\n 'Graph retrieval significantly outperforms flat - consider switching'\n );\n }\n\n return report;\n }\n\n /**\n * Calculate strategy metrics\n */\n private calculateStrategyMetrics(\n results: BenchmarkResult[]\n ): StrategyMetrics {\n if (results.length === 0) {\n return {\n avgPrecision: 0,\n avgRecall: 0,\n avgF1Score: 0,\n avgQueryTime: 0,\n avgTokensUsed: 0,\n semanticCollapse: false,\n collapseIndicators: [],\n };\n }\n\n const avgPrecision =\n results.reduce((sum, r) => sum + r.precision, 0) / results.length;\n const avgRecall =\n results.reduce((sum, r) => sum + r.recall, 0) / results.length;\n const avgF1Score =\n results.reduce((sum, r) => sum + r.f1Score, 0) / results.length;\n const avgQueryTime =\n results.reduce((sum, r) => sum + r.queryTimeMs, 0) / results.length;\n const avgTokensUsed =\n results.reduce((sum, r) => sum + r.tokensUsed, 0) / results.length;\n\n // Check for semantic collapse\n const collapseIndicators: string[] = [];\n const avgDrift =\n results.reduce((sum, r) => sum + (r.semanticDrift || 0), 0) /\n results.length;\n\n if (avgDrift > 0.5) {\n collapseIndicators.push('High semantic drift detected');\n }\n\n // Check for uniform results (everything returns same thing)\n const uniqueResults = new Set(\n results.map((r) => r.retrievedTraceIds.sort().join(','))\n );\n if (uniqueResults.size < results.length * 0.3) {\n collapseIndicators.push(\n 'Low result diversity - possible embedding collapse'\n );\n }\n\n // Check for poor precision on specific queries\n const specificQueries = results.filter(\n (r) => r.query.difficulty === 'easy'\n );\n const specificPrecision =\n specificQueries.reduce((sum, r) => sum + r.precision, 0) /\n (specificQueries.length || 1);\n if (specificPrecision < 0.5) {\n collapseIndicators.push('Poor precision on specific queries');\n }\n\n return {\n avgPrecision,\n avgRecall,\n avgF1Score,\n avgQueryTime,\n avgTokensUsed,\n semanticCollapse: collapseIndicators.length > 0,\n collapseIndicators,\n };\n }\n\n /**\n * Determine best strategy\n */\n private getBestStrategy(strategies: BenchmarkReport['strategies']): string {\n const scores = {\n flat:\n strategies.flat.avgF1Score * (1 - strategies.flat.avgQueryTime / 5000),\n hierarchical:\n strategies.hierarchical.avgF1Score *\n (1 - strategies.hierarchical.avgQueryTime / 5000),\n graph:\n strategies.graph.avgF1Score *\n (1 - strategies.graph.avgQueryTime / 5000),\n };\n\n return Object.entries(scores).sort((a, b) => b[1] - a[1])[0][0];\n }\n\n /**\n * Group traces by topic\n */\n private groupByTopic(traces: Trace[]): Map<string, Trace[]> {\n const groups = new Map<string, Trace[]>();\n\n for (const trace of traces) {\n if (!groups.has(trace.type)) {\n groups.set(trace.type, []);\n }\n groups.get(trace.type)!.push(trace);\n }\n\n return groups;\n }\n\n /**\n * Group results by strategy\n */\n private groupByStrategy(\n results: BenchmarkResult[]\n ): Record<string, BenchmarkResult[]> {\n const grouped: Record<string, BenchmarkResult[]> = {};\n\n for (const result of results) {\n if (!grouped[result.strategy]) {\n grouped[result.strategy] = [];\n }\n grouped[result.strategy].push(result);\n }\n\n return grouped;\n }\n\n /**\n * Sample queries for benchmarking\n */\n private sampleQueries(\n queries: BenchmarkQuery[],\n sampleSize: number\n ): BenchmarkQuery[] {\n // Ensure we get a mix of difficulties\n const byDifficulty = this.groupByDifficulty(queries);\n const sampled: BenchmarkQuery[] = [];\n\n const perDifficulty = Math.ceil(sampleSize / 3);\n\n for (const difficulty of ['easy', 'medium', 'hard'] as const) {\n const difficultyQueries = byDifficulty[difficulty] || [];\n const sample = this.randomSample(difficultyQueries, perDifficulty);\n sampled.push(...sample);\n }\n\n return sampled.slice(0, sampleSize);\n }\n\n /**\n * Group queries by difficulty\n */\n private groupByDifficulty(\n queries: BenchmarkQuery[]\n ): Record<string, BenchmarkQuery[]> {\n const grouped: Record<string, BenchmarkQuery[]> = {};\n\n for (const query of queries) {\n if (!grouped[query.difficulty]) {\n grouped[query.difficulty] = [];\n }\n grouped[query.difficulty].push(query);\n }\n\n return grouped;\n }\n\n /**\n * Random sample from array\n */\n private randomSample<T>(array: T[], size: number): T[] {\n const shuffled = [...array].sort(() => Math.random() - 0.5);\n return shuffled.slice(0, size);\n }\n\n /**\n * Extract trace IDs from context string\n */\n private extractTraceIds(context: string): string[] {\n // Simple pattern matching for trace IDs\n const matches = context.match(/trace_[a-f0-9]{16}/g) || [];\n return [...new Set(matches)];\n }\n\n /**\n * Save benchmark result to database\n */\n private async saveResult(\n result: BenchmarkResult,\n traceCount: number\n ): Promise<void> {\n this.db\n .prepare(\n `\n INSERT INTO benchmark_results (\n strategy, query, difficulty, category,\n precision, recall, f1_score,\n query_time_ms, tokens_used, semantic_drift,\n trace_count, retrieved_ids, expected_ids\n ) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)\n `\n )\n .run(\n result.strategy,\n result.query.query,\n result.query.difficulty,\n result.query.category,\n result.precision,\n result.recall,\n result.f1Score,\n result.queryTimeMs,\n result.tokensUsed,\n result.semanticDrift || 0,\n traceCount,\n JSON.stringify(result.retrievedTraceIds),\n JSON.stringify(result.query.expectedTraceIds)\n );\n }\n\n /**\n * Get historical benchmark trends\n */\n getHistoricalTrends(days: number = 7): any {\n const cutoff = Date.now() - days * 24 * 60 * 60 * 1000;\n\n const trends = this.db\n .prepare(\n `\n SELECT \n strategy,\n DATE(timestamp / 1000, 'unixepoch') as date,\n AVG(precision) as avg_precision,\n AVG(recall) as avg_recall,\n AVG(f1_score) as avg_f1,\n AVG(query_time_ms) as avg_query_time,\n AVG(semantic_drift) as avg_drift,\n COUNT(*) as query_count\n FROM benchmark_results\n WHERE timestamp > ?\n GROUP BY strategy, date\n ORDER BY date, strategy\n `\n )\n .all(cutoff);\n\n return trends;\n }\n}\n"],
|
|
5
|
-
"mappings": "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",
|
|
6
|
-
"names": []
|
|
7
|
-
}
|
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"version": 3,
|
|
3
|
-
"sources": ["../../../src/core/retrieval/summary-generator.ts"],
|
|
4
|
-
"sourcesContent": ["/**\n * Compressed Summary Generator\n * Creates compact summaries of project memory for LLM analysis\n */\n\nimport Database from 'better-sqlite3';\nimport {\n FrameManager,\n Frame,\n Anchor,\n Event,\n} from '../context/index.js';\nimport { TraceDetector } from '../trace/trace-detector.js';\nimport {\n CompressedSummary,\n RecentSessionSummary,\n HistoricalPatterns,\n QueryableIndices,\n SummaryStats,\n FrameSummary,\n OperationSummary,\n FileSummary,\n ErrorSummary,\n DecisionSummary,\n IssueSummary,\n ToolSequence,\n ActivityPattern,\n RetrievalConfig,\n DEFAULT_RETRIEVAL_CONFIG,\n} from './types.js';\nimport { logger } from '../monitoring/logger.js';\n\nexport class CompressedSummaryGenerator {\n private db: Database.Database;\n private frameManager: FrameManager;\n private traceDetector?: TraceDetector;\n private projectId: string;\n private config: RetrievalConfig;\n private cache: Map<\n string,\n { summary: CompressedSummary; expiresAt: number }\n > = new Map();\n\n constructor(\n db: Database.Database,\n frameManager: FrameManager,\n projectId: string,\n config: Partial<RetrievalConfig> = {},\n traceDetector?: TraceDetector\n ) {\n this.db = db;\n this.frameManager = frameManager;\n this.projectId = projectId;\n this.config = { ...DEFAULT_RETRIEVAL_CONFIG, ...config };\n this.traceDetector = traceDetector;\n }\n\n /**\n * Generate a compressed summary for LLM analysis\n */\n public generateSummary(\n options: {\n maxFrames?: number;\n timeRangeHours?: number;\n forceRefresh?: boolean;\n } = {}\n ): CompressedSummary {\n const cacheKey = `summary_${this.projectId}_${options.maxFrames || this.config.maxSummaryFrames}`;\n\n // Check cache\n if (!options.forceRefresh) {\n const cached = this.cache.get(cacheKey);\n if (cached && cached.expiresAt > Date.now()) {\n logger.debug('Using cached summary', { projectId: this.projectId });\n return cached.summary;\n }\n }\n\n const startTime = Date.now();\n const maxFrames = options.maxFrames || this.config.maxSummaryFrames;\n const timeRangeHours = options.timeRangeHours || 24;\n\n // Generate all components\n const recentSession = this.generateRecentSessionSummary(\n maxFrames,\n timeRangeHours\n );\n const historicalPatterns = this.generateHistoricalPatterns();\n const queryableIndices = this.generateQueryableIndices();\n const stats = this.generateStats();\n\n const summary: CompressedSummary = {\n projectId: this.projectId,\n generatedAt: Date.now(),\n recentSession,\n historicalPatterns,\n queryableIndices,\n stats,\n };\n\n // Cache the result\n this.cache.set(cacheKey, {\n summary,\n expiresAt: Date.now() + this.config.cacheTtlSeconds * 1000,\n });\n\n logger.info('Generated compressed summary', {\n projectId: this.projectId,\n frames: recentSession.frames.length,\n generationTimeMs: Date.now() - startTime,\n });\n\n return summary;\n }\n\n /**\n * Generate recent session summary\n */\n private generateRecentSessionSummary(\n maxFrames: number,\n timeRangeHours: number\n ): RecentSessionSummary {\n const cutoffTime = Math.floor(Date.now() / 1000) - timeRangeHours * 3600;\n\n // Get recent frames\n const frames = this.getRecentFrames(maxFrames, cutoffTime);\n const frameSummaries = frames.map((f) => this.summarizeFrame(f));\n\n // Get dominant operations\n const dominantOperations = this.getDominantOperations(cutoffTime);\n\n // Get files touched\n const filesTouched = this.getFilesTouched(cutoffTime);\n\n // Get errors encountered\n const errorsEncountered = this.getErrorsEncountered(cutoffTime);\n\n // Calculate time range\n const timestamps = frames.map((f) => f.created_at).filter((t) => t);\n const start = timestamps.length > 0 ? Math.min(...timestamps) : cutoffTime;\n const end =\n timestamps.length > 0\n ? Math.max(...timestamps)\n : Math.floor(Date.now() / 1000);\n\n return {\n frames: frameSummaries,\n dominantOperations,\n filesTouched,\n errorsEncountered,\n timeRange: {\n start: start * 1000,\n end: end * 1000,\n durationMs: (end - start) * 1000,\n },\n };\n }\n\n /**\n * Generate historical patterns\n */\n private generateHistoricalPatterns(): HistoricalPatterns {\n return {\n topicFrameCounts: this.getTopicFrameCounts(),\n keyDecisions: this.getKeyDecisions(),\n recurringIssues: this.getRecurringIssues(),\n commonToolSequences: this.getCommonToolSequences(),\n activityPatterns: this.getActivityPatterns(),\n };\n }\n\n /**\n * Generate queryable indices\n */\n private generateQueryableIndices(): QueryableIndices {\n return {\n byErrorType: this.indexByErrorType(),\n byTimeframe: this.indexByTimeframe(),\n byContributor: this.indexByContributor(),\n byTopic: this.indexByTopic(),\n byFile: this.indexByFile(),\n };\n }\n\n /**\n * Generate summary statistics\n */\n private generateStats(): SummaryStats {\n try {\n const frameStats =\n (this.db\n .prepare(\n `\n SELECT \n COUNT(*) as totalFrames,\n MIN(created_at) as oldestFrame,\n MAX(created_at) as newestFrame,\n AVG(depth) as avgDepth\n FROM frames\n WHERE project_id = ?\n `\n )\n .get(this.projectId) as any) || {};\n\n const eventCount = (this.db\n .prepare(\n `\n SELECT COUNT(*) as count FROM events e\n JOIN frames f ON e.frame_id = f.frame_id\n WHERE f.project_id = ?\n `\n )\n .get(this.projectId) as any) || { count: 0 };\n\n const anchorCount = (this.db\n .prepare(\n `\n SELECT COUNT(*) as count FROM anchors a\n JOIN frames f ON a.frame_id = f.frame_id\n WHERE f.project_id = ?\n `\n )\n .get(this.projectId) as any) || { count: 0 };\n\n const decisionCount = (this.db\n .prepare(\n `\n SELECT COUNT(*) as count FROM anchors a\n JOIN frames f ON a.frame_id = f.frame_id\n WHERE f.project_id = ? AND a.type = 'DECISION'\n `\n )\n .get(this.projectId) as any) || { count: 0 };\n\n const totalFrames = frameStats.totalFrames || 0;\n\n return {\n totalFrames,\n totalEvents: eventCount.count || 0,\n totalAnchors: anchorCount.count || 0,\n totalDecisions: decisionCount.count || 0,\n oldestFrame: (frameStats.oldestFrame || 0) * 1000,\n newestFrame: (frameStats.newestFrame || 0) * 1000,\n avgFrameDepth: frameStats.avgDepth || 0,\n avgEventsPerFrame:\n totalFrames > 0 ? (eventCount.count || 0) / totalFrames : 0,\n };\n } catch (error: unknown) {\n logger.warn('Error generating stats, using defaults', { error });\n return {\n totalFrames: 0,\n totalEvents: 0,\n totalAnchors: 0,\n totalDecisions: 0,\n oldestFrame: 0,\n newestFrame: 0,\n avgFrameDepth: 0,\n avgEventsPerFrame: 0,\n };\n }\n }\n\n // Helper methods for recent session\n\n private getRecentFrames(limit: number, cutoffTime: number): Frame[] {\n try {\n const rows = this.db\n .prepare(\n `\n SELECT * FROM frames\n WHERE project_id = ? AND created_at >= ?\n ORDER BY created_at DESC\n LIMIT ?\n `\n )\n .all(this.projectId, cutoffTime, limit) as any[];\n\n return rows.map((row) => ({\n ...row,\n inputs: JSON.parse(row.inputs || '{}'),\n outputs: JSON.parse(row.outputs || '{}'),\n digest_json: JSON.parse(row.digest_json || '{}'),\n }));\n } catch {\n return [];\n }\n }\n\n private summarizeFrame(frame: Frame): FrameSummary {\n // Get event count\n const eventCount = (this.db\n .prepare(\n `\n SELECT COUNT(*) as count FROM events WHERE frame_id = ?\n `\n )\n .get(frame.frame_id) as any) || { count: 0 };\n\n // Get anchor count\n const anchorCount = (this.db\n .prepare(\n `\n SELECT COUNT(*) as count FROM anchors WHERE frame_id = ?\n `\n )\n .get(frame.frame_id) as any) || { count: 0 };\n\n // Calculate score based on activity\n const score = this.calculateFrameScore(\n frame,\n eventCount.count,\n anchorCount.count\n );\n\n return {\n frameId: frame.frame_id,\n name: frame.name,\n type: frame.type,\n depth: frame.depth,\n eventCount: eventCount.count,\n anchorCount: anchorCount.count,\n score,\n createdAt: frame.created_at * 1000,\n closedAt: frame.closed_at ? frame.closed_at * 1000 : undefined,\n digestPreview: frame.digest_text?.substring(0, 100),\n };\n }\n\n private calculateFrameScore(\n frame: Frame,\n eventCount: number,\n anchorCount: number\n ): number {\n let score = 0.3; // Base score\n\n // Activity bonus\n score += Math.min(eventCount / 50, 0.3);\n score += Math.min(anchorCount / 10, 0.2);\n\n // Recency bonus\n const ageHours = (Date.now() / 1000 - frame.created_at) / 3600;\n if (ageHours < 1) score += 0.2;\n else if (ageHours < 6) score += 0.1;\n\n // Open frame bonus\n if (frame.state === 'active') score += 0.1;\n\n return Math.min(score, 1.0);\n }\n\n private getDominantOperations(cutoffTime: number): OperationSummary[] {\n try {\n const rows = this.db\n .prepare(\n `\n SELECT \n e.event_type as operation,\n COUNT(*) as count,\n MAX(e.ts) as lastOccurrence,\n SUM(CASE WHEN json_extract(e.payload, '$.success') = 1 THEN 1 ELSE 0 END) as successCount\n FROM events e\n JOIN frames f ON e.frame_id = f.frame_id\n WHERE f.project_id = ? AND e.ts >= ?\n GROUP BY e.event_type\n ORDER BY count DESC\n LIMIT 10\n `\n )\n .all(this.projectId, cutoffTime) as any[];\n\n return rows.map((row) => ({\n operation: row.operation,\n count: row.count,\n lastOccurrence: row.lastOccurrence * 1000,\n successRate: row.count > 0 ? row.successCount / row.count : 0,\n }));\n } catch {\n return [];\n }\n }\n\n private getFilesTouched(cutoffTime: number): FileSummary[] {\n try {\n // Extract file paths from event payloads\n const rows = this.db\n .prepare(\n `\n SELECT \n json_extract(e.payload, '$.file_path') as path,\n e.event_type as operation,\n MAX(e.ts) as lastModified\n FROM events e\n JOIN frames f ON e.frame_id = f.frame_id\n WHERE f.project_id = ? \n AND e.ts >= ?\n AND json_extract(e.payload, '$.file_path') IS NOT NULL\n GROUP BY json_extract(e.payload, '$.file_path'), e.event_type\n `\n )\n .all(this.projectId, cutoffTime) as any[];\n\n // Aggregate by file\n const fileMap = new Map<string, FileSummary>();\n for (const row of rows) {\n if (!row.path) continue;\n\n const existing = fileMap.get(row.path);\n if (existing) {\n existing.operationCount++;\n existing.operations.push(row.operation);\n existing.lastModified = Math.max(\n existing.lastModified,\n row.lastModified * 1000\n );\n } else {\n fileMap.set(row.path, {\n path: row.path,\n operationCount: 1,\n lastModified: row.lastModified * 1000,\n operations: [row.operation],\n });\n }\n }\n\n return Array.from(fileMap.values())\n .sort((a, b) => b.operationCount - a.operationCount)\n .slice(0, 20);\n } catch {\n return [];\n }\n }\n\n private getErrorsEncountered(cutoffTime: number): ErrorSummary[] {\n try {\n const rows = this.db\n .prepare(\n `\n SELECT \n json_extract(e.payload, '$.error_type') as errorType,\n json_extract(e.payload, '$.error') as message,\n COUNT(*) as count,\n MAX(e.ts) as lastOccurrence\n FROM events e\n JOIN frames f ON e.frame_id = f.frame_id\n WHERE f.project_id = ? \n AND e.ts >= ?\n AND (json_extract(e.payload, '$.error') IS NOT NULL \n OR json_extract(e.payload, '$.error_type') IS NOT NULL)\n GROUP BY json_extract(e.payload, '$.error_type'), json_extract(e.payload, '$.error')\n ORDER BY count DESC\n LIMIT 15\n `\n )\n .all(this.projectId, cutoffTime) as any[];\n\n return rows.map((row) => ({\n errorType: row.errorType || 'unknown',\n message: row.message || '',\n count: row.count,\n lastOccurrence: row.lastOccurrence * 1000,\n resolved: false, // Would need more context to determine\n }));\n } catch {\n return [];\n }\n }\n\n // Helper methods for historical patterns\n\n private getTopicFrameCounts(): Record<string, number> {\n try {\n const rows = this.db\n .prepare(\n `\n SELECT type, COUNT(*) as count\n FROM frames\n WHERE project_id = ?\n GROUP BY type\n `\n )\n .all(this.projectId) as any[];\n\n const counts: Record<string, number> = {};\n for (const row of rows) {\n counts[row.type] = row.count;\n }\n return counts;\n } catch {\n return {};\n }\n }\n\n private getKeyDecisions(): DecisionSummary[] {\n try {\n const rows = this.db\n .prepare(\n `\n SELECT \n a.anchor_id as id,\n a.text,\n a.frame_id as frameId,\n a.created_at as timestamp,\n a.priority\n FROM anchors a\n JOIN frames f ON a.frame_id = f.frame_id\n WHERE f.project_id = ? AND a.type = 'DECISION'\n ORDER BY a.priority DESC, a.created_at DESC\n LIMIT 20\n `\n )\n .all(this.projectId) as any[];\n\n return rows.map((row) => ({\n id: row.id,\n text: row.text,\n frameId: row.frameId,\n timestamp: row.timestamp * 1000,\n impact:\n row.priority >= 7 ? 'high' : row.priority >= 4 ? 'medium' : 'low',\n }));\n } catch {\n return [];\n }\n }\n\n private getRecurringIssues(): IssueSummary[] {\n try {\n const rows = this.db\n .prepare(\n `\n SELECT \n json_extract(e.payload, '$.error_type') as issueType,\n COUNT(*) as occurrenceCount,\n MAX(e.ts) as lastSeen\n FROM events e\n JOIN frames f ON e.frame_id = f.frame_id\n WHERE f.project_id = ? \n AND json_extract(e.payload, '$.error_type') IS NOT NULL\n GROUP BY json_extract(e.payload, '$.error_type')\n HAVING COUNT(*) > 1\n ORDER BY occurrenceCount DESC\n LIMIT 10\n `\n )\n .all(this.projectId) as any[];\n\n return rows.map((row) => ({\n issueType: row.issueType,\n occurrenceCount: row.occurrenceCount,\n lastSeen: row.lastSeen * 1000,\n resolutionRate: 0.5, // Would need resolution tracking\n }));\n } catch {\n return [];\n }\n }\n\n private getCommonToolSequences(): ToolSequence[] {\n // Use trace detector if available\n if (this.traceDetector) {\n const stats = this.traceDetector.getStatistics();\n const sequences: ToolSequence[] = [];\n\n for (const [type, count] of Object.entries(stats.tracesByType)) {\n sequences.push({\n pattern: type,\n frequency: count,\n avgDuration: 0, // Would need more data\n successRate: 0.8, // Estimate\n });\n }\n\n return sequences;\n }\n\n return [];\n }\n\n private getActivityPatterns(): ActivityPattern[] {\n try {\n // Get hourly distribution\n const hourlyRows = this.db\n .prepare(\n `\n SELECT \n strftime('%H', datetime(e.ts, 'unixepoch')) as hour,\n COUNT(*) as count\n FROM events e\n JOIN frames f ON e.frame_id = f.frame_id\n WHERE f.project_id = ?\n GROUP BY hour\n ORDER BY count DESC\n `\n )\n .all(this.projectId) as any[];\n\n const peakHours = hourlyRows.slice(0, 3).map((r) => `${r.hour}:00`);\n const totalEvents = hourlyRows.reduce((sum, r) => sum + r.count, 0);\n\n return [\n {\n periodType: 'hourly',\n peakPeriods: peakHours,\n avgEventsPerPeriod: totalEvents / 24,\n },\n ];\n } catch {\n return [];\n }\n }\n\n // Helper methods for queryable indices\n\n private indexByErrorType(): Record<string, string[]> {\n try {\n const rows = this.db\n .prepare(\n `\n SELECT DISTINCT\n json_extract(e.payload, '$.error_type') as errorType,\n f.frame_id\n FROM events e\n JOIN frames f ON e.frame_id = f.frame_id\n WHERE f.project_id = ? \n AND json_extract(e.payload, '$.error_type') IS NOT NULL\n `\n )\n .all(this.projectId) as any[];\n\n const index: Record<string, string[]> = {};\n for (const row of rows) {\n if (!row.errorType) continue;\n if (!index[row.errorType]) index[row.errorType] = [];\n if (!index[row.errorType].includes(row.frame_id)) {\n index[row.errorType].push(row.frame_id);\n }\n }\n return index;\n } catch {\n return {};\n }\n }\n\n private indexByTimeframe(): Record<string, string[]> {\n try {\n const now = Math.floor(Date.now() / 1000);\n const timeframes = {\n last_hour: now - 3600,\n last_day: now - 86400,\n last_week: now - 604800,\n last_month: now - 2592000,\n };\n\n const index: Record<string, string[]> = {};\n\n for (const [label, cutoff] of Object.entries(timeframes)) {\n const rows = this.db\n .prepare(\n `\n SELECT frame_id FROM frames\n WHERE project_id = ? AND created_at >= ?\n `\n )\n .all(this.projectId, cutoff) as any[];\n\n index[label] = rows.map((r) => r.frame_id);\n }\n\n return index;\n } catch {\n return {};\n }\n }\n\n private indexByContributor(): Record<string, string[]> {\n // Would need user tracking - return empty for now\n return {};\n }\n\n private indexByTopic(): Record<string, string[]> {\n try {\n const rows = this.db\n .prepare(\n `\n SELECT frame_id, type, name FROM frames\n WHERE project_id = ?\n `\n )\n .all(this.projectId) as any[];\n\n const index: Record<string, string[]> = {};\n\n for (const row of rows) {\n // Index by frame type\n if (!index[row.type]) index[row.type] = [];\n index[row.type].push(row.frame_id);\n\n // Index by keywords in name\n const keywords = this.extractKeywords(row.name);\n for (const keyword of keywords) {\n if (!index[keyword]) index[keyword] = [];\n if (!index[keyword].includes(row.frame_id)) {\n index[keyword].push(row.frame_id);\n }\n }\n }\n\n return index;\n } catch {\n return {};\n }\n }\n\n private indexByFile(): Record<string, string[]> {\n try {\n const rows = this.db\n .prepare(\n `\n SELECT DISTINCT\n json_extract(e.payload, '$.file_path') as filePath,\n f.frame_id\n FROM events e\n JOIN frames f ON e.frame_id = f.frame_id\n WHERE f.project_id = ? \n AND json_extract(e.payload, '$.file_path') IS NOT NULL\n `\n )\n .all(this.projectId) as any[];\n\n const index: Record<string, string[]> = {};\n for (const row of rows) {\n if (!row.filePath) continue;\n if (!index[row.filePath]) index[row.filePath] = [];\n if (!index[row.filePath].includes(row.frame_id)) {\n index[row.filePath].push(row.frame_id);\n }\n }\n return index;\n } catch {\n return {};\n }\n }\n\n private extractKeywords(text: string): string[] {\n const stopWords = new Set([\n 'the',\n 'a',\n 'an',\n 'and',\n 'or',\n 'but',\n 'in',\n 'on',\n 'at',\n 'to',\n 'for',\n ]);\n return text\n .toLowerCase()\n .split(/\\W+/)\n .filter((word) => word.length > 2 && !stopWords.has(word));\n }\n\n /**\n * Clear the cache\n */\n public clearCache(): void {\n this.cache.clear();\n logger.debug('Summary cache cleared', { projectId: this.projectId });\n }\n}\n"],
|
|
5
|
-
"mappings": "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",
|
|
6
|
-
"names": []
|
|
7
|
-
}
|