agentic-workflow-manager 9.7.0 → 9.8.0
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/README.md +5 -1
- package/dist/src/commands/doctor.js +4 -2
- package/dist/src/commands/export.js +3 -0
- package/dist/src/commands/init.js +10 -2
- package/dist/src/commands/job/exec-wrapper.js +53 -3
- package/dist/src/commands/plan/index.js +124 -6
- package/dist/src/commands/registry/add.js +2 -2
- package/dist/src/commands/registry/index.js +7 -5
- package/dist/src/commands/registry/install-bundles.js +4 -4
- package/dist/src/commands/registry/status.js +4 -4
- package/dist/src/commands/sensors/bootstrap.js +36 -5
- package/dist/src/commands/sensors/compatibility/contract.js +19 -4
- package/dist/src/commands/sensors/compatibility/discovery.js +23 -3
- package/dist/src/commands/sensors/compatibility/live.js +18 -1
- package/dist/src/commands/sensors/compatibility/probe.js +8 -2
- package/dist/src/commands/sensors/compatibility/resolve.js +5 -2
- package/dist/src/commands/sensors/coverage/evidence.js +19 -10
- package/dist/src/commands/sensors/coverage/index.js +11 -2
- package/dist/src/commands/sensors/coverage/resolve.js +10 -0
- package/dist/src/commands/sensors/exec.js +16 -1
- package/dist/src/commands/sensors/migrate.js +62 -2
- package/dist/src/commands/sensors/prepare.js +2 -0
- package/dist/src/commands/sensors/result.js +2 -0
- package/dist/src/commands/sensors/run.js +64 -1
- package/dist/src/commands/sensors/status.js +6 -4
- package/dist/src/commands/sync.js +2 -1
- package/dist/src/commands/update.js +3 -1
- package/dist/src/commands/watch/archive-unused.js +138 -0
- package/dist/src/commands/watch/generations.js +32 -9
- package/dist/src/commands/watch/index.js +108 -2
- package/dist/src/commands/watch/init.js +149 -18
- package/dist/src/commands/watch/supervisor.js +167 -13
- package/dist/src/commands/watch/teardown-driver.js +13 -13
- package/dist/src/commands/watch/track-state.js +59 -0
- package/dist/src/commands/watch/tracks.js +38 -102
- package/dist/src/core/admission/index.js +181 -0
- package/dist/src/core/admission/registry-contracts.js +290 -0
- package/dist/src/core/bundle-install.js +2 -2
- package/dist/src/core/bundles.js +92 -19
- package/dist/src/core/diagnostics/context.js +1 -1
- package/dist/src/core/export/index.js +1 -1
- package/dist/src/core/export/resolve.js +2 -2
- package/dist/src/core/journal/fingerprint.js +35 -1
- package/dist/src/core/journal/paths.js +11 -0
- package/dist/src/core/journal/store.js +146 -4
- package/dist/src/core/journal/types.js +35 -1
- package/dist/src/core/migration/historical-provenance.js +18 -0
- package/dist/src/core/migration/index.js +322 -0
- package/dist/src/core/plan/identity.js +75 -0
- package/dist/src/core/plan/validate.js +178 -64
- package/dist/src/core/reconciliation.js +1 -1
- package/dist/src/index.js +46 -39
- package/dist/src/utils/grouping.js +1 -1
- package/dist/src/utils/registry-view.js +1 -1
- package/dist/tests/commands/bundle-diagnostics.test.js +145 -0
- package/dist/tests/commands/export.test.js +28 -2
- package/dist/tests/commands/job/exec-wrapper.test.js +16 -0
- package/dist/tests/commands/job/gate-reconcile.test.js +24 -10
- package/dist/tests/commands/multi-agent-targeting.test.js +1 -1
- package/dist/tests/commands/pin.test.js +23 -23
- package/dist/tests/commands/plan/index.test.js +630 -14
- package/dist/tests/commands/sensors/bootstrap.test.js +57 -4
- package/dist/tests/commands/sensors/compatibility/contract.test.js +21 -0
- package/dist/tests/commands/sensors/compatibility/discovery.test.js +19 -0
- package/dist/tests/commands/sensors/compatibility/probe.test.js +14 -1
- package/dist/tests/commands/sensors/compatibility/resolve.test.js +17 -0
- package/dist/tests/commands/sensors/coverage/evidence.test.js +51 -27
- package/dist/tests/commands/sensors/coverage/resolve.test.js +51 -0
- package/dist/tests/commands/sensors/exec.test.js +112 -0
- package/dist/tests/commands/sensors/run-changed.test.js +11 -0
- package/dist/tests/commands/sensors/run.test.js +15 -2
- package/dist/tests/commands/sensors/status.test.js +3 -3
- package/dist/tests/commands/watch/e2e-crash.test.js +126 -11
- package/dist/tests/commands/watch/generations.test.js +113 -4
- package/dist/tests/commands/watch/plan-lifecycle.test.js +263 -0
- package/dist/tests/commands/watch/supervisor-loop.test.js +247 -49
- package/dist/tests/commands/watch/track-finalize.test.js +20 -3
- package/dist/tests/commands/watch/track-freeze.test.js +43 -30
- package/dist/tests/commands/watch/track-state-dependency.test.js +15 -0
- package/dist/tests/commands/watch/watch-init.test.js +244 -0
- package/dist/tests/core/admission/index.test.js +87 -0
- package/dist/tests/core/bundle-install.test.js +36 -0
- package/dist/tests/core/bundles-multiroot.test.js +24 -2
- package/dist/tests/core/bundles-overrides.test.js +10 -7
- package/dist/tests/core/bundles.test.js +75 -6
- package/dist/tests/core/diagnostics/context.test.js +2 -2
- package/dist/tests/core/export/engine.test.js +1 -1
- package/dist/tests/core/export/resolve.test.js +1 -1
- package/dist/tests/core/init/mutation-targets.test.js +1 -1
- package/dist/tests/core/init/orchestrator.test.js +1 -1
- package/dist/tests/core/init/steps.test.js +1 -1
- package/dist/tests/core/journal/fingerprint.test.js +22 -0
- package/dist/tests/core/journal/store.test.js +53 -0
- package/dist/tests/core/journal/types.test.js +7 -0
- package/dist/tests/core/migration/facts.test.js +289 -0
- package/dist/tests/core/migration/historical-provenance.test.js +25 -0
- package/dist/tests/core/plan/validate.test.js +320 -6
- package/dist/tests/core/reconciliation.test.js +1 -1
- package/dist/tests/core/sync-profile-atomicity.test.js +1 -1
- package/dist/tests/integration/pack-e2e.test.js +4 -1
- package/dist/tests/integration/preflight-json-pipe.e2e.test.js +7 -3
- package/dist/tests/integration/sensor-bootstrap.e2e.test.js +37 -0
- package/dist/tests/integration/sensor-structured-run.e2e.test.js +12 -10
- package/dist/tests/providers/injection-config.test.js +14 -6
- package/dist/tests/structural/bundle-skill-reference-contract.test.js +56 -0
- package/dist/tests/structural/jest-environment-is-isolated.test.js +29 -24
- package/dist/tests/structural/native-release-artifacts.test.js +16 -0
- package/dist/tests/utils/grouping.test.js +2 -2
- package/dist/tests/utils/registry-view.test.js +7 -7
- package/package.json +2 -2
- package/prebuilds/darwin-arm64/secure_fs.node +0 -0
- package/prebuilds/darwin-x64/secure_fs.node +0 -0
- package/prebuilds/win32-arm64/secure_fs.node +0 -0
- package/prebuilds/win32-x64/secure_fs.node +0 -0
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
const fs_1 = __importDefault(require("fs"));
|
|
7
|
+
const path_1 = __importDefault(require("path"));
|
|
8
|
+
const ROOT = path_1.default.resolve(__dirname, '../../..');
|
|
9
|
+
const BUNDLES_SOURCE = path_1.default.join(ROOT, 'cli/src/core/bundles.ts');
|
|
10
|
+
const GUIDE = path_1.default.join(ROOT, 'docs/guides/authoring-a-registry-with-an-orchestrator.md');
|
|
11
|
+
const read = (file) => fs_1.default.readFileSync(file, 'utf8');
|
|
12
|
+
function sourceFiles(dir) {
|
|
13
|
+
return fs_1.default.readdirSync(dir, { withFileTypes: true }).flatMap((entry) => {
|
|
14
|
+
const file = path_1.default.join(dir, entry.name);
|
|
15
|
+
if (entry.isDirectory())
|
|
16
|
+
return sourceFiles(file);
|
|
17
|
+
return entry.isFile() && file.endsWith('.ts') ? [file] : [];
|
|
18
|
+
});
|
|
19
|
+
}
|
|
20
|
+
function jsonFences(markdown) {
|
|
21
|
+
return Array.from(markdown.matchAll(/```json\n([\s\S]*?)\n```/g), ([, json]) => json);
|
|
22
|
+
}
|
|
23
|
+
describe('bundle skill-reference contract', () => {
|
|
24
|
+
it('keeps active bundle consumers string-only, without BundleSkillRef', () => {
|
|
25
|
+
const source = read(BUNDLES_SOURCE);
|
|
26
|
+
const bundleSkillRefs = sourceFiles(path_1.default.join(ROOT, 'cli/src'))
|
|
27
|
+
.filter((file) => /\bBundleSkillRef\b/.test(read(file)));
|
|
28
|
+
expect(bundleSkillRefs).toEqual([]);
|
|
29
|
+
expect(source).toMatch(/interface BundleDefinition\s*\{[\s\S]*?\bskills:\s*string\[\];/);
|
|
30
|
+
});
|
|
31
|
+
it('uses canonical string skill references in the active authoring guide', () => {
|
|
32
|
+
const guide = read(GUIDE);
|
|
33
|
+
const bundleExample = jsonFences(guide).find((json) => JSON.parse(json).name === 'mi-proceso');
|
|
34
|
+
expect(bundleExample).toBeDefined();
|
|
35
|
+
const skills = JSON.parse(bundleExample).skills;
|
|
36
|
+
expect(skills).toEqual(['mi-proceso']);
|
|
37
|
+
expect(skills.every((skill) => typeof skill === 'string')).toBe(true);
|
|
38
|
+
});
|
|
39
|
+
it('places the CLI 9 migration boundary immediately after the bundle example', () => {
|
|
40
|
+
const guide = read(GUIDE);
|
|
41
|
+
const bundleFence = '```json\n{\n "name": "mi-proceso"';
|
|
42
|
+
const start = guide.indexOf(bundleFence);
|
|
43
|
+
const end = guide.indexOf('```', start) + 3;
|
|
44
|
+
const following = guide.slice(end, guide.indexOf('## 5.', end));
|
|
45
|
+
expect(start).toBeGreaterThanOrEqual(0);
|
|
46
|
+
expect(following).toMatch(/CLI 9[\s\S]*(?:legacy object|objeto legacy)[\s\S]*\{\s*name\s*,\s*onSignal:\s*true\s*\}/i);
|
|
47
|
+
expect(following).toMatch(/ignor(?:e|a)[\s\S]*boolean[\s\S]*onSignal/i);
|
|
48
|
+
expect(following).toMatch(/warning/i);
|
|
49
|
+
expect(following).toMatch(/CLI 10[\s\S]*(?:rejects?|rechaza)[\s\S]*(?:objects?|objetos?)/i);
|
|
50
|
+
});
|
|
51
|
+
it('keeps every JSON fence in the touched guide parseable', () => {
|
|
52
|
+
for (const json of jsonFences(read(GUIDE))) {
|
|
53
|
+
expect(() => JSON.parse(json)).not.toThrow();
|
|
54
|
+
}
|
|
55
|
+
});
|
|
56
|
+
});
|
|
@@ -6,44 +6,49 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
6
6
|
const os_1 = __importDefault(require("os"));
|
|
7
7
|
const fs_1 = __importDefault(require("fs"));
|
|
8
8
|
const path_1 = __importDefault(require("path"));
|
|
9
|
+
function isWithin(parent, candidate, pathApi = path_1.default) {
|
|
10
|
+
const relative = pathApi.relative(parent, candidate);
|
|
11
|
+
return relative === '' || (relative !== '..' && !relative.startsWith(`..${pathApi.sep}`) && !pathApi.isAbsolute(relative));
|
|
12
|
+
}
|
|
9
13
|
describe('Jest environment isolation', () => {
|
|
14
|
+
it('treats a path on another volume as outside the operator home', () => {
|
|
15
|
+
expect(isWithin('C:\\operator-home', 'D:\\suite-root', path_1.default.win32)).toBe(false);
|
|
16
|
+
});
|
|
10
17
|
it('does not inherit the operator Codex home', () => {
|
|
11
18
|
expect(process.env.CODEX_HOME).toBeUndefined();
|
|
12
19
|
});
|
|
13
20
|
it('uses a suite-owned temporary directory', () => {
|
|
14
21
|
expect(os_1.default.tmpdir()).toContain('awm-jest-');
|
|
15
22
|
});
|
|
16
|
-
it('
|
|
23
|
+
it('routes every unscoped AWM write into the suite-owned temporary directory', () => {
|
|
24
|
+
expect(process.env.AWM_HOME).toBe(path_1.default.join(process.env.AWM_JEST_TMPDIR, 'awm-home'));
|
|
25
|
+
});
|
|
26
|
+
it('keeps the suite root and both homes outside the operator home', () => {
|
|
27
|
+
const suiteRoot = process.env.AWM_JEST_TMPDIR;
|
|
28
|
+
const operatorHome = fs_1.default.realpathSync(os_1.default.userInfo().homedir);
|
|
29
|
+
expect(isWithin(operatorHome, suiteRoot)).toBe(false);
|
|
30
|
+
expect(process.env.HOME).toBe(path_1.default.join(suiteRoot, 'home'));
|
|
31
|
+
expect(process.env.AWM_HOME).toBe(path_1.default.join(suiteRoot, 'awm-home'));
|
|
32
|
+
});
|
|
33
|
+
it('creates its physical root below the system temp directory, not the operator home', async () => {
|
|
17
34
|
const originalEnv = { ...process.env };
|
|
18
|
-
const
|
|
35
|
+
const systemTemp = fs_1.default.mkdtempSync(path_1.default.join(os_1.default.tmpdir(), 'awm-jest-system-'));
|
|
36
|
+
const operatorHome = path_1.default.join(systemTemp, 'operator-home');
|
|
19
37
|
try {
|
|
38
|
+
fs_1.default.mkdirSync(operatorHome);
|
|
20
39
|
jest.resetModules();
|
|
21
40
|
jest.doMock('os', () => ({
|
|
22
41
|
...jest.requireActual('os'),
|
|
23
|
-
homedir: () =>
|
|
24
|
-
tmpdir: () =>
|
|
25
|
-
}));
|
|
26
|
-
const actualFs = jest.requireActual('fs');
|
|
27
|
-
jest.doMock('fs', () => ({
|
|
28
|
-
...actualFs,
|
|
29
|
-
mkdirSync: jest.fn((target, ...args) => {
|
|
30
|
-
if (String(target).includes('readonly-home')) {
|
|
31
|
-
return undefined;
|
|
32
|
-
}
|
|
33
|
-
return actualFs.mkdirSync(target, ...args);
|
|
34
|
-
}),
|
|
35
|
-
mkdtempSync: jest.fn((prefix, ...args) => {
|
|
36
|
-
if (prefix.includes('readonly-home')) {
|
|
37
|
-
const error = new Error('read-only');
|
|
38
|
-
error.code = 'EROFS';
|
|
39
|
-
throw error;
|
|
40
|
-
}
|
|
41
|
-
return actualFs.mkdtempSync(prefix, ...args);
|
|
42
|
-
}),
|
|
42
|
+
homedir: () => operatorHome,
|
|
43
|
+
tmpdir: () => systemTemp,
|
|
43
44
|
}));
|
|
44
45
|
const setup = require('../../jest.global-setup.js');
|
|
45
46
|
await expect(setup()).resolves.toBeUndefined();
|
|
46
|
-
|
|
47
|
+
const suiteRoot = process.env.AWM_JEST_TMPDIR;
|
|
48
|
+
expect(suiteRoot.startsWith(path_1.default.join(fs_1.default.realpathSync(systemTemp), 'awm-jest-'))).toBe(true);
|
|
49
|
+
expect(isWithin(operatorHome, suiteRoot)).toBe(false);
|
|
50
|
+
expect(process.env.HOME).toBe(path_1.default.join(suiteRoot, 'home'));
|
|
51
|
+
expect(process.env.AWM_HOME).toBe(path_1.default.join(suiteRoot, 'awm-home'));
|
|
47
52
|
}
|
|
48
53
|
finally {
|
|
49
54
|
jest.dontMock('fs');
|
|
@@ -52,7 +57,7 @@ describe('Jest environment isolation', () => {
|
|
|
52
57
|
for (const key of Object.keys(process.env))
|
|
53
58
|
delete process.env[key];
|
|
54
59
|
Object.assign(process.env, originalEnv);
|
|
55
|
-
fs_1.default.rmSync(
|
|
60
|
+
fs_1.default.rmSync(systemTemp, { recursive: true, force: true });
|
|
56
61
|
}
|
|
57
62
|
});
|
|
58
63
|
});
|
|
@@ -9,6 +9,22 @@ const path_1 = __importDefault(require("path"));
|
|
|
9
9
|
const CLI_ROOT = path_1.default.resolve(__dirname, '..', '..');
|
|
10
10
|
const REPO_ROOT = path_1.default.resolve(CLI_ROOT, '..');
|
|
11
11
|
describe('native release artifacts', () => {
|
|
12
|
+
it('checks Windows admission before full suites and stops a failed suite without weakening publication', () => {
|
|
13
|
+
for (const name of ['ci.yml', 'release.yml']) {
|
|
14
|
+
const workflow = fs_1.default.readFileSync(path_1.default.join(REPO_ROOT, '.github', 'workflows', name), 'utf8');
|
|
15
|
+
expect(workflow).toContain('- name: Windows admission smoke');
|
|
16
|
+
expect(workflow).toContain("if: runner.os == 'Windows'");
|
|
17
|
+
expect(workflow).toContain('run: npx jest tests/commands/plan/index.test.ts --runInBand --bail');
|
|
18
|
+
expect(workflow).toContain('run: npx jest --runInBand --bail');
|
|
19
|
+
expect(workflow.indexOf('- name: Windows admission smoke')).toBeLessThan(workflow.indexOf('run: npx jest --runInBand --bail'));
|
|
20
|
+
}
|
|
21
|
+
const release = fs_1.default.readFileSync(path_1.default.join(REPO_ROOT, '.github', 'workflows', 'release.yml'), 'utf8');
|
|
22
|
+
expect(release).toMatch(/release:\s*\n\s*needs: test/);
|
|
23
|
+
for (const target of ['linux-x64', 'linux-arm64', 'darwin-x64', 'darwin-arm64', 'win32-x64', 'win32-arm64']) {
|
|
24
|
+
expect(release).toContain(`target: ${target}`);
|
|
25
|
+
}
|
|
26
|
+
expect(release).toContain('cancel-in-progress: false');
|
|
27
|
+
});
|
|
12
28
|
it('keeps native prebuilds generated instead of versioned source', () => {
|
|
13
29
|
const gitignore = fs_1.default.readFileSync(path_1.default.join(REPO_ROOT, '.gitignore'), 'utf8');
|
|
14
30
|
const tracked = (0, child_process_1.execFileSync)('git', ['ls-files', '--', 'cli/prebuilds'], {
|
|
@@ -7,10 +7,10 @@ const bundle = (over) => ({
|
|
|
7
7
|
});
|
|
8
8
|
const processes = [
|
|
9
9
|
bundle({ name: 'core-dev', description: 'Core development skills',
|
|
10
|
-
skills: [
|
|
10
|
+
skills: ['brainstorming', 'shared-skill'],
|
|
11
11
|
workflows: [], agents: [] }),
|
|
12
12
|
bundle({ name: 'docs', description: 'Documentation skills',
|
|
13
|
-
skills: [
|
|
13
|
+
skills: ['docs-assistant', 'shared-skill'],
|
|
14
14
|
workflows: [], agents: [] }),
|
|
15
15
|
];
|
|
16
16
|
const formatLabel = (c) => c.baseName;
|
|
@@ -10,10 +10,10 @@ const bundle = (over) => ({
|
|
|
10
10
|
});
|
|
11
11
|
const processes = [
|
|
12
12
|
bundle({ name: 'core-dev', description: 'Dev lifecycle', scope: 'baseline',
|
|
13
|
-
skills: [
|
|
13
|
+
skills: ['brainstorming', 'shared'],
|
|
14
14
|
workflows: ['exec'], agents: ['plan'] }),
|
|
15
15
|
bundle({ name: 'docs', description: 'Docs as code',
|
|
16
|
-
skills: [
|
|
16
|
+
skills: ['shared'] }),
|
|
17
17
|
];
|
|
18
18
|
describe('buildPackageView', () => {
|
|
19
19
|
it('groups artifacts under their package with correct counts and install names', () => {
|
|
@@ -108,7 +108,7 @@ describe('visibility', () => {
|
|
|
108
108
|
it('marks a private bundle on its PackageView', () => {
|
|
109
109
|
const priv = [
|
|
110
110
|
bundle({ name: 'secret', description: 'private', visibility: 'private',
|
|
111
|
-
skills: [
|
|
111
|
+
skills: ['a'] }),
|
|
112
112
|
];
|
|
113
113
|
const view = (0, registry_view_1.buildPackageView)([skill('a')], [], [], priv);
|
|
114
114
|
expect(view.find((p) => p.name === 'secret').visibility).toBe('private');
|
|
@@ -121,7 +121,7 @@ describe('visibility', () => {
|
|
|
121
121
|
describe('packageSummaryLines width-awareness', () => {
|
|
122
122
|
it('truncates the description column when a width is given', () => {
|
|
123
123
|
const view = (0, registry_view_1.buildPackageView)([skill('brainstorming', 'x'.repeat(200))], [], [], [
|
|
124
|
-
bundle({ name: 'core-dev', description: 'x'.repeat(200), skills: [
|
|
124
|
+
bundle({ name: 'core-dev', description: 'x'.repeat(200), skills: ['brainstorming'] }),
|
|
125
125
|
]);
|
|
126
126
|
const lines = (0, registry_view_1.packageSummaryLines)(view, 60);
|
|
127
127
|
for (const l of lines)
|
|
@@ -130,7 +130,7 @@ describe('packageSummaryLines width-awareness', () => {
|
|
|
130
130
|
});
|
|
131
131
|
it('does not truncate when no width is given (piped output)', () => {
|
|
132
132
|
const view = (0, registry_view_1.buildPackageView)([skill('brainstorming', 'y'.repeat(200))], [], [], [
|
|
133
|
-
bundle({ name: 'core-dev', description: 'z'.repeat(200), skills: [
|
|
133
|
+
bundle({ name: 'core-dev', description: 'z'.repeat(200), skills: ['brainstorming'] }),
|
|
134
134
|
]);
|
|
135
135
|
const lines = (0, registry_view_1.packageSummaryLines)(view); // no width
|
|
136
136
|
expect(lines.some((l) => l.includes('z'.repeat(200)))).toBe(true);
|
|
@@ -139,7 +139,7 @@ describe('packageSummaryLines width-awareness', () => {
|
|
|
139
139
|
describe('artifactPickerItems', () => {
|
|
140
140
|
it('prepends an "install entire package" sentinel item, then one per artifact', () => {
|
|
141
141
|
const view = (0, registry_view_1.buildPackageView)([skill('a', 'desc a'), skill('b', 'desc b')], [], [], [
|
|
142
|
-
bundle({ name: 'p', description: 'pkg', skills: [
|
|
142
|
+
bundle({ name: 'p', description: 'pkg', skills: ['a', 'b'] }),
|
|
143
143
|
]);
|
|
144
144
|
const items = (0, registry_view_1.artifactPickerItems)(view.find((p) => p.name === 'p'));
|
|
145
145
|
expect(items[0].value).toBe(registry_view_1.ALL_SENTINEL);
|
|
@@ -150,7 +150,7 @@ describe('artifactPickerItems', () => {
|
|
|
150
150
|
describe('packagePickerItems', () => {
|
|
151
151
|
it('builds one item per package with a count+description summary', () => {
|
|
152
152
|
const view = (0, registry_view_1.buildPackageView)([skill('a')], [], [], [
|
|
153
|
-
bundle({ name: 'p', description: 'pkg desc', skills: [
|
|
153
|
+
bundle({ name: 'p', description: 'pkg desc', skills: ['a'] }),
|
|
154
154
|
]);
|
|
155
155
|
const items = (0, registry_view_1.packagePickerItems)(view);
|
|
156
156
|
expect(items[0].value).toBe('p');
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "agentic-workflow-manager",
|
|
3
|
-
"version": "9.
|
|
3
|
+
"version": "9.8.0",
|
|
4
4
|
"main": "dist/src/index.js",
|
|
5
5
|
"bin": {
|
|
6
6
|
"awm": "./dist/src/index.js"
|
|
@@ -47,7 +47,7 @@
|
|
|
47
47
|
},
|
|
48
48
|
"description": "CLI to manage Agentic Workflows - install skills, workflows, and processes for AI agents",
|
|
49
49
|
"dependencies": {
|
|
50
|
-
"@clack/prompts": "^
|
|
50
|
+
"@clack/prompts": "^0.11.0",
|
|
51
51
|
"commander": "^14.0.3",
|
|
52
52
|
"picocolors": "^1.1.1",
|
|
53
53
|
"semver": "^7.7.4",
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|