teleton 0.8.5 → 0.8.6

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 (80) hide show
  1. package/README.md +24 -5
  2. package/dist/{bootstrap-SPDT3XBQ.js → bootstrap-PFBH6ALD.js} +10 -7
  3. package/dist/bridge-guards-HZTNH7IB.js +9 -0
  4. package/dist/{chunk-FSL2MOYK.js → chunk-2UUGRY5B.js} +144 -163
  5. package/dist/{chunk-LM6AL6LN.js → chunk-4MFN75ZK.js} +4449 -2776
  6. package/dist/{chunk-GUX6ZFVF.js → chunk-4MG2AROG.js} +4 -6
  7. package/dist/{chunk-6U6VA2OT.js → chunk-6IFNQWIM.js} +7276 -7300
  8. package/dist/chunk-7KI25UJU.js +215 -0
  9. package/dist/chunk-AX5NBEHX.js +12 -0
  10. package/dist/{chunk-7ZXUUDQQ.js → chunk-BLUES3FJ.js} +79 -100
  11. package/dist/{chunk-KYSAHDYE.js → chunk-BT2I3ETV.js} +1 -1
  12. package/dist/chunk-CXTZPOTA.js +107 -0
  13. package/dist/{chunk-4KURCUWD.js → chunk-D3GT6YIY.js} +59 -7
  14. package/dist/chunk-EKCXKL5M.js +53 -0
  15. package/dist/{chunk-5K4YDCVU.js → chunk-F6S3L3OV.js} +3 -3
  16. package/dist/{chunk-L3LPVF4Z.js → chunk-J4WDJ7XS.js} +2 -2
  17. package/dist/{chunk-Z63KUQX4.js → chunk-JYF2MM5I.js} +120 -110
  18. package/dist/{chunk-NVKBBTI6.js → chunk-K3QSIIMZ.js} +9 -6
  19. package/dist/chunk-OMQIAWEU.js +273 -0
  20. package/dist/chunk-PCT7GYBP.js +274 -0
  21. package/dist/{chunk-35X3V6OW.js → chunk-QYZBWU2D.js} +5 -5
  22. package/dist/{chunk-WTDAICGT.js → chunk-R6W4DJRK.js} +7 -7
  23. package/dist/{chunk-5SEMA47R.js → chunk-RILOEIK6.js} +1 -1
  24. package/dist/{chunk-6OOHHJ4N.js → chunk-TFTNZZDH.js} +20 -20
  25. package/dist/chunk-TTOZCZWE.js +96 -0
  26. package/dist/chunk-UJ54YT2T.js +12 -0
  27. package/dist/{chunk-2MZP75SH.js → chunk-ULVL2W3D.js} +152 -256
  28. package/dist/{chunk-NQ6FZKCE.js → chunk-V3S3NXBQ.js} +3 -1
  29. package/dist/{chunk-H7MFXJZK.js → chunk-WSL4KIOI.js} +31 -26
  30. package/dist/{chunk-PK3TVFBT.js → chunk-Z5WY7BSB.js} +5 -5
  31. package/dist/{chunk-LD24DWWE.js → chunk-ZGKE3OTA.js} +110 -47
  32. package/dist/{chunk-M6M4DCDU.js → chunk-ZHRDETCX.js} +3 -3
  33. package/dist/cli/index.d.ts +2 -0
  34. package/dist/cli/index.js +263 -163
  35. package/dist/{client-G62EZT6U.js → client-S5UIK6OG.js} +9 -7
  36. package/dist/daily-logs-3WXGYAQF.js +25 -0
  37. package/dist/{get-my-gifts-Y7EN7RK4.js → get-my-gifts-3YSYM3LI.js} +3 -2
  38. package/dist/{harden-permissions-6BLHRCQJ.js → harden-permissions-PV5SGV5D.js} +1 -1
  39. package/dist/index.d.ts +923 -0
  40. package/dist/index.js +28 -20
  41. package/dist/knowledge-RRWUIO3G.js +19 -0
  42. package/dist/{local-HQ3UJ7KR.js → local-MSZAXWUL.js} +2 -2
  43. package/dist/mcp-loader-OELDFR63.js +15 -0
  44. package/dist/{memory-BJH724PQ.js → memory-6U6HGRK2.js} +22 -12
  45. package/dist/{memory-hook-LUAKTXU5.js → memory-hook-T7Y235KY.js} +7 -7
  46. package/dist/messages-KV5ADNJB.js +17 -0
  47. package/dist/{migrate-C4LBLOZH.js → migrate-AX3HOKOO.js} +9 -7
  48. package/dist/{server-4J56HS62.js → server-MFRYOGHR.js} +20 -16
  49. package/dist/{server-I6TYJ36S.js → server-SFLCAZFR.js} +220 -19
  50. package/dist/{setup-server-VJ3MGUSM.js → setup-server-YWAPKZVE.js} +14 -13
  51. package/dist/{store-2IGAMTES.js → store-PGHQASBC.js} +10 -8
  52. package/dist/{task-dependency-resolver-CQ432Z7J.js → task-dependency-resolver-YQKADDEU.js} +24 -10
  53. package/dist/{task-executor-JELRREUV.js → task-executor-LWAWD225.js} +4 -4
  54. package/dist/{tool-adapter-IVX2XQJE.js → tool-adapter-VKLUZSQS.js} +1 -1
  55. package/dist/{tool-index-XPCMWBYY.js → tool-index-YEWDF5CK.js} +4 -4
  56. package/dist/{transcript-OEO3HA4Z.js → transcript-4Y3Z2BJ3.js} +2 -2
  57. package/dist/web/assets/Config-MNxA69ib.js +1 -0
  58. package/dist/web/assets/Conversations-Dk958paA.js +1 -0
  59. package/dist/web/assets/Dashboard-dM18fGOm.js +1 -0
  60. package/dist/web/assets/Hooks-D2griQnI.js +1 -0
  61. package/dist/web/assets/Mcp-CtWNzwsz.js +1 -0
  62. package/dist/web/assets/Memory-CfLwH45G.js +1 -0
  63. package/dist/web/assets/Plugins-3hoJprFo.js +1 -0
  64. package/dist/web/assets/SearchInput-CpcETdpE.js +1 -0
  65. package/dist/web/assets/Soul-BSxE73aK.js +1 -0
  66. package/dist/web/assets/Tasks-DkCkfu3A.js +1 -0
  67. package/dist/web/assets/TelegramSettingsPanel-BRzc5G6e.js +1 -0
  68. package/dist/web/assets/Tools-Du8B8Mb4.js +1 -0
  69. package/dist/web/assets/Wallet-BLILP2Gn.js +1 -0
  70. package/dist/web/assets/Workspace-qklcXpXV.js +1 -0
  71. package/dist/web/assets/index-BwEPTTKp.js +90 -0
  72. package/dist/web/assets/index-noejUsK7.css +1 -0
  73. package/dist/web/assets/{index.es-eSR4Qv6s.js → index.es-DdpKlnGb.js} +1 -1
  74. package/dist/web/assets/useToolManager-tdxkKn3H.js +1 -0
  75. package/dist/web/assets/utils-CnsbSMo4.js +1 -0
  76. package/dist/web/index.html +2 -2
  77. package/package.json +7 -8
  78. package/dist/web/assets/index-DmlyQVhR.css +0 -1
  79. package/dist/web/assets/index-Dn5ZH1Y6.js +0 -80
  80. package/dist/{chunk-WFTC3JJW.js → chunk-3NO7QU7W.js} +1 -1
