@namzu/cli 2.1.1 → 2.4.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/dist/skills/store.d.ts +38 -3
- package/dist/skills/store.d.ts.map +1 -1
- package/dist/skills/store.js +58 -24
- package/dist/skills/store.js.map +1 -1
- package/dist/tui/App.d.ts.map +1 -1
- package/dist/tui/App.js +37 -5
- package/dist/tui/App.js.map +1 -1
- package/dist/tui/Composer.d.ts +4 -1
- package/dist/tui/Composer.d.ts.map +1 -1
- package/dist/tui/Composer.js +2 -2
- package/dist/tui/Composer.js.map +1 -1
- package/dist/tui/slashCommands.d.ts +46 -1
- package/dist/tui/slashCommands.d.ts.map +1 -1
- package/dist/tui/slashCommands.js +106 -14
- package/dist/tui/slashCommands.js.map +1 -1
- package/dist/user-commands/store.d.ts +95 -0
- package/dist/user-commands/store.d.ts.map +1 -0
- package/dist/user-commands/store.js +153 -0
- package/dist/user-commands/store.js.map +1 -0
- package/package.json +3 -3
package/dist/skills/store.d.ts
CHANGED
|
@@ -17,6 +17,16 @@ export interface SkillInfo {
|
|
|
17
17
|
readonly description: string;
|
|
18
18
|
readonly path: string;
|
|
19
19
|
readonly source: SkillSource;
|
|
20
|
+
/**
|
|
21
|
+
* Why this skill cannot be used, when it cannot.
|
|
22
|
+
*
|
|
23
|
+
* A `SKILL.md` whose frontmatter does not parse is REFUSED rather than
|
|
24
|
+
* loaded with the metadata missing, but refusing it must not take the rest
|
|
25
|
+
* of the roster with it: one unreadable file in `~/.namzu/skills` would
|
|
26
|
+
* otherwise leave the operator with no skills and no reason. So it stays in
|
|
27
|
+
* the list, named, carrying the reason it is unusable.
|
|
28
|
+
*/
|
|
29
|
+
readonly problem?: string;
|
|
20
30
|
}
|
|
21
31
|
export declare function userSkillsDir(home?: string): string;
|
|
22
32
|
export declare function projectSkillsDir(cwd?: string): string;
|
|
@@ -26,10 +36,35 @@ interface ParsedSkill {
|
|
|
26
36
|
readonly body: string;
|
|
27
37
|
}
|
|
28
38
|
/**
|
|
29
|
-
* Split `SKILL.md` into frontmatter (name/description) + body.
|
|
30
|
-
*
|
|
39
|
+
* Split `SKILL.md` into frontmatter (name/description) + body.
|
|
40
|
+
*
|
|
41
|
+
* Reads through the kernel's `parseFrontmatter`, which is the point: this file
|
|
42
|
+
* used to carry its own regex, `/^---\n…\n---\n?/`, and that regex is LF-only.
|
|
43
|
+
* A `SKILL.md` saved on Windows has CRLF line endings, so the match failed, the
|
|
44
|
+
* whole file was treated as body, and the skill was listed under its directory
|
|
45
|
+
* name with `(no description)`. It did not fail — it described the skill
|
|
46
|
+
* wrongly, which is the shape that survives review.
|
|
47
|
+
*
|
|
48
|
+
* ## Absent frontmatter is fine; broken frontmatter is not
|
|
49
|
+
*
|
|
50
|
+
* These were the same case here and are not the same thing. A file with no
|
|
51
|
+
* frontmatter is a documented, supported shape (`docs/cli/skills.md`): the body
|
|
52
|
+
* is the skill. A file that opens a fence and then fails to parse is an author
|
|
53
|
+
* who tried to write metadata and got it wrong, and answering that with "no
|
|
54
|
+
* metadata, carry on" put the broken YAML into the body — and from there
|
|
55
|
+
* verbatim into the system prompt.
|
|
56
|
+
*
|
|
57
|
+
* So the fence decides. No fence, no parser: body only, exactly as documented.
|
|
58
|
+
* A fence present hands the file to the kernel reader, which throws rather than
|
|
59
|
+
* returning a partial result. The absence test mirrors the reader's own
|
|
60
|
+
* (`raw.trimStart().startsWith('---')`) so the two cannot disagree about what
|
|
61
|
+
* counts as having frontmatter — two readers disagreeing on that is the defect
|
|
62
|
+
* this consolidation exists to remove.
|
|
63
|
+
*
|
|
64
|
+
* @param source A label for the error message, e.g. the file's path.
|
|
65
|
+
* @throws When a fence is present and the frontmatter cannot be read.
|
|
31
66
|
*/
|
|
32
|
-
export declare function parseSkillMarkdown(raw: string): ParsedSkill;
|
|
67
|
+
export declare function parseSkillMarkdown(raw: string, source?: string): ParsedSkill;
|
|
33
68
|
/**
|
|
34
69
|
* Discover all skills, project shadowing user on name clash. Returns an
|
|
35
70
|
* empty list when no skill dirs exist.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"store.d.ts","sourceRoot":"","sources":["../../src/skills/store.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAOH,MAAM,MAAM,WAAW,GAAG,MAAM,GAAG,SAAS,CAAA;AAE5C,MAAM,WAAW,SAAS;IACzB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;IACrB,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAA;IAC5B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;IACrB,QAAQ,CAAC,MAAM,EAAE,WAAW,CAAA;
|
|
1
|
+
{"version":3,"file":"store.d.ts","sourceRoot":"","sources":["../../src/skills/store.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAOH,MAAM,MAAM,WAAW,GAAG,MAAM,GAAG,SAAS,CAAA;AAE5C,MAAM,WAAW,SAAS;IACzB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;IACrB,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAA;IAC5B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;IACrB,QAAQ,CAAC,MAAM,EAAE,WAAW,CAAA;IAC5B;;;;;;;;OAQG;IACH,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,CAAA;CACzB;AAED,wBAAgB,aAAa,CAAC,IAAI,GAAE,MAAkB,GAAG,MAAM,CAE9D;AAED,wBAAgB,gBAAgB,CAAC,GAAG,GAAE,MAAsB,GAAG,MAAM,CAEpE;AAED,UAAU,WAAW;IACpB,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,CAAA;IACtB,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,CAAA;IAC7B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;CACrB;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;AACH,wBAAgB,kBAAkB,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,SAAa,GAAG,WAAW,CAahF;AA8CD;;;GAGG;AACH,wBAAgB,cAAc,CAAC,IAAI,GAAE;IAAE,IAAI,CAAC,EAAE,MAAM,CAAC;IAAC,GAAG,CAAC,EAAE,MAAM,CAAA;CAAO,GAAG,SAAS,EAAE,CAOtF;AAED,2DAA2D;AAC3D,wBAAgB,aAAa,CAAC,IAAI,EAAE,SAAS,GAAG,MAAM,CAGrD;AAED,4EAA4E;AAC5E,wBAAgB,mBAAmB,CAClC,MAAM,EAAE,aAAa,CAAC;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,CAAC,GACnD,MAAM,GAAG,IAAI,CASf"}
|
package/dist/skills/store.js
CHANGED
|
@@ -14,7 +14,7 @@
|
|
|
14
14
|
import { readFileSync, readdirSync } from 'node:fs';
|
|
15
15
|
import { homedir } from 'node:os';
|
|
16
16
|
import { join } from 'node:path';
|
|
17
|
-
import {
|
|
17
|
+
import { parseFrontmatter } from '@namzu/sdk';
|
|
18
18
|
export function userSkillsDir(home = homedir()) {
|
|
19
19
|
return join(home, '.namzu', 'skills');
|
|
20
20
|
}
|
|
@@ -22,29 +22,45 @@ export function projectSkillsDir(cwd = process.cwd()) {
|
|
|
22
22
|
return join(cwd, 'skills');
|
|
23
23
|
}
|
|
24
24
|
/**
|
|
25
|
-
* Split `SKILL.md` into frontmatter (name/description) + body.
|
|
26
|
-
*
|
|
25
|
+
* Split `SKILL.md` into frontmatter (name/description) + body.
|
|
26
|
+
*
|
|
27
|
+
* Reads through the kernel's `parseFrontmatter`, which is the point: this file
|
|
28
|
+
* used to carry its own regex, `/^---\n…\n---\n?/`, and that regex is LF-only.
|
|
29
|
+
* A `SKILL.md` saved on Windows has CRLF line endings, so the match failed, the
|
|
30
|
+
* whole file was treated as body, and the skill was listed under its directory
|
|
31
|
+
* name with `(no description)`. It did not fail — it described the skill
|
|
32
|
+
* wrongly, which is the shape that survives review.
|
|
33
|
+
*
|
|
34
|
+
* ## Absent frontmatter is fine; broken frontmatter is not
|
|
35
|
+
*
|
|
36
|
+
* These were the same case here and are not the same thing. A file with no
|
|
37
|
+
* frontmatter is a documented, supported shape (`docs/cli/skills.md`): the body
|
|
38
|
+
* is the skill. A file that opens a fence and then fails to parse is an author
|
|
39
|
+
* who tried to write metadata and got it wrong, and answering that with "no
|
|
40
|
+
* metadata, carry on" put the broken YAML into the body — and from there
|
|
41
|
+
* verbatim into the system prompt.
|
|
42
|
+
*
|
|
43
|
+
* So the fence decides. No fence, no parser: body only, exactly as documented.
|
|
44
|
+
* A fence present hands the file to the kernel reader, which throws rather than
|
|
45
|
+
* returning a partial result. The absence test mirrors the reader's own
|
|
46
|
+
* (`raw.trimStart().startsWith('---')`) so the two cannot disagree about what
|
|
47
|
+
* counts as having frontmatter — two readers disagreeing on that is the defect
|
|
48
|
+
* this consolidation exists to remove.
|
|
49
|
+
*
|
|
50
|
+
* @param source A label for the error message, e.g. the file's path.
|
|
51
|
+
* @throws When a fence is present and the frontmatter cannot be read.
|
|
27
52
|
*/
|
|
28
|
-
export function parseSkillMarkdown(raw) {
|
|
29
|
-
|
|
30
|
-
if (!match)
|
|
53
|
+
export function parseSkillMarkdown(raw, source = 'SKILL.md') {
|
|
54
|
+
if (!raw.trimStart().startsWith('---'))
|
|
31
55
|
return { body: raw.trim() };
|
|
32
|
-
const
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
if (typeof meta.description === 'string')
|
|
41
|
-
description = meta.description;
|
|
42
|
-
}
|
|
43
|
-
}
|
|
44
|
-
catch {
|
|
45
|
-
// Malformed frontmatter → treat as no metadata; body still usable.
|
|
46
|
-
}
|
|
47
|
-
return { name, description, body: (body ?? '').trim() };
|
|
56
|
+
const { values, body } = parseFrontmatter(raw, source);
|
|
57
|
+
// A non-scalar `name` or `description` is dropped rather than rendered:
|
|
58
|
+
// there is no sensible string for a block of indented pairs, and the
|
|
59
|
+
// fallbacks below (directory name, "(no description)") are the honest
|
|
60
|
+
// answer for a key that did not carry one.
|
|
61
|
+
const name = values.name?.kind === 'scalar' ? values.name.value : undefined;
|
|
62
|
+
const description = values.description?.kind === 'scalar' ? values.description.value : undefined;
|
|
63
|
+
return { name, description, body };
|
|
48
64
|
}
|
|
49
65
|
function readSkillsFrom(dir, source) {
|
|
50
66
|
let entries;
|
|
@@ -66,7 +82,23 @@ function readSkillsFrom(dir, source) {
|
|
|
66
82
|
catch {
|
|
67
83
|
continue;
|
|
68
84
|
}
|
|
69
|
-
|
|
85
|
+
let parsed;
|
|
86
|
+
try {
|
|
87
|
+
parsed = parseSkillMarkdown(raw, path);
|
|
88
|
+
}
|
|
89
|
+
catch (err) {
|
|
90
|
+
// Refused, but still listed. One unreadable file must not empty the
|
|
91
|
+
// roster and leave the operator without a reason — the whole point of
|
|
92
|
+
// refusing instead of degrading is that somebody gets told.
|
|
93
|
+
skills.push({
|
|
94
|
+
name: dirName,
|
|
95
|
+
description: '(could not be read)',
|
|
96
|
+
path,
|
|
97
|
+
source,
|
|
98
|
+
problem: err instanceof Error ? err.message : String(err),
|
|
99
|
+
});
|
|
100
|
+
continue;
|
|
101
|
+
}
|
|
70
102
|
skills.push({
|
|
71
103
|
name: parsed.name ?? dirName,
|
|
72
104
|
description: parsed.description ?? '(no description)',
|
|
@@ -92,7 +124,9 @@ export function discoverSkills(opts = {}) {
|
|
|
92
124
|
}
|
|
93
125
|
/** Read a skill's markdown body (frontmatter stripped). */
|
|
94
126
|
export function loadSkillBody(info) {
|
|
95
|
-
|
|
127
|
+
if (info.problem)
|
|
128
|
+
throw new Error(info.problem);
|
|
129
|
+
return parseSkillMarkdown(readFileSync(info.path, 'utf8'), info.path).body;
|
|
96
130
|
}
|
|
97
131
|
/** Compose the active-skills system block, or null when none are active. */
|
|
98
132
|
export function composeSkillsPrompt(active) {
|
package/dist/skills/store.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"store.js","sourceRoot":"","sources":["../../src/skills/store.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAEH,OAAO,EAAE,YAAY,EAAE,WAAW,EAAE,MAAM,SAAS,CAAA;AACnD,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAA;AACjC,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAA;AAChC,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"store.js","sourceRoot":"","sources":["../../src/skills/store.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAEH,OAAO,EAAE,YAAY,EAAE,WAAW,EAAE,MAAM,SAAS,CAAA;AACnD,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAA;AACjC,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAA;AAChC,OAAO,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAA;AAqB7C,MAAM,UAAU,aAAa,CAAC,OAAe,OAAO,EAAE;IACrD,OAAO,IAAI,CAAC,IAAI,EAAE,QAAQ,EAAE,QAAQ,CAAC,CAAA;AACtC,CAAC;AAED,MAAM,UAAU,gBAAgB,CAAC,MAAc,OAAO,CAAC,GAAG,EAAE;IAC3D,OAAO,IAAI,CAAC,GAAG,EAAE,QAAQ,CAAC,CAAA;AAC3B,CAAC;AAQD;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;AACH,MAAM,UAAU,kBAAkB,CAAC,GAAW,EAAE,MAAM,GAAG,UAAU;IAClE,IAAI,CAAC,GAAG,CAAC,SAAS,EAAE,CAAC,UAAU,CAAC,KAAK,CAAC;QAAE,OAAO,EAAE,IAAI,EAAE,GAAG,CAAC,IAAI,EAAE,EAAE,CAAA;IAEnE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,GAAG,gBAAgB,CAAC,GAAG,EAAE,MAAM,CAAC,CAAA;IAEtD,wEAAwE;IACxE,qEAAqE;IACrE,sEAAsE;IACtE,2CAA2C;IAC3C,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,EAAE,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS,CAAA;IAC3E,MAAM,WAAW,GAAG,MAAM,CAAC,WAAW,EAAE,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS,CAAA;IAEhG,OAAO,EAAE,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE,CAAA;AACnC,CAAC;AAED,SAAS,cAAc,CAAC,GAAW,EAAE,MAAmB;IACvD,IAAI,OAAiB,CAAA;IACrB,IAAI,CAAC;QACJ,OAAO,GAAG,WAAW,CAAC,GAAG,EAAE,EAAE,aAAa,EAAE,IAAI,EAAE,CAAC;aACjD,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC;aAC9B,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAA;IACrB,CAAC;IAAC,MAAM,CAAC;QACR,OAAO,EAAE,CAAA;IACV,CAAC;IACD,MAAM,MAAM,GAAgB,EAAE,CAAA;IAC9B,KAAK,MAAM,OAAO,IAAI,OAAO,EAAE,CAAC;QAC/B,MAAM,IAAI,GAAG,IAAI,CAAC,GAAG,EAAE,OAAO,EAAE,UAAU,CAAC,CAAA;QAC3C,IAAI,GAAW,CAAA;QACf,IAAI,CAAC;YACJ,GAAG,GAAG,YAAY,CAAC,IAAI,EAAE,MAAM,CAAC,CAAA;QACjC,CAAC;QAAC,MAAM,CAAC;YACR,SAAQ;QACT,CAAC;QACD,IAAI,MAAmB,CAAA;QACvB,IAAI,CAAC;YACJ,MAAM,GAAG,kBAAkB,CAAC,GAAG,EAAE,IAAI,CAAC,CAAA;QACvC,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACd,oEAAoE;YACpE,sEAAsE;YACtE,4DAA4D;YAC5D,MAAM,CAAC,IAAI,CAAC;gBACX,IAAI,EAAE,OAAO;gBACb,WAAW,EAAE,qBAAqB;gBAClC,IAAI;gBACJ,MAAM;gBACN,OAAO,EAAE,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC;aACzD,CAAC,CAAA;YACF,SAAQ;QACT,CAAC;QACD,MAAM,CAAC,IAAI,CAAC;YACX,IAAI,EAAE,MAAM,CAAC,IAAI,IAAI,OAAO;YAC5B,WAAW,EAAE,MAAM,CAAC,WAAW,IAAI,kBAAkB;YACrD,IAAI;YACJ,MAAM;SACN,CAAC,CAAA;IACH,CAAC;IACD,OAAO,MAAM,CAAA;AACd,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,cAAc,CAAC,OAAwC,EAAE;IACxE,MAAM,IAAI,GAAG,cAAc,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC,CAAA;IAC7D,MAAM,OAAO,GAAG,cAAc,CAAC,gBAAgB,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,SAAS,CAAC,CAAA;IACrE,MAAM,MAAM,GAAG,IAAI,GAAG,EAAqB,CAAA;IAC3C,KAAK,MAAM,CAAC,IAAI,IAAI;QAAE,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAA;IAC3C,KAAK,MAAM,CAAC,IAAI,OAAO;QAAE,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAA,CAAC,eAAe;IAC9D,OAAO,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAA;AACzE,CAAC;AAED,2DAA2D;AAC3D,MAAM,UAAU,aAAa,CAAC,IAAe;IAC5C,IAAI,IAAI,CAAC,OAAO;QAAE,MAAM,IAAI,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,CAAA;IAC/C,OAAO,kBAAkB,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,EAAE,MAAM,CAAC,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC,IAAI,CAAA;AAC3E,CAAC;AAED,4EAA4E;AAC5E,MAAM,UAAU,mBAAmB,CAClC,MAAqD;IAErD,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,IAAI,CAAA;IACpC,MAAM,MAAM,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,cAAc,CAAC,CAAC,IAAI,OAAO,CAAC,CAAC,IAAI,EAAE,CAAC,CAAA;IACrE,OAAO;QACN,wEAAwE;QACxE,4BAA4B;QAC5B,EAAE;QACF,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC;KACnB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;AACb,CAAC"}
|
package/dist/tui/App.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"App.d.ts","sourceRoot":"","sources":["../../src/tui/App.tsx"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;
|
|
1
|
+
{"version":3,"file":"App.d.ts","sourceRoot":"","sources":["../../src/tui/App.tsx"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAuDH,OAAO,KAAK,EAAqB,UAAU,EAAE,MAAM,YAAY,CAAA;AAE/D,MAAM,WAAW,QAAQ;IACxB,QAAQ,CAAC,GAAG,EAAE,UAAU,CAAA;CACxB;AAWD,wBAAgB,GAAG,CAAC,EAAE,GAAG,EAAE,EAAE,QAAQ,2CA0zBpC"}
|
package/dist/tui/App.js
CHANGED
|
@@ -20,7 +20,8 @@ import { createAssistantMessage, createUserMessage } from '@namzu/sdk';
|
|
|
20
20
|
import { appendMessages, listRecent, loadConversation, openSessions, startConversation, } from '../integrations/sessions/store.js';
|
|
21
21
|
import { createAgentSession, probeAgentSession, } from './agent.js';
|
|
22
22
|
import { ResumePicker } from './ResumePicker.js';
|
|
23
|
-
import {
|
|
23
|
+
import { discoverUserCommands } from '../user-commands/store.js';
|
|
24
|
+
import { SLASH_COMMANDS, runSlash } from './slashCommands.js';
|
|
24
25
|
import { theme } from './theme.js';
|
|
25
26
|
export function App({ ctx }) {
|
|
26
27
|
const { exit } = useApp();
|
|
@@ -33,6 +34,11 @@ export function App({ ctx }) {
|
|
|
33
34
|
const [currentProvider, setCurrentProvider] = useState(null);
|
|
34
35
|
const [permission, setPermission] = useState(null);
|
|
35
36
|
const [activeSkills, setActiveSkills] = useState([]);
|
|
37
|
+
// Read when the session comes up rather than on every keystroke: the
|
|
38
|
+
// autocomplete dropdown consults this on each character, and a `readdirSync`
|
|
39
|
+
// per keypress is a cost nobody asked for. A file added mid-session is
|
|
40
|
+
// picked up by `/model` (which re-hydrates) or a restart.
|
|
41
|
+
const [userCommands, setUserCommands] = useState([]);
|
|
36
42
|
const [usage, setUsage] = useState(null);
|
|
37
43
|
// Context fill, straight from the kernel and held apart from `usage` —
|
|
38
44
|
// they are different quantities and conflating them is what made the
|
|
@@ -130,6 +136,13 @@ export function App({ ctx }) {
|
|
|
130
136
|
void previousSessionRef.current?.close();
|
|
131
137
|
previousSessionRef.current = s;
|
|
132
138
|
setSession(s);
|
|
139
|
+
setUserCommands(discoverUserCommands({
|
|
140
|
+
cwd: ctx.cwd,
|
|
141
|
+
// Builtins are reserved: a `help.md` must not take over `/help`.
|
|
142
|
+
// Passing the names here is what lets the loader tell its author
|
|
143
|
+
// the file is shadowed instead of leaving it silently unused.
|
|
144
|
+
reserved: SLASH_COMMANDS.map((c) => c.name),
|
|
145
|
+
}));
|
|
133
146
|
setCurrentProvider(prefs.provider);
|
|
134
147
|
if (s.hasProvider) {
|
|
135
148
|
setPhase('ready');
|
|
@@ -212,6 +225,8 @@ export function App({ ctx }) {
|
|
|
212
225
|
rules: ctx.rules ?? [],
|
|
213
226
|
},
|
|
214
227
|
agentIds: session?.agentIds ?? [],
|
|
228
|
+
instructionFiles: session?.instructionFiles ?? [],
|
|
229
|
+
userCommands,
|
|
215
230
|
};
|
|
216
231
|
// `/resume`: open the picker with this folder's recent conversations.
|
|
217
232
|
const doResume = useCallback(async () => {
|
|
@@ -439,6 +454,11 @@ export function App({ ctx }) {
|
|
|
439
454
|
}, [activeSkills, applyEvent, ctx.cwd, ctx.skipPermissions, finalizeMessage, messages, onPermission, pushMessage, session]);
|
|
440
455
|
const handleSubmit = useCallback((value, images) => {
|
|
441
456
|
setHistory((prev) => [...prev, value]);
|
|
457
|
+
// What actually gets sent. A `prompt` action replaces it with text the
|
|
458
|
+
// command composed, and then takes the ordinary send path below —
|
|
459
|
+
// including the queue — so a command-driven turn is not a second way
|
|
460
|
+
// to run one.
|
|
461
|
+
let outgoing = value;
|
|
442
462
|
const slash = runSlash(value, slashCtx);
|
|
443
463
|
if (slash) {
|
|
444
464
|
switch (slash.kind) {
|
|
@@ -480,7 +500,13 @@ export function App({ ctx }) {
|
|
|
480
500
|
return;
|
|
481
501
|
}
|
|
482
502
|
const activeNames = new Set(activeSkills.map((s) => s.name));
|
|
483
|
-
const lines = skills.map((s) =>
|
|
503
|
+
const lines = skills.map((s) =>
|
|
504
|
+
// A refused skill is shown with its reason rather than hidden.
|
|
505
|
+
// Dropping it silently would leave someone wondering where a
|
|
506
|
+
// file they can see on disk went.
|
|
507
|
+
s.problem
|
|
508
|
+
? `⚠ ${s.name} — ${s.problem}`
|
|
509
|
+
: `${activeNames.has(s.name) ? '● ' : '○ '}${s.name} — ${s.description}`);
|
|
484
510
|
pushMessage('system', `Skills (● active):\n ${lines.join('\n ')}`);
|
|
485
511
|
return;
|
|
486
512
|
}
|
|
@@ -506,6 +532,12 @@ export function App({ ctx }) {
|
|
|
506
532
|
case 'resume':
|
|
507
533
|
void doResume();
|
|
508
534
|
return;
|
|
535
|
+
case 'prompt':
|
|
536
|
+
// Deliberately does NOT return: the composed text falls
|
|
537
|
+
// through to the same queue-or-send below that a typed
|
|
538
|
+
// message takes.
|
|
539
|
+
outgoing = slash.text;
|
|
540
|
+
break;
|
|
509
541
|
case 'none':
|
|
510
542
|
return;
|
|
511
543
|
}
|
|
@@ -513,10 +545,10 @@ export function App({ ctx }) {
|
|
|
513
545
|
// A turn is in flight → queue the message; it auto-sends when idle.
|
|
514
546
|
// (Queued messages are text-only; pasted images aren't carried.)
|
|
515
547
|
if (state !== 'idle') {
|
|
516
|
-
setQueued((q) => [...q,
|
|
548
|
+
setQueued((q) => [...q, outgoing]);
|
|
517
549
|
return;
|
|
518
550
|
}
|
|
519
|
-
void runTurn(
|
|
551
|
+
void runTurn(outgoing, images);
|
|
520
552
|
}, [activeSkills, doResume, exit, pushMessage, runTurn, slashCtx, state]);
|
|
521
553
|
// Drain the queue: when a turn settles (idle) and nothing is running,
|
|
522
554
|
// send the next queued message automatically.
|
|
@@ -643,7 +675,7 @@ export function App({ ctx }) {
|
|
|
643
675
|
// Background is left natural — we inherit the terminal's own background
|
|
644
676
|
// and only theme the foreground. Forcing
|
|
645
677
|
// a filled bg left mismatched patches around bordered areas, so we don't.
|
|
646
|
-
return (_jsxs(Box, { flexDirection: "column", children: [phase !== 'ready' ? (_jsx(Banner, { version: ctx.version, session: session, bypass: ctx.skipPermissions === true, cwd: ctx.cwd })) : null, _jsxs(Box, { flexDirection: "column", paddingX: 1, children: [phase === 'trust' ? (_jsx(TrustPrompt, { cwd: ctx.cwd })) : phase === 'resume' ? (_jsx(ResumePicker, { conversations: resumeList, selected: selectedResume })) : phase === 'picker' ? (_jsx(Picker, { detected: detected, currentProvider: currentProvider, onSubmit: handlePickerSubmit, onCancel: handlePickerCancel })) : (_jsxs(_Fragment, { children: [_jsx(TranscriptFrame, { children: _jsx(Transcript, { messages: messages.filter((m) => !m.pending), pending: messages.find((m) => m.pending) ?? null, state: state, expanded: expanded, resetKey: resetKey, header: phase === 'ready' ? (_jsx(Banner, { version: ctx.version, session: session, bypass: ctx.skipPermissions === true, cwd: ctx.cwd })) : undefined }) }), _jsx(LiveActivity, { activeTools: activeTools, thinking: state === 'thinking' && !messages.some((m) => m.pending) }), permission ? (_jsx(PermissionOverlay, { toolCalls: permission.toolCalls })) : (_jsxs(ComposerFrame, { focus: state === 'idle' && phase === 'ready', children: [queued.length > 0 ? (_jsx(Box, { paddingX: 1, children: _jsxs(Text, { color: theme.text.muted, children: ["\u23CE ", queued.length, " message", queued.length > 1 ? 's' : '', " queued \u2014 sending when ready"] }) })) : null, _jsx(Composer, { disabled: phase !== 'ready' || state === 'awaiting-permission', onSubmit: handleSubmit, history: history })] }))] })), _jsx(Box, { paddingTop: 1, children: _jsx(StatusBar, { cwd: ctx.cwd, provider: session?.providerSummary ?? null, model: session?.modelSummary ?? null, state: state, hint: hintForPhase(phase, state), usage: usage, context: context }) })] })] }));
|
|
678
|
+
return (_jsxs(Box, { flexDirection: "column", children: [phase !== 'ready' ? (_jsx(Banner, { version: ctx.version, session: session, bypass: ctx.skipPermissions === true, cwd: ctx.cwd })) : null, _jsxs(Box, { flexDirection: "column", paddingX: 1, children: [phase === 'trust' ? (_jsx(TrustPrompt, { cwd: ctx.cwd })) : phase === 'resume' ? (_jsx(ResumePicker, { conversations: resumeList, selected: selectedResume })) : phase === 'picker' ? (_jsx(Picker, { detected: detected, currentProvider: currentProvider, onSubmit: handlePickerSubmit, onCancel: handlePickerCancel })) : (_jsxs(_Fragment, { children: [_jsx(TranscriptFrame, { children: _jsx(Transcript, { messages: messages.filter((m) => !m.pending), pending: messages.find((m) => m.pending) ?? null, state: state, expanded: expanded, resetKey: resetKey, header: phase === 'ready' ? (_jsx(Banner, { version: ctx.version, session: session, bypass: ctx.skipPermissions === true, cwd: ctx.cwd })) : undefined }) }), _jsx(LiveActivity, { activeTools: activeTools, thinking: state === 'thinking' && !messages.some((m) => m.pending) }), permission ? (_jsx(PermissionOverlay, { toolCalls: permission.toolCalls })) : (_jsxs(ComposerFrame, { focus: state === 'idle' && phase === 'ready', children: [queued.length > 0 ? (_jsx(Box, { paddingX: 1, children: _jsxs(Text, { color: theme.text.muted, children: ["\u23CE ", queued.length, " message", queued.length > 1 ? 's' : '', " queued \u2014 sending when ready"] }) })) : null, _jsx(Composer, { disabled: phase !== 'ready' || state === 'awaiting-permission', onSubmit: handleSubmit, userCommands: userCommands, history: history })] }))] })), _jsx(Box, { paddingTop: 1, children: _jsx(StatusBar, { cwd: ctx.cwd, provider: session?.providerSummary ?? null, model: session?.modelSummary ?? null, state: state, hint: hintForPhase(phase, state), usage: usage, context: context }) })] })] }));
|
|
647
679
|
}
|
|
648
680
|
function Banner({ version, session, bypass, cwd, }) {
|
|
649
681
|
const cols = process.stdout.columns ?? 80;
|
package/dist/tui/App.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"App.js","sourceRoot":"","sources":["../../src/tui/App.tsx"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"App.js","sourceRoot":"","sources":["../../src/tui/App.tsx"],"names":[],"mappings":"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"}
|
package/dist/tui/Composer.d.ts
CHANGED
|
@@ -8,10 +8,13 @@
|
|
|
8
8
|
* else browse history, Backspace deletes.
|
|
9
9
|
*/
|
|
10
10
|
import type { ImageAttachment } from '@namzu/sdk';
|
|
11
|
+
import type { UserCommand } from '../user-commands/store.js';
|
|
11
12
|
export interface ComposerProps {
|
|
12
13
|
readonly disabled?: boolean;
|
|
13
14
|
readonly onSubmit: (value: string, images?: readonly ImageAttachment[]) => void;
|
|
14
15
|
readonly history: readonly string[];
|
|
16
|
+
/** Operator-defined commands, offered in the dropdown alongside builtins. */
|
|
17
|
+
readonly userCommands?: readonly UserCommand[];
|
|
15
18
|
}
|
|
16
|
-
export declare function Composer({ disabled, onSubmit, history }: ComposerProps): import("react/jsx-runtime").JSX.Element;
|
|
19
|
+
export declare function Composer({ disabled, onSubmit, history, userCommands, }: ComposerProps): import("react/jsx-runtime").JSX.Element;
|
|
17
20
|
//# sourceMappingURL=Composer.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Composer.d.ts","sourceRoot":"","sources":["../../src/tui/Composer.tsx"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,YAAY,CAAA;
|
|
1
|
+
{"version":3,"file":"Composer.d.ts","sourceRoot":"","sources":["../../src/tui/Composer.tsx"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,YAAY,CAAA;AAKjD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,2BAA2B,CAAA;AAI5D,MAAM,WAAW,aAAa;IAC7B,QAAQ,CAAC,QAAQ,CAAC,EAAE,OAAO,CAAA;IAC3B,QAAQ,CAAC,QAAQ,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,SAAS,eAAe,EAAE,KAAK,IAAI,CAAA;IAC/E,QAAQ,CAAC,OAAO,EAAE,SAAS,MAAM,EAAE,CAAA;IACnC,6EAA6E;IAC7E,QAAQ,CAAC,YAAY,CAAC,EAAE,SAAS,WAAW,EAAE,CAAA;CAC9C;AAMD,wBAAgB,QAAQ,CAAC,EACxB,QAAgB,EAChB,QAAQ,EACR,OAAO,EACP,YAAiB,GACjB,EAAE,aAAa,2CAoKf"}
|
package/dist/tui/Composer.js
CHANGED
|
@@ -7,7 +7,7 @@ import { theme } from './theme.js';
|
|
|
7
7
|
const MAX_SUGGESTIONS = 6;
|
|
8
8
|
// A single keypress longer than this (with no newline) is treated as a paste.
|
|
9
9
|
const PASTE_THRESHOLD = 80;
|
|
10
|
-
export function Composer({ disabled = false, onSubmit, history }) {
|
|
10
|
+
export function Composer({ disabled = false, onSubmit, history, userCommands = [], }) {
|
|
11
11
|
const [value, setValue] = useState('');
|
|
12
12
|
const [historyIndex, setHistoryIndex] = useState(-1);
|
|
13
13
|
const [selected, setSelected] = useState(0);
|
|
@@ -17,7 +17,7 @@ export function Composer({ disabled = false, onSubmit, history }) {
|
|
|
17
17
|
// Images pasted from the clipboard (Ctrl+V), shown as chips and sent as
|
|
18
18
|
// vision attachments on submit.
|
|
19
19
|
const [images, setImages] = useState([]);
|
|
20
|
-
const suggestions = matchSlashCommands(value).slice(0, MAX_SUGGESTIONS);
|
|
20
|
+
const suggestions = matchSlashCommands(value, userCommands).slice(0, MAX_SUGGESTIONS);
|
|
21
21
|
const showSuggestions = suggestions.length > 0;
|
|
22
22
|
const selIdx = Math.min(selected, Math.max(0, suggestions.length - 1));
|
|
23
23
|
const reset = useCallback(() => {
|
package/dist/tui/Composer.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Composer.js","sourceRoot":"","sources":["../../src/tui/Composer.tsx"],"names":[],"mappings":";AAWA,OAAO,EAAE,GAAG,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,KAAK,CAAA;AACzC,OAAO,EAAE,WAAW,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAA;AAE7C,OAAO,EAAE,kBAAkB,EAAE,MAAM,oCAAoC,CAAA;
|
|
1
|
+
{"version":3,"file":"Composer.js","sourceRoot":"","sources":["../../src/tui/Composer.tsx"],"names":[],"mappings":"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"}
|
|
@@ -14,6 +14,7 @@
|
|
|
14
14
|
* second source for a fact the kernel already owns, and the two would drift.
|
|
15
15
|
*/
|
|
16
16
|
import type { VerificationRule } from '@namzu/sdk';
|
|
17
|
+
import { type UserCommand } from '../user-commands/store.js';
|
|
17
18
|
export type SlashAction = {
|
|
18
19
|
kind: 'message';
|
|
19
20
|
role: 'system';
|
|
@@ -36,6 +37,18 @@ export type SlashAction = {
|
|
|
36
37
|
name: string;
|
|
37
38
|
} | {
|
|
38
39
|
kind: 'resume';
|
|
40
|
+
}
|
|
41
|
+
/**
|
|
42
|
+
* Drive a turn with text the command composed rather than the user typed.
|
|
43
|
+
*
|
|
44
|
+
* The kernel already does the work — reading the tree, writing the file —
|
|
45
|
+
* so a command that needs the agent asks it, instead of the CLI growing a
|
|
46
|
+
* second way to inspect a repository that would then disagree with the one
|
|
47
|
+
* the model uses.
|
|
48
|
+
*/
|
|
49
|
+
| {
|
|
50
|
+
kind: 'prompt';
|
|
51
|
+
text: string;
|
|
39
52
|
} | {
|
|
40
53
|
kind: 'none';
|
|
41
54
|
};
|
|
@@ -66,6 +79,23 @@ export interface SlashContext {
|
|
|
66
79
|
* is not mounted.
|
|
67
80
|
*/
|
|
68
81
|
readonly agentIds: readonly string[];
|
|
82
|
+
/**
|
|
83
|
+
* Absolute paths of the project-instruction files already in this session's
|
|
84
|
+
* system prompt.
|
|
85
|
+
*
|
|
86
|
+
* `/init` reads it to tell "this project has never been described" from
|
|
87
|
+
* "one exists and you are about to be asked to rewrite it", which are
|
|
88
|
+
* different requests and want different prompts. The session already
|
|
89
|
+
* reports this; nothing new is discovered to answer it.
|
|
90
|
+
*/
|
|
91
|
+
readonly instructionFiles: readonly string[];
|
|
92
|
+
/**
|
|
93
|
+
* Commands the operator defined as `.md` files.
|
|
94
|
+
*
|
|
95
|
+
* Consulted only after the builtins, so a file cannot take a name the TUI
|
|
96
|
+
* already answers to. Empty is the normal case.
|
|
97
|
+
*/
|
|
98
|
+
readonly userCommands: readonly UserCommand[];
|
|
69
99
|
}
|
|
70
100
|
export interface SlashCommand {
|
|
71
101
|
readonly name: string;
|
|
@@ -82,10 +112,25 @@ export interface ParsedSlash {
|
|
|
82
112
|
* once a space is typed (the user has moved on to arguments) or the value
|
|
83
113
|
* isn't a slash command, so the dropdown only shows while picking a name.
|
|
84
114
|
*/
|
|
85
|
-
export declare function matchSlashCommands(value: string): SlashCommand[];
|
|
115
|
+
export declare function matchSlashCommands(value: string, userCommands?: readonly UserCommand[]): SlashCommand[];
|
|
86
116
|
/** Returns null when the line is not a slash command. */
|
|
87
117
|
export declare function parseSlash(line: string): ParsedSlash | null;
|
|
88
118
|
export declare const SLASH_COMMANDS: readonly SlashCommand[];
|
|
119
|
+
/**
|
|
120
|
+
* The instruction `/init` sends as a turn.
|
|
121
|
+
*
|
|
122
|
+
* Written as a prompt rather than a template the CLI fills in, because the
|
|
123
|
+
* useful half of this file is what a reader could not guess from the tree —
|
|
124
|
+
* the commands that actually work here, the layout that is deliberate — and
|
|
125
|
+
* only something that has read the repository can say that. A CLI-side
|
|
126
|
+
* generator would produce a directory listing with headings on it.
|
|
127
|
+
*
|
|
128
|
+
* The instruction it opens with is the one that matters: an `AGENTS.md` full of
|
|
129
|
+
* invented conventions is worse than none, because the next agent obeys it. So
|
|
130
|
+
* the prompt asks for verification against the tree and for omission over
|
|
131
|
+
* invention, in those words.
|
|
132
|
+
*/
|
|
133
|
+
export declare function initPrompt(instructionFiles: readonly string[]): string;
|
|
89
134
|
/**
|
|
90
135
|
* Spend, stated as spend.
|
|
91
136
|
*
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"slashCommands.d.ts","sourceRoot":"","sources":["../../src/tui/slashCommands.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAA;AAElD,MAAM,MAAM,WAAW,GACpB;IAAE,IAAI,EAAE,SAAS,CAAC;IAAC,IAAI,EAAE,QAAQ,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,GACpD;IAAE,IAAI,EAAE,MAAM,CAAA;CAAE,GAChB;IAAE,IAAI,EAAE,OAAO,CAAA;CAAE,GACjB;IAAE,IAAI,EAAE,QAAQ,CAAA;CAAE,GAClB;IAAE,IAAI,EAAE,UAAU,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,GAClC;IAAE,IAAI,EAAE,aAAa,CAAA;CAAE,GACvB;IAAE,IAAI,EAAE,aAAa,CAAA;CAAE,GACvB;IAAE,IAAI,EAAE,YAAY,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,GACpC;IAAE,IAAI,EAAE,QAAQ,CAAA;CAAE,
|
|
1
|
+
{"version":3,"file":"slashCommands.d.ts","sourceRoot":"","sources":["../../src/tui/slashCommands.ts"],"names":[],"mappings":"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"}
|
|
@@ -13,18 +13,27 @@
|
|
|
13
13
|
* already carries. A command that had to compute its own answer would be a
|
|
14
14
|
* second source for a fact the kernel already owns, and the two would drift.
|
|
15
15
|
*/
|
|
16
|
+
import { expandCommand } from '../user-commands/store.js';
|
|
16
17
|
/**
|
|
17
18
|
* Autocomplete matches for a composer value that is a command-in-progress
|
|
18
19
|
* (`/`, `/me`, `/mo…` — slash + a partial name, no space yet). Returns []
|
|
19
20
|
* once a space is typed (the user has moved on to arguments) or the value
|
|
20
21
|
* isn't a slash command, so the dropdown only shows while picking a name.
|
|
21
22
|
*/
|
|
22
|
-
export function matchSlashCommands(value) {
|
|
23
|
+
export function matchSlashCommands(value, userCommands = []) {
|
|
23
24
|
const m = /^\/([\w-]*)$/.exec(value);
|
|
24
25
|
if (!m)
|
|
25
26
|
return [];
|
|
26
27
|
const prefix = (m[1] ?? '').toLowerCase();
|
|
27
|
-
|
|
28
|
+
// A command the dropdown does not offer is one nobody discovers. Refused
|
|
29
|
+
// ones are offered too, carrying their reason as the description — running
|
|
30
|
+
// it prints the problem, which is how its author finds out.
|
|
31
|
+
const own = userCommands.map((c) => ({
|
|
32
|
+
name: c.name,
|
|
33
|
+
description: c.problem ? `⚠ ${c.problem}` : c.description,
|
|
34
|
+
action: () => ({ kind: 'none' }),
|
|
35
|
+
}));
|
|
36
|
+
return [...SLASH_COMMANDS, ...own].filter((c) => c.name.startsWith(prefix));
|
|
28
37
|
}
|
|
29
38
|
/** Returns null when the line is not a slash command. */
|
|
30
39
|
export function parseSlash(line) {
|
|
@@ -40,11 +49,23 @@ export const SLASH_COMMANDS = [
|
|
|
40
49
|
{
|
|
41
50
|
name: 'help',
|
|
42
51
|
description: 'Show available slash commands.',
|
|
43
|
-
action: () =>
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
52
|
+
action: (ctx) => {
|
|
53
|
+
const builtin = SLASH_COMMANDS.map((c) => `/${c.name.padEnd(12)} ${c.description}`);
|
|
54
|
+
// Listed separately and always, including the refused ones with their
|
|
55
|
+
// reason. A command file that exists and does not work is exactly what
|
|
56
|
+
// its author needs to see here — leaving it out of `/help` is how it
|
|
57
|
+
// stays broken.
|
|
58
|
+
const own = ctx.userCommands.map((c) => c.problem
|
|
59
|
+
? `/${c.name.padEnd(12)} ⚠ ${c.problem}`
|
|
60
|
+
: `/${c.name.padEnd(12)} ${c.description}`);
|
|
61
|
+
return {
|
|
62
|
+
kind: 'message',
|
|
63
|
+
role: 'system',
|
|
64
|
+
content: own.length > 0
|
|
65
|
+
? `${builtin.join('\n')}\n\nYour commands:\n${own.join('\n')}`
|
|
66
|
+
: builtin.join('\n'),
|
|
67
|
+
};
|
|
68
|
+
},
|
|
48
69
|
},
|
|
49
70
|
{
|
|
50
71
|
name: 'clear',
|
|
@@ -142,7 +163,68 @@ export const SLASH_COMMANDS = [
|
|
|
142
163
|
description: 'List the delegates this session can dispatch to.',
|
|
143
164
|
action: (ctx) => ({ kind: 'message', role: 'system', content: renderAgents(ctx.agentIds) }),
|
|
144
165
|
},
|
|
166
|
+
{
|
|
167
|
+
name: 'init',
|
|
168
|
+
description: 'Write an AGENTS.md describing this project to future agents.',
|
|
169
|
+
action: (ctx) => {
|
|
170
|
+
if (!ctx.providerSummary) {
|
|
171
|
+
return {
|
|
172
|
+
kind: 'message',
|
|
173
|
+
role: 'system',
|
|
174
|
+
content: '/init asks the agent to read this repository and write the file, so it needs a provider. Run /model to pick one.',
|
|
175
|
+
};
|
|
176
|
+
}
|
|
177
|
+
return { kind: 'prompt', text: initPrompt(ctx.instructionFiles) };
|
|
178
|
+
},
|
|
179
|
+
},
|
|
145
180
|
];
|
|
181
|
+
/**
|
|
182
|
+
* The instruction `/init` sends as a turn.
|
|
183
|
+
*
|
|
184
|
+
* Written as a prompt rather than a template the CLI fills in, because the
|
|
185
|
+
* useful half of this file is what a reader could not guess from the tree —
|
|
186
|
+
* the commands that actually work here, the layout that is deliberate — and
|
|
187
|
+
* only something that has read the repository can say that. A CLI-side
|
|
188
|
+
* generator would produce a directory listing with headings on it.
|
|
189
|
+
*
|
|
190
|
+
* The instruction it opens with is the one that matters: an `AGENTS.md` full of
|
|
191
|
+
* invented conventions is worse than none, because the next agent obeys it. So
|
|
192
|
+
* the prompt asks for verification against the tree and for omission over
|
|
193
|
+
* invention, in those words.
|
|
194
|
+
*/
|
|
195
|
+
export function initPrompt(instructionFiles) {
|
|
196
|
+
const existing = instructionFiles.length > 0
|
|
197
|
+
? [
|
|
198
|
+
'',
|
|
199
|
+
'This project ALREADY has project instructions, loaded from:',
|
|
200
|
+
...instructionFiles.map((f) => ` ${f}`),
|
|
201
|
+
'',
|
|
202
|
+
'Do not overwrite them. Read them first, then propose specific edits —',
|
|
203
|
+
'what is now wrong, what is missing — and make only the changes I agree to.',
|
|
204
|
+
].join('\n')
|
|
205
|
+
: ['', 'This project has no AGENTS.md yet. Create one at the repository root.'].join('\n');
|
|
206
|
+
return [
|
|
207
|
+
'Write the project instructions that a coding agent joining this repository would need.',
|
|
208
|
+
'',
|
|
209
|
+
'Verify every claim against the tree before you write it. Do not describe a',
|
|
210
|
+
'command you have not found, a layout you have not opened, or a convention you',
|
|
211
|
+
'have inferred from one file. If you cannot establish something, leave it out —',
|
|
212
|
+
'an AGENTS.md full of plausible inventions is worse than a short true one,',
|
|
213
|
+
'because the next agent will follow it.',
|
|
214
|
+
existing,
|
|
215
|
+
'',
|
|
216
|
+
'Cover what a newcomer cannot get from the file listing:',
|
|
217
|
+
' - what this project is, in a sentence or two',
|
|
218
|
+
' - the build, test and lint commands that actually work here (check the',
|
|
219
|
+
' package manifest or task runner rather than assuming the usual ones)',
|
|
220
|
+
' - the layout, and any part of it that is deliberate rather than incidental',
|
|
221
|
+
' - conventions the code visibly holds to, with the evidence that shows it',
|
|
222
|
+
' - anything that would let someone break the project without noticing',
|
|
223
|
+
'',
|
|
224
|
+
'Keep it short enough to be read in full. Every line costs context on every',
|
|
225
|
+
'future run, so a sentence that says nothing is not free.',
|
|
226
|
+
].join('\n');
|
|
227
|
+
}
|
|
146
228
|
/**
|
|
147
229
|
* Spend, stated as spend.
|
|
148
230
|
*
|
|
@@ -216,14 +298,24 @@ export function runSlash(line, ctx) {
|
|
|
216
298
|
const parsed = parseSlash(line);
|
|
217
299
|
if (!parsed)
|
|
218
300
|
return null;
|
|
301
|
+
// Builtins first, always. A file appearing on disk must not take over a name
|
|
302
|
+
// the TUI already answers to — `discoverUserCommands` marks those files with
|
|
303
|
+
// a `problem` so their author is told, rather than leaving them to wonder
|
|
304
|
+
// why the file never ran.
|
|
219
305
|
const cmd = SLASH_COMMANDS.find((c) => c.name === parsed.name);
|
|
220
|
-
if (
|
|
221
|
-
return
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
|
|
306
|
+
if (cmd)
|
|
307
|
+
return cmd.action(ctx, parsed.args);
|
|
308
|
+
const user = ctx.userCommands.find((c) => c.name === parsed.name);
|
|
309
|
+
if (user) {
|
|
310
|
+
const expanded = expandCommand(user, parsed.args.join(' '));
|
|
311
|
+
return expanded.ok
|
|
312
|
+
? { kind: 'prompt', text: expanded.prompt }
|
|
313
|
+
: { kind: 'message', role: 'system', content: expanded.reason };
|
|
226
314
|
}
|
|
227
|
-
return
|
|
315
|
+
return {
|
|
316
|
+
kind: 'message',
|
|
317
|
+
role: 'system',
|
|
318
|
+
content: `Unknown command: /${parsed.name}. Try /help.`,
|
|
319
|
+
};
|
|
228
320
|
}
|
|
229
321
|
//# sourceMappingURL=slashCommands.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"slashCommands.js","sourceRoot":"","sources":["../../src/tui/slashCommands.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;
|
|
1
|
+
{"version":3,"file":"slashCommands.js","sourceRoot":"","sources":["../../src/tui/slashCommands.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,95 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* User-defined slash commands — one `.md` file per command.
|
|
3
|
+
*
|
|
4
|
+
* A command is a markdown file whose body is a prompt template:
|
|
5
|
+
*
|
|
6
|
+
* ~/.namzu/commands/<name>.md available everywhere
|
|
7
|
+
* <cwd>/.namzu/commands/<name>.md this project only
|
|
8
|
+
*
|
|
9
|
+
* The name is the filename without `.md`, so `review.md` is `/review`. A
|
|
10
|
+
* project command shadows a user command of the same name, which is the same
|
|
11
|
+
* precedence skills use.
|
|
12
|
+
*
|
|
13
|
+
* ## Why this is not `discoverSkills`
|
|
14
|
+
*
|
|
15
|
+
* The kernel's `discoverSkills` finds DIRECTORIES containing a `SKILL.md`, and
|
|
16
|
+
* returns `[]` for a folder of loose `.md` files — silently, because an empty
|
|
17
|
+
* roster is a legitimate answer to "no skills here". A command is one file, so
|
|
18
|
+
* that loader cannot serve this layout and would report nothing rather than
|
|
19
|
+
* fail. What IS reused is the part worth sharing: `parseFrontmatter`, so there
|
|
20
|
+
* is exactly one definition of what a `---` block means anywhere in the repo.
|
|
21
|
+
*
|
|
22
|
+
* ## Arguments
|
|
23
|
+
*
|
|
24
|
+
* `$ARGUMENTS` in the template is replaced by whatever followed the command.
|
|
25
|
+
* A template WITHOUT it, invoked WITH arguments, is refused rather than run —
|
|
26
|
+
* see `expandCommand`. Dropping them silently is the failure this file is
|
|
27
|
+
* written to avoid, and appending them somewhere the author did not ask for
|
|
28
|
+
* would be guessing where they belong.
|
|
29
|
+
*/
|
|
30
|
+
export type UserCommandSource = 'user' | 'project';
|
|
31
|
+
export interface UserCommand {
|
|
32
|
+
/** Invoked as `/<name>`. The filename without `.md`. */
|
|
33
|
+
readonly name: string;
|
|
34
|
+
readonly description: string;
|
|
35
|
+
/** The prompt template. Empty when the file could not be read. */
|
|
36
|
+
readonly template: string;
|
|
37
|
+
readonly path: string;
|
|
38
|
+
readonly source: UserCommandSource;
|
|
39
|
+
/**
|
|
40
|
+
* Why this command cannot be used, when it cannot.
|
|
41
|
+
*
|
|
42
|
+
* Same contract as `SkillInfo.problem`: a file that will not parse is
|
|
43
|
+
* refused, but it stays listed with its reason so one bad file does not
|
|
44
|
+
* quietly remove the rest — and so a file the operator can see on disk is
|
|
45
|
+
* accounted for rather than missing.
|
|
46
|
+
*/
|
|
47
|
+
readonly problem?: string;
|
|
48
|
+
}
|
|
49
|
+
/** The token a template uses to receive what followed the command. */
|
|
50
|
+
export declare const ARGUMENTS_TOKEN = "$ARGUMENTS";
|
|
51
|
+
export declare function userCommandsDir(home?: string): string;
|
|
52
|
+
export declare function projectCommandsDir(cwd?: string): string;
|
|
53
|
+
/**
|
|
54
|
+
* Every user-defined command, project shadowing user on a name clash.
|
|
55
|
+
*
|
|
56
|
+
* `reserved` names are dropped with a `problem` rather than allowed to win:
|
|
57
|
+
* a file called `help.md` must not replace `/help`, because a builtin someone
|
|
58
|
+
* relies on disappearing when a file appears is the worst kind of surprise —
|
|
59
|
+
* and silently ignoring the file would leave its author with no idea why it
|
|
60
|
+
* never ran.
|
|
61
|
+
*/
|
|
62
|
+
export declare function discoverUserCommands(opts?: {
|
|
63
|
+
home?: string;
|
|
64
|
+
cwd?: string;
|
|
65
|
+
reserved?: readonly string[];
|
|
66
|
+
}): UserCommand[];
|
|
67
|
+
export type ExpandResult = {
|
|
68
|
+
readonly ok: true;
|
|
69
|
+
readonly prompt: string;
|
|
70
|
+
} | {
|
|
71
|
+
readonly ok: false;
|
|
72
|
+
readonly reason: string;
|
|
73
|
+
};
|
|
74
|
+
/**
|
|
75
|
+
* Fill a command's template with the arguments it was invoked with.
|
|
76
|
+
*
|
|
77
|
+
* Three cases, and the third is the decision worth defending:
|
|
78
|
+
*
|
|
79
|
+
* 1. Template has `$ARGUMENTS` → substituted, with `''` when none were given.
|
|
80
|
+
* 2. No `$ARGUMENTS`, no arguments → the template is a static prompt. Fine.
|
|
81
|
+
* 3. No `$ARGUMENTS`, arguments given → **refused**, naming the file and the
|
|
82
|
+
* fix.
|
|
83
|
+
*
|
|
84
|
+
* The third could have appended them under a heading instead, and that is
|
|
85
|
+
* friendlier in the moment. It was rejected because it guesses where the author
|
|
86
|
+
* wanted them and because the author never finds out their template ignores
|
|
87
|
+
* arguments. Refusing is one-time friction that teaches the contract.
|
|
88
|
+
*
|
|
89
|
+
* It is also the reversible direction: relaxing a refusal into an append later
|
|
90
|
+
* breaks nobody, while tightening an append into a refusal breaks everyone who
|
|
91
|
+
* had come to rely on it. Where a contract is hard to change, pick the one that
|
|
92
|
+
* can still be changed.
|
|
93
|
+
*/
|
|
94
|
+
export declare function expandCommand(command: UserCommand, args: string): ExpandResult;
|
|
95
|
+
//# sourceMappingURL=store.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"store.d.ts","sourceRoot":"","sources":["../../src/user-commands/store.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;AAOH,MAAM,MAAM,iBAAiB,GAAG,MAAM,GAAG,SAAS,CAAA;AAElD,MAAM,WAAW,WAAW;IAC3B,wDAAwD;IACxD,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;IACrB,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAA;IAC5B,kEAAkE;IAClE,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAA;IACzB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;IACrB,QAAQ,CAAC,MAAM,EAAE,iBAAiB,CAAA;IAClC;;;;;;;OAOG;IACH,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,CAAA;CACzB;AAED,sEAAsE;AACtE,eAAO,MAAM,eAAe,eAAe,CAAA;AAE3C,wBAAgB,eAAe,CAAC,IAAI,GAAE,MAAkB,GAAG,MAAM,CAEhE;AAED,wBAAgB,kBAAkB,CAAC,GAAG,GAAE,MAAsB,GAAG,MAAM,CAEtE;AAmDD;;;;;;;;GAQG;AACH,wBAAgB,oBAAoB,CACnC,IAAI,GAAE;IAAE,IAAI,CAAC,EAAE,MAAM,CAAC;IAAC,GAAG,CAAC,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,EAAE,SAAS,MAAM,EAAE,CAAA;CAAO,GACtE,WAAW,EAAE,CAgBf;AAED,MAAM,MAAM,YAAY,GACrB;IAAE,QAAQ,CAAC,EAAE,EAAE,IAAI,CAAC;IAAC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAA;CAAE,GAC9C;IAAE,QAAQ,CAAC,EAAE,EAAE,KAAK,CAAC;IAAC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAA;CAAE,CAAA;AAElD;;;;;;;;;;;;;;;;;;;GAmBG;AACH,wBAAgB,aAAa,CAAC,OAAO,EAAE,WAAW,EAAE,IAAI,EAAE,MAAM,GAAG,YAAY,CAkB9E"}
|
|
@@ -0,0 +1,153 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* User-defined slash commands — one `.md` file per command.
|
|
3
|
+
*
|
|
4
|
+
* A command is a markdown file whose body is a prompt template:
|
|
5
|
+
*
|
|
6
|
+
* ~/.namzu/commands/<name>.md available everywhere
|
|
7
|
+
* <cwd>/.namzu/commands/<name>.md this project only
|
|
8
|
+
*
|
|
9
|
+
* The name is the filename without `.md`, so `review.md` is `/review`. A
|
|
10
|
+
* project command shadows a user command of the same name, which is the same
|
|
11
|
+
* precedence skills use.
|
|
12
|
+
*
|
|
13
|
+
* ## Why this is not `discoverSkills`
|
|
14
|
+
*
|
|
15
|
+
* The kernel's `discoverSkills` finds DIRECTORIES containing a `SKILL.md`, and
|
|
16
|
+
* returns `[]` for a folder of loose `.md` files — silently, because an empty
|
|
17
|
+
* roster is a legitimate answer to "no skills here". A command is one file, so
|
|
18
|
+
* that loader cannot serve this layout and would report nothing rather than
|
|
19
|
+
* fail. What IS reused is the part worth sharing: `parseFrontmatter`, so there
|
|
20
|
+
* is exactly one definition of what a `---` block means anywhere in the repo.
|
|
21
|
+
*
|
|
22
|
+
* ## Arguments
|
|
23
|
+
*
|
|
24
|
+
* `$ARGUMENTS` in the template is replaced by whatever followed the command.
|
|
25
|
+
* A template WITHOUT it, invoked WITH arguments, is refused rather than run —
|
|
26
|
+
* see `expandCommand`. Dropping them silently is the failure this file is
|
|
27
|
+
* written to avoid, and appending them somewhere the author did not ask for
|
|
28
|
+
* would be guessing where they belong.
|
|
29
|
+
*/
|
|
30
|
+
import { readFileSync, readdirSync } from 'node:fs';
|
|
31
|
+
import { homedir } from 'node:os';
|
|
32
|
+
import { join } from 'node:path';
|
|
33
|
+
import { parseFrontmatter } from '@namzu/sdk';
|
|
34
|
+
/** The token a template uses to receive what followed the command. */
|
|
35
|
+
export const ARGUMENTS_TOKEN = '$ARGUMENTS';
|
|
36
|
+
export function userCommandsDir(home = homedir()) {
|
|
37
|
+
return join(home, '.namzu', 'commands');
|
|
38
|
+
}
|
|
39
|
+
export function projectCommandsDir(cwd = process.cwd()) {
|
|
40
|
+
return join(cwd, '.namzu', 'commands');
|
|
41
|
+
}
|
|
42
|
+
function readCommandsFrom(dir, source) {
|
|
43
|
+
let files;
|
|
44
|
+
try {
|
|
45
|
+
files = readdirSync(dir, { withFileTypes: true })
|
|
46
|
+
.filter((e) => e.isFile() && e.name.endsWith('.md'))
|
|
47
|
+
.map((e) => e.name);
|
|
48
|
+
}
|
|
49
|
+
catch {
|
|
50
|
+
// No directory is not an error: most projects define no commands.
|
|
51
|
+
return [];
|
|
52
|
+
}
|
|
53
|
+
const out = [];
|
|
54
|
+
for (const file of files) {
|
|
55
|
+
const path = join(dir, file);
|
|
56
|
+
const name = file.slice(0, -'.md'.length);
|
|
57
|
+
let raw;
|
|
58
|
+
try {
|
|
59
|
+
raw = readFileSync(path, 'utf8');
|
|
60
|
+
}
|
|
61
|
+
catch {
|
|
62
|
+
continue;
|
|
63
|
+
}
|
|
64
|
+
// Same fence-decides rule as the skill reader: a file with no `---` is
|
|
65
|
+
// all body, which is the common case for a command, and a file that
|
|
66
|
+
// opens one must parse. The absence test mirrors the kernel reader's own
|
|
67
|
+
// so the two cannot disagree about what counts as having frontmatter.
|
|
68
|
+
try {
|
|
69
|
+
if (!raw.trimStart().startsWith('---')) {
|
|
70
|
+
out.push({ name, description: '(no description)', template: raw.trim(), path, source });
|
|
71
|
+
continue;
|
|
72
|
+
}
|
|
73
|
+
const { values, body } = parseFrontmatter(raw, path);
|
|
74
|
+
const description = values.description?.kind === 'scalar' ? values.description.value : '(no description)';
|
|
75
|
+
out.push({ name, description, template: body, path, source });
|
|
76
|
+
}
|
|
77
|
+
catch (err) {
|
|
78
|
+
out.push({
|
|
79
|
+
name,
|
|
80
|
+
description: '(could not be read)',
|
|
81
|
+
template: '',
|
|
82
|
+
path,
|
|
83
|
+
source,
|
|
84
|
+
problem: err instanceof Error ? err.message : String(err),
|
|
85
|
+
});
|
|
86
|
+
}
|
|
87
|
+
}
|
|
88
|
+
return out;
|
|
89
|
+
}
|
|
90
|
+
/**
|
|
91
|
+
* Every user-defined command, project shadowing user on a name clash.
|
|
92
|
+
*
|
|
93
|
+
* `reserved` names are dropped with a `problem` rather than allowed to win:
|
|
94
|
+
* a file called `help.md` must not replace `/help`, because a builtin someone
|
|
95
|
+
* relies on disappearing when a file appears is the worst kind of surprise —
|
|
96
|
+
* and silently ignoring the file would leave its author with no idea why it
|
|
97
|
+
* never ran.
|
|
98
|
+
*/
|
|
99
|
+
export function discoverUserCommands(opts = {}) {
|
|
100
|
+
const reserved = new Set(opts.reserved ?? []);
|
|
101
|
+
const user = readCommandsFrom(userCommandsDir(opts.home), 'user');
|
|
102
|
+
const project = readCommandsFrom(projectCommandsDir(opts.cwd), 'project');
|
|
103
|
+
const byName = new Map();
|
|
104
|
+
for (const c of user)
|
|
105
|
+
byName.set(c.name, c);
|
|
106
|
+
for (const c of project)
|
|
107
|
+
byName.set(c.name, c); // project wins
|
|
108
|
+
return [...byName.values()]
|
|
109
|
+
.map((c) => reserved.has(c.name)
|
|
110
|
+
? { ...c, problem: `"/${c.name}" is a built-in command, so this file is not used.` }
|
|
111
|
+
: c)
|
|
112
|
+
.sort((a, b) => a.name.localeCompare(b.name));
|
|
113
|
+
}
|
|
114
|
+
/**
|
|
115
|
+
* Fill a command's template with the arguments it was invoked with.
|
|
116
|
+
*
|
|
117
|
+
* Three cases, and the third is the decision worth defending:
|
|
118
|
+
*
|
|
119
|
+
* 1. Template has `$ARGUMENTS` → substituted, with `''` when none were given.
|
|
120
|
+
* 2. No `$ARGUMENTS`, no arguments → the template is a static prompt. Fine.
|
|
121
|
+
* 3. No `$ARGUMENTS`, arguments given → **refused**, naming the file and the
|
|
122
|
+
* fix.
|
|
123
|
+
*
|
|
124
|
+
* The third could have appended them under a heading instead, and that is
|
|
125
|
+
* friendlier in the moment. It was rejected because it guesses where the author
|
|
126
|
+
* wanted them and because the author never finds out their template ignores
|
|
127
|
+
* arguments. Refusing is one-time friction that teaches the contract.
|
|
128
|
+
*
|
|
129
|
+
* It is also the reversible direction: relaxing a refusal into an append later
|
|
130
|
+
* breaks nobody, while tightening an append into a refusal breaks everyone who
|
|
131
|
+
* had come to rely on it. Where a contract is hard to change, pick the one that
|
|
132
|
+
* can still be changed.
|
|
133
|
+
*/
|
|
134
|
+
export function expandCommand(command, args) {
|
|
135
|
+
if (command.problem)
|
|
136
|
+
return { ok: false, reason: command.problem };
|
|
137
|
+
const trimmed = args.trim();
|
|
138
|
+
if (command.template.includes(ARGUMENTS_TOKEN)) {
|
|
139
|
+
return { ok: true, prompt: command.template.split(ARGUMENTS_TOKEN).join(trimmed) };
|
|
140
|
+
}
|
|
141
|
+
if (trimmed.length === 0)
|
|
142
|
+
return { ok: true, prompt: command.template };
|
|
143
|
+
return {
|
|
144
|
+
ok: false,
|
|
145
|
+
reason: [
|
|
146
|
+
`/${command.name} takes no arguments, but you gave: ${trimmed}`,
|
|
147
|
+
'',
|
|
148
|
+
`Add ${ARGUMENTS_TOKEN} where they belong in ${command.path}, and they will be`,
|
|
149
|
+
'substituted there. Running it now would silently discard them.',
|
|
150
|
+
].join('\n'),
|
|
151
|
+
};
|
|
152
|
+
}
|
|
153
|
+
//# sourceMappingURL=store.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"store.js","sourceRoot":"","sources":["../../src/user-commands/store.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;AAEH,OAAO,EAAE,YAAY,EAAE,WAAW,EAAE,MAAM,SAAS,CAAA;AACnD,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAA;AACjC,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAA;AAChC,OAAO,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAA;AAuB7C,sEAAsE;AACtE,MAAM,CAAC,MAAM,eAAe,GAAG,YAAY,CAAA;AAE3C,MAAM,UAAU,eAAe,CAAC,OAAe,OAAO,EAAE;IACvD,OAAO,IAAI,CAAC,IAAI,EAAE,QAAQ,EAAE,UAAU,CAAC,CAAA;AACxC,CAAC;AAED,MAAM,UAAU,kBAAkB,CAAC,MAAc,OAAO,CAAC,GAAG,EAAE;IAC7D,OAAO,IAAI,CAAC,GAAG,EAAE,QAAQ,EAAE,UAAU,CAAC,CAAA;AACvC,CAAC;AAED,SAAS,gBAAgB,CAAC,GAAW,EAAE,MAAyB;IAC/D,IAAI,KAAe,CAAA;IACnB,IAAI,CAAC;QACJ,KAAK,GAAG,WAAW,CAAC,GAAG,EAAE,EAAE,aAAa,EAAE,IAAI,EAAE,CAAC;aAC/C,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;aACnD,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAA;IACrB,CAAC;IAAC,MAAM,CAAC;QACR,kEAAkE;QAClE,OAAO,EAAE,CAAA;IACV,CAAC;IAED,MAAM,GAAG,GAAkB,EAAE,CAAA;IAC7B,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QAC1B,MAAM,IAAI,GAAG,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,CAAA;QAC5B,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,MAAM,CAAC,CAAA;QACzC,IAAI,GAAW,CAAA;QACf,IAAI,CAAC;YACJ,GAAG,GAAG,YAAY,CAAC,IAAI,EAAE,MAAM,CAAC,CAAA;QACjC,CAAC;QAAC,MAAM,CAAC;YACR,SAAQ;QACT,CAAC;QAED,uEAAuE;QACvE,oEAAoE;QACpE,yEAAyE;QACzE,sEAAsE;QACtE,IAAI,CAAC;YACJ,IAAI,CAAC,GAAG,CAAC,SAAS,EAAE,CAAC,UAAU,CAAC,KAAK,CAAC,EAAE,CAAC;gBACxC,GAAG,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,WAAW,EAAE,kBAAkB,EAAE,QAAQ,EAAE,GAAG,CAAC,IAAI,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC,CAAA;gBACvF,SAAQ;YACT,CAAC;YACD,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,GAAG,gBAAgB,CAAC,GAAG,EAAE,IAAI,CAAC,CAAA;YACpD,MAAM,WAAW,GAChB,MAAM,CAAC,WAAW,EAAE,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC,CAAC,kBAAkB,CAAA;YACtF,GAAG,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,WAAW,EAAE,QAAQ,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC,CAAA;QAC9D,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACd,GAAG,CAAC,IAAI,CAAC;gBACR,IAAI;gBACJ,WAAW,EAAE,qBAAqB;gBAClC,QAAQ,EAAE,EAAE;gBACZ,IAAI;gBACJ,MAAM;gBACN,OAAO,EAAE,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC;aACzD,CAAC,CAAA;QACH,CAAC;IACF,CAAC;IACD,OAAO,GAAG,CAAA;AACX,CAAC;AAED;;;;;;;;GAQG;AACH,MAAM,UAAU,oBAAoB,CACnC,OAAsE,EAAE;IAExE,MAAM,QAAQ,GAAG,IAAI,GAAG,CAAC,IAAI,CAAC,QAAQ,IAAI,EAAE,CAAC,CAAA;IAC7C,MAAM,IAAI,GAAG,gBAAgB,CAAC,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC,CAAA;IACjE,MAAM,OAAO,GAAG,gBAAgB,CAAC,kBAAkB,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,SAAS,CAAC,CAAA;IAEzE,MAAM,MAAM,GAAG,IAAI,GAAG,EAAuB,CAAA;IAC7C,KAAK,MAAM,CAAC,IAAI,IAAI;QAAE,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAA;IAC3C,KAAK,MAAM,CAAC,IAAI,OAAO;QAAE,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAA,CAAC,eAAe;IAE9D,OAAO,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC;SACzB,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CACV,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC;QACnB,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,OAAO,EAAE,KAAK,CAAC,CAAC,IAAI,oDAAoD,EAAE;QACpF,CAAC,CAAC,CAAC,CACJ;SACA,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAA;AAC/C,CAAC;AAMD;;;;;;;;;;;;;;;;;;;GAmBG;AACH,MAAM,UAAU,aAAa,CAAC,OAAoB,EAAE,IAAY;IAC/D,IAAI,OAAO,CAAC,OAAO;QAAE,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,OAAO,CAAC,OAAO,EAAE,CAAA;IAElE,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,EAAE,CAAA;IAC3B,IAAI,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAC,eAAe,CAAC,EAAE,CAAC;QAChD,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAC,eAAe,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAA;IACnF,CAAC;IACD,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,CAAC,QAAQ,EAAE,CAAA;IAEvE,OAAO;QACN,EAAE,EAAE,KAAK;QACT,MAAM,EAAE;YACP,IAAI,OAAO,CAAC,IAAI,sCAAsC,OAAO,EAAE;YAC/D,EAAE;YACF,OAAO,eAAe,yBAAyB,OAAO,CAAC,IAAI,oBAAoB;YAC/E,gEAAgE;SAChE,CAAC,IAAI,CAAC,IAAI,CAAC;KACZ,CAAA;AACF,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@namzu/cli",
|
|
3
|
-
"version": "2.
|
|
3
|
+
"version": "2.4.0",
|
|
4
4
|
"description": "Operator CLI for the Namzu agent platform — namzu doctor + future commands. Dual-purpose: standalone bin (`namzu doctor`) and library (`import { runDoctor } from '@namzu/cli'`).",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"namzu",
|
|
@@ -46,9 +46,9 @@
|
|
|
46
46
|
"yaml": "^2.9.0",
|
|
47
47
|
"@namzu/anthropic": "3.1.1",
|
|
48
48
|
"@namzu/ollama": "2.0.1",
|
|
49
|
-
"@namzu/openai": "1.1.1",
|
|
50
49
|
"@namzu/openrouter": "2.0.1",
|
|
51
|
-
"@namzu/
|
|
50
|
+
"@namzu/openai": "1.1.1",
|
|
51
|
+
"@namzu/sdk": "^15.1.0"
|
|
52
52
|
},
|
|
53
53
|
"devDependencies": {
|
|
54
54
|
"@biomejs/biome": "^1.9.4",
|