@nestbox-ai/cli 1.0.64 → 1.0.67

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.
@@ -1,210 +1,10 @@
1
1
  "use strict";
2
- var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
3
- function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
4
- return new (P || (P = Promise))(function (resolve, reject) {
5
- function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
6
- function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
7
- function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
8
- step((generator = generator.apply(thisArg, _arguments || [])).next());
9
- });
10
- };
11
- var __importDefault = (this && this.__importDefault) || function (mod) {
12
- return (mod && mod.__esModule) ? mod : { "default": mod };
13
- };
14
2
  Object.defineProperty(exports, "__esModule", { value: true });
15
- exports.runReportComposerAgent = runReportComposerAgent;
16
- const sdk_1 = __importDefault(require("@anthropic-ai/sdk"));
17
- const fs_1 = __importDefault(require("fs"));
18
- const path_1 = __importDefault(require("path"));
19
- const js_yaml_1 = __importDefault(require("js-yaml"));
20
- const ajv_1 = __importDefault(require("ajv"));
21
- // ─── Constants ────────────────────────────────────────────────────────────────
22
- const AGENTS_DIR = __dirname;
23
- const DEFAULT_MODEL = 'claude-sonnet-4-6';
24
- const DEFAULT_MAX_ITERATIONS = 5;
25
- // ─── Helpers ─────────────────────────────────────────────────────────────────
26
- function readLocalFile(filename) {
27
- return fs_1.default.readFileSync(path_1.default.join(AGENTS_DIR, filename), 'utf8');
28
- }
29
- function validateYaml(content, schemaContent) {
30
- var _a;
31
- // Replace ${ENV_VAR} and ${ENV_VAR:-default} references with a plain string
32
- // so YAML parses cleanly and AJV treats them as valid string values.
33
- const preprocessed = content.replace(/\$\{[^}]+\}/g, 'env-var-placeholder');
34
- let data;
35
- try {
36
- data = js_yaml_1.default.load(preprocessed);
37
- }
38
- catch (e) {
39
- return { valid: false, errors: [`YAML parse error: ${e.message}`] };
40
- }
41
- let schema;
42
- try {
43
- schema = js_yaml_1.default.load(schemaContent);
44
- }
45
- catch (e) {
46
- return { valid: false, errors: [`Schema parse error: ${e.message}`] };
47
- }
48
- const ajv = new ajv_1.default({ strict: false, allErrors: true });
49
- // Suppress "unknown format 'uri' ignored" console warnings from AJV
50
- ajv.addFormat('uri', () => true);
51
- const validate = ajv.compile(schema);
52
- const ok = validate(data);
53
- if (ok)
54
- return { valid: true, errors: [] };
55
- const errors = ((_a = validate.errors) !== null && _a !== void 0 ? _a : []).map((err) => {
56
- const loc = err.instancePath || '(root)';
57
- return `[${loc}] ${err.message}`;
58
- });
59
- return { valid: false, errors };
60
- }
61
- // ─── System Prompt ────────────────────────────────────────────────────────────
62
- function buildSystemPrompt() {
63
- const systemPrompt = readLocalFile('SYSTEM_PROMPT.md');
64
- const configGuide = readLocalFile('REPORT_CONFIG_GUIDE.md');
65
- const example1 = readLocalFile('annual_report_10k.yaml');
66
- const example2 = readLocalFile('vc_portfolio_monitoring.yaml');
67
- return [
68
- systemPrompt,
69
- '---',
70
- configGuide,
71
- '---',
72
- '# Example 1: Annual Report / 10-K Analysis\n\n```yaml\n' + example1 + '\n```',
73
- '---',
74
- '# Example 2: VC Portfolio Monitoring\n\n```yaml\n' + example2 + '\n```',
75
- ].join('\n\n');
76
- }
77
- // ─── Tool Definitions ─────────────────────────────────────────────────────────
78
- const TOOLS = [
79
- {
80
- name: 'write_and_validate_report',
81
- description: 'Write the report.yaml content and validate it against the schema. Returns "VALID" on success or a list of validation errors to fix.',
82
- input_schema: {
83
- type: 'object',
84
- properties: {
85
- yaml_content: {
86
- type: 'string',
87
- description: 'The complete YAML content for report.yaml',
88
- },
89
- },
90
- required: ['yaml_content'],
91
- },
92
- },
93
- {
94
- name: 'finish',
95
- description: 'Signal that the report.yaml is complete and valid. Call this only after write_and_validate_report has returned "VALID".',
96
- input_schema: {
97
- type: 'object',
98
- properties: {
99
- summary: {
100
- type: 'string',
101
- description: 'Brief summary of what was generated and why key choices were made',
102
- },
103
- },
104
- required: ['summary'],
105
- },
106
- },
107
- ];
108
- // ─── Agent ────────────────────────────────────────────────────────────────────
109
- function runReportComposerAgent(options) {
110
- return __awaiter(this, void 0, void 0, function* () {
111
- const { instructions, anthropicApiKey, model = DEFAULT_MODEL, maxIterations = DEFAULT_MAX_ITERATIONS, onProgress = () => { }, } = options;
112
- const reportSchema = readLocalFile('report_config.schema.yaml');
113
- const client = new sdk_1.default({ apiKey: anthropicApiKey });
114
- // Mutable state updated by tool calls
115
- let latestReport = '';
116
- let reportValid = false;
117
- let finished = false;
118
- let iteration = 0;
119
- // Execute a tool call and return the result string
120
- function executeTool(name, input) {
121
- var _a;
122
- if (name === 'write_and_validate_report') {
123
- const content = (_a = input.yaml_content) !== null && _a !== void 0 ? _a : '';
124
- latestReport = content;
125
- const result = validateYaml(content, reportSchema);
126
- reportValid = result.valid;
127
- if (result.valid)
128
- return 'VALID';
129
- return `VALIDATION ERRORS — fix all of these before calling again:\n${result.errors.map((e) => ` • ${e}`).join('\n')}`;
130
- }
131
- if (name === 'finish') {
132
- if (!reportValid) {
133
- return 'Cannot finish: the report has not passed schema validation yet. Call write_and_validate_report first and ensure it returns "VALID".';
134
- }
135
- finished = true;
136
- return 'Done.';
137
- }
138
- return `Unknown tool: ${name}`;
139
- }
140
- // Build the system prompt once and mark it for caching.
141
- // On iteration 1 the prompt is written to the cache (normal price).
142
- // On iterations 2+ the large system prompt is read from cache at
143
- // 10% of the normal input token price.
144
- const systemPromptText = buildSystemPrompt();
145
- const systemPrompt = [
146
- {
147
- type: 'text',
148
- text: systemPromptText,
149
- cache_control: { type: 'ephemeral' },
150
- },
151
- ];
152
- const messages = [
153
- {
154
- role: 'user',
155
- content: `Here are the instructions for the report you need to configure:\n\n${instructions}\n\nGenerate the report.yaml file now. Use the tools to write and validate it.`,
156
- },
157
- ];
158
- onProgress('Starting agent...');
159
- while (iteration < maxIterations && !finished) {
160
- iteration++;
161
- onProgress(`Iteration ${iteration}/${maxIterations} — calling Claude...`);
162
- const response = yield client.messages.create({
163
- model,
164
- max_tokens: 8096,
165
- system: systemPrompt,
166
- tools: TOOLS,
167
- // Force Claude to call a tool every turn — prevents it from
168
- // replying with plain text and exiting the loop prematurely.
169
- tool_choice: { type: 'any' },
170
- messages,
171
- });
172
- // Append assistant turn
173
- messages.push({ role: 'assistant', content: response.content });
174
- if (response.stop_reason !== 'tool_use') {
175
- onProgress(`Agent stopped unexpectedly: ${response.stop_reason}`);
176
- break;
177
- }
178
- // Process all tool calls and collect results
179
- const toolResults = [];
180
- for (const block of response.content) {
181
- if (block.type !== 'tool_use')
182
- continue;
183
- onProgress(` → tool: ${block.name}`);
184
- const result = executeTool(block.name, block.input);
185
- onProgress(` ${result.startsWith('VALID') ? '✓ valid' : result.split('\n')[0]}`);
186
- toolResults.push({
187
- type: 'tool_result',
188
- tool_use_id: block.id,
189
- content: result,
190
- });
191
- if (finished)
192
- break;
193
- }
194
- if (toolResults.length > 0) {
195
- messages.push({ role: 'user', content: toolResults });
196
- }
197
- if (finished)
198
- break;
199
- }
200
- if (iteration >= maxIterations && !finished) {
201
- onProgress(`Warning: reached max iterations (${maxIterations}) without finishing.`);
202
- }
203
- return {
204
- reportYaml: latestReport,
205
- iterations: iteration,
206
- reportValid,
207
- };
208
- });
209
- }
3
+ exports.OPENAI_DEFAULT_MODEL = exports.runReportComposerAgentWithOpenAI = exports.ANTHROPIC_DEFAULT_MODEL = exports.runReportComposerAgent = void 0;
4
+ var anthropic_1 = require("./anthropic");
5
+ Object.defineProperty(exports, "runReportComposerAgent", { enumerable: true, get: function () { return anthropic_1.runReportComposerAgent; } });
6
+ Object.defineProperty(exports, "ANTHROPIC_DEFAULT_MODEL", { enumerable: true, get: function () { return anthropic_1.DEFAULT_MODEL; } });
7
+ var openai_1 = require("./openai");
8
+ Object.defineProperty(exports, "runReportComposerAgentWithOpenAI", { enumerable: true, get: function () { return openai_1.runReportComposerAgentWithOpenAI; } });
9
+ Object.defineProperty(exports, "OPENAI_DEFAULT_MODEL", { enumerable: true, get: function () { return openai_1.DEFAULT_MODEL; } });
210
10
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/agents/reportGenerator/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/agents/reportGenerator/index.ts"],"names":[],"mappings":";;;AAAA,yCAAsJ;AAA7I,mHAAA,sBAAsB,OAAA;AAAyD,oHAAA,aAAa,OAA2B;AAChI,mCAAqI;AAA5H,0HAAA,gCAAgC,OAAA;AAAoC,8GAAA,aAAa,OAAwB"}
@@ -0,0 +1,16 @@
1
+ import type { ReportComposerAgentResult } from './anthropic';
2
+ export type { ReportComposerAgentResult };
3
+ export interface ReportComposerOpenAIAgentOptions {
4
+ /** Full instruction text (from the instructions file) */
5
+ instructions: string;
6
+ /** OpenAI API key */
7
+ openAiApiKey: string;
8
+ /** OpenAI model ID, e.g. "gpt-4o" */
9
+ model?: string;
10
+ /** Maximum agentic iterations before giving up */
11
+ maxIterations?: number;
12
+ /** Called on each status update (for spinner / logging) */
13
+ onProgress?: (message: string) => void;
14
+ }
15
+ export declare const DEFAULT_MODEL = "gpt-4o";
16
+ export declare function runReportComposerAgentWithOpenAI(options: ReportComposerOpenAIAgentOptions): Promise<ReportComposerAgentResult>;
@@ -0,0 +1,203 @@
1
+ "use strict";
2
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
3
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
4
+ return new (P || (P = Promise))(function (resolve, reject) {
5
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
6
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
7
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
8
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
9
+ });
10
+ };
11
+ var __importDefault = (this && this.__importDefault) || function (mod) {
12
+ return (mod && mod.__esModule) ? mod : { "default": mod };
13
+ };
14
+ Object.defineProperty(exports, "__esModule", { value: true });
15
+ exports.DEFAULT_MODEL = void 0;
16
+ exports.runReportComposerAgentWithOpenAI = runReportComposerAgentWithOpenAI;
17
+ const openai_1 = __importDefault(require("openai"));
18
+ const fs_1 = __importDefault(require("fs"));
19
+ const path_1 = __importDefault(require("path"));
20
+ const js_yaml_1 = __importDefault(require("js-yaml"));
21
+ const ajv_1 = __importDefault(require("ajv"));
22
+ // ─── Constants ────────────────────────────────────────────────────────────────
23
+ const AGENTS_DIR = __dirname;
24
+ exports.DEFAULT_MODEL = 'gpt-4o';
25
+ const DEFAULT_MAX_ITERATIONS = 5;
26
+ // ─── Helpers ─────────────────────────────────────────────────────────────────
27
+ function readLocalFile(filename) {
28
+ return fs_1.default.readFileSync(path_1.default.join(AGENTS_DIR, filename), 'utf8');
29
+ }
30
+ function validateYaml(content, schemaContent) {
31
+ var _a;
32
+ const preprocessed = content.replace(/\$\{[^}]+\}/g, 'env-var-placeholder');
33
+ let data;
34
+ try {
35
+ data = js_yaml_1.default.load(preprocessed);
36
+ }
37
+ catch (e) {
38
+ return { valid: false, errors: [`YAML parse error: ${e.message}`] };
39
+ }
40
+ let schema;
41
+ try {
42
+ schema = js_yaml_1.default.load(schemaContent);
43
+ }
44
+ catch (e) {
45
+ return { valid: false, errors: [`Schema parse error: ${e.message}`] };
46
+ }
47
+ // Remove $schema so AJV doesn't try to resolve the meta-schema URI
48
+ // (AJV 8 defaults to draft-07 and doesn't recognise draft 2020-12).
49
+ delete schema['$schema'];
50
+ const ajv = new ajv_1.default({ strict: false, allErrors: true });
51
+ ajv.addFormat('uri', () => true);
52
+ const validate = ajv.compile(schema);
53
+ const ok = validate(data);
54
+ if (ok)
55
+ return { valid: true, errors: [] };
56
+ const errors = ((_a = validate.errors) !== null && _a !== void 0 ? _a : []).map((err) => {
57
+ const loc = err.instancePath || '(root)';
58
+ return `[${loc}] ${err.message}`;
59
+ });
60
+ return { valid: false, errors };
61
+ }
62
+ // ─── System Prompt ────────────────────────────────────────────────────────────
63
+ function buildSystemPrompt() {
64
+ const systemPrompt = readLocalFile('SYSTEM_PROMPT.md');
65
+ const configGuide = readLocalFile('REPORT_CONFIG_GUIDE.md');
66
+ const example1 = readLocalFile('annual_report_10k.yaml');
67
+ const example2 = readLocalFile('vc_portfolio_monitoring.yaml');
68
+ return [
69
+ systemPrompt,
70
+ '---',
71
+ configGuide,
72
+ '---',
73
+ '# Example 1: Annual Report / 10-K Analysis\n\n```yaml\n' + example1 + '\n```',
74
+ '---',
75
+ '# Example 2: VC Portfolio Monitoring\n\n```yaml\n' + example2 + '\n```',
76
+ ].join('\n\n');
77
+ }
78
+ // ─── Tool Definitions ─────────────────────────────────────────────────────────
79
+ const TOOLS = [
80
+ {
81
+ type: 'function',
82
+ function: {
83
+ name: 'write_and_validate_report',
84
+ description: 'Write the report.yaml content and validate it against the schema. Returns "VALID" on success or a list of validation errors to fix.',
85
+ parameters: {
86
+ type: 'object',
87
+ properties: {
88
+ yaml_content: {
89
+ type: 'string',
90
+ description: 'The complete YAML content for report.yaml',
91
+ },
92
+ },
93
+ required: ['yaml_content'],
94
+ },
95
+ },
96
+ },
97
+ {
98
+ type: 'function',
99
+ function: {
100
+ name: 'finish',
101
+ description: 'Signal that the report.yaml is complete and valid. Call this only after write_and_validate_report has returned "VALID".',
102
+ parameters: {
103
+ type: 'object',
104
+ properties: {
105
+ summary: {
106
+ type: 'string',
107
+ description: 'Brief summary of what was generated and why key choices were made',
108
+ },
109
+ },
110
+ required: ['summary'],
111
+ },
112
+ },
113
+ },
114
+ ];
115
+ // ─── Agent ────────────────────────────────────────────────────────────────────
116
+ function runReportComposerAgentWithOpenAI(options) {
117
+ return __awaiter(this, void 0, void 0, function* () {
118
+ var _a;
119
+ const { instructions, openAiApiKey, model = exports.DEFAULT_MODEL, maxIterations = DEFAULT_MAX_ITERATIONS, onProgress = () => { }, } = options;
120
+ const reportSchema = readLocalFile('report_config.schema.yaml');
121
+ const client = new openai_1.default({ apiKey: openAiApiKey });
122
+ let latestReport = '';
123
+ let reportValid = false;
124
+ let finished = false;
125
+ let iteration = 0;
126
+ function executeTool(name, input) {
127
+ var _a;
128
+ if (name === 'write_and_validate_report') {
129
+ const content = (_a = input.yaml_content) !== null && _a !== void 0 ? _a : '';
130
+ latestReport = content;
131
+ const result = validateYaml(content, reportSchema);
132
+ reportValid = result.valid;
133
+ if (result.valid)
134
+ return 'VALID';
135
+ return `VALIDATION ERRORS — fix all of these before calling again:\n${result.errors.map((e) => ` • ${e}`).join('\n')}`;
136
+ }
137
+ if (name === 'finish') {
138
+ if (!reportValid) {
139
+ return 'Cannot finish: the report has not passed schema validation yet. Call write_and_validate_report first and ensure it returns "VALID".';
140
+ }
141
+ finished = true;
142
+ return 'Done.';
143
+ }
144
+ return `Unknown tool: ${name}`;
145
+ }
146
+ const systemPromptText = buildSystemPrompt();
147
+ const messages = [
148
+ { role: 'system', content: systemPromptText },
149
+ {
150
+ role: 'user',
151
+ content: `Here are the instructions for the report you need to configure:\n\n${instructions}\n\nGenerate the report.yaml file now. Use the tools to write and validate it.`,
152
+ },
153
+ ];
154
+ onProgress('Starting agent...');
155
+ while (iteration < maxIterations && !finished) {
156
+ iteration++;
157
+ onProgress(`Iteration ${iteration}/${maxIterations} — calling OpenAI...`);
158
+ const response = yield client.chat.completions.create({
159
+ model,
160
+ messages,
161
+ tools: TOOLS,
162
+ // Force the model to call a tool every turn.
163
+ tool_choice: 'required',
164
+ });
165
+ const message = response.choices[0].message;
166
+ messages.push(message);
167
+ if (response.choices[0].finish_reason !== 'tool_calls') {
168
+ onProgress(`Agent stopped unexpectedly: ${response.choices[0].finish_reason}`);
169
+ break;
170
+ }
171
+ const toolResultMessages = [];
172
+ for (const toolCall of (_a = message.tool_calls) !== null && _a !== void 0 ? _a : []) {
173
+ if (toolCall.type !== 'function')
174
+ continue;
175
+ onProgress(` → tool: ${toolCall.function.name}`);
176
+ const input = JSON.parse(toolCall.function.arguments);
177
+ const result = executeTool(toolCall.function.name, input);
178
+ onProgress(` ${result.startsWith('VALID') ? '✓ valid' : result.split('\n')[0]}`);
179
+ toolResultMessages.push({
180
+ role: 'tool',
181
+ tool_call_id: toolCall.id,
182
+ content: result,
183
+ });
184
+ if (finished)
185
+ break;
186
+ }
187
+ if (toolResultMessages.length > 0) {
188
+ messages.push(...toolResultMessages);
189
+ }
190
+ if (finished)
191
+ break;
192
+ }
193
+ if (iteration >= maxIterations && !finished) {
194
+ onProgress(`Warning: reached max iterations (${maxIterations}) without finishing.`);
195
+ }
196
+ return {
197
+ reportYaml: latestReport,
198
+ iterations: iteration,
199
+ reportValid,
200
+ };
201
+ });
202
+ }
203
+ //# sourceMappingURL=openai.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"openai.js","sourceRoot":"","sources":["../../../src/agents/reportGenerator/openai.ts"],"names":[],"mappings":"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"}
@@ -17,7 +17,8 @@ const chalk_1 = __importDefault(require("chalk"));
17
17
  const fs_1 = __importDefault(require("fs"));
