@senpi/runtime 3.0.58 → 3.0.62

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 (226) hide show
  1. package/README.md +73 -2
  2. package/dist/actions/action-events.d.ts +3 -3
  3. package/dist/actions/action-events.d.ts.map +1 -1
  4. package/dist/actions/action-events.js +24 -16
  5. package/dist/actions/action-events.js.map +1 -1
  6. package/dist/actions/action-runtime-module.d.ts.map +1 -1
  7. package/dist/actions/action-runtime-module.js +18 -1
  8. package/dist/actions/action-runtime-module.js.map +1 -1
  9. package/dist/actions/close-position/close-position.action.d.ts.map +1 -1
  10. package/dist/actions/close-position/close-position.action.js +84 -11
  11. package/dist/actions/close-position/close-position.action.js.map +1 -1
  12. package/dist/actions/decision-engine.d.ts +0 -2
  13. package/dist/actions/decision-engine.d.ts.map +1 -1
  14. package/dist/actions/decision-engine.js +1 -79
  15. package/dist/actions/decision-engine.js.map +1 -1
  16. package/dist/actions/event-derivation.d.ts +40 -2
  17. package/dist/actions/event-derivation.d.ts.map +1 -1
  18. package/dist/actions/event-derivation.js +178 -5
  19. package/dist/actions/event-derivation.js.map +1 -1
  20. package/dist/actions/open-position/open-position.action.d.ts.map +1 -1
  21. package/dist/actions/open-position/open-position.action.js +103 -16
  22. package/dist/actions/open-position/open-position.action.js.map +1 -1
  23. package/dist/actions/position-tracker/position-tracker.action.d.ts +2 -1
  24. package/dist/actions/position-tracker/position-tracker.action.d.ts.map +1 -1
  25. package/dist/actions/position-tracker/position-tracker.action.js +47 -15
  26. package/dist/actions/position-tracker/position-tracker.action.js.map +1 -1
  27. package/dist/actions/skipped-signal-results.d.ts +16 -0
  28. package/dist/actions/skipped-signal-results.d.ts.map +1 -0
  29. package/dist/actions/skipped-signal-results.js +47 -0
  30. package/dist/actions/skipped-signal-results.js.map +1 -0
  31. package/dist/cli/deploy-render.d.ts +91 -0
  32. package/dist/cli/deploy-render.d.ts.map +1 -0
  33. package/dist/cli/deploy-render.js +216 -0
  34. package/dist/cli/deploy-render.js.map +1 -0
  35. package/dist/cli/guide-commands.d.ts.map +1 -1
  36. package/dist/cli/guide-commands.js +78 -6
  37. package/dist/cli/guide-commands.js.map +1 -1
  38. package/dist/cli/senpi-commands.d.ts +6 -1
  39. package/dist/cli/senpi-commands.d.ts.map +1 -1
  40. package/dist/cli/senpi-commands.js +164 -5
  41. package/dist/cli/senpi-commands.js.map +1 -1
  42. package/dist/cli/validate-command.d.ts.map +1 -1
  43. package/dist/cli/validate-command.js +32 -1
  44. package/dist/cli/validate-command.js.map +1 -1
  45. package/dist/deploy/deadlines.d.ts +47 -0
  46. package/dist/deploy/deadlines.d.ts.map +1 -0
  47. package/dist/deploy/deadlines.js +56 -0
  48. package/dist/deploy/deadlines.js.map +1 -0
  49. package/dist/deploy/error-text.d.ts +25 -0
  50. package/dist/deploy/error-text.d.ts.map +1 -0
  51. package/dist/deploy/error-text.js +42 -0
  52. package/dist/deploy/error-text.js.map +1 -0
  53. package/dist/deploy/funding.d.ts +87 -0
  54. package/dist/deploy/funding.d.ts.map +1 -0
  55. package/dist/deploy/funding.js +229 -0
  56. package/dist/deploy/funding.js.map +1 -0
  57. package/dist/deploy/install-gate-runner.d.ts +12 -0
  58. package/dist/deploy/install-gate-runner.d.ts.map +1 -0
  59. package/dist/deploy/install-gate-runner.js +17 -0
  60. package/dist/deploy/install-gate-runner.js.map +1 -0
  61. package/dist/deploy/job.d.ts +199 -0
  62. package/dist/deploy/job.d.ts.map +1 -0
  63. package/dist/deploy/job.js +463 -0
  64. package/dist/deploy/job.js.map +1 -0
  65. package/dist/deploy/min-budget.d.ts +68 -0
  66. package/dist/deploy/min-budget.d.ts.map +1 -0
  67. package/dist/deploy/min-budget.js +297 -0
  68. package/dist/deploy/min-budget.js.map +1 -0
  69. package/dist/deploy/orchestrator.d.ts +305 -0
  70. package/dist/deploy/orchestrator.d.ts.map +1 -0
  71. package/dist/deploy/orchestrator.js +2910 -0
  72. package/dist/deploy/orchestrator.js.map +1 -0
  73. package/dist/deploy/package.d.ts +130 -0
  74. package/dist/deploy/package.d.ts.map +1 -0
  75. package/dist/deploy/package.js +351 -0
  76. package/dist/deploy/package.js.map +1 -0
  77. package/dist/deploy/proof-gate.d.ts +82 -0
  78. package/dist/deploy/proof-gate.d.ts.map +1 -0
  79. package/dist/deploy/proof-gate.js +269 -0
  80. package/dist/deploy/proof-gate.js.map +1 -0
  81. package/dist/deploy/python-float.d.ts +34 -0
  82. package/dist/deploy/python-float.d.ts.map +1 -0
  83. package/dist/deploy/python-float.js +46 -0
  84. package/dist/deploy/python-float.js.map +1 -0
  85. package/dist/deploy/recheck-commands.d.ts +50 -0
  86. package/dist/deploy/recheck-commands.d.ts.map +1 -0
  87. package/dist/deploy/recheck-commands.js +59 -0
  88. package/dist/deploy/recheck-commands.js.map +1 -0
  89. package/dist/deploy/register.d.ts +99 -0
  90. package/dist/deploy/register.d.ts.map +1 -0
  91. package/dist/deploy/register.js +689 -0
  92. package/dist/deploy/register.js.map +1 -0
  93. package/dist/deploy/taxonomy.d.ts +24 -0
  94. package/dist/deploy/taxonomy.d.ts.map +1 -0
  95. package/dist/deploy/taxonomy.js +31 -0
  96. package/dist/deploy/taxonomy.js.map +1 -0
  97. package/dist/index.d.ts.map +1 -1
  98. package/dist/index.js +244 -132
  99. package/dist/index.js.map +1 -1
  100. package/dist/runtime/lifecycle-events.d.ts +13 -0
  101. package/dist/runtime/lifecycle-events.d.ts.map +1 -1
  102. package/dist/runtime/lifecycle-events.js +32 -0
  103. package/dist/runtime/lifecycle-events.js.map +1 -1
  104. package/dist/runtime/runtime.d.ts.map +1 -1
  105. package/dist/runtime/runtime.js +3 -1
  106. package/dist/runtime/runtime.js.map +1 -1
  107. package/dist/runtime/strategy-registry.d.ts +8 -0
  108. package/dist/runtime/strategy-registry.d.ts.map +1 -1
  109. package/dist/runtime/strategy-registry.js +14 -1
  110. package/dist/runtime/strategy-registry.js.map +1 -1
  111. package/dist/runtime/supervisor/long-running-supervisor.d.ts +8 -0
  112. package/dist/runtime/supervisor/long-running-supervisor.d.ts.map +1 -1
  113. package/dist/runtime/supervisor/long-running-supervisor.js +1 -0
  114. package/dist/runtime/supervisor/long-running-supervisor.js.map +1 -1
  115. package/dist/runtime-api/intake/intake-events.d.ts +19 -3
  116. package/dist/runtime-api/intake/intake-events.d.ts.map +1 -1
  117. package/dist/runtime-api/intake/intake-events.js +64 -2
  118. package/dist/runtime-api/intake/intake-events.js.map +1 -1
  119. package/dist/runtime-api/intake/intake-mount.d.ts.map +1 -1
  120. package/dist/runtime-api/intake/intake-mount.js +7 -4
  121. package/dist/runtime-api/intake/intake-mount.js.map +1 -1
  122. package/dist/runtime-api/intake/process-signal-post.d.ts.map +1 -1
  123. package/dist/runtime-api/intake/process-signal-post.js +7 -1
  124. package/dist/runtime-api/intake/process-signal-post.js.map +1 -1
  125. package/dist/runtime-api/intake/scanner-launcher.d.ts.map +1 -1
  126. package/dist/runtime-api/intake/scanner-launcher.js +12 -0
  127. package/dist/runtime-api/intake/scanner-launcher.js.map +1 -1
  128. package/dist/runtime-api/intake/types.d.ts +24 -0
  129. package/dist/runtime-api/intake/types.d.ts.map +1 -1
  130. package/dist/runtime-api/routes/signals.d.ts.map +1 -1
  131. package/dist/runtime-api/routes/signals.js +10 -1
  132. package/dist/runtime-api/routes/signals.js.map +1 -1
  133. package/dist/runtime-api/routes/signals.schema.d.ts +10 -0
  134. package/dist/runtime-api/routes/signals.schema.d.ts.map +1 -1
  135. package/dist/runtime-api/routes/signals.schema.js +14 -0
  136. package/dist/runtime-api/routes/signals.schema.js.map +1 -1
  137. package/dist/scanners/events.d.ts +7 -0
  138. package/dist/scanners/events.d.ts.map +1 -1
  139. package/dist/scanners/events.js.map +1 -1
  140. package/dist/scanners/external/scaffold/delivery.py +23 -12
  141. package/dist/scanners/external/scaffold/scaffold.py +55 -7
  142. package/dist/scanners/implementations/market-regime.d.ts +1 -1
  143. package/dist/scanners/runtime-module.d.ts.map +1 -1
  144. package/dist/scanners/runtime-module.js +10 -2
  145. package/dist/scanners/runtime-module.js.map +1 -1
  146. package/dist/senpi/client.d.ts +58 -4
  147. package/dist/senpi/client.d.ts.map +1 -1
  148. package/dist/senpi/client.js +192 -15
  149. package/dist/senpi/client.js.map +1 -1
  150. package/dist/senpi/strategy-status.d.ts +32 -0
  151. package/dist/senpi/strategy-status.d.ts.map +1 -0
  152. package/dist/senpi/strategy-status.js +70 -0
  153. package/dist/senpi/strategy-status.js.map +1 -0
  154. package/dist/senpi/types.d.ts +47 -3
  155. package/dist/senpi/types.d.ts.map +1 -1
  156. package/dist/skills-manager/manifest.js +1 -1
  157. package/dist/skills-manager/skills-manifest.json +1 -1
  158. package/dist/telemetry/event-builders.d.ts +45 -6
  159. package/dist/telemetry/event-builders.d.ts.map +1 -1
  160. package/dist/telemetry/event-builders.js +99 -11
  161. package/dist/telemetry/event-builders.js.map +1 -1
  162. package/dist/telemetry/metrics.d.ts +37 -2
  163. package/dist/telemetry/metrics.d.ts.map +1 -1
  164. package/dist/telemetry/metrics.js +84 -4
  165. package/dist/telemetry/metrics.js.map +1 -1
  166. package/dist/telemetry/scanner-tick-event.d.ts +32 -0
  167. package/dist/telemetry/scanner-tick-event.d.ts.map +1 -0
  168. package/dist/telemetry/scanner-tick-event.js +32 -0
  169. package/dist/telemetry/scanner-tick-event.js.map +1 -0
  170. package/dist/types/strategy.d.ts +9 -1
  171. package/dist/types/strategy.d.ts.map +1 -1
  172. package/dist/universe/package-universe.d.ts +97 -0
  173. package/dist/universe/package-universe.d.ts.map +1 -0
  174. package/dist/universe/package-universe.js +275 -0
  175. package/dist/universe/package-universe.js.map +1 -0
  176. package/dist/utils/event-catalog.d.ts +58 -0
  177. package/dist/utils/event-catalog.d.ts.map +1 -1
  178. package/dist/utils/event-catalog.js +1 -0
  179. package/dist/utils/event-catalog.js.map +1 -1
  180. package/dist/validate/codes.d.ts +20 -0
  181. package/dist/validate/codes.d.ts.map +1 -1
  182. package/dist/validate/codes.js +36 -0
  183. package/dist/validate/codes.js.map +1 -1
  184. package/dist/validate/import-stage.js +5 -5
  185. package/dist/validate/import-stage.js.map +1 -1
  186. package/dist/validate/index.d.ts +1 -1
  187. package/dist/validate/index.d.ts.map +1 -1
  188. package/dist/validate/index.js.map +1 -1
  189. package/dist/validate/install-gate.d.ts.map +1 -1
  190. package/dist/validate/install-gate.js +10 -2
  191. package/dist/validate/install-gate.js.map +1 -1
  192. package/dist/validate/live-instruments.d.ts +44 -0
  193. package/dist/validate/live-instruments.d.ts.map +1 -0
  194. package/dist/validate/live-instruments.js +71 -0
  195. package/dist/validate/live-instruments.js.map +1 -0
  196. package/dist/validate/live-stage.js +5 -5
  197. package/dist/validate/live-stage.js.map +1 -1
  198. package/dist/validate/proof.d.ts +11 -1
  199. package/dist/validate/proof.d.ts.map +1 -1
  200. package/dist/validate/proof.js +7 -6
  201. package/dist/validate/proof.js.map +1 -1
  202. package/dist/validate/recipe-checks.d.ts.map +1 -1
  203. package/dist/validate/recipe-checks.js +6 -4
  204. package/dist/validate/recipe-checks.js.map +1 -1
  205. package/dist/validate/run.d.ts +5 -0
  206. package/dist/validate/run.d.ts.map +1 -1
  207. package/dist/validate/run.js +10 -1
  208. package/dist/validate/run.js.map +1 -1
  209. package/dist/validate/target.d.ts +41 -0
  210. package/dist/validate/target.d.ts.map +1 -1
  211. package/dist/validate/target.js +192 -16
  212. package/dist/validate/target.js.map +1 -1
  213. package/dist/validate/universe-stage.d.ts +71 -0
  214. package/dist/validate/universe-stage.d.ts.map +1 -0
  215. package/dist/validate/universe-stage.js +183 -0
  216. package/dist/validate/universe-stage.js.map +1 -0
  217. package/openclaw.plugin.json +1 -1
  218. package/package.json +1 -1
  219. package/dist/runtime/managed-wallet-guard.d.ts +0 -47
  220. package/dist/runtime/managed-wallet-guard.d.ts.map +0 -1
  221. package/dist/runtime/managed-wallet-guard.js +0 -106
  222. package/dist/runtime/managed-wallet-guard.js.map +0 -1
  223. package/dist/runtime/protection-nudge.d.ts +0 -67
  224. package/dist/runtime/protection-nudge.d.ts.map +0 -1
  225. package/dist/runtime/protection-nudge.js +0 -244
  226. package/dist/runtime/protection-nudge.js.map +0 -1
