@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/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
+ * 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":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6BG;AAQH;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,kBAAkB,GAA+B;IAC5D,SAAS;IACT,EAAE,GAAG,EAAE,cAAc,EAAE,GAAG,EAAE,cAAc,EAAE;IAC5C,EAAE,GAAG,EAAE,mBAAmB,EAAE,GAAG,EAAE,mBAAmB,EAAE;IACtD,EAAE,GAAG,EAAE,kBAAkB,EAAE,GAAG,EAAE,kBAAkB,EAAE;IACpD,EAAE,GAAG,EAAE,iBAAiB,EAAE,GAAG,EAAE,iBAAiB,EAAE;IAClD,EAAE,GAAG,EAAE,cAAc,EAAE,GAAG,EAAE,cAAc,EAAE;IAC5C,YAAY;IACZ,EAAE,GAAG,EAAE,wBAAwB,EAAE,GAAG,EAAE,wBAAwB,EAAE;IAChE,EAAE,GAAG,EAAE,qBAAqB,EAAE,GAAG,EAAE,qBAAqB,EAAE;IAC1D,EAAE,GAAG,EAAE,qBAAqB,EAAE,GAAG,EAAE,qBAAqB,EAAE;IAC1D,EAAE,GAAG,EAAE,YAAY,EAAE,GAAG,EAAE,YAAY,EAAE;IACxC,EAAE,GAAG,EAAE,eAAe,EAAE,GAAG,EAAE,eAAe,EAAE;IAC9C,4FAA4F;IAC5F,+FAA+F;IAC/F,+FAA+F;IAC/F,gGAAgG;IAChG,uFAAuF;IACvF,EAAE,GAAG,EAAE,uBAAuB,EAAE,GAAG,EAAE,uBAAuB,EAAE;IAC9D,EAAE,GAAG,EAAE,aAAa,EAAE,GAAG,EAAE,aAAa,EAAE;IAC1C,sBAAsB;IACtB,EAAE,GAAG,EAAE,gBAAgB,EAAE,GAAG,EAAE,gBAAgB,EAAE;IAChD,EAAE,GAAG,EAAE,kBAAkB,EAAE,GAAG,EAAE,kBAAkB,EAAE;IACpD,EAAE,GAAG,EAAE,sBAAsB,EAAE,GAAG,EAAE,sBAAsB,EAAE;IAC5D,WAAW;IACX,EAAE,GAAG,EAAE,gBAAgB,EAAE,GAAG,EAAE,gBAAgB,EAAE;IAChD,EAAE,GAAG,EAAE,mBAAmB,EAAE,GAAG,EAAE,4BAA4B,EAAE;IAC/D,EAAE,GAAG,EAAE,sBAAsB,EAAE,GAAG,EAAE,+BAA+B,EAAE;IACrE,EAAE,GAAG,EAAE,wBAAwB,EAAE,GAAG,EAAE,iCAAiC,EAAE;IACzE,EAAE,GAAG,EAAE,wBAAwB,EAAE,GAAG,EAAE,iCAAiC,EAAE;IACzE,EAAE,GAAG,EAAE,2BAA2B,EAAE,GAAG,EAAE,oCAAoC,EAAE;IAC/E,QAAQ;IACR,EAAE,GAAG,EAAE,eAAe,EAAE,GAAG,EAAE,eAAe,EAAE;IAC9C,EAAE,GAAG,EAAE,oBAAoB,EAAE,GAAG,EAAE,oBAAoB,EAAE;IACxD,EAAE,GAAG,EAAE,oBAAoB,EAAE,GAAG,EAAE,oBAAoB,EAAE;CACzD,CAAC;AAEF;;;;GAIG;AACH,MAAM,CAAC,MAAM,cAAc,GAAsB;IAC/C,cAAc;IACd,eAAe;IACf,2BAA2B;CAC5B,CAAC;AAEF;;;;;;;GAOG;AACH,MAAM,CAAC,MAAM,oBAAoB,GAAsB,CAAC,eAAe,CAAC,CAAC;AAEzE,+FAA+F;AAC/F,MAAM,UAAU,cAAc;IAC5B,OAAO,IAAI,GAAG,CAAC;QACb,GAAG,kBAAkB,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC;QACvC,GAAG,cAAc;QACjB,GAAG,oBAAoB;KACxB,CAAC,CAAC;AACL,CAAC;AAED;;;;;;;;;;;;GAYG;AACH,MAAM,CAAC,MAAM,cAAc,GAAsB;IAC/C,gBAAgB;IAChB,eAAe;IACf,gBAAgB;IAChB,aAAa;IACb,gBAAgB;CACjB,CAAC;AAEF;;;;GAIG;AACH,MAAM,gBAAgB,GAAG,CAAC,MAAM,EAAE,KAAK,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,UAAU,EAAE,UAAU,EAAE,aAAa,CAAC,CAAC;AAE1G;;;;;;;;;;;;GAYG;AACH,MAAM,UAAU,kBAAkB;IAChC,MAAM,KAAK,GAAG,cAAc,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,SAAS,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IAC5E,MAAM,GAAG,GAAG,gBAAgB,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IACvC,OAAO,IAAI,MAAM,CAAC,eAAe,KAAK,sCAAsC,GAAG,aAAa,EAAE,GAAG,CAAC,CAAC;AACrG,CAAC;AAED;;;;;;;;;;;;;;GAcG;AACH,MAAM,CAAC,MAAM,kBAAkB,GAAsB;IACnD,mBAAmB;IACnB,qBAAqB;IACrB,2BAA2B;IAC3B,sBAAsB;IACtB,0BAA0B;IAC1B,mBAAmB;IACnB,oBAAoB;CACrB,CAAC;AAEF,sGAAsG;AACtG,MAAM,UAAU,GAAmC,CAAC,GAAG,kBAAkB,CAAC,CAAC,IAAI,CAC7E,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,MAAM,GAAG,CAAC,CAAC,GAAG,CAAC,MAAM,CACtC,CAAC;AAEF;;;;;;GAMG;AACH;;;;;;;;;;;;;;;GAeG;AACH,MAAM,UAAU,GAAuE;IACrF;QACE,EAAE,EAAE,oFAAoF;QACxF,GAAG,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC,GAAG;KAC1D;CACF,CAAC;AAEF,MAAM,UAAU,aAAa,CAAC,IAAY;IACxC,IAAI,GAAG,GAAG,IAAI,CAAC;IACf,KAAK,MAAM,EAAE,EAAE,EAAE,GAAG,EAAE,IAAI,UAAU,EAAE,CAAC;QACrC,GAAG,GAAG,GAAG,CAAC,OAAO,CAAC,IAAI,MAAM,CAAC,EAAE,CAAC,MAAM,EAAE,EAAE,CAAC,KAAK,CAAC,EAAE,CAAC,GAAG,IAAI,EAAE,EAAE,CAAC,GAAG,CAAC,IAAkC,CAAC,CAAC,CAAC;IAC3G,CAAC;IACD,KAAK,MAAM,EAAE,GAAG,EAAE,GAAG,EAAE,IAAI,UAAU,EAAE,CAAC;QACtC,sFAAsF;QACtF,GAAG,GAAG,GAAG,CAAC,OAAO,CAAC,IAAI,MAAM,CAAC,GAAG,GAAG,YAAY,EAAE,GAAG,CAAC,EAAE,GAAG,CAAC,CAAC;IAC9D,CAAC;IACD,OAAO,GAAG,CAAC;AACb,CAAC;AAKD;;;;;GAKG;AACH,MAAM,gBAAgB,GAAG,IAAI,GAAG,CAAC,CAAC,UAAU,EAAE,kBAAkB,EAAE,QAAQ,CAAC,CAAC,CAAC;AAE7E;;;;;;;;;;;;GAYG;AACH,MAAM,UAAU,gBAAgB,CAAC,MAAe,EAAE,OAAsB;IACtE,IAAI,OAAO,KAAK,KAAK;QAAE,OAAO,MAAM,CAAC;IACrC,OAAO,SAAS,CAAC,MAAM,CAAC,CAAC;AAC3B,CAAC;AAED,SAAS,SAAS,CAAC,KAAc;IAC/B,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;QACzB,IAAI,OAAO,GAAG,KAAK,CAAC;QACpB,MAAM,GAAG,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE;YAC1B,MAAM,CAAC,GAAG,SAAS,CAAC,CAAC,CAAC,CAAC;YACvB,IAAI,CAAC,KAAK,CAAC;gBAAE,OAAO,GAAG,IAAI,CAAC;YAC5B,OAAO,CAAC,CAAC;QACX,CAAC,CAAC,CAAC;QACH,OAAO,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC;IAC/B,CAAC;IACD,IAAI,KAAK,KAAK,IAAI,IAAI,OAAO,KAAK,KAAK,QAAQ;QAAE,OAAO,KAAK,CAAC;IAE9D,MAAM,MAAM,GAAG,KAAgC,CAAC;IAChD,IAAI,OAAO,GAAG,KAAK,CAAC;IACpB,MAAM,GAAG,GAA4B,EAAE,CAAC;IACxC,KAAK,MAAM,CAAC,GAAG,EAAE,CAAC,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC;QAC9C,IAAI,IAAI,GAAY,CAAC,CAAC;QACtB,IAAI,gBAAgB,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,OAAO,CAAC,KAAK,QAAQ,EAAE,CAAC;YACvD,IAAI,GAAG,aAAa,CAAC,CAAC,CAAC,CAAC;QAC1B,CAAC;aAAM,IAAI,CAAC,KAAK,IAAI,IAAI,OAAO,CAAC,KAAK,QAAQ,EAAE,CAAC;YAC/C,IAAI,GAAG,SAAS,CAAC,CAAC,CAAC,CAAC;QACtB,CAAC;QACD,IAAI,IAAI,KAAK,CAAC;YAAE,OAAO,GAAG,IAAI,CAAC;QAC/B,GAAG,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC;IAClB,CAAC;IACD,8FAA8F;IAC9F,6FAA6F;IAC7F,OAAO,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC;AAC/B,CAAC"}
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.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": {