@engramx/idl 0.16.0-rc.11 → 0.16.0-rc.13
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 +17 -89
- package/dist/engram.idl.d.ts +17 -101
- package/dist/engram.idl.js +17 -28
- package/dist/registry.did +12 -9
- package/dist/registry.idl.d.ts +8 -1
- package/dist/registry.idl.js +0 -1
- package/package.json +1 -1
package/dist/engram.did
CHANGED
|
@@ -213,12 +213,12 @@ type ResyncReport =
|
|
|
213
213
|
type Result_9 =
|
|
214
214
|
variant {
|
|
215
215
|
Err: Error;
|
|
216
|
-
Ok:
|
|
216
|
+
Ok: BackupRetentionReport;
|
|
217
217
|
};
|
|
218
218
|
type Result_8 =
|
|
219
219
|
variant {
|
|
220
220
|
Err: Error;
|
|
221
|
-
Ok:
|
|
221
|
+
Ok: SignedTransaction;
|
|
222
222
|
};
|
|
223
223
|
type Result_71 =
|
|
224
224
|
variant {
|
|
@@ -543,17 +543,17 @@ type Result_13 =
|
|
|
543
543
|
type Result_12 =
|
|
544
544
|
variant {
|
|
545
545
|
Err: Error;
|
|
546
|
-
Ok:
|
|
546
|
+
Ok: nat;
|
|
547
547
|
};
|
|
548
548
|
type Result_11 =
|
|
549
549
|
variant {
|
|
550
550
|
Err: Error;
|
|
551
|
-
Ok:
|
|
551
|
+
Ok: SessionContext;
|
|
552
552
|
};
|
|
553
553
|
type Result_10 =
|
|
554
554
|
variant {
|
|
555
555
|
Err: Error;
|
|
556
|
-
Ok:
|
|
556
|
+
Ok: MemoryFile;
|
|
557
557
|
};
|
|
558
558
|
type Result_1 =
|
|
559
559
|
variant {
|
|
@@ -1372,7 +1372,7 @@ type Engram =
|
|
|
1372
1372
|
/// ⟨2026-10-02⟩ The second parameter is NAMED `amountE6` now, as the census row above rules the
|
|
1373
1373
|
/// pair — e6 base units of the token named first. A name only: Candid passes arguments by
|
|
1374
1374
|
/// position, so nothing on the wire moved.
|
|
1375
|
-
convertEarningsToCycles: (token: text, amountE6: nat) -> (
|
|
1375
|
+
convertEarningsToCycles: (token: text, amountE6: nat) -> (Result_12);
|
|
1376
1376
|
/// Owner-only: mint a single-use invite code an agent redeems with `pairAgent`.
|
|
1377
1377
|
///
|
|
1378
1378
|
/// ⚠ READ THIS BEFORE INVITING SOMEONE BACK. Pairing is ONE-SHOT PER PRINCIPAL on
|
|
@@ -1442,35 +1442,6 @@ type Engram =
|
|
|
1442
1442
|
/// `#NotFound` for an unknown id and `#Conflict` when the request is no longer pending, and it
|
|
1443
1443
|
/// does not change the policy — the next request over the same limit will be raised again.
|
|
1444
1444
|
denyRequest: (requestId: text, reason: text) -> (Result_1);
|
|
1445
|
-
/// Force the tECDSA derivation and return the address.
|
|
1446
|
-
///
|
|
1447
|
-
/// It exists because the gateway's own derivation fires from a timer that is lazy on some
|
|
1448
|
-
/// replicas, and until it lands the EVM quote advertises the `0x0` fallback and settle fails
|
|
1449
|
-
/// closed — a live money surface quoting an address that cannot receive.
|
|
1450
|
-
///
|
|
1451
|
-
/// ⟨0.16.0, B-2⟩ Derivation now comes from `EvmIdentity`, and the return type carries the
|
|
1452
|
-
/// outcome: this used to answer `""` on failure, which is a Text a caller can and did paste into
|
|
1453
|
-
/// a payment flow. An empty string is not an address, and saying so is the difference between a
|
|
1454
|
-
/// failed derivation and an address of nothing.
|
|
1455
|
-
///
|
|
1456
|
-
/// ⚠ TRANSITIONAL: it also primes the ic402 gate, because the gate still settles commerce on this
|
|
1457
|
-
/// canister until those 47 methods move. That second call disappears with them — it is listed in
|
|
1458
|
-
/// the move order in the spec's B-2 addendum, not left for someone to find.
|
|
1459
|
-
///
|
|
1460
|
-
/// PUBLIC: it inherits `getEvmAddress`'s gate rather than choosing one, and could not usefully be
|
|
1461
|
-
/// narrower — it exists so a caller can make the derivation happen BEFORE a payment flow, and the
|
|
1462
|
-
/// derivation itself is ungated. Idempotent and bounded to the same one-derivation-per-lifetime
|
|
1463
|
-
/// work, so an anonymous caller can cause it once and no more.
|
|
1464
|
-
/// ⟨L7⟩ UPDATE, NOT QUERY, and this one does not merely await — it WRITES. The body awaits
|
|
1465
|
-
/// `EvmIdentity.deriveAddress` (the management canister's `ecdsa_public_key`) and
|
|
1466
|
-
/// `gate.deriveEvmRecipientAt` ⟨renamed 2026-09-22 with the path⟩, then caches the result in `evmAddressCache`. So a query is
|
|
1467
|
-
/// impossible twice over: it could not await the derivation, and it could not keep the answer.
|
|
1468
|
-
/// Named `ensure*` rather than `get*` for that reason — the write is the point, and a read verb
|
|
1469
|
-
/// would have promised a cheapness this cannot deliver.
|
|
1470
|
-
///
|
|
1471
|
-
/// ⟨Marker added 2026-08-23; the census row said "L7 mark added per review" and no mark was at
|
|
1472
|
-
/// the site.⟩
|
|
1473
|
-
ensureEvmReady: () -> (Result_44);
|
|
1474
1445
|
/// Record that log entries [fromSeq, toSeq] were served, and return the root that proves it.
|
|
1475
1446
|
///
|
|
1476
1447
|
/// This is the receipt ledgerfs Q2 requires before any of those entries may be condensed away.
|
|
@@ -1646,10 +1617,6 @@ type Engram =
|
|
|
1646
1617
|
/// has never met this engram what it is and how to transact with it. A card behind a gate cannot
|
|
1647
1618
|
/// be discovered, and the ERC-8004 ecosystem it participates in assumes an open read.
|
|
1648
1619
|
getEngramCard: () -> (AgentCard) query;
|
|
1649
|
-
/// PUBLIC: the engram's permanent spawn ordinal — a provable, non-sensitive fact. It identifies a
|
|
1650
|
-
/// canister, never a person.
|
|
1651
|
-
/// null = spawned before numbering existed; the owner can backfill via syncEngramNumber().
|
|
1652
|
-
getEngramNumber: () -> (opt nat) query;
|
|
1653
1620
|
/// Re-pointed at `EvmIdentity` (B-2): custody derivation no longer routes through the ic402
|
|
1654
1621
|
/// Gateway, which is leaving for the market canister. Behaviour is unchanged for a caller — same
|
|
1655
1622
|
/// address, same tECDSA key — but the engram no longer needs a marketplace to know its own
|
|
@@ -2474,7 +2441,7 @@ type Engram =
|
|
|
2474
2441
|
/// (every family qualifiesForReview admits is written to auditLogger, so they share that space),
|
|
2475
2442
|
/// and this never inspects an operation or a role. Widening what the review shows therefore
|
|
2476
2443
|
/// changes only which ids the console can pass here — it cannot desynchronise the cursor.
|
|
2477
|
-
markAgentWritesReviewed: (uptoAuditId: opt nat) -> (
|
|
2444
|
+
markAgentWritesReviewed: (uptoAuditId: opt nat) -> (Result_12);
|
|
2478
2445
|
/// The AGENT's current key nominates the key that will replace it. Nothing moves yet: the new
|
|
2479
2446
|
/// key must accept, by its own call, within 24 hours (`acceptAgentKeyNomination`). One pending
|
|
2480
2447
|
/// nomination per agent — a new one replaces the earlier one, and the record says which. Refused,
|
|
@@ -2517,7 +2484,7 @@ type Engram =
|
|
|
2517
2484
|
/// NOT freeze-gated: the owner always controls their own funds.
|
|
2518
2485
|
/// Guardian freeze only blocks agent/public operations.
|
|
2519
2486
|
ownerWithdraw: (amount: TokenAmount, ownerAuth: opt ActionAuth) ->
|
|
2520
|
-
(
|
|
2487
|
+
(Result_12);
|
|
2521
2488
|
/// ⟨0.16.0⟩ `payRentFromEarnings` DELETED — ruled TWICE (B1 and B2), and it was the single
|
|
2522
2489
|
/// clearest violation of the OSS/platform split in this repo.
|
|
2523
2490
|
///
|
|
@@ -2639,7 +2606,7 @@ type Engram =
|
|
|
2639
2606
|
/// counter here could never persist; read counting lives on the update path
|
|
2640
2607
|
/// (`sessionReadContext` and the MCP reads). A caller measuring engram usage from this method
|
|
2641
2608
|
/// will measure nothing.
|
|
2642
|
-
readMemory: (path: text) -> (
|
|
2609
|
+
readMemory: (path: text) -> (Result_10) query;
|
|
2643
2610
|
/// Read many paths in one call. Per-path Results are KEPT — partial success is the point, and
|
|
2644
2611
|
/// one unreadable path must not fail the other nine.
|
|
2645
2612
|
///
|
|
@@ -2774,7 +2741,7 @@ type Engram =
|
|
|
2774
2741
|
/// the original audit entry stay exactly where they were; this appends a chained
|
|
2775
2742
|
/// `memory.repudiate` entry and lists the (path, version) so readers can see the dispute.
|
|
2776
2743
|
repudiateMemoryWrite: (path: text, version: nat, reason: text) ->
|
|
2777
|
-
(
|
|
2744
|
+
(Result_12);
|
|
2778
2745
|
/// ⚠ OWNER-ONLY BULK RESET. Destructive, and wider than its name suggests.
|
|
2779
2746
|
///
|
|
2780
2747
|
/// It severs EVERY grant surface that can outlive a role — agents, guardians, invites and
|
|
@@ -2902,7 +2869,7 @@ type Engram =
|
|
|
2902
2869
|
/// written, and only then does it await one notification per revoked agent. So a notification
|
|
2903
2870
|
/// that fails leaves the agents revoked here regardless — a partial notify is not a partial
|
|
2904
2871
|
/// revocation, which is the direction that matters for a panic button.
|
|
2905
|
-
revokeAllAgents: () -> (
|
|
2872
|
+
revokeAllAgents: () -> (Result_12);
|
|
2906
2873
|
/// Owner-only panic button: revoke every connector bearer token at once. Returns how many.
|
|
2907
2874
|
///
|
|
2908
2875
|
/// The THIRD independent surface — hosted connectors authenticate with bearer tokens, not with
|
|
@@ -2911,7 +2878,7 @@ type Engram =
|
|
|
2911
2878
|
/// holding a live session.
|
|
2912
2879
|
///
|
|
2913
2880
|
/// Tokens are re-issuable: revoking them is not permanent the way revoking an agent is.
|
|
2914
|
-
revokeAllBearerTokens: () -> (
|
|
2881
|
+
revokeAllBearerTokens: () -> (Result_12);
|
|
2915
2882
|
/// ⟨0.16.0⟩ `removeAllGuardians` DELETED — test-only (L6), and verified NOT part of KILL-SWITCH's
|
|
2916
2883
|
/// mass-revoke set. The destructive phase-07 suite iterates `removeGuardian` instead, so nothing
|
|
2917
2884
|
/// loses a capability: what dies is a bulk spelling no runbook ever invoked.
|
|
@@ -2923,7 +2890,7 @@ type Engram =
|
|
|
2923
2890
|
///
|
|
2924
2891
|
/// Unlike revoking an agent, this costs nothing permanently — an invite is a one-time code,
|
|
2925
2892
|
/// so voiding it and minting a fresh one is the ordinary path.
|
|
2926
|
-
revokeAllInvites: () -> (
|
|
2893
|
+
revokeAllInvites: () -> (Result_12);
|
|
2927
2894
|
/// Revoke a bearer token by its public tokenId. Idempotent.
|
|
2928
2895
|
/// Subsequent /mcp requests using this token will be rejected.
|
|
2929
2896
|
revokeBearerToken: (tokenId: text) -> (Result_1);
|
|
@@ -2950,13 +2917,6 @@ type Engram =
|
|
|
2950
2917
|
/// agent on that record, so its standing is not the problem — the record's state is. An
|
|
2951
2918
|
/// agent reading `#Refused` would go looking for a permission that was never missing.
|
|
2952
2919
|
rotateAgentKeyHash: (newPublicKeyHash: text) -> (Result_1);
|
|
2953
|
-
/// One-time onboarding seed: writes a starter file so the first read-back is non-empty.
|
|
2954
|
-
///
|
|
2955
|
-
/// Owner-only, and it REFUSES once any memory exists — so it can only ever add the initial
|
|
2956
|
-
/// placeholder and can never overwrite real content. Deliberately NOT counted as a write (no
|
|
2957
|
-
/// `totalMemoryWrites`, no `firstWriteAt`): it is a system seed rather than activity, and
|
|
2958
|
-
/// counting it would corrupt both the write metrics and time-to-first-write for every engram.
|
|
2959
|
-
seedMemory: (path: text, content: blob) -> (Result);
|
|
2960
2920
|
/// Append to a memory file against a PAID x402 session voucher — the write half of the paid rail,
|
|
2961
2921
|
/// authorized by the voucher rather than by a role.
|
|
2962
2922
|
/// ⟨2026-09-30, ic402 2.17.0⟩ Authorized by the payer's own call with the voucher: only the
|
|
@@ -3000,7 +2960,7 @@ type Engram =
|
|
|
3000
2960
|
/// ⚠ RAW STORED BYTES, like `readMemoryBatch`. On a Private (encrypted) engram the content is
|
|
3001
2961
|
/// CIPHERTEXT; the key-holding SDK decrypts it. A caller without the key gets bytes it cannot
|
|
3002
2962
|
/// read, not an error.
|
|
3003
|
-
sessionReadContext: (clientLabel: text) -> (
|
|
2963
|
+
sessionReadContext: (clientLabel: text) -> (Result_11);
|
|
3004
2964
|
/// Read one memory file against a PAID x402 session voucher. No role, no invite — the voucher is
|
|
3005
2965
|
/// the authorization, which is what makes this the engram's one rail a stranger can pay to use.
|
|
3006
2966
|
///
|
|
@@ -3030,7 +2990,7 @@ type Engram =
|
|
|
3030
2990
|
/// session must not be the side door: without this guard a stranger holding a fraction-of-a-
|
|
3031
2991
|
/// cent voucher could read `secrets/*`.
|
|
3032
2992
|
/// · Payments are frozen on this engram.
|
|
3033
|
-
sessionReadMemory: (voucher: Voucher, path: text) -> (
|
|
2993
|
+
sessionReadMemory: (voucher: Voucher, path: text) -> (Result_10);
|
|
3034
2994
|
/// Configure action alerts: an https webhook that receives new chained-audit entries matching the
|
|
3035
2995
|
/// enabled event classes (money / approvals / guardian / agentWrites), batched, at most one
|
|
3036
2996
|
/// POST per minute. Owner-only. Payloads carry audit METADATA (operation, caller, role, bounded
|
|
@@ -3070,7 +3030,7 @@ type Engram =
|
|
|
3070
3030
|
/// called it an "ops floor: retention enforcement deletes owner backup data silently", mitigated
|
|
3071
3031
|
/// by a `Debug.print` nobody reads. An owner lowering the cap is destroying their own backups;
|
|
3072
3032
|
/// they are told how many, in the reply and in the audit line.
|
|
3073
|
-
setBackupRetention: (dbType: text, maxBackups: nat) -> (
|
|
3033
|
+
setBackupRetention: (dbType: text, maxBackups: nat) -> (Result_9);
|
|
3074
3034
|
/// Override the caps for ONE caller — an agent this owner trusts more, or less, than the rest.
|
|
3075
3035
|
setCallerSpendPolicy: (caller: principal, policy: SpendingPolicy) ->
|
|
3076
3036
|
(Result_1);
|
|
@@ -3297,7 +3257,7 @@ type Engram =
|
|
|
3297
3257
|
maxFeePerGas: nat;
|
|
3298
3258
|
maxPriorityFeePerGas: nat;
|
|
3299
3259
|
nonce: nat;
|
|
3300
|
-
}) -> (
|
|
3260
|
+
}) -> (Result_8);
|
|
3301
3261
|
/// Sign an EIP-3009 authorization for x402 payment. Agent-accessible.
|
|
3302
3262
|
/// Client probes the URL, extracts chain/token/recipient/amount from the 402, and calls this.
|
|
3303
3263
|
/// Canister signs → returns header → client retries with header.
|
|
@@ -3329,33 +3289,6 @@ type Engram =
|
|
|
3329
3289
|
tokenName: text;
|
|
3330
3290
|
tokenVersion: text;
|
|
3331
3291
|
}) -> (Result_3);
|
|
3332
|
-
/// Self-heal: if the registry's spawn-time push was missed, the owner pulls the number from
|
|
3333
|
-
/// the spawning registry. Idempotent; fails closed if the registry has no record.
|
|
3334
|
-
syncEngramNumber: () -> (Result_8);
|
|
3335
|
-
/// Genesis seed — the atomic "spawn only when there's real content" primitive. The spawning
|
|
3336
|
-
/// REGISTRY pushes the owner's first real memory immediately after install, so a canister is
|
|
3337
|
-
/// never spawned holding nothing (see the registry's `provisionEngram` optional genesis).
|
|
3338
|
-
///
|
|
3339
|
-
/// Gated `spawnedBy`-only and ONE-SHOT: it refuses once any file exists, so it can seed and never
|
|
3340
|
-
/// overwrite. Unlike the owner-only `seedMemory` placeholder this is REAL owner content, so it
|
|
3341
|
-
/// IS counted as an owner write (`firstWriteAt`, `totalMemoryWrites`) and is authored by the
|
|
3342
|
-
/// OWNER rather than by the registry principal that called it. It never touches the
|
|
3343
|
-
/// agent metrics.
|
|
3344
|
-
///
|
|
3345
|
-
/// ⚠ THE PAYLOAD IS `Nat` AND MUST STAY `Nat`, which is a constraint on any client of this
|
|
3346
|
-
/// method rather than an internal detail. Its only caller is the registry, over an
|
|
3347
|
-
/// inter-canister boundary, through a hand-declared actor type — and the registry is ROUTINELY a
|
|
3348
|
-
/// different version from the engram template it is seeding: it upgrades before the fleet does,
|
|
3349
|
-
/// and during a transition it can serve a template older than itself. A return-type change here
|
|
3350
|
-
/// breaks genesis provisioning across that skew. That is measured, not predicted: the registry
|
|
3351
|
-
/// trapped with "IDL error: unexpected IDL type when parsing Nat" while seeding an engram built
|
|
3352
|
-
/// at the staging tag. A receipt would buy nothing anyway — the caller does `ignore await`.
|
|
3353
|
-
///
|
|
3354
|
-
/// ⚠ ORDERING: upload the engram TEMPLATE first, then upgrade the registry. The reverse leaves a
|
|
3355
|
-
/// window where a spawn seeds an old-shape engram with a new-shape expectation; the reply fails
|
|
3356
|
-
/// to decode and `provisionEngram` dies on a trap its own `try/catch` cannot reach (ADR-0001),
|
|
3357
|
-
/// failing the WHOLE SPAWN rather than just the seed.
|
|
3358
|
-
sysApplyGenesisSeed: (path: text, content: blob) -> (Result_8);
|
|
3359
3292
|
/// OWNER force-close, for a session the payer abandoned.
|
|
3360
3293
|
///
|
|
3361
3294
|
/// ⟨R1b, ruled 2026-08-26: owner-gated, NO guardian.⟩ It moves someone else's money, and only ever
|
|
@@ -3532,9 +3465,6 @@ type Engram =
|
|
|
3532
3465
|
/// nobody but the spawning registry can fix it. That refusal therefore names the real remedy
|
|
3533
3466
|
/// rather than telling an owner to run a call they can no longer make.
|
|
3534
3467
|
sysSetBillerId: (id: principal) -> (Result_1);
|
|
3535
|
-
/// One-shot assignment of the spawn ordinal — callable ONLY by the spawning registry, ONLY
|
|
3536
|
-
/// while unset. Neither the owner nor any later registry can change an assigned number.
|
|
3537
|
-
sysSetEngramNumber: (n: nat) -> (Result_1);
|
|
3538
3468
|
/// Point this engram at the commerce satellite allowed to ask it for signatures. ⟨0.16.0, B1⟩
|
|
3539
3469
|
///
|
|
3540
3470
|
/// SAME AUTHORITY AS `sysSetBillerId`, and for a stronger reason. That one routes money; this one
|
|
@@ -4050,8 +3980,6 @@ type About =
|
|
|
4050
3980
|
agentMemoryWrites: nat;
|
|
4051
3981
|
auditLogSize: nat;
|
|
4052
3982
|
backupCount: nat;
|
|
4053
|
-
distinctReaderClients: nat;
|
|
4054
|
-
distinctReaderPrincipals: nat;
|
|
4055
3983
|
encryptionEnabled: bool;
|
|
4056
3984
|
firstAgentWriteAtNs: opt int;
|
|
4057
3985
|
firstWriteAtNs: opt int;
|
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;
|
|
@@ -548,7 +546,7 @@ export interface Engram {
|
|
|
548
546
|
* / pair — e6 base units of the token named first. A name only: Candid passes arguments by
|
|
549
547
|
* / position, so nothing on the wire moved.
|
|
550
548
|
*/
|
|
551
|
-
convertEarningsToCycles: ActorMethod<[string, bigint],
|
|
549
|
+
convertEarningsToCycles: ActorMethod<[string, bigint], Result_12>;
|
|
552
550
|
/**
|
|
553
551
|
* / Owner-only: mint a single-use invite code an agent redeems with `pairAgent`.
|
|
554
552
|
* /
|
|
@@ -626,37 +624,6 @@ export interface Engram {
|
|
|
626
624
|
* / does not change the policy — the next request over the same limit will be raised again.
|
|
627
625
|
*/
|
|
628
626
|
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
627
|
/**
|
|
661
628
|
* / Record that log entries [fromSeq, toSeq] were served, and return the root that proves it.
|
|
662
629
|
* /
|
|
@@ -858,12 +825,6 @@ export interface Engram {
|
|
|
858
825
|
* / be discovered, and the ERC-8004 ecosystem it participates in assumes an open read.
|
|
859
826
|
*/
|
|
860
827
|
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
828
|
/**
|
|
868
829
|
* / Re-pointed at `EvmIdentity` (B-2): custody derivation no longer routes through the ic402
|
|
869
830
|
* / Gateway, which is leaving for the market canister. Behaviour is unchanged for a caller — same
|
|
@@ -1792,7 +1753,7 @@ export interface Engram {
|
|
|
1792
1753
|
* / and this never inspects an operation or a role. Widening what the review shows therefore
|
|
1793
1754
|
* / changes only which ids the console can pass here — it cannot desynchronise the cursor.
|
|
1794
1755
|
*/
|
|
1795
|
-
markAgentWritesReviewed: ActorMethod<[[] | [bigint]],
|
|
1756
|
+
markAgentWritesReviewed: ActorMethod<[[] | [bigint]], Result_12>;
|
|
1796
1757
|
/**
|
|
1797
1758
|
* / The AGENT's current key nominates the key that will replace it. Nothing moves yet: the new
|
|
1798
1759
|
* / key must accept, by its own call, within 24 hours (`acceptAgentKeyNomination`). One pending
|
|
@@ -1840,7 +1801,7 @@ export interface Engram {
|
|
|
1840
1801
|
* / NOT freeze-gated: the owner always controls their own funds.
|
|
1841
1802
|
* / Guardian freeze only blocks agent/public operations.
|
|
1842
1803
|
*/
|
|
1843
|
-
ownerWithdraw: ActorMethod<[TokenAmount, [] | [ActionAuth]],
|
|
1804
|
+
ownerWithdraw: ActorMethod<[TokenAmount, [] | [ActionAuth]], Result_12>;
|
|
1844
1805
|
/**
|
|
1845
1806
|
* / ⟨0.16.0⟩ `payRentFromEarnings` DELETED — ruled TWICE (B1 and B2), and it was the single
|
|
1846
1807
|
* / clearest violation of the OSS/platform split in this repo.
|
|
@@ -1969,7 +1930,7 @@ export interface Engram {
|
|
|
1969
1930
|
* / (`sessionReadContext` and the MCP reads). A caller measuring engram usage from this method
|
|
1970
1931
|
* / will measure nothing.
|
|
1971
1932
|
*/
|
|
1972
|
-
readMemory: ActorMethod<[string],
|
|
1933
|
+
readMemory: ActorMethod<[string], Result_10>;
|
|
1973
1934
|
/**
|
|
1974
1935
|
* / Read many paths in one call. Per-path Results are KEPT — partial success is the point, and
|
|
1975
1936
|
* / one unreadable path must not fail the other nine.
|
|
@@ -2118,7 +2079,7 @@ export interface Engram {
|
|
|
2118
2079
|
* / the original audit entry stay exactly where they were; this appends a chained
|
|
2119
2080
|
* / `memory.repudiate` entry and lists the (path, version) so readers can see the dispute.
|
|
2120
2081
|
*/
|
|
2121
|
-
repudiateMemoryWrite: ActorMethod<[string, bigint, string],
|
|
2082
|
+
repudiateMemoryWrite: ActorMethod<[string, bigint, string], Result_12>;
|
|
2122
2083
|
/**
|
|
2123
2084
|
* / ⚠ OWNER-ONLY BULK RESET. Destructive, and wider than its name suggests.
|
|
2124
2085
|
* /
|
|
@@ -2262,7 +2223,7 @@ export interface Engram {
|
|
|
2262
2223
|
* / that fails leaves the agents revoked here regardless — a partial notify is not a partial
|
|
2263
2224
|
* / revocation, which is the direction that matters for a panic button.
|
|
2264
2225
|
*/
|
|
2265
|
-
revokeAllAgents: ActorMethod<[],
|
|
2226
|
+
revokeAllAgents: ActorMethod<[], Result_12>;
|
|
2266
2227
|
/**
|
|
2267
2228
|
* / Owner-only panic button: revoke every connector bearer token at once. Returns how many.
|
|
2268
2229
|
* /
|
|
@@ -2273,7 +2234,7 @@ export interface Engram {
|
|
|
2273
2234
|
* /
|
|
2274
2235
|
* / Tokens are re-issuable: revoking them is not permanent the way revoking an agent is.
|
|
2275
2236
|
*/
|
|
2276
|
-
revokeAllBearerTokens: ActorMethod<[],
|
|
2237
|
+
revokeAllBearerTokens: ActorMethod<[], Result_12>;
|
|
2277
2238
|
/**
|
|
2278
2239
|
* / ⟨0.16.0⟩ `removeAllGuardians` DELETED — test-only (L6), and verified NOT part of KILL-SWITCH's
|
|
2279
2240
|
* / mass-revoke set. The destructive phase-07 suite iterates `removeGuardian` instead, so nothing
|
|
@@ -2287,7 +2248,7 @@ export interface Engram {
|
|
|
2287
2248
|
* / Unlike revoking an agent, this costs nothing permanently — an invite is a one-time code,
|
|
2288
2249
|
* / so voiding it and minting a fresh one is the ordinary path.
|
|
2289
2250
|
*/
|
|
2290
|
-
revokeAllInvites: ActorMethod<[],
|
|
2251
|
+
revokeAllInvites: ActorMethod<[], Result_12>;
|
|
2291
2252
|
/**
|
|
2292
2253
|
* / Revoke a bearer token by its public tokenId. Idempotent.
|
|
2293
2254
|
* / Subsequent /mcp requests using this token will be rejected.
|
|
@@ -2320,15 +2281,6 @@ export interface Engram {
|
|
|
2320
2281
|
* / agent reading `#Refused` would go looking for a permission that was never missing.
|
|
2321
2282
|
*/
|
|
2322
2283
|
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
2284
|
/**
|
|
2333
2285
|
* / Append to a memory file against a PAID x402 session voucher — the write half of the paid rail,
|
|
2334
2286
|
* / authorized by the voucher rather than by a role.
|
|
@@ -2375,7 +2327,7 @@ export interface Engram {
|
|
|
2375
2327
|
* / CIPHERTEXT; the key-holding SDK decrypts it. A caller without the key gets bytes it cannot
|
|
2376
2328
|
* / read, not an error.
|
|
2377
2329
|
*/
|
|
2378
|
-
sessionReadContext: ActorMethod<[string],
|
|
2330
|
+
sessionReadContext: ActorMethod<[string], Result_11>;
|
|
2379
2331
|
/**
|
|
2380
2332
|
* / Read one memory file against a PAID x402 session voucher. No role, no invite — the voucher is
|
|
2381
2333
|
* / the authorization, which is what makes this the engram's one rail a stranger can pay to use.
|
|
@@ -2407,7 +2359,7 @@ export interface Engram {
|
|
|
2407
2359
|
* / cent voucher could read `secrets/*`.
|
|
2408
2360
|
* / · Payments are frozen on this engram.
|
|
2409
2361
|
*/
|
|
2410
|
-
sessionReadMemory: ActorMethod<[Voucher, string],
|
|
2362
|
+
sessionReadMemory: ActorMethod<[Voucher, string], Result_10>;
|
|
2411
2363
|
/**
|
|
2412
2364
|
* / Configure action alerts: an https webhook that receives new chained-audit entries matching the
|
|
2413
2365
|
* / enabled event classes (money / approvals / guardian / agentWrites), batched, at most one
|
|
@@ -2454,7 +2406,7 @@ export interface Engram {
|
|
|
2454
2406
|
* / by a `Debug.print` nobody reads. An owner lowering the cap is destroying their own backups;
|
|
2455
2407
|
* / they are told how many, in the reply and in the audit line.
|
|
2456
2408
|
*/
|
|
2457
|
-
setBackupRetention: ActorMethod<[string, bigint],
|
|
2409
|
+
setBackupRetention: ActorMethod<[string, bigint], Result_9>;
|
|
2458
2410
|
/**
|
|
2459
2411
|
* / Override the caps for ONE caller — an agent this owner trusts more, or less, than the rest.
|
|
2460
2412
|
*/
|
|
@@ -2706,7 +2658,7 @@ export interface Engram {
|
|
|
2706
2658
|
maxPriorityFeePerGas: bigint;
|
|
2707
2659
|
},
|
|
2708
2660
|
],
|
|
2709
|
-
|
|
2661
|
+
Result_8
|
|
2710
2662
|
>;
|
|
2711
2663
|
/**
|
|
2712
2664
|
* / Sign an EIP-3009 authorization for x402 payment. Agent-accessible.
|
|
@@ -2745,37 +2697,6 @@ export interface Engram {
|
|
|
2745
2697
|
],
|
|
2746
2698
|
Result_3
|
|
2747
2699
|
>;
|
|
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
2700
|
/**
|
|
2780
2701
|
* / OWNER force-close, for a session the payer abandoned.
|
|
2781
2702
|
* /
|
|
@@ -2972,11 +2893,6 @@ export interface Engram {
|
|
|
2972
2893
|
* / rather than telling an owner to run a call they can no longer make.
|
|
2973
2894
|
*/
|
|
2974
2895
|
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
2896
|
/**
|
|
2981
2897
|
* / Point this engram at the commerce satellite allowed to ask it for signatures. ⟨0.16.0, B1⟩
|
|
2982
2898
|
* /
|
|
@@ -3623,9 +3539,9 @@ export interface ResetReport {
|
|
|
3623
3539
|
}
|
|
3624
3540
|
export type Result = { Ok: WriteReceipt } | { Err: Error };
|
|
3625
3541
|
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:
|
|
3542
|
+
export type Result_10 = { Ok: MemoryFile } | { Err: Error };
|
|
3543
|
+
export type Result_11 = { Ok: SessionContext } | { Err: Error };
|
|
3544
|
+
export type Result_12 = { Ok: bigint } | { Err: Error };
|
|
3629
3545
|
export type Result_13 = { Ok: ResyncReport } | { Err: Error };
|
|
3630
3546
|
export type Result_14 = { Ok: ResetReport } | { Err: Error };
|
|
3631
3547
|
export type Result_15 = { Ok: GuardianRecord } | { Err: Error };
|
|
@@ -3690,8 +3606,8 @@ export type Result_69 = { Ok: { activatesAtNs: bigint } } | { Err: Error };
|
|
|
3690
3606
|
export type Result_7 = { Ok: Array<Seat> } | { Err: Error };
|
|
3691
3607
|
export type Result_70 = { Ok: Eip712Registration } | { Err: Error };
|
|
3692
3608
|
export type Result_71 = { Ok: AgentRecord } | { Err: Error };
|
|
3693
|
-
export type Result_8 = { Ok:
|
|
3694
|
-
export type Result_9 = { Ok:
|
|
3609
|
+
export type Result_8 = { Ok: SignedTransaction } | { Err: Error };
|
|
3610
|
+
export type Result_9 = { Ok: BackupRetentionReport } | { Err: Error };
|
|
3695
3611
|
export interface ResyncReport {
|
|
3696
3612
|
startsAcknowledged: bigint;
|
|
3697
3613
|
cannotBeRecorded: Array<UnrecordableEngagement>;
|
package/dist/engram.idl.js
CHANGED
|
@@ -4,7 +4,6 @@ export const idlFactory = ({ IDL }) => {
|
|
|
4
4
|
guardianCount: IDL.Nat,
|
|
5
5
|
totalMemoryWrites: IDL.Nat,
|
|
6
6
|
lastAgentWriteAtNs: IDL.Opt(IDL.Int),
|
|
7
|
-
distinctReaderPrincipals: IDL.Nat,
|
|
8
7
|
lastWriteAtNs: IDL.Opt(IDL.Int),
|
|
9
8
|
totalBackupSize: IDL.Nat,
|
|
10
9
|
backupCount: IDL.Nat,
|
|
@@ -21,7 +20,6 @@ export const idlFactory = ({ IDL }) => {
|
|
|
21
20
|
firstAgentWriteAtNs: IDL.Opt(IDL.Int),
|
|
22
21
|
lastReadAtNs: IDL.Opt(IDL.Int),
|
|
23
22
|
writesPaused: IDL.Bool,
|
|
24
|
-
distinctReaderClients: IDL.Nat,
|
|
25
23
|
totalMemoryReads: IDL.Nat,
|
|
26
24
|
walletActivatedAtNs: IDL.Opt(IDL.Int),
|
|
27
25
|
encryptionEnabled: IDL.Bool,
|
|
@@ -145,7 +143,7 @@ export const idlFactory = ({ IDL }) => {
|
|
|
145
143
|
});
|
|
146
144
|
const Result_44 = IDL.Variant({ Ok: IDL.Text, Err: Error });
|
|
147
145
|
const Result_60 = IDL.Variant({ Ok: IDL.Vec(IDL.Nat8), Err: Error });
|
|
148
|
-
const
|
|
146
|
+
const Result_12 = IDL.Variant({ Ok: IDL.Nat, Err: Error });
|
|
149
147
|
const MemoryRangeExport = IDL.Record({
|
|
150
148
|
seq: IDL.Nat,
|
|
151
149
|
toSeq: IDL.Nat,
|
|
@@ -938,7 +936,7 @@ export const idlFactory = ({ IDL }) => {
|
|
|
938
936
|
lastModifiedBy: IDL.Principal,
|
|
939
937
|
lastModifiedAtNs: IDL.Int,
|
|
940
938
|
});
|
|
941
|
-
const
|
|
939
|
+
const Result_10 = IDL.Variant({ Ok: MemoryFile, Err: Error });
|
|
942
940
|
const BatchReadItem = IDL.Record({
|
|
943
941
|
result: IDL.Variant({ Ok: MemoryFile, Err: Error }),
|
|
944
942
|
path: IDL.Text,
|
|
@@ -998,16 +996,13 @@ export const idlFactory = ({ IDL }) => {
|
|
|
998
996
|
includedFiles: IDL.Nat,
|
|
999
997
|
totalBytes: IDL.Nat,
|
|
1000
998
|
});
|
|
1001
|
-
const
|
|
999
|
+
const Result_11 = IDL.Variant({ Ok: SessionContext, Err: Error });
|
|
1002
1000
|
const BackupRetentionReport = IDL.Record({
|
|
1003
1001
|
maxBackups: IDL.Nat,
|
|
1004
1002
|
dbType: IDL.Text,
|
|
1005
1003
|
prunedBackups: IDL.Nat,
|
|
1006
1004
|
});
|
|
1007
|
-
const
|
|
1008
|
-
Ok: BackupRetentionReport,
|
|
1009
|
-
Err: Error,
|
|
1010
|
-
});
|
|
1005
|
+
const Result_9 = IDL.Variant({ Ok: BackupRetentionReport, Err: Error });
|
|
1011
1006
|
const Eip712Value = IDL.Variant({
|
|
1012
1007
|
string: IDL.Text,
|
|
1013
1008
|
bool: IDL.Bool,
|
|
@@ -1028,7 +1023,7 @@ export const idlFactory = ({ IDL }) => {
|
|
|
1028
1023
|
txHash: IDL.Text,
|
|
1029
1024
|
rawTx: IDL.Text,
|
|
1030
1025
|
});
|
|
1031
|
-
const
|
|
1026
|
+
const Result_8 = IDL.Variant({ Ok: SignedTransaction, Err: Error });
|
|
1032
1027
|
const SignedAuthorization = IDL.Record({
|
|
1033
1028
|
paidAmount: IDL.Nat,
|
|
1034
1029
|
authorization: IDL.Record({
|
|
@@ -1140,13 +1135,12 @@ export const idlFactory = ({ IDL }) => {
|
|
|
1140
1135
|
backupPushChunk: IDL.Func([IDL.Text, IDL.Nat, IDL.Vec(IDL.Nat8)], [Result_1], []),
|
|
1141
1136
|
cancelAgentKeyNomination: IDL.Func([IDL.Principal], [Result_1], []),
|
|
1142
1137
|
closeSession: IDL.Func([IDL.Text], [Result_1], []),
|
|
1143
|
-
convertEarningsToCycles: IDL.Func([IDL.Text, IDL.Nat], [
|
|
1138
|
+
convertEarningsToCycles: IDL.Func([IDL.Text, IDL.Nat], [Result_12], []),
|
|
1144
1139
|
createAgentInvite: IDL.Func([IDL.Text, AgentPermissions], [Result_44], []),
|
|
1145
1140
|
createGuardianInvite: IDL.Func([IDL.Text, GuardianPermissions], [Result_44], []),
|
|
1146
1141
|
deleteBackup: IDL.Func([IDL.Text], [Result_1], []),
|
|
1147
1142
|
deleteMemoryFile: IDL.Func([IDL.Text], [Result], []),
|
|
1148
1143
|
denyRequest: IDL.Func([IDL.Text, IDL.Text], [Result_1], []),
|
|
1149
|
-
ensureEvmReady: IDL.Func([], [Result_44], []),
|
|
1150
1144
|
exportMemoryRange: IDL.Func([IDL.Nat, IDL.Nat, IDL.Opt(IDL.Principal)], [Result_67], []),
|
|
1151
1145
|
freezePayments: IDL.Func([], [Result_1], []),
|
|
1152
1146
|
getActionAlertStatus: IDL.Func([], [Result_58], ['query']),
|
|
@@ -1162,7 +1156,6 @@ export const idlFactory = ({ IDL }) => {
|
|
|
1162
1156
|
getChildOpening: IDL.Func([], [Result_61], ['query']),
|
|
1163
1157
|
getEncryptedMemoryKey: IDL.Func([IDL.Opt(IDL.Nat), IDL.Vec(IDL.Nat8)], [Result_60], []),
|
|
1164
1158
|
getEngramCard: IDL.Func([], [AgentCard], ['query']),
|
|
1165
|
-
getEngramNumber: IDL.Func([], [IDL.Opt(IDL.Nat)], ['query']),
|
|
1166
1159
|
getEvmAddress: IDL.Func([], [Result_59], []),
|
|
1167
1160
|
getEvmOwnerAddress: IDL.Func([], [IDL.Opt(IDL.Text)], ['query']),
|
|
1168
1161
|
getEvmSignerAddress: IDL.Func([], [Result_44], []),
|
|
@@ -1258,16 +1251,16 @@ export const idlFactory = ({ IDL }) => {
|
|
|
1258
1251
|
listPurgedAgents: IDL.Func([IDL.Nat, IDL.Nat], [Result_25], ['query']),
|
|
1259
1252
|
listReadLog: IDL.Func([IDL.Opt(IDL.Bool), IDL.Nat, IDL.Nat], [Result_24], ['query']),
|
|
1260
1253
|
listRepudiations: IDL.Func([IDL.Nat, IDL.Nat], [Result_23], ['query']),
|
|
1261
|
-
markAgentWritesReviewed: IDL.Func([IDL.Opt(IDL.Nat)], [
|
|
1254
|
+
markAgentWritesReviewed: IDL.Func([IDL.Opt(IDL.Nat)], [Result_12], []),
|
|
1262
1255
|
nominateAgentKey: IDL.Func([IDL.Principal], [Result_1], []),
|
|
1263
1256
|
openChildEngram: IDL.Func([], [Result_22], []),
|
|
1264
1257
|
openSession: IDL.Func([SessionConfig, PaymentSignature], [Result_21], []),
|
|
1265
|
-
ownerWithdraw: IDL.Func([TokenAmount, IDL.Opt(ActionAuth)], [
|
|
1258
|
+
ownerWithdraw: IDL.Func([TokenAmount, IDL.Opt(ActionAuth)], [Result_12], []),
|
|
1266
1259
|
pairAgent: IDL.Func([IDL.Record({ enrolment: Enrolment, code: IDL.Text })], [Result_20], []),
|
|
1267
1260
|
pauseWrites: IDL.Func([], [Result_1], []),
|
|
1268
1261
|
previewCondense: IDL.Func([IDL.Nat], [Result_19], ['query']),
|
|
1269
1262
|
previewOpenSession: IDL.Func([], [SessionIntent], ['query']),
|
|
1270
|
-
readMemory: IDL.Func([IDL.Text], [
|
|
1263
|
+
readMemory: IDL.Func([IDL.Text], [Result_10], ['query']),
|
|
1271
1264
|
readMemoryBatch: IDL.Func([IDL.Vec(IDL.Text)], [Result_18], ['query']),
|
|
1272
1265
|
readMemoryBytes: IDL.Func(
|
|
1273
1266
|
[IDL.Text, IDL.Nat, IDL.Nat, IDL.Opt(IDL.Nat)],
|
|
@@ -1280,7 +1273,7 @@ export const idlFactory = ({ IDL }) => {
|
|
|
1280
1273
|
removeEip712Type: IDL.Func([IDL.Vec(IDL.Nat8)], [Result_1], []),
|
|
1281
1274
|
removeEvmWithdrawDestination: IDL.Func([IDL.Text], [Result_1], []),
|
|
1282
1275
|
removeGuardian: IDL.Func([IDL.Principal], [Result_1], []),
|
|
1283
|
-
repudiateMemoryWrite: IDL.Func([IDL.Text, IDL.Nat, IDL.Text], [
|
|
1276
|
+
repudiateMemoryWrite: IDL.Func([IDL.Text, IDL.Nat, IDL.Text], [Result_12], []),
|
|
1284
1277
|
resetEngram: IDL.Func([], [Result_14], []),
|
|
1285
1278
|
resignAgent: IDL.Func([], [Result_1], []),
|
|
1286
1279
|
resumeWrites: IDL.Func([], [Result_1], []),
|
|
@@ -1288,20 +1281,19 @@ export const idlFactory = ({ IDL }) => {
|
|
|
1288
1281
|
returnToManaged: IDL.Func([], [Result_1], []),
|
|
1289
1282
|
reviseMemory: IDL.Func([IDL.Text, IDL.Vec(IDL.Nat8)], [Result], []),
|
|
1290
1283
|
revokeAgent: IDL.Func([IDL.Principal], [Result_1], []),
|
|
1291
|
-
revokeAllAgents: IDL.Func([], [
|
|
1292
|
-
revokeAllBearerTokens: IDL.Func([], [
|
|
1293
|
-
revokeAllInvites: IDL.Func([], [
|
|
1284
|
+
revokeAllAgents: IDL.Func([], [Result_12], []),
|
|
1285
|
+
revokeAllBearerTokens: IDL.Func([], [Result_12], []),
|
|
1286
|
+
revokeAllInvites: IDL.Func([], [Result_12], []),
|
|
1294
1287
|
revokeBearerToken: IDL.Func([IDL.Text], [Result_1], []),
|
|
1295
1288
|
rollbackMemory: IDL.Func([IDL.Text, IDL.Nat], [Result], []),
|
|
1296
1289
|
rotateAgentKeyHash: IDL.Func([IDL.Text], [Result_1], []),
|
|
1297
|
-
seedMemory: IDL.Func([IDL.Text, IDL.Vec(IDL.Nat8)], [Result], []),
|
|
1298
1290
|
sessionAppendMemory: IDL.Func([Voucher, IDL.Text, IDL.Vec(IDL.Nat8)], [Result], []),
|
|
1299
|
-
sessionReadContext: IDL.Func([IDL.Text], [
|
|
1300
|
-
sessionReadMemory: IDL.Func([Voucher, IDL.Text], [
|
|
1291
|
+
sessionReadContext: IDL.Func([IDL.Text], [Result_11], []),
|
|
1292
|
+
sessionReadMemory: IDL.Func([Voucher, IDL.Text], [Result_10], []),
|
|
1301
1293
|
setActionAlertConfig: IDL.Func([AlertConfig], [Result_1], []),
|
|
1302
1294
|
setAgentPermissions: IDL.Func([IDL.Principal, AgentPermissions], [Result_1], []),
|
|
1303
1295
|
setAgentRevisablePaths: IDL.Func([IDL.Vec(IDL.Text)], [Result_1], []),
|
|
1304
|
-
setBackupRetention: IDL.Func([IDL.Text, IDL.Nat], [
|
|
1296
|
+
setBackupRetention: IDL.Func([IDL.Text, IDL.Nat], [Result_9], []),
|
|
1305
1297
|
setCallerSpendPolicy: IDL.Func([IDL.Principal, SpendingPolicy], [Result_1], []),
|
|
1306
1298
|
setChildAllowance: IDL.Func([IDL.Principal, IDL.Nat], [Result_1], []),
|
|
1307
1299
|
setEncryptionEnabled: IDL.Func([IDL.Bool], [Result_1], []),
|
|
@@ -1338,7 +1330,7 @@ export const idlFactory = ({ IDL }) => {
|
|
|
1338
1330
|
maxPriorityFeePerGas: IDL.Nat,
|
|
1339
1331
|
}),
|
|
1340
1332
|
],
|
|
1341
|
-
[
|
|
1333
|
+
[Result_8],
|
|
1342
1334
|
[],
|
|
1343
1335
|
),
|
|
1344
1336
|
signX402Payment: IDL.Func(
|
|
@@ -1357,8 +1349,6 @@ export const idlFactory = ({ IDL }) => {
|
|
|
1357
1349
|
[Result_3],
|
|
1358
1350
|
[],
|
|
1359
1351
|
),
|
|
1360
|
-
syncEngramNumber: IDL.Func([], [Result_8], []),
|
|
1361
|
-
sysApplyGenesisSeed: IDL.Func([IDL.Text, IDL.Vec(IDL.Nat8)], [Result_8], []),
|
|
1362
1352
|
sysForceCloseSession: IDL.Func([IDL.Text], [Result_1], []),
|
|
1363
1353
|
sysGetAgentSeatWeeks: IDL.Func([], [Result_7], []),
|
|
1364
1354
|
sysGetRailHealth: IDL.Func([], [Result_6], ['query']),
|
|
@@ -1377,7 +1367,6 @@ export const idlFactory = ({ IDL }) => {
|
|
|
1377
1367
|
[],
|
|
1378
1368
|
),
|
|
1379
1369
|
sysSetBillerId: IDL.Func([IDL.Principal], [Result_1], []),
|
|
1380
|
-
sysSetEngramNumber: IDL.Func([IDL.Nat], [Result_1], []),
|
|
1381
1370
|
sysSetMarketId: IDL.Func([IDL.Principal], [Result_1], []),
|
|
1382
1371
|
sysSetMetricsReaderId: IDL.Func([IDL.Principal], [Result_1], []),
|
|
1383
1372
|
sysSignEip712: IDL.Func(
|
package/dist/registry.did
CHANGED
|
@@ -806,6 +806,9 @@ service : {
|
|
|
806
806
|
/// on two canisters is what a hand-written client cannot tell apart (a structural actor type
|
|
807
807
|
/// matches either target), so it gets the rule `getMarketCanister` already follows: distinct
|
|
808
808
|
/// names on distinct canisters. `…Of` says what the argument is for.
|
|
809
|
+
///
|
|
810
|
+
/// ⟨2026-10-13⟩ The engram no longer serves `getEngramNumber` at all: its copy of the number went
|
|
811
|
+
/// with the genesis seed, so this is the one read of an engram's number.
|
|
809
812
|
getEngramNumberOf: (canisterId: principal) -> (opt nat) query;
|
|
810
813
|
/// ⟨2026-10-01, the owner's ruling of that day (2 A)⟩ What a lasting key opened through a parent:
|
|
811
814
|
/// the engram, the engram it was opened from, and the cut-off's time if there is one. GATED:
|
|
@@ -1315,16 +1318,16 @@ service : {
|
|
|
1315
1318
|
/// `#Ok : { canisterId : Principal }` was a record with nothing to disambiguate: the success of a
|
|
1316
1319
|
/// spawn IS the canister it produced. The wrapper cost every caller a field access to reach the
|
|
1317
1320
|
/// only thing the call returns, and invited a second field later that would belong somewhere else.
|
|
1321
|
+
///
|
|
1322
|
+
/// ⟨2026-10-13, the owner's 6A⟩ `opts.genesis` (an optional first file, written as the canister
|
|
1323
|
+
/// spawned) is retired: the console creates an engram with no content (decision 2 B(b),
|
|
1324
|
+
/// 2026-09-30), the owner kit never calls this, and only test harnesses passed one. A caller still
|
|
1325
|
+
/// sending the field is unaffected — Candid ignores a record field the receiver does not declare.
|
|
1318
1326
|
provisionEngram: (opts:
|
|
1319
|
-
opt
|
|
1320
|
-
|
|
1321
|
-
|
|
1322
|
-
|
|
1323
|
-
path: text;
|
|
1324
|
-
};
|
|
1325
|
-
invite: opt text;
|
|
1326
|
-
walletProof: opt blob;
|
|
1327
|
-
}) -> (Result_1);
|
|
1327
|
+
opt record {
|
|
1328
|
+
invite: opt text;
|
|
1329
|
+
walletProof: opt blob;
|
|
1330
|
+
}) -> (Result_1);
|
|
1328
1331
|
removeAuditViewer: (viewer: principal) -> (Result);
|
|
1329
1332
|
/// ⟨0.16.0⟩ `Ok` IS THE ANSWER — the `{ reserved : Bool }` wrapper is gone.
|
|
1330
1333
|
///
|
package/dist/registry.idl.d.ts
CHANGED
|
@@ -683,6 +683,9 @@ export interface _SERVICE {
|
|
|
683
683
|
* / on two canisters is what a hand-written client cannot tell apart (a structural actor type
|
|
684
684
|
* / matches either target), so it gets the rule `getMarketCanister` already follows: distinct
|
|
685
685
|
* / names on distinct canisters. `…Of` says what the argument is for.
|
|
686
|
+
* /
|
|
687
|
+
* / ⟨2026-10-13⟩ The engram no longer serves `getEngramNumber` at all: its copy of the number went
|
|
688
|
+
* / with the genesis seed, so this is the one read of an engram's number.
|
|
686
689
|
*/
|
|
687
690
|
getEngramNumberOf: ActorMethod<[Principal], [] | [bigint]>;
|
|
688
691
|
/**
|
|
@@ -1277,6 +1280,11 @@ export interface _SERVICE {
|
|
|
1277
1280
|
* / `#Ok : { canisterId : Principal }` was a record with nothing to disambiguate: the success of a
|
|
1278
1281
|
* / spawn IS the canister it produced. The wrapper cost every caller a field access to reach the
|
|
1279
1282
|
* / only thing the call returns, and invited a second field later that would belong somewhere else.
|
|
1283
|
+
* /
|
|
1284
|
+
* / ⟨2026-10-13, the owner's 6A⟩ `opts.genesis` (an optional first file, written as the canister
|
|
1285
|
+
* / spawned) is retired: the console creates an engram with no content (decision 2 B(b),
|
|
1286
|
+
* / 2026-09-30), the owner kit never calls this, and only test harnesses passed one. A caller still
|
|
1287
|
+
* / sending the field is unaffected — Candid ignores a record field the receiver does not declare.
|
|
1280
1288
|
*/
|
|
1281
1289
|
provisionEngram: ActorMethod<
|
|
1282
1290
|
[
|
|
@@ -1285,7 +1293,6 @@ export interface _SERVICE {
|
|
|
1285
1293
|
{
|
|
1286
1294
|
walletProof: [] | [Uint8Array | number[]];
|
|
1287
1295
|
invite: [] | [string];
|
|
1288
|
-
genesis: [] | [{ content: Uint8Array | number[]; path: string }];
|
|
1289
1296
|
},
|
|
1290
1297
|
],
|
|
1291
1298
|
],
|
package/dist/registry.idl.js
CHANGED
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@engramx/idl",
|
|
3
|
-
"version": "0.16.0-rc.
|
|
3
|
+
"version": "0.16.0-rc.13",
|
|
4
4
|
"description": "The Candid interfaces of the EngramX canisters (engram, registry, market) — the .did files and the JS/TS IDL factories generated from them, published with every release so code that calls them pins the interface by version.",
|
|
5
5
|
"license": "Apache-2.0",
|
|
6
6
|
"author": "EngramX <developer@engramx.ai>",
|