corydora 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (117) hide show
  1. package/CHANGELOG.md +11 -0
  2. package/LICENSE +21 -0
  3. package/README.md +165 -0
  4. package/dist/agents/builtin-agents.d.ts +2 -0
  5. package/dist/agents/builtin-agents.js +75 -0
  6. package/dist/agents/builtin-agents.js.map +1 -0
  7. package/dist/agents/catalog.d.ts +4 -0
  8. package/dist/agents/catalog.js +49 -0
  9. package/dist/agents/catalog.js.map +1 -0
  10. package/dist/agents/frontmatter.d.ts +5 -0
  11. package/dist/agents/frontmatter.js +30 -0
  12. package/dist/agents/frontmatter.js.map +1 -0
  13. package/dist/commands/agents-import.d.ts +2 -0
  14. package/dist/commands/agents-import.js +12 -0
  15. package/dist/commands/agents-import.js.map +1 -0
  16. package/dist/commands/agents-list.d.ts +2 -0
  17. package/dist/commands/agents-list.js +26 -0
  18. package/dist/commands/agents-list.js.map +1 -0
  19. package/dist/commands/attach.d.ts +1 -0
  20. package/dist/commands/attach.js +16 -0
  21. package/dist/commands/attach.js.map +1 -0
  22. package/dist/commands/config-validate.d.ts +2 -0
  23. package/dist/commands/config-validate.js +10 -0
  24. package/dist/commands/config-validate.js.map +1 -0
  25. package/dist/commands/doctor.d.ts +2 -0
  26. package/dist/commands/doctor.js +32 -0
  27. package/dist/commands/doctor.js.map +1 -0
  28. package/dist/commands/helpers.d.ts +4 -0
  29. package/dist/commands/helpers.js +21 -0
  30. package/dist/commands/helpers.js.map +1 -0
  31. package/dist/commands/init.d.ts +7 -0
  32. package/dist/commands/init.js +117 -0
  33. package/dist/commands/init.js.map +1 -0
  34. package/dist/commands/run.d.ts +11 -0
  35. package/dist/commands/run.js +90 -0
  36. package/dist/commands/run.js.map +1 -0
  37. package/dist/commands/status.d.ts +2 -0
  38. package/dist/commands/status.js +40 -0
  39. package/dist/commands/status.js.map +1 -0
  40. package/dist/commands/stop.d.ts +2 -0
  41. package/dist/commands/stop.js +25 -0
  42. package/dist/commands/stop.js.map +1 -0
  43. package/dist/config/env.d.ts +2 -0
  44. package/dist/config/env.js +68 -0
  45. package/dist/config/env.js.map +1 -0
  46. package/dist/config/files.d.ts +6 -0
  47. package/dist/config/files.js +74 -0
  48. package/dist/config/files.js.map +1 -0
  49. package/dist/config/schema.d.ts +93 -0
  50. package/dist/config/schema.js +113 -0
  51. package/dist/config/schema.js.map +1 -0
  52. package/dist/constants.d.ts +16 -0
  53. package/dist/constants.js +79 -0
  54. package/dist/constants.js.map +1 -0
  55. package/dist/filesystem/discovery.d.ts +6 -0
  56. package/dist/filesystem/discovery.js +74 -0
  57. package/dist/filesystem/discovery.js.map +1 -0
  58. package/dist/filesystem/gitignore.d.ts +1 -0
  59. package/dist/filesystem/gitignore.js +37 -0
  60. package/dist/filesystem/gitignore.js.map +1 -0
  61. package/dist/filesystem/project.d.ts +3 -0
  62. package/dist/filesystem/project.js +103 -0
  63. package/dist/filesystem/project.js.map +1 -0
  64. package/dist/git/isolation.d.ts +15 -0
  65. package/dist/git/isolation.js +64 -0
  66. package/dist/git/isolation.js.map +1 -0
  67. package/dist/git/repository.d.ts +5 -0
  68. package/dist/git/repository.js +28 -0
  69. package/dist/git/repository.js.map +1 -0
  70. package/dist/index.d.ts +2 -0
  71. package/dist/index.js +114 -0
  72. package/dist/index.js.map +1 -0
  73. package/dist/providers/api.d.ts +2 -0
  74. package/dist/providers/api.js +438 -0
  75. package/dist/providers/api.js.map +1 -0
  76. package/dist/providers/cli.d.ts +2 -0
  77. package/dist/providers/cli.js +326 -0
  78. package/dist/providers/cli.js.map +1 -0
  79. package/dist/providers/fake.d.ts +11 -0
  80. package/dist/providers/fake.js +61 -0
  81. package/dist/providers/fake.js.map +1 -0
  82. package/dist/providers/index.d.ts +4 -0
  83. package/dist/providers/index.js +27 -0
  84. package/dist/providers/index.js.map +1 -0
  85. package/dist/providers/utils.d.ts +40 -0
  86. package/dist/providers/utils.js +228 -0
  87. package/dist/providers/utils.js.map +1 -0
  88. package/dist/queue/render.d.ts +2 -0
  89. package/dist/queue/render.js +52 -0
  90. package/dist/queue/render.js.map +1 -0
  91. package/dist/queue/state.d.ts +12 -0
  92. package/dist/queue/state.js +117 -0
  93. package/dist/queue/state.js.map +1 -0
  94. package/dist/runtime/prompts.d.ts +17 -0
  95. package/dist/runtime/prompts.js +102 -0
  96. package/dist/runtime/prompts.js.map +1 -0
  97. package/dist/runtime/run-session.d.ts +11 -0
  98. package/dist/runtime/run-session.js +292 -0
  99. package/dist/runtime/run-session.js.map +1 -0
  100. package/dist/runtime/scheduler.d.ts +4 -0
  101. package/dist/runtime/scheduler.js +63 -0
  102. package/dist/runtime/scheduler.js.map +1 -0
  103. package/dist/runtime/tmux.d.ts +8 -0
  104. package/dist/runtime/tmux.js +58 -0
  105. package/dist/runtime/tmux.js.map +1 -0
  106. package/dist/types/domain.d.ts +206 -0
  107. package/dist/types/domain.js +2 -0
  108. package/dist/types/domain.js.map +1 -0
  109. package/dist/ui/menu.d.ts +1 -0
  110. package/dist/ui/menu.js +18 -0
  111. package/dist/ui/menu.js.map +1 -0
  112. package/dist/ui/output.d.ts +8 -0
  113. package/dist/ui/output.js +32 -0
  114. package/dist/ui/output.js.map +1 -0
  115. package/logo.webp +0 -0
  116. package/package.json +89 -0
  117. package/schemas/corydora.schema.json +194 -0