package/dist/index.js CHANGED
@@ -1,31 +1,39 @@
1
1
  import {
2
2
  TeletonApp,
3
3
  main
4
- } from "./chunk-LM6AL6LN.js";
5
- import "./chunk-NVKBBTI6.js";
6
- import "./chunk-5K4YDCVU.js";
7
- import "./chunk-2MZP75SH.js";
8
- import "./chunk-LD24DWWE.js";
9
- import "./chunk-H7MFXJZK.js";
10
- import "./chunk-6U6VA2OT.js";
11
- import "./chunk-M6M4DCDU.js";
12
- import "./chunk-FSL2MOYK.js";
13
- import "./chunk-35X3V6OW.js";
14
- import "./chunk-3UFPFWYP.js";
4
+ } from "./chunk-4MFN75ZK.js";
5
+ import "./chunk-K3QSIIMZ.js";
6
+ import "./chunk-7KI25UJU.js";
7
+ import "./chunk-6IFNQWIM.js";
8
+ import "./chunk-ZHRDETCX.js";
9
+ import "./chunk-2UUGRY5B.js";
15
10
  import "./chunk-7TECSLJ4.js";
16
- import "./chunk-PK3TVFBT.js";
11
+ import "./chunk-AX5NBEHX.js";
12
+ import "./chunk-F6S3L3OV.js";
13
+ import "./chunk-ULVL2W3D.js";
14
+ import "./chunk-QYZBWU2D.js";
15
+ import "./chunk-OMQIAWEU.js";
16
+ import "./chunk-4L66JHQE.js";
17
+ import "./chunk-TTOZCZWE.js";
18
+ import "./chunk-Z5WY7BSB.js";
17
19
  import "./chunk-VFA7QMCZ.js";
