lua-cli 3.13.0 → 3.14.1

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 (505) hide show
  1. package/README.md +14 -13
  2. package/dist/api/agent.api.service.d.ts +20 -20
  3. package/dist/api/agent.api.service.d.ts.map +1 -1
  4. package/dist/api/agent.api.service.js +1 -1
  5. package/dist/api/agent.api.service.js.map +1 -1
  6. package/dist/api/agents.api.service.d.ts +3 -3
  7. package/dist/api/agents.api.service.d.ts.map +1 -1
  8. package/dist/api/agents.api.service.js +11 -9
  9. package/dist/api/agents.api.service.js.map +1 -1
  10. package/dist/api/ai.api.service.d.ts +4 -4
  11. package/dist/api/ai.api.service.d.ts.map +1 -1
  12. package/dist/api/ai.api.service.js +10 -8
  13. package/dist/api/ai.api.service.js.map +1 -1
  14. package/dist/api/auth.api.service.d.ts +3 -3
  15. package/dist/api/auth.api.service.d.ts.map +1 -1
  16. package/dist/api/auth.api.service.js +1 -1
  17. package/dist/api/auth.api.service.js.map +1 -1
  18. package/dist/api/backup.api.service.d.ts.map +1 -1
  19. package/dist/api/backup.api.service.js +21 -7
  20. package/dist/api/backup.api.service.js.map +1 -1
  21. package/dist/api/basket.api.service.d.ts +5 -5
  22. package/dist/api/basket.api.service.d.ts.map +1 -1
  23. package/dist/api/basket.api.service.js +4 -4
  24. package/dist/api/basket.api.service.js.map +1 -1
  25. package/dist/api/cdn.api.service.d.ts +1 -1
  26. package/dist/api/cdn.api.service.js +3 -3
  27. package/dist/api/cdn.api.service.js.map +1 -1
  28. package/dist/api/chat.api.service.d.ts +4 -4
  29. package/dist/api/chat.api.service.js +3 -3
  30. package/dist/api/chat.api.service.js.map +1 -1
  31. package/dist/api/credentials.js +3 -3
  32. package/dist/api/custom.data.api.service.d.ts +4 -4
  33. package/dist/api/custom.data.api.service.d.ts.map +1 -1
  34. package/dist/api/custom.data.api.service.js +2 -2
  35. package/dist/api/custom.data.api.service.js.map +1 -1
  36. package/dist/api/developer.api.service.d.ts +3 -3
  37. package/dist/api/developer.api.service.d.ts.map +1 -1
  38. package/dist/api/developer.api.service.js +7 -3
  39. package/dist/api/developer.api.service.js.map +1 -1
  40. package/dist/api/device-trigger.api.service.d.ts +3 -3
  41. package/dist/api/device-trigger.api.service.d.ts.map +1 -1
  42. package/dist/api/device-trigger.api.service.js +1 -1
  43. package/dist/api/device-trigger.api.service.js.map +1 -1
  44. package/dist/api/device.api.service.d.ts +3 -3
  45. package/dist/api/device.api.service.d.ts.map +1 -1
  46. package/dist/api/device.api.service.js +1 -1
  47. package/dist/api/device.api.service.js.map +1 -1
  48. package/dist/api/http.client.d.ts +1 -1
  49. package/dist/api/http.client.d.ts.map +1 -1
  50. package/dist/api/http.client.js +6 -6
  51. package/dist/api/http.client.js.map +1 -1
  52. package/dist/api/job.api.service.d.ts +13 -14
  53. package/dist/api/job.api.service.d.ts.map +1 -1
  54. package/dist/api/job.api.service.js +12 -20
  55. package/dist/api/job.api.service.js.map +1 -1
  56. package/dist/api/lazy-instances.d.ts +12 -12
  57. package/dist/api/lazy-instances.js +14 -14
  58. package/dist/api/logs.api.service.d.ts +5 -5
  59. package/dist/api/logs.api.service.d.ts.map +1 -1
  60. package/dist/api/logs.api.service.js +9 -9
  61. package/dist/api/logs.api.service.js.map +1 -1
  62. package/dist/api/marketplace.api.service.d.ts +1 -1
  63. package/dist/api/marketplace.api.service.d.ts.map +1 -1
  64. package/dist/api/marketplace.api.service.js +18 -18
  65. package/dist/api/marketplace.api.service.js.map +1 -1
  66. package/dist/api/order.api.service.d.ts +4 -4
  67. package/dist/api/order.api.service.d.ts.map +1 -1
  68. package/dist/api/order.api.service.js +2 -2
  69. package/dist/api/order.api.service.js.map +1 -1
  70. package/dist/api/persona.api.service.d.ts +3 -3
  71. package/dist/api/persona.api.service.d.ts.map +1 -1
  72. package/dist/api/persona.api.service.js +2 -2
  73. package/dist/api/persona.api.service.js.map +1 -1
  74. package/dist/api/postprocessor.api.service.d.ts +8 -9
  75. package/dist/api/postprocessor.api.service.d.ts.map +1 -1
  76. package/dist/api/postprocessor.api.service.js +1 -2
  77. package/dist/api/postprocessor.api.service.js.map +1 -1
  78. package/dist/api/preprocessor.api.service.d.ts +8 -9
  79. package/dist/api/preprocessor.api.service.d.ts.map +1 -1
  80. package/dist/api/preprocessor.api.service.js +1 -2
  81. package/dist/api/preprocessor.api.service.js.map +1 -1
  82. package/dist/api/products.api.service.d.ts +9 -9
  83. package/dist/api/products.api.service.d.ts.map +1 -1
  84. package/dist/api/products.api.service.js +10 -10
  85. package/dist/api/products.api.service.js.map +1 -1
  86. package/dist/api/resource.api.service.d.ts +2 -2
  87. package/dist/api/resource.api.service.js +1 -1
  88. package/dist/api/skills.api.service.d.ts +4 -4
  89. package/dist/api/skills.api.service.d.ts.map +1 -1
  90. package/dist/api/skills.api.service.js +1 -1
  91. package/dist/api/skills.api.service.js.map +1 -1
  92. package/dist/api/tool.api.service.d.ts +2 -2
  93. package/dist/api/tool.api.service.js +1 -1
  94. package/dist/api/unifiedto.api.service.d.ts +3 -3
  95. package/dist/api/unifiedto.api.service.d.ts.map +1 -1
  96. package/dist/api/unifiedto.api.service.js +28 -10
  97. package/dist/api/unifiedto.api.service.js.map +1 -1
  98. package/dist/api/user.data.api.service.d.ts +6 -6
  99. package/dist/api/user.data.api.service.d.ts.map +1 -1
  100. package/dist/api/user.data.api.service.js +5 -5
  101. package/dist/api/user.data.api.service.js.map +1 -1
  102. package/dist/api/webhook.api.service.d.ts +3 -3
  103. package/dist/api/webhook.api.service.d.ts.map +1 -1
  104. package/dist/api/webhook.api.service.js +1 -1
  105. package/dist/api/webhook.api.service.js.map +1 -1
  106. package/dist/api/whatsapp-templates.api.service.d.ts +3 -3
  107. package/dist/api/whatsapp-templates.api.service.js +1 -1
  108. package/dist/api-exports.d.ts +25 -25
  109. package/dist/api-exports.d.ts.map +1 -1
  110. package/dist/api-exports.js +26 -26
  111. package/dist/api-exports.js.map +1 -1
  112. package/dist/cli/command-definitions.d.ts +1 -1
  113. package/dist/cli/command-definitions.d.ts.map +1 -1
  114. package/dist/cli/command-definitions.js +190 -199
  115. package/dist/cli/command-definitions.js.map +1 -1
  116. package/dist/commands/agents.js +2 -2
  117. package/dist/commands/apiKey.js +12 -12
  118. package/dist/commands/channels.js +163 -163
  119. package/dist/commands/channels.js.map +1 -1
  120. package/dist/commands/chat-log-probe.d.ts.map +1 -1
  121. package/dist/commands/chat-log-probe.js +2 -6
  122. package/dist/commands/chat-log-probe.js.map +1 -1
  123. package/dist/commands/chat.d.ts.map +1 -1
  124. package/dist/commands/chat.js +33 -33
  125. package/dist/commands/chat.js.map +1 -1
  126. package/dist/commands/chatClear.d.ts.map +1 -1
  127. package/dist/commands/chatClear.js +10 -6
  128. package/dist/commands/chatClear.js.map +1 -1
  129. package/dist/commands/compile.d.ts.map +1 -1
  130. package/dist/commands/compile.js +18 -11
  131. package/dist/commands/compile.js.map +1 -1
  132. package/dist/commands/completion.js +1 -1
  133. package/dist/commands/configure.js +5 -5
  134. package/dist/commands/deploy.d.ts.map +1 -1
  135. package/dist/commands/deploy.js +27 -15
  136. package/dist/commands/deploy.js.map +1 -1
  137. package/dist/commands/destroy.d.ts.map +1 -1
  138. package/dist/commands/destroy.js +27 -17
  139. package/dist/commands/destroy.js.map +1 -1
  140. package/dist/commands/devices.js +1 -3
  141. package/dist/commands/devices.js.map +1 -1
  142. package/dist/commands/env.js +58 -60
  143. package/dist/commands/env.js.map +1 -1
  144. package/dist/commands/features.js +69 -70
  145. package/dist/commands/features.js.map +1 -1
  146. package/dist/commands/governance.d.ts.map +1 -1
  147. package/dist/commands/governance.js +13 -7
  148. package/dist/commands/governance.js.map +1 -1
  149. package/dist/commands/index.d.ts +37 -37
  150. package/dist/commands/index.js +37 -37
  151. package/dist/commands/init.d.ts.map +1 -1
  152. package/dist/commands/init.js +69 -69
  153. package/dist/commands/init.js.map +1 -1
  154. package/dist/commands/integrations.d.ts.map +1 -1
  155. package/dist/commands/integrations.js +369 -339
  156. package/dist/commands/integrations.js.map +1 -1
  157. package/dist/commands/jobs.d.ts.map +1 -1
  158. package/dist/commands/jobs.js +56 -62
  159. package/dist/commands/jobs.js.map +1 -1
  160. package/dist/commands/log-tip.d.ts.map +1 -1
  161. package/dist/commands/log-tip.js +2 -10
  162. package/dist/commands/log-tip.js.map +1 -1
  163. package/dist/commands/logs.d.ts.map +1 -1
  164. package/dist/commands/logs.js +80 -73
  165. package/dist/commands/logs.js.map +1 -1
  166. package/dist/commands/marketplace.d.ts.map +1 -1
  167. package/dist/commands/marketplace.js +368 -403
  168. package/dist/commands/marketplace.js.map +1 -1
  169. package/dist/commands/mcp.d.ts.map +1 -1
  170. package/dist/commands/mcp.js +38 -38
  171. package/dist/commands/mcp.js.map +1 -1
  172. package/dist/commands/models.d.ts.map +1 -1
  173. package/dist/commands/models.js +2 -2
  174. package/dist/commands/models.js.map +1 -1
  175. package/dist/commands/persona.js +96 -96
  176. package/dist/commands/persona.js.map +1 -1
  177. package/dist/commands/postprocessors.js +44 -44
  178. package/dist/commands/postprocessors.js.map +1 -1
  179. package/dist/commands/preprocessors.js +44 -44
  180. package/dist/commands/preprocessors.js.map +1 -1
  181. package/dist/commands/production.js +99 -101
  182. package/dist/commands/production.js.map +1 -1
  183. package/dist/commands/push.d.ts.map +1 -1
  184. package/dist/commands/push.js +130 -81
  185. package/dist/commands/push.js.map +1 -1
  186. package/dist/commands/pushBackup.d.ts.map +1 -1
  187. package/dist/commands/pushBackup.js +4 -6
  188. package/dist/commands/pushBackup.js.map +1 -1
  189. package/dist/commands/resources.js +45 -48
  190. package/dist/commands/resources.js.map +1 -1
  191. package/dist/commands/skills.d.ts.map +1 -1
  192. package/dist/commands/skills.js +68 -55
  193. package/dist/commands/skills.js.map +1 -1
  194. package/dist/commands/status.d.ts.map +1 -1
  195. package/dist/commands/status.js +11 -14
  196. package/dist/commands/status.js.map +1 -1
  197. package/dist/commands/sync.d.ts.map +1 -1
  198. package/dist/commands/sync.js +34 -29
  199. package/dist/commands/sync.js.map +1 -1
  200. package/dist/commands/test-output.helpers.js +1 -1
  201. package/dist/commands/test-output.helpers.js.map +1 -1
  202. package/dist/commands/test.d.ts.map +1 -1
  203. package/dist/commands/test.js +81 -71
  204. package/dist/commands/test.js.map +1 -1
  205. package/dist/commands/update.d.ts.map +1 -1
  206. package/dist/commands/update.js +15 -3
  207. package/dist/commands/update.js.map +1 -1
  208. package/dist/commands/webhooks.d.ts.map +1 -1
  209. package/dist/commands/webhooks.js +60 -66
  210. package/dist/commands/webhooks.js.map +1 -1
  211. package/dist/compiler/agent-traverser.d.ts.map +1 -1
  212. package/dist/compiler/agent-traverser.js +2 -4
  213. package/dist/compiler/agent-traverser.js.map +1 -1
  214. package/dist/compiler/bundler.d.ts.map +1 -1
  215. package/dist/compiler/bundler.js +5 -5
  216. package/dist/compiler/bundler.js.map +1 -1
  217. package/dist/compiler/compiler.d.ts.map +1 -1
  218. package/dist/compiler/compiler.js +12 -11
  219. package/dist/compiler/compiler.js.map +1 -1
  220. package/dist/compiler/index.d.ts +2 -2
  221. package/dist/compiler/index.d.ts.map +1 -1
  222. package/dist/compiler/index.js +2 -2
  223. package/dist/compiler/index.js.map +1 -1
  224. package/dist/compiler/plugins/agent.plugin.d.ts.map +1 -1
  225. package/dist/compiler/plugins/agent.plugin.js +2 -4
  226. package/dist/compiler/plugins/agent.plugin.js.map +1 -1
  227. package/dist/compiler/plugins/base.d.ts.map +1 -1
  228. package/dist/compiler/plugins/base.js +3 -3
  229. package/dist/compiler/plugins/base.js.map +1 -1
  230. package/dist/compiler/plugins/device-trigger.plugin.d.ts.map +1 -1
  231. package/dist/compiler/plugins/device-trigger.plugin.js +8 -4
  232. package/dist/compiler/plugins/device-trigger.plugin.js.map +1 -1
  233. package/dist/compiler/plugins/device.plugin.d.ts.map +1 -1
  234. package/dist/compiler/plugins/device.plugin.js +4 -4
  235. package/dist/compiler/plugins/device.plugin.js.map +1 -1
  236. package/dist/compiler/plugins/job.plugin.d.ts.map +1 -1
  237. package/dist/compiler/plugins/job.plugin.js +15 -11
  238. package/dist/compiler/plugins/job.plugin.js.map +1 -1
  239. package/dist/compiler/plugins/mcp-server.plugin.d.ts.map +1 -1
  240. package/dist/compiler/plugins/mcp-server.plugin.js +10 -4
  241. package/dist/compiler/plugins/mcp-server.plugin.js.map +1 -1
  242. package/dist/compiler/plugins/registry.js +2 -2
  243. package/dist/compiler/plugins/registry.js.map +1 -1
  244. package/dist/compiler/plugins/skill.plugin.d.ts.map +1 -1
  245. package/dist/compiler/plugins/skill.plugin.js +8 -13
  246. package/dist/compiler/plugins/skill.plugin.js.map +1 -1
  247. package/dist/compiler/plugins/tool.plugin.d.ts.map +1 -1
  248. package/dist/compiler/plugins/tool.plugin.js +13 -9
  249. package/dist/compiler/plugins/tool.plugin.js.map +1 -1
  250. package/dist/compiler/plugins/webhook.plugin.d.ts.map +1 -1
  251. package/dist/compiler/plugins/webhook.plugin.js +7 -5
  252. package/dist/compiler/plugins/webhook.plugin.js.map +1 -1
  253. package/dist/compiler/source-writer.d.ts.map +1 -1
  254. package/dist/compiler/source-writer.js +2 -4
  255. package/dist/compiler/source-writer.js.map +1 -1
  256. package/dist/compiler/utils/ast-helpers.d.ts.map +1 -1
  257. package/dist/compiler/utils/ast-helpers.js +12 -7
  258. package/dist/compiler/utils/ast-helpers.js.map +1 -1
  259. package/dist/compiler/utils/common.d.ts.map +1 -1
  260. package/dist/compiler/utils/common.js +1 -11
  261. package/dist/compiler/utils/common.js.map +1 -1
  262. package/dist/compiler/utils/file-discovery.d.ts.map +1 -1
  263. package/dist/compiler/utils/file-discovery.js +2 -10
  264. package/dist/compiler/utils/file-discovery.js.map +1 -1
  265. package/dist/compiler/utils/path-resolver.d.ts.map +1 -1
  266. package/dist/compiler/utils/path-resolver.js.map +1 -1
  267. package/dist/compiler/utils/reference-resolver.d.ts.map +1 -1
  268. package/dist/compiler/utils/reference-resolver.js +4 -8
  269. package/dist/compiler/utils/reference-resolver.js.map +1 -1
  270. package/dist/compiler/utils/schema-converter.d.ts.map +1 -1
  271. package/dist/compiler/utils/schema-converter.js +1 -4
  272. package/dist/compiler/utils/schema-converter.js.map +1 -1
  273. package/dist/config/compile.constants.d.ts.map +1 -1
  274. package/dist/config/compile.constants.js +3 -1
  275. package/dist/config/compile.constants.js.map +1 -1
  276. package/dist/config/constants.d.ts.map +1 -1
  277. package/dist/config/constants.js +1 -5
  278. package/dist/config/constants.js.map +1 -1
  279. package/dist/errors/auth.error.d.ts.map +1 -1
  280. package/dist/errors/auth.error.js +3 -5
  281. package/dist/errors/auth.error.js.map +1 -1
  282. package/dist/errors/index.d.ts +1 -1
  283. package/dist/errors/index.js +1 -1
  284. package/dist/index.js +8 -8
  285. package/dist/index.js.map +1 -1
  286. package/dist/instances/basket.instance.d.ts +3 -3
  287. package/dist/instances/basket.instance.d.ts.map +1 -1
  288. package/dist/instances/basket.instance.js +26 -8
  289. package/dist/instances/basket.instance.js.map +1 -1
  290. package/dist/instances/data.entry.instance.d.ts +2 -2
  291. package/dist/instances/data.entry.instance.d.ts.map +1 -1
  292. package/dist/instances/data.entry.instance.js +5 -5
  293. package/dist/instances/data.entry.instance.js.map +1 -1
  294. package/dist/instances/order.instance.d.ts +2 -2
  295. package/dist/instances/order.instance.d.ts.map +1 -1
  296. package/dist/instances/order.instance.js +20 -9
  297. package/dist/instances/order.instance.js.map +1 -1
  298. package/dist/instances/product.instance.d.ts +1 -1
  299. package/dist/instances/product.instance.d.ts.map +1 -1
  300. package/dist/instances/product.instance.js +3 -3
  301. package/dist/instances/product.instance.js.map +1 -1
  302. package/dist/instances/product.pagination.instance.d.ts +2 -2
  303. package/dist/instances/product.pagination.instance.d.ts.map +1 -1
  304. package/dist/instances/product.pagination.instance.js +6 -7
  305. package/dist/instances/product.pagination.instance.js.map +1 -1
  306. package/dist/instances/product.search.instance.d.ts +3 -3
  307. package/dist/instances/product.search.instance.d.ts.map +1 -1
  308. package/dist/instances/product.search.instance.js +3 -4
  309. package/dist/instances/product.search.instance.js.map +1 -1
  310. package/dist/instances/user.instance.d.ts +3 -3
  311. package/dist/instances/user.instance.d.ts.map +1 -1
  312. package/dist/instances/user.instance.js +19 -36
  313. package/dist/instances/user.instance.js.map +1 -1
  314. package/dist/interfaces/agent.d.ts +8 -8
  315. package/dist/interfaces/agent.d.ts.map +1 -1
  316. package/dist/interfaces/device-triggers.d.ts +0 -2
  317. package/dist/interfaces/device-triggers.d.ts.map +1 -1
  318. package/dist/interfaces/devices.d.ts +0 -1
  319. package/dist/interfaces/devices.d.ts.map +1 -1
  320. package/dist/interfaces/index.d.ts +8 -8
  321. package/dist/interfaces/index.d.ts.map +1 -1
  322. package/dist/interfaces/jobs.d.ts +2 -3
  323. package/dist/interfaces/jobs.d.ts.map +1 -1
  324. package/dist/interfaces/message.d.ts +3 -3
  325. package/dist/interfaces/message.d.ts.map +1 -1
  326. package/dist/interfaces/orders.d.ts +1 -1
  327. package/dist/interfaces/skills.d.ts +18 -0
  328. package/dist/interfaces/skills.d.ts.map +1 -1
  329. package/dist/interfaces/webhooks.d.ts +2 -2
  330. package/dist/interfaces/webhooks.d.ts.map +1 -1
  331. package/dist/primitives/agent.handler.d.ts.map +1 -1
  332. package/dist/primitives/agent.handler.js +1 -1
  333. package/dist/primitives/agent.handler.js.map +1 -1
  334. package/dist/primitives/base.handler.d.ts +2 -2
  335. package/dist/primitives/base.handler.d.ts.map +1 -1
  336. package/dist/primitives/base.handler.js +38 -36
  337. package/dist/primitives/base.handler.js.map +1 -1
  338. package/dist/primitives/device-trigger.handler.d.ts +1 -1
  339. package/dist/primitives/device-trigger.handler.d.ts.map +1 -1
  340. package/dist/primitives/device-trigger.handler.js +2 -3
  341. package/dist/primitives/device-trigger.handler.js.map +1 -1
  342. package/dist/primitives/device.handler.d.ts +1 -1
  343. package/dist/primitives/device.handler.d.ts.map +1 -1
  344. package/dist/primitives/device.handler.js +2 -3
  345. package/dist/primitives/device.handler.js.map +1 -1
  346. package/dist/primitives/index.d.ts +1 -1
  347. package/dist/primitives/index.d.ts.map +1 -1
  348. package/dist/primitives/index.js +2 -3
  349. package/dist/primitives/index.js.map +1 -1
  350. package/dist/primitives/job.handler.d.ts +1 -1
  351. package/dist/primitives/job.handler.d.ts.map +1 -1
  352. package/dist/primitives/job.handler.js +3 -6
  353. package/dist/primitives/job.handler.js.map +1 -1
  354. package/dist/primitives/mcp-server.handler.d.ts.map +1 -1
  355. package/dist/primitives/mcp-server.handler.js +2 -2
  356. package/dist/primitives/mcp-server.handler.js.map +1 -1
  357. package/dist/primitives/postprocessor.handler.d.ts.map +1 -1
  358. package/dist/primitives/postprocessor.handler.js.map +1 -1
  359. package/dist/primitives/preprocessor.handler.d.ts +1 -1
  360. package/dist/primitives/preprocessor.handler.d.ts.map +1 -1
  361. package/dist/primitives/preprocessor.handler.js +2 -3
  362. package/dist/primitives/preprocessor.handler.js.map +1 -1
  363. package/dist/primitives/skill.handler.d.ts +1 -1
  364. package/dist/primitives/skill.handler.d.ts.map +1 -1
  365. package/dist/primitives/skill.handler.js +72 -22
  366. package/dist/primitives/skill.handler.js.map +1 -1
  367. package/dist/primitives/types.d.ts +1 -1
  368. package/dist/primitives/types.d.ts.map +1 -1
  369. package/dist/primitives/types.js.map +1 -1
  370. package/dist/primitives/webhook.handler.d.ts +1 -1
  371. package/dist/primitives/webhook.handler.d.ts.map +1 -1
  372. package/dist/primitives/webhook.handler.js +2 -3
  373. package/dist/primitives/webhook.handler.js.map +1 -1
  374. package/dist/services/analytics.d.ts.map +1 -1
  375. package/dist/services/analytics.js +4 -5
  376. package/dist/services/analytics.js.map +1 -1
  377. package/dist/services/auth.d.ts +1 -1
  378. package/dist/services/auth.js +7 -7
  379. package/dist/services/auth.js.map +1 -1
  380. package/dist/services/sandbox.service.d.ts.map +1 -1
  381. package/dist/services/sandbox.service.js +126 -78
  382. package/dist/services/sandbox.service.js.map +1 -1
  383. package/dist/types/api-contracts.d.ts +4 -4
  384. package/dist/types/api-contracts.d.ts.map +1 -1
  385. package/dist/types/index.d.ts +2 -2
  386. package/dist/types/index.d.ts.map +1 -1
  387. package/dist/types/index.js.map +1 -1
  388. package/dist/types/skill.d.ts +7 -7
  389. package/dist/types/skill.d.ts.map +1 -1
  390. package/dist/types/skill.js +2 -2
  391. package/dist/types/skill.js.map +1 -1
  392. package/dist/types/tool-validation.js.map +1 -1
  393. package/dist/types/yaml.types.js +0 -1
  394. package/dist/types/yaml.types.js.map +1 -1
  395. package/dist/utils/aliases.d.ts.map +1 -1
  396. package/dist/utils/aliases.js +38 -3
  397. package/dist/utils/aliases.js.map +1 -1
  398. package/dist/utils/artifact-loader.d.ts +47 -0
  399. package/dist/utils/artifact-loader.d.ts.map +1 -1
  400. package/dist/utils/artifact-loader.js +98 -6
  401. package/dist/utils/artifact-loader.js.map +1 -1
  402. package/dist/utils/auth-flows.d.ts.map +1 -1
  403. package/dist/utils/auth-flows.js +54 -54
  404. package/dist/utils/auth-flows.js.map +1 -1
  405. package/dist/utils/backup-helpers.d.ts.map +1 -1
  406. package/dist/utils/backup-helpers.js +10 -16
  407. package/dist/utils/backup-helpers.js.map +1 -1
  408. package/dist/utils/bundle-upload.d.ts +42 -0
  409. package/dist/utils/bundle-upload.d.ts.map +1 -0
  410. package/dist/utils/bundle-upload.js +90 -0
  411. package/dist/utils/bundle-upload.js.map +1 -0
  412. package/dist/utils/chat-attachments.js +1 -1
  413. package/dist/utils/chat-attachments.js.map +1 -1
  414. package/dist/utils/cli.d.ts.map +1 -1
  415. package/dist/utils/cli.js +3 -5
  416. package/dist/utils/cli.js.map +1 -1
  417. package/dist/utils/command-utils.d.ts.map +1 -1
  418. package/dist/utils/command-utils.js +4 -4
  419. package/dist/utils/command-utils.js.map +1 -1
  420. package/dist/utils/deploy-helpers.d.ts.map +1 -1
  421. package/dist/utils/deploy-helpers.js +13 -13
  422. package/dist/utils/deploy-helpers.js.map +1 -1
  423. package/dist/utils/env-loader.utils.d.ts +1 -1
  424. package/dist/utils/env-loader.utils.d.ts.map +1 -1
  425. package/dist/utils/env-loader.utils.js +15 -22
  426. package/dist/utils/env-loader.utils.js.map +1 -1
  427. package/dist/utils/files.d.ts.map +1 -1
  428. package/dist/utils/files.js +23 -13
  429. package/dist/utils/files.js.map +1 -1
  430. package/dist/utils/hints.d.ts.map +1 -1
  431. package/dist/utils/hints.js +3 -5
  432. package/dist/utils/hints.js.map +1 -1
  433. package/dist/utils/init-agent.d.ts.map +1 -1
  434. package/dist/utils/init-agent.js +18 -20
  435. package/dist/utils/init-agent.js.map +1 -1
  436. package/dist/utils/init-helpers.d.ts.map +1 -1
  437. package/dist/utils/init-helpers.js +11 -11
  438. package/dist/utils/init-helpers.js.map +1 -1
  439. package/dist/utils/init-prompts.d.ts.map +1 -1
  440. package/dist/utils/init-prompts.js +34 -36
  441. package/dist/utils/init-prompts.js.map +1 -1
  442. package/dist/utils/prompt-handler.js +1 -1
  443. package/dist/utils/prompt-handler.js.map +1 -1
  444. package/dist/utils/sandbox-storage.d.ts.map +1 -1
  445. package/dist/utils/sandbox-storage.js.map +1 -1
  446. package/dist/utils/sandbox.d.ts +1 -1
  447. package/dist/utils/sandbox.d.ts.map +1 -1
  448. package/dist/utils/sandbox.js +107 -106
  449. package/dist/utils/sandbox.js.map +1 -1
  450. package/dist/utils/semver.js +1 -1
  451. package/dist/utils/semver.js.map +1 -1
  452. package/dist/utils/suggest.d.ts.map +1 -1
  453. package/dist/utils/suggest.js +1 -3
  454. package/dist/utils/suggest.js.map +1 -1
  455. package/dist/utils/sync-display.d.ts.map +1 -1
  456. package/dist/utils/sync-display.js +15 -13
  457. package/dist/utils/sync-display.js.map +1 -1
  458. package/dist/utils/sync-fetch.d.ts.map +1 -1
  459. package/dist/utils/sync-fetch.js +33 -24
  460. package/dist/utils/sync-fetch.js.map +1 -1
  461. package/dist/utils/version-check.js +1 -1
  462. package/dist/utils/version-check.js.map +1 -1
  463. package/docs/README.md +1 -1
  464. package/node_modules/@lua/shared-types/dist/index.d.mts +13 -1
  465. package/node_modules/@lua/shared-types/dist/index.d.ts +13 -1
  466. package/node_modules/@lua/shared-types/src/ai-generate.types.ts +1 -6
  467. package/node_modules/@lua/shared-types/src/ai-generate.utils.ts +1 -4
  468. package/node_modules/@lua/shared-types/src/chat-stream.types.ts +11 -0
  469. package/node_modules/@lua/shared-types/src/device.types.ts +6 -6
  470. package/node_modules/@lua/shared-types/src/index.ts +1 -0
  471. package/node_modules/@lua/shared-types/src/sandbox-contract.ts +26 -5
  472. package/node_modules/@lua/shared-types/src/vm-execution-log.types.ts +11 -11
  473. package/package.json +1 -1
  474. package/template/QUICKSTART.md +33 -33
  475. package/template/README.md +35 -34
  476. package/template/examples/README.md +44 -38
  477. package/template/examples/jobs/AbandonedBasketProcessorJob.ts +30 -31
  478. package/template/examples/jobs/DailyCleanupJob.ts +17 -18
  479. package/template/examples/jobs/DataMigrationJob.ts +18 -23
  480. package/template/examples/jobs/HealthCheckJob.ts +13 -14
  481. package/template/examples/postprocessors/modifyResponse.ts +14 -15
  482. package/template/examples/preprocessors/messageMatching.ts +28 -29
  483. package/template/examples/services/ApiService.ts +68 -64
  484. package/template/examples/services/GetWeather.ts +39 -33
  485. package/template/examples/skills/basket.skill.ts +27 -7
  486. package/template/examples/skills/product.skill.ts +21 -8
  487. package/template/examples/skills/tools/BasketTool.ts +97 -98
  488. package/template/examples/skills/tools/CreateInlineJob.ts +38 -36
  489. package/template/examples/skills/tools/CreatePostTool.ts +27 -28
  490. package/template/examples/skills/tools/CustomDataTool.ts +72 -63
  491. package/template/examples/skills/tools/GameScoreTrackerTool.ts +72 -78
  492. package/template/examples/skills/tools/GetWeatherTool.ts +43 -45
  493. package/template/examples/skills/tools/OrderTool.ts +58 -58
  494. package/template/examples/skills/tools/PaymentTool.ts +43 -43
  495. package/template/examples/skills/tools/PremiumFeatureTool.ts +79 -77
  496. package/template/examples/skills/tools/ProductsTool.ts +68 -69
  497. package/template/examples/skills/tools/SmartBasketTool.ts +43 -44
  498. package/template/examples/skills/tools/UserDataTool.ts +97 -98
  499. package/template/examples/skills/user.skill.ts +7 -8
  500. package/template/examples/webhooks/FileUploadWebhook.ts +38 -31
  501. package/template/examples/webhooks/PaymentWebhook.ts +23 -22
  502. package/template/examples/webhooks/UserEventWebhook.ts +16 -19
  503. package/template/lua.skill.yaml +2 -2
  504. package/template/package.json +1 -1
  505. package/template/src/index.ts +28 -28
