@motebit/protocol 1.3.0 → 2.0.0

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/README.md CHANGED
@@ -37,11 +37,13 @@ const relayFee = PLATFORM_FEE_RATE; // 0.05 — the universal 5% relay fee.
37
37
  - **Identity** — `MotebitIdentity`, `KeySuccessionRecord`, `DeviceRegistration`
38
38
  - **Execution receipts** — `ExecutionReceipt` with nested delegation chains
39
39
  - **Credentials** — W3C VC 2.0 types (`ReputationCredentialSubject`, `TrustCredentialSubject`)
40
- - **Settlement** — `BudgetAllocation`, `SettlementRecord`, `PLATFORM_FEE_RATE`
40
+ - **Settlement** — `BudgetAllocation`, `SettlementRecord`, `PLATFORM_FEE_RATE`; `SettlementMode` closed union (`"relay" | "p2p"`) with `ALL_SETTLEMENT_MODES` for iteration and `isSettlementMode` for narrowing wire-format payloads pulled from discovery / peer-negotiation responses; `SettlementAsset` closed union (`"USDC"` at sub-phase A) with `ALL_SETTLEMENT_ASSETS` for iteration and `isSettlementAsset` for narrowing — the typed vocabulary of stablecoin assets the protocol clears settlement in; `SovereignRail.asset` is structurally tightened to this union so a peer announcing an unknown asset fails closed. **Guest-rail capability marker interfaces** + type guards — `GuestRail` carries `supportsDeposit` / `supportsWithdraw` / `supportsBatch` discriminants; `DepositableGuestRail` / `WithdrawableGuestRail` / `BatchableGuestRail` add the corresponding methods; `isDepositableRail` / `isWithdrawableRail` / `isBatchableRail` narrow at the call site. The marker on `WithdrawableGuestRail` is the structural enforcement of the off-ramp doctrine: rails that don't opt in (e.g., Bridge, treasury-only) cannot drive user-facing withdrawals because `withdraw` does not exist on the base type
41
41
  - **Trust algebra** — semiring operations for delegation-chain trust computation
42
- - **Policy** — `ToolDefinition`, `PolicyDecision`, `RiskLevel`, `SensitivityLevel`
42
+ - **Policy** — `ToolDefinition`, `PolicyDecision`, `RiskLevel`, `SensitivityLevel` (the 5-tier privacy ladder, the most load-bearing closed registry; `ALL_SENSITIVITY_LEVELS` for iteration, `isSensitivityLevel` for narrowing unknown payloads, `rankSensitivity` / `maxSensitivity` / `sensitivityPermits` for the algebra)
43
+ - **Event-log vocabulary** — `EventType` closed enum (59 entries spanning identity / memory / goals / approvals / plans / consolidation / co-browse / agents); `ALL_EVENT_TYPES` for iteration, `isEventType` for narrowing wire-format payloads pulled from sync peers or federation
43
44
  - **Storage adapters** — pluggable persistence contracts for any backend
44
45
  - **Cryptosuite registry** — `SuiteId` union for crypto-agile wire artifacts
46
+ - **Auto-router registry** — `TaskShape` closed union (`ALL_TASK_SHAPES`, `isTaskShape`) for the model-selection primitive; named constants `QUICK_TASK_SHAPE`, `CHAT_TASK_SHAPE`, `REASONING_TASK_SHAPE`, `CODE_TASK_SHAPE`, `RESEARCH_TASK_SHAPE`, `CREATIVE_TASK_SHAPE`, `MATH_TASK_SHAPE`. Paired with `ProviderCapability` + `RoutingConstraint` + `RoutingDecision` types consumed by `@motebit/policy::dispatchRouting`
45
47
 
