corydora 0.3.2 → 1.0.3

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 (63) hide show
  1. package/CHANGELOG.md +69 -0
  2. package/README.md +27 -4
  3. package/dist/commands/doctor.js +37 -1
  4. package/dist/commands/doctor.js.map +1 -1
  5. package/dist/commands/init.js +114 -14
  6. package/dist/commands/init.js.map +1 -1
  7. package/dist/commands/run.d.ts +3 -0
  8. package/dist/commands/run.js +51 -20
  9. package/dist/commands/run.js.map +1 -1
  10. package/dist/commands/status.js +37 -6
  11. package/dist/commands/status.js.map +1 -1
  12. package/dist/config/files.js +23 -1
  13. package/dist/config/files.js.map +1 -1
  14. package/dist/config/schema.d.ts +0 -80
  15. package/dist/config/schema.js +162 -52
  16. package/dist/config/schema.js.map +1 -1
  17. package/dist/constants.d.ts +1 -0
  18. package/dist/constants.js +9 -0
  19. package/dist/constants.js.map +1 -1
  20. package/dist/filesystem/discovery.d.ts +2 -0
  21. package/dist/filesystem/discovery.js +2 -2
  22. package/dist/filesystem/discovery.js.map +1 -1
  23. package/dist/filesystem/gitignore.d.ts +3 -0
  24. package/dist/filesystem/gitignore.js +37 -7
  25. package/dist/filesystem/gitignore.js.map +1 -1
  26. package/dist/git/isolation.d.ts +1 -0
  27. package/dist/git/isolation.js +5 -4
  28. package/dist/git/isolation.js.map +1 -1
  29. package/dist/git/repository.d.ts +2 -1
  30. package/dist/git/repository.js +21 -11
  31. package/dist/git/repository.js.map +1 -1
  32. package/dist/index.js +17 -0
  33. package/dist/index.js.map +1 -1
  34. package/dist/providers/fake.js +16 -0
  35. package/dist/providers/fake.js.map +1 -1
  36. package/dist/providers/utils.js +24 -0
  37. package/dist/providers/utils.js.map +1 -1
  38. package/dist/queue/render.js +10 -3
  39. package/dist/queue/render.js.map +1 -1
  40. package/dist/queue/state.d.ts +53 -4
  41. package/dist/queue/state.js +301 -29
  42. package/dist/queue/state.js.map +1 -1
  43. package/dist/runtime/modes.d.ts +29 -0
  44. package/dist/runtime/modes.js +423 -0
  45. package/dist/runtime/modes.js.map +1 -0
  46. package/dist/runtime/prompts.d.ts +8 -3
  47. package/dist/runtime/prompts.js +58 -12
  48. package/dist/runtime/prompts.js.map +1 -1
  49. package/dist/runtime/routes.d.ts +28 -0
  50. package/dist/runtime/routes.js +87 -0
  51. package/dist/runtime/routes.js.map +1 -0
  52. package/dist/runtime/run-session.d.ts +3 -2
  53. package/dist/runtime/run-session.js +521 -206
  54. package/dist/runtime/run-session.js.map +1 -1
  55. package/dist/runtime/tooling.d.ts +2 -0
  56. package/dist/runtime/tooling.js +79 -0
  57. package/dist/runtime/tooling.js.map +1 -0
  58. package/dist/runtime/validation.d.ts +7 -0
  59. package/dist/runtime/validation.js +115 -0
  60. package/dist/runtime/validation.js.map +1 -0
  61. package/dist/types/domain.d.ts +139 -16
  62. package/package.json +4 -3
  63. package/schemas/corydora.schema.json +165 -4
