@engramx/idl 0.16.0-rc.2 → 0.16.0-rc.21
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/engram.did +927 -350
- package/dist/engram.idl.d.ts +850 -345
- package/dist/engram.idl.js +481 -258
- package/dist/market.did +112 -35
- package/dist/market.idl.d.ts +103 -35
- package/dist/market.idl.js +57 -37
- package/dist/registry.did +426 -81
- package/dist/registry.idl.d.ts +401 -73
- package/dist/registry.idl.js +130 -49
- package/package.json +2 -2
package/dist/engram.idl.d.ts
CHANGED
|
@@ -7,15 +7,17 @@ export interface About {
|
|
|
7
7
|
guardianCount: bigint;
|
|
8
8
|
totalMemoryWrites: bigint;
|
|
9
9
|
lastAgentWriteAtNs: [] | [bigint];
|
|
10
|
-
distinctReaderPrincipals: bigint;
|
|
11
10
|
lastWriteAtNs: [] | [bigint];
|
|
12
11
|
totalBackupSize: bigint;
|
|
13
12
|
backupCount: bigint;
|
|
13
|
+
endedAgentCount: [] | [bigint];
|
|
14
14
|
lastAgentReadAtNs: [] | [bigint];
|
|
15
15
|
firstWriteAtNs: [] | [bigint];
|
|
16
16
|
agentCount: bigint;
|
|
17
|
+
activeAgentCount: [] | [bigint];
|
|
17
18
|
paidMemoryReadEnabled: boolean;
|
|
18
19
|
version: string;
|
|
20
|
+
timersPausedSinceDayNs: [] | [bigint];
|
|
19
21
|
paymentsFrozen: boolean;
|
|
20
22
|
agentMemoryWrites: bigint;
|
|
21
23
|
agentMemoryReads: bigint;
|
|
@@ -24,7 +26,6 @@ export interface About {
|
|
|
24
26
|
firstAgentWriteAtNs: [] | [bigint];
|
|
25
27
|
lastReadAtNs: [] | [bigint];
|
|
26
28
|
writesPaused: boolean;
|
|
27
|
-
distinctReaderClients: bigint;
|
|
28
29
|
totalMemoryReads: bigint;
|
|
29
30
|
walletActivatedAtNs: [] | [bigint];
|
|
30
31
|
encryptionEnabled: boolean;
|
|
@@ -56,6 +57,15 @@ export interface AgentEnding {
|
|
|
56
57
|
day: bigint;
|
|
57
58
|
reason: AgentEndReason;
|
|
58
59
|
}
|
|
60
|
+
export interface AgentGrant {
|
|
61
|
+
key: Principal;
|
|
62
|
+
permissions: AgentPermissions;
|
|
63
|
+
name: string;
|
|
64
|
+
paymentsStoppedBy: [] | [PaymentsStop];
|
|
65
|
+
paymentsFrozen: [] | [boolean];
|
|
66
|
+
paymentsNow: [] | [PaymentsNow];
|
|
67
|
+
paymentLimits: PaymentLimits;
|
|
68
|
+
}
|
|
59
69
|
export interface AgentPaymentSignatures {
|
|
60
70
|
agent: Principal;
|
|
61
71
|
signedToday: bigint;
|
|
@@ -86,6 +96,16 @@ export interface AgentRecord {
|
|
|
86
96
|
keyRotatedAtNs: bigint;
|
|
87
97
|
keyHeldFrom: LogPosition;
|
|
88
98
|
}
|
|
99
|
+
export interface AgentSpendRow {
|
|
100
|
+
agent: Principal;
|
|
101
|
+
spentToday: [] | [bigint];
|
|
102
|
+
root: Principal;
|
|
103
|
+
maxPerDay: [] | [bigint];
|
|
104
|
+
}
|
|
105
|
+
export interface AgentSpendToday {
|
|
106
|
+
dayStartNs: bigint;
|
|
107
|
+
agents: Page_23;
|
|
108
|
+
}
|
|
89
109
|
export type AgentStatus = { Active: null } | { Resigned: null } | { Revoked: null };
|
|
90
110
|
export interface AgentWriteReview {
|
|
91
111
|
cursor: bigint;
|
|
@@ -125,10 +145,15 @@ export interface AnchorPushStatus {
|
|
|
125
145
|
currentTotal: bigint;
|
|
126
146
|
timerTickAtNs: [] | [bigint];
|
|
127
147
|
okTotal: bigint;
|
|
148
|
+
checkInIntervalSeconds: [] | [bigint];
|
|
128
149
|
carrierArmedAtNs: bigint;
|
|
129
150
|
attemptAtNs: [] | [bigint];
|
|
130
151
|
skipCursor: bigint;
|
|
152
|
+
timersPauseReason: [] | [string];
|
|
131
153
|
lastError: string;
|
|
154
|
+
nextCheckInDueAtNs: [] | [bigint];
|
|
155
|
+
timersPausedAtNs: [] | [bigint];
|
|
156
|
+
nextAnchorAttemptAtNs: [] | [bigint];
|
|
132
157
|
}
|
|
133
158
|
export interface ApprovalRequest {
|
|
134
159
|
id: string;
|
|
@@ -177,6 +202,11 @@ export interface BackupMetadata {
|
|
|
177
202
|
chunkCount: bigint;
|
|
178
203
|
parentBackupId: [] | [string];
|
|
179
204
|
}
|
|
205
|
+
export interface BackupRetention {
|
|
206
|
+
maxBackups: bigint;
|
|
207
|
+
isDefault: boolean;
|
|
208
|
+
dbType: string;
|
|
209
|
+
}
|
|
180
210
|
export interface BackupRetentionReport {
|
|
181
211
|
maxBackups: bigint;
|
|
182
212
|
dbType: string;
|
|
@@ -201,6 +231,30 @@ export interface BearerToken {
|
|
|
201
231
|
issuedBy: Principal;
|
|
202
232
|
}
|
|
203
233
|
export type BearerTokenStatus = { Active: null } | { Revoked: null } | { Expired: null };
|
|
234
|
+
export interface BirthRecord {
|
|
235
|
+
bornAtNs: bigint;
|
|
236
|
+
parentFingerprint: [] | [Uint8Array | number[]];
|
|
237
|
+
child: Principal;
|
|
238
|
+
secret: Uint8Array | number[];
|
|
239
|
+
version: bigint;
|
|
240
|
+
number: bigint;
|
|
241
|
+
parent: [] | [Principal];
|
|
242
|
+
}
|
|
243
|
+
export interface BrakePull {
|
|
244
|
+
by: Principal;
|
|
245
|
+
atNs: bigint;
|
|
246
|
+
role: BrakeRole;
|
|
247
|
+
reason: [] | [string];
|
|
248
|
+
}
|
|
249
|
+
export type BrakeRole = { Guardian: null } | { Owner: null };
|
|
250
|
+
export interface BrakeState {
|
|
251
|
+
on: boolean;
|
|
252
|
+
pull: [] | [BrakePull];
|
|
253
|
+
}
|
|
254
|
+
export interface Brakes {
|
|
255
|
+
payments: BrakeState;
|
|
256
|
+
writes: BrakeState;
|
|
257
|
+
}
|
|
204
258
|
export interface CallerSignatureCount {
|
|
205
259
|
count: bigint;
|
|
206
260
|
role: Role;
|
|
@@ -216,7 +270,7 @@ export interface CertifiedAuditHead {
|
|
|
216
270
|
}
|
|
217
271
|
export interface CheckpointPage {
|
|
218
272
|
firstAvailableSeq: bigint;
|
|
219
|
-
page:
|
|
273
|
+
page: Page_18;
|
|
220
274
|
scannedThroughSeq: bigint;
|
|
221
275
|
}
|
|
222
276
|
export interface ChildAllowanceRow {
|
|
@@ -282,6 +336,11 @@ export interface Eip3009Authorization {
|
|
|
282
336
|
nonce: Uint8Array | number[];
|
|
283
337
|
validBefore: bigint;
|
|
284
338
|
}
|
|
339
|
+
export interface Eip712Destination {
|
|
340
|
+
activeFromNs: bigint;
|
|
341
|
+
value: string;
|
|
342
|
+
}
|
|
343
|
+
export type Eip712FieldRule = { mustEqual: string } | { atMost: { max: bigint; decimals: bigint } };
|
|
285
344
|
export interface Eip712Registration {
|
|
286
345
|
encodeTypeString: string;
|
|
287
346
|
cooloffEndsAtNs: bigint;
|
|
@@ -294,6 +353,25 @@ export interface Eip712SignatureOut {
|
|
|
294
353
|
rendered: string;
|
|
295
354
|
digest: Uint8Array | number[];
|
|
296
355
|
}
|
|
356
|
+
export interface Eip712TypeView {
|
|
357
|
+
primaryType: string;
|
|
358
|
+
encodeTypeString: string;
|
|
359
|
+
cooloffEndsAtNs: bigint;
|
|
360
|
+
domainName: string;
|
|
361
|
+
typeId: Uint8Array | number[];
|
|
362
|
+
verifyingContract: string;
|
|
363
|
+
dailySignCap: bigint;
|
|
364
|
+
fields: Array<[string, string]>;
|
|
365
|
+
domainSeparator: Uint8Array | number[];
|
|
366
|
+
destinationFields: Array<string>;
|
|
367
|
+
authorityClass: AuthorityClass;
|
|
368
|
+
typeHash: Uint8Array | number[];
|
|
369
|
+
registeredAtNs: bigint;
|
|
370
|
+
fieldRules: Array<[string, Eip712FieldRule]>;
|
|
371
|
+
chainId: bigint;
|
|
372
|
+
domainVersion: string;
|
|
373
|
+
ackIrrevocable: boolean;
|
|
374
|
+
}
|
|
297
375
|
export type Eip712Value =
|
|
298
376
|
| { string: string }
|
|
299
377
|
| { bool: boolean }
|
|
@@ -335,11 +413,18 @@ export interface Engram {
|
|
|
335
413
|
* / test/key-replacement.test.mo runs it; this body names no roster gate, because the caller holds
|
|
336
414
|
* / no role here until the move.
|
|
337
415
|
*/
|
|
338
|
-
acceptAgentKeyNomination: ActorMethod<[Principal],
|
|
416
|
+
acceptAgentKeyNomination: ActorMethod<[Principal], Result_83>;
|
|
339
417
|
/**
|
|
340
418
|
* / Consensus transform for the alert webhook outcall: collapse the response to status-only so
|
|
341
419
|
* / replicas agree regardless of response headers/body (we only care that the POST landed 2xx).
|
|
342
420
|
* /
|
|
421
|
+
* / ⟨CORRECTED 2026-10-21⟩ No longer a consensus transform: the alert outcall is non-replicated
|
|
422
|
+
* / (`is_replicated = ?false` in `scanAndPost`), so ONE node sends the POST and runs this on its
|
|
423
|
+
* / own response — there are no replicas to agree, and "on every replica" below now means "on that
|
|
424
|
+
* / node". It stays so the response is collapsed to status-only before the engram reads it. The
|
|
425
|
+
* / PUBLIC reasoning below is unchanged: the outcall protocol still calls it with no caller identity.
|
|
426
|
+
* / `worldIdTransform` is still a true consensus transform (World ID stays replicated).
|
|
427
|
+
* /
|
|
343
428
|
* / PUBLIC: not a choice. The management canister invokes a transform on every replica as part of
|
|
344
429
|
* / the HTTP-outcall protocol, and that invocation carries no caller identity to gate on — a gate
|
|
345
430
|
* / here would refuse the only caller there is and break every alert this canister sends. Safe
|
|
@@ -349,10 +434,35 @@ export interface Engram {
|
|
|
349
434
|
[{ context: Uint8Array | number[]; response: HttpRequestResult }],
|
|
350
435
|
HttpRequestResult
|
|
351
436
|
>;
|
|
437
|
+
/**
|
|
438
|
+
* / Owner-managed destination allowlist (D7). Additions LOOSEN and wait 24h; removals TIGHTEN
|
|
439
|
+
* / and apply instantly — the ratified asymmetry, applied to the one mutable policy surface.
|
|
440
|
+
* /
|
|
441
|
+
* / ⟨2026-10-14, the owner's ruling 4A⟩ ONE LIST PER REGISTERED ACTION. `addEvmWithdrawDestination`,
|
|
442
|
+
* / `removeEvmWithdrawDestination` and `listEvmWithdrawDestinations` — one list for every action —
|
|
443
|
+
* / are REMOVED; these three take the action's `typeId`. Same rules, per action: the owner only; an
|
|
444
|
+
* / addition activates after 24 hours and is refused while payments are frozen; a removal is instant
|
|
445
|
+
* / and works while frozen; a value is 1–128 characters (an address, or a venue value such as an
|
|
446
|
+
* / account name). The action must be registered: a destination list belongs to an action, and a
|
|
447
|
+
* / list for no action would be a value nothing checks. The caller is the owner's app.
|
|
448
|
+
*/
|
|
449
|
+
addEip712Destination: ActorMethod<[Uint8Array | number[], string], Result_82>;
|
|
352
450
|
/**
|
|
353
451
|
* / Register a typed-data shape as signable. Owner-only, freeze-gated (a registration is a grant
|
|
354
452
|
* / of FUTURE authority — a frozen engram must not be able to widen what it can sign), and the
|
|
355
453
|
* / shape is IMMUTABLE: any change mints a new typeId.
|
|
454
|
+
* /
|
|
455
|
+
* / ⟨2026-10-14, the owner's rulings 3A and 5A⟩ ONE BAR FOR EVERY REGISTRATION — the class the owner
|
|
456
|
+
* / names is stored as a label and decides nothing. Every registration: records the irrevocability
|
|
457
|
+
* / acknowledgement (`ackIrrevocable = true`); has no opaque field (`bytes`, `bytes1..32`); names at
|
|
458
|
+
* / least one destination field OR carries a must-equal rule; passes the watchers — an owner alert
|
|
459
|
+
* / webhook set, enabled AND with its money class on, and an `#Active` guardian holding
|
|
460
|
+
* / `canFreezePayments`; and waits `Eip712Policy.COOLOFF_NS` (72 hours). It may carry per-field
|
|
461
|
+
* / rules (`fieldRules`: "at most N" read as a plain decimal with D places, "must equal X"), which
|
|
462
|
+
* / are part of the registered shape — inside the typeId, stored in `eip712FieldRules`, enforced in
|
|
463
|
+
* / `eip712SignFor` before the cap reservation. Before this, a withdrawal registered as `#standard`
|
|
464
|
+
* / needed no webhook, no guardian and no destination field, waited one hour, and signed to any
|
|
465
|
+
* / address. Intrinsic checks still come first and the watchers last (the 2026-08-06 re-ordering).
|
|
356
466
|
*/
|
|
357
467
|
addEip712Type: ActorMethod<
|
|
358
468
|
[
|
|
@@ -365,18 +475,14 @@ export interface Engram {
|
|
|
365
475
|
fields: Array<[string, string]>;
|
|
366
476
|
destinationFields: Array<string>;
|
|
367
477
|
authorityClass: { standingAuthority: null } | { valueBearing: null } | { standard: null };
|
|
478
|
+
fieldRules: Array<[string, Eip712FieldRule]>;
|
|
368
479
|
chainId: bigint;
|
|
369
480
|
domainVersion: string;
|
|
370
481
|
ackIrrevocable: boolean;
|
|
371
482
|
},
|
|
372
483
|
],
|
|
373
|
-
|
|
484
|
+
Result_81
|
|
374
485
|
>;
|
|
375
|
-
/**
|
|
376
|
-
* / Owner-managed destination allowlist (D7). Additions LOOSEN and wait 24h; removals TIGHTEN
|
|
377
|
-
* / and apply instantly — the ratified asymmetry, applied to the one mutable policy surface.
|
|
378
|
-
*/
|
|
379
|
-
addEvmWithdrawDestination: ActorMethod<[string], Result_68>;
|
|
380
486
|
/**
|
|
381
487
|
* / ⟨0.16.0, L1⟩ THE ROLE-CONFLICT ARM, and why three refusals here are not the same refusal.
|
|
382
488
|
* /
|
|
@@ -387,7 +493,18 @@ export interface Engram {
|
|
|
387
493
|
* / permitted but this engram's state says no — the principal already holds an incompatible role,
|
|
388
494
|
* / or the roster is full. Only the last is worth an agent's time to resolve.
|
|
389
495
|
*/
|
|
390
|
-
addGuardian: ActorMethod<[Principal, string, GuardianPermissions],
|
|
496
|
+
addGuardian: ActorMethod<[Principal, string, GuardianPermissions], Result_2>;
|
|
497
|
+
/**
|
|
498
|
+
* / ⟨2026-10-21, the owner's round-11 answer b⟩ OWNER-ONLY: put a note on any entry of this
|
|
499
|
+
* / engram's record — words, nothing else. Appends a chained `record.note` entry
|
|
500
|
+
* / (`about=<id> note=<words>`) and keeps the note for `listRecordNotes`; answers the new entry's
|
|
501
|
+
* / id. The entry noted may be any entry ever appended (`about` below the head), including one the
|
|
502
|
+
* / ring no longer holds in full. An agent, a guardian, a stranger and the anonymous caller are
|
|
503
|
+
* / refused by `requireOwner`'s own words. Empty words, words over `RecordWords.WORDS_MAX` or
|
|
504
|
+
* / holding a line break are `#Invalid`; an id past the head is `#NotFound`; nothing is recorded
|
|
505
|
+
* / on any refusal.
|
|
506
|
+
*/
|
|
507
|
+
addRecordNote: ActorMethod<[bigint, string], Result_14>;
|
|
391
508
|
/**
|
|
392
509
|
* / Returns the write RECEIPT, not just the version.
|
|
393
510
|
* /
|
|
@@ -422,7 +539,7 @@ export interface Engram {
|
|
|
422
539
|
* / is exactly what a guardian pause exists to hold. No action alert is raised: the operation is
|
|
423
540
|
* / owner-initiated, owner-only, and already chained into the audit log.
|
|
424
541
|
*/
|
|
425
|
-
applyCondense: ActorMethod<[bigint],
|
|
542
|
+
applyCondense: ActorMethod<[bigint], Result_80>;
|
|
426
543
|
/**
|
|
427
544
|
* / Owner-only: activate a guardian who has registered against an invite.
|
|
428
545
|
* /
|
|
@@ -433,7 +550,7 @@ export interface Engram {
|
|
|
433
550
|
* / `#Conflict("Guardian is already active")` when there is nothing to do — the refusal says the
|
|
434
551
|
* / state the caller asked for is the state that holds, rather than pretending it acted.
|
|
435
552
|
*/
|
|
436
|
-
approveGuardian: ActorMethod<[Principal],
|
|
553
|
+
approveGuardian: ActorMethod<[Principal], Result_2>;
|
|
437
554
|
/**
|
|
438
555
|
* / Owner-only: approve one pending over-limit request, letting the agent retry the operation
|
|
439
556
|
* / its policy refused.
|
|
@@ -456,13 +573,13 @@ export interface Engram {
|
|
|
456
573
|
* / no longer pending — already approved, denied or expired. The status is in the message because
|
|
457
574
|
* / "not pending" is the one refusal here an owner acts on differently depending on which it is.
|
|
458
575
|
*/
|
|
459
|
-
approveRequest: ActorMethod<[string],
|
|
576
|
+
approveRequest: ActorMethod<[string], Result_2>;
|
|
460
577
|
/**
|
|
461
578
|
* / Discard a backup started by `backupInit` and never finalized. The way out of a failed upload,
|
|
462
579
|
* / and the reason a stalled one need not occupy space indefinitely. Same gate as the rest of the
|
|
463
580
|
* / write half: owner, or an agent holding `canAppendMemory`.
|
|
464
581
|
*/
|
|
465
|
-
backupAbort: ActorMethod<[string],
|
|
582
|
+
backupAbort: ActorMethod<[string], Result_2>;
|
|
466
583
|
/**
|
|
467
584
|
* / Close a backup started by `backupInit` and mark it usable.
|
|
468
585
|
* /
|
|
@@ -477,7 +594,7 @@ export interface Engram {
|
|
|
477
594
|
* / It does NOT verify the `sha256` declared at init; see that method for what the digest is and
|
|
478
595
|
* / is not.
|
|
479
596
|
*/
|
|
480
|
-
backupFinalize: ActorMethod<[string],
|
|
597
|
+
backupFinalize: ActorMethod<[string], Result_2>;
|
|
481
598
|
/**
|
|
482
599
|
* / Begin a chunked backup upload. Returns the `backupId` every later call in the sequence needs.
|
|
483
600
|
* /
|
|
@@ -502,7 +619,7 @@ export interface Engram {
|
|
|
502
619
|
* /
|
|
503
620
|
* / The write half also refuses while writes are PAUSED.
|
|
504
621
|
*/
|
|
505
|
-
backupInit: ActorMethod<[string, BackupType, [] | [string], string, [] | [string]],
|
|
622
|
+
backupInit: ActorMethod<[string, BackupType, [] | [string], string, [] | [string]], Result_53>;
|
|
506
623
|
/**
|
|
507
624
|
* / Read one chunk of a finalized backup, by index.
|
|
508
625
|
* /
|
|
@@ -510,13 +627,13 @@ export interface Engram {
|
|
|
510
627
|
* / `canAppendMemory`. Holding one says nothing about the other, deliberately: taking a backup and
|
|
511
628
|
* / carrying it away are different authorities.
|
|
512
629
|
*/
|
|
513
|
-
backupPullChunk: ActorMethod<[string, bigint],
|
|
514
|
-
backupPushChunk: ActorMethod<[string, bigint, Uint8Array | number[]],
|
|
630
|
+
backupPullChunk: ActorMethod<[string, bigint], Result_69>;
|
|
631
|
+
backupPushChunk: ActorMethod<[string, bigint, Uint8Array | number[]], Result_2>;
|
|
515
632
|
/**
|
|
516
633
|
* / The OWNER cancels an agent's pending key nomination; the agent keeps its current key. Refused
|
|
517
634
|
* / by name when the agent is unknown or has nothing pending — never a silent success.
|
|
518
635
|
*/
|
|
519
|
-
cancelAgentKeyNomination: ActorMethod<[Principal],
|
|
636
|
+
cancelAgentKeyNomination: ActorMethod<[Principal], Result_2>;
|
|
520
637
|
/**
|
|
521
638
|
* / Close a session the caller paid for: settle what was consumed, refund the remainder.
|
|
522
639
|
* /
|
|
@@ -524,7 +641,7 @@ export interface Engram {
|
|
|
524
641
|
* / and `forceCloseSession` were on the MARKET, which is withheld, and whose escrow subaccount is
|
|
525
642
|
* / under a different principal entirely, so its close could never have reached these funds.
|
|
526
643
|
*/
|
|
527
|
-
closeSession: ActorMethod<[string],
|
|
644
|
+
closeSession: ActorMethod<[string], Result_2>;
|
|
528
645
|
/**
|
|
529
646
|
* / Convert the engram's OWN earned ckUSDC/ckUSDT into its OWN cycles, via the cashier — the
|
|
530
647
|
* / engram-self top-up path. Owner-only; per-call cap + cooldown (irreversible); NOT freeze-gated
|
|
@@ -548,7 +665,7 @@ export interface Engram {
|
|
|
548
665
|
* / pair — e6 base units of the token named first. A name only: Candid passes arguments by
|
|
549
666
|
* / position, so nothing on the wire moved.
|
|
550
667
|
*/
|
|
551
|
-
convertEarningsToCycles: ActorMethod<[string, bigint],
|
|
668
|
+
convertEarningsToCycles: ActorMethod<[string, bigint], Result_14>;
|
|
552
669
|
/**
|
|
553
670
|
* / Owner-only: mint a single-use invite code an agent redeems with `pairAgent`.
|
|
554
671
|
* /
|
|
@@ -567,8 +684,18 @@ export interface Engram {
|
|
|
567
684
|
* /
|
|
568
685
|
* / A principal that is already a GUARDIAN cannot become an agent — a guardian is an
|
|
569
686
|
* / independent check on agents, so one wallet must not hold both.
|
|
687
|
+
* /
|
|
688
|
+
* / ⟨2026-10-29, the owner's ruling "a"⟩ `name` MAY BE EMPTY (or only whitespace): the agent is then
|
|
689
|
+
* / named after its key when it pairs — "agent-" and the key's first five characters, e.g.
|
|
690
|
+
* / "agent-hsffu" (`People.nameAtPairing` says why five, and the first). ⟨2026-10-29, later, beside "its key"⟩ Its
|
|
691
|
+
* / PERMANENT key (the root it enrolled with), not the key that pairs, so the name stays right across
|
|
692
|
+
* / a key replacement and matches the app's "Copy permanent key". A name the owner gives
|
|
693
|
+
* / always wins. Before this an empty name was refused, so an app that wanted no name had to invent
|
|
694
|
+
* / one ("agent"), and two agents read alike.
|
|
695
|
+
* / ⟨2026-10-29, review F7⟩ A name the owner gives meets the rule `renameAgent` applies: a line break
|
|
696
|
+
* / or another control character is `#Invalid` (`People.nameRefusal`), as a rename to it would be.
|
|
570
697
|
*/
|
|
571
|
-
createAgentInvite: ActorMethod<[string, AgentPermissions],
|
|
698
|
+
createAgentInvite: ActorMethod<[string, AgentPermissions], Result_53>;
|
|
572
699
|
/**
|
|
573
700
|
* / Owner-only: mint an invite for a GUARDIAN — an independent check on agents, not a
|
|
574
701
|
* / co-owner and not a recovery agent.
|
|
@@ -592,7 +719,7 @@ export interface Engram {
|
|
|
592
719
|
* / So an invite that fails to redeem for that reason is not a bad code. The rule exists because
|
|
593
720
|
* / a check must be independent of the thing it checks.
|
|
594
721
|
*/
|
|
595
|
-
createGuardianInvite: ActorMethod<[string, GuardianPermissions],
|
|
722
|
+
createGuardianInvite: ActorMethod<[string, GuardianPermissions], Result_53>;
|
|
596
723
|
/**
|
|
597
724
|
* / OWNER-ONLY deletion of a stored backup.
|
|
598
725
|
* /
|
|
@@ -605,7 +732,7 @@ export interface Engram {
|
|
|
605
732
|
* / `backupAbort` is the agent's way out of a failed UPLOAD; it discards something never
|
|
606
733
|
* / finalized. This removes a finished backup, which is a different act on a different object.
|
|
607
734
|
*/
|
|
608
|
-
deleteBackup: ActorMethod<[string],
|
|
735
|
+
deleteBackup: ActorMethod<[string], Result_2>;
|
|
609
736
|
/**
|
|
610
737
|
* / ⟨0.16.0, census §10 item 16⟩ RETURNS A REAL RECEIPT, not `R<()>`. The receipt was already
|
|
611
738
|
* / being computed and written into the audit line — `receiptSuffix(r)` — and then discarded, so
|
|
@@ -625,38 +752,25 @@ export interface Engram {
|
|
|
625
752
|
* / `#NotFound` for an unknown id and `#Conflict` when the request is no longer pending, and it
|
|
626
753
|
* / does not change the policy — the next request over the same limit will be raised again.
|
|
627
754
|
*/
|
|
628
|
-
denyRequest: ActorMethod<[string, string],
|
|
755
|
+
denyRequest: ActorMethod<[string, string], Result_2>;
|
|
629
756
|
/**
|
|
630
|
-
* /
|
|
631
|
-
* /
|
|
632
|
-
* /
|
|
633
|
-
* /
|
|
634
|
-
* /
|
|
757
|
+
* / ⟨2026-10-21, the owner's round-11 answer c⟩ A NEW GUARDIAN POWER, words only: an ACTIVE
|
|
758
|
+
* / guardian disputes an agent's write. It never moves money, stops anything or changes a grant.
|
|
759
|
+
* / Appends a chained `record.dispute` entry (`about=<id> reason=<words>`) and keeps the dispute
|
|
760
|
+
* / for `listGuardianDisputes`; answers the new entry's id. NOT ALERTED, deliberately: a
|
|
761
|
+
* / `guardian.*` operation would fall in the alerts' #guardian class, and which entries reach a
|
|
762
|
+
* / phone is the held alerts round's to decide (`ActionAlerts.classify` answers null for
|
|
763
|
+
* / `record.*`). The owner sees it on the record's Disputes tab.
|
|
635
764
|
* /
|
|
636
|
-
* /
|
|
637
|
-
* /
|
|
638
|
-
* /
|
|
639
|
-
* /
|
|
640
|
-
* /
|
|
641
|
-
* /
|
|
642
|
-
* /
|
|
643
|
-
* / the move order in the spec's B-2 addendum, not left for someone to find.
|
|
644
|
-
* /
|
|
645
|
-
* / PUBLIC: it inherits `getEvmAddress`'s gate rather than choosing one, and could not usefully be
|
|
646
|
-
* / narrower — it exists so a caller can make the derivation happen BEFORE a payment flow, and the
|
|
647
|
-
* / derivation itself is ungated. Idempotent and bounded to the same one-derivation-per-lifetime
|
|
648
|
-
* / work, so an anonymous caller can cause it once and no more.
|
|
649
|
-
* / ⟨L7⟩ UPDATE, NOT QUERY, and this one does not merely await — it WRITES. The body awaits
|
|
650
|
-
* / `EvmIdentity.deriveAddress` (the management canister's `ecdsa_public_key`) and
|
|
651
|
-
* / `gate.deriveEvmRecipientAt` ⟨renamed 2026-09-22 with the path⟩, then caches the result in `evmAddressCache`. So a query is
|
|
652
|
-
* / impossible twice over: it could not await the derivation, and it could not keep the answer.
|
|
653
|
-
* / Named `ensure*` rather than `get*` for that reason — the write is the point, and a read verb
|
|
654
|
-
* / would have promised a cheapness this cannot deliver.
|
|
655
|
-
* /
|
|
656
|
-
* / ⟨Marker added 2026-08-23; the census row said "L7 mark added per review" and no mark was at
|
|
657
|
-
* / the site.⟩
|
|
765
|
+
* / WHO: every active guardian — no grant bit (`RecordWords` header says why). The OWNER is refused
|
|
766
|
+
* / by name (`RecordWords.OWNER_DISPUTES_ELSEWHERE` — the owner's dispute is
|
|
767
|
+
* / `repudiateMemoryWrite`); an agent and a stranger get "Not a guardian", a pending guardian "Guardian
|
|
768
|
+
* / is pending approval", the anonymous caller the anonymous refusal.
|
|
769
|
+
* / WHAT: an entry the owner's review would show (`qualifiesForReview` — an agent's append or
|
|
770
|
+
* / revision, or a paid session's append) that succeeded, still held in full by the ring.
|
|
771
|
+
* / One dispute per guardian per write (`#Conflict`, the first stands).
|
|
658
772
|
*/
|
|
659
|
-
|
|
773
|
+
disputeAgentWrite: ActorMethod<[bigint, string], Result_14>;
|
|
660
774
|
/**
|
|
661
775
|
* / Record that log entries [fromSeq, toSeq] were served, and return the root that proves it.
|
|
662
776
|
* /
|
|
@@ -671,7 +785,7 @@ export interface Engram {
|
|
|
671
785
|
* / situation rather than a safety measure. It IS gated on requireMemoryAttached: a store that
|
|
672
786
|
* / failed its integrity check must not attest anything it cannot vouch for.
|
|
673
787
|
*/
|
|
674
|
-
exportMemoryRange: ActorMethod<[bigint, bigint, [] | [Principal]],
|
|
788
|
+
exportMemoryRange: ActorMethod<[bigint, bigint, [] | [Principal]], Result_79>;
|
|
675
789
|
/**
|
|
676
790
|
* / ⟨0.16.0, L2.2 — renamed from `guardianFreezePayments`⟩ The prefix LIED about who may call it.
|
|
677
791
|
* / The gate is `requireOwnerOrGuardian`, and an owner freezing their own payments is the ordinary
|
|
@@ -688,6 +802,8 @@ export interface Engram {
|
|
|
688
802
|
* / individual method's body finds nothing — the check is one level down.⟩
|
|
689
803
|
* / · `addEip712Type` and `addEvmWithdrawDestination` — pre-staging for a later payout is the
|
|
690
804
|
* / thing a brake most needs to stop, so the destination list is frozen along with the signing.
|
|
805
|
+
* / ⟨2026-10-14, the owner's ruling 4A⟩ `addEvmWithdrawDestination` is removed; its place is
|
|
806
|
+
* / `addEip712Destination` (one list per registered action), freeze-gated the same way.
|
|
691
807
|
* / · `sessionReadMemory` and `sessionAppendMemory` — the paid-memory rail, money coming IN.
|
|
692
808
|
* /
|
|
693
809
|
* / AND WHAT IT DELIBERATELY DOES NOT, stated so the absence is not read as an oversight:
|
|
@@ -703,11 +819,21 @@ export interface Engram {
|
|
|
703
819
|
* / ⚠ The three exclusions are a reading of intent, not a ruling: no declaration stated the scope
|
|
704
820
|
* / before this one. If any of them is wrong, this comment is where the argument should happen.
|
|
705
821
|
*/
|
|
706
|
-
freezePayments: ActorMethod<[],
|
|
822
|
+
freezePayments: ActorMethod<[], Result_2>;
|
|
823
|
+
/**
|
|
824
|
+
* / ⟨2026-10-21, the owner's round-11 answer d⟩ `freezePayments` with a reason the strip and the
|
|
825
|
+
* / guardian page show ("Sam froze payments: 'a payment I didn't expect'"). A NEW method, not an
|
|
826
|
+
* / argument on `freezePayments`: a shipped argument tuple is frozen. Same callers, same grant, same
|
|
827
|
+
* / brake: the owner, or an active guardian holding `canFreezePayments`; an agent, a stranger, a
|
|
828
|
+
* / pending guardian and the anonymous caller are refused by `requireOwnerOrGuardian`'s own words.
|
|
829
|
+
* / An empty reason is no reason; a reason too long or holding a line break is `#Invalid` and the
|
|
830
|
+
* / brake is NOT pulled — the caller pulls it with `freezePayments`, or shortens the words.
|
|
831
|
+
*/
|
|
832
|
+
freezePaymentsWithReason: ActorMethod<[string], Result_2>;
|
|
707
833
|
/**
|
|
708
834
|
* / Delivery status + config readback. Owner-only (the URL is a secret).
|
|
709
835
|
*/
|
|
710
|
-
getActionAlertStatus: ActorMethod<[],
|
|
836
|
+
getActionAlertStatus: ActorMethod<[], Result_67>;
|
|
711
837
|
/**
|
|
712
838
|
* / Agents need to know what they may revise, so they can read it too. Whole-value config, same
|
|
713
839
|
* / carve-out as getProtectedPaths — and kept a SEPARATE method from it deliberately (L2.2): a
|
|
@@ -717,7 +843,7 @@ export interface Engram {
|
|
|
717
843
|
* / Refusal reason preserved from the trap: a grant is a power, and its absence and its
|
|
718
844
|
* / concealment are different facts.
|
|
719
845
|
*/
|
|
720
|
-
getAgentRevisablePaths: ActorMethod<[],
|
|
846
|
+
getAgentRevisablePaths: ActorMethod<[], Result_63>;
|
|
721
847
|
/**
|
|
722
848
|
* / OWNER-ONLY: every engagement's seat weeks on this engram, with the agent's root — the day it
|
|
723
849
|
* / paired, the days of its first and last payment signature, a 64-week map whose bit 0 is the week
|
|
@@ -730,7 +856,7 @@ export interface Engram {
|
|
|
730
856
|
* / empty page. Paged; `total` is every engagement ever paired here (a reset keeps the rows).
|
|
731
857
|
* / Two rows can name one root: an agent paired again after it left is a second engagement.
|
|
732
858
|
*/
|
|
733
|
-
getAgentSeatWeeks: ActorMethod<[bigint, bigint],
|
|
859
|
+
getAgentSeatWeeks: ActorMethod<[bigint, bigint], Result_77>;
|
|
734
860
|
/**
|
|
735
861
|
* / Owner: everything written into this engram by someone other than the owner since the last
|
|
736
862
|
* / markAgentWritesReviewed() — agent appends/revisions AND paid-session appends (see
|
|
@@ -740,7 +866,7 @@ export interface Engram {
|
|
|
740
866
|
* / as a total. `earliest` discloses ring eviction — if cursor < earliest, entries between them
|
|
741
867
|
* / aged out of the ring (the CHAIN still proves total count; this view can't show their bodies).
|
|
742
868
|
*/
|
|
743
|
-
getAgentWriteReview: ActorMethod<[],
|
|
869
|
+
getAgentWriteReview: ActorMethod<[], Result_76>;
|
|
744
870
|
/**
|
|
745
871
|
* / Why anchoring is or is not advancing. PUBLIC: ungated on purpose — detecting a stalled
|
|
746
872
|
* / engram is the point, a gated read would fail-to-empty and hand a third party fabricated zeros,
|
|
@@ -763,7 +889,20 @@ export interface Engram {
|
|
|
763
889
|
* / was signed rather than asserted.
|
|
764
890
|
*/
|
|
765
891
|
getAuditHead: ActorMethod<[], AuditHead>;
|
|
766
|
-
getBackupMetadata: ActorMethod<[string],
|
|
892
|
+
getBackupMetadata: ActorMethod<[string], Result_75>;
|
|
893
|
+
/**
|
|
894
|
+
* / ⟨2026-10-21, the owner's round-11 answer m: a backup-retention getter⟩ How many backups of
|
|
895
|
+
* / `dbType` each creator keeps, and whether that is the default — the read `setBackupRetention`
|
|
896
|
+
* / lacked, so "Keeps your newest 3" showed only on the phone that last set it.
|
|
897
|
+
* /
|
|
898
|
+
* / WHO: the OWNER, and an active AGENT holding `canAppendMemory` — the permission that lets it
|
|
899
|
+
* / upload backups, which are exactly the backups this number bounds (`#perm(#append_memory)`).
|
|
900
|
+
* / Refused, each by the gate's own words: an agent without that permission ("Permission
|
|
901
|
+
* / denied"), a revoked or resigned agent, a guardian (guardians take no backups), a stranger and
|
|
902
|
+
* / the anonymous caller. A kind the setter would refuse is `#Invalid` here too
|
|
903
|
+
* / (`Backup.getRetention`). Records nothing (a query).
|
|
904
|
+
*/
|
|
905
|
+
getBackupRetention: ActorMethod<[string], Result_74>;
|
|
767
906
|
/**
|
|
768
907
|
* / The cashier this engram recognises as its rent biller — `null` until the registry pushes one.
|
|
769
908
|
* /
|
|
@@ -773,6 +912,27 @@ export interface Engram {
|
|
|
773
912
|
* / too is what lets the two be COMPARED, which is the only way to catch a mismatch.
|
|
774
913
|
*/
|
|
775
914
|
getBillerId: ActorMethod<[], [] | [Principal]>;
|
|
915
|
+
/**
|
|
916
|
+
* / This engram's BIRTH CHAIN, root first: its own record last, its parent's before it, and so on
|
|
917
|
+
* / ⟨2026-10-26, the owner's lineage ruling L3A⟩.
|
|
918
|
+
* /
|
|
919
|
+
* / OWNER ONLY. The owner decides whom to show it to — the chain names the engrams this one descends
|
|
920
|
+
* / from, which is the owner's to disclose, not the registry's. The certified half is at the registry
|
|
921
|
+
* / (`getCertifiedBirth`, public, revealing only whether a fingerprint is present); the client's
|
|
922
|
+
* / `verifyBirthChain` checks both. Refused to anyone else by the combinator (`#ownerOnly`).
|
|
923
|
+
*/
|
|
924
|
+
getBirthChain: ActorMethod<[], Result_73>;
|
|
925
|
+
/**
|
|
926
|
+
* / ⟨2026-10-21, the owner's round-11 answer d⟩ Each brake: on or off, and while on, who pulled it
|
|
927
|
+
* / LAST (their key and whether as owner or guardian), since when, and the reason they gave — the
|
|
928
|
+
* / same person and time as the newest brake entry on the record (`RecordWords.BrakePull`). For the
|
|
929
|
+
* / owner's status strip and the guardian page. The OWNER and ACTIVE GUARDIANS may read it; an
|
|
930
|
+
* / agent, a stranger, a pending guardian and the anonymous caller are refused (`#ownerOrGuardian`
|
|
931
|
+
* / — an agent learns a brake is on from the refusal of what it tried, and needs no more). `pull`
|
|
932
|
+
* / is null for a brake that is off, and for one carried on across the upgrade that added this
|
|
933
|
+
* / read (who pulled it was not recorded then) — never a guessed pull.
|
|
934
|
+
*/
|
|
935
|
+
getBrakes: ActorMethod<[], Result_72>;
|
|
776
936
|
/**
|
|
777
937
|
* / ⟨0.16.0, L9/L10 — census row⟩ `Wire.CertifiedAuditHead`, not an anonymous record. The
|
|
778
938
|
* / registry, market and cashier already served the shared type; the engram — the canister that
|
|
@@ -799,13 +959,13 @@ export interface Engram {
|
|
|
799
959
|
* / recorded nothing while reading as if it did. The refusal is loud in the reply instead. WHAT
|
|
800
960
|
* / WOULD MAKE THIS WRONG: a reason to record who asked — then this becomes an update that says so.
|
|
801
961
|
*/
|
|
802
|
-
getChildAllowance: ActorMethod<[Principal],
|
|
962
|
+
getChildAllowance: ActorMethod<[Principal], Result_71>;
|
|
803
963
|
/**
|
|
804
964
|
* / Owner-only, Billing-class: what opening an engram costs this engram, the balance below which an
|
|
805
965
|
* / agent's request is refused, the balance now, and every agent's allowance. The console's cost
|
|
806
966
|
* / sentence reads it. Cycles are owner-class information, as on the owner's console read.
|
|
807
967
|
*/
|
|
808
|
-
getChildOpening: ActorMethod<[],
|
|
968
|
+
getChildOpening: ActorMethod<[], Result_70>;
|
|
809
969
|
/**
|
|
810
970
|
* / Derive the shared memory-encryption key, encrypted under the caller's transport
|
|
811
971
|
* / public key. Gated to owner + read-agents (the same principals allowed to read
|
|
@@ -831,7 +991,7 @@ export interface Engram {
|
|
|
831
991
|
* / cost. Stated here because L7 requires the reason be readable from the interface rather than
|
|
832
992
|
* / inferred by opening the body — which is exactly what had to happen to write this line.
|
|
833
993
|
*/
|
|
834
|
-
getEncryptedMemoryKey: ActorMethod<[[] | [bigint], Uint8Array | number[]],
|
|
994
|
+
getEncryptedMemoryKey: ActorMethod<[[] | [bigint], Uint8Array | number[]], Result_69>;
|
|
835
995
|
/**
|
|
836
996
|
* / ⟨0.16.0, owner ruling 2026-08-20 — option (a)⟩ `x402Support` REPORTS THE RAIL, not a constant.
|
|
837
997
|
* /
|
|
@@ -858,12 +1018,6 @@ export interface Engram {
|
|
|
858
1018
|
* / be discovered, and the ERC-8004 ecosystem it participates in assumes an open read.
|
|
859
1019
|
*/
|
|
860
1020
|
getEngramCard: ActorMethod<[], AgentCard>;
|
|
861
|
-
/**
|
|
862
|
-
* / PUBLIC: the engram's permanent spawn ordinal — a provable, non-sensitive fact. It identifies a
|
|
863
|
-
* / canister, never a person.
|
|
864
|
-
* / null = spawned before numbering existed; the owner can backfill via syncEngramNumber().
|
|
865
|
-
*/
|
|
866
|
-
getEngramNumber: ActorMethod<[], [] | [bigint]>;
|
|
867
1021
|
/**
|
|
868
1022
|
* / Re-pointed at `EvmIdentity` (B-2): custody derivation no longer routes through the ic402
|
|
869
1023
|
* / Gateway, which is leaving for the market canister. Behaviour is unchanged for a caller — same
|
|
@@ -936,7 +1090,7 @@ export interface Engram {
|
|
|
936
1090
|
* / `#Err`, never a record carrying an empty string (ic402's `getEvmAddress` answers `""` on a
|
|
937
1091
|
* / failed derivation — that is fail-to-empty on a money surface, and it stops here).
|
|
938
1092
|
*/
|
|
939
|
-
getEvmAddress: ActorMethod<[],
|
|
1093
|
+
getEvmAddress: ActorMethod<[], Result_68>;
|
|
940
1094
|
/**
|
|
941
1095
|
* / The owner's OWN EVM address, if they registered one — distinct from `getEvmAddress`, which is
|
|
942
1096
|
* / the address this canister derives for itself.
|
|
@@ -955,7 +1109,7 @@ export interface Engram {
|
|
|
955
1109
|
* / cost — stated here because L7 requires the reason be readable from the interface rather than
|
|
956
1110
|
* / inferred by opening the body.
|
|
957
1111
|
*/
|
|
958
|
-
getEvmSignerAddress: ActorMethod<[],
|
|
1112
|
+
getEvmSignerAddress: ActorMethod<[], Result_53>;
|
|
959
1113
|
/**
|
|
960
1114
|
* / PUBLIC: where this chain begins, for the stranger deciding whether to trust it.
|
|
961
1115
|
* /
|
|
@@ -968,7 +1122,7 @@ export interface Engram {
|
|
|
968
1122
|
/**
|
|
969
1123
|
* / A guardian's own channel status (their URL is their secret — each guardian sees only theirs).
|
|
970
1124
|
*/
|
|
971
|
-
getGuardianAlertStatus: ActorMethod<[],
|
|
1125
|
+
getGuardianAlertStatus: ActorMethod<[], Result_67>;
|
|
972
1126
|
/**
|
|
973
1127
|
* / The market this engram will accept signing requests from — `null` until the registry pushes
|
|
974
1128
|
* / one at spawn, which is why `requireMarket` refuses fleet-wide today.
|
|
@@ -1001,7 +1155,7 @@ export interface Engram {
|
|
|
1001
1155
|
* / never renumbered: the next page starts at the last version returned plus one. Defaults
|
|
1002
1156
|
* / return the whole history of any file a pre-FD engram could have held.
|
|
1003
1157
|
*/
|
|
1004
|
-
getMemoryHistory: ActorMethod<[string, [] | [bigint], [] | [bigint]],
|
|
1158
|
+
getMemoryHistory: ActorMethod<[string, [] | [bigint], [] | [bigint]], Result_66>;
|
|
1005
1159
|
/**
|
|
1006
1160
|
* / PUBLIC: the epoch alone, and deliberately nothing else (rotation study D4). A `rotatedAt[]`
|
|
1007
1161
|
* / history would be a public, fleet-enumerable feed of when each owner terminated a trust
|
|
@@ -1050,7 +1204,7 @@ export interface Engram {
|
|
|
1050
1204
|
* / forever" — a claim about what this engram will DESTROY — and an empty guard list reads as
|
|
1051
1205
|
* / "nothing is held back".
|
|
1052
1206
|
*/
|
|
1053
|
-
getMemoryRetentionPolicy: ActorMethod<[],
|
|
1207
|
+
getMemoryRetentionPolicy: ActorMethod<[], Result_65>;
|
|
1054
1208
|
/**
|
|
1055
1209
|
* / The metrics reader this engram answers — `null` until the spawning registry names one.
|
|
1056
1210
|
* /
|
|
@@ -1067,7 +1221,7 @@ export interface Engram {
|
|
|
1067
1221
|
* / a fact about the caller, told to the caller. There is nothing to leak by omission — which is
|
|
1068
1222
|
* / the test the #NotFound arm sets.
|
|
1069
1223
|
*/
|
|
1070
|
-
getMyGuardianStatus: ActorMethod<[],
|
|
1224
|
+
getMyGuardianStatus: ActorMethod<[], Result_17>;
|
|
1071
1225
|
/**
|
|
1072
1226
|
* / ⟨0.16.0, NEW⟩ The gated half of the status() split.
|
|
1073
1227
|
* /
|
|
@@ -1079,7 +1233,7 @@ export interface Engram {
|
|
|
1079
1233
|
* / client (rule 4) and bought a masked answer nobody had asked for — the census could not even
|
|
1080
1234
|
* / find a consumer that read the masked `0`. Behind a gate there is nobody to mask it from.
|
|
1081
1235
|
*/
|
|
1082
|
-
getOwnerConsole: ActorMethod<[],
|
|
1236
|
+
getOwnerConsole: ActorMethod<[], Result_64>;
|
|
1083
1237
|
/**
|
|
1084
1238
|
* / Owner + agents only (agents need it to avoid writing protected paths).
|
|
1085
1239
|
* /
|
|
@@ -1093,7 +1247,7 @@ export interface Engram {
|
|
|
1093
1247
|
* / writing one — so a fabricated empty here does not merely misinform, it invites the write the
|
|
1094
1248
|
* / list exists to prevent.
|
|
1095
1249
|
*/
|
|
1096
|
-
getProtectedPaths: ActorMethod<[],
|
|
1250
|
+
getProtectedPaths: ActorMethod<[], Result_63>;
|
|
1097
1251
|
/**
|
|
1098
1252
|
* / Whether the metrics reader's read is answered — `true` from birth.
|
|
1099
1253
|
* /
|
|
@@ -1105,8 +1259,11 @@ export interface Engram {
|
|
|
1105
1259
|
* / Owner-only, Billing-class: the signing floor, the balance, one signature's price, and how many
|
|
1106
1260
|
* / payment signatures the balance carries above the floor before `signX402Payment` is refused by
|
|
1107
1261
|
* / name. The same numbers the check uses, so Billing can say only what the engram enforces.
|
|
1262
|
+
* / ⟨2026-11-01, "6 fix"⟩ Refused by name (`#Unavailable`) while this engram has not read its own
|
|
1263
|
+
* / freezing setting: there is no floor to serve then, and a 30-day figure would be a made-up one
|
|
1264
|
+
* / (ADR-0002) — the signers refuse in that state too, so the refusal is the truth on Billing.
|
|
1108
1265
|
*/
|
|
1109
|
-
getSigningFloor: ActorMethod<[],
|
|
1266
|
+
getSigningFloor: ActorMethod<[], Result_62>;
|
|
1110
1267
|
/**
|
|
1111
1268
|
* / The registry that spawned this engram, if it recorded one.
|
|
1112
1269
|
* /
|
|
@@ -1127,7 +1284,7 @@ export interface Engram {
|
|
|
1127
1284
|
* / A refusal names this method (`Gated.gatedResult`) rather than answering null/0 — a ceiling of
|
|
1128
1285
|
* / "none" and a spend of 0 are both real answers, so a fabricated one would be read as fact.
|
|
1129
1286
|
*/
|
|
1130
|
-
getSpendCeiling: ActorMethod<[],
|
|
1287
|
+
getSpendCeiling: ActorMethod<[], Result_61>;
|
|
1131
1288
|
/**
|
|
1132
1289
|
* / Read the caps in force for a caller.
|
|
1133
1290
|
* /
|
|
@@ -1137,8 +1294,8 @@ export interface Engram {
|
|
|
1137
1294
|
* / configuration, and publishing them would tell any caller exactly how large a signing request
|
|
1138
1295
|
* / can be before it needs an approval nobody is watching for.
|
|
1139
1296
|
*/
|
|
1140
|
-
getSpendPolicy: ActorMethod<[[] | [Principal]],
|
|
1141
|
-
getStorageStats: ActorMethod<[],
|
|
1297
|
+
getSpendPolicy: ActorMethod<[[] | [Principal]], Result_60>;
|
|
1298
|
+
getStorageStats: ActorMethod<[], Result_59>;
|
|
1142
1299
|
/**
|
|
1143
1300
|
* / Timer arm-state. PUBLIC and deliberately so: these timers are self-arming to save cycles,
|
|
1144
1301
|
* / and an optimisation nobody can verify is an optimisation nobody should trust. Cheap to read,
|
|
@@ -1163,6 +1320,10 @@ export interface Engram {
|
|
|
1163
1320
|
* / because a persistent actor re-runs its init body BEFORE postupgrade restores stable sessions,
|
|
1164
1321
|
* / so a predicate-gated arm would skip exactly the canisters that have live ones. The first tick
|
|
1165
1322
|
* / disarms it. Still true minutes after an upgrade is a real bug — report it upstream.
|
|
1323
|
+
* / ⟨2026-10-07, beside the paragraph above⟩ The session sweep's interval is 300 seconds now (the
|
|
1324
|
+
* / owner's decision of that day; set in the actor body), so "one interval" is up to five minutes,
|
|
1325
|
+
* / and true five minutes after an upgrade is still expected. True ten minutes after, with no session
|
|
1326
|
+
* / open, is the bug.
|
|
1166
1327
|
* / NOT the whole timer story. The hourly CYCLE timer — which also carries audit anchoring — is
|
|
1167
1328
|
* / deliberately absent: it is a `transient let` armed unconditionally at init, so an "armed"
|
|
1168
1329
|
* / boolean for it would read true forever and tell you nothing, exactly the false-positive the
|
|
@@ -1172,6 +1333,18 @@ export interface Engram {
|
|
|
1172
1333
|
* / PUBLIC: the same standing as the two liveness reads above. Booleans and timestamps about this
|
|
1173
1334
|
* / canister's own timers — nothing about content, callers or money — and a liveness signal only
|
|
1174
1335
|
* / its owner can read cannot tell a third party that the engram is still running.
|
|
1336
|
+
* / ⟨2026-10-28, the owner's ruling "1"⟩ The three ic402 flags read FALSE WHILE THE TIMERS ARE PAUSED.
|
|
1337
|
+
* / The pause's id sweep cancels ic402's sweeps, but ic402 keeps their stale ids, so its own
|
|
1338
|
+
* / "armed" reads would answer true for a timer that no longer exists (a fabricated answer,
|
|
1339
|
+
* / ADR-0002). `alertTimerArmed` needs no guard: the sweep nulls `alertTimerId` itself.
|
|
1340
|
+
* / ⟨2026-10-29, the owner's ruling "A", beside the line above⟩ …the sweep zeroes the arm, and an arm
|
|
1341
|
+
* / past its due time reads stale. `alertTimerArmed` is TRUE ONLY WHILE A DELIVERY IS OWED OR RETRYING
|
|
1342
|
+
* / (the alert drain is a one-shot armed per owed delivery); alerts configured on a quiet engram read
|
|
1343
|
+
* / false, and that is correct — the IDLE STEADY STATE line above now holds with a webhook set too.
|
|
1344
|
+
* / It reads the arm's DUE TIME, not only its id (`ActionAlerts.armLive`): a job that traps before its
|
|
1345
|
+
* / first await rolls back its own `alertTimerId := null`, so a bare id would read armed forever.
|
|
1346
|
+
* / ONE BOUNDED UNTRUTH (the spec's critic, F12): for ARM_STALE_NS (120 s) after the due time of such a
|
|
1347
|
+
* / trapped job, the flag reads true although no timer exists.
|
|
1175
1348
|
*/
|
|
1176
1349
|
getTimerHealth: ActorMethod<[], TimerHealth>;
|
|
1177
1350
|
/**
|
|
@@ -1207,14 +1380,14 @@ export interface Engram {
|
|
|
1207
1380
|
* / UPDATE, marked per L7: it awaits three ICRC-1 ledgers". It was marked in prose and invisible
|
|
1208
1381
|
* / to any gate; the glyph is what `scripts/check-update-for-read.mjs` matches.
|
|
1209
1382
|
*/
|
|
1210
|
-
getWalletBalances: ActorMethod<[],
|
|
1383
|
+
getWalletBalances: ActorMethod<[], Result_58>;
|
|
1211
1384
|
/**
|
|
1212
1385
|
* / Refusal reason preserved, and it is the clearest case of why a masked read is worse than no
|
|
1213
1386
|
* / read: three empty strings with `configured = false` is a VALID-LOOKING answer meaning "this
|
|
1214
1387
|
* / engram has no World ID configuration" — handed to a caller who merely lacks a grant. The
|
|
1215
1388
|
* / fabrication is indistinguishable from the truth by construction.
|
|
1216
1389
|
*/
|
|
1217
|
-
getWorldIdConfig: ActorMethod<[],
|
|
1390
|
+
getWorldIdConfig: ActorMethod<[], Result_57>;
|
|
1218
1391
|
/**
|
|
1219
1392
|
* / ⟨L7⟩ UPDATE, NOT QUERY: this awaits THREE system calls — `raw_rand()` for the nonce,
|
|
1220
1393
|
* / `Call.signWithEcdsa` for the signature, and `worldIdRpPublicKey()` for the derived key. A
|
|
@@ -1225,7 +1398,7 @@ export interface Engram {
|
|
|
1225
1398
|
* / the World Developer Portal. Short-lived (300s TTL, idkit-server's default) and single-purpose —
|
|
1226
1399
|
* / it authorizes opening one verification request, nothing else.
|
|
1227
1400
|
*/
|
|
1228
|
-
getWorldIdRpContext: ActorMethod<[],
|
|
1401
|
+
getWorldIdRpContext: ActorMethod<[], Result_56>;
|
|
1229
1402
|
/**
|
|
1230
1403
|
* / Owner-only: the EVM address derived from the engram's dedicated World ID RP signing key (the
|
|
1231
1404
|
* / "worldid-rp" tECDSA path). Register THIS address as the rp_id's signer in the World Developer
|
|
@@ -1237,7 +1410,7 @@ export interface Engram {
|
|
|
1237
1410
|
* / refusal — a state write, which a query cannot perform. So even if the key were cached this
|
|
1238
1411
|
* / could not become a query without silently retiring its denial record (ADR-0002's class).
|
|
1239
1412
|
*/
|
|
1240
|
-
getWorldIdRpSignerAddress: ActorMethod<[],
|
|
1413
|
+
getWorldIdRpSignerAddress: ActorMethod<[], Result_53>;
|
|
1241
1414
|
/**
|
|
1242
1415
|
* / The verified IDKitResult, verbatim, as World's /api/v4/verify accepted it — the re-checkable
|
|
1243
1416
|
* / artifact behind verifiedHuman. Role-gated because it carries the NULLIFIER.
|
|
@@ -1258,7 +1431,7 @@ export interface Engram {
|
|
|
1258
1431
|
* / canister does not serve. The tombstones below and at `about()` are historical and correct as
|
|
1259
1432
|
* / written; this one was present tense, which is the difference that matters.⟩
|
|
1260
1433
|
*/
|
|
1261
|
-
getWorldIdVerification: ActorMethod<[],
|
|
1434
|
+
getWorldIdVerification: ActorMethod<[], Result_55>;
|
|
1262
1435
|
/**
|
|
1263
1436
|
* / ⟨0.16.0, L1⟩ THE EMERGENCY FAMILY. Every refusal below is `#Refused` or `#NotFound`, and the
|
|
1264
1437
|
* / absence of a `#Conflict` here is the point: these are the calls someone makes while something
|
|
@@ -1266,7 +1439,7 @@ export interface Engram {
|
|
|
1266
1439
|
* / nothing by that name". A missing PERMISSION is `#Refused` rather than `#Conflict` — the
|
|
1267
1440
|
* / guardian's standing is what fell short, and no change to engram state would let them through.
|
|
1268
1441
|
*/
|
|
1269
|
-
guardianRevokeAgent: ActorMethod<[Principal],
|
|
1442
|
+
guardianRevokeAgent: ActorMethod<[Principal], Result_2>;
|
|
1270
1443
|
/**
|
|
1271
1444
|
* / The HTTP surface: canister-info JSON, OAuth discovery documents, and the MCP route's query
|
|
1272
1445
|
* / half. See the `http_request_update` twin below for what upgrades and why.
|
|
@@ -1342,7 +1515,7 @@ export interface Engram {
|
|
|
1342
1515
|
* / Owner-gated because it reports on custody posture, and answered as a Result so that a
|
|
1343
1516
|
* / wrong-identity caller gets a refusal rather than a bare `false` that reads as "no address yet".
|
|
1344
1517
|
*/
|
|
1345
|
-
isEvmAddressCached: ActorMethod<[],
|
|
1518
|
+
isEvmAddressCached: ActorMethod<[], Result_54>;
|
|
1346
1519
|
/**
|
|
1347
1520
|
* / Issue an OAuth authorization code. Called by an OAuth client's sign-in bridge
|
|
1348
1521
|
* / (an `/auth/connector`-style route) after II authentication. The client then
|
|
@@ -1351,7 +1524,7 @@ export interface Engram {
|
|
|
1351
1524
|
* /
|
|
1352
1525
|
* / Owner-only: only the engram owner can authorize a Connector install.
|
|
1353
1526
|
*/
|
|
1354
|
-
issueAuthCode: ActorMethod<[string, string, string, [] | [string]],
|
|
1527
|
+
issueAuthCode: ActorMethod<[string, string, string, [] | [string]], Result_53>;
|
|
1355
1528
|
/**
|
|
1356
1529
|
* / ⟨0.16.0⟩ `getCycleSnapshotSource` DELETED — folded into `CycleSnapshot.source`, one label per
|
|
1357
1530
|
* / ROW. A single label for a whole ring misattributes every row recorded under the other source,
|
|
@@ -1367,7 +1540,26 @@ export interface Engram {
|
|
|
1367
1540
|
* / DORMANT engram and corrupts retention math — a fabricated empty here does not just misinform a
|
|
1368
1541
|
* / reader, it feeds a wrong number into a decision about destroying data.
|
|
1369
1542
|
*/
|
|
1370
|
-
listActivitySnapshots: ActorMethod<[bigint, bigint],
|
|
1543
|
+
listActivitySnapshots: ActorMethod<[bigint, bigint], Result_52>;
|
|
1544
|
+
/**
|
|
1545
|
+
* / ⟨2026-10-21, round 11 item l — the owner's answer "round 11: a, b, c, d, e, f, g, h, i, j, k, l,
|
|
1546
|
+
* / m."⟩ OWNER-ONLY: what each agent has spent today, beside the daily limit in force for it, so the
|
|
1547
|
+
* / agent rows can say "$0.50 of $5.00 today" where they said a count of payments. Read from the
|
|
1548
|
+
* / state the payment path already keeps — `outboundSpendToday`, through `SpendCeiling.callerSpentOn`
|
|
1549
|
+
* / (the reader `x402SignFor` uses) — and the limits from `gate.getPolicy(<the agent's key>)`, the
|
|
1550
|
+
* / policy `x402SignFor` checks, on the UTC day it checks (`SpendCeiling.dayIndex`). Amounts are the
|
|
1551
|
+
* / token's minor units, as the record's `amount=` writes them. No new state.
|
|
1552
|
+
* /
|
|
1553
|
+
* / OWNER-ONLY for `getSpendCeiling`'s reason: one agent's spending is the owner's custody
|
|
1554
|
+
* / information, and would tell another agent how much it spent. Everyone else — an agent, a
|
|
1555
|
+
* / guardian, a stranger, the anonymous caller — is refused by name (`#Refused
|
|
1556
|
+
* / listAgentSpendToday: …`), never answered with zeros. Paged like `listAgents`, in its order, one
|
|
1557
|
+
* / row per agent record; a row's `spentToday` is null, not 0, where no daily limit is in force,
|
|
1558
|
+
* / because the payment path keeps no figure then (`SpendCeiling.AgentSpendRow` says why).
|
|
1559
|
+
* / WHAT WOULD MAKE THIS WRONG: `x402SignFor` keeping the per-caller total by something other than
|
|
1560
|
+
* / the calling key, or under another day boundary.
|
|
1561
|
+
*/
|
|
1562
|
+
listAgentSpendToday: ActorMethod<[bigint, bigint], Result_51>;
|
|
1371
1563
|
/**
|
|
1372
1564
|
* / ⟨0.16.0⟩ THE PAGE EXEMPLAR. Trap → `#Refused`, bare array → `Result<Page<T>>` (L1 + L3).
|
|
1373
1565
|
* /
|
|
@@ -1384,7 +1576,7 @@ export interface Engram {
|
|
|
1384
1576
|
* / `withheld` is 0: this roster is owner-only in whole, so there is no partial-visibility case.
|
|
1385
1577
|
* / A method that filters rows by caller sets it — see L1's row-level honesty rule.
|
|
1386
1578
|
*/
|
|
1387
|
-
listAgents: ActorMethod<[bigint, bigint],
|
|
1579
|
+
listAgents: ActorMethod<[bigint, bigint], Result_50>;
|
|
1388
1580
|
/**
|
|
1389
1581
|
* / The GUARDIAN-audience projection of the agent roster — three fields, not the full record.
|
|
1390
1582
|
* /
|
|
@@ -1398,7 +1590,7 @@ export interface Engram {
|
|
|
1398
1590
|
* / guardian consults BEFORE REVOKING ONE. A fabricated empty here does not merely misinform —
|
|
1399
1591
|
* / it tells someone acting under emergency powers that there is nothing to act on.
|
|
1400
1592
|
*/
|
|
1401
|
-
listAgentsForGuardian: ActorMethod<[bigint, bigint],
|
|
1593
|
+
listAgentsForGuardian: ActorMethod<[bigint, bigint], Result_49>;
|
|
1402
1594
|
/**
|
|
1403
1595
|
* / Owner-only: rows carry caller, amount, operation and free-text rationale. The SDK omits it.
|
|
1404
1596
|
* /
|
|
@@ -1412,7 +1604,7 @@ export interface Engram {
|
|
|
1412
1604
|
* /
|
|
1413
1605
|
* / Refusal reason preserved: `[]` reads as "nothing is awaiting the owner's decision".
|
|
1414
1606
|
*/
|
|
1415
|
-
listApprovalRequests: ActorMethod<[[] | [ApprovalStatus], bigint, bigint],
|
|
1607
|
+
listApprovalRequests: ActorMethod<[[] | [ApprovalStatus], bigint, bigint], Result_35>;
|
|
1416
1608
|
/**
|
|
1417
1609
|
* / ⟨0.16.0⟩ `total` IS THE HEAD COUNTER, and on this method that is the entire point.
|
|
1418
1610
|
* /
|
|
@@ -1433,8 +1625,22 @@ export interface Engram {
|
|
|
1433
1625
|
* / For the owner and a guardian `withheld` is 0 and the page is the span. WHAT WOULD MAKE THIS
|
|
1434
1626
|
* / WRONG: a reader who must see the whole record without being the owner or a guardian — the
|
|
1435
1627
|
* / public certified head is the answer for integrity, and nothing else is.
|
|
1436
|
-
|
|
1437
|
-
|
|
1628
|
+
* /
|
|
1629
|
+
* / ⟨2026-10-15, the owner's ruling 6B of 2026-10-14⟩ PUBLIC NOW, AND THE COUNT BECAME ROWS. The
|
|
1630
|
+
* / reply is a `Wire.RecordPage`: every entry in the span the reader may not see in full comes back
|
|
1631
|
+
* / as a hash-only row in `sealed` (id, SHA-256 of its body, entry hash) instead of being counted in
|
|
1632
|
+
* / `withheld`, so `items.size() + sealed.size()` is the span examined. Each entry is hashed first,
|
|
1633
|
+
* / then chained (`AuditLog`), so those rows are enough to walk from any entry to the certified
|
|
1634
|
+
* / head — which is what lets a stranger check one entry without the owner. A caller with no role,
|
|
1635
|
+
* / the anonymous caller included, is a stranger (`RecordView.readerFrom`) and gets only sealed
|
|
1636
|
+
* / rows; the owner and guardians still see every entry, an agent its own. Nothing here refuses,
|
|
1637
|
+
* / so the read's former refusal ("Anonymous caller not allowed") is gone from it.
|
|
1638
|
+
* / `ringFloor` says where the ring starts — a `start` below it begins at it — and `hashFirstFrom`
|
|
1639
|
+
* / where this record switched to the hash-first rule. A sealed row costs one SHA-256 of its body
|
|
1640
|
+
* / at read time; nothing new is stored. WHAT WOULD MAKE THIS WRONG: a sealed row carrying any part
|
|
1641
|
+
* / of a body, or a stranger reaching `items` (test/record-view.test.mo pins both).
|
|
1642
|
+
*/
|
|
1643
|
+
listAuditEntries: ActorMethod<[bigint, bigint], Result_48>;
|
|
1438
1644
|
/**
|
|
1439
1645
|
* / ⟨0.16.0, L1 + L3 — census-ruled⟩ THE TWO-MECHANISM EXCEPTION DISSOLVES.
|
|
1440
1646
|
* /
|
|
@@ -1460,7 +1666,7 @@ export interface Engram {
|
|
|
1460
1666
|
* / keeps its optional filter and applies it to the page, so no caller loses the ability to ask
|
|
1461
1667
|
* / "backups of this database" — it stops being a thing the canister has to page around.
|
|
1462
1668
|
*/
|
|
1463
|
-
listBackups: ActorMethod<[bigint, bigint],
|
|
1669
|
+
listBackups: ActorMethod<[bigint, bigint], Result_47>;
|
|
1464
1670
|
/**
|
|
1465
1671
|
* / List all bearer tokens — Active, Revoked, and Expired. Owner uses this in
|
|
1466
1672
|
* / the dashboard to show installed Connectors (claude.ai, Claude Desktop, etc.).
|
|
@@ -1472,7 +1678,7 @@ export interface Engram {
|
|
|
1472
1678
|
* / merely stopped being used is reported `#Expired`, not a stale `#Active`), so the page carries
|
|
1473
1679
|
* / the same honesty the store gained on 2026-08-17.
|
|
1474
1680
|
*/
|
|
1475
|
-
listBearerTokens: ActorMethod<[bigint, bigint],
|
|
1681
|
+
listBearerTokens: ActorMethod<[bigint, bigint], Result_46>;
|
|
1476
1682
|
/**
|
|
1477
1683
|
* / The condense checkpoints in the retained log at or above `startSeq`, oldest first.
|
|
1478
1684
|
* /
|
|
@@ -1484,7 +1690,7 @@ export interface Engram {
|
|
|
1484
1690
|
* / Owner-only like every other archive surface, and for the same structural reason: these rows
|
|
1485
1691
|
* / carry the chain positions and roots of entries whose paths were inside the hash preimage.
|
|
1486
1692
|
*/
|
|
1487
|
-
listCondenseCheckpoints: ActorMethod<[bigint, bigint],
|
|
1693
|
+
listCondenseCheckpoints: ActorMethod<[bigint, bigint], Result_45>;
|
|
1488
1694
|
/**
|
|
1489
1695
|
* / ⟨0.16.0⟩ `metrics()` DELETED — absorbed by `about()`.
|
|
1490
1696
|
* /
|
|
@@ -1493,22 +1699,13 @@ export interface Engram {
|
|
|
1493
1699
|
* / both and know which one owned each field. Every field here survives on `about()`, day-flooring
|
|
1494
1700
|
* / included.
|
|
1495
1701
|
*/
|
|
1496
|
-
listCycleSnapshots: ActorMethod<[bigint, bigint],
|
|
1702
|
+
listCycleSnapshots: ActorMethod<[bigint, bigint], Result_44>;
|
|
1497
1703
|
/**
|
|
1498
1704
|
* / Same `withheld` treatment as listMemoryFiles — the tombstone listing filtered reserved paths
|
|
1499
1705
|
* / for non-owners just as silently, and a caller could not tell a filtered tombstone list from a
|
|
1500
1706
|
* / complete one. Counted before slicing, so policy-hidden rows never blur into paging.
|
|
1501
1707
|
*/
|
|
1502
|
-
listDeletedMemoryFiles: ActorMethod<[bigint, bigint],
|
|
1503
|
-
/**
|
|
1504
|
-
* / The registered shapes — E3: encodeTypeString is the display artifact, verbatim.
|
|
1505
|
-
* / Stays on the engram under B1 (hybrid): EIP-712 signing is custody, and custody does not leave.
|
|
1506
|
-
* /
|
|
1507
|
-
* / Refusal reason preserved: `[]` reads as "this engram can sign nothing" — a claim about SIGNING
|
|
1508
|
-
* / AUTHORITY, which is not a thing to hand an unauthorized reader. The public trail of every
|
|
1509
|
-
* / registration remains the audit chain under getCertifiedAuditHead.
|
|
1510
|
-
*/
|
|
1511
|
-
listEip712Types: ActorMethod<[bigint, bigint], Result_34>;
|
|
1708
|
+
listDeletedMemoryFiles: ActorMethod<[bigint, bigint], Result_43>;
|
|
1512
1709
|
/**
|
|
1513
1710
|
* / Stays on the engram under B1 (hybrid): withdrawal custody does not leave.
|
|
1514
1711
|
* /
|
|
@@ -1518,8 +1715,34 @@ export interface Engram {
|
|
|
1518
1715
|
* / Refusal reason preserved, and it has two halves that matter separately: `[]` reads as "this
|
|
1519
1716
|
* / engram may withdraw nowhere", OR — worse — as "no allowlist is in force", which is the
|
|
1520
1717
|
* / opposite security posture. It also erases any pending 24h activation from view.
|
|
1718
|
+
* /
|
|
1719
|
+
* / ⟨2026-10-14, 4A⟩ One action's list: `typeId` names the action, and an unregistered one is
|
|
1720
|
+
* / `#NotFound` rather than an empty page (an empty page means "this action may sign to nothing").
|
|
1721
|
+
* / The item's field is `value`, not `address`: a list may hold a venue value that is no address.
|
|
1722
|
+
* / Readable by the owner, an active agent or an active guardian, as the old list was.
|
|
1521
1723
|
*/
|
|
1522
|
-
|
|
1724
|
+
listEip712Destinations: ActorMethod<[Uint8Array | number[], bigint, bigint], Result_42>;
|
|
1725
|
+
/**
|
|
1726
|
+
* / The registered shapes — E3: encodeTypeString is the display artifact, verbatim.
|
|
1727
|
+
* / Stays on the engram under B1 (hybrid): EIP-712 signing is custody, and custody does not leave.
|
|
1728
|
+
* /
|
|
1729
|
+
* / Refusal reason preserved: `[]` reads as "this engram can sign nothing" — a claim about SIGNING
|
|
1730
|
+
* / AUTHORITY, which is not a thing to hand an unauthorized reader. The public trail of every
|
|
1731
|
+
* / registration remains the audit chain under getCertifiedAuditHead.
|
|
1732
|
+
* /
|
|
1733
|
+
* / ⟨2026-10-14, the owner's ruling 3A⟩ Each row carries its per-field rules (`fieldRules`), joined in
|
|
1734
|
+
* / from `eip712FieldRules` — they are part of what the type authorises, so a reader of the list must
|
|
1735
|
+
* / not have to make a second call to learn them. The row type is `Eip712TypeView`.
|
|
1736
|
+
*/
|
|
1737
|
+
listEip712Types: ActorMethod<[bigint, bigint], Result_41>;
|
|
1738
|
+
/**
|
|
1739
|
+
* / ⟨2026-10-21, round 11 c⟩ Guardians' disputes, oldest first. Same visibility as
|
|
1740
|
+
* / `listRepudiations` and `listRecordNotes`: the owner and ACTIVE guardians read the rows; an
|
|
1741
|
+
* / agent gets an empty page whose `withheld` counts them (ruling 16 B holds — a dispute is the
|
|
1742
|
+
* / guardian's entry, not the agent's); a stranger, a pending guardian and the anonymous caller are
|
|
1743
|
+
* / refused.
|
|
1744
|
+
*/
|
|
1745
|
+
listGuardianDisputes: ActorMethod<[bigint, bigint], Result_40>;
|
|
1523
1746
|
/**
|
|
1524
1747
|
* / Accessible by owner and guardians.
|
|
1525
1748
|
* /
|
|
@@ -1528,7 +1751,7 @@ export interface Engram {
|
|
|
1528
1751
|
* / pause writes" — a claim about who can STOP it. A caller who cannot tell that from "you may not
|
|
1529
1752
|
* / see the roster" has been told the engram is unguarded when it may be fully guarded.
|
|
1530
1753
|
*/
|
|
1531
|
-
listGuardians: ActorMethod<[bigint, bigint],
|
|
1754
|
+
listGuardians: ActorMethod<[bigint, bigint], Result_39>;
|
|
1532
1755
|
/**
|
|
1533
1756
|
* / The export receipts in the retained log at or above `startSeq`, oldest first.
|
|
1534
1757
|
* /
|
|
@@ -1546,7 +1769,7 @@ export interface Engram {
|
|
|
1546
1769
|
* / Read `MemoryRouter.ReceiptPage` before reading `page.total` as a receipt count. It is not one;
|
|
1547
1770
|
* / it is the chain's length, and the declaration says why.
|
|
1548
1771
|
*/
|
|
1549
|
-
listMemoryExportReceipts: ActorMethod<[bigint, bigint],
|
|
1772
|
+
listMemoryExportReceipts: ActorMethod<[bigint, bigint], Result_38>;
|
|
1550
1773
|
/**
|
|
1551
1774
|
* / ⟨0.16.0⟩ THE `withheld` EXEMPLAR — L1 names this exact method as the defect it fixes.
|
|
1552
1775
|
* /
|
|
@@ -1563,8 +1786,17 @@ export interface Engram {
|
|
|
1563
1786
|
* / Note the count is computed from the unfiltered list before slicing, so it reports rows hidden
|
|
1564
1787
|
* / by POLICY, never rows merely off the end of this page — those are `total`'s job. Conflating
|
|
1565
1788
|
* / the two would rebuild the ambiguity in a new place.
|
|
1789
|
+
* /
|
|
1790
|
+
* / ⟨2026-10-21, the owner's round-11 answer k: an author on every file row⟩ Each row also
|
|
1791
|
+
* / carries `lastModifiedBy` (`Types.MemoryFileRow`): the key that wrote the file's current
|
|
1792
|
+
* / version, so a phone's file list can say "changed 2 h ago by Recorder" without a read per
|
|
1793
|
+
* / file. It is what `readMemory` already serves to the same callers under the same gate, so it
|
|
1794
|
+
* / tells no caller anything it could not read. Born `opt` (ADR-0018 rule 1). Looked up only for
|
|
1795
|
+
* / the rows of THIS page (`MemoryRouter.info`), after the slice, so the cost is one lookup per
|
|
1796
|
+
* / row served, never one per file stored. A WIDENED REPLY: a reader that decodes the row by
|
|
1797
|
+
* / position rather than by field name breaks — none in this repository does.
|
|
1566
1798
|
*/
|
|
1567
|
-
listMemoryFiles: ActorMethod<[bigint, bigint],
|
|
1799
|
+
listMemoryFiles: ActorMethod<[bigint, bigint], Result_37>;
|
|
1568
1800
|
/**
|
|
1569
1801
|
* / One page of the memory log, seq-ordered, optionally narrowed to one author.
|
|
1570
1802
|
* /
|
|
@@ -1591,7 +1823,7 @@ export interface Engram {
|
|
|
1591
1823
|
* / with the disclosures that make the page verifiable — the hidden-bound defect the census itself
|
|
1592
1824
|
* / names on previewCondense's row.
|
|
1593
1825
|
*/
|
|
1594
|
-
listMemoryLog: ActorMethod<[bigint, bigint, [] | [Principal]],
|
|
1826
|
+
listMemoryLog: ActorMethod<[bigint, bigint, [] | [Principal]], Result_36>;
|
|
1595
1827
|
/**
|
|
1596
1828
|
* / The caller's OWN spend-approval requests. ⟨0.16.0, L1 + L3 — fixed 2026-08-18⟩
|
|
1597
1829
|
* /
|
|
@@ -1610,7 +1842,7 @@ export interface Engram {
|
|
|
1610
1842
|
* / (The unbounded MAP is filed separately — pruning an approval record destroys evidence of what
|
|
1611
1843
|
* / was asked, which is a retention ruling rather than a shape fix.)
|
|
1612
1844
|
*/
|
|
1613
|
-
listMyApprovalRequests: ActorMethod<[bigint, bigint],
|
|
1845
|
+
listMyApprovalRequests: ActorMethod<[bigint, bigint], Result_35>;
|
|
1614
1846
|
/**
|
|
1615
1847
|
* / The payer's own sessions, live ones first. PAYER-SCOPED: a caller sees only their own, which
|
|
1616
1848
|
* / is why this needs no role — a session id is not a secret from the person who paid for it.
|
|
@@ -1621,7 +1853,7 @@ export interface Engram {
|
|
|
1621
1853
|
* / client would break on — the market paged its own pending withdrawals before its cut for the
|
|
1622
1854
|
* / same reason. The order is the order sessions were opened.
|
|
1623
1855
|
*/
|
|
1624
|
-
listMySessions: ActorMethod<[bigint, bigint],
|
|
1856
|
+
listMySessions: ActorMethod<[bigint, bigint], Result_34>;
|
|
1625
1857
|
/**
|
|
1626
1858
|
* /
|
|
1627
1859
|
* / ⟨0.16.0, L3⟩ Paged and enveloped like every other `list*`, and the envelope here is uniformity
|
|
@@ -1636,7 +1868,7 @@ export interface Engram {
|
|
|
1636
1868
|
* / IT recorded, so this chain is what a caller composes with when currency matters — which it
|
|
1637
1869
|
* / cannot do if it needs a role here.
|
|
1638
1870
|
*/
|
|
1639
|
-
listOwnershipTransfers: ActorMethod<[bigint, bigint],
|
|
1871
|
+
listOwnershipTransfers: ActorMethod<[bigint, bigint], Result_33>;
|
|
1640
1872
|
/**
|
|
1641
1873
|
* / ⟨2026-09-29, the platform's question from the build review⟩ OWNER-ONLY: how many payment
|
|
1642
1874
|
* / signatures each agent has obtained today, and the daily limit (200, `PaymentSignCap`). The
|
|
@@ -1654,7 +1886,7 @@ export interface Engram {
|
|
|
1654
1886
|
* / engram enforces for it — beside the agents, never a row among them
|
|
1655
1887
|
* / (`PaymentSignCap.marketplaceRow`). Null when no marketplace is set.
|
|
1656
1888
|
*/
|
|
1657
|
-
listPaymentSignatureCounts: ActorMethod<[bigint, bigint],
|
|
1889
|
+
listPaymentSignatureCounts: ActorMethod<[bigint, bigint], Result_32>;
|
|
1658
1890
|
/**
|
|
1659
1891
|
* / Agent records removed by a reset. Each row is a NAMED record with the fields `principal`,
|
|
1660
1892
|
* / `name`, `registeredAt` and `purgedAt` — read them BY NAME, never by position.
|
|
@@ -1696,7 +1928,7 @@ export interface Engram {
|
|
|
1696
1928
|
* / earlier ending, or the reset) — the facts `resyncAgentEdges` re-sends. The stored rows are
|
|
1697
1929
|
* / served as they are.
|
|
1698
1930
|
*/
|
|
1699
|
-
listPurgedAgents: ActorMethod<[bigint, bigint],
|
|
1931
|
+
listPurgedAgents: ActorMethod<[bigint, bigint], Result_31>;
|
|
1700
1932
|
/**
|
|
1701
1933
|
* / ⟨0.16.0⟩ ONE ACCESSOR, folding `readReadLog` and `getDenialLog` — and the fold only became
|
|
1702
1934
|
* / safe because of a change made earlier in this same leg.
|
|
@@ -1759,7 +1991,15 @@ export interface Engram {
|
|
|
1759
1991
|
* / on the chained record — the same `RecordView` filter, and `withheld` counts what it removed
|
|
1760
1992
|
* / together with what `successFilter` removed. WHAT WOULD MAKE THIS WRONG: see `listAuditEntries`.
|
|
1761
1993
|
*/
|
|
1762
|
-
listReadLog: ActorMethod<[[] | [boolean], bigint, bigint],
|
|
1994
|
+
listReadLog: ActorMethod<[[] | [boolean], bigint, bigint], Result_30>;
|
|
1995
|
+
/**
|
|
1996
|
+
* / ⟨2026-10-21, round 11 b⟩ The owner's notes, oldest first. Same visibility as
|
|
1997
|
+
* / `listRepudiations`, for the same reason: the owner and ACTIVE guardians read the rows; an agent
|
|
1998
|
+
* / reads only the entries it caused (follow-up 16 B), and every note is the owner's, so an agent
|
|
1999
|
+
* / gets an empty page whose `withheld` counts the notes in its window — never "there are none". A
|
|
2000
|
+
* / stranger, a pending guardian and the anonymous caller are refused.
|
|
2001
|
+
*/
|
|
2002
|
+
listRecordNotes: ActorMethod<[bigint, bigint], Result_29>;
|
|
1763
2003
|
/**
|
|
1764
2004
|
* / Same visibility as listAuditEntries: the owner, this engram's agents, and ACTIVE guardians
|
|
1765
2005
|
* / see disputes. An unauthorized read REFUSES — it does not return an empty list, because an
|
|
@@ -1776,7 +2016,18 @@ export interface Engram {
|
|
|
1776
2016
|
* / WOULD MAKE THIS WRONG: a ruling that an agent may see the disputes of its own writes; this would
|
|
1777
2017
|
* / then have to look up each disputed version's writer, which it does not do today.
|
|
1778
2018
|
*/
|
|
1779
|
-
listRepudiations: ActorMethod<[bigint, bigint],
|
|
2019
|
+
listRepudiations: ActorMethod<[bigint, bigint], Result_28>;
|
|
2020
|
+
/**
|
|
2021
|
+
* / ⟨2026-10-21, the owner's round-11 answer f⟩ OWNER-ONLY: the sign-ins, each with the name its app
|
|
2022
|
+
* / registered. The same tokens, in the same order and paged the same way, as `listBearerTokens`,
|
|
2023
|
+
* / each beside `clientName` — the RFC 7591 `client_name` the app registered when the token was
|
|
2024
|
+
* / issued (`People.SignIn` says when it is null, and that it is the app's own claim). A phone
|
|
2025
|
+
* / owner read "localhost" for every app signed in through a local bridge and could not tell two
|
|
2026
|
+
* / apps apart. A NEW method rather than a field on `BearerToken`: that record is stored (M0170)
|
|
2027
|
+
* / and `listBearerTokens`' reply is shipped (never widened). An agent, a guardian, a stranger and
|
|
2028
|
+
* / the anonymous caller are refused, by `listBearerTokens`' own gate and for its reason.
|
|
2029
|
+
*/
|
|
2030
|
+
listSignIns: ActorMethod<[bigint, bigint], Result_27>;
|
|
1780
2031
|
/**
|
|
1781
2032
|
* / Owner: advance the review cursor — "I have seen everything up to and including uptoAuditId"
|
|
1782
2033
|
* / (null = everything at the current head). Bounded so the attestation can never cover entries
|
|
@@ -1788,7 +2039,27 @@ export interface Engram {
|
|
|
1788
2039
|
* / and this never inspects an operation or a role. Widening what the review shows therefore
|
|
1789
2040
|
* / changes only which ids the console can pass here — it cannot desynchronise the cursor.
|
|
1790
2041
|
*/
|
|
1791
|
-
markAgentWritesReviewed: ActorMethod<[[] | [bigint]],
|
|
2042
|
+
markAgentWritesReviewed: ActorMethod<[[] | [bigint]], Result_14>;
|
|
2043
|
+
/**
|
|
2044
|
+
* / ⟨2026-10-21, the owner's round-11 answer g⟩ AN AGENT READS ITS OWN GRANT — to the calling key
|
|
2045
|
+
* / only (`People.AgentGrant`): what it may read, where it may write, its rate, and the payment
|
|
2046
|
+
* / limits enforced against that key. It reveals nothing a refusal does not already say, and lets
|
|
2047
|
+
* / an agent correct itself before it writes rather than after the owner explains a refusal by
|
|
2048
|
+
* / hand. `getSpendPolicy` and `listAgents` stay owner-only; this answers one row, the caller's.
|
|
2049
|
+
* /
|
|
2050
|
+
* / WHO: an ACTIVE agent (`Gated.authorize(#agentOrOwner)`). Refused, each by its own text: the
|
|
2051
|
+
* / owner by name (`People.OWNER_HAS_NO_GRANT`), a revoked or resigned agent ("Agent is revoked" /
|
|
2052
|
+
* / "Agent has resigned" — an ended agent may do nothing, and its old grant would read as powers),
|
|
2053
|
+
* / a guardian and a stranger ("Not authorized"), the anonymous caller. A query: it writes nothing.
|
|
2054
|
+
* /
|
|
2055
|
+
* / ⟨2026-10-29, the owner's ruling "b: fix"⟩ It also says whether the payments brake is on and what
|
|
2056
|
+
* / the key could pay now (`paymentsFrozen`, `paymentsNow`), read from the values `x402SignFor`
|
|
2057
|
+
* / checks — the brake, the key's policy and stored total, the engram-wide ceiling and total — so
|
|
2058
|
+
* / the caps alone no longer read as money an agent can spend. `People.SpendState` names each one.
|
|
2059
|
+
* / ⟨2026-10-29, review F2⟩ And which whole-key refusal stops every payment now, if one does
|
|
2060
|
+
* / (`paymentsStoppedBy`: the brake, the signing floor, the daily count of payment signatures).
|
|
2061
|
+
*/
|
|
2062
|
+
myGrant: ActorMethod<[], Result_26>;
|
|
1792
2063
|
/**
|
|
1793
2064
|
* / The AGENT's current key nominates the key that will replace it. Nothing moves yet: the new
|
|
1794
2065
|
* / key must accept, by its own call, within 24 hours (`acceptAgentKeyNomination`). One pending
|
|
@@ -1796,7 +2067,7 @@ export interface Engram {
|
|
|
1796
2067
|
* / with nothing changed, for a caller that is not an active agent here and for a key that could
|
|
1797
2068
|
* / not hold the record (`KeyReplacement.nomineeRefusal`).
|
|
1798
2069
|
*/
|
|
1799
|
-
nominateAgentKey: ActorMethod<[Principal],
|
|
2070
|
+
nominateAgentKey: ActorMethod<[Principal], Result_2>;
|
|
1800
2071
|
/**
|
|
1801
2072
|
* / An AGENT paired here asks this engram to open an engram of its own. This engram attaches 1.3 T of
|
|
1802
2073
|
* / its own cycles to the registry's `sysSpawnChild`; the agent's lasting key owns what is opened, and
|
|
@@ -1827,8 +2098,8 @@ export interface Engram {
|
|
|
1827
2098
|
* / WHAT WOULD MAKE THIS WRONG: an await added between `ChildAllowance.take` and the registry call; the
|
|
1828
2099
|
* / registry's `CHILD_MIN_ATTACHED_CYCLES` moving without `CHILD_ATTACH_CYCLES`.
|
|
1829
2100
|
*/
|
|
1830
|
-
openChildEngram: ActorMethod<[],
|
|
1831
|
-
openSession: ActorMethod<[SessionConfig, PaymentSignature],
|
|
2101
|
+
openChildEngram: ActorMethod<[], Result_25>;
|
|
2102
|
+
openSession: ActorMethod<[SessionConfig, PaymentSignature], Result_24>;
|
|
1832
2103
|
/**
|
|
1833
2104
|
* / Withdraw tokens to the owner's principal. This is the ONLY way to
|
|
1834
2105
|
* / move tokens out of the engram to an external address, and the
|
|
@@ -1836,7 +2107,7 @@ export interface Engram {
|
|
|
1836
2107
|
* / NOT freeze-gated: the owner always controls their own funds.
|
|
1837
2108
|
* / Guardian freeze only blocks agent/public operations.
|
|
1838
2109
|
*/
|
|
1839
|
-
ownerWithdraw: ActorMethod<[TokenAmount, [] | [ActionAuth]],
|
|
2110
|
+
ownerWithdraw: ActorMethod<[TokenAmount, [] | [ActionAuth]], Result_14>;
|
|
1840
2111
|
/**
|
|
1841
2112
|
* / ⟨0.16.0⟩ `payRentFromEarnings` DELETED — ruled TWICE (B1 and B2), and it was the single
|
|
1842
2113
|
* / clearest violation of the OSS/platform split in this repo.
|
|
@@ -1893,12 +2164,17 @@ export interface Engram {
|
|
|
1893
2164
|
* / engagement on the agent's track record, and what to do. Before, the reply was `#Ok` with the
|
|
1894
2165
|
* / record alone even when the registry had refused the start, so the agent was never told.
|
|
1895
2166
|
*/
|
|
1896
|
-
pairAgent: ActorMethod<[{ enrolment: Enrolment; code: string }],
|
|
2167
|
+
pairAgent: ActorMethod<[{ enrolment: Enrolment; code: string }], Result_23>;
|
|
1897
2168
|
/**
|
|
1898
2169
|
* / ⟨0.16.0, L2.2 — renamed from `guardianPauseWrites`⟩ Same correction as freezePayments above:
|
|
1899
2170
|
* / owner-or-guardian, and `resumeWrites` never carried the prefix either.
|
|
1900
2171
|
*/
|
|
1901
|
-
pauseWrites: ActorMethod<[],
|
|
2172
|
+
pauseWrites: ActorMethod<[], Result_2>;
|
|
2173
|
+
/**
|
|
2174
|
+
* / ⟨2026-10-21, the owner's round-11 answer d⟩ `pauseWrites` with a reason; everything said of
|
|
2175
|
+
* / `freezePaymentsWithReason` holds, with `canPauseWrites` as the guardian's grant.
|
|
2176
|
+
*/
|
|
2177
|
+
pauseWritesWithReason: ActorMethod<[string], Result_2>;
|
|
1902
2178
|
/**
|
|
1903
2179
|
* / What condensing through `toSeq` would do, and whether it is unlocked. COMMITS NOTHING — it is
|
|
1904
2180
|
* / a query, so it structurally cannot; a preview that wrote would be its own trap.
|
|
@@ -1919,7 +2195,7 @@ export interface Engram {
|
|
|
1919
2195
|
* / `unlocked` is the export-receipt gate ONLY. It is not a promise the condense will land: the
|
|
1920
2196
|
* / history-budget delta is checked at commit time and can still refuse a short prefix.
|
|
1921
2197
|
*/
|
|
1922
|
-
previewCondense: ActorMethod<[bigint],
|
|
2198
|
+
previewCondense: ActorMethod<[bigint], Result_22>;
|
|
1923
2199
|
/**
|
|
1924
2200
|
* / A quote for a session this caller has not opened and is not committed to — the intent a
|
|
1925
2201
|
* / buyer signs against. Pure dry run, no state, no funds.
|
|
@@ -1949,6 +2225,26 @@ export interface Engram {
|
|
|
1949
2225
|
* / `expiryNs`. Same value, same meaning; only the name carries the unit now.
|
|
1950
2226
|
*/
|
|
1951
2227
|
previewOpenSession: ActorMethod<[], SessionIntent>;
|
|
2228
|
+
/**
|
|
2229
|
+
* / ⟨2026-10-21, the owner's round-11 answer k: a trim preview⟩ What a PROPOSED history policy
|
|
2230
|
+
* / would remove from the store as it stands — "about N old copies in F files would be removed" —
|
|
2231
|
+
* / asked BEFORE the owner saves it. A query: nothing is saved, armed or evicted.
|
|
2232
|
+
* /
|
|
2233
|
+
* / WHO: the OWNER only (`#ownerOnly`). An agent, a guardian, a stranger and the anonymous caller
|
|
2234
|
+
* / are each refused with `requireOwner`'s words; the setter it previews is owner-only too.
|
|
2235
|
+
* /
|
|
2236
|
+
* / HOW: the proposal must pass the setter's own checks (`retentionEntriesRefusal`), so the preview
|
|
2237
|
+
* / never answers for a policy the setter would refuse. The guards a save would arm are computed
|
|
2238
|
+
* / exactly as the setter computes them (`RetentionPolicy.armGuards`), and each file is planned by
|
|
2239
|
+
* / the planner the sweep executes (`MemoryRouter.previewEviction` → `Retention.plan`), as the
|
|
2240
|
+
* / owner (the sweep's `maintainPrincipal`), AT THE INSTANT its guard lets go — so a rule that
|
|
2241
|
+
* / waits 14 days is counted as it will stand then, when the agent floor has released more. Per
|
|
2242
|
+
* / rule: copies, files, bytes and `notBeforeNs`. The count is "about": writes before the rule
|
|
2243
|
+
* / takes effect change it.
|
|
2244
|
+
* / HONEST WHEN CUT SHORT: `complete = false` when the planning budget
|
|
2245
|
+
* / (`MemoryRouter.PREVIEW_MAX_DROPS`) ran out — the totals are then a floor, and say so.
|
|
2246
|
+
*/
|
|
2247
|
+
previewRetention: ActorMethod<[Array<[string, RetentionClassSpec]>], Result_21>;
|
|
1952
2248
|
/**
|
|
1953
2249
|
* / Read one memory file at its current version.
|
|
1954
2250
|
* /
|
|
@@ -1965,7 +2261,7 @@ export interface Engram {
|
|
|
1965
2261
|
* / (`sessionReadContext` and the MCP reads). A caller measuring engram usage from this method
|
|
1966
2262
|
* / will measure nothing.
|
|
1967
2263
|
*/
|
|
1968
|
-
readMemory: ActorMethod<[string],
|
|
2264
|
+
readMemory: ActorMethod<[string], Result_12>;
|
|
1969
2265
|
/**
|
|
1970
2266
|
* / Read many paths in one call. Per-path Results are KEPT — partial success is the point, and
|
|
1971
2267
|
* / one unreadable path must not fail the other nine.
|
|
@@ -1983,7 +2279,7 @@ export interface Engram {
|
|
|
1983
2279
|
* / path, each with its own Result — a refused RESERVED path sits beside a readable one, which is
|
|
1984
2280
|
* / a genuine per-path fact.
|
|
1985
2281
|
*/
|
|
1986
|
-
readMemoryBatch: ActorMethod<[Array<string>],
|
|
2282
|
+
readMemoryBatch: ActorMethod<[Array<string>], Result_20>;
|
|
1987
2283
|
/**
|
|
1988
2284
|
* / ⟨0.16.0⟩ `getMemoryRetentionGuards` DELETED — folded into `getMemoryRetentionPolicy` above.
|
|
1989
2285
|
* / It was the second L2.1 array-returning `get*`, and separating it from the policy it modifies
|
|
@@ -1995,7 +2291,7 @@ export interface Engram {
|
|
|
1995
2291
|
* / see it cannot know whether it has the whole range, which is how silent truncation gets
|
|
1996
2292
|
* / reintroduced. Loop while `more` is true, advancing by the bytes actually returned.
|
|
1997
2293
|
*/
|
|
1998
|
-
readMemoryBytes: ActorMethod<[string, bigint, bigint, [] | [bigint]],
|
|
2294
|
+
readMemoryBytes: ActorMethod<[string, bigint, bigint, [] | [bigint]], Result_19>;
|
|
1999
2295
|
/**
|
|
2000
2296
|
* / The escrow exit for a session whose settle cannot pay.
|
|
2001
2297
|
* /
|
|
@@ -2051,8 +2347,16 @@ export interface Engram {
|
|
|
2051
2347
|
* / the transfer pays its own fee from the escrow. A session still reads `closing` only when its
|
|
2052
2348
|
* / close trapped after one of its awaits, or an earlier version left it there, and of that one the
|
|
2053
2349
|
* / line above still holds.
|
|
2350
|
+
* /
|
|
2351
|
+
* / ⟨2026-10-07, the owner's decision of that day⟩ WHAT IT ANSWERS: what came back. `amountE6` is
|
|
2352
|
+
* / the ckUSDC base units transferred to the payer's own account (the amount asked, capped at the
|
|
2353
|
+
* / session's unconsumed deposit; the transfer's fee comes out of the escrow on top), and
|
|
2354
|
+
* / `blockIndex` is the ledger block of that transfer. Until this date it answered a bare `nat` that
|
|
2355
|
+
* / was the block index alone, which read as the amount. If the session's record is removed before
|
|
2356
|
+
* / the amount can be read back — a session closed in the same moment as the recovery and cleaned up
|
|
2357
|
+
* / during its transfer — it answers `#Other` naming the block, never a guessed amount.
|
|
2054
2358
|
*/
|
|
2055
|
-
recoverEscrow: ActorMethod<[string, bigint],
|
|
2359
|
+
recoverEscrow: ActorMethod<[string, bigint], Result_18>;
|
|
2056
2360
|
/**
|
|
2057
2361
|
* / ⟨0.16.0, L1⟩ A REDEMPTION PATH, where the arm choice is a disclosure decision.
|
|
2058
2362
|
* /
|
|
@@ -2068,7 +2372,7 @@ export interface Engram {
|
|
|
2068
2372
|
* / owner's invite gave them and that they cannot act until approved; before, that took a second
|
|
2069
2373
|
* / read they had no reason to know to make.
|
|
2070
2374
|
*/
|
|
2071
|
-
registerGuardian: ActorMethod<[string],
|
|
2375
|
+
registerGuardian: ActorMethod<[string], Result_17>;
|
|
2072
2376
|
/**
|
|
2073
2377
|
* / Remove a per-caller override so that caller reverts to — and keeps TRACKING — the global caps.
|
|
2074
2378
|
* /
|
|
@@ -2076,7 +2380,12 @@ export interface Engram {
|
|
|
2076
2380
|
* / override is to overwrite it with a frozen copy of the global policy, which then stops
|
|
2077
2381
|
* / following later changes. That makes every override permanent in effect.
|
|
2078
2382
|
*/
|
|
2079
|
-
removeCallerSpendPolicy: ActorMethod<[Principal],
|
|
2383
|
+
removeCallerSpendPolicy: ActorMethod<[Principal], Result_2>;
|
|
2384
|
+
/**
|
|
2385
|
+
* / ⟨2026-10-14, 4A⟩ Remove a destination from one action's list. Instant, and NOT freeze-gated:
|
|
2386
|
+
* / removal TIGHTENS, and a frozen engram must still be able to shrink what it could sign to.
|
|
2387
|
+
*/
|
|
2388
|
+
removeEip712Destination: ActorMethod<[Uint8Array | number[], string], Result_2>;
|
|
2080
2389
|
/**
|
|
2081
2390
|
* / De-register a type that has NEVER SIGNED. Exists because of a hazard the first external
|
|
2082
2391
|
* / validation found within hours (consumer report, 2026-08-06): a bare-name #standard registration —
|
|
@@ -2087,9 +2396,10 @@ export interface Engram {
|
|
|
2087
2396
|
* / removes only authority that was never exercised, which is removing nothing but the mistake.
|
|
2088
2397
|
* / NOT freeze-gated, same reasoning as removeEvmWithdrawDestination: this is TIGHTENING, and a
|
|
2089
2398
|
* / frozen engram must still be able to shrink what it could sign.
|
|
2399
|
+
* / ⟨2026-10-14⟩ `removeEvmWithdrawDestination` is now `removeEip712Destination` (ruling 4A); same
|
|
2400
|
+
* / reasoning. Removing a type now also drops its rules and its own destination list.
|
|
2090
2401
|
*/
|
|
2091
|
-
removeEip712Type: ActorMethod<[Uint8Array | number[]],
|
|
2092
|
-
removeEvmWithdrawDestination: ActorMethod<[string], Result_1>;
|
|
2402
|
+
removeEip712Type: ActorMethod<[Uint8Array | number[]], Result_2>;
|
|
2093
2403
|
/**
|
|
2094
2404
|
* / Owner-only: remove a guardian from the roster.
|
|
2095
2405
|
* /
|
|
@@ -2100,13 +2410,26 @@ export interface Engram {
|
|
|
2100
2410
|
* / `#NotFound` rather than `#Refused` when there is no such guardian: only the owner reaches this
|
|
2101
2411
|
* / line, so the roster is theirs and its contents are not a secret being withheld from them.
|
|
2102
2412
|
*/
|
|
2103
|
-
removeGuardian: ActorMethod<[Principal],
|
|
2413
|
+
removeGuardian: ActorMethod<[Principal], Result_2>;
|
|
2414
|
+
/**
|
|
2415
|
+
* / ⟨2026-10-21, the owner's round-11 answer a⟩ OWNER-ONLY: give an agent a new name. A name was
|
|
2416
|
+
* / fixed at the invite, and two agents both called "agent" is how the 2026-10-20 session started.
|
|
2417
|
+
* / Only the VALUE of the stored `AgentRecord.name` changes — no new state, no reshaped record —
|
|
2418
|
+
* / and the change is on the record as `agent.rename` (`principal=<key> name=<new name>`, the name
|
|
2419
|
+
* / last). An ended agent may be renamed too (`People.renameTarget` says why).
|
|
2420
|
+
* / Refused: an agent (itself included), a guardian and a stranger by `requireOwner`'s "Not owner",
|
|
2421
|
+
* / the anonymous caller by its own text; a name that is empty, over `MAX_NAME_LENGTH` or holds a
|
|
2422
|
+
* / line break is `#Invalid` (`People.nameRefusal`); an unknown key is `#NotFound`; the agent's
|
|
2423
|
+
* / current name is `#Conflict`. Nothing changes on any refusal. Not alerted: the owner is the one
|
|
2424
|
+
* / renaming (`ActionAlerts.classify` answers null for `agent.rename`).
|
|
2425
|
+
*/
|
|
2426
|
+
renameAgent: ActorMethod<[Principal, string], Result_2>;
|
|
2104
2427
|
/**
|
|
2105
2428
|
* / Owner disavows a specific memory write, in the open. Marks — never deletes: the content and
|
|
2106
2429
|
* / the original audit entry stay exactly where they were; this appends a chained
|
|
2107
2430
|
* / `memory.repudiate` entry and lists the (path, version) so readers can see the dispute.
|
|
2108
2431
|
*/
|
|
2109
|
-
repudiateMemoryWrite: ActorMethod<[string, bigint, string],
|
|
2432
|
+
repudiateMemoryWrite: ActorMethod<[string, bigint, string], Result_14>;
|
|
2110
2433
|
/**
|
|
2111
2434
|
* / ⚠ OWNER-ONLY BULK RESET. Destructive, and wider than its name suggests.
|
|
2112
2435
|
* /
|
|
@@ -2136,7 +2459,7 @@ export interface Engram {
|
|
|
2136
2459
|
* / long-lived enough for the rent model to apply, the reset entry is not guaranteed to still be
|
|
2137
2460
|
* / there. `agentPurgeLog` is the evidence that does not age out — which is why it exists.
|
|
2138
2461
|
*/
|
|
2139
|
-
resetEngram: ActorMethod<[],
|
|
2462
|
+
resetEngram: ActorMethod<[], Result_16>;
|
|
2140
2463
|
/**
|
|
2141
2464
|
* / ⟨2026-09-28, owner decision: an agent can resign from an engram, and the resignation is
|
|
2142
2465
|
* / recorded⟩ The AGENT ends its own engagement with this engram.
|
|
@@ -2157,13 +2480,13 @@ export interface Engram {
|
|
|
2157
2480
|
* / that is down cannot leave the agent half-resigned; a missed notice is logged by
|
|
2158
2481
|
* / `notifyRegistryAgentEdge`. WHAT WOULD MAKE THIS WRONG: a second path that sets `#Resigned`.
|
|
2159
2482
|
*/
|
|
2160
|
-
resignAgent: ActorMethod<[],
|
|
2483
|
+
resignAgent: ActorMethod<[], Result_2>;
|
|
2161
2484
|
/**
|
|
2162
2485
|
* / OWNER-ONLY release of the write pause, with the same one-way shape as `unfreezePayments`: a
|
|
2163
2486
|
* / guardian holding `canPauseWrites` can stop writes without the owner and cannot restart them,
|
|
2164
2487
|
* / and the owner can always restart them. A tripwire rather than a lock.
|
|
2165
2488
|
*/
|
|
2166
|
-
resumeWrites: ActorMethod<[],
|
|
2489
|
+
resumeWrites: ActorMethod<[], Result_2>;
|
|
2167
2490
|
/**
|
|
2168
2491
|
* / Self-heal: re-send every ACTIVE agent's start to the spawning registry (idempotent — the
|
|
2169
2492
|
* / registry mints no duplicate for an open engagement), for when a notice was missed. Owner-only.
|
|
@@ -2188,13 +2511,13 @@ export interface Engram {
|
|
|
2188
2511
|
* / each such engagement under `cannotBeRecorded` (key, root, invite, and how and when it ended),
|
|
2189
2512
|
* / apart from `notRecorded`, so the owner sees them rather than silence.
|
|
2190
2513
|
*/
|
|
2191
|
-
resyncAgentEdges: ActorMethod<[],
|
|
2514
|
+
resyncAgentEdges: ActorMethod<[], Result_15>;
|
|
2192
2515
|
/**
|
|
2193
2516
|
* / Return to managed custody: the engram adds the registry back as a controller ALONGSIDE the
|
|
2194
2517
|
* / owner — it does not remove the owner. The inverse of `claimSovereignty`, and the reason
|
|
2195
2518
|
* / sovereignty is not a one-way door.
|
|
2196
2519
|
*/
|
|
2197
|
-
returnToManaged: ActorMethod<[],
|
|
2520
|
+
returnToManaged: ActorMethod<[], Result_2>;
|
|
2198
2521
|
/**
|
|
2199
2522
|
* / Replace the whole content of an EXISTING file.
|
|
2200
2523
|
* /
|
|
@@ -2231,7 +2554,7 @@ export interface Engram {
|
|
|
2231
2554
|
* /
|
|
2232
2555
|
* / To narrow what an agent may do rather than end its access, use `setAgentPermissions`.
|
|
2233
2556
|
*/
|
|
2234
|
-
revokeAgent: ActorMethod<[Principal],
|
|
2557
|
+
revokeAgent: ActorMethod<[Principal], Result_2>;
|
|
2235
2558
|
/**
|
|
2236
2559
|
* / Owner-only panic button: revoke EVERY active agent at once. Returns how many were revoked.
|
|
2237
2560
|
* /
|
|
@@ -2250,7 +2573,7 @@ export interface Engram {
|
|
|
2250
2573
|
* / that fails leaves the agents revoked here regardless — a partial notify is not a partial
|
|
2251
2574
|
* / revocation, which is the direction that matters for a panic button.
|
|
2252
2575
|
*/
|
|
2253
|
-
revokeAllAgents: ActorMethod<[],
|
|
2576
|
+
revokeAllAgents: ActorMethod<[], Result_14>;
|
|
2254
2577
|
/**
|
|
2255
2578
|
* / Owner-only panic button: revoke every connector bearer token at once. Returns how many.
|
|
2256
2579
|
* /
|
|
@@ -2261,7 +2584,7 @@ export interface Engram {
|
|
|
2261
2584
|
* /
|
|
2262
2585
|
* / Tokens are re-issuable: revoking them is not permanent the way revoking an agent is.
|
|
2263
2586
|
*/
|
|
2264
|
-
revokeAllBearerTokens: ActorMethod<[],
|
|
2587
|
+
revokeAllBearerTokens: ActorMethod<[], Result_14>;
|
|
2265
2588
|
/**
|
|
2266
2589
|
* / ⟨0.16.0⟩ `removeAllGuardians` DELETED — test-only (L6), and verified NOT part of KILL-SWITCH's
|
|
2267
2590
|
* / mass-revoke set. The destructive phase-07 suite iterates `removeGuardian` instead, so nothing
|
|
@@ -2275,12 +2598,12 @@ export interface Engram {
|
|
|
2275
2598
|
* / Unlike revoking an agent, this costs nothing permanently — an invite is a one-time code,
|
|
2276
2599
|
* / so voiding it and minting a fresh one is the ordinary path.
|
|
2277
2600
|
*/
|
|
2278
|
-
revokeAllInvites: ActorMethod<[],
|
|
2601
|
+
revokeAllInvites: ActorMethod<[], Result_14>;
|
|
2279
2602
|
/**
|
|
2280
2603
|
* / Revoke a bearer token by its public tokenId. Idempotent.
|
|
2281
2604
|
* / Subsequent /mcp requests using this token will be rejected.
|
|
2282
2605
|
*/
|
|
2283
|
-
revokeBearerToken: ActorMethod<[string],
|
|
2606
|
+
revokeBearerToken: ActorMethod<[string], Result_2>;
|
|
2284
2607
|
/**
|
|
2285
2608
|
* / ⟨0.16.0, census §10 item 16⟩ RETURNS A REAL RECEIPT, not `R<()>` — same reason as the delete
|
|
2286
2609
|
* / above, and sharper here: a rollback WRITES A NEW VERSION, so the caller's next question is
|
|
@@ -2307,16 +2630,7 @@ export interface Engram {
|
|
|
2307
2630
|
* / agent on that record, so its standing is not the problem — the record's state is. An
|
|
2308
2631
|
* / agent reading `#Refused` would go looking for a permission that was never missing.
|
|
2309
2632
|
*/
|
|
2310
|
-
rotateAgentKeyHash: ActorMethod<[string],
|
|
2311
|
-
/**
|
|
2312
|
-
* / One-time onboarding seed: writes a starter file so the first read-back is non-empty.
|
|
2313
|
-
* /
|
|
2314
|
-
* / Owner-only, and it REFUSES once any memory exists — so it can only ever add the initial
|
|
2315
|
-
* / placeholder and can never overwrite real content. Deliberately NOT counted as a write (no
|
|
2316
|
-
* / `totalMemoryWrites`, no `firstWriteAt`): it is a system seed rather than activity, and
|
|
2317
|
-
* / counting it would corrupt both the write metrics and time-to-first-write for every engram.
|
|
2318
|
-
*/
|
|
2319
|
-
seedMemory: ActorMethod<[string, Uint8Array | number[]], Result>;
|
|
2633
|
+
rotateAgentKeyHash: ActorMethod<[string], Result_2>;
|
|
2320
2634
|
/**
|
|
2321
2635
|
* / Append to a memory file against a PAID x402 session voucher — the write half of the paid rail,
|
|
2322
2636
|
* / authorized by the voucher rather than by a role.
|
|
@@ -2363,7 +2677,7 @@ export interface Engram {
|
|
|
2363
2677
|
* / CIPHERTEXT; the key-holding SDK decrypts it. A caller without the key gets bytes it cannot
|
|
2364
2678
|
* / read, not an error.
|
|
2365
2679
|
*/
|
|
2366
|
-
sessionReadContext: ActorMethod<[string],
|
|
2680
|
+
sessionReadContext: ActorMethod<[string], Result_13>;
|
|
2367
2681
|
/**
|
|
2368
2682
|
* / Read one memory file against a PAID x402 session voucher. No role, no invite — the voucher is
|
|
2369
2683
|
* / the authorization, which is what makes this the engram's one rail a stranger can pay to use.
|
|
@@ -2395,16 +2709,17 @@ export interface Engram {
|
|
|
2395
2709
|
* / cent voucher could read `secrets/*`.
|
|
2396
2710
|
* / · Payments are frozen on this engram.
|
|
2397
2711
|
*/
|
|
2398
|
-
sessionReadMemory: ActorMethod<[Voucher, string],
|
|
2712
|
+
sessionReadMemory: ActorMethod<[Voucher, string], Result_12>;
|
|
2399
2713
|
/**
|
|
2400
2714
|
* / Configure action alerts: an https webhook that receives new chained-audit entries matching the
|
|
2401
2715
|
* / enabled event classes (money / approvals / guardian / agentWrites), batched, at most one
|
|
2402
|
-
* / POST per minute.
|
|
2716
|
+
* / POST per minute. ⟨2026-10-29⟩ Delivered within seconds of the action (a 5 s batch window), and
|
|
2717
|
+
* / nothing runs while nothing is owed. Owner-only. Payloads carry audit METADATA (operation, caller, role, bounded
|
|
2403
2718
|
* / details) — never memory file contents. Setting a URL (re)arms delivery FROM NOW: the cursor
|
|
2404
2719
|
* / jumps to the current end of the log so history is not replayed. Passing url = null disables.
|
|
2405
2720
|
* / The URL itself is never written to the audit log (webhook URLs often embed secret tokens).
|
|
2406
2721
|
*/
|
|
2407
|
-
setActionAlertConfig: ActorMethod<[AlertConfig],
|
|
2722
|
+
setActionAlertConfig: ActorMethod<[AlertConfig], Result_2>;
|
|
2408
2723
|
/**
|
|
2409
2724
|
* / Owner-only: replace an existing agent's permission set. The way to NARROW what an agent
|
|
2410
2725
|
* / may do without ending their access — `revokeAgent` is terminal for that principal, this is
|
|
@@ -2421,7 +2736,7 @@ export interface Engram {
|
|
|
2421
2736
|
* / forward is to grant read to your own agents instead, or to switch to Connected mode first —
|
|
2422
2737
|
* / both of which the message says.
|
|
2423
2738
|
*/
|
|
2424
|
-
setAgentPermissions: ActorMethod<[Principal, AgentPermissions],
|
|
2739
|
+
setAgentPermissions: ActorMethod<[Principal, AgentPermissions], Result_2>;
|
|
2425
2740
|
/**
|
|
2426
2741
|
* / Paths an agent holding a grant may REVISE rather than only append to.
|
|
2427
2742
|
* /
|
|
@@ -2431,7 +2746,7 @@ export interface Engram {
|
|
|
2431
2746
|
* / for that. What a bare prefix would do — "MEMORY.md" also matching "MEMORY.md.bak" — is the
|
|
2432
2747
|
* / kind of accident a permission surface must not have.
|
|
2433
2748
|
*/
|
|
2434
|
-
setAgentRevisablePaths: ActorMethod<[Array<string>],
|
|
2749
|
+
setAgentRevisablePaths: ActorMethod<[Array<string>], Result_2>;
|
|
2435
2750
|
/**
|
|
2436
2751
|
* / ⟨0.16.0 — census row⟩ Returns the APPLIED config, which is how this closes the
|
|
2437
2752
|
* / setter-without-a-getter gap without adding a method: the write is the read.
|
|
@@ -2441,12 +2756,18 @@ export interface Engram {
|
|
|
2441
2756
|
* / called it an "ops floor: retention enforcement deletes owner backup data silently", mitigated
|
|
2442
2757
|
* / by a `Debug.print` nobody reads. An owner lowering the cap is destroying their own backups;
|
|
2443
2758
|
* / they are told how many, in the reply and in the audit line.
|
|
2759
|
+
* /
|
|
2760
|
+
* / ⟨2026-10-21, the owner's round-11 answers h and m⟩ The number now bounds EACH creator's
|
|
2761
|
+
* / backups of the kind (`Backup.enforceRetention`): an agent's finalize prunes only that agent's
|
|
2762
|
+
* / own, and this setter applies the number to every creator's set, so `prunedBackups` counts
|
|
2763
|
+
* / across all of them. "The write is the read" above went stale for a second phone, which never
|
|
2764
|
+
* / made the write: `getBackupRetention` is the read.
|
|
2444
2765
|
*/
|
|
2445
|
-
setBackupRetention: ActorMethod<[string, bigint],
|
|
2766
|
+
setBackupRetention: ActorMethod<[string, bigint], Result_11>;
|
|
2446
2767
|
/**
|
|
2447
2768
|
* / Override the caps for ONE caller — an agent this owner trusts more, or less, than the rest.
|
|
2448
2769
|
*/
|
|
2449
|
-
setCallerSpendPolicy: ActorMethod<[Principal, SpendingPolicy],
|
|
2770
|
+
setCallerSpendPolicy: ActorMethod<[Principal, SpendingPolicy], Result_2>;
|
|
2450
2771
|
/**
|
|
2451
2772
|
* / Owner-only: set how many engrams `agentPrincipal`'s agent may open of its own through this
|
|
2452
2773
|
* / engram. Kept by the agent's lasting key, so it carries over a key replacement. Any count is
|
|
@@ -2459,7 +2780,7 @@ export interface Engram {
|
|
|
2459
2780
|
* / alerts' money class (`ActionAlerts.classify`), so an owner or guardian with an alert channel
|
|
2460
2781
|
* / hears of it.
|
|
2461
2782
|
*/
|
|
2462
|
-
setChildAllowance: ActorMethod<[Principal, bigint],
|
|
2783
|
+
setChildAllowance: ActorMethod<[Principal, bigint], Result_2>;
|
|
2463
2784
|
/**
|
|
2464
2785
|
* / ⟨0.16.0⟩ `getEncryptedMemoryKeyForEpoch` DELETED — folded into `getEncryptedMemoryKey`'s epoch
|
|
2465
2786
|
* / argument — see that method for the fold and the `null`-means-CURRENT rule.
|
|
@@ -2484,7 +2805,7 @@ export interface Engram {
|
|
|
2484
2805
|
* / Private mode also closes the paid read rail by construction: a paid session holds no key, so
|
|
2485
2806
|
* / `sessionReadMemory` refuses on an encrypted engram whatever `setPaidMemoryReadEnabled` says.
|
|
2486
2807
|
*/
|
|
2487
|
-
setEncryptionEnabled: ActorMethod<[boolean],
|
|
2808
|
+
setEncryptionEnabled: ActorMethod<[boolean], Result_2>;
|
|
2488
2809
|
/**
|
|
2489
2810
|
* / Register the owner's EVM address for withdrawals.
|
|
2490
2811
|
* /
|
|
@@ -2497,16 +2818,21 @@ export interface Engram {
|
|
|
2497
2818
|
* / The guardian doesn't approve the change — the owner is sovereign.
|
|
2498
2819
|
* / The guardian's existence is the gate, not their active consent.
|
|
2499
2820
|
*/
|
|
2500
|
-
setEvmOwnerAddress: ActorMethod<[string],
|
|
2821
|
+
setEvmOwnerAddress: ActorMethod<[string], Result_2>;
|
|
2501
2822
|
/**
|
|
2502
2823
|
* / A guardian arms their OWN webhook over the guarded engram's audit stream (same event
|
|
2503
2824
|
* / classes and payload as the owner channel — audit metadata, never memory file contents;
|
|
2504
2825
|
* / the guardian honesty rail: integrity, not content). Active guardians only. Arming starts
|
|
2505
2826
|
* / from NOW (no history replay); url = null disarms and frees the slot.
|
|
2506
2827
|
*/
|
|
2507
|
-
setGuardianAlertConfig: ActorMethod<[AlertConfig],
|
|
2828
|
+
setGuardianAlertConfig: ActorMethod<[AlertConfig], Result_2>;
|
|
2508
2829
|
/**
|
|
2509
|
-
* / Per-prefix retention policy.
|
|
2830
|
+
* / Per-prefix retention policy. The longest rule that covers a path wins; anything uncovered
|
|
2831
|
+
* / keeps everything.
|
|
2832
|
+
* /
|
|
2833
|
+
* / ⟨2026-10-21, the owner's round-11 answer i⟩ "Covers" is the folder matcher
|
|
2834
|
+
* / (`AgentPaths.covers`, through `RetentionPolicy.resolve`): a rule ending in "/" governs
|
|
2835
|
+
* / everything beneath it, any other rule exactly one path. It was bare text prefix until that day.
|
|
2510
2836
|
* /
|
|
2511
2837
|
* / A CHANGE does not take effect immediately, in EITHER direction: every prefix whose EFFECTIVE
|
|
2512
2838
|
* / class moves is guarded for the same window as the agent floor, so history cannot be
|
|
@@ -2515,7 +2841,7 @@ export interface Engram {
|
|
|
2515
2841
|
* / (RetentionPolicy.mo) guards any change it sees. That is the conservative reading, and its
|
|
2516
2842
|
* / only cost is a delay on keeping MORE, which destroys nothing.
|
|
2517
2843
|
*/
|
|
2518
|
-
setMemoryRetentionPolicy: ActorMethod<[Array<[string, RetentionClassSpec]>],
|
|
2844
|
+
setMemoryRetentionPolicy: ActorMethod<[Array<[string, RetentionClassSpec]>], Result_2>;
|
|
2519
2845
|
/**
|
|
2520
2846
|
* / Owner-only: open or close the monetized read rail. When disabled (the default), sessionReadMemory
|
|
2521
2847
|
* / fails closed for every voucher-bearer — selling the owner's memory is opt-in, not the default.
|
|
@@ -2528,7 +2854,7 @@ export interface Engram {
|
|
|
2528
2854
|
* / `getEngramCard`'s `x402Support` reports THIS flag, so a buyer can read the rail's state before
|
|
2529
2855
|
* / paying rather than discovering it in a refusal.
|
|
2530
2856
|
*/
|
|
2531
|
-
setPaidMemoryReadEnabled: ActorMethod<[boolean],
|
|
2857
|
+
setPaidMemoryReadEnabled: ActorMethod<[boolean], Result_2>;
|
|
2532
2858
|
/**
|
|
2533
2859
|
* / Open or close the paid-memory WRITE rail (RB4). Owner-only, like its read twin.
|
|
2534
2860
|
* /
|
|
@@ -2537,7 +2863,7 @@ export interface Engram {
|
|
|
2537
2863
|
* / the larger permission ride in on the smaller one. Two flags is the shape that lets an owner
|
|
2538
2864
|
* / say yes to one and no to the other, which is the common case.
|
|
2539
2865
|
*/
|
|
2540
|
-
setPaidMemoryWriteEnabled: ActorMethod<[boolean],
|
|
2866
|
+
setPaidMemoryWriteEnabled: ActorMethod<[boolean], Result_2>;
|
|
2541
2867
|
/**
|
|
2542
2868
|
* / ⟨0.16.0, L1⟩ Every validation refusal here is `#Invalid` and the cap is `#Conflict`, and the
|
|
2543
2869
|
* / split is worth stating once for the whole whole-value-config family below: a malformed path is
|
|
@@ -2545,7 +2871,7 @@ export interface Engram {
|
|
|
2545
2871
|
* / this engram that no argument gets around. A caller that cannot tell those apart either edits
|
|
2546
2872
|
* / forever or gives up on a request that was one character from valid.
|
|
2547
2873
|
*/
|
|
2548
|
-
setProtectedPaths: ActorMethod<[Array<string>],
|
|
2874
|
+
setProtectedPaths: ActorMethod<[Array<string>], Result_2>;
|
|
2549
2875
|
/**
|
|
2550
2876
|
* / OWNER-ONLY: switch the metrics reader's read of the seat weeks off (`false`) or back on (`true`).
|
|
2551
2877
|
* / On from birth, by the owner's ruling of 2026-10-02. Off, `sysGetAgentSeatWeeks` refuses the
|
|
@@ -2553,7 +2879,7 @@ export interface Engram {
|
|
|
2553
2879
|
* / call is a chained record entry (`metrics.setSeatWeeksReadEnabled`, the new and the old value), so
|
|
2554
2880
|
* / when the read was on or off is part of the record. Anyone else is refused by name.
|
|
2555
2881
|
*/
|
|
2556
|
-
setSeatWeeksReadEnabled: ActorMethod<[boolean],
|
|
2882
|
+
setSeatWeeksReadEnabled: ActorMethod<[boolean], Result_2>;
|
|
2557
2883
|
/**
|
|
2558
2884
|
* / Set the most this engram may spend per day ACROSS EVERY CALLER — five agents, the owner and the
|
|
2559
2885
|
* / marketplace together. `null` removes the ceiling. ⟨2026-09-28⟩
|
|
@@ -2564,6 +2890,10 @@ export interface Engram {
|
|
|
2564
2890
|
* / bounded instead by each registered type's daily count and destination list; and agent-
|
|
2565
2891
|
* / registration transactions (`signEngramRegistration`), bounded by three per caller per day and
|
|
2566
2892
|
* / the 500-gwei gas ceiling. Whether the ceiling should cover them is a separate owner question.⟩
|
|
2893
|
+
* / ⟨2026-10-14, the owner's rulings 3A, 4A and 5A⟩ Typed-data signatures are now bounded by each
|
|
2894
|
+
* / registered type's daily count, its per-field rules ("at most N", "must equal X") and ITS OWN
|
|
2895
|
+
* / destination list, and the signing floor (`SigningFloor`) guards them as it guards x402 payments.
|
|
2896
|
+
* / They are still not counted against this ceiling.
|
|
2567
2897
|
* /
|
|
2568
2898
|
* / WHY: the owner decided on 2026-09-28 to add one daily spending ceiling across all callers on an
|
|
2569
2899
|
* / engram and keep the limit of five agents. Every other spending limit is per caller, so without
|
|
@@ -2593,7 +2923,7 @@ export interface Engram {
|
|
|
2593
2923
|
* / distinguishable from a tightening afterwards — the reason `spend.setPolicy` records its limits.
|
|
2594
2924
|
* / Not blocked by a payments freeze, like `setSpendPolicy`: setting a limit moves no money.
|
|
2595
2925
|
*/
|
|
2596
|
-
setSpendCeiling: ActorMethod<[[] | [bigint]],
|
|
2926
|
+
setSpendCeiling: ActorMethod<[[] | [bigint]], Result_2>;
|
|
2597
2927
|
/**
|
|
2598
2928
|
* / Set this engram's spending caps.
|
|
2599
2929
|
* /
|
|
@@ -2605,7 +2935,7 @@ export interface Engram {
|
|
|
2605
2935
|
* / the escalation an agent starts when it hits a limit, and without it the queue is a place
|
|
2606
2936
|
* / requests go to expire.
|
|
2607
2937
|
*/
|
|
2608
|
-
setSpendPolicy: ActorMethod<[SpendingPolicy],
|
|
2938
|
+
setSpendPolicy: ActorMethod<[SpendingPolicy], Result_2>;
|
|
2609
2939
|
/**
|
|
2610
2940
|
* / Owner-only: set YOUR OWN safety rails on the funding path — a per-top-up ckUSDC ceiling and a
|
|
2611
2941
|
* / minimum gap between top-ups. Read them back with `getTopUpLimits`.
|
|
@@ -2627,14 +2957,14 @@ export interface Engram {
|
|
|
2627
2957
|
* / `{ cooldownSeconds; maxCkusdcE6s }`. Setter and getter now share one shape, so read-modify-
|
|
2628
2958
|
* / write is expressible and neither side can drift from the other without the compiler saying so.
|
|
2629
2959
|
*/
|
|
2630
|
-
setTopUpLimits: ActorMethod<[{ cooldownSeconds: bigint; maxCkusdcE6s: bigint }],
|
|
2960
|
+
setTopUpLimits: ActorMethod<[{ cooldownSeconds: bigint; maxCkusdcE6s: bigint }], Result_2>;
|
|
2631
2961
|
/**
|
|
2632
2962
|
* / Owner sets the World ID app_id + action + rp_id from their World Developer Portal (rp_id appears
|
|
2633
2963
|
* / after "Enable World ID 4.0" on a production app). The action MUST be configured there with
|
|
2634
2964
|
* / max_verifications = Unlimited (idempotent /verify → survives IC consensus). After setting this,
|
|
2635
2965
|
* / register getWorldIdRpSignerAddress() as the rp_id's signer address in the Portal.
|
|
2636
2966
|
*/
|
|
2637
|
-
setWorldIdConfig: ActorMethod<[string, string, string],
|
|
2967
|
+
setWorldIdConfig: ActorMethod<[string, string, string], Result_2>;
|
|
2638
2968
|
/**
|
|
2639
2969
|
* / Submit a verified-human proof: the IDKitResult from the frontend's World ID flow, forwarded
|
|
2640
2970
|
* / VERBATIM (compact JSON, as JSON.stringify emits) to World's /api/v4/verify/{rp_id} over an HTTPS
|
|
@@ -2645,7 +2975,7 @@ export interface Engram {
|
|
|
2645
2975
|
* / (selfie is farmable, passport/mnc are document identity — a different tier). Sets worldIdVerified
|
|
2646
2976
|
* / and stores the result ONLY on a real verification success — never self-asserted.
|
|
2647
2977
|
*/
|
|
2648
|
-
setWorldIdProof: ActorMethod<[string, string],
|
|
2978
|
+
setWorldIdProof: ActorMethod<[string, string], Result_2>;
|
|
2649
2979
|
/**
|
|
2650
2980
|
* / Sign a registered type. ONE call, owner-only, freeze-gated — the delay lives on registration
|
|
2651
2981
|
* / (D2), never here: an emergency withdrawal must not need two owner round-trips.
|
|
@@ -2654,7 +2984,7 @@ export interface Engram {
|
|
|
2654
2984
|
* / not lose the ability to sign because a marketplace gained it, and the two share every control
|
|
2655
2985
|
* / below the caller gate.
|
|
2656
2986
|
*/
|
|
2657
|
-
signEip712: ActorMethod<[Uint8Array | number[], Array<[string, Eip712Value]>],
|
|
2987
|
+
signEip712: ActorMethod<[Uint8Array | number[], Array<[string, Eip712Value]>], Result_5>;
|
|
2658
2988
|
/**
|
|
2659
2989
|
* / Sign the engram's own ERC-8004 registration tx for client-side broadcast: the engram signs, the client
|
|
2660
2990
|
* / broadcasts and keeps the resulting registration id.
|
|
@@ -2694,7 +3024,7 @@ export interface Engram {
|
|
|
2694
3024
|
maxPriorityFeePerGas: bigint;
|
|
2695
3025
|
},
|
|
2696
3026
|
],
|
|
2697
|
-
|
|
3027
|
+
Result_10
|
|
2698
3028
|
>;
|
|
2699
3029
|
/**
|
|
2700
3030
|
* / Sign an EIP-3009 authorization for x402 payment. Agent-accessible.
|
|
@@ -2731,39 +3061,30 @@ export interface Engram {
|
|
|
2731
3061
|
amount: bigint;
|
|
2732
3062
|
},
|
|
2733
3063
|
],
|
|
2734
|
-
|
|
3064
|
+
Result_4
|
|
2735
3065
|
>;
|
|
2736
3066
|
/**
|
|
2737
|
-
* /
|
|
2738
|
-
* /
|
|
2739
|
-
|
|
2740
|
-
|
|
2741
|
-
/**
|
|
2742
|
-
* / Genesis seed — the atomic "spawn only when there's real content" primitive. The spawning
|
|
2743
|
-
* / REGISTRY pushes the owner's first real memory immediately after install, so a canister is
|
|
2744
|
-
* / never spawned holding nothing (see the registry's `provisionEngram` optional genesis).
|
|
3067
|
+
* / ⟨2026-10-21, the owner's round-11 answer e⟩ A GUARDIAN STEPS DOWN: the caller ends their own
|
|
3068
|
+
* / guardianship of this engram. It removes a power from the one who holds it and grants none.
|
|
3069
|
+
* / Before, only the owner could remove a guardian, so one who wanted out could only stop watching
|
|
3070
|
+
* / without anyone knowing — worse than an honest exit on the record.
|
|
2745
3071
|
* /
|
|
2746
|
-
* /
|
|
2747
|
-
* /
|
|
2748
|
-
* /
|
|
2749
|
-
* /
|
|
2750
|
-
* / agent metrics.
|
|
3072
|
+
* / WHO: anyone holding a guardian record here, `#Pending` or `#Active`; never refused for the
|
|
3073
|
+
* / record's state. The owner is refused by name (`People.OWNER_IS_NO_GUARDIAN`: their way is
|
|
3074
|
+
* / `removeGuardian`); an agent or a stranger is `#NotFound` (`People.NOT_A_GUARDIAN`, a fact about
|
|
3075
|
+
* / the caller told to the caller, as `resignAgent` does); the anonymous caller is refused.
|
|
2751
3076
|
* /
|
|
2752
|
-
* /
|
|
2753
|
-
* /
|
|
2754
|
-
* /
|
|
2755
|
-
* /
|
|
2756
|
-
* /
|
|
2757
|
-
* / breaks genesis provisioning across that skew. That is measured, not predicted: the registry
|
|
2758
|
-
* / trapped with "IDL error: unexpected IDL type when parsing Nat" while seeding an engram built
|
|
2759
|
-
* / at the staging tag. A receipt would buy nothing anyway — the caller does `ignore await`.
|
|
3077
|
+
* / WHAT IT RECORDS: one `guardian.stepDown` entry under `#Guardian`
|
|
3078
|
+
* / (`principal=<key> was=active|pending name=<name>`). Being a `guardian.*` operation it reaches
|
|
3079
|
+
* / the owner's and the other guardians' alerts in the #guardian class, on by default, and the
|
|
3080
|
+
* / guardian who left gets one farewell delivery before their channel goes (the drain's lazy
|
|
3081
|
+
* / cleanup in `drainActionAlerts`, as for a removed guardian).
|
|
2760
3082
|
* /
|
|
2761
|
-
* /
|
|
2762
|
-
* /
|
|
2763
|
-
* /
|
|
2764
|
-
* / failing the WHOLE SPAWN rather than just the seed.
|
|
3083
|
+
* / WHAT IT LEAVES: a brake this guardian pulled stays on — lifting one is the owner's; their
|
|
3084
|
+
* / disputes stay on the record. Like `removeGuardian`, it is not terminal: the owner may invite
|
|
3085
|
+
* / the same person again.
|
|
2765
3086
|
*/
|
|
2766
|
-
|
|
3087
|
+
stepDownAsGuardian: ActorMethod<[], Result_2>;
|
|
2767
3088
|
/**
|
|
2768
3089
|
* / OWNER force-close, for a session the payer abandoned.
|
|
2769
3090
|
* /
|
|
@@ -2785,7 +3106,7 @@ export interface Engram {
|
|
|
2785
3106
|
* / and a break after it, and it also moves `packages/client/README.md` and
|
|
2786
3107
|
* / `docs/AGENT-ONBOARDING.md`, which name it.
|
|
2787
3108
|
*/
|
|
2788
|
-
sysForceCloseSession: ActorMethod<[string],
|
|
3109
|
+
sysForceCloseSession: ActorMethod<[string], Result_2>;
|
|
2789
3110
|
/**
|
|
2790
3111
|
* / The metrics reader the registry designated reads every engagement's seat weeks, in one call.
|
|
2791
3112
|
* /
|
|
@@ -2804,12 +3125,15 @@ export interface Engram {
|
|
|
2804
3125
|
* / class (`SeatWeeks.readRefusal`), never an empty list: an empty list is a real answer ("no agent
|
|
2805
3126
|
* / has paired here"), and a fabricated one would be counted as one.
|
|
2806
3127
|
*/
|
|
2807
|
-
sysGetAgentSeatWeeks: ActorMethod<[],
|
|
3128
|
+
sysGetAgentSeatWeeks: ActorMethod<[], Result_9>;
|
|
2808
3129
|
/**
|
|
2809
3130
|
* / The metrics reader the registry designated reads this engram's paid-rail health, in one call:
|
|
2810
3131
|
* / the balance and the line it must stay above, the memory that line is computed from, the sessions
|
|
2811
3132
|
* / by state, the escrow open sessions hold, the vouchers spent and the refused ones
|
|
2812
|
-
* / (`RailHealth.RailHealth` says what each is, and what is never in it).
|
|
3133
|
+
* / (`RailHealth.RailHealth` says what each is, and what is never in it). ⟨2026-10-08, ic402 2.18.0⟩
|
|
3134
|
+
* / And `refundOwed`: the closed sessions whose refund failed and whose payer has not yet recovered
|
|
3135
|
+
* / it — counted from the close, never read from the ledger; `opt` from birth, and null (an engram
|
|
3136
|
+
* / that does not count) is never 0.
|
|
2813
3137
|
* /
|
|
2814
3138
|
* / CALLER: the metrics reader the spawning registry named on this engram (`metricsReaderId`), and
|
|
2815
3139
|
* / nobody else — the owner reads its balance through `getOwnerConsole`. Answered only while the
|
|
@@ -2825,7 +3149,7 @@ export interface Engram {
|
|
|
2825
3149
|
* / to freeze. Called by another canister, a query runs replicated and this engram pays for it —
|
|
2826
3150
|
* / a few million cycles an hour, the cost of being watched.
|
|
2827
3151
|
*/
|
|
2828
|
-
sysGetRailHealth: ActorMethod<[],
|
|
3152
|
+
sysGetRailHealth: ActorMethod<[], Result_8>;
|
|
2829
3153
|
/**
|
|
2830
3154
|
* / The cashier reads how many signatures this engram has produced, per caller and in total.
|
|
2831
3155
|
* / ⟨2026-09-28⟩ The owner's decision of that date: a running counter on the engram, exported to
|
|
@@ -2850,7 +3174,20 @@ export interface Engram {
|
|
|
2850
3174
|
* / only engrams the registry confirms run published code, and read a lower count than last time as
|
|
2851
3175
|
* / a reinstall — the reasoning is at `signaturesByCaller`.
|
|
2852
3176
|
*/
|
|
2853
|
-
sysGetSignatureCounts: ActorMethod<[],
|
|
3177
|
+
sysGetSignatureCounts: ActorMethod<[], Result_7>;
|
|
3178
|
+
/**
|
|
3179
|
+
* / Note a restart the registry just made: what this engram owes for it, the floor a repayment may
|
|
3180
|
+
* / not go under, and until when to keep its timers quiet.
|
|
3181
|
+
* /
|
|
3182
|
+
* / CALLER: the registry that spawned this engram, from inside its owner's `restartMyStoppedEngram`,
|
|
3183
|
+
* / and nobody else (ADR-0020) — the same authority as `sysSetBillerId`. The owner's next conversion
|
|
3184
|
+
* / that lands pays the loan back first. The loan is capped at `RestartRepay.LOAN_MAX_CYCLES` and
|
|
3185
|
+
* / the quiet window at 30 minutes, whatever the registry says.
|
|
3186
|
+
*/
|
|
3187
|
+
sysNoteRestart: ActorMethod<
|
|
3188
|
+
[{ keepCycles: bigint; loan: bigint; quietUntilNs: bigint }],
|
|
3189
|
+
Result_2
|
|
3190
|
+
>;
|
|
2854
3191
|
/**
|
|
2855
3192
|
* / Rent lifecycle notice — how the OWNER (not the agent) learns their subscription lapsed. D6
|
|
2856
3193
|
* / shipped the handoff but every alarm it added talks to the operating service's watchdog; the
|
|
@@ -2863,7 +3200,7 @@ export interface Engram {
|
|
|
2863
3200
|
* / OBSERVES the transition, so it is the only thing that can report it. The state whitelist is
|
|
2864
3201
|
* / closed — this is a lifecycle feed, not a free-text push surface into the owner's audit chain.
|
|
2865
3202
|
*/
|
|
2866
|
-
sysNotifyRentLifecycle: ActorMethod<[string, string],
|
|
3203
|
+
sysNotifyRentLifecycle: ActorMethod<[string, string], Result_2>;
|
|
2867
3204
|
/**
|
|
2868
3205
|
* / ⟨0.16.0⟩ `getWalletActivation()` DELETED — folded to `about().walletActivatedAtNs`, with its
|
|
2869
3206
|
* / custody-posture rationale carried onto the field. "Can this thing hold money" is a question a
|
|
@@ -2897,7 +3234,7 @@ export interface Engram {
|
|
|
2897
3234
|
* / the origin: only the configured market can pass that value, so the line cannot be produced by
|
|
2898
3235
|
* / any other caller.
|
|
2899
3236
|
*/
|
|
2900
|
-
sysNotifyWalletActivity: ActorMethod<[string],
|
|
3237
|
+
sysNotifyWalletActivity: ActorMethod<[string], Result_2>;
|
|
2901
3238
|
/**
|
|
2902
3239
|
* / The rent RECEIPT seam (B2): the cashier tells this engram that money moved on its behalf, and
|
|
2903
3240
|
* / the engram appends a `fee.recorded` line to its own audit chain. It computes nothing.
|
|
@@ -2937,7 +3274,32 @@ export interface Engram {
|
|
|
2937
3274
|
scheduleVersion: [] | [string];
|
|
2938
3275
|
},
|
|
2939
3276
|
],
|
|
2940
|
-
|
|
3277
|
+
Result_2
|
|
3278
|
+
>;
|
|
3279
|
+
/**
|
|
3280
|
+
* / Give back what a paid security update advanced this engram and the install did not use.
|
|
3281
|
+
* /
|
|
3282
|
+
* / CALLER: the registry that spawned this engram, right after it installed a security update it
|
|
3283
|
+
* / paid for, and nobody else (ADR-0020). Sends the smallest of: the advance, what this engram holds
|
|
3284
|
+
* / above its balance before the update, and what sits above its 30-day reserve plus send headroom
|
|
3285
|
+
* / (`RestartRepay.giveBack`) — attached to the registry's `sysRepayUpgradeAdvance`, which accepts no
|
|
3286
|
+
* / more than it advanced. The registry writes off what is not returned; nothing is owed after.
|
|
3287
|
+
* / ⟨CORRECTED 2026-10-28, beside "its 30-day reserve" above — the owner's ruling "1"⟩ The reserve is
|
|
3288
|
+
* / this engram's freezing reserve at its own setting (`freezeReservation` = `lineEstimate`), not a
|
|
3289
|
+
* / 30-day figure: about 430B more at a ~305-day setting.
|
|
3290
|
+
* / ⟨2026-10-26, the owner's review choice 1B: "take back only what we added; anything left over goes
|
|
3291
|
+
* / to the 90-day write-off"⟩ The registry now names the ONE advance it is asking for (`advanceId`,
|
|
3292
|
+
* / the one its deposit for this install put on its ledger) and `advance` is that advance's amount
|
|
3293
|
+
* / alone — never the sum of every advance this engram has out. The engram passes the id back to
|
|
3294
|
+
* / `sysRepayUpgradeAdvance` unchanged, and the registry settles that advance only. The engram's own
|
|
3295
|
+
* / caps are unchanged (`RestartRepay.giveBack`). HONEST LIMIT, unchanged by 1B: the engram cannot
|
|
3296
|
+
* / tell its owner's top-up from the unused advance, so when the install used part of the advance and
|
|
3297
|
+
* / the owner added compute meanwhile, up to the part the install used can still come from the
|
|
3298
|
+
* / owner's top-up (the cap is the advance, not its unused part).
|
|
3299
|
+
*/
|
|
3300
|
+
sysReturnUpgradeAdvance: ActorMethod<
|
|
3301
|
+
[{ balanceBefore: bigint; advanceId: bigint; advance: bigint }],
|
|
3302
|
+
Result_6
|
|
2941
3303
|
>;
|
|
2942
3304
|
/**
|
|
2943
3305
|
* / Point this engram at the biller that converts its tokens → cycles. Settable, not hardcoded:
|
|
@@ -2956,12 +3318,24 @@ export interface Engram {
|
|
|
2956
3318
|
* / nobody but the spawning registry can fix it. That refusal therefore names the real remedy
|
|
2957
3319
|
* / rather than telling an owner to run a call they can no longer make.
|
|
2958
3320
|
*/
|
|
2959
|
-
sysSetBillerId: ActorMethod<[Principal],
|
|
3321
|
+
sysSetBillerId: ActorMethod<[Principal], Result_2>;
|
|
2960
3322
|
/**
|
|
2961
|
-
* /
|
|
2962
|
-
* /
|
|
3323
|
+
* / Give this engram its BIRTH CHAIN: its ancestors' birth records and its own, root first, its own
|
|
3324
|
+
* / last ⟨2026-10-26, the owner's lineage rulings L2C-lite and L3A⟩.
|
|
3325
|
+
* /
|
|
3326
|
+
* / CALLER: the registry that spawned this engram, from its birth push or its sweep's retry, and
|
|
3327
|
+
* / nobody else (ADR-0020) — the same authority as `sysSetBillerId`, through the named gate
|
|
3328
|
+
* / `AccessControl.requireSpawningRegistry`. ⚠ THE REGISTRY'S CLIENT DECLARATION IS HAND-WRITTEN
|
|
3329
|
+
* / (`sysSetBirthChain : ([BirthRecord.BirthRecord]) -> async Wire.Result<()>`, in `mintAndPush`): a
|
|
3330
|
+
* / different reply type here traps inside the registry's callback, and a different name leaves every
|
|
3331
|
+
* / newborn without its record, silently retried. test/lineage-wiring.test.ts holds the two equal.
|
|
3332
|
+
* /
|
|
3333
|
+
* / SET ONCE: the same chain again answers `#Ok` and changes nothing (the registry's sweep may re-send
|
|
3334
|
+
* / a push whose reply was lost); a different one is refused `#Conflict`. THE ENGRAM DOES NOT HASH:
|
|
3335
|
+
* / it checks only that the chain ends with its own record. The fingerprints are the registry's to
|
|
3336
|
+
* / certify and the client's `verifyBirthChain` to check.
|
|
2963
3337
|
*/
|
|
2964
|
-
|
|
3338
|
+
sysSetBirthChain: ActorMethod<[Array<BirthRecord>], Result_2>;
|
|
2965
3339
|
/**
|
|
2966
3340
|
* / Point this engram at the commerce satellite allowed to ask it for signatures. ⟨0.16.0, B1⟩
|
|
2967
3341
|
* /
|
|
@@ -2975,7 +3349,7 @@ export interface Engram {
|
|
|
2975
3349
|
* / against a null pointer and their refusals name the registry as the remedy rather than telling
|
|
2976
3350
|
* / an owner to run a call they cannot make.
|
|
2977
3351
|
*/
|
|
2978
|
-
sysSetMarketId: ActorMethod<[Principal],
|
|
3352
|
+
sysSetMarketId: ActorMethod<[Principal], Result_2>;
|
|
2979
3353
|
/**
|
|
2980
3354
|
* / Name the metrics reader allowed to read this engram's seat weeks (`sysGetAgentSeatWeeks`).
|
|
2981
3355
|
* / ⟨2026-10-02, the owner's ruling of that day⟩
|
|
@@ -2991,10 +3365,13 @@ export interface Engram {
|
|
|
2991
3365
|
* / A CANISTER ONLY: a person's principal, the anonymous principal or the management canister is
|
|
2992
3366
|
* / refused `#Invalid` and nothing changes — a person named here would be handed this engram's seat
|
|
2993
3367
|
* / counts. Set or replaced, never cleared: the owner's control is the switch
|
|
2994
|
-
* / (`setSeatWeeksReadEnabled`), not the pointer.
|
|
3368
|
+
* / (`setSeatWeeksReadEnabled`), not the pointer.
|
|
3369
|
+
* / ⟨CORRECTED 2026-10-26, the owner's lineage ruling L6A⟩ "Set or replaced" is no longer true: it is
|
|
3370
|
+
* / SET ONCE. The same reader again answers `#Ok` and changes nothing; another is refused `#Conflict`
|
|
3371
|
+
* / (`AccessControl.setOnce` says why). Still never cleared. The chained record entry
|
|
2995
3372
|
* / (`metrics.sysSetMetricsReaderId`) is the evidence of when the read was granted, and to whom.
|
|
2996
3373
|
*/
|
|
2997
|
-
sysSetMetricsReaderId: ActorMethod<[Principal],
|
|
3374
|
+
sysSetMetricsReaderId: ActorMethod<[Principal], Result_2>;
|
|
2998
3375
|
/**
|
|
2999
3376
|
* / The market asks this engram to sign a registered type — B1's seam, settlement leg. ⟨0.16.0⟩
|
|
3000
3377
|
* /
|
|
@@ -3003,11 +3380,14 @@ export interface Engram {
|
|
|
3003
3380
|
* / (the market cannot introduce a shape), its cool-off must have elapsed, its per-type daily cap
|
|
3004
3381
|
* / still binds, the destination allowlist still fails closed, and a payments freeze still stops
|
|
3005
3382
|
* / it. What the market supplies is the request; what the engram supplies is the whole policy.
|
|
3383
|
+
* / ⟨2026-10-14⟩ And the type's per-field rules, its own destination list (ruling 4A) and the
|
|
3384
|
+
* / signing floor (ruling 5A) — all in `eip712SignFor`, so they bind the market as they bind the
|
|
3385
|
+
* / owner; a refusal here is on the chained record under the market's caller and role.
|
|
3006
3386
|
* /
|
|
3007
3387
|
* / That is what "signatures only" means in code, and it is why this method needs no new authority
|
|
3008
3388
|
* / model: an unregistered typeId is refused for the market exactly as it is for the owner.
|
|
3009
3389
|
*/
|
|
3010
|
-
sysSignEip712: ActorMethod<[Uint8Array | number[], Array<[string, Eip712Value]>],
|
|
3390
|
+
sysSignEip712: ActorMethod<[Uint8Array | number[], Array<[string, Eip712Value]>], Result_5>;
|
|
3011
3391
|
/**
|
|
3012
3392
|
* / The market asks this engram to sign an x402 payment — B1's seam, the paid-request leg. ⟨0.16.0⟩
|
|
3013
3393
|
* /
|
|
@@ -3026,19 +3406,21 @@ export interface Engram {
|
|
|
3026
3406
|
*/
|
|
3027
3407
|
sysSignX402Payment: ActorMethod<
|
|
3028
3408
|
[bigint, string, string, bigint, string, string, [] | [string], [] | [string]],
|
|
3029
|
-
|
|
3409
|
+
Result_4
|
|
3030
3410
|
>;
|
|
3031
3411
|
/**
|
|
3032
3412
|
* / Write an `alerts.test` entry into the audit log; the drain timer delivers it to the webhook
|
|
3033
|
-
* / within ~60s.
|
|
3413
|
+
* / within ~60s. ⟨2026-10-29, beside "within ~60s"⟩ Within seconds (a minute if a delivery was just
|
|
3414
|
+
* / made). Owner-only; requires a configured URL so the test can actually go somewhere.
|
|
3034
3415
|
*/
|
|
3035
|
-
testActionAlert: ActorMethod<[],
|
|
3416
|
+
testActionAlert: ActorMethod<[], Result_2>;
|
|
3036
3417
|
/**
|
|
3037
3418
|
* / Guardian test alert — an audited guardian action (`alerts.test`, role Guardian) that every
|
|
3038
|
-
* / armed channel (owner + guardians) receives within ~60s
|
|
3419
|
+
* / armed channel (owner + guardians) receives within ~60s (⟨2026-10-29⟩ within seconds; a minute if
|
|
3420
|
+
* / a delivery was just made). Requires the caller's own channel
|
|
3039
3421
|
* / to be armed so the test has somewhere to land for them.
|
|
3040
3422
|
*/
|
|
3041
|
-
testGuardianAlert: ActorMethod<[],
|
|
3423
|
+
testGuardianAlert: ActorMethod<[], Result_2>;
|
|
3042
3424
|
/**
|
|
3043
3425
|
* / RENAMED from `init` (L2.4). This is the OWNERSHIP-TRANSFER method — the most consequential
|
|
3044
3426
|
* / owner-facing operation on the canister — and it was named for first-time setup, colliding with
|
|
@@ -3078,7 +3460,7 @@ export interface Engram {
|
|
|
3078
3460
|
* / `listOwnershipTransfers` (until this day it wrote one from the owner to themselves, a hand-on
|
|
3079
3461
|
* / that did not happen). The record entry says it was a report. `ControlHandover.isReport`.
|
|
3080
3462
|
*/
|
|
3081
|
-
transferOwnership: ActorMethod<[Principal],
|
|
3463
|
+
transferOwnership: ActorMethod<[Principal], Result_3>;
|
|
3082
3464
|
/**
|
|
3083
3465
|
* / OWNER-ONLY release of the payment freeze — and the asymmetry with `freezePayments` is the
|
|
3084
3466
|
* / governance design, not an oversight.
|
|
@@ -3092,7 +3474,20 @@ export interface Engram {
|
|
|
3092
3474
|
* / So a guardian's freeze is a TRIPWIRE, not a lock — it buys the time it takes the owner to
|
|
3093
3475
|
* / look, and no more.
|
|
3094
3476
|
*/
|
|
3095
|
-
unfreezePayments: ActorMethod<[],
|
|
3477
|
+
unfreezePayments: ActorMethod<[], Result_2>;
|
|
3478
|
+
/**
|
|
3479
|
+
* / Wake this engram's timers after it paused them to save compute near its freezing line. Owner
|
|
3480
|
+
* / only. Refused, by name, below the room the hourly check-in needs; then nothing is armed.
|
|
3481
|
+
* /
|
|
3482
|
+
* / CALLER: the engram's owner, from the owner's app (its status line and its compute page), and
|
|
3483
|
+
* / nobody else (ADR-0020). ⟨2026-10-28, the owner's ruling "1": "it wakes on the next payment, agent
|
|
3484
|
+
* / request or your Wake"⟩ The automatic doors (the biller's receipt, Convert, an agent's MCP request)
|
|
3485
|
+
* / wake it when compute lands with room; this is the owner's door, for compute that arrived with no
|
|
3486
|
+
* / receipt (a bare top-up). It always reads the engram's own balance (no rate limit, no free filter),
|
|
3487
|
+
* / so a refusal states what the engram measured. Both figures in a refusal are its own READING above
|
|
3488
|
+
* / its line, which runs ~82B below the true figure, so the engram never calls it the gap.
|
|
3489
|
+
*/
|
|
3490
|
+
wakeTimers: ActorMethod<[], Result_1>;
|
|
3096
3491
|
/**
|
|
3097
3492
|
* / Consensus transform for the World ID /verify outcall. Replicas each call independently, so the raw
|
|
3098
3493
|
* / response (timestamps, `uses`, request-id headers) is non-deterministic. Collapse it to a single
|
|
@@ -3131,6 +3526,10 @@ export interface Engram {
|
|
|
3131
3526
|
*/
|
|
3132
3527
|
writeMemory: ActorMethod<[string, Uint8Array | number[]], Result>;
|
|
3133
3528
|
}
|
|
3529
|
+
export interface EngramEscrowRecovery {
|
|
3530
|
+
amountE6: bigint;
|
|
3531
|
+
blockIndex: bigint;
|
|
3532
|
+
}
|
|
3134
3533
|
export interface EngramSessionState {
|
|
3135
3534
|
id: string;
|
|
3136
3535
|
status: EngramSessionStatus;
|
|
@@ -3183,6 +3582,15 @@ export interface GenesisNote {
|
|
|
3183
3582
|
version: string;
|
|
3184
3583
|
genesisAtNs: bigint;
|
|
3185
3584
|
}
|
|
3585
|
+
export interface GuardianDispute {
|
|
3586
|
+
about: bigint;
|
|
3587
|
+
atNs: bigint;
|
|
3588
|
+
path: [] | [string];
|
|
3589
|
+
auditId: bigint;
|
|
3590
|
+
version: [] | [bigint];
|
|
3591
|
+
guardian: Principal;
|
|
3592
|
+
reason: string;
|
|
3593
|
+
}
|
|
3186
3594
|
export interface GuardianPermissions {
|
|
3187
3595
|
canFreezePayments: boolean;
|
|
3188
3596
|
canRevokeAgents: boolean;
|
|
@@ -3223,6 +3631,14 @@ export interface HttpResponse {
|
|
|
3223
3631
|
upgrade: [] | [boolean];
|
|
3224
3632
|
status_code: number;
|
|
3225
3633
|
}
|
|
3634
|
+
export interface Ic402Maintenance {
|
|
3635
|
+
revokedGrantsRemoved: bigint;
|
|
3636
|
+
dailySpendRemoved: bigint;
|
|
3637
|
+
more: boolean;
|
|
3638
|
+
runs: bigint;
|
|
3639
|
+
rateLimitRemoved: bigint;
|
|
3640
|
+
lastRunAtNs: bigint;
|
|
3641
|
+
}
|
|
3226
3642
|
export interface KeyNomination {
|
|
3227
3643
|
key: Principal;
|
|
3228
3644
|
atNs: bigint;
|
|
@@ -3230,7 +3646,7 @@ export interface KeyNomination {
|
|
|
3230
3646
|
export interface LogPage {
|
|
3231
3647
|
firstAvailableSeq: bigint;
|
|
3232
3648
|
head: Uint8Array | number[];
|
|
3233
|
-
page:
|
|
3649
|
+
page: Page_9;
|
|
3234
3650
|
}
|
|
3235
3651
|
export interface LogPosition {
|
|
3236
3652
|
reads: bigint;
|
|
@@ -3266,6 +3682,12 @@ export interface MemoryFile {
|
|
|
3266
3682
|
lastModifiedBy: Principal;
|
|
3267
3683
|
lastModifiedAtNs: bigint;
|
|
3268
3684
|
}
|
|
3685
|
+
export interface MemoryFileRow {
|
|
3686
|
+
path: string;
|
|
3687
|
+
version: bigint;
|
|
3688
|
+
lastModifiedBy: [] | [Principal];
|
|
3689
|
+
lastModifiedAtNs: bigint;
|
|
3690
|
+
}
|
|
3269
3691
|
export interface MemoryHistory {
|
|
3270
3692
|
evictions: Array<MemoryEviction>;
|
|
3271
3693
|
oldestRetainedVersion: bigint;
|
|
@@ -3415,74 +3837,94 @@ export interface OwnershipTransfer {
|
|
|
3415
3837
|
export interface Page {
|
|
3416
3838
|
total: bigint;
|
|
3417
3839
|
withheld: bigint;
|
|
3418
|
-
items: Array<
|
|
3840
|
+
items: Array<SignIn>;
|
|
3419
3841
|
}
|
|
3420
3842
|
export interface Page_1 {
|
|
3421
3843
|
total: bigint;
|
|
3422
3844
|
withheld: bigint;
|
|
3423
|
-
items: Array<
|
|
3845
|
+
items: Array<Repudiation>;
|
|
3424
3846
|
}
|
|
3425
3847
|
export interface Page_10 {
|
|
3426
3848
|
total: bigint;
|
|
3427
3849
|
withheld: bigint;
|
|
3428
|
-
items: Array<
|
|
3850
|
+
items: Array<MemoryFileRow>;
|
|
3429
3851
|
}
|
|
3430
3852
|
export interface Page_11 {
|
|
3431
3853
|
total: bigint;
|
|
3432
3854
|
withheld: bigint;
|
|
3433
|
-
items: Array<
|
|
3855
|
+
items: Array<ExportReceiptRow>;
|
|
3434
3856
|
}
|
|
3435
3857
|
export interface Page_12 {
|
|
3436
3858
|
total: bigint;
|
|
3437
3859
|
withheld: bigint;
|
|
3438
|
-
items: Array<
|
|
3860
|
+
items: Array<GuardianRecord>;
|
|
3439
3861
|
}
|
|
3440
3862
|
export interface Page_13 {
|
|
3441
3863
|
total: bigint;
|
|
3442
3864
|
withheld: bigint;
|
|
3443
|
-
items: Array<
|
|
3865
|
+
items: Array<GuardianDispute>;
|
|
3444
3866
|
}
|
|
3445
3867
|
export interface Page_14 {
|
|
3446
3868
|
total: bigint;
|
|
3447
3869
|
withheld: bigint;
|
|
3448
|
-
items: Array<
|
|
3870
|
+
items: Array<Eip712TypeView>;
|
|
3449
3871
|
}
|
|
3450
3872
|
export interface Page_15 {
|
|
3451
3873
|
total: bigint;
|
|
3452
3874
|
withheld: bigint;
|
|
3453
|
-
items: Array<
|
|
3875
|
+
items: Array<Eip712Destination>;
|
|
3454
3876
|
}
|
|
3455
3877
|
export interface Page_16 {
|
|
3456
3878
|
total: bigint;
|
|
3457
3879
|
withheld: bigint;
|
|
3458
|
-
items: Array<
|
|
3880
|
+
items: Array<string>;
|
|
3459
3881
|
}
|
|
3460
3882
|
export interface Page_17 {
|
|
3461
3883
|
total: bigint;
|
|
3462
3884
|
withheld: bigint;
|
|
3463
|
-
items: Array<
|
|
3885
|
+
items: Array<CycleSnapshot>;
|
|
3464
3886
|
}
|
|
3465
3887
|
export interface Page_18 {
|
|
3466
3888
|
total: bigint;
|
|
3467
3889
|
withheld: bigint;
|
|
3468
|
-
items: Array<
|
|
3890
|
+
items: Array<CondenseCheckpointRow>;
|
|
3469
3891
|
}
|
|
3470
3892
|
export interface Page_19 {
|
|
3471
3893
|
total: bigint;
|
|
3472
3894
|
withheld: bigint;
|
|
3473
|
-
items: Array<
|
|
3895
|
+
items: Array<BearerToken>;
|
|
3474
3896
|
}
|
|
3475
3897
|
export interface Page_2 {
|
|
3476
3898
|
total: bigint;
|
|
3477
3899
|
withheld: bigint;
|
|
3478
|
-
items: Array<
|
|
3900
|
+
items: Array<RecordNote>;
|
|
3479
3901
|
}
|
|
3480
3902
|
export interface Page_20 {
|
|
3481
3903
|
total: bigint;
|
|
3482
3904
|
withheld: bigint;
|
|
3483
|
-
items: Array<
|
|
3905
|
+
items: Array<BackupMetadata>;
|
|
3484
3906
|
}
|
|
3485
3907
|
export interface Page_21 {
|
|
3908
|
+
total: bigint;
|
|
3909
|
+
withheld: bigint;
|
|
3910
|
+
items: Array<{ status: AgentStatus; principal: Principal; name: string }>;
|
|
3911
|
+
}
|
|
3912
|
+
export interface Page_22 {
|
|
3913
|
+
total: bigint;
|
|
3914
|
+
withheld: bigint;
|
|
3915
|
+
items: Array<AgentRecord>;
|
|
3916
|
+
}
|
|
3917
|
+
export interface Page_23 {
|
|
3918
|
+
total: bigint;
|
|
3919
|
+
withheld: bigint;
|
|
3920
|
+
items: Array<AgentSpendRow>;
|
|
3921
|
+
}
|
|
3922
|
+
export interface Page_24 {
|
|
3923
|
+
total: bigint;
|
|
3924
|
+
withheld: bigint;
|
|
3925
|
+
items: Array<ActivitySnapshot>;
|
|
3926
|
+
}
|
|
3927
|
+
export interface Page_25 {
|
|
3486
3928
|
total: bigint;
|
|
3487
3929
|
withheld: bigint;
|
|
3488
3930
|
items: Array<OwnerRow>;
|
|
@@ -3490,42 +3932,51 @@ export interface Page_21 {
|
|
|
3490
3932
|
export interface Page_3 {
|
|
3491
3933
|
total: bigint;
|
|
3492
3934
|
withheld: bigint;
|
|
3493
|
-
items: Array<
|
|
3935
|
+
items: Array<AuditEntry>;
|
|
3494
3936
|
}
|
|
3495
3937
|
export interface Page_4 {
|
|
3496
3938
|
total: bigint;
|
|
3497
3939
|
withheld: bigint;
|
|
3498
|
-
items: Array<
|
|
3940
|
+
items: Array<PurgedAgent>;
|
|
3499
3941
|
}
|
|
3500
3942
|
export interface Page_5 {
|
|
3501
3943
|
total: bigint;
|
|
3502
3944
|
withheld: bigint;
|
|
3503
|
-
items: Array<
|
|
3945
|
+
items: Array<AgentPaymentSignatures>;
|
|
3504
3946
|
}
|
|
3505
3947
|
export interface Page_6 {
|
|
3506
3948
|
total: bigint;
|
|
3507
3949
|
withheld: bigint;
|
|
3508
|
-
items: Array<
|
|
3950
|
+
items: Array<OwnershipTransfer>;
|
|
3509
3951
|
}
|
|
3510
3952
|
export interface Page_7 {
|
|
3511
3953
|
total: bigint;
|
|
3512
3954
|
withheld: bigint;
|
|
3513
|
-
items: Array<
|
|
3955
|
+
items: Array<EngramSessionState>;
|
|
3514
3956
|
}
|
|
3515
3957
|
export interface Page_8 {
|
|
3516
3958
|
total: bigint;
|
|
3517
3959
|
withheld: bigint;
|
|
3518
|
-
items: Array<
|
|
3960
|
+
items: Array<ApprovalRequest>;
|
|
3519
3961
|
}
|
|
3520
3962
|
export interface Page_9 {
|
|
3521
3963
|
total: bigint;
|
|
3522
3964
|
withheld: bigint;
|
|
3523
|
-
items: Array<
|
|
3965
|
+
items: Array<MemoryLogEvent>;
|
|
3524
3966
|
}
|
|
3525
3967
|
export interface Pairing {
|
|
3526
3968
|
agent: AgentRecord;
|
|
3527
3969
|
trackRecord: TrackRecordNotice;
|
|
3528
3970
|
}
|
|
3971
|
+
export interface PaymentLimits {
|
|
3972
|
+
maxSessionDeposit: [] | [bigint];
|
|
3973
|
+
maxPerDay: [] | [bigint];
|
|
3974
|
+
maxSessionDuration: [] | [bigint];
|
|
3975
|
+
sessionIdleTimeout: [] | [bigint];
|
|
3976
|
+
rateLimitPerMinute: [] | [bigint];
|
|
3977
|
+
maxPerTransaction: [] | [bigint];
|
|
3978
|
+
maxConcurrentSessions: [] | [bigint];
|
|
3979
|
+
}
|
|
3529
3980
|
export interface PaymentSignature {
|
|
3530
3981
|
signature: Uint8Array | number[];
|
|
3531
3982
|
asset: [] | [string];
|
|
@@ -3539,9 +3990,15 @@ export interface PaymentSignature {
|
|
|
3539
3990
|
export interface PaymentSignatureCounts {
|
|
3540
3991
|
day: bigint;
|
|
3541
3992
|
marketplace: [] | [MarketplacePaymentSignatures];
|
|
3542
|
-
agents:
|
|
3993
|
+
agents: Page_5;
|
|
3543
3994
|
limit: bigint;
|
|
3544
3995
|
}
|
|
3996
|
+
export interface PaymentsNow {
|
|
3997
|
+
leftToday: [] | [bigint];
|
|
3998
|
+
largestPayment: [] | [bigint];
|
|
3999
|
+
}
|
|
4000
|
+
export type PaymentsStop =
|
|
4001
|
+
{ paymentsBrake: null } | { dailySignatureLimit: null } | { signingFloor: null };
|
|
3545
4002
|
export interface PurgedAgent {
|
|
3546
4003
|
principal: Principal;
|
|
3547
4004
|
pairedAtNs: bigint;
|
|
@@ -3558,6 +4015,7 @@ export interface RailHealth {
|
|
|
3558
4015
|
paidVouchersConsumed: bigint;
|
|
3559
4016
|
escrowOpen: [] | [bigint];
|
|
3560
4017
|
sessionsOpen: bigint;
|
|
4018
|
+
refundOwed: [] | [bigint];
|
|
3561
4019
|
sessionsClosing: bigint;
|
|
3562
4020
|
cycles: bigint;
|
|
3563
4021
|
sendHeadroom: bigint;
|
|
@@ -3567,26 +4025,21 @@ export interface RailHealth {
|
|
|
3567
4025
|
}
|
|
3568
4026
|
export interface ReceiptPage {
|
|
3569
4027
|
firstAvailableSeq: bigint;
|
|
3570
|
-
page:
|
|
4028
|
+
page: Page_11;
|
|
3571
4029
|
scannedThroughSeq: bigint;
|
|
3572
4030
|
}
|
|
3573
|
-
export interface
|
|
3574
|
-
|
|
3575
|
-
|
|
3576
|
-
|
|
3577
|
-
|
|
3578
|
-
|
|
3579
|
-
|
|
3580
|
-
|
|
3581
|
-
|
|
3582
|
-
|
|
3583
|
-
|
|
3584
|
-
|
|
3585
|
-
typeHash: Uint8Array | number[];
|
|
3586
|
-
registeredAtNs: bigint;
|
|
3587
|
-
chainId: bigint;
|
|
3588
|
-
domainVersion: string;
|
|
3589
|
-
ackIrrevocable: boolean;
|
|
4031
|
+
export interface RecordNote {
|
|
4032
|
+
about: bigint;
|
|
4033
|
+
atNs: bigint;
|
|
4034
|
+
note: string;
|
|
4035
|
+
auditId: bigint;
|
|
4036
|
+
}
|
|
4037
|
+
export interface RecordPage {
|
|
4038
|
+
ringFloor: bigint;
|
|
4039
|
+
total: bigint;
|
|
4040
|
+
sealed: Array<SealedEntry>;
|
|
4041
|
+
items: Array<AuditEntry>;
|
|
4042
|
+
hashFirstFrom: bigint;
|
|
3590
4043
|
}
|
|
3591
4044
|
export interface Repudiation {
|
|
3592
4045
|
atNs: bigint;
|
|
@@ -3602,75 +4055,88 @@ export interface ResetReport {
|
|
|
3602
4055
|
filesCleared: bigint;
|
|
3603
4056
|
}
|
|
3604
4057
|
export type Result = { Ok: WriteReceipt } | { Err: Error };
|
|
3605
|
-
export type Result_1 = { Ok:
|
|
3606
|
-
export type Result_10 = { Ok:
|
|
3607
|
-
export type Result_11 = { Ok:
|
|
3608
|
-
export type Result_12 = { Ok:
|
|
3609
|
-
export type Result_13 = { Ok:
|
|
3610
|
-
export type Result_14 = { Ok:
|
|
3611
|
-
export type Result_15 = { Ok:
|
|
3612
|
-
export type Result_16 = { Ok:
|
|
3613
|
-
export type Result_17 = { Ok:
|
|
3614
|
-
export type Result_18 = { Ok:
|
|
3615
|
-
export type Result_19 = { Ok:
|
|
3616
|
-
export type Result_2 = { Ok:
|
|
3617
|
-
export type Result_20 = { Ok:
|
|
3618
|
-
export type Result_21 = { Ok:
|
|
3619
|
-
export type Result_22 = { Ok:
|
|
3620
|
-
export type Result_23 = { Ok:
|
|
3621
|
-
export type Result_24 = { Ok:
|
|
3622
|
-
export type Result_25 = { Ok:
|
|
3623
|
-
export type Result_26 = { Ok:
|
|
3624
|
-
export type Result_27 = { Ok:
|
|
3625
|
-
export type Result_28 = { Ok:
|
|
3626
|
-
export type Result_29 = { Ok:
|
|
3627
|
-
export type Result_3 = { Ok:
|
|
3628
|
-
export type Result_30 = { Ok:
|
|
3629
|
-
export type Result_31 = { Ok:
|
|
3630
|
-
export type Result_32 = { Ok:
|
|
3631
|
-
export type Result_33 = { Ok:
|
|
3632
|
-
export type Result_34 = { Ok:
|
|
3633
|
-
export type Result_35 = { Ok:
|
|
3634
|
-
export type Result_36 = { Ok:
|
|
3635
|
-
export type Result_37 = { Ok:
|
|
3636
|
-
export type Result_38 = { Ok:
|
|
3637
|
-
export type Result_39 = { Ok:
|
|
3638
|
-
export type Result_4 = { Ok:
|
|
3639
|
-
export type Result_40 = { Ok:
|
|
3640
|
-
export type Result_41 = { Ok:
|
|
3641
|
-
export type Result_42 = { Ok:
|
|
3642
|
-
export type Result_43 = { Ok:
|
|
3643
|
-
export type Result_44 = { Ok:
|
|
3644
|
-
export type Result_45 = { Ok:
|
|
3645
|
-
export type Result_46 = { Ok:
|
|
3646
|
-
export type Result_47 = { Ok:
|
|
3647
|
-
export type Result_48 = { Ok:
|
|
3648
|
-
export type Result_49 = { Ok:
|
|
3649
|
-
export type Result_5 = { Ok:
|
|
3650
|
-
export type Result_50 = { Ok:
|
|
3651
|
-
export type Result_51 = { Ok:
|
|
3652
|
-
export type Result_52 = { Ok:
|
|
3653
|
-
export type Result_53 = { Ok:
|
|
3654
|
-
export type Result_54 = { Ok:
|
|
3655
|
-
export type Result_55 = { Ok:
|
|
3656
|
-
export type Result_56 = { Ok:
|
|
3657
|
-
export type Result_57 = { Ok:
|
|
3658
|
-
export type Result_58 = { Ok:
|
|
3659
|
-
export type Result_59 = { Ok:
|
|
3660
|
-
export type Result_6 = { Ok:
|
|
3661
|
-
export type Result_60 = { Ok:
|
|
3662
|
-
export type Result_61 = { Ok:
|
|
3663
|
-
export type Result_62 = { Ok:
|
|
3664
|
-
export type Result_63 = { Ok:
|
|
3665
|
-
export type Result_64 = { Ok:
|
|
3666
|
-
export type
|
|
3667
|
-
export type
|
|
3668
|
-
export type
|
|
3669
|
-
export type
|
|
3670
|
-
export type
|
|
3671
|
-
export type
|
|
3672
|
-
export type
|
|
3673
|
-
export type
|
|
4058
|
+
export type Result_1 = { Ok: TimersWake } | { Err: Error };
|
|
4059
|
+
export type Result_10 = { Ok: SignedTransaction } | { Err: Error };
|
|
4060
|
+
export type Result_11 = { Ok: BackupRetentionReport } | { Err: Error };
|
|
4061
|
+
export type Result_12 = { Ok: MemoryFile } | { Err: Error };
|
|
4062
|
+
export type Result_13 = { Ok: SessionContext } | { Err: Error };
|
|
4063
|
+
export type Result_14 = { Ok: bigint } | { Err: Error };
|
|
4064
|
+
export type Result_15 = { Ok: ResyncReport } | { Err: Error };
|
|
4065
|
+
export type Result_16 = { Ok: ResetReport } | { Err: Error };
|
|
4066
|
+
export type Result_17 = { Ok: GuardianRecord } | { Err: Error };
|
|
4067
|
+
export type Result_18 = { Ok: EngramEscrowRecovery } | { Err: Error };
|
|
4068
|
+
export type Result_19 = { Ok: MemoryByteChunk } | { Err: Error };
|
|
4069
|
+
export type Result_2 = { Ok: null } | { Err: Error };
|
|
4070
|
+
export type Result_20 = { Ok: Array<BatchReadItem> } | { Err: Error };
|
|
4071
|
+
export type Result_21 = { Ok: RetentionPreview } | { Err: Error };
|
|
4072
|
+
export type Result_22 = { Ok: CondensePreview } | { Err: Error };
|
|
4073
|
+
export type Result_23 = { Ok: Pairing } | { Err: Error };
|
|
4074
|
+
export type Result_24 = { Ok: EngramSessionState } | { Err: Error };
|
|
4075
|
+
export type Result_25 = { Ok: Principal } | { Err: Error };
|
|
4076
|
+
export type Result_26 = { Ok: AgentGrant } | { Err: Error };
|
|
4077
|
+
export type Result_27 = { Ok: Page } | { Err: Error };
|
|
4078
|
+
export type Result_28 = { Ok: Page_1 } | { Err: Error };
|
|
4079
|
+
export type Result_29 = { Ok: Page_2 } | { Err: Error };
|
|
4080
|
+
export type Result_3 = { Ok: ControlHandover } | { Err: Error };
|
|
4081
|
+
export type Result_30 = { Ok: Page_3 } | { Err: Error };
|
|
4082
|
+
export type Result_31 = { Ok: Page_4 } | { Err: Error };
|
|
4083
|
+
export type Result_32 = { Ok: PaymentSignatureCounts } | { Err: Error };
|
|
4084
|
+
export type Result_33 = { Ok: Page_6 } | { Err: Error };
|
|
4085
|
+
export type Result_34 = { Ok: Page_7 } | { Err: Error };
|
|
4086
|
+
export type Result_35 = { Ok: Page_8 } | { Err: Error };
|
|
4087
|
+
export type Result_36 = { Ok: LogPage } | { Err: Error };
|
|
4088
|
+
export type Result_37 = { Ok: Page_10 } | { Err: Error };
|
|
4089
|
+
export type Result_38 = { Ok: ReceiptPage } | { Err: Error };
|
|
4090
|
+
export type Result_39 = { Ok: Page_12 } | { Err: Error };
|
|
4091
|
+
export type Result_4 = { Ok: X402SignOutcome } | { Err: Error };
|
|
4092
|
+
export type Result_40 = { Ok: Page_13 } | { Err: Error };
|
|
4093
|
+
export type Result_41 = { Ok: Page_14 } | { Err: Error };
|
|
4094
|
+
export type Result_42 = { Ok: Page_15 } | { Err: Error };
|
|
4095
|
+
export type Result_43 = { Ok: Page_16 } | { Err: Error };
|
|
4096
|
+
export type Result_44 = { Ok: Page_17 } | { Err: Error };
|
|
4097
|
+
export type Result_45 = { Ok: CheckpointPage } | { Err: Error };
|
|
4098
|
+
export type Result_46 = { Ok: Page_19 } | { Err: Error };
|
|
4099
|
+
export type Result_47 = { Ok: Page_20 } | { Err: Error };
|
|
4100
|
+
export type Result_48 = { Ok: RecordPage } | { Err: Error };
|
|
4101
|
+
export type Result_49 = { Ok: Page_21 } | { Err: Error };
|
|
4102
|
+
export type Result_5 = { Ok: Eip712SignatureOut } | { Err: Error };
|
|
4103
|
+
export type Result_50 = { Ok: Page_22 } | { Err: Error };
|
|
4104
|
+
export type Result_51 = { Ok: AgentSpendToday } | { Err: Error };
|
|
4105
|
+
export type Result_52 = { Ok: Page_24 } | { Err: Error };
|
|
4106
|
+
export type Result_53 = { Ok: string } | { Err: Error };
|
|
4107
|
+
export type Result_54 = { Ok: boolean } | { Err: Error };
|
|
4108
|
+
export type Result_55 = { Ok: [] | [string] } | { Err: Error };
|
|
4109
|
+
export type Result_56 = { Ok: WorldIdRpContext } | { Err: Error };
|
|
4110
|
+
export type Result_57 = { Ok: WorldIdConfig } | { Err: Error };
|
|
4111
|
+
export type Result_58 = { Ok: WalletBalances } | { Err: Error };
|
|
4112
|
+
export type Result_59 = { Ok: StorageReport } | { Err: Error };
|
|
4113
|
+
export type Result_6 = { Ok: { returned: bigint } } | { Err: Error };
|
|
4114
|
+
export type Result_60 = { Ok: SpendingPolicy } | { Err: Error };
|
|
4115
|
+
export type Result_61 = { Ok: SpendCeiling } | { Err: Error };
|
|
4116
|
+
export type Result_62 = { Ok: SigningFloorStatus } | { Err: Error };
|
|
4117
|
+
export type Result_63 = { Ok: { paths: Array<string> } } | { Err: Error };
|
|
4118
|
+
export type Result_64 = { Ok: OwnerConsole } | { Err: Error };
|
|
4119
|
+
export type Result_65 = { Ok: MemoryRetentionPolicy } | { Err: Error };
|
|
4120
|
+
export type Result_66 = { Ok: MemoryHistory } | { Err: Error };
|
|
4121
|
+
export type Result_67 = { Ok: AlertStatus } | { Err: Error };
|
|
4122
|
+
export type Result_68 = { Ok: EvmAddresses } | { Err: Error };
|
|
4123
|
+
export type Result_69 = { Ok: Uint8Array | number[] } | { Err: Error };
|
|
4124
|
+
export type Result_7 = { Ok: SignatureCounts } | { Err: Error };
|
|
4125
|
+
export type Result_70 = { Ok: ChildOpening } | { Err: Error };
|
|
4126
|
+
export type Result_71 = { Ok: ChildAllowanceRow } | { Err: Error };
|
|
4127
|
+
export type Result_72 = { Ok: Brakes } | { Err: Error };
|
|
4128
|
+
export type Result_73 = { Ok: Array<BirthRecord> } | { Err: Error };
|
|
4129
|
+
export type Result_74 = { Ok: BackupRetention } | { Err: Error };
|
|
4130
|
+
export type Result_75 = { Ok: BackupMetadata } | { Err: Error };
|
|
4131
|
+
export type Result_76 = { Ok: AgentWriteReview } | { Err: Error };
|
|
4132
|
+
export type Result_77 = { Ok: Page_25 } | { Err: Error };
|
|
4133
|
+
export type Result_79 = { Ok: MemoryRangeExport } | { Err: Error };
|
|
4134
|
+
export type Result_8 = { Ok: RailHealth } | { Err: Error };
|
|
4135
|
+
export type Result_80 = { Ok: CondenseResult } | { Err: Error };
|
|
4136
|
+
export type Result_81 = { Ok: Eip712Registration } | { Err: Error };
|
|
4137
|
+
export type Result_82 = { Ok: { activatesAtNs: bigint } } | { Err: Error };
|
|
4138
|
+
export type Result_83 = { Ok: AgentRecord } | { Err: Error };
|
|
4139
|
+
export type Result_9 = { Ok: Array<Seat> } | { Err: Error };
|
|
3674
4140
|
export interface ResyncReport {
|
|
3675
4141
|
startsAcknowledged: bigint;
|
|
3676
4142
|
cannotBeRecorded: Array<UnrecordableEngagement>;
|
|
@@ -3691,6 +4157,22 @@ export type RetentionClassSpec =
|
|
|
3691
4157
|
thinning: { tail: null } | { logSpaced: { denseTail: bigint } };
|
|
3692
4158
|
};
|
|
3693
4159
|
};
|
|
4160
|
+
export interface RetentionPreview {
|
|
4161
|
+
files: bigint;
|
|
4162
|
+
complete: boolean;
|
|
4163
|
+
planned: bigint;
|
|
4164
|
+
bytes: bigint;
|
|
4165
|
+
copies: bigint;
|
|
4166
|
+
storedFiles: bigint;
|
|
4167
|
+
rules: Array<RetentionPreviewRule>;
|
|
4168
|
+
}
|
|
4169
|
+
export interface RetentionPreviewRule {
|
|
4170
|
+
files: bigint;
|
|
4171
|
+
notBeforeNs: [] | [bigint];
|
|
4172
|
+
prefix: string;
|
|
4173
|
+
bytes: bigint;
|
|
4174
|
+
copies: bigint;
|
|
4175
|
+
}
|
|
3694
4176
|
export type Role =
|
|
3695
4177
|
| { Anonymous: null }
|
|
3696
4178
|
| { Viewer: null }
|
|
@@ -3704,6 +4186,11 @@ export type Role =
|
|
|
3704
4186
|
| { Agent: null }
|
|
3705
4187
|
| { Other: null }
|
|
3706
4188
|
| { Owner: null };
|
|
4189
|
+
export interface SealedEntry {
|
|
4190
|
+
id: bigint;
|
|
4191
|
+
entryHash: Uint8Array | number[];
|
|
4192
|
+
digest: Uint8Array | number[];
|
|
4193
|
+
}
|
|
3707
4194
|
export interface Seat {
|
|
3708
4195
|
pairedDay: bigint;
|
|
3709
4196
|
lastPaymentDay: [] | [bigint];
|
|
@@ -3740,6 +4227,10 @@ export interface SessionIntent {
|
|
|
3740
4227
|
expiryNs: bigint;
|
|
3741
4228
|
suggestedDeposit: bigint;
|
|
3742
4229
|
}
|
|
4230
|
+
export interface SignIn {
|
|
4231
|
+
token: BearerToken;
|
|
4232
|
+
clientName: [] | [string];
|
|
4233
|
+
}
|
|
3743
4234
|
export interface SignatureCounts {
|
|
3744
4235
|
total: bigint;
|
|
3745
4236
|
byCaller: Array<CallerSignatureCount>;
|
|
@@ -3799,8 +4290,16 @@ export interface StorageReport {
|
|
|
3799
4290
|
export interface TimerHealth {
|
|
3800
4291
|
jobExpiryFastMode: boolean;
|
|
3801
4292
|
jobExpiryArmed: boolean;
|
|
4293
|
+
ic402Maintenance: [] | [Ic402Maintenance];
|
|
3802
4294
|
alertTimerArmed: boolean;
|
|
4295
|
+
upkeepRejected: [] | [bigint];
|
|
3803
4296
|
sessionExpiryArmed: boolean;
|
|
4297
|
+
ic402MaintenanceTimerArmed: [] | [boolean];
|
|
4298
|
+
checkInsUnfinished: [] | [bigint];
|
|
4299
|
+
}
|
|
4300
|
+
export interface TimersWake {
|
|
4301
|
+
gap: bigint;
|
|
4302
|
+
needed: bigint;
|
|
3804
4303
|
}
|
|
3805
4304
|
export type TokenAmount = { Icp: bigint } | { Ckusdc: bigint } | { Ckusdt: bigint };
|
|
3806
4305
|
export type TrackRecordNotice = { Recorded: null } | { NotRecorded: string };
|
|
@@ -3837,8 +4336,14 @@ export interface WorldIdRpContext {
|
|
|
3837
4336
|
}
|
|
3838
4337
|
export interface WriteReceipt {
|
|
3839
4338
|
seq: bigint;
|
|
4339
|
+
contentRoot: Uint8Array | number[];
|
|
4340
|
+
atNs: bigint;
|
|
3840
4341
|
head: Uint8Array | number[];
|
|
4342
|
+
prev: Uint8Array | number[];
|
|
4343
|
+
size: bigint;
|
|
4344
|
+
recordPrev: Uint8Array | number[];
|
|
3841
4345
|
version: bigint;
|
|
4346
|
+
recordId: bigint;
|
|
3842
4347
|
}
|
|
3843
4348
|
export type X402SignOutcome =
|
|
3844
4349
|
{ ApprovalPending: ApprovalRequest } | { Signed: SignedAuthorization };
|