@@ -5,74 +5,80 @@ This folder contains example implementations of all Lua AI Agent features. Use t
5
5
  ## 📁 What's Inside
6
6
 
7
7
  ### skills/
8
+
8
9
  Example skills and tools demonstrating platform APIs:
9
10
 
10
- | File | What it shows |
11
- |------|--------------|
12
- | `tools/GetWeatherTool.ts` | External API integration |
13
- | `tools/UserDataTool.ts` | User API - get/update user data, chat history, AI generation |
14
- | `tools/ProductsTool.ts` | Products API - CRUD operations |
15
- | `tools/BasketTool.ts` | Baskets API - shopping cart |
16
- | `tools/OrderTool.ts` | Orders API - order management, status & data updates |
17
- | `tools/CustomDataTool.ts` | Data API - custom collections with semantic search |
18
- | `tools/PaymentTool.ts` | Stripe integration, environment variables |
19
- | `tools/SmartBasketTool.ts` | Dynamic job creation from tools |
20
- | `tools/GameScoreTrackerTool.ts` | Jobs API - interval jobs, deactivation, getAll |
11
+ | File | What it shows |
12
+ | ------------------------------- | ------------------------------------------------------------ |
13
+ | `tools/GetWeatherTool.ts` | External API integration |
14
+ | `tools/UserDataTool.ts` | User API - get/update user data, chat history, AI generation |
15
+ | `tools/ProductsTool.ts` | Products API - CRUD operations |
16
+ | `tools/BasketTool.ts` | Baskets API - shopping cart |
17
+ | `tools/OrderTool.ts` | Orders API - order management, status & data updates |
18
+ | `tools/CustomDataTool.ts` | Data API - custom collections with semantic search |
19
+ | `tools/PaymentTool.ts` | Stripe integration, environment variables |
20
+ | `tools/SmartBasketTool.ts` | Dynamic job creation from tools |
21
+ | `tools/GameScoreTrackerTool.ts` | Jobs API - interval jobs, deactivation, getAll |
21
22
 