@@ -0,0 +1,28 @@
1
+ import type { CorydoraConfig, CorydoraMode, GitIsolationMode, RuntimeAdapter, RuntimeExecutionContext, RuntimeProviderId, RuntimeRequestSettings, RuntimeStageName } from '../types/domain.js';
2
+ export interface ResolvedStageRoute {
3
+ stage: RuntimeStageName;
4
+ provider: RuntimeProviderId;
5
+ model: string;
6
+ settings: RuntimeRequestSettings;
7
+ fallbackProvider?: RuntimeProviderId | undefined;
8
+ }
9
+ export declare function resolveStageRoute(config: CorydoraConfig, stage: RuntimeStageName): ResolvedStageRoute;
10
+ export declare function getStageAdapter(route: ResolvedStageRoute): RuntimeAdapter;
11
+ export declare function isNativeAgentRoute(route: ResolvedStageRoute): boolean;
12
+ export declare function preflightIsolationMode(options: {
13
+ projectRoot: string;
14
+ config: CorydoraConfig;
15
+ fixRoute: ResolvedStageRoute;
16
+ mode: CorydoraMode;
17
+ }): {
18
+ effectiveIsolationMode: GitIsolationMode;
19
+ reason?: string;
20
+ };
21
+ export declare function executeStageScan(route: ResolvedStageRoute, context: Omit<RuntimeExecutionContext, 'model' | 'settings'>): Promise<{
22
+ result: Awaited<ReturnType<RuntimeAdapter['executeScan']>>;
23
+ provider: RuntimeProviderId;
24
+ }>;
25
+ export declare function executeStageFix(route: ResolvedStageRoute, context: Omit<RuntimeExecutionContext, 'model' | 'settings'>): Promise<{
26
+ result: Awaited<ReturnType<RuntimeAdapter['executeFix']>>;
27
+ provider: RuntimeProviderId;
28
+ }>;
@@ -0,0 +1,87 @@
1
+ import { existsSync } from 'node:fs';
2
+ import { resolve } from 'node:path';
3
+ import { getRuntimeAdapter } from '../providers/index.js';
4
+ export function resolveStageRoute(config, stage) {
5
+ const override = config.runtime.stages[stage];
6
+ return {
7
+ stage,
8
+ provider: override.provider ?? config.runtime.provider,
9
+ model: override.model ?? config.runtime.model,
10
+ settings: {
11
+ maxOutputTokens: override.maxOutputTokens ?? config.runtime.maxOutputTokens,
12
+ requestTimeoutMs: override.requestTimeoutMs ?? config.runtime.requestTimeoutMs,
13
+ maxRetries: override.maxRetries ?? config.runtime.maxRetries,
14
+ },
15
+ fallbackProvider: override.fallbackProvider ?? config.runtime.fallbackProvider,
16
+ };
17
+ }
18
+ export function getStageAdapter(route) {
19
+ return getRuntimeAdapter(route.provider);
20
+ }
21
+ export function isNativeAgentRoute(route) {
22
+ return getStageAdapter(route).executionMode === 'native-agent';
23
+ }
24
+ export function preflightIsolationMode(options) {
25
+ if (options.config.git.isolationMode !== 'worktree') {
26
+ return { effectiveIsolationMode: options.config.git.isolationMode };
27
+ }
28
+ const needsWorkspaceDependencies = isNativeAgentRoute(options.fixRoute) ||
29
+ options.config.execution.validateAfterFix ||
30
+ options.mode === 'linting';
31
+ const hasManifest = existsSync(resolve(options.projectRoot, 'package.json'));
32
+ if (!needsWorkspaceDependencies || !hasManifest) {
33
+ return { effectiveIsolationMode: 'worktree' };
34
+ }
35
+ return {
36
+ effectiveIsolationMode: 'branch',
37
+ reason: 'Fell back to branch isolation because native-agent edits or host validation require dependency access that a clean worktree cannot reliably provide.',
38
+ };
39
+ }
40
+ async function runWithProviderFallback(primaryProvider, fallbackProvider, executor) {
41
+ try {
42
+ return await executor(primaryProvider);
43
+ }
44
+ catch (error) {
45
+ if (!fallbackProvider || fallbackProvider === primaryProvider) {
46
+ throw error;
47
+ }
48
+ return executor(fallbackProvider);
49
+ }
50
+ }
51
+ export async function executeStageScan(route, context) {
52
+ const providersTried = [];
53
+ const result = await runWithProviderFallback(route.provider, route.fallbackProvider, async (provider) => {
54
+ providersTried.push(provider);
55
+ const adapter = getRuntimeAdapter(provider);
56
+ return adapter.executeScan({
57
+ ...context,
58
+ model: provider === route.provider
59
+ ? route.model
60
+ : (getRuntimeAdapter(provider).suggestModels()[0] ?? route.model),
61
+ settings: route.settings,
62
+ });
63
+ });
64
+ return {
65
+ result,
66
+ provider: providersTried.at(-1) ?? route.provider,
67
+ };
68
+ }
69
+ export async function executeStageFix(route, context) {
70
+ const providersTried = [];
71
+ const result = await runWithProviderFallback(route.provider, route.fallbackProvider, async (provider) => {
72
+ providersTried.push(provider);
73
+ const adapter = getRuntimeAdapter(provider);
74
+ return adapter.executeFix({
75
+ ...context,
76
+ model: provider === route.provider
77
+ ? route.model
78
+ : (getRuntimeAdapter(provider).suggestModels()[0] ?? route.model),
79
+ settings: route.settings,
80
+ });
81
+ });
82
+ return {
83
+ result,
84
+ provider: providersTried.at(-1) ?? route.provider,
85
+ };
86
+ }
87
+ //# sourceMappingURL=routes.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"routes.js","sourceRoot":"","sources":["../../src/runtime/routes.ts"],"names":[],"mappings":"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"}
@@ -1,12 +1,13 @@
1
- import type { AgentDefinition, RunState, CorydoraConfig } from '../types/domain.js';
1
+ import type { AgentDefinition, CorydoraConfig, RunState } from '../types/domain.js';
2
2
  export interface RunSessionOptions {
3
3
  projectRoot: string;
4
4
  config: CorydoraConfig;
5
5
  agents: AgentDefinition[];
6
6
  dryRun: boolean;
7
7
  resume: boolean;
8
+ mode: CorydoraConfig['modes']['default'];
9
+ selectedAgentIds: string[];
8
10
  sessionName?: string;
9
- forceCurrentBranch?: boolean;
10
11
  skipCommitHooks?: boolean;
11
12
  logToConsole?: boolean;
12
13
  }