46
48
  Product-level types (state vectors, creature behavior, rendering spec) live in [`@motebit/sdk`](https://www.npmjs.com/package/@motebit/sdk), which re-exports everything here plus the product vocabulary.
47
49
 
@@ -31,10 +31,19 @@
31
31
  */
32
32
  /**
33
33
  * The closed set of content-artifact categories motebit currently
34
- * signs. Today's set covers the twelve state-export endpoints at
35
- * `services/relay/src/state-export.ts`, each wrapped in a
36
- * relay-asserted `ContentArtifactManifest` per the doctrine §8
37
- * recognition note (`docs/doctrine/nist-alignment.md`).
34
+ * signs. The first twelve cover the state-export endpoints at
35
+ * `services/relay/src/state-export.ts` (relay-assembled bundles
36
+ * the relay signs as a witness over its database state per the
37
+ * recognition note in `docs/doctrine/nist-alignment.md` §8). The
38
+ * thirteenth — `goal-result` — is the **first non-relay-state-export
39
+ * consumer**: a motebit-direct, per-fire artifact that the motebit
40
+ * itself signs as the producer (the agent's own work product, not
41
+ * a relay-assembled bundle). The expansion is doctrinally aligned —
42
+ * the registry's stated semantic is "content-artifact category for
43
+ * C2PA-shape provenance," not "relay state-export bundle." Goals
44
+ * is the first arc to prove the registry generalizes; future
45
+ * motebit-direct artifacts (chat-bundle exports, generated documents,
46
+ * tool-call-result bundles) compose against the same shape.
38
47
  *
39
48
  * - `state-snapshot` — relay's stored state vector for a motebit
40
49
  * (`/api/v1/state/:motebitId`)
@@ -63,6 +72,12 @@
63
72
  * inner motebit-signed delegation receipt summaries; the
64
73
  * canonical layered-signing consumer
65
74
  * (`/api/v1/execution/:motebitId/:goalId`)
75
+ * - `goal-result` — per-fire content motebit produced for a
76
+ * scheduled goal. Producer = motebit identity (not relay).
77
+ * Doctrine: `docs/doctrine/goal-results.md` §"The three
78
+ * categories" — the artifact category's cryptographic
79
+ * provenance envelope. Bound to the fire via `invocation`
80
+ * (goal_id + execution-receipt id when present).
66
81
  *
67
82
  * Adding an endpoint is intentional protocol-level work: a new
68
83
  * `ContentArtifactType` entry here, a new named constant, a new
@@ -70,9 +85,11 @@
70
85
  * update in `scripts/check-artifact-type-canonical.ts`. Drift gate
71
86
  * `check-state-export-signed` enforces that every new `app.get(...)`
72
87
  * in `services/relay/src/state-export.ts` emits a manifest before
73
- * returning.
88
+ * returning — that gate scopes only to relay state-export endpoints,
89
+ * not to motebit-direct consumers like `goal-result`, which the
90
+ * runtime signs at fire-time through its own helper.
74
91
  */
75
- export type ContentArtifactType = "state-snapshot" | "memory-export" | "goal-list" | "conversation-list" | "conversation-messages" | "device-list" | "audit-trail" | "plan-list" | "plan-detail" | "gradient-history" | "sync-pull" | "execution-ledger";
92
+ export type ContentArtifactType = "state-snapshot" | "memory-export" | "goal-list" | "conversation-list" | "conversation-messages" | "device-list" | "audit-trail" | "plan-list" | "plan-detail" | "gradient-history" | "sync-pull" | "execution-ledger" | "goal-result";
76
93
  /** Relay's stored state-vector snapshot for a motebit. */
77
94
  export declare const STATE_SNAPSHOT_ARTIFACT: ContentArtifactType;
78
95
  /** Relay-assembled memory-graph snapshot (nodes + edges). */
@@ -102,6 +119,15 @@ export declare const SYNC_PULL_ARTIFACT: ContentArtifactType;
102
119
  * byte-identical. See `spec/execution-ledger-v1.md`.
103
120
  */
104
121
  export declare const EXECUTION_LEDGER_ARTIFACT: ContentArtifactType;
122
+ /**
123
+ * Per-fire artifact bytes for a scheduled goal — the content motebit
124
+ * produced when the goal cadence fired (or the user invoked
125
+ * `runNow`). First non-relay-state-export consumer of the registry:
126
+ * the motebit identity signs as producer, not the relay. Doctrine:
127
+ * `docs/doctrine/goal-results.md` §"The three categories" — the
128
+ * artifact category's cryptographic provenance envelope.
129
+ */
130
+ export declare const GOAL_RESULT_ARTIFACT: ContentArtifactType;
105
131
  /**
106
132
  * Canonical iteration order, frozen. Consumers that need to iterate
107
133
  * (drift gates, tooling, docs) use this so TypeScript sees the narrow
@@ -1 +1 @@
1
- {"version":3,"file":"artifact-type.d.ts","sourceRoot":"","sources":["../src/artifact-type.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8BG;AAEH;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA0CG;AACH,MAAM,MAAM,mBAAmB,GAC3B,gBAAgB,GAChB,eAAe,GACf,WAAW,GACX,mBAAmB,GACnB,uBAAuB,GACvB,aAAa,GACb,aAAa,GACb,WAAW,GACX,aAAa,GACb,kBAAkB,GAClB,WAAW,GACX,kBAAkB,CAAC;AAUvB,0DAA0D;AAC1D,eAAO,MAAM,uBAAuB,EAAE,mBAAsC,CAAC;AAE7E,6DAA6D;AAC7D,eAAO,MAAM,sBAAsB,EAAE,mBAAqC,CAAC;AAE3E,+CAA+C;AAC/C,eAAO,MAAM,kBAAkB,EAAE,mBAAiC,CAAC;AAEnE,wDAAwD;AACxD,eAAO,MAAM,0BAA0B,EAAE,mBAAyC,CAAC;AAEnF,mEAAmE;AACnE,eAAO,MAAM,8BAA8B,EAAE,mBAA6C,CAAC;AAE3F,+DAA+D;AAC/D,eAAO,MAAM,oBAAoB,EAAE,mBAAmC,CAAC;AAEvE,+CAA+C;AAC/C,eAAO,MAAM,oBAAoB,EAAE,mBAAmC,CAAC;AAEvE,6EAA6E;AAC7E,eAAO,MAAM,kBAAkB,EAAE,mBAAiC,CAAC;AAEnE,yDAAyD;AACzD,eAAO,MAAM,oBAAoB,EAAE,mBAAmC,CAAC;AAEvE,4DAA4D;AAC5D,eAAO,MAAM,yBAAyB,EAAE,mBAAwC,CAAC;AAEjF,sEAAsE;AACtE,eAAO,MAAM,kBAAkB,EAAE,mBAAiC,CAAC;AAEnE;;;;;GAKG;AACH,eAAO,MAAM,yBAAyB,EAAE,mBAAwC,CAAC;AAIjF;;;;GAIG;AACH,eAAO,MAAM,0BAA0B,EAAE,SAAS,mBAAmB,EAanE,CAAC;AAEH;;;;;GAKG;AACH,wBAAgB,qBAAqB,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,mBAAmB,CAIlF"}
1
+ {"version":3,"file":"artifact-type.d.ts","sourceRoot":"","sources":["../src/artifact-type.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8BG;AAEH;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2DG;AACH,MAAM,MAAM,mBAAmB,GAC3B,gBAAgB,GAChB,eAAe,GACf,WAAW,GACX,mBAAmB,GACnB,uBAAuB,GACvB,aAAa,GACb,aAAa,GACb,WAAW,GACX,aAAa,GACb,kBAAkB,GAClB,WAAW,GACX,kBAAkB,GAClB,aAAa,CAAC;AAUlB,0DAA0D;AAC1D,eAAO,MAAM,uBAAuB,EAAE,mBAAsC,CAAC;AAE7E,6DAA6D;AAC7D,eAAO,MAAM,sBAAsB,EAAE,mBAAqC,CAAC;AAE3E,+CAA+C;AAC/C,eAAO,MAAM,kBAAkB,EAAE,mBAAiC,CAAC;AAEnE,wDAAwD;AACxD,eAAO,MAAM,0BAA0B,EAAE,mBAAyC,CAAC;AAEnF,mEAAmE;AACnE,eAAO,MAAM,8BAA8B,EAAE,mBAA6C,CAAC;AAE3F,+DAA+D;AAC/D,eAAO,MAAM,oBAAoB,EAAE,mBAAmC,CAAC;AAEvE,+CAA+C;AAC/C,eAAO,MAAM,oBAAoB,EAAE,mBAAmC,CAAC;AAEvE,6EAA6E;AAC7E,eAAO,MAAM,kBAAkB,EAAE,mBAAiC,CAAC;AAEnE,yDAAyD;AACzD,eAAO,MAAM,oBAAoB,EAAE,mBAAmC,CAAC;AAEvE,4DAA4D;AAC5D,eAAO,MAAM,yBAAyB,EAAE,mBAAwC,CAAC;AAEjF,sEAAsE;AACtE,eAAO,MAAM,kBAAkB,EAAE,mBAAiC,CAAC;AAEnE;;;;;GAKG;AACH,eAAO,MAAM,yBAAyB,EAAE,mBAAwC,CAAC;AAEjF;;;;;;;GAOG;AACH,eAAO,MAAM,oBAAoB,EAAE,mBAAmC,CAAC;AAIvE;;;;GAIG;AACH,eAAO,MAAM,0BAA0B,EAAE,SAAS,mBAAmB,EAcnE,CAAC;AAEH;;;;;GAKG;AACH,wBAAgB,qBAAqB,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,mBAAmB,CAIlF"}
@@ -65,6 +65,15 @@ export const SYNC_PULL_ARTIFACT = "sync-pull";
65
65
  * byte-identical. See `spec/execution-ledger-v1.md`.
66
66
  */
67
67
  export const EXECUTION_LEDGER_ARTIFACT = "execution-ledger";
68
+ /**
69
+ * Per-fire artifact bytes for a scheduled goal — the content motebit
70
+ * produced when the goal cadence fired (or the user invoked
71
+ * `runNow`). First non-relay-state-export consumer of the registry:
72
+ * the motebit identity signs as producer, not the relay. Doctrine:
73
+ * `docs/doctrine/goal-results.md` §"The three categories" — the
74
+ * artifact category's cryptographic provenance envelope.
75
+ */
76
+ export const GOAL_RESULT_ARTIFACT = "goal-result";
68
77
  // === Iteration + type guard =================================================
69
78
  /**
70
79
  * Canonical iteration order, frozen. Consumers that need to iterate
@@ -84,6 +93,7 @@ export const ALL_CONTENT_ARTIFACT_TYPES = Object.freeze([
84
93
  "gradient-history",
85
94
  "sync-pull",
86
95
  "execution-ledger",
96
+ "goal-result",
87
97
  ]);
88
98
  /**
89
99
  * Type guard — narrows `unknown` to `ContentArtifactType`. Drift-gate-driven
@@ -1 +1 @@
1
- {"version":3,"file":"artifact-type.js","sourceRoot":"","sources":["../src/artifact-type.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8BG;AA2DH,+EAA+E;AAC/E,EAAE;AACF,yEAAyE;AACzE,0EAA0E;AAC1E,4EAA4E;AAC5E,6EAA6E;AAC7E,kBAAkB;AAElB,0DAA0D;AAC1D,MAAM,CAAC,MAAM,uBAAuB,GAAwB,gBAAgB,CAAC;AAE7E,6DAA6D;AAC7D,MAAM,CAAC,MAAM,sBAAsB,GAAwB,eAAe,CAAC;AAE3E,+CAA+C;AAC/C,MAAM,CAAC,MAAM,kBAAkB,GAAwB,WAAW,CAAC;AAEnE,wDAAwD;AACxD,MAAM,CAAC,MAAM,0BAA0B,GAAwB,mBAAmB,CAAC;AAEnF,mEAAmE;AACnE,MAAM,CAAC,MAAM,8BAA8B,GAAwB,uBAAuB,CAAC;AAE3F,+DAA+D;AAC/D,MAAM,CAAC,MAAM,oBAAoB,GAAwB,aAAa,CAAC;AAEvE,+CAA+C;AAC/C,MAAM,CAAC,MAAM,oBAAoB,GAAwB,aAAa,CAAC;AAEvE,6EAA6E;AAC7E,MAAM,CAAC,MAAM,kBAAkB,GAAwB,WAAW,CAAC;AAEnE,yDAAyD;AACzD,MAAM,CAAC,MAAM,oBAAoB,GAAwB,aAAa,CAAC;AAEvE,4DAA4D;AAC5D,MAAM,CAAC,MAAM,yBAAyB,GAAwB,kBAAkB,CAAC;AAEjF,sEAAsE;AACtE,MAAM,CAAC,MAAM,kBAAkB,GAAwB,WAAW,CAAC;AAEnE;;;;;GAKG;AACH,MAAM,CAAC,MAAM,yBAAyB,GAAwB,kBAAkB,CAAC;AAEjF,+EAA+E;AAE/E;;;;GAIG;AACH,MAAM,CAAC,MAAM,0BAA0B,GAAmC,MAAM,CAAC,MAAM,CAAC;IACtF,gBAAgB;IAChB,eAAe;IACf,WAAW;IACX,mBAAmB;IACnB,uBAAuB;IACvB,aAAa;IACb,aAAa;IACb,WAAW;IACX,aAAa;IACb,kBAAkB;IAClB,WAAW;IACX,kBAAkB;CACnB,CAAC,CAAC;AAEH;;;;;GAKG;AACH,MAAM,UAAU,qBAAqB,CAAC,KAAc;IAClD,OAAO,CACL,OAAO,KAAK,KAAK,QAAQ,IAAK,0BAAgD,CAAC,QAAQ,CAAC,KAAK,CAAC,CAC/F,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"artifact-type.js","sourceRoot":"","sources":["../src/artifact-type.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8BG;AA6EH,+EAA+E;AAC/E,EAAE;AACF,yEAAyE;AACzE,0EAA0E;AAC1E,4EAA4E;AAC5E,6EAA6E;AAC7E,kBAAkB;AAElB,0DAA0D;AAC1D,MAAM,CAAC,MAAM,uBAAuB,GAAwB,gBAAgB,CAAC;AAE7E,6DAA6D;AAC7D,MAAM,CAAC,MAAM,sBAAsB,GAAwB,eAAe,CAAC;AAE3E,+CAA+C;AAC/C,MAAM,CAAC,MAAM,kBAAkB,GAAwB,WAAW,CAAC;AAEnE,wDAAwD;AACxD,MAAM,CAAC,MAAM,0BAA0B,GAAwB,mBAAmB,CAAC;AAEnF,mEAAmE;AACnE,MAAM,CAAC,MAAM,8BAA8B,GAAwB,uBAAuB,CAAC;AAE3F,+DAA+D;AAC/D,MAAM,CAAC,MAAM,oBAAoB,GAAwB,aAAa,CAAC;AAEvE,+CAA+C;AAC/C,MAAM,CAAC,MAAM,oBAAoB,GAAwB,aAAa,CAAC;AAEvE,6EAA6E;AAC7E,MAAM,CAAC,MAAM,kBAAkB,GAAwB,WAAW,CAAC;AAEnE,yDAAyD;AACzD,MAAM,CAAC,MAAM,oBAAoB,GAAwB,aAAa,CAAC;AAEvE,4DAA4D;AAC5D,MAAM,CAAC,MAAM,yBAAyB,GAAwB,kBAAkB,CAAC;AAEjF,sEAAsE;AACtE,MAAM,CAAC,MAAM,kBAAkB,GAAwB,WAAW,CAAC;AAEnE;;;;;GAKG;AACH,MAAM,CAAC,MAAM,yBAAyB,GAAwB,kBAAkB,CAAC;AAEjF;;;;;;;GAOG;AACH,MAAM,CAAC,MAAM,oBAAoB,GAAwB,aAAa,CAAC;AAEvE,+EAA+E;AAE/E;;;;GAIG;AACH,MAAM,CAAC,MAAM,0BAA0B,GAAmC,MAAM,CAAC,MAAM,CAAC;IACtF,gBAAgB;IAChB,eAAe;IACf,WAAW;IACX,mBAAmB;IACnB,uBAAuB;IACvB,aAAa;IACb,aAAa;IACb,WAAW;IACX,aAAa;IACb,kBAAkB;IAClB,WAAW;IACX,kBAAkB;IAClB,aAAa;CACd,CAAC,CAAC;AAEH;;;;;GAKG;AACH,MAAM,UAAU,qBAAqB,CAAC,KAAc;IAClD,OAAO,CACL,OAAO,KAAK,KAAK,QAAQ,IAAK,0BAAgD,CAAC,QAAQ,CAAC,KAAK,CAAC,CAC/F,CAAC;AACJ,CAAC"}
@@ -0,0 +1,62 @@
1
+ /**
2
+ * `EventType` canonical-registry tooling.
3
+ *
4
+ * The `EventType` enum (in `./index.ts`) is the closed vocabulary of
5
+ * event-log entry discriminators that flow through every motebit's
6
+ * append-only event substrate. Every `EventLogEntry` carries an
7
+ * `event_type` field; sync peers, federation participants, audit
8
+ * verifiers, and consolidation cycles dispatch on it. Cross-
9
+ * implementation drift would break interop — a motebit emitting an
10
+ * unknown event_type to a peer would surface as a silent
11
+ * type-narrowing failure on the receiving side.
12
+ *
13
+ * Promoted to a registered registry per
14
+ * `docs/doctrine/registry-pattern-canonical.md` on 2026-05-14 — the
15
+ * sixth instance after `SuiteId`, `TokenAudience`,
16
+ * `ContentArtifactType`, `TaskShape`, and `SensitivityLevel`. The
17
+ * arc validates the meta-gate's claim that adding a sixth registry
18
+ * is template growth, not new design.
19
+ *
20
+ * Same shape as `audience.ts`, `artifact-type.ts`, `routing.ts`'s
21
+ * `ALL_TASK_SHAPES`/`isTaskShape` pair, and `sensitivity.ts`'s
22
+ * `ALL_SENSITIVITY_LEVELS`/`isSensitivityLevel` pair.
23
+ *
24
+ * Pure deterministic data + type guard. Permissive-floor primitive
25
+ * per `packages/protocol/CLAUDE.md` rule 1 (closed-registry tooling
26
+ * is structural, not policy).
27
+ */
28
+ import type { EventType } from "./index.js";
29
+ /**
30
+ * Canonical iteration order over `EventType`, frozen. The single
31
+ * source of truth for "every event type" — drift gates, exhaustive
32
+ * switches, sync filters, and the protocol's registry-coverage gate
33
+ * (`check-event-type-canonical`) all enumerate through this array.
34
+ *
35
+ * Ordered in declaration order from the enum in `index.ts`. The
36
+ * gate's sibling-alignment block verifies the array mirrors the
37
+ * enum exactly — a registry append in the enum without a
38
+ * corresponding array append fails CI.
39
+ *
40
+ * Same shape as `ALL_SUITE_IDS`, `ALL_TOKEN_AUDIENCES`,
41
+ * `ALL_CONTENT_ARTIFACT_TYPES`, `ALL_TASK_SHAPES`,
42
+ * `ALL_SENSITIVITY_LEVELS`. Adding an event type is intentional
43
+ * protocol-level work: new enum entry + new entry here + gate
44
+ * reference update + spec/event-log entry if wire-format-relevant.
45
+ *
46
+ * Values are the enum's string literals (not enum members) to avoid
47
+ * the init-order cycle the file's `import type` already documents.
48
+ */
49
+ export declare const ALL_EVENT_TYPES: readonly EventType[];
50
+ /**
51
+ * Type guard — narrows `unknown` to `EventType`. Drift-gate-driven
52
+ * literal scanners use this to validate values pulled from
53
+ * wire-format payloads; consumers that derive event types from
54
+ * external sources (sync intake, federation peer payloads) call
55
+ * this before dispatching so an unchecked cast is a fail-open path
56
+ * the type system can't catch.
57
+ *
58
+ * Same shape as `isSuiteId`, `isTokenAudience`,
59
+ * `isContentArtifactType`, `isTaskShape`, `isSensitivityLevel`.
60
+ */
61
+ export declare function isEventType(value: unknown): value is EventType;
62
+ //# sourceMappingURL=event-type.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"event-type.d.ts","sourceRoot":"","sources":["../src/event-type.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AAOH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAE5C;;;;;;;;;;;;;;;;;;;GAmBG;AACH,eAAO,MAAM,eAAe,EAAE,SAAS,SAAS,EA4D/B,CAAC;AAElB;;;;;;;;;;GAUG;AACH,wBAAgB,WAAW,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,SAAS,CAE9D"}
@@ -0,0 +1,123 @@
1
+ /**
2
+ * `EventType` canonical-registry tooling.
3
+ *
4
+ * The `EventType` enum (in `./index.ts`) is the closed vocabulary of
5
+ * event-log entry discriminators that flow through every motebit's
6
+ * append-only event substrate. Every `EventLogEntry` carries an
7
+ * `event_type` field; sync peers, federation participants, audit
8
+ * verifiers, and consolidation cycles dispatch on it. Cross-
9
+ * implementation drift would break interop — a motebit emitting an
10
+ * unknown event_type to a peer would surface as a silent
11
+ * type-narrowing failure on the receiving side.
12
+ *
13
+ * Promoted to a registered registry per
14
+ * `docs/doctrine/registry-pattern-canonical.md` on 2026-05-14 — the
15
+ * sixth instance after `SuiteId`, `TokenAudience`,
16
+ * `ContentArtifactType`, `TaskShape`, and `SensitivityLevel`. The
17
+ * arc validates the meta-gate's claim that adding a sixth registry
18
+ * is template growth, not new design.
19
+ *
20
+ * Same shape as `audience.ts`, `artifact-type.ts`, `routing.ts`'s
21
+ * `ALL_TASK_SHAPES`/`isTaskShape` pair, and `sensitivity.ts`'s
22
+ * `ALL_SENSITIVITY_LEVELS`/`isSensitivityLevel` pair.
23
+ *
24
+ * Pure deterministic data + type guard. Permissive-floor primitive
25
+ * per `packages/protocol/CLAUDE.md` rule 1 (closed-registry tooling
26
+ * is structural, not policy).
27
+ */
28
+ /**
29
+ * Canonical iteration order over `EventType`, frozen. The single
30
+ * source of truth for "every event type" — drift gates, exhaustive
31
+ * switches, sync filters, and the protocol's registry-coverage gate
32
+ * (`check-event-type-canonical`) all enumerate through this array.
33
+ *
34
+ * Ordered in declaration order from the enum in `index.ts`. The
35
+ * gate's sibling-alignment block verifies the array mirrors the
36
+ * enum exactly — a registry append in the enum without a
37
+ * corresponding array append fails CI.
38
+ *
39
+ * Same shape as `ALL_SUITE_IDS`, `ALL_TOKEN_AUDIENCES`,
40
+ * `ALL_CONTENT_ARTIFACT_TYPES`, `ALL_TASK_SHAPES`,
41
+ * `ALL_SENSITIVITY_LEVELS`. Adding an event type is intentional
42
+ * protocol-level work: new enum entry + new entry here + gate
43
+ * reference update + spec/event-log entry if wire-format-relevant.
44
+ *
45
+ * Values are the enum's string literals (not enum members) to avoid
46
+ * the init-order cycle the file's `import type` already documents.
47
+ */
48
+ export const ALL_EVENT_TYPES = Object.freeze([
49
+ "identity_created",
50
+ "state_updated",
51
+ "memory_formed",
52
+ "memory_decayed",
53
+ "memory_deleted",
54
+ "memory_accessed",
55
+ "provider_swapped",
56
+ "export_requested",
57
+ "delete_requested",
58
+ "sync_completed",
59
+ "audit_entry",
60
+ "tool_used",
61
+ "policy_violation",
62
+ "goal_created",
63
+ "goal_executed",
64
+ "goal_removed",
65
+ "approval_requested",
66
+ "approval_approved",
67
+ "approval_denied",
68
+ "approval_expired",
69
+ "goal_completed",
70
+ "goal_progress",
71
+ "memory_audit",
72
+ "memory_pinned",
73
+ "plan_created",
74
+ "plan_step_started",
75
+ "plan_step_completed",
76
+ "plan_step_failed",
77
+ "plan_completed",
78
+ "plan_step_delegated",
79
+ "credential_revoked",
80
+ "identity_revoked",
81
+ "plan_failed",
82
+ "housekeeping_run",
83
+ "reflection_completed",
84
+ "idle_tick_fired",
85
+ "memory_consolidated",
86
+ "memory_promoted",
87
+ "consolidation_cycle_run",
88
+ "consolidation_receipt_signed",
89
+ "consolidation_receipts_anchored",
90
+ "agent_task_completed",
91
+ "agent_task_failed",
92
+ "agent_task_denied",
93
+ "proposal_created",
94
+ "proposal_accepted",
95
+ "proposal_rejected",
96
+ "proposal_countered",
97
+ "collaborative_step_completed",
98
+ "chain_trust_computed",
99
+ "trust_level_changed",
100
+ "key_rotated",
101
+ "computer_session_opened",
102
+ "computer_session_closed",
103
+ "computer_session_summarized",
104
+ "co_browse_control_changed",
105
+ "user_input_forwarded",
106
+ "skill_loaded",
107
+ "sensitivity_gate_fired",
108
+ ]);
109
+ /**
110
+ * Type guard — narrows `unknown` to `EventType`. Drift-gate-driven
111
+ * literal scanners use this to validate values pulled from
112
+ * wire-format payloads; consumers that derive event types from
113
+ * external sources (sync intake, federation peer payloads) call
114
+ * this before dispatching so an unchecked cast is a fail-open path
115
+ * the type system can't catch.
116
+ *
117
+ * Same shape as `isSuiteId`, `isTokenAudience`,
118
+ * `isContentArtifactType`, `isTaskShape`, `isSensitivityLevel`.
119
+ */
120
+ export function isEventType(value) {
121
+ return typeof value === "string" && ALL_EVENT_TYPES.includes(value);
122
+ }
123
+ //# sourceMappingURL=event-type.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"event-type.js","sourceRoot":"","sources":["../src/event-type.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AASH;;;;;;;;;;;;;;;;;;;GAmBG;AACH,MAAM,CAAC,MAAM,eAAe,GAAyB,MAAM,CAAC,MAAM,CAAC;IACjE,kBAAkB;IAClB,eAAe;IACf,eAAe;IACf,gBAAgB;IAChB,gBAAgB;IAChB,iBAAiB;IACjB,kBAAkB;IAClB,kBAAkB;IAClB,kBAAkB;IAClB,gBAAgB;IAChB,aAAa;IACb,WAAW;IACX,kBAAkB;IAClB,cAAc;IACd,eAAe;IACf,cAAc;IACd,oBAAoB;IACpB,mBAAmB;IACnB,iBAAiB;IACjB,kBAAkB;IAClB,gBAAgB;IAChB,eAAe;IACf,cAAc;IACd,eAAe;IACf,cAAc;IACd,mBAAmB;IACnB,qBAAqB;IACrB,kBAAkB;IAClB,gBAAgB;IAChB,qBAAqB;IACrB,oBAAoB;IACpB,kBAAkB;IAClB,aAAa;IACb,kBAAkB;IAClB,sBAAsB;IACtB,iBAAiB;IACjB,qBAAqB;IACrB,iBAAiB;IACjB,yBAAyB;IACzB,8BAA8B;IAC9B,iCAAiC;IACjC,sBAAsB;IACtB,mBAAmB;IACnB,mBAAmB;IACnB,kBAAkB;IAClB,mBAAmB;IACnB,mBAAmB;IACnB,oBAAoB;IACpB,8BAA8B;IAC9B,sBAAsB;IACtB,qBAAqB;IACrB,aAAa;IACb,yBAAyB;IACzB,yBAAyB;IACzB,6BAA6B;IAC7B,2BAA2B;IAC3B,sBAAsB;IACtB,cAAc;IACd,wBAAwB;CACV,CAAC,CAAC;AAElB;;;;;;;;;;GAUG;AACH,MAAM,UAAU,WAAW,CAAC,KAAc;IACxC,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAK,eAAqC,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;AAC7F,CAAC"}
package/dist/index.d.ts CHANGED
@@ -1389,6 +1389,22 @@ export interface SettlementRecord {
1389
1389
  platform_fee: number;
1390
1390
  /** Fee rate applied (e.g. 0.05 = 5%). Recorded per-settlement for auditability. */
1391
1391
  platform_fee_rate: number;
1392
+ /**
1393
+ * How the money moved for this settlement: `relay` (relay holds custody;
1394
+ * virtual-account credit/debit on the relay's books) or `p2p` (peer-to-
1395
+ * peer onchain transfer; relay records the audit but never held the
1396
+ * funds). Closed registry — see `SettlementMode` in `./settlement-mode.ts`.
1397
+ *
1398
+ * Carried in the signed body so the lane is part of the relay's
1399
+ * attestation, not a derivable side-fact. Auditors and counsel reading
1400
+ * the receipt see the custody posture directly; the relay cannot
1401
+ * silently re-label a custodied settlement as p2p after the fact.
1402
+ *
1403
+ * Treasury reconciliation (operator fee accrual vs. onchain balance)
1404
+ * is structurally NOT a settlement and never appears here — see
1405
+ * `docs/doctrine/settlement-rails.md` § "Lanes for external readers".
1406
+ */
1407
+ settlement_mode: SettlementMode;
1392
1408
  /** x402 payment transaction hash (when paid on-chain). */
1393
1409
  x402_tx_hash?: string;
1394
1410
  /** x402 network used for payment (CAIP-2 identifier). */
@@ -1493,6 +1509,26 @@ export interface GuestRail extends SettlementRail {
1493
1509
  readonly railType: "fiat" | "protocol" | "orchestration";
1494
1510
  /** Whether this rail supports proactive deposits. False for pay-per-request rails (x402, MPP). */
1495
1511
  readonly supportsDeposit: boolean;
1512
+ /**
1513
+ * Whether this rail supports user-facing withdrawal — i.e., the relay
1514
+ * may invoke `rail.withdraw(...)` to transmit user funds to an
1515
+ * external destination on the user's behalf. When `false`, the rail
1516
+ * is registered for other purposes (treasury orchestration, deposit
1517
+ * intake, anchor submission) but NEVER appears in the user-withdrawal
1518
+ * dispatch path.
1519
+ *
1520
+ * `BridgeSettlementRail.supportsWithdraw = false` is the structural
1521
+ * embodiment of the off-ramp doctrine: Motebit is not a transmitter
1522
+ * of user funds. Bridge stays registered for own-account treasury
1523
+ * conversion via `BridgeOfframpAdapter`, but the rail itself cannot
1524
+ * be a withdrawal target — `withdraw()` is structurally absent from
1525
+ * the type (it lives on `WithdrawableGuestRail`, not on the base).
1526
+ *
1527
+ * Mirrors `supportsDeposit` + `DepositableGuestRail` and `supportsBatch`
1528
+ * + `BatchableGuestRail` as a discriminant narrowing to
1529
+ * `WithdrawableGuestRail`.
1530
+ */
1531
+ readonly supportsWithdraw: boolean;
1496
1532
  /**
1497
1533
  * Whether the rail exposes a single-call batch withdrawal primitive.
1498
1534
  * When true, `withdrawBatch` MUST be implemented. When false (the
@@ -1501,21 +1537,11 @@ export interface GuestRail extends SettlementRail {
1501
1537
  * defers sub-threshold items and fires serially once the policy
1502
1538
  * clears — but the rail itself settles one item per call.
1503
1539
  * Mirrors `supportsDeposit` + `DepositableGuestRail` as a
1504
- * discriminant narrowing to `BatchableGuestRail`.
1540
+ * discriminant narrowing to `BatchableGuestRail`. Implies
1541
+ * `supportsWithdraw: true` — batch is a specialization of single
1542
+ * withdraw.
1505
1543
  */
1506
1544
  readonly supportsBatch: boolean;
1507
- /**
1508
- * Execute a withdrawal to an external destination.
1509
- * Fail-closed: throws on any error.
1510
- */
1511
- withdraw(motebitId: string, amount: number, currency: string, destination: string, idempotencyKey: string): Promise<WithdrawalResult>;
1512
- /**
1513
- * Submit multiple withdrawals in one rail call when the rail
1514
- * supports a native batch primitive (e.g., a future x402 multi-
1515
- * authorization, a Bridge bulk-transfer). Present only when
1516
- * `supportsBatch` is true — narrow with `isBatchableRail`.
1517
- */
1518
- withdrawBatch?(items: readonly BatchWithdrawalItem[]): Promise<BatchWithdrawalResult>;
1519
1545
  /**
1520
1546
  * Record a payment proof with a settlement (e.g., x402 tx hash, Stripe charge ID).
1521
1547
  * Called after settleOnReceipt() computes the settlement record.
@@ -1550,11 +1576,46 @@ export interface BatchWithdrawalResult {
1550
1576
  reason: string;
1551
1577
  }>;
1552
1578
  }
1579
+ /**
1580
+ * A guest rail that supports user-facing withdrawal — the relay may
1581
+ * invoke `withdraw()` to transmit user funds to an external destination.
1582
+ *
1583
+ * Use the `supportsWithdraw` discriminant for runtime narrowing from
1584
+ * `GuestRail`. The marker exists so `BridgeSettlementRail` (orchestration,
1585
+ * treasury-only) is structurally distinct from `StripeSettlementRail`
1586
+ * (fiat, user-facing) and `X402SettlementRail` (protocol, user-facing).
1587
+ *
1588
+ * The doctrinal frame: Motebit is not a transmitter of user funds. User-
1589
+ * facing withdrawal is permitted only to user-held wallets (the sovereign
1590
+ * Solana path via `OperatorSolanaTransfer` on the operator side, or to
1591
+ * a user-held EVM wallet via x402 on a `WithdrawableGuestRail`). Bridge
1592
+ * is excluded structurally — the method does not exist on its type, so
1593
+ * the relay cannot orchestrate user-facing transfers through Bridge no
1594
+ * matter what env vars are set. The doctrine is enforced by absence.
1595
+ */
1596
+ export interface WithdrawableGuestRail extends GuestRail {
1597
+ readonly supportsWithdraw: true;
1598
+ /**
1599
+ * Execute a withdrawal to an external destination.
1600
+ * Fail-closed: throws on any error.
1601
+ */
1602
+ withdraw(motebitId: string, amount: number, currency: string, destination: string, idempotencyKey: string): Promise<WithdrawalResult>;
1603
+ /**
1604
+ * Submit multiple withdrawals in one rail call when the rail
1605
+ * supports a native batch primitive (e.g., a future x402 multi-
1606
+ * authorization). Present only when `supportsBatch` is true — narrow
1607
+ * with `isBatchableRail`. A rail can be withdrawable without being
1608
+ * batchable, but the reverse is forbidden by the type hierarchy:
1609
+ * `BatchableGuestRail extends WithdrawableGuestRail`.
1610
+ */
1611
+ withdrawBatch?(items: readonly BatchWithdrawalItem[]): Promise<BatchWithdrawalResult>;
1612
+ }
1553
1613
  /**
1554
1614
  * A guest rail that supports batch withdrawal submission.
1555
1615
  * Use the `supportsBatch` discriminant for runtime narrowing from `GuestRail`.
1616
+ * Batchable implies withdrawable — batch is a specialization of single withdraw.
1556
1617
  */
1557
- export interface BatchableGuestRail extends GuestRail {
1618
+ export interface BatchableGuestRail extends WithdrawableGuestRail {
1558
1619
  readonly supportsBatch: true;
1559
1620
  withdrawBatch(items: readonly BatchWithdrawalItem[]): Promise<BatchWithdrawalResult>;
1560
1621
  }
@@ -1574,6 +1635,19 @@ export interface DepositableGuestRail extends GuestRail {
1574
1635
  }
1575
1636
  /** Type guard: narrows GuestRail to DepositableGuestRail. */
1576
1637
  export declare function isDepositableRail(rail: GuestRail): rail is DepositableGuestRail;
1638
+ /**
1639
+ * Type guard: narrows GuestRail to WithdrawableGuestRail.
1640
+ *
1641
+ * The relay's user-withdrawal dispatch (services/relay/src/budget.ts)
1642
+ * MUST narrow through this guard before calling `rail.withdraw(...)`.
1643
+ * Compile-time enforcement: `withdraw` does not exist on bare `GuestRail`,
1644
+ * so an un-narrowed call site fails to typecheck. Runtime defense-in-
1645
+ * depth: a rail with `supportsWithdraw: true` AND a non-function
1646
+ * `withdraw` property would shape-match the interface but fail this
1647
+ * guard, surfacing as "this rail does not support withdrawal" rather
1648
+ * than a `TypeError: rail.withdraw is not a function` at the dispatch.
1649
+ */
1650
+ export declare function isWithdrawableRail(rail: GuestRail): rail is WithdrawableGuestRail;
1577
1651
  /** Type guard: narrows GuestRail to BatchableGuestRail. */
1578
1652
  export declare function isBatchableRail(rail: GuestRail): rail is BatchableGuestRail;
1579
1653
  /**
@@ -1598,8 +1672,13 @@ export interface SovereignRail extends SettlementRail {
1598
1672
  readonly custody: "agent";
1599
1673
  /** Chain identifier (e.g., "solana"). Future: "aptos", "sui". */
1600
1674
  readonly chain: string;
1601
- /** Asset symbol (e.g., "USDC"). */
1602
- readonly asset: string;
1675
+ /**
1676
+ * Settlement asset this rail clears in. Closed union — see
1677
+ * `SettlementAsset` in `./settlement-asset.ts`. Sub-phase A: USDC
1678
+ * only at land; second-asset promotion lifts the registry to the
1679
+ * 8th registered registry per `registry-pattern-canonical.md`.
1680
+ */
1681
+ readonly asset: SettlementAsset;
1603
1682
  /** Agent's own address on this chain. Equals the motebit identity public key for Ed25519-native chains. */
1604
1683
  readonly address: string;
1605
1684
  /** Current balance in micro-units (1e6 = 1 unit of asset). */
@@ -2063,7 +2142,10 @@ export type { AgentSettlementAnchorBatch, AgentSettlementChainAnchor, AgentSettl
2063
2142
  export type { RelayMetadata, RelayMetadataPeer, AgentResolutionResult } from "./discovery.js";
2064
2143
  export type { MigrationState, MigrationRequest, MigrationToken, DepartureAttestation, CredentialBundle, BalanceWaiver, MigrationPresentation, } from "./migration.js";
2065
2144
  export type { DisputeState, DisputeOutcome, DisputeCategory, DisputeFundAction, DisputeRequest, DisputeEvidence, DisputeEvidenceType, AdjudicatorVote, VoteRequest, DisputeResolution, DisputeAppeal, WitnessOmissionDispute, WitnessOmissionEvidence, WitnessOmissionInclusionProofEvidence, WitnessOmissionAlternativePeeringEvidence, } from "./dispute.js";
2066
- export type { SettlementMode, P2pPaymentProof, PaymentVerificationStatus, SettlementEligibility, SolvencyProof, } from "./settlement-mode.js";
2145
+ export type { SettlementMode, WritableSettlementMode, P2pPaymentProof, PaymentVerificationStatus, SettlementEligibility, SolvencyProof, } from "./settlement-mode.js";
2146
+ export { ALL_SETTLEMENT_MODES, isSettlementMode } from "./settlement-mode.js";
2147
+ export type { SettlementAsset } from "./settlement-asset.js";
2148
+ export { ALL_SETTLEMENT_ASSETS, isSettlementAsset } from "./settlement-asset.js";
2067
2149
  export type { SuiteId, SuiteEntry, SuiteStatus, SuiteAlgorithm, SuiteCanonicalization, SuiteSignatureEncoding, SuitePublicKeyEncoding, } from "./crypto-suite.js";
2068
2150
  export { SUITE_REGISTRY, ALL_SUITE_IDS, isSuiteId, getSuiteEntry } from "./crypto-suite.js";
2069
2151
  export { MAX_RETENTION_DAYS_BY_SENSITIVITY, REFERENCE_RETENTION_DAYS_BY_SENSITIVITY, RUNTIME_RETENTION_REGISTRY, EMPTY_FEDERATION_GRAPH_ANCHOR, } from "./retention-policy.js";
@@ -2079,15 +2161,21 @@ export type { ToolMode } from "./tool-mode.js";
2079
2161
  export { TOOL_MODES, toolModePriority } from "./tool-mode.js";
2080
2162
  export type { DropPayloadKind, DropTarget, DropPayload, UserActionAttestation, SensitivityGateEntry, SensitivityElevationSource, SensitivityGateFiredPayload, } from "./perception.js";
2081
2163
  export { resolveDropTarget } from "./perception.js";
2082
- export { rankSensitivity, maxSensitivity, sensitivityPermits } from "./sensitivity.js";
2164
+ export { rankSensitivity, maxSensitivity, sensitivityPermits, ALL_SENSITIVITY_LEVELS, isSensitivityLevel, } from "./sensitivity.js";
2165
+ export type { SensitivityCleared } from "./sensitivity.js";
2166
+ export { ALL_EVENT_TYPES, isEventType } from "./event-type.js";
2083
2167
  export { MICRO, CENTS, toMicro, fromMicro, toCents, fromCents } from "./money.js";
2168
+ export type { InferenceHost, ModelLab, Jurisdiction, TaskShape, ProviderCapability, RoutingConstraint, RoutingDecision, } from "./routing.js";
2169
+ export { ALL_TASK_SHAPES, isTaskShape, QUICK_TASK_SHAPE, CHAT_TASK_SHAPE, REASONING_TASK_SHAPE, CODE_TASK_SHAPE, RESEARCH_TASK_SHAPE, CREATIVE_TASK_SHAPE, MATH_TASK_SHAPE, } from "./routing.js";
2084
2170
  export type { TokenAudience } from "./audience.js";
2085
2171
  export { ALL_TOKEN_AUDIENCES, isTokenAudience, SYNC_AUDIENCE, DEVICE_AUTH_AUDIENCE, PAIR_AUDIENCE, ROTATE_KEY_AUDIENCE, PUSH_REGISTER_AUDIENCE, TASK_SUBMIT_AUDIENCE, ADMIN_QUERY_AUDIENCE, PROPOSAL_AUDIENCE, ACCOUNT_BALANCE_AUDIENCE, ACCOUNT_DEPOSIT_AUDIENCE, ACCOUNT_WITHDRAW_AUDIENCE, ACCOUNT_WITHDRAWALS_AUDIENCE, ACCOUNT_CHECKOUT_AUDIENCE, BROWSER_SANDBOX_GRANT_AUDIENCE, BROWSER_SANDBOX_AUDIENCE, } from "./audience.js";
2086
2172
  export type { ContentArtifactType } from "./artifact-type.js";
2087
- export { ALL_CONTENT_ARTIFACT_TYPES, isContentArtifactType, STATE_SNAPSHOT_ARTIFACT, MEMORY_EXPORT_ARTIFACT, GOAL_LIST_ARTIFACT, CONVERSATION_LIST_ARTIFACT, CONVERSATION_MESSAGES_ARTIFACT, DEVICE_LIST_ARTIFACT, AUDIT_TRAIL_ARTIFACT, PLAN_LIST_ARTIFACT, PLAN_DETAIL_ARTIFACT, GRADIENT_HISTORY_ARTIFACT, SYNC_PULL_ARTIFACT, EXECUTION_LEDGER_ARTIFACT, } from "./artifact-type.js";
2173
+ export { ALL_CONTENT_ARTIFACT_TYPES, isContentArtifactType, STATE_SNAPSHOT_ARTIFACT, MEMORY_EXPORT_ARTIFACT, GOAL_LIST_ARTIFACT, CONVERSATION_LIST_ARTIFACT, CONVERSATION_MESSAGES_ARTIFACT, DEVICE_LIST_ARTIFACT, AUDIT_TRAIL_ARTIFACT, PLAN_LIST_ARTIFACT, PLAN_DETAIL_ARTIFACT, GRADIENT_HISTORY_ARTIFACT, SYNC_PULL_ARTIFACT, EXECUTION_LEDGER_ARTIFACT, GOAL_RESULT_ARTIFACT, } from "./artifact-type.js";
2088
2174
  export type { SignedTransparencyDeclaration, TransparencySignedPayload, TransparencyAnchorRecord, } from "./transparency.js";
2089
2175
  export { TRANSPARENCY_SUITE, TRANSPARENCY_ANCHOR_MEMO_PREFIX, TRANSPARENCY_SPEC_ID, isSignedTransparencyDeclaration, } from "./transparency.js";
2090
2176
  import type { ToolMode } from "./tool-mode.js";
2177
+ import type { SettlementMode } from "./settlement-mode.js";
2178
+ import type { SettlementAsset } from "./settlement-asset.js";
2091
2179
  export type { SkillSensitivity, SkillPlatform, SkillHardwareAttestationGate, SkillSignature, SkillManifestMetadata, SkillManifestMotebit, SkillManifest, SkillEnvelopeFile, SkillEnvelopeSkillRef, SkillEnvelope, SkillLoadPayload, } from "./skills.js";
2092
2180
  export { SKILL_SENSITIVITY_TIERS, SKILL_AUTO_LOADABLE_TIERS, SKILL_PLATFORMS } from "./skills.js";
2093
2181
  export type { SkillRegistryEntry, SkillRegistrySubmitRequest, SkillRegistrySubmitResponse, SkillRegistryListing, SkillRegistryBundle, } from "./skills.js";