18
18
  const path_1 = __importDefault(require("path"));
19
19
  const ora_1 = __importDefault(require("ora"));
20
- const docProc_1 = require("../../agents/docProc");
20
+ const anthropic_1 = require("../../agents/docProc/anthropic");
21
+ const openai_1 = require("../../agents/docProc/openai");
21
22
  // ─── Command ──────────────────────────────────────────────────────────────────
22
23
  function registerDocProcGenerateCommand(generateCommand) {
23
24
  generateCommand
@@ -25,17 +26,24 @@ function registerDocProcGenerateCommand(generateCommand) {
25
26
  .description('Generate a document pipeline config.yaml and eval.yaml from an instructions file using Claude AI')
26
27
  .requiredOption('-f, --file <path>', 'Path to the instructions Markdown file')
27
28
  .requiredOption('-o, --output <dir>', 'Output directory for the generated files')
28
- .requiredOption('--anthropicApiKey <key>', 'Anthropic API key (or set ANTHROPIC_API_KEY env var)')
29
- .option('--model <model>', 'Claude model ID', 'claude-sonnet-4-6')
29
+ .option('--anthropicApiKey <key>', 'Anthropic API key (or set ANTHROPIC_API_KEY env var)')
30
+ .option('--openAiApiKey <key>', 'OpenAI API key (or set OPENAI_API_KEY env var)')
31
+ .option('--model <model>', 'Model ID (defaults to claude-sonnet-4-6 for Anthropic, gpt-4o for OpenAI)')
30
32
  .option('--maxIterations <n>', 'Maximum agent iterations', '8')
31
33
  .action((options) => __awaiter(this, void 0, void 0, function* () {
32
- var _a, _b;
33
- // ── Resolve API key (flag takes priority over env var) ─────────────────
34
- const apiKey = options.anthropicApiKey || process.env.ANTHROPIC_API_KEY;
35
- if (!apiKey) {
36
- console.error(chalk_1.default.red('Error: Anthropic API key required. Use --anthropicApiKey or set ANTHROPIC_API_KEY.'));
34
+ var _a, _b, _c;
35
+ // ── Resolve API keys ────────────────────────────────────────────────────
36
+ const anthropicKey = options.anthropicApiKey || process.env.ANTHROPIC_API_KEY;
37
+ const openAiKey = options.openAiApiKey || process.env.OPENAI_API_KEY;
38
+ if (!anthropicKey && !openAiKey) {
39
+ console.error(chalk_1.default.red('Error: An API key is required. Provide --anthropicApiKey / ANTHROPIC_API_KEY or --openAiApiKey / OPENAI_API_KEY.'));
37
40
  process.exit(1);
38
41
  }
42
+ // Anthropic takes precedence when both are available
43
+ const useAnthropic = !!anthropicKey;
44
+ const provider = useAnthropic ? 'Claude (Anthropic)' : 'GPT (OpenAI)';
45
+ const defaultModel = useAnthropic ? 'claude-sonnet-4-6' : 'gpt-4o';
46
+ const model = (_a = options.model) !== null && _a !== void 0 ? _a : defaultModel;
39
47
  // ── Read instructions file ──────────────────────────────────────────────
40
48
  const instructionsPath = path_1.default.resolve(options.file);
41
49
  if (!fs_1.default.existsSync(instructionsPath)) {
@@ -56,21 +64,24 @@ function registerDocProcGenerateCommand(generateCommand) {
56
64
  console.log(chalk_1.default.bold('\nNestbox — Document Pipeline Generator'));
57
65
  console.log(chalk_1.default.dim(`Instructions: ${instructionsPath}`));
58
66
  console.log(chalk_1.default.dim(`Output: ${outputDir}`));
59
- console.log(chalk_1.default.dim(`Model: ${options.model}`));
67
+ console.log(chalk_1.default.dim(`Provider: ${provider}`));
68
+ console.log(chalk_1.default.dim(`Model: ${model}`));
60
69
  console.log();
61
70
  const spinner = (0, ora_1.default)('Initialising agent...').start();
62
71
  try {
63
- const result = yield (0, docProc_1.runDocProcAgent)({
72
+ const agentOptions = {
64
73
  instructions,
65
- anthropicApiKey: apiKey,
66
- model: options.model,
67
- maxIterations: parseInt((_a = options.maxIterations) !== null && _a !== void 0 ? _a : '8', 10),
74
+ model,
75
+ maxIterations: parseInt((_b = options.maxIterations) !== null && _b !== void 0 ? _b : '8', 10),
68
76
  onProgress: (msg) => {
69
77
  spinner.text = msg;
70
78
  },
71
- });
79
+ };
80
+ const result = useAnthropic
81
+ ? yield (0, anthropic_1.runDocProcAgent)(Object.assign(Object.assign({}, agentOptions), { anthropicApiKey: anthropicKey }))
82
+ : yield (0, openai_1.runDocProcAgentWithOpenAI)(Object.assign(Object.assign({}, agentOptions), { openAiApiKey: openAiKey }));
72
83
  spinner.stop();
73
- // ── Write output files (always write whatever was produced) ──────────
84
+ // ── Write output files ────────────────────────────────────────────────
74
85
  const configWritten = result.configYaml.trim().length > 0;
75
86
  const evalWritten = result.evalYaml.trim().length > 0;
76
87
  if (configWritten)
@@ -103,7 +114,7 @@ function registerDocProcGenerateCommand(generateCommand) {
103
114
  }
104
115
  catch (err) {
105
116
  spinner.stop();
106
- console.error(chalk_1.default.red(`\nError: ${(_b = err === null || err === void 0 ? void 0 : err.message) !== null && _b !== void 0 ? _b : err}`));
117
+ console.error(chalk_1.default.red(`\nError: ${(_c = err === null || err === void 0 ? void 0 : err.message) !== null && _c !== void 0 ? _c : err}`));
107
118
  process.exit(1);
108
119
  }
109
120
  }));
@@ -1 +1 @@
1
- {"version":3,"file":"docProc.js","sourceRoot":"","sources":["../../../src/commands/generate/docProc.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"docProc.js","sourceRoot":"","sources":["../../../src/commands/generate/docProc.ts"],"names":[],"mappings":"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"}