18
- import "./chunk-L3LPVF4Z.js";
19
- import "./chunk-4KURCUWD.js";
20
- import "./chunk-WTDAICGT.js";
21
- import "./chunk-6OOHHJ4N.js";
20
+ import "./chunk-ZGKE3OTA.js";
21
+ import "./chunk-UJ54YT2T.js";
22
+ import "./chunk-WSL4KIOI.js";
23
+ import "./chunk-EKCXKL5M.js";
24
+ import "./chunk-3UFPFWYP.js";
25
+ import "./chunk-PCT7GYBP.js";
26
+ import "./chunk-CXTZPOTA.js";
27
+ import "./chunk-J4WDJ7XS.js";
28
+ import "./chunk-D3GT6YIY.js";
29
+ import "./chunk-R6W4DJRK.js";
30
+ import "./chunk-TFTNZZDH.js";
22
31
  import "./chunk-XQUHC3JZ.js";
23
32
  import "./chunk-R4YSJ4EY.js";
24
- import "./chunk-GUX6ZFVF.js";
25
- import "./chunk-KYSAHDYE.js";
33
+ import "./chunk-4MG2AROG.js";
34
+ import "./chunk-BT2I3ETV.js";
26
35
  import "./chunk-L653KKCR.js";
27
- import "./chunk-NQ6FZKCE.js";
28
- import "./chunk-4L66JHQE.js";
36
+ import "./chunk-V3S3NXBQ.js";
29
37
  import "./chunk-3RG5ZIWI.js";
30
38
  export {
31
39
  TeletonApp,
@@ -0,0 +1,19 @@
1
+ import {
2
+ KnowledgeIndexer,
3
+ getKnowledgeIndexer,
4
+ setKnowledgeIndexer
5
+ } from "./chunk-OMQIAWEU.js";
6
+ import "./chunk-Z5WY7BSB.js";
7
+ import "./chunk-VFA7QMCZ.js";
8
+ import "./chunk-J4WDJ7XS.js";
9
+ import "./chunk-XQUHC3JZ.js";
10
+ import "./chunk-R4YSJ4EY.js";
11
+ import "./chunk-BT2I3ETV.js";
12
+ import "./chunk-L653KKCR.js";
13
+ import "./chunk-V3S3NXBQ.js";
14
+ import "./chunk-3RG5ZIWI.js";
15
+ export {
16
+ KnowledgeIndexer,
17
+ getKnowledgeIndexer,
18
+ setKnowledgeIndexer
19
+ };
@@ -1,8 +1,8 @@
1
1
  import {
2
2
  LocalEmbeddingProvider
3
- } from "./chunk-KYSAHDYE.js";
3
+ } from "./chunk-BT2I3ETV.js";
4
4
  import "./chunk-L653KKCR.js";
5
- import "./chunk-NQ6FZKCE.js";
5
+ import "./chunk-V3S3NXBQ.js";
6
6
  import "./chunk-3RG5ZIWI.js";
7
7
  export {
8
8
  LocalEmbeddingProvider
@@ -0,0 +1,15 @@
1
+ import {
2
+ closeMcpServers,
3
+ loadMcpServers,
4
+ registerMcpTools
5
+ } from "./chunk-7KI25UJU.js";
6
+ import "./chunk-AX5NBEHX.js";
7
+ import "./chunk-3UFPFWYP.js";
8
+ import "./chunk-R4YSJ4EY.js";
9
+ import "./chunk-V3S3NXBQ.js";
10
+ import "./chunk-3RG5ZIWI.js";
11
+ export {
12
+ closeMcpServers,
13
+ loadMcpServers,
14
+ registerMcpTools
15
+ };
@@ -3,9 +3,7 @@ import {
3
3
  ChatStore,
4
4
  ContextBuilder,
5
5
  HybridSearch,
6
- KnowledgeIndexer,
7
6
  MemoryDatabase,
8
- MessageStore,
9
7
  SessionStore,
10
8
  UserStore,
11
9
  closeDatabase,
@@ -17,8 +15,21 @@ import {
17
15
  parseTemporalIntent,
18
16
  runMigrations,
19
17
  setSchemaVersion
20
- } from "./chunk-2MZP75SH.js";
21
- import "./chunk-35X3V6OW.js";
18
+ } from "./chunk-ULVL2W3D.js";
19
+ import "./chunk-QYZBWU2D.js";
20
+ import {
21
+ KnowledgeIndexer,
22
+ getKnowledgeIndexer,
23
+ setKnowledgeIndexer
24
+ } from "./chunk-OMQIAWEU.js";
25
+ import {
26
+ TaskStore,
27
+ getTaskStore
28
+ } from "./chunk-4L66JHQE.js";
29
+ import {
30
+ MessageStore,
31
+ pruneOldMessages
32
+ } from "./chunk-TTOZCZWE.js";
22
33
  import {
23
34
  AnthropicEmbeddingProvider,
24
35
  CachedEmbeddingProvider,
@@ -27,20 +38,16 @@ import {
27
38
  deserializeEmbedding,
28
39
  hashText,
29
40
  serializeEmbedding
30
- } from "./chunk-PK3TVFBT.js";
41
+ } from "./chunk-Z5WY7BSB.js";
31
42
  import "./chunk-VFA7QMCZ.js";
32
- import "./chunk-L3LPVF4Z.js";
43
+ import "./chunk-J4WDJ7XS.js";
33
44
  import "./chunk-XQUHC3JZ.js";
34
45
  import "./chunk-R4YSJ4EY.js";
35
46
  import {
36
47
  LocalEmbeddingProvider
37
- } from "./chunk-KYSAHDYE.js";
48
+ } from "./chunk-BT2I3ETV.js";
38
49
  import "./chunk-L653KKCR.js";
