@noir-ai/cli 1.11.0 → 1.11.1

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.
Files changed (41) hide show
  1. package/README.md +4 -3
  2. package/dist/bin.js +19 -16
  3. package/dist/bin.js.map +1 -1
  4. package/dist/{chunk-CN3KUSQT.js → chunk-CT6TYLHN.js} +4 -3
  5. package/dist/chunk-CT6TYLHN.js.map +1 -0
  6. package/dist/{chunk-S2PDLS4C.js → chunk-I2R55ACD.js} +4 -2
  7. package/dist/{chunk-S2PDLS4C.js.map → chunk-I2R55ACD.js.map} +1 -1
  8. package/dist/{chunk-Y4M2YC6U.js → chunk-QIVHIKYD.js} +3 -3
  9. package/dist/{chunk-US567S5T.js → chunk-RON2XESF.js} +2 -2
  10. package/dist/{create-DJ6B5K36.js → create-VK2QMXYS.js} +3 -3
  11. package/dist/index.js +2 -2
  12. package/dist/{install-X7QSYLLS.js → install-4U4UDDNE.js} +3 -3
  13. package/dist/{sync-FKWXQOWT.js → sync-VXZKODQA.js} +3 -3
  14. package/dist/tui/{chunk-2KJ27HGA.js → chunk-F6XRS72N.js} +4 -3
  15. package/dist/tui/chunk-F6XRS72N.js.map +1 -0
  16. package/dist/tui/{chunk-4OBUMHF6.js → chunk-NLK6UNIA.js} +3 -3
  17. package/dist/tui/{chunk-R6246ISQ.js → chunk-QF6777NJ.js} +2 -2
  18. package/dist/tui/{chunk-MD6WXZBF.js → chunk-R5YX44UL.js} +4 -2
  19. package/dist/tui/{chunk-MD6WXZBF.js.map → chunk-R5YX44UL.js.map} +1 -1
  20. package/dist/tui/{create-CFAXIIYW.js → create-WKFVM237.js} +3 -3
  21. package/dist/tui/index.js +185 -153
  22. package/dist/tui/index.js.map +1 -1
  23. package/dist/tui/{install-HZKZXBQD.js → install-JR6ZXNYA.js} +3 -3
  24. package/dist/tui/{sync-Y7MTQ4JC.js → sync-DUWJAF7Z.js} +3 -3
  25. package/dist/tui/{update-OM2EP2F5.js → update-PGAM6OVL.js} +4 -4
  26. package/dist/{update-S3IZXXKO.js → update-ZDAVLOXB.js} +4 -4
  27. package/package.json +12 -12
  28. package/dist/chunk-CN3KUSQT.js.map +0 -1
  29. package/dist/tui/chunk-2KJ27HGA.js.map +0 -1
  30. /package/dist/{chunk-Y4M2YC6U.js.map → chunk-QIVHIKYD.js.map} +0 -0
  31. /package/dist/{chunk-US567S5T.js.map → chunk-RON2XESF.js.map} +0 -0
  32. /package/dist/{create-DJ6B5K36.js.map → create-VK2QMXYS.js.map} +0 -0
  33. /package/dist/{install-X7QSYLLS.js.map → install-4U4UDDNE.js.map} +0 -0
  34. /package/dist/{sync-FKWXQOWT.js.map → sync-VXZKODQA.js.map} +0 -0
  35. /package/dist/tui/{chunk-4OBUMHF6.js.map → chunk-NLK6UNIA.js.map} +0 -0
  36. /package/dist/tui/{chunk-R6246ISQ.js.map → chunk-QF6777NJ.js.map} +0 -0
  37. /package/dist/tui/{create-CFAXIIYW.js.map → create-WKFVM237.js.map} +0 -0
  38. /package/dist/tui/{install-HZKZXBQD.js.map → install-JR6ZXNYA.js.map} +0 -0
  39. /package/dist/tui/{sync-Y7MTQ4JC.js.map → sync-DUWJAF7Z.js.map} +0 -0
  40. /package/dist/tui/{update-OM2EP2F5.js.map → update-PGAM6OVL.js.map} +0 -0
  41. /package/dist/{update-S3IZXXKO.js.map → update-ZDAVLOXB.js.map} +0 -0