22
23
  ### webhooks/
24
+
23
25
  HTTP endpoints for external integrations:
24
26
 
25
- | File | What it shows |
26
- |------|--------------|
27
- | `PaymentWebhook.ts` | Stripe payment notifications, Orders API |
28
- | `UserEventWebhook.ts` | External events, **Templates API** (WhatsApp) |
29
- | `FileUploadWebhook.ts` | **CDN API** - file uploads, Data API |
27
+ | File | What it shows |
28
+ | ---------------------- | --------------------------------------------- |
29
+ | `PaymentWebhook.ts` | Stripe payment notifications, Orders API |
30
+ | `UserEventWebhook.ts` | External events, **Templates API** (WhatsApp) |
31
+ | `FileUploadWebhook.ts` | **CDN API** - file uploads, Data API |
30
32
 
31
33
  ### jobs/
34
+
32
35
  Scheduled background tasks:
33
36
 
34
- | File | What it shows |
35
- |------|--------------|
36
- | `HealthCheckJob.ts` | Interval schedule, health monitoring |
37
- | `DailyCleanupJob.ts` | Cron schedule, data cleanup |
38
- | `DataMigrationJob.ts` | One-time schedule, batch processing |
37
+ | File | What it shows |
38
+ | -------------------------------- | --------------------------------------------- |
39
+ | `HealthCheckJob.ts` | Interval schedule, health monitoring |
40
+ | `DailyCleanupJob.ts` | Cron schedule, data cleanup |
41
+ | `DataMigrationJob.ts` | One-time schedule, batch processing |
39
42
  | `AbandonedBasketProcessorJob.ts` | **Templates API** (WhatsApp), batch reminders |