39
- import "./chunk-NQ6FZKCE.js";
40
- import {
41
- TaskStore,
42
- getTaskStore
43
- } from "./chunk-4L66JHQE.js";
50
+ import "./chunk-V3S3NXBQ.js";
44
51
  import "./chunk-3RG5ZIWI.js";
45
52
  export {
46
53
  AnthropicEmbeddingProvider,
@@ -63,12 +70,15 @@ export {
63
70
  ensureSchema,
64
71
  ensureVectorTables,
65
72
  getDatabase,
73
+ getKnowledgeIndexer,
66
74
  getSchemaVersion,
67
75
  getTaskStore,
68
76
  hashText,
69
77
  initializeMemory,
70
78
  parseTemporalIntent,
79
+ pruneOldMessages,
71
80
  runMigrations,
72
81
  serializeEmbedding,
82
+ setKnowledgeIndexer,
73
83
  setSchemaVersion
74
84
  };
@@ -1,17 +1,17 @@
1
1
  import {
2
2
  consolidateOldMemoryFiles,
3
3
  saveSessionMemory
4
- } from "./chunk-LD24DWWE.js";
4
+ } from "./chunk-ZGKE3OTA.js";
5
5
  import "./chunk-3UFPFWYP.js";
6
- import "./chunk-L3LPVF4Z.js";
7
- import "./chunk-4KURCUWD.js";
8
- import "./chunk-WTDAICGT.js";
9
- import "./chunk-6OOHHJ4N.js";
6
+ import "./chunk-J4WDJ7XS.js";
7
+ import "./chunk-D3GT6YIY.js";
8
+ import "./chunk-R6W4DJRK.js";
9
+ import "./chunk-TFTNZZDH.js";
10
10
  import "./chunk-XQUHC3JZ.js";
11
11
  import "./chunk-R4YSJ4EY.js";
12
- import "./chunk-GUX6ZFVF.js";
12
+ import "./chunk-4MG2AROG.js";
13
13
  import "./chunk-L653KKCR.js";
14
- import "./chunk-NQ6FZKCE.js";
14
+ import "./chunk-V3S3NXBQ.js";
15
15
  import "./chunk-3RG5ZIWI.js";
16
16
  export {
17
17
  consolidateOldMemoryFiles,
@@ -0,0 +1,17 @@
1
+ import {
2
+ MessageStore,
3
+ pruneOldMessages
4
+ } from "./chunk-TTOZCZWE.js";
5
+ import "./chunk-Z5WY7BSB.js";
6
+ import "./chunk-VFA7QMCZ.js";
7
+ import "./chunk-J4WDJ7XS.js";
8
+ import "./chunk-XQUHC3JZ.js";
9
+ import "./chunk-R4YSJ4EY.js";
10
+ import "./chunk-BT2I3ETV.js";
11
+ import "./chunk-L653KKCR.js";
12
+ import "./chunk-V3S3NXBQ.js";
13
+ import "./chunk-3RG5ZIWI.js";
14
+ export {
15
+ MessageStore,
16
+ pruneOldMessages
17
+ };
@@ -1,20 +1,22 @@
1
1
  import {
2
2
  getDatabase
3
- } from "./chunk-2MZP75SH.js";
4
- import "./chunk-35X3V6OW.js";
5
- import "./chunk-PK3TVFBT.js";
3
+ } from "./chunk-ULVL2W3D.js";
4
+ import "./chunk-QYZBWU2D.js";
5
+ import "./chunk-OMQIAWEU.js";
6
+ import "./chunk-4L66JHQE.js";
7
+ import "./chunk-TTOZCZWE.js";
8
+ import "./chunk-Z5WY7BSB.js";
6
9
  import "./chunk-VFA7QMCZ.js";
7
- import "./chunk-L3LPVF4Z.js";
10
+ import "./chunk-J4WDJ7XS.js";
8
11
  import "./chunk-XQUHC3JZ.js";
9
12
  import "./chunk-R4YSJ4EY.js";
