@open-agent-toolkit/cli 0.1.50 → 0.1.52
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 +16 -5
- package/assets/docs/cli-utilities/configuration.md +1 -1
- package/assets/docs/cli-utilities/workflow-gates.md +1 -1
- package/assets/docs/provider-sync/commands.md +29 -1
- package/assets/docs/provider-sync/providers.md +13 -4
- package/assets/docs/provider-sync/scope-and-surface.md +13 -0
- package/assets/docs/reference/cli-reference.md +2 -2
- package/assets/docs/workflows/projects/hill-checkpoints.md +1 -1
- package/assets/docs/workflows/projects/implementation-execution.md +34 -3
- package/assets/docs/workflows/projects/lifecycle.md +9 -0
- package/assets/docs/workflows/projects/reviews.md +18 -1
- package/assets/public-package-versions.json +4 -4
- package/assets/skills/oat-agent-instructions-analyze/references/docs/provider-reference.md +8 -2
- package/assets/skills/oat-agent-instructions-apply/references/docs/provider-reference.md +8 -2
- package/assets/skills/oat-project-implement/SKILL.md +196 -67
- package/assets/skills/oat-project-import-plan/SKILL.md +6 -6
- package/assets/skills/oat-project-next/SKILL.md +8 -1
- package/assets/skills/oat-project-plan/SKILL.md +6 -6
- package/assets/skills/oat-project-plan-writing/SKILL.md +13 -10
- package/assets/skills/oat-project-pr-final/SKILL.md +8 -1
- package/assets/skills/oat-project-quick-start/SKILL.md +5 -5
- package/assets/skills/oat-project-review-provide/SKILL.md +27 -9
- package/dist/commands/config/index.d.ts.map +1 -1
- package/dist/commands/config/index.js +34 -9
- package/dist/commands/doctor/index.d.ts.map +1 -1
- package/dist/commands/doctor/index.js +148 -85
- package/dist/commands/gate/index.js +1 -1
- package/dist/commands/project/dispatch-ceiling/index.d.ts.map +1 -1
- package/dist/commands/project/dispatch-ceiling/index.js +80 -0
- package/dist/commands/providers/codex/materialize.d.ts.map +1 -1
- package/dist/commands/providers/codex/materialize.js +31 -15
- package/dist/config/oat-config.d.ts +9 -1
- package/dist/config/oat-config.d.ts.map +1 -1
- package/dist/config/oat-config.js +55 -4
- package/dist/config/resolve.d.ts.map +1 -1
- package/dist/config/resolve.js +7 -3
- package/dist/providers/codex/codec/config-merge.d.ts +8 -2
- package/dist/providers/codex/codec/config-merge.d.ts.map +1 -1
- package/dist/providers/codex/codec/config-merge.js +17 -2
- package/dist/providers/codex/codec/sync-extension.d.ts.map +1 -1
- package/dist/providers/codex/codec/sync-extension.js +14 -4
- package/package.json +2 -2
|
@@ -6,7 +6,7 @@ import { readGlobalOptions } from '../../shared/shared.utils.js';
|
|
|
6
6
|
import { CliError } from '../../../errors/index.js';
|
|
7
7
|
import { ensureDir, fileExists } from '../../../fs/io.js';
|
|
8
8
|
import { resolveProjectRoot, resolveScopeRoot } from '../../../fs/paths.js';
|
|
9
|
-
import { mergeCodexConfigForRole } from '../../../providers/codex/codec/config-merge.js';
|
|
9
|
+
import { mergeCodexConfigForRole, readCodexMaxDepth, } from '../../../providers/codex/codec/config-merge.js';
|
|
10
10
|
import { materializeCodexRole } from '../../../providers/codex/codec/materialize.js';
|
|
11
11
|
import { withOatManagedCodexRoleOwner } from '../../../providers/codex/codec/shared.js';
|
|
12
12
|
import { Command, Option } from 'commander';
|
|
@@ -72,8 +72,29 @@ async function buildCodexMaterializePlan(agentName, options, context, dependenci
|
|
|
72
72
|
};
|
|
73
73
|
const rolePath = join(scopeRoot, '.codex', role.configFile);
|
|
74
74
|
const configPath = join(scopeRoot, '.codex', 'config.toml');
|
|
75
|
+
const existingRoleContent = await readOptionalFile(rolePath);
|
|
76
|
+
const existingConfigContent = await readOptionalFile(configPath);
|
|
77
|
+
let inheritedMaxDepth;
|
|
78
|
+
if (scope === 'project') {
|
|
79
|
+
const userScopeRoot = await dependencies.resolveScopeRoot('user', context);
|
|
80
|
+
const userConfigContent = await readOptionalFile(join(userScopeRoot, '.codex', 'config.toml'));
|
|
81
|
+
inheritedMaxDepth = readCodexMaxDepth(userConfigContent) ?? undefined;
|
|
82
|
+
}
|
|
83
|
+
const mergedConfig = mergeCodexConfigForRole({
|
|
84
|
+
existingContent: existingConfigContent,
|
|
85
|
+
role: {
|
|
86
|
+
roleName: role.roleName,
|
|
87
|
+
description: role.description,
|
|
88
|
+
configFile: role.configFile,
|
|
89
|
+
},
|
|
90
|
+
inheritedMaxDepth,
|
|
91
|
+
});
|
|
75
92
|
return {
|
|
93
|
+
configChanged: mergedConfig.changed,
|
|
94
|
+
mergedConfigContent: mergedConfig.mergedContent,
|
|
76
95
|
role,
|
|
96
|
+
roleChanged: existingRoleContent === null ||
|
|
97
|
+
existingRoleContent.trimEnd() !== role.content.trimEnd(),
|
|
77
98
|
result: {
|
|
78
99
|
status: context.dryRun ? 'preview' : 'written',
|
|
79
100
|
dryRun: context.dryRun,
|
|
@@ -93,20 +114,15 @@ async function readOptionalFile(filePath) {
|
|
|
93
114
|
}
|
|
94
115
|
return readFile(filePath, 'utf8');
|
|
95
116
|
}
|
|
96
|
-
async function applyCodexMaterializePlan({ result, role, }) {
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
configFile: role.configFile,
|
|
106
|
-
},
|
|
107
|
-
});
|
|
108
|
-
await ensureDir(dirname(result.configPath));
|
|
109
|
-
await writeFile(result.configPath, mergedConfig.mergedContent, 'utf8');
|
|
117
|
+
async function applyCodexMaterializePlan({ configChanged, mergedConfigContent, result, role, roleChanged, }) {
|
|
118
|
+
if (roleChanged) {
|
|
119
|
+
await ensureDir(dirname(result.rolePath));
|
|
120
|
+
await writeFile(result.rolePath, role.content, 'utf8');
|
|
121
|
+
}
|
|
122
|
+
if (configChanged) {
|
|
123
|
+
await ensureDir(dirname(result.configPath));
|
|
124
|
+
await writeFile(result.configPath, mergedConfigContent, 'utf8');
|
|
125
|
+
}
|
|
110
126
|
}
|
|
111
127
|
async function runCodexMaterializeCommand(agentName, options, context, dependencies) {
|
|
112
128
|
try {
|
|
@@ -19,7 +19,13 @@ export interface OatArchiveConfig {
|
|
|
19
19
|
awsRegion?: string;
|
|
20
20
|
}
|
|
21
21
|
export type WorkflowHillCheckpointDefault = 'every' | 'final';
|
|
22
|
-
export type
|
|
22
|
+
export type WorkflowPostImplementStep = 'summary' | 'document' | 'pr';
|
|
23
|
+
export type WorkflowPostImplementLegacySequence = 'wait' | 'summary' | 'pr' | 'docs-pr';
|
|
24
|
+
export interface WorkflowPostImplementStructuredSequence {
|
|
25
|
+
preApproval: WorkflowPostImplementStep[];
|
|
26
|
+
postApproval: WorkflowPostImplementStep[];
|
|
27
|
+
}
|
|
28
|
+
export type WorkflowPostImplementSequence = WorkflowPostImplementLegacySequence | WorkflowPostImplementStructuredSequence;
|
|
23
29
|
export type WorkflowReviewExecutionModel = 'subagent' | 'inline' | 'fresh-session';
|
|
24
30
|
export type WorkflowDesignMode = 'collaborative' | 'selective' | 'draft';
|
|
25
31
|
export type WorkflowCodexDispatchCeiling = 'low' | 'medium' | 'high' | 'xhigh' | 'max';
|
|
@@ -86,6 +92,8 @@ export declare const VALID_DISPATCH_CEILING_PRESETS: readonly WorkflowDispatchCe
|
|
|
86
92
|
export declare const VALID_DISPATCH_POLICY_MODES: readonly WorkflowDispatchPolicyMode[];
|
|
87
93
|
export declare const VALID_MANAGED_DISPATCH_POLICIES: readonly WorkflowManagedDispatchPolicy[];
|
|
88
94
|
export declare const BUILTIN_EXEC_TARGETS: Readonly<Record<string, ExecTarget>>;
|
|
95
|
+
export declare function normalizeWorkflowPostImplementSequence(value: unknown): WorkflowPostImplementStructuredSequence | undefined;
|
|
96
|
+
export declare function isWorkflowPostImplementStructuredSequence(value: unknown): value is WorkflowPostImplementStructuredSequence;
|
|
89
97
|
export type OatToolsConfig = Partial<Record<'core' | 'ideas' | 'docs' | 'workflows' | 'utility' | 'project-management' | 'research' | 'brainstorm', boolean>>;
|
|
90
98
|
export interface OatConfig {
|
|
91
99
|
version: number;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"oat-config.d.ts","sourceRoot":"","sources":["../../src/config/oat-config.ts"],"names":[],"mappings":"AAOA,OAAO,EAEL,KAAK,6BAA6B,EACnC,MAAM,mBAAmB,CAAC;AAG3B,OAAO,EACL,2BAA2B,EAC3B,8BAA8B,EAC9B,iCAAiC,EACjC,+BAA+B,EAC/B,iCAAiC,EACjC,2BAA2B,EAC3B,KAAK,6BAA6B,EAClC,KAAK,yBAAyB,EAC9B,KAAK,+BAA+B,EACpC,KAAK,6BAA6B,EAClC,KAAK,gCAAgC,EACrC,KAAK,0BAA0B,EAC/B,KAAK,0BAA0B,EAC/B,KAAK,6BAA6B,EAClC,KAAK,qBAAqB,EAC1B,KAAK,0BAA0B,EAC/B,KAAK,2BAA2B,GACjC,MAAM,mBAAmB,CAAC;AAE3B,MAAM,WAAW,sBAAsB;IACrC,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,2BAA2B,CAAC,EAAE,OAAO,CAAC;CACvC;AAED,MAAM,WAAW,YAAY;IAC3B,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB;AAED,MAAM,WAAW,gBAAgB;IAC/B,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAC3B,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,MAAM,6BAA6B,GAAG,OAAO,GAAG,OAAO,CAAC;AAC9D,MAAM,MAAM,
|
|
1
|
+
{"version":3,"file":"oat-config.d.ts","sourceRoot":"","sources":["../../src/config/oat-config.ts"],"names":[],"mappings":"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"}
|
|
@@ -7,7 +7,21 @@ import { normalizeDispatchMatrix, } from './dispatch-matrix.js';
|
|
|
7
7
|
import { parseJsonConfig } from './json.js';
|
|
8
8
|
export { VALID_DISPATCH_MATRIX_TIERS, isCodexMaterializedRouteTarget, isWorkflowDispatchCandidateLadder, isWorkflowDispatchFallbackRoute, toWorkflowDispatchCandidateLadder, validateDispatchRouteTarget, } from './dispatch-matrix.js';
|
|
9
9
|
const VALID_HILL_CHECKPOINT_DEFAULTS = ['every', 'final'];
|
|
10
|
-
const
|
|
10
|
+
const VALID_POST_IMPLEMENT_LEGACY_SEQUENCES = ['wait', 'summary', 'pr', 'docs-pr'];
|
|
11
|
+
const VALID_POST_IMPLEMENT_STEPS = [
|
|
12
|
+
'summary',
|
|
13
|
+
'document',
|
|
14
|
+
'pr',
|
|
15
|
+
];
|
|
16
|
+
const LEGACY_POST_IMPLEMENT_SEQUENCES = {
|
|
17
|
+
wait: { preApproval: [], postApproval: [] },
|
|
18
|
+
summary: { preApproval: ['summary'], postApproval: [] },
|
|
19
|
+
pr: { preApproval: ['summary', 'pr'], postApproval: [] },
|
|
20
|
+
'docs-pr': {
|
|
21
|
+
preApproval: ['summary', 'document', 'pr'],
|
|
22
|
+
postApproval: [],
|
|
23
|
+
},
|
|
24
|
+
};
|
|
11
25
|
const VALID_REVIEW_EXECUTION_MODELS = [
|
|
12
26
|
'subagent',
|
|
13
27
|
'inline',
|
|
@@ -71,6 +85,41 @@ export const BUILTIN_EXEC_TARGETS = {
|
|
|
71
85
|
priority: 70,
|
|
72
86
|
},
|
|
73
87
|
};
|
|
88
|
+
export function normalizeWorkflowPostImplementSequence(value) {
|
|
89
|
+
if (typeof value === 'string' &&
|
|
90
|
+
VALID_POST_IMPLEMENT_LEGACY_SEQUENCES.includes(value)) {
|
|
91
|
+
const legacy = LEGACY_POST_IMPLEMENT_SEQUENCES[value];
|
|
92
|
+
return {
|
|
93
|
+
preApproval: [...legacy.preApproval],
|
|
94
|
+
postApproval: [...legacy.postApproval],
|
|
95
|
+
};
|
|
96
|
+
}
|
|
97
|
+
if (!isRecord(value)) {
|
|
98
|
+
return undefined;
|
|
99
|
+
}
|
|
100
|
+
const keys = Object.keys(value);
|
|
101
|
+
if (keys.length !== 2 ||
|
|
102
|
+
!keys.includes('preApproval') ||
|
|
103
|
+
!keys.includes('postApproval') ||
|
|
104
|
+
!Array.isArray(value.preApproval) ||
|
|
105
|
+
!Array.isArray(value.postApproval)) {
|
|
106
|
+
return undefined;
|
|
107
|
+
}
|
|
108
|
+
const steps = [...value.preApproval, ...value.postApproval];
|
|
109
|
+
if (!steps.every((step) => typeof step === 'string' &&
|
|
110
|
+
VALID_POST_IMPLEMENT_STEPS.includes(step)) ||
|
|
111
|
+
new Set(steps).size !== steps.length) {
|
|
112
|
+
return undefined;
|
|
113
|
+
}
|
|
114
|
+
return {
|
|
115
|
+
preApproval: [...value.preApproval],
|
|
116
|
+
postApproval: [...value.postApproval],
|
|
117
|
+
};
|
|
118
|
+
}
|
|
119
|
+
export function isWorkflowPostImplementStructuredSequence(value) {
|
|
120
|
+
return (isRecord(value) &&
|
|
121
|
+
normalizeWorkflowPostImplementSequence(value) !== undefined);
|
|
122
|
+
}
|
|
74
123
|
function normalizeMaxAttempts(value) {
|
|
75
124
|
if (typeof value !== 'number' || !Number.isFinite(value)) {
|
|
76
125
|
return 2;
|
|
@@ -199,10 +248,12 @@ function normalizeWorkflowConfig(parsed) {
|
|
|
199
248
|
if (typeof parsed.createPrOnComplete === 'boolean') {
|
|
200
249
|
next.createPrOnComplete = parsed.createPrOnComplete;
|
|
201
250
|
}
|
|
202
|
-
|
|
203
|
-
|
|
251
|
+
const postImplementSequence = normalizeWorkflowPostImplementSequence(parsed.postImplementSequence);
|
|
252
|
+
if (postImplementSequence !== undefined) {
|
|
204
253
|
next.postImplementSequence =
|
|
205
|
-
parsed.postImplementSequence
|
|
254
|
+
typeof parsed.postImplementSequence === 'string'
|
|
255
|
+
? parsed.postImplementSequence
|
|
256
|
+
: postImplementSequence;
|
|
206
257
|
}
|
|
207
258
|
if (typeof parsed.reviewExecutionModel === 'string' &&
|
|
208
259
|
VALID_REVIEW_EXECUTION_MODELS.includes(parsed.reviewExecutionModel)) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"resolve.d.ts","sourceRoot":"","sources":["../../src/config/resolve.ts"],"names":[],"mappings":"AACA,OAAO,
|
|
1
|
+
{"version":3,"file":"resolve.d.ts","sourceRoot":"","sources":["../../src/config/resolve.ts"],"names":[],"mappings":"AACA,OAAO,EAML,KAAK,UAAU,EACf,KAAK,UAAU,EACf,KAAK,SAAS,EACd,KAAK,cAAc,EACnB,KAAK,UAAU,EAChB,MAAM,cAAc,CAAC;AAEtB,MAAM,MAAM,oBAAoB,GAC5B,QAAQ,GACR,OAAO,GACP,MAAM,GACN,KAAK,GACL,SAAS,CAAC;AAEd,MAAM,WAAW,gBAAgB;IAC/B,KAAK,EAAE,OAAO,CAAC;IACf,MAAM,EAAE,oBAAoB,CAAC;CAC9B;AAED,MAAM,WAAW,cAAc;IAC7B,MAAM,EAAE,SAAS,CAAC;IAClB,KAAK,EAAE,cAAc,CAAC;IACtB,IAAI,EAAE,UAAU,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,gBAAgB,CAAC,CAAC;CAC5C;AAED,MAAM,WAAW,kCAAkC;IACjD,aAAa,EAAE,CAAC,QAAQ,EAAE,MAAM,KAAK,OAAO,CAAC,SAAS,CAAC,CAAC;IACxD,kBAAkB,EAAE,CAAC,QAAQ,EAAE,MAAM,KAAK,OAAO,CAAC,cAAc,CAAC,CAAC;IAClE,cAAc,EAAE,CAAC,aAAa,EAAE,MAAM,KAAK,OAAO,CAAC,UAAU,CAAC,CAAC;CAChE;AAmFD,wBAAsB,sBAAsB,CAC1C,QAAQ,EAAE,MAAM,EAChB,aAAa,EAAE,MAAM,EACrB,GAAG,GAAE,MAAM,CAAC,UAAwB,EACpC,SAAS,GAAE,OAAO,CAAC,kCAAkC,CAAM,GAC1D,OAAO,CAAC,cAAc,CAAC,CAgFzB;AAED,wBAAgB,WAAW,CACzB,SAAS,EAAE,cAAc,EACzB,SAAS,EAAE,MAAM,GAChB,UAAU,GAAG,IAAI,CAcnB;AAED,wBAAgB,kBAAkB,CAChC,SAAS,EAAE,cAAc,GACxB,MAAM,CAAC,MAAM,EAAE,UAAU,CAAC,CAY5B;AAED,MAAM,MAAM,gBAAgB,GAAG,SAAS,GAAG,MAAM,GAAG,QAAQ,GAAG,OAAO,CAAC;AAEvE,MAAM,WAAW,sBAAsB;IACrC,MAAM,EAAE,UAAU,CAAC;IACnB,MAAM,EAAE,gBAAgB,CAAC;IACzB,oBAAoB,EAAE,OAAO,CAAC;IAC9B,OAAO,EAAE,OAAO,CAAC;CAClB;AAED,wBAAgB,sBAAsB,CACpC,SAAS,EAAE,cAAc,GACxB,MAAM,CAAC,MAAM,EAAE,sBAAsB,CAAC,CAoDxC"}
|
package/dist/config/resolve.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { isWorkflowDispatchCandidateLadder } from './dispatch-matrix.js';
|
|
2
|
-
import { BUILTIN_EXEC_TARGETS, readOatConfig, readOatLocalConfig, readUserConfig, } from './oat-config.js';
|
|
2
|
+
import { BUILTIN_EXEC_TARGETS, isWorkflowPostImplementStructuredSequence, readOatConfig, readOatLocalConfig, readUserConfig, } from './oat-config.js';
|
|
3
3
|
const DEFAULT_DEPENDENCIES = {
|
|
4
4
|
readOatConfig,
|
|
5
5
|
readOatLocalConfig,
|
|
@@ -328,8 +328,7 @@ function flattenConfig(value, prefix = '') {
|
|
|
328
328
|
continue;
|
|
329
329
|
}
|
|
330
330
|
const nextKey = prefix ? `${prefix}.${key}` : key;
|
|
331
|
-
if (isRecord(nestedValue) &&
|
|
332
|
-
!isWorkflowDispatchCandidateLadder(nestedValue)) {
|
|
331
|
+
if (isRecord(nestedValue) && !isAtomicConfigLeaf(nextKey, nestedValue)) {
|
|
333
332
|
Object.assign(flattened, flattenConfig(nestedValue, nextKey));
|
|
334
333
|
continue;
|
|
335
334
|
}
|
|
@@ -337,6 +336,11 @@ function flattenConfig(value, prefix = '') {
|
|
|
337
336
|
}
|
|
338
337
|
return flattened;
|
|
339
338
|
}
|
|
339
|
+
function isAtomicConfigLeaf(key, value) {
|
|
340
|
+
return (isWorkflowDispatchCandidateLadder(value) ||
|
|
341
|
+
(key === 'workflow.postImplementSequence' &&
|
|
342
|
+
isWorkflowPostImplementStructuredSequence(value)));
|
|
343
|
+
}
|
|
340
344
|
function resolveEnvOverride(key, env) {
|
|
341
345
|
const envKey = ENV_OVERRIDE_MAP[key];
|
|
342
346
|
if (!envKey) {
|
|
@@ -7,17 +7,23 @@ export interface CodexConfigMergeArgs {
|
|
|
7
7
|
existingContent: string | null;
|
|
8
8
|
desiredRoles: CodexManagedRoleConfig[];
|
|
9
9
|
staleManagedRoles?: string[];
|
|
10
|
+
inheritedMaxDepth?: number;
|
|
10
11
|
}
|
|
11
12
|
export interface CodexSingleRoleConfigMergeArgs {
|
|
12
13
|
existingContent: string | null;
|
|
13
14
|
role: CodexManagedRoleConfig;
|
|
14
15
|
staleManagedRoles?: string[];
|
|
16
|
+
inheritedMaxDepth?: number;
|
|
15
17
|
}
|
|
16
18
|
export interface CodexConfigMergeResult {
|
|
17
19
|
mergedContent: string;
|
|
18
20
|
changed: boolean;
|
|
19
21
|
removedRoles: string[];
|
|
20
22
|
}
|
|
21
|
-
|
|
22
|
-
export declare function
|
|
23
|
+
/** Reads a valid numeric agents.max_depth value from Codex TOML content. */
|
|
24
|
+
export declare function readCodexMaxDepth(content: string | null): number | null;
|
|
25
|
+
/** Merges managed Codex roles and required shared agent configuration. */
|
|
26
|
+
export declare function mergeCodexConfig({ existingContent, desiredRoles, staleManagedRoles, inheritedMaxDepth, }: CodexConfigMergeArgs): CodexConfigMergeResult;
|
|
27
|
+
/** Merges one managed Codex role using the shared configuration contract. */
|
|
28
|
+
export declare function mergeCodexConfigForRole({ existingContent, role, staleManagedRoles, inheritedMaxDepth, }: CodexSingleRoleConfigMergeArgs): CodexConfigMergeResult;
|
|
23
29
|
//# sourceMappingURL=config-merge.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config-merge.d.ts","sourceRoot":"","sources":["../../../../src/providers/codex/codec/config-merge.ts"],"names":[],"mappings":"AAKA,MAAM,WAAW,sBAAsB;IACrC,QAAQ,EAAE,MAAM,CAAC;IACjB,WAAW,EAAE,MAAM,CAAC;IACpB,UAAU,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,oBAAoB;IACnC,eAAe,EAAE,MAAM,GAAG,IAAI,CAAC;IAC/B,YAAY,EAAE,sBAAsB,EAAE,CAAC;IACvC,iBAAiB,CAAC,EAAE,MAAM,EAAE,CAAC;
|
|
1
|
+
{"version":3,"file":"config-merge.d.ts","sourceRoot":"","sources":["../../../../src/providers/codex/codec/config-merge.ts"],"names":[],"mappings":"AAKA,MAAM,WAAW,sBAAsB;IACrC,QAAQ,EAAE,MAAM,CAAC;IACjB,WAAW,EAAE,MAAM,CAAC;IACpB,UAAU,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,oBAAoB;IACnC,eAAe,EAAE,MAAM,GAAG,IAAI,CAAC;IAC/B,YAAY,EAAE,sBAAsB,EAAE,CAAC;IACvC,iBAAiB,CAAC,EAAE,MAAM,EAAE,CAAC;IAC7B,iBAAiB,CAAC,EAAE,MAAM,CAAC;CAC5B;AAED,MAAM,WAAW,8BAA8B;IAC7C,eAAe,EAAE,MAAM,GAAG,IAAI,CAAC;IAC/B,IAAI,EAAE,sBAAsB,CAAC;IAC7B,iBAAiB,CAAC,EAAE,MAAM,EAAE,CAAC;IAC7B,iBAAiB,CAAC,EAAE,MAAM,CAAC;CAC5B;AAED,MAAM,WAAW,sBAAsB;IACrC,aAAa,EAAE,MAAM,CAAC;IACtB,OAAO,EAAE,OAAO,CAAC;IACjB,YAAY,EAAE,MAAM,EAAE,CAAC;CACxB;AAqCD,4EAA4E;AAC5E,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,GAAG,MAAM,GAAG,IAAI,CAIvE;AAED,0EAA0E;AAC1E,wBAAgB,gBAAgB,CAAC,EAC/B,eAAe,EACf,YAAY,EACZ,iBAAsB,EACtB,iBAAiB,GAClB,EAAE,oBAAoB,GAAG,sBAAsB,CA8C/C;AAED,6EAA6E;AAC7E,wBAAgB,uBAAuB,CAAC,EACtC,eAAe,EACf,IAAI,EACJ,iBAAsB,EACtB,iBAAiB,GAClB,EAAE,8BAA8B,GAAG,sBAAsB,CAOzD"}
|
|
@@ -25,10 +25,23 @@ function getObject(value) {
|
|
|
25
25
|
}
|
|
26
26
|
return { ...value };
|
|
27
27
|
}
|
|
28
|
-
|
|
28
|
+
function getFiniteNumber(value) {
|
|
29
|
+
return typeof value === 'number' && Number.isFinite(value) ? value : null;
|
|
30
|
+
}
|
|
31
|
+
/** Reads a valid numeric agents.max_depth value from Codex TOML content. */
|
|
32
|
+
export function readCodexMaxDepth(content) {
|
|
33
|
+
const parsed = parseConfig(content);
|
|
34
|
+
const agents = getObject(parsed.agents);
|
|
35
|
+
return getFiniteNumber(agents.max_depth);
|
|
36
|
+
}
|
|
37
|
+
/** Merges managed Codex roles and required shared agent configuration. */
|
|
38
|
+
export function mergeCodexConfig({ existingContent, desiredRoles, staleManagedRoles = [], inheritedMaxDepth, }) {
|
|
29
39
|
const parsed = parseConfig(existingContent);
|
|
30
40
|
const features = getObject(parsed.features);
|
|
31
41
|
const agents = getObject(parsed.agents);
|
|
42
|
+
const targetMaxDepth = getFiniteNumber(agents.max_depth);
|
|
43
|
+
const validInheritedMaxDepth = getFiniteNumber(inheritedMaxDepth);
|
|
44
|
+
agents.max_depth = Math.max(2, targetMaxDepth ?? 2, validInheritedMaxDepth ?? 2);
|
|
32
45
|
const nextConfig = {
|
|
33
46
|
...parsed,
|
|
34
47
|
features: {
|
|
@@ -59,10 +72,12 @@ export function mergeCodexConfig({ existingContent, desiredRoles, staleManagedRo
|
|
|
59
72
|
removedRoles,
|
|
60
73
|
};
|
|
61
74
|
}
|
|
62
|
-
|
|
75
|
+
/** Merges one managed Codex role using the shared configuration contract. */
|
|
76
|
+
export function mergeCodexConfigForRole({ existingContent, role, staleManagedRoles = [], inheritedMaxDepth, }) {
|
|
63
77
|
return mergeCodexConfig({
|
|
64
78
|
existingContent,
|
|
65
79
|
desiredRoles: [role],
|
|
66
80
|
staleManagedRoles,
|
|
81
|
+
inheritedMaxDepth,
|
|
67
82
|
});
|
|
68
83
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sync-extension.d.ts","sourceRoot":"","sources":["../../../../src/providers/codex/codec/sync-extension.ts"],"names":[],"mappings":"AAkBA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;
|
|
1
|
+
{"version":3,"file":"sync-extension.d.ts","sourceRoot":"","sources":["../../../../src/providers/codex/codec/sync-extension.ts"],"names":[],"mappings":"AAkBA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAyBpD,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,4BAA6B,SAAQ,uBAAuB;IAC3E,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,kBAAkB;IACjC,UAAU,EAAE,4BAA4B,EAAE,CAAC;IAC3C,YAAY,EAAE,MAAM,EAAE,CAAC;IACvB,mBAAmB,EAAE,MAAM,CAAC;CAC7B;AAED,MAAM,WAAW,yBAAyB;IACxC,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,MAAM,CAAC;CACjB;AAgBD,UAAU,iCAAiC;IACzC,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,WAAW,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,GAAG,CAAC,EAAE,MAAM,CAAC,UAAU,CAAC;CACzB;AAqiBD,wBAAsB,gCAAgC,CACpD,SAAS,EAAE,MAAM,EACjB,gBAAgB,EAAE,cAAc,EAAE,EAClC,qBAAqB,CAAC,EAAE,MAAM,EAAE,EAChC,OAAO,GAAE,iCAAsC,GAC9C,OAAO,CAAC,kBAAkB,CAAC,CAqJ7B;AAED,wBAAsB,8BAA8B,CAClD,SAAS,EAAE,MAAM,EACjB,IAAI,EAAE,kBAAkB,GACvB,OAAO,CAAC,yBAAyB,CAAC,CA6BpC;AAED,wBAAgB,wBAAwB,CAAC,IAAI,EAAE,kBAAkB,GAAG,OAAO,CAE1E;AAED,wBAAgB,uBAAuB,CAAC,IAAI,EAAE,kBAAkB,GAAG;IACjE,iBAAiB,EAAE,MAAM,CAAC;IAC1B,OAAO,EAAE,MAAM,CAAC;CACjB,CAaA;AAED,wBAAgB,0BAA0B,CACxC,IAAI,EAAE,kBAAkB,GACvB,uBAAuB,EAAE,CAQ3B"}
|
|
@@ -10,7 +10,7 @@ import { validateRealPathWithinScope } from '../../../fs/paths.js';
|
|
|
10
10
|
import TOML from '@iarna/toml';
|
|
11
11
|
import YAML from 'yaml';
|
|
12
12
|
import { SUPPORTED_CODEX_BASE_ROLES, SUPPORTED_CODEX_ROLE_TARGETS, } from './catalog.js';
|
|
13
|
-
import { mergeCodexConfig } from './config-merge.js';
|
|
13
|
+
import { mergeCodexConfig, readCodexMaxDepth, } from './config-merge.js';
|
|
14
14
|
import { exportCanonicalAgentToCodexRole } from './export-to-codex.js';
|
|
15
15
|
import { materializeCodexRole } from './materialize.js';
|
|
16
16
|
import { isOatManagedCodexRoleFile, readOatManagedCodexRoleOwner, withOatManagedCodexRoleOwner, } from './shared.js';
|
|
@@ -273,6 +273,14 @@ function isUserCodexScope(scopeRoot, options) {
|
|
|
273
273
|
}
|
|
274
274
|
return resolve(scopeRoot) === resolve(options.userConfigDir, '..');
|
|
275
275
|
}
|
|
276
|
+
async function readInheritedCodexMaxDepth(scopeRoot, options) {
|
|
277
|
+
if (!options.userConfigDir || isUserCodexScope(scopeRoot, options)) {
|
|
278
|
+
return undefined;
|
|
279
|
+
}
|
|
280
|
+
const userScopeRoot = resolve(options.userConfigDir, '..');
|
|
281
|
+
const userConfigContent = await readOptionalFile(configPath(userScopeRoot));
|
|
282
|
+
return readCodexMaxDepth(userConfigContent) ?? undefined;
|
|
283
|
+
}
|
|
276
284
|
async function readCodexMaterializationTargets(scopeRoot, options = {}) {
|
|
277
285
|
const targets = new Map();
|
|
278
286
|
const effectiveConfig = await resolveEffectiveConfig(scopeRoot, options.userConfigDir ?? join(scopeRoot, '.oat', '__no-user-config__'), options.env);
|
|
@@ -395,9 +403,6 @@ export async function computeCodexProjectExtensionPlan(scopeRoot, canonicalEntri
|
|
|
395
403
|
const desiredRoleNames = new Set(desiredRoles.map((role) => role.roleName));
|
|
396
404
|
const existingConfigPath = configPath(scopeRoot);
|
|
397
405
|
const existingConfigContent = await readOptionalFile(existingConfigPath);
|
|
398
|
-
const staleRoles = isPartialSync
|
|
399
|
-
? []
|
|
400
|
-
: await collectStaleManagedRoles(scopeRoot, existingConfigContent, desiredRoleNames, isUserCodexScope(scopeRoot, options) ? 'user-config' : 'project-config', !isUserCodexScope(scopeRoot, options));
|
|
401
406
|
if (isPartialSync && desiredRoles.length === 0) {
|
|
402
407
|
return {
|
|
403
408
|
operations: [],
|
|
@@ -405,6 +410,10 @@ export async function computeCodexProjectExtensionPlan(scopeRoot, canonicalEntri
|
|
|
405
410
|
aggregateConfigHash: hashContent(existingConfigContent ?? ''),
|
|
406
411
|
};
|
|
407
412
|
}
|
|
413
|
+
const inheritedMaxDepth = await readInheritedCodexMaxDepth(scopeRoot, options);
|
|
414
|
+
const staleRoles = isPartialSync
|
|
415
|
+
? []
|
|
416
|
+
: await collectStaleManagedRoles(scopeRoot, existingConfigContent, desiredRoleNames, isUserCodexScope(scopeRoot, options) ? 'user-config' : 'project-config', !isUserCodexScope(scopeRoot, options));
|
|
408
417
|
const operations = [];
|
|
409
418
|
for (const role of desiredRoles) {
|
|
410
419
|
const existingRoleContent = await readOptionalFile(role.rolePath);
|
|
@@ -456,6 +465,7 @@ export async function computeCodexProjectExtensionPlan(scopeRoot, canonicalEntri
|
|
|
456
465
|
existingContent: existingConfigContent,
|
|
457
466
|
desiredRoles: normalizeManagedRolesConfig(desiredRoles),
|
|
458
467
|
staleManagedRoles: staleRoles,
|
|
468
|
+
inheritedMaxDepth,
|
|
459
469
|
});
|
|
460
470
|
operations.push({
|
|
461
471
|
action: existingConfigContent === null
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@open-agent-toolkit/cli",
|
|
3
|
-
"version": "0.1.
|
|
3
|
+
"version": "0.1.52",
|
|
4
4
|
"private": false,
|
|
5
5
|
"description": "Open Agent Toolkit CLI",
|
|
6
6
|
"homepage": "https://github.com/voxmedia/open-agent-toolkit/tree/main/packages/cli",
|
|
@@ -34,7 +34,7 @@
|
|
|
34
34
|
"ora": "^9.0.0",
|
|
35
35
|
"yaml": "2.8.2",
|
|
36
36
|
"zod": "^3.25.76",
|
|
37
|
-
"@open-agent-toolkit/control-plane": "0.1.
|
|
37
|
+
"@open-agent-toolkit/control-plane": "0.1.52"
|
|
38
38
|
},
|
|
39
39
|
"devDependencies": {
|
|
40
40
|
"@types/node": "^22.10.0",
|