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.
- package/README.md +137 -689
- package/dist/api/agent.api.service.d.ts +1 -8
- package/dist/api/agent.api.service.js +1 -11
- package/dist/api/agent.api.service.js.map +1 -1
- package/dist/api/auth.api.service.d.ts +1 -1
- package/dist/api/auth.api.service.js +1 -1
- package/dist/api/auth.api.service.js.map +1 -1
- package/dist/api/backup.api.service.d.ts +80 -0
- package/dist/api/backup.api.service.js +101 -0
- package/dist/api/backup.api.service.js.map +1 -0
- package/dist/api/basket.api.service.d.ts +4 -5
- package/dist/api/basket.api.service.js +13 -18
- package/dist/api/basket.api.service.js.map +1 -1
- package/dist/api/cdn.api.service.d.ts +2 -0
- package/dist/api/cdn.api.service.js +2 -0
- package/dist/api/cdn.api.service.js.map +1 -1
- package/dist/api/chat.api.service.d.ts +10 -2
- package/dist/api/chat.api.service.js +21 -2
- package/dist/api/chat.api.service.js.map +1 -1
- package/dist/api/credentials.js +5 -8
- package/dist/api/credentials.js.map +1 -1
- package/dist/api/custom.data.api.service.d.ts +3 -3
- package/dist/api/custom.data.api.service.js +9 -10
- package/dist/api/custom.data.api.service.js.map +1 -1
- package/dist/api/developer.api.service.d.ts +1 -1
- package/dist/api/developer.api.service.js +1 -1
- package/dist/api/developer.api.service.js.map +1 -1
- package/dist/api/http.client.js.map +1 -0
- package/dist/api/job.api.service.d.ts +2 -2
- package/dist/api/job.api.service.js +2 -2
- package/dist/api/job.api.service.js.map +1 -1
- package/dist/api/logs.api.service.d.ts +1 -1
- package/dist/api/logs.api.service.js +1 -1
- package/dist/api/logs.api.service.js.map +1 -1
- package/dist/api/marketplace.api.service.d.ts +6 -6
- package/dist/api/marketplace.api.service.js.map +1 -1
- package/dist/api/order.api.service.d.ts +3 -4
- package/dist/api/order.api.service.js +8 -10
- package/dist/api/order.api.service.js.map +1 -1
- package/dist/api/persona.api.service.d.ts +1 -1
- package/dist/api/persona.api.service.js +1 -1
- package/dist/api/persona.api.service.js.map +1 -1
- package/dist/api/postprocessor.api.service.d.ts +1 -1
- package/dist/api/postprocessor.api.service.js +1 -1
- package/dist/api/postprocessor.api.service.js.map +1 -1
- package/dist/api/preprocessor.api.service.d.ts +1 -1
- package/dist/api/preprocessor.api.service.js +1 -1
- package/dist/api/preprocessor.api.service.js.map +1 -1
- package/dist/api/products.api.service.d.ts +4 -4
- package/dist/api/products.api.service.js +6 -6
- package/dist/api/products.api.service.js.map +1 -1
- package/dist/api/resource.api.service.d.ts +76 -0
- package/dist/api/resource.api.service.js +74 -0
- package/dist/api/resource.api.service.js.map +1 -0
- package/dist/api/skills.api.service.d.ts +7 -15
- package/dist/api/skills.api.service.js +1 -1
- package/dist/api/skills.api.service.js.map +1 -1
- package/dist/api/tool.api.service.d.ts +1 -1
- package/dist/api/tool.api.service.js +1 -1
- package/dist/api/tool.api.service.js.map +1 -1
- package/dist/api/unifiedto.api.service.d.ts +1 -1
- package/dist/api/unifiedto.api.service.js +1 -1
- package/dist/api/unifiedto.api.service.js.map +1 -1
- package/dist/api/user.data.api.service.d.ts +7 -8
- package/dist/api/user.data.api.service.js +2 -3
- package/dist/api/user.data.api.service.js.map +1 -1
- package/dist/api/webhook.api.service.d.ts +1 -1
- package/dist/api/webhook.api.service.js +1 -1
- package/dist/api/webhook.api.service.js.map +1 -1
- package/dist/api/whatsapp-templates.api.service.d.ts +1 -1
- package/dist/api/whatsapp-templates.api.service.js +1 -1
- package/dist/api/whatsapp-templates.api.service.js.map +1 -1
- package/dist/api-exports.d.ts +14 -12
- package/dist/api-exports.js +8 -8
- package/dist/api-exports.js.map +1 -1
- package/dist/cli/command-definitions.js +32 -17
- package/dist/cli/command-definitions.js.map +1 -1
- package/dist/commands/admin.js +3 -24
- package/dist/commands/admin.js.map +1 -1
- package/dist/commands/agents.d.ts +8 -7
- package/dist/commands/agents.js +63 -21
- package/dist/commands/agents.js.map +1 -1
- package/dist/commands/channels.js +11 -23
- package/dist/commands/channels.js.map +1 -1
- package/dist/commands/chat.js +33 -47
- package/dist/commands/chat.js.map +1 -1
- package/dist/commands/chatClear.js +11 -41
- package/dist/commands/chatClear.js.map +1 -1
- package/dist/commands/compile.d.ts +26 -23
- package/dist/commands/compile.js +98 -403
- package/dist/commands/compile.js.map +1 -1
- package/dist/commands/completion.js +1 -1
- package/dist/commands/completion.js.map +1 -1
- package/dist/commands/deploy.js +55 -25
- package/dist/commands/deploy.js.map +1 -1
- package/dist/commands/dev.js +29 -45
- package/dist/commands/dev.js.map +1 -1
- package/dist/commands/env.js +12 -25
- package/dist/commands/env.js.map +1 -1
- package/dist/commands/evals.js +3 -20
- package/dist/commands/evals.js.map +1 -1
- package/dist/commands/features.js +10 -23
- package/dist/commands/features.js.map +1 -1
- package/dist/commands/index.d.ts +1 -0
- package/dist/commands/index.js +1 -0
- package/dist/commands/index.js.map +1 -1
- package/dist/commands/init.d.ts +1 -0
- package/dist/commands/init.js +135 -19
- package/dist/commands/init.js.map +1 -1
- package/dist/commands/integrations.js +26 -37
- package/dist/commands/integrations.js.map +1 -1
- package/dist/commands/jobs.js +32 -56
- package/dist/commands/jobs.js.map +1 -1
- package/dist/commands/logs.js +9 -20
- package/dist/commands/logs.js.map +1 -1
- package/dist/commands/marketplace.js +34 -52
- package/dist/commands/marketplace.js.map +1 -1
- package/dist/commands/mcp.js +10 -23
- package/dist/commands/mcp.js.map +1 -1
- package/dist/commands/persona.js +43 -74
- package/dist/commands/persona.js.map +1 -1
- package/dist/commands/postprocessors.js +15 -28
- package/dist/commands/postprocessors.js.map +1 -1
- package/dist/commands/preprocessors.js +15 -28
- package/dist/commands/preprocessors.js.map +1 -1
- package/dist/commands/production.js +30 -63
- package/dist/commands/production.js.map +1 -1
- package/dist/commands/push.js +294 -1241
- package/dist/commands/push.js.map +1 -1
- package/dist/commands/pushBackup.d.ts +22 -0
- package/dist/commands/pushBackup.js +133 -0
- package/dist/commands/pushBackup.js.map +1 -0
- package/dist/commands/resources.js +29 -72
- package/dist/commands/resources.js.map +1 -1
- package/dist/commands/skills.d.ts +1 -1
- package/dist/commands/skills.js +58 -70
- package/dist/commands/skills.js.map +1 -1
- package/dist/commands/sync.d.ts +1 -3
- package/dist/commands/sync.js +12 -24
- package/dist/commands/sync.js.map +1 -1
- package/dist/commands/test.js +135 -104
- package/dist/commands/test.js.map +1 -1
- package/dist/commands/webhooks.js +15 -28
- package/dist/commands/webhooks.js.map +1 -1
- package/dist/compiler/agent-traverser.d.ts +104 -0
- package/dist/compiler/agent-traverser.js +311 -0
- package/dist/compiler/agent-traverser.js.map +1 -0
- package/dist/compiler/bundler.d.ts +42 -0
- package/dist/compiler/bundler.js +187 -0
- package/dist/compiler/bundler.js.map +1 -0
- package/dist/compiler/compiler.d.ts +177 -0
- package/dist/compiler/compiler.js +580 -0
- package/dist/compiler/compiler.js.map +1 -0
- package/dist/compiler/index.d.ts +36 -0
- package/dist/compiler/index.js +42 -0
- package/dist/compiler/index.js.map +1 -0
- package/dist/compiler/plugins/base.d.ts +264 -0
- package/dist/compiler/plugins/base.js +307 -0
- package/dist/compiler/plugins/base.js.map +1 -0
- package/dist/compiler/plugins/job.plugin.d.ts +33 -0
- package/dist/compiler/plugins/job.plugin.js +143 -0
- package/dist/compiler/plugins/job.plugin.js.map +1 -0
- package/dist/compiler/plugins/mcp-server.plugin.d.ts +50 -0
- package/dist/compiler/plugins/mcp-server.plugin.js +186 -0
- package/dist/compiler/plugins/mcp-server.plugin.js.map +1 -0
- package/dist/compiler/plugins/postprocessor.plugin.d.ts +20 -0
- package/dist/compiler/plugins/postprocessor.plugin.js +39 -0
- package/dist/compiler/plugins/postprocessor.plugin.js.map +1 -0
- package/dist/compiler/plugins/preprocessor.plugin.d.ts +20 -0
- package/dist/compiler/plugins/preprocessor.plugin.js +48 -0
- package/dist/compiler/plugins/preprocessor.plugin.js.map +1 -0
- package/dist/compiler/plugins/processor-base.d.ts +16 -0
- package/dist/compiler/plugins/processor-base.js +34 -0
- package/dist/compiler/plugins/processor-base.js.map +1 -0
- package/dist/compiler/plugins/registry.d.ts +61 -0
- package/dist/compiler/plugins/registry.js +107 -0
- package/dist/compiler/plugins/registry.js.map +1 -0
- package/dist/compiler/plugins/skill.plugin.d.ts +71 -0
- package/dist/compiler/plugins/skill.plugin.js +243 -0
- package/dist/compiler/plugins/skill.plugin.js.map +1 -0
- package/dist/compiler/plugins/tool.plugin.d.ts +67 -0
- package/dist/compiler/plugins/tool.plugin.js +279 -0
- package/dist/compiler/plugins/tool.plugin.js.map +1 -0
- package/dist/compiler/plugins/webhook.plugin.d.ts +37 -0
- package/dist/compiler/plugins/webhook.plugin.js +127 -0
- package/dist/compiler/plugins/webhook.plugin.js.map +1 -0
- package/dist/compiler/source-writer.d.ts +98 -0
- package/dist/compiler/source-writer.js +223 -0
- package/dist/compiler/source-writer.js.map +1 -0
- package/dist/compiler/types.d.ts +289 -0
- package/dist/compiler/types.js +20 -0
- package/dist/compiler/types.js.map +1 -0
- package/dist/compiler/utils/ast-helpers.d.ts +57 -0
- package/dist/compiler/utils/ast-helpers.js +164 -0
- package/dist/compiler/utils/ast-helpers.js.map +1 -0
- package/dist/compiler/utils/common.d.ts +23 -0
- package/dist/compiler/utils/common.js +66 -0
- package/dist/compiler/utils/common.js.map +1 -0
- package/dist/compiler/utils/file-discovery.d.ts +34 -0
- package/dist/compiler/utils/file-discovery.js +68 -0
- package/dist/compiler/utils/file-discovery.js.map +1 -0
- package/dist/compiler/utils/path-resolver.d.ts +25 -0
- package/dist/compiler/utils/path-resolver.js +66 -0
- package/dist/compiler/utils/path-resolver.js.map +1 -0
- package/dist/compiler/utils/schema-converter.d.ts +26 -0
- package/dist/compiler/utils/schema-converter.js +94 -0
- package/dist/compiler/utils/schema-converter.js.map +1 -0
- package/dist/config/compile.constants.d.ts +2 -22
- package/dist/config/compile.constants.js +2 -49
- package/dist/config/compile.constants.js.map +1 -1
- package/dist/config/constants.d.ts +18 -2
- package/dist/config/constants.js +28 -8
- package/dist/config/constants.js.map +1 -1
- package/dist/config/dev.constants.d.ts +0 -10
- package/dist/config/dev.constants.js +0 -10
- package/dist/config/dev.constants.js.map +1 -1
- package/dist/index.js +7 -0
- package/dist/index.js.map +1 -1
- package/dist/instances/basket.instance.js.map +1 -0
- package/dist/instances/data.entry.instance.js.map +1 -0
- package/dist/instances/job.instance.js.map +1 -0
- package/dist/instances/order.instance.js.map +1 -0
- package/dist/instances/product.instance.js.map +1 -0
- package/dist/instances/product.pagination.instance.js.map +1 -0
- package/dist/instances/product.search.instance.js.map +1 -0
- package/dist/instances/user.instance.js.map +1 -0
- package/dist/interfaces/admin.d.ts +0 -38
- package/dist/interfaces/backup.d.ts +125 -0
- package/dist/interfaces/backup.js +8 -0
- package/dist/interfaces/backup.js.map +1 -0
- package/dist/interfaces/baskets.d.ts +0 -56
- package/dist/interfaces/common.d.ts +1 -0
- package/dist/interfaces/deploy.d.ts +0 -15
- package/dist/interfaces/index.d.ts +1 -1
- package/dist/interfaces/marketplace.d.ts +51 -0
- package/dist/interfaces/marketplace.js +1 -1
- package/dist/interfaces/marketplace.js.map +1 -1
- package/dist/interfaces/message.d.ts +0 -3
- package/dist/interfaces/orders.d.ts +0 -24
- package/dist/interfaces/postprocessors.d.ts +0 -18
- package/dist/interfaces/preprocessors.d.ts +0 -18
- package/dist/interfaces/skills.d.ts +61 -0
- package/dist/interfaces/user.d.ts +25 -0
- package/dist/interfaces/webhooks.d.ts +0 -9
- package/dist/primitives/base.handler.d.ts +106 -0
- package/dist/primitives/base.handler.js +370 -0
- package/dist/primitives/base.handler.js.map +1 -0
- package/dist/primitives/index.d.ts +47 -0
- package/dist/primitives/index.js +78 -0
- package/dist/primitives/index.js.map +1 -0
- package/dist/primitives/job.handler.d.ts +52 -0
- package/dist/primitives/job.handler.js +118 -0
- package/dist/primitives/job.handler.js.map +1 -0
- package/dist/primitives/mcp-server.handler.d.ts +54 -0
- package/dist/primitives/mcp-server.handler.js +91 -0
- package/dist/primitives/mcp-server.handler.js.map +1 -0
- package/dist/primitives/postprocessor.handler.d.ts +49 -0
- package/dist/primitives/postprocessor.handler.js +81 -0
- package/dist/primitives/postprocessor.handler.js.map +1 -0
- package/dist/primitives/preprocessor.handler.d.ts +54 -0
- package/dist/primitives/preprocessor.handler.js +95 -0
- package/dist/primitives/preprocessor.handler.js.map +1 -0
- package/dist/primitives/skill.handler.d.ts +44 -0
- package/dist/primitives/skill.handler.js +192 -0
- package/dist/primitives/skill.handler.js.map +1 -0
- package/dist/primitives/types.d.ts +72 -0
- package/dist/primitives/types.js +17 -0
- package/dist/primitives/types.js.map +1 -0
- package/dist/primitives/webhook.handler.d.ts +50 -0
- package/dist/primitives/webhook.handler.js +96 -0
- package/dist/primitives/webhook.handler.js.map +1 -0
- package/dist/services/auth.js +1 -2
- package/dist/services/auth.js.map +1 -1
- package/dist/services/sandbox.service.d.ts +103 -0
- package/dist/services/sandbox.service.js +479 -0
- package/dist/services/sandbox.service.js.map +1 -0
- package/dist/types/api-contracts.d.ts +1 -1
- package/dist/types/index.d.ts +2 -1
- package/dist/types/index.js.map +1 -1
- package/dist/types/skill.d.ts +8 -2
- package/dist/types/skill.js +8 -0
- package/dist/types/skill.js.map +1 -1
- package/dist/types/yaml.types.d.ts +69 -0
- package/dist/types/yaml.types.js +6 -0
- package/dist/types/yaml.types.js.map +1 -0
- package/dist/utils/artifact-loader.d.ts +108 -0
- package/dist/utils/artifact-loader.js +188 -0
- package/dist/utils/artifact-loader.js.map +1 -0
- package/dist/utils/backup-helpers.d.ts +122 -0
- package/dist/utils/backup-helpers.js +274 -0
- package/dist/utils/backup-helpers.js.map +1 -0
- package/dist/utils/cli.d.ts +8 -0
- package/dist/utils/cli.js +19 -2
- package/dist/utils/cli.js.map +1 -1
- package/dist/utils/command-utils.d.ts +42 -0
- package/dist/utils/command-utils.js +83 -0
- package/dist/utils/command-utils.js.map +1 -0
- package/dist/utils/deploy-helpers.d.ts +0 -29
- package/dist/utils/deploy-helpers.js +0 -70
- package/dist/utils/deploy-helpers.js.map +1 -1
- package/dist/utils/dev-api.d.ts +3 -99
- package/dist/utils/dev-api.js +3 -430
- package/dist/utils/dev-api.js.map +1 -1
- package/dist/utils/dev-server.d.ts +3 -1
- package/dist/utils/dev-server.js +69 -145
- package/dist/utils/dev-server.js.map +1 -1
- package/dist/utils/dev-watcher.d.ts +0 -1
- package/dist/utils/dev-watcher.js +23 -8
- package/dist/utils/dev-watcher.js.map +1 -1
- package/dist/utils/env-loader.utils.d.ts +10 -1
- package/dist/utils/env-loader.utils.js +39 -31
- package/dist/utils/env-loader.utils.js.map +1 -1
- package/dist/utils/files.d.ts +47 -3
- package/dist/utils/files.js +98 -40
- package/dist/utils/files.js.map +1 -1
- package/dist/utils/init-agent.js +1 -2
- package/dist/utils/init-agent.js.map +1 -1
- package/dist/utils/init-helpers.d.ts +2 -10
- package/dist/utils/init-helpers.js +9 -17
- package/dist/utils/init-helpers.js.map +1 -1
- package/dist/utils/init-prompts.d.ts +0 -8
- package/dist/utils/init-prompts.js +0 -22
- package/dist/utils/init-prompts.js.map +1 -1
- package/dist/utils/prompt-handler.d.ts +3 -0
- package/dist/utils/prompt-handler.js +13 -0
- package/dist/utils/prompt-handler.js.map +1 -1
- package/dist/utils/sandbox-storage.d.ts +6 -5
- package/dist/utils/sandbox-storage.js +12 -12
- package/dist/utils/sandbox-storage.js.map +1 -1
- package/dist/utils/sandbox.d.ts +7 -30
- package/dist/utils/sandbox.js +247 -223
- package/dist/utils/sandbox.js.map +1 -1
- package/dist/utils/semver.d.ts +12 -0
- package/dist/utils/semver.js +23 -0
- package/dist/utils/semver.js.map +1 -1
- package/dist/utils/sync-display.d.ts +9 -0
- package/dist/utils/sync-display.js +67 -0
- package/dist/utils/sync-display.js.map +1 -0
- package/dist/utils/sync-fetch.d.ts +23 -0
- package/dist/utils/sync-fetch.js +64 -0
- package/dist/utils/sync-fetch.js.map +1 -0
- package/dist/utils/sync-helpers.d.ts +4 -59
- package/dist/utils/sync-helpers.js +4 -206
- package/dist/utils/sync-helpers.js.map +1 -1
- package/dist/web/app.css +912 -186
- package/dist/web/app.js +46 -46
- package/docs/API_INDEX.md +100 -0
- package/docs/API_REFERENCE.md +773 -0
- package/docs/CLI_REFERENCE.md +924 -0
- package/docs/GETTING_STARTED.md +862 -0
- package/docs/README.md +270 -0
- package/docs/api/AI.md +882 -0
- package/docs/api/Baskets.md +511 -0
- package/docs/api/CDN.md +524 -0
- package/docs/api/Data.md +446 -0
- package/docs/api/Jobs.md +524 -0
- package/docs/api/LuaAgent.md +454 -0
- package/docs/api/LuaJob.md +604 -0
- package/docs/api/LuaSkill.md +396 -0
- package/docs/api/LuaTool.md +521 -0
- package/docs/api/LuaWebhook.md +601 -0
- package/docs/api/Orders.md +514 -0
- package/docs/api/PostProcessor.md +565 -0
- package/docs/api/PreProcessor.md +630 -0
- package/docs/api/Products.md +507 -0
- package/docs/api/Templates.md +662 -0
- package/docs/api/User.md +567 -0
- package/docs/archive/DEVELOPMENT_GUIDE_V1.md +1294 -0
- package/docs/compiler-v2/ASSESSMENT.md +205 -0
- package/docs/compiler-v2/TEST_PLAN.md +306 -0
- package/package.json +3 -7
- package/template/tsconfig.json +1 -1
- package/dist/common/basket.instance.js.map +0 -1
- package/dist/common/data.entry.instance.js.map +0 -1
- package/dist/common/http.client.js.map +0 -1
- package/dist/common/job.instance.js.map +0 -1
- package/dist/common/order.instance.js.map +0 -1
- package/dist/common/product.instance.js.map +0 -1
- package/dist/common/product.pagination.instance.js.map +0 -1
- package/dist/common/product.search.instance.js.map +0 -1
- package/dist/common/user.instance.js.map +0 -1
- package/dist/config/auth.constants.d.ts +0 -11
- package/dist/config/auth.constants.js +0 -12
- package/dist/config/auth.constants.js.map +0 -1
- package/dist/config/init.constants.d.ts +0 -15
- package/dist/config/init.constants.js +0 -20
- package/dist/config/init.constants.js.map +0 -1
- package/dist/interfaces/compile.d.ts +0 -12
- package/dist/interfaces/compile.js +0 -5
- package/dist/interfaces/compile.js.map +0 -1
- package/dist/types/compile.types.d.ts +0 -131
- package/dist/types/compile.types.js +0 -6
- package/dist/types/compile.types.js.map +0 -1
- package/dist/utils/agent-code-utils.d.ts +0 -25
- package/dist/utils/agent-code-utils.js +0 -107
- package/dist/utils/agent-code-utils.js.map +0 -1
- package/dist/utils/bundling.d.ts +0 -89
- package/dist/utils/bundling.js +0 -1068
- package/dist/utils/bundling.js.map +0 -1
- package/dist/utils/compile.d.ts +0 -116
- package/dist/utils/compile.js +0 -1062
- package/dist/utils/compile.js.map +0 -1
- package/dist/utils/deploy-api.d.ts +0 -26
- package/dist/utils/deploy-api.js +0 -54
- package/dist/utils/deploy-api.js.map +0 -1
- package/dist/utils/deployment.d.ts +0 -26
- package/dist/utils/deployment.js +0 -218
- package/dist/utils/deployment.js.map +0 -1
- package/dist/utils/dev-helpers.d.ts +0 -47
- package/dist/utils/dev-helpers.js +0 -82
- package/dist/utils/dev-helpers.js.map +0 -1
- package/dist/utils/job-management.d.ts +0 -27
- package/dist/utils/job-management.js +0 -248
- package/dist/utils/job-management.js.map +0 -1
- package/dist/utils/mcp-server-management.d.ts +0 -26
- package/dist/utils/mcp-server-management.js +0 -197
- package/dist/utils/mcp-server-management.js.map +0 -1
- package/dist/utils/postprocessor-management.d.ts +0 -9
- package/dist/utils/postprocessor-management.js +0 -117
- package/dist/utils/postprocessor-management.js.map +0 -1
- package/dist/utils/pre-bundle-jobs.d.ts +0 -27
- package/dist/utils/pre-bundle-jobs.js +0 -189
- package/dist/utils/pre-bundle-jobs.js.map +0 -1
- package/dist/utils/preprocessor-management.d.ts +0 -9
- package/dist/utils/preprocessor-management.js +0 -117
- package/dist/utils/preprocessor-management.js.map +0 -1
- package/dist/utils/push-api.d.ts +0 -15
- package/dist/utils/push-api.js +0 -49
- package/dist/utils/push-api.js.map +0 -1
- package/dist/utils/push-helpers.d.ts +0 -82
- package/dist/utils/push-helpers.js +0 -246
- package/dist/utils/push-helpers.js.map +0 -1
- package/dist/utils/skill-management.d.ts +0 -39
- package/dist/utils/skill-management.js +0 -299
- package/dist/utils/skill-management.js.map +0 -1
- package/dist/utils/test-helpers.d.ts +0 -33
- package/dist/utils/test-helpers.js +0 -84
- package/dist/utils/test-helpers.js.map +0 -1
- package/dist/utils/test-prompts.d.ts +0 -23
- package/dist/utils/test-prompts.js +0 -187
- package/dist/utils/test-prompts.js.map +0 -1
- package/dist/utils/tool-detection.d.ts +0 -19
- package/dist/utils/tool-detection.js +0 -125
- package/dist/utils/tool-detection.js.map +0 -1
- package/dist/utils/webhook-management.d.ts +0 -27
- package/dist/utils/webhook-management.js +0 -241
- package/dist/utils/webhook-management.js.map +0 -1
- /package/dist/{common → api}/http.client.d.ts +0 -0
- /package/dist/{common → api}/http.client.js +0 -0
- /package/dist/{common → instances}/basket.instance.d.ts +0 -0
- /package/dist/{common → instances}/basket.instance.js +0 -0
- /package/dist/{common → instances}/data.entry.instance.d.ts +0 -0
- /package/dist/{common → instances}/data.entry.instance.js +0 -0
- /package/dist/{common → instances}/job.instance.d.ts +0 -0
- /package/dist/{common → instances}/job.instance.js +0 -0
- /package/dist/{common → instances}/order.instance.d.ts +0 -0
- /package/dist/{common → instances}/order.instance.js +0 -0
- /package/dist/{common → instances}/product.instance.d.ts +0 -0
- /package/dist/{common → instances}/product.instance.js +0 -0
- /package/dist/{common → instances}/product.pagination.instance.d.ts +0 -0
- /package/dist/{common → instances}/product.pagination.instance.js +0 -0
- /package/dist/{common → instances}/product.search.instance.d.ts +0 -0
- /package/dist/{common → instances}/product.search.instance.js +0 -0
- /package/dist/{common → instances}/user.instance.d.ts +0 -0
- /package/dist/{common → instances}/user.instance.js +0 -0
|
@@ -0,0 +1,279 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Tool compilation plugin.
|
|
3
|
+
*
|
|
4
|
+
* BACKWARD COMPATIBLE: Detects BOTH patterns:
|
|
5
|
+
* 1. Class-based (legacy): class MyTool extends LuaTool { ... }
|
|
6
|
+
* 2. Function-based (new): const myTool = defineTool({ ... })
|
|
7
|
+
*
|
|
8
|
+
* NOTE: This plugin extends BasePlugin but overrides class-based detection because:
|
|
9
|
+
* - Class-based tools use extends/implements detection (not `new LuaTool` instantiation)
|
|
10
|
+
* - Class-based metadata is extracted from class properties, not config objects
|
|
11
|
+
* - Entry point generation differs significantly for class-based tools
|
|
12
|
+
*/
|
|
13
|
+
import { Node } from 'ts-morph';
|
|
14
|
+
import { PrimitiveKind, } from '../types.js';
|
|
15
|
+
import { BasePlugin, validationError, validationWarning } from './base.js';
|
|
16
|
+
import { extractSchemaProperty } from '../utils/ast-helpers.js';
|
|
17
|
+
import { zodToJsonSchema } from '../utils/schema-converter.js';
|
|
18
|
+
/**
|
|
19
|
+
* Plugin for compiling tool primitives.
|
|
20
|
+
* Extends BasePlugin for function-based detection; overrides class-based detection.
|
|
21
|
+
*/
|
|
22
|
+
export class ToolPlugin extends BasePlugin {
|
|
23
|
+
constructor() {
|
|
24
|
+
super(...arguments);
|
|
25
|
+
this.kind = 'tool';
|
|
26
|
+
this.displayName = 'Tool';
|
|
27
|
+
this.defineFunction = 'defineTool';
|
|
28
|
+
this.legacyClassNames = ['LuaTool'];
|
|
29
|
+
}
|
|
30
|
+
/**
|
|
31
|
+
* Extract metadata from tool config object (function-based pattern).
|
|
32
|
+
* Used by BasePlugin's detectFunctionBased().
|
|
33
|
+
*/
|
|
34
|
+
extractFromConfig(config, exportName, sourcePath, position, pattern) {
|
|
35
|
+
const common = this.extractCommonFields(config, exportName, sourcePath, position);
|
|
36
|
+
if (!common)
|
|
37
|
+
return null;
|
|
38
|
+
return {
|
|
39
|
+
kind: this.kind,
|
|
40
|
+
...common,
|
|
41
|
+
metadata: {
|
|
42
|
+
pattern,
|
|
43
|
+
hasInputSchema: config.getProperty('inputSchema') !== undefined,
|
|
44
|
+
hasCondition: config.getProperty('condition') !== undefined,
|
|
45
|
+
hasExecute: config.getProperty('execute') !== undefined,
|
|
46
|
+
},
|
|
47
|
+
};
|
|
48
|
+
}
|
|
49
|
+
/**
|
|
50
|
+
* Override class-based detection to detect class DEFINITIONS (extends/implements)
|
|
51
|
+
* instead of class INSTANTIATIONS (new LuaTool).
|
|
52
|
+
*
|
|
53
|
+
* Detects:
|
|
54
|
+
* - class MyTool extends LuaTool { ... }
|
|
55
|
+
* - export default class MyTool extends LuaTool { ... }
|
|
56
|
+
*/
|
|
57
|
+
detectClassBased(sourceFile, primitives) {
|
|
58
|
+
sourceFile.getClasses().forEach(classDecl => {
|
|
59
|
+
if (!this.isToolClass(classDecl))
|
|
60
|
+
return;
|
|
61
|
+
const className = classDecl.getName();
|
|
62
|
+
if (!className)
|
|
63
|
+
return;
|
|
64
|
+
// Check if this is a default export
|
|
65
|
+
const isDefaultExport = classDecl.isDefaultExport();
|
|
66
|
+
// Extract name from class property or derive from class name
|
|
67
|
+
let name = this.extractClassProperty(classDecl, 'name') ||
|
|
68
|
+
className.replace(/Tool$/, '').toLowerCase().replace(/([A-Z])/g, '-$1').replace(/^-/, '');
|
|
69
|
+
primitives.push({
|
|
70
|
+
kind: this.kind,
|
|
71
|
+
name,
|
|
72
|
+
description: this.extractClassProperty(classDecl, 'description') || '',
|
|
73
|
+
sourcePath: sourceFile.getFilePath(),
|
|
74
|
+
exportName: isDefaultExport ? 'default' : className,
|
|
75
|
+
isDefaultExport,
|
|
76
|
+
line: classDecl.getStartLineNumber(),
|
|
77
|
+
column: 1,
|
|
78
|
+
metadata: {
|
|
79
|
+
pattern: 'class',
|
|
80
|
+
className,
|
|
81
|
+
hasInputSchema: classDecl.getProperty('inputSchema') !== undefined,
|
|
82
|
+
hasCondition: classDecl.getMethod('condition') !== undefined || classDecl.getProperty('condition') !== undefined,
|
|
83
|
+
hasExecute: classDecl.getMethod('execute') !== undefined || classDecl.getProperty('execute') !== undefined,
|
|
84
|
+
},
|
|
85
|
+
});
|
|
86
|
+
});
|
|
87
|
+
}
|
|
88
|
+
/**
|
|
89
|
+
* Check if a class extends or implements LuaTool.
|
|
90
|
+
*/
|
|
91
|
+
isToolClass(classDecl) {
|
|
92
|
+
// Check extends
|
|
93
|
+
const extendsClause = classDecl.getExtends();
|
|
94
|
+
if (extendsClause && this.legacyClassNames.includes(extendsClause.getExpression().getText())) {
|
|
95
|
+
return true;
|
|
96
|
+
}
|
|
97
|
+
// Check implements
|
|
98
|
+
for (const impl of classDecl.getImplements()) {
|
|
99
|
+
if (this.legacyClassNames.includes(impl.getExpression().getText())) {
|
|
100
|
+
return true;
|
|
101
|
+
}
|
|
102
|
+
}
|
|
103
|
+
return false;
|
|
104
|
+
}
|
|
105
|
+
/**
|
|
106
|
+
* Extract a string property from a class declaration.
|
|
107
|
+
*/
|
|
108
|
+
extractClassProperty(classDecl, propName) {
|
|
109
|
+
const prop = classDecl.getProperty(propName);
|
|
110
|
+
if (!prop)
|
|
111
|
+
return undefined;
|
|
112
|
+
const initializer = prop.getInitializer();
|
|
113
|
+
if (initializer && Node.isStringLiteral(initializer)) {
|
|
114
|
+
return initializer.getLiteralValue();
|
|
115
|
+
}
|
|
116
|
+
return undefined;
|
|
117
|
+
}
|
|
118
|
+
validate(metadata) {
|
|
119
|
+
const errors = [];
|
|
120
|
+
const warnings = [];
|
|
121
|
+
if (!metadata.name) {
|
|
122
|
+
errors.push(validationError('Tool must have a name', {
|
|
123
|
+
line: metadata.line,
|
|
124
|
+
suggestion: 'Add a name property: name: "my-tool"',
|
|
125
|
+
}));
|
|
126
|
+
}
|
|
127
|
+
if (!metadata.metadata.hasExecute) {
|
|
128
|
+
errors.push(validationError('Tool must have an execute function', {
|
|
129
|
+
line: metadata.line,
|
|
130
|
+
suggestion: 'Add an execute function: execute: async (input, context) => { ... }',
|
|
131
|
+
}));
|
|
132
|
+
}
|
|
133
|
+
if (!metadata.description) {
|
|
134
|
+
warnings.push(validationWarning('Tool should have a description for better AI understanding', {
|
|
135
|
+
line: metadata.line,
|
|
136
|
+
suggestion: 'Add a description: description: "What this tool does"',
|
|
137
|
+
}));
|
|
138
|
+
}
|
|
139
|
+
if (!metadata.metadata.hasInputSchema) {
|
|
140
|
+
warnings.push(validationWarning('Tool should have an inputSchema for type safety', {
|
|
141
|
+
line: metadata.line,
|
|
142
|
+
suggestion: 'Add a schema: inputSchema: z.object({ ... })',
|
|
143
|
+
}));
|
|
144
|
+
}
|
|
145
|
+
if (metadata.name && !/^[a-z][a-z0-9-_]*$/.test(metadata.name)) {
|
|
146
|
+
warnings.push(validationWarning('Tool name should be lowercase with hyphens or underscores', { line: metadata.line }));
|
|
147
|
+
}
|
|
148
|
+
return { valid: errors.length === 0, errors, warnings };
|
|
149
|
+
}
|
|
150
|
+
/**
|
|
151
|
+
* Override entry point generation to handle class-based tools specially.
|
|
152
|
+
* Function-based tools use BasePlugin's implementation.
|
|
153
|
+
*/
|
|
154
|
+
generateEntryPoint(metadata) {
|
|
155
|
+
// Class-based tools need special wrapper that instantiates the class
|
|
156
|
+
if (metadata.metadata.pattern === 'class') {
|
|
157
|
+
return this.generateClassBasedEntryPoint(metadata);
|
|
158
|
+
}
|
|
159
|
+
// Function-based tools use base implementation
|
|
160
|
+
return super.generateEntryPoint(metadata);
|
|
161
|
+
}
|
|
162
|
+
/**
|
|
163
|
+
* Generate entry point for class-based tools.
|
|
164
|
+
* Creates an instance and wraps it in the standard primitive format.
|
|
165
|
+
*/
|
|
166
|
+
generateClassBasedEntryPoint(metadata) {
|
|
167
|
+
// For default exports, use default import syntax
|
|
168
|
+
const importStatement = metadata.isDefaultExport
|
|
169
|
+
? `import __ToolClass__ from '${metadata.sourcePath}';`
|
|
170
|
+
: `import { __lua_target__ as __ToolClass__ } from '${metadata.sourcePath}';`;
|
|
171
|
+
// For default exports, we don't re-export the class
|
|
172
|
+
const exportStatement = metadata.isDefaultExport
|
|
173
|
+
? ''
|
|
174
|
+
: `export { __ToolClass__ as ${metadata.exportName} };`;
|
|
175
|
+
return `
|
|
176
|
+
// =============================================================================
|
|
177
|
+
// AUTO-GENERATED ENTRY POINT (Class-based)
|
|
178
|
+
// Tool: ${metadata.name}
|
|
179
|
+
// Source: ${metadata.sourcePath}
|
|
180
|
+
// =============================================================================
|
|
181
|
+
|
|
182
|
+
${importStatement}
|
|
183
|
+
|
|
184
|
+
const toolInstance = new __ToolClass__();
|
|
185
|
+
|
|
186
|
+
const __lua_primitive__ = {
|
|
187
|
+
version: '2.0.0',
|
|
188
|
+
kind: 'tool',
|
|
189
|
+
name: ${JSON.stringify(metadata.name)},
|
|
190
|
+
description: ${JSON.stringify(metadata.description)},
|
|
191
|
+
exportName: ${JSON.stringify(metadata.exportName)},
|
|
192
|
+
pattern: 'class',
|
|
193
|
+
};
|
|
194
|
+
|
|
195
|
+
export default {
|
|
196
|
+
__lua_primitive__,
|
|
197
|
+
primitive: {
|
|
198
|
+
kind: 'tool',
|
|
199
|
+
name: toolInstance.name,
|
|
200
|
+
description: toolInstance.description,
|
|
201
|
+
inputSchema: toolInstance.inputSchema,
|
|
202
|
+
execute: toolInstance.execute.bind(toolInstance),
|
|
203
|
+
condition: toolInstance.condition?.bind(toolInstance),
|
|
204
|
+
},
|
|
205
|
+
};
|
|
206
|
+
|
|
207
|
+
${exportStatement}
|
|
208
|
+
`;
|
|
209
|
+
}
|
|
210
|
+
/**
|
|
211
|
+
* Add runtime validation for execute function.
|
|
212
|
+
*/
|
|
213
|
+
getRuntimeValidation() {
|
|
214
|
+
return `
|
|
215
|
+
if (typeof primitive.primitive?.execute !== 'function') {
|
|
216
|
+
throw new Error('[Lua] Invalid tool artifact: execute is not a function');
|
|
217
|
+
}`;
|
|
218
|
+
}
|
|
219
|
+
async extractSchemas(metadata, project) {
|
|
220
|
+
if (!metadata.metadata.hasInputSchema)
|
|
221
|
+
return undefined;
|
|
222
|
+
const sourceFile = project.getSourceFile(metadata.sourcePath);
|
|
223
|
+
if (!sourceFile)
|
|
224
|
+
return undefined;
|
|
225
|
+
let schemaNode;
|
|
226
|
+
if (metadata.metadata.pattern === 'class' && metadata.metadata.className) {
|
|
227
|
+
// Class-based: class X implements LuaTool { inputSchema = z.object(...) }
|
|
228
|
+
const classDecl = sourceFile.getClass(metadata.metadata.className);
|
|
229
|
+
if (!classDecl)
|
|
230
|
+
return undefined;
|
|
231
|
+
const inputSchemaProp = classDecl.getProperty('inputSchema');
|
|
232
|
+
if (!inputSchemaProp)
|
|
233
|
+
return undefined;
|
|
234
|
+
schemaNode = inputSchemaProp.getInitializer();
|
|
235
|
+
}
|
|
236
|
+
else {
|
|
237
|
+
// Function-based: const x = defineTool({ inputSchema: z.object(...) })
|
|
238
|
+
const varDecl = sourceFile.getVariableDeclaration(metadata.exportName);
|
|
239
|
+
if (!varDecl)
|
|
240
|
+
return undefined;
|
|
241
|
+
const initializer = varDecl.getInitializer();
|
|
242
|
+
if (!initializer || !Node.isCallExpression(initializer))
|
|
243
|
+
return undefined;
|
|
244
|
+
const args = initializer.getArguments();
|
|
245
|
+
if (args.length === 0)
|
|
246
|
+
return undefined;
|
|
247
|
+
const config = args[0];
|
|
248
|
+
if (!Node.isObjectLiteralExpression(config))
|
|
249
|
+
return undefined;
|
|
250
|
+
schemaNode = extractSchemaProperty(config, 'inputSchema');
|
|
251
|
+
}
|
|
252
|
+
if (!schemaNode)
|
|
253
|
+
return undefined;
|
|
254
|
+
try {
|
|
255
|
+
const jsonSchema = await zodToJsonSchema(schemaNode);
|
|
256
|
+
return { input: jsonSchema };
|
|
257
|
+
}
|
|
258
|
+
catch (error) {
|
|
259
|
+
console.warn(`Warning: Could not convert schema for ${metadata.name}:`, error);
|
|
260
|
+
return undefined;
|
|
261
|
+
}
|
|
262
|
+
}
|
|
263
|
+
toManifestEntry(compiled, _context) {
|
|
264
|
+
const tool = {
|
|
265
|
+
kind: PrimitiveKind.TOOL,
|
|
266
|
+
name: compiled.name,
|
|
267
|
+
description: compiled.description,
|
|
268
|
+
path: `artifacts/${compiled.kind}/${compiled.name}.js`,
|
|
269
|
+
sourcePath: compiled.sourcePath,
|
|
270
|
+
hash: compiled.artifact.hash,
|
|
271
|
+
schemas: compiled.schemas ? {
|
|
272
|
+
input: compiled.schemas.input,
|
|
273
|
+
output: compiled.schemas.output,
|
|
274
|
+
} : undefined,
|
|
275
|
+
};
|
|
276
|
+
return tool;
|
|
277
|
+
}
|
|
278
|
+
}
|
|
279
|
+
//# sourceMappingURL=tool.plugin.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tool.plugin.js","sourceRoot":"","sources":["../../../src/compiler/plugins/tool.plugin.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Webhook compilation plugin.
|
|
3
|
+
*
|
|
4
|
+
* BACKWARD COMPATIBLE: Detects BOTH patterns:
|
|
5
|
+
* 1. Class-based (legacy): new LuaWebhook({ ... })
|
|
6
|
+
* 2. Function-based (new): const myWebhook = defineWebhook({ ... })
|
|
7
|
+
*/
|
|
8
|
+
import { Project, ObjectLiteralExpression } from 'ts-morph';
|
|
9
|
+
import { type WebhookMetadata, type WebhookMetadataFields, type ValidationResult, type SchemaSet, type ManifestContext, type CompiledPrimitive, type ManifestPrimitive } from '../types.js';
|
|
10
|
+
import { BasePlugin } from './base.js';
|
|
11
|
+
/**
|
|
12
|
+
* Plugin for compiling webhook primitives.
|
|
13
|
+
* Extends BasePlugin for common detection/entry point/postProcess logic.
|
|
14
|
+
*/
|
|
15
|
+
export declare class WebhookPlugin extends BasePlugin<WebhookMetadataFields> {
|
|
16
|
+
readonly kind = "webhook";
|
|
17
|
+
readonly displayName = "Webhook";
|
|
18
|
+
readonly defineFunction = "defineWebhook";
|
|
19
|
+
readonly legacyClassNames: string[];
|
|
20
|
+
/**
|
|
21
|
+
* Extract metadata from webhook config object.
|
|
22
|
+
*/
|
|
23
|
+
protected extractFromConfig(config: ObjectLiteralExpression, exportName: string, sourcePath: string, position: {
|
|
24
|
+
line: number;
|
|
25
|
+
column: number;
|
|
26
|
+
}, pattern: 'function' | 'class'): WebhookMetadata | null;
|
|
27
|
+
validate(metadata: WebhookMetadata): ValidationResult;
|
|
28
|
+
/**
|
|
29
|
+
* Add runtime validation for execute function.
|
|
30
|
+
*/
|
|
31
|
+
protected getRuntimeValidation(): string;
|
|
32
|
+
/**
|
|
33
|
+
* Extract query, header, and body schemas from webhook.
|
|
34
|
+
*/
|
|
35
|
+
extractSchemas(metadata: WebhookMetadata, project: Project): Promise<SchemaSet | undefined>;
|
|
36
|
+
toManifestEntry(compiled: CompiledPrimitive, _context?: ManifestContext): ManifestPrimitive;
|
|
37
|
+
}
|
|
@@ -0,0 +1,127 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Webhook compilation plugin.
|
|
3
|
+
*
|
|
4
|
+
* BACKWARD COMPATIBLE: Detects BOTH patterns:
|
|
5
|
+
* 1. Class-based (legacy): new LuaWebhook({ ... })
|
|
6
|
+
* 2. Function-based (new): const myWebhook = defineWebhook({ ... })
|
|
7
|
+
*/
|
|
8
|
+
import { Node } from 'ts-morph';
|
|
9
|
+
import { PrimitiveKind, } from '../types.js';
|
|
10
|
+
import { BasePlugin, validationError, validationWarning } from './base.js';
|
|
11
|
+
import { extractSchemaProperty } from '../utils/ast-helpers.js';
|
|
12
|
+
import { zodToJsonSchema } from '../utils/schema-converter.js';
|
|
13
|
+
/**
|
|
14
|
+
* Plugin for compiling webhook primitives.
|
|
15
|
+
* Extends BasePlugin for common detection/entry point/postProcess logic.
|
|
16
|
+
*/
|
|
17
|
+
export class WebhookPlugin extends BasePlugin {
|
|
18
|
+
constructor() {
|
|
19
|
+
super(...arguments);
|
|
20
|
+
this.kind = 'webhook';
|
|
21
|
+
this.displayName = 'Webhook';
|
|
22
|
+
this.defineFunction = 'defineWebhook';
|
|
23
|
+
this.legacyClassNames = ['LuaWebhook'];
|
|
24
|
+
}
|
|
25
|
+
/**
|
|
26
|
+
* Extract metadata from webhook config object.
|
|
27
|
+
*/
|
|
28
|
+
extractFromConfig(config, exportName, sourcePath, position, pattern) {
|
|
29
|
+
const common = this.extractCommonFields(config, exportName, sourcePath, position);
|
|
30
|
+
if (!common)
|
|
31
|
+
return null;
|
|
32
|
+
return {
|
|
33
|
+
kind: this.kind,
|
|
34
|
+
...common,
|
|
35
|
+
metadata: {
|
|
36
|
+
pattern,
|
|
37
|
+
hasExecute: config.getProperty('execute') !== undefined,
|
|
38
|
+
hasQuerySchema: config.getProperty('querySchema') !== undefined,
|
|
39
|
+
hasHeaderSchema: config.getProperty('headerSchema') !== undefined,
|
|
40
|
+
hasBodySchema: config.getProperty('bodySchema') !== undefined,
|
|
41
|
+
},
|
|
42
|
+
};
|
|
43
|
+
}
|
|
44
|
+
validate(metadata) {
|
|
45
|
+
const errors = [];
|
|
46
|
+
const warnings = [];
|
|
47
|
+
if (!metadata.name) {
|
|
48
|
+
errors.push(validationError('Webhook must have a name', { line: metadata.line }));
|
|
49
|
+
}
|
|
50
|
+
if (!metadata.metadata.hasExecute) {
|
|
51
|
+
errors.push(validationError('Webhook must have an execute function', { line: metadata.line }));
|
|
52
|
+
}
|
|
53
|
+
if (!metadata.description) {
|
|
54
|
+
warnings.push(validationWarning('Webhook should have a description', { line: metadata.line }));
|
|
55
|
+
}
|
|
56
|
+
// Validate name format (URL-safe)
|
|
57
|
+
if (metadata.name && !/^[a-z][a-z0-9-]*$/.test(metadata.name)) {
|
|
58
|
+
warnings.push(validationWarning('Webhook name should be URL-safe (lowercase, hyphens only)', { line: metadata.line }));
|
|
59
|
+
}
|
|
60
|
+
return { valid: errors.length === 0, errors, warnings };
|
|
61
|
+
}
|
|
62
|
+
/**
|
|
63
|
+
* Add runtime validation for execute function.
|
|
64
|
+
*/
|
|
65
|
+
getRuntimeValidation() {
|
|
66
|
+
return `
|
|
67
|
+
if (typeof primitive.primitive?.execute !== 'function') {
|
|
68
|
+
throw new Error('[Lua] Invalid webhook artifact: execute is not a function');
|
|
69
|
+
}`;
|
|
70
|
+
}
|
|
71
|
+
/**
|
|
72
|
+
* Extract query, header, and body schemas from webhook.
|
|
73
|
+
*/
|
|
74
|
+
async extractSchemas(metadata, project) {
|
|
75
|
+
const sourceFile = project.getSourceFile(metadata.sourcePath);
|
|
76
|
+
if (!sourceFile)
|
|
77
|
+
return undefined;
|
|
78
|
+
const varDecl = sourceFile.getVariableDeclaration(metadata.exportName);
|
|
79
|
+
if (!varDecl)
|
|
80
|
+
return undefined;
|
|
81
|
+
const initializer = varDecl.getInitializer();
|
|
82
|
+
if (!initializer || !Node.isCallExpression(initializer))
|
|
83
|
+
return undefined;
|
|
84
|
+
const args = initializer.getArguments();
|
|
85
|
+
if (args.length === 0)
|
|
86
|
+
return undefined;
|
|
87
|
+
const config = args[0];
|
|
88
|
+
if (!Node.isObjectLiteralExpression(config))
|
|
89
|
+
return undefined;
|
|
90
|
+
const schemas = {};
|
|
91
|
+
// Extract each schema type
|
|
92
|
+
const schemaProps = ['querySchema', 'headerSchema', 'bodySchema'];
|
|
93
|
+
for (const propName of schemaProps) {
|
|
94
|
+
if (metadata.metadata[`has${propName.charAt(0).toUpperCase() + propName.slice(1)}`]) {
|
|
95
|
+
const schemaNode = extractSchemaProperty(config, propName);
|
|
96
|
+
if (schemaNode) {
|
|
97
|
+
try {
|
|
98
|
+
const jsonSchema = await zodToJsonSchema(schemaNode);
|
|
99
|
+
const key = propName.replace('Schema', '');
|
|
100
|
+
schemas[key] = jsonSchema;
|
|
101
|
+
}
|
|
102
|
+
catch (error) {
|
|
103
|
+
console.warn(`Warning: Could not convert ${propName} for ${metadata.name}:`, error);
|
|
104
|
+
}
|
|
105
|
+
}
|
|
106
|
+
}
|
|
107
|
+
}
|
|
108
|
+
return Object.keys(schemas).length > 0 ? schemas : undefined;
|
|
109
|
+
}
|
|
110
|
+
toManifestEntry(compiled, _context) {
|
|
111
|
+
const webhook = {
|
|
112
|
+
kind: PrimitiveKind.WEBHOOK,
|
|
113
|
+
name: compiled.name,
|
|
114
|
+
description: compiled.description,
|
|
115
|
+
path: `artifacts/${compiled.kind}/${compiled.name}.js`,
|
|
116
|
+
sourcePath: compiled.sourcePath,
|
|
117
|
+
hash: compiled.artifact.hash,
|
|
118
|
+
schemas: compiled.schemas ? {
|
|
119
|
+
query: compiled.schemas.query,
|
|
120
|
+
headers: compiled.schemas.headers,
|
|
121
|
+
body: compiled.schemas.body,
|
|
122
|
+
} : undefined,
|
|
123
|
+
};
|
|
124
|
+
return webhook;
|
|
125
|
+
}
|
|
126
|
+
}
|
|
127
|
+
//# sourceMappingURL=webhook.plugin.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"webhook.plugin.js","sourceRoot":"","sources":["../../../src/compiler/plugins/webhook.plugin.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,98 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Source Writer
|
|
3
|
+
*
|
|
4
|
+
* Utilities for modifying Lua agent source code via AST manipulation.
|
|
5
|
+
* All ts-morph write operations are centralized here.
|
|
6
|
+
*
|
|
7
|
+
* ## Current Implementation
|
|
8
|
+
*
|
|
9
|
+
* Currently only supports updating `LuaAgent` config properties (name, persona)
|
|
10
|
+
* in the entry point file. This covers the main use cases:
|
|
11
|
+
* - `lua init` - setting initial agent config
|
|
12
|
+
* - `lua sync` - syncing agent name/persona from server
|
|
13
|
+
* - `lua persona` - updating persona
|
|
14
|
+
*
|
|
15
|
+
* ## Future Extensibility
|
|
16
|
+
*
|
|
17
|
+
* To support modifying other primitives (skills, jobs, webhooks, etc.),
|
|
18
|
+
* this module could be extended with a generic API like:
|
|
19
|
+
*
|
|
20
|
+
* ```typescript
|
|
21
|
+
* // Generic primitive update
|
|
22
|
+
* updatePrimitiveConfig({
|
|
23
|
+
* kind: 'LuaSkill', // Target class: LuaSkill, LuaJob, LuaWebhook, etc.
|
|
24
|
+
* name: 'my-skill', // Find by name property
|
|
25
|
+
* file: 'src/skills/my.ts', // Or specify file directly
|
|
26
|
+
* updates: {
|
|
27
|
+
* description: 'New desc',
|
|
28
|
+
* context: 'New context',
|
|
29
|
+
* }
|
|
30
|
+
* });
|
|
31
|
+
*
|
|
32
|
+
* // Or batch updates across files
|
|
33
|
+
* updatePrimitivesFromManifest(manifest, serverData);
|
|
34
|
+
* ```
|
|
35
|
+
*
|
|
36
|
+
* Key considerations for generic implementation:
|
|
37
|
+
* - Support different primitive classes (LuaSkill, LuaJob, LuaWebhook, LuaMCPServer)
|
|
38
|
+
* - Find primitives across multiple files (not just entry point)
|
|
39
|
+
* - Handle different value types (strings, numbers, objects, arrays)
|
|
40
|
+
* - Support adding/removing properties, not just updating
|
|
41
|
+
* - Preserve code formatting and comments where possible
|
|
42
|
+
*
|
|
43
|
+
* @example
|
|
44
|
+
* ```typescript
|
|
45
|
+
* // Current API - agent config only
|
|
46
|
+
* updateAgentConfig({ name: 'New Name', persona: 'New persona...' });
|
|
47
|
+
* setAgentName('New Name');
|
|
48
|
+
* setAgentPersona('New persona...');
|
|
49
|
+
* ```
|
|
50
|
+
*/
|
|
51
|
+
/**
|
|
52
|
+
* Options for source writing operations.
|
|
53
|
+
*/
|
|
54
|
+
export interface SourceWriteOptions {
|
|
55
|
+
/** Project directory to search (defaults to cwd) */
|
|
56
|
+
projectDir?: string;
|
|
57
|
+
/** Override default index file discovery with specific file path */
|
|
58
|
+
indexFile?: string;
|
|
59
|
+
}
|
|
60
|
+
/**
|
|
61
|
+
* Update string properties in the LuaAgent configuration in source code.
|
|
62
|
+
*
|
|
63
|
+
* This is a generic writer that can update any string properties in
|
|
64
|
+
* the LuaAgent constructor's config object.
|
|
65
|
+
*
|
|
66
|
+
* @param updates - Object with property names and their new values (undefined values are skipped)
|
|
67
|
+
* @param options - Optional configuration
|
|
68
|
+
* @returns true if update succeeded, false otherwise
|
|
69
|
+
*
|
|
70
|
+
* @example
|
|
71
|
+
* ```typescript
|
|
72
|
+
* // Update name only
|
|
73
|
+
* updateAgentConfig({ name: 'New Agent Name' });
|
|
74
|
+
*
|
|
75
|
+
* // Update multiple properties
|
|
76
|
+
* updateAgentConfig({
|
|
77
|
+
* name: 'My Agent',
|
|
78
|
+
* persona: 'You are a helpful assistant...'
|
|
79
|
+
* });
|
|
80
|
+
* ```
|
|
81
|
+
*/
|
|
82
|
+
export declare function updateAgentConfig(updates: Record<string, string | undefined>, options?: SourceWriteOptions): boolean;
|
|
83
|
+
/**
|
|
84
|
+
* Set the agent name in source code.
|
|
85
|
+
*
|
|
86
|
+
* @param name - New agent name
|
|
87
|
+
* @param options - Optional configuration
|
|
88
|
+
* @returns true if update succeeded, false otherwise
|
|
89
|
+
*/
|
|
90
|
+
export declare function setAgentName(name: string, options?: SourceWriteOptions): boolean;
|
|
91
|
+
/**
|
|
92
|
+
* Set the agent persona in source code.
|
|
93
|
+
*
|
|
94
|
+
* @param persona - New agent persona
|
|
95
|
+
* @param options - Optional configuration
|
|
96
|
+
* @returns true if update succeeded, false otherwise
|
|
97
|
+
*/
|
|
98
|
+
export declare function setAgentPersona(persona: string, options?: SourceWriteOptions): boolean;
|