10
- import "./chunk-KYSAHDYE.js";
13
+ import "./chunk-BT2I3ETV.js";
11
14
  import {
12
15
  TELETON_ROOT
13
16
  } from "./chunk-L653KKCR.js";
14
17
  import {
15
18
  createLogger
16
- } from "./chunk-NQ6FZKCE.js";
17
- import "./chunk-4L66JHQE.js";
19
+ } from "./chunk-V3S3NXBQ.js";
18
20
  import "./chunk-3RG5ZIWI.js";
19
21
 
20
22
  // src/session/migrate.ts
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  createSetupRoutes
3
- } from "./chunk-7ZXUUDQQ.js";
3
+ } from "./chunk-BLUES3FJ.js";
4
4
  import {
5
5
  createConfigRoutes,
6
6
  createHooksRoutes,
@@ -16,21 +16,26 @@ import {
16
16
  createToolsRoutes,
17
17
  createWorkspaceRoutes,
18
18
  logInterceptor
19
- } from "./chunk-Z63KUQX4.js";
19
+ } from "./chunk-JYF2MM5I.js";
20
20
  import {
21
21
  ensureTlsCert
22
- } from "./chunk-5SEMA47R.js";
23
- import "./chunk-WFTC3JJW.js";
24
- import "./chunk-6U6VA2OT.js";
25
- import "./chunk-M6M4DCDU.js";
26
- import "./chunk-FSL2MOYK.js";
27
- import "./chunk-35X3V6OW.js";
28
- import "./chunk-3UFPFWYP.js";
22
+ } from "./chunk-RILOEIK6.js";
23
+ import "./chunk-3NO7QU7W.js";
24
+ import "./chunk-6IFNQWIM.js";
25
+ import "./chunk-ZHRDETCX.js";
26
+ import "./chunk-2UUGRY5B.js";
29
27
  import "./chunk-7TECSLJ4.js";
28
+ import "./chunk-AX5NBEHX.js";
29
+ import "./chunk-QYZBWU2D.js";
30
+ import "./chunk-4L66JHQE.js";
30
31
  import "./chunk-VFA7QMCZ.js";
31
- import "./chunk-L3LPVF4Z.js";
32
- import "./chunk-WTDAICGT.js";
33
- import "./chunk-6OOHHJ4N.js";
32
+ import "./chunk-EKCXKL5M.js";
33
+ import "./chunk-3UFPFWYP.js";
34
+ import "./chunk-PCT7GYBP.js";
35
+ import "./chunk-CXTZPOTA.js";
36
+ import "./chunk-J4WDJ7XS.js";
37
+ import "./chunk-R6W4DJRK.js";
38
+ import "./chunk-TFTNZZDH.js";
34
39
  import "./chunk-XQUHC3JZ.js";
35
40
  import "./chunk-R4YSJ4EY.js";
36
41
  import {
@@ -38,8 +43,7 @@ import {
38
43
  } from "./chunk-L653KKCR.js";
39
44
  import {
40
45
  createLogger
41
- } from "./chunk-NQ6FZKCE.js";
42
- import "./chunk-4L66JHQE.js";
46
+ } from "./chunk-V3S3NXBQ.js";
43
47
  import "./chunk-3RG5ZIWI.js";
44
48
 
45
49
  // src/api/server.ts
@@ -284,8 +288,8 @@ function createAgentRoutes(lifecycle) {
284
288
  }
285
289
  await lifecycle.start();
286
290
  log.info("Agent restarted via Management API");
287
- } catch (err) {
288
- log.error({ err }, "Agent restart failed");
291
+ } catch (error) {
292
+ log.error({ err: error }, "Agent restart failed");
289
293
  }
290
294
  })().catch(() => {
291
295
  });
@@ -13,34 +13,49 @@ import {
13
13
  createToolsRoutes,
14
14
  createWorkspaceRoutes,
15
15
  logInterceptor
16
- } from "./chunk-Z63KUQX4.js";
17
- import "./chunk-WFTC3JJW.js";
18
- import "./chunk-6U6VA2OT.js";
19
- import "./chunk-M6M4DCDU.js";
20
- import "./chunk-FSL2MOYK.js";
21
- import "./chunk-35X3V6OW.js";
22
- import "./chunk-3UFPFWYP.js";
16
+ } from "./chunk-JYF2MM5I.js";
17
+ import "./chunk-3NO7QU7W.js";
18
+ import {
19
+ formatTransactions
20
+ } from "./chunk-6IFNQWIM.js";
21
+ import {
22
+ getCachedTonClient,
23
+ getWalletAddress,
24
+ getWalletBalance,
25
+ readRawConfig,
26
+ writeRawConfig
27
+ } from "./chunk-ZHRDETCX.js";
28
+ import "./chunk-2UUGRY5B.js";
23
29
  import "./chunk-7TECSLJ4.js";
