specweave 0.30.16 → 0.30.17
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/CLAUDE.md +43 -0
- package/dist/src/cli/workers/living-docs-worker.js +80 -44
- package/dist/src/cli/workers/living-docs-worker.js.map +1 -1
- package/dist/src/core/living-docs/living-docs-sync.d.ts +26 -14
- package/dist/src/core/living-docs/living-docs-sync.d.ts.map +1 -1
- package/dist/src/core/living-docs/living-docs-sync.js +137 -71
- package/dist/src/core/living-docs/living-docs-sync.js.map +1 -1
- package/dist/src/core/llm/index.d.ts +1 -0
- package/dist/src/core/llm/index.d.ts.map +1 -1
- package/dist/src/core/llm/index.js +2 -0
- package/dist/src/core/llm/index.js.map +1 -1
- package/dist/src/core/llm/providers/anthropic-provider.d.ts.map +1 -1
- package/dist/src/core/llm/providers/anthropic-provider.js +15 -26
- package/dist/src/core/llm/providers/anthropic-provider.js.map +1 -1
- package/dist/src/core/llm/providers/azure-openai-provider.d.ts.map +1 -1
- package/dist/src/core/llm/providers/azure-openai-provider.js +13 -5
- package/dist/src/core/llm/providers/azure-openai-provider.js.map +1 -1
- package/dist/src/core/llm/providers/bedrock-provider.d.ts.map +1 -1
- package/dist/src/core/llm/providers/bedrock-provider.js +12 -8
- package/dist/src/core/llm/providers/bedrock-provider.js.map +1 -1
- package/dist/src/core/llm/providers/claude-code-provider.d.ts.map +1 -1
- package/dist/src/core/llm/providers/claude-code-provider.js +15 -25
- package/dist/src/core/llm/providers/claude-code-provider.js.map +1 -1
- package/dist/src/core/llm/providers/ollama-provider.d.ts.map +1 -1
- package/dist/src/core/llm/providers/ollama-provider.js +12 -9
- package/dist/src/core/llm/providers/ollama-provider.js.map +1 -1
- package/dist/src/core/llm/providers/openai-provider.d.ts.map +1 -1
- package/dist/src/core/llm/providers/openai-provider.js +13 -6
- package/dist/src/core/llm/providers/openai-provider.js.map +1 -1
- package/dist/src/core/llm/providers/vertex-ai-provider.d.ts.map +1 -1
- package/dist/src/core/llm/providers/vertex-ai-provider.js +12 -8
- package/dist/src/core/llm/providers/vertex-ai-provider.js.map +1 -1
- package/dist/src/utils/llm-json-extractor.d.ts +105 -0
- package/dist/src/utils/llm-json-extractor.d.ts.map +1 -0
- package/dist/src/utils/llm-json-extractor.js +336 -0
- package/dist/src/utils/llm-json-extractor.js.map +1 -0
- package/dist/src/utils/structure-level-detector.d.ts +105 -0
- package/dist/src/utils/structure-level-detector.d.ts.map +1 -0
- package/dist/src/utils/structure-level-detector.js +388 -0
- package/dist/src/utils/structure-level-detector.js.map +1 -0
- package/package.json +1 -1
- package/plugins/specweave/commands/specweave-increment.md +57 -9
- package/plugins/specweave/commands/specweave-sync-specs.md +37 -6
- package/plugins/specweave/hooks/hooks.json +10 -0
- package/plugins/specweave/hooks/spec-project-validator.sh +111 -0
- package/plugins/specweave/skills/increment-planner/SKILL.md +109 -10
- package/plugins/specweave/skills/increment-planner/templates/spec-multi-project.md +2 -0
- package/plugins/specweave/skills/increment-planner/templates/spec-single-project.md +1 -0
- package/plugins/specweave/skills/multi-project-spec-mapper/SKILL.md +24 -1
- package/plugins/specweave/skills/spec-generator/SKILL.md +18 -0
- package/plugins/specweave/skills/specweave-framework/SKILL.md +25 -0
- package/plugins/specweave-github/hooks/.specweave/logs/hooks-debug.log +14 -0
- package/plugins/specweave-release/hooks/.specweave/logs/dora-tracking.log +21 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"anthropic-provider.js","sourceRoot":"","sources":["../../../../../src/core/llm/providers/anthropic-provider.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AASH,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAC5C,OAAO,EAAU,aAAa,EAAE,MAAM,0BAA0B,CAAC;
|
|
1
|
+
{"version":3,"file":"anthropic-provider.js","sourceRoot":"","sources":["../../../../../src/core/llm/providers/anthropic-provider.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"azure-openai-provider.d.ts","sourceRoot":"","sources":["../../../../../src/core/llm/providers/azure-openai-provider.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,KAAK,EACV,WAAW,EACX,cAAc,EACd,aAAa,EACb,iBAAiB,EAClB,MAAM,aAAa,CAAC;AAErB,OAAO,EAAE,MAAM,EAAiB,MAAM,0BAA0B,CAAC;
|
|
1
|
+
{"version":3,"file":"azure-openai-provider.d.ts","sourceRoot":"","sources":["../../../../../src/core/llm/providers/azure-openai-provider.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,KAAK,EACV,WAAW,EACX,cAAc,EACd,aAAa,EACb,iBAAiB,EAClB,MAAM,aAAa,CAAC;AAErB,OAAO,EAAE,MAAM,EAAiB,MAAM,0BAA0B,CAAC;AAGjE,MAAM,WAAW,yBAAyB;IACxC,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,qBAAa,mBAAoB,YAAW,WAAW;IACrD,QAAQ,CAAC,IAAI,EAAG,cAAc,CAAU;IACxC,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;IAE9B,OAAO,CAAC,MAAM,CAAS;IACvB,OAAO,CAAC,QAAQ,CAAS;IACzB,OAAO,CAAC,UAAU,CAAS;IAC3B,OAAO,CAAC,UAAU,CAAS;IAC3B,OAAO,CAAC,SAAS,CAAS;IAC1B,OAAO,CAAC,WAAW,CAAS;IAC5B,OAAO,CAAC,MAAM,CAAS;IACvB,OAAO,CAAC,MAAM,CAAM;gBAER,MAAM,EAAE,yBAAyB;YAW/B,SAAS;IAajB,OAAO,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,GAAE,cAAmB,GAAG,OAAO,CAAC,aAAa,CAAC;IAkC7E,iBAAiB,CAAC,CAAC,EACvB,MAAM,EAAE,MAAM,EACd,OAAO,EAAE,iBAAiB,CAAC,CAAC,CAAC,GAC5B,OAAO,CAAC;QAAE,IAAI,EAAE,CAAC,CAAC;QAAC,KAAK,EAAE,aAAa,CAAC,OAAO,CAAC,CAAC;QAAC,aAAa,EAAE,MAAM,CAAA;KAAE,CAAC;IA0C7E,YAAY,CAAC,WAAW,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,GAAG,MAAM;IAQzD,WAAW,IAAI,OAAO,CAAC,OAAO,CAAC;IAK/B,SAAS,IAAI,OAAO,CAAC;QAAE,SAAS,EAAE,OAAO,CAAC;QAAC,SAAS,CAAC,EAAE,MAAM,CAAC;QAAC,KAAK,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;CAcvF"}
|
|
@@ -7,6 +7,7 @@
|
|
|
7
7
|
* Best for: Enterprise environments with Azure compliance requirements
|
|
8
8
|
*/
|
|
9
9
|
import { consoleLogger } from '../../../utils/logger.js';
|
|
10
|
+
import { extractJson, extractRequiredFieldsFromSchema } from '../../../utils/llm-json-extractor.js';
|
|
10
11
|
export class AzureOpenAIProvider {
|
|
11
12
|
constructor(config) {
|
|
12
13
|
this.name = 'azure-openai';
|
|
@@ -80,11 +81,18 @@ export class AzureOpenAIProvider {
|
|
|
80
81
|
outputTokens: response.usage?.completion_tokens || 0,
|
|
81
82
|
totalTokens: response.usage?.total_tokens || 0,
|
|
82
83
|
};
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
84
|
+
// Extract required fields from schema for validation
|
|
85
|
+
const requiredFields = extractRequiredFieldsFromSchema(options.schema);
|
|
86
|
+
// Use robust JSON extraction for safety (native JSON mode should work, but belt + suspenders)
|
|
87
|
+
const extraction = extractJson(content, { requiredFields });
|
|
88
|
+
if (extraction.success && extraction.data) {
|
|
89
|
+
return {
|
|
90
|
+
data: extraction.data,
|
|
91
|
+
usage,
|
|
92
|
+
estimatedCost: this.estimateCost(usage.inputTokens, usage.outputTokens),
|
|
93
|
+
};
|
|
94
|
+
}
|
|
95
|
+
throw new Error(`Failed to parse structured response: ${extraction.error}`);
|
|
88
96
|
}
|
|
89
97
|
estimateCost(inputTokens, outputTokens) {
|
|
90
98
|
// Azure pricing varies by region and agreement
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"azure-openai-provider.js","sourceRoot":"","sources":["../../../../../src/core/llm/providers/azure-openai-provider.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AASH,OAAO,EAAU,aAAa,EAAE,MAAM,0BAA0B,CAAC;
|
|
1
|
+
{"version":3,"file":"azure-openai-provider.js","sourceRoot":"","sources":["../../../../../src/core/llm/providers/azure-openai-provider.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"bedrock-provider.d.ts","sourceRoot":"","sources":["../../../../../src/core/llm/providers/bedrock-provider.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,KAAK,EACV,WAAW,EACX,cAAc,EACd,aAAa,EACb,iBAAiB,EAClB,MAAM,aAAa,CAAC;AACrB,OAAO,EAAE,MAAM,EAAiB,MAAM,0BAA0B,CAAC;
|
|
1
|
+
{"version":3,"file":"bedrock-provider.d.ts","sourceRoot":"","sources":["../../../../../src/core/llm/providers/bedrock-provider.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,KAAK,EACV,WAAW,EACX,cAAc,EACd,aAAa,EACb,iBAAiB,EAClB,MAAM,aAAa,CAAC;AACrB,OAAO,EAAE,MAAM,EAAiB,MAAM,0BAA0B,CAAC;AAGjE,MAAM,WAAW,qBAAqB;IACpC,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,qBAAa,eAAgB,YAAW,WAAW;IACjD,QAAQ,CAAC,IAAI,EAAG,SAAS,CAAU;IACnC,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;IAE9B,OAAO,CAAC,MAAM,CAAS;IACvB,OAAO,CAAC,SAAS,CAAS;IAC1B,OAAO,CAAC,WAAW,CAAS;IAC5B,OAAO,CAAC,MAAM,CAAS;IACvB,OAAO,CAAC,MAAM,CAAM;gBAER,MAAM,EAAE,qBAAqB;YAQ3B,SAAS;IAQjB,OAAO,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,GAAE,cAAmB,GAAG,OAAO,CAAC,aAAa,CAAC;IAyE7E,iBAAiB,CAAC,CAAC,EACvB,MAAM,EAAE,MAAM,EACd,OAAO,EAAE,iBAAiB,CAAC,CAAC,CAAC,GAC5B,OAAO,CAAC;QAAE,IAAI,EAAE,CAAC,CAAC;QAAC,KAAK,EAAE,aAAa,CAAC,OAAO,CAAC,CAAC;QAAC,aAAa,EAAE,MAAM,CAAA;KAAE,CAAC;IA4B7E,YAAY,CAAC,WAAW,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,MAAM,GAAG,MAAM;IAiBzE,WAAW,IAAI,OAAO,CAAC,OAAO,CAAC;IAK/B,SAAS,IAAI,OAAO,CAAC;QAAE,SAAS,EAAE,OAAO,CAAC;QAAC,SAAS,CAAC,EAAE,MAAM,CAAC;QAAC,KAAK,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;CAgBvF"}
|
|
@@ -9,6 +9,7 @@
|
|
|
9
9
|
* NOTE: Requires @aws-sdk/client-bedrock-runtime
|
|
10
10
|
*/
|
|
11
11
|
import { consoleLogger } from '../../../utils/logger.js';
|
|
12
|
+
import { extractJson, extractRequiredFieldsFromSchema } from '../../../utils/llm-json-extractor.js';
|
|
12
13
|
export class BedrockProvider {
|
|
13
14
|
constructor(config) {
|
|
14
15
|
this.name = 'bedrock';
|
|
@@ -101,15 +102,18 @@ Return ONLY the JSON object.`;
|
|
|
101
102
|
...options,
|
|
102
103
|
temperature: 0.1,
|
|
103
104
|
});
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
105
|
+
// Extract required fields from schema for validation
|
|
106
|
+
const requiredFields = extractRequiredFieldsFromSchema(options.schema);
|
|
107
|
+
// Use robust JSON extraction (handles prose + JSON, code blocks, nested structures)
|
|
108
|
+
const extraction = extractJson(result.content, { requiredFields });
|
|
109
|
+
if (extraction.success && extraction.data) {
|
|
110
|
+
return {
|
|
111
|
+
data: extraction.data,
|
|
112
|
+
usage: result.usage,
|
|
113
|
+
estimatedCost: result.estimatedCost,
|
|
114
|
+
};
|
|
107
115
|
}
|
|
108
|
-
|
|
109
|
-
data: JSON.parse(jsonContent),
|
|
110
|
-
usage: result.usage,
|
|
111
|
-
estimatedCost: result.estimatedCost,
|
|
112
|
-
};
|
|
116
|
+
throw new Error(`Failed to parse structured response: ${extraction.error}`);
|
|
113
117
|
}
|
|
114
118
|
estimateCost(inputTokens, outputTokens, model) {
|
|
115
119
|
// Bedrock Claude pricing (slightly higher than direct)
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"bedrock-provider.js","sourceRoot":"","sources":["../../../../../src/core/llm/providers/bedrock-provider.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAQH,OAAO,EAAU,aAAa,EAAE,MAAM,0BAA0B,CAAC;
|
|
1
|
+
{"version":3,"file":"bedrock-provider.js","sourceRoot":"","sources":["../../../../../src/core/llm/providers/bedrock-provider.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"claude-code-provider.d.ts","sourceRoot":"","sources":["../../../../../src/core/llm/providers/claude-code-provider.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;GAsBG;AAMH,OAAO,KAAK,EACV,WAAW,EACX,eAAe,EACf,cAAc,EACd,aAAa,EACb,iBAAiB,EAClB,MAAM,aAAa,CAAC;AACrB,OAAO,EAAE,MAAM,EAAiB,MAAM,0BAA0B,CAAC;
|
|
1
|
+
{"version":3,"file":"claude-code-provider.d.ts","sourceRoot":"","sources":["../../../../../src/core/llm/providers/claude-code-provider.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;GAsBG;AAMH,OAAO,KAAK,EACV,WAAW,EACX,eAAe,EACf,cAAc,EACd,aAAa,EACb,iBAAiB,EAClB,MAAM,aAAa,CAAC;AACrB,OAAO,EAAE,MAAM,EAAiB,MAAM,0BAA0B,CAAC;AAUjE,MAAM,WAAW,wBAAwB;IACvC,wEAAwE;IACxE,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,8BAA8B;IAC9B,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,wBAAwB;IACxB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,8CAA8C;IAC9C,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,sBAAsB;IACtB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,2CAA2C;IAC3C,GAAG,CAAC,EAAE,MAAM,CAAC;IACb;;;;OAIG;IACH,eAAe,CAAC,EAAE,OAAO,CAAC;CAC3B;AAuBD;;;;GAIG;AACH,qBAAa,kBAAmB,YAAW,WAAW;IACpD,QAAQ,CAAC,IAAI,EAAE,eAAe,CAAiB;IAC/C,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;IAE9B,OAAO,CAAC,KAAK,CAAS;IACtB,OAAO,CAAC,SAAS,CAAS;IAC1B,OAAO,CAAC,OAAO,CAAS;IACxB,OAAO,CAAC,MAAM,CAAS;IACvB,OAAO,CAAC,GAAG,CAAC,CAAS;IACrB,OAAO,CAAC,eAAe,CAAU;gBAErB,MAAM,GAAE,wBAA6B;IAWjD;;;;;OAKG;YACW,oBAAoB;IA6FlC;;OAEG;IACG,OAAO,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,GAAE,cAAmB,GAAG,OAAO,CAAC,aAAa,CAAC;IAmDnF;;OAEG;IACG,iBAAiB,CAAC,CAAC,EACvB,MAAM,EAAE,MAAM,EACd,OAAO,EAAE,iBAAiB,CAAC,CAAC,CAAC,GAC5B,OAAO,CAAC;QAAE,IAAI,EAAE,CAAC,CAAC;QAAC,KAAK,EAAE,aAAa,CAAC,OAAO,CAAC,CAAC;QAAC,aAAa,EAAE,MAAM,CAAA;KAAE,CAAC;IAuC7E;;OAEG;IACH,YAAY,IAAI,MAAM;IAItB;;OAEG;IACG,WAAW,IAAI,OAAO,CAAC,OAAO,CAAC;IASrC;;OAEG;IACG,SAAS,IAAI,OAAO,CAAC;QAAE,SAAS,EAAE,OAAO,CAAC;QAAC,SAAS,CAAC,EAAE,MAAM,CAAC;QAAC,KAAK,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;CAsBvF;AAgDD;;;;;;GAMG;AACH,wBAAsB,qBAAqB,IAAI,OAAO,CAAC,OAAO,CAAC,CAyB9D;AAED;;GAEG;AACH,wBAAsB,mBAAmB,IAAI,OAAO,CAAC;IACnD,SAAS,EAAE,OAAO,CAAC;IACnB,YAAY,EAAE,OAAO,CAAC;IACtB,UAAU,EAAE,OAAO,CAAC;IACpB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,MAAM,CAAC;CAClB,CAAC,CAuCD"}
|
|
@@ -26,6 +26,7 @@ import * as os from 'os';
|
|
|
26
26
|
import * as path from 'path';
|
|
27
27
|
import * as fs from 'fs';
|
|
28
28
|
import { consoleLogger } from '../../../utils/logger.js';
|
|
29
|
+
import { extractJson, extractRequiredFieldsFromSchema } from '../../../utils/llm-json-extractor.js';
|
|
29
30
|
/**
|
|
30
31
|
* Detect platform for cross-platform support
|
|
31
32
|
*/
|
|
@@ -188,37 +189,26 @@ Return ONLY the JSON object, no markdown formatting, no explanation, no code blo
|
|
|
188
189
|
const result = await this.analyze(jsonPrompt, {
|
|
189
190
|
...options,
|
|
190
191
|
});
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
jsonContent = jsonContent.slice(7);
|
|
197
|
-
}
|
|
198
|
-
else if (jsonContent.startsWith('```')) {
|
|
199
|
-
jsonContent = jsonContent.slice(3);
|
|
200
|
-
}
|
|
201
|
-
if (jsonContent.endsWith('```')) {
|
|
202
|
-
jsonContent = jsonContent.slice(0, -3);
|
|
203
|
-
}
|
|
204
|
-
jsonContent = jsonContent.trim();
|
|
205
|
-
const data = JSON.parse(jsonContent);
|
|
192
|
+
// Extract required fields from schema for validation
|
|
193
|
+
const requiredFields = extractRequiredFieldsFromSchema(options.schema);
|
|
194
|
+
// Use robust JSON extraction (handles prose + JSON, code blocks, nested structures)
|
|
195
|
+
const extraction = extractJson(result.content, { requiredFields });
|
|
196
|
+
if (extraction.success && extraction.data) {
|
|
206
197
|
return {
|
|
207
|
-
data,
|
|
198
|
+
data: extraction.data,
|
|
208
199
|
usage: result.usage,
|
|
209
200
|
estimatedCost: 0, // Free with MAX
|
|
210
201
|
};
|
|
211
202
|
}
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
}
|
|
216
|
-
return {
|
|
217
|
-
data: { error: 'parse_failed', raw: result.content },
|
|
218
|
-
usage: result.usage,
|
|
219
|
-
estimatedCost: 0,
|
|
220
|
-
};
|
|
203
|
+
// Extraction failed
|
|
204
|
+
if (options.strict) {
|
|
205
|
+
throw new Error(`Failed to parse structured response: ${extraction.error}\nRaw: ${result.content}`);
|
|
221
206
|
}
|
|
207
|
+
return {
|
|
208
|
+
data: { error: 'parse_failed', raw: result.content },
|
|
209
|
+
usage: result.usage,
|
|
210
|
+
estimatedCost: 0,
|
|
211
|
+
};
|
|
222
212
|
}
|
|
223
213
|
/**
|
|
224
214
|
* Estimate cost - always 0 for MAX subscription!
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"claude-code-provider.js","sourceRoot":"","sources":["../../../../../src/core/llm/providers/claude-code-provider.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;GAsBG;AAEH,OAAO,EAAE,QAAQ,EAAE,KAAK,EAAE,MAAM,eAAe,CAAC;AAChD,OAAO,KAAK,EAAE,MAAM,IAAI,CAAC;AACzB,OAAO,KAAK,IAAI,MAAM,MAAM,CAAC;AAC7B,OAAO,KAAK,EAAE,MAAM,IAAI,CAAC;AAQzB,OAAO,EAAU,aAAa,EAAE,MAAM,0BAA0B,CAAC;
|
|
1
|
+
{"version":3,"file":"claude-code-provider.js","sourceRoot":"","sources":["../../../../../src/core/llm/providers/claude-code-provider.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ollama-provider.d.ts","sourceRoot":"","sources":["../../../../../src/core/llm/providers/ollama-provider.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,KAAK,EACV,WAAW,EACX,cAAc,EACd,aAAa,EACb,iBAAiB,EAClB,MAAM,aAAa,CAAC;AACrB,OAAO,EAAE,MAAM,EAAiB,MAAM,0BAA0B,CAAC;
|
|
1
|
+
{"version":3,"file":"ollama-provider.d.ts","sourceRoot":"","sources":["../../../../../src/core/llm/providers/ollama-provider.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,KAAK,EACV,WAAW,EACX,cAAc,EACd,aAAa,EACb,iBAAiB,EAClB,MAAM,aAAa,CAAC;AACrB,OAAO,EAAE,MAAM,EAAiB,MAAM,0BAA0B,CAAC;AAGjE,MAAM,WAAW,oBAAoB;IACnC,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,qBAAa,cAAe,YAAW,WAAW;IAChD,QAAQ,CAAC,IAAI,EAAG,QAAQ,CAAU;IAClC,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;IAE9B,OAAO,CAAC,OAAO,CAAS;IACxB,OAAO,CAAC,SAAS,CAAS;IAC1B,OAAO,CAAC,WAAW,CAAS;IAC5B,OAAO,CAAC,MAAM,CAAS;gBAEX,MAAM,EAAE,oBAAoB;IAQlC,OAAO,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,GAAE,cAAmB,GAAG,OAAO,CAAC,aAAa,CAAC;IA+C7E,iBAAiB,CAAC,CAAC,EACvB,MAAM,EAAE,MAAM,EACd,OAAO,EAAE,iBAAiB,CAAC,CAAC,CAAC,GAC5B,OAAO,CAAC;QAAE,IAAI,EAAE,CAAC,CAAC;QAAC,KAAK,EAAE,aAAa,CAAC,OAAO,CAAC,CAAC;QAAC,aAAa,EAAE,MAAM,CAAA;KAAE,CAAC;IA8B7E,YAAY,IAAI,MAAM;IAIhB,WAAW,IAAI,OAAO,CAAC,OAAO,CAAC;IAS/B,SAAS,IAAI,OAAO,CAAC;QAAE,SAAS,EAAE,OAAO,CAAC;QAAC,SAAS,CAAC,EAAE,MAAM,CAAC;QAAC,KAAK,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;CA0BvF"}
|
|
@@ -7,6 +7,7 @@
|
|
|
7
7
|
* Best for: Local development, privacy-sensitive analysis, cost-free operation
|
|
8
8
|
*/
|
|
9
9
|
import { consoleLogger } from '../../../utils/logger.js';
|
|
10
|
+
import { extractJson, extractRequiredFieldsFromSchema } from '../../../utils/llm-json-extractor.js';
|
|
10
11
|
export class OllamaProvider {
|
|
11
12
|
constructor(config) {
|
|
12
13
|
this.name = 'ollama';
|
|
@@ -67,16 +68,18 @@ Return ONLY the JSON object.`;
|
|
|
67
68
|
...options,
|
|
68
69
|
temperature: 0.1,
|
|
69
70
|
});
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
71
|
+
// Extract required fields from schema for validation
|
|
72
|
+
const requiredFields = extractRequiredFieldsFromSchema(options.schema);
|
|
73
|
+
// Use robust JSON extraction (handles prose + JSON, code blocks, nested structures)
|
|
74
|
+
const extraction = extractJson(result.content, { requiredFields });
|
|
75
|
+
if (extraction.success && extraction.data) {
|
|
76
|
+
return {
|
|
77
|
+
data: extraction.data,
|
|
78
|
+
usage: result.usage,
|
|
79
|
+
estimatedCost: 0,
|
|
80
|
+
};
|
|
73
81
|
}
|
|
74
|
-
|
|
75
|
-
return {
|
|
76
|
-
data,
|
|
77
|
-
usage: result.usage,
|
|
78
|
-
estimatedCost: 0,
|
|
79
|
-
};
|
|
82
|
+
throw new Error(`Failed to parse structured response: ${extraction.error}`);
|
|
80
83
|
}
|
|
81
84
|
estimateCost() {
|
|
82
85
|
return 0; // Local = free
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ollama-provider.js","sourceRoot":"","sources":["../../../../../src/core/llm/providers/ollama-provider.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAQH,OAAO,EAAU,aAAa,EAAE,MAAM,0BAA0B,CAAC;
|
|
1
|
+
{"version":3,"file":"ollama-provider.js","sourceRoot":"","sources":["../../../../../src/core/llm/providers/ollama-provider.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"openai-provider.d.ts","sourceRoot":"","sources":["../../../../../src/core/llm/providers/openai-provider.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,KAAK,EACV,WAAW,EACX,cAAc,EACd,aAAa,EACb,iBAAiB,EAClB,MAAM,aAAa,CAAC;AAErB,OAAO,EAAE,MAAM,EAAiB,MAAM,0BAA0B,CAAC;
|
|
1
|
+
{"version":3,"file":"openai-provider.d.ts","sourceRoot":"","sources":["../../../../../src/core/llm/providers/openai-provider.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,KAAK,EACV,WAAW,EACX,cAAc,EACd,aAAa,EACb,iBAAiB,EAClB,MAAM,aAAa,CAAC;AAErB,OAAO,EAAE,MAAM,EAAiB,MAAM,0BAA0B,CAAC;AAGjE,MAAM,WAAW,oBAAoB;IACnC,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,qBAAa,cAAe,YAAW,WAAW;IAChD,QAAQ,CAAC,IAAI,EAAG,QAAQ,CAAU;IAClC,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;IAE9B,OAAO,CAAC,MAAM,CAAS;IACvB,OAAO,CAAC,SAAS,CAAS;IAC1B,OAAO,CAAC,WAAW,CAAS;IAC5B,OAAO,CAAC,OAAO,CAAS;IACxB,OAAO,CAAC,MAAM,CAAS;IACvB,OAAO,CAAC,MAAM,CAAM;gBAER,MAAM,EAAE,oBAAoB;YAS1B,SAAS;IAWjB,OAAO,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,GAAE,cAAmB,GAAG,OAAO,CAAC,aAAa,CAAC;IAqC7E,iBAAiB,CAAC,CAAC,EACvB,MAAM,EAAE,MAAM,EACd,OAAO,EAAE,iBAAiB,CAAC,CAAC,CAAC,GAC5B,OAAO,CAAC;QAAE,IAAI,EAAE,CAAC,CAAC;QAAC,KAAK,EAAE,aAAa,CAAC,OAAO,CAAC,CAAC;QAAC,aAAa,EAAE,MAAM,CAAA;KAAE,CAAC;IA6C7E,YAAY,CAAC,WAAW,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,MAAM,GAAG,MAAM;IAQzE,WAAW,IAAI,OAAO,CAAC,OAAO,CAAC;IAS/B,SAAS,IAAI,OAAO,CAAC;QAAE,SAAS,EAAE,OAAO,CAAC;QAAC,SAAS,CAAC,EAAE,MAAM,CAAC;QAAC,KAAK,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;CAUvF"}
|
|
@@ -8,6 +8,7 @@
|
|
|
8
8
|
*/
|
|
9
9
|
import { MODEL_PRICING } from '../types.js';
|
|
10
10
|
import { consoleLogger } from '../../../utils/logger.js';
|
|
11
|
+
import { extractJson, extractRequiredFieldsFromSchema } from '../../../utils/llm-json-extractor.js';
|
|
11
12
|
export class OpenAIProvider {
|
|
12
13
|
constructor(config) {
|
|
13
14
|
this.name = 'openai';
|
|
@@ -82,12 +83,18 @@ export class OpenAIProvider {
|
|
|
82
83
|
outputTokens: response.usage?.completion_tokens || 0,
|
|
83
84
|
totalTokens: response.usage?.total_tokens || 0,
|
|
84
85
|
};
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
86
|
+
// Extract required fields from schema for validation
|
|
87
|
+
const requiredFields = extractRequiredFieldsFromSchema(options.schema);
|
|
88
|
+
// Use robust JSON extraction for safety (native JSON mode should work, but belt + suspenders)
|
|
89
|
+
const extraction = extractJson(content, { requiredFields });
|
|
90
|
+
if (extraction.success && extraction.data) {
|
|
91
|
+
return {
|
|
92
|
+
data: extraction.data,
|
|
93
|
+
usage,
|
|
94
|
+
estimatedCost: this.estimateCost(usage.inputTokens, usage.outputTokens, model),
|
|
95
|
+
};
|
|
96
|
+
}
|
|
97
|
+
throw new Error(`Failed to parse structured response: ${extraction.error}`);
|
|
91
98
|
}
|
|
92
99
|
estimateCost(inputTokens, outputTokens, model) {
|
|
93
100
|
const modelId = model || this.defaultModel;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"openai-provider.js","sourceRoot":"","sources":["../../../../../src/core/llm/providers/openai-provider.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAQH,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAC5C,OAAO,EAAU,aAAa,EAAE,MAAM,0BAA0B,CAAC;
|
|
1
|
+
{"version":3,"file":"openai-provider.js","sourceRoot":"","sources":["../../../../../src/core/llm/providers/openai-provider.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAQH,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAC5C,OAAO,EAAU,aAAa,EAAE,MAAM,0BAA0B,CAAC;AACjE,OAAO,EAAE,WAAW,EAAE,+BAA+B,EAAE,MAAM,sCAAsC,CAAC;AAWpG,MAAM,OAAO,cAAc;IAWzB,YAAY,MAA4B;QAV/B,SAAI,GAAG,QAAiB,CAAC;QAWhC,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC;QAC5B,IAAI,CAAC,YAAY,GAAG,MAAM,CAAC,KAAK,IAAI,QAAQ,CAAC;QAC7C,IAAI,CAAC,SAAS,GAAG,MAAM,CAAC,SAAS,IAAI,IAAI,CAAC;QAC1C,IAAI,CAAC,WAAW,GAAG,MAAM,CAAC,WAAW,IAAI,GAAG,CAAC;QAC7C,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC,OAAO,IAAI,2BAA2B,CAAC;QAC7D,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC,MAAM,IAAI,aAAa,CAAC;IAC/C,CAAC;IAEO,KAAK,CAAC,SAAS;QACrB,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC;YACjB,MAAM,MAAM,GAAG,CAAC,MAAM,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,OAAO,CAAC;YAChD,IAAI,CAAC,MAAM,GAAG,IAAI,MAAM,CAAC;gBACvB,MAAM,EAAE,IAAI,CAAC,MAAM;gBACnB,OAAO,EAAE,IAAI,CAAC,OAAO;aACtB,CAAC,CAAC;QACL,CAAC;QACD,OAAO,IAAI,CAAC,MAAM,CAAC;IACrB,CAAC;IAED,KAAK,CAAC,OAAO,CAAC,MAAc,EAAE,UAA0B,EAAE;QACxD,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QAC7B,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,IAAI,IAAI,CAAC,YAAY,CAAC;QAEjD,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,SAAS,EAAE,CAAC;QAEtC,MAAM,QAAQ,GAAwD,EAAE,CAAC;QAEzE,IAAI,OAAO,CAAC,YAAY,EAAE,CAAC;YACzB,QAAQ,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,OAAO,CAAC,YAAY,EAAE,CAAC,CAAC;QACnE,CAAC;QACD,QAAQ,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,CAAC,CAAC;QAEjD,MAAM,QAAQ,GAAG,MAAM,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC;YACpD,KAAK;YACL,UAAU,EAAE,OAAO,CAAC,SAAS,IAAI,IAAI,CAAC,SAAS;YAC/C,WAAW,EAAE,OAAO,CAAC,WAAW,IAAI,IAAI,CAAC,WAAW;YACpD,QAAQ;SACT,CAAC,CAAC;QAEH,MAAM,OAAO,GAAG,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,OAAO,IAAI,EAAE,CAAC;QAC5D,MAAM,KAAK,GAAG;YACZ,WAAW,EAAE,QAAQ,CAAC,KAAK,EAAE,aAAa,IAAI,CAAC;YAC/C,YAAY,EAAE,QAAQ,CAAC,KAAK,EAAE,iBAAiB,IAAI,CAAC;YACpD,WAAW,EAAE,QAAQ,CAAC,KAAK,EAAE,YAAY,IAAI,CAAC;SAC/C,CAAC;QAEF,OAAO;YACL,OAAO;YACP,KAAK;YACL,aAAa,EAAE,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,WAAW,EAAE,KAAK,CAAC,YAAY,EAAE,KAAK,CAAC;YAC9E,KAAK;YACL,UAAU,EAAE,IAAI,CAAC,GAAG,EAAE,GAAG,SAAS;YAClC,QAAQ,EAAE,KAAK;SAChB,CAAC;IACJ,CAAC;IAED,KAAK,CAAC,iBAAiB,CACrB,MAAc,EACd,OAA6B;QAE7B,mCAAmC;QACnC,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,SAAS,EAAE,CAAC;QACtC,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,IAAI,IAAI,CAAC,YAAY,CAAC;QAEjD,MAAM,QAAQ,GAAwD;YACpE;gBACE,IAAI,EAAE,QAAQ;gBACd,OAAO,EAAE,kFAAkF,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE;aAC5H;YACD,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE;SAClC,CAAC;QAEF,MAAM,QAAQ,GAAG,MAAM,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC;YACpD,KAAK;YACL,UAAU,EAAE,OAAO,CAAC,SAAS,IAAI,IAAI,CAAC,SAAS;YAC/C,WAAW,EAAE,OAAO,CAAC,WAAW,IAAI,GAAG;YACvC,QAAQ;YACR,eAAe,EAAE,EAAE,IAAI,EAAE,aAAa,EAAE;SACzC,CAAC,CAAC;QAEH,MAAM,OAAO,GAAG,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,OAAO,IAAI,IAAI,CAAC;QAC9D,MAAM,KAAK,GAAG;YACZ,WAAW,EAAE,QAAQ,CAAC,KAAK,EAAE,aAAa,IAAI,CAAC;YAC/C,YAAY,EAAE,QAAQ,CAAC,KAAK,EAAE,iBAAiB,IAAI,CAAC;YACpD,WAAW,EAAE,QAAQ,CAAC,KAAK,EAAE,YAAY,IAAI,CAAC;SAC/C,CAAC;QAEF,qDAAqD;QACrD,MAAM,cAAc,GAAG,+BAA+B,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;QAEvE,8FAA8F;QAC9F,MAAM,UAAU,GAAG,WAAW,CAAI,OAAO,EAAE,EAAE,cAAc,EAAE,CAAC,CAAC;QAE/D,IAAI,UAAU,CAAC,OAAO,IAAI,UAAU,CAAC,IAAI,EAAE,CAAC;YAC1C,OAAO;gBACL,IAAI,EAAE,UAAU,CAAC,IAAI;gBACrB,KAAK;gBACL,aAAa,EAAE,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,WAAW,EAAE,KAAK,CAAC,YAAY,EAAE,KAAK,CAAC;aAC/E,CAAC;QACJ,CAAC;QAED,MAAM,IAAI,KAAK,CAAC,wCAAwC,UAAU,CAAC,KAAK,EAAE,CAAC,CAAC;IAC9E,CAAC;IAED,YAAY,CAAC,WAAmB,EAAE,YAAoB,EAAE,KAAc;QACpE,MAAM,OAAO,GAAG,KAAK,IAAI,IAAI,CAAC,YAAY,CAAC;QAC3C,MAAM,OAAO,GAAG,aAAa,CAAC,OAAO,CAAC,IAAI,EAAE,UAAU,EAAE,CAAC,EAAE,WAAW,EAAE,EAAE,EAAE,CAAC;QAE7E,OAAO,CAAC,WAAW,GAAG,OAAS,CAAC,GAAG,OAAO,CAAC,UAAU;YAC9C,CAAC,YAAY,GAAG,OAAS,CAAC,GAAG,OAAO,CAAC,WAAW,CAAC;IAC1D,CAAC;IAED,KAAK,CAAC,WAAW;QACf,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,SAAS,EAAE,CAAC;YACtC,OAAO,MAAM,CAAC,SAAS,CAAC;QAC1B,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,KAAK,CAAC;QACf,CAAC;IACH,CAAC;IAED,KAAK,CAAC,SAAS;QACb,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QAC7B,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,SAAS,EAAE,CAAC;YACtC,MAAM,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC;YAC3B,OAAO,EAAE,SAAS,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE,GAAG,SAAS,EAAE,CAAC;QAChE,CAAC;QAAC,OAAO,KAAU,EAAE,CAAC;YACpB,OAAO,EAAE,SAAS,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,CAAC,OAAO,EAAE,CAAC;QACpD,CAAC;IACH,CAAC;CACF"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"vertex-ai-provider.d.ts","sourceRoot":"","sources":["../../../../../src/core/llm/providers/vertex-ai-provider.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,KAAK,EACV,WAAW,EACX,cAAc,EACd,aAAa,EACb,iBAAiB,EAClB,MAAM,aAAa,CAAC;AACrB,OAAO,EAAE,MAAM,EAAiB,MAAM,0BAA0B,CAAC;
|
|
1
|
+
{"version":3,"file":"vertex-ai-provider.d.ts","sourceRoot":"","sources":["../../../../../src/core/llm/providers/vertex-ai-provider.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,KAAK,EACV,WAAW,EACX,cAAc,EACd,aAAa,EACb,iBAAiB,EAClB,MAAM,aAAa,CAAC;AACrB,OAAO,EAAE,MAAM,EAAiB,MAAM,0BAA0B,CAAC;AAGjE,MAAM,WAAW,sBAAsB;IACrC,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,qBAAa,gBAAiB,YAAW,WAAW;IAClD,QAAQ,CAAC,IAAI,EAAG,WAAW,CAAU;IACrC,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;IAE9B,OAAO,CAAC,SAAS,CAAS;IAC1B,OAAO,CAAC,QAAQ,CAAS;IACzB,OAAO,CAAC,SAAS,CAAS;IAC1B,OAAO,CAAC,WAAW,CAAS;IAC5B,OAAO,CAAC,MAAM,CAAS;IACvB,OAAO,CAAC,MAAM,CAAM;IACpB,OAAO,CAAC,KAAK,CAAM;gBAEP,MAAM,EAAE,sBAAsB;YAS5B,QAAQ;IAgBhB,OAAO,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,GAAE,cAAmB,GAAG,OAAO,CAAC,aAAa,CAAC;IA4C7E,iBAAiB,CAAC,CAAC,EACvB,MAAM,EAAE,MAAM,EACd,OAAO,EAAE,iBAAiB,CAAC,CAAC,CAAC,GAC5B,OAAO,CAAC;QAAE,IAAI,EAAE,CAAC,CAAC;QAAC,KAAK,EAAE,aAAa,CAAC,OAAO,CAAC,CAAC;QAAC,aAAa,EAAE,MAAM,CAAA;KAAE,CAAC;IA4B7E,YAAY,CAAC,WAAW,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,GAAG,MAAM;IAezD,WAAW,IAAI,OAAO,CAAC,OAAO,CAAC;IAK/B,SAAS,IAAI,OAAO,CAAC;QAAE,SAAS,EAAE,OAAO,CAAC;QAAC,SAAS,CAAC,EAAE,MAAM,CAAC;QAAC,KAAK,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;CAiBvF"}
|
|
@@ -8,6 +8,7 @@
|
|
|
8
8
|
* NOTE: Requires @google-cloud/vertexai
|
|
9
9
|
*/
|
|
10
10
|
import { consoleLogger } from '../../../utils/logger.js';
|
|
11
|
+
import { extractJson, extractRequiredFieldsFromSchema } from '../../../utils/llm-json-extractor.js';
|
|
11
12
|
export class VertexAIProvider {
|
|
12
13
|
constructor(config) {
|
|
13
14
|
this.name = 'vertex-ai';
|
|
@@ -76,15 +77,18 @@ Return ONLY the JSON object, no markdown.`;
|
|
|
76
77
|
...options,
|
|
77
78
|
temperature: 0.1,
|
|
78
79
|
});
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
80
|
+
// Extract required fields from schema for validation
|
|
81
|
+
const requiredFields = extractRequiredFieldsFromSchema(options.schema);
|
|
82
|
+
// Use robust JSON extraction (handles prose + JSON, code blocks, nested structures)
|
|
83
|
+
const extraction = extractJson(result.content, { requiredFields });
|
|
84
|
+
if (extraction.success && extraction.data) {
|
|
85
|
+
return {
|
|
86
|
+
data: extraction.data,
|
|
87
|
+
usage: result.usage,
|
|
88
|
+
estimatedCost: result.estimatedCost,
|
|
89
|
+
};
|
|
82
90
|
}
|
|
83
|
-
|
|
84
|
-
data: JSON.parse(jsonContent),
|
|
85
|
-
usage: result.usage,
|
|
86
|
-
estimatedCost: result.estimatedCost,
|
|
87
|
-
};
|
|
91
|
+
throw new Error(`Failed to parse structured response: ${extraction.error}`);
|
|
88
92
|
}
|
|
89
93
|
estimateCost(inputTokens, outputTokens) {
|
|
90
94
|
// Gemini 1.5 Pro pricing
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"vertex-ai-provider.js","sourceRoot":"","sources":["../../../../../src/core/llm/providers/vertex-ai-provider.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAQH,OAAO,EAAU,aAAa,EAAE,MAAM,0BAA0B,CAAC;
|
|
1
|
+
{"version":3,"file":"vertex-ai-provider.js","sourceRoot":"","sources":["../../../../../src/core/llm/providers/vertex-ai-provider.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,105 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* LLM JSON Extractor - Robust JSON parsing from LLM responses
|
|
3
|
+
*
|
|
4
|
+
* Handles common LLM output patterns:
|
|
5
|
+
* - "Based on the analysis, here is the JSON: {...}"
|
|
6
|
+
* - "```json\n{...}\n```"
|
|
7
|
+
* - "Here's what I found:\n{...}"
|
|
8
|
+
* - Pure JSON responses
|
|
9
|
+
*
|
|
10
|
+
* Features:
|
|
11
|
+
* - 4-level extraction strategy (pure -> code blocks -> regex -> array)
|
|
12
|
+
* - Input sanitization (BOM, trailing commas)
|
|
13
|
+
* - Schema-aware correction prompts
|
|
14
|
+
* - Required field validation
|
|
15
|
+
* - Retry-with-correction prompting
|
|
16
|
+
*/
|
|
17
|
+
import { Logger } from './logger.js';
|
|
18
|
+
/**
|
|
19
|
+
* Result of JSON extraction attempt
|
|
20
|
+
*/
|
|
21
|
+
export interface ExtractionResult<T = unknown> {
|
|
22
|
+
success: boolean;
|
|
23
|
+
data: T | null;
|
|
24
|
+
rawResponse: string;
|
|
25
|
+
extractedJson: string | null;
|
|
26
|
+
error: string | null;
|
|
27
|
+
/** How the JSON was extracted */
|
|
28
|
+
extractionMethod: 'pure' | 'code-block' | 'regex' | 'failed';
|
|
29
|
+
}
|
|
30
|
+
/**
|
|
31
|
+
* Options for JSON extraction
|
|
32
|
+
*/
|
|
33
|
+
export interface ExtractionOptions {
|
|
34
|
+
/** Required fields to validate in the parsed JSON */
|
|
35
|
+
requiredFields?: string[];
|
|
36
|
+
/** Schema for correction prompts (recommended for retry flows) */
|
|
37
|
+
schema?: Record<string, unknown>;
|
|
38
|
+
/** Logger instance */
|
|
39
|
+
logger?: Logger;
|
|
40
|
+
}
|
|
41
|
+
/**
|
|
42
|
+
* Extract JSON from an LLM response that may contain prose
|
|
43
|
+
*
|
|
44
|
+
* Tries multiple extraction strategies in order:
|
|
45
|
+
* 1. Direct parse (pure JSON)
|
|
46
|
+
* 2. Remove markdown code blocks
|
|
47
|
+
* 3. Find JSON object via regex (handles prose around JSON)
|
|
48
|
+
* 4. Find JSON array via regex
|
|
49
|
+
*/
|
|
50
|
+
export declare function extractJson<T = unknown>(response: string, options?: ExtractionOptions): ExtractionResult<T>;
|
|
51
|
+
/**
|
|
52
|
+
* Generate a correction prompt for retry after failed JSON extraction
|
|
53
|
+
*
|
|
54
|
+
* @param originalPrompt - The original prompt that was sent
|
|
55
|
+
* @param failedResponse - The failed response from the LLM
|
|
56
|
+
* @param schema - Optional schema to show expected structure (recommended)
|
|
57
|
+
*/
|
|
58
|
+
export declare function generateCorrectionPrompt(originalPrompt: string, failedResponse: string, schema?: Record<string, unknown>): string;
|
|
59
|
+
/**
|
|
60
|
+
* Extract required field names from a JSON schema object
|
|
61
|
+
*
|
|
62
|
+
* Handles common schema patterns:
|
|
63
|
+
* - Simple objects: extracts top-level keys
|
|
64
|
+
* - Objects with "type" descriptors: extracts keys
|
|
65
|
+
*
|
|
66
|
+
* @param schema - The schema object passed to analyzeStructured (any object type)
|
|
67
|
+
* @returns Array of required field names
|
|
68
|
+
*/
|
|
69
|
+
export declare function extractRequiredFieldsFromSchema(schema: unknown): string[];
|
|
70
|
+
/**
|
|
71
|
+
* Build a prompt that strongly encourages JSON-only output
|
|
72
|
+
*
|
|
73
|
+
* Uses multiple techniques:
|
|
74
|
+
* 1. Leading instruction (most important position)
|
|
75
|
+
* 2. Schema definition
|
|
76
|
+
* 3. Trailing reminder
|
|
77
|
+
*/
|
|
78
|
+
export declare function buildJsonPrompt(context: string, schema: Record<string, string>, instruction: string): string;
|
|
79
|
+
/**
|
|
80
|
+
* Retry wrapper that attempts extraction with correction prompts
|
|
81
|
+
*
|
|
82
|
+
* Uses schema-aware correction prompts for better retry success.
|
|
83
|
+
*/
|
|
84
|
+
export declare function extractJsonWithRetry<T = unknown>(sendPrompt: (prompt: string) => Promise<string>, originalPrompt: string, options?: ExtractionOptions & {
|
|
85
|
+
maxRetries?: number;
|
|
86
|
+
}): Promise<ExtractionResult<T>>;
|
|
87
|
+
/**
|
|
88
|
+
* Create a structured output analyzer with built-in retry
|
|
89
|
+
*
|
|
90
|
+
* This is the recommended way to get structured JSON from LLMs.
|
|
91
|
+
* Combines prompt building, extraction, validation, and retry.
|
|
92
|
+
*
|
|
93
|
+
* @param analyze - Function that sends prompt to LLM and returns response
|
|
94
|
+
* @param schema - Expected schema (used for prompt, validation, and correction)
|
|
95
|
+
* @param options - Configuration options
|
|
96
|
+
*/
|
|
97
|
+
export declare function analyzeStructuredWithRetry<T = unknown>(analyze: (prompt: string) => Promise<string>, prompt: string, schema: Record<string, unknown>, options?: {
|
|
98
|
+
maxRetries?: number;
|
|
99
|
+
logger?: Logger;
|
|
100
|
+
}): Promise<{
|
|
101
|
+
success: boolean;
|
|
102
|
+
data: T | null;
|
|
103
|
+
error: string | null;
|
|
104
|
+
}>;
|
|
105
|
+
//# sourceMappingURL=llm-json-extractor.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"llm-json-extractor.d.ts","sourceRoot":"","sources":["../../../src/utils/llm-json-extractor.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAEH,OAAO,EAAE,MAAM,EAAiB,MAAM,aAAa,CAAC;AAEpD;;GAEG;AACH,MAAM,WAAW,gBAAgB,CAAC,CAAC,GAAG,OAAO;IAC3C,OAAO,EAAE,OAAO,CAAC;IACjB,IAAI,EAAE,CAAC,GAAG,IAAI,CAAC;IACf,WAAW,EAAE,MAAM,CAAC;IACpB,aAAa,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7B,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IACrB,iCAAiC;IACjC,gBAAgB,EAAE,MAAM,GAAG,YAAY,GAAG,OAAO,GAAG,QAAQ,CAAC;CAC9D;AAED;;GAEG;AACH,MAAM,WAAW,iBAAiB;IAChC,qDAAqD;IACrD,cAAc,CAAC,EAAE,MAAM,EAAE,CAAC;IAC1B,kEAAkE;IAClE,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACjC,sBAAsB;IACtB,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED;;;;;;;;GAQG;AACH,wBAAgB,WAAW,CAAC,CAAC,GAAG,OAAO,EACrC,QAAQ,EAAE,MAAM,EAChB,OAAO,GAAE,iBAAsB,GAC9B,gBAAgB,CAAC,CAAC,CAAC,CAkFrB;AA6HD;;;;;;GAMG;AACH,wBAAgB,wBAAwB,CACtC,cAAc,EAAE,MAAM,EACtB,cAAc,EAAE,MAAM,EACtB,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAC/B,MAAM,CA4BR;AAED;;;;;;;;;GASG;AACH,wBAAgB,+BAA+B,CAC7C,MAAM,EAAE,OAAO,GACd,MAAM,EAAE,CAQV;AAED;;;;;;;GAOG;AACH,wBAAgB,eAAe,CAC7B,OAAO,EAAE,MAAM,EACf,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,EAC9B,WAAW,EAAE,MAAM,GAClB,MAAM,CAmBR;AAED;;;;GAIG;AACH,wBAAsB,oBAAoB,CAAC,CAAC,GAAG,OAAO,EACpD,UAAU,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,OAAO,CAAC,MAAM,CAAC,EAC/C,cAAc,EAAE,MAAM,EACtB,OAAO,GAAE,iBAAiB,GAAG;IAAE,UAAU,CAAC,EAAE,MAAM,CAAA;CAAO,GACxD,OAAO,CAAC,gBAAgB,CAAC,CAAC,CAAC,CAAC,CA6B9B;AAED;;;;;;;;;GASG;AACH,wBAAsB,0BAA0B,CAAC,CAAC,GAAG,OAAO,EAC1D,OAAO,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,OAAO,CAAC,MAAM,CAAC,EAC5C,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC/B,OAAO,GAAE;IACP,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,MAAM,CAAC,EAAE,MAAM,CAAC;CACZ,GACL,OAAO,CAAC;IAAE,OAAO,EAAE,OAAO,CAAC;IAAC,IAAI,EAAE,CAAC,GAAG,IAAI,CAAC;IAAC,KAAK,EAAE,MAAM,GAAG,IAAI,CAAA;CAAE,CAAC,CAmBrE"}
|