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.
Files changed (35) hide show
  1. package/README.md +4 -0
  2. package/benchmarks/latest/core-bundle.json +62 -33
  3. package/benchmarks/latest/core-history.json +32 -3
  4. package/benchmarks/latest/core-report.json +29 -29
  5. package/benchmarks/locks/core.lock.json +27 -27
  6. package/cli/lib/agent_contract_registry.cjs +6 -4
  7. package/cli/lib/bridge_command_service.cjs +12 -12
  8. package/cli/lib/doctor_service.cjs +1 -1
  9. package/cli/lib/mcp_tool_registry.cjs +2 -0
  10. package/cli/lib/mirror_handlers/status.cjs +2 -2
  11. package/cli/lib/mirror_handlers/sync.cjs +2 -2
  12. package/cli/lib/mirror_hedge_service.cjs +1 -0
  13. package/cli/lib/mirror_sync/execution.cjs +1 -0
  14. package/cli/lib/parsers/polymarket_flags.cjs +12 -0
  15. package/cli/lib/polymarket_adapter.cjs +3 -3
  16. package/cli/lib/polymarket_clob_client.cjs +53 -0
  17. package/cli/lib/polymarket_command_service.cjs +38 -5
  18. package/cli/lib/polymarket_ops_service.cjs +218 -59
  19. package/cli/lib/polymarket_trade_adapter.cjs +193 -47
  20. package/cli/lib/setup_wizard_service.cjs +1 -1
  21. package/cli/pandora.cjs +1 -1
  22. package/docs/benchmarks/history.json +32 -3
  23. package/docs/skills/capabilities.md +1 -1
  24. package/docs/skills/command-reference.md +5 -5
  25. package/docs/skills/mirror-operations.md +3 -3
  26. package/docs/skills/portfolio-closeout.md +1 -1
  27. package/docs/skills/setup-and-onboarding.md +3 -1
  28. package/package.json +2 -2
  29. package/scripts/.env.example +5 -1
  30. package/sdk/generated/command-descriptors.json +14 -4
  31. package/sdk/generated/contract-registry.json +94 -54
  32. package/sdk/generated/manifest.json +9 -9
  33. package/sdk/generated/mcp-tool-definitions.json +20 -10
  34. package/sdk/python/pandora_agent/generated/manifest.json +7 -7
  35. 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-08T21:39:13.171Z",
4
+ "generatedAt": "2026-04-27T20:12:44.535Z",
5
5
  "package": {
6
6
  "name": "pandora-cli-skills",
7
- "version": "1.1.131"
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": "32726ccc0c83e9cdb0f776ddd98aab2ac65d4204b44044e1fc4989e0061decef",
15
- "lockSha256": "1fb38a069007222a4b2ce11d1951d976ac23373174a19a7871cc021e7e2d8b21"
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.131"
147
+ "packageVersion": "1.1.133"
148
148
  },
