@nexusbloom/cli 0.9.2 → 0.9.3
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 +0 -11
- package/package.json +1 -1
- package/src/wizard.js +10 -5
package/README.md
CHANGED
|
@@ -323,17 +323,6 @@ removed rather than resolved. Relative imports like `import { helper } from
|
|
|
323
323
|
`export const coreLogic = async () => {}` and plain `function coreLogic` are all
|
|
324
324
|
supported.
|
|
325
325
|
|
|
326
|
-
## Development
|
|
327
|
-
|
|
328
|
-
```bash
|
|
329
|
-
npm test # 500+ tests, no network required
|
|
330
|
-
npm run test:coverage # with a coverage report
|
|
331
|
-
npm run test:watch # re-run on change
|
|
332
|
-
```
|
|
333
|
-
|
|
334
|
-
The suite runs fully offline and is isolated from your real config, API key and
|
|
335
|
-
network — both properties are enforced by guard tests, not assumed.
|
|
336
|
-
|
|
337
326
|
## Security Notes
|
|
338
327
|
|
|
339
328
|
- No API keys or Supabase keys are shipped inside the package.
|
package/package.json
CHANGED
package/src/wizard.js
CHANGED
|
@@ -97,8 +97,16 @@ function renderObservedOutput(fields) {
|
|
|
97
97
|
|
|
98
98
|
// ─── Prompts ─────────────────────────────────────────────────────────────────
|
|
99
99
|
|
|
100
|
+
/**
|
|
101
|
+
* Ask for a tool to add as the next step.
|
|
102
|
+
*
|
|
103
|
+
* A tool may be chosen more than once: the pipeline engine addresses steps
|
|
104
|
+
* positionally, so `base64-tool … | base64-tool text=$result action=decode`
|
|
105
|
+
* is a legal round-trip. (It was verified working before this restriction was
|
|
106
|
+
* lifted.) `exclude` remains for callers that genuinely need a subset.
|
|
107
|
+
*/
|
|
100
108
|
async function pickTool(tools, exclude = [], P = defaultPrompts) {
|
|
101
|
-
const pool = tools.filter((t) => !exclude.includes(t.slug));
|
|
109
|
+
const pool = exclude.length ? tools.filter((t) => !exclude.includes(t.slug)) : tools;
|
|
102
110
|
const source = async (term) => {
|
|
103
111
|
const hits = term ? rankTools(pool, term) : pool;
|
|
104
112
|
return hits.slice(0, 50).map((t) => ({
|
|
@@ -246,7 +254,6 @@ export async function buildWizard(opts = {}) {
|
|
|
246
254
|
|
|
247
255
|
const steps = [];
|
|
248
256
|
const outputs = [];
|
|
249
|
-
const usedSlugs = [];
|
|
250
257
|
|
|
251
258
|
for (;;) {
|
|
252
259
|
renderHeader(
|
|
@@ -254,7 +261,7 @@ export async function buildWizard(opts = {}) {
|
|
|
254
261
|
{ subtitle: steps.length ? "Pick the next tool to feed" : "Start with any tool" }
|
|
255
262
|
);
|
|
256
263
|
|
|
257
|
-
const tool = await pickTool(tools,
|
|
264
|
+
const tool = await pickTool(tools, [], P);
|
|
258
265
|
if (!tool) break;
|
|
259
266
|
|
|
260
267
|
const info = await getTool(tool.slug);
|
|
@@ -280,7 +287,6 @@ export async function buildWizard(opts = {}) {
|
|
|
280
287
|
|
|
281
288
|
const spec = `${tool.slug} ${assignments.map((a) => a.text).join(" ")}`.trim();
|
|
282
289
|
steps.push({ slug: tool.slug, spec, assignments });
|
|
283
|
-
usedSlugs.push(tool.slug);
|
|
284
290
|
|
|
285
291
|
console.log(chalk.gray(`\n Running ${spec}\n`));
|
|
286
292
|
const started = Date.now();
|
|
@@ -294,7 +300,6 @@ export async function buildWizard(opts = {}) {
|
|
|
294
300
|
// Drop the step either way: only steps that actually ran belong in the
|
|
295
301
|
// replay command we hand back.
|
|
296
302
|
steps.pop();
|
|
297
|
-
usedSlugs.pop();
|
|
298
303
|
const again = await P.confirm({ message: "Change the inputs and retry?", default: true });
|
|
299
304
|
if (again) continue;
|
|
300
305
|
break;
|