@open-agent-toolkit/cli 0.0.29 → 0.0.31
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/docs/workflows/projects/reviews.md +2 -2
- package/assets/public-package-versions.json +4 -4
- package/assets/skills/oat-project-review-receive/SKILL.md +12 -5
- package/assets/skills/oat-review-receive/SKILL.md +4 -2
- package/dist/app/create-program.d.ts.map +1 -1
- package/dist/app/create-program.js +2 -2
- package/dist/commands/docs/init/scaffold.d.ts.map +1 -1
- package/dist/commands/docs/init/scaffold.js +12 -11
- package/dist/index.d.ts +1 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +12 -4
- package/dist/manifest/manager.d.ts.map +1 -1
- package/dist/manifest/manager.js +1 -1
- package/dist/shared/oat-version.d.ts +2 -0
- package/dist/shared/oat-version.d.ts.map +1 -0
- package/dist/shared/oat-version.js +3 -0
- package/package.json +2 -2
|
@@ -53,8 +53,8 @@ Status progression in `plan.md` Reviews table:
|
|
|
53
53
|
|
|
54
54
|
- Critical/Important: address before pass.
|
|
55
55
|
- Medium: address by default; defer only with explicit approval and recorded rationale/disposition.
|
|
56
|
-
- Minor (non-final scopes): auto-
|
|
57
|
-
- Minor (final scope): not auto-deferred; require explicit user disposition (defer vs convert), and
|
|
56
|
+
- Minor (non-final scopes): do not auto-defer by default. Convert when likely future cleanup or when the fix is trivial; defer only with recorded rationale.
|
|
57
|
+
- Minor (final scope): not auto-deferred; require explicit user disposition (defer vs convert), and recommend convert when likely future cleanup or trivial to fix.
|
|
58
58
|
|
|
59
59
|
## Auto-review at checkpoints
|
|
60
60
|
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: oat-project-review-receive
|
|
3
|
-
version: 1.
|
|
3
|
+
version: 1.4.0
|
|
4
4
|
description: Use when review findings from oat-project-review-provide need closure. Converts review artifacts into actionable plan tasks.
|
|
5
5
|
disable-model-invocation: true
|
|
6
6
|
user-invocable: true
|
|
@@ -175,7 +175,7 @@ For each finding, build a structured register entry:
|
|
|
175
175
|
- For non-final scopes:
|
|
176
176
|
- Mark the review as `passed` in the plan.md Reviews table (if plan.md exists)
|
|
177
177
|
- No fix tasks are added
|
|
178
|
-
- Minor findings
|
|
178
|
+
- Minor findings still follow the Step 9 recommendation/disposition rules before routing onward
|
|
179
179
|
- Route user to normal next action
|
|
180
180
|
- For `final` scope:
|
|
181
181
|
- Do not mark `passed` until both gates are complete:
|
|
@@ -502,9 +502,13 @@ If any Medium is proposed for deferral:
|
|
|
502
502
|
Minor findings handling is scope-aware:
|
|
503
503
|
|
|
504
504
|
- If `scope != final`:
|
|
505
|
-
- Minor findings are auto-deferred
|
|
506
|
-
-
|
|
507
|
-
|
|
505
|
+
- Minor findings are not auto-deferred just because they are non-functional.
|
|
506
|
+
- Default to converting a Minor finding to a task when either of these is true:
|
|
507
|
+
- it is likely future cleanup (better than even chance that the team will need to address it later), or
|
|
508
|
+
- the fix scope is `Negligible` or `Minor`.
|
|
509
|
+
- Only propose deferral when the finding is genuinely low-probability cleanup, blocked by another change, duplicated elsewhere, explicitly out of scope, or fixing now would create disproportionate churn/risk.
|
|
510
|
+
- If deferred, record rationale in implementation.md under "Deferred Findings".
|
|
511
|
+
- Do not block review completion on minor disposition once each finding has been converted or explicitly deferred with rationale.
|
|
508
512
|
|
|
509
513
|
- If `scope == final`:
|
|
510
514
|
- Minor findings are NOT auto-deferred silently.
|
|
@@ -512,6 +516,9 @@ Minor findings handling is scope-aware:
|
|
|
512
516
|
- what the issue is,
|
|
513
517
|
- potential user/maintainer impact,
|
|
514
518
|
- why fixing now vs deferring is reasonable.
|
|
519
|
+
- Recommendation default:
|
|
520
|
+
- recommend `convert` when the finding is likely future cleanup or the fix scope is `Negligible`/`Minor`;
|
|
521
|
+
- recommend `defer` only when the finding is unlikely to matter soon, blocked, duplicated, or high-churn to address now.
|
|
515
522
|
- Keep explanations concise (1-3 sentences per minor) and include file/line when available.
|
|
516
523
|
- Ask user explicitly:
|
|
517
524
|
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: oat-review-receive
|
|
3
|
-
version: 1.
|
|
3
|
+
version: 1.3.0
|
|
4
4
|
description: Use when processing review findings outside project context. Converts local review artifacts into actionable task lists.
|
|
5
5
|
disable-model-invocation: true
|
|
6
6
|
user-invocable: true
|
|
@@ -42,6 +42,7 @@ If you catch yourself:
|
|
|
42
42
|
- Editing project lifecycle docs in ad-hoc mode -> STOP and revert to task-list output only.
|
|
43
43
|
- Triaging without presenting a findings overview first -> STOP and show overview before disposition prompts.
|
|
44
44
|
- Skipping Medium finding rationale when proposing deferral -> STOP and collect explicit rationale.
|
|
45
|
+
- Auto-deferring Minor findings without checking future cleanup likelihood or fix cost -> STOP and re-evaluate the recommendation.
|
|
45
46
|
|
|
46
47
|
**Recovery:**
|
|
47
48
|
|
|
@@ -181,11 +182,12 @@ Default suggestions:
|
|
|
181
182
|
- Critical -> `convert`
|
|
182
183
|
- Important -> `convert`
|
|
183
184
|
- Medium -> `convert` (propose `defer` only with concrete rationale)
|
|
184
|
-
- Minor -> `defer`
|
|
185
|
+
- Minor -> `convert` when future cleanup is likely or the fix is trivial; otherwise `defer` with concrete rationale
|
|
185
186
|
|
|
186
187
|
Rules:
|
|
187
188
|
|
|
188
189
|
- Require explicit rationale for `defer` or `dismiss`.
|
|
190
|
+
- Do not recommend `defer` for a Minor finding solely because it does not impact current functionality. If there is a better-than-even chance the team will need to clean it up later, or the fix is `Negligible`/`Minor`, recommend `convert`.
|
|
189
191
|
- Do not silently skip findings.
|
|
190
192
|
|
|
191
193
|
### Step 5: Generate Task List Output
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"create-program.d.ts","sourceRoot":"","sources":["../../src/app/create-program.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"create-program.d.ts","sourceRoot":"","sources":["../../src/app/create-program.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,OAAO,EAAU,MAAM,WAAW,CAAC;AAO5C,wBAAgB,aAAa,IAAI,OAAO,CAavC"}
|
|
@@ -1,13 +1,13 @@
|
|
|
1
|
+
import { OAT_VERSION } from '../shared/oat-version.js';
|
|
1
2
|
import { Command, Option } from 'commander';
|
|
2
3
|
const PROGRAM_NAME = 'oat';
|
|
3
4
|
const PROGRAM_DESCRIPTION = 'Open Agent Toolkit CLI for provider interoperability';
|
|
4
|
-
const PROGRAM_VERSION = '0.0.24';
|
|
5
5
|
const SCOPE_CHOICES = ['project', 'user', 'all'];
|
|
6
6
|
export function createProgram() {
|
|
7
7
|
return new Command()
|
|
8
8
|
.name(PROGRAM_NAME)
|
|
9
9
|
.description(PROGRAM_DESCRIPTION)
|
|
10
|
-
.version(
|
|
10
|
+
.version(OAT_VERSION)
|
|
11
11
|
.option('--json', 'Output a single JSON document')
|
|
12
12
|
.option('--verbose', 'Enable verbose debug output')
|
|
13
13
|
.addOption(new Option('--scope <scope>', 'Limit execution scope')
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"scaffold.d.ts","sourceRoot":"","sources":["../../../../src/commands/docs/init/scaffold.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,oBAAoB,CAAC;
|
|
1
|
+
{"version":3,"file":"scaffold.d.ts","sourceRoot":"","sources":["../../../../src/commands/docs/init/scaffold.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,oBAAoB,CAAC;AAIjE,OAAO,KAAK,EAGV,uBAAuB,EAExB,MAAM,mBAAmB,CAAC;AA+E3B,MAAM,WAAW,sBAAuB,SAAQ,uBAAuB;IACrE,UAAU,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,qBAAqB;IACpC,OAAO,EAAE,MAAM,CAAC;IAChB,YAAY,EAAE,MAAM,EAAE,CAAC;IACvB,mBAAmB,EAAE,sBAAsB,CAAC;CAC7C;AAED,MAAM,WAAW,aAAa;IAC5B,SAAS,EAAE,OAAO,CAAC;IACnB,aAAa,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;IAC3B,kBAAkB,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CAC5C;AAWD,wBAAsB,eAAe,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAOxE;AAgDD,wBAAsB,oBAAoB,CACxC,QAAQ,EAAE,MAAM,EAChB,UAAU,EAAE,MAAM,GACjB,OAAO,CAAC,aAAa,CAAC,CAaxB;AA4ID,wBAAsB,eAAe,CACnC,OAAO,EAAE,sBAAsB,GAC9B,OAAO,CAAC,qBAAqB,CAAC,CAoChC"}
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { readdir, readFile, writeFile } from 'node:fs/promises';
|
|
2
2
|
import { basename, dirname, join } from 'node:path';
|
|
3
3
|
import { dirExists, ensureDir, fileExists } from '../../../fs/io.js';
|
|
4
|
+
import { OAT_VERSION } from '../../../shared/oat-version.js';
|
|
4
5
|
import { getTemplateDir } from './resolve-options.js';
|
|
5
6
|
const MKDOCS_TEMPLATE_FILES = [
|
|
6
7
|
{ source: '.gitignore', destination: '.gitignore' },
|
|
@@ -71,7 +72,7 @@ const OAT_DEP_PACKAGES = [
|
|
|
71
72
|
'docs-theme',
|
|
72
73
|
'docs-transforms',
|
|
73
74
|
];
|
|
74
|
-
const DEFAULT_OAT_PUBLISHED_VERSION =
|
|
75
|
+
const DEFAULT_OAT_PUBLISHED_VERSION = OAT_VERSION;
|
|
75
76
|
const PUBLIC_PACKAGE_VERSIONS_FILE = 'public-package-versions.json';
|
|
76
77
|
export async function detectIsOatRepo(repoRoot) {
|
|
77
78
|
for (const pkg of OAT_DEP_PACKAGES) {
|
|
@@ -81,6 +82,16 @@ export async function detectIsOatRepo(repoRoot) {
|
|
|
81
82
|
}
|
|
82
83
|
return true;
|
|
83
84
|
}
|
|
85
|
+
async function readBundledOatPackageVersions(assetsRoot) {
|
|
86
|
+
try {
|
|
87
|
+
const content = await readFile(join(assetsRoot, PUBLIC_PACKAGE_VERSIONS_FILE), 'utf8');
|
|
88
|
+
const parsed = JSON.parse(content);
|
|
89
|
+
return Object.fromEntries(OAT_DEP_PACKAGES.flatMap((name) => typeof parsed[name] === 'string' ? [[name, parsed[name]]] : []));
|
|
90
|
+
}
|
|
91
|
+
catch {
|
|
92
|
+
return {};
|
|
93
|
+
}
|
|
94
|
+
}
|
|
84
95
|
async function readCliVersion(assetsRoot) {
|
|
85
96
|
const cliRoot = dirname(assetsRoot);
|
|
86
97
|
try {
|
|
@@ -92,16 +103,6 @@ async function readCliVersion(assetsRoot) {
|
|
|
92
103
|
return DEFAULT_OAT_PUBLISHED_VERSION;
|
|
93
104
|
}
|
|
94
105
|
}
|
|
95
|
-
async function readBundledOatPackageVersions(assetsRoot) {
|
|
96
|
-
try {
|
|
97
|
-
const content = await readFile(join(assetsRoot, PUBLIC_PACKAGE_VERSIONS_FILE), 'utf8');
|
|
98
|
-
const parsed = JSON.parse(content);
|
|
99
|
-
return Object.fromEntries(OAT_DEP_PACKAGES.flatMap((name) => typeof parsed[name] === 'string' ? [[name, parsed[name]]] : []));
|
|
100
|
-
}
|
|
101
|
-
catch {
|
|
102
|
-
return {};
|
|
103
|
-
}
|
|
104
|
-
}
|
|
105
106
|
function buildFallbackOatPackageVersions(version) {
|
|
106
107
|
return Object.fromEntries(OAT_DEP_PACKAGES.map((name) => [name, version]));
|
|
107
108
|
}
|
package/dist/index.d.ts
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
2
|
export declare function normalizeArgv(argv: string[]): string[];
|
|
3
3
|
export declare function main(argv?: string[]): Promise<void>;
|
|
4
|
+
export declare function isEntrypoint(argv?: string[], entrypointUrl?: string): boolean;
|
|
4
5
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AAWA,wBAAgB,aAAa,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,MAAM,EAAE,CAatD;AAED,wBAAsB,IAAI,CAAC,IAAI,GAAE,MAAM,EAAiB,GAAG,OAAO,CAAC,IAAI,CAAC,CAIvE;AAED,wBAAgB,YAAY,CAC1B,IAAI,GAAE,MAAM,EAAiB,EAC7B,aAAa,GAAE,MAAwB,GACtC,OAAO,CAaT"}
|
package/dist/index.js
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
|
+
import { realpathSync } from 'node:fs';
|
|
2
3
|
import { resolve } from 'node:path';
|
|
3
|
-
import { pathToFileURL } from 'node:url';
|
|
4
|
+
import { fileURLToPath, pathToFileURL } from 'node:url';
|
|
4
5
|
import { createProgram } from './app/create-program.js';
|
|
5
6
|
import { registerCommands } from './commands/index.js';
|
|
6
7
|
import { CliError } from './errors/index.js';
|
|
@@ -23,11 +24,18 @@ export async function main(argv = process.argv) {
|
|
|
23
24
|
registerCommands(program);
|
|
24
25
|
await program.parseAsync(normalizeArgv(argv));
|
|
25
26
|
}
|
|
26
|
-
function isEntrypoint() {
|
|
27
|
-
if (!
|
|
27
|
+
export function isEntrypoint(argv = process.argv, entrypointUrl = import.meta.url) {
|
|
28
|
+
if (!argv[1]) {
|
|
28
29
|
return false;
|
|
29
30
|
}
|
|
30
|
-
|
|
31
|
+
const entrypointPath = fileURLToPath(entrypointUrl);
|
|
32
|
+
const argvPath = resolve(argv[1]);
|
|
33
|
+
try {
|
|
34
|
+
return realpathSync(entrypointPath) === realpathSync(argvPath);
|
|
35
|
+
}
|
|
36
|
+
catch {
|
|
37
|
+
return entrypointUrl === pathToFileURL(argvPath).href;
|
|
38
|
+
}
|
|
31
39
|
}
|
|
32
40
|
if (isEntrypoint()) {
|
|
33
41
|
void main().catch((error) => {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"manager.d.ts","sourceRoot":"","sources":["../../src/manifest/manager.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"manager.d.ts","sourceRoot":"","sources":["../../src/manifest/manager.ts"],"names":[],"mappings":"AAOA,OAAO,EACL,KAAK,QAAQ,EACb,KAAK,aAAa,EAEnB,MAAM,kBAAkB,CAAC;AAa1B,wBAAgB,mBAAmB,IAAI,QAAQ,CAO9C;AAED,wBAAsB,YAAY,CAAC,YAAY,EAAE,MAAM,GAAG,OAAO,CAAC,QAAQ,CAAC,CA6C1E;AAED,wBAAsB,YAAY,CAChC,YAAY,EAAE,MAAM,EACpB,QAAQ,EAAE,QAAQ,GACjB,OAAO,CAAC,IAAI,CAAC,CAQf;AAED,wBAAgB,SAAS,CACvB,QAAQ,EAAE,QAAQ,EAClB,aAAa,EAAE,MAAM,EACrB,QAAQ,EAAE,MAAM,GACf,aAAa,GAAG,SAAS,CAK3B;AAED,wBAAgB,QAAQ,CAAC,QAAQ,EAAE,QAAQ,EAAE,KAAK,EAAE,aAAa,GAAG,QAAQ,CAc3E;AAED,wBAAgB,WAAW,CACzB,QAAQ,EAAE,QAAQ,EAClB,aAAa,EAAE,MAAM,EACrB,QAAQ,EAAE,MAAM,GACf,QAAQ,CAeV"}
|
package/dist/manifest/manager.js
CHANGED
|
@@ -2,8 +2,8 @@ import { randomUUID } from 'node:crypto';
|
|
|
2
2
|
import { mkdir, readFile, rename, writeFile } from 'node:fs/promises';
|
|
3
3
|
import { dirname } from 'node:path';
|
|
4
4
|
import { CliError } from '../errors/index.js';
|
|
5
|
+
import { OAT_VERSION } from '../shared/oat-version.js';
|
|
5
6
|
import { ManifestSchema, } from './manifest.types.js';
|
|
6
|
-
const OAT_VERSION = '0.0.24';
|
|
7
7
|
function formatIssuePath(path) {
|
|
8
8
|
if (path.length === 0) {
|
|
9
9
|
return '(root)';
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"oat-version.d.ts","sourceRoot":"","sources":["../../src/shared/oat-version.ts"],"names":[],"mappings":"AAUA,eAAO,MAAM,WAAW,QAAiC,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@open-agent-toolkit/cli",
|
|
3
|
-
"version": "0.0.
|
|
3
|
+
"version": "0.0.31",
|
|
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",
|
|
@@ -33,7 +33,7 @@
|
|
|
33
33
|
"ora": "^9.0.0",
|
|
34
34
|
"yaml": "2.8.2",
|
|
35
35
|
"zod": "^3.25.76",
|
|
36
|
-
"@open-agent-toolkit/control-plane": "0.0.
|
|
36
|
+
"@open-agent-toolkit/control-plane": "0.0.31"
|
|
37
37
|
},
|
|
38
38
|
"devDependencies": {
|
|
39
39
|
"@types/node": "^22.10.0",
|