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.
- package/CHANGELOG.md +69 -0
- package/README.md +27 -4
- package/dist/commands/doctor.js +37 -1
- package/dist/commands/doctor.js.map +1 -1
- package/dist/commands/init.js +114 -14
- package/dist/commands/init.js.map +1 -1
- package/dist/commands/run.d.ts +3 -0
- package/dist/commands/run.js +51 -20
- package/dist/commands/run.js.map +1 -1
- package/dist/commands/status.js +37 -6
- package/dist/commands/status.js.map +1 -1
- package/dist/config/files.js +23 -1
- package/dist/config/files.js.map +1 -1
- package/dist/config/schema.d.ts +0 -80
- package/dist/config/schema.js +162 -52
- package/dist/config/schema.js.map +1 -1
- package/dist/constants.d.ts +1 -0
- package/dist/constants.js +9 -0
- package/dist/constants.js.map +1 -1
- package/dist/filesystem/discovery.d.ts +2 -0
- package/dist/filesystem/discovery.js +2 -2
- package/dist/filesystem/discovery.js.map +1 -1
- package/dist/filesystem/gitignore.d.ts +3 -0
- package/dist/filesystem/gitignore.js +37 -7
- package/dist/filesystem/gitignore.js.map +1 -1
- package/dist/git/isolation.d.ts +1 -0
- package/dist/git/isolation.js +5 -4
- package/dist/git/isolation.js.map +1 -1
- package/dist/git/repository.d.ts +2 -1
- package/dist/git/repository.js +21 -11
- package/dist/git/repository.js.map +1 -1
- package/dist/index.js +17 -0
- package/dist/index.js.map +1 -1
- package/dist/providers/fake.js +16 -0
- package/dist/providers/fake.js.map +1 -1
- package/dist/providers/utils.js +24 -0
- package/dist/providers/utils.js.map +1 -1
- package/dist/queue/render.js +10 -3
- package/dist/queue/render.js.map +1 -1
- package/dist/queue/state.d.ts +53 -4
- package/dist/queue/state.js +301 -29
- package/dist/queue/state.js.map +1 -1
- package/dist/runtime/modes.d.ts +29 -0
- package/dist/runtime/modes.js +423 -0
- package/dist/runtime/modes.js.map +1 -0
- package/dist/runtime/prompts.d.ts +8 -3
- package/dist/runtime/prompts.js +58 -12
- package/dist/runtime/prompts.js.map +1 -1
- package/dist/runtime/routes.d.ts +28 -0
- package/dist/runtime/routes.js +87 -0
- package/dist/runtime/routes.js.map +1 -0
- package/dist/runtime/run-session.d.ts +3 -2
- package/dist/runtime/run-session.js +521 -206
- package/dist/runtime/run-session.js.map +1 -1
- package/dist/runtime/tooling.d.ts +2 -0
- package/dist/runtime/tooling.js +79 -0
- package/dist/runtime/tooling.js.map +1 -0
- package/dist/runtime/validation.d.ts +7 -0
- package/dist/runtime/validation.js +115 -0
- package/dist/runtime/validation.js.map +1 -0
- package/dist/types/domain.d.ts +139 -16
- package/package.json +4 -3
- 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":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AACrC,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAC;AAoB1D,MAAM,UAAU,iBAAiB,CAC/B,MAAsB,EACtB,KAAuB;IAEvB,MAAM,QAAQ,GAAG,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;IAC9C,OAAO;QACL,KAAK;QACL,QAAQ,EAAE,QAAQ,CAAC,QAAQ,IAAI,MAAM,CAAC,OAAO,CAAC,QAAQ;QACtD,KAAK,EAAE,QAAQ,CAAC,KAAK,IAAI,MAAM,CAAC,OAAO,CAAC,KAAK;QAC7C,QAAQ,EAAE;YACR,eAAe,EAAE,QAAQ,CAAC,eAAe,IAAI,MAAM,CAAC,OAAO,CAAC,eAAe;YAC3E,gBAAgB,EAAE,QAAQ,CAAC,gBAAgB,IAAI,MAAM,CAAC,OAAO,CAAC,gBAAgB;YAC9E,UAAU,EAAE,QAAQ,CAAC,UAAU,IAAI,MAAM,CAAC,OAAO,CAAC,UAAU;SAC7D;QACD,gBAAgB,EAAE,QAAQ,CAAC,gBAAgB,IAAI,MAAM,CAAC,OAAO,CAAC,gBAAgB;KAC/E,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,eAAe,CAAC,KAAyB;IACvD,OAAO,iBAAiB,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;AAC3C,CAAC;AAED,MAAM,UAAU,kBAAkB,CAAC,KAAyB;IAC1D,OAAO,eAAe,CAAC,KAAK,CAAC,CAAC,aAAa,KAAK,cAAc,CAAC;AACjE,CAAC;AAED,MAAM,UAAU,sBAAsB,CAAC,OAKtC;IAIC,IAAI,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,aAAa,KAAK,UAAU,EAAE,CAAC;QACpD,OAAO,EAAE,sBAAsB,EAAE,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,aAAa,EAAE,CAAC;IACtE,CAAC;IAED,MAAM,0BAA0B,GAC9B,kBAAkB,CAAC,OAAO,CAAC,QAAQ,CAAC;QACpC,OAAO,CAAC,MAAM,CAAC,SAAS,CAAC,gBAAgB;QACzC,OAAO,CAAC,IAAI,KAAK,SAAS,CAAC;IAC7B,MAAM,WAAW,GAAG,UAAU,CAAC,OAAO,CAAC,OAAO,CAAC,WAAW,EAAE,cAAc,CAAC,CAAC,CAAC;IAC7E,IAAI,CAAC,0BAA0B,IAAI,CAAC,WAAW,EAAE,CAAC;QAChD,OAAO,EAAE,sBAAsB,EAAE,UAAU,EAAE,CAAC;IAChD,CAAC;IAED,OAAO;QACL,sBAAsB,EAAE,QAAQ;QAChC,MAAM,EACJ,sJAAsJ;KACzJ,CAAC;AACJ,CAAC;AAED,KAAK,UAAU,uBAAuB,CACpC,eAAkC,EAClC,gBAA+C,EAC/C,QAAqD;IAErD,IAAI,CAAC;QACH,OAAO,MAAM,QAAQ,CAAC,eAAe,CAAC,CAAC;IACzC,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,IAAI,CAAC,gBAAgB,IAAI,gBAAgB,KAAK,eAAe,EAAE,CAAC;YAC9D,MAAM,KAAK,CAAC;QACd,CAAC;QAED,OAAO,QAAQ,CAAC,gBAAgB,CAAC,CAAC;IACpC,CAAC;AACH,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,gBAAgB,CACpC,KAAyB,EACzB,OAA4D;IAK5D,MAAM,cAAc,GAAwB,EAAE,CAAC;IAC/C,MAAM,MAAM,GAAG,MAAM,uBAAuB,CAC1C,KAAK,CAAC,QAAQ,EACd,KAAK,CAAC,gBAAgB,EACtB,KAAK,EAAE,QAAQ,EAAE,EAAE;QACjB,cAAc,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QAC9B,MAAM,OAAO,GAAG,iBAAiB,CAAC,QAAQ,CAAC,CAAC;QAC5C,OAAO,OAAO,CAAC,WAAW,CAAC;YACzB,GAAG,OAAO;YACV,KAAK,EACH,QAAQ,KAAK,KAAK,CAAC,QAAQ;gBACzB,CAAC,CAAC,KAAK,CAAC,KAAK;gBACb,CAAC,CAAC,CAAC,iBAAiB,CAAC,QAAQ,CAAC,CAAC,aAAa,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,KAAK,CAAC;YACrE,QAAQ,EAAE,KAAK,CAAC,QAAQ;SACzB,CAAC,CAAC;IACL,CAAC,CACF,CAAC;IAEF,OAAO;QACL,MAAM;QACN,QAAQ,EAAE,cAAc,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,QAAQ;KAClD,CAAC;AACJ,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,eAAe,CACnC,KAAyB,EACzB,OAA4D;IAK5D,MAAM,cAAc,GAAwB,EAAE,CAAC;IAC/C,MAAM,MAAM,GAAG,MAAM,uBAAuB,CAC1C,KAAK,CAAC,QAAQ,EACd,KAAK,CAAC,gBAAgB,EACtB,KAAK,EAAE,QAAQ,EAAE,EAAE;QACjB,cAAc,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QAC9B,MAAM,OAAO,GAAG,iBAAiB,CAAC,QAAQ,CAAC,CAAC;QAC5C,OAAO,OAAO,CAAC,UAAU,CAAC;YACxB,GAAG,OAAO;YACV,KAAK,EACH,QAAQ,KAAK,KAAK,CAAC,QAAQ;gBACzB,CAAC,CAAC,KAAK,CAAC,KAAK;gBACb,CAAC,CAAC,CAAC,iBAAiB,CAAC,QAAQ,CAAC,CAAC,aAAa,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,KAAK,CAAC;YACrE,QAAQ,EAAE,KAAK,CAAC,QAAQ;SACzB,CAAC,CAAC;IACL,CAAC,CACF,CAAC;IAEF,OAAO;QACL,MAAM;QACN,QAAQ,EAAE,cAAc,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,QAAQ;KAClD,CAAC;AACJ,CAAC"}
|
|
@@ -1,12 +1,13 @@
|
|
|
1
|
-
import type { AgentDefinition,
|
|
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
|
}
|