@agentworkforce/cli 0.1.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.
@@ -0,0 +1,242 @@
1
+ import test from 'node:test';
2
+ import assert from 'node:assert/strict';
3
+ import { mkdtempSync, mkdirSync, rmSync, writeFileSync } from 'node:fs';
4
+ import { tmpdir } from 'node:os';
5
+ import { join } from 'node:path';
6
+ import { loadLocalPersonas } from './local-personas.js';
7
+ function withLayers(fn) {
8
+ const root = mkdtempSync(join(tmpdir(), 'agentworkforce-cascade-'));
9
+ const cwd = join(root, 'project');
10
+ const home = join(root, 'home');
11
+ const pwdDir = join(cwd, '.agent-workforce');
12
+ const homeDir = join(home, '.agent-workforce');
13
+ mkdirSync(pwdDir, { recursive: true });
14
+ mkdirSync(homeDir, { recursive: true });
15
+ try {
16
+ return fn({ cwd, home, pwdDir, homeDir });
17
+ }
18
+ finally {
19
+ rmSync(root, { recursive: true, force: true });
20
+ }
21
+ }
22
+ function writeJson(path, value) {
23
+ writeFileSync(path, JSON.stringify(value));
24
+ }
25
+ test('home layer extends library and merges env', () => {
26
+ withLayers(({ cwd, homeDir }) => {
27
+ writeJson(join(homeDir, 'my-posthog.json'), {
28
+ id: 'my-posthog',
29
+ extends: 'posthog',
30
+ env: { POSTHOG_API_KEY: '$POSTHOG_API_KEY', EXTRA: 'literal' }
31
+ });
32
+ const loaded = loadLocalPersonas({ cwd, homeDir });
33
+ assert.deepEqual(loaded.warnings, []);
34
+ const spec = loaded.byId.get('my-posthog');
35
+ assert.ok(spec);
36
+ assert.equal(loaded.sources.get('my-posthog'), 'home');
37
+ assert.equal(spec.intent, 'posthog');
38
+ assert.equal(spec.env?.POSTHOG_API_KEY, '$POSTHOG_API_KEY');
39
+ assert.equal(spec.env?.EXTRA, 'literal');
40
+ assert.ok(spec.mcpServers?.posthog);
41
+ });
42
+ });
43
+ test('pwd layer overrides home layer for the same id', () => {
44
+ withLayers(({ cwd, homeDir, pwdDir }) => {
45
+ writeJson(join(homeDir, 'ph.json'), {
46
+ id: 'ph',
47
+ extends: 'posthog',
48
+ env: { POSTHOG_API_KEY: 'home-value', FROM_HOME: 'yes' }
49
+ });
50
+ writeJson(join(pwdDir, 'ph.json'), {
51
+ id: 'ph',
52
+ extends: 'posthog',
53
+ env: { POSTHOG_API_KEY: 'pwd-value' }
54
+ });
55
+ const loaded = loadLocalPersonas({ cwd, homeDir });
56
+ assert.deepEqual(loaded.warnings, []);
57
+ const spec = loaded.byId.get('ph');
58
+ assert.equal(loaded.sources.get('ph'), 'pwd');
59
+ // pwd's env wins; note home is NOT layered here (pwd overrides home as a whole,
60
+ // not merges). Base is library/posthog directly via pwd's own `extends`.
61
+ assert.equal(spec?.env?.POSTHOG_API_KEY, 'pwd-value');
62
+ assert.equal(spec?.env?.FROM_HOME, undefined);
63
+ });
64
+ });
65
+ test('implicit same-id extends: pwd file with id=posthog inherits from library posthog', () => {
66
+ withLayers(({ cwd, homeDir, pwdDir }) => {
67
+ writeJson(join(pwdDir, 'posthog.json'), {
68
+ id: 'posthog',
69
+ env: { POSTHOG_API_KEY: '$POSTHOG_API_KEY' }
70
+ });
71
+ const loaded = loadLocalPersonas({ cwd, homeDir });
72
+ assert.deepEqual(loaded.warnings, []);
73
+ const spec = loaded.byId.get('posthog');
74
+ assert.ok(spec);
75
+ assert.equal(loaded.sources.get('posthog'), 'pwd');
76
+ // Library fields still flow through (mcpServers, tiers, description).
77
+ assert.ok(spec.mcpServers?.posthog);
78
+ assert.equal(spec.tiers.best.harness, 'claude');
79
+ assert.equal(spec.env?.POSTHOG_API_KEY, '$POSTHOG_API_KEY');
80
+ });
81
+ });
82
+ test('cascade chain: pwd extends home extends library', () => {
83
+ withLayers(({ cwd, homeDir, pwdDir }) => {
84
+ // home defines a mid-layer override that adds a default env key.
85
+ writeJson(join(homeDir, 'ph-base.json'), {
86
+ id: 'ph-base',
87
+ extends: 'posthog',
88
+ env: { DEFAULT_ORG: 'acme' }
89
+ });
90
+ // pwd extends the home persona (not the library directly).
91
+ writeJson(join(pwdDir, 'ph-prod.json'), {
92
+ id: 'ph-prod',
93
+ extends: 'ph-base',
94
+ env: { POSTHOG_API_KEY: '$PROD_KEY' }
95
+ });
96
+ const loaded = loadLocalPersonas({ cwd, homeDir });
97
+ assert.deepEqual(loaded.warnings, []);
98
+ const prod = loaded.byId.get('ph-prod');
99
+ assert.ok(prod);
100
+ // Both env keys flow through the chain.
101
+ assert.equal(prod.env?.DEFAULT_ORG, 'acme');
102
+ assert.equal(prod.env?.POSTHOG_API_KEY, '$PROD_KEY');
103
+ // MCP from library is preserved.
104
+ assert.ok(prod.mcpServers?.posthog);
105
+ });
106
+ });
107
+ test('per-tier override only replaces the named tier, leaving others untouched', () => {
108
+ withLayers(({ cwd, homeDir }) => {
109
+ writeJson(join(homeDir, 'ph.json'), {
110
+ id: 'ph',
111
+ extends: 'posthog',
112
+ tiers: {
113
+ best: { model: 'claude-sonnet-4-6' }
114
+ }
115
+ });
116
+ const loaded = loadLocalPersonas({ cwd, homeDir });
117
+ const spec = loaded.byId.get('ph');
118
+ assert.equal(spec?.tiers.best.model, 'claude-sonnet-4-6');
119
+ // systemPrompt is inherited on the overridden tier too (partial per-tier merge).
120
+ assert.match(spec?.tiers.best.systemPrompt ?? '', /PostHog/);
121
+ // Other tiers untouched.
122
+ assert.equal(spec?.tiers['best-value'].model, 'claude-sonnet-4-6');
123
+ assert.equal(spec?.tiers.minimum.model, 'claude-haiku-4-5-20251001');
124
+ });
125
+ });
126
+ test('top-level systemPrompt replaces prompt across all inherited tiers', () => {
127
+ withLayers(({ cwd, homeDir }) => {
128
+ writeJson(join(homeDir, 'ph.json'), {
129
+ id: 'ph',
130
+ extends: 'posthog',
131
+ systemPrompt: 'You answer only yes or no.'
132
+ });
133
+ const loaded = loadLocalPersonas({ cwd, homeDir });
134
+ const spec = loaded.byId.get('ph');
135
+ assert.equal(spec?.tiers.best.systemPrompt, 'You answer only yes or no.');
136
+ assert.equal(spec?.tiers['best-value'].systemPrompt, 'You answer only yes or no.');
137
+ assert.equal(spec?.tiers.minimum.systemPrompt, 'You answer only yes or no.');
138
+ });
139
+ });
140
+ test('warns when extends base does not exist in lower layers', () => {
141
+ withLayers(({ cwd, homeDir }) => {
142
+ writeJson(join(homeDir, 'broken.json'), {
143
+ id: 'broken',
144
+ extends: 'does-not-exist'
145
+ });
146
+ const loaded = loadLocalPersonas({ cwd, homeDir });
147
+ assert.equal(loaded.byId.size, 0);
148
+ assert.equal(loaded.warnings.length, 1);
149
+ assert.match(loaded.warnings[0], /does-not-exist/);
150
+ });
151
+ });
152
+ test('warns on duplicate ids within a single layer', () => {
153
+ withLayers(({ cwd, homeDir }) => {
154
+ writeJson(join(homeDir, 'a.json'), { id: 'dup', extends: 'posthog' });
155
+ writeJson(join(homeDir, 'b.json'), { id: 'dup', extends: 'posthog' });
156
+ const loaded = loadLocalPersonas({ cwd, homeDir });
157
+ assert.equal(loaded.byId.size, 1);
158
+ assert.equal(loaded.warnings.length, 1);
159
+ assert.match(loaded.warnings[0], /duplicate id "dup"/);
160
+ });
161
+ });
162
+ test('AGENT_WORKFORCE_CONFIG_DIR is trimmed before use (whitespace tolerated)', () => {
163
+ withLayers(({ cwd, homeDir }) => {
164
+ writeJson(join(homeDir, 'my-posthog.json'), {
165
+ id: 'my-posthog',
166
+ extends: 'posthog'
167
+ });
168
+ const prev = process.env.AGENT_WORKFORCE_CONFIG_DIR;
169
+ process.env.AGENT_WORKFORCE_CONFIG_DIR = ` ${homeDir} `;
170
+ try {
171
+ // Don't pass homeDir — force the loader to fall back to the env var,
172
+ // which is the code path that used to return the untrimmed value.
173
+ const loaded = loadLocalPersonas({ cwd });
174
+ assert.ok(loaded.byId.has('my-posthog'), 'persona should load despite whitespace in AGENT_WORKFORCE_CONFIG_DIR');
175
+ }
176
+ finally {
177
+ if (prev === undefined)
178
+ delete process.env.AGENT_WORKFORCE_CONFIG_DIR;
179
+ else
180
+ process.env.AGENT_WORKFORCE_CONFIG_DIR = prev;
181
+ }
182
+ });
183
+ });
184
+ test('returns empty result when neither layer exists', () => {
185
+ const loaded = loadLocalPersonas({
186
+ cwd: '/tmp/agentworkforce-nonexistent-pwd-zzz',
187
+ homeDir: '/tmp/agentworkforce-nonexistent-home-zzz'
188
+ });
189
+ assert.equal(loaded.byId.size, 0);
190
+ assert.deepEqual(loaded.warnings, []);
191
+ });
192
+ test('permissions merge: allow/deny union dedup, mode overrides', () => {
193
+ withLayers(({ cwd, homeDir, pwdDir }) => {
194
+ // Base posthog already has permissions.allow = ["mcp__posthog"] in the
195
+ // library file. Home adds a Bash deny + sets default mode; pwd adds
196
+ // another allow and overrides the mode.
197
+ writeJson(join(homeDir, 'ph.json'), {
198
+ id: 'ph',
199
+ extends: 'posthog',
200
+ permissions: {
201
+ deny: ['Bash(rm -rf *)'],
202
+ mode: 'default'
203
+ }
204
+ });
205
+ writeJson(join(pwdDir, 'ph.json'), {
206
+ id: 'ph',
207
+ extends: 'ph',
208
+ permissions: {
209
+ allow: ['Bash(git *)'],
210
+ mode: 'acceptEdits'
211
+ }
212
+ });
213
+ const loaded = loadLocalPersonas({ cwd, homeDir });
214
+ assert.deepEqual(loaded.warnings, []);
215
+ const spec = loaded.byId.get('ph');
216
+ assert.deepEqual(spec?.permissions?.allow?.slice().sort(), ['Bash(git *)', 'mcp__posthog'].sort());
217
+ assert.deepEqual(spec?.permissions?.deny, ['Bash(rm -rf *)']);
218
+ assert.equal(spec?.permissions?.mode, 'acceptEdits');
219
+ });
220
+ });
221
+ test('permissions allow list dedupes across layers', () => {
222
+ withLayers(({ cwd, homeDir }) => {
223
+ writeJson(join(homeDir, 'ph.json'), {
224
+ id: 'ph',
225
+ extends: 'posthog',
226
+ permissions: { allow: ['mcp__posthog'] }
227
+ });
228
+ const loaded = loadLocalPersonas({ cwd, homeDir });
229
+ const spec = loaded.byId.get('ph');
230
+ assert.deepEqual(spec?.permissions?.allow, ['mcp__posthog']);
231
+ });
232
+ });
233
+ test('surfaces parse errors as per-file warnings without throwing', () => {
234
+ withLayers(({ cwd, homeDir }) => {
235
+ writeFileSync(join(homeDir, 'bad.json'), '{ not valid json');
236
+ const loaded = loadLocalPersonas({ cwd, homeDir });
237
+ assert.equal(loaded.byId.size, 0);
238
+ assert.equal(loaded.warnings.length, 1);
239
+ assert.match(loaded.warnings[0], /bad\.json/);
240
+ });
241
+ });
242
+ //# sourceMappingURL=local-personas.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"local-personas.test.js","sourceRoot":"","sources":["../src/local-personas.test.ts"],"names":[],"mappings":"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"}
package/package.json ADDED
@@ -0,0 +1,32 @@
1
+ {
2
+ "name": "@agentworkforce/cli",
3
+ "version": "0.1.0",
4
+ "private": false,
5
+ "type": "module",
6
+ "bin": {
7
+ "agent-workforce": "dist/cli.js"
8
+ },
9
+ "files": [
10
+ "dist",
11
+ "README.md",
12
+ "package.json"
13
+ ],
14
+ "dependencies": {
15
+ "@agentworkforce/harness-kit": "0.1.0",
16
+ "@agentworkforce/workload-router": "0.3.0"
17
+ },
18
+ "repository": {
19
+ "type": "git",
20
+ "url": "https://github.com/AgentWorkforce/workforce",
21
+ "directory": "packages/cli"
22
+ },
23
+ "publishConfig": {
24
+ "access": "public"
25
+ },
26
+ "scripts": {
27
+ "build": "tsc -p tsconfig.json && chmod +x dist/cli.js",
28
+ "typecheck": "tsc -p tsconfig.json --noEmit",
29
+ "test": "tsc -p tsconfig.json && node --test dist/*.test.js",
30
+ "lint": "tsc -p tsconfig.json --noEmit"
31
+ }
32
+ }