tryassay 0.21.2 → 0.22.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (132) hide show
  1. package/demo/.claude/.truth_last_prompt +1 -0
  2. package/demo/.claude/truth_status +1 -0
  3. package/demo/css/style.css +840 -0
  4. package/demo/index.html +78 -0
  5. package/demo/js/chat.js +535 -0
  6. package/demo/js/code-panel.js +206 -0
  7. package/demo/js/preview.js +456 -0
  8. package/demo/js/sse-client.js +600 -0
  9. package/demo/js/state.js +172 -0
  10. package/demo/js/timeline.js +80 -0
  11. package/dist/api/server.d.ts +3 -0
  12. package/dist/api/server.js +127 -20
  13. package/dist/api/server.js.map +1 -1
  14. package/dist/cli.js +11 -0
  15. package/dist/cli.js.map +1 -1
  16. package/dist/commands/assess.d.ts +2 -0
  17. package/dist/commands/assess.js +132 -164
  18. package/dist/commands/assess.js.map +1 -1
  19. package/dist/commands/demo.d.ts +5 -0
  20. package/dist/commands/demo.js +357 -0
  21. package/dist/commands/demo.js.map +1 -0
  22. package/dist/lib/__tests__/arithmetic-quick-test.d.ts +6 -0
  23. package/dist/lib/__tests__/arithmetic-quick-test.js +197 -0
  24. package/dist/lib/__tests__/arithmetic-quick-test.js.map +1 -0
  25. package/dist/lib/__tests__/arithmetic-real-llm-test.d.ts +13 -0
  26. package/dist/lib/__tests__/arithmetic-real-llm-test.js +284 -0
  27. package/dist/lib/__tests__/arithmetic-real-llm-test.js.map +1 -0
  28. package/dist/lib/__tests__/arithmetic-value-demo.d.ts +10 -0
  29. package/dist/lib/__tests__/arithmetic-value-demo.js +193 -0
  30. package/dist/lib/__tests__/arithmetic-value-demo.js.map +1 -0
  31. package/dist/lib/__tests__/flow-to-claims.test.d.ts +1 -0
  32. package/dist/lib/__tests__/flow-to-claims.test.js +91 -0
  33. package/dist/lib/__tests__/flow-to-claims.test.js.map +1 -0
  34. package/dist/lib/__tests__/formal-verifier-api-misuse.test.d.ts +9 -0
  35. package/dist/lib/__tests__/formal-verifier-api-misuse.test.js +391 -0
  36. package/dist/lib/__tests__/formal-verifier-api-misuse.test.js.map +1 -0
  37. package/dist/lib/__tests__/formal-verifier-arithmetic.test.d.ts +7 -0
  38. package/dist/lib/__tests__/formal-verifier-arithmetic.test.js +318 -0
  39. package/dist/lib/__tests__/formal-verifier-arithmetic.test.js.map +1 -0
  40. package/dist/lib/__tests__/intent-extractor.test.d.ts +1 -0
  41. package/dist/lib/__tests__/intent-extractor.test.js +97 -0
  42. package/dist/lib/__tests__/intent-extractor.test.js.map +1 -0
  43. package/dist/lib/__tests__/intent-reviewer.test.d.ts +1 -0
  44. package/dist/lib/__tests__/intent-reviewer.test.js +55 -0
  45. package/dist/lib/__tests__/intent-reviewer.test.js.map +1 -0
  46. package/dist/lib/__tests__/mr-gsm8k-benchmark.d.ts +11 -0
  47. package/dist/lib/__tests__/mr-gsm8k-benchmark.js +224 -0
  48. package/dist/lib/__tests__/mr-gsm8k-benchmark.js.map +1 -0
  49. package/dist/lib/anthropic.js +25 -33
  50. package/dist/lib/anthropic.js.map +1 -1
  51. package/dist/lib/assessment-reporter.js +9 -13
  52. package/dist/lib/assessment-reporter.js.map +1 -1
  53. package/dist/lib/claim-extractor.js +10 -19
  54. package/dist/lib/claim-extractor.js.map +1 -1
  55. package/dist/lib/code-verifier.js +16 -36
  56. package/dist/lib/code-verifier.js.map +1 -1
  57. package/dist/lib/constraint-engine.js +10 -19
  58. package/dist/lib/constraint-engine.js.map +1 -1
  59. package/dist/lib/formal-verifier.d.ts +1 -1
  60. package/dist/lib/formal-verifier.js +454 -0
  61. package/dist/lib/formal-verifier.js.map +1 -1
  62. package/dist/lib/guided-generator.js +19 -37
  63. package/dist/lib/guided-generator.js.map +1 -1
  64. package/dist/lib/intent-extractor.d.ts +47 -0
  65. package/dist/lib/intent-extractor.js +427 -0
  66. package/dist/lib/intent-extractor.js.map +1 -0
  67. package/dist/lib/intent-reviewer.d.ts +14 -0
  68. package/dist/lib/intent-reviewer.js +148 -0
  69. package/dist/lib/intent-reviewer.js.map +1 -0
  70. package/dist/lib/intent-types.d.ts +89 -0
  71. package/dist/lib/intent-types.js +5 -0
  72. package/dist/lib/intent-types.js.map +1 -0
  73. package/dist/lib/inventory-extractor.js +9 -22
  74. package/dist/lib/inventory-extractor.js.map +1 -1
  75. package/dist/lib/llm-provider.d.ts +23 -0
  76. package/dist/lib/llm-provider.js +130 -0
  77. package/dist/lib/llm-provider.js.map +1 -0
  78. package/dist/lib/remediator.js +20 -28
  79. package/dist/lib/remediator.js.map +1 -1
  80. package/dist/lib/requirements-generator.js +14 -19
  81. package/dist/lib/requirements-generator.js.map +1 -1
  82. package/dist/lib/spec-synthesizer.js +10 -19
  83. package/dist/lib/spec-synthesizer.js.map +1 -1
  84. package/dist/runtime/agents/planner-agent.d.ts +5 -2
  85. package/dist/runtime/agents/planner-agent.js +232 -1
  86. package/dist/runtime/agents/planner-agent.js.map +1 -1
  87. package/dist/runtime/app-create-orchestrator.d.ts +9 -1
  88. package/dist/runtime/app-create-orchestrator.js +265 -87
  89. package/dist/runtime/app-create-orchestrator.js.map +1 -1
  90. package/dist/runtime/check-catalog.js +5 -3
  91. package/dist/runtime/check-catalog.js.map +1 -1
  92. package/dist/runtime/check-definitions.d.ts +10 -0
  93. package/dist/runtime/check-definitions.js +52 -2
  94. package/dist/runtime/check-definitions.js.map +1 -1
  95. package/dist/runtime/composition-verifier.js +8 -12
  96. package/dist/runtime/composition-verifier.js.map +1 -1
  97. package/dist/runtime/gap-detector.js +8 -10
  98. package/dist/runtime/gap-detector.js.map +1 -1
  99. package/dist/runtime/input-validator.d.ts +7 -0
  100. package/dist/runtime/input-validator.js +162 -0
  101. package/dist/runtime/input-validator.js.map +1 -0
  102. package/dist/runtime/model-router.d.ts +10 -0
  103. package/dist/runtime/model-router.js +42 -0
  104. package/dist/runtime/model-router.js.map +1 -0
  105. package/dist/runtime/pattern-extractor.js +8 -10
  106. package/dist/runtime/pattern-extractor.js.map +1 -1
  107. package/dist/runtime/planner.js +11 -16
  108. package/dist/runtime/planner.js.map +1 -1
  109. package/dist/runtime/prompt-guard.d.ts +2 -0
  110. package/dist/runtime/prompt-guard.js +180 -0
  111. package/dist/runtime/prompt-guard.js.map +1 -0
  112. package/dist/runtime/prompt-safety-analyzer.js +8 -13
  113. package/dist/runtime/prompt-safety-analyzer.js.map +1 -1
  114. package/dist/runtime/reasoner.js +19 -33
  115. package/dist/runtime/reasoner.js.map +1 -1
  116. package/dist/runtime/rule-meta-verifier.js +9 -11
  117. package/dist/runtime/rule-meta-verifier.js.map +1 -1
  118. package/dist/runtime/safe-executor.d.ts +23 -0
  119. package/dist/runtime/safe-executor.js +151 -0
  120. package/dist/runtime/safe-executor.js.map +1 -0
  121. package/dist/runtime/specialized-agent.js +10 -14
  122. package/dist/runtime/specialized-agent.js.map +1 -1
  123. package/dist/runtime/strategy-library.js +8 -10
  124. package/dist/runtime/strategy-library.js.map +1 -1
  125. package/dist/runtime/supabase-experience-store.js.map +1 -1
  126. package/dist/runtime/supabase-provisioner.d.ts +35 -0
  127. package/dist/runtime/supabase-provisioner.js +192 -0
  128. package/dist/runtime/supabase-provisioner.js.map +1 -0
  129. package/dist/runtime/types.d.ts +116 -0
  130. package/dist/sdk/forward-verify.js +16 -33
  131. package/dist/sdk/forward-verify.js.map +1 -1
  132. package/package.json +2 -1
