@tschmz/imp 0.1.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 (377) hide show
  1. package/CHANGELOG.md +19 -0
  2. package/LICENSE +201 -0
  3. package/README.md +21 -0
  4. package/config.example.json +143 -0
  5. package/dist/agents/default-system-prompt.d.ts +1 -0
  6. package/dist/agents/default-system-prompt.js +67 -0
  7. package/dist/agents/default-system-prompt.js.map +1 -0
  8. package/dist/agents/registry.d.ts +6 -0
  9. package/dist/agents/registry.js +12 -0
  10. package/dist/agents/registry.js.map +1 -0
  11. package/dist/application/backup-use-cases.d.ts +28 -0
  12. package/dist/application/backup-use-cases.js +571 -0
  13. package/dist/application/backup-use-cases.js.map +1 -0
  14. package/dist/application/commands/agent-command.d.ts +2 -0
  15. package/dist/application/commands/agent-command.js +61 -0
  16. package/dist/application/commands/agent-command.js.map +1 -0
  17. package/dist/application/commands/config-command.d.ts +2 -0
  18. package/dist/application/commands/config-command.js +39 -0
  19. package/dist/application/commands/config-command.js.map +1 -0
  20. package/dist/application/commands/conversation-context.d.ts +6 -0
  21. package/dist/application/commands/conversation-context.js +35 -0
  22. package/dist/application/commands/conversation-context.js.map +1 -0
  23. package/dist/application/commands/export-command.d.ts +2 -0
  24. package/dist/application/commands/export-command.js +25 -0
  25. package/dist/application/commands/export-command.js.map +1 -0
  26. package/dist/application/commands/help-command.d.ts +3 -0
  27. package/dist/application/commands/help-command.js +40 -0
  28. package/dist/application/commands/help-command.js.map +1 -0
  29. package/dist/application/commands/history-command.d.ts +2 -0
  30. package/dist/application/commands/history-command.js +23 -0
  31. package/dist/application/commands/history-command.js.map +1 -0
  32. package/dist/application/commands/logs-command.d.ts +2 -0
  33. package/dist/application/commands/logs-command.js +42 -0
  34. package/dist/application/commands/logs-command.js.map +1 -0
  35. package/dist/application/commands/new-command.d.ts +2 -0
  36. package/dist/application/commands/new-command.js +37 -0
  37. package/dist/application/commands/new-command.js.map +1 -0
  38. package/dist/application/commands/parse-inbound-command.d.ts +15 -0
  39. package/dist/application/commands/parse-inbound-command.js +33 -0
  40. package/dist/application/commands/parse-inbound-command.js.map +1 -0
  41. package/dist/application/commands/ping-command.d.ts +2 -0
  42. package/dist/application/commands/ping-command.js +18 -0
  43. package/dist/application/commands/ping-command.js.map +1 -0
  44. package/dist/application/commands/priority-inbound-commands.d.ts +2 -0
  45. package/dist/application/commands/priority-inbound-commands.js +14 -0
  46. package/dist/application/commands/priority-inbound-commands.js.map +1 -0
  47. package/dist/application/commands/registry.d.ts +7 -0
  48. package/dist/application/commands/registry.js +38 -0
  49. package/dist/application/commands/registry.js.map +1 -0
  50. package/dist/application/commands/reload-command.d.ts +2 -0
  51. package/dist/application/commands/reload-command.js +23 -0
  52. package/dist/application/commands/reload-command.js.map +1 -0
  53. package/dist/application/commands/rename-command.d.ts +2 -0
  54. package/dist/application/commands/rename-command.js +36 -0
  55. package/dist/application/commands/rename-command.js.map +1 -0
  56. package/dist/application/commands/renderers.d.ts +13 -0
  57. package/dist/application/commands/renderers.js +238 -0
  58. package/dist/application/commands/renderers.js.map +1 -0
  59. package/dist/application/commands/reset-command.d.ts +2 -0
  60. package/dist/application/commands/reset-command.js +36 -0
  61. package/dist/application/commands/reset-command.js.map +1 -0
  62. package/dist/application/commands/restart-command.d.ts +2 -0
  63. package/dist/application/commands/restart-command.js +23 -0
  64. package/dist/application/commands/restart-command.js.map +1 -0
  65. package/dist/application/commands/restore-command.d.ts +2 -0
  66. package/dist/application/commands/restore-command.js +52 -0
  67. package/dist/application/commands/restore-command.js.map +1 -0
  68. package/dist/application/commands/status-command.d.ts +2 -0
  69. package/dist/application/commands/status-command.js +24 -0
  70. package/dist/application/commands/status-command.js.map +1 -0
  71. package/dist/application/commands/types.d.ts +49 -0
  72. package/dist/application/commands/types.js +2 -0
  73. package/dist/application/commands/types.js.map +1 -0
  74. package/dist/application/commands/utils.d.ts +4 -0
  75. package/dist/application/commands/utils.js +26 -0
  76. package/dist/application/commands/utils.js.map +1 -0
  77. package/dist/application/commands/whoami-command.d.ts +2 -0
  78. package/dist/application/commands/whoami-command.js +27 -0
  79. package/dist/application/commands/whoami-command.js.map +1 -0
  80. package/dist/application/config-key-path.d.ts +2 -0
  81. package/dist/application/config-key-path.js +65 -0
  82. package/dist/application/config-key-path.js.map +1 -0
  83. package/dist/application/get-config-value-use-case.d.ts +4 -0
  84. package/dist/application/get-config-value-use-case.js +30 -0
  85. package/dist/application/get-config-value-use-case.js.map +1 -0
  86. package/dist/application/handle-incoming-message.d.ts +7 -0
  87. package/dist/application/handle-incoming-message.js +56 -0
  88. package/dist/application/handle-incoming-message.js.map +1 -0
  89. package/dist/application/inbound/dispatch-command.d.ts +2 -0
  90. package/dist/application/inbound/dispatch-command.js +23 -0
  91. package/dist/application/inbound/dispatch-command.js.map +1 -0
  92. package/dist/application/inbound/execute-agent.d.ts +2 -0
  93. package/dist/application/inbound/execute-agent.js +41 -0
  94. package/dist/application/inbound/execute-agent.js.map +1 -0
  95. package/dist/application/inbound/persist-conversation.d.ts +2 -0
  96. package/dist/application/inbound/persist-conversation.js +7 -0
  97. package/dist/application/inbound/persist-conversation.js.map +1 -0
  98. package/dist/application/inbound/resolve-conversation.d.ts +2 -0
  99. package/dist/application/inbound/resolve-conversation.js +19 -0
  100. package/dist/application/inbound/resolve-conversation.js.map +1 -0
  101. package/dist/application/inbound/resolve-skills.d.ts +2 -0
  102. package/dist/application/inbound/resolve-skills.js +73 -0
  103. package/dist/application/inbound/resolve-skills.js.map +1 -0
  104. package/dist/application/inbound/run-hooks-start.d.ts +2 -0
  105. package/dist/application/inbound/run-hooks-start.js +4 -0
  106. package/dist/application/inbound/run-hooks-start.js.map +1 -0
  107. package/dist/application/inbound/run-hooks-success-error.d.ts +3 -0
  108. package/dist/application/inbound/run-hooks-success-error.js +18 -0
  109. package/dist/application/inbound/run-hooks-success-error.js.map +1 -0
  110. package/dist/application/inbound/types.d.ts +21 -0
  111. package/dist/application/inbound/types.js +2 -0
  112. package/dist/application/inbound/types.js.map +1 -0
  113. package/dist/application/init-config-use-case.d.ts +5 -0
  114. package/dist/application/init-config-use-case.js +62 -0
  115. package/dist/application/init-config-use-case.js.map +1 -0
  116. package/dist/application/message-processor.d.ts +19 -0
  117. package/dist/application/message-processor.js +122 -0
  118. package/dist/application/message-processor.js.map +1 -0
  119. package/dist/application/reload-config-use-case.d.ts +15 -0
  120. package/dist/application/reload-config-use-case.js +26 -0
  121. package/dist/application/reload-config-use-case.js.map +1 -0
  122. package/dist/application/run-daemon-use-case.d.ts +27 -0
  123. package/dist/application/run-daemon-use-case.js +42 -0
  124. package/dist/application/run-daemon-use-case.js.map +1 -0
  125. package/dist/application/runtime-target.d.ts +25 -0
  126. package/dist/application/runtime-target.js +41 -0
  127. package/dist/application/runtime-target.js.map +1 -0
  128. package/dist/application/service-use-cases.d.ts +45 -0
  129. package/dist/application/service-use-cases.js +100 -0
  130. package/dist/application/service-use-cases.js.map +1 -0
  131. package/dist/application/set-config-value-use-case.d.ts +5 -0
  132. package/dist/application/set-config-value-use-case.js +87 -0
  133. package/dist/application/set-config-value-use-case.js.map +1 -0
  134. package/dist/application/validate-config-use-case.d.ts +3 -0
  135. package/dist/application/validate-config-use-case.js +14 -0
  136. package/dist/application/validate-config-use-case.js.map +1 -0
  137. package/dist/application/view-logs-use-case.d.ts +6 -0
  138. package/dist/application/view-logs-use-case.js +14 -0
  139. package/dist/application/view-logs-use-case.js.map +1 -0
  140. package/dist/cli/create-cli.d.ts +68 -0
  141. package/dist/cli/create-cli.js +188 -0
  142. package/dist/cli/create-cli.js.map +1 -0
  143. package/dist/config/default-app-config.d.ts +20 -0
  144. package/dist/config/default-app-config.js +138 -0
  145. package/dist/config/default-app-config.js.map +1 -0
  146. package/dist/config/discover-config-path.d.ts +10 -0
  147. package/dist/config/discover-config-path.js +71 -0
  148. package/dist/config/discover-config-path.js.map +1 -0
  149. package/dist/config/init-app-config.d.ts +13 -0
  150. package/dist/config/init-app-config.js +31 -0
  151. package/dist/config/init-app-config.js.map +1 -0
  152. package/dist/config/load-app-config.d.ts +2 -0
  153. package/dist/config/load-app-config.js +29 -0
  154. package/dist/config/load-app-config.js.map +1 -0
  155. package/dist/config/prompt-init-config.d.ts +15 -0
  156. package/dist/config/prompt-init-config.js +201 -0
  157. package/dist/config/prompt-init-config.js.map +1 -0
  158. package/dist/config/resolve-runtime-config.d.ts +8 -0
  159. package/dist/config/resolve-runtime-config.js +122 -0
  160. package/dist/config/resolve-runtime-config.js.map +1 -0
  161. package/dist/config/schema.d.ts +3 -0
  162. package/dist/config/schema.js +203 -0
  163. package/dist/config/schema.js.map +1 -0
  164. package/dist/config/secret-value.d.ts +20 -0
  165. package/dist/config/secret-value.js +69 -0
  166. package/dist/config/secret-value.js.map +1 -0
  167. package/dist/config/types.d.ts +76 -0
  168. package/dist/config/types.js +2 -0
  169. package/dist/config/types.js.map +1 -0
  170. package/dist/config/validate-secret-references.d.ts +7 -0
  171. package/dist/config/validate-secret-references.js +14 -0
  172. package/dist/config/validate-secret-references.js.map +1 -0
  173. package/dist/daemon/bootstrap/acquire-runtime-state.d.ts +6 -0
  174. package/dist/daemon/bootstrap/acquire-runtime-state.js +19 -0
  175. package/dist/daemon/bootstrap/acquire-runtime-state.js.map +1 -0
  176. package/dist/daemon/bootstrap/build-runtime-components.d.ts +21 -0
  177. package/dist/daemon/bootstrap/build-runtime-components.js +26 -0
  178. package/dist/daemon/bootstrap/build-runtime-components.js.map +1 -0
  179. package/dist/daemon/bootstrap/prepare-runtime-filesystem.d.ts +2 -0
  180. package/dist/daemon/bootstrap/prepare-runtime-filesystem.js +11 -0
  181. package/dist/daemon/bootstrap/prepare-runtime-filesystem.js.map +1 -0
  182. package/dist/daemon/create-daemon.d.ts +13 -0
  183. package/dist/daemon/create-daemon.js +98 -0
  184. package/dist/daemon/create-daemon.js.map +1 -0
  185. package/dist/daemon/runtime-bootstrap.d.ts +12 -0
  186. package/dist/daemon/runtime-bootstrap.js +24 -0
  187. package/dist/daemon/runtime-bootstrap.js.map +1 -0
  188. package/dist/daemon/runtime-runner.d.ts +18 -0
  189. package/dist/daemon/runtime-runner.js +126 -0
  190. package/dist/daemon/runtime-runner.js.map +1 -0
  191. package/dist/daemon/runtime-shutdown.d.ts +15 -0
  192. package/dist/daemon/runtime-shutdown.js +50 -0
  193. package/dist/daemon/runtime-shutdown.js.map +1 -0
  194. package/dist/daemon/runtime-state.d.ts +10 -0
  195. package/dist/daemon/runtime-state.js +90 -0
  196. package/dist/daemon/runtime-state.js.map +1 -0
  197. package/dist/daemon/types.d.ts +63 -0
  198. package/dist/daemon/types.js +2 -0
  199. package/dist/daemon/types.js.map +1 -0
  200. package/dist/domain/agent.d.ts +51 -0
  201. package/dist/domain/agent.js +2 -0
  202. package/dist/domain/agent.js.map +1 -0
  203. package/dist/domain/conversation.d.ts +51 -0
  204. package/dist/domain/conversation.js +2 -0
  205. package/dist/domain/conversation.js.map +1 -0
  206. package/dist/domain/errors.d.ts +13 -0
  207. package/dist/domain/errors.js +27 -0
  208. package/dist/domain/errors.js.map +1 -0
  209. package/dist/domain/message.d.ts +27 -0
  210. package/dist/domain/message.js +2 -0
  211. package/dist/domain/message.js.map +1 -0
  212. package/dist/files/backup.d.ts +2 -0
  213. package/dist/files/backup.js +7 -0
  214. package/dist/files/backup.js.map +1 -0
  215. package/dist/files/managed-file.d.ts +11 -0
  216. package/dist/files/managed-file.js +82 -0
  217. package/dist/files/managed-file.js.map +1 -0
  218. package/dist/files/tar-archive.d.ts +7 -0
  219. package/dist/files/tar-archive.js +308 -0
  220. package/dist/files/tar-archive.js.map +1 -0
  221. package/dist/index.d.ts +2 -0
  222. package/dist/index.js +2 -0
  223. package/dist/index.js.map +1 -0
  224. package/dist/logging/daemon-startup-failure-reporter.d.ts +2 -0
  225. package/dist/logging/daemon-startup-failure-reporter.js +19 -0
  226. package/dist/logging/daemon-startup-failure-reporter.js.map +1 -0
  227. package/dist/logging/file-logger.d.ts +3 -0
  228. package/dist/logging/file-logger.js +87 -0
  229. package/dist/logging/file-logger.js.map +1 -0
  230. package/dist/logging/types.d.ts +34 -0
  231. package/dist/logging/types.js +2 -0
  232. package/dist/logging/types.js.map +1 -0
  233. package/dist/logging/view-logs.d.ts +27 -0
  234. package/dist/logging/view-logs.js +171 -0
  235. package/dist/logging/view-logs.js.map +1 -0
  236. package/dist/main.d.ts +2 -0
  237. package/dist/main.js +109 -0
  238. package/dist/main.js.map +1 -0
  239. package/dist/plugins/hook-runner.d.ts +11 -0
  240. package/dist/plugins/hook-runner.js +41 -0
  241. package/dist/plugins/hook-runner.js.map +1 -0
  242. package/dist/plugins/index.d.ts +2 -0
  243. package/dist/plugins/index.js +2 -0
  244. package/dist/plugins/index.js.map +1 -0
  245. package/dist/plugins/types.d.ts +64 -0
  246. package/dist/plugins/types.js +2 -0
  247. package/dist/plugins/types.js.map +1 -0
  248. package/dist/runtime/agent-execution.d.ts +42 -0
  249. package/dist/runtime/agent-execution.js +109 -0
  250. package/dist/runtime/agent-execution.js.map +1 -0
  251. package/dist/runtime/context.d.ts +20 -0
  252. package/dist/runtime/context.js +2 -0
  253. package/dist/runtime/context.js.map +1 -0
  254. package/dist/runtime/create-oauth-api-key-resolver.d.ts +9 -0
  255. package/dist/runtime/create-oauth-api-key-resolver.js +66 -0
  256. package/dist/runtime/create-oauth-api-key-resolver.js.map +1 -0
  257. package/dist/runtime/create-pi-agent-engine.d.ts +28 -0
  258. package/dist/runtime/create-pi-agent-engine.js +150 -0
  259. package/dist/runtime/create-pi-agent-engine.js.map +1 -0
  260. package/dist/runtime/mcp-tool-cache.d.ts +13 -0
  261. package/dist/runtime/mcp-tool-cache.js +43 -0
  262. package/dist/runtime/mcp-tool-cache.js.map +1 -0
  263. package/dist/runtime/mcp-tool-runtime.d.ts +76 -0
  264. package/dist/runtime/mcp-tool-runtime.js +180 -0
  265. package/dist/runtime/mcp-tool-runtime.js.map +1 -0
  266. package/dist/runtime/message-mapping.d.ts +11 -0
  267. package/dist/runtime/message-mapping.js +129 -0
  268. package/dist/runtime/message-mapping.js.map +1 -0
  269. package/dist/runtime/model-resolution.d.ts +5 -0
  270. package/dist/runtime/model-resolution.js +13 -0
  271. package/dist/runtime/model-resolution.js.map +1 -0
  272. package/dist/runtime/pipeline/execute-agent-stage.d.ts +12 -0
  273. package/dist/runtime/pipeline/execute-agent-stage.js +25 -0
  274. package/dist/runtime/pipeline/execute-agent-stage.js.map +1 -0
  275. package/dist/runtime/pipeline/resolve-model-stage.d.ts +8 -0
  276. package/dist/runtime/pipeline/resolve-model-stage.js +9 -0
  277. package/dist/runtime/pipeline/resolve-model-stage.js.map +1 -0
  278. package/dist/runtime/pipeline/resolve-prompt-stage.d.ts +12 -0
  279. package/dist/runtime/pipeline/resolve-prompt-stage.js +30 -0
  280. package/dist/runtime/pipeline/resolve-prompt-stage.js.map +1 -0
  281. package/dist/runtime/pipeline/resolve-tools-stage.d.ts +27 -0
  282. package/dist/runtime/pipeline/resolve-tools-stage.js +46 -0
  283. package/dist/runtime/pipeline/resolve-tools-stage.js.map +1 -0
  284. package/dist/runtime/prompt-template.d.ts +54 -0
  285. package/dist/runtime/prompt-template.js +78 -0
  286. package/dist/runtime/prompt-template.js.map +1 -0
  287. package/dist/runtime/system-prompt-cache.d.ts +33 -0
  288. package/dist/runtime/system-prompt-cache.js +77 -0
  289. package/dist/runtime/system-prompt-cache.js.map +1 -0
  290. package/dist/runtime/system-prompt-resolution.d.ts +22 -0
  291. package/dist/runtime/system-prompt-resolution.js +170 -0
  292. package/dist/runtime/system-prompt-resolution.js.map +1 -0
  293. package/dist/runtime/tool-resolution.d.ts +19 -0
  294. package/dist/runtime/tool-resolution.js +281 -0
  295. package/dist/runtime/tool-resolution.js.map +1 -0
  296. package/dist/runtime/types.d.ts +23 -0
  297. package/dist/runtime/types.js +2 -0
  298. package/dist/runtime/types.js.map +1 -0
  299. package/dist/service/install-plan.d.ts +21 -0
  300. package/dist/service/install-plan.js +71 -0
  301. package/dist/service/install-plan.js.map +1 -0
  302. package/dist/service/install-service.d.ts +32 -0
  303. package/dist/service/install-service.js +80 -0
  304. package/dist/service/install-service.js.map +1 -0
  305. package/dist/service/linux-service-environment.d.ts +5 -0
  306. package/dist/service/linux-service-environment.js +61 -0
  307. package/dist/service/linux-service-environment.js.map +1 -0
  308. package/dist/service/manage-service.d.ts +14 -0
  309. package/dist/service/manage-service.js +36 -0
  310. package/dist/service/manage-service.js.map +1 -0
  311. package/dist/service/platforms/get-service-platform-adapter.d.ts +3 -0
  312. package/dist/service/platforms/get-service-platform-adapter.js +12 -0
  313. package/dist/service/platforms/get-service-platform-adapter.js.map +1 -0
  314. package/dist/service/platforms/linux-systemd-user-adapter.d.ts +2 -0
  315. package/dist/service/platforms/linux-systemd-user-adapter.js +99 -0
  316. package/dist/service/platforms/linux-systemd-user-adapter.js.map +1 -0
  317. package/dist/service/platforms/macos-launchd-adapter.d.ts +2 -0
  318. package/dist/service/platforms/macos-launchd-adapter.js +122 -0
  319. package/dist/service/platforms/macos-launchd-adapter.js.map +1 -0
  320. package/dist/service/platforms/service-platform-adapter.d.ts +35 -0
  321. package/dist/service/platforms/service-platform-adapter.js +16 -0
  322. package/dist/service/platforms/service-platform-adapter.js.map +1 -0
  323. package/dist/service/platforms/windows-winsw-adapter.d.ts +2 -0
  324. package/dist/service/platforms/windows-winsw-adapter.js +47 -0
  325. package/dist/service/platforms/windows-winsw-adapter.js.map +1 -0
  326. package/dist/service/service-error.d.ts +7 -0
  327. package/dist/service/service-error.js +45 -0
  328. package/dist/service/service-error.js.map +1 -0
  329. package/dist/service/service-installer.d.ts +8 -0
  330. package/dist/service/service-installer.js +40 -0
  331. package/dist/service/service-installer.js.map +1 -0
  332. package/dist/service/service-operation-result.d.ts +9 -0
  333. package/dist/service/service-operation-result.js +2 -0
  334. package/dist/service/service-operation-result.js.map +1 -0
  335. package/dist/service/uninstall-service.d.ts +13 -0
  336. package/dist/service/uninstall-service.js +45 -0
  337. package/dist/service/uninstall-service.js.map +1 -0
  338. package/dist/skills/discovery.d.ts +10 -0
  339. package/dist/skills/discovery.js +216 -0
  340. package/dist/skills/discovery.js.map +1 -0
  341. package/dist/skills/types.d.ts +20 -0
  342. package/dist/skills/types.js +2 -0
  343. package/dist/skills/types.js.map +1 -0
  344. package/dist/storage/fs-store.d.ts +3 -0
  345. package/dist/storage/fs-store.js +707 -0
  346. package/dist/storage/fs-store.js.map +1 -0
  347. package/dist/storage/types.d.ts +29 -0
  348. package/dist/storage/types.js +2 -0
  349. package/dist/storage/types.js.map +1 -0
  350. package/dist/tools/registry.d.ts +7 -0
  351. package/dist/tools/registry.js +18 -0
  352. package/dist/tools/registry.js.map +1 -0
  353. package/dist/tools/types.d.ts +14 -0
  354. package/dist/tools/types.js +2 -0
  355. package/dist/tools/types.js.map +1 -0
  356. package/dist/transports/builtins.d.ts +1 -0
  357. package/dist/transports/builtins.js +15 -0
  358. package/dist/transports/builtins.js.map +1 -0
  359. package/dist/transports/registry.d.ts +21 -0
  360. package/dist/transports/registry.js +28 -0
  361. package/dist/transports/registry.js.map +1 -0
  362. package/dist/transports/telegram/openai-voice-transcriber.d.ts +18 -0
  363. package/dist/transports/telegram/openai-voice-transcriber.js +75 -0
  364. package/dist/transports/telegram/openai-voice-transcriber.js.map +1 -0
  365. package/dist/transports/telegram/render-telegram-message.d.ts +2 -0
  366. package/dist/transports/telegram/render-telegram-message.js +458 -0
  367. package/dist/transports/telegram/render-telegram-message.js.map +1 -0
  368. package/dist/transports/telegram/telegram-transport.d.ts +56 -0
  369. package/dist/transports/telegram/telegram-transport.js +414 -0
  370. package/dist/transports/telegram/telegram-transport.js.map +1 -0
  371. package/dist/transports/telegram/transport-adapter.d.ts +33 -0
  372. package/dist/transports/telegram/transport-adapter.js +62 -0
  373. package/dist/transports/telegram/transport-adapter.js.map +1 -0
  374. package/dist/transports/types.d.ts +15 -0
  375. package/dist/transports/types.js +2 -0
  376. package/dist/transports/types.js.map +1 -0
  377. package/package.json +49 -0