package/README.md CHANGED
@@ -27,14 +27,14 @@ Requires Node ≥ 22.
27
27
  cd /path/to/your/project
28
28
  noir init # scaffolds .noir/ + host wiring + skills where supported
29
29
 
30
- # 2. Open the project in Claude Code (the v1 host) → it auto-spawns the Noir MCP server.
30
+ # 2. Open the project in Claude Code (the default host) → it auto-spawns the Noir MCP server.
31
31
  ```
32
32
 
33
33
  `noir init` defaults to Claude: it creates `.noir/` (project id, `config.yml`, `NOIR.md`, the SQLite store), root `.mcp.json`, a managed `CLAUDE.md` `@import` block, and the **27 native `noir-*` skills** (26 builtins + 1 integration) in `.claude/skills/`. Pass `--host` for agents-md, Gemini, Cursor, or OpenCode; only Claude and Cursor emit skills. There is no plugin and no marketplace — `noir init` / `noir sync` overwrite the managed `noir-*` namespace idempotently.
34
34
 
35
35
  ## Commands
36
36
 
37
- `noir` (home menu / `status --json`), `status [--json]`, `init`, `sync`, `mcp serve [--stdio]`, `daemon {start|stop|status|restart}`, `context {search|index|status}`, `memory {recall|save|sessions|forget|consolidate}`, `skills {list|sync}`, `task {new|status|advance|next}`, `handoff [--write]`, `wrap [--write]`, `tui`, `doctor`.
37
+ `noir` (home menu / `status --json`), `status [--json]`, `init`, `create [dir]`, `sync`, `run [prompt...]`, `release [version]`, `mcp serve [--stdio]`, `daemon {start|stop|status|restart}`, `context {search|index|status}`, `memory {recall|save|sessions|forget|consolidate}`, `skills {list|sync|lint|registry}`, `task {new|status|advance|next|decompose|verify|research|research-record|resume|block|abandon}`, `handoff [--write]`, `wrap [--write]`, `install|migrate`, `update`, `tui`, `palette`, `doctor`.
38
38
 
39
39
  Global flags: `--json`, `--no-input`, `--quiet`, `--verbose`, `--cwd`. Data → stdout, diagnostics → stderr. Exit codes: `0` ok · `1` error · `2` usage · `3` not-found · `4` daemon-down · `5` cancelled.
40
40
 
@@ -44,7 +44,8 @@ This package is the CLI shell. Noir is a pnpm monorepo of 11 `@noir-ai/*` packag
44
44
 
45
45
  - **Full toolkit overview:** [root README](../../README.md)
46
46
  - **Getting-started walkthrough:** [docs/getting-started.md](../../docs/getting-started.md)
47
- - **Command reference + config schema:** [docs/usage.md](../../docs/reference/cli.md)
47
+ - **Command reference:** [docs/reference/cli.md](../../docs/reference/cli.md)
48
+ - **Config schema:** [docs/reference/config.md](../../docs/reference/config.md)
48
49
  - **Roadmap & status:** [docs/roadmap/](../../docs/roadmap/)
49
50
  - **Releasing (npm token + provenance):** [docs/releasing.md](../../docs/how-to/releasing.md)
50
51
 
package/dist/bin.js CHANGED
@@ -6,12 +6,12 @@ import {
6
6
  DEFAULT_UPDATE_CONFIG,
7
7
  buildUpdateNotice,
8
8
  runAsyncUpdateCheck
9
- } from "./chunk-Y4M2YC6U.js";
10
- import "./chunk-US567S5T.js";
9
+ } from "./chunk-QIVHIKYD.js";
10
+ import "./chunk-RON2XESF.js";
11
11
  import {
12
12
  doctor,
13
13
  init
14
- } from "./chunk-CN3KUSQT.js";
14
+ } from "./chunk-CT6TYLHN.js";
15
15
  import {
16
16
  EXIT,
17
17
  NoirCliError,
@@ -33,7 +33,7 @@ import {
33
33
  tip,
34
34
  useColor,
35
35
  warn
36
- } from "./chunk-S2PDLS4C.js";
36
+ } from "./chunk-I2R55ACD.js";
37
37
 
38
38
  // src/bin.ts
39
39
  import { realpathSync } from "fs";
@@ -2937,7 +2937,7 @@ function createProgram() {
2937
2937
  const force = opts.force === true;
2938
2938
  const host = parseHost(opts.host);
2939
2939
  const dryRun = opts.dryRun === true || opts.preview === true;
2940
- const { create } = await import("./create-DJ6B5K36.js");
2940
+ const { create } = await import("./create-VK2QMXYS.js");
2941
2941
  const result = await create(dir, {
2942
2942
  transport,
2943
2943
  url: opts.url,
@@ -2976,7 +2976,7 @@ function createProgram() {
2976
2976
  ).choices(SUPPORTED_HOSTS2)
2977
2977
  ).action(
2978
2978
  async (opts, cmd) => {
2979
- const { sync } = await import("./sync-FKWXQOWT.js");
2979
+ const { sync } = await import("./sync-VXZKODQA.js");
2980
2980
  const host = parseHost(opts.host);
2981
2981
  const force = opts.force === true;
2982
2982
  const merge = opts.merge === true;
@@ -3038,7 +3038,7 @@ function createProgram() {
3038
3038
  program2.command("status").description("project + daemon + workflow + store snapshot").action(async (...args) => {
3039
3039
  await status(toStatusOptions(actionGlobals(args)));
3040
3040
  });
3041
- const contextGrp = program2.command("context").description("context engine (S6)");
3041
+ const contextGrp = program2.command("context").description("context engine");
3042
3042
  contextGrp.command("search").description("hybrid search over the indexed context").argument("<query>", "search query").option("--limit <n>", "max results", "10").action(async (...args) => {
3043
3043
  const cmd = trailingCmd(args);
3044
3044
  const g = cmd.optsWithGlobals();
@@ -3127,17 +3127,17 @@ function createProgram() {
3127
3127
  "Usage: noir memory recall|save|sessions|forget|consolidate"
3128
3128
  );
3129
3129
  });
3130
- const skillsGrp = program2.command("skills").description("builtin skills (S5)");
3130
+ const skillsGrp = program2.command("skills").description("builtin skills");
3131
3131
  skillsGrp.command("list").description("list installed Noir skills").action(async (...args) => {
3132
3132
  await skillsList(toCliOptions(actionGlobals(args)));
3133
3133
  });
3134
3134
  skillsGrp.command("sync").description("re-emit skills to the host skills dir").action(async (...args) => {
3135
3135
  await skillsSync(toCliOptions(actionGlobals(args)));
3136
3136
  });
3137
- skillsGrp.command("lint").description("structural quality gate over the shipped pack (C3)").action(async (...args) => {
3137
+ skillsGrp.command("lint").description("structural quality gate over the shipped pack").action(async (...args) => {
3138
3138
  await skillsLint(toCliOptions(actionGlobals(args)));
3139
3139
  });
3140
- skillsGrp.command("registry").description("emit the runtime-derived skill registry (C3)").action(async (...args) => {
3140
+ skillsGrp.command("registry").description("emit the runtime-derived skill registry").action(async (...args) => {
3141
3141
  await skillsRegistry(toCliOptions(actionGlobals(args)));
3142
3142
  });
3143
3143
  skillsGrp.action(() => {
@@ -3187,7 +3187,7 @@ function createProgram() {
3187
3187
  });
3188
3188
  taskGrp.command("decompose").description(
3189
3189
  "decompose a capability into buildable slices (template-only offline; see the spec)"
3190
- ).argument("<capability>", "capability id, e.g. C4").option("--out <path>", "output path for the SlicePlan JSON").action(async (...args) => {
3190
+ ).argument("<capability>", "capability id").option("--out <path>", "output path for the slice-plan JSON").action(async (...args) => {
3191
3191
  const cmd = trailingCmd(args);
3192
3192
  const g = cmd.optsWithGlobals();
3193
3193
  const capability = typeof args[0] === "string" ? args[0] : "";
@@ -3279,7 +3279,7 @@ function createProgram() {
3279
3279
  "dismiss the migration banner for the current version (persists in install.json)"
3280
3280
  ).argument("[spec]", "channel ('latest'|'beta') or exact version (default: latest)").action(
3281
3281
  async (spec, opts, cmd) => {
3282
- const { install } = await import("./install-X7QSYLLS.js");
3282
+ const { install } = await import("./install-4U4UDDNE.js");
3283
3283
  const cli = cmd.optsWithGlobals();
3284
3284
  await install({
3285
3285
  ...cli,
@@ -3292,7 +3292,7 @@ function createProgram() {
3292
3292
  );
3293
3293
  installCmd.alias("migrate");
3294
3294
  program2.command("update").description("update Noir to the latest version via the active install method").option("--check", "check for a new version without changing anything").argument("[spec]", "channel ('latest'|'beta') or exact version (default: latest)").action(async (spec, opts, cmd) => {
3295
- const { update } = await import("./update-S3IZXXKO.js");
3295
+ const { update } = await import("./update-ZDAVLOXB.js");
3296
3296
  const cli = cmd.optsWithGlobals();
3297
3297
  await update({ ...cli, spec, check: opts.check === true });
3298
3298
  });
@@ -3320,6 +3320,7 @@ function createProgram() {
3320
3320
  const opts = toCliOptions(g);
3321
3321
  requireInteractive(opts, "`noir tui`");
3322
3322
  const tuiUrl = new URL("./tui/index.js", import.meta.url).href;
3323
+ process.env.NODE_ENV ||= "production";
3323
3324
  const { runTui } = await import(
3324
3325
  /* @vite-ignore */
