lua-cli 3.5.0-alpha.3 → 3.5.0-beta.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 (465) hide show
  1. package/README.md +137 -689
  2. package/dist/api/agent.api.service.d.ts +1 -8
  3. package/dist/api/agent.api.service.js +1 -11
  4. package/dist/api/agent.api.service.js.map +1 -1
  5. package/dist/api/auth.api.service.d.ts +1 -1
  6. package/dist/api/auth.api.service.js +1 -1
  7. package/dist/api/auth.api.service.js.map +1 -1
  8. package/dist/api/backup.api.service.d.ts +80 -0
  9. package/dist/api/backup.api.service.js +101 -0
  10. package/dist/api/backup.api.service.js.map +1 -0
  11. package/dist/api/basket.api.service.d.ts +4 -5
  12. package/dist/api/basket.api.service.js +13 -18
  13. package/dist/api/basket.api.service.js.map +1 -1
  14. package/dist/api/cdn.api.service.d.ts +2 -0
  15. package/dist/api/cdn.api.service.js +2 -0
  16. package/dist/api/cdn.api.service.js.map +1 -1
  17. package/dist/api/chat.api.service.d.ts +10 -2
  18. package/dist/api/chat.api.service.js +21 -2
  19. package/dist/api/chat.api.service.js.map +1 -1
  20. package/dist/api/credentials.js +5 -8
  21. package/dist/api/credentials.js.map +1 -1
  22. package/dist/api/custom.data.api.service.d.ts +3 -3
  23. package/dist/api/custom.data.api.service.js +9 -10
  24. package/dist/api/custom.data.api.service.js.map +1 -1
  25. package/dist/api/developer.api.service.d.ts +1 -1
  26. package/dist/api/developer.api.service.js +1 -1
  27. package/dist/api/developer.api.service.js.map +1 -1
  28. package/dist/api/http.client.js.map +1 -0
  29. package/dist/api/job.api.service.d.ts +2 -2
  30. package/dist/api/job.api.service.js +2 -2
  31. package/dist/api/job.api.service.js.map +1 -1
  32. package/dist/api/logs.api.service.d.ts +1 -1
  33. package/dist/api/logs.api.service.js +1 -1
  34. package/dist/api/logs.api.service.js.map +1 -1
  35. package/dist/api/marketplace.api.service.d.ts +6 -6
  36. package/dist/api/marketplace.api.service.js.map +1 -1
  37. package/dist/api/order.api.service.d.ts +3 -4
  38. package/dist/api/order.api.service.js +8 -10
  39. package/dist/api/order.api.service.js.map +1 -1
  40. package/dist/api/persona.api.service.d.ts +1 -1
  41. package/dist/api/persona.api.service.js +1 -1
  42. package/dist/api/persona.api.service.js.map +1 -1
  43. package/dist/api/postprocessor.api.service.d.ts +1 -1
  44. package/dist/api/postprocessor.api.service.js +1 -1
  45. package/dist/api/postprocessor.api.service.js.map +1 -1
  46. package/dist/api/preprocessor.api.service.d.ts +1 -1
  47. package/dist/api/preprocessor.api.service.js +1 -1
  48. package/dist/api/preprocessor.api.service.js.map +1 -1
  49. package/dist/api/products.api.service.d.ts +4 -4
  50. package/dist/api/products.api.service.js +6 -6
  51. package/dist/api/products.api.service.js.map +1 -1
  52. package/dist/api/resource.api.service.d.ts +76 -0
  53. package/dist/api/resource.api.service.js +74 -0
  54. package/dist/api/resource.api.service.js.map +1 -0
  55. package/dist/api/skills.api.service.d.ts +7 -15
  56. package/dist/api/skills.api.service.js +1 -1
  57. package/dist/api/skills.api.service.js.map +1 -1
  58. package/dist/api/tool.api.service.d.ts +1 -1
  59. package/dist/api/tool.api.service.js +1 -1
  60. package/dist/api/tool.api.service.js.map +1 -1
  61. package/dist/api/unifiedto.api.service.d.ts +1 -1
  62. package/dist/api/unifiedto.api.service.js +1 -1
  63. package/dist/api/unifiedto.api.service.js.map +1 -1
  64. package/dist/api/user.data.api.service.d.ts +7 -8
  65. package/dist/api/user.data.api.service.js +2 -3
  66. package/dist/api/user.data.api.service.js.map +1 -1
  67. package/dist/api/webhook.api.service.d.ts +1 -1
  68. package/dist/api/webhook.api.service.js +1 -1
  69. package/dist/api/webhook.api.service.js.map +1 -1
  70. package/dist/api/whatsapp-templates.api.service.d.ts +1 -1
  71. package/dist/api/whatsapp-templates.api.service.js +1 -1
  72. package/dist/api/whatsapp-templates.api.service.js.map +1 -1
  73. package/dist/api-exports.d.ts +14 -12
  74. package/dist/api-exports.js +8 -8
  75. package/dist/api-exports.js.map +1 -1
  76. package/dist/cli/command-definitions.js +32 -17
  77. package/dist/cli/command-definitions.js.map +1 -1
  78. package/dist/commands/admin.js +3 -24
  79. package/dist/commands/admin.js.map +1 -1
  80. package/dist/commands/agents.d.ts +8 -7
  81. package/dist/commands/agents.js +63 -21
  82. package/dist/commands/agents.js.map +1 -1
  83. package/dist/commands/channels.js +11 -23
  84. package/dist/commands/channels.js.map +1 -1
  85. package/dist/commands/chat.js +33 -47
  86. package/dist/commands/chat.js.map +1 -1
  87. package/dist/commands/chatClear.js +11 -41
  88. package/dist/commands/chatClear.js.map +1 -1
  89. package/dist/commands/compile.d.ts +26 -23
  90. package/dist/commands/compile.js +98 -403
  91. package/dist/commands/compile.js.map +1 -1
  92. package/dist/commands/completion.js +1 -1
  93. package/dist/commands/completion.js.map +1 -1
  94. package/dist/commands/deploy.js +55 -25
  95. package/dist/commands/deploy.js.map +1 -1
  96. package/dist/commands/dev.js +29 -45
  97. package/dist/commands/dev.js.map +1 -1
  98. package/dist/commands/env.js +12 -25
  99. package/dist/commands/env.js.map +1 -1
  100. package/dist/commands/evals.js +3 -20
  101. package/dist/commands/evals.js.map +1 -1
  102. package/dist/commands/features.js +10 -23
  103. package/dist/commands/features.js.map +1 -1
  104. package/dist/commands/index.d.ts +1 -0
  105. package/dist/commands/index.js +1 -0
  106. package/dist/commands/index.js.map +1 -1
  107. package/dist/commands/init.d.ts +1 -0
  108. package/dist/commands/init.js +135 -19
  109. package/dist/commands/init.js.map +1 -1
  110. package/dist/commands/integrations.js +26 -37
  111. package/dist/commands/integrations.js.map +1 -1
  112. package/dist/commands/jobs.js +32 -56
  113. package/dist/commands/jobs.js.map +1 -1
  114. package/dist/commands/logs.js +9 -20
  115. package/dist/commands/logs.js.map +1 -1
  116. package/dist/commands/marketplace.js +34 -52
  117. package/dist/commands/marketplace.js.map +1 -1
  118. package/dist/commands/mcp.js +10 -23
  119. package/dist/commands/mcp.js.map +1 -1
  120. package/dist/commands/persona.js +43 -74
  121. package/dist/commands/persona.js.map +1 -1
  122. package/dist/commands/postprocessors.js +15 -28
  123. package/dist/commands/postprocessors.js.map +1 -1
  124. package/dist/commands/preprocessors.js +15 -28
  125. package/dist/commands/preprocessors.js.map +1 -1
  126. package/dist/commands/production.js +30 -63
  127. package/dist/commands/production.js.map +1 -1
  128. package/dist/commands/push.js +294 -1241
  129. package/dist/commands/push.js.map +1 -1
  130. package/dist/commands/pushBackup.d.ts +22 -0
  131. package/dist/commands/pushBackup.js +133 -0
  132. package/dist/commands/pushBackup.js.map +1 -0
  133. package/dist/commands/resources.js +29 -72
  134. package/dist/commands/resources.js.map +1 -1
  135. package/dist/commands/skills.d.ts +1 -1
  136. package/dist/commands/skills.js +58 -70
  137. package/dist/commands/skills.js.map +1 -1
  138. package/dist/commands/sync.d.ts +1 -3
  139. package/dist/commands/sync.js +12 -24
  140. package/dist/commands/sync.js.map +1 -1
  141. package/dist/commands/test.js +135 -104
  142. package/dist/commands/test.js.map +1 -1
  143. package/dist/commands/webhooks.js +15 -28
  144. package/dist/commands/webhooks.js.map +1 -1
  145. package/dist/compiler/agent-traverser.d.ts +104 -0
  146. package/dist/compiler/agent-traverser.js +311 -0
  147. package/dist/compiler/agent-traverser.js.map +1 -0
  148. package/dist/compiler/bundler.d.ts +42 -0
  149. package/dist/compiler/bundler.js +187 -0
  150. package/dist/compiler/bundler.js.map +1 -0
  151. package/dist/compiler/compiler.d.ts +177 -0
  152. package/dist/compiler/compiler.js +580 -0
  153. package/dist/compiler/compiler.js.map +1 -0
  154. package/dist/compiler/index.d.ts +36 -0
  155. package/dist/compiler/index.js +42 -0
  156. package/dist/compiler/index.js.map +1 -0
  157. package/dist/compiler/plugins/base.d.ts +264 -0
  158. package/dist/compiler/plugins/base.js +307 -0
  159. package/dist/compiler/plugins/base.js.map +1 -0
  160. package/dist/compiler/plugins/job.plugin.d.ts +33 -0
  161. package/dist/compiler/plugins/job.plugin.js +143 -0
  162. package/dist/compiler/plugins/job.plugin.js.map +1 -0
  163. package/dist/compiler/plugins/mcp-server.plugin.d.ts +50 -0
  164. package/dist/compiler/plugins/mcp-server.plugin.js +186 -0
  165. package/dist/compiler/plugins/mcp-server.plugin.js.map +1 -0
  166. package/dist/compiler/plugins/postprocessor.plugin.d.ts +20 -0
  167. package/dist/compiler/plugins/postprocessor.plugin.js +39 -0
  168. package/dist/compiler/plugins/postprocessor.plugin.js.map +1 -0
  169. package/dist/compiler/plugins/preprocessor.plugin.d.ts +20 -0
  170. package/dist/compiler/plugins/preprocessor.plugin.js +48 -0
  171. package/dist/compiler/plugins/preprocessor.plugin.js.map +1 -0
  172. package/dist/compiler/plugins/processor-base.d.ts +16 -0
  173. package/dist/compiler/plugins/processor-base.js +34 -0
  174. package/dist/compiler/plugins/processor-base.js.map +1 -0
  175. package/dist/compiler/plugins/registry.d.ts +61 -0
  176. package/dist/compiler/plugins/registry.js +107 -0
  177. package/dist/compiler/plugins/registry.js.map +1 -0
  178. package/dist/compiler/plugins/skill.plugin.d.ts +71 -0
  179. package/dist/compiler/plugins/skill.plugin.js +243 -0
  180. package/dist/compiler/plugins/skill.plugin.js.map +1 -0
  181. package/dist/compiler/plugins/tool.plugin.d.ts +67 -0
  182. package/dist/compiler/plugins/tool.plugin.js +279 -0
  183. package/dist/compiler/plugins/tool.plugin.js.map +1 -0
  184. package/dist/compiler/plugins/webhook.plugin.d.ts +37 -0
  185. package/dist/compiler/plugins/webhook.plugin.js +127 -0
  186. package/dist/compiler/plugins/webhook.plugin.js.map +1 -0
  187. package/dist/compiler/source-writer.d.ts +98 -0
  188. package/dist/compiler/source-writer.js +223 -0
  189. package/dist/compiler/source-writer.js.map +1 -0
  190. package/dist/compiler/types.d.ts +289 -0
  191. package/dist/compiler/types.js +20 -0
  192. package/dist/compiler/types.js.map +1 -0
  193. package/dist/compiler/utils/ast-helpers.d.ts +57 -0
  194. package/dist/compiler/utils/ast-helpers.js +164 -0
  195. package/dist/compiler/utils/ast-helpers.js.map +1 -0
  196. package/dist/compiler/utils/common.d.ts +23 -0
  197. package/dist/compiler/utils/common.js +66 -0
  198. package/dist/compiler/utils/common.js.map +1 -0
  199. package/dist/compiler/utils/file-discovery.d.ts +34 -0
  200. package/dist/compiler/utils/file-discovery.js +68 -0
  201. package/dist/compiler/utils/file-discovery.js.map +1 -0
  202. package/dist/compiler/utils/path-resolver.d.ts +25 -0
  203. package/dist/compiler/utils/path-resolver.js +66 -0
  204. package/dist/compiler/utils/path-resolver.js.map +1 -0
  205. package/dist/compiler/utils/schema-converter.d.ts +26 -0
  206. package/dist/compiler/utils/schema-converter.js +94 -0
  207. package/dist/compiler/utils/schema-converter.js.map +1 -0
  208. package/dist/config/compile.constants.d.ts +2 -22
  209. package/dist/config/compile.constants.js +2 -49
  210. package/dist/config/compile.constants.js.map +1 -1
  211. package/dist/config/constants.d.ts +18 -2
  212. package/dist/config/constants.js +28 -8
  213. package/dist/config/constants.js.map +1 -1
  214. package/dist/config/dev.constants.d.ts +0 -10
  215. package/dist/config/dev.constants.js +0 -10
  216. package/dist/config/dev.constants.js.map +1 -1
  217. package/dist/index.js +7 -0
  218. package/dist/index.js.map +1 -1
  219. package/dist/instances/basket.instance.js.map +1 -0
  220. package/dist/instances/data.entry.instance.js.map +1 -0
  221. package/dist/instances/job.instance.js.map +1 -0
  222. package/dist/instances/order.instance.js.map +1 -0
  223. package/dist/instances/product.instance.js.map +1 -0
  224. package/dist/instances/product.pagination.instance.js.map +1 -0
  225. package/dist/instances/product.search.instance.js.map +1 -0
  226. package/dist/instances/user.instance.js.map +1 -0
  227. package/dist/interfaces/admin.d.ts +0 -38
  228. package/dist/interfaces/backup.d.ts +125 -0
  229. package/dist/interfaces/backup.js +8 -0
  230. package/dist/interfaces/backup.js.map +1 -0
  231. package/dist/interfaces/baskets.d.ts +0 -56
  232. package/dist/interfaces/common.d.ts +1 -0
  233. package/dist/interfaces/deploy.d.ts +0 -15
  234. package/dist/interfaces/index.d.ts +1 -1
  235. package/dist/interfaces/marketplace.d.ts +51 -0
  236. package/dist/interfaces/marketplace.js +1 -1
  237. package/dist/interfaces/marketplace.js.map +1 -1
  238. package/dist/interfaces/message.d.ts +0 -3
  239. package/dist/interfaces/orders.d.ts +0 -24
  240. package/dist/interfaces/postprocessors.d.ts +0 -18
  241. package/dist/interfaces/preprocessors.d.ts +0 -18
  242. package/dist/interfaces/skills.d.ts +61 -0
  243. package/dist/interfaces/user.d.ts +25 -0
  244. package/dist/interfaces/webhooks.d.ts +0 -9
  245. package/dist/primitives/base.handler.d.ts +106 -0
  246. package/dist/primitives/base.handler.js +370 -0
  247. package/dist/primitives/base.handler.js.map +1 -0
  248. package/dist/primitives/index.d.ts +47 -0
  249. package/dist/primitives/index.js +78 -0
  250. package/dist/primitives/index.js.map +1 -0
  251. package/dist/primitives/job.handler.d.ts +52 -0
  252. package/dist/primitives/job.handler.js +118 -0
  253. package/dist/primitives/job.handler.js.map +1 -0
  254. package/dist/primitives/mcp-server.handler.d.ts +54 -0
  255. package/dist/primitives/mcp-server.handler.js +91 -0
  256. package/dist/primitives/mcp-server.handler.js.map +1 -0
  257. package/dist/primitives/postprocessor.handler.d.ts +49 -0
  258. package/dist/primitives/postprocessor.handler.js +81 -0
  259. package/dist/primitives/postprocessor.handler.js.map +1 -0
  260. package/dist/primitives/preprocessor.handler.d.ts +54 -0
  261. package/dist/primitives/preprocessor.handler.js +95 -0
  262. package/dist/primitives/preprocessor.handler.js.map +1 -0
  263. package/dist/primitives/skill.handler.d.ts +44 -0
  264. package/dist/primitives/skill.handler.js +192 -0
  265. package/dist/primitives/skill.handler.js.map +1 -0
  266. package/dist/primitives/types.d.ts +72 -0
  267. package/dist/primitives/types.js +17 -0
  268. package/dist/primitives/types.js.map +1 -0
  269. package/dist/primitives/webhook.handler.d.ts +50 -0
  270. package/dist/primitives/webhook.handler.js +96 -0
  271. package/dist/primitives/webhook.handler.js.map +1 -0
  272. package/dist/services/auth.js +1 -2
  273. package/dist/services/auth.js.map +1 -1
  274. package/dist/services/sandbox.service.d.ts +103 -0
  275. package/dist/services/sandbox.service.js +479 -0
  276. package/dist/services/sandbox.service.js.map +1 -0
  277. package/dist/types/api-contracts.d.ts +1 -1
  278. package/dist/types/index.d.ts +2 -1
  279. package/dist/types/index.js.map +1 -1
  280. package/dist/types/skill.d.ts +8 -2
  281. package/dist/types/skill.js +8 -0
  282. package/dist/types/skill.js.map +1 -1
  283. package/dist/types/yaml.types.d.ts +69 -0
  284. package/dist/types/yaml.types.js +6 -0
  285. package/dist/types/yaml.types.js.map +1 -0
  286. package/dist/utils/artifact-loader.d.ts +108 -0
  287. package/dist/utils/artifact-loader.js +188 -0
  288. package/dist/utils/artifact-loader.js.map +1 -0
  289. package/dist/utils/backup-helpers.d.ts +122 -0
  290. package/dist/utils/backup-helpers.js +274 -0
  291. package/dist/utils/backup-helpers.js.map +1 -0
  292. package/dist/utils/cli.d.ts +8 -0
  293. package/dist/utils/cli.js +19 -2
  294. package/dist/utils/cli.js.map +1 -1
  295. package/dist/utils/command-utils.d.ts +42 -0
  296. package/dist/utils/command-utils.js +83 -0
  297. package/dist/utils/command-utils.js.map +1 -0
  298. package/dist/utils/deploy-helpers.d.ts +0 -29
  299. package/dist/utils/deploy-helpers.js +0 -70
  300. package/dist/utils/deploy-helpers.js.map +1 -1
  301. package/dist/utils/dev-api.d.ts +3 -99
  302. package/dist/utils/dev-api.js +3 -430
  303. package/dist/utils/dev-api.js.map +1 -1
  304. package/dist/utils/dev-server.d.ts +3 -1
  305. package/dist/utils/dev-server.js +69 -145
  306. package/dist/utils/dev-server.js.map +1 -1
  307. package/dist/utils/dev-watcher.d.ts +0 -1
  308. package/dist/utils/dev-watcher.js +23 -8
  309. package/dist/utils/dev-watcher.js.map +1 -1
  310. package/dist/utils/env-loader.utils.d.ts +10 -1
  311. package/dist/utils/env-loader.utils.js +39 -31
  312. package/dist/utils/env-loader.utils.js.map +1 -1
  313. package/dist/utils/files.d.ts +47 -3
  314. package/dist/utils/files.js +98 -40
  315. package/dist/utils/files.js.map +1 -1
  316. package/dist/utils/init-agent.js +1 -2
  317. package/dist/utils/init-agent.js.map +1 -1
  318. package/dist/utils/init-helpers.d.ts +2 -10
  319. package/dist/utils/init-helpers.js +9 -17
  320. package/dist/utils/init-helpers.js.map +1 -1
  321. package/dist/utils/init-prompts.d.ts +0 -8
  322. package/dist/utils/init-prompts.js +0 -22
  323. package/dist/utils/init-prompts.js.map +1 -1
  324. package/dist/utils/prompt-handler.d.ts +3 -0
  325. package/dist/utils/prompt-handler.js +13 -0
  326. package/dist/utils/prompt-handler.js.map +1 -1
  327. package/dist/utils/sandbox-storage.d.ts +6 -5
  328. package/dist/utils/sandbox-storage.js +12 -12
  329. package/dist/utils/sandbox-storage.js.map +1 -1
  330. package/dist/utils/sandbox.d.ts +7 -30
  331. package/dist/utils/sandbox.js +247 -223
  332. package/dist/utils/sandbox.js.map +1 -1
  333. package/dist/utils/semver.d.ts +12 -0
  334. package/dist/utils/semver.js +23 -0
  335. package/dist/utils/semver.js.map +1 -1
  336. package/dist/utils/sync-display.d.ts +9 -0
  337. package/dist/utils/sync-display.js +67 -0
  338. package/dist/utils/sync-display.js.map +1 -0
  339. package/dist/utils/sync-fetch.d.ts +23 -0
  340. package/dist/utils/sync-fetch.js +64 -0
  341. package/dist/utils/sync-fetch.js.map +1 -0
  342. package/dist/utils/sync-helpers.d.ts +4 -59
  343. package/dist/utils/sync-helpers.js +4 -206
  344. package/dist/utils/sync-helpers.js.map +1 -1
  345. package/dist/web/app.css +912 -186
  346. package/dist/web/app.js +46 -46
  347. package/docs/API_INDEX.md +100 -0
  348. package/docs/API_REFERENCE.md +773 -0
  349. package/docs/CLI_REFERENCE.md +924 -0
  350. package/docs/GETTING_STARTED.md +862 -0
  351. package/docs/README.md +270 -0
  352. package/docs/api/AI.md +882 -0
  353. package/docs/api/Baskets.md +511 -0
  354. package/docs/api/CDN.md +524 -0
  355. package/docs/api/Data.md +446 -0
  356. package/docs/api/Jobs.md +524 -0
  357. package/docs/api/LuaAgent.md +454 -0
  358. package/docs/api/LuaJob.md +604 -0
  359. package/docs/api/LuaSkill.md +396 -0
  360. package/docs/api/LuaTool.md +521 -0
  361. package/docs/api/LuaWebhook.md +601 -0
  362. package/docs/api/Orders.md +514 -0
  363. package/docs/api/PostProcessor.md +565 -0
  364. package/docs/api/PreProcessor.md +630 -0
  365. package/docs/api/Products.md +507 -0
  366. package/docs/api/Templates.md +662 -0
  367. package/docs/api/User.md +567 -0
  368. package/docs/archive/DEVELOPMENT_GUIDE_V1.md +1294 -0
  369. package/docs/compiler-v2/ASSESSMENT.md +205 -0
  370. package/docs/compiler-v2/TEST_PLAN.md +306 -0
  371. package/package.json +3 -7
  372. package/template/tsconfig.json +1 -1
  373. package/dist/common/basket.instance.js.map +0 -1
  374. package/dist/common/data.entry.instance.js.map +0 -1
  375. package/dist/common/http.client.js.map +0 -1
  376. package/dist/common/job.instance.js.map +0 -1
  377. package/dist/common/order.instance.js.map +0 -1
  378. package/dist/common/product.instance.js.map +0 -1
  379. package/dist/common/product.pagination.instance.js.map +0 -1
  380. package/dist/common/product.search.instance.js.map +0 -1
  381. package/dist/common/user.instance.js.map +0 -1
  382. package/dist/config/auth.constants.d.ts +0 -11
  383. package/dist/config/auth.constants.js +0 -12
  384. package/dist/config/auth.constants.js.map +0 -1
  385. package/dist/config/init.constants.d.ts +0 -15
  386. package/dist/config/init.constants.js +0 -20
  387. package/dist/config/init.constants.js.map +0 -1
  388. package/dist/interfaces/compile.d.ts +0 -12
  389. package/dist/interfaces/compile.js +0 -5
  390. package/dist/interfaces/compile.js.map +0 -1
  391. package/dist/types/compile.types.d.ts +0 -131
  392. package/dist/types/compile.types.js +0 -6
  393. package/dist/types/compile.types.js.map +0 -1
  394. package/dist/utils/agent-code-utils.d.ts +0 -25
  395. package/dist/utils/agent-code-utils.js +0 -107
  396. package/dist/utils/agent-code-utils.js.map +0 -1
  397. package/dist/utils/bundling.d.ts +0 -89
  398. package/dist/utils/bundling.js +0 -1068
  399. package/dist/utils/bundling.js.map +0 -1
  400. package/dist/utils/compile.d.ts +0 -116
  401. package/dist/utils/compile.js +0 -1062
  402. package/dist/utils/compile.js.map +0 -1
  403. package/dist/utils/deploy-api.d.ts +0 -26
  404. package/dist/utils/deploy-api.js +0 -54
  405. package/dist/utils/deploy-api.js.map +0 -1
  406. package/dist/utils/deployment.d.ts +0 -26
  407. package/dist/utils/deployment.js +0 -218
  408. package/dist/utils/deployment.js.map +0 -1
  409. package/dist/utils/dev-helpers.d.ts +0 -47
  410. package/dist/utils/dev-helpers.js +0 -82
  411. package/dist/utils/dev-helpers.js.map +0 -1
  412. package/dist/utils/job-management.d.ts +0 -27
  413. package/dist/utils/job-management.js +0 -248
  414. package/dist/utils/job-management.js.map +0 -1
  415. package/dist/utils/mcp-server-management.d.ts +0 -26
  416. package/dist/utils/mcp-server-management.js +0 -197
  417. package/dist/utils/mcp-server-management.js.map +0 -1
  418. package/dist/utils/postprocessor-management.d.ts +0 -9
  419. package/dist/utils/postprocessor-management.js +0 -117
  420. package/dist/utils/postprocessor-management.js.map +0 -1
  421. package/dist/utils/pre-bundle-jobs.d.ts +0 -27
  422. package/dist/utils/pre-bundle-jobs.js +0 -189
  423. package/dist/utils/pre-bundle-jobs.js.map +0 -1
  424. package/dist/utils/preprocessor-management.d.ts +0 -9
  425. package/dist/utils/preprocessor-management.js +0 -117
  426. package/dist/utils/preprocessor-management.js.map +0 -1
  427. package/dist/utils/push-api.d.ts +0 -15
  428. package/dist/utils/push-api.js +0 -49
  429. package/dist/utils/push-api.js.map +0 -1
  430. package/dist/utils/push-helpers.d.ts +0 -82
  431. package/dist/utils/push-helpers.js +0 -246
  432. package/dist/utils/push-helpers.js.map +0 -1
  433. package/dist/utils/skill-management.d.ts +0 -39
  434. package/dist/utils/skill-management.js +0 -299
  435. package/dist/utils/skill-management.js.map +0 -1
  436. package/dist/utils/test-helpers.d.ts +0 -33
  437. package/dist/utils/test-helpers.js +0 -84
  438. package/dist/utils/test-helpers.js.map +0 -1
  439. package/dist/utils/test-prompts.d.ts +0 -23
  440. package/dist/utils/test-prompts.js +0 -187
  441. package/dist/utils/test-prompts.js.map +0 -1
  442. package/dist/utils/tool-detection.d.ts +0 -19
  443. package/dist/utils/tool-detection.js +0 -125
  444. package/dist/utils/tool-detection.js.map +0 -1
  445. package/dist/utils/webhook-management.d.ts +0 -27
  446. package/dist/utils/webhook-management.js +0 -241
  447. package/dist/utils/webhook-management.js.map +0 -1
  448. /package/dist/{common → api}/http.client.d.ts +0 -0
  449. /package/dist/{common → api}/http.client.js +0 -0
  450. /package/dist/{common → instances}/basket.instance.d.ts +0 -0
  451. /package/dist/{common → instances}/basket.instance.js +0 -0
  452. /package/dist/{common → instances}/data.entry.instance.d.ts +0 -0
  453. /package/dist/{common → instances}/data.entry.instance.js +0 -0
  454. /package/dist/{common → instances}/job.instance.d.ts +0 -0
  455. /package/dist/{common → instances}/job.instance.js +0 -0
  456. /package/dist/{common → instances}/order.instance.d.ts +0 -0
  457. /package/dist/{common → instances}/order.instance.js +0 -0
  458. /package/dist/{common → instances}/product.instance.d.ts +0 -0
  459. /package/dist/{common → instances}/product.instance.js +0 -0
  460. /package/dist/{common → instances}/product.pagination.instance.d.ts +0 -0
  461. /package/dist/{common → instances}/product.pagination.instance.js +0 -0
  462. /package/dist/{common → instances}/product.search.instance.d.ts +0 -0
  463. /package/dist/{common → instances}/product.search.instance.js +0 -0
  464. /package/dist/{common → instances}/user.instance.d.ts +0 -0
  465. /package/dist/{common → instances}/user.instance.js +0 -0
