@cello-protocol/daemon 0.0.80 → 0.0.82

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.
@@ -1 +1 @@
1
- {"version":3,"file":"agent-handlers.d.ts","sourceRoot":"","sources":["../src/agent-handlers.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AACH,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAClD,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,2BAA2B,CAAC;AACpE,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,YAAY,CAAC;AACpD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,uBAAuB,CAAC;AACvD,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,8BAA8B,CAAC;AAG3E,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AACrD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAC;AAC1D,OAAO,KAAK,EAAE,gBAAgB,EAAE,SAAS,EAAE,MAAM,2BAA2B,CAAC;AAG7E,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,EAAE,GAAG,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC;IAClC,MAAM,EAAE,MAAM,CAAC;IACf,kBAAkB,EAAE,kBAAkB,CAAC;IACvC,MAAM,EAAE,SAAS,EAAE,CAAC;IACpB,YAAY,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;IAC1B;uFACmF;IACnF,yBAAyB,EAAE,MAAM,sBAAsB,CAAC;IACxD,YAAY,EAAE,CAAC,YAAY,EAAE,MAAM,KAAK,SAAS,GAAG,SAAS,CAAC;IAC9D,kBAAkB,EAAE,GAAG,CAAC,MAAM,EAAE;QAAE,YAAY,EAAE,MAAM,GAAG,IAAI,CAAC;QAAC,YAAY,CAAC,EAAE,MAAM,CAAC;QAAC,UAAU,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IAC5G,sBAAsB,EAAE,CAAC,YAAY,EAAE,MAAM,KAAK,SAAS,EAAE,CAAC;IAC9D,kBAAkB,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK;QAAE,EAAE,EAAE,IAAI,CAAA;KAAE,GAAG;QAAE,EAAE,EAAE,KAAK,CAAC;QAAC,MAAM,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAA;KAAE,CAAC;IACrG,kBAAkB,EAAE,CAAC,SAAS,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IACzD,WAAW,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;IACzB,YAAY,EAAE,GAAG,CAAC,MAAM,EAAE,WAAW,CAAC,CAAC;IACvC,YAAY,EAAE,WAAW,EAAE,CAAC;IAC5B,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,iBAAiB,EAAE,GAAG,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACzC;AAED,wBAAgB,qBAAqB,CAAC,IAAI,EAAE,gBAAgB,GAAG,IAAI,CA8WlE"}
1
+ {"version":3,"file":"agent-handlers.d.ts","sourceRoot":"","sources":["../src/agent-handlers.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AACH,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAClD,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,2BAA2B,CAAC;AACpE,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,YAAY,CAAC;AACpD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,uBAAuB,CAAC;AACvD,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,8BAA8B,CAAC;AAG3E,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AACrD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAC;AAC1D,OAAO,KAAK,EAAE,gBAAgB,EAAE,SAAS,EAAE,MAAM,2BAA2B,CAAC;AAK7E,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,EAAE,GAAG,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC;IAClC,MAAM,EAAE,MAAM,CAAC;IACf,kBAAkB,EAAE,kBAAkB,CAAC;IACvC,MAAM,EAAE,SAAS,EAAE,CAAC;IACpB,YAAY,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;IAC1B;uFACmF;IACnF,yBAAyB,EAAE,MAAM,sBAAsB,CAAC;IACxD,YAAY,EAAE,CAAC,YAAY,EAAE,MAAM,KAAK,SAAS,GAAG,SAAS,CAAC;IAC9D,kBAAkB,EAAE,GAAG,CAAC,MAAM,EAAE;QAAE,YAAY,EAAE,MAAM,GAAG,IAAI,CAAC;QAAC,YAAY,CAAC,EAAE,MAAM,CAAC;QAAC,UAAU,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IAC5G,sBAAsB,EAAE,CAAC,YAAY,EAAE,MAAM,KAAK,SAAS,EAAE,CAAC;IAC9D,kBAAkB,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK;QAAE,EAAE,EAAE,IAAI,CAAA;KAAE,GAAG;QAAE,EAAE,EAAE,KAAK,CAAC;QAAC,MAAM,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAA;KAAE,CAAC;IACrG,kBAAkB,EAAE,CAAC,SAAS,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IACzD,WAAW,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;IACzB,YAAY,EAAE,GAAG,CAAC,MAAM,EAAE,WAAW,CAAC,CAAC;IACvC,YAAY,EAAE,WAAW,EAAE,CAAC;IAC5B,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,iBAAiB,EAAE,GAAG,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACzC;AAED,wBAAgB,qBAAqB,CAAC,IAAI,EAAE,gBAAgB,GAAG,IAAI,CA4YlE"}
@@ -1,6 +1,7 @@
1
1
  import { MONIKER_RE, validateMoniker, buildAgentRevocationTbs } from "@cello-protocol/protocol-types";
2
2
  import { DbIdentityStore, DbRegistrationPersistence } from "./db-identity-store.js";
3
3
  import { generateKLocalSeed, InMemoryKeyProvider } from "@cello-protocol/crypto";
4
+ import { TrustSignalStore } from "./trust-signal-store.js";
4
5
  export function registerAgentHandlers(deps) {
5
6
  const { handlers, logger, sessionNodeManager, agents, onlineAgents, getNotificationDispatcher, getConnState, perConnectionState, getAgentsForConnection, startAgentInternal, dropAgentSignaling, awayAckSent, keyProviders, loadedAgents, getAgentSignaling, waitForSignalingConnected, perAgentSignaling, } = deps;
6
7
  // ─── MCP-001: cello_start_agent handler ───
@@ -337,6 +338,37 @@ export function registerAgentHandlers(deps) {
337
338
  result["warning"] = "registration_unknown";
338
339
  result["warning_guidance"] = `Agent '${name}' is selected, but its registration status could not be read — run 'cello status' to check whether it is registered with the directory.`;
339
340
  }
341
+ // ─── M10B / DOD-END-PENDING-1 — tell the operator a decision is waiting ────────────────────
342
+ // The clause: "on selecting an agent with pending items, the operator is told they are waiting."
343
+ //
344
+ // COUNT ONLY, and do NOT mark notified here. Marking on selection would mark them told about
345
+ // something they were never shown — the nudge says a number, the LIST is what shows the items,
346
+ // and `consent_list_pending` is what records that they saw it. The two lifetimes stay separate
347
+ // (M10B-D5): the notification goes quiet once seen, the ITEMS persist until decided.
348
+ //
349
+ // A failure here must NOT break selection, for the same reason the registration read above does
350
+ // not: the agent IS selected. But it must not read as "nothing pending" either — an unknown is
351
+ // surfaced as an unknown (§5a), because silence is exactly how an endorsement dies unnoticed.
352
+ try {
353
+ const rec = loadedAgents.find((a) => a.name === name);
354
+ if (rec) {
355
+ const pending = new TrustSignalStore(sessionNodeManager.getDb(), logger).countUnnotifiedConsent(rec.pubkey);
356
+ if (pending > 0) {
357
+ result["pending_consent"] = pending;
358
+ result["pending_consent_guidance"] =
359
+ `${pending} item${pending === 1 ? "" : "s"} awaiting your decision for '${name}'. ` +
360
+ `Run cello_consent_list to read ${pending === 1 ? "it" : "them"} and accept or refuse.`;
361
+ }
362
+ }
363
+ }
364
+ catch (err) {
365
+ logger.warn("signal.consent.count_failed", {
366
+ agentName: name, reason: err instanceof Error ? err.message : String(err),
367
+ });
368
+ result["pending_consent"] = "unknown";
369
+ result["pending_consent_guidance"] =
370
+ `Could not read pending consent items for '${name}' — run cello_consent_list to check directly.`;
371
+ }
340
372
  return result;
341
373
  });
342
374
  // ─── MCP-001: cello_list_agents handler ───
@@ -1 +1 @@
1
- {"version":3,"file":"agent-handlers.js","sourceRoot":"","sources":["../src/agent-handlers.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"agent-handlers.js","sourceRoot":"","sources":["../src/agent-handlers.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"consent-migration.d.ts","sourceRoot":"","sources":["../src/consent-migration.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAmCG;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,CAyDrF"}
1
+ {"version":3,"file":"consent-migration.d.ts","sourceRoot":"","sources":["../src/consent-migration.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAmCG;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,CAqFrF"}
@@ -40,7 +40,14 @@ export function migrateWalletAddConsentState(db, logger) {
40
40
  const columns = new Set(db.prepare("PRAGMA table_info(wallet_trust_signals)").all().map((c) => c.name));
41
41
  // BIRTH GATE. Idempotent, and deliberately NOT "backfill wherever the value is NULL": a NULL that
42
42
  // appears later is not a legacy row, and promoting it would be the clobber this file prevents.
43
- if (columns.has("consent_state"))
43
+ //
44
+ // IT GATES ON BOTH COLUMNS, and gating on only `consent_state` was a real bug that shipped: every
45
+ // database that ran the previous release already had `consent_state`, so this returned here and
46
+ // `consent_notified_at` was NEVER ADDED on upgrade. Fresh installs got it, upgrades did not —
47
+ // exactly the fresh-vs-migrated divergence the suite has a test for, on a column that test did not
48
+ // cover. It stayed green because the partial-migration test asserted only NEGATIVES, which are
49
+ // satisfied by returning before any of the code under test runs.
50
+ if (columns.has("consent_state") && columns.has("consent_notified_at"))
44
51
  return;
45
52
  // BEGIN IMMEDIATE, not DEFERRED: a deferred transaction takes no write lock, so two daemons on one
46
53
  // DB — a named real condition in this project — can both pass the gate above and the loser dies at
@@ -50,12 +57,33 @@ export function migrateWalletAddConsentState(db, logger) {
50
57
  try {
51
58
  // Re-read the gate under the lock: the PRAGMA above is a check-then-act outside any transaction.
52
59
  const underLock = new Set(db.prepare("PRAGMA table_info(wallet_trust_signals)").all().map((c) => c.name));
53
- if (underLock.has("consent_state")) {
60
+ // EACH COLUMN IS GATED INDEPENDENTLY. An earlier version added both under one gate keyed on
61
+ // `consent_state`, so a database holding one but not the other hit `duplicate column name`, the
62
+ // migration rethrew, and the daemon refused to start — a self-inflicted boot failure on a
63
+ // recoverable state. Caught by the legacy-backfill test, which constructs exactly that shape.
64
+ const needsConsent = !underLock.has("consent_state");
65
+ const needsNotified = !underLock.has("consent_notified_at");
66
+ if (!needsConsent && !needsNotified) {
54
67
  db.exec("COMMIT");
55
68
  return;
56
69
  }
57
70
  // No DEFAULT — see the header. The rows are given their value by the explicit backfill below.
58
- db.exec("ALTER TABLE wallet_trust_signals ADD COLUMN consent_state TEXT");
71
+ if (needsConsent)
72
+ db.exec("ALTER TABLE wallet_trust_signals ADD COLUMN consent_state TEXT");
73
+ // DOD-END-PENDING-1 / M10B-D5 — the NOTIFICATION's lifetime, which is NOT the item's. The item
74
+ // persists until accepted or refused; the notification is raised once and stops once seen. One
75
+ // flag cannot carry both: a single seen-bit would either dismiss the pending decision (losing it)
76
+ // or re-fire on every agent selection (nagging). Two facts, two columns.
77
+ if (needsNotified)
78
+ db.exec("ALTER TABLE wallet_trust_signals ADD COLUMN consent_notified_at INTEGER");
79
+ if (!needsConsent) {
80
+ // The backfill belongs to consent_state's BIRTH. If only the notification column was missing,
81
+ // the rows already carry their consent and must not be re-judged — that is the clobber this
82
+ // file exists to prevent, and it would arrive by the back door of a partially-migrated schema.
83
+ db.exec("COMMIT");
84
+ logger.info("signal.consent.migrated", { backfilled: 0, added: "consent_notified_at" });
85
+ return;
86
+ }
59
87
  // THE DIRECTION IS ENFORCED, NOT ARGUED (review F5). The header's reasoning — "everything
60
88
  // predating this column is portal-issued" — is true TODAY only by release timing: the daemon has
61
89
  // accepted `issuer_kind: agent` since M10, and a dev or staging wallet that picked one up during
@@ -1 +1 @@
1
- {"version":3,"file":"consent-migration.js","sourceRoot":"","sources":["../src/consent-migration.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAmCG;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,mGAAmG;IACnG,mGAAmG;IACnG,kGAAkG;IAClG,sCAAsC;IACtC,EAAE,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC;IAC3B,IAAI,CAAC;QACH,iGAAiG;QACjG,MAAM,SAAS,GAAG,IAAI,GAAG,CACtB,EAAE,CAAC,OAAO,CAAC,yCAAyC,CAAC,CAAC,GAAG,EAA8B,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAC5G,CAAC;QACF,IAAI,SAAS,CAAC,GAAG,CAAC,eAAe,CAAC,EAAE,CAAC;YAAC,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;YAAC,OAAO;QAAC,CAAC;QAClE,8FAA8F;QAC9F,EAAE,CAAC,IAAI,CAAC,gEAAgE,CAAC,CAAC;QAC1E,0FAA0F;QAC1F,iGAAiG;QACjG,iGAAiG;QACjG,gGAAgG;QAChG,gGAAgG;QAChG,sEAAsE;QACtE,MAAM,WAAW,GAAG,EAAE;aACnB,OAAO,CAAC,oDAAoD,gBAAgB,gCAAgC,CAAC;aAC7G,GAAG,EAAE,CAAC;QACT,MAAM,UAAU,GAAG,EAAE;aAClB,OAAO,CAAC,uFAAuF,CAAC;aAChG,GAAG,EAAE,CAAC;QACT,MAAM,GAAG,GAAG,EAAE,OAAO,EAAE,MAAM,CAAC,WAAW,CAAC,OAAO,CAAC,GAAG,MAAM,CAAC,UAAU,CAAC,OAAO,CAAC,EAAE,CAAC;QAClF,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QAClB,MAAM,CAAC,IAAI,CAAC,yBAAyB,EAAE;YACrC,UAAU,EAAE,GAAG,CAAC,OAAO;YACvB,QAAQ,EAAE,MAAM,CAAC,WAAW,CAAC,OAAO,CAAC;YACrC,OAAO,EAAE,MAAM,CAAC,UAAU,CAAC,OAAO,CAAC;YACnC,MAAM,EAAE,qGAAqG;SAC9G,CAAC,CAAC;IACL,CAAC;IAAC,OAAO,GAAY,EAAE,CAAC;QACtB,kGAAkG;QAClG,gGAAgG;QAChG,iGAAiG;QACjG,2FAA2F;QAC3F,8EAA8E;QAC9E,wDAAwD;QACxD,IAAI,CAAC;YAAC,EAAE,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;QAAC,CAAC;QAAC,MAAM,CAAC,CAAC,4DAA4D,CAAC,CAAC;QACnG,+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
+ {"version":3,"file":"consent-migration.js","sourceRoot":"","sources":["../src/consent-migration.ts"],"names":[],"mappings":"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"}
@@ -17,6 +17,7 @@
17
17
  * Fusing these into one call would either drag the lock in here or leak that timer.
18
18
  */
19
19
  import type { Logger } from "./types.js";
20
+ import type { ConsortiumManifest } from "@cello-protocol/protocol-types";
20
21
  import type { IManifestProvider, IManifestVersionStore, IManifestPollScheduler } from "@cello-protocol/transport";
21
22
  import type { DirectoryEndpoint } from "./signaling-connect.js";
22
23
  import { type ConsortiumEndpoint } from "./directory-bootstrap.js";
@@ -40,6 +41,16 @@ export interface ManifestGateResult {
40
41
  * and is empty on the back-compat path or when nothing resolved.
41
42
  */
42
43
  consortiumEndpoints: ConsortiumEndpoint[];
44
+ /**
45
+ * The VERIFIED manifest itself, or null on every path that did not verify one.
46
+ *
47
+ * Returned because a sealed submission needs the manifest's `intake_key` at request time, long
48
+ * after startup (M10B / DOD-END-SURFACE-1, the refusal-message carrier). Set ONLY alongside
49
+ * `manifestVerified = true`, so an unverified manifest can never reach a consumer: a sealing key
50
+ * read off an unverified manifest is a key an attacker chose, which would seal the operator's
51
+ * words to the attacker instead of the portal.
52
+ */
53
+ verifiedManifest: ConsortiumManifest | null;
43
54
  }
44
55
  /**
45
56
  * Load + verify the manifest, then resolve its node set to live endpoints.
@@ -1 +1 @@
1
- {"version":3,"file":"consortium-bootstrap.d.ts","sourceRoot":"","sources":["../src/consortium-bootstrap.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AACH,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,YAAY,CAAC;AACzC,OAAO,KAAK,EACV,iBAAiB,EACjB,qBAAqB,EACrB,sBAAsB,EACvB,MAAM,2BAA2B,CAAC;AAGnC,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAChE,OAAO,EAIL,KAAK,kBAAkB,EACxB,MAAM,0BAA0B,CAAC;AAElC,MAAM,WAAW,gBAAgB;IAC/B,gBAAgB,CAAC,EAAE,iBAAiB,CAAC;IACrC,gBAAgB,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IACrC,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,oBAAoB,EAAE,qBAAqB,CAAC;IAC5C,MAAM,EAAE,MAAM,CAAC;IACf,qFAAqF;IACrF,OAAO,CAAC,EAAE,OAAO,KAAK,CAAC;CACxB;AAED,MAAM,WAAW,kBAAkB;IACjC,qFAAqF;IACrF,gBAAgB,EAAE,OAAO,CAAC;IAC1B,+EAA+E;IAC/E,uBAAuB,EAAE,MAAM,CAAC;IAChC;;;;OAIG;IACH,mBAAmB,EAAE,kBAAkB,EAAE,CAAC;CAC3C;AAED;;;;;GAKG;AACH,wBAAsB,qBAAqB,CAAC,IAAI,EAAE,gBAAgB,GAAG,OAAO,CAAC,kBAAkB,CAAC,CAkF/F;AAED,MAAM,WAAW,qBAAqB;IACpC,gBAAgB,CAAC,EAAE,iBAAiB,CAAC;IACrC,gBAAgB,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IACrC,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,oBAAoB,EAAE,qBAAqB,CAAC;IAC5C,qBAAqB,CAAC,EAAE,sBAAsB,CAAC;IAC/C,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,yBAAyB,CAAC,EAAE,MAAM,OAAO,CAAC,iBAAiB,GAAG,IAAI,CAAC,CAAC;IACpE,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,CAAC,EAAE,OAAO,KAAK,CAAC;CACxB;AAED,MAAM,WAAW,iBAAiB;IAChC;;;;;OAKG;IACH,uBAAuB,EAAE,MAAM,OAAO,CAAC,kBAAkB,EAAE,GAAG,IAAI,CAAC,CAAC;IACpE;;;;;OAKG;IACH,wBAAwB,EAAE,CAAC,MAAM,OAAO,CAAC,iBAAiB,GAAG,IAAI,CAAC,CAAC,GAAG,SAAS,CAAC;IAChF,8EAA8E;IAC9E,mBAAmB,EAAE,MAAM,OAAO,CAAC,iBAAiB,GAAG,IAAI,CAAC,CAAC;IAC7D,qFAAqF;IACrF,oBAAoB,EAAE,CAAC,MAAM,IAAI,CAAC,GAAG,SAAS,CAAC;CAChD;AAED,wBAAgB,uBAAuB,CAAC,IAAI,EAAE,qBAAqB,GAAG,iBAAiB,CAyCtF"}
1
+ {"version":3,"file":"consortium-bootstrap.d.ts","sourceRoot":"","sources":["../src/consortium-bootstrap.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AACH,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,YAAY,CAAC;AACzC,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,gCAAgC,CAAC;AACzE,OAAO,KAAK,EACV,iBAAiB,EACjB,qBAAqB,EACrB,sBAAsB,EACvB,MAAM,2BAA2B,CAAC;AAGnC,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAChE,OAAO,EAIL,KAAK,kBAAkB,EACxB,MAAM,0BAA0B,CAAC;AAElC,MAAM,WAAW,gBAAgB;IAC/B,gBAAgB,CAAC,EAAE,iBAAiB,CAAC;IACrC,gBAAgB,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IACrC,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,oBAAoB,EAAE,qBAAqB,CAAC;IAC5C,MAAM,EAAE,MAAM,CAAC;IACf,qFAAqF;IACrF,OAAO,CAAC,EAAE,OAAO,KAAK,CAAC;CACxB;AAED,MAAM,WAAW,kBAAkB;IACjC,qFAAqF;IACrF,gBAAgB,EAAE,OAAO,CAAC;IAC1B,+EAA+E;IAC/E,uBAAuB,EAAE,MAAM,CAAC;IAChC;;;;OAIG;IACH,mBAAmB,EAAE,kBAAkB,EAAE,CAAC;IAC1C;;;;;;;;OAQG;IACH,gBAAgB,EAAE,kBAAkB,GAAG,IAAI,CAAC;CAC7C;AAED;;;;;GAKG;AACH,wBAAsB,qBAAqB,CAAC,IAAI,EAAE,gBAAgB,GAAG,OAAO,CAAC,kBAAkB,CAAC,CAsF/F;AAED,MAAM,WAAW,qBAAqB;IACpC,gBAAgB,CAAC,EAAE,iBAAiB,CAAC;IACrC,gBAAgB,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IACrC,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,oBAAoB,EAAE,qBAAqB,CAAC;IAC5C,qBAAqB,CAAC,EAAE,sBAAsB,CAAC;IAC/C,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,yBAAyB,CAAC,EAAE,MAAM,OAAO,CAAC,iBAAiB,GAAG,IAAI,CAAC,CAAC;IACpE,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,CAAC,EAAE,OAAO,KAAK,CAAC;CACxB;AAED,MAAM,WAAW,iBAAiB;IAChC;;;;;OAKG;IACH,uBAAuB,EAAE,MAAM,OAAO,CAAC,kBAAkB,EAAE,GAAG,IAAI,CAAC,CAAC;IACpE;;;;;OAKG;IACH,wBAAwB,EAAE,CAAC,MAAM,OAAO,CAAC,iBAAiB,GAAG,IAAI,CAAC,CAAC,GAAG,SAAS,CAAC;IAChF,8EAA8E;IAC9E,mBAAmB,EAAE,MAAM,OAAO,CAAC,iBAAiB,GAAG,IAAI,CAAC,CAAC;IAC7D,qFAAqF;IACrF,oBAAoB,EAAE,CAAC,MAAM,IAAI,CAAC,GAAG,SAAS,CAAC;CAChD;AAED,wBAAgB,uBAAuB,CAAC,IAAI,EAAE,qBAAqB,GAAG,iBAAiB,CAoDtF"}
@@ -12,8 +12,9 @@ export async function verifyStartupManifest(deps) {
12
12
  let manifestVerified = false;
13
13
  let verifiedManifestVersion = 0;
14
14
  let consortiumEndpoints = [];
15
+ let verifiedManifest = null;
15
16
  if (!manifestProvider || !manifestRootKeys || manifestThreshold === undefined) {
16
- return { manifestVerified, verifiedManifestVersion, consortiumEndpoints };
17
+ return { manifestVerified, verifiedManifestVersion, consortiumEndpoints, verifiedManifest };
17
18
  }
18
19
  try {
19
20
  const manifest = await manifestProvider.loadAndVerify(manifestRootKeys, manifestThreshold);
@@ -25,14 +26,14 @@ export async function verifyStartupManifest(deps) {
25
26
  manifestVersion: manifest.version,
26
27
  notBefore: manifest.not_before,
27
28
  });
28
- return { manifestVerified, verifiedManifestVersion, consortiumEndpoints };
29
+ return { manifestVerified, verifiedManifestVersion, consortiumEndpoints, verifiedManifest };
29
30
  }
30
31
  if (expiresAt <= now) {
31
32
  logger.error("directory.auth.manifest.expired", {
32
33
  manifestVersion: manifest.version,
33
34
  expiresAt: manifest.expires,
34
35
  });
35
- return { manifestVerified, verifiedManifestVersion, consortiumEndpoints };
36
+ return { manifestVerified, verifiedManifestVersion, consortiumEndpoints, verifiedManifest };
36
37
  }
37
38
  // Anti-rollback. Equal versions are fine (a restart on an unchanged manifest); only a STRICTLY
38
39
  // older version is a rollback attempt.
@@ -42,11 +43,14 @@ export async function verifyStartupManifest(deps) {
42
43
  manifestVersion: manifest.version,
43
44
  lastSeenVersion: lastSeen,
44
45
  });
45
- return { manifestVerified, verifiedManifestVersion, consortiumEndpoints };
46
+ return { manifestVerified, verifiedManifestVersion, consortiumEndpoints, verifiedManifest };
46
47
  }
47
48
  await manifestVersionStore.persistVersion(manifest.version);
48
49
  manifestVerified = true;
49
50
  verifiedManifestVersion = manifest.version;
51
+ // Retained ONLY here — on the one path where the signatures, the window, and the anti-rollback
52
+ // check have all passed.
53
+ verifiedManifest = manifest;
50
54
  logger.info("directory.auth.manifest.verified", {
51
55
  manifestVersion: manifest.version,
52
56
  signerCount: manifest.signatures.length,
@@ -82,7 +86,7 @@ export async function verifyStartupManifest(deps) {
82
86
  error: err instanceof Error ? err.message : String(err),
83
87
  });
84
88
  }
85
- return { manifestVerified, verifiedManifestVersion, consortiumEndpoints };
89
+ return { manifestVerified, verifiedManifestVersion, consortiumEndpoints, verifiedManifest };
86
90
  }
87
91
  export function createConsortiumRouting(deps) {
88
92
  const { manifestProvider, manifestRootKeys, manifestThreshold, manifestVersionStore, manifestPollScheduler, directoryHttpUrl, directoryEndpointResolver, logger, fetchFn, } = deps;
@@ -90,10 +94,21 @@ export function createConsortiumRouting(deps) {
90
94
  const m = manifestProvider?.getCurrentManifest();
91
95
  return m ? await manifestNodesToEndpoints(m.nodes, { logger, fetchFn }) : null;
92
96
  };
97
+ // DECLARED membership, straight off the verified manifest — no probe. Lets the resolver reject a
98
+ // primary that resolves but belongs to a different consortium (the compiled-in default URL after
99
+ // a consortium move) without mistaking a momentarily-down member for a non-member.
100
+ const getManifestPeerIds = () => {
101
+ const m = manifestProvider?.getCurrentManifest();
102
+ if (!m)
103
+ return null;
104
+ const ids = m.nodes.map((n) => n.peerId).filter((p) => typeof p === "string" && p.length > 0);
105
+ return ids.length > 0 ? new Set(ids) : null;
106
+ };
93
107
  const failoverEndpointResolver = directoryEndpointResolver
94
108
  ? createRosterAwareEndpointResolver({
95
109
  primaryResolver: directoryEndpointResolver,
96
110
  getConsortiumRoster: resolveConsortiumRoster,
111
+ getManifestPeerIds,
97
112
  logger,
98
113
  })
99
114
  : undefined;
@@ -1 +1 @@
1
- {"version":3,"file":"consortium-bootstrap.js","sourceRoot":"","sources":["../src/consortium-bootstrap.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"consortium-bootstrap.js","sourceRoot":"","sources":["../src/consortium-bootstrap.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"daemon.d.ts","sourceRoot":"","sources":["../src/daemon.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AAKH,OAAO,KAAK,EACV,YAAY,EACZ,oBAAoB,EAKrB,MAAM,YAAY,CAAC;AAMpB,OAAO,EAAE,kBAAkB,EAAE,MAAM,2BAA2B,CAAC;AAM/D,OAAO,EAAoD,KAAK,SAAS,EAAE,MAAM,2BAA2B,CAAC;AAQ7G,OAAO,KAAK,EAAE,mBAAmB,EAAE,iBAAiB,EAAsB,MAAM,2BAA2B,CAAC;AAO5G,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AAIlE,OAAO,EAAoB,KAAK,eAAe,EAAE,MAAM,2BAA2B,CAAC;AAkBnF,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAQlD,MAAM,WAAW,YAAY;IAC3B,IAAI,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACpC,SAAS,IAAI,oBAAoB,CAAC;IAClC;;;;OAIG;IACH,qBAAqB,IAAI,kBAAkB,CAAC;IAC5C;;;;OAIG;IACH,oBAAoB,IAAI,kBAAkB,CAAC;IAC3C;;;OAGG;IACH,iBAAiB,IAAI,eAAe,CAAC;IACrC;;OAEG;IACH,eAAe,IAAI,YAAY,CAAC;CACjC;AAYD,qBAAa,4BAA6B,YAAW,mBAAmB;IAChE,UAAU,CAAC,MAAM,EAAE,iBAAiB;CA8B3C;AAID,eAAO,MAAM,sBAAsB,QAAsB,CAAC;AAE1D;;;;;;;;;;GAUG;AACH,wBAAsB,WAAW,CAAC,MAAM,EAAE,YAAY,GAAG,OAAO,CAAC,YAAY,CAAC,CAS7E"}
1
+ {"version":3,"file":"daemon.d.ts","sourceRoot":"","sources":["../src/daemon.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AAKH,OAAO,KAAK,EACV,YAAY,EACZ,oBAAoB,EAKrB,MAAM,YAAY,CAAC;AAMpB,OAAO,EAAE,kBAAkB,EAAE,MAAM,2BAA2B,CAAC;AAM/D,OAAO,EAAoD,KAAK,SAAS,EAAE,MAAM,2BAA2B,CAAC;AAS7G,OAAO,KAAK,EAAE,mBAAmB,EAAE,iBAAiB,EAAsB,MAAM,2BAA2B,CAAC;AAO5G,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AAIlE,OAAO,EAAoB,KAAK,eAAe,EAAE,MAAM,2BAA2B,CAAC;AAkBnF,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAQlD,MAAM,WAAW,YAAY;IAC3B,IAAI,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACpC,SAAS,IAAI,oBAAoB,CAAC;IAClC;;;;OAIG;IACH,qBAAqB,IAAI,kBAAkB,CAAC;IAC5C;;;;OAIG;IACH,oBAAoB,IAAI,kBAAkB,CAAC;IAC3C;;;OAGG;IACH,iBAAiB,IAAI,eAAe,CAAC;IACrC;;OAEG;IACH,eAAe,IAAI,YAAY,CAAC;CACjC;AAYD,qBAAa,4BAA6B,YAAW,mBAAmB;IAChE,UAAU,CAAC,MAAM,EAAE,iBAAiB;CA8B3C;AAID,eAAO,MAAM,sBAAsB,QAAsB,CAAC;AAE1D;;;;;;;;;;GAUG;AACH,wBAAsB,WAAW,CAAC,MAAM,EAAE,YAAY,GAAG,OAAO,CAAC,YAAY,CAAC,CAS7E"}
package/dist/daemon.js CHANGED
@@ -43,6 +43,7 @@ import { createNode, SignalingManager } from "@cello-protocol/transport";
43
43
  import { createSignalingConnect } from "./signaling-connect.js";
44
44
  import { DbRegistrationPersistence, DbIdentityStore } from "./db-identity-store.js";
45
45
  import { DbManifestVersionStore } from "./manifest-version-store-db.js";
46
+ import { composeSealedSubmission, sendSealedSubmission } from "./signal-submission.js";
46
47
  // CELLO-M7-MSG-001 (AC-013/AC-018): the single application content-size cap, enforced
47
48
  // at the send point here (the receive point lives in the transport content decode).
48
49
  import { sealParkEnvelope } from "./park-envelope.js";
@@ -201,7 +202,7 @@ async function startDaemonHoldingLock(config, singletonLock) {
201
202
  // M7-MANIFEST-002: load and verify the consortium manifest BEFORE any directory connection.
202
203
  // The gate REPORTS; it does not decide (consortium-bootstrap.ts). The refuse below is ours
203
204
  // because only we hold the DB handle and the singleton lock a refusal has to release.
204
- const { manifestVerified, verifiedManifestVersion } = await verifyStartupManifest({
205
+ const { manifestVerified, verifiedManifestVersion, verifiedManifest } = await verifyStartupManifest({
205
206
  manifestProvider,
206
207
  manifestRootKeys,
207
208
  manifestThreshold,
@@ -1753,6 +1754,133 @@ async function startDaemonHoldingLock(config, singletonLock) {
1753
1754
  store.setDefaultPresent(row.signalHash, false);
1754
1755
  return { ok: true, signal_hash: row.signalHash, default_present: false };
1755
1756
  });
1757
+ // ── M10B / DOD-END-SURFACE-1 — the consent verbs (D-23, M10B-D5) ───────────────────────────────
1758
+ //
1759
+ // SCOPED TO THE SELECTED AGENT, not to "the first loaded agent" the way wallet_revoke_signal is.
1760
+ // Consent is a decision the SUBJECT makes about an object a third party wrote concerning them, so
1761
+ // answering it on the wrong agent's behalf is not a cosmetic error — it is one agent deciding for
1762
+ // another. The presenting-agent pubkey is also what the store's queries scope on, and passing the
1763
+ // device-local agent_id instead now REFUSES rather than silently returning an empty queue.
1764
+ const resolveSelectedAgent = (connectionId) => {
1765
+ const name = perConnectionState.get(connectionId)?.currentAgent ?? null;
1766
+ if (!name) {
1767
+ return {
1768
+ ok: false,
1769
+ reason: "no_current_agent",
1770
+ guidance: "Select an agent first (cello_use_agent) — a consent decision belongs to the agent it is about.",
1771
+ };
1772
+ }
1773
+ const rec = loadedAgents.find((a) => a.name === name);
1774
+ if (!rec) {
1775
+ return { ok: false, reason: "agent_not_loaded", guidance: `Agent '${name}' is selected but not loaded on this daemon.` };
1776
+ }
1777
+ return { ok: true, name, pubkey: rec.pubkey };
1778
+ };
1779
+ handlers.set("cello_consent_list", async (_params, connectionId) => {
1780
+ const sel = resolveSelectedAgent(connectionId);
1781
+ if (!sel.ok)
1782
+ return sel;
1783
+ const store = new TrustSignalStore(sessionNodeManager.getDb(), logger);
1784
+ const items = store.listPendingConsent(sel.pubkey).map((r) => ({
1785
+ signal_hash: r.signalHash,
1786
+ type: r.type,
1787
+ issuer_pubkey: r.issuerPubkey,
1788
+ issued_at: r.issuedAt,
1789
+ // The payload is the ENDORSER'S OWN WORDS and is returned raw, unparsed, for the operator to
1790
+ // read before deciding. It is not interpreted here and it is never presented to anyone until
1791
+ // they accept — that is the entire point of the decision they are being asked to make.
1792
+ payload_bytes: r.payload.length,
1793
+ }));
1794
+ // Seeing the list IS being told. Marking here rather than in cello_use_agent means the operator
1795
+ // is never marked notified about something they were not actually shown.
1796
+ store.markConsentNotified(sel.pubkey);
1797
+ return { ok: true, agent: sel.name, pending: items };
1798
+ });
1799
+ handlers.set("cello_consent_accept", async (params, connectionId) => {
1800
+ const sel = resolveSelectedAgent(connectionId);
1801
+ if (!sel.ok)
1802
+ return sel;
1803
+ const prefix = typeof params?.hash_prefix === "string" ? params.hash_prefix : null;
1804
+ if (!prefix || prefix.length < 8) {
1805
+ return { ok: false, reason: "invalid_prefix", guidance: "hash_prefix must be at least 8 hex characters." };
1806
+ }
1807
+ const store = new TrustSignalStore(sessionNodeManager.getDb(), logger);
1808
+ const item = store.listPendingConsent(sel.pubkey).find((r) => r.signalHash.startsWith(prefix));
1809
+ if (!item) {
1810
+ // Deliberately does NOT fall back to a wallet-wide lookup: a hash this agent has no pending
1811
+ // decision on is not this agent's to accept, and finding it anyway would be the cross-agent
1812
+ // decision this scoping exists to prevent.
1813
+ return { ok: false, reason: "not_pending_for_agent", guidance: `No pending consent item for '${sel.name}' with prefix '${prefix}'.` };
1814
+ }
1815
+ store.setConsentState(item.signalHash, "accepted");
1816
+ return { ok: true, signal_hash: item.signalHash, consent_state: "accepted" };
1817
+ });
1818
+ handlers.set("cello_consent_refuse", async (params, connectionId) => {
1819
+ const sel = resolveSelectedAgent(connectionId);
1820
+ if (!sel.ok)
1821
+ return sel;
1822
+ const prefix = typeof params?.hash_prefix === "string" ? params.hash_prefix : null;
1823
+ if (!prefix || prefix.length < 8) {
1824
+ return { ok: false, reason: "invalid_prefix", guidance: "hash_prefix must be at least 8 hex characters." };
1825
+ }
1826
+ const store = new TrustSignalStore(sessionNodeManager.getDb(), logger);
1827
+ const item = store.listPendingConsent(sel.pubkey).find((r) => r.signalHash.startsWith(prefix));
1828
+ if (!item) {
1829
+ return { ok: false, reason: "not_pending_for_agent", guidance: `No pending consent item for '${sel.name}' with prefix '${prefix}'.` };
1830
+ }
1831
+ // ORDER IS LOAD-BEARING: the refusal is recorded FIRST and is never conditional on the message
1832
+ // getting out. A refusal that only takes effect if the network cooperates would leave a signal
1833
+ // Alice believes she rejected sitting in an unrefused state — the exact failure INV-CONSENT
1834
+ // exists to prevent. The message is a courtesy layered on top of a decision already made.
1835
+ store.setConsentState(item.signalHash, "refused");
1836
+ const refused = { ok: true, signal_hash: item.signalHash, consent_state: "refused" };
1837
+ // M10B-D4: the message back to the issuer is the subject's CHOICE. Silence is the default, and a
1838
+ // silent refusal tells Bob NOTHING — which is what keeps D-24 intact for anyone who wants it.
1839
+ const message = typeof params?.message === "string" ? params.message.trim() : "";
1840
+ if (message.length === 0)
1841
+ return { ...refused, issuer_notified: false };
1842
+ // It rides the submission queue as the `refuse` op: operator-authored free text scanned at
1843
+ // intake exactly like the endorsement body — the same injection surface pointed the other way.
1844
+ // The subject of a refusal is the TARGET SIGNAL HASH, as it is for a withdrawal.
1845
+ const kp = keyProviders.get(sel.name);
1846
+ if (!kp) {
1847
+ logger.warn("signal.refusal.refused", { agentName: sel.name, reason: "key_provider_absent" });
1848
+ return { ...refused, issuer_notified: false, message_error: "key_provider_absent",
1849
+ guidance: `The refusal is recorded. Your message was NOT sent: no signing key is loaded for '${sel.name}'.` };
1850
+ }
1851
+ try {
1852
+ const composed = await composeSealedSubmission({
1853
+ manifest: verifiedManifest, keyProvider: kp, op: "refuse",
1854
+ subjectKind: "agent", subject: item.signalHash, body: message,
1855
+ issuedAt: Math.floor(Date.now() / 1000), logger,
1856
+ });
1857
+ if (!composed.ok) {
1858
+ // ERRORS NAME THEIR CAUSE: composeSealedSubmission's refusals (manifest_unavailable,
1859
+ // intake_key_absent, intake_key_malformed) say WHICH check refused, and that reason
1860
+ // survives here rather than collapsing into a generic send failure.
1861
+ return { ...refused, issuer_notified: false, message_error: composed.reason,
1862
+ guidance: `The refusal is recorded. Your message was NOT sent: ${composed.guidance}` };
1863
+ }
1864
+ const sent = await sendSealedSubmission({
1865
+ signaling: getAgentSignaling(sel.name, kp, sel.pubkey).signaling,
1866
+ submissionId: composed.submissionId, intakeKeyId: composed.intakeKeyId,
1867
+ ciphertext: composed.ciphertext, logger,
1868
+ });
1869
+ if (!sent.ok) {
1870
+ return { ...refused, issuer_notified: false, message_error: sent.reason,
1871
+ guidance: `The refusal is recorded. Your message was NOT sent: ${sent.guidance ?? sent.reason}. Retrying is safe — the submission id is derived from the content.` };
1872
+ }
1873
+ logger.info("signal.refusal.sent", { agentName: sel.name, submissionId: composed.submissionId });
1874
+ return { ...refused, issuer_notified: true, submission_id: composed.submissionId };
1875
+ }
1876
+ catch (err) {
1877
+ // A throw here must not un-refuse anything, and must not read as a clean refusal either.
1878
+ const reason = err instanceof Error ? err.message : String(err);
1879
+ logger.warn("signal.refusal.refused", { agentName: sel.name, reason });
1880
+ return { ...refused, issuer_notified: false, message_error: reason,
1881
+ guidance: `The refusal is recorded. Your message was NOT sent: ${reason}` };
1882
+ }
1883
+ });
1756
1884
  handlers.set("wallet_revoke_signal", async (params, _connectionId) => {
1757
1885
  const hashPrefix = typeof params?.hash_prefix === "string" ? params.hash_prefix : null;
1758
1886
  if (!hashPrefix || hashPrefix.length < 8) {