@open-agent-toolkit/cli 0.1.42 → 0.1.45
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 +11 -7
- package/assets/agents/oat-reviewer.md +6 -4
- package/assets/config/dispatch-matrix-recommendation.json +23 -0
- package/assets/docs/cli-utilities/configuration.md +95 -40
- package/assets/docs/cli-utilities/workflow-gates.md +79 -16
- package/assets/docs/contributing/code.md +10 -4
- package/assets/docs/contributing/hooks-and-safety.md +23 -0
- package/assets/docs/reference/oat-directory-structure.md +26 -24
- package/assets/docs/workflows/projects/dispatch-ceiling.md +193 -80
- package/assets/docs/workflows/projects/implementation-execution.md +68 -45
- package/assets/docs/workflows/projects/index.md +2 -2
- package/assets/docs/workflows/projects/lifecycle.md +17 -2
- package/assets/public-package-versions.json +4 -4
- package/assets/skills/oat-project-implement/SKILL.md +232 -100
- package/assets/skills/oat-project-plan/SKILL.md +80 -30
- package/assets/skills/oat-project-plan-writing/SKILL.md +10 -10
- package/assets/skills/oat-project-quick-start/SKILL.md +80 -30
- package/assets/templates/plan.md +4 -4
- package/assets/templates/state.md +12 -3
- package/dist/commands/config/index.d.ts +6 -0
- package/dist/commands/config/index.d.ts.map +1 -1
- package/dist/commands/config/index.js +432 -11
- package/dist/commands/doctor/index.d.ts +6 -1
- package/dist/commands/doctor/index.d.ts.map +1 -1
- package/dist/commands/doctor/index.js +138 -4
- package/dist/commands/gate/index.d.ts +39 -2
- package/dist/commands/gate/index.d.ts.map +1 -1
- package/dist/commands/gate/index.js +343 -30
- package/dist/commands/internal/cursor-current-target.d.ts +37 -0
- package/dist/commands/internal/cursor-current-target.d.ts.map +1 -0
- package/dist/commands/internal/cursor-current-target.js +228 -0
- package/dist/commands/internal/index.d.ts.map +1 -1
- package/dist/commands/internal/index.js +2 -0
- package/dist/commands/project/dispatch-ceiling/index.d.ts.map +1 -1
- package/dist/commands/project/dispatch-ceiling/index.js +646 -56
- package/dist/config/dispatch-ceiling-preset.d.ts +37 -1
- package/dist/config/dispatch-ceiling-preset.d.ts.map +1 -1
- package/dist/config/dispatch-ceiling-preset.js +20 -0
- package/dist/config/oat-config.d.ts +25 -6
- package/dist/config/oat-config.d.ts.map +1 -1
- package/dist/config/oat-config.js +123 -11
- package/dist/config/resolve.d.ts.map +1 -1
- package/dist/config/resolve.js +16 -0
- package/dist/manifest/manifest.types.d.ts +12 -12
- package/dist/providers/ceiling/registry.d.ts.map +1 -1
- package/dist/providers/ceiling/registry.js +22 -1
- package/dist/providers/codex/codec/sync-extension.js +1 -1
- package/dist/providers/identity/availability.d.ts +22 -0
- package/dist/providers/identity/availability.d.ts.map +1 -0
- package/dist/providers/identity/availability.js +119 -0
- package/dist/providers/identity/family.d.ts +13 -0
- package/dist/providers/identity/family.d.ts.map +1 -0
- package/dist/providers/identity/family.js +32 -0
- package/dist/providers/identity/provenance.d.ts +21 -0
- package/dist/providers/identity/provenance.d.ts.map +1 -0
- package/dist/providers/identity/provenance.js +65 -0
- package/dist/providers/identity/stamp.d.ts +35 -0
- package/dist/providers/identity/stamp.d.ts.map +1 -0
- package/dist/providers/identity/stamp.js +171 -0
- package/package.json +2 -2
|
@@ -7,7 +7,7 @@ import { createPjmDisabledCheck, runPjmDoctorChecks, } from '../pjm/doctor.js';
|
|
|
7
7
|
import { getSkillVersion } from '../shared/frontmatter.js';
|
|
8
8
|
import { withScopeOption } from '../shared/scope-option.js';
|
|
9
9
|
import { readGlobalOptions, resolveConcreteScopes, } from '../shared/shared.utils.js';
|
|
10
|
-
import { readOatConfig } from '../../config/oat-config.js';
|
|
10
|
+
import { readOatConfig, readOatLocalConfig, readUserConfig, } from '../../config/oat-config.js';
|
|
11
11
|
import { resolveAssetsRoot } from '../../fs/assets.js';
|
|
12
12
|
import { resolveProjectRoot, resolveScopeRoot } from '../../fs/paths.js';
|
|
13
13
|
import TOML from '@iarna/toml';
|
|
@@ -17,6 +17,7 @@ import { codexAdapter } from '../../providers/codex/index.js';
|
|
|
17
17
|
import { copilotAdapter } from '../../providers/copilot/index.js';
|
|
18
18
|
import { cursorAdapter } from '../../providers/cursor/index.js';
|
|
19
19
|
import { geminiAdapter } from '../../providers/gemini/index.js';
|
|
20
|
+
import { validateMatrixCell, } from '../../providers/identity/availability.js';
|
|
20
21
|
import { formatDoctorResults } from '../../ui/output.js';
|
|
21
22
|
import { Command } from 'commander';
|
|
22
23
|
async function pathExistsDefault(path) {
|
|
@@ -129,13 +130,137 @@ function createDependencies() {
|
|
|
129
130
|
readFile: async (path) => readFile(path, 'utf8'),
|
|
130
131
|
resolveAssetsRoot,
|
|
131
132
|
readOatConfig,
|
|
133
|
+
readOatLocalConfig,
|
|
134
|
+
readUserConfig,
|
|
135
|
+
validateMatrixCell,
|
|
136
|
+
processEnv: process.env,
|
|
132
137
|
runPjmDoctorChecks,
|
|
133
138
|
// Default binding remains self-contained, but still honors the caller-
|
|
134
139
|
// provided pathExists dependency from runChecksForScope when available.
|
|
135
140
|
checkSkillVersions: (scopeRoot, assetsRoot, pathExists = pathExistsDefault) => checkSkillVersionsDefault(scopeRoot, assetsRoot, pathExists),
|
|
136
141
|
};
|
|
137
142
|
}
|
|
138
|
-
|
|
143
|
+
function isRouteTarget(entry) {
|
|
144
|
+
return typeof entry === 'object' && entry !== null && !Array.isArray(entry);
|
|
145
|
+
}
|
|
146
|
+
function addDispatchMatrixCellRefs(refs, layer, provider, path, cell) {
|
|
147
|
+
if (typeof cell === 'string') {
|
|
148
|
+
refs.push({ layer, provider, value: cell, path });
|
|
149
|
+
return;
|
|
150
|
+
}
|
|
151
|
+
for (const [index, entry] of cell.entries()) {
|
|
152
|
+
const entryPath = `${path}[${index}]`;
|
|
153
|
+
if (typeof entry === 'string') {
|
|
154
|
+
refs.push({ layer, provider, value: entry, path: entryPath });
|
|
155
|
+
continue;
|
|
156
|
+
}
|
|
157
|
+
if (!isRouteTarget(entry)) {
|
|
158
|
+
continue;
|
|
159
|
+
}
|
|
160
|
+
if (entry.model) {
|
|
161
|
+
refs.push({
|
|
162
|
+
layer,
|
|
163
|
+
provider,
|
|
164
|
+
value: entry.model,
|
|
165
|
+
path: `${entryPath}.model`,
|
|
166
|
+
});
|
|
167
|
+
}
|
|
168
|
+
if (entry.effort) {
|
|
169
|
+
refs.push({
|
|
170
|
+
layer,
|
|
171
|
+
provider,
|
|
172
|
+
value: entry.effort,
|
|
173
|
+
path: `${entryPath}.effort`,
|
|
174
|
+
});
|
|
175
|
+
}
|
|
176
|
+
}
|
|
177
|
+
}
|
|
178
|
+
function collectDispatchMatrixCellRefs(layers) {
|
|
179
|
+
const refs = [];
|
|
180
|
+
for (const { layer, config } of layers) {
|
|
181
|
+
const providers = config.workflow?.dispatchCeiling?.providers ?? {};
|
|
182
|
+
for (const [provider, providerValue] of Object.entries(providers)) {
|
|
183
|
+
const providerPath = `workflow.dispatchCeiling.providers.${provider}`;
|
|
184
|
+
if (typeof providerValue === 'string') {
|
|
185
|
+
refs.push({
|
|
186
|
+
layer,
|
|
187
|
+
provider,
|
|
188
|
+
value: providerValue,
|
|
189
|
+
path: providerPath,
|
|
190
|
+
});
|
|
191
|
+
continue;
|
|
192
|
+
}
|
|
193
|
+
const tierMap = providerValue;
|
|
194
|
+
for (const [tier, cell] of Object.entries(tierMap)) {
|
|
195
|
+
if (cell === undefined) {
|
|
196
|
+
continue;
|
|
197
|
+
}
|
|
198
|
+
addDispatchMatrixCellRefs(refs, layer, provider, `${providerPath}.${tier}`, cell);
|
|
199
|
+
}
|
|
200
|
+
}
|
|
201
|
+
}
|
|
202
|
+
return refs;
|
|
203
|
+
}
|
|
204
|
+
function formatDispatchMatrixIssueList(issues) {
|
|
205
|
+
return issues
|
|
206
|
+
.map((issue) => `${issue.path}=${issue.value} (${issue.layer} config)`)
|
|
207
|
+
.join(', ');
|
|
208
|
+
}
|
|
209
|
+
async function createDispatchMatrixDoctorCheck(scopeRoot, layers, dependencies) {
|
|
210
|
+
const refs = collectDispatchMatrixCellRefs(layers);
|
|
211
|
+
if (refs.length === 0) {
|
|
212
|
+
return {
|
|
213
|
+
name: 'project:dispatch_matrix',
|
|
214
|
+
description: 'Dispatch matrix cell availability',
|
|
215
|
+
status: 'pass',
|
|
216
|
+
message: 'No configured dispatch matrix cells found in user, shared, or local config layers.',
|
|
217
|
+
};
|
|
218
|
+
}
|
|
219
|
+
const issues = [];
|
|
220
|
+
for (const ref of refs) {
|
|
221
|
+
let availability;
|
|
222
|
+
try {
|
|
223
|
+
availability = await dependencies.validateMatrixCell(ref.provider, ref.value, {
|
|
224
|
+
cwd: scopeRoot,
|
|
225
|
+
env: dependencies.processEnv,
|
|
226
|
+
});
|
|
227
|
+
}
|
|
228
|
+
catch {
|
|
229
|
+
availability = 'unvalidated';
|
|
230
|
+
}
|
|
231
|
+
if (availability !== 'valid') {
|
|
232
|
+
issues.push({ ...ref, availability });
|
|
233
|
+
}
|
|
234
|
+
}
|
|
235
|
+
if (issues.length === 0) {
|
|
236
|
+
return {
|
|
237
|
+
name: 'project:dispatch_matrix',
|
|
238
|
+
description: 'Dispatch matrix cell availability',
|
|
239
|
+
status: 'pass',
|
|
240
|
+
message: `All configured dispatch matrix cells are available: ${formatDispatchMatrixIssueList(refs)}.`,
|
|
241
|
+
};
|
|
242
|
+
}
|
|
243
|
+
const unknown = issues.filter((issue) => issue.availability === 'unknown-value');
|
|
244
|
+
const unvalidated = issues.filter((issue) => issue.availability === 'unvalidated');
|
|
245
|
+
const messageParts = [];
|
|
246
|
+
if (unknown.length > 0) {
|
|
247
|
+
messageParts.push(`Unknown dispatch matrix cells: ${formatDispatchMatrixIssueList(unknown)}`);
|
|
248
|
+
}
|
|
249
|
+
if (unvalidated.length > 0) {
|
|
250
|
+
messageParts.push(`Unvalidated dispatch matrix cells: ${formatDispatchMatrixIssueList(unvalidated)}`);
|
|
251
|
+
}
|
|
252
|
+
const hasUnknown = unknown.length > 0;
|
|
253
|
+
return {
|
|
254
|
+
name: 'project:dispatch_matrix',
|
|
255
|
+
description: 'Dispatch matrix cell availability',
|
|
256
|
+
status: hasUnknown ? 'warn' : 'pass',
|
|
257
|
+
message: messageParts.join('. '),
|
|
258
|
+
fix: hasUnknown
|
|
259
|
+
? 'Run `oat config set workflow.dispatchCeiling.providers.<provider> <value>` with an available value, or refresh provider assets with `oat sync --scope project`.'
|
|
260
|
+
: undefined,
|
|
261
|
+
};
|
|
262
|
+
}
|
|
263
|
+
async function runChecksForScope(scope, scopeRoot, userConfigDir, dependencies) {
|
|
139
264
|
const checks = [];
|
|
140
265
|
const skillsPath = join(scopeRoot, '.agents', 'skills');
|
|
141
266
|
const agentsPath = join(scopeRoot, '.agents', 'agents');
|
|
@@ -345,7 +470,16 @@ async function runChecksForScope(scope, scopeRoot, dependencies) {
|
|
|
345
470
|
}
|
|
346
471
|
}
|
|
347
472
|
const repoReferenceRoot = join(scopeRoot, '.oat', 'repo');
|
|
348
|
-
const config = await
|
|
473
|
+
const [userConfig, config, localConfig] = await Promise.all([
|
|
474
|
+
dependencies.readUserConfig(userConfigDir),
|
|
475
|
+
dependencies.readOatConfig(scopeRoot),
|
|
476
|
+
dependencies.readOatLocalConfig(scopeRoot),
|
|
477
|
+
]);
|
|
478
|
+
checks.push(await createDispatchMatrixDoctorCheck(scopeRoot, [
|
|
479
|
+
{ layer: 'user', config: userConfig },
|
|
480
|
+
{ layer: 'shared', config },
|
|
481
|
+
{ layer: 'local', config: localConfig },
|
|
482
|
+
], dependencies));
|
|
349
483
|
const projectManagementEnabled = config.tools?.['project-management'] === true;
|
|
350
484
|
if (projectManagementEnabled) {
|
|
351
485
|
checks.push(...(await dependencies.runPjmDoctorChecks(repoReferenceRoot, {
|
|
@@ -362,7 +496,7 @@ async function runDoctorCommand(context, dependencies) {
|
|
|
362
496
|
const checks = [];
|
|
363
497
|
for (const scope of resolveConcreteScopes(context.scope)) {
|
|
364
498
|
const scopeRoot = await dependencies.resolveScopeRoot(scope, context);
|
|
365
|
-
const scopeChecks = await runChecksForScope(scope, scopeRoot, dependencies);
|
|
499
|
+
const scopeChecks = await runChecksForScope(scope, scopeRoot, join(context.home, '.oat'), dependencies);
|
|
366
500
|
checks.push(...scopeChecks);
|
|
367
501
|
}
|
|
368
502
|
if (context.json) {
|
|
@@ -1,6 +1,8 @@
|
|
|
1
1
|
import { type CommandContext, type GlobalOptions } from '../../app/command-context.js';
|
|
2
2
|
import { type ExecTarget, type OatConfig, type OatLocalConfig, type UserConfig } from '../../config/oat-config.js';
|
|
3
3
|
import { type ResolvedConfig } from '../../config/resolve.js';
|
|
4
|
+
import { type ModelFamily } from '../../providers/identity/family.js';
|
|
5
|
+
import { type IdentityConfidence, type IdentityProvenance } from '../../providers/identity/provenance.js';
|
|
4
6
|
import { Command } from 'commander';
|
|
5
7
|
interface GateCommandDependencies {
|
|
6
8
|
buildCommandContext: (options: GlobalOptions) => CommandContext;
|
|
@@ -20,16 +22,51 @@ interface ProcessRunOptions {
|
|
|
20
22
|
env: NodeJS.ProcessEnv;
|
|
21
23
|
purpose: 'host-detection' | 'availability' | 'execute';
|
|
22
24
|
stdio: 'ignore' | 'inherit';
|
|
25
|
+
timeoutMs: number;
|
|
23
26
|
}
|
|
24
27
|
interface ProcessRunResult {
|
|
25
28
|
exitCode: number;
|
|
29
|
+
timedOut?: boolean;
|
|
26
30
|
}
|
|
27
|
-
type CrossProviderAvoid = 'same-runtime' | 'none';
|
|
31
|
+
type CrossProviderAvoid = 'same-family' | 'same-runtime' | 'none';
|
|
32
|
+
type GateDiversityAchieved = 'different-family' | 'degraded-to-different-slug' | 'same-family - no diverse target available' | 'unknown-producer';
|
|
28
33
|
export interface SelectedExecTarget {
|
|
29
34
|
id: string;
|
|
30
35
|
target: ExecTarget;
|
|
36
|
+
model?: string;
|
|
37
|
+
family: ModelFamily;
|
|
38
|
+
diversity?: GateDiversityMetadata;
|
|
39
|
+
noDiverseFamilyFallback?: boolean;
|
|
31
40
|
}
|
|
32
|
-
|
|
41
|
+
interface GateProducerIdentity {
|
|
42
|
+
value: string;
|
|
43
|
+
provenance: IdentityProvenance;
|
|
44
|
+
confidence: IdentityConfidence;
|
|
45
|
+
family: ModelFamily;
|
|
46
|
+
avoidFamilies: ModelFamily[];
|
|
47
|
+
diversityClaimable: boolean;
|
|
48
|
+
source: 'flag' | 'stamp' | 'unknown';
|
|
49
|
+
}
|
|
50
|
+
interface GateDiversityMetadata {
|
|
51
|
+
avoid: CrossProviderAvoid;
|
|
52
|
+
achieved: GateDiversityAchieved;
|
|
53
|
+
producer: {
|
|
54
|
+
value: string;
|
|
55
|
+
provenance: IdentityProvenance;
|
|
56
|
+
confidence: IdentityConfidence;
|
|
57
|
+
family: ModelFamily;
|
|
58
|
+
source: GateProducerIdentity['source'];
|
|
59
|
+
avoidFamilies: ModelFamily[];
|
|
60
|
+
};
|
|
61
|
+
reviewer: {
|
|
62
|
+
target: string;
|
|
63
|
+
runtime: string;
|
|
64
|
+
family: ModelFamily;
|
|
65
|
+
model?: string;
|
|
66
|
+
};
|
|
67
|
+
warning?: string;
|
|
68
|
+
}
|
|
69
|
+
export declare function selectExecTarget(registry: Readonly<Record<string, ExecTarget>>, currentRuntime: string, avoid: CrossProviderAvoid, producerIdentity?: GateProducerIdentity): SelectedExecTarget | null;
|
|
33
70
|
export declare function createGateCommand(overrides?: Partial<GateCommandDependencies>): Command;
|
|
34
71
|
export {};
|
|
35
72
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/commands/gate/index.ts"],"names":[],"mappings":"AAKA,OAAO,EAEL,KAAK,cAAc,EACnB,KAAK,aAAa,EACnB,MAAM,sBAAsB,CAAC;AAQ9B,OAAO,EAQL,KAAK,UAAU,EAIf,KAAK,SAAS,EACd,KAAK,cAAc,EACnB,KAAK,UAAU,EAEhB,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EAIL,KAAK,cAAc,EACpB,MAAM,iBAAiB,CAAC;AAGzB,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAQpC,UAAU,uBAAuB;IAC/B,mBAAmB,EAAE,CAAC,OAAO,EAAE,aAAa,KAAK,cAAc,CAAC;IAChE,kBAAkB,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,OAAO,CAAC,MAAM,CAAC,CAAC;IACrD,aAAa,EAAE,CAAC,QAAQ,EAAE,MAAM,KAAK,OAAO,CAAC,SAAS,CAAC,CAAC;IACxD,cAAc,EAAE,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,SAAS,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IACvE,kBAAkB,EAAE,CAAC,QAAQ,EAAE,MAAM,KAAK,OAAO,CAAC,cAAc,CAAC,CAAC;IAClE,mBAAmB,EAAE,CACnB,QAAQ,EAAE,MAAM,EAChB,MAAM,EAAE,cAAc,KACnB,OAAO,CAAC,IAAI,CAAC,CAAC;IACnB,cAAc,EAAE,CAAC,aAAa,EAAE,MAAM,KAAK,OAAO,CAAC,UAAU,CAAC,CAAC;IAC/D,eAAe,EAAE,CAAC,aAAa,EAAE,MAAM,EAAE,MAAM,EAAE,UAAU,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IAC9E,sBAAsB,EAAE,CACtB,QAAQ,EAAE,MAAM,EAChB,aAAa,EAAE,MAAM,EACrB,GAAG,EAAE,MAAM,CAAC,UAAU,KACnB,OAAO,CAAC,cAAc,CAAC,CAAC;IAC7B,UAAU,EAAE,CACV,OAAO,EAAE,MAAM,EACf,IAAI,EAAE,MAAM,EAAE,EACd,OAAO,EAAE,iBAAiB,KACvB,OAAO,CAAC,gBAAgB,CAAC,CAAC;IAC/B,UAAU,EAAE,MAAM,CAAC,UAAU,CAAC;CAC/B;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/commands/gate/index.ts"],"names":[],"mappings":"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"}
|