pi-harness-runtime 1.1.146 → 1.1.148

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 (179) hide show
  1. package/CHANGELOG.md +2 -0
  2. package/README.md +113 -0
  3. package/index.ts +136 -6
  4. package/package.json +4 -3
  5. package/packages/a2a-adapter/package.json +1 -1
  6. package/packages/architecture-generator/package.json +1 -1
  7. package/packages/auth/package.json +1 -1
  8. package/packages/autonomous-refactor/package.json +1 -1
  9. package/packages/autonomous-runtime/package.json +1 -1
  10. package/packages/cache-strategy/package.json +1 -1
  11. package/packages/capability-registry/package.json +1 -1
  12. package/packages/checkpoint/package.json +1 -1
  13. package/packages/cli-plugin-sdk/package.json +1 -1
  14. package/packages/clipboard/package.json +1 -1
  15. package/packages/clipboard-plugin/package.json +1 -1
  16. package/packages/code-generation/package.json +1 -1
  17. package/packages/code-review/package.json +1 -1
  18. package/packages/codex-adapter/package.json +1 -1
  19. package/packages/codex-watcher/package.json +1 -1
  20. package/packages/config-capture/package.json +1 -1
  21. package/packages/context-compiler/package.json +1 -1
  22. package/packages/context-discovery/package.json +1 -1
  23. package/packages/context-manager/package.json +1 -1
  24. package/packages/cookie-sanitizer/package.json +1 -1
  25. package/packages/cost-optimizer/package.json +1 -1
  26. package/packages/dependency-analyzer/package.json +1 -1
  27. package/packages/django-plugin/package.json +1 -1
  28. package/packages/doc-generator/package.json +1 -1
  29. package/packages/evaluation-engine/package.json +1 -1
  30. package/packages/evaluation-runner/package.json +1 -1
  31. package/packages/event-bus/package.json +1 -1
  32. package/packages/event-store/package.json +1 -1
  33. package/packages/experience-replay/package.json +1 -1
  34. package/packages/feedback-collector/package.json +1 -1
  35. package/packages/file-copy-helper/dist/src/extension.js +186 -0
  36. package/packages/file-copy-helper/package.json +1 -1
  37. package/packages/framework-detector/package.json +1 -1
  38. package/packages/framework-plugin-sdk/package.json +1 -1
  39. package/packages/frappe-plugin/package.json +1 -1
  40. package/packages/generic-web-plugin/package.json +1 -1
  41. package/packages/health-monitor/package.json +1 -1
  42. package/packages/intent-analyzer/package.json +1 -1
  43. package/packages/jev-judge/package.json +1 -1
  44. package/packages/knowledge-graph/package.json +1 -1
  45. package/packages/knowledge-retrieval/package.json +1 -1
  46. package/packages/laravel-plugin/package.json +1 -1
  47. package/packages/learning-engine/package.json +1 -1
  48. package/packages/mcp-adapter/package.json +1 -1
  49. package/packages/memory-engine/package.json +1 -1
  50. package/packages/milestone-manager/package.json +1 -1
  51. package/packages/model-registry/package.json +1 -1
  52. package/packages/nextjs-plugin/package.json +1 -1
  53. package/packages/notification/dist/adapters/telegram-adapter.d.ts +38 -1
  54. package/packages/notification/dist/adapters/telegram-adapter.d.ts.map +1 -1
  55. package/packages/notification/dist/adapters/telegram-adapter.js +159 -5
  56. package/packages/notification/dist/adapters/telegram-adapter.js.map +1 -1
  57. package/packages/notification/dist/index.d.ts +2 -0
  58. package/packages/notification/dist/index.d.ts.map +1 -1
  59. package/packages/notification/dist/index.js +2 -0
  60. package/packages/notification/dist/index.js.map +1 -1
  61. package/packages/notification/dist/notification-center.d.ts +40 -1
  62. package/packages/notification/dist/notification-center.d.ts.map +1 -1
  63. package/packages/notification/dist/notification-center.js +103 -1
  64. package/packages/notification/dist/notification-center.js.map +1 -1
  65. package/packages/notification/dist/notification-policy.d.ts +66 -0
  66. package/packages/notification/dist/notification-policy.d.ts.map +1 -0
  67. package/packages/notification/dist/notification-policy.js +153 -0
  68. package/packages/notification/dist/notification-policy.js.map +1 -0
  69. package/packages/notification/dist/src/adapters/email-adapter.d.ts +17 -0
  70. package/packages/notification/dist/src/adapters/email-adapter.d.ts.map +1 -0
  71. package/packages/notification/dist/src/adapters/email-adapter.js +89 -0
  72. package/packages/notification/dist/src/adapters/email-adapter.js.map +1 -0
  73. package/packages/notification/dist/src/adapters/line-adapter.d.ts +17 -0
  74. package/packages/notification/dist/src/adapters/line-adapter.d.ts.map +1 -0
  75. package/packages/notification/dist/src/adapters/line-adapter.js +99 -0
  76. package/packages/notification/dist/src/adapters/line-adapter.js.map +1 -0
  77. package/packages/notification/dist/src/adapters/ntfy-adapter.d.ts +17 -0
  78. package/packages/notification/dist/src/adapters/ntfy-adapter.d.ts.map +1 -0
  79. package/packages/notification/dist/src/adapters/ntfy-adapter.js +84 -0
  80. package/packages/notification/dist/src/adapters/ntfy-adapter.js.map +1 -0
  81. package/packages/notification/dist/src/adapters/telegram-adapter.d.ts +56 -0
  82. package/packages/notification/dist/src/adapters/telegram-adapter.d.ts.map +1 -0
  83. package/packages/notification/dist/src/adapters/telegram-adapter.js +251 -0
  84. package/packages/notification/dist/src/adapters/telegram-adapter.js.map +1 -0
  85. package/packages/notification/dist/src/adapters/webhook-adapter.d.ts +15 -0
  86. package/packages/notification/dist/src/adapters/webhook-adapter.d.ts.map +1 -0
  87. package/packages/notification/dist/src/adapters/webhook-adapter.js +64 -0
  88. package/packages/notification/dist/src/adapters/webhook-adapter.js.map +1 -0
  89. package/packages/notification/dist/src/base-adapter.d.ts +36 -0
  90. package/packages/notification/dist/src/base-adapter.d.ts.map +1 -0
  91. package/packages/notification/dist/src/base-adapter.js +39 -0
  92. package/packages/notification/dist/src/base-adapter.js.map +1 -0
  93. package/packages/notification/dist/src/index.d.ts +12 -0
  94. package/packages/notification/dist/src/index.d.ts.map +1 -0
  95. package/packages/notification/dist/src/index.js +12 -0
  96. package/packages/notification/dist/src/index.js.map +1 -0
  97. package/packages/notification/dist/src/notification-center.d.ts +89 -0
  98. package/packages/notification/dist/src/notification-center.d.ts.map +1 -0
  99. package/packages/notification/dist/src/notification-center.js +356 -0
  100. package/packages/notification/dist/src/notification-center.js.map +1 -0
  101. package/packages/notification/dist/src/notification-policy.d.ts +66 -0
  102. package/packages/notification/dist/src/notification-policy.d.ts.map +1 -0
  103. package/packages/notification/dist/src/notification-policy.js +153 -0
  104. package/packages/notification/dist/src/notification-policy.js.map +1 -0
  105. package/packages/notification/dist/src/telegram-webhook-handler.d.ts +86 -0
  106. package/packages/notification/dist/src/telegram-webhook-handler.d.ts.map +1 -0
  107. package/packages/notification/dist/src/telegram-webhook-handler.js +149 -0
  108. package/packages/notification/dist/src/telegram-webhook-handler.js.map +1 -0
  109. package/packages/notification/dist/src/types.d.ts +106 -0
  110. package/packages/notification/dist/src/types.d.ts.map +1 -0
  111. package/packages/notification/dist/src/types.js +7 -0
  112. package/packages/notification/dist/src/types.js.map +1 -0
  113. package/packages/notification/dist/telegram-webhook-handler.d.ts +86 -0
  114. package/packages/notification/dist/telegram-webhook-handler.d.ts.map +1 -0
  115. package/packages/notification/dist/telegram-webhook-handler.js +149 -0
  116. package/packages/notification/dist/telegram-webhook-handler.js.map +1 -0
  117. package/packages/notification/dist/types.d.ts +37 -0
  118. package/packages/notification/dist/types.d.ts.map +1 -1
  119. package/packages/notification/package.json +1 -1
  120. package/packages/notification/src/adapters/telegram-adapter.ts +187 -5
  121. package/packages/notification/src/index.ts +2 -0
  122. package/packages/notification/src/notification-center.ts +139 -0
  123. package/packages/notification/src/notification-policy.ts +203 -0
  124. package/packages/notification/src/telegram-webhook-handler.ts +211 -0
  125. package/packages/notification/src/types.ts +42 -0
  126. package/packages/observability/package.json +1 -1
  127. package/packages/okf-indexer/package.json +1 -1
  128. package/packages/paperclip-integration/dist/index.d.ts.map +1 -1
  129. package/packages/paperclip-integration/dist/index.js +30 -18
  130. package/packages/paperclip-integration/dist/index.js.map +1 -1
  131. package/packages/paperclip-integration/package.json +1 -1
  132. package/packages/paperclip-integration/src/index.ts +35 -20
  133. package/packages/performance-optimizer/package.json +1 -1
  134. package/packages/privilege-broker/package.json +1 -1
  135. package/packages/project-analyzer/package.json +1 -1
  136. package/packages/project-bootstrap/package.json +1 -1
  137. package/packages/projection-engine/package.json +1 -1
  138. package/packages/prompt-compiler/package.json +1 -1
  139. package/packages/prompt-versioning/package.json +1 -1
  140. package/packages/provider-adapter-sdk/package.json +1 -1
  141. package/packages/provider-router/package.json +1 -1
  142. package/packages/provider-selector/package.json +1 -1
  143. package/packages/providers/package.json +1 -1
  144. package/packages/qdrant-skills/package.json +1 -1
  145. package/packages/quota-manager/package.json +1 -1
  146. package/packages/rate-limiter/package.json +1 -1
  147. package/packages/react-vite-plugin/package.json +1 -1
  148. package/packages/release-manager/package.json +1 -1
  149. package/packages/requirement-compiler/package.json +1 -1
  150. package/packages/runtime/package.json +1 -1
  151. package/packages/scheduler/package.json +1 -1
  152. package/packages/scheduler-adapter/package.json +1 -1
  153. package/packages/session/package.json +1 -1
  154. package/packages/session-api/package.json +1 -1
  155. package/packages/session-export/package.json +1 -1
  156. package/packages/shared-context/package.json +1 -1
  157. package/packages/skill-mcp-client/package.json +1 -1
  158. package/packages/skill-registry/package.json +1 -1
  159. package/packages/skills/package.json +1 -1
  160. package/packages/sprint-planner/package.json +1 -1
  161. package/packages/subscription-engine/package.json +1 -1
  162. package/packages/task-compiler/package.json +1 -1
  163. package/packages/tencentdb-memory/package.json +1 -1
  164. package/packages/tencentdb-sync/package.json +1 -1
  165. package/packages/test-data-generator/package.json +1 -1
  166. package/packages/test-generator/package.json +1 -1
  167. package/packages/todo-bd-sync/package.json +1 -1
  168. package/packages/token-estimation/package.json +1 -1
  169. package/packages/token-optimizer/package.json +1 -1
  170. package/packages/trajectory/package.json +1 -1
  171. package/packages/tui/package.json +1 -1
  172. package/packages/types/package.json +1 -1
  173. package/packages/workflow-events/package.json +1 -1
  174. package/packages/workspace-scanner/package.json +1 -1
  175. package/packages/worktree/package.json +1 -1
  176. package/packages/write-review/package.json +1 -1
  177. package/scripts/telegram-callback-processor.ts +180 -0
  178. package/scripts/telegram-webhook-server.ts +387 -0
  179. package/scripts/test-telegram-approval.ts +64 -0
