@senpi/runtime 3.0.118 → 3.0.123

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 (89) hide show
  1. package/dist/actions/open-position/open-position.action.d.ts.map +1 -1
  2. package/dist/actions/open-position/open-position.action.js +9 -0
  3. package/dist/actions/open-position/open-position.action.js.map +1 -1
  4. package/dist/cli/guide-commands.d.ts.map +1 -1
  5. package/dist/cli/guide-commands.js +16 -8
  6. package/dist/cli/guide-commands.js.map +1 -1
  7. package/dist/constants/dsl/index.d.ts +17 -6
  8. package/dist/constants/dsl/index.d.ts.map +1 -1
  9. package/dist/constants/dsl/index.js +17 -6
  10. package/dist/constants/dsl/index.js.map +1 -1
  11. package/dist/dsl/engine/floors.d.ts +25 -1
  12. package/dist/dsl/engine/floors.d.ts.map +1 -1
  13. package/dist/dsl/engine/floors.js +38 -6
  14. package/dist/dsl/engine/floors.js.map +1 -1
  15. package/dist/dsl/engine/index.d.ts +1 -1
  16. package/dist/dsl/engine/index.d.ts.map +1 -1
  17. package/dist/dsl/engine/index.js +1 -1
  18. package/dist/dsl/engine/index.js.map +1 -1
  19. package/dist/dsl/engine/round.d.ts +22 -2
  20. package/dist/dsl/engine/round.d.ts.map +1 -1
  21. package/dist/dsl/engine/round.js +78 -5
  22. package/dist/dsl/engine/round.js.map +1 -1
  23. package/dist/dsl/engine/tick.d.ts.map +1 -1
  24. package/dist/dsl/engine/tick.js +31 -16
  25. package/dist/dsl/engine/tick.js.map +1 -1
  26. package/dist/dsl/events/initial-state.d.ts +1 -1
  27. package/dist/dsl/events/initial-state.d.ts.map +1 -1
  28. package/dist/dsl/events/initial-state.js +4 -7
  29. package/dist/dsl/events/initial-state.js.map +1 -1
  30. package/dist/dsl/monitor/exchange-sync.d.ts +8 -3
  31. package/dist/dsl/monitor/exchange-sync.d.ts.map +1 -1
  32. package/dist/dsl/monitor/exchange-sync.js +16 -4
  33. package/dist/dsl/monitor/exchange-sync.js.map +1 -1
  34. package/dist/dsl/monitor/process-one-position.d.ts.map +1 -1
  35. package/dist/dsl/monitor/process-one-position.js +88 -3
  36. package/dist/dsl/monitor/process-one-position.js.map +1 -1
  37. package/dist/dsl/plugin/index.d.ts +8 -4
  38. package/dist/dsl/plugin/index.d.ts.map +1 -1
  39. package/dist/dsl/plugin/index.js +8 -4
  40. package/dist/dsl/plugin/index.js.map +1 -1
  41. package/dist/index.d.ts.map +1 -1
  42. package/dist/index.js +168 -7
  43. package/dist/index.js.map +1 -1
  44. package/dist/runtime/boot-skip.d.ts +73 -0
  45. package/dist/runtime/boot-skip.d.ts.map +1 -0
  46. package/dist/runtime/boot-skip.js +113 -0
  47. package/dist/runtime/boot-skip.js.map +1 -0
  48. package/dist/runtime/create-runtime-context.d.ts +2 -0
  49. package/dist/runtime/create-runtime-context.d.ts.map +1 -1
  50. package/dist/runtime/create-runtime-context.js +1 -0
  51. package/dist/runtime/create-runtime-context.js.map +1 -1
  52. package/dist/runtime/lifecycle-events.d.ts +42 -1
  53. package/dist/runtime/lifecycle-events.d.ts.map +1 -1
  54. package/dist/runtime/lifecycle-events.js +81 -1
  55. package/dist/runtime/lifecycle-events.js.map +1 -1
  56. package/dist/runtime/lifecycle-reaper.d.ts +202 -0
  57. package/dist/runtime/lifecycle-reaper.d.ts.map +1 -0
  58. package/dist/runtime/lifecycle-reaper.js +390 -0
  59. package/dist/runtime/lifecycle-reaper.js.map +1 -0
  60. package/dist/runtime/run.d.ts +5 -0
  61. package/dist/runtime/run.d.ts.map +1 -1
  62. package/dist/runtime/run.js +1 -0
  63. package/dist/runtime/run.js.map +1 -1
  64. package/dist/runtime/runtime.d.ts +2 -0
  65. package/dist/runtime/runtime.d.ts.map +1 -1
  66. package/dist/runtime/runtime.js +1 -0
  67. package/dist/runtime/runtime.js.map +1 -1
  68. package/dist/runtime/update-apply-deps.d.ts +23 -2
  69. package/dist/runtime/update-apply-deps.d.ts.map +1 -1
  70. package/dist/runtime/update-apply-deps.js +11 -5
  71. package/dist/runtime/update-apply-deps.js.map +1 -1
  72. package/dist/skills-manager/manifest.d.ts.map +1 -1
  73. package/dist/skills-manager/manifest.js +1 -0
  74. package/dist/skills-manager/manifest.js.map +1 -1
  75. package/dist/skills-manager/skills-manifest.json +1 -0
  76. package/dist/types/dsl/index.d.ts +1 -1
  77. package/dist/types/dsl/index.d.ts.map +1 -1
  78. package/dist/types/runtime.d.ts +8 -0
  79. package/dist/types/runtime.d.ts.map +1 -1
  80. package/dist/utils/event-catalog.d.ts +91 -0
  81. package/dist/utils/event-catalog.d.ts.map +1 -1
  82. package/dist/utils/event-catalog.js +13 -0
  83. package/dist/utils/event-catalog.js.map +1 -1
  84. package/dist/utils/keyed-mutex.d.ts +3 -2
  85. package/dist/utils/keyed-mutex.d.ts.map +1 -1
  86. package/dist/utils/keyed-mutex.js +3 -2
  87. package/dist/utils/keyed-mutex.js.map +1 -1
  88. package/openclaw.plugin.json +1 -1
  89. package/package.json +1 -1
