@open-agent-toolkit/cli 0.1.62 → 0.1.64
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 +9 -1
- package/assets/agents/oat-reviewer.md +8 -1
- package/assets/docs/cli-utilities/configuration.md +29 -0
- package/assets/docs/cli-utilities/tool-packs.md +29 -1
- package/assets/docs/contributing/skills.md +22 -0
- package/assets/docs/workflows/projects/artifacts.md +30 -0
- package/assets/docs/workflows/projects/autonomy.md +154 -0
- package/assets/docs/workflows/projects/cursor-cloud.md +151 -0
- package/assets/docs/workflows/projects/dispatch-ceiling.md +13 -0
- package/assets/docs/workflows/projects/index.md +6 -0
- package/assets/public-package-versions.json +4 -4
- package/assets/skills/oat-cursor-cloud-projects/SKILL.md +318 -0
- package/assets/skills/oat-cursor-cloud-projects/references/cursor-cloud-mechanics.md +173 -0
- package/assets/skills/oat-project-autonomous/SKILL.md +439 -0
- package/assets/skills/oat-project-autonomous/references/gate-inventory.md +294 -0
- package/assets/skills/oat-project-design/SKILL.md +79 -1
- package/assets/skills/oat-project-discover/SKILL.md +76 -1
- package/assets/skills/oat-project-document/SKILL.md +24 -1
- package/assets/skills/oat-project-document/references/docs/autonomy-contract.md +294 -0
- package/assets/skills/oat-project-implement/SKILL.md +18 -1
- package/assets/skills/oat-project-implement/references/completion-and-closeout.md +72 -7
- package/assets/skills/oat-project-implement/references/dispatch-and-dry-run.md +17 -9
- package/assets/skills/oat-project-implement/references/docs/autonomy-contract.md +294 -0
- package/assets/skills/oat-project-implement/references/plan-and-resume.md +56 -0
- package/assets/skills/oat-project-plan-writing/SKILL.md +48 -12
- package/assets/skills/oat-project-pr-final/SKILL.md +31 -4
- package/assets/skills/oat-project-pr-final/references/docs/autonomy-contract.md +294 -0
- package/assets/skills/oat-project-quick-start/SKILL.md +50 -2
- package/assets/skills/oat-project-quick-start/references/docs/autonomy-contract.md +294 -0
- package/assets/skills/oat-project-review-provide/SKILL.md +9 -1
- package/assets/skills/oat-project-review-receive/SKILL.md +9 -1
- package/assets/skills/oat-project-summary/SKILL.md +76 -14
- package/assets/templates/summary.md +24 -0
- package/dist/commands/gate/index.d.ts.map +1 -1
- package/dist/commands/gate/index.js +4 -1
- package/dist/commands/init/tools/index.d.ts.map +1 -1
- package/dist/commands/init/tools/index.js +67 -45
- package/dist/commands/init/tools/shared/skill-manifest.d.ts +1 -1
- package/dist/commands/init/tools/shared/skill-manifest.d.ts.map +1 -1
- package/dist/commands/init/tools/shared/skill-manifest.js +2 -0
- package/dist/commands/init/tools/workflows/index.d.ts +2 -1
- package/dist/commands/init/tools/workflows/index.d.ts.map +1 -1
- package/dist/commands/init/tools/workflows/index.js +13 -11
- package/dist/commands/init/tools/workflows/install-workflows.d.ts +2 -0
- package/dist/commands/init/tools/workflows/install-workflows.d.ts.map +1 -1
- package/dist/commands/init/tools/workflows/install-workflows.js +4 -0
- package/dist/commands/project/new/scaffold.d.ts +1 -0
- package/dist/commands/project/new/scaffold.d.ts.map +1 -1
- package/dist/commands/project/new/scaffold.js +23 -4
- package/dist/commands/tools/remove/index.js +2 -2
- package/dist/commands/tools/remove/remove-tools.d.ts.map +1 -1
- package/dist/commands/tools/remove/remove-tools.js +23 -0
- package/dist/commands/tools/update/index.d.ts.map +1 -1
- package/dist/commands/tools/update/index.js +7 -1
- package/dist/commands/tools/update/update-tools.d.ts +9 -0
- package/dist/commands/tools/update/update-tools.d.ts.map +1 -1
- package/dist/commands/tools/update/update-tools.js +25 -5
- package/dist/providers/identity/family.d.ts +1 -1
- package/dist/providers/identity/family.d.ts.map +1 -1
- package/dist/providers/identity/family.js +2 -0
- package/package.json +2 -2
|
@@ -1,9 +1,11 @@
|
|
|
1
1
|
import { execFileSync } from 'node:child_process';
|
|
2
2
|
import { mkdir, readFile, writeFile } from 'node:fs/promises';
|
|
3
|
+
import { homedir } from 'node:os';
|
|
3
4
|
import { join } from 'node:path';
|
|
4
5
|
import { resolveProjectsRoot } from '../../shared/oat-paths.js';
|
|
5
6
|
import { generateStateDashboard } from '../../state/generate.js';
|
|
6
7
|
import { setActiveProject } from '../../../config/oat-config.js';
|
|
8
|
+
import { resolveAssetsRoot } from '../../../fs/assets.js';
|
|
7
9
|
import { fileExists } from '../../../fs/io.js';
|
|
8
10
|
import { assertValidProjectStateContent } from '../../../validation/project-state.js';
|
|
9
11
|
const TEMPLATES_BY_MODE = {
|
|
@@ -162,12 +164,11 @@ function commitScaffold(cwd, projectPath, projectName, createdFiles) {
|
|
|
162
164
|
return { status: 'failed', committed: false, error: message };
|
|
163
165
|
}
|
|
164
166
|
}
|
|
165
|
-
async function scaffoldModeTemplates(repoRoot, projectPath, projectName, mode, today, nowUtc) {
|
|
166
|
-
const templatesDir = join(repoRoot, '.oat', 'templates');
|
|
167
|
+
async function scaffoldModeTemplates(userOatRoot, repoRoot, projectPath, projectName, mode, today, nowUtc) {
|
|
167
168
|
const createdFiles = [];
|
|
168
169
|
const skippedFiles = [];
|
|
169
170
|
for (const templateFile of TEMPLATES_BY_MODE[mode]) {
|
|
170
|
-
const src =
|
|
171
|
+
const src = await resolveTemplateSource(userOatRoot, repoRoot, templateFile);
|
|
171
172
|
const dest = join(repoRoot, projectPath, templateFile);
|
|
172
173
|
if (await fileExists(dest)) {
|
|
173
174
|
skippedFiles.push(templateFile);
|
|
@@ -183,6 +184,18 @@ async function scaffoldModeTemplates(repoRoot, projectPath, projectName, mode, t
|
|
|
183
184
|
}
|
|
184
185
|
return { createdFiles, skippedFiles };
|
|
185
186
|
}
|
|
187
|
+
async function resolveTemplateSource(userOatRoot, repoRoot, templateFile) {
|
|
188
|
+
const userSource = join(userOatRoot, 'templates', templateFile);
|
|
189
|
+
if (await fileExists(userSource)) {
|
|
190
|
+
return userSource;
|
|
191
|
+
}
|
|
192
|
+
const repoSource = join(repoRoot, '.oat', 'templates', templateFile);
|
|
193
|
+
if (await fileExists(repoSource)) {
|
|
194
|
+
return repoSource;
|
|
195
|
+
}
|
|
196
|
+
const assetsRoot = await resolveAssetsRoot();
|
|
197
|
+
return join(assetsRoot, 'templates', templateFile);
|
|
198
|
+
}
|
|
186
199
|
async function ensureStructure(repoRoot, projectPath, mode) {
|
|
187
200
|
const projectRoot = join(repoRoot, projectPath);
|
|
188
201
|
await mkdir(projectRoot, { recursive: true });
|
|
@@ -202,6 +215,12 @@ export async function scaffoldProject(options) {
|
|
|
202
215
|
const setActive = options.setActive ?? true;
|
|
203
216
|
const refreshDashboard = options.refreshDashboard ?? true;
|
|
204
217
|
const env = options.env ?? process.env;
|
|
218
|
+
const home = options.home ??
|
|
219
|
+
env.HOME ??
|
|
220
|
+
env.USERPROFILE ??
|
|
221
|
+
process.env.HOME ??
|
|
222
|
+
homedir();
|
|
223
|
+
const userOatRoot = join(home, '.oat');
|
|
205
224
|
const now = new Date();
|
|
206
225
|
const today = options.today ?? now.toISOString().slice(0, 10);
|
|
207
226
|
const nowUtc = options.nowUtc ?? now.toISOString();
|
|
@@ -212,7 +231,7 @@ export async function scaffoldProject(options) {
|
|
|
212
231
|
// Scaffold behavior is always non-destructive (create missing files only).
|
|
213
232
|
void options.force;
|
|
214
233
|
await ensureStructure(options.repoRoot, projectPath, mode);
|
|
215
|
-
const { createdFiles, skippedFiles } = await scaffoldModeTemplates(options.repoRoot, projectPath, options.projectName, mode, today, nowUtc);
|
|
234
|
+
const { createdFiles, skippedFiles } = await scaffoldModeTemplates(userOatRoot, options.repoRoot, projectPath, options.projectName, mode, today, nowUtc);
|
|
216
235
|
if (setActive) {
|
|
217
236
|
await setActiveProject(options.repoRoot, projectPath);
|
|
218
237
|
}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { execFile } from 'node:child_process';
|
|
2
|
-
import { rm
|
|
2
|
+
import { rm } from 'node:fs/promises';
|
|
3
3
|
import { buildCommandContext } from '../../../app/command-context.js';
|
|
4
4
|
import { withScopeOption } from '../../shared/scope-option.js';
|
|
5
5
|
import { readGlobalOptions, resolveConcreteScopes, } from '../../shared/shared.utils.js';
|
|
@@ -22,7 +22,7 @@ const defaultDependencies = {
|
|
|
22
22
|
await rm(path, { recursive: true, force: true });
|
|
23
23
|
},
|
|
24
24
|
removeFile: async (path) => {
|
|
25
|
-
await
|
|
25
|
+
await rm(path, { force: true });
|
|
26
26
|
},
|
|
27
27
|
};
|
|
28
28
|
const defaultSyncDependencies = {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"remove-tools.d.ts","sourceRoot":"","sources":["../../../../src/commands/tools/remove/remove-tools.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"remove-tools.d.ts","sourceRoot":"","sources":["../../../../src/commands/tools/remove/remove-tools.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,mCAAmC,CAAC;AAC1E,OAAO,KAAK,EAAE,QAAQ,EAAE,QAAQ,EAAE,MAAM,8BAA8B,CAAC;AACvE,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AAEnD,MAAM,MAAM,YAAY,GACpB;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,GAC9B;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,QAAQ,CAAA;CAAE,GAChC;IAAE,IAAI,EAAE,KAAK,CAAA;CAAE,CAAC;AAEpB,MAAM,WAAW,uBAAuB;IACtC,SAAS,EAAE,CAAC,OAAO,EAAE,gBAAgB,KAAK,OAAO,CAAC,QAAQ,EAAE,CAAC,CAAC;IAC9D,gBAAgB,EAAE,CAChB,KAAK,EAAE,aAAa,EACpB,GAAG,EAAE,MAAM,EACX,IAAI,EAAE,MAAM,KACT,OAAO,CAAC,MAAM,CAAC,CAAC;IACrB,iBAAiB,EAAE,MAAM,OAAO,CAAC,MAAM,CAAC,CAAC;IACzC,eAAe,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IACjD,UAAU,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;CAC7C;AAED,UAAU,WAAW;IACnB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,OAAO,GAAG,OAAO,CAAC;IACxB,KAAK,EAAE,aAAa,CAAC;CACtB;AAED,MAAM,WAAW,YAAY;IAC3B,OAAO,EAAE,WAAW,EAAE,CAAC;IACvB,YAAY,EAAE,MAAM,EAAE,CAAC;CACxB;AAqDD,wBAAsB,WAAW,CAC/B,MAAM,EAAE,YAAY,EACpB,MAAM,EAAE,aAAa,EAAE,EACvB,GAAG,EAAE,MAAM,EACX,IAAI,EAAE,MAAM,EACZ,MAAM,EAAE,OAAO,EACf,IAAI,EAAE,uBAAuB,GAC5B,OAAO,CAAC,YAAY,CAAC,CAgCvB"}
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { join } from 'node:path';
|
|
2
|
+
import { WORKFLOW_AGENTS, WORKFLOW_SCRIPTS, WORKFLOW_TEMPLATES, } from '../../init/tools/shared/skill-manifest.js';
|
|
2
3
|
function matchesTarget(tool, target) {
|
|
3
4
|
switch (target.kind) {
|
|
4
5
|
case 'name':
|
|
@@ -21,6 +22,20 @@ async function removeTool(tool, scopeRoot, dryRun, deps) {
|
|
|
21
22
|
await deps.removeDirectory(skillPath);
|
|
22
23
|
}
|
|
23
24
|
}
|
|
25
|
+
async function removePackCompanionAssets(pack, scope, scopeRoot, dryRun, deps) {
|
|
26
|
+
if (dryRun || pack !== 'workflows' || scope !== 'user') {
|
|
27
|
+
return;
|
|
28
|
+
}
|
|
29
|
+
for (const agent of WORKFLOW_AGENTS) {
|
|
30
|
+
await deps.removeFile(join(scopeRoot, '.agents', 'agents', agent));
|
|
31
|
+
}
|
|
32
|
+
for (const template of WORKFLOW_TEMPLATES) {
|
|
33
|
+
await deps.removeFile(join(scopeRoot, '.oat', 'templates', template));
|
|
34
|
+
}
|
|
35
|
+
for (const script of WORKFLOW_SCRIPTS) {
|
|
36
|
+
await deps.removeFile(join(scopeRoot, '.oat', 'scripts', script));
|
|
37
|
+
}
|
|
38
|
+
}
|
|
24
39
|
export async function removeTools(target, scopes, cwd, home, dryRun, deps) {
|
|
25
40
|
const removed = [];
|
|
26
41
|
const assetsRoot = await deps.resolveAssetsRoot();
|
|
@@ -32,6 +47,14 @@ export async function removeTools(target, scopes, cwd, home, dryRun, deps) {
|
|
|
32
47
|
await removeTool(tool, scopeRoot, dryRun, deps);
|
|
33
48
|
removed.push({ name: tool.name, type: tool.type, scope: tool.scope });
|
|
34
49
|
}
|
|
50
|
+
if (target.kind !== 'name') {
|
|
51
|
+
const matchedPacks = new Set(matched
|
|
52
|
+
.map((tool) => tool.pack)
|
|
53
|
+
.filter((pack) => pack !== 'custom'));
|
|
54
|
+
for (const pack of matchedPacks) {
|
|
55
|
+
await removePackCompanionAssets(pack, scope, scopeRoot, dryRun, deps);
|
|
56
|
+
}
|
|
57
|
+
}
|
|
35
58
|
}
|
|
36
59
|
const notInstalled = [];
|
|
37
60
|
if (target.kind === 'name' && removed.length === 0) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/commands/tools/update/index.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/commands/tools/update/index.ts"],"names":[],"mappings":"AAeA,OAAO,EACL,KAAK,oBAAoB,EAE1B,MAAM,kCAAkC,CAAC;AAE1C,OAAO,KAAK,EAAY,QAAQ,EAAE,MAAM,8BAA8B,CAAC;AAKvE,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAEpC,OAAO,EACL,KAAK,YAAY,EACjB,KAAK,YAAY,EACjB,KAAK,uBAAuB,EAE7B,MAAM,gBAAgB,CAAC;AAgBxB,wBAAgB,uBAAuB,CACrC,UAAU,EAAE,MAAM,EAClB,QAAQ,EAAE,MAAM,EAAE,EAClB,OAAO,EAAE;IAAE,GAAG,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,SAAS,GAAG,MAAM,CAAA;CAAE,GAClD,MAAM,EAAE,CAaV;AAgCD,wBAAgB,wBAAwB,CACtC,YAAY,GAAE,uBAA6C,EAC3D,gBAAgB,GAAE,oBAA8C,GAC/D,OAAO,CAoKT;AAED;;;;GAIG;AACH,wBAAgB,+BAA+B,CAAC,MAAM,EAAE,YAAY,GAAG,OAAO,CAI7E;AAED,wBAAgB,qBAAqB,CACnC,MAAM,EAAE,YAAY,EACpB,MAAM,EAAE,YAAY,GACnB,OAAO,CAOT;AAED,wBAAgB,wBAAwB,CACtC,IAAI,EAAE,QAAQ,EACd,MAAM,EAAE,OAAO,GACd,MAAM,CAMR"}
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { execFile } from 'node:child_process';
|
|
2
|
+
import { chmod } from 'node:fs/promises';
|
|
2
3
|
import { join } from 'node:path';
|
|
3
4
|
import { buildCommandContext } from '../../../app/command-context.js';
|
|
4
5
|
import { applyOatCoreGitignore } from '../../init/gitignore.js';
|
|
@@ -24,6 +25,7 @@ const defaultDependencies = {
|
|
|
24
25
|
copyDirWithStatus,
|
|
25
26
|
copyFileWithStatus,
|
|
26
27
|
fileExists,
|
|
28
|
+
chmod,
|
|
27
29
|
applyOatCoreGitignore,
|
|
28
30
|
};
|
|
29
31
|
export function buildSyncSubprocessArgs(entrypoint, execArgv, options) {
|
|
@@ -166,7 +168,11 @@ export function createToolsUpdateCommand(dependencies = defaultDependencies, syn
|
|
|
166
168
|
for (const tool of result.notBundled) {
|
|
167
169
|
logger.info(`Not bundled (custom): ${tool.name}`);
|
|
168
170
|
}
|
|
169
|
-
|
|
171
|
+
for (const asset of result.assetRefreshes) {
|
|
172
|
+
const action = asset.status === 'planned' ? 'Would refresh' : 'Refreshed';
|
|
173
|
+
logger.info(`${action} ${asset.type}: ${asset.name} (${asset.scope} ${asset.pack} pack)`);
|
|
174
|
+
}
|
|
175
|
+
if (result.updated.length === 0 && result.assetRefreshes.length === 0) {
|
|
170
176
|
logger.info('No tools to update.');
|
|
171
177
|
}
|
|
172
178
|
});
|
|
@@ -12,12 +12,20 @@ export type UpdateTarget = {
|
|
|
12
12
|
} | {
|
|
13
13
|
kind: 'all';
|
|
14
14
|
};
|
|
15
|
+
export interface PackAssetRefresh {
|
|
16
|
+
name: string;
|
|
17
|
+
type: 'template' | 'script';
|
|
18
|
+
pack: PackName;
|
|
19
|
+
scope: ConcreteScope;
|
|
20
|
+
status: 'planned' | 'refreshed';
|
|
21
|
+
}
|
|
15
22
|
export interface UpdateResult {
|
|
16
23
|
updated: ToolInfo[];
|
|
17
24
|
current: ToolInfo[];
|
|
18
25
|
newer: ToolInfo[];
|
|
19
26
|
notInstalled: string[];
|
|
20
27
|
notBundled: ToolInfo[];
|
|
28
|
+
assetRefreshes: PackAssetRefresh[];
|
|
21
29
|
}
|
|
22
30
|
export interface UpdateToolsDependencies {
|
|
23
31
|
scanTools: (options: ScanToolsOptions) => Promise<ToolInfo[]>;
|
|
@@ -26,6 +34,7 @@ export interface UpdateToolsDependencies {
|
|
|
26
34
|
copyDirWithStatus: (source: string, destination: string, force: boolean) => Promise<CopyStatus>;
|
|
27
35
|
copyFileWithStatus: (source: string, destination: string, force: boolean) => Promise<CopyStatus>;
|
|
28
36
|
fileExists: (path: string) => Promise<boolean>;
|
|
37
|
+
chmod: (path: string, mode: number) => Promise<void>;
|
|
29
38
|
applyOatCoreGitignore?: (repoRoot: string) => Promise<ApplyOatCoreResult>;
|
|
30
39
|
}
|
|
31
40
|
export declare function updateTools(target: UpdateTarget, scopes: ConcreteScope[], cwd: string, home: string, dryRun: boolean, dependencies: UpdateToolsDependencies): Promise<UpdateResult>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"update-tools.d.ts","sourceRoot":"","sources":["../../../../src/commands/tools/update/update-tools.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,0BAA0B,CAAC;AACnE,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,0CAA0C,CAAC;AAkB3E,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,mCAAmC,CAAC;AAC1E,OAAO,KAAK,EAAE,QAAQ,EAAE,QAAQ,EAAE,MAAM,8BAA8B,CAAC;AACvE,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AAEnD,MAAM,MAAM,YAAY,GACpB;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,GAC9B;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,QAAQ,CAAA;CAAE,GAChC;IAAE,IAAI,EAAE,KAAK,CAAA;CAAE,CAAC;AAEpB,MAAM,WAAW,YAAY;IAC3B,OAAO,EAAE,QAAQ,EAAE,CAAC;IACpB,OAAO,EAAE,QAAQ,EAAE,CAAC;IACpB,KAAK,EAAE,QAAQ,EAAE,CAAC;IAClB,YAAY,EAAE,MAAM,EAAE,CAAC;IACvB,UAAU,EAAE,QAAQ,EAAE,CAAC;
|
|
1
|
+
{"version":3,"file":"update-tools.d.ts","sourceRoot":"","sources":["../../../../src/commands/tools/update/update-tools.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,0BAA0B,CAAC;AACnE,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,0CAA0C,CAAC;AAkB3E,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,mCAAmC,CAAC;AAC1E,OAAO,KAAK,EAAE,QAAQ,EAAE,QAAQ,EAAE,MAAM,8BAA8B,CAAC;AACvE,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AAEnD,MAAM,MAAM,YAAY,GACpB;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,GAC9B;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,QAAQ,CAAA;CAAE,GAChC;IAAE,IAAI,EAAE,KAAK,CAAA;CAAE,CAAC;AAEpB,MAAM,WAAW,gBAAgB;IAC/B,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,UAAU,GAAG,QAAQ,CAAC;IAC5B,IAAI,EAAE,QAAQ,CAAC;IACf,KAAK,EAAE,aAAa,CAAC;IACrB,MAAM,EAAE,SAAS,GAAG,WAAW,CAAC;CACjC;AAED,MAAM,WAAW,YAAY;IAC3B,OAAO,EAAE,QAAQ,EAAE,CAAC;IACpB,OAAO,EAAE,QAAQ,EAAE,CAAC;IACpB,KAAK,EAAE,QAAQ,EAAE,CAAC;IAClB,YAAY,EAAE,MAAM,EAAE,CAAC;IACvB,UAAU,EAAE,QAAQ,EAAE,CAAC;IACvB,cAAc,EAAE,gBAAgB,EAAE,CAAC;CACpC;AAED,MAAM,WAAW,uBAAuB;IACtC,SAAS,EAAE,CAAC,OAAO,EAAE,gBAAgB,KAAK,OAAO,CAAC,QAAQ,EAAE,CAAC,CAAC;IAC9D,gBAAgB,EAAE,CAChB,KAAK,EAAE,aAAa,EACpB,GAAG,EAAE,MAAM,EACX,IAAI,EAAE,MAAM,KACT,OAAO,CAAC,MAAM,CAAC,CAAC;IACrB,iBAAiB,EAAE,MAAM,OAAO,CAAC,MAAM,CAAC,CAAC;IACzC,iBAAiB,EAAE,CACjB,MAAM,EAAE,MAAM,EACd,WAAW,EAAE,MAAM,EACnB,KAAK,EAAE,OAAO,KACX,OAAO,CAAC,UAAU,CAAC,CAAC;IACzB,kBAAkB,EAAE,CAClB,MAAM,EAAE,MAAM,EACd,WAAW,EAAE,MAAM,EACnB,KAAK,EAAE,OAAO,KACX,OAAO,CAAC,UAAU,CAAC,CAAC;IACzB,UAAU,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,OAAO,CAAC,OAAO,CAAC,CAAC;IAC/C,KAAK,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IACrD,qBAAqB,CAAC,EAAE,CAAC,QAAQ,EAAE,MAAM,KAAK,OAAO,CAAC,kBAAkB,CAAC,CAAC;CAC3E;AAoFD,wBAAsB,WAAW,CAC/B,MAAM,EAAE,YAAY,EACpB,MAAM,EAAE,aAAa,EAAE,EACvB,GAAG,EAAE,MAAM,EACX,IAAI,EAAE,MAAM,EACZ,MAAM,EAAE,OAAO,EACf,YAAY,EAAE,uBAAuB,GACpC,OAAO,CAAC,YAAY,CAAC,CA8HvB"}
|
|
@@ -67,6 +67,7 @@ export async function updateTools(target, scopes, cwd, home, dryRun, dependencie
|
|
|
67
67
|
newer: [],
|
|
68
68
|
notInstalled: [],
|
|
69
69
|
notBundled: [],
|
|
70
|
+
assetRefreshes: [],
|
|
70
71
|
};
|
|
71
72
|
const allTools = [];
|
|
72
73
|
for (const scope of scopes) {
|
|
@@ -126,7 +127,16 @@ export async function updateTools(target, scopes, cwd, home, dryRun, dependencie
|
|
|
126
127
|
for (const template of assets.templates) {
|
|
127
128
|
const source = join(assetsRoot, 'templates', template);
|
|
128
129
|
const destination = join(assetTarget.scopeRoot, '.oat', 'templates', template);
|
|
129
|
-
|
|
130
|
+
if (!dryRun) {
|
|
131
|
+
await dependencies.copyFileWithStatus(source, destination, true);
|
|
132
|
+
}
|
|
133
|
+
result.assetRefreshes.push({
|
|
134
|
+
name: template,
|
|
135
|
+
type: 'template',
|
|
136
|
+
pack: assetTarget.pack,
|
|
137
|
+
scope: assetTarget.scope,
|
|
138
|
+
status: dryRun ? 'planned' : 'refreshed',
|
|
139
|
+
});
|
|
130
140
|
}
|
|
131
141
|
for (const script of assets.scripts) {
|
|
132
142
|
const source = join(assetsRoot, 'scripts', script);
|
|
@@ -134,7 +144,17 @@ export async function updateTools(target, scopes, cwd, home, dryRun, dependencie
|
|
|
134
144
|
continue;
|
|
135
145
|
}
|
|
136
146
|
const destination = join(assetTarget.scopeRoot, '.oat', 'scripts', script);
|
|
137
|
-
|
|
147
|
+
if (!dryRun) {
|
|
148
|
+
await dependencies.copyFileWithStatus(source, destination, true);
|
|
149
|
+
await dependencies.chmod(destination, 0o755);
|
|
150
|
+
}
|
|
151
|
+
result.assetRefreshes.push({
|
|
152
|
+
name: script,
|
|
153
|
+
type: 'script',
|
|
154
|
+
pack: assetTarget.pack,
|
|
155
|
+
scope: assetTarget.scope,
|
|
156
|
+
status: dryRun ? 'planned' : 'refreshed',
|
|
157
|
+
});
|
|
138
158
|
}
|
|
139
159
|
}
|
|
140
160
|
return result;
|
|
@@ -182,7 +202,7 @@ function expandInstalledPackEntries(target, installedEntries) {
|
|
|
182
202
|
return entries;
|
|
183
203
|
}
|
|
184
204
|
function getBundledPackMembers(pack, scope) {
|
|
185
|
-
return BUNDLED_PACK_MEMBERS[pack].filter((member) => scope === 'project' || member.type === 'skill');
|
|
205
|
+
return BUNDLED_PACK_MEMBERS[pack].filter((member) => scope === 'project' || member.type === 'skill' || pack === 'workflows');
|
|
186
206
|
}
|
|
187
207
|
function resolvePackAssetTargets(target, installedEntries) {
|
|
188
208
|
if (target.kind === 'name') {
|
|
@@ -195,7 +215,7 @@ function resolvePackAssetTargets(target, installedEntries) {
|
|
|
195
215
|
entriesByScope.set(entry.tool.scope, scopeEntries);
|
|
196
216
|
}
|
|
197
217
|
const targets = [];
|
|
198
|
-
for (const scopeEntries of entriesByScope
|
|
218
|
+
for (const [scope, scopeEntries] of entriesByScope) {
|
|
199
219
|
const scopeRoot = scopeEntries[0]?.scopeRoot;
|
|
200
220
|
if (!scopeRoot)
|
|
201
221
|
continue;
|
|
@@ -212,7 +232,7 @@ function resolvePackAssetTargets(target, installedEntries) {
|
|
|
212
232
|
if (assets.templates.length === 0 && assets.scripts.length === 0) {
|
|
213
233
|
continue;
|
|
214
234
|
}
|
|
215
|
-
targets.push({ pack, scopeRoot });
|
|
235
|
+
targets.push({ pack, scope, scopeRoot });
|
|
216
236
|
}
|
|
217
237
|
}
|
|
218
238
|
return targets;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"family.d.ts","sourceRoot":"","sources":["../../../src/providers/identity/family.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,WAAW,
|
|
1
|
+
{"version":3,"file":"family.d.ts","sourceRoot":"","sources":["../../../src/providers/identity/family.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,WAAW,GACnB,QAAQ,GACR,QAAQ,GACR,KAAK,GACL,UAAU,GACV,KAAK,GACL,SAAS,CAAC;AAEd,UAAU,wBAAwB;IAChC,KAAK,EAAE,MAAM,CAAC;IACd;;;;OAIG;IACH,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAkCD,wBAAgB,mBAAmB,CACjC,KAAK,EAAE,wBAAwB,GAC9B,WAAW,CASb"}
|
|
@@ -1,12 +1,14 @@
|
|
|
1
1
|
const PROVIDER_ID_FAMILIES = [
|
|
2
2
|
[/^(anthropic|claude)$/i, 'claude'],
|
|
3
3
|
[/^(openai|codex)$/i, 'openai'],
|
|
4
|
+
[/^(xai|x-ai|grok)$/i, 'xai'],
|
|
4
5
|
[/^composer$/i, 'composer'],
|
|
5
6
|
[/^(glm|zai|zhipu)$/i, 'glm'],
|
|
6
7
|
];
|
|
7
8
|
const VALUE_FAMILIES = [
|
|
8
9
|
[/\b(claude|sonnet|opus|haiku|fable)\b/i, 'claude'],
|
|
9
10
|
[/\b(gpt|openai|codex|o[1-9])[-\w.]*\b/i, 'openai'],
|
|
11
|
+
[/\b(grok|xai|x-ai)\b/i, 'xai'],
|
|
10
12
|
[/\bcomposer\b/i, 'composer'],
|
|
11
13
|
[/\bglm\b/i, 'glm'],
|
|
12
14
|
];
|
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.64",
|
|
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.64"
|
|
38
38
|
},
|
|
39
39
|
"devDependencies": {
|
|
40
40
|
"@types/node": "^22.10.0",
|