@llblab/pi-kit 0.29.1 → 0.30.0

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 (222) hide show
  1. package/BACKLOG.md +3 -1
  2. package/CHANGELOG.md +10 -0
  3. package/README.md +4 -4
  4. package/node_modules/@llblab/pi-state-flow/CHANGELOG.md +12 -0
  5. package/node_modules/@llblab/pi-state-flow/README.md +2 -2
  6. package/node_modules/@llblab/pi-state-flow/dist/lib/context.d.ts +2 -2
  7. package/node_modules/@llblab/pi-state-flow/dist/lib/context.js +17 -8
  8. package/node_modules/@llblab/pi-state-flow/dist/lib/extension.js +7 -3
  9. package/node_modules/@llblab/pi-state-flow/dist/lib/protocol.d.ts +2 -1
  10. package/node_modules/@llblab/pi-state-flow/dist/lib/protocol.js +3 -2
  11. package/node_modules/@llblab/pi-state-flow/dist/package.json +1 -1
  12. package/node_modules/@llblab/pi-state-flow/docs/architecture.md +3 -3
  13. package/node_modules/@llblab/pi-state-flow/docs/usage.md +3 -2
  14. package/node_modules/@llblab/pi-state-flow/lib/context.ts +17 -8
  15. package/node_modules/@llblab/pi-state-flow/lib/extension.ts +6 -3
  16. package/node_modules/@llblab/pi-state-flow/lib/protocol.ts +4 -2
  17. package/node_modules/@llblab/pi-state-flow/package.json +1 -1
  18. package/node_modules/@llblab/pi-telegram/AGENTS.md +13 -10
  19. package/node_modules/@llblab/pi-telegram/BACKLOG.md +1 -1
  20. package/node_modules/@llblab/pi-telegram/CHANGELOG.md +23 -0
  21. package/node_modules/@llblab/pi-telegram/README.md +10 -11
  22. package/node_modules/@llblab/pi-telegram/api/commands.ts +3 -0
  23. package/node_modules/@llblab/pi-telegram/dist/api/commands.d.ts +1 -1
  24. package/node_modules/@llblab/pi-telegram/dist/lib/activity-verbosity.d.ts +1 -5
  25. package/node_modules/@llblab/pi-telegram/dist/lib/activity-verbosity.js +15 -42
  26. package/node_modules/@llblab/pi-telegram/dist/lib/activity.d.ts +9 -0
  27. package/node_modules/@llblab/pi-telegram/dist/lib/activity.js +39 -10
  28. package/node_modules/@llblab/pi-telegram/dist/lib/agent-messages.js +7 -3
  29. package/node_modules/@llblab/pi-telegram/dist/lib/bindings.d.ts +43 -5
  30. package/node_modules/@llblab/pi-telegram/dist/lib/bindings.js +164 -20
  31. package/node_modules/@llblab/pi-telegram/dist/lib/bus-api.d.ts +12 -0
  32. package/node_modules/@llblab/pi-telegram/dist/lib/bus-api.js +181 -77
  33. package/node_modules/@llblab/pi-telegram/dist/lib/bus-follower.d.ts +111 -31
  34. package/node_modules/@llblab/pi-telegram/dist/lib/bus-follower.js +1324 -359
  35. package/node_modules/@llblab/pi-telegram/dist/lib/bus-leader.d.ts +41 -91
  36. package/node_modules/@llblab/pi-telegram/dist/lib/bus-leader.js +969 -637
  37. package/node_modules/@llblab/pi-telegram/dist/lib/bus-transport.js +16 -9
  38. package/node_modules/@llblab/pi-telegram/dist/lib/bus.d.ts +215 -18
  39. package/node_modules/@llblab/pi-telegram/dist/lib/bus.js +1048 -327
  40. package/node_modules/@llblab/pi-telegram/dist/lib/channel-posts.d.ts +5 -0
  41. package/node_modules/@llblab/pi-telegram/dist/lib/channel-posts.js +434 -261
  42. package/node_modules/@llblab/pi-telegram/dist/lib/command-templates.d.ts +26 -5
  43. package/node_modules/@llblab/pi-telegram/dist/lib/command-templates.js +92 -176
  44. package/node_modules/@llblab/pi-telegram/dist/lib/commands.d.ts +168 -82
  45. package/node_modules/@llblab/pi-telegram/dist/lib/commands.js +1409 -291
  46. package/node_modules/@llblab/pi-telegram/dist/lib/config.d.ts +1 -8
  47. package/node_modules/@llblab/pi-telegram/dist/lib/config.js +34 -76
  48. package/node_modules/@llblab/pi-telegram/dist/lib/delivery.d.ts +2 -2
  49. package/node_modules/@llblab/pi-telegram/dist/lib/delivery.js +16 -16
  50. package/node_modules/@llblab/pi-telegram/dist/lib/extension.js +642 -170
  51. package/node_modules/@llblab/pi-telegram/dist/lib/generative-app-worker.mjs +19 -7
  52. package/node_modules/@llblab/pi-telegram/dist/lib/generative-apps.d.ts +0 -5
  53. package/node_modules/@llblab/pi-telegram/dist/lib/generative-apps.js +61 -49
  54. package/node_modules/@llblab/pi-telegram/dist/lib/inbound.d.ts +5 -0
  55. package/node_modules/@llblab/pi-telegram/dist/lib/inbound.js +35 -59
  56. package/node_modules/@llblab/pi-telegram/dist/lib/journal.d.ts +40 -4
  57. package/node_modules/@llblab/pi-telegram/dist/lib/journal.js +2102 -760
  58. package/node_modules/@llblab/pi-telegram/dist/lib/lifecycle.d.ts +2 -6
  59. package/node_modules/@llblab/pi-telegram/dist/lib/lifecycle.js +75 -58
  60. package/node_modules/@llblab/pi-telegram/dist/lib/locks.d.ts +34 -3
  61. package/node_modules/@llblab/pi-telegram/dist/lib/locks.js +318 -119
  62. package/node_modules/@llblab/pi-telegram/dist/lib/logging.js +50 -14
  63. package/node_modules/@llblab/pi-telegram/dist/lib/media.d.ts +22 -1
  64. package/node_modules/@llblab/pi-telegram/dist/lib/media.js +46 -28
  65. package/node_modules/@llblab/pi-telegram/dist/lib/menu-model.d.ts +19 -5
  66. package/node_modules/@llblab/pi-telegram/dist/lib/menu-model.js +53 -11
  67. package/node_modules/@llblab/pi-telegram/dist/lib/menu-queue.d.ts +5 -4
  68. package/node_modules/@llblab/pi-telegram/dist/lib/menu-queue.js +45 -63
  69. package/node_modules/@llblab/pi-telegram/dist/lib/menu-settings.d.ts +5 -4
  70. package/node_modules/@llblab/pi-telegram/dist/lib/menu-settings.js +114 -78
  71. package/node_modules/@llblab/pi-telegram/dist/lib/menu-status.d.ts +1 -1
  72. package/node_modules/@llblab/pi-telegram/dist/lib/menu-status.js +8 -25
  73. package/node_modules/@llblab/pi-telegram/dist/lib/menu-thinking.d.ts +6 -1
  74. package/node_modules/@llblab/pi-telegram/dist/lib/menu-thinking.js +14 -21
  75. package/node_modules/@llblab/pi-telegram/dist/lib/menu.d.ts +8 -61
  76. package/node_modules/@llblab/pi-telegram/dist/lib/menu.js +92 -164
  77. package/node_modules/@llblab/pi-telegram/dist/lib/model.d.ts +1 -1
  78. package/node_modules/@llblab/pi-telegram/dist/lib/model.js +2 -16
  79. package/node_modules/@llblab/pi-telegram/dist/lib/outbound-attachments.d.ts +6 -27
  80. package/node_modules/@llblab/pi-telegram/dist/lib/outbound-attachments.js +45 -38
  81. package/node_modules/@llblab/pi-telegram/dist/lib/outbound-buttons.js +22 -16
  82. package/node_modules/@llblab/pi-telegram/dist/lib/outbound-markup.d.ts +0 -2
  83. package/node_modules/@llblab/pi-telegram/dist/lib/outbound-markup.js +51 -64
  84. package/node_modules/@llblab/pi-telegram/dist/lib/outbound-voice.js +6 -3
  85. package/node_modules/@llblab/pi-telegram/dist/lib/outbound.d.ts +6 -6
  86. package/node_modules/@llblab/pi-telegram/dist/lib/outbound.js +61 -51
  87. package/node_modules/@llblab/pi-telegram/dist/lib/ownership.js +6 -2
  88. package/node_modules/@llblab/pi-telegram/dist/lib/paths.d.ts +5 -0
  89. package/node_modules/@llblab/pi-telegram/dist/lib/paths.js +37 -21
  90. package/node_modules/@llblab/pi-telegram/dist/lib/pi.d.ts +2 -0
  91. package/node_modules/@llblab/pi-telegram/dist/lib/pi.js +8 -1
  92. package/node_modules/@llblab/pi-telegram/dist/lib/polling.d.ts +23 -37
  93. package/node_modules/@llblab/pi-telegram/dist/lib/polling.js +71 -52
  94. package/node_modules/@llblab/pi-telegram/dist/lib/preview.js +39 -19
  95. package/node_modules/@llblab/pi-telegram/dist/lib/process-identity.d.ts +24 -0
  96. package/node_modules/@llblab/pi-telegram/dist/lib/process-identity.js +133 -0
  97. package/node_modules/@llblab/pi-telegram/dist/lib/prompts.js +2 -7
  98. package/node_modules/@llblab/pi-telegram/dist/lib/queue.d.ts +16 -16
  99. package/node_modules/@llblab/pi-telegram/dist/lib/queue.js +261 -116
  100. package/node_modules/@llblab/pi-telegram/dist/lib/recovery.d.ts +2 -83
  101. package/node_modules/@llblab/pi-telegram/dist/lib/recovery.js +20 -274
  102. package/node_modules/@llblab/pi-telegram/dist/lib/replies.d.ts +16 -24
  103. package/node_modules/@llblab/pi-telegram/dist/lib/replies.js +99 -116
  104. package/node_modules/@llblab/pi-telegram/dist/lib/routing.d.ts +121 -7
  105. package/node_modules/@llblab/pi-telegram/dist/lib/routing.js +4750 -1161
  106. package/node_modules/@llblab/pi-telegram/dist/lib/runtime.d.ts +1 -11
  107. package/node_modules/@llblab/pi-telegram/dist/lib/sections.d.ts +4 -29
  108. package/node_modules/@llblab/pi-telegram/dist/lib/sections.js +7 -20
  109. package/node_modules/@llblab/pi-telegram/dist/lib/skills.js +4 -3
  110. package/node_modules/@llblab/pi-telegram/dist/lib/status.js +86 -57
  111. package/node_modules/@llblab/pi-telegram/dist/lib/sync.d.ts +6 -3
  112. package/node_modules/@llblab/pi-telegram/dist/lib/sync.js +112 -45
  113. package/node_modules/@llblab/pi-telegram/dist/lib/target.d.ts +4 -0
  114. package/node_modules/@llblab/pi-telegram/dist/lib/target.js +18 -0
  115. package/node_modules/@llblab/pi-telegram/dist/lib/telegram-api.d.ts +18 -11
  116. package/node_modules/@llblab/pi-telegram/dist/lib/telegram-api.js +165 -49
  117. package/node_modules/@llblab/pi-telegram/dist/lib/text-groups.js +4 -39
  118. package/node_modules/@llblab/pi-telegram/dist/lib/thread-cleanup-manager.d.ts +6 -27
  119. package/node_modules/@llblab/pi-telegram/dist/lib/thread-cleanup-manager.js +369 -186
  120. package/node_modules/@llblab/pi-telegram/dist/lib/thread-display.d.ts +1 -2
  121. package/node_modules/@llblab/pi-telegram/dist/lib/thread-display.js +58 -38
  122. package/node_modules/@llblab/pi-telegram/dist/lib/thread-naming.d.ts +28 -8
  123. package/node_modules/@llblab/pi-telegram/dist/lib/thread-naming.js +175 -66
  124. package/node_modules/@llblab/pi-telegram/dist/lib/thread-reconciler.d.ts +42 -16
  125. package/node_modules/@llblab/pi-telegram/dist/lib/thread-reconciler.js +90 -50
  126. package/node_modules/@llblab/pi-telegram/dist/lib/threads.d.ts +88 -24
  127. package/node_modules/@llblab/pi-telegram/dist/lib/threads.js +2276 -842
  128. package/node_modules/@llblab/pi-telegram/dist/lib/time-injection.js +1 -2
  129. package/node_modules/@llblab/pi-telegram/dist/lib/turns.js +1 -19
  130. package/node_modules/@llblab/pi-telegram/dist/lib/updates.d.ts +178 -82
  131. package/node_modules/@llblab/pi-telegram/dist/lib/updates.js +2438 -645
  132. package/node_modules/@llblab/pi-telegram/dist/lib/voice.d.ts +7 -22
  133. package/node_modules/@llblab/pi-telegram/dist/lib/voice.js +7 -22
  134. package/node_modules/@llblab/pi-telegram/dist/lib/wire.js +1 -1
  135. package/node_modules/@llblab/pi-telegram/dist/lib/workspace-admission.d.ts +3 -1
  136. package/node_modules/@llblab/pi-telegram/dist/lib/workspace-admission.js +425 -211
  137. package/node_modules/@llblab/pi-telegram/dist/lib/workspace-identity.js +8 -13
  138. package/node_modules/@llblab/pi-telegram/dist/lib/workspace-retirement.d.ts +1 -1
  139. package/node_modules/@llblab/pi-telegram/dist/lib/workspace-retirement.js +328 -140
  140. package/node_modules/@llblab/pi-telegram/dist/lib/workspace-slots.js +8 -4
  141. package/node_modules/@llblab/pi-telegram/dist/package.json +1 -1
  142. package/node_modules/@llblab/pi-telegram/docs/architecture.md +43 -35
  143. package/node_modules/@llblab/pi-telegram/docs/inbound.md +1 -1
  144. package/node_modules/@llblab/pi-telegram/docs/multi-instance-bus.md +15 -3
  145. package/node_modules/@llblab/pi-telegram/docs/outbound.md +1 -1
  146. package/node_modules/@llblab/pi-telegram/docs/public-api.md +29 -1
  147. package/node_modules/@llblab/pi-telegram/docs/ui-style.md +25 -8
  148. package/node_modules/@llblab/pi-telegram/lib/activity-verbosity.ts +59 -82
  149. package/node_modules/@llblab/pi-telegram/lib/activity.ts +146 -102
  150. package/node_modules/@llblab/pi-telegram/lib/agent-messages.ts +12 -5
  151. package/node_modules/@llblab/pi-telegram/lib/bindings.ts +390 -82
  152. package/node_modules/@llblab/pi-telegram/lib/bus-api.ts +262 -99
  153. package/node_modules/@llblab/pi-telegram/lib/bus-follower.ts +2440 -601
  154. package/node_modules/@llblab/pi-telegram/lib/bus-leader.ts +2209 -1290
  155. package/node_modules/@llblab/pi-telegram/lib/bus-transport.ts +46 -12
  156. package/node_modules/@llblab/pi-telegram/lib/bus.ts +1673 -444
  157. package/node_modules/@llblab/pi-telegram/lib/channel-posts.ts +848 -327
  158. package/node_modules/@llblab/pi-telegram/lib/command-templates.ts +152 -265
  159. package/node_modules/@llblab/pi-telegram/lib/commands.ts +2398 -555
  160. package/node_modules/@llblab/pi-telegram/lib/config.ts +177 -170
  161. package/node_modules/@llblab/pi-telegram/lib/delivery.ts +41 -29
  162. package/node_modules/@llblab/pi-telegram/lib/extension.ts +1209 -431
  163. package/node_modules/@llblab/pi-telegram/lib/generative-app-worker.mjs +19 -7
  164. package/node_modules/@llblab/pi-telegram/lib/generative-apps.ts +324 -211
  165. package/node_modules/@llblab/pi-telegram/lib/inbound.ts +95 -97
  166. package/node_modules/@llblab/pi-telegram/lib/journal.ts +5329 -1712
  167. package/node_modules/@llblab/pi-telegram/lib/keyboard.ts +1 -3
  168. package/node_modules/@llblab/pi-telegram/lib/lifecycle.ts +128 -78
  169. package/node_modules/@llblab/pi-telegram/lib/locks.ts +703 -212
  170. package/node_modules/@llblab/pi-telegram/lib/logging.ts +147 -58
  171. package/node_modules/@llblab/pi-telegram/lib/media.ts +82 -43
  172. package/node_modules/@llblab/pi-telegram/lib/menu-model.ts +85 -18
  173. package/node_modules/@llblab/pi-telegram/lib/menu-queue.ts +88 -129
  174. package/node_modules/@llblab/pi-telegram/lib/menu-settings.ts +260 -155
  175. package/node_modules/@llblab/pi-telegram/lib/menu-status.ts +20 -60
  176. package/node_modules/@llblab/pi-telegram/lib/menu-thinking.ts +41 -56
  177. package/node_modules/@llblab/pi-telegram/lib/menu.ts +112 -285
  178. package/node_modules/@llblab/pi-telegram/lib/model.ts +8 -22
  179. package/node_modules/@llblab/pi-telegram/lib/outbound-attachments.ts +156 -125
  180. package/node_modules/@llblab/pi-telegram/lib/outbound-buttons.ts +76 -49
  181. package/node_modules/@llblab/pi-telegram/lib/outbound-markup.ts +96 -94
  182. package/node_modules/@llblab/pi-telegram/lib/outbound-voice.ts +33 -27
  183. package/node_modules/@llblab/pi-telegram/lib/outbound.ts +125 -125
  184. package/node_modules/@llblab/pi-telegram/lib/ownership.ts +19 -10
  185. package/node_modules/@llblab/pi-telegram/lib/paths.ts +148 -49
  186. package/node_modules/@llblab/pi-telegram/lib/pi.ts +35 -15
  187. package/node_modules/@llblab/pi-telegram/lib/polling.ts +165 -149
  188. package/node_modules/@llblab/pi-telegram/lib/preview.ts +93 -40
  189. package/node_modules/@llblab/pi-telegram/lib/process-identity.ts +164 -0
  190. package/node_modules/@llblab/pi-telegram/lib/prompts.ts +4 -11
  191. package/node_modules/@llblab/pi-telegram/lib/queue.ts +523 -289
  192. package/node_modules/@llblab/pi-telegram/lib/recovery.ts +50 -454
  193. package/node_modules/@llblab/pi-telegram/lib/rendering.ts +1 -3
  194. package/node_modules/@llblab/pi-telegram/lib/replies.ts +248 -209
  195. package/node_modules/@llblab/pi-telegram/lib/routing.ts +8527 -2149
  196. package/node_modules/@llblab/pi-telegram/lib/runtime.ts +1 -12
  197. package/node_modules/@llblab/pi-telegram/lib/sections.ts +24 -89
  198. package/node_modules/@llblab/pi-telegram/lib/setup.ts +1 -3
  199. package/node_modules/@llblab/pi-telegram/lib/skills.ts +9 -4
  200. package/node_modules/@llblab/pi-telegram/lib/status.ts +215 -110
  201. package/node_modules/@llblab/pi-telegram/lib/sync.ts +488 -359
  202. package/node_modules/@llblab/pi-telegram/lib/target.ts +22 -3
  203. package/node_modules/@llblab/pi-telegram/lib/telegram-api.ts +322 -122
  204. package/node_modules/@llblab/pi-telegram/lib/text-groups.ts +5 -39
  205. package/node_modules/@llblab/pi-telegram/lib/thread-cleanup-manager.ts +833 -331
  206. package/node_modules/@llblab/pi-telegram/lib/thread-display.ts +213 -97
  207. package/node_modules/@llblab/pi-telegram/lib/thread-naming.ts +232 -87
  208. package/node_modules/@llblab/pi-telegram/lib/thread-reconciler.ts +155 -72
  209. package/node_modules/@llblab/pi-telegram/lib/threads.ts +5329 -1817
  210. package/node_modules/@llblab/pi-telegram/lib/time-injection.ts +1 -4
  211. package/node_modules/@llblab/pi-telegram/lib/turns.ts +15 -28
  212. package/node_modules/@llblab/pi-telegram/lib/updates.ts +5194 -1600
  213. package/node_modules/@llblab/pi-telegram/lib/voice.ts +7 -35
  214. package/node_modules/@llblab/pi-telegram/lib/wire.ts +1 -1
  215. package/node_modules/@llblab/pi-telegram/lib/workspace-admission.ts +996 -416
  216. package/node_modules/@llblab/pi-telegram/lib/workspace-identity.ts +14 -17
  217. package/node_modules/@llblab/pi-telegram/lib/workspace-retirement.ts +878 -376
  218. package/node_modules/@llblab/pi-telegram/lib/workspace-slots.ts +22 -13
  219. package/node_modules/@llblab/pi-telegram/package.json +1 -1
  220. package/package.json +3 -3
  221. package/node_modules/@llblab/pi-telegram/scripts/check-downgrade.mjs +0 -472
  222. package/node_modules/@llblab/pi-telegram/scripts/measure-workspace.mjs +0 -108
