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.
- package/bin/setup-forge.sh +1 -1
- package/bin/setup.js +99 -0
- package/dist/cli.js +37 -37
- package/dist/cli.js.map +1 -1
- package/dist/index.js +4 -4
- package/dist/index.js.map +1 -1
- package/dist/storage/schema.js +113 -113
- package/dist/storage/schema.js.map +1 -1
- package/dist/storage/sqlite.js +1 -1
- package/dist/storage/sqlite.js.map +1 -1
- package/dist/util/logger.d.ts +1 -1
- package/dist/util/logger.js +1 -1
- package/dist/util/types.js +1 -1
- package/dist/util/types.js.map +1 -1
- package/package.json +8 -2
- package/plugin/.mcp.json +1 -1
- package/.claude/hooks/worktree-create.sh +0 -64
- package/.claude/hooks/worktree-remove.sh +0 -57
- package/.claude/settings.local.json +0 -29
- package/.forge/knowledge/conventions.yaml +0 -1
- package/.forge/knowledge/decisions.yaml +0 -1
- package/.forge/knowledge/gotchas.yaml +0 -1
- package/.forge/knowledge/patterns.yaml +0 -1
- package/.forge/manifest.yaml +0 -6
- package/CLAUDE.md +0 -144
- package/docker-compose.yml +0 -20
- package/docs/plans/2026-02-27-swarm-coordination/architecture.md +0 -203
- package/docs/plans/2026-02-27-swarm-coordination/vision.md +0 -57
- package/docs/plans/completed/2026-02-26-forge-plugin-bundling/architecture.md +0 -1
- package/docs/plans/completed/2026-02-26-forge-plugin-bundling/vision.md +0 -300
- package/docs/plans/completed/2026-02-27-forge-swarm-learning/architecture.md +0 -480
- package/docs/plans/completed/2026-02-27-forge-swarm-learning/verification-checklist.md +0 -462
- package/docs/plans/completed/2026-02-27-git-history-atlassian/git-jira-plan.md +0 -181
- package/src/cli.ts +0 -655
- package/src/context/.gitkeep +0 -0
- package/src/context/codebase.ts +0 -393
- package/src/context/injector.ts +0 -797
- package/src/context/memory.ts +0 -187
- package/src/context/session-index.ts +0 -327
- package/src/context/session.ts +0 -152
- package/src/index.ts +0 -47
- package/src/ingestion/.gitkeep +0 -0
- package/src/ingestion/chunker.ts +0 -277
- package/src/ingestion/embedder.ts +0 -167
- package/src/ingestion/git-analyzer.ts +0 -545
- package/src/ingestion/indexer.ts +0 -984
- package/src/ingestion/markdown-chunker.ts +0 -337
- package/src/ingestion/markdown-knowledge.ts +0 -175
- package/src/ingestion/parser.ts +0 -475
- package/src/ingestion/watcher.ts +0 -182
- package/src/knowledge/.gitkeep +0 -0
- package/src/knowledge/hydrator.ts +0 -246
- package/src/knowledge/registry.ts +0 -463
- package/src/knowledge/search.ts +0 -565
- package/src/knowledge/store.ts +0 -262
- package/src/learning/.gitkeep +0 -0
- package/src/learning/confidence.ts +0 -193
- package/src/learning/patterns.ts +0 -360
- package/src/learning/trajectory.ts +0 -268
- package/src/memory/.gitkeep +0 -0
- package/src/memory/memory-compat.ts +0 -233
- package/src/memory/observation-store.ts +0 -224
- package/src/memory/session-tracker.ts +0 -332
- package/src/pipeline/.gitkeep +0 -0
- package/src/pipeline/engine.ts +0 -1139
- package/src/pipeline/events.ts +0 -253
- package/src/pipeline/parallel.ts +0 -394
- package/src/pipeline/state-machine.ts +0 -199
- package/src/query/.gitkeep +0 -0
- package/src/query/graph-queries.ts +0 -262
- package/src/query/hybrid-search.ts +0 -337
- package/src/query/intent-detector.ts +0 -131
- package/src/query/ranking.ts +0 -161
- package/src/server.ts +0 -352
- package/src/storage/.gitkeep +0 -0
- package/src/storage/falkordb-store.ts +0 -388
- package/src/storage/file-cache.ts +0 -141
- package/src/storage/interfaces.ts +0 -201
- package/src/storage/qdrant-store.ts +0 -557
- package/src/storage/schema.ts +0 -139
- package/src/storage/sqlite.ts +0 -168
- package/src/tools/.gitkeep +0 -0
- package/src/tools/collaboration-tools.ts +0 -208
- package/src/tools/context-tools.ts +0 -493
- package/src/tools/graph-tools.ts +0 -295
- package/src/tools/ingestion-tools.ts +0 -122
- package/src/tools/learning-tools.ts +0 -181
- package/src/tools/memory-tools.ts +0 -234
- package/src/tools/phase-tools.ts +0 -1452
- package/src/tools/pipeline-tools.ts +0 -188
- package/src/tools/registration-tools.ts +0 -450
- package/src/util/.gitkeep +0 -0
- package/src/util/circuit-breaker.ts +0 -193
- package/src/util/config.ts +0 -177
- package/src/util/logger.ts +0 -53
- package/src/util/token-counter.ts +0 -52
- package/src/util/types.ts +0 -710
- package/tests/context/.gitkeep +0 -0
- package/tests/integration/.gitkeep +0 -0
- package/tests/knowledge/.gitkeep +0 -0
- package/tests/learning/.gitkeep +0 -0
- package/tests/pipeline/.gitkeep +0 -0
- package/tests/tools/.gitkeep +0 -0
- package/tsconfig.json +0 -21
- package/vitest.config.ts +0 -10
- package/vscode-extension/.vscodeignore +0 -7
- package/vscode-extension/README.md +0 -43
- package/vscode-extension/out/edge-collector.js +0 -274
- package/vscode-extension/out/edge-collector.js.map +0 -1
- package/vscode-extension/out/extension.js +0 -264
- package/vscode-extension/out/extension.js.map +0 -1
- package/vscode-extension/out/forge-client.js +0 -318
- package/vscode-extension/out/forge-client.js.map +0 -1
- package/vscode-extension/package-lock.json +0 -59
- package/vscode-extension/package.json +0 -71
- package/vscode-extension/src/edge-collector.ts +0 -320
- package/vscode-extension/src/extension.ts +0 -269
- package/vscode-extension/src/forge-client.ts +0 -364
- 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
|
-
}
|
package/tests/context/.gitkeep
DELETED
|
File without changes
|
|
File without changes
|
package/tests/knowledge/.gitkeep
DELETED
|
File without changes
|
package/tests/learning/.gitkeep
DELETED
|
File without changes
|
package/tests/pipeline/.gitkeep
DELETED
|
File without changes
|
package/tests/tools/.gitkeep
DELETED
|
File without changes
|