@open-agent-toolkit/cli 0.1.46 → 0.1.50
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/assets/agents/oat-phase-implementer.md +202 -191
- package/assets/agents/oat-reviewer.md +11 -1
- package/assets/config/dispatch-matrix-recommendation.json +120 -13
- package/assets/docs/cli-utilities/configuration.md +213 -113
- package/assets/docs/cli-utilities/workflow-gates.md +178 -27
- package/assets/docs/contributing/skills.md +14 -8
- package/assets/docs/provider-sync/providers.md +46 -8
- package/assets/docs/provider-sync/scope-and-surface.md +2 -2
- package/assets/docs/reference/cli-reference.md +3 -1
- package/assets/docs/reference/oat-directory-structure.md +27 -26
- package/assets/docs/workflows/projects/artifacts.md +31 -1
- package/assets/docs/workflows/projects/dispatch-ceiling.md +297 -197
- package/assets/docs/workflows/projects/implementation-execution.md +306 -249
- package/assets/docs/workflows/projects/lifecycle.md +26 -5
- package/assets/docs/workflows/projects/reviews.md +27 -2
- package/assets/migration/pjm-restructure.md +1 -1
- package/assets/public-package-versions.json +4 -4
- package/assets/skills/oat-project-implement/SKILL.md +290 -149
- package/assets/skills/oat-project-import-plan/SKILL.md +173 -16
- package/assets/skills/oat-project-next/SKILL.md +2 -2
- package/assets/skills/oat-project-plan/SKILL.md +122 -92
- package/assets/skills/oat-project-plan-writing/SKILL.md +246 -15
- package/assets/skills/oat-project-quick-start/SKILL.md +157 -107
- package/assets/skills/oat-project-review-provide/SKILL.md +110 -22
- package/assets/skills/oat-project-review-provide-remote/SKILL.md +28 -1
- package/dist/commands/config/index.d.ts +3 -0
- package/dist/commands/config/index.d.ts.map +1 -1
- package/dist/commands/config/index.js +92 -125
- package/dist/commands/doctor/index.d.ts +3 -0
- package/dist/commands/doctor/index.d.ts.map +1 -1
- package/dist/commands/doctor/index.js +57 -95
- package/dist/commands/gate/index.d.ts +7 -1
- package/dist/commands/gate/index.d.ts.map +1 -1
- package/dist/commands/gate/index.js +615 -67
- package/dist/commands/gate/review-verdict.d.ts +16 -0
- package/dist/commands/gate/review-verdict.d.ts.map +1 -1
- package/dist/commands/gate/review-verdict.js +72 -9
- package/dist/commands/project/dispatch-ceiling/index.d.ts.map +1 -1
- package/dist/commands/project/dispatch-ceiling/index.js +567 -99
- package/dist/commands/providers/codex/materialize.d.ts.map +1 -1
- package/dist/commands/providers/codex/materialize.js +6 -1
- package/dist/commands/shared/frontmatter.d.ts +4 -0
- package/dist/commands/shared/frontmatter.d.ts.map +1 -1
- package/dist/commands/shared/frontmatter.js +23 -0
- package/dist/commands/status/index.d.ts +1 -0
- package/dist/commands/status/index.d.ts.map +1 -1
- package/dist/commands/status/index.js +10 -4
- package/dist/commands/sync/index.d.ts.map +1 -1
- package/dist/commands/sync/index.js +10 -3
- package/dist/commands/sync/sync.types.d.ts +1 -0
- package/dist/commands/sync/sync.types.d.ts.map +1 -1
- package/dist/config/dispatch-matrix.d.ts +59 -0
- package/dist/config/dispatch-matrix.d.ts.map +1 -0
- package/dist/config/dispatch-matrix.js +264 -0
- package/dist/config/oat-config.d.ts +9 -18
- package/dist/config/oat-config.d.ts.map +1 -1
- package/dist/config/oat-config.js +99 -120
- package/dist/config/resolve.d.ts +8 -0
- package/dist/config/resolve.d.ts.map +1 -1
- package/dist/config/resolve.js +66 -1
- package/dist/engine/index.d.ts +1 -1
- package/dist/engine/index.d.ts.map +1 -1
- package/dist/engine/index.js +1 -1
- package/dist/engine/scanner.d.ts +1 -0
- package/dist/engine/scanner.d.ts.map +1 -1
- package/dist/engine/scanner.js +17 -1
- package/dist/fs/paths.d.ts +4 -0
- package/dist/fs/paths.d.ts.map +1 -1
- package/dist/fs/paths.js +18 -1
- package/dist/providers/ceiling/registry.d.ts +1 -0
- package/dist/providers/ceiling/registry.d.ts.map +1 -1
- package/dist/providers/ceiling/registry.js +12 -5
- package/dist/providers/codex/codec/catalog.d.ts +14 -0
- package/dist/providers/codex/codec/catalog.d.ts.map +1 -0
- package/dist/providers/codex/codec/catalog.js +21 -0
- package/dist/providers/codex/codec/materialize.d.ts.map +1 -1
- package/dist/providers/codex/codec/materialize.js +6 -5
- package/dist/providers/codex/codec/shared.d.ts +19 -0
- package/dist/providers/codex/codec/shared.d.ts.map +1 -1
- package/dist/providers/codex/codec/shared.js +98 -5
- package/dist/providers/codex/codec/sync-extension.d.ts.map +1 -1
- package/dist/providers/codex/codec/sync-extension.js +142 -32
- package/dist/providers/identity/availability.d.ts +12 -0
- package/dist/providers/identity/availability.d.ts.map +1 -1
- package/dist/providers/identity/availability.js +72 -29
- package/dist/providers/identity/dispatch-report.d.ts +124 -0
- package/dist/providers/identity/dispatch-report.d.ts.map +1 -0
- package/dist/providers/identity/dispatch-report.js +285 -0
- package/dist/providers/identity/dispatch-validation.d.ts +28 -0
- package/dist/providers/identity/dispatch-validation.d.ts.map +1 -0
- package/dist/providers/identity/dispatch-validation.js +149 -0
- package/dist/providers/identity/stamp.d.ts +2 -0
- package/dist/providers/identity/stamp.d.ts.map +1 -1
- package/dist/providers/identity/stamp.js +7 -1
- package/dist/shared/types.d.ts +1 -0
- package/dist/shared/types.d.ts.map +1 -1
- package/dist/shared/types.js +4 -0
- package/package.json +2 -2
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"materialize.d.ts","sourceRoot":"","sources":["../../../../src/commands/providers/codex/materialize.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EACV,sBAAsB,EACtB,qCAAqC,EACtC,MAAM,qCAAqC,CAAC;
|
|
1
|
+
{"version":3,"file":"materialize.d.ts","sourceRoot":"","sources":["../../../../src/commands/providers/codex/materialize.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EACV,sBAAsB,EACtB,qCAAqC,EACtC,MAAM,qCAAqC,CAAC;AAU7C,OAAO,EAAE,OAAO,EAAU,MAAM,WAAW,CAAC;AAsD5C,wBAAgB,4BAA4B,CAC1C,MAAM,EAAE,sBAAsB,GAC7B,MAAM,CAaR;AA+GD,wBAAgB,6BAA6B,CAC3C,SAAS,GAAE,OAAO,CAAC,qCAAqC,CAAM,GAC7D,OAAO,CAoCT"}
|
|
@@ -8,6 +8,7 @@ import { ensureDir, fileExists } from '../../../fs/io.js';
|
|
|
8
8
|
import { resolveProjectRoot, resolveScopeRoot } from '../../../fs/paths.js';
|
|
9
9
|
import { mergeCodexConfigForRole } from '../../../providers/codex/codec/config-merge.js';
|
|
10
10
|
import { materializeCodexRole } from '../../../providers/codex/codec/materialize.js';
|
|
11
|
+
import { withOatManagedCodexRoleOwner } from '../../../providers/codex/codec/shared.js';
|
|
11
12
|
import { Command, Option } from 'commander';
|
|
12
13
|
function createDependencies() {
|
|
13
14
|
return {
|
|
@@ -59,12 +60,16 @@ async function buildCodexMaterializePlan(agentName, options, context, dependenci
|
|
|
59
60
|
const scopeRoot = await dependencies.resolveScopeRoot(scope, context);
|
|
60
61
|
const agentPath = resolveAgentPath(agentName, options, scopeRoot);
|
|
61
62
|
const agent = await dependencies.parseCanonicalAgentFile(agentPath);
|
|
62
|
-
const
|
|
63
|
+
const materializedRole = dependencies.materializeCodexRole({
|
|
63
64
|
agent,
|
|
64
65
|
model,
|
|
65
66
|
effort,
|
|
66
67
|
roleName: options.roleName,
|
|
67
68
|
});
|
|
69
|
+
const role = {
|
|
70
|
+
...materializedRole,
|
|
71
|
+
content: withOatManagedCodexRoleOwner(materializedRole.content, scope === 'user' ? 'user-config' : 'project-config'),
|
|
72
|
+
};
|
|
68
73
|
const rolePath = join(scopeRoot, '.codex', role.configFile);
|
|
69
74
|
const configPath = join(scopeRoot, '.codex', 'config.toml');
|
|
70
75
|
return {
|
|
@@ -9,6 +9,10 @@ export declare function isProjectStatePhase(value: string): value is ProjectStat
|
|
|
9
9
|
export declare function isProjectStateFrontmatterField(value: string): value is ProjectStateFrontmatterField;
|
|
10
10
|
export declare function getFrontmatterBlock(content: string): string | null;
|
|
11
11
|
export declare function getFrontmatterField(frontmatter: string, field: string): string | null;
|
|
12
|
+
export declare function parseFrontmatterScalarFields(frontmatter: string, fields: readonly string[]): {
|
|
13
|
+
valid: boolean;
|
|
14
|
+
values: Record<string, string>;
|
|
15
|
+
};
|
|
12
16
|
/**
|
|
13
17
|
* Parse an `oat_generated_at` value into a comparable epoch millisecond time.
|
|
14
18
|
*
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"frontmatter.d.ts","sourceRoot":"","sources":["../../../src/commands/shared/frontmatter.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"frontmatter.d.ts","sourceRoot":"","sources":["../../../src/commands/shared/frontmatter.ts"],"names":[],"mappings":"AAKA,eAAO,MAAM,mBAAmB,6CAA8C,CAAC;AAE/E,eAAO,MAAM,oBAAoB,gFAOvB,CAAC;AAEX,eAAO,MAAM,gCAAgC,sgBA2BnC,CAAC;AAEX,MAAM,MAAM,gBAAgB,GAAG,CAAC,OAAO,mBAAmB,CAAC,CAAC,MAAM,CAAC,CAAC;AACpE,MAAM,MAAM,iBAAiB,GAAG,CAAC,OAAO,oBAAoB,CAAC,CAAC,MAAM,CAAC,CAAC;AACtE,MAAM,MAAM,4BAA4B,GACtC,CAAC,OAAO,gCAAgC,CAAC,CAAC,MAAM,CAAC,CAAC;AAEpD,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,MAAM,GAAG,KAAK,IAAI,gBAAgB,CAE3E;AAED,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,MAAM,GAAG,KAAK,IAAI,iBAAiB,CAE7E;AAED,wBAAgB,8BAA8B,CAC5C,KAAK,EAAE,MAAM,GACZ,KAAK,IAAI,4BAA4B,CAIvC;AAED,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAGlE;AAED,wBAAgB,mBAAmB,CACjC,WAAW,EAAE,MAAM,EACnB,KAAK,EAAE,MAAM,GACZ,MAAM,GAAG,IAAI,CAKf;AAED,wBAAgB,4BAA4B,CAC1C,WAAW,EAAE,MAAM,EACnB,MAAM,EAAE,SAAS,MAAM,EAAE,GACxB;IAAE,KAAK,EAAE,OAAO,CAAC;IAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;CAAE,CA4BpD;AAED;;;;;;;;;GASG;AACH,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAIxD;AAED,wBAAsB,qBAAqB,CACzC,QAAQ,EAAE,MAAM,EAChB,KAAK,EAAE,MAAM,GACZ,OAAO,CAAC,MAAM,CAAC,CASjB;AAED,wBAAsB,eAAe,CACnC,QAAQ,EAAE,MAAM,GACf,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAQxB;AAED,wBAAsB,eAAe,CACnC,SAAS,EAAE,MAAM,GAChB,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAGxB"}
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { readFile } from 'node:fs/promises';
|
|
2
2
|
import { join } from 'node:path';
|
|
3
|
+
import YAML, { isMap, isScalar } from 'yaml';
|
|
3
4
|
export const PROJECT_STATE_KINDS = ['implementation', 'coordination'];
|
|
4
5
|
export const PROJECT_STATE_PHASES = [
|
|
5
6
|
'discovery',
|
|
@@ -57,6 +58,28 @@ export function getFrontmatterField(frontmatter, field) {
|
|
|
57
58
|
return null;
|
|
58
59
|
return match[1].replace(/\s*#.*$/, '').trim();
|
|
59
60
|
}
|
|
61
|
+
export function parseFrontmatterScalarFields(frontmatter, fields) {
|
|
62
|
+
const document = YAML.parseDocument(frontmatter, { uniqueKeys: true });
|
|
63
|
+
const values = {};
|
|
64
|
+
if (isMap(document.contents)) {
|
|
65
|
+
for (const field of fields) {
|
|
66
|
+
const matches = document.contents.items.filter((pair) => isScalar(pair.key) && pair.key.value === field);
|
|
67
|
+
if (matches.length !== 1) {
|
|
68
|
+
continue;
|
|
69
|
+
}
|
|
70
|
+
const valueNode = matches[0]?.value;
|
|
71
|
+
if (!isScalar(valueNode) ||
|
|
72
|
+
valueNode.anchor !== undefined ||
|
|
73
|
+
valueNode.tag !== undefined ||
|
|
74
|
+
typeof valueNode.value !== 'string' ||
|
|
75
|
+
!valueNode.value.trim()) {
|
|
76
|
+
continue;
|
|
77
|
+
}
|
|
78
|
+
values[field] = valueNode.value.trim();
|
|
79
|
+
}
|
|
80
|
+
}
|
|
81
|
+
return { valid: document.errors.length === 0, values };
|
|
82
|
+
}
|
|
60
83
|
/**
|
|
61
84
|
* Parse an `oat_generated_at` value into a comparable epoch millisecond time.
|
|
62
85
|
*
|
|
@@ -18,6 +18,7 @@ interface StatusDependencies {
|
|
|
18
18
|
readUserConfig: (userConfigDir: string) => Promise<UserConfig>;
|
|
19
19
|
saveManifest: (manifestPath: string, manifest: Manifest) => Promise<void>;
|
|
20
20
|
scanCanonical: (scopeRoot: string, scope: ConcreteScope) => Promise<CanonicalEntry[]>;
|
|
21
|
+
scanBundledManagedCodexAgents: () => Promise<CanonicalEntry[]>;
|
|
21
22
|
getAdapters: () => ProviderAdapter[];
|
|
22
23
|
getActiveAdapters: (adapters: ProviderAdapter[], scopeRoot: string) => Promise<ProviderAdapter[]>;
|
|
23
24
|
getSyncMappings: (adapter: ProviderAdapter, scope: Scope) => PathMapping[];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/commands/status/index.ts"],"names":[],"mappings":"AAEA,OAAO,EAEL,KAAK,cAAc,EACnB,KAAK,aAAa,EACnB,MAAM,sBAAsB,CAAC;AAK9B,OAAO,EACL,KAAK,cAAc,EAGpB,MAAM,+BAA+B,CAAC;AAEvC,OAAO,EAEL,KAAK,iBAAiB,EACtB,KAAK,aAAa,EAEnB,MAAM,iCAAiC,CAAC;AAKzC,OAAO,EAGL,KAAK,UAAU,EAChB,MAAM,eAAe,CAAC;AACvB,OAAO,EAAkB,KAAK,UAAU,EAAE,MAAM,oBAAoB,CAAC;AACrE,OAAO,EACL,KAAK,aAAa,EAClB,KAAK,WAAW,EAIjB,MAAM,cAAc,CAAC;AACtB,OAAO,EACL,KAAK,cAAc,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/commands/status/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -8,7 +8,7 @@ import { readGlobalOptions, resolveConcreteScopes, } from '../shared/shared.util
|
|
|
8
8
|
import { DEFAULT_SYNC_CONFIG, loadSyncConfig, } from '../../config/index.js';
|
|
9
9
|
import { readUserConfig } from '../../config/oat-config.js';
|
|
10
10
|
import { detectDrift, detectStrays, filterKnownStrays, } from '../../drift/index.js';
|
|
11
|
-
import { HOOK_DRIFT_WARNING, HOOK_STRAY_INFO, scanCanonical, } from '../../engine/index.js';
|
|
11
|
+
import { HOOK_DRIFT_WARNING, HOOK_STRAY_INFO, scanBundledManagedCodexAgents, scanCanonical, } from '../../engine/index.js';
|
|
12
12
|
import { normalizeToPosixPath, resolveProjectRoot, resolveScopeRoot, } from '../../fs/paths.js';
|
|
13
13
|
import { loadManifest, saveManifest } from '../../manifest/manager.js';
|
|
14
14
|
import { claudeAdapter } from '../../providers/claude/index.js';
|
|
@@ -37,6 +37,7 @@ const DEFAULT_DEPENDENCIES = {
|
|
|
37
37
|
readUserConfig,
|
|
38
38
|
saveManifest,
|
|
39
39
|
scanCanonical,
|
|
40
|
+
scanBundledManagedCodexAgents,
|
|
40
41
|
getAdapters() {
|
|
41
42
|
return [
|
|
42
43
|
claudeAdapter,
|
|
@@ -192,9 +193,14 @@ async function collectScopeReports(scope, context, dependencies) {
|
|
|
192
193
|
}
|
|
193
194
|
}
|
|
194
195
|
}
|
|
195
|
-
if (
|
|
196
|
-
|
|
197
|
-
|
|
196
|
+
if (activeAdapters.some((adapter) => adapter.name === 'codex')) {
|
|
197
|
+
const codexCanonicalEntries = scope === 'user'
|
|
198
|
+
? [
|
|
199
|
+
...canonicalEntries,
|
|
200
|
+
...(await dependencies.scanBundledManagedCodexAgents()),
|
|
201
|
+
]
|
|
202
|
+
: canonicalEntries;
|
|
203
|
+
const codexExtensionPlan = await dependencies.computeCodexProjectExtensionPlan(scopeRoot, codexCanonicalEntries, undefined, { userConfigDir: join(context.home, '.oat') });
|
|
198
204
|
for (const operation of codexExtensionPlan.operations) {
|
|
199
205
|
if (operation.action === 'skip') {
|
|
200
206
|
continue;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/commands/sync/index.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/commands/sync/index.ts"],"names":[],"mappings":"AA4CA,OAAO,EAAE,OAAO,EAAU,MAAM,WAAW,CAAC;AAI5C,OAAO,KAAK,EAEV,uBAAuB,EAExB,MAAM,cAAc,CAAC;AA6TtB,wBAAgB,iBAAiB,CAC/B,SAAS,GAAE,OAAO,CAAC,uBAAuB,CAAM,GAC/C,OAAO,CA6BT"}
|
|
@@ -5,7 +5,7 @@ import { withScopeOption } from '../shared/scope-option.js';
|
|
|
5
5
|
import { selectManyWithAbort, } from '../shared/shared.prompts.js';
|
|
6
6
|
import { readGlobalOptions, resolveConcreteScopes, } from '../shared/shared.utils.js';
|
|
7
7
|
import { DEFAULT_SYNC_CONFIG, loadSyncConfig, saveSyncConfig, } from '../../config/index.js';
|
|
8
|
-
import { computeSyncPlan, executeSyncPlan, scanCanonical } from '../../engine/index.js';
|
|
8
|
+
import { computeSyncPlan, executeSyncPlan, scanBundledManagedCodexAgents, scanCanonical, } from '../../engine/index.js';
|
|
9
9
|
import { CliError } from '../../errors/index.js';
|
|
10
10
|
import { resolveProjectRoot, resolveScopeRoot } from '../../fs/paths.js';
|
|
11
11
|
import { loadManifest } from '../../manifest/index.js';
|
|
@@ -36,6 +36,7 @@ function defaultDependencies() {
|
|
|
36
36
|
},
|
|
37
37
|
saveSyncConfig,
|
|
38
38
|
scanCanonical,
|
|
39
|
+
scanBundledManagedCodexAgents,
|
|
39
40
|
getAdapters() {
|
|
40
41
|
return [
|
|
41
42
|
claudeAdapter,
|
|
@@ -168,8 +169,14 @@ async function computePlans(context, dependencies, allowedCanonicalPaths) {
|
|
|
168
169
|
let codexExtensionPlan;
|
|
169
170
|
let codexExtension;
|
|
170
171
|
const activeAdapterNames = resolved.activeAdapters.map((adapter) => adapter.name);
|
|
171
|
-
if (
|
|
172
|
-
|
|
172
|
+
if (activeAdapterNames.includes('codex')) {
|
|
173
|
+
const codexCanonical = scope === 'user'
|
|
174
|
+
? [
|
|
175
|
+
...canonical,
|
|
176
|
+
...(await dependencies.scanBundledManagedCodexAgents()),
|
|
177
|
+
]
|
|
178
|
+
: canonical;
|
|
179
|
+
codexExtensionPlan = await dependencies.computeCodexProjectExtensionPlan(scopeRoot, codexCanonical, allowedCanonicalPaths, { userConfigDir: join(context.home, '.oat') });
|
|
173
180
|
codexExtension = {
|
|
174
181
|
operations: dependencies.toCodexExtensionOperations(codexExtensionPlan),
|
|
175
182
|
managedRoles: codexExtensionPlan.managedRoles,
|
|
@@ -60,6 +60,7 @@ export interface SyncCommandDependencies {
|
|
|
60
60
|
loadSyncConfig: (configPath: string) => Promise<SyncConfig>;
|
|
61
61
|
saveSyncConfig: (configPath: string, config: SyncConfig) => Promise<SyncConfig>;
|
|
62
62
|
scanCanonical: (scopeRoot: string, scope: ConcreteScope) => Promise<CanonicalEntry[]>;
|
|
63
|
+
scanBundledManagedCodexAgents: () => Promise<CanonicalEntry[]>;
|
|
63
64
|
getAdapters: () => ProviderAdapter[];
|
|
64
65
|
getConfigAwareAdapters: (adapters: ProviderAdapter[], scopeRoot: string, config: SyncConfig) => Promise<ConfigAwareAdaptersResult>;
|
|
65
66
|
selectProvidersWithAbort: <T extends string>(message: string, choices: MultiSelectChoice<T>[], ctx: PromptContext) => Promise<T[] | null>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sync.types.d.ts","sourceRoot":"","sources":["../../../src/commands/sync/sync.types.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"sync.types.d.ts","sourceRoot":"","sources":["../../../src/commands/sync/sync.types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAC1E,OAAO,KAAK,EACV,iBAAiB,EACjB,aAAa,EACd,MAAM,iCAAiC,CAAC;AACzC,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAChD,OAAO,KAAK,EAAE,cAAc,EAAE,QAAQ,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAC1E,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,iBAAiB,CAAC;AAChD,OAAO,KAAK,EACV,yBAAyB,EACzB,kBAAkB,EACnB,MAAM,uCAAuC,CAAC;AAC/C,OAAO,KAAK,EACV,yBAAyB,EACzB,eAAe,EAChB,MAAM,mBAAmB,CAAC;AAC3B,OAAO,KAAK,EAAE,aAAa,EAAE,KAAK,EAAE,MAAM,eAAe,CAAC;AAE1D,MAAM,WAAW,sBAAsB;IACrC,aAAa,EAAE,MAAM,EAAE,CAAC;IACxB,gBAAgB,EAAE,MAAM,EAAE,CAAC;CAC5B;AAED,MAAM,WAAW,aAAa;IAC5B,KAAK,EAAE,aAAa,CAAC;IACrB,SAAS,EAAE,MAAM,CAAC;IAClB,YAAY,EAAE,MAAM,CAAC;IACrB,QAAQ,EAAE,QAAQ,CAAC;IACnB,IAAI,EAAE,QAAQ,CAAC;IACf,SAAS,CAAC,EAAE,cAAc,EAAE,CAAC;IAC7B,kBAAkB,CAAC,EAAE,MAAM,EAAE,CAAC;IAC9B,kBAAkB,CAAC,EAAE,sBAAsB,CAAC;IAC5C,kBAAkB,CAAC,EAAE,kBAAkB,CAAC;IACxC,cAAc,CAAC,EAAE,qBAAqB,CAAC;CACxC;AAED,MAAM,WAAW,WAAW;IAC1B,iBAAiB,EAAE,MAAM,CAAC;IAC1B,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,eAAe;IAC9B,KAAK,EAAE,KAAK,CAAC;IACb,MAAM,EAAE,OAAO,CAAC;IAChB,KAAK,EAAE,QAAQ,EAAE,CAAC;IAClB,OAAO,EAAE,WAAW,CAAC;IACrB,kBAAkB,CAAC,EAAE,sBAAsB,EAAE,CAAC;IAC9C,eAAe,CAAC,EAAE,qBAAqB,EAAE,CAAC;CAC3C;AAED,MAAM,MAAM,oBAAoB,GAAG,QAAQ,GAAG,QAAQ,GAAG,QAAQ,GAAG,MAAM,CAAC;AAC3E,MAAM,MAAM,oBAAoB,GAAG,MAAM,GAAG,QAAQ,CAAC;AAErD,MAAM,WAAW,uBAAuB;IACtC,MAAM,EAAE,oBAAoB,CAAC;IAC7B,MAAM,EAAE,oBAAoB,CAAC;IAC7B,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,qBAAqB;IACpC,UAAU,EAAE,uBAAuB,EAAE,CAAC;IACtC,YAAY,EAAE,MAAM,EAAE,CAAC;IACvB,mBAAmB,EAAE,MAAM,CAAC;IAC5B,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,uBAAuB;IACtC,mBAAmB,EAAE,CAAC,OAAO,EAAE,aAAa,KAAK,cAAc,CAAC;IAChE,gBAAgB,EAAE,CAChB,KAAK,EAAE,aAAa,EACpB,OAAO,EAAE,cAAc,KACpB,OAAO,CAAC,MAAM,CAAC,CAAC;IACrB,YAAY,EAAE,CAAC,YAAY,EAAE,MAAM,KAAK,OAAO,CAAC,QAAQ,CAAC,CAAC;IAC1D,cAAc,EAAE,CAAC,UAAU,EAAE,MAAM,KAAK,OAAO,CAAC,UAAU,CAAC,CAAC;IAC5D,cAAc,EAAE,CACd,UAAU,EAAE,MAAM,EAClB,MAAM,EAAE,UAAU,KACf,OAAO,CAAC,UAAU,CAAC,CAAC;IACzB,aAAa,EAAE,CACb,SAAS,EAAE,MAAM,EACjB,KAAK,EAAE,aAAa,KACjB,OAAO,CAAC,cAAc,EAAE,CAAC,CAAC;IAC/B,6BAA6B,EAAE,MAAM,OAAO,CAAC,cAAc,EAAE,CAAC,CAAC;IAC/D,WAAW,EAAE,MAAM,eAAe,EAAE,CAAC;IACrC,sBAAsB,EAAE,CACtB,QAAQ,EAAE,eAAe,EAAE,EAC3B,SAAS,EAAE,MAAM,EACjB,MAAM,EAAE,UAAU,KACf,OAAO,CAAC,yBAAyB,CAAC,CAAC;IACxC,wBAAwB,EAAE,CAAC,CAAC,SAAS,MAAM,EACzC,OAAO,EAAE,MAAM,EACf,OAAO,EAAE,iBAAiB,CAAC,CAAC,CAAC,EAAE,EAC/B,GAAG,EAAE,aAAa,KACf,OAAO,CAAC,CAAC,EAAE,GAAG,IAAI,CAAC,CAAC;IACzB,eAAe,EAAE,CAAC,IAAI,EAAE;QACtB,SAAS,EAAE,cAAc,EAAE,CAAC;QAC5B,QAAQ,EAAE,eAAe,EAAE,CAAC;QAC5B,QAAQ,EAAE,QAAQ,CAAC;QACnB,KAAK,EAAE,aAAa,CAAC;QACrB,MAAM,EAAE,UAAU,CAAC;QACnB,SAAS,EAAE,MAAM,CAAC;QAClB,qBAAqB,CAAC,EAAE,MAAM,EAAE,CAAC;KAClC,KAAK,OAAO,CAAC,QAAQ,CAAC,CAAC;IACxB,eAAe,EAAE,CACf,IAAI,EAAE,QAAQ,EACd,QAAQ,EAAE,QAAQ,EAClB,YAAY,EAAE,MAAM,KACjB,OAAO,CAAC,UAAU,CAAC,CAAC;IACzB,gCAAgC,EAAE,CAChC,SAAS,EAAE,MAAM,EACjB,gBAAgB,EAAE,cAAc,EAAE,EAClC,qBAAqB,CAAC,EAAE,MAAM,EAAE,EAChC,OAAO,CAAC,EAAE;QAAE,aAAa,CAAC,EAAE,MAAM,CAAC;QAAC,GAAG,CAAC,EAAE,MAAM,CAAC,UAAU,CAAA;KAAE,KAC1D,OAAO,CAAC,kBAAkB,CAAC,CAAC;IACjC,0BAA0B,EAAE,CAC1B,IAAI,EAAE,kBAAkB,KACrB,uBAAuB,EAAE,CAAC;IAC/B,8BAA8B,EAAE,CAC9B,SAAS,EAAE,MAAM,EACjB,IAAI,EAAE,kBAAkB,KACrB,OAAO,CAAC,yBAAyB,CAAC,CAAC;IACxC,cAAc,EAAE,CAAC,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,OAAO,KAAK,MAAM,CAAC;CAC9D"}
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
export type WorkflowDispatchMatrixTier = 'economy' | 'balanced' | 'high' | 'frontier';
|
|
2
|
+
export interface WorkflowDispatchRouteTarget {
|
|
3
|
+
harness?: string;
|
|
4
|
+
model?: string;
|
|
5
|
+
effort?: string;
|
|
6
|
+
}
|
|
7
|
+
export interface DispatchRouteTargetValidation {
|
|
8
|
+
valid: boolean;
|
|
9
|
+
reason?: string;
|
|
10
|
+
}
|
|
11
|
+
export type WorkflowDispatchRouteEntry = string | WorkflowDispatchRouteTarget;
|
|
12
|
+
export type WorkflowDispatchRoute = WorkflowDispatchRouteEntry[];
|
|
13
|
+
export interface WorkflowDispatchFallbackRoute {
|
|
14
|
+
route: WorkflowDispatchRoute;
|
|
15
|
+
}
|
|
16
|
+
export type WorkflowDispatchCandidate = WorkflowDispatchRouteEntry | WorkflowDispatchFallbackRoute;
|
|
17
|
+
export interface WorkflowDispatchCandidateLadder {
|
|
18
|
+
candidates: WorkflowDispatchCandidate[];
|
|
19
|
+
}
|
|
20
|
+
export type WorkflowDispatchLegacyMatrixCell = string | WorkflowDispatchRoute;
|
|
21
|
+
export type WorkflowDispatchMatrixCell = WorkflowDispatchCandidateLadder | WorkflowDispatchLegacyMatrixCell;
|
|
22
|
+
export type WorkflowDispatchProviderValue = string | Partial<Record<WorkflowDispatchMatrixTier, WorkflowDispatchMatrixCell>>;
|
|
23
|
+
export type DispatchMatrixNormalizationIssueKind = 'malformed-provider' | 'malformed-tier' | 'malformed-candidate';
|
|
24
|
+
export interface DispatchMatrixNormalizationIssue {
|
|
25
|
+
path: string;
|
|
26
|
+
kind: DispatchMatrixNormalizationIssueKind;
|
|
27
|
+
value: unknown;
|
|
28
|
+
}
|
|
29
|
+
export interface NormalizedDispatchMatrix {
|
|
30
|
+
providers: Record<string, WorkflowDispatchProviderValue>;
|
|
31
|
+
issues: DispatchMatrixNormalizationIssue[];
|
|
32
|
+
}
|
|
33
|
+
export type DispatchMatrixSource = 'local-config' | 'repo-config' | 'user-config' | 'project-state';
|
|
34
|
+
export interface DispatchMatrixWalkContext {
|
|
35
|
+
source: DispatchMatrixSource;
|
|
36
|
+
pathPrefix: string;
|
|
37
|
+
}
|
|
38
|
+
export interface DispatchMatrixCellRef {
|
|
39
|
+
provider: string;
|
|
40
|
+
tier: WorkflowDispatchMatrixTier | null;
|
|
41
|
+
candidateIndex: number | null;
|
|
42
|
+
fallbackRouteIndex: number | null;
|
|
43
|
+
value: string | null;
|
|
44
|
+
target: WorkflowDispatchRouteTarget | null;
|
|
45
|
+
path: string;
|
|
46
|
+
source: DispatchMatrixSource;
|
|
47
|
+
}
|
|
48
|
+
export declare const VALID_DISPATCH_MATRIX_TIERS: readonly WorkflowDispatchMatrixTier[];
|
|
49
|
+
export declare function normalizeDispatchMatrix(value: unknown, options: {
|
|
50
|
+
pathPrefix: string;
|
|
51
|
+
compatibilityMode: 'layered-config' | 'project-state';
|
|
52
|
+
}): NormalizedDispatchMatrix;
|
|
53
|
+
export declare function isCodexMaterializedRouteTarget(provider: string, target: WorkflowDispatchRouteTarget): boolean;
|
|
54
|
+
export declare function validateDispatchRouteTarget(provider: string, target: WorkflowDispatchRouteTarget): DispatchRouteTargetValidation;
|
|
55
|
+
export declare function isWorkflowDispatchFallbackRoute(value: unknown): value is WorkflowDispatchFallbackRoute;
|
|
56
|
+
export declare function isWorkflowDispatchCandidateLadder(value: unknown): value is WorkflowDispatchCandidateLadder;
|
|
57
|
+
export declare function toWorkflowDispatchCandidateLadder(cell: WorkflowDispatchMatrixCell): WorkflowDispatchCandidateLadder;
|
|
58
|
+
export declare function walkDispatchMatrix(providers: Record<string, WorkflowDispatchProviderValue>, context: DispatchMatrixWalkContext): DispatchMatrixCellRef[];
|
|
59
|
+
//# sourceMappingURL=dispatch-matrix.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"dispatch-matrix.d.ts","sourceRoot":"","sources":["../../src/config/dispatch-matrix.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,264 @@
|
|
|
1
|
+
export const VALID_DISPATCH_MATRIX_TIERS = ['economy', 'balanced', 'high', 'frontier'];
|
|
2
|
+
const VALID_CODEX_PROVIDER_SCALARS = new Set([
|
|
3
|
+
'low',
|
|
4
|
+
'medium',
|
|
5
|
+
'high',
|
|
6
|
+
'xhigh',
|
|
7
|
+
'max',
|
|
8
|
+
]);
|
|
9
|
+
const VALID_CLAUDE_PROVIDER_SCALARS = new Set([
|
|
10
|
+
'haiku',
|
|
11
|
+
'sonnet',
|
|
12
|
+
'opus',
|
|
13
|
+
'fable',
|
|
14
|
+
]);
|
|
15
|
+
function isRecord(value) {
|
|
16
|
+
return typeof value === 'object' && value !== null && !Array.isArray(value);
|
|
17
|
+
}
|
|
18
|
+
function trimNonEmptyString(value) {
|
|
19
|
+
if (typeof value !== 'string') {
|
|
20
|
+
return undefined;
|
|
21
|
+
}
|
|
22
|
+
const trimmed = value.trim();
|
|
23
|
+
return trimmed.length > 0 ? trimmed : undefined;
|
|
24
|
+
}
|
|
25
|
+
function normalizeProviderScalar(provider, value) {
|
|
26
|
+
const scalar = trimNonEmptyString(value);
|
|
27
|
+
if (scalar === undefined) {
|
|
28
|
+
return undefined;
|
|
29
|
+
}
|
|
30
|
+
if (provider === 'codex' && !VALID_CODEX_PROVIDER_SCALARS.has(scalar)) {
|
|
31
|
+
return undefined;
|
|
32
|
+
}
|
|
33
|
+
if (provider === 'claude' && !VALID_CLAUDE_PROVIDER_SCALARS.has(scalar)) {
|
|
34
|
+
return undefined;
|
|
35
|
+
}
|
|
36
|
+
return scalar;
|
|
37
|
+
}
|
|
38
|
+
function normalizeRouteTarget(value) {
|
|
39
|
+
if (!isRecord(value)) {
|
|
40
|
+
return undefined;
|
|
41
|
+
}
|
|
42
|
+
const target = {};
|
|
43
|
+
const harness = trimNonEmptyString(value.harness);
|
|
44
|
+
const model = trimNonEmptyString(value.model);
|
|
45
|
+
const effort = trimNonEmptyString(value.effort);
|
|
46
|
+
if (harness !== undefined) {
|
|
47
|
+
target.harness = harness;
|
|
48
|
+
}
|
|
49
|
+
if (model !== undefined) {
|
|
50
|
+
target.model = model;
|
|
51
|
+
}
|
|
52
|
+
if (effort !== undefined) {
|
|
53
|
+
target.effort = effort;
|
|
54
|
+
}
|
|
55
|
+
return Object.keys(target).length > 0 ? target : undefined;
|
|
56
|
+
}
|
|
57
|
+
function pushMalformedCandidate(issues, path, value) {
|
|
58
|
+
issues.push({ path, kind: 'malformed-candidate', value });
|
|
59
|
+
}
|
|
60
|
+
function normalizeRoute(provider, value, path, issues) {
|
|
61
|
+
if (!Array.isArray(value) || value.length === 0) {
|
|
62
|
+
return undefined;
|
|
63
|
+
}
|
|
64
|
+
const route = [];
|
|
65
|
+
for (const [index, entry] of value.entries()) {
|
|
66
|
+
const scalar = normalizeProviderScalar(provider, entry);
|
|
67
|
+
if (scalar !== undefined) {
|
|
68
|
+
route.push(scalar);
|
|
69
|
+
continue;
|
|
70
|
+
}
|
|
71
|
+
const target = normalizeRouteTarget(entry);
|
|
72
|
+
if (target !== undefined) {
|
|
73
|
+
route.push(target);
|
|
74
|
+
continue;
|
|
75
|
+
}
|
|
76
|
+
pushMalformedCandidate(issues, `${path}[${index}]`, entry);
|
|
77
|
+
}
|
|
78
|
+
return route.length > 0 ? route : undefined;
|
|
79
|
+
}
|
|
80
|
+
function normalizeCandidate(provider, value, path, issues) {
|
|
81
|
+
const scalar = normalizeProviderScalar(provider, value);
|
|
82
|
+
if (scalar !== undefined) {
|
|
83
|
+
return scalar;
|
|
84
|
+
}
|
|
85
|
+
if (isRecord(value) && Object.hasOwn(value, 'route')) {
|
|
86
|
+
const issueCount = issues.length;
|
|
87
|
+
const route = normalizeRoute(provider, value.route, `${path}.route`, issues);
|
|
88
|
+
if (route !== undefined) {
|
|
89
|
+
return { route };
|
|
90
|
+
}
|
|
91
|
+
if (issues.length === issueCount) {
|
|
92
|
+
pushMalformedCandidate(issues, path, value);
|
|
93
|
+
}
|
|
94
|
+
return undefined;
|
|
95
|
+
}
|
|
96
|
+
const target = normalizeRouteTarget(value);
|
|
97
|
+
if (target !== undefined) {
|
|
98
|
+
return target;
|
|
99
|
+
}
|
|
100
|
+
pushMalformedCandidate(issues, path, value);
|
|
101
|
+
return undefined;
|
|
102
|
+
}
|
|
103
|
+
function normalizeMatrixCell(provider, value, path, issues, compatibilityMode) {
|
|
104
|
+
const scalar = normalizeProviderScalar(provider, value);
|
|
105
|
+
if (scalar !== undefined) {
|
|
106
|
+
return { candidates: [scalar] };
|
|
107
|
+
}
|
|
108
|
+
if (isWorkflowDispatchCandidateLadder(value)) {
|
|
109
|
+
const candidates = [];
|
|
110
|
+
for (const [index, candidate] of value.candidates.entries()) {
|
|
111
|
+
const normalized = normalizeCandidate(provider, candidate, `${path}.candidates[${index}]`, issues);
|
|
112
|
+
if (normalized !== undefined) {
|
|
113
|
+
candidates.push(normalized);
|
|
114
|
+
}
|
|
115
|
+
}
|
|
116
|
+
if (value.candidates.length === 0) {
|
|
117
|
+
pushMalformedCandidate(issues, path, value);
|
|
118
|
+
}
|
|
119
|
+
return candidates.length > 0 ? { candidates } : undefined;
|
|
120
|
+
}
|
|
121
|
+
if (compatibilityMode === 'layered-config') {
|
|
122
|
+
const target = normalizeRouteTarget(value);
|
|
123
|
+
if (target !== undefined) {
|
|
124
|
+
return { candidates: [target] };
|
|
125
|
+
}
|
|
126
|
+
}
|
|
127
|
+
if (Array.isArray(value)) {
|
|
128
|
+
const issueCount = issues.length;
|
|
129
|
+
const route = normalizeRoute(provider, value, path, issues);
|
|
130
|
+
if (route !== undefined) {
|
|
131
|
+
return { candidates: [{ route }] };
|
|
132
|
+
}
|
|
133
|
+
if (issues.length === issueCount) {
|
|
134
|
+
pushMalformedCandidate(issues, path, value);
|
|
135
|
+
}
|
|
136
|
+
return undefined;
|
|
137
|
+
}
|
|
138
|
+
pushMalformedCandidate(issues, path, value);
|
|
139
|
+
return undefined;
|
|
140
|
+
}
|
|
141
|
+
export function normalizeDispatchMatrix(value, options) {
|
|
142
|
+
const providers = {};
|
|
143
|
+
const issues = [];
|
|
144
|
+
if (!isRecord(value)) {
|
|
145
|
+
return {
|
|
146
|
+
providers,
|
|
147
|
+
issues: [
|
|
148
|
+
{
|
|
149
|
+
path: options.pathPrefix,
|
|
150
|
+
kind: 'malformed-provider',
|
|
151
|
+
value,
|
|
152
|
+
},
|
|
153
|
+
],
|
|
154
|
+
};
|
|
155
|
+
}
|
|
156
|
+
for (const [provider, rawProviderValue] of Object.entries(value)) {
|
|
157
|
+
const providerPath = `${options.pathPrefix}.${provider}`;
|
|
158
|
+
const scalar = normalizeProviderScalar(provider, rawProviderValue);
|
|
159
|
+
if (scalar !== undefined) {
|
|
160
|
+
providers[provider] = scalar;
|
|
161
|
+
continue;
|
|
162
|
+
}
|
|
163
|
+
if (!isRecord(rawProviderValue)) {
|
|
164
|
+
issues.push({
|
|
165
|
+
path: providerPath,
|
|
166
|
+
kind: 'malformed-provider',
|
|
167
|
+
value: rawProviderValue,
|
|
168
|
+
});
|
|
169
|
+
continue;
|
|
170
|
+
}
|
|
171
|
+
const tiers = {};
|
|
172
|
+
for (const [tier, rawCell] of Object.entries(rawProviderValue)) {
|
|
173
|
+
const tierPath = `${providerPath}.${tier}`;
|
|
174
|
+
if (!VALID_DISPATCH_MATRIX_TIERS.includes(tier)) {
|
|
175
|
+
issues.push({ path: tierPath, kind: 'malformed-tier', value: rawCell });
|
|
176
|
+
continue;
|
|
177
|
+
}
|
|
178
|
+
const normalized = normalizeMatrixCell(provider, rawCell, tierPath, issues, options.compatibilityMode);
|
|
179
|
+
if (normalized !== undefined) {
|
|
180
|
+
tiers[tier] = normalized;
|
|
181
|
+
}
|
|
182
|
+
}
|
|
183
|
+
if (Object.keys(tiers).length > 0) {
|
|
184
|
+
providers[provider] = tiers;
|
|
185
|
+
}
|
|
186
|
+
else if (Object.keys(rawProviderValue).length === 0) {
|
|
187
|
+
issues.push({
|
|
188
|
+
path: providerPath,
|
|
189
|
+
kind: 'malformed-provider',
|
|
190
|
+
value: rawProviderValue,
|
|
191
|
+
});
|
|
192
|
+
}
|
|
193
|
+
}
|
|
194
|
+
return { providers, issues };
|
|
195
|
+
}
|
|
196
|
+
export function isCodexMaterializedRouteTarget(provider, target) {
|
|
197
|
+
return (target.harness ?? provider) === 'codex';
|
|
198
|
+
}
|
|
199
|
+
export function validateDispatchRouteTarget(provider, target) {
|
|
200
|
+
if (!isCodexMaterializedRouteTarget(provider, target)) {
|
|
201
|
+
return { valid: true };
|
|
202
|
+
}
|
|
203
|
+
if (!target.model || !target.effort) {
|
|
204
|
+
return {
|
|
205
|
+
valid: false,
|
|
206
|
+
reason: 'Codex materialized dispatch targets must provide both model and effort.',
|
|
207
|
+
};
|
|
208
|
+
}
|
|
209
|
+
return { valid: true };
|
|
210
|
+
}
|
|
211
|
+
export function isWorkflowDispatchFallbackRoute(value) {
|
|
212
|
+
return isRecord(value) && Array.isArray(value.route);
|
|
213
|
+
}
|
|
214
|
+
export function isWorkflowDispatchCandidateLadder(value) {
|
|
215
|
+
return isRecord(value) && Array.isArray(value.candidates);
|
|
216
|
+
}
|
|
217
|
+
export function toWorkflowDispatchCandidateLadder(cell) {
|
|
218
|
+
if (isWorkflowDispatchCandidateLadder(cell)) {
|
|
219
|
+
return cell;
|
|
220
|
+
}
|
|
221
|
+
return {
|
|
222
|
+
candidates: [Array.isArray(cell) ? { route: cell } : cell],
|
|
223
|
+
};
|
|
224
|
+
}
|
|
225
|
+
function appendRef(refs, provider, tier, candidateIndex, fallbackRouteIndex, entry, path, source) {
|
|
226
|
+
refs.push({
|
|
227
|
+
provider,
|
|
228
|
+
tier,
|
|
229
|
+
candidateIndex,
|
|
230
|
+
fallbackRouteIndex,
|
|
231
|
+
value: typeof entry === 'string' ? entry : null,
|
|
232
|
+
target: typeof entry === 'string' ? null : entry,
|
|
233
|
+
path,
|
|
234
|
+
source,
|
|
235
|
+
});
|
|
236
|
+
}
|
|
237
|
+
export function walkDispatchMatrix(providers, context) {
|
|
238
|
+
const refs = [];
|
|
239
|
+
for (const [provider, providerValue] of Object.entries(providers)) {
|
|
240
|
+
const providerPath = `${context.pathPrefix}.${provider}`;
|
|
241
|
+
if (typeof providerValue === 'string') {
|
|
242
|
+
appendRef(refs, provider, null, null, null, providerValue, providerPath, context.source);
|
|
243
|
+
continue;
|
|
244
|
+
}
|
|
245
|
+
for (const tier of VALID_DISPATCH_MATRIX_TIERS) {
|
|
246
|
+
const cell = providerValue[tier];
|
|
247
|
+
if (cell === undefined) {
|
|
248
|
+
continue;
|
|
249
|
+
}
|
|
250
|
+
const ladder = toWorkflowDispatchCandidateLadder(cell);
|
|
251
|
+
for (const [candidateIndex, candidate] of ladder.candidates.entries()) {
|
|
252
|
+
const candidatePath = `${providerPath}.${tier}.candidates[${candidateIndex}]`;
|
|
253
|
+
if (isWorkflowDispatchFallbackRoute(candidate)) {
|
|
254
|
+
for (const [routeIndex, entry] of candidate.route.entries()) {
|
|
255
|
+
appendRef(refs, provider, tier, candidateIndex, routeIndex, entry, `${candidatePath}.route[${routeIndex}]`, context.source);
|
|
256
|
+
}
|
|
257
|
+
continue;
|
|
258
|
+
}
|
|
259
|
+
appendRef(refs, provider, tier, candidateIndex, null, candidate, candidatePath, context.source);
|
|
260
|
+
}
|
|
261
|
+
}
|
|
262
|
+
}
|
|
263
|
+
return refs;
|
|
264
|
+
}
|
|
@@ -1,3 +1,5 @@
|
|
|
1
|
+
import { type WorkflowDispatchProviderValue } from './dispatch-matrix.js';
|
|
2
|
+
export { VALID_DISPATCH_MATRIX_TIERS, isCodexMaterializedRouteTarget, isWorkflowDispatchCandidateLadder, isWorkflowDispatchFallbackRoute, toWorkflowDispatchCandidateLadder, validateDispatchRouteTarget, type DispatchRouteTargetValidation, type WorkflowDispatchCandidate, type WorkflowDispatchCandidateLadder, type WorkflowDispatchFallbackRoute, type WorkflowDispatchLegacyMatrixCell, type WorkflowDispatchMatrixCell, type WorkflowDispatchMatrixTier, type WorkflowDispatchProviderValue, type WorkflowDispatchRoute, type WorkflowDispatchRouteEntry, type WorkflowDispatchRouteTarget, } from './dispatch-matrix.js';
|
|
1
3
|
export interface OatDocumentationConfig {
|
|
2
4
|
root?: string;
|
|
3
5
|
tooling?: string;
|
|
@@ -20,25 +22,11 @@ export type WorkflowHillCheckpointDefault = 'every' | 'final';
|
|
|
20
22
|
export type WorkflowPostImplementSequence = 'wait' | 'summary' | 'pr' | 'docs-pr';
|
|
21
23
|
export type WorkflowReviewExecutionModel = 'subagent' | 'inline' | 'fresh-session';
|
|
22
24
|
export type WorkflowDesignMode = 'collaborative' | 'selective' | 'draft';
|
|
23
|
-
export type WorkflowCodexDispatchCeiling = 'low' | 'medium' | 'high' | 'xhigh';
|
|
25
|
+
export type WorkflowCodexDispatchCeiling = 'low' | 'medium' | 'high' | 'xhigh' | 'max';
|
|
24
26
|
export type WorkflowClaudeDispatchCeiling = 'haiku' | 'sonnet' | 'opus' | 'fable';
|
|
25
27
|
export type WorkflowDispatchCeilingPreset = 'balanced' | 'maximum' | 'cost-conscious';
|
|
26
28
|
export type WorkflowDispatchPolicyMode = 'managed' | 'inherit';
|
|
27
29
|
export type WorkflowManagedDispatchPolicy = 'economy' | 'balanced' | 'high' | 'frontier' | 'uncapped';
|
|
28
|
-
export type WorkflowDispatchMatrixTier = Exclude<WorkflowManagedDispatchPolicy, 'uncapped'>;
|
|
29
|
-
export interface WorkflowDispatchRouteTarget {
|
|
30
|
-
harness?: string;
|
|
31
|
-
model?: string;
|
|
32
|
-
effort?: string;
|
|
33
|
-
}
|
|
34
|
-
export interface DispatchRouteTargetValidation {
|
|
35
|
-
valid: boolean;
|
|
36
|
-
reason?: string;
|
|
37
|
-
}
|
|
38
|
-
export type WorkflowDispatchRouteEntry = string | WorkflowDispatchRouteTarget;
|
|
39
|
-
export type WorkflowDispatchRoute = WorkflowDispatchRouteEntry[];
|
|
40
|
-
export type WorkflowDispatchMatrixCell = string | WorkflowDispatchRoute;
|
|
41
|
-
export type WorkflowDispatchProviderValue = string | Partial<Record<WorkflowDispatchMatrixTier, WorkflowDispatchMatrixCell>>;
|
|
42
30
|
export type GateOnFailure = 'block' | 'prompt' | 'warn';
|
|
43
31
|
export type GateAvoid = 'same-family' | 'same-runtime' | 'none';
|
|
44
32
|
export interface WorkflowDispatchCeiling {
|
|
@@ -60,9 +48,14 @@ export interface GateConfig {
|
|
|
60
48
|
description?: string;
|
|
61
49
|
maxAttempts?: number;
|
|
62
50
|
}
|
|
51
|
+
export interface ExecTargetInvocation {
|
|
52
|
+
model?: string | 'provider-default';
|
|
53
|
+
reasoningEffort?: string | 'provider-default';
|
|
54
|
+
}
|
|
63
55
|
export interface ExecTarget {
|
|
64
56
|
runtime: string;
|
|
65
57
|
baseCommand: string[];
|
|
58
|
+
invocation?: ExecTargetInvocation;
|
|
66
59
|
models?: string[];
|
|
67
60
|
hostDetectionCommand?: string[];
|
|
68
61
|
availabilityCommand?: string[];
|
|
@@ -92,10 +85,7 @@ export declare const VALID_CLAUDE_DISPATCH_CEILINGS: readonly WorkflowClaudeDisp
|
|
|
92
85
|
export declare const VALID_DISPATCH_CEILING_PRESETS: readonly WorkflowDispatchCeilingPreset[];
|
|
93
86
|
export declare const VALID_DISPATCH_POLICY_MODES: readonly WorkflowDispatchPolicyMode[];
|
|
94
87
|
export declare const VALID_MANAGED_DISPATCH_POLICIES: readonly WorkflowManagedDispatchPolicy[];
|
|
95
|
-
export declare const VALID_DISPATCH_MATRIX_TIERS: readonly WorkflowDispatchMatrixTier[];
|
|
96
88
|
export declare const BUILTIN_EXEC_TARGETS: Readonly<Record<string, ExecTarget>>;
|
|
97
|
-
export declare function isCodexMaterializedRouteTarget(provider: string, target: WorkflowDispatchRouteTarget): boolean;
|
|
98
|
-
export declare function validateDispatchRouteTarget(provider: string, target: WorkflowDispatchRouteTarget): DispatchRouteTargetValidation;
|
|
99
89
|
export type OatToolsConfig = Partial<Record<'core' | 'ideas' | 'docs' | 'workflows' | 'utility' | 'project-management' | 'research' | 'brainstorm', boolean>>;
|
|
100
90
|
export interface OatConfig {
|
|
101
91
|
version: number;
|
|
@@ -131,6 +121,7 @@ export interface ActiveProjectResolution {
|
|
|
131
121
|
path: string | null;
|
|
132
122
|
status: 'active' | 'missing' | 'unset';
|
|
133
123
|
}
|
|
124
|
+
export declare function normalizeProjectPath(repoRoot: string, pathValue: string | null | undefined): string | null;
|
|
134
125
|
export declare function resolveLocalPaths(config: OatConfig): string[];
|
|
135
126
|
export declare function readOatConfig(repoRoot: string): Promise<OatConfig>;
|
|
136
127
|
export declare function readOatLocalConfig(repoRoot: string): Promise<OatLocalConfig>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"oat-config.d.ts","sourceRoot":"","sources":["../../src/config/oat-config.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"oat-config.d.ts","sourceRoot":"","sources":["../../src/config/oat-config.ts"],"names":[],"mappings":"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"}
|