@cello-protocol/daemon 0.0.47 → 0.0.48
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/daemon.d.ts.map +1 -1
- package/dist/daemon.js +104 -32
- package/dist/daemon.js.map +1 -1
- package/dist/index.d.ts +1 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +4 -0
- package/dist/index.js.map +1 -1
- package/dist/vocabulary.d.ts +122 -0
- package/dist/vocabulary.d.ts.map +1 -0
- package/dist/vocabulary.js +268 -0
- package/dist/vocabulary.js.map +1 -0
- package/package.json +3 -3
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
|
package/dist/index.d.ts.map
CHANGED
|
@@ -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
|
+
* The trailing space matters: it anchors the verb so `cello close-session` does not match
|
|
72
|
+
* `cello close `, and `cello register-agent` does not match `cello register `.
|
|
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,EAmCxD,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,EAM3C,CAAC;AASF;;;;;;;;;;;;GAYG;AACH,wBAAgB,kBAAkB,IAAI,MAAM,CAI3C;AAED;;;;;;;;;;;;;;GAcG;AACH,eAAO,MAAM,kBAAkB,EAAE,SAAS,MAAM,EAQ/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,268 @@
|
|
|
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
|
+
// `receive_session` is a literal ALIAS of `receive` — the daemon registers the SAME handler
|
|
52
|
+
// object for both (`handlers.set("cello_receive_session", handleReceive)`). It does not accept
|
|
53
|
+
// or join anything; inbound sessions are auto-accepted by the standing receiver. Its help said
|
|
54
|
+
// "Accept / join an inbound session request", which was simply false. Pending Andre's ruling to
|
|
55
|
+
// DELETE it (no-aliases doctrine); until then it is described for what it actually is.
|
|
56
|
+
{ mcp: "cello_receive_session", cli: "cello receive-session" },
|
|
57
|
+
{ mcp: "cello_inbox", cli: "cello inbox" },
|
|
58
|
+
// Sessions & receipts
|
|
59
|
+
{ mcp: "cello_sessions", cli: "cello sessions" },
|
|
60
|
+
{ mcp: "cello_transcript", cli: "cello transcript" },
|
|
61
|
+
{ mcp: "cello_sealed_receipt", cli: "cello sealed-receipt" },
|
|
62
|
+
// Contacts
|
|
63
|
+
{ mcp: "cello_contacts", cli: "cello contacts" },
|
|
64
|
+
{ mcp: "cello_contact_add", cli: "cello contact <pubkey> add" },
|
|
65
|
+
{ mcp: "cello_contact_remove", cli: "cello contact <pubkey> remove" },
|
|
66
|
+
{ mcp: "cello_contact_set_tier", cli: "cello contact <pubkey> set-tier" },
|
|
67
|
+
{ mcp: "cello_contact_set_away", cli: "cello contact <pubkey> set-away" },
|
|
68
|
+
{ mcp: "cello_contact_set_moniker", cli: "cello contact <pubkey> set-moniker" },
|
|
69
|
+
// Other
|
|
70
|
+
{ mcp: "cello_moniker", cli: "cello moniker" },
|
|
71
|
+
{ mcp: "cello_settings_get", cli: "cello settings get" },
|
|
72
|
+
{ mcp: "cello_settings_set", cli: "cello settings set" },
|
|
73
|
+
];
|
|
74
|
+
/**
|
|
75
|
+
* Tools that exist ONLY on the MCP surface. They are the DOD-CUSTODY-DAEMON-1 stubs — the daemon
|
|
76
|
+
* handlers return `not_implemented`, so there is deliberately no CLI command to build a second
|
|
77
|
+
* broken path to. Listed so the audit test can tell "known MCP-only" from "stale name".
|
|
78
|
+
*/
|
|
79
|
+
export const MCP_ONLY_TOOLS = [
|
|
80
|
+
"cello_backup",
|
|
81
|
+
"cello_restore",
|
|
82
|
+
"cello_get_inclusion_proof",
|
|
83
|
+
];
|
|
84
|
+
/**
|
|
85
|
+
* `cello_*` identifiers that are NOT tools and must never be mistaken for one.
|
|
86
|
+
*
|
|
87
|
+
* `cello_message` is the doorbell NOTIFICATION frame type (and the stem of the
|
|
88
|
+
* `notification.cello_message.dispatch.failed` log event). It is wire vocabulary and log taxonomy,
|
|
89
|
+
* never a command an operator could run — so the audit must recognise it rather than demand it be
|
|
90
|
+
* renamed to a tool that would not exist.
|
|
91
|
+
*/
|
|
92
|
+
export const NON_TOOL_IDENTIFIERS = ["cello_message"];
|
|
93
|
+
/** Every `cello_*` token the daemon is ALLOWED to name in guidance. Anything else is a bug. */
|
|
94
|
+
export function knownToolNames() {
|
|
95
|
+
return new Set([
|
|
96
|
+
...DUAL_SURFACE_VERBS.map((v) => v.mcp),
|
|
97
|
+
...MCP_ONLY_TOOLS,
|
|
98
|
+
...NON_TOOL_IDENTIFIERS,
|
|
99
|
+
]);
|
|
100
|
+
}
|
|
101
|
+
/**
|
|
102
|
+
* CLI verbs that NO LONGER EXIST (DOD-ONBOARD-HELP-1 §2, clean renames — no aliases).
|
|
103
|
+
*
|
|
104
|
+
* Why this list exists as well as the tool audit: the tool audit matches `cello_*` tokens, so it is
|
|
105
|
+
* structurally BLIND to a dead *CLI* verb — `cello register` is just prose to it. That blindness is
|
|
106
|
+
* exactly how three dead-command instructions survived a green build in the first cut of this story
|
|
107
|
+
* (the missing-token onboarding error, an unregistered-agent warning, and relay-receipts' own usage
|
|
108
|
+
* line all still said `cello register` / `cello receipts`). A user handed a command that does not
|
|
109
|
+
* dispatch is worse off than one handed nothing.
|
|
110
|
+
*
|
|
111
|
+
* The trailing space matters: it anchors the verb so `cello close-session` does not match
|
|
112
|
+
* `cello close `, and `cello register-agent` does not match `cello register `.
|
|
113
|
+
*/
|
|
114
|
+
export const DEAD_CLI_VERBS = [
|
|
115
|
+
"cello register",
|
|
116
|
+
"cello install",
|
|
117
|
+
"cello receipts",
|
|
118
|
+
"cello close",
|
|
119
|
+
"cello initiate",
|
|
120
|
+
];
|
|
121
|
+
/**
|
|
122
|
+
* The pre-§3 flat contact shape: `cello contact <op> <pubkey>`. The arguments are REVERSED now
|
|
123
|
+
* (`cello contact <pubkey> <op>`), so these are not merely renamed — following one silently targets
|
|
124
|
+
* a contact named "add". In the live shape an OP can never follow `contact` directly; a pubkey does.
|
|
125
|
+
*/
|
|
126
|
+
const DEAD_CONTACT_OPS = ["list", "add", "remove", "tier", "away", "set-tier", "set-away", "set-moniker"];
|
|
127
|
+
/**
|
|
128
|
+
* Match any dead CLI verb, wherever it is SPOKEN — the one regex both audits share.
|
|
129
|
+
*
|
|
130
|
+
* The negative lookahead `(?![-\w])` is what makes this work, and the first cut got it wrong: it
|
|
131
|
+
* anchored on a trailing SPACE (`"cello register "`), which review broke immediately — a verb
|
|
132
|
+
* followed by a quote, period, backtick, paren or comma slipped straight through, and a live string
|
|
133
|
+
* (`'cello register'`, in the Hermes plugin scaffolded onto the operator's disk) was sailing past a
|
|
134
|
+
* green audit. An audit defeated by a full stop is not an audit.
|
|
135
|
+
*
|
|
136
|
+
* The lookahead still lets the LIVE commands through, because each dead verb is a strict prefix of
|
|
137
|
+
* its replacement: `cello register-agent`, `cello close-session`, `cello initiate-session` all have
|
|
138
|
+
* a `-` right where the lookahead refuses one.
|
|
139
|
+
*/
|
|
140
|
+
export function deadCliVerbPattern() {
|
|
141
|
+
const verbs = DEAD_CLI_VERBS.map((v) => v.replace(/^cello /, "")).join("|");
|
|
142
|
+
const ops = DEAD_CONTACT_OPS.join("|");
|
|
143
|
+
return new RegExp(`cello\\s+(?:${verbs})(?![-\\w])|cello\\s+contact\\s+(?:${ops})(?![-\\w])`, "g");
|
|
144
|
+
}
|
|
145
|
+
/**
|
|
146
|
+
* MCP tool names this story RENAMED AWAY. Nothing may hand one of these to an agent again.
|
|
147
|
+
*
|
|
148
|
+
* Distinct from `knownToolNames()` (an allowlist: "every cello_* token must be in the table"). That
|
|
149
|
+
* allowlist works inside the daemon, where every `cello_*` token IS a tool name — but it cannot be
|
|
150
|
+
* used across the CLI package, where `cello_*` tokens are also IPC WIRE method names
|
|
151
|
+
* (`client.send("cello_list_agents")`, which deliberately do not move) and, in the scaffolded Hermes
|
|
152
|
+
* assets, plain config identifiers (`cello_socket_path`, `cello_dir`). An allowlist there would
|
|
153
|
+
* either drown in false positives or be so riddled with exceptions it stopped meaning anything.
|
|
154
|
+
*
|
|
155
|
+
* So outside the daemon we assert the DENYLIST instead: whatever else a string says, it must not
|
|
156
|
+
* name a tool we deleted. That is precisely the regression that shipped — the Hermes `platform_hint`
|
|
157
|
+
* told the operator's agent to call `cello_check_notifications` and `cello_list_sessions` after both
|
|
158
|
+
* had ceased to exist.
|
|
159
|
+
*/
|
|
160
|
+
export const RENAMED_AWAY_TOOLS = [
|
|
161
|
+
"cello_list_agents",
|
|
162
|
+
"cello_list_sessions",
|
|
163
|
+
"cello_check_notifications",
|
|
164
|
+
"cello_get_transcript",
|
|
165
|
+
"cello_get_sealed_receipt",
|
|
166
|
+
"cello_set_moniker",
|
|
167
|
+
"cello_contact_list",
|
|
168
|
+
];
|
|
169
|
+
/** Longest-first, so `cello_contact_set_moniker` is matched before a hypothetical `cello_contact`. */
|
|
170
|
+
const CLI_BY_MCP = [...DUAL_SURFACE_VERBS].sort((a, b) => b.mcp.length - a.mcp.length);
|
|
171
|
+
/**
|
|
172
|
+
* Rewrite MCP tool names in a guidance string into the CLI verbs an operator would type.
|
|
173
|
+
*
|
|
174
|
+
* Only `cello_*` tokens in DUAL_SURFACE_VERBS are rewritten. An MCP-only tool has no CLI verb to
|
|
175
|
+
* offer, so it is left alone — inventing one would send the operator to a command that does not
|
|
176
|
+
* exist, which is the exact failure this whole mechanism prevents.
|
|
177
|
+
*/
|
|
178
|
+
/**
|
|
179
|
+
* Instructions that carry ARGUMENTS, not just a name — rewritten whole, before the token pass.
|
|
180
|
+
*
|
|
181
|
+
* Renaming the tool is not enough when the instruction is a CALL. `cello inbox`'s rename notice ends
|
|
182
|
+
* with a literal, copy-pasteable invocation:
|
|
183
|
+
*
|
|
184
|
+
* Adopt it: cello_contact_set_moniker { pubkey: "abcd…", moniker: "Zoe" }, or ignore.
|
|
185
|
+
*
|
|
186
|
+
* Rewriting only the token gave a CLI operator `cello contact <pubkey> set-moniker { pubkey: "abcd…",
|
|
187
|
+
* moniker: "Zoe" }` — the tool's name with the tool's JSON still bolted on, and a literal `<pubkey>`
|
|
188
|
+
* placeholder next to the real key. It looks like a command and is not one; pasting it now trips the
|
|
189
|
+
* invalid_pubkey gate. Half a translation is its own kind of wrong answer.
|
|
190
|
+
*
|
|
191
|
+
* So the call form is translated as a unit, arguments and all, and the result is a line the operator
|
|
192
|
+
* can actually paste. Run BEFORE the token pass, which would otherwise have already eaten the name.
|
|
193
|
+
*/
|
|
194
|
+
const CALL_FORMS = [
|
|
195
|
+
{
|
|
196
|
+
re: /cello_contact_set_moniker\s*\{\s*pubkey:\s*"([^"]*)",\s*moniker:\s*"([^"]*)"\s*\}/g,
|
|
197
|
+
cli: (m) => `cello contact ${m[1]} set-moniker "${m[2]}"`,
|
|
198
|
+
},
|
|
199
|
+
];
|
|
200
|
+
export function toCliGuidance(text) {
|
|
201
|
+
let out = text;
|
|
202
|
+
for (const { re, cli } of CALL_FORMS) {
|
|
203
|
+
out = out.replace(new RegExp(re.source, re.flags), (...args) => cli(args));
|
|
204
|
+
}
|
|
205
|
+
for (const { mcp, cli } of CLI_BY_MCP) {
|
|
206
|
+
// Word-boundary on the tail: `cello_agents` must not match inside `cello_agents_foo`.
|
|
207
|
+
out = out.replace(new RegExp(`${mcp}(?![a-z_])`, "g"), cli);
|
|
208
|
+
}
|
|
209
|
+
return out;
|
|
210
|
+
}
|
|
211
|
+
/**
|
|
212
|
+
* The response keys that carry an INSTRUCTION TO A HUMAN — the ones that name a command to run.
|
|
213
|
+
*
|
|
214
|
+
* `reason` is deliberately absent and must stay absent: it is a machine-readable code that scripts
|
|
215
|
+
* branch on (`reason === "session_not_current"`). Rewriting it would silently break every caller.
|
|
216
|
+
*/
|
|
217
|
+
const INSTRUCTION_KEYS = new Set(["guidance", "warning_guidance", "notice"]);
|
|
218
|
+
/**
|
|
219
|
+
* Render a handler's response for the surface that asked.
|
|
220
|
+
*
|
|
221
|
+
* Applied ONCE, at the IPC response boundary (daemon.ts wraps every handler), so a new handler
|
|
222
|
+
* cannot forget it and a new guidance string cannot drift. MCP callers get the response verbatim —
|
|
223
|
+
* the source strings already hold the canonical MCP names.
|
|
224
|
+
*
|
|
225
|
+
* RECURSES into nested objects and arrays. The first cut only rewrote a TOP-LEVEL `guidance`, which
|
|
226
|
+
* left real instructions per-surface-wrong: `cello inbox`'s rename notices live at
|
|
227
|
+
* `agents[i].rename_notices[j].notice` and told a CLI operator to call `cello_contact_set_moniker`
|
|
228
|
+
* with JSON arguments — a thing they cannot type. A choke point that only covers the easy shape is
|
|
229
|
+
* not a choke point; it just moves the leak somewhere less visible.
|
|
230
|
+
*/
|
|
231
|
+
export function renderForSurface(result, surface) {
|
|
232
|
+
if (surface === "mcp")
|
|
233
|
+
return result;
|
|
234
|
+
return renderCli(result);
|
|
235
|
+
}
|
|
236
|
+
function renderCli(value) {
|
|
237
|
+
if (Array.isArray(value)) {
|
|
238
|
+
let changed = false;
|
|
239
|
+
const out = value.map((v) => {
|
|
240
|
+
const r = renderCli(v);
|
|
241
|
+
if (r !== v)
|
|
242
|
+
changed = true;
|
|
243
|
+
return r;
|
|
244
|
+
});
|
|
245
|
+
return changed ? out : value;
|
|
246
|
+
}
|
|
247
|
+
if (value === null || typeof value !== "object")
|
|
248
|
+
return value;
|
|
249
|
+
const record = value;
|
|
250
|
+
let changed = false;
|
|
251
|
+
const out = {};
|
|
252
|
+
for (const [key, v] of Object.entries(record)) {
|
|
253
|
+
let next = v;
|
|
254
|
+
if (INSTRUCTION_KEYS.has(key) && typeof v === "string") {
|
|
255
|
+
next = toCliGuidance(v);
|
|
256
|
+
}
|
|
257
|
+
else if (v !== null && typeof v === "object") {
|
|
258
|
+
next = renderCli(v);
|
|
259
|
+
}
|
|
260
|
+
if (next !== v)
|
|
261
|
+
changed = true;
|
|
262
|
+
out[key] = next;
|
|
263
|
+
}
|
|
264
|
+
// Identity-preserving when nothing changed — the MCP path and untouched CLI payloads keep the
|
|
265
|
+
// exact object the handler returned, so nothing downstream can depend on an incidental copy.
|
|
266
|
+
return changed ? out : value;
|
|
267
|
+
}
|
|
268
|
+
//# 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.
|
|
3
|
+
"version": "0.0.48",
|
|
4
4
|
"private": false,
|
|
5
5
|
"type": "module",
|
|
6
6
|
"engines": {
|
|
@@ -30,9 +30,9 @@
|
|
|
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
|
-
"@cello-protocol/gateway": "0.0.1",
|
|
35
33
|
"@cello-protocol/protocol-types": "0.0.19",
|
|
34
|
+
"@cello-protocol/gateway": "0.0.1",
|
|
35
|
+
"@cello-protocol/crypto": "0.0.18",
|
|
36
36
|
"@cello-protocol/transport": "0.0.17"
|
|
37
37
|
},
|
|
38
38
|
"devDependencies": {
|