@action-llama/action-llama 0.15.0 → 0.17.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 (447) hide show
  1. package/dist/agents/container-runner.d.ts +1 -1
  2. package/dist/agents/container-runner.d.ts.map +1 -1
  3. package/dist/agents/runner.d.ts +0 -4
  4. package/dist/agents/runner.d.ts.map +1 -1
  5. package/dist/agents/runner.js +0 -10
  6. package/dist/agents/runner.js.map +1 -1
  7. package/dist/build-info.json +1 -1
  8. package/dist/cli/commands/agent.d.ts.map +1 -1
  9. package/dist/cli/commands/agent.js +0 -46
  10. package/dist/cli/commands/agent.js.map +1 -1
  11. package/dist/cli/commands/doctor.d.ts +2 -0
  12. package/dist/cli/commands/doctor.d.ts.map +1 -1
  13. package/dist/cli/commands/doctor.js +128 -14
  14. package/dist/cli/commands/doctor.js.map +1 -1
  15. package/dist/cli/commands/new.d.ts +7 -1
  16. package/dist/cli/commands/new.d.ts.map +1 -1
  17. package/dist/cli/commands/new.js +54 -23
  18. package/dist/cli/commands/new.js.map +1 -1
  19. package/dist/cli/commands/push.d.ts.map +1 -1
  20. package/dist/cli/commands/push.js +1 -0
  21. package/dist/cli/commands/push.js.map +1 -1
  22. package/dist/cli/commands/webhook.d.ts +11 -0
  23. package/dist/cli/commands/webhook.d.ts.map +1 -0
  24. package/dist/cli/commands/webhook.js +271 -0
  25. package/dist/cli/commands/webhook.js.map +1 -0
  26. package/dist/cli/main.js +22 -2
  27. package/dist/cli/main.js.map +1 -1
  28. package/dist/{gateway → control}/api-key.d.ts.map +1 -1
  29. package/dist/{gateway → control}/api-key.js.map +1 -1
  30. package/dist/{gateway → control}/auth.d.ts.map +1 -1
  31. package/dist/{gateway → control}/auth.js.map +1 -1
  32. package/dist/control/index.d.ts +11 -0
  33. package/dist/control/index.d.ts.map +1 -0
  34. package/dist/control/index.js +8 -0
  35. package/dist/control/index.js.map +1 -0
  36. package/dist/{gateway → control}/routes/control.d.ts.map +1 -1
  37. package/dist/{gateway → control}/routes/control.js.map +1 -1
  38. package/dist/{gateway → control}/routes/dashboard.d.ts.map +1 -1
  39. package/dist/{gateway → control}/routes/dashboard.js +68 -35
  40. package/dist/control/routes/dashboard.js.map +1 -0
  41. package/dist/{gateway → control}/routes/logs.d.ts.map +1 -1
  42. package/dist/{gateway → control}/routes/logs.js.map +1 -1
  43. package/dist/{gateway → control}/routes/stats.d.ts.map +1 -1
  44. package/dist/{gateway → control}/routes/stats.js +13 -0
  45. package/dist/control/routes/stats.js.map +1 -0
  46. package/dist/{gateway → control}/session-store.d.ts.map +1 -1
  47. package/dist/{gateway → control}/session-store.js.map +1 -1
  48. package/dist/control/types.d.ts +6 -0
  49. package/dist/control/types.d.ts.map +1 -0
  50. package/dist/{gateway → control}/types.js.map +1 -1
  51. package/dist/{gateway → control}/views/agent-detail-page.d.ts +2 -2
  52. package/dist/control/views/agent-detail-page.d.ts.map +1 -0
  53. package/dist/{gateway → control}/views/agent-detail-page.js +137 -52
  54. package/dist/control/views/agent-detail-page.js.map +1 -0
  55. package/dist/control/views/agent-skill-page.d.ts +2 -0
  56. package/dist/control/views/agent-skill-page.d.ts.map +1 -0
  57. package/dist/control/views/agent-skill-page.js +32 -0
  58. package/dist/control/views/agent-skill-page.js.map +1 -0
  59. package/dist/control/views/dashboard-page.d.ts +4 -0
  60. package/dist/control/views/dashboard-page.d.ts.map +1 -0
  61. package/dist/{gateway → control}/views/dashboard-page.js +65 -1
  62. package/dist/{gateway → control}/views/dashboard-page.js.map +1 -1
  63. package/dist/{gateway → control}/views/instance-detail-page.d.ts +9 -0
  64. package/dist/{gateway → control}/views/instance-detail-page.d.ts.map +1 -1
  65. package/dist/{gateway → control}/views/instance-detail-page.js +28 -1
  66. package/dist/control/views/instance-detail-page.js.map +1 -0
  67. package/dist/{gateway → control}/views/layout.d.ts.map +1 -1
  68. package/dist/{gateway → control}/views/layout.js.map +1 -1
  69. package/dist/{gateway → control}/views/login-page.d.ts.map +1 -1
  70. package/dist/{gateway → control}/views/login-page.js.map +1 -1
  71. package/dist/control/views/markdown.d.ts +6 -0
  72. package/dist/control/views/markdown.d.ts.map +1 -0
  73. package/dist/control/views/markdown.js +119 -0
  74. package/dist/control/views/markdown.js.map +1 -0
  75. package/dist/{gateway → control}/views/project-config-page.d.ts +0 -4
  76. package/dist/control/views/project-config-page.d.ts.map +1 -0
  77. package/dist/{gateway → control}/views/project-config-page.js +0 -82
  78. package/dist/control/views/project-config-page.js.map +1 -0
  79. package/dist/control/views/trigger-history-page.d.ts +10 -0
  80. package/dist/control/views/trigger-history-page.d.ts.map +1 -0
  81. package/dist/control/views/trigger-history-page.js +89 -0
  82. package/dist/control/views/trigger-history-page.js.map +1 -0
  83. package/dist/credentials/providers/file.d.ts +13 -0
  84. package/dist/credentials/providers/file.d.ts.map +1 -0
  85. package/dist/credentials/providers/file.js +34 -0
  86. package/dist/credentials/providers/file.js.map +1 -0
  87. package/dist/credentials/providers/index.d.ts +13 -0
  88. package/dist/credentials/providers/index.d.ts.map +1 -0
  89. package/dist/credentials/providers/index.js +70 -0
  90. package/dist/credentials/providers/index.js.map +1 -0
  91. package/dist/credentials/providers/vault.d.ts +19 -0
  92. package/dist/credentials/providers/vault.d.ts.map +1 -0
  93. package/dist/credentials/providers/vault.js +94 -0
  94. package/dist/credentials/providers/vault.js.map +1 -0
  95. package/dist/docker/local-runtime.d.ts.map +1 -1
  96. package/dist/docker/local-runtime.js +36 -7
  97. package/dist/docker/local-runtime.js.map +1 -1
  98. package/dist/docker/providers/index.d.ts +13 -0
  99. package/dist/docker/providers/index.d.ts.map +1 -0
  100. package/dist/docker/providers/index.js +74 -0
  101. package/dist/docker/providers/index.js.map +1 -0
  102. package/dist/docker/runtime.d.ts +4 -0
  103. package/dist/docker/runtime.d.ts.map +1 -1
  104. package/dist/{scheduler → events}/cron-setup.d.ts +7 -12
  105. package/dist/events/cron-setup.d.ts.map +1 -0
  106. package/dist/{scheduler → events}/cron-setup.js +4 -33
  107. package/dist/events/cron-setup.js.map +1 -0
  108. package/dist/events/event-queue-sqlite.d.ts.map +1 -0
  109. package/dist/events/event-queue-sqlite.js.map +1 -0
  110. package/dist/events/event-queue-unified.d.ts +50 -0
  111. package/dist/events/event-queue-unified.d.ts.map +1 -0
  112. package/dist/events/event-queue-unified.js +280 -0
  113. package/dist/events/event-queue-unified.js.map +1 -0
  114. package/dist/{scheduler → events}/event-queue.d.ts +2 -16
  115. package/dist/events/event-queue.d.ts.map +1 -0
  116. package/dist/events/event-queue.js.map +1 -0
  117. package/dist/events/index.d.ts +9 -0
  118. package/dist/events/index.d.ts.map +1 -0
  119. package/dist/events/index.js +5 -0
  120. package/dist/events/index.js.map +1 -0
  121. package/dist/{gateway → events}/routes/webhooks.d.ts +3 -1
  122. package/dist/events/routes/webhooks.d.ts.map +1 -0
  123. package/dist/events/routes/webhooks.js +201 -0
  124. package/dist/events/routes/webhooks.js.map +1 -0
  125. package/dist/{scheduler → events}/webhook-setup.d.ts +9 -6
  126. package/dist/events/webhook-setup.d.ts.map +1 -0
  127. package/dist/{scheduler → events}/webhook-setup.js +16 -26
  128. package/dist/events/webhook-setup.js.map +1 -0
  129. package/dist/{scheduler → execution}/call-dispatcher.d.ts.map +1 -1
  130. package/dist/{scheduler → execution}/call-dispatcher.js.map +1 -1
  131. package/dist/execution/call-store.d.ts.map +1 -0
  132. package/dist/execution/call-store.js.map +1 -0
  133. package/dist/execution/container-registry.d.ts.map +1 -0
  134. package/dist/execution/container-registry.js.map +1 -0
  135. package/dist/{scheduler → execution}/execution.d.ts +6 -4
  136. package/dist/execution/execution.d.ts.map +1 -0
  137. package/dist/{scheduler → execution}/execution.js +49 -8
  138. package/dist/execution/execution.js.map +1 -0
  139. package/dist/{scheduler → execution}/image-builder.d.ts +1 -1
  140. package/dist/execution/image-builder.d.ts.map +1 -0
  141. package/dist/{scheduler → execution}/image-builder.js +2 -0
  142. package/dist/execution/image-builder.js.map +1 -0
  143. package/dist/execution/index.d.ts +21 -0
  144. package/dist/execution/index.d.ts.map +1 -0
  145. package/dist/execution/index.js +14 -0
  146. package/dist/execution/index.js.map +1 -0
  147. package/dist/execution/lifecycle/agent-lifecycle.d.ts +114 -0
  148. package/dist/execution/lifecycle/agent-lifecycle.d.ts.map +1 -0
  149. package/dist/execution/lifecycle/agent-lifecycle.js +236 -0
  150. package/dist/execution/lifecycle/agent-lifecycle.js.map +1 -0
  151. package/dist/execution/lifecycle/index.d.ts +60 -0
  152. package/dist/execution/lifecycle/index.d.ts.map +1 -0
  153. package/dist/execution/lifecycle/index.js +103 -0
  154. package/dist/execution/lifecycle/index.js.map +1 -0
  155. package/dist/execution/lifecycle/instance-lifecycle.d.ts +88 -0
  156. package/dist/execution/lifecycle/instance-lifecycle.d.ts.map +1 -0
  157. package/dist/execution/lifecycle/instance-lifecycle.js +142 -0
  158. package/dist/execution/lifecycle/instance-lifecycle.js.map +1 -0
  159. package/dist/execution/lock-store.d.ts.map +1 -0
  160. package/dist/execution/lock-store.js.map +1 -0
  161. package/dist/execution/routes/calls.d.ts.map +1 -0
  162. package/dist/execution/routes/calls.js.map +1 -0
  163. package/dist/execution/routes/locks.d.ts.map +1 -0
  164. package/dist/execution/routes/locks.js.map +1 -0
  165. package/dist/execution/routes/shutdown.d.ts.map +1 -0
  166. package/dist/execution/routes/shutdown.js.map +1 -0
  167. package/dist/execution/routes/signals.d.ts.map +1 -0
  168. package/dist/execution/routes/signals.js.map +1 -0
  169. package/dist/{scheduler → execution}/runner-pool.d.ts.map +1 -1
  170. package/dist/{scheduler → execution}/runner-pool.js.map +1 -1
  171. package/dist/{scheduler → execution}/runner-setup.d.ts +1 -1
  172. package/dist/execution/runner-setup.d.ts.map +1 -0
  173. package/dist/{scheduler → execution}/runner-setup.js.map +1 -1
  174. package/dist/{scheduler → execution}/runtime-factory.d.ts +1 -1
  175. package/dist/{scheduler → execution}/runtime-factory.d.ts.map +1 -1
  176. package/dist/execution/runtime-factory.js +46 -0
  177. package/dist/execution/runtime-factory.js.map +1 -0
  178. package/dist/{gateway → execution}/types.d.ts +0 -5
  179. package/dist/execution/types.d.ts.map +1 -0
  180. package/dist/execution/types.js +2 -0
  181. package/dist/execution/types.js.map +1 -0
  182. package/dist/extensions/index.d.ts +4 -0
  183. package/dist/extensions/index.d.ts.map +1 -0
  184. package/dist/extensions/index.js +5 -0
  185. package/dist/extensions/index.js.map +1 -0
  186. package/dist/extensions/loader.d.ts +15 -0
  187. package/dist/extensions/loader.d.ts.map +1 -0
  188. package/dist/extensions/loader.js +116 -0
  189. package/dist/extensions/loader.js.map +1 -0
  190. package/dist/extensions/registry.d.ts +32 -0
  191. package/dist/extensions/registry.d.ts.map +1 -0
  192. package/dist/extensions/registry.js +123 -0
  193. package/dist/extensions/registry.js.map +1 -0
  194. package/dist/extensions/types.d.ts +74 -0
  195. package/dist/extensions/types.d.ts.map +1 -0
  196. package/dist/extensions/types.js +2 -0
  197. package/dist/extensions/types.js.map +1 -0
  198. package/dist/gateway/index.d.ts +10 -8
  199. package/dist/gateway/index.d.ts.map +1 -1
  200. package/dist/gateway/index.js +16 -15
  201. package/dist/gateway/index.js.map +1 -1
  202. package/dist/models/providers/anthropic.d.ts +17 -0
  203. package/dist/models/providers/anthropic.d.ts.map +1 -0
  204. package/dist/models/providers/anthropic.js +74 -0
  205. package/dist/models/providers/anthropic.js.map +1 -0
  206. package/dist/models/providers/custom.d.ts +18 -0
  207. package/dist/models/providers/custom.d.ts.map +1 -0
  208. package/dist/models/providers/custom.js +104 -0
  209. package/dist/models/providers/custom.js.map +1 -0
  210. package/dist/models/providers/index.d.ts +17 -0
  211. package/dist/models/providers/index.d.ts.map +1 -0
  212. package/dist/models/providers/index.js +107 -0
  213. package/dist/models/providers/index.js.map +1 -0
  214. package/dist/models/providers/openai.d.ts +18 -0
  215. package/dist/models/providers/openai.d.ts.map +1 -0
  216. package/dist/models/providers/openai.js +94 -0
  217. package/dist/models/providers/openai.js.map +1 -0
  218. package/dist/models/types.d.ts +51 -0
  219. package/dist/models/types.d.ts.map +1 -0
  220. package/dist/models/types.js +5 -0
  221. package/dist/models/types.js.map +1 -0
  222. package/dist/remote/push.d.ts.map +1 -1
  223. package/dist/remote/push.js +35 -5
  224. package/dist/remote/push.js.map +1 -1
  225. package/dist/scheduler/gateway-setup.d.ts +2 -1
  226. package/dist/scheduler/gateway-setup.d.ts.map +1 -1
  227. package/dist/scheduler/gateway-setup.js +7 -6
  228. package/dist/scheduler/gateway-setup.js.map +1 -1
  229. package/dist/scheduler/index.d.ts +3 -3
  230. package/dist/scheduler/index.d.ts.map +1 -1
  231. package/dist/scheduler/index.js +62 -92
  232. package/dist/scheduler/index.js.map +1 -1
  233. package/dist/scheduler/shutdown.d.ts +1 -1
  234. package/dist/scheduler/shutdown.d.ts.map +1 -1
  235. package/dist/scheduler/state.d.ts +2 -2
  236. package/dist/scheduler/state.d.ts.map +1 -1
  237. package/dist/scheduler/types.d.ts +2 -0
  238. package/dist/scheduler/types.d.ts.map +1 -1
  239. package/dist/scheduler/validation.js +2 -2
  240. package/dist/scheduler/validation.js.map +1 -1
  241. package/dist/scheduler/watcher.d.ts +2 -2
  242. package/dist/scheduler/watcher.d.ts.map +1 -1
  243. package/dist/scheduler/watcher.js +36 -10
  244. package/dist/scheduler/watcher.js.map +1 -1
  245. package/dist/shared/config.d.ts +12 -13
  246. package/dist/shared/config.d.ts.map +1 -1
  247. package/dist/shared/config.js +59 -25
  248. package/dist/shared/config.js.map +1 -1
  249. package/dist/shared/constants.d.ts +8 -0
  250. package/dist/shared/constants.d.ts.map +1 -1
  251. package/dist/shared/constants.js +8 -0
  252. package/dist/shared/constants.js.map +1 -1
  253. package/dist/shared/environment.d.ts +7 -0
  254. package/dist/shared/environment.d.ts.map +1 -1
  255. package/dist/shared/environment.js +29 -0
  256. package/dist/shared/environment.js.map +1 -1
  257. package/dist/shared/persistence/adapters/state-store.d.ts +24 -0
  258. package/dist/shared/persistence/adapters/state-store.d.ts.map +1 -0
  259. package/dist/shared/persistence/adapters/state-store.js +32 -0
  260. package/dist/shared/persistence/adapters/state-store.js.map +1 -0
  261. package/dist/shared/persistence/adapters/stats-store.d.ts +49 -0
  262. package/dist/shared/persistence/adapters/stats-store.d.ts.map +1 -0
  263. package/dist/shared/persistence/adapters/stats-store.js +213 -0
  264. package/dist/shared/persistence/adapters/stats-store.js.map +1 -0
  265. package/dist/shared/persistence/backends/memory.d.ts +39 -0
  266. package/dist/shared/persistence/backends/memory.d.ts.map +1 -0
  267. package/dist/shared/persistence/backends/memory.js +214 -0
  268. package/dist/shared/persistence/backends/memory.js.map +1 -0
  269. package/dist/shared/persistence/backends/sqlite.d.ts +38 -0
  270. package/dist/shared/persistence/backends/sqlite.d.ts.map +1 -0
  271. package/dist/shared/persistence/backends/sqlite.js +250 -0
  272. package/dist/shared/persistence/backends/sqlite.js.map +1 -0
  273. package/dist/shared/persistence/event-store.d.ts +77 -0
  274. package/dist/shared/persistence/event-store.d.ts.map +1 -0
  275. package/dist/shared/persistence/event-store.js +139 -0
  276. package/dist/shared/persistence/event-store.js.map +1 -0
  277. package/dist/shared/persistence/index.d.ts +119 -0
  278. package/dist/shared/persistence/index.d.ts.map +1 -0
  279. package/dist/shared/persistence/index.js +93 -0
  280. package/dist/shared/persistence/index.js.map +1 -0
  281. package/dist/shared/persistence/migration.d.ts +47 -0
  282. package/dist/shared/persistence/migration.d.ts.map +1 -0
  283. package/dist/shared/persistence/migration.js +297 -0
  284. package/dist/shared/persistence/migration.js.map +1 -0
  285. package/dist/shared/validation.d.ts +54 -0
  286. package/dist/shared/validation.d.ts.map +1 -0
  287. package/dist/shared/validation.js +231 -0
  288. package/dist/shared/validation.js.map +1 -0
  289. package/dist/shared/work-queue.d.ts +17 -0
  290. package/dist/shared/work-queue.d.ts.map +1 -0
  291. package/dist/shared/work-queue.js +2 -0
  292. package/dist/shared/work-queue.js.map +1 -0
  293. package/dist/stats/event-store.d.ts +37 -0
  294. package/dist/stats/event-store.d.ts.map +1 -0
  295. package/dist/stats/event-store.js +366 -0
  296. package/dist/stats/event-store.js.map +1 -0
  297. package/dist/stats/index.d.ts +1 -1
  298. package/dist/stats/index.d.ts.map +1 -1
  299. package/dist/stats/store.d.ts +45 -0
  300. package/dist/stats/store.d.ts.map +1 -1
  301. package/dist/stats/store.js +118 -2
  302. package/dist/stats/store.js.map +1 -1
  303. package/dist/telemetry/index.d.ts.map +1 -1
  304. package/dist/telemetry/index.js +7 -9
  305. package/dist/telemetry/index.js.map +1 -1
  306. package/dist/telemetry/providers/index.d.ts +5 -0
  307. package/dist/telemetry/providers/index.d.ts.map +1 -0
  308. package/dist/telemetry/providers/index.js +5 -0
  309. package/dist/telemetry/providers/index.js.map +1 -0
  310. package/dist/telemetry/providers/otel.d.ts +5 -0
  311. package/dist/telemetry/providers/otel.d.ts.map +1 -1
  312. package/dist/telemetry/providers/otel.js +45 -0
  313. package/dist/telemetry/providers/otel.js.map +1 -1
  314. package/dist/tui/App.js +2 -2
  315. package/dist/tui/App.js.map +1 -1
  316. package/dist/tui/status-tracker.d.ts +19 -0
  317. package/dist/tui/status-tracker.d.ts.map +1 -1
  318. package/dist/tui/status-tracker.js +96 -1
  319. package/dist/tui/status-tracker.js.map +1 -1
  320. package/dist/webhooks/providers/github.d.ts +2 -1
  321. package/dist/webhooks/providers/github.d.ts.map +1 -1
  322. package/dist/webhooks/providers/github.js +5 -2
  323. package/dist/webhooks/providers/github.js.map +1 -1
  324. package/dist/webhooks/providers/index.d.ts +25 -0
  325. package/dist/webhooks/providers/index.d.ts.map +1 -0
  326. package/dist/webhooks/providers/index.js +144 -0
  327. package/dist/webhooks/providers/index.js.map +1 -0
  328. package/dist/webhooks/providers/linear.d.ts +1 -1
  329. package/dist/webhooks/providers/linear.d.ts.map +1 -1
  330. package/dist/webhooks/providers/linear.js +2 -2
  331. package/dist/webhooks/providers/linear.js.map +1 -1
  332. package/dist/webhooks/providers/mintlify.d.ts +1 -1
  333. package/dist/webhooks/providers/mintlify.d.ts.map +1 -1
  334. package/dist/webhooks/providers/mintlify.js +2 -2
  335. package/dist/webhooks/providers/mintlify.js.map +1 -1
  336. package/dist/webhooks/providers/sentry.d.ts +1 -1
  337. package/dist/webhooks/providers/sentry.d.ts.map +1 -1
  338. package/dist/webhooks/providers/sentry.js +2 -2
  339. package/dist/webhooks/providers/sentry.js.map +1 -1
  340. package/dist/webhooks/providers/test.d.ts +1 -1
  341. package/dist/webhooks/providers/test.d.ts.map +1 -1
  342. package/dist/webhooks/providers/test.js +1 -1
  343. package/dist/webhooks/providers/test.js.map +1 -1
  344. package/dist/webhooks/registry.d.ts +8 -2
  345. package/dist/webhooks/registry.d.ts.map +1 -1
  346. package/dist/webhooks/registry.js +159 -3
  347. package/dist/webhooks/registry.js.map +1 -1
  348. package/dist/webhooks/types.d.ts +30 -1
  349. package/dist/webhooks/types.d.ts.map +1 -1
  350. package/dist/webhooks/validation.d.ts +7 -6
  351. package/dist/webhooks/validation.d.ts.map +1 -1
  352. package/dist/webhooks/validation.js +11 -9
  353. package/dist/webhooks/validation.js.map +1 -1
  354. package/package.json +1 -1
  355. package/dist/agents/feedback-monitor.d.ts +0 -56
  356. package/dist/agents/feedback-monitor.d.ts.map +0 -1
  357. package/dist/agents/feedback-monitor.js +0 -176
  358. package/dist/agents/feedback-monitor.js.map +0 -1
  359. package/dist/agents/feedback-runner.d.ts +0 -28
  360. package/dist/agents/feedback-runner.d.ts.map +0 -1
  361. package/dist/agents/feedback-runner.js +0 -138
  362. package/dist/agents/feedback-runner.js.map +0 -1
  363. package/dist/gateway/call-store.d.ts.map +0 -1
  364. package/dist/gateway/call-store.js.map +0 -1
  365. package/dist/gateway/container-registry.d.ts.map +0 -1
  366. package/dist/gateway/container-registry.js.map +0 -1
  367. package/dist/gateway/lock-store.d.ts.map +0 -1
  368. package/dist/gateway/lock-store.js.map +0 -1
  369. package/dist/gateway/routes/calls.d.ts.map +0 -1
  370. package/dist/gateway/routes/calls.js.map +0 -1
  371. package/dist/gateway/routes/dashboard.js.map +0 -1
  372. package/dist/gateway/routes/locks.d.ts.map +0 -1
  373. package/dist/gateway/routes/locks.js.map +0 -1
  374. package/dist/gateway/routes/shutdown.d.ts.map +0 -1
  375. package/dist/gateway/routes/shutdown.js.map +0 -1
  376. package/dist/gateway/routes/signals.d.ts.map +0 -1
  377. package/dist/gateway/routes/signals.js.map +0 -1
  378. package/dist/gateway/routes/stats.js.map +0 -1
  379. package/dist/gateway/routes/webhooks.d.ts.map +0 -1
  380. package/dist/gateway/routes/webhooks.js +0 -64
  381. package/dist/gateway/routes/webhooks.js.map +0 -1
  382. package/dist/gateway/types.d.ts.map +0 -1
  383. package/dist/gateway/views/agent-detail-page.d.ts.map +0 -1
  384. package/dist/gateway/views/agent-detail-page.js.map +0 -1
  385. package/dist/gateway/views/dashboard-page.d.ts +0 -3
  386. package/dist/gateway/views/dashboard-page.d.ts.map +0 -1
  387. package/dist/gateway/views/instance-detail-page.js.map +0 -1
  388. package/dist/gateway/views/project-config-page.d.ts.map +0 -1
  389. package/dist/gateway/views/project-config-page.js.map +0 -1
  390. package/dist/scheduler/cron-setup.d.ts.map +0 -1
  391. package/dist/scheduler/cron-setup.js.map +0 -1
  392. package/dist/scheduler/event-queue-sqlite.d.ts.map +0 -1
  393. package/dist/scheduler/event-queue-sqlite.js.map +0 -1
  394. package/dist/scheduler/event-queue.d.ts.map +0 -1
  395. package/dist/scheduler/event-queue.js.map +0 -1
  396. package/dist/scheduler/execution.d.ts.map +0 -1
  397. package/dist/scheduler/execution.js.map +0 -1
  398. package/dist/scheduler/image-builder.d.ts.map +0 -1
  399. package/dist/scheduler/image-builder.js.map +0 -1
  400. package/dist/scheduler/runner-setup.d.ts.map +0 -1
  401. package/dist/scheduler/runtime-factory.js +0 -37
  402. package/dist/scheduler/runtime-factory.js.map +0 -1
  403. package/dist/scheduler/webhook-setup.d.ts.map +0 -1
  404. package/dist/scheduler/webhook-setup.js.map +0 -1
  405. package/dist/shared/default-feedback-agent.d.ts +0 -10
  406. package/dist/shared/default-feedback-agent.d.ts.map +0 -1
  407. package/dist/shared/default-feedback-agent.js +0 -114
  408. package/dist/shared/default-feedback-agent.js.map +0 -1
  409. /package/dist/{gateway → control}/api-key.d.ts +0 -0
  410. /package/dist/{gateway → control}/api-key.js +0 -0
  411. /package/dist/{gateway → control}/auth.d.ts +0 -0
  412. /package/dist/{gateway → control}/auth.js +0 -0
  413. /package/dist/{gateway → control}/routes/control.d.ts +0 -0
  414. /package/dist/{gateway → control}/routes/control.js +0 -0
  415. /package/dist/{gateway → control}/routes/dashboard.d.ts +0 -0
  416. /package/dist/{gateway → control}/routes/logs.d.ts +0 -0
  417. /package/dist/{gateway → control}/routes/logs.js +0 -0
  418. /package/dist/{gateway → control}/routes/stats.d.ts +0 -0
  419. /package/dist/{gateway → control}/session-store.d.ts +0 -0
  420. /package/dist/{gateway → control}/session-store.js +0 -0
  421. /package/dist/{gateway → control}/types.js +0 -0
  422. /package/dist/{gateway → control}/views/layout.d.ts +0 -0
  423. /package/dist/{gateway → control}/views/layout.js +0 -0
  424. /package/dist/{gateway → control}/views/login-page.d.ts +0 -0
  425. /package/dist/{gateway → control}/views/login-page.js +0 -0
  426. /package/dist/{scheduler → events}/event-queue-sqlite.d.ts +0 -0
  427. /package/dist/{scheduler → events}/event-queue-sqlite.js +0 -0
  428. /package/dist/{scheduler → events}/event-queue.js +0 -0
  429. /package/dist/{scheduler → execution}/call-dispatcher.d.ts +0 -0
  430. /package/dist/{scheduler → execution}/call-dispatcher.js +0 -0
  431. /package/dist/{gateway → execution}/call-store.d.ts +0 -0
  432. /package/dist/{gateway → execution}/call-store.js +0 -0
  433. /package/dist/{gateway → execution}/container-registry.d.ts +0 -0
  434. /package/dist/{gateway → execution}/container-registry.js +0 -0
  435. /package/dist/{gateway → execution}/lock-store.d.ts +0 -0
  436. /package/dist/{gateway → execution}/lock-store.js +0 -0
  437. /package/dist/{gateway → execution}/routes/calls.d.ts +0 -0
  438. /package/dist/{gateway → execution}/routes/calls.js +0 -0
  439. /package/dist/{gateway → execution}/routes/locks.d.ts +0 -0
  440. /package/dist/{gateway → execution}/routes/locks.js +0 -0
  441. /package/dist/{gateway → execution}/routes/shutdown.d.ts +0 -0
  442. /package/dist/{gateway → execution}/routes/shutdown.js +0 -0
  443. /package/dist/{gateway → execution}/routes/signals.d.ts +0 -0
  444. /package/dist/{gateway → execution}/routes/signals.js +0 -0
  445. /package/dist/{scheduler → execution}/runner-pool.d.ts +0 -0
  446. /package/dist/{scheduler → execution}/runner-pool.js +0 -0
  447. /package/dist/{scheduler → execution}/runner-setup.js +0 -0
