@senpi/runtime 3.0.22 → 3.0.23

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 (133) hide show
  1. package/README.md +7 -4
  2. package/dist/actions/close-position/close-position.action.d.ts.map +1 -1
  3. package/dist/actions/close-position/close-position.action.js +8 -6
  4. package/dist/actions/close-position/close-position.action.js.map +1 -1
  5. package/dist/actions/decision-error-notification.d.ts +14 -0
  6. package/dist/actions/decision-error-notification.d.ts.map +1 -0
  7. package/dist/actions/decision-error-notification.js +36 -0
  8. package/dist/actions/decision-error-notification.js.map +1 -0
  9. package/dist/actions/open-position/open-position.action.d.ts.map +1 -1
  10. package/dist/actions/open-position/open-position.action.js +8 -6
  11. package/dist/actions/open-position/open-position.action.js.map +1 -1
  12. package/dist/actions/types.d.ts +2 -0
  13. package/dist/actions/types.d.ts.map +1 -1
  14. package/dist/cli/guide-commands.d.ts.map +1 -1
  15. package/dist/cli/guide-commands.js +5 -7
  16. package/dist/cli/guide-commands.js.map +1 -1
  17. package/dist/cli/senpi-cli-config.d.ts +0 -17
  18. package/dist/cli/senpi-cli-config.d.ts.map +1 -1
  19. package/dist/cli/senpi-cli-config.js +0 -30
  20. package/dist/cli/senpi-cli-config.js.map +1 -1
  21. package/dist/cli/senpi-config-commands.d.ts +1 -1
  22. package/dist/cli/senpi-config-commands.d.ts.map +1 -1
  23. package/dist/cli/senpi-config-commands.js +1 -16
  24. package/dist/cli/senpi-config-commands.js.map +1 -1
  25. package/dist/constants/dsl/index.d.ts +1 -5
  26. package/dist/constants/dsl/index.d.ts.map +1 -1
  27. package/dist/constants/dsl/index.js +1 -5
  28. package/dist/constants/dsl/index.js.map +1 -1
  29. package/dist/dsl/engine-client/event-mapping.d.ts +1 -1
  30. package/dist/dsl/engine-client/event-mapping.d.ts.map +1 -1
  31. package/dist/dsl/events/build-closed-event.d.ts +1 -1
  32. package/dist/dsl/events/build-closed-event.js +1 -1
  33. package/dist/dsl/events/handlers.js +1 -1
  34. package/dist/dsl/monitor/process-one-position.js +3 -3
  35. package/dist/dsl/monitor/process-one-position.js.map +1 -1
  36. package/dist/dsl/notifications/format-utils.d.ts +1 -11
  37. package/dist/dsl/notifications/format-utils.d.ts.map +1 -1
  38. package/dist/dsl/notifications/format-utils.js +1 -48
  39. package/dist/dsl/notifications/format-utils.js.map +1 -1
  40. package/dist/dsl/notifications/formatter.d.ts +9 -25
  41. package/dist/dsl/notifications/formatter.d.ts.map +1 -1
  42. package/dist/dsl/notifications/formatter.js +20 -105
  43. package/dist/dsl/notifications/formatter.js.map +1 -1
  44. package/dist/dsl/notifications/index.d.ts +2 -8
  45. package/dist/dsl/notifications/index.d.ts.map +1 -1
  46. package/dist/dsl/notifications/index.js +60 -57
  47. package/dist/dsl/notifications/index.js.map +1 -1
  48. package/dist/dsl/plugin/index.d.ts.map +1 -1
  49. package/dist/dsl/plugin/index.js +1 -27
  50. package/dist/dsl/plugin/index.js.map +1 -1
  51. package/dist/dsl/plugin/options.d.ts +3 -2
  52. package/dist/dsl/plugin/options.d.ts.map +1 -1
  53. package/dist/index.d.ts.map +1 -1
  54. package/dist/index.js +2 -122
  55. package/dist/index.js.map +1 -1
  56. package/dist/prompt/session-context-seed-hook.d.ts +11 -0
  57. package/dist/prompt/session-context-seed-hook.d.ts.map +1 -0
  58. package/dist/prompt/session-context-seed-hook.js +99 -0
  59. package/dist/prompt/session-context-seed-hook.js.map +1 -0
  60. package/dist/runtime/auto-update/coordinator.d.ts +5 -6
  61. package/dist/runtime/auto-update/coordinator.d.ts.map +1 -1
  62. package/dist/runtime/auto-update/coordinator.js +19 -20
  63. package/dist/runtime/auto-update/coordinator.js.map +1 -1
  64. package/dist/runtime/create-action-context.d.ts.map +1 -1
  65. package/dist/runtime/create-action-context.js +1 -0
  66. package/dist/runtime/create-action-context.js.map +1 -1
  67. package/dist/runtime/create-runtime-context.d.ts +1 -0
  68. package/dist/runtime/create-runtime-context.d.ts.map +1 -1
  69. package/dist/runtime/create-runtime-context.js +1 -0
  70. package/dist/runtime/create-runtime-context.js.map +1 -1
  71. package/dist/runtime/decision-errors.d.ts +41 -53
  72. package/dist/runtime/decision-errors.d.ts.map +1 -1
  73. package/dist/runtime/decision-errors.js +48 -111
  74. package/dist/runtime/decision-errors.js.map +1 -1
  75. package/dist/runtime/notifications.d.ts +21 -14
  76. package/dist/runtime/notifications.d.ts.map +1 -1
  77. package/dist/runtime/notifications.js +192 -59
  78. package/dist/runtime/notifications.js.map +1 -1
  79. package/dist/runtime/runtime.d.ts +16 -2
  80. package/dist/runtime/runtime.d.ts.map +1 -1
  81. package/dist/runtime/runtime.js +106 -26
  82. package/dist/runtime/runtime.js.map +1 -1
  83. package/dist/runtime/strategy-lifecycle.d.ts +5 -5
  84. package/dist/runtime/strategy-lifecycle.d.ts.map +1 -1
  85. package/dist/runtime/strategy-lifecycle.js +96 -28
  86. package/dist/runtime/strategy-lifecycle.js.map +1 -1
  87. package/dist/runtime/supervisor/long-running-supervisor.js +3 -3
  88. package/dist/runtime/supervisor/long-running-supervisor.js.map +1 -1
  89. package/dist/runtime-api/lifecycle.d.ts +1 -1
  90. package/dist/runtime-api/lifecycle.js +1 -1
  91. package/dist/scripts/run-dsl-standalone-live.d.ts +7 -6
  92. package/dist/scripts/run-dsl-standalone-live.d.ts.map +1 -1
  93. package/dist/scripts/run-dsl-standalone-live.js +25 -21
  94. package/dist/scripts/run-dsl-standalone-live.js.map +1 -1
  95. package/dist/skills-manager/coordinator.d.ts +2 -2
  96. package/dist/skills-manager/coordinator.js +2 -2
  97. package/dist/test-setup.d.ts +2 -0
  98. package/dist/test-setup.d.ts.map +1 -0
  99. package/dist/test-setup.js +23 -0
  100. package/dist/test-setup.js.map +1 -0
  101. package/dist/types/dsl/index.d.ts +1 -1
  102. package/dist/types/notification.d.ts +95 -1
  103. package/dist/types/notification.d.ts.map +1 -1
  104. package/dist/types/notification.js +76 -1
  105. package/dist/types/notification.js.map +1 -1
  106. package/dist/types/runtime.d.ts +6 -0
  107. package/dist/types/runtime.d.ts.map +1 -1
  108. package/dist/types/session-context.d.ts +19 -0
  109. package/dist/types/session-context.d.ts.map +1 -0
  110. package/dist/types/session-context.js +20 -0
  111. package/dist/types/session-context.js.map +1 -0
  112. package/dist/utils/logger.d.ts +2 -18
  113. package/dist/utils/logger.d.ts.map +1 -1
  114. package/dist/utils/logger.js +2 -40
  115. package/dist/utils/logger.js.map +1 -1
  116. package/openclaw.plugin.json +1 -1
  117. package/package.json +1 -1
  118. package/dist/actions/notifications/formatter.d.ts +0 -39
  119. package/dist/actions/notifications/formatter.d.ts.map +0 -1
  120. package/dist/actions/notifications/formatter.js +0 -68
  121. package/dist/actions/notifications/formatter.js.map +0 -1
  122. package/dist/actions/notifications/index.d.ts +0 -37
  123. package/dist/actions/notifications/index.d.ts.map +0 -1
  124. package/dist/actions/notifications/index.js +0 -89
  125. package/dist/actions/notifications/index.js.map +0 -1
  126. package/dist/dsl/notifications/close-resolver.d.ts +0 -92
  127. package/dist/dsl/notifications/close-resolver.d.ts.map +0 -1
  128. package/dist/dsl/notifications/close-resolver.js +0 -309
  129. package/dist/dsl/notifications/close-resolver.js.map +0 -1
  130. package/dist/dsl/notifications/types.d.ts +0 -27
  131. package/dist/dsl/notifications/types.d.ts.map +0 -1
  132. package/dist/dsl/notifications/types.js +0 -5
  133. package/dist/dsl/notifications/types.js.map +0 -1