149
149
  "contractLock": {
150
- "capabilitiesLocalHash": "3cb11e1fcb9b3f3c1a4fef2e2450cc02d6c48dc162d0e490a7e21be784878502",
151
- "capabilitiesRemoteTemplateHash": "0c7c1934577a503a4f318150d36ee5742902982bb674557c9a260ef6bca54fb6",
150
+ "capabilitiesLocalHash": "c2307642826813c448dc93088c6a88563da76da4f7926497b4bd4ce40f06c4e5",
151
+ "capabilitiesRemoteTemplateHash": "11941da2e31d704f495ed7d36b32003226947f59cd03a71ee72575730c6a1162",
152
152
  "commandDescriptorVersion": "1.4.3",
153
- "documentationContentHash": "cb130209bc40f5bdb9fccbd55ad07b6ec1fefbc95ab0d11fe6d50ef8eb6fa566",
154
- "documentationRegistryHash": "eebe2a201c559e44b45d1a780713f6b302f56726a03a4a57538fcf6762530826",
153
+ "documentationContentHash": "2fc357504b44835e6f8804d7bab61069defa6ecc21c39c22e1a0aaad32cf7026",
154
+ "documentationRegistryHash": "b615e3b04fdb94d643843322ac715b2b79bc0e47d328a69359143b9ee3f6790d",
155
155
  "generatedArtifactHashes": {
156
- "generatedCommandDescriptors": "60ab2ae91d950b5639093413fb1806d979f024203ffad0b686705a94d5b06e07",
157
- "generatedContractRegistry": "6546a216e3de8c9df871454fdae4d3c2406aae87298164193fd964ef46eb2fad",
158
- "generatedManifest": "218d766ace4b3c4b8bd538effd900da4991607a84a11bcc86d155de41bb876bc",
159
- "generatedMcpToolDefinitions": "6dc62098f1c71b3816d75115ab5e31734484d9bc19ecff0bce32e7ab50fc00d6",
160
- "pyCommandDescriptors": "60ab2ae91d950b5639093413fb1806d979f024203ffad0b686705a94d5b06e07",
161
- "pyContractRegistry": "6546a216e3de8c9df871454fdae4d3c2406aae87298164193fd964ef46eb2fad",
162
- "pyManifest": "1195f54e990cdfaf1dae1f826c96f3be2bf20a28f219b48ee8abdb1c94c8daf3",
163
- "pyMcpToolDefinitions": "6dc62098f1c71b3816d75115ab5e31734484d9bc19ecff0bce32e7ab50fc00d6",
164
- "tsCommandDescriptors": "60ab2ae91d950b5639093413fb1806d979f024203ffad0b686705a94d5b06e07",
165
- "tsContractRegistry": "6546a216e3de8c9df871454fdae4d3c2406aae87298164193fd964ef46eb2fad",
166
- "tsManifest": "e788d09341d814cfd673d647c95d27bcb35e3fcc893621632966a1abdc2cdfa4",
167
- "tsMcpToolDefinitions": "6dc62098f1c71b3816d75115ab5e31734484d9bc19ecff0bce32e7ab50fc00d6"
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": "664970d781e477a11a683bc265cbd7fc8b0cf9576b50da49ab301b773e38b47d",
175
- "documentationHash": "eebe2a201c559e44b45d1a780713f6b302f56726a03a4a57538fcf6762530826",
176
- "fullDescriptorHash": "422f7c73ce499d926c92ea792b0c590c41c916dac377cf6790c5465d1eb5f384",
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": "71850c223646b5eb0c34566080e1051515774820cd08b19ab7dcfe7757ed4d08"
182
+ "trustDistributionHash": "4453b3198e2041b96369107ce6a082e318b66900123a5b5d8eb06f4c85d1c072"
183
183
  },
184
184
  "generatedManifestVersion": "1.0.0",
185
185
  "registryDigest": {
186
186
  "canonicalHash": "cce2ede8f658d43e0807f7f194e28fc356085e00fc70d99d27ecbd674be14a9f",
187
187
  "commandDigestHash": "85f685455fdf85b757674a3086eb03354a628f22ada1a25afee0fd86b14b92c7",
188
- "descriptorHash": "664970d781e477a11a683bc265cbd7fc8b0cf9576b50da49ab301b773e38b47d",
189
- "documentationHash": "eebe2a201c559e44b45d1a780713f6b302f56726a03a4a57538fcf6762530826",
190
- "fullDescriptorHash": "422f7c73ce499d926c92ea792b0c590c41c916dac377cf6790c5465d1eb5f384",
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": "71850c223646b5eb0c34566080e1051515774820cd08b19ab7dcfe7757ed4d08"
196
+ "trustDistributionHash": "4453b3198e2041b96369107ce6a082e318b66900123a5b5d8eb06f4c85d1c072"
197
197
  },
198
- "schemaHash": "0105b3c948c1481f9ca566751d41f8ad715f92196cc5afbf294c3c098fa20788"
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-08T21:39:13.171Z",
206
- "latestVersion": "1.1.131",
207
- "latestGeneratedAt": "2026-04-08T21:39:13.171Z",
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-08T21:39:13.171Z",
5
- "latestVersion": "1.1.131",
6
- "latestGeneratedAt": "2026-04-08T21:39:13.171Z",
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": "3cb11e1fcb9b3f3c1a4fef2e2450cc02d6c48dc162d0e490a7e21be784878502",
4
- "capabilitiesRemoteTemplateHash": "0c7c1934577a503a4f318150d36ee5742902982bb674557c9a260ef6bca54fb6",
3
+ "capabilitiesLocalHash": "c2307642826813c448dc93088c6a88563da76da4f7926497b4bd4ce40f06c4e5",
4
+ "capabilitiesRemoteTemplateHash": "11941da2e31d704f495ed7d36b32003226947f59cd03a71ee72575730c6a1162",
5
5
  "commandDescriptorVersion": "1.4.3",
6
- "documentationContentHash": "cb130209bc40f5bdb9fccbd55ad07b6ec1fefbc95ab0d11fe6d50ef8eb6fa566",
7
- "documentationRegistryHash": "eebe2a201c559e44b45d1a780713f6b302f56726a03a4a57538fcf6762530826",
6
+ "documentationContentHash": "2fc357504b44835e6f8804d7bab61069defa6ecc21c39c22e1a0aaad32cf7026",
7
+ "documentationRegistryHash": "b615e3b04fdb94d643843322ac715b2b79bc0e47d328a69359143b9ee3f6790d",
8
8
  "generatedArtifactHashes": {
9
- "generatedCommandDescriptors": "60ab2ae91d950b5639093413fb1806d979f024203ffad0b686705a94d5b06e07",
10
- "generatedContractRegistry": "6546a216e3de8c9df871454fdae4d3c2406aae87298164193fd964ef46eb2fad",
11
- "generatedManifest": "218d766ace4b3c4b8bd538effd900da4991607a84a11bcc86d155de41bb876bc",
12
- "generatedMcpToolDefinitions": "6dc62098f1c71b3816d75115ab5e31734484d9bc19ecff0bce32e7ab50fc00d6",
13
- "pyCommandDescriptors": "60ab2ae91d950b5639093413fb1806d979f024203ffad0b686705a94d5b06e07",
14
- "pyContractRegistry": "6546a216e3de8c9df871454fdae4d3c2406aae87298164193fd964ef46eb2fad",
15
- "pyManifest": "1195f54e990cdfaf1dae1f826c96f3be2bf20a28f219b48ee8abdb1c94c8daf3",
16
- "pyMcpToolDefinitions": "6dc62098f1c71b3816d75115ab5e31734484d9bc19ecff0bce32e7ab50fc00d6",
17
- "tsCommandDescriptors": "60ab2ae91d950b5639093413fb1806d979f024203ffad0b686705a94d5b06e07",
18
- "tsContractRegistry": "6546a216e3de8c9df871454fdae4d3c2406aae87298164193fd964ef46eb2fad",
19
- "tsManifest": "e788d09341d814cfd673d647c95d27bcb35e3fcc893621632966a1abdc2cdfa4",
20
- "tsMcpToolDefinitions": "6dc62098f1c71b3816d75115ab5e31734484d9bc19ecff0bce32e7ab50fc00d6"
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": "664970d781e477a11a683bc265cbd7fc8b0cf9576b50da49ab301b773e38b47d",
28
- "documentationHash": "eebe2a201c559e44b45d1a780713f6b302f56726a03a4a57538fcf6762530826",
29
- "fullDescriptorHash": "422f7c73ce499d926c92ea792b0c590c41c916dac377cf6790c5465d1eb5f384",
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": "71850c223646b5eb0c34566080e1051515774820cd08b19ab7dcfe7757ed4d08"
35
+ "trustDistributionHash": "4453b3198e2041b96369107ce6a082e318b66900123a5b5d8eb06f4c85d1c072"
36
36
  },
37
37
  "generatedManifestVersion": "1.0.0",
38
38
  "registryDigest": {
39
39
  "canonicalHash": "cce2ede8f658d43e0807f7f194e28fc356085e00fc70d99d27ecbd674be14a9f",
40
40
  "commandDigestHash": "85f685455fdf85b757674a3086eb03354a628f22ada1a25afee0fd86b14b92c7",
41
- "descriptorHash": "664970d781e477a11a683bc265cbd7fc8b0cf9576b50da49ab301b773e38b47d",
42
- "documentationHash": "eebe2a201c559e44b45d1a780713f6b302f56726a03a4a57538fcf6762530826",
43
- "fullDescriptorHash": "422f7c73ce499d926c92ea792b0c590c41c916dac377cf6790c5465d1eb5f384",
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": "71850c223646b5eb0c34566080e1051515774820cd08b19ab7dcfe7757ed4d08"
49
+ "trustDistributionHash": "4453b3198e2041b96369107ce6a082e318b66900123a5b5d8eb06f4c85d1c072"
50
50
  },
51
- "schemaHash": "0105b3c948c1481f9ca566751d41f8ad715f92196cc5afbf294c3c098fa20788"
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": "ca8a6dc441b6dce243db7ee4d7ec599b1941bd77e1af7d3dba4df68ac03f2117",
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": "70bf62a4d3f53c58d8a4b5f32a957a7914234c4e2f7dba2df8126a7e99e3e993",
297
- "suiteLockHash": "1fb38a069007222a4b2ce11d1951d976ac23373174a19a7871cc021e7e2d8b21",
296
+ "scorecardHash": "5fb1f3e94a395c8a21047a8e7553414daafa2e30c69deb72cd381493e9fcc90c",
297
+ "suiteLockHash": "9fa111db2b85af303243771847f699aabbb7d124a0e75be36a74ee2b651daca0",
298
298
  "suiteLockPath": "benchmarks/locks/core.lock.json"
299
299
  },