30
+ import "./chunk-AX5NBEHX.js";
31
+ import "./chunk-QYZBWU2D.js";
32
+ import "./chunk-4L66JHQE.js";
24
33
  import "./chunk-VFA7QMCZ.js";
25
- import "./chunk-L3LPVF4Z.js";
26
- import "./chunk-6OOHHJ4N.js";
34
+ import "./chunk-EKCXKL5M.js";
35
+ import {
36
+ getErrorMessage
37
+ } from "./chunk-3UFPFWYP.js";
38
+ import "./chunk-PCT7GYBP.js";
39
+ import "./chunk-CXTZPOTA.js";
40
+ import "./chunk-J4WDJ7XS.js";
41
+ import "./chunk-TFTNZZDH.js";
27
42
  import "./chunk-XQUHC3JZ.js";
28
43
  import "./chunk-R4YSJ4EY.js";
29
44
  import "./chunk-L653KKCR.js";
30
45
  import {
31
46
  createLogger
32
- } from "./chunk-NQ6FZKCE.js";
33
- import "./chunk-4L66JHQE.js";
47
+ } from "./chunk-V3S3NXBQ.js";
34
48
  import "./chunk-3RG5ZIWI.js";
35
49
 
36
50
  // src/webui/server.ts
37
- import { Hono } from "hono";
51
+ import { Hono as Hono3 } from "hono";
38
52
  import { serve } from "@hono/node-server";
39
53
  import { cors } from "hono/cors";
40
54
  import { streamSSE } from "hono/streaming";
41
55
  import { bodyLimit } from "hono/body-limit";
42
56
  import { setCookie, getCookie, deleteCookie } from "hono/cookie";
43
- import { existsSync, readFileSync } from "fs";
57
+ import { existsSync } from "fs";
58
+ import { readFile } from "fs/promises";
44
59
  import { join, dirname, resolve, relative } from "path";
45
60
  import { fileURLToPath } from "url";
46
61
 
@@ -63,6 +78,128 @@ function safeCompare(a, b) {
63
78
  return timingSafeEqual(bufA, bufB);
64
79
  }
65
80
 
81
+ // src/webui/routes/conversations.ts
82
+ import { Hono } from "hono";
83
+ function createConversationRoutes(deps) {
84
+ const app = new Hono();
85
+ app.get("/", (c) => {
86
+ try {
87
+ const chats = deps.memory.db.prepare(
88
+ `
89
+ SELECT c.id, c.type, c.title, c.username,
90
+ (SELECT COUNT(*) FROM tg_messages m WHERE m.chat_id = c.id) as message_count,
91
+ (SELECT MAX(timestamp) FROM tg_messages m WHERE m.chat_id = c.id) as last_message_at,
92
+ (SELECT text FROM tg_messages m WHERE m.chat_id = c.id ORDER BY timestamp DESC LIMIT 1) as last_message
93
+ FROM tg_chats c
94
+ ORDER BY last_message_at DESC NULLS LAST
95
+ `
96
+ ).all();
97
+ const response = {
98
+ success: true,
99
+ data: chats
100
+ };
101
+ return c.json(response);
102
+ } catch (error) {
103
+ const response = {
104
+ success: false,
105
+ error: getErrorMessage(error)
106
+ };
107
+ return c.json(response, 500);
108
+ }
109
+ });
110
+ app.get("/:chatId/messages", (c) => {
111
+ try {
112
+ const chatId = c.req.param("chatId");
113
+ const limit = Number(c.req.query("limit") || "50");
114
+ const offset = Number(c.req.query("offset") || "0");
115
+ const messages = deps.memory.db.prepare(
116
+ `
117
+ SELECT id, chat_id, sender_id, text, is_from_agent, has_media, media_type, timestamp
118
+ FROM tg_messages
119
+ WHERE chat_id = ?
120
+ ORDER BY timestamp DESC
121
+ LIMIT ? OFFSET ?
122
+ `
123
+ ).all(chatId, limit, offset);
124
+ const response = {
125
+ success: true,
126
+ data: messages
127
+ };
128
+ return c.json(response);
129
+ } catch (error) {
130
+ const response = {
131
+ success: false,
132
+ error: getErrorMessage(error)
133
+ };
134
+ return c.json(response, 500);
135
+ }
136
+ });
137
+ return app;
138
+ }
139
+
140
+ // src/webui/routes/wallet.ts
141
+ import { Hono as Hono2 } from "hono";
142
+ import { Address } from "@ton/core";
143
+ function createWalletRoutes(_deps) {
144
+ const app = new Hono2();
145
+ app.get("/", async (c) => {
146
+ try {
147
+ const address = getWalletAddress();
148
+ if (!address) {
149
+ const response2 = {
150
+ success: true,
151
+ data: { address: null, balance: "0" }
152
+ };
153
+ return c.json(response2);
154
+ }
155
+ const balanceResult = await getWalletBalance(address);
156
+ const response = {
157
+ success: true,
158
+ data: {
159
+ address,
160
+ balance: balanceResult?.balance ?? "0"
161
+ }
162
+ };
163
+ return c.json(response);
164
+ } catch (error) {
165
+ const response = {
166
+ success: false,
167
+ error: getErrorMessage(error)
168
+ };
169
+ return c.json(response, 500);
170
+ }
171
+ });
172
+ app.get("/transactions", async (c) => {
173
+ try {
174
+ const address = getWalletAddress();
175
+ if (!address) {
176
+ const response2 = {
177
+ success: false,
178
+ error: "No wallet configured"
179
+ };
180
+ return c.json(response2, 404);
181
+ }
182
+ const limit = Math.min(Number(c.req.query("limit") || "20"), 50);
183
+ const client = await getCachedTonClient();
184
+ const addressObj = Address.parse(address);
185
+ const transactions = await client.getTransactions(addressObj, { limit });
186
+ const formatted = formatTransactions(transactions);
187
+ const response = {
188
+ success: true,
189
+ data: formatted
190
+ };
191
+ return c.json(response);
192
+ } catch (error) {
193
+ const response = {
194
+ success: false,
195
+ error: getErrorMessage(error)
196
+ };
197
+ return c.json(response, 500);
198
+ }
199
+ });
200
+ return app;
201
+ }
202
+
66
203
  // src/webui/server.ts
