@nocobase/app-server 0.11.1-alpha.4 → 2.0.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 +295 -0
- package/dist/application/index.d.ts +128 -0
- package/dist/application/index.d.ts.map +1 -0
- package/dist/application/index.js +386 -0
- package/dist/application/index.js.map +1 -0
- package/dist/caching/config.d.ts +2 -0
- package/dist/caching/config.d.ts.map +1 -0
- package/dist/caching/config.js +2 -0
- package/dist/caching/config.js.map +1 -0
- package/dist/caching/index.d.ts +5 -0
- package/dist/caching/index.d.ts.map +1 -0
- package/dist/caching/index.js +4 -0
- package/dist/caching/index.js.map +1 -0
- package/dist/caching/provider.d.ts +8 -0
- package/dist/caching/provider.d.ts.map +1 -0
- package/dist/caching/provider.js +14 -0
- package/dist/caching/provider.js.map +1 -0
- package/dist/caching/token.d.ts +4 -0
- package/dist/caching/token.d.ts.map +1 -0
- package/dist/caching/token.js +3 -0
- package/dist/caching/token.js.map +1 -0
- package/dist/config/app-config-types.d.ts +44 -0
- package/dist/config/app-config-types.d.ts.map +1 -0
- package/dist/config/app-config-types.js +2 -0
- package/dist/config/app-config-types.js.map +1 -0
- package/dist/config/app-config.d.ts +60 -0
- package/dist/config/app-config.d.ts.map +1 -0
- package/dist/config/app-config.js +247 -0
- package/dist/config/app-config.js.map +1 -0
- package/dist/config/context.d.ts +3 -0
- package/dist/config/context.d.ts.map +1 -0
- package/dist/config/context.js +7 -0
- package/dist/config/context.js.map +1 -0
- package/dist/config/define-app-config.d.ts +71 -0
- package/dist/config/define-app-config.d.ts.map +1 -0
- package/dist/config/define-app-config.js +48 -0
- package/dist/config/define-app-config.js.map +1 -0
- package/dist/config/index.d.ts +13 -0
- package/dist/config/index.d.ts.map +1 -0
- package/dist/config/index.js +11 -0
- package/dist/config/index.js.map +1 -0
- package/dist/config/not-configured.d.ts +23 -0
- package/dist/config/not-configured.d.ts.map +1 -0
- package/dist/config/not-configured.js +31 -0
- package/dist/config/not-configured.js.map +1 -0
- package/dist/config/paths.d.ts +27 -0
- package/dist/config/paths.d.ts.map +1 -0
- package/dist/config/paths.js +27 -0
- package/dist/config/paths.js.map +1 -0
- package/dist/config/placeholder-secret.d.ts +19 -0
- package/dist/config/placeholder-secret.d.ts.map +1 -0
- package/dist/config/placeholder-secret.js +26 -0
- package/dist/config/placeholder-secret.js.map +1 -0
- package/dist/config/runtime-environment.d.ts +11 -0
- package/dist/config/runtime-environment.d.ts.map +1 -0
- package/dist/config/runtime-environment.js +20 -0
- package/dist/config/runtime-environment.js.map +1 -0
- package/dist/config/types.d.ts +12 -0
- package/dist/config/types.d.ts.map +1 -0
- package/dist/config/types.js +2 -0
- package/dist/config/types.js.map +1 -0
- package/dist/config/validation.d.ts +36 -0
- package/dist/config/validation.d.ts.map +1 -0
- package/dist/config/validation.js +186 -0
- package/dist/config/validation.js.map +1 -0
- package/dist/config/variables.d.ts +57 -0
- package/dist/config/variables.d.ts.map +1 -0
- package/dist/config/variables.js +89 -0
- package/dist/config/variables.js.map +1 -0
- package/dist/database/collections-artifact.d.ts +99 -0
- package/dist/database/collections-artifact.d.ts.map +1 -0
- package/dist/database/collections-artifact.js +397 -0
- package/dist/database/collections-artifact.js.map +1 -0
- package/dist/database/collections-directory.d.ts +36 -0
- package/dist/database/collections-directory.d.ts.map +1 -0
- package/dist/database/collections-directory.js +115 -0
- package/dist/database/collections-directory.js.map +1 -0
- package/dist/database/collections-doctor.d.ts +43 -0
- package/dist/database/collections-doctor.d.ts.map +1 -0
- package/dist/database/collections-doctor.js +88 -0
- package/dist/database/collections-doctor.js.map +1 -0
- package/dist/database/connection-check.d.ts +25 -0
- package/dist/database/connection-check.d.ts.map +1 -0
- package/dist/database/connection-check.js +65 -0
- package/dist/database/connection-check.js.map +1 -0
- package/dist/database/connection-selection.d.ts +16 -0
- package/dist/database/connection-selection.d.ts.map +1 -0
- package/dist/database/connection-selection.js +30 -0
- package/dist/database/connection-selection.js.map +1 -0
- package/dist/database/define-app-database-config.d.ts +49 -0
- package/dist/database/define-app-database-config.d.ts.map +1 -0
- package/dist/database/define-app-database-config.js +73 -0
- package/dist/database/define-app-database-config.js.map +1 -0
- package/dist/database/environment.d.ts +11 -0
- package/dist/database/environment.d.ts.map +1 -0
- package/dist/database/environment.js +49 -0
- package/dist/database/environment.js.map +1 -0
- package/dist/database/index.d.ts +17 -0
- package/dist/database/index.d.ts.map +1 -0
- package/dist/database/index.js +16 -0
- package/dist/database/index.js.map +1 -0
- package/dist/database/manager.d.ts +16 -0
- package/dist/database/manager.d.ts.map +1 -0
- package/dist/database/manager.js +83 -0
- package/dist/database/manager.js.map +1 -0
- package/dist/database/migrator.d.ts +88 -0
- package/dist/database/migrator.d.ts.map +1 -0
- package/dist/database/migrator.js +143 -0
- package/dist/database/migrator.js.map +1 -0
- package/dist/database/ownership.d.ts +6 -0
- package/dist/database/ownership.d.ts.map +1 -0
- package/dist/database/ownership.js +50 -0
- package/dist/database/ownership.js.map +1 -0
- package/dist/database/plan.d.ts +36 -0
- package/dist/database/plan.d.ts.map +1 -0
- package/dist/database/plan.js +136 -0
- package/dist/database/plan.js.map +1 -0
- package/dist/database/provider.d.ts +43 -0
- package/dist/database/provider.d.ts.map +1 -0
- package/dist/database/provider.js +171 -0
- package/dist/database/provider.js.map +1 -0
- package/dist/database/resolve-config.d.ts +42 -0
- package/dist/database/resolve-config.d.ts.map +1 -0
- package/dist/database/resolve-config.js +118 -0
- package/dist/database/resolve-config.js.map +1 -0
- package/dist/database/seeder.d.ts +50 -0
- package/dist/database/seeder.d.ts.map +1 -0
- package/dist/database/seeder.js +117 -0
- package/dist/database/seeder.js.map +1 -0
- package/dist/database/storage.d.ts +10 -0
- package/dist/database/storage.d.ts.map +1 -0
- package/dist/database/storage.js +37 -0
- package/dist/database/storage.js.map +1 -0
- package/dist/database/task-config.d.ts +7 -0
- package/dist/database/task-config.d.ts.map +1 -0
- package/dist/database/task-config.js +19 -0
- package/dist/database/task-config.js.map +1 -0
- package/dist/database/task-container.d.ts +3 -0
- package/dist/database/task-container.d.ts.map +1 -0
- package/dist/database/task-container.js +34 -0
- package/dist/database/task-container.js.map +1 -0
- package/dist/database/tasks.d.ts +104 -0
- package/dist/database/tasks.d.ts.map +1 -0
- package/dist/database/tasks.js +350 -0
- package/dist/database/tasks.js.map +1 -0
- package/dist/database/types.d.ts +92 -0
- package/dist/database/types.d.ts.map +1 -0
- package/dist/database/types.js +2 -0
- package/dist/database/types.js.map +1 -0
- package/dist/drive/config.d.ts +2 -0
- package/dist/drive/config.d.ts.map +1 -0
- package/dist/drive/config.js +2 -0
- package/dist/drive/config.js.map +1 -0
- package/dist/drive/index.d.ts +5 -0
- package/dist/drive/index.d.ts.map +1 -0
- package/dist/drive/index.js +4 -0
- package/dist/drive/index.js.map +1 -0
- package/dist/drive/provider.d.ts +9 -0
- package/dist/drive/provider.d.ts.map +1 -0
- package/dist/drive/provider.js +22 -0
- package/dist/drive/provider.js.map +1 -0
- package/dist/drive/token.d.ts +4 -0
- package/dist/drive/token.d.ts.map +1 -0
- package/dist/drive/token.js +3 -0
- package/dist/drive/token.js.map +1 -0
- package/dist/i18n/index.d.ts +37 -0
- package/dist/i18n/index.d.ts.map +1 -0
- package/dist/i18n/index.js +44 -0
- package/dist/i18n/index.js.map +1 -0
- package/dist/id-generator/config.d.ts +2 -0
- package/dist/id-generator/config.d.ts.map +1 -0
- package/dist/id-generator/config.js +2 -0
- package/dist/id-generator/config.js.map +1 -0
- package/dist/id-generator/index.d.ts +5 -0
- package/dist/id-generator/index.d.ts.map +1 -0
- package/dist/id-generator/index.js +4 -0
- package/dist/id-generator/index.js.map +1 -0
- package/dist/id-generator/provider.d.ts +7 -0
- package/dist/id-generator/provider.d.ts.map +1 -0
- package/dist/id-generator/provider.js +11 -0
- package/dist/id-generator/provider.js.map +1 -0
- package/dist/id-generator/token.d.ts +4 -0
- package/dist/id-generator/token.d.ts.map +1 -0
- package/dist/id-generator/token.js +3 -0
- package/dist/id-generator/token.js.map +1 -0
- package/dist/index.d.ts +20 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +20 -0
- package/dist/index.js.map +1 -0
- package/dist/jobs/config.d.ts +2 -0
- package/dist/jobs/config.d.ts.map +1 -0
- package/dist/jobs/config.js +2 -0
- package/dist/jobs/config.js.map +1 -0
- package/dist/jobs/index.d.ts +4 -0
- package/dist/jobs/index.d.ts.map +1 -0
- package/dist/jobs/index.js +4 -0
- package/dist/jobs/index.js.map +1 -0
- package/dist/jobs/provider.d.ts +23 -0
- package/dist/jobs/provider.d.ts.map +1 -0
- package/dist/jobs/provider.js +55 -0
- package/dist/jobs/provider.js.map +1 -0
- package/dist/jobs/token.d.ts +8 -0
- package/dist/jobs/token.d.ts.map +1 -0
- package/dist/jobs/token.js +7 -0
- package/dist/jobs/token.js.map +1 -0
- package/dist/logging/config.d.ts +16 -0
- package/dist/logging/config.d.ts.map +1 -0
- package/dist/logging/config.js +26 -0
- package/dist/logging/config.js.map +1 -0
- package/dist/logging/index.d.ts +5 -0
- package/dist/logging/index.d.ts.map +1 -0
- package/dist/logging/index.js +5 -0
- package/dist/logging/index.js.map +1 -0
- package/dist/logging/middleware.d.ts +13 -0
- package/dist/logging/middleware.d.ts.map +1 -0
- package/dist/logging/middleware.js +128 -0
- package/dist/logging/middleware.js.map +1 -0
- package/dist/logging/provider.d.ts +9 -0
- package/dist/logging/provider.d.ts.map +1 -0
- package/dist/logging/provider.js +95 -0
- package/dist/logging/provider.js.map +1 -0
- package/dist/logging/token.d.ts +4 -0
- package/dist/logging/token.d.ts.map +1 -0
- package/dist/logging/token.js +3 -0
- package/dist/logging/token.js.map +1 -0
- package/dist/node/config.d.ts +6 -0
- package/dist/node/config.d.ts.map +1 -0
- package/dist/node/config.js +2 -0
- package/dist/node/config.js.map +1 -0
- package/dist/node/index.d.ts +6 -0
- package/dist/node/index.d.ts.map +1 -0
- package/dist/node/index.js +6 -0
- package/dist/node/index.js.map +1 -0
- package/dist/node/not-configured-message.d.ts +10 -0
- package/dist/node/not-configured-message.d.ts.map +1 -0
- package/dist/node/not-configured-message.js +24 -0
- package/dist/node/not-configured-message.js.map +1 -0
- package/dist/node/proxy.d.ts +25 -0
- package/dist/node/proxy.d.ts.map +1 -0
- package/dist/node/proxy.js +229 -0
- package/dist/node/proxy.js.map +1 -0
- package/dist/node/runtime.d.ts +45 -0
- package/dist/node/runtime.d.ts.map +1 -0
- package/dist/node/runtime.js +176 -0
- package/dist/node/runtime.js.map +1 -0
- package/dist/node/scope.d.ts +55 -0
- package/dist/node/scope.d.ts.map +1 -0
- package/dist/node/scope.js +115 -0
- package/dist/node/scope.js.map +1 -0
- package/dist/node/server.d.ts +80 -0
- package/dist/node/server.d.ts.map +1 -0
- package/dist/node/server.js +283 -0
- package/dist/node/server.js.map +1 -0
- package/dist/plugins/define.d.ts +4 -0
- package/dist/plugins/define.d.ts.map +1 -0
- package/dist/plugins/define.js +45 -0
- package/dist/plugins/define.js.map +1 -0
- package/dist/plugins/index.d.ts +27 -0
- package/dist/plugins/index.d.ts.map +1 -0
- package/dist/plugins/index.js +4 -0
- package/dist/plugins/index.js.map +1 -0
- package/dist/plugins/inspect.d.ts +79 -0
- package/dist/plugins/inspect.d.ts.map +1 -0
- package/dist/plugins/inspect.js +142 -0
- package/dist/plugins/inspect.js.map +1 -0
- package/dist/plugins/resolve.d.ts +14 -0
- package/dist/plugins/resolve.d.ts.map +1 -0
- package/dist/plugins/resolve.js +101 -0
- package/dist/plugins/resolve.js.map +1 -0
- package/dist/plugins/types.d.ts +91 -0
- package/dist/plugins/types.d.ts.map +1 -0
- package/dist/plugins/types.js +2 -0
- package/dist/plugins/types.js.map +1 -0
- package/dist/proxy/http-proxy.d.ts +8 -0
- package/dist/proxy/http-proxy.d.ts.map +1 -0
- package/dist/proxy/http-proxy.js +59 -0
- package/dist/proxy/http-proxy.js.map +1 -0
- package/dist/proxy/index.d.ts +3 -0
- package/dist/proxy/index.d.ts.map +1 -0
- package/dist/proxy/index.js +3 -0
- package/dist/proxy/index.js.map +1 -0
- package/dist/proxy/origin.d.ts +12 -0
- package/dist/proxy/origin.d.ts.map +1 -0
- package/dist/proxy/origin.js +61 -0
- package/dist/proxy/origin.js.map +1 -0
- package/dist/queue/config.d.ts +4 -0
- package/dist/queue/config.d.ts.map +1 -0
- package/dist/queue/config.js +2 -0
- package/dist/queue/config.js.map +1 -0
- package/dist/queue/index.d.ts +4 -0
- package/dist/queue/index.d.ts.map +1 -0
- package/dist/queue/index.js +4 -0
- package/dist/queue/index.js.map +1 -0
- package/dist/queue/provider.d.ts +24 -0
- package/dist/queue/provider.d.ts.map +1 -0
- package/dist/queue/provider.js +57 -0
- package/dist/queue/provider.js.map +1 -0
- package/dist/queue/token.d.ts +9 -0
- package/dist/queue/token.d.ts.map +1 -0
- package/dist/queue/token.js +8 -0
- package/dist/queue/token.js.map +1 -0
- package/dist/realtime/index.d.ts +6 -0
- package/dist/realtime/index.d.ts.map +1 -0
- package/dist/realtime/index.js +6 -0
- package/dist/realtime/index.js.map +1 -0
- package/dist/realtime/provider.d.ts +10 -0
- package/dist/realtime/provider.d.ts.map +1 -0
- package/dist/realtime/provider.js +19 -0
- package/dist/realtime/provider.js.map +1 -0
- package/dist/realtime/service.d.ts +9 -0
- package/dist/realtime/service.d.ts.map +1 -0
- package/dist/realtime/service.js +347 -0
- package/dist/realtime/service.js.map +1 -0
- package/dist/realtime/types.d.ts +74 -0
- package/dist/realtime/types.d.ts.map +1 -0
- package/dist/realtime/types.js +4 -0
- package/dist/realtime/types.js.map +1 -0
- package/dist/realtime/websocket.d.ts +7 -0
- package/dist/realtime/websocket.d.ts.map +1 -0
- package/dist/realtime/websocket.js +57 -0
- package/dist/realtime/websocket.js.map +1 -0
- package/dist/router/api-error.d.ts +171 -0
- package/dist/router/api-error.d.ts.map +1 -0
- package/dist/router/api-error.js +291 -0
- package/dist/router/api-error.js.map +1 -0
- package/dist/router/api-limits.d.ts +80 -0
- package/dist/router/api-limits.d.ts.map +1 -0
- package/dist/router/api-limits.js +281 -0
- package/dist/router/api-limits.js.map +1 -0
- package/dist/router/cli/derive.d.ts +32 -0
- package/dist/router/cli/derive.d.ts.map +1 -0
- package/dist/router/cli/derive.js +548 -0
- package/dist/router/cli/derive.js.map +1 -0
- package/dist/router/cli/index.d.ts +6 -0
- package/dist/router/cli/index.d.ts.map +1 -0
- package/dist/router/cli/index.js +6 -0
- package/dist/router/cli/index.js.map +1 -0
- package/dist/router/cli/reference.d.ts +9 -0
- package/dist/router/cli/reference.d.ts.map +1 -0
- package/dist/router/cli/reference.js +64 -0
- package/dist/router/cli/reference.js.map +1 -0
- package/dist/router/cli/routes.d.ts +9 -0
- package/dist/router/cli/routes.d.ts.map +1 -0
- package/dist/router/cli/routes.js +228 -0
- package/dist/router/cli/routes.js.map +1 -0
- package/dist/router/cli/service.d.ts +50 -0
- package/dist/router/cli/service.d.ts.map +1 -0
- package/dist/router/cli/service.js +104 -0
- package/dist/router/cli/service.js.map +1 -0
- package/dist/router/cli/types.d.ts +278 -0
- package/dist/router/cli/types.d.ts.map +1 -0
- package/dist/router/cli/types.js +18 -0
- package/dist/router/cli/types.js.map +1 -0
- package/dist/router/duplicate-routes.d.ts +25 -0
- package/dist/router/duplicate-routes.d.ts.map +1 -0
- package/dist/router/duplicate-routes.js +51 -0
- package/dist/router/duplicate-routes.js.map +1 -0
- package/dist/router/health.d.ts +7 -0
- package/dist/router/health.d.ts.map +1 -0
- package/dist/router/health.js +48 -0
- package/dist/router/health.js.map +1 -0
- package/dist/router/index.d.ts +26 -0
- package/dist/router/index.d.ts.map +1 -0
- package/dist/router/index.js +29 -0
- package/dist/router/index.js.map +1 -0
- package/dist/router/openapi/components.d.ts +24 -0
- package/dist/router/openapi/components.d.ts.map +1 -0
- package/dist/router/openapi/components.js +128 -0
- package/dist/router/openapi/components.js.map +1 -0
- package/dist/router/openapi/declared.d.ts +19 -0
- package/dist/router/openapi/declared.d.ts.map +1 -0
- package/dist/router/openapi/declared.js +46 -0
- package/dist/router/openapi/declared.js.map +1 -0
- package/dist/router/openapi/describe.d.ts +82 -0
- package/dist/router/openapi/describe.d.ts.map +1 -0
- package/dist/router/openapi/describe.js +207 -0
- package/dist/router/openapi/describe.js.map +1 -0
- package/dist/router/openapi/docs-routes.d.ts +10 -0
- package/dist/router/openapi/docs-routes.d.ts.map +1 -0
- package/dist/router/openapi/docs-routes.js +157 -0
- package/dist/router/openapi/docs-routes.js.map +1 -0
- package/dist/router/openapi/document.d.ts +151 -0
- package/dist/router/openapi/document.d.ts.map +1 -0
- package/dist/router/openapi/document.js +471 -0
- package/dist/router/openapi/document.js.map +1 -0
- package/dist/router/openapi/index.d.ts +7 -0
- package/dist/router/openapi/index.d.ts.map +1 -0
- package/dist/router/openapi/index.js +7 -0
- package/dist/router/openapi/index.js.map +1 -0
- package/dist/router/openapi/repository-document.d.ts +30 -0
- package/dist/router/openapi/repository-document.d.ts.map +1 -0
- package/dist/router/openapi/repository-document.js +812 -0
- package/dist/router/openapi/repository-document.js.map +1 -0
- package/dist/router/openapi/schema.d.ts +30 -0
- package/dist/router/openapi/schema.d.ts.map +1 -0
- package/dist/router/openapi/schema.js +301 -0
- package/dist/router/openapi/schema.js.map +1 -0
- package/dist/router/openapi/service.d.ts +101 -0
- package/dist/router/openapi/service.d.ts.map +1 -0
- package/dist/router/openapi/service.js +162 -0
- package/dist/router/openapi/service.js.map +1 -0
- package/dist/router/repository-constraints.d.ts +15 -0
- package/dist/router/repository-constraints.d.ts.map +1 -0
- package/dist/router/repository-constraints.js +14 -0
- package/dist/router/repository-constraints.js.map +1 -0
- package/dist/router/repository-routes.d.ts +90 -0
- package/dist/router/repository-routes.d.ts.map +1 -0
- package/dist/router/repository-routes.js +452 -0
- package/dist/router/repository-routes.js.map +1 -0
- package/dist/router/routes.d.ts +24 -0
- package/dist/router/routes.d.ts.map +1 -0
- package/dist/router/routes.js +19 -0
- package/dist/router/routes.js.map +1 -0
- package/dist/runtime/application.d.ts +8 -0
- package/dist/runtime/application.d.ts.map +1 -0
- package/dist/runtime/application.js +22 -0
- package/dist/runtime/application.js.map +1 -0
- package/dist/runtime/definition.d.ts +50 -0
- package/dist/runtime/definition.d.ts.map +1 -0
- package/dist/runtime/definition.js +82 -0
- package/dist/runtime/definition.js.map +1 -0
- package/dist/runtime/index.d.ts +8 -0
- package/dist/runtime/index.d.ts.map +1 -0
- package/dist/runtime/index.js +7 -0
- package/dist/runtime/index.js.map +1 -0
- package/dist/runtime/lifecycle.d.ts +29 -0
- package/dist/runtime/lifecycle.d.ts.map +1 -0
- package/dist/runtime/lifecycle.js +104 -0
- package/dist/runtime/lifecycle.js.map +1 -0
- package/dist/runtime/mount.d.ts +4 -0
- package/dist/runtime/mount.d.ts.map +1 -0
- package/dist/runtime/mount.js +47 -0
- package/dist/runtime/mount.js.map +1 -0
- package/dist/runtime/scope.d.ts +29 -0
- package/dist/runtime/scope.d.ts.map +1 -0
- package/dist/runtime/scope.js +48 -0
- package/dist/runtime/scope.js.map +1 -0
- package/dist/runtime/types.d.ts +55 -0
- package/dist/runtime/types.d.ts.map +1 -0
- package/dist/runtime/types.js +2 -0
- package/dist/runtime/types.js.map +1 -0
- package/dist/sample-data/index.d.ts +3 -0
- package/dist/sample-data/index.d.ts.map +1 -0
- package/dist/sample-data/index.js +3 -0
- package/dist/sample-data/index.js.map +1 -0
- package/dist/sample-data/registry.d.ts +4 -0
- package/dist/sample-data/registry.d.ts.map +1 -0
- package/dist/sample-data/registry.js +74 -0
- package/dist/sample-data/registry.js.map +1 -0
- package/dist/sample-data/token.d.ts +64 -0
- package/dist/sample-data/token.d.ts.map +1 -0
- package/dist/sample-data/token.js +7 -0
- package/dist/sample-data/token.js.map +1 -0
- package/dist/secrets/config.d.ts +15 -0
- package/dist/secrets/config.d.ts.map +1 -0
- package/dist/secrets/config.js +43 -0
- package/dist/secrets/config.js.map +1 -0
- package/dist/secrets/index.d.ts +6 -0
- package/dist/secrets/index.d.ts.map +1 -0
- package/dist/secrets/index.js +6 -0
- package/dist/secrets/index.js.map +1 -0
- package/dist/secrets/provider.d.ts +7 -0
- package/dist/secrets/provider.d.ts.map +1 -0
- package/dist/secrets/provider.js +10 -0
- package/dist/secrets/provider.js.map +1 -0
- package/dist/secrets/service.d.ts +64 -0
- package/dist/secrets/service.d.ts.map +1 -0
- package/dist/secrets/service.js +47 -0
- package/dist/secrets/service.js.map +1 -0
- package/dist/secrets/table-store.d.ts +34 -0
- package/dist/secrets/table-store.d.ts.map +1 -0
- package/dist/secrets/table-store.js +118 -0
- package/dist/secrets/table-store.js.map +1 -0
- package/dist/secrets/token.d.ts +4 -0
- package/dist/secrets/token.d.ts.map +1 -0
- package/dist/secrets/token.js +3 -0
- package/dist/secrets/token.js.map +1 -0
- package/dist/session/config.d.ts +10 -0
- package/dist/session/config.d.ts.map +1 -0
- package/dist/session/config.js +2 -0
- package/dist/session/config.js.map +1 -0
- package/dist/session/index.d.ts +4 -0
- package/dist/session/index.d.ts.map +1 -0
- package/dist/session/index.js +4 -0
- package/dist/session/index.js.map +1 -0
- package/dist/session/provider.d.ts +26 -0
- package/dist/session/provider.d.ts.map +1 -0
- package/dist/session/provider.js +69 -0
- package/dist/session/provider.js.map +1 -0
- package/dist/session/token.d.ts +4 -0
- package/dist/session/token.d.ts.map +1 -0
- package/dist/session/token.js +3 -0
- package/dist/session/token.js.map +1 -0
- package/dist/spa/config.d.ts +5 -0
- package/dist/spa/config.d.ts.map +1 -0
- package/dist/spa/config.js +2 -0
- package/dist/spa/config.js.map +1 -0
- package/dist/spa/content-types.d.ts +2 -0
- package/dist/spa/content-types.d.ts.map +1 -0
- package/dist/spa/content-types.js +25 -0
- package/dist/spa/content-types.js.map +1 -0
- package/dist/spa/index.d.ts +9 -0
- package/dist/spa/index.d.ts.map +1 -0
- package/dist/spa/index.js +9 -0
- package/dist/spa/index.js.map +1 -0
- package/dist/spa/provider.d.ts +13 -0
- package/dist/spa/provider.d.ts.map +1 -0
- package/dist/spa/provider.js +90 -0
- package/dist/spa/provider.js.map +1 -0
- package/dist/spa/routes.d.ts +4 -0
- package/dist/spa/routes.d.ts.map +1 -0
- package/dist/spa/routes.js +58 -0
- package/dist/spa/routes.js.map +1 -0
- package/dist/spa/runtime-html.d.ts +14 -0
- package/dist/spa/runtime-html.d.ts.map +1 -0
- package/dist/spa/runtime-html.js +85 -0
- package/dist/spa/runtime-html.js.map +1 -0
- package/dist/spa/serve-index.d.ts +9 -0
- package/dist/spa/serve-index.d.ts.map +1 -0
- package/dist/spa/serve-index.js +12 -0
- package/dist/spa/serve-index.js.map +1 -0
- package/dist/spa/static-assets.d.ts +7 -0
- package/dist/spa/static-assets.d.ts.map +1 -0
- package/dist/spa/static-assets.js +90 -0
- package/dist/spa/static-assets.js.map +1 -0
- package/dist/spa/types.d.ts +23 -0
- package/dist/spa/types.d.ts.map +1 -0
- package/dist/spa/types.js +2 -0
- package/dist/spa/types.js.map +1 -0
- package/dist/support/index.d.ts +4 -0
- package/dist/support/index.d.ts.map +1 -0
- package/dist/support/index.js +4 -0
- package/dist/support/index.js.map +1 -0
- package/dist/support/paths.d.ts +10 -0
- package/dist/support/paths.d.ts.map +1 -0
- package/dist/support/paths.js +25 -0
- package/dist/support/paths.js.map +1 -0
- package/dist/support/redirects.d.ts +3 -0
- package/dist/support/redirects.d.ts.map +1 -0
- package/dist/support/redirects.js +48 -0
- package/dist/support/redirects.js.map +1 -0
- package/dist/support/requests.d.ts +2 -0
- package/dist/support/requests.d.ts.map +1 -0
- package/dist/support/requests.js +13 -0
- package/dist/support/requests.js.map +1 -0
- package/dist/swagger-ui/LICENSE +202 -0
- package/dist/swagger-ui/NOTICE +2 -0
- package/dist/swagger-ui/favicon-16x16.png +0 -0
- package/dist/swagger-ui/favicon-32x32.png +0 -0
- package/dist/swagger-ui/swagger-ui-bundle.js +2 -0
- package/dist/swagger-ui/swagger-ui-bundle.js.LICENSE.txt +129 -0
- package/dist/swagger-ui/swagger-ui.css +3 -0
- package/dist/websocket.d.ts +61 -0
- package/dist/websocket.d.ts.map +1 -0
- package/dist/websocket.js +371 -0
- package/dist/websocket.js.map +1 -0
- package/package.json +193 -12
- package/LICENSE +0 -661
- package/lib/config/cache.d.ts +0 -2
- package/lib/config/cache.js +0 -16
- package/lib/config/database.d.ts +0 -3
- package/lib/config/database.js +0 -25
- package/lib/config/index.d.ts +0 -10
- package/lib/config/index.js +0 -20
- package/lib/config/logger.d.ts +0 -3
- package/lib/config/logger.js +0 -11
- package/lib/config/plugins.d.ts +0 -3
- package/lib/config/plugins.js +0 -8
- package/lib/config/resourcer.d.ts +0 -4
- package/lib/config/resourcer.js +0 -10
- package/lib/index.d.ts +0 -3
- package/lib/index.js +0 -21
- package/src/config/cache.ts +0 -5
- package/src/config/database.ts +0 -21
- package/src/config/index.ts +0 -13
- package/src/config/logger.ts +0 -6
- package/src/config/plugins.ts +0 -3
- package/src/config/resourcer.ts +0 -3
- package/src/index.ts +0 -10
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
const words = (command) => command.id.split(':').join(' ');
|
|
2
|
+
/** A command as it is typed: its words, its positional arguments, and its required flags. */
|
|
3
|
+
export function cliUsageOf(command, bin) {
|
|
4
|
+
const parts = bin ? [bin, words(command)] : [words(command)];
|
|
5
|
+
const positional = command.parameters
|
|
6
|
+
.filter((parameter) => parameter.position !== undefined)
|
|
7
|
+
.sort((a, b) => (a.position ?? 0) - (b.position ?? 0));
|
|
8
|
+
for (const parameter of positional)
|
|
9
|
+
parts.push(parameter.required ? `<${parameter.name}>` : `[<${parameter.name}>]`);
|
|
10
|
+
for (const parameter of command.parameters) {
|
|
11
|
+
if (parameter.position !== undefined || !parameter.required)
|
|
12
|
+
continue;
|
|
13
|
+
if (parameter.default !== undefined)
|
|
14
|
+
continue;
|
|
15
|
+
parts.push(parameter.type === 'boolean'
|
|
16
|
+
? `--${parameter.name}`
|
|
17
|
+
: `--${parameter.name} <${parameter.in === 'file' ? 'path' : parameter.type}>`);
|
|
18
|
+
}
|
|
19
|
+
// A body that only a file can give: no flag fills any of its fields.
|
|
20
|
+
if (command.body?.file &&
|
|
21
|
+
command.body.required &&
|
|
22
|
+
!command.parameters.some((parameter) => parameter.in === 'body'))
|
|
23
|
+
parts.push(`--${command.body.file} <file.json>`);
|
|
24
|
+
return parts.join(' ');
|
|
25
|
+
}
|
|
26
|
+
/**
|
|
27
|
+
* The caller's commands as compact text an agent reads before using the CLI (`GET /api/cli/llms.txt`): how the CLI
|
|
28
|
+
* answers, then one line per command with its usage, summary, and the action it needs, grouped by its first word.
|
|
29
|
+
*/
|
|
30
|
+
export function renderCliReference(manifest, description = {}) {
|
|
31
|
+
const bin = description.bin ?? 'cli';
|
|
32
|
+
const title = description.title ?? bin;
|
|
33
|
+
const lines = [
|
|
34
|
+
`# ${title} command line`,
|
|
35
|
+
'',
|
|
36
|
+
`> The commands \`${bin}\` offers ${manifest.identity.kind === 'run' ? `this agent run (for ${manifest.identity.displayName})` : manifest.identity.displayName}. Each is one API route.`,
|
|
37
|
+
'',
|
|
38
|
+
`- \`${bin} <command> --help\` shows a command's arguments and flags; \`${bin} docs <command>\` adds its examples.`,
|
|
39
|
+
`- \`--json\` prints one JSON document, \`{ schemaVersion, ok, command, status, result | error, warnings }\`; a command's answer is \`result.data\`, a failure's reason \`error.code\`.`,
|
|
40
|
+
'- Exit codes: 0 ok, 1 general, 2 network, 3 authentication or permission, 4 not found, 5 invalid input, 6 conflict, 7 a plan is required.',
|
|
41
|
+
'- A command that asks first takes `--yes`; a long text flag also takes `--<flag>-file <path>`.',
|
|
42
|
+
...(description.notes ?? []).map((note) => `- ${note}`),
|
|
43
|
+
];
|
|
44
|
+
const groups = new Map();
|
|
45
|
+
for (const command of manifest.commands) {
|
|
46
|
+
const group = command.id.split(':')[0] ?? command.id;
|
|
47
|
+
groups.set(group, [...(groups.get(group) ?? []), command]);
|
|
48
|
+
}
|
|
49
|
+
for (const [group, commands] of [...groups].sort(([a], [b]) => a.localeCompare(b))) {
|
|
50
|
+
lines.push('', `## ${group}`, '');
|
|
51
|
+
for (const command of commands)
|
|
52
|
+
lines.push(`- \`${cliUsageOf(command, bin)}\`: ${command.summary}${command.action ? ` (action \`${command.action}\`)` : ''}${command.confirm ? ' Asks first.' : ''}`);
|
|
53
|
+
}
|
|
54
|
+
if (manifest.withheld.length > 0) {
|
|
55
|
+
const byAction = manifest.withheld.filter((command) => command.reason === 'action');
|
|
56
|
+
if (byAction.length > 0) {
|
|
57
|
+
lines.push('', '## Not offered', '', 'These need an action the caller does not hold; ask whoever manages permissions:', '');
|
|
58
|
+
for (const command of byAction)
|
|
59
|
+
lines.push(`- \`${words(command)}\`: needs \`${command.action}\``);
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
return `${lines.join('\n')}\n`;
|
|
63
|
+
}
|
|
64
|
+
//# sourceMappingURL=reference.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"reference.js","sourceRoot":"","sources":["../../../src/router/cli/reference.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { Hono } from 'hono';
|
|
2
|
+
import type { ApiDocsService } from '../openapi/service.js';
|
|
3
|
+
import type { CliService } from './service.js';
|
|
4
|
+
/**
|
|
5
|
+
* `GET /cli/manifest`, mounted under `/api`: the commands the caller may run, derived from the API document and
|
|
6
|
+
* filtered by who calls. Without a caller resolver it answers `404 ROUTE_NOT_FOUND`, like a path that does not exist.
|
|
7
|
+
*/
|
|
8
|
+
export declare function createCliRouter(cli: CliService, docs: ApiDocsService): Hono;
|
|
9
|
+
//# sourceMappingURL=routes.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"routes.d.ts","sourceRoot":"","sources":["../../../src/router/cli/routes.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAgB,MAAM,MAAM,CAAC;AAc1C,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAC5D,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AA2K/C;;;GAGG;AACH,wBAAgB,eAAe,CAAC,GAAG,EAAE,UAAU,EAAE,IAAI,EAAE,cAAc,GAAG,IAAI,CAuF3E"}
|
|
@@ -0,0 +1,228 @@
|
|
|
1
|
+
import { Hono } from 'hono';
|
|
2
|
+
import { z } from 'zod';
|
|
3
|
+
import { ApiError, apiErrorHandler, apiNotFoundHandler, appErrorDomain, } from '../api-error.js';
|
|
4
|
+
import { apiErrorResponse, dataResponse, describeRoute, } from '../openapi/describe.js';
|
|
5
|
+
import { renderCliReference } from './reference.js';
|
|
6
|
+
import { cliRoute } from './types.js';
|
|
7
|
+
const Identity = z.enum(['person', 'run']);
|
|
8
|
+
const CliParameterSchema = z
|
|
9
|
+
.object({
|
|
10
|
+
name: z.string(),
|
|
11
|
+
field: z.string(),
|
|
12
|
+
in: z.enum(['path', 'query', 'body', 'file']),
|
|
13
|
+
position: z.number().int().optional(),
|
|
14
|
+
type: z.enum([
|
|
15
|
+
'string',
|
|
16
|
+
'number',
|
|
17
|
+
'integer',
|
|
18
|
+
'boolean',
|
|
19
|
+
'string[]',
|
|
20
|
+
'number[]',
|
|
21
|
+
'json',
|
|
22
|
+
]),
|
|
23
|
+
required: z.boolean(),
|
|
24
|
+
description: z.string().optional(),
|
|
25
|
+
enum: z.array(z.string()).optional(),
|
|
26
|
+
default: z.unknown().optional(),
|
|
27
|
+
alias: z.string().optional(),
|
|
28
|
+
contentFile: z.boolean().optional(),
|
|
29
|
+
prompt: z.boolean().optional(),
|
|
30
|
+
fromEnv: z.string().optional(),
|
|
31
|
+
env: z
|
|
32
|
+
.array(z.union([z.string(), z.object({ file: z.string(), path: z.string() })]))
|
|
33
|
+
.optional()
|
|
34
|
+
.meta({
|
|
35
|
+
description: 'Read from the environment when not given, the first found wins: a variable, or a field (dot-separated `path`) of the JSON file the variable `file` names.',
|
|
36
|
+
}),
|
|
37
|
+
upload: z
|
|
38
|
+
.object({
|
|
39
|
+
method: z.string(),
|
|
40
|
+
path: z.string(),
|
|
41
|
+
part: z.string(),
|
|
42
|
+
field: z.string(),
|
|
43
|
+
multiple: z.boolean(),
|
|
44
|
+
maxBytes: z.number().int().optional(),
|
|
45
|
+
})
|
|
46
|
+
.optional(),
|
|
47
|
+
ticket: z
|
|
48
|
+
.object({
|
|
49
|
+
maxBytes: z.number().int(),
|
|
50
|
+
accept: z.array(z.string()).optional(),
|
|
51
|
+
optional: z.boolean().optional(),
|
|
52
|
+
})
|
|
53
|
+
.optional(),
|
|
54
|
+
changed: z
|
|
55
|
+
.object({
|
|
56
|
+
dir: z.string(),
|
|
57
|
+
manifest: z.string(),
|
|
58
|
+
maxBytes: z.number().int(),
|
|
59
|
+
maxFiles: z.number().int(),
|
|
60
|
+
accept: z.array(z.string()).optional(),
|
|
61
|
+
})
|
|
62
|
+
.optional(),
|
|
63
|
+
binary: z.boolean().optional(),
|
|
64
|
+
multiple: z.boolean().optional(),
|
|
65
|
+
})
|
|
66
|
+
.meta({ ref: 'CliParameter' });
|
|
67
|
+
const CliCommandSchema = z
|
|
68
|
+
.object({
|
|
69
|
+
id: z.string().meta({
|
|
70
|
+
description: 'The command words joined by `:`, such as `issue:get`.',
|
|
71
|
+
}),
|
|
72
|
+
summary: z.string(),
|
|
73
|
+
description: z.string().optional(),
|
|
74
|
+
operationId: z.string().optional(),
|
|
75
|
+
method: z.enum(['GET', 'POST', 'PUT', 'PATCH', 'DELETE']),
|
|
76
|
+
path: z.string().meta({
|
|
77
|
+
description: 'The request path, the base path included, with `{name}` placeholders.',
|
|
78
|
+
}),
|
|
79
|
+
parameters: z.array(CliParameterSchema),
|
|
80
|
+
body: z
|
|
81
|
+
.object({
|
|
82
|
+
media: z.enum(['application/json', 'multipart/form-data']),
|
|
83
|
+
file: z.string().optional(),
|
|
84
|
+
required: z.boolean().optional(),
|
|
85
|
+
})
|
|
86
|
+
.optional(),
|
|
87
|
+
output: z.object({
|
|
88
|
+
kind: z.enum(['data', 'list', 'empty', 'download']),
|
|
89
|
+
columns: z.array(z.string()).optional(),
|
|
90
|
+
}),
|
|
91
|
+
confirm: z.string().optional(),
|
|
92
|
+
examples: z.array(z.string()).optional(),
|
|
93
|
+
identities: z.array(Identity),
|
|
94
|
+
action: z.string().optional(),
|
|
95
|
+
})
|
|
96
|
+
.meta({ ref: 'CliCommand' });
|
|
97
|
+
const CliManifestSchema = z
|
|
98
|
+
.object({
|
|
99
|
+
version: z.number().int(),
|
|
100
|
+
etag: z.string(),
|
|
101
|
+
identity: z.object({
|
|
102
|
+
kind: Identity,
|
|
103
|
+
userId: z.string(),
|
|
104
|
+
displayName: z.string(),
|
|
105
|
+
runId: z.string().optional(),
|
|
106
|
+
actions: z.array(z.string()).meta({
|
|
107
|
+
description: 'The business actions the caller holds.',
|
|
108
|
+
}),
|
|
109
|
+
}),
|
|
110
|
+
commands: z.array(CliCommandSchema),
|
|
111
|
+
withheld: z
|
|
112
|
+
.array(z
|
|
113
|
+
.object({
|
|
114
|
+
id: z.string(),
|
|
115
|
+
summary: z.string(),
|
|
116
|
+
reason: z.enum(['identity', 'action']),
|
|
117
|
+
identities: z.array(Identity),
|
|
118
|
+
action: z.string().optional(),
|
|
119
|
+
})
|
|
120
|
+
.meta({ ref: 'CliWithheldCommand' }))
|
|
121
|
+
.meta({
|
|
122
|
+
description: 'The commands the document describes that the caller is not offered: another identity’s, or naming an action it does not hold.',
|
|
123
|
+
}),
|
|
124
|
+
})
|
|
125
|
+
.meta({ ref: 'CliManifest' });
|
|
126
|
+
const MANIFEST_OPERATION = 'cliGetManifest';
|
|
127
|
+
const REFERENCE_OPERATION = 'cliGetReference';
|
|
128
|
+
const bound = new WeakMap();
|
|
129
|
+
/**
|
|
130
|
+
* The manifest takes every credential that names a CLI identity: the document's own (a session, an API key) and each
|
|
131
|
+
* scheme `addIdentityScheme()` names that the document declares, such as an agent's run token.
|
|
132
|
+
*/
|
|
133
|
+
function bindManifestSecurity(cli, docs) {
|
|
134
|
+
if (bound.get(docs) === cli)
|
|
135
|
+
return;
|
|
136
|
+
bound.set(docs, cli);
|
|
137
|
+
cli.onChange(() => docs.invalidate());
|
|
138
|
+
docs.addTransform((document) => {
|
|
139
|
+
const operations = Object.values(document.paths ?? {})
|
|
140
|
+
.map((item) => item?.get)
|
|
141
|
+
.filter((candidate) => candidate?.operationId === MANIFEST_OPERATION ||
|
|
142
|
+
candidate?.operationId === REFERENCE_OPERATION);
|
|
143
|
+
const declared = document.components?.securitySchemes ?? {};
|
|
144
|
+
for (const operation of operations) {
|
|
145
|
+
if (!operation)
|
|
146
|
+
continue;
|
|
147
|
+
const base = operation.security ?? document.security ?? [];
|
|
148
|
+
const named = new Set(base.flatMap((requirement) => Object.keys(requirement)));
|
|
149
|
+
const extra = Object.keys(cli.identitySchemes())
|
|
150
|
+
.filter((scheme) => scheme in declared && !named.has(scheme))
|
|
151
|
+
.sort()
|
|
152
|
+
.map((scheme) => ({ [scheme]: [] }));
|
|
153
|
+
if (extra.length > 0)
|
|
154
|
+
operation.security = [...base, ...extra];
|
|
155
|
+
}
|
|
156
|
+
});
|
|
157
|
+
}
|
|
158
|
+
/**
|
|
159
|
+
* `GET /cli/manifest`, mounted under `/api`: the commands the caller may run, derived from the API document and
|
|
160
|
+
* filtered by who calls. Without a caller resolver it answers `404 ROUTE_NOT_FOUND`, like a path that does not exist.
|
|
161
|
+
*/
|
|
162
|
+
export function createCliRouter(cli, docs) {
|
|
163
|
+
bindManifestSecurity(cli, docs);
|
|
164
|
+
const router = new Hono();
|
|
165
|
+
router.onError(apiErrorHandler);
|
|
166
|
+
const manifestOf = async (context) => {
|
|
167
|
+
const caller = await cli.callerOf(context);
|
|
168
|
+
if (!caller)
|
|
169
|
+
throw new ApiError({
|
|
170
|
+
status: 'UNAUTHENTICATED',
|
|
171
|
+
reason: 'CLI_UNAUTHENTICATED',
|
|
172
|
+
domain: appErrorDomain,
|
|
173
|
+
message: 'Sign in, or present an API key or a run token.',
|
|
174
|
+
});
|
|
175
|
+
return cli.manifestFor(await docs.getDocument(), caller);
|
|
176
|
+
};
|
|
177
|
+
router.get('/cli/manifest', describeRoute({
|
|
178
|
+
tags: ['Cli'],
|
|
179
|
+
summary: 'Get the command-line manifest',
|
|
180
|
+
operationId: MANIFEST_OPERATION,
|
|
181
|
+
description: "The commands the caller may run, derived from this document: each operation's `x-cli` extension, or its tag, path and method. A person signs in or presents an API key; an agent's run presents its run token. Answers an `etag`; a request whose `if-none-match` names the current one is answered `304` without a body.",
|
|
182
|
+
responses: {
|
|
183
|
+
200: dataResponse(CliManifestSchema),
|
|
184
|
+
304: {
|
|
185
|
+
description: 'The manifest has not changed since `if-none-match`.',
|
|
186
|
+
},
|
|
187
|
+
401: apiErrorResponse(401, 'No credential the application recognizes (`CLI_UNAUTHENTICATED`).'),
|
|
188
|
+
404: apiErrorResponse(404, 'The application recognizes no CLI callers (`ROUTE_NOT_FOUND`).'),
|
|
189
|
+
500: apiErrorResponse(500),
|
|
190
|
+
},
|
|
191
|
+
...cliRoute(false),
|
|
192
|
+
}), async (context) => {
|
|
193
|
+
if (!cli.hasCallers())
|
|
194
|
+
return apiNotFoundHandler(context);
|
|
195
|
+
const manifest = await manifestOf(context);
|
|
196
|
+
context.header('etag', `"${manifest.etag}"`);
|
|
197
|
+
context.header('cache-control', 'private, no-cache');
|
|
198
|
+
const asked = context.req.header('if-none-match');
|
|
199
|
+
if (asked &&
|
|
200
|
+
asked.replace(/^W\//u, '').replaceAll('"', '') === manifest.etag)
|
|
201
|
+
return context.body(null, 304);
|
|
202
|
+
return context.json({ data: manifest });
|
|
203
|
+
});
|
|
204
|
+
router.get('/cli/llms.txt', describeRoute({
|
|
205
|
+
tags: ['Cli'],
|
|
206
|
+
summary: 'Get the command-line reference for agents',
|
|
207
|
+
operationId: REFERENCE_OPERATION,
|
|
208
|
+
description: 'The commands the caller may run as compact Markdown an agent reads before using the CLI: how it answers, one line per command with its usage, summary and action, and the commands that need an action the caller does not hold. Takes the same credentials as the manifest.',
|
|
209
|
+
responses: {
|
|
210
|
+
200: {
|
|
211
|
+
description: 'The reference.',
|
|
212
|
+
content: { 'text/plain': { schema: { type: 'string' } } },
|
|
213
|
+
},
|
|
214
|
+
401: apiErrorResponse(401, 'No credential the application recognizes (`CLI_UNAUTHENTICATED`).'),
|
|
215
|
+
404: apiErrorResponse(404, 'The application recognizes no CLI callers (`ROUTE_NOT_FOUND`).'),
|
|
216
|
+
500: apiErrorResponse(500),
|
|
217
|
+
},
|
|
218
|
+
...cliRoute(false),
|
|
219
|
+
}), async (context) => {
|
|
220
|
+
if (!cli.hasCallers())
|
|
221
|
+
return apiNotFoundHandler(context);
|
|
222
|
+
const manifest = await manifestOf(context);
|
|
223
|
+
context.header('cache-control', 'private, no-cache');
|
|
224
|
+
return context.text(renderCliReference(manifest, cli.described()));
|
|
225
|
+
});
|
|
226
|
+
return router;
|
|
227
|
+
}
|
|
228
|
+
//# sourceMappingURL=routes.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"routes.js","sourceRoot":"","sources":["../../../src/router/cli/routes.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
import { type ServiceToken } from '@nocobase/service-provider';
|
|
2
|
+
import type { Context } from 'hono';
|
|
3
|
+
import type { ApiDocument } from '../openapi/document.js';
|
|
4
|
+
import type { CliCaller, CliCommand, CliDescription, CliExclusion, CliIdentity, CliManifest } from './types.js';
|
|
5
|
+
/**
|
|
6
|
+
* Tells who calls the CLI manifest: a caller, `null` for a request it recognizes but refuses, or `undefined` to leave
|
|
7
|
+
* the request to the other resolvers. It may throw an `ApiError` to answer with a status of its own.
|
|
8
|
+
*/
|
|
9
|
+
export type CliCallerResolver = (context: Context) => Promise<CliCaller | null | undefined> | CliCaller | null | undefined;
|
|
10
|
+
/**
|
|
11
|
+
* The application's command-line surface: the commands its API document describes, filtered per caller. Who a caller is
|
|
12
|
+
* comes from the resolvers plugins register (the framework knows no credential); which security schemes name which
|
|
13
|
+
* identity from `addIdentityScheme()`; which documented
|
|
14
|
+
* operations stay off the command line from `exclude()`.
|
|
15
|
+
*/
|
|
16
|
+
export declare class CliService {
|
|
17
|
+
private readonly resolvers;
|
|
18
|
+
private readonly schemes;
|
|
19
|
+
private readonly exclusions;
|
|
20
|
+
private readonly listeners;
|
|
21
|
+
private description;
|
|
22
|
+
private derived;
|
|
23
|
+
/** Recognize callers with `resolver`. Returns a function that removes it. */
|
|
24
|
+
addCaller(resolver: CliCallerResolver): () => void;
|
|
25
|
+
/** An operation whose security names `scheme` is offered to `identity`. Returns a function that removes it. */
|
|
26
|
+
addIdentityScheme(scheme: string, identity: CliIdentity): () => void;
|
|
27
|
+
/** The security schemes `addIdentityScheme()` named, beside the session and the API key. */
|
|
28
|
+
identitySchemes(): Readonly<Record<string, CliIdentity>>;
|
|
29
|
+
/** Keeps the operations `rule` matches off the command line; they stay documented. Returns what removes it. */
|
|
30
|
+
exclude(rule: CliExclusion): () => void;
|
|
31
|
+
/** Calls `listener` whenever the identity schemes or exclusions change. Returns what removes it. */
|
|
32
|
+
onChange(listener: () => void): () => void;
|
|
33
|
+
/** Names the application's CLI, for the agent-readable reference (`GET /api/cli/llms.txt`). */
|
|
34
|
+
describe(description: CliDescription): void;
|
|
35
|
+
/** What `describe()` said. */
|
|
36
|
+
described(): CliDescription;
|
|
37
|
+
/** Whether any resolver is registered: without one, nobody can be told apart and there is no manifest. */
|
|
38
|
+
hasCallers(): boolean;
|
|
39
|
+
/** Who calls, by the first resolver that recognizes the request; `null` when none does. */
|
|
40
|
+
callerOf(context: Context): Promise<CliCaller | null>;
|
|
41
|
+
/** Every command `document` describes, derived once per document. */
|
|
42
|
+
commandsOf(document: ApiDocument): readonly CliCommand[];
|
|
43
|
+
/** The manifest of `caller`: the commands `document` describes that it may run. */
|
|
44
|
+
manifestFor(document: ApiDocument, caller: CliCaller): CliManifest;
|
|
45
|
+
private changed;
|
|
46
|
+
private track;
|
|
47
|
+
}
|
|
48
|
+
/** The application's `CliService`; a plugin resolves it to recognize callers or add commands. */
|
|
49
|
+
export declare const cliToken: ServiceToken<CliService>;
|
|
50
|
+
//# sourceMappingURL=service.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"service.d.ts","sourceRoot":"","sources":["../../../src/router/cli/service.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,KAAK,YAAY,EAClB,MAAM,4BAA4B,CAAC;AACpC,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,MAAM,CAAC;AAEpC,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAC;AAM1D,OAAO,KAAK,EACV,SAAS,EACT,UAAU,EACV,cAAc,EACd,YAAY,EACZ,WAAW,EACX,WAAW,EACZ,MAAM,YAAY,CAAC;AAEpB;;;GAGG;AACH,MAAM,MAAM,iBAAiB,GAAG,CAC9B,OAAO,EAAE,OAAO,KACb,OAAO,CAAC,SAAS,GAAG,IAAI,GAAG,SAAS,CAAC,GAAG,SAAS,GAAG,IAAI,GAAG,SAAS,CAAC;AAE1E;;;;;GAKG;AACH,qBAAa,UAAU;IACrB,OAAO,CAAC,QAAQ,CAAC,SAAS,CAA2B;IACrD,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAmC;IAC3D,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAsB;IACjD,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAsB;IAChD,OAAO,CAAC,WAAW,CAAsB;IACzC,OAAO,CAAC,OAAO,CAED;IAEd,6EAA6E;IACtE,SAAS,CAAC,QAAQ,EAAE,iBAAiB,GAAG,MAAM,IAAI;IAIzD,+GAA+G;IACxG,iBAAiB,CAAC,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,WAAW,GAAG,MAAM,IAAI;IAS3E,4FAA4F;IACrF,eAAe,IAAI,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,WAAW,CAAC,CAAC;IAI/D,+GAA+G;IACxG,OAAO,CAAC,IAAI,EAAE,YAAY,GAAG,MAAM,IAAI;IAU9C,oGAAoG;IAC7F,QAAQ,CAAC,QAAQ,EAAE,MAAM,IAAI,GAAG,MAAM,IAAI;IAIjD,+FAA+F;IACxF,QAAQ,CAAC,WAAW,EAAE,cAAc,GAAG,IAAI;IAIlD,8BAA8B;IACvB,SAAS,IAAI,cAAc;IAIlC,0GAA0G;IACnG,UAAU,IAAI,OAAO;IAI5B,2FAA2F;IAC9E,QAAQ,CAAC,OAAO,EAAE,OAAO,GAAG,OAAO,CAAC,SAAS,GAAG,IAAI,CAAC;IAQlE,qEAAqE;IAC9D,UAAU,CAAC,QAAQ,EAAE,WAAW,GAAG,SAAS,UAAU,EAAE;IAc/D,mFAAmF;IAC5E,WAAW,CAAC,QAAQ,EAAE,WAAW,EAAE,MAAM,EAAE,SAAS,GAAG,WAAW;IAIzE,OAAO,CAAC,OAAO;IAKf,OAAO,CAAC,KAAK;CAOd;AAED,iGAAiG;AACjG,eAAO,MAAM,QAAQ,EAAE,YAAY,CAAC,UAAU,CACO,CAAC"}
|
|
@@ -0,0 +1,104 @@
|
|
|
1
|
+
import { createServiceToken, } from '@nocobase/service-provider';
|
|
2
|
+
import { cliManifestOf, deriveAllCliCommands, } from './derive.js';
|
|
3
|
+
/**
|
|
4
|
+
* The application's command-line surface: the commands its API document describes, filtered per caller. Who a caller is
|
|
5
|
+
* comes from the resolvers plugins register (the framework knows no credential); which security schemes name which
|
|
6
|
+
* identity from `addIdentityScheme()`; which documented
|
|
7
|
+
* operations stay off the command line from `exclude()`.
|
|
8
|
+
*/
|
|
9
|
+
export class CliService {
|
|
10
|
+
resolvers = [];
|
|
11
|
+
schemes = {};
|
|
12
|
+
exclusions = [];
|
|
13
|
+
listeners = [];
|
|
14
|
+
description = {};
|
|
15
|
+
derived;
|
|
16
|
+
/** Recognize callers with `resolver`. Returns a function that removes it. */
|
|
17
|
+
addCaller(resolver) {
|
|
18
|
+
return this.track(this.resolvers, resolver);
|
|
19
|
+
}
|
|
20
|
+
/** An operation whose security names `scheme` is offered to `identity`. Returns a function that removes it. */
|
|
21
|
+
addIdentityScheme(scheme, identity) {
|
|
22
|
+
this.schemes[scheme] = identity;
|
|
23
|
+
this.changed();
|
|
24
|
+
return () => {
|
|
25
|
+
if (this.schemes[scheme] === identity)
|
|
26
|
+
delete this.schemes[scheme];
|
|
27
|
+
this.changed();
|
|
28
|
+
};
|
|
29
|
+
}
|
|
30
|
+
/** The security schemes `addIdentityScheme()` named, beside the session and the API key. */
|
|
31
|
+
identitySchemes() {
|
|
32
|
+
return { ...this.schemes };
|
|
33
|
+
}
|
|
34
|
+
/** Keeps the operations `rule` matches off the command line; they stay documented. Returns what removes it. */
|
|
35
|
+
exclude(rule) {
|
|
36
|
+
this.exclusions.push(rule);
|
|
37
|
+
this.changed();
|
|
38
|
+
return () => {
|
|
39
|
+
const index = this.exclusions.indexOf(rule);
|
|
40
|
+
if (index >= 0)
|
|
41
|
+
this.exclusions.splice(index, 1);
|
|
42
|
+
this.changed();
|
|
43
|
+
};
|
|
44
|
+
}
|
|
45
|
+
/** Calls `listener` whenever the identity schemes or exclusions change. Returns what removes it. */
|
|
46
|
+
onChange(listener) {
|
|
47
|
+
return this.track(this.listeners, listener);
|
|
48
|
+
}
|
|
49
|
+
/** Names the application's CLI, for the agent-readable reference (`GET /api/cli/llms.txt`). */
|
|
50
|
+
describe(description) {
|
|
51
|
+
this.description = { ...this.description, ...description };
|
|
52
|
+
}
|
|
53
|
+
/** What `describe()` said. */
|
|
54
|
+
described() {
|
|
55
|
+
return { ...this.description };
|
|
56
|
+
}
|
|
57
|
+
/** Whether any resolver is registered: without one, nobody can be told apart and there is no manifest. */
|
|
58
|
+
hasCallers() {
|
|
59
|
+
return this.resolvers.length > 0;
|
|
60
|
+
}
|
|
61
|
+
/** Who calls, by the first resolver that recognizes the request; `null` when none does. */
|
|
62
|
+
async callerOf(context) {
|
|
63
|
+
for (const resolver of [...this.resolvers]) {
|
|
64
|
+
const caller = await resolver(context);
|
|
65
|
+
if (caller !== undefined)
|
|
66
|
+
return caller;
|
|
67
|
+
}
|
|
68
|
+
return null;
|
|
69
|
+
}
|
|
70
|
+
/** Every command `document` describes, derived once per document. */
|
|
71
|
+
commandsOf(document) {
|
|
72
|
+
if (this.derived?.document !== document) {
|
|
73
|
+
const options = {
|
|
74
|
+
identitySchemes: { ...this.schemes },
|
|
75
|
+
exclude: [...this.exclusions],
|
|
76
|
+
};
|
|
77
|
+
this.derived = {
|
|
78
|
+
document,
|
|
79
|
+
commands: deriveAllCliCommands(document, options),
|
|
80
|
+
};
|
|
81
|
+
}
|
|
82
|
+
return this.derived.commands;
|
|
83
|
+
}
|
|
84
|
+
/** The manifest of `caller`: the commands `document` describes that it may run. */
|
|
85
|
+
manifestFor(document, caller) {
|
|
86
|
+
return cliManifestOf(this.commandsOf(document), caller);
|
|
87
|
+
}
|
|
88
|
+
changed() {
|
|
89
|
+
this.derived = undefined;
|
|
90
|
+
for (const listener of [...this.listeners])
|
|
91
|
+
listener();
|
|
92
|
+
}
|
|
93
|
+
track(list, entry) {
|
|
94
|
+
list.push(entry);
|
|
95
|
+
return () => {
|
|
96
|
+
const index = list.indexOf(entry);
|
|
97
|
+
if (index >= 0)
|
|
98
|
+
list.splice(index, 1);
|
|
99
|
+
};
|
|
100
|
+
}
|
|
101
|
+
}
|
|
102
|
+
/** The application's `CliService`; a plugin resolves it to recognize callers or add commands. */
|
|
103
|
+
export const cliToken = createServiceToken('@nocobase/app/cli');
|
|
104
|
+
//# sourceMappingURL=service.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"service.js","sourceRoot":"","sources":["../../../src/router/cli/service.ts"],"names":[],"mappings":"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"}
|