pi-harness-runtime 1.1.256 → 1.1.258

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 (106) hide show
  1. package/index.ts +13 -4
  2. package/package.json +1 -1
  3. package/packages/a2a-adapter/package.json +1 -1
  4. package/packages/agent-policy/package.json +1 -1
  5. package/packages/architecture-generator/package.json +1 -1
  6. package/packages/auth/package.json +1 -1
  7. package/packages/autonomous-refactor/package.json +1 -1
  8. package/packages/autonomous-runtime/package.json +1 -1
  9. package/packages/cache-strategy/package.json +1 -1
  10. package/packages/capability-registry/package.json +1 -1
  11. package/packages/checkpoint/package.json +1 -1
  12. package/packages/cli-plugin-sdk/package.json +1 -1
  13. package/packages/clipboard/package.json +1 -1
  14. package/packages/clipboard-plugin/package.json +1 -1
  15. package/packages/code-generation/package.json +1 -1
  16. package/packages/code-review/package.json +1 -1
  17. package/packages/codex-adapter/package.json +1 -1
  18. package/packages/codex-watcher/package.json +1 -1
  19. package/packages/config-capture/package.json +1 -1
  20. package/packages/context-compiler/package.json +1 -1
  21. package/packages/context-discovery/package.json +1 -1
  22. package/packages/context-manager/package.json +1 -1
  23. package/packages/cookie-sanitizer/package.json +1 -1
  24. package/packages/cost-optimizer/package.json +1 -1
  25. package/packages/dependency-analyzer/package.json +1 -1
  26. package/packages/django-plugin/package.json +1 -1
  27. package/packages/doc-generator/package.json +1 -1
  28. package/packages/e2e-tester/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/package.json +1 -1
  36. package/packages/framework-detector/package.json +1 -1
  37. package/packages/framework-plugin-sdk/package.json +1 -1
  38. package/packages/frappe-plugin/package.json +1 -1
  39. package/packages/generic-web-plugin/package.json +1 -1
  40. package/packages/health-monitor/package.json +1 -1
  41. package/packages/intent-analyzer/package.json +1 -1
  42. package/packages/jev-judge/package.json +1 -1
  43. package/packages/knowledge-graph/package.json +1 -1
  44. package/packages/knowledge-retrieval/package.json +1 -1
  45. package/packages/laravel-plugin/package.json +1 -1
  46. package/packages/learning-engine/package.json +1 -1
  47. package/packages/mcp-adapter/package.json +1 -1
  48. package/packages/memory-engine/package.json +1 -1
  49. package/packages/milestone-manager/package.json +1 -1
  50. package/packages/model-registry/package.json +1 -1
  51. package/packages/nextjs-plugin/package.json +1 -1
  52. package/packages/notification/dist/adapters/telegram-adapter.d.ts +11 -0
  53. package/packages/notification/dist/adapters/telegram-adapter.d.ts.map +1 -1
  54. package/packages/notification/dist/adapters/telegram-adapter.js +89 -5
  55. package/packages/notification/dist/adapters/telegram-adapter.js.map +1 -1
  56. package/packages/notification/package.json +1 -1
  57. package/packages/notification/src/adapters/telegram-adapter.ts +81 -5
  58. package/packages/observability/package.json +1 -1
  59. package/packages/okf-indexer/package.json +1 -1
  60. package/packages/paperclip-integration/package.json +1 -1
  61. package/packages/performance-optimizer/package.json +1 -1
  62. package/packages/privilege-broker/package.json +1 -1
  63. package/packages/project-analyzer/package.json +1 -1
  64. package/packages/project-bootstrap/package.json +1 -1
  65. package/packages/projection-engine/package.json +1 -1
  66. package/packages/prompt-compiler/package.json +1 -1
  67. package/packages/prompt-versioning/package.json +1 -1
  68. package/packages/provider-adapter-sdk/package.json +1 -1
  69. package/packages/provider-router/package.json +1 -1
  70. package/packages/provider-selector/package.json +1 -1
  71. package/packages/providers/package.json +1 -1
  72. package/packages/qdrant-skills/package.json +1 -1
  73. package/packages/quota-manager/package.json +1 -1
  74. package/packages/rate-limiter/package.json +1 -1
  75. package/packages/react-vite-plugin/package.json +1 -1
  76. package/packages/release-manager/package.json +1 -1
  77. package/packages/requirement-compiler/package.json +1 -1
  78. package/packages/runtime/package.json +1 -1
  79. package/packages/scheduler/package.json +1 -1
  80. package/packages/scheduler-adapter/package.json +1 -1
  81. package/packages/session/package.json +1 -1
  82. package/packages/session-api/package.json +1 -1
  83. package/packages/session-export/package.json +1 -1
  84. package/packages/shared-context/package.json +1 -1
  85. package/packages/skill-mcp-client/package.json +1 -1
  86. package/packages/skill-registry/package.json +1 -1
  87. package/packages/skills/package.json +1 -1
  88. package/packages/sprint-planner/package.json +1 -1
  89. package/packages/subscription-engine/package.json +1 -1
  90. package/packages/task-compiler/package.json +1 -1
  91. package/packages/telegram/package.json +1 -1
  92. package/packages/tencentdb-memory/package.json +1 -1
  93. package/packages/tencentdb-sync/package.json +1 -1
  94. package/packages/test-data-generator/package.json +1 -1
  95. package/packages/test-generator/package.json +1 -1
  96. package/packages/todo-bd-sync/package.json +1 -1
  97. package/packages/token-estimation/package.json +1 -1
  98. package/packages/token-optimizer/package.json +1 -1
  99. package/packages/trajectory/package.json +1 -1
  100. package/packages/tui/package.json +1 -1
  101. package/packages/types/package.json +1 -1
  102. package/packages/webmcp-tester/package.json +1 -1
  103. package/packages/workflow-events/package.json +1 -1
  104. package/packages/workspace-scanner/package.json +1 -1
  105. package/packages/worktree/package.json +1 -1
  106. package/packages/write-review/package.json +1 -1
