forge-server 0.1.0 → 0.1.1

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.
Files changed (119) hide show
  1. package/bin/setup-forge.sh +1 -1
  2. package/bin/setup.js +99 -0
  3. package/dist/cli.js +37 -37
  4. package/dist/cli.js.map +1 -1
  5. package/dist/index.js +4 -4
  6. package/dist/index.js.map +1 -1
  7. package/dist/storage/schema.js +113 -113
  8. package/dist/storage/schema.js.map +1 -1
  9. package/dist/storage/sqlite.js +1 -1
  10. package/dist/storage/sqlite.js.map +1 -1
  11. package/dist/util/logger.d.ts +1 -1
  12. package/dist/util/logger.js +1 -1
  13. package/dist/util/types.js +1 -1
  14. package/dist/util/types.js.map +1 -1
  15. package/package.json +8 -2
  16. package/plugin/.mcp.json +1 -1
  17. package/.claude/hooks/worktree-create.sh +0 -64
  18. package/.claude/hooks/worktree-remove.sh +0 -57
  19. package/.claude/settings.local.json +0 -29
  20. package/.forge/knowledge/conventions.yaml +0 -1
  21. package/.forge/knowledge/decisions.yaml +0 -1
  22. package/.forge/knowledge/gotchas.yaml +0 -1
  23. package/.forge/knowledge/patterns.yaml +0 -1
  24. package/.forge/manifest.yaml +0 -6
  25. package/CLAUDE.md +0 -144
  26. package/docker-compose.yml +0 -20
  27. package/docs/plans/2026-02-27-swarm-coordination/architecture.md +0 -203
  28. package/docs/plans/2026-02-27-swarm-coordination/vision.md +0 -57
  29. package/docs/plans/completed/2026-02-26-forge-plugin-bundling/architecture.md +0 -1
  30. package/docs/plans/completed/2026-02-26-forge-plugin-bundling/vision.md +0 -300
  31. package/docs/plans/completed/2026-02-27-forge-swarm-learning/architecture.md +0 -480
  32. package/docs/plans/completed/2026-02-27-forge-swarm-learning/verification-checklist.md +0 -462
  33. package/docs/plans/completed/2026-02-27-git-history-atlassian/git-jira-plan.md +0 -181
  34. package/src/cli.ts +0 -655
  35. package/src/context/.gitkeep +0 -0
  36. package/src/context/codebase.ts +0 -393
  37. package/src/context/injector.ts +0 -797
  38. package/src/context/memory.ts +0 -187
  39. package/src/context/session-index.ts +0 -327
  40. package/src/context/session.ts +0 -152
  41. package/src/index.ts +0 -47
  42. package/src/ingestion/.gitkeep +0 -0
  43. package/src/ingestion/chunker.ts +0 -277
  44. package/src/ingestion/embedder.ts +0 -167
  45. package/src/ingestion/git-analyzer.ts +0 -545
  46. package/src/ingestion/indexer.ts +0 -984
  47. package/src/ingestion/markdown-chunker.ts +0 -337
  48. package/src/ingestion/markdown-knowledge.ts +0 -175
  49. package/src/ingestion/parser.ts +0 -475
  50. package/src/ingestion/watcher.ts +0 -182
  51. package/src/knowledge/.gitkeep +0 -0
  52. package/src/knowledge/hydrator.ts +0 -246
  53. package/src/knowledge/registry.ts +0 -463
  54. package/src/knowledge/search.ts +0 -565
  55. package/src/knowledge/store.ts +0 -262
  56. package/src/learning/.gitkeep +0 -0
  57. package/src/learning/confidence.ts +0 -193
  58. package/src/learning/patterns.ts +0 -360
  59. package/src/learning/trajectory.ts +0 -268
  60. package/src/memory/.gitkeep +0 -0
  61. package/src/memory/memory-compat.ts +0 -233
  62. package/src/memory/observation-store.ts +0 -224
  63. package/src/memory/session-tracker.ts +0 -332
  64. package/src/pipeline/.gitkeep +0 -0
  65. package/src/pipeline/engine.ts +0 -1139
  66. package/src/pipeline/events.ts +0 -253
  67. package/src/pipeline/parallel.ts +0 -394
  68. package/src/pipeline/state-machine.ts +0 -199
  69. package/src/query/.gitkeep +0 -0
  70. package/src/query/graph-queries.ts +0 -262
  71. package/src/query/hybrid-search.ts +0 -337
  72. package/src/query/intent-detector.ts +0 -131
  73. package/src/query/ranking.ts +0 -161
  74. package/src/server.ts +0 -352
  75. package/src/storage/.gitkeep +0 -0
  76. package/src/storage/falkordb-store.ts +0 -388
  77. package/src/storage/file-cache.ts +0 -141
  78. package/src/storage/interfaces.ts +0 -201
  79. package/src/storage/qdrant-store.ts +0 -557
  80. package/src/storage/schema.ts +0 -139
  81. package/src/storage/sqlite.ts +0 -168
  82. package/src/tools/.gitkeep +0 -0
  83. package/src/tools/collaboration-tools.ts +0 -208
  84. package/src/tools/context-tools.ts +0 -493
  85. package/src/tools/graph-tools.ts +0 -295
  86. package/src/tools/ingestion-tools.ts +0 -122
  87. package/src/tools/learning-tools.ts +0 -181
  88. package/src/tools/memory-tools.ts +0 -234
  89. package/src/tools/phase-tools.ts +0 -1452
  90. package/src/tools/pipeline-tools.ts +0 -188
  91. package/src/tools/registration-tools.ts +0 -450
  92. package/src/util/.gitkeep +0 -0
  93. package/src/util/circuit-breaker.ts +0 -193
  94. package/src/util/config.ts +0 -177
  95. package/src/util/logger.ts +0 -53
  96. package/src/util/token-counter.ts +0 -52
  97. package/src/util/types.ts +0 -710
  98. package/tests/context/.gitkeep +0 -0
  99. package/tests/integration/.gitkeep +0 -0
  100. package/tests/knowledge/.gitkeep +0 -0
  101. package/tests/learning/.gitkeep +0 -0
  102. package/tests/pipeline/.gitkeep +0 -0
  103. package/tests/tools/.gitkeep +0 -0
  104. package/tsconfig.json +0 -21
  105. package/vitest.config.ts +0 -10
  106. package/vscode-extension/.vscodeignore +0 -7
  107. package/vscode-extension/README.md +0 -43
  108. package/vscode-extension/out/edge-collector.js +0 -274
  109. package/vscode-extension/out/edge-collector.js.map +0 -1
  110. package/vscode-extension/out/extension.js +0 -264
  111. package/vscode-extension/out/extension.js.map +0 -1
  112. package/vscode-extension/out/forge-client.js +0 -318
  113. package/vscode-extension/out/forge-client.js.map +0 -1
  114. package/vscode-extension/package-lock.json +0 -59
  115. package/vscode-extension/package.json +0 -71
  116. package/vscode-extension/src/edge-collector.ts +0 -320
  117. package/vscode-extension/src/extension.ts +0 -269
  118. package/vscode-extension/src/forge-client.ts +0 -364
  119. package/vscode-extension/tsconfig.json +0 -19