@@ -0,0 +1,297 @@
1
+ /**
2
+ * Migration utilities for transitioning from legacy StateStore/StatsStore to unified persistence.
3
+ *
4
+ * Provides atomic migration with rollback support and progress reporting.
5
+ */
6
+ import { createEvent, EventTypes } from "./event-store.js";
7
+ export class LegacyMigrator {
8
+ newStore;
9
+ constructor(newStore) {
10
+ this.newStore = newStore;
11
+ }
12
+ /**
13
+ * Migrate from legacy StateStore to new persistence layer.
14
+ */
15
+ async migrateStateStore(legacyStore, options = {}) {
16
+ const { onProgress, preserveOriginal = true } = options;
17
+ // Get all namespaces by querying common ones
18
+ const commonNamespaces = ["locks", "lock-holders", "sessions", "calls", "containers"];
19
+ let totalItems = 0;
20
+ const namespaceData = new Map();
21
+ // Count total items first
22
+ for (const namespace of commonNamespaces) {
23
+ try {
24
+ const items = await legacyStore.list(namespace);
25
+ namespaceData.set(namespace, items);
26
+ totalItems += items.length;
27
+ }
28
+ catch (error) {
29
+ // Namespace might not exist, skip
30
+ continue;
31
+ }
32
+ }
33
+ if (totalItems === 0) {
34
+ onProgress?.({ step: "No data to migrate", processed: 0, total: 0, percentage: 100 });
35
+ return;
36
+ }
37
+ let processed = 0;
38
+ await this.newStore.transaction(async (store) => {
39
+ for (const [namespace, items] of namespaceData) {
40
+ onProgress?.({
41
+ step: `Migrating namespace: ${namespace}`,
42
+ processed,
43
+ total: totalItems,
44
+ percentage: Math.floor((processed / totalItems) * 100),
45
+ });
46
+ for (const item of items) {
47
+ await store.kv.set(namespace, item.key, item.value);
48
+ // Create audit event for the migration
49
+ await store.events.stream("migration").append(createEvent("state.migrated", {
50
+ namespace,
51
+ key: item.key,
52
+ source: "legacy-state-store",
53
+ }, {
54
+ source: "migrator",
55
+ tags: ["migration", "state-store"],
56
+ }));
57
+ processed++;
58
+ if (processed % 100 === 0) {
59
+ onProgress?.({
60
+ step: `Migrating namespace: ${namespace}`,
61
+ processed,
62
+ total: totalItems,
63
+ percentage: Math.floor((processed / totalItems) * 100),
64
+ });
65
+ }
66
+ }
67
+ }
68
+ onProgress?.({
69
+ step: "Migration completed",
70
+ processed: totalItems,
71
+ total: totalItems,
72
+ percentage: 100,
73
+ });
74
+ });
75
+ if (!preserveOriginal) {
76
+ for (const namespace of namespaceData.keys()) {
77
+ await legacyStore.deleteAll(namespace);
78
+ }
79
+ }
80
+ }
81
+ /**
82
+ * Migrate from legacy StatsStore to event-sourced analytics.
83
+ */
84
+ async migrateStatsStore(legacyStore, options = {}) {
85
+ const { onProgress, batchSize = 1000, preserveOriginal = true } = options;
86
+ // Migration is complex because we need to convert SQL data to events
87
+ // We'll query the runs and call_edges tables and convert them to events
88
+ let processed = 0;
89
+ onProgress?.({
90
+ step: "Counting historical data",
91
+ processed: 0,
92
+ total: 0,
93
+ percentage: 0,
94
+ });
95
+ // Use direct SQL to get all data efficiently
96
+ const runs = await this.newStore.query.sql("SELECT * FROM runs ORDER BY started_at ASC").catch(() => []); // Table might not exist
97
+ const callEdges = await this.newStore.query.sql("SELECT * FROM call_edges ORDER BY started_at ASC").catch(() => []);
98
+ const totalItems = runs.length + callEdges.length;
99
+ if (totalItems === 0) {
100
+ onProgress?.({ step: "No stats data to migrate", processed: 0, total: 0, percentage: 100 });
101
+ return;
102
+ }
103
+ await this.newStore.transaction(async (store) => {
104
+ const statsStream = store.events.stream("stats");
105
+ // Migrate run records to events
106
+ onProgress?.({
107
+ step: "Migrating run records",
108
+ processed,
109
+ total: totalItems,
110
+ percentage: Math.floor((processed / totalItems) * 100),
111
+ });
112
+ for (const run of runs) {
113
+ // Convert to run started event
114
+ await statsStream.append(createEvent(EventTypes.RUN_STARTED, {
115
+ instanceId: run.instance_id,
116
+ agentName: run.agent_name,
117
+ triggerType: run.trigger_type,
118
+ triggerSource: run.trigger_source,
119
+ }, {
120
+ source: "migrator",
121
+ correlationId: run.instance_id,
122
+ tags: ["migration", "stats"],
123
+ }));
124
+ // Convert to run completed/failed event
125
+ const eventType = run.result === "error" ? EventTypes.RUN_FAILED : EventTypes.RUN_COMPLETED;
126
+ await statsStream.append(createEvent(eventType, {
127
+ instanceId: run.instance_id,
128
+ agentName: run.agent_name,
129
+ result: run.result,
130
+ exitCode: run.exit_code,
131
+ durationMs: run.duration_ms,
132
+ inputTokens: run.input_tokens,
133
+ outputTokens: run.output_tokens,
134
+ cacheReadTokens: run.cache_read_tokens,
135
+ cacheWriteTokens: run.cache_write_tokens,
136
+ totalTokens: run.total_tokens,
137
+ costUsd: run.cost_usd,
138
+ turnCount: run.turn_count,
139
+ errorMessage: run.error_message,
140
+ preHookMs: run.pre_hook_ms,
141
+ postHookMs: run.post_hook_ms,
142
+ }, {
143
+ source: "migrator",
144
+ correlationId: run.instance_id,
145
+ tags: ["migration", "stats"],
146
+ }));
147
+ processed++;
148
+ if (processed % 100 === 0) {
149
+ onProgress?.({
150
+ step: "Migrating run records",
151
+ processed,
152
+ total: totalItems,
153
+ percentage: Math.floor((processed / totalItems) * 100),
154
+ });
155
+ }
156
+ }
157
+ // Migrate call edge records to events
158
+ onProgress?.({
159
+ step: "Migrating call records",
160
+ processed,
161
+ total: totalItems,
162
+ percentage: Math.floor((processed / totalItems) * 100),
163
+ });
164
+ for (const call of callEdges) {
165
+ // Convert to call initiated event
166
+ await statsStream.append(createEvent(EventTypes.CALL_INITIATED, {
167
+ callerAgent: call.caller_agent,
168
+ callerInstance: call.caller_instance,
169
+ targetAgent: call.target_agent,
170
+ targetInstance: call.target_instance,
171
+ depth: call.depth,
172
+ }, {
173
+ source: "migrator",
174
+ correlationId: call.caller_instance,
175
+ tags: ["migration", "stats"],
176
+ }));
177
+ // Convert to call completed/failed event if finished
178
+ if (call.duration_ms !== null) {
179
+ const eventType = call.status === "error" ? EventTypes.CALL_FAILED : EventTypes.CALL_COMPLETED;
180
+ await statsStream.append(createEvent(eventType, {
181
+ callerAgent: call.caller_agent,
182
+ callerInstance: call.caller_instance,
183
+ targetAgent: call.target_agent,
184
+ targetInstance: call.target_instance,
185
+ depth: call.depth,
186
+ durationMs: call.duration_ms,
187
+ status: call.status,
188
+ }, {
189
+ source: "migrator",
190
+ correlationId: call.caller_instance,
191
+ tags: ["migration", "stats"],
192
+ }));
193
+ }
194
+ processed++;
195
+ if (processed % 100 === 0) {
196
+ onProgress?.({
197
+ step: "Migrating call records",
198
+ processed,
199
+ total: totalItems,
200
+ percentage: Math.floor((processed / totalItems) * 100),
201
+ });
202
+ }
203
+ }
204
+ // Create a migration completed event
205
+ await store.events.stream("migration").append(createEvent("stats.migrated", {
206
+ runsCount: runs.length,
207
+ callEdgesCount: callEdges.length,
208
+ source: "legacy-stats-store",
209
+ }, {
210
+ source: "migrator",
211
+ tags: ["migration", "stats-store"],
212
+ }));
213
+ onProgress?.({
214
+ step: "Migration completed",
215
+ processed: totalItems,
216
+ total: totalItems,
217
+ percentage: 100,
218
+ });
219
+ });
220
+ }
221
+ /**
222
+ * Perform complete migration from all legacy stores.
223
+ */
224
+ async migrateAll(legacyStateStore, legacyStatsStore, options = {}) {
225
+ const { onProgress } = options;
226
+ onProgress?.({
227
+ step: "Starting complete migration",
228
+ processed: 0,
229
+ total: 100,
230
+ percentage: 0,
231
+ });
232
+ try {
233
+ if (legacyStateStore) {
234
+ onProgress?.({
235
+ step: "Migrating state store",
236
+ processed: 25,
237
+ total: 100,
238
+ percentage: 25,
239
+ });
240
+ await this.migrateStateStore(legacyStateStore, {
241
+ ...options,
242
+ onProgress: undefined, // Don't double-report
243
+ });
244
+ }
245
+ if (legacyStatsStore) {
246
+ onProgress?.({
247
+ step: "Migrating stats store",
248
+ processed: 50,
249
+ total: 100,
250
+ percentage: 50,
251
+ });
252
+ await this.migrateStatsStore(legacyStatsStore, {
253
+ ...options,
254
+ onProgress: undefined, // Don't double-report
255
+ });
256
+ }
257
+ // Create final migration marker
258
+ await this.newStore.events.stream("migration").append(createEvent("migration.completed", {
259
+ timestamp: Date.now(),
260
+ version: "1.0.0",
261
+ }, {
262
+ source: "migrator",
263
+ tags: ["migration", "completion"],
264
+ }));
265
+ onProgress?.({
266
+ step: "All migrations completed",
267
+ processed: 100,
268
+ total: 100,
269
+ percentage: 100,
270
+ });
271
+ }
272
+ catch (error) {
273
+ // Create error event
274
+ await this.newStore.events.stream("migration").append(createEvent("migration.failed", {
275
+ error: error instanceof Error ? error.message : String(error),
276
+ timestamp: Date.now(),
277
+ }, {
278
+ source: "migrator",
279
+ tags: ["migration", "error"],
280
+ }));
281
+ throw error;
282
+ }
283
+ }
284
+ }
285
+ /**
286
+ * Helper function to run migration with console progress reporting.
287
+ */
288
+ export async function migrateFromLegacy(newStore, legacyStateStore, legacyStatsStore, options = {}) {
289
+ const migrator = new LegacyMigrator(newStore);
290
+ await migrator.migrateAll(legacyStateStore, legacyStatsStore, {
291
+ ...options,
292
+ onProgress: (progress) => {
293
+ console.log(`Migration: ${progress.step} (${progress.percentage}%)`);
294
+ },
295
+ });
296
+ }
297
+ //# sourceMappingURL=migration.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"migration.js","sourceRoot":"","sources":["../../../src/shared/persistence/migration.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,54 @@
1
+ /**
2
+ * Enhanced validation functions for Action Llama configurations.
3
+ * Provides schema validation, unknown field detection, cron validation,
4
+ * model/provider compatibility checks, and unsafe config warnings.
5
+ */
6
+ import type { AgentConfig, GlobalConfig } from "./config.js";
7
+ export interface ValidationError {
8
+ type: "error" | "warning";
9
+ message: string;
10
+ field?: string;
11
+ context?: string;
12
+ }
13
+ export interface ValidationResult {
14
+ valid: boolean;
15
+ errors: ValidationError[];
16
+ warnings: ValidationError[];
17
+ }
18
+ export interface ConfigSchema {
19
+ required: Set<string>;
20
+ optional: Set<string>;
21
+ nested: Record<string, ConfigSchema>;
22
+ }
23
+ /**
24
+ * Validate a cron expression using the croner library.
25
+ */
26
+ export declare function validateCronExpression(schedule: string): {
27
+ valid: boolean;
28
+ error?: string;
29
+ };
30
+ /**
31
+ * Validate config against a schema and return validation errors.
32
+ */
33
+ export declare function validateConfigSchema(config: unknown, schema: ConfigSchema, path?: string): ValidationResult;
34
+ /**
35
+ * Detect unknown fields in config that are not in the schema.
36
+ */
37
+ export declare function detectUnknownFields(config: unknown, schema: ConfigSchema, path?: string): string[];
38
+ /**
39
+ * Validate global config with comprehensive checks.
40
+ */
41
+ export declare function validateGlobalConfig(config: GlobalConfig, raw?: unknown): ValidationResult;
42
+ /**
43
+ * Validate agent config with comprehensive checks.
44
+ */
45
+ export declare function validateAgentConfig(config: AgentConfig, raw?: unknown): ValidationResult;
46
+ /**
47
+ * Check for unknown fields in global config.
48
+ */
49
+ export declare function detectGlobalConfigUnknownFields(raw: unknown): string[];
50
+ /**
51
+ * Check for unknown fields in agent config.
52
+ */
53
+ export declare function detectAgentConfigUnknownFields(raw: unknown): string[];
54
+ //# sourceMappingURL=validation.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"validation.d.ts","sourceRoot":"","sources":["../../src/shared/validation.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAGH,OAAO,KAAK,EAAE,WAAW,EAAE,YAAY,EAAe,MAAM,aAAa,CAAC;AAE1E,MAAM,WAAW,eAAe;IAC9B,IAAI,EAAE,OAAO,GAAG,SAAS,CAAC;IAC1B,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,gBAAgB;IAC/B,KAAK,EAAE,OAAO,CAAC;IACf,MAAM,EAAE,eAAe,EAAE,CAAC;IAC1B,QAAQ,EAAE,eAAe,EAAE,CAAC;CAC7B;AAED,MAAM,WAAW,YAAY;IAC3B,QAAQ,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;IACtB,QAAQ,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;IACtB,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,YAAY,CAAC,CAAC;CACtC;AAyED;;GAEG;AACH,wBAAgB,sBAAsB,CAAC,QAAQ,EAAE,MAAM,GAAG;IAAE,KAAK,EAAE,OAAO,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAA;CAAE,CAY3F;AAGD;;GAEG;AACH,wBAAgB,oBAAoB,CAClC,MAAM,EAAE,OAAO,EACf,MAAM,EAAE,YAAY,EACpB,IAAI,SAAK,GACR,gBAAgB,CA2ClB;AAED;;GAEG;AACH,wBAAgB,mBAAmB,CACjC,MAAM,EAAE,OAAO,EACf,MAAM,EAAE,YAAY,EACpB,IAAI,SAAK,GACR,MAAM,EAAE,CAwBV;AAED;;GAEG;AACH,wBAAgB,oBAAoB,CAAC,MAAM,EAAE,YAAY,EAAE,GAAG,CAAC,EAAE,OAAO,GAAG,gBAAgB,CAsB1F;AAED;;GAEG;AACH,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,WAAW,EAAE,GAAG,CAAC,EAAE,OAAO,GAAG,gBAAgB,CAuCxF;AAED;;GAEG;AACH,wBAAgB,+BAA+B,CAAC,GAAG,EAAE,OAAO,GAAG,MAAM,EAAE,CAEtE;AAED;;GAEG;AACH,wBAAgB,8BAA8B,CAAC,GAAG,EAAE,OAAO,GAAG,MAAM,EAAE,CAErE"}
@@ -0,0 +1,231 @@
1
+ /**
2
+ * Enhanced validation functions for Action Llama configurations.
3
+ * Provides schema validation, unknown field detection, cron validation,
4
+ * model/provider compatibility checks, and unsafe config warnings.
5
+ */
6
+ import { Cron } from "croner";
7
+ // --- Schema definitions ---
8
+ const GLOBAL_CONFIG_SCHEMA = {
9
+ required: new Set(),
10
+ optional: new Set([
11
+ "models", "local", "gateway", "webhooks", "telemetry",
12
+ "projectName", "maxReruns", "maxCallDepth", "maxTriggerDepth",
13
+ "webhookQueueSize", "workQueueSize", "resourceLockTimeout", "scale"
14
+ ]),
15
+ nested: {
16
+ models: {
17
+ required: new Set(),
18
+ optional: new Set(["provider", "model", "thinkingLevel", "authType"]),
19
+ nested: {}
20
+ },
21
+ local: {
22
+ required: new Set(),
23
+ optional: new Set(["enabled", "image", "memory", "cpus", "timeout"]),
24
+ nested: {}
25
+ },
26
+ gateway: {
27
+ required: new Set(),
28
+ optional: new Set(["port", "url"]),
29
+ nested: {}
30
+ },
31
+ telemetry: {
32
+ required: new Set(),
33
+ optional: new Set(["enabled", "provider", "endpoint", "serviceName", "headers", "samplingRate"]),
34
+ nested: {}
35
+ },
36
+ }
37
+ };
38
+ const AGENT_CONFIG_SCHEMA = {
39
+ required: new Set(["name", "credentials", "models"]),
40
+ optional: new Set([
41
+ "description", "schedule", "webhooks", "hooks", "params", "scale",
42
+ "timeout", "license", "compatibility"
43
+ ]),
44
+ nested: {
45
+ hooks: {
46
+ required: new Set(),
47
+ optional: new Set(["pre", "post"]),
48
+ nested: {}
49
+ },
50
+ }
51
+ };
52
+ /**
53
+ * Schema for raw SKILL.md YAML frontmatter (before resolution).
54
+ * `name` is derived from the directory name, and AL-specific fields
55
+ * like `credentials` and `models` live under `metadata`.
56
+ */
57
+ const AGENT_FRONTMATTER_SCHEMA = {
58
+ required: new Set(),
59
+ optional: new Set(["description", "license", "compatibility", "metadata"]),
60
+ nested: {
61
+ metadata: {
62
+ required: new Set(["credentials", "models"]),
63
+ optional: new Set(["schedule", "webhooks", "hooks", "params", "scale", "timeout"]),
64
+ nested: {
65
+ hooks: {
66
+ required: new Set(),
67
+ optional: new Set(["pre", "post"]),
68
+ nested: {}
69
+ },
70
+ }
71
+ },
72
+ }
73
+ };
74
+ /**
75
+ * Validate a cron expression using the croner library.
76
+ */
77
+ export function validateCronExpression(schedule) {
78
+ try {
79
+ // Test by creating a Cron instance - if invalid, it will throw
80
+ const job = new Cron(schedule, { paused: true });
81
+ job.stop(); // Clean up immediately
82
+ return { valid: true };
83
+ }
84
+ catch (err) {
85
+ return {
86
+ valid: false,
87
+ error: err instanceof Error ? err.message : String(err)
88
+ };
89
+ }
90
+ }
91
+ /**
92
+ * Validate config against a schema and return validation errors.
93
+ */
94
+ export function validateConfigSchema(config, schema, path = "") {
95
+ const errors = [];
96
+ const warnings = [];
97
+ if (typeof config !== "object" || config === null) {
98
+ errors.push({
99
+ type: "error",
100
+ message: "Configuration must be an object",
101
+ field: path
102
+ });
103
+ return { valid: false, errors, warnings };
104
+ }
105
+ const configObj = config;
106
+ // Check required fields
107
+ for (const field of schema.required) {
108
+ if (!(field in configObj)) {
109
+ errors.push({
110
+ type: "error",
111
+ message: `Required field "${field}" is missing`,
112
+ field: path ? `${path}.${field}` : field
113
+ });
114
+ }
115
+ }
116
+ // Validate nested objects
117
+ for (const [field, nestedSchema] of Object.entries(schema.nested)) {
118
+ if (field in configObj && configObj[field] != null) {
119
+ const nestedPath = path ? `${path}.${field}` : field;
120
+ if (typeof configObj[field] === "object") {
121
+ const nestedResult = validateConfigSchema(configObj[field], nestedSchema, nestedPath);
122
+ errors.push(...nestedResult.errors);
123
+ warnings.push(...nestedResult.warnings);
124
+ }
125
+ }
126
+ }
127
+ return {
128
+ valid: errors.length === 0,
129
+ errors,
130
+ warnings
131
+ };
132
+ }
133
+ /**
134
+ * Detect unknown fields in config that are not in the schema.
135
+ */
136
+ export function detectUnknownFields(config, schema, path = "") {
137
+ const unknownFields = [];
138
+ if (typeof config !== "object" || config === null) {
139
+ return unknownFields;
140
+ }
141
+ const configObj = config;
142
+ const allowedFields = new Set([...schema.required, ...schema.optional, ...Object.keys(schema.nested)]);
143
+ for (const field of Object.keys(configObj)) {
144
+ const fieldPath = path ? `${path}.${field}` : field;
145
+ if (!allowedFields.has(field)) {
146
+ unknownFields.push(fieldPath);
147
+ }
148
+ else if (field in schema.nested && configObj[field] != null) {
149
+ // Recursively check nested objects
150
+ if (typeof configObj[field] === "object") {
151
+ unknownFields.push(...detectUnknownFields(configObj[field], schema.nested[field], fieldPath));
152
+ }
153
+ }
154
+ }
155
+ return unknownFields;
156
+ }
157
+ /**
158
+ * Validate global config with comprehensive checks.
159
+ */
160
+ export function validateGlobalConfig(config, raw) {
161
+ const errors = [];
162
+ const warnings = [];
163
+ // Schema validation
164
+ if (raw) {
165
+ const schemaResult = validateConfigSchema(raw, GLOBAL_CONFIG_SCHEMA);
166
+ errors.push(...schemaResult.errors);
167
+ warnings.push(...schemaResult.warnings);
168
+ }
169
+ // Unsafe config warnings
170
+ if (config.gateway?.url?.includes("0.0.0.0")) {
171
+ warnings.push({
172
+ type: "warning",
173
+ message: "Gateway is bound to 0.0.0.0 (public interface). Consider using localhost for security.",
174
+ field: "gateway.url",
175
+ context: "unsafe configuration"
176
+ });
177
+ }
178
+ return { valid: errors.length === 0, errors, warnings };
179
+ }
180
+ /**
181
+ * Validate agent config with comprehensive checks.
182
+ */
183
+ export function validateAgentConfig(config, raw) {
184
+ const errors = [];
185
+ const warnings = [];
186
+ // Schema validation — raw is SKILL.md frontmatter (metadata-nested), not the resolved config
187
+ if (raw) {
188
+ const schemaResult = validateConfigSchema(raw, AGENT_FRONTMATTER_SCHEMA);
189
+ errors.push(...schemaResult.errors);
190
+ warnings.push(...schemaResult.warnings);
191
+ }
192
+ // Cron validation
193
+ if (config.schedule) {
194
+ const cronResult = validateCronExpression(config.schedule);
195
+ if (!cronResult.valid) {
196
+ errors.push({
197
+ type: "error",
198
+ message: `Invalid cron expression "${config.schedule}": ${cronResult.error}`,
199
+ field: "schedule",
200
+ context: "cron validation"
201
+ });
202
+ }
203
+ }
204
+ // pi_auth warning (already blocked at startup, but surface it in doctor too)
205
+ if (config.models) {
206
+ for (const [index, modelConfig] of config.models.entries()) {
207
+ if (modelConfig.authType === "pi_auth") {
208
+ warnings.push({
209
+ type: "warning",
210
+ message: `Model ${index} uses pi_auth which is not supported in container mode`,
211
+ field: `models[${index}].authType`,
212
+ context: "unsafe configuration"
213
+ });
214
+ }
215
+ }
216
+ }
217
+ return { valid: errors.length === 0, errors, warnings };
218
+ }
219
+ /**
220
+ * Check for unknown fields in global config.
221
+ */
222
+ export function detectGlobalConfigUnknownFields(raw) {
223
+ return detectUnknownFields(raw, GLOBAL_CONFIG_SCHEMA);
224
+ }
225
+ /**
226
+ * Check for unknown fields in agent config.
227
+ */
228
+ export function detectAgentConfigUnknownFields(raw) {
229
+ return detectUnknownFields(raw, AGENT_FRONTMATTER_SCHEMA);
230
+ }
231
+ //# sourceMappingURL=validation.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"validation.js","sourceRoot":"","sources":["../../src/shared/validation.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,17 @@
1
+ export interface QueuedWorkItem<T> {
2
+ context: T;
3
+ receivedAt: Date;
4
+ }
5
+ export interface EnqueueResult<T> {
6
+ accepted: boolean;
7
+ dropped?: QueuedWorkItem<T>;
8
+ }
9
+ export interface WorkQueue<T> {
10
+ enqueue(agentName: string, context: T, receivedAt?: Date): EnqueueResult<T>;
11
+ dequeue(agentName: string): QueuedWorkItem<T> | undefined;
12
+ size(agentName: string): number;
13
+ clear(agentName: string): void;
14
+ clearAll(): void;
15
+ close(): void;
16
+ }
17
+ //# sourceMappingURL=work-queue.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"work-queue.d.ts","sourceRoot":"","sources":["../../src/shared/work-queue.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,cAAc,CAAC,CAAC;IAC/B,OAAO,EAAE,CAAC,CAAC;IACX,UAAU,EAAE,IAAI,CAAC;CAClB;AAED,MAAM,WAAW,aAAa,CAAC,CAAC;IAC9B,QAAQ,EAAE,OAAO,CAAC;IAClB,OAAO,CAAC,EAAE,cAAc,CAAC,CAAC,CAAC,CAAC;CAC7B;AAED,MAAM,WAAW,SAAS,CAAC,CAAC;IAC1B,OAAO,CAAC,SAAS,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC,EAAE,UAAU,CAAC,EAAE,IAAI,GAAG,aAAa,CAAC,CAAC,CAAC,CAAC;IAC5E,OAAO,CAAC,SAAS,EAAE,MAAM,GAAG,cAAc,CAAC,CAAC,CAAC,GAAG,SAAS,CAAC;IAC1D,IAAI,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,CAAC;IAChC,KAAK,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IAC/B,QAAQ,IAAI,IAAI,CAAC;IACjB,KAAK,IAAI,IAAI,CAAC;CACf"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=work-queue.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"work-queue.js","sourceRoot":"","sources":["../../src/shared/work-queue.ts"],"names":[],"mappings":""}