@cello-protocol/daemon 0.0.47 → 0.0.49

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/index.d.ts CHANGED
@@ -15,4 +15,5 @@ export { RandomizedPollScheduler, ImmediatePollScheduler } from "./manifest-poll
15
15
  export { InMemoryManifestVersionStore } from "./manifest-version-store.js";
16
16
  export { DbManifestVersionStore } from "./manifest-version-store-db.js";
17
17
  export { ManifestDirectoryChallengeVerifier, TestDirectoryChallengeVerifier } from "./challenge-verifier.js";
18
+ export { DUAL_SURFACE_VERBS, MCP_ONLY_TOOLS, NON_TOOL_IDENTIFIERS, DEAD_CLI_VERBS, deadCliVerbPattern, RENAMED_AWAY_TOOLS, knownToolNames, toCliGuidance, renderForSurface, type DualSurfaceVerb, type ClientSurface, } from "./vocabulary.js";
18
19
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,YAAY,EACV,MAAM,EACN,eAAe,EACf,UAAU,EACV,WAAW,EACX,aAAa,EACb,gBAAgB,EAChB,eAAe,EACf,QAAQ,EACR,UAAU,EACV,SAAS,EACT,gBAAgB,EAChB,cAAc,EACd,uBAAuB,EACvB,oBAAoB,EACpB,YAAY,EACZ,iBAAiB,EACjB,qBAAqB,EACrB,sBAAsB,EACtB,2BAA2B,GAC5B,MAAM,YAAY,CAAC;AACpB,OAAO,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAExC,OAAO,EAAE,WAAW,EAAE,KAAK,YAAY,EAAE,MAAM,aAAa,CAAC;AAC7D,OAAO,EAAE,QAAQ,EAAE,WAAW,EAAE,UAAU,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AACnF,OAAO,EAAE,UAAU,EAAE,KAAK,WAAW,EAAE,KAAK,WAAW,EAAE,KAAK,eAAe,EAAE,MAAM,mBAAmB,CAAC;AACzG,OAAO,EAAE,eAAe,EAAE,KAAK,SAAS,EAAE,KAAK,UAAU,EAAE,KAAK,eAAe,EAAE,KAAK,oBAAoB,EAAE,MAAM,iBAAiB,CAAC;AACpI,OAAO,EAAE,eAAe,EAAE,KAAK,SAAS,EAAE,QAAQ,EAAE,MAAM,iBAAiB,CAAC;AAC5E,OAAO,EAAE,cAAc,EAAE,KAAK,aAAa,EAAE,MAAM,uBAAuB,CAAC;AAC3E,OAAO,EAAE,UAAU,EAAE,KAAK,eAAe,EAAE,KAAK,QAAQ,EAAE,KAAK,YAAY,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC;AACvH,OAAO,EAAE,eAAe,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC;AAGpE,OAAO,EACL,iBAAiB,EACjB,0BAA0B,EAC1B,eAAe,EACf,8BAA8B,EAC9B,uBAAuB,GACxB,MAAM,yBAAyB,CAAC;AACjC,YAAY,EACV,kBAAkB,EAClB,eAAe,EACf,eAAe,EACf,oBAAoB,EACpB,iBAAiB,GAClB,MAAM,yBAAyB,CAAC;AAGjC,OAAO,EAAE,oBAAoB,EAAE,MAAM,sBAAsB,CAAC;AAC5D,OAAO,EAAE,uBAAuB,EAAE,sBAAsB,EAAE,MAAM,8BAA8B,CAAC;AAC/F,OAAO,EAAE,4BAA4B,EAAE,MAAM,6BAA6B,CAAC;AAC3E,OAAO,EAAE,sBAAsB,EAAE,MAAM,gCAAgC,CAAC;AACxE,OAAO,EAAE,kCAAkC,EAAE,8BAA8B,EAAE,MAAM,yBAAyB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,YAAY,EACV,MAAM,EACN,eAAe,EACf,UAAU,EACV,WAAW,EACX,aAAa,EACb,gBAAgB,EAChB,eAAe,EACf,QAAQ,EACR,UAAU,EACV,SAAS,EACT,gBAAgB,EAChB,cAAc,EACd,uBAAuB,EACvB,oBAAoB,EACpB,YAAY,EACZ,iBAAiB,EACjB,qBAAqB,EACrB,sBAAsB,EACtB,2BAA2B,GAC5B,MAAM,YAAY,CAAC;AACpB,OAAO,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAExC,OAAO,EAAE,WAAW,EAAE,KAAK,YAAY,EAAE,MAAM,aAAa,CAAC;AAC7D,OAAO,EAAE,QAAQ,EAAE,WAAW,EAAE,UAAU,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AACnF,OAAO,EAAE,UAAU,EAAE,KAAK,WAAW,EAAE,KAAK,WAAW,EAAE,KAAK,eAAe,EAAE,MAAM,mBAAmB,CAAC;AACzG,OAAO,EAAE,eAAe,EAAE,KAAK,SAAS,EAAE,KAAK,UAAU,EAAE,KAAK,eAAe,EAAE,KAAK,oBAAoB,EAAE,MAAM,iBAAiB,CAAC;AACpI,OAAO,EAAE,eAAe,EAAE,KAAK,SAAS,EAAE,QAAQ,EAAE,MAAM,iBAAiB,CAAC;AAC5E,OAAO,EAAE,cAAc,EAAE,KAAK,aAAa,EAAE,MAAM,uBAAuB,CAAC;AAC3E,OAAO,EAAE,UAAU,EAAE,KAAK,eAAe,EAAE,KAAK,QAAQ,EAAE,KAAK,YAAY,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC;AACvH,OAAO,EAAE,eAAe,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC;AAGpE,OAAO,EACL,iBAAiB,EACjB,0BAA0B,EAC1B,eAAe,EACf,8BAA8B,EAC9B,uBAAuB,GACxB,MAAM,yBAAyB,CAAC;AACjC,YAAY,EACV,kBAAkB,EAClB,eAAe,EACf,eAAe,EACf,oBAAoB,EACpB,iBAAiB,GAClB,MAAM,yBAAyB,CAAC;AAGjC,OAAO,EAAE,oBAAoB,EAAE,MAAM,sBAAsB,CAAC;AAC5D,OAAO,EAAE,uBAAuB,EAAE,sBAAsB,EAAE,MAAM,8BAA8B,CAAC;AAC/F,OAAO,EAAE,4BAA4B,EAAE,MAAM,6BAA6B,CAAC;AAC3E,OAAO,EAAE,sBAAsB,EAAE,MAAM,gCAAgC,CAAC;AACxE,OAAO,EAAE,kCAAkC,EAAE,8BAA8B,EAAE,MAAM,yBAAyB,CAAC;AAK7G,OAAO,EACL,kBAAkB,EAClB,cAAc,EACd,oBAAoB,EACpB,cAAc,EACd,kBAAkB,EAClB,kBAAkB,EAClB,cAAc,EACd,aAAa,EACb,gBAAgB,EAChB,KAAK,eAAe,EACpB,KAAK,aAAa,GACnB,MAAM,iBAAiB,CAAC"}
package/dist/index.js CHANGED
@@ -15,4 +15,8 @@ export { RandomizedPollScheduler, ImmediatePollScheduler } from "./manifest-poll
15
15
  export { InMemoryManifestVersionStore } from "./manifest-version-store.js";