67
204
  var log = createLogger("WebUI");
68
205
  function findWebDist() {
@@ -93,7 +230,7 @@ var WebUIServer = class {
93
230
  authToken;
94
231
  constructor(deps) {
95
232
  this.deps = deps;
96
- this.app = new Hono();
233
+ this.app = new Hono3();
97
234
  this.authToken = deps.config.auth_token || generateToken();
98
235
  this.setupMiddleware();
99
236
  this.setupRoutes();
@@ -206,6 +343,8 @@ var WebUIServer = class {
206
343
  this.app.route("/api/marketplace", createMarketplaceRoutes(this.deps));
207
344
  this.app.route("/api/hooks", createHooksRoutes(this.deps));
208
345
  this.app.route("/api/ton-proxy", createTonProxyRoutes(this.deps));
346
+ this.app.route("/api/conversations", createConversationRoutes(this.deps));
347
+ this.app.route("/api/wallet", createWalletRoutes(this.deps));
209
348
  this.app.post("/api/agent/start", async (c) => {
210
349
  const lifecycle = this.deps.lifecycle;
211
350
  if (!lifecycle) {
@@ -251,6 +390,68 @@ var WebUIServer = class {
251
390
  error: lifecycle.getError() ?? null
252
391
  });
253
392
  });
393
+ this.app.get("/api/agent/mode", (c) => {
394
+ const raw = readRawConfig(this.deps.configPath);
395
+ const telegram = raw?.telegram || {};
396
+ const currentMode = telegram.mode || "user";
397
+ const hasBotToken = !!telegram.bot_token;
398
+ const hasUserCredentials = !!(telegram.api_id && telegram.api_hash && telegram.phone);
399
+ return c.json({
400
+ mode: currentMode,
401
+ canSwitchToBot: hasBotToken,
402
+ canSwitchToUser: hasUserCredentials
403
+ });
404
+ });
405
+ this.app.post("/api/agent/mode", async (c) => {
406
+ const lifecycle = this.deps.lifecycle;
407
+ if (!lifecycle) {
408
+ return c.json({ error: "Agent lifecycle not available" }, 503);
409
+ }
410
+ const body = await c.req.json();
411
+ if (body.mode !== "user" && body.mode !== "bot") {
412
+ return c.json({ error: "Invalid mode" }, 400);
413
+ }
414
+ const raw = readRawConfig(this.deps.configPath);
415
+ if (!raw?.telegram) {
416
+ return c.json({ error: "No telegram config found" }, 400);
417
+ }
418
+ if (body.mode === "bot") {
419
+ const token = body.botToken || raw.telegram.bot_token;
420
+ if (!token) {
421
+ return c.json({ error: "Bot token required" }, 400);
422
+ }
423
+ if (body.botToken) {
424
+ try {
425
+ const resp = await fetch(`https://api.telegram.org/bot${body.botToken}/getMe`);
426
+ const result = await resp.json();
427
+ if (!result.ok) {
428
+ return c.json(
429
+ { error: `Invalid bot token: ${result.description || "validation failed"}` },
430
+ 400
431
+ );
432
+ }
433
+ } catch {
434
+ return c.json({ error: "Failed to validate bot token (network error)" }, 400);
435
+ }
436
+ raw.telegram.bot_token = body.botToken;
437
+ }
438
+ } else {
439
+ if (body.userCredentials) {
440
+ raw.telegram.api_id = body.userCredentials.apiId;
441
+ raw.telegram.api_hash = body.userCredentials.apiHash;
442
+ raw.telegram.phone = body.userCredentials.phone;
443
+ }
444
+ if (!raw.telegram.api_id || !raw.telegram.api_hash || !raw.telegram.phone) {
445
+ return c.json({ error: "User credentials (api_id, api_hash, phone) required" }, 400);
446
+ }
447
+ }
448
+ raw.telegram.mode = body.mode;
449
+ writeRawConfig(raw, this.deps.configPath);
450
+ lifecycle.stop().then(() => lifecycle.start()).catch((err) => {
451
+ log.error({ err }, "Mode switch restart failed");
452
+ });
453
+ return c.json({ success: true, mode: body.mode, restarting: true });
454
+ });
254
455
  this.app.get("/api/agent/events", (c) => {
255
456
  const lifecycle = this.deps.lifecycle;
256
457
  if (!lifecycle) {
@@ -298,7 +499,7 @@ var WebUIServer = class {
298
499
  });
299
500
  const webDist = findWebDist();
300
501
  if (webDist) {
301
- const indexHtml = readFileSync(join(webDist, "index.html"), "utf-8");
502
+ const indexHtml = readFile(join(webDist, "index.html"), "utf-8");
302
503
  const mimeTypes = {
303
504
  js: "application/javascript",
304
505
  css: "text/css",
@@ -311,14 +512,14 @@ var WebUIServer = class {
311
512
  woff2: "font/woff2",
312
513
  woff: "font/woff"
313
514
  };
314
- this.app.get("*", (c) => {
515
+ this.app.get("*", async (c) => {
315
516
  const filePath = resolve(join(webDist, c.req.path));
316
517
  const rel = relative(webDist, filePath);
317
518
  if (rel.startsWith("..") || resolve(filePath) !== filePath) {
318
- return c.html(indexHtml);
519
+ return c.html(await indexHtml);
319
520
  }
320
521
  try {
321
- const content = readFileSync(filePath);
522
+ const content = await readFile(filePath);
322
523
  const ext = filePath.split(".").pop() || "";
323
524
  if (mimeTypes[ext]) {
324
525
  const immutable = c.req.path.startsWith("/assets/");
@@ -329,7 +530,7 @@ var WebUIServer = class {
329
530
  }
330
531
  } catch {
331
532
  }
332
- return c.html(indexHtml);
533
+ return c.html(await indexHtml);
333
534
  });
334
535
  }
335
536
  this.app.onError((err, c) => {
@@ -1,13 +1,17 @@
1
1
  import {
2
2
  createSetupRoutes
3
- } from "./chunk-7ZXUUDQQ.js";
4
- import "./chunk-WFTC3JJW.js";
5
- import "./chunk-M6M4DCDU.js";
6
- import "./chunk-FSL2MOYK.js";
3
+ } from "./chunk-BLUES3FJ.js";
4
+ import "./chunk-3NO7QU7W.js";
5
+ import "./chunk-ZHRDETCX.js";
6
+ import "./chunk-2UUGRY5B.js";
7
7
  import "./chunk-VFA7QMCZ.js";
8
- import "./chunk-L3LPVF4Z.js";
9
- import "./chunk-WTDAICGT.js";
10
- import "./chunk-6OOHHJ4N.js";
8
+ import {
9
+ getErrorMessage
10
+ } from "./chunk-3UFPFWYP.js";
11
+ import "./chunk-CXTZPOTA.js";
12
+ import "./chunk-J4WDJ7XS.js";
13
+ import "./chunk-R6W4DJRK.js";
14
+ import "./chunk-TFTNZZDH.js";
11
15
  import "./chunk-XQUHC3JZ.js";
12
16
  import "./chunk-R4YSJ4EY.js";
13
17
  import {
@@ -15,7 +19,7 @@ import {
15
19
  } from "./chunk-L653KKCR.js";
16
20
  import {
17
21
  createLogger
18
- } from "./chunk-NQ6FZKCE.js";
22
+ } from "./chunk-V3S3NXBQ.js";
19
23
  import "./chunk-3RG5ZIWI.js";
20
24
 
21
25
  // src/webui/setup-server.ts
@@ -129,11 +133,8 @@ var SetupServer = class {
129
133
  setTimeout(() => resolve2(token), 500);
130
134
  }
131
135
  return c.json({ success: true, data: { token } });
132
- } catch (err) {
133
- return c.json(
134
- { success: false, error: err instanceof Error ? err.message : String(err) },
135
- 500
136
- );
136
+ } catch (error) {
137
+ return c.json({ success: false, error: getErrorMessage(error) }, 500);
137
138
  }
138
139
  });
139
140
  this.app.onError((err, c) => {