@@ -1 +1 @@
1
- {"version":3,"file":"create-runtime-context.d.ts","sourceRoot":"","sources":["../../src/runtime/create-runtime-context.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAE,cAAc,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAC1E,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAC1D,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACtD,OAAO,KAAK,EAAE,UAAU,EAAE,WAAW,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAC;AAC9E,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAC1D,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAC;AACpE,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,+BAA+B,CAAC;AAC1E,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,mCAAmC,CAAC;AAC1E,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,oCAAoC,CAAC;AAK7E,MAAM,WAAW,wBAAwB;IACvC,KAAK,EAAE,WAAW,CAAC;IACnB,UAAU,EAAE,UAAU,CAAC;IACvB,WAAW,EAAE,WAAW,CAAC;IACzB,cAAc,EAAE,cAAc,CAAC;IAC/B,SAAS,EAAE,SAAS,CAAC;IACrB,aAAa,EAAE,mBAAmB,CAAC;IACnC,aAAa,CAAC,EAAE,oBAAoB,CAAC;IACrC,gBAAgB,EAAE,gBAAgB,CAAC;IACnC,kBAAkB,CAAC,EAAE,kBAAkB,CAAC;IACxC,iBAAiB,CAAC,EAAE,MAAM,CAAC;CAC5B;AAED;;GAEG;AACH,wBAAgB,mBAAmB,CACjC,cAAc,EAAE,cAAc,EAC9B,KAAK,EAAE,WAAW,GACjB,aAAa,CAEf;AAED;;;GAGG;AACH,wBAAgB,uBAAuB,CACrC,cAAc,EAAE,cAAc,EAC9B,KAAK,EAAE,WAAW,GACjB,GAAG,CAAC,MAAM,EAAE,aAAa,CAAC,CAE5B;AAED;;GAEG;AACH,wBAAgB,oBAAoB,CAClC,cAAc,EAAE,cAAc,EAC9B,IAAI,EAAE,wBAAwB,GAC7B,cAAc,CAoBhB"}
1
+ {"version":3,"file":"create-runtime-context.d.ts","sourceRoot":"","sources":["../../src/runtime/create-runtime-context.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAE,cAAc,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAC1E,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAC1D,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACtD,OAAO,KAAK,EAAE,UAAU,EAAE,WAAW,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAC;AAC9E,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAC1D,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAC;AACpE,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,+BAA+B,CAAC;AAC1E,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,mCAAmC,CAAC;AAC1E,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,oCAAoC,CAAC;AAK7E,MAAM,WAAW,wBAAwB;IACvC,KAAK,EAAE,WAAW,CAAC;IACnB,UAAU,EAAE,UAAU,CAAC;IACvB,WAAW,EAAE,WAAW,CAAC;IACzB,cAAc,EAAE,cAAc,CAAC;IAC/B,SAAS,EAAE,SAAS,CAAC;IACrB,aAAa,EAAE,mBAAmB,CAAC;IACnC,aAAa,CAAC,EAAE,oBAAoB,CAAC;IACrC,gBAAgB,EAAE,gBAAgB,CAAC;IACnC,kBAAkB,CAAC,EAAE,kBAAkB,CAAC;IACxC,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,6EAA6E;IAC7E,mBAAmB,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,CAAC;CACjD;AAED;;GAEG;AACH,wBAAgB,mBAAmB,CACjC,cAAc,EAAE,cAAc,EAC9B,KAAK,EAAE,WAAW,GACjB,aAAa,CAEf;AAED;;;GAGG;AACH,wBAAgB,uBAAuB,CACrC,cAAc,EAAE,cAAc,EAC9B,KAAK,EAAE,WAAW,GACjB,GAAG,CAAC,MAAM,EAAE,aAAa,CAAC,CAE5B;AAED;;GAEG;AACH,wBAAgB,oBAAoB,CAClC,cAAc,EAAE,cAAc,EAC9B,IAAI,EAAE,wBAAwB,GAC7B,cAAc,CAqBhB"}
@@ -39,6 +39,7 @@ export function createRuntimeContext(strategyConfig, deps) {
39
39
  // milliseconds apart count each other's opens.
40
40
  pendingOpensLedger: createPendingOpensLedger(),
41
41
  notificationLabel: deps.notificationLabel,
42
+ onStrategyNotActive: deps.onStrategyNotActive,
42
43
  };
43
44
  }
44
45
  //# sourceMappingURL=create-runtime-context.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"create-runtime-context.js","sourceRoot":"","sources":["../../src/runtime/create-runtime-context.ts"],"names":[],"mappings":"AAAA;;GAEG;AAWH,OAAO,EAAE,iBAAiB,EAAE,MAAM,+BAA+B,CAAC;AAClE,OAAO,EAAE,0BAA0B,EAAE,MAAM,6BAA6B,CAAC;AACzE,OAAO,EAAE,wBAAwB,EAAE,MAAM,2BAA2B,CAAC;AAerE;;GAEG;AACH,MAAM,UAAU,mBAAmB,CACjC,cAA8B,EAC9B,KAAkB;IAElB,OAAO,IAAI,iBAAiB,CAAC,cAAc,EAAE,KAAK,CAAC,CAAC;AACtD,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,uBAAuB,CACrC,cAA8B,EAC9B,KAAkB;IAElB,OAAO,IAAI,GAAG,CAAC,CAAC,CAAC,cAAc,CAAC,OAAO,EAAE,mBAAmB,CAAC,cAAc,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;AACzF,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,oBAAoB,CAClC,cAA8B,EAC9B,IAA8B;IAE9B,MAAM,aAAa,GAAG,mBAAmB,CAAC,cAAc,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC;IACtE,OAAO;QACL,KAAK,EAAE,IAAI,CAAC,KAAK;QACjB,UAAU,EAAE,IAAI,CAAC,UAAU;QAC3B,WAAW,EAAE,IAAI,CAAC,WAAW;QAC7B,cAAc,EAAE,IAAI,CAAC,cAAc;QACnC,SAAS,EAAE,IAAI,CAAC,SAAS;QACzB,aAAa,EAAE,IAAI,CAAC,aAAa;QACjC,aAAa;QACb,aAAa,EAAE,IAAI,CAAC,aAAa;QACjC,gBAAgB,EAAE,IAAI,CAAC,gBAAgB;QACvC,kBAAkB,EAAE,IAAI,CAAC,kBAAkB;QAC3C,oBAAoB,EAAE,0BAA0B,EAAE;QAClD,sFAAsF;QACtF,iFAAiF;QACjF,+CAA+C;QAC/C,kBAAkB,EAAE,wBAAwB,EAAE;QAC9C,iBAAiB,EAAE,IAAI,CAAC,iBAAiB;KAC1C,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"create-runtime-context.js","sourceRoot":"","sources":["../../src/runtime/create-runtime-context.ts"],"names":[],"mappings":"AAAA;;GAEG;AAWH,OAAO,EAAE,iBAAiB,EAAE,MAAM,+BAA+B,CAAC;AAClE,OAAO,EAAE,0BAA0B,EAAE,MAAM,6BAA6B,CAAC;AACzE,OAAO,EAAE,wBAAwB,EAAE,MAAM,2BAA2B,CAAC;AAiBrE;;GAEG;AACH,MAAM,UAAU,mBAAmB,CACjC,cAA8B,EAC9B,KAAkB;IAElB,OAAO,IAAI,iBAAiB,CAAC,cAAc,EAAE,KAAK,CAAC,CAAC;AACtD,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,uBAAuB,CACrC,cAA8B,EAC9B,KAAkB;IAElB,OAAO,IAAI,GAAG,CAAC,CAAC,CAAC,cAAc,CAAC,OAAO,EAAE,mBAAmB,CAAC,cAAc,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;AACzF,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,oBAAoB,CAClC,cAA8B,EAC9B,IAA8B;IAE9B,MAAM,aAAa,GAAG,mBAAmB,CAAC,cAAc,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC;IACtE,OAAO;QACL,KAAK,EAAE,IAAI,CAAC,KAAK;QACjB,UAAU,EAAE,IAAI,CAAC,UAAU;QAC3B,WAAW,EAAE,IAAI,CAAC,WAAW;QAC7B,cAAc,EAAE,IAAI,CAAC,cAAc;QACnC,SAAS,EAAE,IAAI,CAAC,SAAS;QACzB,aAAa,EAAE,IAAI,CAAC,aAAa;QACjC,aAAa;QACb,aAAa,EAAE,IAAI,CAAC,aAAa;QACjC,gBAAgB,EAAE,IAAI,CAAC,gBAAgB;QACvC,kBAAkB,EAAE,IAAI,CAAC,kBAAkB;QAC3C,oBAAoB,EAAE,0BAA0B,EAAE;QAClD,sFAAsF;QACtF,iFAAiF;QACjF,+CAA+C;QAC/C,kBAAkB,EAAE,wBAAwB,EAAE;QAC9C,iBAAiB,EAAE,IAAI,CAAC,iBAAiB;QACzC,mBAAmB,EAAE,IAAI,CAAC,mBAAmB;KAC9C,CAAC;AACJ,CAAC"}
@@ -6,7 +6,7 @@
6
6
  * The scanner-summary funnel selection is reused from {@link buildScannerSummary}
7
7
  * — no reimplementation of the drop classification.
8
8
  */
9
- import { EVENT_NAME } from "../utils/event-catalog.js";
9
+ import { EVENT_NAME, type ReapReason, type ReapSkipReason, type ReapTrigger } from "../utils/event-catalog.js";
10
10
  import type { EmittableEvent } from "../actions/event-derivation.js";
11
11
  /**
12
12
  * `scanner.summary` from the same scanner-run payload the scanner-complete handler emits.
@@ -59,6 +59,8 @@ export interface RuntimeDeletedInput {
59
59
  readonly address?: string;
60
60
  /** Whether a running handle was stopped as part of the delete (vs a never-booted registration). */
61
61
  readonly hadLiveHandle: boolean;
62
+ /** Set only when the lifecycle reaper (not an operator, agent or deploy) removed the runtime. */
63
+ readonly deleteReason?: "closed_status";
62
64
  }
