@engramx/idl 0.16.0-rc.12 → 0.16.0-rc.14
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 +221 -193
- package/dist/engram.idl.d.ts +203 -203
- package/dist/engram.idl.js +130 -112
- package/dist/market.did +45 -20
- package/dist/market.idl.d.ts +39 -20
- package/dist/market.idl.js +36 -23
- package/dist/registry.did +60 -28
- package/dist/registry.idl.d.ts +50 -20
- package/dist/registry.idl.js +35 -23
- package/package.json +1 -1
package/dist/engram.idl.d.ts
CHANGED
|
@@ -7,7 +7,6 @@ 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;
|
|
@@ -24,7 +23,6 @@ export interface About {
|
|
|
24
23
|
firstAgentWriteAtNs: [] | [bigint];
|
|
25
24
|
lastReadAtNs: [] | [bigint];
|
|
26
25
|
writesPaused: boolean;
|
|
27
|
-
distinctReaderClients: bigint;
|
|
28
26
|
totalMemoryReads: bigint;
|
|
29
27
|
walletActivatedAtNs: [] | [bigint];
|
|
30
28
|
encryptionEnabled: boolean;
|
|
@@ -282,6 +280,11 @@ export interface Eip3009Authorization {
|
|
|
282
280
|
nonce: Uint8Array | number[];
|
|
283
281
|
validBefore: bigint;
|
|
284
282
|
}
|
|
283
|
+
export interface Eip712Destination {
|
|
284
|
+
activeFromNs: bigint;
|
|
285
|
+
value: string;
|
|
286
|
+
}
|
|
287
|
+
export type Eip712FieldRule = { mustEqual: string } | { atMost: { max: bigint; decimals: bigint } };
|
|
285
288
|
export interface Eip712Registration {
|
|
286
289
|
encodeTypeString: string;
|
|
287
290
|
cooloffEndsAtNs: bigint;
|
|
@@ -294,6 +297,25 @@ export interface Eip712SignatureOut {
|
|
|
294
297
|
rendered: string;
|
|
295
298
|
digest: Uint8Array | number[];
|
|
296
299
|
}
|
|
300
|
+
export interface Eip712TypeView {
|
|
301
|
+
primaryType: string;
|
|
302
|
+
encodeTypeString: string;
|
|
303
|
+
cooloffEndsAtNs: bigint;
|
|
304
|
+
domainName: string;
|
|
305
|
+
typeId: Uint8Array | number[];
|
|
306
|
+
verifyingContract: string;
|
|
307
|
+
dailySignCap: bigint;
|
|
308
|
+
fields: Array<[string, string]>;
|
|
309
|
+
domainSeparator: Uint8Array | number[];
|
|
310
|
+
destinationFields: Array<string>;
|
|
311
|
+
authorityClass: AuthorityClass;
|
|
312
|
+
typeHash: Uint8Array | number[];
|
|
313
|
+
registeredAtNs: bigint;
|
|
314
|
+
fieldRules: Array<[string, Eip712FieldRule]>;
|
|
315
|
+
chainId: bigint;
|
|
316
|
+
domainVersion: string;
|
|
317
|
+
ackIrrevocable: boolean;
|
|
318
|
+
}
|
|
297
319
|
export type Eip712Value =
|
|
298
320
|
| { string: string }
|
|
299
321
|
| { bool: boolean }
|
|
@@ -335,7 +357,7 @@ export interface Engram {
|
|
|
335
357
|
* / test/key-replacement.test.mo runs it; this body names no roster gate, because the caller holds
|
|
336
358
|
* / no role here until the move.
|
|
337
359
|
*/
|
|
338
|
-
acceptAgentKeyNomination: ActorMethod<[Principal],
|
|
360
|
+
acceptAgentKeyNomination: ActorMethod<[Principal], Result_72>;
|
|
339
361
|
/**
|
|
340
362
|
* / Consensus transform for the alert webhook outcall: collapse the response to status-only so
|
|
341
363
|
* / replicas agree regardless of response headers/body (we only care that the POST landed 2xx).
|
|
@@ -349,10 +371,35 @@ export interface Engram {
|
|
|
349
371
|
[{ context: Uint8Array | number[]; response: HttpRequestResult }],
|
|
350
372
|
HttpRequestResult
|
|
351
373
|
>;
|
|
374
|
+
/**
|
|
375
|
+
* / Owner-managed destination allowlist (D7). Additions LOOSEN and wait 24h; removals TIGHTEN
|
|
376
|
+
* / and apply instantly — the ratified asymmetry, applied to the one mutable policy surface.
|
|
377
|
+
* /
|
|
378
|
+
* / ⟨2026-10-14, the owner's ruling 4A⟩ ONE LIST PER REGISTERED ACTION. `addEvmWithdrawDestination`,
|
|
379
|
+
* / `removeEvmWithdrawDestination` and `listEvmWithdrawDestinations` — one list for every action —
|
|
380
|
+
* / are REMOVED; these three take the action's `typeId`. Same rules, per action: the owner only; an
|
|
381
|
+
* / addition activates after 24 hours and is refused while payments are frozen; a removal is instant
|
|
382
|
+
* / and works while frozen; a value is 1–128 characters (an address, or a venue value such as an
|
|
383
|
+
* / account name). The action must be registered: a destination list belongs to an action, and a
|
|
384
|
+
* / list for no action would be a value nothing checks. The caller is the owner's app.
|
|
385
|
+
*/
|
|
386
|
+
addEip712Destination: ActorMethod<[Uint8Array | number[], string], Result_71>;
|
|
352
387
|
/**
|
|
353
388
|
* / Register a typed-data shape as signable. Owner-only, freeze-gated (a registration is a grant
|
|
354
389
|
* / of FUTURE authority — a frozen engram must not be able to widen what it can sign), and the
|
|
355
390
|
* / shape is IMMUTABLE: any change mints a new typeId.
|
|
391
|
+
* /
|
|
392
|
+
* / ⟨2026-10-14, the owner's rulings 3A and 5A⟩ ONE BAR FOR EVERY REGISTRATION — the class the owner
|
|
393
|
+
* / names is stored as a label and decides nothing. Every registration: records the irrevocability
|
|
394
|
+
* / acknowledgement (`ackIrrevocable = true`); has no opaque field (`bytes`, `bytes1..32`); names at
|
|
395
|
+
* / least one destination field OR carries a must-equal rule; passes the watchers — an owner alert
|
|
396
|
+
* / webhook set, enabled AND with its money class on, and an `#Active` guardian holding
|
|
397
|
+
* / `canFreezePayments`; and waits `Eip712Policy.COOLOFF_NS` (72 hours). It may carry per-field
|
|
398
|
+
* / rules (`fieldRules`: "at most N" read as a plain decimal with D places, "must equal X"), which
|
|
399
|
+
* / are part of the registered shape — inside the typeId, stored in `eip712FieldRules`, enforced in
|
|
400
|
+
* / `eip712SignFor` before the cap reservation. Before this, a withdrawal registered as `#standard`
|
|
401
|
+
* / needed no webhook, no guardian and no destination field, waited one hour, and signed to any
|
|
402
|
+
* / address. Intrinsic checks still come first and the watchers last (the 2026-08-06 re-ordering).
|
|
356
403
|
*/
|
|
357
404
|
addEip712Type: ActorMethod<
|
|
358
405
|
[
|
|
@@ -365,6 +412,7 @@ export interface Engram {
|
|
|
365
412
|
fields: Array<[string, string]>;
|
|
366
413
|
destinationFields: Array<string>;
|
|
367
414
|
authorityClass: { standingAuthority: null } | { valueBearing: null } | { standard: null };
|
|
415
|
+
fieldRules: Array<[string, Eip712FieldRule]>;
|
|
368
416
|
chainId: bigint;
|
|
369
417
|
domainVersion: string;
|
|
370
418
|
ackIrrevocable: boolean;
|
|
@@ -372,11 +420,6 @@ export interface Engram {
|
|
|
372
420
|
],
|
|
373
421
|
Result_70
|
|
374
422
|
>;
|
|
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_69>;
|
|
380
423
|
/**
|
|
381
424
|
* / ⟨0.16.0, L1⟩ THE ROLE-CONFLICT ARM, and why three refusals here are not the same refusal.
|
|
382
425
|
* /
|
|
@@ -422,7 +465,7 @@ export interface Engram {
|
|
|
422
465
|
* / is exactly what a guardian pause exists to hold. No action alert is raised: the operation is
|
|
423
466
|
* / owner-initiated, owner-only, and already chained into the audit log.
|
|
424
467
|
*/
|
|
425
|
-
applyCondense: ActorMethod<[bigint],
|
|
468
|
+
applyCondense: ActorMethod<[bigint], Result_69>;
|
|
426
469
|
/**
|
|
427
470
|
* / Owner-only: activate a guardian who has registered against an invite.
|
|
428
471
|
* /
|
|
@@ -502,7 +545,7 @@ export interface Engram {
|
|
|
502
545
|
* /
|
|
503
546
|
* / The write half also refuses while writes are PAUSED.
|
|
504
547
|
*/
|
|
505
|
-
backupInit: ActorMethod<[string, BackupType, [] | [string], string, [] | [string]],
|
|
548
|
+
backupInit: ActorMethod<[string, BackupType, [] | [string], string, [] | [string]], Result_45>;
|
|
506
549
|
/**
|
|
507
550
|
* / Read one chunk of a finalized backup, by index.
|
|
508
551
|
* /
|
|
@@ -510,7 +553,7 @@ export interface Engram {
|
|
|
510
553
|
* / `canAppendMemory`. Holding one says nothing about the other, deliberately: taking a backup and
|
|
511
554
|
* / carrying it away are different authorities.
|
|
512
555
|
*/
|
|
513
|
-
backupPullChunk: ActorMethod<[string, bigint],
|
|
556
|
+
backupPullChunk: ActorMethod<[string, bigint], Result_61>;
|
|
514
557
|
backupPushChunk: ActorMethod<[string, bigint, Uint8Array | number[]], Result_1>;
|
|
515
558
|
/**
|
|
516
559
|
* / The OWNER cancels an agent's pending key nomination; the agent keeps its current key. Refused
|
|
@@ -548,7 +591,7 @@ export interface Engram {
|
|
|
548
591
|
* / pair — e6 base units of the token named first. A name only: Candid passes arguments by
|
|
549
592
|
* / position, so nothing on the wire moved.
|
|
550
593
|
*/
|
|
551
|
-
convertEarningsToCycles: ActorMethod<[string, bigint],
|
|
594
|
+
convertEarningsToCycles: ActorMethod<[string, bigint], Result_12>;
|
|
552
595
|
/**
|
|
553
596
|
* / Owner-only: mint a single-use invite code an agent redeems with `pairAgent`.
|
|
554
597
|
* /
|
|
@@ -568,7 +611,7 @@ export interface Engram {
|
|
|
568
611
|
* / A principal that is already a GUARDIAN cannot become an agent — a guardian is an
|
|
569
612
|
* / independent check on agents, so one wallet must not hold both.
|
|
570
613
|
*/
|
|
571
|
-
createAgentInvite: ActorMethod<[string, AgentPermissions],
|
|
614
|
+
createAgentInvite: ActorMethod<[string, AgentPermissions], Result_45>;
|
|
572
615
|
/**
|
|
573
616
|
* / Owner-only: mint an invite for a GUARDIAN — an independent check on agents, not a
|
|
574
617
|
* / co-owner and not a recovery agent.
|
|
@@ -592,7 +635,7 @@ export interface Engram {
|
|
|
592
635
|
* / So an invite that fails to redeem for that reason is not a bad code. The rule exists because
|
|
593
636
|
* / a check must be independent of the thing it checks.
|
|
594
637
|
*/
|
|
595
|
-
createGuardianInvite: ActorMethod<[string, GuardianPermissions],
|
|
638
|
+
createGuardianInvite: ActorMethod<[string, GuardianPermissions], Result_45>;
|
|
596
639
|
/**
|
|
597
640
|
* / OWNER-ONLY deletion of a stored backup.
|
|
598
641
|
* /
|
|
@@ -626,37 +669,6 @@ export interface Engram {
|
|
|
626
669
|
* / does not change the policy — the next request over the same limit will be raised again.
|
|
627
670
|
*/
|
|
628
671
|
denyRequest: ActorMethod<[string, string], Result_1>;
|
|
629
|
-
/**
|
|
630
|
-
* / Force the tECDSA derivation and return the address.
|
|
631
|
-
* /
|
|
632
|
-
* / It exists because the gateway's own derivation fires from a timer that is lazy on some
|
|
633
|
-
* / replicas, and until it lands the EVM quote advertises the `0x0` fallback and settle fails
|
|
634
|
-
* / closed — a live money surface quoting an address that cannot receive.
|
|
635
|
-
* /
|
|
636
|
-
* / ⟨0.16.0, B-2⟩ Derivation now comes from `EvmIdentity`, and the return type carries the
|
|
637
|
-
* / outcome: this used to answer `""` on failure, which is a Text a caller can and did paste into
|
|
638
|
-
* / a payment flow. An empty string is not an address, and saying so is the difference between a
|
|
639
|
-
* / failed derivation and an address of nothing.
|
|
640
|
-
* /
|
|
641
|
-
* / ⚠ TRANSITIONAL: it also primes the ic402 gate, because the gate still settles commerce on this
|
|
642
|
-
* / canister until those 47 methods move. That second call disappears with them — it is listed in
|
|
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.⟩
|
|
658
|
-
*/
|
|
659
|
-
ensureEvmReady: ActorMethod<[], Result_44>;
|
|
660
672
|
/**
|
|
661
673
|
* / Record that log entries [fromSeq, toSeq] were served, and return the root that proves it.
|
|
662
674
|
* /
|
|
@@ -671,7 +683,7 @@ export interface Engram {
|
|
|
671
683
|
* / situation rather than a safety measure. It IS gated on requireMemoryAttached: a store that
|
|
672
684
|
* / failed its integrity check must not attest anything it cannot vouch for.
|
|
673
685
|
*/
|
|
674
|
-
exportMemoryRange: ActorMethod<[bigint, bigint, [] | [Principal]],
|
|
686
|
+
exportMemoryRange: ActorMethod<[bigint, bigint, [] | [Principal]], Result_68>;
|
|
675
687
|
/**
|
|
676
688
|
* / ⟨0.16.0, L2.2 — renamed from `guardianFreezePayments`⟩ The prefix LIED about who may call it.
|
|
677
689
|
* / The gate is `requireOwnerOrGuardian`, and an owner freezing their own payments is the ordinary
|
|
@@ -688,6 +700,8 @@ export interface Engram {
|
|
|
688
700
|
* / individual method's body finds nothing — the check is one level down.⟩
|
|
689
701
|
* / · `addEip712Type` and `addEvmWithdrawDestination` — pre-staging for a later payout is the
|
|
690
702
|
* / thing a brake most needs to stop, so the destination list is frozen along with the signing.
|
|
703
|
+
* / ⟨2026-10-14, the owner's ruling 4A⟩ `addEvmWithdrawDestination` is removed; its place is
|
|
704
|
+
* / `addEip712Destination` (one list per registered action), freeze-gated the same way.
|
|
691
705
|
* / · `sessionReadMemory` and `sessionAppendMemory` — the paid-memory rail, money coming IN.
|
|
692
706
|
* /
|
|
693
707
|
* / AND WHAT IT DELIBERATELY DOES NOT, stated so the absence is not read as an oversight:
|
|
@@ -707,7 +721,7 @@ export interface Engram {
|
|
|
707
721
|
/**
|
|
708
722
|
* / Delivery status + config readback. Owner-only (the URL is a secret).
|
|
709
723
|
*/
|
|
710
|
-
getActionAlertStatus: ActorMethod<[],
|
|
724
|
+
getActionAlertStatus: ActorMethod<[], Result_59>;
|
|
711
725
|
/**
|
|
712
726
|
* / Agents need to know what they may revise, so they can read it too. Whole-value config, same
|
|
713
727
|
* / carve-out as getProtectedPaths — and kept a SEPARATE method from it deliberately (L2.2): a
|
|
@@ -717,7 +731,7 @@ export interface Engram {
|
|
|
717
731
|
* / Refusal reason preserved from the trap: a grant is a power, and its absence and its
|
|
718
732
|
* / concealment are different facts.
|
|
719
733
|
*/
|
|
720
|
-
getAgentRevisablePaths: ActorMethod<[],
|
|
734
|
+
getAgentRevisablePaths: ActorMethod<[], Result_55>;
|
|
721
735
|
/**
|
|
722
736
|
* / OWNER-ONLY: every engagement's seat weeks on this engram, with the agent's root — the day it
|
|
723
737
|
* / paired, the days of its first and last payment signature, a 64-week map whose bit 0 is the week
|
|
@@ -730,7 +744,7 @@ export interface Engram {
|
|
|
730
744
|
* / empty page. Paged; `total` is every engagement ever paired here (a reset keeps the rows).
|
|
731
745
|
* / Two rows can name one root: an agent paired again after it left is a second engagement.
|
|
732
746
|
*/
|
|
733
|
-
getAgentSeatWeeks: ActorMethod<[bigint, bigint],
|
|
747
|
+
getAgentSeatWeeks: ActorMethod<[bigint, bigint], Result_66>;
|
|
734
748
|
/**
|
|
735
749
|
* / Owner: everything written into this engram by someone other than the owner since the last
|
|
736
750
|
* / markAgentWritesReviewed() — agent appends/revisions AND paid-session appends (see
|
|
@@ -740,7 +754,7 @@ export interface Engram {
|
|
|
740
754
|
* / as a total. `earliest` discloses ring eviction — if cursor < earliest, entries between them
|
|
741
755
|
* / aged out of the ring (the CHAIN still proves total count; this view can't show their bodies).
|
|
742
756
|
*/
|
|
743
|
-
getAgentWriteReview: ActorMethod<[],
|
|
757
|
+
getAgentWriteReview: ActorMethod<[], Result_65>;
|
|
744
758
|
/**
|
|
745
759
|
* / Why anchoring is or is not advancing. PUBLIC: ungated on purpose — detecting a stalled
|
|
746
760
|
* / engram is the point, a gated read would fail-to-empty and hand a third party fabricated zeros,
|
|
@@ -763,7 +777,7 @@ export interface Engram {
|
|
|
763
777
|
* / was signed rather than asserted.
|
|
764
778
|
*/
|
|
765
779
|
getAuditHead: ActorMethod<[], AuditHead>;
|
|
766
|
-
getBackupMetadata: ActorMethod<[string],
|
|
780
|
+
getBackupMetadata: ActorMethod<[string], Result_64>;
|
|
767
781
|
/**
|
|
768
782
|
* / The cashier this engram recognises as its rent biller — `null` until the registry pushes one.
|
|
769
783
|
* /
|
|
@@ -799,13 +813,13 @@ export interface Engram {
|
|
|
799
813
|
* / recorded nothing while reading as if it did. The refusal is loud in the reply instead. WHAT
|
|
800
814
|
* / WOULD MAKE THIS WRONG: a reason to record who asked — then this becomes an update that says so.
|
|
801
815
|
*/
|
|
802
|
-
getChildAllowance: ActorMethod<[Principal],
|
|
816
|
+
getChildAllowance: ActorMethod<[Principal], Result_63>;
|
|
803
817
|
/**
|
|
804
818
|
* / Owner-only, Billing-class: what opening an engram costs this engram, the balance below which an
|
|
805
819
|
* / agent's request is refused, the balance now, and every agent's allowance. The console's cost
|
|
806
820
|
* / sentence reads it. Cycles are owner-class information, as on the owner's console read.
|
|
807
821
|
*/
|
|
808
|
-
getChildOpening: ActorMethod<[],
|
|
822
|
+
getChildOpening: ActorMethod<[], Result_62>;
|
|
809
823
|
/**
|
|
810
824
|
* / Derive the shared memory-encryption key, encrypted under the caller's transport
|
|
811
825
|
* / public key. Gated to owner + read-agents (the same principals allowed to read
|
|
@@ -831,7 +845,7 @@ export interface Engram {
|
|
|
831
845
|
* / cost. Stated here because L7 requires the reason be readable from the interface rather than
|
|
832
846
|
* / inferred by opening the body — which is exactly what had to happen to write this line.
|
|
833
847
|
*/
|
|
834
|
-
getEncryptedMemoryKey: ActorMethod<[[] | [bigint], Uint8Array | number[]],
|
|
848
|
+
getEncryptedMemoryKey: ActorMethod<[[] | [bigint], Uint8Array | number[]], Result_61>;
|
|
835
849
|
/**
|
|
836
850
|
* / ⟨0.16.0, owner ruling 2026-08-20 — option (a)⟩ `x402Support` REPORTS THE RAIL, not a constant.
|
|
837
851
|
* /
|
|
@@ -858,12 +872,6 @@ export interface Engram {
|
|
|
858
872
|
* / be discovered, and the ERC-8004 ecosystem it participates in assumes an open read.
|
|
859
873
|
*/
|
|
860
874
|
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
875
|
/**
|
|
868
876
|
* / Re-pointed at `EvmIdentity` (B-2): custody derivation no longer routes through the ic402
|
|
869
877
|
* / Gateway, which is leaving for the market canister. Behaviour is unchanged for a caller — same
|
|
@@ -936,7 +944,7 @@ export interface Engram {
|
|
|
936
944
|
* / `#Err`, never a record carrying an empty string (ic402's `getEvmAddress` answers `""` on a
|
|
937
945
|
* / failed derivation — that is fail-to-empty on a money surface, and it stops here).
|
|
938
946
|
*/
|
|
939
|
-
getEvmAddress: ActorMethod<[],
|
|
947
|
+
getEvmAddress: ActorMethod<[], Result_60>;
|
|
940
948
|
/**
|
|
941
949
|
* / The owner's OWN EVM address, if they registered one — distinct from `getEvmAddress`, which is
|
|
942
950
|
* / the address this canister derives for itself.
|
|
@@ -955,7 +963,7 @@ export interface Engram {
|
|
|
955
963
|
* / cost — stated here because L7 requires the reason be readable from the interface rather than
|
|
956
964
|
* / inferred by opening the body.
|
|
957
965
|
*/
|
|
958
|
-
getEvmSignerAddress: ActorMethod<[],
|
|
966
|
+
getEvmSignerAddress: ActorMethod<[], Result_45>;
|
|
959
967
|
/**
|
|
960
968
|
* / PUBLIC: where this chain begins, for the stranger deciding whether to trust it.
|
|
961
969
|
* /
|
|
@@ -968,7 +976,7 @@ export interface Engram {
|
|
|
968
976
|
/**
|
|
969
977
|
* / A guardian's own channel status (their URL is their secret — each guardian sees only theirs).
|
|
970
978
|
*/
|
|
971
|
-
getGuardianAlertStatus: ActorMethod<[],
|
|
979
|
+
getGuardianAlertStatus: ActorMethod<[], Result_59>;
|
|
972
980
|
/**
|
|
973
981
|
* / The market this engram will accept signing requests from — `null` until the registry pushes
|
|
974
982
|
* / one at spawn, which is why `requireMarket` refuses fleet-wide today.
|
|
@@ -1001,7 +1009,7 @@ export interface Engram {
|
|
|
1001
1009
|
* / never renumbered: the next page starts at the last version returned plus one. Defaults
|
|
1002
1010
|
* / return the whole history of any file a pre-FD engram could have held.
|
|
1003
1011
|
*/
|
|
1004
|
-
getMemoryHistory: ActorMethod<[string, [] | [bigint], [] | [bigint]],
|
|
1012
|
+
getMemoryHistory: ActorMethod<[string, [] | [bigint], [] | [bigint]], Result_58>;
|
|
1005
1013
|
/**
|
|
1006
1014
|
* / PUBLIC: the epoch alone, and deliberately nothing else (rotation study D4). A `rotatedAt[]`
|
|
1007
1015
|
* / history would be a public, fleet-enumerable feed of when each owner terminated a trust
|
|
@@ -1050,7 +1058,7 @@ export interface Engram {
|
|
|
1050
1058
|
* / forever" — a claim about what this engram will DESTROY — and an empty guard list reads as
|
|
1051
1059
|
* / "nothing is held back".
|
|
1052
1060
|
*/
|
|
1053
|
-
getMemoryRetentionPolicy: ActorMethod<[],
|
|
1061
|
+
getMemoryRetentionPolicy: ActorMethod<[], Result_57>;
|
|
1054
1062
|
/**
|
|
1055
1063
|
* / The metrics reader this engram answers — `null` until the spawning registry names one.
|
|
1056
1064
|
* /
|
|
@@ -1079,7 +1087,7 @@ export interface Engram {
|
|
|
1079
1087
|
* / client (rule 4) and bought a masked answer nobody had asked for — the census could not even
|
|
1080
1088
|
* / find a consumer that read the masked `0`. Behind a gate there is nobody to mask it from.
|
|
1081
1089
|
*/
|
|
1082
|
-
getOwnerConsole: ActorMethod<[],
|
|
1090
|
+
getOwnerConsole: ActorMethod<[], Result_56>;
|
|
1083
1091
|
/**
|
|
1084
1092
|
* / Owner + agents only (agents need it to avoid writing protected paths).
|
|
1085
1093
|
* /
|
|
@@ -1093,7 +1101,7 @@ export interface Engram {
|
|
|
1093
1101
|
* / writing one — so a fabricated empty here does not merely misinform, it invites the write the
|
|
1094
1102
|
* / list exists to prevent.
|
|
1095
1103
|
*/
|
|
1096
|
-
getProtectedPaths: ActorMethod<[],
|
|
1104
|
+
getProtectedPaths: ActorMethod<[], Result_55>;
|
|
1097
1105
|
/**
|
|
1098
1106
|
* / Whether the metrics reader's read is answered — `true` from birth.
|
|
1099
1107
|
* /
|
|
@@ -1106,7 +1114,7 @@ export interface Engram {
|
|
|
1106
1114
|
* / payment signatures the balance carries above the floor before `signX402Payment` is refused by
|
|
1107
1115
|
* / name. The same numbers the check uses, so Billing can say only what the engram enforces.
|
|
1108
1116
|
*/
|
|
1109
|
-
getSigningFloor: ActorMethod<[],
|
|
1117
|
+
getSigningFloor: ActorMethod<[], Result_54>;
|
|
1110
1118
|
/**
|
|
1111
1119
|
* / The registry that spawned this engram, if it recorded one.
|
|
1112
1120
|
* /
|
|
@@ -1127,7 +1135,7 @@ export interface Engram {
|
|
|
1127
1135
|
* / A refusal names this method (`Gated.gatedResult`) rather than answering null/0 — a ceiling of
|
|
1128
1136
|
* / "none" and a spend of 0 are both real answers, so a fabricated one would be read as fact.
|
|
1129
1137
|
*/
|
|
1130
|
-
getSpendCeiling: ActorMethod<[],
|
|
1138
|
+
getSpendCeiling: ActorMethod<[], Result_53>;
|
|
1131
1139
|
/**
|
|
1132
1140
|
* / Read the caps in force for a caller.
|
|
1133
1141
|
* /
|
|
@@ -1137,8 +1145,8 @@ export interface Engram {
|
|
|
1137
1145
|
* / configuration, and publishing them would tell any caller exactly how large a signing request
|
|
1138
1146
|
* / can be before it needs an approval nobody is watching for.
|
|
1139
1147
|
*/
|
|
1140
|
-
getSpendPolicy: ActorMethod<[[] | [Principal]],
|
|
1141
|
-
getStorageStats: ActorMethod<[],
|
|
1148
|
+
getSpendPolicy: ActorMethod<[[] | [Principal]], Result_52>;
|
|
1149
|
+
getStorageStats: ActorMethod<[], Result_51>;
|
|
1142
1150
|
/**
|
|
1143
1151
|
* / Timer arm-state. PUBLIC and deliberately so: these timers are self-arming to save cycles,
|
|
1144
1152
|
* / and an optimisation nobody can verify is an optimisation nobody should trust. Cheap to read,
|
|
@@ -1211,14 +1219,14 @@ export interface Engram {
|
|
|
1211
1219
|
* / UPDATE, marked per L7: it awaits three ICRC-1 ledgers". It was marked in prose and invisible
|
|
1212
1220
|
* / to any gate; the glyph is what `scripts/check-update-for-read.mjs` matches.
|
|
1213
1221
|
*/
|
|
1214
|
-
getWalletBalances: ActorMethod<[],
|
|
1222
|
+
getWalletBalances: ActorMethod<[], Result_50>;
|
|
1215
1223
|
/**
|
|
1216
1224
|
* / Refusal reason preserved, and it is the clearest case of why a masked read is worse than no
|
|
1217
1225
|
* / read: three empty strings with `configured = false` is a VALID-LOOKING answer meaning "this
|
|
1218
1226
|
* / engram has no World ID configuration" — handed to a caller who merely lacks a grant. The
|
|
1219
1227
|
* / fabrication is indistinguishable from the truth by construction.
|
|
1220
1228
|
*/
|
|
1221
|
-
getWorldIdConfig: ActorMethod<[],
|
|
1229
|
+
getWorldIdConfig: ActorMethod<[], Result_49>;
|
|
1222
1230
|
/**
|
|
1223
1231
|
* / ⟨L7⟩ UPDATE, NOT QUERY: this awaits THREE system calls — `raw_rand()` for the nonce,
|
|
1224
1232
|
* / `Call.signWithEcdsa` for the signature, and `worldIdRpPublicKey()` for the derived key. A
|
|
@@ -1229,7 +1237,7 @@ export interface Engram {
|
|
|
1229
1237
|
* / the World Developer Portal. Short-lived (300s TTL, idkit-server's default) and single-purpose —
|
|
1230
1238
|
* / it authorizes opening one verification request, nothing else.
|
|
1231
1239
|
*/
|
|
1232
|
-
getWorldIdRpContext: ActorMethod<[],
|
|
1240
|
+
getWorldIdRpContext: ActorMethod<[], Result_48>;
|
|
1233
1241
|
/**
|
|
1234
1242
|
* / Owner-only: the EVM address derived from the engram's dedicated World ID RP signing key (the
|
|
1235
1243
|
* / "worldid-rp" tECDSA path). Register THIS address as the rp_id's signer in the World Developer
|
|
@@ -1241,7 +1249,7 @@ export interface Engram {
|
|
|
1241
1249
|
* / refusal — a state write, which a query cannot perform. So even if the key were cached this
|
|
1242
1250
|
* / could not become a query without silently retiring its denial record (ADR-0002's class).
|
|
1243
1251
|
*/
|
|
1244
|
-
getWorldIdRpSignerAddress: ActorMethod<[],
|
|
1252
|
+
getWorldIdRpSignerAddress: ActorMethod<[], Result_45>;
|
|
1245
1253
|
/**
|
|
1246
1254
|
* / The verified IDKitResult, verbatim, as World's /api/v4/verify accepted it — the re-checkable
|
|
1247
1255
|
* / artifact behind verifiedHuman. Role-gated because it carries the NULLIFIER.
|
|
@@ -1262,7 +1270,7 @@ export interface Engram {
|
|
|
1262
1270
|
* / canister does not serve. The tombstones below and at `about()` are historical and correct as
|
|
1263
1271
|
* / written; this one was present tense, which is the difference that matters.⟩
|
|
1264
1272
|
*/
|
|
1265
|
-
getWorldIdVerification: ActorMethod<[],
|
|
1273
|
+
getWorldIdVerification: ActorMethod<[], Result_47>;
|
|
1266
1274
|
/**
|
|
1267
1275
|
* / ⟨0.16.0, L1⟩ THE EMERGENCY FAMILY. Every refusal below is `#Refused` or `#NotFound`, and the
|
|
1268
1276
|
* / absence of a `#Conflict` here is the point: these are the calls someone makes while something
|
|
@@ -1346,7 +1354,7 @@ export interface Engram {
|
|
|
1346
1354
|
* / Owner-gated because it reports on custody posture, and answered as a Result so that a
|
|
1347
1355
|
* / wrong-identity caller gets a refusal rather than a bare `false` that reads as "no address yet".
|
|
1348
1356
|
*/
|
|
1349
|
-
isEvmAddressCached: ActorMethod<[],
|
|
1357
|
+
isEvmAddressCached: ActorMethod<[], Result_46>;
|
|
1350
1358
|
/**
|
|
1351
1359
|
* / Issue an OAuth authorization code. Called by an OAuth client's sign-in bridge
|
|
1352
1360
|
* / (an `/auth/connector`-style route) after II authentication. The client then
|
|
@@ -1355,7 +1363,7 @@ export interface Engram {
|
|
|
1355
1363
|
* /
|
|
1356
1364
|
* / Owner-only: only the engram owner can authorize a Connector install.
|
|
1357
1365
|
*/
|
|
1358
|
-
issueAuthCode: ActorMethod<[string, string, string, [] | [string]],
|
|
1366
|
+
issueAuthCode: ActorMethod<[string, string, string, [] | [string]], Result_45>;
|
|
1359
1367
|
/**
|
|
1360
1368
|
* / ⟨0.16.0⟩ `getCycleSnapshotSource` DELETED — folded into `CycleSnapshot.source`, one label per
|
|
1361
1369
|
* / ROW. A single label for a whole ring misattributes every row recorded under the other source,
|
|
@@ -1371,7 +1379,7 @@ export interface Engram {
|
|
|
1371
1379
|
* / DORMANT engram and corrupts retention math — a fabricated empty here does not just misinform a
|
|
1372
1380
|
* / reader, it feeds a wrong number into a decision about destroying data.
|
|
1373
1381
|
*/
|
|
1374
|
-
listActivitySnapshots: ActorMethod<[bigint, bigint],
|
|
1382
|
+
listActivitySnapshots: ActorMethod<[bigint, bigint], Result_44>;
|
|
1375
1383
|
/**
|
|
1376
1384
|
* / ⟨0.16.0⟩ THE PAGE EXEMPLAR. Trap → `#Refused`, bare array → `Result<Page<T>>` (L1 + L3).
|
|
1377
1385
|
* /
|
|
@@ -1388,7 +1396,7 @@ export interface Engram {
|
|
|
1388
1396
|
* / `withheld` is 0: this roster is owner-only in whole, so there is no partial-visibility case.
|
|
1389
1397
|
* / A method that filters rows by caller sets it — see L1's row-level honesty rule.
|
|
1390
1398
|
*/
|
|
1391
|
-
listAgents: ActorMethod<[bigint, bigint],
|
|
1399
|
+
listAgents: ActorMethod<[bigint, bigint], Result_43>;
|
|
1392
1400
|
/**
|
|
1393
1401
|
* / The GUARDIAN-audience projection of the agent roster — three fields, not the full record.
|
|
1394
1402
|
* /
|
|
@@ -1402,7 +1410,7 @@ export interface Engram {
|
|
|
1402
1410
|
* / guardian consults BEFORE REVOKING ONE. A fabricated empty here does not merely misinform —
|
|
1403
1411
|
* / it tells someone acting under emergency powers that there is nothing to act on.
|
|
1404
1412
|
*/
|
|
1405
|
-
listAgentsForGuardian: ActorMethod<[bigint, bigint],
|
|
1413
|
+
listAgentsForGuardian: ActorMethod<[bigint, bigint], Result_42>;
|
|
1406
1414
|
/**
|
|
1407
1415
|
* / Owner-only: rows carry caller, amount, operation and free-text rationale. The SDK omits it.
|
|
1408
1416
|
* /
|
|
@@ -1437,8 +1445,22 @@ export interface Engram {
|
|
|
1437
1445
|
* / For the owner and a guardian `withheld` is 0 and the page is the span. WHAT WOULD MAKE THIS
|
|
1438
1446
|
* / WRONG: a reader who must see the whole record without being the owner or a guardian — the
|
|
1439
1447
|
* / public certified head is the answer for integrity, and nothing else is.
|
|
1440
|
-
|
|
1441
|
-
|
|
1448
|
+
* /
|
|
1449
|
+
* / ⟨2026-10-15, the owner's ruling 6B of 2026-10-14⟩ PUBLIC NOW, AND THE COUNT BECAME ROWS. The
|
|
1450
|
+
* / reply is a `Wire.RecordPage`: every entry in the span the reader may not see in full comes back
|
|
1451
|
+
* / as a hash-only row in `sealed` (id, SHA-256 of its body, entry hash) instead of being counted in
|
|
1452
|
+
* / `withheld`, so `items.size() + sealed.size()` is the span examined. Each entry is hashed first,
|
|
1453
|
+
* / then chained (`AuditLog`), so those rows are enough to walk from any entry to the certified
|
|
1454
|
+
* / head — which is what lets a stranger check one entry without the owner. A caller with no role,
|
|
1455
|
+
* / the anonymous caller included, is a stranger (`RecordView.readerFrom`) and gets only sealed
|
|
1456
|
+
* / rows; the owner and guardians still see every entry, an agent its own. Nothing here refuses,
|
|
1457
|
+
* / so the read's former refusal ("Anonymous caller not allowed") is gone from it.
|
|
1458
|
+
* / `ringFloor` says where the ring starts — a `start` below it begins at it — and `hashFirstFrom`
|
|
1459
|
+
* / where this record switched to the hash-first rule. A sealed row costs one SHA-256 of its body
|
|
1460
|
+
* / at read time; nothing new is stored. WHAT WOULD MAKE THIS WRONG: a sealed row carrying any part
|
|
1461
|
+
* / of a body, or a stranger reaching `items` (test/record-view.test.mo pins both).
|
|
1462
|
+
*/
|
|
1463
|
+
listAuditEntries: ActorMethod<[bigint, bigint], Result_41>;
|
|
1442
1464
|
/**
|
|
1443
1465
|
* / ⟨0.16.0, L1 + L3 — census-ruled⟩ THE TWO-MECHANISM EXCEPTION DISSOLVES.
|
|
1444
1466
|
* /
|
|
@@ -1504,15 +1526,6 @@ export interface Engram {
|
|
|
1504
1526
|
* / complete one. Counted before slicing, so policy-hidden rows never blur into paging.
|
|
1505
1527
|
*/
|
|
1506
1528
|
listDeletedMemoryFiles: ActorMethod<[bigint, bigint], Result_36>;
|
|
1507
|
-
/**
|
|
1508
|
-
* / The registered shapes — E3: encodeTypeString is the display artifact, verbatim.
|
|
1509
|
-
* / Stays on the engram under B1 (hybrid): EIP-712 signing is custody, and custody does not leave.
|
|
1510
|
-
* /
|
|
1511
|
-
* / Refusal reason preserved: `[]` reads as "this engram can sign nothing" — a claim about SIGNING
|
|
1512
|
-
* / AUTHORITY, which is not a thing to hand an unauthorized reader. The public trail of every
|
|
1513
|
-
* / registration remains the audit chain under getCertifiedAuditHead.
|
|
1514
|
-
*/
|
|
1515
|
-
listEip712Types: ActorMethod<[bigint, bigint], Result_35>;
|
|
1516
1529
|
/**
|
|
1517
1530
|
* / Stays on the engram under B1 (hybrid): withdrawal custody does not leave.
|
|
1518
1531
|
* /
|
|
@@ -1522,8 +1535,26 @@ export interface Engram {
|
|
|
1522
1535
|
* / Refusal reason preserved, and it has two halves that matter separately: `[]` reads as "this
|
|
1523
1536
|
* / engram may withdraw nowhere", OR — worse — as "no allowlist is in force", which is the
|
|
1524
1537
|
* / opposite security posture. It also erases any pending 24h activation from view.
|
|
1538
|
+
* /
|
|
1539
|
+
* / ⟨2026-10-14, 4A⟩ One action's list: `typeId` names the action, and an unregistered one is
|
|
1540
|
+
* / `#NotFound` rather than an empty page (an empty page means "this action may sign to nothing").
|
|
1541
|
+
* / The item's field is `value`, not `address`: a list may hold a venue value that is no address.
|
|
1542
|
+
* / Readable by the owner, an active agent or an active guardian, as the old list was.
|
|
1525
1543
|
*/
|
|
1526
|
-
|
|
1544
|
+
listEip712Destinations: ActorMethod<[Uint8Array | number[], bigint, bigint], Result_35>;
|
|
1545
|
+
/**
|
|
1546
|
+
* / The registered shapes — E3: encodeTypeString is the display artifact, verbatim.
|
|
1547
|
+
* / Stays on the engram under B1 (hybrid): EIP-712 signing is custody, and custody does not leave.
|
|
1548
|
+
* /
|
|
1549
|
+
* / Refusal reason preserved: `[]` reads as "this engram can sign nothing" — a claim about SIGNING
|
|
1550
|
+
* / AUTHORITY, which is not a thing to hand an unauthorized reader. The public trail of every
|
|
1551
|
+
* / registration remains the audit chain under getCertifiedAuditHead.
|
|
1552
|
+
* /
|
|
1553
|
+
* / ⟨2026-10-14, the owner's ruling 3A⟩ Each row carries its per-field rules (`fieldRules`), joined in
|
|
1554
|
+
* / from `eip712FieldRules` — they are part of what the type authorises, so a reader of the list must
|
|
1555
|
+
* / not have to make a second call to learn them. The row type is `Eip712TypeView`.
|
|
1556
|
+
*/
|
|
1557
|
+
listEip712Types: ActorMethod<[bigint, bigint], Result_34>;
|
|
1527
1558
|
/**
|
|
1528
1559
|
* / Accessible by owner and guardians.
|
|
1529
1560
|
* /
|
|
@@ -1792,7 +1823,7 @@ export interface Engram {
|
|
|
1792
1823
|
* / and this never inspects an operation or a role. Widening what the review shows therefore
|
|
1793
1824
|
* / changes only which ids the console can pass here — it cannot desynchronise the cursor.
|
|
1794
1825
|
*/
|
|
1795
|
-
markAgentWritesReviewed: ActorMethod<[[] | [bigint]],
|
|
1826
|
+
markAgentWritesReviewed: ActorMethod<[[] | [bigint]], Result_12>;
|
|
1796
1827
|
/**
|
|
1797
1828
|
* / The AGENT's current key nominates the key that will replace it. Nothing moves yet: the new
|
|
1798
1829
|
* / key must accept, by its own call, within 24 hours (`acceptAgentKeyNomination`). One pending
|
|
@@ -1840,7 +1871,7 @@ export interface Engram {
|
|
|
1840
1871
|
* / NOT freeze-gated: the owner always controls their own funds.
|
|
1841
1872
|
* / Guardian freeze only blocks agent/public operations.
|
|
1842
1873
|
*/
|
|
1843
|
-
ownerWithdraw: ActorMethod<[TokenAmount, [] | [ActionAuth]],
|
|
1874
|
+
ownerWithdraw: ActorMethod<[TokenAmount, [] | [ActionAuth]], Result_12>;
|
|
1844
1875
|
/**
|
|
1845
1876
|
* / ⟨0.16.0⟩ `payRentFromEarnings` DELETED — ruled TWICE (B1 and B2), and it was the single
|
|
1846
1877
|
* / clearest violation of the OSS/platform split in this repo.
|
|
@@ -1969,7 +2000,7 @@ export interface Engram {
|
|
|
1969
2000
|
* / (`sessionReadContext` and the MCP reads). A caller measuring engram usage from this method
|
|
1970
2001
|
* / will measure nothing.
|
|
1971
2002
|
*/
|
|
1972
|
-
readMemory: ActorMethod<[string],
|
|
2003
|
+
readMemory: ActorMethod<[string], Result_10>;
|
|
1973
2004
|
/**
|
|
1974
2005
|
* / Read many paths in one call. Per-path Results are KEPT — partial success is the point, and
|
|
1975
2006
|
* / one unreadable path must not fail the other nine.
|
|
@@ -2089,6 +2120,11 @@ export interface Engram {
|
|
|
2089
2120
|
* / following later changes. That makes every override permanent in effect.
|
|
2090
2121
|
*/
|
|
2091
2122
|
removeCallerSpendPolicy: ActorMethod<[Principal], Result_1>;
|
|
2123
|
+
/**
|
|
2124
|
+
* / ⟨2026-10-14, 4A⟩ Remove a destination from one action's list. Instant, and NOT freeze-gated:
|
|
2125
|
+
* / removal TIGHTENS, and a frozen engram must still be able to shrink what it could sign to.
|
|
2126
|
+
*/
|
|
2127
|
+
removeEip712Destination: ActorMethod<[Uint8Array | number[], string], Result_1>;
|
|
2092
2128
|
/**
|
|
2093
2129
|
* / De-register a type that has NEVER SIGNED. Exists because of a hazard the first external
|
|
2094
2130
|
* / validation found within hours (consumer report, 2026-08-06): a bare-name #standard registration —
|
|
@@ -2099,9 +2135,10 @@ export interface Engram {
|
|
|
2099
2135
|
* / removes only authority that was never exercised, which is removing nothing but the mistake.
|
|
2100
2136
|
* / NOT freeze-gated, same reasoning as removeEvmWithdrawDestination: this is TIGHTENING, and a
|
|
2101
2137
|
* / frozen engram must still be able to shrink what it could sign.
|
|
2138
|
+
* / ⟨2026-10-14⟩ `removeEvmWithdrawDestination` is now `removeEip712Destination` (ruling 4A); same
|
|
2139
|
+
* / reasoning. Removing a type now also drops its rules and its own destination list.
|
|
2102
2140
|
*/
|
|
2103
2141
|
removeEip712Type: ActorMethod<[Uint8Array | number[]], Result_1>;
|
|
2104
|
-
removeEvmWithdrawDestination: ActorMethod<[string], Result_1>;
|
|
2105
2142
|
/**
|
|
2106
2143
|
* / Owner-only: remove a guardian from the roster.
|
|
2107
2144
|
* /
|
|
@@ -2118,7 +2155,7 @@ export interface Engram {
|
|
|
2118
2155
|
* / the original audit entry stay exactly where they were; this appends a chained
|
|
2119
2156
|
* / `memory.repudiate` entry and lists the (path, version) so readers can see the dispute.
|
|
2120
2157
|
*/
|
|
2121
|
-
repudiateMemoryWrite: ActorMethod<[string, bigint, string],
|
|
2158
|
+
repudiateMemoryWrite: ActorMethod<[string, bigint, string], Result_12>;
|
|
2122
2159
|
/**
|
|
2123
2160
|
* / ⚠ OWNER-ONLY BULK RESET. Destructive, and wider than its name suggests.
|
|
2124
2161
|
* /
|
|
@@ -2262,7 +2299,7 @@ export interface Engram {
|
|
|
2262
2299
|
* / that fails leaves the agents revoked here regardless — a partial notify is not a partial
|
|
2263
2300
|
* / revocation, which is the direction that matters for a panic button.
|
|
2264
2301
|
*/
|
|
2265
|
-
revokeAllAgents: ActorMethod<[],
|
|
2302
|
+
revokeAllAgents: ActorMethod<[], Result_12>;
|
|
2266
2303
|
/**
|
|
2267
2304
|
* / Owner-only panic button: revoke every connector bearer token at once. Returns how many.
|
|
2268
2305
|
* /
|
|
@@ -2273,7 +2310,7 @@ export interface Engram {
|
|
|
2273
2310
|
* /
|
|
2274
2311
|
* / Tokens are re-issuable: revoking them is not permanent the way revoking an agent is.
|
|
2275
2312
|
*/
|
|
2276
|
-
revokeAllBearerTokens: ActorMethod<[],
|
|
2313
|
+
revokeAllBearerTokens: ActorMethod<[], Result_12>;
|
|
2277
2314
|
/**
|
|
2278
2315
|
* / ⟨0.16.0⟩ `removeAllGuardians` DELETED — test-only (L6), and verified NOT part of KILL-SWITCH's
|
|
2279
2316
|
* / mass-revoke set. The destructive phase-07 suite iterates `removeGuardian` instead, so nothing
|
|
@@ -2287,7 +2324,7 @@ export interface Engram {
|
|
|
2287
2324
|
* / Unlike revoking an agent, this costs nothing permanently — an invite is a one-time code,
|
|
2288
2325
|
* / so voiding it and minting a fresh one is the ordinary path.
|
|
2289
2326
|
*/
|
|
2290
|
-
revokeAllInvites: ActorMethod<[],
|
|
2327
|
+
revokeAllInvites: ActorMethod<[], Result_12>;
|
|
2291
2328
|
/**
|
|
2292
2329
|
* / Revoke a bearer token by its public tokenId. Idempotent.
|
|
2293
2330
|
* / Subsequent /mcp requests using this token will be rejected.
|
|
@@ -2320,15 +2357,6 @@ export interface Engram {
|
|
|
2320
2357
|
* / agent reading `#Refused` would go looking for a permission that was never missing.
|
|
2321
2358
|
*/
|
|
2322
2359
|
rotateAgentKeyHash: ActorMethod<[string], Result_1>;
|
|
2323
|
-
/**
|
|
2324
|
-
* / One-time onboarding seed: writes a starter file so the first read-back is non-empty.
|
|
2325
|
-
* /
|
|
2326
|
-
* / Owner-only, and it REFUSES once any memory exists — so it can only ever add the initial
|
|
2327
|
-
* / placeholder and can never overwrite real content. Deliberately NOT counted as a write (no
|
|
2328
|
-
* / `totalMemoryWrites`, no `firstWriteAt`): it is a system seed rather than activity, and
|
|
2329
|
-
* / counting it would corrupt both the write metrics and time-to-first-write for every engram.
|
|
2330
|
-
*/
|
|
2331
|
-
seedMemory: ActorMethod<[string, Uint8Array | number[]], Result>;
|
|
2332
2360
|
/**
|
|
2333
2361
|
* / Append to a memory file against a PAID x402 session voucher — the write half of the paid rail,
|
|
2334
2362
|
* / authorized by the voucher rather than by a role.
|
|
@@ -2375,7 +2403,7 @@ export interface Engram {
|
|
|
2375
2403
|
* / CIPHERTEXT; the key-holding SDK decrypts it. A caller without the key gets bytes it cannot
|
|
2376
2404
|
* / read, not an error.
|
|
2377
2405
|
*/
|
|
2378
|
-
sessionReadContext: ActorMethod<[string],
|
|
2406
|
+
sessionReadContext: ActorMethod<[string], Result_11>;
|
|
2379
2407
|
/**
|
|
2380
2408
|
* / Read one memory file against a PAID x402 session voucher. No role, no invite — the voucher is
|
|
2381
2409
|
* / the authorization, which is what makes this the engram's one rail a stranger can pay to use.
|
|
@@ -2407,7 +2435,7 @@ export interface Engram {
|
|
|
2407
2435
|
* / cent voucher could read `secrets/*`.
|
|
2408
2436
|
* / · Payments are frozen on this engram.
|
|
2409
2437
|
*/
|
|
2410
|
-
sessionReadMemory: ActorMethod<[Voucher, string],
|
|
2438
|
+
sessionReadMemory: ActorMethod<[Voucher, string], Result_10>;
|
|
2411
2439
|
/**
|
|
2412
2440
|
* / Configure action alerts: an https webhook that receives new chained-audit entries matching the
|
|
2413
2441
|
* / enabled event classes (money / approvals / guardian / agentWrites), batched, at most one
|
|
@@ -2454,7 +2482,7 @@ export interface Engram {
|
|
|
2454
2482
|
* / by a `Debug.print` nobody reads. An owner lowering the cap is destroying their own backups;
|
|
2455
2483
|
* / they are told how many, in the reply and in the audit line.
|
|
2456
2484
|
*/
|
|
2457
|
-
setBackupRetention: ActorMethod<[string, bigint],
|
|
2485
|
+
setBackupRetention: ActorMethod<[string, bigint], Result_9>;
|
|
2458
2486
|
/**
|
|
2459
2487
|
* / Override the caps for ONE caller — an agent this owner trusts more, or less, than the rest.
|
|
2460
2488
|
*/
|
|
@@ -2576,6 +2604,10 @@ export interface Engram {
|
|
|
2576
2604
|
* / bounded instead by each registered type's daily count and destination list; and agent-
|
|
2577
2605
|
* / registration transactions (`signEngramRegistration`), bounded by three per caller per day and
|
|
2578
2606
|
* / the 500-gwei gas ceiling. Whether the ceiling should cover them is a separate owner question.⟩
|
|
2607
|
+
* / ⟨2026-10-14, the owner's rulings 3A, 4A and 5A⟩ Typed-data signatures are now bounded by each
|
|
2608
|
+
* / registered type's daily count, its per-field rules ("at most N", "must equal X") and ITS OWN
|
|
2609
|
+
* / destination list, and the signing floor (`SigningFloor`) guards them as it guards x402 payments.
|
|
2610
|
+
* / They are still not counted against this ceiling.
|
|
2579
2611
|
* /
|
|
2580
2612
|
* / WHY: the owner decided on 2026-09-28 to add one daily spending ceiling across all callers on an
|
|
2581
2613
|
* / engram and keep the limit of five agents. Every other spending limit is per caller, so without
|
|
@@ -2706,7 +2738,7 @@ export interface Engram {
|
|
|
2706
2738
|
maxPriorityFeePerGas: bigint;
|
|
2707
2739
|
},
|
|
2708
2740
|
],
|
|
2709
|
-
|
|
2741
|
+
Result_8
|
|
2710
2742
|
>;
|
|
2711
2743
|
/**
|
|
2712
2744
|
* / Sign an EIP-3009 authorization for x402 payment. Agent-accessible.
|
|
@@ -2745,37 +2777,6 @@ export interface Engram {
|
|
|
2745
2777
|
],
|
|
2746
2778
|
Result_3
|
|
2747
2779
|
>;
|
|
2748
|
-
/**
|
|
2749
|
-
* / Self-heal: if the registry's spawn-time push was missed, the owner pulls the number from
|
|
2750
|
-
* / the spawning registry. Idempotent; fails closed if the registry has no record.
|
|
2751
|
-
*/
|
|
2752
|
-
syncEngramNumber: ActorMethod<[], Result_8>;
|
|
2753
|
-
/**
|
|
2754
|
-
* / Genesis seed — the atomic "spawn only when there's real content" primitive. The spawning
|
|
2755
|
-
* / REGISTRY pushes the owner's first real memory immediately after install, so a canister is
|
|
2756
|
-
* / never spawned holding nothing (see the registry's `provisionEngram` optional genesis).
|
|
2757
|
-
* /
|
|
2758
|
-
* / Gated `spawnedBy`-only and ONE-SHOT: it refuses once any file exists, so it can seed and never
|
|
2759
|
-
* / overwrite. Unlike the owner-only `seedMemory` placeholder this is REAL owner content, so it
|
|
2760
|
-
* / IS counted as an owner write (`firstWriteAt`, `totalMemoryWrites`) and is authored by the
|
|
2761
|
-
* / OWNER rather than by the registry principal that called it. It never touches the
|
|
2762
|
-
* / agent metrics.
|
|
2763
|
-
* /
|
|
2764
|
-
* / ⚠ THE PAYLOAD IS `Nat` AND MUST STAY `Nat`, which is a constraint on any client of this
|
|
2765
|
-
* / method rather than an internal detail. Its only caller is the registry, over an
|
|
2766
|
-
* / inter-canister boundary, through a hand-declared actor type — and the registry is ROUTINELY a
|
|
2767
|
-
* / different version from the engram template it is seeding: it upgrades before the fleet does,
|
|
2768
|
-
* / and during a transition it can serve a template older than itself. A return-type change here
|
|
2769
|
-
* / breaks genesis provisioning across that skew. That is measured, not predicted: the registry
|
|
2770
|
-
* / trapped with "IDL error: unexpected IDL type when parsing Nat" while seeding an engram built
|
|
2771
|
-
* / at the staging tag. A receipt would buy nothing anyway — the caller does `ignore await`.
|
|
2772
|
-
* /
|
|
2773
|
-
* / ⚠ ORDERING: upload the engram TEMPLATE first, then upgrade the registry. The reverse leaves a
|
|
2774
|
-
* / window where a spawn seeds an old-shape engram with a new-shape expectation; the reply fails
|
|
2775
|
-
* / to decode and `provisionEngram` dies on a trap its own `try/catch` cannot reach (ADR-0001),
|
|
2776
|
-
* / failing the WHOLE SPAWN rather than just the seed.
|
|
2777
|
-
*/
|
|
2778
|
-
sysApplyGenesisSeed: ActorMethod<[string, Uint8Array | number[]], Result_8>;
|
|
2779
2780
|
/**
|
|
2780
2781
|
* / OWNER force-close, for a session the payer abandoned.
|
|
2781
2782
|
* /
|
|
@@ -2972,11 +2973,6 @@ export interface Engram {
|
|
|
2972
2973
|
* / rather than telling an owner to run a call they can no longer make.
|
|
2973
2974
|
*/
|
|
2974
2975
|
sysSetBillerId: ActorMethod<[Principal], Result_1>;
|
|
2975
|
-
/**
|
|
2976
|
-
* / One-shot assignment of the spawn ordinal — callable ONLY by the spawning registry, ONLY
|
|
2977
|
-
* / while unset. Neither the owner nor any later registry can change an assigned number.
|
|
2978
|
-
*/
|
|
2979
|
-
sysSetEngramNumber: ActorMethod<[bigint], Result_1>;
|
|
2980
2976
|
/**
|
|
2981
2977
|
* / Point this engram at the commerce satellite allowed to ask it for signatures. ⟨0.16.0, B1⟩
|
|
2982
2978
|
* /
|
|
@@ -3018,6 +3014,9 @@ export interface Engram {
|
|
|
3018
3014
|
* / (the market cannot introduce a shape), its cool-off must have elapsed, its per-type daily cap
|
|
3019
3015
|
* / still binds, the destination allowlist still fails closed, and a payments freeze still stops
|
|
3020
3016
|
* / it. What the market supplies is the request; what the engram supplies is the whole policy.
|
|
3017
|
+
* / ⟨2026-10-14⟩ And the type's per-field rules, its own destination list (ruling 4A) and the
|
|
3018
|
+
* / signing floor (ruling 5A) — all in `eip712SignFor`, so they bind the market as they bind the
|
|
3019
|
+
* / owner; a refusal here is on the chained record under the market's caller and role.
|
|
3021
3020
|
* /
|
|
3022
3021
|
* / That is what "signatures only" means in code, and it is why this method needs no new authority
|
|
3023
3022
|
* / model: an unregistered typeId is refused for the market exactly as it is for the owner.
|
|
@@ -3449,12 +3448,12 @@ export interface Page_10 {
|
|
|
3449
3448
|
export interface Page_11 {
|
|
3450
3449
|
total: bigint;
|
|
3451
3450
|
withheld: bigint;
|
|
3452
|
-
items: Array<
|
|
3451
|
+
items: Array<Eip712TypeView>;
|
|
3453
3452
|
}
|
|
3454
3453
|
export interface Page_12 {
|
|
3455
3454
|
total: bigint;
|
|
3456
3455
|
withheld: bigint;
|
|
3457
|
-
items: Array<
|
|
3456
|
+
items: Array<Eip712Destination>;
|
|
3458
3457
|
}
|
|
3459
3458
|
export interface Page_13 {
|
|
3460
3459
|
total: bigint;
|
|
@@ -3590,23 +3589,12 @@ export interface ReceiptPage {
|
|
|
3590
3589
|
page: Page_9;
|
|
3591
3590
|
scannedThroughSeq: bigint;
|
|
3592
3591
|
}
|
|
3593
|
-
export interface
|
|
3594
|
-
|
|
3595
|
-
|
|
3596
|
-
|
|
3597
|
-
|
|
3598
|
-
|
|
3599
|
-
verifyingContract: string;
|
|
3600
|
-
dailySignCap: bigint;
|
|
3601
|
-
fields: Array<[string, string]>;
|
|
3602
|
-
domainSeparator: Uint8Array | number[];
|
|
3603
|
-
destinationFields: Array<string>;
|
|
3604
|
-
authorityClass: AuthorityClass;
|
|
3605
|
-
typeHash: Uint8Array | number[];
|
|
3606
|
-
registeredAtNs: bigint;
|
|
3607
|
-
chainId: bigint;
|
|
3608
|
-
domainVersion: string;
|
|
3609
|
-
ackIrrevocable: boolean;
|
|
3592
|
+
export interface RecordPage {
|
|
3593
|
+
ringFloor: bigint;
|
|
3594
|
+
total: bigint;
|
|
3595
|
+
sealed: Array<SealedEntry>;
|
|
3596
|
+
items: Array<AuditEntry>;
|
|
3597
|
+
hashFirstFrom: bigint;
|
|
3610
3598
|
}
|
|
3611
3599
|
export interface Repudiation {
|
|
3612
3600
|
atNs: bigint;
|
|
@@ -3623,9 +3611,9 @@ export interface ResetReport {
|
|
|
3623
3611
|
}
|
|
3624
3612
|
export type Result = { Ok: WriteReceipt } | { Err: Error };
|
|
3625
3613
|
export type Result_1 = { Ok: null } | { Err: Error };
|
|
3626
|
-
export type Result_10 = { Ok:
|
|
3627
|
-
export type Result_11 = { Ok:
|
|
3628
|
-
export type Result_12 = { Ok:
|
|
3614
|
+
export type Result_10 = { Ok: MemoryFile } | { Err: Error };
|
|
3615
|
+
export type Result_11 = { Ok: SessionContext } | { Err: Error };
|
|
3616
|
+
export type Result_12 = { Ok: bigint } | { Err: Error };
|
|
3629
3617
|
export type Result_13 = { Ok: ResyncReport } | { Err: Error };
|
|
3630
3618
|
export type Result_14 = { Ok: ResetReport } | { Err: Error };
|
|
3631
3619
|
export type Result_15 = { Ok: GuardianRecord } | { Err: Error };
|
|
@@ -3657,41 +3645,42 @@ export type Result_38 = { Ok: CheckpointPage } | { Err: Error };
|
|
|
3657
3645
|
export type Result_39 = { Ok: Page_16 } | { Err: Error };
|
|
3658
3646
|
export type Result_4 = { Ok: Eip712SignatureOut } | { Err: Error };
|
|
3659
3647
|
export type Result_40 = { Ok: Page_17 } | { Err: Error };
|
|
3660
|
-
export type Result_41 = { Ok:
|
|
3661
|
-
export type Result_42 = { Ok:
|
|
3662
|
-
export type Result_43 = { Ok:
|
|
3663
|
-
export type Result_44 = { Ok:
|
|
3664
|
-
export type Result_45 = { Ok:
|
|
3665
|
-
export type Result_46 = { Ok:
|
|
3666
|
-
export type Result_47 = { Ok:
|
|
3667
|
-
export type Result_48 = { Ok:
|
|
3668
|
-
export type Result_49 = { Ok:
|
|
3648
|
+
export type Result_41 = { Ok: RecordPage } | { Err: Error };
|
|
3649
|
+
export type Result_42 = { Ok: Page_18 } | { Err: Error };
|
|
3650
|
+
export type Result_43 = { Ok: Page_19 } | { Err: Error };
|
|
3651
|
+
export type Result_44 = { Ok: Page_20 } | { Err: Error };
|
|
3652
|
+
export type Result_45 = { Ok: string } | { Err: Error };
|
|
3653
|
+
export type Result_46 = { Ok: boolean } | { Err: Error };
|
|
3654
|
+
export type Result_47 = { Ok: [] | [string] } | { Err: Error };
|
|
3655
|
+
export type Result_48 = { Ok: WorldIdRpContext } | { Err: Error };
|
|
3656
|
+
export type Result_49 = { Ok: WorldIdConfig } | { Err: Error };
|
|
3669
3657
|
export type Result_5 = { Ok: SignatureCounts } | { Err: Error };
|
|
3670
|
-
export type Result_50 = { Ok:
|
|
3671
|
-
export type Result_51 = { Ok:
|
|
3672
|
-
export type Result_52 = { Ok:
|
|
3673
|
-
export type Result_53 = { Ok:
|
|
3674
|
-
export type Result_54 = { Ok:
|
|
3675
|
-
export type Result_55 = { Ok:
|
|
3676
|
-
export type Result_56 = { Ok:
|
|
3677
|
-
export type Result_57 = { Ok:
|
|
3678
|
-
export type Result_58 = { Ok:
|
|
3679
|
-
export type Result_59 = { Ok:
|
|
3658
|
+
export type Result_50 = { Ok: WalletBalances } | { Err: Error };
|
|
3659
|
+
export type Result_51 = { Ok: StorageReport } | { Err: Error };
|
|
3660
|
+
export type Result_52 = { Ok: SpendingPolicy } | { Err: Error };
|
|
3661
|
+
export type Result_53 = { Ok: SpendCeiling } | { Err: Error };
|
|
3662
|
+
export type Result_54 = { Ok: SigningFloorStatus } | { Err: Error };
|
|
3663
|
+
export type Result_55 = { Ok: { paths: Array<string> } } | { Err: Error };
|
|
3664
|
+
export type Result_56 = { Ok: OwnerConsole } | { Err: Error };
|
|
3665
|
+
export type Result_57 = { Ok: MemoryRetentionPolicy } | { Err: Error };
|
|
3666
|
+
export type Result_58 = { Ok: MemoryHistory } | { Err: Error };
|
|
3667
|
+
export type Result_59 = { Ok: AlertStatus } | { Err: Error };
|
|
3680
3668
|
export type Result_6 = { Ok: RailHealth } | { Err: Error };
|
|
3681
|
-
export type Result_60 = { Ok:
|
|
3682
|
-
export type Result_61 = { Ok:
|
|
3683
|
-
export type Result_62 = { Ok:
|
|
3684
|
-
export type Result_63 = { Ok:
|
|
3685
|
-
export type Result_64 = { Ok:
|
|
3686
|
-
export type Result_65 = { Ok:
|
|
3687
|
-
export type
|
|
3688
|
-
export type Result_68 = { Ok:
|
|
3689
|
-
export type Result_69 = { Ok:
|
|
3669
|
+
export type Result_60 = { Ok: EvmAddresses } | { Err: Error };
|
|
3670
|
+
export type Result_61 = { Ok: Uint8Array | number[] } | { Err: Error };
|
|
3671
|
+
export type Result_62 = { Ok: ChildOpening } | { Err: Error };
|
|
3672
|
+
export type Result_63 = { Ok: ChildAllowanceRow } | { Err: Error };
|
|
3673
|
+
export type Result_64 = { Ok: BackupMetadata } | { Err: Error };
|
|
3674
|
+
export type Result_65 = { Ok: AgentWriteReview } | { Err: Error };
|
|
3675
|
+
export type Result_66 = { Ok: Page_21 } | { Err: Error };
|
|
3676
|
+
export type Result_68 = { Ok: MemoryRangeExport } | { Err: Error };
|
|
3677
|
+
export type Result_69 = { Ok: CondenseResult } | { Err: Error };
|
|
3690
3678
|
export type Result_7 = { Ok: Array<Seat> } | { Err: Error };
|
|
3691
3679
|
export type Result_70 = { Ok: Eip712Registration } | { Err: Error };
|
|
3692
|
-
export type Result_71 = { Ok:
|
|
3693
|
-
export type
|
|
3694
|
-
export type
|
|
3680
|
+
export type Result_71 = { Ok: { activatesAtNs: bigint } } | { Err: Error };
|
|
3681
|
+
export type Result_72 = { Ok: AgentRecord } | { Err: Error };
|
|
3682
|
+
export type Result_8 = { Ok: SignedTransaction } | { Err: Error };
|
|
3683
|
+
export type Result_9 = { Ok: BackupRetentionReport } | { Err: Error };
|
|
3695
3684
|
export interface ResyncReport {
|
|
3696
3685
|
startsAcknowledged: bigint;
|
|
3697
3686
|
cannotBeRecorded: Array<UnrecordableEngagement>;
|
|
@@ -3725,6 +3714,11 @@ export type Role =
|
|
|
3725
3714
|
| { Agent: null }
|
|
3726
3715
|
| { Other: null }
|
|
3727
3716
|
| { Owner: null };
|
|
3717
|
+
export interface SealedEntry {
|
|
3718
|
+
id: bigint;
|
|
3719
|
+
entryHash: Uint8Array | number[];
|
|
3720
|
+
digest: Uint8Array | number[];
|
|
3721
|
+
}
|
|
3728
3722
|
export interface Seat {
|
|
3729
3723
|
pairedDay: bigint;
|
|
3730
3724
|
lastPaymentDay: [] | [bigint];
|
|
@@ -3858,8 +3852,14 @@ export interface WorldIdRpContext {
|
|
|
3858
3852
|
}
|
|
3859
3853
|
export interface WriteReceipt {
|
|
3860
3854
|
seq: bigint;
|
|
3855
|
+
contentRoot: Uint8Array | number[];
|
|
3856
|
+
atNs: bigint;
|
|
3861
3857
|
head: Uint8Array | number[];
|
|
3858
|
+
prev: Uint8Array | number[];
|
|
3859
|
+
size: bigint;
|
|
3860
|
+
recordPrev: Uint8Array | number[];
|
|
3862
3861
|
version: bigint;
|
|
3862
|
+
recordId: bigint;
|
|
3863
3863
|
}
|
|
3864
3864
|
export type X402SignOutcome =
|
|
3865
3865
|
{ ApprovalPending: ApprovalRequest } | { Signed: SignedAuthorization };
|