@stackmemoryai/stackmemory 0.2.7 → 0.2.8
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/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/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 +368 -16
- 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/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 +9 -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
|
@@ -0,0 +1,257 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Types for LLM-Driven Context Retrieval System
|
|
3
|
+
* Implements intelligent context selection based on compressed summaries
|
|
4
|
+
*/
|
|
5
|
+
import { Frame, Anchor, Event } from '../context/frame-manager.js';
|
|
6
|
+
import { StackMemoryQuery } from '../query/query-parser.js';
|
|
7
|
+
/**
|
|
8
|
+
* Compressed summary of recent session activity
|
|
9
|
+
*/
|
|
10
|
+
export interface RecentSessionSummary {
|
|
11
|
+
/** Recent frames with their key attributes */
|
|
12
|
+
frames: FrameSummary[];
|
|
13
|
+
/** Dominant operations performed */
|
|
14
|
+
dominantOperations: OperationSummary[];
|
|
15
|
+
/** Files that were touched */
|
|
16
|
+
filesTouched: FileSummary[];
|
|
17
|
+
/** Errors encountered */
|
|
18
|
+
errorsEncountered: ErrorSummary[];
|
|
19
|
+
/** Time range covered */
|
|
20
|
+
timeRange: {
|
|
21
|
+
start: number;
|
|
22
|
+
end: number;
|
|
23
|
+
durationMs: number;
|
|
24
|
+
};
|
|
25
|
+
}
|
|
26
|
+
export interface FrameSummary {
|
|
27
|
+
frameId: string;
|
|
28
|
+
name: string;
|
|
29
|
+
type: string;
|
|
30
|
+
depth: number;
|
|
31
|
+
eventCount: number;
|
|
32
|
+
anchorCount: number;
|
|
33
|
+
score: number;
|
|
34
|
+
createdAt: number;
|
|
35
|
+
closedAt?: number;
|
|
36
|
+
digestPreview?: string;
|
|
37
|
+
}
|
|
38
|
+
export interface OperationSummary {
|
|
39
|
+
operation: string;
|
|
40
|
+
count: number;
|
|
41
|
+
lastOccurrence: number;
|
|
42
|
+
successRate: number;
|
|
43
|
+
}
|
|
44
|
+
export interface FileSummary {
|
|
45
|
+
path: string;
|
|
46
|
+
operationCount: number;
|
|
47
|
+
lastModified: number;
|
|
48
|
+
operations: string[];
|
|
49
|
+
}
|
|
50
|
+
export interface ErrorSummary {
|
|
51
|
+
errorType: string;
|
|
52
|
+
message: string;
|
|
53
|
+
count: number;
|
|
54
|
+
lastOccurrence: number;
|
|
55
|
+
resolved: boolean;
|
|
56
|
+
}
|
|
57
|
+
/**
|
|
58
|
+
* Historical patterns extracted from memory
|
|
59
|
+
*/
|
|
60
|
+
export interface HistoricalPatterns {
|
|
61
|
+
/** Frame counts by topic */
|
|
62
|
+
topicFrameCounts: Record<string, number>;
|
|
63
|
+
/** Key decisions made */
|
|
64
|
+
keyDecisions: DecisionSummary[];
|
|
65
|
+
/** Recurring issues */
|
|
66
|
+
recurringIssues: IssueSummary[];
|
|
67
|
+
/** Common tool sequences */
|
|
68
|
+
commonToolSequences: ToolSequence[];
|
|
69
|
+
/** Time-based activity patterns */
|
|
70
|
+
activityPatterns: ActivityPattern[];
|
|
71
|
+
}
|
|
72
|
+
export interface DecisionSummary {
|
|
73
|
+
id: string;
|
|
74
|
+
text: string;
|
|
75
|
+
frameId: string;
|
|
76
|
+
timestamp: number;
|
|
77
|
+
impact: 'low' | 'medium' | 'high';
|
|
78
|
+
relatedFiles?: string[];
|
|
79
|
+
}
|
|
80
|
+
export interface IssueSummary {
|
|
81
|
+
issueType: string;
|
|
82
|
+
occurrenceCount: number;
|
|
83
|
+
lastSeen: number;
|
|
84
|
+
resolutionRate: number;
|
|
85
|
+
commonFixes?: string[];
|
|
86
|
+
}
|
|
87
|
+
export interface ToolSequence {
|
|
88
|
+
pattern: string;
|
|
89
|
+
frequency: number;
|
|
90
|
+
avgDuration: number;
|
|
91
|
+
successRate: number;
|
|
92
|
+
}
|
|
93
|
+
export interface ActivityPattern {
|
|
94
|
+
periodType: 'hourly' | 'daily' | 'weekly';
|
|
95
|
+
peakPeriods: string[];
|
|
96
|
+
avgEventsPerPeriod: number;
|
|
97
|
+
}
|
|
98
|
+
/**
|
|
99
|
+
* Queryable indices for fast retrieval
|
|
100
|
+
*/
|
|
101
|
+
export interface QueryableIndices {
|
|
102
|
+
/** Index by error type */
|
|
103
|
+
byErrorType: Record<string, string[]>;
|
|
104
|
+
/** Index by timeframe */
|
|
105
|
+
byTimeframe: Record<string, string[]>;
|
|
106
|
+
/** Index by contributor */
|
|
107
|
+
byContributor: Record<string, string[]>;
|
|
108
|
+
/** Index by topic */
|
|
109
|
+
byTopic: Record<string, string[]>;
|
|
110
|
+
/** Index by file */
|
|
111
|
+
byFile: Record<string, string[]>;
|
|
112
|
+
}
|
|
113
|
+
/**
|
|
114
|
+
* Complete compressed summary for LLM analysis
|
|
115
|
+
*/
|
|
116
|
+
export interface CompressedSummary {
|
|
117
|
+
/** Project identifier */
|
|
118
|
+
projectId: string;
|
|
119
|
+
/** Generation timestamp */
|
|
120
|
+
generatedAt: number;
|
|
121
|
+
/** Recent session summary */
|
|
122
|
+
recentSession: RecentSessionSummary;
|
|
123
|
+
/** Historical patterns */
|
|
124
|
+
historicalPatterns: HistoricalPatterns;
|
|
125
|
+
/** Queryable indices */
|
|
126
|
+
queryableIndices: QueryableIndices;
|
|
127
|
+
/** Summary statistics */
|
|
128
|
+
stats: SummaryStats;
|
|
129
|
+
}
|
|
130
|
+
export interface SummaryStats {
|
|
131
|
+
totalFrames: number;
|
|
132
|
+
totalEvents: number;
|
|
133
|
+
totalAnchors: number;
|
|
134
|
+
totalDecisions: number;
|
|
135
|
+
oldestFrame: number;
|
|
136
|
+
newestFrame: number;
|
|
137
|
+
avgFrameDepth: number;
|
|
138
|
+
avgEventsPerFrame: number;
|
|
139
|
+
}
|
|
140
|
+
/**
|
|
141
|
+
* LLM analysis request
|
|
142
|
+
*/
|
|
143
|
+
export interface LLMAnalysisRequest {
|
|
144
|
+
/** Current user query */
|
|
145
|
+
currentQuery: string;
|
|
146
|
+
/** Parsed structured query */
|
|
147
|
+
parsedQuery?: StackMemoryQuery;
|
|
148
|
+
/** Compressed summary */
|
|
149
|
+
compressedSummary: CompressedSummary;
|
|
150
|
+
/** Token budget for context */
|
|
151
|
+
tokenBudget: number;
|
|
152
|
+
/** Optional hints for retrieval */
|
|
153
|
+
hints?: RetrievalHints;
|
|
154
|
+
}
|
|
155
|
+
export interface RetrievalHints {
|
|
156
|
+
/** Prefer recent frames */
|
|
157
|
+
preferRecent?: boolean;
|
|
158
|
+
/** Focus on specific topics */
|
|
159
|
+
focusTopics?: string[];
|
|
160
|
+
/** Include error context */
|
|
161
|
+
includeErrors?: boolean;
|
|
162
|
+
/** Include decision history */
|
|
163
|
+
includeDecisions?: boolean;
|
|
164
|
+
/** Minimum relevance score */
|
|
165
|
+
minRelevance?: number;
|
|
166
|
+
}
|
|
167
|
+
/**
|
|
168
|
+
* LLM analysis response
|
|
169
|
+
*/
|
|
170
|
+
export interface LLMAnalysisResponse {
|
|
171
|
+
/** Reasoning for the retrieval decision (auditable) */
|
|
172
|
+
reasoning: string;
|
|
173
|
+
/** Frames to retrieve with priority order */
|
|
174
|
+
framesToRetrieve: FrameRetrievalPlan[];
|
|
175
|
+
/** Confidence score (0.0 - 1.0) */
|
|
176
|
+
confidenceScore: number;
|
|
177
|
+
/** Additional context recommendations */
|
|
178
|
+
recommendations: ContextRecommendation[];
|
|
179
|
+
/** Analysis metadata */
|
|
180
|
+
metadata: AnalysisMetadata;
|
|
181
|
+
}
|
|
182
|
+
export interface FrameRetrievalPlan {
|
|
183
|
+
frameId: string;
|
|
184
|
+
priority: number;
|
|
185
|
+
reason: string;
|
|
186
|
+
includeEvents: boolean;
|
|
187
|
+
includeAnchors: boolean;
|
|
188
|
+
includeDigest: boolean;
|
|
189
|
+
estimatedTokens: number;
|
|
190
|
+
}
|
|
191
|
+
export interface ContextRecommendation {
|
|
192
|
+
type: 'include' | 'exclude' | 'summarize';
|
|
193
|
+
target: string;
|
|
194
|
+
reason: string;
|
|
195
|
+
impact: 'low' | 'medium' | 'high';
|
|
196
|
+
}
|
|
197
|
+
export interface AnalysisMetadata {
|
|
198
|
+
analysisTimeMs: number;
|
|
199
|
+
summaryTokens: number;
|
|
200
|
+
queryComplexity: 'simple' | 'moderate' | 'complex';
|
|
201
|
+
matchedPatterns: string[];
|
|
202
|
+
fallbackUsed: boolean;
|
|
203
|
+
}
|
|
204
|
+
/**
|
|
205
|
+
* Retrieved context result
|
|
206
|
+
*/
|
|
207
|
+
export interface RetrievedContext {
|
|
208
|
+
/** Assembled context string */
|
|
209
|
+
context: string;
|
|
210
|
+
/** Frames included */
|
|
211
|
+
frames: Frame[];
|
|
212
|
+
/** Anchors included */
|
|
213
|
+
anchors: Anchor[];
|
|
214
|
+
/** Events included */
|
|
215
|
+
events: Event[];
|
|
216
|
+
/** LLM analysis that drove retrieval */
|
|
217
|
+
analysis: LLMAnalysisResponse;
|
|
218
|
+
/** Token usage */
|
|
219
|
+
tokenUsage: {
|
|
220
|
+
budget: number;
|
|
221
|
+
used: number;
|
|
222
|
+
remaining: number;
|
|
223
|
+
};
|
|
224
|
+
/** Retrieval metadata */
|
|
225
|
+
metadata: RetrievalMetadata;
|
|
226
|
+
}
|
|
227
|
+
export interface RetrievalMetadata {
|
|
228
|
+
retrievalTimeMs: number;
|
|
229
|
+
cacheHit: boolean;
|
|
230
|
+
framesScanned: number;
|
|
231
|
+
framesIncluded: number;
|
|
232
|
+
compressionRatio: number;
|
|
233
|
+
}
|
|
234
|
+
/**
|
|
235
|
+
* Configuration for the retrieval system
|
|
236
|
+
*/
|
|
237
|
+
export interface RetrievalConfig {
|
|
238
|
+
/** Maximum frames to include in summary */
|
|
239
|
+
maxSummaryFrames: number;
|
|
240
|
+
/** Default token budget */
|
|
241
|
+
defaultTokenBudget: number;
|
|
242
|
+
/** Cache TTL in seconds */
|
|
243
|
+
cacheTtlSeconds: number;
|
|
244
|
+
/** Minimum confidence to use LLM suggestions */
|
|
245
|
+
minConfidenceThreshold: number;
|
|
246
|
+
/** Enable fallback to heuristic retrieval */
|
|
247
|
+
enableFallback: boolean;
|
|
248
|
+
/** LLM provider configuration */
|
|
249
|
+
llmConfig: {
|
|
250
|
+
provider: 'anthropic' | 'openai' | 'local';
|
|
251
|
+
model: string;
|
|
252
|
+
maxTokens: number;
|
|
253
|
+
temperature: number;
|
|
254
|
+
};
|
|
255
|
+
}
|
|
256
|
+
export declare const DEFAULT_RETRIEVAL_CONFIG: RetrievalConfig;
|
|
257
|
+
//# sourceMappingURL=types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../src/core/retrieval/types.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Types for LLM-Driven Context Retrieval System
|
|
3
|
+
* Implements intelligent context selection based on compressed summaries
|
|
4
|
+
*/
|
|
5
|
+
export const DEFAULT_RETRIEVAL_CONFIG = {
|
|
6
|
+
maxSummaryFrames: 15,
|
|
7
|
+
defaultTokenBudget: 8000,
|
|
8
|
+
cacheTtlSeconds: 300,
|
|
9
|
+
minConfidenceThreshold: 0.6,
|
|
10
|
+
enableFallback: true,
|
|
11
|
+
llmConfig: {
|
|
12
|
+
provider: 'anthropic',
|
|
13
|
+
model: 'claude-3-haiku-20240307',
|
|
14
|
+
maxTokens: 1024,
|
|
15
|
+
temperature: 0.3,
|
|
16
|
+
},
|
|
17
|
+
};
|
|
18
|
+
//# sourceMappingURL=types.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../../../src/core/retrieval/types.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAoRH,MAAM,CAAC,MAAM,wBAAwB,GAAoB;IACvD,gBAAgB,EAAE,EAAE;IACpB,kBAAkB,EAAE,IAAI;IACxB,eAAe,EAAE,GAAG;IACpB,sBAAsB,EAAE,GAAG;IAC3B,cAAc,EAAE,IAAI;IACpB,SAAS,EAAE;QACT,QAAQ,EAAE,WAAW;QACrB,KAAK,EAAE,yBAAyB;QAChC,SAAS,EAAE,IAAI;QACf,WAAW,EAAE,GAAG;KACjB;CACF,CAAC"}
|
|
@@ -0,0 +1,108 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Trace Detection and Bundling System
|
|
3
|
+
* Identifies chains of related tool calls and bundles them as single traces
|
|
4
|
+
*/
|
|
5
|
+
import { ToolCall, Trace, TraceType, TraceBoundaryConfig } from './types';
|
|
6
|
+
import { ConfigManager } from '../config/config-manager';
|
|
7
|
+
import Database from 'better-sqlite3';
|
|
8
|
+
export declare class TraceDetector {
|
|
9
|
+
private config;
|
|
10
|
+
private activeTrace;
|
|
11
|
+
private lastToolTime;
|
|
12
|
+
private traces;
|
|
13
|
+
private configManager;
|
|
14
|
+
private traceStore?;
|
|
15
|
+
constructor(config?: Partial<TraceBoundaryConfig>, configManager?: ConfigManager, db?: Database.Database);
|
|
16
|
+
/**
|
|
17
|
+
* Load traces from the database
|
|
18
|
+
*/
|
|
19
|
+
private loadTracesFromStore;
|
|
20
|
+
/**
|
|
21
|
+
* Add a tool call and check if it belongs to current trace
|
|
22
|
+
*/
|
|
23
|
+
addToolCall(tool: ToolCall): void;
|
|
24
|
+
/**
|
|
25
|
+
* Determine if a tool call should start a new trace
|
|
26
|
+
*/
|
|
27
|
+
private shouldStartNewTrace;
|
|
28
|
+
/**
|
|
29
|
+
* Check if a tool is attempting to fix an error from previous tool
|
|
30
|
+
*/
|
|
31
|
+
private isFixAttempt;
|
|
32
|
+
/**
|
|
33
|
+
* Finalize current trace and add to traces list
|
|
34
|
+
*/
|
|
35
|
+
private finalizeTrace;
|
|
36
|
+
/**
|
|
37
|
+
* Create a trace from a sequence of tool calls
|
|
38
|
+
*/
|
|
39
|
+
private createTrace;
|
|
40
|
+
/**
|
|
41
|
+
* Detect the type of trace based on tool patterns
|
|
42
|
+
*/
|
|
43
|
+
private detectTraceType;
|
|
44
|
+
/**
|
|
45
|
+
* Check if tool sequence matches a pattern
|
|
46
|
+
*/
|
|
47
|
+
private matchesPattern;
|
|
48
|
+
/**
|
|
49
|
+
* Extract metadata from tool calls
|
|
50
|
+
*/
|
|
51
|
+
private extractMetadata;
|
|
52
|
+
/**
|
|
53
|
+
* Calculate importance score for a trace
|
|
54
|
+
*/
|
|
55
|
+
private calculateTraceScore;
|
|
56
|
+
/**
|
|
57
|
+
* Check if a tool call represents a permanent change
|
|
58
|
+
*/
|
|
59
|
+
private isPermanentChange;
|
|
60
|
+
/**
|
|
61
|
+
* Generate a summary for the trace
|
|
62
|
+
*/
|
|
63
|
+
private generateSummary;
|
|
64
|
+
/**
|
|
65
|
+
* Compress a trace for long-term storage
|
|
66
|
+
*/
|
|
67
|
+
private compressTrace;
|
|
68
|
+
/**
|
|
69
|
+
* Get directory from file path
|
|
70
|
+
*/
|
|
71
|
+
private getDirectory;
|
|
72
|
+
/**
|
|
73
|
+
* Flush any pending trace
|
|
74
|
+
*/
|
|
75
|
+
flush(): void;
|
|
76
|
+
/**
|
|
77
|
+
* Get all detected traces
|
|
78
|
+
*/
|
|
79
|
+
getTraces(): Trace[];
|
|
80
|
+
/**
|
|
81
|
+
* Get traces by type
|
|
82
|
+
*/
|
|
83
|
+
getTracesByType(type: TraceType): Trace[];
|
|
84
|
+
/**
|
|
85
|
+
* Get high-importance traces
|
|
86
|
+
*/
|
|
87
|
+
getHighImportanceTraces(threshold?: number): Trace[];
|
|
88
|
+
/**
|
|
89
|
+
* Compress old traces
|
|
90
|
+
*/
|
|
91
|
+
compressOldTraces(ageHours?: number): number;
|
|
92
|
+
/**
|
|
93
|
+
* Export traces for analysis
|
|
94
|
+
*/
|
|
95
|
+
exportTraces(): string;
|
|
96
|
+
/**
|
|
97
|
+
* Get statistics about traces
|
|
98
|
+
*/
|
|
99
|
+
getStatistics(): {
|
|
100
|
+
totalTraces: number;
|
|
101
|
+
tracesByType: Record<string, number>;
|
|
102
|
+
averageScore: number;
|
|
103
|
+
averageLength: number;
|
|
104
|
+
compressedCount: number;
|
|
105
|
+
highImportanceCount: number;
|
|
106
|
+
};
|
|
107
|
+
}
|
|
108
|
+
//# sourceMappingURL=trace-detector.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"trace-detector.d.ts","sourceRoot":"","sources":["../../../../src/core/trace/trace-detector.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAGH,OAAO,EACL,QAAQ,EACR,KAAK,EACL,SAAS,EACT,mBAAmB,EAOpB,MAAM,SAAS,CAAC;AACjB,OAAO,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAC;AAEzD,OAAO,QAAQ,MAAM,gBAAgB,CAAC;AAEtC,qBAAa,aAAa;IACxB,OAAO,CAAC,MAAM,CAAsB;IACpC,OAAO,CAAC,WAAW,CAAkB;IACrC,OAAO,CAAC,YAAY,CAAa;IACjC,OAAO,CAAC,MAAM,CAAe;IAC7B,OAAO,CAAC,aAAa,CAAgB;IACrC,OAAO,CAAC,UAAU,CAAC,CAAa;gBAG9B,MAAM,GAAE,OAAO,CAAC,mBAAmB,CAAM,EACzC,aAAa,CAAC,EAAE,aAAa,EAC7B,EAAE,CAAC,EAAE,QAAQ,CAAC,QAAQ;IAYxB;;OAEG;IACH,OAAO,CAAC,mBAAmB;IAgB3B;;OAEG;IACH,WAAW,CAAC,IAAI,EAAE,QAAQ,GAAG,IAAI;IAwBjC;;OAEG;IACH,OAAO,CAAC,mBAAmB;IAyC3B;;OAEG;IACH,OAAO,CAAC,YAAY;IAiBpB;;OAEG;IACH,OAAO,CAAC,aAAa;IAkBrB;;OAEG;IACH,OAAO,CAAC,WAAW;IAyBnB;;OAEG;IACH,OAAO,CAAC,eAAe;IAiCvB;;OAEG;IACH,OAAO,CAAC,cAAc;IAwBtB;;OAEG;IACH,OAAO,CAAC,eAAe;IA8CvB;;OAEG;IACH,OAAO,CAAC,mBAAmB;IAqC3B;;OAEG;IACH,OAAO,CAAC,iBAAiB;IAKzB;;OAEG;IACH,OAAO,CAAC,eAAe;IAuCvB;;OAEG;IACH,OAAO,CAAC,aAAa;IAcrB;;OAEG;IACH,OAAO,CAAC,YAAY;IAMpB;;OAEG;IACH,KAAK,IAAI,IAAI;IAMb;;OAEG;IACH,SAAS,IAAI,KAAK,EAAE;IAIpB;;OAEG;IACH,eAAe,CAAC,IAAI,EAAE,SAAS,GAAG,KAAK,EAAE;IAIzC;;OAEG;IACH,uBAAuB,CAAC,SAAS,GAAE,MAAY,GAAG,KAAK,EAAE;IAIzD;;OAEG;IACH,iBAAiB,CAAC,QAAQ,GAAE,MAAW,GAAG,MAAM;IAiBhD;;OAEG;IACH,YAAY,IAAI,MAAM;IAItB;;OAEG;IACH,aAAa;;sBAGW,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC;;;;;;CAuC/C"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"trace-detector.demo.d.ts","sourceRoot":"","sources":["../../../../src/core/trace/trace-detector.demo.ts"],"names":[],"mappings":"AAAA;;GAEG"}
|
|
@@ -0,0 +1,145 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Demo script to showcase Trace Detection functionality
|
|
3
|
+
*/
|
|
4
|
+
import { TraceDetector } from './trace-detector';
|
|
5
|
+
import { v4 as uuidv4 } from 'uuid';
|
|
6
|
+
// Create a new trace detector
|
|
7
|
+
const detector = new TraceDetector();
|
|
8
|
+
console.log('🔍 Trace Detection Demo\n');
|
|
9
|
+
console.log('='.repeat(50));
|
|
10
|
+
// Simulate a search-driven modification trace
|
|
11
|
+
console.log('\n📋 Simulating Search-Driven Modification:');
|
|
12
|
+
const baseTime = Date.now();
|
|
13
|
+
const searchDrivenTools = [
|
|
14
|
+
{
|
|
15
|
+
id: uuidv4(),
|
|
16
|
+
tool: 'search',
|
|
17
|
+
timestamp: baseTime,
|
|
18
|
+
arguments: { query: 'authentication bug' },
|
|
19
|
+
},
|
|
20
|
+
{
|
|
21
|
+
id: uuidv4(),
|
|
22
|
+
tool: 'grep',
|
|
23
|
+
timestamp: baseTime + 1000,
|
|
24
|
+
arguments: { pattern: 'auth.*error' },
|
|
25
|
+
},
|
|
26
|
+
{
|
|
27
|
+
id: uuidv4(),
|
|
28
|
+
tool: 'read',
|
|
29
|
+
timestamp: baseTime + 2000,
|
|
30
|
+
filesAffected: ['/src/auth/login.ts'],
|
|
31
|
+
},
|
|
32
|
+
{
|
|
33
|
+
id: uuidv4(),
|
|
34
|
+
tool: 'edit',
|
|
35
|
+
timestamp: baseTime + 3000,
|
|
36
|
+
filesAffected: ['/src/auth/login.ts'],
|
|
37
|
+
},
|
|
38
|
+
];
|
|
39
|
+
searchDrivenTools.forEach(tool => {
|
|
40
|
+
detector.addToolCall(tool);
|
|
41
|
+
console.log(` Added: ${tool.tool}`);
|
|
42
|
+
});
|
|
43
|
+
// Simulate an error recovery trace (separate due to time gap)
|
|
44
|
+
console.log('\n🔧 Simulating Error Recovery:');
|
|
45
|
+
const errorTime = baseTime + 40000; // 40 seconds later
|
|
46
|
+
const errorRecoveryTools = [
|
|
47
|
+
{
|
|
48
|
+
id: uuidv4(),
|
|
49
|
+
tool: 'bash',
|
|
50
|
+
timestamp: errorTime,
|
|
51
|
+
arguments: { command: 'npm test' },
|
|
52
|
+
error: 'Test failed: TypeError',
|
|
53
|
+
},
|
|
54
|
+
{
|
|
55
|
+
id: uuidv4(),
|
|
56
|
+
tool: 'edit',
|
|
57
|
+
timestamp: errorTime + 1000,
|
|
58
|
+
filesAffected: ['/src/utils/validator.ts'],
|
|
59
|
+
},
|
|
60
|
+
{
|
|
61
|
+
id: uuidv4(),
|
|
62
|
+
tool: 'bash',
|
|
63
|
+
timestamp: errorTime + 2000,
|
|
64
|
+
arguments: { command: 'npm test' },
|
|
65
|
+
result: 'All tests passing',
|
|
66
|
+
},
|
|
67
|
+
];
|
|
68
|
+
errorRecoveryTools.forEach(tool => {
|
|
69
|
+
detector.addToolCall(tool);
|
|
70
|
+
console.log(` Added: ${tool.tool}${tool.error ? ' (with error)' : ''}`);
|
|
71
|
+
});
|
|
72
|
+
// Simulate a feature implementation trace
|
|
73
|
+
console.log('\n✨ Simulating Feature Implementation:');
|
|
74
|
+
const featureTime = baseTime + 80000; // 80 seconds later
|
|
75
|
+
const featureTools = [
|
|
76
|
+
{
|
|
77
|
+
id: uuidv4(),
|
|
78
|
+
tool: 'write',
|
|
79
|
+
timestamp: featureTime,
|
|
80
|
+
filesAffected: ['/src/components/Dashboard.tsx'],
|
|
81
|
+
},
|
|
82
|
+
{
|
|
83
|
+
id: uuidv4(),
|
|
84
|
+
tool: 'edit',
|
|
85
|
+
timestamp: featureTime + 1000,
|
|
86
|
+
filesAffected: ['/src/components/Dashboard.tsx'],
|
|
87
|
+
},
|
|
88
|
+
{
|
|
89
|
+
id: uuidv4(),
|
|
90
|
+
tool: 'test',
|
|
91
|
+
timestamp: featureTime + 2000,
|
|
92
|
+
arguments: { file: 'Dashboard.test.tsx' },
|
|
93
|
+
},
|
|
94
|
+
];
|
|
95
|
+
featureTools.forEach(tool => {
|
|
96
|
+
detector.addToolCall(tool);
|
|
97
|
+
console.log(` Added: ${tool.tool}`);
|
|
98
|
+
});
|
|
99
|
+
// Flush any pending traces
|
|
100
|
+
detector.flush();
|
|
101
|
+
// Get statistics
|
|
102
|
+
console.log('\n📊 Trace Statistics:');
|
|
103
|
+
console.log('='.repeat(50));
|
|
104
|
+
const stats = detector.getStatistics();
|
|
105
|
+
console.log(`Total Traces: ${stats.totalTraces}`);
|
|
106
|
+
console.log(`Average Score: ${stats.averageScore.toFixed(2)}`);
|
|
107
|
+
console.log(`Average Length: ${stats.averageLength.toFixed(1)} tools`);
|
|
108
|
+
console.log(`High Importance (>0.7): ${stats.highImportanceCount}`);
|
|
109
|
+
console.log('\nTrace Types:');
|
|
110
|
+
Object.entries(stats.tracesByType).forEach(([type, count]) => {
|
|
111
|
+
console.log(` ${type}: ${count}`);
|
|
112
|
+
});
|
|
113
|
+
// Display all traces
|
|
114
|
+
console.log('\n📝 Detected Traces:');
|
|
115
|
+
console.log('='.repeat(50));
|
|
116
|
+
const traces = detector.getTraces();
|
|
117
|
+
traces.forEach((trace, index) => {
|
|
118
|
+
console.log(`\nTrace ${index + 1}:`);
|
|
119
|
+
console.log(` Type: ${trace.type}`);
|
|
120
|
+
console.log(` Score: ${trace.score.toFixed(2)}`);
|
|
121
|
+
console.log(` Tools: ${trace.tools.map(t => t.tool).join(' → ')}`);
|
|
122
|
+
console.log(` Summary: ${trace.summary}`);
|
|
123
|
+
console.log(` Duration: ${((trace.metadata.endTime - trace.metadata.startTime) / 1000).toFixed(1)}s`);
|
|
124
|
+
if (trace.metadata.filesModified.length > 0) {
|
|
125
|
+
console.log(` Files Modified: ${trace.metadata.filesModified.join(', ')}`);
|
|
126
|
+
}
|
|
127
|
+
if (trace.metadata.errorsEncountered.length > 0) {
|
|
128
|
+
console.log(` Errors: ${trace.metadata.errorsEncountered.join(', ')}`);
|
|
129
|
+
}
|
|
130
|
+
if (trace.metadata.causalChain) {
|
|
131
|
+
console.log(` ✓ Causal Chain Detected (error→fix→verify)`);
|
|
132
|
+
}
|
|
133
|
+
});
|
|
134
|
+
// Test high-importance trace filtering
|
|
135
|
+
console.log('\n⭐ High Importance Traces (score > 0.3):');
|
|
136
|
+
const highImportance = detector.getHighImportanceTraces(0.3);
|
|
137
|
+
highImportance.forEach(trace => {
|
|
138
|
+
console.log(` [${trace.type}] Score: ${trace.score.toFixed(2)} - ${trace.summary}`);
|
|
139
|
+
});
|
|
140
|
+
// Export traces as JSON
|
|
141
|
+
console.log('\n💾 Exporting traces to JSON...');
|
|
142
|
+
const exported = detector.exportTraces();
|
|
143
|
+
console.log(`Exported ${exported.length} characters of JSON data`);
|
|
144
|
+
console.log('\n✅ Demo complete!');
|
|
145
|
+
//# sourceMappingURL=trace-detector.demo.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"trace-detector.demo.js","sourceRoot":"","sources":["../../../../src/core/trace/trace-detector.demo.ts"],"names":[],"mappings":"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"}
|