3325
3326
  tuiUrl
@@ -3339,6 +3340,7 @@ function createProgram() {
3339
3340
  const opts = toCliOptions(g);
3340
3341
  requireInteractive(opts, "`noir palette`");
3341
3342
  const tuiUrl = new URL("./tui/index.js", import.meta.url).href;
3343
+ process.env.NODE_ENV ||= "production";
3342
3344
  const { runPalette } = await import(
3343
3345
  /* @vite-ignore */
3344
3346
  tuiUrl
@@ -3353,9 +3355,10 @@ function createProgram() {
3353
3355
  };
3354
3356
  await runPalette(opts, dispatch);
3355
3357
  });
3356
- program2.command("run").description("drive the host CLI headless and render its stream-json (v2)").argument("[prompt...]", "prompt to send to the host").addOption(new Option("--host <id>", "host to drive (default claude)").choices(SUPPORTED_HOSTS2)).option("--command <binary>", "custom host binary (e.g. claude-work)").action(async (...args) => {
3357
- const g = trailingCmd(args).optsWithGlobals();
3358
- const prompt = args.filter((a) => typeof a === "string").join(" ").trim();
3358
+ program2.command("run").description("ask the host agent a question and print the answer").argument("[prompt...]", "prompt to send to the host").addOption(new Option("--host <id>", "host to drive (default claude)").choices(SUPPORTED_HOSTS2)).option("--command <binary>", "custom host binary (e.g. claude-work)").action(async (...args) => {
3359
+ const cmd = trailingCmd(args);
3360
+ const g = cmd.optsWithGlobals();
3361
+ const prompt = cmd.args.join(" ").trim();
3359
3362
  const opts = {
3360
3363
  ...toCliOptions(g),
3361
3364
  ...typeof g.host === "string" ? { host: g.host } : {},