sdl-mcp 0.9.2 → 0.9.3

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.
@@ -20,204 +20,204 @@
20
20
  import { exec } from "./ladybug-core.js";
21
21
  import { LADYBUG_SCHEMA_VERSION } from "./migrations/index.js";
22
22
  const NODE_TABLES = [
23
- `CREATE NODE TABLE IF NOT EXISTS Repo (
24
- repoId STRING PRIMARY KEY,
25
- rootPath STRING,
26
- configJson STRING,
27
- createdAt STRING
28
- )`,
29
- `CREATE NODE TABLE IF NOT EXISTS File (
30
- fileId STRING PRIMARY KEY,
31
- relPath STRING,
32
- contentHash STRING,
33
- language STRING,
34
- byteSize INT64,
35
- lastIndexedAt STRING,
36
- directory STRING
37
- )`,
38
- `CREATE NODE TABLE IF NOT EXISTS Symbol (
39
- symbolId STRING PRIMARY KEY,
40
- kind STRING,
41
- name STRING,
42
- exported BOOLEAN,
43
- visibility STRING,
44
- language STRING,
45
- rangeStartLine INT64,
46
- rangeStartCol INT64,
47
- rangeEndLine INT64,
48
- rangeEndCol INT64,
49
- astFingerprint STRING,
50
- signatureJson STRING,
51
- summary STRING,
52
- invariantsJson STRING,
53
- sideEffectsJson STRING,
54
- roleTagsJson STRING,
55
- searchText STRING,
56
- updatedAt STRING
57
- )`,
58
- `CREATE NODE TABLE IF NOT EXISTS Version (
59
- versionId STRING PRIMARY KEY,
60
- createdAt STRING,
61
- reason STRING,
62
- prevVersionHash STRING,
63
- versionHash STRING
64
- )`,
65
- `CREATE NODE TABLE IF NOT EXISTS SymbolVersion (
66
- id STRING PRIMARY KEY,
67
- versionId STRING,
68
- symbolId STRING,
69
- astFingerprint STRING,
70
- signatureJson STRING,
71
- summary STRING,
72
- invariantsJson STRING,
73
- sideEffectsJson STRING
74
- )`,
75
- `CREATE NODE TABLE IF NOT EXISTS Metrics (
76
- symbolId STRING PRIMARY KEY,
77
- fanIn INT64 DEFAULT 0,
78
- fanOut INT64 DEFAULT 0,
79
- churn30d INT64 DEFAULT 0,
80
- testRefsJson STRING,
81
- canonicalTestJson STRING,
82
- updatedAt STRING
83
- )`,
84
- `CREATE NODE TABLE IF NOT EXISTS Cluster (
85
- clusterId STRING PRIMARY KEY,
86
- repoId STRING,
87
- label STRING,
88
- symbolCount INT32 DEFAULT 0,
89
- cohesionScore DOUBLE DEFAULT 0.0,
90
- versionId STRING,
91
- createdAt STRING
92
- )`,
93
- `CREATE NODE TABLE IF NOT EXISTS Process (
94
- processId STRING PRIMARY KEY,
95
- repoId STRING,
96
- entrySymbolId STRING,
97
- label STRING,
98
- depth INT32 DEFAULT 0,
99
- versionId STRING,
100
- createdAt STRING
101
- )`,
102
- `CREATE NODE TABLE IF NOT EXISTS SliceHandle (
103
- handle STRING PRIMARY KEY,
104
- repoId STRING,
105
- createdAt STRING,
106
- expiresAt STRING,
107
- minVersion STRING,
108
- maxVersion STRING,
109
- sliceHash STRING,
110
- spilloverRef STRING
111
- )`,
112
- `CREATE NODE TABLE IF NOT EXISTS CardHash (
113
- cardHash STRING PRIMARY KEY,
114
- cardBlob STRING,
115
- createdAt STRING
116
- )`,
117
- `CREATE NODE TABLE IF NOT EXISTS Audit (
118
- eventId STRING PRIMARY KEY,
119
- timestamp STRING,
120
- tool STRING,
121
- decision STRING,
122
- repoId STRING,
123
- symbolId STRING,
124
- detailsJson STRING
125
- )`,
126
- `CREATE NODE TABLE IF NOT EXISTS AgentFeedback (
127
- feedbackId STRING PRIMARY KEY,
128
- repoId STRING,
129
- versionId STRING,
130
- sliceHandle STRING,
131
- usefulSymbolsJson STRING DEFAULT '[]',
132
- missingSymbolsJson STRING DEFAULT '[]',
133
- taskTagsJson STRING,
134
- taskType STRING,
135
- taskText STRING,
136
- createdAt STRING
137
- )`,
138
- `CREATE NODE TABLE IF NOT EXISTS SymbolEmbedding (
139
- symbolId STRING PRIMARY KEY,
140
- model STRING,
141
- embeddingVector STRING,
142
- version STRING,
143
- cardHash STRING,
144
- createdAt STRING,
145
- updatedAt STRING
146
- )`,
147
- `CREATE NODE TABLE IF NOT EXISTS SummaryCache (
148
- symbolId STRING PRIMARY KEY,
149
- summary STRING,
150
- provider STRING,
151
- model STRING,
152
- cardHash STRING,
153
- costUsd DOUBLE DEFAULT 0.0,
154
- createdAt STRING,
155
- updatedAt STRING
156
- )`,
157
- `CREATE NODE TABLE IF NOT EXISTS SyncArtifact (
158
- artifactId STRING PRIMARY KEY,
159
- repoId STRING,
160
- versionId STRING,
161
- commitSha STRING,
162
- branch STRING,
163
- artifactHash STRING,
164
- compressedData STRING,
165
- createdAt STRING,
166
- sizeBytes INT64
167
- )`,
168
- `CREATE NODE TABLE IF NOT EXISTS SymbolReference (
169
- refId STRING PRIMARY KEY,
170
- repoId STRING,
171
- symbolName STRING,
172
- fileId STRING,
173
- lineNumber INT64,
174
- createdAt STRING
175
- )`,
176
- `CREATE NODE TABLE IF NOT EXISTS ToolPolicyHash (
177
- policyHash STRING PRIMARY KEY,
178
- policyBlob STRING,
179
- createdAt STRING
180
- )`,
181
- `CREATE NODE TABLE IF NOT EXISTS TsconfigHash (
182
- tsconfigHash STRING PRIMARY KEY,
183
- tsconfigBlob STRING,
184
- createdAt STRING
185
- )`,
186
- `CREATE NODE TABLE IF NOT EXISTS Memory (
187
- memoryId STRING PRIMARY KEY,
188
- repoId STRING,
189
- type STRING,
190
- title STRING,
191
- content STRING,
192
- contentHash STRING,
193
- searchText STRING,
194
- tagsJson STRING DEFAULT '[]',
195
- confidence DOUBLE DEFAULT 0.8,
196
- createdAt STRING,
197
- updatedAt STRING,
198
- createdByVersion STRING,
199
- stale BOOLEAN DEFAULT false,
200
- staleVersion STRING,
201
- sourceFile STRING,
202
- deleted BOOLEAN DEFAULT false
203
- )`,
204
- `CREATE NODE TABLE IF NOT EXISTS UsageSnapshot (
205
- snapshotId STRING PRIMARY KEY,
206
- sessionId STRING,
207
- repoId STRING,
208
- timestamp STRING,
209
- totalSdlTokens INT64,
210
- totalRawEquivalent INT64,
211
- totalSavedTokens INT64,
212
- savingsPercent DOUBLE,
213
- callCount INT64,
214
- toolBreakdownJson STRING
215
- )`,
216
- `CREATE NODE TABLE IF NOT EXISTS SchemaVersion (
217
- id STRING PRIMARY KEY,
218
- schemaVersion INT64,
219
- createdAt STRING,
220
- updatedAt STRING
23
+ `CREATE NODE TABLE IF NOT EXISTS Repo (
24
+ repoId STRING PRIMARY KEY,
25
+ rootPath STRING,
26
+ configJson STRING,
27
+ createdAt STRING
28
+ )`,
29
+ `CREATE NODE TABLE IF NOT EXISTS File (
30
+ fileId STRING PRIMARY KEY,
31
+ relPath STRING,
32
+ contentHash STRING,
33
+ language STRING,
34
+ byteSize INT64,
35
+ lastIndexedAt STRING,
36
+ directory STRING
37
+ )`,
38
+ `CREATE NODE TABLE IF NOT EXISTS Symbol (
39
+ symbolId STRING PRIMARY KEY,
40
+ kind STRING,
41
+ name STRING,
42
+ exported BOOLEAN,
43
+ visibility STRING,
44
+ language STRING,
45
+ rangeStartLine INT64,
46
+ rangeStartCol INT64,
47
+ rangeEndLine INT64,
48
+ rangeEndCol INT64,
49
+ astFingerprint STRING,
50
+ signatureJson STRING,
51
+ summary STRING,
52
+ invariantsJson STRING,
53
+ sideEffectsJson STRING,
54
+ roleTagsJson STRING,
55
+ searchText STRING,
56
+ updatedAt STRING
57
+ )`,
58
+ `CREATE NODE TABLE IF NOT EXISTS Version (
59
+ versionId STRING PRIMARY KEY,
60
+ createdAt STRING,
61
+ reason STRING,
62
+ prevVersionHash STRING,
63
+ versionHash STRING
64
+ )`,
65
+ `CREATE NODE TABLE IF NOT EXISTS SymbolVersion (
66
+ id STRING PRIMARY KEY,
67
+ versionId STRING,
68
+ symbolId STRING,
69
+ astFingerprint STRING,
70
+ signatureJson STRING,
71
+ summary STRING,
72
+ invariantsJson STRING,
73
+ sideEffectsJson STRING
74
+ )`,
75
+ `CREATE NODE TABLE IF NOT EXISTS Metrics (
76
+ symbolId STRING PRIMARY KEY,
77
+ fanIn INT64 DEFAULT 0,
78
+ fanOut INT64 DEFAULT 0,
79
+ churn30d INT64 DEFAULT 0,
80
+ testRefsJson STRING,
81
+ canonicalTestJson STRING,
82
+ updatedAt STRING
83
+ )`,
84
+ `CREATE NODE TABLE IF NOT EXISTS Cluster (
85
+ clusterId STRING PRIMARY KEY,
86
+ repoId STRING,
87
+ label STRING,
88
+ symbolCount INT32 DEFAULT 0,
89
+ cohesionScore DOUBLE DEFAULT 0.0,
90
+ versionId STRING,
91
+ createdAt STRING
92
+ )`,
93
+ `CREATE NODE TABLE IF NOT EXISTS Process (
94
+ processId STRING PRIMARY KEY,
95
+ repoId STRING,
96
+ entrySymbolId STRING,
97
+ label STRING,
98
+ depth INT32 DEFAULT 0,
99
+ versionId STRING,
100
+ createdAt STRING
101
+ )`,
102
+ `CREATE NODE TABLE IF NOT EXISTS SliceHandle (
103
+ handle STRING PRIMARY KEY,
104
+ repoId STRING,
105
+ createdAt STRING,
106
+ expiresAt STRING,
107
+ minVersion STRING,
108
+ maxVersion STRING,
109
+ sliceHash STRING,
110
+ spilloverRef STRING
111
+ )`,
112
+ `CREATE NODE TABLE IF NOT EXISTS CardHash (
113
+ cardHash STRING PRIMARY KEY,
114
+ cardBlob STRING,
115
+ createdAt STRING
116
+ )`,
117
+ `CREATE NODE TABLE IF NOT EXISTS Audit (
118
+ eventId STRING PRIMARY KEY,
119
+ timestamp STRING,
120
+ tool STRING,
121
+ decision STRING,
122
+ repoId STRING,
123
+ symbolId STRING,
124
+ detailsJson STRING
125
+ )`,
126
+ `CREATE NODE TABLE IF NOT EXISTS AgentFeedback (
127
+ feedbackId STRING PRIMARY KEY,
128
+ repoId STRING,
129
+ versionId STRING,
130
+ sliceHandle STRING,
131
+ usefulSymbolsJson STRING DEFAULT '[]',
132
+ missingSymbolsJson STRING DEFAULT '[]',
133
+ taskTagsJson STRING,
134
+ taskType STRING,
135
+ taskText STRING,
136
+ createdAt STRING
137
+ )`,
138
+ `CREATE NODE TABLE IF NOT EXISTS SymbolEmbedding (
139
+ symbolId STRING PRIMARY KEY,
140
+ model STRING,
141
+ embeddingVector STRING,
142
+ version STRING,
143
+ cardHash STRING,
144
+ createdAt STRING,
145
+ updatedAt STRING
146
+ )`,
147
+ `CREATE NODE TABLE IF NOT EXISTS SummaryCache (
148
+ symbolId STRING PRIMARY KEY,
149
+ summary STRING,
150
+ provider STRING,
151
+ model STRING,
152
+ cardHash STRING,
153
+ costUsd DOUBLE DEFAULT 0.0,
154
+ createdAt STRING,
155
+ updatedAt STRING
156
+ )`,
157
+ `CREATE NODE TABLE IF NOT EXISTS SyncArtifact (
158
+ artifactId STRING PRIMARY KEY,
159
+ repoId STRING,
160
+ versionId STRING,
161
+ commitSha STRING,
162
+ branch STRING,
163
+ artifactHash STRING,
164
+ compressedData STRING,
165
+ createdAt STRING,
166
+ sizeBytes INT64
167
+ )`,
168
+ `CREATE NODE TABLE IF NOT EXISTS SymbolReference (
169
+ refId STRING PRIMARY KEY,
170
+ repoId STRING,
171
+ symbolName STRING,
172
+ fileId STRING,
173
+ lineNumber INT64,
174
+ createdAt STRING
175
+ )`,
176
+ `CREATE NODE TABLE IF NOT EXISTS ToolPolicyHash (
177
+ policyHash STRING PRIMARY KEY,
178
+ policyBlob STRING,
179
+ createdAt STRING
180
+ )`,
181
+ `CREATE NODE TABLE IF NOT EXISTS TsconfigHash (
182
+ tsconfigHash STRING PRIMARY KEY,
183
+ tsconfigBlob STRING,
184
+ createdAt STRING
185
+ )`,
186
+ `CREATE NODE TABLE IF NOT EXISTS Memory (
187
+ memoryId STRING PRIMARY KEY,
188
+ repoId STRING,
189
+ type STRING,
190
+ title STRING,
191
+ content STRING,
192
+ contentHash STRING,
193
+ searchText STRING,
194
+ tagsJson STRING DEFAULT '[]',
195
+ confidence DOUBLE DEFAULT 0.8,
196
+ createdAt STRING,
197
+ updatedAt STRING,
198
+ createdByVersion STRING,
199
+ stale BOOLEAN DEFAULT false,
200
+ staleVersion STRING,
201
+ sourceFile STRING,
202
+ deleted BOOLEAN DEFAULT false
203
+ )`,
204
+ `CREATE NODE TABLE IF NOT EXISTS UsageSnapshot (
205
+ snapshotId STRING PRIMARY KEY,
206
+ sessionId STRING,
207
+ repoId STRING,
208
+ timestamp STRING,
209
+ totalSdlTokens INT64,
210
+ totalRawEquivalent INT64,
211
+ totalSavedTokens INT64,
212
+ savingsPercent DOUBLE,
213
+ callCount INT64,
214
+ toolBreakdownJson STRING
215
+ )`,
216
+ `CREATE NODE TABLE IF NOT EXISTS SchemaVersion (
217
+ id STRING PRIMARY KEY,
218
+ schemaVersion INT64,
219
+ createdAt STRING,
220
+ updatedAt STRING
221
221
  )`,
222
222
  ];
223
223
  export const CALL_EDGE_METADATA_FIELDS = [
@@ -227,52 +227,52 @@ export const CALL_EDGE_METADATA_FIELDS = [
227
227
  "resolutionPhase",
228
228
  ];
229
229
  const REL_TABLES = [
230
- `CREATE REL TABLE IF NOT EXISTS FILE_IN_REPO (
231
- FROM File TO Repo
230
+ `CREATE REL TABLE IF NOT EXISTS FILE_IN_REPO (
231
+ FROM File TO Repo
232
232
  )`,
233
- `CREATE REL TABLE IF NOT EXISTS SYMBOL_IN_FILE (
234
- FROM Symbol TO File
233
+ `CREATE REL TABLE IF NOT EXISTS SYMBOL_IN_FILE (
234
+ FROM Symbol TO File
235
235
  )`,
236
- `CREATE REL TABLE IF NOT EXISTS SYMBOL_IN_REPO (
237
- FROM Symbol TO Repo
236
+ `CREATE REL TABLE IF NOT EXISTS SYMBOL_IN_REPO (
237
+ FROM Symbol TO Repo
238
238
  )`,
239
- `CREATE REL TABLE IF NOT EXISTS DEPENDS_ON (
240
- FROM Symbol TO Symbol,
241
- edgeType STRING DEFAULT 'call',
242
- weight DOUBLE DEFAULT 1.0,
243
- confidence DOUBLE DEFAULT 1.0,
244
- resolution STRING DEFAULT 'exact',
245
- resolverId STRING DEFAULT 'pass1-generic',
246
- resolutionPhase STRING DEFAULT 'pass1',
247
- provenance STRING,
248
- createdAt STRING
239
+ `CREATE REL TABLE IF NOT EXISTS DEPENDS_ON (
240
+ FROM Symbol TO Symbol,
241
+ edgeType STRING DEFAULT 'call',
242
+ weight DOUBLE DEFAULT 1.0,
243
+ confidence DOUBLE DEFAULT 1.0,
244
+ resolution STRING DEFAULT 'exact',
245
+ resolverId STRING DEFAULT 'pass1-generic',
246
+ resolutionPhase STRING DEFAULT 'pass1',
247
+ provenance STRING,
248
+ createdAt STRING
249
249
  )`,
250
- `CREATE REL TABLE IF NOT EXISTS VERSION_OF_REPO (
251
- FROM Version TO Repo
250
+ `CREATE REL TABLE IF NOT EXISTS VERSION_OF_REPO (
251
+ FROM Version TO Repo
252
252
  )`,
253
- `CREATE REL TABLE IF NOT EXISTS BELONGS_TO_CLUSTER (
254
- FROM Symbol TO Cluster,
255
- membershipScore DOUBLE DEFAULT 0.0
253
+ `CREATE REL TABLE IF NOT EXISTS BELONGS_TO_CLUSTER (
254
+ FROM Symbol TO Cluster,
255
+ membershipScore DOUBLE DEFAULT 0.0
256
256
  )`,
257
- `CREATE REL TABLE IF NOT EXISTS PARTICIPATES_IN (
258
- FROM Symbol TO Process,
259
- stepOrder INT32 DEFAULT 0,
260
- role STRING
257
+ `CREATE REL TABLE IF NOT EXISTS PARTICIPATES_IN (
258
+ FROM Symbol TO Process,
259
+ stepOrder INT32 DEFAULT 0,
260
+ role STRING
261
261
  )`,
262
- `CREATE REL TABLE IF NOT EXISTS CLUSTER_IN_REPO (
263
- FROM Cluster TO Repo
262
+ `CREATE REL TABLE IF NOT EXISTS CLUSTER_IN_REPO (
263
+ FROM Cluster TO Repo
264
264
  )`,
265
- `CREATE REL TABLE IF NOT EXISTS PROCESS_IN_REPO (
266
- FROM Process TO Repo
265
+ `CREATE REL TABLE IF NOT EXISTS PROCESS_IN_REPO (
266
+ FROM Process TO Repo
267
267
  )`,
268
- `CREATE REL TABLE IF NOT EXISTS HAS_MEMORY (
269
- FROM Repo TO Memory
268
+ `CREATE REL TABLE IF NOT EXISTS HAS_MEMORY (
269
+ FROM Repo TO Memory
270
270
  )`,
271
- `CREATE REL TABLE IF NOT EXISTS MEMORY_OF (
272
- FROM Memory TO Symbol
271
+ `CREATE REL TABLE IF NOT EXISTS MEMORY_OF (
272
+ FROM Memory TO Symbol
273
273
  )`,
274
- `CREATE REL TABLE IF NOT EXISTS MEMORY_OF_FILE (
275
- FROM Memory TO File
274
+ `CREATE REL TABLE IF NOT EXISTS MEMORY_OF_FILE (
275
+ FROM Memory TO File
276
276
  )`,
277
277
  ];
278
278
  async function execDdl(conn, ddl) {
@@ -313,12 +313,12 @@ export async function createSchema(conn) {
313
313
  }
314
314
  // Insert or verify schema version
315
315
  const now = new Date().toISOString();
316
- await exec(conn, `MERGE (sv:SchemaVersion {id: 'current'})
317
- ON CREATE SET sv.schemaVersion = $schemaVersion, sv.createdAt = $createdAt, sv.updatedAt = $updatedAt
316
+ await exec(conn, `MERGE (sv:SchemaVersion {id: 'current'})
317
+ ON CREATE SET sv.schemaVersion = $schemaVersion, sv.createdAt = $createdAt, sv.updatedAt = $updatedAt
318
318
  ON MATCH SET sv.schemaVersion = $schemaVersion, sv.updatedAt = $updatedAt`, { schemaVersion: LADYBUG_SCHEMA_VERSION, createdAt: now, updatedAt: now });
319
319
  }
320
320
  export async function getSchemaVersion(conn) {
321
- const result = await conn.query(`MATCH (sv:SchemaVersion {id: 'current'})
321
+ const result = await conn.query(`MATCH (sv:SchemaVersion {id: 'current'})
322
322
  RETURN sv.schemaVersion AS schemaVersion`);
323
323
  try {
324
324
  const rows = (await result.getAll());