63
65
  /**
64
66
  * `runtime.deleted` — a runtime removed from the registry via `senpi.deleteRuntime`. The discriminator
@@ -66,6 +68,45 @@ export interface RuntimeDeletedInput {
66
68
  * (which emits no `runtime.stopped`) is still observable.
67
69
  */
68
70
  export declare function buildRuntimeDeletedEvent(input: RuntimeDeletedInput): EmittableEvent<typeof EVENT_NAME.runtimeDeleted>;
71
+ /** `runtime.boot_skipped` — see {@link RuntimeBootSkippedAttrs}. */
72
+ export declare function buildRuntimeBootSkippedEvent(input: {
73
+ runtimeId: string;
74
+ address: string;
75
+ status: string;
76
+ }): EmittableEvent<typeof EVENT_NAME.runtimeBootSkipped>;
77
+ /** `runtime.boot_status_unread` — see {@link RuntimeBootStatusUnreadAttrs}. */
78
+ export declare function buildRuntimeBootStatusUnreadEvent(input: {
79
+ reason: "timeout" | "error";
80
+ registeredCount: number;
81
+ }): EmittableEvent<typeof EVENT_NAME.runtimeBootStatusUnread>;
82
+ /** Input for {@link buildReapCandidateEvent}. */
83
+ export interface ReapCandidateInput {
84
+ readonly runtimeId: string;
85
+ readonly address: string;
86
+ readonly reason: ReapReason;
87
+ /** Platform status; omitted for `wallet_absent`. */
88
+ readonly strategyStatus?: string;
89
+ /** Whether this box deletes candidates at all (false = observe-only release). */
90
+ readonly enforce: boolean;
91
+ /** False for everything but `closed_status` (see `RuntimeReapCandidateAttrs`): emitted, never deleted. */
92
+ readonly actionable: boolean;
93
+ readonly trigger: ReapTrigger;
94
+ }
95
+ /**
96
+ * `runtime.reap_candidate` — a runtime bound to a strategy the platform says is gone. The body says
97
+ * in words what will happen to it, so a log reader does not have to decode the two booleans: removed
98
+ * (enforcing, actionable), left alone because this release only observes, or left alone because that
99
+ * reason is only ever reported.
100
+ */
101
+ export declare function buildReapCandidateEvent(input: ReapCandidateInput): EmittableEvent<typeof EVENT_NAME.runtimeReapCandidate>;
102
+ /** `runtime.reap_skipped` — a whole reaper pass changed nothing; see `RuntimeReapSkippedAttrs`. */
103
+ export declare function buildReapSkippedEvent(input: {
104
+ skipReason: ReapSkipReason;
105
+ trigger: ReapTrigger;
106
+ walletCount: number;
107
+ }): EmittableEvent<typeof EVENT_NAME.runtimeReapSkipped>;
108
+ /** `runtime.reap_unknown_wallet` — a registry row the reaper can never judge; see its attrs. */
109
+ export declare function buildReapUnknownWalletEvent(runtimeId: string): EmittableEvent<typeof EVENT_NAME.runtimeReapUnknownWallet>;
69
110
  export interface RuntimeUpdatedInput {
70
111
  readonly runtimeId: string;
71
112
  readonly address?: string;
@@ -1 +1 @@
1
- {"version":3,"file":"lifecycle-events.d.ts","sourceRoot":"","sources":["../../src/runtime/lifecycle-events.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"lifecycle-events.d.ts","sourceRoot":"","sources":["../../src/runtime/lifecycle-events.ts"],"names":[],"mappings":"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"}
@@ -8,7 +8,7 @@
8
8
  */
9
9
  import { asObject, buildScannerSummary, str } from "../telemetry/event-builders.js";
10
10
  import { computeConfigHash } from "../telemetry/identity.js";
11
- import { EVENT_NAME, eventAttrs } from "../utils/event-catalog.js";
11
+ import { EVENT_NAME, eventAttrs, } from "../utils/event-catalog.js";
12
12
  /** Distinct dropped-reason attribute keys kept on a scanner.summary; the rest fold into `…dropped.other`. */
13
13
  const MAX_DROP_REASON_KEYS = 12;
14
14
  /**
@@ -140,6 +140,86 @@ export function buildRuntimeDeletedEvent(input) {
140
140
  // Addresses are case-insensitive; lowercase to match the identity join key.
141
141
  "senpi.strategy.address": input.address ? input.address.toLowerCase() : undefined,
142
142
  "senpi.runtime.had_live_handle": input.hadLiveHandle,
143
+ "senpi.runtime.delete_reason": input.deleteReason,
144
+ }),
145
+ };
146
+ }
147
+ /** `runtime.boot_skipped` — see {@link RuntimeBootSkippedAttrs}. */
148
+ export function buildRuntimeBootSkippedEvent(input) {
149
+ return {
150
+ name: EVENT_NAME.runtimeBootSkipped,
151
+ level: "info",
152
+ body: `Runtime not started at boot: strategy ${input.status} (${input.runtimeId})`,
153
+ attributes: eventAttrs({
154
+ "senpi.runtime.id": input.runtimeId,
155
+ "senpi.strategy.address": input.address.toLowerCase(),
156
+ "senpi.strategy.status": input.status,
157
+ }),
158
+ };
159
+ }
160
+ /** `runtime.boot_status_unread` — see {@link RuntimeBootStatusUnreadAttrs}. */
161
+ export function buildRuntimeBootStatusUnreadEvent(input) {
162
+ return {
163
+ name: EVENT_NAME.runtimeBootStatusUnread,
164
+ level: "warn",
165
+ body: `Strategy statuses unreadable at boot (${input.reason}); started every registered runtime unchecked`,
166
+ attributes: eventAttrs({
167
+ "senpi.runtime.boot.unread_reason": input.reason,
168
+ "senpi.runtime.boot.registered_count": input.registeredCount,
169
+ }),
170
+ };
171
+ }
172
+ /**
173
+ * `runtime.reap_candidate` — a runtime bound to a strategy the platform says is gone. The body says
174
+ * in words what will happen to it, so a log reader does not have to decode the two booleans: removed
175
+ * (enforcing, actionable), left alone because this release only observes, or left alone because that
176
+ * reason is only ever reported.
177
+ */
178
+ export function buildReapCandidateEvent(input) {
179
+ const status = input.strategyStatus ? ` (strategy ${input.strategyStatus})` : "";
180
+ const outcome = !input.actionable
181
+ ? input.reason === "dead_not_closed"
182
+ ? " — reported only: no close ran, so it may still hold positions its stop-loss protects"
183
+ : " — reported only: a missing wallet is never removed"
184
+ : input.enforce
185
+ ? " — removing it"
186
+ : " — observe-only, left in place";
187
+ return {
188
+ name: EVENT_NAME.runtimeReapCandidate,
189
+ level: "warn",
190
+ body: `Reap candidate: runtime ${input.runtimeId} ${input.reason}${status}${outcome}`,
191
+ attributes: eventAttrs({
192
+ "senpi.runtime.id": input.runtimeId,
193
+ "senpi.strategy.address": input.address.toLowerCase(),
194
+ "senpi.reap.reason": input.reason,
195
+ "senpi.strategy.status": input.strategyStatus,
196
+ "senpi.reap.enforce": input.enforce,
197
+ "senpi.reap.actionable": input.actionable,
198
+ "senpi.reap.trigger": input.trigger,
199
+ }),
200
+ };
201
+ }
202
+ /** `runtime.reap_skipped` — a whole reaper pass changed nothing; see `RuntimeReapSkippedAttrs`. */
203
+ export function buildReapSkippedEvent(input) {
204
+ return {
205
+ name: EVENT_NAME.runtimeReapSkipped,
206
+ level: "warn",
207
+ body: `Lifecycle check skipped (${input.skipReason}, ${input.trigger}); nothing was removed, retrying next pass`,
208
+ attributes: eventAttrs({
209
+ "senpi.reap.skip_reason": input.skipReason,
210
+ "senpi.reap.trigger": input.trigger,
211
+ "senpi.reap.wallet_count": input.walletCount,
212
+ }),
213
+ };
214
+ }
215
+ /** `runtime.reap_unknown_wallet` — a registry row the reaper can never judge; see its attrs. */
216
+ export function buildReapUnknownWalletEvent(runtimeId) {
217
+ return {
218
+ name: EVENT_NAME.runtimeReapUnknownWallet,
219
+ level: "info",
220
+ body: `Runtime ${runtimeId} has no usable wallet address; its strategy lifecycle is unknown and it is never reaped`,
221
+ attributes: eventAttrs({
222
+ "senpi.runtime.id": runtimeId,
143
223
  }),
144
224
  };
145
225
  }
@@ -1 +1 @@
1
- {"version":3,"file":"lifecycle-events.js","sourceRoot":"","sources":["../../src/runtime/lifecycle-events.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"lifecycle-events.js","sourceRoot":"","sources":["../../src/runtime/lifecycle-events.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,202 @@
1
+ /**
2
+ * The lifecycle reaper: a runtime exists iff its strategy is open.
3
+ *
4
+ * Every close path — raw `strategy_close`, close.py, the web app, a withdraw to $0,
5
+ * `strategy_close_positions` — ends at the backend, and none of them tells the box. Without this
6
+ * module a closed strategy's runtime keeps scanning, logging and posting until something deletes it
7
+ * by hand; boot (since 3.0.119) merely declines to start it again, leaving the registry row behind.
8
+ * The reaper reads strategy status for every registered wallet and removes the runtimes whose
9
+ * strategy the platform reports gone.
10
+ *
11
+ * Safety invariant — deletion needs POSITIVE evidence: `CLOSED` from a successful read. That is the
12
+ * only thing the reaper ever deletes on.
13
+ * Any other dead status (`dead_not_closed`: FAILED, and the INACTIVE/TERMINATED/CLOSING_DONE names
14
+ * `isDead` also accepts) is reported and never deleted. Only CLOSED means a close ran: strategy-manager
15
+ * reaches it through the offboarding flow, which closes the positions first. FAILED is written by
16
+ * onboarding's final-failure path, which refunds the withdrawable balance but closes nothing, and a
17
+ * FAILED strategy cannot be closed afterwards (CloseStrategy accepts only ACTIVE or PAUSED). If it
18
+ * holds positions, the runtime's DSL is their only stop, and deleting the runtime tears it down.
19
+ * A wallet missing from a successful read (`wallet_absent`) is reported and never deleted: real
20
+ * absence is an edge case (0 of ~345 boot wallets over 7 days), while a well-formed answer can omit
21
+ * a live wallet (the backend's address filter is case-sensitive and scoped to the token's user).
22
+ * A failed, timed-out or unrecognisable read, a closing / live / paused / unknown status, and a row
23
+ * without a usable wallet never delete anything.
24
+ */
25
+ import type { EmittableEvent } from "../actions/event-derivation.js";
26
+ import type { ReapTrigger } from "../utils/event-catalog.js";
27
+ import { type WalletStatusRow } from "./boot-skip.js";
28
+ /**
29
+ * What `runtime list` says about a runtime's strategy, as last read.
30
+ *
31
+ * - `open` — ACTIVE, PAUSED, initializing, or any status the reaper does not recognise as gone.
32
+ * - `closing` — a teardown is under way (`CLOSING_POSITIONS`, …); re-checked next pass.
33
+ * - `closed` — the platform reports a dead status.
34
+ * - `absent` — a confirmed read carried no strategy for the wallet.
35
+ * - `unchecked` — not read yet in this process, or never confirmed.
36
+ * - `unknown` — the row has no usable wallet; its lifecycle cannot be read at all.
37
+ */
38
+ export type RuntimeLifecycle = "open" | "closing" | "closed" | "absent" | "unchecked" | "unknown";
39
+ /** One successful status read, as the decision needs it. */
40
+ export interface StatusAnswer {
41
+ /** Lower-cased wallet → platform status, for the wallets the answer carried. */
42
+ readonly statuses: ReadonlyMap<string, string>;
43
+ }
44
+ /** The verdict for one registry row. */
45
+ export type ReapDecision =
46
+ /** No usable wallet: never judged, rendered `unknown`. */
47
+ {
48
+ action: "untracked";
49
+ } | {
50
+ action: "keep";
51
+ lifecycle: "open" | "closing";
52
+ status: string;
53
+ } | {
54
+ action: "reap";
55
+ reason: "closed_status";
56
+ status: string;
57
+ }
58
+ /** Missing from a successful answer: reported, never deleted. */
59
+ | {
60
+ action: "hold";
61
+ reason: "wallet_absent";
62
+ }
63
+ /** Dead, but not CLOSED: no close ran, so it may still hold positions. Reported, never deleted. */
64
+ | {
65
+ action: "hold";
66
+ reason: "dead_not_closed";
67
+ status: string;
68
+ };
69
+ /**
70
+ * Decide one registry row against one successful status read.
71
+ *
72
+ * A failed read never reaches this function — the controller skips the whole pass — so "unreadable"
73
+ * cannot be mistaken for "absent" here by construction.
74
+ */
75
+ export declare function decideReap(entry: {
76
+ id: string;
77
+ wallet?: string;
78
+ }, answer: StatusAnswer): ReapDecision;
79
+ /**
80
+ * The lifecycle a read status maps to; `undefined` means the (confirmed) answer did not carry the
81
+ * wallet.
82
+ */
83
+ export declare function lifecycleForStatus(status: string | undefined): RuntimeLifecycle;
84
+ /**
85
+ * Release default for deleting candidates. `false` = observe-only: candidates are emitted as
86
+ * `runtime.reap_candidate` and nothing is deleted. It flips in the release after the observe-only
87
+ * fleet validation (plan Task 8); `SENPI_REAPER_ENFORCE` overrides it per box.
88
+ */
89
+ export declare const REAPER_ENFORCEMENT_DEFAULT = false;
90
+ /** Delay between `start()` completing and the post-boot pass — lets MCP and the gateway settle. */
91
+ export declare const REAPER_BOOT_DELAY_MS = 120000;
92
+ /** Sweep cadence. Bounds how long a closed strategy that never trades keeps its runtime. */
93
+ export declare const REAPER_SWEEP_INTERVAL_MS: number;
94
+ /**
95
+ * Per-wallet debounce for the `STRATEGY_NOT_ACTIVE` escalation. Matches the backend-pause TTL: the
96
+ * open action re-probes a paused wallet about that often, and each rejection would otherwise re-read.
97
+ */
98
+ export declare const REAPER_WALLET_DEBOUNCE_MS: number;
99
+ /**
100
+ * Whether this box deletes candidates. `SENPI_REAPER_ENFORCE=true|false` wins; any other value (or
101
+ * none) falls back to {@link REAPER_ENFORCEMENT_DEFAULT} — a typo must never turn deletion on.
102
+ */
103
+ export declare function resolveReaperEnforcement(env: NodeJS.ProcessEnv): boolean;
104
+ /**
105
+ * An explicit post-boot delay from `SENPI_REAPER_BOOT_DELAY_MS` (a non-negative integer), else
106
+ * `undefined`. For dev-box testing (run the post-boot pass at once) and the plugin tests; being set
107
+ * at all also arms the reaper's timers where the unit-test seam `SENPI_RUNTIME_API_DISABLED` would
108
+ * otherwise keep them off.
109
+ */
110
+ export declare function resolveReaperBootDelayMs(env: NodeJS.ProcessEnv): number | undefined;
111
+ /**
112
+ * How long `stop()` waits for a pass already under way to finish its current step. A pass checks
113
+ * for the stop before every delete, so this bounds one status read or one delete, not a whole pass.
114
+ */
115
+ export declare const REAPER_STOP_DRAIN_MS = 10000;
116
+ /**
117
+ * How long the reaper waits on one delete. The delete's DSL teardown and `stop()` have no deadline
118
+ * of their own; without this, one that never settles holds the single-flight slot forever and every
119
+ * later sweep and not-active check silently does nothing until restart. On expiry the delete is
120
+ * logged as not removed, the pass moves on, and the delete itself keeps running in the background.
121
+ * It still holds the runtime's change lock, so a later pass's attempt on that id is a CONFLICT, not
122
+ * a second delete.
123
+ */
124
+ export declare const REAPER_DELETE_TIMEOUT_MS: number;
125
+ /** Result of one delete attempt, as the reaper needs it. */
126
+ export type ReaperDeleteResult = {
127
+ ok: true;
128
+ } | {
129
+ ok: false;
130
+ code: string;
131
+ message: string;
132
+ };
133
+ /**
134
+ * Everything the reaper touches, injected so the controller is testable without a gateway.
135
+ * `index.ts` wires these to the registry, `SenpiClient.listStrategies` and `deleteRuntimeCore`.
136
+ */
137
+ export interface LifecycleReaperDeps {
138
+ readRegistry(): Promise<{
139
+ runtimes: ReadonlyArray<{
140
+ id: string;
141
+ wallet?: string;
142
+ }>;
143
+ }>;
144
+ /** One `strategy_list` call for these (lower-cased) wallets. Throws on any failure. */
145
+ readStatuses(wallets: string[], signal: AbortSignal): Promise<readonly WalletStatusRow[]>;
146
+ /**
147
+ * Remove one runtime. `wallet` is the lower-cased wallet the decision was made about; the delete
148
+ * refuses (`ok: false`) if the row under `id` no longer carries it or an install/deploy is running.
149
+ */
150
+ deleteRuntime(id: string, reason: "closed_status", wallet: string): Promise<ReaperDeleteResult>;
151
+ emit(build: () => EmittableEvent | null): void;
152
+ /** Delete candidates (true) or only report them (false). */
153
+ enforce: boolean;
154
+ logger: {
155
+ info(message: string, meta?: object): void;
156
+ warn(message: string, meta?: object): void;
157
+ };
158
+ readTimeoutMs?: number;
159
+ bootDelayMs?: number;
160
+ sweepIntervalMs?: number;
161
+ walletDebounceMs?: number;
162
+ now?: () => number;
163
+ stopDrainMs?: number;
164
+ deleteTimeoutMs?: number;
165
+ }
166
+ /** The reaper as `index.ts` drives it. No method ever throws or rejects. */
167
+ export interface LifecycleReaper {
168
+ /**
169
+ * One pass: read the registry, read every trackable wallet's status in one bounded call, judge
170
+ * each row, and (when enforcing) delete the actionable candidates. `onlyWallet` narrows the pass
171
+ * to that wallet's rows. Single-flight: a pass requested while one runs returns at once.
172
+ */
173
+ runPass(trigger: ReapTrigger, onlyWallet?: string): Promise<void>;
174
+ /**
175
+ * Escalation entry point: a debounced, fire-and-forget pass over one wallet. A no-op until
176
+ * `start()` — boot is still wiring runtimes before that.
177
+ */
178
+ checkWallet(wallet: string): void;
179
+ /** Remember statuses read elsewhere (the boot read) so `lifecycleOf` has them before any pass. */
180
+ recordStatuses(requested: readonly string[], statuses: ReadonlyMap<string, string>): void;
181
+ /** The last known lifecycle of a registry wallet, and the status it came from. */
182
+ lifecycleOf(wallet: string | undefined): {
183
+ lifecycle: RuntimeLifecycle;
184
+ strategyStatus?: string;
185
+ };
186
+ /**
187
+ * Schedule the post-boot pass and the hourly sweep. Both timers are unref'd. Re-arms a stopped
188
+ * reaper (a service restart in the same process); a no-op while already started.
189
+ */
190
+ start(): void;
191
+ /**
192
+ * Clear the timers and wait (bounded by {@link REAPER_STOP_DRAIN_MS}) for a pass already running
193
+ * to finish, so no reaper delete overlaps the service teardown. Any pass until the next `start()`
194
+ * is a no-op.
195
+ */
196
+ stop(): Promise<void>;
197
+ }
198
+ /**
199
+ * Build the reaper. Construction does no I/O; nothing happens until `start()` or `runPass()`.
200
+ */
201
+ export declare function createLifecycleReaper(deps: LifecycleReaperDeps): LifecycleReaper;
202
+ //# sourceMappingURL=lifecycle-reaper.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"lifecycle-reaper.d.ts","sourceRoot":"","sources":["../../src/runtime/lifecycle-reaper.ts"],"names":[],"mappings":"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"}