@@ -1,4 +1,98 @@
1
+ /**
2
+ * Generic seed context carried by an openable notification. The front-end trusts
3
+ * these keys to reconstruct the tapped notification's chat, so they travel with
4
+ * the payload rather than being re-derived downstream.
5
+ *
6
+ * `notificationId`, `subtype`, `createdAt`, and `contextText` are always present.
7
+ * `address`/`asset`/`dex`/`traderAddress` are optional: runtime alerts are
8
+ * strategy-scoped (no asset), discovery is trader-scoped (no strategy address),
9
+ * so those fields may legitimately be absent.
10
+ */
11
+ export interface NotificationContext {
12
+ notificationId: string;
13
+ subtype: string;
14
+ createdAt: string;
15
+ contextText: string;
16
+ address?: string;
17
+ asset?: string;
18
+ dex?: string;
19
+ traderAddress?: string;
20
+ }
21
+ /**
22
+ * Push/in-app copy for a notification, authored label-free (no `[strategy]`
23
+ * prefix) — the subscriber/emit path prefixes it before it ships.
24
+ */
25
+ export interface NotificationCopy {
26
+ /** Push title, label-free at author time; ≤32 after prefix+truncation. */
27
+ pushTitle: string;
28
+ /** Push body, label-free at author time; ≤128 after prefix+truncation. */
29
+ pushBody: string;
30
+ /** In-app text, label-free at author time; may contain <br> line breaks. */
31
+ inApp: string;
32
+ }
33
+ /** Hard limits the notification service enforces: over-length titles/bodies are dropped, not truncated server-side. */
34
+ export declare const PUSH_TITLE_MAX = 32;
35
+ export declare const PUSH_BODY_MAX = 128;
36
+ /** Truncate to `max` UTF-16 units, appending "…" when clipped. Never splits a
37
+ * surrogate pair: if the cut would land between an emoji's two units, it backs off
38
+ * one so the result ends on a whole character rather than a lone `�`. */
39
+ export declare function truncateForPush(s: string, max: number): string;
40
+ /**
41
+ * Compose the push title as `${prefix}${verb}` within {@link PUSH_TITLE_MAX}. When
42
+ * it overflows, the strategy name inside `prefix` (always `[<name>] `, or "") gives
43
+ * way — clipped with "…" — while the emoji + verb stay whole, because the verb is
44
+ * the meaningful part a glance reads. An empty prefix returns the verb untouched.
45
+ */
46
+ export declare function fitTitleWithLabel(prefix: string, verb: string): string;
47
+ /**
48
+ * Build the `[label] ` prefix every runtime notification family leads its
49
+ * copy with. Empty/whitespace-only labels resolve to no prefix at all (no
50
+ * bracket pair for a strategy with nothing to show).
51
+ */
52
+ export declare function labelPrefix(label: string | undefined): string;
53
+ /** Fields common to every notification payload, openable or not. */
54
+ interface NotificationPayloadBase {
55
+ message: string;
56
+ recipientUserId?: string;
57
+ subtype?: string;
58
+ contextText?: string;
59
+ /** Push/in-app copy block; when absent the envelope builder derives a fallback from `message`. */
60
+ copy?: NotificationCopy;
61
+ }
62
+ /**
63
+ * Structured notification payload, discriminated on `canOpenAgentChat`.
64
+ *
65
+ * When `canOpenAgentChat` is `true` the generic seed `context` is REQUIRED — the
66
+ * compiler catches an openable-without-context at the producer, before the flag
67
+ * reaches a front-end that trusts it. When `false`, `context` is optional.
68
+ *
69
+ * Openability is opt-in and fail-safe: an absent flag is never treated as `true`.
70
+ */
71
+ export type NotificationPayload = (NotificationPayloadBase & {
72
+ canOpenAgentChat: true;
73
+ context: NotificationContext;
74
+ }) | (NotificationPayloadBase & {
75
+ canOpenAgentChat: false;
76
+ context?: NotificationContext;
77
+ });
1
78
  export interface NotificationService {
2
- notify(message: string): Promise<void>;
79
+ notify(input: string | NotificationPayload): Promise<void>;
3
80
  }