@@ -8,7 +8,8 @@
8
8
  * - Redact sensitive data before sending
9
9
  * - Notification failure does not crash runtime
10
10
  */
11
- import type { NotificationEvent, NotificationConfig, NotificationChannelConfig, NotificationResult, NotificationContext } from "./types.js";
11
+ import type { NotificationEvent, NotificationConfig, NotificationChannelConfig, NotificationResult, NotificationContext, TelegramCallbackHandler } from "./types.js";
12
+ import { TelegramAdapter } from "./adapters/telegram-adapter.js";
12
13
  export declare class NotificationCenter {
13
14
  private adapters;
14
15
  private redactPatterns;
@@ -41,6 +42,44 @@ export declare class NotificationCenter {
41
42
  * Get Telegram bot username if configured
42
43
  */
43
44
  getTelegramBotUsername(): string | undefined;
45
+ /**
46
+ * Get Telegram adapter for advanced operations (webhook setup, etc.)
47
+ */
48
+ getTelegramAdapter(): TelegramAdapter | undefined;
49
+ /**
50
+ * Set callback handler for Telegram inline keyboard button clicks
51
+ */
52
+ setTelegramCallbackHandler(handler: TelegramCallbackHandler): void;
53
+ /**
54
+ * Set webhook secret for Telegram updates verification
55
+ */
56
+ setTelegramWebhookSecret(secret: string): void;
57
+ /**
58
+ * Setup Telegram webhook for receiving updates
59
+ */
60
+ setupTelegramWebhook(webhookUrl: string): Promise<boolean>;
61
+ /**
62
+ * Send notification with interactive Yes/No buttons
63
+ */
64
+ notifyWithApproval(event: NotificationEvent, context: NotificationContext, options?: {
65
+ /** Custom button labels */
66
+ approveLabel?: string;
67
+ rejectLabel?: string;
68
+ /** Additional details for the message */
69
+ additionalDetails?: Record<string, unknown>;
70
+ }): Promise<NotificationResult[]>;
71
+ /**
72
+ * Send interactive notification with custom buttons
73
+ */
74
+ notifyWithButtons(event: NotificationEvent, context: NotificationContext, buttons: Array<{
75
+ text: string;
76
+ action: string;
77
+ targetId: string;
78
+ url?: string;
79
+ }>, options?: {
80
+ /** Additional details for the message */
81
+ additionalDetails?: Record<string, unknown>;
82
+ }): Promise<NotificationResult[]>;
44
83
  private createAdapter;
45
84
  private buildPayload;
46
85
  private getEventContent;
@@ -1 +1 @@
1
- {"version":3,"file":"notification-center.d.ts","sourceRoot":"","sources":["../src/notification-center.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,KAAK,EACX,iBAAiB,EAEjB,kBAAkB,EAClB,yBAAyB,EACzB,kBAAkB,EAClB,mBAAmB,EACnB,MAAM,YAAY,CAAC;AAQpB,qBAAa,kBAAkB;IAC9B,OAAO,CAAC,QAAQ,CAA0C;IAC1D,OAAO,CAAC,cAAc,CAAW;IAEjC,YAAY,MAAM,CAAC,EAAE,kBAAkB,EAWtC;IAED;;OAEG;IACH,eAAe,CAAC,MAAM,EAAE,yBAAyB,GAAG,OAAO,CAa1D;IAED;;OAEG;IACG,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC,CAgBhC;IAED;;OAEG;IACG,MAAM,CACX,KAAK,EAAE,iBAAiB,EACxB,OAAO,EAAE,mBAAmB,GAC1B,OAAO,CAAC,kBAAkB,EAAE,CAAC,CAwB/B;IAED;;OAEG;IACG,aAAa,CAClB,SAAS,EAAE,MAAM,EACjB,KAAK,EAAE,iBAAiB,EACxB,OAAO,EAAE,mBAAmB,GAC1B,OAAO,CAAC,kBAAkB,CAAC,CAY7B;IAED;;OAEG;IACH,WAAW,IAAI,OAAO,CAErB;IAED;;OAEG;IACH,YAAY,IAAI,MAAM,EAAE,CAEvB;IAED;;OAEG;IACH,sBAAsB,IAAI,MAAM,GAAG,SAAS,CAM3C;IAID,OAAO,CAAC,aAAa;IA6BrB,OAAO,CAAC,YAAY;IAsBpB,OAAO,CAAC,eAAe;IA2EvB,OAAO,CAAC,MAAM;IAed,OAAO,CAAC,wBAAwB;CAWhC"}
1
+ {"version":3,"file":"notification-center.d.ts","sourceRoot":"","sources":["../src/notification-center.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,KAAK,EAEX,iBAAiB,EAEjB,kBAAkB,EAClB,yBAAyB,EACzB,kBAAkB,EAClB,mBAAmB,EACnB,uBAAuB,EAEvB,MAAM,YAAY,CAAC;AAEpB,OAAO,EAAE,eAAe,EAAE,MAAM,gCAAgC,CAAC;AAOjE,qBAAa,kBAAkB;IAC9B,OAAO,CAAC,QAAQ,CAA0C;IAC1D,OAAO,CAAC,cAAc,CAAW;IAEjC,YAAY,MAAM,CAAC,EAAE,kBAAkB,EAWtC;IAED;;OAEG;IACH,eAAe,CAAC,MAAM,EAAE,yBAAyB,GAAG,OAAO,CAa1D;IAED;;OAEG;IACG,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC,CAgBhC;IAED;;OAEG;IACG,MAAM,CACX,KAAK,EAAE,iBAAiB,EACxB,OAAO,EAAE,mBAAmB,GAC1B,OAAO,CAAC,kBAAkB,EAAE,CAAC,CAwB/B;IAED;;OAEG;IACG,aAAa,CAClB,SAAS,EAAE,MAAM,EACjB,KAAK,EAAE,iBAAiB,EACxB,OAAO,EAAE,mBAAmB,GAC1B,OAAO,CAAC,kBAAkB,CAAC,CAY7B;IAED;;OAEG;IACH,WAAW,IAAI,OAAO,CAErB;IAED;;OAEG;IACH,YAAY,IAAI,MAAM,EAAE,CAEvB;IAED;;OAEG;IACH,sBAAsB,IAAI,MAAM,GAAG,SAAS,CAM3C;IAED;;OAEG;IACH,kBAAkB,IAAI,eAAe,GAAG,SAAS,CAMhD;IAED;;OAEG;IACH,0BAA0B,CAAC,OAAO,EAAE,uBAAuB,GAAG,IAAI,CAKjE;IAED;;OAEG;IACH,wBAAwB,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,CAK7C;IAED;;OAEG;IACG,oBAAoB,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAM/D;IAED;;OAEG;IACG,kBAAkB,CACvB,KAAK,EAAE,iBAAiB,EACxB,OAAO,EAAE,mBAAmB,EAC5B,OAAO,CAAC,EAAE;QACT,2BAA2B;QAC3B,YAAY,CAAC,EAAE,MAAM,CAAC;QACtB,WAAW,CAAC,EAAE,MAAM,CAAC;QACrB,yCAAyC;QACzC,iBAAiB,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;KAC5C,GACC,OAAO,CAAC,kBAAkB,EAAE,CAAC,CA8B/B;IAED;;OAEG;IACG,iBAAiB,CACtB,KAAK,EAAE,iBAAiB,EACxB,OAAO,EAAE,mBAAmB,EAC5B,OAAO,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAC;QAAC,GAAG,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC,EAChF,OAAO,CAAC,EAAE;QACT,yCAAyC;QACzC,iBAAiB,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;KAC5C,GACC,OAAO,CAAC,kBAAkB,EAAE,CAAC,CA0B/B;IAID,OAAO,CAAC,aAAa;IA6BrB,OAAO,CAAC,YAAY;IA+BpB,OAAO,CAAC,eAAe;IA2EvB,OAAO,CAAC,MAAM;IAed,OAAO,CAAC,wBAAwB;CAWhC"}
@@ -9,6 +9,7 @@
9
9
  * - Notification failure does not crash runtime
10
10
  */
11
11
  import { TelegramAdapter } from "./adapters/telegram-adapter.js";
12
+ import { buildCallbackData, CallbackActions } from "./telegram-webhook-handler.js";
12
13
  import { LineAdapter } from "./adapters/line-adapter.js";
13
14
  import { NtfyAdapter } from "./adapters/ntfy-adapter.js";
14
15
  import { EmailAdapter } from "./adapters/email-adapter.js";
@@ -125,6 +126,103 @@ export class NotificationCenter {
125
126
  }
126
127
  return undefined;
127
128
  }
129
+ /**
130
+ * Get Telegram adapter for advanced operations (webhook setup, etc.)
131
+ */
132
+ getTelegramAdapter() {
133
+ const adapter = this.adapters.get("telegram");
134
+ if (adapter instanceof TelegramAdapter) {
135
+ return adapter;
136
+ }
137
+ return undefined;
138
+ }
139
+ /**
140
+ * Set callback handler for Telegram inline keyboard button clicks
141
+ */
142
+ setTelegramCallbackHandler(handler) {
143
+ const adapter = this.adapters.get("telegram");
144
+ if (adapter instanceof TelegramAdapter) {
145
+ adapter.setCallbackHandler(handler);
146
+ }
147
+ }
148
+ /**
149
+ * Set webhook secret for Telegram updates verification
150
+ */
151
+ setTelegramWebhookSecret(secret) {
152
+ const adapter = this.adapters.get("telegram");
153
+ if (adapter instanceof TelegramAdapter) {
154
+ adapter.setWebhookSecret(secret);
155
+ }
156
+ }
157
+ /**
158
+ * Setup Telegram webhook for receiving updates
159
+ */
160
+ async setupTelegramWebhook(webhookUrl) {
161
+ const adapter = this.adapters.get("telegram");
162
+ if (adapter instanceof TelegramAdapter) {
163
+ return await adapter.setupWebhook(webhookUrl);
164
+ }
165
+ return false;
166
+ }
167
+ /**
168
+ * Send notification with interactive Yes/No buttons
169
+ */
170
+ async notifyWithApproval(event, context, options) {
171
+ const approveLabel = options?.approveLabel ?? "Yes";
172
+ const rejectLabel = options?.rejectLabel ?? "No";
173
+ // Build buttons
174
+ const buttons = [
175
+ { text: `\u2705 ${approveLabel}`, callbackData: buildCallbackData(CallbackActions.APPROVE, context.jobId) },
176
+ { text: `\u274C ${rejectLabel}`, callbackData: buildCallbackData(CallbackActions.REJECT, context.jobId) },
177
+ ];
178
+ // Send to each channel with buttons (Telegram only)
179
+ const results = [];
180
+ for (const [id, adapter] of this.adapters.entries()) {
181
+ if (adapter instanceof TelegramAdapter) {
182
+ try {
183
+ const payload = this.buildPayload(event, context, {
184
+ enableInlineKeyboard: true,
185
+ actionButtons: buttons,
186
+ ...(options?.additionalDetails && { additionalDetails: options.additionalDetails }),
187
+ });
188
+ const result = await adapter.send(payload);
189
+ results.push(result);
190
+ }
191
+ catch (error) {
192
+ results.push({ success: false, channel: id, error: String(error) });
193
+ }
194
+ }
195
+ }
196
+ return results;
197
+ }
198
+ /**
199
+ * Send interactive notification with custom buttons
200
+ */
201
+ async notifyWithButtons(event, context, buttons, options) {
202
+ const results = [];
203
+ for (const [id, adapter] of this.adapters.entries()) {
204
+ if (adapter instanceof TelegramAdapter) {
205
+ try {
206
+ const formattedButtons = buttons.map((b) => ({
207
+ text: b.text,
208
+ callbackData: buildCallbackData(b.action, b.targetId),
209
+ url: b.url,
210
+ }));
211
+ const payload = this.buildPayload(event, context, {
212
+ enableInlineKeyboard: true,
213
+ actionButtons: formattedButtons,
214
+ ...(options?.additionalDetails && { additionalDetails: options.additionalDetails }),
215
+ });
216
+ const result = await adapter.send(payload);
217
+ results.push(result);
218
+ }
219
+ catch (error) {
220
+ results.push({ success: false, channel: id, error: String(error) });
221
+ }
222
+ }
223
+ }
224
+ return results;
225
+ }
128
226
  // --- Private Methods ------------------------------------------------
129
227
  createAdapter(config) {
130
228
  switch (config.type) {
@@ -142,7 +240,7 @@ export class NotificationCenter {
142
240
  return null;
143
241
  }
144
242
  }
145
- buildPayload(event, context) {
243
+ buildPayload(event, context, options) {
146
244
  const { title, message } = this.getEventContent(event, context);
147
245
  return {
148
246
  event,
@@ -156,6 +254,10 @@ export class NotificationCenter {
156
254
  ...(context.taskId && { taskId: context.taskId }),
157
255
  ...(context.taskTitle && { taskTitle: context.taskTitle }),
158
256
  ...(context.error && { error: context.error }),
257
+ // Pass inline keyboard options to Telegram adapter
258
+ ...(options?.enableInlineKeyboard && { _enableInlineKeyboard: true }),
259
+ ...(options?.actionButtons && { _actionButtons: options.actionButtons }),
260
+ ...(options?.additionalDetails && options.additionalDetails),
159
261
  },
160
262
  };
161
263
  }
@@ -1 +1 @@
1
- {"version":3,"file":"notification-center.js","sourceRoot":"","sources":["../src/notification-center.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"notification-center.js","sourceRoot":"","sources":["../src/notification-center.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,66 @@
1
+ /**
2
+ * Notification Policy Engine for intelligent routing
3
+ *
4
+ * Decides:
5
+ * 1. Should we notify at all?
6
+ * 2. What channel(s)?
7
+ * 3. Should we include approval buttons?
8
+ * 4. What's the priority level?
9
+ *
10
+ * Can be extended with Jev for AI-powered decisions:
11
+ * import { Jev } from "@type-safe/ai";
12
+ */
13
+ export interface NotificationContext {
14
+ event: string;
15
+ jobId?: string;
16
+ requirement?: string;
17
+ error?: string;
18
+ severity?: "low" | "medium" | "high" | "critical";
19
+ requiresApproval?: boolean;
20
+ userId?: number;
21
+ timestamp?: string;
22
+ }
23
+ export interface NotificationPolicy {
24
+ shouldNotify: boolean;
25
+ channels: ("telegram" | "tui" | "log")[];
26
+ includeButtons: boolean;
27
+ priority: "low" | "normal" | "high" | "urgent";
28
+ message?: string;
29
+ }
30
+ export interface UserPreferences {
31
+ telegramEnabled: boolean;
32
+ telegramChatId?: string;
33
+ telegramBotToken?: string;
34
+ tuiEnabled: boolean;
35
+ notifyOnError: boolean;
36
+ notifyOnCompletion: boolean;
37
+ notifyOnApprovalRequired: boolean;
38
+ }
39
+ /**
40
+ * Notification policy engine
41
+ */
42
+ export declare class NotificationPolicyEngine {
43
+ private preferences;
44
+ constructor(preferences?: Partial<UserPreferences>);
45
+ /**
46
+ * Update user preferences
47
+ */
48
+ updatePreferences(prefs: Partial<UserPreferences>): void;
49
+ /**
50
+ * Evaluate notification policy
51
+ */
52
+ evaluate(context: NotificationContext): NotificationPolicy;
53
+ /**
54
+ * Infer severity from event name
55
+ */
56
+ private inferSeverity;
57
+ }
58
+ /**
59
+ * Check if an event requires approval buttons
60
+ */
61
+ export declare function requiresApproval(event: string): boolean;
62
+ /**
63
+ * Check if an event is high priority
64
+ */
65
+ export declare function isHighPriority(event: string): boolean;
66
+ //# sourceMappingURL=notification-policy.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"notification-policy.d.ts","sourceRoot":"","sources":["../src/notification-policy.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,MAAM,WAAW,mBAAmB;IAClC,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,KAAK,GAAG,QAAQ,GAAG,MAAM,GAAG,UAAU,CAAC;IAClD,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAC3B,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,kBAAkB;IACjC,YAAY,EAAE,OAAO,CAAC;IACtB,QAAQ,EAAE,CAAC,UAAU,GAAG,KAAK,GAAG,KAAK,CAAC,EAAE,CAAC;IACzC,cAAc,EAAE,OAAO,CAAC;IACxB,QAAQ,EAAE,KAAK,GAAG,QAAQ,GAAG,MAAM,GAAG,QAAQ,CAAC;IAC/C,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,eAAe;IAC9B,eAAe,EAAE,OAAO,CAAC;IACzB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,UAAU,EAAE,OAAO,CAAC;IACpB,aAAa,EAAE,OAAO,CAAC;IACvB,kBAAkB,EAAE,OAAO,CAAC;IAC5B,wBAAwB,EAAE,OAAO,CAAC;CACnC;AAmCD;;GAEG;AACH,qBAAa,wBAAwB;IACnC,OAAO,CAAC,WAAW,CAAkB;IAErC,YAAY,WAAW,CAAC,EAAE,OAAO,CAAC,eAAe,CAAC,EAEjD;IAED;;OAEG;IACH,iBAAiB,CAAC,KAAK,EAAE,OAAO,CAAC,eAAe,CAAC,GAAG,IAAI,CAEvD;IAED;;OAEG;IACH,QAAQ,CAAC,OAAO,EAAE,mBAAmB,GAAG,kBAAkB,CA4EzD;IAED;;OAEG;IACH,OAAO,CAAC,aAAa;CAYtB;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAEvD;AAED;;GAEG;AACH,wBAAgB,cAAc,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAErD"}
@@ -0,0 +1,153 @@
1
+ /**
2
+ * Notification Policy Engine for intelligent routing
3
+ *
4
+ * Decides:
5
+ * 1. Should we notify at all?
6
+ * 2. What channel(s)?
7
+ * 3. Should we include approval buttons?
8
+ * 4. What's the priority level?
9
+ *
10
+ * Can be extended with Jev for AI-powered decisions:
11
+ * import { Jev } from "@type-safe/ai";
12
+ */
13
+ // Default preferences
14
+ const DEFAULT_PREFERENCES = {
15
+ telegramEnabled: false,
16
+ tuiEnabled: true,
17
+ notifyOnError: true,
18
+ notifyOnCompletion: false,
19
+ notifyOnApprovalRequired: true,
20
+ };
21
+ /**
22
+ * Events that require user approval
23
+ */
24
+ const APPROVAL_REQUIRED_EVENTS = new Set([
25
+ "HumanReviewNeeded",
26
+ "WaitingForUserInput",
27
+ "ApprovalRequired",
28
+ "ConfirmDeploy",
29
+ "ConfirmDelete",
30
+ "ConfirmCriticalAction",
31
+ ]);
32
+ /**
33
+ * High-priority events (always notify)
34
+ */
35
+ const HIGH_PRIORITY_EVENTS = new Set([
36
+ "QuotaExhausted",
37
+ "CriticalError",
38
+ "HumanReviewNeeded",
39
+ "WaitingForUserInput",
40
+ "JobFailed",
41
+ "SystemAlert",
42
+ ]);
43
+ /**
44
+ * Notification policy engine
45
+ */
46
+ export class NotificationPolicyEngine {
47
+ preferences;
48
+ constructor(preferences) {
49
+ this.preferences = { ...DEFAULT_PREFERENCES, ...preferences };
50
+ }
51
+ /**
52
+ * Update user preferences
53
+ */
54
+ updatePreferences(prefs) {
55
+ this.preferences = { ...this.preferences, ...prefs };
56
+ }
57
+ /**
58
+ * Evaluate notification policy
59
+ */
60
+ evaluate(context) {
61
+ const event = context.event;
62
+ const severity = context.severity || this.inferSeverity(event);
63
+ const needsApproval = APPROVAL_REQUIRED_EVENTS.has(event);
64
+ // Build channels
65
+ const channels = [];
66
+ if (this.preferences.telegramEnabled && this.preferences.telegramChatId) {
67
+ channels.push("telegram");
68
+ }
69
+ if (this.preferences.tuiEnabled) {
70
+ channels.push("tui");
71
+ }
72
+ // Decide based on event type and severity
73
+ let shouldNotify = false;
74
+ let includeButtons = false;
75
+ let priority = "normal";
76
+ switch (event) {
77
+ case "HumanReviewNeeded":
78
+ case "WaitingForUserInput":
79
+ case "ApprovalRequired":
80
+ shouldNotify = this.preferences.notifyOnApprovalRequired;
81
+ includeButtons = true;
82
+ priority = "high";
83
+ break;
84
+ case "CriticalError":
85
+ case "SystemAlert":
86
+ shouldNotify = true;
87
+ includeButtons = needsApproval;
88
+ priority = "urgent";
89
+ break;
90
+ case "QuotaExhausted":
91
+ shouldNotify = true;
92
+ includeButtons = false;
93
+ priority = "high";
94
+ break;
95
+ case "JobCompleted":
96
+ shouldNotify = this.preferences.notifyOnCompletion;
97
+ includeButtons = false;
98
+ priority = "low";
99
+ break;
100
+ case "Error":
101
+ case "JobFailed":
102
+ shouldNotify = this.preferences.notifyOnError;
103
+ includeButtons = needsApproval;
104
+ priority = severity === "high" || severity === "critical" ? "high" : "normal";
105
+ break;
106
+ default:
107
+ shouldNotify = severity === "high" || severity === "critical";
108
+ includeButtons = needsApproval;
109
+ priority = severity === "critical" ? "urgent" : severity === "high" ? "high" : "low";
110
+ }
111
+ // Always notify for high-priority events
112
+ if (HIGH_PRIORITY_EVENTS.has(event)) {
113
+ shouldNotify = true;
114
+ if (priority !== "urgent") {
115
+ priority = "high";
116
+ }
117
+ }
118
+ return {
119
+ shouldNotify,
120
+ channels: channels.length > 0 ? channels : ["log"],
121
+ includeButtons,
122
+ priority,
123
+ };
124
+ }
125
+ /**
126
+ * Infer severity from event name
127
+ */
128
+ inferSeverity(event) {
129
+ if (event.includes("Critical") || event.includes("Emergency")) {
130
+ return "critical";
131
+ }
132
+ if (event.includes("Error") || event.includes("Failed") || event.includes("Exhausted")) {
133
+ return "high";
134
+ }
135
+ if (event.includes("Warning") || event.includes("Alert")) {
136
+ return "medium";
137
+ }
138
+ return "low";
139
+ }
140
+ }
141
+ /**
142
+ * Check if an event requires approval buttons
143
+ */
144
+ export function requiresApproval(event) {
145
+ return APPROVAL_REQUIRED_EVENTS.has(event);
146
+ }
147
+ /**
148
+ * Check if an event is high priority
149
+ */
150
+ export function isHighPriority(event) {
151
+ return HIGH_PRIORITY_EVENTS.has(event);
152
+ }
153
+ //# sourceMappingURL=notification-policy.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"notification-policy.js","sourceRoot":"","sources":["../src/notification-policy.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,17 @@
1
+ /**
2
+ * Email Adapter — RFC-0022
3
+ *
4
+ * Sends notifications via SMTP.
5
+ */
6
+ import type { NotificationPayload, NotificationResult, EmailConfig } from "../types.js";
7
+ import { BaseChannelAdapter } from "../base-adapter.js";
8
+ export declare class EmailAdapter extends BaseChannelAdapter {
9
+ readonly id = "email";
10
+ readonly type = "email";
11
+ constructor(config: EmailConfig);
12
+ initialize(): Promise<boolean>;
13
+ send(payload: NotificationPayload): Promise<NotificationResult>;
14
+ private formatBody;
15
+ private getEmoji;
16
+ }
17
+ //# sourceMappingURL=email-adapter.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"email-adapter.d.ts","sourceRoot":"","sources":["../../../src/adapters/email-adapter.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EACX,mBAAmB,EACnB,kBAAkB,EAClB,WAAW,EACX,MAAM,aAAa,CAAC;AACrB,OAAO,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAC;AA0BxD,qBAAa,YAAa,SAAQ,kBAAkB;IACnD,QAAQ,CAAC,EAAE,WAAW;IACtB,QAAQ,CAAC,IAAI,WAAW;IAExB,YAAY,MAAM,EAAE,WAAW,EAE9B;IAEK,UAAU,IAAI,OAAO,CAAC,OAAO,CAAC,CAWnC;IAEK,IAAI,CAAC,OAAO,EAAE,mBAAmB,GAAG,OAAO,CAAC,kBAAkB,CAAC,CA0BpE;IAED,OAAO,CAAC,UAAU;IAsBlB,OAAO,CAAC,QAAQ;CAiBhB"}
@@ -0,0 +1,89 @@
1
+ /**
2
+ * Email Adapter — RFC-0022
3
+ *
4
+ * Sends notifications via SMTP.
5
+ */
6
+ import { BaseChannelAdapter } from "../base-adapter.js";
7
+ // Simple SMTP client using built-in net module
8
+ async function sendSmtpEmail(host, port, user, password, from, to, subject, body, tls = false) {
9
+ // For a production implementation, you'd use a proper SMTP library
10
+ // This is a placeholder that logs the email
11
+ console.log(`[Email] Would send to ${to.join(", ")}`);
12
+ console.log(`[Email] Subject: ${subject}`);
13
+ console.log(`[Email] Body: ${body}`);
14
+ // In practice, you'd use something like:
15
+ // import { createClient } from "nodemailer";
16
+ // const transporter = nodemailer.createTransport({ ... });
17
+ // await transporter.sendMail({ ... });
18
+ }
19
+ export class EmailAdapter extends BaseChannelAdapter {
20
+ id = "email";
21
+ type = "email";
22
+ constructor(config) {
23
+ super({ id: "email", type: "email", enabled: true, config });
24
+ }
25
+ async initialize() {
26
+ // Verify SMTP connection
27
+ try {
28
+ const cfg = this.config.config;
29
+ // In production, verify SMTP credentials
30
+ return Boolean(cfg.smtpHost && cfg.smtpUser && cfg.from && cfg.to.length > 0);
31
+ }
32
+ catch {
33
+ return false;
34
+ }
35
+ }
36
+ async send(payload) {
37
+ try {
38
+ const cfg = this.config.config;
39
+ const subject = `${this.getEmoji(payload.event)} ${payload.title}`;
40
+ const body = this.formatBody(payload);
41
+ await sendSmtpEmail(cfg.smtpHost, cfg.smtpPort, cfg.smtpUser, cfg.smtpPassword, cfg.from, cfg.to, subject, body, cfg.tls);
42
+ return { success: true, channel: this.id };
43
+ }
44
+ catch (error) {
45
+ return {
46
+ success: false,
47
+ channel: this.id,
48
+ error: String(error),
49
+ };
50
+ }
51
+ }
52
+ formatBody(payload) {
53
+ const lines = [
54
+ payload.message,
55
+ "",
56
+ "---",
57
+ `Event: ${payload.event}`,
58
+ `Time: ${payload.timestamp}`,
59
+ ];
60
+ if (payload.details?.taskTitle) {
61
+ lines.push(`Task: ${payload.details.taskTitle}`);
62
+ }
63
+ if (payload.details?.jobId) {
64
+ lines.push(`Job ID: ${payload.details.jobId}`);
65
+ }
66
+ if (payload.details?.error) {
67
+ lines.push("", `Error: ${payload.details.error}`);
68
+ }
69
+ return lines.join("\n");
70
+ }
71
+ getEmoji(event) {
72
+ const map = {
73
+ JobStarted: "[🚀]",
74
+ TaskCompleted: "[✅]",
75
+ TaskFailed: "[❌]",
76
+ QuotaPaused: "[⏸]",
77
+ ResumeScheduled: "[▶]",
78
+ ContextCompacted: "[📦]",
79
+ OutputLimitContinued: "[🔄]",
80
+ E2EFailed: "[🧪]",
81
+ HumanReviewNeeded: "[👤]",
82
+ ReadyForClient: "[🎉]",
83
+ JobCancelled: "[🚫]",
84
+ Error: "[⚠]",
85
+ };
86
+ return map[event] ?? "[📢]";
87
+ }
88
+ }
89
+ //# sourceMappingURL=email-adapter.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"email-adapter.js","sourceRoot":"","sources":["../../../src/adapters/email-adapter.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,17 @@
1
+ /**
2
+ * LINE Adapter — RFC-0022
3
+ *
4
+ * Sends notifications via LINE Messaging API.
5
+ */
6
+ import type { NotificationPayload, NotificationResult, LineConfig } from "../types.js";
7
+ import { BaseChannelAdapter } from "../base-adapter.js";
8
+ export declare class LineAdapter extends BaseChannelAdapter {
9
+ readonly id = "line";
10
+ readonly type = "line";
11
+ constructor(config: LineConfig);
12
+ initialize(): Promise<boolean>;
13
+ send(payload: NotificationPayload): Promise<NotificationResult>;
14
+ private formatMessage;
15
+ private getEmoji;
16
+ }
17
+ //# sourceMappingURL=line-adapter.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"line-adapter.d.ts","sourceRoot":"","sources":["../../../src/adapters/line-adapter.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EACX,mBAAmB,EACnB,kBAAkB,EAClB,UAAU,EACV,MAAM,aAAa,CAAC;AACrB,OAAO,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAC;AAExD,qBAAa,WAAY,SAAQ,kBAAkB;IAClD,QAAQ,CAAC,EAAE,UAAU;IACrB,QAAQ,CAAC,IAAI,UAAU;IAEvB,YAAY,MAAM,EAAE,UAAU,EAE7B;IAEK,UAAU,IAAI,OAAO,CAAC,OAAO,CAAC,CAgBnC;IAEK,IAAI,CAAC,OAAO,EAAE,mBAAmB,GAAG,OAAO,CAAC,kBAAkB,CAAC,CA0CpE;IAED,OAAO,CAAC,aAAa;IAkBrB,OAAO,CAAC,QAAQ;CAiBhB"}