pandora-cli-skills 1.1.126 → 1.1.127
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 +55 -26
- package/benchmarks/latest/core-history.json +35 -6
- package/benchmarks/latest/core-report.json +19 -19
- package/benchmarks/locks/core.lock.json +17 -17
- package/cli/lib/mirror_handlers/hedge.cjs +12 -0
- package/cli/lib/mirror_hedge/planning.cjs +51 -8
- package/cli/lib/mirror_hedge/status.cjs +21 -0
- package/cli/lib/mirror_hedge_service.cjs +217 -0
- package/cli/lib/mirror_hedge_state_store.cjs +21 -0
- package/docs/benchmarks/history.json +35 -6
- package/docs/skills/command-reference.md +3 -0
- package/docs/skills/mirror-operations.md +18 -0
- package/docs/trust/mirror-hedge-sell-remediation-validation.md +49 -0
- package/package.json +1 -1
- package/sdk/generated/contract-registry.json +24 -24
- package/sdk/generated/manifest.json +7 -7
- package/sdk/python/pandora_agent/generated/manifest.json +5 -5
- package/sdk/typescript/generated/manifest.json +5 -5
|
@@ -1,18 +1,18 @@
|
|
|
1
1
|
{
|
|
2
2
|
"schemaVersion": "1.0.0",
|
|
3
3
|
"suite": "core",
|
|
4
|
-
"generatedAt": "2026-03-
|
|
4
|
+
"generatedAt": "2026-03-26T18:57:06.996Z",
|
|
5
5
|
"package": {
|
|
6
6
|
"name": "pandora-cli-skills",
|
|
7
|
-
"version": "1.1.
|
|
7
|
+
"version": "1.1.127"
|
|
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": "cda5a55e07192182c5f638e41896c719a6ef3ec0a8db51eeef986d0aaf799ce9",
|
|
15
|
+
"lockSha256": "c2b0f1b3f68656cc2032c92764e20d792d8d9813cfaccdf7b26e3ad482681b5e"
|
|
16
16
|
},
|
|
17
17
|
"latest": {
|
|
18
18
|
"summary": {
|
|
@@ -144,26 +144,26 @@
|
|
|
144
144
|
]
|
|
145
145
|
},
|
|
146
146
|
"runtime": {
|
|
147
|
-
"packageVersion": "1.1.
|
|
147
|
+
"packageVersion": "1.1.127"
|
|
148
148
|
},
|
|
149
149
|
"contractLock": {
|
|
150
|
-
"capabilitiesLocalHash": "
|
|
151
|
-
"capabilitiesRemoteTemplateHash": "
|
|
150
|
+
"capabilitiesLocalHash": "32f428bf34cbc8a920f79476a8b28a2c47a1a573ab5b921edcb34fcdc0ec5890",
|
|
151
|
+
"capabilitiesRemoteTemplateHash": "08c384198f61f89d6facc5e4c1753eff6f3f3def8c873af39ddc8207a7bd19d9",
|
|
152
152
|
"commandDescriptorVersion": "1.4.3",
|
|
153
|
-
"documentationContentHash": "
|
|
154
|
-
"documentationRegistryHash": "
|
|
153
|
+
"documentationContentHash": "74fc7863c3b3f684149f2feb518c9b0c9f9d7ef113c09dd8ba1872f690ab7f95",
|
|
154
|
+
"documentationRegistryHash": "2bca31729c9c580125bd25764291699b63532afaa67d9380c72d1dda637944b7",
|
|
155
155
|
"generatedArtifactHashes": {
|
|
156
156
|
"generatedCommandDescriptors": "5f415b7528d7e5b6086a96032d4d29d58e90ca082704f6bb4b25afd8f89c3fae",
|
|
157
|
-
"generatedContractRegistry": "
|
|
158
|
-
"generatedManifest": "
|
|
157
|
+
"generatedContractRegistry": "fe360f90f12aab6bbc845b1e5e1b82721f12701dcb3ed055ba4a4cda2c4d9a83",
|
|
158
|
+
"generatedManifest": "1a0ef801a81d8061c2c57ab3d429d6e21dc6e089bc4434a217b973656ee40c06",
|
|
159
159
|
"generatedMcpToolDefinitions": "b37ce9423e4672326a42038dd2a99d04e9e5c9077d7613b9b516b4655cd1f16c",
|
|
160
160
|
"pyCommandDescriptors": "5f415b7528d7e5b6086a96032d4d29d58e90ca082704f6bb4b25afd8f89c3fae",
|
|
161
|
-
"pyContractRegistry": "
|
|
162
|
-
"pyManifest": "
|
|
161
|
+
"pyContractRegistry": "fe360f90f12aab6bbc845b1e5e1b82721f12701dcb3ed055ba4a4cda2c4d9a83",
|
|
162
|
+
"pyManifest": "931edc03c872866bcab0515c1ebc2912ff2feaa8a864bb7e1bfc6a6dfe798c14",
|
|
163
163
|
"pyMcpToolDefinitions": "b37ce9423e4672326a42038dd2a99d04e9e5c9077d7613b9b516b4655cd1f16c",
|
|
164
164
|
"tsCommandDescriptors": "5f415b7528d7e5b6086a96032d4d29d58e90ca082704f6bb4b25afd8f89c3fae",
|
|
165
|
-
"tsContractRegistry": "
|
|
166
|
-
"tsManifest": "
|
|
165
|
+
"tsContractRegistry": "fe360f90f12aab6bbc845b1e5e1b82721f12701dcb3ed055ba4a4cda2c4d9a83",
|
|
166
|
+
"tsManifest": "9ed6159229cc1e8751fee40b5a8a748e61fbe86f4b5a63bc9c9409bcd21493fa",
|
|
167
167
|
"tsMcpToolDefinitions": "b37ce9423e4672326a42038dd2a99d04e9e5c9077d7613b9b516b4655cd1f16c"
|
|
168
168
|
},
|
|
169
169
|
"generatedManifestCommandDescriptorVersion": "1.4.3",
|
|
@@ -172,40 +172,69 @@
|
|
|
172
172
|
"canonicalHash": "cce2ede8f658d43e0807f7f194e28fc356085e00fc70d99d27ecbd674be14a9f",
|
|
173
173
|
"commandDigestHash": "ff5ffd264b768cb059973405a2bbac264e790e8c583ce066668263259cf9d565",
|
|
174
174
|
"descriptorHash": "0ce356cf2e77ac1228df9de4a89d5b4bcba73fb5b43a83cf59d34b92bc561d46",
|
|
175
|
-
"documentationHash": "
|
|
175
|
+
"documentationHash": "2bca31729c9c580125bd25764291699b63532afaa67d9380c72d1dda637944b7",
|
|
176
176
|
"fullDescriptorHash": "a90cc06c3d9ab9068f87e2b1005847e685b7f86952cba5b2af9d2e38b8f963bb",
|
|
177
177
|
"namespaceHash": "cd39afc4f4e8b76473a4768c07d979c44e0421973786c54e12bb6d7888f5952a",
|
|
178
178
|
"policyProfilesHash": "9fb054a4f29be73c2ebf33f643bc17d904b2872dd8e7d564a690db828071a7ce",
|
|
179
179
|
"principalTemplatesHash": "525835bb3c4710fa326e662e8a961e74de1798f4fb1bccb2a00be557ed037740",
|
|
180
180
|
"routedTopLevelHash": "02e98ac94f1eadbeded065bef652f8a917f108a8a08726ad7163503cc1b3384d",
|
|
181
181
|
"topLevelHash": "04e58344eaec2c14dfa336b13eff952a584c7c5355d90775c3bc8336ab0752ee",
|
|
182
|
-
"trustDistributionHash": "
|
|
182
|
+
"trustDistributionHash": "ac51fceb7cec36e23b75e82a5ce9ab4905cb637603d65876dcbe4bca52d205f5"
|
|
183
183
|
},
|
|
184
184
|
"generatedManifestVersion": "1.0.0",
|
|
185
185
|
"registryDigest": {
|
|
186
186
|
"canonicalHash": "cce2ede8f658d43e0807f7f194e28fc356085e00fc70d99d27ecbd674be14a9f",
|
|
187
187
|
"commandDigestHash": "ff5ffd264b768cb059973405a2bbac264e790e8c583ce066668263259cf9d565",
|
|
188
188
|
"descriptorHash": "0ce356cf2e77ac1228df9de4a89d5b4bcba73fb5b43a83cf59d34b92bc561d46",
|
|
189
|
-
"documentationHash": "
|
|
189
|
+
"documentationHash": "2bca31729c9c580125bd25764291699b63532afaa67d9380c72d1dda637944b7",
|
|
190
190
|
"fullDescriptorHash": "a90cc06c3d9ab9068f87e2b1005847e685b7f86952cba5b2af9d2e38b8f963bb",
|
|
191
191
|
"namespaceHash": "cd39afc4f4e8b76473a4768c07d979c44e0421973786c54e12bb6d7888f5952a",
|
|
192
192
|
"policyProfilesHash": "9fb054a4f29be73c2ebf33f643bc17d904b2872dd8e7d564a690db828071a7ce",
|
|
193
193
|
"principalTemplatesHash": "525835bb3c4710fa326e662e8a961e74de1798f4fb1bccb2a00be557ed037740",
|
|
194
194
|
"routedTopLevelHash": "02e98ac94f1eadbeded065bef652f8a917f108a8a08726ad7163503cc1b3384d",
|
|
195
195
|
"topLevelHash": "04e58344eaec2c14dfa336b13eff952a584c7c5355d90775c3bc8336ab0752ee",
|
|
196
|
-
"trustDistributionHash": "
|
|
196
|
+
"trustDistributionHash": "ac51fceb7cec36e23b75e82a5ce9ab4905cb637603d65876dcbe4bca52d205f5"
|
|
197
197
|
},
|
|
198
|
-
"schemaHash": "
|
|
198
|
+
"schemaHash": "f6f0625753d70d83f8b6d48271b59db16d01078bb040ac897016d09e3cb7e96c"
|
|
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-26T18:57:06.996Z",
|
|
206
|
+
"latestVersion": "1.1.127",
|
|
207
|
+
"latestGeneratedAt": "2026-03-26T18:57:06.996Z",
|
|
208
208
|
"entries": [
|
|
209
|
+
{
|
|
210
|
+
"schemaVersion": "1.0.0",
|
|
211
|
+
"suite": "core",
|
|
212
|
+
"packageName": "pandora-cli-skills",
|
|
213
|
+
"version": "1.1.127",
|
|
214
|
+
"packageVersion": "1.1.127",
|
|
215
|
+
"generatedAt": "2026-03-26T18:57:06.996Z",
|
|
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": "0ce356cf2e77ac1228df9de4a89d5b4bcba73fb5b43a83cf59d34b92bc561d46",
|
|
233
|
+
"documentationContentHash": "74fc7863c3b3f684149f2feb518c9b0c9f9d7ef113c09dd8ba1872f690ab7f95",
|
|
234
|
+
"reportSha256": "cda5a55e07192182c5f638e41896c719a6ef3ec0a8db51eeef986d0aaf799ce9",
|
|
235
|
+
"lockSha256": "c2b0f1b3f68656cc2032c92764e20d792d8d9813cfaccdf7b26e3ad482681b5e",
|
|
236
|
+
"lockSchemaVersion": "1.0.0"
|
|
237
|
+
},
|
|
209
238
|
{
|
|
210
239
|
"schemaVersion": "1.0.0",
|
|
211
240
|
"suite": "core",
|
|
@@ -230,9 +259,9 @@
|
|
|
230
259
|
"contractLockMatchesExpected": true,
|
|
231
260
|
"parityFailedGroups": [],
|
|
232
261
|
"descriptorHash": "0ce356cf2e77ac1228df9de4a89d5b4bcba73fb5b43a83cf59d34b92bc561d46",
|
|
233
|
-
"documentationContentHash": "
|
|
234
|
-
"reportSha256": "
|
|
235
|
-
"lockSha256": "
|
|
262
|
+
"documentationContentHash": "74fc7863c3b3f684149f2feb518c9b0c9f9d7ef113c09dd8ba1872f690ab7f95",
|
|
263
|
+
"reportSha256": "81ffcec070160974ac2535ecc0d76044049a3eefa6001f8821aeeadfe822be9f",
|
|
264
|
+
"lockSha256": "88ad75b4d5664d3ce6d377c1a155ff334b38d064a070aa8b9d55ec0bfeff36bd",
|
|
236
265
|
"lockSchemaVersion": "1.0.0"
|
|
237
266
|
},
|
|
238
267
|
{
|
|
@@ -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-26T18:57:06.996Z",
|
|
5
|
+
"latestVersion": "1.1.127",
|
|
6
|
+
"latestGeneratedAt": "2026-03-26T18:57:06.996Z",
|
|
7
7
|
"entries": [
|
|
8
|
+
{
|
|
9
|
+
"schemaVersion": "1.0.0",
|
|
10
|
+
"suite": "core",
|
|
11
|
+
"packageName": "pandora-cli-skills",
|
|
12
|
+
"version": "1.1.127",
|
|
13
|
+
"packageVersion": "1.1.127",
|
|
14
|
+
"generatedAt": "2026-03-26T18:57:06.996Z",
|
|
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": "0ce356cf2e77ac1228df9de4a89d5b4bcba73fb5b43a83cf59d34b92bc561d46",
|
|
32
|
+
"documentationContentHash": "74fc7863c3b3f684149f2feb518c9b0c9f9d7ef113c09dd8ba1872f690ab7f95",
|
|
33
|
+
"reportSha256": "cda5a55e07192182c5f638e41896c719a6ef3ec0a8db51eeef986d0aaf799ce9",
|
|
34
|
+
"lockSha256": "c2b0f1b3f68656cc2032c92764e20d792d8d9813cfaccdf7b26e3ad482681b5e",
|
|
35
|
+
"lockSchemaVersion": "1.0.0"
|
|
36
|
+
},
|
|
8
37
|
{
|
|
9
38
|
"schemaVersion": "1.0.0",
|
|
10
39
|
"suite": "core",
|
|
@@ -29,9 +58,9 @@
|
|
|
29
58
|
"contractLockMatchesExpected": true,
|
|
30
59
|
"parityFailedGroups": [],
|
|
31
60
|
"descriptorHash": "0ce356cf2e77ac1228df9de4a89d5b4bcba73fb5b43a83cf59d34b92bc561d46",
|
|
32
|
-
"documentationContentHash": "
|
|
33
|
-
"reportSha256": "
|
|
34
|
-
"lockSha256": "
|
|
61
|
+
"documentationContentHash": "74fc7863c3b3f684149f2feb518c9b0c9f9d7ef113c09dd8ba1872f690ab7f95",
|
|
62
|
+
"reportSha256": "81ffcec070160974ac2535ecc0d76044049a3eefa6001f8821aeeadfe822be9f",
|
|
63
|
+
"lockSha256": "88ad75b4d5664d3ce6d377c1a155ff334b38d064a070aa8b9d55ec0bfeff36bd",
|
|
35
64
|
"lockSchemaVersion": "1.0.0"
|
|
36
65
|
},
|
|
37
66
|
{
|
|
@@ -1,22 +1,22 @@
|
|
|
1
1
|
{
|
|
2
2
|
"contractLock": {
|
|
3
|
-
"capabilitiesLocalHash": "
|
|
4
|
-
"capabilitiesRemoteTemplateHash": "
|
|
3
|
+
"capabilitiesLocalHash": "32f428bf34cbc8a920f79476a8b28a2c47a1a573ab5b921edcb34fcdc0ec5890",
|
|
4
|
+
"capabilitiesRemoteTemplateHash": "08c384198f61f89d6facc5e4c1753eff6f3f3def8c873af39ddc8207a7bd19d9",
|
|
5
5
|
"commandDescriptorVersion": "1.4.3",
|
|
6
|
-
"documentationContentHash": "
|
|
7
|
-
"documentationRegistryHash": "
|
|
6
|
+
"documentationContentHash": "74fc7863c3b3f684149f2feb518c9b0c9f9d7ef113c09dd8ba1872f690ab7f95",
|
|
7
|
+
"documentationRegistryHash": "2bca31729c9c580125bd25764291699b63532afaa67d9380c72d1dda637944b7",
|
|
8
8
|
"generatedArtifactHashes": {
|
|
9
9
|
"generatedCommandDescriptors": "5f415b7528d7e5b6086a96032d4d29d58e90ca082704f6bb4b25afd8f89c3fae",
|
|
10
|
-
"generatedContractRegistry": "
|
|
11
|
-
"generatedManifest": "
|
|
10
|
+
"generatedContractRegistry": "fe360f90f12aab6bbc845b1e5e1b82721f12701dcb3ed055ba4a4cda2c4d9a83",
|
|
11
|
+
"generatedManifest": "1a0ef801a81d8061c2c57ab3d429d6e21dc6e089bc4434a217b973656ee40c06",
|
|
12
12
|
"generatedMcpToolDefinitions": "b37ce9423e4672326a42038dd2a99d04e9e5c9077d7613b9b516b4655cd1f16c",
|
|
13
13
|
"pyCommandDescriptors": "5f415b7528d7e5b6086a96032d4d29d58e90ca082704f6bb4b25afd8f89c3fae",
|
|
14
|
-
"pyContractRegistry": "
|
|
15
|
-
"pyManifest": "
|
|
14
|
+
"pyContractRegistry": "fe360f90f12aab6bbc845b1e5e1b82721f12701dcb3ed055ba4a4cda2c4d9a83",
|
|
15
|
+
"pyManifest": "931edc03c872866bcab0515c1ebc2912ff2feaa8a864bb7e1bfc6a6dfe798c14",
|
|
16
16
|
"pyMcpToolDefinitions": "b37ce9423e4672326a42038dd2a99d04e9e5c9077d7613b9b516b4655cd1f16c",
|
|
17
17
|
"tsCommandDescriptors": "5f415b7528d7e5b6086a96032d4d29d58e90ca082704f6bb4b25afd8f89c3fae",
|
|
18
|
-
"tsContractRegistry": "
|
|
19
|
-
"tsManifest": "
|
|
18
|
+
"tsContractRegistry": "fe360f90f12aab6bbc845b1e5e1b82721f12701dcb3ed055ba4a4cda2c4d9a83",
|
|
19
|
+
"tsManifest": "9ed6159229cc1e8751fee40b5a8a748e61fbe86f4b5a63bc9c9409bcd21493fa",
|
|
20
20
|
"tsMcpToolDefinitions": "b37ce9423e4672326a42038dd2a99d04e9e5c9077d7613b9b516b4655cd1f16c"
|
|
21
21
|
},
|
|
22
22
|
"generatedManifestCommandDescriptorVersion": "1.4.3",
|
|
@@ -25,30 +25,30 @@
|
|
|
25
25
|
"canonicalHash": "cce2ede8f658d43e0807f7f194e28fc356085e00fc70d99d27ecbd674be14a9f",
|
|
26
26
|
"commandDigestHash": "ff5ffd264b768cb059973405a2bbac264e790e8c583ce066668263259cf9d565",
|
|
27
27
|
"descriptorHash": "0ce356cf2e77ac1228df9de4a89d5b4bcba73fb5b43a83cf59d34b92bc561d46",
|
|
28
|
-
"documentationHash": "
|
|
28
|
+
"documentationHash": "2bca31729c9c580125bd25764291699b63532afaa67d9380c72d1dda637944b7",
|
|
29
29
|
"fullDescriptorHash": "a90cc06c3d9ab9068f87e2b1005847e685b7f86952cba5b2af9d2e38b8f963bb",
|
|
30
30
|
"namespaceHash": "cd39afc4f4e8b76473a4768c07d979c44e0421973786c54e12bb6d7888f5952a",
|
|
31
31
|
"policyProfilesHash": "9fb054a4f29be73c2ebf33f643bc17d904b2872dd8e7d564a690db828071a7ce",
|
|
32
32
|
"principalTemplatesHash": "525835bb3c4710fa326e662e8a961e74de1798f4fb1bccb2a00be557ed037740",
|
|
33
33
|
"routedTopLevelHash": "02e98ac94f1eadbeded065bef652f8a917f108a8a08726ad7163503cc1b3384d",
|
|
34
34
|
"topLevelHash": "04e58344eaec2c14dfa336b13eff952a584c7c5355d90775c3bc8336ab0752ee",
|
|
35
|
-
"trustDistributionHash": "
|
|
35
|
+
"trustDistributionHash": "ac51fceb7cec36e23b75e82a5ce9ab4905cb637603d65876dcbe4bca52d205f5"
|
|
36
36
|
},
|
|
37
37
|
"generatedManifestVersion": "1.0.0",
|
|
38
38
|
"registryDigest": {
|
|
39
39
|
"canonicalHash": "cce2ede8f658d43e0807f7f194e28fc356085e00fc70d99d27ecbd674be14a9f",
|
|
40
40
|
"commandDigestHash": "ff5ffd264b768cb059973405a2bbac264e790e8c583ce066668263259cf9d565",
|
|
41
41
|
"descriptorHash": "0ce356cf2e77ac1228df9de4a89d5b4bcba73fb5b43a83cf59d34b92bc561d46",
|
|
42
|
-
"documentationHash": "
|
|
42
|
+
"documentationHash": "2bca31729c9c580125bd25764291699b63532afaa67d9380c72d1dda637944b7",
|
|
43
43
|
"fullDescriptorHash": "a90cc06c3d9ab9068f87e2b1005847e685b7f86952cba5b2af9d2e38b8f963bb",
|
|
44
44
|
"namespaceHash": "cd39afc4f4e8b76473a4768c07d979c44e0421973786c54e12bb6d7888f5952a",
|
|
45
45
|
"policyProfilesHash": "9fb054a4f29be73c2ebf33f643bc17d904b2872dd8e7d564a690db828071a7ce",
|
|
46
46
|
"principalTemplatesHash": "525835bb3c4710fa326e662e8a961e74de1798f4fb1bccb2a00be557ed037740",
|
|
47
47
|
"routedTopLevelHash": "02e98ac94f1eadbeded065bef652f8a917f108a8a08726ad7163503cc1b3384d",
|
|
48
48
|
"topLevelHash": "04e58344eaec2c14dfa336b13eff952a584c7c5355d90775c3bc8336ab0752ee",
|
|
49
|
-
"trustDistributionHash": "
|
|
49
|
+
"trustDistributionHash": "ac51fceb7cec36e23b75e82a5ce9ab4905cb637603d65876dcbe4bca52d205f5"
|
|
50
50
|
},
|
|
51
|
-
"schemaHash": "
|
|
51
|
+
"schemaHash": "f6f0625753d70d83f8b6d48271b59db16d01078bb040ac897016d09e3cb7e96c"
|
|
52
52
|
},
|
|
53
53
|
"contractLockMatchesExpected": true,
|
|
54
54
|
"contractLockMismatches": [],
|
|
@@ -284,7 +284,7 @@
|
|
|
284
284
|
]
|
|
285
285
|
},
|
|
286
286
|
"publication": {
|
|
287
|
-
"contractLockHash": "
|
|
287
|
+
"contractLockHash": "76103e40e4f81ef21857ab41704c62fcca9435d3d23b94788ebcab52e0130965",
|
|
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": "b820bd609cf7275f469a2eb839ab13e1a1056433f1cd9ce53825404279881e66",
|
|
297
|
+
"suiteLockHash": "c2b0f1b3f68656cc2032c92764e20d792d8d9813cfaccdf7b26e3ad482681b5e",
|
|
298
298
|
"suiteLockPath": "benchmarks/locks/core.lock.json"
|
|
299
299
|
},
|
|
300
300
|
"runtime": {
|
|
301
|
-
"packageVersion": "1.1.
|
|
301
|
+
"packageVersion": "1.1.127"
|
|
302
302
|
},
|
|
303
303
|
"scenarios": [
|
|
304
304
|
{
|
|
@@ -1,22 +1,22 @@
|
|
|
1
1
|
{
|
|
2
2
|
"contractLock": {
|
|
3
|
-
"capabilitiesLocalHash": "
|
|
4
|
-
"capabilitiesRemoteTemplateHash": "
|
|
3
|
+
"capabilitiesLocalHash": "32f428bf34cbc8a920f79476a8b28a2c47a1a573ab5b921edcb34fcdc0ec5890",
|
|
4
|
+
"capabilitiesRemoteTemplateHash": "08c384198f61f89d6facc5e4c1753eff6f3f3def8c873af39ddc8207a7bd19d9",
|
|
5
5
|
"commandDescriptorVersion": "1.4.3",
|
|
6
|
-
"documentationContentHash": "
|
|
7
|
-
"documentationRegistryHash": "
|
|
6
|
+
"documentationContentHash": "74fc7863c3b3f684149f2feb518c9b0c9f9d7ef113c09dd8ba1872f690ab7f95",
|
|
7
|
+
"documentationRegistryHash": "2bca31729c9c580125bd25764291699b63532afaa67d9380c72d1dda637944b7",
|
|
8
8
|
"generatedArtifactHashes": {
|
|
9
9
|
"generatedCommandDescriptors": "5f415b7528d7e5b6086a96032d4d29d58e90ca082704f6bb4b25afd8f89c3fae",
|
|
10
|
-
"generatedContractRegistry": "
|
|
11
|
-
"generatedManifest": "
|
|
10
|
+
"generatedContractRegistry": "fe360f90f12aab6bbc845b1e5e1b82721f12701dcb3ed055ba4a4cda2c4d9a83",
|
|
11
|
+
"generatedManifest": "1a0ef801a81d8061c2c57ab3d429d6e21dc6e089bc4434a217b973656ee40c06",
|
|
12
12
|
"generatedMcpToolDefinitions": "b37ce9423e4672326a42038dd2a99d04e9e5c9077d7613b9b516b4655cd1f16c",
|
|
13
13
|
"pyCommandDescriptors": "5f415b7528d7e5b6086a96032d4d29d58e90ca082704f6bb4b25afd8f89c3fae",
|
|
14
|
-
"pyContractRegistry": "
|
|
15
|
-
"pyManifest": "
|
|
14
|
+
"pyContractRegistry": "fe360f90f12aab6bbc845b1e5e1b82721f12701dcb3ed055ba4a4cda2c4d9a83",
|
|
15
|
+
"pyManifest": "931edc03c872866bcab0515c1ebc2912ff2feaa8a864bb7e1bfc6a6dfe798c14",
|
|
16
16
|
"pyMcpToolDefinitions": "b37ce9423e4672326a42038dd2a99d04e9e5c9077d7613b9b516b4655cd1f16c",
|
|
17
17
|
"tsCommandDescriptors": "5f415b7528d7e5b6086a96032d4d29d58e90ca082704f6bb4b25afd8f89c3fae",
|
|
18
|
-
"tsContractRegistry": "
|
|
19
|
-
"tsManifest": "
|
|
18
|
+
"tsContractRegistry": "fe360f90f12aab6bbc845b1e5e1b82721f12701dcb3ed055ba4a4cda2c4d9a83",
|
|
19
|
+
"tsManifest": "9ed6159229cc1e8751fee40b5a8a748e61fbe86f4b5a63bc9c9409bcd21493fa",
|
|
20
20
|
"tsMcpToolDefinitions": "b37ce9423e4672326a42038dd2a99d04e9e5c9077d7613b9b516b4655cd1f16c"
|
|
21
21
|
},
|
|
22
22
|
"generatedManifestCommandDescriptorVersion": "1.4.3",
|
|
@@ -25,37 +25,37 @@
|
|
|
25
25
|
"canonicalHash": "cce2ede8f658d43e0807f7f194e28fc356085e00fc70d99d27ecbd674be14a9f",
|
|
26
26
|
"commandDigestHash": "ff5ffd264b768cb059973405a2bbac264e790e8c583ce066668263259cf9d565",
|
|
27
27
|
"descriptorHash": "0ce356cf2e77ac1228df9de4a89d5b4bcba73fb5b43a83cf59d34b92bc561d46",
|
|
28
|
-
"documentationHash": "
|
|
28
|
+
"documentationHash": "2bca31729c9c580125bd25764291699b63532afaa67d9380c72d1dda637944b7",
|
|
29
29
|
"fullDescriptorHash": "a90cc06c3d9ab9068f87e2b1005847e685b7f86952cba5b2af9d2e38b8f963bb",
|
|
30
30
|
"namespaceHash": "cd39afc4f4e8b76473a4768c07d979c44e0421973786c54e12bb6d7888f5952a",
|
|
31
31
|
"policyProfilesHash": "9fb054a4f29be73c2ebf33f643bc17d904b2872dd8e7d564a690db828071a7ce",
|
|
32
32
|
"principalTemplatesHash": "525835bb3c4710fa326e662e8a961e74de1798f4fb1bccb2a00be557ed037740",
|
|
33
33
|
"routedTopLevelHash": "02e98ac94f1eadbeded065bef652f8a917f108a8a08726ad7163503cc1b3384d",
|
|
34
34
|
"topLevelHash": "04e58344eaec2c14dfa336b13eff952a584c7c5355d90775c3bc8336ab0752ee",
|
|
35
|
-
"trustDistributionHash": "
|
|
35
|
+
"trustDistributionHash": "ac51fceb7cec36e23b75e82a5ce9ab4905cb637603d65876dcbe4bca52d205f5"
|
|
36
36
|
},
|
|
37
37
|
"generatedManifestVersion": "1.0.0",
|
|
38
38
|
"registryDigest": {
|
|
39
39
|
"canonicalHash": "cce2ede8f658d43e0807f7f194e28fc356085e00fc70d99d27ecbd674be14a9f",
|
|
40
40
|
"commandDigestHash": "ff5ffd264b768cb059973405a2bbac264e790e8c583ce066668263259cf9d565",
|
|
41
41
|
"descriptorHash": "0ce356cf2e77ac1228df9de4a89d5b4bcba73fb5b43a83cf59d34b92bc561d46",
|
|
42
|
-
"documentationHash": "
|
|
42
|
+
"documentationHash": "2bca31729c9c580125bd25764291699b63532afaa67d9380c72d1dda637944b7",
|
|
43
43
|
"fullDescriptorHash": "a90cc06c3d9ab9068f87e2b1005847e685b7f86952cba5b2af9d2e38b8f963bb",
|
|
44
44
|
"namespaceHash": "cd39afc4f4e8b76473a4768c07d979c44e0421973786c54e12bb6d7888f5952a",
|
|
45
45
|
"policyProfilesHash": "9fb054a4f29be73c2ebf33f643bc17d904b2872dd8e7d564a690db828071a7ce",
|
|
46
46
|
"principalTemplatesHash": "525835bb3c4710fa326e662e8a961e74de1798f4fb1bccb2a00be557ed037740",
|
|
47
47
|
"routedTopLevelHash": "02e98ac94f1eadbeded065bef652f8a917f108a8a08726ad7163503cc1b3384d",
|
|
48
48
|
"topLevelHash": "04e58344eaec2c14dfa336b13eff952a584c7c5355d90775c3bc8336ab0752ee",
|
|
49
|
-
"trustDistributionHash": "
|
|
49
|
+
"trustDistributionHash": "ac51fceb7cec36e23b75e82a5ce9ab4905cb637603d65876dcbe4bca52d205f5"
|
|
50
50
|
},
|
|
51
|
-
"schemaHash": "
|
|
51
|
+
"schemaHash": "f6f0625753d70d83f8b6d48271b59db16d01078bb040ac897016d09e3cb7e96c"
|
|
52
52
|
},
|
|
53
53
|
"publication": {
|
|
54
|
-
"contractLockHash": "
|
|
54
|
+
"contractLockHash": "76103e40e4f81ef21857ab41704c62fcca9435d3d23b94788ebcab52e0130965",
|
|
55
55
|
"deterministic": true,
|
|
56
56
|
"grade": "release-grade",
|
|
57
57
|
"kind": "benchmark-contract-lock",
|
|
58
|
-
"lockDocumentHash": "
|
|
58
|
+
"lockDocumentHash": "c82893c6327deaed382b2e6bdfb8baf284b72e153e5c001459bc39234340b1e0",
|
|
59
59
|
"suiteLockPath": "benchmarks/locks/core.lock.json"
|
|
60
60
|
},
|
|
61
61
|
"schemaVersion": "1.0.0",
|
|
@@ -80,6 +80,11 @@ function renderMirrorHedgeDaemonTable(data) {
|
|
|
80
80
|
['netTargetShares', summary.netTargetShares ?? ''],
|
|
81
81
|
['availableHedgeFeeBudgetUsdc', summary.availableHedgeFeeBudgetUsdc ?? ''],
|
|
82
82
|
['belowThresholdPendingUsdc', summary.belowThresholdPendingUsdc ?? ''],
|
|
83
|
+
['sellRetryAttemptedCount', summary.sellRetryAttemptedCount ?? ''],
|
|
84
|
+
['sellRetryBlockedCount', summary.sellRetryBlockedCount ?? ''],
|
|
85
|
+
['sellRetryFailedCount', summary.sellRetryFailedCount ?? ''],
|
|
86
|
+
['sellRetryRecoveredCount', summary.sellRetryRecoveredCount ?? ''],
|
|
87
|
+
['warningCount', summary.warningCount ?? ''],
|
|
83
88
|
['skippedVolumeUsdc', summary.skippedVolumeUsdc ?? ''],
|
|
84
89
|
['lastSuccessfulHedgeAt', summary.lastSuccessfulHedgeAt || ''],
|
|
85
90
|
['lastErrorCode', summary.lastErrorCode || ''],
|
|
@@ -89,6 +94,13 @@ function renderMirrorHedgeDaemonTable(data) {
|
|
|
89
94
|
['exitAt', runtime.exitAt || ''],
|
|
90
95
|
['diagnostics', Array.isArray(data.diagnostics) ? data.diagnostics.join(' | ') : ''],
|
|
91
96
|
]);
|
|
97
|
+
if (Array.isArray(data.warnings) && data.warnings.length) {
|
|
98
|
+
console.log('warnings:');
|
|
99
|
+
for (const warning of data.warnings) {
|
|
100
|
+
const code = warning && warning.code ? `[${warning.code}] ` : '';
|
|
101
|
+
console.log(`- ${code}${warning && warning.message ? warning.message : JSON.stringify(warning)}`);
|
|
102
|
+
}
|
|
103
|
+
}
|
|
92
104
|
}
|
|
93
105
|
|
|
94
106
|
function helpPayload(emitSuccess, commandHelpPayload, context, kind, usage, notes) {
|
|
@@ -7,6 +7,7 @@ const {
|
|
|
7
7
|
ensureManagedInventorySnapshotShape,
|
|
8
8
|
ensureMarketPairIdentityShape,
|
|
9
9
|
ensurePendingMempoolOverlayShape,
|
|
10
|
+
ensureRetryTelemetryShape,
|
|
10
11
|
ensureSkippedVolumeCountersShape,
|
|
11
12
|
ensureTargetHedgeInventoryShape,
|
|
12
13
|
ensureOutcomeShape,
|
|
@@ -70,6 +71,31 @@ function summarizeReasons(collection) {
|
|
|
70
71
|
}, {});
|
|
71
72
|
}
|
|
72
73
|
|
|
74
|
+
function buildOperatorWarnings(params = {}) {
|
|
75
|
+
const targetInventory = ensureTargetHedgeInventoryShape(params.targetHedgeInventory);
|
|
76
|
+
const inventory = params.managedPolymarketInventorySnapshot
|
|
77
|
+
? ensureManagedInventorySnapshotShape(params.managedPolymarketInventorySnapshot)
|
|
78
|
+
: null;
|
|
79
|
+
const warnings = [];
|
|
80
|
+
const currentYesShares = inventory && Number.isFinite(Number(inventory.yesShares)) ? Number(inventory.yesShares) : 0;
|
|
81
|
+
const currentNoShares = inventory && Number.isFinite(Number(inventory.noShares)) ? Number(inventory.noShares) : 0;
|
|
82
|
+
if (
|
|
83
|
+
currentYesShares > 0
|
|
84
|
+
&& currentNoShares > 0
|
|
85
|
+
&& (
|
|
86
|
+
(targetInventory.yesShares > 0 && targetInventory.noShares === 0)
|
|
87
|
+
|| (targetInventory.noShares > 0 && targetInventory.yesShares === 0)
|
|
88
|
+
)
|
|
89
|
+
) {
|
|
90
|
+
warnings.push({
|
|
91
|
+
code: 'BOTH_SIDE_INVENTORY_LOCKUP',
|
|
92
|
+
severity: 'warning',
|
|
93
|
+
message: `Observed Polymarket inventory still holds both YES (${currentYesShares}) and NO (${currentNoShares}) while the hedge target is single-sided (${targetInventory.netSide || 'flat'}).`,
|
|
94
|
+
});
|
|
95
|
+
}
|
|
96
|
+
return warnings;
|
|
97
|
+
}
|
|
98
|
+
|
|
73
99
|
function mergeCounters(base = {}, patch = {}) {
|
|
74
100
|
const next = ensureSkippedVolumeCountersShape(base);
|
|
75
101
|
const candidate = ensureSkippedVolumeCountersShape(patch);
|
|
@@ -160,6 +186,9 @@ function planHedgeRuntime(options = {}) {
|
|
|
160
186
|
state.skippedVolumeCounters,
|
|
161
187
|
pickArray(options.skippedVolumeCounters, {}),
|
|
162
188
|
);
|
|
189
|
+
const retryTelemetry = ensureRetryTelemetryShape(
|
|
190
|
+
pickArray(options.retryTelemetry, state.retryTelemetry),
|
|
191
|
+
);
|
|
163
192
|
const stateKey = buildStateKey({
|
|
164
193
|
marketPairIdentity,
|
|
165
194
|
whitelistFingerprint,
|
|
@@ -207,6 +236,13 @@ function planHedgeRuntime(options = {}) {
|
|
|
207
236
|
if (pendingMempoolOverlays.length) recommendedActions.push('review-pending-mempool-overlays');
|
|
208
237
|
if (deferredHedgeQueue.length) recommendedActions.push('drain-deferred-hedge-queue');
|
|
209
238
|
if (skippedVolumeCounters.totalUsdc > 0) recommendedActions.push('inspect-skipped-volume-counters');
|
|
239
|
+
const warnings = buildOperatorWarnings({
|
|
240
|
+
targetHedgeInventory,
|
|
241
|
+
managedPolymarketInventorySnapshot,
|
|
242
|
+
});
|
|
243
|
+
if (warnings.some((warning) => warning.code === 'BOTH_SIDE_INVENTORY_LOCKUP')) {
|
|
244
|
+
recommendedActions.push('inspect-both-side-inventory-lockup');
|
|
245
|
+
}
|
|
210
246
|
|
|
211
247
|
const summary = {
|
|
212
248
|
marketPairId: marketPairIdentity.marketPairId,
|
|
@@ -238,8 +274,13 @@ function planHedgeRuntime(options = {}) {
|
|
|
238
274
|
belowThresholdPendingUsdc: toFiniteNumberOrNull(
|
|
239
275
|
pickArray(options.belowThresholdPendingUsdc, state.belowThresholdPendingUsdc),
|
|
240
276
|
) || 0,
|
|
277
|
+
sellRetryAttemptedCount: retryTelemetry.sellAttemptedCount,
|
|
278
|
+
sellRetryBlockedCount: retryTelemetry.sellBlockedCount,
|
|
279
|
+
sellRetryFailedCount: retryTelemetry.sellFailedCount,
|
|
280
|
+
sellRetryRecoveredCount: retryTelemetry.sellRecoveredCount,
|
|
241
281
|
skippedVolumeUsdc: skippedVolumeCounters.totalUsdc,
|
|
242
282
|
skippedVolumeCount: skippedVolumeCounters.count,
|
|
283
|
+
warningCount: warnings.length,
|
|
243
284
|
ready: readyMissing.length === 0,
|
|
244
285
|
readyMissing,
|
|
245
286
|
};
|
|
@@ -258,7 +299,9 @@ function planHedgeRuntime(options = {}) {
|
|
|
258
299
|
managedPolymarketInventorySnapshot,
|
|
259
300
|
targetHedgeInventory,
|
|
260
301
|
skippedVolumeCounters,
|
|
302
|
+
retryTelemetry,
|
|
261
303
|
summary,
|
|
304
|
+
warnings,
|
|
262
305
|
recommendedActions,
|
|
263
306
|
lastSuccessfulHedge: state.lastSuccessfulHedge ? cloneJson(state.lastSuccessfulHedge) : null,
|
|
264
307
|
lastError: state.lastError ? cloneJson(state.lastError) : null,
|
|
@@ -324,10 +367,7 @@ function applyHedgeObservation(state, observation = {}, now = new Date()) {
|
|
|
324
367
|
updatedAt: entry && entry.updatedAt ? entry.updatedAt : timestamp,
|
|
325
368
|
}))
|
|
326
369
|
.filter((entry) => Boolean(entry.txHash || entry.cursor || entry.transactionHash));
|
|
327
|
-
target.pendingMempoolOverlays = nextEntries
|
|
328
|
-
(collection, entry) => upsertByKey(collection, 'txHash', entry),
|
|
329
|
-
asArray(target.pendingMempoolOverlays),
|
|
330
|
-
);
|
|
370
|
+
target.pendingMempoolOverlays = nextEntries;
|
|
331
371
|
}
|
|
332
372
|
|
|
333
373
|
if (Array.isArray(observation.deferredHedgeQueue)) {
|
|
@@ -337,10 +377,7 @@ function applyHedgeObservation(state, observation = {}, now = new Date()) {
|
|
|
337
377
|
updatedAt: entry && entry.updatedAt ? entry.updatedAt : timestamp,
|
|
338
378
|
}))
|
|
339
379
|
.filter((entry) => Boolean(entry.id));
|
|
340
|
-
target.deferredHedgeQueue = nextEntries
|
|
341
|
-
(collection, entry) => upsertByKey(collection, 'id', entry),
|
|
342
|
-
asArray(target.deferredHedgeQueue),
|
|
343
|
-
);
|
|
380
|
+
target.deferredHedgeQueue = nextEntries;
|
|
344
381
|
}
|
|
345
382
|
|
|
346
383
|
if (observation.managedPolymarketInventorySnapshot !== undefined) {
|
|
@@ -367,6 +404,12 @@ function applyHedgeObservation(state, observation = {}, now = new Date()) {
|
|
|
367
404
|
target.skippedVolumeCounters = mergeCounters(target.skippedVolumeCounters, observation.skippedVolumeCounters);
|
|
368
405
|
}
|
|
369
406
|
|
|
407
|
+
if (observation.retryTelemetry !== undefined) {
|
|
408
|
+
target.retryTelemetry = observation.retryTelemetry
|
|
409
|
+
? ensureRetryTelemetryShape(observation.retryTelemetry)
|
|
410
|
+
: ensureRetryTelemetryShape({});
|
|
411
|
+
}
|
|
412
|
+
|
|
370
413
|
if (observation.lastSuccessfulHedge !== undefined) {
|
|
371
414
|
target.lastSuccessfulHedge = observation.lastSuccessfulHedge
|
|
372
415
|
? {
|
|
@@ -2,6 +2,7 @@ const { round } = require('../shared/utils.cjs');
|
|
|
2
2
|
const {
|
|
3
3
|
ensureMarketPairIdentityShape,
|
|
4
4
|
ensureManagedInventorySnapshotShape,
|
|
5
|
+
ensureRetryTelemetryShape,
|
|
5
6
|
ensureSkippedVolumeCountersShape,
|
|
6
7
|
ensureTargetHedgeInventoryShape,
|
|
7
8
|
} = require('../mirror_hedge_state_store.cjs');
|
|
@@ -44,6 +45,7 @@ function buildBundleFacingHedgePayload(params = {}) {
|
|
|
44
45
|
const targetInventory = params.targetHedgeInventory !== undefined
|
|
45
46
|
? ensureTargetHedgeInventoryShape(params.targetHedgeInventory)
|
|
46
47
|
: ensureTargetHedgeInventoryShape(state.targetHedgeInventory);
|
|
48
|
+
const retryTelemetry = ensureRetryTelemetryShape(params.retryTelemetry || state.retryTelemetry || {});
|
|
47
49
|
const skippedVolumeCounters = ensureSkippedVolumeCountersShape(params.skippedVolumeCounters || state.skippedVolumeCounters || {});
|
|
48
50
|
const confirmedExposureLedger = Array.isArray(params.confirmedExposureLedger || state.confirmedExposureLedger)
|
|
49
51
|
? params.confirmedExposureLedger || state.confirmedExposureLedger
|
|
@@ -85,7 +87,12 @@ function buildBundleFacingHedgePayload(params = {}) {
|
|
|
85
87
|
netTargetShares: targetInventory.netShares || 0,
|
|
86
88
|
availableHedgeFeeBudgetUsdc: Number(state.availableHedgeFeeBudgetUsdc || 0),
|
|
87
89
|
belowThresholdPendingUsdc: Number(state.belowThresholdPendingUsdc || 0),
|
|
90
|
+
sellRetryAttemptedCount: retryTelemetry.sellAttemptedCount || 0,
|
|
91
|
+
sellRetryBlockedCount: retryTelemetry.sellBlockedCount || 0,
|
|
92
|
+
sellRetryFailedCount: retryTelemetry.sellFailedCount || 0,
|
|
93
|
+
sellRetryRecoveredCount: retryTelemetry.sellRecoveredCount || 0,
|
|
88
94
|
skippedVolumeUsdc: skippedVolumeCounters.totalUsdc || 0,
|
|
95
|
+
warningCount: plan && Array.isArray(plan.warnings) ? plan.warnings.length : 0,
|
|
89
96
|
lastProcessedBlockNumber: state.lastProcessedBlockNumber || null,
|
|
90
97
|
lastProcessedLogIndex: state.lastProcessedLogIndex || null,
|
|
91
98
|
lastSuccessfulHedgeAt: state.lastSuccessfulHedge && state.lastSuccessfulHedge.executedAt ? state.lastSuccessfulHedge.executedAt : null,
|
|
@@ -108,6 +115,7 @@ function buildBundleFacingHedgePayload(params = {}) {
|
|
|
108
115
|
deferredHedgeQueue,
|
|
109
116
|
managedPolymarketInventorySnapshot: inventory,
|
|
110
117
|
targetHedgeInventory: targetInventory,
|
|
118
|
+
retryTelemetry,
|
|
111
119
|
skippedVolumeCounters,
|
|
112
120
|
lastProcessedBlockCursor: state.lastProcessedBlockCursor || null,
|
|
113
121
|
lastProcessedLogCursor: state.lastProcessedLogCursor || null,
|
|
@@ -152,6 +160,7 @@ function buildHedgeStatusPayload(params = {}) {
|
|
|
152
160
|
missing: plan && plan.summary && Array.isArray(plan.summary.readyMissing) ? plan.summary.readyMissing : [],
|
|
153
161
|
recommendedActions: plan && Array.isArray(plan.recommendedActions) ? plan.recommendedActions : [],
|
|
154
162
|
},
|
|
163
|
+
warnings: plan && Array.isArray(plan.warnings) ? plan.warnings : [],
|
|
155
164
|
lastSuccessfulHedge: state.lastSuccessfulHedge || null,
|
|
156
165
|
lastError: state.lastError || null,
|
|
157
166
|
lastAlert: state.lastAlert || null,
|
|
@@ -195,6 +204,11 @@ function renderHedgeStatusTable(payload) {
|
|
|
195
204
|
['netTargetShares', summary.netTargetShares],
|
|
196
205
|
['availableHedgeFeeBudgetUsdc', summary.availableHedgeFeeBudgetUsdc],
|
|
197
206
|
['belowThresholdPendingUsdc', summary.belowThresholdPendingUsdc],
|
|
207
|
+
['sellRetryAttemptedCount', summary.sellRetryAttemptedCount],
|
|
208
|
+
['sellRetryBlockedCount', summary.sellRetryBlockedCount],
|
|
209
|
+
['sellRetryFailedCount', summary.sellRetryFailedCount],
|
|
210
|
+
['sellRetryRecoveredCount', summary.sellRetryRecoveredCount],
|
|
211
|
+
['warningCount', summary.warningCount],
|
|
198
212
|
['lastProcessedBlockNumber', summary.lastProcessedBlockNumber],
|
|
199
213
|
['lastProcessedLogIndex', summary.lastProcessedLogIndex],
|
|
200
214
|
['lastSuccessfulHedgeAt', summary.lastSuccessfulHedgeAt || ''],
|
|
@@ -214,6 +228,13 @@ function renderHedgeStatusTable(payload) {
|
|
|
214
228
|
console.log(`- ${action}`);
|
|
215
229
|
}
|
|
216
230
|
}
|
|
231
|
+
if (Array.isArray(payload.warnings) && payload.warnings.length) {
|
|
232
|
+
console.log('warnings:');
|
|
233
|
+
for (const warning of payload.warnings) {
|
|
234
|
+
const code = warning && warning.code ? `[${warning.code}] ` : '';
|
|
235
|
+
console.log(`- ${code}${warning && warning.message ? warning.message : JSON.stringify(warning)}`);
|
|
236
|
+
}
|
|
237
|
+
}
|
|
217
238
|
}
|
|
218
239
|
|
|
219
240
|
module.exports = {
|