@@ -0,0 +1,89 @@
1
+ export interface CodeReference {
2
+ file: string;
3
+ function?: string;
4
+ lineRange?: [number, number];
5
+ }
6
+ export interface DataAccess {
7
+ table: string;
8
+ operation: 'read' | 'write' | 'delete';
9
+ columns?: string[];
10
+ }
11
+ export interface FlowStep {
12
+ order: number;
13
+ action: string;
14
+ codeRef?: CodeReference;
15
+ dataAccess?: DataAccess;
16
+ }
17
+ export interface IntentFlow {
18
+ id: string;
19
+ name: string;
20
+ description: string;
21
+ actor: string;
22
+ trigger: string;
23
+ steps: FlowStep[];
24
+ successCriteria: string;
25
+ errorPaths: string[];
26
+ codePaths: CodeReference[];
27
+ }
28
+ export interface EntityField {
29
+ name: string;
30
+ type: string;
31
+ constraints: string[];
32
+ }
33
+ export interface EntityRelationship {
34
+ target: string;
35
+ type: 'one-to-one' | 'one-to-many' | 'many-to-many';
36
+ foreignKey?: string;
37
+ }
38
+ export interface DataEntity {
39
+ name: string;
40
+ source: string;
41
+ fields: EntityField[];
42
+ relationships: EntityRelationship[];
43
+ }
44
+ export interface AuthGuard {
45
+ pattern: string;
46
+ requiredRole?: string;
47
+ mechanism: string;
48
+ }
49
+ export interface AuthModel {
50
+ strategy: string;
51
+ roles: string[];
52
+ guards: AuthGuard[];
53
+ }
54
+ export interface FeatureGroup {
55
+ name: string;
56
+ flows: string[];
57
+ completeness: 'full' | 'partial' | 'stub';
58
+ }
59
+ export type IntentGapType = 'missing-flow' | 'dead-code' | 'unguarded-route' | 'orphaned-table' | 'incomplete-flow';
60
+ export interface IntentGap {
61
+ type: IntentGapType;
62
+ description: string;
63
+ evidence: string;
64
+ }
65
+ export interface IntentManifest {
66
+ version: 1;
67
+ extractedAt: string;
68
+ codebaseRoot: string;
69
+ frameworks: string[];
70
+ flows: IntentFlow[];
71
+ dataModel: DataEntity[];
72
+ authModel: AuthModel;
73
+ featureMap: FeatureGroup[];
74
+ gaps: IntentGap[];
75
+ confirmedBy?: string;
76
+ confirmedAt?: string;
77
+ }
78
+ export interface ManifestDelta {
79
+ addedFlows: IntentFlow[];
80
+ removedFlows: IntentFlow[];
81
+ changedFlows: Array<{
82
+ before: IntentFlow;
83
+ after: IntentFlow;
84
+ }>;
85
+ addedEntities: DataEntity[];
86
+ removedEntities: DataEntity[];
87
+ addedGaps: IntentGap[];
88
+ removedGaps: IntentGap[];
89
+ }
@@ -0,0 +1,5 @@
1
+ // Layer 0: Intent Extraction types
2
+ // The IntentManifest captures what an application is supposed to do,
3
+ // organized around user-facing flows rather than code structure.
4
+ export {};
5
+ //# sourceMappingURL=intent-types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"intent-types.js","sourceRoot":"","sources":["../../src/lib/intent-types.ts"],"names":[],"mappings":"AAAA,mCAAmC;AACnC,qEAAqE;AACrE,iEAAiE"}
@@ -1,4 +1,5 @@
1
- import { getClient, MODEL } from './anthropic.js';
1
+ import { MODEL } from './anthropic.js';
2
+ import { getProvider } from './llm-provider.js';
2
3
  import { readFileContent } from './codebase-indexer.js';
