@open-agent-toolkit/cli 0.2.33 → 0.2.35
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/bundle-metadata.json +1 -1
- package/assets/docs/cli-utilities/configuration.md +20 -0
- package/assets/docs/provider-sync/commands.md +8 -0
- package/assets/public-package-versions.json +4 -4
- package/dist/commands/sync/apply.d.ts.map +1 -1
- package/dist/commands/sync/apply.js +9 -2
- package/dist/commands/sync/dry-run.d.ts.map +1 -1
- package/dist/commands/sync/dry-run.js +4 -0
- package/dist/commands/sync/index.d.ts.map +1 -1
- package/dist/commands/sync/index.js +39 -0
- package/dist/commands/sync/sync.types.d.ts +12 -0
- package/dist/commands/sync/sync.types.d.ts.map +1 -1
- package/dist/fs/assets.d.ts +11 -1
- package/dist/fs/assets.d.ts.map +1 -1
- package/dist/fs/assets.js +16 -2
- package/package.json +2 -2
|
@@ -198,6 +198,26 @@ project settings. Neither has a config key.
|
|
|
198
198
|
|
|
199
199
|
Both accept `1`, `true` or `on`.
|
|
200
200
|
|
|
201
|
+
### Bundled assets root (`OAT_ASSETS_DIR`)
|
|
202
|
+
|
|
203
|
+
The CLI reads its bundled skills, agents, templates, and scripts from the
|
|
204
|
+
packaged `assets/` directory next to the installed CLI. Setting a non-empty
|
|
205
|
+
`OAT_ASSETS_DIR` makes `resolveAssetsRoot` read that directory instead:
|
|
206
|
+
|
|
207
|
+
- The value is trimmed; unset, empty, or whitespace-only values keep the
|
|
208
|
+
packaged default. A relative value is resolved against the process working
|
|
209
|
+
directory.
|
|
210
|
+
- The override is validated exactly like the packaged root and fails closed:
|
|
211
|
+
the path must be a directory containing bundle metadata whose version matches
|
|
212
|
+
the running CLI (`OAT_VERSION`). A missing, malformed, or version-mismatched
|
|
213
|
+
override is an error — the CLI never silently falls back to packaged assets.
|
|
214
|
+
- Produce a matching bundle with `bash packages/cli/scripts/bundle-assets.sh`
|
|
215
|
+
while `OAT_ASSETS_DIR` points at the target directory (the script already
|
|
216
|
+
honors the variable as its destination).
|
|
217
|
+
|
|
218
|
+
This is primarily a test-isolation and packaging seam; day-to-day use of the CLI
|
|
219
|
+
does not need it.
|
|
220
|
+
|
|
201
221
|
`EXPLAINER_KIT_ALLOW_PRIVATE_PUBLIC_ROOT` disables an anti-SSRF control. Public
|
|
202
222
|
verification issues an outbound GET against whatever `publicBaseUrl` names, so
|
|
203
223
|
by default the connector refuses internal addresses — including the
|
|
@@ -65,6 +65,14 @@ Key behavior:
|
|
|
65
65
|
- Upgrade cleanup removes only verified clean legacy Cursor or Copilot skill views.
|
|
66
66
|
Changed or unverified views are preserved and detached from obsolete manifest
|
|
67
67
|
ownership.
|
|
68
|
+
- Before the dry-run/apply branch, each scope's sync manifest `oatVersion` is
|
|
69
|
+
compared with the invoking CLI version. Any difference (older or newer) logs
|
|
70
|
+
an advisory warning naming the scope and both versions; the run continues and
|
|
71
|
+
the apply path restamps the manifest with the invoking version. JSON output
|
|
72
|
+
suppresses the warning and reports the same data under a top-level
|
|
73
|
+
`versionSkew` array (`{ scope, producingVersion, invokingVersion }`) in both
|
|
74
|
+
`--dry-run` and apply envelopes; a scope without skew is omitted from the
|
|
75
|
+
array.
|
|
68
76
|
|
|
69
77
|
Preview project and user cleanup before applying it:
|
|
70
78
|
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"apply.d.ts","sourceRoot":"","sources":["../../../src/commands/sync/apply.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;
|
|
1
|
+
{"version":3,"file":"apply.d.ts","sourceRoot":"","sources":["../../../src/commands/sync/apply.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAE3D,OAAO,KAAK,EACV,aAAa,EACb,uBAAuB,EAExB,MAAM,cAAc,CAAC;AAyEtB,wBAAsB,YAAY,CAChC,OAAO,EAAE,cAAc,EACvB,UAAU,EAAE,aAAa,EAAE,EAC3B,YAAY,EAAE,uBAAuB,GACpC,OAAO,CAAC,IAAI,CAAC,CAgHf"}
|
|
@@ -1,4 +1,3 @@
|
|
|
1
|
-
import { OAT_VERSION } from '../../shared/oat-version.js';
|
|
2
1
|
import { countPlannedOperations } from './sync.utils.js';
|
|
3
2
|
function countSkippedEntries(scopePlans) {
|
|
4
3
|
return scopePlans.reduce((total, scopePlan) => {
|
|
@@ -52,7 +51,11 @@ export async function runSyncApply(context, scopePlans, dependencies) {
|
|
|
52
51
|
for (const scopePlan of scopePlans) {
|
|
53
52
|
const hasSyncEntries = scopePlan.plan.entries.length > 0 || scopePlan.plan.removals.length > 0;
|
|
54
53
|
const hasExtensionPlannedOperations = scopePlan.materializationExtensionPlans.some((plan) => plan.operations.some((operation) => operation.action !== 'skip'));
|
|
55
|
-
|
|
54
|
+
// Derived from the same diagnostic that produced the pre-mutation advisory
|
|
55
|
+
// (`detectVersionSkew` in ./index), so the restamp and the warning cannot
|
|
56
|
+
// drift apart: this manifest is only ever restamped when sync has already
|
|
57
|
+
// reported the provenance the restamp is about to overwrite.
|
|
58
|
+
const shouldRefreshManifestVersion = scopePlan.versionSkew !== undefined;
|
|
56
59
|
if (!hasSyncEntries &&
|
|
57
60
|
!hasExtensionPlannedOperations &&
|
|
58
61
|
!shouldRefreshManifestVersion) {
|
|
@@ -86,6 +89,9 @@ export async function runSyncApply(context, scopePlans, dependencies) {
|
|
|
86
89
|
const providerMismatches = scopePlans
|
|
87
90
|
.map((scopePlan) => scopePlan.providerMismatches)
|
|
88
91
|
.filter((mismatch) => mismatch !== undefined);
|
|
92
|
+
const versionSkew = scopePlans
|
|
93
|
+
.map((scopePlan) => scopePlan.versionSkew)
|
|
94
|
+
.filter((skew) => skew !== undefined);
|
|
89
95
|
const materializationExtensions = scopePlans.flatMap((scopePlan) => scopePlan.materializationExtensions);
|
|
90
96
|
const codexExtensions = materializationExtensions
|
|
91
97
|
.filter((extension) => extension.provider === 'codex')
|
|
@@ -110,6 +116,7 @@ export async function runSyncApply(context, scopePlans, dependencies) {
|
|
|
110
116
|
plans: scopePlans.map((scopePlan) => scopePlan.plan),
|
|
111
117
|
summary,
|
|
112
118
|
providerMismatches,
|
|
119
|
+
versionSkew,
|
|
113
120
|
materializationExtensions,
|
|
114
121
|
codexExtensions,
|
|
115
122
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"dry-run.d.ts","sourceRoot":"","sources":["../../../src/commands/sync/dry-run.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAE3D,OAAO,KAAK,EACV,aAAa,EACb,uBAAuB,EAExB,MAAM,cAAc,CAAC;AAiEtB,wBAAgB,aAAa,CAC3B,OAAO,EAAE,cAAc,EACvB,UAAU,EAAE,aAAa,EAAE,EAC3B,YAAY,EAAE,uBAAuB,GACpC,IAAI,
|
|
1
|
+
{"version":3,"file":"dry-run.d.ts","sourceRoot":"","sources":["../../../src/commands/sync/dry-run.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAE3D,OAAO,KAAK,EACV,aAAa,EACb,uBAAuB,EAExB,MAAM,cAAc,CAAC;AAiEtB,wBAAgB,aAAa,CAC3B,OAAO,EAAE,cAAc,EACvB,UAAU,EAAE,aAAa,EAAE,EAC3B,YAAY,EAAE,uBAAuB,GACpC,IAAI,CA+CN"}
|
|
@@ -48,6 +48,9 @@ export function runSyncDryRun(context, scopePlans, dependencies) {
|
|
|
48
48
|
const providerMismatches = scopePlans
|
|
49
49
|
.map((scopePlan) => scopePlan.providerMismatches)
|
|
50
50
|
.filter((mismatch) => mismatch !== undefined);
|
|
51
|
+
const versionSkew = scopePlans
|
|
52
|
+
.map((scopePlan) => scopePlan.versionSkew)
|
|
53
|
+
.filter((skew) => skew !== undefined);
|
|
51
54
|
const materializationExtensions = scopePlans.flatMap((scopePlan) => scopePlan.materializationExtensions);
|
|
52
55
|
const codexExtensions = materializationExtensions
|
|
53
56
|
.filter((extension) => extension.provider === 'codex')
|
|
@@ -69,6 +72,7 @@ export function runSyncDryRun(context, scopePlans, dependencies) {
|
|
|
69
72
|
plans: scopePlans.map((scopePlan) => scopePlan.plan),
|
|
70
73
|
summary,
|
|
71
74
|
providerMismatches,
|
|
75
|
+
versionSkew,
|
|
72
76
|
materializationExtensions,
|
|
73
77
|
codexExtensions,
|
|
74
78
|
});
|
|
@@ -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":"AA2CA,OAAO,EAAE,OAAO,EAAU,MAAM,WAAW,CAAC;AAI5C,OAAO,KAAK,EAEV,uBAAuB,EAGxB,MAAM,cAAc,CAAC;AA4XtB,wBAAgB,iBAAiB,CAC/B,SAAS,GAAE,OAAO,CAAC,uBAAuB,CAAM,GAC/C,OAAO,CA6BT"}
|
|
@@ -17,6 +17,7 @@ import { cursorAdapter } from '../../providers/cursor/index.js';
|
|
|
17
17
|
import { cursorMaterializationExtension } from '../../providers/cursor/codec/sync-extension.js';
|
|
18
18
|
import { geminiAdapter } from '../../providers/gemini/index.js';
|
|
19
19
|
import { getConfigAwareAdapters, toMaterializationOperations, } from '../../providers/shared/index.js';
|
|
20
|
+
import { OAT_VERSION } from '../../shared/oat-version.js';
|
|
20
21
|
import { formatSyncPlan } from '../../ui/output.js';
|
|
21
22
|
import { Command, Option } from 'commander';
|
|
22
23
|
import { runSyncApply } from './apply.js';
|
|
@@ -147,6 +148,30 @@ async function maybeResolveProviderMismatches(context, scope, scopeRoot, configP
|
|
|
147
148
|
activeAdapters: resolution.activeAdapters,
|
|
148
149
|
};
|
|
149
150
|
}
|
|
151
|
+
/**
|
|
152
|
+
* Derive the advisory version-skew diagnostic for a loaded scope manifest.
|
|
153
|
+
*
|
|
154
|
+
* This is the single source of truth for "this manifest was produced by a
|
|
155
|
+
* different CLI version": `runSyncApply` keys its manifest restamp off the
|
|
156
|
+
* presence of this diagnostic, so a restamp can never destroy the provenance
|
|
157
|
+
* evidence without the advisory having been emitted first.
|
|
158
|
+
*
|
|
159
|
+
* Comparison is plain string inequality on identity, never semantic-version
|
|
160
|
+
* ordering. An absent manifest therefore never reports skew, because
|
|
161
|
+
* `loadManifest` deliberately creates an empty manifest stamped with the
|
|
162
|
+
* invoking version and the two strings match. `ManifestSchema` rejects an
|
|
163
|
+
* *empty* `oatVersion` before sync ever sees it, but it does admit other
|
|
164
|
+
* degenerate strings such as whitespace-only values; those surface here as
|
|
165
|
+
* ordinary skew rather than being reclassified as corruption.
|
|
166
|
+
*/
|
|
167
|
+
function detectVersionSkew(scope, manifest) {
|
|
168
|
+
const producingVersion = manifest.oatVersion;
|
|
169
|
+
const invokingVersion = OAT_VERSION;
|
|
170
|
+
if (producingVersion === invokingVersion) {
|
|
171
|
+
return undefined;
|
|
172
|
+
}
|
|
173
|
+
return { scope, producingVersion, invokingVersion };
|
|
174
|
+
}
|
|
150
175
|
async function computePlans(context, dependencies, allowedCanonicalPaths) {
|
|
151
176
|
const scopePlans = [];
|
|
152
177
|
for (const scope of resolveConcreteScopes(context.scope)) {
|
|
@@ -201,6 +226,7 @@ async function computePlans(context, dependencies, allowedCanonicalPaths) {
|
|
|
201
226
|
activeAdapterNames,
|
|
202
227
|
plan,
|
|
203
228
|
providerMismatches: resolved.mismatches,
|
|
229
|
+
versionSkew: detectVersionSkew(scope, manifest),
|
|
204
230
|
materializationExtensionPlans,
|
|
205
231
|
materializationExtensions,
|
|
206
232
|
});
|
|
@@ -232,9 +258,22 @@ function logNonInteractiveMismatchGuidance(context, scopePlans) {
|
|
|
232
258
|
}
|
|
233
259
|
}
|
|
234
260
|
}
|
|
261
|
+
function logVersionSkewWarnings(context, scopePlans) {
|
|
262
|
+
if (context.json) {
|
|
263
|
+
return;
|
|
264
|
+
}
|
|
265
|
+
for (const scopePlan of scopePlans) {
|
|
266
|
+
const skew = scopePlan.versionSkew;
|
|
267
|
+
if (!skew) {
|
|
268
|
+
continue;
|
|
269
|
+
}
|
|
270
|
+
context.logger.warn(`Sync manifest version skew [${skew.scope}]: manifest produced by oat "${skew.producingVersion}" but invoked by oat "${skew.invokingVersion}".`);
|
|
271
|
+
}
|
|
272
|
+
}
|
|
235
273
|
async function runSyncCommand(context, dependencies, allowedCanonicalPaths) {
|
|
236
274
|
const scopePlans = await computePlans(context, dependencies, allowedCanonicalPaths);
|
|
237
275
|
logNonInteractiveMismatchGuidance(context, scopePlans);
|
|
276
|
+
logVersionSkewWarnings(context, scopePlans);
|
|
238
277
|
if (context.dryRun) {
|
|
239
278
|
runSyncDryRun(context, scopePlans, dependencies);
|
|
240
279
|
return;
|
|
@@ -9,6 +9,16 @@ export interface SyncProviderMismatches {
|
|
|
9
9
|
detectedUnset: string[];
|
|
10
10
|
detectedDisabled: string[];
|
|
11
11
|
}
|
|
12
|
+
/**
|
|
13
|
+
* Advisory diagnostic emitted when the CLI version that produced a scope's sync
|
|
14
|
+
* manifest differs from the CLI version invoking sync. Comparison is symmetric
|
|
15
|
+
* string inequality: the contract is version identity, not which side is newer.
|
|
16
|
+
*/
|
|
17
|
+
export interface SyncVersionSkew {
|
|
18
|
+
scope: ConcreteScope;
|
|
19
|
+
producingVersion: string;
|
|
20
|
+
invokingVersion: string;
|
|
21
|
+
}
|
|
12
22
|
export interface ScopeSyncPlan {
|
|
13
23
|
scope: ConcreteScope;
|
|
14
24
|
scopeRoot: string;
|
|
@@ -18,6 +28,7 @@ export interface ScopeSyncPlan {
|
|
|
18
28
|
canonical?: CanonicalEntry[];
|
|
19
29
|
activeAdapterNames?: string[];
|
|
20
30
|
providerMismatches?: SyncProviderMismatches;
|
|
31
|
+
versionSkew?: SyncVersionSkew;
|
|
21
32
|
materializationExtensionPlans: MaterializationPlan[];
|
|
22
33
|
materializationExtensions: MaterializationExtensionSummary[];
|
|
23
34
|
}
|
|
@@ -33,6 +44,7 @@ export interface SyncJsonPayload {
|
|
|
33
44
|
plans: SyncPlan[];
|
|
34
45
|
summary: SyncSummary;
|
|
35
46
|
providerMismatches?: SyncProviderMismatches[];
|
|
47
|
+
versionSkew?: SyncVersionSkew[];
|
|
36
48
|
materializationExtensions?: MaterializationExtensionSummary[];
|
|
37
49
|
/** Retained for compatibility with existing Codex JSON consumers. */
|
|
38
50
|
codexExtensions?: CodexExtensionSummary[];
|
|
@@ -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":"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"}
|
package/dist/fs/assets.d.ts
CHANGED
|
@@ -1,3 +1,13 @@
|
|
|
1
1
|
export declare function validateAssetsBundle(assetsRoot: string, expectedVersion?: string): Promise<void>;
|
|
2
|
-
|
|
2
|
+
/**
|
|
3
|
+
* Resolve the directory the CLI reads bundled assets from.
|
|
4
|
+
*
|
|
5
|
+
* A non-empty `OAT_ASSETS_DIR` selects an explicit root; an unset or blank
|
|
6
|
+
* value keeps the packaged `<cliRoot>/assets` default. Both paths run the same
|
|
7
|
+
* directory and bundle-integrity checks, and an explicit root never falls back
|
|
8
|
+
* to the packaged one: a missing, non-directory, malformed, or
|
|
9
|
+
* version-mismatched override fails closed with the same actionable errors.
|
|
10
|
+
* A relative value is resolved against the process working directory.
|
|
11
|
+
*/
|
|
12
|
+
export declare function resolveAssetsRoot(env?: NodeJS.ProcessEnv): Promise<string>;
|
|
3
13
|
//# sourceMappingURL=assets.d.ts.map
|
package/dist/fs/assets.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"assets.d.ts","sourceRoot":"","sources":["../../src/fs/assets.ts"],"names":[],"mappings":"AA2BA,wBAAsB,oBAAoB,CACxC,UAAU,EAAE,MAAM,EAClB,eAAe,SAAc,GAC5B,OAAO,CAAC,IAAI,CAAC,CAoCf;
|
|
1
|
+
{"version":3,"file":"assets.d.ts","sourceRoot":"","sources":["../../src/fs/assets.ts"],"names":[],"mappings":"AA2BA,wBAAsB,oBAAoB,CACxC,UAAU,EAAE,MAAM,EAClB,eAAe,SAAc,GAC5B,OAAO,CAAC,IAAI,CAAC,CAoCf;AAQD;;;;;;;;;GASG;AACH,wBAAsB,iBAAiB,CACrC,GAAG,GAAE,MAAM,CAAC,UAAwB,GACnC,OAAO,CAAC,MAAM,CAAC,CAwBjB"}
|
package/dist/fs/assets.js
CHANGED
|
@@ -36,10 +36,24 @@ export async function validateAssetsBundle(assetsRoot, expectedVersion = OAT_VER
|
|
|
36
36
|
throw new CliError(`Bundled assets version mismatch: CLI ${expectedVersion}, assets ${metadata.oatVersion}. Reinstall @open-agent-toolkit/cli or rebuild the CLI before updating tools.`, 2);
|
|
37
37
|
}
|
|
38
38
|
}
|
|
39
|
-
|
|
39
|
+
function resolvePackagedAssetsRoot() {
|
|
40
40
|
const modulePath = fileURLToPath(import.meta.url);
|
|
41
41
|
const cliRoot = resolve(dirname(modulePath), '..', '..');
|
|
42
|
-
|
|
42
|
+
return join(cliRoot, 'assets');
|
|
43
|
+
}
|
|
44
|
+
/**
|
|
45
|
+
* Resolve the directory the CLI reads bundled assets from.
|
|
46
|
+
*
|
|
47
|
+
* A non-empty `OAT_ASSETS_DIR` selects an explicit root; an unset or blank
|
|
48
|
+
* value keeps the packaged `<cliRoot>/assets` default. Both paths run the same
|
|
49
|
+
* directory and bundle-integrity checks, and an explicit root never falls back
|
|
50
|
+
* to the packaged one: a missing, non-directory, malformed, or
|
|
51
|
+
* version-mismatched override fails closed with the same actionable errors.
|
|
52
|
+
* A relative value is resolved against the process working directory.
|
|
53
|
+
*/
|
|
54
|
+
export async function resolveAssetsRoot(env = process.env) {
|
|
55
|
+
const override = env.OAT_ASSETS_DIR?.trim() ?? '';
|
|
56
|
+
const assetsRoot = override.length > 0 ? resolve(override) : resolvePackagedAssetsRoot();
|
|
43
57
|
try {
|
|
44
58
|
const assetsStat = await stat(assetsRoot);
|
|
45
59
|
if (!assetsStat.isDirectory()) {
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@open-agent-toolkit/cli",
|
|
3
|
-
"version": "0.2.
|
|
3
|
+
"version": "0.2.35",
|
|
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.2.
|
|
37
|
+
"@open-agent-toolkit/control-plane": "0.2.35"
|
|
38
38
|
},
|
|
39
39
|
"devDependencies": {
|
|
40
40
|
"@types/node": "^22.10.0",
|