opc-agent 4.1.1 → 4.1.3

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 (744) hide show
  1. package/dist/analytics/index.d.ts.map +1 -0
  2. package/dist/analytics/index.js.map +1 -0
  3. package/dist/channels/dingtalk.d.ts.map +1 -0
  4. package/dist/channels/dingtalk.js.map +1 -0
  5. package/dist/channels/discord.d.ts.map +1 -0
  6. package/dist/channels/discord.js.map +1 -0
  7. package/dist/channels/email.d.ts.map +1 -0
  8. package/dist/channels/email.js.map +1 -0
  9. package/dist/channels/feishu.d.ts.map +1 -0
  10. package/dist/channels/feishu.js.map +1 -0
  11. package/dist/channels/googlechat.d.ts.map +1 -0
  12. package/dist/channels/googlechat.js.map +1 -0
  13. package/dist/channels/imessage.d.ts.map +1 -0
  14. package/dist/channels/imessage.js.map +1 -0
  15. package/dist/channels/index.d.ts.map +1 -0
  16. package/dist/channels/index.js.map +1 -0
  17. package/dist/channels/irc.d.ts.map +1 -0
  18. package/dist/channels/irc.js.map +1 -0
  19. package/dist/channels/line.d.ts.map +1 -0
  20. package/dist/channels/line.js.map +1 -0
  21. package/dist/channels/matrix.d.ts.map +1 -0
  22. package/dist/channels/matrix.js.map +1 -0
  23. package/dist/channels/mattermost.d.ts.map +1 -0
  24. package/dist/channels/mattermost.js.map +1 -0
  25. package/dist/channels/msteams.d.ts.map +1 -0
  26. package/dist/channels/msteams.js.map +1 -0
  27. package/dist/channels/nostr.d.ts.map +1 -0
  28. package/dist/channels/nostr.js.map +1 -0
  29. package/dist/channels/qq.d.ts.map +1 -0
  30. package/dist/channels/qq.js.map +1 -0
  31. package/dist/channels/signal.d.ts.map +1 -0
  32. package/dist/channels/signal.js.map +1 -0
  33. package/dist/channels/slack.d.ts.map +1 -0
  34. package/dist/channels/slack.js.map +1 -0
  35. package/dist/channels/sms.d.ts.map +1 -0
  36. package/dist/channels/sms.js.map +1 -0
  37. package/dist/channels/telegram.d.ts.map +1 -0
  38. package/dist/channels/telegram.js.map +1 -0
  39. package/dist/channels/twitch.d.ts.map +1 -0
  40. package/dist/channels/twitch.js.map +1 -0
  41. package/dist/channels/voice-call.d.ts.map +1 -0
  42. package/dist/channels/voice-call.js.map +1 -0
  43. package/dist/channels/voice.d.ts.map +1 -0
  44. package/dist/channels/voice.js.map +1 -0
  45. package/dist/channels/web.d.ts.map +1 -0
  46. package/dist/channels/web.js +8 -2
  47. package/dist/channels/web.js.map +1 -0
  48. package/dist/channels/webhook.d.ts.map +1 -0
  49. package/dist/channels/webhook.js.map +1 -0
  50. package/dist/channels/websocket.d.ts.map +1 -0
  51. package/dist/channels/websocket.js.map +1 -0
  52. package/dist/channels/wechat.d.ts.map +1 -0
  53. package/dist/channels/wechat.js.map +1 -0
  54. package/dist/channels/whatsapp.d.ts.map +1 -0
  55. package/dist/channels/whatsapp.js.map +1 -0
  56. package/dist/cli/chat.d.ts.map +1 -0
  57. package/dist/cli/chat.js.map +1 -0
  58. package/dist/cli/setup.d.ts.map +1 -0
  59. package/dist/cli/setup.js.map +1 -0
  60. package/dist/cli.d.ts.map +1 -0
  61. package/dist/cli.js +261 -85
  62. package/dist/cli.js.map +1 -0
  63. package/dist/core/a2a.d.ts.map +1 -0
  64. package/dist/core/a2a.js.map +1 -0
  65. package/dist/core/agent.d.ts.map +1 -0
  66. package/dist/core/agent.js.map +1 -0
  67. package/dist/core/analytics-engine.d.ts.map +1 -0
  68. package/dist/core/analytics-engine.js.map +1 -0
  69. package/dist/core/api-server.d.ts.map +1 -0
  70. package/dist/core/api-server.js.map +1 -0
  71. package/dist/core/audio.d.ts.map +1 -0
  72. package/dist/core/audio.js.map +1 -0
  73. package/dist/core/auth.d.ts.map +1 -0
  74. package/dist/core/auth.js.map +1 -0
  75. package/dist/core/cache.d.ts.map +1 -0
  76. package/dist/core/cache.js.map +1 -0
  77. package/dist/core/collaboration.d.ts.map +1 -0
  78. package/dist/core/collaboration.js.map +1 -0
  79. package/dist/core/compose.d.ts.map +1 -0
  80. package/dist/core/compose.js.map +1 -0
  81. package/dist/core/config.d.ts.map +1 -0
  82. package/dist/core/config.js.map +1 -0
  83. package/dist/core/context-discovery.d.ts.map +1 -0
  84. package/dist/core/context-discovery.js.map +1 -0
  85. package/dist/core/context-refs.d.ts.map +1 -0
  86. package/dist/core/context-refs.js.map +1 -0
  87. package/dist/core/errors.d.ts.map +1 -0
  88. package/dist/core/errors.js.map +1 -0
  89. package/dist/core/gateway.d.ts.map +1 -0
  90. package/dist/core/gateway.js.map +1 -0
  91. package/dist/core/heartbeat.d.ts.map +1 -0
  92. package/dist/core/heartbeat.js.map +1 -0
  93. package/dist/core/hitl.d.ts.map +1 -0
  94. package/dist/core/hitl.js.map +1 -0
  95. package/dist/core/hooks.d.ts.map +1 -0
  96. package/dist/core/hooks.js.map +1 -0
  97. package/dist/core/ide-bridge.d.ts.map +1 -0
  98. package/dist/core/ide-bridge.js.map +1 -0
  99. package/dist/core/knowledge.d.ts.map +1 -0
  100. package/dist/core/knowledge.js.map +1 -0
  101. package/dist/core/logger.d.ts.map +1 -0
  102. package/dist/core/logger.js.map +1 -0
  103. package/dist/core/node-network.d.ts.map +1 -0
  104. package/dist/core/node-network.js.map +1 -0
  105. package/dist/core/orchestrator.d.ts.map +1 -0
  106. package/dist/core/orchestrator.js.map +1 -0
  107. package/dist/core/performance.d.ts.map +1 -0
  108. package/dist/core/performance.js.map +1 -0
  109. package/dist/core/profiles.d.ts.map +1 -0
  110. package/dist/core/profiles.js.map +1 -0
  111. package/dist/core/rate-limiter.d.ts.map +1 -0
  112. package/dist/core/rate-limiter.js.map +1 -0
  113. package/dist/core/room.d.ts.map +1 -0
  114. package/dist/core/room.js.map +1 -0
  115. package/dist/core/runtime.d.ts.map +1 -0
  116. package/dist/core/runtime.js +37 -15
  117. package/dist/core/runtime.js.map +1 -0
  118. package/dist/core/sandbox.d.ts.map +1 -0
  119. package/dist/core/sandbox.js.map +1 -0
  120. package/dist/core/scheduler.d.ts.map +1 -0
  121. package/dist/core/scheduler.js.map +1 -0
  122. package/dist/core/security.d.ts.map +1 -0
  123. package/dist/core/security.js.map +1 -0
  124. package/dist/core/session-manager.d.ts.map +1 -0
  125. package/dist/core/session-manager.js.map +1 -0
  126. package/dist/core/streaming.d.ts.map +1 -0
  127. package/dist/core/streaming.js.map +1 -0
  128. package/dist/core/subagent.d.ts.map +1 -0
  129. package/dist/core/subagent.js.map +1 -0
  130. package/dist/core/types.d.ts.map +1 -0
  131. package/dist/core/types.js.map +1 -0
  132. package/dist/core/versioning.d.ts.map +1 -0
  133. package/dist/core/versioning.js.map +1 -0
  134. package/dist/core/vision.d.ts.map +1 -0
  135. package/dist/core/vision.js.map +1 -0
  136. package/dist/core/watch.d.ts.map +1 -0
  137. package/dist/core/watch.js.map +1 -0
  138. package/dist/core/workflow-graph.d.ts.map +1 -0
  139. package/dist/core/workflow-graph.js.map +1 -0
  140. package/dist/core/workflow.d.ts.map +1 -0
  141. package/dist/core/workflow.js.map +1 -0
  142. package/dist/daemon.d.ts.map +1 -0
  143. package/dist/daemon.js.map +1 -0
  144. package/dist/deploy/hermes.d.ts.map +1 -0
  145. package/dist/deploy/hermes.js.map +1 -0
  146. package/dist/deploy/index.d.ts.map +1 -0
  147. package/dist/deploy/index.js.map +1 -0
  148. package/dist/deploy/openclaw.d.ts.map +1 -0
  149. package/dist/deploy/openclaw.js.map +1 -0
  150. package/dist/doctor.d.ts +1 -0
  151. package/dist/doctor.d.ts.map +1 -0
  152. package/dist/doctor.js +105 -10
  153. package/dist/doctor.js.map +1 -0
  154. package/dist/eval/index.d.ts.map +1 -0
  155. package/dist/eval/index.js.map +1 -0
  156. package/dist/hub/brain-seed.d.ts.map +1 -0
  157. package/dist/hub/brain-seed.js.map +1 -0
  158. package/dist/hub/client.d.ts.map +1 -0
  159. package/dist/hub/client.js.map +1 -0
  160. package/dist/i18n/index.d.ts.map +1 -0
  161. package/dist/i18n/index.js.map +1 -0
  162. package/dist/index.d.ts.map +1 -0
  163. package/dist/index.js.map +1 -0
  164. package/dist/mcp/servers/calculator-mcp.d.ts.map +1 -0
  165. package/dist/mcp/servers/calculator-mcp.js.map +1 -0
  166. package/dist/mcp/servers/crypto-mcp.d.ts.map +1 -0
  167. package/dist/mcp/servers/crypto-mcp.js.map +1 -0
  168. package/dist/mcp/servers/database-mcp.d.ts.map +1 -0
  169. package/dist/mcp/servers/database-mcp.js.map +1 -0
  170. package/dist/mcp/servers/datetime-mcp.d.ts.map +1 -0
  171. package/dist/mcp/servers/datetime-mcp.js.map +1 -0
  172. package/dist/mcp/servers/filesystem.d.ts.map +1 -0
  173. package/dist/mcp/servers/filesystem.js.map +1 -0
  174. package/dist/mcp/servers/github-mcp.d.ts.map +1 -0
  175. package/dist/mcp/servers/github-mcp.js.map +1 -0
  176. package/dist/mcp/servers/index.d.ts.map +1 -0
  177. package/dist/mcp/servers/index.js.map +1 -0
  178. package/dist/mcp/servers/json-mcp.d.ts.map +1 -0
  179. package/dist/mcp/servers/json-mcp.js.map +1 -0
  180. package/dist/mcp/servers/memory-mcp.d.ts.map +1 -0
  181. package/dist/mcp/servers/memory-mcp.js.map +1 -0
  182. package/dist/mcp/servers/regex-mcp.d.ts.map +1 -0
  183. package/dist/mcp/servers/regex-mcp.js.map +1 -0
  184. package/dist/mcp/servers/web-mcp.d.ts.map +1 -0
  185. package/dist/mcp/servers/web-mcp.js.map +1 -0
  186. package/dist/memory/context-compressor.d.ts.map +1 -0
  187. package/dist/memory/context-compressor.js.map +1 -0
  188. package/dist/memory/deepbrain.d.ts +1 -1
  189. package/dist/memory/deepbrain.d.ts.map +1 -0
  190. package/dist/memory/deepbrain.js +95 -4
  191. package/dist/memory/deepbrain.js.map +1 -0
  192. package/dist/memory/index.d.ts.map +1 -0
  193. package/dist/memory/index.js.map +1 -0
  194. package/dist/memory/seed-loader.d.ts.map +1 -0
  195. package/dist/memory/seed-loader.js.map +1 -0
  196. package/dist/memory/user-profiler.d.ts.map +1 -0
  197. package/dist/memory/user-profiler.js.map +1 -0
  198. package/dist/plugins/content-filter.d.ts.map +1 -0
  199. package/dist/plugins/content-filter.js.map +1 -0
  200. package/dist/plugins/index.d.ts.map +1 -0
  201. package/dist/plugins/index.js.map +1 -0
  202. package/dist/plugins/logger.d.ts.map +1 -0
  203. package/dist/plugins/logger.js.map +1 -0
  204. package/dist/plugins/rate-limiter.d.ts.map +1 -0
  205. package/dist/plugins/rate-limiter.js.map +1 -0
  206. package/dist/protocols/a2a/client.d.ts.map +1 -0
  207. package/dist/protocols/a2a/client.js.map +1 -0
  208. package/dist/protocols/a2a/index.d.ts.map +1 -0
  209. package/dist/protocols/a2a/index.js.map +1 -0
  210. package/dist/protocols/a2a/server.d.ts.map +1 -0
  211. package/dist/protocols/a2a/server.js.map +1 -0
  212. package/dist/protocols/a2a/types.d.ts.map +1 -0
  213. package/dist/protocols/a2a/types.js.map +1 -0
  214. package/dist/protocols/a2a/utils.d.ts.map +1 -0
  215. package/dist/protocols/a2a/utils.js.map +1 -0
  216. package/dist/protocols/agui/client.d.ts.map +1 -0
  217. package/dist/protocols/agui/client.js.map +1 -0
  218. package/dist/protocols/agui/index.d.ts.map +1 -0
  219. package/dist/protocols/agui/index.js.map +1 -0
  220. package/dist/protocols/agui/server.d.ts.map +1 -0
  221. package/dist/protocols/agui/server.js.map +1 -0
  222. package/dist/protocols/agui/types.d.ts.map +1 -0
  223. package/dist/protocols/agui/types.js.map +1 -0
  224. package/dist/protocols/index.d.ts.map +1 -0
  225. package/dist/protocols/index.js.map +1 -0
  226. package/dist/protocols/mcp/agent-tools.d.ts.map +1 -0
  227. package/dist/protocols/mcp/agent-tools.js.map +1 -0
  228. package/dist/protocols/mcp/index.d.ts.map +1 -0
  229. package/dist/protocols/mcp/index.js.map +1 -0
  230. package/dist/protocols/mcp/server.d.ts.map +1 -0
  231. package/dist/protocols/mcp/server.js.map +1 -0
  232. package/dist/protocols/mcp/types.d.ts.map +1 -0
  233. package/dist/protocols/mcp/types.js.map +1 -0
  234. package/dist/providers/index.d.ts.map +1 -0
  235. package/dist/providers/index.js.map +1 -0
  236. package/dist/publish/index.d.ts.map +1 -0
  237. package/dist/publish/index.js.map +1 -0
  238. package/dist/scheduler/cron-engine.d.ts.map +1 -0
  239. package/dist/scheduler/cron-engine.js +3 -36
  240. package/dist/scheduler/cron-engine.js.map +1 -0
  241. package/dist/scheduler/index.d.ts.map +1 -0
  242. package/dist/scheduler/index.js.map +1 -0
  243. package/dist/schema/oad.d.ts.map +1 -0
  244. package/dist/schema/oad.js.map +1 -0
  245. package/dist/security/approval.d.ts.map +1 -0
  246. package/dist/security/approval.js.map +1 -0
  247. package/dist/security/approvals.d.ts.map +1 -0
  248. package/dist/security/approvals.js.map +1 -0
  249. package/dist/security/elevated.d.ts.map +1 -0
  250. package/dist/security/elevated.js.map +1 -0
  251. package/dist/security/guardrails.d.ts.map +1 -0
  252. package/dist/security/guardrails.js.map +1 -0
  253. package/dist/security/index.d.ts.map +1 -0
  254. package/dist/security/index.js.map +1 -0
  255. package/dist/security/keys.d.ts.map +1 -0
  256. package/dist/security/keys.js.map +1 -0
  257. package/dist/security/secrets.d.ts.map +1 -0
  258. package/dist/security/secrets.js.map +1 -0
  259. package/dist/skills/auto-learn.d.ts.map +1 -0
  260. package/dist/skills/auto-learn.js.map +1 -0
  261. package/dist/skills/base.d.ts.map +1 -0
  262. package/dist/skills/base.js.map +1 -0
  263. package/dist/skills/builtin/index.d.ts.map +1 -0
  264. package/dist/skills/builtin/index.js.map +1 -0
  265. package/dist/skills/document.d.ts.map +1 -0
  266. package/dist/skills/document.js.map +1 -0
  267. package/dist/skills/http.d.ts.map +1 -0
  268. package/dist/skills/http.js.map +1 -0
  269. package/dist/skills/index.d.ts.map +1 -0
  270. package/dist/skills/index.js.map +1 -0
  271. package/dist/skills/marketplace.d.ts.map +1 -0
  272. package/dist/skills/marketplace.js.map +1 -0
  273. package/dist/skills/scheduler.d.ts.map +1 -0
  274. package/dist/skills/scheduler.js.map +1 -0
  275. package/dist/skills/types.d.ts.map +1 -0
  276. package/dist/skills/types.js.map +1 -0
  277. package/dist/skills/webhook-trigger.d.ts.map +1 -0
  278. package/dist/skills/webhook-trigger.js.map +1 -0
  279. package/dist/studio/server.d.ts.map +1 -0
  280. package/dist/studio/server.js.map +1 -0
  281. package/dist/studio/templates-data.d.ts.map +1 -0
  282. package/dist/studio/templates-data.js.map +1 -0
  283. package/dist/telemetry/index.d.ts.map +1 -0
  284. package/dist/telemetry/index.js.map +1 -0
  285. package/dist/templates/code-reviewer.d.ts.map +1 -0
  286. package/dist/templates/code-reviewer.js.map +1 -0
  287. package/dist/templates/content-writer.d.ts.map +1 -0
  288. package/dist/templates/content-writer.js.map +1 -0
  289. package/dist/templates/customer-service.d.ts.map +1 -0
  290. package/dist/templates/customer-service.js.map +1 -0
  291. package/dist/templates/data-analyst.d.ts.map +1 -0
  292. package/dist/templates/data-analyst.js.map +1 -0
  293. package/dist/templates/executive-assistant.d.ts.map +1 -0
  294. package/dist/templates/executive-assistant.js.map +1 -0
  295. package/dist/templates/financial-advisor.d.ts.map +1 -0
  296. package/dist/templates/financial-advisor.js.map +1 -0
  297. package/dist/templates/hr-recruiter.d.ts.map +1 -0
  298. package/dist/templates/hr-recruiter.js.map +1 -0
  299. package/dist/templates/knowledge-base.d.ts.map +1 -0
  300. package/dist/templates/knowledge-base.js.map +1 -0
  301. package/dist/templates/legal-assistant.d.ts.map +1 -0
  302. package/dist/templates/legal-assistant.js.map +1 -0
  303. package/dist/templates/project-manager.d.ts.map +1 -0
  304. package/dist/templates/project-manager.js.map +1 -0
  305. package/dist/templates/sales-assistant.d.ts.map +1 -0
  306. package/dist/templates/sales-assistant.js.map +1 -0
  307. package/dist/templates/teacher.d.ts.map +1 -0
  308. package/dist/templates/teacher.js.map +1 -0
  309. package/dist/testing/index.d.ts.map +1 -0
  310. package/dist/testing/index.js.map +1 -0
  311. package/dist/tools/builtin/browser.d.ts.map +1 -0
  312. package/dist/tools/builtin/browser.js.map +1 -0
  313. package/dist/tools/builtin/datetime.d.ts.map +1 -0
  314. package/dist/tools/builtin/datetime.js.map +1 -0
  315. package/dist/tools/builtin/file.d.ts.map +1 -0
  316. package/dist/tools/builtin/file.js.map +1 -0
  317. package/dist/tools/builtin/home-assistant.d.ts.map +1 -0
  318. package/dist/tools/builtin/home-assistant.js.map +1 -0
  319. package/dist/tools/builtin/index.d.ts.map +1 -0
  320. package/dist/tools/builtin/index.js.map +1 -0
  321. package/dist/tools/builtin/rl-tools.d.ts.map +1 -0
  322. package/dist/tools/builtin/rl-tools.js.map +1 -0
  323. package/dist/tools/builtin/shell.d.ts.map +1 -0
  324. package/dist/tools/builtin/shell.js.map +1 -0
  325. package/dist/tools/builtin/vision.d.ts.map +1 -0
  326. package/dist/tools/builtin/vision.js.map +1 -0
  327. package/dist/tools/builtin/web-search.d.ts.map +1 -0
  328. package/dist/tools/builtin/web-search.js.map +1 -0
  329. package/dist/tools/builtin/web.d.ts.map +1 -0
  330. package/dist/tools/builtin/web.js.map +1 -0
  331. package/dist/tools/calculator.d.ts.map +1 -0
  332. package/dist/tools/calculator.js.map +1 -0
  333. package/dist/tools/datetime.d.ts.map +1 -0
  334. package/dist/tools/datetime.js.map +1 -0
  335. package/dist/tools/document-processor.d.ts.map +1 -0
  336. package/dist/tools/document-processor.js.map +1 -0
  337. package/dist/tools/gateway.d.ts.map +1 -0
  338. package/dist/tools/gateway.js.map +1 -0
  339. package/dist/tools/image-generator.d.ts.map +1 -0
  340. package/dist/tools/image-generator.js.map +1 -0
  341. package/dist/tools/integrations/calendar.d.ts.map +1 -0
  342. package/dist/tools/integrations/calendar.js.map +1 -0
  343. package/dist/tools/integrations/code-exec.d.ts.map +1 -0
  344. package/dist/tools/integrations/code-exec.js.map +1 -0
  345. package/dist/tools/integrations/csv-analyzer.d.ts.map +1 -0
  346. package/dist/tools/integrations/csv-analyzer.js.map +1 -0
  347. package/dist/tools/integrations/database.d.ts.map +1 -0
  348. package/dist/tools/integrations/database.js.map +1 -0
  349. package/dist/tools/integrations/email-send.d.ts.map +1 -0
  350. package/dist/tools/integrations/email-send.js.map +1 -0
  351. package/dist/tools/integrations/git-tool.d.ts.map +1 -0
  352. package/dist/tools/integrations/git-tool.js.map +1 -0
  353. package/dist/tools/integrations/github-tool.d.ts.map +1 -0
  354. package/dist/tools/integrations/github-tool.js.map +1 -0
  355. package/dist/tools/integrations/image-gen.d.ts.map +1 -0
  356. package/dist/tools/integrations/image-gen.js.map +1 -0
  357. package/dist/tools/integrations/index.d.ts.map +1 -0
  358. package/dist/tools/integrations/index.js.map +1 -0
  359. package/dist/tools/integrations/jira.d.ts.map +1 -0
  360. package/dist/tools/integrations/jira.js.map +1 -0
  361. package/dist/tools/integrations/notion.d.ts.map +1 -0
  362. package/dist/tools/integrations/notion.js.map +1 -0
  363. package/dist/tools/integrations/npm-tool.d.ts.map +1 -0
  364. package/dist/tools/integrations/npm-tool.js.map +1 -0
  365. package/dist/tools/integrations/pdf-reader.d.ts.map +1 -0
  366. package/dist/tools/integrations/pdf-reader.js.map +1 -0
  367. package/dist/tools/integrations/slack.d.ts.map +1 -0
  368. package/dist/tools/integrations/slack.js.map +1 -0
  369. package/dist/tools/integrations/summarizer.d.ts.map +1 -0
  370. package/dist/tools/integrations/summarizer.js.map +1 -0
  371. package/dist/tools/integrations/translator.d.ts.map +1 -0
  372. package/dist/tools/integrations/translator.js.map +1 -0
  373. package/dist/tools/integrations/trello.d.ts.map +1 -0
  374. package/dist/tools/integrations/trello.js.map +1 -0
  375. package/dist/tools/integrations/vector-search.d.ts.map +1 -0
  376. package/dist/tools/integrations/vector-search.js.map +1 -0
  377. package/dist/tools/integrations/web-scraper.d.ts.map +1 -0
  378. package/dist/tools/integrations/web-scraper.js.map +1 -0
  379. package/dist/tools/integrations/web-search.d.ts.map +1 -0
  380. package/dist/tools/integrations/web-search.js.map +1 -0
  381. package/dist/tools/integrations/webhook.d.ts.map +1 -0
  382. package/dist/tools/integrations/webhook.js.map +1 -0
  383. package/dist/tools/json-transform.d.ts.map +1 -0
  384. package/dist/tools/json-transform.js.map +1 -0
  385. package/dist/tools/mcp-client.d.ts.map +1 -0
  386. package/dist/tools/mcp-client.js.map +1 -0
  387. package/dist/tools/mcp.d.ts.map +1 -0
  388. package/dist/tools/mcp.js.map +1 -0
  389. package/dist/tools/text-analysis.d.ts.map +1 -0
  390. package/dist/tools/text-analysis.js.map +1 -0
  391. package/dist/tools/web-scraper.d.ts.map +1 -0
  392. package/dist/tools/web-scraper.js.map +1 -0
  393. package/dist/tools/web-search.d.ts.map +1 -0
  394. package/dist/tools/web-search.js.map +1 -0
  395. package/dist/traces/index.d.ts.map +1 -0
  396. package/dist/traces/index.js.map +1 -0
  397. package/dist/ui/components.d.ts.map +1 -0
  398. package/dist/ui/components.js.map +1 -0
  399. package/package.json +1 -1
  400. package/.github/ISSUE_TEMPLATE/bug_report.md +0 -20
  401. package/.github/ISSUE_TEMPLATE/feature_request.md +0 -14
  402. package/.github/PULL_REQUEST_TEMPLATE.md +0 -13
  403. package/.github/workflows/ci.yml +0 -24
  404. package/docs/.vitepress/config.ts +0 -103
  405. package/docs/api/cli.md +0 -48
  406. package/docs/api/oad-schema.md +0 -64
  407. package/docs/api/sdk.md +0 -80
  408. package/docs/guide/concepts.md +0 -51
  409. package/docs/guide/configuration.md +0 -79
  410. package/docs/guide/deployment.md +0 -42
  411. package/docs/guide/getting-started.md +0 -44
  412. package/docs/guide/templates.md +0 -28
  413. package/docs/guide/testing.md +0 -84
  414. package/docs/index.md +0 -27
  415. package/docs/zh/api/cli.md +0 -54
  416. package/docs/zh/api/oad-schema.md +0 -87
  417. package/docs/zh/api/sdk.md +0 -102
  418. package/docs/zh/guide/concepts.md +0 -104
  419. package/docs/zh/guide/configuration.md +0 -135
  420. package/docs/zh/guide/deployment.md +0 -81
  421. package/docs/zh/guide/getting-started.md +0 -82
  422. package/docs/zh/guide/templates.md +0 -84
  423. package/docs/zh/guide/testing.md +0 -88
  424. package/docs/zh/index.md +0 -27
  425. package/fix-sidebar.mjs +0 -188
  426. package/serve-studio.js +0 -13
  427. package/serve-test.js +0 -25
  428. package/src/analytics/index.ts +0 -66
  429. package/src/channels/dingtalk.ts +0 -46
  430. package/src/channels/discord.ts +0 -192
  431. package/src/channels/email.ts +0 -351
  432. package/src/channels/feishu.ts +0 -349
  433. package/src/channels/googlechat.ts +0 -42
  434. package/src/channels/imessage.ts +0 -32
  435. package/src/channels/index.ts +0 -15
  436. package/src/channels/irc.ts +0 -82
  437. package/src/channels/line.ts +0 -33
  438. package/src/channels/matrix.ts +0 -34
  439. package/src/channels/mattermost.ts +0 -57
  440. package/src/channels/msteams.ts +0 -33
  441. package/src/channels/nostr.ts +0 -33
  442. package/src/channels/qq.ts +0 -34
  443. package/src/channels/signal.ts +0 -33
  444. package/src/channels/slack.ts +0 -217
  445. package/src/channels/sms.ts +0 -34
  446. package/src/channels/telegram.ts +0 -616
  447. package/src/channels/twitch.ts +0 -65
  448. package/src/channels/voice-call.ts +0 -100
  449. package/src/channels/voice.ts +0 -471
  450. package/src/channels/web.ts +0 -632
  451. package/src/channels/webhook.ts +0 -199
  452. package/src/channels/websocket.ts +0 -399
  453. package/src/channels/wechat.ts +0 -329
  454. package/src/channels/whatsapp.ts +0 -33
  455. package/src/cli/chat.ts +0 -99
  456. package/src/cli/setup.ts +0 -314
  457. package/src/cli.ts +0 -2723
  458. package/src/core/a2a.ts +0 -203
  459. package/src/core/agent.ts +0 -476
  460. package/src/core/analytics-engine.ts +0 -186
  461. package/src/core/api-server.ts +0 -277
  462. package/src/core/audio.ts +0 -98
  463. package/src/core/auth.ts +0 -57
  464. package/src/core/cache.ts +0 -141
  465. package/src/core/collaboration.ts +0 -275
  466. package/src/core/compose.ts +0 -77
  467. package/src/core/config.ts +0 -14
  468. package/src/core/context-discovery.ts +0 -85
  469. package/src/core/context-refs.ts +0 -140
  470. package/src/core/errors.ts +0 -148
  471. package/src/core/gateway.ts +0 -106
  472. package/src/core/heartbeat.ts +0 -51
  473. package/src/core/hitl.ts +0 -138
  474. package/src/core/hooks.ts +0 -105
  475. package/src/core/ide-bridge.ts +0 -133
  476. package/src/core/knowledge.ts +0 -255
  477. package/src/core/logger.ts +0 -57
  478. package/src/core/node-network.ts +0 -86
  479. package/src/core/orchestrator.ts +0 -215
  480. package/src/core/performance.ts +0 -187
  481. package/src/core/profiles.ts +0 -122
  482. package/src/core/rate-limiter.ts +0 -128
  483. package/src/core/room.ts +0 -109
  484. package/src/core/runtime.ts +0 -410
  485. package/src/core/sandbox.ts +0 -344
  486. package/src/core/scheduler.ts +0 -187
  487. package/src/core/security.ts +0 -171
  488. package/src/core/session-manager.ts +0 -137
  489. package/src/core/streaming.ts +0 -195
  490. package/src/core/subagent.ts +0 -98
  491. package/src/core/types.ts +0 -68
  492. package/src/core/versioning.ts +0 -106
  493. package/src/core/vision.ts +0 -180
  494. package/src/core/watch.ts +0 -178
  495. package/src/core/workflow-graph.ts +0 -365
  496. package/src/core/workflow.ts +0 -235
  497. package/src/daemon.ts +0 -96
  498. package/src/deploy/hermes.ts +0 -156
  499. package/src/deploy/index.ts +0 -255
  500. package/src/deploy/openclaw.ts +0 -190
  501. package/src/doctor.ts +0 -156
  502. package/src/eval/index.ts +0 -211
  503. package/src/eval/suites/basic.json +0 -16
  504. package/src/eval/suites/memory.json +0 -12
  505. package/src/eval/suites/safety.json +0 -14
  506. package/src/hub/brain-seed.ts +0 -54
  507. package/src/hub/client.ts +0 -60
  508. package/src/i18n/index.ts +0 -216
  509. package/src/index.ts +0 -283
  510. package/src/mcp/servers/calculator-mcp.ts +0 -65
  511. package/src/mcp/servers/crypto-mcp.ts +0 -73
  512. package/src/mcp/servers/database-mcp.ts +0 -72
  513. package/src/mcp/servers/datetime-mcp.ts +0 -69
  514. package/src/mcp/servers/filesystem.ts +0 -66
  515. package/src/mcp/servers/github-mcp.ts +0 -58
  516. package/src/mcp/servers/index.ts +0 -63
  517. package/src/mcp/servers/json-mcp.ts +0 -102
  518. package/src/mcp/servers/memory-mcp.ts +0 -56
  519. package/src/mcp/servers/regex-mcp.ts +0 -53
  520. package/src/mcp/servers/web-mcp.ts +0 -49
  521. package/src/memory/context-compressor.ts +0 -189
  522. package/src/memory/deepbrain.ts +0 -108
  523. package/src/memory/index.ts +0 -41
  524. package/src/memory/seed-loader.ts +0 -212
  525. package/src/memory/user-profiler.ts +0 -215
  526. package/src/plugins/content-filter.ts +0 -23
  527. package/src/plugins/index.ts +0 -339
  528. package/src/plugins/logger.ts +0 -18
  529. package/src/plugins/rate-limiter.ts +0 -38
  530. package/src/protocols/a2a/client.ts +0 -132
  531. package/src/protocols/a2a/index.ts +0 -8
  532. package/src/protocols/a2a/server.ts +0 -333
  533. package/src/protocols/a2a/types.ts +0 -88
  534. package/src/protocols/a2a/utils.ts +0 -50
  535. package/src/protocols/agui/client.ts +0 -83
  536. package/src/protocols/agui/index.ts +0 -4
  537. package/src/protocols/agui/server.ts +0 -218
  538. package/src/protocols/agui/types.ts +0 -153
  539. package/src/protocols/index.ts +0 -2
  540. package/src/protocols/mcp/agent-tools.ts +0 -134
  541. package/src/protocols/mcp/index.ts +0 -8
  542. package/src/protocols/mcp/server.ts +0 -262
  543. package/src/protocols/mcp/types.ts +0 -69
  544. package/src/providers/index.ts +0 -632
  545. package/src/publish/index.ts +0 -376
  546. package/src/scheduler/cron-engine.ts +0 -191
  547. package/src/scheduler/index.ts +0 -2
  548. package/src/schema/oad.ts +0 -217
  549. package/src/security/approval.ts +0 -131
  550. package/src/security/approvals.ts +0 -143
  551. package/src/security/elevated.ts +0 -105
  552. package/src/security/guardrails.ts +0 -248
  553. package/src/security/index.ts +0 -9
  554. package/src/security/keys.ts +0 -87
  555. package/src/security/secrets.ts +0 -129
  556. package/src/skills/auto-learn.ts +0 -262
  557. package/src/skills/base.ts +0 -16
  558. package/src/skills/builtin/index.ts +0 -408
  559. package/src/skills/document.ts +0 -100
  560. package/src/skills/http.ts +0 -35
  561. package/src/skills/index.ts +0 -27
  562. package/src/skills/marketplace.ts +0 -113
  563. package/src/skills/scheduler.ts +0 -80
  564. package/src/skills/types.ts +0 -42
  565. package/src/skills/webhook-trigger.ts +0 -59
  566. package/src/studio/server.ts +0 -1791
  567. package/src/studio/templates-data.ts +0 -178
  568. package/src/studio-ui/index.html +0 -3076
  569. package/src/telemetry/index.ts +0 -324
  570. package/src/templates/code-reviewer.ts +0 -30
  571. package/src/templates/content-writer.ts +0 -58
  572. package/src/templates/customer-service.ts +0 -76
  573. package/src/templates/data-analyst.ts +0 -66
  574. package/src/templates/executive-assistant.ts +0 -71
  575. package/src/templates/financial-advisor.ts +0 -60
  576. package/src/templates/hr-recruiter.ts +0 -58
  577. package/src/templates/knowledge-base.ts +0 -27
  578. package/src/templates/legal-assistant.ts +0 -71
  579. package/src/templates/project-manager.ts +0 -58
  580. package/src/templates/sales-assistant.ts +0 -75
  581. package/src/templates/teacher.ts +0 -75
  582. package/src/testing/index.ts +0 -181
  583. package/src/tools/builtin/browser.ts +0 -299
  584. package/src/tools/builtin/datetime.ts +0 -41
  585. package/src/tools/builtin/file.ts +0 -107
  586. package/src/tools/builtin/home-assistant.ts +0 -116
  587. package/src/tools/builtin/index.ts +0 -37
  588. package/src/tools/builtin/rl-tools.ts +0 -243
  589. package/src/tools/builtin/shell.ts +0 -43
  590. package/src/tools/builtin/vision.ts +0 -64
  591. package/src/tools/builtin/web-search.ts +0 -126
  592. package/src/tools/builtin/web.ts +0 -35
  593. package/src/tools/calculator.ts +0 -73
  594. package/src/tools/datetime.ts +0 -149
  595. package/src/tools/document-processor.ts +0 -213
  596. package/src/tools/gateway.ts +0 -220
  597. package/src/tools/image-generator.ts +0 -150
  598. package/src/tools/integrations/calendar.ts +0 -73
  599. package/src/tools/integrations/code-exec.ts +0 -39
  600. package/src/tools/integrations/csv-analyzer.ts +0 -92
  601. package/src/tools/integrations/database.ts +0 -44
  602. package/src/tools/integrations/email-send.ts +0 -76
  603. package/src/tools/integrations/git-tool.ts +0 -42
  604. package/src/tools/integrations/github-tool.ts +0 -76
  605. package/src/tools/integrations/image-gen.ts +0 -56
  606. package/src/tools/integrations/index.ts +0 -92
  607. package/src/tools/integrations/jira.ts +0 -83
  608. package/src/tools/integrations/notion.ts +0 -71
  609. package/src/tools/integrations/npm-tool.ts +0 -48
  610. package/src/tools/integrations/pdf-reader.ts +0 -58
  611. package/src/tools/integrations/slack.ts +0 -65
  612. package/src/tools/integrations/summarizer.ts +0 -49
  613. package/src/tools/integrations/translator.ts +0 -48
  614. package/src/tools/integrations/trello.ts +0 -60
  615. package/src/tools/integrations/vector-search.ts +0 -42
  616. package/src/tools/integrations/web-scraper.ts +0 -47
  617. package/src/tools/integrations/web-search.ts +0 -58
  618. package/src/tools/integrations/webhook.ts +0 -38
  619. package/src/tools/json-transform.ts +0 -187
  620. package/src/tools/mcp-client.ts +0 -131
  621. package/src/tools/mcp.ts +0 -76
  622. package/src/tools/text-analysis.ts +0 -116
  623. package/src/tools/web-scraper.ts +0 -179
  624. package/src/tools/web-search.ts +0 -180
  625. package/src/traces/index.ts +0 -132
  626. package/src/types/agent-workstation.d.ts +0 -2
  627. package/src/ui/components.ts +0 -127
  628. package/srv-err.txt +0 -0
  629. package/srv-out.txt +0 -1
  630. package/test-agent/Dockerfile +0 -9
  631. package/test-agent/README.md +0 -50
  632. package/test-agent/agent.yaml +0 -23
  633. package/test-agent/docker-compose.yml +0 -11
  634. package/test-agent/oad.yaml +0 -31
  635. package/test-agent/package-lock.json +0 -1492
  636. package/test-agent/package.json +0 -18
  637. package/test-agent/src/index.ts +0 -24
  638. package/test-agent/src/skills/echo.ts +0 -15
  639. package/test-agent/tsconfig.json +0 -25
  640. package/test-full.js +0 -43
  641. package/test-sidebar.js +0 -22
  642. package/test-studio3.js +0 -75
  643. package/test-studio4.js +0 -41
  644. package/tests/a2a-protocol.test.ts +0 -285
  645. package/tests/a2a.test.ts +0 -66
  646. package/tests/agent.test.ts +0 -72
  647. package/tests/agui-protocol.test.ts +0 -246
  648. package/tests/analytics.test.ts +0 -50
  649. package/tests/api-server.test.ts +0 -148
  650. package/tests/approvals.test.ts +0 -89
  651. package/tests/audio.test.ts +0 -40
  652. package/tests/auto-learn.test.ts +0 -105
  653. package/tests/brain-seed-extended.test.ts +0 -490
  654. package/tests/brain-seed.test.ts +0 -239
  655. package/tests/browser.test.ts +0 -179
  656. package/tests/builtin-tools.test.ts +0 -83
  657. package/tests/channel.test.ts +0 -39
  658. package/tests/channels/discord.test.ts +0 -79
  659. package/tests/channels/email.test.ts +0 -148
  660. package/tests/channels/feishu.test.ts +0 -123
  661. package/tests/channels/telegram.test.ts +0 -129
  662. package/tests/channels/websocket.test.ts +0 -53
  663. package/tests/channels/wechat.test.ts +0 -170
  664. package/tests/channels-extra.test.ts +0 -45
  665. package/tests/chat-cli.test.ts +0 -160
  666. package/tests/cli.test.ts +0 -46
  667. package/tests/collaboration.test.ts +0 -319
  668. package/tests/context-compressor.test.ts +0 -172
  669. package/tests/context-refs.test.ts +0 -121
  670. package/tests/cron-engine.test.ts +0 -101
  671. package/tests/daemon.test.ts +0 -135
  672. package/tests/deepbrain-wire.test.ts +0 -234
  673. package/tests/deploy-and-dag.test.ts +0 -196
  674. package/tests/doctor.test.ts +0 -38
  675. package/tests/document-processor.test.ts +0 -69
  676. package/tests/e2e-nocode.test.ts +0 -442
  677. package/tests/e2e.test.ts +0 -134
  678. package/tests/elevated.test.ts +0 -69
  679. package/tests/errors.test.ts +0 -83
  680. package/tests/eval.test.ts +0 -173
  681. package/tests/gateway.test.ts +0 -63
  682. package/tests/guardrails.test.ts +0 -177
  683. package/tests/hitl.test.ts +0 -71
  684. package/tests/home-assistant.test.ts +0 -40
  685. package/tests/hooks.test.ts +0 -79
  686. package/tests/i18n.test.ts +0 -41
  687. package/tests/ide-bridge.test.ts +0 -38
  688. package/tests/image-generator.test.ts +0 -84
  689. package/tests/init-role.test.ts +0 -124
  690. package/tests/integrations.test.ts +0 -249
  691. package/tests/mcp-client.test.ts +0 -92
  692. package/tests/mcp-server.test.ts +0 -178
  693. package/tests/mcp-servers.test.ts +0 -260
  694. package/tests/mcp.test.ts +0 -54
  695. package/tests/node-network.test.ts +0 -74
  696. package/tests/oad.test.ts +0 -68
  697. package/tests/performance.test.ts +0 -115
  698. package/tests/plugin-a2a-enhanced.test.ts +0 -230
  699. package/tests/plugin.test.ts +0 -74
  700. package/tests/profiles.test.ts +0 -61
  701. package/tests/publish.test.ts +0 -231
  702. package/tests/rl-tools.test.ts +0 -93
  703. package/tests/room.test.ts +0 -106
  704. package/tests/runtime.test.ts +0 -42
  705. package/tests/sandbox-manager.test.ts +0 -46
  706. package/tests/sandbox.test.ts +0 -46
  707. package/tests/scheduler.test.ts +0 -200
  708. package/tests/secrets.test.ts +0 -107
  709. package/tests/security-enhanced.test.ts +0 -233
  710. package/tests/security.test.ts +0 -60
  711. package/tests/settings-api.test.ts +0 -148
  712. package/tests/setup.test.ts +0 -73
  713. package/tests/skill-learner.test.ts +0 -161
  714. package/tests/streaming.test.ts +0 -109
  715. package/tests/studio.test.ts +0 -402
  716. package/tests/subagent.test.ts +0 -193
  717. package/tests/telegram-discord.test.ts +0 -60
  718. package/tests/telemetry.test.ts +0 -186
  719. package/tests/templates.test.ts +0 -77
  720. package/tests/tools/builtin-extended.test.ts +0 -138
  721. package/tests/user-profiler.test.ts +0 -169
  722. package/tests/v070.test.ts +0 -76
  723. package/tests/v090-features.test.ts +0 -254
  724. package/tests/versioning.test.ts +0 -75
  725. package/tests/vision.test.ts +0 -61
  726. package/tests/voice-call.test.ts +0 -47
  727. package/tests/voice-enhanced.test.ts +0 -169
  728. package/tests/voice-interaction.test.ts +0 -38
  729. package/tests/voice.test.ts +0 -61
  730. package/tests/web-search.test.ts +0 -155
  731. package/tests/webhook.test.ts +0 -29
  732. package/tests/workflow-graph.test.ts +0 -279
  733. package/tests/workflow.test.ts +0 -143
  734. package/tmp-js-test.js +0 -1532
  735. package/tmp-sc.js +0 -1716
  736. package/tutorial/customer-service-agent/README.md +0 -612
  737. package/tutorial/customer-service-agent/SOUL.md +0 -26
  738. package/tutorial/customer-service-agent/agent.yaml +0 -63
  739. package/tutorial/customer-service-agent/package.json +0 -19
  740. package/tutorial/customer-service-agent/src/index.ts +0 -69
  741. package/tutorial/customer-service-agent/src/skills/faq.ts +0 -27
  742. package/tutorial/customer-service-agent/src/skills/ticket.ts +0 -22
  743. package/tutorial/customer-service-agent/tsconfig.json +0 -14
  744. package/vitest.config.ts +0 -9
