@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":"skipped-signal-results.js","sourceRoot":"","sources":["../../src/actions/skipped-signal-results.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AACH,MAAM,UAAU,oBAAoB,CAClC,OAAuC,EACvC,MAAc,EACd,KAAa,EACb,SAAiD;IAEjD,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC;QAAE,OAAO,EAAE,CAAC;IACvC,MAAM,IAAI,GAAmC,EAAE,CAAC;IAChD,KAAK,MAAM,GAAG,IAAI,OAAO,EAAE,CAAC;QAC1B,IAAI,GAAG,KAAK,IAAI,IAAI,OAAO,GAAG,KAAK,QAAQ;YAAE,SAAS;QACtD,MAAM,MAAM,GAAG,GAA8B,CAAC;QAC9C,MAAM,QAAQ,GAAG,MAAM,CAAC,KAAK,CAAC;QAC9B,iFAAiF;QACjF,MAAM,KAAK,GAAG,OAAO,QAAQ,KAAK,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,OAAO,QAAQ,KAAK,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;QAC7G,IAAI,KAAK,CAAC,IAAI,EAAE,KAAK,EAAE;YAAE,SAAS;QAClC,MAAM,SAAS,GAAG,MAAM,CAAC,SAAS,CAAC;QACnC,MAAM,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC;QAC3B,6FAA6F;QAC7F,yFAAyF;QACzF,8FAA8F;QAC9F,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC;QACzB,MAAM,OAAO,GAAG,IAAI,KAAK,IAAI,IAAI,OAAO,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAE,IAAgC,CAAC,GAAG,CAAC,CAAC,CAAC,SAAS,CAAC;QAC9G,MAAM,GAAG,GAAG,OAAO,MAAM,CAAC,GAAG,KAAK,QAAQ,IAAI,MAAM,CAAC,GAAG,CAAC,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,OAAO,CAAC;QAC9F,IAAI,CAAC,IAAI,CAAC;YACR,KAAK;YACL,GAAG,CAAC,SAAS,KAAK,MAAM,IAAI,SAAS,KAAK,OAAO,CAAC,CAAC,CAAC,EAAE,SAAS,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YACvE,GAAG,EAAE,OAAO,GAAG,KAAK,QAAQ,IAAI,GAAG,CAAC,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,MAAM;YACvE,GAAG,CAAC,OAAO,KAAK,KAAK,QAAQ,IAAI,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YACzE,OAAO,EAAE,SAAS,EAAE,OAAO,IAAI,IAAI;YACnC,MAAM;YACN,GAAG,CAAC,SAAS,EAAE,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,SAAS,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YACrE,SAAS,EAAE,KAAK;YAChB,OAAO,EAAE,KAAK;SACf,CAAC,CAAC;IACL,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC"}
@@ -0,0 +1,91 @@
1
+ export interface DeployStepLike {
2
+ status: string;
3
+ detail: string;
4
+ evidence?: Record<string, unknown>;
5
+ }
6
+ export interface DeployInstanceLike {
7
+ instance: string;
8
+ wallet?: string;
9
+ strategyId?: string;
10
+ funded?: number;
11
+ runtimeId?: string;
12
+ /** D-6: this job created the wallet, its install failed, and the close+refund completed. */
13
+ rolledBack?: boolean;
14
+ steps: Record<string, DeployStepLike>;
15
+ }
16
+ export interface DeployReportLike {
17
+ packageId: string;
18
+ version: string;
19
+ overall: string;
20
+ instances: DeployInstanceLike[];
21
+ next?: string;
22
+ /** The SOFT calculated-minimum tier — advisory, and never part of `overall`. */
23
+ minBudget?: number;
24
+ minWalletCount?: number;
25
+ belowMin?: boolean;
26
+ minBudgetNote?: string;
27
+ minBudgetUnresolved?: string[];
28
+ /** The OUTCOME tier — the backend funded a wallet short of the ask. Advisory, like the above. */
29
+ partialFundNote?: string;
30
+ /** The OUTCOME tier's other half — the backend reported no readable funded amount. Advisory. */
31
+ fundedUnreadableNote?: string;
32
+ }
33
+ export interface DeployEventLike {
34
+ seq: number;
35
+ ts: string;
36
+ type: string;
37
+ phase?: string;
38
+ instance?: string;
39
+ step?: string;
40
+ status?: string;
41
+ detail: string;
42
+ }
43
+ export interface DeployLiveLayerLike {
44
+ strategies: Array<{
45
+ strategyName: string;
46
+ status: string;
47
+ strategyWalletAddress: string;
48
+ totalFunded?: number;
49
+ }>;
50
+ runtimes: Array<{
51
+ id: string;
52
+ wallet?: string;
53
+ }>;
54
+ unavailable?: string;
55
+ }
56
+ export interface DeploySnapshotLike {
57
+ meta: {
58
+ deployId: string;
59
+ packageId: string;
60
+ version: string;
61
+ packageDir: string;
62
+ budget?: number;
63
+ startedAt: string;
64
+ };
65
+ state: {
66
+ status: "running";
67
+ phase: string;
68
+ stopRequested: boolean;
69
+ } | {
70
+ status: "done";
71
+ overall: string;
72
+ } | {
73
+ status: "interrupted";
74
+ };
75
+ events?: DeployEventLike[];
76
+ report?: DeployReportLike;
77
+ live?: DeployLiveLayerLike;
78
+ next?: string;
79
+ }
80
+ export declare function renderHeader(snap: DeploySnapshotLike, now: number): string;
81
+ export declare function renderStepTable(report: DeployReportLike): string[];
82
+ export declare function renderEventsTail(events: DeployEventLike[]): string[];
83
+ export declare function renderReportFooter(report: DeployReportLike): string[];
84
+ /** Fresh-read layer, printed beside (never instead of) the journal narration. */
85
+ export declare function renderLiveLayer(live: DeployLiveLayerLike): string[];
86
+ export declare function renderDeploySnapshotLines(snap: DeploySnapshotLike, now?: number): string[];
87
+ /** The ONE place the D-12 map lives; the status action calls it. */
88
+ export declare function exitCodeForDeploy(snap: DeploySnapshotLike): number;
89
+ /** CLI entry point: print the snapshot rendering. */
90
+ export declare function renderDeploySnapshot(snap: DeploySnapshotLike, now?: number): void;
91
+ //# sourceMappingURL=deploy-render.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"deploy-render.d.ts","sourceRoot":"","sources":["../../src/cli/deploy-render.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,216 @@
1
+ /**
2
+ * Pure renderer for `senpi deploy status`.
3
+ *
4
+ * Every number and lifecycle claim printed here is quoted from the surface that
5
+ * proves it — the report's `funded` (backend `totalFunded`), the scanner row's
6
+ * fields, the install payload — never re-derived in prose and never reformatted.
7
+ * A running phase renders as an in-progress fact, never as an achievement, and
8
+ * an unobserved tick renders as `unobserved` with the check-later command.
9
+ *
10
+ * Kept free of I/O so it unit-tests without the gateway spawn mock. It borrows exactly one thing
11
+ * from the deploy module — `usd()`, so money reads the same here as in the notes this prints beside
12
+ * — and nothing else: the report types below are structural mirrors, deliberately not imports, so
13
+ * the renderer stays decoupled from the orchestrator's shapes.
14
+ */
15
+ import { usd } from "../deploy/funding.js";
16
+ const STEP_ORDER = ["reconcile", "preflight", "create", "install", "observe"];
17
+ const EVENT_TAIL = 6;
18
+ /** Human phrase for a job state — running phases stay in-progress, never triumphant. */
19
+ function renderState(state) {
20
+ switch (state.status) {
21
+ case "running":
22
+ return state.stopRequested
23
+ ? `running (phase: ${state.phase}; deploy deadline reached — stopping at the next step boundary)`
24
+ : `running (phase: ${state.phase})`;
25
+ case "done":
26
+ return `done — ${state.overall}`;
27
+ case "interrupted":
28
+ return "interrupted by a gateway restart (no deploy is running now)";
29
+ }
30
+ }
31
+ function elapsedSeconds(startedAt, now) {
32
+ const started = Date.parse(startedAt);
33
+ if (Number.isNaN(started))
34
+ return null;
35
+ return Math.max(0, Math.round((now - started) / 1000));
36
+ }
37
+ export function renderHeader(snap, now) {
38
+ const elapsed = elapsedSeconds(snap.meta.startedAt, now);
39
+ const elapsedPart = elapsed === null ? "" : `, elapsed ${elapsed}s`;
40
+ return (`deploy ${snap.meta.deployId} — ${renderState(snap.state)} — package ` +
41
+ `${snap.meta.packageId} v${snap.meta.version}${elapsedPart}`);
42
+ }
43
+ /** `k=v` pairs straight from the evidence object — no rounding, no currency formatting. */
44
+ function renderEvidence(evidence) {
45
+ return Object.entries(evidence)
46
+ .map(([key, value]) => `${key}=${typeof value === "string" ? value : JSON.stringify(value)}`)
47
+ .join(" ");
48
+ }
49
+ export function renderStepTable(report) {
50
+ const lines = [];
51
+ for (const instance of report.instances) {
52
+ // A rolled-back wallet is closed and its funds are back with the owner — rendering it as
53
+ // `funded N` here would be the same fail-open as calling an unobserved tick `live`. An
54
+ // INCOMPLETE rollback deliberately keeps the funded figure: there the money really is stranded.
55
+ const facts = [
56
+ instance.wallet ? `wallet ${instance.wallet}` : null,
57
+ instance.strategyId ? `strategyId ${instance.strategyId}` : null,
58
+ instance.rolledBack
59
+ ? "ROLLED BACK — strategy closed, funds returned"
60
+ : instance.funded !== undefined
61
+ ? `funded ${instance.funded}`
62
+ : null,
63
+ // A runtime id survives a FAILED install (a blind runtime records its id as a fact), and the
64
+ // facts line is the skim line agents quote. Bare, it relays as "the runtime is installed" —
65
+ // the exact opposite of what the install step two lines below says.
66
+ instance.runtimeId
67
+ ? instance.steps.install?.status === "failed"
68
+ ? `runtime ${instance.runtimeId} (install FAILED — not watching this wallet)`
69
+ : `runtime ${instance.runtimeId}`
70
+ : null,
71
+ ].filter((fact) => fact !== null);
72
+ lines.push(` instance ${instance.instance}${facts.length > 0 ? ` — ${facts.join(", ")}` : ""}`);
73
+ for (const step of STEP_ORDER) {
74
+ const outcome = instance.steps[step];
75
+ if (!outcome)
76
+ continue;
77
+ lines.push(` ${step.padEnd(9)} ${outcome.status.padEnd(11)} ${outcome.detail}`);
78
+ if (outcome.evidence && Object.keys(outcome.evidence).length > 0) {
79
+ lines.push(` evidence: ${renderEvidence(outcome.evidence)}`);
80
+ }
81
+ }
82
+ }
83
+ return lines;
84
+ }
85
+ export function renderEventsTail(events) {
86
+ if (events.length === 0)
87
+ return [];
88
+ return [" recent events:", ...events.slice(-EVENT_TAIL).map((event) => ` ${event.ts} ${event.detail}`)];
89
+ }
90
+ /**
91
+ * The SOFT calculated-minimum tier, rendered beside the overall — never folded INTO it.
92
+ *
93
+ * A deploy that ran below the package's calculated minimum is still `live`: the minimum is a local
94
+ * estimate over the package's own YAML, not a platform rule, and the deploy proceeded. So the
95
+ * figure prints as its own fact and the note prints under an explicit `warn:` label, which is what
96
+ * keeps a reader (agent or human) from reading its `[E_…]` code as a refusal.
97
+ *
98
+ * The figure renders through the same `usd()` every note in the deploy module uses. It is NOT in
99
+ * the "quote it exactly as carried" class that `funded` and the scanner fields are in: those are
100
+ * backend-quoted facts that must never be re-derived, whereas this one is computed locally two
101
+ * modules away. `SKILL.md` tells the agent to quote the report's numbers verbatim, so a bare `125`
102
+ * is what would reach the user.
103
+ *
104
+ * The two qualifiers COMPOSE rather than compete. `belowMin` and an unresolved sleeve can hold at
105
+ * once, and this line is what a skimming reader takes away, so dropping either half would
106
+ * understate the situation.
107
+ *
108
+ * `belowMin` renders as a statement about a WALLET, never about the budget versus this total. The
109
+ * two are different claims — a partially-adopted deploy splits the budget among fewer wallets — and
110
+ * "the requested budget is BELOW it" is not merely weaker but false where they diverge: a declared
111
+ * `funding_share: 0` sleeve is floored at MIN_WALLET at every budget, so `belowMin` holds while the
112
+ * budget may be far above the total.
113
+ */
114
+ function renderSoftBudgetTier(report) {
115
+ const lines = [];
116
+ if (report.minBudget !== undefined) {
117
+ const unresolved = report.minBudgetUnresolved ?? [];
118
+ const parts = [];
119
+ if (unresolved.length > 0)
120
+ parts.push(`UNRESOLVED for ${unresolved.join(", ")}`);
121
+ if (report.belowMin) {
122
+ parts.push(`${unresolved.length > 0 ? "and " : ""}a wallet in this deploy is sized below its own minimum`);
123
+ }
124
+ const qualifier = parts.length > 0 ? ` — ${parts.join(", ")}` : "";
125
+ lines.push(` calculated minimum: ${usd(report.minBudget)} across ${report.minWalletCount} wallet(s)${qualifier}`);
126
+ }
127
+ if (report.minBudgetNote)
128
+ lines.push(` warn: ${report.minBudgetNote}`);
129
+ return lines;
130
+ }
131
+ export function renderReportFooter(report) {
132
+ const lines = [` overall: ${report.overall}`, ...renderSoftBudgetTier(report)];
133
+ // A SECOND warn line, never merged with the soft tier's: that one is a claim about the funding
134
+ // plan against the package's own sizing, this one is a claim about what the backend actually
135
+ // landed, and a report can truthfully carry both. Same `warn:` label for the same reason — it is
136
+ // what stops a reader taking a bracketed code on a `live` deploy for a refusal.
137
+ if (report.partialFundNote)
138
+ lines.push(` warn: ${report.partialFundNote}`);
139
+ // Mutually exclusive with the line above per wallet, but not per report: a two-sleeve package
140
+ // can land one short wallet and one unreadable read, and each wallet gets the note that fits it.
141
+ if (report.fundedUnreadableNote)
142
+ lines.push(` warn: ${report.fundedUnreadableNote}`);
143
+ if (report.next)
144
+ lines.push(` next: ${report.next}`);
145
+ return lines;
146
+ }
147
+ /** Fresh-read layer, printed beside (never instead of) the journal narration. */
148
+ export function renderLiveLayer(live) {
149
+ if (live.unavailable)
150
+ return [` live (fresh read): unavailable — ${live.unavailable}`];
151
+ const lines = [" live (fresh read):"];
152
+ if (live.strategies.length === 0)
153
+ lines.push(" strategies: none matching this package");
154
+ for (const strategy of live.strategies) {
155
+ lines.push(` strategy ${strategy.strategyName}: status ${strategy.status}, ` +
156
+ `wallet ${strategy.strategyWalletAddress}, totalFunded ${strategy.totalFunded ?? "unreadable"}`);
157
+ }
158
+ if (live.runtimes.length === 0)
159
+ lines.push(" runtimes: none registered for this package");
160
+ for (const runtime of live.runtimes) {
161
+ lines.push(` runtime ${runtime.id}: wallet ${runtime.wallet ?? "(none)"}`);
162
+ }
163
+ return lines;
164
+ }
165
+ export function renderDeploySnapshotLines(snap, now = Date.now()) {
166
+ const lines = [renderHeader(snap, now)];
167
+ const interrupted = snap.state.status === "interrupted";
168
+ if (snap.report)
169
+ lines.push(...renderStepTable(snap.report));
170
+ const events = snap.events ?? [];
171
+ if (events.length > 0) {
172
+ lines.push(...(interrupted ? [" history (journal):"] : []), ...renderEventsTail(events));
173
+ }
174
+ if (snap.live)
175
+ lines.push(...renderLiveLayer(snap.live));
176
+ if (snap.report)
177
+ lines.push(...renderReportFooter(snap.report));
178
+ if (snap.next)
179
+ lines.push(` next: ${snap.next}`);
180
+ return lines;
181
+ }
182
+ /**
183
+ * D-12 exit-code contract for `senpi deploy status`. 1 is reserved for transport/internal
184
+ * errors (node/commander default) and is also the unknown-status fallback so a future status
185
+ * can never silently read as success. Anything richer than the overall status: use --json.
186
+ */
187
+ const DEPLOY_EXIT_CODES = {
188
+ live: 0,
189
+ refused: 2,
190
+ failed: 3,
191
+ "installed-unobserved": 4,
192
+ interrupted: 5,
193
+ // A report whose overall is `pending` (a wallet was still funding when the poll budget ran out)
194
+ // is the same answer as a job still in flight: not finished, re-run to resume. It shares code 6
195
+ // rather than falling to 1, which would call a normal resumable outcome an internal error.
196
+ pending: 6,
197
+ };
198
+ /** The ONE place the D-12 map lives; the status action calls it. */
199
+ export function exitCodeForDeploy(snap) {
200
+ // A snapshot with no state is a broken gateway contract, not a running job — 1, not 6.
201
+ if (!snap?.state?.status)
202
+ return 1;
203
+ // `interrupted` is a terminal STATE, not an overall — a gateway restart killed the job. It is
204
+ // not pending: nothing is running, so it must never exit 6.
205
+ if (snap.state.status === "interrupted")
206
+ return DEPLOY_EXIT_CODES.interrupted;
207
+ if (snap.state.status !== "done")
208
+ return 6; // pending — job still running
209
+ return DEPLOY_EXIT_CODES[snap.state.overall ?? ""] ?? 1;
210
+ }
211
+ /** CLI entry point: print the snapshot rendering. */
212
+ export function renderDeploySnapshot(snap, now = Date.now()) {
213
+ for (const line of renderDeploySnapshotLines(snap, now))
214
+ console.log(line);
215
+ }
216
+ //# sourceMappingURL=deploy-render.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"deploy-render.js","sourceRoot":"","sources":["../../src/cli/deploy-render.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"guide-commands.d.ts","sourceRoot":"","sources":["../../src/cli/guide-commands.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AA8cH,eAAO,MAAM,eAAe,QAqNpB,CAAC;AAIT,kFAAkF;AAClF,UAAU,gBAAgB;IACxB,OAAO,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM,GAAG,gBAAgB,CAAC;IACvD,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG,gBAAgB,CAAC;IAC5C,MAAM,CAAC,KAAK,EAAE,MAAM,EAAE,WAAW,CAAC,EAAE,MAAM,GAAG,gBAAgB,CAAC;IAC9D,MAAM,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAAK,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,GAAG,gBAAgB,CAAC;CACxF;AAED;;;;GAIG;AACH,wBAAgB,qBAAqB,CACnC,KAAK,EAAE,gBAAgB,EACvB,OAAO,EAAE,MAAM,GACd,IAAI,CA2CN"}
1
+ {"version":3,"file":"guide-commands.d.ts","sourceRoot":"","sources":["../../src/cli/guide-commands.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AA+cH,eAAO,MAAM,eAAe,QA4RpB,CAAC;AAIT,kFAAkF;AAClF,UAAU,gBAAgB;IACxB,OAAO,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM,GAAG,gBAAgB,CAAC;IACvD,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG,gBAAgB,CAAC;IAC5C,MAAM,CAAC,KAAK,EAAE,MAAM,EAAE,WAAW,CAAC,EAAE,MAAM,GAAG,gBAAgB,CAAC;IAC9D,MAAM,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAAK,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,GAAG,gBAAgB,CAAC;CACxF;AAED;;;;GAIG;AACH,wBAAgB,qBAAqB,CACnC,KAAK,EAAE,gBAAgB,EACvB,OAAO,EAAE,MAAM,GACd,IAAI,CA2CN"}
@@ -24,6 +24,7 @@ Quick commands:
24
24
  senpi guide actions Action types and decision modes
25
25
  senpi guide dsl DSL exit: phases, lock modes, tiers, time-based cuts
26
26
  senpi validate <pkg> Prove a strategy runs before funding it (static → import → live)
27
+ senpi deploy -p <pkg> Take a proven package live: create+fund → install → verified tick
27
28
  senpi scanner Per-scanner health: runs, errors, liveness, "(no signals yet)" flag
28
29
  senpi events Local domain-event log — the trade narrative
29
30
  senpi explain <asset> Stitch one asset's position lifecycle from the event log
@@ -478,11 +479,75 @@ senpi config — Manage CLI preferences (~/.openclaw/senpi-cli.json)
478
479
  config unset <key> Remove a key
479
480
  config reset Clear all preferences
480
481
 
482
+ senpi deploy — Take a strategy package live, end to end (the strategy lifecycle)
483
+ openclaw senpi deploy -p <package-dir> --budget <usd> # start (detached): preflight → create+fund → install → verified tick
484
+ openclaw senpi deploy status # watch until terminal; quotes the verified report
485
+ -p, --path <dir> Strategy package directory (contains strategy.yaml)
486
+ --budget <usd> Total budget across the package's wallets (min $10/wallet)
487
+ --decision-model <model> Required if the package uses decision_mode: llm
488
+ --tick-wait <seconds> Wait for one verified scanner tick (default 120, 0 skips)
489
+ --max-wait <seconds> Wait for wallets to reach ACTIVE (default 150)
490
+ --json Raw JSON output
491
+ deploy returns in ~1s; the job runs detached. Poll
492
+ 'deploy status' until it is terminal. Exit codes:
493
+ 0 live · 2 refused · 3 failed · 4 installed-unobserved ·
494
+ 5 interrupted · 6 pending/running · 1 error. An
495
+ unobserved tick reports as "unobserved", never as success.
496
+ 'deploy' itself uses the same classes at START: 0 job
497
+ started · 2 refused (the message leads with its code, e.g.
498
+ [INVALID_REQUEST]) · 1 internal/transport. So 2 always
499
+ means obey the message; 1 always means the deploy's state
500
+ is unknown — never retry a 2.
501
+ A package no 'senpi validate' has ever proven — or one whose
502
+ files have changed since, or whose proof predates this
503
+ runtime — is refused BEFORE any money moves. The refusal
504
+ leads with [E_VALIDATE_NO_PROOF] /
505
+ [E_VALIDATE_CONTENT_CHANGED] /
506
+ [E_VALIDATE_RUNTIME_VERSION_CHANGED] and names the exact
507
+ validate command for the instance that failed. Two instances
508
+ sharing one runtime directory are refused outright
509
+ ([INVALID_REQUEST]): a proof lives beside its recipe, one
510
+ file per directory, so it cannot speak for both.
511
+ Budget is two-tier: BELOW the $10/wallet floor it refuses
512
+ [E_FUNDS_BELOW_FLOOR]; and when the split leaves a wallet
513
+ under its OWN sizing it DEPLOYS and warns
514
+ [W_BUDGET_BELOW_STRATEGY_MIN] (that sleeve runs degraded —
515
+ fewer slots than authored). [W_BUDGET_UNRESOLVED] = the
516
+ minimum could not be computed and may be understated.
517
+ Neither warn stops a deploy; both judge each wallet against
518
+ its OWN allocation, not the budget against the package
519
+ total (those differ once a sleeve is adopted). To run the
520
+ authored design you must close and redeploy — a re-run at
521
+ a bigger --budget only adopts the wallet it already made.
522
+ Follow the warn's own close command verbatim; it is scoped
523
+ to the short sleeves so adopted wallets are left alone.
524
+ Some reports deliberately carry NO close command (a funded
525
+ wallet with no runtime installed; a funding_share: 0
526
+ sleeve; or when [E_ROLLBACK_INCOMPLETE] owns the cleanup)
527
+ — that is the correct answer there, not a gap to fill:
528
+ never substitute a package-wide close.
529
+ Both of those judge the PLAN. After the wallets exist the
530
+ report also checks the OUTCOME: when the backend lands under
531
+ 90% of what a wallet was asked to be funded, it warns
532
+ [W_BUDGET_PARTIAL_FUND] with both numbers ("funded $60.00 of
533
+ requested $500.00 (12%, short $440.00)"). The strategy is
534
+ still live and the exit code does not move — do NOT close it
535
+ over the shortfall. Quote the FUNDED figure, never the
536
+ requested one. Those figures are AT DEPLOY TIME and the note
537
+ re-renders on every later status read, so re-read the
538
+ current funding (status.py) before moving money, then top up
539
+ via the senpi-deposit-withdraw-transfer skill;
540
+ close-and-redeploy is the destructive fallback. The warn is
541
+ silent wherever a D-6 rollback was attempted — if the create
542
+ step carries [E_ROLLBACK_INCOMPLETE], THAT line owns the
543
+ remediation (reclaim), and it is the one to follow.
544
+ When the backend reports no readable funded amount at all,
545
+ you get [W_BUDGET_FUNDED_UNREADABLE] instead: no percentage,
546
+ no shortfall, no top-up. The funded amount is UNKNOWN, never
547
+ $0.00 — ask the USER to verify what actually landed before
548
+ any money action
549
+
481
550
  senpi runtime — Manage runtimes
482
- runtime create Add a runtime from a YAML file
483
- -p, --path <path> Path to strategy YAML file
484
- -c, --content <yaml> Inline YAML content
485
- --runtime-id <id> Override auto-derived ID
486
551
  runtime delete [id] Remove a runtime
487
552
  --id <runtime_id> Delete by runtime ID
488
553
  --address <wallet> Delete by wallet address
@@ -510,6 +575,12 @@ senpi validate — Prove a strategy can execute BEFORE it is funded
510
575
  command, not the code
511
576
  A full unscoped PASS at live depth writes .senpi-proof.json beside the recipe
512
577
  (content-addressed, no expiry); the deploy gate verifies it via verifyProof().
578
+ That gate REFUSES, before any money moves: [E_VALIDATE_NO_PROOF] nothing here
579
+ was ever observed to run · [E_VALIDATE_CONTENT_CHANGED] the files moved since
580
+ the proof, and it names which · [E_VALIDATE_RUNTIME_VERSION_CHANGED] the proof
581
+ predates the running runtime (the package needs no edit — just re-prove it).
582
+ A proof attests that this content RAN and passed, not that every check at that
583
+ depth produced a verdict — deploy re-checks the live instrument universe itself.
513
584
 
514
585
  senpi status — Lightweight runtime health digest
515
586
  status Overall health + scanners (with degraded count),
@@ -623,8 +694,9 @@ senpi.installRuntime
623
694
  Success: { id, name, wallet }
624
695
  Errors: INVALID_REQUEST (missing YAML, duplicate ID/wallet, or the install gate: a recipe that
625
696
  cannot trade — no margin source, no risk guardrails, missing scanner entrypoint, or an
626
- unresolvable scanner path — is refused with what/why/fix per problem),
627
- UNAVAILABLE (bad YAML, start failure)
697
+ unresolvable scanner path — is refused with what/why/fix per problem, the message
698
+ leading with the bracketed code of the first blocking finding, e.g.
699
+ [E_VALIDATE_UNGATED]), UNAVAILABLE (bad YAML, start failure)
628
700
 
629
701
  senpi.listRuntimes
630
702
  Params: (none)
@@ -1 +1 @@
1
- {"version":3,"file":"guide-commands.js","sourceRoot":"","sources":["../../src/cli/guide-commands.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"guide-commands.js","sourceRoot":"","sources":["../../src/cli/guide-commands.ts"],"names":[],"mappings":"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"}
@@ -24,7 +24,12 @@ export declare function renderEventsDigest(entries: StoredEvent[]): string;
24
24
  export declare function renderExplain(asset: string, entries: StoredEvent[]): string;
25
25
  /** Minimal Commander command type for subcommands and options. */
26
26
  interface CommanderCommand {
27
- command(name: string, desc?: string): CommanderCommand;
27
+ /** Commander 14 accepts either a description string or an options object (e.g. `{ hidden: true }`). */
28
+ command(name: string, descOrOpts?: string | {
29
+ hidden?: boolean;
30
+ }, opts?: {
31
+ hidden?: boolean;
32
+ }): CommanderCommand;
28
33
  description(desc: string): CommanderCommand;
29
34
  argument(name: string, description?: string): CommanderCommand;
30
35
  option(flags: string, description?: string): CommanderCommand;
@@ -1 +1 @@
1
- {"version":3,"file":"senpi-commands.d.ts","sourceRoot":"","sources":["../../src/cli/senpi-commands.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAiBH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,2BAA2B,CAAC;AAChE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,6BAA6B,CAAC;AAI/D;;GAEG;AACH,wBAAgB,gBAAgB,CAC9B,OAAO,EAAE;IAAE,OAAO,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM,KAAK,gBAAgB,GAAG,OAAO,CAAA;CAAE,GAChF,IAAI,CA4vCN;AAgKD;;;;GAIG;AACH,wBAAgB,qBAAqB,CAAC,OAAO,EAAE,cAAc,EAAE,GAAG,MAAM,CAWvE;AAmDD,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,WAAW,EAAE,GAAG,MAAM,CASjE;AAED;;;GAGG;AACH,wBAAgB,aAAa,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,WAAW,EAAE,GAAG,MAAM,CAW3E;AA8HD,kEAAkE;AAClE,UAAU,gBAAgB;IACxB,OAAO,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM,GAAG,gBAAgB,CAAC;IACvD,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG,gBAAgB,CAAC;IAC5C,QAAQ,CAAC,IAAI,EAAE,MAAM,EAAE,WAAW,CAAC,EAAE,MAAM,GAAG,gBAAgB,CAAC;IAC/D,MAAM,CAAC,KAAK,EAAE,MAAM,EAAE,WAAW,CAAC,EAAE,MAAM,GAAG,gBAAgB,CAAC;IAC9D,cAAc,CAAC,KAAK,EAAE,MAAM,EAAE,WAAW,CAAC,EAAE,MAAM,GAAG,gBAAgB,CAAC;IACtE,MAAM,CACJ,EAAE,EACE,CAAC,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAAK,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,GACzD,CAAC,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAAK,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,GACzE,gBAAgB,CAAC;CACrB"}
1
+ {"version":3,"file":"senpi-commands.d.ts","sourceRoot":"","sources":["../../src/cli/senpi-commands.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAmBH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,2BAA2B,CAAC;AAChE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,6BAA6B,CAAC;AAI/D;;GAEG;AACH,wBAAgB,gBAAgB,CAC9B,OAAO,EAAE;IAAE,OAAO,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM,KAAK,gBAAgB,GAAG,OAAO,CAAA;CAAE,GAChF,IAAI,CAgxCN;AAyVD;;;;GAIG;AACH,wBAAgB,qBAAqB,CAAC,OAAO,EAAE,cAAc,EAAE,GAAG,MAAM,CAWvE;AAmDD,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,WAAW,EAAE,GAAG,MAAM,CASjE;AAED;;;GAGG;AACH,wBAAgB,aAAa,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,WAAW,EAAE,GAAG,MAAM,CAW3E;AA8HD,kEAAkE;AAClE,UAAU,gBAAgB;IACxB,uGAAuG;IACvG,OAAO,CACL,IAAI,EAAE,MAAM,EACZ,UAAU,CAAC,EAAE,MAAM,GAAG;QAAE,MAAM,CAAC,EAAE,OAAO,CAAA;KAAE,EAC1C,IAAI,CAAC,EAAE;QAAE,MAAM,CAAC,EAAE,OAAO,CAAA;KAAE,GAC1B,gBAAgB,CAAC;IACpB,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG,gBAAgB,CAAC;IAC5C,QAAQ,CAAC,IAAI,EAAE,MAAM,EAAE,WAAW,CAAC,EAAE,MAAM,GAAG,gBAAgB,CAAC;IAC/D,MAAM,CAAC,KAAK,EAAE,MAAM,EAAE,WAAW,CAAC,EAAE,MAAM,GAAG,gBAAgB,CAAC;IAC9D,cAAc,CAAC,KAAK,EAAE,MAAM,EAAE,WAAW,CAAC,EAAE,MAAM,GAAG,gBAAgB,CAAC;IACtE,MAAM,CACJ,EAAE,EACE,CAAC,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAAK,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,GACzD,CAAC,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAAK,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,GACzE,gBAAgB,CAAC;CACrB"}