@deeeed/metamask-harness 0.80.0 → 0.82.0
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/CHANGELOG.md +43 -0
- package/adapters/manifest.json +48 -64
- package/adapters/{terminal → web-dapp}/cleanup.mjs +9 -9
- package/adapters/{terminal → web-dapp}/inject.mjs +14 -14
- package/adapters/{terminal → web-dapp}/launch.mjs +27 -24
- package/adapters/web-dapp/lib/blocked-hosts.mjs +24 -0
- package/adapters/{terminal → web-dapp}/lib/cdp-client.mjs +1 -1
- package/adapters/{terminal → web-dapp}/lib/display.mjs +1 -1
- package/adapters/{terminal → web-dapp}/lib/hud.mjs +1 -1
- package/adapters/web-dapp/lib/policy.mjs +79 -0
- package/adapters/{terminal → web-dapp}/lib/processes.mjs +8 -8
- package/adapters/{terminal → web-dapp}/lib/readiness.mjs +32 -34
- package/adapters/{terminal → web-dapp}/stop.mjs +5 -4
- package/adapters/{terminal → web-dapp}/verify.mjs +9 -6
- package/adapters/{terminal → web-dapp}/wallet-host.mjs +44 -227
- package/dist/adapters/core/actions.js +4 -1
- package/dist/adapters/extension/actions.js +6 -2
- package/dist/adapters/extension/network-observer.js +13 -0
- package/dist/adapters/extension/run.js +115 -31
- package/dist/adapters/mobile/actions.js +4 -1
- package/dist/adapters/mobile/network-observer.js +68 -0
- package/dist/adapters/mobile/performance-observer.js +1 -3
- package/dist/adapters/mobile/run.js +32 -9
- package/dist/adapters/perps-order-inputs.js +36 -0
- package/dist/adapters/plugin-surface.js +98 -0
- package/dist/adapters/proof-failure.js +11 -0
- package/dist/adapters/surface.js +1 -1
- package/dist/adapters/{terminal → web-dapp}/actions.js +11 -8
- package/dist/adapters/web-dapp/console-capture.js +63 -0
- package/dist/adapters/web-dapp/doctor-checks.js +33 -0
- package/dist/adapters/{terminal → web-dapp}/launch.js +21 -19
- package/dist/adapters/web-dapp/overlay.js +21 -0
- package/dist/adapters/web-dapp/readiness.js +10 -0
- package/dist/adapters/{terminal → web-dapp}/run.js +22 -17
- package/dist/adapters/{terminal → web-dapp}/stop.js +5 -4
- package/dist/adapters/web-dapp/surface.js +149 -0
- package/dist/adapters.js +20 -4
- package/dist/cli.js +34 -6
- package/dist/command-contract.js +29 -7
- package/dist/commands/check.js +32 -8
- package/dist/commands/completion-candidates.js +5 -5
- package/dist/commands/doctor.js +19 -2
- package/dist/commands/farmslot-ready.js +1 -0
- package/dist/commands/help.js +1 -1
- package/dist/commands/launch/device.js +5 -5
- package/dist/commands/self-test.js +10 -5
- package/dist/engine.js +47 -0
- package/dist/funding-execution-context.js +81 -0
- package/dist/manifest.js +48 -24
- package/dist/mm-harness-cli.js +20 -3
- package/dist/performance-observation.js +7 -15
- package/dist/recipe-assistance-context.js +6 -7
- package/dist/runner.js +28 -8
- package/docs/CONTRIBUTING.md +4 -2
- package/docs/RECIPES.md +31 -3
- package/docs/cli-contract.md +5 -3
- package/library/actions/core/perps/_controller.mjs +24 -28
- package/library/actions/core/perps/_rewards.mjs +186 -0
- package/library/actions/core/perps/close_positions.mjs +1 -1
- package/library/actions/core/perps/place_order.mjs +167 -45
- package/library/actions/core/perps/quote_fees.mjs +7 -4
- package/library/actions/core/wallet/list_accounts.mjs +1 -1
- package/library/actions/extension/perps/close_visible_position.mjs +5 -0
- package/library/actions/extension/perps/edit_margin.mjs +4 -0
- package/library/actions/extension/perps/mutation-receipt.mjs +95 -3
- package/library/actions/extension/perps/perps.mjs +320 -3
- package/library/actions/extension/perps/place_order.mjs +3 -1
- package/library/actions/extension/perps/update_position_tpsl.mjs +4 -0
- package/library/actions/extension/platform/cdp.mjs +71 -3
- package/library/actions/mobile/perps/perps.mjs +216 -11
- package/library/actions/mobile/perps/place_order.mjs +3 -1
- package/library/actions/shared/console-collector.mjs +1 -1
- package/library/actions/shared/perps/order-policy.mjs +177 -0
- package/library/actions/{core/wallet/_fixture-accounts.mjs → shared/wallet/fixture-accounts.mjs} +18 -3
- package/library/actions/{terminal → web-dapp}/app/assert_no_console_errors.mjs +4 -4
- package/library/actions/{terminal → web-dapp}/app/launch.mjs +8 -7
- package/library/actions/{terminal → web-dapp}/platform/hud.mjs +7 -6
- package/library/actions/{terminal → web-dapp}/platform/page.mjs +13 -12
- package/library/actions/{terminal → web-dapp}/platform/runtime.mjs +16 -12
- package/library/actions/web-dapp/ui/navigate.mjs +24 -0
- package/library/actions/web-dapp/wallet/_signature-log.mjs +32 -0
- package/library/actions/{terminal → web-dapp}/wallet/assert_signatures.mjs +8 -14
- package/library/actions/{terminal → web-dapp}/wallet/list_accounts.mjs +2 -2
- package/library/actions/web-dapp/wallet/read_signatures.mjs +38 -0
- package/library/manifests/core.action-manifest.json +6 -2
- package/library/manifests/extension.action-manifest.json +4 -0
- package/library/manifests/mobile.action-manifest.json +12 -0
- package/library/manifests/{terminal.action-manifest.json → web-dapp.action-manifest.json} +18 -702
- package/package.json +6 -6
- package/site/assets/help-recipes.json +1 -0
- package/adapters/terminal/lib/mainnet-guard.mjs +0 -177
- package/adapters/terminal/lib/origin.mjs +0 -30
- package/adapters/terminal/lib/page-script.mjs +0 -246
- package/adapters/terminal/lib/strict-wallet.mjs +0 -138
- package/dist/adapters/terminal/console-capture.js +0 -59
- package/dist/adapters/terminal/doctor-checks.js +0 -22
- package/dist/adapters/terminal/overlay.js +0 -18
- package/dist/adapters/terminal/readiness.js +0 -11
- package/dist/adapters/terminal/surface.js +0 -133
- package/dist/commands/call.js +0 -671
- package/dist/commands/list-executables.js +0 -245
- package/dist/commands/manifest.js +0 -477
- package/dist/commands/run-engine.js +0 -1301
- package/dist/commands/run.js +0 -730
- package/dist/discovery.js +0 -15
- package/dist/metamask-action-validation.js +0 -68
- package/dist/network-observation.js +0 -290
- package/library/actions/terminal/perps/_venue.mjs +0 -242
- package/library/actions/terminal/perps/assert_orders.mjs +0 -54
- package/library/actions/terminal/perps/assert_positions.mjs +0 -40
- package/library/actions/terminal/perps/read_orders.mjs +0 -26
- package/library/actions/terminal/perps/read_positions.mjs +0 -25
- package/library/actions/terminal/perps/read_snapshot.mjs +0 -40
- package/library/actions/terminal/perps/revoke_agent.mjs +0 -58
- package/library/actions/terminal/perps/teardown_state.mjs +0 -104
- package/library/actions/terminal/ui/navigate.mjs +0 -31
- package/library/actions/terminal/wallet/_signature-log.mjs +0 -177
- package/library/actions/terminal/wallet/read_signatures.mjs +0 -37
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
"$schema": "https://farmslot.io/schemas/action-manifest-v1.schema.json",
|
|
3
3
|
"actions": {
|
|
4
4
|
"app.status": {
|
|
5
|
-
"description": "Report the platform, checkout path and repository shape of the
|
|
5
|
+
"description": "Report the platform, checkout path and repository shape of the app checkout.",
|
|
6
6
|
"examples": [
|
|
7
7
|
{
|
|
8
8
|
"action": "app.status",
|
|
@@ -17,7 +17,7 @@
|
|
|
17
17
|
}
|
|
18
18
|
},
|
|
19
19
|
"app.hud": {
|
|
20
|
-
"description": "Display recipe progress in an overlay on the
|
|
20
|
+
"description": "Display recipe progress in an overlay on the app tab: recipe, step N/M, the current node intent and the last pass/fail. Never drawn in MetaMask's own pages; ignored by clicks and page text. --hud auto shows it only when the browser is headful.",
|
|
21
21
|
"examples": [
|
|
22
22
|
{
|
|
23
23
|
"action": "app.hud",
|
|
@@ -350,7 +350,7 @@
|
|
|
350
350
|
}
|
|
351
351
|
},
|
|
352
352
|
"end": {
|
|
353
|
-
"description": "Base
|
|
353
|
+
"description": "Base web-dapp action.",
|
|
354
354
|
"examples": [
|
|
355
355
|
{
|
|
356
356
|
"action": "end",
|
|
@@ -425,7 +425,7 @@
|
|
|
425
425
|
}
|
|
426
426
|
},
|
|
427
427
|
"metamask.app.launch": {
|
|
428
|
-
"description": "Explicit lifecycle step: start or reuse the
|
|
428
|
+
"description": "Explicit lifecycle step: start or reuse the slot browser with signer=extension (MetaMask extension with the fixture account imported) or signer=injected (strict test wallet), plus the wallet host that records wallet requests. fresh_profile forgets the stored agent key and dapp permission.",
|
|
429
429
|
"execution_capabilities": [
|
|
430
430
|
"app-mutation"
|
|
431
431
|
],
|
|
@@ -469,7 +469,7 @@
|
|
|
469
469
|
"mainnet"
|
|
470
470
|
],
|
|
471
471
|
"default": "testnet",
|
|
472
|
-
"description": "testnet requires the slot dev server to force
|
|
472
|
+
"description": "testnet requires the slot dev server to force the venue's testnet; mainnet requires mainnet_confirmation."
|
|
473
473
|
},
|
|
474
474
|
"mainnet_confirmation": {
|
|
475
475
|
"type": "string",
|
|
@@ -502,7 +502,7 @@
|
|
|
502
502
|
]
|
|
503
503
|
},
|
|
504
504
|
"metamask.app.assert_no_console_errors": {
|
|
505
|
-
"description": "Fail when the
|
|
505
|
+
"description": "Fail when the app page logged an error or uncaught exception since the slot browser's launch that no recipe-library console allowlist (diagnostics/console-allowlist.json) marks as known third-party noise. Reads the slot console capture; the same classification feeds run diagnostics. Fails as unavailable unless the slot's own console collector runs on the browser's CDP port and, for each capture file a requested source reads, a control line logged in its target (the app page; MetaMask for the extension source) reaches that file. Allowlist entries are exact signatures (schemaVersion 3).",
|
|
506
506
|
"execution_capabilities": [
|
|
507
507
|
"host-read-export"
|
|
508
508
|
],
|
|
@@ -519,7 +519,7 @@
|
|
|
519
519
|
"browser"
|
|
520
520
|
]
|
|
521
521
|
},
|
|
522
|
-
"description": "Default [\"page\",\"browser\"]: the
|
|
522
|
+
"description": "Default [\"page\",\"browser\"]: the app tab's console and its browser log entries."
|
|
523
523
|
},
|
|
524
524
|
"levels": {
|
|
525
525
|
"type": "array",
|
|
@@ -554,691 +554,7 @@
|
|
|
554
554
|
"examples": [
|
|
555
555
|
{
|
|
556
556
|
"action": "metamask.app.assert_no_console_errors",
|
|
557
|
-
"intent": "Prove the
|
|
558
|
-
"next": "done"
|
|
559
|
-
}
|
|
560
|
-
]
|
|
561
|
-
},
|
|
562
|
-
"metamask.perps.assert_orders": {
|
|
563
|
-
"description": "Assert presence, absence, count and fields (limit/trigger price, trigger type, reduce-only, size) of the selected venue open orders, polling up to timeout_ms.",
|
|
564
|
-
"execution_capabilities": [
|
|
565
|
-
"host-read-export"
|
|
566
|
-
],
|
|
567
|
-
"schema": {
|
|
568
|
-
"type": "object",
|
|
569
|
-
"properties": {
|
|
570
|
-
"market": {
|
|
571
|
-
"type": "string",
|
|
572
|
-
"description": "Single market symbol, e.g. ETH. Alias: symbol."
|
|
573
|
-
},
|
|
574
|
-
"symbol": {
|
|
575
|
-
"type": "string",
|
|
576
|
-
"description": "Alias for market."
|
|
577
|
-
},
|
|
578
|
-
"markets": {
|
|
579
|
-
"type": "array",
|
|
580
|
-
"items": {
|
|
581
|
-
"type": "string"
|
|
582
|
-
}
|
|
583
|
-
},
|
|
584
|
-
"symbols": {
|
|
585
|
-
"type": "array",
|
|
586
|
-
"items": {
|
|
587
|
-
"type": "string"
|
|
588
|
-
}
|
|
589
|
-
},
|
|
590
|
-
"mode": {
|
|
591
|
-
"type": "string",
|
|
592
|
-
"enum": [
|
|
593
|
-
"matching",
|
|
594
|
-
"all"
|
|
595
|
-
],
|
|
596
|
-
"description": "all selects every item; otherwise a market is required."
|
|
597
|
-
},
|
|
598
|
-
"side": {
|
|
599
|
-
"type": "string",
|
|
600
|
-
"enum": [
|
|
601
|
-
"long",
|
|
602
|
-
"short"
|
|
603
|
-
]
|
|
604
|
-
},
|
|
605
|
-
"order_kind": {
|
|
606
|
-
"type": "string",
|
|
607
|
-
"enum": [
|
|
608
|
-
"limit",
|
|
609
|
-
"trigger"
|
|
610
|
-
],
|
|
611
|
-
"description": "Only plain limit orders, or only trigger (TP/SL) orders."
|
|
612
|
-
},
|
|
613
|
-
"trigger_kind": {
|
|
614
|
-
"type": "string",
|
|
615
|
-
"enum": [
|
|
616
|
-
"take_profit",
|
|
617
|
-
"stop_loss"
|
|
618
|
-
]
|
|
619
|
-
},
|
|
620
|
-
"only_trigger_orders": {
|
|
621
|
-
"type": "boolean"
|
|
622
|
-
},
|
|
623
|
-
"order_ids": {
|
|
624
|
-
"type": "array",
|
|
625
|
-
"items": {
|
|
626
|
-
"type": [
|
|
627
|
-
"string",
|
|
628
|
-
"number"
|
|
629
|
-
]
|
|
630
|
-
},
|
|
631
|
-
"description": "Restrict to these venue order ids."
|
|
632
|
-
},
|
|
633
|
-
"state": {
|
|
634
|
-
"type": "string",
|
|
635
|
-
"enum": [
|
|
636
|
-
"none",
|
|
637
|
-
"absent",
|
|
638
|
-
"closed",
|
|
639
|
-
"open",
|
|
640
|
-
"present"
|
|
641
|
-
]
|
|
642
|
-
},
|
|
643
|
-
"account": {
|
|
644
|
-
"type": "string",
|
|
645
|
-
"description": "Wallet fixture account name (default: the running browser account, else dev1) or an EVM address for read-only use."
|
|
646
|
-
},
|
|
647
|
-
"account_name": {
|
|
648
|
-
"type": "string"
|
|
649
|
-
},
|
|
650
|
-
"network": {
|
|
651
|
-
"type": "string",
|
|
652
|
-
"enum": [
|
|
653
|
-
"testnet",
|
|
654
|
-
"mainnet"
|
|
655
|
-
],
|
|
656
|
-
"default": "testnet",
|
|
657
|
-
"description": "Hyperliquid network read from the public info API. Mutating actions refuse mainnet."
|
|
658
|
-
},
|
|
659
|
-
"timeout_ms": {
|
|
660
|
-
"type": "number"
|
|
661
|
-
},
|
|
662
|
-
"expect_count": {
|
|
663
|
-
"type": [
|
|
664
|
-
"string",
|
|
665
|
-
"number"
|
|
666
|
-
],
|
|
667
|
-
"description": "Exact number of matching items."
|
|
668
|
-
},
|
|
669
|
-
"expectCount": {
|
|
670
|
-
"type": [
|
|
671
|
-
"string",
|
|
672
|
-
"number"
|
|
673
|
-
],
|
|
674
|
-
"description": "Exact number of matching items."
|
|
675
|
-
},
|
|
676
|
-
"expect_limit_price": {
|
|
677
|
-
"type": [
|
|
678
|
-
"string",
|
|
679
|
-
"number"
|
|
680
|
-
],
|
|
681
|
-
"description": "Required limit price on every matching order."
|
|
682
|
-
},
|
|
683
|
-
"expect_trigger_price": {
|
|
684
|
-
"type": [
|
|
685
|
-
"string",
|
|
686
|
-
"number"
|
|
687
|
-
]
|
|
688
|
-
},
|
|
689
|
-
"expect_trigger_order_type": {
|
|
690
|
-
"type": "string",
|
|
691
|
-
"enum": [
|
|
692
|
-
"stop_market",
|
|
693
|
-
"stop_limit",
|
|
694
|
-
"take_profit_market",
|
|
695
|
-
"take_profit_limit"
|
|
696
|
-
]
|
|
697
|
-
},
|
|
698
|
-
"expect_reduce_only": {
|
|
699
|
-
"type": "boolean"
|
|
700
|
-
},
|
|
701
|
-
"expect_size": {
|
|
702
|
-
"type": [
|
|
703
|
-
"string",
|
|
704
|
-
"number"
|
|
705
|
-
]
|
|
706
|
-
},
|
|
707
|
-
"price_tolerance_pct": {
|
|
708
|
-
"type": "number",
|
|
709
|
-
"description": "Relative tolerance for price expectations (tick rounding); default exact."
|
|
710
|
-
}
|
|
711
|
-
},
|
|
712
|
-
"required": [
|
|
713
|
-
"state"
|
|
714
|
-
],
|
|
715
|
-
"additionalProperties": false
|
|
716
|
-
},
|
|
717
|
-
"examples": [
|
|
718
|
-
{
|
|
719
|
-
"action": "metamask.perps.assert_orders",
|
|
720
|
-
"market": "ETH",
|
|
721
|
-
"state": "open",
|
|
722
|
-
"expect_limit_price": "2000",
|
|
723
|
-
"intent": "Prove one resting ETH limit order at the placed price.",
|
|
724
|
-
"next": "done"
|
|
725
|
-
}
|
|
726
|
-
]
|
|
727
|
-
},
|
|
728
|
-
"metamask.perps.assert_positions": {
|
|
729
|
-
"description": "Assert presence, absence or exact count of the selected venue positions, polling up to timeout_ms.",
|
|
730
|
-
"execution_capabilities": [
|
|
731
|
-
"host-read-export"
|
|
732
|
-
],
|
|
733
|
-
"schema": {
|
|
734
|
-
"type": "object",
|
|
735
|
-
"properties": {
|
|
736
|
-
"market": {
|
|
737
|
-
"type": "string",
|
|
738
|
-
"description": "Single market symbol, e.g. ETH. Alias: symbol."
|
|
739
|
-
},
|
|
740
|
-
"symbol": {
|
|
741
|
-
"type": "string",
|
|
742
|
-
"description": "Alias for market."
|
|
743
|
-
},
|
|
744
|
-
"markets": {
|
|
745
|
-
"type": "array",
|
|
746
|
-
"items": {
|
|
747
|
-
"type": "string"
|
|
748
|
-
}
|
|
749
|
-
},
|
|
750
|
-
"symbols": {
|
|
751
|
-
"type": "array",
|
|
752
|
-
"items": {
|
|
753
|
-
"type": "string"
|
|
754
|
-
}
|
|
755
|
-
},
|
|
756
|
-
"mode": {
|
|
757
|
-
"type": "string",
|
|
758
|
-
"enum": [
|
|
759
|
-
"matching",
|
|
760
|
-
"all"
|
|
761
|
-
],
|
|
762
|
-
"description": "all selects every item; otherwise a market is required."
|
|
763
|
-
},
|
|
764
|
-
"side": {
|
|
765
|
-
"type": "string",
|
|
766
|
-
"enum": [
|
|
767
|
-
"long",
|
|
768
|
-
"short"
|
|
769
|
-
]
|
|
770
|
-
},
|
|
771
|
-
"state": {
|
|
772
|
-
"type": "string",
|
|
773
|
-
"enum": [
|
|
774
|
-
"none",
|
|
775
|
-
"absent",
|
|
776
|
-
"closed",
|
|
777
|
-
"open",
|
|
778
|
-
"present"
|
|
779
|
-
]
|
|
780
|
-
},
|
|
781
|
-
"account": {
|
|
782
|
-
"type": "string",
|
|
783
|
-
"description": "Wallet fixture account name (default: the running browser account, else dev1) or an EVM address for read-only use."
|
|
784
|
-
},
|
|
785
|
-
"account_name": {
|
|
786
|
-
"type": "string"
|
|
787
|
-
},
|
|
788
|
-
"network": {
|
|
789
|
-
"type": "string",
|
|
790
|
-
"enum": [
|
|
791
|
-
"testnet",
|
|
792
|
-
"mainnet"
|
|
793
|
-
],
|
|
794
|
-
"default": "testnet",
|
|
795
|
-
"description": "Hyperliquid network read from the public info API. Mutating actions refuse mainnet."
|
|
796
|
-
},
|
|
797
|
-
"timeout_ms": {
|
|
798
|
-
"type": "number"
|
|
799
|
-
},
|
|
800
|
-
"expect_count": {
|
|
801
|
-
"type": [
|
|
802
|
-
"string",
|
|
803
|
-
"number"
|
|
804
|
-
],
|
|
805
|
-
"description": "Exact number of matching items."
|
|
806
|
-
},
|
|
807
|
-
"expectCount": {
|
|
808
|
-
"type": [
|
|
809
|
-
"string",
|
|
810
|
-
"number"
|
|
811
|
-
],
|
|
812
|
-
"description": "Exact number of matching items."
|
|
813
|
-
}
|
|
814
|
-
},
|
|
815
|
-
"required": [
|
|
816
|
-
"state"
|
|
817
|
-
],
|
|
818
|
-
"additionalProperties": false
|
|
819
|
-
},
|
|
820
|
-
"examples": [
|
|
821
|
-
{
|
|
822
|
-
"action": "metamask.perps.assert_positions",
|
|
823
|
-
"market": "ETH",
|
|
824
|
-
"state": "open",
|
|
825
|
-
"timeout_ms": 30000,
|
|
826
|
-
"intent": "Independently prove the venue holds the ETH position.",
|
|
827
|
-
"next": "done"
|
|
828
|
-
}
|
|
829
|
-
]
|
|
830
|
-
},
|
|
831
|
-
"metamask.perps.read_orders": {
|
|
832
|
-
"description": "Read the fixture account Hyperliquid open orders for the selected markets from the venue info API (frontendOpenOrders).",
|
|
833
|
-
"execution_capabilities": [
|
|
834
|
-
"host-read-export"
|
|
835
|
-
],
|
|
836
|
-
"schema": {
|
|
837
|
-
"type": "object",
|
|
838
|
-
"properties": {
|
|
839
|
-
"market": {
|
|
840
|
-
"type": "string",
|
|
841
|
-
"description": "Single market symbol, e.g. ETH. Alias: symbol."
|
|
842
|
-
},
|
|
843
|
-
"symbol": {
|
|
844
|
-
"type": "string",
|
|
845
|
-
"description": "Alias for market."
|
|
846
|
-
},
|
|
847
|
-
"markets": {
|
|
848
|
-
"type": "array",
|
|
849
|
-
"items": {
|
|
850
|
-
"type": "string"
|
|
851
|
-
}
|
|
852
|
-
},
|
|
853
|
-
"symbols": {
|
|
854
|
-
"type": "array",
|
|
855
|
-
"items": {
|
|
856
|
-
"type": "string"
|
|
857
|
-
}
|
|
858
|
-
},
|
|
859
|
-
"mode": {
|
|
860
|
-
"type": "string",
|
|
861
|
-
"enum": [
|
|
862
|
-
"matching",
|
|
863
|
-
"all"
|
|
864
|
-
],
|
|
865
|
-
"description": "all selects every item; otherwise a market is required."
|
|
866
|
-
},
|
|
867
|
-
"side": {
|
|
868
|
-
"type": "string",
|
|
869
|
-
"enum": [
|
|
870
|
-
"long",
|
|
871
|
-
"short"
|
|
872
|
-
]
|
|
873
|
-
},
|
|
874
|
-
"order_kind": {
|
|
875
|
-
"type": "string",
|
|
876
|
-
"enum": [
|
|
877
|
-
"limit",
|
|
878
|
-
"trigger"
|
|
879
|
-
],
|
|
880
|
-
"description": "Only plain limit orders, or only trigger (TP/SL) orders."
|
|
881
|
-
},
|
|
882
|
-
"trigger_kind": {
|
|
883
|
-
"type": "string",
|
|
884
|
-
"enum": [
|
|
885
|
-
"take_profit",
|
|
886
|
-
"stop_loss"
|
|
887
|
-
]
|
|
888
|
-
},
|
|
889
|
-
"only_trigger_orders": {
|
|
890
|
-
"type": "boolean"
|
|
891
|
-
},
|
|
892
|
-
"order_ids": {
|
|
893
|
-
"type": "array",
|
|
894
|
-
"items": {
|
|
895
|
-
"type": [
|
|
896
|
-
"string",
|
|
897
|
-
"number"
|
|
898
|
-
]
|
|
899
|
-
},
|
|
900
|
-
"description": "Restrict to these venue order ids."
|
|
901
|
-
},
|
|
902
|
-
"account": {
|
|
903
|
-
"type": "string",
|
|
904
|
-
"description": "Wallet fixture account name (default: the running browser account, else dev1) or an EVM address for read-only use."
|
|
905
|
-
},
|
|
906
|
-
"account_name": {
|
|
907
|
-
"type": "string"
|
|
908
|
-
},
|
|
909
|
-
"network": {
|
|
910
|
-
"type": "string",
|
|
911
|
-
"enum": [
|
|
912
|
-
"testnet",
|
|
913
|
-
"mainnet"
|
|
914
|
-
],
|
|
915
|
-
"default": "testnet",
|
|
916
|
-
"description": "Hyperliquid network read from the public info API. Mutating actions refuse mainnet."
|
|
917
|
-
}
|
|
918
|
-
},
|
|
919
|
-
"additionalProperties": false
|
|
920
|
-
},
|
|
921
|
-
"examples": [
|
|
922
|
-
{
|
|
923
|
-
"action": "metamask.perps.read_orders",
|
|
924
|
-
"market": "ETH",
|
|
925
|
-
"intent": "Read the open ETH orders of the fixture account.",
|
|
926
|
-
"next": "done"
|
|
927
|
-
}
|
|
928
|
-
]
|
|
929
|
-
},
|
|
930
|
-
"metamask.perps.read_positions": {
|
|
931
|
-
"description": "Read the fixture account Hyperliquid positions for the selected markets from the venue info API (clearinghouseState).",
|
|
932
|
-
"execution_capabilities": [
|
|
933
|
-
"host-read-export"
|
|
934
|
-
],
|
|
935
|
-
"schema": {
|
|
936
|
-
"type": "object",
|
|
937
|
-
"properties": {
|
|
938
|
-
"market": {
|
|
939
|
-
"type": "string",
|
|
940
|
-
"description": "Single market symbol, e.g. ETH. Alias: symbol."
|
|
941
|
-
},
|
|
942
|
-
"symbol": {
|
|
943
|
-
"type": "string",
|
|
944
|
-
"description": "Alias for market."
|
|
945
|
-
},
|
|
946
|
-
"markets": {
|
|
947
|
-
"type": "array",
|
|
948
|
-
"items": {
|
|
949
|
-
"type": "string"
|
|
950
|
-
}
|
|
951
|
-
},
|
|
952
|
-
"symbols": {
|
|
953
|
-
"type": "array",
|
|
954
|
-
"items": {
|
|
955
|
-
"type": "string"
|
|
956
|
-
}
|
|
957
|
-
},
|
|
958
|
-
"mode": {
|
|
959
|
-
"type": "string",
|
|
960
|
-
"enum": [
|
|
961
|
-
"matching",
|
|
962
|
-
"all"
|
|
963
|
-
],
|
|
964
|
-
"description": "all selects every item; otherwise a market is required."
|
|
965
|
-
},
|
|
966
|
-
"side": {
|
|
967
|
-
"type": "string",
|
|
968
|
-
"enum": [
|
|
969
|
-
"long",
|
|
970
|
-
"short"
|
|
971
|
-
]
|
|
972
|
-
},
|
|
973
|
-
"account": {
|
|
974
|
-
"type": "string",
|
|
975
|
-
"description": "Wallet fixture account name (default: the running browser account, else dev1) or an EVM address for read-only use."
|
|
976
|
-
},
|
|
977
|
-
"account_name": {
|
|
978
|
-
"type": "string"
|
|
979
|
-
},
|
|
980
|
-
"network": {
|
|
981
|
-
"type": "string",
|
|
982
|
-
"enum": [
|
|
983
|
-
"testnet",
|
|
984
|
-
"mainnet"
|
|
985
|
-
],
|
|
986
|
-
"default": "testnet",
|
|
987
|
-
"description": "Hyperliquid network read from the public info API. Mutating actions refuse mainnet."
|
|
988
|
-
}
|
|
989
|
-
},
|
|
990
|
-
"additionalProperties": false
|
|
991
|
-
},
|
|
992
|
-
"examples": [
|
|
993
|
-
{
|
|
994
|
-
"action": "metamask.perps.read_positions",
|
|
995
|
-
"market": "ETH",
|
|
996
|
-
"intent": "Read the ETH position held by the fixture account.",
|
|
997
|
-
"next": "done"
|
|
998
|
-
}
|
|
999
|
-
]
|
|
1000
|
-
},
|
|
1001
|
-
"metamask.perps.read_snapshot": {
|
|
1002
|
-
"description": "Snapshot venue positions, open orders, approved agents and balances for the fixture account, optionally scoped to markets, for before/after comparison.",
|
|
1003
|
-
"execution_capabilities": [
|
|
1004
|
-
"host-read-export"
|
|
1005
|
-
],
|
|
1006
|
-
"schema": {
|
|
1007
|
-
"type": "object",
|
|
1008
|
-
"properties": {
|
|
1009
|
-
"market": {
|
|
1010
|
-
"type": "string",
|
|
1011
|
-
"description": "Single market symbol, e.g. ETH. Alias: symbol."
|
|
1012
|
-
},
|
|
1013
|
-
"symbol": {
|
|
1014
|
-
"type": "string",
|
|
1015
|
-
"description": "Alias for market."
|
|
1016
|
-
},
|
|
1017
|
-
"markets": {
|
|
1018
|
-
"type": "array",
|
|
1019
|
-
"items": {
|
|
1020
|
-
"type": "string"
|
|
1021
|
-
}
|
|
1022
|
-
},
|
|
1023
|
-
"symbols": {
|
|
1024
|
-
"type": "array",
|
|
1025
|
-
"items": {
|
|
1026
|
-
"type": "string"
|
|
1027
|
-
}
|
|
1028
|
-
},
|
|
1029
|
-
"mode": {
|
|
1030
|
-
"type": "string",
|
|
1031
|
-
"enum": [
|
|
1032
|
-
"matching",
|
|
1033
|
-
"all"
|
|
1034
|
-
],
|
|
1035
|
-
"description": "all selects every item; otherwise a market is required."
|
|
1036
|
-
},
|
|
1037
|
-
"side": {
|
|
1038
|
-
"type": "string",
|
|
1039
|
-
"enum": [
|
|
1040
|
-
"long",
|
|
1041
|
-
"short"
|
|
1042
|
-
]
|
|
1043
|
-
},
|
|
1044
|
-
"account": {
|
|
1045
|
-
"type": "string",
|
|
1046
|
-
"description": "Wallet fixture account name (default: the running browser account, else dev1) or an EVM address for read-only use."
|
|
1047
|
-
},
|
|
1048
|
-
"account_name": {
|
|
1049
|
-
"type": "string"
|
|
1050
|
-
},
|
|
1051
|
-
"network": {
|
|
1052
|
-
"type": "string",
|
|
1053
|
-
"enum": [
|
|
1054
|
-
"testnet",
|
|
1055
|
-
"mainnet"
|
|
1056
|
-
],
|
|
1057
|
-
"default": "testnet",
|
|
1058
|
-
"description": "Hyperliquid network read from the public info API. Mutating actions refuse mainnet."
|
|
1059
|
-
}
|
|
1060
|
-
},
|
|
1061
|
-
"additionalProperties": false
|
|
1062
|
-
},
|
|
1063
|
-
"examples": [
|
|
1064
|
-
{
|
|
1065
|
-
"action": "metamask.perps.read_snapshot",
|
|
1066
|
-
"market": "ETH",
|
|
1067
|
-
"intent": "Record the ETH venue state before the journey.",
|
|
1068
|
-
"next": "done"
|
|
1069
|
-
}
|
|
1070
|
-
]
|
|
1071
|
-
},
|
|
1072
|
-
"metamask.perps.revoke_agent": {
|
|
1073
|
-
"description": "Lifecycle step (testnet; mainnet only with mainnet_confirmation=REAL_FUNDS): revoke the Web Terminal Hyperliquid agent(s) (mm-terminal*) of the fixture account outside the UI (approveAgent to the zero address, user-signed in Node) and assert none remains, so the next UI write must request a fresh ApproveAgent.",
|
|
1074
|
-
"execution_capabilities": [
|
|
1075
|
-
"app-mutation",
|
|
1076
|
-
"external-mutation"
|
|
1077
|
-
],
|
|
1078
|
-
"schema": {
|
|
1079
|
-
"type": "object",
|
|
1080
|
-
"properties": {
|
|
1081
|
-
"account": {
|
|
1082
|
-
"type": "string",
|
|
1083
|
-
"description": "Wallet fixture account name (default: the running browser account, else dev1) or an EVM address for read-only use."
|
|
1084
|
-
},
|
|
1085
|
-
"account_name": {
|
|
1086
|
-
"type": "string"
|
|
1087
|
-
},
|
|
1088
|
-
"network": {
|
|
1089
|
-
"type": "string",
|
|
1090
|
-
"enum": [
|
|
1091
|
-
"testnet",
|
|
1092
|
-
"mainnet"
|
|
1093
|
-
],
|
|
1094
|
-
"default": "testnet",
|
|
1095
|
-
"description": "Hyperliquid network read from the public info API. Mutating actions refuse mainnet."
|
|
1096
|
-
},
|
|
1097
|
-
"agent_name": {
|
|
1098
|
-
"type": "string",
|
|
1099
|
-
"default": "mm-terminal"
|
|
1100
|
-
},
|
|
1101
|
-
"timeout_ms": {
|
|
1102
|
-
"type": "number"
|
|
1103
|
-
},
|
|
1104
|
-
"mainnet_confirmation": {
|
|
1105
|
-
"type": "string",
|
|
1106
|
-
"enum": [
|
|
1107
|
-
"REAL_FUNDS"
|
|
1108
|
-
],
|
|
1109
|
-
"description": "Required with network=mainnet: confirms a real-funds mutation."
|
|
1110
|
-
}
|
|
1111
|
-
},
|
|
1112
|
-
"additionalProperties": false
|
|
1113
|
-
},
|
|
1114
|
-
"examples": [
|
|
1115
|
-
{
|
|
1116
|
-
"action": "metamask.perps.revoke_agent",
|
|
1117
|
-
"network": "testnet",
|
|
1118
|
-
"intent": "Revoke the terminal agent so the next order needs re-approval.",
|
|
1119
|
-
"next": "done"
|
|
1120
|
-
}
|
|
1121
|
-
]
|
|
1122
|
-
},
|
|
1123
|
-
"metamask.perps.teardown_state": {
|
|
1124
|
-
"description": "Testnet cleanup of one reserved market: cancel its open orders (or only order_ids) and close its position with a reduce-only IOC order signed in Node by the fixture account, then assert none remain. Refuses mode=all; mainnet only with mainnet_confirmation=REAL_FUNDS. Never passes through the browser wallet.",
|
|
1125
|
-
"execution_capabilities": [
|
|
1126
|
-
"app-mutation",
|
|
1127
|
-
"external-mutation"
|
|
1128
|
-
],
|
|
1129
|
-
"schema": {
|
|
1130
|
-
"type": "object",
|
|
1131
|
-
"properties": {
|
|
1132
|
-
"market": {
|
|
1133
|
-
"type": "string",
|
|
1134
|
-
"description": "Single market symbol, e.g. ETH. Alias: symbol."
|
|
1135
|
-
},
|
|
1136
|
-
"symbol": {
|
|
1137
|
-
"type": "string",
|
|
1138
|
-
"description": "Alias for market."
|
|
1139
|
-
},
|
|
1140
|
-
"markets": {
|
|
1141
|
-
"type": "array",
|
|
1142
|
-
"items": {
|
|
1143
|
-
"type": "string"
|
|
1144
|
-
}
|
|
1145
|
-
},
|
|
1146
|
-
"symbols": {
|
|
1147
|
-
"type": "array",
|
|
1148
|
-
"items": {
|
|
1149
|
-
"type": "string"
|
|
1150
|
-
}
|
|
1151
|
-
},
|
|
1152
|
-
"side": {
|
|
1153
|
-
"type": "string",
|
|
1154
|
-
"enum": [
|
|
1155
|
-
"long",
|
|
1156
|
-
"short"
|
|
1157
|
-
]
|
|
1158
|
-
},
|
|
1159
|
-
"order_ids": {
|
|
1160
|
-
"type": "array",
|
|
1161
|
-
"items": {
|
|
1162
|
-
"type": [
|
|
1163
|
-
"string",
|
|
1164
|
-
"number"
|
|
1165
|
-
]
|
|
1166
|
-
},
|
|
1167
|
-
"description": "Restrict to these venue order ids."
|
|
1168
|
-
},
|
|
1169
|
-
"positions": {
|
|
1170
|
-
"type": "object",
|
|
1171
|
-
"properties": {
|
|
1172
|
-
"state": {
|
|
1173
|
-
"type": "string",
|
|
1174
|
-
"enum": [
|
|
1175
|
-
"none",
|
|
1176
|
-
"absent",
|
|
1177
|
-
"closed",
|
|
1178
|
-
"open",
|
|
1179
|
-
"present"
|
|
1180
|
-
]
|
|
1181
|
-
}
|
|
1182
|
-
},
|
|
1183
|
-
"additionalProperties": false
|
|
1184
|
-
},
|
|
1185
|
-
"orders": {
|
|
1186
|
-
"type": "object",
|
|
1187
|
-
"properties": {
|
|
1188
|
-
"state": {
|
|
1189
|
-
"type": "string",
|
|
1190
|
-
"enum": [
|
|
1191
|
-
"none",
|
|
1192
|
-
"absent",
|
|
1193
|
-
"closed",
|
|
1194
|
-
"open",
|
|
1195
|
-
"present"
|
|
1196
|
-
]
|
|
1197
|
-
}
|
|
1198
|
-
},
|
|
1199
|
-
"additionalProperties": false
|
|
1200
|
-
},
|
|
1201
|
-
"account": {
|
|
1202
|
-
"type": "string",
|
|
1203
|
-
"description": "Wallet fixture account name (default: the running browser account, else dev1) or an EVM address for read-only use."
|
|
1204
|
-
},
|
|
1205
|
-
"account_name": {
|
|
1206
|
-
"type": "string"
|
|
1207
|
-
},
|
|
1208
|
-
"network": {
|
|
1209
|
-
"type": "string",
|
|
1210
|
-
"enum": [
|
|
1211
|
-
"testnet",
|
|
1212
|
-
"mainnet"
|
|
1213
|
-
],
|
|
1214
|
-
"default": "testnet",
|
|
1215
|
-
"description": "Hyperliquid network read from the public info API. Mutating actions refuse mainnet."
|
|
1216
|
-
},
|
|
1217
|
-
"timeout_ms": {
|
|
1218
|
-
"type": "number"
|
|
1219
|
-
},
|
|
1220
|
-
"mainnet_confirmation": {
|
|
1221
|
-
"type": "string",
|
|
1222
|
-
"enum": [
|
|
1223
|
-
"REAL_FUNDS"
|
|
1224
|
-
],
|
|
1225
|
-
"description": "Required with network=mainnet: confirms a real-funds mutation."
|
|
1226
|
-
}
|
|
1227
|
-
},
|
|
1228
|
-
"additionalProperties": false
|
|
1229
|
-
},
|
|
1230
|
-
"examples": [
|
|
1231
|
-
{
|
|
1232
|
-
"action": "metamask.perps.teardown_state",
|
|
1233
|
-
"market": "ETH",
|
|
1234
|
-
"positions": {
|
|
1235
|
-
"state": "none"
|
|
1236
|
-
},
|
|
1237
|
-
"orders": {
|
|
1238
|
-
"state": "none"
|
|
1239
|
-
},
|
|
1240
|
-
"network": "testnet",
|
|
1241
|
-
"intent": "Restore the reserved ETH market to flat after success or failure.",
|
|
557
|
+
"intent": "Prove the app page logged no unexpected error during the journey",
|
|
1242
558
|
"next": "done"
|
|
1243
559
|
}
|
|
1244
560
|
]
|
|
@@ -1403,7 +719,7 @@
|
|
|
1403
719
|
"wallet"
|
|
1404
720
|
],
|
|
1405
721
|
"default": "app",
|
|
1406
|
-
"description": "app (default): the
|
|
722
|
+
"description": "app (default): the app tab. wallet: the MetaMask side panel / notification showing the pending dapp request (signer=extension only)."
|
|
1407
723
|
},
|
|
1408
724
|
"wallet_timeout_ms": {
|
|
1409
725
|
"type": "number",
|
|
@@ -1425,7 +741,7 @@
|
|
|
1425
741
|
]
|
|
1426
742
|
},
|
|
1427
743
|
"ui.navigate": {
|
|
1428
|
-
"description": "Navigate the
|
|
744
|
+
"description": "Navigate the app tab to an explicit app path, or a product page the venue names (the Terminal's order/<MARKET>, portfolio, home), on the slot dev server and wait for the document.",
|
|
1429
745
|
"schema": {
|
|
1430
746
|
"type": "object",
|
|
1431
747
|
"properties": {
|
|
@@ -1470,7 +786,7 @@
|
|
|
1470
786
|
]
|
|
1471
787
|
},
|
|
1472
788
|
"ui.press": {
|
|
1473
|
-
"description": "Press/tap/click a UI target on the
|
|
789
|
+
"description": "Press/tap/click a UI target on the app tab or the MetaMask wallet surface.",
|
|
1474
790
|
"examples": [
|
|
1475
791
|
{
|
|
1476
792
|
"action": "ui.press",
|
|
@@ -1510,7 +826,7 @@
|
|
|
1510
826
|
"wallet"
|
|
1511
827
|
],
|
|
1512
828
|
"default": "app",
|
|
1513
|
-
"description": "app (default): the
|
|
829
|
+
"description": "app (default): the app tab. wallet: the MetaMask side panel / notification showing the pending dapp request (signer=extension only)."
|
|
1514
830
|
},
|
|
1515
831
|
"wallet_timeout_ms": {
|
|
1516
832
|
"type": "number",
|
|
@@ -1552,7 +868,7 @@
|
|
|
1552
868
|
"wallet"
|
|
1553
869
|
],
|
|
1554
870
|
"default": "app",
|
|
1555
|
-
"description": "app (default): the
|
|
871
|
+
"description": "app (default): the app tab. wallet: the MetaMask side panel / notification showing the pending dapp request (signer=extension only)."
|
|
1556
872
|
},
|
|
1557
873
|
"wallet_timeout_ms": {
|
|
1558
874
|
"type": "number",
|
|
@@ -1628,7 +944,7 @@
|
|
|
1628
944
|
"wallet"
|
|
1629
945
|
],
|
|
1630
946
|
"default": "app",
|
|
1631
|
-
"description": "app (default): the
|
|
947
|
+
"description": "app (default): the app tab. wallet: the MetaMask side panel / notification showing the pending dapp request (signer=extension only)."
|
|
1632
948
|
},
|
|
1633
949
|
"wallet_timeout_ms": {
|
|
1634
950
|
"type": "number",
|
|
@@ -1639,7 +955,7 @@
|
|
|
1639
955
|
}
|
|
1640
956
|
},
|
|
1641
957
|
"ui.set_input": {
|
|
1642
|
-
"description": "Set text on the
|
|
958
|
+
"description": "Set text on the app tab or the MetaMask wallet surface.",
|
|
1643
959
|
"schema": {
|
|
1644
960
|
"type": "object",
|
|
1645
961
|
"properties": {
|
|
@@ -1675,7 +991,7 @@
|
|
|
1675
991
|
"wallet"
|
|
1676
992
|
],
|
|
1677
993
|
"default": "app",
|
|
1678
|
-
"description": "app (default): the
|
|
994
|
+
"description": "app (default): the app tab. wallet: the MetaMask side panel / notification showing the pending dapp request (signer=extension only)."
|
|
1679
995
|
},
|
|
1680
996
|
"wallet_timeout_ms": {
|
|
1681
997
|
"type": "number",
|
|
@@ -1695,7 +1011,7 @@
|
|
|
1695
1011
|
]
|
|
1696
1012
|
},
|
|
1697
1013
|
"ui.wait_for": {
|
|
1698
|
-
"description": "Wait for a UI condition on the
|
|
1014
|
+
"description": "Wait for a UI condition on the app tab or the MetaMask wallet surface.",
|
|
1699
1015
|
"schema": {
|
|
1700
1016
|
"type": "object",
|
|
1701
1017
|
"properties": {
|
|
@@ -1733,7 +1049,7 @@
|
|
|
1733
1049
|
"wallet"
|
|
1734
1050
|
],
|
|
1735
1051
|
"default": "app",
|
|
1736
|
-
"description": "app (default): the
|
|
1052
|
+
"description": "app (default): the app tab. wallet: the MetaMask side panel / notification showing the pending dapp request (signer=extension only)."
|
|
1737
1053
|
},
|
|
1738
1054
|
"wallet_timeout_ms": {
|
|
1739
1055
|
"type": "number",
|