@@ -1,344 +0,0 @@
1
- import type { TrustLevelType } from '../schema/oad';
2
- import * as path from 'path';
3
- import * as fs from 'fs';
4
-
5
- export interface SandboxConfig {
6
- trustLevel: TrustLevelType;
7
- agentDir: string;
8
- networkAllowlist?: string[];
9
- shellAllowed?: boolean;
10
- allowedCommands?: string[];
11
- blockedCommands?: string[];
12
- maxFileSize?: number; // bytes, default 10MB
13
- maxFiles?: number; // max files in workspace, default 1000
14
- networkAccess?: boolean; // allow network, default true
15
- readOnlyPaths?: string[]; // paths that can't be written
16
- timeout?: number; // global timeout ms
17
- }
18
-
19
- export interface ValidationResult {
20
- allowed: boolean;
21
- reason?: string;
22
- }
23
-
24
- export interface SandboxStatus {
25
- files: number;
26
- totalSize: number;
27
- violations: number;
28
- }
29
-
30
- export interface SandboxRestrictions {
31
- fileSystem: { read: string[]; write: string[] };
32
- network: { allowed: string[] };
33
- shell: boolean;
34
- }
35
-
36
- const TRUST_RESTRICTIONS: Record<string, SandboxRestrictions> = {
37
- sandbox: {
38
- fileSystem: { read: ['.'], write: ['.'] },
39
- network: { allowed: [] },
40
- shell: false,
41
- },
42
- verified: {
43
- fileSystem: { read: ['.', '..'], write: ['.'] },
44
- network: { allowed: ['*.deepleaper.com', 'api.openai.com', 'api.deepseek.com'] },
45
- shell: false,
46
- },
47
- certified: {
48
- fileSystem: { read: ['*'], write: ['.', '..'] },
49
- network: { allowed: ['*'] },
50
- shell: true,
51
- },
52
- listed: {
53
- fileSystem: { read: ['*'], write: ['*'] },
54
- network: { allowed: ['*'] },
55
- shell: true,
56
- },
57
- };
58
-
59
- export class Sandbox {
60
- private config: SandboxConfig;
61
- private restrictions: SandboxRestrictions;
62
- private violations: number = 0;
63
- private maxFileSize: number;
64
- private maxFiles: number;
65
-
66
- constructor(config: SandboxConfig) {
67
- this.config = config;
68
- this.restrictions = {
69
- ...TRUST_RESTRICTIONS[config.trustLevel] ?? TRUST_RESTRICTIONS.sandbox,
70
- };
71
- if (config.networkAllowlist) {
72
- this.restrictions.network.allowed = config.networkAllowlist;
73
- }
74
- if (config.shellAllowed !== undefined) {
75
- this.restrictions.shell = config.shellAllowed;
76
- }
77
- if (config.networkAccess === false) {
78
- this.restrictions.network.allowed = [];
79
- }
80
- this.maxFileSize = config.maxFileSize ?? 10 * 1024 * 1024; // 10MB
81
- this.maxFiles = config.maxFiles ?? 1000;
82
- }
83
-
84
- get trustLevel(): TrustLevelType {
85
- return this.config.trustLevel;
86
- }
87
-
88
- getRestrictions(): SandboxRestrictions {
89
- return { ...this.restrictions };
90
- }
91
-
92
- checkFileAccess(filePath: string, mode: 'read' | 'write'): boolean {
93
- const resolved = path.resolve(filePath);
94
- const agentDir = path.resolve(this.config.agentDir);
95
- const allowedPaths = mode === 'read' ? this.restrictions.fileSystem.read : this.restrictions.fileSystem.write;
96
-
97
- if (allowedPaths.includes('*')) return true;
98
-
99
- for (const allowed of allowedPaths) {
100
- const allowedResolved = path.resolve(this.config.agentDir, allowed);
101
- if (resolved.startsWith(allowedResolved)) return true;
102
- }
103
-
104
- // Always allow access within agent's own directory
105
- return resolved.startsWith(agentDir);
106
- }
107
-
108
- checkNetworkAccess(url: string): boolean {
109
- if (this.restrictions.network.allowed.includes('*')) return true;
110
- if (this.restrictions.network.allowed.length === 0) return false;
111
-
112
- try {
113
- const hostname = new URL(url).hostname;
114
- return this.restrictions.network.allowed.some((pattern) => {
115
- if (pattern.startsWith('*.')) {
116
- return hostname.endsWith(pattern.slice(1));
117
- }
118
- return hostname === pattern;
119
- });
120
- } catch {
121
- return false;
122
- }
123
- }
124
-
125
- checkShellAccess(): boolean {
126
- return this.restrictions.shell;
127
- }
128
-
129
- validateFileOp(action: 'read' | 'write' | 'delete', filePath: string): ValidationResult {
130
- const resolved = path.resolve(filePath);
131
-
132
- if (action === 'write' || action === 'delete') {
133
- // Check read-only paths
134
- if (this.config.readOnlyPaths) {
135
- for (const ro of this.config.readOnlyPaths) {
136
- const roResolved = path.resolve(ro);
137
- if (resolved.startsWith(roResolved) || resolved === roResolved) {
138
- this.violations++;
139
- return { allowed: false, reason: `Path is read-only: ${ro}` };
140
- }
141
- }
142
- }
143
-
144
- // Check file size for writes
145
- if (action === 'write') {
146
- try {
147
- if (fs.existsSync(resolved)) {
148
- const stat = fs.statSync(resolved);
149
- if (stat.size > this.maxFileSize) {
150
- this.violations++;
151
- return { allowed: false, reason: `File exceeds max size: ${this.maxFileSize} bytes` };
152
- }
153
- }
154
- } catch {
155
- // File doesn't exist yet — that's fine
156
- }
157
- }
158
- }
159
-
160
- const mode = action === 'read' ? 'read' : 'write';
161
- if (!this.checkFileAccess(filePath, mode)) {
162
- this.violations++;
163
- return { allowed: false, reason: `File access denied for ${action}: ${filePath}` };
164
- }
165
-
166
- return { allowed: true };
167
- }
168
-
169
- validateCommand(command: string): ValidationResult {
170
- if (!this.restrictions.shell) {
171
- this.violations++;
172
- return { allowed: false, reason: 'Shell access is disabled' };
173
- }
174
-
175
- // Check blocklist
176
- if (this.config.blockedCommands) {
177
- for (const blocked of this.config.blockedCommands) {
178
- if (command.includes(blocked)) {
179
- this.violations++;
180
- return { allowed: false, reason: `Command is blocked: ${blocked}` };
181
- }
182
- }
183
- }
184
-
185
- // Check allowlist (if set, only allowed commands pass)
186
- if (this.config.allowedCommands && this.config.allowedCommands.length > 0) {
187
- const allowed = this.config.allowedCommands.some(a => command.startsWith(a) || command.includes(a));
188
- if (!allowed) {
189
- this.violations++;
190
- return { allowed: false, reason: 'Command not in allowlist' };
191
- }
192
- }
193
-
194
- return { allowed: true };
195
- }
196
-
197
- validateNetwork(url: string): ValidationResult {
198
- if (this.config.networkAccess === false) {
199
- this.violations++;
200
- return { allowed: false, reason: 'Network access is disabled' };
201
- }
202
- if (!this.checkNetworkAccess(url)) {
203
- this.violations++;
204
- return { allowed: false, reason: `Network access denied for: ${url}` };
205
- }
206
- return { allowed: true };
207
- }
208
-
209
- getStatus(): SandboxStatus {
210
- let files = 0;
211
- let totalSize = 0;
212
- try {
213
- const agentDir = path.resolve(this.config.agentDir);
214
- if (fs.existsSync(agentDir)) {
215
- const countFiles = (dir: string) => {
216
- const entries = fs.readdirSync(dir, { withFileTypes: true });
217
- for (const entry of entries) {
218
- const full = path.join(dir, entry.name);
219
- if (entry.isDirectory() && entry.name !== 'node_modules') {
220
- countFiles(full);
221
- } else if (entry.isFile()) {
222
- files++;
223
- try { totalSize += fs.statSync(full).size; } catch {}
224
- }
225
- }
226
- };
227
- countFiles(agentDir);
228
- }
229
- } catch {}
230
- return { files, totalSize, violations: this.violations };
231
- }
232
-
233
- getViolations(): number {
234
- return this.violations;
235
- }
236
-
237
- getMaxFileSize(): number {
238
- return this.maxFileSize;
239
- }
240
-
241
- getMaxFiles(): number {
242
- return this.maxFiles;
243
- }
244
- }
245
-
246
- // ─── Remote Sandbox Manager (v2.2.0) ────────────────────────
247
-
248
- export interface RemoteSandboxConfig {
249
- backend: 'local' | 'docker' | 'ssh';
250
- docker?: { image: string; volumes?: string[] };
251
- ssh?: { host: string; user: string; keyPath?: string };
252
- timeout?: number;
253
- }
254
-
255
- export interface ExecResult {
256
- stdout: string;
257
- stderr: string;
258
- exitCode: number;
259
- }
260
-
261
- export class SandboxManager {
262
- private defaultConfig: RemoteSandboxConfig;
263
-
264
- constructor(config?: Partial<RemoteSandboxConfig>) {
265
- this.defaultConfig = {
266
- backend: config?.backend ?? 'local',
267
- docker: config?.docker,
268
- ssh: config?.ssh,
269
- timeout: config?.timeout ?? 30000,
270
- };
271
- }
272
-
273
- async exec(command: string, config?: Partial<RemoteSandboxConfig>): Promise<ExecResult> {
274
- const cfg = { ...this.defaultConfig, ...config };
275
- const { execSync } = await import('child_process');
276
-
277
- switch (cfg.backend) {
278
- case 'local': {
279
- try {
280
- const stdout = execSync(command, {
281
- timeout: cfg.timeout,
282
- encoding: 'utf-8',
283
- stdio: ['pipe', 'pipe', 'pipe'],
284
- });
285
- return { stdout: stdout ?? '', stderr: '', exitCode: 0 };
286
- } catch (err: any) {
287
- return {
288
- stdout: err.stdout ?? '',
289
- stderr: err.stderr ?? '',
290
- exitCode: err.status ?? 1,
291
- };
292
- }
293
- }
294
- case 'docker': {
295
- if (!cfg.docker?.image) throw new Error('Docker image is required');
296
- const volumes = (cfg.docker.volumes ?? []).map(v => `-v ${v}`).join(' ');
297
- const dockerCmd = `docker run --rm ${volumes} ${cfg.docker.image} sh -c "${command.replace(/"/g, '\\"')}"`;
298
- return this.exec(dockerCmd, { backend: 'local', timeout: cfg.timeout });
299
- }
300
- case 'ssh': {
301
- if (!cfg.ssh?.host || !cfg.ssh?.user) throw new Error('SSH host and user are required');
302
- const keyArg = cfg.ssh.keyPath ? `-i ${cfg.ssh.keyPath}` : '';
303
- const sshCmd = `ssh ${keyArg} ${cfg.ssh.user}@${cfg.ssh.host} "${command.replace(/"/g, '\\"')}"`;
304
- return this.exec(sshCmd, { backend: 'local', timeout: cfg.timeout });
305
- }
306
- default:
307
- throw new Error(`Unknown sandbox backend: ${cfg.backend}`);
308
- }
309
- }
310
-
311
- async upload(localPath: string, remotePath: string, config?: Partial<RemoteSandboxConfig>): Promise<void> {
312
- const cfg = { ...this.defaultConfig, ...config };
313
- if (cfg.backend === 'local') {
314
- const fsp = await import('fs');
315
- fsp.copyFileSync(localPath, remotePath);
316
- return;
317
- }
318
- if (cfg.backend === 'ssh') {
319
- const keyArg = cfg.ssh?.keyPath ? `-i ${cfg.ssh.keyPath}` : '';
320
- await this.exec(`scp ${keyArg} "${localPath}" ${cfg.ssh!.user}@${cfg.ssh!.host}:"${remotePath}"`, { backend: 'local' });
321
- return;
322
- }
323
- if (cfg.backend === 'docker') {
324
- throw new Error('Upload to docker not yet supported. Use volumes instead.');
325
- }
326
- }
327
-
328
- async download(remotePath: string, localPath: string, config?: Partial<RemoteSandboxConfig>): Promise<void> {
329
- const cfg = { ...this.defaultConfig, ...config };
330
- if (cfg.backend === 'local') {
331
- const fsp = await import('fs');
332
- fsp.copyFileSync(remotePath, localPath);
333
- return;
334
- }
335
- if (cfg.backend === 'ssh') {
336
- const keyArg = cfg.ssh?.keyPath ? `-i ${cfg.ssh.keyPath}` : '';
337
- await this.exec(`scp ${keyArg} ${cfg.ssh!.user}@${cfg.ssh!.host}:"${remotePath}" "${localPath}"`, { backend: 'local' });
338
- return;
339
- }
340
- if (cfg.backend === 'docker') {
341
- throw new Error('Download from docker not yet supported. Use volumes instead.');
342
- }
343
- }
344
- }
@@ -1,187 +0,0 @@
1
- /**
2
- * Simple cron scheduler — no external dependencies.
3
- * Supports cron expressions: star, star-slash-N, M-N, M,N for minute/hour/day/month/weekday.
4
- */
5
-
6
- export interface CronJob {
7
- id: string;
8
- name: string;
9
- schedule: string;
10
- task: string;
11
- enabled: boolean;
12
- lastRun?: Date;
13
- nextRun?: Date;
14
- }
15
-
16
- type CronField = { type: 'any' } | { type: 'every'; step: number } | { type: 'list'; values: number[] };
17
-
18
- interface ParsedCron {
19
- minute: CronField;
20
- hour: CronField;
21
- dayOfMonth: CronField;
22
- month: CronField;
23
- dayOfWeek: CronField;
24
- }
25
-
26
- function parseField(field: string, min: number, max: number): CronField {
27
- if (field === '*') return { type: 'any' };
28
- if (field.startsWith('*/')) {
29
- const step = parseInt(field.slice(2), 10);
30
- if (isNaN(step) || step <= 0) throw new Error(`Invalid cron step: ${field}`);
31
- return { type: 'every', step };
32
- }
33
- // Could be comma-separated, each part could be a range
34
- const values: number[] = [];
35
- for (const part of field.split(',')) {
36
- if (part.includes('-')) {
37
- const [a, b] = part.split('-').map(Number);
38
- if (isNaN(a) || isNaN(b)) throw new Error(`Invalid cron range: ${part}`);
39
- for (let i = a; i <= b; i++) values.push(i);
40
- } else {
41
- const n = parseInt(part, 10);
42
- if (isNaN(n)) throw new Error(`Invalid cron value: ${part}`);
43
- values.push(n);
44
- }
45
- }
46
- return { type: 'list', values };
47
- }
48
-
49
- export function parseCron(expr: string): ParsedCron {
50
- const parts = expr.trim().split(/\s+/);
51
- if (parts.length !== 5) throw new Error(`Invalid cron expression (need 5 fields): ${expr}`);
52
- return {
53
- minute: parseField(parts[0], 0, 59),
54
- hour: parseField(parts[1], 0, 23),
55
- dayOfMonth: parseField(parts[2], 1, 31),
56
- month: parseField(parts[3], 1, 12),
57
- dayOfWeek: parseField(parts[4], 0, 6),
58
- };
59
- }
60
-
61
- function fieldMatches(field: CronField, value: number): boolean {
62
- switch (field.type) {
63
- case 'any': return true;
64
- case 'every': return value % field.step === 0;
65
- case 'list': return field.values.includes(value);
66
- }
67
- }
68
-
69
- export function cronMatches(parsed: ParsedCron, date: Date): boolean {
70
- return (
71
- fieldMatches(parsed.minute, date.getMinutes()) &&
72
- fieldMatches(parsed.hour, date.getHours()) &&
73
- fieldMatches(parsed.dayOfMonth, date.getDate()) &&
74
- fieldMatches(parsed.month, date.getMonth() + 1) &&
75
- fieldMatches(parsed.dayOfWeek, date.getDay())
76
- );
77
- }
78
-
79
- /** Compute approximate next run (scans forward up to 48h). */
80
- function computeNextRun(parsed: ParsedCron, from: Date): Date | undefined {
81
- const d = new Date(from);
82
- d.setSeconds(0, 0);
83
- d.setMinutes(d.getMinutes() + 1);
84
- const limit = 48 * 60; // 48 hours in minutes
85
- for (let i = 0; i < limit; i++) {
86
- if (cronMatches(parsed, d)) return new Date(d);
87
- d.setMinutes(d.getMinutes() + 1);
88
- }
89
- return undefined;
90
- }
91
-
92
- export type JobHandler = (job: CronJob) => void | Promise<void>;
93
-
94
- export class Scheduler {
95
- private jobs = new Map<string, CronJob>();
96
- private parsed = new Map<string, ParsedCron>();
97
- private timer: ReturnType<typeof setInterval> | null = null;
98
- private handler: JobHandler;
99
-
100
- constructor(handler: JobHandler) {
101
- this.handler = handler;
102
- }
103
-
104
- addJob(job: CronJob): void {
105
- const p = parseCron(job.schedule);
106
- this.parsed.set(job.id, p);
107
- job.nextRun = computeNextRun(p, new Date()) ?? undefined;
108
- this.jobs.set(job.id, job);
109
- }
110
-
111
- removeJob(id: string): void {
112
- this.jobs.delete(id);
113
- this.parsed.delete(id);
114
- }
115
-
116
- enableJob(id: string): void {
117
- const job = this.jobs.get(id);
118
- if (job) job.enabled = true;
119
- }
120
-
121
- disableJob(id: string): void {
122
- const job = this.jobs.get(id);
123
- if (job) job.enabled = false;
124
- }
125
-
126
- getJobs(): CronJob[] {
127
- return Array.from(this.jobs.values());
128
- }
129
-
130
- getJob(id: string): CronJob | undefined {
131
- return this.jobs.get(id);
132
- }
133
-
134
- /** Run a specific job immediately */
135
- async runJob(id: string): Promise<boolean> {
136
- const job = this.jobs.get(id);
137
- if (!job) return false;
138
- job.lastRun = new Date();
139
- await this.handler(job);
140
- const parsed = this.parsed.get(id);
141
- if (parsed) job.nextRun = computeNextRun(parsed, new Date());
142
- return true;
143
- }
144
-
145
- start(): void {
146
- if (this.timer) return;
147
- // Check every 60 seconds
148
- this.timer = setInterval(() => this.tick(), 60_000);
149
- // Also tick immediately
150
- this.tick();
151
- }
152
-
153
- stop(): void {
154
- if (this.timer) {
155
- clearInterval(this.timer);
156
- this.timer = null;
157
- }
158
- }
159
-
160
- private tick(): void {
161
- const now = new Date();
162
- for (const [id, job] of this.jobs) {
163
- if (!job.enabled) continue;
164
- const parsed = this.parsed.get(id);
165
- if (!parsed) continue;
166
- if (cronMatches(parsed, now)) {
167
- // Avoid double-fire: check lastRun isn't same minute
168
- if (job.lastRun) {
169
- const last = job.lastRun;
170
- if (last.getFullYear() === now.getFullYear() &&
171
- last.getMonth() === now.getMonth() &&
172
- last.getDate() === now.getDate() &&
173
- last.getHours() === now.getHours() &&
174
- last.getMinutes() === now.getMinutes()) {
175
- continue;
176
- }
177
- }
178
- job.lastRun = new Date(now);
179
- job.nextRun = computeNextRun(parsed, now);
180
- // Fire and forget (log errors)
181
- Promise.resolve(this.handler(job)).catch((err) => {
182
- console.error(`[scheduler] Job "${job.name}" failed:`, err);
183
- });
184
- }
185
- }
186
- }
187
- }
@@ -1,171 +0,0 @@
1
- /**
2
- * Security Hardening Module - v1.0.0
3
- * Input sanitization, CORS, security headers, API key rotation.
4
- */
5
-
6
- import type { Request, Response, NextFunction } from 'express';
7
-
8
- // ── Input Sanitization ──────────────────────────────────────
9
-
10
- const XSS_PATTERNS = [
11
- /<script\b[^>]*>[\s\S]*?<\/script>/gi,
12
- /javascript:/gi,
13
- /on\w+\s*=/gi,
14
- /<iframe\b/gi,
15
- /<object\b/gi,
16
- /<embed\b/gi,
17
- /<form\b/gi,
18
- ];
19
-
20
- const SQL_PATTERNS = [
21
- /(\b(SELECT|INSERT|UPDATE|DELETE|DROP|UNION|ALTER|CREATE|EXEC)\b.*\b(FROM|INTO|TABLE|SET|WHERE|ALL)\b)/gi,
22
- /(--|;)\s*(DROP|ALTER|DELETE)/gi,
23
- ];
24
-
25
- export function sanitizeInput(input: string): string {
26
- let clean = input;
27
- for (const pattern of XSS_PATTERNS) {
28
- clean = clean.replace(pattern, '');
29
- }
30
- // Encode dangerous HTML entities
31
- clean = clean.replace(/&/g, '&amp;').replace(/</g, '&lt;').replace(/>/g, '&gt;');
32
- return clean;
33
- }
34
-
35
- export function detectInjection(input: string): { safe: boolean; threats: string[] } {
36
- const threats: string[] = [];
37
- for (const pattern of XSS_PATTERNS) {
38
- if (pattern.test(input)) threats.push('xss');
39
- pattern.lastIndex = 0;
40
- }
41
- for (const pattern of SQL_PATTERNS) {
42
- if (pattern.test(input)) threats.push('sql_injection');
43
- pattern.lastIndex = 0;
44
- }
45
- return { safe: threats.length === 0, threats: [...new Set(threats)] };
46
- }
47
-
48
- // ── Security Headers (Helmet-style) ────────────────────────
49
-
50
- export interface SecurityHeadersConfig {
51
- contentSecurityPolicy?: string;
52
- enableHSTS?: boolean;
53
- frameDeny?: boolean;
54
- xssProtection?: boolean;
55
- noSniff?: boolean;
56
- referrerPolicy?: string;
57
- }
58
-
59
- export function securityHeaders(config?: SecurityHeadersConfig) {
60
- const csp = config?.contentSecurityPolicy ?? "default-src 'self'; script-src 'self' 'unsafe-inline'; style-src 'self' 'unsafe-inline'; img-src 'self' data:; connect-src 'self'";
61
- return (_req: Request, res: Response, next: NextFunction): void => {
62
- res.setHeader('Content-Security-Policy', csp);
63
- res.setHeader('X-Content-Type-Options', 'nosniff');
64
- res.setHeader('X-Frame-Options', config?.frameDeny !== false ? 'DENY' : 'SAMEORIGIN');
65
- res.setHeader('X-XSS-Protection', '1; mode=block');
66
- res.setHeader('Referrer-Policy', config?.referrerPolicy ?? 'strict-origin-when-cross-origin');
67
- if (config?.enableHSTS !== false) {
68
- res.setHeader('Strict-Transport-Security', 'max-age=31536000; includeSubDomains');
69
- }
70
- res.removeHeader('X-Powered-By');
71
- next();
72
- };
73
- }
74
-
75
- // ── CORS Configuration ──────────────────────────────────────
76
-
77
- export interface CORSConfig {
78
- origins?: string[];
79
- methods?: string[];
80
- allowHeaders?: string[];
81
- credentials?: boolean;
82
- maxAge?: number;
83
- }
84
-
85
- export function corsMiddleware(config?: CORSConfig) {
86
- const origins = config?.origins ?? ['*'];
87
- const methods = config?.methods ?? ['GET', 'POST', 'OPTIONS'];
88
- const headers = config?.allowHeaders ?? ['Content-Type', 'Authorization'];
89
-
90
- return (req: Request, res: Response, next: NextFunction): void => {
91
- const origin = req.headers.origin ?? '';
92
- if (origins.includes('*') || origins.includes(origin)) {
93
- res.setHeader('Access-Control-Allow-Origin', origins.includes('*') ? '*' : origin);
94
- }
95
- res.setHeader('Access-Control-Allow-Methods', methods.join(', '));
96
- res.setHeader('Access-Control-Allow-Headers', headers.join(', '));
97
- if (config?.credentials) res.setHeader('Access-Control-Allow-Credentials', 'true');
98
- if (config?.maxAge) res.setHeader('Access-Control-Max-Age', String(config.maxAge));
99
- if (req.method === 'OPTIONS') { res.status(204).end(); return; }
100
- next();
101
- };
102
- }
103
-
104
- // ── API Key Rotation ────────────────────────────────────────
105
-
106
- export interface APIKeyEntry {
107
- key: string;
108
- label?: string;
109
- createdAt: number;
110
- expiresAt?: number;
111
- active: boolean;
112
- }
113
-
114
- export class APIKeyManager {
115
- private keys: APIKeyEntry[] = [];
116
-
117
- addKey(key: string, opts?: { label?: string; expiresAt?: number }): void {
118
- this.keys.push({ key, label: opts?.label, createdAt: Date.now(), expiresAt: opts?.expiresAt, active: true });
119
- }
120
-
121
- revokeKey(key: string): boolean {
122
- const entry = this.keys.find(k => k.key === key);
123
- if (entry) { entry.active = false; return true; }
124
- return false;
125
- }
126
-
127
- isValid(key: string): boolean {
128
- const entry = this.keys.find(k => k.key === key);
129
- if (!entry || !entry.active) return false;
130
- if (entry.expiresAt && Date.now() > entry.expiresAt) { entry.active = false; return false; }
131
- return true;
132
- }
133
-
134
- rotateKey(oldKey: string, newKey: string): boolean {
135
- const entry = this.keys.find(k => k.key === oldKey && k.active);
136
- if (!entry) return false;
137
- entry.active = false;
138
- this.addKey(newKey, { label: entry.label });
139
- return true;
140
- }
141
-
142
- listActive(): APIKeyEntry[] {
143
- return this.keys.filter(k => k.active && (!k.expiresAt || Date.now() <= k.expiresAt));
144
- }
145
-
146
- cleanup(): number {
147
- const before = this.keys.length;
148
- this.keys = this.keys.filter(k => k.active && (!k.expiresAt || Date.now() <= k.expiresAt));
149
- return before - this.keys.length;
150
- }
151
- }
152
-
153
- // ── Input Validation Middleware ──────────────────────────────
154
-
155
- export function inputValidation() {
156
- return (req: Request, res: Response, next: NextFunction): void => {
157
- if (req.body?.message && typeof req.body.message === 'string') {
158
- const check = detectInjection(req.body.message);
159
- if (!check.safe) {
160
- res.status(400).json({ error: 'Input contains potentially unsafe content', threats: check.threats });
161
- return;
162
- }
163
- // Limit message size
164
- if (req.body.message.length > 100_000) {
165
- res.status(413).json({ error: 'Message too large (max 100KB)' });
166
- return;
167
- }
168
- }
169
- next();
170
- };
171
- }