16
16
  export { DbManifestVersionStore } from "./manifest-version-store-db.js";
17
17
  export { ManifestDirectoryChallengeVerifier, TestDirectoryChallengeVerifier } from "./challenge-verifier.js";
18
+ // DOD-ONBOARD-HELP-1 §2b — the ONE vocabulary (capability → {cli, mcp}). Exported so the CLI
19
+ // registry and the connect shim's audit test derive their names from the SAME table the daemon
20
+ // renders its guidance from, instead of three lists of literals that drift.
21
+ export { DUAL_SURFACE_VERBS, MCP_ONLY_TOOLS, NON_TOOL_IDENTIFIERS, DEAD_CLI_VERBS, deadCliVerbPattern, RENAMED_AWAY_TOOLS, knownToolNames, toCliGuidance, renderForSurface, } from "./vocabulary.js";
18
22
  //# sourceMappingURL=index.js.map
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAqBA,OAAO,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAExC,OAAO,EAAE,WAAW,EAAqB,MAAM,aAAa,CAAC;AAC7D,OAAO,EAAE,QAAQ,EAAE,WAAW,EAAE,UAAU,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AACnF,OAAO,EAAE,UAAU,EAA4D,MAAM,mBAAmB,CAAC;AACzG,OAAO,EAAE,eAAe,EAAoF,MAAM,iBAAiB,CAAC;AACpI,OAAO,EAAE,eAAe,EAAkB,QAAQ,EAAE,MAAM,iBAAiB,CAAC;AAC5E,OAAO,EAAE,cAAc,EAAsB,MAAM,uBAAuB,CAAC;AAC3E,OAAO,EAAE,UAAU,EAA0D,eAAe,EAAE,MAAM,kBAAkB,CAAC;AACvH,OAAO,EAAE,eAAe,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC;AAEpE,qFAAqF;AACrF,OAAO,EACL,iBAAiB,EACjB,0BAA0B,EAC1B,eAAe,EACf,8BAA8B,EAC9B,uBAAuB,GACxB,MAAM,yBAAyB,CAAC;AASjC,+DAA+D;AAC/D,OAAO,EAAE,oBAAoB,EAAE,MAAM,sBAAsB,CAAC;AAC5D,OAAO,EAAE,uBAAuB,EAAE,sBAAsB,EAAE,MAAM,8BAA8B,CAAC;AAC/F,OAAO,EAAE,4BAA4B,EAAE,MAAM,6BAA6B,CAAC;AAC3E,OAAO,EAAE,sBAAsB,EAAE,MAAM,gCAAgC,CAAC;AACxE,OAAO,EAAE,kCAAkC,EAAE,8BAA8B,EAAE,MAAM,yBAAyB,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAqBA,OAAO,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAExC,OAAO,EAAE,WAAW,EAAqB,MAAM,aAAa,CAAC;AAC7D,OAAO,EAAE,QAAQ,EAAE,WAAW,EAAE,UAAU,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AACnF,OAAO,EAAE,UAAU,EAA4D,MAAM,mBAAmB,CAAC;AACzG,OAAO,EAAE,eAAe,EAAoF,MAAM,iBAAiB,CAAC;AACpI,OAAO,EAAE,eAAe,EAAkB,QAAQ,EAAE,MAAM,iBAAiB,CAAC;AAC5E,OAAO,EAAE,cAAc,EAAsB,MAAM,uBAAuB,CAAC;AAC3E,OAAO,EAAE,UAAU,EAA0D,eAAe,EAAE,MAAM,kBAAkB,CAAC;AACvH,OAAO,EAAE,eAAe,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC;AAEpE,qFAAqF;AACrF,OAAO,EACL,iBAAiB,EACjB,0BAA0B,EAC1B,eAAe,EACf,8BAA8B,EAC9B,uBAAuB,GACxB,MAAM,yBAAyB,CAAC;AASjC,+DAA+D;AAC/D,OAAO,EAAE,oBAAoB,EAAE,MAAM,sBAAsB,CAAC;AAC5D,OAAO,EAAE,uBAAuB,EAAE,sBAAsB,EAAE,MAAM,8BAA8B,CAAC;AAC/F,OAAO,EAAE,4BAA4B,EAAE,MAAM,6BAA6B,CAAC;AAC3E,OAAO,EAAE,sBAAsB,EAAE,MAAM,gCAAgC,CAAC;AACxE,OAAO,EAAE,kCAAkC,EAAE,8BAA8B,EAAE,MAAM,yBAAyB,CAAC;AAE7G,6FAA6F;AAC7F,+FAA+F;AAC/F,4EAA4E;AAC5E,OAAO,EACL,kBAAkB,EAClB,cAAc,EACd,oBAAoB,EACpB,cAAc,EACd,kBAAkB,EAClB,kBAAkB,EAClB,cAAc,EACd,aAAa,EACb,gBAAgB,GAGjB,MAAM,iBAAiB,CAAC"}
@@ -0,0 +1,122 @@
1
+ /**
2
+ * DOD-ONBOARD-HELP-1 §2b — the ONE vocabulary.
3
+ *
4
+ * A capability has exactly one name, and that name renders differently on each surface:
5
+ *
6
+ * capability "agents" → MCP tool `cello_agents` · CLI command `cello agents`
7
+ *
8
+ * The rule (Andre, 2026-07-11): **an MCP tool's name is `cello_` + the CLI command name**,
9
+ * snake_cased, keeping any sub-verb. Humans and agents learn a capability ONCE.
10
+ *
11
+ * Why this table exists rather than three lists of string literals:
12
+ *
13
+ * - the CLI registry names its commands,
14
+ * - the connect shim names its MCP tools,
15
+ * - and the DAEMON names them BACK to you in ~50 error-guidance strings.
16
+ *
17
+ * That third one is the trap. The daemon is where a new user actually MEETS these names — a
18
+ * refused send says "call cello_receive first". Rename the tools without touching the daemon and
19
+ * every one of those strings points at a tool that no longer exists: an error message that hands
20
+ * you a wrong instruction is worse than no error message. So the names live HERE, once, and the
21
+ * daemon RENDERS them for whichever surface is asking (it knows: `clientType` is recorded at
22
+ * `ipc.connect`). A CLI caller is told `cello use-agent`; an MCP caller is told `cello_use_agent`.
23
+ *
24
+ * Enforced by dod-onboard-help-1-vocabulary.test.ts:
25
+ * - every entry obeys the `cello_` + command rule (no hand-typed exceptions),
26
+ * - every `cello_*` token in a daemon guidance string resolves here (a stale/typo'd name FAILS
27
+ * the build rather than shipping a dead instruction),
28
+ * - the CLI registry's command names == the CLI names here,
29
+ * - the connect shim's tool names == the MCP names here.
30
+ */
31
+ /** A capability reachable from BOTH surfaces. `mcp` is the tool name; `cli` is the command line. */
32
+ export interface DualSurfaceVerb {
33
+ mcp: string;
34
+ cli: string;
35
+ }
36
+ /**
37
+ * Every capability with BOTH an MCP tool and a CLI command. Guidance naming one of these is
38
+ * rendered per caller.
39
+ *
40
+ * The `cli` string is what an operator would TYPE, so per-contact ops carry the `<pubkey>`
41
+ * placeholder — the CLI shape is `cello contact <pubkey> set-tier`, not `cello contact-set-tier`.
42
+ */
43
+ export declare const DUAL_SURFACE_VERBS: readonly DualSurfaceVerb[];
44
+ /**
45
+ * Tools that exist ONLY on the MCP surface. They are the DOD-CUSTODY-DAEMON-1 stubs — the daemon
46
+ * handlers return `not_implemented`, so there is deliberately no CLI command to build a second
47
+ * broken path to. Listed so the audit test can tell "known MCP-only" from "stale name".
48
+ */
49
+ export declare const MCP_ONLY_TOOLS: readonly string[];
50
+ /**
51
+ * `cello_*` identifiers that are NOT tools and must never be mistaken for one.
52
+ *
53
+ * `cello_message` is the doorbell NOTIFICATION frame type (and the stem of the
54
+ * `notification.cello_message.dispatch.failed` log event). It is wire vocabulary and log taxonomy,
55
+ * never a command an operator could run — so the audit must recognise it rather than demand it be
56
+ * renamed to a tool that would not exist.
57
+ */
58
+ export declare const NON_TOOL_IDENTIFIERS: readonly string[];
59
+ /** Every `cello_*` token the daemon is ALLOWED to name in guidance. Anything else is a bug. */
60
+ export declare function knownToolNames(): ReadonlySet<string>;
61
+ /**
62
+ * CLI verbs that NO LONGER EXIST (DOD-ONBOARD-HELP-1 §2, clean renames — no aliases).
63
+ *
64
+ * Why this list exists as well as the tool audit: the tool audit matches `cello_*` tokens, so it is
65
+ * structurally BLIND to a dead *CLI* verb — `cello register` is just prose to it. That blindness is
66
+ * exactly how three dead-command instructions survived a green build in the first cut of this story
67
+ * (the missing-token onboarding error, an unregistered-agent warning, and relay-receipts' own usage
68
+ * line all still said `cello register` / `cello receipts`). A user handed a command that does not
69
+ * dispatch is worse off than one handed nothing.
70
+ *
71
+ * Anchoring is by NEGATIVE LOOKAHEAD, not a trailing space — see deadCliVerbPattern() for why the
72
+ * space failed.
73
+ */
74
+ export declare const DEAD_CLI_VERBS: readonly string[];
75
+ /**
76
+ * Match any dead CLI verb, wherever it is SPOKEN — the one regex both audits share.
77
+ *
78
+ * The negative lookahead `(?![-\w])` is what makes this work, and the first cut got it wrong: it
79
+ * anchored on a trailing SPACE (`"cello register "`), which review broke immediately — a verb
80
+ * followed by a quote, period, backtick, paren or comma slipped straight through, and a live string
81
+ * (`'cello register'`, in the Hermes plugin scaffolded onto the operator's disk) was sailing past a
82
+ * green audit. An audit defeated by a full stop is not an audit.
83
+ *
84
+ * The lookahead still lets the LIVE commands through, because each dead verb is a strict prefix of
85
+ * its replacement: `cello register-agent`, `cello close-session`, `cello initiate-session` all have
86
+ * a `-` right where the lookahead refuses one.
87
+ */
88
+ export declare function deadCliVerbPattern(): RegExp;
89
+ /**
90
+ * MCP tool names this story RENAMED AWAY. Nothing may hand one of these to an agent again.
91
+ *
92
+ * Distinct from `knownToolNames()` (an allowlist: "every cello_* token must be in the table"). That
93
+ * allowlist works inside the daemon, where every `cello_*` token IS a tool name — but it cannot be
94
+ * used across the CLI package, where `cello_*` tokens are also IPC WIRE method names
95
+ * (`client.send("cello_list_agents")`, which deliberately do not move) and, in the scaffolded Hermes
96
+ * assets, plain config identifiers (`cello_socket_path`, `cello_dir`). An allowlist there would
97
+ * either drown in false positives or be so riddled with exceptions it stopped meaning anything.
98
+ *
99
+ * So outside the daemon we assert the DENYLIST instead: whatever else a string says, it must not
100
+ * name a tool we deleted. That is precisely the regression that shipped — the Hermes `platform_hint`
101
+ * told the operator's agent to call `cello_check_notifications` and `cello_list_sessions` after both
102
+ * had ceased to exist.
103
+ */
104
+ export declare const RENAMED_AWAY_TOOLS: readonly string[];
105
+ export declare function toCliGuidance(text: string): string;
106
+ /** The client surfaces the daemon renders guidance for. Recorded per connection at `ipc.connect`. */
107
+ export type ClientSurface = "cli" | "mcp";
108
+ /**
109
+ * Render a handler's response for the surface that asked.
110
+ *
111
+ * Applied ONCE, at the IPC response boundary (daemon.ts wraps every handler), so a new handler
112
+ * cannot forget it and a new guidance string cannot drift. MCP callers get the response verbatim —
113
+ * the source strings already hold the canonical MCP names.
114
+ *
115
+ * RECURSES into nested objects and arrays. The first cut only rewrote a TOP-LEVEL `guidance`, which
116
+ * left real instructions per-surface-wrong: `cello inbox`'s rename notices live at
117
+ * `agents[i].rename_notices[j].notice` and told a CLI operator to call `cello_contact_set_moniker`
118
+ * with JSON arguments — a thing they cannot type. A choke point that only covers the easy shape is
119
+ * not a choke point; it just moves the leak somewhere less visible.
120
+ */
121
+ export declare function renderForSurface(result: unknown, surface: ClientSurface): unknown;
122
+ //# sourceMappingURL=vocabulary.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"vocabulary.d.ts","sourceRoot":"","sources":["../src/vocabulary.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6BG;AAEH,oGAAoG;AACpG,MAAM,WAAW,eAAe;IAC9B,GAAG,EAAE,MAAM,CAAC;IACZ,GAAG,EAAE,MAAM,CAAC;CACb;AAED;;;;;;GAMG;AACH,eAAO,MAAM,kBAAkB,EAAE,SAAS,eAAe,EA6BxD,CAAC;AAEF;;;;GAIG;AACH,eAAO,MAAM,cAAc,EAAE,SAAS,MAAM,EAI3C,CAAC;AAEF;;;;;;;GAOG;AACH,eAAO,MAAM,oBAAoB,EAAE,SAAS,MAAM,EAAsB,CAAC;AAEzE,+FAA+F;AAC/F,wBAAgB,cAAc,IAAI,WAAW,CAAC,MAAM,CAAC,CAMpD;AAED;;;;;;;;;;;;GAYG;AACH,eAAO,MAAM,cAAc,EAAE,SAAS,MAAM,EAU3C,CAAC;AASF;;;;;;;;;;;;GAYG;AACH,wBAAgB,kBAAkB,IAAI,MAAM,CAI3C;AAED;;;;;;;;;;;;;;GAcG;AACH,eAAO,MAAM,kBAAkB,EAAE,SAAS,MAAM,EAY/C,CAAC;AAqCF,wBAAgB,aAAa,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAUlD;AAED,qGAAqG;AACrG,MAAM,MAAM,aAAa,GAAG,KAAK,GAAG,KAAK,CAAC;AAU1C;;;;;;;;;;;;GAYG;AACH,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,aAAa,GAAG,OAAO,CAGjF"}
@@ -0,0 +1,270 @@
1
+ /**
2
+ * DOD-ONBOARD-HELP-1 §2b — the ONE vocabulary.
3
+ *
4
+ * A capability has exactly one name, and that name renders differently on each surface:
5
+ *
6
+ * capability "agents" → MCP tool `cello_agents` · CLI command `cello agents`
7
+ *
8
+ * The rule (Andre, 2026-07-11): **an MCP tool's name is `cello_` + the CLI command name**,
9
+ * snake_cased, keeping any sub-verb. Humans and agents learn a capability ONCE.
10
+ *
11
+ * Why this table exists rather than three lists of string literals:
12
+ *
13
+ * - the CLI registry names its commands,
14
+ * - the connect shim names its MCP tools,
15
+ * - and the DAEMON names them BACK to you in ~50 error-guidance strings.
16
+ *
17
+ * That third one is the trap. The daemon is where a new user actually MEETS these names — a
18
+ * refused send says "call cello_receive first". Rename the tools without touching the daemon and
19
+ * every one of those strings points at a tool that no longer exists: an error message that hands
20
+ * you a wrong instruction is worse than no error message. So the names live HERE, once, and the
21
+ * daemon RENDERS them for whichever surface is asking (it knows: `clientType` is recorded at
22
+ * `ipc.connect`). A CLI caller is told `cello use-agent`; an MCP caller is told `cello_use_agent`.
23
+ *
24
+ * Enforced by dod-onboard-help-1-vocabulary.test.ts:
25
+ * - every entry obeys the `cello_` + command rule (no hand-typed exceptions),
26
+ * - every `cello_*` token in a daemon guidance string resolves here (a stale/typo'd name FAILS
27
+ * the build rather than shipping a dead instruction),
28
+ * - the CLI registry's command names == the CLI names here,
29
+ * - the connect shim's tool names == the MCP names here.
30
+ */
31
+ /**
32
+ * Every capability with BOTH an MCP tool and a CLI command. Guidance naming one of these is
33
+ * rendered per caller.
34
+ *
35
+ * The `cli` string is what an operator would TYPE, so per-contact ops carry the `<pubkey>`
36
+ * placeholder — the CLI shape is `cello contact <pubkey> set-tier`, not `cello contact-set-tier`.
37
+ */
38
+ export const DUAL_SURFACE_VERBS = [
39
+ // Agents
40
+ { mcp: "cello_agents", cli: "cello agents" },
41
+ { mcp: "cello_start_agent", cli: "cello start-agent" },
42
+ { mcp: "cello_stop_agent", cli: "cello stop-agent" },
43
+ { mcp: "cello_use_agent", cli: "cello use-agent" },
44
+ { mcp: "cello_status", cli: "cello status" },
45
+ // Messaging
46
+ { mcp: "cello_initiate_session", cli: "cello initiate-session" },
47
+ { mcp: "cello_await_session", cli: "cello await-session" },
48
+ { mcp: "cello_close_session", cli: "cello close-session" },
49
+ { mcp: "cello_send", cli: "cello send" },
50
+ { mcp: "cello_receive", cli: "cello receive" },
51
+ { mcp: "cello_inbox", cli: "cello inbox" },
52
+ // Sessions & receipts
53
+ { mcp: "cello_sessions", cli: "cello sessions" },
54
+ { mcp: "cello_transcript", cli: "cello transcript" },
55
+ { mcp: "cello_sealed_receipt", cli: "cello sealed-receipt" },
56
+ // Contacts
57
+ { mcp: "cello_contacts", cli: "cello contacts" },
58
+ { mcp: "cello_contact_add", cli: "cello contact <pubkey> add" },
59
+ { mcp: "cello_contact_remove", cli: "cello contact <pubkey> remove" },
60
+ { mcp: "cello_contact_set_tier", cli: "cello contact <pubkey> set-tier" },
61
+ { mcp: "cello_contact_set_away", cli: "cello contact <pubkey> set-away" },
62
+ { mcp: "cello_contact_set_moniker", cli: "cello contact <pubkey> set-moniker" },
63
+ // Other
64
+ { mcp: "cello_moniker", cli: "cello moniker" },
65
+ { mcp: "cello_settings_get", cli: "cello settings get" },
66
+ { mcp: "cello_settings_set", cli: "cello settings set" },
67
+ ];
68
+ /**
69
+ * Tools that exist ONLY on the MCP surface. They are the DOD-CUSTODY-DAEMON-1 stubs — the daemon
70
+ * handlers return `not_implemented`, so there is deliberately no CLI command to build a second
71
+ * broken path to. Listed so the audit test can tell "known MCP-only" from "stale name".
72
+ */
73
+ export const MCP_ONLY_TOOLS = [
74
+ "cello_backup",
75
+ "cello_restore",
76
+ "cello_get_inclusion_proof",
77
+ ];
78
+ /**
79
+ * `cello_*` identifiers that are NOT tools and must never be mistaken for one.
80
+ *
81
+ * `cello_message` is the doorbell NOTIFICATION frame type (and the stem of the
82
+ * `notification.cello_message.dispatch.failed` log event). It is wire vocabulary and log taxonomy,
83
+ * never a command an operator could run — so the audit must recognise it rather than demand it be
84
+ * renamed to a tool that would not exist.
85
+ */
86
+ export const NON_TOOL_IDENTIFIERS = ["cello_message"];
87
+ /** Every `cello_*` token the daemon is ALLOWED to name in guidance. Anything else is a bug. */
88
+ export function knownToolNames() {
89
+ return new Set([
90
+ ...DUAL_SURFACE_VERBS.map((v) => v.mcp),
91
+ ...MCP_ONLY_TOOLS,
92
+ ...NON_TOOL_IDENTIFIERS,
93
+ ]);
94
+ }
95
+ /**
96
+ * CLI verbs that NO LONGER EXIST (DOD-ONBOARD-HELP-1 §2, clean renames — no aliases).
97
+ *
98
+ * Why this list exists as well as the tool audit: the tool audit matches `cello_*` tokens, so it is
99
+ * structurally BLIND to a dead *CLI* verb — `cello register` is just prose to it. That blindness is
100
+ * exactly how three dead-command instructions survived a green build in the first cut of this story
101
+ * (the missing-token onboarding error, an unregistered-agent warning, and relay-receipts' own usage
102
+ * line all still said `cello register` / `cello receipts`). A user handed a command that does not
103
+ * dispatch is worse off than one handed nothing.
104
+ *
105
+ * Anchoring is by NEGATIVE LOOKAHEAD, not a trailing space — see deadCliVerbPattern() for why the
106
+ * space failed.
107
+ */
108
+ export const DEAD_CLI_VERBS = [
109
+ "cello register",
110
+ "cello install",
111
+ "cello receipts",
112
+ "cello close",
113
+ "cello initiate",
114
+ // DELETED outright (Andre, 2026-07-11), not renamed — there is no replacement to point at. It was
115
+ // a literal alias of `cello receive` (the daemon ran the SAME handler) whose help claimed an
116
+ // accept/join step CELLO does not have. Listed here so no string can quietly offer it again.
117
+ "cello receive-session",
118
+ ];
119
+ /**
120
+ * The pre-§3 flat contact shape: `cello contact <op> <pubkey>`. The arguments are REVERSED now
121
+ * (`cello contact <pubkey> <op>`), so these are not merely renamed — following one silently targets
122
+ * a contact named "add". In the live shape an OP can never follow `contact` directly; a pubkey does.
123
+ */
124
+ const DEAD_CONTACT_OPS = ["list", "add", "remove", "tier", "away", "set-tier", "set-away", "set-moniker"];
125
+ /**
126
+ * Match any dead CLI verb, wherever it is SPOKEN — the one regex both audits share.
127
+ *
128
+ * The negative lookahead `(?![-\w])` is what makes this work, and the first cut got it wrong: it
129
+ * anchored on a trailing SPACE (`"cello register "`), which review broke immediately — a verb
130
+ * followed by a quote, period, backtick, paren or comma slipped straight through, and a live string
131
+ * (`'cello register'`, in the Hermes plugin scaffolded onto the operator's disk) was sailing past a
132
+ * green audit. An audit defeated by a full stop is not an audit.
133
+ *
134
+ * The lookahead still lets the LIVE commands through, because each dead verb is a strict prefix of
135
+ * its replacement: `cello register-agent`, `cello close-session`, `cello initiate-session` all have
136
+ * a `-` right where the lookahead refuses one.
137
+ */
138
+ export function deadCliVerbPattern() {
139
+ const verbs = DEAD_CLI_VERBS.map((v) => v.replace(/^cello /, "")).join("|");
140
+ const ops = DEAD_CONTACT_OPS.join("|");
141
+ return new RegExp(`cello\\s+(?:${verbs})(?![-\\w])|cello\\s+contact\\s+(?:${ops})(?![-\\w])`, "g");
142
+ }
143
+ /**
144
+ * MCP tool names this story RENAMED AWAY. Nothing may hand one of these to an agent again.
145
+ *
146
+ * Distinct from `knownToolNames()` (an allowlist: "every cello_* token must be in the table"). That
147
+ * allowlist works inside the daemon, where every `cello_*` token IS a tool name — but it cannot be
148
+ * used across the CLI package, where `cello_*` tokens are also IPC WIRE method names
149
+ * (`client.send("cello_list_agents")`, which deliberately do not move) and, in the scaffolded Hermes
150
+ * assets, plain config identifiers (`cello_socket_path`, `cello_dir`). An allowlist there would
151
+ * either drown in false positives or be so riddled with exceptions it stopped meaning anything.
152
+ *
153
+ * So outside the daemon we assert the DENYLIST instead: whatever else a string says, it must not
154
+ * name a tool we deleted. That is precisely the regression that shipped — the Hermes `platform_hint`
155
+ * told the operator's agent to call `cello_check_notifications` and `cello_list_sessions` after both
156
+ * had ceased to exist.
157
+ */
158
+ export const RENAMED_AWAY_TOOLS = [
159
+ // DELETED outright (Andre, 2026-07-11), not renamed: cello_receive_session was a literal alias of
160
+ // cello_receive — the same daemon handler — whose help claimed an accept/join step that does not
161
+ // exist. There is no replacement to point at; the capability was never real.
162
+ "cello_receive_session",
163
+ "cello_list_agents",
164
+ "cello_list_sessions",
165
+ "cello_check_notifications",
166
+ "cello_get_transcript",
167
+ "cello_get_sealed_receipt",
168
+ "cello_set_moniker",
169
+ "cello_contact_list",
170
+ ];
171
+ /** Longest-first, so `cello_contact_set_moniker` is matched before a hypothetical `cello_contact`. */
172
+ const CLI_BY_MCP = [...DUAL_SURFACE_VERBS].sort((a, b) => b.mcp.length - a.mcp.length);
173
+ /**
174
+ * Rewrite MCP tool names in a guidance string into the CLI verbs an operator would type.
175
+ *
176
+ * Only `cello_*` tokens in DUAL_SURFACE_VERBS are rewritten. An MCP-only tool has no CLI verb to
177
+ * offer, so it is left alone — inventing one would send the operator to a command that does not
178
+ * exist, which is the exact failure this whole mechanism prevents.
179
+ */
180
+ /**
181
+ * Instructions that carry ARGUMENTS, not just a name — rewritten whole, before the token pass.
182
+ *
183
+ * Renaming the tool is not enough when the instruction is a CALL. `cello inbox`'s rename notice ends
184
+ * with a literal, copy-pasteable invocation:
185
+ *
186
+ * Adopt it: cello_contact_set_moniker { pubkey: "abcd…", moniker: "Zoe" }, or ignore.
187
+ *
188
+ * Rewriting only the token gave a CLI operator `cello contact <pubkey> set-moniker { pubkey: "abcd…",
189
+ * moniker: "Zoe" }` — the tool's name with the tool's JSON still bolted on, and a literal `<pubkey>`
190
+ * placeholder next to the real key. It looks like a command and is not one; pasting it now trips the
191
+ * invalid_pubkey gate. Half a translation is its own kind of wrong answer.
192
+ *
193
+ * So the call form is translated as a unit, arguments and all, and the result is a line the operator
194
+ * can actually paste. Run BEFORE the token pass, which would otherwise have already eaten the name.
195
+ */
196
+ const CALL_FORMS = [
197
+ {
198
+ re: /cello_contact_set_moniker\s*\{\s*pubkey:\s*"([^"]*)",\s*moniker:\s*"([^"]*)"\s*\}/g,
199
+ cli: (m) => `cello contact ${m[1]} set-moniker "${m[2]}"`,
200
+ },
201
+ ];
202
+ export function toCliGuidance(text) {
203
+ let out = text;
204
+ for (const { re, cli } of CALL_FORMS) {
205
+ out = out.replace(new RegExp(re.source, re.flags), (...args) => cli(args));
206
+ }
207
+ for (const { mcp, cli } of CLI_BY_MCP) {
208
+ // Word-boundary on the tail: `cello_agents` must not match inside `cello_agents_foo`.
209
+ out = out.replace(new RegExp(`${mcp}(?![a-z_])`, "g"), cli);
210
+ }
211
+ return out;
212
+ }
213
+ /**
214
+ * The response keys that carry an INSTRUCTION TO A HUMAN — the ones that name a command to run.
215
+ *
216
+ * `reason` is deliberately absent and must stay absent: it is a machine-readable code that scripts
217
+ * branch on (`reason === "session_not_current"`). Rewriting it would silently break every caller.
218
+ */
219
+ const INSTRUCTION_KEYS = new Set(["guidance", "warning_guidance", "notice"]);
220
+ /**
221
+ * Render a handler's response for the surface that asked.
222
+ *
223
+ * Applied ONCE, at the IPC response boundary (daemon.ts wraps every handler), so a new handler
224
+ * cannot forget it and a new guidance string cannot drift. MCP callers get the response verbatim —
225
+ * the source strings already hold the canonical MCP names.
226
+ *
227
+ * RECURSES into nested objects and arrays. The first cut only rewrote a TOP-LEVEL `guidance`, which
228
+ * left real instructions per-surface-wrong: `cello inbox`'s rename notices live at
229
+ * `agents[i].rename_notices[j].notice` and told a CLI operator to call `cello_contact_set_moniker`
230
+ * with JSON arguments — a thing they cannot type. A choke point that only covers the easy shape is
231
+ * not a choke point; it just moves the leak somewhere less visible.
232
+ */
233
+ export function renderForSurface(result, surface) {
234
+ if (surface === "mcp")
235
+ return result;
236
+ return renderCli(result);
237
+ }
238
+ function renderCli(value) {
239
+ if (Array.isArray(value)) {
240
+ let changed = false;
241
+ const out = value.map((v) => {
242
+ const r = renderCli(v);
243
+ if (r !== v)
244
+ changed = true;
245
+ return r;
246
+ });
247
+ return changed ? out : value;
248
+ }
249
+ if (value === null || typeof value !== "object")
250
+ return value;
251
+ const record = value;
252
+ let changed = false;
253
+ const out = {};
254
+ for (const [key, v] of Object.entries(record)) {
255
+ let next = v;
256
+ if (INSTRUCTION_KEYS.has(key) && typeof v === "string") {
257
+ next = toCliGuidance(v);
258
+ }
259
+ else if (v !== null && typeof v === "object") {
260
+ next = renderCli(v);
261
+ }
262
+ if (next !== v)
263
+ changed = true;
264
+ out[key] = next;
265
+ }
266
+ // Identity-preserving when nothing changed — the MCP path and untouched CLI payloads keep the
267
+ // exact object the handler returned, so nothing downstream can depend on an incidental copy.
268
+ return changed ? out : value;
269
+ }
270
+ //# sourceMappingURL=vocabulary.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"vocabulary.js","sourceRoot":"","sources":["../src/vocabulary.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@cello-protocol/daemon",
3
- "version": "0.0.47",
3
+ "version": "0.0.49",
4
4
  "private": false,
5
5
  "type": "module",
6
6
  "engines": {
@@ -30,8 +30,8 @@
30
30
  "@signalapp/sqlcipher": "^3.3.5",
31
31
  "cbor-x": "^1.6.0",
32
32
  "it-length-prefixed": "^10.0.1",
33
- "@cello-protocol/crypto": "0.0.18",
34
33
  "@cello-protocol/gateway": "0.0.1",
34
+ "@cello-protocol/crypto": "0.0.18",
35
35
  "@cello-protocol/protocol-types": "0.0.19",
36
36
  "@cello-protocol/transport": "0.0.17"
37
37
  },