@open-agent-toolkit/cli 0.1.43 → 0.1.46
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-reviewer.md +2 -2
- package/assets/config/dispatch-matrix-recommendation.json +23 -0
- package/assets/docs/cli-utilities/config-and-local-state.md +7 -0
- package/assets/docs/cli-utilities/configuration.md +104 -25
- 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/provider-sync/config.md +5 -1
- package/assets/docs/provider-sync/manifest-and-drift.md +6 -1
- package/assets/docs/provider-sync/providers.md +6 -3
- package/assets/docs/provider-sync/scope-and-surface.md +2 -1
- package/assets/docs/reference/oat-directory-structure.md +2 -2
- package/assets/docs/workflows/projects/dispatch-ceiling.md +110 -27
- package/assets/docs/workflows/projects/implementation-execution.md +20 -13
- package/assets/public-package-versions.json +4 -4
- package/assets/skills/oat-project-implement/SKILL.md +155 -58
- package/assets/skills/oat-project-plan/SKILL.md +22 -3
- package/assets/skills/oat-project-quick-start/SKILL.md +54 -23
- package/assets/templates/state.md +5 -0
- 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 +429 -20
- 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 +209 -19
- 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 +487 -17
- package/dist/commands/providers/codex/index.d.ts +4 -0
- package/dist/commands/providers/codex/index.d.ts.map +1 -0
- package/dist/commands/providers/codex/index.js +7 -0
- package/dist/commands/providers/codex/materialize.d.ts +5 -0
- package/dist/commands/providers/codex/materialize.d.ts.map +1 -0
- package/dist/commands/providers/codex/materialize.js +152 -0
- package/dist/commands/providers/index.d.ts +2 -2
- package/dist/commands/providers/index.d.ts.map +1 -1
- package/dist/commands/providers/index.js +4 -2
- package/dist/commands/providers/providers.types.d.ts +23 -0
- package/dist/commands/providers/providers.types.d.ts.map +1 -1
- package/dist/commands/shared/codex-strays.d.ts.map +1 -1
- package/dist/commands/shared/codex-strays.js +11 -1
- package/dist/commands/status/index.d.ts +4 -1
- package/dist/commands/status/index.d.ts.map +1 -1
- package/dist/commands/status/index.js +1 -1
- package/dist/commands/sync/index.d.ts.map +1 -1
- package/dist/commands/sync/index.js +1 -1
- package/dist/commands/sync/sync.types.d.ts +4 -1
- package/dist/commands/sync/sync.types.d.ts.map +1 -1
- package/dist/config/dispatch-ceiling-preset.d.ts +4 -0
- package/dist/config/dispatch-ceiling-preset.d.ts.map +1 -1
- package/dist/config/dispatch-ceiling-preset.js +3 -0
- package/dist/config/dispatch-policy-options.d.ts +20 -0
- package/dist/config/dispatch-policy-options.d.ts.map +1 -0
- package/dist/config/dispatch-policy-options.js +96 -0
- package/dist/config/oat-config.d.ts +21 -5
- package/dist/config/oat-config.d.ts.map +1 -1
- package/dist/config/oat-config.js +118 -10
- package/dist/config/resolve.js +12 -0
- package/dist/manifest/manifest.types.d.ts +12 -12
- package/dist/providers/ceiling/registry.d.ts +7 -5
- package/dist/providers/ceiling/registry.d.ts.map +1 -1
- package/dist/providers/ceiling/registry.js +32 -5
- package/dist/providers/codex/codec/config-merge.d.ts +6 -0
- package/dist/providers/codex/codec/config-merge.d.ts.map +1 -1
- package/dist/providers/codex/codec/config-merge.js +7 -0
- package/dist/providers/codex/codec/materialize.d.ts +16 -0
- package/dist/providers/codex/codec/materialize.d.ts.map +1 -0
- package/dist/providers/codex/codec/materialize.js +57 -0
- package/dist/providers/codex/codec/shared.d.ts +1 -0
- package/dist/providers/codex/codec/shared.d.ts.map +1 -1
- package/dist/providers/codex/codec/shared.js +9 -1
- package/dist/providers/codex/codec/sync-extension.d.ts +7 -1
- package/dist/providers/codex/codec/sync-extension.d.ts.map +1 -1
- package/dist/providers/codex/codec/sync-extension.js +183 -46
- package/dist/providers/identity/availability.d.ts +45 -0
- package/dist/providers/identity/availability.d.ts.map +1 -0
- package/dist/providers/identity/availability.js +353 -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,16 +7,18 @@ 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, isCodexMaterializedRouteTarget, } 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';
|
|
14
14
|
import { loadManifest } from '../../manifest/index.js';
|
|
15
15
|
import { claudeAdapter } from '../../providers/claude/index.js';
|
|
16
16
|
import { codexAdapter } from '../../providers/codex/index.js';
|
|
17
|
+
import { isOatManagedCodexRoleFile } from '../../providers/codex/codec/shared.js';
|
|
17
18
|
import { copilotAdapter } from '../../providers/copilot/index.js';
|
|
18
19
|
import { cursorAdapter } from '../../providers/cursor/index.js';
|
|
19
20
|
import { geminiAdapter } from '../../providers/gemini/index.js';
|
|
21
|
+
import { normalizeMatrixCellAvailability, validateMatrixCell, } from '../../providers/identity/availability.js';
|
|
20
22
|
import { formatDoctorResults } from '../../ui/output.js';
|
|
21
23
|
import { Command } from 'commander';
|
|
22
24
|
async function pathExistsDefault(path) {
|
|
@@ -129,13 +131,193 @@ function createDependencies() {
|
|
|
129
131
|
readFile: async (path) => readFile(path, 'utf8'),
|
|
130
132
|
resolveAssetsRoot,
|
|
131
133
|
readOatConfig,
|
|
134
|
+
readOatLocalConfig,
|
|
135
|
+
readUserConfig,
|
|
136
|
+
validateMatrixCell,
|
|
137
|
+
processEnv: process.env,
|
|
132
138
|
runPjmDoctorChecks,
|
|
133
139
|
// Default binding remains self-contained, but still honors the caller-
|
|
134
140
|
// provided pathExists dependency from runChecksForScope when available.
|
|
135
141
|
checkSkillVersions: (scopeRoot, assetsRoot, pathExists = pathExistsDefault) => checkSkillVersionsDefault(scopeRoot, assetsRoot, pathExists),
|
|
136
142
|
};
|
|
137
143
|
}
|
|
138
|
-
|
|
144
|
+
function isRouteTarget(entry) {
|
|
145
|
+
return typeof entry === 'object' && entry !== null && !Array.isArray(entry);
|
|
146
|
+
}
|
|
147
|
+
function formatRouteTargetValue(entry) {
|
|
148
|
+
return [entry.model, entry.effort].filter(Boolean).join('/');
|
|
149
|
+
}
|
|
150
|
+
function addDispatchMatrixCellRefs(refs, layer, provider, path, cell) {
|
|
151
|
+
if (typeof cell === 'string') {
|
|
152
|
+
refs.push({ layer, provider, value: cell, path });
|
|
153
|
+
return;
|
|
154
|
+
}
|
|
155
|
+
for (const [index, entry] of cell.entries()) {
|
|
156
|
+
const entryPath = `${path}[${index}]`;
|
|
157
|
+
if (typeof entry === 'string') {
|
|
158
|
+
refs.push({ layer, provider, value: entry, path: entryPath });
|
|
159
|
+
continue;
|
|
160
|
+
}
|
|
161
|
+
if (!isRouteTarget(entry)) {
|
|
162
|
+
continue;
|
|
163
|
+
}
|
|
164
|
+
const targetProvider = entry.harness ?? provider;
|
|
165
|
+
if (isCodexMaterializedRouteTarget(provider, entry)) {
|
|
166
|
+
if (entry.model && entry.effort) {
|
|
167
|
+
refs.push({
|
|
168
|
+
layer,
|
|
169
|
+
provider: targetProvider,
|
|
170
|
+
value: formatRouteTargetValue(entry),
|
|
171
|
+
path: entryPath,
|
|
172
|
+
target: entry,
|
|
173
|
+
});
|
|
174
|
+
continue;
|
|
175
|
+
}
|
|
176
|
+
}
|
|
177
|
+
if (entry.model) {
|
|
178
|
+
refs.push({
|
|
179
|
+
layer,
|
|
180
|
+
provider: targetProvider,
|
|
181
|
+
value: entry.model,
|
|
182
|
+
path: `${entryPath}.model`,
|
|
183
|
+
});
|
|
184
|
+
}
|
|
185
|
+
if (entry.effort) {
|
|
186
|
+
refs.push({
|
|
187
|
+
layer,
|
|
188
|
+
provider: targetProvider,
|
|
189
|
+
value: entry.effort,
|
|
190
|
+
path: `${entryPath}.effort`,
|
|
191
|
+
});
|
|
192
|
+
}
|
|
193
|
+
}
|
|
194
|
+
}
|
|
195
|
+
function collectDispatchMatrixCellRefs(layers) {
|
|
196
|
+
const refs = [];
|
|
197
|
+
for (const { layer, config } of layers) {
|
|
198
|
+
const providers = config.workflow?.dispatchCeiling?.providers ?? {};
|
|
199
|
+
for (const [provider, providerValue] of Object.entries(providers)) {
|
|
200
|
+
const providerPath = `workflow.dispatchCeiling.providers.${provider}`;
|
|
201
|
+
if (typeof providerValue === 'string') {
|
|
202
|
+
refs.push({
|
|
203
|
+
layer,
|
|
204
|
+
provider,
|
|
205
|
+
value: providerValue,
|
|
206
|
+
path: providerPath,
|
|
207
|
+
});
|
|
208
|
+
continue;
|
|
209
|
+
}
|
|
210
|
+
const tierMap = providerValue;
|
|
211
|
+
for (const [tier, cell] of Object.entries(tierMap)) {
|
|
212
|
+
if (cell === undefined) {
|
|
213
|
+
continue;
|
|
214
|
+
}
|
|
215
|
+
addDispatchMatrixCellRefs(refs, layer, provider, `${providerPath}.${tier}`, cell);
|
|
216
|
+
}
|
|
217
|
+
}
|
|
218
|
+
}
|
|
219
|
+
return refs;
|
|
220
|
+
}
|
|
221
|
+
function formatDispatchMatrixIssueList(issues) {
|
|
222
|
+
return issues
|
|
223
|
+
.map((issue) => {
|
|
224
|
+
const suffix = 'message' in issue && typeof issue.message === 'string'
|
|
225
|
+
? `; ${issue.message}`
|
|
226
|
+
: '';
|
|
227
|
+
return `${issue.path}=${issue.value} (${issue.layer} config)${suffix}`;
|
|
228
|
+
})
|
|
229
|
+
.join(', ');
|
|
230
|
+
}
|
|
231
|
+
async function createDispatchMatrixDoctorCheck(scopeRoot, layers, dependencies) {
|
|
232
|
+
const refs = collectDispatchMatrixCellRefs(layers);
|
|
233
|
+
if (refs.length === 0) {
|
|
234
|
+
return {
|
|
235
|
+
name: 'project:dispatch_matrix',
|
|
236
|
+
description: 'Dispatch matrix cell availability',
|
|
237
|
+
status: 'pass',
|
|
238
|
+
message: 'No configured dispatch matrix cells found in user, shared, or local config layers.',
|
|
239
|
+
};
|
|
240
|
+
}
|
|
241
|
+
const issues = [];
|
|
242
|
+
for (const ref of refs) {
|
|
243
|
+
let result;
|
|
244
|
+
try {
|
|
245
|
+
result = normalizeMatrixCellAvailability(await dependencies.validateMatrixCell(ref.provider, ref.value, {
|
|
246
|
+
cwd: scopeRoot,
|
|
247
|
+
env: dependencies.processEnv,
|
|
248
|
+
detailed: true,
|
|
249
|
+
...(ref.target ? { target: ref.target } : {}),
|
|
250
|
+
}));
|
|
251
|
+
}
|
|
252
|
+
catch {
|
|
253
|
+
result = { availability: 'unvalidated' };
|
|
254
|
+
}
|
|
255
|
+
if (result.availability !== 'valid') {
|
|
256
|
+
issues.push({
|
|
257
|
+
...ref,
|
|
258
|
+
availability: result.availability,
|
|
259
|
+
...(result.message ? { message: result.message } : {}),
|
|
260
|
+
});
|
|
261
|
+
}
|
|
262
|
+
}
|
|
263
|
+
if (issues.length === 0) {
|
|
264
|
+
return {
|
|
265
|
+
name: 'project:dispatch_matrix',
|
|
266
|
+
description: 'Dispatch matrix cell availability',
|
|
267
|
+
status: 'pass',
|
|
268
|
+
message: `All configured dispatch matrix cells are available: ${formatDispatchMatrixIssueList(refs)}.`,
|
|
269
|
+
};
|
|
270
|
+
}
|
|
271
|
+
const unknown = issues.filter((issue) => issue.availability === 'unknown-value');
|
|
272
|
+
const unvalidated = issues.filter((issue) => issue.availability === 'unvalidated');
|
|
273
|
+
const messageParts = [];
|
|
274
|
+
if (unknown.length > 0) {
|
|
275
|
+
messageParts.push(`Unknown dispatch matrix cells: ${formatDispatchMatrixIssueList(unknown)}`);
|
|
276
|
+
}
|
|
277
|
+
if (unvalidated.length > 0) {
|
|
278
|
+
messageParts.push(`Unvalidated dispatch matrix cells: ${formatDispatchMatrixIssueList(unvalidated)}`);
|
|
279
|
+
}
|
|
280
|
+
const hasUnknown = unknown.length > 0;
|
|
281
|
+
const hasUnvalidated = unvalidated.length > 0;
|
|
282
|
+
return {
|
|
283
|
+
name: 'project:dispatch_matrix',
|
|
284
|
+
description: 'Dispatch matrix cell availability',
|
|
285
|
+
status: hasUnknown || hasUnvalidated ? 'warn' : 'pass',
|
|
286
|
+
message: messageParts.join('. '),
|
|
287
|
+
fix: hasUnknown
|
|
288
|
+
? 'Run `oat config set workflow.dispatchCeiling.providers.<provider> <value>` with an available value, or refresh provider assets with `oat sync --scope project`.'
|
|
289
|
+
: undefined,
|
|
290
|
+
};
|
|
291
|
+
}
|
|
292
|
+
function getCodexAgentConfigFile(config) {
|
|
293
|
+
if (!config || typeof config !== 'object' || Array.isArray(config)) {
|
|
294
|
+
return null;
|
|
295
|
+
}
|
|
296
|
+
const configFile = config.config_file;
|
|
297
|
+
return typeof configFile === 'string' && configFile.startsWith('agents/')
|
|
298
|
+
? configFile
|
|
299
|
+
: null;
|
|
300
|
+
}
|
|
301
|
+
function isLikelyOatGeneratedCodexRoleName(roleName) {
|
|
302
|
+
return (roleName === 'oat-phase-implementer' ||
|
|
303
|
+
roleName === 'oat-reviewer' ||
|
|
304
|
+
roleName.startsWith('oat-phase-implementer-') ||
|
|
305
|
+
roleName.startsWith('oat-reviewer-'));
|
|
306
|
+
}
|
|
307
|
+
async function isManagedCodexRoleConfig(scopeRoot, roleName, configFile, dependencies) {
|
|
308
|
+
const absoluteRolePath = join(scopeRoot, '.codex', configFile);
|
|
309
|
+
if (!(await dependencies.pathExists(absoluteRolePath))) {
|
|
310
|
+
return isLikelyOatGeneratedCodexRoleName(roleName);
|
|
311
|
+
}
|
|
312
|
+
try {
|
|
313
|
+
const roleContent = await dependencies.readFile(absoluteRolePath);
|
|
314
|
+
return isOatManagedCodexRoleFile(roleContent, roleName);
|
|
315
|
+
}
|
|
316
|
+
catch {
|
|
317
|
+
return false;
|
|
318
|
+
}
|
|
319
|
+
}
|
|
320
|
+
async function runChecksForScope(scope, scopeRoot, userConfigDir, dependencies) {
|
|
139
321
|
const checks = [];
|
|
140
322
|
const skillsPath = join(scopeRoot, '.agents', 'skills');
|
|
141
323
|
const agentsPath = join(scopeRoot, '.agents', 'agents');
|
|
@@ -294,17 +476,18 @@ async function runChecksForScope(scope, scopeRoot, dependencies) {
|
|
|
294
476
|
!Array.isArray(parsedConfig.agents)
|
|
295
477
|
? parsedConfig.agents
|
|
296
478
|
: null;
|
|
297
|
-
const managedRoles =
|
|
298
|
-
|
|
299
|
-
|
|
300
|
-
|
|
301
|
-
|
|
302
|
-
|
|
479
|
+
const managedRoles = [];
|
|
480
|
+
const roleConfigFiles = new Map();
|
|
481
|
+
for (const [roleName, roleConfig] of Object.entries(agents ?? {})) {
|
|
482
|
+
const configFile = getCodexAgentConfigFile(roleConfig);
|
|
483
|
+
if (!configFile) {
|
|
484
|
+
continue;
|
|
485
|
+
}
|
|
486
|
+
roleConfigFiles.set(roleName, configFile);
|
|
487
|
+
if (await isManagedCodexRoleConfig(scopeRoot, roleName, configFile, dependencies)) {
|
|
488
|
+
managedRoles.push(roleName);
|
|
303
489
|
}
|
|
304
|
-
|
|
305
|
-
return (typeof configFile === 'string' && configFile.startsWith('agents/'));
|
|
306
|
-
})
|
|
307
|
-
.map(([roleName]) => roleName);
|
|
490
|
+
}
|
|
308
491
|
if (managedRoles.length > 0) {
|
|
309
492
|
const multiAgentEnabled = features?.multi_agent === true || features?.multi_agent === 'true';
|
|
310
493
|
checks.push({
|
|
@@ -320,11 +503,9 @@ async function runChecksForScope(scope, scopeRoot, dependencies) {
|
|
|
320
503
|
});
|
|
321
504
|
const missingRoleFiles = [];
|
|
322
505
|
for (const roleName of managedRoles) {
|
|
323
|
-
const
|
|
324
|
-
|
|
325
|
-
if (typeof configFile !== 'string') {
|
|
506
|
+
const configFile = roleConfigFiles.get(roleName);
|
|
507
|
+
if (!configFile)
|
|
326
508
|
continue;
|
|
327
|
-
}
|
|
328
509
|
const absoluteRolePath = join(scopeRoot, '.codex', configFile);
|
|
329
510
|
if (!(await dependencies.pathExists(absoluteRolePath))) {
|
|
330
511
|
missingRoleFiles.push(configFile);
|
|
@@ -339,13 +520,22 @@ async function runChecksForScope(scope, scopeRoot, dependencies) {
|
|
|
339
520
|
: `Missing codex role files: ${missingRoleFiles.join(', ')}`,
|
|
340
521
|
fix: missingRoleFiles.length === 0
|
|
341
522
|
? undefined
|
|
342
|
-
: 'Regenerate codex roles with `oat sync --scope project
|
|
523
|
+
: 'Regenerate codex roles with `oat sync --scope project`, or materialize a single role with `oat providers codex materialize ...`.',
|
|
343
524
|
});
|
|
344
525
|
}
|
|
345
526
|
}
|
|
346
527
|
}
|
|
347
528
|
const repoReferenceRoot = join(scopeRoot, '.oat', 'repo');
|
|
348
|
-
const config = await
|
|
529
|
+
const [userConfig, config, localConfig] = await Promise.all([
|
|
530
|
+
dependencies.readUserConfig(userConfigDir),
|
|
531
|
+
dependencies.readOatConfig(scopeRoot),
|
|
532
|
+
dependencies.readOatLocalConfig(scopeRoot),
|
|
533
|
+
]);
|
|
534
|
+
checks.push(await createDispatchMatrixDoctorCheck(scopeRoot, [
|
|
535
|
+
{ layer: 'user', config: userConfig },
|
|
536
|
+
{ layer: 'shared', config },
|
|
537
|
+
{ layer: 'local', config: localConfig },
|
|
538
|
+
], dependencies));
|
|
349
539
|
const projectManagementEnabled = config.tools?.['project-management'] === true;
|
|
350
540
|
if (projectManagementEnabled) {
|
|
351
541
|
checks.push(...(await dependencies.runPjmDoctorChecks(repoReferenceRoot, {
|
|
@@ -362,7 +552,7 @@ async function runDoctorCommand(context, dependencies) {
|
|
|
362
552
|
const checks = [];
|
|
363
553
|
for (const scope of resolveConcreteScopes(context.scope)) {
|
|
364
554
|
const scopeRoot = await dependencies.resolveScopeRoot(scope, context);
|
|
365
|
-
const scopeChecks = await runChecksForScope(scope, scopeRoot, dependencies);
|
|
555
|
+
const scopeChecks = await runChecksForScope(scope, scopeRoot, join(context.home, '.oat'), dependencies);
|
|
366
556
|
checks.push(...scopeChecks);
|
|
367
557
|
}
|
|
368
558
|
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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"}
|