@noir-ai/cli 1.11.0-beta.1 → 1.11.1-beta.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.
- package/README.md +4 -3
- package/dist/bin.js +19 -16
- package/dist/bin.js.map +1 -1
- package/dist/{chunk-CN3KUSQT.js → chunk-CT6TYLHN.js} +4 -3
- package/dist/chunk-CT6TYLHN.js.map +1 -0
- package/dist/{chunk-S2PDLS4C.js → chunk-I2R55ACD.js} +4 -2
- package/dist/{chunk-S2PDLS4C.js.map → chunk-I2R55ACD.js.map} +1 -1
- package/dist/{chunk-Y4M2YC6U.js → chunk-QIVHIKYD.js} +3 -3
- package/dist/{chunk-US567S5T.js → chunk-RON2XESF.js} +2 -2
- package/dist/{create-DJ6B5K36.js → create-VK2QMXYS.js} +3 -3
- package/dist/index.js +2 -2
- package/dist/{install-X7QSYLLS.js → install-4U4UDDNE.js} +3 -3
- package/dist/{sync-FKWXQOWT.js → sync-VXZKODQA.js} +3 -3
- package/dist/tui/{chunk-2KJ27HGA.js → chunk-F6XRS72N.js} +4 -3
- package/dist/tui/chunk-F6XRS72N.js.map +1 -0
- package/dist/tui/{chunk-4OBUMHF6.js → chunk-NLK6UNIA.js} +3 -3
- package/dist/tui/{chunk-R6246ISQ.js → chunk-QF6777NJ.js} +2 -2
- package/dist/tui/{chunk-MD6WXZBF.js → chunk-R5YX44UL.js} +4 -2
- package/dist/tui/{chunk-MD6WXZBF.js.map → chunk-R5YX44UL.js.map} +1 -1
- package/dist/tui/{create-CFAXIIYW.js → create-WKFVM237.js} +3 -3
- package/dist/tui/index.js +185 -153
- package/dist/tui/index.js.map +1 -1
- package/dist/tui/{install-HZKZXBQD.js → install-JR6ZXNYA.js} +3 -3
- package/dist/tui/{sync-Y7MTQ4JC.js → sync-DUWJAF7Z.js} +3 -3
- package/dist/tui/{update-OM2EP2F5.js → update-PGAM6OVL.js} +4 -4
- package/dist/{update-S3IZXXKO.js → update-ZDAVLOXB.js} +4 -4
- package/package.json +12 -12
- package/dist/chunk-CN3KUSQT.js.map +0 -1
- package/dist/tui/chunk-2KJ27HGA.js.map +0 -1
- /package/dist/{chunk-Y4M2YC6U.js.map → chunk-QIVHIKYD.js.map} +0 -0
- /package/dist/{chunk-US567S5T.js.map → chunk-RON2XESF.js.map} +0 -0
- /package/dist/{create-DJ6B5K36.js.map → create-VK2QMXYS.js.map} +0 -0
- /package/dist/{install-X7QSYLLS.js.map → install-4U4UDDNE.js.map} +0 -0
- /package/dist/{sync-FKWXQOWT.js.map → sync-VXZKODQA.js.map} +0 -0
- /package/dist/tui/{chunk-4OBUMHF6.js.map → chunk-NLK6UNIA.js.map} +0 -0
- /package/dist/tui/{chunk-R6246ISQ.js.map → chunk-QF6777NJ.js.map} +0 -0
- /package/dist/tui/{create-CFAXIIYW.js.map → create-WKFVM237.js.map} +0 -0
- /package/dist/tui/{install-HZKZXBQD.js.map → install-JR6ZXNYA.js.map} +0 -0
- /package/dist/tui/{sync-Y7MTQ4JC.js.map → sync-DUWJAF7Z.js.map} +0 -0
- /package/dist/tui/{update-OM2EP2F5.js.map → update-PGAM6OVL.js.map} +0 -0
- /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
|
|
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
|
|
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-
|
|
10
|
-
import "./chunk-
|
|
9
|
+
} from "./chunk-QIVHIKYD.js";
|
|
10
|
+
import "./chunk-RON2XESF.js";
|
|
11
11
|
import {
|
|
12
12
|
doctor,
|
|
13
13
|
init
|
|
14
|
-
} from "./chunk-
|
|
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-
|
|
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-
|
|
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-
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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-
|
|
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-
|
|
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("
|
|
3357
|
-
const
|
|
3358
|
-
const
|
|
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 } : {},
|