@@ -6,6 +6,7 @@
6
6
  /// <reference types="node" />
7
7
  import { existsSync, mkdirSync, writeFileSync } from "node:fs";
8
8
  import { join } from "node:path";
9
+ import { randomUUID } from "node:crypto";
9
10
  import { logError, logInfo, logWarn } from "../file-logger.js";
10
11
  import { BaseChannelAdapter } from "../base-adapter.js";
11
12
  import { maskString } from "../mask-secrets.js";
@@ -21,6 +22,19 @@ export class TelegramAdapter extends BaseChannelAdapter {
21
22
  _lastUpdateId = -1;
22
23
  _pollTimeoutMs = 30000; // Long polling timeout
23
24
  _pollLimit = 10;
25
+ _pollInFlight = false;
26
+ _pollAbort;
27
+ _greetingToken;
28
+ _greetingMessageId;
29
+ _greetingVerified = false;
30
+ _greetingReplyInFlight = false;
31
+ _greetingHandler;
32
+ setGreetingVerifiedHandler(handler) {
33
+ this._greetingHandler = handler;
34
+ }
35
+ isGreetingVerified() {
36
+ return this._greetingVerified;
37
+ }
24
38
  constructor(config) {
25
39
  super({ id: "telegram", type: "telegram", enabled: true, config });
26
40
  }
@@ -89,6 +103,7 @@ export class TelegramAdapter extends BaseChannelAdapter {
89
103
  * Stop polling
90
104
  */
91
105
  stopPolling() {
106
+ this._pollAbort?.abort();
92
107
  if (this._pollInterval) {
93
108
  clearInterval(this._pollInterval);
94
109
  this._pollInterval = undefined;
@@ -99,6 +114,11 @@ export class TelegramAdapter extends BaseChannelAdapter {
99
114
  * Poll for updates using getUpdates
100
115
  */
101
116
  async poll() {
117
+ if (this._pollInFlight)
118
+ return;
119
+ this._pollInFlight = true;
120
+ const abort = new AbortController();
121
+ this._pollAbort = abort;
102
122
  const cfg = this.config.config;
103
123
  const token = cfg.botToken;
104
124
  try {
@@ -112,7 +132,7 @@ export class TelegramAdapter extends BaseChannelAdapter {
112
132
  method: "POST",
113
133
  headers: { "Content-Type": "application/json" },
114
134
  body: JSON.stringify(body),
115
- signal: AbortSignal.timeout(this._pollTimeoutMs + 5000), // Extra 5s for network
135
+ signal: AbortSignal.any([abort.signal, AbortSignal.timeout(this._pollTimeoutMs + 5000)]),
116
136
  });
117
137
  if (!response.ok) {
118
138
  const error = await response.text();
@@ -124,17 +144,26 @@ export class TelegramAdapter extends BaseChannelAdapter {
124
144
  return;
125
145
  // Process updates
126
146
  for (const update of data.result) {
147
+ if (abort.signal.aborted)
148
+ break;
127
149
  await this.processUpdate(update);
128
150
  this._lastUpdateId = update.update_id;
129
151
  }
130
152
  }
131
153
  catch (err) {
154
+ if (abort.signal.aborted)
155
+ return;
132
156
  if (err instanceof Error && err.name === "TimeoutError") {
133
157
  // Timeout is expected for long polling, not an error
134
158
  return;
135
159
  }
136
160
  logError("[TelegramAdapter] Poll error", err);
137
161
  }
162
+ finally {
163
+ this._pollInFlight = false;
164
+ if (this._pollAbort === abort)
165
+ this._pollAbort = undefined;
166
+ }
138
167
  }
139
168
  /**
140
169
  * Process a single Telegram update
@@ -144,6 +173,8 @@ export class TelegramAdapter extends BaseChannelAdapter {
144
173
  // Handle callback query
145
174
  if (update.callback_query) {
146
175
  const query = update.callback_query;
176
+ if (String(query.message?.chat.id) !== String(cfg.chatId) || query.from?.is_bot)
177
+ return;
147
178
  logInfo("[TelegramAdapter]", `Callback query: ${query.data} from user ${query.from?.id}`);
148
179
  // Answer the callback query (dismiss loading indicator)
149
180
  try {
@@ -156,6 +187,8 @@ export class TelegramAdapter extends BaseChannelAdapter {
156
187
  catch (err) {
157
188
  logWarn("[TelegramAdapter]", "Failed to answer callback query:", err);
158
189
  }
190
+ if (await this.handleGreetingReply(query))
191
+ return;
159
192
  // Call the registered handler
160
193
  if (this._callbackHandler && query.data) {
161
194
  await this._callbackHandler(query.data, query);
@@ -167,7 +200,8 @@ export class TelegramAdapter extends BaseChannelAdapter {
167
200
  // Only forward text messages from non-bot users
168
201
  if (msg.text && (!msg.from || !msg.from.is_bot)) {
169
202
  const chatId = msg.chat?.id?.toString() || "";
170
- logInfo("[TelegramAdapter]", `Inbound message: "${msg.text.slice(0, 50)}..." from chat ${chatId}`);
203
+ if (chatId !== String(cfg.chatId))
204
+ return;
171
205
  await this._messageHandler(msg.text, chatId);
172
206
  }
173
207
  }
@@ -177,17 +211,25 @@ export class TelegramAdapter extends BaseChannelAdapter {
177
211
  */
178
212
  async sendStartupGreeting() {
179
213
  const cfg = this.config.config;
214
+ this._greetingToken = `hi:${randomUUID()}`;
215
+ this._greetingMessageId = undefined;
216
+ this._greetingVerified = false;
180
217
  try {
181
218
  const response = await fetch(`https://api.telegram.org/bot${cfg.botToken}/sendMessage`, {
182
219
  method: "POST",
183
220
  headers: { "Content-Type": "application/json" },
184
- body: JSON.stringify({ chat_id: cfg.chatId, text: "Hi" }),
221
+ body: JSON.stringify({
222
+ chat_id: cfg.chatId,
223
+ text: "Hi! Tap Say Hi back to test two-way communication.",
224
+ reply_markup: { inline_keyboard: [[{ text: "Say Hi back", callback_data: this._greetingToken }]] },
225
+ }),
185
226
  signal: AbortSignal.timeout(10000),
186
227
  });
187
228
  const data = await response.json();
188
229
  if (!response.ok || data.ok !== true || typeof data.result?.message_id !== "number") {
189
230
  return { success: false, channel: this.id, error: `Telegram greeting rejected (HTTP ${response.status})` };
190
231
  }
232
+ this._greetingMessageId = data.result.message_id;
191
233
  return { success: true, channel: this.id };
192
234
  }
193
235
  catch {
@@ -195,6 +237,44 @@ export class TelegramAdapter extends BaseChannelAdapter {
195
237
  return { success: false, channel: this.id, error: "Telegram greeting failed or timed out" };
196
238
  }
197
239
  }
240
+ /** A greeting callback is a transport check, not new agent work or approval. */
241
+ async handleGreetingReply(query) {
242
+ if (!query.data?.startsWith("hi:"))
243
+ return false;
244
+ const cfg = this.config.config;
245
+ if (query.data !== this._greetingToken || this._greetingMessageId === undefined ||
246
+ query.message?.message_id !== this._greetingMessageId ||
247
+ String(query.message?.chat.id) !== String(cfg.chatId) || query.from?.is_bot ||
248
+ (Number(cfg.chatId) > 0 && String(query.from?.id) !== String(cfg.chatId)) ||
249
+ this._greetingVerified || this._greetingReplyInFlight)
250
+ return true;
251
+ this._greetingReplyInFlight = true;
252
+ const token = this._greetingToken;
253
+ try {
254
+ const response = await fetch(`https://api.telegram.org/bot${cfg.botToken}/editMessageText`, {
255
+ method: "POST",
256
+ headers: { "Content-Type": "application/json" },
257
+ body: JSON.stringify({
258
+ chat_id: cfg.chatId, message_id: this._greetingMessageId,
259
+ text: "Hi back received! Two-way communication with pi-harness-runtime is verified.",
260
+ reply_markup: { inline_keyboard: [] },
261
+ }),
262
+ signal: AbortSignal.timeout(10000),
263
+ });
264
+ const data = await response.json();
265
+ if (response.ok && data.ok === true && token === this._greetingToken) {
266
+ this._greetingVerified = true;
267
+ this._greetingHandler?.();
268
+ }
269
+ }
270
+ catch {
271
+ logWarn("[TelegramAdapter]", "Hi reply acknowledgment failed; tap again to retry");
272
+ }
273
+ finally {
274
+ this._greetingReplyInFlight = false;
275
+ }
276
+ return true;
277
+ }
198
278
  /**
199
279
  * Send a message with optional inline keyboard buttons
200
280
  */
@@ -339,10 +419,14 @@ export class TelegramAdapter extends BaseChannelAdapter {
339
419
  }
340
420
  // Handle callback query (button click)
341
421
  const callbackQuery = update.callback_query;
342
- if (callbackQuery && this._callbackHandler) {
422
+ if (callbackQuery) {
343
423
  const query = this.parseCallbackQuery(callbackQuery);
344
424
  if (query) {
345
- await this._callbackHandler(query.data, query);
425
+ if (await this.handleGreetingReply(query)) {
426
+ await this.answerCallbackQuery(query.id);
427
+ return;
428
+ }
429
+ await this._callbackHandler?.(query.data, query);
346
430
  await this.answerCallbackQuery(query.id);
347
431
  }
348
432
  }
@@ -1 +1 @@
1
- {"version":3,"file":"telegram-adapter.js","sourceRoot":"","sources":["../../src/adapters/telegram-adapter.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"telegram-adapter.js","sourceRoot":"","sources":["../../src/adapters/telegram-adapter.ts"],"names":[],"mappings":"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"}
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@pi-harness/notification",
3
- "version": "1.1.256",
3
+ "version": "1.1.258",
4
4
  "description": "pi-harness-runtime — notification",
5
5
  "type": "module",
6
6
  "main": "./dist/index.js",
@@ -8,6 +8,7 @@
8
8
 
9
9
  import { existsSync, mkdirSync, writeFileSync } from "node:fs";
10
10
  import { join } from "node:path";
11
+ import { randomUUID } from "node:crypto";
11
12
  import { logError, logInfo, logWarn } from "../file-logger.js";
12
13
 
13
14
  import type {
@@ -50,6 +51,21 @@ private _pollInterval: ReturnType<typeof setInterval> | undefined;
50
51
  private _lastUpdateId: number = -1;
51
52
  private _pollTimeoutMs = 30000; // Long polling timeout
52
53
  private _pollLimit = 10;
54
+ private _pollInFlight = false;
55
+ private _pollAbort: AbortController | undefined;
56
+ private _greetingToken: string | undefined;
57
+ private _greetingMessageId: number | undefined;
58
+ private _greetingVerified = false;
59
+ private _greetingReplyInFlight = false;
60
+ private _greetingHandler: (() => void) | undefined;
61
+
62
+ setGreetingVerifiedHandler(handler: () => void): void {
63
+ this._greetingHandler = handler;
64
+ }
65
+
66
+ isGreetingVerified(): boolean {
67
+ return this._greetingVerified;
68
+ }
53
69
 
54
70
  constructor(config: TelegramConfig) {
55
71
  super({ id: "telegram", type: "telegram", enabled: true, config });
@@ -132,6 +148,7 @@ return this._botUsername;
132
148
  * Stop polling
133
149
  */
134
150
  stopPolling(): void {
151
+ this._pollAbort?.abort();
135
152
  if (this._pollInterval) {
136
153
  clearInterval(this._pollInterval);
137
154
  this._pollInterval = undefined;
@@ -143,6 +160,10 @@ return this._botUsername;
143
160
  * Poll for updates using getUpdates
144
161
  */
145
162
  private async poll(): Promise<void> {
163
+ if (this._pollInFlight) return;
164
+ this._pollInFlight = true;
165
+ const abort = new AbortController();
166
+ this._pollAbort = abort;
146
167
  const cfg = this.config.config as TelegramConfig;
147
168
  const token = cfg.botToken;
148
169
 
@@ -160,7 +181,7 @@ return this._botUsername;
160
181
  method: "POST",
161
182
  headers: { "Content-Type": "application/json" },
162
183
  body: JSON.stringify(body),
163
- signal: AbortSignal.timeout(this._pollTimeoutMs + 5000), // Extra 5s for network
184
+ signal: AbortSignal.any([abort.signal, AbortSignal.timeout(this._pollTimeoutMs + 5000)]),
164
185
  },
165
186
  );
166
187
 
@@ -179,15 +200,20 @@ return this._botUsername;
179
200
 
180
201
  // Process updates
181
202
  for (const update of data.result) {
203
+ if (abort.signal.aborted) break;
182
204
  await this.processUpdate(update);
183
205
  this._lastUpdateId = update.update_id;
184
206
  }
185
207
  } catch (err) {
208
+ if (abort.signal.aborted) return;
186
209
  if (err instanceof Error && err.name === "TimeoutError") {
187
210
  // Timeout is expected for long polling, not an error
188
211
  return;
189
212
  }
190
213
  logError("[TelegramAdapter] Poll error", err);
214
+ } finally {
215
+ this._pollInFlight = false;
216
+ if (this._pollAbort === abort) this._pollAbort = undefined;
191
217
  }
192
218
  }
193
219
 
@@ -200,6 +226,7 @@ return this._botUsername;
200
226
  // Handle callback query
201
227
  if (update.callback_query) {
202
228
  const query = update.callback_query;
229
+ if (String(query.message?.chat.id) !== String(cfg.chatId) || query.from?.is_bot) return;
203
230
  logInfo(
204
231
  "[TelegramAdapter]",
205
232
  `Callback query: ${query.data} from user ${query.from?.id}`,
@@ -219,6 +246,8 @@ return this._botUsername;
219
246
  logWarn("[TelegramAdapter]", "Failed to answer callback query:", err);
220
247
  }
221
248
 
249
+ if (await this.handleGreetingReply(query)) return;
250
+
222
251
  // Call the registered handler
223
252
  if (this._callbackHandler && query.data) {
224
253
  await this._callbackHandler(query.data, query);
@@ -231,7 +260,7 @@ return this._botUsername;
231
260
  // Only forward text messages from non-bot users
232
261
  if (msg.text && (!msg.from || !msg.from.is_bot)) {
233
262
  const chatId = msg.chat?.id?.toString() || "";
234
- logInfo("[TelegramAdapter]", `Inbound message: "${msg.text.slice(0, 50)}..." from chat ${chatId}`);
263
+ if (chatId !== String(cfg.chatId)) return;
235
264
  await this._messageHandler(msg.text, chatId);
236
265
  }
237
266
  }
@@ -242,17 +271,25 @@ return this._botUsername;
242
271
  */
243
272
  async sendStartupGreeting(): Promise<NotificationResult> {
244
273
  const cfg = this.config.config as TelegramConfig;
274
+ this._greetingToken = `hi:${randomUUID()}`;
275
+ this._greetingMessageId = undefined;
276
+ this._greetingVerified = false;
245
277
  try {
246
278
  const response = await fetch(`https://api.telegram.org/bot${cfg.botToken}/sendMessage`, {
247
279
  method: "POST",
248
280
  headers: { "Content-Type": "application/json" },
249
- body: JSON.stringify({ chat_id: cfg.chatId, text: "Hi" }),
281
+ body: JSON.stringify({
282
+ chat_id: cfg.chatId,
283
+ text: "Hi! Tap Say Hi back to test two-way communication.",
284
+ reply_markup: { inline_keyboard: [[{ text: "Say Hi back", callback_data: this._greetingToken }]] },
285
+ }),
250
286
  signal: AbortSignal.timeout(10000),
251
287
  });
252
288
  const data = await response.json() as { ok?: boolean; result?: { message_id?: number } };
253
289
  if (!response.ok || data.ok !== true || typeof data.result?.message_id !== "number") {
254
290
  return { success: false, channel: this.id, error: `Telegram greeting rejected (HTTP ${response.status})` };
255
291
  }
292
+ this._greetingMessageId = data.result.message_id;
256
293
  return { success: true, channel: this.id };
257
294
  } catch {
258
295
  // Network errors can contain the token-bearing URL. Never expose them.
@@ -260,6 +297,41 @@ return this._botUsername;
260
297
  }
261
298
  }
262
299
 
300
+ /** A greeting callback is a transport check, not new agent work or approval. */
301
+ private async handleGreetingReply(query: TelegramCallbackQuery): Promise<boolean> {
302
+ if (!query.data?.startsWith("hi:")) return false;
303
+ const cfg = this.config.config as TelegramConfig;
304
+ if (query.data !== this._greetingToken || this._greetingMessageId === undefined ||
305
+ query.message?.message_id !== this._greetingMessageId ||
306
+ String(query.message?.chat.id) !== String(cfg.chatId) || query.from?.is_bot ||
307
+ (Number(cfg.chatId) > 0 && String(query.from?.id) !== String(cfg.chatId)) ||
308
+ this._greetingVerified || this._greetingReplyInFlight) return true;
309
+ this._greetingReplyInFlight = true;
310
+ const token = this._greetingToken;
311
+ try {
312
+ const response = await fetch(`https://api.telegram.org/bot${cfg.botToken}/editMessageText`, {
313
+ method: "POST",
314
+ headers: { "Content-Type": "application/json" },
315
+ body: JSON.stringify({
316
+ chat_id: cfg.chatId, message_id: this._greetingMessageId,
317
+ text: "Hi back received! Two-way communication with pi-harness-runtime is verified.",
318
+ reply_markup: { inline_keyboard: [] },
319
+ }),
320
+ signal: AbortSignal.timeout(10000),
321
+ });
322
+ const data = await response.json() as { ok?: boolean };
323
+ if (response.ok && data.ok === true && token === this._greetingToken) {
324
+ this._greetingVerified = true;
325
+ this._greetingHandler?.();
326
+ }
327
+ } catch {
328
+ logWarn("[TelegramAdapter]", "Hi reply acknowledgment failed; tap again to retry");
329
+ } finally {
330
+ this._greetingReplyInFlight = false;
331
+ }
332
+ return true;
333
+ }
334
+
263
335
  /**
264
336
  * Send a message with optional inline keyboard buttons
265
337
  */
@@ -442,10 +514,14 @@ return this._botUsername;
442
514
 
443
515
  // Handle callback query (button click)
444
516
  const callbackQuery = update.callback_query as Record<string, unknown> | undefined;
445
- if (callbackQuery && this._callbackHandler) {
517
+ if (callbackQuery) {
446
518
  const query = this.parseCallbackQuery(callbackQuery);
447
519
  if (query) {
448
- await this._callbackHandler(query.data, query);
520
+ if (await this.handleGreetingReply(query)) {
521
+ await this.answerCallbackQuery(query.id);
522
+ return;
523
+ }
524
+ await this._callbackHandler?.(query.data, query);
449
525
  await this.answerCallbackQuery(query.id);
450
526
  }
451
527
  }
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@pi/observability",
3
- "version": "1.1.256",
3
+ "version": "1.1.258",
4
4
  "description": "Comprehensive observability system with structured logging, tracing, metrics, and alerting",
5
5
  "type": "module",
6
6
  "main": "./dist/index.js",
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@pi-harness/okf-indexer",
3
- "version": "1.1.256",
3
+ "version": "1.1.258",
4
4
  "description": "OKF document indexer for SKILL.md files (RFC-0106)",
5
5
  "type": "module",
6
6
  "main": "./dist/index.js",
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@pi-harness/paperclip-integration",
3
- "version": "1.1.256",
3
+ "version": "1.1.258",
4
4
  "description": "Paperclip API integration: poll agent inbox, route tasks to pi.dev, Telegram alerts",
5
5
  "type": "module",
6
6
  "main": "./dist/index.js",
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@pi-harness/performance-optimizer",
3
- "version": "1.1.256",
3
+ "version": "1.1.258",
4
4
  "description": "Performance optimization analyzer for pi-harness runtime (RFC-0056)",
5
5
  "type": "module",
6
6
  "main": "./dist/index.js",
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@pi/privilege-broker",
3
- "version": "1.1.256",
3
+ "version": "1.1.258",
4
4
  "description": "Privilege Broker — capability registry and command executor for autonomous runtime (RFC-0101 §7)",
5
5
  "type": "module",
6
6
  "main": "./dist/index.js",
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@pi/project-analyzer",
3
- "version": "1.1.256",
3
+ "version": "1.1.258",
4
4
  "description": "Project analysis system for pi-harness-runtime - detects frameworks, rules, and project structure",
5
5
  "type": "module",
6
6
  "main": "./dist/index.js",
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@pi-harness/project-bootstrap",
3
- "version": "1.1.256",
3
+ "version": "1.1.258",
4
4
  "description": "Project scaffolding from typed ProjectSpec",
5
5
  "type": "module",
6
6
  "main": "./dist/index.js",
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@pi/projection-engine",
3
- "version": "1.1.256",
3
+ "version": "1.1.258",
4
4
  "type": "module",
5
5
  "main": "src/index.ts",
6
6
  "exports": {
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@pi/prompt-compiler",
3
- "version": "1.1.256",
3
+ "version": "1.1.258",
4
4
  "description": "Deterministic prompt compiler for pi-harness-runtime",
5
5
  "type": "module",
6
6
  "main": "./dist/index.js",
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@pi/prompt-versioning",
3
- "version": "1.1.256",
3
+ "version": "1.1.258",
4
4
  "type": "module",
5
5
  "description": "Version control for prompts with rollback support (RFC-0019)",
6
6
  "main": "dist/index.js",
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@pi/provider-adapter-sdk",
3
- "version": "1.1.256",
3
+ "version": "1.1.258",
4
4
  "description": "SDK for building, testing, and registering AI provider adapters",
5
5
  "type": "module",
6
6
  "main": "./dist/index.js",
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@pi-harness/provider-router",
3
- "version": "1.1.256",
3
+ "version": "1.1.258",
4
4
  "description": "Enhanced Provider Router for pi-harness-runtime — intelligent routing with capabilities, costs, and quotas",
5
5
  "type": "module",
6
6
  "main": "./dist/provider-router.js",
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@pi-harness/provider-selector",
3
- "version": "1.1.256",
3
+ "version": "1.1.258",
4
4
  "description": "Multi-Provider Selector — route requests by cost, quality, and latency (RFC-0012)",
5
5
  "type": "module",
6
6
  "main": "./dist/index.js",
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@pi-harness/providers",
3
- "version": "1.1.256",
3
+ "version": "1.1.258",
4
4
  "description": "pi-harness-runtime — providers",
5
5
  "type": "module",
6
6
  "main": "./dist/index.js",
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@pi-harness/qdrant-skills",
3
- "version": "1.1.256",
3
+ "version": "1.1.258",
4
4
  "description": "Qdrant vector search integration for Hermes-style skill system",
5
5
  "type": "module",
6
6
  "main": "./dist/index.js",
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@pi-harness/quota-manager",
3
- "version": "1.1.256",
3
+ "version": "1.1.258",
4
4
  "description": "pi-harness-runtime — quota-manager",
5
5
  "type": "module",
6
6
  "main": "./dist/index.js",
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@pi/rate-limiter",
3
- "version": "1.1.256",
3
+ "version": "1.1.258",
4
4
  "type": "module",
5
5
  "description": "Rate limiting with token bucket algorithm (RFC-0023)",
6
6
  "main": "dist/index.js",
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@pi/react-vite-plugin",
3
- "version": "1.1.256",
3
+ "version": "1.1.258",
4
4
  "description": "React/Vite framework analysis — components, config, TypeScript setup",
5
5
  "type": "module",
6
6
  "main": "./dist/index.js",
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@pi/release-manager",
3
- "version": "1.1.256",
3
+ "version": "1.1.258",
4
4
  "type": "module",
5
5
  "description": "Release management for pi-harness",
6
6
  "main": "dist/index.js",