pandora-cli-skills 1.1.131 → 1.1.133
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/README.md +4 -0
- package/benchmarks/latest/core-bundle.json +62 -33
- package/benchmarks/latest/core-history.json +32 -3
- package/benchmarks/latest/core-report.json +29 -29
- package/benchmarks/locks/core.lock.json +27 -27
- package/cli/lib/agent_contract_registry.cjs +6 -4
- package/cli/lib/bridge_command_service.cjs +12 -12
- package/cli/lib/doctor_service.cjs +1 -1
- package/cli/lib/mcp_tool_registry.cjs +2 -0
- package/cli/lib/mirror_handlers/status.cjs +2 -2
- package/cli/lib/mirror_handlers/sync.cjs +2 -2
- package/cli/lib/mirror_hedge_service.cjs +1 -0
- package/cli/lib/mirror_sync/execution.cjs +1 -0
- package/cli/lib/parsers/polymarket_flags.cjs +12 -0
- package/cli/lib/polymarket_adapter.cjs +3 -3
- package/cli/lib/polymarket_clob_client.cjs +53 -0
- package/cli/lib/polymarket_command_service.cjs +38 -5
- package/cli/lib/polymarket_ops_service.cjs +218 -59
- package/cli/lib/polymarket_trade_adapter.cjs +193 -47
- package/cli/lib/setup_wizard_service.cjs +1 -1
- package/cli/pandora.cjs +1 -1
- package/docs/benchmarks/history.json +32 -3
- package/docs/skills/capabilities.md +1 -1
- package/docs/skills/command-reference.md +5 -5
- package/docs/skills/mirror-operations.md +3 -3
- package/docs/skills/portfolio-closeout.md +1 -1
- package/docs/skills/setup-and-onboarding.md +3 -1
- package/package.json +2 -2
- package/scripts/.env.example +5 -1
- package/sdk/generated/command-descriptors.json +14 -4
- package/sdk/generated/contract-registry.json +94 -54
- package/sdk/generated/manifest.json +9 -9
- package/sdk/generated/mcp-tool-definitions.json +20 -10
- package/sdk/python/pandora_agent/generated/manifest.json +7 -7
- package/sdk/typescript/generated/manifest.json +7 -7
package/README.md
CHANGED
|
@@ -60,6 +60,10 @@ npx pandora setup --interactive --goal live-mirror
|
|
|
60
60
|
|
|
61
61
|
Use `setup --interactive` when you want Pandora to walk you through private key management, Polymarket initialization, optional hosting inputs, and provider setup. Use `setup` without `--interactive` when you want the manual `init-env` plus `doctor` flow instead.
|
|
62
62
|
|
|
63
|
+
### Polymarket V2 Migration
|
|
64
|
+
|
|
65
|
+
Polymarket upgrades its exchange on April 28, 2026 around 11:00 UTC. During that window, live CLOB trading can pause for about an hour and open Polymarket orders are cleared. Pandora live hedge/trade operators should use the V2 CLOB client, pUSD collateral, and fresh post-cutover position reads before resuming live execution.
|
|
66
|
+
|
|
63
67
|
## Start Here
|
|
64
68
|
|
|
65
69
|
If you want the main documentation map, use these jump points:
|
|
@@ -1,18 +1,18 @@
|
|
|
1
1
|
{
|
|
2
2
|
"schemaVersion": "1.0.0",
|
|
3
3
|
"suite": "core",
|
|
4
|
-
"generatedAt": "2026-04-
|
|
4
|
+
"generatedAt": "2026-04-27T20:12:44.535Z",
|
|
5
5
|
"package": {
|
|
6
6
|
"name": "pandora-cli-skills",
|
|
7
|
-
"version": "1.1.
|
|
7
|
+
"version": "1.1.133"
|
|
8
8
|
},
|
|
9
9
|
"assets": {
|
|
10
10
|
"reportPath": "benchmarks/latest/core-report.json",
|
|
11
11
|
"lockPath": "benchmarks/locks/core.lock.json",
|
|
12
12
|
"historyPath": "benchmarks/latest/core-history.json",
|
|
13
13
|
"docsHistoryPath": "docs/benchmarks/history.json",
|
|
14
|
-
"reportSha256": "
|
|
15
|
-
"lockSha256": "
|
|
14
|
+
"reportSha256": "de8872902260f5029bab69d9a3903e386626c5b51be2db270f3bac77cdc77bf1",
|
|
15
|
+
"lockSha256": "9fa111db2b85af303243771847f699aabbb7d124a0e75be36a74ee2b651daca0"
|
|
16
16
|
},
|
|
17
17
|
"latest": {
|
|
18
18
|
"summary": {
|
|
@@ -144,68 +144,97 @@
|
|
|
144
144
|
]
|
|
145
145
|
},
|
|
146
146
|
"runtime": {
|
|
147
|
-
"packageVersion": "1.1.
|
|
147
|
+
"packageVersion": "1.1.133"
|
|
148
148
|
},
|
|
149
149
|
"contractLock": {
|
|
150
|
-
"capabilitiesLocalHash": "
|
|
151
|
-
"capabilitiesRemoteTemplateHash": "
|
|
150
|
+
"capabilitiesLocalHash": "c2307642826813c448dc93088c6a88563da76da4f7926497b4bd4ce40f06c4e5",
|
|
151
|
+
"capabilitiesRemoteTemplateHash": "11941da2e31d704f495ed7d36b32003226947f59cd03a71ee72575730c6a1162",
|
|
152
152
|
"commandDescriptorVersion": "1.4.3",
|
|
153
|
-
"documentationContentHash": "
|
|
154
|
-
"documentationRegistryHash": "
|
|
153
|
+
"documentationContentHash": "2fc357504b44835e6f8804d7bab61069defa6ecc21c39c22e1a0aaad32cf7026",
|
|
154
|
+
"documentationRegistryHash": "b615e3b04fdb94d643843322ac715b2b79bc0e47d328a69359143b9ee3f6790d",
|
|
155
155
|
"generatedArtifactHashes": {
|
|
156
|
-
"generatedCommandDescriptors": "
|
|
157
|
-
"generatedContractRegistry": "
|
|
158
|
-
"generatedManifest": "
|
|
159
|
-
"generatedMcpToolDefinitions": "
|
|
160
|
-
"pyCommandDescriptors": "
|
|
161
|
-
"pyContractRegistry": "
|
|
162
|
-
"pyManifest": "
|
|
163
|
-
"pyMcpToolDefinitions": "
|
|
164
|
-
"tsCommandDescriptors": "
|
|
165
|
-
"tsContractRegistry": "
|
|
166
|
-
"tsManifest": "
|
|
167
|
-
"tsMcpToolDefinitions": "
|
|
156
|
+
"generatedCommandDescriptors": "b28268d6cb3143018f7dc328be8faf7d8efbb14a78f8e4df0158d7f331a1ce08",
|
|
157
|
+
"generatedContractRegistry": "4f7ac505b2f77b46a145c065ced3b44b6418c2122df8cff423c5f9165d253adf",
|
|
158
|
+
"generatedManifest": "f2fa1210d0735f36833214c5879db91e05dcc986c87cbff77ab834b2ecb4250b",
|
|
159
|
+
"generatedMcpToolDefinitions": "fc278481cbde0042739ce56902905679f3c2c05be6ac61bfe6064d6d35f3a567",
|
|
160
|
+
"pyCommandDescriptors": "b28268d6cb3143018f7dc328be8faf7d8efbb14a78f8e4df0158d7f331a1ce08",
|
|
161
|
+
"pyContractRegistry": "4f7ac505b2f77b46a145c065ced3b44b6418c2122df8cff423c5f9165d253adf",
|
|
162
|
+
"pyManifest": "cb181e1ca42981c1886f2f1619103712646d78562194a10812fc8cf22d09c39d",
|
|
163
|
+
"pyMcpToolDefinitions": "fc278481cbde0042739ce56902905679f3c2c05be6ac61bfe6064d6d35f3a567",
|
|
164
|
+
"tsCommandDescriptors": "b28268d6cb3143018f7dc328be8faf7d8efbb14a78f8e4df0158d7f331a1ce08",
|
|
165
|
+
"tsContractRegistry": "4f7ac505b2f77b46a145c065ced3b44b6418c2122df8cff423c5f9165d253adf",
|
|
166
|
+
"tsManifest": "343d9c3212e655461879ac425c4cf43f29a0c24ed7f5aeab95a8f47c84e918b0",
|
|
167
|
+
"tsMcpToolDefinitions": "fc278481cbde0042739ce56902905679f3c2c05be6ac61bfe6064d6d35f3a567"
|
|
168
168
|
},
|
|
169
169
|
"generatedManifestCommandDescriptorVersion": "1.4.3",
|
|
170
170
|
"generatedManifestPackageVersion": "0.1.0-alpha.21",
|
|
171
171
|
"generatedManifestRegistryDigest": {
|
|
172
172
|
"canonicalHash": "cce2ede8f658d43e0807f7f194e28fc356085e00fc70d99d27ecbd674be14a9f",
|
|
173
173
|
"commandDigestHash": "85f685455fdf85b757674a3086eb03354a628f22ada1a25afee0fd86b14b92c7",
|
|
174
|
-
"descriptorHash": "
|
|
175
|
-
"documentationHash": "
|
|
176
|
-
"fullDescriptorHash": "
|
|
174
|
+
"descriptorHash": "15fe2168500a4418920f621b32998e3ebb29517f7d76bf3295dae424ba6dcd2d",
|
|
175
|
+
"documentationHash": "b615e3b04fdb94d643843322ac715b2b79bc0e47d328a69359143b9ee3f6790d",
|
|
176
|
+
"fullDescriptorHash": "beec758a172fc913e22b36d197a222ea2e17c12203abb1c81c48659099806d87",
|
|
177
177
|
"namespaceHash": "cd39afc4f4e8b76473a4768c07d979c44e0421973786c54e12bb6d7888f5952a",
|
|
178
178
|
"policyProfilesHash": "9fb054a4f29be73c2ebf33f643bc17d904b2872dd8e7d564a690db828071a7ce",
|
|
179
179
|
"principalTemplatesHash": "525835bb3c4710fa326e662e8a961e74de1798f4fb1bccb2a00be557ed037740",
|
|
180
180
|
"routedTopLevelHash": "02e98ac94f1eadbeded065bef652f8a917f108a8a08726ad7163503cc1b3384d",
|
|
181
181
|
"topLevelHash": "04e58344eaec2c14dfa336b13eff952a584c7c5355d90775c3bc8336ab0752ee",
|
|
182
|
-
"trustDistributionHash": "
|
|
182
|
+
"trustDistributionHash": "4453b3198e2041b96369107ce6a082e318b66900123a5b5d8eb06f4c85d1c072"
|
|
183
183
|
},
|
|
184
184
|
"generatedManifestVersion": "1.0.0",
|
|
185
185
|
"registryDigest": {
|
|
186
186
|
"canonicalHash": "cce2ede8f658d43e0807f7f194e28fc356085e00fc70d99d27ecbd674be14a9f",
|
|
187
187
|
"commandDigestHash": "85f685455fdf85b757674a3086eb03354a628f22ada1a25afee0fd86b14b92c7",
|
|
188
|
-
"descriptorHash": "
|
|
189
|
-
"documentationHash": "
|
|
190
|
-
"fullDescriptorHash": "
|
|
188
|
+
"descriptorHash": "15fe2168500a4418920f621b32998e3ebb29517f7d76bf3295dae424ba6dcd2d",
|
|
189
|
+
"documentationHash": "b615e3b04fdb94d643843322ac715b2b79bc0e47d328a69359143b9ee3f6790d",
|
|
190
|
+
"fullDescriptorHash": "beec758a172fc913e22b36d197a222ea2e17c12203abb1c81c48659099806d87",
|
|
191
191
|
"namespaceHash": "cd39afc4f4e8b76473a4768c07d979c44e0421973786c54e12bb6d7888f5952a",
|
|
192
192
|
"policyProfilesHash": "9fb054a4f29be73c2ebf33f643bc17d904b2872dd8e7d564a690db828071a7ce",
|
|
193
193
|
"principalTemplatesHash": "525835bb3c4710fa326e662e8a961e74de1798f4fb1bccb2a00be557ed037740",
|
|
194
194
|
"routedTopLevelHash": "02e98ac94f1eadbeded065bef652f8a917f108a8a08726ad7163503cc1b3384d",
|
|
195
195
|
"topLevelHash": "04e58344eaec2c14dfa336b13eff952a584c7c5355d90775c3bc8336ab0752ee",
|
|
196
|
-
"trustDistributionHash": "
|
|
196
|
+
"trustDistributionHash": "4453b3198e2041b96369107ce6a082e318b66900123a5b5d8eb06f4c85d1c072"
|
|
197
197
|
},
|
|
198
|
-
"schemaHash": "
|
|
198
|
+
"schemaHash": "123a5263e08005cbfaf1c089eb35c942b9b28a96c249a318c3d94023e35f0bfd"
|
|
199
199
|
},
|
|
200
200
|
"contractLockMatchesExpected": true
|
|
201
201
|
},
|
|
202
202
|
"history": {
|
|
203
203
|
"schemaVersion": "1.0.0",
|
|
204
204
|
"suite": "core",
|
|
205
|
-
"generatedAt": "2026-04-
|
|
206
|
-
"latestVersion": "1.1.
|
|
207
|
-
"latestGeneratedAt": "2026-04-
|
|
205
|
+
"generatedAt": "2026-04-27T20:12:44.535Z",
|
|
206
|
+
"latestVersion": "1.1.133",
|
|
207
|
+
"latestGeneratedAt": "2026-04-27T20:12:44.535Z",
|
|
208
208
|
"entries": [
|
|
209
|
+
{
|
|
210
|
+
"schemaVersion": "1.0.0",
|
|
211
|
+
"suite": "core",
|
|
212
|
+
"packageName": "pandora-cli-skills",
|
|
213
|
+
"version": "1.1.133",
|
|
214
|
+
"packageVersion": "1.1.133",
|
|
215
|
+
"generatedAt": "2026-04-27T20:12:44.535Z",
|
|
216
|
+
"summary": {
|
|
217
|
+
"weightedScore": 100,
|
|
218
|
+
"overallPass": true,
|
|
219
|
+
"scenarioCount": 19,
|
|
220
|
+
"passedCount": 19,
|
|
221
|
+
"failedCount": 0,
|
|
222
|
+
"failedParityGroupCount": 0
|
|
223
|
+
},
|
|
224
|
+
"weightedScore": 100,
|
|
225
|
+
"overallPass": true,
|
|
226
|
+
"scenarioCount": 19,
|
|
227
|
+
"passedCount": 19,
|
|
228
|
+
"failedCount": 0,
|
|
229
|
+
"failedParityGroupCount": 0,
|
|
230
|
+
"contractLockMatchesExpected": true,
|
|
231
|
+
"parityFailedGroups": [],
|
|
232
|
+
"descriptorHash": "15fe2168500a4418920f621b32998e3ebb29517f7d76bf3295dae424ba6dcd2d",
|
|
233
|
+
"documentationContentHash": "2fc357504b44835e6f8804d7bab61069defa6ecc21c39c22e1a0aaad32cf7026",
|
|
234
|
+
"reportSha256": "de8872902260f5029bab69d9a3903e386626c5b51be2db270f3bac77cdc77bf1",
|
|
235
|
+
"lockSha256": "9fa111db2b85af303243771847f699aabbb7d124a0e75be36a74ee2b651daca0",
|
|
236
|
+
"lockSchemaVersion": "1.0.0"
|
|
237
|
+
},
|
|
209
238
|
{
|
|
210
239
|
"schemaVersion": "1.0.0",
|
|
211
240
|
"suite": "core",
|
|
@@ -1,10 +1,39 @@
|
|
|
1
1
|
{
|
|
2
2
|
"schemaVersion": "1.0.0",
|
|
3
3
|
"suite": "core",
|
|
4
|
-
"generatedAt": "2026-04-
|
|
5
|
-
"latestVersion": "1.1.
|
|
6
|
-
"latestGeneratedAt": "2026-04-
|
|
4
|
+
"generatedAt": "2026-04-27T20:12:44.535Z",
|
|
5
|
+
"latestVersion": "1.1.133",
|
|
6
|
+
"latestGeneratedAt": "2026-04-27T20:12:44.535Z",
|
|
7
7
|
"entries": [
|
|
8
|
+
{
|
|
9
|
+
"schemaVersion": "1.0.0",
|
|
10
|
+
"suite": "core",
|
|
11
|
+
"packageName": "pandora-cli-skills",
|
|
12
|
+
"version": "1.1.133",
|
|
13
|
+
"packageVersion": "1.1.133",
|
|
14
|
+
"generatedAt": "2026-04-27T20:12:44.535Z",
|
|
15
|
+
"summary": {
|
|
16
|
+
"weightedScore": 100,
|
|
17
|
+
"overallPass": true,
|
|
18
|
+
"scenarioCount": 19,
|
|
19
|
+
"passedCount": 19,
|
|
20
|
+
"failedCount": 0,
|
|
21
|
+
"failedParityGroupCount": 0
|
|
22
|
+
},
|
|
23
|
+
"weightedScore": 100,
|
|
24
|
+
"overallPass": true,
|
|
25
|
+
"scenarioCount": 19,
|
|
26
|
+
"passedCount": 19,
|
|
27
|
+
"failedCount": 0,
|
|
28
|
+
"failedParityGroupCount": 0,
|
|
29
|
+
"contractLockMatchesExpected": true,
|
|
30
|
+
"parityFailedGroups": [],
|
|
31
|
+
"descriptorHash": "15fe2168500a4418920f621b32998e3ebb29517f7d76bf3295dae424ba6dcd2d",
|
|
32
|
+
"documentationContentHash": "2fc357504b44835e6f8804d7bab61069defa6ecc21c39c22e1a0aaad32cf7026",
|
|
33
|
+
"reportSha256": "de8872902260f5029bab69d9a3903e386626c5b51be2db270f3bac77cdc77bf1",
|
|
34
|
+
"lockSha256": "9fa111db2b85af303243771847f699aabbb7d124a0e75be36a74ee2b651daca0",
|
|
35
|
+
"lockSchemaVersion": "1.0.0"
|
|
36
|
+
},
|
|
8
37
|
{
|
|
9
38
|
"schemaVersion": "1.0.0",
|
|
10
39
|
"suite": "core",
|
|
@@ -1,54 +1,54 @@
|
|
|
1
1
|
{
|
|
2
2
|
"contractLock": {
|
|
3
|
-
"capabilitiesLocalHash": "
|
|
4
|
-
"capabilitiesRemoteTemplateHash": "
|
|
3
|
+
"capabilitiesLocalHash": "c2307642826813c448dc93088c6a88563da76da4f7926497b4bd4ce40f06c4e5",
|
|
4
|
+
"capabilitiesRemoteTemplateHash": "11941da2e31d704f495ed7d36b32003226947f59cd03a71ee72575730c6a1162",
|
|
5
5
|
"commandDescriptorVersion": "1.4.3",
|
|
6
|
-
"documentationContentHash": "
|
|
7
|
-
"documentationRegistryHash": "
|
|
6
|
+
"documentationContentHash": "2fc357504b44835e6f8804d7bab61069defa6ecc21c39c22e1a0aaad32cf7026",
|
|
7
|
+
"documentationRegistryHash": "b615e3b04fdb94d643843322ac715b2b79bc0e47d328a69359143b9ee3f6790d",
|
|
8
8
|
"generatedArtifactHashes": {
|
|
9
|
-
"generatedCommandDescriptors": "
|
|
10
|
-
"generatedContractRegistry": "
|
|
11
|
-
"generatedManifest": "
|
|
12
|
-
"generatedMcpToolDefinitions": "
|
|
13
|
-
"pyCommandDescriptors": "
|
|
14
|
-
"pyContractRegistry": "
|
|
15
|
-
"pyManifest": "
|
|
16
|
-
"pyMcpToolDefinitions": "
|
|
17
|
-
"tsCommandDescriptors": "
|
|
18
|
-
"tsContractRegistry": "
|
|
19
|
-
"tsManifest": "
|
|
20
|
-
"tsMcpToolDefinitions": "
|
|
9
|
+
"generatedCommandDescriptors": "b28268d6cb3143018f7dc328be8faf7d8efbb14a78f8e4df0158d7f331a1ce08",
|
|
10
|
+
"generatedContractRegistry": "4f7ac505b2f77b46a145c065ced3b44b6418c2122df8cff423c5f9165d253adf",
|
|
11
|
+
"generatedManifest": "f2fa1210d0735f36833214c5879db91e05dcc986c87cbff77ab834b2ecb4250b",
|
|
12
|
+
"generatedMcpToolDefinitions": "fc278481cbde0042739ce56902905679f3c2c05be6ac61bfe6064d6d35f3a567",
|
|
13
|
+
"pyCommandDescriptors": "b28268d6cb3143018f7dc328be8faf7d8efbb14a78f8e4df0158d7f331a1ce08",
|
|
14
|
+
"pyContractRegistry": "4f7ac505b2f77b46a145c065ced3b44b6418c2122df8cff423c5f9165d253adf",
|
|
15
|
+
"pyManifest": "cb181e1ca42981c1886f2f1619103712646d78562194a10812fc8cf22d09c39d",
|
|
16
|
+
"pyMcpToolDefinitions": "fc278481cbde0042739ce56902905679f3c2c05be6ac61bfe6064d6d35f3a567",
|
|
17
|
+
"tsCommandDescriptors": "b28268d6cb3143018f7dc328be8faf7d8efbb14a78f8e4df0158d7f331a1ce08",
|
|
18
|
+
"tsContractRegistry": "4f7ac505b2f77b46a145c065ced3b44b6418c2122df8cff423c5f9165d253adf",
|
|
19
|
+
"tsManifest": "343d9c3212e655461879ac425c4cf43f29a0c24ed7f5aeab95a8f47c84e918b0",
|
|
20
|
+
"tsMcpToolDefinitions": "fc278481cbde0042739ce56902905679f3c2c05be6ac61bfe6064d6d35f3a567"
|
|
21
21
|
},
|
|
22
22
|
"generatedManifestCommandDescriptorVersion": "1.4.3",
|
|
23
23
|
"generatedManifestPackageVersion": "0.1.0-alpha.21",
|
|
24
24
|
"generatedManifestRegistryDigest": {
|
|
25
25
|
"canonicalHash": "cce2ede8f658d43e0807f7f194e28fc356085e00fc70d99d27ecbd674be14a9f",
|
|
26
26
|
"commandDigestHash": "85f685455fdf85b757674a3086eb03354a628f22ada1a25afee0fd86b14b92c7",
|
|
27
|
-
"descriptorHash": "
|
|
28
|
-
"documentationHash": "
|
|
29
|
-
"fullDescriptorHash": "
|
|
27
|
+
"descriptorHash": "15fe2168500a4418920f621b32998e3ebb29517f7d76bf3295dae424ba6dcd2d",
|
|
28
|
+
"documentationHash": "b615e3b04fdb94d643843322ac715b2b79bc0e47d328a69359143b9ee3f6790d",
|
|
29
|
+
"fullDescriptorHash": "beec758a172fc913e22b36d197a222ea2e17c12203abb1c81c48659099806d87",
|
|
30
30
|
"namespaceHash": "cd39afc4f4e8b76473a4768c07d979c44e0421973786c54e12bb6d7888f5952a",
|
|
31
31
|
"policyProfilesHash": "9fb054a4f29be73c2ebf33f643bc17d904b2872dd8e7d564a690db828071a7ce",
|
|
32
32
|
"principalTemplatesHash": "525835bb3c4710fa326e662e8a961e74de1798f4fb1bccb2a00be557ed037740",
|
|
33
33
|
"routedTopLevelHash": "02e98ac94f1eadbeded065bef652f8a917f108a8a08726ad7163503cc1b3384d",
|
|
34
34
|
"topLevelHash": "04e58344eaec2c14dfa336b13eff952a584c7c5355d90775c3bc8336ab0752ee",
|
|
35
|
-
"trustDistributionHash": "
|
|
35
|
+
"trustDistributionHash": "4453b3198e2041b96369107ce6a082e318b66900123a5b5d8eb06f4c85d1c072"
|
|
36
36
|
},
|
|
37
37
|
"generatedManifestVersion": "1.0.0",
|
|
38
38
|
"registryDigest": {
|
|
39
39
|
"canonicalHash": "cce2ede8f658d43e0807f7f194e28fc356085e00fc70d99d27ecbd674be14a9f",
|
|
40
40
|
"commandDigestHash": "85f685455fdf85b757674a3086eb03354a628f22ada1a25afee0fd86b14b92c7",
|
|
41
|
-
"descriptorHash": "
|
|
42
|
-
"documentationHash": "
|
|
43
|
-
"fullDescriptorHash": "
|
|
41
|
+
"descriptorHash": "15fe2168500a4418920f621b32998e3ebb29517f7d76bf3295dae424ba6dcd2d",
|
|
42
|
+
"documentationHash": "b615e3b04fdb94d643843322ac715b2b79bc0e47d328a69359143b9ee3f6790d",
|
|
43
|
+
"fullDescriptorHash": "beec758a172fc913e22b36d197a222ea2e17c12203abb1c81c48659099806d87",
|
|
44
44
|
"namespaceHash": "cd39afc4f4e8b76473a4768c07d979c44e0421973786c54e12bb6d7888f5952a",
|
|
45
45
|
"policyProfilesHash": "9fb054a4f29be73c2ebf33f643bc17d904b2872dd8e7d564a690db828071a7ce",
|
|
46
46
|
"principalTemplatesHash": "525835bb3c4710fa326e662e8a961e74de1798f4fb1bccb2a00be557ed037740",
|
|
47
47
|
"routedTopLevelHash": "02e98ac94f1eadbeded065bef652f8a917f108a8a08726ad7163503cc1b3384d",
|
|
48
48
|
"topLevelHash": "04e58344eaec2c14dfa336b13eff952a584c7c5355d90775c3bc8336ab0752ee",
|
|
49
|
-
"trustDistributionHash": "
|
|
49
|
+
"trustDistributionHash": "4453b3198e2041b96369107ce6a082e318b66900123a5b5d8eb06f4c85d1c072"
|
|
50
50
|
},
|
|
51
|
-
"schemaHash": "
|
|
51
|
+
"schemaHash": "123a5263e08005cbfaf1c089eb35c942b9b28a96c249a318c3d94023e35f0bfd"
|
|
52
52
|
},
|
|
53
53
|
"contractLockMatchesExpected": true,
|
|
54
54
|
"contractLockMismatches": [],
|
|
@@ -284,7 +284,7 @@
|
|
|
284
284
|
]
|
|
285
285
|
},
|
|
286
286
|
"publication": {
|
|
287
|
-
"contractLockHash": "
|
|
287
|
+
"contractLockHash": "de5bf0ae8b2938e5cd15e77ecfada8ae7619156b57965b3ecc850f2a69e89212",
|
|
288
288
|
"contractLockStatus": "locked",
|
|
289
289
|
"deterministic": true,
|
|
290
290
|
"expectedScenarioCount": 19,
|
|
@@ -293,12 +293,12 @@
|
|
|
293
293
|
"minimumWeightedScore": 95,
|
|
294
294
|
"releaseGatePass": true,
|
|
295
295
|
"reportPath": "benchmarks/latest/core-report.json",
|
|
296
|
-
"scorecardHash": "
|
|
297
|
-
"suiteLockHash": "
|
|
296
|
+
"scorecardHash": "5fb1f3e94a395c8a21047a8e7553414daafa2e30c69deb72cd381493e9fcc90c",
|
|
297
|
+
"suiteLockHash": "9fa111db2b85af303243771847f699aabbb7d124a0e75be36a74ee2b651daca0",
|
|
298
298
|
"suiteLockPath": "benchmarks/locks/core.lock.json"
|
|
299
299
|
},
|
|
300
300
|
"runtime": {
|
|
301
|
-
"packageVersion": "1.1.
|
|
301
|
+
"packageVersion": "1.1.133"
|
|
302
302
|
},
|
|
303
303
|
"scenarios": [
|
|
304
304
|
{
|
|
@@ -1,61 +1,61 @@
|
|
|
1
1
|
{
|
|
2
2
|
"contractLock": {
|
|
3
|
-
"capabilitiesLocalHash": "
|
|
4
|
-
"capabilitiesRemoteTemplateHash": "
|
|
3
|
+
"capabilitiesLocalHash": "c2307642826813c448dc93088c6a88563da76da4f7926497b4bd4ce40f06c4e5",
|
|
4
|
+
"capabilitiesRemoteTemplateHash": "11941da2e31d704f495ed7d36b32003226947f59cd03a71ee72575730c6a1162",
|
|
5
5
|
"commandDescriptorVersion": "1.4.3",
|
|
6
|
-
"documentationContentHash": "
|
|
7
|
-
"documentationRegistryHash": "
|
|
6
|
+
"documentationContentHash": "2fc357504b44835e6f8804d7bab61069defa6ecc21c39c22e1a0aaad32cf7026",
|
|
7
|
+
"documentationRegistryHash": "b615e3b04fdb94d643843322ac715b2b79bc0e47d328a69359143b9ee3f6790d",
|
|
8
8
|
"generatedArtifactHashes": {
|
|
9
|
-
"generatedCommandDescriptors": "
|
|
10
|
-
"generatedContractRegistry": "
|
|
11
|
-
"generatedManifest": "
|
|
12
|
-
"generatedMcpToolDefinitions": "
|
|
13
|
-
"pyCommandDescriptors": "
|
|
14
|
-
"pyContractRegistry": "
|
|
15
|
-
"pyManifest": "
|
|
16
|
-
"pyMcpToolDefinitions": "
|
|
17
|
-
"tsCommandDescriptors": "
|
|
18
|
-
"tsContractRegistry": "
|
|
19
|
-
"tsManifest": "
|
|
20
|
-
"tsMcpToolDefinitions": "
|
|
9
|
+
"generatedCommandDescriptors": "b28268d6cb3143018f7dc328be8faf7d8efbb14a78f8e4df0158d7f331a1ce08",
|
|
10
|
+
"generatedContractRegistry": "4f7ac505b2f77b46a145c065ced3b44b6418c2122df8cff423c5f9165d253adf",
|
|
11
|
+
"generatedManifest": "f2fa1210d0735f36833214c5879db91e05dcc986c87cbff77ab834b2ecb4250b",
|
|
12
|
+
"generatedMcpToolDefinitions": "fc278481cbde0042739ce56902905679f3c2c05be6ac61bfe6064d6d35f3a567",
|
|
13
|
+
"pyCommandDescriptors": "b28268d6cb3143018f7dc328be8faf7d8efbb14a78f8e4df0158d7f331a1ce08",
|
|
14
|
+
"pyContractRegistry": "4f7ac505b2f77b46a145c065ced3b44b6418c2122df8cff423c5f9165d253adf",
|
|
15
|
+
"pyManifest": "cb181e1ca42981c1886f2f1619103712646d78562194a10812fc8cf22d09c39d",
|
|
16
|
+
"pyMcpToolDefinitions": "fc278481cbde0042739ce56902905679f3c2c05be6ac61bfe6064d6d35f3a567",
|
|
17
|
+
"tsCommandDescriptors": "b28268d6cb3143018f7dc328be8faf7d8efbb14a78f8e4df0158d7f331a1ce08",
|
|
18
|
+
"tsContractRegistry": "4f7ac505b2f77b46a145c065ced3b44b6418c2122df8cff423c5f9165d253adf",
|
|
19
|
+
"tsManifest": "343d9c3212e655461879ac425c4cf43f29a0c24ed7f5aeab95a8f47c84e918b0",
|
|
20
|
+
"tsMcpToolDefinitions": "fc278481cbde0042739ce56902905679f3c2c05be6ac61bfe6064d6d35f3a567"
|
|
21
21
|
},
|
|
22
22
|
"generatedManifestCommandDescriptorVersion": "1.4.3",
|
|
23
23
|
"generatedManifestPackageVersion": "0.1.0-alpha.21",
|
|
24
24
|
"generatedManifestRegistryDigest": {
|
|
25
25
|
"canonicalHash": "cce2ede8f658d43e0807f7f194e28fc356085e00fc70d99d27ecbd674be14a9f",
|
|
26
26
|
"commandDigestHash": "85f685455fdf85b757674a3086eb03354a628f22ada1a25afee0fd86b14b92c7",
|
|
27
|
-
"descriptorHash": "
|
|
28
|
-
"documentationHash": "
|
|
29
|
-
"fullDescriptorHash": "
|
|
27
|
+
"descriptorHash": "15fe2168500a4418920f621b32998e3ebb29517f7d76bf3295dae424ba6dcd2d",
|
|
28
|
+
"documentationHash": "b615e3b04fdb94d643843322ac715b2b79bc0e47d328a69359143b9ee3f6790d",
|
|
29
|
+
"fullDescriptorHash": "beec758a172fc913e22b36d197a222ea2e17c12203abb1c81c48659099806d87",
|
|
30
30
|
"namespaceHash": "cd39afc4f4e8b76473a4768c07d979c44e0421973786c54e12bb6d7888f5952a",
|
|
31
31
|
"policyProfilesHash": "9fb054a4f29be73c2ebf33f643bc17d904b2872dd8e7d564a690db828071a7ce",
|
|
32
32
|
"principalTemplatesHash": "525835bb3c4710fa326e662e8a961e74de1798f4fb1bccb2a00be557ed037740",
|
|
33
33
|
"routedTopLevelHash": "02e98ac94f1eadbeded065bef652f8a917f108a8a08726ad7163503cc1b3384d",
|
|
34
34
|
"topLevelHash": "04e58344eaec2c14dfa336b13eff952a584c7c5355d90775c3bc8336ab0752ee",
|
|
35
|
-
"trustDistributionHash": "
|
|
35
|
+
"trustDistributionHash": "4453b3198e2041b96369107ce6a082e318b66900123a5b5d8eb06f4c85d1c072"
|
|
36
36
|
},
|
|
37
37
|
"generatedManifestVersion": "1.0.0",
|
|
38
38
|
"registryDigest": {
|
|
39
39
|
"canonicalHash": "cce2ede8f658d43e0807f7f194e28fc356085e00fc70d99d27ecbd674be14a9f",
|
|
40
40
|
"commandDigestHash": "85f685455fdf85b757674a3086eb03354a628f22ada1a25afee0fd86b14b92c7",
|
|
41
|
-
"descriptorHash": "
|
|
42
|
-
"documentationHash": "
|
|
43
|
-
"fullDescriptorHash": "
|
|
41
|
+
"descriptorHash": "15fe2168500a4418920f621b32998e3ebb29517f7d76bf3295dae424ba6dcd2d",
|
|
42
|
+
"documentationHash": "b615e3b04fdb94d643843322ac715b2b79bc0e47d328a69359143b9ee3f6790d",
|
|
43
|
+
"fullDescriptorHash": "beec758a172fc913e22b36d197a222ea2e17c12203abb1c81c48659099806d87",
|
|
44
44
|
"namespaceHash": "cd39afc4f4e8b76473a4768c07d979c44e0421973786c54e12bb6d7888f5952a",
|
|
45
45
|
"policyProfilesHash": "9fb054a4f29be73c2ebf33f643bc17d904b2872dd8e7d564a690db828071a7ce",
|
|
46
46
|
"principalTemplatesHash": "525835bb3c4710fa326e662e8a961e74de1798f4fb1bccb2a00be557ed037740",
|
|
47
47
|
"routedTopLevelHash": "02e98ac94f1eadbeded065bef652f8a917f108a8a08726ad7163503cc1b3384d",
|
|
48
48
|
"topLevelHash": "04e58344eaec2c14dfa336b13eff952a584c7c5355d90775c3bc8336ab0752ee",
|
|
49
|
-
"trustDistributionHash": "
|
|
49
|
+
"trustDistributionHash": "4453b3198e2041b96369107ce6a082e318b66900123a5b5d8eb06f4c85d1c072"
|
|
50
50
|
},
|
|
51
|
-
"schemaHash": "
|
|
51
|
+
"schemaHash": "123a5263e08005cbfaf1c089eb35c942b9b28a96c249a318c3d94023e35f0bfd"
|
|
52
52
|
},
|
|
53
53
|
"publication": {
|
|
54
|
-
"contractLockHash": "
|
|
54
|
+
"contractLockHash": "de5bf0ae8b2938e5cd15e77ecfada8ae7619156b57965b3ecc850f2a69e89212",
|
|
55
55
|
"deterministic": true,
|
|
56
56
|
"grade": "release-grade",
|
|
57
57
|
"kind": "benchmark-contract-lock",
|
|
58
|
-
"lockDocumentHash": "
|
|
58
|
+
"lockDocumentHash": "847aafd38e60408dec12c20c0d05bb1526257b5af468a4c5be8e6cc1870f2e6c",
|
|
59
59
|
"suiteLockPath": "benchmarks/locks/core.lock.json"
|
|
60
60
|
},
|
|
61
61
|
"schemaVersion": "1.0.0",
|
|
@@ -5060,13 +5060,13 @@ const commandContracts = [
|
|
|
5060
5060
|
name: 'polymarket.preflight',
|
|
5061
5061
|
summary: 'Run strict Polymarket readiness and optional trade-context preflight checks.',
|
|
5062
5062
|
usage:
|
|
5063
|
-
'pandora [--output table|json] polymarket preflight [--condition-id <id>|--slug <slug>|--token-id <id>] [--token yes|no] [--amount-usdc <n>] [--side buy|sell] [--polymarket-host <url>] [--polymarket-mock-url <url>] [--timeout-ms <ms>] [--fork] [--fork-rpc-url <url>] [--fork-chain-id <id>] [--rpc-url <url>] [--private-key <hex>] [--funder <address>]',
|
|
5063
|
+
'pandora [--output table|json] polymarket preflight [--condition-id <id>|--slug <slug>|--token-id <id>] [--token yes|no] [--amount-usdc <n>] [--shares <n> for sell] [--side buy|sell] [--polymarket-host <url>] [--polymarket-mock-url <url>] [--timeout-ms <ms>] [--fork] [--fork-rpc-url <url>] [--fork-chain-id <id>] [--rpc-url <url>] [--private-key <hex>] [--funder <address>]',
|
|
5064
5064
|
emits: ['polymarket.preflight', 'polymarket.preflight.help', 'polymarket.help'],
|
|
5065
5065
|
dataSchema: '#/definitions/PolymarketPayload',
|
|
5066
5066
|
mcpExposed: true,
|
|
5067
5067
|
mcp: {
|
|
5068
5068
|
command: ['polymarket', 'preflight'],
|
|
5069
|
-
description: 'Run strict Polymarket readiness preflight, optionally with trade context. Add condition/slug, token or token-id, side, and amount-usdc when you need a concrete trade go/no-go gate
|
|
5069
|
+
description: 'Run strict Polymarket readiness preflight, optionally with trade context. Add condition/slug, token or token-id, side, and amount-usdc when you need a concrete trade go/no-go gate. For sell checks, also add shares because CLOB V2 sells are share-sized.',
|
|
5070
5070
|
inputSchema: buildInputSchema({
|
|
5071
5071
|
flagProperties: {
|
|
5072
5072
|
'condition-id': stringSchema('Polymarket condition/market id for trade-context preflight.'),
|
|
@@ -5075,6 +5075,7 @@ const commandContracts = [
|
|
|
5075
5075
|
'token-id': stringSchema('Explicit token id for trade-context preflight.'),
|
|
5076
5076
|
side: enumSchema(['buy', 'sell'], 'Trade side for trade-context preflight.'),
|
|
5077
5077
|
'amount-usdc': numberSchema('Trade notional in USDC for trade-context preflight.', { minimum: 0 }),
|
|
5078
|
+
shares: numberSchema('Outcome-token shares for sell trade-context preflight.', { minimum: 0 }),
|
|
5078
5079
|
'polymarket-host': stringSchema('Polymarket host override for market-resolution checks.'),
|
|
5079
5080
|
'polymarket-mock-url': stringSchema('Polymarket mock host override for local/forked trade-context checks.'),
|
|
5080
5081
|
'timeout-ms': commonFlags.timeoutMs,
|
|
@@ -5224,13 +5225,13 @@ const commandContracts = [
|
|
|
5224
5225
|
name: 'polymarket.trade',
|
|
5225
5226
|
summary: 'Dry-run or execute a Polymarket trade.',
|
|
5226
5227
|
usage:
|
|
5227
|
-
'pandora [--output table|json] polymarket trade --condition-id <id>|--slug <slug>|--token-id <id> --token yes|no --amount-usdc <n> --dry-run|--execute [--side buy|sell] [--polymarket-host <url>] [--polymarket-mock-url <url>] [--timeout-ms <ms>] [--fork] [--fork-rpc-url <url>] [--fork-chain-id <id>] [--rpc-url <url>] [--private-key <hex>] [--funder <address>]',
|
|
5228
|
+
'pandora [--output table|json] polymarket trade --condition-id <id>|--slug <slug>|--token-id <id> --token yes|no --amount-usdc <n> --dry-run|--execute [--side buy|sell] [--shares <n> for sell execute] [--polymarket-host <url>] [--polymarket-mock-url <url>] [--timeout-ms <ms>] [--fork] [--fork-rpc-url <url>] [--fork-chain-id <id>] [--rpc-url <url>] [--private-key <hex>] [--funder <address>]',
|
|
5228
5229
|
emits: ['polymarket.trade', 'polymarket.trade.help', 'polymarket.help'],
|
|
5229
5230
|
dataSchema: '#/definitions/PolymarketPayload',
|
|
5230
5231
|
mcpExposed: true,
|
|
5231
5232
|
mcp: {
|
|
5232
5233
|
command: ['polymarket', 'trade'],
|
|
5233
|
-
description: 'Dry-run or execute Polymarket trade.',
|
|
5234
|
+
description: 'Dry-run or execute Polymarket trade. Buy market orders use amount-usdc; sell market orders require shares for execute because CLOB V2 sell amount is outcome-token shares.',
|
|
5234
5235
|
inputSchema: buildInputSchema({
|
|
5235
5236
|
includeIntent: true,
|
|
5236
5237
|
flagProperties: {
|
|
@@ -5239,6 +5240,7 @@ const commandContracts = [
|
|
|
5239
5240
|
'token-id': stringSchema('Polymarket token id.'),
|
|
5240
5241
|
token: enumSchema(['yes', 'no'], 'Token/outcome side.'),
|
|
5241
5242
|
'amount-usdc': numberSchema('Trade notional in USDC.', { exclusiveMinimum: 0 }),
|
|
5243
|
+
shares: numberSchema('Outcome-token shares for sell execution.', { exclusiveMinimum: 0 }),
|
|
5242
5244
|
'dry-run': booleanSchema('Run dry-run mode.'),
|
|
5243
5245
|
execute: booleanSchema('Execute live trade.'),
|
|
5244
5246
|
side: enumSchema(['buy', 'sell'], 'Order side.'),
|
|
@@ -5,7 +5,7 @@ const { readPandoraWalletBalances } = require('./dashboard_fund_service.cjs');
|
|
|
5
5
|
const BRIDGE_PLAN_SCHEMA_VERSION = '1.0.0';
|
|
6
6
|
const BRIDGE_EXECUTE_SCHEMA_VERSION = '1.0.0';
|
|
7
7
|
const POLYGON_CHAIN_ID = 137;
|
|
8
|
-
const
|
|
8
|
+
const POLYGON_PUSD = '0xC011a7E12a19f7B1f670d46F03B03f3342E82DFB';
|
|
9
9
|
const LAYERZERO_PROVIDER = 'layerzero';
|
|
10
10
|
const CHAIN_METADATA = {
|
|
11
11
|
1: { id: 1, name: 'Ethereum', nativeSymbol: 'ETH', recommendedNativeGas: 0.005 },
|
|
@@ -316,7 +316,7 @@ async function buildBridgePlan(options = {}, deps = {}) {
|
|
|
316
316
|
walletAddress: polygonWallet,
|
|
317
317
|
chainId: POLYGON_CHAIN_ID,
|
|
318
318
|
rpcUrl: polygonRpcUrl,
|
|
319
|
-
usdcAddress:
|
|
319
|
+
usdcAddress: process.env.POLYMARKET_PUSD_ADDRESS || POLYGON_PUSD,
|
|
320
320
|
});
|
|
321
321
|
|
|
322
322
|
const targetIsPolymarket = options.target === 'polymarket';
|
|
@@ -340,8 +340,8 @@ async function buildBridgePlan(options = {}, deps = {}) {
|
|
|
340
340
|
source: {
|
|
341
341
|
chain: buildChainSummary(sourceChainId, sourceChainId === 1 ? ethereumRpcUrl : polygonRpcUrl),
|
|
342
342
|
token: {
|
|
343
|
-
symbol: targetIsPolymarket ? 'USDC' : '
|
|
344
|
-
address: targetIsPolymarket ? (options.usdc || process.env.USDC || DEFAULT_USDC) :
|
|
343
|
+
symbol: targetIsPolymarket ? 'USDC' : 'pUSD',
|
|
344
|
+
address: targetIsPolymarket ? (options.usdc || process.env.USDC || DEFAULT_USDC) : (process.env.POLYMARKET_PUSD_ADDRESS || POLYGON_PUSD),
|
|
345
345
|
},
|
|
346
346
|
wallet: targetIsPolymarket ? pandoraWallet : polygonWallet,
|
|
347
347
|
balanceUsdc: sourceBalances.usdcBalance,
|
|
@@ -351,8 +351,8 @@ async function buildBridgePlan(options = {}, deps = {}) {
|
|
|
351
351
|
destination: {
|
|
352
352
|
chain: buildChainSummary(destinationChainId, destinationChainId === 1 ? ethereumRpcUrl : polygonRpcUrl),
|
|
353
353
|
token: {
|
|
354
|
-
symbol: targetIsPolymarket ? '
|
|
355
|
-
address: targetIsPolymarket ?
|
|
354
|
+
symbol: targetIsPolymarket ? 'pUSD' : 'USDC',
|
|
355
|
+
address: targetIsPolymarket ? (process.env.POLYMARKET_PUSD_ADDRESS || POLYGON_PUSD) : (options.usdc || process.env.USDC || DEFAULT_USDC),
|
|
356
356
|
},
|
|
357
357
|
wallet: targetIsPolymarket ? polygonWallet : pandoraWallet,
|
|
358
358
|
balanceUsdc: destinationBalances.usdcBalance,
|
|
@@ -371,8 +371,8 @@ async function buildBridgePlan(options = {}, deps = {}) {
|
|
|
371
371
|
providerAssumptions: [
|
|
372
372
|
'Planner output is read-only; use `pandora bridge execute` when you want LayerZero preflight or source-chain submission.',
|
|
373
373
|
targetIsPolymarket
|
|
374
|
-
? 'Assumes Ethereum mainnet USDC is the source asset and Polygon
|
|
375
|
-
: 'Assumes Polygon
|
|
374
|
+
? 'Assumes Ethereum mainnet USDC is the source asset and Polygon pUSD is the destination collateral used by Polymarket V2.'
|
|
375
|
+
: 'Assumes Polygon pUSD is the source asset and Ethereum mainnet USDC is the destination asset used by Pandora.',
|
|
376
376
|
'Bridge execution, settlement timing, and final destination confirmation stay manual and explicit.',
|
|
377
377
|
],
|
|
378
378
|
suggestions: [],
|
|
@@ -392,8 +392,8 @@ function buildLayerZeroProviderAssumptions(plan, mode, state = {}) {
|
|
|
392
392
|
const assumptions = [
|
|
393
393
|
'Provider is scoped to LayerZero only. No automatic fallback provider is selected.',
|
|
394
394
|
targetIsPolymarket
|
|
395
|
-
? 'Assumes Ethereum mainnet USDC is the source asset and Polygon
|
|
396
|
-
: 'Assumes Polygon
|
|
395
|
+
? 'Assumes Ethereum mainnet USDC is the source asset and Polygon pUSD is the destination collateral used by Polymarket V2.'
|
|
396
|
+
: 'Assumes Polygon pUSD is the source asset and Ethereum mainnet USDC is the destination asset used by Pandora.',
|
|
397
397
|
'Cross-chain settlement is asynchronous. Final destination credit confirmation remains explicit and must be observed after submission.',
|
|
398
398
|
];
|
|
399
399
|
|
|
@@ -824,8 +824,8 @@ function createRunBridgeCommand(deps) {
|
|
|
824
824
|
|
|
825
825
|
if (action === 'plan' && includesHelpFlag(actionArgs)) {
|
|
826
826
|
emitSuccess(context.outputMode, 'bridge.plan.help', commandHelpPayload(planUsage, [
|
|
827
|
-
'--target polymarket plans Ethereum USDC -> Polygon
|
|
828
|
-
'--target pandora plans Polygon
|
|
827
|
+
'--target polymarket plans Ethereum USDC -> Polygon pUSD funding for the Polymarket side.',
|
|
828
|
+
'--target pandora plans Polygon pUSD -> Ethereum USDC funding for the Pandora side.',
|
|
829
829
|
]));
|
|
830
830
|
return;
|
|
831
831
|
}
|
|
@@ -10,7 +10,7 @@ function requireDep(deps, name) {
|
|
|
10
10
|
const DEFAULT_REQUIRED_ENV_KEYS = ['CHAIN_ID', 'RPC_URL', 'PRIVATE_KEY', 'ORACLE', 'FACTORY', 'USDC'];
|
|
11
11
|
const DEFAULT_SUPPORTED_CHAIN_IDS = new Set([1]);
|
|
12
12
|
const DEFAULT_ZERO_ADDRESS = '0x0000000000000000000000000000000000000000';
|
|
13
|
-
const DEFAULT_POLYMARKET_HOST = 'https://clob.polymarket.com';
|
|
13
|
+
const DEFAULT_POLYMARKET_HOST = 'https://clob-v2.polymarket.com';
|
|
14
14
|
const DEFAULT_POLYMARKET_RPC_URL = 'https://polygon-bor-rpc.publicnode.com';
|
|
15
15
|
const DEFAULT_POLYMARKET_DOCTOR_KEYS = [
|
|
16
16
|
'POLYMARKET_HOST',
|
|
@@ -160,6 +160,8 @@ const EXPLICIT_MCP_INPUT_ALIASES = Object.freeze({
|
|
|
160
160
|
market_address: 'market-address',
|
|
161
161
|
amountUsdc: 'amount-usdc',
|
|
162
162
|
amount_usdc: 'amount-usdc',
|
|
163
|
+
amountShares: 'shares',
|
|
164
|
+
amount_shares: 'shares',
|
|
163
165
|
dryRun: 'dry-run',
|
|
164
166
|
dry_run: 'dry-run',
|
|
165
167
|
targetTimestamp: 'target-timestamp',
|
|
@@ -46,7 +46,7 @@ module.exports = async function handleMirrorStatus({ actionArgs, shared, context
|
|
|
46
46
|
funder:
|
|
47
47
|
'POLYMARKET_FUNDER should be the Polymarket proxy wallet (Gnosis Safe), not the EOA signer address.',
|
|
48
48
|
collateral:
|
|
49
|
-
'Polymarket CLOB collateral is Polygon
|
|
49
|
+
'Polymarket CLOB V2 collateral is Polygon pUSD, but raw wallet collateral can diverge from authenticated Polymarket CLOB buying power. If balances look wrong, treat that as a scope mismatch first and inspect `pandora polymarket balance` plus `pandora polymarket positions`.',
|
|
50
50
|
gracefulFallback:
|
|
51
51
|
'--with-live degrades gracefully when position endpoints or credentials are unavailable (diagnostics are returned instead of hard failures).',
|
|
52
52
|
},
|
|
@@ -61,7 +61,7 @@ module.exports = async function handleMirrorStatus({ actionArgs, shared, context
|
|
|
61
61
|
'--with-live adds cross-venue status, hedge-gap actionability, and Polymarket balance/open-order plus balance-scope and merge-readiness diagnostics when credentials are available and degrades gracefully when unavailable.',
|
|
62
62
|
);
|
|
63
63
|
console.log(
|
|
64
|
-
'Polymarket CLOB collateral is Polygon
|
|
64
|
+
'Polymarket CLOB V2 collateral is Polygon pUSD, but raw wallet collateral can diverge from authenticated CLOB buying power; if balances look wrong, treat it as a scope mismatch first and inspect `pandora polymarket balance` plus `pandora polymarket positions`.',
|
|
65
65
|
);
|
|
66
66
|
console.log('mirror status can run selector-first; a single selector hint can resolve persisted runtime/daemon metadata when local mirror files match it.');
|
|
67
67
|
}
|
|
@@ -530,7 +530,7 @@ module.exports = async function handleMirrorSync({ shared, context, deps, mirror
|
|
|
530
530
|
POLYMARKET_FUNDER:
|
|
531
531
|
'Set this to your Polymarket proxy wallet (Gnosis Safe) address, not your EOA wallet address.',
|
|
532
532
|
collateral:
|
|
533
|
-
'Polymarket CLOB settles against Polygon
|
|
533
|
+
'Polymarket CLOB V2 settles against Polygon pUSD collateral, but raw wallet collateral can diverge from authenticated CLOB buying power. If balances look wrong, treat that as a scope mismatch first and inspect `pandora polymarket balance` plus `pandora polymarket positions`.',
|
|
534
534
|
inventoryRecycle:
|
|
535
535
|
'Sync can recycle tracked hedge inventory by selling the opposite token when runtime depth proves the sell path is safe; otherwise it falls back to buy-side hedging. Use --adopt-existing-positions to seed managed inventory from existing Polymarket holdings after a state wipe.',
|
|
536
536
|
rpcFallback:
|
|
@@ -560,7 +560,7 @@ module.exports = async function handleMirrorSync({ shared, context, deps, mirror
|
|
|
560
560
|
'Live hedge env: POLYMARKET_PRIVATE_KEY, POLYMARKET_FUNDER, POLYMARKET_RPC_URL, POLYMARKET_API_KEY, POLYMARKET_API_SECRET, POLYMARKET_API_PASSPHRASE, POLYMARKET_HOST.',
|
|
561
561
|
);
|
|
562
562
|
console.log('POLYMARKET_FUNDER must be your Polymarket proxy wallet (Gnosis Safe), not your EOA wallet address.');
|
|
563
|
-
console.log('Polymarket CLOB collateral is Polygon
|
|
563
|
+
console.log('Polymarket CLOB V2 collateral is Polygon pUSD, but raw wallet collateral can diverge from authenticated CLOB buying power; if balances look wrong, treat it as a scope mismatch first and inspect `pandora polymarket balance` plus `pandora polymarket positions`.');
|
|
564
564
|
console.log('Hedge inventory can be recycled with sell-side orders only when runtime depth proves the sell path is safe; otherwise sync keeps buy-side hedging. Use --adopt-existing-positions after a state wipe to seed managed inventory from live Polymarket YES/NO balances.');
|
|
565
565
|
console.log('Default hedge scope is total exposure across pool reserves and held Pandora outcome tokens. Use --hedge-scope pool only when you intentionally want pool-only hedging.');
|
|
566
566
|
console.log('Polymarket RPC preflight accepts comma-separated --polymarket-rpc-url / POLYMARKET_RPC_URL fallbacks and tries them in order.');
|
|
@@ -1852,6 +1852,7 @@ async function buildExecutionObservation(options = {}, pairContext = {}, state =
|
|
|
1852
1852
|
tokenId,
|
|
1853
1853
|
side: action.orderSide,
|
|
1854
1854
|
amountUsd: allowedUsdc,
|
|
1855
|
+
amountShares: action.orderSide === 'sell' ? allowedShares : undefined,
|
|
1855
1856
|
mockUrl: options.polymarketMockUrl,
|
|
1856
1857
|
});
|
|
1857
1858
|
if (!(orderResult && orderResult.ok)) {
|
|
@@ -1101,6 +1101,7 @@ async function executeHedgeLeg(params) {
|
|
|
1101
1101
|
tokenId,
|
|
1102
1102
|
side: hedgeSide,
|
|
1103
1103
|
amountUsd: executionPlan.amountUsdc,
|
|
1104
|
+
amountShares: hedgeSide === 'sell' ? executionPlan.amountShares : undefined,
|
|
1104
1105
|
privateKey: configuredPrivateKey || envCreds.privateKey,
|
|
1105
1106
|
funder: configuredFunder || envCreds.funder,
|
|
1106
1107
|
apiKey,
|