@@ -0,0 +1,42 @@
1
+ /**
2
+ * @lua/compiler - Compiler for Lua AI agent primitives
3
+ *
4
+ * This package provides the compilation infrastructure for Lua agents.
5
+ * It transforms TypeScript source code into optimized, sandboxed artifacts.
6
+ *
7
+ * @example
8
+ * ```typescript
9
+ * import { compile } from '@lua/compiler';
10
+ *
11
+ * const result = await compile({
12
+ * rootDir: process.cwd(),
13
+ * outDir: 'dist',
14
+ * });
15
+ *
16
+ * if (result.success) {
17
+ * console.log(`Compiled ${result.stats.totalPrimitives} primitives`);
18
+ * }
19
+ * ```
20
+ */
21
+ // Main compiler
22
+ export { Compiler, compile } from './compiler.js';
23
+ // Plugin system
24
+ export { pluginRegistry, PluginRegistry, getAllDefineFunctions, getPluginByDefineFunction, } from './plugins/registry.js';
25
+ // Helper functions
26
+ export { validResult, validationError, validationWarning, } from './plugins/base.js';
27
+ // Built-in plugins
28
+ export { ToolPlugin } from './plugins/tool.plugin.js';
29
+ export { JobPlugin } from './plugins/job.plugin.js';
30
+ export { WebhookPlugin } from './plugins/webhook.plugin.js';
31
+ export { PreProcessorPlugin } from './plugins/preprocessor.plugin.js';
32
+ export { PostProcessorPlugin } from './plugins/postprocessor.plugin.js';
33
+ export { MCPServerPlugin } from './plugins/mcp-server.plugin.js';
34
+ export { SkillPlugin } from './plugins/skill.plugin.js';
35
+ // Utilities
36
+ export { extractStringProperty, extractBooleanProperty, extractNumberProperty, extractObjectProperty, extractSchemaProperty, hasProperty, getPropertyNames, isFunction, getFunctionBody, findImportSource, } from './utils/ast-helpers.js';
37
+ export { zodToJsonSchema, zodStringToJsonSchema, } from './utils/schema-converter.js';
38
+ // Source writing (generic + convenience)
39
+ export { updateAgentConfig, setAgentName, setAgentPersona, } from './source-writer.js';
40
+ // File discovery
41
+ export { findEntryPoint, findIndexFile, getEntryPointPriority, } from './utils/file-discovery.js';
42
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/compiler/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;GAmBG;AAEH,gBAAgB;AAChB,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,eAAe,CAAC;AAqDlD,gBAAgB;AAChB,OAAO,EACL,cAAc,EACd,cAAc,EACd,qBAAqB,EACrB,yBAAyB,GAC1B,MAAM,uBAAuB,CAAC;AAE/B,mBAAmB;AACnB,OAAO,EACL,WAAW,EACX,eAAe,EACf,iBAAiB,GAClB,MAAM,mBAAmB,CAAC;AAE3B,mBAAmB;AACnB,OAAO,EAAE,UAAU,EAAE,MAAM,0BAA0B,CAAC;AACtD,OAAO,EAAE,SAAS,EAAE,MAAM,yBAAyB,CAAC;AACpD,OAAO,EAAE,aAAa,EAAE,MAAM,6BAA6B,CAAC;AAC5D,OAAO,EAAE,kBAAkB,EAAE,MAAM,kCAAkC,CAAC;AACtE,OAAO,EAAE,mBAAmB,EAAE,MAAM,mCAAmC,CAAC;AACxE,OAAO,EAAE,eAAe,EAAE,MAAM,gCAAgC,CAAC;AACjE,OAAO,EAAE,WAAW,EAAE,MAAM,2BAA2B,CAAC;AAExD,YAAY;AACZ,OAAO,EACL,qBAAqB,EACrB,sBAAsB,EACtB,qBAAqB,EACrB,qBAAqB,EACrB,qBAAqB,EACrB,WAAW,EACX,gBAAgB,EAChB,UAAU,EACV,eAAe,EACf,gBAAgB,GACjB,MAAM,wBAAwB,CAAC;AAEhC,OAAO,EACL,eAAe,EACf,qBAAqB,GACtB,MAAM,6BAA6B,CAAC;AAErC,yCAAyC;AACzC,OAAO,EACL,iBAAiB,EACjB,YAAY,EACZ,eAAe,GAEhB,MAAM,oBAAoB,CAAC;AAE5B,iBAAiB;AACjB,OAAO,EACL,cAAc,EACd,aAAa,EACb,qBAAqB,GACtB,MAAM,2BAA2B,CAAC"}
@@ -0,0 +1,264 @@
1
+ /**
2
+ * Plugin Base
3
+ *
4
+ * Contains:
5
+ * - CompilationPlugin interface (contract)
6
+ * - BasePlugin abstract class (common implementation)
7
+ * - Helper functions
8
+ *
9
+ * Data types are in ../types.ts
10
+ */
11
+ import { SourceFile, Project, ObjectLiteralExpression } from 'ts-morph';
12
+ import type { PrimitiveMetadata, CommonExtractedFields, ValidationResult, ValidationMessage, SchemaSet, BundledArtifact, CompiledPrimitive, ManifestPrimitive, ManifestContext, BaseMetadataFields } from '../types.js';
13
+ /**
14
+ * Context for resolving references between primitives.
15
+ * Passed to plugins when they need to resolve dependencies.
16
+ */
17
+ export interface ReferenceResolverContext {
18
+ /** The ts-morph project for AST analysis */
19
+ project: Project;
20
+ /** Resolve an import specifier to absolute path */
21
+ resolveImportPath: (specifier: string, fromFile: string) => string | null;
22
+ /** Get a plugin by kind */
23
+ getPlugin: (kind: string) => CompilationPlugin | undefined;
24
+ /** Debug logging */
25
+ log: (message: string) => void;
26
+ }
27
+ /**
28
+ * Plugin for compiling a specific primitive type.
29
+ *
30
+ * Implement this interface to add support for a new primitive.
31
+ * Each method has a single responsibility:
32
+ *
33
+ * - detect: Find primitives in source files
34
+ * - validate: Check for errors/warnings
35
+ * - generateEntryPoint: Create the bundler entry point
36
+ * - extractSchemas: Convert Zod → JSON Schema
37
+ * - postProcess: Transform the bundled output
38
+ */
39
+ export interface CompilationPlugin {
40
+ /**
41
+ * Unique identifier matching the primitive's 'kind' property.
42
+ * Must match exactly what users write in their code.
43
+ */
44
+ readonly kind: string;
45
+ /**
46
+ * Human-readable name for CLI output and error messages.
47
+ */
48
+ readonly displayName: string;
49
+ /**
50
+ * The function name that creates this primitive (e.g., 'defineTool').
51
+ * Used for detection in source files.
52
+ */
53
+ readonly defineFunction: string;
54
+ /**
55
+ * Detect primitives of this type in a source file.
56
+ *
57
+ * Called once per source file during the scanning phase.
58
+ * Should be fast - don't do heavy processing here.
59
+ *
60
+ * @param sourceFile - The ts-morph source file to scan
61
+ * @returns Array of detected primitives
62
+ */
63
+ detect(sourceFile: SourceFile): PrimitiveMetadata[];
64
+ /**
65
+ * Validate extracted metadata.
66
+ *
67
+ * Called after detection. Return errors for things that prevent
68
+ * compilation, warnings for things that might be problems.
69
+ *
70
+ * @param metadata - The primitive metadata to validate
71
+ * @returns Validation result with errors and warnings
72
+ */
73
+ validate(metadata: PrimitiveMetadata): ValidationResult;
74
+ /**
75
+ * Generate the entry point code for bundling.
76
+ *
77
+ * This creates a wrapper that:
78
+ * 1. Imports the user's primitive
79
+ * 2. Re-exports it in a standard format
80
+ * 3. Includes runtime metadata
81
+ *
82
+ * @param metadata - The primitive metadata
83
+ * @returns TypeScript code for the entry point
84
+ */
85
+ generateEntryPoint(metadata: PrimitiveMetadata): string;
86
+ /**
87
+ * Extract schemas and convert to JSON Schema format.
88
+ *
89
+ * Called after detection. Uses ts-morph to evaluate Zod
90
+ * schemas in the source code.
91
+ *
92
+ * @param metadata - The primitive metadata
93
+ * @param project - The ts-morph project
94
+ * @returns Schema set or undefined if no schemas
95
+ */
96
+ extractSchemas?(metadata: PrimitiveMetadata, project: Project): Promise<SchemaSet | undefined>;
97
+ /**
98
+ * Post-process the bundled artifact.
99
+ *
100
+ * Called after esbuild bundling. Can add runtime wrappers,
101
+ * validation code, or other transformations.
102
+ *
103
+ * @param artifact - The bundled artifact
104
+ * @param metadata - The primitive metadata
105
+ * @returns Transformed artifact
106
+ */
107
+ postProcess?(artifact: BundledArtifact, metadata: PrimitiveMetadata): BundledArtifact;
108
+ /**
109
+ * Create the manifest entry for this primitive.
110
+ *
111
+ * Each plugin knows what fields its manifest entry needs.
112
+ * This keeps primitive-specific logic in the plugins.
113
+ * May be async for plugins that need additional processing (e.g., bundling resolvers).
114
+ *
115
+ * @param compiled - The compiled primitive data
116
+ * @param context - Additional context (e.g., agent primitives, output directory)
117
+ * @returns The typed manifest entry for this primitive
118
+ */
119
+ toManifestEntry(compiled: CompiledPrimitive, context?: ManifestContext): ManifestPrimitive | Promise<ManifestPrimitive>;
120
+ /**
121
+ * Resolve references to other primitives.
122
+ *
123
+ * Some primitives reference others (e.g., Skills reference Tools).
124
+ * This method allows plugins to resolve those references and return
125
+ * the additional primitives that should be compiled.
126
+ *
127
+ * @param metadata - The primitive that may have references
128
+ * @param sourceFile - The source file containing the primitive
129
+ * @param context - Context for resolving imports and getting plugins
130
+ * @returns Array of referenced primitives, empty if none
131
+ */
132
+ resolveReferences?(metadata: PrimitiveMetadata, sourceFile: SourceFile, context: ReferenceResolverContext): PrimitiveMetadata[];
133
+ }
134
+ /**
135
+ * Abstract base class for plugins with common implementation.
136
+ *
137
+ * Provides default implementations for:
138
+ * - detect() - Function-based and class-based detection
139
+ * - generateEntryPoint() - Universal import pattern
140
+ * - postProcess() - Runtime validation wrapper
141
+ * - extractSchemas() - Returns undefined (override for tools/webhooks)
142
+ *
143
+ * Subclasses must implement:
144
+ * - kind, displayName, defineFunction, legacyClassNames
145
+ * - extractFromConfig() - Extract primitive-specific fields
146
+ * - validate() - Validation rules
147
+ * - toManifestEntry() - Manifest entry creation
148
+ *
149
+ * Subclasses can optionally override:
150
+ * - getEntryPointFields() - Add extra fields to __lua_primitive__
151
+ * - getRuntimeValidation() - Add runtime checks in postProcess
152
+ * - resolveReferences() - Resolve dependencies (skills → tools)
153
+ */
154
+ export declare abstract class BasePlugin<T extends BaseMetadataFields = BaseMetadataFields> implements CompilationPlugin {
155
+ /** Unique identifier for this primitive type */
156
+ abstract readonly kind: string;
157
+ /** Human-readable name for CLI output */
158
+ abstract readonly displayName: string;
159
+ /** Function name for detection (e.g., 'defineTool') */
160
+ abstract readonly defineFunction: string;
161
+ /** Legacy class names for constructor-based detection (e.g., ['LuaJob']) */
162
+ abstract readonly legacyClassNames: string[];
163
+ /**
164
+ * Detect primitives in a source file.
165
+ * Handles both function-based (defineX) and class-based (new LuaX) patterns.
166
+ */
167
+ detect(sourceFile: SourceFile): PrimitiveMetadata<T>[];
168
+ /**
169
+ * Detect function-based definitions (defineX pattern):
170
+ *
171
+ * Supported patterns:
172
+ * - const/let/var x = defineX({ ... })
173
+ * - export const/let/var x = defineX({ ... })
174
+ * - export default defineX({ ... })
175
+ */
176
+ protected detectFunctionBased(sourceFile: SourceFile, primitives: PrimitiveMetadata<T>[]): void;
177
+ /**
178
+ * Detect class-based definitions (new LuaX pattern):
179
+ *
180
+ * Supported patterns:
181
+ * - const/let/var x = new LuaX({ ... })
182
+ * - export const/let/var x = new LuaX({ ... })
183
+ * - export default new LuaX({ ... })
184
+ */
185
+ protected detectClassBased(sourceFile: SourceFile, primitives: PrimitiveMetadata<T>[]): void;
186
+ /**
187
+ * Helper to detect export default patterns.
188
+ * Works for both function-based (defineX) and class-based (new LuaX) patterns.
189
+ *
190
+ * Sets exportName='default' which causes extractCommonFields to set isDefaultExport=true.
191
+ */
192
+ private detectDefaultExport;
193
+ /**
194
+ * Extract metadata from config object literal.
195
+ * Subclasses implement this to extract primitive-specific fields.
196
+ *
197
+ * Common fields (name, description) can use extractCommonFields().
198
+ */
199
+ protected abstract extractFromConfig(config: ObjectLiteralExpression, exportName: string, sourcePath: string, position: {
200
+ line: number;
201
+ column: number;
202
+ }, pattern: 'function' | 'class'): PrimitiveMetadata<T> | null;
203
+ /**
204
+ * Helper to extract common fields (name, description) from config.
205
+ * Returns null if name is missing.
206
+ *
207
+ * Automatically sets `isDefaultExport: true` when `exportName === 'default'`.
208
+ */
209
+ protected extractCommonFields(config: ObjectLiteralExpression, exportName: string, sourcePath: string, position: {
210
+ line: number;
211
+ column: number;
212
+ }): CommonExtractedFields | null;
213
+ abstract validate(metadata: PrimitiveMetadata<T>): ValidationResult;
214
+ /**
215
+ * Generate entry point code for bundling.
216
+ *
217
+ * Uses `import { __lua_target__ as X }` which is provided by the compiler's
218
+ * virtual source plugin. This works uniformly regardless of how the primitive
219
+ * is exported (default, named, or not exported at all).
220
+ */
221
+ generateEntryPoint(metadata: PrimitiveMetadata<T>): string;
222
+ /**
223
+ * Override to add extra fields to __lua_primitive__ object.
224
+ * Return a string like: `context: "some value",\n tools: ["tool1"]`
225
+ */
226
+ protected getEntryPointFields(_metadata: PrimitiveMetadata<T>): string;
227
+ /**
228
+ * Extract schemas from the primitive.
229
+ * Override for primitives that have schemas (tools, webhooks).
230
+ */
231
+ extractSchemas(_metadata: PrimitiveMetadata<T>, _project: Project): Promise<SchemaSet | undefined>;
232
+ /**
233
+ * Post-process bundled artifact with runtime validation wrapper.
234
+ */
235
+ postProcess(artifact: BundledArtifact, metadata: PrimitiveMetadata<T>): BundledArtifact;
236
+ /**
237
+ * Override to add extra runtime validation in postProcess.
238
+ * Return JavaScript code to add to the validation IIFE.
239
+ */
240
+ protected getRuntimeValidation(_metadata: PrimitiveMetadata<T>): string;
241
+ abstract toManifestEntry(compiled: CompiledPrimitive, context?: ManifestContext): ManifestPrimitive | Promise<ManifestPrimitive>;
242
+ }
243
+ /**
244
+ * Creates a validation result with no errors or warnings.
245
+ */
246
+ export declare function validResult(): ValidationResult;
247
+ /**
248
+ * Creates a validation error.
249
+ */
250
+ export declare function validationError(message: string, options?: {
251
+ line?: number;
252
+ column?: number;
253
+ suggestion?: string;
254
+ docsUrl?: string;
255
+ }): ValidationMessage;
256
+ /**
257
+ * Creates a validation warning.
258
+ */
259
+ export declare function validationWarning(message: string, options?: {
260
+ line?: number;
261
+ column?: number;
262
+ suggestion?: string;
263
+ docsUrl?: string;
264
+ }): ValidationMessage;
@@ -0,0 +1,307 @@
1
+ /**
2
+ * Plugin Base
3
+ *
4
+ * Contains:
5
+ * - CompilationPlugin interface (contract)
6
+ * - BasePlugin abstract class (common implementation)
7
+ * - Helper functions
8
+ *
9
+ * Data types are in ../types.ts
10
+ */
11
+ import { Node } from 'ts-morph';
12
+ import { extractStringProperty } from '../utils/ast-helpers.js';
13
+ // =============================================================================
14
+ // BASE PLUGIN ABSTRACT CLASS
15
+ // =============================================================================
16
+ /**
17
+ * Abstract base class for plugins with common implementation.
18
+ *
19
+ * Provides default implementations for:
20
+ * - detect() - Function-based and class-based detection
21
+ * - generateEntryPoint() - Universal import pattern
22
+ * - postProcess() - Runtime validation wrapper
23
+ * - extractSchemas() - Returns undefined (override for tools/webhooks)
24
+ *
25
+ * Subclasses must implement:
26
+ * - kind, displayName, defineFunction, legacyClassNames
27
+ * - extractFromConfig() - Extract primitive-specific fields
28
+ * - validate() - Validation rules
29
+ * - toManifestEntry() - Manifest entry creation
30
+ *
31
+ * Subclasses can optionally override:
32
+ * - getEntryPointFields() - Add extra fields to __lua_primitive__
33
+ * - getRuntimeValidation() - Add runtime checks in postProcess
34
+ * - resolveReferences() - Resolve dependencies (skills → tools)
35
+ */
36
+ export class BasePlugin {
37
+ // ===========================================================================
38
+ // DETECTION (common implementation)
39
+ // ===========================================================================
40
+ /**
41
+ * Detect primitives in a source file.
42
+ * Handles both function-based (defineX) and class-based (new LuaX) patterns.
43
+ */
44
+ detect(sourceFile) {
45
+ const primitives = [];
46
+ // Pattern 1: Function-based - defineX({ ... })
47
+ this.detectFunctionBased(sourceFile, primitives);
48
+ // Pattern 2: Class-based - new LuaX({ ... })
49
+ this.detectClassBased(sourceFile, primitives);
50
+ return primitives;
51
+ }
52
+ /**
53
+ * Detect function-based definitions (defineX pattern):
54
+ *
55
+ * Supported patterns:
56
+ * - const/let/var x = defineX({ ... })
57
+ * - export const/let/var x = defineX({ ... })
58
+ * - export default defineX({ ... })
59
+ */
60
+ detectFunctionBased(sourceFile, primitives) {
61
+ // Pattern 1: Variable declarations - const/let/var x = defineX({ ... })
62
+ // Also covers: export const/let/var x = defineX({ ... })
63
+ sourceFile.getVariableDeclarations().forEach(varDecl => {
64
+ const initializer = varDecl.getInitializer();
65
+ if (!initializer || !Node.isCallExpression(initializer))
66
+ return;
67
+ const callee = initializer.getExpression();
68
+ if (callee.getText() !== this.defineFunction)
69
+ return;
70
+ const args = initializer.getArguments();
71
+ if (args.length === 0)
72
+ return;
73
+ const configArg = args[0];
74
+ if (!Node.isObjectLiteralExpression(configArg))
75
+ return;
76
+ const pos = sourceFile.getLineAndColumnAtPos(varDecl.getStart());
77
+ const metadata = this.extractFromConfig(configArg, varDecl.getName(), sourceFile.getFilePath(), pos, 'function');
78
+ if (metadata)
79
+ primitives.push(metadata);
80
+ });
81
+ // Pattern 2: Export default - export default defineX({ ... })
82
+ this.detectDefaultExport(sourceFile, primitives, 'function', (expr) => {
83
+ if (!Node.isCallExpression(expr))
84
+ return null;
85
+ const callee = expr.getExpression();
86
+ if (callee.getText() !== this.defineFunction)
87
+ return null;
88
+ const args = expr.getArguments();
89
+ if (args.length === 0 || !Node.isObjectLiteralExpression(args[0]))
90
+ return null;
91
+ return args[0];
92
+ });
93
+ }
94
+ /**
95
+ * Detect class-based definitions (new LuaX pattern):
96
+ *
97
+ * Supported patterns:
98
+ * - const/let/var x = new LuaX({ ... })
99
+ * - export const/let/var x = new LuaX({ ... })
100
+ * - export default new LuaX({ ... })
101
+ */
102
+ detectClassBased(sourceFile, primitives) {
103
+ // Track which nodes we've already processed to avoid duplicates
104
+ const processedNodes = new Set();
105
+ // Pattern 1: Variable declarations - const/let/var x = new LuaX({ ... })
106
+ // Also covers: export const/let/var x = new LuaX({ ... })
107
+ sourceFile.getVariableDeclarations().forEach(varDecl => {
108
+ const initializer = varDecl.getInitializer();
109
+ if (!initializer || !Node.isNewExpression(initializer))
110
+ return;
111
+ const expression = initializer.getExpression();
112
+ const className = expression.getText();
113
+ if (!this.legacyClassNames.includes(className))
114
+ return;
115
+ const args = initializer.getArguments();
116
+ if (args.length === 0)
117
+ return;
118
+ const configArg = args[0];
119
+ if (!Node.isObjectLiteralExpression(configArg))
120
+ return;
121
+ processedNodes.add(initializer.getStart());
122
+ const pos = sourceFile.getLineAndColumnAtPos(varDecl.getStart());
123
+ const metadata = this.extractFromConfig(configArg, varDecl.getName(), sourceFile.getFilePath(), pos, 'class');
124
+ if (metadata)
125
+ primitives.push(metadata);
126
+ });
127
+ // Pattern 2: Export default - export default new LuaX({ ... })
128
+ this.detectDefaultExport(sourceFile, primitives, 'class', (expr) => {
129
+ if (!Node.isNewExpression(expr))
130
+ return null;
131
+ // Skip if already processed as variable declaration
132
+ if (processedNodes.has(expr.getStart()))
133
+ return null;
134
+ const expression = expr.getExpression();
135
+ const className = expression.getText();
136
+ if (!this.legacyClassNames.includes(className))
137
+ return null;
138
+ const args = expr.getArguments();
139
+ if (args.length === 0 || !Node.isObjectLiteralExpression(args[0]))
140
+ return null;
141
+ return args[0];
142
+ });
143
+ }
144
+ /**
145
+ * Helper to detect export default patterns.
146
+ * Works for both function-based (defineX) and class-based (new LuaX) patterns.
147
+ *
148
+ * Sets exportName='default' which causes extractCommonFields to set isDefaultExport=true.
149
+ */
150
+ detectDefaultExport(sourceFile, primitives, pattern, extractConfig) {
151
+ sourceFile.forEachDescendant(node => {
152
+ if (!Node.isExportAssignment(node))
153
+ return;
154
+ const expr = node.getExpression();
155
+ const configArg = extractConfig(expr);
156
+ if (!configArg)
157
+ return;
158
+ const pos = sourceFile.getLineAndColumnAtPos(node.getStart());
159
+ const metadata = this.extractFromConfig(configArg, 'default', // Triggers isDefaultExport=true in extractCommonFields
160
+ sourceFile.getFilePath(), pos, pattern);
161
+ if (metadata)
162
+ primitives.push(metadata);
163
+ });
164
+ }
165
+ /**
166
+ * Helper to extract common fields (name, description) from config.
167
+ * Returns null if name is missing.
168
+ *
169
+ * Automatically sets `isDefaultExport: true` when `exportName === 'default'`.
170
+ */
171
+ extractCommonFields(config, exportName, sourcePath, position) {
172
+ const name = extractStringProperty(config, 'name');
173
+ if (!name)
174
+ return null;
175
+ return {
176
+ name,
177
+ description: extractStringProperty(config, 'description') || '',
178
+ exportName,
179
+ isDefaultExport: exportName === 'default',
180
+ sourcePath,
181
+ line: position.line,
182
+ column: position.column,
183
+ };
184
+ }
185
+ // ===========================================================================
186
+ // ENTRY POINT GENERATION (common implementation)
187
+ // ===========================================================================
188
+ /**
189
+ * Generate entry point code for bundling.
190
+ *
191
+ * Uses `import { __lua_target__ as X }` which is provided by the compiler's
192
+ * virtual source plugin. This works uniformly regardless of how the primitive
193
+ * is exported (default, named, or not exported at all).
194
+ */
195
+ generateEntryPoint(metadata) {
196
+ const extraFields = this.getEntryPointFields(metadata);
197
+ const extraFieldsStr = extraFields ? `\n ${extraFields}` : '';
198
+ // Default exports use `import X from` syntax directly.
199
+ // Named exports use the __lua_target__ alias injected by the virtual source plugin.
200
+ const importStatement = metadata.isDefaultExport
201
+ ? `import __primitive__ from '${metadata.sourcePath}';`
202
+ : `import { __lua_target__ as __primitive__ } from '${metadata.sourcePath}';`;
203
+ return `
204
+ // =============================================================================
205
+ // AUTO-GENERATED ENTRY POINT
206
+ // ${this.displayName}: ${metadata.name}
207
+ // Source: ${metadata.sourcePath}
208
+ // =============================================================================
209
+
210
+ ${importStatement}
211
+
212
+ const __lua_primitive__ = {
213
+ version: '2.0.0',
214
+ kind: '${this.kind}',
215
+ name: ${JSON.stringify(metadata.name)},
216
+ description: ${JSON.stringify(metadata.description)},
217
+ exportName: ${JSON.stringify(metadata.exportName)},${extraFieldsStr}
218
+ };
219
+
220
+ export default {
221
+ __lua_primitive__,
222
+ primitive: __primitive__,
223
+ };
224
+ `;
225
+ }
226
+ /**
227
+ * Override to add extra fields to __lua_primitive__ object.
228
+ * Return a string like: `context: "some value",\n tools: ["tool1"]`
229
+ */
230
+ getEntryPointFields(_metadata) {
231
+ return '';
232
+ }
233
+ // ===========================================================================
234
+ // SCHEMA EXTRACTION (default: no schemas)
235
+ // ===========================================================================
236
+ /**
237
+ * Extract schemas from the primitive.
238
+ * Override for primitives that have schemas (tools, webhooks).
239
+ */
240
+ async extractSchemas(_metadata, _project) {
241
+ return undefined;
242
+ }
243
+ // ===========================================================================
244
+ // POST PROCESSING (common implementation)
245
+ // ===========================================================================
246
+ /**
247
+ * Post-process bundled artifact with runtime validation wrapper.
248
+ */
249
+ postProcess(artifact, metadata) {
250
+ const extraValidation = this.getRuntimeValidation(metadata);
251
+ const extraValidationStr = extraValidation ? `\n ${extraValidation}` : '';
252
+ const wrappedCode = `
253
+ // =============================================================================
254
+ // LUA RUNTIME WRAPPER - ${this.displayName}: ${metadata.name}
255
+ // =============================================================================
256
+
257
+ ${artifact.code}
258
+
259
+ (function() {
260
+ const mod = typeof module !== 'undefined' ? module.exports : {};
261
+ const primitive = mod.default;
262
+
263
+ if (!primitive || !primitive.__lua_primitive__) {
264
+ throw new Error('[Lua] Invalid ${this.kind} artifact: missing __lua_primitive__ marker');
265
+ }
266
+
267
+ if (primitive.__lua_primitive__.kind !== '${this.kind}') {
268
+ throw new Error('[Lua] Invalid ${this.kind} artifact: expected kind "${this.kind}"');
269
+ }${extraValidationStr}
270
+ })();
271
+ `;
272
+ return {
273
+ ...artifact,
274
+ code: wrappedCode,
275
+ size: Buffer.byteLength(wrappedCode, 'utf8'),
276
+ };
277
+ }
278
+ /**
279
+ * Override to add extra runtime validation in postProcess.
280
+ * Return JavaScript code to add to the validation IIFE.
281
+ */
282
+ getRuntimeValidation(_metadata) {
283
+ return '';
284
+ }
285
+ }
286
+ // =============================================================================
287
+ // HELPER FUNCTIONS
288
+ // =============================================================================
289
+ /**
290
+ * Creates a validation result with no errors or warnings.
291
+ */
292
+ export function validResult() {
293
+ return { valid: true, errors: [], warnings: [] };
294
+ }
295
+ /**
296
+ * Creates a validation error.
297
+ */
298
+ export function validationError(message, options) {
299
+ return { message, ...options };
300
+ }
301
+ /**
302
+ * Creates a validation warning.
303
+ */
304
+ export function validationWarning(message, options) {
305
+ return { message, ...options };
306
+ }
307
+ //# sourceMappingURL=base.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"base.js","sourceRoot":"","sources":["../../../src/compiler/plugins/base.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,33 @@
1
+ /**
2
+ * Job compilation plugin.
3
+ *
4
+ * BACKWARD COMPATIBLE: Detects BOTH patterns:
5
+ * 1. Class-based (legacy): new LuaJob({ ... })
6
+ * 2. Function-based (new): const myJob = defineJob({ ... })
7
+ */
8
+ import { ObjectLiteralExpression } from 'ts-morph';
9
+ import { type JobMetadata, type JobMetadataFields, type ValidationResult, type ManifestContext, type CompiledPrimitive, type ManifestPrimitive } from '../types.js';
10
+ import { BasePlugin } from './base.js';
11
+ /**
12
+ * Plugin for compiling job primitives.
13
+ * Extends BasePlugin for common detection/entry point/postProcess logic.
14
+ */
15
+ export declare class JobPlugin extends BasePlugin<JobMetadataFields> {
16
+ readonly kind = "job";
17
+ readonly displayName = "Job";
18
+ readonly defineFunction = "defineJob";
19
+ readonly legacyClassNames: string[];
20
+ /**
21
+ * Extract metadata from job config object.
22
+ */
23
+ protected extractFromConfig(config: ObjectLiteralExpression, exportName: string, sourcePath: string, position: {
24
+ line: number;
25
+ column: number;
26
+ }, pattern: 'function' | 'class'): JobMetadata | null;
27
+ validate(metadata: JobMetadata): ValidationResult;
28
+ /**
29
+ * Add runtime validation for executeFunction (LuaJob uses this internally).
30
+ */
31
+ protected getRuntimeValidation(): string;
32
+ toManifestEntry(compiled: CompiledPrimitive, _context?: ManifestContext): ManifestPrimitive;
33
+ }