@llblab/pi-telegram 0.46.0 → 0.47.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 (199) hide show
  1. package/BACKLOG.md +0 -1
  2. package/CHANGELOG.md +8 -0
  3. package/README.md +2 -2
  4. package/dist/api/activity.d.ts +6 -0
  5. package/dist/api/activity.js +6 -0
  6. package/dist/api/commands.d.ts +6 -0
  7. package/dist/api/commands.js +6 -0
  8. package/dist/api/delivery.d.ts +6 -0
  9. package/dist/api/delivery.js +6 -0
  10. package/dist/api/inbound.d.ts +6 -0
  11. package/dist/api/inbound.js +6 -0
  12. package/dist/api/keyboard.d.ts +6 -0
  13. package/dist/api/keyboard.js +6 -0
  14. package/dist/api/outbound.d.ts +6 -0
  15. package/dist/api/outbound.js +6 -0
  16. package/dist/api/sections.d.ts +7 -0
  17. package/dist/api/sections.js +6 -0
  18. package/dist/api/status.d.ts +6 -0
  19. package/dist/api/status.js +6 -0
  20. package/dist/api/updates.d.ts +6 -0
  21. package/dist/api/updates.js +6 -0
  22. package/dist/api/voice.d.ts +6 -0
  23. package/dist/api/voice.js +6 -0
  24. package/dist/index.d.ts +6 -0
  25. package/dist/index.js +6 -0
  26. package/dist/lib/activity-verbosity.d.ts +52 -0
  27. package/dist/lib/activity-verbosity.js +596 -0
  28. package/dist/lib/activity.d.ts +220 -0
  29. package/dist/lib/activity.js +574 -0
  30. package/dist/lib/agent-messages.d.ts +28 -0
  31. package/dist/lib/agent-messages.js +86 -0
  32. package/dist/lib/bindings.d.ts +250 -0
  33. package/dist/lib/bindings.js +936 -0
  34. package/dist/lib/bus-api.d.ts +18 -0
  35. package/dist/lib/bus-api.js +254 -0
  36. package/dist/lib/bus-follower.d.ts +464 -0
  37. package/dist/lib/bus-follower.js +1686 -0
  38. package/dist/lib/bus-leader.d.ts +292 -0
  39. package/dist/lib/bus-leader.js +2242 -0
  40. package/dist/lib/bus-transport.d.ts +64 -0
  41. package/dist/lib/bus-transport.js +140 -0
  42. package/dist/lib/bus.d.ts +518 -0
  43. package/dist/lib/bus.js +2055 -0
  44. package/dist/lib/channel-posts.d.ts +170 -0
  45. package/dist/lib/channel-posts.js +611 -0
  46. package/dist/lib/command-templates.d.ts +70 -0
  47. package/dist/lib/command-templates.js +744 -0
  48. package/dist/lib/commands.d.ts +541 -0
  49. package/dist/lib/commands.js +1155 -0
  50. package/dist/lib/config.d.ts +252 -0
  51. package/dist/lib/config.js +889 -0
  52. package/dist/lib/delivery.d.ts +163 -0
  53. package/dist/lib/delivery.js +542 -0
  54. package/dist/lib/extension.d.ts +7 -0
  55. package/dist/lib/extension.js +1608 -0
  56. package/dist/lib/generative-app-worker.mjs +104 -0
  57. package/dist/lib/generative-apps.d.ts +212 -0
  58. package/dist/lib/generative-apps.js +1006 -0
  59. package/dist/lib/inbound.d.ts +91 -0
  60. package/dist/lib/inbound.js +502 -0
  61. package/dist/lib/journal.d.ts +665 -0
  62. package/dist/lib/journal.js +3701 -0
  63. package/dist/lib/keyboard.d.ts +23 -0
  64. package/dist/lib/keyboard.js +37 -0
  65. package/dist/lib/lifecycle.d.ts +157 -0
  66. package/dist/lib/lifecycle.js +395 -0
  67. package/dist/lib/locks.d.ts +164 -0
  68. package/dist/lib/locks.js +1208 -0
  69. package/dist/lib/logging.d.ts +50 -0
  70. package/dist/lib/logging.js +274 -0
  71. package/dist/lib/media.d.ts +181 -0
  72. package/dist/lib/media.js +602 -0
  73. package/dist/lib/menu-model.d.ts +217 -0
  74. package/dist/lib/menu-model.js +663 -0
  75. package/dist/lib/menu-queue.d.ts +37 -0
  76. package/dist/lib/menu-queue.js +408 -0
  77. package/dist/lib/menu-settings.d.ts +116 -0
  78. package/dist/lib/menu-settings.js +595 -0
  79. package/dist/lib/menu-status.d.ts +32 -0
  80. package/dist/lib/menu-status.js +112 -0
  81. package/dist/lib/menu-thinking.d.ts +29 -0
  82. package/dist/lib/menu-thinking.js +82 -0
  83. package/dist/lib/menu.d.ts +171 -0
  84. package/dist/lib/menu.js +323 -0
  85. package/dist/lib/model.d.ts +127 -0
  86. package/dist/lib/model.js +409 -0
  87. package/dist/lib/outbound-attachments.d.ts +241 -0
  88. package/dist/lib/outbound-attachments.js +639 -0
  89. package/dist/lib/outbound-buttons.d.ts +69 -0
  90. package/dist/lib/outbound-buttons.js +248 -0
  91. package/dist/lib/outbound-markup.d.ts +42 -0
  92. package/dist/lib/outbound-markup.js +678 -0
  93. package/dist/lib/outbound-voice.d.ts +55 -0
  94. package/dist/lib/outbound-voice.js +152 -0
  95. package/dist/lib/outbound.d.ts +185 -0
  96. package/dist/lib/outbound.js +516 -0
  97. package/dist/lib/ownership.d.ts +77 -0
  98. package/dist/lib/ownership.js +174 -0
  99. package/dist/lib/paths.d.ts +40 -0
  100. package/dist/lib/paths.js +94 -0
  101. package/dist/lib/pi.d.ts +72 -0
  102. package/dist/lib/pi.js +121 -0
  103. package/dist/lib/polling.d.ts +351 -0
  104. package/dist/lib/polling.js +1196 -0
  105. package/dist/lib/preview.d.ts +192 -0
  106. package/dist/lib/preview.js +614 -0
  107. package/dist/lib/prompt-templates.d.ts +24 -0
  108. package/dist/lib/prompt-templates.js +118 -0
  109. package/dist/lib/prompts.d.ts +57 -0
  110. package/dist/lib/prompts.js +167 -0
  111. package/dist/lib/queue.d.ts +766 -0
  112. package/dist/lib/queue.js +1965 -0
  113. package/dist/lib/recovery.d.ts +86 -0
  114. package/dist/lib/recovery.js +285 -0
  115. package/dist/lib/rendering.d.ts +20 -0
  116. package/dist/lib/rendering.js +983 -0
  117. package/dist/lib/replies.d.ts +214 -0
  118. package/dist/lib/replies.js +737 -0
  119. package/dist/lib/routing.d.ts +207 -0
  120. package/dist/lib/routing.js +2282 -0
  121. package/dist/lib/runtime.d.ts +172 -0
  122. package/dist/lib/runtime.js +402 -0
  123. package/dist/lib/sections.d.ts +165 -0
  124. package/dist/lib/sections.js +327 -0
  125. package/dist/lib/setup.d.ts +82 -0
  126. package/dist/lib/setup.js +150 -0
  127. package/dist/lib/skills.d.ts +8 -0
  128. package/dist/lib/skills.js +12 -0
  129. package/dist/lib/status.d.ts +442 -0
  130. package/dist/lib/status.js +1006 -0
  131. package/dist/lib/sync.d.ts +179 -0
  132. package/dist/lib/sync.js +782 -0
  133. package/dist/lib/target.d.ts +20 -0
  134. package/dist/lib/target.js +27 -0
  135. package/dist/lib/telegram-api.d.ts +541 -0
  136. package/dist/lib/telegram-api.js +1159 -0
  137. package/dist/lib/text-groups.d.ts +89 -0
  138. package/dist/lib/text-groups.js +317 -0
  139. package/dist/lib/thread-cleanup-manager.d.ts +288 -0
  140. package/dist/lib/thread-cleanup-manager.js +560 -0
  141. package/dist/lib/thread-display.d.ts +46 -0
  142. package/dist/lib/thread-display.js +257 -0
  143. package/dist/lib/thread-naming.d.ts +46 -0
  144. package/dist/lib/thread-naming.js +78 -0
  145. package/dist/lib/thread-reconciler.d.ts +239 -0
  146. package/dist/lib/thread-reconciler.js +644 -0
  147. package/dist/lib/threads.d.ts +621 -0
  148. package/dist/lib/threads.js +3679 -0
  149. package/dist/lib/time-injection.d.ts +15 -0
  150. package/dist/lib/time-injection.js +56 -0
  151. package/dist/lib/turns.d.ts +109 -0
  152. package/dist/lib/turns.js +500 -0
  153. package/dist/lib/updates.d.ts +1290 -0
  154. package/dist/lib/updates.js +3634 -0
  155. package/dist/lib/voice.d.ts +117 -0
  156. package/dist/lib/voice.js +174 -0
  157. package/dist/lib/workspace-admission.d.ts +264 -0
  158. package/dist/lib/workspace-admission.js +1136 -0
  159. package/dist/lib/workspace-retirement.d.ts +219 -0
  160. package/dist/lib/workspace-retirement.js +587 -0
  161. package/dist/lib/workspace-slots.d.ts +30 -0
  162. package/dist/lib/workspace-slots.js +54 -0
  163. package/dist/package.json +126 -0
  164. package/dist/pi-telegram/index.js +1 -0
  165. package/dist/skills/generated-control-surface/SKILL.md +107 -0
  166. package/dist/skills/generated-control-surface/references/capability-adapters.md +27 -0
  167. package/dist/skills/generated-control-surface/references/layout-and-state.md +37 -0
  168. package/dist/skills/generative-apps/SKILL.md +115 -0
  169. package/dist/skills/show-me/SKILL.md +166 -0
  170. package/dist/skills/show-me/references/telegram-surfaces.md +43 -0
  171. package/dist/skills/telegram-bridge/SKILL.md +129 -0
  172. package/dist/skills/telegram-bridge/references/configuration.md +15 -0
  173. package/dist/skills/telegram-bridge/references/delivery-and-threads.md +27 -0
  174. package/dist/skills/telegram-bridge/references/diagnosis.md +18 -0
  175. package/docs/architecture.md +1 -1
  176. package/docs/compact-matrix-literal.md +10 -3
  177. package/docs/generative-apps.md +15 -13
  178. package/docs/multi-instance-bus.md +4 -2
  179. package/docs/outbound.md +1 -1
  180. package/docs/public-api.md +2 -2
  181. package/lib/bindings.ts +89 -6
  182. package/lib/bus-follower.ts +7 -3
  183. package/lib/bus-leader.ts +44 -19
  184. package/lib/bus.ts +4 -1
  185. package/lib/commands.ts +2 -2
  186. package/lib/config.ts +14 -7
  187. package/lib/delivery.ts +38 -6
  188. package/lib/extension.ts +19 -0
  189. package/lib/generative-apps.ts +379 -13
  190. package/lib/menu-settings.ts +21 -5
  191. package/lib/outbound-markup.ts +16 -7
  192. package/lib/telegram-api.ts +12 -1
  193. package/lib/thread-display.ts +96 -18
  194. package/package.json +56 -13
  195. package/scripts/build-dist.mjs +44 -0
  196. package/scripts/measure-bus.mjs +8 -1
  197. package/scripts/measure-workspace.mjs +8 -1
  198. package/skills/generative-apps/SKILL.md +1 -1
  199. package/skills/telegram-bridge/SKILL.md +1 -1