3
4
  const INVENTORY_SYSTEM_PROMPT = `You are a codebase analyst. Given a file tree and key file contents, identify ALL routes, database tables, and permission systems in the application.
4
5
 
@@ -182,7 +183,6 @@ function parseInventoryResponse(rawText) {
182
183
  }
183
184
  const MAX_FILE_CHARS = 3000;
184
185
  export async function extractInventory(index, onProgress) {
185
- const client = getClient();
186
186
  // Select files to read for context
187
187
  const filesToRead = selectFilesForContext(index);
188
188
  onProgress?.(` Reading ${filesToRead.length} key files...`);
@@ -213,30 +213,17 @@ export async function extractInventory(index, onProgress) {
213
213
  `KEY FILE CONTENTS:`,
214
214
  fileContents,
215
215
  ].join('\n');
216
- // Use streaming to prevent read timeouts on large payloads.
217
- // Blocking requests can ETIMEDOUT when the API takes minutes to process
218
- // 100K+ chars of input — streaming keeps the connection alive.
219
- let rawText = '';
220
- const stream = client.messages.stream({
216
+ const result = await getProvider().complete({
221
217
  model: MODEL,
222
- max_tokens: 16_000,
223
- system: INVENTORY_SYSTEM_PROMPT,
224
- messages: [
225
- {
226
- role: 'user',
227
- content: userMessage,
228
- },
229
- ],
218
+ maxTokens: 16_000,
219
+ systemPrompt: INVENTORY_SYSTEM_PROMPT,
220
+ userPrompt: userMessage,
230
221
  });
231
- stream.on('text', (text) => {
232
- rawText += text;
233
- });
234
- const response = await stream.finalMessage();
235
- const inventory = parseInventoryResponse(rawText);
222
+ const inventory = parseInventoryResponse(result.content);
236
223
  return {
237
224
  inventory,
238
- inputTokens: response.usage.input_tokens,
239
- outputTokens: response.usage.output_tokens,
225
+ inputTokens: result.inputTokens ?? 0,
226
+ outputTokens: result.outputTokens ?? 0,
240
227
  };
241
228
  }
242
229
  //# sourceMappingURL=inventory-extractor.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"inventory-extractor.js","sourceRoot":"","sources":["../../src/lib/inventory-extractor.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"inventory-extractor.js","sourceRoot":"","sources":["../../src/lib/inventory-extractor.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,23 @@
1
+ import type { LLMProvider, LLMResult, LLMCompletionOptions, LLMProviderType } from '../runtime/types.js';
2
+ export declare class AnthropicApiProvider implements LLMProvider {
3
+ readonly type: LLMProviderType;
4
+ private readonly apiKey;
5
+ private readonly timeout;
6
+ constructor(apiKey?: string, timeout?: number);
7
+ complete(opts: LLMCompletionOptions): Promise<LLMResult>;
8
+ }
9
+ export declare class ClaudeCliProvider implements LLMProvider {
10
+ readonly type: LLMProviderType;
11
+ complete(opts: LLMCompletionOptions): Promise<LLMResult>;
12
+ }
13
+ /**
14
+ * Get the configured LLM provider.
15
+ *
16
+ * Toggle: ASSAY_LLM_PROVIDER=api|cli
17
+ * Default: auto-detect (API key present → api, else → cli)
18
+ */
19
+ export declare function getProvider(): LLMProvider;
20
+ /**
21
+ * Reset the cached provider. Useful for testing or env changes.
22
+ */
23
+ export declare function resetProvider(): void;
@@ -0,0 +1,130 @@
1
+ // ============================================================
2
+ // LLM Provider — Abstraction over Anthropic API and Claude CLI
3
+ // Toggle via ASSAY_LLM_PROVIDER env var (api|cli|auto).
4
+ // ============================================================
5
+ import Anthropic from '@anthropic-ai/sdk';
6
+ import { safeExecWithStdin } from '../runtime/safe-executor.js';
7
+ // ── Anthropic API Provider ───────────────────────────────────
8
+ export class AnthropicApiProvider {
9
+ type = 'api';
10
+ apiKey;
11
+ timeout;
12
+ constructor(apiKey, timeout) {
13
+ const key = apiKey ?? process.env.ANTHROPIC_API_KEY;
14
+ if (!key) {
15
+ throw new Error('ANTHROPIC_API_KEY environment variable is not set.\n' +
16
+ 'Export it before running: export ANTHROPIC_API_KEY=sk-ant-...\n' +
17
+ 'Or set ASSAY_LLM_PROVIDER=cli to use your Claude subscription instead.');
18
+ }
19
+ this.apiKey = key;
20
+ this.timeout = timeout ?? 15 * 60 * 1000;
21
+ }
22
+ async complete(opts) {
23
+ const start = Date.now();
24
+ const client = new Anthropic({ apiKey: this.apiKey, timeout: this.timeout });
25
+ let content = '';
26
+ const stream = client.messages.stream({
27
+ model: opts.model,
28
+ max_tokens: opts.maxTokens ?? 16_000,
29
+ system: opts.systemPrompt,
30
+ messages: [{ role: 'user', content: opts.userPrompt }],
31
+ ...(opts.temperature !== undefined && { temperature: opts.temperature }),
32
+ });
33
+ stream.on('text', (text) => {
34
+ content += text;
35
+ });
36
+ const finalMessage = await stream.finalMessage();
37
+ return {
38
+ content,
39
+ inputTokens: finalMessage.usage.input_tokens,
40
+ outputTokens: finalMessage.usage.output_tokens,
41
+ provider: 'api',
42
+ durationMs: Date.now() - start,
43
+ };
44
+ }
45
+ }
46
+ // ── Claude CLI Provider ──────────────────────────────────────
47
+ export class ClaudeCliProvider {
48
+ type = 'cli';
49
+ async complete(opts) {
50
+ const start = Date.now();
51
+ // Pipe user prompt via stdin to avoid OS ARG_MAX limits on large prompts.
52
+ // The claude CLI reads piped stdin as the prompt in non-interactive mode.
53
+ const result = await safeExecWithStdin('claude', [
54
+ '-p',
55
+ '--output-format', 'json',
56
+ '--model', opts.model,
57
+ '--max-turns', '1',
58
+ '--tools', '',
59
+ '--no-session-persistence',
60
+ '--system-prompt', opts.systemPrompt,
61
+ ], opts.userPrompt, {
62
+ timeout: 15 * 60 * 1000, // 15 min to match API timeout
63
+ // Unset CLAUDECODE to allow spawning from within Claude Code sessions
64
+ env: { ...process.env, CLAUDECODE: '' },
65
+ });
66
+ if (result.exitCode !== 0) {
67
+ throw new Error(`claude CLI failed (exit ${result.exitCode}): ${result.stderr || result.stdout}`);
68
+ }
69
+ // Parse JSON output — claude --output-format json returns structured response
70
+ let content;
71
+ let inputTokens = null;
72
+ let outputTokens = null;
73
+ try {
74
+ const parsed = JSON.parse(result.stdout);
75
+ // The JSON format has a "result" field with the text content
76
+ content = parsed.result ?? parsed.content ?? result.stdout;
77
+ if (parsed.usage) {
78
+ inputTokens = parsed.usage.input_tokens ?? null;
79
+ outputTokens = parsed.usage.output_tokens ?? null;
80
+ }
81
+ }
82
+ catch {
83
+ // If JSON parsing fails, treat the entire stdout as content
84
+ content = result.stdout;
85
+ }
86
+ return {
87
+ content,
88
+ inputTokens,
89
+ outputTokens,
90
+ provider: 'cli',
91
+ durationMs: Date.now() - start,
92
+ };
93
+ }
94
+ }
95
+ // ── Factory ──────────────────────────────────────────────────
96
+ let cachedProvider = null;
97
+ /**
98
+ * Get the configured LLM provider.
99
+ *
100
+ * Toggle: ASSAY_LLM_PROVIDER=api|cli
101
+ * Default: auto-detect (API key present → api, else → cli)
102
+ */
103
+ export function getProvider() {
104
+ if (cachedProvider)
105
+ return cachedProvider;
106
+ const explicit = process.env.ASSAY_LLM_PROVIDER;
107
+ if (explicit === 'cli') {
108
+ cachedProvider = new ClaudeCliProvider();
109
+ }
110
+ else if (explicit === 'api') {
111
+ cachedProvider = new AnthropicApiProvider();
112
+ }
113
+ else {
114
+ // Auto-detect: use API if key is available, otherwise CLI
115
+ if (process.env.ANTHROPIC_API_KEY) {
116
+ cachedProvider = new AnthropicApiProvider();
117
+ }
118
+ else {
119
+ cachedProvider = new ClaudeCliProvider();
120
+ }
121
+ }
122
+ return cachedProvider;
123
+ }
124
+ /**
125
+ * Reset the cached provider. Useful for testing or env changes.
126
+ */
127
+ export function resetProvider() {
128
+ cachedProvider = null;
129
+ }
130
+ //# sourceMappingURL=llm-provider.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"llm-provider.js","sourceRoot":"","sources":["../../src/lib/llm-provider.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,5 @@
1
- import { getClient, MODEL } from './anthropic.js';
1
+ import { MODEL } from './anthropic.js';
2
+ import { getProvider } from './llm-provider.js';
2
3
  import { readFileContent } from './codebase-indexer.js';
3
4
  const VALID_ACTIONS = ['add', 'modify', 'remove', 'configure'];
4
5
  const VALID_EFFORTS = ['trivial', 'small', 'medium', 'large'];
@@ -63,7 +64,6 @@ function parseRemediationResponse(rawText) {
63
64
  }
64
65
  const BATCH_SIZE = 15;
65
66
  export async function generateRemediationTasks(failedVerifications, partialVerifications, claims, index, onProgress) {
66
- const client = getClient();
67
67
  const claimMap = new Map(claims.map((c) => [c.id, c]));
68
68
  const tasks = [];
69
69
  let totalInputTokens = 0;
@@ -130,34 +130,26 @@ export async function generateRemediationTasks(failedVerifications, partialVerif
130
130
  })
131
131
  .join('\n\n');
132
132
  onProgress?.(`${group.label} batch ${batchNum}/${totalBatches}: generating remediation tasks...`);
133
- const response = await client.messages.create({
133
+ const response = await getProvider().complete({
134
134
  model: MODEL,
135
- max_tokens: 8_000,
136
- system: REMEDIATION_SYSTEM,
137
- messages: [
138
- {
139
- role: 'user',
140
- content: [
141
- group.emphasis,
142
- '',
143
- 'Claims requiring remediation:',
144
- claimList,
145
- '',
146
- 'Codebase file tree:',
147
- treeStr,
148
- '',
149
- 'Relevant source files:',
150
- evidenceContext,
151
- ].join('\n'),
152
- },
153
- ],
135
+ maxTokens: 8_000,
136
+ systemPrompt: REMEDIATION_SYSTEM,
137
+ userPrompt: [
138
+ group.emphasis,
139
+ '',
140
+ 'Claims requiring remediation:',
141
+ claimList,
142
+ '',
143
+ 'Codebase file tree:',
144
+ treeStr,
145
+ '',
146
+ 'Relevant source files:',
147
+ evidenceContext,
148
+ ].join('\n'),
154
149
  });
155
- totalInputTokens += response.usage.input_tokens;
156
- totalOutputTokens += response.usage.output_tokens;
157
- const responseText = response.content
158
- .filter((b) => b.type === 'text')
159
- .map((b) => b.text)
160
- .join('');
150
+ totalInputTokens += response.inputTokens ?? 0;
151
+ totalOutputTokens += response.outputTokens ?? 0;
152
+ const responseText = response.content;
161
153
  try {
162
154
  const rawTasks = parseRemediationResponse(responseText);
163
155
  for (const raw of rawTasks) {
@@ -1 +1 @@
1
- {"version":3,"file":"remediator.js","sourceRoot":"","sources":["../../src/lib/remediator.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"remediator.js","sourceRoot":"","sources":["../../src/lib/remediator.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,5 @@
1
- import { getClient, MODEL } from './anthropic.js';
1
+ import { MODEL } from './anthropic.js';
2
+ import { getProvider } from './llm-provider.js';
2
3
  import { readFileContent } from './codebase-indexer.js';
3
4
  import { dirname, resolve } from 'node:path';
4
5
  /**
@@ -167,6 +168,11 @@ function parseRequirementResponse(rawText) {
167
168
  jsonText = jsonText.slice(0, lastFence);
168
169
  }
169
170
  jsonText = jsonText.trim();
171
+ // Strip any preamble text before the first JSON object
172
+ const firstBrace = jsonText.indexOf('{');
173
+ if (firstBrace > 0) {
174
+ jsonText = jsonText.slice(firstBrace);
175
+ }
170
176
  // Handle truncation: close unclosed structures
171
177
  if (!jsonText.endsWith('}')) {
172
178
  const lastCloseBrace = jsonText.lastIndexOf('}');
@@ -218,7 +224,6 @@ function parseRequirementResponse(rawText) {
218
224
  * produce a RouteRequirement with behaviors and scaffolding flags.
219
225
  */
220
226
  export async function generateRequirement(route, index, onProgress) {
221
- const client = getClient();
222
227
  // Read the main component file
223
228
  onProgress?.(` Reading component: ${route.component}`);
224
229
  const componentSource = await readFileContent(index.rootPath, route.component);
@@ -275,23 +280,13 @@ export async function generateRequirement(route, index, onProgress) {
275
280
  .filter(Boolean)
276
281
  .join('\n');
277
282
  onProgress?.(` Sending to Claude for requirement generation...`);
278
- let rawText = '';
279
- const reqStream = client.messages.stream({
283
+ const result = await getProvider().complete({
280
284
  model: MODEL,
281
- max_tokens: 4_000,
282
- system: REQUIREMENT_SYSTEM_PROMPT,
283
- messages: [
284
- {
285
- role: 'user',
286
- content: userMessage,
287
- },
288
- ],
289
- });
290
- reqStream.on('text', (text) => {
291
- rawText += text;
285
+ maxTokens: 4_000,
286
+ systemPrompt: REQUIREMENT_SYSTEM_PROMPT,
287
+ userPrompt: userMessage,
292
288
  });
293
- const response = await reqStream.finalMessage();
294
- const parsed = parseRequirementResponse(rawText);
289
+ const parsed = parseRequirementResponse(result.content);
295
290
  // Merge Claude's findings with inventory data.
296
291
  // Claude may discover additional tables/roles beyond what inventory found.
297
292
  const mergedTables = Array.from(new Set([...(route.tables ?? []), ...parsed.tables]));
@@ -309,8 +304,8 @@ export async function generateRequirement(route, index, onProgress) {
309
304
  };
310
305
  return {
311
306
  requirement,
312
- inputTokens: response.usage.input_tokens,
313
- outputTokens: response.usage.output_tokens,
307
+ inputTokens: result.inputTokens ?? 0,
308
+ outputTokens: result.outputTokens ?? 0,
314
309
  };
315
310
  }
316
311
  //# sourceMappingURL=requirements-generator.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"requirements-generator.js","sourceRoot":"","sources":["../../src/lib/requirements-generator.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,KAAK,EAAE,MAAM,gBAAgB,CAAC;AAClD,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AAGxD,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAE7C;;GAEG;AACH,MAAM,WAAW,GAAG,EAAE,CAAC;AAEvB;;GAEG;AACH,MAAM,gBAAgB,GAAG,IAAI,CAAC;AAE9B;;GAEG;AACH,MAAM,mBAAmB,GAAG,MAAM,CAAC;AAEnC,MAAM,yBAAyB,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;gEAsD8B,CAAC;AAEjE;;GAEG;AACH,MAAM,qBAAqB,GAAG,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,CAAC,CAAC;AAE7D;;;GAGG;AACH,SAAS,kBAAkB,CAAC,MAAc;IACxC,MAAM,QAAQ,GAAa,EAAE,CAAC;IAC9B,MAAM,OAAO,GAAa,EAAE,CAAC;IAE7B,mBAAmB;IACnB,MAAM,QAAQ,GAAG,gDAAgD,CAAC;IAClE,IAAI,KAA6B,CAAC;IAClC,OAAO,CAAC,KAAK,GAAG,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,KAAK,IAAI,EAAE,CAAC;QAChD,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;IAC1B,CAAC;IAED,wBAAwB;IACxB,MAAM,UAAU,GAAG,4CAA4C,CAAC;IAChE,OAAO,CAAC,KAAK,GAAG,UAAU,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,KAAK,IAAI,EAAE,CAAC;QAClD,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;IACzB,CAAC;IAED,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,CAAC;AAC/B,CAAC;AAED;;;GAGG;AACH,SAAS,iBAAiB,CACxB,SAAiB,EACjB,YAAoB,EACpB,QAAqB;IAErB,8CAA8C;IAC9C,MAAM,QAAQ,GAAG,SAAS,CAAC,UAAU,CAAC,IAAI,CAAC;QACzC,CAAC,CAAC,OAAO,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE;QAC7B,CAAC,CAAC,OAAO,CAAC,YAAY,EAAE,SAAS,CAAC,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;IAExD,wBAAwB;IACxB,IAAI,QAAQ,CAAC,GAAG,CAAC,QAAQ,CAAC;QAAE,OAAO,QAAQ,CAAC;IAE5C,wBAAwB;IACxB,KAAK,MAAM,GAAG,IAAI,qBAAqB,EAAE,CAAC;QACxC,IAAI,QAAQ,CAAC,GAAG,CAAC,QAAQ,GAAG,GAAG,CAAC;YAAE,OAAO,QAAQ,GAAG,GAAG,CAAC;IAC1D,CAAC;IAED,sDAAsD;IACtD,KAAK,MAAM,GAAG,IAAI,qBAAqB,EAAE,CAAC;QACxC,MAAM,SAAS,GAAG,GAAG,QAAQ,SAAS,GAAG,EAAE,CAAC;QAC5C,IAAI,QAAQ,CAAC,GAAG,CAAC,SAAS,CAAC;YAAE,OAAO,SAAS,CAAC;IAChD,CAAC;IAED,OAAO,IAAI,CAAC;AACd,CAAC;AAED;;;GAGG;AACH,KAAK,UAAU,mBAAmB,CAChC,aAAqB,EACrB,eAAuB,EACvB,KAAoB;IAEpB,MAAM,OAAO,GAAG,IAAI,GAAG,EAAkB,CAAC;IAC1C,MAAM,WAAW,GAAG,IAAI,GAAG,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;IAC5C,MAAM,YAAY,GAAG,OAAO,CAAC,aAAa,CAAC,CAAC;IAE5C,MAAM,EAAE,QAAQ,EAAE,OAAO,EAAE,GAAG,kBAAkB,CAAC,eAAe,CAAC,CAAC;IAElE,gCAAgC;IAChC,MAAM,aAAa,GAAa;QAC9B,GAAG,QAAQ;QACX,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,KAAK,CAAC,EAAE,CAAC;KAChC,CAAC;IAEF,IAAI,KAAK,GAAG,CAAC,CAAC;IACd,KAAK,MAAM,SAAS,IAAI,aAAa,EAAE,CAAC;QACtC,IAAI,KAAK,IAAI,WAAW;YAAE,MAAM;QAEhC,MAAM,QAAQ,GAAG,iBAAiB,CAAC,SAAS,EAAE,YAAY,EAAE,WAAW,CAAC,CAAC;QACzE,IAAI,CAAC,QAAQ,IAAI,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC;YAAE,SAAS;QAEjD,MAAM,OAAO,GAAG,MAAM,eAAe,CAAC,KAAK,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;QAChE,IAAI,OAAO,EAAE,CAAC;YACZ,MAAM,SAAS,GACb,OAAO,CAAC,MAAM,GAAG,gBAAgB;gBAC/B,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,gBAAgB,CAAC,GAAG,mBAAmB;gBAC1D,CAAC,CAAC,OAAO,CAAC;YACd,OAAO,CAAC,GAAG,CAAC,QAAQ,EAAE,SAAS,CAAC,CAAC;YACjC,KAAK,EAAE,CAAC;QACV,CAAC;IACH,CAAC;IAED,OAAO,OAAO,CAAC;AACjB,CAAC;AAED;;GAEG;AACH,SAAS,wBAAwB,CAAC,OAAe;IAM/C,IAAI,QAAQ,GAAG,OAAO,CAAC,IAAI,EAAE,CAAC;IAE9B,4BAA4B;IAC5B,IAAI,QAAQ,CAAC,UAAU,CAAC,KAAK,CAAC,EAAE,CAAC;QAC/B,MAAM,YAAY,GAAG,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;QAC5C,IAAI,YAAY,KAAK,CAAC,CAAC,EAAE,CAAC;YACxB,QAAQ,GAAG,QAAQ,CAAC,KAAK,CAAC,YAAY,GAAG,CAAC,CAAC,CAAC;QAC9C,CAAC;IACH,CAAC;IAED,4BAA4B;IAC5B,MAAM,SAAS,GAAG,QAAQ,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;IAC9C,IAAI,SAAS,KAAK,CAAC,CAAC,EAAE,CAAC;QACrB,QAAQ,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC,EAAE,SAAS,CAAC,CAAC;IAC1C,CAAC;IAED,QAAQ,GAAG,QAAQ,CAAC,IAAI,EAAE,CAAC;IAE3B,+CAA+C;IAC/C,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC;QAC5B,MAAM,cAAc,GAAG,QAAQ,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC;QACjD,IAAI,cAAc,KAAK,CAAC,CAAC,EAAE,CAAC;YAC1B,QAAQ,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC,EAAE,cAAc,GAAG,CAAC,CAAC,CAAC;YAEjD,IAAI,UAAU,GAAG,CAAC,CAAC;YACnB,IAAI,YAAY,GAAG,CAAC,CAAC;YACrB,KAAK,MAAM,EAAE,IAAI,QAAQ,EAAE,CAAC;gBAC1B,IAAI,EAAE,KAAK,GAAG;oBAAE,UAAU,EAAE,CAAC;gBAC7B,IAAI,EAAE,KAAK,GAAG;oBAAE,UAAU,EAAE,CAAC;gBAC7B,IAAI,EAAE,KAAK,GAAG;oBAAE,YAAY,EAAE,CAAC;gBAC/B,IAAI,EAAE,KAAK,GAAG;oBAAE,YAAY,EAAE,CAAC;YACjC,CAAC;YAED,IAAI,MAAM,GAAG,EAAE,CAAC;YAChB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,YAAY,EAAE,CAAC,EAAE;gBAAE,MAAM,IAAI,GAAG,CAAC;YACrD,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,UAAU,EAAE,CAAC,EAAE;gBAAE,MAAM,IAAI,GAAG,CAAC;YACnD,QAAQ,IAAI,MAAM,CAAC;QACrB,CAAC;IACH,CAAC;IAED,IAAI,MAAe,CAAC;IACpB,IAAI,CAAC;QACH,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;IAChC,CAAC;IAAC,MAAM,CAAC;QACP,MAAM,IAAI,KAAK,CACb,iDAAiD;YAC/C,oBAAoB,QAAQ,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,CAC/C,CAAC;IACJ,CAAC;IAED,MAAM,GAAG,GAAG,MAAiC,CAAC;IAE9C,OAAO;QACL,SAAS,EAAE,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,EAAE;QACxE,gBAAgB,EAAE,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,gBAAgB,CAAC;YACnD,CAAC,CAAC,GAAG,CAAC,gBAAgB,CAAC,GAAG,CAAC,MAAM,CAAC;YAClC,CAAC,CAAC,EAAE;QACN,MAAM,EAAE,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,EAAE;QAC/D,KAAK,EAAE,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,EAAE;KAC7D,CAAC;AACJ,CAAC;AAED;;;;;;GAMG;AACH,MAAM,CAAC,KAAK,UAAU,mBAAmB,CACvC,KAAyB,EACzB,KAAoB,EACpB,UAAkC;IAElC,MAAM,MAAM,GAAG,SAAS,EAAE,CAAC;IAE3B,+BAA+B;IAC/B,UAAU,EAAE,CAAC,6BAA6B,KAAK,CAAC,SAAS,EAAE,CAAC,CAAC;IAC7D,MAAM,eAAe,GAAG,MAAM,eAAe,CAAC,KAAK,CAAC,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC,CAAC;IAE/E,IAAI,CAAC,eAAe,EAAE,CAAC;QACrB,uEAAuE;QACvE,OAAO;YACL,WAAW,EAAE;gBACX,EAAE,EAAE,EAAE;gBACN,KAAK,EAAE,KAAK,CAAC,IAAI;gBACjB,MAAM,EAAE,KAAK,CAAC,MAAM;gBACpB,SAAS,EAAE,KAAK,CAAC,SAAS;gBAC1B,KAAK,EAAE,KAAK,CAAC,KAAK;gBAClB,KAAK,EAAE,KAAK,CAAC,KAAK,IAAI,EAAE;gBACxB,MAAM,EAAE,KAAK,CAAC,MAAM,IAAI,EAAE;gBAC1B,SAAS,EAAE,EAAE;gBACb,gBAAgB,EAAE,CAAC,6BAA6B,KAAK,CAAC,SAAS,EAAE,CAAC;aACnE;YACD,WAAW,EAAE,CAAC;YACd,YAAY,EAAE,CAAC;SAChB,CAAC;IACJ,CAAC;IAED,qDAAqD;IACrD,MAAM,gBAAgB,GACpB,eAAe,CAAC,MAAM,GAAG,mBAAmB;QAC1C,CAAC,CAAC,eAAe,CAAC,KAAK,CAAC,CAAC,EAAE,mBAAmB,CAAC,GAAG,mBAAmB;QACrE,CAAC,CAAC,eAAe,CAAC;IAEtB,4BAA4B;IAC5B,UAAU,EAAE,CAAC,gCAAgC,KAAK,CAAC,SAAS,KAAK,CAAC,CAAC;IACnE,MAAM,aAAa,GAAG,MAAM,mBAAmB,CAC7C,KAAK,CAAC,SAAS,EACf,eAAe,EACf,KAAK,CACN,CAAC;IAEF,+BAA+B;IAC/B,IAAI,cAAc,GAAG,EAAE,CAAC;IACxB,IAAI,aAAa,CAAC,IAAI,GAAG,CAAC,EAAE,CAAC;QAC3B,UAAU,EAAE,CAAC,gBAAgB,aAAa,CAAC,IAAI,mBAAmB,CAAC,CAAC;QACpE,KAAK,MAAM,CAAC,IAAI,EAAE,OAAO,CAAC,IAAI,aAAa,EAAE,CAAC;YAC5C,cAAc,IAAI,mBAAmB,IAAI,SAAS,OAAO,IAAI,CAAC;QAChE,CAAC;IACH,CAAC;IAED,yBAAyB;IACzB,MAAM,WAAW,GAAG;QAClB,iFAAiF;QACjF,EAAE;QACF,oBAAoB;QACpB,WAAW,KAAK,CAAC,IAAI,EAAE;QACvB,gBAAgB,KAAK,CAAC,SAAS,EAAE;QACjC,aAAa,KAAK,CAAC,MAAM,EAAE;QAC3B,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,YAAY,KAAK,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,IAAI;QAC9C,KAAK,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC,CAAC,kBAAkB,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI;QACvE,KAAK,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC,mBAAmB,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI;QAC1E,EAAE;QACF,mBAAmB;QACnB,aAAa,KAAK,CAAC,SAAS,MAAM;QAClC,gBAAgB;QAChB,cAAc,CAAC,CAAC,CAAC,sBAAsB,cAAc,EAAE,CAAC,CAAC,CAAC,IAAI;KAC/D;SACE,MAAM,CAAC,OAAO,CAAC;SACf,IAAI,CAAC,IAAI,CAAC,CAAC;IAEd,UAAU,EAAE,CAAC,wDAAwD,CAAC,CAAC;IAEvE,IAAI,OAAO,GAAG,EAAE,CAAC;IACjB,MAAM,SAAS,GAAG,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC;QACvC,KAAK,EAAE,KAAK;QACZ,UAAU,EAAE,KAAK;QACjB,MAAM,EAAE,yBAAyB;QACjC,QAAQ,EAAE;YACR;gBACE,IAAI,EAAE,MAAM;gBACZ,OAAO,EAAE,WAAW;aACrB;SACF;KACF,CAAC,CAAC;IAEH,SAAS,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE,EAAE;QAC5B,OAAO,IAAI,IAAI,CAAC;IAClB,CAAC,CAAC,CAAC;IAEH,MAAM,QAAQ,GAAG,MAAM,SAAS,CAAC,YAAY,EAAE,CAAC;IAEhD,MAAM,MAAM,GAAG,wBAAwB,CAAC,OAAO,CAAC,CAAC;IAEjD,+CAA+C;IAC/C,2EAA2E;IAC3E,MAAM,YAAY,GAAG,KAAK,CAAC,IAAI,CAC7B,IAAI,GAAG,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,IAAI,EAAE,CAAC,EAAE,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,CACrD,CAAC;IACF,MAAM,WAAW,GAAG,KAAK,CAAC,IAAI,CAC5B,IAAI,GAAG,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,IAAI,EAAE,CAAC,EAAE,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC,CACnD,CAAC;IAEF,MAAM,WAAW,GAAqB;QACpC,EAAE,EAAE,EAAE,EAAE,gCAAgC;QACxC,KAAK,EAAE,KAAK,CAAC,IAAI;QACjB,MAAM,EAAE,KAAK,CAAC,MAAM;QACpB,SAAS,EAAE,KAAK,CAAC,SAAS;QAC1B,KAAK,EAAE,KAAK,CAAC,KAAK;QAClB,KAAK,EAAE,WAAW;QAClB,MAAM,EAAE,YAAY;QACpB,SAAS,EAAE,MAAM,CAAC,SAAS;QAC3B,gBAAgB,EAAE,MAAM,CAAC,gBAAgB;KAC1C,CAAC;IAEF,OAAO;QACL,WAAW;QACX,WAAW,EAAE,QAAQ,CAAC,KAAK,CAAC,YAAY;QACxC,YAAY,EAAE,QAAQ,CAAC,KAAK,CAAC,aAAa;KAC3C,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"requirements-generator.js","sourceRoot":"","sources":["../../src/lib/requirements-generator.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,5 @@
1
- import { getClient, MODEL } from './anthropic.js';
1
+ import { MODEL } from './anthropic.js';
2
+ import { getProvider } from './llm-provider.js';
2
3
  const SYNTHESIS_SYSTEM_PROMPT = `You are a formal specification synthesizer. Given a coding task description and target programming language, you generate a comprehensive set of formal specifications that any correct implementation MUST satisfy.
