structx 2.2.0 → 3.0.0
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/dist/benchmark/baseline.d.ts +2 -1
- package/dist/benchmark/baseline.d.ts.map +1 -1
- package/dist/benchmark/baseline.js +7 -18
- package/dist/benchmark/baseline.js.map +1 -1
- package/dist/benchmark/runner.d.ts +2 -1
- package/dist/benchmark/runner.d.ts.map +1 -1
- package/dist/benchmark/runner.js +4 -4
- package/dist/benchmark/runner.js.map +1 -1
- package/dist/cli.js +100 -45
- package/dist/cli.js.map +1 -1
- package/dist/config.d.ts +4 -0
- package/dist/config.d.ts.map +1 -1
- package/dist/config.js +12 -1
- package/dist/config.js.map +1 -1
- package/dist/providers/anthropic.d.ts +12 -0
- package/dist/providers/anthropic.d.ts.map +1 -0
- package/dist/providers/anthropic.js +32 -0
- package/dist/providers/anthropic.js.map +1 -0
- package/dist/providers/factory.d.ts +18 -0
- package/dist/providers/factory.d.ts.map +1 -0
- package/dist/providers/factory.js +49 -0
- package/dist/providers/factory.js.map +1 -0
- package/dist/providers/gemini.d.ts +12 -0
- package/dist/providers/gemini.d.ts.map +1 -0
- package/dist/providers/gemini.js +35 -0
- package/dist/providers/gemini.js.map +1 -0
- package/dist/providers/interface.d.ts +18 -0
- package/dist/providers/interface.d.ts.map +1 -0
- package/dist/providers/interface.js +3 -0
- package/dist/providers/interface.js.map +1 -0
- package/dist/providers/openrouter.d.ts +12 -0
- package/dist/providers/openrouter.d.ts.map +1 -0
- package/dist/providers/openrouter.js +38 -0
- package/dist/providers/openrouter.js.map +1 -0
- package/dist/query/answerer.d.ts +2 -1
- package/dist/query/answerer.d.ts.map +1 -1
- package/dist/query/answerer.js +7 -18
- package/dist/query/answerer.js.map +1 -1
- package/dist/query/classifier.d.ts +2 -1
- package/dist/query/classifier.d.ts.map +1 -1
- package/dist/query/classifier.js +4 -13
- package/dist/query/classifier.js.map +1 -1
- package/dist/semantic/analyzer.d.ts +5 -4
- package/dist/semantic/analyzer.d.ts.map +1 -1
- package/dist/semantic/analyzer.js +34 -61
- package/dist/semantic/analyzer.js.map +1 -1
- package/dist/utils/tokens.d.ts.map +1 -1
- package/dist/utils/tokens.js +6 -0
- package/dist/utils/tokens.js.map +1 -1
- package/package.json +3 -1
- package/dist/instructions/claude.md +0 -70
- package/dist/instructions/codex.md +0 -70
- package/dist/instructions/copilot.md +0 -70
- package/dist/instructions/cursor.md +0 -68
- package/dist/instructions/generic.md +0 -70
|
@@ -1,21 +1,16 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
-
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
-
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
-
};
|
|
5
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
3
|
exports.analyzeBatch = analyzeBatch;
|
|
7
4
|
exports.rebuildSearchIndex = rebuildSearchIndex;
|
|
8
5
|
exports.analyzeTypes = analyzeTypes;
|
|
9
6
|
exports.analyzeRoutes = analyzeRoutes;
|
|
10
7
|
exports.analyzeFileSummaries = analyzeFileSummaries;
|
|
11
|
-
const sdk_1 = __importDefault(require("@anthropic-ai/sdk"));
|
|
12
8
|
const queries_1 = require("../db/queries");
|
|
13
9
|
const prompt_1 = require("./prompt");
|
|
14
10
|
const validator_1 = require("./validator");
|
|
15
11
|
const tokens_1 = require("../utils/tokens");
|
|
16
12
|
const logger_1 = require("../utils/logger");
|
|
17
|
-
async function analyzeBatch(db, queueItems, model,
|
|
18
|
-
const client = new sdk_1.default({ apiKey });
|
|
13
|
+
async function analyzeBatch(db, queueItems, model, provider) {
|
|
19
14
|
const result = { analyzed: 0, cached: 0, failed: 0, totalInputTokens: 0, totalOutputTokens: 0, totalCost: 0 };
|
|
20
15
|
// Build prompt functions from queue items
|
|
21
16
|
const promptFunctions = [];
|
|
@@ -84,17 +79,14 @@ async function analyzeBatch(db, queueItems, model, apiKey) {
|
|
|
84
79
|
let inputTokens = 0;
|
|
85
80
|
let outputTokens = 0;
|
|
86
81
|
try {
|
|
87
|
-
const response = await
|
|
82
|
+
const response = await provider.chat({
|
|
88
83
|
model,
|
|
89
|
-
|
|
84
|
+
maxTokens: uncachedFunctions.length * 200,
|
|
90
85
|
messages: [{ role: 'user', content: batchPrompt }],
|
|
91
86
|
});
|
|
92
|
-
responseText = response.
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
.join('');
|
|
96
|
-
inputTokens = response.usage?.input_tokens ?? 0;
|
|
97
|
-
outputTokens = response.usage?.output_tokens ?? 0;
|
|
87
|
+
responseText = response.text;
|
|
88
|
+
inputTokens = response.inputTokens;
|
|
89
|
+
outputTokens = response.outputTokens;
|
|
98
90
|
result.totalInputTokens += inputTokens;
|
|
99
91
|
result.totalOutputTokens += outputTokens;
|
|
100
92
|
result.totalCost += (0, tokens_1.estimateCost)(model, inputTokens, outputTokens);
|
|
@@ -116,25 +108,21 @@ async function analyzeBatch(db, queueItems, model, apiKey) {
|
|
|
116
108
|
if (!validation.valid && validation.results.length === 0) {
|
|
117
109
|
logger_1.logger.warn(`Validation failed, retrying. Errors: ${validation.errors.join('; ')}`);
|
|
118
110
|
try {
|
|
119
|
-
const retryResponse = await
|
|
111
|
+
const retryResponse = await provider.chat({
|
|
120
112
|
model,
|
|
121
|
-
|
|
113
|
+
maxTokens: uncachedFunctions.length * 200,
|
|
122
114
|
messages: [
|
|
123
115
|
{ role: 'user', content: batchPrompt },
|
|
124
116
|
{ role: 'assistant', content: responseText },
|
|
125
117
|
{ role: 'user', content: `Your previous response had JSON errors: ${validation.errors.join('; ')}. Please respond with ONLY a valid JSON array.` },
|
|
126
118
|
],
|
|
127
119
|
});
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
result.totalInputTokens += retryResponse.usage?.input_tokens ?? 0;
|
|
133
|
-
result.totalOutputTokens += retryResponse.usage?.output_tokens ?? 0;
|
|
134
|
-
result.totalCost += (0, tokens_1.estimateCost)(model, retryResponse.usage?.input_tokens ?? 0, retryResponse.usage?.output_tokens ?? 0);
|
|
135
|
-
validation = (0, validator_1.validateSemanticResponse)(retryText);
|
|
120
|
+
result.totalInputTokens += retryResponse.inputTokens;
|
|
121
|
+
result.totalOutputTokens += retryResponse.outputTokens;
|
|
122
|
+
result.totalCost += (0, tokens_1.estimateCost)(model, retryResponse.inputTokens, retryResponse.outputTokens);
|
|
123
|
+
validation = (0, validator_1.validateSemanticResponse)(retryResponse.text);
|
|
136
124
|
if (validation.valid || validation.results.length > 0) {
|
|
137
|
-
responseText =
|
|
125
|
+
responseText = retryResponse.text;
|
|
138
126
|
}
|
|
139
127
|
}
|
|
140
128
|
catch (retryErr) {
|
|
@@ -179,8 +167,7 @@ function applySemanticResult(db, functionId, result) {
|
|
|
179
167
|
function rebuildSearchIndex(db) {
|
|
180
168
|
(0, queries_1.rebuildAllFtsIndexes)(db);
|
|
181
169
|
}
|
|
182
|
-
async function analyzeTypes(db, model,
|
|
183
|
-
const client = new sdk_1.default({ apiKey });
|
|
170
|
+
async function analyzeTypes(db, model, provider) {
|
|
184
171
|
const result = { analyzed: 0, failed: 0, totalInputTokens: 0, totalOutputTokens: 0, totalCost: 0 };
|
|
185
172
|
const types = (0, queries_1.getAllTypes)(db).filter(t => !t.semantic_analyzed_at);
|
|
186
173
|
if (types.length === 0)
|
|
@@ -194,19 +181,15 @@ async function analyzeTypes(db, model, apiKey) {
|
|
|
194
181
|
full_text: t.full_text,
|
|
195
182
|
})));
|
|
196
183
|
try {
|
|
197
|
-
const response = await
|
|
184
|
+
const response = await provider.chat({
|
|
198
185
|
model,
|
|
199
|
-
|
|
186
|
+
maxTokens: batch.length * 100,
|
|
200
187
|
messages: [{ role: 'user', content: prompt }],
|
|
201
188
|
});
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
result.totalInputTokens += response.usage?.input_tokens ?? 0;
|
|
207
|
-
result.totalOutputTokens += response.usage?.output_tokens ?? 0;
|
|
208
|
-
result.totalCost += (0, tokens_1.estimateCost)(model, response.usage?.input_tokens ?? 0, response.usage?.output_tokens ?? 0);
|
|
209
|
-
const cleaned = text.replace(/^```json?\s*/m, '').replace(/```\s*$/m, '').trim();
|
|
189
|
+
result.totalInputTokens += response.inputTokens;
|
|
190
|
+
result.totalOutputTokens += response.outputTokens;
|
|
191
|
+
result.totalCost += (0, tokens_1.estimateCost)(model, response.inputTokens, response.outputTokens);
|
|
192
|
+
const cleaned = response.text.replace(/^```json?\s*/m, '').replace(/```\s*$/m, '').trim();
|
|
210
193
|
const parsed = JSON.parse(cleaned);
|
|
211
194
|
for (const item of parsed) {
|
|
212
195
|
const typeRow = batch.find(t => t.name === item.name);
|
|
@@ -223,8 +206,7 @@ async function analyzeTypes(db, model, apiKey) {
|
|
|
223
206
|
}
|
|
224
207
|
return result;
|
|
225
208
|
}
|
|
226
|
-
async function analyzeRoutes(db, model,
|
|
227
|
-
const client = new sdk_1.default({ apiKey });
|
|
209
|
+
async function analyzeRoutes(db, model, provider) {
|
|
228
210
|
const result = { analyzed: 0, failed: 0, totalInputTokens: 0, totalOutputTokens: 0, totalCost: 0 };
|
|
229
211
|
const routes = (0, queries_1.getAllRoutes)(db).filter(r => !r.semantic_analyzed_at);
|
|
230
212
|
if (routes.length === 0)
|
|
@@ -237,19 +219,15 @@ async function analyzeRoutes(db, model, apiKey) {
|
|
|
237
219
|
handler_body: r.handler_body,
|
|
238
220
|
})));
|
|
239
221
|
try {
|
|
240
|
-
const response = await
|
|
222
|
+
const response = await provider.chat({
|
|
241
223
|
model,
|
|
242
|
-
|
|
224
|
+
maxTokens: batch.length * 100,
|
|
243
225
|
messages: [{ role: 'user', content: prompt }],
|
|
244
226
|
});
|
|
245
|
-
|
|
246
|
-
|
|
247
|
-
|
|
248
|
-
|
|
249
|
-
result.totalInputTokens += response.usage?.input_tokens ?? 0;
|
|
250
|
-
result.totalOutputTokens += response.usage?.output_tokens ?? 0;
|
|
251
|
-
result.totalCost += (0, tokens_1.estimateCost)(model, response.usage?.input_tokens ?? 0, response.usage?.output_tokens ?? 0);
|
|
252
|
-
const cleaned = text.replace(/^```json?\s*/m, '').replace(/```\s*$/m, '').trim();
|
|
227
|
+
result.totalInputTokens += response.inputTokens;
|
|
228
|
+
result.totalOutputTokens += response.outputTokens;
|
|
229
|
+
result.totalCost += (0, tokens_1.estimateCost)(model, response.inputTokens, response.outputTokens);
|
|
230
|
+
const cleaned = response.text.replace(/^```json?\s*/m, '').replace(/```\s*$/m, '').trim();
|
|
253
231
|
const parsed = JSON.parse(cleaned);
|
|
254
232
|
for (const item of parsed) {
|
|
255
233
|
const routeRow = batch.find(r => r.method === item.method && r.path === item.path);
|
|
@@ -266,8 +244,7 @@ async function analyzeRoutes(db, model, apiKey) {
|
|
|
266
244
|
}
|
|
267
245
|
return result;
|
|
268
246
|
}
|
|
269
|
-
async function analyzeFileSummaries(db, model,
|
|
270
|
-
const client = new sdk_1.default({ apiKey });
|
|
247
|
+
async function analyzeFileSummaries(db, model, provider) {
|
|
271
248
|
const result = { analyzed: 0, failed: 0, totalInputTokens: 0, totalOutputTokens: 0, totalCost: 0 };
|
|
272
249
|
const summaries = (0, queries_1.getAllFileSummaries)(db).filter(s => !s.semantic_analyzed_at);
|
|
273
250
|
if (summaries.length === 0)
|
|
@@ -293,19 +270,15 @@ async function analyzeFileSummaries(db, model, apiKey) {
|
|
|
293
270
|
};
|
|
294
271
|
}));
|
|
295
272
|
try {
|
|
296
|
-
const response = await
|
|
273
|
+
const response = await provider.chat({
|
|
297
274
|
model,
|
|
298
|
-
|
|
275
|
+
maxTokens: batch.length * 100,
|
|
299
276
|
messages: [{ role: 'user', content: prompt }],
|
|
300
277
|
});
|
|
301
|
-
|
|
302
|
-
|
|
303
|
-
|
|
304
|
-
|
|
305
|
-
result.totalInputTokens += response.usage?.input_tokens ?? 0;
|
|
306
|
-
result.totalOutputTokens += response.usage?.output_tokens ?? 0;
|
|
307
|
-
result.totalCost += (0, tokens_1.estimateCost)(model, response.usage?.input_tokens ?? 0, response.usage?.output_tokens ?? 0);
|
|
308
|
-
const cleaned = text.replace(/^```json?\s*/m, '').replace(/```\s*$/m, '').trim();
|
|
278
|
+
result.totalInputTokens += response.inputTokens;
|
|
279
|
+
result.totalOutputTokens += response.outputTokens;
|
|
280
|
+
result.totalCost += (0, tokens_1.estimateCost)(model, response.inputTokens, response.outputTokens);
|
|
281
|
+
const cleaned = response.text.replace(/^```json?\s*/m, '').replace(/```\s*$/m, '').trim();
|
|
309
282
|
const parsed = JSON.parse(cleaned);
|
|
310
283
|
for (const item of parsed) {
|
|
311
284
|
const summaryRow = batch.find(s => fileMap.get(s.file_id) === item.path);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"analyzer.js","sourceRoot":"","sources":["../../src/semantic/analyzer.ts"],"names":[],"mappings":";;;;;AA6BA,oCAsLC;AAYD,gDAEC;AAUD,oCAqDC;AAED,sCAoDC;AAED,oDA8DC;AAtZD,4DAA0C;AAG1C,2CAOuB;AACvB,qCAIkB;AAClB,2CAA4E;AAC5E,4CAA+C;AAC/C,4CAAyC;AAWlC,KAAK,UAAU,YAAY,CAChC,EAAqB,EACrB,UAAsD,EACtD,KAAa,EACb,MAAc;IAEd,MAAM,MAAM,GAAG,IAAI,aAAS,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC;IACzC,MAAM,MAAM,GAAkB,EAAE,QAAQ,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,gBAAgB,EAAE,CAAC,EAAE,iBAAiB,EAAE,CAAC,EAAE,SAAS,EAAE,CAAC,EAAE,CAAC;IAE7H,0CAA0C;IAC1C,MAAM,eAAe,GAAqB,EAAE,CAAC;IAC7C,MAAM,WAAW,GAAG,IAAI,GAAG,EAAmD,CAAC;IAE/E,KAAK,MAAM,IAAI,IAAI,UAAU,EAAE,CAAC;QAC9B,MAAM,EAAE,GAAG,IAAA,yBAAe,EAAC,EAAE,EAAE,IAAI,CAAC,WAAW,CAAC,CAAC;QACjD,IAAI,CAAC,EAAE,EAAE,CAAC;YACR,IAAA,8BAAoB,EAAC,EAAE,EAAE,IAAI,CAAC,EAAE,EAAE,QAAQ,CAAC,CAAC;YAC5C,MAAM,CAAC,MAAM,EAAE,CAAC;YAChB,SAAS;QACX,CAAC;QAED,6BAA6B;QAC7B,MAAM,IAAI,GAAG,EAAE,CAAC,OAAO,CAAC,qCAAqC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,OAAO,CAAQ,CAAC;QACtF,MAAM,QAAQ,GAAG,IAAI,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,IAAI,IAAI,EAAE,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC,UAAU,EAAE,CAAC;QAErF,YAAY;QACZ,MAAM,OAAO,GAAG,IAAA,oBAAU,EAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC;QACtC,MAAM,OAAO,GAAG,IAAA,0BAAgB,EAAC,EAAE,EAAE,EAAE,CAAC,IAAI,CAAC,CAAC;QAE9C,eAAe,CAAC,IAAI,CAAC;YACnB,aAAa,EAAE,EAAE,CAAC,IAAI;YACtB,QAAQ;YACR,SAAS,EAAE,EAAE,CAAC,SAAS;YACvB,IAAI,EAAE,EAAE,CAAC,IAAI;YACb,KAAK,EAAE,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,WAAW,CAAC;YACtC,SAAS,EAAE,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE;gBACzB,MAAM,QAAQ,GAAG,IAAA,yBAAe,EAAC,EAAE,EAAE,CAAC,CAAC,kBAAkB,CAAC,CAAC;gBAC3D,OAAO,QAAQ,EAAE,IAAI,IAAI,SAAS,CAAC;YACrC,CAAC,CAAC;SACH,CAAC,CAAC;QAEH,WAAW,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,EAAE,EAAE,OAAO,EAAE,IAAI,CAAC,EAAE,EAAE,UAAU,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC;IACpE,CAAC;IAED,IAAI,eAAe,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,MAAM,CAAC;IAEhD,MAAM,MAAM,GAAG,IAAA,yBAAgB,EAAC,eAAe,CAAC,CAAC;IACjD,MAAM,UAAU,GAAG,IAAA,mBAAU,EAAC,MAAM,CAAC,CAAC;IAEtC,gCAAgC;IAChC,MAAM,iBAAiB,GAAqB,EAAE,CAAC;IAC/C,MAAM,aAAa,GAAqB,EAAE,CAAC;IAE3C,KAAK,MAAM,EAAE,IAAI,eAAe,EAAE,CAAC;QACjC,MAAM,OAAO,GAAG,WAAW,CAAC,GAAG,CAAC,EAAE,CAAC,aAAa,CAAE,CAAC;QACnD,MAAM,MAAM,GAAG,IAAA,2BAAiB,EAAC,EAAE,EAAE,OAAO,CAAC,UAAU,EAAE,UAAU,CAAC,CAAC;QACrE,IAAI,MAAM,EAAE,CAAC;YACX,IAAI,CAAC;gBACH,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC;gBAChD,aAAa,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;gBAC3B,IAAA,8BAAoB,EAAC,EAAE,EAAE,OAAO,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;gBAClD,mBAAmB,CAAC,EAAE,EAAE,OAAO,CAAC,UAAU,EAAE,MAAM,CAAC,CAAC;gBACpD,MAAM,CAAC,MAAM,EAAE,CAAC;YAClB,CAAC;YAAC,MAAM,CAAC;gBACP,iBAAiB,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;YAC7B,CAAC;QACH,CAAC;aAAM,CAAC;YACN,iBAAiB,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QAC7B,CAAC;IACH,CAAC;IAED,iCAAiC;IACjC,IAAI,iBAAiB,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACnC,OAAO,MAAM,CAAC;IAChB,CAAC;IAED,2CAA2C;IAC3C,MAAM,WAAW,GAAG,IAAA,yBAAgB,EAAC,iBAAiB,CAAC,CAAC;IACxD,MAAM,eAAe,GAAG,IAAA,mBAAU,EAAC,WAAW,CAAC,CAAC;IAEhD,WAAW;IACX,IAAI,YAAoB,CAAC;IACzB,IAAI,WAAW,GAAG,CAAC,CAAC;IACpB,IAAI,YAAY,GAAG,CAAC,CAAC;IAErB,IAAI,CAAC;QACH,MAAM,QAAQ,GAAG,MAAM,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC;YAC5C,KAAK;YACL,UAAU,EAAE,iBAAiB,CAAC,MAAM,GAAG,GAAG;YAC1C,QAAQ,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,WAAW,EAAE,CAAC;SACnD,CAAC,CAAC;QAEH,YAAY,GAAG,QAAQ,CAAC,OAAO;aAC5B,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,CAAC,IAAI,KAAK,MAAM,CAAC;aACtC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAE,KAAa,CAAC,IAAI,CAAC;aACjC,IAAI,CAAC,EAAE,CAAC,CAAC;QAEZ,WAAW,GAAG,QAAQ,CAAC,KAAK,EAAE,YAAY,IAAI,CAAC,CAAC;QAChD,YAAY,GAAG,QAAQ,CAAC,KAAK,EAAE,aAAa,IAAI,CAAC,CAAC;QAClD,MAAM,CAAC,gBAAgB,IAAI,WAAW,CAAC;QACvC,MAAM,CAAC,iBAAiB,IAAI,YAAY,CAAC;QACzC,MAAM,CAAC,SAAS,IAAI,IAAA,qBAAY,EAAC,KAAK,EAAE,WAAW,EAAE,YAAY,CAAC,CAAC;IACrE,CAAC;IAAC,OAAO,GAAQ,EAAE,CAAC;QAClB,eAAM,CAAC,KAAK,CAAC,wBAAwB,GAAG,CAAC,OAAO,EAAE,CAAC,CAAC;QACpD,KAAK,MAAM,EAAE,IAAI,iBAAiB,EAAE,CAAC;YACnC,MAAM,OAAO,GAAG,WAAW,CAAC,GAAG,CAAC,EAAE,CAAC,aAAa,CAAC,CAAC;YAClD,IAAI,OAAO,EAAE,CAAC;gBACZ,IAAA,8BAAoB,EAAC,EAAE,EAAE,OAAO,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;gBACpD,MAAM,CAAC,MAAM,EAAE,CAAC;YAClB,CAAC;QACH,CAAC;QACD,OAAO,MAAM,CAAC;IAChB,CAAC;IAED,oBAAoB;IACpB,IAAI,UAAU,GAAG,IAAA,oCAAwB,EAAC,YAAY,CAAC,CAAC;IAExD,wBAAwB;IACxB,IAAI,CAAC,UAAU,CAAC,KAAK,IAAI,UAAU,CAAC,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACzD,eAAM,CAAC,IAAI,CAAC,wCAAwC,UAAU,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACpF,IAAI,CAAC;YACH,MAAM,aAAa,GAAG,MAAM,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC;gBACjD,KAAK;gBACL,UAAU,EAAE,iBAAiB,CAAC,MAAM,GAAG,GAAG;gBAC1C,QAAQ,EAAE;oBACR,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,WAAW,EAAE;oBACtC,EAAE,IAAI,EAAE,WAAW,EAAE,OAAO,EAAE,YAAY,EAAE;oBAC5C,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,2CAA2C,UAAU,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,gDAAgD,EAAE;iBACnJ;aACF,CAAC,CAAC;YAEH,MAAM,SAAS,GAAG,aAAa,CAAC,OAAO;iBACpC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,CAAC,IAAI,KAAK,MAAM,CAAC;iBACtC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAE,KAAa,CAAC,IAAI,CAAC;iBACjC,IAAI,CAAC,EAAE,CAAC,CAAC;YAEZ,MAAM,CAAC,gBAAgB,IAAI,aAAa,CAAC,KAAK,EAAE,YAAY,IAAI,CAAC,CAAC;YAClE,MAAM,CAAC,iBAAiB,IAAI,aAAa,CAAC,KAAK,EAAE,aAAa,IAAI,CAAC,CAAC;YACpE,MAAM,CAAC,SAAS,IAAI,IAAA,qBAAY,EAAC,KAAK,EAAE,aAAa,CAAC,KAAK,EAAE,YAAY,IAAI,CAAC,EAAE,aAAa,CAAC,KAAK,EAAE,aAAa,IAAI,CAAC,CAAC,CAAC;YAEzH,UAAU,GAAG,IAAA,oCAAwB,EAAC,SAAS,CAAC,CAAC;YACjD,IAAI,UAAU,CAAC,KAAK,IAAI,UAAU,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBACtD,YAAY,GAAG,SAAS,CAAC;YAC3B,CAAC;QACH,CAAC;QAAC,OAAO,QAAa,EAAE,CAAC;YACvB,eAAM,CAAC,KAAK,CAAC,iBAAiB,QAAQ,CAAC,OAAO,EAAE,CAAC,CAAC;QACpD,CAAC;IACH,CAAC;IAED,gBAAgB;IAChB,KAAK,MAAM,cAAc,IAAI,UAAU,CAAC,OAAO,EAAE,CAAC;QAChD,MAAM,OAAO,GAAG,WAAW,CAAC,GAAG,CAAC,cAAc,CAAC,aAAa,CAAC,CAAC;QAC9D,IAAI,CAAC,OAAO,EAAE,CAAC;YACb,eAAM,CAAC,IAAI,CAAC,kCAAkC,cAAc,CAAC,aAAa,EAAE,CAAC,CAAC;YAC9E,SAAS;QACX,CAAC;QAED,mBAAmB,CAAC,EAAE,EAAE,OAAO,CAAC,UAAU,EAAE,cAAc,CAAC,CAAC;QAC5D,IAAA,8BAAoB,EAAC,EAAE,EAAE,OAAO,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;QAElD,mBAAmB;QACnB,IAAA,8BAAoB,EAClB,EAAE,EAAE,OAAO,CAAC,UAAU,EAAE,eAAe,EAAE,KAAK,EAC9C,WAAW,EAAE,YAAY,EAAE,MAAM,CAAC,SAAS,EAC3C,IAAI,CAAC,SAAS,CAAC,cAAc,CAAC,CAC/B,CAAC;QAEF,MAAM,CAAC,QAAQ,EAAE,CAAC;IACpB,CAAC;IAED,+BAA+B;IAC/B,KAAK,MAAM,EAAE,IAAI,iBAAiB,EAAE,CAAC;QACnC,MAAM,OAAO,GAAG,WAAW,CAAC,GAAG,CAAC,EAAE,CAAC,aAAa,CAAC,CAAC;QAClD,IAAI,CAAC,OAAO;YAAE,SAAS;QACvB,MAAM,OAAO,GAAG,UAAU,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,aAAa,KAAK,EAAE,CAAC,aAAa,CAAC,CAAC;QACnF,IAAI,CAAC,OAAO,EAAE,CAAC;YACb,IAAA,8BAAoB,EAAC,EAAE,EAAE,OAAO,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;YACpD,MAAM,CAAC,MAAM,EAAE,CAAC;QAClB,CAAC;IACH,CAAC;IAED,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,SAAS,mBAAmB,CAAC,EAAqB,EAAE,UAAkB,EAAE,MAAsB;IAC5F,IAAA,8BAAoB,EAAC,EAAE,EAAE,UAAU,EAAE;QACnC,OAAO,EAAE,MAAM,CAAC,OAAO;QACvB,gBAAgB,EAAE,MAAM,CAAC,QAAQ;QACjC,iBAAiB,EAAE,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,YAAY,CAAC;QACtD,MAAM,EAAE,MAAM,CAAC,MAAM;QACrB,UAAU,EAAE,MAAM,CAAC,UAAU;KAC9B,CAAC,CAAC;AACL,CAAC;AAED,SAAgB,kBAAkB,CAAC,EAAqB;IACtD,IAAA,8BAAoB,EAAC,EAAE,CAAC,CAAC;AAC3B,CAAC;AAUM,KAAK,UAAU,YAAY,CAChC,EAAqB,EACrB,KAAa,EACb,MAAc;IAEd,MAAM,MAAM,GAAG,IAAI,aAAS,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC;IACzC,MAAM,MAAM,GAAwB,EAAE,QAAQ,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,gBAAgB,EAAE,CAAC,EAAE,iBAAiB,EAAE,CAAC,EAAE,SAAS,EAAE,CAAC,EAAE,CAAC;IAExH,MAAM,KAAK,GAAG,IAAA,qBAAW,EAAC,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,oBAAoB,CAAC,CAAC;IACnE,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,MAAM,CAAC;IAEtC,2BAA2B;IAC3B,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC;QAC1C,MAAM,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,CAAC;QACrC,MAAM,MAAM,GAAG,IAAA,gCAAuB,EAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;YACrD,IAAI,EAAE,CAAC,CAAC,IAAI;YACZ,IAAI,EAAE,CAAC,CAAC,IAAI;YACZ,SAAS,EAAE,CAAC,CAAC,SAAS;SACvB,CAAC,CAAC,CAAC,CAAC;QAEL,IAAI,CAAC;YACH,MAAM,QAAQ,GAAG,MAAM,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC;gBAC5C,KAAK;gBACL,UAAU,EAAE,KAAK,CAAC,MAAM,GAAG,GAAG;gBAC9B,QAAQ,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,CAAC;aAC9C,CAAC,CAAC;YAEH,MAAM,IAAI,GAAG,QAAQ,CAAC,OAAO;iBAC1B,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,CAAC,IAAI,KAAK,MAAM,CAAC;iBACtC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAE,KAAa,CAAC,IAAI,CAAC;iBACjC,IAAI,CAAC,EAAE,CAAC,CAAC;YAEZ,MAAM,CAAC,gBAAgB,IAAI,QAAQ,CAAC,KAAK,EAAE,YAAY,IAAI,CAAC,CAAC;YAC7D,MAAM,CAAC,iBAAiB,IAAI,QAAQ,CAAC,KAAK,EAAE,aAAa,IAAI,CAAC,CAAC;YAC/D,MAAM,CAAC,SAAS,IAAI,IAAA,qBAAY,EAAC,KAAK,EAAE,QAAQ,CAAC,KAAK,EAAE,YAAY,IAAI,CAAC,EAAE,QAAQ,CAAC,KAAK,EAAE,aAAa,IAAI,CAAC,CAAC,CAAC;YAE/G,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,eAAe,EAAE,EAAE,CAAC,CAAC,OAAO,CAAC,UAAU,EAAE,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;YACjF,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAA6C,CAAC;YAE/E,KAAK,MAAM,IAAI,IAAI,MAAM,EAAE,CAAC;gBAC1B,MAAM,OAAO,GAAG,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,IAAI,CAAC,CAAC;gBACtD,IAAI,OAAO,EAAE,CAAC;oBACZ,IAAA,2BAAiB,EAAC,EAAE,EAAE,OAAO,CAAC,EAAE,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;oBAChD,MAAM,CAAC,QAAQ,EAAE,CAAC;gBACpB,CAAC;YACH,CAAC;QACH,CAAC;QAAC,OAAO,GAAQ,EAAE,CAAC;YAClB,eAAM,CAAC,KAAK,CAAC,yBAAyB,GAAG,CAAC,OAAO,EAAE,CAAC,CAAC;YACrD,MAAM,CAAC,MAAM,IAAI,KAAK,CAAC,MAAM,CAAC;QAChC,CAAC;IACH,CAAC;IAED,OAAO,MAAM,CAAC;AAChB,CAAC;AAEM,KAAK,UAAU,aAAa,CACjC,EAAqB,EACrB,KAAa,EACb,MAAc;IAEd,MAAM,MAAM,GAAG,IAAI,aAAS,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC;IACzC,MAAM,MAAM,GAAwB,EAAE,QAAQ,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,gBAAgB,EAAE,CAAC,EAAE,iBAAiB,EAAE,CAAC,EAAE,SAAS,EAAE,CAAC,EAAE,CAAC;IAExH,MAAM,MAAM,GAAG,IAAA,sBAAY,EAAC,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,oBAAoB,CAAC,CAAC;IACrE,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,MAAM,CAAC;IAEvC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC;QAC3C,MAAM,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,CAAC;QACtC,MAAM,MAAM,GAAG,IAAA,iCAAwB,EAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;YACtD,MAAM,EAAE,CAAC,CAAC,MAAM;YAChB,IAAI,EAAE,CAAC,CAAC,IAAI;YACZ,YAAY,EAAE,CAAC,CAAC,YAAY;SAC7B,CAAC,CAAC,CAAC,CAAC;QAEL,IAAI,CAAC;YACH,MAAM,QAAQ,GAAG,MAAM,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC;gBAC5C,KAAK;gBACL,UAAU,EAAE,KAAK,CAAC,MAAM,GAAG,GAAG;gBAC9B,QAAQ,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,CAAC;aAC9C,CAAC,CAAC;YAEH,MAAM,IAAI,GAAG,QAAQ,CAAC,OAAO;iBAC1B,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,CAAC,IAAI,KAAK,MAAM,CAAC;iBACtC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAE,KAAa,CAAC,IAAI,CAAC;iBACjC,IAAI,CAAC,EAAE,CAAC,CAAC;YAEZ,MAAM,CAAC,gBAAgB,IAAI,QAAQ,CAAC,KAAK,EAAE,YAAY,IAAI,CAAC,CAAC;YAC7D,MAAM,CAAC,iBAAiB,IAAI,QAAQ,CAAC,KAAK,EAAE,aAAa,IAAI,CAAC,CAAC;YAC/D,MAAM,CAAC,SAAS,IAAI,IAAA,qBAAY,EAAC,KAAK,EAAE,QAAQ,CAAC,KAAK,EAAE,YAAY,IAAI,CAAC,EAAE,QAAQ,CAAC,KAAK,EAAE,aAAa,IAAI,CAAC,CAAC,CAAC;YAE/G,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,eAAe,EAAE,EAAE,CAAC,CAAC,OAAO,CAAC,UAAU,EAAE,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;YACjF,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAA6D,CAAC;YAE/F,KAAK,MAAM,IAAI,IAAI,MAAM,EAAE,CAAC;gBAC1B,MAAM,QAAQ,GAAG,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,KAAK,IAAI,CAAC,MAAM,IAAI,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,IAAI,CAAC,CAAC;gBACnF,IAAI,QAAQ,EAAE,CAAC;oBACb,IAAA,4BAAkB,EAAC,EAAE,EAAE,QAAQ,CAAC,EAAE,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;oBAClD,MAAM,CAAC,QAAQ,EAAE,CAAC;gBACpB,CAAC;YACH,CAAC;QACH,CAAC;QAAC,OAAO,GAAQ,EAAE,CAAC;YAClB,eAAM,CAAC,KAAK,CAAC,0BAA0B,GAAG,CAAC,OAAO,EAAE,CAAC,CAAC;YACtD,MAAM,CAAC,MAAM,IAAI,KAAK,CAAC,MAAM,CAAC;QAChC,CAAC;IACH,CAAC;IAED,OAAO,MAAM,CAAC;AAChB,CAAC;AAEM,KAAK,UAAU,oBAAoB,CACxC,EAAqB,EACrB,KAAa,EACb,MAAc;IAEd,MAAM,MAAM,GAAG,IAAI,aAAS,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC;IACzC,MAAM,MAAM,GAAwB,EAAE,QAAQ,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,gBAAgB,EAAE,CAAC,EAAE,iBAAiB,EAAE,CAAC,EAAE,SAAS,EAAE,CAAC,EAAE,CAAC;IAExH,MAAM,SAAS,GAAG,IAAA,6BAAmB,EAAC,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,oBAAoB,CAAC,CAAC;IAC/E,IAAI,SAAS,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,MAAM,CAAC;IAE1C,MAAM,QAAQ,GAAG,IAAA,qBAAW,EAAC,EAAE,CAAC,CAAC;IACjC,MAAM,OAAO,GAAG,IAAI,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAE3D,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,SAAS,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC;QAC9C,MAAM,KAAK,GAAG,SAAS,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,CAAC;QACzC,MAAM,MAAM,GAAG,IAAA,+BAAsB,EAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE;YAClD,IAAI,OAAO,GAAa,EAAE,CAAC;YAC3B,IAAI,CAAC;gBAAC,IAAI,CAAC,CAAC,YAAY;oBAAE,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC;YAAC,CAAC;YAAC,MAAM,CAAC,CAAA,CAAC;YAC1E,OAAO;gBACL,IAAI,EAAE,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,SAAS;gBACzC,OAAO;gBACP,cAAc,EAAE,CAAC,CAAC,cAAc;gBAChC,UAAU,EAAE,CAAC,CAAC,UAAU;gBACxB,WAAW,EAAE,CAAC,CAAC,WAAW;gBAC1B,GAAG,EAAE,CAAC,CAAC,GAAG;aACX,CAAC;QACJ,CAAC,CAAC,CAAC,CAAC;QAEJ,IAAI,CAAC;YACH,MAAM,QAAQ,GAAG,MAAM,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC;gBAC5C,KAAK;gBACL,UAAU,EAAE,KAAK,CAAC,MAAM,GAAG,GAAG;gBAC9B,QAAQ,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,CAAC;aAC9C,CAAC,CAAC;YAEH,MAAM,IAAI,GAAG,QAAQ,CAAC,OAAO;iBAC1B,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,CAAC,IAAI,KAAK,MAAM,CAAC;iBACtC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAE,KAAa,CAAC,IAAI,CAAC;iBACjC,IAAI,CAAC,EAAE,CAAC,CAAC;YAEZ,MAAM,CAAC,gBAAgB,IAAI,QAAQ,CAAC,KAAK,EAAE,YAAY,IAAI,CAAC,CAAC;YAC7D,MAAM,CAAC,iBAAiB,IAAI,QAAQ,CAAC,KAAK,EAAE,aAAa,IAAI,CAAC,CAAC;YAC/D,MAAM,CAAC,SAAS,IAAI,IAAA,qBAAY,EAAC,KAAK,EAAE,QAAQ,CAAC,KAAK,EAAE,YAAY,IAAI,CAAC,EAAE,QAAQ,CAAC,KAAK,EAAE,aAAa,IAAI,CAAC,CAAC,CAAC;YAE/G,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,eAAe,EAAE,EAAE,CAAC,CAAC,OAAO,CAAC,UAAU,EAAE,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;YACjF,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAA6C,CAAC;YAE/E,KAAK,MAAM,IAAI,IAAI,MAAM,EAAE,CAAC;gBAC1B,MAAM,UAAU,GAAG,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,IAAI,CAAC,IAAI,CAAC,CAAC;gBACzE,IAAI,UAAU,EAAE,CAAC;oBACf,IAAA,kCAAwB,EAAC,EAAE,EAAE,UAAU,CAAC,EAAE,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;oBAC1D,MAAM,CAAC,QAAQ,EAAE,CAAC;gBACpB,CAAC;YACH,CAAC;QACH,CAAC;QAAC,OAAO,GAAQ,EAAE,CAAC;YAClB,eAAM,CAAC,KAAK,CAAC,iCAAiC,GAAG,CAAC,OAAO,EAAE,CAAC,CAAC;YAC7D,MAAM,CAAC,MAAM,IAAI,KAAK,CAAC,MAAM,CAAC;QAChC,CAAC;IACH,CAAC;IAED,OAAO,MAAM,CAAC;AAChB,CAAC"}
|
|
1
|
+
{"version":3,"file":"analyzer.js","sourceRoot":"","sources":["../../src/semantic/analyzer.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tokens.d.ts","sourceRoot":"","sources":["../../src/utils/tokens.ts"],"names":[],"mappings":"AAGA,wBAAgB,cAAc,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAEnD;
|
|
1
|
+
{"version":3,"file":"tokens.d.ts","sourceRoot":"","sources":["../../src/utils/tokens.ts"],"names":[],"mappings":"AAGA,wBAAgB,cAAc,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAEnD;AAgBD,wBAAgB,YAAY,CAC1B,KAAK,EAAE,MAAM,EACb,WAAW,EAAE,MAAM,EACnB,YAAY,EAAE,MAAM,GACnB,MAAM,CAKR"}
|
package/dist/utils/tokens.js
CHANGED
|
@@ -9,8 +9,14 @@ function estimateTokens(text) {
|
|
|
9
9
|
}
|
|
10
10
|
// Pricing per million tokens (as of 2025)
|
|
11
11
|
const PRICING = {
|
|
12
|
+
// Anthropic
|
|
12
13
|
'claude-haiku-4-5-20251001': { input: 0.80, output: 4.00 },
|
|
13
14
|
'claude-sonnet-4-5-20250929': { input: 3.00, output: 15.00 },
|
|
15
|
+
// Gemini
|
|
16
|
+
'gemini-2.0-flash': { input: 0.10, output: 0.40 },
|
|
17
|
+
'gemini-2.5-pro-preview-06-05': { input: 1.25, output: 10.00 },
|
|
18
|
+
// OpenRouter (approximate — varies by underlying model)
|
|
19
|
+
'anthropic/claude-3.5-sonnet': { input: 3.00, output: 15.00 },
|
|
14
20
|
};
|
|
15
21
|
function estimateCost(model, inputTokens, outputTokens) {
|
|
16
22
|
const price = PRICING[model] ?? { input: 1.0, output: 5.0 };
|
package/dist/utils/tokens.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tokens.js","sourceRoot":"","sources":["../../src/utils/tokens.ts"],"names":[],"mappings":";AAAA,yDAAyD;AACzD,6DAA6D;;AAE7D,wCAEC;
|
|
1
|
+
{"version":3,"file":"tokens.js","sourceRoot":"","sources":["../../src/utils/tokens.ts"],"names":[],"mappings":";AAAA,yDAAyD;AACzD,6DAA6D;;AAE7D,wCAEC;AAgBD,oCASC;AA3BD,SAAgB,cAAc,CAAC,IAAY;IACzC,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;AACpC,CAAC;AAED,0CAA0C;AAC1C,MAAM,OAAO,GAAsD;IACjE,YAAY;IACZ,2BAA2B,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE;IAC1D,4BAA4B,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE;IAE5D,SAAS;IACT,kBAAkB,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE;IACjD,8BAA8B,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE;IAE9D,wDAAwD;IACxD,6BAA6B,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE;CAC9D,CAAC;AAEF,SAAgB,YAAY,CAC1B,KAAa,EACb,WAAmB,EACnB,YAAoB;IAEpB,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC,IAAI,EAAE,KAAK,EAAE,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC;IAC5D,MAAM,SAAS,GAAG,CAAC,WAAW,GAAG,SAAS,CAAC,GAAG,KAAK,CAAC,KAAK,CAAC;IAC1D,MAAM,UAAU,GAAG,CAAC,YAAY,GAAG,SAAS,CAAC,GAAG,KAAK,CAAC,MAAM,CAAC;IAC7D,OAAO,SAAS,GAAG,UAAU,CAAC;AAChC,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "structx",
|
|
3
|
-
"version": "
|
|
3
|
+
"version": "3.0.0",
|
|
4
4
|
"main": "dist/cli.js",
|
|
5
5
|
"bin": {
|
|
6
6
|
"structx": "dist/cli.js"
|
|
@@ -25,9 +25,11 @@
|
|
|
25
25
|
"description": "Graph-powered code intelligence CLI for TypeScript",
|
|
26
26
|
"dependencies": {
|
|
27
27
|
"@anthropic-ai/sdk": "^0.74.0",
|
|
28
|
+
"@google/generative-ai": "^0.24.1",
|
|
28
29
|
"better-sqlite3": "^12.6.2",
|
|
29
30
|
"commander": "^14.0.3",
|
|
30
31
|
"dotenv": "^17.2.4",
|
|
32
|
+
"openai": "^6.21.0",
|
|
31
33
|
"ts-morph": "^27.0.2"
|
|
32
34
|
},
|
|
33
35
|
"devDependencies": {
|
|
@@ -1,70 +0,0 @@
|
|
|
1
|
-
# StructX — Code Intelligence Graph (MANDATORY)
|
|
2
|
-
|
|
3
|
-
This project uses **StructX**, a graph-powered code intelligence tool for TypeScript.
|
|
4
|
-
StructX maintains a knowledge graph of the codebase including functions, types, routes,
|
|
5
|
-
constants, and file summaries. **You MUST use StructX as your primary source of codebase
|
|
6
|
-
understanding. Do NOT read raw source files to learn about the codebase.**
|
|
7
|
-
|
|
8
|
-
## Mandatory Workflow
|
|
9
|
-
|
|
10
|
-
### Step 1: Initialize (ALWAYS do this first)
|
|
11
|
-
Run `npx structx status` to check the graph state.
|
|
12
|
-
- If it says "not initialized", run `npx structx setup .`
|
|
13
|
-
- If Functions/Types/Routes counts are 0, run `npx structx setup .`
|
|
14
|
-
- **Do NOT proceed to any code task until StructX is initialized and populated.**
|
|
15
|
-
|
|
16
|
-
### Step 2: Understand the codebase via StructX (NEVER skip this)
|
|
17
|
-
Before writing ANY code, you MUST query StructX to understand the codebase:
|
|
18
|
-
```
|
|
19
|
-
npx structx overview --repo .
|
|
20
|
-
npx structx ask "what types and interfaces exist?" --repo .
|
|
21
|
-
npx structx ask "what routes/endpoints exist?" --repo .
|
|
22
|
-
npx structx ask "how does <relevant feature> work?" --repo .
|
|
23
|
-
```
|
|
24
|
-
**You are FORBIDDEN from reading .ts source files to understand the codebase architecture,
|
|
25
|
-
discover what functions exist, learn about types, or understand how features work.
|
|
26
|
-
StructX provides all of this. Use it.**
|
|
27
|
-
|
|
28
|
-
### Step 3: Read source files ONLY for editing
|
|
29
|
-
You may ONLY use raw file reads (Read/cat) when you have ALREADY queried StructX and
|
|
30
|
-
now need to see the exact code at a specific location to make an edit. The workflow is:
|
|
31
|
-
1. Ask StructX what exists and where it is
|
|
32
|
-
2. StructX tells you the file path and line numbers
|
|
33
|
-
3. THEN read that specific file to make your edit
|
|
34
|
-
|
|
35
|
-
**Reading source files to "explore" or "understand" the codebase is PROHIBITED.
|
|
36
|
-
That is what StructX is for.**
|
|
37
|
-
|
|
38
|
-
### Step 4: After making changes
|
|
39
|
-
After editing any TypeScript files:
|
|
40
|
-
```
|
|
41
|
-
npx structx ingest .
|
|
42
|
-
npx structx analyze . --yes
|
|
43
|
-
```
|
|
44
|
-
|
|
45
|
-
### Step 5: Impact analysis before modifying existing code
|
|
46
|
-
Before changing any existing function, type, or route:
|
|
47
|
-
```
|
|
48
|
-
npx structx ask "what breaks if I change <name>?" --repo .
|
|
49
|
-
```
|
|
50
|
-
|
|
51
|
-
## Available Commands
|
|
52
|
-
|
|
53
|
-
| Command | Description |
|
|
54
|
-
|---------|-------------|
|
|
55
|
-
| `npx structx status` | Check graph state — ALWAYS run first |
|
|
56
|
-
| `npx structx setup .` | Full bootstrap (init + ingest + analyze) |
|
|
57
|
-
| `npx structx overview --repo .` | Full codebase summary in one shot |
|
|
58
|
-
| `npx structx ask "<question>" --repo .` | Query the knowledge graph |
|
|
59
|
-
| `npx structx ingest .` | Re-parse codebase after changes |
|
|
60
|
-
| `npx structx analyze . --yes` | Run semantic analysis on new/changed entities |
|
|
61
|
-
|
|
62
|
-
## Rules Summary
|
|
63
|
-
|
|
64
|
-
1. **ALWAYS** run `structx status` at session start
|
|
65
|
-
2. **ALWAYS** run `structx setup .` if not initialized
|
|
66
|
-
3. **ALWAYS** use `structx ask` or `structx overview` to understand the codebase
|
|
67
|
-
4. **NEVER** read .ts files to explore/understand architecture — use StructX
|
|
68
|
-
5. **ONLY** read .ts files when you know exactly what file+line to edit (from StructX output)
|
|
69
|
-
6. **ALWAYS** run `structx ingest .` after making code changes
|
|
70
|
-
7. **ALWAYS** run impact analysis before modifying existing functions
|
|
@@ -1,70 +0,0 @@
|
|
|
1
|
-
# StructX — Code Intelligence Graph (MANDATORY)
|
|
2
|
-
|
|
3
|
-
This project uses **StructX**, a graph-powered code intelligence tool for TypeScript.
|
|
4
|
-
StructX maintains a knowledge graph of the codebase including functions, types, routes,
|
|
5
|
-
constants, and file summaries. **You MUST use StructX as your primary source of codebase
|
|
6
|
-
understanding. Do NOT read raw source files to learn about the codebase.**
|
|
7
|
-
|
|
8
|
-
## Mandatory Workflow
|
|
9
|
-
|
|
10
|
-
### Step 1: Initialize (ALWAYS do this first)
|
|
11
|
-
Run `npx structx status` to check the graph state.
|
|
12
|
-
- If it says "not initialized", run `npx structx setup .`
|
|
13
|
-
- If Functions/Types/Routes counts are 0, run `npx structx setup .`
|
|
14
|
-
- **Do NOT proceed to any code task until StructX is initialized and populated.**
|
|
15
|
-
|
|
16
|
-
### Step 2: Understand the codebase via StructX (NEVER skip this)
|
|
17
|
-
Before writing ANY code, you MUST query StructX to understand the codebase:
|
|
18
|
-
```
|
|
19
|
-
npx structx overview --repo .
|
|
20
|
-
npx structx ask "what types and interfaces exist?" --repo .
|
|
21
|
-
npx structx ask "what routes/endpoints exist?" --repo .
|
|
22
|
-
npx structx ask "how does <relevant feature> work?" --repo .
|
|
23
|
-
```
|
|
24
|
-
**You are FORBIDDEN from reading .ts source files to understand the codebase architecture,
|
|
25
|
-
discover what functions exist, learn about types, or understand how features work.
|
|
26
|
-
StructX provides all of this. Use it.**
|
|
27
|
-
|
|
28
|
-
### Step 3: Read source files ONLY for editing
|
|
29
|
-
You may ONLY use raw file reads when you have ALREADY queried StructX and now need to
|
|
30
|
-
see the exact code at a specific location to make an edit. The workflow is:
|
|
31
|
-
1. Ask StructX what exists and where it is
|
|
32
|
-
2. StructX tells you the file path and line numbers
|
|
33
|
-
3. THEN read that specific file to make your edit
|
|
34
|
-
|
|
35
|
-
**Reading source files to "explore" or "understand" the codebase is PROHIBITED.
|
|
36
|
-
That is what StructX is for.**
|
|
37
|
-
|
|
38
|
-
### Step 4: After making changes
|
|
39
|
-
After editing any TypeScript files:
|
|
40
|
-
```
|
|
41
|
-
npx structx ingest .
|
|
42
|
-
npx structx analyze . --yes
|
|
43
|
-
```
|
|
44
|
-
|
|
45
|
-
### Step 5: Impact analysis before modifying existing code
|
|
46
|
-
Before changing any existing function, type, or route:
|
|
47
|
-
```
|
|
48
|
-
npx structx ask "what breaks if I change <name>?" --repo .
|
|
49
|
-
```
|
|
50
|
-
|
|
51
|
-
## Available Commands
|
|
52
|
-
|
|
53
|
-
| Command | Description |
|
|
54
|
-
|---------|-------------|
|
|
55
|
-
| `npx structx status` | Check graph state — ALWAYS run first |
|
|
56
|
-
| `npx structx setup .` | Full bootstrap (init + ingest + analyze) |
|
|
57
|
-
| `npx structx overview --repo .` | Full codebase summary in one shot |
|
|
58
|
-
| `npx structx ask "<question>" --repo .` | Query the knowledge graph |
|
|
59
|
-
| `npx structx ingest .` | Re-parse codebase after changes |
|
|
60
|
-
| `npx structx analyze . --yes` | Run semantic analysis on new/changed entities |
|
|
61
|
-
|
|
62
|
-
## Rules Summary
|
|
63
|
-
|
|
64
|
-
1. **ALWAYS** run `structx status` at session start
|
|
65
|
-
2. **ALWAYS** run `structx setup .` if not initialized
|
|
66
|
-
3. **ALWAYS** use `structx ask` or `structx overview` to understand the codebase
|
|
67
|
-
4. **NEVER** read .ts files to explore/understand architecture — use StructX
|
|
68
|
-
5. **ONLY** read .ts files when you know exactly what file+line to edit (from StructX output)
|
|
69
|
-
6. **ALWAYS** run `structx ingest .` after making code changes
|
|
70
|
-
7. **ALWAYS** run impact analysis before modifying existing functions
|
|
@@ -1,70 +0,0 @@
|
|
|
1
|
-
# StructX — Code Intelligence Graph (MANDATORY)
|
|
2
|
-
|
|
3
|
-
This project uses **StructX**, a graph-powered code intelligence tool for TypeScript.
|
|
4
|
-
StructX maintains a knowledge graph of the codebase including functions, types, routes,
|
|
5
|
-
constants, and file summaries. **You MUST use StructX as your primary source of codebase
|
|
6
|
-
understanding. Do NOT read raw source files to learn about the codebase.**
|
|
7
|
-
|
|
8
|
-
## Mandatory Workflow
|
|
9
|
-
|
|
10
|
-
### Step 1: Initialize (ALWAYS do this first)
|
|
11
|
-
Run `npx structx status` to check the graph state.
|
|
12
|
-
- If it says "not initialized", run `npx structx setup .`
|
|
13
|
-
- If Functions/Types/Routes counts are 0, run `npx structx setup .`
|
|
14
|
-
- **Do NOT proceed to any code task until StructX is initialized and populated.**
|
|
15
|
-
|
|
16
|
-
### Step 2: Understand the codebase via StructX (NEVER skip this)
|
|
17
|
-
Before writing ANY code, you MUST query StructX to understand the codebase:
|
|
18
|
-
```
|
|
19
|
-
npx structx overview --repo .
|
|
20
|
-
npx structx ask "what types and interfaces exist?" --repo .
|
|
21
|
-
npx structx ask "what routes/endpoints exist?" --repo .
|
|
22
|
-
npx structx ask "how does <relevant feature> work?" --repo .
|
|
23
|
-
```
|
|
24
|
-
**You are FORBIDDEN from reading .ts source files to understand the codebase architecture,
|
|
25
|
-
discover what functions exist, learn about types, or understand how features work.
|
|
26
|
-
StructX provides all of this. Use it.**
|
|
27
|
-
|
|
28
|
-
### Step 3: Read source files ONLY for editing
|
|
29
|
-
You may ONLY use raw file reads when you have ALREADY queried StructX and now need to
|
|
30
|
-
see the exact code at a specific location to make an edit. The workflow is:
|
|
31
|
-
1. Ask StructX what exists and where it is
|
|
32
|
-
2. StructX tells you the file path and line numbers
|
|
33
|
-
3. THEN read that specific file to make your edit
|
|
34
|
-
|
|
35
|
-
**Reading source files to "explore" or "understand" the codebase is PROHIBITED.
|
|
36
|
-
That is what StructX is for.**
|
|
37
|
-
|
|
38
|
-
### Step 4: After making changes
|
|
39
|
-
After editing any TypeScript files:
|
|
40
|
-
```
|
|
41
|
-
npx structx ingest .
|
|
42
|
-
npx structx analyze . --yes
|
|
43
|
-
```
|
|
44
|
-
|
|
45
|
-
### Step 5: Impact analysis before modifying existing code
|
|
46
|
-
Before changing any existing function, type, or route:
|
|
47
|
-
```
|
|
48
|
-
npx structx ask "what breaks if I change <name>?" --repo .
|
|
49
|
-
```
|
|
50
|
-
|
|
51
|
-
## Available Commands
|
|
52
|
-
|
|
53
|
-
| Command | Description |
|
|
54
|
-
|---------|-------------|
|
|
55
|
-
| `npx structx status` | Check graph state — ALWAYS run first |
|
|
56
|
-
| `npx structx setup .` | Full bootstrap (init + ingest + analyze) |
|
|
57
|
-
| `npx structx overview --repo .` | Full codebase summary in one shot |
|
|
58
|
-
| `npx structx ask "<question>" --repo .` | Query the knowledge graph |
|
|
59
|
-
| `npx structx ingest .` | Re-parse codebase after changes |
|
|
60
|
-
| `npx structx analyze . --yes` | Run semantic analysis on new/changed entities |
|
|
61
|
-
|
|
62
|
-
## Rules Summary
|
|
63
|
-
|
|
64
|
-
1. **ALWAYS** run `structx status` at session start
|
|
65
|
-
2. **ALWAYS** run `structx setup .` if not initialized
|
|
66
|
-
3. **ALWAYS** use `structx ask` or `structx overview` to understand the codebase
|
|
67
|
-
4. **NEVER** read .ts files to explore/understand architecture — use StructX
|
|
68
|
-
5. **ONLY** read .ts files when you know exactly what file+line to edit (from StructX output)
|
|
69
|
-
6. **ALWAYS** run `structx ingest .` after making code changes
|
|
70
|
-
7. **ALWAYS** run impact analysis before modifying existing functions
|
|
@@ -1,68 +0,0 @@
|
|
|
1
|
-
# StructX — Code Intelligence Graph (MANDATORY)
|
|
2
|
-
|
|
3
|
-
This project uses **StructX**, a graph-powered code intelligence tool for TypeScript.
|
|
4
|
-
StructX maintains a knowledge graph of the codebase including functions, types, routes,
|
|
5
|
-
constants, and file summaries. **You MUST use StructX as your primary source of codebase
|
|
6
|
-
understanding. Do NOT read raw source files to learn about the codebase.**
|
|
7
|
-
|
|
8
|
-
## Mandatory Workflow
|
|
9
|
-
|
|
10
|
-
### Step 1: Initialize (ALWAYS do this first)
|
|
11
|
-
Run `npx structx status` to check the graph state.
|
|
12
|
-
- If it says "not initialized", run `npx structx setup .`
|
|
13
|
-
- If Functions/Types/Routes counts are 0, run `npx structx setup .`
|
|
14
|
-
- **Do NOT proceed to any code task until StructX is initialized and populated.**
|
|
15
|
-
|
|
16
|
-
### Step 2: Understand the codebase via StructX (NEVER skip this)
|
|
17
|
-
Before writing ANY code, you MUST query StructX to understand the codebase:
|
|
18
|
-
```
|
|
19
|
-
npx structx overview --repo .
|
|
20
|
-
npx structx ask "what types and interfaces exist?" --repo .
|
|
21
|
-
npx structx ask "what routes/endpoints exist?" --repo .
|
|
22
|
-
npx structx ask "how does <relevant feature> work?" --repo .
|
|
23
|
-
```
|
|
24
|
-
**You are FORBIDDEN from reading .ts source files to understand the codebase architecture,
|
|
25
|
-
discover what functions exist, learn about types, or understand how features work.
|
|
26
|
-
StructX provides all of this. Use it.**
|
|
27
|
-
|
|
28
|
-
### Step 3: Read source files ONLY for editing
|
|
29
|
-
You may ONLY use raw file reads when you have ALREADY queried StructX and now need to
|
|
30
|
-
see the exact code at a specific location to make an edit. The workflow is:
|
|
31
|
-
1. Ask StructX what exists and where it is
|
|
32
|
-
2. StructX tells you the file path and line numbers
|
|
33
|
-
3. THEN read that specific file to make your edit
|
|
34
|
-
|
|
35
|
-
**Reading source files to "explore" or "understand" the codebase is PROHIBITED.
|
|
36
|
-
That is what StructX is for.**
|
|
37
|
-
|
|
38
|
-
### Step 4: After making changes
|
|
39
|
-
After editing any TypeScript files:
|
|
40
|
-
```
|
|
41
|
-
npx structx ingest .
|
|
42
|
-
npx structx analyze . --yes
|
|
43
|
-
```
|
|
44
|
-
|
|
45
|
-
### Step 5: Impact analysis before modifying existing code
|
|
46
|
-
Before changing any existing function, type, or route:
|
|
47
|
-
```
|
|
48
|
-
npx structx ask "what breaks if I change <name>?" --repo .
|
|
49
|
-
```
|
|
50
|
-
|
|
51
|
-
## Available Commands
|
|
52
|
-
|
|
53
|
-
- `npx structx status` — Check graph state — ALWAYS run first
|
|
54
|
-
- `npx structx setup .` — Full bootstrap (init + ingest + analyze)
|
|
55
|
-
- `npx structx overview --repo .` — Full codebase summary in one shot
|
|
56
|
-
- `npx structx ask "<question>" --repo .` — Query the knowledge graph
|
|
57
|
-
- `npx structx ingest .` — Re-parse codebase after changes
|
|
58
|
-
- `npx structx analyze . --yes` — Run semantic analysis on new/changed entities
|
|
59
|
-
|
|
60
|
-
## Rules Summary
|
|
61
|
-
|
|
62
|
-
1. **ALWAYS** run `structx status` at session start
|
|
63
|
-
2. **ALWAYS** run `structx setup .` if not initialized
|
|
64
|
-
3. **ALWAYS** use `structx ask` or `structx overview` to understand the codebase
|
|
65
|
-
4. **NEVER** read .ts files to explore/understand architecture — use StructX
|
|
66
|
-
5. **ONLY** read .ts files when you know exactly what file+line to edit (from StructX output)
|
|
67
|
-
6. **ALWAYS** run `structx ingest .` after making code changes
|
|
68
|
-
7. **ALWAYS** run impact analysis before modifying existing functions
|
|
@@ -1,70 +0,0 @@
|
|
|
1
|
-
# StructX — Code Intelligence Graph (MANDATORY)
|
|
2
|
-
|
|
3
|
-
This project uses **StructX**, a graph-powered code intelligence tool for TypeScript.
|
|
4
|
-
StructX maintains a knowledge graph of the codebase including functions, types, routes,
|
|
5
|
-
constants, and file summaries. **You MUST use StructX as your primary source of codebase
|
|
6
|
-
understanding. Do NOT read raw source files to learn about the codebase.**
|
|
7
|
-
|
|
8
|
-
## Mandatory Workflow
|
|
9
|
-
|
|
10
|
-
### Step 1: Initialize (ALWAYS do this first)
|
|
11
|
-
Run `npx structx status` to check the graph state.
|
|
12
|
-
- If it says "not initialized", run `npx structx setup .`
|
|
13
|
-
- If Functions/Types/Routes counts are 0, run `npx structx setup .`
|
|
14
|
-
- **Do NOT proceed to any code task until StructX is initialized and populated.**
|
|
15
|
-
|
|
16
|
-
### Step 2: Understand the codebase via StructX (NEVER skip this)
|
|
17
|
-
Before writing ANY code, you MUST query StructX to understand the codebase:
|
|
18
|
-
```
|
|
19
|
-
npx structx overview --repo .
|
|
20
|
-
npx structx ask "what types and interfaces exist?" --repo .
|
|
21
|
-
npx structx ask "what routes/endpoints exist?" --repo .
|
|
22
|
-
npx structx ask "how does <relevant feature> work?" --repo .
|
|
23
|
-
```
|
|
24
|
-
**You are FORBIDDEN from reading .ts source files to understand the codebase architecture,
|
|
25
|
-
discover what functions exist, learn about types, or understand how features work.
|
|
26
|
-
StructX provides all of this. Use it.**
|
|
27
|
-
|
|
28
|
-
### Step 3: Read source files ONLY for editing
|
|
29
|
-
You may ONLY use raw file reads when you have ALREADY queried StructX and now need to
|
|
30
|
-
see the exact code at a specific location to make an edit. The workflow is:
|
|
31
|
-
1. Ask StructX what exists and where it is
|
|
32
|
-
2. StructX tells you the file path and line numbers
|
|
33
|
-
3. THEN read that specific file to make your edit
|
|
34
|
-
|
|
35
|
-
**Reading source files to "explore" or "understand" the codebase is PROHIBITED.
|
|
36
|
-
That is what StructX is for.**
|
|
37
|
-
|
|
38
|
-
### Step 4: After making changes
|
|
39
|
-
After editing any TypeScript files:
|
|
40
|
-
```
|
|
41
|
-
npx structx ingest .
|
|
42
|
-
npx structx analyze . --yes
|
|
43
|
-
```
|
|
44
|
-
|
|
45
|
-
### Step 5: Impact analysis before modifying existing code
|
|
46
|
-
Before changing any existing function, type, or route:
|
|
47
|
-
```
|
|
48
|
-
npx structx ask "what breaks if I change <name>?" --repo .
|
|
49
|
-
```
|
|
50
|
-
|
|
51
|
-
## Available Commands
|
|
52
|
-
|
|
53
|
-
| Command | Description |
|
|
54
|
-
|---------|-------------|
|
|
55
|
-
| `npx structx status` | Check graph state — ALWAYS run first |
|
|
56
|
-
| `npx structx setup .` | Full bootstrap (init + ingest + analyze) |
|
|
57
|
-
| `npx structx overview --repo .` | Full codebase summary in one shot |
|
|
58
|
-
| `npx structx ask "<question>" --repo .` | Query the knowledge graph |
|
|
59
|
-
| `npx structx ingest .` | Re-parse codebase after changes |
|
|
60
|
-
| `npx structx analyze . --yes` | Run semantic analysis on new/changed entities |
|
|
61
|
-
|
|
62
|
-
## Rules Summary
|
|
63
|
-
|
|
64
|
-
1. **ALWAYS** run `structx status` at session start
|
|
65
|
-
2. **ALWAYS** run `structx setup .` if not initialized
|
|
66
|
-
3. **ALWAYS** use `structx ask` or `structx overview` to understand the codebase
|
|
67
|
-
4. **NEVER** read .ts files to explore/understand architecture — use StructX
|
|
68
|
-
5. **ONLY** read .ts files when you know exactly what file+line to edit (from StructX output)
|
|
69
|
-
6. **ALWAYS** run `structx ingest .` after making code changes
|
|
70
|
-
7. **ALWAYS** run impact analysis before modifying existing functions
|