siclaw 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 (460) hide show
  1. package/LICENSE +190 -0
  2. package/README.md +268 -0
  3. package/dist/agentbox/gateway-client.d.ts +41 -0
  4. package/dist/agentbox/gateway-client.js +108 -0
  5. package/dist/agentbox/gateway-client.js.map +1 -0
  6. package/dist/agentbox/http-server.d.ts +12 -0
  7. package/dist/agentbox/http-server.js +700 -0
  8. package/dist/agentbox/http-server.js.map +1 -0
  9. package/dist/agentbox/mcp-sync.d.ts +6 -0
  10. package/dist/agentbox/mcp-sync.js +26 -0
  11. package/dist/agentbox/mcp-sync.js.map +1 -0
  12. package/dist/agentbox/resource-handlers.d.ts +40 -0
  13. package/dist/agentbox/resource-handlers.js +116 -0
  14. package/dist/agentbox/resource-handlers.js.map +1 -0
  15. package/dist/agentbox/resource-sync.d.ts +28 -0
  16. package/dist/agentbox/resource-sync.js +74 -0
  17. package/dist/agentbox/resource-sync.js.map +1 -0
  18. package/dist/agentbox/session.d.ts +145 -0
  19. package/dist/agentbox/session.js +444 -0
  20. package/dist/agentbox/session.js.map +1 -0
  21. package/dist/agentbox-main.d.ts +7 -0
  22. package/dist/agentbox-main.js +90 -0
  23. package/dist/agentbox-main.js.map +1 -0
  24. package/dist/cli-main.d.ts +1 -0
  25. package/dist/cli-main.js +187 -0
  26. package/dist/cli-main.js.map +1 -0
  27. package/dist/cli-setup.d.ts +17 -0
  28. package/dist/cli-setup.js +247 -0
  29. package/dist/cli-setup.js.map +1 -0
  30. package/dist/core/agent-factory.d.ts +52 -0
  31. package/dist/core/agent-factory.js +547 -0
  32. package/dist/core/agent-factory.js.map +1 -0
  33. package/dist/core/brain-session.d.ts +67 -0
  34. package/dist/core/brain-session.js +15 -0
  35. package/dist/core/brain-session.js.map +1 -0
  36. package/dist/core/brains/claude-sdk-brain.d.ts +76 -0
  37. package/dist/core/brains/claude-sdk-brain.js +403 -0
  38. package/dist/core/brains/claude-sdk-brain.js.map +1 -0
  39. package/dist/core/brains/pi-agent-brain.d.ts +28 -0
  40. package/dist/core/brains/pi-agent-brain.js +84 -0
  41. package/dist/core/brains/pi-agent-brain.js.map +1 -0
  42. package/dist/core/config.d.ts +109 -0
  43. package/dist/core/config.js +294 -0
  44. package/dist/core/config.js.map +1 -0
  45. package/dist/core/extensions/context-pruning.d.ts +38 -0
  46. package/dist/core/extensions/context-pruning.js +162 -0
  47. package/dist/core/extensions/context-pruning.js.map +1 -0
  48. package/dist/core/extensions/deep-investigation.d.ts +2 -0
  49. package/dist/core/extensions/deep-investigation.js +541 -0
  50. package/dist/core/extensions/deep-investigation.js.map +1 -0
  51. package/dist/core/extensions/memory-flush.d.ts +20 -0
  52. package/dist/core/extensions/memory-flush.js +120 -0
  53. package/dist/core/extensions/memory-flush.js.map +1 -0
  54. package/dist/core/llm-proxy.d.ts +37 -0
  55. package/dist/core/llm-proxy.js +578 -0
  56. package/dist/core/llm-proxy.js.map +1 -0
  57. package/dist/core/mcp-client.d.ts +80 -0
  58. package/dist/core/mcp-client.js +285 -0
  59. package/dist/core/mcp-client.js.map +1 -0
  60. package/dist/core/prompt.d.ts +1 -0
  61. package/dist/core/prompt.js +64 -0
  62. package/dist/core/prompt.js.map +1 -0
  63. package/dist/core/tool-adapter.d.ts +45 -0
  64. package/dist/core/tool-adapter.js +154 -0
  65. package/dist/core/tool-adapter.js.map +1 -0
  66. package/dist/cron/cron-api.d.ts +9 -0
  67. package/dist/cron/cron-api.js +94 -0
  68. package/dist/cron/cron-api.js.map +1 -0
  69. package/dist/cron/cron-coordinator.d.ts +29 -0
  70. package/dist/cron/cron-coordinator.js +150 -0
  71. package/dist/cron/cron-coordinator.js.map +1 -0
  72. package/dist/cron/cron-executor.d.ts +15 -0
  73. package/dist/cron/cron-executor.js +90 -0
  74. package/dist/cron/cron-executor.js.map +1 -0
  75. package/dist/cron/cron-matcher.d.ts +19 -0
  76. package/dist/cron/cron-matcher.js +114 -0
  77. package/dist/cron/cron-matcher.js.map +1 -0
  78. package/dist/cron/cron-scheduler.d.ts +42 -0
  79. package/dist/cron/cron-scheduler.js +91 -0
  80. package/dist/cron/cron-scheduler.js.map +1 -0
  81. package/dist/cron/gateway-client.d.ts +32 -0
  82. package/dist/cron/gateway-client.js +91 -0
  83. package/dist/cron/gateway-client.js.map +1 -0
  84. package/dist/cron-main.d.ts +10 -0
  85. package/dist/cron-main.js +75 -0
  86. package/dist/cron-main.js.map +1 -0
  87. package/dist/gateway/agentbox/client.d.ts +187 -0
  88. package/dist/gateway/agentbox/client.js +314 -0
  89. package/dist/gateway/agentbox/client.js.map +1 -0
  90. package/dist/gateway/agentbox/index.d.ts +10 -0
  91. package/dist/gateway/agentbox/index.js +11 -0
  92. package/dist/gateway/agentbox/index.js.map +1 -0
  93. package/dist/gateway/agentbox/k8s-spawner.d.ts +70 -0
  94. package/dist/gateway/agentbox/k8s-spawner.js +466 -0
  95. package/dist/gateway/agentbox/k8s-spawner.js.map +1 -0
  96. package/dist/gateway/agentbox/local-spawner.d.ts +63 -0
  97. package/dist/gateway/agentbox/local-spawner.js +234 -0
  98. package/dist/gateway/agentbox/local-spawner.js.map +1 -0
  99. package/dist/gateway/agentbox/manager.d.ts +121 -0
  100. package/dist/gateway/agentbox/manager.js +325 -0
  101. package/dist/gateway/agentbox/manager.js.map +1 -0
  102. package/dist/gateway/agentbox/process-spawner.d.ts +21 -0
  103. package/dist/gateway/agentbox/process-spawner.js +168 -0
  104. package/dist/gateway/agentbox/process-spawner.js.map +1 -0
  105. package/dist/gateway/agentbox/spawner.d.ts +33 -0
  106. package/dist/gateway/agentbox/spawner.js +10 -0
  107. package/dist/gateway/agentbox/spawner.js.map +1 -0
  108. package/dist/gateway/agentbox/types.d.ts +39 -0
  109. package/dist/gateway/agentbox/types.js +5 -0
  110. package/dist/gateway/agentbox/types.js.map +1 -0
  111. package/dist/gateway/auth/bind-code-store.d.ts +31 -0
  112. package/dist/gateway/auth/bind-code-store.js +73 -0
  113. package/dist/gateway/auth/bind-code-store.js.map +1 -0
  114. package/dist/gateway/auth/index.d.ts +9 -0
  115. package/dist/gateway/auth/index.js +10 -0
  116. package/dist/gateway/auth/index.js.map +1 -0
  117. package/dist/gateway/auth/jwt.d.ts +23 -0
  118. package/dist/gateway/auth/jwt.js +82 -0
  119. package/dist/gateway/auth/jwt.js.map +1 -0
  120. package/dist/gateway/auth/login.d.ts +26 -0
  121. package/dist/gateway/auth/login.js +74 -0
  122. package/dist/gateway/auth/login.js.map +1 -0
  123. package/dist/gateway/auth/middleware.d.ts +23 -0
  124. package/dist/gateway/auth/middleware.js +67 -0
  125. package/dist/gateway/auth/middleware.js.map +1 -0
  126. package/dist/gateway/auth/oauth2.d.ts +57 -0
  127. package/dist/gateway/auth/oauth2.js +113 -0
  128. package/dist/gateway/auth/oauth2.js.map +1 -0
  129. package/dist/gateway/auth/user-store.d.ts +95 -0
  130. package/dist/gateway/auth/user-store.js +291 -0
  131. package/dist/gateway/auth/user-store.js.map +1 -0
  132. package/dist/gateway/channels/channel-manager.d.ts +42 -0
  133. package/dist/gateway/channels/channel-manager.js +156 -0
  134. package/dist/gateway/channels/channel-manager.js.map +1 -0
  135. package/dist/gateway/channels/channel-rpc.d.ts +9 -0
  136. package/dist/gateway/channels/channel-rpc.js +104 -0
  137. package/dist/gateway/channels/channel-rpc.js.map +1 -0
  138. package/dist/gateway/channels/channel-store.d.ts +32 -0
  139. package/dist/gateway/channels/channel-store.js +114 -0
  140. package/dist/gateway/channels/channel-store.js.map +1 -0
  141. package/dist/gateway/channels/discord.d.ts +5 -0
  142. package/dist/gateway/channels/discord.js +177 -0
  143. package/dist/gateway/channels/discord.js.map +1 -0
  144. package/dist/gateway/channels/lark-format.d.ts +41 -0
  145. package/dist/gateway/channels/lark-format.js +620 -0
  146. package/dist/gateway/channels/lark-format.js.map +1 -0
  147. package/dist/gateway/channels/lark.d.ts +5 -0
  148. package/dist/gateway/channels/lark.js +1000 -0
  149. package/dist/gateway/channels/lark.js.map +1 -0
  150. package/dist/gateway/channels/slack.d.ts +5 -0
  151. package/dist/gateway/channels/slack.js +170 -0
  152. package/dist/gateway/channels/slack.js.map +1 -0
  153. package/dist/gateway/channels/telegram.d.ts +5 -0
  154. package/dist/gateway/channels/telegram.js +173 -0
  155. package/dist/gateway/channels/telegram.js.map +1 -0
  156. package/dist/gateway/channels/utils.d.ts +34 -0
  157. package/dist/gateway/channels/utils.js +115 -0
  158. package/dist/gateway/channels/utils.js.map +1 -0
  159. package/dist/gateway/config.d.ts +14 -0
  160. package/dist/gateway/config.js +12 -0
  161. package/dist/gateway/config.js.map +1 -0
  162. package/dist/gateway/cron/notify.d.ts +14 -0
  163. package/dist/gateway/cron/notify.js +40 -0
  164. package/dist/gateway/cron/notify.js.map +1 -0
  165. package/dist/gateway/db/dialect-helpers.d.ts +8 -0
  166. package/dist/gateway/db/dialect-helpers.js +26 -0
  167. package/dist/gateway/db/dialect-helpers.js.map +1 -0
  168. package/dist/gateway/db/index.d.ts +20 -0
  169. package/dist/gateway/db/index.js +140 -0
  170. package/dist/gateway/db/index.js.map +1 -0
  171. package/dist/gateway/db/init-schema.d.ts +8 -0
  172. package/dist/gateway/db/init-schema.js +385 -0
  173. package/dist/gateway/db/init-schema.js.map +1 -0
  174. package/dist/gateway/db/migrate-sqlite.d.ts +8 -0
  175. package/dist/gateway/db/migrate-sqlite.js +335 -0
  176. package/dist/gateway/db/migrate-sqlite.js.map +1 -0
  177. package/dist/gateway/db/repositories/chat-repo.d.ts +64 -0
  178. package/dist/gateway/db/repositories/chat-repo.js +115 -0
  179. package/dist/gateway/db/repositories/chat-repo.js.map +1 -0
  180. package/dist/gateway/db/repositories/config-repo.d.ts +164 -0
  181. package/dist/gateway/db/repositories/config-repo.js +267 -0
  182. package/dist/gateway/db/repositories/config-repo.js.map +1 -0
  183. package/dist/gateway/db/repositories/credential-repo.d.ts +51 -0
  184. package/dist/gateway/db/repositories/credential-repo.js +70 -0
  185. package/dist/gateway/db/repositories/credential-repo.js.map +1 -0
  186. package/dist/gateway/db/repositories/env-repo.d.ts +37 -0
  187. package/dist/gateway/db/repositories/env-repo.js +74 -0
  188. package/dist/gateway/db/repositories/env-repo.js.map +1 -0
  189. package/dist/gateway/db/repositories/mcp-server-repo.d.ts +97 -0
  190. package/dist/gateway/db/repositories/mcp-server-repo.js +83 -0
  191. package/dist/gateway/db/repositories/mcp-server-repo.js.map +1 -0
  192. package/dist/gateway/db/repositories/model-config-repo.d.ts +141 -0
  193. package/dist/gateway/db/repositories/model-config-repo.js +439 -0
  194. package/dist/gateway/db/repositories/model-config-repo.js.map +1 -0
  195. package/dist/gateway/db/repositories/notification-repo.d.ts +50 -0
  196. package/dist/gateway/db/repositories/notification-repo.js +105 -0
  197. package/dist/gateway/db/repositories/notification-repo.js.map +1 -0
  198. package/dist/gateway/db/repositories/permission-repo.d.ts +28 -0
  199. package/dist/gateway/db/repositories/permission-repo.js +74 -0
  200. package/dist/gateway/db/repositories/permission-repo.js.map +1 -0
  201. package/dist/gateway/db/repositories/skill-content-repo.d.ts +29 -0
  202. package/dist/gateway/db/repositories/skill-content-repo.js +90 -0
  203. package/dist/gateway/db/repositories/skill-content-repo.js.map +1 -0
  204. package/dist/gateway/db/repositories/skill-repo.d.ts +170 -0
  205. package/dist/gateway/db/repositories/skill-repo.js +185 -0
  206. package/dist/gateway/db/repositories/skill-repo.js.map +1 -0
  207. package/dist/gateway/db/repositories/skill-review-repo.d.ts +44 -0
  208. package/dist/gateway/db/repositories/skill-review-repo.js +44 -0
  209. package/dist/gateway/db/repositories/skill-review-repo.js.map +1 -0
  210. package/dist/gateway/db/repositories/skill-version-repo.d.ts +30 -0
  211. package/dist/gateway/db/repositories/skill-version-repo.js +56 -0
  212. package/dist/gateway/db/repositories/skill-version-repo.js.map +1 -0
  213. package/dist/gateway/db/repositories/system-config-repo.d.ts +21 -0
  214. package/dist/gateway/db/repositories/system-config-repo.js +86 -0
  215. package/dist/gateway/db/repositories/system-config-repo.js.map +1 -0
  216. package/dist/gateway/db/repositories/user-env-config-repo.d.ts +32 -0
  217. package/dist/gateway/db/repositories/user-env-config-repo.js +79 -0
  218. package/dist/gateway/db/repositories/user-env-config-repo.js.map +1 -0
  219. package/dist/gateway/db/repositories/user-repo.d.ts +59 -0
  220. package/dist/gateway/db/repositories/user-repo.js +83 -0
  221. package/dist/gateway/db/repositories/user-repo.js.map +1 -0
  222. package/dist/gateway/db/repositories/vote-repo.d.ts +26 -0
  223. package/dist/gateway/db/repositories/vote-repo.js +97 -0
  224. package/dist/gateway/db/repositories/vote-repo.js.map +1 -0
  225. package/dist/gateway/db/repositories/workspace-repo.d.ts +27 -0
  226. package/dist/gateway/db/repositories/workspace-repo.js +145 -0
  227. package/dist/gateway/db/repositories/workspace-repo.js.map +1 -0
  228. package/dist/gateway/db/schema-mysql.d.ts +3897 -0
  229. package/dist/gateway/db/schema-mysql.js +354 -0
  230. package/dist/gateway/db/schema-mysql.js.map +1 -0
  231. package/dist/gateway/db/schema-sqlite.d.ts +4147 -0
  232. package/dist/gateway/db/schema-sqlite.js +345 -0
  233. package/dist/gateway/db/schema-sqlite.js.map +1 -0
  234. package/dist/gateway/db/schema.d.ts +3869 -0
  235. package/dist/gateway/db/schema.js +16 -0
  236. package/dist/gateway/db/schema.js.map +1 -0
  237. package/dist/gateway/mcp-config-builder.d.ts +8 -0
  238. package/dist/gateway/mcp-config-builder.js +39 -0
  239. package/dist/gateway/mcp-config-builder.js.map +1 -0
  240. package/dist/gateway/output-redactor.d.ts +27 -0
  241. package/dist/gateway/output-redactor.js +101 -0
  242. package/dist/gateway/output-redactor.js.map +1 -0
  243. package/dist/gateway/plugins/api.d.ts +181 -0
  244. package/dist/gateway/plugins/api.js +28 -0
  245. package/dist/gateway/plugins/api.js.map +1 -0
  246. package/dist/gateway/plugins/channel-bridge.d.ts +72 -0
  247. package/dist/gateway/plugins/channel-bridge.js +586 -0
  248. package/dist/gateway/plugins/channel-bridge.js.map +1 -0
  249. package/dist/gateway/plugins/loader.d.ts +2 -0
  250. package/dist/gateway/plugins/loader.js +83 -0
  251. package/dist/gateway/plugins/loader.js.map +1 -0
  252. package/dist/gateway/plugins/runtime.d.ts +25 -0
  253. package/dist/gateway/plugins/runtime.js +64 -0
  254. package/dist/gateway/plugins/runtime.js.map +1 -0
  255. package/dist/gateway/resource-notifier.d.ts +36 -0
  256. package/dist/gateway/resource-notifier.js +123 -0
  257. package/dist/gateway/resource-notifier.js.map +1 -0
  258. package/dist/gateway/rpc-methods.d.ts +34 -0
  259. package/dist/gateway/rpc-methods.js +3198 -0
  260. package/dist/gateway/rpc-methods.js.map +1 -0
  261. package/dist/gateway/security/cert-manager.d.ts +77 -0
  262. package/dist/gateway/security/cert-manager.js +280 -0
  263. package/dist/gateway/security/cert-manager.js.map +1 -0
  264. package/dist/gateway/security/mtls-middleware.d.ts +33 -0
  265. package/dist/gateway/security/mtls-middleware.js +89 -0
  266. package/dist/gateway/security/mtls-middleware.js.map +1 -0
  267. package/dist/gateway/server.d.ts +54 -0
  268. package/dist/gateway/server.js +1146 -0
  269. package/dist/gateway/server.js.map +1 -0
  270. package/dist/gateway/skill-labels.d.ts +16 -0
  271. package/dist/gateway/skill-labels.js +79 -0
  272. package/dist/gateway/skill-labels.js.map +1 -0
  273. package/dist/gateway/skills/file-writer.d.ts +75 -0
  274. package/dist/gateway/skills/file-writer.js +320 -0
  275. package/dist/gateway/skills/file-writer.js.map +1 -0
  276. package/dist/gateway/skills/script-evaluator.d.ts +42 -0
  277. package/dist/gateway/skills/script-evaluator.js +204 -0
  278. package/dist/gateway/skills/script-evaluator.js.map +1 -0
  279. package/dist/gateway/skills/skill-bundle.d.ts +34 -0
  280. package/dist/gateway/skills/skill-bundle.js +83 -0
  281. package/dist/gateway/skills/skill-bundle.js.map +1 -0
  282. package/dist/gateway/web/dist/assets/index-BF6CtvnV.css +1 -0
  283. package/dist/gateway/web/dist/assets/index-Dumzqsr-.js +680 -0
  284. package/dist/gateway/web/dist/assets/index-n4IMHP1Q.js +675 -0
  285. package/dist/gateway/web/dist/index.html +14 -0
  286. package/dist/gateway/web/dist/noise.png +1 -0
  287. package/dist/gateway/web/dist/robots.txt +2 -0
  288. package/dist/gateway/web/dist/vite.svg +1 -0
  289. package/dist/gateway/ws-protocol.d.ts +68 -0
  290. package/dist/gateway/ws-protocol.js +106 -0
  291. package/dist/gateway/ws-protocol.js.map +1 -0
  292. package/dist/gateway-main.d.ts +1 -0
  293. package/dist/gateway-main.js +129 -0
  294. package/dist/gateway-main.js.map +1 -0
  295. package/dist/lib/s3-backup.d.ts +28 -0
  296. package/dist/lib/s3-backup.js +85 -0
  297. package/dist/lib/s3-backup.js.map +1 -0
  298. package/dist/lib/s3-storage.d.ts +45 -0
  299. package/dist/lib/s3-storage.js +210 -0
  300. package/dist/lib/s3-storage.js.map +1 -0
  301. package/dist/memory/chunker.d.ts +15 -0
  302. package/dist/memory/chunker.js +94 -0
  303. package/dist/memory/chunker.js.map +1 -0
  304. package/dist/memory/embeddings.d.ts +14 -0
  305. package/dist/memory/embeddings.js +143 -0
  306. package/dist/memory/embeddings.js.map +1 -0
  307. package/dist/memory/index.d.ts +18 -0
  308. package/dist/memory/index.js +15 -0
  309. package/dist/memory/index.js.map +1 -0
  310. package/dist/memory/indexer.d.ts +70 -0
  311. package/dist/memory/indexer.js +567 -0
  312. package/dist/memory/indexer.js.map +1 -0
  313. package/dist/memory/mmr.d.ts +22 -0
  314. package/dist/memory/mmr.js +82 -0
  315. package/dist/memory/mmr.js.map +1 -0
  316. package/dist/memory/schema.d.ts +2 -0
  317. package/dist/memory/schema.js +85 -0
  318. package/dist/memory/schema.js.map +1 -0
  319. package/dist/memory/session-summarizer.d.ts +19 -0
  320. package/dist/memory/session-summarizer.js +139 -0
  321. package/dist/memory/session-summarizer.js.map +1 -0
  322. package/dist/memory/stop-words.d.ts +13 -0
  323. package/dist/memory/stop-words.js +132 -0
  324. package/dist/memory/stop-words.js.map +1 -0
  325. package/dist/memory/temporal-decay.d.ts +20 -0
  326. package/dist/memory/temporal-decay.js +63 -0
  327. package/dist/memory/temporal-decay.js.map +1 -0
  328. package/dist/memory/types.d.ts +40 -0
  329. package/dist/memory/types.js +2 -0
  330. package/dist/memory/types.js.map +1 -0
  331. package/dist/shared/resource-sync.d.ts +80 -0
  332. package/dist/shared/resource-sync.js +24 -0
  333. package/dist/shared/resource-sync.js.map +1 -0
  334. package/dist/tools/command-sets.d.ts +61 -0
  335. package/dist/tools/command-sets.js +845 -0
  336. package/dist/tools/command-sets.js.map +1 -0
  337. package/dist/tools/create-skill.d.ts +2 -0
  338. package/dist/tools/create-skill.js +169 -0
  339. package/dist/tools/create-skill.js.map +1 -0
  340. package/dist/tools/credential-list.d.ts +8 -0
  341. package/dist/tools/credential-list.js +139 -0
  342. package/dist/tools/credential-list.js.map +1 -0
  343. package/dist/tools/deep-search/engine.d.ts +40 -0
  344. package/dist/tools/deep-search/engine.js +594 -0
  345. package/dist/tools/deep-search/engine.js.map +1 -0
  346. package/dist/tools/deep-search/events.d.ts +11 -0
  347. package/dist/tools/deep-search/events.js +10 -0
  348. package/dist/tools/deep-search/events.js.map +1 -0
  349. package/dist/tools/deep-search/format.d.ts +11 -0
  350. package/dist/tools/deep-search/format.js +143 -0
  351. package/dist/tools/deep-search/format.js.map +1 -0
  352. package/dist/tools/deep-search/prompts.d.ts +30 -0
  353. package/dist/tools/deep-search/prompts.js +237 -0
  354. package/dist/tools/deep-search/prompts.js.map +1 -0
  355. package/dist/tools/deep-search/sre-knowledge.d.ts +21 -0
  356. package/dist/tools/deep-search/sre-knowledge.js +112 -0
  357. package/dist/tools/deep-search/sre-knowledge.js.map +1 -0
  358. package/dist/tools/deep-search/sub-agent.d.ts +71 -0
  359. package/dist/tools/deep-search/sub-agent.js +401 -0
  360. package/dist/tools/deep-search/sub-agent.js.map +1 -0
  361. package/dist/tools/deep-search/tool.d.ts +9 -0
  362. package/dist/tools/deep-search/tool.js +201 -0
  363. package/dist/tools/deep-search/tool.js.map +1 -0
  364. package/dist/tools/deep-search/types.d.ts +67 -0
  365. package/dist/tools/deep-search/types.js +41 -0
  366. package/dist/tools/deep-search/types.js.map +1 -0
  367. package/dist/tools/dp-tools.d.ts +47 -0
  368. package/dist/tools/dp-tools.js +170 -0
  369. package/dist/tools/dp-tools.js.map +1 -0
  370. package/dist/tools/fork-skill.d.ts +2 -0
  371. package/dist/tools/fork-skill.js +93 -0
  372. package/dist/tools/fork-skill.js.map +1 -0
  373. package/dist/tools/k8s-checks.d.ts +18 -0
  374. package/dist/tools/k8s-checks.js +105 -0
  375. package/dist/tools/k8s-checks.js.map +1 -0
  376. package/dist/tools/kubeconfig-resolver.d.ts +11 -0
  377. package/dist/tools/kubeconfig-resolver.js +53 -0
  378. package/dist/tools/kubeconfig-resolver.js.map +1 -0
  379. package/dist/tools/kubectl.d.ts +12 -0
  380. package/dist/tools/kubectl.js +169 -0
  381. package/dist/tools/kubectl.js.map +1 -0
  382. package/dist/tools/manage-schedule.d.ts +3 -0
  383. package/dist/tools/manage-schedule.js +189 -0
  384. package/dist/tools/manage-schedule.js.map +1 -0
  385. package/dist/tools/memory-get.d.ts +2 -0
  386. package/dist/tools/memory-get.js +99 -0
  387. package/dist/tools/memory-get.js.map +1 -0
  388. package/dist/tools/memory-search.d.ts +3 -0
  389. package/dist/tools/memory-search.js +93 -0
  390. package/dist/tools/memory-search.js.map +1 -0
  391. package/dist/tools/netns-script.d.ts +3 -0
  392. package/dist/tools/netns-script.js +394 -0
  393. package/dist/tools/netns-script.js.map +1 -0
  394. package/dist/tools/node-exec.d.ts +18 -0
  395. package/dist/tools/node-exec.js +342 -0
  396. package/dist/tools/node-exec.js.map +1 -0
  397. package/dist/tools/node-script.d.ts +3 -0
  398. package/dist/tools/node-script.js +266 -0
  399. package/dist/tools/node-script.js.map +1 -0
  400. package/dist/tools/pod-exec.d.ts +4 -0
  401. package/dist/tools/pod-exec.js +146 -0
  402. package/dist/tools/pod-exec.js.map +1 -0
  403. package/dist/tools/pod-nsenter-exec.d.ts +3 -0
  404. package/dist/tools/pod-nsenter-exec.js +333 -0
  405. package/dist/tools/pod-nsenter-exec.js.map +1 -0
  406. package/dist/tools/pod-script.d.ts +3 -0
  407. package/dist/tools/pod-script.js +176 -0
  408. package/dist/tools/pod-script.js.map +1 -0
  409. package/dist/tools/restricted-bash.d.ts +41 -0
  410. package/dist/tools/restricted-bash.js +503 -0
  411. package/dist/tools/restricted-bash.js.map +1 -0
  412. package/dist/tools/run-skill.d.ts +3 -0
  413. package/dist/tools/run-skill.js +169 -0
  414. package/dist/tools/run-skill.js.map +1 -0
  415. package/dist/tools/sanitize-env.d.ts +14 -0
  416. package/dist/tools/sanitize-env.js +95 -0
  417. package/dist/tools/sanitize-env.js.map +1 -0
  418. package/dist/tools/script-resolver.d.ts +35 -0
  419. package/dist/tools/script-resolver.js +213 -0
  420. package/dist/tools/script-resolver.js.map +1 -0
  421. package/dist/tools/tool-render.d.ts +20 -0
  422. package/dist/tools/tool-render.js +77 -0
  423. package/dist/tools/tool-render.js.map +1 -0
  424. package/dist/tools/update-skill.d.ts +2 -0
  425. package/dist/tools/update-skill.js +169 -0
  426. package/dist/tools/update-skill.js.map +1 -0
  427. package/package.json +106 -0
  428. package/settings.example.json +74 -0
  429. package/siclaw.mjs +48 -0
  430. package/skills/core/cluster-events/SKILL.md +150 -0
  431. package/skills/core/deep-investigation/SKILL.md +87 -0
  432. package/skills/core/deep-investigation/default-memory.md +8 -0
  433. package/skills/core/deployment-rollout-debug/SKILL.md +144 -0
  434. package/skills/core/dns-debug/SKILL.md +144 -0
  435. package/skills/core/find-node/SKILL.md +23 -0
  436. package/skills/core/find-node/scripts/find-node.sh +9 -0
  437. package/skills/core/hpa-debug/SKILL.md +159 -0
  438. package/skills/core/image-pull-debug/SKILL.md +151 -0
  439. package/skills/core/ingress-debug/SKILL.md +189 -0
  440. package/skills/core/job-debug/SKILL.md +180 -0
  441. package/skills/core/meta.json +23 -0
  442. package/skills/core/node-health-check/SKILL.md +150 -0
  443. package/skills/core/node-logs/SKILL.md +68 -0
  444. package/skills/core/node-logs/scripts/get-node-logs.sh +78 -0
  445. package/skills/core/node-ping-gateway/SKILL.md +54 -0
  446. package/skills/core/node-ping-gateway/scripts/ping-node-gateway.sh +71 -0
  447. package/skills/core/node-show-gateway/SKILL.md +55 -0
  448. package/skills/core/node-show-gateway/scripts/show-node-gateway.sh +90 -0
  449. package/skills/core/pod-crash-debug/SKILL.md +135 -0
  450. package/skills/core/pod-pending-debug/SKILL.md +146 -0
  451. package/skills/core/pod-ping-gateway/SKILL.md +44 -0
  452. package/skills/core/pod-ping-gateway/scripts/ping-gateway.sh +76 -0
  453. package/skills/core/pod-show-gateway/SKILL.md +54 -0
  454. package/skills/core/pod-show-gateway/scripts/show-gateway.sh +115 -0
  455. package/skills/core/pvc-debug/SKILL.md +169 -0
  456. package/skills/core/service-debug/SKILL.md +164 -0
  457. package/skills/extension/.gitkeep +0 -0
  458. package/skills/platform/create-skill/SKILL.md +288 -0
  459. package/skills/platform/manage-skill/SKILL.md +23 -0
  460. package/skills/platform/update-skill/SKILL.md +52 -0
@@ -0,0 +1,586 @@
1
+ import { AgentBoxClient } from "../agentbox/client.js";
2
+ import { notifyCronService } from "../cron/notify.js";
3
+ import { buildRedactionConfig, redactText } from "../output-redactor.js";
4
+ export function createChannelBridge(agentBoxManager, broadcast, userStore, configRepo, buildCredentialPayload) {
5
+ // channelId → outbound sender
6
+ const outbounds = new Map();
7
+ const bridge = {
8
+ async handleInbound(channelId, chatId, senderId, text, media) {
9
+ const sessionKey = `${channelId}/${chatId}`;
10
+ console.log(`[channel-bridge] Inbound from ${channelId}/${senderId}: ${text.slice(0, 80)}`);
11
+ // Notify hook (e.g. remember chatId for notifications)
12
+ bridge.onInbound?.(channelId, chatId);
13
+ // Check if sender is bound to a platform user
14
+ const boundUser = userStore?.getByBinding(channelId, senderId);
15
+ // Unbound users cannot use the bot — guide them to bind first
16
+ if (!boundUser) {
17
+ const plugin = outbounds.get(channelId);
18
+ const guide = [
19
+ "Your account is not linked to Siclaw yet. Please complete the binding first:",
20
+ "",
21
+ `1. Open the Siclaw platform: ${process.env.SICLAW_PLATFORM_URL || "https://your-platform-url"}`,
22
+ "2. Log in and go to the Settings page",
23
+ "3. Click \"Generate Bind Code\" to get a 6-digit code",
24
+ "4. Come back here and send: /bind <6-digit code>",
25
+ "",
26
+ "Once bound, you can start using Siclaw.",
27
+ ].join("\n");
28
+ if (plugin?.outbound?.sendText) {
29
+ await plugin.outbound.sendText({ to: chatId, text: guide });
30
+ }
31
+ console.log(`[channel-bridge] Unbound sender ${channelId}/${senderId}, sent bind guide`);
32
+ return;
33
+ }
34
+ // Build credential payload to send in prompt body
35
+ const credentials = buildCredentialPayload
36
+ ? await buildCredentialPayload(boundUser.id, "default", true).catch((err) => {
37
+ console.warn("[channel-bridge] credential payload build failed:", err instanceof Error ? err.message : err);
38
+ return undefined;
39
+ })
40
+ : undefined;
41
+ // Build redaction config for outbound channel messages
42
+ const redactionConfig = buildRedactionConfig(credentials?.manifest, credentials?.manifest?.length ? ".siclaw/credentials" : undefined);
43
+ // Channel and web share the same AgentBox — mode-driven skill loading
44
+ // handles tool/skill differences per session.
45
+ const handle = await agentBoxManager.getOrCreate(boundUser.id, "default");
46
+ const client = new AgentBoxClient(handle.endpoint);
47
+ const plugin = outbounds.get(channelId);
48
+ // Build prompt text (append file info since AgentBox HTTP API is text-only)
49
+ let promptText = text;
50
+ if (media?.files?.length) {
51
+ const fileInfo = media.files
52
+ .map((f) => `[Attachment: ${f.filename} (${f.mimeType})]`)
53
+ .join("\n");
54
+ promptText = `${text}\n\n${fileInfo}`;
55
+ }
56
+ // Send prompt — channel mode loads manage-skill SKILL.md instead of create/update tools
57
+ // Use chatId as sessionId so different chats (groups, DMs, devices) are isolated
58
+ const result = await client.prompt({
59
+ sessionId: chatId,
60
+ text: promptText,
61
+ mode: "channel",
62
+ credentials,
63
+ });
64
+ console.log(`[channel-bridge] Prompt sent to AgentBox ${handle.boxId} session=${result.sessionId}`);
65
+ // Check if channel supports streaming cards
66
+ const supportsStreaming = !!(plugin?.streaming?.createCard &&
67
+ plugin?.streaming?.updateCard &&
68
+ plugin?.streaming?.finalizeCard);
69
+ // Consume SSE events from AgentBox in the background
70
+ (async () => {
71
+ let card = null;
72
+ let cardPromise = null;
73
+ let finalized = false;
74
+ let eventCount = 0;
75
+ // Process display: tool execution log + final text response.
76
+ // Feishu CardKit streaming markdown element has ~4KB content limit.
77
+ // When content exceeds the threshold we finalize the current card
78
+ // and create a new continuation card, preserving all steps visibly.
79
+ const MAX_CARD_CONTENT = 3500;
80
+ let cardIndex = 0; // how many cards have been finalized
81
+ const toolEntries = []; // per-tool-call display blocks
82
+ let currentToolEntry = ""; // entry being built (start → end)
83
+ let assistantText = ""; // streamed text_delta content
84
+ const fullToolOutputs = [];
85
+ let currentToolMeta = null;
86
+ /** Build the full card content from current entries */
87
+ function getDisplayContent() {
88
+ // Separate tool entries with thin dividers for visual clarity
89
+ let log = toolEntries.join("\n---\n");
90
+ if (currentToolEntry) {
91
+ log += (log ? "\n---\n" : "") + currentToolEntry;
92
+ }
93
+ if (assistantText && log) {
94
+ return log + "\n\n---\n\n" + assistantText;
95
+ }
96
+ return assistantText || log || "⏳ Thinking...";
97
+ }
98
+ /** Finalize the current card and open a new one (card rollover) */
99
+ async function rolloverCard() {
100
+ if (!card || !supportsStreaming)
101
+ return;
102
+ if (updateInFlight)
103
+ await updateInFlight;
104
+ const content = getDisplayContent();
105
+ try {
106
+ await plugin.streaming.finalizeCard({ card: card, content });
107
+ }
108
+ catch (err) {
109
+ console.error(`[channel-bridge] Rollover finalize failed:`, err);
110
+ }
111
+ cardIndex++;
112
+ // Reset display state for the new card
113
+ toolEntries.length = 0;
114
+ currentToolEntry = "";
115
+ assistantText = "";
116
+ // Create a new continuation card
117
+ try {
118
+ card = await plugin.streaming.createCard({ to: chatId });
119
+ console.log(`[channel-bridge] Rollover card #${cardIndex + 1} for ${sessionKey}`);
120
+ }
121
+ catch (err) {
122
+ console.error(`[channel-bridge] Rollover card create failed:`, err);
123
+ card = null;
124
+ }
125
+ }
126
+ // "Latest value" update pattern: at most one HTTP request in-flight,
127
+ // new content replaces pending instead of queuing unboundedly.
128
+ let updateInFlight = null;
129
+ let pendingContent = null;
130
+ function scheduleUpdate(content) {
131
+ pendingContent = content;
132
+ if (updateInFlight)
133
+ return; // in-flight request will pick up latest when done
134
+ const run = async () => {
135
+ while (pendingContent !== null && card && !finalized) {
136
+ const c = pendingContent;
137
+ pendingContent = null;
138
+ try {
139
+ await plugin.streaming.updateCard({ card: card, content: c });
140
+ }
141
+ catch (err) {
142
+ console.error(`[channel-bridge] Failed to update card:`, err);
143
+ }
144
+ }
145
+ updateInFlight = null;
146
+ };
147
+ updateInFlight = run();
148
+ }
149
+ // Create streaming card immediately after prompt (don't wait for message_start)
150
+ if (supportsStreaming) {
151
+ cardPromise = plugin.streaming.createCard({ to: chatId });
152
+ cardPromise
153
+ .then((c) => {
154
+ card = c;
155
+ console.log(`[channel-bridge] Created streaming card for ${sessionKey}`);
156
+ // Flush any content accumulated while card was being created
157
+ const display = getDisplayContent();
158
+ if (display !== "⏳ Thinking...") {
159
+ scheduleUpdate(display);
160
+ }
161
+ })
162
+ .catch((err) => {
163
+ cardPromise = null;
164
+ console.error(`[channel-bridge] Failed to create card:`, err);
165
+ });
166
+ }
167
+ /** Truncate long tool output for display — keep it compact */
168
+ function truncateOutput(text, maxLines = 6, maxChars = 300) {
169
+ const lines = text.split("\n");
170
+ let result;
171
+ let truncated = false;
172
+ if (lines.length > maxLines) {
173
+ result = lines.slice(0, maxLines).join("\n");
174
+ truncated = true;
175
+ }
176
+ else {
177
+ result = text;
178
+ }
179
+ if (result.length > maxChars) {
180
+ // Cut at last newline before maxChars to avoid mid-line breaks
181
+ const cut = result.lastIndexOf("\n", maxChars);
182
+ result = cut > 0 ? result.slice(0, cut) : result.slice(0, maxChars);
183
+ truncated = true;
184
+ }
185
+ return truncated ? result + "\n..." : result;
186
+ }
187
+ /** Extract a short command summary from tool args */
188
+ function toolArgsSummary(toolName, args) {
189
+ if (!args)
190
+ return "";
191
+ // node_exec: show "node $ command"
192
+ if (toolName === "node_exec" && args.node && args.command) {
193
+ return `${args.node} $ ${String(args.command).slice(0, 200)}`;
194
+ }
195
+ // bash: show the command
196
+ if (args.command)
197
+ return String(args.command).split("\n")[0].slice(0, 200);
198
+ // run_skill: show "skill/script args"
199
+ if (args.skill && args.script) {
200
+ const s = `${args.skill}/${args.script}`;
201
+ return args.args ? `${s} ${String(args.args).slice(0, 100)}` : s;
202
+ }
203
+ // file read/write
204
+ if (args.file_path)
205
+ return String(args.file_path);
206
+ // grep/glob
207
+ if (args.pattern)
208
+ return `pattern: ${String(args.pattern).slice(0, 100)}`;
209
+ // generic: show first string value
210
+ for (const v of Object.values(args)) {
211
+ if (typeof v === "string" && v.length > 0)
212
+ return v.slice(0, 100);
213
+ }
214
+ return "";
215
+ }
216
+ try {
217
+ for await (const event of client.streamEvents(result.sessionId)) {
218
+ const evt = event;
219
+ const eventType = evt.type;
220
+ eventCount++;
221
+ // --- tool_execution_start: show tool name + command ---
222
+ if (eventType === "tool_execution_start") {
223
+ // Commit previous entry if any
224
+ if (currentToolEntry) {
225
+ toolEntries.push(currentToolEntry);
226
+ currentToolEntry = "";
227
+ }
228
+ // When a new tool call starts after assistant text was streamed,
229
+ // fold the intermediate text into toolEntries so it's visible
230
+ // but can be trimmed like other entries.
231
+ if (assistantText) {
232
+ toolEntries.push(assistantText);
233
+ assistantText = "";
234
+ }
235
+ const toolName = evt.toolName || "tool";
236
+ const args = evt.args;
237
+ const summary = toolArgsSummary(toolName, args);
238
+ currentToolMeta = { name: toolName, command: summary };
239
+ currentToolEntry = summary
240
+ ? `**🔧 ${toolName}** \`${summary}\``
241
+ : `**🔧 ${toolName}**`;
242
+ if (supportsStreaming && card) {
243
+ scheduleUpdate(getDisplayContent() + "\n⏳ Running...");
244
+ }
245
+ }
246
+ // --- tool_execution_end: show result ---
247
+ if (eventType === "tool_execution_end") {
248
+ const toolName = evt.toolName || "";
249
+ const toolResult = evt.result;
250
+ let output = redactText(toolResult?.content
251
+ ?.filter((c) => c.type === "text")
252
+ .map((c) => c.text ?? "")
253
+ .join("") ?? "", redactionConfig);
254
+ // Auto-execute manage_schedule results (except list)
255
+ // Only attempt parse when output looks like JSON (starts with '{')
256
+ if (toolName === "manage_schedule" && output && configRepo && boundUser && output.trimStart().startsWith("{")) {
257
+ try {
258
+ const parsed = JSON.parse(output);
259
+ const action = parsed.action;
260
+ if (action && action !== "list") {
261
+ await executeScheduleAction(parsed, boundUser.id, configRepo);
262
+ // Replace raw JSON with human-readable summary
263
+ if (parsed.summary) {
264
+ output = parsed.summary;
265
+ }
266
+ }
267
+ }
268
+ catch (err) {
269
+ console.error(`[channel-bridge] Failed to auto-execute schedule:`, err);
270
+ }
271
+ }
272
+ // Store full output for collapsible panels
273
+ if (currentToolMeta) {
274
+ fullToolOutputs.push({ ...currentToolMeta, output });
275
+ currentToolMeta = null;
276
+ }
277
+ if (output) {
278
+ // Use blockquote for tool output — visually indented under tool name
279
+ const truncated = truncateOutput(output);
280
+ const quoted = truncated.split("\n").map(l => `> ${l}`).join("\n");
281
+ currentToolEntry += `\n${quoted}`;
282
+ }
283
+ // Commit this tool entry now that it's complete
284
+ toolEntries.push(currentToolEntry);
285
+ currentToolEntry = "";
286
+ // Roll over to a new card if content is approaching the limit
287
+ if (supportsStreaming && card && getDisplayContent().length > MAX_CARD_CONTENT) {
288
+ await rolloverCard();
289
+ }
290
+ else if (supportsStreaming && card) {
291
+ scheduleUpdate(getDisplayContent());
292
+ }
293
+ }
294
+ // --- message_update: accumulate text_delta ---
295
+ if (eventType === "message_update") {
296
+ const ame = evt.assistantMessageEvent;
297
+ if (ame?.type === "text_delta" && ame.delta) {
298
+ assistantText += redactText(ame.delta, redactionConfig);
299
+ if (supportsStreaming && card) {
300
+ scheduleUpdate(getDisplayContent());
301
+ }
302
+ }
303
+ }
304
+ // --- agent_end: wait for in-flight update, then finalize ---
305
+ if (eventType === "agent_end") {
306
+ finalized = true;
307
+ if (updateInFlight)
308
+ await updateInFlight;
309
+ // Fallback: if no text_delta was streamed, extract the last
310
+ // assistant text from agent_end.messages (works for models
311
+ // that use extended thinking where text isn't streamed).
312
+ if (!assistantText) {
313
+ const messages = evt.messages;
314
+ if (messages) {
315
+ for (let i = messages.length - 1; i >= 0; i--) {
316
+ if (messages[i].role === "assistant") {
317
+ const textBlocks = messages[i].content
318
+ ?.filter((b) => b.type === "text" && b.text)
319
+ .map((b) => b.text)
320
+ .join("\n");
321
+ if (textBlocks) {
322
+ assistantText = textBlocks;
323
+ break;
324
+ }
325
+ }
326
+ }
327
+ }
328
+ }
329
+ const finalContent = getDisplayContent();
330
+ console.log(`[channel-bridge] agent_end for ${sessionKey}: ${eventCount} events, text=${assistantText.length} chars, toolEntries=${toolEntries.length}`);
331
+ const finalize = (resolvedCard) => {
332
+ if (resolvedCard) {
333
+ plugin.streaming
334
+ .finalizeCard({
335
+ card: resolvedCard,
336
+ content: finalContent,
337
+ toolOutputs: fullToolOutputs.length > 0 ? fullToolOutputs : undefined,
338
+ })
339
+ .catch((err) => {
340
+ console.error(`[channel-bridge] Failed to finalize card:`, err);
341
+ });
342
+ }
343
+ else if (finalContent && plugin?.outbound?.sendText) {
344
+ plugin.outbound
345
+ .sendText({ to: chatId, text: finalContent })
346
+ .catch((err) => {
347
+ console.error(`[channel-bridge] Fallback sendText error:`, err);
348
+ });
349
+ }
350
+ };
351
+ if (card) {
352
+ finalize(card);
353
+ }
354
+ else if (cardPromise) {
355
+ cardPromise.then((c) => finalize(c)).catch(() => finalize(null));
356
+ }
357
+ else {
358
+ finalize(null);
359
+ }
360
+ break;
361
+ }
362
+ }
363
+ // Safety net: SSE stream ended without agent_end
364
+ if (!finalized) {
365
+ if (updateInFlight)
366
+ await updateInFlight;
367
+ const content = getDisplayContent() || "(No response received)";
368
+ const finalizeOrSend = (resolvedCard) => {
369
+ if (resolvedCard && supportsStreaming) {
370
+ plugin.streaming.finalizeCard({ card: resolvedCard, content }).catch(() => { });
371
+ }
372
+ else if (plugin?.outbound?.sendText) {
373
+ plugin.outbound.sendText({ to: chatId, text: content }).catch(() => { });
374
+ }
375
+ };
376
+ if (card) {
377
+ finalizeOrSend(card);
378
+ }
379
+ else if (cardPromise) {
380
+ cardPromise.then((c) => finalizeOrSend(c)).catch(() => finalizeOrSend(null));
381
+ }
382
+ else {
383
+ finalizeOrSend(null);
384
+ }
385
+ console.warn(`[channel-bridge] SSE ended without agent_end for ${sessionKey}: ${eventCount} events`);
386
+ }
387
+ }
388
+ catch (err) {
389
+ const msg = err instanceof Error ? err.message : String(err);
390
+ console.error(`[channel-bridge] SSE error for ${sessionKey}: ${msg} (after ${eventCount} events)`);
391
+ broadcast("error", { sessionKey, message: msg });
392
+ if (updateInFlight)
393
+ await updateInFlight;
394
+ const content = getDisplayContent() || `⚠️ Error: ${msg}`;
395
+ const finalizeOrSend = (resolvedCard) => {
396
+ if (resolvedCard && supportsStreaming) {
397
+ plugin.streaming.finalizeCard({ card: resolvedCard, content }).catch(() => { });
398
+ }
399
+ else if (plugin?.outbound?.sendText) {
400
+ plugin.outbound.sendText({ to: chatId, text: content }).catch(() => { });
401
+ }
402
+ };
403
+ if (card) {
404
+ finalizeOrSend(card);
405
+ }
406
+ else if (cardPromise) {
407
+ cardPromise.then((c) => finalizeOrSend(c)).catch(() => finalizeOrSend(null));
408
+ }
409
+ else {
410
+ finalizeOrSend(null);
411
+ }
412
+ }
413
+ })();
414
+ },
415
+ registerOutbound(channelId, plugin) {
416
+ outbounds.set(channelId, plugin);
417
+ console.log(`[channel-bridge] Registered outbound for channel: ${channelId}`);
418
+ },
419
+ };
420
+ return bridge;
421
+ }
422
+ /**
423
+ * Auto-execute a manage_schedule tool result (Feishu equivalent of ScheduleCard RPC calls).
424
+ */
425
+ async function executeScheduleAction(parsed, userId, configRepo, envId) {
426
+ const action = parsed.action;
427
+ if (action === "create" && parsed.schedule) {
428
+ const id = await configRepo.saveCronJob(userId, {
429
+ name: parsed.schedule.name,
430
+ description: parsed.schedule.description,
431
+ schedule: parsed.schedule.schedule,
432
+ status: parsed.schedule.status || "active",
433
+ envId: envId ?? null,
434
+ });
435
+ let assignedTo = null;
436
+ try {
437
+ const leastLoaded = await configRepo.getLeastLoadedInstance();
438
+ if (leastLoaded) {
439
+ assignedTo = leastLoaded.instanceId;
440
+ await configRepo.assignCronJob(id, assignedTo);
441
+ }
442
+ }
443
+ catch { /* coordinator will pick up */ }
444
+ notifyCronService({
445
+ action: "upsert",
446
+ job: {
447
+ id, userId, name: parsed.schedule.name,
448
+ description: parsed.schedule.description ?? null,
449
+ schedule: parsed.schedule.schedule,
450
+ status: parsed.schedule.status || "active",
451
+ skillId: null, assignedTo,
452
+ lastRunAt: null, lastResult: null, lockedBy: null, lockedAt: null,
453
+ envId: envId ?? null,
454
+ },
455
+ }, configRepo);
456
+ console.log(`[channel-bridge] Auto-created cron job: ${id}`);
457
+ }
458
+ if (action === "update" && parsed.schedule) {
459
+ const job = parsed.id
460
+ ? await configRepo.getCronJobById(parsed.id)
461
+ : await findJobByName(configRepo, userId, parsed.name, envId);
462
+ if (!job) {
463
+ console.warn(`[channel-bridge] Schedule not found for update: id=${parsed.id} name=${parsed.name}`);
464
+ return;
465
+ }
466
+ await configRepo.saveCronJob(userId, {
467
+ id: job.id,
468
+ name: parsed.schedule.name || job.name,
469
+ description: parsed.schedule.description ?? job.description ?? undefined,
470
+ schedule: parsed.schedule.schedule || job.schedule,
471
+ status: parsed.schedule.status || job.status,
472
+ envId: envId ?? job.envId ?? null,
473
+ });
474
+ notifyCronService({
475
+ action: "upsert",
476
+ job: {
477
+ id: job.id, userId, name: parsed.schedule.name || job.name,
478
+ description: parsed.schedule.description ?? job.description ?? null,
479
+ schedule: parsed.schedule.schedule || job.schedule,
480
+ status: parsed.schedule.status || job.status,
481
+ skillId: job.skillId ?? null, assignedTo: job.assignedTo ?? null,
482
+ lastRunAt: null, lastResult: null, lockedBy: null, lockedAt: null,
483
+ envId: envId ?? job.envId ?? null,
484
+ },
485
+ }, configRepo);
486
+ console.log(`[channel-bridge] Auto-updated cron job: ${job.id}`);
487
+ }
488
+ if (action === "delete") {
489
+ const job = parsed.id
490
+ ? await configRepo.getCronJobById(parsed.id)
491
+ : await findJobByName(configRepo, userId, parsed.name, envId);
492
+ if (!job) {
493
+ console.warn(`[channel-bridge] Schedule not found for delete: id=${parsed.id} name=${parsed.name}`);
494
+ return;
495
+ }
496
+ await configRepo.deleteCronJob(job.id);
497
+ notifyCronService({ action: "delete", jobId: job.id }, configRepo);
498
+ console.log(`[channel-bridge] Auto-deleted cron job: ${job.id}`);
499
+ }
500
+ if (action === "pause") {
501
+ const job = parsed.id
502
+ ? await configRepo.getCronJobById(parsed.id)
503
+ : await findJobByName(configRepo, userId, parsed.name, envId);
504
+ if (!job) {
505
+ console.warn(`[channel-bridge] Schedule not found for pause: id=${parsed.id} name=${parsed.name}`);
506
+ return;
507
+ }
508
+ await configRepo.saveCronJob(userId, {
509
+ id: job.id,
510
+ name: job.name,
511
+ description: job.description ?? undefined,
512
+ schedule: job.schedule,
513
+ status: "paused",
514
+ envId: job.envId ?? null,
515
+ });
516
+ notifyCronService({ action: "pause", jobId: job.id }, configRepo);
517
+ console.log(`[channel-bridge] Auto-paused cron job: ${job.id}`);
518
+ }
519
+ if (action === "resume") {
520
+ const job = parsed.id
521
+ ? await configRepo.getCronJobById(parsed.id)
522
+ : await findJobByName(configRepo, userId, parsed.name, envId);
523
+ if (!job) {
524
+ console.warn(`[channel-bridge] Schedule not found for resume: id=${parsed.id} name=${parsed.name}`);
525
+ return;
526
+ }
527
+ await configRepo.saveCronJob(userId, {
528
+ id: job.id,
529
+ name: job.name,
530
+ description: job.description ?? undefined,
531
+ schedule: job.schedule,
532
+ status: "active",
533
+ envId: job.envId ?? null,
534
+ });
535
+ notifyCronService({
536
+ action: "upsert",
537
+ job: {
538
+ id: job.id, userId, name: job.name,
539
+ description: job.description ?? null,
540
+ schedule: job.schedule, status: "active",
541
+ skillId: job.skillId ?? null, assignedTo: job.assignedTo ?? null,
542
+ lastRunAt: null, lastResult: null, lockedBy: null, lockedAt: null,
543
+ envId: job.envId ?? null,
544
+ },
545
+ }, configRepo);
546
+ console.log(`[channel-bridge] Auto-resumed cron job: ${job.id}`);
547
+ }
548
+ if (action === "rename") {
549
+ const job = parsed.id
550
+ ? await configRepo.getCronJobById(parsed.id)
551
+ : await findJobByName(configRepo, userId, parsed.name, envId);
552
+ if (!job) {
553
+ console.warn(`[channel-bridge] Schedule not found for rename: id=${parsed.id} name=${parsed.name}`);
554
+ return;
555
+ }
556
+ const newName = parsed.newName?.trim() || job.name;
557
+ await configRepo.saveCronJob(userId, {
558
+ id: job.id,
559
+ name: newName,
560
+ description: job.description ?? undefined,
561
+ schedule: job.schedule,
562
+ status: job.status,
563
+ envId: job.envId ?? null,
564
+ });
565
+ notifyCronService({
566
+ action: "upsert",
567
+ job: {
568
+ id: job.id, userId, name: newName,
569
+ description: job.description ?? null,
570
+ schedule: job.schedule, status: job.status,
571
+ skillId: job.skillId ?? null, assignedTo: job.assignedTo ?? null,
572
+ lastRunAt: null, lastResult: null, lockedBy: null, lockedAt: null,
573
+ envId: job.envId ?? null,
574
+ },
575
+ }, configRepo);
576
+ console.log(`[channel-bridge] Auto-renamed cron job: ${job.id} → ${newName}`);
577
+ }
578
+ }
579
+ /** Find a cron job by name for a user, optionally scoped to an environment */
580
+ async function findJobByName(configRepo, userId, name, envId) {
581
+ if (!name)
582
+ return null;
583
+ const jobs = await configRepo.listCronJobs(userId, envId);
584
+ return jobs.find(j => j.name === name) ?? null;
585
+ }
586
+ //# sourceMappingURL=channel-bridge.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"channel-bridge.js","sourceRoot":"","sources":["../../../src/gateway/plugins/channel-bridge.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ import type { MoltbotPluginApi } from "./api.js";
2
+ export declare function discoverAndLoadPlugins(searchPaths: string[], api: MoltbotPluginApi): Promise<string[]>;