3
4
 
4
5
  SYNTHESIS RULES:
@@ -63,24 +64,14 @@ function validateSpec(raw, index) {
63
64
  };
64
65
  }
65
66
  export async function synthesizeSpecs(task, language, onProgress) {
66
- const client = getClient();
67
- onProgress?.('Sending task to Claude for spec synthesis (streaming)...');
68
- const stream = client.messages.stream({
67
+ onProgress?.('Sending task to Claude for spec synthesis...');
68
+ const result = await getProvider().complete({
69
69
  model: MODEL,
70
- max_tokens: 16_000,
71
- system: SYNTHESIS_SYSTEM_PROMPT,
72
- messages: [
73
- {
74
- role: 'user',
75
- content: `Generate formal specifications for the following coding task.\n\nLanguage: ${language}\n\nTask:\n${task}`,
76
- },
77
- ],
70
+ maxTokens: 16_000,
71
+ systemPrompt: SYNTHESIS_SYSTEM_PROMPT,
72
+ userPrompt: `Generate formal specifications for the following coding task.\n\nLanguage: ${language}\n\nTask:\n${task}`,
78
73
  });
79
- let rawText = '';
80
- stream.on('text', (text) => {
81
- rawText += text;
82
- });
83
- const finalMessage = await stream.finalMessage();
74
+ const rawText = result.content;
84
75
  onProgress?.('Parsing synthesis results...');
85
76
  // Strip markdown code fences if present
86
77
  let jsonText = rawText.trim();
@@ -129,8 +120,8 @@ export async function synthesizeSpecs(task, language, onProgress) {
129
120
  specs,
130
121
  totalSpecs: specs.length,
131
122
  synthesizedAt: new Date().toISOString(),
132
- inputTokens: finalMessage.usage.input_tokens,
133
- outputTokens: finalMessage.usage.output_tokens,
123
+ inputTokens: result.inputTokens ?? 0,
124
+ outputTokens: result.outputTokens ?? 0,
134
125
  };
135
126
  }
136
127
  //# sourceMappingURL=spec-synthesizer.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"spec-synthesizer.js","sourceRoot":"","sources":["../../src/lib/spec-synthesizer.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"spec-synthesizer.js","sourceRoot":"","sources":["../../src/lib/spec-synthesizer.ts"],"names":[],"mappings":"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"}