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
package/docs/api/CDN.md
ADDED
|
@@ -0,0 +1,524 @@
|
|
|
1
|
+
# CDN API
|
|
2
|
+
|
|
3
|
+
The CDN API allows you to upload and retrieve files from the Lua CDN. Use this for handling file uploads, document storage, and media management.
|
|
4
|
+
|
|
5
|
+
## Import
|
|
6
|
+
|
|
7
|
+
```typescript
|
|
8
|
+
import { CDN } from 'lua-cli';
|
|
9
|
+
```
|
|
10
|
+
|
|
11
|
+
## Overview
|
|
12
|
+
|
|
13
|
+
The CDN API enables:
|
|
14
|
+
- Upload files to the Lua CDN
|
|
15
|
+
- Retrieve files by ID
|
|
16
|
+
- Store images, documents, and media
|
|
17
|
+
- Share files with users
|
|
18
|
+
- Generate file URLs for access
|
|
19
|
+
|
|
20
|
+
## Methods
|
|
21
|
+
|
|
22
|
+
| Method | Description |
|
|
23
|
+
|--------|-------------|
|
|
24
|
+
| `CDN.upload(file)` | Upload a file to the CDN |
|
|
25
|
+
| `CDN.get(fileId)` | Retrieve a file by its ID |
|
|
26
|
+
|
|
27
|
+
## Methods
|
|
28
|
+
|
|
29
|
+
### `CDN.upload(file)`
|
|
30
|
+
|
|
31
|
+
Uploads a file to the CDN and returns a file ID.
|
|
32
|
+
|
|
33
|
+
**Parameters:**
|
|
34
|
+
- `file` (File) - The file object to upload
|
|
35
|
+
|
|
36
|
+
**Returns:** `Promise<string>` - File ID
|
|
37
|
+
|
|
38
|
+
**Example:**
|
|
39
|
+
```typescript
|
|
40
|
+
const fileId = await CDN.upload(file);
|
|
41
|
+
console.log('Uploaded file ID:', fileId);
|
|
42
|
+
```
|
|
43
|
+
|
|
44
|
+
### `CDN.get(fileId)`
|
|
45
|
+
|
|
46
|
+
Retrieves a file from the CDN by its ID.
|
|
47
|
+
|
|
48
|
+
**Parameters:**
|
|
49
|
+
- `fileId` (string) - The unique file identifier
|
|
50
|
+
|
|
51
|
+
**Returns:** `Promise<File>` - File object
|
|
52
|
+
|
|
53
|
+
**Example:**
|
|
54
|
+
```typescript
|
|
55
|
+
const file = await CDN.get('file_abc123');
|
|
56
|
+
console.log('File name:', file.name);
|
|
57
|
+
console.log('File type:', file.type);
|
|
58
|
+
console.log('File size:', file.size);
|
|
59
|
+
```
|
|
60
|
+
|
|
61
|
+
## Complete Examples
|
|
62
|
+
|
|
63
|
+
### File Upload Tool
|
|
64
|
+
|
|
65
|
+
```typescript
|
|
66
|
+
import { LuaTool, CDN, Data } from 'lua-cli';
|
|
67
|
+
import { z } from 'zod';
|
|
68
|
+
|
|
69
|
+
export default class UploadFileTool implements LuaTool {
|
|
70
|
+
name = 'upload_file';
|
|
71
|
+
description = 'Upload a file to storage';
|
|
72
|
+
|
|
73
|
+
inputSchema = z.object({
|
|
74
|
+
file: z.instanceof(File).describe('File to upload'),
|
|
75
|
+
category: z.string().optional().describe('File category')
|
|
76
|
+
});
|
|
77
|
+
|
|
78
|
+
async execute(input: z.infer<typeof this.inputSchema>) {
|
|
79
|
+
try {
|
|
80
|
+
// Upload to CDN
|
|
81
|
+
const fileId = await CDN.upload(input.file);
|
|
82
|
+
|
|
83
|
+
// Store file metadata in custom data
|
|
84
|
+
await Data.create('files', {
|
|
85
|
+
fileId,
|
|
86
|
+
fileName: input.file.name,
|
|
87
|
+
fileType: input.file.type,
|
|
88
|
+
fileSize: input.file.size,
|
|
89
|
+
category: input.category || 'general',
|
|
90
|
+
uploadedAt: new Date().toISOString()
|
|
91
|
+
});
|
|
92
|
+
|
|
93
|
+
return {
|
|
94
|
+
success: true,
|
|
95
|
+
message: `File "${input.file.name}" uploaded successfully`,
|
|
96
|
+
fileId,
|
|
97
|
+
fileName: input.file.name,
|
|
98
|
+
fileSize: input.file.size
|
|
99
|
+
};
|
|
100
|
+
} catch (error) {
|
|
101
|
+
return {
|
|
102
|
+
success: false,
|
|
103
|
+
error: error instanceof Error ? error.message : 'Upload failed'
|
|
104
|
+
};
|
|
105
|
+
}
|
|
106
|
+
}
|
|
107
|
+
}
|
|
108
|
+
```
|
|
109
|
+
|
|
110
|
+
### Download File Tool
|
|
111
|
+
|
|
112
|
+
```typescript
|
|
113
|
+
import { LuaTool, CDN } from 'lua-cli';
|
|
114
|
+
import { z } from 'zod';
|
|
115
|
+
|
|
116
|
+
export default class DownloadFileTool implements LuaTool {
|
|
117
|
+
name = 'download_file';
|
|
118
|
+
description = 'Download a file by ID';
|
|
119
|
+
|
|
120
|
+
inputSchema = z.object({
|
|
121
|
+
fileId: z.string().describe('File ID to download')
|
|
122
|
+
});
|
|
123
|
+
|
|
124
|
+
async execute(input: z.infer<typeof this.inputSchema>) {
|
|
125
|
+
try {
|
|
126
|
+
const file = await CDN.get(input.fileId);
|
|
127
|
+
|
|
128
|
+
return {
|
|
129
|
+
success: true,
|
|
130
|
+
fileName: file.name,
|
|
131
|
+
fileType: file.type,
|
|
132
|
+
fileSize: file.size,
|
|
133
|
+
file: file // Can be sent to user or processed
|
|
134
|
+
};
|
|
135
|
+
} catch (error) {
|
|
136
|
+
return {
|
|
137
|
+
success: false,
|
|
138
|
+
error: 'File not found or download failed'
|
|
139
|
+
};
|
|
140
|
+
}
|
|
141
|
+
}
|
|
142
|
+
}
|
|
143
|
+
```
|
|
144
|
+
|
|
145
|
+
### Image Upload with Processing
|
|
146
|
+
|
|
147
|
+
```typescript
|
|
148
|
+
import { LuaTool, CDN, User } from 'lua-cli';
|
|
149
|
+
import { z } from 'zod';
|
|
150
|
+
|
|
151
|
+
export default class UploadImageTool implements LuaTool {
|
|
152
|
+
name = 'upload_image';
|
|
153
|
+
description = 'Upload and share an image';
|
|
154
|
+
|
|
155
|
+
inputSchema = z.object({
|
|
156
|
+
image: z.instanceof(File).describe('Image file'),
|
|
157
|
+
caption: z.string().optional()
|
|
158
|
+
});
|
|
159
|
+
|
|
160
|
+
async execute(input: z.infer<typeof this.inputSchema>) {
|
|
161
|
+
// Validate file type
|
|
162
|
+
if (!input.image.type.startsWith('image/')) {
|
|
163
|
+
return {
|
|
164
|
+
success: false,
|
|
165
|
+
error: 'File must be an image'
|
|
166
|
+
};
|
|
167
|
+
}
|
|
168
|
+
|
|
169
|
+
// Validate file size (max 5MB)
|
|
170
|
+
const maxSize = 5 * 1024 * 1024; // 5MB in bytes
|
|
171
|
+
if (input.image.size > maxSize) {
|
|
172
|
+
return {
|
|
173
|
+
success: false,
|
|
174
|
+
error: 'Image must be smaller than 5MB'
|
|
175
|
+
};
|
|
176
|
+
}
|
|
177
|
+
|
|
178
|
+
try {
|
|
179
|
+
// Upload to CDN
|
|
180
|
+
const fileId = await CDN.upload(input.image);
|
|
181
|
+
|
|
182
|
+
// Get current user
|
|
183
|
+
const user = await User.get();
|
|
184
|
+
|
|
185
|
+
// Send confirmation with image
|
|
186
|
+
await user.send([
|
|
187
|
+
{
|
|
188
|
+
type: 'text',
|
|
189
|
+
text: input.caption || 'Image uploaded successfully'
|
|
190
|
+
},
|
|
191
|
+
{
|
|
192
|
+
type: 'image',
|
|
193
|
+
url: `https://cdn.heylua.ai/${fileId}`
|
|
194
|
+
}
|
|
195
|
+
]);
|
|
196
|
+
|
|
197
|
+
return {
|
|
198
|
+
success: true,
|
|
199
|
+
fileId,
|
|
200
|
+
fileName: input.image.name,
|
|
201
|
+
fileSize: input.image.size,
|
|
202
|
+
message: 'Image uploaded and shared'
|
|
203
|
+
};
|
|
204
|
+
} catch (error) {
|
|
205
|
+
return {
|
|
206
|
+
success: false,
|
|
207
|
+
error: error instanceof Error ? error.message : 'Upload failed'
|
|
208
|
+
};
|
|
209
|
+
}
|
|
210
|
+
}
|
|
211
|
+
}
|
|
212
|
+
```
|
|
213
|
+
|
|
214
|
+
### Document Manager Tool
|
|
215
|
+
|
|
216
|
+
```typescript
|
|
217
|
+
import { LuaTool, CDN, Data } from 'lua-cli';
|
|
218
|
+
import { z } from 'zod';
|
|
219
|
+
|
|
220
|
+
export default class ManageDocumentsTool implements LuaTool {
|
|
221
|
+
name = 'manage_documents';
|
|
222
|
+
description = 'Upload and list user documents';
|
|
223
|
+
|
|
224
|
+
inputSchema = z.object({
|
|
225
|
+
action: z.enum(['upload', 'list', 'get']),
|
|
226
|
+
file: z.instanceof(File).optional(),
|
|
227
|
+
fileId: z.string().optional()
|
|
228
|
+
});
|
|
229
|
+
|
|
230
|
+
async execute(input: z.infer<typeof this.inputSchema>) {
|
|
231
|
+
if (input.action === 'upload') {
|
|
232
|
+
if (!input.file) {
|
|
233
|
+
return { success: false, error: 'File is required for upload' };
|
|
234
|
+
}
|
|
235
|
+
|
|
236
|
+
// Upload file
|
|
237
|
+
const fileId = await CDN.upload(input.file);
|
|
238
|
+
|
|
239
|
+
// Store metadata
|
|
240
|
+
const entry = await Data.create('documents', {
|
|
241
|
+
fileId,
|
|
242
|
+
fileName: input.file.name,
|
|
243
|
+
fileType: input.file.type,
|
|
244
|
+
fileSize: input.file.size,
|
|
245
|
+
uploadedAt: new Date().toISOString()
|
|
246
|
+
});
|
|
247
|
+
|
|
248
|
+
return {
|
|
249
|
+
success: true,
|
|
250
|
+
message: 'Document uploaded',
|
|
251
|
+
fileId,
|
|
252
|
+
entryId: entry.id
|
|
253
|
+
};
|
|
254
|
+
}
|
|
255
|
+
|
|
256
|
+
if (input.action === 'list') {
|
|
257
|
+
// List all user documents
|
|
258
|
+
const documents = await Data.get('documents');
|
|
259
|
+
|
|
260
|
+
return {
|
|
261
|
+
success: true,
|
|
262
|
+
documents: documents.map(doc => ({
|
|
263
|
+
id: doc.id,
|
|
264
|
+
fileName: doc.data.fileName,
|
|
265
|
+
fileSize: doc.data.fileSize,
|
|
266
|
+
uploadedAt: doc.data.uploadedAt
|
|
267
|
+
}))
|
|
268
|
+
};
|
|
269
|
+
}
|
|
270
|
+
|
|
271
|
+
if (input.action === 'get') {
|
|
272
|
+
if (!input.fileId) {
|
|
273
|
+
return { success: false, error: 'fileId is required' };
|
|
274
|
+
}
|
|
275
|
+
|
|
276
|
+
// Retrieve file
|
|
277
|
+
const file = await CDN.get(input.fileId);
|
|
278
|
+
|
|
279
|
+
return {
|
|
280
|
+
success: true,
|
|
281
|
+
fileName: file.name,
|
|
282
|
+
fileType: file.type,
|
|
283
|
+
fileSize: file.size
|
|
284
|
+
};
|
|
285
|
+
}
|
|
286
|
+
|
|
287
|
+
return { success: false, error: 'Invalid action' };
|
|
288
|
+
}
|
|
289
|
+
}
|
|
290
|
+
```
|
|
291
|
+
|
|
292
|
+
### Avatar Upload Tool
|
|
293
|
+
|
|
294
|
+
```typescript
|
|
295
|
+
import { LuaTool, CDN, User } from 'lua-cli';
|
|
296
|
+
import { z } from 'zod';
|
|
297
|
+
|
|
298
|
+
export default class UploadAvatarTool implements LuaTool {
|
|
299
|
+
name = 'upload_avatar';
|
|
300
|
+
description = 'Upload user profile picture';
|
|
301
|
+
|
|
302
|
+
inputSchema = z.object({
|
|
303
|
+
avatar: z.instanceof(File).describe('Avatar image file')
|
|
304
|
+
});
|
|
305
|
+
|
|
306
|
+
async execute(input: z.infer<typeof this.inputSchema>) {
|
|
307
|
+
// Validate image type
|
|
308
|
+
const validTypes = ['image/jpeg', 'image/png', 'image/gif', 'image/webp'];
|
|
309
|
+
if (!validTypes.includes(input.avatar.type)) {
|
|
310
|
+
return {
|
|
311
|
+
success: false,
|
|
312
|
+
error: 'Avatar must be JPEG, PNG, GIF, or WebP'
|
|
313
|
+
};
|
|
314
|
+
}
|
|
315
|
+
|
|
316
|
+
// Validate size (max 2MB)
|
|
317
|
+
const maxSize = 2 * 1024 * 1024;
|
|
318
|
+
if (input.avatar.size > maxSize) {
|
|
319
|
+
return {
|
|
320
|
+
success: false,
|
|
321
|
+
error: 'Avatar must be smaller than 2MB'
|
|
322
|
+
};
|
|
323
|
+
}
|
|
324
|
+
|
|
325
|
+
try {
|
|
326
|
+
// Upload to CDN
|
|
327
|
+
const fileId = await CDN.upload(input.avatar);
|
|
328
|
+
|
|
329
|
+
// Update user profile
|
|
330
|
+
const user = await User.get();
|
|
331
|
+
await user.update({
|
|
332
|
+
avatarUrl: `https://cdn.heylua.ai/${fileId}`,
|
|
333
|
+
avatarFileId: fileId
|
|
334
|
+
});
|
|
335
|
+
|
|
336
|
+
return {
|
|
337
|
+
success: true,
|
|
338
|
+
message: 'Avatar updated successfully',
|
|
339
|
+
fileId,
|
|
340
|
+
avatarUrl: `https://cdn.heylua.ai/${fileId}`
|
|
341
|
+
};
|
|
342
|
+
} catch (error) {
|
|
343
|
+
return {
|
|
344
|
+
success: false,
|
|
345
|
+
error: error instanceof Error ? error.message : 'Avatar upload failed'
|
|
346
|
+
};
|
|
347
|
+
}
|
|
348
|
+
}
|
|
349
|
+
}
|
|
350
|
+
```
|
|
351
|
+
|
|
352
|
+
### File Share Tool
|
|
353
|
+
|
|
354
|
+
```typescript
|
|
355
|
+
import { LuaTool, CDN, Data, User } from 'lua-cli';
|
|
356
|
+
import { z } from 'zod';
|
|
357
|
+
|
|
358
|
+
export default class ShareFileTool implements LuaTool {
|
|
359
|
+
name = 'share_file';
|
|
360
|
+
description = 'Share a file with the user';
|
|
361
|
+
|
|
362
|
+
inputSchema = z.object({
|
|
363
|
+
fileId: z.string().describe('File ID to share'),
|
|
364
|
+
message: z.string().optional()
|
|
365
|
+
});
|
|
366
|
+
|
|
367
|
+
async execute(input: z.infer<typeof this.inputSchema>) {
|
|
368
|
+
try {
|
|
369
|
+
// Get file info from metadata
|
|
370
|
+
const files = await Data.search('files', input.fileId);
|
|
371
|
+
|
|
372
|
+
if (files.data.length === 0) {
|
|
373
|
+
return {
|
|
374
|
+
success: false,
|
|
375
|
+
error: 'File not found'
|
|
376
|
+
};
|
|
377
|
+
}
|
|
378
|
+
|
|
379
|
+
const fileInfo = files.data[0].data;
|
|
380
|
+
const user = await User.get();
|
|
381
|
+
|
|
382
|
+
// Send file to user
|
|
383
|
+
const fileUrl = `https://cdn.heylua.ai/${input.fileId}`;
|
|
384
|
+
|
|
385
|
+
await user.send([
|
|
386
|
+
{
|
|
387
|
+
type: 'text',
|
|
388
|
+
text: input.message || `Here's your file: ${fileInfo.fileName}`
|
|
389
|
+
},
|
|
390
|
+
{
|
|
391
|
+
type: 'file',
|
|
392
|
+
url: fileUrl,
|
|
393
|
+
mimeType: fileInfo.fileType
|
|
394
|
+
}
|
|
395
|
+
]);
|
|
396
|
+
|
|
397
|
+
return {
|
|
398
|
+
success: true,
|
|
399
|
+
message: 'File shared successfully',
|
|
400
|
+
fileName: fileInfo.fileName,
|
|
401
|
+
fileUrl
|
|
402
|
+
};
|
|
403
|
+
} catch (error) {
|
|
404
|
+
return {
|
|
405
|
+
success: false,
|
|
406
|
+
error: error instanceof Error ? error.message : 'Share failed'
|
|
407
|
+
};
|
|
408
|
+
}
|
|
409
|
+
}
|
|
410
|
+
}
|
|
411
|
+
```
|
|
412
|
+
|
|
413
|
+
## File Object Properties
|
|
414
|
+
|
|
415
|
+
The `File` object returned by `CDN.get()` has:
|
|
416
|
+
|
|
417
|
+
```typescript
|
|
418
|
+
const file = await CDN.get('file_123');
|
|
419
|
+
|
|
420
|
+
console.log(file.name); // File name (e.g., "document.pdf")
|
|
421
|
+
console.log(file.type); // MIME type (e.g., "application/pdf")
|
|
422
|
+
console.log(file.size); // File size in bytes
|
|
423
|
+
```
|
|
424
|
+
|
|
425
|
+
## Best Practices
|
|
426
|
+
|
|
427
|
+
### ✅ DO
|
|
428
|
+
|
|
429
|
+
- Validate file types before uploading
|
|
430
|
+
- Check file size limits to prevent large uploads
|
|
431
|
+
- Store file metadata in Data API for tracking
|
|
432
|
+
- Use meaningful file IDs and organize by category
|
|
433
|
+
- Handle upload/download errors gracefully
|
|
434
|
+
- Compress images before uploading when possible
|
|
435
|
+
- Clean up unused files periodically
|
|
436
|
+
|
|
437
|
+
### ❌ DON'T
|
|
438
|
+
|
|
439
|
+
- Don't upload files without validation
|
|
440
|
+
- Don't store sensitive data without encryption
|
|
441
|
+
- Don't exceed reasonable file size limits
|
|
442
|
+
- Don't lose track of file IDs
|
|
443
|
+
- Don't upload files without proper error handling
|
|
444
|
+
- Don't forget to inform users about upload status
|
|
445
|
+
|
|
446
|
+
## Common File Types
|
|
447
|
+
|
|
448
|
+
| Category | MIME Types |
|
|
449
|
+
|----------|-----------|
|
|
450
|
+
| Images | `image/jpeg`, `image/png`, `image/gif`, `image/webp` |
|
|
451
|
+
| Documents | `application/pdf`, `application/msword`, `application/vnd.openxmlformats-officedocument.wordprocessingml.document` |
|
|
452
|
+
| Spreadsheets | `application/vnd.ms-excel`, `application/vnd.openxmlformats-officedocument.spreadsheetml.sheet` |
|
|
453
|
+
| Text | `text/plain`, `text/csv`, `text/html` |
|
|
454
|
+
| Audio | `audio/mpeg`, `audio/wav`, `audio/ogg` |
|
|
455
|
+
| Video | `video/mp4`, `video/webm`, `video/quicktime` |
|
|
456
|
+
|
|
457
|
+
## Error Handling
|
|
458
|
+
|
|
459
|
+
```typescript
|
|
460
|
+
try {
|
|
461
|
+
const fileId = await CDN.upload(file);
|
|
462
|
+
console.log('Upload successful:', fileId);
|
|
463
|
+
} catch (error) {
|
|
464
|
+
if (error.message.includes('size')) {
|
|
465
|
+
console.log('File too large');
|
|
466
|
+
} else if (error.message.includes('type')) {
|
|
467
|
+
console.log('Invalid file type');
|
|
468
|
+
} else {
|
|
469
|
+
console.log('Upload failed:', error.message);
|
|
470
|
+
}
|
|
471
|
+
}
|
|
472
|
+
```
|
|
473
|
+
|
|
474
|
+
## Common Patterns
|
|
475
|
+
|
|
476
|
+
### File Size Validation
|
|
477
|
+
|
|
478
|
+
```typescript
|
|
479
|
+
function validateFileSize(file: File, maxSizeMB: number): boolean {
|
|
480
|
+
const maxBytes = maxSizeMB * 1024 * 1024;
|
|
481
|
+
return file.size <= maxBytes;
|
|
482
|
+
}
|
|
483
|
+
|
|
484
|
+
// Usage
|
|
485
|
+
if (!validateFileSize(file, 5)) {
|
|
486
|
+
throw new Error('File must be smaller than 5MB');
|
|
487
|
+
}
|
|
488
|
+
```
|
|
489
|
+
|
|
490
|
+
### File Type Validation
|
|
491
|
+
|
|
492
|
+
```typescript
|
|
493
|
+
function validateFileType(
|
|
494
|
+
file: File,
|
|
495
|
+
allowedTypes: string[]
|
|
496
|
+
): boolean {
|
|
497
|
+
return allowedTypes.includes(file.type);
|
|
498
|
+
}
|
|
499
|
+
|
|
500
|
+
// Usage
|
|
501
|
+
const imageTypes = ['image/jpeg', 'image/png', 'image/gif'];
|
|
502
|
+
if (!validateFileType(file, imageTypes)) {
|
|
503
|
+
throw new Error('File must be an image');
|
|
504
|
+
}
|
|
505
|
+
```
|
|
506
|
+
|
|
507
|
+
### Generate CDN URL
|
|
508
|
+
|
|
509
|
+
```typescript
|
|
510
|
+
function getCdnUrl(fileId: string): string {
|
|
511
|
+
return `https://cdn.heylua.ai/${fileId}`;
|
|
512
|
+
}
|
|
513
|
+
```
|
|
514
|
+
|
|
515
|
+
## Related APIs
|
|
516
|
+
|
|
517
|
+
- [Data API](./Data.md) - Store file metadata
|
|
518
|
+
- [User API](./User.md) - Send files to users
|
|
519
|
+
- [AI API](./AI.md) - Analyze uploaded images/documents
|
|
520
|
+
|
|
521
|
+
## See Also
|
|
522
|
+
|
|
523
|
+
- [File Upload Guide](../guides/FileUploads.md)
|
|
524
|
+
- [Media Management](../guides/MediaManagement.md)
|