81
+ /**
82
+ * Normalize a notify() input to a structured payload.
83
+ *
84
+ * A bare string maps to a non-openable payload carrying that message. A structured
85
+ * payload passes through (copied, never mutated). Openability is fail-safe: only
86
+ * the literal boolean `true` enables the tap — absent, `undefined`, or any junk
87
+ * value resolves to `false`. Never `Boolean(...)`-coerce, which would flip a
88
+ * truthy non-boolean (or a truthy message) into openable.
89
+ */
90
+ export declare function toPayload(input: string | NotificationPayload): NotificationPayload;
91
+ /**
92
+ * Return a copy of the payload with `prefix` prepended to `message` only. Every
93
+ * other field — including the nested `context` and its own prose — is preserved
94
+ * untouched. The input is never mutated. A bare string yields the prefixed string.
95
+ */
96
+ export declare function applyMessagePrefix(input: string | NotificationPayload, prefix: string): string | NotificationPayload;
97
+ export {};
4
98
  //# sourceMappingURL=notification.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"notification.d.ts","sourceRoot":"","sources":["../../src/types/notification.ts"],"names":[],"mappings":"AAEA,MAAM,WAAW,mBAAmB;IAClC,MAAM,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CACxC"}
1
+ {"version":3,"file":"notification.d.ts","sourceRoot":"","sources":["../../src/types/notification.ts"],"names":[],"mappings":"AAEA;;;;;;;;;GASG;AACH,MAAM,WAAW,mBAAmB;IAClC,cAAc,EAAE,MAAM,CAAC;IACvB,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,EAAE,MAAM,CAAC;IACpB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB;AAED;;;GAGG;AACH,MAAM,WAAW,gBAAgB;IAC/B,0EAA0E;IAC1E,SAAS,EAAE,MAAM,CAAC;IAClB,0EAA0E;IAC1E,QAAQ,EAAE,MAAM,CAAC;IACjB,4EAA4E;IAC5E,KAAK,EAAE,MAAM,CAAC;CACf;AAED,uHAAuH;AACvH,eAAO,MAAM,cAAc,KAAK,CAAC;AACjC,eAAO,MAAM,aAAa,MAAM,CAAC;AAEjC;;yEAEyE;AACzE,wBAAgB,eAAe,CAAC,CAAC,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,MAAM,CAM9D;AAED;;;;;GAKG;AACH,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,MAAM,CAQtE;AAED;;;;GAIG;AACH,wBAAgB,WAAW,CAAC,KAAK,EAAE,MAAM,GAAG,SAAS,GAAG,MAAM,CAE7D;AAED,oEAAoE;AACpE,UAAU,uBAAuB;IAC/B,OAAO,EAAE,MAAM,CAAC;IAChB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,kGAAkG;IAClG,IAAI,CAAC,EAAE,gBAAgB,CAAC;CACzB;AAED;;;;;;;;GAQG;AACH,MAAM,MAAM,mBAAmB,GAC3B,CAAC,uBAAuB,GAAG;IAAE,gBAAgB,EAAE,IAAI,CAAC;IAAC,OAAO,EAAE,mBAAmB,CAAA;CAAE,CAAC,GACpF,CAAC,uBAAuB,GAAG;IAAE,gBAAgB,EAAE,KAAK,CAAC;IAAC,OAAO,CAAC,EAAE,mBAAmB,CAAA;CAAE,CAAC,CAAC;AAE3F,MAAM,WAAW,mBAAmB;IAClC,MAAM,CAAC,KAAK,EAAE,MAAM,GAAG,mBAAmB,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CAC5D;AAED;;;;;;;;GAQG;AACH,wBAAgB,SAAS,CAAC,KAAK,EAAE,MAAM,GAAG,mBAAmB,GAAG,mBAAmB,CAMlF;AAED;;;;GAIG;AACH,wBAAgB,kBAAkB,CAChC,KAAK,EAAE,MAAM,GAAG,mBAAmB,EACnC,MAAM,EAAE,MAAM,GACb,MAAM,GAAG,mBAAmB,CAc9B"}
@@ -1,3 +1,78 @@
1
1
  // ─── Notification Service ────────────────────────────────────────────────────