40
43
 
41
44
  ### preprocessors/
45
+
42
46
  Message filtering before the agent:
43
47
 
44
- | File | What it shows |
45
- |------|--------------|
48
+ | File | What it shows |
49
+ | -------------------- | -------------------------------------- |
46
50
  | `messageMatching.ts` | Modify/block messages based on content |
47
51
 
48
52
  ### postprocessors/
53
+
49
54
  Response transformation after the agent:
50
55
 
51
- | File | What it shows |
52
- |------|--------------|
56
+ | File | What it shows |
57
+ | ------------------- | ------------------------- |
53
58
  | `modifyResponse.ts` | Transform agent responses |
54
59
 
55
60
  ### services/
61
+
56
62
  Helper utilities:
57
63
 
58
- | File | What it shows |
59
- |------|--------------|
60
- | `ApiService.ts` | HTTP client wrapper |
64
+ | File | What it shows |
65
+ | --------------- | ------------------------ |
66
+ | `ApiService.ts` | HTTP client wrapper |
61
67
  | `GetWeather.ts` | Mock service for testing |
62
68
 
63
69
  ## 🎯 API Coverage
64
70
 
65
- | API | Where it's demonstrated |
66
- |-----|------------------------|
67
- | **User** | `UserDataTool.ts` |
68
- | **Products** | `ProductsTool.ts` |
69
- | **Baskets** | `BasketTool.ts`, `SmartBasketTool.ts` |
70
- | **Orders** | `OrderTool.ts`, `PaymentWebhook.ts` |
71
- | **Data** | `CustomDataTool.ts`, `FileUploadWebhook.ts` |
72
- | **Jobs** | `SmartBasketTool.ts`, `GameScoreTrackerTool.ts` |
73
- | **AI** | `UserDataTool.ts` |
71
+ | API | Where it's demonstrated |
72
+ | ------------- | ------------------------------------------------------- |
73
+ | **User** | `UserDataTool.ts` |
74
+ | **Products** | `ProductsTool.ts` |
75
+ | **Baskets** | `BasketTool.ts`, `SmartBasketTool.ts` |
76
+ | **Orders** | `OrderTool.ts`, `PaymentWebhook.ts` |
77
+ | **Data** | `CustomDataTool.ts`, `FileUploadWebhook.ts` |
78
+ | **Jobs** | `SmartBasketTool.ts`, `GameScoreTrackerTool.ts` |
79
+ | **AI** | `UserDataTool.ts` |
74
80
  | **Templates** | `UserEventWebhook.ts`, `AbandonedBasketProcessorJob.ts` |
