@engramx/idl 0.16.0-rc.20 → 0.16.0-rc.22
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 +536 -193
- package/dist/engram.idl.d.ts +545 -193
- package/dist/engram.idl.js +259 -194
- package/dist/registry.did +214 -70
- package/dist/registry.idl.d.ts +204 -72
- package/dist/registry.idl.js +63 -22
- package/package.json +1 -1
package/dist/engram.did
CHANGED
|
@@ -180,6 +180,19 @@ type ServiceEntry =
|
|
|
180
180
|
skills: vec text;
|
|
181
181
|
version: text;
|
|
182
182
|
};
|
|
183
|
+
type SellerView =
|
|
184
|
+
record {
|
|
185
|
+
activatesAtNs: int;
|
|
186
|
+
addedAtNs: int;
|
|
187
|
+
addedBy: principal;
|
|
188
|
+
isPayout: bool;
|
|
189
|
+
liveNow: bool;
|
|
190
|
+
payTo: text;
|
|
191
|
+
pendingActivatesAtNs: opt int;
|
|
192
|
+
pendingCapE6: opt nat;
|
|
193
|
+
perDayCapE6: nat;
|
|
194
|
+
spentTodayE6: nat;
|
|
195
|
+
};
|
|
183
196
|
type Seat =
|
|
184
197
|
record {
|
|
185
198
|
firstPaymentDay: opt nat;
|
|
@@ -259,25 +272,40 @@ type Result_9 =
|
|
|
259
272
|
Err: Error;
|
|
260
273
|
Ok: vec Seat;
|
|
261
274
|
};
|
|
262
|
-
type
|
|
275
|
+
type Result_89 =
|
|
263
276
|
variant {
|
|
264
277
|
Err: Error;
|
|
265
278
|
Ok: AgentRecord;
|
|
266
279
|
};
|
|
280
|
+
type Result_87 =
|
|
281
|
+
variant {
|
|
282
|
+
Err: Error;
|
|
283
|
+
Ok: Eip712Registration;
|
|
284
|
+
};
|
|
285
|
+
type Result_85 =
|
|
286
|
+
variant {
|
|
287
|
+
Err: Error;
|
|
288
|
+
Ok: CondenseResult;
|
|
289
|
+
};
|
|
290
|
+
type Result_84 =
|
|
291
|
+
variant {
|
|
292
|
+
Err: Error;
|
|
293
|
+
Ok: MemoryRangeExport;
|
|
294
|
+
};
|
|
267
295
|
type Result_82 =
|
|
268
296
|
variant {
|
|
269
297
|
Err: Error;
|
|
270
|
-
Ok:
|
|
298
|
+
Ok: Page_26;
|
|
271
299
|
};
|
|
272
300
|
type Result_81 =
|
|
273
301
|
variant {
|
|
274
302
|
Err: Error;
|
|
275
|
-
Ok:
|
|
303
|
+
Ok: AgentWriteReview;
|
|
276
304
|
};
|
|
277
305
|
type Result_80 =
|
|
278
306
|
variant {
|
|
279
307
|
Err: Error;
|
|
280
|
-
Ok:
|
|
308
|
+
Ok: BackupMetadata;
|
|
281
309
|
};
|
|
282
310
|
type Result_8 =
|
|
283
311
|
variant {
|
|
@@ -287,47 +315,52 @@ type Result_8 =
|
|
|
287
315
|
type Result_79 =
|
|
288
316
|
variant {
|
|
289
317
|
Err: Error;
|
|
290
|
-
Ok:
|
|
318
|
+
Ok: BackupRetention;
|
|
319
|
+
};
|
|
320
|
+
type Result_78 =
|
|
321
|
+
variant {
|
|
322
|
+
Err: Error;
|
|
323
|
+
Ok: vec BirthRecord;
|
|
291
324
|
};
|
|
292
325
|
type Result_77 =
|
|
293
326
|
variant {
|
|
294
327
|
Err: Error;
|
|
295
|
-
Ok:
|
|
328
|
+
Ok: Brakes;
|
|
296
329
|
};
|
|
297
330
|
type Result_76 =
|
|
298
331
|
variant {
|
|
299
332
|
Err: Error;
|
|
300
|
-
Ok:
|
|
333
|
+
Ok: ChildAllowanceRow;
|
|
301
334
|
};
|
|
302
335
|
type Result_75 =
|
|
303
336
|
variant {
|
|
304
337
|
Err: Error;
|
|
305
|
-
Ok:
|
|
338
|
+
Ok: ChildOpening;
|
|
306
339
|
};
|
|
307
340
|
type Result_74 =
|
|
308
341
|
variant {
|
|
309
342
|
Err: Error;
|
|
310
|
-
Ok:
|
|
343
|
+
Ok: EvmAddresses;
|
|
311
344
|
};
|
|
312
345
|
type Result_73 =
|
|
313
346
|
variant {
|
|
314
347
|
Err: Error;
|
|
315
|
-
Ok:
|
|
348
|
+
Ok: AlertStatus;
|
|
316
349
|
};
|
|
317
350
|
type Result_72 =
|
|
318
351
|
variant {
|
|
319
352
|
Err: Error;
|
|
320
|
-
Ok:
|
|
353
|
+
Ok: blob;
|
|
321
354
|
};
|
|
322
355
|
type Result_71 =
|
|
323
356
|
variant {
|
|
324
357
|
Err: Error;
|
|
325
|
-
Ok:
|
|
358
|
+
Ok: KeyBackupStatus;
|
|
326
359
|
};
|
|
327
360
|
type Result_70 =
|
|
328
361
|
variant {
|
|
329
362
|
Err: Error;
|
|
330
|
-
Ok:
|
|
363
|
+
Ok: MemoryHistory;
|
|
331
364
|
};
|
|
332
365
|
type Result_7 =
|
|
333
366
|
variant {
|
|
@@ -337,52 +370,52 @@ type Result_7 =
|
|
|
337
370
|
type Result_69 =
|
|
338
371
|
variant {
|
|
339
372
|
Err: Error;
|
|
340
|
-
Ok:
|
|
373
|
+
Ok: MemoryRetentionPolicy;
|
|
341
374
|
};
|
|
342
375
|
type Result_68 =
|
|
343
376
|
variant {
|
|
344
377
|
Err: Error;
|
|
345
|
-
Ok:
|
|
378
|
+
Ok: OwnerConsole;
|
|
346
379
|
};
|
|
347
380
|
type Result_67 =
|
|
348
381
|
variant {
|
|
349
382
|
Err: Error;
|
|
350
|
-
Ok:
|
|
383
|
+
Ok: OwnerSignInView;
|
|
351
384
|
};
|
|
352
385
|
type Result_66 =
|
|
353
386
|
variant {
|
|
354
387
|
Err: Error;
|
|
355
|
-
Ok:
|
|
388
|
+
Ok: record {paths: vec text;};
|
|
356
389
|
};
|
|
357
390
|
type Result_65 =
|
|
358
391
|
variant {
|
|
359
392
|
Err: Error;
|
|
360
|
-
Ok:
|
|
393
|
+
Ok: RecipientHistory;
|
|
361
394
|
};
|
|
362
395
|
type Result_64 =
|
|
363
396
|
variant {
|
|
364
397
|
Err: Error;
|
|
365
|
-
Ok:
|
|
398
|
+
Ok: SigningFloorStatus;
|
|
366
399
|
};
|
|
367
400
|
type Result_63 =
|
|
368
401
|
variant {
|
|
369
402
|
Err: Error;
|
|
370
|
-
Ok:
|
|
403
|
+
Ok: SpendCeiling;
|
|
371
404
|
};
|
|
372
405
|
type Result_62 =
|
|
373
406
|
variant {
|
|
374
407
|
Err: Error;
|
|
375
|
-
Ok:
|
|
408
|
+
Ok: SpendingPolicy;
|
|
376
409
|
};
|
|
377
410
|
type Result_61 =
|
|
378
411
|
variant {
|
|
379
412
|
Err: Error;
|
|
380
|
-
Ok:
|
|
413
|
+
Ok: StorageReport;
|
|
381
414
|
};
|
|
382
415
|
type Result_60 =
|
|
383
416
|
variant {
|
|
384
417
|
Err: Error;
|
|
385
|
-
Ok:
|
|
418
|
+
Ok: WalletBalances;
|
|
386
419
|
};
|
|
387
420
|
type Result_6 =
|
|
388
421
|
variant {
|
|
@@ -392,52 +425,52 @@ type Result_6 =
|
|
|
392
425
|
type Result_59 =
|
|
393
426
|
variant {
|
|
394
427
|
Err: Error;
|
|
395
|
-
Ok:
|
|
428
|
+
Ok: WorldIdConfig;
|
|
396
429
|
};
|
|
397
430
|
type Result_58 =
|
|
398
431
|
variant {
|
|
399
432
|
Err: Error;
|
|
400
|
-
Ok:
|
|
433
|
+
Ok: WorldIdRpContext;
|
|
401
434
|
};
|
|
402
435
|
type Result_57 =
|
|
403
436
|
variant {
|
|
404
437
|
Err: Error;
|
|
405
|
-
Ok:
|
|
438
|
+
Ok: opt text;
|
|
406
439
|
};
|
|
407
440
|
type Result_56 =
|
|
408
441
|
variant {
|
|
409
442
|
Err: Error;
|
|
410
|
-
Ok:
|
|
443
|
+
Ok: bool;
|
|
411
444
|
};
|
|
412
445
|
type Result_55 =
|
|
413
446
|
variant {
|
|
414
447
|
Err: Error;
|
|
415
|
-
Ok:
|
|
448
|
+
Ok: text;
|
|
416
449
|
};
|
|
417
450
|
type Result_54 =
|
|
418
451
|
variant {
|
|
419
452
|
Err: Error;
|
|
420
|
-
Ok:
|
|
453
|
+
Ok: Page_25;
|
|
421
454
|
};
|
|
422
455
|
type Result_53 =
|
|
423
456
|
variant {
|
|
424
457
|
Err: Error;
|
|
425
|
-
Ok:
|
|
458
|
+
Ok: AgentSpendToday;
|
|
426
459
|
};
|
|
427
460
|
type Result_52 =
|
|
428
461
|
variant {
|
|
429
462
|
Err: Error;
|
|
430
|
-
Ok:
|
|
463
|
+
Ok: Page_23;
|
|
431
464
|
};
|
|
432
465
|
type Result_51 =
|
|
433
466
|
variant {
|
|
434
467
|
Err: Error;
|
|
435
|
-
Ok:
|
|
468
|
+
Ok: Page_22;
|
|
436
469
|
};
|
|
437
470
|
type Result_50 =
|
|
438
471
|
variant {
|
|
439
472
|
Err: Error;
|
|
440
|
-
Ok:
|
|
473
|
+
Ok: RecordPage;
|
|
441
474
|
};
|
|
442
475
|
type Result_5 =
|
|
443
476
|
variant {
|
|
@@ -452,47 +485,47 @@ type Result_49 =
|
|
|
452
485
|
type Result_48 =
|
|
453
486
|
variant {
|
|
454
487
|
Err: Error;
|
|
455
|
-
Ok:
|
|
488
|
+
Ok: Page_20;
|
|
456
489
|
};
|
|
457
490
|
type Result_47 =
|
|
458
491
|
variant {
|
|
459
492
|
Err: Error;
|
|
460
|
-
Ok:
|
|
493
|
+
Ok: CheckpointPage;
|
|
461
494
|
};
|
|
462
495
|
type Result_46 =
|
|
463
496
|
variant {
|
|
464
497
|
Err: Error;
|
|
465
|
-
Ok:
|
|
498
|
+
Ok: Page_18;
|
|
466
499
|
};
|
|
467
500
|
type Result_45 =
|
|
468
501
|
variant {
|
|
469
502
|
Err: Error;
|
|
470
|
-
Ok:
|
|
503
|
+
Ok: Page_17;
|
|
471
504
|
};
|
|
472
505
|
type Result_44 =
|
|
473
506
|
variant {
|
|
474
507
|
Err: Error;
|
|
475
|
-
Ok:
|
|
508
|
+
Ok: Page_16;
|
|
476
509
|
};
|
|
477
510
|
type Result_43 =
|
|
478
511
|
variant {
|
|
479
512
|
Err: Error;
|
|
480
|
-
Ok:
|
|
513
|
+
Ok: Page_15;
|
|
481
514
|
};
|
|
482
515
|
type Result_42 =
|
|
483
516
|
variant {
|
|
484
517
|
Err: Error;
|
|
485
|
-
Ok:
|
|
518
|
+
Ok: Page_14;
|
|
486
519
|
};
|
|
487
520
|
type Result_41 =
|
|
488
521
|
variant {
|
|
489
522
|
Err: Error;
|
|
490
|
-
Ok:
|
|
523
|
+
Ok: Page_13;
|
|
491
524
|
};
|
|
492
525
|
type Result_40 =
|
|
493
526
|
variant {
|
|
494
527
|
Err: Error;
|
|
495
|
-
Ok:
|
|
528
|
+
Ok: ReceiptPage;
|
|
496
529
|
};
|
|
497
530
|
type Result_4 =
|
|
498
531
|
variant {
|
|
@@ -502,52 +535,52 @@ type Result_4 =
|
|
|
502
535
|
type Result_39 =
|
|
503
536
|
variant {
|
|
504
537
|
Err: Error;
|
|
505
|
-
Ok:
|
|
538
|
+
Ok: Page_11;
|
|
506
539
|
};
|
|
507
540
|
type Result_38 =
|
|
508
541
|
variant {
|
|
509
542
|
Err: Error;
|
|
510
|
-
Ok:
|
|
543
|
+
Ok: LogPage;
|
|
511
544
|
};
|
|
512
545
|
type Result_37 =
|
|
513
546
|
variant {
|
|
514
547
|
Err: Error;
|
|
515
|
-
Ok:
|
|
548
|
+
Ok: Page_9;
|
|
516
549
|
};
|
|
517
550
|
type Result_36 =
|
|
518
551
|
variant {
|
|
519
552
|
Err: Error;
|
|
520
|
-
Ok:
|
|
553
|
+
Ok: Page_8;
|
|
521
554
|
};
|
|
522
555
|
type Result_35 =
|
|
523
556
|
variant {
|
|
524
557
|
Err: Error;
|
|
525
|
-
Ok:
|
|
558
|
+
Ok: Page_7;
|
|
526
559
|
};
|
|
527
560
|
type Result_34 =
|
|
528
561
|
variant {
|
|
529
562
|
Err: Error;
|
|
530
|
-
Ok:
|
|
563
|
+
Ok: PaymentSignatureCounts;
|
|
531
564
|
};
|
|
532
565
|
type Result_33 =
|
|
533
566
|
variant {
|
|
534
567
|
Err: Error;
|
|
535
|
-
Ok:
|
|
568
|
+
Ok: Page_5;
|
|
536
569
|
};
|
|
537
570
|
type Result_32 =
|
|
538
571
|
variant {
|
|
539
572
|
Err: Error;
|
|
540
|
-
Ok:
|
|
573
|
+
Ok: Page_4;
|
|
541
574
|
};
|
|
542
575
|
type Result_31 =
|
|
543
576
|
variant {
|
|
544
577
|
Err: Error;
|
|
545
|
-
Ok:
|
|
578
|
+
Ok: Page_3;
|
|
546
579
|
};
|
|
547
580
|
type Result_30 =
|
|
548
581
|
variant {
|
|
549
582
|
Err: Error;
|
|
550
|
-
Ok:
|
|
583
|
+
Ok: Page_2;
|
|
551
584
|
};
|
|
552
585
|
type Result_3 =
|
|
553
586
|
variant {
|
|
@@ -557,52 +590,52 @@ type Result_3 =
|
|
|
557
590
|
type Result_29 =
|
|
558
591
|
variant {
|
|
559
592
|
Err: Error;
|
|
560
|
-
Ok:
|
|
593
|
+
Ok: Page_1;
|
|
561
594
|
};
|
|
562
595
|
type Result_28 =
|
|
563
596
|
variant {
|
|
564
597
|
Err: Error;
|
|
565
|
-
Ok:
|
|
598
|
+
Ok: Page;
|
|
566
599
|
};
|
|
567
600
|
type Result_27 =
|
|
568
601
|
variant {
|
|
569
602
|
Err: Error;
|
|
570
|
-
Ok:
|
|
603
|
+
Ok: AgentGrant;
|
|
571
604
|
};
|
|
572
605
|
type Result_26 =
|
|
573
606
|
variant {
|
|
574
607
|
Err: Error;
|
|
575
|
-
Ok:
|
|
608
|
+
Ok: principal;
|
|
576
609
|
};
|
|
577
610
|
type Result_25 =
|
|
578
611
|
variant {
|
|
579
612
|
Err: Error;
|
|
580
|
-
Ok:
|
|
613
|
+
Ok: EngramSessionState;
|
|
581
614
|
};
|
|
582
615
|
type Result_24 =
|
|
583
616
|
variant {
|
|
584
617
|
Err: Error;
|
|
585
|
-
Ok:
|
|
618
|
+
Ok: Pairing;
|
|
586
619
|
};
|
|
587
620
|
type Result_23 =
|
|
588
621
|
variant {
|
|
589
622
|
Err: Error;
|
|
590
|
-
Ok:
|
|
623
|
+
Ok: CondensePreview;
|
|
591
624
|
};
|
|
592
625
|
type Result_22 =
|
|
593
626
|
variant {
|
|
594
627
|
Err: Error;
|
|
595
|
-
Ok:
|
|
628
|
+
Ok: RetentionPreview;
|
|
596
629
|
};
|
|
597
630
|
type Result_21 =
|
|
598
631
|
variant {
|
|
599
632
|
Err: Error;
|
|
600
|
-
Ok:
|
|
633
|
+
Ok: vec BatchReadItem;
|
|
601
634
|
};
|
|
602
635
|
type Result_20 =
|
|
603
636
|
variant {
|
|
604
637
|
Err: Error;
|
|
605
|
-
Ok:
|
|
638
|
+
Ok: MemoryByteChunk;
|
|
606
639
|
};
|
|
607
640
|
type Result_2 =
|
|
608
641
|
variant {
|
|
@@ -612,47 +645,47 @@ type Result_2 =
|
|
|
612
645
|
type Result_19 =
|
|
613
646
|
variant {
|
|
614
647
|
Err: Error;
|
|
615
|
-
Ok:
|
|
648
|
+
Ok: EngramEscrowRecovery;
|
|
616
649
|
};
|
|
617
650
|
type Result_18 =
|
|
618
651
|
variant {
|
|
619
652
|
Err: Error;
|
|
620
|
-
Ok:
|
|
653
|
+
Ok: GuardianRecord;
|
|
621
654
|
};
|
|
622
655
|
type Result_17 =
|
|
623
656
|
variant {
|
|
624
657
|
Err: Error;
|
|
625
|
-
Ok:
|
|
658
|
+
Ok: ResetReport;
|
|
626
659
|
};
|
|
627
660
|
type Result_16 =
|
|
628
661
|
variant {
|
|
629
662
|
Err: Error;
|
|
630
|
-
Ok:
|
|
663
|
+
Ok: ResyncReport;
|
|
631
664
|
};
|
|
632
665
|
type Result_15 =
|
|
633
666
|
variant {
|
|
634
667
|
Err: Error;
|
|
635
|
-
Ok:
|
|
668
|
+
Ok: nat;
|
|
636
669
|
};
|
|
637
670
|
type Result_14 =
|
|
638
671
|
variant {
|
|
639
672
|
Err: Error;
|
|
640
|
-
Ok:
|
|
673
|
+
Ok: SessionContext;
|
|
641
674
|
};
|
|
642
675
|
type Result_13 =
|
|
643
676
|
variant {
|
|
644
677
|
Err: Error;
|
|
645
|
-
Ok:
|
|
678
|
+
Ok: MemoryFile;
|
|
646
679
|
};
|
|
647
680
|
type Result_12 =
|
|
648
681
|
variant {
|
|
649
682
|
Err: Error;
|
|
650
|
-
Ok:
|
|
683
|
+
Ok: BackupRetentionReport;
|
|
651
684
|
};
|
|
652
685
|
type Result_11 =
|
|
653
686
|
variant {
|
|
654
687
|
Err: Error;
|
|
655
|
-
Ok:
|
|
688
|
+
Ok: record {activatesAtNs: int;};
|
|
656
689
|
};
|
|
657
690
|
type Result_10 =
|
|
658
691
|
variant {
|
|
@@ -699,10 +732,21 @@ type RecordNote =
|
|
|
699
732
|
auditId: nat;
|
|
700
733
|
note: text;
|
|
701
734
|
};
|
|
735
|
+
type RecipientHistory =
|
|
736
|
+
record {
|
|
737
|
+
firstPaidAtNs: opt int;
|
|
738
|
+
historyFull: bool;
|
|
739
|
+
largestPaidE6: nat;
|
|
740
|
+
lastPaidAtNs: opt int;
|
|
741
|
+
listedSeller: bool;
|
|
742
|
+
liveNow: bool;
|
|
743
|
+
paidBefore: bool;
|
|
744
|
+
timesPaid: nat;
|
|
745
|
+
};
|
|
702
746
|
type ReceiptPage =
|
|
703
747
|
record {
|
|
704
748
|
firstAvailableSeq: nat;
|
|
705
|
-
page:
|
|
749
|
+
page: Page_12;
|
|
706
750
|
scannedThroughSeq: nat;
|
|
707
751
|
};
|
|
708
752
|
type RailHealth =
|
|
@@ -744,7 +788,7 @@ type PaymentsNow =
|
|
|
744
788
|
};
|
|
745
789
|
type PaymentSignatureCounts =
|
|
746
790
|
record {
|
|
747
|
-
agents:
|
|
791
|
+
agents: Page_6;
|
|
748
792
|
day: int;
|
|
749
793
|
limit: nat;
|
|
750
794
|
marketplace: opt MarketplacePaymentSignatures;
|
|
@@ -777,71 +821,71 @@ type Pairing =
|
|
|
777
821
|
};
|
|
778
822
|
type Page_9 =
|
|
779
823
|
record {
|
|
780
|
-
items: vec
|
|
824
|
+
items: vec ApprovalRequest;
|
|
781
825
|
total: nat;
|
|
782
826
|
withheld: nat;
|
|
783
827
|
};
|
|
784
828
|
type Page_8 =
|
|
785
829
|
record {
|
|
786
|
-
items: vec
|
|
830
|
+
items: vec EngramSessionState;
|
|
787
831
|
total: nat;
|
|
788
832
|
withheld: nat;
|
|
789
833
|
};
|
|
790
834
|
type Page_7 =
|
|
791
835
|
record {
|
|
792
|
-
items: vec
|
|
836
|
+
items: vec OwnershipTransfer;
|
|
793
837
|
total: nat;
|
|
794
838
|
withheld: nat;
|
|
795
839
|
};
|
|
796
840
|
type Page_6 =
|
|
797
841
|
record {
|
|
798
|
-
items: vec
|
|
842
|
+
items: vec AgentPaymentSignatures;
|
|
799
843
|
total: nat;
|
|
800
844
|
withheld: nat;
|
|
801
845
|
};
|
|
802
846
|
type Page_5 =
|
|
803
847
|
record {
|
|
804
|
-
items: vec
|
|
848
|
+
items: vec PurgedAgent;
|
|
805
849
|
total: nat;
|
|
806
850
|
withheld: nat;
|
|
807
851
|
};
|
|
808
852
|
type Page_4 =
|
|
809
853
|
record {
|
|
810
|
-
items: vec
|
|
854
|
+
items: vec AuditEntry;
|
|
811
855
|
total: nat;
|
|
812
856
|
withheld: nat;
|
|
813
857
|
};
|
|
814
858
|
type Page_3 =
|
|
815
859
|
record {
|
|
816
|
-
items: vec
|
|
860
|
+
items: vec RecordNote;
|
|
817
861
|
total: nat;
|
|
818
862
|
withheld: nat;
|
|
819
863
|
};
|
|
820
|
-
type
|
|
864
|
+
type Page_26 =
|
|
821
865
|
record {
|
|
822
866
|
items: vec OwnerRow;
|
|
823
867
|
total: nat;
|
|
824
868
|
withheld: nat;
|
|
825
869
|
};
|
|
826
|
-
type
|
|
870
|
+
type Page_25 =
|
|
827
871
|
record {
|
|
828
872
|
items: vec ActivitySnapshot;
|
|
829
873
|
total: nat;
|
|
830
874
|
withheld: nat;
|
|
831
875
|
};
|
|
832
|
-
type
|
|
876
|
+
type Page_24 =
|
|
833
877
|
record {
|
|
834
878
|
items: vec AgentSpendRow;
|
|
835
879
|
total: nat;
|
|
836
880
|
withheld: nat;
|
|
837
881
|
};
|
|
838
|
-
type
|
|
882
|
+
type Page_23 =
|
|
839
883
|
record {
|
|
840
884
|
items: vec AgentRecord;
|
|
841
885
|
total: nat;
|
|
842
886
|
withheld: nat;
|
|
843
887
|
};
|
|
844
|
-
type
|
|
888
|
+
type Page_22 =
|
|
845
889
|
record {
|
|
846
890
|
items: vec record {
|
|
847
891
|
name: text;
|
|
@@ -851,81 +895,87 @@ type Page_21 =
|
|
|
851
895
|
total: nat;
|
|
852
896
|
withheld: nat;
|
|
853
897
|
};
|
|
854
|
-
type
|
|
898
|
+
type Page_21 =
|
|
855
899
|
record {
|
|
856
900
|
items: vec BackupMetadata;
|
|
857
901
|
total: nat;
|
|
858
902
|
withheld: nat;
|
|
859
903
|
};
|
|
904
|
+
type Page_20 =
|
|
905
|
+
record {
|
|
906
|
+
items: vec BearerToken;
|
|
907
|
+
total: nat;
|
|
908
|
+
withheld: nat;
|
|
909
|
+
};
|
|
860
910
|
type Page_2 =
|
|
861
911
|
record {
|
|
862
|
-
items: vec
|
|
912
|
+
items: vec Repudiation;
|
|
863
913
|
total: nat;
|
|
864
914
|
withheld: nat;
|
|
865
915
|
};
|
|
866
916
|
type Page_19 =
|
|
867
917
|
record {
|
|
868
|
-
items: vec
|
|
918
|
+
items: vec CondenseCheckpointRow;
|
|
869
919
|
total: nat;
|
|
870
920
|
withheld: nat;
|
|
871
921
|
};
|
|
872
922
|
type Page_18 =
|
|
873
923
|
record {
|
|
874
|
-
items: vec
|
|
924
|
+
items: vec CycleSnapshot;
|
|
875
925
|
total: nat;
|
|
876
926
|
withheld: nat;
|
|
877
927
|
};
|
|
878
928
|
type Page_17 =
|
|
879
929
|
record {
|
|
880
|
-
items: vec
|
|
930
|
+
items: vec text;
|
|
881
931
|
total: nat;
|
|
882
932
|
withheld: nat;
|
|
883
933
|
};
|
|
884
934
|
type Page_16 =
|
|
885
935
|
record {
|
|
886
|
-
items: vec
|
|
936
|
+
items: vec Eip712Destination;
|
|
887
937
|
total: nat;
|
|
888
938
|
withheld: nat;
|
|
889
939
|
};
|
|
890
940
|
type Page_15 =
|
|
891
941
|
record {
|
|
892
|
-
items: vec
|
|
942
|
+
items: vec Eip712TypeView;
|
|
893
943
|
total: nat;
|
|
894
944
|
withheld: nat;
|
|
895
945
|
};
|
|
896
946
|
type Page_14 =
|
|
897
947
|
record {
|
|
898
|
-
items: vec
|
|
948
|
+
items: vec GuardianDispute;
|
|
899
949
|
total: nat;
|
|
900
950
|
withheld: nat;
|
|
901
951
|
};
|
|
902
952
|
type Page_13 =
|
|
903
953
|
record {
|
|
904
|
-
items: vec
|
|
954
|
+
items: vec GuardianRecord;
|
|
905
955
|
total: nat;
|
|
906
956
|
withheld: nat;
|
|
907
957
|
};
|
|
908
958
|
type Page_12 =
|
|
909
959
|
record {
|
|
910
|
-
items: vec
|
|
960
|
+
items: vec ExportReceiptRow;
|
|
911
961
|
total: nat;
|
|
912
962
|
withheld: nat;
|
|
913
963
|
};
|
|
914
964
|
type Page_11 =
|
|
915
965
|
record {
|
|
916
|
-
items: vec
|
|
966
|
+
items: vec MemoryFileRow;
|
|
917
967
|
total: nat;
|
|
918
968
|
withheld: nat;
|
|
919
969
|
};
|
|
920
970
|
type Page_10 =
|
|
921
971
|
record {
|
|
922
|
-
items: vec
|
|
972
|
+
items: vec MemoryLogEvent;
|
|
923
973
|
total: nat;
|
|
924
974
|
withheld: nat;
|
|
925
975
|
};
|
|
926
976
|
type Page_1 =
|
|
927
977
|
record {
|
|
928
|
-
items: vec
|
|
978
|
+
items: vec SellerView;
|
|
929
979
|
total: nat;
|
|
930
980
|
withheld: nat;
|
|
931
981
|
};
|
|
@@ -942,6 +992,16 @@ type OwnershipTransfer =
|
|
|
942
992
|
from: opt principal;
|
|
943
993
|
to: principal;
|
|
944
994
|
};
|
|
995
|
+
type OwnerSignInView =
|
|
996
|
+
record {
|
|
997
|
+
askedAtNs: opt int;
|
|
998
|
+
callerIsAsked: bool;
|
|
999
|
+
callerIsSignIn: bool;
|
|
1000
|
+
declinedAtNs: opt int;
|
|
1001
|
+
declinedBy: opt principal;
|
|
1002
|
+
openedFrom: opt principal;
|
|
1003
|
+
ownerSignIn: opt principal;
|
|
1004
|
+
};
|
|
945
1005
|
type OwnerRow =
|
|
946
1006
|
record {
|
|
947
1007
|
firstPaymentDay: opt nat;
|
|
@@ -1157,13 +1217,21 @@ type LogPage =
|
|
|
1157
1217
|
record {
|
|
1158
1218
|
firstAvailableSeq: nat;
|
|
1159
1219
|
head: blob;
|
|
1160
|
-
page:
|
|
1220
|
+
page: Page_10;
|
|
1161
1221
|
};
|
|
1162
1222
|
type KeyNomination =
|
|
1163
1223
|
record {
|
|
1164
1224
|
atNs: int;
|
|
1165
1225
|
key: principal;
|
|
1166
1226
|
};
|
|
1227
|
+
type KeyBackupStatus =
|
|
1228
|
+
record {
|
|
1229
|
+
copyWaitsWithAsk: bool;
|
|
1230
|
+
matchesSignIn: bool;
|
|
1231
|
+
sealed: bool;
|
|
1232
|
+
sealedAtNs: opt int;
|
|
1233
|
+
sealedFor: opt principal;
|
|
1234
|
+
};
|
|
1167
1235
|
type Ic402Maintenance =
|
|
1168
1236
|
record {
|
|
1169
1237
|
dailySpendRemoved: nat;
|
|
@@ -1342,7 +1410,13 @@ type Engram =
|
|
|
1342
1410
|
/// nomination names. That check compares the caller inside the module, where
|
|
1343
1411
|
/// test/key-replacement.test.mo runs it; this body names no roster gate, because the caller holds
|
|
1344
1412
|
/// no role here until the move.
|
|
1345
|
-
acceptAgentKeyNomination: (agentKey: principal) -> (
|
|
1413
|
+
acceptAgentKeyNomination: (agentKey: principal) -> (Result_89);
|
|
1414
|
+
/// The person the owner asked again ACCEPTS: they become this engram's sign-in, and the sealed copy
|
|
1415
|
+
/// that came with the ask becomes the engram's (sealed for them). Until this call they have no power
|
|
1416
|
+
/// at all. Callable only by that person while the ask waits; refused (as at birth) if they are now
|
|
1417
|
+
/// an agent or a guardian here.
|
|
1418
|
+
/// Named caller: an owner console — "accept" on a waiting ask, signed in as the person asked.
|
|
1419
|
+
acceptSignIn: () -> (Result_2);
|
|
1346
1420
|
/// Consensus transform for the alert webhook outcall: collapse the response to status-only so
|
|
1347
1421
|
/// replicas agree regardless of response headers/body (we only care that the POST landed 2xx).
|
|
1348
1422
|
///
|
|
@@ -1372,7 +1446,7 @@ type Engram =
|
|
|
1372
1446
|
/// and works while frozen; a value is 1–128 characters (an address, or a venue value such as an
|
|
1373
1447
|
/// account name). The action must be registered: a destination list belongs to an action, and a
|
|
1374
1448
|
/// list for no action would be a value nothing checks. The caller is the owner's app.
|
|
1375
|
-
addEip712Destination: (typeId: blob, value: text) -> (
|
|
1449
|
+
addEip712Destination: (typeId: blob, value: text) -> (Result_11);
|
|
1376
1450
|
/// Register a typed-data shape as signable. Owner-only, freeze-gated (a registration is a grant
|
|
1377
1451
|
/// of FUTURE authority — a frozen engram must not be able to widen what it can sign), and the
|
|
1378
1452
|
/// shape is IMMUTABLE: any change mints a new typeId.
|
|
@@ -1388,6 +1462,14 @@ type Engram =
|
|
|
1388
1462
|
/// `eip712SignFor` before the cap reservation. Before this, a withdrawal registered as `#standard`
|
|
1389
1463
|
/// needed no webhook, no guardian and no destination field, waited one hour, and signed to any
|
|
1390
1464
|
/// address. Intrinsic checks still come first and the watchers last (the 2026-08-06 re-ordering).
|
|
1465
|
+
///
|
|
1466
|
+
/// ⟨2026-11-02, the child build's stage 5⟩ In an engram opened through another, after the spec's own
|
|
1467
|
+
/// checks: the venue actions that move money or control to another account are refused by name
|
|
1468
|
+
/// (`HyperliquidTransaction:` `UsdSend`, `SpotSend`, `SendAsset`, `SendToEvmWithData`,
|
|
1469
|
+
/// `ConvertToMultiSigUser`, `ApproveBuilderFee`, `TokenDelegate` — `#Refused`), and
|
|
1470
|
+
/// `HyperliquidTransaction:Withdraw` registers only with a must-equal rule on `destination` naming this
|
|
1471
|
+
/// engram's own pay address (`#Refused` otherwise; `#Conflict` while the pay address has not been
|
|
1472
|
+
/// derived — call `getEvmAddress` first). A first engram is unchanged.
|
|
1391
1473
|
addEip712Type: (spec:
|
|
1392
1474
|
record {
|
|
1393
1475
|
ackIrrevocable: bool;
|
|
@@ -1412,7 +1494,7 @@ type Engram =
|
|
|
1412
1494
|
};
|
|
1413
1495
|
primaryType: text;
|
|
1414
1496
|
verifyingContract: text;
|
|
1415
|
-
}) -> (
|
|
1497
|
+
}) -> (Result_87);
|
|
1416
1498
|
/// ⟨0.16.0, L1⟩ THE ROLE-CONFLICT ARM, and why three refusals here are not the same refusal.
|
|
1417
1499
|
///
|
|
1418
1500
|
/// This method had five distinct ways to say no through one `text`, and a caller could only tell
|
|
@@ -1431,7 +1513,17 @@ type Engram =
|
|
|
1431
1513
|
/// refused by `requireOwner`'s own words. Empty words, words over `RecordWords.WORDS_MAX` or
|
|
1432
1514
|
/// holding a line break are `#Invalid`; an id past the head is `#NotFound`; nothing is recorded
|
|
1433
1515
|
/// on any refusal.
|
|
1434
|
-
addRecordNote: (about: nat, note: text) -> (
|
|
1516
|
+
addRecordNote: (about: nat, note: text) -> (Result_15);
|
|
1517
|
+
/// List a seller: from 24 hours after this call, x402 may pay `payTo` up to `perDayCapE6` a UTC day
|
|
1518
|
+
/// (minor units of a six-decimal stablecoin — 1_000_000 is $1.00) without an approval, and a payment
|
|
1519
|
+
/// to it no longer counts against the engram-wide ceiling or the paying agent's own limits. Above the
|
|
1520
|
+
/// cap a payment goes to the approval queue like any other. `isPayout` marks it as where this engram
|
|
1521
|
+
/// pays out (the same row, its own cap). The sign-in only, in an engram opened through another; the
|
|
1522
|
+
/// owner in a first engram. Refused while payments are frozen, for a malformed or already-listed
|
|
1523
|
+
/// address, a cap of 0, and past `Sellers.MAX_SELLERS` rows. Answers when the row starts to count.
|
|
1524
|
+
/// Named callers: an owner console's seller list for an engram (signed in as its sign-in, for one
|
|
1525
|
+
/// opened through another), and the owner kit.
|
|
1526
|
+
addSeller: (payTo: text, perDayCapE6: nat, isPayout: bool) -> (Result_11);
|
|
1435
1527
|
/// Returns the write RECEIPT, not just the version.
|
|
1436
1528
|
///
|
|
1437
1529
|
/// The receipt was always computed and then thrown away: MemoryRouter hands back
|
|
@@ -1463,7 +1555,7 @@ type Engram =
|
|
|
1463
1555
|
/// Gated on requireWritesNotPaused — unlike the export. This one destroys retained entries, which
|
|
1464
1556
|
/// is exactly what a guardian pause exists to hold. No action alert is raised: the operation is
|
|
1465
1557
|
/// owner-initiated, owner-only, and already chained into the audit log.
|
|
1466
|
-
applyCondense: (toSeq: nat) -> (
|
|
1558
|
+
applyCondense: (toSeq: nat) -> (Result_85);
|
|
1467
1559
|
/// Owner-only: activate a guardian who has registered against an invite.
|
|
1468
1560
|
///
|
|
1469
1561
|
/// Until this call the guardian is `#Pending` and can do NOTHING — registering is a claim, this
|
|
@@ -1494,6 +1586,16 @@ type Engram =
|
|
|
1494
1586
|
/// no longer pending — already approved, denied or expired. The status is in the message because
|
|
1495
1587
|
/// "not pending" is the one refusal here an owner acts on differently depending on which it is.
|
|
1496
1588
|
approveRequest: (requestId: text) -> (Result_2);
|
|
1589
|
+
/// The OWNER asks the person who last declined to be this engram's sign-in again. No principal
|
|
1590
|
+
/// argument: the ask goes to `signInDeclinedBy` alone, so the key file can never seat a sign-in of
|
|
1591
|
+
/// its choosing — re-asking the person who already said no gives a thief nothing. `sealed` is the
|
|
1592
|
+
/// owner's key sealed by the kit for that person; it is stored with the ask, inert, and becomes the
|
|
1593
|
+
/// engram's sealed copy only if they accept. Refused in a first engram, while a sign-in is in place,
|
|
1594
|
+
/// when nobody ever declined (an engram opened without a sign-in has nobody to ask, for life), while
|
|
1595
|
+
/// an ask already waits, within 7 days of the last decline (`OwnerSignIn.askRefusal`), and when the
|
|
1596
|
+
/// person has since become an agent or a guardian here. The sign-in and the person asked are refused.
|
|
1597
|
+
/// Named caller: the owner kit, signed by the agent's lasting key (it seals the key for that person).
|
|
1598
|
+
askSignInAgain: (sealed: blob) -> (Result_2);
|
|
1497
1599
|
/// Discard a backup started by `backupInit` and never finalized. The way out of a failed upload,
|
|
1498
1600
|
/// and the reason a stalled one need not occupy space indefinitely. Same gate as the rest of the
|
|
1499
1601
|
/// write half: owner, or an agent holding `canAppendMemory`.
|
|
@@ -1534,13 +1636,13 @@ type Engram =
|
|
|
1534
1636
|
///
|
|
1535
1637
|
/// The write half also refuses while writes are PAUSED.
|
|
1536
1638
|
backupInit: (dbType: text, backupType: BackupType, parentBackupId:
|
|
1537
|
-
opt text, sha256: text, backupLabel: opt text) -> (
|
|
1639
|
+
opt text, sha256: text, backupLabel: opt text) -> (Result_55);
|
|
1538
1640
|
/// Read one chunk of a finalized backup, by index.
|
|
1539
1641
|
///
|
|
1540
1642
|
/// ⚠ GATED ON `read_backup`, which is NOT the permission the upload half uses — that one is
|
|
1541
1643
|
/// `canAppendMemory`. Holding one says nothing about the other, deliberately: taking a backup and
|
|
1542
1644
|
/// carrying it away are different authorities.
|
|
1543
|
-
backupPullChunk: (backupId: text, chunkIndex: nat) -> (
|
|
1645
|
+
backupPullChunk: (backupId: text, chunkIndex: nat) -> (Result_72) query;
|
|
1544
1646
|
backupPushChunk: (backupId: text, chunkIndex: nat, data: blob) ->
|
|
1545
1647
|
(Result_2);
|
|
1546
1648
|
/// The OWNER cancels an agent's pending key nomination; the agent keeps its current key. Refused
|
|
@@ -1573,7 +1675,7 @@ type Engram =
|
|
|
1573
1675
|
/// ⟨2026-10-02⟩ The second parameter is NAMED `amountE6` now, as the census row above rules the
|
|
1574
1676
|
/// pair — e6 base units of the token named first. A name only: Candid passes arguments by
|
|
1575
1677
|
/// position, so nothing on the wire moved.
|
|
1576
|
-
convertEarningsToCycles: (token: text, amountE6: nat) -> (
|
|
1678
|
+
convertEarningsToCycles: (token: text, amountE6: nat) -> (Result_15);
|
|
1577
1679
|
/// Owner-only: mint a single-use invite code an agent redeems with `pairAgent`.
|
|
1578
1680
|
///
|
|
1579
1681
|
/// ⚠ READ THIS BEFORE INVITING SOMEONE BACK. Pairing is ONE-SHOT PER PRINCIPAL on
|
|
@@ -1602,7 +1704,7 @@ type Engram =
|
|
|
1602
1704
|
/// ⟨2026-10-29, review F7⟩ A name the owner gives meets the rule `renameAgent` applies: a line break
|
|
1603
1705
|
/// or another control character is `#Invalid` (`People.nameRefusal`), as a rename to it would be.
|
|
1604
1706
|
createAgentInvite: (name: text, permissions: AgentPermissions) ->
|
|
1605
|
-
(
|
|
1707
|
+
(Result_55);
|
|
1606
1708
|
/// Owner-only: mint an invite for a GUARDIAN — an independent check on agents, not a
|
|
1607
1709
|
/// co-owner and not a recovery agent.
|
|
1608
1710
|
///
|
|
@@ -1625,7 +1727,22 @@ type Engram =
|
|
|
1625
1727
|
/// So an invite that fails to redeem for that reason is not a bad code. The rule exists because
|
|
1626
1728
|
/// a check must be independent of the thing it checks.
|
|
1627
1729
|
createGuardianInvite: (name: text, permissions: GuardianPermissions) ->
|
|
1628
|
-
(
|
|
1730
|
+
(Result_55);
|
|
1731
|
+
/// The sign-in GIVES ITSELF UP, or the person the owner asked again says no. ⟨the owner's ruling "1
|
|
1732
|
+
/// yes, but the child can ask again" — the child build's Challenge C3.1: whoever the kit names cannot
|
|
1733
|
+
/// otherwise refuse a seat they never agreed to⟩
|
|
1734
|
+
/// · as the sign-in: the slot empties, the sealed copy of the owner's key is deleted (nobody may
|
|
1735
|
+
/// hold a copy for a seat that is gone), and the caller is recorded as the one who declined, with
|
|
1736
|
+
/// the time. The engram keeps its small limits; the owner may ask this person again in 7 days.
|
|
1737
|
+
/// Listed sellers stop counting at once (a raise waiting in them too): the rows are kept, and
|
|
1738
|
+
/// count again only if this person accepts a re-ask (`Sellers.inForce`).
|
|
1739
|
+
/// · as the person a waiting ask goes to: the ask and the copy that came with it are dropped, and
|
|
1740
|
+
/// the decline's time moves to now (the next ask waits another 7 days).
|
|
1741
|
+
/// The key file is refused: it cannot empty the slot (a thief would, to strand the honest owner's
|
|
1742
|
+
/// approvals). A first engram has nothing to decline.
|
|
1743
|
+
/// Named caller: an owner console — the sign-in's "decline", and the person asked's "decline" on a
|
|
1744
|
+
/// waiting ask.
|
|
1745
|
+
declineSignIn: () -> (Result_2);
|
|
1629
1746
|
/// OWNER-ONLY deletion of a stored backup.
|
|
1630
1747
|
///
|
|
1631
1748
|
/// ⚠ NOT THE SAME GATE AS THE REST OF THE FAMILY, and the asymmetry is deliberate: `backupInit`,
|
|
@@ -1668,7 +1785,7 @@ type Engram =
|
|
|
1668
1785
|
/// WHAT: an entry the owner's review would show (`qualifiesForReview` — an agent's append or
|
|
1669
1786
|
/// revision, or a paid session's append) that succeeded, still held in full by the ring.
|
|
1670
1787
|
/// One dispute per guardian per write (`#Conflict`, the first stands).
|
|
1671
|
-
disputeAgentWrite: (about: nat, reason: text) -> (
|
|
1788
|
+
disputeAgentWrite: (about: nat, reason: text) -> (Result_15);
|
|
1672
1789
|
/// Record that log entries [fromSeq, toSeq] were served, and return the root that proves it.
|
|
1673
1790
|
///
|
|
1674
1791
|
/// This is the receipt ledgerfs Q2 requires before any of those entries may be condensed away.
|
|
@@ -1682,7 +1799,7 @@ type Engram =
|
|
|
1682
1799
|
/// situation rather than a safety measure. It IS gated on requireMemoryAttached: a store that
|
|
1683
1800
|
/// failed its integrity check must not attest anything it cannot vouch for.
|
|
1684
1801
|
exportMemoryRange: (fromSeq: nat, toSeq: nat, authorFilter:
|
|
1685
|
-
opt principal) -> (
|
|
1802
|
+
opt principal) -> (Result_84);
|
|
1686
1803
|
/// ⟨0.16.0, L2.2 — renamed from `guardianFreezePayments`⟩ The prefix LIED about who may call it.
|
|
1687
1804
|
/// The gate is `requireOwnerOrGuardian`, and an owner freezing their own payments is the ordinary
|
|
1688
1805
|
/// case — the guardian is the exceptional one. A name that says otherwise sends an owner looking
|
|
@@ -1724,7 +1841,9 @@ type Engram =
|
|
|
1724
1841
|
/// brake is NOT pulled — the caller pulls it with `freezePayments`, or shortens the words.
|
|
1725
1842
|
freezePaymentsWithReason: (reason: text) -> (Result_2);
|
|
1726
1843
|
/// Delivery status + config readback. Owner-only (the URL is a secret).
|
|
1727
|
-
|
|
1844
|
+
/// ⟨2026-11-03, the pre-gate fixes — spec §7, "child: sign-in — reads yes"⟩ Also the seated sign-in of
|
|
1845
|
+
/// an engram opened through another, as the owner (`#ownerOrSignIn`); a first engram is unchanged.
|
|
1846
|
+
getActionAlertStatus: () -> (Result_73) query;
|
|
1728
1847
|
/// Agents need to know what they may revise, so they can read it too. Whole-value config, same
|
|
1729
1848
|
/// carve-out as getProtectedPaths — and kept a SEPARATE method from it deliberately (L2.2): a
|
|
1730
1849
|
/// protected path and a revisable path are opposite grants, and one accessor for both would be a
|
|
@@ -1732,7 +1851,7 @@ type Engram =
|
|
|
1732
1851
|
///
|
|
1733
1852
|
/// Refusal reason preserved from the trap: a grant is a power, and its absence and its
|
|
1734
1853
|
/// concealment are different facts.
|
|
1735
|
-
getAgentRevisablePaths: () -> (
|
|
1854
|
+
getAgentRevisablePaths: () -> (Result_66) query;
|
|
1736
1855
|
/// OWNER-ONLY: every engagement's seat weeks on this engram, with the agent's root — the day it
|
|
1737
1856
|
/// paired, the days of its first and last payment signature, a 64-week map whose bit 0 is the week
|
|
1738
1857
|
/// of the last one, and how many were produced. Never an amount, a recipient or a nonce.
|
|
@@ -1743,7 +1862,9 @@ type Engram =
|
|
|
1743
1862
|
/// order. Anyone else is refused by name (`#Refused getAgentSeatWeeks: …`), never answered with an
|
|
1744
1863
|
/// empty page. Paged; `total` is every engagement ever paired here (a reset keeps the rows).
|
|
1745
1864
|
/// Two rows can name one root: an agent paired again after it left is a second engagement.
|
|
1746
|
-
|
|
1865
|
+
/// ⟨2026-11-03, the pre-gate fixes — spec §7, "child: sign-in — reads yes"⟩ Also the seated sign-in of
|
|
1866
|
+
/// an engram opened through another, as the owner (`#ownerOrSignIn`); a first engram is unchanged.
|
|
1867
|
+
getAgentSeatWeeks: (start: nat, limit: nat) -> (Result_82) query;
|
|
1747
1868
|
/// Owner: everything written into this engram by someone other than the owner since the last
|
|
1748
1869
|
/// markAgentWritesReviewed() — agent appends/revisions AND paid-session appends (see
|
|
1749
1870
|
/// qualifiesForReview for why those two families are recognised differently).
|
|
@@ -1751,7 +1872,10 @@ type Engram =
|
|
|
1751
1872
|
/// them — the UI must page (markAgentWritesReviewed(?lastShownId)) and must NOT present 200
|
|
1752
1873
|
/// as a total. `earliest` discloses ring eviction — if cursor < earliest, entries between them
|
|
1753
1874
|
/// aged out of the ring (the CHAIN still proves total count; this view can't show their bodies).
|
|
1754
|
-
|
|
1875
|
+
/// ⟨2026-11-03, the pre-gate fixes — spec §7, "child: sign-in — reads yes"⟩ Also the seated sign-in of
|
|
1876
|
+
/// an engram opened through another, as the owner (`AccessControl.requireOwnerOrSignIn`); a first
|
|
1877
|
+
/// engram is unchanged.
|
|
1878
|
+
getAgentWriteReview: () -> (Result_81) query;
|
|
1755
1879
|
/// Why anchoring is or is not advancing. PUBLIC: ungated on purpose — detecting a stalled
|
|
1756
1880
|
/// engram is the point, a gated read would fail-to-empty and hand a third party fabricated zeros,
|
|
1757
1881
|
/// and none of these fields is a secret — `total` is already public via getCertifiedAuditHead.
|
|
@@ -1770,7 +1894,7 @@ type Engram =
|
|
|
1770
1894
|
/// below serves the same head WITH the subnet certificate for a caller that needs to verify it
|
|
1771
1895
|
/// was signed rather than asserted.
|
|
1772
1896
|
getAuditHead: () -> (AuditHead) query;
|
|
1773
|
-
getBackupMetadata: (backupId: text) -> (
|
|
1897
|
+
getBackupMetadata: (backupId: text) -> (Result_80) query;
|
|
1774
1898
|
/// ⟨2026-10-21, the owner's round-11 answer m: a backup-retention getter⟩ How many backups of
|
|
1775
1899
|
/// `dbType` each creator keeps, and whether that is the default — the read `setBackupRetention`
|
|
1776
1900
|
/// lacked, so "Keeps your newest 3" showed only on the phone that last set it.
|
|
@@ -1781,7 +1905,7 @@ type Engram =
|
|
|
1781
1905
|
/// denied"), a revoked or resigned agent, a guardian (guardians take no backups), a stranger and
|
|
1782
1906
|
/// the anonymous caller. A kind the setter would refuse is `#Invalid` here too
|
|
1783
1907
|
/// (`Backup.getRetention`). Records nothing (a query).
|
|
1784
|
-
getBackupRetention: (dbType: text) -> (
|
|
1908
|
+
getBackupRetention: (dbType: text) -> (Result_79) query;
|
|
1785
1909
|
/// The cashier this engram recognises as its rent biller — `null` until the registry pushes one.
|
|
1786
1910
|
///
|
|
1787
1911
|
/// PUBLIC: a payer about to send money needs to know which cashier this engram will accept credit
|
|
@@ -1796,7 +1920,9 @@ type Engram =
|
|
|
1796
1920
|
/// from, which is the owner's to disclose, not the registry's. The certified half is at the registry
|
|
1797
1921
|
/// (`getCertifiedBirth`, public, revealing only whether a fingerprint is present); the client's
|
|
1798
1922
|
/// `verifyBirthChain` checks both. Refused to anyone else by the combinator (`#ownerOnly`).
|
|
1799
|
-
|
|
1923
|
+
/// ⟨2026-11-03, the pre-gate fixes — spec §7, "child: sign-in — reads yes"⟩ Also the seated sign-in of
|
|
1924
|
+
/// an engram opened through another, as the owner (`#ownerOrSignIn`); a first engram is unchanged.
|
|
1925
|
+
getBirthChain: () -> (Result_78) query;
|
|
1800
1926
|
/// ⟨2026-10-21, the owner's round-11 answer d⟩ Each brake: on or off, and while on, who pulled it
|
|
1801
1927
|
/// LAST (their key and whether as owner or guardian), since when, and the reason they gave — the
|
|
1802
1928
|
/// same person and time as the newest brake entry on the record (`RecordWords.BrakePull`). For the
|
|
@@ -1805,7 +1931,7 @@ type Engram =
|
|
|
1805
1931
|
/// — an agent learns a brake is on from the refusal of what it tried, and needs no more). `pull`
|
|
1806
1932
|
/// is null for a brake that is off, and for one carried on across the upgrade that added this
|
|
1807
1933
|
/// read (who pulled it was not recorded then) — never a guessed pull.
|
|
1808
|
-
getBrakes: () -> (
|
|
1934
|
+
getBrakes: () -> (Result_77) query;
|
|
1809
1935
|
/// ⟨0.16.0, L9/L10 — census row⟩ `Wire.CertifiedAuditHead`, not an anonymous record. The
|
|
1810
1936
|
/// registry, market and cashier already served the shared type; the engram — the canister that
|
|
1811
1937
|
/// IS the evidence product — was the one chain still answering in a shape of its own, missing
|
|
@@ -1828,11 +1954,31 @@ type Engram =
|
|
|
1828
1954
|
/// query's state writes are discarded when it returns, and the `denied` call first written here
|
|
1829
1955
|
/// recorded nothing while reading as if it did. The refusal is loud in the reply instead. WHAT
|
|
1830
1956
|
/// WOULD MAKE THIS WRONG: a reason to record who asked — then this becomes an update that says so.
|
|
1831
|
-
getChildAllowance: (agentPrincipal: principal) -> (
|
|
1957
|
+
getChildAllowance: (agentPrincipal: principal) -> (Result_76) query;
|
|
1832
1958
|
/// Owner-only, Billing-class: what opening an engram costs this engram, the balance below which an
|
|
1833
1959
|
/// agent's request is refused, the balance now, and every agent's allowance. The console's cost
|
|
1834
1960
|
/// sentence reads it. Cycles are owner-class information, as on the owner's console read.
|
|
1835
|
-
|
|
1961
|
+
/// ⟨2026-11-03, the pre-gate fixes — spec §7, "child: sign-in — reads yes"⟩ Also the seated sign-in of
|
|
1962
|
+
/// an engram opened through another, as the owner (`#ownerOrSignIn`); a first engram is unchanged.
|
|
1963
|
+
getChildOpening: () -> (Result_75) query;
|
|
1964
|
+
/// Derive the key that opens the sealed copy, encrypted under the caller's transport public key —
|
|
1965
|
+
/// for the SIGN-IN alone (the combinator's `#ownerSignIn`; the key file is refused by name: only the
|
|
1966
|
+
/// sign-in opens the backup, and the key file holds the plaintext anyway). The derivation input is the
|
|
1967
|
+
/// sign-in's own principal, the same identity the kit sealed the copy to, so a former sign-in's key
|
|
1968
|
+
/// never opens a copy re-sealed for its successor. Refused in a first engram, with no sign-in, and
|
|
1969
|
+
/// with no copy, all before the call. The opening is recorded (`keyBackup.opened`), so the owner's
|
|
1970
|
+
/// alert fires: the one act a thief holding the sign-in cannot hide. Not blocked by a freeze: a
|
|
1971
|
+
/// freeze must never lock the owner out of its own key.
|
|
1972
|
+
/// ⟨CORRECTED 2026-11-03, the stage-6 review's m1, beside the sentence above⟩ "cannot hide" overstates
|
|
1973
|
+
/// it: in an engram opened through another the sign-in sets the alert address, so a thief holding the
|
|
1974
|
+
/// sign-in can re-point it first. Each opening is recorded in the engram's record (which the key file
|
|
1975
|
+
/// reads) and alerted to whatever address the sign-in has set.
|
|
1976
|
+
///
|
|
1977
|
+
/// ⟨L7⟩ UPDATE, NOT QUERY, and this is the system call that forces it: the body awaits
|
|
1978
|
+
/// `VetKeys.ManagementCanister.vetKdDeriveKey`. A query cannot await.
|
|
1979
|
+
/// Named callers: an owner console signed in as the sign-in (the browser's recovery), and the owner
|
|
1980
|
+
/// kit's `--recover-key` signed by a key-file sign-in.
|
|
1981
|
+
getEncryptedKeyBackupKey: (transportPublicKey: blob) -> (Result_72);
|
|
1836
1982
|
/// Derive the shared memory-encryption key, encrypted under the caller's transport
|
|
1837
1983
|
/// public key. Gated to owner + read-agents (the same principals allowed to read
|
|
1838
1984
|
/// memory). The client decrypts it locally with its transport secret key.
|
|
@@ -1857,7 +2003,7 @@ type Engram =
|
|
|
1857
2003
|
/// cost. Stated here because L7 requires the reason be readable from the interface rather than
|
|
1858
2004
|
/// inferred by opening the body — which is exactly what had to happen to write this line.
|
|
1859
2005
|
getEncryptedMemoryKey: (epoch: opt nat, transportPublicKey: blob) ->
|
|
1860
|
-
(
|
|
2006
|
+
(Result_72);
|
|
1861
2007
|
/// ⟨0.16.0, owner ruling 2026-08-20 — option (a)⟩ `x402Support` REPORTS THE RAIL, not a constant.
|
|
1862
2008
|
///
|
|
1863
2009
|
/// The card's config hardcodes `x402Support = true`, answering a buyer's question with a fact
|
|
@@ -1952,7 +2098,7 @@ type Engram =
|
|
|
1952
2098
|
/// It refuses rather than half-answers: if either address cannot be derived the reply is
|
|
1953
2099
|
/// `#Err`, never a record carrying an empty string (ic402's `getEvmAddress` answers `""` on a
|
|
1954
2100
|
/// failed derivation — that is fail-to-empty on a money surface, and it stops here).
|
|
1955
|
-
getEvmAddress: () -> (
|
|
2101
|
+
getEvmAddress: () -> (Result_74);
|
|
1956
2102
|
/// The owner's OWN EVM address, if they registered one — distinct from `getEvmAddress`, which is
|
|
1957
2103
|
/// the address this canister derives for itself.
|
|
1958
2104
|
///
|
|
@@ -1967,7 +2113,10 @@ type Engram =
|
|
|
1967
2113
|
/// the management canister's `ecdsa_public_key`. A query cannot await, so the round-trip is the
|
|
1968
2114
|
/// cost — stated here because L7 requires the reason be readable from the interface rather than
|
|
1969
2115
|
/// inferred by opening the body.
|
|
1970
|
-
|
|
2116
|
+
/// ⟨2026-11-03, the pre-gate fixes — spec §7, "child: sign-in — reads yes"⟩ Also the seated sign-in of
|
|
2117
|
+
/// an engram opened through another, as the owner (`AccessControl.requireOwnerOrSignIn`); a first
|
|
2118
|
+
/// engram is unchanged.
|
|
2119
|
+
getEvmSignerAddress: () -> (Result_55);
|
|
1971
2120
|
/// PUBLIC: where this chain begins, for the stranger deciding whether to trust it.
|
|
1972
2121
|
///
|
|
1973
2122
|
/// The fourth of the four evidence methods (`getAuditHead`, `getCertifiedAuditHead`,
|
|
@@ -1976,7 +2125,40 @@ type Engram =
|
|
|
1976
2125
|
/// cannot verify it, and nothing here identifies anybody.
|
|
1977
2126
|
getGenesisNote: () -> (GenesisNote) query;
|
|
1978
2127
|
/// A guardian's own channel status (their URL is their secret — each guardian sees only theirs).
|
|
1979
|
-
getGuardianAlertStatus: () -> (
|
|
2128
|
+
getGuardianAlertStatus: () -> (Result_73) query;
|
|
2129
|
+
/// The sealed copy itself — opaque bytes only the sign-in can open. Readable by the sign-in (it
|
|
2130
|
+
/// opens them with the key `getEncryptedKeyBackupKey` derives for it) and by the key file, which
|
|
2131
|
+
/// holds the plaintext already and so learns nothing — it reads them to compare with the copy the kit
|
|
2132
|
+
/// made (the Challenge's C2.11: a copy someone else stored first reads as "not this key", not as
|
|
2133
|
+
/// "sealed"). Refused in a first engram, and `#NotFound` when no copy is held. The copy that waits
|
|
2134
|
+
/// with an ask is never served here: it is inert until accepted.
|
|
2135
|
+
/// A QUERY: the refusal is in the reply, not the denial log (a query's writes are discarded).
|
|
2136
|
+
/// Named callers: the owner kit (`--recover-key`, and its check after sealing), and an owner console
|
|
2137
|
+
/// signed in as the sign-in (the browser's recovery).
|
|
2138
|
+
getKeyBackupCiphertext: () -> (Result_72) query;
|
|
2139
|
+
/// Whether this engram holds a sealed copy of its owner's key, for whom, since when, whether it is
|
|
2140
|
+
/// sealed for the sign-in seated now, and whether a copy waits with an ask (`Types.KeyBackupStatus`).
|
|
2141
|
+
/// Readable by the key file and the sign-in (`#ownerOrSignIn`); refused loudly to anyone else
|
|
2142
|
+
/// (ADR-0002). A first engram refuses by name rather than answer "not sealed": it never holds one,
|
|
2143
|
+
/// and an empty answer there would read as a child whose seal failed.
|
|
2144
|
+
/// A QUERY: the refusal is in the reply, not the denial log (a query's writes are discarded).
|
|
2145
|
+
/// Named callers: the owner kit after it opens an engram (it prints whether the copy is stored), and
|
|
2146
|
+
/// an owner console showing an engram opened through another (whether recovery can work).
|
|
2147
|
+
getKeyBackupStatus: () -> (Result_71) query;
|
|
2148
|
+
/// BLS verification key under which the owner kit seals the backup (`IbeCiphertext.encrypt` to the
|
|
2149
|
+
/// sign-in's principal) and the opener verifies the derived key. Served on-canister so the kit never
|
|
2150
|
+
/// has to know which master key this network uses (the spec's Q-K3: a wrong guess would seal a copy
|
|
2151
|
+
/// nobody can open). Static per (context, key id, canister) — cacheable.
|
|
2152
|
+
///
|
|
2153
|
+
/// PUBLIC: intentionally unauthenticated — a vetKD public key reveals nothing secret and cannot
|
|
2154
|
+
/// decrypt anything — the sensitive derivation is getEncryptedKeyBackupKey below, which IS gated
|
|
2155
|
+
/// (the sign-in alone) and returns key material encrypted to the caller's transport key. The same
|
|
2156
|
+
/// reasoning as getMemoryKeyVerificationKey, for the backup's own context.
|
|
2157
|
+
/// ⟨L7⟩ UPDATE, NOT QUERY, and this is the system call that forces it: the body awaits
|
|
2158
|
+
/// `VetKeys.ManagementCanister.vetKdPublicKey`. A query cannot await.
|
|
2159
|
+
/// Named callers: the owner kit, when it seals the copy at birth or for an ask; an owner console,
|
|
2160
|
+
/// to verify the derived key during recovery.
|
|
2161
|
+
getKeyBackupVerificationKey: () -> (blob);
|
|
1980
2162
|
/// The market this engram will accept signing requests from — `null` until the registry pushes
|
|
1981
2163
|
/// one at spawn, which is why `requireMarket` refuses fleet-wide today.
|
|
1982
2164
|
///
|
|
@@ -2006,7 +2188,7 @@ type Engram =
|
|
|
2006
2188
|
/// never renumbered: the next page starts at the last version returned plus one. Defaults
|
|
2007
2189
|
/// return the whole history of any file a pre-FD engram could have held.
|
|
2008
2190
|
getMemoryHistory: (path: text, start: opt nat, max: opt nat) ->
|
|
2009
|
-
(
|
|
2191
|
+
(Result_70) query;
|
|
2010
2192
|
/// PUBLIC: the epoch alone, and deliberately nothing else (rotation study D4). A `rotatedAt[]`
|
|
2011
2193
|
/// history would be a public, fleet-enumerable feed of when each owner terminated a trust
|
|
2012
2194
|
/// relationship — readable by, among others, the party just terminated.
|
|
@@ -2047,7 +2229,7 @@ type Engram =
|
|
|
2047
2229
|
/// Refusal reasons of both merge: an empty policy reads as "nothing is capped, every version kept
|
|
2048
2230
|
/// forever" — a claim about what this engram will DESTROY — and an empty guard list reads as
|
|
2049
2231
|
/// "nothing is held back".
|
|
2050
|
-
getMemoryRetentionPolicy: () -> (
|
|
2232
|
+
getMemoryRetentionPolicy: () -> (Result_69) query;
|
|
2051
2233
|
/// The metrics reader this engram answers — `null` until the spawning registry names one.
|
|
2052
2234
|
///
|
|
2053
2235
|
/// PUBLIC: an owner deciding whether to switch the read off needs to know who it is, and anyone
|
|
@@ -2060,7 +2242,7 @@ type Engram =
|
|
|
2060
2242
|
/// see: the only row it can ever return is the caller's own, so "you are not a guardian here" is
|
|
2061
2243
|
/// a fact about the caller, told to the caller. There is nothing to leak by omission — which is
|
|
2062
2244
|
/// the test the #NotFound arm sets.
|
|
2063
|
-
getMyGuardianStatus: () -> (
|
|
2245
|
+
getMyGuardianStatus: () -> (Result_18) query;
|
|
2064
2246
|
/// ⟨0.16.0, NEW⟩ The gated half of the status() split.
|
|
2065
2247
|
///
|
|
2066
2248
|
/// Every field is bare — no masking, no `authorized` discriminator — because reaching this record
|
|
@@ -2070,7 +2252,16 @@ type Engram =
|
|
|
2070
2252
|
/// was `nat`, then widened to `opt nat` so a refusal could be `null`, which broke every published
|
|
2071
2253
|
/// client (rule 4) and bought a masked answer nobody had asked for — the census could not even
|
|
2072
2254
|
/// find a consumer that read the masked `0`. Behind a gate there is nobody to mask it from.
|
|
2073
|
-
getOwnerConsole: () -> (
|
|
2255
|
+
getOwnerConsole: () -> (Result_68) query;
|
|
2256
|
+
/// The engram's sign-in, as `Types.OwnerSignInView` describes it: whether this engram was opened
|
|
2257
|
+
/// through another, who its sign-in is, whether the caller is it, and any decline or waiting ask.
|
|
2258
|
+
/// Readable by the owner's key, the sign-in, and the person a waiting ask goes to (they need to see
|
|
2259
|
+
/// the ask to answer it); refused loudly to anyone else (ADR-0002) — never an empty view, which would
|
|
2260
|
+
/// read as "no sign-in". A first engram answers its owner with every field null or false.
|
|
2261
|
+
/// A QUERY: the refusal is in the reply, not the denial log (a query's writes are discarded).
|
|
2262
|
+
/// Named callers: an owner console showing an engram opened through another (who signs in, and a
|
|
2263
|
+
/// waiting ask with Accept and Decline), and the owner kit after it opens one.
|
|
2264
|
+
getOwnerSignIn: () -> (Result_67) query;
|
|
2074
2265
|
/// Owner + agents only (agents need it to avoid writing protected paths).
|
|
2075
2266
|
///
|
|
2076
2267
|
/// A NAMED RECORD, not a Page: the setter replaces this list wholesale, so there is no window to
|
|
@@ -2082,7 +2273,18 @@ type Engram =
|
|
|
2082
2273
|
/// path on this engram is protected", and an agent consults this list precisely to avoid
|
|
2083
2274
|
/// writing one — so a fabricated empty here does not merely misinform, it invites the write the
|
|
2084
2275
|
/// list exists to prevent.
|
|
2085
|
-
getProtectedPaths: () -> (
|
|
2276
|
+
getProtectedPaths: () -> (Result_66) query;
|
|
2277
|
+
/// What an approval card shows beside a payment to `payTo` (`Types.RecipientHistory`): whether an x402
|
|
2278
|
+
/// signature from this engram has paid it before and since when, whether it is a listed seller and
|
|
2279
|
+
/// counts now, and whether the history is full (then "not paid before" may be one it forgot). Read
|
|
2280
|
+
/// beside the request, because the stored request is never reshaped. For the key file and the sign-in
|
|
2281
|
+
/// (the owner in a first engram); refused loudly to anyone else. A malformed address is `#Invalid`.
|
|
2282
|
+
/// ⟨2026-11-02, the child build's stage 5⟩ Also how many times x402 has paid it and the largest of
|
|
2283
|
+
/// those payments (`timesPaid`, `largestPaidE6`, six-decimal minor units), so a card can say "paid 3
|
|
2284
|
+
/// times, largest $12"; the history forgets the address paid longest ago when full.
|
|
2285
|
+
/// ⟨2026-11-03, the pre-gate fixes⟩ And when it was LAST paid (`lastPaidAtNs`; null when never).
|
|
2286
|
+
/// Named callers: an owner console's approval card for a payment request.
|
|
2287
|
+
getRecipientHistory: (payTo: text) -> (Result_65) query;
|
|
2086
2288
|
/// Whether the metrics reader's read is answered — `true` from birth.
|
|
2087
2289
|
///
|
|
2088
2290
|
/// PUBLIC: the promise that an owner can switch this read off can be checked only if the switch
|
|
@@ -2091,7 +2293,12 @@ type Engram =
|
|
|
2091
2293
|
/// Owner-only, Billing-class: the signing floor, the balance, one signature's price, and how many
|
|
2092
2294
|
/// payment signatures the balance carries above the floor before `signX402Payment` is refused by
|
|
2093
2295
|
/// name. The same numbers the check uses, so Billing can say only what the engram enforces.
|
|
2094
|
-
|
|
2296
|
+
/// ⟨2026-11-01, "6 fix"⟩ Refused by name (`#Unavailable`) while this engram has not read its own
|
|
2297
|
+
/// freezing setting: there is no floor to serve then, and a 30-day figure would be a made-up one
|
|
2298
|
+
/// (ADR-0002) — the signers refuse in that state too, so the refusal is the truth on Billing.
|
|
2299
|
+
/// ⟨2026-11-03, the pre-gate fixes — spec §7, "child: sign-in — reads yes"⟩ Also the seated sign-in of
|
|
2300
|
+
/// an engram opened through another, as the owner (`#ownerOrSignIn`); a first engram is unchanged.
|
|
2301
|
+
getSigningFloor: () -> (Result_64) query;
|
|
2095
2302
|
/// The registry that spawned this engram, if it recorded one.
|
|
2096
2303
|
///
|
|
2097
2304
|
/// PUBLIC: it is the provenance claim. An engram asserting it is part of a fleet, under that
|
|
@@ -2108,7 +2315,9 @@ type Engram =
|
|
|
2108
2315
|
/// configuration, and the engram-wide total would also tell one agent how much the others spent.
|
|
2109
2316
|
/// A refusal names this method (`Gated.gatedResult`) rather than answering null/0 — a ceiling of
|
|
2110
2317
|
/// "none" and a spend of 0 are both real answers, so a fabricated one would be read as fact.
|
|
2111
|
-
|
|
2318
|
+
/// ⟨2026-11-03, the pre-gate fixes — spec §7, "child: sign-in — reads yes"⟩ Also the seated sign-in of
|
|
2319
|
+
/// an engram opened through another, as the owner (`#ownerOrSignIn`); a first engram is unchanged.
|
|
2320
|
+
getSpendCeiling: () -> (Result_63) query;
|
|
2112
2321
|
/// Read the caps in force for a caller.
|
|
2113
2322
|
///
|
|
2114
2323
|
/// OWNER-ONLY, and this is where it diverges from the market's inbound twin, which is public.
|
|
@@ -2116,8 +2325,17 @@ type Engram =
|
|
|
2116
2325
|
/// Here the engram serves no 402s at all: these caps are the owner's private custody
|
|
2117
2326
|
/// configuration, and publishing them would tell any caller exactly how large a signing request
|
|
2118
2327
|
/// can be before it needs an approval nobody is watching for.
|
|
2119
|
-
|
|
2120
|
-
|
|
2328
|
+
///
|
|
2329
|
+
/// ⟨2026-11-03, the pre-gate fixes — spec §7, "child: sign-in — reads yes"⟩ Also the seated sign-in of
|
|
2330
|
+
/// an engram opened through another, as the owner, through the combinator's `#ownerOrSignIn` (a first
|
|
2331
|
+
/// engram is unchanged: the owner only). The inline owner comparison that stood here is gone with it —
|
|
2332
|
+
/// one fewer unnamed caller guard. Its refusal sentence is kept as the reason it never fails soft:
|
|
2333
|
+
/// "Spending caps are the owner's custody configuration. Refusing rather than answering with
|
|
2334
|
+
/// defaults — a default-looking answer would understate the real limits to anyone probing them." The
|
|
2335
|
+
/// refusal itself is now the combinator's (`#Refused getSpendPolicy: …`, `requireOwner`'s words), and
|
|
2336
|
+
/// an engram with no owner yet is refused the same way rather than answered `#Conflict`.
|
|
2337
|
+
getSpendPolicy: (caller: opt principal) -> (Result_62) query;
|
|
2338
|
+
getStorageStats: () -> (Result_61) query;
|
|
2121
2339
|
/// Timer arm-state. PUBLIC and deliberately so: these timers are self-arming to save cycles,
|
|
2122
2340
|
/// and an optimisation nobody can verify is an optimisation nobody should trust. Cheap to read,
|
|
2123
2341
|
/// leaks nothing (booleans about our own scheduling).
|
|
@@ -2200,12 +2418,12 @@ type Engram =
|
|
|
2200
2418
|
/// ⟨L7⟩ MARKER ADDED 2026-08-23, reasoning above UNCHANGED — this block already said "Stays an
|
|
2201
2419
|
/// UPDATE, marked per L7: it awaits three ICRC-1 ledgers". It was marked in prose and invisible
|
|
2202
2420
|
/// to any gate; the glyph is what `scripts/check-update-for-read.mjs` matches.
|
|
2203
|
-
getWalletBalances: () -> (
|
|
2421
|
+
getWalletBalances: () -> (Result_60);
|
|
2204
2422
|
/// Refusal reason preserved, and it is the clearest case of why a masked read is worse than no
|
|
2205
2423
|
/// read: three empty strings with `configured = false` is a VALID-LOOKING answer meaning "this
|
|
2206
2424
|
/// engram has no World ID configuration" — handed to a caller who merely lacks a grant. The
|
|
2207
2425
|
/// fabrication is indistinguishable from the truth by construction.
|
|
2208
|
-
getWorldIdConfig: () -> (
|
|
2426
|
+
getWorldIdConfig: () -> (Result_59) query;
|
|
2209
2427
|
/// ⟨L7⟩ UPDATE, NOT QUERY: this awaits THREE system calls — `raw_rand()` for the nonce,
|
|
2210
2428
|
/// `Call.signWithEcdsa` for the signature, and `worldIdRpPublicKey()` for the derived key. A
|
|
2211
2429
|
/// query can do none of them.
|
|
@@ -2214,7 +2432,7 @@ type Engram =
|
|
|
2214
2432
|
/// Valid iff the derived signer address (getWorldIdRpSignerAddress) is registered for this rp_id in
|
|
2215
2433
|
/// the World Developer Portal. Short-lived (300s TTL, idkit-server's default) and single-purpose —
|
|
2216
2434
|
/// it authorizes opening one verification request, nothing else.
|
|
2217
|
-
getWorldIdRpContext: () -> (
|
|
2435
|
+
getWorldIdRpContext: () -> (Result_58);
|
|
2218
2436
|
/// Owner-only: the EVM address derived from the engram's dedicated World ID RP signing key (the
|
|
2219
2437
|
/// "worldid-rp" tECDSA path). Register THIS address as the rp_id's signer in the World Developer
|
|
2220
2438
|
/// Portal — the engram never holds or exports a private key (only threshold shares exist, on the
|
|
@@ -2224,7 +2442,10 @@ type Engram =
|
|
|
2224
2442
|
/// awaits `worldIdRpPublicKey()` (management `ecdsa_public_key`), and it calls `denied()` on
|
|
2225
2443
|
/// refusal — a state write, which a query cannot perform. So even if the key were cached this
|
|
2226
2444
|
/// could not become a query without silently retiring its denial record (ADR-0002's class).
|
|
2227
|
-
|
|
2445
|
+
/// ⟨2026-11-03, the pre-gate fixes — spec §7, "child: sign-in — reads yes"⟩ Also the seated sign-in of
|
|
2446
|
+
/// an engram opened through another, as the owner (`AccessControl.requireOwnerOrSignIn`); a first
|
|
2447
|
+
/// engram is unchanged.
|
|
2448
|
+
getWorldIdRpSignerAddress: () -> (Result_55);
|
|
2228
2449
|
/// The verified IDKitResult, verbatim, as World's /api/v4/verify accepted it — the re-checkable
|
|
2229
2450
|
/// artifact behind verifiedHuman. Role-gated because it carries the NULLIFIER.
|
|
2230
2451
|
/// `Result<opt Text>` — and the double wrapper is the entire point, not redundancy.
|
|
@@ -2243,7 +2464,7 @@ type Engram =
|
|
|
2243
2464
|
/// `///`, so the dead name was PUBLISHED in engram.did and pointed every client at a method the
|
|
2244
2465
|
/// canister does not serve. The tombstones below and at `about()` are historical and correct as
|
|
2245
2466
|
/// written; this one was present tense, which is the difference that matters.⟩
|
|
2246
|
-
getWorldIdVerification: () -> (
|
|
2467
|
+
getWorldIdVerification: () -> (Result_57) query;
|
|
2247
2468
|
/// ⟨0.16.0, L1⟩ THE EMERGENCY FAMILY. Every refusal below is `#Refused` or `#NotFound`, and the
|
|
2248
2469
|
/// absence of a `#Conflict` here is the point: these are the calls someone makes while something
|
|
2249
2470
|
/// is going wrong, and the only two answers that help are "you may not do this" and "there is
|
|
@@ -2318,7 +2539,10 @@ type Engram =
|
|
|
2318
2539
|
///
|
|
2319
2540
|
/// Owner-gated because it reports on custody posture, and answered as a Result so that a
|
|
2320
2541
|
/// wrong-identity caller gets a refusal rather than a bare `false` that reads as "no address yet".
|
|
2321
|
-
|
|
2542
|
+
/// ⟨2026-11-03, the pre-gate fixes — spec §7, "child: sign-in — reads yes"⟩ Also the seated sign-in of
|
|
2543
|
+
/// an engram opened through another, as the owner (`AccessControl.requireOwnerOrSignIn`); a first
|
|
2544
|
+
/// engram is unchanged.
|
|
2545
|
+
isEvmAddressCached: () -> (Result_56) query;
|
|
2322
2546
|
/// Issue an OAuth authorization code. Called by an OAuth client's sign-in bridge
|
|
2323
2547
|
/// (an `/auth/connector`-style route) after II authentication. The client then
|
|
2324
2548
|
/// redirects the user's browser to `redirectUri` with `?code=<this>` so the
|
|
@@ -2326,7 +2550,7 @@ type Engram =
|
|
|
2326
2550
|
///
|
|
2327
2551
|
/// Owner-only: only the engram owner can authorize a Connector install.
|
|
2328
2552
|
issueAuthCode: (redirectUri: text, scope: text, codeChallenge: text,
|
|
2329
|
-
clientId: opt text) -> (
|
|
2553
|
+
clientId: opt text) -> (Result_55);
|
|
2330
2554
|
/// ⟨0.16.0⟩ `getCycleSnapshotSource` DELETED — folded into `CycleSnapshot.source`, one label per
|
|
2331
2555
|
/// ROW. A single label for a whole ring misattributes every row recorded under the other source,
|
|
2332
2556
|
/// and the source flips by design (self-call first, balance on fallback). Its documentation of
|
|
@@ -2340,7 +2564,7 @@ type Engram =
|
|
|
2340
2564
|
/// Refusal reason preserved, and it is the sharpest of this family: a masked `[]` reads as a
|
|
2341
2565
|
/// DORMANT engram and corrupts retention math — a fabricated empty here does not just misinform a
|
|
2342
2566
|
/// reader, it feeds a wrong number into a decision about destroying data.
|
|
2343
|
-
listActivitySnapshots: (start: nat, limit: nat) -> (
|
|
2567
|
+
listActivitySnapshots: (start: nat, limit: nat) -> (Result_54) query;
|
|
2344
2568
|
/// ⟨2026-10-21, round 11 item l — the owner's answer "round 11: a, b, c, d, e, f, g, h, i, j, k, l,
|
|
2345
2569
|
/// m."⟩ OWNER-ONLY: what each agent has spent today, beside the daily limit in force for it, so the
|
|
2346
2570
|
/// agent rows can say "$0.50 of $5.00 today" where they said a count of payments. Read from the
|
|
@@ -2357,7 +2581,9 @@ type Engram =
|
|
|
2357
2581
|
/// because the payment path keeps no figure then (`SpendCeiling.AgentSpendRow` says why).
|
|
2358
2582
|
/// WHAT WOULD MAKE THIS WRONG: `x402SignFor` keeping the per-caller total by something other than
|
|
2359
2583
|
/// the calling key, or under another day boundary.
|
|
2360
|
-
|
|
2584
|
+
/// ⟨2026-11-03, the pre-gate fixes — spec §7, "child: sign-in — reads yes"⟩ Also the seated sign-in of
|
|
2585
|
+
/// an engram opened through another, as the owner (`#ownerOrSignIn`); a first engram is unchanged.
|
|
2586
|
+
listAgentSpendToday: (start: nat, limit: nat) -> (Result_53) query;
|
|
2361
2587
|
/// ⟨0.16.0⟩ THE PAGE EXEMPLAR. Trap → `#Refused`, bare array → `Result<Page<T>>` (L1 + L3).
|
|
2362
2588
|
///
|
|
2363
2589
|
/// The refusal prose that used to be `gatedTrap`'s `whyNotEmpty` argument is not lost — it is why
|
|
@@ -2372,7 +2598,9 @@ type Engram =
|
|
|
2372
2598
|
///
|
|
2373
2599
|
/// `withheld` is 0: this roster is owner-only in whole, so there is no partial-visibility case.
|
|
2374
2600
|
/// A method that filters rows by caller sets it — see L1's row-level honesty rule.
|
|
2375
|
-
|
|
2601
|
+
/// ⟨2026-11-03, the pre-gate fixes — spec §7, "child: sign-in — reads yes"⟩ Also the seated sign-in of
|
|
2602
|
+
/// an engram opened through another, as the owner (`#ownerOrSignIn`); a first engram is unchanged.
|
|
2603
|
+
listAgents: (start: nat, limit: nat) -> (Result_52) query;
|
|
2376
2604
|
/// The GUARDIAN-audience projection of the agent roster — three fields, not the full record.
|
|
2377
2605
|
///
|
|
2378
2606
|
/// Two audiences, two methods (L1/L8), rather than one method masking fields by caller: a
|
|
@@ -2384,7 +2612,7 @@ type Engram =
|
|
|
2384
2612
|
/// Refusal reason preserved: `[]` reads as "this engram has no agents", and this is the list a
|
|
2385
2613
|
/// guardian consults BEFORE REVOKING ONE. A fabricated empty here does not merely misinform —
|
|
2386
2614
|
/// it tells someone acting under emergency powers that there is nothing to act on.
|
|
2387
|
-
listAgentsForGuardian: (start: nat, limit: nat) -> (
|
|
2615
|
+
listAgentsForGuardian: (start: nat, limit: nat) -> (Result_51) query;
|
|
2388
2616
|
/// Owner-only: rows carry caller, amount, operation and free-text rationale. The SDK omits it.
|
|
2389
2617
|
///
|
|
2390
2618
|
/// The optional leading filter SURVIVES the L3 reshape — ratified (census tier-2 #8) rather than
|
|
@@ -2397,7 +2625,7 @@ type Engram =
|
|
|
2397
2625
|
///
|
|
2398
2626
|
/// Refusal reason preserved: `[]` reads as "nothing is awaiting the owner's decision".
|
|
2399
2627
|
listApprovalRequests: (statusFilter: opt ApprovalStatus, start: nat,
|
|
2400
|
-
limit: nat) -> (
|
|
2628
|
+
limit: nat) -> (Result_37) query;
|
|
2401
2629
|
/// ⟨0.16.0⟩ `total` IS THE HEAD COUNTER, and on this method that is the entire point.
|
|
2402
2630
|
///
|
|
2403
2631
|
/// The audit log is a bounded RING: it trims its tail, so "rows you can read" and "entries that
|
|
@@ -2431,7 +2659,7 @@ type Engram =
|
|
|
2431
2659
|
/// where this record switched to the hash-first rule. A sealed row costs one SHA-256 of its body
|
|
2432
2660
|
/// at read time; nothing new is stored. WHAT WOULD MAKE THIS WRONG: a sealed row carrying any part
|
|
2433
2661
|
/// of a body, or a stranger reaching `items` (test/record-view.test.mo pins both).
|
|
2434
|
-
listAuditEntries: (start: nat, limit: nat) -> (
|
|
2662
|
+
listAuditEntries: (start: nat, limit: nat) -> (Result_50) query;
|
|
2435
2663
|
/// ⟨0.16.0, L1 + L3 — census-ruled⟩ THE TWO-MECHANISM EXCEPTION DISSOLVES.
|
|
2436
2664
|
///
|
|
2437
2665
|
/// This method used to answer THREE ways to one question: a list, an `#Err` text, and a trap,
|
|
@@ -2455,7 +2683,7 @@ type Engram =
|
|
|
2455
2683
|
/// `dbTypeFilter` DIES on the wire (census). The capability does not: `EngramClient.listBackups`
|
|
2456
2684
|
/// keeps its optional filter and applies it to the page, so no caller loses the ability to ask
|
|
2457
2685
|
/// "backups of this database" — it stops being a thing the canister has to page around.
|
|
2458
|
-
listBackups: (start: nat, limit: nat) -> (
|
|
2686
|
+
listBackups: (start: nat, limit: nat) -> (Result_49) query;
|
|
2459
2687
|
/// List all bearer tokens — Active, Revoked, and Expired. Owner uses this in
|
|
2460
2688
|
/// the dashboard to show installed Connectors (claude.ai, Claude Desktop, etc.).
|
|
2461
2689
|
/// Refusal reason preserved from the trap: `[]` reads as "no connector is installed on this
|
|
@@ -2465,7 +2693,9 @@ type Engram =
|
|
|
2465
2693
|
/// `bearerTokenStore.list()` already resolves each token's status at read time (a token that
|
|
2466
2694
|
/// merely stopped being used is reported `#Expired`, not a stale `#Active`), so the page carries
|
|
2467
2695
|
/// the same honesty the store gained on 2026-08-17.
|
|
2468
|
-
|
|
2696
|
+
/// ⟨2026-11-03, the pre-gate fixes — spec §7, "child: sign-in — reads yes"⟩ Also the seated sign-in of
|
|
2697
|
+
/// an engram opened through another, as the owner (`#ownerOrSignIn`); a first engram is unchanged.
|
|
2698
|
+
listBearerTokens: (start: nat, limit: nat) -> (Result_48) query;
|
|
2469
2699
|
/// The condense checkpoints in the retained log at or above `startSeq`, oldest first.
|
|
2470
2700
|
///
|
|
2471
2701
|
/// ⟨0.16.0, NEW⟩ The other half of the split above. A checkpoint is the only surviving record of a
|
|
@@ -2475,18 +2705,18 @@ type Engram =
|
|
|
2475
2705
|
///
|
|
2476
2706
|
/// Owner-only like every other archive surface, and for the same structural reason: these rows
|
|
2477
2707
|
/// carry the chain positions and roots of entries whose paths were inside the hash preimage.
|
|
2478
|
-
listCondenseCheckpoints: (startSeq: nat, max: nat) -> (
|
|
2708
|
+
listCondenseCheckpoints: (startSeq: nat, max: nat) -> (Result_47) query;
|
|
2479
2709
|
/// ⟨0.16.0⟩ `metrics()` DELETED — absorbed by `about()`.
|
|
2480
2710
|
///
|
|
2481
2711
|
/// Two public projections of one canister (L2.2): `metrics()` and `status()` both answered "what
|
|
2482
2712
|
/// is this engram like" and disagreed on which counters they carried, so a consumer had to fetch
|
|
2483
2713
|
/// both and know which one owned each field. Every field here survives on `about()`, day-flooring
|
|
2484
2714
|
/// included.
|
|
2485
|
-
listCycleSnapshots: (start: nat, limit: nat) -> (
|
|
2715
|
+
listCycleSnapshots: (start: nat, limit: nat) -> (Result_46) query;
|
|
2486
2716
|
/// Same `withheld` treatment as listMemoryFiles — the tombstone listing filtered reserved paths
|
|
2487
2717
|
/// for non-owners just as silently, and a caller could not tell a filtered tombstone list from a
|
|
2488
2718
|
/// complete one. Counted before slicing, so policy-hidden rows never blur into paging.
|
|
2489
|
-
listDeletedMemoryFiles: (start: nat, limit: nat) -> (
|
|
2719
|
+
listDeletedMemoryFiles: (start: nat, limit: nat) -> (Result_45) query;
|
|
2490
2720
|
/// Stays on the engram under B1 (hybrid): withdrawal custody does not leave.
|
|
2491
2721
|
///
|
|
2492
2722
|
/// NAMED item, not a `(Text, Int)` tuple. The Int is an activation time, and a bare Int beside a
|
|
@@ -2501,7 +2731,7 @@ type Engram =
|
|
|
2501
2731
|
/// The item's field is `value`, not `address`: a list may hold a venue value that is no address.
|
|
2502
2732
|
/// Readable by the owner, an active agent or an active guardian, as the old list was.
|
|
2503
2733
|
listEip712Destinations: (typeId: blob, start: nat, limit: nat) ->
|
|
2504
|
-
(
|
|
2734
|
+
(Result_44) query;
|
|
2505
2735
|
/// The registered shapes — E3: encodeTypeString is the display artifact, verbatim.
|
|
2506
2736
|
/// Stays on the engram under B1 (hybrid): EIP-712 signing is custody, and custody does not leave.
|
|
2507
2737
|
///
|
|
@@ -2512,20 +2742,20 @@ type Engram =
|
|
|
2512
2742
|
/// ⟨2026-10-14, the owner's ruling 3A⟩ Each row carries its per-field rules (`fieldRules`), joined in
|
|
2513
2743
|
/// from `eip712FieldRules` — they are part of what the type authorises, so a reader of the list must
|
|
2514
2744
|
/// not have to make a second call to learn them. The row type is `Eip712TypeView`.
|
|
2515
|
-
listEip712Types: (start: nat, limit: nat) -> (
|
|
2745
|
+
listEip712Types: (start: nat, limit: nat) -> (Result_43) query;
|
|
2516
2746
|
/// ⟨2026-10-21, round 11 c⟩ Guardians' disputes, oldest first. Same visibility as
|
|
2517
2747
|
/// `listRepudiations` and `listRecordNotes`: the owner and ACTIVE guardians read the rows; an
|
|
2518
2748
|
/// agent gets an empty page whose `withheld` counts them (ruling 16 B holds — a dispute is the
|
|
2519
2749
|
/// guardian's entry, not the agent's); a stranger, a pending guardian and the anonymous caller are
|
|
2520
2750
|
/// refused.
|
|
2521
|
-
listGuardianDisputes: (start: nat, limit: nat) -> (
|
|
2751
|
+
listGuardianDisputes: (start: nat, limit: nat) -> (Result_42) query;
|
|
2522
2752
|
/// Accessible by owner and guardians.
|
|
2523
2753
|
///
|
|
2524
2754
|
/// Refusal reason carried over from the trap, because it is the sharpest example of why this
|
|
2525
2755
|
/// surface may not fail soft: `[]` reads as "this engram has nobody who can freeze payments or
|
|
2526
2756
|
/// pause writes" — a claim about who can STOP it. A caller who cannot tell that from "you may not
|
|
2527
2757
|
/// see the roster" has been told the engram is unguarded when it may be fully guarded.
|
|
2528
|
-
listGuardians: (start: nat, limit: nat) -> (
|
|
2758
|
+
listGuardians: (start: nat, limit: nat) -> (Result_41) query;
|
|
2529
2759
|
/// The export receipts in the retained log at or above `startSeq`, oldest first.
|
|
2530
2760
|
///
|
|
2531
2761
|
/// ⟨0.16.0, L3⟩ ONE LIST, ONE QUESTION. This method used to return receipts AND checkpoints
|
|
@@ -2541,7 +2771,7 @@ type Engram =
|
|
|
2541
2771
|
///
|
|
2542
2772
|
/// Read `MemoryRouter.ReceiptPage` before reading `page.total` as a receipt count. It is not one;
|
|
2543
2773
|
/// it is the chain's length, and the declaration says why.
|
|
2544
|
-
listMemoryExportReceipts: (startSeq: nat, max: nat) -> (
|
|
2774
|
+
listMemoryExportReceipts: (startSeq: nat, max: nat) -> (Result_40) query;
|
|
2545
2775
|
/// ⟨0.16.0⟩ THE `withheld` EXEMPLAR — L1 names this exact method as the defect it fixes.
|
|
2546
2776
|
///
|
|
2547
2777
|
/// A non-owner's answer silently dropped every `config/` and `secrets/` row. Not "refused the
|
|
@@ -2566,7 +2796,7 @@ type Engram =
|
|
|
2566
2796
|
/// the rows of THIS page (`MemoryRouter.info`), after the slice, so the cost is one lookup per
|
|
2567
2797
|
/// row served, never one per file stored. A WIDENED REPLY: a reader that decodes the row by
|
|
2568
2798
|
/// position rather than by field name breaks — none in this repository does.
|
|
2569
|
-
listMemoryFiles: (start: nat, limit: nat) -> (
|
|
2799
|
+
listMemoryFiles: (start: nat, limit: nat) -> (Result_39) query;
|
|
2570
2800
|
/// One page of the memory log, seq-ordered, optionally narrowed to one author.
|
|
2571
2801
|
///
|
|
2572
2802
|
/// THE WINDOW IS THE CURSOR, and the page now states it. The window is
|
|
@@ -2592,7 +2822,7 @@ type Engram =
|
|
|
2592
2822
|
/// with the disclosures that make the page verifiable — the hidden-bound defect the census itself
|
|
2593
2823
|
/// names on previewCondense's row.
|
|
2594
2824
|
listMemoryLog: (startSeq: nat, max: nat, authorFilter: opt principal) ->
|
|
2595
|
-
(
|
|
2825
|
+
(Result_38) query;
|
|
2596
2826
|
/// The caller's OWN spend-approval requests. ⟨0.16.0, L1 + L3 — fixed 2026-08-18⟩
|
|
2597
2827
|
///
|
|
2598
2828
|
/// Two defects in seven lines, and the first is the one this release exists to remove:
|
|
@@ -2609,7 +2839,7 @@ type Engram =
|
|
|
2609
2839
|
/// to see, so `total` over their own rows is the honest count and nothing is hidden FROM them.
|
|
2610
2840
|
/// (The unbounded MAP is filed separately — pruning an approval record destroys evidence of what
|
|
2611
2841
|
/// was asked, which is a retention ruling rather than a shape fix.)
|
|
2612
|
-
listMyApprovalRequests: (start: nat, limit: nat) -> (
|
|
2842
|
+
listMyApprovalRequests: (start: nat, limit: nat) -> (Result_37) query;
|
|
2613
2843
|
/// The payer's own sessions, live ones first. PAYER-SCOPED: a caller sees only their own, which
|
|
2614
2844
|
/// is why this needs no role — a session id is not a secret from the person who paid for it.
|
|
2615
2845
|
///
|
|
@@ -2618,7 +2848,7 @@ type Engram =
|
|
|
2618
2848
|
/// It took no arguments, and a cursor added after the freeze is an argument-list change every
|
|
2619
2849
|
/// client would break on — the market paged its own pending withdrawals before its cut for the
|
|
2620
2850
|
/// same reason. The order is the order sessions were opened.
|
|
2621
|
-
listMySessions: (start: nat, limit: nat) -> (
|
|
2851
|
+
listMySessions: (start: nat, limit: nat) -> (Result_36) query;
|
|
2622
2852
|
///
|
|
2623
2853
|
/// ⟨0.16.0, L3⟩ Paged and enveloped like every other `list*`, and the envelope here is uniformity
|
|
2624
2854
|
/// rather than gating: this method cannot refuse anybody, so `#Err` is unreachable on it. That is
|
|
@@ -2631,7 +2861,7 @@ type Engram =
|
|
|
2631
2861
|
/// asked by strangers. `verifyEngramActiveOwner` on the registry answers only about the owner
|
|
2632
2862
|
/// IT recorded, so this chain is what a caller composes with when currency matters — which it
|
|
2633
2863
|
/// cannot do if it needs a role here.
|
|
2634
|
-
listOwnershipTransfers: (start: nat, limit: nat) -> (
|
|
2864
|
+
listOwnershipTransfers: (start: nat, limit: nat) -> (Result_35) query;
|
|
2635
2865
|
/// ⟨2026-09-29, the platform's question from the build review⟩ OWNER-ONLY: how many payment
|
|
2636
2866
|
/// signatures each agent has obtained today, and the daily limit (200, `PaymentSignCap`). The
|
|
2637
2867
|
/// owner's console stated the rule and showed no number, because nothing served one; a number it
|
|
@@ -2647,7 +2877,9 @@ type Engram =
|
|
|
2647
2877
|
/// marketplace's one shared count today is in the reply's `marketplace` field, with the limit this
|
|
2648
2878
|
/// engram enforces for it — beside the agents, never a row among them
|
|
2649
2879
|
/// (`PaymentSignCap.marketplaceRow`). Null when no marketplace is set.
|
|
2650
|
-
|
|
2880
|
+
/// ⟨2026-11-03, the pre-gate fixes — spec §7, "child: sign-in — reads yes"⟩ Also the seated sign-in of
|
|
2881
|
+
/// an engram opened through another, as the owner (`#ownerOrSignIn`); a first engram is unchanged.
|
|
2882
|
+
listPaymentSignatureCounts: (start: nat, limit: nat) -> (Result_34) query;
|
|
2651
2883
|
/// Agent records removed by a reset. Each row is a NAMED record with the fields `principal`,
|
|
2652
2884
|
/// `name`, `registeredAt` and `purgedAt` — read them BY NAME, never by position.
|
|
2653
2885
|
/// ⟨2026-09-29, the vocabulary ruling: pairing is the one verb that admits an agent⟩ The field
|
|
@@ -2687,7 +2919,9 @@ type Engram =
|
|
|
2687
2919
|
/// `invite` its enrolment named, and `ended` — why and on what day its engagement ended (its own
|
|
2688
2920
|
/// earlier ending, or the reset) — the facts `resyncAgentEdges` re-sends. The stored rows are
|
|
2689
2921
|
/// served as they are.
|
|
2690
|
-
|
|
2922
|
+
/// ⟨2026-11-03, the pre-gate fixes — spec §7, "child: sign-in — reads yes"⟩ Also the seated sign-in of
|
|
2923
|
+
/// an engram opened through another, as the owner (`#ownerOrSignIn`); a first engram is unchanged.
|
|
2924
|
+
listPurgedAgents: (start: nat, limit: nat) -> (Result_33) query;
|
|
2691
2925
|
/// ⟨0.16.0⟩ ONE ACCESSOR, folding `readReadLog` and `getDenialLog` — and the fold only became
|
|
2692
2926
|
/// safe because of a change made earlier in this same leg.
|
|
2693
2927
|
///
|
|
@@ -2749,13 +2983,13 @@ type Engram =
|
|
|
2749
2983
|
/// on the chained record — the same `RecordView` filter, and `withheld` counts what it removed
|
|
2750
2984
|
/// together with what `successFilter` removed. WHAT WOULD MAKE THIS WRONG: see `listAuditEntries`.
|
|
2751
2985
|
listReadLog: (successFilter: opt bool, start: nat, limit: nat) ->
|
|
2752
|
-
(
|
|
2986
|
+
(Result_32) query;
|
|
2753
2987
|
/// ⟨2026-10-21, round 11 b⟩ The owner's notes, oldest first. Same visibility as
|
|
2754
2988
|
/// `listRepudiations`, for the same reason: the owner and ACTIVE guardians read the rows; an agent
|
|
2755
2989
|
/// reads only the entries it caused (follow-up 16 B), and every note is the owner's, so an agent
|
|
2756
2990
|
/// gets an empty page whose `withheld` counts the notes in its window — never "there are none". A
|
|
2757
2991
|
/// stranger, a pending guardian and the anonymous caller are refused.
|
|
2758
|
-
listRecordNotes: (start: nat, limit: nat) -> (
|
|
2992
|
+
listRecordNotes: (start: nat, limit: nat) -> (Result_31) query;
|
|
2759
2993
|
/// Same visibility as listAuditEntries: the owner, this engram's agents, and ACTIVE guardians
|
|
2760
2994
|
/// see disputes. An unauthorized read REFUSES — it does not return an empty list, because an
|
|
2761
2995
|
/// empty list reads as "no disputes have been filed", which is a claim, not an absence of one.
|
|
@@ -2770,7 +3004,14 @@ type Engram =
|
|
|
2770
3004
|
/// window — which says disputes exist without showing them, never "none have been filed". WHAT
|
|
2771
3005
|
/// WOULD MAKE THIS WRONG: a ruling that an agent may see the disputes of its own writes; this would
|
|
2772
3006
|
/// then have to look up each disputed version's writer, which it does not do today.
|
|
2773
|
-
listRepudiations: (start: nat, limit: nat) -> (
|
|
3007
|
+
listRepudiations: (start: nat, limit: nat) -> (Result_30) query;
|
|
3008
|
+
/// The seller list, a page at a time, as `Types.SellerView` (a raise whose wait is over shown applied;
|
|
3009
|
+
/// `liveNow` — false for every row while an engram opened through another has no sign-in seated; what
|
|
3010
|
+
/// x402 reserved for each today). For the key file and the sign-in in an engram opened
|
|
3011
|
+
/// through another, the owner in a first engram; refused loudly to anyone else — never an empty page,
|
|
3012
|
+
/// which would read as "no sellers". A QUERY: the refusal is in the reply, not the denial log.
|
|
3013
|
+
/// Named callers: an owner console's seller list.
|
|
3014
|
+
listSellers: (start: nat, limit: nat) -> (Result_29) query;
|
|
2774
3015
|
/// ⟨2026-10-21, the owner's round-11 answer f⟩ OWNER-ONLY: the sign-ins, each with the name its app
|
|
2775
3016
|
/// registered. The same tokens, in the same order and paged the same way, as `listBearerTokens`,
|
|
2776
3017
|
/// each beside `clientName` — the RFC 7591 `client_name` the app registered when the token was
|
|
@@ -2779,7 +3020,9 @@ type Engram =
|
|
|
2779
3020
|
/// apps apart. A NEW method rather than a field on `BearerToken`: that record is stored (M0170)
|
|
2780
3021
|
/// and `listBearerTokens`' reply is shipped (never widened). An agent, a guardian, a stranger and
|
|
2781
3022
|
/// the anonymous caller are refused, by `listBearerTokens`' own gate and for its reason.
|
|
2782
|
-
|
|
3023
|
+
/// ⟨2026-11-03, the pre-gate fixes — spec §7, "child: sign-in — reads yes"⟩ Also the seated sign-in of
|
|
3024
|
+
/// an engram opened through another, as the owner (`#ownerOrSignIn`); a first engram is unchanged.
|
|
3025
|
+
listSignIns: (start: nat, limit: nat) -> (Result_28) query;
|
|
2783
3026
|
/// Owner: advance the review cursor — "I have seen everything up to and including uptoAuditId"
|
|
2784
3027
|
/// (null = everything at the current head). Bounded so the attestation can never cover entries
|
|
2785
3028
|
/// the console did not render; clamped monotonic (the cursor never moves backward) and to the
|
|
@@ -2789,7 +3032,7 @@ type Engram =
|
|
|
2789
3032
|
/// (every family qualifiesForReview admits is written to auditLogger, so they share that space),
|
|
2790
3033
|
/// and this never inspects an operation or a role. Widening what the review shows therefore
|
|
2791
3034
|
/// changes only which ids the console can pass here — it cannot desynchronise the cursor.
|
|
2792
|
-
markAgentWritesReviewed: (uptoAuditId: opt nat) -> (
|
|
3035
|
+
markAgentWritesReviewed: (uptoAuditId: opt nat) -> (Result_15);
|
|
2793
3036
|
/// ⟨2026-10-21, the owner's round-11 answer g⟩ AN AGENT READS ITS OWN GRANT — to the calling key
|
|
2794
3037
|
/// only (`People.AgentGrant`): what it may read, where it may write, its rate, and the payment
|
|
2795
3038
|
/// limits enforced against that key. It reveals nothing a refusal does not already say, and lets
|
|
@@ -2807,7 +3050,7 @@ type Engram =
|
|
|
2807
3050
|
/// the caps alone no longer read as money an agent can spend. `People.SpendState` names each one.
|
|
2808
3051
|
/// ⟨2026-10-29, review F2⟩ And which whole-key refusal stops every payment now, if one does
|
|
2809
3052
|
/// (`paymentsStoppedBy`: the brake, the signing floor, the daily count of payment signatures).
|
|
2810
|
-
myGrant: () -> (
|
|
3053
|
+
myGrant: () -> (Result_27) query;
|
|
2811
3054
|
/// The AGENT's current key nominates the key that will replace it. Nothing moves yet: the new
|
|
2812
3055
|
/// key must accept, by its own call, within 24 hours (`acceptAgentKeyNomination`). One pending
|
|
2813
3056
|
/// nomination per agent — a new one replaces the earlier one, and the record says which. Refused,
|
|
@@ -2815,7 +3058,7 @@ type Engram =
|
|
|
2815
3058
|
/// not hold the record (`KeyReplacement.nomineeRefusal`).
|
|
2816
3059
|
nominateAgentKey: (newKey: principal) -> (Result_2);
|
|
2817
3060
|
/// An AGENT paired here asks this engram to open an engram of its own. This engram attaches 1.3 T of
|
|
2818
|
-
/// its own cycles to the registry's `
|
|
3061
|
+
/// its own cycles to the registry's `sysOpenChild`; the agent's lasting key owns what is opened, and
|
|
2819
3062
|
/// the engram is recorded as opened through this one. Answers the new engram's canister id.
|
|
2820
3063
|
///
|
|
2821
3064
|
/// APPROVING IS GIVING: the owner allowed this with `setChildAllowance`, and what is attached is the
|
|
@@ -2842,15 +3085,36 @@ type Engram =
|
|
|
2842
3085
|
///
|
|
2843
3086
|
/// WHAT WOULD MAKE THIS WRONG: an await added between `ChildAllowance.take` and the registry call; the
|
|
2844
3087
|
/// registry's `CHILD_MIN_ATTACHED_CYCLES` moving without `CHILD_ATTACH_CYCLES`.
|
|
2845
|
-
|
|
2846
|
-
|
|
3088
|
+
///
|
|
3089
|
+
/// ⟨2026-11-02, the owner's ruling "1-4 all as you recommended" (the child build's stage 2)⟩ THE
|
|
3090
|
+
/// SIGN-IN. `signIn` names the opened engram's sign-in — the person running the agent, on a second
|
|
3091
|
+
/// credential; null opens it with none, and it then keeps small limits for life. It goes to the
|
|
3092
|
+
/// registry's door and from there into the opened engram's init record, so that engram never runs a
|
|
3093
|
+
/// message without it. Refused here first, with no await and before the allowance is taken, by the
|
|
3094
|
+
/// door's own three rules (`OwnerSignIn.candidateRefusal`): the agent's lasting key itself, the
|
|
3095
|
+
/// anonymous principal, a canister — so the agent sees the refusal before any cycles move. The
|
|
3096
|
+
/// record entry says `signIn=set` or `signIn=none`, never the principal.
|
|
3097
|
+
/// ⟨2026-11-02, the stage-2 review M3, beside the above⟩ And a fourth, the door's own: the key this
|
|
3098
|
+
/// call is signed by — the agent's session key — is refused as the sign-in too
|
|
3099
|
+
/// (`OwnerSignIn.agentKeyRefusal`), at the same place.
|
|
3100
|
+
///
|
|
3101
|
+
/// ⟨2026-11-02, the child build's stage 2 — RENAMED from `openChildEngram`, beside the paragraphs
|
|
3102
|
+
/// above, which describe the same door⟩ It was `openChildEngram()`, with no argument. A second
|
|
3103
|
+
/// positional argument would grow its argument tuple, and a shipped tuple is frozen (evolution
|
|
3104
|
+
/// happens inside records), so the door takes ONE record whose later fields are optional, under a
|
|
3105
|
+
/// new name — the shape the registry's own door took the same day (`sysSpawnChild` →
|
|
3106
|
+
/// `sysOpenChild`). An rc.21 kit calling the old name is rejected
|
|
3107
|
+
/// (IC0536) with nothing spent; it can never open an engram without a sign-in by accident.
|
|
3108
|
+
/// Named caller: the owner kit's `open-engram` command, signed by the agent's session key.
|
|
3109
|
+
openChild: (req: record {signIn: opt principal;}) -> (Result_26);
|
|
3110
|
+
openSession: (config: SessionConfig, sig: PaymentSignature) -> (Result_25);
|
|
2847
3111
|
/// Withdraw tokens to the owner's principal. This is the ONLY way to
|
|
2848
3112
|
/// move tokens out of the engram to an external address, and the
|
|
2849
3113
|
/// destination is always hardcoded to the owner.
|
|
2850
3114
|
/// NOT freeze-gated: the owner always controls their own funds.
|
|
2851
3115
|
/// Guardian freeze only blocks agent/public operations.
|
|
2852
3116
|
ownerWithdraw: (amount: TokenAmount, ownerAuth: opt ActionAuth) ->
|
|
2853
|
-
(
|
|
3117
|
+
(Result_15);
|
|
2854
3118
|
/// ⟨0.16.0⟩ `payRentFromEarnings` DELETED — ruled TWICE (B1 and B2), and it was the single
|
|
2855
3119
|
/// clearest violation of the OSS/platform split in this repo.
|
|
2856
3120
|
///
|
|
@@ -2908,7 +3172,7 @@ type Engram =
|
|
|
2908
3172
|
pairAgent: (arg: record {
|
|
2909
3173
|
code: text;
|
|
2910
3174
|
enrolment: Enrolment;
|
|
2911
|
-
}) -> (
|
|
3175
|
+
}) -> (Result_24);
|
|
2912
3176
|
/// ⟨0.16.0, L2.2 — renamed from `guardianPauseWrites`⟩ Same correction as freezePayments above:
|
|
2913
3177
|
/// owner-or-guardian, and `resumeWrites` never carried the prefix either.
|
|
2914
3178
|
pauseWrites: () -> (Result_2);
|
|
@@ -2933,7 +3197,7 @@ type Engram =
|
|
|
2933
3197
|
///
|
|
2934
3198
|
/// `unlocked` is the export-receipt gate ONLY. It is not a promise the condense will land: the
|
|
2935
3199
|
/// history-budget delta is checked at commit time and can still refuse a short prefix.
|
|
2936
|
-
previewCondense: (toSeq: nat) -> (
|
|
3200
|
+
previewCondense: (toSeq: nat) -> (Result_23) query;
|
|
2937
3201
|
/// A quote for a session this caller has not opened and is not committed to — the intent a
|
|
2938
3202
|
/// buyer signs against. Pure dry run, no state, no funds.
|
|
2939
3203
|
///
|
|
@@ -2978,10 +3242,12 @@ type Engram =
|
|
|
2978
3242
|
/// takes effect change it.
|
|
2979
3243
|
/// HONEST WHEN CUT SHORT: `complete = false` when the planning budget
|
|
2980
3244
|
/// (`MemoryRouter.PREVIEW_MAX_DROPS`) ran out — the totals are then a floor, and say so.
|
|
3245
|
+
/// ⟨2026-11-03, the pre-gate fixes — spec §7, "child: sign-in — reads yes"⟩ Also the seated sign-in of
|
|
3246
|
+
/// an engram opened through another, as the owner (`#ownerOrSignIn`); a first engram is unchanged.
|
|
2981
3247
|
previewRetention: (entries: vec record {
|
|
2982
3248
|
text;
|
|
2983
3249
|
RetentionClassSpec;
|
|
2984
|
-
}) -> (
|
|
3250
|
+
}) -> (Result_22) query;
|
|
2985
3251
|
/// Read one memory file at its current version.
|
|
2986
3252
|
///
|
|
2987
3253
|
/// Gated on the `read_memory` permission, so an agent holding that grant reaches it — unlike
|
|
@@ -2996,7 +3262,7 @@ type Engram =
|
|
|
2996
3262
|
/// counter here could never persist; read counting lives on the update path
|
|
2997
3263
|
/// (`sessionReadContext` and the MCP reads). A caller measuring engram usage from this method
|
|
2998
3264
|
/// will measure nothing.
|
|
2999
|
-
readMemory: (path: text) -> (
|
|
3265
|
+
readMemory: (path: text) -> (Result_13) query;
|
|
3000
3266
|
/// Read many paths in one call. Per-path Results are KEPT — partial success is the point, and
|
|
3001
3267
|
/// one unreadable path must not fail the other nine.
|
|
3002
3268
|
///
|
|
@@ -3012,7 +3278,7 @@ type Engram =
|
|
|
3012
3278
|
/// Both are now what they are: a single `#Err` for the whole call. `#Ok` still carries a row per
|
|
3013
3279
|
/// path, each with its own Result — a refused RESERVED path sits beside a readable one, which is
|
|
3014
3280
|
/// a genuine per-path fact.
|
|
3015
|
-
readMemoryBatch: (paths: vec text) -> (
|
|
3281
|
+
readMemoryBatch: (paths: vec text) -> (Result_21) query;
|
|
3016
3282
|
/// ⟨0.16.0⟩ `getMemoryRetentionGuards` DELETED — folded into `getMemoryRetentionPolicy` above.
|
|
3017
3283
|
/// It was the second L2.1 array-returning `get*`, and separating it from the policy it modifies
|
|
3018
3284
|
/// was the defect described there. Its own docs are preserved at the fold site.
|
|
@@ -3023,7 +3289,7 @@ type Engram =
|
|
|
3023
3289
|
/// see it cannot know whether it has the whole range, which is how silent truncation gets
|
|
3024
3290
|
/// reintroduced. Loop while `more` is true, advancing by the bytes actually returned.
|
|
3025
3291
|
readMemoryBytes: (path: text, offset: nat, len: nat, version: opt nat) ->
|
|
3026
|
-
(
|
|
3292
|
+
(Result_20) query;
|
|
3027
3293
|
/// The escrow exit for a session whose settle cannot pay.
|
|
3028
3294
|
///
|
|
3029
3295
|
/// PAYER-ONLY, enforced inside the gateway, and deliberately not owner-triggered: the payer's own
|
|
@@ -3086,7 +3352,7 @@ type Engram =
|
|
|
3086
3352
|
/// was the block index alone, which read as the amount. If the session's record is removed before
|
|
3087
3353
|
/// the amount can be read back — a session closed in the same moment as the recovery and cleaned up
|
|
3088
3354
|
/// during its transfer — it answers `#Other` naming the block, never a guessed amount.
|
|
3089
|
-
recoverEscrow: (sessionId: text, amountE6: nat) -> (
|
|
3355
|
+
recoverEscrow: (sessionId: text, amountE6: nat) -> (Result_19);
|
|
3090
3356
|
/// ⟨0.16.0, L1⟩ A REDEMPTION PATH, where the arm choice is a disclosure decision.
|
|
3091
3357
|
///
|
|
3092
3358
|
/// Four of these refusals are about the CODE and one is about the caller. The code arms restate
|
|
@@ -3100,7 +3366,7 @@ type Engram =
|
|
|
3100
3366
|
/// rather than `()`. The new guardian learns, in the same reply, the name and permissions the
|
|
3101
3367
|
/// owner's invite gave them and that they cannot act until approved; before, that took a second
|
|
3102
3368
|
/// read they had no reason to know to make.
|
|
3103
|
-
registerGuardian: (code: text) -> (
|
|
3369
|
+
registerGuardian: (code: text) -> (Result_18);
|
|
3104
3370
|
/// Remove a per-caller override so that caller reverts to — and keeps TRACKING — the global caps.
|
|
3105
3371
|
///
|
|
3106
3372
|
/// It travels with its pair and is never dropped alone: without it the only way "back" from an
|
|
@@ -3131,6 +3397,13 @@ type Engram =
|
|
|
3131
3397
|
/// `#NotFound` rather than `#Refused` when there is no such guardian: only the owner reaches this
|
|
3132
3398
|
/// line, so the roster is theirs and its contents are not a secret being withheld from them.
|
|
3133
3399
|
removeGuardian: (guardianPrincipal: principal) -> (Result_2);
|
|
3400
|
+
/// Remove a listed seller, at once: from now a payment to it meets the engram-wide ceiling and the
|
|
3401
|
+
/// paying agent's own limits again, and adding it back waits 24 hours. Removing TIGHTENS, so the key
|
|
3402
|
+
/// file may do it as well as the sign-in, and it works while payments are frozen. Its "paid before"
|
|
3403
|
+
/// history is kept (that is about the address, not the row). Unknown address `#NotFound`.
|
|
3404
|
+
/// Named callers: an owner console's seller list, and the owner kit (the key file's way to stop a
|
|
3405
|
+
/// seller).
|
|
3406
|
+
removeSeller: (payTo: text) -> (Result_2);
|
|
3134
3407
|
/// ⟨2026-10-21, the owner's round-11 answer a⟩ OWNER-ONLY: give an agent a new name. A name was
|
|
3135
3408
|
/// fixed at the invite, and two agents both called "agent" is how the 2026-10-20 session started.
|
|
3136
3409
|
/// Only the VALUE of the stored `AgentRecord.name` changes — no new state, no reshaped record —
|
|
@@ -3146,7 +3419,7 @@ type Engram =
|
|
|
3146
3419
|
/// the original audit entry stay exactly where they were; this appends a chained
|
|
3147
3420
|
/// `memory.repudiate` entry and lists the (path, version) so readers can see the dispute.
|
|
3148
3421
|
repudiateMemoryWrite: (path: text, version: nat, reason: text) ->
|
|
3149
|
-
(
|
|
3422
|
+
(Result_15);
|
|
3150
3423
|
/// ⚠ OWNER-ONLY BULK RESET. Destructive, and wider than its name suggests.
|
|
3151
3424
|
///
|
|
3152
3425
|
/// It severs EVERY grant surface that can outlive a role — agents, guardians, invites and
|
|
@@ -3165,6 +3438,10 @@ type Engram =
|
|
|
3165
3438
|
/// · ⟨2026-10-02⟩ the seat weeks of every engagement (`agentSeatWeeks`), with the signature count
|
|
3166
3439
|
/// they sit beside, and the owner's switch over the metrics reader's read and the reader it
|
|
3167
3440
|
/// names — a reset severs access, it does not change who may read what was kept.
|
|
3441
|
+
/// · ⟨2026-11-02, the child build — decided "unless you object", recorded at stage 5⟩ the seller
|
|
3442
|
+
/// list and the paid history (`listSellers`, `getRecipientHistory`), as the typed-data
|
|
3443
|
+
/// destinations are kept: a reset severs access, it does not forget which counterparties the
|
|
3444
|
+
/// owner approved or which addresses this engram has paid.
|
|
3168
3445
|
///
|
|
3169
3446
|
/// ⟨2026-10-02⟩ It tells the spawning registry that it happened (`sysNoteReset`), on every reset.
|
|
3170
3447
|
///
|
|
@@ -3174,7 +3451,7 @@ type Engram =
|
|
|
3174
3451
|
/// NOT unbounded. It caps at MAX_ENTRIES and trims its oldest tenth on overflow, so on any engram
|
|
3175
3452
|
/// long-lived enough for the rent model to apply, the reset entry is not guaranteed to still be
|
|
3176
3453
|
/// there. `agentPurgeLog` is the evidence that does not age out — which is why it exists.
|
|
3177
|
-
resetEngram: () -> (
|
|
3454
|
+
resetEngram: () -> (Result_17);
|
|
3178
3455
|
/// ⟨2026-09-28, owner decision: an agent can resign from an engram, and the resignation is
|
|
3179
3456
|
/// recorded⟩ The AGENT ends its own engagement with this engram.
|
|
3180
3457
|
///
|
|
@@ -3220,7 +3497,7 @@ type Engram =
|
|
|
3220
3497
|
/// all that is left to send is the ending, and the registry has nothing to end. The report lists
|
|
3221
3498
|
/// each such engagement under `cannotBeRecorded` (key, root, invite, and how and when it ended),
|
|
3222
3499
|
/// apart from `notRecorded`, so the owner sees them rather than silence.
|
|
3223
|
-
resyncAgentEdges: () -> (
|
|
3500
|
+
resyncAgentEdges: () -> (Result_16);
|
|
3224
3501
|
/// Return to managed custody: the engram adds the registry back as a controller ALONGSIDE the
|
|
3225
3502
|
/// owner — it does not remove the owner. The inverse of `claimSovereignty`, and the reason
|
|
3226
3503
|
/// sovereignty is not a one-way door.
|
|
@@ -3274,7 +3551,7 @@ type Engram =
|
|
|
3274
3551
|
/// written, and only then does it await one notification per revoked agent. So a notification
|
|
3275
3552
|
/// that fails leaves the agents revoked here regardless — a partial notify is not a partial
|
|
3276
3553
|
/// revocation, which is the direction that matters for a panic button.
|
|
3277
|
-
revokeAllAgents: () -> (
|
|
3554
|
+
revokeAllAgents: () -> (Result_15);
|
|
3278
3555
|
/// Owner-only panic button: revoke every connector bearer token at once. Returns how many.
|
|
3279
3556
|
///
|
|
3280
3557
|
/// The THIRD independent surface — hosted connectors authenticate with bearer tokens, not with
|
|
@@ -3283,7 +3560,7 @@ type Engram =
|
|
|
3283
3560
|
/// holding a live session.
|
|
3284
3561
|
///
|
|
3285
3562
|
/// Tokens are re-issuable: revoking them is not permanent the way revoking an agent is.
|
|
3286
|
-
revokeAllBearerTokens: () -> (
|
|
3563
|
+
revokeAllBearerTokens: () -> (Result_15);
|
|
3287
3564
|
/// ⟨0.16.0⟩ `removeAllGuardians` DELETED — test-only (L6), and verified NOT part of KILL-SWITCH's
|
|
3288
3565
|
/// mass-revoke set. The destructive phase-07 suite iterates `removeGuardian` instead, so nothing
|
|
3289
3566
|
/// loses a capability: what dies is a bulk spelling no runbook ever invoked.
|
|
@@ -3295,7 +3572,7 @@ type Engram =
|
|
|
3295
3572
|
///
|
|
3296
3573
|
/// Unlike revoking an agent, this costs nothing permanently — an invite is a one-time code,
|
|
3297
3574
|
/// so voiding it and minting a fresh one is the ordinary path.
|
|
3298
|
-
revokeAllInvites: () -> (
|
|
3575
|
+
revokeAllInvites: () -> (Result_15);
|
|
3299
3576
|
/// Revoke a bearer token by its public tokenId. Idempotent.
|
|
3300
3577
|
/// Subsequent /mcp requests using this token will be rejected.
|
|
3301
3578
|
revokeBearerToken: (tokenId: text) -> (Result_2);
|
|
@@ -3322,6 +3599,32 @@ type Engram =
|
|
|
3322
3599
|
/// agent on that record, so its standing is not the problem — the record's state is. An
|
|
3323
3600
|
/// agent reading `#Refused` would go looking for a permission that was never missing.
|
|
3324
3601
|
rotateAgentKeyHash: (newPublicKeyHash: text) -> (Result_2);
|
|
3602
|
+
/// Send money from this engram's wallet to the engram it was opened through — "up", and only up:
|
|
3603
|
+
/// the destination is always the parent engram's own default account, never an address the caller
|
|
3604
|
+
/// names. ANY amount (the owner's ruling "B"); the answer is the ledger's block index.
|
|
3605
|
+
///
|
|
3606
|
+
/// WHO: the owner's key file or the sign-in, in an engram opened through another (the build's
|
|
3607
|
+
/// resolution L14: both may send — the key file's honest sweep needs it, and the sign-in may sweep
|
|
3608
|
+
/// too); refused to anyone else. In a first engram there is nothing above it, and it refuses with
|
|
3609
|
+
/// `#Conflict`. NOT freeze-gated: up is not out, so a payments freeze does not stop it.
|
|
3610
|
+
///
|
|
3611
|
+
/// ORDER: the caller, then the parent from this engram's own birth record (`openedFrom`, no await),
|
|
3612
|
+
/// then ONE call to the registry — refused unless the registry shows the parent registered, active
|
|
3613
|
+
/// and not abandoned (`#Refused`; the registry unreachable is `#Unavailable`; nothing sent either
|
|
3614
|
+
/// way) — then ONE ledger transfer, the same per-token ledger as `ownerWithdraw`. Both calls are
|
|
3615
|
+
/// counted (ADR-0025), so near its freezing line this engram may be unable to send the registry
|
|
3616
|
+
/// call at all; it then answers `#Unavailable` and nothing moves.
|
|
3617
|
+
///
|
|
3618
|
+
/// NO RE-CHECK between the two calls, deliberately: the parent can be abandoned in between, and the
|
|
3619
|
+
/// money then sits in an existing canister whose owner can still withdraw it. Guarding that window
|
|
3620
|
+
/// would need a third call and buys nothing the owner of the parent does not already have.
|
|
3621
|
+
///
|
|
3622
|
+
/// NOT INCOME. The parent's track record is engagements, standing, seat-weeks and counts of use, and
|
|
3623
|
+
/// signature counts count signatures; nothing reads a ledger balance, and this method calls none of
|
|
3624
|
+
/// those writers (test/child-sign-in-wiring.test.ts rule 13). Written to the record as
|
|
3625
|
+
/// `wallet.sendToParent` (money class), with the amount, the token, the parent and the block.
|
|
3626
|
+
/// Named callers: the owner kit, signed by the key file; an owner console, signed in as the sign-in.
|
|
3627
|
+
sendToParent: (amount: TokenAmount) -> (Result_15);
|
|
3325
3628
|
/// Append to a memory file against a PAID x402 session voucher — the write half of the paid rail,
|
|
3326
3629
|
/// authorized by the voucher rather than by a role.
|
|
3327
3630
|
/// ⟨2026-09-30, ic402 2.17.0⟩ Authorized by the payer's own call with the voucher: only the
|
|
@@ -3365,7 +3668,7 @@ type Engram =
|
|
|
3365
3668
|
/// ⚠ RAW STORED BYTES, like `readMemoryBatch`. On a Private (encrypted) engram the content is
|
|
3366
3669
|
/// CIPHERTEXT; the key-holding SDK decrypts it. A caller without the key gets bytes it cannot
|
|
3367
3670
|
/// read, not an error.
|
|
3368
|
-
sessionReadContext: (clientLabel: text) -> (
|
|
3671
|
+
sessionReadContext: (clientLabel: text) -> (Result_14);
|
|
3369
3672
|
/// Read one memory file against a PAID x402 session voucher. No role, no invite — the voucher is
|
|
3370
3673
|
/// the authorization, which is what makes this the engram's one rail a stranger can pay to use.
|
|
3371
3674
|
///
|
|
@@ -3395,7 +3698,7 @@ type Engram =
|
|
|
3395
3698
|
/// session must not be the side door: without this guard a stranger holding a fraction-of-a-
|
|
3396
3699
|
/// cent voucher could read `secrets/*`.
|
|
3397
3700
|
/// · Payments are frozen on this engram.
|
|
3398
|
-
sessionReadMemory: (voucher: Voucher, path: text) -> (
|
|
3701
|
+
sessionReadMemory: (voucher: Voucher, path: text) -> (Result_13);
|
|
3399
3702
|
/// Configure action alerts: an https webhook that receives new chained-audit entries matching the
|
|
3400
3703
|
/// enabled event classes (money / approvals / guardian / agentWrites), batched, at most one
|
|
3401
3704
|
/// POST per minute. ⟨2026-10-29⟩ Delivered within seconds of the action (a 5 s batch window), and
|
|
@@ -3442,7 +3745,7 @@ type Engram =
|
|
|
3442
3745
|
/// own, and this setter applies the number to every creator's set, so `prunedBackups` counts
|
|
3443
3746
|
/// across all of them. "The write is the read" above went stale for a second phone, which never
|
|
3444
3747
|
/// made the write: `getBackupRetention` is the read.
|
|
3445
|
-
setBackupRetention: (dbType: text, maxBackups: nat) -> (
|
|
3748
|
+
setBackupRetention: (dbType: text, maxBackups: nat) -> (Result_12);
|
|
3446
3749
|
/// Override the caps for ONE caller — an agent this owner trusts more, or less, than the rest.
|
|
3447
3750
|
setCallerSpendPolicy: (caller: principal, policy: SpendingPolicy) ->
|
|
3448
3751
|
(Result_2);
|
|
@@ -3514,6 +3817,16 @@ type Engram =
|
|
|
3514
3817
|
text;
|
|
3515
3818
|
RetentionClassSpec;
|
|
3516
3819
|
}) -> (Result_2);
|
|
3820
|
+
/// The SIGN-IN changes itself to `next` — "changeable only by itself". Immediate (a delay would need
|
|
3821
|
+
/// a third credential to cut it short). The key file is refused by name: it never names a sign-in,
|
|
3822
|
+
/// or a thief holding a copy would name themselves. A first engram refuses: its owner is its own
|
|
3823
|
+
/// sign-in. `next` must pass the door's rules and not be an agent or a guardian here. When this
|
|
3824
|
+
/// engram holds a sealed copy of the owner's key, `resealedBackup` is that copy re-sealed for `next`
|
|
3825
|
+
/// (the sign-in opens it and re-seals it client-side) and is stored in the same message, so the copy
|
|
3826
|
+
/// never names a sign-in that is not this engram's; with no copy held, none may be passed. Not
|
|
3827
|
+
/// blocked by a freeze: a freeze must not lock the sign-in out of itself.
|
|
3828
|
+
/// Named caller: an owner console, signed in as the sign-in ("change your sign-in").
|
|
3829
|
+
setOwnerSignIn: (next: principal, resealedBackup: opt blob) -> (Result_2);
|
|
3517
3830
|
/// Owner-only: open or close the monetized read rail. When disabled (the default), sessionReadMemory
|
|
3518
3831
|
/// fails closed for every voucher-bearer — selling the owner's memory is opt-in, not the default.
|
|
3519
3832
|
///
|
|
@@ -3544,6 +3857,13 @@ type Engram =
|
|
|
3544
3857
|
/// call is a chained record entry (`metrics.setSeatWeeksReadEnabled`, the new and the old value), so
|
|
3545
3858
|
/// when the read was on or off is part of the record. Anyone else is refused by name.
|
|
3546
3859
|
setSeatWeeksReadEnabled: (enabled: bool) -> (Result_2);
|
|
3860
|
+
/// Change a listed seller's daily cap. A LOWER (or equal) cap applies at once and cancels a raise that
|
|
3861
|
+
/// was waiting; a HIGHER cap waits 24 hours, as a new seller does (the cap in force until then is the
|
|
3862
|
+
/// old one, and a second raise restarts the wait). Answers when the new cap applies. The sign-in only,
|
|
3863
|
+
/// in an engram opened through another; the owner in a first engram. A raise is refused while payments
|
|
3864
|
+
/// are frozen; a lowering is not. Unknown address `#NotFound`; a cap of 0 `#Invalid` (remove instead).
|
|
3865
|
+
/// Named callers: an owner console's seller list, as `addSeller`.
|
|
3866
|
+
setSellerCap: (payTo: text, perDayCapE6: nat) -> (Result_11);
|
|
3547
3867
|
/// Set the most this engram may spend per day ACROSS EVERY CALLER — five agents, the owner and the
|
|
3548
3868
|
/// marketplace together. `null` removes the ceiling. ⟨2026-09-28⟩
|
|
3549
3869
|
/// ⟨CORRECTED 2026-09-29, review finding X-8: "spend" was too wide. The ceiling covers the x402
|
|
@@ -3640,6 +3960,14 @@ type Engram =
|
|
|
3640
3960
|
/// ⟨0.16.0⟩ PERSISTS beside the market's `sysSignEip712` (census row 177, ruled). The owner does
|
|
3641
3961
|
/// not lose the ability to sign because a marketplace gained it, and the two share every control
|
|
3642
3962
|
/// below the caller gate.
|
|
3963
|
+
///
|
|
3964
|
+
/// ⟨2026-11-02, the owner's ruling "1-4 all as you recommended" (the sign-in "approves trading keys")
|
|
3965
|
+
/// — the child build's stage 5⟩ In an engram opened through another, a type named
|
|
3966
|
+
/// `HyperliquidTransaction:ApproveAgent` (`Eip712Policy.childSignInOnlyToSign`) is signed by the
|
|
3967
|
+
/// sign-in alone: the key file is refused it by name, and the sign-in may sign it (as the owner, on
|
|
3968
|
+
/// the record). Every other type is the key file's to sign, as before. An access check beside the
|
|
3969
|
+
/// owner gate, keyed by the registered NAME, before any of `eip712SignFor`'s eight checks; a first
|
|
3970
|
+
/// engram is untouched (its owner is its own sign-in).
|
|
3643
3971
|
signEip712: (typeId: blob, values: vec record {
|
|
3644
3972
|
text;
|
|
3645
3973
|
Eip712Value;
|
|
@@ -3730,6 +4058,15 @@ type Engram =
|
|
|
3730
4058
|
/// disputes stay on the record. Like `removeGuardian`, it is not terminal: the owner may invite
|
|
3731
4059
|
/// the same person again.
|
|
3732
4060
|
stepDownAsGuardian: () -> (Result_2);
|
|
4061
|
+
/// The key file stores the sealed copy of its own key — once, right after the engram is opened,
|
|
4062
|
+
/// sealed by the owner kit for the sign-in named at birth. Refused in a first engram, when no
|
|
4063
|
+
/// sign-in is seated (nobody could open it), when a copy is already held (set-once: a thief holding
|
|
4064
|
+
/// the same file cannot overwrite the honest copy; a later sign-in's copy arrives through
|
|
4065
|
+
/// `setOwnerSignIn`'s re-seal or `acceptSignIn`), and for an empty or oversized blob
|
|
4066
|
+
/// (`OwnerSignIn.storeRefusal`). The engram stamps whom the copy is for from its own sign-in — the
|
|
4067
|
+
/// caller never names it. Not blocked by a freeze: storing a recovery path loosens nothing.
|
|
4068
|
+
/// Named caller: the owner kit, signed by the agent's lasting key, right after it opens the engram.
|
|
4069
|
+
storeKeyBackup: (ciphertext: blob) -> (Result_2);
|
|
3733
4070
|
/// OWNER force-close, for a session the payer abandoned.
|
|
3734
4071
|
///
|
|
3735
4072
|
/// ⟨R1b, ruled 2026-08-26: owner-gated, NO guardian.⟩ It moves someone else's money, and only ever
|
|
@@ -4004,6 +4341,10 @@ type Engram =
|
|
|
4004
4341
|
///
|
|
4005
4342
|
/// That is what "signatures only" means in code, and it is why this method needs no new authority
|
|
4006
4343
|
/// model: an unregistered typeId is refused for the market exactly as it is for the owner.
|
|
4344
|
+
///
|
|
4345
|
+
/// ⟨2026-11-02, the child build's stage 5⟩ In an engram opened through another, approving a trading
|
|
4346
|
+
/// key (`HyperliquidTransaction:ApproveAgent`) is refused to the market (`#Refused`): it is signed by
|
|
4347
|
+
/// that engram's sign-in alone, through `signEip712`.
|
|
4007
4348
|
sysSignEip712: (typeId: blob, values: vec record {
|
|
4008
4349
|
text;
|
|
4009
4350
|
Eip712Value;
|
|
@@ -4280,7 +4621,7 @@ type ChildAllowanceRow =
|
|
|
4280
4621
|
type CheckpointPage =
|
|
4281
4622
|
record {
|
|
4282
4623
|
firstAvailableSeq: nat;
|
|
4283
|
-
page:
|
|
4624
|
+
page: Page_19;
|
|
4284
4625
|
scannedThroughSeq: nat;
|
|
4285
4626
|
};
|
|
4286
4627
|
type CertifiedAuditHead =
|
|
@@ -4505,7 +4846,7 @@ type AgentStatus =
|
|
|
4505
4846
|
};
|
|
4506
4847
|
type AgentSpendToday =
|
|
4507
4848
|
record {
|
|
4508
|
-
agents:
|
|
4849
|
+
agents: Page_24;
|
|
4509
4850
|
dayStartNs: int;
|
|
4510
4851
|
};
|
|
4511
4852
|
type AgentSpendRow =
|
|
@@ -4623,5 +4964,7 @@ type About =
|
|
|
4623
4964
|
service : (initArgs: opt
|
|
4624
4965
|
record {
|
|
4625
4966
|
owner: opt principal;
|
|
4967
|
+
ownerSignIn: opt principal;
|
|
4968
|
+
parent: opt principal;
|
|
4626
4969
|
registry: opt principal;
|
|
4627
4970
|
}) -> Engram
|