2
- export {};
2
+ /** Hard limits the notification service enforces: over-length titles/bodies are dropped, not truncated server-side. */
3
+ export const PUSH_TITLE_MAX = 32;
4
+ export const PUSH_BODY_MAX = 128;
5
+ /** Truncate to `max` UTF-16 units, appending "…" when clipped. Never splits a
6
+ * surrogate pair: if the cut would land between an emoji's two units, it backs off
7
+ * one so the result ends on a whole character rather than a lone `�`. */
8
+ export function truncateForPush(s, max) {
9
+ if (s.length <= max)
10
+ return s;
11
+ let cut = max - 1; // leave one unit for the ellipsis
12
+ const lastKept = s.charCodeAt(cut - 1);
13
+ if (lastKept >= 0xd800 && lastKept <= 0xdbff)
14
+ cut -= 1; // don't strand a high surrogate
15
+ return s.slice(0, cut) + "…";
16
+ }
17
+ /**
18
+ * Compose the push title as `${prefix}${verb}` within {@link PUSH_TITLE_MAX}. When
19
+ * it overflows, the strategy name inside `prefix` (always `[<name>] `, or "") gives
20
+ * way — clipped with "…" — while the emoji + verb stay whole, because the verb is
21
+ * the meaningful part a glance reads. An empty prefix returns the verb untouched.
22
+ */
23
+ export function fitTitleWithLabel(prefix, verb) {
24
+ const full = `${prefix}${verb}`;
25
+ if (full.length <= PUSH_TITLE_MAX)
26
+ return full;
27
+ // prefix === "[" + name + "] "; reserve those 3 framing units + the whole verb.
28
+ const nameBudget = PUSH_TITLE_MAX - verb.length - 3;
29
+ if (prefix.length < 3 || nameBudget < 1)
30
+ return truncateForPush(full, PUSH_TITLE_MAX);
31
+ const name = prefix.slice(1, prefix.length - 2);
32
+ return `[${truncateForPush(name, nameBudget)}] ${verb}`;
33
+ }
34
+ /**
35
+ * Build the `[label] ` prefix every runtime notification family leads its
36
+ * copy with. Empty/whitespace-only labels resolve to no prefix at all (no
37
+ * bracket pair for a strategy with nothing to show).
38
+ */
39
+ export function labelPrefix(label) {
40
+ return label && label.trim() ? `[${label.trim()}] ` : "";
41
+ }
42
+ /**
43
+ * Normalize a notify() input to a structured payload.
44
+ *
45
+ * A bare string maps to a non-openable payload carrying that message. A structured
46
+ * payload passes through (copied, never mutated). Openability is fail-safe: only
47
+ * the literal boolean `true` enables the tap — absent, `undefined`, or any junk
48
+ * value resolves to `false`. Never `Boolean(...)`-coerce, which would flip a
49
+ * truthy non-boolean (or a truthy message) into openable.
50
+ */
51
+ export function toPayload(input) {
52
+ if (typeof input === "string") {
53
+ return { message: input, canOpenAgentChat: false };
54
+ }
55
+ const canOpen = input.canOpenAgentChat === true;
56
+ return { ...input, canOpenAgentChat: canOpen };
57
+ }
58
+ /**
59
+ * Return a copy of the payload with `prefix` prepended to `message` only. Every
60
+ * other field — including the nested `context` and its own prose — is preserved
61
+ * untouched. The input is never mutated. A bare string yields the prefixed string.
62
+ */
63
+ export function applyMessagePrefix(input, prefix) {
64
+ if (typeof input === "string") {
65
+ return `${prefix}${input}`;
66
+ }
67
+ const out = { ...input, message: `${prefix}${input.message}` };
68
+ if (input.copy) {
69
+ out.copy = {
70
+ // Title: clip the strategy name, keep the emoji + verb whole.
71
+ pushTitle: fitTitleWithLabel(prefix, input.copy.pushTitle),
72
+ pushBody: truncateForPush(`${prefix}${input.copy.pushBody}`, PUSH_BODY_MAX),
73
+ inApp: `${prefix}${input.copy.inApp}`,
74
+ };
75
+ }
76
+ return out;
77
+ }
3
78
  //# sourceMappingURL=notification.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"notification.js","sourceRoot":"","sources":["../../src/types/notification.ts"],"names":[],"mappings":"AAAA,gFAAgF"}
1
+ {"version":3,"file":"notification.js","sourceRoot":"","sources":["../../src/types/notification.ts"],"names":[],"mappings":"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"}
@@ -20,5 +20,11 @@ export interface RuntimeContext {
20
20
  * Optional: actions degrade gracefully when absent (e.g. standalone scripts, older call sites).
21
21
  */
22
22
  positionIdRegistry?: PositionIdRegistry;
23
+ /**
24
+ * Human strategy label (`group` when set, else `name`) every action-emitted
25
+ * notification leads with as a `[label] ` prefix. Optional: absent in older
26
+ * call sites / standalone scripts, which fall back to no prefix.
27
+ */
28
+ notificationLabel?: string;
23
29
  }
24
30
  //# sourceMappingURL=runtime.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"runtime.d.ts","sourceRoot":"","sources":["../../src/types/runtime.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAClD,OAAO,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AAC9C,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAC1D,OAAO,EAAE,UAAU,EAAE,WAAW,EAAE,mBAAmB,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AAC/F,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;AAE7E,MAAM,WAAW,cAAc;IAC7B,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,EAAE,aAAa,CAAC;IAC7B,aAAa,CAAC,EAAE,oBAAoB,CAAC;IACrC,gBAAgB,EAAE,gBAAgB,CAAC;IACnC;;;OAGG;IACH,kBAAkB,CAAC,EAAE,kBAAkB,CAAC;CACzC"}