package/dist/index.js ADDED
@@ -0,0 +1,114 @@
1
+ #!/usr/bin/env node
2
+ import { Command } from 'commander';
3
+ import { runAgentsImportCommand } from './commands/agents-import.js';
4
+ import { runAgentsListCommand } from './commands/agents-list.js';
5
+ import { runAttachCommand } from './commands/attach.js';
6
+ import { runConfigValidateCommand } from './commands/config-validate.js';
7
+ import { runDoctorCommand } from './commands/doctor.js';
8
+ import { configExists, resolveProjectRoot } from './commands/helpers.js';
9
+ import { runInitCommand } from './commands/init.js';
10
+ import { runRunCommand } from './commands/run.js';
11
+ import { runStatusCommand } from './commands/status.js';
12
+ import { runStopCommand } from './commands/stop.js';
13
+ import { selectMainAction } from './ui/menu.js';
14
+ import { createUi } from './ui/output.js';
15
+ const program = new Command();
16
+ program
17
+ .name('corydora')
18
+ .description('Provider-neutral overnight AI code scrubbing CLI')
19
+ .option('--json', 'Print machine-readable output', false);
20
+ program.action(async (_options, command) => {
21
+ const options = command.optsWithGlobals();
22
+ const ui = createUi(options.json);
23
+ const projectRoot = resolveProjectRoot(process.cwd());
24
+ if (!configExists(projectRoot)) {
25
+ await runInitCommand({ projectRoot, json: options.json }, ui);
26
+ return;
27
+ }
28
+ if (!process.stdout.isTTY) {
29
+ await runStatusCommand(projectRoot, options.json, ui);
30
+ return;
31
+ }
32
+ const action = await selectMainAction();
33
+ if (!action) {
34
+ return;
35
+ }
36
+ if (action === 'run') {
37
+ await runRunCommand({ projectRoot, json: options.json }, ui);
38
+ return;
39
+ }
40
+ if (action === 'status') {
41
+ await runStatusCommand(projectRoot, options.json, ui);
42
+ return;
43
+ }
44
+ if (action === 'doctor') {
45
+ await runDoctorCommand(projectRoot, options.json, ui);
46
+ return;
47
+ }
48
+ await runInitCommand({ projectRoot, json: options.json }, ui);
49
+ });
50
+ program
51
+ .command('init')
52
+ .option('--yes', 'Accept defaults without prompting', false)
53
+ .action(async (commandOptions) => {
54
+ const ui = createUi(Boolean(program.opts().json));
55
+ await runInitCommand({
56
+ projectRoot: resolveProjectRoot(process.cwd()),
57
+ json: Boolean(program.opts().json),
58
+ yes: Boolean(commandOptions.yes),
59
+ }, ui);
60
+ });
61
+ program
62
+ .command('run')
63
+ .option('--dry-run', 'Run without executing provider actions', false)
64
+ .option('--background', 'Launch in tmux when available', false)
65
+ .option('--foreground', 'Force foreground mode', false)
66
+ .option('--resume', 'Resume the last recorded run state', false)
67
+ .option('--session-name <name>', 'Internal tmux session metadata')
68
+ .action(async (commandOptions) => {
69
+ const ui = createUi(Boolean(program.opts().json));
70
+ await runRunCommand({
71
+ projectRoot: resolveProjectRoot(process.cwd()),
72
+ json: Boolean(program.opts().json),
73
+ dryRun: Boolean(commandOptions.dryRun),
74
+ background: Boolean(commandOptions.background),
75
+ foreground: Boolean(commandOptions.foreground),
76
+ resume: Boolean(commandOptions.resume),
77
+ sessionName: typeof commandOptions.sessionName === 'string' ? commandOptions.sessionName : undefined,
78
+ }, ui);
79
+ });
80
+ program.command('status').action(async () => {
81
+ const ui = createUi(Boolean(program.opts().json));
82
+ await runStatusCommand(resolveProjectRoot(process.cwd()), Boolean(program.opts().json), ui);
83
+ });
84
+ program.command('attach').action(async () => {
85
+ await runAttachCommand(resolveProjectRoot(process.cwd()));
86
+ });
87
+ program.command('stop').action(async () => {
88
+ const ui = createUi(Boolean(program.opts().json));
89
+ await runStopCommand(resolveProjectRoot(process.cwd()), Boolean(program.opts().json), ui);
90
+ });
91
+ program.command('doctor').action(async () => {
92
+ const ui = createUi(Boolean(program.opts().json));
93
+ await runDoctorCommand(resolveProjectRoot(process.cwd()), Boolean(program.opts().json), ui);
94
+ });
95
+ const agentsCommand = program.command('agents');
96
+ agentsCommand.command('list').action(async () => {
97
+ const ui = createUi(Boolean(program.opts().json));
98
+ await runAgentsListCommand(resolveProjectRoot(process.cwd()), Boolean(program.opts().json), ui);
99
+ });
100
+ agentsCommand.command('import <dir>').action(async (sourceDirectory) => {
101
+ const ui = createUi(Boolean(program.opts().json));
102
+ await runAgentsImportCommand(resolveProjectRoot(process.cwd()), String(sourceDirectory), Boolean(program.opts().json), ui);
103
+ });
104
+ const configCommand = program.command('config');
105
+ configCommand.command('validate').action(async () => {
106
+ const ui = createUi(Boolean(program.opts().json));
107
+ await runConfigValidateCommand(resolveProjectRoot(process.cwd()), Boolean(program.opts().json), ui);
108
+ });
109
+ program.parseAsync(process.argv).catch((error) => {
110
+ const message = error instanceof Error ? error.message : String(error);
111
+ process.stderr.write(`${message}\n`);
112
+ process.exit(1);
113
+ });
114
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ import type { RuntimeAdapter } from '../types/domain.js';
2
+ export declare const API_RUNTIME_ADAPTERS: RuntimeAdapter[];
@@ -0,0 +1,438 @@
1
+ import { writeFile } from 'node:fs/promises';
2
+ import Anthropic from '@anthropic-ai/sdk';
3
+ import { BedrockRuntimeClient, ConverseCommand } from '@aws-sdk/client-bedrock-runtime';
4
+ import OpenAI from 'openai';
5
+ import { buildProbe, createRetryableError, isRetryableError, missingAuth, normalizeFixResult, normalizeScanResult, resolvePathWithinRoot, retryAsync, successAuth, unknownAuth, } from './utils.js';
6
+ const RETRYABLE_STATUS_CODES = new Set([408, 429, 500, 502, 503, 504]);
7
+ const RETRYABLE_BEDROCK_ERROR_NAMES = new Set([
8
+ 'InternalServerException',
9
+ 'ModelTimeoutException',
10
+ 'ServiceUnavailableException',
11
+ 'ThrottlingException',
12
+ 'TimeoutError',
13
+ ]);
14
+ class ApiRuntimeAdapter {
15
+ id;
16
+ label;
17
+ models;
18
+ executionMode = 'single-file-json';
19
+ constructor(id, label, models) {
20
+ this.id = id;
21
+ this.label = label;
22
+ this.models = models;
23
+ }
24
+ suggestModels() {
25
+ return this.models;
26
+ }
27
+ async doctor(projectRoot) {
28
+ const probe = await this.probe(projectRoot);
29
+ return [
30
+ {
31
+ id: `${probe.provider}-auth`,
32
+ ok: probe.auth.status === 'ready',
33
+ message: probe.auth.message,
34
+ },
35
+ ];
36
+ }
37
+ }
38
+ function extractApiKey(envName) {
39
+ for (const key of envName) {
40
+ const value = process.env[key];
41
+ if (value && value.trim().length > 0) {
42
+ return value.trim();
43
+ }
44
+ }
45
+ return null;
46
+ }
47
+ function applyFileEditsToResult(workingDirectory, parsed) {
48
+ const fileEdits = parsed.fileEdits;
49
+ if (!fileEdits || fileEdits.length === 0) {
50
+ return Promise.resolve(parsed);
51
+ }
52
+ return Promise.all(fileEdits.map((edit) => writeFile(resolvePathWithinRoot(workingDirectory, edit.path), edit.content, 'utf8'))).then(() => ({
53
+ ...parsed,
54
+ changedFiles: parsed.changedFiles.length > 0 ? parsed.changedFiles : fileEdits.map((edit) => edit.path),
55
+ }));
56
+ }
57
+ function isRetryableStatusCode(status) {
58
+ return RETRYABLE_STATUS_CODES.has(status);
59
+ }
60
+ function isRetryableBedrockError(error) {
61
+ return error instanceof Error && RETRYABLE_BEDROCK_ERROR_NAMES.has(error.name);
62
+ }
63
+ async function postJsonWithRetries(context, url, providerLabel, body) {
64
+ return retryAsync({
65
+ maxRetries: context.settings.maxRetries,
66
+ shouldRetry: (error) => isRetryableError(error),
67
+ operation: async () => {
68
+ const response = await fetch(url, {
69
+ method: 'POST',
70
+ headers: {
71
+ 'content-type': 'application/json',
72
+ },
73
+ body: JSON.stringify(body),
74
+ signal: AbortSignal.timeout(context.settings.requestTimeoutMs),
75
+ });
76
+ if (!response.ok) {
77
+ const message = `${providerLabel} request failed with ${response.status}.`;
78
+ throw isRetryableStatusCode(response.status)
79
+ ? createRetryableError(message)
80
+ : new Error(message);
81
+ }
82
+ return (await response.json());
83
+ },
84
+ });
85
+ }
86
+ class AnthropicApiAdapter extends ApiRuntimeAdapter {
87
+ constructor() {
88
+ super('anthropic-api', 'Anthropic API', ['claude-sonnet-4-5', 'claude-opus-4-1']);
89
+ }
90
+ async probe(_projectRoot) {
91
+ const apiKey = extractApiKey(['ANTHROPIC_API_KEY']);
92
+ return buildProbe({
93
+ provider: this.id,
94
+ label: this.label,
95
+ installed: true,
96
+ auth: apiKey
97
+ ? successAuth('ANTHROPIC_API_KEY is present.')
98
+ : missingAuth('ANTHROPIC_API_KEY is missing.'),
99
+ models: this.suggestModels(),
100
+ });
101
+ }
102
+ async executeScan(context) {
103
+ if (context.dryRun) {
104
+ return { fileSummary: 'Dry run: scan skipped.', tasks: [], needsHumanReview: false };
105
+ }
106
+ const apiKey = extractApiKey(['ANTHROPIC_API_KEY']);
107
+ if (!apiKey) {
108
+ throw new Error('ANTHROPIC_API_KEY is required for anthropic-api.');
109
+ }
110
+ const client = new Anthropic({
111
+ apiKey,
112
+ timeout: context.settings.requestTimeoutMs,
113
+ maxRetries: context.settings.maxRetries,
114
+ });
115
+ const response = await client.messages.create({
116
+ model: context.model,
117
+ max_tokens: context.settings.maxOutputTokens,
118
+ messages: [{ role: 'user', content: context.prompt }],
119
+ });
120
+ const output = response.content
121
+ .map((block) => ('text' in block ? block.text : ''))
122
+ .join('\n')
123
+ .trim();
124
+ return normalizeScanResult(output);
125
+ }
126
+ async executeFix(context) {
127
+ if (context.dryRun) {
128
+ return {
129
+ summary: 'Dry run: fix skipped.',
130
+ validationSummary: 'No validation executed.',
131
+ changedFiles: [],
132
+ needsHumanReview: false,
133
+ };
134
+ }
135
+ const apiKey = extractApiKey(['ANTHROPIC_API_KEY']);
136
+ if (!apiKey) {
137
+ throw new Error('ANTHROPIC_API_KEY is required for anthropic-api.');
138
+ }
139
+ const client = new Anthropic({
140
+ apiKey,
141
+ timeout: context.settings.requestTimeoutMs,
142
+ maxRetries: context.settings.maxRetries,
143
+ });
144
+ const response = await client.messages.create({
145
+ model: context.model,
146
+ max_tokens: context.settings.maxOutputTokens,
147
+ messages: [{ role: 'user', content: context.prompt }],
148
+ });
149
+ const output = response.content
150
+ .map((block) => ('text' in block ? block.text : ''))
151
+ .join('\n')
152
+ .trim();
153
+ return applyFileEditsToResult(context.workingDirectory, normalizeFixResult(output));
154
+ }
155
+ }
156
+ class OpenAiApiAdapter extends ApiRuntimeAdapter {
157
+ constructor() {
158
+ super('openai-api', 'OpenAI API', ['gpt-5', 'gpt-4.1']);
159
+ }
160
+ async probe(_projectRoot) {
161
+ const apiKey = extractApiKey(['OPENAI_API_KEY']);
162
+ return buildProbe({
163
+ provider: this.id,
164
+ label: this.label,
165
+ installed: true,
166
+ auth: apiKey
167
+ ? successAuth('OPENAI_API_KEY is present.')
168
+ : missingAuth('OPENAI_API_KEY is missing.'),
169
+ models: this.suggestModels(),
170
+ });
171
+ }
172
+ async executeScan(context) {
173
+ if (context.dryRun) {
174
+ return { fileSummary: 'Dry run: scan skipped.', tasks: [], needsHumanReview: false };
175
+ }
176
+ const apiKey = extractApiKey(['OPENAI_API_KEY']);
177
+ if (!apiKey) {
178
+ throw new Error('OPENAI_API_KEY is required for openai-api.');
179
+ }
180
+ const client = new OpenAI({
181
+ apiKey,
182
+ timeout: context.settings.requestTimeoutMs,
183
+ maxRetries: context.settings.maxRetries,
184
+ });
185
+ const response = await client.responses.create({
186
+ model: context.model,
187
+ input: context.prompt,
188
+ max_output_tokens: context.settings.maxOutputTokens,
189
+ });
190
+ return normalizeScanResult(response.output_text);
191
+ }
192
+ async executeFix(context) {
193
+ if (context.dryRun) {
194
+ return {
195
+ summary: 'Dry run: fix skipped.',
196
+ validationSummary: 'No validation executed.',
197
+ changedFiles: [],
198
+ needsHumanReview: false,
199
+ };
200
+ }
201
+ const apiKey = extractApiKey(['OPENAI_API_KEY']);
202
+ if (!apiKey) {
203
+ throw new Error('OPENAI_API_KEY is required for openai-api.');
204
+ }
205
+ const client = new OpenAI({
206
+ apiKey,
207
+ timeout: context.settings.requestTimeoutMs,
208
+ maxRetries: context.settings.maxRetries,
209
+ });
210
+ const response = await client.responses.create({
211
+ model: context.model,
212
+ input: context.prompt,
213
+ max_output_tokens: context.settings.maxOutputTokens,
214
+ });
215
+ return applyFileEditsToResult(context.workingDirectory, normalizeFixResult(response.output_text));
216
+ }
217
+ }
218
+ class GoogleApiAdapter extends ApiRuntimeAdapter {
219
+ constructor() {
220
+ super('google-api', 'Google Generative AI API', ['gemini-2.5-pro', 'gemini-2.5-flash']);
221
+ }
222
+ async probe(_projectRoot) {
223
+ const apiKey = extractApiKey(['GOOGLE_API_KEY', 'GEMINI_API_KEY']);
224
+ return buildProbe({
225
+ provider: this.id,
226
+ label: this.label,
227
+ installed: true,
228
+ auth: apiKey
229
+ ? successAuth('Google API credentials detected.')
230
+ : missingAuth('GOOGLE_API_KEY or GEMINI_API_KEY is missing.'),
231
+ models: this.suggestModels(),
232
+ });
233
+ }
234
+ async executeScan(context) {
235
+ if (context.dryRun) {
236
+ return { fileSummary: 'Dry run: scan skipped.', tasks: [], needsHumanReview: false };
237
+ }
238
+ const apiKey = extractApiKey(['GOOGLE_API_KEY', 'GEMINI_API_KEY']);
239
+ if (!apiKey) {
240
+ throw new Error('GOOGLE_API_KEY or GEMINI_API_KEY is required for google-api.');
241
+ }
242
+ const payload = await postJsonWithRetries(context, `https://generativelanguage.googleapis.com/v1beta/models/${context.model}:generateContent?key=${apiKey}`, 'Google API', {
243
+ contents: [
244
+ {
245
+ role: 'user',
246
+ parts: [{ text: context.prompt }],
247
+ },
248
+ ],
249
+ generationConfig: {
250
+ maxOutputTokens: context.settings.maxOutputTokens,
251
+ },
252
+ });
253
+ const output = payload.candidates?.[0]?.content?.parts
254
+ ?.map((part) => part.text ?? '')
255
+ .join('\n')
256
+ .trim() ?? '';
257
+ return normalizeScanResult(output);
258
+ }
259
+ async executeFix(context) {
260
+ if (context.dryRun) {
261
+ return {
262
+ summary: 'Dry run: fix skipped.',
263
+ validationSummary: 'No validation executed.',
264
+ changedFiles: [],
265
+ needsHumanReview: false,
266
+ };
267
+ }
268
+ const apiKey = extractApiKey(['GOOGLE_API_KEY', 'GEMINI_API_KEY']);
269
+ if (!apiKey) {
270
+ throw new Error('GOOGLE_API_KEY or GEMINI_API_KEY is required for google-api.');
271
+ }
272
+ const payload = await postJsonWithRetries(context, `https://generativelanguage.googleapis.com/v1beta/models/${context.model}:generateContent?key=${apiKey}`, 'Google API', {
273
+ contents: [
274
+ {
275
+ role: 'user',
276
+ parts: [{ text: context.prompt }],
277
+ },
278
+ ],
279
+ generationConfig: {
280
+ maxOutputTokens: context.settings.maxOutputTokens,
281
+ },
282
+ });
283
+ const output = payload.candidates?.[0]?.content?.parts
284
+ ?.map((part) => part.text ?? '')
285
+ .join('\n')
286
+ .trim() ?? '';
287
+ return applyFileEditsToResult(context.workingDirectory, normalizeFixResult(output));
288
+ }
289
+ }
290
+ class BedrockApiAdapter extends ApiRuntimeAdapter {
291
+ constructor() {
292
+ super('bedrock', 'AWS Bedrock', ['anthropic.claude-3-7-sonnet-20250219-v1:0']);
293
+ }
294
+ async probe(_projectRoot) {
295
+ const region = process.env.AWS_REGION ?? process.env.AWS_DEFAULT_REGION;
296
+ const credentialsPresent = Boolean(process.env.AWS_PROFILE) ||
297
+ Boolean(process.env.AWS_ACCESS_KEY_ID) ||
298
+ Boolean(process.env.AWS_WEB_IDENTITY_TOKEN_FILE);
299
+ return buildProbe({
300
+ provider: this.id,
301
+ label: this.label,
302
+ installed: true,
303
+ auth: region && credentialsPresent
304
+ ? successAuth('AWS region and credentials were detected.')
305
+ : unknownAuth('AWS_REGION and credentials must be configured for Bedrock.'),
306
+ models: this.suggestModels(),
307
+ });
308
+ }
309
+ async executeScan(context) {
310
+ if (context.dryRun) {
311
+ return { fileSummary: 'Dry run: scan skipped.', tasks: [], needsHumanReview: false };
312
+ }
313
+ const region = process.env.AWS_REGION ?? process.env.AWS_DEFAULT_REGION;
314
+ if (!region) {
315
+ throw new Error('AWS_REGION is required for bedrock.');
316
+ }
317
+ const client = new BedrockRuntimeClient({ region });
318
+ const response = await retryAsync({
319
+ maxRetries: context.settings.maxRetries,
320
+ shouldRetry: (error) => isRetryableBedrockError(error),
321
+ operation: async () => client.send(new ConverseCommand({
322
+ modelId: context.model,
323
+ messages: [
324
+ {
325
+ role: 'user',
326
+ content: [{ text: context.prompt }],
327
+ },
328
+ ],
329
+ inferenceConfig: {
330
+ maxTokens: context.settings.maxOutputTokens,
331
+ },
332
+ }), {
333
+ abortSignal: AbortSignal.timeout(context.settings.requestTimeoutMs),
334
+ }),
335
+ });
336
+ const output = response.output?.message?.content
337
+ ?.map((item) => ('text' in item ? (item.text ?? '') : ''))
338
+ .join('\n')
339
+ .trim() ?? '';
340
+ return normalizeScanResult(output);
341
+ }
342
+ async executeFix(context) {
343
+ if (context.dryRun) {
344
+ return {
345
+ summary: 'Dry run: fix skipped.',
346
+ validationSummary: 'No validation executed.',
347
+ changedFiles: [],
348
+ needsHumanReview: false,
349
+ };
350
+ }
351
+ const region = process.env.AWS_REGION ?? process.env.AWS_DEFAULT_REGION;
352
+ if (!region) {
353
+ throw new Error('AWS_REGION is required for bedrock.');
354
+ }
355
+ const client = new BedrockRuntimeClient({ region });
356
+ const response = await retryAsync({
357
+ maxRetries: context.settings.maxRetries,
358
+ shouldRetry: (error) => isRetryableBedrockError(error),
359
+ operation: async () => client.send(new ConverseCommand({
360
+ modelId: context.model,
361
+ messages: [
362
+ {
363
+ role: 'user',
364
+ content: [{ text: context.prompt }],
365
+ },
366
+ ],
367
+ inferenceConfig: {
368
+ maxTokens: context.settings.maxOutputTokens,
369
+ },
370
+ }), {
371
+ abortSignal: AbortSignal.timeout(context.settings.requestTimeoutMs),
372
+ }),
373
+ });
374
+ const output = response.output?.message?.content
375
+ ?.map((item) => ('text' in item ? (item.text ?? '') : ''))
376
+ .join('\n')
377
+ .trim() ?? '';
378
+ return applyFileEditsToResult(context.workingDirectory, normalizeFixResult(output));
379
+ }
380
+ }
381
+ class OllamaAdapter extends ApiRuntimeAdapter {
382
+ constructor() {
383
+ super('ollama', 'Ollama', ['qwen2.5-coder:7b', 'deepseek-coder-v2']);
384
+ }
385
+ async probe(_projectRoot) {
386
+ const host = process.env.OLLAMA_HOST ?? 'http://127.0.0.1:11434';
387
+ return buildProbe({
388
+ provider: this.id,
389
+ label: this.label,
390
+ installed: true,
391
+ auth: successAuth(`Ollama host configured at ${host}.`),
392
+ models: this.suggestModels(),
393
+ });
394
+ }
395
+ async executeScan(context) {
396
+ if (context.dryRun) {
397
+ return { fileSummary: 'Dry run: scan skipped.', tasks: [], needsHumanReview: false };
398
+ }
399
+ const host = process.env.OLLAMA_HOST ?? 'http://127.0.0.1:11434';
400
+ const payload = await postJsonWithRetries(context, `${host}/api/generate`, 'Ollama', {
401
+ model: context.model,
402
+ prompt: context.prompt,
403
+ stream: false,
404
+ options: {
405
+ num_predict: context.settings.maxOutputTokens,
406
+ },
407
+ });
408
+ return normalizeScanResult(payload.response ?? '');
409
+ }
410
+ async executeFix(context) {
411
+ if (context.dryRun) {
412
+ return {
413
+ summary: 'Dry run: fix skipped.',
414
+ validationSummary: 'No validation executed.',
415
+ changedFiles: [],
416
+ needsHumanReview: false,
417
+ };
418
+ }
419
+ const host = process.env.OLLAMA_HOST ?? 'http://127.0.0.1:11434';
420
+ const payload = await postJsonWithRetries(context, `${host}/api/generate`, 'Ollama', {
421
+ model: context.model,
422
+ prompt: context.prompt,
423
+ stream: false,
424
+ options: {
425
+ num_predict: context.settings.maxOutputTokens,
426
+ },
427
+ });
428
+ return applyFileEditsToResult(context.workingDirectory, normalizeFixResult(payload.response ?? ''));
429
+ }
430
+ }
431
+ export const API_RUNTIME_ADAPTERS = [
432
+ new AnthropicApiAdapter(),
433
+ new OpenAiApiAdapter(),
434
+ new GoogleApiAdapter(),
435
+ new BedrockApiAdapter(),
436
+ new OllamaAdapter(),
437
+ ];
438
+ //# sourceMappingURL=api.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"api.js","sourceRoot":"","sources":["../../src/providers/api.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ import type { RuntimeAdapter } from '../types/domain.js';
2
+ export declare const CLI_RUNTIME_ADAPTERS: RuntimeAdapter[];