@stackmemoryai/stackmemory 0.2.7 → 0.2.9
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 +25 -8
- package/dist/scripts/cancel-duplicate-tasks.js +2 -1
- package/dist/scripts/cancel-duplicate-tasks.js.map +1 -1
- package/dist/scripts/list-linear-tasks.js +3 -4
- package/dist/scripts/list-linear-tasks.js.map +1 -1
- package/dist/scripts/merge-linear-duplicates-safe.js +4 -2
- package/dist/scripts/merge-linear-duplicates-safe.js.map +1 -1
- package/dist/scripts/show-linear-summary.js +4 -1
- package/dist/scripts/show-linear-summary.js.map +1 -1
- package/dist/scripts/status.js +6 -2
- package/dist/scripts/status.js.map +1 -1
- package/dist/src/cli/auto-detect.js.map +1 -1
- package/dist/src/cli/claude-sm.js.map +1 -1
- package/dist/src/cli/commands/config.d.ts +6 -0
- package/dist/src/cli/commands/config.d.ts.map +1 -0
- package/dist/src/cli/commands/config.js +224 -0
- package/dist/src/cli/commands/config.js.map +1 -0
- package/dist/src/cli/commands/linear.d.ts.map +1 -1
- package/dist/src/cli/commands/linear.js +123 -47
- package/dist/src/cli/commands/linear.js.map +1 -1
- package/dist/src/cli/index.d.ts.map +1 -1
- package/dist/src/cli/index.js +48 -1
- package/dist/src/cli/index.js.map +1 -1
- package/dist/src/core/config/config-manager.d.ts +95 -0
- package/dist/src/core/config/config-manager.d.ts.map +1 -0
- package/dist/src/core/config/config-manager.js +359 -0
- package/dist/src/core/config/config-manager.js.map +1 -0
- package/dist/src/core/config/types.d.ts +72 -0
- package/dist/src/core/config/types.d.ts.map +1 -0
- package/dist/src/core/config/types.js +127 -0
- package/dist/src/core/config/types.js.map +1 -0
- package/dist/src/core/context/compaction-handler.d.ts +119 -0
- package/dist/src/core/context/compaction-handler.d.ts.map +1 -0
- package/dist/src/core/context/compaction-handler.js +306 -0
- package/dist/src/core/context/compaction-handler.js.map +1 -0
- package/dist/src/core/context/model-aware-compaction.d.ts +101 -0
- package/dist/src/core/context/model-aware-compaction.d.ts.map +1 -0
- package/dist/src/core/context/model-aware-compaction.js +616 -0
- package/dist/src/core/context/model-aware-compaction.js.map +1 -0
- package/dist/src/core/digest/hybrid-digest-generator.d.ts +76 -0
- package/dist/src/core/digest/hybrid-digest-generator.d.ts.map +1 -0
- package/dist/src/core/digest/hybrid-digest-generator.js +629 -0
- package/dist/src/core/digest/hybrid-digest-generator.js.map +1 -0
- package/dist/src/core/digest/index.d.ts +7 -0
- package/dist/src/core/digest/index.d.ts.map +1 -0
- package/dist/src/core/digest/index.js +7 -0
- package/dist/src/core/digest/index.js.map +1 -0
- package/dist/src/core/digest/types.d.ts +154 -0
- package/dist/src/core/digest/types.d.ts.map +1 -0
- package/dist/src/core/digest/types.js +18 -0
- package/dist/src/core/digest/types.js.map +1 -0
- package/dist/src/core/monitoring/logger.d.ts +2 -2
- package/dist/src/core/monitoring/logger.d.ts.map +1 -1
- package/dist/src/core/monitoring/logger.js +10 -5
- package/dist/src/core/monitoring/logger.js.map +1 -1
- package/dist/src/core/monitoring/metrics.d.ts +3 -0
- package/dist/src/core/monitoring/metrics.d.ts.map +1 -1
- package/dist/src/core/monitoring/metrics.js +142 -3
- package/dist/src/core/monitoring/metrics.js.map +1 -1
- package/dist/src/core/persistence/postgres-adapter.d.ts +31 -0
- package/dist/src/core/persistence/postgres-adapter.d.ts.map +1 -0
- package/dist/src/core/persistence/postgres-adapter.js +316 -0
- package/dist/src/core/persistence/postgres-adapter.js.map +1 -0
- package/dist/src/core/query/query-parser.d.ts +104 -0
- package/dist/src/core/query/query-parser.d.ts.map +1 -0
- package/dist/src/core/query/query-parser.js +347 -0
- package/dist/src/core/query/query-parser.js.map +1 -0
- package/dist/src/core/retrieval/index.d.ts +8 -0
- package/dist/src/core/retrieval/index.d.ts.map +1 -0
- package/dist/src/core/retrieval/index.js +8 -0
- package/dist/src/core/retrieval/index.js.map +1 -0
- package/dist/src/core/retrieval/llm-context-retrieval.d.ts +71 -0
- package/dist/src/core/retrieval/llm-context-retrieval.d.ts.map +1 -0
- package/dist/src/core/retrieval/llm-context-retrieval.js +545 -0
- package/dist/src/core/retrieval/llm-context-retrieval.js.map +1 -0
- package/dist/src/core/retrieval/summary-generator.d.ts +63 -0
- package/dist/src/core/retrieval/summary-generator.d.ts.map +1 -0
- package/dist/src/core/retrieval/summary-generator.js +622 -0
- package/dist/src/core/retrieval/summary-generator.js.map +1 -0
- package/dist/src/core/retrieval/types.d.ts +257 -0
- package/dist/src/core/retrieval/types.d.ts.map +1 -0
- package/dist/src/core/retrieval/types.js +18 -0
- package/dist/src/core/retrieval/types.js.map +1 -0
- package/dist/src/core/trace/trace-detector.d.ts +108 -0
- package/dist/src/core/trace/trace-detector.d.ts.map +1 -0
- package/dist/src/core/trace/trace-detector.demo.d.ts +5 -0
- package/dist/src/core/trace/trace-detector.demo.d.ts.map +1 -0
- package/dist/src/core/trace/trace-detector.demo.js +145 -0
- package/dist/src/core/trace/trace-detector.demo.js.map +1 -0
- package/dist/src/core/trace/trace-detector.js +425 -0
- package/dist/src/core/trace/trace-detector.js.map +1 -0
- package/dist/src/core/trace/trace-store.d.ts +60 -0
- package/dist/src/core/trace/trace-store.d.ts.map +1 -0
- package/dist/src/core/trace/trace-store.js +323 -0
- package/dist/src/core/trace/trace-store.js.map +1 -0
- package/dist/src/core/trace/types.d.ts +81 -0
- package/dist/src/core/trace/types.d.ts.map +1 -0
- package/dist/src/core/trace/types.js +70 -0
- package/dist/src/core/trace/types.js.map +1 -0
- package/dist/src/core/types.d.ts +35 -0
- package/dist/src/core/types.d.ts.map +1 -0
- package/dist/src/core/types.js +2 -0
- package/dist/src/core/types.js.map +1 -0
- package/dist/src/integrations/linear/sync-manager.d.ts +76 -0
- package/dist/src/integrations/linear/sync-manager.d.ts.map +1 -0
- package/dist/src/integrations/linear/sync-manager.js +223 -0
- package/dist/src/integrations/linear/sync-manager.js.map +1 -0
- package/dist/src/integrations/mcp/server.d.ts +8 -0
- package/dist/src/integrations/mcp/server.d.ts.map +1 -1
- package/dist/src/integrations/mcp/server.js +369 -17
- package/dist/src/integrations/mcp/server.js.map +1 -1
- package/dist/src/integrations/mcp/trace-test.d.ts +5 -0
- package/dist/src/integrations/mcp/trace-test.d.ts.map +1 -0
- package/dist/src/integrations/mcp/trace-test.js +54 -0
- package/dist/src/integrations/mcp/trace-test.js.map +1 -0
- package/dist/src/integrations/pg-aiguide/embedding-provider.d.ts +48 -0
- package/dist/src/integrations/pg-aiguide/embedding-provider.d.ts.map +1 -0
- package/dist/src/integrations/pg-aiguide/embedding-provider.js +190 -0
- package/dist/src/integrations/pg-aiguide/embedding-provider.js.map +1 -0
- package/dist/src/integrations/pg-aiguide/semantic-search.d.ts +34 -0
- package/dist/src/integrations/pg-aiguide/semantic-search.d.ts.map +1 -0
- package/dist/src/integrations/pg-aiguide/semantic-search.js +154 -0
- package/dist/src/integrations/pg-aiguide/semantic-search.js.map +1 -0
- package/dist/src/integrations/pg-aiguide/timescale-analytics.d.ts +44 -0
- package/dist/src/integrations/pg-aiguide/timescale-analytics.d.ts.map +1 -0
- package/dist/src/integrations/pg-aiguide/timescale-analytics.js +215 -0
- package/dist/src/integrations/pg-aiguide/timescale-analytics.js.map +1 -0
- package/dist/src/models/user.model.d.ts +55 -0
- package/dist/src/models/user.model.d.ts.map +1 -0
- package/dist/src/models/user.model.js +263 -0
- package/dist/src/models/user.model.js.map +1 -0
- package/dist/src/servers/production/auth-middleware.d.ts +7 -0
- package/dist/src/servers/production/auth-middleware.d.ts.map +1 -1
- package/dist/src/servers/production/auth-middleware.js +201 -26
- package/dist/src/servers/production/auth-middleware.js.map +1 -1
- package/dist/src/servers/railway/index.js.map +1 -1
- package/dist/src/services/config-service.d.ts +1 -1
- package/dist/src/services/config-service.d.ts.map +1 -1
- package/dist/src/services/config-service.js.map +1 -1
- package/dist/src/types/task.d.ts +11 -1
- package/dist/src/types/task.d.ts.map +1 -1
- package/dist/src/utils/logger.d.ts +4 -4
- package/dist/src/utils/logger.d.ts.map +1 -1
- package/dist/src/utils/logger.js.map +1 -1
- package/package.json +14 -8
- package/dist/attention-scoring/src/attention-tracker.d.ts +0 -79
- package/dist/attention-scoring/src/attention-tracker.d.ts.map +0 -1
- package/dist/attention-scoring/src/attention-tracker.js +0 -488
- package/dist/attention-scoring/src/attention-tracker.js.map +0 -1
- package/dist/attention-scoring/src/mcp-integration.d.ts +0 -56
- package/dist/attention-scoring/src/mcp-integration.d.ts.map +0 -1
- package/dist/attention-scoring/src/mcp-integration.js +0 -369
- package/dist/attention-scoring/src/mcp-integration.js.map +0 -1
- package/dist/index.js +0 -382
- package/dist/p2p-sync/src/p2p-sync.d.ts +0 -81
- package/dist/p2p-sync/src/p2p-sync.d.ts.map +0 -1
- package/dist/p2p-sync/src/p2p-sync.js +0 -457
- package/dist/p2p-sync/src/p2p-sync.js.map +0 -1
- package/dist/p2p-sync/src/team-context-sync.d.ts +0 -99
- package/dist/p2p-sync/src/team-context-sync.d.ts.map +0 -1
- package/dist/p2p-sync/src/team-context-sync.js +0 -491
- package/dist/p2p-sync/src/team-context-sync.js.map +0 -1
- package/dist/scripts/merge-linear-duplicates.d.ts +0 -7
- package/dist/scripts/merge-linear-duplicates.d.ts.map +0 -1
- package/dist/scripts/merge-linear-duplicates.js +0 -126
- package/dist/scripts/merge-linear-duplicates.js.map +0 -1
- package/dist/src/analytics/api/analytics-api.d.ts +0 -24
- package/dist/src/analytics/api/analytics-api.d.ts.map +0 -1
- package/dist/src/analytics/api/analytics-api.js +0 -279
- package/dist/src/analytics/api/analytics-api.js.map +0 -1
- package/dist/src/analytics/core/analytics-service.d.ts +0 -23
- package/dist/src/analytics/core/analytics-service.d.ts.map +0 -1
- package/dist/src/analytics/core/analytics-service.js +0 -160
- package/dist/src/analytics/core/analytics-service.js.map +0 -1
- package/dist/src/analytics/index.d.ts +0 -12
- package/dist/src/analytics/index.d.ts.map +0 -1
- package/dist/src/analytics/index.js +0 -11
- package/dist/src/analytics/index.js.map +0 -1
- package/dist/src/analytics/queries/metrics-queries.d.ts +0 -11
- package/dist/src/analytics/queries/metrics-queries.d.ts.map +0 -1
- package/dist/src/analytics/queries/metrics-queries.js +0 -179
- package/dist/src/analytics/queries/metrics-queries.js.map +0 -1
- package/dist/src/analytics/types/metrics.d.ts +0 -60
- package/dist/src/analytics/types/metrics.d.ts.map +0 -1
- package/dist/src/analytics/types/metrics.js +0 -2
- package/dist/src/analytics/types/metrics.js.map +0 -1
- package/dist/src/beads/beads-task-store.d.ts +0 -117
- package/dist/src/beads/beads-task-store.d.ts.map +0 -1
- package/dist/src/beads/beads-task-store.js +0 -318
- package/dist/src/beads/beads-task-store.js.map +0 -1
- package/dist/src/beads/task-aware-context.d.ts +0 -103
- package/dist/src/beads/task-aware-context.d.ts.map +0 -1
- package/dist/src/beads/task-aware-context.js +0 -395
- package/dist/src/beads/task-aware-context.js.map +0 -1
- package/dist/src/beads-task-store.d.ts +0 -117
- package/dist/src/beads-task-store.d.ts.map +0 -1
- package/dist/src/beads-task-store.js +0 -318
- package/dist/src/beads-task-store.js.map +0 -1
- package/dist/src/cli/__tests__/index.test.d.ts +0 -5
- package/dist/src/cli/__tests__/index.test.d.ts.map +0 -1
- package/dist/src/cli/__tests__/index.test.js +0 -726
- package/dist/src/cli/__tests__/index.test.js.map +0 -1
- package/dist/src/cli/analytics-viewer.d.ts +0 -3
- package/dist/src/cli/analytics-viewer.d.ts.map +0 -1
- package/dist/src/cli/analytics-viewer.js +0 -89
- package/dist/src/cli/analytics-viewer.js.map +0 -1
- package/dist/src/cli/cli.d.ts +0 -7
- package/dist/src/cli/cli.d.ts.map +0 -1
- package/dist/src/cli/cli.js +0 -704
- package/dist/src/cli/cli.js.map +0 -1
- package/dist/src/cli/project-commands.d.ts +0 -8
- package/dist/src/cli/project-commands.d.ts.map +0 -1
- package/dist/src/cli/project-commands.js +0 -212
- package/dist/src/cli/project-commands.js.map +0 -1
- package/dist/src/cli.d.ts +0 -7
- package/dist/src/cli.d.ts.map +0 -1
- package/dist/src/cli.js +0 -73
- package/dist/src/cli.js.map +0 -1
- package/dist/src/core/context/__tests__/frame-manager.test.d.ts +0 -5
- package/dist/src/core/context/__tests__/frame-manager.test.d.ts.map +0 -1
- package/dist/src/core/context/__tests__/frame-manager.test.js +0 -892
- package/dist/src/core/context/__tests__/frame-manager.test.js.map +0 -1
- package/dist/src/core/error-handler.d.ts +0 -46
- package/dist/src/core/error-handler.d.ts.map +0 -1
- package/dist/src/core/error-handler.js +0 -212
- package/dist/src/core/error-handler.js.map +0 -1
- package/dist/src/core/errors/__tests__/error-handling.test.d.ts +0 -5
- package/dist/src/core/errors/__tests__/error-handling.test.d.ts.map +0 -1
- package/dist/src/core/errors/__tests__/error-handling.test.js +0 -239
- package/dist/src/core/errors/__tests__/error-handling.test.js.map +0 -1
- package/dist/src/core/frame-manager.d.ts +0 -106
- package/dist/src/core/frame-manager.d.ts.map +0 -1
- package/dist/src/core/frame-manager.js +0 -387
- package/dist/src/core/frame-manager.js.map +0 -1
- package/dist/src/core/logger.d.ts +0 -24
- package/dist/src/core/logger.d.ts.map +0 -1
- package/dist/src/core/logger.js +0 -121
- package/dist/src/core/logger.js.map +0 -1
- package/dist/src/core/logger.test.d.ts +0 -2
- package/dist/src/core/logger.test.d.ts.map +0 -1
- package/dist/src/core/logger.test.js +0 -31
- package/dist/src/core/logger.test.js.map +0 -1
- package/dist/src/core/progress-tracker.d.ts +0 -95
- package/dist/src/core/progress-tracker.d.ts.map +0 -1
- package/dist/src/core/progress-tracker.js +0 -178
- package/dist/src/core/progress-tracker.js.map +0 -1
- package/dist/src/core/project-manager.d.ts +0 -130
- package/dist/src/core/project-manager.d.ts.map +0 -1
- package/dist/src/core/project-manager.js +0 -582
- package/dist/src/core/project-manager.js.map +0 -1
- package/dist/src/core/update-checker.d.ts +0 -38
- package/dist/src/core/update-checker.d.ts.map +0 -1
- package/dist/src/core/update-checker.js +0 -156
- package/dist/src/core/update-checker.js.map +0 -1
- package/dist/src/error-handler.d.ts +0 -42
- package/dist/src/error-handler.d.ts.map +0 -1
- package/dist/src/error-handler.js +0 -155
- package/dist/src/error-handler.js.map +0 -1
- package/dist/src/features/tasks/__tests__/pebbles-task-store.test.d.ts +0 -5
- package/dist/src/features/tasks/__tests__/pebbles-task-store.test.d.ts.map +0 -1
- package/dist/src/features/tasks/__tests__/pebbles-task-store.test.js +0 -712
- package/dist/src/features/tasks/__tests__/pebbles-task-store.test.js.map +0 -1
- package/dist/src/frame-manager.d.ts +0 -106
- package/dist/src/frame-manager.d.ts.map +0 -1
- package/dist/src/frame-manager.js +0 -361
- package/dist/src/frame-manager.js.map +0 -1
- package/dist/src/integrations/browser-mcp.d.ts +0 -94
- package/dist/src/integrations/browser-mcp.d.ts.map +0 -1
- package/dist/src/integrations/browser-mcp.js +0 -431
- package/dist/src/integrations/browser-mcp.js.map +0 -1
- package/dist/src/integrations/linear/__tests__/auth.test.d.ts +0 -5
- package/dist/src/integrations/linear/__tests__/auth.test.d.ts.map +0 -1
- package/dist/src/integrations/linear/__tests__/auth.test.js +0 -517
- package/dist/src/integrations/linear/__tests__/auth.test.js.map +0 -1
- package/dist/src/integrations/linear/__tests__/sync-service.test.d.ts +0 -5
- package/dist/src/integrations/linear/__tests__/sync-service.test.d.ts.map +0 -1
- package/dist/src/integrations/linear/__tests__/sync-service.test.js +0 -700
- package/dist/src/integrations/linear/__tests__/sync-service.test.js.map +0 -1
- package/dist/src/integrations/linear-auth.d.ts +0 -99
- package/dist/src/integrations/linear-auth.d.ts.map +0 -1
- package/dist/src/integrations/linear-auth.js +0 -319
- package/dist/src/integrations/linear-auth.js.map +0 -1
- package/dist/src/integrations/linear-auto-sync.d.ts +0 -77
- package/dist/src/integrations/linear-auto-sync.d.ts.map +0 -1
- package/dist/src/integrations/linear-auto-sync.js +0 -268
- package/dist/src/integrations/linear-auto-sync.js.map +0 -1
- package/dist/src/integrations/linear-client.d.ts +0 -86
- package/dist/src/integrations/linear-client.d.ts.map +0 -1
- package/dist/src/integrations/linear-client.js +0 -277
- package/dist/src/integrations/linear-client.js.map +0 -1
- package/dist/src/integrations/linear-config.d.ts +0 -51
- package/dist/src/integrations/linear-config.d.ts.map +0 -1
- package/dist/src/integrations/linear-config.js +0 -103
- package/dist/src/integrations/linear-config.js.map +0 -1
- package/dist/src/integrations/linear-sync.d.ts +0 -97
- package/dist/src/integrations/linear-sync.d.ts.map +0 -1
- package/dist/src/integrations/linear-sync.js +0 -391
- package/dist/src/integrations/linear-sync.js.map +0 -1
- package/dist/src/integrations/mcp/__tests__/server.test.d.ts +0 -5
- package/dist/src/integrations/mcp/__tests__/server.test.d.ts.map +0 -1
- package/dist/src/integrations/mcp/__tests__/server.test.js +0 -790
- package/dist/src/integrations/mcp/__tests__/server.test.js.map +0 -1
- package/dist/src/logger.d.ts +0 -24
- package/dist/src/logger.d.ts.map +0 -1
- package/dist/src/logger.js +0 -120
- package/dist/src/logger.js.map +0 -1
- package/dist/src/mcp/mcp-server.d.ts +0 -40
- package/dist/src/mcp/mcp-server.d.ts.map +0 -1
- package/dist/src/mcp/mcp-server.js +0 -828
- package/dist/src/mcp/mcp-server.js.map +0 -1
- package/dist/src/mcp-server.d.ts +0 -32
- package/dist/src/mcp-server.d.ts.map +0 -1
- package/dist/src/mcp-server.js +0 -441
- package/dist/src/mcp-server.js.map +0 -1
- package/dist/src/pebbles/pebbles-task-store.d.ts +0 -117
- package/dist/src/pebbles/pebbles-task-store.d.ts.map +0 -1
- package/dist/src/pebbles/pebbles-task-store.js +0 -335
- package/dist/src/pebbles/pebbles-task-store.js.map +0 -1
- package/dist/src/pebbles/task-aware-context.d.ts +0 -103
- package/dist/src/pebbles/task-aware-context.d.ts.map +0 -1
- package/dist/src/pebbles/task-aware-context.js +0 -412
- package/dist/src/pebbles/task-aware-context.js.map +0 -1
- package/dist/src/railway/index.d.ts +0 -7
- package/dist/src/railway/index.d.ts.map +0 -1
- package/dist/src/railway/index.js +0 -401
- package/dist/src/railway/index.js.map +0 -1
- package/dist/src/runway/auth/auth-middleware.d.ts +0 -66
- package/dist/src/runway/auth/auth-middleware.d.ts.map +0 -1
- package/dist/src/runway/auth/auth-middleware.js +0 -337
- package/dist/src/runway/auth/auth-middleware.js.map +0 -1
- package/dist/src/runway/server/runway-mcp-server.d.ts +0 -46
- package/dist/src/runway/server/runway-mcp-server.d.ts.map +0 -1
- package/dist/src/runway/server/runway-mcp-server.js +0 -601
- package/dist/src/runway/server/runway-mcp-server.js.map +0 -1
- package/dist/src/runway.bak/auth/auth-middleware.d.ts +0 -66
- package/dist/src/runway.bak/auth/auth-middleware.d.ts.map +0 -1
- package/dist/src/runway.bak/auth/auth-middleware.js +0 -337
- package/dist/src/runway.bak/auth/auth-middleware.js.map +0 -1
- package/dist/src/runway.bak/server/runway-mcp-server.d.ts +0 -46
- package/dist/src/runway.bak/server/runway-mcp-server.d.ts.map +0 -1
- package/dist/src/runway.bak/server/runway-mcp-server.js +0 -601
- package/dist/src/runway.bak/server/runway-mcp-server.js.map +0 -1
- package/dist/src/task-aware-context.d.ts +0 -103
- package/dist/src/task-aware-context.d.ts.map +0 -1
- package/dist/src/task-aware-context.js +0 -395
- package/dist/src/task-aware-context.js.map +0 -1
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"analytics-api.d.ts","sourceRoot":"","sources":["../../../../src/analytics/api/analytics-api.ts"],"names":[],"mappings":"AAAA,OAAgB,EAAqB,MAAM,EAAE,MAAM,SAAS,CAAC;AAI7D,OAAO,EAAE,MAAM,EAAE,MAAM,MAAM,CAAC;AAE9B,qBAAa,YAAY;IACvB,OAAO,CAAC,MAAM,CAAS;IACvB,OAAO,CAAC,gBAAgB,CAAmB;IAC3C,OAAO,CAAC,GAAG,CAAC,CAAkB;gBAElB,WAAW,CAAC,EAAE,MAAM;IAMhC,OAAO,CAAC,WAAW;YAYL,UAAU;YAiBV,QAAQ;YAiBR,cAAc;YAqCd,OAAO;YAmBP,UAAU;YAoBV,UAAU;YAaV,aAAa;IAsB3B,OAAO,CAAC,UAAU;IAwClB,OAAO,CAAC,kBAAkB;IAwB1B,OAAO,CAAC,YAAY;IAcpB,OAAO,CAAC,WAAW;IAQnB,cAAc,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI;IAmDpC,SAAS,IAAI,MAAM;IAInB,KAAK,IAAI,IAAI;CAMd"}
|
|
@@ -1,279 +0,0 @@
|
|
|
1
|
-
import express from 'express';
|
|
2
|
-
import { AnalyticsService } from '../core/analytics-service.js';
|
|
3
|
-
import { WebSocketServer, WebSocket } from 'ws';
|
|
4
|
-
export class AnalyticsAPI {
|
|
5
|
-
router;
|
|
6
|
-
analyticsService;
|
|
7
|
-
wss;
|
|
8
|
-
constructor(projectPath) {
|
|
9
|
-
this.router = express.Router();
|
|
10
|
-
this.analyticsService = new AnalyticsService(projectPath);
|
|
11
|
-
this.setupRoutes();
|
|
12
|
-
}
|
|
13
|
-
setupRoutes() {
|
|
14
|
-
this.router.use(express.json());
|
|
15
|
-
this.router.get('/metrics', this.getMetrics.bind(this));
|
|
16
|
-
this.router.get('/tasks', this.getTasks.bind(this));
|
|
17
|
-
this.router.get('/team/:userId', this.getTeamMetrics.bind(this));
|
|
18
|
-
this.router.post('/tasks', this.addTask.bind(this));
|
|
19
|
-
this.router.put('/tasks/:taskId', this.updateTask.bind(this));
|
|
20
|
-
this.router.post('/sync', this.syncLinear.bind(this));
|
|
21
|
-
this.router.get('/export', this.exportMetrics.bind(this));
|
|
22
|
-
}
|
|
23
|
-
async getMetrics(req, res) {
|
|
24
|
-
try {
|
|
25
|
-
const query = this.parseQuery(req.query);
|
|
26
|
-
const dashboardState = await this.analyticsService.getDashboardState(query);
|
|
27
|
-
res.json({
|
|
28
|
-
success: true,
|
|
29
|
-
data: {
|
|
30
|
-
metrics: dashboardState.metrics,
|
|
31
|
-
lastUpdated: dashboardState.lastUpdated
|
|
32
|
-
}
|
|
33
|
-
});
|
|
34
|
-
}
|
|
35
|
-
catch (error) {
|
|
36
|
-
this.handleError(res, error);
|
|
37
|
-
}
|
|
38
|
-
}
|
|
39
|
-
async getTasks(req, res) {
|
|
40
|
-
try {
|
|
41
|
-
const query = this.parseQuery(req.query);
|
|
42
|
-
const dashboardState = await this.analyticsService.getDashboardState(query);
|
|
43
|
-
res.json({
|
|
44
|
-
success: true,
|
|
45
|
-
data: {
|
|
46
|
-
tasks: dashboardState.recentTasks,
|
|
47
|
-
total: dashboardState.metrics.totalTasks
|
|
48
|
-
}
|
|
49
|
-
});
|
|
50
|
-
}
|
|
51
|
-
catch (error) {
|
|
52
|
-
this.handleError(res, error);
|
|
53
|
-
}
|
|
54
|
-
}
|
|
55
|
-
async getTeamMetrics(req, res) {
|
|
56
|
-
try {
|
|
57
|
-
const { userId } = req.params;
|
|
58
|
-
const query = this.parseQuery(req.query);
|
|
59
|
-
if (userId === 'all') {
|
|
60
|
-
const dashboardState = await this.analyticsService.getDashboardState(query);
|
|
61
|
-
res.json({
|
|
62
|
-
success: true,
|
|
63
|
-
data: dashboardState.teamMetrics
|
|
64
|
-
});
|
|
65
|
-
}
|
|
66
|
-
else {
|
|
67
|
-
const dashboardState = await this.analyticsService.getDashboardState({
|
|
68
|
-
...query,
|
|
69
|
-
userIds: [userId]
|
|
70
|
-
});
|
|
71
|
-
const userMetrics = dashboardState.teamMetrics.find(m => m.userId === userId);
|
|
72
|
-
if (!userMetrics) {
|
|
73
|
-
res.status(404).json({
|
|
74
|
-
success: false,
|
|
75
|
-
error: 'User metrics not found'
|
|
76
|
-
});
|
|
77
|
-
return;
|
|
78
|
-
}
|
|
79
|
-
res.json({
|
|
80
|
-
success: true,
|
|
81
|
-
data: userMetrics
|
|
82
|
-
});
|
|
83
|
-
}
|
|
84
|
-
}
|
|
85
|
-
catch (error) {
|
|
86
|
-
this.handleError(res, error);
|
|
87
|
-
}
|
|
88
|
-
}
|
|
89
|
-
async addTask(req, res) {
|
|
90
|
-
try {
|
|
91
|
-
const task = {
|
|
92
|
-
...req.body,
|
|
93
|
-
createdAt: new Date(req.body.createdAt || Date.now()),
|
|
94
|
-
completedAt: req.body.completedAt ? new Date(req.body.completedAt) : undefined
|
|
95
|
-
};
|
|
96
|
-
await this.analyticsService.addTask(task);
|
|
97
|
-
res.status(201).json({
|
|
98
|
-
success: true,
|
|
99
|
-
message: 'Task added successfully'
|
|
100
|
-
});
|
|
101
|
-
}
|
|
102
|
-
catch (error) {
|
|
103
|
-
this.handleError(res, error);
|
|
104
|
-
}
|
|
105
|
-
}
|
|
106
|
-
async updateTask(req, res) {
|
|
107
|
-
try {
|
|
108
|
-
const { taskId } = req.params;
|
|
109
|
-
const updates = req.body;
|
|
110
|
-
if (updates.completedAt) {
|
|
111
|
-
updates.completedAt = new Date(updates.completedAt);
|
|
112
|
-
}
|
|
113
|
-
await this.analyticsService.updateTask(taskId, updates);
|
|
114
|
-
res.json({
|
|
115
|
-
success: true,
|
|
116
|
-
message: 'Task updated successfully'
|
|
117
|
-
});
|
|
118
|
-
}
|
|
119
|
-
catch (error) {
|
|
120
|
-
this.handleError(res, error);
|
|
121
|
-
}
|
|
122
|
-
}
|
|
123
|
-
async syncLinear(req, res) {
|
|
124
|
-
try {
|
|
125
|
-
await this.analyticsService.syncLinearTasks();
|
|
126
|
-
res.json({
|
|
127
|
-
success: true,
|
|
128
|
-
message: 'Linear tasks synced successfully'
|
|
129
|
-
});
|
|
130
|
-
}
|
|
131
|
-
catch (error) {
|
|
132
|
-
this.handleError(res, error);
|
|
133
|
-
}
|
|
134
|
-
}
|
|
135
|
-
async exportMetrics(req, res) {
|
|
136
|
-
try {
|
|
137
|
-
const query = this.parseQuery(req.query);
|
|
138
|
-
const format = req.query.format || 'json';
|
|
139
|
-
const dashboardState = await this.analyticsService.getDashboardState(query);
|
|
140
|
-
if (format === 'csv') {
|
|
141
|
-
const csv = this.convertToCSV(dashboardState);
|
|
142
|
-
res.setHeader('Content-Type', 'text/csv');
|
|
143
|
-
res.setHeader('Content-Disposition', 'attachment; filename="analytics-export.csv"');
|
|
144
|
-
res.send(csv);
|
|
145
|
-
}
|
|
146
|
-
else {
|
|
147
|
-
res.json({
|
|
148
|
-
success: true,
|
|
149
|
-
data: dashboardState
|
|
150
|
-
});
|
|
151
|
-
}
|
|
152
|
-
}
|
|
153
|
-
catch (error) {
|
|
154
|
-
this.handleError(res, error);
|
|
155
|
-
}
|
|
156
|
-
}
|
|
157
|
-
parseQuery(query) {
|
|
158
|
-
const result = {};
|
|
159
|
-
if (query.start && query.end) {
|
|
160
|
-
result.timeRange = {
|
|
161
|
-
start: new Date(query.start),
|
|
162
|
-
end: new Date(query.end),
|
|
163
|
-
preset: query.preset
|
|
164
|
-
};
|
|
165
|
-
}
|
|
166
|
-
else if (query.preset) {
|
|
167
|
-
result.timeRange = this.getPresetTimeRange(query.preset);
|
|
168
|
-
}
|
|
169
|
-
if (query.users) {
|
|
170
|
-
result.userIds = Array.isArray(query.users) ? query.users : [query.users];
|
|
171
|
-
}
|
|
172
|
-
if (query.states) {
|
|
173
|
-
result.states = Array.isArray(query.states) ? query.states : [query.states];
|
|
174
|
-
}
|
|
175
|
-
if (query.priorities) {
|
|
176
|
-
result.priorities = Array.isArray(query.priorities) ? query.priorities : [query.priorities];
|
|
177
|
-
}
|
|
178
|
-
if (query.labels) {
|
|
179
|
-
result.labels = Array.isArray(query.labels) ? query.labels : [query.labels];
|
|
180
|
-
}
|
|
181
|
-
if (query.limit) {
|
|
182
|
-
result.limit = parseInt(query.limit);
|
|
183
|
-
}
|
|
184
|
-
if (query.offset) {
|
|
185
|
-
result.offset = parseInt(query.offset);
|
|
186
|
-
}
|
|
187
|
-
return result;
|
|
188
|
-
}
|
|
189
|
-
getPresetTimeRange(preset) {
|
|
190
|
-
const end = new Date();
|
|
191
|
-
const start = new Date();
|
|
192
|
-
switch (preset) {
|
|
193
|
-
case 'today':
|
|
194
|
-
start.setHours(0, 0, 0, 0);
|
|
195
|
-
break;
|
|
196
|
-
case '7d':
|
|
197
|
-
start.setDate(start.getDate() - 7);
|
|
198
|
-
break;
|
|
199
|
-
case '30d':
|
|
200
|
-
start.setDate(start.getDate() - 30);
|
|
201
|
-
break;
|
|
202
|
-
case '90d':
|
|
203
|
-
start.setDate(start.getDate() - 90);
|
|
204
|
-
break;
|
|
205
|
-
default:
|
|
206
|
-
start.setDate(start.getDate() - 7);
|
|
207
|
-
}
|
|
208
|
-
return { start, end, preset: preset };
|
|
209
|
-
}
|
|
210
|
-
convertToCSV(dashboardState) {
|
|
211
|
-
const tasks = dashboardState.recentTasks;
|
|
212
|
-
if (!tasks || tasks.length === 0)
|
|
213
|
-
return 'No data';
|
|
214
|
-
const headers = Object.keys(tasks[0]).join(',');
|
|
215
|
-
const rows = tasks.map((task) => Object.values(task).map(v => typeof v === 'object' ? JSON.stringify(v) : v).join(','));
|
|
216
|
-
return [headers, ...rows].join('\n');
|
|
217
|
-
}
|
|
218
|
-
handleError(res, error) {
|
|
219
|
-
console.error('Analytics API error:', error);
|
|
220
|
-
res.status(500).json({
|
|
221
|
-
success: false,
|
|
222
|
-
error: error.message || 'Internal server error'
|
|
223
|
-
});
|
|
224
|
-
}
|
|
225
|
-
setupWebSocket(server) {
|
|
226
|
-
this.wss = new WebSocketServer({
|
|
227
|
-
server,
|
|
228
|
-
path: '/ws/analytics'
|
|
229
|
-
});
|
|
230
|
-
this.wss.on('connection', (ws) => {
|
|
231
|
-
console.log('WebSocket client connected to analytics');
|
|
232
|
-
const unsubscribe = this.analyticsService.subscribeToUpdates((state) => {
|
|
233
|
-
if (ws.readyState === WebSocket.OPEN) {
|
|
234
|
-
ws.send(JSON.stringify({
|
|
235
|
-
type: 'update',
|
|
236
|
-
data: state
|
|
237
|
-
}));
|
|
238
|
-
}
|
|
239
|
-
});
|
|
240
|
-
ws.on('message', async (message) => {
|
|
241
|
-
try {
|
|
242
|
-
const data = JSON.parse(message);
|
|
243
|
-
if (data.type === 'subscribe') {
|
|
244
|
-
const query = this.parseQuery(data.query || {});
|
|
245
|
-
const state = await this.analyticsService.getDashboardState(query);
|
|
246
|
-
ws.send(JSON.stringify({
|
|
247
|
-
type: 'initial',
|
|
248
|
-
data: state
|
|
249
|
-
}));
|
|
250
|
-
}
|
|
251
|
-
}
|
|
252
|
-
catch (error) {
|
|
253
|
-
ws.send(JSON.stringify({
|
|
254
|
-
type: 'error',
|
|
255
|
-
error: 'Invalid message format'
|
|
256
|
-
}));
|
|
257
|
-
}
|
|
258
|
-
});
|
|
259
|
-
ws.on('close', () => {
|
|
260
|
-
unsubscribe();
|
|
261
|
-
console.log('WebSocket client disconnected');
|
|
262
|
-
});
|
|
263
|
-
ws.on('error', (error) => {
|
|
264
|
-
console.error('WebSocket error:', error);
|
|
265
|
-
unsubscribe();
|
|
266
|
-
});
|
|
267
|
-
});
|
|
268
|
-
}
|
|
269
|
-
getRouter() {
|
|
270
|
-
return this.router;
|
|
271
|
-
}
|
|
272
|
-
close() {
|
|
273
|
-
this.analyticsService.close();
|
|
274
|
-
if (this.wss) {
|
|
275
|
-
this.wss.close();
|
|
276
|
-
}
|
|
277
|
-
}
|
|
278
|
-
}
|
|
279
|
-
//# sourceMappingURL=analytics-api.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"analytics-api.js","sourceRoot":"","sources":["../../../../src/analytics/api/analytics-api.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,23 +0,0 @@
|
|
|
1
|
-
import { TaskAnalytics, DashboardState, AnalyticsQuery } from '../types/metrics.js';
|
|
2
|
-
export declare class AnalyticsService {
|
|
3
|
-
private metricsQueries;
|
|
4
|
-
private linearClient?;
|
|
5
|
-
private dbPath;
|
|
6
|
-
private updateCallbacks;
|
|
7
|
-
constructor(projectPath?: string);
|
|
8
|
-
private ensureDirectoryExists;
|
|
9
|
-
private initializeLinearIntegration;
|
|
10
|
-
syncLinearTasks(): Promise<void>;
|
|
11
|
-
private mapLinearState;
|
|
12
|
-
private mapLinearPriority;
|
|
13
|
-
getDashboardState(query?: AnalyticsQuery): Promise<DashboardState>;
|
|
14
|
-
private getTeamMetrics;
|
|
15
|
-
private getUserName;
|
|
16
|
-
private getDefaultTimeRange;
|
|
17
|
-
subscribeToUpdates(callback: (state: DashboardState) => void): () => void;
|
|
18
|
-
private notifyUpdate;
|
|
19
|
-
addTask(task: TaskAnalytics): Promise<void>;
|
|
20
|
-
updateTask(taskId: string, updates: Partial<TaskAnalytics>): Promise<void>;
|
|
21
|
-
close(): void;
|
|
22
|
-
}
|
|
23
|
-
//# sourceMappingURL=analytics-service.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"analytics-service.d.ts","sourceRoot":"","sources":["../../../../src/analytics/core/analytics-service.ts"],"names":[],"mappings":"AAEA,OAAO,EAGL,aAAa,EACb,cAAc,EAEd,cAAc,EACf,MAAM,qBAAqB,CAAC;AAK7B,qBAAa,gBAAgB;IAC3B,OAAO,CAAC,cAAc,CAAiB;IACvC,OAAO,CAAC,YAAY,CAAC,CAAe;IACpC,OAAO,CAAC,MAAM,CAAS;IACvB,OAAO,CAAC,eAAe,CAAmD;gBAE9D,WAAW,CAAC,EAAE,MAAM;IAYhC,OAAO,CAAC,qBAAqB;YAOf,2BAA2B;IAanC,eAAe,IAAI,OAAO,CAAC,IAAI,CAAC;IActC,OAAO,CAAC,cAAc;IAYtB,OAAO,CAAC,iBAAiB;IAOnB,iBAAiB,CAAC,KAAK,GAAE,cAAmB,GAAG,OAAO,CAAC,cAAc,CAAC;YA0B9D,cAAc;YA+Bd,WAAW;IAKzB,OAAO,CAAC,mBAAmB;IAY3B,kBAAkB,CAAC,QAAQ,EAAE,CAAC,KAAK,EAAE,cAAc,KAAK,IAAI,GAAG,MAAM,IAAI;YAQ3D,YAAY;IAKpB,OAAO,CAAC,IAAI,EAAE,aAAa,GAAG,OAAO,CAAC,IAAI,CAAC;IAK3C,UAAU,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,CAAC,aAAa,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC;IAWhF,KAAK,IAAI,IAAI;CAGd"}
|
|
@@ -1,160 +0,0 @@
|
|
|
1
|
-
import { MetricsQueries } from '../queries/metrics-queries.js';
|
|
2
|
-
import { LinearClient } from '../../integrations/linear-client.js';
|
|
3
|
-
import path from 'path';
|
|
4
|
-
import fs from 'fs';
|
|
5
|
-
import os from 'os';
|
|
6
|
-
export class AnalyticsService {
|
|
7
|
-
metricsQueries;
|
|
8
|
-
linearClient;
|
|
9
|
-
dbPath;
|
|
10
|
-
updateCallbacks = new Set();
|
|
11
|
-
constructor(projectPath) {
|
|
12
|
-
const basePath = projectPath || process.cwd();
|
|
13
|
-
this.dbPath = path.join(basePath, '.stackmemory', 'analytics.db');
|
|
14
|
-
this.ensureDirectoryExists();
|
|
15
|
-
this.metricsQueries = new MetricsQueries(this.dbPath);
|
|
16
|
-
if (process.env.LINEAR_API_KEY) {
|
|
17
|
-
this.initializeLinearIntegration();
|
|
18
|
-
}
|
|
19
|
-
}
|
|
20
|
-
ensureDirectoryExists() {
|
|
21
|
-
const dir = path.dirname(this.dbPath);
|
|
22
|
-
if (!fs.existsSync(dir)) {
|
|
23
|
-
fs.mkdirSync(dir, { recursive: true });
|
|
24
|
-
}
|
|
25
|
-
}
|
|
26
|
-
async initializeLinearIntegration() {
|
|
27
|
-
try {
|
|
28
|
-
const configPath = path.join(os.homedir(), '.stackmemory', 'linear-config.json');
|
|
29
|
-
if (fs.existsSync(configPath)) {
|
|
30
|
-
const config = JSON.parse(fs.readFileSync(configPath, 'utf-8'));
|
|
31
|
-
this.linearClient = new LinearClient(config);
|
|
32
|
-
await this.syncLinearTasks();
|
|
33
|
-
}
|
|
34
|
-
}
|
|
35
|
-
catch (error) {
|
|
36
|
-
console.error('Failed to initialize Linear integration:', error);
|
|
37
|
-
}
|
|
38
|
-
}
|
|
39
|
-
async syncLinearTasks() {
|
|
40
|
-
if (!this.linearClient)
|
|
41
|
-
return;
|
|
42
|
-
try {
|
|
43
|
-
// For now, we'll stub this as LinearClient doesn't expose a public query method
|
|
44
|
-
// In a real implementation, we'd need to add a public method to LinearClient
|
|
45
|
-
// or use LinearSyncEngine from linear-sync.ts
|
|
46
|
-
console.log('Linear sync not fully implemented - LinearClient needs public query method');
|
|
47
|
-
await this.notifyUpdate();
|
|
48
|
-
}
|
|
49
|
-
catch (error) {
|
|
50
|
-
console.error('Failed to sync Linear tasks:', error);
|
|
51
|
-
}
|
|
52
|
-
}
|
|
53
|
-
mapLinearState(linearState) {
|
|
54
|
-
const stateMap = {
|
|
55
|
-
'backlog': 'todo',
|
|
56
|
-
'unstarted': 'todo',
|
|
57
|
-
'started': 'in_progress',
|
|
58
|
-
'completed': 'completed',
|
|
59
|
-
'done': 'completed',
|
|
60
|
-
'canceled': 'blocked'
|
|
61
|
-
};
|
|
62
|
-
return stateMap[linearState.toLowerCase()] || 'todo';
|
|
63
|
-
}
|
|
64
|
-
mapLinearPriority(priority) {
|
|
65
|
-
if (priority === 1)
|
|
66
|
-
return 'urgent';
|
|
67
|
-
if (priority === 2)
|
|
68
|
-
return 'high';
|
|
69
|
-
if (priority === 3)
|
|
70
|
-
return 'medium';
|
|
71
|
-
return 'low';
|
|
72
|
-
}
|
|
73
|
-
async getDashboardState(query = {}) {
|
|
74
|
-
const timeRange = query.timeRange || this.getDefaultTimeRange();
|
|
75
|
-
const metrics = this.metricsQueries.getTaskMetrics({
|
|
76
|
-
...query,
|
|
77
|
-
timeRange
|
|
78
|
-
});
|
|
79
|
-
const recentTasks = this.metricsQueries.getRecentTasks({
|
|
80
|
-
...query,
|
|
81
|
-
limit: 20
|
|
82
|
-
});
|
|
83
|
-
const teamMetrics = await this.getTeamMetrics(query);
|
|
84
|
-
return {
|
|
85
|
-
metrics,
|
|
86
|
-
teamMetrics,
|
|
87
|
-
recentTasks,
|
|
88
|
-
timeRange,
|
|
89
|
-
teamFilter: query.userIds || [],
|
|
90
|
-
isLive: this.updateCallbacks.size > 0,
|
|
91
|
-
lastUpdated: new Date()
|
|
92
|
-
};
|
|
93
|
-
}
|
|
94
|
-
async getTeamMetrics(query) {
|
|
95
|
-
const uniqueUserIds = new Set();
|
|
96
|
-
const tasks = this.metricsQueries.getRecentTasks({ limit: 1000 });
|
|
97
|
-
tasks.forEach(task => {
|
|
98
|
-
if (task.assigneeId) {
|
|
99
|
-
uniqueUserIds.add(task.assigneeId);
|
|
100
|
-
}
|
|
101
|
-
});
|
|
102
|
-
const teamMetrics = [];
|
|
103
|
-
const totalCompleted = tasks.filter(t => t.state === 'completed').length;
|
|
104
|
-
for (const userId of uniqueUserIds) {
|
|
105
|
-
const userQuery = { ...query, userIds: [userId] };
|
|
106
|
-
const individualMetrics = this.metricsQueries.getTaskMetrics(userQuery);
|
|
107
|
-
teamMetrics.push({
|
|
108
|
-
userId,
|
|
109
|
-
userName: await this.getUserName(userId),
|
|
110
|
-
individualMetrics,
|
|
111
|
-
contributionPercentage: totalCompleted > 0
|
|
112
|
-
? (individualMetrics.completedTasks / totalCompleted) * 100
|
|
113
|
-
: 0,
|
|
114
|
-
lastActive: new Date()
|
|
115
|
-
});
|
|
116
|
-
}
|
|
117
|
-
return teamMetrics.sort((a, b) => b.contributionPercentage - a.contributionPercentage);
|
|
118
|
-
}
|
|
119
|
-
async getUserName(userId) {
|
|
120
|
-
// Stub for now - would need LinearClient to expose user query method
|
|
121
|
-
return userId;
|
|
122
|
-
}
|
|
123
|
-
getDefaultTimeRange() {
|
|
124
|
-
const end = new Date();
|
|
125
|
-
const start = new Date();
|
|
126
|
-
start.setDate(start.getDate() - 7);
|
|
127
|
-
return {
|
|
128
|
-
start,
|
|
129
|
-
end,
|
|
130
|
-
preset: '7d'
|
|
131
|
-
};
|
|
132
|
-
}
|
|
133
|
-
subscribeToUpdates(callback) {
|
|
134
|
-
this.updateCallbacks.add(callback);
|
|
135
|
-
return () => {
|
|
136
|
-
this.updateCallbacks.delete(callback);
|
|
137
|
-
};
|
|
138
|
-
}
|
|
139
|
-
async notifyUpdate() {
|
|
140
|
-
const state = await this.getDashboardState();
|
|
141
|
-
this.updateCallbacks.forEach(callback => callback(state));
|
|
142
|
-
}
|
|
143
|
-
async addTask(task) {
|
|
144
|
-
this.metricsQueries.upsertTask(task);
|
|
145
|
-
await this.notifyUpdate();
|
|
146
|
-
}
|
|
147
|
-
async updateTask(taskId, updates) {
|
|
148
|
-
const tasks = this.metricsQueries.getRecentTasks({ limit: 1 });
|
|
149
|
-
const existingTask = tasks.find(t => t.id === taskId);
|
|
150
|
-
if (existingTask) {
|
|
151
|
-
const updatedTask = { ...existingTask, ...updates };
|
|
152
|
-
this.metricsQueries.upsertTask(updatedTask);
|
|
153
|
-
await this.notifyUpdate();
|
|
154
|
-
}
|
|
155
|
-
}
|
|
156
|
-
close() {
|
|
157
|
-
this.metricsQueries.close();
|
|
158
|
-
}
|
|
159
|
-
}
|
|
160
|
-
//# sourceMappingURL=analytics-service.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"analytics-service.js","sourceRoot":"","sources":["../../../../src/analytics/core/analytics-service.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,12 +0,0 @@
|
|
|
1
|
-
export * from './types/metrics.js';
|
|
2
|
-
export * from './core/analytics-service.js';
|
|
3
|
-
export * from './api/analytics-api.js';
|
|
4
|
-
export * from './queries/metrics-queries.js';
|
|
5
|
-
import { AnalyticsService } from './core/analytics-service.js';
|
|
6
|
-
import { AnalyticsAPI } from './api/analytics-api.js';
|
|
7
|
-
declare const _default: {
|
|
8
|
-
AnalyticsService: typeof AnalyticsService;
|
|
9
|
-
AnalyticsAPI: typeof AnalyticsAPI;
|
|
10
|
-
};
|
|
11
|
-
export default _default;
|
|
12
|
-
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/analytics/index.ts"],"names":[],"mappings":"AAAA,cAAc,oBAAoB,CAAC;AACnC,cAAc,6BAA6B,CAAC;AAC5C,cAAc,wBAAwB,CAAC;AACvC,cAAc,8BAA8B,CAAC;AAE7C,OAAO,EAAE,gBAAgB,EAAE,MAAM,6BAA6B,CAAC;AAC/D,OAAO,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAC;;;;;AAEtD,wBAGE"}
|
|
@@ -1,11 +0,0 @@
|
|
|
1
|
-
export * from './types/metrics.js';
|
|
2
|
-
export * from './core/analytics-service.js';
|
|
3
|
-
export * from './api/analytics-api.js';
|
|
4
|
-
export * from './queries/metrics-queries.js';
|
|
5
|
-
import { AnalyticsService } from './core/analytics-service.js';
|
|
6
|
-
import { AnalyticsAPI } from './api/analytics-api.js';
|
|
7
|
-
export default {
|
|
8
|
-
AnalyticsService,
|
|
9
|
-
AnalyticsAPI,
|
|
10
|
-
};
|
|
11
|
-
//# sourceMappingURL=index.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/analytics/index.ts"],"names":[],"mappings":"AAAA,cAAc,oBAAoB,CAAC;AACnC,cAAc,6BAA6B,CAAC;AAC5C,cAAc,wBAAwB,CAAC;AACvC,cAAc,8BAA8B,CAAC;AAE7C,OAAO,EAAE,gBAAgB,EAAE,MAAM,6BAA6B,CAAC;AAC/D,OAAO,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAC;AAEtD,eAAe;IACb,gBAAgB;IAChB,YAAY;CACb,CAAC"}
|
|
@@ -1,11 +0,0 @@
|
|
|
1
|
-
import { TaskAnalytics, TaskMetrics, AnalyticsQuery } from '../types/metrics.js';
|
|
2
|
-
export declare class MetricsQueries {
|
|
3
|
-
private db;
|
|
4
|
-
constructor(dbPath: string);
|
|
5
|
-
private initializeTables;
|
|
6
|
-
getTaskMetrics(query?: AnalyticsQuery): TaskMetrics;
|
|
7
|
-
getRecentTasks(query?: AnalyticsQuery): TaskAnalytics[];
|
|
8
|
-
upsertTask(task: TaskAnalytics): void;
|
|
9
|
-
close(): void;
|
|
10
|
-
}
|
|
11
|
-
//# sourceMappingURL=metrics-queries.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"metrics-queries.d.ts","sourceRoot":"","sources":["../../../../src/analytics/queries/metrics-queries.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,aAAa,EAAE,WAAW,EAAa,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAE5F,qBAAa,cAAc;IACzB,OAAO,CAAC,EAAE,CAAoB;gBAElB,MAAM,EAAE,MAAM;IAK1B,OAAO,CAAC,gBAAgB;IAuBxB,cAAc,CAAC,KAAK,GAAE,cAAmB,GAAG,WAAW;IAsFvD,cAAc,CAAC,KAAK,GAAE,cAAmB,GAAG,aAAa,EAAE;IAsC3D,UAAU,CAAC,IAAI,EAAE,aAAa,GAAG,IAAI;IAuCrC,KAAK,IAAI,IAAI;CAGd"}
|