75
- | **CDN** | `FileUploadWebhook.ts` |
81
+ | **CDN** | `FileUploadWebhook.ts` |
76
82
 
77
83
  ## 🚀 How to Use
78
84
 
@@ -1,15 +1,15 @@
1
1
  /**
2
2
  * Abandoned Basket Processor Job
3
- *
3
+ *
4
4
  * Processes abandoned cart reminders and sends WhatsApp notifications.
5
- *
5
+ *
6
6
  * Flow:
7
7
  * 1. User creates basket → Tool schedules reminder in custom data
8
8
  * 2. This job runs every 15 minutes
9
9
  * 3. Checks which reminders are due
10
10
  * 4. Checks if baskets were checked out
11
11
  * 5. Sends WhatsApp template message for abandoned baskets
12
- *
12
+ *
13
13
  * Demonstrates:
14
14
  * - Interval job scheduling
15
15
  * - Batch processing pattern
@@ -17,19 +17,19 @@
17
17
  * - Data API for tracking state
18
18
  */
19
19
 
20
- import { LuaJob, Data, Baskets, Templates, env } from "lua-cli";
20
+ import { LuaJob, Data, Baskets, Templates, env } from 'lua-cli';
21
21
 
22
22
  const abandonedBasketProcessorJob = new LuaJob({
23
- name: "process-basket-reminders",
24
- description: "Processes abandoned basket reminders and sends WhatsApp notifications",
23
+ name: 'process-basket-reminders',
24
+ description: 'Processes abandoned basket reminders and sends WhatsApp notifications',
25
25
 
26
26
  // Run every 15 minutes
27
27
  schedule: {
28
28
  type: 'interval',
29
- seconds: 900 // 15 minutes = 900 seconds
29
+ seconds: 900, // 15 minutes = 900 seconds
30
30
  },
31
31
 
32
- timeout: 120, // 2 minutes
32
+ timeout: 120, // 2 minutes
33
33
 
34
34
  execute: async () => {
35
35
  // Configuration - set these in your environment variables
@@ -70,9 +70,10 @@ const abandonedBasketProcessorJob = new LuaJob({
70
70
  abandonedCount++;
71
71
 
72
72
  // Calculate basket value
73
- const totalValue = basket.items?.reduce((sum: number, item: any) => {
74
- return sum + (item.price * item.quantity);
75
- }, 0) || 0;
73
+ const totalValue =
74
+ basket.items?.reduce((sum: number, item: any) => {
75
+ return sum + item.price * item.quantity;
76
+ }, 0) || 0;
76
77
 
77
78
  // Log abandoned basket
78
79
  await Data.create('abandoned-baskets', {
@@ -82,7 +83,7 @@ const abandonedBasketProcessorJob = new LuaJob({
82
83
  totalValue,
83
84
  items: basket.items,
84
85
  abandonedAt: new Date().toISOString(),
85
- reminderSent: false
86
+ reminderSent: false,
86
87
  });
87
88
 
88
89
  // Send WhatsApp reminder if we have a phone number
@@ -90,12 +91,10 @@ const abandonedBasketProcessorJob = new LuaJob({
90
91
  try {
91
92
  // Find the abandoned cart template
92
93
  const templatesResponse = await Templates.whatsapp.list(WHATSAPP_CHANNEL_ID, {
93
- search: ABANDONED_CART_TEMPLATE_NAME
94
+ search: ABANDONED_CART_TEMPLATE_NAME,
94
95
  });
95
-
96
- const template = templatesResponse.templates.find(
97
- t => t.status === 'APPROVED'
98
- );
96
+
97
+ const template = templatesResponse.templates.find((t) => t.status === 'APPROVED');
99
98
 
100
99
  if (template) {
101
100
  // Send the template message
@@ -104,15 +103,15 @@ const abandonedBasketProcessorJob = new LuaJob({
104
103
  values: {
105
104
  body: {
106
105
  item_count: String(basket.items?.length || 0),
107
- total_value: `${basket.currency} ${totalValue.toFixed(2)}`
108
- }
109
- }
106
+ total_value: `${basket.currency} ${totalValue.toFixed(2)}`,
107
+ },
108
+ },
110
109
  });
111
110
 
112
111
  if (result.totalErrors === 0) {
113
112
  console.log(`📱 WhatsApp reminder sent to ${reminder.data.phoneNumber}`);
114
113
  messagesSent++;
115
-
114
+
116
115
  // Update the abandoned basket record
117
116
  const abandonedRecords = await Data.get('abandoned-baskets', {}, 1, 100);
118
117
  const record = abandonedRecords.data?.find((r: any) => r.data.basketId === basket.id);
@@ -120,7 +119,7 @@ const abandonedBasketProcessorJob = new LuaJob({
120
119
  await Data.update('abandoned-baskets', record.id, {
121
120
  ...record.data,
122
121
  reminderSent: true,
123
- reminderSentAt: new Date().toISOString()
122
+ reminderSentAt: new Date().toISOString(),
124
123
  });
125
124
  }
126
125
  } else {
@@ -139,9 +138,8 @@ const abandonedBasketProcessorJob = new LuaJob({
139
138
  ...reminder.data,
140
139
  status: 'completed',
141
140
  result: 'abandoned',
142
- processedAt: new Date().toISOString()
141
+ processedAt: new Date().toISOString(),
143
142
  });
144
-
145
143
  } else {
146
144
  // Basket was checked out
147
145
  console.log(`✅ Basket ${basket.id} was checked out (${basket.status})`);
@@ -152,22 +150,21 @@ const abandonedBasketProcessorJob = new LuaJob({
152
150
  ...reminder.data,
153
151
  status: 'completed',
154
152
  result: 'checked-out',
155
- processedAt: new Date().toISOString()
153
+ processedAt: new Date().toISOString(),
156
154
  });
157
155
  }
158
156
 
159
157
  processedCount++;
160
-
161
158
  } catch (error) {
162
159
  console.error(`❌ Error processing basket ${reminder.data.basketId}:`, error);
163
-
160
+
164
161
  // Mark as error
165
162
  try {
166
163
  await Data.update('basket-reminders', reminder.id, {
167
164
  ...reminder.data,
168
165
  status: 'error',
169
166
  error: String(error),
170
- processedAt: new Date().toISOString()
167
+ processedAt: new Date().toISOString(),
171
168
  });
172
169
  } catch (updateError) {
173
170
  console.error('Failed to update reminder status:', updateError);
@@ -176,7 +173,9 @@ const abandonedBasketProcessorJob = new LuaJob({
176
173
  }
177
174
 
178
175
  console.log('✅ Reminder processing complete');
179
- console.log(`📊 Processed: ${processedCount}, Abandoned: ${abandonedCount}, Checked out: ${checkedOutCount}, Messages sent: ${messagesSent}`);
176
+ console.log(
177
+ `📊 Processed: ${processedCount}, Abandoned: ${abandonedCount}, Checked out: ${checkedOutCount}, Messages sent: ${messagesSent}`
178
+ );
180
179
 
181
180
  return {
182
181
  success: true,
@@ -184,9 +183,9 @@ const abandonedBasketProcessorJob = new LuaJob({
184
183
  abandonedCount,
185
184
  checkedOutCount,
186
185
  messagesSent,
187
- timestamp: new Date().toISOString()
186
+ timestamp: new Date().toISOString(),
188
187
  };
189
- }
188
+ },
190
189
  });
191
190
 
192
191
  export default abandonedBasketProcessorJob;
@@ -1,21 +1,21 @@
1
1
  /**
2
2
  * Daily Cleanup Job Example
3
- *
3
+ *
4
4
  * This job runs daily at 2 AM to clean up old data and maintain database performance.
5
5
  * Demonstrates: Cron scheduling, data cleanup, and error handling.
6
6
  */
7
7
 
8
- import { LuaJob, Data } from "lua-cli";
8
+ import { LuaJob, Data } from 'lua-cli';
9
9
 
10
10
  const dailyCleanupJob = new LuaJob({
11
- name: "daily-cleanup",
12
- description: "Daily database cleanup and maintenance",
11
+ name: 'daily-cleanup',
12
+ description: 'Daily database cleanup and maintenance',
13
13
 
14
14
  // Cron schedule: Every day at 2 AM EST
15
15
  schedule: {
16
16
  type: 'cron',
17
- expression: '0 2 * * *', // minute hour day month day-of-week
18
- timezone: 'America/New_York'
17
+ expression: '0 2 * * *', // minute hour day month day-of-week
18
+ timezone: 'America/New_York',
19
19
  },
20
20
 
21
21
  // Give it 10 minutes to complete
@@ -24,7 +24,7 @@ const dailyCleanupJob = new LuaJob({
24
24
  // Retry up to 3 times if it fails
25
25
  retry: {
26
26
  maxAttempts: 3,
27
- backoffSeconds: 60 // Wait 60s between retries
27
+ backoffSeconds: 60, // Wait 60s between retries
28
28
  },
29
29
 
30
30
  execute: async () => {
@@ -35,11 +35,11 @@ const dailyCleanupJob = new LuaJob({
35
35
 
36
36
  // 1. Clean up old user events (older than 90 days)
37
37
  const ninetyDaysAgo = new Date(Date.now() - 90 * 24 * 60 * 60 * 1000);
38
-
38
+
39
39
  try {
40
40
  const oldEventsResponse = await Data.get('user-events', {}, 1, 1000);
41
41
  const oldEvents = oldEventsResponse.data || [];
42
-
42
+
43
43
  for (const event of oldEvents) {
44
44
  const eventDate = new Date(event.data.receivedAt);
45
45
  if (eventDate < ninetyDaysAgo) {
@@ -47,7 +47,7 @@ const dailyCleanupJob = new LuaJob({
47
47
  totalRecordsDeleted++;
48
48
  }
49
49
  }
50
-
50
+
51
51
  console.log(`✅ Deleted ${totalRecordsDeleted} old user events`);
52
52
  } catch (error) {
53
53
  console.error('❌ Error cleaning user events:', error);
@@ -55,12 +55,12 @@ const dailyCleanupJob = new LuaJob({
55
55
 
56
56
  // 2. Clean up old payment logs (older than 180 days)
57
57
  const oneEightyDaysAgo = new Date(Date.now() - 180 * 24 * 60 * 60 * 1000);
58
-
58
+
59
59
  try {
60
60
  const oldLogsResponse = await Data.get('payment-logs', {}, 1, 1000);
61
61
  const oldLogs = oldLogsResponse.data || [];
62
62
  let logsDeleted = 0;
63
-
63
+
64
64
  for (const log of oldLogs) {
65
65
  const logDate = new Date(log.data.receivedAt);
66
66
  if (logDate < oneEightyDaysAgo) {
@@ -69,7 +69,7 @@ const dailyCleanupJob = new LuaJob({
69
69
  totalRecordsDeleted++;
70
70
  }
71
71
  }
72
-
72
+
73
73
  console.log(`✅ Deleted ${logsDeleted} old payment logs`);
74
74
  } catch (error) {
75
75
  console.error('❌ Error cleaning payment logs:', error);
@@ -78,9 +78,9 @@ const dailyCleanupJob = new LuaJob({
78
78
  // 3. Clean up abandoned baskets (older than 7 days)
79
79
  // Note: This would require basket API support for deletion
80
80
  // For now, we'll just log the count
81
-
81
+
82
82
  const duration = Date.now() - startTime;
83
-
83
+
84
84
  console.log(`✅ Cleanup complete in ${duration}ms`);
85
85
 
86
86
  return {
@@ -88,10 +88,9 @@ const dailyCleanupJob = new LuaJob({
88
88
  recordsDeleted: totalRecordsDeleted,
89
89
  duration: `${duration}ms`,
90
90
  completedAt: new Date().toISOString(),
91
- collections: ['user-events', 'payment-logs']
91
+ collections: ['user-events', 'payment-logs'],
92
92
  };
93
- }
93
+ },
94
94
  });
95
95
 
96
96
  export default dailyCleanupJob;
97
-
@@ -1,20 +1,20 @@
1
1
  /**
2
2
  * Data Migration Job Example
3
- *
3
+ *
4
4
  * This is a one-time job that runs at a specific date/time to migrate data.
5
5
  * Demonstrates: One-time scheduling, data migration, and batch processing.
6
6
  */
7
7
 
8
- import { LuaJob, Data } from "lua-cli";
8
+ import { LuaJob, Data } from 'lua-cli';
9
9
 
10
10
  const dataMigrationJob = new LuaJob({
11
- name: "migrate-user-schema",
12
- description: "One-time migration to new user event schema",
11
+ name: 'migrate-user-schema',
12
+ description: 'One-time migration to new user event schema',
13
13
 
14
14
  // One-time schedule: Run at specific date/time
15
15
  schedule: {
16
16
  type: 'once',
17
- executeAt: new Date('2025-12-31T02:00:00Z') // December 31, 2025 at 2 AM UTC
17
+ executeAt: new Date('2025-12-31T02:00:00Z'), // December 31, 2025 at 2 AM UTC
18
18
  },
19
19
 
20
20
  // Give it 30 minutes for large migration
@@ -23,7 +23,7 @@ const dataMigrationJob = new LuaJob({
23
23
  // Retry important migrations
24
24
  retry: {
25
25
  maxAttempts: 3,
26
- backoffSeconds: 300 // 5 minutes between retries
26
+ backoffSeconds: 300, // 5 minutes between retries
27
27
  },
28
28
 
29
29
  execute: async () => {
@@ -37,7 +37,7 @@ const dataMigrationJob = new LuaJob({
37
37
  // Get all user events with old schema
38
38
  const oldEventsResponse = await Data.get('user-events', {}, 1, 1000);
39
39
  const oldEvents = oldEventsResponse.data || [];
40
-
40
+
41
41
  console.log(`📊 Found ${oldEvents.length} events to migrate`);
42
42
 
43
43
  // Migrate each event
@@ -48,26 +48,24 @@ const dataMigrationJob = new LuaJob({
48
48
  // New fields
49
49
  eventId: event.id,
50
50
  eventType: event.data.type || 'unknown',
51
- userId: event.data.userId || event.data.user_id, // Handle both formats
51
+ userId: event.data.userId || event.data.user_id, // Handle both formats
52
52
  email: event.data.email,
53
53
  name: event.data.name,
54
-
54
+
55
55
  // Preserve metadata
56
56
  metadata: {
57
57
  ...event.data.metadata,
58
58
  migratedFrom: 'old-schema',
59
- migratedAt: new Date().toISOString()
59
+ migratedAt: new Date().toISOString(),
60
60
  },
61
-
61
+
62
62
  // Copy timestamps
63
63
  originalTimestamp: event.data.timestamp,
64
- receivedAt: event.data.receivedAt
64
+ receivedAt: event.data.receivedAt,
65
65
  };
66
66
 
67
67
  // Create in new collection
68
- await Data.create('user-events-v2', migratedEvent,
69
- `${migratedEvent.eventType} ${migratedEvent.email}`
70
- );
68
+ await Data.create('user-events-v2', migratedEvent, `${migratedEvent.eventType} ${migratedEvent.email}`);
71
69
 
72
70
  totalMigrated++;
73
71
 
@@ -75,7 +73,6 @@ const dataMigrationJob = new LuaJob({
75
73
  if (totalMigrated % 100 === 0) {
76
74
  console.log(`✅ Migrated ${totalMigrated} records...`);
77
75
  }
78
-
79
76
  } catch (error) {
80
77
  console.error(`❌ Failed to migrate event ${event.id}:`, error);
81
78
  totalErrors++;
@@ -101,7 +98,7 @@ const dataMigrationJob = new LuaJob({
101
98
  errors: totalErrors,
102
99
  successRate: parseFloat(successRate),
103
100
  duration,
104
- completedAt: new Date().toISOString()
101
+ completedAt: new Date().toISOString(),
105
102
  });
106
103
 
107
104
  return {
@@ -110,21 +107,19 @@ const dataMigrationJob = new LuaJob({
110
107
  migrated: totalMigrated,
111
108
  errors: totalErrors,
112
109
  successRate: `${successRate}%`,
113
- duration: `${duration}ms`
110
+ duration: `${duration}ms`,
114
111
  };
115
-
116
112
  } catch (error) {
117
113
  console.error('💥 Migration failed:', error);
118
-
114
+
119
115
  return {
120
116
  success: false,
121
117
  error: String(error),
122
118
  totalMigrated,
123
- totalErrors
119
+ totalErrors,
124
120
  };
125
121
  }
126
- }
122
+ },
127
123
  });
128
124
 
129
125
  export default dataMigrationJob;
130
-
@@ -1,20 +1,20 @@
1
1
  /**
2
2
  * Health Check Job Example
3
- *
3
+ *
4
4
  * This job runs every 5 minutes to check system health and alert on issues.
5
5
  * Demonstrates: Interval scheduling, monitoring, and alerting.
6
6
  */
7
7
 
8
- import { LuaJob, Data, Products } from "lua-cli";
8
+ import { LuaJob, Data, Products } from 'lua-cli';
9
9
 
10
10
  const healthCheckJob = new LuaJob({
11
- name: "health-check",
12
- description: "System health monitoring",
11
+ name: 'health-check',
12
+ description: 'System health monitoring',
13
13
 
14
14
  // Interval schedule: Every 5 minutes
15
15
  schedule: {
16
16
  type: 'interval',
17
- seconds: 300 // 5 minutes = 300 seconds
17
+ seconds: 300, // 5 minutes = 300 seconds
18
18
  },
19
19
 
20
20
  // Quick timeout for health checks
@@ -29,12 +29,12 @@ const healthCheckJob = new LuaJob({
29
29
  const testQuery = await Data.get('health-checks', {}, 1, 1);
30
30
  checks.database = {
31
31
  status: 'healthy',
32
- responseTime: Date.now()
32
+ responseTime: Date.now(),
33
33
  };
34
34
  } catch (error) {
35
35
  checks.database = {
36
36
  status: 'unhealthy',
37
- error: String(error)
37
+ error: String(error),
38
38
  };
39
39
  }
40
40
 
@@ -43,15 +43,15 @@ const healthCheckJob = new LuaJob({
43
43
  const startTime = Date.now();
44
44
  await Products.get(1, 1);
45
45
  const responseTime = Date.now() - startTime;
46
-
46
+
47
47
  checks.productsApi = {
48
48
  status: 'healthy',
49
- responseTime: `${responseTime}ms`
49
+ responseTime: `${responseTime}ms`,
50
50
  };
51
51
  } catch (error) {
52
52
  checks.productsApi = {
53
53
  status: 'unhealthy',
54
- error: String(error)
54
+ error: String(error),
55
55
  };
56
56
  }
57
57
 
@@ -63,7 +63,7 @@ const healthCheckJob = new LuaJob({
63
63
  await Data.create('health-checks', {
64
64
  status: overallStatus,
65
65
  checks,
66
- timestamp: new Date().toISOString()
66
+ timestamp: new Date().toISOString(),
67
67
  });
68
68
 
69
69
  // Alert if unhealthy (in production, send to monitoring service)
@@ -75,10 +75,9 @@ const healthCheckJob = new LuaJob({
75
75
  return {
76
76
  status: overallStatus,
77
77
  checks,
78
- timestamp: new Date().toISOString()
78
+ timestamp: new Date().toISOString(),
79
79
  };
80
- }
80
+ },
81
81
  });
82
82
 
83
83
  export default healthCheckJob;
84
-
@@ -1,20 +1,19 @@
1
- import { PostProcessor, UserDataInstance } from "lua-cli";
2
-
1
+ import { PostProcessor, UserDataInstance } from 'lua-cli';
3
2
 
4
3
  const modifyResponsePostProcessor = new PostProcessor({
5
- name: "modify-response",
6
- description: "Modifies the response to the user",
7
- execute: async (user: UserDataInstance, message: string, response: string, channel: string) => {
8
- console.log("Modify response post processor", user, message, response, channel);
9
- console.log("User data", await user.data);
10
- console.log("Message", message);
11
- console.log("Response", response);
12
- console.log("Channel", channel);
13
- if (response.includes("test")) {
14
- return { modifiedResponse: message.toUpperCase() };
15
- }
16
- return { modifiedResponse: response };
4
+ name: 'modify-response',
5
+ description: 'Modifies the response to the user',
6
+ execute: async (user: UserDataInstance, message: string, response: string, channel: string) => {
7
+ console.log('Modify response post processor', user, message, response, channel);
8
+ console.log('User data', await user.data);
9
+ console.log('Message', message);
10
+ console.log('Response', response);
11
+ console.log('Channel', channel);
12
+ if (response.includes('test')) {
13
+ return { modifiedResponse: message.toUpperCase() };
17
14
  }
15
+ return { modifiedResponse: response };
16
+ },
18
17
  });
19
18
 
20
- export default modifyResponsePostProcessor;
19
+ export default modifyResponsePostProcessor;