@brainai/satp-client 2.0.6 → 2.0.8

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.
@@ -0,0 +1,1344 @@
1
+ {
2
+ "address": "",
3
+ "metadata": {
4
+ "name": "identity_v3",
5
+ "version": "0.1.0",
6
+ "spec": "0.1.0",
7
+ "description": "SATP Identity Registry V3 — agent_id-seeded, wallet-independent identity"
8
+ },
9
+ "instructions": [
10
+ {
11
+ "name": "create_identity",
12
+ "docs": [
13
+ "Create a Genesis Record for an agent.",
14
+ "PDA seed: `[b\"genesis\", agent_id_hash]`",
15
+ "Called at registration — face fields start empty (agent is \"unborn\")."
16
+ ],
17
+ "discriminator": [
18
+ 12,
19
+ 253,
20
+ 209,
21
+ 41,
22
+ 176,
23
+ 51,
24
+ 195,
25
+ 179
26
+ ],
27
+ "accounts": [
28
+ {
29
+ "name": "genesis",
30
+ "writable": true
31
+ },
32
+ {
33
+ "name": "creator",
34
+ "writable": true,
35
+ "signer": true
36
+ },
37
+ {
38
+ "name": "system_program"
39
+ }
40
+ ],
41
+ "args": [
42
+ {
43
+ "name": "agent_id_hash",
44
+ "type": {
45
+ "array": [
46
+ "u8",
47
+ 32
48
+ ]
49
+ }
50
+ },
51
+ {
52
+ "name": "name",
53
+ "type": "string"
54
+ },
55
+ {
56
+ "name": "description",
57
+ "type": "string"
58
+ },
59
+ {
60
+ "name": "category",
61
+ "type": "string"
62
+ },
63
+ {
64
+ "name": "capabilities",
65
+ "type": {
66
+ "vec": "string"
67
+ }
68
+ },
69
+ {
70
+ "name": "metadata_uri",
71
+ "type": "string"
72
+ }
73
+ ]
74
+ },
75
+ {
76
+ "name": "burn_to_become",
77
+ "docs": [
78
+ "Burn-to-become: set the agent's permanent face.",
79
+ "This is the agent's \"birth event\" — irreversible.",
80
+ "After this, face_image and face_mint are immutable."
81
+ ],
82
+ "discriminator": [
83
+ 76,
84
+ 240,
85
+ 170,
86
+ 88,
87
+ 79,
88
+ 189,
89
+ 192,
90
+ 10
91
+ ],
92
+ "accounts": [
93
+ {
94
+ "name": "genesis",
95
+ "writable": true
96
+ },
97
+ {
98
+ "name": "authority",
99
+ "signer": true
100
+ }
101
+ ],
102
+ "args": [
103
+ {
104
+ "name": "face_image",
105
+ "type": "string"
106
+ },
107
+ {
108
+ "name": "face_mint",
109
+ "type": "pubkey"
110
+ },
111
+ {
112
+ "name": "face_burn_tx",
113
+ "type": "string"
114
+ }
115
+ ]
116
+ },
117
+ {
118
+ "name": "update_identity",
119
+ "docs": [
120
+ "Update identity metadata (authority only).",
121
+ "Face fields are immutable after burn-to-become."
122
+ ],
123
+ "discriminator": [
124
+ 130,
125
+ 54,
126
+ 88,
127
+ 104,
128
+ 222,
129
+ 124,
130
+ 238,
131
+ 252
132
+ ],
133
+ "accounts": [
134
+ {
135
+ "name": "genesis",
136
+ "writable": true
137
+ },
138
+ {
139
+ "name": "authority",
140
+ "signer": true
141
+ }
142
+ ],
143
+ "args": [
144
+ {
145
+ "name": "name",
146
+ "type": {
147
+ "option": "string"
148
+ }
149
+ },
150
+ {
151
+ "name": "description",
152
+ "type": {
153
+ "option": "string"
154
+ }
155
+ },
156
+ {
157
+ "name": "category",
158
+ "type": {
159
+ "option": "string"
160
+ }
161
+ },
162
+ {
163
+ "name": "capabilities",
164
+ "type": {
165
+ "option": {
166
+ "vec": "string"
167
+ }
168
+ }
169
+ },
170
+ {
171
+ "name": "metadata_uri",
172
+ "type": {
173
+ "option": "string"
174
+ }
175
+ }
176
+ ]
177
+ },
178
+ {
179
+ "name": "propose_authority",
180
+ "discriminator": [
181
+ 20,
182
+ 148,
183
+ 236,
184
+ 198,
185
+ 76,
186
+ 119,
187
+ 99,
188
+ 142
189
+ ],
190
+ "accounts": [
191
+ {
192
+ "name": "genesis",
193
+ "writable": true
194
+ },
195
+ {
196
+ "name": "authority",
197
+ "signer": true
198
+ }
199
+ ],
200
+ "args": [
201
+ {
202
+ "name": "new_authority",
203
+ "type": "pubkey"
204
+ }
205
+ ]
206
+ },
207
+ {
208
+ "name": "accept_authority",
209
+ "discriminator": [
210
+ 107,
211
+ 86,
212
+ 198,
213
+ 91,
214
+ 33,
215
+ 12,
216
+ 107,
217
+ 160
218
+ ],
219
+ "accounts": [
220
+ {
221
+ "name": "genesis",
222
+ "writable": true
223
+ },
224
+ {
225
+ "name": "new_authority",
226
+ "signer": true
227
+ }
228
+ ],
229
+ "args": []
230
+ },
231
+ {
232
+ "name": "cancel_authority_transfer",
233
+ "discriminator": [
234
+ 94,
235
+ 131,
236
+ 125,
237
+ 184,
238
+ 183,
239
+ 24,
240
+ 125,
241
+ 229
242
+ ],
243
+ "accounts": [
244
+ {
245
+ "name": "genesis",
246
+ "writable": true
247
+ },
248
+ {
249
+ "name": "authority",
250
+ "signer": true
251
+ }
252
+ ],
253
+ "args": []
254
+ },
255
+ {
256
+ "name": "link_wallet",
257
+ "discriminator": [
258
+ 86,
259
+ 92,
260
+ 31,
261
+ 146,
262
+ 228,
263
+ 51,
264
+ 209,
265
+ 230
266
+ ],
267
+ "accounts": [
268
+ {
269
+ "name": "genesis"
270
+ },
271
+ {
272
+ "name": "linked_wallet",
273
+ "writable": true
274
+ },
275
+ {
276
+ "name": "authority",
277
+ "writable": true,
278
+ "signer": true
279
+ },
280
+ {
281
+ "name": "system_program"
282
+ }
283
+ ],
284
+ "args": [
285
+ {
286
+ "name": "wallet",
287
+ "type": "pubkey"
288
+ },
289
+ {
290
+ "name": "chain",
291
+ "type": "string"
292
+ },
293
+ {
294
+ "name": "label",
295
+ "type": "string"
296
+ }
297
+ ]
298
+ },
299
+ {
300
+ "name": "unlink_wallet",
301
+ "discriminator": [
302
+ 220,
303
+ 121,
304
+ 97,
305
+ 13,
306
+ 193,
307
+ 137,
308
+ 209,
309
+ 159
310
+ ],
311
+ "accounts": [
312
+ {
313
+ "name": "genesis"
314
+ },
315
+ {
316
+ "name": "linked_wallet",
317
+ "writable": true
318
+ },
319
+ {
320
+ "name": "authority",
321
+ "signer": true
322
+ }
323
+ ],
324
+ "args": []
325
+ },
326
+ {
327
+ "name": "update_reputation",
328
+ "docs": [
329
+ "Update reputation score — CPI-only via authorized program PDA.",
330
+ "The caller_authority must be a PDA derived from an authorized program.",
331
+ "Direct wallet calls are rejected by verifying the caller is a PDA",
332
+ "(not on the ed25519 curve)."
333
+ ],
334
+ "discriminator": [
335
+ 194,
336
+ 220,
337
+ 43,
338
+ 201,
339
+ 54,
340
+ 209,
341
+ 49,
342
+ 178
343
+ ],
344
+ "accounts": [
345
+ {
346
+ "name": "genesis",
347
+ "writable": true
348
+ },
349
+ {
350
+ "name": "caller_authority",
351
+ "docs": [
352
+ "Caller must be a PDA signer — enforces CPI-only access.",
353
+ "The reputation program signs with its PDA [b\"reputation_v3_authority\"].",
354
+ "Direct wallet calls will fail because wallets can't sign as a PDA."
355
+ ],
356
+ "signer": true
357
+ }
358
+ ],
359
+ "args": [
360
+ {
361
+ "name": "score",
362
+ "type": "u64"
363
+ }
364
+ ]
365
+ },
366
+ {
367
+ "name": "update_verification",
368
+ "docs": [
369
+ "Update verification level — CPI-only via authorized program PDA."
370
+ ],
371
+ "discriminator": [
372
+ 81,
373
+ 184,
374
+ 217,
375
+ 235,
376
+ 163,
377
+ 170,
378
+ 228,
379
+ 38
380
+ ],
381
+ "accounts": [
382
+ {
383
+ "name": "genesis",
384
+ "writable": true
385
+ },
386
+ {
387
+ "name": "caller_authority",
388
+ "docs": [
389
+ "Caller must be a PDA signer — enforces CPI-only access.",
390
+ "The validation program signs with its PDA [b\"validation_v3_authority\"]."
391
+ ],
392
+ "signer": true
393
+ }
394
+ ],
395
+ "args": [
396
+ {
397
+ "name": "level",
398
+ "type": "u8"
399
+ }
400
+ ]
401
+ },
402
+ {
403
+ "name": "update_score_and_level",
404
+ "docs": [
405
+ "Update both score and level — CPI-only via attestations program PDA.",
406
+ "Called by attestations_v3::recompute_score after attestation changes.",
407
+ "Attestation-weighted score (0..1_000_000) and threshold-based level (0..5)."
408
+ ],
409
+ "discriminator": [
410
+ 208,
411
+ 80,
412
+ 207,
413
+ 58,
414
+ 167,
415
+ 27,
416
+ 205,
417
+ 107
418
+ ],
419
+ "accounts": [
420
+ {
421
+ "name": "genesis",
422
+ "writable": true
423
+ },
424
+ {
425
+ "name": "caller_authority",
426
+ "docs": [
427
+ "Caller must be the attestations program's PDA [b\"attestations_v3_authority\"]."
428
+ ],
429
+ "signer": true
430
+ }
431
+ ],
432
+ "args": [
433
+ {
434
+ "name": "score",
435
+ "type": "u64"
436
+ },
437
+ {
438
+ "name": "level",
439
+ "type": "u8"
440
+ }
441
+ ]
442
+ },
443
+ {
444
+ "name": "init_mint_tracker",
445
+ "discriminator": [
446
+ 176,
447
+ 203,
448
+ 116,
449
+ 40,
450
+ 206,
451
+ 205,
452
+ 156,
453
+ 145
454
+ ],
455
+ "accounts": [
456
+ {
457
+ "name": "genesis"
458
+ },
459
+ {
460
+ "name": "mint_tracker",
461
+ "writable": true
462
+ },
463
+ {
464
+ "name": "authority",
465
+ "writable": true,
466
+ "signer": true
467
+ },
468
+ {
469
+ "name": "system_program"
470
+ }
471
+ ],
472
+ "args": []
473
+ },
474
+ {
475
+ "name": "record_mint",
476
+ "discriminator": [
477
+ 162,
478
+ 92,
479
+ 105,
480
+ 126,
481
+ 18,
482
+ 1,
483
+ 158,
484
+ 242
485
+ ],
486
+ "accounts": [
487
+ {
488
+ "name": "genesis"
489
+ },
490
+ {
491
+ "name": "mint_tracker",
492
+ "writable": true
493
+ },
494
+ {
495
+ "name": "authority",
496
+ "signer": true
497
+ }
498
+ ],
499
+ "args": []
500
+ },
501
+ {
502
+ "name": "deactivate_identity",
503
+ "docs": [
504
+ "Deactivate an identity. Authority only.",
505
+ "Deactivated identities cannot perform actions",
506
+ "but remain on-chain for historical reference."
507
+ ],
508
+ "discriminator": [
509
+ 58,
510
+ 175,
511
+ 10,
512
+ 246,
513
+ 145,
514
+ 179,
515
+ 1,
516
+ 179
517
+ ],
518
+ "accounts": [
519
+ {
520
+ "name": "genesis",
521
+ "writable": true
522
+ },
523
+ {
524
+ "name": "authority",
525
+ "signer": true
526
+ }
527
+ ],
528
+ "args": []
529
+ },
530
+ {
531
+ "name": "reactivate_identity",
532
+ "docs": [
533
+ "Reactivate a previously deactivated identity."
534
+ ],
535
+ "discriminator": [
536
+ 200,
537
+ 24,
538
+ 123,
539
+ 17,
540
+ 93,
541
+ 88,
542
+ 85,
543
+ 23
544
+ ],
545
+ "accounts": [
546
+ {
547
+ "name": "genesis",
548
+ "writable": true
549
+ },
550
+ {
551
+ "name": "authority",
552
+ "signer": true
553
+ }
554
+ ],
555
+ "args": []
556
+ },
557
+ {
558
+ "name": "register_name",
559
+ "docs": [
560
+ "Register a unique name for an agent identity.",
561
+ "PDA seed: `[b\"name_registry\", name_hash]` where name_hash = SHA-256(lowercase(name))",
562
+ "Once claimed, no other identity can use the same name (case-insensitive)."
563
+ ],
564
+ "discriminator": [
565
+ 101,
566
+ 120,
567
+ 221,
568
+ 151,
569
+ 68,
570
+ 123,
571
+ 191,
572
+ 103
573
+ ],
574
+ "accounts": [
575
+ {
576
+ "name": "genesis",
577
+ "writable": true
578
+ },
579
+ {
580
+ "name": "name_registry",
581
+ "writable": true
582
+ },
583
+ {
584
+ "name": "authority",
585
+ "writable": true,
586
+ "signer": true
587
+ },
588
+ {
589
+ "name": "system_program"
590
+ }
591
+ ],
592
+ "args": [
593
+ {
594
+ "name": "name",
595
+ "type": "string"
596
+ },
597
+ {
598
+ "name": "name_hash",
599
+ "type": {
600
+ "array": [
601
+ "u8",
602
+ 32
603
+ ]
604
+ }
605
+ }
606
+ ]
607
+ },
608
+ {
609
+ "name": "release_name",
610
+ "docs": [
611
+ "Release a registered name. Authority only.",
612
+ "Frees the name for others to claim."
613
+ ],
614
+ "discriminator": [
615
+ 3,
616
+ 68,
617
+ 17,
618
+ 217,
619
+ 57,
620
+ 53,
621
+ 123,
622
+ 164
623
+ ],
624
+ "accounts": [
625
+ {
626
+ "name": "genesis"
627
+ },
628
+ {
629
+ "name": "name_registry",
630
+ "writable": true
631
+ },
632
+ {
633
+ "name": "authority",
634
+ "signer": true
635
+ }
636
+ ],
637
+ "args": []
638
+ },
639
+ {
640
+ "name": "migrate_v2_to_v3",
641
+ "docs": [
642
+ "Migrate a V2 identity to a V3 Genesis Record.",
643
+ "The V2 authority must sign to prove ownership.",
644
+ "Creates a new V3 PDA seeded by agent_id_hash.",
645
+ "V2 account is NOT closed (stays as historical reference).",
646
+ "",
647
+ "Caller must provide metadata fields since V2 → V3 field mapping",
648
+ "requires agent_id (which V2 doesn't store as a string)."
649
+ ],
650
+ "discriminator": [
651
+ 25,
652
+ 157,
653
+ 17,
654
+ 205,
655
+ 179,
656
+ 34,
657
+ 196,
658
+ 207
659
+ ],
660
+ "accounts": [
661
+ {
662
+ "name": "genesis",
663
+ "writable": true
664
+ },
665
+ {
666
+ "name": "v2_authority",
667
+ "docs": [
668
+ "V2 authority wallet — must sign to prove V2 identity ownership.",
669
+ "V2 identity account can be passed as remaining_accounts[0] for verification."
670
+ ],
671
+ "writable": true,
672
+ "signer": true
673
+ },
674
+ {
675
+ "name": "system_program"
676
+ }
677
+ ],
678
+ "args": [
679
+ {
680
+ "name": "agent_id_hash",
681
+ "type": {
682
+ "array": [
683
+ "u8",
684
+ 32
685
+ ]
686
+ }
687
+ },
688
+ {
689
+ "name": "name",
690
+ "type": "string"
691
+ },
692
+ {
693
+ "name": "description",
694
+ "type": "string"
695
+ },
696
+ {
697
+ "name": "category",
698
+ "type": "string"
699
+ },
700
+ {
701
+ "name": "capabilities",
702
+ "type": {
703
+ "vec": "string"
704
+ }
705
+ },
706
+ {
707
+ "name": "metadata_uri",
708
+ "type": "string"
709
+ }
710
+ ]
711
+ },
712
+ {
713
+ "name": "admin_set_born",
714
+ "docs": [
715
+ "Admin-only: set genesis_record (birth timestamp) for an agent.",
716
+ "Can only be called by the program's upgrade authority.",
717
+ "Used for agents who already have face data but genesis_record == 0.",
718
+ "Does NOT overwrite face fields — only sets genesis_record if currently 0."
719
+ ],
720
+ "discriminator": [
721
+ 150,
722
+ 145,
723
+ 121,
724
+ 204,
725
+ 30,
726
+ 129,
727
+ 182,
728
+ 99
729
+ ],
730
+ "accounts": [
731
+ {
732
+ "name": "genesis",
733
+ "writable": true
734
+ },
735
+ {
736
+ "name": "upgrade_authority",
737
+ "docs": [
738
+ "The upgrade authority of this program — must be signer"
739
+ ],
740
+ "signer": true
741
+ },
742
+ {
743
+ "name": "program",
744
+ "docs": [
745
+ "The executable identity_v3 program account."
746
+ ]
747
+ },
748
+ {
749
+ "name": "program_data",
750
+ "docs": [
751
+ "The program's programdata account — used to verify upgrade authority"
752
+ ]
753
+ }
754
+ ],
755
+ "args": []
756
+ },
757
+ {
758
+ "name": "admin_set_face",
759
+ "docs": [
760
+ "Admin-only: set face data on a born agent whose face fields are empty.",
761
+ "This fixes the V2→V3 migration gap where agents were born via admin_set_born",
762
+ "without carrying over face data from V2 records.",
763
+ "Guards:",
764
+ "- face_image must be currently empty (cannot overwrite existing face data)",
765
+ "- genesis_record must be > 0 (agent must be born)",
766
+ "- Only upgrade authority can call",
767
+ "Does NOT modify: authority, scores, genesis_record, is_active."
768
+ ],
769
+ "discriminator": [
770
+ 159,
771
+ 60,
772
+ 220,
773
+ 130,
774
+ 122,
775
+ 7,
776
+ 199,
777
+ 226
778
+ ],
779
+ "accounts": [
780
+ {
781
+ "name": "genesis",
782
+ "writable": true
783
+ },
784
+ {
785
+ "name": "upgrade_authority",
786
+ "docs": [
787
+ "The upgrade authority of this program — must be signer"
788
+ ],
789
+ "writable": true,
790
+ "signer": true
791
+ },
792
+ {
793
+ "name": "program",
794
+ "docs": [
795
+ "The executable identity_v3 program account."
796
+ ]
797
+ },
798
+ {
799
+ "name": "program_data",
800
+ "docs": [
801
+ "The program's programdata account — used to verify upgrade authority"
802
+ ]
803
+ },
804
+ {
805
+ "name": "system_program"
806
+ }
807
+ ],
808
+ "args": [
809
+ {
810
+ "name": "face_image",
811
+ "type": "string"
812
+ },
813
+ {
814
+ "name": "face_mint",
815
+ "type": "pubkey"
816
+ },
817
+ {
818
+ "name": "face_burn_tx",
819
+ "type": "string"
820
+ }
821
+ ]
822
+ },
823
+ {
824
+ "name": "admin_unbirth",
825
+ "docs": [
826
+ "Admin-only: reset an agent's birth status to unborn.",
827
+ "Sets genesis_record = 0 and clears face fields.",
828
+ "Used for agents who were incorrectly marked as born without going",
829
+ "through burn-to-become (e.g., admin_set_born used prematurely).",
830
+ "Guards:",
831
+ "- Only upgrade authority can call",
832
+ "- Face fields must be empty (no real burn-to-become happened)",
833
+ "- If face data exists, use a different fix — this prevents",
834
+ "accidentally unbirting agents who have real soulbound NFTs"
835
+ ],
836
+ "discriminator": [
837
+ 184,
838
+ 19,
839
+ 82,
840
+ 66,
841
+ 150,
842
+ 88,
843
+ 1,
844
+ 97
845
+ ],
846
+ "accounts": [
847
+ {
848
+ "name": "genesis",
849
+ "writable": true
850
+ },
851
+ {
852
+ "name": "upgrade_authority",
853
+ "signer": true
854
+ },
855
+ {
856
+ "name": "program",
857
+ "docs": [
858
+ "The executable identity_v3 program account."
859
+ ]
860
+ },
861
+ {
862
+ "name": "program_data"
863
+ }
864
+ ],
865
+ "args": []
866
+ },
867
+ {
868
+ "name": "admin_close_stale",
869
+ "docs": [
870
+ "Admin-only: close a stale/deactivated genesis account and reclaim rent.",
871
+ "Guards:",
872
+ "- Only upgrade authority can call",
873
+ "- Account must be owned by this program",
874
+ "- Account must NOT be the canonical active V3 record (size != 1384 OR is_active == false)",
875
+ "- For V3 accounts (1384 bytes): must have is_active == false",
876
+ "- For V2 accounts (1383 bytes or other): can be closed unconditionally (legacy)",
877
+ "Lamports are sent to the rent_recipient."
878
+ ],
879
+ "discriminator": [
880
+ 24,
881
+ 85,
882
+ 249,
883
+ 213,
884
+ 62,
885
+ 192,
886
+ 22,
887
+ 231
888
+ ],
889
+ "accounts": [
890
+ {
891
+ "name": "stale_account",
892
+ "docs": [
893
+ "The stale account to close. Must be owned by this program."
894
+ ],
895
+ "writable": true
896
+ },
897
+ {
898
+ "name": "rent_recipient",
899
+ "docs": [
900
+ "Receives the reclaimed lamports (typically the upgrade authority)"
901
+ ],
902
+ "writable": true
903
+ },
904
+ {
905
+ "name": "upgrade_authority",
906
+ "docs": [
907
+ "The upgrade authority of this program — must be signer"
908
+ ],
909
+ "signer": true
910
+ },
911
+ {
912
+ "name": "program",
913
+ "docs": [
914
+ "The executable identity_v3 program account."
915
+ ]
916
+ },
917
+ {
918
+ "name": "program_data",
919
+ "docs": [
920
+ "The program's programdata account — used to verify upgrade authority"
921
+ ]
922
+ }
923
+ ],
924
+ "args": []
925
+ },
926
+ {
927
+ "name": "admin_delete_identity",
928
+ "docs": [
929
+ "Admin-only: delete (close) any genesis record regardless of active status.",
930
+ "Use case: cleaning up test/spam registrations on-chain.",
931
+ "Unlike admin_close_stale, this does NOT require the account to be deactivated.",
932
+ "Guards:",
933
+ "- Only upgrade authority can call (verified via programdata)",
934
+ "- Account must be owned by this program",
935
+ "Emits: IdentityDeleted event"
936
+ ],
937
+ "discriminator": [
938
+ 212,
939
+ 226,
940
+ 85,
941
+ 160,
942
+ 183,
943
+ 57,
944
+ 116,
945
+ 145
946
+ ],
947
+ "accounts": [
948
+ {
949
+ "name": "target_account",
950
+ "docs": [
951
+ "The account to delete. Must be owned by this program."
952
+ ],
953
+ "writable": true
954
+ },
955
+ {
956
+ "name": "rent_recipient",
957
+ "docs": [
958
+ "Receives the reclaimed lamports"
959
+ ],
960
+ "writable": true
961
+ },
962
+ {
963
+ "name": "upgrade_authority",
964
+ "docs": [
965
+ "The upgrade authority of this program — must be signer"
966
+ ],
967
+ "signer": true
968
+ },
969
+ {
970
+ "name": "program",
971
+ "docs": [
972
+ "The executable identity_v3 program account."
973
+ ]
974
+ },
975
+ {
976
+ "name": "program_data",
977
+ "docs": [
978
+ "The program's programdata account — used to verify upgrade authority"
979
+ ]
980
+ }
981
+ ],
982
+ "args": []
983
+ },
984
+ {
985
+ "name": "admin_set_authority",
986
+ "docs": [
987
+ "Admin-only: force-set authority on a genesis record.",
988
+ "Use case: agent keypair is lost/inaccessible, cannot complete propose/accept flow.",
989
+ "Guards:",
990
+ "- Only upgrade authority can call",
991
+ "- Agent must be active",
992
+ "- Clears any pending_authority"
993
+ ],
994
+ "discriminator": [
995
+ 7,
996
+ 72,
997
+ 233,
998
+ 189,
999
+ 124,
1000
+ 10,
1001
+ 225,
1002
+ 76
1003
+ ],
1004
+ "accounts": [
1005
+ {
1006
+ "name": "genesis",
1007
+ "writable": true
1008
+ },
1009
+ {
1010
+ "name": "upgrade_authority",
1011
+ "docs": [
1012
+ "The upgrade authority of this program — must be signer"
1013
+ ],
1014
+ "signer": true
1015
+ },
1016
+ {
1017
+ "name": "program",
1018
+ "docs": [
1019
+ "The executable identity_v3 program account."
1020
+ ]
1021
+ },
1022
+ {
1023
+ "name": "program_data"
1024
+ }
1025
+ ],
1026
+ "args": [
1027
+ {
1028
+ "name": "new_authority",
1029
+ "type": "pubkey"
1030
+ }
1031
+ ]
1032
+ },
1033
+ {
1034
+ "name": "admin_set_score",
1035
+ "docs": [
1036
+ "Admin-only: directly set reputation score and verification level.",
1037
+ "Use case: correcting scores after recompute CPI set wrong values,",
1038
+ "or syncing on-chain state with authoritative DB values.",
1039
+ "Guards:",
1040
+ "- Only upgrade authority can call (verified via programdata)",
1041
+ "- Score must be 0..=1_000_000",
1042
+ "- Level must be 0..=5",
1043
+ "- Agent must be active",
1044
+ "Emits: ScoreSet event"
1045
+ ],
1046
+ "discriminator": [
1047
+ 9,
1048
+ 246,
1049
+ 158,
1050
+ 3,
1051
+ 55,
1052
+ 42,
1053
+ 5,
1054
+ 172
1055
+ ],
1056
+ "accounts": [
1057
+ {
1058
+ "name": "genesis",
1059
+ "writable": true
1060
+ },
1061
+ {
1062
+ "name": "upgrade_authority",
1063
+ "docs": [
1064
+ "The upgrade authority of this program — must be signer"
1065
+ ],
1066
+ "signer": true
1067
+ },
1068
+ {
1069
+ "name": "program",
1070
+ "docs": [
1071
+ "The executable identity_v3 program account."
1072
+ ]
1073
+ },
1074
+ {
1075
+ "name": "program_data"
1076
+ }
1077
+ ],
1078
+ "args": [
1079
+ {
1080
+ "name": "score",
1081
+ "type": "u64"
1082
+ },
1083
+ {
1084
+ "name": "level",
1085
+ "type": "u8"
1086
+ }
1087
+ ]
1088
+ }
1089
+ ],
1090
+ "accounts": [
1091
+ {
1092
+ "name": "identity_v3::GenesisRecord",
1093
+ "discriminator": [
1094
+ 22,
1095
+ 160,
1096
+ 245,
1097
+ 112,
1098
+ 178,
1099
+ 126,
1100
+ 177,
1101
+ 106
1102
+ ]
1103
+ },
1104
+ {
1105
+ "name": "identity_v3::LinkedWallet",
1106
+ "discriminator": [
1107
+ 43,
1108
+ 44,
1109
+ 217,
1110
+ 238,
1111
+ 93,
1112
+ 127,
1113
+ 166,
1114
+ 59
1115
+ ]
1116
+ },
1117
+ {
1118
+ "name": "identity_v3::MintTracker",
1119
+ "discriminator": [
1120
+ 217,
1121
+ 230,
1122
+ 22,
1123
+ 187,
1124
+ 250,
1125
+ 88,
1126
+ 11,
1127
+ 174
1128
+ ]
1129
+ },
1130
+ {
1131
+ "name": "identity_v3::NameRegistry",
1132
+ "discriminator": [
1133
+ 169,
1134
+ 63,
1135
+ 83,
1136
+ 240,
1137
+ 198,
1138
+ 158,
1139
+ 53,
1140
+ 11
1141
+ ]
1142
+ }
1143
+ ],
1144
+ "types": [
1145
+ {
1146
+ "name": "identity_v3::GenesisRecord",
1147
+ "type": {
1148
+ "kind": "struct",
1149
+ "fields": [
1150
+ {
1151
+ "name": "agent_id_hash",
1152
+ "type": {
1153
+ "array": [
1154
+ "u8",
1155
+ 32
1156
+ ]
1157
+ }
1158
+ },
1159
+ {
1160
+ "name": "agent_name",
1161
+ "type": "string"
1162
+ },
1163
+ {
1164
+ "name": "description",
1165
+ "type": "string"
1166
+ },
1167
+ {
1168
+ "name": "category",
1169
+ "type": "string"
1170
+ },
1171
+ {
1172
+ "name": "capabilities",
1173
+ "type": {
1174
+ "vec": "string"
1175
+ }
1176
+ },
1177
+ {
1178
+ "name": "metadata_uri",
1179
+ "type": "string"
1180
+ },
1181
+ {
1182
+ "name": "face_image",
1183
+ "type": "string"
1184
+ },
1185
+ {
1186
+ "name": "face_mint",
1187
+ "type": "pubkey"
1188
+ },
1189
+ {
1190
+ "name": "face_burn_tx",
1191
+ "type": "string"
1192
+ },
1193
+ {
1194
+ "name": "genesis_record",
1195
+ "type": "i64"
1196
+ },
1197
+ {
1198
+ "name": "is_active",
1199
+ "type": "bool"
1200
+ },
1201
+ {
1202
+ "name": "authority",
1203
+ "type": "pubkey"
1204
+ },
1205
+ {
1206
+ "name": "pending_authority",
1207
+ "type": {
1208
+ "option": "pubkey"
1209
+ }
1210
+ },
1211
+ {
1212
+ "name": "reputation_score",
1213
+ "type": "u64"
1214
+ },
1215
+ {
1216
+ "name": "verification_level",
1217
+ "type": "u8"
1218
+ },
1219
+ {
1220
+ "name": "reputation_updated_at",
1221
+ "type": "i64"
1222
+ },
1223
+ {
1224
+ "name": "verification_updated_at",
1225
+ "type": "i64"
1226
+ },
1227
+ {
1228
+ "name": "created_at",
1229
+ "type": "i64"
1230
+ },
1231
+ {
1232
+ "name": "updated_at",
1233
+ "type": "i64"
1234
+ },
1235
+ {
1236
+ "name": "bump",
1237
+ "type": "u8"
1238
+ }
1239
+ ]
1240
+ }
1241
+ },
1242
+ {
1243
+ "name": "identity_v3::LinkedWallet",
1244
+ "type": {
1245
+ "kind": "struct",
1246
+ "fields": [
1247
+ {
1248
+ "name": "identity",
1249
+ "type": "pubkey"
1250
+ },
1251
+ {
1252
+ "name": "wallet",
1253
+ "type": "pubkey"
1254
+ },
1255
+ {
1256
+ "name": "chain",
1257
+ "type": "string"
1258
+ },
1259
+ {
1260
+ "name": "label",
1261
+ "type": "string"
1262
+ },
1263
+ {
1264
+ "name": "verified_at",
1265
+ "type": "i64"
1266
+ },
1267
+ {
1268
+ "name": "is_active",
1269
+ "type": "bool"
1270
+ },
1271
+ {
1272
+ "name": "bump",
1273
+ "type": "u8"
1274
+ }
1275
+ ]
1276
+ }
1277
+ },
1278
+ {
1279
+ "name": "identity_v3::MintTracker",
1280
+ "type": {
1281
+ "kind": "struct",
1282
+ "fields": [
1283
+ {
1284
+ "name": "identity",
1285
+ "type": "pubkey"
1286
+ },
1287
+ {
1288
+ "name": "mint_count",
1289
+ "type": "u8"
1290
+ },
1291
+ {
1292
+ "name": "last_mint_timestamp",
1293
+ "type": "i64"
1294
+ },
1295
+ {
1296
+ "name": "bump",
1297
+ "type": "u8"
1298
+ }
1299
+ ]
1300
+ }
1301
+ },
1302
+ {
1303
+ "name": "identity_v3::NameRegistry",
1304
+ "type": {
1305
+ "kind": "struct",
1306
+ "fields": [
1307
+ {
1308
+ "name": "name",
1309
+ "type": "string"
1310
+ },
1311
+ {
1312
+ "name": "name_hash",
1313
+ "type": {
1314
+ "array": [
1315
+ "u8",
1316
+ 32
1317
+ ]
1318
+ }
1319
+ },
1320
+ {
1321
+ "name": "identity",
1322
+ "type": "pubkey"
1323
+ },
1324
+ {
1325
+ "name": "authority",
1326
+ "type": "pubkey"
1327
+ },
1328
+ {
1329
+ "name": "registered_at",
1330
+ "type": "i64"
1331
+ },
1332
+ {
1333
+ "name": "is_active",
1334
+ "type": "bool"
1335
+ },
1336
+ {
1337
+ "name": "bump",
1338
+ "type": "u8"
1339
+ }
1340
+ ]
1341
+ }
1342
+ }
1343
+ ]
1344
+ }