1
+ {"version":3,"file":"runtime.d.ts","sourceRoot":"","sources":["../../src/types/runtime.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAClD,OAAO,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AAC9C,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAC1D,OAAO,EAAE,UAAU,EAAE,WAAW,EAAE,mBAAmB,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AAC/F,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;AAE7E,MAAM,WAAW,cAAc;IAC7B,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,EAAE,aAAa,CAAC;IAC7B,aAAa,CAAC,EAAE,oBAAoB,CAAC;IACrC,gBAAgB,EAAE,gBAAgB,CAAC;IACnC;;;OAGG;IACH,kBAAkB,CAAC,EAAE,kBAAkB,CAAC;IACxC;;;;OAIG;IACH,iBAAiB,CAAC,EAAE,MAAM,CAAC;CAC5B"}
@@ -0,0 +1,19 @@
1
+ /**
2
+ * Fixed marker that opens a session-context block sent as a normal `chat.send` user
3
+ * turn. Any producer (e.g. the web/mobile UI when a user taps "reply" on a Senpi
4
+ * notification) can seed context into a chat by wrapping the machine-readable context
5
+ * between this line and {@link SENPI_SESSION_CONTEXT_END}, then appending the
6
+ * human-readable prose after END. The runtime's seed-turn detector matches this literal
7
+ * byte-for-byte (case-sensitive substring), so every producer and this constant MUST
8
+ * agree on the exact text — do not reformat, re-space, or change the run of `-` here
9
+ * without changing every producer in lockstep.
10
+ */
11
+ export declare const SENPI_SESSION_CONTEXT_BEGIN = "-----SESSION-CONTEXT-BEGIN-----";
12
+ /**
13
+ * Fixed marker that closes a session-context block (see
14
+ * {@link SENPI_SESSION_CONTEXT_BEGIN}); the human-readable prose follows this line.
15
+ * Matched byte-for-byte by the runtime detector, so it is a shared contract with every
16
+ * producer — the literal must stay identical on both sides.
17
+ */
18
+ export declare const SENPI_SESSION_CONTEXT_END = "-----SESSION-CONTEXT-END-----";
19
+ //# sourceMappingURL=session-context.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"session-context.d.ts","sourceRoot":"","sources":["../../src/types/session-context.ts"],"names":[],"mappings":"AAEA;;;;;;;;;GASG;AACH,eAAO,MAAM,2BAA2B,oCAAoC,CAAC;AAE7E;;;;;GAKG;AACH,eAAO,MAAM,yBAAyB,kCAAkC,CAAC"}
@@ -0,0 +1,20 @@
1
+ // ─── Session Context ─────────────────────────────────────────────────────────
2
+ /**
3
+ * Fixed marker that opens a session-context block sent as a normal `chat.send` user
4
+ * turn. Any producer (e.g. the web/mobile UI when a user taps "reply" on a Senpi
5
+ * notification) can seed context into a chat by wrapping the machine-readable context
6
+ * between this line and {@link SENPI_SESSION_CONTEXT_END}, then appending the
7
+ * human-readable prose after END. The runtime's seed-turn detector matches this literal
8
+ * byte-for-byte (case-sensitive substring), so every producer and this constant MUST
9
+ * agree on the exact text — do not reformat, re-space, or change the run of `-` here
10
+ * without changing every producer in lockstep.
11
+ */
12
+ export const SENPI_SESSION_CONTEXT_BEGIN = "-----SESSION-CONTEXT-BEGIN-----";
13
+ /**
14
+ * Fixed marker that closes a session-context block (see
15
+ * {@link SENPI_SESSION_CONTEXT_BEGIN}); the human-readable prose follows this line.
16
+ * Matched byte-for-byte by the runtime detector, so it is a shared contract with every
17
+ * producer — the literal must stay identical on both sides.
18
+ */
19
+ export const SENPI_SESSION_CONTEXT_END = "-----SESSION-CONTEXT-END-----";
20
+ //# sourceMappingURL=session-context.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"session-context.js","sourceRoot":"","sources":["../../src/types/session-context.ts"],"names":[],"mappings":"AAAA,gFAAgF;AAEhF;;;;;;;;;GASG;AACH,MAAM,CAAC,MAAM,2BAA2B,GAAG,iCAAiC,CAAC;AAE7E;;;;;GAKG;AACH,MAAM,CAAC,MAAM,yBAAyB,GAAG,+BAA+B,CAAC"}
@@ -15,22 +15,6 @@ export declare function parseLogLevel(raw: string | undefined | null): LogLevel
15
15
  export declare function setLogLevel(level: LogLevel, source?: LogLevelSource): void;
16
16
  export declare function getLogLevel(): LogLevel;
17
17
  export declare function getLogLevelSource(): LogLevelSource;
18
- export interface ErrorNotificationPayload {
19
- namespace: string;
20
- level: "error";
21
- message: string;
22
- attributes?: unknown;
23
- /**
24
- * Normalized exception, present when the error call carried one. Built once alongside the
25
- * log record's `exception.*` attributes so the notifier surfaces the same type/message/stack
26
- * the log does — the raw error no longer rides in `attributes`.
27
- */
28
- exception?: NormalizedException;
29
- timestamp: string;
30
- }
31
- export type ErrorNotifier = (payload: ErrorNotificationPayload) => void | Promise<void>;
32
- export declare function setErrorNotifier(notifier: ErrorNotifier | null): void;
33
- export declare function clearErrorNotifier(): void;
34
18
  /** OTel exception semconv, normalized from any thrown value. Stacks are kept unredacted. */
35
19
  export interface NormalizedException {
36
20
  type?: string;
@@ -47,8 +31,8 @@ export interface NormalizedException {
47
31
  * slot that is capped AND always run through redaction before it joins the emitted attributes.
48
32
  * - `error` — a thrown value when this catalogued event IS also a fault (e.g. `order.failed` from a
49
33
  * venue throw). Normalized to `exception.*` semconv on the record (stack kept, uncapped) and recorded
50
- * on the active span, so one emit carries narrative + typed attrs + exception. Unlike `logger.error`,
51
- * it does NOT fan out the error notifier — severity is the call site's to grade via `level`.
34
+ * on the active span, so one emit carries narrative + typed attrs + exception. Severity is the call
35
+ * site's to grade via `level`.
52
36
  */
53
37
  export interface EventOptions<N extends EventName> {
54
38
  body: string;
@@ -1 +1 @@
1
- {"version":3,"file":"logger.d.ts","sourceRoot":"","sources":["../../src/utils/logger.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAaH,OAAO,EAEL,KAAK,QAAQ,EAEb,KAAK,SAAS,EACf,MAAM,oBAAoB,CAAC;AAE5B,MAAM,MAAM,QAAQ,GAAG,OAAO,GAAG,MAAM,GAAG,MAAM,GAAG,OAAO,CAAC;AAW3D,MAAM,MAAM,cAAc,GAAG,QAAQ,GAAG,KAAK,GAAG,SAAS,GAAG,SAAS,CAAC;AAEtE,iHAAiH;AACjH,wBAAgB,aAAa,CAAC,GAAG,EAAE,MAAM,GAAG,SAAS,GAAG,IAAI,GAAG,QAAQ,GAAG,IAAI,CAY7E;AAmBD,wBAAgB,WAAW,CAAC,KAAK,EAAE,QAAQ,EAAE,MAAM,GAAE,cAA0B,GAAG,IAAI,CAGrF;AAED,wBAAgB,WAAW,IAAI,QAAQ,CAEtC;AAED,wBAAgB,iBAAiB,IAAI,cAAc,CAElD;AAED,MAAM,WAAW,wBAAwB;IACvC,SAAS,EAAE,MAAM,CAAC;IAClB,KAAK,EAAE,OAAO,CAAC;IACf,OAAO,EAAE,MAAM,CAAC;IAChB,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB;;;;OAIG;IACH,SAAS,CAAC,EAAE,mBAAmB,CAAC;IAChC,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,MAAM,aAAa,GAAG,CAC1B,OAAO,EAAE,wBAAwB,KAC9B,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;AAE1B,wBAAgB,gBAAgB,CAAC,QAAQ,EAAE,aAAa,GAAG,IAAI,GAAG,IAAI,CAErE;AAED,wBAAgB,kBAAkB,IAAI,IAAI,CAEzC;AAgBD,4FAA4F;AAC5F,MAAM,WAAW,mBAAmB;IAClC,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,CAAC;IAChB,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AA8HD;;;;;;;;;;;;GAYG;AACH,MAAM,WAAW,YAAY,CAAC,CAAC,SAAS,SAAS;IAC/C,IAAI,EAAE,MAAM,CAAC;IACb,UAAU,CAAC,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAC;IACzB,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAChC,KAAK,CAAC,EAAE,OAAO,CAAC;CACjB;AAED,MAAM,WAAW,MAAM;IACrB,KAAK,CAAC,OAAO,EAAE,MAAM,EAAE,UAAU,CAAC,EAAE,OAAO,GAAG,IAAI,CAAC;IACnD,IAAI,CAAC,OAAO,EAAE,MAAM,EAAE,UAAU,CAAC,EAAE,OAAO,GAAG,IAAI,CAAC;IAClD;;;;;OAKG;IACH,IAAI,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,OAAO,EAAE,UAAU,CAAC,EAAE,OAAO,GAAG,IAAI,CAAC;IACnE,KAAK,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,OAAO,EAAE,UAAU,CAAC,EAAE,OAAO,GAAG,IAAI,CAAC;IACpE;;;;;;OAMG;IACH,KAAK,CAAC,CAAC,SAAS,SAAS,EAAE,IAAI,EAAE,CAAC,EAAE,KAAK,EAAE,QAAQ,EAAE,IAAI,EAAE,YAAY,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC;CACnF;AAyJD,wBAAgB,YAAY,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,CAsFtD;AAED;;;;GAIG;AACH,eAAO,MAAM,UAAU,EAAE,MAMxB,CAAC"}
1
+ {"version":3,"file":"logger.d.ts","sourceRoot":"","sources":["../../src/utils/logger.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAaH,OAAO,EAEL,KAAK,QAAQ,EAEb,KAAK,SAAS,EACf,MAAM,oBAAoB,CAAC;AAE5B,MAAM,MAAM,QAAQ,GAAG,OAAO,GAAG,MAAM,GAAG,MAAM,GAAG,OAAO,CAAC;AAW3D,MAAM,MAAM,cAAc,GAAG,QAAQ,GAAG,KAAK,GAAG,SAAS,GAAG,SAAS,CAAC;AAEtE,iHAAiH;AACjH,wBAAgB,aAAa,CAAC,GAAG,EAAE,MAAM,GAAG,SAAS,GAAG,IAAI,GAAG,QAAQ,GAAG,IAAI,CAY7E;AAiBD,wBAAgB,WAAW,CAAC,KAAK,EAAE,QAAQ,EAAE,MAAM,GAAE,cAA0B,GAAG,IAAI,CAGrF;AAED,wBAAgB,WAAW,IAAI,QAAQ,CAEtC;AAED,wBAAgB,iBAAiB,IAAI,cAAc,CAElD;AAgBD,4FAA4F;AAC5F,MAAM,WAAW,mBAAmB;IAClC,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,CAAC;IAChB,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AA8HD;;;;;;;;;;;;GAYG;AACH,MAAM,WAAW,YAAY,CAAC,CAAC,SAAS,SAAS;IAC/C,IAAI,EAAE,MAAM,CAAC;IACb,UAAU,CAAC,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAC;IACzB,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAChC,KAAK,CAAC,EAAE,OAAO,CAAC;CACjB;AAED,MAAM,WAAW,MAAM;IACrB,KAAK,CAAC,OAAO,EAAE,MAAM,EAAE,UAAU,CAAC,EAAE,OAAO,GAAG,IAAI,CAAC;IACnD,IAAI,CAAC,OAAO,EAAE,MAAM,EAAE,UAAU,CAAC,EAAE,OAAO,GAAG,IAAI,CAAC;IAClD;;;;;OAKG;IACH,IAAI,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,OAAO,EAAE,UAAU,CAAC,EAAE,OAAO,GAAG,IAAI,CAAC;IACnE,KAAK,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,OAAO,EAAE,UAAU,CAAC,EAAE,OAAO,GAAG,IAAI,CAAC;IACpE;;;;;;OAMG;IACH,KAAK,CAAC,CAAC,SAAS,SAAS,EAAE,IAAI,EAAE,CAAC,EAAE,KAAK,EAAE,QAAQ,EAAE,IAAI,EAAE,YAAY,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC;CACnF;AAyID,wBAAgB,YAAY,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,CAsFtD;AAED;;;;GAIG;AACH,eAAO,MAAM,UAAU,EAAE,MAMxB,CAAC"}
@@ -47,8 +47,6 @@ function resolveInitialLevel() {
47
47
  const initial = resolveInitialLevel();
48
48
  let minLevel = initial.level;
49
49
  let minLevelSource = initial.source;
50
- let errorNotifier = null;
51
- let notifyingError = false;
52
50
  export function setLogLevel(level, source = "runtime") {
53
51
  minLevel = level;
54
52
  minLevelSource = source;
@@ -59,12 +57,6 @@ export function getLogLevel() {
59
57
  export function getLogLevelSource() {
60
58
  return minLevelSource;
61
59
  }
62
- export function setErrorNotifier(notifier) {
63
- errorNotifier = notifier;
64
- }
65
- export function clearErrorNotifier() {
66
- errorNotifier = null;
67
- }
68
60
  function shouldLog(level) {
69
61
  return levelOrder[level] >= levelOrder[minLevel];
70
62
  }
@@ -191,23 +183,6 @@ function emitLogRecord(namespace, level, message, attributes, extra) {
191
183
  // A telemetry-side failure must never disturb the logging caller.
192
184
  }
193
185
  }
194
- function dispatchErrorNotification(payload) {
195
- const notifier = errorNotifier;
196
- if (notifier == null || notifyingError)
197
- return;
198
- void (async () => {
199
- notifyingError = true;
200
- try {
201
- await notifier(payload);
202
- }
203
- catch {
204
- // Intentionally swallow notifier failures to keep error logging safe.
205
- }
206
- finally {
207
- notifyingError = false;
208
- }
209
- })();
210
- }
211
186
  /** Cap each redact-slot string at the per-value limit. Keys are pinned at the call site, so unbounded. */
212
187
  function capRedactFields(fields) {
213
188
  const out = {};
@@ -371,7 +346,7 @@ export function createLogger(namespace) {
371
346
  appendDomainEvent(name, effectiveLevel, body, attributes, timestampMs);
372
347
  // An error makes this catalogued event also a fault: stamp exception.* semconv (uncapped, via
373
348
  // `extra`) and record it on the active span — synchronously here, so the deferred redacted path
374
- // can't lose the call-time span. No notifier fan-out: severity is the caller's `level` to grade.
349
+ // can't lose the call-time span. Severity is the caller's `level` to grade.
375
350
  let exceptionExtra;
376
351
  if (error !== undefined) {
377
352
  exceptionExtra = exceptionAttributes(normalizeException(error));
@@ -414,8 +389,7 @@ export const noopLogger = {
414
389
  /**
415
390
  * Shared warn/error path: discriminate the error vs attributes args, scavenge any bag error, render
416
391
  * the human line (with the error object, so the stack shows locally), emit the structured record
417
- * with `exception.*` attributes, record on the active span, and — for `error` — fan out one
418
- * normalized notification built from the same values.
392
+ * with `exception.*` attributes, and record on the active span.
419
393
  */
420
394
  function emitErrorAwareRecord(namespace, level, message, arg2, arg3) {
421
395
  let { error, attributes } = resolveErrorArgs(arg2, arg3);
@@ -447,17 +421,5 @@ function emitErrorAwareRecord(namespace, level, message, arg2, arg3) {
447
421
  emitLogRecord(namespace, level, message, attributes, extra);
448
422
  if (error !== undefined)
449
423
  recordExceptionOnActiveSpan(error, level);
450
- if (level === "error") {
451
- dispatchErrorNotification({
452
- namespace,
453
- level: "error",
454
- message,
455
- // The caller's bag without the error (which rides in `exception`) — not the `composed`
456
- // bag, whose folded-in `exception.*` keys would duplicate the exception block.
457
- attributes,
458
- exception,
459
- timestamp: new Date().toISOString(),
460
- });
461
- }
462
424
  }
463
425
  //# sourceMappingURL=logger.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"logger.js","sourceRoot":"","sources":["../../src/utils/logger.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"logger.js","sourceRoot":"","sources":["../../src/utils/logger.ts"],"names":[],"mappings":"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"}
@@ -2,7 +2,7 @@
2
2
  "id": "runtime",
3
3
  "name": "Senpi Runtime",
4
4
  "description": "Senpi runtime plugin for OpenClaw. Orchestrates scanners, LLM-based trade decisions, and a DSL trailing stop-loss exit engine.",
5
- "version": "3.0.22",
5
+ "version": "3.0.23",
6
6
  "commandAliases": [
7
7
  {
8
8
  "name": "senpi"
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@senpi/runtime",
3
- "version": "3.0.22",
3
+ "version": "3.0.23",
4
4
  "description": "Senpi runtime plugin for OpenClaw",
5
5
  "type": "module",
6
6
  "main": "dist/index.js",
@@ -1,39 +0,0 @@
1
- /**
2
- * Plain-text messages for action-layer Telegram notifications (open submit / close).
3
- */
4
- /** Payload emitted with {@link import("../../types/hooks.js").HOOK_EVENT.ON_OPEN_ORDER_SUBMITTED}. */
5
- export interface ActionOrderSubmittedData {
6
- asset: string;
7
- direction: "LONG" | "SHORT";
8
- leverage: number;
9
- wallet: string;
10
- /** Display dex; `"main"` is omitted in copy. */
11
- dex: string;
12
- reasoning?: string;
13
- orderId?: string;
14
- marginAmount?: number;
15
- }
16
- /** Payload on {@link import("../../types/hooks.js").HOOK_EVENT.ON_POSITION_CLOSED} (non–position-tracker). */
17
- export interface ActionPositionClosedData {
18
- asset: string;
19
- wallet: string;
20
- /** Machine reason (e.g. `action_close`); prefer `closeReason` for display. */
21
- reason?: string;
22
- /** User-facing close explanation when present. */
23
- closeReason?: string;
24
- dex?: string;
25
- }
26
- /**
27
- * Human-readable line(s) for a successful open-order submit (after Senpi accepts the order).
28
- *
29
- * @param data - Fields from the hook event `data` object
30
- * @returns Multi-line plain text suitable for Telegram
31
- */
32
- export declare function formatOrderSubmitted(data: ActionOrderSubmittedData): string;
33
- /**
34
- * Human-readable line for a position closed via the action layer (or other non-tracker sources).
35
- *
36
- * @param data - Fields from the hook event `data` object
37
- */
38
- export declare function formatPositionClosed(data: ActionPositionClosedData): string;
39
- //# sourceMappingURL=formatter.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"formatter.d.ts","sourceRoot":"","sources":["../../../src/actions/notifications/formatter.ts"],"names":[],"mappings":"AAAA;;GAEG;AA8BH,sGAAsG;AACtG,MAAM,WAAW,wBAAwB;IACvC,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC;IAC5B,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,MAAM,CAAC;IACf,gDAAgD;IAChD,GAAG,EAAE,MAAM,CAAC;IACZ,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB;AAED,8GAA8G;AAC9G,MAAM,WAAW,wBAAwB;IACvC,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,8EAA8E;IAC9E,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,kDAAkD;IAClD,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,GAAG,CAAC,EAAE,MAAM,CAAC;CACd;AAED;;;;;GAKG;AACH,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,wBAAwB,GAAG,MAAM,CAU3E;AAaD;;;;GAIG;AACH,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,wBAAwB,GAAG,MAAM,CAG3E"}
@@ -1,68 +0,0 @@
1
- /**
2
- * Plain-text messages for action-layer Telegram notifications (open submit / close).
3
- */
4
- function formatUsdWithCommas(n, fractionDigits) {
5
- return new Intl.NumberFormat("en-US", {
6
- style: "currency",
7
- currency: "USD",
8
- minimumFractionDigits: fractionDigits,
9
- maximumFractionDigits: fractionDigits,
10
- }).format(n);
11
- }
12
- /** Collateral display: trim meaningless trailing zeros (e.g. $500, $493.20). */
13
- function fmtMargin(amount) {
14
- if (!Number.isFinite(amount))
15
- return "$0";
16
- const ap = Math.abs(amount);
17
- const digits = ap >= 100 ? 0 : ap >= 1 ? 2 : 4;
18
- return formatUsdWithCommas(amount, digits);
19
- }
20
- function fmtDex(dex) {
21
- const s = typeof dex === "string" ? dex.trim() : String(dex ?? "").trim();
22
- if (s === "" || s.toLowerCase() === "main")
23
- return "";
24
- return ` (${s})`;
25
- }
26
- function fmtLeverage(leverage) {
27
- const n = Number.isFinite(leverage) && leverage > 0 ? leverage : 1;
28
- return `${Number.isInteger(n) ? n : n.toFixed(1)}x`;
29
- }
30
- /**
31
- * Human-readable line(s) for a successful open-order submit (after Senpi accepts the order).
32
- *
33
- * @param data - Fields from the hook event `data` object
34
- * @returns Multi-line plain text suitable for Telegram
35
- */
36
- export function formatOrderSubmitted(data) {
37
- const dex = fmtDex(data.dex);
38
- const lev = fmtLeverage(data.leverage);
39
- const margin = fmtMargin(data.marginAmount ?? 0);
40
- const line1 = `Opened ${data.asset}${dex} ${data.direction} · ${lev} · ${margin} margin`;
41
- const r = typeof data.reasoning === "string" ? data.reasoning.trim() : "";
42
- if (r.length > 0) {
43
- return `${line1}\nReason: ${r}`;
44
- }
45
- return line1;
46
- }
47
- /**
48
- * Resolves the subtitle after the em dash for a position close notification.
49
- */
50
- function closeSubtitle(data) {
51
- const cr = typeof data.closeReason === "string" ? data.closeReason.trim() : "";
52
- if (cr.length > 0)
53
- return cr;
54
- const r = typeof data.reason === "string" ? data.reason.trim() : "";
55
- if (r.length > 0)
56
- return r;
57
- return "Position closed";
58
- }
59
- /**
60
- * Human-readable line for a position closed via the action layer (or other non-tracker sources).
61
- *
62
- * @param data - Fields from the hook event `data` object
63
- */
64
- export function formatPositionClosed(data) {
65
- const dex = fmtDex(data.dex);
66
- return `Closed ${data.asset}${dex} — ${closeSubtitle(data)}`;
67
- }
68
- //# sourceMappingURL=formatter.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"formatter.js","sourceRoot":"","sources":["../../../src/actions/notifications/formatter.ts"],"names":[],"mappings":"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"}
@@ -1,37 +0,0 @@
1
- /**
2
- * Subscribes to action hook events on the bus and forwards formatted strings to NotificationService.
3
- */
4
- import type { SenpiEventBus } from "../../types/event-bus.js";
5
- import type { NotificationService } from "../../types/notification.js";
6
- export type { ActionOrderSubmittedData, ActionPositionClosedData } from "./formatter.js";
7
- export interface ActionNotificationOptions {
8
- /**
9
- * Recipe name to prefix every notification message (e.g. "[my-recipe] Opened ...").
10
- * When omitted, no prefix is added.
11
- */
12
- strategyName?: string;
13
- }
14
- export interface ActionNotificationSubscriber {
15
- dispose(): void;
16
- }
17
- /**
18
- * When `notifications.action_lifecycle` is `false`, do not register the subscriber; callers should
19
- * skip {@link createActionNotificationSubscriber} entirely. This helper documents the default
20
- * (`true` when the key is omitted).
21
- *
22
- * @param notifications - Top-level YAML `notifications` object, if any
23
- * @returns `false` only when `action_lifecycle` is explicitly `false`
24
- */
25
- export declare function isActionLifecycleNotificationsEnabled(notifications?: Record<string, unknown>): boolean;
26
- /**
27
- * Listens for `on_open_order_submitted` and `on_position_closed` on the runtime bus and sends
28
- * Telegram notifications. Position-tracker closes (`data.reason === 'position_tracker'`) are
29
- * suppressed so DSL / tracker copy stays authoritative for those paths.
30
- *
31
- * @param bus - Runtime event bus
32
- * @param notifier - Telegram notification service
33
- * @param options - Optional recipe name prefix
34
- * @returns Handle with `dispose()` to remove listeners
35
- */
36
- export declare function createActionNotificationSubscriber(bus: SenpiEventBus, notifier: NotificationService, options?: ActionNotificationOptions): ActionNotificationSubscriber;
37
- //# sourceMappingURL=index.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/actions/notifications/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAC;AAC9D,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,6BAA6B,CAAC;AAavE,YAAY,EAAE,wBAAwB,EAAE,wBAAwB,EAAE,MAAM,gBAAgB,CAAC;AAEzF,MAAM,WAAW,yBAAyB;IACxC;;;OAGG;IACH,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB;AAED,MAAM,WAAW,4BAA4B;IAC3C,OAAO,IAAI,IAAI,CAAC;CACjB;AAwBD;;;;;;;GAOG;AACH,wBAAgB,qCAAqC,CACnD,aAAa,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GACtC,OAAO,CAET;AAED;;;;;;;;;GASG;AACH,wBAAgB,kCAAkC,CAChD,GAAG,EAAE,aAAa,EAClB,QAAQ,EAAE,mBAAmB,EAC7B,OAAO,CAAC,EAAE,yBAAyB,GAClC,4BAA4B,CAwC9B"}