300
300
  "runtime": {
301
- "packageVersion": "1.1.131"
301
+ "packageVersion": "1.1.133"
302
302
  },
303
303
  "scenarios": [
304
304
  {
@@ -1,61 +1,61 @@
1
1
  {
2
2
  "contractLock": {
3
- "capabilitiesLocalHash": "3cb11e1fcb9b3f3c1a4fef2e2450cc02d6c48dc162d0e490a7e21be784878502",
4
- "capabilitiesRemoteTemplateHash": "0c7c1934577a503a4f318150d36ee5742902982bb674557c9a260ef6bca54fb6",
3
+ "capabilitiesLocalHash": "c2307642826813c448dc93088c6a88563da76da4f7926497b4bd4ce40f06c4e5",
4
+ "capabilitiesRemoteTemplateHash": "11941da2e31d704f495ed7d36b32003226947f59cd03a71ee72575730c6a1162",
5
5
  "commandDescriptorVersion": "1.4.3",
6
- "documentationContentHash": "cb130209bc40f5bdb9fccbd55ad07b6ec1fefbc95ab0d11fe6d50ef8eb6fa566",
7
- "documentationRegistryHash": "eebe2a201c559e44b45d1a780713f6b302f56726a03a4a57538fcf6762530826",
6
+ "documentationContentHash": "2fc357504b44835e6f8804d7bab61069defa6ecc21c39c22e1a0aaad32cf7026",
7
+ "documentationRegistryHash": "b615e3b04fdb94d643843322ac715b2b79bc0e47d328a69359143b9ee3f6790d",
8
8
  "generatedArtifactHashes": {
9
- "generatedCommandDescriptors": "60ab2ae91d950b5639093413fb1806d979f024203ffad0b686705a94d5b06e07",
10
- "generatedContractRegistry": "6546a216e3de8c9df871454fdae4d3c2406aae87298164193fd964ef46eb2fad",
11
- "generatedManifest": "218d766ace4b3c4b8bd538effd900da4991607a84a11bcc86d155de41bb876bc",
12
- "generatedMcpToolDefinitions": "6dc62098f1c71b3816d75115ab5e31734484d9bc19ecff0bce32e7ab50fc00d6",
13
- "pyCommandDescriptors": "60ab2ae91d950b5639093413fb1806d979f024203ffad0b686705a94d5b06e07",
14
- "pyContractRegistry": "6546a216e3de8c9df871454fdae4d3c2406aae87298164193fd964ef46eb2fad",
15
- "pyManifest": "1195f54e990cdfaf1dae1f826c96f3be2bf20a28f219b48ee8abdb1c94c8daf3",
16
- "pyMcpToolDefinitions": "6dc62098f1c71b3816d75115ab5e31734484d9bc19ecff0bce32e7ab50fc00d6",
17
- "tsCommandDescriptors": "60ab2ae91d950b5639093413fb1806d979f024203ffad0b686705a94d5b06e07",
18
- "tsContractRegistry": "6546a216e3de8c9df871454fdae4d3c2406aae87298164193fd964ef46eb2fad",
19
- "tsManifest": "e788d09341d814cfd673d647c95d27bcb35e3fcc893621632966a1abdc2cdfa4",
20
- "tsMcpToolDefinitions": "6dc62098f1c71b3816d75115ab5e31734484d9bc19ecff0bce32e7ab50fc00d6"
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": "664970d781e477a11a683bc265cbd7fc8b0cf9576b50da49ab301b773e38b47d",
28
- "documentationHash": "eebe2a201c559e44b45d1a780713f6b302f56726a03a4a57538fcf6762530826",
29
- "fullDescriptorHash": "422f7c73ce499d926c92ea792b0c590c41c916dac377cf6790c5465d1eb5f384",
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": "71850c223646b5eb0c34566080e1051515774820cd08b19ab7dcfe7757ed4d08"
35
+ "trustDistributionHash": "4453b3198e2041b96369107ce6a082e318b66900123a5b5d8eb06f4c85d1c072"
36
36
  },
37
37
  "generatedManifestVersion": "1.0.0",
38
38
  "registryDigest": {
39
39
  "canonicalHash": "cce2ede8f658d43e0807f7f194e28fc356085e00fc70d99d27ecbd674be14a9f",
40
40
  "commandDigestHash": "85f685455fdf85b757674a3086eb03354a628f22ada1a25afee0fd86b14b92c7",
41
- "descriptorHash": "664970d781e477a11a683bc265cbd7fc8b0cf9576b50da49ab301b773e38b47d",
42
- "documentationHash": "eebe2a201c559e44b45d1a780713f6b302f56726a03a4a57538fcf6762530826",
43
- "fullDescriptorHash": "422f7c73ce499d926c92ea792b0c590c41c916dac377cf6790c5465d1eb5f384",
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": "71850c223646b5eb0c34566080e1051515774820cd08b19ab7dcfe7757ed4d08"
49
+ "trustDistributionHash": "4453b3198e2041b96369107ce6a082e318b66900123a5b5d8eb06f4c85d1c072"
50
50
  },
51
- "schemaHash": "0105b3c948c1481f9ca566751d41f8ad715f92196cc5afbf294c3c098fa20788"
51
+ "schemaHash": "123a5263e08005cbfaf1c089eb35c942b9b28a96c249a318c3d94023e35f0bfd"
52
52
  },
53
53
  "publication": {
54
- "contractLockHash": "ca8a6dc441b6dce243db7ee4d7ec599b1941bd77e1af7d3dba4df68ac03f2117",
54
+ "contractLockHash": "de5bf0ae8b2938e5cd15e77ecfada8ae7619156b57965b3ecc850f2a69e89212",
55
55
  "deterministic": true,
56
56
  "grade": "release-grade",
57
57
  "kind": "benchmark-contract-lock",
58
- "lockDocumentHash": "a9bf9449ca7e5af6ed1840f28e3b3be6018352d6f2a8a5596d39619a0aefc05a",
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 rather than wallet-only readiness.',
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 POLYGON_USDC_E = '0x2791bca1f2de4661ed88a30c99a7a9449aa84174';
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: POLYGON_USDC_E,
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' : 'USDC.e',
344
- address: targetIsPolymarket ? (options.usdc || process.env.USDC || DEFAULT_USDC) : POLYGON_USDC_E,
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 ? 'USDC.e' : 'USDC',
355
- address: targetIsPolymarket ? POLYGON_USDC_E : (options.usdc || process.env.USDC || DEFAULT_USDC),
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 USDC.e is the destination collateral used by Polymarket.'
375
- : 'Assumes Polygon USDC.e is the source asset and Ethereum mainnet USDC is the destination asset used by Pandora.',
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 USDC.e is the destination collateral used by Polymarket.'
396
- : 'Assumes Polygon USDC.e is the source asset and Ethereum mainnet USDC is the destination asset used by Pandora.',
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 USDC.e funding for the Polymarket side.',
828
- '--target pandora plans Polygon USDC.e -> Ethereum USDC funding for the Pandora side.',
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 USDC.e, 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`.',
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 USDC.e, 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`.',
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 USDC.e 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`.',
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 USDC.e, 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`.');
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,