@@ -558,19 +558,8 @@ export interface TelegramPromptDispatchLifecycleDeps<
558
558
 
559
559
  export interface TelegramPromptDispatchRuntimeDeps<
560
560
  TContext,
561
- > extends TelegramRuntimeEventRecorderPort {
561
+ > extends TelegramTypingLoopStarterDeps<TContext> {
562
562
  lifecycle: TelegramPromptDispatchLifecycleDeps<TContext>["lifecycle"];
563
- typing: TelegramRuntimeTypingPort;
564
- getDefaultChatId: () => number | undefined;
565
- sendTypingAction: (
566
- chatId: number,
567
- options?: { message_thread_id?: number },
568
- ) => Promise<unknown>;
569
- updateStatus: (ctx: TContext, error?: string) => void;
570
- isContextActive?: (ctx: TContext) => boolean;
571
- isTransportAvailable?: () => boolean;
572
- getTransportAuthority?: () => string | number | undefined;
573
- intervalMs?: number;
574
563
  }
575
564
 
576
565
  export interface TelegramPromptDispatchRuntime<TContext> {
@@ -12,8 +12,6 @@ import type { TelegramInputRichMessage } from "./telegram-api.ts";
12
12
 
13
13
  const SECTION_REGISTRY_KEY = "__piTelegramSectionRegistry__";
14
14
 
15
- // --- Core Types ---
16
-
17
15
  /** @internal */
18
16
  export type TelegramSectionId = string;
19
17
 
@@ -74,20 +72,9 @@ export interface TelegramSectionContext {
74
72
  deleteMessage(): Promise<void>;
75
73
  }
76
74
 
77
- export interface TelegramSectionCallbackContext {
78
- sectionId: string;
79
- chatId: number;
80
- messageId?: number;
75
+ export interface TelegramSectionCallbackContext extends TelegramSectionContext {
81
76
  action: string;
82
77
  payload: string;
83
- answerCallback(text?: string): Promise<void>;
84
- edit(view: TelegramSectionView): Promise<void>;
85
- open(view: TelegramSectionView): Promise<void>;
86
- openRich(message: TelegramInputRichMessage): Promise<void>;
87
- enqueuePrompt(prompt: string): Promise<void>;
88
- callbackData(action: string, payload?: string): string;
89
- /** Delete the message that triggered this callback (dialog cleanup) */
90
- deleteMessage(): Promise<void>;
91
78
  }
92
79
 
93
80
  /** @internal */
@@ -211,11 +198,13 @@ function buildTelegramSectionContext(
211
198
  )
212
199
  .then(() => {}),
213
200
  openRich: (message) =>
214
- deps.sendRichMessage(
215
- chatId,
216
- message,
217
- deps.target ? { target: deps.target } : undefined,
218
- ).then(() => {}),
201
+ deps
202
+ .sendRichMessage(
203
+ chatId,
204
+ message,
205
+ deps.target ? { target: deps.target } : undefined,
206
+ )
207
+ .then(() => {}),
219
208
  enqueuePrompt: deps.enqueuePrompt,
220
209
  callbackData: (action, payload) =>
221
210
  buildTelegramSectionCallbackData(token, action, payload),
@@ -239,45 +228,18 @@ function buildTelegramSectionCallbackContext(
239
228
  backLabel = "⬆️ Back",
240
229
  ): TelegramSectionCallbackContext {
241
230
  return {
242
- sectionId,
243
- chatId,
244
- messageId,
231
+ ...buildTelegramSectionContext(
232
+ sectionId,
233
+ token,
234
+ chatId,
235
+ messageId,
236
+ callbackQueryId,
237
+ deps,
238
+ backCallback,
239
+ backLabel,
240
+ ),
245
241
  action,
246
242
  payload,
247
- answerCallback: (text) => deps.answerCallbackQuery(callbackQueryId, text),
248
- edit: (view) =>
249
- messageId !== undefined
250
- ? deps.editInteractiveMessage(
251
- chatId,
252
- messageId,
253
- view.text,
254
- view.parseMode ?? "html",
255
- prependBackRow(view.replyMarkup, backCallback, backLabel),
256
- )
257
- : Promise.resolve(),
258
- open: (view) =>
259
- deps
260
- .sendInteractiveMessage(
261
- chatId,
262
- view.text,
263
- view.parseMode ?? "html",
264
- view.replyMarkup ?? { inline_keyboard: [] },
265
- deps.target ? { target: deps.target } : undefined,
266
- )
267
- .then(() => {}),
268
- openRich: (message) =>
269
- deps.sendRichMessage(
270
- chatId,
271
- message,
272
- deps.target ? { target: deps.target } : undefined,
273
- ).then(() => {}),
274
- enqueuePrompt: deps.enqueuePrompt,
275
- callbackData: (action, payload) =>
276
- buildTelegramSectionCallbackData(token, action, payload),
277
- deleteMessage: () =>
278
- messageId !== undefined
279
- ? deps.deleteMessage(chatId, messageId)
280
- : Promise.resolve(),
281
243
  };
282
244
  }
283
245
 
@@ -528,46 +490,19 @@ export function parseTelegramSectionCallback(
528
490
  };
529
491
  }
530
492
 
531
- /** @internal */
532
- export interface TelegramSectionCallbackHandlerDeps {
533
- answerCallbackQuery: (id: string, text?: string) => Promise<void>;
534
- target?: TelegramSectionTarget;
535
- editInteractiveMessage: (
536
- chatId: number,
537
- messageId: number,
538
- text: string,
539
- mode: "markdown" | "html" | "plain",
540
- replyMarkup: TelegramInlineKeyboardMarkup,
541
- ) => Promise<void>;
542
- sendInteractiveMessage: (
543
- chatId: number,
544
- text: string,
545
- mode: "markdown" | "html" | "plain",
546
- replyMarkup: TelegramInlineKeyboardMarkup,
547
- options?: { target?: TelegramSectionTarget },
548
- ) => Promise<number | undefined>;
549
- sendRichMessage: (
550
- chatId: number,
551
- message: TelegramInputRichMessage,
552
- options?: { target?: TelegramSectionTarget },
553
- ) => Promise<number | undefined>;
554
- enqueuePrompt: (prompt: string) => Promise<void>;
555
- deleteMessage: (chatId: number, messageId: number) => Promise<void>;
556
- }
557
-
558
493
  export async function handleTelegramSectionOpen(
559
494
  registry: TelegramSectionRegistry,
560
495
  token: TelegramSectionToken,
561
496
  chatId: number,
562
497
  messageId: number,
563
498
  callbackQueryId: string,
564
- deps: TelegramSectionCallbackHandlerDeps,
499
+ deps: TelegramSectionRuntimeDeps,
565
500
  ): Promise<boolean> {
566
501
  const section = registry.getByToken(token);
567
502
  if (!section) {
568
503
  await deps.answerCallbackQuery(
569
504
  callbackQueryId,
570
- "This section is no longer available.",
505
+ "This section is no longer available",
571
506
  );
572
507
  return true;
573
508
  }
@@ -618,13 +553,13 @@ export async function handleTelegramSectionCallback(
618
553
  chatId: number,
619
554
  messageId: number,
620
555
  callbackQueryId: string,
621
- deps: TelegramSectionCallbackHandlerDeps,
556
+ deps: TelegramSectionRuntimeDeps,
622
557
  ): Promise<boolean> {
623
558
  const section = registry.getByToken(token);
624
559
  if (!section) {
625
560
  await deps.answerCallbackQuery(
626
561
  callbackQueryId,
627
- "This section is no longer available.",
562
+ "This section is no longer available",
628
563
  );
629
564
  return true;
630
565
  }
@@ -687,13 +622,13 @@ export async function handleTelegramSectionSettingsOpen(
687
622
  chatId: number,
688
623
  messageId: number,
689
624
  callbackQueryId: string,
690
- deps: TelegramSectionCallbackHandlerDeps,
625
+ deps: TelegramSectionRuntimeDeps,
691
626
  ): Promise<boolean> {
692
627
  const section = registry.getByToken(token);
693
628
  if (!section || !section.registration.settings) {
694
629
  await deps.answerCallbackQuery(
695
630
  callbackQueryId,
696
- "This section is no longer available.",
631
+ "This section is no longer available",
697
632
  );
698
633
  return true;
699
634
  }
@@ -105,9 +105,7 @@ function resolveSubmittedTelegramBotToken(value: string): string | undefined {
105
105
  return trimmed;
106
106
  }
107
107
 
108
- function describeSubmittedTelegramBotToken(
109
- value: string,
110
- ): string | undefined {
108
+ function describeSubmittedTelegramBotToken(value: string): string | undefined {
111
109
  return value.trim().startsWith("$")
112
110
  ? "Telegram bot token environment reference is unavailable in this setup environment."
113
111
  : undefined;
@@ -8,8 +8,8 @@ import { existsSync } from "node:fs";
8
8
  import { basename, dirname, join, resolve } from "node:path";
9
9
  import { fileURLToPath } from "node:url";
10
10
 
11
- import type { ExtensionAPI } from "./pi.ts";
12
11
  import { resolveAgentDir } from "./paths.ts";
12
+ import type { ExtensionAPI } from "./pi.ts";
13
13
 
14
14
  const TELEGRAM_SKILLS_MODULE_PATH = fileURLToPath(import.meta.url);
15
15
 
@@ -18,7 +18,10 @@ export function getTelegramExtensionPackageRoot(modulePath: string): string {
18
18
  while (true) {
19
19
  if (existsSync(join(current, "package.json"))) {
20
20
  const parent = dirname(current);
21
- if (basename(current) === "dist" && existsSync(join(parent, "package.json"))) {
21
+ if (
22
+ basename(current) === "dist" &&
23
+ existsSync(join(parent, "package.json"))
24
+ ) {
22
25
  return parent;
23
26
  }
24
27
  return current;
@@ -41,8 +44,10 @@ export function isRawTelegramExtensionCheckout(
41
44
  const packageRoot = resolve(getTelegramExtensionPackageRoot(modulePath));
42
45
  const agentDir = resolve(options.agentDir ?? resolveAgentDir());
43
46
  const cwd = resolve(options.cwd ?? process.cwd());
44
- return dirname(packageRoot) === join(agentDir, "extensions") ||
45
- dirname(packageRoot) === join(cwd, ".pi", "extensions");
47
+ return (
48
+ dirname(packageRoot) === join(agentDir, "extensions") ||
49
+ dirname(packageRoot) === join(cwd, ".pi", "extensions")
50
+ );
46
51
  }
47
52
 
48
53
  export const TELEGRAM_SKILLS_PATH = join(