@@ -0,0 +1 @@
1
+ {"version":3,"file":"job.js","sourceRoot":"","sources":["../../src/deploy/job.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,68 @@
1
+ import { type DeployPackage } from "./package.js";
2
+ /**
3
+ * The platform per-wallet floor — mirrors the backend's `MINIMUM_STRATEGY_BUDGET` default
4
+ * (`getMinimumStrategyBudget` in senpi-hyperliquid-mcp). `funding.ts` re-exports it as `MIN_WALLET`
5
+ * so the runtime, like the skills side, has ONE copy of the physics.
6
+ */
7
+ export declare const WALLET_FLOOR = 10;
8
+ /** The notional the engine bumps a small order up to. */
9
+ export declare const BUMPED_NOTIONAL = 12;
10
+ /** USDC reserved per wallet for the creation fee (observed ~$1). */
11
+ export declare const FEE_BUFFER = 1.5;
12
+ /** One instance's contribution, in the Python's `breakdown` shape (camelCased). */
13
+ export interface MinBudgetRow {
14
+ wallet: string;
15
+ /** null = nothing in this sleeve resolved to a slot size. */
16
+ marginPct: number | null;
17
+ minLeverage: number;
18
+ fundingShare: number;
19
+ perWalletMin: number;
20
+ }
21
+ export interface MinBudgetResult {
22
+ /** The number to warn against. Never rounded down; a `catalog.min_budget_floor` may raise it. */
23
+ minBudget: number;
24
+ walletCount: number;
25
+ /** The sleeve whose per-wallet minimum over its share drives the total. null for an empty package. */
26
+ bindingWallet: string | null;
27
+ /**
28
+ * Sleeves whose marginPct could NOT be resolved — their per-wallet minimum fell back to the bare
29
+ * floor, so `minBudget` may be UNDERSTATED. Never silently swallowed: deploy warns rather than
30
+ * assert a number it never computed.
31
+ */
32
+ unresolvedWallets: string[];
33
+ /** The pre-rounding total, for the report's arithmetic to be checkable. */
34
+ raw: number;
35
+ breakdown: MinBudgetRow[];
36
+ }
37
+ /** The `strategy.yaml` subset this reads: instances with their shares, plus the catalog block. */
38
+ export interface MinBudgetManifest {
39
+ instances?: Array<{
40
+ name?: unknown;
41
+ funding_share?: unknown;
42
+ }> | null;
43
+ catalog?: Record<string, unknown> | null;
44
+ }
45
+ /** instance name → its parsed `runtime.yaml` document. */
46
+ export type MinBudgetRuntimes = Record<string, Record<string, unknown> | null | undefined>;
47
+ /**
48
+ * PURE. `manifest` is the parsed `strategy.yaml`; `runtimes` maps instance name → parsed
49
+ * `runtime.yaml`. Mirrors the Python's full return shape (camelCased).
50
+ */
51
+ export declare function strategyMinBudget(manifest: MinBudgetManifest, runtimes: MinBudgetRuntimes): MinBudgetResult;
52
+ /**
53
+ * The same calculation over a loaded package — the port of `deploy.py`'s `strategy_min(pkg)`. The
54
+ * package's own YAML is the only input, because a custom-authored package never passes through
55
+ * catalog generation: "what the card promised" and "what deploy warns about" are one function.
56
+ *
57
+ * A runtime.yaml that cannot be parsed contributes an EMPTY document rather than throwing: this is
58
+ * an advisory warning computed after the money gates have already passed, and it must never be the
59
+ * thing that fails a deploy. Such a sleeve lands in `unresolvedWallets`, which is exactly the
60
+ * "may be understated" warning.
61
+ *
62
+ * **An absent `funding_share` resolves to `1/n`, not to the Python's `1.0`** — see the header's
63
+ * documented-deviation list. The adapter is the right place for it: `strategyMinBudget` keeps
64
+ * byte-parity with the reference, and this layer is where the manifest meets the verb that will
65
+ * actually spend the money.
66
+ */
67
+ export declare function packageMinBudget(pkg: DeployPackage): MinBudgetResult;
68
+ //# sourceMappingURL=min-budget.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"min-budget.d.ts","sourceRoot":"","sources":["../../src/deploy/min-budget.ts"],"names":[],"mappings":"AA6DA,OAAO,EAAmB,KAAK,aAAa,EAAE,MAAM,cAAc,CAAC;AAGnE;;;;GAIG;AACH,eAAO,MAAM,YAAY,KAAO,CAAC;AAEjC,yDAAyD;AACzD,eAAO,MAAM,eAAe,KAAO,CAAC;AAEpC,oEAAoE;AACpE,eAAO,MAAM,UAAU,MAAM,CAAC;AAe9B,mFAAmF;AACnF,MAAM,WAAW,YAAY;IAC3B,MAAM,EAAE,MAAM,CAAC;IACf,6DAA6D;IAC7D,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,WAAW,EAAE,MAAM,CAAC;IACpB,YAAY,EAAE,MAAM,CAAC;IACrB,YAAY,EAAE,MAAM,CAAC;CACtB;AAED,MAAM,WAAW,eAAe;IAC9B,iGAAiG;IACjG,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,EAAE,MAAM,CAAC;IACpB,sGAAsG;IACtG,aAAa,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7B;;;;OAIG;IACH,iBAAiB,EAAE,MAAM,EAAE,CAAC;IAC5B,2EAA2E;IAC3E,GAAG,EAAE,MAAM,CAAC;IACZ,SAAS,EAAE,YAAY,EAAE,CAAC;CAC3B;AAED,kGAAkG;AAClG,MAAM,WAAW,iBAAiB;IAChC,SAAS,CAAC,EAAE,KAAK,CAAC;QAAE,IAAI,CAAC,EAAE,OAAO,CAAC;QAAC,aAAa,CAAC,EAAE,OAAO,CAAA;KAAE,CAAC,GAAG,IAAI,CAAC;IACtE,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,CAAC;CAC1C;AAED,0DAA0D;AAC1D,MAAM,MAAM,iBAAiB,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,GAAG,SAAS,CAAC,CAAC;AAqH3F;;;GAGG;AACH,wBAAgB,iBAAiB,CAC/B,QAAQ,EAAE,iBAAiB,EAC3B,QAAQ,EAAE,iBAAiB,GAC1B,eAAe,CA4DjB;AAED;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,gBAAgB,CAAC,GAAG,EAAE,aAAa,GAAG,eAAe,CA2BpE"}
@@ -0,0 +1,297 @@
1
+ /**
2
+ * The package's CALCULATED minimum budget — a 1:1 port of `min_budget.py`'s `strategy_min_budget`
3
+ * (Senpi-ai/senpi-skills `senpi-strategy-ops/scripts/min_budget.py`, vendored byte-identically into
4
+ * that repo's `senpi-trading-runtime` skill, where `gen_catalog.py` bakes the number into the
5
+ * discovery card).
6
+ *
7
+ * WHAT IT IS. The smallest TOTAL budget at which the authored design functions: every wallet funds
8
+ * (>= the {@link WALLET_FLOOR} platform floor) AND every wallet's SMALLEST slot can open at least
9
+ * the engine's bumped-minimum notional at that slot's smallest marginPct and its LOWEST leverage —
10
+ * worst case on BOTH axes, so even the least-leveraged, smallest-margin position clears the floor.
11
+ *
12
+ * perWalletMin = max(WALLET_FLOOR, BUMPED_NOTIONAL / (marginPct/100 * minLeverage) + FEE_BUFFER)
13
+ * strategyMin = max over wallets( perWalletMin / fundingShare )
14
+ * floored at WALLET_FLOOR * walletCount
15
+ * rounded up to a clean rung (STEPS); past the last rung, ceil to the next $25
16
+ *
17
+ * Funding shares matter, not just wallet count: deploy splits the budget by share, so a small-share
18
+ * sleeve must still receive its own per-wallet minimum — it can DRIVE the total up.
19
+ *
20
+ * WHY IT IS A WARNING, NOT A GATE. It is a local estimate over a package's own YAML, not a platform
21
+ * rule: the hard money invariant is the $10 × wallets floor, which the backend enforces. A budget
22
+ * at or above that floor but below this number DEPLOYS and runs degraded — fewer slots than
23
+ * designed. See the soft tier in `orchestrator.ts`'s preflight, which warns and proceeds.
24
+ *
25
+ * PARITY IS TESTED, NOT ASSERTED. `__tests__/min-budget.test.ts` diffs this port against goldens
26
+ * generated by executing the real Python; `scripts/gen-min-budget-goldens.py` regenerates them.
27
+ * Parity is defined at the **parsed-document level**: both sides are handed an already-parsed
28
+ * mapping, so YAML-parser differences (PyYAML is YAML 1.1 — `2_5` → 25, `yes` → true, `1:30` → 90;
29
+ * the JS `yaml` package is YAML 1.2 and leaves all three as strings) are upstream of this file and
30
+ * out of the port's scope. That gap is only observable on a package that quotes such a scalar, and
31
+ * only a dev-box comparison against `catalog.json`'s baked `min_budget` can prove it clean.
32
+ *
33
+ * DOCUMENTED DEVIATIONS from the reference — deliberate, each pinned by a test:
34
+ *
35
+ * 1. **An absent `funding_share` resolves to `1/n`, not `1.0`** — in {@link packageMinBudget} only;
36
+ * {@link strategyMinBudget} keeps the Python's `1.0`. `1/n` is the split a FRESH deploy of the
37
+ * package would apply (funding.ts `sharesOf`), which is what this total means; the Python's
38
+ * `1.0` understates it by the wallet count, so a 2-sleeve package could advertise a minimum
39
+ * neither wallet could actually trade at. The Python is safe with `1.0` because it only runs at
40
+ * catalog-generation time, on packages `_pkg.validate` has already forced to declare shares
41
+ * summing to 1; the verb is a DIRECT path and `loadDeployPackage` enforces neither.
42
+ *
43
+ * Note what this figure is NOT: the yardstick for a partially-adopted re-run, where the budget
44
+ * is split among fewer wallets. The shortfall claim belongs to the caller, per wallet, against
45
+ * `breakdown[].perWalletMin` — see `applyCalculatedMinimum` in orchestrator.ts.
46
+ * 2. **`toFloat` is Python-`float()`-shaped, not Python-`float()`-exact** — see `python-float.ts`,
47
+ * which owns that function and its two documented gaps for this file AND for `package.ts`.
48
+ * 3. **`round2` uses `toFixed(2)`** — see its own comment.
49
+ * 4. **A non-mapping `strategy:` block (or runtime doc) degrades to `{}`; the Python raises.**
50
+ * `strategy: "oops"` makes `rt.get("strategy") or {}` return the string and `.get` blow up with
51
+ * an AttributeError — which is right for `gen_catalog.py`, where a malformed package should fail
52
+ * the build loudly. Here the same input yields an unresolved sleeve and a warn. This is an
53
+ * advisory computed AFTER the money gates have passed: it must never be the thing that fails a
54
+ * deploy (the same doctrine that makes `packageMinBudget`'s callers swallow a throw).
55
+ * 5. **Instance names are coerced with `String(...)`** where the Python uses the raw key, so a
56
+ * nameless instance yields `""` rather than `None` and a numeric `name: 5` finds `runtimes["5"]`
57
+ * where the Python misses `runtimes[5]`. Unreachable through {@link packageMinBudget} —
58
+ * `package.ts` stringifies names and refuses empty ones — so this can only surface if
59
+ * {@link strategyMinBudget} is ever called with a hand-built manifest.
60
+ */
61
+ import { parse as parseYaml } from "yaml";
62
+ import { readRuntimeYaml } from "./package.js";
63
+ import { pythonFloat as toFloat } from "./python-float.js";
64
+ /**
65
+ * The platform per-wallet floor — mirrors the backend's `MINIMUM_STRATEGY_BUDGET` default
66
+ * (`getMinimumStrategyBudget` in senpi-hyperliquid-mcp). `funding.ts` re-exports it as `MIN_WALLET`
67
+ * so the runtime, like the skills side, has ONE copy of the physics.
68
+ */
69
+ export const WALLET_FLOOR = 10.0;
70
+ /** The notional the engine bumps a small order up to. */
71
+ export const BUMPED_NOTIONAL = 12.0;
72
+ /** USDC reserved per wallet for the creation fee (observed ~$1). */
73
+ export const FEE_BUFFER = 1.5;
74
+ /**
75
+ * The clean rungs a minimum rounds UP to. Past the last rung we ceil to the next $25 — never clamp,
76
+ * or a design above $250 would silently advertise a minimum below what it needs.
77
+ */
78
+ const STEPS = [10, 15, 20, 25, 30, 40, 50, 60, 75, 100, 125, 200, 250];
79
+ /**
80
+ * marginPct is read from an EXPLICIT allowlist of sizing keys — NOT a `*MarginPct*` match. A pattern
81
+ * would wrongly pick up non-sizing thresholds (e.g. sailfish's `leaderMarginPct`, an RS-gap in
82
+ * percentage points), collapsing its minimum from $25 to $250.
83
+ */
84
+ const MARGIN_KEYS = ["marginPct", "marginPctBase", "baseAllocationPct", "minMarginPct"];
85
+ /**
86
+ * Python `round(x, 2)`. `toFixed` rounds the exact decimal value of the double, which is what
87
+ * `round()` does too — unlike `Math.round(x * 100) / 100`, which rounds a second time after the
88
+ * multiply and disagrees on ordinary values like 1.005.
89
+ *
90
+ * They still part company on an exact binary tie, where Python rounds half-to-even and `toFixed`
91
+ * rounds half-up. Such a value EXISTS (`marginPct` 139.1304347826087 → 10.12 vs 10.13) but no
92
+ * realistic authored sizing reaches one: a 7,920-pair sweep of `marginPct ∈ [1.25,100] step 0.25`
93
+ * × `leverage ∈ {0.25…50}` found zero divergences. It would cost only the two rounded DISPLAY
94
+ * fields (`raw`, `breakdown[].perWalletMin`) and the binding tie-break anyway — `minBudget` itself
95
+ * is exact rung/ceil arithmetic and never rides this.
96
+ */
97
+ function round2(value) {
98
+ return Number(value.toFixed(2));
99
+ }
100
+ /** Round UP to the next clean rung; past the last one, ceil to the next $25 — never clamp. */
101
+ function roundStep(value) {
102
+ for (const step of STEPS) {
103
+ if (value <= step + 1e-9)
104
+ return step;
105
+ }
106
+ return Math.ceil(value / 25) * 25;
107
+ }
108
+ function isRecord(value) {
109
+ return typeof value === "object" && value !== null && !Array.isArray(value);
110
+ }
111
+ /**
112
+ * Every `external_scanner`'s `inputs` map. A multi-scanner runtime is sized off the WORST
113
+ * (smallest-slot) of all of them, not just the first.
114
+ */
115
+ function externalScannerInputs(runtime) {
116
+ const scanners = runtime.scanners;
117
+ if (!Array.isArray(scanners))
118
+ return [];
119
+ return scanners
120
+ .filter((sc) => isRecord(sc) && sc.type === "external_scanner")
121
+ .map((sc) => sc.inputs)
122
+ .filter(isRecord);
123
+ }
124
+ /**
125
+ * A marginPct is a PERCENT in (0,100]; a value <= 1 is either a pasted fraction or, for the
126
+ * vol-parity sleeves, an internal risk weight that is NOT a slot size. Reject it, so those sleeves
127
+ * come back UNRESOLVED and warn rather than being read as a 0.03%-margin slot.
128
+ */
129
+ function asPercent(value) {
130
+ const parsed = toFloat(value);
131
+ return parsed !== null && parsed > 1.0 ? parsed : null;
132
+ }
133
+ /**
134
+ * The SMALLEST configured slot marginPct — the min over the declared baseline, every allowlisted
135
+ * scanner sizing input, and every `marginPctTiers` value. Worst case, so a wallet funded at the
136
+ * minimum can open even its lowest-conviction slot. null when nothing resolves.
137
+ */
138
+ function marginPct(strategy, inputsList) {
139
+ const candidates = [];
140
+ const push = (value) => {
141
+ if (value)
142
+ candidates.push(value);
143
+ };
144
+ push(asPercent(strategy.margin_pct));
145
+ for (const inputs of inputsList) {
146
+ for (const key of MARGIN_KEYS)
147
+ push(asPercent(inputs[key]));
148
+ const tiers = inputs.marginPctTiers;
149
+ if (isRecord(tiers))
150
+ for (const tier of Object.values(tiers))
151
+ push(asPercent(tier));
152
+ }
153
+ return candidates.length > 0 ? Math.min(...candidates) : null;
154
+ }
155
+ /** Leverage values from a tiers config: a map (`{apex,good,base}`) or a list of `[score, lev]` pairs. */
156
+ function leverageValues(tiers) {
157
+ const collect = (raw) => raw.map(toFloat).filter((value) => value !== null && value > 0);
158
+ if (isRecord(tiers))
159
+ return collect(Object.values(tiers));
160
+ if (Array.isArray(tiers)) {
161
+ return collect(tiers.map((row) => (Array.isArray(row) && row.length > 0 ? row[row.length - 1] : row)));
162
+ }
163
+ return [];
164
+ }
165
+ /**
166
+ * The LOWEST leverage the wallet sizes a position at (worst case for notional): the lowest of every
167
+ * explicit tier, tiered-margin std, and conservative multiplier across all scanners; else the
168
+ * declared default; else 1. A `minLeverage` clamp-floor is deliberately NOT used — it is a safety
169
+ * clamp, not a configured tier.
170
+ */
171
+ function minLeverage(strategy, inputsList) {
172
+ const candidates = [];
173
+ for (const inputs of inputsList) {
174
+ candidates.push(...leverageValues(inputs.leverageTiers));
175
+ const std = toFloat(inputs.stdLeverage);
176
+ if (std !== null && std > 0)
177
+ candidates.push(std);
178
+ }
179
+ const multipliers = strategy.leverage_multipliers;
180
+ if (isRecord(multipliers)) {
181
+ const conservative = toFloat(multipliers.conservative);
182
+ if (conservative)
183
+ candidates.push(conservative);
184
+ }
185
+ if (candidates.length > 0)
186
+ return Math.min(...candidates);
187
+ const declared = toFloat(strategy.default_leverage);
188
+ return declared !== null && declared > 0 ? declared : 1.0;
189
+ }
190
+ function perWalletMin(margin, leverage) {
191
+ return Math.max(WALLET_FLOOR, BUMPED_NOTIONAL / ((margin / 100.0) * leverage) + FEE_BUFFER);
192
+ }
193
+ /**
194
+ * PURE. `manifest` is the parsed `strategy.yaml`; `runtimes` maps instance name → parsed
195
+ * `runtime.yaml`. Mirrors the Python's full return shape (camelCased).
196
+ */
197
+ export function strategyMinBudget(manifest, runtimes) {
198
+ const instances = manifest.instances ?? [];
199
+ const catalog = manifest.catalog ?? {};
200
+ const perWalletOverShare = [];
201
+ const breakdown = [];
202
+ const unresolvedWallets = [];
203
+ for (const instance of instances) {
204
+ const name = typeof instance.name === "string" ? instance.name : String(instance.name ?? "");
205
+ const runtime = runtimes[name] ?? {};
206
+ const strategy = isRecord(runtime.strategy) ? runtime.strategy : {};
207
+ const inputsList = externalScannerInputs(runtime);
208
+ const margin = marginPct(strategy, inputsList);
209
+ const leverage = minLeverage(strategy, inputsList);
210
+ const declaredShare = toFloat(instance.funding_share);
211
+ // A 0 or absent share is treated as the whole book — the fail-closed direction, because
212
+ // dividing by a share smaller than the truth would OVERSTATE the minimum and over-warn.
213
+ const fundingShare = declaredShare !== null && declaredShare > 0 ? declaredShare : 1.0;
214
+ let walletMin;
215
+ if (margin) {
216
+ walletMin = perWalletMin(margin, leverage);
217
+ }
218
+ else {
219
+ walletMin = WALLET_FLOOR;
220
+ unresolvedWallets.push(name);
221
+ }
222
+ perWalletOverShare.push(walletMin / fundingShare);
223
+ breakdown.push({
224
+ wallet: name,
225
+ marginPct: margin,
226
+ minLeverage: leverage,
227
+ fundingShare,
228
+ perWalletMin: round2(walletMin),
229
+ });
230
+ }
231
+ const walletCount = instances.length;
232
+ const raw = perWalletOverShare.length > 0 ? Math.max(...perWalletOverShare) : WALLET_FLOOR;
233
+ const floored = Math.max(raw, WALLET_FLOOR * Math.max(walletCount, 1));
234
+ let minBudget = roundStep(floored);
235
+ // A deliberate authored number RAISES only, and is never shrunk by the rounding.
236
+ const floorOverride = toFloat(catalog.min_budget_floor);
237
+ if (floorOverride)
238
+ minBudget = Math.max(minBudget, floorOverride);
239
+ // The binding sleeve is the one whose ROUNDED per-wallet minimum over its share is largest.
240
+ // Python's `max(…, key=…)` keeps the FIRST row on a tie, which `>` (never `>=`) preserves.
241
+ const weightOf = (row) => row.perWalletMin / (row.fundingShare || 1.0);
242
+ let binding = null;
243
+ for (const row of breakdown) {
244
+ if (binding === null || weightOf(row) > weightOf(binding))
245
+ binding = row;
246
+ }
247
+ return {
248
+ minBudget,
249
+ walletCount,
250
+ bindingWallet: binding?.wallet ?? null,
251
+ unresolvedWallets,
252
+ raw: round2(floored),
253
+ breakdown,
254
+ };
255
+ }
256
+ /**
257
+ * The same calculation over a loaded package — the port of `deploy.py`'s `strategy_min(pkg)`. The
258
+ * package's own YAML is the only input, because a custom-authored package never passes through
259
+ * catalog generation: "what the card promised" and "what deploy warns about" are one function.
260
+ *
261
+ * A runtime.yaml that cannot be parsed contributes an EMPTY document rather than throwing: this is
262
+ * an advisory warning computed after the money gates have already passed, and it must never be the
263
+ * thing that fails a deploy. Such a sleeve lands in `unresolvedWallets`, which is exactly the
264
+ * "may be understated" warning.
265
+ *
266
+ * **An absent `funding_share` resolves to `1/n`, not to the Python's `1.0`** — see the header's
267
+ * documented-deviation list. The adapter is the right place for it: `strategyMinBudget` keeps
268
+ * byte-parity with the reference, and this layer is where the manifest meets the verb that will
269
+ * actually spend the money.
270
+ */
271
+ export function packageMinBudget(pkg) {
272
+ const runtimes = {};
273
+ for (const inst of pkg.instances) {
274
+ try {
275
+ const parsed = parseYaml(readRuntimeYaml(inst));
276
+ runtimes[inst.name] = isRecord(parsed) ? parsed : {};
277
+ }
278
+ catch {
279
+ runtimes[inst.name] = {};
280
+ }
281
+ }
282
+ // The even split `sharesOf` (funding.ts) would apply to a FRESH deploy of this package — which is
283
+ // exactly what this figure means: "what deploying the whole thing costs". It is deliberately NOT
284
+ // the split of a partially-adopted re-run, where `planFunding` divides among the instances still
285
+ // NEEDING a wallet and the denominator is smaller. Do not "fix" the two to match: they answer
286
+ // different questions, and the caller compares per-wallet allocations against `breakdown[]`
287
+ // rather than comparing a budget to this total (orchestrator.ts `applyCalculatedMinimum`).
288
+ const evenSplit = 1 / pkg.instances.length;
289
+ return strategyMinBudget({
290
+ instances: pkg.instances.map((inst) => ({
291
+ name: inst.name,
292
+ funding_share: inst.fundingShare ?? evenSplit,
293
+ })),
294
+ catalog: pkg.catalog,
295
+ }, runtimes);
296
+ }
297
+ //# sourceMappingURL=min-budget.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"min-budget.js","sourceRoot":"","sources":["../../src/deploy/min-budget.ts"],"names":[],"mappings":"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"}