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.
Files changed (55) hide show
  1. package/dist/benchmark/baseline.d.ts +2 -1
  2. package/dist/benchmark/baseline.d.ts.map +1 -1
  3. package/dist/benchmark/baseline.js +7 -18
  4. package/dist/benchmark/baseline.js.map +1 -1
  5. package/dist/benchmark/runner.d.ts +2 -1
  6. package/dist/benchmark/runner.d.ts.map +1 -1
  7. package/dist/benchmark/runner.js +4 -4
  8. package/dist/benchmark/runner.js.map +1 -1
  9. package/dist/cli.js +100 -45
  10. package/dist/cli.js.map +1 -1
  11. package/dist/config.d.ts +4 -0
  12. package/dist/config.d.ts.map +1 -1
  13. package/dist/config.js +12 -1
  14. package/dist/config.js.map +1 -1
  15. package/dist/providers/anthropic.d.ts +12 -0
  16. package/dist/providers/anthropic.d.ts.map +1 -0
  17. package/dist/providers/anthropic.js +32 -0
  18. package/dist/providers/anthropic.js.map +1 -0
  19. package/dist/providers/factory.d.ts +18 -0
  20. package/dist/providers/factory.d.ts.map +1 -0
  21. package/dist/providers/factory.js +49 -0
  22. package/dist/providers/factory.js.map +1 -0
  23. package/dist/providers/gemini.d.ts +12 -0
  24. package/dist/providers/gemini.d.ts.map +1 -0
  25. package/dist/providers/gemini.js +35 -0
  26. package/dist/providers/gemini.js.map +1 -0
  27. package/dist/providers/interface.d.ts +18 -0
  28. package/dist/providers/interface.d.ts.map +1 -0
  29. package/dist/providers/interface.js +3 -0
  30. package/dist/providers/interface.js.map +1 -0
  31. package/dist/providers/openrouter.d.ts +12 -0
  32. package/dist/providers/openrouter.d.ts.map +1 -0
  33. package/dist/providers/openrouter.js +38 -0
  34. package/dist/providers/openrouter.js.map +1 -0
  35. package/dist/query/answerer.d.ts +2 -1
  36. package/dist/query/answerer.d.ts.map +1 -1
  37. package/dist/query/answerer.js +7 -18
  38. package/dist/query/answerer.js.map +1 -1
  39. package/dist/query/classifier.d.ts +2 -1
  40. package/dist/query/classifier.d.ts.map +1 -1
  41. package/dist/query/classifier.js +4 -13
  42. package/dist/query/classifier.js.map +1 -1
  43. package/dist/semantic/analyzer.d.ts +5 -4
  44. package/dist/semantic/analyzer.d.ts.map +1 -1
  45. package/dist/semantic/analyzer.js +34 -61
  46. package/dist/semantic/analyzer.js.map +1 -1
  47. package/dist/utils/tokens.d.ts.map +1 -1
  48. package/dist/utils/tokens.js +6 -0
  49. package/dist/utils/tokens.js.map +1 -1
  50. package/package.json +3 -1
  51. package/dist/instructions/claude.md +0 -70
  52. package/dist/instructions/codex.md +0 -70
  53. package/dist/instructions/copilot.md +0 -70
  54. package/dist/instructions/cursor.md +0 -68
  55. 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, apiKey) {
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 client.messages.create({
82
+ const response = await provider.chat({
88
83
  model,
89
- max_tokens: uncachedFunctions.length * 200,
84
+ maxTokens: uncachedFunctions.length * 200,
90
85
  messages: [{ role: 'user', content: batchPrompt }],
91
86
  });
92
- responseText = response.content
93
- .filter(block => block.type === 'text')
94
- .map(block => block.text)
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 client.messages.create({
111
+ const retryResponse = await provider.chat({
120
112
  model,
121
- max_tokens: uncachedFunctions.length * 200,
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
- const retryText = retryResponse.content
129
- .filter(block => block.type === 'text')
130
- .map(block => block.text)
131
- .join('');
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 = retryText;
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, apiKey) {
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 client.messages.create({
184
+ const response = await provider.chat({
198
185
  model,
199
- max_tokens: batch.length * 100,
186
+ maxTokens: batch.length * 100,
200
187
  messages: [{ role: 'user', content: prompt }],
201
188
  });
202
- const text = response.content
203
- .filter(block => block.type === 'text')
204
- .map(block => block.text)
205
- .join('');
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, apiKey) {
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 client.messages.create({
222
+ const response = await provider.chat({
241
223
  model,
242
- max_tokens: batch.length * 100,
224
+ maxTokens: batch.length * 100,
243
225
  messages: [{ role: 'user', content: prompt }],
244
226
  });
245
- const text = response.content
246
- .filter(block => block.type === 'text')
247
- .map(block => block.text)
248
- .join('');
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, apiKey) {
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 client.messages.create({
273
+ const response = await provider.chat({
297
274
  model,
298
- max_tokens: batch.length * 100,
275
+ maxTokens: batch.length * 100,
299
276
  messages: [{ role: 'user', content: prompt }],
300
277
  });
301
- const text = response.content
302
- .filter(block => block.type === 'text')
303
- .map(block => block.text)
304
- .join('');
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":"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"}
1
+ {"version":3,"file":"analyzer.js","sourceRoot":"","sources":["../../src/semantic/analyzer.ts"],"names":[],"mappings":";;AA6BA,oCA4KC;AAYD,gDAEC;AAUD,oCA+CC;AAED,sCA8CC;AAED,oDAwDC;AAvXD,2CAOuB;AACvB,qCAIkB;AAClB,2CAA4E;AAC5E,4CAA+C;AAC/C,4CAAyC;AAWlC,KAAK,UAAU,YAAY,CAChC,EAAqB,EACrB,UAAsD,EACtD,KAAa,EACb,QAAqB;IAErB,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,QAAQ,CAAC,IAAI,CAAC;YACnC,KAAK;YACL,SAAS,EAAE,iBAAiB,CAAC,MAAM,GAAG,GAAG;YACzC,QAAQ,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,WAAW,EAAE,CAAC;SACnD,CAAC,CAAC;QAEH,YAAY,GAAG,QAAQ,CAAC,IAAI,CAAC;QAC7B,WAAW,GAAG,QAAQ,CAAC,WAAW,CAAC;QACnC,YAAY,GAAG,QAAQ,CAAC,YAAY,CAAC;QACrC,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,QAAQ,CAAC,IAAI,CAAC;gBACxC,KAAK;gBACL,SAAS,EAAE,iBAAiB,CAAC,MAAM,GAAG,GAAG;gBACzC,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,CAAC,gBAAgB,IAAI,aAAa,CAAC,WAAW,CAAC;YACrD,MAAM,CAAC,iBAAiB,IAAI,aAAa,CAAC,YAAY,CAAC;YACvD,MAAM,CAAC,SAAS,IAAI,IAAA,qBAAY,EAAC,KAAK,EAAE,aAAa,CAAC,WAAW,EAAE,aAAa,CAAC,YAAY,CAAC,CAAC;YAE/F,UAAU,GAAG,IAAA,oCAAwB,EAAC,aAAa,CAAC,IAAI,CAAC,CAAC;YAC1D,IAAI,UAAU,CAAC,KAAK,IAAI,UAAU,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBACtD,YAAY,GAAG,aAAa,CAAC,IAAI,CAAC;YACpC,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,QAAqB;IAErB,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,QAAQ,CAAC,IAAI,CAAC;gBACnC,KAAK;gBACL,SAAS,EAAE,KAAK,CAAC,MAAM,GAAG,GAAG;gBAC7B,QAAQ,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,CAAC;aAC9C,CAAC,CAAC;YAEH,MAAM,CAAC,gBAAgB,IAAI,QAAQ,CAAC,WAAW,CAAC;YAChD,MAAM,CAAC,iBAAiB,IAAI,QAAQ,CAAC,YAAY,CAAC;YAClD,MAAM,CAAC,SAAS,IAAI,IAAA,qBAAY,EAAC,KAAK,EAAE,QAAQ,CAAC,WAAW,EAAE,QAAQ,CAAC,YAAY,CAAC,CAAC;YAErF,MAAM,OAAO,GAAG,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,eAAe,EAAE,EAAE,CAAC,CAAC,OAAO,CAAC,UAAU,EAAE,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;YAC1F,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,QAAqB;IAErB,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,QAAQ,CAAC,IAAI,CAAC;gBACnC,KAAK;gBACL,SAAS,EAAE,KAAK,CAAC,MAAM,GAAG,GAAG;gBAC7B,QAAQ,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,CAAC;aAC9C,CAAC,CAAC;YAEH,MAAM,CAAC,gBAAgB,IAAI,QAAQ,CAAC,WAAW,CAAC;YAChD,MAAM,CAAC,iBAAiB,IAAI,QAAQ,CAAC,YAAY,CAAC;YAClD,MAAM,CAAC,SAAS,IAAI,IAAA,qBAAY,EAAC,KAAK,EAAE,QAAQ,CAAC,WAAW,EAAE,QAAQ,CAAC,YAAY,CAAC,CAAC;YAErF,MAAM,OAAO,GAAG,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,eAAe,EAAE,EAAE,CAAC,CAAC,OAAO,CAAC,UAAU,EAAE,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;YAC1F,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,QAAqB;IAErB,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,QAAQ,CAAC,IAAI,CAAC;gBACnC,KAAK;gBACL,SAAS,EAAE,KAAK,CAAC,MAAM,GAAG,GAAG;gBAC7B,QAAQ,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,CAAC;aAC9C,CAAC,CAAC;YAEH,MAAM,CAAC,gBAAgB,IAAI,QAAQ,CAAC,WAAW,CAAC;YAChD,MAAM,CAAC,iBAAiB,IAAI,QAAQ,CAAC,YAAY,CAAC;YAClD,MAAM,CAAC,SAAS,IAAI,IAAA,qBAAY,EAAC,KAAK,EAAE,QAAQ,CAAC,WAAW,EAAE,QAAQ,CAAC,YAAY,CAAC,CAAC;YAErF,MAAM,OAAO,GAAG,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,eAAe,EAAE,EAAE,CAAC,CAAC,OAAO,CAAC,UAAU,EAAE,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;YAC1F,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 +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;AAQD,wBAAgB,YAAY,CAC1B,KAAK,EAAE,MAAM,EACb,WAAW,EAAE,MAAM,EACnB,YAAY,EAAE,MAAM,GACnB,MAAM,CAKR"}
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"}
@@ -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 };
@@ -1 +1 @@
1
- {"version":3,"file":"tokens.js","sourceRoot":"","sources":["../../src/utils/tokens.ts"],"names":[],"mappings":";AAAA,yDAAyD;AACzD,6DAA6D;;AAE7D,wCAEC;AAQD,oCASC;AAnBD,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,2BAA2B,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE;IAC1D,4BAA4B,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE;CAC7D,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"}
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": "2.2.0",
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