@cello-protocol/daemon 0.0.77 → 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.
- package/dist/consent-migration.d.ts +43 -0
- package/dist/consent-migration.d.ts.map +1 -0
- package/dist/consent-migration.js +63 -0
- package/dist/consent-migration.js.map +1 -0
- package/dist/outbound-sessions.d.ts.map +1 -1
- package/dist/outbound-sessions.js +51 -3
- package/dist/outbound-sessions.js.map +1 -1
- package/dist/signal-submission.d.ts +131 -0
- package/dist/signal-submission.d.ts.map +1 -0
- package/dist/signal-submission.js +238 -0
- package/dist/signal-submission.js.map +1 -0
- package/dist/trust-signal-store.d.ts +71 -4
- package/dist/trust-signal-store.d.ts.map +1 -1
- package/dist/trust-signal-store.js +133 -11
- package/dist/trust-signal-store.js.map +1 -1
- package/package.json +5 -5
|
@@ -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;
|
|
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({
|
|
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
|
|
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
|
|
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":"AAAA;;;;;;;;;;;GAWG;AACH,OAAO,EAAE,gBAAgB,EAAkB,MAAM,2BAA2B,CAAC;AAQ7E,OAAO,EAAE,oBAAoB,EAAyB,MAAM,6BAA6B,CAAC;AAC1F,OAAO,EAAE,0BAA0B,EAAE,0BAA0B,EAAE,sBAAsB,EAAE,yBAAyB,EAAE,sBAAsB,EAAE,MAAM,gCAAgC,CAAC;AACnL,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AACzD,OAAO,EAAE,sBAAsB,EAAE,MAAM,wBAAwB,CAAC;AAEhE,OAAO,EAAE,0BAA0B,EAAE,uBAAuB,EAAE,MAAM,uBAAuB,CAAC;AAC5F,OAAO,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAC3D,OAAO,EAAE,IAAI,EAAE,MAAM,8BAA8B,CAAC;AACpD,OAAO,EAAE,yBAAyB,EAAE,MAAM,gCAAgC,CAAC;AAqB3E,MAAM,UAAU,sBAAsB,CAAC,IAAyB;IAC9D,MAAM,EACJ,MAAM,EAAE,kBAAkB,EAAE,cAAc,EAAE,cAAc,EAAE,iBAAiB,EAC7E,yBAAyB,EAAE,mBAAmB,EAAE,uBAAuB,EACvE,qBAAqB,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,kBAAkB,EAAE,YAAY,GAC9F,GAAG,IAAI,CAAC;IAET,iFAAiF;IACjF,sFAAsF;IACtF,wFAAwF;IACxF,oFAAoF;IACpF,2FAA2F;IAC3F,sFAAsF;IACtF,kGAAkG;IAClG,mDAAmD;IACnD,oFAAoF;IACpF,kFAAkF;IAClF,uFAAuF;IACvF,yFAAyF;IACzF,yFAAyF;IACzF,mEAAmE;IACnE,MAAM,qBAAqB,GAAG,IAAI,GAAG,EAAU,CAAC;IAEhD,gFAAgF;IAChF,iGAAiG;IACjG,gGAAgG;IAChG,oGAAoG;IACpG,mDAAmD;IAEnD,MAAM,OAAO,GAAG,CAAC,EAAU,EAAiB,EAAE,CAAC,IAAI,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,UAAU,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC;IAErF;;;;;;;;;;OAUG;IACH,KAAK,UAAU,kBAAkB,CAC/B,SAA2B,EAC3B,SAAiB,EACjB,SAAiB,EACjB,aAAqB;QAErB,IAAI,YAAmD,CAAC;QACxD,MAAM,OAAO,GAAG,IAAI,OAAO,CAA0B,CAAC,CAAC,EAAE,EAAE,GAAG,YAAY,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QACnF,MAAM,UAAU,GAAG,SAAS,CAAC,sBAAsB,CAAC,CAAC,KAAK,EAAE,EAAE;YAC5D,MAAM,CAAC,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC;YACxB,IAAI,CAAC,KAAK,yBAAyB,IAAI,CAAC,KAAK,wBAAwB;gBAAE,YAAY,CAAC,KAAK,CAAC,CAAC;QAC7F,CAAC,CAAC,CAAC;QACH,IAAI,CAAC;YACH,MAAM,IAAI,GAAG,MAAM,SAAS,CAAC,OAAO,CAAC;gBACnC,IAAI,EAAE,kBAAkB;gBACxB,aAAa,EAAE,IAAI,UAAU,CAAC,MAAM,CAAC,IAAI,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC;aAC7D,CAAC,CAAC;YACH,IAAI,CAAC,IAAI,CAAC,EAAE,EAAE,CAAC;gBACb,2FAA2F;gBAC3F,qFAAqF;gBACrF,OAAO,EAAE,IAAI,EAAE,aAAa,EAAE,MAAM,EAAE,IAAI,CAAC,MAAM,IAAI,uBAAuB,EAAE,CAAC;YACjF,CAAC;YACD,IAAI,KAAqC,CAAC;YAC1C,MAAM,QAAQ,GAAG,IAAI,OAAO,CAA0B,CAAC,CAAC,EAAE,EAAE,GAAG,KAAK,GAAG,UAAU,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,aAAa,EAAE,CAAC,EAAE,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;YACnI,MAAM,KAAK,GAAG,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC,CAAC;YACtD,YAAY,CAAC,KAAK,CAAC,CAAC;YACpB,IAAI,KAAK,CAAC,MAAM,CAAC,KAAK,aAAa;gBAAE,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC;YAChE,IAAI,KAAK,CAAC,MAAM,CAAC,KAAK,wBAAwB,EAAE,CAAC;gBAC/C,MAAM,MAAM,GAAG,0BAA0B,CAAC,KAAK,CAAC,CAAC;gBACjD,MAAM,CAAC,IAAI,CAAC,mCAAmC,EAAE,EAAE,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,MAAM,EAAE,aAAa,EAAE,CAAC,CAAC;gBAC5G,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,EAAE,CAAC;YACnC,CAAC;YACD,MAAM,MAAM,GAAG,0BAA0B,CAAC,KAAK,CAAC,CAAC;YACjD,IAAI,CAAC,MAAM,EAAE,CAAC;gBACZ,2FAA2F;gBAC3F,6FAA6F;gBAC7F,MAAM,CAAC,IAAI,CAAC,mCAAmC,EAAE,EAAE,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,MAAM,EAAE,iBAAiB,EAAE,aAAa,EAAE,CAAC,CAAC;gBAC/H,OAAO,EAAE,IAAI,EAAE,WAAW,EAAE,CAAC;YAC/B,CAAC;YACD,MAAM,CAAC,IAAI,CAAC,4BAA4B,EAAE;gBACxC,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC;gBAC9B,KAAK,EAAE,MAAM,CAAC,KAAK;gBACnB,UAAU,EAAE,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC,IAAI,IAAI;gBAC3C,aAAa;aACd,CAAC,CAAC;YACH,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE,MAAM,CAAC,KAAK,EAAE,aAAa,EAAE,MAAM,CAAC,aAAa,EAAE,CAAC;QACtF,CAAC;gBAAS,CAAC;YACT,UAAU,EAAE,CAAC;QACf,CAAC;IACH,CAAC;IAED,qGAAqG;IACrG,KAAK,UAAU,8BAA8B,CAC3C,SAA2B,EAC3B,SAAiB,EACjB,EAAuC,EACvC,aAAqB,EACrB,SAAiB,EACjB,YAAyD;QAEzD,IAAI,YAAmD,CAAC;QACxD,MAAM,OAAO,GAAG,IAAI,OAAO,CAA0B,CAAC,CAAC,EAAE,EAAE,GAAG,YAAY,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QACnF,MAAM,UAAU,GAAG,SAAS,CAAC,sBAAsB,CAAC,CAAC,KAAK,EAAE,EAAE;YAC5D,MAAM,CAAC,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC;YACxB,IAAI,CAAC,KAAK,oBAAoB,IAAI,CAAC,KAAK,uBAAuB;gBAAE,YAAY,CAAC,KAAK,CAAC,CAAC;QACvF,CAAC,CAAC,CAAC;QACH,mFAAmF;QACnF,uFAAuF;QACvF,sFAAsF;QACtF,qFAAqF;QACrF,IAAI,OAA2B,CAAC;QAChC,IAAI,CAAC;YACH,MAAM,YAAY,GAAG,IAAI,eAAe,CAAC,kBAAkB,CAAC,KAAK,EAAE,EAAE,MAAM,CAAC,CAAC,eAAe,CAAC,SAAS,CAAC,CAAC;YACxG,OAAO,GAAG,sBAAsB,CAAC,YAAY,CAAC,CAAC;YAC/C,uFAAuF;YACvF,uEAAuE;YACvE,IAAI,YAAY,KAAK,IAAI,IAAI,OAAO,KAAK,SAAS,EAAE,CAAC;gBACnD,MAAM,CAAC,KAAK,CAAC,uCAAuC,EAAE,EAAE,SAAS,EAAE,aAAa,EAAE,CAAC,CAAC;YACtF,CAAC;QACH,CAAC;QAAC,OAAO,GAAY,EAAE,CAAC;YACtB,MAAM,CAAC,IAAI,CAAC,8BAA8B,EAAE;gBAC1C,SAAS;gBACT,MAAM,EAAE,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC;gBACxD,aAAa;aACd,CAAC,CAAC;YACH,OAAO,GAAG,SAAS,CAAC;QACtB,CAAC;QACD,8FAA8F;QAC9F,qGAAqG;QACrG,IAAI,YAAmE,CAAC;QACxE,IAAI,CAAC;YACH,MAAM,IAAI,GAAG,kBAAkB,CAAC,OAAO,CAAC,SAAS,EAAE,SAAS,CAAC,CAAC;YAC9D,IAAI,IAAI,IAAI,IAAI,CAAC,KAAK,EAAE,CAAC;gBACvB,MAAM,KAAK,GAAG,IAAI,gBAAgB,CAAC,kBAAkB,CAAC,KAAK,EAAE,EAAE,MAAM,CAAC,CAAC;gBACvE,MAAM,QAAQ,GAAG,KAAK,CAAC,aAAa,CAAC,EAAE,OAAO,EAAE,YAAY,EAAE,OAAO,EAAE,OAAO,EAAE,YAAY,EAAE,OAAO,EAAE,CAAC,CAAC;gBACzG,IAAI,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;oBACxB,YAAY,GAAG,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;wBAClC,IAAI,EAAE,CAAC,CAAC,UAAU;wBAClB,IAAI,EAAE,yBAAyB,CAAC;4BAC9B,YAAY,EAAE,CAAC,CAAC,WAAW;4BAC3B,OAAO,EAAE,CAAC,CAAC,OAAO;4BAClB,WAAW,EAAE,CAAC,CAAC,UAAU;4BACzB,aAAa,EAAE,CAAC,CAAC,YAAY;4BAC7B,IAAI,EAAE,CAAC,CAAC,IAAI;4BACZ,cAAc,EAAE,CAAC,CAAC,aAAa;4BAC/B,OAAO,EAAE,CAAC,CAAC,OAAO;4BAClB,SAAS,EAAE,CAAC,CAAC,QAAQ;4BACrB,UAAU,EAAE,CAAC,CAAC,SAAS;4BACvB,eAAe,EAAE,CAAC,CAAC,cAAc,KAAK,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,UAAU,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,cAAc,EAAE,KAAK,CAAC,CAAC;yBACzG,CAAC;qBACH,CAAC,CAAC,CAAC;oBACJ,MAAM,CAAC,IAAI,CAAC,8BAA8B,EAAE;wBAC1C,SAAS,EAAE,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,KAAK,EAAE,YAAY,CAAC,MAAM,EAAE,aAAa;qBACrF,CAAC,CAAC;gBACL,CAAC;YACH,CAAC;QACH,CAAC;QAAC,OAAO,GAAY,EAAE,CAAC;YACtB,MAAM,CAAC,IAAI,CAAC,iCAAiC,EAAE;gBAC7C,SAAS;gBACT,MAAM,EAAE,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC;gBACxD,aAAa;aACd,CAAC,CAAC;YACH,YAAY,GAAG,SAAS,CAAC;QAC3B,CAAC;QACD,IAAI,CAAC;YACH,MAAM,IAAI,GAAG,MAAM,SAAS,CAAC,OAAO,CAAC;gBACnC,IAAI,EAAE,iBAAiB;gBACvB,aAAa,EAAE,IAAI,UAAU,CAAC,MAAM,CAAC,IAAI,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC;gBAC5D,yBAAyB,EAAE,EAAE,CAAC,MAAM;gBACpC,uBAAuB,EAAE,EAAE,CAAC,KAAK;gBACjC,mBAAmB,EAAE,IAAI;gBACzB,GAAG,CAAC,OAAO,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;gBAC7C,GAAG,CAAC,YAAY,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,aAAa,EAAE,YAAY,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;aACvE,CAAC,CAAC;YACH,IAAI,CAAC,IAAI,CAAC,EAAE,EAAE,CAAC;gBACb,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,CAAC,MAAM,IAAI,uBAAuB,EAAE,QAAQ,EAAE,IAAI,CAAC,QAAQ,IAAI,qEAAqE,EAAE,CAAC;YACzK,CAAC;YACD,IAAI,KAAqC,CAAC;YAC1C,MAAM,QAAQ,GAAG,IAAI,OAAO,CAA0B,CAAC,CAAC,EAAE,EAAE,GAAG,KAAK,GAAG,UAAU,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,aAAa,EAAE,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;YAChI,MAAM,KAAK,GAAG,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC,CAAC;YACtD,YAAY,CAAC,KAAK,CAAC,CAAC;YACpB,IAAI,KAAK,CAAC,MAAM,CAAC,KAAK,aAAa,EAAE,CAAC;gBACpC,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,SAAS,EAAE,QAAQ,EAAE,4HAA4H,EAAE,CAAC;YAClL,CAAC;YACD,IAAI,KAAK,CAAC,MAAM,CAAC,KAAK,uBAAuB,EAAE,CAAC;gBAC9C,MAAM,MAAM,GAAG,yBAAyB,CAAC,KAAK,CAAC,CAAC;gBAChD,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,8CAA8C,MAAM,sDAAsD,EAAE,CAAC;YACrJ,CAAC;YACD,MAAM,GAAG,GAAG,KAAK,CAAC,YAAY,CAAwC,CAAC;YACvE,MAAM,UAAU,GAAG,GAAG,CAAC,CAAC,CAAC,sBAAsB,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;YAC5D,IAAI,CAAC,UAAU,EAAE,CAAC;gBAChB,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,yBAAyB,EAAE,QAAQ,EAAE,8DAA8D,EAAE,CAAC;YACpI,CAAC;YACD,MAAM,CAAC,IAAI,CAAC,uCAAuC,EAAE,EAAE,SAAS,EAAE,aAAa,EAAE,aAAa,EAAE,UAAU,CAAC,cAAc,EAAE,CAAC,CAAC;YAC7H,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,CAAC;QAClC,CAAC;gBAAS,CAAC;YACT,UAAU,EAAE,CAAC;QACf,CAAC;IACH,CAAC;IAED;;;;;;;;;;;OAWG;IACH,SAAS,sBAAsB,CAC7B,SAAiB,EACjB,gBAA8D,EAC9D,cAAsB,EACtB,QAA2B,EAC3B,aAAqB,EACrB,MAAc;QAEd,IAAI,OAAO,GAAqB,IAAI,CAAC;QACrC,MAAM,OAAO,GAAG,sBAAsB,CAAC;YACrC,oBAAoB,EAAE,GAAG,EAAE,CAAC,QAAQ;YACpC,eAAe,EAAE,GAAG,EAAE,CAAC,CAAC,EAAE,WAAW,EAAE,gBAAgB,EAAE,SAAS,EAAE,cAAc,EAAE,CAAC;YACrF,MAAM;YACN,iBAAiB;YACjB,kBAAkB;YAClB,QAAQ,EAAE,IAAI,EAAE,+EAA+E;YAC/F,WAAW,EAAE,CAAC,CAAC,EAAE,EAAE,GAAG,OAAO,GAAG,CAAC,CAAC,CAAC,CAAC;SACrC,CAAC,CAAC;QACH,iGAAiG;QACjG,MAAM,GAAG,GAAG,IAAI,gBAAgB,CAAC,EAAE,OAAO,EAAE,MAAM,EAAE,oBAAoB,EAAE,CAAC,EAAE,YAAY,EAAE,KAAK,EAAE,CAAC,CAAC;QACpG,0BAA0B,CAAC;YACzB,SAAS;YACT,WAAW,EAAE,cAAc,CAAC,SAAS,CAAC;YACtC,cAAc;YACd,WAAW,EAAE,gBAAgB;YAC7B,OAAO,EAAE,GAAG,EAAE,CAAC,OAAO;YACtB,oBAAoB,EAAE,mBAAmB;YACzC,sBAAsB,EAAE,uBAAuB;YAC/C,SAAS,EAAE,GAAG;YACd,MAAM;SACP,CAAC,CAAC;QACH,mGAAmG;QACnG,qGAAqG;QACrG,oGAAoG;QACpG,gGAAgG;QAChG,8FAA8F;QAC9F,6EAA6E;QAC7E,uBAAuB,CAAC;YACtB,SAAS;YACT,WAAW,EAAE,cAAc,CAAC,SAAS,CAAC;YACtC,cAAc;YACd,WAAW,EAAE,gBAAgB;YAC7B,OAAO,EAAE,GAAG,EAAE,CAAC,OAAO;YACtB,oBAAoB,EAAE,mBAAmB;YACzC,sBAAsB,EAAE,uBAAuB;YAC/C,SAAS,EAAE,GAAG;YACd,MAAM;SACP,CAAC,CAAC;QACH,oGAAoG;QACpG,oGAAoG;QACpG,yFAAyF;QACzF,mGAAmG;QACnG,gGAAgG;QAChG,6FAA6F;QAC7F,uBAAuB;QACvB,qBAAqB,CAAC,GAAG,EAAE,SAAS,EAAE,cAAc,CAAC,CAAC;QACtD,MAAM,CAAC,IAAI,CAAC,8BAA8B,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,MAAM,EAAE,aAAa,EAAE,CAAC,CAAC;QACxF,OAAO;YACL,GAAG;YACH,IAAI,EAAE,KAAK,EAAE,MAAc,EAAE,EAAE;gBAC7B,MAAM,CAAC,IAAI,CAAC,6BAA6B,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,aAAa,EAAE,CAAC,CAAC;gBAC/F,MAAM,GAAG,CAAC,IAAI,EAAE,CAAC;YACnB,CAAC;SACF,CAAC;IACJ,CAAC;IAED,mGAAmG;IACnG,qGAAqG;IACrG,qGAAqG;IACrG,sGAAsG;IACtG,qFAAqF;IACrF,uGAAuG;IACvG,4FAA4F;IAC5F,wGAAwG;IACxG,sGAAsG;IACtG,MAAM,wBAAwB,GAAG,IAAI,GAAG,EAAkB,CAAC;IAE3D;;;;OAIG;IACH,KAAK,UAAU,iBAAiB,CAC9B,SAAiB,EACjB,gBAA8D,EAC9D,cAAsB,EACtB,YAAoB,EACpB,SAAiB,EACjB,EAAuC,EACvC,aAAqB,EACrB,YAAyD;QAEzD,MAAM,MAAM,GAAG,MAAM,uBAAuB,EAAE,CAAC;QAC/C,MAAM,MAAM,GAAG,MAAM,EAAE,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,KAAK,YAAY,CAAC,IAAI,IAAI,CAAC;QACtE,IAAI,CAAC,MAAM,EAAE,CAAC;YACZ,6FAA6F;YAC7F,4DAA4D;YAC5D,MAAM,CAAC,IAAI,CAAC,0BAA0B,EAAE,EAAE,SAAS,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,EAAE,6BAA6B,EAAE,aAAa,EAAE,CAAC,CAAC;YACvI,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,6BAA6B,EAAE,QAAQ,EAAE,iCAAiC,YAAY,8EAA8E,EAAE,CAAC;QACrM,CAAC;QACD,MAAM,CAAC,IAAI,CAAC,6BAA6B,EAAE,EAAE,SAAS,EAAE,UAAU,EAAE,YAAY,EAAE,aAAa,EAAE,CAAC,CAAC;QACnG,MAAM,QAAQ,GAAG,sBAAsB,CAAC,SAAS,EAAE,gBAAgB,EAAE,cAAc,EAAE,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,SAAS,EAAE,MAAM,CAAC,SAAS,EAAE,EAAE,aAAa,EAAE,YAAY,CAAC,CAAC;QAC1K,mFAAmF;QACnF,IAAI,aAAa,GAAG,SAAS,CAAC;QAC9B,IAAI,CAAC;YACH,IAAI,CAAC,CAAC,MAAM,yBAAyB,CAAC,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC,EAAE,CAAC;gBAC7D,qFAAqF;gBACrF,wFAAwF;gBACxF,oFAAoF;gBACpF,MAAM,CAAC,IAAI,CAAC,0BAA0B,EAAE,EAAE,SAAS,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,EAAE,iCAAiC,EAAE,aAAa,EAAE,CAAC,CAAC;gBAC3I,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,iCAAiC,EAAE,QAAQ,EAAE,8EAA8E,YAAY,sBAAsB,EAAE,CAAC;YAC9L,CAAC;YACD,MAAM,MAAM,GAAG,MAAM,8BAA8B,CAAC,QAAQ,CAAC,GAAG,EAAE,SAAS,EAAE,EAAE,EAAE,aAAa,EAAE,SAAS,EAAE,YAAY,CAAC,CAAC;YACzH,IAAI,MAAM,CAAC,EAAE,EAAE,CAAC;gBACd,aAAa,GAAG,kBAAkB,CAAC;gBACnC,0GAA0G;gBAC1G,MAAM,kBAAkB,GAAG,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,UAAU,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;gBACrF,wBAAwB,CAAC,GAAG,CAAC,GAAG,SAAS,IAAI,kBAAkB,EAAE,EAAE,YAAY,CAAC,CAAC;gBACjF,MAAM,CAAC,IAAI,CAAC,+BAA+B,EAAE,EAAE,SAAS,EAAE,UAAU,EAAE,YAAY,EAAE,aAAa,EAAE,CAAC,CAAC;YACvG,CAAC;iBAAM,CAAC;gBACN,MAAM,CAAC,IAAI,CAAC,0BAA0B,EAAE,EAAE,SAAS,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,aAAa,EAAE,CAAC,CAAC;YACzH,CAAC;YACD,OAAO,MAAM,CAAC;QAChB,CAAC;gBAAS,CAAC;YACT,MAAM,QAAQ,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;QACrC,CAAC;IACH,CAAC;IAED,MAAM,yBAAyB,GAAsB,iBAAiB,IAAI;QACxE,SAAS,EAAE,KAAK,EAAE,GAAG,EAAqC,EAAE;YAC1D,MAAM,EAAE,GAAG,cAAc,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;YACzC,MAAM,QAAQ,GAAG,YAAY,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,GAAG,CAAC,SAAS,CAAC,CAAC;YACpE,IAAI,CAAC,EAAE,IAAI,CAAC,QAAQ,EAAE,CAAC;gBACrB,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,iBAAiB,EAAE,QAAQ,EAAE,UAAU,GAAG,CAAC,SAAS,iCAAiC,EAAE,CAAC;YACtH,CAAC;YACD,IAAI,qBAAqB,CAAC,GAAG,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE,CAAC;gBAC7C,OAAO;oBACL,EAAE,EAAE,KAAK;oBACT,MAAM,EAAE,iCAAiC;oBACzC,QAAQ,EAAE,gEAAgE,GAAG,CAAC,SAAS,uCAAuC;iBAC/H,CAAC;YACJ,CAAC;YACD,MAAM,SAAS,GACb,OAAO,GAAG,CAAC,MAAM,CAAC,eAAe,CAAC,KAAK,QAAQ;gBAC7C,CAAC,CAAE,GAAG,CAAC,MAAM,CAAC,eAAe,CAAY;gBACzC,CAAC,CAAC,OAAO,GAAG,CAAC,MAAM,CAAC,qBAAqB,CAAC,KAAK,QAAQ;oBACrD,CAAC,CAAE,GAAG,CAAC,MAAM,CAAC,qBAAqB,CAAY;oBAC/C,CAAC,CAAC,EAAE,CAAC;YACX,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,CAAC;gBACzC,OAAO;oBACL,EAAE,EAAE,KAAK;oBACT,MAAM,EAAE,uBAAuB;oBAC/B,QAAQ,EAAE,uGAAuG;iBAClH,CAAC;YACJ,CAAC;YACD,sFAAsF;YACtF,yEAAyE;YACzE,MAAM,UAAU,GAAG,GAAG,CAAC,MAAM,CAAC,iBAAiB,CAAC,CAAC;YACjD,MAAM,UAAU,GAAG,GAAG,CAAC,MAAM,CAAC,iBAAiB,CAAC,CAAC;YACjD,MAAM,YAAY,GAAG,KAAK,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC,CAAC,CAAE,UAAwB,CAAC,MAAM,CAAC,CAAC,CAAC,EAAe,EAAE,CAAC,OAAO,CAAC,KAAK,QAAQ,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;YACzI,MAAM,YAAY,GAAG,KAAK,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC,CAAC,CAAE,UAAwB,CAAC,MAAM,CAAC,CAAC,CAAC,EAAe,EAAE,CAAC,OAAO,CAAC,KAAK,QAAQ,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;YAEzI,gFAAgF;YAChF,IAAI,YAAY,IAAI,YAAY,EAAE,CAAC;gBACjC,MAAM,KAAK,GAAG,IAAI,gBAAgB,CAAC,kBAAkB,CAAC,KAAK,EAAE,EAAE,MAAM,CAAC,CAAC;gBACvE,MAAM,KAAK,GAAG,IAAI,GAAG,CAAC,KAAK,CAAC,oBAAoB,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;gBACvE,MAAM,KAAK,GAAG,YAAY,IAAI,YAAY,IAAI,EAAE,CAAC;gBACjD,MAAM,OAAO,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;gBACnD,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;oBACvB,OAAO;wBACL,EAAE,EAAE,KAAK;wBACT,MAAM,EAAE,qBAAqB;wBAC7B,QAAQ,EAAE,uCAAuC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,uGAAuG;qBAChM,CAAC;gBACJ,CAAC;YACH,CAAC;YACD,MAAM,YAAY,GAChB,YAAY,IAAI,YAAY,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,YAAY,EAAE,OAAO,EAAE,YAAY,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC;YAE9F,MAAM,EAAE,GAAG,kBAAkB,CAAC,uBAAuB,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;YACrE,IAAI,CAAC,EAAE,EAAE,CAAC;gBACR,OAAO;oBACL,EAAE,EAAE,KAAK;oBACT,MAAM,EAAE,+BAA+B;oBACvC,QAAQ,EAAE,sIAAsI;iBACjJ,CAAC;YACJ,CAAC;YACD,MAAM,EAAE,SAAS,EAAE,GAAG,iBAAiB,CAAC,GAAG,CAAC,SAAS,EAAE,EAAE,EAAE,QAAQ,CAAC,MAAM,CAAC,CAAC;YAC5E,IAAI,CAAC,CAAC,MAAM,yBAAyB,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC,EAAE,CAAC;gBAC1D,OAAO;oBACL,EAAE,EAAE,KAAK;oBACT,MAAM,EAAE,6BAA6B;oBACrC,QAAQ,EAAE,UAAU,GAAG,CAAC,SAAS,6IAA6I;iBAC/K,CAAC;YACJ,CAAC;YAED,2FAA2F;YAC3F,4FAA4F;YAC5F,yFAAyF;YACzF,qBAAqB,CAAC,GAAG,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;YACzC,IAAI,CAAC;gBACH,yFAAyF;gBACzF,6FAA6F;gBAC7F,0FAA0F;gBAC1F,MAAM,UAAU,GAAG,SAAS,CAAC,sBAAsB,CAAC;gBACpD,MAAM,QAAQ,GAAG,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC,sDAAsD;gBACvF,MAAM,YAAY,GAAG,CAAC,CAAC;gBACvB,KAAK,IAAI,OAAO,GAAG,CAAC,EAAE,OAAO,IAAI,YAAY,EAAE,OAAO,EAAE,EAAE,CAAC;oBACzD,MAAM,IAAI,GAAqB,MAAM,kBAAkB,CAAC,SAAS,EAAE,SAAS,EAAE,KAAK,EAAE,GAAG,CAAC,aAAa,CAAC,CAAC;oBAExG,2FAA2F;oBAC3F,yFAAyF;oBACzF,IAAI,IAAI,CAAC,IAAI,KAAK,aAAa,EAAE,CAAC;wBAChC,MAAM,CAAC,IAAI,CAAC,+BAA+B,EAAE,EAAE,SAAS,EAAE,GAAG,CAAC,SAAS,EAAE,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE,aAAa,EAAE,GAAG,CAAC,aAAa,EAAE,CAAC,CAAC;wBAC3I,IAAI,OAAO,GAAG,YAAY,EAAE,CAAC;4BAAC,MAAM,OAAO,CAAC,QAAQ,CAAC,OAAO,GAAG,CAAC,CAAC,CAAC,CAAC;4BAAC,SAAS;wBAAC,CAAC;wBAC/E,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,uBAAuB,EAAE,QAAQ,EAAE,0JAA0J,EAAE,CAAC;oBAC9N,CAAC;oBACD,+FAA+F;oBAC/F,wFAAwF;oBACxF,uFAAuF;oBACvF,IAAI,IAAI,CAAC,IAAI,KAAK,SAAS,EAAE,CAAC;wBAC5B,MAAM,CAAC,IAAI,CAAC,4BAA4B,EAAE,EAAE,SAAS,EAAE,GAAG,CAAC,SAAS,EAAE,OAAO,EAAE,aAAa,EAAE,GAAG,CAAC,aAAa,EAAE,CAAC,CAAC;wBACnH,IAAI,OAAO,GAAG,YAAY,EAAE,CAAC;4BAAC,MAAM,OAAO,CAAC,QAAQ,CAAC,OAAO,GAAG,CAAC,CAAC,CAAC,CAAC;4BAAC,SAAS;wBAAC,CAAC;wBAC/E,MAAM,CAAC,IAAI,CAAC,wCAAwC,EAAE,EAAE,SAAS,EAAE,GAAG,CAAC,SAAS,EAAE,aAAa,EAAE,GAAG,CAAC,aAAa,EAAE,CAAC,CAAC;wBACtH,OAAO,MAAM,8BAA8B,CAAC,SAAS,EAAE,SAAS,EAAE,EAAE,EAAE,GAAG,CAAC,aAAa,EAAE,GAAG,CAAC,SAAS,EAAE,YAAY,CAAC,CAAC;oBACxH,CAAC;oBACD,+FAA+F;oBAC/F,yFAAyF;oBACzF,IAAI,IAAI,CAAC,IAAI,KAAK,OAAO,IAAI,IAAI,CAAC,IAAI,KAAK,WAAW,EAAE,CAAC;wBACvD,MAAM,CAAC,IAAI,CAAC,kCAAkC,EAAE,EAAE,SAAS,EAAE,GAAG,CAAC,SAAS,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,aAAa,EAAE,GAAG,CAAC,aAAa,EAAE,CAAC,CAAC;wBAC1I,IAAI,OAAO,GAAG,YAAY,EAAE,CAAC;4BAAC,MAAM,OAAO,CAAC,QAAQ,CAAC,OAAO,GAAG,CAAC,CAAC,CAAC,CAAC;4BAAC,SAAS;wBAAC,CAAC;wBAC/E,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,uBAAuB,EAAE,QAAQ,EAAE,oIAAoI,EAAE,CAAC;oBACxM,CAAC;oBAED,gDAAgD;oBAChD,MAAM,MAAM,GAAG,oBAAoB,CAAC,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,aAAa,EAAE,UAAU,CAAC,CAAC;oBAChF,4FAA4F;oBAC5F,IAAI,MAAM,CAAC,IAAI,KAAK,eAAe,EAAE,CAAC;wBACpC,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,eAAe,EAAE,QAAQ,EAAE,yIAAyI,EAAE,CAAC;oBACrM,CAAC;oBACD,2DAA2D;oBAC3D,IAAI,MAAM,CAAC,IAAI,KAAK,SAAS,EAAE,CAAC;wBAC9B,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,sBAAsB,EAAE,QAAQ,EAAE,oHAAoH,EAAE,CAAC;oBACvL,CAAC;oBACD,sDAAsD;oBACtD,IAAI,MAAM,CAAC,IAAI,KAAK,OAAO,EAAE,CAAC;wBAC5B,MAAM,CAAC,IAAI,CAAC,kCAAkC,EAAE,EAAE,SAAS,EAAE,GAAG,CAAC,SAAS,EAAE,OAAO,EAAE,IAAI,EAAE,iBAAiB,EAAE,aAAa,EAAE,GAAG,CAAC,aAAa,EAAE,CAAC,CAAC;wBAClJ,IAAI,OAAO,GAAG,YAAY,EAAE,CAAC;4BAAC,MAAM,OAAO,CAAC,QAAQ,CAAC,OAAO,GAAG,CAAC,CAAC,CAAC,CAAC;4BAAC,SAAS;wBAAC,CAAC;wBAC/E,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,sBAAsB,EAAE,QAAQ,EAAE,uFAAuF,EAAE,CAAC;oBAC1J,CAAC;oBAED,MAAM,MAAM,GACV,MAAM,CAAC,IAAI,KAAK,WAAW;wBACzB,0FAA0F;wBAC1F,0FAA0F;wBAC1F,CAAC,CAAC,MAAM,8BAA8B,CAAC,SAAS,EAAE,SAAS,EAAE,EAAE,EAAE,GAAG,CAAC,aAAa,EAAE,GAAG,CAAC,SAAS,EAAE,YAAY,CAAC;wBAChH,iFAAiF;wBACjF,CAAC,CAAC,MAAM,iBAAiB,CAAC,GAAG,CAAC,SAAS,EAAE,EAAE,EAAE,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC,YAAY,EAAE,SAAS,EAAE,EAAE,EAAE,GAAG,CAAC,aAAa,EAAE,YAAY,CAAC,CAAC;oBAEvI,yFAAyF;oBACzF,0FAA0F;oBAC1F,0DAA0D;oBAC1D,IAAI,CAAC,MAAM,CAAC,EAAE,IAAI,CAAC,MAAM,CAAC,MAAM,KAAK,gBAAgB,IAAI,MAAM,CAAC,MAAM,KAAK,iCAAiC,CAAC,EAAE,CAAC;wBAC9G,MAAM,CAAC,IAAI,CAAC,yCAAyC,EAAE,EAAE,SAAS,EAAE,GAAG,CAAC,SAAS,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,aAAa,EAAE,GAAG,CAAC,aAAa,EAAE,CAAC,CAAC;wBACvJ,IAAI,OAAO,GAAG,YAAY,EAAE,CAAC;4BAAC,MAAM,OAAO,CAAC,QAAQ,CAAC,OAAO,GAAG,CAAC,CAAC,CAAC,CAAC;4BAAC,SAAS;wBAAC,CAAC;wBAC/E,4FAA4F;wBAC5F,qCAAqC;wBACrC,OAAO,MAAM,CAAC,MAAM,KAAK,iCAAiC;4BACxD,CAAC,CAAC,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,iCAAiC,EAAE,QAAQ,EAAE,qJAAqJ,EAAE;4BAC3N,CAAC,CAAC,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,sBAAsB,EAAE,QAAQ,EAAE,0IAA0I,EAAE,CAAC;oBAC1M,CAAC;oBACD,OAAO,MAAM,CAAC;gBAChB,CAAC;gBACD,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,sBAAsB,EAAE,QAAQ,EAAE,8EAA8E,EAAE,CAAC;YACjJ,CAAC;oBAAS,CAAC;gBACT,qBAAqB,CAAC,MAAM,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;YAC9C,CAAC;QACH,CAAC;KACF,CAAC;IAEF,kEAAkE;IAClE,OAAO,EAAE,sBAAsB,EAAE,wBAAwB,EAAE,yBAAyB,EAAE,CAAC;AACzF,CAAC"}
|
|
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
|
|
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
|
-
|
|
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
|
|
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":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAoCG;AAEH,OAAO,EAAyB,KAAK,mBAAmB,EAAE,MAAM,gCAAgC,CAAC;AACjG,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AACxD,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,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;
|
|
1
|
+
{"version":3,"file":"trust-signal-store.d.ts","sourceRoot":"","sources":["../src/trust-signal-store.ts"],"names":[],"mappings":"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"}
|
|
@@ -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
|
-
|
|
185
|
-
|
|
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
|
|
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.
|
|
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
|
|
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
|
-
|
|
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
|
-
|
|
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
|
|
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
|
|
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.
|
|
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.
|
|
34
|
-
"@cello-protocol/
|
|
35
|
-
"@cello-protocol/
|
|
36
|
-
"@cello-protocol/transport": "0.0.
|
|
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",
|