@engramx/idl 0.16.0-rc.21 → 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 +533 -193
- package/dist/engram.idl.d.ts +542 -193
- package/dist/engram.idl.js +259 -194
- package/dist/registry.did +187 -70
- package/dist/registry.idl.d.ts +175 -72
- package/dist/registry.idl.js +62 -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
|
|
@@ -2094,7 +2296,9 @@ type Engram =
|
|
|
2094
2296
|
/// ⟨2026-11-01, "6 fix"⟩ Refused by name (`#Unavailable`) while this engram has not read its own
|
|
2095
2297
|
/// freezing setting: there is no floor to serve then, and a 30-day figure would be a made-up one
|
|
2096
2298
|
/// (ADR-0002) — the signers refuse in that state too, so the refusal is the truth on Billing.
|
|
2097
|
-
|
|
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;
|
|
2098
2302
|
/// The registry that spawned this engram, if it recorded one.
|
|
2099
2303
|
///
|
|
2100
2304
|
/// PUBLIC: it is the provenance claim. An engram asserting it is part of a fleet, under that
|
|
@@ -2111,7 +2315,9 @@ type Engram =
|
|
|
2111
2315
|
/// configuration, and the engram-wide total would also tell one agent how much the others spent.
|
|
2112
2316
|
/// A refusal names this method (`Gated.gatedResult`) rather than answering null/0 — a ceiling of
|
|
2113
2317
|
/// "none" and a spend of 0 are both real answers, so a fabricated one would be read as fact.
|
|
2114
|
-
|
|
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;
|
|
2115
2321
|
/// Read the caps in force for a caller.
|
|
2116
2322
|
///
|
|
2117
2323
|
/// OWNER-ONLY, and this is where it diverges from the market's inbound twin, which is public.
|
|
@@ -2119,8 +2325,17 @@ type Engram =
|
|
|
2119
2325
|
/// Here the engram serves no 402s at all: these caps are the owner's private custody
|
|
2120
2326
|
/// configuration, and publishing them would tell any caller exactly how large a signing request
|
|
2121
2327
|
/// can be before it needs an approval nobody is watching for.
|
|
2122
|
-
|
|
2123
|
-
|
|
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;
|
|
2124
2339
|
/// Timer arm-state. PUBLIC and deliberately so: these timers are self-arming to save cycles,
|
|
2125
2340
|
/// and an optimisation nobody can verify is an optimisation nobody should trust. Cheap to read,
|
|
2126
2341
|
/// leaks nothing (booleans about our own scheduling).
|
|
@@ -2203,12 +2418,12 @@ type Engram =
|
|
|
2203
2418
|
/// ⟨L7⟩ MARKER ADDED 2026-08-23, reasoning above UNCHANGED — this block already said "Stays an
|
|
2204
2419
|
/// UPDATE, marked per L7: it awaits three ICRC-1 ledgers". It was marked in prose and invisible
|
|
2205
2420
|
/// to any gate; the glyph is what `scripts/check-update-for-read.mjs` matches.
|
|
2206
|
-
getWalletBalances: () -> (
|
|
2421
|
+
getWalletBalances: () -> (Result_60);
|
|
2207
2422
|
/// Refusal reason preserved, and it is the clearest case of why a masked read is worse than no
|
|
2208
2423
|
/// read: three empty strings with `configured = false` is a VALID-LOOKING answer meaning "this
|
|
2209
2424
|
/// engram has no World ID configuration" — handed to a caller who merely lacks a grant. The
|
|
2210
2425
|
/// fabrication is indistinguishable from the truth by construction.
|
|
2211
|
-
getWorldIdConfig: () -> (
|
|
2426
|
+
getWorldIdConfig: () -> (Result_59) query;
|
|
2212
2427
|
/// ⟨L7⟩ UPDATE, NOT QUERY: this awaits THREE system calls — `raw_rand()` for the nonce,
|
|
2213
2428
|
/// `Call.signWithEcdsa` for the signature, and `worldIdRpPublicKey()` for the derived key. A
|
|
2214
2429
|
/// query can do none of them.
|
|
@@ -2217,7 +2432,7 @@ type Engram =
|
|
|
2217
2432
|
/// Valid iff the derived signer address (getWorldIdRpSignerAddress) is registered for this rp_id in
|
|
2218
2433
|
/// the World Developer Portal. Short-lived (300s TTL, idkit-server's default) and single-purpose —
|
|
2219
2434
|
/// it authorizes opening one verification request, nothing else.
|
|
2220
|
-
getWorldIdRpContext: () -> (
|
|
2435
|
+
getWorldIdRpContext: () -> (Result_58);
|
|
2221
2436
|
/// Owner-only: the EVM address derived from the engram's dedicated World ID RP signing key (the
|
|
2222
2437
|
/// "worldid-rp" tECDSA path). Register THIS address as the rp_id's signer in the World Developer
|
|
2223
2438
|
/// Portal — the engram never holds or exports a private key (only threshold shares exist, on the
|
|
@@ -2227,7 +2442,10 @@ type Engram =
|
|
|
2227
2442
|
/// awaits `worldIdRpPublicKey()` (management `ecdsa_public_key`), and it calls `denied()` on
|
|
2228
2443
|
/// refusal — a state write, which a query cannot perform. So even if the key were cached this
|
|
2229
2444
|
/// could not become a query without silently retiring its denial record (ADR-0002's class).
|
|
2230
|
-
|
|
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);
|
|
2231
2449
|
/// The verified IDKitResult, verbatim, as World's /api/v4/verify accepted it — the re-checkable
|
|
2232
2450
|
/// artifact behind verifiedHuman. Role-gated because it carries the NULLIFIER.
|
|
2233
2451
|
/// `Result<opt Text>` — and the double wrapper is the entire point, not redundancy.
|
|
@@ -2246,7 +2464,7 @@ type Engram =
|
|
|
2246
2464
|
/// `///`, so the dead name was PUBLISHED in engram.did and pointed every client at a method the
|
|
2247
2465
|
/// canister does not serve. The tombstones below and at `about()` are historical and correct as
|
|
2248
2466
|
/// written; this one was present tense, which is the difference that matters.⟩
|
|
2249
|
-
getWorldIdVerification: () -> (
|
|
2467
|
+
getWorldIdVerification: () -> (Result_57) query;
|
|
2250
2468
|
/// ⟨0.16.0, L1⟩ THE EMERGENCY FAMILY. Every refusal below is `#Refused` or `#NotFound`, and the
|
|
2251
2469
|
/// absence of a `#Conflict` here is the point: these are the calls someone makes while something
|
|
2252
2470
|
/// is going wrong, and the only two answers that help are "you may not do this" and "there is
|
|
@@ -2321,7 +2539,10 @@ type Engram =
|
|
|
2321
2539
|
///
|
|
2322
2540
|
/// Owner-gated because it reports on custody posture, and answered as a Result so that a
|
|
2323
2541
|
/// wrong-identity caller gets a refusal rather than a bare `false` that reads as "no address yet".
|
|
2324
|
-
|
|
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;
|
|
2325
2546
|
/// Issue an OAuth authorization code. Called by an OAuth client's sign-in bridge
|
|
2326
2547
|
/// (an `/auth/connector`-style route) after II authentication. The client then
|
|
2327
2548
|
/// redirects the user's browser to `redirectUri` with `?code=<this>` so the
|
|
@@ -2329,7 +2550,7 @@ type Engram =
|
|
|
2329
2550
|
///
|
|
2330
2551
|
/// Owner-only: only the engram owner can authorize a Connector install.
|
|
2331
2552
|
issueAuthCode: (redirectUri: text, scope: text, codeChallenge: text,
|
|
2332
|
-
clientId: opt text) -> (
|
|
2553
|
+
clientId: opt text) -> (Result_55);
|
|
2333
2554
|
/// ⟨0.16.0⟩ `getCycleSnapshotSource` DELETED — folded into `CycleSnapshot.source`, one label per
|
|
2334
2555
|
/// ROW. A single label for a whole ring misattributes every row recorded under the other source,
|
|
2335
2556
|
/// and the source flips by design (self-call first, balance on fallback). Its documentation of
|
|
@@ -2343,7 +2564,7 @@ type Engram =
|
|
|
2343
2564
|
/// Refusal reason preserved, and it is the sharpest of this family: a masked `[]` reads as a
|
|
2344
2565
|
/// DORMANT engram and corrupts retention math — a fabricated empty here does not just misinform a
|
|
2345
2566
|
/// reader, it feeds a wrong number into a decision about destroying data.
|
|
2346
|
-
listActivitySnapshots: (start: nat, limit: nat) -> (
|
|
2567
|
+
listActivitySnapshots: (start: nat, limit: nat) -> (Result_54) query;
|
|
2347
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,
|
|
2348
2569
|
/// m."⟩ OWNER-ONLY: what each agent has spent today, beside the daily limit in force for it, so the
|
|
2349
2570
|
/// agent rows can say "$0.50 of $5.00 today" where they said a count of payments. Read from the
|
|
@@ -2360,7 +2581,9 @@ type Engram =
|
|
|
2360
2581
|
/// because the payment path keeps no figure then (`SpendCeiling.AgentSpendRow` says why).
|
|
2361
2582
|
/// WHAT WOULD MAKE THIS WRONG: `x402SignFor` keeping the per-caller total by something other than
|
|
2362
2583
|
/// the calling key, or under another day boundary.
|
|
2363
|
-
|
|
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;
|
|
2364
2587
|
/// ⟨0.16.0⟩ THE PAGE EXEMPLAR. Trap → `#Refused`, bare array → `Result<Page<T>>` (L1 + L3).
|
|
2365
2588
|
///
|
|
2366
2589
|
/// The refusal prose that used to be `gatedTrap`'s `whyNotEmpty` argument is not lost — it is why
|
|
@@ -2375,7 +2598,9 @@ type Engram =
|
|
|
2375
2598
|
///
|
|
2376
2599
|
/// `withheld` is 0: this roster is owner-only in whole, so there is no partial-visibility case.
|
|
2377
2600
|
/// A method that filters rows by caller sets it — see L1's row-level honesty rule.
|
|
2378
|
-
|
|
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;
|
|
2379
2604
|
/// The GUARDIAN-audience projection of the agent roster — three fields, not the full record.
|
|
2380
2605
|
///
|
|
2381
2606
|
/// Two audiences, two methods (L1/L8), rather than one method masking fields by caller: a
|
|
@@ -2387,7 +2612,7 @@ type Engram =
|
|
|
2387
2612
|
/// Refusal reason preserved: `[]` reads as "this engram has no agents", and this is the list a
|
|
2388
2613
|
/// guardian consults BEFORE REVOKING ONE. A fabricated empty here does not merely misinform —
|
|
2389
2614
|
/// it tells someone acting under emergency powers that there is nothing to act on.
|
|
2390
|
-
listAgentsForGuardian: (start: nat, limit: nat) -> (
|
|
2615
|
+
listAgentsForGuardian: (start: nat, limit: nat) -> (Result_51) query;
|
|
2391
2616
|
/// Owner-only: rows carry caller, amount, operation and free-text rationale. The SDK omits it.
|
|
2392
2617
|
///
|
|
2393
2618
|
/// The optional leading filter SURVIVES the L3 reshape — ratified (census tier-2 #8) rather than
|
|
@@ -2400,7 +2625,7 @@ type Engram =
|
|
|
2400
2625
|
///
|
|
2401
2626
|
/// Refusal reason preserved: `[]` reads as "nothing is awaiting the owner's decision".
|
|
2402
2627
|
listApprovalRequests: (statusFilter: opt ApprovalStatus, start: nat,
|
|
2403
|
-
limit: nat) -> (
|
|
2628
|
+
limit: nat) -> (Result_37) query;
|
|
2404
2629
|
/// ⟨0.16.0⟩ `total` IS THE HEAD COUNTER, and on this method that is the entire point.
|
|
2405
2630
|
///
|
|
2406
2631
|
/// The audit log is a bounded RING: it trims its tail, so "rows you can read" and "entries that
|
|
@@ -2434,7 +2659,7 @@ type Engram =
|
|
|
2434
2659
|
/// where this record switched to the hash-first rule. A sealed row costs one SHA-256 of its body
|
|
2435
2660
|
/// at read time; nothing new is stored. WHAT WOULD MAKE THIS WRONG: a sealed row carrying any part
|
|
2436
2661
|
/// of a body, or a stranger reaching `items` (test/record-view.test.mo pins both).
|
|
2437
|
-
listAuditEntries: (start: nat, limit: nat) -> (
|
|
2662
|
+
listAuditEntries: (start: nat, limit: nat) -> (Result_50) query;
|
|
2438
2663
|
/// ⟨0.16.0, L1 + L3 — census-ruled⟩ THE TWO-MECHANISM EXCEPTION DISSOLVES.
|
|
2439
2664
|
///
|
|
2440
2665
|
/// This method used to answer THREE ways to one question: a list, an `#Err` text, and a trap,
|
|
@@ -2458,7 +2683,7 @@ type Engram =
|
|
|
2458
2683
|
/// `dbTypeFilter` DIES on the wire (census). The capability does not: `EngramClient.listBackups`
|
|
2459
2684
|
/// keeps its optional filter and applies it to the page, so no caller loses the ability to ask
|
|
2460
2685
|
/// "backups of this database" — it stops being a thing the canister has to page around.
|
|
2461
|
-
listBackups: (start: nat, limit: nat) -> (
|
|
2686
|
+
listBackups: (start: nat, limit: nat) -> (Result_49) query;
|
|
2462
2687
|
/// List all bearer tokens — Active, Revoked, and Expired. Owner uses this in
|
|
2463
2688
|
/// the dashboard to show installed Connectors (claude.ai, Claude Desktop, etc.).
|
|
2464
2689
|
/// Refusal reason preserved from the trap: `[]` reads as "no connector is installed on this
|
|
@@ -2468,7 +2693,9 @@ type Engram =
|
|
|
2468
2693
|
/// `bearerTokenStore.list()` already resolves each token's status at read time (a token that
|
|
2469
2694
|
/// merely stopped being used is reported `#Expired`, not a stale `#Active`), so the page carries
|
|
2470
2695
|
/// the same honesty the store gained on 2026-08-17.
|
|
2471
|
-
|
|
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;
|
|
2472
2699
|
/// The condense checkpoints in the retained log at or above `startSeq`, oldest first.
|
|
2473
2700
|
///
|
|
2474
2701
|
/// ⟨0.16.0, NEW⟩ The other half of the split above. A checkpoint is the only surviving record of a
|
|
@@ -2478,18 +2705,18 @@ type Engram =
|
|
|
2478
2705
|
///
|
|
2479
2706
|
/// Owner-only like every other archive surface, and for the same structural reason: these rows
|
|
2480
2707
|
/// carry the chain positions and roots of entries whose paths were inside the hash preimage.
|
|
2481
|
-
listCondenseCheckpoints: (startSeq: nat, max: nat) -> (
|
|
2708
|
+
listCondenseCheckpoints: (startSeq: nat, max: nat) -> (Result_47) query;
|
|
2482
2709
|
/// ⟨0.16.0⟩ `metrics()` DELETED — absorbed by `about()`.
|
|
2483
2710
|
///
|
|
2484
2711
|
/// Two public projections of one canister (L2.2): `metrics()` and `status()` both answered "what
|
|
2485
2712
|
/// is this engram like" and disagreed on which counters they carried, so a consumer had to fetch
|
|
2486
2713
|
/// both and know which one owned each field. Every field here survives on `about()`, day-flooring
|
|
2487
2714
|
/// included.
|
|
2488
|
-
listCycleSnapshots: (start: nat, limit: nat) -> (
|
|
2715
|
+
listCycleSnapshots: (start: nat, limit: nat) -> (Result_46) query;
|
|
2489
2716
|
/// Same `withheld` treatment as listMemoryFiles — the tombstone listing filtered reserved paths
|
|
2490
2717
|
/// for non-owners just as silently, and a caller could not tell a filtered tombstone list from a
|
|
2491
2718
|
/// complete one. Counted before slicing, so policy-hidden rows never blur into paging.
|
|
2492
|
-
listDeletedMemoryFiles: (start: nat, limit: nat) -> (
|
|
2719
|
+
listDeletedMemoryFiles: (start: nat, limit: nat) -> (Result_45) query;
|
|
2493
2720
|
/// Stays on the engram under B1 (hybrid): withdrawal custody does not leave.
|
|
2494
2721
|
///
|
|
2495
2722
|
/// NAMED item, not a `(Text, Int)` tuple. The Int is an activation time, and a bare Int beside a
|
|
@@ -2504,7 +2731,7 @@ type Engram =
|
|
|
2504
2731
|
/// The item's field is `value`, not `address`: a list may hold a venue value that is no address.
|
|
2505
2732
|
/// Readable by the owner, an active agent or an active guardian, as the old list was.
|
|
2506
2733
|
listEip712Destinations: (typeId: blob, start: nat, limit: nat) ->
|
|
2507
|
-
(
|
|
2734
|
+
(Result_44) query;
|
|
2508
2735
|
/// The registered shapes — E3: encodeTypeString is the display artifact, verbatim.
|
|
2509
2736
|
/// Stays on the engram under B1 (hybrid): EIP-712 signing is custody, and custody does not leave.
|
|
2510
2737
|
///
|
|
@@ -2515,20 +2742,20 @@ type Engram =
|
|
|
2515
2742
|
/// ⟨2026-10-14, the owner's ruling 3A⟩ Each row carries its per-field rules (`fieldRules`), joined in
|
|
2516
2743
|
/// from `eip712FieldRules` — they are part of what the type authorises, so a reader of the list must
|
|
2517
2744
|
/// not have to make a second call to learn them. The row type is `Eip712TypeView`.
|
|
2518
|
-
listEip712Types: (start: nat, limit: nat) -> (
|
|
2745
|
+
listEip712Types: (start: nat, limit: nat) -> (Result_43) query;
|
|
2519
2746
|
/// ⟨2026-10-21, round 11 c⟩ Guardians' disputes, oldest first. Same visibility as
|
|
2520
2747
|
/// `listRepudiations` and `listRecordNotes`: the owner and ACTIVE guardians read the rows; an
|
|
2521
2748
|
/// agent gets an empty page whose `withheld` counts them (ruling 16 B holds — a dispute is the
|
|
2522
2749
|
/// guardian's entry, not the agent's); a stranger, a pending guardian and the anonymous caller are
|
|
2523
2750
|
/// refused.
|
|
2524
|
-
listGuardianDisputes: (start: nat, limit: nat) -> (
|
|
2751
|
+
listGuardianDisputes: (start: nat, limit: nat) -> (Result_42) query;
|
|
2525
2752
|
/// Accessible by owner and guardians.
|
|
2526
2753
|
///
|
|
2527
2754
|
/// Refusal reason carried over from the trap, because it is the sharpest example of why this
|
|
2528
2755
|
/// surface may not fail soft: `[]` reads as "this engram has nobody who can freeze payments or
|
|
2529
2756
|
/// pause writes" — a claim about who can STOP it. A caller who cannot tell that from "you may not
|
|
2530
2757
|
/// see the roster" has been told the engram is unguarded when it may be fully guarded.
|
|
2531
|
-
listGuardians: (start: nat, limit: nat) -> (
|
|
2758
|
+
listGuardians: (start: nat, limit: nat) -> (Result_41) query;
|
|
2532
2759
|
/// The export receipts in the retained log at or above `startSeq`, oldest first.
|
|
2533
2760
|
///
|
|
2534
2761
|
/// ⟨0.16.0, L3⟩ ONE LIST, ONE QUESTION. This method used to return receipts AND checkpoints
|
|
@@ -2544,7 +2771,7 @@ type Engram =
|
|
|
2544
2771
|
///
|
|
2545
2772
|
/// Read `MemoryRouter.ReceiptPage` before reading `page.total` as a receipt count. It is not one;
|
|
2546
2773
|
/// it is the chain's length, and the declaration says why.
|
|
2547
|
-
listMemoryExportReceipts: (startSeq: nat, max: nat) -> (
|
|
2774
|
+
listMemoryExportReceipts: (startSeq: nat, max: nat) -> (Result_40) query;
|
|
2548
2775
|
/// ⟨0.16.0⟩ THE `withheld` EXEMPLAR — L1 names this exact method as the defect it fixes.
|
|
2549
2776
|
///
|
|
2550
2777
|
/// A non-owner's answer silently dropped every `config/` and `secrets/` row. Not "refused the
|
|
@@ -2569,7 +2796,7 @@ type Engram =
|
|
|
2569
2796
|
/// the rows of THIS page (`MemoryRouter.info`), after the slice, so the cost is one lookup per
|
|
2570
2797
|
/// row served, never one per file stored. A WIDENED REPLY: a reader that decodes the row by
|
|
2571
2798
|
/// position rather than by field name breaks — none in this repository does.
|
|
2572
|
-
listMemoryFiles: (start: nat, limit: nat) -> (
|
|
2799
|
+
listMemoryFiles: (start: nat, limit: nat) -> (Result_39) query;
|
|
2573
2800
|
/// One page of the memory log, seq-ordered, optionally narrowed to one author.
|
|
2574
2801
|
///
|
|
2575
2802
|
/// THE WINDOW IS THE CURSOR, and the page now states it. The window is
|
|
@@ -2595,7 +2822,7 @@ type Engram =
|
|
|
2595
2822
|
/// with the disclosures that make the page verifiable — the hidden-bound defect the census itself
|
|
2596
2823
|
/// names on previewCondense's row.
|
|
2597
2824
|
listMemoryLog: (startSeq: nat, max: nat, authorFilter: opt principal) ->
|
|
2598
|
-
(
|
|
2825
|
+
(Result_38) query;
|
|
2599
2826
|
/// The caller's OWN spend-approval requests. ⟨0.16.0, L1 + L3 — fixed 2026-08-18⟩
|
|
2600
2827
|
///
|
|
2601
2828
|
/// Two defects in seven lines, and the first is the one this release exists to remove:
|
|
@@ -2612,7 +2839,7 @@ type Engram =
|
|
|
2612
2839
|
/// to see, so `total` over their own rows is the honest count and nothing is hidden FROM them.
|
|
2613
2840
|
/// (The unbounded MAP is filed separately — pruning an approval record destroys evidence of what
|
|
2614
2841
|
/// was asked, which is a retention ruling rather than a shape fix.)
|
|
2615
|
-
listMyApprovalRequests: (start: nat, limit: nat) -> (
|
|
2842
|
+
listMyApprovalRequests: (start: nat, limit: nat) -> (Result_37) query;
|
|
2616
2843
|
/// The payer's own sessions, live ones first. PAYER-SCOPED: a caller sees only their own, which
|
|
2617
2844
|
/// is why this needs no role — a session id is not a secret from the person who paid for it.
|
|
2618
2845
|
///
|
|
@@ -2621,7 +2848,7 @@ type Engram =
|
|
|
2621
2848
|
/// It took no arguments, and a cursor added after the freeze is an argument-list change every
|
|
2622
2849
|
/// client would break on — the market paged its own pending withdrawals before its cut for the
|
|
2623
2850
|
/// same reason. The order is the order sessions were opened.
|
|
2624
|
-
listMySessions: (start: nat, limit: nat) -> (
|
|
2851
|
+
listMySessions: (start: nat, limit: nat) -> (Result_36) query;
|
|
2625
2852
|
///
|
|
2626
2853
|
/// ⟨0.16.0, L3⟩ Paged and enveloped like every other `list*`, and the envelope here is uniformity
|
|
2627
2854
|
/// rather than gating: this method cannot refuse anybody, so `#Err` is unreachable on it. That is
|
|
@@ -2634,7 +2861,7 @@ type Engram =
|
|
|
2634
2861
|
/// asked by strangers. `verifyEngramActiveOwner` on the registry answers only about the owner
|
|
2635
2862
|
/// IT recorded, so this chain is what a caller composes with when currency matters — which it
|
|
2636
2863
|
/// cannot do if it needs a role here.
|
|
2637
|
-
listOwnershipTransfers: (start: nat, limit: nat) -> (
|
|
2864
|
+
listOwnershipTransfers: (start: nat, limit: nat) -> (Result_35) query;
|
|
2638
2865
|
/// ⟨2026-09-29, the platform's question from the build review⟩ OWNER-ONLY: how many payment
|
|
2639
2866
|
/// signatures each agent has obtained today, and the daily limit (200, `PaymentSignCap`). The
|
|
2640
2867
|
/// owner's console stated the rule and showed no number, because nothing served one; a number it
|
|
@@ -2650,7 +2877,9 @@ type Engram =
|
|
|
2650
2877
|
/// marketplace's one shared count today is in the reply's `marketplace` field, with the limit this
|
|
2651
2878
|
/// engram enforces for it — beside the agents, never a row among them
|
|
2652
2879
|
/// (`PaymentSignCap.marketplaceRow`). Null when no marketplace is set.
|
|
2653
|
-
|
|
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;
|
|
2654
2883
|
/// Agent records removed by a reset. Each row is a NAMED record with the fields `principal`,
|
|
2655
2884
|
/// `name`, `registeredAt` and `purgedAt` — read them BY NAME, never by position.
|
|
2656
2885
|
/// ⟨2026-09-29, the vocabulary ruling: pairing is the one verb that admits an agent⟩ The field
|
|
@@ -2690,7 +2919,9 @@ type Engram =
|
|
|
2690
2919
|
/// `invite` its enrolment named, and `ended` — why and on what day its engagement ended (its own
|
|
2691
2920
|
/// earlier ending, or the reset) — the facts `resyncAgentEdges` re-sends. The stored rows are
|
|
2692
2921
|
/// served as they are.
|
|
2693
|
-
|
|
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;
|
|
2694
2925
|
/// ⟨0.16.0⟩ ONE ACCESSOR, folding `readReadLog` and `getDenialLog` — and the fold only became
|
|
2695
2926
|
/// safe because of a change made earlier in this same leg.
|
|
2696
2927
|
///
|
|
@@ -2752,13 +2983,13 @@ type Engram =
|
|
|
2752
2983
|
/// on the chained record — the same `RecordView` filter, and `withheld` counts what it removed
|
|
2753
2984
|
/// together with what `successFilter` removed. WHAT WOULD MAKE THIS WRONG: see `listAuditEntries`.
|
|
2754
2985
|
listReadLog: (successFilter: opt bool, start: nat, limit: nat) ->
|
|
2755
|
-
(
|
|
2986
|
+
(Result_32) query;
|
|
2756
2987
|
/// ⟨2026-10-21, round 11 b⟩ The owner's notes, oldest first. Same visibility as
|
|
2757
2988
|
/// `listRepudiations`, for the same reason: the owner and ACTIVE guardians read the rows; an agent
|
|
2758
2989
|
/// reads only the entries it caused (follow-up 16 B), and every note is the owner's, so an agent
|
|
2759
2990
|
/// gets an empty page whose `withheld` counts the notes in its window — never "there are none". A
|
|
2760
2991
|
/// stranger, a pending guardian and the anonymous caller are refused.
|
|
2761
|
-
listRecordNotes: (start: nat, limit: nat) -> (
|
|
2992
|
+
listRecordNotes: (start: nat, limit: nat) -> (Result_31) query;
|
|
2762
2993
|
/// Same visibility as listAuditEntries: the owner, this engram's agents, and ACTIVE guardians
|
|
2763
2994
|
/// see disputes. An unauthorized read REFUSES — it does not return an empty list, because an
|
|
2764
2995
|
/// empty list reads as "no disputes have been filed", which is a claim, not an absence of one.
|
|
@@ -2773,7 +3004,14 @@ type Engram =
|
|
|
2773
3004
|
/// window — which says disputes exist without showing them, never "none have been filed". WHAT
|
|
2774
3005
|
/// WOULD MAKE THIS WRONG: a ruling that an agent may see the disputes of its own writes; this would
|
|
2775
3006
|
/// then have to look up each disputed version's writer, which it does not do today.
|
|
2776
|
-
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;
|
|
2777
3015
|
/// ⟨2026-10-21, the owner's round-11 answer f⟩ OWNER-ONLY: the sign-ins, each with the name its app
|
|
2778
3016
|
/// registered. The same tokens, in the same order and paged the same way, as `listBearerTokens`,
|
|
2779
3017
|
/// each beside `clientName` — the RFC 7591 `client_name` the app registered when the token was
|
|
@@ -2782,7 +3020,9 @@ type Engram =
|
|
|
2782
3020
|
/// apps apart. A NEW method rather than a field on `BearerToken`: that record is stored (M0170)
|
|
2783
3021
|
/// and `listBearerTokens`' reply is shipped (never widened). An agent, a guardian, a stranger and
|
|
2784
3022
|
/// the anonymous caller are refused, by `listBearerTokens`' own gate and for its reason.
|
|
2785
|
-
|
|
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;
|
|
2786
3026
|
/// Owner: advance the review cursor — "I have seen everything up to and including uptoAuditId"
|
|
2787
3027
|
/// (null = everything at the current head). Bounded so the attestation can never cover entries
|
|
2788
3028
|
/// the console did not render; clamped monotonic (the cursor never moves backward) and to the
|
|
@@ -2792,7 +3032,7 @@ type Engram =
|
|
|
2792
3032
|
/// (every family qualifiesForReview admits is written to auditLogger, so they share that space),
|
|
2793
3033
|
/// and this never inspects an operation or a role. Widening what the review shows therefore
|
|
2794
3034
|
/// changes only which ids the console can pass here — it cannot desynchronise the cursor.
|
|
2795
|
-
markAgentWritesReviewed: (uptoAuditId: opt nat) -> (
|
|
3035
|
+
markAgentWritesReviewed: (uptoAuditId: opt nat) -> (Result_15);
|
|
2796
3036
|
/// ⟨2026-10-21, the owner's round-11 answer g⟩ AN AGENT READS ITS OWN GRANT — to the calling key
|
|
2797
3037
|
/// only (`People.AgentGrant`): what it may read, where it may write, its rate, and the payment
|
|
2798
3038
|
/// limits enforced against that key. It reveals nothing a refusal does not already say, and lets
|
|
@@ -2810,7 +3050,7 @@ type Engram =
|
|
|
2810
3050
|
/// the caps alone no longer read as money an agent can spend. `People.SpendState` names each one.
|
|
2811
3051
|
/// ⟨2026-10-29, review F2⟩ And which whole-key refusal stops every payment now, if one does
|
|
2812
3052
|
/// (`paymentsStoppedBy`: the brake, the signing floor, the daily count of payment signatures).
|
|
2813
|
-
myGrant: () -> (
|
|
3053
|
+
myGrant: () -> (Result_27) query;
|
|
2814
3054
|
/// The AGENT's current key nominates the key that will replace it. Nothing moves yet: the new
|
|
2815
3055
|
/// key must accept, by its own call, within 24 hours (`acceptAgentKeyNomination`). One pending
|
|
2816
3056
|
/// nomination per agent — a new one replaces the earlier one, and the record says which. Refused,
|
|
@@ -2818,7 +3058,7 @@ type Engram =
|
|
|
2818
3058
|
/// not hold the record (`KeyReplacement.nomineeRefusal`).
|
|
2819
3059
|
nominateAgentKey: (newKey: principal) -> (Result_2);
|
|
2820
3060
|
/// An AGENT paired here asks this engram to open an engram of its own. This engram attaches 1.3 T of
|
|
2821
|
-
/// 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
|
|
2822
3062
|
/// the engram is recorded as opened through this one. Answers the new engram's canister id.
|
|
2823
3063
|
///
|
|
2824
3064
|
/// APPROVING IS GIVING: the owner allowed this with `setChildAllowance`, and what is attached is the
|
|
@@ -2845,15 +3085,36 @@ type Engram =
|
|
|
2845
3085
|
///
|
|
2846
3086
|
/// WHAT WOULD MAKE THIS WRONG: an await added between `ChildAllowance.take` and the registry call; the
|
|
2847
3087
|
/// registry's `CHILD_MIN_ATTACHED_CYCLES` moving without `CHILD_ATTACH_CYCLES`.
|
|
2848
|
-
|
|
2849
|
-
|
|
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);
|
|
2850
3111
|
/// Withdraw tokens to the owner's principal. This is the ONLY way to
|
|
2851
3112
|
/// move tokens out of the engram to an external address, and the
|
|
2852
3113
|
/// destination is always hardcoded to the owner.
|
|
2853
3114
|
/// NOT freeze-gated: the owner always controls their own funds.
|
|
2854
3115
|
/// Guardian freeze only blocks agent/public operations.
|
|
2855
3116
|
ownerWithdraw: (amount: TokenAmount, ownerAuth: opt ActionAuth) ->
|
|
2856
|
-
(
|
|
3117
|
+
(Result_15);
|
|
2857
3118
|
/// ⟨0.16.0⟩ `payRentFromEarnings` DELETED — ruled TWICE (B1 and B2), and it was the single
|
|
2858
3119
|
/// clearest violation of the OSS/platform split in this repo.
|
|
2859
3120
|
///
|
|
@@ -2911,7 +3172,7 @@ type Engram =
|
|
|
2911
3172
|
pairAgent: (arg: record {
|
|
2912
3173
|
code: text;
|
|
2913
3174
|
enrolment: Enrolment;
|
|
2914
|
-
}) -> (
|
|
3175
|
+
}) -> (Result_24);
|
|
2915
3176
|
/// ⟨0.16.0, L2.2 — renamed from `guardianPauseWrites`⟩ Same correction as freezePayments above:
|
|
2916
3177
|
/// owner-or-guardian, and `resumeWrites` never carried the prefix either.
|
|
2917
3178
|
pauseWrites: () -> (Result_2);
|
|
@@ -2936,7 +3197,7 @@ type Engram =
|
|
|
2936
3197
|
///
|
|
2937
3198
|
/// `unlocked` is the export-receipt gate ONLY. It is not a promise the condense will land: the
|
|
2938
3199
|
/// history-budget delta is checked at commit time and can still refuse a short prefix.
|
|
2939
|
-
previewCondense: (toSeq: nat) -> (
|
|
3200
|
+
previewCondense: (toSeq: nat) -> (Result_23) query;
|
|
2940
3201
|
/// A quote for a session this caller has not opened and is not committed to — the intent a
|
|
2941
3202
|
/// buyer signs against. Pure dry run, no state, no funds.
|
|
2942
3203
|
///
|
|
@@ -2981,10 +3242,12 @@ type Engram =
|
|
|
2981
3242
|
/// takes effect change it.
|
|
2982
3243
|
/// HONEST WHEN CUT SHORT: `complete = false` when the planning budget
|
|
2983
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.
|
|
2984
3247
|
previewRetention: (entries: vec record {
|
|
2985
3248
|
text;
|
|
2986
3249
|
RetentionClassSpec;
|
|
2987
|
-
}) -> (
|
|
3250
|
+
}) -> (Result_22) query;
|
|
2988
3251
|
/// Read one memory file at its current version.
|
|
2989
3252
|
///
|
|
2990
3253
|
/// Gated on the `read_memory` permission, so an agent holding that grant reaches it — unlike
|
|
@@ -2999,7 +3262,7 @@ type Engram =
|
|
|
2999
3262
|
/// counter here could never persist; read counting lives on the update path
|
|
3000
3263
|
/// (`sessionReadContext` and the MCP reads). A caller measuring engram usage from this method
|
|
3001
3264
|
/// will measure nothing.
|
|
3002
|
-
readMemory: (path: text) -> (
|
|
3265
|
+
readMemory: (path: text) -> (Result_13) query;
|
|
3003
3266
|
/// Read many paths in one call. Per-path Results are KEPT — partial success is the point, and
|
|
3004
3267
|
/// one unreadable path must not fail the other nine.
|
|
3005
3268
|
///
|
|
@@ -3015,7 +3278,7 @@ type Engram =
|
|
|
3015
3278
|
/// Both are now what they are: a single `#Err` for the whole call. `#Ok` still carries a row per
|
|
3016
3279
|
/// path, each with its own Result — a refused RESERVED path sits beside a readable one, which is
|
|
3017
3280
|
/// a genuine per-path fact.
|
|
3018
|
-
readMemoryBatch: (paths: vec text) -> (
|
|
3281
|
+
readMemoryBatch: (paths: vec text) -> (Result_21) query;
|
|
3019
3282
|
/// ⟨0.16.0⟩ `getMemoryRetentionGuards` DELETED — folded into `getMemoryRetentionPolicy` above.
|
|
3020
3283
|
/// It was the second L2.1 array-returning `get*`, and separating it from the policy it modifies
|
|
3021
3284
|
/// was the defect described there. Its own docs are preserved at the fold site.
|
|
@@ -3026,7 +3289,7 @@ type Engram =
|
|
|
3026
3289
|
/// see it cannot know whether it has the whole range, which is how silent truncation gets
|
|
3027
3290
|
/// reintroduced. Loop while `more` is true, advancing by the bytes actually returned.
|
|
3028
3291
|
readMemoryBytes: (path: text, offset: nat, len: nat, version: opt nat) ->
|
|
3029
|
-
(
|
|
3292
|
+
(Result_20) query;
|
|
3030
3293
|
/// The escrow exit for a session whose settle cannot pay.
|
|
3031
3294
|
///
|
|
3032
3295
|
/// PAYER-ONLY, enforced inside the gateway, and deliberately not owner-triggered: the payer's own
|
|
@@ -3089,7 +3352,7 @@ type Engram =
|
|
|
3089
3352
|
/// was the block index alone, which read as the amount. If the session's record is removed before
|
|
3090
3353
|
/// the amount can be read back — a session closed in the same moment as the recovery and cleaned up
|
|
3091
3354
|
/// during its transfer — it answers `#Other` naming the block, never a guessed amount.
|
|
3092
|
-
recoverEscrow: (sessionId: text, amountE6: nat) -> (
|
|
3355
|
+
recoverEscrow: (sessionId: text, amountE6: nat) -> (Result_19);
|
|
3093
3356
|
/// ⟨0.16.0, L1⟩ A REDEMPTION PATH, where the arm choice is a disclosure decision.
|
|
3094
3357
|
///
|
|
3095
3358
|
/// Four of these refusals are about the CODE and one is about the caller. The code arms restate
|
|
@@ -3103,7 +3366,7 @@ type Engram =
|
|
|
3103
3366
|
/// rather than `()`. The new guardian learns, in the same reply, the name and permissions the
|
|
3104
3367
|
/// owner's invite gave them and that they cannot act until approved; before, that took a second
|
|
3105
3368
|
/// read they had no reason to know to make.
|
|
3106
|
-
registerGuardian: (code: text) -> (
|
|
3369
|
+
registerGuardian: (code: text) -> (Result_18);
|
|
3107
3370
|
/// Remove a per-caller override so that caller reverts to — and keeps TRACKING — the global caps.
|
|
3108
3371
|
///
|
|
3109
3372
|
/// It travels with its pair and is never dropped alone: without it the only way "back" from an
|
|
@@ -3134,6 +3397,13 @@ type Engram =
|
|
|
3134
3397
|
/// `#NotFound` rather than `#Refused` when there is no such guardian: only the owner reaches this
|
|
3135
3398
|
/// line, so the roster is theirs and its contents are not a secret being withheld from them.
|
|
3136
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);
|
|
3137
3407
|
/// ⟨2026-10-21, the owner's round-11 answer a⟩ OWNER-ONLY: give an agent a new name. A name was
|
|
3138
3408
|
/// fixed at the invite, and two agents both called "agent" is how the 2026-10-20 session started.
|
|
3139
3409
|
/// Only the VALUE of the stored `AgentRecord.name` changes — no new state, no reshaped record —
|
|
@@ -3149,7 +3419,7 @@ type Engram =
|
|
|
3149
3419
|
/// the original audit entry stay exactly where they were; this appends a chained
|
|
3150
3420
|
/// `memory.repudiate` entry and lists the (path, version) so readers can see the dispute.
|
|
3151
3421
|
repudiateMemoryWrite: (path: text, version: nat, reason: text) ->
|
|
3152
|
-
(
|
|
3422
|
+
(Result_15);
|
|
3153
3423
|
/// ⚠ OWNER-ONLY BULK RESET. Destructive, and wider than its name suggests.
|
|
3154
3424
|
///
|
|
3155
3425
|
/// It severs EVERY grant surface that can outlive a role — agents, guardians, invites and
|
|
@@ -3168,6 +3438,10 @@ type Engram =
|
|
|
3168
3438
|
/// · ⟨2026-10-02⟩ the seat weeks of every engagement (`agentSeatWeeks`), with the signature count
|
|
3169
3439
|
/// they sit beside, and the owner's switch over the metrics reader's read and the reader it
|
|
3170
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.
|
|
3171
3445
|
///
|
|
3172
3446
|
/// ⟨2026-10-02⟩ It tells the spawning registry that it happened (`sysNoteReset`), on every reset.
|
|
3173
3447
|
///
|
|
@@ -3177,7 +3451,7 @@ type Engram =
|
|
|
3177
3451
|
/// NOT unbounded. It caps at MAX_ENTRIES and trims its oldest tenth on overflow, so on any engram
|
|
3178
3452
|
/// long-lived enough for the rent model to apply, the reset entry is not guaranteed to still be
|
|
3179
3453
|
/// there. `agentPurgeLog` is the evidence that does not age out — which is why it exists.
|
|
3180
|
-
resetEngram: () -> (
|
|
3454
|
+
resetEngram: () -> (Result_17);
|
|
3181
3455
|
/// ⟨2026-09-28, owner decision: an agent can resign from an engram, and the resignation is
|
|
3182
3456
|
/// recorded⟩ The AGENT ends its own engagement with this engram.
|
|
3183
3457
|
///
|
|
@@ -3223,7 +3497,7 @@ type Engram =
|
|
|
3223
3497
|
/// all that is left to send is the ending, and the registry has nothing to end. The report lists
|
|
3224
3498
|
/// each such engagement under `cannotBeRecorded` (key, root, invite, and how and when it ended),
|
|
3225
3499
|
/// apart from `notRecorded`, so the owner sees them rather than silence.
|
|
3226
|
-
resyncAgentEdges: () -> (
|
|
3500
|
+
resyncAgentEdges: () -> (Result_16);
|
|
3227
3501
|
/// Return to managed custody: the engram adds the registry back as a controller ALONGSIDE the
|
|
3228
3502
|
/// owner — it does not remove the owner. The inverse of `claimSovereignty`, and the reason
|
|
3229
3503
|
/// sovereignty is not a one-way door.
|
|
@@ -3277,7 +3551,7 @@ type Engram =
|
|
|
3277
3551
|
/// written, and only then does it await one notification per revoked agent. So a notification
|
|
3278
3552
|
/// that fails leaves the agents revoked here regardless — a partial notify is not a partial
|
|
3279
3553
|
/// revocation, which is the direction that matters for a panic button.
|
|
3280
|
-
revokeAllAgents: () -> (
|
|
3554
|
+
revokeAllAgents: () -> (Result_15);
|
|
3281
3555
|
/// Owner-only panic button: revoke every connector bearer token at once. Returns how many.
|
|
3282
3556
|
///
|
|
3283
3557
|
/// The THIRD independent surface — hosted connectors authenticate with bearer tokens, not with
|
|
@@ -3286,7 +3560,7 @@ type Engram =
|
|
|
3286
3560
|
/// holding a live session.
|
|
3287
3561
|
///
|
|
3288
3562
|
/// Tokens are re-issuable: revoking them is not permanent the way revoking an agent is.
|
|
3289
|
-
revokeAllBearerTokens: () -> (
|
|
3563
|
+
revokeAllBearerTokens: () -> (Result_15);
|
|
3290
3564
|
/// ⟨0.16.0⟩ `removeAllGuardians` DELETED — test-only (L6), and verified NOT part of KILL-SWITCH's
|
|
3291
3565
|
/// mass-revoke set. The destructive phase-07 suite iterates `removeGuardian` instead, so nothing
|
|
3292
3566
|
/// loses a capability: what dies is a bulk spelling no runbook ever invoked.
|
|
@@ -3298,7 +3572,7 @@ type Engram =
|
|
|
3298
3572
|
///
|
|
3299
3573
|
/// Unlike revoking an agent, this costs nothing permanently — an invite is a one-time code,
|
|
3300
3574
|
/// so voiding it and minting a fresh one is the ordinary path.
|
|
3301
|
-
revokeAllInvites: () -> (
|
|
3575
|
+
revokeAllInvites: () -> (Result_15);
|
|
3302
3576
|
/// Revoke a bearer token by its public tokenId. Idempotent.
|
|
3303
3577
|
/// Subsequent /mcp requests using this token will be rejected.
|
|
3304
3578
|
revokeBearerToken: (tokenId: text) -> (Result_2);
|
|
@@ -3325,6 +3599,32 @@ type Engram =
|
|
|
3325
3599
|
/// agent on that record, so its standing is not the problem — the record's state is. An
|
|
3326
3600
|
/// agent reading `#Refused` would go looking for a permission that was never missing.
|
|
3327
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);
|
|
3328
3628
|
/// Append to a memory file against a PAID x402 session voucher — the write half of the paid rail,
|
|
3329
3629
|
/// authorized by the voucher rather than by a role.
|
|
3330
3630
|
/// ⟨2026-09-30, ic402 2.17.0⟩ Authorized by the payer's own call with the voucher: only the
|
|
@@ -3368,7 +3668,7 @@ type Engram =
|
|
|
3368
3668
|
/// ⚠ RAW STORED BYTES, like `readMemoryBatch`. On a Private (encrypted) engram the content is
|
|
3369
3669
|
/// CIPHERTEXT; the key-holding SDK decrypts it. A caller without the key gets bytes it cannot
|
|
3370
3670
|
/// read, not an error.
|
|
3371
|
-
sessionReadContext: (clientLabel: text) -> (
|
|
3671
|
+
sessionReadContext: (clientLabel: text) -> (Result_14);
|
|
3372
3672
|
/// Read one memory file against a PAID x402 session voucher. No role, no invite — the voucher is
|
|
3373
3673
|
/// the authorization, which is what makes this the engram's one rail a stranger can pay to use.
|
|
3374
3674
|
///
|
|
@@ -3398,7 +3698,7 @@ type Engram =
|
|
|
3398
3698
|
/// session must not be the side door: without this guard a stranger holding a fraction-of-a-
|
|
3399
3699
|
/// cent voucher could read `secrets/*`.
|
|
3400
3700
|
/// · Payments are frozen on this engram.
|
|
3401
|
-
sessionReadMemory: (voucher: Voucher, path: text) -> (
|
|
3701
|
+
sessionReadMemory: (voucher: Voucher, path: text) -> (Result_13);
|
|
3402
3702
|
/// Configure action alerts: an https webhook that receives new chained-audit entries matching the
|
|
3403
3703
|
/// enabled event classes (money / approvals / guardian / agentWrites), batched, at most one
|
|
3404
3704
|
/// POST per minute. ⟨2026-10-29⟩ Delivered within seconds of the action (a 5 s batch window), and
|
|
@@ -3445,7 +3745,7 @@ type Engram =
|
|
|
3445
3745
|
/// own, and this setter applies the number to every creator's set, so `prunedBackups` counts
|
|
3446
3746
|
/// across all of them. "The write is the read" above went stale for a second phone, which never
|
|
3447
3747
|
/// made the write: `getBackupRetention` is the read.
|
|
3448
|
-
setBackupRetention: (dbType: text, maxBackups: nat) -> (
|
|
3748
|
+
setBackupRetention: (dbType: text, maxBackups: nat) -> (Result_12);
|
|
3449
3749
|
/// Override the caps for ONE caller — an agent this owner trusts more, or less, than the rest.
|
|
3450
3750
|
setCallerSpendPolicy: (caller: principal, policy: SpendingPolicy) ->
|
|
3451
3751
|
(Result_2);
|
|
@@ -3517,6 +3817,16 @@ type Engram =
|
|
|
3517
3817
|
text;
|
|
3518
3818
|
RetentionClassSpec;
|
|
3519
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);
|
|
3520
3830
|
/// Owner-only: open or close the monetized read rail. When disabled (the default), sessionReadMemory
|
|
3521
3831
|
/// fails closed for every voucher-bearer — selling the owner's memory is opt-in, not the default.
|
|
3522
3832
|
///
|
|
@@ -3547,6 +3857,13 @@ type Engram =
|
|
|
3547
3857
|
/// call is a chained record entry (`metrics.setSeatWeeksReadEnabled`, the new and the old value), so
|
|
3548
3858
|
/// when the read was on or off is part of the record. Anyone else is refused by name.
|
|
3549
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);
|
|
3550
3867
|
/// Set the most this engram may spend per day ACROSS EVERY CALLER — five agents, the owner and the
|
|
3551
3868
|
/// marketplace together. `null` removes the ceiling. ⟨2026-09-28⟩
|
|
3552
3869
|
/// ⟨CORRECTED 2026-09-29, review finding X-8: "spend" was too wide. The ceiling covers the x402
|
|
@@ -3643,6 +3960,14 @@ type Engram =
|
|
|
3643
3960
|
/// ⟨0.16.0⟩ PERSISTS beside the market's `sysSignEip712` (census row 177, ruled). The owner does
|
|
3644
3961
|
/// not lose the ability to sign because a marketplace gained it, and the two share every control
|
|
3645
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).
|
|
3646
3971
|
signEip712: (typeId: blob, values: vec record {
|
|
3647
3972
|
text;
|
|
3648
3973
|
Eip712Value;
|
|
@@ -3733,6 +4058,15 @@ type Engram =
|
|
|
3733
4058
|
/// disputes stay on the record. Like `removeGuardian`, it is not terminal: the owner may invite
|
|
3734
4059
|
/// the same person again.
|
|
3735
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);
|
|
3736
4070
|
/// OWNER force-close, for a session the payer abandoned.
|
|
3737
4071
|
///
|
|
3738
4072
|
/// ⟨R1b, ruled 2026-08-26: owner-gated, NO guardian.⟩ It moves someone else's money, and only ever
|
|
@@ -4007,6 +4341,10 @@ type Engram =
|
|
|
4007
4341
|
///
|
|
4008
4342
|
/// That is what "signatures only" means in code, and it is why this method needs no new authority
|
|
4009
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`.
|
|
4010
4348
|
sysSignEip712: (typeId: blob, values: vec record {
|
|
4011
4349
|
text;
|
|
4012
4350
|
Eip712Value;
|
|
@@ -4283,7 +4621,7 @@ type ChildAllowanceRow =
|
|
|
4283
4621
|
type CheckpointPage =
|
|
4284
4622
|
record {
|
|
4285
4623
|
firstAvailableSeq: nat;
|
|
4286
|
-
page:
|
|
4624
|
+
page: Page_19;
|
|
4287
4625
|
scannedThroughSeq: nat;
|
|
4288
4626
|
};
|
|
4289
4627
|
type CertifiedAuditHead =
|
|
@@ -4508,7 +4846,7 @@ type AgentStatus =
|
|
|
4508
4846
|
};
|
|
4509
4847
|
type AgentSpendToday =
|
|
4510
4848
|
record {
|
|
4511
|
-
agents:
|
|
4849
|
+
agents: Page_24;
|
|
4512
4850
|
dayStartNs: int;
|
|
4513
4851
|
};
|
|
4514
4852
|
type AgentSpendRow =
|
|
@@ -4626,5 +4964,7 @@ type About =
|
|
|
4626
4964
|
service : (initArgs: opt
|
|
4627
4965
|
record {
|
|
4628
4966
|
owner: opt principal;
|
|
4967
|
+
ownerSignIn: opt principal;
|
|
4968
|
+
parent: opt principal;
|
|
4629
4969
|
registry: opt principal;
|
|
4630
4970
|
}) -> Engram
|