@cello-protocol/daemon 0.0.78 → 0.0.79

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.
@@ -0,0 +1,43 @@
1
+ /**
2
+ * M10B / DOD-END-ACCEPT-1 — the `consent_state` column on `wallet_trust_signals` (`M10B-D14r2`).
3
+ *
4
+ * WHY THIS IS ITS OWN FILE AND NOT A LINE IN `ensureTrustSignalSchema`. That function runs on EVERY
5
+ * `startDaemon` and ends in a bare `catch {}` ("Column already exists — safe to ignore"). A consent
6
+ * migration written as a sibling `ALTER`/`UPDATE` in there would have its failures swallowed AND its
7
+ * backfill run unconditionally — so an operator who REFUSES an endorsement would have it flipped
8
+ * back to `accepted` on the next restart, silently, and it would become presentable again. The
9
+ * client DB has no migration versioning to catch that.
10
+ *
11
+ * So this follows the pattern the repo already proved for exactly this hazard
12
+ * (`contacts-tier-migration.ts`):
13
+ * - a `PRAGMA table_info` COLUMN-BIRTH gate, so the one-time step is tied to the column being
14
+ * created rather than to a NULL that could reappear later;
15
+ * - NO column DEFAULT, so the backfill has a real discriminator — with a DEFAULT every existing
16
+ * row gets a value the instant the column exists and the backfill matches nothing;
17
+ * - the ALTER and the backfill in ONE transaction, so a crash between them cannot leave the
18
+ * column present and the rows un-backfilled, which would skip the one-time step FOREVER;
19
+ * - a RETHROW, because a migration that fails silently is a schema nobody can trust.
20
+ *
21
+ * DIRECTION OF THE BACKFILL. Existing rows become `accepted`, and that is correct rather than
22
+ * lenient: every row that predates this column is portal-issued, minted about the operator, for the
23
+ * operator, at their own action — there was never a third party whose decision was pending. Making
24
+ * them `pending` would silently render every phone/email signal already in every wallet
25
+ * unpresentable, which is a data-loss-shaped bug that raises no error.
26
+ *
27
+ * NEW rows are a different question and are handled at the write path: an `issuer_kind: agent`
28
+ * signal is inserted `pending`, because it is exactly the case where somebody else authored an
29
+ * object about you.
30
+ */
31
+ import type { DaemonDatabase } from "./sqlcipher-db.js";
32
+ import type { Logger } from "./types.js";
33
+ /**
34
+ * The consent states. Anything not in this set — including NULL and including a value with stray
35
+ * whitespace or case — is UNPRESENTABLE (§5a: absent is not fine). The presentability predicate
36
+ * tests for exactly `accepted` rather than testing for the absence of a bad state, so an
37
+ * unrecognised value fails closed by construction.
38
+ */
39
+ export type ConsentState = "pending" | "accepted" | "refused";
40
+ /** Present-tense truth for the reader: this is what gates presentation. */
41
+ export declare const CONSENT_ACCEPTED = "accepted";
42
+ export declare function migrateWalletAddConsentState(db: DaemonDatabase, logger: Logger): void;
43
+ //# sourceMappingURL=consent-migration.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"consent-migration.d.ts","sourceRoot":"","sources":["../src/consent-migration.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6BG;AAEH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AACxD,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,YAAY,CAAC;AAEzC;;;;;GAKG;AACH,MAAM,MAAM,YAAY,GAAG,SAAS,GAAG,UAAU,GAAG,SAAS,CAAC;AAE9D,2EAA2E;AAC3E,eAAO,MAAM,gBAAgB,aAAa,CAAC;AAE3C,wBAAgB,4BAA4B,CAAC,EAAE,EAAE,cAAc,EAAE,MAAM,EAAE,MAAM,GAAG,IAAI,CA+BrF"}
@@ -0,0 +1,63 @@
1
+ /**
2
+ * M10B / DOD-END-ACCEPT-1 — the `consent_state` column on `wallet_trust_signals` (`M10B-D14r2`).
3
+ *
4
+ * WHY THIS IS ITS OWN FILE AND NOT A LINE IN `ensureTrustSignalSchema`. That function runs on EVERY
5
+ * `startDaemon` and ends in a bare `catch {}` ("Column already exists — safe to ignore"). A consent
6
+ * migration written as a sibling `ALTER`/`UPDATE` in there would have its failures swallowed AND its
7
+ * backfill run unconditionally — so an operator who REFUSES an endorsement would have it flipped
8
+ * back to `accepted` on the next restart, silently, and it would become presentable again. The
9
+ * client DB has no migration versioning to catch that.
10
+ *
11
+ * So this follows the pattern the repo already proved for exactly this hazard
12
+ * (`contacts-tier-migration.ts`):
13
+ * - a `PRAGMA table_info` COLUMN-BIRTH gate, so the one-time step is tied to the column being
14
+ * created rather than to a NULL that could reappear later;
15
+ * - NO column DEFAULT, so the backfill has a real discriminator — with a DEFAULT every existing
16
+ * row gets a value the instant the column exists and the backfill matches nothing;
17
+ * - the ALTER and the backfill in ONE transaction, so a crash between them cannot leave the
18
+ * column present and the rows un-backfilled, which would skip the one-time step FOREVER;
19
+ * - a RETHROW, because a migration that fails silently is a schema nobody can trust.
20
+ *
21
+ * DIRECTION OF THE BACKFILL. Existing rows become `accepted`, and that is correct rather than
22
+ * lenient: every row that predates this column is portal-issued, minted about the operator, for the
23
+ * operator, at their own action — there was never a third party whose decision was pending. Making
24
+ * them `pending` would silently render every phone/email signal already in every wallet
25
+ * unpresentable, which is a data-loss-shaped bug that raises no error.
26
+ *
27
+ * NEW rows are a different question and are handled at the write path: an `issuer_kind: agent`
28
+ * signal is inserted `pending`, because it is exactly the case where somebody else authored an
29
+ * object about you.
30
+ */
31
+ /** Present-tense truth for the reader: this is what gates presentation. */
32
+ export const CONSENT_ACCEPTED = "accepted";
33
+ export function migrateWalletAddConsentState(db, logger) {
34
+ const columns = new Set(db.prepare("PRAGMA table_info(wallet_trust_signals)").all().map((c) => c.name));
35
+ // BIRTH GATE. Idempotent, and deliberately NOT "backfill wherever the value is NULL": a NULL that
36
+ // appears later is not a legacy row, and promoting it would be the clobber this file prevents.
37
+ if (columns.has("consent_state"))
38
+ return;
39
+ db.exec("BEGIN");
40
+ try {
41
+ // No DEFAULT — see the header. The rows are given their value by the explicit backfill below.
42
+ db.exec("ALTER TABLE wallet_trust_signals ADD COLUMN consent_state TEXT");
43
+ const res = db
44
+ .prepare(`UPDATE wallet_trust_signals SET consent_state = '${CONSENT_ACCEPTED}'`)
45
+ .run();
46
+ db.exec("COMMIT");
47
+ logger.info("signal.consent.migrated", {
48
+ backfilled: Number(res.changes),
49
+ to: CONSENT_ACCEPTED,
50
+ reason: "rows predating consent are portal-issued — minted for the operator, at their own action",
51
+ });
52
+ }
53
+ catch (err) {
54
+ db.exec("ROLLBACK");
55
+ // RETHROW. A swallowed failure here leaves the daemon running against a schema it believes has
56
+ // consent and does not — which presents unconsented endorsements while every test passes.
57
+ logger.error("signal.consent.migration_failed", {
58
+ reason: err instanceof Error ? err.message : String(err),
59
+ });
60
+ throw err;
61
+ }
62
+ }
63
+ //# sourceMappingURL=consent-migration.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"consent-migration.js","sourceRoot":"","sources":["../src/consent-migration.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6BG;AAaH,2EAA2E;AAC3E,MAAM,CAAC,MAAM,gBAAgB,GAAG,UAAU,CAAC;AAE3C,MAAM,UAAU,4BAA4B,CAAC,EAAkB,EAAE,MAAc;IAC7E,MAAM,OAAO,GAAG,IAAI,GAAG,CACpB,EAAE,CAAC,OAAO,CAAC,yCAAyC,CAAC,CAAC,GAAG,EAA8B,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAC5G,CAAC;IAEF,kGAAkG;IAClG,+FAA+F;IAC/F,IAAI,OAAO,CAAC,GAAG,CAAC,eAAe,CAAC;QAAE,OAAO;IAEzC,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IACjB,IAAI,CAAC;QACH,8FAA8F;QAC9F,EAAE,CAAC,IAAI,CAAC,gEAAgE,CAAC,CAAC;QAC1E,MAAM,GAAG,GAAG,EAAE;aACX,OAAO,CAAC,oDAAoD,gBAAgB,GAAG,CAAC;aAChF,GAAG,EAAE,CAAC;QACT,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QAClB,MAAM,CAAC,IAAI,CAAC,yBAAyB,EAAE;YACrC,UAAU,EAAE,MAAM,CAAC,GAAG,CAAC,OAAO,CAAC;YAC/B,EAAE,EAAE,gBAAgB;YACpB,MAAM,EAAE,yFAAyF;SAClG,CAAC,CAAC;IACL,CAAC;IAAC,OAAO,GAAY,EAAE,CAAC;QACtB,EAAE,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;QACpB,+FAA+F;QAC/F,0FAA0F;QAC1F,MAAM,CAAC,KAAK,CAAC,iCAAiC,EAAE;YAC9C,MAAM,EAAE,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC;SACzD,CAAC,CAAC;QACH,MAAM,GAAG,CAAC;IACZ,CAAC;AACH,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"outbound-sessions.d.ts","sourceRoot":"","sources":["../src/outbound-sessions.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AACH,OAAO,EAAE,gBAAgB,EAAE,KAAK,SAAS,EAAE,MAAM,2BAA2B,CAAC;AAC7E,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAC;AAC1D,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,2BAA2B,CAAC;AACpE,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,YAAY,CAAC;AACzC,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAChE,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,wBAAwB,CAAC;AACxE,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,0BAA0B,CAAC;AACnE,OAAO,KAAK,EAAE,iBAAiB,EAA4B,MAAM,yBAAyB,CAAC;AAK3F,OAAO,KAAK,EAAE,2BAA2B,EAAE,MAAM,2BAA2B,CAAC;AAM7E,MAAM,WAAW,mBAAmB;IAClC,MAAM,EAAE,MAAM,CAAC;IACf,kBAAkB,EAAE,kBAAkB,CAAC;IACvC,cAAc,EAAE,CAAC,SAAS,EAAE,MAAM,KAAK,WAAW,GAAG,SAAS,CAAC;IAC/D,cAAc,EAAE,CAAC,SAAS,EAAE,MAAM,KAAK,yBAAyB,CAAC;IACjE,iBAAiB,EAAE,CAAC,SAAS,EAAE,MAAM,EAAE,WAAW,EAAE,WAAW,EAAE,SAAS,EAAE,MAAM,KAAK;QAAE,SAAS,EAAE,gBAAgB,CAAC;QAAC,OAAO,EAAE,MAAM,SAAS,GAAG,IAAI,CAAA;KAAE,CAAC;IACxJ,yBAAyB,EAAE,CAAC,GAAG,EAAE,gBAAgB,EAAE,SAAS,EAAE,MAAM,KAAK,OAAO,CAAC,OAAO,CAAC,CAAC;IAC1F,mBAAmB,EAAE,MAAM,OAAO,CAAC,iBAAiB,GAAG,IAAI,CAAC,CAAC;IAC7D,uBAAuB,EAAE,MAAM,OAAO,CAAC,kBAAkB,EAAE,GAAG,IAAI,CAAC,CAAC;IACpE,kFAAkF;IAClF,qBAAqB,EAAE,CAAC,SAAS,EAAE,gBAAgB,EAAE,SAAS,EAAE,MAAM,EAAE,cAAc,EAAE,MAAM,KAAK,MAAM,IAAI,CAAC;IAC9G,iBAAiB,CAAC,EAAE,iBAAiB,CAAC;IACtC,+EAA+E;IAC/E,iBAAiB,CAAC,EAAE,2BAA2B,CAAC;IAChD,kBAAkB,EAAE,MAAM,MAAM,CAAC;IACjC,0DAA0D;IAC1D,YAAY,EAAE,aAAa,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;CAC/D;AAED,wBAAgB,sBAAsB,CAAC,IAAI,EAAE,mBAAmB;wCAuNjD,MAAM,oBACC,OAAO,wBAAwB,EAAE,WAAW,kBAC9C,MAAM,YACZ,iBAAiB,iBACZ,MAAM,UACb,MAAM,KACb;QAAE,GAAG,EAAE,gBAAgB,CAAC;QAAC,IAAI,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAA;KAAE;;;EAmRtE"}
1
+ {"version":3,"file":"outbound-sessions.d.ts","sourceRoot":"","sources":["../src/outbound-sessions.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AACH,OAAO,EAAE,gBAAgB,EAAE,KAAK,SAAS,EAAE,MAAM,2BAA2B,CAAC;AAC7E,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAC;AAC1D,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,2BAA2B,CAAC;AACpE,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,YAAY,CAAC;AACzC,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAChE,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,wBAAwB,CAAC;AACxE,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,0BAA0B,CAAC;AACnE,OAAO,KAAK,EAAE,iBAAiB,EAA4B,MAAM,yBAAyB,CAAC;AAK3F,OAAO,KAAK,EAAE,2BAA2B,EAAE,MAAM,2BAA2B,CAAC;AAM7E,MAAM,WAAW,mBAAmB;IAClC,MAAM,EAAE,MAAM,CAAC;IACf,kBAAkB,EAAE,kBAAkB,CAAC;IACvC,cAAc,EAAE,CAAC,SAAS,EAAE,MAAM,KAAK,WAAW,GAAG,SAAS,CAAC;IAC/D,cAAc,EAAE,CAAC,SAAS,EAAE,MAAM,KAAK,yBAAyB,CAAC;IACjE,iBAAiB,EAAE,CAAC,SAAS,EAAE,MAAM,EAAE,WAAW,EAAE,WAAW,EAAE,SAAS,EAAE,MAAM,KAAK;QAAE,SAAS,EAAE,gBAAgB,CAAC;QAAC,OAAO,EAAE,MAAM,SAAS,GAAG,IAAI,CAAA;KAAE,CAAC;IACxJ,yBAAyB,EAAE,CAAC,GAAG,EAAE,gBAAgB,EAAE,SAAS,EAAE,MAAM,KAAK,OAAO,CAAC,OAAO,CAAC,CAAC;IAC1F,mBAAmB,EAAE,MAAM,OAAO,CAAC,iBAAiB,GAAG,IAAI,CAAC,CAAC;IAC7D,uBAAuB,EAAE,MAAM,OAAO,CAAC,kBAAkB,EAAE,GAAG,IAAI,CAAC,CAAC;IACpE,kFAAkF;IAClF,qBAAqB,EAAE,CAAC,SAAS,EAAE,gBAAgB,EAAE,SAAS,EAAE,MAAM,EAAE,cAAc,EAAE,MAAM,KAAK,MAAM,IAAI,CAAC;IAC9G,iBAAiB,CAAC,EAAE,iBAAiB,CAAC;IACtC,+EAA+E;IAC/E,iBAAiB,CAAC,EAAE,2BAA2B,CAAC;IAChD,kBAAkB,EAAE,MAAM,MAAM,CAAC;IACjC,0DAA0D;IAC1D,YAAY,EAAE,aAAa,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;CAC/D;AAED,wBAAgB,sBAAsB,CAAC,IAAI,EAAE,mBAAmB;wCAsPjD,MAAM,oBACC,OAAO,wBAAwB,EAAE,WAAW,kBAC9C,MAAM,YACZ,iBAAiB,iBACZ,MAAM,UACb,MAAM,KACb;QAAE,GAAG,EAAE,gBAAgB,CAAC;QAAC,IAAI,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAA;KAAE;;;EAmStE"}
@@ -138,8 +138,23 @@ export function createOutboundSessions(deps) {
138
138
  try {
139
139
  const tier = sessionNodeManager.getTier(agentName, targetHex);
140
140
  if (tier >= TIER.KNOWN) {
141
+ // DOD-END-SCOPE-FIX-1: the wallet is daemon-wide and shared by every agent on the device,
142
+ // so the presenting agent's own K_local pubkey is what makes an agent-subject signal his to
143
+ // present. It is the SAME value an agent-subject envelope's `subject` holds — the directory
144
+ // authenticates the signaling stream with this key and resolves it against
145
+ // `agent_profiles.k_local_pubkey`, which is the column it joins `subject` on.
146
+ const agentRec = loadedAgents.find((a) => a.name === agentName);
147
+ if (!agentRec) {
148
+ // Not reachable through a loaded agent's own session, and refusing is the only safe
149
+ // answer: an unresolved presenter cannot be scoped, and presenting unscoped is the defect.
150
+ throw new Error(`presenting agent '${agentName}' is not loaded — cannot scope the wallet`);
151
+ }
141
152
  const store = new TrustSignalStore(sessionNodeManager.getDb(), logger);
142
- const eligible = store.listAllActive({ include: signalFilter?.include, exclude: signalFilter?.exclude });
153
+ const eligible = store.listAllActive({
154
+ presentingAgentPubkeyHex: agentRec.pubkey,
155
+ include: signalFilter?.include,
156
+ exclude: signalFilter?.exclude,
157
+ });
143
158
  if (eligible.length > 0) {
144
159
  trustSignals = eligible.map((s) => ({
145
160
  hash: s.signalHash,
@@ -160,6 +175,23 @@ export function createOutboundSessions(deps) {
160
175
  agentName, target: targetHex.slice(0, 16), count: trustSignals.length, correlationId,
161
176
  });
162
177
  }
178
+ else {
179
+ // A ZERO-ROW PRESENTATION IS THE FAILURE THIS UNIT EXISTS TO PREVENT, so it must not be
180
+ // the one outcome that emits nothing. Without this line "the operator holds no signals"
181
+ // and "the operator's signals no longer match their key" are the same observation: silence
182
+ // plus a session that formed normally. The second is reachable — a key rotation, a
183
+ // re-registration, a signal minted against a stale `k_local_pubkey` — and it is exactly
184
+ // the shape the DoD describes as "goes green while matching ZERO rows in production".
185
+ // `heldTotal` is what makes them distinguishable: 0 means nothing to present, >0 means the
186
+ // wallet has rows that this agent's scoping excluded.
187
+ logger.info("signal.presentation.none_eligible", {
188
+ agentName,
189
+ target: targetHex.slice(0, 16),
190
+ heldTotal: store.listAllWalletSignals().length,
191
+ filter: signalFilter ?? null,
192
+ correlationId,
193
+ });
194
+ }
163
195
  }
164
196
  }
165
197
  catch (err) {
@@ -361,10 +393,26 @@ export function createOutboundSessions(deps) {
361
393
  const excludeRaw = ctx.params["exclude_signals"];
362
394
  const includeTypes = Array.isArray(includeRaw) ? includeRaw.filter((s) => typeof s === "string") : undefined;
363
395
  const excludeTypes = Array.isArray(excludeRaw) ? excludeRaw.filter((s) => typeof s === "string") : undefined;
364
- // Validate include/exclude type strings against what is actually in the wallet.
396
+ // Validate include/exclude type strings against what THIS agent can actually present.
397
+ //
398
+ // Not against the whole wallet: the wallet is daemon-wide, so `listAllWalletSignals()` spans
399
+ // every agent on the device. Validating against it means Alice's `--include track_record`
400
+ // passes because BOB holds one, and she then presents nothing with no error and no guidance —
401
+ // the daemon telling her the type is fine and then silently omitting it. Before presentation
402
+ // was scoped that filter would have presented Bob's signal; scoping turned a leak into a lie,
403
+ // and this turns the lie back into the `unknown_signal_type` message that already exists.
404
+ // (It also stops the validator being a cross-agent enumeration oracle.)
365
405
  if (includeTypes || excludeTypes) {
366
406
  const store = new TrustSignalStore(sessionNodeManager.getDb(), logger);
367
- const known = new Set(store.listAllWalletSignals().map((s) => s.type));
407
+ const presenter = loadedAgents.find((a) => a.name === ctx.agentName);
408
+ if (!presenter) {
409
+ return {
410
+ ok: false,
411
+ reason: "agent_not_found",
412
+ guidance: `Agent '${ctx.agentName}' is not loaded on this daemon.`,
413
+ };
414
+ }
415
+ const known = new Set(store.listPresentableTypes(presenter.pubkey));
368
416
  const check = includeTypes ?? excludeTypes ?? [];
369
417
  const unknown = check.filter((t) => !known.has(t));
370
418
  if (unknown.length > 0) {
@@ -1 +1 @@
1
- {"version":3,"file":"outbound-sessions.js","sourceRoot":"","sources":["../src/outbound-sessions.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"outbound-sessions.js","sourceRoot":"","sources":["../src/outbound-sessions.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,131 @@
1
+ /**
2
+ * M10B / DOD-END-SUBMIT-1 — the daemon side of the sealed submission queue (M10B-D2).
3
+ *
4
+ * Bob's daemon composes a submission, signs it with his agent's K_local, and seals it to the
5
+ * portal's intake key. A directory node then carries a blob it cannot read until the portal drains
6
+ * it. **The daemon never talks to the portal** — that is the decision this whole path exists to
7
+ * honour, and it is what keeps a later move to per-node intake a routing change rather than a
8
+ * migration of every installed client.
9
+ *
10
+ * WHAT THIS MODULE IS RESPONSIBLE FOR, and why it is separable from the send: everything here is
11
+ * pure given its inputs, and it is where the invariants live. The transport can retry, fail over, or
12
+ * be replaced; none of that can make an unsealed blob safe or a forged attribution valid.
13
+ *
14
+ * INV-ATTRIBUTION — `submitter_pubkey` is read from the SIGNING key provider, and there is no
15
+ * parameter to override it. A caller cannot name someone else, because the field
16
+ * is not an input. Precedent: `accepting_node` in DOD-DIR-WRITE-1, "written by
17
+ * the node itself, never accepted from the request".
18
+ * INV-CONSENT — the plaintext is sealed to the intake key before it ever reaches the
19
+ * directory, so a node operator learns nothing about who endorsed whom.
20
+ * §5a ABSENT — a missing OR malformed intake key REFUSES, with the reason named. There is no
21
+ * code path here that emits an unsealed submission; that is a structural
22
+ * property of this file, not a policy someone remembered to apply.
23
+ *
24
+ * Crypto: Ed25519 → RFC 8032, CBOR → RFC 8949, SHA-256 → FIPS 180-4.
25
+ */
26
+ import type { KeyProvider } from "@cello-protocol/crypto";
27
+ import { type ConsortiumManifest, type SignalSubjectKind, type SubmissionOp } from "@cello-protocol/protocol-types";
28
+ import type { Logger } from "./types.js";
29
+ /**
30
+ * Why a submission was refused BEFORE anything was sealed or sent.
31
+ *
32
+ * Each names a cause, never an exit point (§5b). `submission_refused` would tell an operator only
33
+ * that something went wrong; these tell them which subsystem to look at — and for the intake-key
34
+ * cases the answer is "the consortium manifest", which they would never guess.
35
+ */
36
+ export type SubmissionRefusalReason = "manifest_unavailable" | "intake_key_absent" | "intake_key_malformed";
37
+ export type ComposeSubmissionResult = {
38
+ ok: true;
39
+ /** sha256 of the signed submission body — content-derived, so a retry to another node dedupes
40
+ * at the portal instead of minting twice (M10B-D20). */
41
+ submissionId: string;
42
+ /** Which intake key this was sealed to. Recorded on the queue row so the portal can retain a
43
+ * rotated-out private key until no undrained row references it (M10B-D11). */
44
+ intakeKeyId: string;
45
+ /** The sealed blob. Opaque to the directory. */
46
+ ciphertext: Uint8Array;
47
+ } | {
48
+ ok: false;
49
+ reason: SubmissionRefusalReason;
50
+ guidance: string;
51
+ };
52
+ export interface ComposeSubmissionOptions {
53
+ /** The VERIFIED consortium manifest, or null if none is loaded. Officer-signed, which is why it is
54
+ * an acceptable channel for a sealing key — see `intake_key`'s note in protocol-types. */
55
+ manifest: ConsortiumManifest | null;
56
+ /** The submitting agent's K_local. Its public half becomes `submitter_pubkey`; there is
57
+ * deliberately no way to pass that in separately. */
58
+ keyProvider: KeyProvider;
59
+ op: SubmissionOp;
60
+ subjectKind: SignalSubjectKind;
61
+ /** The subject's K_local pubkey hex for an agent subject; the target signal hash for a withdrawal.
62
+ * No account identifier ever crosses the wire — the portal resolves agent → account at intake. */
63
+ subject: string;
64
+ /** The operator's own words. Untrusted, and scanned at intake BEFORE hashing — never here: a
65
+ * client-side scan is advice, not a control, since the client is the thing being defended against. */
66
+ body: string;
67
+ /** Integer epoch SECONDS. Inside the signed body, so the verifier's clock-skew bound applies. */
68
+ issuedAt: number;
69
+ logger: Logger;
70
+ }
71
+ /**
72
+ * Compose → sign → seal. Returns the exact three values a queue row needs, or a named refusal.
73
+ *
74
+ * Note what this function does NOT do: it does not send, and it does not scan. Sending is the
75
+ * caller's, so a failed node is a retry rather than a re-sign. Scanning is the PORTAL's (spec §7,
76
+ * `DOD-END-SCAN-1`) — scanning here would be theatre, because the operator's own daemon is the
77
+ * party whose content is in question.
78
+ */
79
+ export declare function composeSealedSubmission(opts: ComposeSubmissionOptions): Promise<ComposeSubmissionResult>;
80
+ /**
81
+ * Why a submission did not reach a directory node. Distinct from the compose-time refusals: those
82
+ * mean nothing was built, these mean nothing was accepted.
83
+ */
84
+ export type SubmissionSendFailure = "directory_unreachable" | "submission_write_timeout" | "submission_unsupported_by_node" | "submission_refused_by_node";
85
+ export type SendSubmissionResult = {
86
+ ok: true;
87
+ submissionId: string;
88
+ /**
89
+ * Whether the node actually STORED the row, straight from `enqueueSubmission`'s boolean.
90
+ *
91
+ * `false` means an id was already present. That is USUALLY this submitter's own retry — which
92
+ * is what makes retry-across-nodes safe — but it is also the shape of a single-node censorship
93
+ * attack: `submission_id` is visible in the clear to the receiving node, so a malicious
94
+ * operator can copy it and pre-insert garbage under the same id at the other nodes, and every
95
+ * retry then resolves to "already present". Collapsing the two into plain success destroys the
96
+ * only information that could ever distinguish them.
97
+ */
98
+ stored: boolean;
99
+ } | {
100
+ ok: false;
101
+ reason: SubmissionSendFailure;
102
+ guidance: string;
103
+ };
104
+ /** The minimum of `SignalingManager` this needs — narrow, so a test drives it without a transport. */
105
+ export interface SubmissionSignaling {
106
+ sendRaw(frame: unknown): Promise<{
107
+ ok: boolean;
108
+ reason?: string;
109
+ guidance?: string;
110
+ }>;
111
+ registerInboundHandler(handler: (frame: Record<string, unknown>) => void): () => void;
112
+ }
113
+ /**
114
+ * Hand a sealed submission to the directory node this agent is connected to, and await its ack.
115
+ *
116
+ * ONE node, deliberately. The daemon holds a single signaling stream, and registration already works
117
+ * this way — it sends `register_request` to the connected node and the DIRECTORY fans out to the
118
+ * quorum. There is no client-side multi-node write path, and inventing one here would duplicate the
119
+ * SignalingManager's reconnect. So "failover" for a submission is that existing reconnect, and a
120
+ * retry afterwards is safe because `submission_id` is content-derived: the same body produces the
121
+ * same id, so a second node stores it once and the portal mints once (M10B-D20, M10B-D21).
122
+ */
123
+ export declare function sendSealedSubmission(deps: {
124
+ signaling: SubmissionSignaling;
125
+ submissionId: string;
126
+ intakeKeyId: string;
127
+ ciphertext: Uint8Array;
128
+ logger: Logger;
129
+ timeoutMs?: number;
130
+ }): Promise<SendSubmissionResult>;
131
+ //# sourceMappingURL=signal-submission.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"signal-submission.d.ts","sourceRoot":"","sources":["../src/signal-submission.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AAGH,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAC;AAC1D,OAAO,EAIL,KAAK,kBAAkB,EACvB,KAAK,iBAAiB,EAEtB,KAAK,YAAY,EAClB,MAAM,gCAAgC,CAAC;AACxC,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,YAAY,CAAC;AAQzC;;;;;;GAMG;AACH,MAAM,MAAM,uBAAuB,GAC/B,sBAAsB,GACtB,mBAAmB,GACnB,sBAAsB,CAAC;AAE3B,MAAM,MAAM,uBAAuB,GAC/B;IACE,EAAE,EAAE,IAAI,CAAC;IACT;6DACyD;IACzD,YAAY,EAAE,MAAM,CAAC;IACrB;mFAC+E;IAC/E,WAAW,EAAE,MAAM,CAAC;IACpB,gDAAgD;IAChD,UAAU,EAAE,UAAU,CAAC;CACxB,GACD;IAAE,EAAE,EAAE,KAAK,CAAC;IAAC,MAAM,EAAE,uBAAuB,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAA;CAAE,CAAC;AAErE,MAAM,WAAW,wBAAwB;IACvC;+FAC2F;IAC3F,QAAQ,EAAE,kBAAkB,GAAG,IAAI,CAAC;IACpC;0DACsD;IACtD,WAAW,EAAE,WAAW,CAAC;IACzB,EAAE,EAAE,YAAY,CAAC;IACjB,WAAW,EAAE,iBAAiB,CAAC;IAC/B;uGACmG;IACnG,OAAO,EAAE,MAAM,CAAC;IAChB;2GACuG;IACvG,IAAI,EAAE,MAAM,CAAC;IACb,iGAAiG;IACjG,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,MAAM,CAAC;CAChB;AA0BD;;;;;;;GAOG;AACH,wBAAsB,uBAAuB,CAC3C,IAAI,EAAE,wBAAwB,GAC7B,OAAO,CAAC,uBAAuB,CAAC,CA0FlC;AAID;;;GAGG;AACH,MAAM,MAAM,qBAAqB,GAC7B,uBAAuB,GACvB,0BAA0B,GAC1B,gCAAgC,GAChC,4BAA4B,CAAC;AAEjC,MAAM,MAAM,oBAAoB,GAC5B;IACE,EAAE,EAAE,IAAI,CAAC;IACT,YAAY,EAAE,MAAM,CAAC;IACrB;;;;;;;;;OASG;IACH,MAAM,EAAE,OAAO,CAAC;CACjB,GACD;IAAE,EAAE,EAAE,KAAK,CAAC;IAAC,MAAM,EAAE,qBAAqB,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAA;CAAE,CAAC;AAEnE,sGAAsG;AACtG,MAAM,WAAW,mBAAmB;IAClC,OAAO,CAAC,KAAK,EAAE,OAAO,GAAG,OAAO,CAAC;QAAE,EAAE,EAAE,OAAO,CAAC;QAAC,MAAM,CAAC,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IACtF,sBAAsB,CAAC,OAAO,EAAE,CAAC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAAK,IAAI,GAAG,MAAM,IAAI,CAAC;CACvF;AAID;;;;;;;;;GASG;AACH,wBAAsB,oBAAoB,CAAC,IAAI,EAAE;IAC/C,SAAS,EAAE,mBAAmB,CAAC;IAC/B,YAAY,EAAE,MAAM,CAAC;IACrB,WAAW,EAAE,MAAM,CAAC;IACpB,UAAU,EAAE,UAAU,CAAC;IACvB,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB,GAAG,OAAO,CAAC,oBAAoB,CAAC,CA2GhC"}
@@ -0,0 +1,238 @@
1
+ /**
2
+ * M10B / DOD-END-SUBMIT-1 — the daemon side of the sealed submission queue (M10B-D2).
3
+ *
4
+ * Bob's daemon composes a submission, signs it with his agent's K_local, and seals it to the
5
+ * portal's intake key. A directory node then carries a blob it cannot read until the portal drains
6
+ * it. **The daemon never talks to the portal** — that is the decision this whole path exists to
7
+ * honour, and it is what keeps a later move to per-node intake a routing change rather than a
8
+ * migration of every installed client.
9
+ *
10
+ * WHAT THIS MODULE IS RESPONSIBLE FOR, and why it is separable from the send: everything here is
11
+ * pure given its inputs, and it is where the invariants live. The transport can retry, fail over, or
12
+ * be replaced; none of that can make an unsealed blob safe or a forged attribution valid.
13
+ *
14
+ * INV-ATTRIBUTION — `submitter_pubkey` is read from the SIGNING key provider, and there is no
15
+ * parameter to override it. A caller cannot name someone else, because the field
16
+ * is not an input. Precedent: `accepting_node` in DOD-DIR-WRITE-1, "written by
17
+ * the node itself, never accepted from the request".
18
+ * INV-CONSENT — the plaintext is sealed to the intake key before it ever reaches the
19
+ * directory, so a node operator learns nothing about who endorsed whom.
20
+ * §5a ABSENT — a missing OR malformed intake key REFUSES, with the reason named. There is no
21
+ * code path here that emits an unsealed submission; that is a structural
22
+ * property of this file, not a policy someone remembered to apply.
23
+ *
24
+ * Crypto: Ed25519 → RFC 8032, CBOR → RFC 8949, SHA-256 → FIPS 180-4.
25
+ */
26
+ import { sealToRecipient } from "@cello-protocol/crypto";
27
+ import { buildSubmissionTbs, encodeSubmission, submissionId, } from "@cello-protocol/protocol-types";
28
+ /** The wire version this daemon emits. Signed, so it cannot be downgraded in flight. */
29
+ const SUBMISSION_VERSION = 1;
30
+ /** Ed25519 public keys are 32 bytes — 64 lowercase hex characters. */
31
+ const INTAKE_PUBKEY_RE = /^[0-9a-f]{64}$/;
32
+ const INV_ATTRIBUTION_NO_OVERRIDE = true;
33
+ void INV_ATTRIBUTION_NO_OVERRIDE;
34
+ /**
35
+ * Compose → sign → seal. Returns the exact three values a queue row needs, or a named refusal.
36
+ *
37
+ * Note what this function does NOT do: it does not send, and it does not scan. Sending is the
38
+ * caller's, so a failed node is a retry rather than a re-sign. Scanning is the PORTAL's (spec §7,
39
+ * `DOD-END-SCAN-1`) — scanning here would be theatre, because the operator's own daemon is the
40
+ * party whose content is in question.
41
+ */
42
+ export async function composeSealedSubmission(opts) {
43
+ const { manifest, keyProvider, logger } = opts;
44
+ if (!manifest) {
45
+ logger.warn("signal.submission.refused", {
46
+ reason: "manifest_unavailable",
47
+ op: opts.op,
48
+ subjectKind: opts.subjectKind,
49
+ });
50
+ return {
51
+ ok: false,
52
+ reason: "manifest_unavailable",
53
+ guidance: "No verified consortium manifest is loaded, so the portal's intake key is unknown. " +
54
+ "A submission is never sent unsealed. Check the daemon's manifest configuration and retry.",
55
+ };
56
+ }
57
+ const intakeKey = manifest.intake_key;
58
+ if (!intakeKey) {
59
+ logger.warn("signal.submission.refused", {
60
+ reason: "intake_key_absent",
61
+ manifestVersion: manifest.version,
62
+ op: opts.op,
63
+ });
64
+ return {
65
+ ok: false,
66
+ reason: "intake_key_absent",
67
+ guidance: `Consortium manifest v${manifest.version} publishes no portal intake key, so this submission ` +
68
+ "cannot be sealed. It is NOT sent unsealed — the directory must not be able to read it. " +
69
+ "This needs a manifest that carries `intake_key`.",
70
+ };
71
+ }
72
+ // Malformed is refused for the same reason absent is. Sealing to a non-key produces a blob nobody
73
+ // can open, which reaches the portal as unattributable POISON with no reply possible (M10B-D22b) —
74
+ // so the operator would watch the submission vanish with no error anywhere. Uppercase hex is
75
+ // refused rather than lowercased: the key_id/pubkey pair comes from a SIGNED document, and quietly
76
+ // repairing a signed value hides a manifest-generation bug instead of surfacing it.
77
+ if (!intakeKey.key_id || !INTAKE_PUBKEY_RE.test(intakeKey.pubkey ?? "")) {
78
+ logger.warn("signal.submission.refused", {
79
+ reason: "intake_key_malformed",
80
+ manifestVersion: manifest.version,
81
+ keyId: intakeKey.key_id,
82
+ op: opts.op,
83
+ });
84
+ return {
85
+ ok: false,
86
+ reason: "intake_key_malformed",
87
+ guidance: `Consortium manifest v${manifest.version} carries an unusable intake key ` +
88
+ `(key_id: ${JSON.stringify(intakeKey.key_id)}) — the pubkey must be a 32-byte Ed25519 key as ` +
89
+ "64 lowercase hex characters. Refusing rather than sealing to an unopenable value.",
90
+ };
91
+ }
92
+ // INV-ATTRIBUTION: taken from the signer, never from a parameter.
93
+ const submitterPubkey = Buffer.from(await keyProvider.getPublicKey()).toString("hex");
94
+ const body = {
95
+ v: SUBMISSION_VERSION,
96
+ op: opts.op,
97
+ subject_kind: opts.subjectKind,
98
+ subject: opts.subject,
99
+ submitter_pubkey: submitterPubkey,
100
+ body: opts.body,
101
+ issued_at: opts.issuedAt,
102
+ };
103
+ const signature = await keyProvider.sign(buildSubmissionTbs(body));
104
+ const encoded = encodeSubmission(body, signature);
105
+ // Derived from the PLAINTEXT submission, not the ciphertext. Sealing is randomised, so a
106
+ // ciphertext-derived id would change on every re-seal and a failover retry would look like a
107
+ // second submission — two mints, double quota consumption.
108
+ const id = submissionId(encoded);
109
+ const ciphertext = sealToRecipient(Buffer.from(intakeKey.pubkey, "hex"), encoded);
110
+ logger.info("signal.submission.sealed", {
111
+ submissionId: id,
112
+ intakeKeyId: intakeKey.key_id,
113
+ op: opts.op,
114
+ subjectKind: opts.subjectKind,
115
+ manifestVersion: manifest.version,
116
+ // The body is NEVER logged — it is the operator's own words about a third party, and this log
117
+ // line would be the one place it existed in the clear on disk.
118
+ bodyBytes: Buffer.byteLength(opts.body, "utf8"),
119
+ });
120
+ return { ok: true, submissionId: id, intakeKeyId: intakeKey.key_id, ciphertext };
121
+ }
122
+ const DEFAULT_ACK_TIMEOUT_MS = 15_000;
123
+ /**
124
+ * Hand a sealed submission to the directory node this agent is connected to, and await its ack.
125
+ *
126
+ * ONE node, deliberately. The daemon holds a single signaling stream, and registration already works
127
+ * this way — it sends `register_request` to the connected node and the DIRECTORY fans out to the
128
+ * quorum. There is no client-side multi-node write path, and inventing one here would duplicate the
129
+ * SignalingManager's reconnect. So "failover" for a submission is that existing reconnect, and a
130
+ * retry afterwards is safe because `submission_id` is content-derived: the same body produces the
131
+ * same id, so a second node stores it once and the portal mints once (M10B-D20, M10B-D21).
132
+ */
133
+ export async function sendSealedSubmission(deps) {
134
+ const { signaling, submissionId: id, intakeKeyId, ciphertext, logger } = deps;
135
+ const timeoutMs = deps.timeoutMs ?? DEFAULT_ACK_TIMEOUT_MS;
136
+ // Advisory only — see the handler. Never resolves the send; it sharpens the TIMEOUT's diagnosis.
137
+ let sawNotAuthenticated = false;
138
+ let resolveFrame;
139
+ const pending = new Promise((r) => { resolveFrame = r; });
140
+ const unregister = signaling.registerInboundHandler((frame) => {
141
+ const t = frame["type"];
142
+ // A result for a DIFFERENT submission must be ignored: the handler sees every frame on a shared
143
+ // stream, and accepting someone else's ack would report success for a write that never happened.
144
+ // EVERY resolve path is id-gated. The handler sees every frame on a SHARED stream, so an
145
+ // ungated one resolves this submission with someone else's outcome — and two concurrent
146
+ // submissions is not an exotic case, it is the second endorsement.
147
+ if (t === "submission_write_result" && frame["submission_id"] === id)
148
+ resolveFrame(frame);
149
+ else if (t === "submission_write_error" && frame["submission_id"] === id)
150
+ resolveFrame(frame);
151
+ // `not_authenticated` is DELIBERATELY NOT a resolve path. An older node replies it when its
152
+ // decoder returns null (M10B-D25r), so it is the version-skew symptom — but it is also what the
153
+ // node sends for a frame that arrives before auth completes, and for ANY other component's
154
+ // undecodable frame on this same stream. Resolving on it would let an unrelated
155
+ // `manifest_poll_request` to an older node report THIS submission as unsupported, while the real
156
+ // result arrives afterwards and is dropped on the floor. It is recorded as advisory context and
157
+ // the timeout decides.
158
+ else if (t === "not_authenticated")
159
+ sawNotAuthenticated = true;
160
+ });
161
+ try {
162
+ const sent = await signaling.sendRaw({
163
+ type: "submission_write",
164
+ submission_id: id,
165
+ intake_key_id: intakeKeyId,
166
+ ciphertext,
167
+ });
168
+ if (!sent.ok) {
169
+ // The reason CODE carries the transport's own cause when it has one. `directory_unreachable`
170
+ // is an exit-point label — a machine consumer branching on it cannot tell "reconnecting" from
171
+ // "lost", and those want different operator actions.
172
+ const cause = sent.reason ?? "directory_unreachable";
173
+ logger.warn("signal.submission.refused", { submissionId: id, reason: cause });
174
+ return {
175
+ ok: false,
176
+ reason: cause,
177
+ // STATED AS IT IS: this submission was NOT delivered and NOTHING here retries it. An earlier
178
+ // draft said "it was not lost", which asserted a retry no code performs — the caller would
179
+ // have to re-invoke, and until DOD-END-SURFACE-1 there is no caller at all. What IS true is
180
+ // that re-submitting is SAFE, which is a different claim.
181
+ guidance: `The submission was NOT handed to a directory node (${cause}) and nothing has retried it. ` +
182
+ "Re-submitting is safe: it produces the SAME submission_id, so the retry is stored once, " +
183
+ "not twice.",
184
+ };
185
+ }
186
+ let timer;
187
+ const timeout = new Promise((r) => {
188
+ timer = setTimeout(() => r({ type: "__timeout__" }), timeoutMs);
189
+ });
190
+ const frame = await Promise.race([pending, timeout]);
191
+ clearTimeout(timer);
192
+ if (frame["type"] === "__timeout__") {
193
+ // F2: NAME THE AMBIGUITY RATHER THAN RESOLVING IT. `not_authenticated` has THREE producers on
194
+ // the directory side — an undecodable frame from a node that has not deployed this frame kind
195
+ // (the version-skew case), an undecodable frame from a node that HAS (i.e. our own bug: a
196
+ // malformed id or an empty ciphertext), and a frame that genuinely arrived before auth
197
+ // completed. An earlier draft asserted the first with certainty and told the operator it was
198
+ // "NOT an authentication problem" — which, in the third case, sends them away from the actual
199
+ // cause and towards a deploy that will never fix it.
200
+ const reason = sawNotAuthenticated ? "submission_unsupported_by_node" : "submission_write_timeout";
201
+ logger.warn("signal.submission.refused", { submissionId: id, reason, timeoutMs, sawNotAuthenticated });
202
+ return {
203
+ ok: false,
204
+ reason,
205
+ guidance: sawNotAuthenticated
206
+ ? "The directory node did not recognise the frame and never acknowledged the submission. " +
207
+ "MOST LIKELY it has not deployed submission support yet — nodes deploy independently per " +
208
+ "region, so check this node's version first. Two other conditions produce the same reply: " +
209
+ "a malformed submission from this client, and a frame rejected because authentication had " +
210
+ "not completed (if the signaling stream also dropped, look there). Re-submitting is safe."
211
+ : `The directory node accepted the frame but did not acknowledge the submission within ${timeoutMs}ms. ` +
212
+ "Whether it was stored is unknown; re-submitting is safe (same submission_id, stored once).",
213
+ };
214
+ }
215
+ if (frame["type"] === "submission_write_error") {
216
+ const reason = typeof frame["reason"] === "string" ? frame["reason"] : "unspecified";
217
+ logger.warn("signal.submission.refused", { submissionId: id, reason: "submission_refused_by_node", nodeReason: reason });
218
+ return {
219
+ ok: false,
220
+ reason: "submission_refused_by_node",
221
+ // The upstream reason SURVIVES into the payload rather than being flattened into this
222
+ // function's own exit label (§5b).
223
+ guidance: `The directory node refused the submission: ${reason}.`,
224
+ };
225
+ }
226
+ const stored = frame["stored"] === true;
227
+ logger.info(stored ? "signal.submission.queued" : "signal.submission.duplicate", {
228
+ submissionId: id,
229
+ intakeKeyId,
230
+ stored,
231
+ });
232
+ return { ok: true, submissionId: id, stored };
233
+ }
234
+ finally {
235
+ unregister();
236
+ }
237
+ }
238
+ //# sourceMappingURL=signal-submission.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"signal-submission.js","sourceRoot":"","sources":["../src/signal-submission.ts"],"names":[],"mappings":"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"}
@@ -37,6 +37,7 @@
37
37
  */
38
38
  import { type TrustSignalEnvelope } from "@cello-protocol/protocol-types";
39
39
  import type { DaemonDatabase } from "./sqlcipher-db.js";
40
+ import { type ConsentState } from "./consent-migration.js";
40
41
  import type { Logger } from "./types.js";
41
42
  /** Status lives OUTSIDE the hash — it is mutable after minting, which is exactly why it is not in
42
43
  * the preimage. If it were hashed, revoking a signal would change its hash and the directory could
@@ -75,6 +76,9 @@ export interface WalletSignalInput {
75
76
  }
76
77
  export interface WalletSignalRow extends WalletSignalInput {
77
78
  receivedAt: number;
79
+ /** M10B-D14r2 — may this be presented at all. Distinct from `defaultPresent`, which answers the
80
+ * different question of whether to include it BY DEFAULT once it may be presented. */
81
+ consentState: ConsentState;
78
82
  /** True = included in the default presentation bundle. _id signals default false; everything else true. */
79
83
  defaultPresent: boolean;
80
84
  }
@@ -167,15 +171,24 @@ export declare class TrustSignalStore {
167
171
  */
168
172
  setWalletStatus(signalHash: string, status: SignalStatus): void;
169
173
  /**
170
- * The signals `agentId` may present, resolved from the ENVELOPE, not from a stored attribution:
174
+ * The signals an agent may present, resolved from the ENVELOPE, not from a stored attribution:
171
175
  * an `account`-subject row is presentable by every agent under `accountId`; an `agent`-subject row
172
176
  * only by its own subject (M10-D5/M10-D14).
173
177
  *
178
+ * **`agentPubkeyHex` is the K_local pubkey hex, NOT the daemon's device-local `agent_id`.** An
179
+ * agent-subject envelope's `subject` holds the pubkey — that is the value the directory joins on
180
+ * (`ap.k_local_pubkey = sr.subject`) — and a UUID compared against it matches nothing at all.
181
+ *
182
+ * NOTE (`DOD-END-SCOPE-FIX-1`): this method has no production callers; the live wire path is
183
+ * `listAllActive`, which now carries the agent-subject half of this scoping. Kept because it is
184
+ * the only implementation of the ACCOUNT-subject half, which is deferred behind a named
185
+ * prerequisite — the daemon holds no `accountId` anywhere in production code.
186
+ *
174
187
  * Excludes expired and non-active rows. Selective disclosure (all / some / none) is the CALLER's
175
188
  * choice on top of this — DOD-PRESENT-1; this returns what is *eligible*, never what to send.
176
189
  */
177
190
  listPresentable(opts: {
178
- agentId: string;
191
+ agentPubkeyHex: string;
179
192
  accountId: string;
180
193
  nowSec?: number;
181
194
  }): WalletSignalRow[];
@@ -198,7 +211,37 @@ export declare class TrustSignalStore {
198
211
  */
199
212
  removeWalletSignal(signalHash: string): boolean;
200
213
  /**
201
- * Active, non-expired wallet signals eligible for presentation.
214
+ * Active, non-expired wallet signals THIS agent is eligible to present — the live wire path
215
+ * (`outbound-sessions.ts`).
216
+ *
217
+ * `presentingAgentPubkeyHex` is the presenting agent's K_local pubkey hex, and it is REQUIRED.
218
+ * An `agent`-subject row is presentable only by its own subject (M10-D5/M10-D14); the wallet is
219
+ * daemon-wide and shared by every agent on the device, so without this predicate each agent
220
+ * offers every co-resident agent's agent-subject signals to its own counterparties —
221
+ * `INV-AGENT-SCOPED`, which is what `DOD-END-SCOPE-FIX-1` closes. The scoping is in the SQL, not
222
+ * a JS filter, because `include` already routes around `default_present` and a JS branch would
223
+ * route around this the same way.
224
+ *
225
+ * **`lower(subject)`, because hex has a case and this comparison is byte-exact.** SQLite `TEXT`
226
+ * uses BINARY collation, so `AABB…` and `aabb…` — the same key — do not match, and the row would
227
+ * be silently un-presented with no error. The daemon's own `k_local_pubkey` is always lowercase
228
+ * (`agent-loader.ts` derives it with `.toString("hex")`), so only the STORED side can vary, and it
229
+ * can: `putWalletSignal` already names "a directory version-skew emitting uppercase hex" as a real
230
+ * condition. Comparing case-insensitively is the correct equality for hex, not a fallback that
231
+ * papers over a mismatch.
232
+ *
233
+ * Note the residual, because it is NOT closed here: the directory's
234
+ * `JOIN agent_profiles ap ON ap.k_local_pubkey = sr.subject` is case-sensitive too, so an
235
+ * uppercase-hex subject that ever got minted would still be invisible THERE. Closing that means
236
+ * constraining the value where it is produced (the portal's mint) — which spans three components
237
+ * and is its own decision, not something to smuggle into a presentation-scoping unit.
238
+ *
239
+ * **ACCOUNT-subject rows are deliberately NOT scoped here, and that half is deferred, not done.**
240
+ * `listPresentable` scopes them on `accountId` — but the daemon holds no `accountId` anywhere in
241
+ * production code, so there is nothing to compare against and inventing one is a separate
242
+ * decision (M10B fourth review F5). Today's behavior for account rows is therefore unchanged:
243
+ * every agent on the daemon may present them, which is also what M10-D5 says for agents under the
244
+ * same account. It becomes wrong only when one daemon holds agents of two different accounts.
202
245
  *
203
246
  * Default behavior: returns only signals where `default_present = 1`.
204
247
  * `include` overrides the default — only the listed types are returned regardless of `default_present`.
@@ -206,11 +249,35 @@ export declare class TrustSignalStore {
206
249
  * Both `include` and `exclude` are type strings. Unknown types cause a validation error at the
207
250
  * IPC layer (the caller must pre-validate against listAllWalletSignals before calling this).
208
251
  */
209
- listAllActive(opts?: {
252
+ listAllActive(opts: {
253
+ presentingAgentPubkeyHex: string;
210
254
  nowSec?: number;
211
255
  include?: string[];
212
256
  exclude?: string[];
213
257
  }): WalletSignalRow[];
258
+ /**
259
+ * The distinct signal TYPES this agent could present — active, unexpired, and scoped to the
260
+ * presenting agent exactly as `listAllActive` scopes rows.
261
+ *
262
+ * Deliberately ignores `default_present`, because this answers "may this type be named in a
263
+ * filter", and `include` exists precisely to override the default. Validating a filter against
264
+ * `listAllActive`'s output would reject a type the operator holds but has defaulted off — the
265
+ * filter rejecting the thing it was built to select.
266
+ *
267
+ * The scoping is the point: the wallet is daemon-wide, so validating a filter against the whole
268
+ * wallet accepts a type only a CO-RESIDENT agent holds, and the session then presents nothing with
269
+ * no error (review MEDIUM-4).
270
+ */
271
+ listPresentableTypes(presentingAgentPubkeyHex: string, nowSec?: number): string[];
272
+ /**
273
+ * Record the subject's consent decision (D-23). The ONLY writer of this column after insert.
274
+ *
275
+ * `refused` is terminal in spirit but not enforced as one-way here: `M10B-D4` allows Bob to issue a
276
+ * CORRECTED endorsement after a refusal, and that is a NEW signal with its own hash — it does not
277
+ * reuse this row. What must never happen is a refusal being silently undone, which is why the
278
+ * migration is birth-gated rather than NULL-driven.
279
+ */
280
+ setConsentState(signalHash: string, state: ConsentState): boolean;
214
281
  /** Set the persistent default-presentation flag for a wallet signal. */
215
282
  setDefaultPresent(signalHash: string, value: boolean): boolean;
216
283
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"trust-signal-store.d.ts","sourceRoot":"","sources":["../src/trust-signal-store.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"trust-signal-store.d.ts","sourceRoot":"","sources":["../src/trust-signal-store.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAoCG;AAEH,OAAO,EAAyB,KAAK,mBAAmB,EAAE,MAAM,gCAAgC,CAAC;AACjG,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AACxD,OAAO,EAAkD,KAAK,YAAY,EAAE,MAAM,wBAAwB,CAAC;AAC3G,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,YAAY,CAAC;AAEzC;;2BAE2B;AAC3B,MAAM,MAAM,YAAY,GAAG,QAAQ,GAAG,SAAS,GAAG,YAAY,CAAC;AAE/D;;;;;GAKG;AACH,MAAM,MAAM,uBAAuB,GAAG,wBAAwB,GAAG,eAAe,CAAC;AACjF,qBAAa,sBAAuB,SAAQ,KAAK;IACnC,QAAQ,CAAC,MAAM,EAAE,uBAAuB;gBAA/B,MAAM,EAAE,uBAAuB,EAAE,MAAM,EAAE,MAAM;CAIrE;AAED;6DAC6D;AAC7D,MAAM,WAAW,iBAAiB;IAChC,UAAU,EAAE,MAAM,CAAC;IACnB,WAAW,EAAE,SAAS,GAAG,OAAO,CAAC;IACjC,OAAO,EAAE,MAAM,CAAC;IAChB,UAAU,EAAE,QAAQ,GAAG,OAAO,CAAC;IAC/B,YAAY,EAAE,MAAM,CAAC;IACrB,gDAAgD;IAChD,IAAI,EAAE,MAAM,CAAC;IACb,aAAa,EAAE,MAAM,CAAC;IACtB,kCAAkC;IAClC,OAAO,EAAE,UAAU,CAAC;IACpB,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,cAAc,EAAE,MAAM,GAAG,IAAI,CAAC;IAC9B,MAAM,EAAE,YAAY,GAAG,MAAM,CAAC;IAC9B,iHAAiH;IACjH,cAAc,CAAC,EAAE,OAAO,CAAC;CAC1B;AAED,MAAM,WAAW,eAAgB,SAAQ,iBAAiB;IACxD,UAAU,EAAE,MAAM,CAAC;IACnB;2FACuF;IACvF,YAAY,EAAE,YAAY,CAAC;IAC3B,2GAA2G;IAC3G,cAAc,EAAE,OAAO,CAAC;CACzB;AAED;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,MAAM,WAAW,mBAAoB,SAAQ,IAAI,CAAC,iBAAiB,EAAE,QAAQ,CAAC;IAC5E,OAAO,EAAE,MAAM,CAAC;IAChB,aAAa,EAAE,MAAM,CAAC;IACtB,UAAU,EAAE,MAAM,CAAC;IACnB,gFAAgF;IAChF,OAAO,EAAE,YAAY,CAAC;CACvB;AAED,MAAM,WAAW,iBAAkB,SAAQ,mBAAmB;IAC5D,UAAU,EAAE,MAAM,CAAC;CACpB;AA+DD;;;;GAIG;AACH,wBAAgB,uBAAuB,CAAC,EAAE,EAAE,cAAc,EAAE,OAAO,EAAE,MAAM,GAAG,IAAI,CAiBjF;AAqED,qBAAa,gBAAgB;;IAI3B;;;;;;OAMG;gBACS,EAAE,EAAE,cAAc,EAAE,MAAM,EAAE,MAAM;IAK9C;;;;;;;;OAQG;IACH;6BACyB;IACzB,eAAe,CAAC,CAAC,EAAE,iBAAiB,GAAG,OAAO;IA8B9C;;;;;;;;;;;OAWG;IACH,mBAAmB,CAAC,QAAQ,EAAE,mBAAmB,EAAE,WAAW,EAAE,MAAM,GAAG;QAAE,MAAM,EAAE,OAAO,CAAA;KAAE;IAoD5F,eAAe,CAAC,UAAU,EAAE,MAAM,GAAG,eAAe,GAAG,IAAI;IAO3D;;;;;;;;;;;OAWG;IACH,eAAe,CAAC,UAAU,EAAE,MAAM,EAAE,MAAM,EAAE,YAAY,GAAG,IAAI;IA0B/D;;;;;;;;;;;;;;;;OAgBG;IACH,eAAe,CAAC,IAAI,EAAE;QAAE,cAAc,EAAE,MAAM,CAAC;QAAC,SAAS,EAAE,MAAM,CAAC;QAAC,MAAM,CAAC,EAAE,MAAM,CAAA;KAAE,GAAG,eAAe,EAAE;IAqBxG;;;OAGG;IACH,oBAAoB,IAAI,eAAe,EAAE;IAOzC;;;OAGG;IACH,uBAAuB,CAAC,MAAM,EAAE,MAAM,GAAG,eAAe,GAAG,IAAI;IAY/D;;;;;;OAMG;IACH,kBAAkB,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO;IAW/C;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OAsCG;IACH,aAAa,CAAC,IAAI,EAAE;QAClB,wBAAwB,EAAE,MAAM,CAAC;QACjC,MAAM,CAAC,EAAE,MAAM,CAAC;QAChB,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;QACnB,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;KACpB,GAAG,eAAe,EAAE;IAqCrB;;;;;;;;;;;;OAYG;IACH,oBAAoB,CAAC,wBAAwB,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,GAAG,MAAM,EAAE;IAajF;;;;;;;OAOG;IACH,eAAe,CAAC,UAAU,EAAE,MAAM,EAAE,KAAK,EAAE,YAAY,GAAG,OAAO;IAWjE,wEAAwE;IACxE,iBAAiB,CAAC,UAAU,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,GAAG,OAAO;IAW9D;;;;;;;OAOG;IACH,iBAAiB,CAAC,CAAC,EAAE,mBAAmB,GAAG,IAAI;IA8B/C;;;OAGG;IACH,iBAAiB,CAAC,IAAI,EAAE;QAAE,OAAO,EAAE,MAAM,CAAC;QAAC,aAAa,EAAE,MAAM,CAAC;QAAC,UAAU,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,YAAY,CAAA;KAAE,GAAG,IAAI;IAgBnH,gEAAgE;IAChE,YAAY,CAAC,IAAI,EAAE;QAAE,OAAO,EAAE,MAAM,CAAC;QAAC,aAAa,EAAE,MAAM,CAAA;KAAE,GAAG,iBAAiB,EAAE;CAiBpF"}
@@ -36,6 +36,7 @@
36
36
  * presents exactly like a known one. Adding a signal type must require no change to this file.
37
37
  */
38
38
  import { verifyTrustSignalHash } from "@cello-protocol/protocol-types";
39
+ import { migrateWalletAddConsentState, CONSENT_ACCEPTED } from "./consent-migration.js";
39
40
  export class SignalDeliveryRejected extends Error {
40
41
  reason;
41
42
  constructor(reason, detail) {
@@ -77,6 +78,17 @@ const CREATE_WALLET_SQL = `
77
78
  ${ENVELOPE_COLUMNS},
78
79
  received_at INTEGER NOT NULL,
79
80
  default_present INTEGER NOT NULL DEFAULT 1,
81
+ -- M10B-D14r2 — NULLABLE, and that is forced rather than chosen: SQLite cannot ADD COLUMN with
82
+ -- NOT NULL and no DEFAULT, so a MIGRATED database can only ever have a nullable column. Making
83
+ -- the fresh DDL stricter would give fresh installs a different schema from migrated ones, and
84
+ -- the divergence would surface only on fresh installs — i.e. on every new operator, which is the
85
+ -- worst possible audience for it. The repo's "fresh == migrated" convention wins.
86
+ --
87
+ -- Nullability costs nothing here because presentability is enforced by the PREDICATE, which tests
88
+ -- for exactly 'accepted' rather than for the absence of a bad value. NULL, '', 'ACCEPTED' and any
89
+ -- future state all fail closed by construction (§5a), so the column constraint was never what was
90
+ -- protecting the invariant.
91
+ consent_state TEXT,
80
92
  PRIMARY KEY (signal_hash)
81
93
  );
82
94
  `;
@@ -109,6 +121,11 @@ export function ensureTrustSignalSchema(db, _logger) {
109
121
  catch {
110
122
  // Column already exists — safe to ignore.
111
123
  }
124
+ // M10B-D14r2 — DELIBERATELY OUTSIDE the try/catch above. That swallow is safe for an idempotent
125
+ // ALTER whose only expected failure is "already exists"; it is NOT safe for a migration with a
126
+ // one-time backfill, where a swallowed failure leaves the daemon running against a schema it
127
+ // believes gates consent and does not. This one is birth-gated and rethrows.
128
+ migrateWalletAddConsentState(db, _logger);
112
129
  }
113
130
  const toBuf = (b) => Buffer.from(b);
114
131
  /**
@@ -133,6 +150,7 @@ const toBytes = (v) => {
133
150
  function toWalletRow(r) {
134
151
  return {
135
152
  signalHash: r.signal_hash,
153
+ consentState: r.consent_state,
136
154
  subjectKind: r.subject_kind,
137
155
  subject: r.subject,
138
156
  issuerKind: r.issuer_kind,
@@ -180,9 +198,16 @@ export class TrustSignalStore {
180
198
  const res = this.#db
181
199
  .prepare(`INSERT OR IGNORE INTO wallet_trust_signals
182
200
  (signal_hash, subject_kind, subject, issuer_kind, issuer_pubkey, type, schema_version,
183
- payload, issued_at, expires_at, supersedes_hash, status, received_at, default_present)
184
- VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)`)
185
- .run(s.signalHash, s.subjectKind, s.subject, s.issuerKind, s.issuerPubkey, s.type, s.schemaVersion, toBuf(s.payload), s.issuedAt, s.expiresAt, s.supersedesHash, s.status, Date.now(), defaultPresent ? 1 : 0);
201
+ payload, issued_at, expires_at, supersedes_hash, status, received_at, default_present,
202
+ consent_state)
203
+ VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)`)
204
+ .run(s.signalHash, s.subjectKind, s.subject, s.issuerKind, s.issuerPubkey, s.type, s.schemaVersion, toBuf(s.payload), s.issuedAt, s.expiresAt, s.supersedesHash, s.status, Date.now(), defaultPresent ? 1 : 0,
205
+ // M10B-D14r2 / INV-CONSENT. Keys on ISSUER_KIND, never on the type string, so every future
206
+ // client-sourced type inherits consent for free (M10B-D1). An `agent`-issued signal was
207
+ // authored by somebody else ABOUT the operator and is unpresentable until they say so; a
208
+ // `portal`-issued one was minted for them, at their own action, and has no third party to
209
+ // wait for. Written at the one insert path, and the SQL predicate fails closed regardless.
210
+ s.issuerKind === "agent" ? "pending" : CONSENT_ACCEPTED);
186
211
  if (res.changes > 0) {
187
212
  this.#logger.info("signal.wallet.stored", {
188
213
  signalHash: s.signalHash, type: s.type, subjectKind: s.subjectKind, issuerKind: s.issuerKind,
@@ -293,10 +318,19 @@ export class TrustSignalStore {
293
318
  }
294
319
  }
295
320
  /**
296
- * The signals `agentId` may present, resolved from the ENVELOPE, not from a stored attribution:
321
+ * The signals an agent may present, resolved from the ENVELOPE, not from a stored attribution:
297
322
  * an `account`-subject row is presentable by every agent under `accountId`; an `agent`-subject row
298
323
  * only by its own subject (M10-D5/M10-D14).
299
324
  *
325
+ * **`agentPubkeyHex` is the K_local pubkey hex, NOT the daemon's device-local `agent_id`.** An
326
+ * agent-subject envelope's `subject` holds the pubkey — that is the value the directory joins on
327
+ * (`ap.k_local_pubkey = sr.subject`) — and a UUID compared against it matches nothing at all.
328
+ *
329
+ * NOTE (`DOD-END-SCOPE-FIX-1`): this method has no production callers; the live wire path is
330
+ * `listAllActive`, which now carries the agent-subject half of this scoping. Kept because it is
331
+ * the only implementation of the ACCOUNT-subject half, which is deferred behind a named
332
+ * prerequisite — the daemon holds no `accountId` anywhere in production code.
333
+ *
300
334
  * Excludes expired and non-active rows. Selective disclosure (all / some / none) is the CALLER's
301
335
  * choice on top of this — DOD-PRESENT-1; this returns what is *eligible*, never what to send.
302
336
  */
@@ -315,7 +349,7 @@ export class TrustSignalStore {
315
349
  AND (expires_at IS NULL OR expires_at > ?)
316
350
  AND ( (subject_kind = 'account' AND subject = ?)
317
351
  OR (subject_kind = 'agent' AND subject = ?) )`)
318
- .all(nowSec, opts.accountId, opts.agentId);
352
+ .all(nowSec, opts.accountId, opts.agentPubkeyHex);
319
353
  return rows.map(toWalletRow);
320
354
  }
321
355
  /**
@@ -363,7 +397,37 @@ export class TrustSignalStore {
363
397
  return false;
364
398
  }
365
399
  /**
366
- * Active, non-expired wallet signals eligible for presentation.
400
+ * Active, non-expired wallet signals THIS agent is eligible to present — the live wire path
401
+ * (`outbound-sessions.ts`).
402
+ *
403
+ * `presentingAgentPubkeyHex` is the presenting agent's K_local pubkey hex, and it is REQUIRED.
404
+ * An `agent`-subject row is presentable only by its own subject (M10-D5/M10-D14); the wallet is
405
+ * daemon-wide and shared by every agent on the device, so without this predicate each agent
406
+ * offers every co-resident agent's agent-subject signals to its own counterparties —
407
+ * `INV-AGENT-SCOPED`, which is what `DOD-END-SCOPE-FIX-1` closes. The scoping is in the SQL, not
408
+ * a JS filter, because `include` already routes around `default_present` and a JS branch would
409
+ * route around this the same way.
410
+ *
411
+ * **`lower(subject)`, because hex has a case and this comparison is byte-exact.** SQLite `TEXT`
412
+ * uses BINARY collation, so `AABB…` and `aabb…` — the same key — do not match, and the row would
413
+ * be silently un-presented with no error. The daemon's own `k_local_pubkey` is always lowercase
414
+ * (`agent-loader.ts` derives it with `.toString("hex")`), so only the STORED side can vary, and it
415
+ * can: `putWalletSignal` already names "a directory version-skew emitting uppercase hex" as a real
416
+ * condition. Comparing case-insensitively is the correct equality for hex, not a fallback that
417
+ * papers over a mismatch.
418
+ *
419
+ * Note the residual, because it is NOT closed here: the directory's
420
+ * `JOIN agent_profiles ap ON ap.k_local_pubkey = sr.subject` is case-sensitive too, so an
421
+ * uppercase-hex subject that ever got minted would still be invisible THERE. Closing that means
422
+ * constraining the value where it is produced (the portal's mint) — which spans three components
423
+ * and is its own decision, not something to smuggle into a presentation-scoping unit.
424
+ *
425
+ * **ACCOUNT-subject rows are deliberately NOT scoped here, and that half is deferred, not done.**
426
+ * `listPresentable` scopes them on `accountId` — but the daemon holds no `accountId` anywhere in
427
+ * production code, so there is nothing to compare against and inventing one is a separate
428
+ * decision (M10B fourth review F5). Today's behavior for account rows is therefore unchanged:
429
+ * every agent on the daemon may present them, which is also what M10-D5 says for agents under the
430
+ * same account. It becomes wrong only when one daemon holds agents of two different accounts.
367
431
  *
368
432
  * Default behavior: returns only signals where `default_present = 1`.
369
433
  * `include` overrides the default — only the listed types are returned regardless of `default_present`.
@@ -372,20 +436,78 @@ export class TrustSignalStore {
372
436
  * IPC layer (the caller must pre-validate against listAllWalletSignals before calling this).
373
437
  */
374
438
  listAllActive(opts) {
375
- const nowSec = opts?.nowSec ?? Math.floor(Date.now() / 1000);
439
+ // ABSENT IS NOT FINE (§5a), AND SO IS MALFORMED. A caller that cannot say who is presenting gets
440
+ // a refusal, never the whole wallet: the fail-open direction here IS the defect this method was
441
+ // fixed for, and it would hand a counterparty another agent's signals with no error and no log.
442
+ //
443
+ // The SHAPE check is the half that is easy to omit and expensive to omit. An empty string is
444
+ // caught by any guard; a device-local `agent_id` UUID, an agent NAME, or uppercase hex all sail
445
+ // through a truthiness check and then match zero rows — which is indistinguishable, to every
446
+ // caller, from "this operator holds no signals". That silence is precisely the trap
447
+ // `DOD-END-SCOPE-FIX-1` exists to close, so it is closed by construction here rather than by
448
+ // remembering to pass the right thing. 32-byte Ed25519 key, lowercase hex, as `agent-loader.ts`
449
+ // produces it.
450
+ if (!/^[0-9a-f]{64}$/.test(opts.presentingAgentPubkeyHex ?? "")) {
451
+ throw new Error("listAllActive requires the presenting agent's 32-byte K_local pubkey as lowercase hex — " +
452
+ "refusing to present an unscoped wallet");
453
+ }
454
+ const nowSec = opts.nowSec ?? Math.floor(Date.now() / 1000);
376
455
  const rows = this.#db
377
456
  .prepare(`SELECT * FROM wallet_trust_signals
378
457
  WHERE status = 'active'
379
- AND (expires_at IS NULL OR expires_at > ?)`)
380
- .all(nowSec);
458
+ AND (expires_at IS NULL OR expires_at > ?)
459
+ AND (subject_kind <> 'agent' OR lower(subject) = ?)
460
+ AND consent_state = '${CONSENT_ACCEPTED}'`)
461
+ .all(nowSec, opts.presentingAgentPubkeyHex);
381
462
  const all = rows.map(toWalletRow);
382
- if (opts?.include) {
463
+ if (opts.include) {
383
464
  const set = new Set(opts.include);
384
465
  return all.filter((s) => set.has(s.type));
385
466
  }
386
- const excluded = new Set(opts?.exclude ?? []);
467
+ const excluded = new Set(opts.exclude ?? []);
387
468
  return all.filter((s) => s.defaultPresent && !excluded.has(s.type));
388
469
  }
470
+ /**
471
+ * The distinct signal TYPES this agent could present — active, unexpired, and scoped to the
472
+ * presenting agent exactly as `listAllActive` scopes rows.
473
+ *
474
+ * Deliberately ignores `default_present`, because this answers "may this type be named in a
475
+ * filter", and `include` exists precisely to override the default. Validating a filter against
476
+ * `listAllActive`'s output would reject a type the operator holds but has defaulted off — the
477
+ * filter rejecting the thing it was built to select.
478
+ *
479
+ * The scoping is the point: the wallet is daemon-wide, so validating a filter against the whole
480
+ * wallet accepts a type only a CO-RESIDENT agent holds, and the session then presents nothing with
481
+ * no error (review MEDIUM-4).
482
+ */
483
+ listPresentableTypes(presentingAgentPubkeyHex, nowSec) {
484
+ const now = nowSec ?? Math.floor(Date.now() / 1000);
485
+ const rows = this.#db
486
+ .prepare(`SELECT DISTINCT type FROM wallet_trust_signals
487
+ WHERE status = 'active'
488
+ AND (expires_at IS NULL OR expires_at > ?)
489
+ AND (subject_kind <> 'agent' OR lower(subject) = ?)`)
490
+ .all(now, presentingAgentPubkeyHex);
491
+ return rows.map((r) => r.type);
492
+ }
493
+ /**
494
+ * Record the subject's consent decision (D-23). The ONLY writer of this column after insert.
495
+ *
496
+ * `refused` is terminal in spirit but not enforced as one-way here: `M10B-D4` allows Bob to issue a
497
+ * CORRECTED endorsement after a refusal, and that is a NEW signal with its own hash — it does not
498
+ * reuse this row. What must never happen is a refusal being silently undone, which is why the
499
+ * migration is birth-gated rather than NULL-driven.
500
+ */
501
+ setConsentState(signalHash, state) {
502
+ const res = this.#db
503
+ .prepare("UPDATE wallet_trust_signals SET consent_state = ? WHERE signal_hash = ?")
504
+ .run(state, signalHash);
505
+ if (Number(res.changes) > 0) {
506
+ this.#logger.info("signal.consent.changed", { signalHash, consentState: state });
507
+ return true;
508
+ }
509
+ return false;
510
+ }
389
511
  /** Set the persistent default-presentation flag for a wallet signal. */
390
512
  setDefaultPresent(signalHash, value) {
391
513
  const res = this.#db
@@ -1 +1 @@
1
- {"version":3,"file":"trust-signal-store.js","sourceRoot":"","sources":["../src/trust-signal-store.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"trust-signal-store.js","sourceRoot":"","sources":["../src/trust-signal-store.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.78",
3
+ "version": "0.0.79",
4
4
  "private": false,
5
5
  "type": "module",
6
6
  "engines": {
@@ -30,10 +30,10 @@
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.24",
34
- "@cello-protocol/gateway": "0.0.6",
35
- "@cello-protocol/transport": "0.0.27",
36
- "@cello-protocol/protocol-types": "0.0.26"
33
+ "@cello-protocol/crypto": "0.0.25",
34
+ "@cello-protocol/gateway": "0.0.7",
35
+ "@cello-protocol/protocol-types": "0.0.27",
36
+ "@cello-protocol/transport": "0.0.28"
37
37
  },
38
38
  "devDependencies": {
39
39
  "@types/node": "^25.6.2",