@hivecommons/promptargs 0.7.0 → 0.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 +100 -15
- package/dist/autodetect.js +24 -9
- package/dist/autodetect.js.map +1 -1
- package/dist/cli.js +51 -147
- package/dist/cli.js.map +1 -1
- package/dist/commands.d.ts +4 -0
- package/dist/commands.js +130 -0
- package/dist/commands.js.map +1 -0
- package/dist/flags.d.ts +14 -0
- package/dist/flags.js +57 -0
- package/dist/flags.js.map +1 -0
- package/dist/loader.d.ts +2 -0
- package/dist/loader.js +64 -11
- package/dist/loader.js.map +1 -1
- package/dist/log.d.ts +19 -0
- package/dist/log.js +41 -0
- package/dist/log.js.map +1 -0
- package/dist/parser.js +33 -7
- package/dist/parser.js.map +1 -1
- package/dist/resolver.d.ts +2 -0
- package/dist/resolver.js +60 -30
- package/dist/resolver.js.map +1 -1
- package/dist/status.d.ts +1 -1
- package/dist/status.js +5 -4
- package/dist/status.js.map +1 -1
- package/dist/ui.html +18 -5
- package/dist/ui.js +36 -11
- package/dist/ui.js.map +1 -1
- package/package.json +13 -4
- package/dist/autodetect.test.d.ts +0 -1
- package/dist/autodetect.test.js +0 -207
- package/dist/autodetect.test.js.map +0 -1
- package/dist/cli.test.d.ts +0 -1
- package/dist/cli.test.js +0 -310
- package/dist/cli.test.js.map +0 -1
- package/dist/index.test.d.ts +0 -1
- package/dist/index.test.js +0 -59
- package/dist/index.test.js.map +0 -1
- package/dist/iterate.test.d.ts +0 -1
- package/dist/iterate.test.js +0 -20
- package/dist/iterate.test.js.map +0 -1
- package/dist/loader.test.d.ts +0 -1
- package/dist/loader.test.js +0 -65
- package/dist/loader.test.js.map +0 -1
- package/dist/parser.test.d.ts +0 -1
- package/dist/parser.test.js +0 -93
- package/dist/parser.test.js.map +0 -1
- package/dist/resolver.test.d.ts +0 -1
- package/dist/resolver.test.js +0 -184
- package/dist/resolver.test.js.map +0 -1
- package/dist/sanitize.test.d.ts +0 -1
- package/dist/sanitize.test.js +0 -38
- package/dist/sanitize.test.js.map +0 -1
- package/dist/status.test.d.ts +0 -1
- package/dist/status.test.js +0 -33
- package/dist/status.test.js.map +0 -1
- package/dist/ui-bootstrap.test.d.ts +0 -1
- package/dist/ui-bootstrap.test.js +0 -479
- package/dist/ui-bootstrap.test.js.map +0 -1
- package/dist/ui-builder.test.d.ts +0 -1
- package/dist/ui-builder.test.js +0 -272
- package/dist/ui-builder.test.js.map +0 -1
- package/dist/ui-command-quoting.test.d.ts +0 -1
- package/dist/ui-command-quoting.test.js +0 -95
- package/dist/ui-command-quoting.test.js.map +0 -1
- package/dist/ui-harness.d.ts +0 -20
- package/dist/ui-harness.js +0 -40
- package/dist/ui-harness.js.map +0 -1
- package/dist/ui-harness.test.d.ts +0 -1
- package/dist/ui-harness.test.js +0 -30
- package/dist/ui-harness.test.js.map +0 -1
- package/dist/ui-inline.test.d.ts +0 -1
- package/dist/ui-inline.test.js +0 -90
- package/dist/ui-inline.test.js.map +0 -1
- package/dist/ui-interactions.test.d.ts +0 -1
- package/dist/ui-interactions.test.js +0 -489
- package/dist/ui-interactions.test.js.map +0 -1
- package/dist/ui.test.d.ts +0 -1
- package/dist/ui.test.js +0 -283
- package/dist/ui.test.js.map +0 -1
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"autodetect.test.js","sourceRoot":"","sources":["../src/autodetect.test.ts"],"names":[],"mappings":"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"}
|
package/dist/cli.test.d.ts
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export {};
|
package/dist/cli.test.js
DELETED
|
@@ -1,310 +0,0 @@
|
|
|
1
|
-
import { test } from 'node:test';
|
|
2
|
-
import assert from 'node:assert';
|
|
3
|
-
import { spawnSync } from 'node:child_process';
|
|
4
|
-
import { mkdtempSync, writeFileSync, mkdirSync, existsSync, readFileSync, rmSync } from 'node:fs';
|
|
5
|
-
import { join, dirname } from 'node:path';
|
|
6
|
-
import { tmpdir } from 'node:os';
|
|
7
|
-
import { fileURLToPath } from 'node:url';
|
|
8
|
-
const __dirname = dirname(fileURLToPath(import.meta.url));
|
|
9
|
-
const CLI = join(__dirname, 'cli.js');
|
|
10
|
-
function runCli(args, cwd, home) {
|
|
11
|
-
const result = spawnSync(process.execPath, [CLI, ...args], {
|
|
12
|
-
cwd,
|
|
13
|
-
encoding: 'utf-8',
|
|
14
|
-
env: { ...process.env, HOME: home, USERPROFILE: home },
|
|
15
|
-
});
|
|
16
|
-
return { status: result.status, stdout: result.stdout, stderr: result.stderr };
|
|
17
|
-
}
|
|
18
|
-
// Each test gets an isolated cwd and HOME so ~/.prompts and ./.prompts
|
|
19
|
-
// from the host machine never leak into template resolution.
|
|
20
|
-
function makeDirs() {
|
|
21
|
-
const base = mkdtempSync(join(tmpdir(), 'promptargs-cli-test-'));
|
|
22
|
-
const cwd = join(base, 'work');
|
|
23
|
-
const home = join(base, 'home');
|
|
24
|
-
mkdirSync(cwd, { recursive: true });
|
|
25
|
-
mkdirSync(home, { recursive: true });
|
|
26
|
-
return { cwd, home };
|
|
27
|
-
}
|
|
28
|
-
test('no args prints help and exits 0', () => {
|
|
29
|
-
const { cwd, home } = makeDirs();
|
|
30
|
-
const res = runCli([], cwd, home);
|
|
31
|
-
assert.strictEqual(res.status, 0);
|
|
32
|
-
assert.match(res.stdout, /promptargs — Template arguments for AI prompts/);
|
|
33
|
-
assert.match(res.stdout, /Auto-detected variables:/);
|
|
34
|
-
rmSync(dirname(cwd), { recursive: true, force: true });
|
|
35
|
-
});
|
|
36
|
-
test('help subcommand and --help flag print usage', () => {
|
|
37
|
-
const { cwd, home } = makeDirs();
|
|
38
|
-
for (const arg of ['help', '--help']) {
|
|
39
|
-
const res = runCli([arg], cwd, home);
|
|
40
|
-
assert.strictEqual(res.status, 0, `exit code for ${arg}`);
|
|
41
|
-
assert.match(res.stdout, /Usage:/);
|
|
42
|
-
}
|
|
43
|
-
rmSync(dirname(cwd), { recursive: true, force: true });
|
|
44
|
-
});
|
|
45
|
-
test('env subcommand lists every autodetect variable', () => {
|
|
46
|
-
const { cwd, home } = makeDirs();
|
|
47
|
-
const res = runCli(['env'], cwd, home);
|
|
48
|
-
assert.strictEqual(res.status, 0);
|
|
49
|
-
assert.match(res.stdout, /Auto-detected variables:/);
|
|
50
|
-
// Non-git cwd: variables should render as "(not detected)" rather than crash.
|
|
51
|
-
assert.match(res.stdout, /\{\{branch\}\}/);
|
|
52
|
-
assert.match(res.stdout, /\{\{repo\}\}/);
|
|
53
|
-
assert.match(res.stdout, /\{\{date\}\}/);
|
|
54
|
-
rmSync(dirname(cwd), { recursive: true, force: true });
|
|
55
|
-
});
|
|
56
|
-
test('inline template expands flag values', () => {
|
|
57
|
-
const { cwd, home } = makeDirs();
|
|
58
|
-
const res = runCli(['Hello {{name}}', '--name=World', '--no-interactive'], cwd, home);
|
|
59
|
-
assert.strictEqual(res.status, 0);
|
|
60
|
-
assert.strictEqual(res.stdout.trim(), 'Hello World');
|
|
61
|
-
rmSync(dirname(cwd), { recursive: true, force: true });
|
|
62
|
-
});
|
|
63
|
-
test('template without variables is printed as-is', () => {
|
|
64
|
-
const { cwd, home } = makeDirs();
|
|
65
|
-
mkdirSync(join(cwd, '.prompts'));
|
|
66
|
-
writeFileSync(join(cwd, '.prompts', 'plain.md'), 'No variables here.\n');
|
|
67
|
-
const res = runCli(['plain', '--no-interactive'], cwd, home);
|
|
68
|
-
assert.strictEqual(res.status, 0);
|
|
69
|
-
assert.match(res.stdout, /No variables here\./);
|
|
70
|
-
rmSync(dirname(cwd), { recursive: true, force: true });
|
|
71
|
-
});
|
|
72
|
-
test('unknown template exits 1 with guidance', () => {
|
|
73
|
-
const { cwd, home } = makeDirs();
|
|
74
|
-
const res = runCli(['nope', '--no-interactive'], cwd, home);
|
|
75
|
-
assert.strictEqual(res.status, 1);
|
|
76
|
-
assert.match(res.stderr, /Template "nope" not found\./);
|
|
77
|
-
assert.match(res.stderr, /promptargs list/);
|
|
78
|
-
assert.match(res.stderr, /promptargs init/);
|
|
79
|
-
rmSync(dirname(cwd), { recursive: true, force: true });
|
|
80
|
-
});
|
|
81
|
-
test('init creates .prompts with three example templates', () => {
|
|
82
|
-
const { cwd, home } = makeDirs();
|
|
83
|
-
const res = runCli(['init'], cwd, home);
|
|
84
|
-
assert.strictEqual(res.status, 0);
|
|
85
|
-
assert.match(res.stdout, /Created \.prompts\/ with 3 example templates:/);
|
|
86
|
-
for (const f of ['review.md', 'explain.md', 'fix.md']) {
|
|
87
|
-
assert.ok(existsSync(join(cwd, '.prompts', f)), `${f} should exist`);
|
|
88
|
-
}
|
|
89
|
-
const review = readFileSync(join(cwd, '.prompts', 'review.md'), 'utf-8');
|
|
90
|
-
assert.match(review, /\{\{file\}\}/);
|
|
91
|
-
assert.match(review, /\{\{focus=correctness\}\}/);
|
|
92
|
-
rmSync(dirname(cwd), { recursive: true, force: true });
|
|
93
|
-
});
|
|
94
|
-
test('init is a no-op when .prompts already exists', () => {
|
|
95
|
-
const { cwd, home } = makeDirs();
|
|
96
|
-
mkdirSync(join(cwd, '.prompts'));
|
|
97
|
-
writeFileSync(join(cwd, '.prompts', 'keep.md'), 'existing {{x}}');
|
|
98
|
-
const res = runCli(['init'], cwd, home);
|
|
99
|
-
assert.strictEqual(res.status, 0);
|
|
100
|
-
assert.match(res.stdout, /\.prompts\/ already exists!/);
|
|
101
|
-
assert.strictEqual(readFileSync(join(cwd, '.prompts', 'keep.md'), 'utf-8'), 'existing {{x}}');
|
|
102
|
-
assert.ok(!existsSync(join(cwd, '.prompts', 'review.md')));
|
|
103
|
-
rmSync(dirname(cwd), { recursive: true, force: true });
|
|
104
|
-
});
|
|
105
|
-
test('list shows template names, vars with defaults, and user source tag', () => {
|
|
106
|
-
const { cwd, home } = makeDirs();
|
|
107
|
-
mkdirSync(join(cwd, '.prompts'));
|
|
108
|
-
writeFileSync(join(cwd, '.prompts', 'review.md'), 'Review {{file}} for {{focus=bugs}}.');
|
|
109
|
-
mkdirSync(join(home, '.prompts'));
|
|
110
|
-
writeFileSync(join(home, '.prompts', 'personal.md'), 'Do {{thing}}.');
|
|
111
|
-
const res = runCli(['list'], cwd, home);
|
|
112
|
-
assert.strictEqual(res.status, 0);
|
|
113
|
-
assert.match(res.stdout, /review/);
|
|
114
|
-
assert.match(res.stdout, /\{\{file\}\}\s+\{\{focus=bugs\}\}/);
|
|
115
|
-
assert.match(res.stdout, /personal \(user\)/);
|
|
116
|
-
rmSync(dirname(cwd), { recursive: true, force: true });
|
|
117
|
-
});
|
|
118
|
-
test('list with no templates suggests init', () => {
|
|
119
|
-
const { cwd, home } = makeDirs();
|
|
120
|
-
const res = runCli(['list'], cwd, home);
|
|
121
|
-
assert.strictEqual(res.status, 0);
|
|
122
|
-
assert.match(res.stdout, /No templates found\./);
|
|
123
|
-
assert.match(res.stdout, /promptargs init/);
|
|
124
|
-
rmSync(dirname(cwd), { recursive: true, force: true });
|
|
125
|
-
});
|
|
126
|
-
test('show highlights required and defaulted variables', () => {
|
|
127
|
-
const { cwd, home } = makeDirs();
|
|
128
|
-
mkdirSync(join(cwd, '.prompts'));
|
|
129
|
-
writeFileSync(join(cwd, '.prompts', 'demo.md'), 'Fix {{issue}} in {{file=main.go}}.');
|
|
130
|
-
const res = runCli(['show', 'demo'], cwd, home);
|
|
131
|
-
assert.strictEqual(res.status, 0);
|
|
132
|
-
assert.match(res.stdout, /Template: demo/);
|
|
133
|
-
// Required var wrapped in red (31m), defaulted var in yellow (33m).
|
|
134
|
-
assert.match(res.stdout, /\x1b\[31m\{\{issue\}\}\x1b\[0m/);
|
|
135
|
-
assert.match(res.stdout, /\x1b\[33m\{\{file=main\.go\}\}\x1b\[0m/);
|
|
136
|
-
rmSync(dirname(cwd), { recursive: true, force: true });
|
|
137
|
-
});
|
|
138
|
-
test('show highlights whitespace-padded tags as written', () => {
|
|
139
|
-
const { cwd, home } = makeDirs();
|
|
140
|
-
mkdirSync(join(cwd, '.prompts'));
|
|
141
|
-
writeFileSync(join(cwd, '.prompts', 'padded.md'), 'Fix {{ issue }} in {{ file=main.go }}.');
|
|
142
|
-
const res = runCli(['show', 'padded'], cwd, home);
|
|
143
|
-
assert.strictEqual(res.status, 0);
|
|
144
|
-
assert.match(res.stdout, /\x1b\[31m\{\{ issue \}\}\x1b\[0m/);
|
|
145
|
-
assert.match(res.stdout, /\x1b\[33m\{\{ file=main\.go \}\}\x1b\[0m/);
|
|
146
|
-
rmSync(dirname(cwd), { recursive: true, force: true });
|
|
147
|
-
});
|
|
148
|
-
test('padded tags are filled from flags and reported in --status', () => {
|
|
149
|
-
const { cwd, home } = makeDirs();
|
|
150
|
-
const tpl = 'Review {{ file }} for {{ focus=bugs }}';
|
|
151
|
-
const run = runCli([tpl, '--file=a.ts', '--no-interactive'], cwd, home);
|
|
152
|
-
assert.strictEqual(run.status, 0);
|
|
153
|
-
assert.strictEqual(run.stdout.trim(), 'Review a.ts for bugs');
|
|
154
|
-
const status = runCli([tpl, '--no-interactive', '--status'], cwd, home);
|
|
155
|
-
assert.strictEqual(status.status, 0);
|
|
156
|
-
// Without padding support the status line claimed ✅ with only focus listed.
|
|
157
|
-
assert.match(status.stdout, /📋 inline: file=___ focus=bugs\(default\)/);
|
|
158
|
-
rmSync(dirname(cwd), { recursive: true, force: true });
|
|
159
|
-
});
|
|
160
|
-
test('show without a template name exits 1 with usage', () => {
|
|
161
|
-
const { cwd, home } = makeDirs();
|
|
162
|
-
const res = runCli(['show'], cwd, home);
|
|
163
|
-
assert.strictEqual(res.status, 1);
|
|
164
|
-
assert.match(res.stderr, /Usage: promptargs show <template>/);
|
|
165
|
-
rmSync(dirname(cwd), { recursive: true, force: true });
|
|
166
|
-
});
|
|
167
|
-
test('show with unknown template exits 1', () => {
|
|
168
|
-
const { cwd, home } = makeDirs();
|
|
169
|
-
const res = runCli(['show', 'ghost'], cwd, home);
|
|
170
|
-
assert.strictEqual(res.status, 1);
|
|
171
|
-
assert.match(res.stderr, /Template "ghost" not found\./);
|
|
172
|
-
rmSync(dirname(cwd), { recursive: true, force: true });
|
|
173
|
-
});
|
|
174
|
-
test('zip mode pairs array values positionally', () => {
|
|
175
|
-
const { cwd, home } = makeDirs();
|
|
176
|
-
const res = runCli(['Review {{file}} for {{focus}}', '--file=a.go,b.go', '--focus=x,y', '--no-interactive'], cwd, home);
|
|
177
|
-
assert.strictEqual(res.status, 0);
|
|
178
|
-
const runs = res.stdout.trim().split('\n---\n');
|
|
179
|
-
assert.strictEqual(runs.length, 2);
|
|
180
|
-
assert.match(runs[0], /Review a\.go for x/);
|
|
181
|
-
assert.match(runs[1], /Review b\.go for y/);
|
|
182
|
-
rmSync(dirname(cwd), { recursive: true, force: true });
|
|
183
|
-
});
|
|
184
|
-
test('--cross produces the full cross-product of array values', () => {
|
|
185
|
-
const { cwd, home } = makeDirs();
|
|
186
|
-
const res = runCli(['Review {{file}} for {{focus}}', '--file=a.go,b.go', '--focus=x,y', '--cross', '--no-interactive'], cwd, home);
|
|
187
|
-
assert.strictEqual(res.status, 0);
|
|
188
|
-
const runs = res.stdout.trim().split('\n---\n');
|
|
189
|
-
assert.strictEqual(runs.length, 4);
|
|
190
|
-
const combos = ['a.go for x', 'a.go for y', 'b.go for x', 'b.go for y'];
|
|
191
|
-
for (const combo of combos) {
|
|
192
|
-
assert.ok(runs.some(r => r.includes(combo)), `missing combination: ${combo}`);
|
|
193
|
-
}
|
|
194
|
-
// Multi-run mode also writes a progress status line per run to stderr.
|
|
195
|
-
assert.match(res.stderr, /\[1\/4\]/);
|
|
196
|
-
rmSync(dirname(cwd), { recursive: true, force: true });
|
|
197
|
-
});
|
|
198
|
-
test('--json emits a single string for one run and an array for many', () => {
|
|
199
|
-
const { cwd, home } = makeDirs();
|
|
200
|
-
const single = runCli(['Hi {{name}}', '--name=Ada', '--json', '--no-interactive'], cwd, home);
|
|
201
|
-
assert.strictEqual(single.status, 0);
|
|
202
|
-
assert.strictEqual(JSON.parse(single.stdout), 'Hi Ada');
|
|
203
|
-
const multi = runCli(['Hi {{name}}', '--name=Ada,Bob', '--json', '--no-interactive'], cwd, home);
|
|
204
|
-
assert.strictEqual(multi.status, 0);
|
|
205
|
-
assert.deepStrictEqual(JSON.parse(multi.stdout), ['Hi Ada', 'Hi Bob']);
|
|
206
|
-
rmSync(dirname(cwd), { recursive: true, force: true });
|
|
207
|
-
});
|
|
208
|
-
test('--status prints only the status line for the first iteration', () => {
|
|
209
|
-
const { cwd, home } = makeDirs();
|
|
210
|
-
const res = runCli(['Review {{file}} for {{focus=bugs}}', '--file=a.go', '--status', '--no-interactive'], cwd, home);
|
|
211
|
-
assert.strictEqual(res.status, 0);
|
|
212
|
-
assert.match(res.stdout, /file=a\.go/);
|
|
213
|
-
assert.match(res.stdout, /focus=bugs\(default\)/);
|
|
214
|
-
assert.doesNotMatch(res.stdout, /Review a\.go/);
|
|
215
|
-
rmSync(dirname(cwd), { recursive: true, force: true });
|
|
216
|
-
});
|
|
217
|
-
test('defaults fill unset variables in non-interactive mode', () => {
|
|
218
|
-
const { cwd, home } = makeDirs();
|
|
219
|
-
const res = runCli(['Be {{tone=concise}} about {{file}}', '--file=x.ts', '--no-interactive'], cwd, home);
|
|
220
|
-
assert.strictEqual(res.status, 0);
|
|
221
|
-
assert.match(res.stdout, /Be concise about x\.ts/);
|
|
222
|
-
rmSync(dirname(cwd), { recursive: true, force: true });
|
|
223
|
-
});
|
|
224
|
-
test('valueless flags are treated as boolean "true"', () => {
|
|
225
|
-
const { cwd, home } = makeDirs();
|
|
226
|
-
// --no-interactive has no "=", exercising the parseFlags boolean branch;
|
|
227
|
-
// {{flagged}} picks up an explicit value while iteration still succeeds.
|
|
228
|
-
const res = runCli(['{{a}} and {{b}}', '--a=1', '--b=2', '--no-interactive'], cwd, home);
|
|
229
|
-
assert.strictEqual(res.status, 0);
|
|
230
|
-
assert.strictEqual(res.stdout.trim(), '1 and 2');
|
|
231
|
-
rmSync(dirname(cwd), { recursive: true, force: true });
|
|
232
|
-
});
|
|
233
|
-
test('@file array syntax reads one value per line', () => {
|
|
234
|
-
const { cwd, home } = makeDirs();
|
|
235
|
-
writeFileSync(join(cwd, 'names.txt'), 'Ada\nBob\n');
|
|
236
|
-
const res = runCli(['Hi {{name}}', '--name=@names.txt', '--no-interactive'], cwd, home);
|
|
237
|
-
assert.strictEqual(res.status, 0);
|
|
238
|
-
const runs = res.stdout.trim().split('\n---\n');
|
|
239
|
-
assert.strictEqual(runs.length, 2);
|
|
240
|
-
assert.match(runs[0], /Hi Ada/);
|
|
241
|
-
assert.match(runs[1], /Hi Bob/);
|
|
242
|
-
rmSync(dirname(cwd), { recursive: true, force: true });
|
|
243
|
-
});
|
|
244
|
-
test('ui subcommand parses --port and surfaces server errors', async () => {
|
|
245
|
-
// Occupy a port so `promptargs ui` fails fast and deterministically —
|
|
246
|
-
// this exercises the ui dispatch path without leaving a server running.
|
|
247
|
-
const { createServer } = await import('node:net');
|
|
248
|
-
const blocker = createServer();
|
|
249
|
-
await new Promise(resolve => blocker.listen(0, '127.0.0.1', resolve));
|
|
250
|
-
const { port } = blocker.address();
|
|
251
|
-
try {
|
|
252
|
-
const { cwd, home } = makeDirs();
|
|
253
|
-
const res = runCli(['ui', `--port=${port}`], cwd, home);
|
|
254
|
-
assert.strictEqual(res.status, 1);
|
|
255
|
-
assert.match(res.stderr, new RegExp(`Port ${port} is in use`));
|
|
256
|
-
rmSync(dirname(cwd), { recursive: true, force: true });
|
|
257
|
-
}
|
|
258
|
-
finally {
|
|
259
|
-
await new Promise(resolve => blocker.close(resolve));
|
|
260
|
-
}
|
|
261
|
-
});
|
|
262
|
-
test('ui subcommand without --port targets the default port 3700', async () => {
|
|
263
|
-
// Occupy the default port so `promptargs ui` (no flags) fails fast on
|
|
264
|
-
// EADDRINUSE, proving the no-port dispatch path reaches startUI's default.
|
|
265
|
-
const { createServer } = await import('node:net');
|
|
266
|
-
const blocker = createServer();
|
|
267
|
-
const bound = await new Promise(resolve => {
|
|
268
|
-
blocker.once('error', () => resolve(false));
|
|
269
|
-
blocker.listen(3700, '127.0.0.1', () => resolve(true));
|
|
270
|
-
});
|
|
271
|
-
// If binding failed, another process already holds 3700 — the CLI will
|
|
272
|
-
// still hit EADDRINUSE, so the assertions below hold either way.
|
|
273
|
-
try {
|
|
274
|
-
const { cwd, home } = makeDirs();
|
|
275
|
-
const res = runCli(['ui'], cwd, home);
|
|
276
|
-
assert.strictEqual(res.status, 1);
|
|
277
|
-
assert.match(res.stderr, /Port 3700 is in use\. Try: promptargs ui --port=3701/);
|
|
278
|
-
rmSync(dirname(cwd), { recursive: true, force: true });
|
|
279
|
-
}
|
|
280
|
-
finally {
|
|
281
|
-
if (bound)
|
|
282
|
-
await new Promise(resolve => blocker.close(resolve));
|
|
283
|
-
}
|
|
284
|
-
});
|
|
285
|
-
test('env truncates a long staged diff to a preview with ellipsis', () => {
|
|
286
|
-
const { cwd, home } = makeDirs();
|
|
287
|
-
const git = (gitArgs) => spawnSync('git', gitArgs, { cwd, encoding: 'utf-8', env: { ...process.env, HOME: home } });
|
|
288
|
-
git(['init', '-q']);
|
|
289
|
-
writeFileSync(join(cwd, 'big.txt'), 'x'.repeat(300) + '\n');
|
|
290
|
-
git(['add', 'big.txt']);
|
|
291
|
-
const res = runCli(['env'], cwd, home);
|
|
292
|
-
assert.strictEqual(res.status, 0);
|
|
293
|
-
// The diff was detected (green, not "(not detected)") …
|
|
294
|
-
assert.match(res.stdout, /\x1b\[32m\{\{diff\}\}\x1b\[0m = diff --git/);
|
|
295
|
-
// … and truncated: the 300-char payload line never appears, the ellipsis does.
|
|
296
|
-
assert.ok(!res.stdout.includes('x'.repeat(100)), 'full diff body leaked into preview');
|
|
297
|
-
assert.match(res.stdout, /\.\.\./);
|
|
298
|
-
rmSync(dirname(cwd), { recursive: true, force: true });
|
|
299
|
-
});
|
|
300
|
-
test('template read errors reach the top-level handler and exit 1', () => {
|
|
301
|
-
const { cwd, home } = makeDirs();
|
|
302
|
-
// A directory named like a template makes readFileSync throw EISDIR,
|
|
303
|
-
// which propagates through main() to the final .catch handler.
|
|
304
|
-
mkdirSync(join(cwd, '.prompts', 'broken.md'), { recursive: true });
|
|
305
|
-
const res = runCli(['show', 'broken'], cwd, home);
|
|
306
|
-
assert.strictEqual(res.status, 1);
|
|
307
|
-
assert.match(res.stderr, /EISDIR/);
|
|
308
|
-
rmSync(dirname(cwd), { recursive: true, force: true });
|
|
309
|
-
});
|
|
310
|
-
//# sourceMappingURL=cli.test.js.map
|
package/dist/cli.test.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"cli.test.js","sourceRoot":"","sources":["../src/cli.test.ts"],"names":[],"mappings":"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"}
|
package/dist/index.test.d.ts
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export {};
|
package/dist/index.test.js
DELETED
|
@@ -1,59 +0,0 @@
|
|
|
1
|
-
import { test } from 'node:test';
|
|
2
|
-
import assert from 'node:assert';
|
|
3
|
-
import * as api from './index.js';
|
|
4
|
-
// package.json "main" points at dist/index.js — this file is the public API
|
|
5
|
-
// surface consumers get from `import ... from '@hivecommons/promptargs'`.
|
|
6
|
-
// Pin every runtime export so a refactor of the barrel (or of a re-exported
|
|
7
|
-
// module) that drops or renames a symbol fails the suite instead of shipping
|
|
8
|
-
// a silent breaking change.
|
|
9
|
-
const EXPECTED_FUNCTION_EXPORTS = [
|
|
10
|
-
'parseVars',
|
|
11
|
-
'expand',
|
|
12
|
-
'autodetect',
|
|
13
|
-
'autodetectAll',
|
|
14
|
-
'loadTemplates',
|
|
15
|
-
'findTemplate',
|
|
16
|
-
'resolve',
|
|
17
|
-
'renderStatus',
|
|
18
|
-
].sort();
|
|
19
|
-
test('index exports exactly the documented runtime API', () => {
|
|
20
|
-
const actual = Object.keys(api).sort();
|
|
21
|
-
const expected = [...EXPECTED_FUNCTION_EXPORTS, 'AUTODETECT_VARS'].sort();
|
|
22
|
-
assert.deepStrictEqual(actual, expected);
|
|
23
|
-
});
|
|
24
|
-
test('every function export is callable', () => {
|
|
25
|
-
for (const name of EXPECTED_FUNCTION_EXPORTS) {
|
|
26
|
-
assert.strictEqual(typeof api[name], 'function', `expected export "${name}" to be a function`);
|
|
27
|
-
}
|
|
28
|
-
});
|
|
29
|
-
test('AUTODETECT_VARS is a non-empty list of var names', () => {
|
|
30
|
-
assert.ok(Array.isArray(api.AUTODETECT_VARS));
|
|
31
|
-
assert.ok(api.AUTODETECT_VARS.length > 0);
|
|
32
|
-
for (const v of api.AUTODETECT_VARS) {
|
|
33
|
-
assert.strictEqual(typeof v, 'string');
|
|
34
|
-
assert.ok(v.length > 0);
|
|
35
|
-
}
|
|
36
|
-
});
|
|
37
|
-
test('entry-point exports are the same objects as their source modules', async () => {
|
|
38
|
-
const parser = await import('./parser.js');
|
|
39
|
-
const autodetectMod = await import('./autodetect.js');
|
|
40
|
-
const loader = await import('./loader.js');
|
|
41
|
-
const resolver = await import('./resolver.js');
|
|
42
|
-
const status = await import('./status.js');
|
|
43
|
-
assert.strictEqual(api.parseVars, parser.parseVars);
|
|
44
|
-
assert.strictEqual(api.expand, parser.expand);
|
|
45
|
-
assert.strictEqual(api.autodetect, autodetectMod.autodetect);
|
|
46
|
-
assert.strictEqual(api.autodetectAll, autodetectMod.autodetectAll);
|
|
47
|
-
assert.strictEqual(api.AUTODETECT_VARS, autodetectMod.AUTODETECT_VARS);
|
|
48
|
-
assert.strictEqual(api.loadTemplates, loader.loadTemplates);
|
|
49
|
-
assert.strictEqual(api.findTemplate, loader.findTemplate);
|
|
50
|
-
assert.strictEqual(api.resolve, resolver.resolve);
|
|
51
|
-
assert.strictEqual(api.renderStatus, status.renderStatus);
|
|
52
|
-
});
|
|
53
|
-
test('smoke: exported parseVars + expand round-trip through the entry point', () => {
|
|
54
|
-
const vars = api.parseVars('Hello {{name}}, focus on {{focus}}');
|
|
55
|
-
assert.deepStrictEqual(vars.map((v) => v.name), ['name', 'focus']);
|
|
56
|
-
const out = api.expand('Hello {{name}}', { name: 'World' });
|
|
57
|
-
assert.strictEqual(out, 'Hello World');
|
|
58
|
-
});
|
|
59
|
-
//# sourceMappingURL=index.test.js.map
|
package/dist/index.test.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.test.js","sourceRoot":"","sources":["../src/index.test.ts"],"names":[],"mappings":"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"}
|
package/dist/iterate.test.d.ts
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export {};
|
package/dist/iterate.test.js
DELETED
|
@@ -1,20 +0,0 @@
|
|
|
1
|
-
import { describe, it } from 'node:test';
|
|
2
|
-
import assert from 'node:assert';
|
|
3
|
-
import { cartesian, zip } from './iterate.js';
|
|
4
|
-
describe('cartesian', () => {
|
|
5
|
-
it('returns a single empty combo for no arrays', () => {
|
|
6
|
-
assert.deepStrictEqual(cartesian([]), [[]]);
|
|
7
|
-
});
|
|
8
|
-
it('builds every combination across arrays', () => {
|
|
9
|
-
assert.deepStrictEqual(cartesian([['a', 'b'], ['1', '2']]), [['a', '1'], ['a', '2'], ['b', '1'], ['b', '2']]);
|
|
10
|
-
});
|
|
11
|
-
});
|
|
12
|
-
describe('zip', () => {
|
|
13
|
-
it('pairs equal-length arrays 1:1', () => {
|
|
14
|
-
assert.deepStrictEqual(zip([['a', 'b', 'c'], ['1', '2', '3']]), [['a', '1'], ['b', '2'], ['c', '3']]);
|
|
15
|
-
});
|
|
16
|
-
it('wraps shorter arrays around to match the longest one', () => {
|
|
17
|
-
assert.deepStrictEqual(zip([['a', 'b', 'c'], ['1', '2']]), [['a', '1'], ['b', '2'], ['c', '1']]);
|
|
18
|
-
});
|
|
19
|
-
});
|
|
20
|
-
//# sourceMappingURL=iterate.test.js.map
|
package/dist/iterate.test.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"iterate.test.js","sourceRoot":"","sources":["../src/iterate.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,EAAE,EAAE,MAAM,WAAW,CAAC;AACzC,OAAO,MAAM,MAAM,aAAa,CAAC;AACjC,OAAO,EAAE,SAAS,EAAE,GAAG,EAAE,MAAM,cAAc,CAAC;AAE9C,QAAQ,CAAC,WAAW,EAAE,GAAG,EAAE;IACzB,EAAE,CAAC,4CAA4C,EAAE,GAAG,EAAE;QACpD,MAAM,CAAC,eAAe,CAAC,SAAS,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;IAC9C,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,wCAAwC,EAAE,GAAG,EAAE;QAChD,MAAM,CAAC,eAAe,CACpB,SAAS,CAAC,CAAC,CAAC,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC,CAAC,EACnC,CAAC,CAAC,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC,CACjD,CAAC;IACJ,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC;AAEH,QAAQ,CAAC,KAAK,EAAE,GAAG,EAAE;IACnB,EAAE,CAAC,+BAA+B,EAAE,GAAG,EAAE;QACvC,MAAM,CAAC,eAAe,CACpB,GAAG,CAAC,CAAC,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC,CAAC,EACvC,CAAC,CAAC,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC,CACrC,CAAC;IACJ,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,sDAAsD,EAAE,GAAG,EAAE;QAC9D,MAAM,CAAC,eAAe,CACpB,GAAG,CAAC,CAAC,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC,CAAC,EAClC,CAAC,CAAC,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC,CACrC,CAAC;IACJ,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
|
package/dist/loader.test.d.ts
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export {};
|
package/dist/loader.test.js
DELETED
|
@@ -1,65 +0,0 @@
|
|
|
1
|
-
import { describe, it, before, after } from 'node:test';
|
|
2
|
-
import assert from 'node:assert';
|
|
3
|
-
import { mkdtempSync, mkdirSync, writeFileSync, rmSync } from 'node:fs';
|
|
4
|
-
import { join } from 'node:path';
|
|
5
|
-
// loader.ts resolves the user template dir from homedir() at import time,
|
|
6
|
-
// so point HOME at a scratch dir before importing it (each test file runs
|
|
7
|
-
// in its own process under node --test).
|
|
8
|
-
const fakeHome = mkdtempSync(join(process.cwd(), '.pa-home-'));
|
|
9
|
-
process.env.HOME = fakeHome;
|
|
10
|
-
const { loadTemplates, findTemplate } = await import('./loader.js');
|
|
11
|
-
let projectRoot;
|
|
12
|
-
before(() => {
|
|
13
|
-
projectRoot = mkdtempSync(join(process.cwd(), '.pa-proj-'));
|
|
14
|
-
mkdirSync(join(projectRoot, '.prompts'));
|
|
15
|
-
writeFileSync(join(projectRoot, '.prompts', 'review.md'), 'Review {{file}}');
|
|
16
|
-
writeFileSync(join(projectRoot, '.prompts', 'notes.txt'), 'not a template');
|
|
17
|
-
mkdirSync(join(fakeHome, '.prompts'));
|
|
18
|
-
writeFileSync(join(fakeHome, '.prompts', 'review.md'), 'User review {{file}}');
|
|
19
|
-
writeFileSync(join(fakeHome, '.prompts', 'global.md'), 'Global {{x}}');
|
|
20
|
-
});
|
|
21
|
-
after(() => {
|
|
22
|
-
rmSync(projectRoot, { recursive: true, force: true });
|
|
23
|
-
rmSync(fakeHome, { recursive: true, force: true });
|
|
24
|
-
});
|
|
25
|
-
describe('loadTemplates', () => {
|
|
26
|
-
it('loads only .md files from the project .prompts dir', () => {
|
|
27
|
-
const names = loadTemplates(projectRoot).map(t => t.name);
|
|
28
|
-
assert.ok(names.includes('review'));
|
|
29
|
-
assert.ok(!names.includes('notes'));
|
|
30
|
-
});
|
|
31
|
-
it('project templates override user templates with the same name', () => {
|
|
32
|
-
const review = loadTemplates(projectRoot).find(t => t.name === 'review');
|
|
33
|
-
assert.strictEqual(review?.source, 'project');
|
|
34
|
-
assert.strictEqual(review?.content, 'Review {{file}}');
|
|
35
|
-
});
|
|
36
|
-
it('includes user templates not shadowed by the project', () => {
|
|
37
|
-
const global = loadTemplates(projectRoot).find(t => t.name === 'global');
|
|
38
|
-
assert.strictEqual(global?.source, 'user');
|
|
39
|
-
assert.strictEqual(global?.content, 'Global {{x}}');
|
|
40
|
-
});
|
|
41
|
-
it('returns user templates when the project has no .prompts dir', () => {
|
|
42
|
-
const empty = mkdtempSync(join(process.cwd(), '.pa-empty-'));
|
|
43
|
-
try {
|
|
44
|
-
const templates = loadTemplates(empty);
|
|
45
|
-
assert.ok(templates.every(t => t.source === 'user'));
|
|
46
|
-
assert.ok(templates.some(t => t.name === 'review'));
|
|
47
|
-
}
|
|
48
|
-
finally {
|
|
49
|
-
rmSync(empty, { recursive: true, force: true });
|
|
50
|
-
}
|
|
51
|
-
});
|
|
52
|
-
it('records the template path', () => {
|
|
53
|
-
const review = findTemplate('review', projectRoot);
|
|
54
|
-
assert.strictEqual(review?.path, join(projectRoot, '.prompts', 'review.md'));
|
|
55
|
-
});
|
|
56
|
-
});
|
|
57
|
-
describe('findTemplate', () => {
|
|
58
|
-
it('finds a template by name', () => {
|
|
59
|
-
assert.strictEqual(findTemplate('global', projectRoot)?.name, 'global');
|
|
60
|
-
});
|
|
61
|
-
it('returns undefined for unknown names', () => {
|
|
62
|
-
assert.strictEqual(findTemplate('nope', projectRoot), undefined);
|
|
63
|
-
});
|
|
64
|
-
});
|
|
65
|
-
//# sourceMappingURL=loader.test.js.map
|
package/dist/loader.test.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"loader.test.js","sourceRoot":"","sources":["../src/loader.test.ts"],"names":[],"mappings":"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"}
|
package/dist/parser.test.d.ts
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export {};
|