package/src/util/types.ts DELETED
@@ -1,710 +0,0 @@
1
- // Core domain types for the dk-forge-server.
2
- // These are the canonical entity interfaces shared across the storage, knowledge,
3
- // and pipeline layers. Every field is explicit — no `any`, no implicit optionals.
4
-
5
- // ---------------------------------------------------------------------------
6
- // Pipeline state types
7
- // ---------------------------------------------------------------------------
8
-
9
- export type PipelinePhase =
10
- | 'idle'
11
- | 'strategist'
12
- | 'product-manager'
13
- | 'architect'
14
- | 'designer'
15
- | 'qa-strategist'
16
- | 'backend-specialist'
17
- | 'frontend-specialist'
18
- | 'data-specialist'
19
- | 'platform-engineer'
20
- | 'inspector'
21
- | 'knowledge-keeper'
22
- | 'complete'
23
- | 'failed';
24
-
25
- export type PipelineTier = 'full' | 'abbreviated' | 'trivial';
26
-
27
- export type ProjectStatus = 'active' | 'paused' | 'complete' | 'archived';
28
-
29
- export type RepoSharing = 'private' | 'team' | 'public';
30
-
31
- export type TrajectoryStatus = 'active' | 'complete' | 'failed' | 'abandoned';
32
-
33
- export type ClaimStatus = 'claimed' | 'complete' | 'failed' | 'stealable';
34
-
35
- export type EventType =
36
- | 'phase_transition'
37
- | 'agent_started'
38
- | 'agent_completed'
39
- | 'agent_failed'
40
- | 'project_created'
41
- | 'project_paused'
42
- | 'project_resumed'
43
- | 'project_completed'
44
- | 'claim_created'
45
- | 'claim_completed'
46
- | 'claim_failed'
47
- | 'agent_broadcast';
48
-
49
- // ---------------------------------------------------------------------------
50
- // Row types — these mirror the SQLite table columns exactly.
51
- // Timestamps are stored as INTEGER (Unix ms). JSON columns are TEXT in SQLite
52
- // but deserialized to typed objects by the query helpers.
53
- // ---------------------------------------------------------------------------
54
-
55
- export interface RepoRow {
56
- id: string;
57
- name: string;
58
- path: string;
59
- remote: string | null;
60
- stack: string; // JSON array of strings: e.g. '["nestjs","drizzle"]'
61
- sharing: RepoSharing;
62
- org: string | null;
63
- registered_at: number;
64
- last_seen_at: number;
65
- manifest_hash: string | null;
66
- }
67
-
68
- export interface ProjectRow {
69
- id: string;
70
- repo_id: string;
71
- name: string;
72
- description: string | null;
73
- current_phase: PipelinePhase;
74
- tier: PipelineTier;
75
- status: ProjectStatus;
76
- created_at: number;
77
- updated_at: number;
78
- metadata: string; // JSON object
79
- }
80
-
81
- export interface PipelineEventRow {
82
- id: number;
83
- project_id: string;
84
- event_type: EventType;
85
- from_phase: PipelinePhase | null;
86
- to_phase: PipelinePhase | null;
87
- agent: string | null;
88
- payload: string; // JSON object
89
- created_at: number;
90
- }
91
-
92
- export interface PhaseOutputRow {
93
- id: number;
94
- project_id: string;
95
- phase: PipelinePhase;
96
- output_type: string;
97
- content: string;
98
- file_path: string | null;
99
- created_at: number;
100
- }
101
-
102
- export interface TrajectoryRow {
103
- id: string;
104
- project_id: string;
105
- phase: PipelinePhase;
106
- agent: string;
107
- status: TrajectoryStatus;
108
- started_at: number;
109
- completed_at: number | null;
110
- success: number | null; // SQLite INTEGER: 0 = false, 1 = true, NULL = not yet determined
111
- feedback: string | null;
112
- }
113
-
114
- export interface TrajectoryStepRow {
115
- id: number;
116
- trajectory_id: string;
117
- action: string;
118
- result: string | null;
119
- quality_score: number | null;
120
- metadata: string; // JSON object
121
- created_at: number;
122
- }
123
-
124
- export interface SessionRow {
125
- id: string;
126
- project_id: string | null;
127
- repo_id: string | null;
128
- started_at: number;
129
- ended_at: number | null;
130
- state: string; // JSON object
131
- observation_count: number;
132
- }
133
-
134
- export interface ClaimRow {
135
- id: string;
136
- project_id: string;
137
- module_name: string;
138
- agent: string;
139
- branch: string | null;
140
- status: ClaimStatus;
141
- claimed_at: number;
142
- completed_at: number | null;
143
- result: string | null;
144
- }
145
-
146
- // ---------------------------------------------------------------------------
147
- // Deserialized domain objects — produced by service-layer queries that parse
148
- // JSON columns. These are what callers above the storage layer work with.
149
- // ---------------------------------------------------------------------------
150
-
151
- export interface Repo {
152
- id: string;
153
- name: string;
154
- path: string;
155
- remote: string | null;
156
- stack: string[];
157
- sharing: RepoSharing;
158
- org: string | null;
159
- registeredAt: number;
160
- lastSeenAt: number;
161
- manifestHash: string | null;
162
- }
163
-
164
- export interface ProjectMetadata {
165
- planPath?: string;
166
- worktreePaths?: Record<string, string>;
167
- interviewTranscript?: string;
168
- tags?: string[];
169
- [key: string]: unknown;
170
- }
171
-
172
- export interface Project {
173
- id: string;
174
- repoId: string;
175
- name: string;
176
- description: string | null;
177
- currentPhase: PipelinePhase;
178
- tier: PipelineTier;
179
- status: ProjectStatus;
180
- createdAt: number;
181
- updatedAt: number;
182
- metadata: ProjectMetadata;
183
- }
184
-
185
- export interface PipelineEventPayload {
186
- message?: string;
187
- error?: string;
188
- duration?: number;
189
- output?: string;
190
- [key: string]: unknown;
191
- }
192
-
193
- export interface PipelineEvent {
194
- id: number;
195
- projectId: string;
196
- eventType: EventType;
197
- fromPhase: PipelinePhase | null;
198
- toPhase: PipelinePhase | null;
199
- agent: string | null;
200
- payload: PipelineEventPayload;
201
- createdAt: number;
202
- }
203
-
204
- export interface PhaseOutput {
205
- id: number;
206
- projectId: string;
207
- phase: PipelinePhase;
208
- outputType: string;
209
- content: string;
210
- filePath: string | null;
211
- createdAt: number;
212
- }
213
-
214
- export interface Trajectory {
215
- id: string;
216
- projectId: string;
217
- phase: PipelinePhase;
218
- agent: string;
219
- status: TrajectoryStatus;
220
- startedAt: number;
221
- completedAt: number | null;
222
- success: boolean | null;
223
- feedback: string | null;
224
- }
225
-
226
- export interface TrajectoryStepMetadata {
227
- toolName?: string;
228
- filePath?: string;
229
- lineCount?: number;
230
- [key: string]: unknown;
231
- }
232
-
233
- export interface TrajectoryStep {
234
- id: number;
235
- trajectoryId: string;
236
- action: string;
237
- result: string | null;
238
- qualityScore: number | null;
239
- metadata: TrajectoryStepMetadata;
240
- createdAt: number;
241
- }
242
-
243
- export interface SessionState {
244
- currentTask?: string;
245
- context?: Record<string, unknown>;
246
- [key: string]: unknown;
247
- }
248
-
249
- export interface Session {
250
- id: string;
251
- projectId: string | null;
252
- repoId: string | null;
253
- startedAt: number;
254
- endedAt: number | null;
255
- state: SessionState;
256
- observationCount: number;
257
- }
258
-
259
- export interface Claim {
260
- id: string;
261
- projectId: string;
262
- moduleName: string;
263
- agent: string;
264
- branch: string | null;
265
- status: ClaimStatus;
266
- claimedAt: number;
267
- completedAt: number | null;
268
- result: string | null;
269
- }
270
-
271
- // ---------------------------------------------------------------------------
272
- // Knowledge types — used by both the YAML store and the Qdrant vector layer.
273
- // KnowledgeCategory is exported here so store.ts can import it cleanly.
274
- // ---------------------------------------------------------------------------
275
-
276
- export type KnowledgeCategory = 'gotcha' | 'pattern' | 'decision' | 'convention';
277
-
278
- export interface KnowledgeItem {
279
- id: string;
280
- title: string;
281
- content: string;
282
- stack_tags: string[];
283
- confidence: number;
284
- source: 'migration' | 'manual' | 'agent' | 'inspector';
285
- source_phase: PipelinePhase | null;
286
- source_agent: string | null;
287
- created_at: number;
288
- updated_at: number;
289
- }
290
-
291
- // ---------------------------------------------------------------------------
292
- // forge-graph-rag types — needed by storage, ingestion, query, and memory
293
- // modules merged from forge-graph-rag. These live alongside the pipeline
294
- // types above so that a single import covers both domains.
295
- // ---------------------------------------------------------------------------
296
-
297
- // Phase type as used by the knowledge/trajectory modules (pipeline-specific).
298
- // Maps to the pipeline execution phases tracked in KnowledgeItem and trajectories.
299
- export type Phase =
300
- | 'idle'
301
- | 'interview'
302
- | 'requirements'
303
- | 'architecture'
304
- | 'design'
305
- | 'qa_strategy'
306
- | 'implementation'
307
- | 'inspection'
308
- | 'knowledge_collection'
309
- | 'completed';
310
-
311
- export type SharingMode = 'team' | 'private' | 'public';
312
-
313
- export interface ForgeManifest {
314
- name: string;
315
- stack: string[];
316
- sharing: SharingMode;
317
- org?: string;
318
- repo_id_override?: string | null;
319
- }
320
-
321
- export interface KnowledgePayload {
322
- id: string;
323
- repo_id: string;
324
- category: string;
325
- title: string;
326
- content: string;
327
- stack_tags: string[];
328
- confidence: number;
329
- source: string;
330
- source_phase: string | null;
331
- source_agent: string | null;
332
- sharing: string;
333
- created_at: number;
334
- updated_at: number;
335
- accessed_at: number;
336
- access_count: number;
337
- }
338
-
339
- // ============================================================
340
- // Configuration Types (forge-graph-rag)
341
- // ============================================================
342
-
343
- export interface RepoConfig {
344
- id: string;
345
- path: string;
346
- remote?: string;
347
- ownership: 'owned' | 'external';
348
- watch: boolean;
349
- languages: string[];
350
- retrieval?: RepoRetrievalDefaults;
351
- }
352
-
353
- export interface AppConfig {
354
- server: {
355
- name: string;
356
- version: string;
357
- transport: string;
358
- };
359
- embedding: {
360
- model: string;
361
- dimension: number;
362
- batch_size: number;
363
- };
364
- cache: {
365
- max_size_mb: number;
366
- max_entries: number;
367
- ttl_minutes: number;
368
- };
369
- watcher: {
370
- debounce_ms: number;
371
- ignored_patterns: string[];
372
- watched_extensions: string[];
373
- };
374
- indexing: {
375
- max_file_size_kb: number;
376
- chunk_max_tokens: number;
377
- chunk_overlap_tokens: number;
378
- git_history_depth: number;
379
- };
380
- graph: {
381
- name: string;
382
- query_timeout_ms: number;
383
- };
384
- vector: {
385
- code_chunks_collection: string;
386
- observations_collection: string;
387
- hnsw_m: number;
388
- hnsw_ef_construct: number;
389
- on_disk_payload: boolean;
390
- };
391
- knowledge_routing: {
392
- default_ownership: 'owned' | 'external';
393
- };
394
- repos: RepoConfig[];
395
- }
396
-
397
- // ============================================================
398
- // Entity / Graph Types (forge-graph-rag)
399
- // ============================================================
400
-
401
- export type EntityType =
402
- | 'function'
403
- | 'class'
404
- | 'interface'
405
- | 'type_alias'
406
- | 'variable'
407
- | 'module'
408
- | 'file';
409
-
410
- export interface ParsedEntity {
411
- name: string;
412
- type: EntityType;
413
- filePath: string;
414
- repoId: string;
415
- startLine: number;
416
- endLine: number;
417
- isExported: boolean;
418
- isAsync?: boolean;
419
- params?: string;
420
- isConst?: boolean;
421
- isDefault?: boolean;
422
- sourceText: string;
423
- }
424
-
425
- export interface ParsedImport {
426
- fromPath: string; // module specifier (e.g. './auth.service')
427
- specifiers: string; // comma-joined import names
428
- isDefault: boolean;
429
- }
430
-
431
- export interface ParseResult {
432
- entities: ParsedEntity[];
433
- imports: ParsedImport[];
434
- filePath: string;
435
- language: string;
436
- success: boolean;
437
- error?: string;
438
- }
439
-
440
- // ============================================================
441
- // Chunk Types (forge-graph-rag)
442
- // ============================================================
443
-
444
- export type ChunkType =
445
- | 'function'
446
- | 'class'
447
- | 'interface'
448
- | 'type_alias'
449
- | 'variable'
450
- | 'file_level'
451
- | 'markdown'
452
- | 'config';
453
-
454
- export interface CodeChunk {
455
- id: string; // UUID for Qdrant point ID
456
- repoId: string;
457
- filePath: string;
458
- entityName: string | null;
459
- entityType: ChunkType;
460
- startLine: number;
461
- endLine: number;
462
- language: string;
463
- contentHash: string; // SHA-256 of content for cache invalidation
464
- content: string; // Full chunk text (with header comment)
465
- contentPreview: string; // First 200 chars
466
- indexedAt: number; // Unix timestamp ms
467
- }
468
-
469
- // ============================================================
470
- // Vector Store Types (forge-graph-rag)
471
- // ============================================================
472
-
473
- export interface CodeChunkPayload {
474
- repo_id: string;
475
- file_path: string;
476
- entity_name: string | null;
477
- entity_type: ChunkType;
478
- start_line: number;
479
- end_line: number;
480
- language: string;
481
- content_hash: string;
482
- content_preview: string;
483
- indexed_at: number;
484
- }
485
-
486
- export interface ObservationPayload {
487
- id: string;
488
- repo_id: string | null;
489
- session_id: string;
490
- content: string;
491
- type: 'episodic' | 'semantic' | 'procedural' | 'working';
492
- category: string | null;
493
- tags: string[];
494
- importance: number;
495
- created_at: number;
496
- accessed_at: number;
497
- access_count: number;
498
- is_stale: boolean;
499
- linked_symbols: string[];
500
- source: 'forge' | 'claude-flow' | 'ruflo';
501
- metadata: Record<string, unknown>;
502
- key: string | null;
503
- namespace: string;
504
- }
505
-
506
- export interface VectorSearchResult {
507
- id: string;
508
- score: number;
509
- payload: CodeChunkPayload | ObservationPayload;
510
- }
511
-
512
- // ============================================================
513
- // Query Types (forge-graph-rag)
514
- // ============================================================
515
-
516
- export type QueryIntent = 'read' | 'modify' | 'debug' | 'refactor';
517
-
518
- export interface GraphHybridSearchResult {
519
- filePath: string;
520
- repoId: string;
521
- vectorScore: number;
522
- graphScore: number;
523
- recencyScore: number;
524
- finalScore: number;
525
- entityName: string | null;
526
- entityType: ChunkType;
527
- startLine: number;
528
- endLine: number;
529
- matchReason: string;
530
- }
531
-
532
- // ============================================================
533
- // Graph Node/Edge Types (forge-graph-rag)
534
- // ============================================================
535
-
536
- export interface GraphNode {
537
- id?: string;
538
- label: string;
539
- properties: Record<string, unknown>;
540
- }
541
-
542
- export interface GraphEdge {
543
- type: string;
544
- from: string; // node identifier
545
- to: string; // node identifier
546
- properties?: Record<string, unknown>;
547
- }
548
-
549
- export interface GraphQueryResult {
550
- nodes: GraphNode[];
551
- edges: GraphEdge[];
552
- raw?: unknown[];
553
- }
554
-
555
- // ============================================================
556
- // Cache Types (forge-graph-rag)
557
- // ============================================================
558
-
559
- export interface CacheEntry {
560
- content: string;
561
- contentHash: string;
562
- cachedAt: number;
563
- accessCount: number;
564
- sizeBytes: number;
565
- }
566
-
567
- export interface CacheStats {
568
- entries: number;
569
- memoryUsageMb: number;
570
- hitRate: number;
571
- evictionCount: number;
572
- oldestEntryAgeSeconds: number;
573
- }
574
-
575
- // ============================================================
576
- // Index Status Types (forge-graph-rag)
577
- // ============================================================
578
-
579
- export interface RepoIndexStatus {
580
- repoId: string;
581
- path: string;
582
- filesIndexed: number;
583
- filesTotal: number;
584
- lastIndexedAt: number;
585
- staleFiles: number;
586
- }
587
-
588
- // ============================================================
589
- // MCP Tool Input/Output Types (forge-graph-rag)
590
- // ============================================================
591
-
592
- export type DetailLevel = 'full' | 'skeleton' | 'paths';
593
-
594
- export interface GetContextInput {
595
- query: string;
596
- repo_id?: string;
597
- include_tests?: boolean;
598
- max_tokens?: number;
599
- pivot_depth?: number;
600
- detail?: DetailLevel;
601
- max_results?: number;
602
- min_score?: number;
603
- }
604
-
605
- /**
606
- * Per-repo retrieval defaults. Applied when repo_id matches, overridden by per-call params.
607
- */
608
- export interface RepoRetrievalDefaults {
609
- detail?: DetailLevel;
610
- max_results?: number;
611
- max_tokens?: number;
612
- pivot_depth?: number;
613
- min_score?: number;
614
- include_tests?: boolean;
615
- }
616
-
617
- export interface TokenBreakdown {
618
- pivots: number;
619
- skeletons: number;
620
- memories: number;
621
- overhead: number;
622
- }
623
-
624
- export interface GetContextOutput {
625
- pivot_files: Array<{
626
- file_path: string;
627
- content: string;
628
- relevance_score: number;
629
- match_reason: string;
630
- }>;
631
- supporting_skeletons: Array<{
632
- file_path: string;
633
- skeleton: string;
634
- relevance_score: number;
635
- }>;
636
- related_memories: Array<{
637
- content: string;
638
- created_at: number;
639
- relevance_score: number;
640
- }>;
641
- query_intent: QueryIntent;
642
- token_count: number;
643
- token_breakdown: TokenBreakdown;
644
- cache_hits: number;
645
- execution_time_ms: number;
646
- }
647
-
648
- export interface GetSkeletonInput {
649
- path: string;
650
- repo_id?: string;
651
- detail?: 'minimal' | 'standard' | 'detailed';
652
- }
653
-
654
- export interface GetSkeletonOutput {
655
- path: string;
656
- type: 'file' | 'directory';
657
- skeleton: string;
658
- token_count: number;
659
- }
660
-
661
- export interface IndexStatusInput {
662
- repo_id?: string;
663
- }
664
-
665
- export interface IndexStatusOutput {
666
- repos: RepoIndexStatus[];
667
- graph: {
668
- total_nodes: number;
669
- total_edges: number;
670
- node_counts: Record<string, number>;
671
- };
672
- vector: {
673
- code_chunks_count: number;
674
- observations_count: number;
675
- };
676
- cache: CacheStats;
677
- health: 'healthy' | 'degraded' | 'unavailable';
678
- embedding_model: string;
679
- uptime_seconds: number;
680
- }
681
-
682
- // ============================================================
683
- // Git History Types (Phase 3 - git enrichment)
684
- // ============================================================
685
-
686
- export interface FileChangeStats {
687
- commitCount: number;
688
- stabilityScore: number; // 0-1, higher = more stable (fewer recent changes)
689
- changeVelocity: number; // -1 to +1, positive = accelerating changes
690
- lastCommitHash: string;
691
- lastCommitTs: number;
692
- recentMessages: string[]; // Last N commit messages touching this file
693
- }
694
-
695
- export interface CommitRecord {
696
- hash: string;
697
- message: string;
698
- author: string;
699
- timestamp: number; // Unix ms
700
- files: string[];
701
- }
702
-
703
- export interface GitCommitPayload {
704
- repo_id: string;
705
- commit_hash: string;
706
- message: string;
707
- author: string;
708
- timestamp: number;
709
- file_paths: string[];
710
- }
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes