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,91 @@
1
+ /**
2
+ * Cron Scheduler — Event-driven, one setTimeout per job
3
+ *
4
+ * Pure timer manager. Each active job gets its own timer.
5
+ * CRUD operations update timers in real-time.
6
+ * DB coordination is handled by CronCoordinator.
7
+ */
8
+ import { getNextCronDelay, getNextCronTime } from "./cron-matcher.js";
9
+ export class CronScheduler {
10
+ timers = new Map();
11
+ jobs = new Map();
12
+ executing = new Set();
13
+ onFire;
14
+ constructor(onFire) {
15
+ this.onFire = onFire;
16
+ }
17
+ /** Add or update a job — cancels old timer and reschedules */
18
+ addOrUpdate(job) {
19
+ this.cancel(job.id);
20
+ this.jobs.set(job.id, job);
21
+ if (job.status === "active") {
22
+ this.scheduleNext(job);
23
+ console.log(`[cron-scheduler] Scheduled job ${job.id} (${job.name})`);
24
+ }
25
+ else {
26
+ console.log(`[cron-scheduler] Job ${job.id} (${job.name}) is paused, not scheduling`);
27
+ }
28
+ }
29
+ /** Cancel a job's timer */
30
+ cancel(jobId) {
31
+ const timer = this.timers.get(jobId);
32
+ if (timer) {
33
+ clearTimeout(timer);
34
+ this.timers.delete(jobId);
35
+ }
36
+ this.jobs.delete(jobId);
37
+ }
38
+ /** Schedule next fire for a job */
39
+ scheduleNext(job) {
40
+ try {
41
+ const delay = getNextCronDelay(job.schedule);
42
+ const nextTime = getNextCronTime(job.schedule);
43
+ console.log(`[cron-scheduler] Job ${job.id} (${job.name}) next fire at ${nextTime.toISOString()} (in ${Math.round(delay / 1000)}s)`);
44
+ const timer = setTimeout(async () => {
45
+ this.timers.delete(job.id);
46
+ // Guard against concurrent execution from race with addOrUpdate
47
+ if (this.executing.has(job.id))
48
+ return;
49
+ this.executing.add(job.id);
50
+ console.log(`[cron-scheduler] Firing job ${job.id} (${job.name})`);
51
+ try {
52
+ await this.onFire(job);
53
+ }
54
+ catch (err) {
55
+ console.error(`[cron-scheduler] Job ${job.id} fire error:`, err);
56
+ }
57
+ finally {
58
+ this.executing.delete(job.id);
59
+ }
60
+ // Reschedule if still in our job list and active
61
+ const current = this.jobs.get(job.id);
62
+ if (current && current.status === "active") {
63
+ this.scheduleNext(current);
64
+ }
65
+ }, delay);
66
+ timer.unref();
67
+ this.timers.set(job.id, timer);
68
+ }
69
+ catch (err) {
70
+ console.error(`[cron-scheduler] Failed to schedule job ${job.id}:`, err);
71
+ }
72
+ }
73
+ /** Stop all timers */
74
+ stop() {
75
+ for (const [, timer] of this.timers) {
76
+ clearTimeout(timer);
77
+ }
78
+ this.timers.clear();
79
+ this.jobs.clear();
80
+ console.log("[cron-scheduler] Stopped all timers");
81
+ }
82
+ /** Get current job count */
83
+ get jobCount() {
84
+ return this.timers.size;
85
+ }
86
+ /** Get IDs of all scheduled jobs (for reconciliation) */
87
+ get scheduledJobIds() {
88
+ return [...this.timers.keys()];
89
+ }
90
+ }
91
+ //# sourceMappingURL=cron-scheduler.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cron-scheduler.js","sourceRoot":"","sources":["../../src/cron/cron-scheduler.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,32 @@
1
+ /**
2
+ * Gateway Client — HTTP proxy for cron DB operations
3
+ *
4
+ * Replaces direct ConfigRepository access so the cron service
5
+ * no longer needs its own database connection. All state flows
6
+ * through Gateway's internal API.
7
+ */
8
+ import type { CronJobRow } from "./cron-scheduler.js";
9
+ export declare class GatewayClient {
10
+ private baseUrl;
11
+ constructor(gatewayUrl: string);
12
+ registerCronInstance(instanceId: string, endpoint: string): Promise<void>;
13
+ updateHeartbeat(instanceId: string, jobCount: number): Promise<void>;
14
+ deleteInstance(instanceId: string): Promise<void>;
15
+ releaseInstanceJobs(instanceId: string): Promise<void>;
16
+ getDeadInstances(thresholdMs: number): Promise<Array<{
17
+ instanceId: string;
18
+ heartbeatAt: Date;
19
+ }>>;
20
+ getLeastLoadedInstance(thresholdMs: number): Promise<{
21
+ instanceId: string;
22
+ jobCount: number;
23
+ } | null>;
24
+ listCronJobsByInstance(instanceId: string): Promise<CronJobRow[]>;
25
+ getCronJobById(id: string): Promise<CronJobRow | null>;
26
+ getUnassignedActiveJobs(): Promise<CronJobRow[]>;
27
+ claimUnassignedJob(jobId: string, instanceId: string): Promise<boolean>;
28
+ updateCronJobRun(jobId: string, result: "success" | "failure"): Promise<void>;
29
+ reassignOrphanedJobs(fromInstanceId: string, toInstanceId: string): Promise<void>;
30
+ private get;
31
+ private post;
32
+ }
@@ -0,0 +1,91 @@
1
+ /**
2
+ * Gateway Client — HTTP proxy for cron DB operations
3
+ *
4
+ * Replaces direct ConfigRepository access so the cron service
5
+ * no longer needs its own database connection. All state flows
6
+ * through Gateway's internal API.
7
+ */
8
+ export class GatewayClient {
9
+ baseUrl;
10
+ constructor(gatewayUrl) {
11
+ this.baseUrl = gatewayUrl.replace(/\/$/, "");
12
+ }
13
+ // ─── Cron Instances ──────────────────────────────
14
+ async registerCronInstance(instanceId, endpoint) {
15
+ await this.post("/api/internal/cron/register", { instanceId, endpoint });
16
+ }
17
+ async updateHeartbeat(instanceId, jobCount) {
18
+ await this.post("/api/internal/cron/heartbeat", { instanceId, jobCount });
19
+ }
20
+ async deleteInstance(instanceId) {
21
+ await this.post("/api/internal/cron/delete-instance", { instanceId });
22
+ }
23
+ async releaseInstanceJobs(instanceId) {
24
+ await this.post("/api/internal/cron/release-jobs", { instanceId });
25
+ }
26
+ async getDeadInstances(thresholdMs) {
27
+ const data = await this.get(`/api/internal/cron/dead-instances?thresholdMs=${thresholdMs}`);
28
+ return data.instances.map((i) => ({
29
+ instanceId: i.instanceId,
30
+ heartbeatAt: new Date(i.heartbeatAt),
31
+ }));
32
+ }
33
+ async getLeastLoadedInstance(thresholdMs) {
34
+ const data = await this.get(`/api/internal/cron/least-loaded?thresholdMs=${thresholdMs}`);
35
+ return data.instance;
36
+ }
37
+ // ─── Cron Jobs ──────────────────────────────────
38
+ async listCronJobsByInstance(instanceId) {
39
+ const data = await this.get(`/api/internal/cron/jobs?instanceId=${encodeURIComponent(instanceId)}`);
40
+ return data.jobs.map(parseJobDates);
41
+ }
42
+ async getCronJobById(id) {
43
+ const data = await this.get(`/api/internal/cron/jobs/${encodeURIComponent(id)}`);
44
+ return data.job ? parseJobDates(data.job) : null;
45
+ }
46
+ async getUnassignedActiveJobs() {
47
+ const data = await this.get("/api/internal/cron/jobs?unassigned=1");
48
+ return data.jobs.map(parseJobDates);
49
+ }
50
+ async claimUnassignedJob(jobId, instanceId) {
51
+ const data = await this.post("/api/internal/cron/claim-job", { jobId, instanceId });
52
+ return data.claimed;
53
+ }
54
+ async updateCronJobRun(jobId, result) {
55
+ await this.post("/api/internal/cron/job-run", { jobId, result });
56
+ }
57
+ async reassignOrphanedJobs(fromInstanceId, toInstanceId) {
58
+ await this.post("/api/internal/cron/reassign-jobs", { fromInstanceId, toInstanceId });
59
+ }
60
+ // ─── HTTP helpers ────────────────────────────────
61
+ async get(path) {
62
+ const resp = await fetch(`${this.baseUrl}${path}`, {
63
+ signal: AbortSignal.timeout(10_000),
64
+ });
65
+ if (!resp.ok) {
66
+ throw new Error(`Gateway GET ${path} returned ${resp.status}: ${await resp.text()}`);
67
+ }
68
+ return resp.json();
69
+ }
70
+ async post(path, body) {
71
+ const resp = await fetch(`${this.baseUrl}${path}`, {
72
+ method: "POST",
73
+ headers: { "Content-Type": "application/json" },
74
+ body: JSON.stringify(body),
75
+ signal: AbortSignal.timeout(10_000),
76
+ });
77
+ if (!resp.ok) {
78
+ throw new Error(`Gateway POST ${path} returned ${resp.status}: ${await resp.text()}`);
79
+ }
80
+ return resp.json();
81
+ }
82
+ }
83
+ /** Convert JSON date strings back to Date objects */
84
+ function parseJobDates(job) {
85
+ return {
86
+ ...job,
87
+ lastRunAt: job.lastRunAt ? new Date(job.lastRunAt) : null,
88
+ lockedAt: job.lockedAt ? new Date(job.lockedAt) : null,
89
+ };
90
+ }
91
+ //# sourceMappingURL=gateway-client.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"gateway-client.js","sourceRoot":"","sources":["../../src/cron/gateway-client.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,10 @@
1
+ /**
2
+ * Cron Service — Standalone Process Entry Point
3
+ *
4
+ * Independent from Gateway. Multi-instance capable via CronCoordinator.
5
+ * Each instance registers itself, sends heartbeats, and claims jobs.
6
+ * Dead instances are detected and their jobs reassigned.
7
+ *
8
+ * All DB access goes through Gateway's internal API (no direct DB connection).
9
+ */
10
+ export {};
@@ -0,0 +1,75 @@
1
+ /**
2
+ * Cron Service — Standalone Process Entry Point
3
+ *
4
+ * Independent from Gateway. Multi-instance capable via CronCoordinator.
5
+ * Each instance registers itself, sends heartbeats, and claims jobs.
6
+ * Dead instances are detected and their jobs reassigned.
7
+ *
8
+ * All DB access goes through Gateway's internal API (no direct DB connection).
9
+ */
10
+ import os from "node:os";
11
+ import { CronScheduler } from "./cron/cron-scheduler.js";
12
+ import { CronExecutor } from "./cron/cron-executor.js";
13
+ import { CronCoordinator } from "./cron/cron-coordinator.js";
14
+ import { createCronApi } from "./cron/cron-api.js";
15
+ import { GatewayClient } from "./cron/gateway-client.js";
16
+ const apiPort = parseInt(process.env.SICLAW_CRON_API_PORT || "3100", 10);
17
+ // Instance identity — in K8s, HOSTNAME is the pod name (unique per replica)
18
+ const instanceId = process.env.SICLAW_CRON_INSTANCE_ID || process.env.HOSTNAME || `cron-${os.hostname()}-${process.pid}`;
19
+ // Construct endpoint: explicit > Pod IP > localhost
20
+ const endpoint = process.env.SICLAW_CRON_ENDPOINT ||
21
+ (process.env.POD_IP
22
+ ? `http://${process.env.POD_IP}:${apiPort}`
23
+ : `http://localhost:${apiPort}`);
24
+ console.log(`[cron] Instance ID: ${instanceId}`);
25
+ console.log(`[cron] Endpoint: ${endpoint}`);
26
+ // 1. Create gateway client (all DB access goes through gateway)
27
+ const gatewayUrl = process.env.SICLAW_GATEWAY_URL || "http://siclaw-gateway";
28
+ console.log(`[cron] Gateway URL: ${gatewayUrl}`);
29
+ const client = new GatewayClient(gatewayUrl);
30
+ // 2. Create executor (delegates to gateway's internal API)
31
+ const executor = new CronExecutor(gatewayUrl, client);
32
+ const scheduler = new CronScheduler((job) => executor.execute(job));
33
+ // 3. Create coordinator for multi-instance coordination
34
+ const coordinator = new CronCoordinator(instanceId, endpoint, client, scheduler);
35
+ // 4. Start inner API
36
+ const apiServer = createCronApi(scheduler, instanceId);
37
+ apiServer.listen(apiPort, () => {
38
+ console.log(`[cron] Inner API listening on port ${apiPort}`);
39
+ });
40
+ // 5. Start coordinator (registers instance, loads assigned jobs, starts heartbeat + reconcile)
41
+ await coordinator.start();
42
+ console.log(`[cron] Service started (instance: ${instanceId})`);
43
+ // 6. Built-in daily purge: hard-delete notifications older than 30 days
44
+ const PURGE_INTERVAL_MS = 24 * 60 * 60 * 1000; // 24 hours
45
+ const RETENTION_DAYS = 30;
46
+ async function purgeOldNotifications() {
47
+ try {
48
+ const resp = await fetch(`${gatewayUrl}/api/internal/notifications/purge`, {
49
+ method: "POST",
50
+ headers: { "Content-Type": "application/json" },
51
+ body: JSON.stringify({ retentionDays: RETENTION_DAYS }),
52
+ signal: AbortSignal.timeout(10_000),
53
+ });
54
+ const data = await resp.json();
55
+ console.log(`[cron] Notification purge: deleted=${data.deleted ?? 0} (retention=${RETENTION_DAYS}d)`);
56
+ }
57
+ catch (err) {
58
+ console.warn("[cron] Notification purge failed:", err instanceof Error ? err.message : err);
59
+ }
60
+ }
61
+ // Run once on startup + every 24h
62
+ purgeOldNotifications();
63
+ const purgeTimer = setInterval(purgeOldNotifications, PURGE_INTERVAL_MS);
64
+ purgeTimer.unref();
65
+ // 7. Graceful shutdown — release jobs immediately so other instances can claim them
66
+ async function shutdown() {
67
+ console.log("\n[cron] Shutting down...");
68
+ scheduler.stop();
69
+ await coordinator.shutdown();
70
+ apiServer.close();
71
+ process.exit(0);
72
+ }
73
+ process.on("SIGINT", shutdown);
74
+ process.on("SIGTERM", shutdown);
75
+ //# sourceMappingURL=cron-main.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cron-main.js","sourceRoot":"","sources":["../src/cron-main.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,187 @@
1
+ /**
2
+ * AgentBox HTTP Client
3
+ *
4
+ * Client used by the Gateway to call the AgentBox HTTP API.
5
+ * Supports mTLS when TLS options are provided.
6
+ */
7
+ import { type ResourceType } from "../../shared/resource-sync.js";
8
+ export interface AgentBoxTlsOptions {
9
+ cert: string;
10
+ key: string;
11
+ ca: string;
12
+ }
13
+ export interface PromptOptions {
14
+ sessionId?: string;
15
+ text: string;
16
+ /** string = use this env, null = explicitly no env, undefined = keep current */
17
+ kubeconfigPath?: string | null;
18
+ /** Environment ID for schedule filtering — string = use this env, null = no env */
19
+ envId?: string | null;
20
+ /** Session mode — "web" | "channel" */
21
+ mode?: string;
22
+ /** Model provider to use for this prompt */
23
+ modelProvider?: string;
24
+ /** Model ID to use for this prompt */
25
+ modelId?: string;
26
+ /** Brain type — "pi-agent" | "claude-sdk" */
27
+ brainType?: string;
28
+ /** Workspace ID (for logging/context) */
29
+ workspaceId?: string;
30
+ /** Credential payload — agentbox materializes files locally from this data */
31
+ credentials?: {
32
+ manifest: Array<{
33
+ name: string;
34
+ type: string;
35
+ description?: string | null;
36
+ files: string[];
37
+ metadata?: Record<string, unknown>;
38
+ }>;
39
+ files: Array<{
40
+ name: string;
41
+ content: string;
42
+ mode?: number;
43
+ }>;
44
+ };
45
+ /** Full provider config for dynamic registration (from gateway DB) */
46
+ modelConfig?: {
47
+ name: string;
48
+ baseUrl: string;
49
+ apiKey: string;
50
+ api: string;
51
+ authHeader: boolean;
52
+ models: Array<{
53
+ id: string;
54
+ name: string;
55
+ reasoning: boolean;
56
+ input: string[];
57
+ cost: {
58
+ input: number;
59
+ output: number;
60
+ cacheRead: number;
61
+ cacheWrite: number;
62
+ };
63
+ contextWindow: number;
64
+ maxTokens: number;
65
+ compat?: Record<string, unknown>;
66
+ }>;
67
+ };
68
+ }
69
+ export interface PromptResponse {
70
+ ok: boolean;
71
+ sessionId: string;
72
+ brainType?: string;
73
+ }
74
+ export interface SessionInfo {
75
+ id: string;
76
+ createdAt: string;
77
+ lastActiveAt: string;
78
+ }
79
+ export interface HealthResponse {
80
+ status: string;
81
+ sessions: number;
82
+ timestamp: string;
83
+ }
84
+ export interface ModelInfo {
85
+ id: string;
86
+ name: string;
87
+ provider: string;
88
+ contextWindow: number;
89
+ maxTokens: number;
90
+ reasoning: boolean;
91
+ }
92
+ export interface ContextUsageResponse {
93
+ tokens: number;
94
+ contextWindow: number;
95
+ percent: number;
96
+ isCompacting: boolean;
97
+ inputTokens: number;
98
+ outputTokens: number;
99
+ cacheReadTokens: number;
100
+ cacheWriteTokens: number;
101
+ cost: number;
102
+ }
103
+ export declare class AgentBoxClient {
104
+ private endpoint;
105
+ private timeoutMs;
106
+ private httpsAgent;
107
+ constructor(endpoint: string, timeoutMs?: number, tlsOptions?: AgentBoxTlsOptions);
108
+ /**
109
+ * Health check
110
+ */
111
+ health(): Promise<HealthResponse>;
112
+ /**
113
+ * Send a prompt
114
+ */
115
+ prompt(opts: PromptOptions): Promise<PromptResponse>;
116
+ /**
117
+ * Get session list
118
+ */
119
+ listSessions(): Promise<{
120
+ sessions: SessionInfo[];
121
+ }>;
122
+ /**
123
+ * Generic resource reload — POST to the descriptor's reloadPath.
124
+ */
125
+ reloadResource(type: ResourceType): Promise<unknown>;
126
+ /**
127
+ * Get context usage
128
+ */
129
+ getContextUsage(sessionId: string): Promise<ContextUsageResponse>;
130
+ /**
131
+ * Send a steer instruction (inserts a user message after interrupting the current tool)
132
+ */
133
+ steerSession(sessionId: string, text: string): Promise<void>;
134
+ /**
135
+ * Clear queued steer/followUp messages
136
+ */
137
+ clearQueue(sessionId: string): Promise<{
138
+ steering: string[];
139
+ followUp: string[];
140
+ }>;
141
+ /**
142
+ * Abort the current prompt execution
143
+ */
144
+ abortSession(sessionId: string): Promise<void>;
145
+ /**
146
+ * Close a session
147
+ */
148
+ closeSession(sessionId: string): Promise<void>;
149
+ /**
150
+ * List available models
151
+ */
152
+ listModels(): Promise<{
153
+ models: ModelInfo[];
154
+ }>;
155
+ /**
156
+ * Get the current model
157
+ */
158
+ getModel(sessionId: string): Promise<{
159
+ model: ModelInfo | null;
160
+ brainType?: string;
161
+ }>;
162
+ /**
163
+ * Switch model
164
+ */
165
+ setModel(sessionId: string, provider: string, modelId: string): Promise<{
166
+ ok: boolean;
167
+ model: ModelInfo;
168
+ }>;
169
+ /**
170
+ * Subscribe to the SSE event stream
171
+ *
172
+ * Returns an AsyncIterable that can be iterated with for-await-of.
173
+ */
174
+ streamEvents(sessionId: string): AsyncIterable<unknown>;
175
+ /**
176
+ * SSE stream over HTTPS with mTLS
177
+ */
178
+ private streamEventsHttps;
179
+ /**
180
+ * Base fetch wrapper (supports both HTTP and HTTPS with mTLS)
181
+ */
182
+ private fetch;
183
+ /**
184
+ * HTTPS request with mTLS (returns a Response-compatible object)
185
+ */
186
+ private httpsRequest;
187
+ }