@@ -0,0 +1,458 @@
1
+ const TELEGRAM_MESSAGE_LIMIT = 4096;
2
+ export function renderTelegramMessage(text) {
3
+ return renderSegments(splitCodeBlocks(text));
4
+ }
5
+ export function renderTelegramMessages(text, maxLength = TELEGRAM_MESSAGE_LIMIT) {
6
+ const units = splitCodeBlocks(text).flatMap((segment) => renderSegmentUnits(segment, maxLength));
7
+ const messages = combineUnits(units, maxLength);
8
+ return messages.length > 0 ? messages : [""];
9
+ }
10
+ function splitCodeBlocks(text) {
11
+ const segments = [];
12
+ let cursor = 0;
13
+ while (cursor < text.length) {
14
+ const blockStart = text.indexOf("```", cursor);
15
+ if (blockStart === -1) {
16
+ segments.push(...splitBlockQuotes(text.slice(cursor)));
17
+ break;
18
+ }
19
+ if (blockStart > cursor) {
20
+ segments.push(...splitBlockQuotes(text.slice(cursor, blockStart)));
21
+ }
22
+ const blockEnd = text.indexOf("```", blockStart + 3);
23
+ if (blockEnd === -1) {
24
+ segments.push({ type: "text", value: text.slice(blockStart) });
25
+ break;
26
+ }
27
+ const blockContent = text.slice(blockStart + 3, blockEnd);
28
+ segments.push(toCodeBlockSegment(blockContent));
29
+ cursor = blockEnd + 3;
30
+ }
31
+ return segments;
32
+ }
33
+ function toCodeBlockSegment(blockContent) {
34
+ const normalized = blockContent.startsWith("\n") ? blockContent.slice(1) : blockContent;
35
+ const firstLineBreak = normalized.indexOf("\n");
36
+ if (firstLineBreak === -1) {
37
+ return {
38
+ type: "codeBlock",
39
+ value: normalized,
40
+ };
41
+ }
42
+ const firstLine = normalized.slice(0, firstLineBreak).trim();
43
+ if (!isSupportedLanguageHint(firstLine)) {
44
+ return {
45
+ type: "codeBlock",
46
+ value: normalized,
47
+ };
48
+ }
49
+ return {
50
+ type: "codeBlock",
51
+ language: firstLine,
52
+ value: normalized.slice(firstLineBreak + 1),
53
+ };
54
+ }
55
+ function isSupportedLanguageHint(value) {
56
+ return /^[a-z0-9_+-]+$/i.test(value);
57
+ }
58
+ function renderSegments(segments) {
59
+ return segments
60
+ .map((segment) => {
61
+ if (segment.type === "codeBlock") {
62
+ const escapedCode = escapeHtml(segment.value);
63
+ if (segment.language) {
64
+ return `<pre><code class="language-${segment.language}">${escapedCode}</code></pre>`;
65
+ }
66
+ return `<pre><code>${escapedCode}</code></pre>`;
67
+ }
68
+ if (segment.type === "blockquote") {
69
+ return `<blockquote>${renderInlineCode(segment.value)}</blockquote>`;
70
+ }
71
+ return renderInlineCode(segment.value);
72
+ })
73
+ .join("");
74
+ }
75
+ function renderSegmentUnits(segment, maxLength) {
76
+ if (segment.type === "codeBlock") {
77
+ return splitRenderedCodeBlock(segment, maxLength);
78
+ }
79
+ if (segment.type === "blockquote") {
80
+ return splitRenderedBlockQuote(segment.value, maxLength);
81
+ }
82
+ return splitRenderedText(segment.value, maxLength);
83
+ }
84
+ function splitRenderedText(text, maxLength) {
85
+ const units = [];
86
+ for (const segment of splitInlineCode(text)) {
87
+ if (segment.type === "inlineCode") {
88
+ units.push(...splitInlineCodeUnit(segment.value, maxLength));
89
+ continue;
90
+ }
91
+ units.push(...splitRenderedRichText(segment.value, maxLength));
92
+ }
93
+ return units;
94
+ }
95
+ function splitInlineCode(text) {
96
+ const result = [];
97
+ let cursor = 0;
98
+ while (cursor < text.length) {
99
+ const codeStart = text.indexOf("`", cursor);
100
+ if (codeStart === -1) {
101
+ result.push({ type: "text", value: text.slice(cursor) });
102
+ break;
103
+ }
104
+ const codeEnd = text.indexOf("`", codeStart + 1);
105
+ if (codeEnd === -1 || text.slice(codeStart + 1, codeEnd).includes("\n")) {
106
+ result.push({ type: "text", value: text.slice(cursor) });
107
+ break;
108
+ }
109
+ if (codeStart > cursor) {
110
+ result.push({ type: "text", value: text.slice(cursor, codeStart) });
111
+ }
112
+ result.push({ type: "inlineCode", value: text.slice(codeStart + 1, codeEnd) });
113
+ cursor = codeEnd + 1;
114
+ }
115
+ return result;
116
+ }
117
+ function renderInlineCode(text) {
118
+ return splitInlineCode(text)
119
+ .map((segment) => {
120
+ if (segment.type === "inlineCode") {
121
+ return `<code>${escapeHtml(segment.value)}</code>`;
122
+ }
123
+ return renderRichText(segment.value);
124
+ })
125
+ .join("");
126
+ }
127
+ function splitRenderedRichText(text, maxLength) {
128
+ const units = [];
129
+ for (const segment of splitRichText(text)) {
130
+ if (segment.type === "bold") {
131
+ units.push(...splitWrappedUnit(segment.value, maxLength, "<b>", "</b>", "bold"));
132
+ continue;
133
+ }
134
+ if (segment.type === "italic") {
135
+ units.push(...splitWrappedUnit(segment.value, maxLength, "<i>", "</i>", "italic"));
136
+ continue;
137
+ }
138
+ if (segment.type === "link") {
139
+ units.push(...splitLinkUnit(segment.label, segment.href, maxLength));
140
+ continue;
141
+ }
142
+ units.push(...splitEscapedText(segment.value, maxLength));
143
+ }
144
+ return units;
145
+ }
146
+ function renderRichText(text) {
147
+ return splitRichText(text)
148
+ .map((segment) => {
149
+ if (segment.type === "bold") {
150
+ return `<b>${escapeHtml(segment.value)}</b>`;
151
+ }
152
+ if (segment.type === "italic") {
153
+ return `<i>${escapeHtml(segment.value)}</i>`;
154
+ }
155
+ if (segment.type === "link") {
156
+ return `<a href="${escapeHtmlAttribute(segment.href)}">${escapeHtml(segment.label)}</a>`;
157
+ }
158
+ return escapeHtml(segment.value);
159
+ })
160
+ .join("");
161
+ }
162
+ function splitRichText(text) {
163
+ const segments = [];
164
+ for (const linkSegment of splitLinks(text)) {
165
+ if (linkSegment.type === "link") {
166
+ segments.push(linkSegment);
167
+ continue;
168
+ }
169
+ for (const emphasisSegment of splitEmphasis(linkSegment.value)) {
170
+ segments.push(emphasisSegment);
171
+ }
172
+ }
173
+ return segments;
174
+ }
175
+ function splitEmphasis(text) {
176
+ const result = [];
177
+ let cursor = 0;
178
+ while (cursor < text.length) {
179
+ const boldStart = text.indexOf("**", cursor);
180
+ const italicStart = findItalicStart(text, cursor);
181
+ const nextToken = pickNextToken(boldStart, italicStart);
182
+ if (!nextToken) {
183
+ result.push({ type: "text", value: text.slice(cursor) });
184
+ break;
185
+ }
186
+ if (nextToken.start > cursor) {
187
+ result.push({ type: "text", value: text.slice(cursor, nextToken.start) });
188
+ }
189
+ if (nextToken.type === "bold") {
190
+ const boldEnd = text.indexOf("**", nextToken.start + 2);
191
+ if (boldEnd === -1) {
192
+ result.push({ type: "text", value: text.slice(nextToken.start) });
193
+ break;
194
+ }
195
+ const boldValue = text.slice(nextToken.start + 2, boldEnd);
196
+ if (!boldValue) {
197
+ result.push({ type: "text", value: text.slice(nextToken.start, boldEnd + 2) });
198
+ }
199
+ else {
200
+ result.push({ type: "bold", value: boldValue });
201
+ }
202
+ cursor = boldEnd + 2;
203
+ continue;
204
+ }
205
+ const italicEnd = findItalicEnd(text, nextToken.start + 1);
206
+ if (italicEnd === -1) {
207
+ result.push({ type: "text", value: text.slice(nextToken.start) });
208
+ break;
209
+ }
210
+ const italicValue = text.slice(nextToken.start + 1, italicEnd);
211
+ if (!italicValue) {
212
+ result.push({ type: "text", value: text.slice(nextToken.start, italicEnd + 1) });
213
+ }
214
+ else {
215
+ result.push({ type: "italic", value: italicValue });
216
+ }
217
+ cursor = italicEnd + 1;
218
+ }
219
+ return result;
220
+ }
221
+ function splitLinks(text) {
222
+ const result = [];
223
+ let cursor = 0;
224
+ while (cursor < text.length) {
225
+ const labelStart = text.indexOf("[", cursor);
226
+ if (labelStart === -1) {
227
+ result.push({ type: "text", value: text.slice(cursor) });
228
+ break;
229
+ }
230
+ const labelEnd = text.indexOf("]", labelStart + 1);
231
+ const urlStart = labelEnd === -1 ? -1 : text.indexOf("(", labelEnd + 1);
232
+ const urlEnd = urlStart === -1 ? -1 : text.indexOf(")", urlStart + 1);
233
+ if (labelEnd === -1 || urlStart !== labelEnd + 1 || urlEnd === -1) {
234
+ result.push({ type: "text", value: text.slice(cursor) });
235
+ break;
236
+ }
237
+ if (labelStart > cursor) {
238
+ result.push({ type: "text", value: text.slice(cursor, labelStart) });
239
+ }
240
+ const label = text.slice(labelStart + 1, labelEnd);
241
+ const href = text.slice(urlStart + 1, urlEnd).trim();
242
+ if (!label || !isSafeLinkTarget(href)) {
243
+ result.push({ type: "text", value: text.slice(labelStart, urlEnd + 1) });
244
+ }
245
+ else {
246
+ result.push({ type: "link", label, href });
247
+ }
248
+ cursor = urlEnd + 1;
249
+ }
250
+ return result;
251
+ }
252
+ function splitBlockQuotes(text) {
253
+ const segments = [];
254
+ let textBuffer = "";
255
+ const lines = text.split("\n");
256
+ let index = 0;
257
+ while (index < lines.length) {
258
+ const line = lines[index];
259
+ if (!line.startsWith(">")) {
260
+ if (textBuffer || index > 0) {
261
+ textBuffer += "\n";
262
+ }
263
+ textBuffer += line;
264
+ index += 1;
265
+ continue;
266
+ }
267
+ if (textBuffer) {
268
+ segments.push({ type: "text", value: textBuffer });
269
+ textBuffer = "";
270
+ }
271
+ const quoteLines = [];
272
+ while (index < lines.length && lines[index].startsWith(">")) {
273
+ const quoteLine = lines[index];
274
+ quoteLines.push(quoteLine.slice(quoteLine.startsWith("> ") ? 2 : 1));
275
+ index += 1;
276
+ }
277
+ segments.push({ type: "blockquote", value: quoteLines.join("\n") });
278
+ }
279
+ if (textBuffer) {
280
+ segments.push({ type: "text", value: textBuffer });
281
+ }
282
+ return segments;
283
+ }
284
+ function splitRenderedCodeBlock(segment, maxLength) {
285
+ const prefix = segment.language
286
+ ? `<pre><code class="language-${segment.language}">`
287
+ : "<pre><code>";
288
+ const suffix = "</code></pre>";
289
+ const contentLimit = maxLength - prefix.length - suffix.length;
290
+ if (contentLimit <= 0) {
291
+ throw new Error(`Telegram message limit ${maxLength} is too small for code block wrappers.`);
292
+ }
293
+ const parts = splitByEscapedLength(segment.value, contentLimit);
294
+ return parts.map((part) => `${prefix}${escapeHtml(part)}${suffix}`);
295
+ }
296
+ function splitInlineCodeUnit(value, maxLength) {
297
+ return splitWrappedUnit(value, maxLength, "<code>", "</code>", "inline code");
298
+ }
299
+ function splitWrappedUnit(value, maxLength, prefix, suffix, label) {
300
+ const contentLimit = maxLength - prefix.length - suffix.length;
301
+ if (contentLimit <= 0) {
302
+ throw new Error(`Telegram message limit ${maxLength} is too small for ${label} wrappers.`);
303
+ }
304
+ const parts = splitByEscapedLength(value, contentLimit);
305
+ return parts.map((part) => `${prefix}${escapeHtml(part)}${suffix}`);
306
+ }
307
+ function splitLinkUnit(label, href, maxLength) {
308
+ const prefix = `<a href="${escapeHtmlAttribute(href)}">`;
309
+ const suffix = "</a>";
310
+ return splitWrappedUnit(label, maxLength, prefix, suffix, "link");
311
+ }
312
+ function splitRenderedBlockQuote(value, maxLength) {
313
+ const prefix = "<blockquote>";
314
+ const suffix = "</blockquote>";
315
+ const contentLimit = maxLength - prefix.length - suffix.length;
316
+ if (contentLimit <= 0) {
317
+ throw new Error(`Telegram message limit ${maxLength} is too small for blockquote wrappers.`);
318
+ }
319
+ const innerUnits = splitRenderedText(value, contentLimit);
320
+ return combineUnits(innerUnits, contentLimit).map((unit) => `${prefix}${unit}${suffix}`);
321
+ }
322
+ function splitEscapedText(value, maxLength) {
323
+ return splitByEscapedLength(value, maxLength).map((part) => escapeHtml(part));
324
+ }
325
+ function splitByEscapedLength(value, maxLength) {
326
+ if (!value) {
327
+ return [];
328
+ }
329
+ const parts = [];
330
+ let cursor = 0;
331
+ while (cursor < value.length) {
332
+ let end = cursor;
333
+ let escapedLength = 0;
334
+ let lastBreak = -1;
335
+ while (end < value.length) {
336
+ const nextLength = escapedLength + escapedCharLength(value[end]);
337
+ if (nextLength > maxLength) {
338
+ break;
339
+ }
340
+ escapedLength = nextLength;
341
+ if (isPreferredBreakCharacter(value[end])) {
342
+ lastBreak = end + 1;
343
+ }
344
+ end += 1;
345
+ }
346
+ if (end === cursor) {
347
+ end += 1;
348
+ }
349
+ else if (end < value.length && lastBreak > cursor) {
350
+ end = lastBreak;
351
+ }
352
+ parts.push(value.slice(cursor, end));
353
+ cursor = end;
354
+ }
355
+ return parts;
356
+ }
357
+ function combineUnits(units, maxLength) {
358
+ const messages = [];
359
+ let current = "";
360
+ for (const unit of units) {
361
+ if (!unit) {
362
+ continue;
363
+ }
364
+ if (unit.length > maxLength) {
365
+ throw new Error("Rendered Telegram unit exceeds message length limit.");
366
+ }
367
+ if (!current) {
368
+ current = unit;
369
+ continue;
370
+ }
371
+ if (current.length + unit.length <= maxLength) {
372
+ current += unit;
373
+ continue;
374
+ }
375
+ messages.push(current);
376
+ current = unit;
377
+ }
378
+ if (current) {
379
+ messages.push(current);
380
+ }
381
+ return messages;
382
+ }
383
+ function escapedCharLength(value) {
384
+ if (value === "&") {
385
+ return 5;
386
+ }
387
+ if (value === "<" || value === ">") {
388
+ return 4;
389
+ }
390
+ return 1;
391
+ }
392
+ function isPreferredBreakCharacter(value) {
393
+ return value === "\n" || value === " " || value === "\t";
394
+ }
395
+ function pickNextToken(boldStart, italicStart) {
396
+ if (boldStart === -1 && italicStart === -1) {
397
+ return undefined;
398
+ }
399
+ if (boldStart !== -1 && (italicStart === -1 || boldStart <= italicStart)) {
400
+ return { type: "bold", start: boldStart };
401
+ }
402
+ return { type: "italic", start: italicStart };
403
+ }
404
+ function findItalicStart(text, fromIndex) {
405
+ let cursor = fromIndex;
406
+ while (cursor < text.length) {
407
+ const start = text.indexOf("_", cursor);
408
+ if (start === -1) {
409
+ return -1;
410
+ }
411
+ if (isValidItalicBoundary(text, start - 1) && findItalicEnd(text, start + 1) !== -1) {
412
+ return start;
413
+ }
414
+ cursor = start + 1;
415
+ }
416
+ return -1;
417
+ }
418
+ function findItalicEnd(text, fromIndex) {
419
+ let cursor = fromIndex;
420
+ while (cursor < text.length) {
421
+ const end = text.indexOf("_", cursor);
422
+ if (end === -1) {
423
+ return -1;
424
+ }
425
+ const content = text.slice(fromIndex, end);
426
+ if (content && !content.includes("\n") && isValidItalicBoundary(text, end + 1)) {
427
+ return end;
428
+ }
429
+ cursor = end + 1;
430
+ }
431
+ return -1;
432
+ }
433
+ function isValidItalicBoundary(text, index) {
434
+ if (index < 0 || index >= text.length) {
435
+ return true;
436
+ }
437
+ const value = text[index];
438
+ return !/[a-z0-9]/i.test(value);
439
+ }
440
+ function isSafeLinkTarget(value) {
441
+ try {
442
+ const url = new URL(value);
443
+ return ["http:", "https:", "mailto:", "tg:"].includes(url.protocol);
444
+ }
445
+ catch {
446
+ return false;
447
+ }
448
+ }
449
+ function escapeHtml(value) {
450
+ return value
451
+ .replaceAll("&", "&amp;")
452
+ .replaceAll("<", "&lt;")
453
+ .replaceAll(">", "&gt;");
454
+ }
455
+ function escapeHtmlAttribute(value) {
456
+ return escapeHtml(value).replaceAll('"', "&quot;");
457
+ }
458
+ //# sourceMappingURL=render-telegram-message.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"render-telegram-message.js","sourceRoot":"","sources":["../../../src/transports/telegram/render-telegram-message.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,56 @@
1
+ import type { TelegramEndpointRuntimeConfig } from "../../daemon/types.js";
2
+ import type { Logger } from "../../logging/types.js";
3
+ import type { Transport } from "../types.js";
4
+ import { type VoiceTranscriber } from "./openai-voice-transcriber.js";
5
+ interface TelegramBotAdapter {
6
+ api: {
7
+ getMe(): Promise<TelegramBotProfile>;
8
+ getFile(fileId: string): Promise<TelegramFile>;
9
+ sendChatAction(chatId: number, action: "typing"): Promise<unknown>;
10
+ setMyCommands(commands: ReadonlyArray<{
11
+ command: string;
12
+ description: string;
13
+ }>): Promise<unknown>;
14
+ };
15
+ on(filter: "message" | "message:text", handler: (ctx: TelegramMessageContext) => Promise<void>): void;
16
+ start(): Promise<void>;
17
+ stop(): void;
18
+ }
19
+ interface TelegramBotProfile {
20
+ username?: string;
21
+ }
22
+ interface TelegramFile {
23
+ file_path?: string;
24
+ }
25
+ interface TelegramMessage {
26
+ entities?: Array<{
27
+ type: string;
28
+ offset: number;
29
+ length: number;
30
+ }>;
31
+ message_id: number;
32
+ text?: string;
33
+ voice?: {
34
+ file_id: string;
35
+ mime_type?: string;
36
+ };
37
+ }
38
+ interface TelegramMessageContext {
39
+ chat?: {
40
+ id: number;
41
+ type: string;
42
+ };
43
+ message?: TelegramMessage;
44
+ from?: {
45
+ id: number;
46
+ };
47
+ reply(text: string, other?: {
48
+ parse_mode?: "HTML" | "MarkdownV2";
49
+ }): Promise<unknown>;
50
+ }
51
+ interface TelegramTransportDependencies {
52
+ fetch?: typeof fetch;
53
+ voiceTranscriber?: VoiceTranscriber;
54
+ }
55
+ export declare function createTelegramTransport(config: TelegramEndpointRuntimeConfig, bot?: TelegramBotAdapter, logger?: Logger, dependencies?: TelegramTransportDependencies): Transport;
56
+ export {};