pandora-cli-skills 1.1.86 → 1.1.87
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/benchmarks/latest/core-bundle.json +71 -42
- package/benchmarks/latest/core-history.json +32 -3
- package/benchmarks/latest/core-report.json +38 -38
- package/benchmarks/locks/core.lock.json +36 -36
- package/cli/lib/agent_contract_registry.cjs +156 -2
- package/cli/lib/arb_command_service.cjs +1 -1
- package/cli/lib/arbitrage_service.cjs +67 -21
- package/cli/lib/command_router.cjs +8 -0
- package/cli/lib/debug_command_service.cjs +618 -0
- package/cli/lib/fees_command_service.cjs +1036 -0
- package/cli/lib/mcp_tool_registry.cjs +119 -56
- package/cli/lib/parsers/core_command_flags.cjs +1 -1
- package/cli/lib/polymarket_trade_adapter.cjs +17 -2
- package/cli/lib/similarity_service.cjs +93 -4
- package/cli/pandora.cjs +289 -14
- package/docs/benchmarks/history.json +32 -3
- package/package.json +1 -1
- package/sdk/generated/command-descriptors.json +11307 -10632
- package/sdk/generated/contract-registry.json +73801 -69900
- package/sdk/generated/manifest.json +27 -23
- package/sdk/generated/mcp-tool-definitions.json +15804 -14091
- package/sdk/python/pandora_agent/generated/command-descriptors.json +11307 -10632
- package/sdk/python/pandora_agent/generated/contract-registry.json +73800 -69899
- package/sdk/python/pandora_agent/generated/manifest.json +25 -21
- package/sdk/python/pandora_agent/generated/mcp-tool-definitions.json +15804 -14091
- package/sdk/typescript/generated/command-descriptors.json +11307 -10632
- package/sdk/typescript/generated/contract-registry.json +73801 -69900
- package/sdk/typescript/generated/manifest.json +27 -23
- package/sdk/typescript/generated/mcp-tool-definitions.json +15804 -14091
- package/sdk/typescript/package.json +1 -1
|
@@ -1,18 +1,18 @@
|
|
|
1
1
|
{
|
|
2
2
|
"schemaVersion": "1.0.0",
|
|
3
3
|
"suite": "core",
|
|
4
|
-
"generatedAt": "2026-03-
|
|
4
|
+
"generatedAt": "2026-03-10T00:41:53.550Z",
|
|
5
5
|
"package": {
|
|
6
6
|
"name": "pandora-cli-skills",
|
|
7
|
-
"version": "1.1.
|
|
7
|
+
"version": "1.1.87"
|
|
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": "907a98b2924dc6b3e4e9a0ffce13fce2b88e08aca4e9c15d5b711e3ad83e4680",
|
|
15
|
+
"lockSha256": "a20159bd3ce802894f269e7147bce97c5446b3e42f97f2092a0ff71d1418f8af"
|
|
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.87"
|
|
148
148
|
},
|
|
149
149
|
"contractLock": {
|
|
150
|
-
"capabilitiesLocalHash": "
|
|
151
|
-
"capabilitiesRemoteTemplateHash": "
|
|
150
|
+
"capabilitiesLocalHash": "982f2fbed298f91b5b6a7beceaff3f0a5019711438131d110f41dc0919f5df2b",
|
|
151
|
+
"capabilitiesRemoteTemplateHash": "cebbcee497deed4817ad17e9d92234904e9b847af1479751c4afcba8d5854618",
|
|
152
152
|
"commandDescriptorVersion": "1.4.3",
|
|
153
153
|
"documentationContentHash": "5bb4bb3a181dc43ed07adfd68f7a00a902d9cf9de3e3206e358fb11928ca540a",
|
|
154
154
|
"documentationRegistryHash": "861462b91dd1da73bf3d98cd764d00241b3991ef641c10a096cec32fe84600af",
|
|
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": "b7188a31a032be652c25c226f07d5d7fd52502123d029568def4ca7011b7a518",
|
|
157
|
+
"generatedContractRegistry": "3dbd647cf56cbfdfa93c1bf50dfe7339df6c73f6cb526d7d43bda74a25293f33",
|
|
158
|
+
"generatedManifest": "27e4bf42ebd195369ebfac488b938f90519b9828ced16d4ede0f78b7824a65f0",
|
|
159
|
+
"generatedMcpToolDefinitions": "51a3868fd4ca819a6089ac44cec73fd81ff21f793eb8e2784f29a09316f60596",
|
|
160
|
+
"pyCommandDescriptors": "b7188a31a032be652c25c226f07d5d7fd52502123d029568def4ca7011b7a518",
|
|
161
|
+
"pyContractRegistry": "3dbd647cf56cbfdfa93c1bf50dfe7339df6c73f6cb526d7d43bda74a25293f33",
|
|
162
|
+
"pyManifest": "a0d51b293cc56867594a7b7ed17fe5f13323d1d170beb3bfb5de65f6e67ca186",
|
|
163
|
+
"pyMcpToolDefinitions": "51a3868fd4ca819a6089ac44cec73fd81ff21f793eb8e2784f29a09316f60596",
|
|
164
|
+
"tsCommandDescriptors": "b7188a31a032be652c25c226f07d5d7fd52502123d029568def4ca7011b7a518",
|
|
165
|
+
"tsContractRegistry": "3dbd647cf56cbfdfa93c1bf50dfe7339df6c73f6cb526d7d43bda74a25293f33",
|
|
166
|
+
"tsManifest": "38a9c2d3065f15af7135459b12f84f8939c8efc7a703d8833facd7ed1f803e4a",
|
|
167
|
+
"tsMcpToolDefinitions": "51a3868fd4ca819a6089ac44cec73fd81ff21f793eb8e2784f29a09316f60596"
|
|
168
168
|
},
|
|
169
169
|
"generatedManifestCommandDescriptorVersion": "1.4.3",
|
|
170
|
-
"generatedManifestPackageVersion": "0.1.0-alpha.
|
|
170
|
+
"generatedManifestPackageVersion": "0.1.0-alpha.6",
|
|
171
171
|
"generatedManifestRegistryDigest": {
|
|
172
|
-
"canonicalHash": "
|
|
173
|
-
"commandDigestHash": "
|
|
174
|
-
"descriptorHash": "
|
|
172
|
+
"canonicalHash": "b501a15ce9f61731613d044e2c97a03142a261af386b1182638eb069a5f7ea0a",
|
|
173
|
+
"commandDigestHash": "d44d4b52bc59aa8da9ba7a19f1a85a188d48c20a6ad59a70fd5e0b583acdce08",
|
|
174
|
+
"descriptorHash": "003190b44a3d1fc205ce419221393b08e51286eccf226f1faa6793ec1558b721",
|
|
175
175
|
"documentationHash": "861462b91dd1da73bf3d98cd764d00241b3991ef641c10a096cec32fe84600af",
|
|
176
|
-
"fullDescriptorHash": "
|
|
177
|
-
"namespaceHash": "
|
|
178
|
-
"policyProfilesHash": "
|
|
176
|
+
"fullDescriptorHash": "bbe33e0cc59d9a8a1322fa3d7a170fa249348f1da65ec6717411521f87376b46",
|
|
177
|
+
"namespaceHash": "111925823f74b9dd80c31aa375ceee6a9bc652739e5f9ed0c19263e524d310c5",
|
|
178
|
+
"policyProfilesHash": "6dfcf1c27d5d5d89ee85bbb9ad19636b1bd621b91e89e2b4c3c9282764df81ed",
|
|
179
179
|
"principalTemplatesHash": "525835bb3c4710fa326e662e8a961e74de1798f4fb1bccb2a00be557ed037740",
|
|
180
|
-
"routedTopLevelHash": "
|
|
181
|
-
"topLevelHash": "
|
|
182
|
-
"trustDistributionHash": "
|
|
180
|
+
"routedTopLevelHash": "02e98ac94f1eadbeded065bef652f8a917f108a8a08726ad7163503cc1b3384d",
|
|
181
|
+
"topLevelHash": "b2363d86a80d53dcb1cf2ce05cd547a79df52cdadc9c53c45d29597fa9b5ce6e",
|
|
182
|
+
"trustDistributionHash": "bb032be0e5cc9e25591f52e7026d87a51efdca1ba273dd17ff65bed60c606d12"
|
|
183
183
|
},
|
|
184
184
|
"generatedManifestVersion": "1.0.0",
|
|
185
185
|
"registryDigest": {
|
|
186
|
-
"canonicalHash": "
|
|
187
|
-
"commandDigestHash": "
|
|
188
|
-
"descriptorHash": "
|
|
186
|
+
"canonicalHash": "b501a15ce9f61731613d044e2c97a03142a261af386b1182638eb069a5f7ea0a",
|
|
187
|
+
"commandDigestHash": "d44d4b52bc59aa8da9ba7a19f1a85a188d48c20a6ad59a70fd5e0b583acdce08",
|
|
188
|
+
"descriptorHash": "003190b44a3d1fc205ce419221393b08e51286eccf226f1faa6793ec1558b721",
|
|
189
189
|
"documentationHash": "861462b91dd1da73bf3d98cd764d00241b3991ef641c10a096cec32fe84600af",
|
|
190
|
-
"fullDescriptorHash": "
|
|
191
|
-
"namespaceHash": "
|
|
192
|
-
"policyProfilesHash": "
|
|
190
|
+
"fullDescriptorHash": "bbe33e0cc59d9a8a1322fa3d7a170fa249348f1da65ec6717411521f87376b46",
|
|
191
|
+
"namespaceHash": "111925823f74b9dd80c31aa375ceee6a9bc652739e5f9ed0c19263e524d310c5",
|
|
192
|
+
"policyProfilesHash": "6dfcf1c27d5d5d89ee85bbb9ad19636b1bd621b91e89e2b4c3c9282764df81ed",
|
|
193
193
|
"principalTemplatesHash": "525835bb3c4710fa326e662e8a961e74de1798f4fb1bccb2a00be557ed037740",
|
|
194
|
-
"routedTopLevelHash": "
|
|
195
|
-
"topLevelHash": "
|
|
196
|
-
"trustDistributionHash": "
|
|
194
|
+
"routedTopLevelHash": "02e98ac94f1eadbeded065bef652f8a917f108a8a08726ad7163503cc1b3384d",
|
|
195
|
+
"topLevelHash": "b2363d86a80d53dcb1cf2ce05cd547a79df52cdadc9c53c45d29597fa9b5ce6e",
|
|
196
|
+
"trustDistributionHash": "bb032be0e5cc9e25591f52e7026d87a51efdca1ba273dd17ff65bed60c606d12"
|
|
197
197
|
},
|
|
198
|
-
"schemaHash": "
|
|
198
|
+
"schemaHash": "2acb24df53f855c4e6e113feef3301836df74306a0dc96bfcb89498493dec708"
|
|
199
199
|
},
|
|
200
200
|
"contractLockMatchesExpected": true
|
|
201
201
|
},
|
|
202
202
|
"history": {
|
|
203
203
|
"schemaVersion": "1.0.0",
|
|
204
204
|
"suite": "core",
|
|
205
|
-
"generatedAt": "2026-03-
|
|
206
|
-
"latestVersion": "1.1.
|
|
207
|
-
"latestGeneratedAt": "2026-03-
|
|
205
|
+
"generatedAt": "2026-03-10T00:41:53.550Z",
|
|
206
|
+
"latestVersion": "1.1.87",
|
|
207
|
+
"latestGeneratedAt": "2026-03-10T00:41:53.550Z",
|
|
208
208
|
"entries": [
|
|
209
|
+
{
|
|
210
|
+
"schemaVersion": "1.0.0",
|
|
211
|
+
"suite": "core",
|
|
212
|
+
"packageName": "pandora-cli-skills",
|
|
213
|
+
"version": "1.1.87",
|
|
214
|
+
"packageVersion": "1.1.87",
|
|
215
|
+
"generatedAt": "2026-03-10T00:41:53.550Z",
|
|
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": "003190b44a3d1fc205ce419221393b08e51286eccf226f1faa6793ec1558b721",
|
|
233
|
+
"documentationContentHash": "5bb4bb3a181dc43ed07adfd68f7a00a902d9cf9de3e3206e358fb11928ca540a",
|
|
234
|
+
"reportSha256": "907a98b2924dc6b3e4e9a0ffce13fce2b88e08aca4e9c15d5b711e3ad83e4680",
|
|
235
|
+
"lockSha256": "a20159bd3ce802894f269e7147bce97c5446b3e42f97f2092a0ff71d1418f8af",
|
|
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-03-
|
|
5
|
-
"latestVersion": "1.1.
|
|
6
|
-
"latestGeneratedAt": "2026-03-
|
|
4
|
+
"generatedAt": "2026-03-10T00:41:53.550Z",
|
|
5
|
+
"latestVersion": "1.1.87",
|
|
6
|
+
"latestGeneratedAt": "2026-03-10T00:41:53.550Z",
|
|
7
7
|
"entries": [
|
|
8
|
+
{
|
|
9
|
+
"schemaVersion": "1.0.0",
|
|
10
|
+
"suite": "core",
|
|
11
|
+
"packageName": "pandora-cli-skills",
|
|
12
|
+
"version": "1.1.87",
|
|
13
|
+
"packageVersion": "1.1.87",
|
|
14
|
+
"generatedAt": "2026-03-10T00:41:53.550Z",
|
|
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": "003190b44a3d1fc205ce419221393b08e51286eccf226f1faa6793ec1558b721",
|
|
32
|
+
"documentationContentHash": "5bb4bb3a181dc43ed07adfd68f7a00a902d9cf9de3e3206e358fb11928ca540a",
|
|
33
|
+
"reportSha256": "907a98b2924dc6b3e4e9a0ffce13fce2b88e08aca4e9c15d5b711e3ad83e4680",
|
|
34
|
+
"lockSha256": "a20159bd3ce802894f269e7147bce97c5446b3e42f97f2092a0ff71d1418f8af",
|
|
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": "982f2fbed298f91b5b6a7beceaff3f0a5019711438131d110f41dc0919f5df2b",
|
|
4
|
+
"capabilitiesRemoteTemplateHash": "cebbcee497deed4817ad17e9d92234904e9b847af1479751c4afcba8d5854618",
|
|
5
5
|
"commandDescriptorVersion": "1.4.3",
|
|
6
6
|
"documentationContentHash": "5bb4bb3a181dc43ed07adfd68f7a00a902d9cf9de3e3206e358fb11928ca540a",
|
|
7
7
|
"documentationRegistryHash": "861462b91dd1da73bf3d98cd764d00241b3991ef641c10a096cec32fe84600af",
|
|
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": "b7188a31a032be652c25c226f07d5d7fd52502123d029568def4ca7011b7a518",
|
|
10
|
+
"generatedContractRegistry": "3dbd647cf56cbfdfa93c1bf50dfe7339df6c73f6cb526d7d43bda74a25293f33",
|
|
11
|
+
"generatedManifest": "27e4bf42ebd195369ebfac488b938f90519b9828ced16d4ede0f78b7824a65f0",
|
|
12
|
+
"generatedMcpToolDefinitions": "51a3868fd4ca819a6089ac44cec73fd81ff21f793eb8e2784f29a09316f60596",
|
|
13
|
+
"pyCommandDescriptors": "b7188a31a032be652c25c226f07d5d7fd52502123d029568def4ca7011b7a518",
|
|
14
|
+
"pyContractRegistry": "3dbd647cf56cbfdfa93c1bf50dfe7339df6c73f6cb526d7d43bda74a25293f33",
|
|
15
|
+
"pyManifest": "a0d51b293cc56867594a7b7ed17fe5f13323d1d170beb3bfb5de65f6e67ca186",
|
|
16
|
+
"pyMcpToolDefinitions": "51a3868fd4ca819a6089ac44cec73fd81ff21f793eb8e2784f29a09316f60596",
|
|
17
|
+
"tsCommandDescriptors": "b7188a31a032be652c25c226f07d5d7fd52502123d029568def4ca7011b7a518",
|
|
18
|
+
"tsContractRegistry": "3dbd647cf56cbfdfa93c1bf50dfe7339df6c73f6cb526d7d43bda74a25293f33",
|
|
19
|
+
"tsManifest": "38a9c2d3065f15af7135459b12f84f8939c8efc7a703d8833facd7ed1f803e4a",
|
|
20
|
+
"tsMcpToolDefinitions": "51a3868fd4ca819a6089ac44cec73fd81ff21f793eb8e2784f29a09316f60596"
|
|
21
21
|
},
|
|
22
22
|
"generatedManifestCommandDescriptorVersion": "1.4.3",
|
|
23
|
-
"generatedManifestPackageVersion": "0.1.0-alpha.
|
|
23
|
+
"generatedManifestPackageVersion": "0.1.0-alpha.6",
|
|
24
24
|
"generatedManifestRegistryDigest": {
|
|
25
|
-
"canonicalHash": "
|
|
26
|
-
"commandDigestHash": "
|
|
27
|
-
"descriptorHash": "
|
|
25
|
+
"canonicalHash": "b501a15ce9f61731613d044e2c97a03142a261af386b1182638eb069a5f7ea0a",
|
|
26
|
+
"commandDigestHash": "d44d4b52bc59aa8da9ba7a19f1a85a188d48c20a6ad59a70fd5e0b583acdce08",
|
|
27
|
+
"descriptorHash": "003190b44a3d1fc205ce419221393b08e51286eccf226f1faa6793ec1558b721",
|
|
28
28
|
"documentationHash": "861462b91dd1da73bf3d98cd764d00241b3991ef641c10a096cec32fe84600af",
|
|
29
|
-
"fullDescriptorHash": "
|
|
30
|
-
"namespaceHash": "
|
|
31
|
-
"policyProfilesHash": "
|
|
29
|
+
"fullDescriptorHash": "bbe33e0cc59d9a8a1322fa3d7a170fa249348f1da65ec6717411521f87376b46",
|
|
30
|
+
"namespaceHash": "111925823f74b9dd80c31aa375ceee6a9bc652739e5f9ed0c19263e524d310c5",
|
|
31
|
+
"policyProfilesHash": "6dfcf1c27d5d5d89ee85bbb9ad19636b1bd621b91e89e2b4c3c9282764df81ed",
|
|
32
32
|
"principalTemplatesHash": "525835bb3c4710fa326e662e8a961e74de1798f4fb1bccb2a00be557ed037740",
|
|
33
|
-
"routedTopLevelHash": "
|
|
34
|
-
"topLevelHash": "
|
|
35
|
-
"trustDistributionHash": "
|
|
33
|
+
"routedTopLevelHash": "02e98ac94f1eadbeded065bef652f8a917f108a8a08726ad7163503cc1b3384d",
|
|
34
|
+
"topLevelHash": "b2363d86a80d53dcb1cf2ce05cd547a79df52cdadc9c53c45d29597fa9b5ce6e",
|
|
35
|
+
"trustDistributionHash": "bb032be0e5cc9e25591f52e7026d87a51efdca1ba273dd17ff65bed60c606d12"
|
|
36
36
|
},
|
|
37
37
|
"generatedManifestVersion": "1.0.0",
|
|
38
38
|
"registryDigest": {
|
|
39
|
-
"canonicalHash": "
|
|
40
|
-
"commandDigestHash": "
|
|
41
|
-
"descriptorHash": "
|
|
39
|
+
"canonicalHash": "b501a15ce9f61731613d044e2c97a03142a261af386b1182638eb069a5f7ea0a",
|
|
40
|
+
"commandDigestHash": "d44d4b52bc59aa8da9ba7a19f1a85a188d48c20a6ad59a70fd5e0b583acdce08",
|
|
41
|
+
"descriptorHash": "003190b44a3d1fc205ce419221393b08e51286eccf226f1faa6793ec1558b721",
|
|
42
42
|
"documentationHash": "861462b91dd1da73bf3d98cd764d00241b3991ef641c10a096cec32fe84600af",
|
|
43
|
-
"fullDescriptorHash": "
|
|
44
|
-
"namespaceHash": "
|
|
45
|
-
"policyProfilesHash": "
|
|
43
|
+
"fullDescriptorHash": "bbe33e0cc59d9a8a1322fa3d7a170fa249348f1da65ec6717411521f87376b46",
|
|
44
|
+
"namespaceHash": "111925823f74b9dd80c31aa375ceee6a9bc652739e5f9ed0c19263e524d310c5",
|
|
45
|
+
"policyProfilesHash": "6dfcf1c27d5d5d89ee85bbb9ad19636b1bd621b91e89e2b4c3c9282764df81ed",
|
|
46
46
|
"principalTemplatesHash": "525835bb3c4710fa326e662e8a961e74de1798f4fb1bccb2a00be557ed037740",
|
|
47
|
-
"routedTopLevelHash": "
|
|
48
|
-
"topLevelHash": "
|
|
49
|
-
"trustDistributionHash": "
|
|
47
|
+
"routedTopLevelHash": "02e98ac94f1eadbeded065bef652f8a917f108a8a08726ad7163503cc1b3384d",
|
|
48
|
+
"topLevelHash": "b2363d86a80d53dcb1cf2ce05cd547a79df52cdadc9c53c45d29597fa9b5ce6e",
|
|
49
|
+
"trustDistributionHash": "bb032be0e5cc9e25591f52e7026d87a51efdca1ba273dd17ff65bed60c606d12"
|
|
50
50
|
},
|
|
51
|
-
"schemaHash": "
|
|
51
|
+
"schemaHash": "2acb24df53f855c4e6e113feef3301836df74306a0dc96bfcb89498493dec708"
|
|
52
52
|
},
|
|
53
53
|
"contractLockMatchesExpected": true,
|
|
54
54
|
"contractLockMismatches": [],
|
|
@@ -284,7 +284,7 @@
|
|
|
284
284
|
]
|
|
285
285
|
},
|
|
286
286
|
"publication": {
|
|
287
|
-
"contractLockHash": "
|
|
287
|
+
"contractLockHash": "1742599113617d57d01c97a554585f3997f5d29ac18b4b072dc758886040eb6b",
|
|
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": "5e0989dde61e1f0ef485db7fb1a820b8c5a76e85f0befbea6b348da28993d37c",
|
|
297
|
+
"suiteLockHash": "a20159bd3ce802894f269e7147bce97c5446b3e42f97f2092a0ff71d1418f8af",
|
|
298
298
|
"suiteLockPath": "benchmarks/locks/core.lock.json"
|
|
299
299
|
},
|
|
300
300
|
"runtime": {
|
|
301
|
-
"packageVersion": "1.1.
|
|
301
|
+
"packageVersion": "1.1.87"
|
|
302
302
|
},
|
|
303
303
|
"scenarios": [
|
|
304
304
|
{
|
|
@@ -1,61 +1,61 @@
|
|
|
1
1
|
{
|
|
2
2
|
"contractLock": {
|
|
3
|
-
"capabilitiesLocalHash": "
|
|
4
|
-
"capabilitiesRemoteTemplateHash": "
|
|
3
|
+
"capabilitiesLocalHash": "982f2fbed298f91b5b6a7beceaff3f0a5019711438131d110f41dc0919f5df2b",
|
|
4
|
+
"capabilitiesRemoteTemplateHash": "cebbcee497deed4817ad17e9d92234904e9b847af1479751c4afcba8d5854618",
|
|
5
5
|
"commandDescriptorVersion": "1.4.3",
|
|
6
6
|
"documentationContentHash": "5bb4bb3a181dc43ed07adfd68f7a00a902d9cf9de3e3206e358fb11928ca540a",
|
|
7
7
|
"documentationRegistryHash": "861462b91dd1da73bf3d98cd764d00241b3991ef641c10a096cec32fe84600af",
|
|
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": "b7188a31a032be652c25c226f07d5d7fd52502123d029568def4ca7011b7a518",
|
|
10
|
+
"generatedContractRegistry": "3dbd647cf56cbfdfa93c1bf50dfe7339df6c73f6cb526d7d43bda74a25293f33",
|
|
11
|
+
"generatedManifest": "27e4bf42ebd195369ebfac488b938f90519b9828ced16d4ede0f78b7824a65f0",
|
|
12
|
+
"generatedMcpToolDefinitions": "51a3868fd4ca819a6089ac44cec73fd81ff21f793eb8e2784f29a09316f60596",
|
|
13
|
+
"pyCommandDescriptors": "b7188a31a032be652c25c226f07d5d7fd52502123d029568def4ca7011b7a518",
|
|
14
|
+
"pyContractRegistry": "3dbd647cf56cbfdfa93c1bf50dfe7339df6c73f6cb526d7d43bda74a25293f33",
|
|
15
|
+
"pyManifest": "a0d51b293cc56867594a7b7ed17fe5f13323d1d170beb3bfb5de65f6e67ca186",
|
|
16
|
+
"pyMcpToolDefinitions": "51a3868fd4ca819a6089ac44cec73fd81ff21f793eb8e2784f29a09316f60596",
|
|
17
|
+
"tsCommandDescriptors": "b7188a31a032be652c25c226f07d5d7fd52502123d029568def4ca7011b7a518",
|
|
18
|
+
"tsContractRegistry": "3dbd647cf56cbfdfa93c1bf50dfe7339df6c73f6cb526d7d43bda74a25293f33",
|
|
19
|
+
"tsManifest": "38a9c2d3065f15af7135459b12f84f8939c8efc7a703d8833facd7ed1f803e4a",
|
|
20
|
+
"tsMcpToolDefinitions": "51a3868fd4ca819a6089ac44cec73fd81ff21f793eb8e2784f29a09316f60596"
|
|
21
21
|
},
|
|
22
22
|
"generatedManifestCommandDescriptorVersion": "1.4.3",
|
|
23
|
-
"generatedManifestPackageVersion": "0.1.0-alpha.
|
|
23
|
+
"generatedManifestPackageVersion": "0.1.0-alpha.6",
|
|
24
24
|
"generatedManifestRegistryDigest": {
|
|
25
|
-
"canonicalHash": "
|
|
26
|
-
"commandDigestHash": "
|
|
27
|
-
"descriptorHash": "
|
|
25
|
+
"canonicalHash": "b501a15ce9f61731613d044e2c97a03142a261af386b1182638eb069a5f7ea0a",
|
|
26
|
+
"commandDigestHash": "d44d4b52bc59aa8da9ba7a19f1a85a188d48c20a6ad59a70fd5e0b583acdce08",
|
|
27
|
+
"descriptorHash": "003190b44a3d1fc205ce419221393b08e51286eccf226f1faa6793ec1558b721",
|
|
28
28
|
"documentationHash": "861462b91dd1da73bf3d98cd764d00241b3991ef641c10a096cec32fe84600af",
|
|
29
|
-
"fullDescriptorHash": "
|
|
30
|
-
"namespaceHash": "
|
|
31
|
-
"policyProfilesHash": "
|
|
29
|
+
"fullDescriptorHash": "bbe33e0cc59d9a8a1322fa3d7a170fa249348f1da65ec6717411521f87376b46",
|
|
30
|
+
"namespaceHash": "111925823f74b9dd80c31aa375ceee6a9bc652739e5f9ed0c19263e524d310c5",
|
|
31
|
+
"policyProfilesHash": "6dfcf1c27d5d5d89ee85bbb9ad19636b1bd621b91e89e2b4c3c9282764df81ed",
|
|
32
32
|
"principalTemplatesHash": "525835bb3c4710fa326e662e8a961e74de1798f4fb1bccb2a00be557ed037740",
|
|
33
|
-
"routedTopLevelHash": "
|
|
34
|
-
"topLevelHash": "
|
|
35
|
-
"trustDistributionHash": "
|
|
33
|
+
"routedTopLevelHash": "02e98ac94f1eadbeded065bef652f8a917f108a8a08726ad7163503cc1b3384d",
|
|
34
|
+
"topLevelHash": "b2363d86a80d53dcb1cf2ce05cd547a79df52cdadc9c53c45d29597fa9b5ce6e",
|
|
35
|
+
"trustDistributionHash": "bb032be0e5cc9e25591f52e7026d87a51efdca1ba273dd17ff65bed60c606d12"
|
|
36
36
|
},
|
|
37
37
|
"generatedManifestVersion": "1.0.0",
|
|
38
38
|
"registryDigest": {
|
|
39
|
-
"canonicalHash": "
|
|
40
|
-
"commandDigestHash": "
|
|
41
|
-
"descriptorHash": "
|
|
39
|
+
"canonicalHash": "b501a15ce9f61731613d044e2c97a03142a261af386b1182638eb069a5f7ea0a",
|
|
40
|
+
"commandDigestHash": "d44d4b52bc59aa8da9ba7a19f1a85a188d48c20a6ad59a70fd5e0b583acdce08",
|
|
41
|
+
"descriptorHash": "003190b44a3d1fc205ce419221393b08e51286eccf226f1faa6793ec1558b721",
|
|
42
42
|
"documentationHash": "861462b91dd1da73bf3d98cd764d00241b3991ef641c10a096cec32fe84600af",
|
|
43
|
-
"fullDescriptorHash": "
|
|
44
|
-
"namespaceHash": "
|
|
45
|
-
"policyProfilesHash": "
|
|
43
|
+
"fullDescriptorHash": "bbe33e0cc59d9a8a1322fa3d7a170fa249348f1da65ec6717411521f87376b46",
|
|
44
|
+
"namespaceHash": "111925823f74b9dd80c31aa375ceee6a9bc652739e5f9ed0c19263e524d310c5",
|
|
45
|
+
"policyProfilesHash": "6dfcf1c27d5d5d89ee85bbb9ad19636b1bd621b91e89e2b4c3c9282764df81ed",
|
|
46
46
|
"principalTemplatesHash": "525835bb3c4710fa326e662e8a961e74de1798f4fb1bccb2a00be557ed037740",
|
|
47
|
-
"routedTopLevelHash": "
|
|
48
|
-
"topLevelHash": "
|
|
49
|
-
"trustDistributionHash": "
|
|
47
|
+
"routedTopLevelHash": "02e98ac94f1eadbeded065bef652f8a917f108a8a08726ad7163503cc1b3384d",
|
|
48
|
+
"topLevelHash": "b2363d86a80d53dcb1cf2ce05cd547a79df52cdadc9c53c45d29597fa9b5ce6e",
|
|
49
|
+
"trustDistributionHash": "bb032be0e5cc9e25591f52e7026d87a51efdca1ba273dd17ff65bed60c606d12"
|
|
50
50
|
},
|
|
51
|
-
"schemaHash": "
|
|
51
|
+
"schemaHash": "2acb24df53f855c4e6e113feef3301836df74306a0dc96bfcb89498493dec708"
|
|
52
52
|
},
|
|
53
53
|
"publication": {
|
|
54
|
-
"contractLockHash": "
|
|
54
|
+
"contractLockHash": "1742599113617d57d01c97a554585f3997f5d29ac18b4b072dc758886040eb6b",
|
|
55
55
|
"deterministic": true,
|
|
56
56
|
"grade": "release-grade",
|
|
57
57
|
"kind": "benchmark-contract-lock",
|
|
58
|
-
"lockDocumentHash": "
|
|
58
|
+
"lockDocumentHash": "6756592a66853aade85f2531e8b372fda6bf293d0f69767519da40929fca3204",
|
|
59
59
|
"suiteLockPath": "benchmarks/locks/core.lock.json"
|
|
60
60
|
},
|
|
61
61
|
"schemaVersion": "1.0.0",
|
|
@@ -113,16 +113,28 @@ function buildInputSchema({
|
|
|
113
113
|
schema.properties.intent = buildIntentSchema();
|
|
114
114
|
}
|
|
115
115
|
|
|
116
|
+
const allOf = [];
|
|
117
|
+
|
|
116
118
|
if (Array.isArray(anyOf) && anyOf.length) {
|
|
117
|
-
|
|
119
|
+
const branches = anyOf
|
|
118
120
|
.filter((requiredSet) => Array.isArray(requiredSet) && requiredSet.length)
|
|
119
121
|
.map((requiredSet) => ({ required: [...requiredSet] }));
|
|
122
|
+
if (branches.length) {
|
|
123
|
+
allOf.push({ anyOf: branches });
|
|
124
|
+
}
|
|
120
125
|
}
|
|
121
126
|
|
|
122
127
|
if (Array.isArray(oneOf) && oneOf.length) {
|
|
123
|
-
|
|
128
|
+
const branches = oneOf
|
|
124
129
|
.filter((branch) => branch && typeof branch === 'object')
|
|
125
130
|
.map((branch) => ({ ...branch }));
|
|
131
|
+
if (branches.length) {
|
|
132
|
+
allOf.push({ oneOf: branches });
|
|
133
|
+
}
|
|
134
|
+
}
|
|
135
|
+
|
|
136
|
+
if (allOf.length) {
|
|
137
|
+
schema.allOf = allOf;
|
|
126
138
|
}
|
|
127
139
|
|
|
128
140
|
return schema;
|
|
@@ -3939,6 +3951,148 @@ const commandContracts = [
|
|
|
3939
3951
|
expectedLatencyMs: 1500,
|
|
3940
3952
|
},
|
|
3941
3953
|
}),
|
|
3954
|
+
commandContract({
|
|
3955
|
+
name: 'fees',
|
|
3956
|
+
summary: 'Read indexed oracle-fee history and recipient summaries. Use `fees.withdraw` for market-level protocol-fee withdrawals.',
|
|
3957
|
+
usage:
|
|
3958
|
+
'pandora [--output table|json] fees [--wallet <address>] [--chain-id <id>] [--tx-hash <hash>] [--event-name <name>] [--limit <n>] [--before <cursor>] [--after <cursor>] [--order-direction asc|desc] [--indexer-url <url>] [--timeout-ms <ms>]',
|
|
3959
|
+
emits: ['fees', 'fees.help'],
|
|
3960
|
+
dataSchema: GENERIC_DATA_SCHEMA_REF,
|
|
3961
|
+
mcpExposed: true,
|
|
3962
|
+
mcp: {
|
|
3963
|
+
command: ['fees'],
|
|
3964
|
+
description: 'Read indexed oracle-fee events and recipient history. Use `fees withdraw` when you need the live market-level protocol-fee withdrawal surface.',
|
|
3965
|
+
inputSchema: buildInputSchema({
|
|
3966
|
+
flagProperties: {
|
|
3967
|
+
wallet: commonFlags.wallet,
|
|
3968
|
+
'chain-id': commonFlags.chainId,
|
|
3969
|
+
'tx-hash': stringSchema('Transaction hash filter.'),
|
|
3970
|
+
'event-name': stringSchema('Oracle-fee event name filter.'),
|
|
3971
|
+
limit: commonFlags.limit,
|
|
3972
|
+
before: stringSchema('Cursor before.'),
|
|
3973
|
+
after: stringSchema('Cursor after.'),
|
|
3974
|
+
'order-direction': enumSchema(['asc', 'desc'], 'Sort direction.'),
|
|
3975
|
+
'indexer-url': commonFlags.indexerUrl,
|
|
3976
|
+
'timeout-ms': commonFlags.timeoutMs,
|
|
3977
|
+
},
|
|
3978
|
+
}),
|
|
3979
|
+
preferred: true,
|
|
3980
|
+
},
|
|
3981
|
+
agentPlatform: {
|
|
3982
|
+
externalDependencies: ['indexer'],
|
|
3983
|
+
expectedLatencyMs: 800,
|
|
3984
|
+
},
|
|
3985
|
+
}),
|
|
3986
|
+
commandContract({
|
|
3987
|
+
name: 'fees.withdraw',
|
|
3988
|
+
summary: 'Dry-run or execute a market-level `withdrawProtocolFees()` call on a Pandora AMM market contract.',
|
|
3989
|
+
usage:
|
|
3990
|
+
'pandora [--output table|json] fees withdraw --market-address <address> --dry-run|--execute [--fork] [--fork-rpc-url <url>] [--fork-chain-id <id>] [--chain-id <id>] [--rpc-url <url>] [--private-key <hex>|--profile-id <id>|--profile-file <path>] [--dotenv-path <path>] [--skip-dotenv] [--timeout-ms <ms>]',
|
|
3991
|
+
emits: ['fees.withdraw', 'fees.withdraw.help', 'fees.help'],
|
|
3992
|
+
dataSchema: GENERIC_DATA_SCHEMA_REF,
|
|
3993
|
+
mcpExposed: true,
|
|
3994
|
+
mcp: {
|
|
3995
|
+
command: ['fees', 'withdraw'],
|
|
3996
|
+
description: 'Dry-run or execute a Pandora market contract `withdrawProtocolFees()` call. This withdraws collected collateral fees and splits them between the platform treasury and market creator.',
|
|
3997
|
+
inputSchema: buildInputSchema({
|
|
3998
|
+
includeIntent: true,
|
|
3999
|
+
flagProperties: {
|
|
4000
|
+
'dotenv-path': stringSchema('Env file path.'),
|
|
4001
|
+
'skip-dotenv': booleanSchema('Skip env loading.'),
|
|
4002
|
+
'market-address': commonFlags.marketAddress,
|
|
4003
|
+
'dry-run': booleanSchema('Run dry-run mode.'),
|
|
4004
|
+
execute: booleanSchema('Execute the withdrawal transaction.'),
|
|
4005
|
+
fork: booleanSchema('Run in fork mode.'),
|
|
4006
|
+
'fork-rpc-url': stringSchema('Fork RPC URL.'),
|
|
4007
|
+
'fork-chain-id': integerSchema('Fork chain id.', { minimum: 1 }),
|
|
4008
|
+
'chain-id': commonFlags.chainId,
|
|
4009
|
+
'rpc-url': commonFlags.rpcUrl,
|
|
4010
|
+
'private-key': commonFlags.privateKey,
|
|
4011
|
+
'profile-id': commonFlags.profileId,
|
|
4012
|
+
'profile-file': commonFlags.profileFile,
|
|
4013
|
+
'timeout-ms': commonFlags.timeoutMs,
|
|
4014
|
+
},
|
|
4015
|
+
requiredFlags: ['market-address'],
|
|
4016
|
+
}),
|
|
4017
|
+
preferred: true,
|
|
4018
|
+
mutating: true,
|
|
4019
|
+
safeFlags: ['--dry-run'],
|
|
4020
|
+
executeFlags: ['--execute'],
|
|
4021
|
+
},
|
|
4022
|
+
agentPlatform: {
|
|
4023
|
+
externalDependencies: ['rpc', 'wallet-secrets'],
|
|
4024
|
+
expectedLatencyMs: 1200,
|
|
4025
|
+
canRunConcurrent: false,
|
|
4026
|
+
idempotency: 'conditional',
|
|
4027
|
+
riskLevel: 'medium',
|
|
4028
|
+
policyScopes: ['fees:write', 'network:rpc'],
|
|
4029
|
+
},
|
|
4030
|
+
}),
|
|
4031
|
+
commandContract({
|
|
4032
|
+
name: 'debug',
|
|
4033
|
+
summary: 'Debug command family help and routing entrypoint.',
|
|
4034
|
+
usage: 'pandora [--output table|json] debug market|tx ...',
|
|
4035
|
+
emits: ['debug.help'],
|
|
4036
|
+
dataSchema: GENERIC_DATA_SCHEMA_REF,
|
|
4037
|
+
}),
|
|
4038
|
+
commandContract({
|
|
4039
|
+
name: 'debug.market',
|
|
4040
|
+
summary: 'Read a single-market forensic snapshot with poll, position, trade, liquidity, and claim context.',
|
|
4041
|
+
usage:
|
|
4042
|
+
'pandora [--output table|json] debug market --market-address <address>|--poll-address <address> [--chain-id <id>] [--limit <n>] [--indexer-url <url>] [--timeout-ms <ms>]',
|
|
4043
|
+
emits: ['debug.market', 'debug.market.help', 'debug.help'],
|
|
4044
|
+
dataSchema: GENERIC_DATA_SCHEMA_REF,
|
|
4045
|
+
mcpExposed: true,
|
|
4046
|
+
mcp: {
|
|
4047
|
+
command: ['debug', 'market'],
|
|
4048
|
+
description: 'Read a single-market forensic snapshot with poll, position, trade, liquidity-event, and claim-event context for debugging and operator triage.',
|
|
4049
|
+
inputSchema: buildInputSchema({
|
|
4050
|
+
flagProperties: {
|
|
4051
|
+
'market-address': commonFlags.marketAddress,
|
|
4052
|
+
'poll-address': commonFlags.pollAddress,
|
|
4053
|
+
'chain-id': commonFlags.chainId,
|
|
4054
|
+
limit: commonFlags.limit,
|
|
4055
|
+
'indexer-url': commonFlags.indexerUrl,
|
|
4056
|
+
'timeout-ms': commonFlags.timeoutMs,
|
|
4057
|
+
},
|
|
4058
|
+
anyOf: [['market-address'], ['poll-address']],
|
|
4059
|
+
oneOf: buildExclusivePresenceBranches([['market-address'], ['poll-address']]),
|
|
4060
|
+
}),
|
|
4061
|
+
preferred: true,
|
|
4062
|
+
},
|
|
4063
|
+
agentPlatform: {
|
|
4064
|
+
externalDependencies: ['indexer'],
|
|
4065
|
+
expectedLatencyMs: 1200,
|
|
4066
|
+
},
|
|
4067
|
+
}),
|
|
4068
|
+
commandContract({
|
|
4069
|
+
name: 'debug.tx',
|
|
4070
|
+
summary: 'Correlate indexed trades and events for a single transaction hash.',
|
|
4071
|
+
usage:
|
|
4072
|
+
'pandora [--output table|json] debug tx --tx-hash <hash> [--chain-id <id>] [--limit <n>] [--indexer-url <url>] [--timeout-ms <ms>]',
|
|
4073
|
+
emits: ['debug.tx', 'debug.tx.help', 'debug.help'],
|
|
4074
|
+
dataSchema: GENERIC_DATA_SCHEMA_REF,
|
|
4075
|
+
mcpExposed: true,
|
|
4076
|
+
mcp: {
|
|
4077
|
+
command: ['debug', 'tx'],
|
|
4078
|
+
description: 'Correlate indexed trades, liquidity events, oracle-fee events, and claim events for a single transaction hash.',
|
|
4079
|
+
inputSchema: buildInputSchema({
|
|
4080
|
+
flagProperties: {
|
|
4081
|
+
'tx-hash': stringSchema('Transaction hash.'),
|
|
4082
|
+
'chain-id': commonFlags.chainId,
|
|
4083
|
+
limit: commonFlags.limit,
|
|
4084
|
+
'indexer-url': commonFlags.indexerUrl,
|
|
4085
|
+
'timeout-ms': commonFlags.timeoutMs,
|
|
4086
|
+
},
|
|
4087
|
+
requiredFlags: ['tx-hash'],
|
|
4088
|
+
}),
|
|
4089
|
+
preferred: true,
|
|
4090
|
+
},
|
|
4091
|
+
agentPlatform: {
|
|
4092
|
+
externalDependencies: ['indexer'],
|
|
4093
|
+
expectedLatencyMs: 1200,
|
|
4094
|
+
},
|
|
4095
|
+
}),
|
|
3942
4096
|
commandContract({
|
|
3943
4097
|
name: 'fund-check',
|
|
3944
4098
|
summary: 'Estimate immediate hedge funding needs from live mirror gaps, then compare them against Polymarket balances, approvals, and gas reserve. This is the canonical high-level wallet shortfall planner.',
|