@@ -0,0 +1,163 @@
1
+ /**
2
+ * Telegram target-aware operational delivery and logical message lifecycle
3
+ * Zones: telegram delivery, extension API, runtime binding
4
+ * Owns the public extension delivery contract, authorized scope resolution, operational rendering adapter, per-target serialization, chunk reconciliation, generation-fenced logical handles, and process-local runtime membrane; composes the established reply renderer with bus-aware Telegram API ports and excludes bot clients, Pi contexts, and consumer-extension policy
5
+ */
6
+ import { type TelegramInlineKeyboardMarkup } from "./keyboard.ts";
7
+ import { type TelegramTarget } from "./target.ts";
8
+ import { type TelegramBridgeApiRuntime } from "./telegram-api.ts";
9
+ export type TelegramDeliveryParseMode = "plain" | "html" | "markdown";
10
+ export interface TelegramDeliveryView {
11
+ text: string;
12
+ parseMode?: TelegramDeliveryParseMode;
13
+ replyMarkup?: TelegramInlineKeyboardMarkup;
14
+ }
15
+ export type TelegramDeliveryTarget = TelegramTarget;
16
+ export type TelegramDeliveryScope = {
17
+ kind: "active-turn";
18
+ } | {
19
+ kind: "instance";
20
+ } | {
21
+ kind: "aggregate";
22
+ } | {
23
+ kind: "target";
24
+ target: TelegramDeliveryTarget;
25
+ };
26
+ export interface TelegramDeliveryHandle {
27
+ readonly target: TelegramDeliveryTarget;
28
+ readonly messageIds: readonly number[];
29
+ readonly generation: string;
30
+ }
31
+ export type TelegramDeliveryFailureReason = "runtime-unavailable" | "target-unavailable" | "target-unauthorized" | "stale-handle" | "invalid-view" | "commit-unknown" | "message-unavailable" | "rate-limited" | "transport-retryable" | "transport-failed";
32
+ export type TelegramDeliveryResult<T> = {
33
+ ok: true;
34
+ value: T;
35
+ } | {
36
+ ok: false;
37
+ reason: TelegramDeliveryFailureReason;
38
+ message: string;
39
+ /** Exact Telegram flood-control delay when supplied by the API. */
40
+ retryAfterMs?: number;
41
+ /** Successfully materialized state that callers may edit or delete to recover. */
42
+ partial?: T;
43
+ };
44
+ export interface SendTelegramViewOptions {
45
+ scope: TelegramDeliveryScope;
46
+ replyToMessageId?: number;
47
+ }
48
+ export type TelegramDeliveryChatAction = "typing" | "upload_document" | "upload_photo" | "record_voice";
49
+ /** @internal */
50
+ export interface TelegramDeliveryRuntime {
51
+ readonly generation: string;
52
+ shutdown: () => void;
53
+ sendView: (view: TelegramDeliveryView, options: SendTelegramViewOptions) => Promise<TelegramDeliveryResult<TelegramDeliveryHandle>>;
54
+ editView: (handle: TelegramDeliveryHandle, view: TelegramDeliveryView) => Promise<TelegramDeliveryResult<TelegramDeliveryHandle>>;
55
+ deleteView: (handle: TelegramDeliveryHandle) => Promise<TelegramDeliveryResult<void>>;
56
+ sendChatAction: (action: TelegramDeliveryChatAction, scope: TelegramDeliveryScope) => Promise<TelegramDeliveryResult<void>>;
57
+ }
58
+ /** @internal */
59
+ export interface TelegramDeliveryTargetResolverDeps {
60
+ getActiveTurnTarget: () => TelegramDeliveryTarget | undefined;
61
+ getInstanceTarget: () => TelegramDeliveryTarget | undefined;
62
+ getAggregateTarget: () => TelegramDeliveryTarget | undefined;
63
+ isExplicitTargetAuthorized: (target: TelegramDeliveryTarget) => boolean;
64
+ }
65
+ /** @internal */
66
+ export interface TelegramDeliveryRenderedChunk {
67
+ text: string;
68
+ parseMode: TelegramDeliveryParseMode;
69
+ }
70
+ /** @internal */
71
+ export interface TelegramDeliveryTransportOptions {
72
+ replyToMessageId?: number;
73
+ replyMarkup?: TelegramInlineKeyboardMarkup | null;
74
+ }
75
+ /** @internal */
76
+ export interface TelegramDeliveryRuntimeDeps extends TelegramDeliveryTargetResolverDeps {
77
+ generation: string;
78
+ renderView: (view: TelegramDeliveryView) => readonly TelegramDeliveryRenderedChunk[];
79
+ sendChunk: (target: TelegramDeliveryTarget, chunk: TelegramDeliveryRenderedChunk, options: TelegramDeliveryTransportOptions) => Promise<number>;
80
+ editChunk: (target: TelegramDeliveryTarget, messageId: number, chunk: TelegramDeliveryRenderedChunk, options: TelegramDeliveryTransportOptions) => Promise<void>;
81
+ deleteMessage: (target: TelegramDeliveryTarget, messageId: number) => Promise<void>;
82
+ sendChatAction: (target: TelegramDeliveryTarget, action: TelegramDeliveryChatAction) => Promise<void>;
83
+ recordFailure?: (operation: "send" | "edit" | "delete" | "chat-action", error: unknown, target?: TelegramDeliveryTarget) => void;
84
+ }
85
+ /** @internal */
86
+ export interface TelegramBridgeDeliveryRuntimeDeps {
87
+ generation: string;
88
+ getTargetPolicyView: () => TelegramDeliveryTargetPolicyView;
89
+ getActiveTurnTarget: () => TelegramDeliveryTarget | undefined;
90
+ isTransportActive?: () => boolean;
91
+ api: Pick<TelegramBridgeApiRuntime, "sendMessage" | "editMessageText" | "deleteMessage" | "sendChatAction">;
92
+ recordOwnership: (input: {
93
+ chatId: number;
94
+ messageId: number;
95
+ target: TelegramDeliveryTarget;
96
+ }) => void;
97
+ recordFailure?: TelegramDeliveryRuntimeDeps["recordFailure"];
98
+ }
99
+ /** @internal */
100
+ export declare function createTelegramDeliveryLifecycleHooks(createRuntime: () => TelegramDeliveryRuntime): {
101
+ onSessionStart: () => Promise<void>;
102
+ onSessionShutdown: () => Promise<void>;
103
+ };
104
+ export declare function createTelegramDeliveryGenerationSeed(instanceId: string): string;
105
+ /** @internal */
106
+ export declare function createTelegramBridgeDeliveryLifecycleHooks<TTransportStamp>(deps: Omit<TelegramBridgeDeliveryRuntimeDeps, "generation" | "isTransportActive"> & {
107
+ generationSeed: string;
108
+ getTransportStamp?: () => TTransportStamp;
109
+ isTransportStampActive?: (stamp: TTransportStamp) => boolean;
110
+ }): ReturnType<typeof createTelegramDeliveryLifecycleHooks>;
111
+ export declare function classifyTelegramDeliveryTransportError(error: unknown): {
112
+ reason: Extract<TelegramDeliveryFailureReason, "commit-unknown" | "message-unavailable" | "rate-limited" | "transport-retryable" | "transport-failed">;
113
+ retryAfterMs?: number;
114
+ };
115
+ /** @internal */
116
+ export interface TelegramDeliveryTargetPolicyView {
117
+ canDeliver: boolean;
118
+ ownsDirect: boolean;
119
+ allowedChatId?: number;
120
+ followerTarget?: TelegramDeliveryTarget;
121
+ leaderTarget?: TelegramDeliveryTarget;
122
+ liveTargets?: readonly TelegramDeliveryTarget[];
123
+ }
124
+ /** @internal */
125
+ export interface TelegramDeliveryTargetPolicyRuntime {
126
+ getTargetPolicyView(): TelegramDeliveryTargetPolicyView;
127
+ getActiveTurnTarget(): TelegramDeliveryTarget | undefined;
128
+ }
129
+ /** @internal */
130
+ export declare function createTelegramDeliveryTargetPolicyRuntime(deps: {
131
+ ownsDirect(): boolean;
132
+ isFollowerRegistered(): boolean;
133
+ getAllowedChatId(): number | undefined;
134
+ getFollowerTarget(): TelegramDeliveryTarget | undefined;
135
+ getLeaderTarget(): TelegramDeliveryTarget | undefined;
136
+ listThreadRecords(): readonly {
137
+ target: TelegramDeliveryTarget;
138
+ }[];
139
+ getActiveTurnTarget(): TelegramDeliveryTarget | undefined;
140
+ getActiveGuestQueryId(): string | undefined;
141
+ }): TelegramDeliveryTargetPolicyRuntime;
142
+ /** @internal */
143
+ export declare function resolveTelegramDeliveryInstanceTarget(view: TelegramDeliveryTargetPolicyView): TelegramDeliveryTarget | undefined;
144
+ /** @internal */
145
+ export declare function resolveTelegramDeliveryAggregateTarget(view: TelegramDeliveryTargetPolicyView): TelegramDeliveryTarget | undefined;
146
+ /** @internal */
147
+ export declare function isTelegramDeliveryExplicitTargetAuthorized(candidate: TelegramDeliveryTarget, view: TelegramDeliveryTargetPolicyView): boolean;
148
+ /** @internal */
149
+ export declare function createTelegramDeliveryRuntime(deps: TelegramDeliveryRuntimeDeps): TelegramDeliveryRuntime;
150
+ /** @internal */
151
+ export declare function createTelegramBridgeDeliveryRuntime(deps: TelegramBridgeDeliveryRuntimeDeps): TelegramDeliveryRuntime;
152
+ /** @internal */
153
+ export declare function bindTelegramDeliveryRuntime(runtime: TelegramDeliveryRuntime): () => void;
154
+ /** @internal */
155
+ export declare function clearTelegramDeliveryRuntime(): void;
156
+ /** @internal */
157
+ export declare function isTelegramDeliveryHandleCurrent(handle: TelegramDeliveryHandle): boolean;
158
+ export declare function sendTelegramView(view: TelegramDeliveryView, options: SendTelegramViewOptions): Promise<TelegramDeliveryResult<TelegramDeliveryHandle>>;
159
+ export declare function editTelegramView(handle: TelegramDeliveryHandle, view: TelegramDeliveryView): Promise<TelegramDeliveryResult<TelegramDeliveryHandle>>;
160
+ export declare function deleteTelegramView(handle: TelegramDeliveryHandle): Promise<TelegramDeliveryResult<void>>;
161
+ export declare function sendTelegramChatAction(action: TelegramDeliveryChatAction, options: {
162
+ scope: TelegramDeliveryScope;
163
+ }): Promise<TelegramDeliveryResult<void>>;