aimeat 3.1.0 → 3.3.0
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/dist/.env.example +58 -1
- package/dist/build-stamp.json +4 -4
- package/dist/locales/en.json +9225 -9103
- package/dist/locales/es.json +9217 -9095
- package/dist/locales/fi.json +9225 -9103
- package/dist/public/changelog.json +12 -0
- package/dist/public/css/views/admin.css +11 -0
- package/dist/public/css/views/chat.css +388 -0
- package/dist/public/css/views/profile.css +41 -0
- package/dist/public/js/services/admin.js +346 -331
- package/dist/public/js/services/chat.js +190 -0
- package/dist/public/js/services/organism-roles.js +51 -0
- package/dist/public/js/services/organisms.js +5 -25
- package/dist/public/js/services/speech-reader.js +26 -0
- package/dist/public/lib/VENDORED.md +1 -0
- package/dist/public/lib/duckdb-wasm@1.32.0/duckdb-browser-eh.worker.js +14 -0
- package/dist/public/lib/duckdb-wasm@1.32.0/duckdb-browser.js +23 -0
- package/dist/public/lib/duckdb-wasm@1.32.0/duckdb-eh.wasm +0 -0
- package/dist/public/lib/duckdb-wasm@1.32.0/extensions/v1.4.3/wasm_eh/parquet.duckdb_extension.wasm +0 -0
- package/dist/public/lib/vendored-assets.json +19 -0
- package/dist/public/llms-full-template.txt +2706 -0
- package/dist/public/llms-index-template.txt +60 -0
- package/dist/public/robots.node.txt +64 -23
- package/dist/public/spa.html +9 -1
- package/dist/public/views/admin/organism-ownership-tab.js +124 -0
- package/dist/public/views/admin/owners-tab.js +15 -4
- package/dist/public/views/admin/usage-tab.calls.js +120 -0
- package/dist/public/views/admin/usage-tab.js +18 -4
- package/dist/public/views/admin.js +2 -0
- package/dist/public/views/chat/parts.js +257 -0
- package/dist/public/views/chat.js +327 -0
- package/dist/public/views/landing.js +24 -1
- package/dist/public/views/profile/agents/scope-model.js +320 -296
- package/dist/public/views/profile/landing-page.cards.js +1 -0
- package/dist/public/views/profile/organisms/home.js +3 -1
- package/dist/public/views/profile/organisms/members.js +29 -4
- package/dist/public/views/profile/usage-tab.js +204 -0
- package/dist/public/views/profile.js +2 -0
- package/dist/scripts/audit-mcp-schemas.js +41 -0
- package/dist/scripts/audit-mcp-schemas.js.map +1 -1
- package/dist/scripts/build-sdk-libs.d.ts.map +1 -1
- package/dist/scripts/build-sdk-libs.js +1 -0
- package/dist/scripts/build-sdk-libs.js.map +1 -1
- package/dist/scripts/check-ai-disclosure.js +11 -0
- package/dist/scripts/check-ai-disclosure.js.map +1 -1
- package/dist/scripts/check-commit-msg.d.ts +8 -0
- package/dist/scripts/check-commit-msg.d.ts.map +1 -0
- package/dist/scripts/check-commit-msg.js +118 -0
- package/dist/scripts/check-commit-msg.js.map +1 -0
- package/dist/scripts/check-denial-coverage.d.ts +29 -0
- package/dist/scripts/check-denial-coverage.d.ts.map +1 -0
- package/dist/scripts/check-denial-coverage.js +237 -0
- package/dist/scripts/check-denial-coverage.js.map +1 -0
- package/dist/scripts/check-ext-entrypoints.js +14 -2
- package/dist/scripts/check-ext-entrypoints.js.map +1 -1
- package/dist/scripts/check-liaison-surface.js +27 -2
- package/dist/scripts/check-liaison-surface.js.map +1 -1
- package/dist/scripts/check-locales.js +38 -0
- package/dist/scripts/check-locales.js.map +1 -1
- package/dist/scripts/check-outbound-fetch.d.ts.map +1 -1
- package/dist/scripts/check-outbound-fetch.js +16 -2
- package/dist/scripts/check-outbound-fetch.js.map +1 -1
- package/dist/scripts/check-route-scopes.d.ts.map +1 -1
- package/dist/scripts/check-route-scopes.js +33 -4
- package/dist/scripts/check-route-scopes.js.map +1 -1
- package/dist/scripts/check-shared-implementation.js +28 -11
- package/dist/scripts/check-shared-implementation.js.map +1 -1
- package/dist/scripts/check-sse-parity.js +14 -0
- package/dist/scripts/check-sse-parity.js.map +1 -1
- package/dist/scripts/check-trusted-keys.d.ts +90 -1
- package/dist/scripts/check-trusted-keys.d.ts.map +1 -1
- package/dist/scripts/check-trusted-keys.js +521 -52
- package/dist/scripts/check-trusted-keys.js.map +1 -1
- package/dist/scripts/indexnow.js +9 -7
- package/dist/scripts/indexnow.js.map +1 -1
- package/dist/src/auth/middleware.d.ts +69 -6
- package/dist/src/auth/middleware.d.ts.map +1 -1
- package/dist/src/auth/middleware.js +130 -28
- package/dist/src/auth/middleware.js.map +1 -1
- package/dist/src/cli/connect/mcp/tools/agent-tasks.d.ts +5 -0
- package/dist/src/cli/connect/mcp/tools/agent-tasks.d.ts.map +1 -1
- package/dist/src/cli/connect/mcp/tools/agent-tasks.js +20 -2
- package/dist/src/cli/connect/mcp/tools/agent-tasks.js.map +1 -1
- package/dist/src/cli/connect/mcp/tools/agent-telemetry.d.ts +7 -1
- package/dist/src/cli/connect/mcp/tools/agent-telemetry.d.ts.map +1 -1
- package/dist/src/cli/connect/mcp/tools/agent-telemetry.js +24 -0
- package/dist/src/cli/connect/mcp/tools/agent-telemetry.js.map +1 -1
- package/dist/src/cli/connect/mcp/tools/apps.d.ts.map +1 -1
- package/dist/src/cli/connect/mcp/tools/apps.js +88 -0
- package/dist/src/cli/connect/mcp/tools/apps.js.map +1 -1
- package/dist/src/cli/connect/mcp/tools/core.d.ts +7 -0
- package/dist/src/cli/connect/mcp/tools/core.d.ts.map +1 -1
- package/dist/src/cli/connect/mcp/tools/core.js +83 -4
- package/dist/src/cli/connect/mcp/tools/core.js.map +1 -1
- package/dist/src/cli/connect/mcp/tools/organisms.d.ts +2 -0
- package/dist/src/cli/connect/mcp/tools/organisms.d.ts.map +1 -1
- package/dist/src/cli/connect/mcp/tools/organisms.js +16 -0
- package/dist/src/cli/connect/mcp/tools/organisms.js.map +1 -1
- package/dist/src/cli/connect/onboarding-prompt.js +1 -1
- package/dist/src/cli/connect/skill-bundle.js +1 -1
- package/dist/src/cli/connect/tool-call-defs-agent.d.ts +1 -0
- package/dist/src/cli/connect/tool-call-defs-agent.d.ts.map +1 -1
- package/dist/src/cli/connect/tool-call-defs-agent.js +6 -0
- package/dist/src/cli/connect/tool-call-defs-agent.js.map +1 -1
- package/dist/src/cli/connect/tool-call-defs-app-draft-edit.d.ts +21 -0
- package/dist/src/cli/connect/tool-call-defs-app-draft-edit.d.ts.map +1 -0
- package/dist/src/cli/connect/tool-call-defs-app-draft-edit.js +137 -0
- package/dist/src/cli/connect/tool-call-defs-app-draft-edit.js.map +1 -0
- package/dist/src/cli/connect/tool-call-defs-core.d.ts +1 -0
- package/dist/src/cli/connect/tool-call-defs-core.d.ts.map +1 -1
- package/dist/src/cli/connect/tool-call-defs-core.js +30 -0
- package/dist/src/cli/connect/tool-call-defs-core.js.map +1 -1
- package/dist/src/cli/connect/tool-call.d.ts.map +1 -1
- package/dist/src/cli/connect/tool-call.js +2 -0
- package/dist/src/cli/connect/tool-call.js.map +1 -1
- package/dist/src/config-types-ai.d.ts +76 -0
- package/dist/src/config-types-ai.d.ts.map +1 -0
- package/dist/src/config-types-ai.js +15 -0
- package/dist/src/config-types-ai.js.map +1 -0
- package/dist/src/config-types.d.ts +11 -2
- package/dist/src/config-types.d.ts.map +1 -1
- package/dist/src/config.d.ts.map +1 -1
- package/dist/src/config.js +25 -4
- package/dist/src/config.js.map +1 -1
- package/dist/src/data/appdev-pitfalls.d.ts +1 -0
- package/dist/src/data/appdev-pitfalls.d.ts.map +1 -1
- package/dist/src/data/appdev-pitfalls.js +11 -0
- package/dist/src/data/appdev-pitfalls.js.map +1 -1
- package/dist/src/data/builtin-skills.d.ts.map +1 -1
- package/dist/src/data/builtin-skills.js +3 -2
- package/dist/src/data/builtin-skills.js.map +1 -1
- package/dist/src/data/digital-signage-package.js +1 -1
- package/dist/src/data/library-packs/sdk.d.ts.map +1 -1
- package/dist/src/data/library-packs/sdk.js +76 -0
- package/dist/src/data/library-packs/sdk.js.map +1 -1
- package/dist/src/data/library-packs/vendored.d.ts.map +1 -1
- package/dist/src/data/library-packs/vendored.js +81 -0
- package/dist/src/data/library-packs/vendored.js.map +1 -1
- package/dist/src/data/library-packs.d.ts +2 -2
- package/dist/src/data/library-packs.js +2 -2
- package/dist/src/data/public-pages.d.ts +13 -0
- package/dist/src/data/public-pages.d.ts.map +1 -1
- package/dist/src/data/public-pages.js +153 -113
- package/dist/src/data/public-pages.js.map +1 -1
- package/dist/src/generated/api-types.d.ts +2251 -102
- package/dist/src/generated/api-types.d.ts.map +1 -1
- package/dist/src/index-start.d.ts.map +1 -1
- package/dist/src/index-start.js +21 -1
- package/dist/src/index-start.js.map +1 -1
- package/dist/src/mcp/agent-tasks.d.ts +16 -0
- package/dist/src/mcp/agent-tasks.d.ts.map +1 -1
- package/dist/src/mcp/agent-tasks.js +84 -54
- package/dist/src/mcp/agent-tasks.js.map +1 -1
- package/dist/src/mcp/agent-telemetry.d.ts +6 -1
- package/dist/src/mcp/agent-telemetry.d.ts.map +1 -1
- package/dist/src/mcp/agent-telemetry.js +37 -1
- package/dist/src/mcp/agent-telemetry.js.map +1 -1
- package/dist/src/mcp/ai-image.d.ts +22 -0
- package/dist/src/mcp/ai-image.d.ts.map +1 -0
- package/dist/src/mcp/ai-image.js +60 -0
- package/dist/src/mcp/ai-image.js.map +1 -0
- package/dist/src/mcp/annotations.d.ts +5 -0
- package/dist/src/mcp/annotations.d.ts.map +1 -1
- package/dist/src/mcp/annotations.js +23 -0
- package/dist/src/mcp/annotations.js.map +1 -1
- package/dist/src/mcp/apps-draft-edit.d.ts +28 -0
- package/dist/src/mcp/apps-draft-edit.d.ts.map +1 -0
- package/dist/src/mcp/apps-draft-edit.js +164 -0
- package/dist/src/mcp/apps-draft-edit.js.map +1 -0
- package/dist/src/mcp/apps-screenshot.d.ts +26 -0
- package/dist/src/mcp/apps-screenshot.d.ts.map +1 -0
- package/dist/src/mcp/apps-screenshot.js +39 -0
- package/dist/src/mcp/apps-screenshot.js.map +1 -0
- package/dist/src/mcp/catalog/definitions/agent-messaging.d.ts.map +1 -1
- package/dist/src/mcp/catalog/definitions/agent-messaging.js +18 -0
- package/dist/src/mcp/catalog/definitions/agent-messaging.js.map +1 -1
- package/dist/src/mcp/catalog/definitions/discovery-work-boards.d.ts +1 -0
- package/dist/src/mcp/catalog/definitions/discovery-work-boards.d.ts.map +1 -1
- package/dist/src/mcp/catalog/definitions/discovery-work-boards.js +59 -0
- package/dist/src/mcp/catalog/definitions/discovery-work-boards.js.map +1 -1
- package/dist/src/mcp/catalog/definitions/organisms-workspaces-apps.d.ts +3 -0
- package/dist/src/mcp/catalog/definitions/organisms-workspaces-apps.d.ts.map +1 -1
- package/dist/src/mcp/catalog/definitions/organisms-workspaces-apps.js +96 -2
- package/dist/src/mcp/catalog/definitions/organisms-workspaces-apps.js.map +1 -1
- package/dist/src/mcp/catalog/definitions/schedules-tasks-memory.d.ts +2 -0
- package/dist/src/mcp/catalog/definitions/schedules-tasks-memory.d.ts.map +1 -1
- package/dist/src/mcp/catalog/definitions/schedules-tasks-memory.js +7 -3
- package/dist/src/mcp/catalog/definitions/schedules-tasks-memory.js.map +1 -1
- package/dist/src/mcp/catalog/scopes.d.ts.map +1 -1
- package/dist/src/mcp/catalog/scopes.js +34 -1
- package/dist/src/mcp/catalog/scopes.js.map +1 -1
- package/dist/src/mcp/catalog/surfaces.d.ts.map +1 -1
- package/dist/src/mcp/catalog/surfaces.js +26 -7
- package/dist/src/mcp/catalog/surfaces.js.map +1 -1
- package/dist/src/mcp/core-admin.d.ts +7 -3
- package/dist/src/mcp/core-admin.d.ts.map +1 -1
- package/dist/src/mcp/core-admin.js +60 -3
- package/dist/src/mcp/core-admin.js.map +1 -1
- package/dist/src/mcp/core-datapackage.d.ts +32 -0
- package/dist/src/mcp/core-datapackage.d.ts.map +1 -0
- package/dist/src/mcp/core-datapackage.js +188 -0
- package/dist/src/mcp/core-datapackage.js.map +1 -0
- package/dist/src/mcp/core-storage.d.ts +7 -3
- package/dist/src/mcp/core-storage.d.ts.map +1 -1
- package/dist/src/mcp/core-storage.js +27 -4
- package/dist/src/mcp/core-storage.js.map +1 -1
- package/dist/src/mcp/core.d.ts.map +1 -1
- package/dist/src/mcp/core.js +3 -0
- package/dist/src/mcp/core.js.map +1 -1
- package/dist/src/mcp/extensions.d.ts.map +1 -1
- package/dist/src/mcp/extensions.js +11 -1
- package/dist/src/mcp/extensions.js.map +1 -1
- package/dist/src/mcp/index.d.ts +9 -0
- package/dist/src/mcp/index.d.ts.map +1 -1
- package/dist/src/mcp/index.js +43 -2
- package/dist/src/mcp/index.js.map +1 -1
- package/dist/src/mcp/organisms-email-invites.d.ts.map +1 -1
- package/dist/src/mcp/organisms-email-invites.js +2 -1
- package/dist/src/mcp/organisms-email-invites.js.map +1 -1
- package/dist/src/mcp/organisms-name-invites.d.ts.map +1 -1
- package/dist/src/mcp/organisms-name-invites.js +40 -1
- package/dist/src/mcp/organisms-name-invites.js.map +1 -1
- package/dist/src/mcp/organisms.d.ts.map +1 -1
- package/dist/src/mcp/organisms.js +6 -1
- package/dist/src/mcp/organisms.js.map +1 -1
- package/dist/src/mcp/tool-usage-wrap.d.ts +9 -0
- package/dist/src/mcp/tool-usage-wrap.d.ts.map +1 -0
- package/dist/src/mcp/tool-usage-wrap.js +87 -0
- package/dist/src/mcp/tool-usage-wrap.js.map +1 -0
- package/dist/src/mcp/workspaces.d.ts.map +1 -1
- package/dist/src/mcp/workspaces.js +9 -0
- package/dist/src/mcp/workspaces.js.map +1 -1
- package/dist/src/middleware/idempotency.d.ts +6 -0
- package/dist/src/middleware/idempotency.d.ts.map +1 -1
- package/dist/src/middleware/idempotency.js +23 -2
- package/dist/src/middleware/idempotency.js.map +1 -1
- package/dist/src/models/agent-task-schemas.d.ts.map +1 -1
- package/dist/src/models/agent-task-schemas.js +12 -1
- package/dist/src/models/agent-task-schemas.js.map +1 -1
- package/dist/src/models/webhook-schemas.d.ts +2 -2
- package/dist/src/models/workflow-schemas.d.ts +178 -1
- package/dist/src/models/workflow-schemas.d.ts.map +1 -1
- package/dist/src/models/workflow-schemas.js +75 -0
- package/dist/src/models/workflow-schemas.js.map +1 -1
- package/dist/src/routes/admin-extensions.d.ts +4 -0
- package/dist/src/routes/admin-extensions.d.ts.map +1 -1
- package/dist/src/routes/admin-extensions.js +135 -142
- package/dist/src/routes/admin-extensions.js.map +1 -1
- package/dist/src/routes/admin-monitoring.d.ts +2 -0
- package/dist/src/routes/admin-monitoring.d.ts.map +1 -1
- package/dist/src/routes/admin-monitoring.js +32 -0
- package/dist/src/routes/admin-monitoring.js.map +1 -1
- package/dist/src/routes/admin-organisms.d.ts +28 -0
- package/dist/src/routes/admin-organisms.d.ts.map +1 -0
- package/dist/src/routes/admin-organisms.js +99 -0
- package/dist/src/routes/admin-organisms.js.map +1 -0
- package/dist/src/routes/admin-usage.d.ts +33 -0
- package/dist/src/routes/admin-usage.d.ts.map +1 -0
- package/dist/src/routes/admin-usage.js +198 -0
- package/dist/src/routes/admin-usage.js.map +1 -0
- package/dist/src/routes/agent-conventions.d.ts.map +1 -1
- package/dist/src/routes/agent-conventions.js +4 -2
- package/dist/src/routes/agent-conventions.js.map +1 -1
- package/dist/src/routes/agent-docs.d.ts +4 -4
- package/dist/src/routes/agent-docs.js +145 -145
- package/dist/src/routes/agent-docs.js.map +1 -1
- package/dist/src/routes/agent-messages.d.ts +6 -0
- package/dist/src/routes/agent-messages.d.ts.map +1 -1
- package/dist/src/routes/agent-messages.js +23 -1
- package/dist/src/routes/agent-messages.js.map +1 -1
- package/dist/src/routes/agent-tasks/completion.d.ts +5 -0
- package/dist/src/routes/agent-tasks/completion.d.ts.map +1 -1
- package/dist/src/routes/agent-tasks/completion.js +35 -54
- package/dist/src/routes/agent-tasks/completion.js.map +1 -1
- package/dist/src/routes/agent-tasks/create-read.d.ts.map +1 -1
- package/dist/src/routes/agent-tasks/create-read.js +8 -1
- package/dist/src/routes/agent-tasks/create-read.js.map +1 -1
- package/dist/src/routes/agent-tasks/lifecycle.d.ts +4 -1
- package/dist/src/routes/agent-tasks/lifecycle.d.ts.map +1 -1
- package/dist/src/routes/agent-tasks/lifecycle.js +80 -2
- package/dist/src/routes/agent-tasks/lifecycle.js.map +1 -1
- package/dist/src/routes/agents/device-auth.d.ts.map +1 -1
- package/dist/src/routes/agents/device-auth.js +27 -4
- package/dist/src/routes/agents/device-auth.js.map +1 -1
- package/dist/src/routes/ai.d.ts +5 -0
- package/dist/src/routes/ai.d.ts.map +1 -1
- package/dist/src/routes/ai.js +51 -1
- package/dist/src/routes/ai.js.map +1 -1
- package/dist/src/routes/app-grants.d.ts.map +1 -1
- package/dist/src/routes/app-grants.js +5 -0
- package/dist/src/routes/app-grants.js.map +1 -1
- package/dist/src/routes/apps/drafts.d.ts +6 -0
- package/dist/src/routes/apps/drafts.d.ts.map +1 -1
- package/dist/src/routes/apps/drafts.js +133 -1
- package/dist/src/routes/apps/drafts.js.map +1 -1
- package/dist/src/routes/apps/read.d.ts +4 -0
- package/dist/src/routes/apps/read.d.ts.map +1 -1
- package/dist/src/routes/apps/read.js +47 -2
- package/dist/src/routes/apps/read.js.map +1 -1
- package/dist/src/routes/auth-otk.d.ts +28 -0
- package/dist/src/routes/auth-otk.d.ts.map +1 -0
- package/dist/src/routes/auth-otk.js +190 -0
- package/dist/src/routes/auth-otk.js.map +1 -0
- package/dist/src/routes/auth.d.ts +17 -0
- package/dist/src/routes/auth.d.ts.map +1 -1
- package/dist/src/routes/auth.js +44 -153
- package/dist/src/routes/auth.js.map +1 -1
- package/dist/src/routes/bootstrap.d.ts +6 -0
- package/dist/src/routes/bootstrap.d.ts.map +1 -1
- package/dist/src/routes/bootstrap.js +47 -20
- package/dist/src/routes/bootstrap.js.map +1 -1
- package/dist/src/routes/capabilities.d.ts +17 -0
- package/dist/src/routes/capabilities.d.ts.map +1 -1
- package/dist/src/routes/capabilities.js +187 -4
- package/dist/src/routes/capabilities.js.map +1 -1
- package/dist/src/routes/chat.d.ts +23 -0
- package/dist/src/routes/chat.d.ts.map +1 -0
- package/dist/src/routes/chat.js +165 -0
- package/dist/src/routes/chat.js.map +1 -0
- package/dist/src/routes/commerce.js +4 -4
- package/dist/src/routes/commerce.js.map +1 -1
- package/dist/src/routes/datapackages.d.ts +35 -0
- package/dist/src/routes/datapackages.d.ts.map +1 -0
- package/dist/src/routes/datapackages.js +217 -0
- package/dist/src/routes/datapackages.js.map +1 -0
- package/dist/src/routes/disputes.d.ts +27 -0
- package/dist/src/routes/disputes.d.ts.map +1 -1
- package/dist/src/routes/disputes.js +74 -79
- package/dist/src/routes/disputes.js.map +1 -1
- package/dist/src/routes/ecosystem-apps-advisories.d.ts +16 -0
- package/dist/src/routes/ecosystem-apps-advisories.d.ts.map +1 -0
- package/dist/src/routes/ecosystem-apps-advisories.js +104 -0
- package/dist/src/routes/ecosystem-apps-advisories.js.map +1 -0
- package/dist/src/routes/ecosystem-apps.d.ts +6 -0
- package/dist/src/routes/ecosystem-apps.d.ts.map +1 -1
- package/dist/src/routes/ecosystem-apps.js +31 -99
- package/dist/src/routes/ecosystem-apps.js.map +1 -1
- package/dist/src/routes/extensions/actions.d.ts.map +1 -1
- package/dist/src/routes/extensions/actions.js +29 -1
- package/dist/src/routes/extensions/actions.js.map +1 -1
- package/dist/src/routes/federation-sync/messaging.d.ts +6 -0
- package/dist/src/routes/federation-sync/messaging.d.ts.map +1 -1
- package/dist/src/routes/federation-sync/messaging.js +22 -1
- package/dist/src/routes/federation-sync/messaging.js.map +1 -1
- package/dist/src/routes/federation-sync/routing.d.ts.map +1 -1
- package/dist/src/routes/federation-sync/routing.js +12 -3
- package/dist/src/routes/federation-sync/routing.js.map +1 -1
- package/dist/src/routes/glossary.js +1 -1
- package/dist/src/routes/glossary.js.map +1 -1
- package/dist/src/routes/home/track.d.ts +5 -1
- package/dist/src/routes/home/track.d.ts.map +1 -1
- package/dist/src/routes/home/track.js +20 -6
- package/dist/src/routes/home/track.js.map +1 -1
- package/dist/src/routes/instances/install.d.ts +7 -0
- package/dist/src/routes/instances/install.d.ts.map +1 -1
- package/dist/src/routes/instances/install.js +31 -24
- package/dist/src/routes/instances/install.js.map +1 -1
- package/dist/src/routes/library-packs.d.ts +7 -0
- package/dist/src/routes/library-packs.d.ts.map +1 -1
- package/dist/src/routes/library-packs.js +32 -8
- package/dist/src/routes/library-packs.js.map +1 -1
- package/dist/src/routes/libs.js +1 -1
- package/dist/src/routes/libs.js.map +1 -1
- package/dist/src/routes/markdown-mirrors.js +1 -1
- package/dist/src/routes/markdown-mirrors.js.map +1 -1
- package/dist/src/routes/messages.d.ts +6 -0
- package/dist/src/routes/messages.d.ts.map +1 -1
- package/dist/src/routes/messages.js +15 -3
- package/dist/src/routes/messages.js.map +1 -1
- package/dist/src/routes/odata.d.ts +36 -0
- package/dist/src/routes/odata.d.ts.map +1 -0
- package/dist/src/routes/odata.js +143 -0
- package/dist/src/routes/odata.js.map +1 -0
- package/dist/src/routes/openrouter.d.ts +4 -0
- package/dist/src/routes/openrouter.d.ts.map +1 -1
- package/dist/src/routes/openrouter.js +10 -1
- package/dist/src/routes/openrouter.js.map +1 -1
- package/dist/src/routes/organisms/crud.d.ts +4 -0
- package/dist/src/routes/organisms/crud.d.ts.map +1 -1
- package/dist/src/routes/organisms/crud.js +25 -7
- package/dist/src/routes/organisms/crud.js.map +1 -1
- package/dist/src/routes/organisms/gates.d.ts.map +1 -1
- package/dist/src/routes/organisms/gates.js +19 -2
- package/dist/src/routes/organisms/gates.js.map +1 -1
- package/dist/src/routes/organisms/membership.d.ts +4 -0
- package/dist/src/routes/organisms/membership.d.ts.map +1 -1
- package/dist/src/routes/organisms/membership.js +88 -36
- package/dist/src/routes/organisms/membership.js.map +1 -1
- package/dist/src/routes/organisms/shared.d.ts.map +1 -1
- package/dist/src/routes/organisms/shared.js +2 -1
- package/dist/src/routes/organisms/shared.js.map +1 -1
- package/dist/src/routes/organisms/workspace-access.d.ts +5 -0
- package/dist/src/routes/organisms/workspace-access.d.ts.map +1 -1
- package/dist/src/routes/organisms/workspace-access.js +41 -2
- package/dist/src/routes/organisms/workspace-access.js.map +1 -1
- package/dist/src/routes/organisms/workspace-ops.d.ts +2 -0
- package/dist/src/routes/organisms/workspace-ops.d.ts.map +1 -1
- package/dist/src/routes/organisms/workspace-ops.js +10 -6
- package/dist/src/routes/organisms/workspace-ops.js.map +1 -1
- package/dist/src/routes/organisms/workspace-read.d.ts +3 -0
- package/dist/src/routes/organisms/workspace-read.d.ts.map +1 -1
- package/dist/src/routes/organisms/workspace-read.js +13 -7
- package/dist/src/routes/organisms/workspace-read.js.map +1 -1
- package/dist/src/routes/portal.d.ts +1 -0
- package/dist/src/routes/portal.d.ts.map +1 -1
- package/dist/src/routes/portal.js +13 -0
- package/dist/src/routes/portal.js.map +1 -1
- package/dist/src/routes/schedules.d.ts +4 -0
- package/dist/src/routes/schedules.d.ts.map +1 -1
- package/dist/src/routes/schedules.js +9 -1
- package/dist/src/routes/schedules.js.map +1 -1
- package/dist/src/routes/storage-files.d.ts +23 -0
- package/dist/src/routes/storage-files.d.ts.map +1 -1
- package/dist/src/routes/storage-files.js +103 -82
- package/dist/src/routes/storage-files.js.map +1 -1
- package/dist/src/routes/subdomains.d.ts +9 -1
- package/dist/src/routes/subdomains.d.ts.map +1 -1
- package/dist/src/routes/subdomains.js +55 -1
- package/dist/src/routes/subdomains.js.map +1 -1
- package/dist/src/routes/usage-reports.d.ts +31 -0
- package/dist/src/routes/usage-reports.d.ts.map +1 -0
- package/dist/src/routes/usage-reports.js +107 -0
- package/dist/src/routes/usage-reports.js.map +1 -0
- package/dist/src/routes/validate.d.ts.map +1 -1
- package/dist/src/routes/validate.js +1 -0
- package/dist/src/routes/validate.js.map +1 -1
- package/dist/src/routes/workflows.d.ts.map +1 -1
- package/dist/src/routes/workflows.js +9 -1
- package/dist/src/routes/workflows.js.map +1 -1
- package/dist/src/server-bootstrap/routes-loader.d.ts +2 -0
- package/dist/src/server-bootstrap/routes-loader.d.ts.map +1 -1
- package/dist/src/server-bootstrap/routes-loader.js +32 -2
- package/dist/src/server-bootstrap/routes-loader.js.map +1 -1
- package/dist/src/server-bootstrap/service-init.d.ts.map +1 -1
- package/dist/src/server-bootstrap/service-init.js +12 -7
- package/dist/src/server-bootstrap/service-init.js.map +1 -1
- package/dist/src/server-bootstrap/static-files.d.ts.map +1 -1
- package/dist/src/server-bootstrap/static-files.js +44 -10
- package/dist/src/server-bootstrap/static-files.js.map +1 -1
- package/dist/src/services/agent-task-fanout.d.ts +61 -0
- package/dist/src/services/agent-task-fanout.d.ts.map +1 -1
- package/dist/src/services/agent-task-fanout.js +114 -2
- package/dist/src/services/agent-task-fanout.js.map +1 -1
- package/dist/src/services/agent-task-write.d.ts.map +1 -1
- package/dist/src/services/agent-task-write.js +6 -0
- package/dist/src/services/agent-task-write.js.map +1 -1
- package/dist/src/services/ai-allowance.d.ts +82 -0
- package/dist/src/services/ai-allowance.d.ts.map +1 -0
- package/dist/src/services/ai-allowance.js +117 -0
- package/dist/src/services/ai-allowance.js.map +1 -0
- package/dist/src/services/ai-completion.d.ts +39 -0
- package/dist/src/services/ai-completion.d.ts.map +1 -1
- package/dist/src/services/ai-completion.js +77 -10
- package/dist/src/services/ai-completion.js.map +1 -1
- package/dist/src/services/ai-image.d.ts +70 -0
- package/dist/src/services/ai-image.d.ts.map +1 -0
- package/dist/src/services/ai-image.js +104 -0
- package/dist/src/services/ai-image.js.map +1 -0
- package/dist/src/services/ai-model-defaults.d.ts +45 -0
- package/dist/src/services/ai-model-defaults.d.ts.map +1 -0
- package/dist/src/services/ai-model-defaults.js +42 -0
- package/dist/src/services/ai-model-defaults.js.map +1 -0
- package/dist/src/services/ai-tool-setup.d.ts +5 -1
- package/dist/src/services/ai-tool-setup.d.ts.map +1 -1
- package/dist/src/services/ai-tool-setup.js +36 -0
- package/dist/src/services/ai-tool-setup.js.map +1 -1
- package/dist/src/services/ai-transcription.d.ts +5 -0
- package/dist/src/services/ai-transcription.d.ts.map +1 -1
- package/dist/src/services/ai-transcription.js +10 -2
- package/dist/src/services/ai-transcription.js.map +1 -1
- package/dist/src/services/ai-usage-admin.d.ts +19 -8
- package/dist/src/services/ai-usage-admin.d.ts.map +1 -1
- package/dist/src/services/ai-usage-admin.js +30 -35
- package/dist/src/services/ai-usage-admin.js.map +1 -1
- package/dist/src/services/app-agent-surfaces.js +4 -4
- package/dist/src/services/app-agent-surfaces.js.map +1 -1
- package/dist/src/services/app-artifact-lint.d.ts +4 -0
- package/dist/src/services/app-artifact-lint.d.ts.map +1 -1
- package/dist/src/services/app-artifact-lint.js +49 -0
- package/dist/src/services/app-artifact-lint.js.map +1 -1
- package/dist/src/services/app-draft-edit.d.ts +144 -0
- package/dist/src/services/app-draft-edit.d.ts.map +1 -0
- package/dist/src/services/app-draft-edit.js +203 -0
- package/dist/src/services/app-draft-edit.js.map +1 -0
- package/dist/src/services/app-spec-gate.d.ts +4 -0
- package/dist/src/services/app-spec-gate.d.ts.map +1 -1
- package/dist/src/services/app-spec-gate.js +16 -1
- package/dist/src/services/app-spec-gate.js.map +1 -1
- package/dist/src/services/attachment-duplication.d.ts +4 -0
- package/dist/src/services/attachment-duplication.d.ts.map +1 -1
- package/dist/src/services/attachment-duplication.js +15 -0
- package/dist/src/services/attachment-duplication.js.map +1 -1
- package/dist/src/services/auth-md.js +2 -2
- package/dist/src/services/auth-md.js.map +1 -1
- package/dist/src/services/board-write.d.ts +11 -3
- package/dist/src/services/board-write.d.ts.map +1 -1
- package/dist/src/services/board-write.js +24 -3
- package/dist/src/services/board-write.js.map +1 -1
- package/dist/src/services/capability-record.d.ts.map +1 -1
- package/dist/src/services/capability-record.js +22 -9
- package/dist/src/services/capability-record.js.map +1 -1
- package/dist/src/services/chat-agent.d.ts +36 -0
- package/dist/src/services/chat-agent.d.ts.map +1 -0
- package/dist/src/services/chat-agent.js +123 -0
- package/dist/src/services/chat-agent.js.map +1 -0
- package/dist/src/services/chat-session.d.ts +58 -0
- package/dist/src/services/chat-session.d.ts.map +1 -0
- package/dist/src/services/chat-session.js +151 -0
- package/dist/src/services/chat-session.js.map +1 -0
- package/dist/src/services/chat-threads.d.ts +61 -0
- package/dist/src/services/chat-threads.d.ts.map +1 -0
- package/dist/src/services/chat-threads.js +137 -0
- package/dist/src/services/chat-threads.js.map +1 -0
- package/dist/src/services/config-schema.d.ts.map +1 -1
- package/dist/src/services/config-schema.js +2 -1
- package/dist/src/services/config-schema.js.map +1 -1
- package/dist/src/services/core-jobs.d.ts +2 -0
- package/dist/src/services/core-jobs.d.ts.map +1 -1
- package/dist/src/services/core-jobs.js +11 -0
- package/dist/src/services/core-jobs.js.map +1 -1
- package/dist/src/services/datapackage/contract.d.ts +198 -0
- package/dist/src/services/datapackage/contract.d.ts.map +1 -0
- package/dist/src/services/datapackage/contract.js +140 -0
- package/dist/src/services/datapackage/contract.js.map +1 -0
- package/dist/src/services/datapackage/ext-capability.d.ts +85 -0
- package/dist/src/services/datapackage/ext-capability.d.ts.map +1 -0
- package/dist/src/services/datapackage/ext-capability.js +72 -0
- package/dist/src/services/datapackage/ext-capability.js.map +1 -0
- package/dist/src/services/datapackage/odata.d.ts +92 -0
- package/dist/src/services/datapackage/odata.d.ts.map +1 -0
- package/dist/src/services/datapackage/odata.js +256 -0
- package/dist/src/services/datapackage/odata.js.map +1 -0
- package/dist/src/services/datapackage/odps.d.ts +24 -0
- package/dist/src/services/datapackage/odps.d.ts.map +1 -0
- package/dist/src/services/datapackage/odps.js +183 -0
- package/dist/src/services/datapackage/odps.js.map +1 -0
- package/dist/src/services/datapackage/store.d.ts +143 -0
- package/dist/src/services/datapackage/store.d.ts.map +1 -0
- package/dist/src/services/datapackage/store.js +533 -0
- package/dist/src/services/datapackage/store.js.map +1 -0
- package/dist/src/services/datapackage/table.d.ts +67 -0
- package/dist/src/services/datapackage/table.d.ts.map +1 -0
- package/dist/src/services/datapackage/table.js +0 -0
- package/dist/src/services/datapackage/table.js.map +1 -0
- package/dist/src/services/extension-ctx.d.ts +1 -0
- package/dist/src/services/extension-ctx.d.ts.map +1 -1
- package/dist/src/services/extension-ctx.js +31 -6
- package/dist/src/services/extension-ctx.js.map +1 -1
- package/dist/src/services/extension-files.d.ts +20 -0
- package/dist/src/services/extension-files.d.ts.map +1 -1
- package/dist/src/services/extension-files.js +9 -2
- package/dist/src/services/extension-files.js.map +1 -1
- package/dist/src/services/extension-lifecycle.d.ts +3 -0
- package/dist/src/services/extension-lifecycle.d.ts.map +1 -1
- package/dist/src/services/extension-lifecycle.js +2 -26
- package/dist/src/services/extension-lifecycle.js.map +1 -1
- package/dist/src/services/extension-runtime.d.ts +28 -2
- package/dist/src/services/extension-runtime.d.ts.map +1 -1
- package/dist/src/services/extension-runtime.js +22 -0
- package/dist/src/services/extension-runtime.js.map +1 -1
- package/dist/src/services/extension-schedules.d.ts +90 -0
- package/dist/src/services/extension-schedules.d.ts.map +1 -0
- package/dist/src/services/extension-schedules.js +123 -0
- package/dist/src/services/extension-schedules.js.map +1 -0
- package/dist/src/services/extension-system-run.d.ts +91 -0
- package/dist/src/services/extension-system-run.d.ts.map +1 -0
- package/dist/src/services/extension-system-run.js +100 -0
- package/dist/src/services/extension-system-run.js.map +1 -0
- package/dist/src/services/extension-upsert.d.ts +2 -0
- package/dist/src/services/extension-upsert.d.ts.map +1 -1
- package/dist/src/services/extension-upsert.js +6 -24
- package/dist/src/services/extension-upsert.js.map +1 -1
- package/dist/src/services/goose-acp.d.ts +84 -0
- package/dist/src/services/goose-acp.d.ts.map +1 -0
- package/dist/src/services/goose-acp.js +304 -0
- package/dist/src/services/goose-acp.js.map +1 -0
- package/dist/src/services/invitations.d.ts +0 -20
- package/dist/src/services/invitations.d.ts.map +1 -1
- package/dist/src/services/invitations.js +30 -0
- package/dist/src/services/invitations.js.map +1 -1
- package/dist/src/services/job-seeding.d.ts +1 -0
- package/dist/src/services/job-seeding.d.ts.map +1 -1
- package/dist/src/services/job-seeding.js +6 -0
- package/dist/src/services/job-seeding.js.map +1 -1
- package/dist/src/services/ledger-admin.d.ts +18 -4
- package/dist/src/services/ledger-admin.d.ts.map +1 -1
- package/dist/src/services/ledger-admin.js +47 -33
- package/dist/src/services/ledger-admin.js.map +1 -1
- package/dist/src/services/markdown-negotiation.js +1 -1
- package/dist/src/services/markdown-negotiation.js.map +1 -1
- package/dist/src/services/message-broadcast.d.ts.map +1 -1
- package/dist/src/services/message-broadcast.js +29 -1
- package/dist/src/services/message-broadcast.js.map +1 -1
- package/dist/src/services/metered-access.d.ts +9 -2
- package/dist/src/services/metered-access.d.ts.map +1 -1
- package/dist/src/services/metered-access.js +92 -12
- package/dist/src/services/metered-access.js.map +1 -1
- package/dist/src/services/openrouter.d.ts +20 -1
- package/dist/src/services/openrouter.d.ts.map +1 -1
- package/dist/src/services/openrouter.js +66 -0
- package/dist/src/services/openrouter.js.map +1 -1
- package/dist/src/services/organism-import.d.ts.map +1 -1
- package/dist/src/services/organism-import.js +4 -1
- package/dist/src/services/organism-import.js.map +1 -1
- package/dist/src/services/organism-lifecycle.d.ts.map +1 -1
- package/dist/src/services/organism-lifecycle.js +5 -1
- package/dist/src/services/organism-lifecycle.js.map +1 -1
- package/dist/src/services/organism-ownership.d.ts +56 -0
- package/dist/src/services/organism-ownership.d.ts.map +1 -0
- package/dist/src/services/organism-ownership.js +174 -0
- package/dist/src/services/organism-ownership.js.map +1 -0
- package/dist/src/services/organism-privacy.d.ts.map +1 -1
- package/dist/src/services/organism-privacy.js +2 -1
- package/dist/src/services/organism-privacy.js.map +1 -1
- package/dist/src/services/prompt-defaults/tiers-core.js +4 -4
- package/dist/src/services/scheduler-extension-job.d.ts +29 -6
- package/dist/src/services/scheduler-extension-job.d.ts.map +1 -1
- package/dist/src/services/scheduler-extension-job.js +29 -75
- package/dist/src/services/scheduler-extension-job.js.map +1 -1
- package/dist/src/services/scope-vocabulary-migration.d.ts +54 -1
- package/dist/src/services/scope-vocabulary-migration.d.ts.map +1 -1
- package/dist/src/services/scope-vocabulary-migration.js +101 -6
- package/dist/src/services/scope-vocabulary-migration.js.map +1 -1
- package/dist/src/services/screenshot-capture.d.ts +40 -1
- package/dist/src/services/screenshot-capture.d.ts.map +1 -1
- package/dist/src/services/screenshot-capture.js +142 -60
- package/dist/src/services/screenshot-capture.js.map +1 -1
- package/dist/src/services/skill-bundle/generator.js +1 -1
- package/dist/src/services/skill-bundle/generic-adapter.js +1 -1
- package/dist/src/services/skill-bundle/hermes-adapter.js +1 -1
- package/dist/src/services/storage-file-write.d.ts +36 -1
- package/dist/src/services/storage-file-write.d.ts.map +1 -1
- package/dist/src/services/storage-file-write.js +49 -3
- package/dist/src/services/storage-file-write.js.map +1 -1
- package/dist/src/services/task-outcome.d.ts +53 -0
- package/dist/src/services/task-outcome.d.ts.map +1 -0
- package/dist/src/services/task-outcome.js +28 -0
- package/dist/src/services/task-outcome.js.map +1 -0
- package/dist/src/services/usage/archive-job.d.ts +25 -0
- package/dist/src/services/usage/archive-job.d.ts.map +1 -0
- package/dist/src/services/usage/archive-job.js +36 -0
- package/dist/src/services/usage/archive-job.js.map +1 -0
- package/dist/src/services/usage/record-app-open.d.ts +8 -0
- package/dist/src/services/usage/record-app-open.d.ts.map +1 -0
- package/dist/src/services/usage/record-app-open.js +52 -0
- package/dist/src/services/usage/record-app-open.js.map +1 -0
- package/dist/src/services/usage/rollup-cuts.d.ts +44 -0
- package/dist/src/services/usage/rollup-cuts.d.ts.map +1 -0
- package/dist/src/services/usage/rollup-cuts.js +81 -0
- package/dist/src/services/usage/rollup-cuts.js.map +1 -0
- package/dist/src/services/usage/rollup-engine.d.ts +71 -0
- package/dist/src/services/usage/rollup-engine.d.ts.map +1 -0
- package/dist/src/services/usage/rollup-engine.js +237 -0
- package/dist/src/services/usage/rollup-engine.js.map +1 -0
- package/dist/src/services/usage/usage-buffer.d.ts +25 -0
- package/dist/src/services/usage/usage-buffer.d.ts.map +1 -0
- package/dist/src/services/usage/usage-buffer.js +146 -0
- package/dist/src/services/usage/usage-buffer.js.map +1 -0
- package/dist/src/services/usage/usage-read.d.ts +115 -0
- package/dist/src/services/usage/usage-read.d.ts.map +1 -0
- package/dist/src/services/usage/usage-read.js +246 -0
- package/dist/src/services/usage/usage-read.js.map +1 -0
- package/dist/src/services/usage-metering.d.ts +5 -0
- package/dist/src/services/usage-metering.d.ts.map +1 -1
- package/dist/src/services/usage-metering.js +7 -0
- package/dist/src/services/usage-metering.js.map +1 -1
- package/dist/src/services/workflow/engine-human.d.ts +15 -0
- package/dist/src/services/workflow/engine-human.d.ts.map +1 -1
- package/dist/src/services/workflow/engine-human.js +10 -1
- package/dist/src/services/workflow/engine-human.js.map +1 -1
- package/dist/src/services/workflow/engine-steps.d.ts +48 -3
- package/dist/src/services/workflow/engine-steps.d.ts.map +1 -1
- package/dist/src/services/workflow/engine-steps.js +361 -0
- package/dist/src/services/workflow/engine-steps.js.map +1 -1
- package/dist/src/services/workflow/engine.d.ts +1 -0
- package/dist/src/services/workflow/engine.d.ts.map +1 -1
- package/dist/src/services/workflow/engine.js +2 -1
- package/dist/src/services/workflow/engine.js.map +1 -1
- package/dist/src/services/workflow/store.d.ts.map +1 -1
- package/dist/src/services/workflow/store.js +60 -4
- package/dist/src/services/workflow/store.js.map +1 -1
- package/dist/src/services/write-guards.d.ts +27 -1
- package/dist/src/services/write-guards.d.ts.map +1 -1
- package/dist/src/services/write-guards.js +39 -9
- package/dist/src/services/write-guards.js.map +1 -1
- package/dist/src/storage/interface.d.ts +4 -1
- package/dist/src/storage/interface.d.ts.map +1 -1
- package/dist/src/storage/interface.js +1 -0
- package/dist/src/storage/interface.js.map +1 -1
- package/dist/src/storage/providers/postgres-kysely/db-types.d.ts +119 -0
- package/dist/src/storage/providers/postgres-kysely/db-types.d.ts.map +1 -1
- package/dist/src/storage/providers/postgres-kysely/index.d.ts.map +1 -1
- package/dist/src/storage/providers/postgres-kysely/index.js +2 -1
- package/dist/src/storage/providers/postgres-kysely/index.js.map +1 -1
- package/dist/src/storage/providers/postgres-kysely/methods/agent-tasks.d.ts.map +1 -1
- package/dist/src/storage/providers/postgres-kysely/methods/agent-tasks.js +3 -0
- package/dist/src/storage/providers/postgres-kysely/methods/agent-tasks.js.map +1 -1
- package/dist/src/storage/providers/postgres-kysely/methods/agent-usage.d.ts.map +1 -1
- package/dist/src/storage/providers/postgres-kysely/methods/agent-usage.js +4 -0
- package/dist/src/storage/providers/postgres-kysely/methods/agent-usage.js.map +1 -1
- package/dist/src/storage/providers/postgres-kysely/methods/app-grants.d.ts +1 -0
- package/dist/src/storage/providers/postgres-kysely/methods/app-grants.d.ts.map +1 -1
- package/dist/src/storage/providers/postgres-kysely/methods/app-grants.js +3 -0
- package/dist/src/storage/providers/postgres-kysely/methods/app-grants.js.map +1 -1
- package/dist/src/storage/providers/postgres-kysely/methods/files.d.ts +2 -0
- package/dist/src/storage/providers/postgres-kysely/methods/files.d.ts.map +1 -1
- package/dist/src/storage/providers/postgres-kysely/methods/files.js +34 -2
- package/dist/src/storage/providers/postgres-kysely/methods/files.js.map +1 -1
- package/dist/src/storage/providers/postgres-kysely/methods/organisms.d.ts.map +1 -1
- package/dist/src/storage/providers/postgres-kysely/methods/organisms.js +11 -2
- package/dist/src/storage/providers/postgres-kysely/methods/organisms.js.map +1 -1
- package/dist/src/storage/providers/postgres-kysely/methods/usage.d.ts +32 -0
- package/dist/src/storage/providers/postgres-kysely/methods/usage.d.ts.map +1 -0
- package/dist/src/storage/providers/postgres-kysely/methods/usage.js +336 -0
- package/dist/src/storage/providers/postgres-kysely/methods/usage.js.map +1 -0
- package/dist/src/storage/providers/postgres-kysely/migrations/0036_usage_telemetry.sql +181 -0
- package/dist/src/storage/providers/postgres-kysely/migrations/0037_task_created_by.sql +18 -0
- package/dist/src/storage/providers/postgres-kysely/migrations/0038_organism_owners.sql +31 -0
- package/dist/src/storage/providers/postgres-kysely/migrations/0039_storage_file_utf8_verified.sql +19 -0
- package/dist/src/storage/providers/sqlite/index.d.ts.map +1 -1
- package/dist/src/storage/providers/sqlite/index.js +3 -1
- package/dist/src/storage/providers/sqlite/index.js.map +1 -1
- package/dist/src/storage/providers/sqlite/methods/apps.d.ts +1 -0
- package/dist/src/storage/providers/sqlite/methods/apps.d.ts.map +1 -1
- package/dist/src/storage/providers/sqlite/methods/apps.js +33 -28
- package/dist/src/storage/providers/sqlite/methods/apps.js.map +1 -1
- package/dist/src/storage/providers/sqlite/methods/governance.d.ts +2 -0
- package/dist/src/storage/providers/sqlite/methods/governance.d.ts.map +1 -1
- package/dist/src/storage/providers/sqlite/methods/governance.js +25 -4
- package/dist/src/storage/providers/sqlite/methods/governance.js.map +1 -1
- package/dist/src/storage/providers/sqlite/methods/identity-nodes.d.ts +1 -12
- package/dist/src/storage/providers/sqlite/methods/identity-nodes.d.ts.map +1 -1
- package/dist/src/storage/providers/sqlite/methods/identity-nodes.js +28 -135
- package/dist/src/storage/providers/sqlite/methods/identity-nodes.js.map +1 -1
- package/dist/src/storage/providers/sqlite/methods/storage-files.d.ts +38 -0
- package/dist/src/storage/providers/sqlite/methods/storage-files.d.ts.map +1 -0
- package/dist/src/storage/providers/sqlite/methods/storage-files.js +109 -0
- package/dist/src/storage/providers/sqlite/methods/storage-files.js.map +1 -0
- package/dist/src/storage/providers/sqlite/methods/usage.d.ts +43 -0
- package/dist/src/storage/providers/sqlite/methods/usage.d.ts.map +1 -0
- package/dist/src/storage/providers/sqlite/methods/usage.js +37 -0
- package/dist/src/storage/providers/sqlite/methods/usage.js.map +1 -0
- package/dist/src/storage/providers/sqlite/repos/agent-task.d.ts +1 -0
- package/dist/src/storage/providers/sqlite/repos/agent-task.d.ts.map +1 -1
- package/dist/src/storage/providers/sqlite/repos/agent-task.js +4 -2
- package/dist/src/storage/providers/sqlite/repos/agent-task.js.map +1 -1
- package/dist/src/storage/providers/sqlite/repos/agent-usage.d.ts.map +1 -1
- package/dist/src/storage/providers/sqlite/repos/agent-usage.js +4 -2
- package/dist/src/storage/providers/sqlite/repos/agent-usage.js.map +1 -1
- package/dist/src/storage/providers/sqlite/repos/community.d.ts.map +1 -1
- package/dist/src/storage/providers/sqlite/repos/community.js +20 -0
- package/dist/src/storage/providers/sqlite/repos/community.js.map +1 -1
- package/dist/src/storage/providers/sqlite/repos/usage.d.ts +35 -0
- package/dist/src/storage/providers/sqlite/repos/usage.d.ts.map +1 -0
- package/dist/src/storage/providers/sqlite/repos/usage.js +352 -0
- package/dist/src/storage/providers/sqlite/repos/usage.js.map +1 -0
- package/dist/src/storage/providers/sqlite/schema-tables-1.d.ts.map +1 -1
- package/dist/src/storage/providers/sqlite/schema-tables-1.js +2 -0
- package/dist/src/storage/providers/sqlite/schema-tables-1.js.map +1 -1
- package/dist/src/storage/providers/sqlite/schema-tables-3.d.ts +1 -0
- package/dist/src/storage/providers/sqlite/schema-tables-3.d.ts.map +1 -1
- package/dist/src/storage/providers/sqlite/schema-tables-3.js +1 -0
- package/dist/src/storage/providers/sqlite/schema-tables-3.js.map +1 -1
- package/dist/src/storage/providers/sqlite/schema-tables-4.d.ts +2 -0
- package/dist/src/storage/providers/sqlite/schema-tables-4.d.ts.map +1 -1
- package/dist/src/storage/providers/sqlite/schema-tables-4.js +131 -0
- package/dist/src/storage/providers/sqlite/schema-tables-4.js.map +1 -1
- package/dist/src/storage/providers/sqlite/schema.d.ts +2 -0
- package/dist/src/storage/providers/sqlite/schema.d.ts.map +1 -1
- package/dist/src/storage/providers/sqlite/schema.js +155 -130
- package/dist/src/storage/providers/sqlite/schema.js.map +1 -1
- package/dist/src/storage/repositories/app-grant.repository.d.ts +11 -0
- package/dist/src/storage/repositories/app-grant.repository.d.ts.map +1 -1
- package/dist/src/storage/repositories/file.repository.d.ts +13 -0
- package/dist/src/storage/repositories/file.repository.d.ts.map +1 -1
- package/dist/src/storage/repositories/usage.repository.d.ts +80 -0
- package/dist/src/storage/repositories/usage.repository.d.ts.map +1 -0
- package/dist/src/storage/repositories/usage.repository.js +23 -0
- package/dist/src/storage/repositories/usage.repository.js.map +1 -0
- package/dist/src/storage/types/agents-messaging.d.ts +24 -0
- package/dist/src/storage/types/agents-messaging.d.ts.map +1 -1
- package/dist/src/storage/types/agents-messaging.js +1 -0
- package/dist/src/storage/types/agents-messaging.js.map +1 -1
- package/dist/src/storage/types/commerce.d.ts +6 -0
- package/dist/src/storage/types/commerce.d.ts.map +1 -1
- package/dist/src/storage/types/organisms-federation.d.ts +21 -0
- package/dist/src/storage/types/organisms-federation.d.ts.map +1 -1
- package/dist/src/storage/types/usage.d.ts +186 -0
- package/dist/src/storage/types/usage.d.ts.map +1 -0
- package/dist/src/storage/types/usage.js +24 -0
- package/dist/src/storage/types/usage.js.map +1 -0
- package/dist/src/utils/agent-footer.d.ts.map +1 -1
- package/dist/src/utils/agent-footer.js +1 -0
- package/dist/src/utils/agent-footer.js.map +1 -1
- package/dist/src/utils/app-content-type.d.ts +57 -3
- package/dist/src/utils/app-content-type.d.ts.map +1 -1
- package/dist/src/utils/app-content-type.js +81 -12
- package/dist/src/utils/app-content-type.js.map +1 -1
- package/dist/src/utils/env-config/sections-features.d.ts.map +1 -1
- package/dist/src/utils/env-config/sections-features.js +9 -3
- package/dist/src/utils/env-config/sections-features.js.map +1 -1
- package/dist/src/utils/file-download-headers.d.ts +5 -3
- package/dist/src/utils/file-download-headers.d.ts.map +1 -1
- package/dist/src/utils/file-download-headers.js +18 -5
- package/dist/src/utils/file-download-headers.js.map +1 -1
- package/dist/src/utils/http-range.d.ts +151 -0
- package/dist/src/utils/http-range.d.ts.map +1 -0
- package/dist/src/utils/http-range.js +190 -0
- package/dist/src/utils/http-range.js.map +1 -0
- package/dist/src/utils/page-head.d.ts +5 -0
- package/dist/src/utils/page-head.d.ts.map +1 -1
- package/dist/src/utils/page-head.js +10 -1
- package/dist/src/utils/page-head.js.map +1 -1
- package/dist/src/utils/reserved-keys.d.ts +4 -1
- package/dist/src/utils/reserved-keys.d.ts.map +1 -1
- package/dist/src/utils/reserved-keys.js +4 -1
- package/dist/src/utils/reserved-keys.js.map +1 -1
- package/dist/src/utils/scope-coverage.d.ts +21 -0
- package/dist/src/utils/scope-coverage.d.ts.map +1 -1
- package/dist/src/utils/scope-coverage.js +22 -1
- package/dist/src/utils/scope-coverage.js.map +1 -1
- package/dist/static/sdk-libs/datapackage/index.js +336 -0
- package/dist/static/sdk-libs/dist/aimeat-datapackage.js +305 -0
- package/package.json +13 -2
|
@@ -0,0 +1,256 @@
|
|
|
1
|
+
/** Every system query option this implementation honours. Anything else is refused by name. */
|
|
2
|
+
export const ODATA_SUPPORTED = ['$select', '$top', '$skip', '$filter', '$orderby', '$count', '$format'];
|
|
3
|
+
/** Frictionless type → EDM primitive. The one mapping; nothing else decides an OData type. */
|
|
4
|
+
const EDM = {
|
|
5
|
+
string: 'Edm.String',
|
|
6
|
+
integer: 'Edm.Int64',
|
|
7
|
+
number: 'Edm.Double',
|
|
8
|
+
boolean: 'Edm.Boolean',
|
|
9
|
+
date: 'Edm.Date',
|
|
10
|
+
datetime: 'Edm.DateTimeOffset',
|
|
11
|
+
any: 'Edm.String',
|
|
12
|
+
};
|
|
13
|
+
/** The synthetic key. A CSV row has no identity of its own, and OData requires an entity key — so
|
|
14
|
+
* one is supplied rather than a natural column being promoted to a role it cannot fill. It is the
|
|
15
|
+
* row's ordinal WITHIN THIS IMMUTABLE VERSION, which is stable precisely because the version is. */
|
|
16
|
+
export const ROW_KEY = 'RowId';
|
|
17
|
+
/** XML text, escaped. A field name comes from the producer's data, so it is not trusted markup. */
|
|
18
|
+
function xml(s) {
|
|
19
|
+
return String(s).replace(/&/g, '&').replace(/</g, '<').replace(/>/g, '>')
|
|
20
|
+
.replace(/"/g, '"').replace(/'/g, ''');
|
|
21
|
+
}
|
|
22
|
+
/** A CSDL identifier: letters, digits and underscore, not starting with a digit. A column called
|
|
23
|
+
* `first name` or `2026` is legal in a CSV and illegal here, so it is mapped rather than rejected —
|
|
24
|
+
* and the mapping is recorded in the descriptor's own field name, which does not change. */
|
|
25
|
+
export function edmName(raw) {
|
|
26
|
+
const cleaned = String(raw).replace(/[^A-Za-z0-9_]/g, '_');
|
|
27
|
+
return /^[0-9]/.test(cleaned) ? `_${cleaned}` : (cleaned || '_');
|
|
28
|
+
}
|
|
29
|
+
/**
|
|
30
|
+
* The CSDL v4 document (`$metadata`) for one package version.
|
|
31
|
+
*
|
|
32
|
+
* `Nullable="true"` on every property except the key, deliberately: a Table Schema's `primaryKey` is
|
|
33
|
+
* the only statement anybody made about required-ness, and claiming a column is non-nullable because
|
|
34
|
+
* it happened to be full in this version would be a promise the next version breaks.
|
|
35
|
+
*/
|
|
36
|
+
export function toCsdl(descriptor, namespace) {
|
|
37
|
+
// A CSDL namespace is a DOTTED identifier ("AIMEAT.shortages"), so each segment is sanitised and
|
|
38
|
+
// the dots survive. Running edmName over the whole string turned the separator into an
|
|
39
|
+
// underscore, and the EntitySet then named a type in a namespace nobody had declared.
|
|
40
|
+
const ns = String(namespace).split('.').map(edmName).join('.');
|
|
41
|
+
const types = descriptor.resources.map(r => entityType(r, ns)).join('\n');
|
|
42
|
+
const sets = descriptor.resources
|
|
43
|
+
.map(r => ` <EntitySet Name="${xml(edmName(r.name))}" EntityType="${xml(ns)}.${xml(edmName(r.name))}"/>`)
|
|
44
|
+
.join('\n');
|
|
45
|
+
return `<?xml version="1.0" encoding="utf-8"?>
|
|
46
|
+
<edmx:Edmx Version="4.0" xmlns:edmx="http://docs.oasis-open.org/odata/ns/edmx">
|
|
47
|
+
<edmx:DataServices>
|
|
48
|
+
<Schema Namespace="${xml(ns)}" xmlns="http://docs.oasis-open.org/odata/ns/edm">
|
|
49
|
+
${types}
|
|
50
|
+
<EntityContainer Name="Container">
|
|
51
|
+
${sets}
|
|
52
|
+
</EntityContainer>
|
|
53
|
+
</Schema>
|
|
54
|
+
</edmx:DataServices>
|
|
55
|
+
</edmx:Edmx>
|
|
56
|
+
`;
|
|
57
|
+
}
|
|
58
|
+
function entityType(resource, _ns) {
|
|
59
|
+
const props = resource.schema.fields
|
|
60
|
+
.map(f => ` <Property Name="${xml(edmName(f.name))}" Type="${EDM[f.type] ?? 'Edm.String'}" Nullable="true"/>`)
|
|
61
|
+
.join('\n');
|
|
62
|
+
return ` <EntityType Name="${xml(edmName(resource.name))}">
|
|
63
|
+
<Key><PropertyRef Name="${ROW_KEY}"/></Key>
|
|
64
|
+
<Property Name="${ROW_KEY}" Type="Edm.Int64" Nullable="false"/>
|
|
65
|
+
${props}
|
|
66
|
+
</EntityType>`;
|
|
67
|
+
}
|
|
68
|
+
const COMPARISON = /^\s*([A-Za-z_][A-Za-z0-9_]*)\s+(eq|ne|gt|ge|lt|le)\s+(.+?)\s*$/;
|
|
69
|
+
const FUNCTION = /^\s*(contains|startswith|endswith)\s*\(\s*([A-Za-z_][A-Za-z0-9_]*)\s*,\s*(.+?)\s*\)\s*$/;
|
|
70
|
+
/** An OData literal: a quoted string (with '' for an embedded quote), a number, true/false, null. */
|
|
71
|
+
function literal(raw) {
|
|
72
|
+
const s = raw.trim();
|
|
73
|
+
if (/^'.*'$/s.test(s))
|
|
74
|
+
return s.slice(1, -1).replace(/''/g, "'");
|
|
75
|
+
if (/^-?\d+$/.test(s))
|
|
76
|
+
return parseInt(s, 10);
|
|
77
|
+
if (/^-?\d*\.\d+([eE][+-]?\d+)?$/.test(s))
|
|
78
|
+
return parseFloat(s);
|
|
79
|
+
if (s === 'true')
|
|
80
|
+
return true;
|
|
81
|
+
if (s === 'false')
|
|
82
|
+
return false;
|
|
83
|
+
if (s === 'null')
|
|
84
|
+
return null;
|
|
85
|
+
return undefined; // not a literal this implementation reads
|
|
86
|
+
}
|
|
87
|
+
/**
|
|
88
|
+
* Read the system query options, refusing everything not understood.
|
|
89
|
+
*
|
|
90
|
+
* The `edmName` mapping runs in both directions here: a client saw `first_name` in the metadata and
|
|
91
|
+
* sends `$filter=first_name eq 'x'`, while the row still holds `first name`. Resolving through the
|
|
92
|
+
* schema means the client only ever has to know the names the metadata gave it.
|
|
93
|
+
*/
|
|
94
|
+
export function parseQuery(params, schema) {
|
|
95
|
+
// Every field, addressable by the name the metadata published.
|
|
96
|
+
const byEdm = new Map(schema.fields.map(f => [edmName(f.name), f.name]));
|
|
97
|
+
byEdm.set(ROW_KEY, ROW_KEY);
|
|
98
|
+
for (const key of params.keys()) {
|
|
99
|
+
if (!key.startsWith('$'))
|
|
100
|
+
continue; // a custom parameter is the caller's business
|
|
101
|
+
if (!ODATA_SUPPORTED.includes(key)) {
|
|
102
|
+
return {
|
|
103
|
+
ok: false, code: 'NOT_IMPLEMENTED',
|
|
104
|
+
message: `${key} is not implemented on this feed. Supported: ${ODATA_SUPPORTED.join(', ')}. `
|
|
105
|
+
+ 'It is refused rather than ignored, because an ignored query option returns more rows '
|
|
106
|
+
+ 'than you asked for and looks like an answer.',
|
|
107
|
+
};
|
|
108
|
+
}
|
|
109
|
+
}
|
|
110
|
+
const out = { skip: 0, filters: [], orderby: [], count: false };
|
|
111
|
+
const select = params.get('$select');
|
|
112
|
+
if (select) {
|
|
113
|
+
const names = [];
|
|
114
|
+
for (const raw of select.split(',').map(s => s.trim()).filter(Boolean)) {
|
|
115
|
+
const real = byEdm.get(raw);
|
|
116
|
+
if (!real)
|
|
117
|
+
return { ok: false, code: 'BAD_REQUEST', message: `$select names no such property: ${raw}` };
|
|
118
|
+
names.push(real);
|
|
119
|
+
}
|
|
120
|
+
out.select = names;
|
|
121
|
+
}
|
|
122
|
+
for (const [name, target] of [['$top', 'top'], ['$skip', 'skip']]) {
|
|
123
|
+
const raw = params.get(name);
|
|
124
|
+
if (raw === null)
|
|
125
|
+
continue;
|
|
126
|
+
const n = Number(raw);
|
|
127
|
+
if (!Number.isInteger(n) || n < 0) {
|
|
128
|
+
return { ok: false, code: 'BAD_REQUEST', message: `${name} must be a non-negative integer, got "${raw}"` };
|
|
129
|
+
}
|
|
130
|
+
if (target === 'top')
|
|
131
|
+
out.top = n;
|
|
132
|
+
else
|
|
133
|
+
out.skip = n;
|
|
134
|
+
}
|
|
135
|
+
const count = params.get('$count');
|
|
136
|
+
if (count !== null) {
|
|
137
|
+
if (count !== 'true' && count !== 'false') {
|
|
138
|
+
return { ok: false, code: 'BAD_REQUEST', message: `$count must be true or false, got "${count}"` };
|
|
139
|
+
}
|
|
140
|
+
out.count = count === 'true';
|
|
141
|
+
}
|
|
142
|
+
const orderby = params.get('$orderby');
|
|
143
|
+
if (orderby) {
|
|
144
|
+
for (const clause of orderby.split(',').map(s => s.trim()).filter(Boolean)) {
|
|
145
|
+
const [field, dir] = clause.split(/\s+/);
|
|
146
|
+
const real = byEdm.get(field);
|
|
147
|
+
if (!real)
|
|
148
|
+
return { ok: false, code: 'BAD_REQUEST', message: `$orderby names no such property: ${field}` };
|
|
149
|
+
if (dir && dir !== 'asc' && dir !== 'desc') {
|
|
150
|
+
return { ok: false, code: 'BAD_REQUEST', message: `$orderby direction must be asc or desc, got "${dir}"` };
|
|
151
|
+
}
|
|
152
|
+
out.orderby.push({ field: real, desc: dir === 'desc' });
|
|
153
|
+
}
|
|
154
|
+
}
|
|
155
|
+
const filter = params.get('$filter');
|
|
156
|
+
if (filter) {
|
|
157
|
+
// `or` and `not` get their OWN refusal, ahead of everything else, because the split below is
|
|
158
|
+
// on `and`: an `or` left in would be silently torn into two ANDed clauses and match FEWER
|
|
159
|
+
// rows than asked for, with no symptom at all. Tested with string literals blanked first, so
|
|
160
|
+
// `name eq 'or'` is data rather than an operator.
|
|
161
|
+
const bare = filter.replace(/'(?:[^']|'')*'/g, "''");
|
|
162
|
+
if (/\bor\b/i.test(bare) || /\bnot\b/i.test(bare)) {
|
|
163
|
+
return {
|
|
164
|
+
ok: false, code: 'NOT_IMPLEMENTED',
|
|
165
|
+
message: '$filter supports `field op value` clauses joined by `and`, plus contains(), '
|
|
166
|
+
+ 'startswith() and endswith(). `or` and `not` are not implemented. Refused rather '
|
|
167
|
+
+ 'than partly applied: a filter this server half-understood would return the wrong '
|
|
168
|
+
+ 'rows and look like an answer.',
|
|
169
|
+
};
|
|
170
|
+
}
|
|
171
|
+
// Anything else fails per CLAUSE, which is where the message can name the offending text.
|
|
172
|
+
for (const clause of filter.split(/\s+and\s+/i)) {
|
|
173
|
+
const node = parseClause(clause, byEdm);
|
|
174
|
+
if ('message' in node)
|
|
175
|
+
return { ok: false, code: node.code, message: node.message };
|
|
176
|
+
out.filters.push(node);
|
|
177
|
+
}
|
|
178
|
+
}
|
|
179
|
+
return { ok: true, value: out };
|
|
180
|
+
}
|
|
181
|
+
function parseClause(clause, byEdm) {
|
|
182
|
+
const fn = FUNCTION.exec(clause);
|
|
183
|
+
if (fn) {
|
|
184
|
+
const real = byEdm.get(fn[2]);
|
|
185
|
+
if (!real)
|
|
186
|
+
return { code: 'BAD_REQUEST', message: `$filter names no such property: ${fn[2]}` };
|
|
187
|
+
const v = literal(fn[3]);
|
|
188
|
+
if (v === undefined)
|
|
189
|
+
return { code: 'BAD_REQUEST', message: `$filter value not understood: ${fn[3]}` };
|
|
190
|
+
return { field: real, op: fn[1], value: v };
|
|
191
|
+
}
|
|
192
|
+
const cmp = COMPARISON.exec(clause);
|
|
193
|
+
if (cmp) {
|
|
194
|
+
const real = byEdm.get(cmp[1]);
|
|
195
|
+
if (!real)
|
|
196
|
+
return { code: 'BAD_REQUEST', message: `$filter names no such property: ${cmp[1]}` };
|
|
197
|
+
const v = literal(cmp[3]);
|
|
198
|
+
if (v === undefined)
|
|
199
|
+
return { code: 'BAD_REQUEST', message: `$filter value not understood: ${cmp[3]}` };
|
|
200
|
+
return { field: real, op: cmp[2], value: v };
|
|
201
|
+
}
|
|
202
|
+
return {
|
|
203
|
+
code: 'NOT_IMPLEMENTED',
|
|
204
|
+
message: `$filter clause not understood: "${clause.trim()}". This feed reads `
|
|
205
|
+
+ '`field eq|ne|gt|ge|lt|le value` and contains/startswith/endswith(field, \'value\'), joined by `and`.',
|
|
206
|
+
};
|
|
207
|
+
}
|
|
208
|
+
/** Comparable form: a date string sorts and compares correctly as a string because it is ISO 8601. */
|
|
209
|
+
function cmpValue(a, b) {
|
|
210
|
+
if (a === null || a === undefined)
|
|
211
|
+
return b === null || b === undefined ? 0 : -1;
|
|
212
|
+
if (b === null || b === undefined)
|
|
213
|
+
return 1;
|
|
214
|
+
if (typeof a === 'number' && typeof b === 'number')
|
|
215
|
+
return a - b;
|
|
216
|
+
return String(a) < String(b) ? -1 : String(a) > String(b) ? 1 : 0;
|
|
217
|
+
}
|
|
218
|
+
function matches(row, f) {
|
|
219
|
+
const v = row[f.field];
|
|
220
|
+
switch (f.op) {
|
|
221
|
+
case 'eq': return cmpValue(v, f.value) === 0;
|
|
222
|
+
case 'ne': return cmpValue(v, f.value) !== 0;
|
|
223
|
+
case 'gt': return cmpValue(v, f.value) > 0;
|
|
224
|
+
case 'ge': return cmpValue(v, f.value) >= 0;
|
|
225
|
+
case 'lt': return cmpValue(v, f.value) < 0;
|
|
226
|
+
case 'le': return cmpValue(v, f.value) <= 0;
|
|
227
|
+
case 'contains': return String(v ?? '').includes(String(f.value));
|
|
228
|
+
case 'startswith': return String(v ?? '').startsWith(String(f.value));
|
|
229
|
+
case 'endswith': return String(v ?? '').endsWith(String(f.value));
|
|
230
|
+
}
|
|
231
|
+
}
|
|
232
|
+
/**
|
|
233
|
+
* Apply the parsed query. `RowId` is assigned before filtering, so a row keeps the same key whatever
|
|
234
|
+
* a client asks for — a key that shifted with the query would make the entity identity meaningless.
|
|
235
|
+
*/
|
|
236
|
+
export function applyQuery(rows, q, schema) {
|
|
237
|
+
let out = rows.map((r, i) => ({ [ROW_KEY]: i, ...r }));
|
|
238
|
+
for (const f of q.filters)
|
|
239
|
+
out = out.filter(r => matches(r, f));
|
|
240
|
+
const matched = out.length;
|
|
241
|
+
for (const o of [...q.orderby].reverse()) {
|
|
242
|
+
out = [...out].sort((a, b) => (o.desc ? -1 : 1) * cmpValue(a[o.field], b[o.field]));
|
|
243
|
+
}
|
|
244
|
+
out = out.slice(q.skip, q.top === undefined ? undefined : q.skip + q.top);
|
|
245
|
+
if (q.select) {
|
|
246
|
+
const keep = new Set([ROW_KEY, ...q.select]);
|
|
247
|
+
out = out.map(r => Object.fromEntries(Object.entries(r).filter(([k]) => keep.has(k))));
|
|
248
|
+
}
|
|
249
|
+
// Property names go back out as the metadata published them, which is what the client asked with.
|
|
250
|
+
const rename = new Map(schema.fields.map(f => [f.name, edmName(f.name)]));
|
|
251
|
+
return {
|
|
252
|
+
rows: out.map(r => Object.fromEntries(Object.entries(r).map(([k, v]) => [rename.get(k) ?? k, v]))),
|
|
253
|
+
matched,
|
|
254
|
+
};
|
|
255
|
+
}
|
|
256
|
+
//# sourceMappingURL=odata.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"odata.js","sourceRoot":"","sources":["../../../../src/services/datapackage/odata.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import { type Descriptor } from './contract.js';
|
|
2
|
+
/** Where the generated sheet sits, beside the descriptor it was projected from. */
|
|
3
|
+
export declare const odpsYamlKey: (name: string, contentHash: string) => string;
|
|
4
|
+
export interface OdpsProjectionInput {
|
|
5
|
+
descriptor: Descriptor;
|
|
6
|
+
ownerGhii: string;
|
|
7
|
+
baseUrl: string;
|
|
8
|
+
/** The permanent, session-free URL of each resource's CSV, keyed by resource name. */
|
|
9
|
+
resourceUrls: Record<string, string>;
|
|
10
|
+
descriptorUrl: string;
|
|
11
|
+
/** ISO 639-1 language the `details` block is keyed by. v4.1 requires the map. */
|
|
12
|
+
lang?: string;
|
|
13
|
+
}
|
|
14
|
+
/**
|
|
15
|
+
* Project one published version into an ODPS v4.1 document.
|
|
16
|
+
*
|
|
17
|
+
* Everything traces to the descriptor. `status` is 'production' because a published version at a
|
|
18
|
+
* permanent immutable address is exactly that — a draft is a thing that has not been published, and
|
|
19
|
+
* this function only ever sees published ones.
|
|
20
|
+
*/
|
|
21
|
+
export declare function descriptorToOdps(input: OdpsProjectionInput): Record<string, unknown>;
|
|
22
|
+
/** The generated sheet as YAML — the format ODPS leads with. */
|
|
23
|
+
export declare function odpsToYamlDocument(doc: Record<string, unknown>): string;
|
|
24
|
+
//# sourceMappingURL=odps.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"odps.d.ts","sourceRoot":"","sources":["../../../../src/services/datapackage/odps.ts"],"names":[],"mappings":"AA6BA,OAAO,EAAwB,KAAK,UAAU,EAAE,MAAM,eAAe,CAAC;AAEtE,mFAAmF;AACnF,eAAO,MAAM,WAAW,GAAI,MAAM,MAAM,EAAE,aAAa,MAAM,KAAG,MACJ,CAAC;AA0B7D,MAAM,WAAW,mBAAmB;IAChC,UAAU,EAAE,UAAU,CAAC;IACvB,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;IAChB,sFAAsF;IACtF,YAAY,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACrC,aAAa,EAAE,MAAM,CAAC;IACtB,iFAAiF;IACjF,IAAI,CAAC,EAAE,MAAM,CAAC;CACjB;AAED;;;;;;GAMG;AACH,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,mBAAmB,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAoHpF;AAED,gEAAgE;AAChE,wBAAgB,kBAAkB,CAAC,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,MAAM,CAEvE"}
|
|
@@ -0,0 +1,183 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @file src/services/datapackage/odps.ts
|
|
3
|
+
* @description The product sheet, as a projection of the descriptor. `odps.yaml` is generated into
|
|
4
|
+
* every published version so a package is describable to a buyer without anyone authoring a second
|
|
5
|
+
* document about it.
|
|
6
|
+
*
|
|
7
|
+
* ONE SCHEMA, MANY PROJECTIONS, and this is one of the projections. The Table Schema is the only
|
|
8
|
+
* place columns and types are declared; the ODPS sheet, the CSV header and an agent's view of the
|
|
9
|
+
* package are all derived from it, so they cannot drift. Nothing here is authored — every field
|
|
10
|
+
* traces to something the descriptor already holds, which is why it stays true when the package
|
|
11
|
+
* changes and why it needs no mapping layer to maintain.
|
|
12
|
+
*
|
|
13
|
+
* THREE PLACES THE SPEC'S CLOSED ENUMS DO NOT FIT, handled the same way each time: state it under
|
|
14
|
+
* `x-aimeat` rather than bend a field to nearly mean it.
|
|
15
|
+
* - `dataAccess[].format` is `TOON|JSON|XML|CSV|Excel|zip|plain text|GraphQL|MCP`. CSV is on it, so
|
|
16
|
+
* today's canonical form declares itself honestly. Parquet is not, and when Parquet arrives it
|
|
17
|
+
* goes in the extension block rather than being called `zip`.
|
|
18
|
+
* - `specification` is `OAS|RAML|Slate|MCP`. A plain file has no API specification, so the field is
|
|
19
|
+
* simply absent rather than filled with the closest wrong answer.
|
|
20
|
+
* - `updateFrequency` IS in the SLA dimension enum, and it is filled from the producer's cron —
|
|
21
|
+
* recorded, not described. A package nobody schedules gets no SLA block at all: an unstated
|
|
22
|
+
* service level is an absent one, never a promise of daily.
|
|
23
|
+
* @structure descriptorToOdps · odpsYamlKey
|
|
24
|
+
* @usage const doc = descriptorToOdps({ descriptor, ownerGhii, baseUrl, resourceUrls });
|
|
25
|
+
* @version-history
|
|
26
|
+
* v1.0.0 -- 2026-08-15 -- Initial (TARGET-063 vaihe 1: "the package is sellable").
|
|
27
|
+
*/
|
|
28
|
+
import { stringify as yamlStringify } from 'yaml';
|
|
29
|
+
import { ODPS_VERSION, ODPS_SCHEMA_URL_YAML } from '../exchange-odps.js';
|
|
30
|
+
import { bare, packageKeyRoot } from './contract.js';
|
|
31
|
+
/** Where the generated sheet sits, beside the descriptor it was projected from. */
|
|
32
|
+
export const odpsYamlKey = (name, contentHash) => `${packageKeyRoot(name)}/${bare(contentHash)}/odps.yaml`;
|
|
33
|
+
/**
|
|
34
|
+
* A cron expression as an ODPS `updateFrequency` objective.
|
|
35
|
+
*
|
|
36
|
+
* Deliberately coarse: the SLA dimension takes a number and a unit, and a cron says more than that
|
|
37
|
+
* shape can hold. What a buyer needs from it is the ORDER OF MAGNITUDE — is this refreshed daily or
|
|
38
|
+
* quarterly — and an expression it cannot express is answered with null rather than a rounded
|
|
39
|
+
* fiction. `unit: 'never'` is the enum's own word for "no cadence", which is not the same as a
|
|
40
|
+
* cadence nobody stated.
|
|
41
|
+
*/
|
|
42
|
+
function updateFrequencyFrom(cron) {
|
|
43
|
+
if (!cron)
|
|
44
|
+
return null;
|
|
45
|
+
const parts = cron.trim().split(/\s+/);
|
|
46
|
+
if (parts.length < 5)
|
|
47
|
+
return null;
|
|
48
|
+
const [, , dom, month, dow] = parts;
|
|
49
|
+
if (month !== '*')
|
|
50
|
+
return { objective: 1, unit: 'months' };
|
|
51
|
+
if (dom !== '*')
|
|
52
|
+
return { objective: 1, unit: 'months' };
|
|
53
|
+
if (dow !== '*') {
|
|
54
|
+
// A single weekday is weekly; a list of them is more often than that, and "days" is the
|
|
55
|
+
// honest floor rather than a fraction of a week.
|
|
56
|
+
return /^[0-7]$/.test(dow) ? { objective: 1, unit: 'weeks' } : { objective: 1, unit: 'days' };
|
|
57
|
+
}
|
|
58
|
+
return { objective: 1, unit: 'days' };
|
|
59
|
+
}
|
|
60
|
+
/**
|
|
61
|
+
* Project one published version into an ODPS v4.1 document.
|
|
62
|
+
*
|
|
63
|
+
* Everything traces to the descriptor. `status` is 'production' because a published version at a
|
|
64
|
+
* permanent immutable address is exactly that — a draft is a thing that has not been published, and
|
|
65
|
+
* this function only ever sees published ones.
|
|
66
|
+
*/
|
|
67
|
+
export function descriptorToOdps(input) {
|
|
68
|
+
const { descriptor: d, resourceUrls, descriptorUrl } = input;
|
|
69
|
+
const lang = input.lang ?? 'en';
|
|
70
|
+
const a = d.aimeat;
|
|
71
|
+
const columns = d.resources.flatMap(r => r.schema.fields.map(f => `${r.name}.${f.name} (${f.type})`));
|
|
72
|
+
const rowTotal = d.resources.reduce((n, r) => n + r.rowCount, 0);
|
|
73
|
+
const details = {
|
|
74
|
+
name: d.title ?? d.name,
|
|
75
|
+
productID: a.packageId,
|
|
76
|
+
// v4.1 `type`: this is a dataset delivered as files, which is what 'dataset' means here.
|
|
77
|
+
type: 'dataset',
|
|
78
|
+
status: 'production',
|
|
79
|
+
visibility: 'public',
|
|
80
|
+
version: bare(a.contentHash).slice(0, 12),
|
|
81
|
+
description: d.description
|
|
82
|
+
?? `${rowTotal} rows across ${d.resources.length} resource(s), as a Frictionless Data Package.`,
|
|
83
|
+
// The change note is the version's own explanation, and ODPS has a field that means exactly
|
|
84
|
+
// that. It is required on every AIMEAT version, so this is never empty.
|
|
85
|
+
versionNotes: a.changes,
|
|
86
|
+
// The columns, from the ONE place they are declared. A buyer reading the sheet knows the
|
|
87
|
+
// shape before contracting, and this line cannot drift from the data.
|
|
88
|
+
tags: ['frictionless', 'data-package', d.name],
|
|
89
|
+
outputFileFormats: ['CSV'],
|
|
90
|
+
...(a.sources?.length ? {
|
|
91
|
+
recommendedDataProducts: a.sources.filter(s => s.url).map(s => s.url),
|
|
92
|
+
} : {}),
|
|
93
|
+
// A free sample without a separate artefact: the first resource IS the file, and it is
|
|
94
|
+
// world-readable. Nobody buys data blind, and here they do not have to.
|
|
95
|
+
...(Object.values(resourceUrls)[0] ? { contentSample: Object.values(resourceUrls)[0] } : {}),
|
|
96
|
+
};
|
|
97
|
+
const dataAccess = {
|
|
98
|
+
default: {
|
|
99
|
+
name: { [lang]: 'Permanent file address' },
|
|
100
|
+
description: {
|
|
101
|
+
[lang]: 'The resource CSV at a permanent, immutable URL. No authentication, no API key, '
|
|
102
|
+
+ 'byte ranges supported. The version is the content hash in the path, so this address '
|
|
103
|
+
+ 'can never answer with different bytes.',
|
|
104
|
+
},
|
|
105
|
+
outputPortType: 'file',
|
|
106
|
+
format: 'CSV',
|
|
107
|
+
authenticationMethod: 'none',
|
|
108
|
+
accessURL: Object.values(resourceUrls)[0] ?? descriptorUrl,
|
|
109
|
+
documentationURL: descriptorUrl,
|
|
110
|
+
hashType: 'SHA-256',
|
|
111
|
+
checksum: bare(d.resources[0]?.hash ?? a.contentHash),
|
|
112
|
+
},
|
|
113
|
+
descriptor: {
|
|
114
|
+
name: { [lang]: 'Frictionless descriptor' },
|
|
115
|
+
description: {
|
|
116
|
+
[lang]: 'datapackage.json with a Table Schema per resource. frictionless-py, R and the JS '
|
|
117
|
+
+ 'client resolve the resources from it with no AIMEAT knowledge.',
|
|
118
|
+
},
|
|
119
|
+
outputPortType: 'file',
|
|
120
|
+
format: 'JSON',
|
|
121
|
+
authenticationMethod: 'none',
|
|
122
|
+
accessURL: descriptorUrl,
|
|
123
|
+
documentationURL: descriptorUrl,
|
|
124
|
+
},
|
|
125
|
+
};
|
|
126
|
+
const freq = updateFrequencyFrom(a.producer.schedule);
|
|
127
|
+
const sla = freq
|
|
128
|
+
? {
|
|
129
|
+
declarative: [{
|
|
130
|
+
name: { [lang]: 'Producer cadence' },
|
|
131
|
+
description: {
|
|
132
|
+
[lang]: `Refreshed by a ${a.producer.kind} producer on the schedule "${a.producer.schedule}". `
|
|
133
|
+
+ 'A run that fails writes no version: the package stays on its previous one and the '
|
|
134
|
+
+ 'failure is recorded on the package pointer.',
|
|
135
|
+
},
|
|
136
|
+
dimensions: [{
|
|
137
|
+
dimension: 'updateFrequency',
|
|
138
|
+
objective: String(freq.objective),
|
|
139
|
+
unit: freq.unit,
|
|
140
|
+
}],
|
|
141
|
+
}],
|
|
142
|
+
}
|
|
143
|
+
: null;
|
|
144
|
+
return {
|
|
145
|
+
schema: ODPS_SCHEMA_URL_YAML,
|
|
146
|
+
version: ODPS_VERSION,
|
|
147
|
+
product: {
|
|
148
|
+
details: { [lang]: details },
|
|
149
|
+
dataAccess,
|
|
150
|
+
...(a.license ? { license: { scope: { definition: a.license } } } : {}),
|
|
151
|
+
...(sla ? { SLA: sla } : {}),
|
|
152
|
+
// Everything the closed enums cannot hold, stated rather than bent into a near-fit.
|
|
153
|
+
'x-aimeat': {
|
|
154
|
+
packageId: a.packageId,
|
|
155
|
+
contentHash: a.contentHash,
|
|
156
|
+
descriptorUrl,
|
|
157
|
+
profile: 'aimeat.datapackage/v1',
|
|
158
|
+
schemaSource: a.schemaSource,
|
|
159
|
+
producer: a.producer,
|
|
160
|
+
producedBy: a.producedBy,
|
|
161
|
+
resources: d.resources.map(r => ({
|
|
162
|
+
name: r.name, rowCount: r.rowCount, bytes: r.bytes, hash: r.hash,
|
|
163
|
+
url: resourceUrls[r.name] ?? null,
|
|
164
|
+
fields: r.schema.fields.map(f => ({ name: f.name, type: f.type })),
|
|
165
|
+
})),
|
|
166
|
+
columns,
|
|
167
|
+
...(a.legalBasis ? { legalBasis: a.legalBasis } : {}),
|
|
168
|
+
...(a.consentStatus ? { consentStatus: a.consentStatus } : {}),
|
|
169
|
+
...(a.retention ? { retention: a.retention } : {}),
|
|
170
|
+
...(a.retentionPolicy ? { retentionPolicy: a.retentionPolicy } : {}),
|
|
171
|
+
...(a.lineage?.length ? { lineage: a.lineage } : {}),
|
|
172
|
+
...(a.transformations?.length ? { transformations: a.transformations } : {}),
|
|
173
|
+
...(a.supersedes ? { supersedes: a.supersedes } : {}),
|
|
174
|
+
...(a.aiProvenanceId ? { aiProvenanceId: a.aiProvenanceId } : {}),
|
|
175
|
+
},
|
|
176
|
+
},
|
|
177
|
+
};
|
|
178
|
+
}
|
|
179
|
+
/** The generated sheet as YAML — the format ODPS leads with. */
|
|
180
|
+
export function odpsToYamlDocument(doc) {
|
|
181
|
+
return yamlStringify(doc, { lineWidth: 0 });
|
|
182
|
+
}
|
|
183
|
+
//# sourceMappingURL=odps.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"odps.js","sourceRoot":"","sources":["../../../../src/services/datapackage/odps.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AACH,OAAO,EAAE,SAAS,IAAI,aAAa,EAAE,MAAM,MAAM,CAAC;AAClD,OAAO,EAAE,YAAY,EAAE,oBAAoB,EAAE,MAAM,qBAAqB,CAAC;AACzE,OAAO,EAAE,IAAI,EAAE,cAAc,EAAmB,MAAM,eAAe,CAAC;AAEtE,mFAAmF;AACnF,MAAM,CAAC,MAAM,WAAW,GAAG,CAAC,IAAY,EAAE,WAAmB,EAAU,EAAE,CACrE,GAAG,cAAc,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,WAAW,CAAC,YAAY,CAAC;AAE7D;;;;;;;;GAQG;AACH,SAAS,mBAAmB,CAAC,IAAwB;IACjD,IAAI,CAAC,IAAI;QAAE,OAAO,IAAI,CAAC;IACvB,MAAM,KAAK,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;IACvC,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC;QAAE,OAAO,IAAI,CAAC;IAClC,MAAM,CAAC,EAAE,AAAD,EAAG,GAAG,EAAE,KAAK,EAAE,GAAG,CAAC,GAAG,KAAK,CAAC;IACpC,IAAI,KAAK,KAAK,GAAG;QAAE,OAAO,EAAE,SAAS,EAAE,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC;IAC3D,IAAI,GAAG,KAAK,GAAG;QAAE,OAAO,EAAE,SAAS,EAAE,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC;IACzD,IAAI,GAAG,KAAK,GAAG,EAAE,CAAC;QACd,wFAAwF;QACxF,iDAAiD;QACjD,OAAO,SAAS,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,SAAS,EAAE,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,SAAS,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;IAClG,CAAC;IACD,OAAO,EAAE,SAAS,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;AAC1C,CAAC;AAaD;;;;;;GAMG;AACH,MAAM,UAAU,gBAAgB,CAAC,KAA0B;IACvD,MAAM,EAAE,UAAU,EAAE,CAAC,EAAE,YAAY,EAAE,aAAa,EAAE,GAAG,KAAK,CAAC;IAC7D,MAAM,IAAI,GAAG,KAAK,CAAC,IAAI,IAAI,IAAI,CAAC;IAChC,MAAM,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC;IAEnB,MAAM,OAAO,GAAG,CAAC,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC,IAAI,GAAG,CAAC,CAAC,CAAC;IACtG,MAAM,QAAQ,GAAG,CAAC,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC;IAEjE,MAAM,OAAO,GAA4B;QACrC,IAAI,EAAE,CAAC,CAAC,KAAK,IAAI,CAAC,CAAC,IAAI;QACvB,SAAS,EAAE,CAAC,CAAC,SAAS;QACtB,yFAAyF;QACzF,IAAI,EAAE,SAAS;QACf,MAAM,EAAE,YAAY;QACpB,UAAU,EAAE,QAAQ;QACpB,OAAO,EAAE,IAAI,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC;QACzC,WAAW,EAAE,CAAC,CAAC,WAAW;eACnB,GAAG,QAAQ,gBAAgB,CAAC,CAAC,SAAS,CAAC,MAAM,+CAA+C;QACnG,4FAA4F;QAC5F,wEAAwE;QACxE,YAAY,EAAE,CAAC,CAAC,OAAO;QACvB,yFAAyF;QACzF,sEAAsE;QACtE,IAAI,EAAE,CAAC,cAAc,EAAE,cAAc,EAAE,CAAC,CAAC,IAAI,CAAC;QAC9C,iBAAiB,EAAE,CAAC,KAAK,CAAC;QAC1B,GAAG,CAAC,CAAC,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC,CAAC;YACpB,uBAAuB,EAAE,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAa,CAAC;SAClF,CAAC,CAAC,CAAC,EAAE,CAAC;QACP,uFAAuF;QACvF,wEAAwE;QACxE,GAAG,CAAC,MAAM,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,aAAa,EAAE,MAAM,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;KAC/F,CAAC;IAEF,MAAM,UAAU,GAA4B;QACxC,OAAO,EAAE;YACL,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,EAAE,wBAAwB,EAAE;YAC1C,WAAW,EAAE;gBACT,CAAC,IAAI,CAAC,EAAE,iFAAiF;sBACnF,sFAAsF;sBACtF,wCAAwC;aACjD;YACD,cAAc,EAAE,MAAM;YACtB,MAAM,EAAE,KAAK;YACb,oBAAoB,EAAE,MAAM;YAC5B,SAAS,EAAE,MAAM,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,IAAI,aAAa;YAC1D,gBAAgB,EAAE,aAAa;YAC/B,QAAQ,EAAE,SAAS;YACnB,QAAQ,EAAE,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,IAAI,IAAI,CAAC,CAAC,WAAW,CAAC;SACxD;QACD,UAAU,EAAE;YACR,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,EAAE,yBAAyB,EAAE;YAC3C,WAAW,EAAE;gBACT,CAAC,IAAI,CAAC,EAAE,mFAAmF;sBACrF,gEAAgE;aACzE;YACD,cAAc,EAAE,MAAM;YACtB,MAAM,EAAE,MAAM;YACd,oBAAoB,EAAE,MAAM;YAC5B,SAAS,EAAE,aAAa;YACxB,gBAAgB,EAAE,aAAa;SAClC;KACJ,CAAC;IAEF,MAAM,IAAI,GAAG,mBAAmB,CAAC,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;IACtD,MAAM,GAAG,GAAG,IAAI;QACZ,CAAC,CAAC;YACE,WAAW,EAAE,CAAC;oBACV,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,EAAE,kBAAkB,EAAE;oBACpC,WAAW,EAAE;wBACT,CAAC,IAAI,CAAC,EAAE,kBAAkB,CAAC,CAAC,QAAQ,CAAC,IAAI,8BAA8B,CAAC,CAAC,QAAQ,CAAC,QAAQ,KAAK;8BACzF,oFAAoF;8BACpF,6CAA6C;qBACtD;oBACD,UAAU,EAAE,CAAC;4BACT,SAAS,EAAE,iBAAiB;4BAC5B,SAAS,EAAE,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC;4BACjC,IAAI,EAAE,IAAI,CAAC,IAAI;yBAClB,CAAC;iBACL,CAAC;SACL;QACD,CAAC,CAAC,IAAI,CAAC;IAEX,OAAO;QACH,MAAM,EAAE,oBAAoB;QAC5B,OAAO,EAAE,YAAY;QACrB,OAAO,EAAE;YACL,OAAO,EAAE,EAAE,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE;YAC5B,UAAU;YACV,GAAG,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,EAAE,KAAK,EAAE,EAAE,UAAU,EAAE,CAAC,CAAC,OAAO,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YACvE,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YAC5B,oFAAoF;YACpF,UAAU,EAAE;gBACR,SAAS,EAAE,CAAC,CAAC,SAAS;gBACtB,WAAW,EAAE,CAAC,CAAC,WAAW;gBAC1B,aAAa;gBACb,OAAO,EAAE,uBAAuB;gBAChC,YAAY,EAAE,CAAC,CAAC,YAAY;gBAC5B,QAAQ,EAAE,CAAC,CAAC,QAAQ;gBACpB,UAAU,EAAE,CAAC,CAAC,UAAU;gBACxB,SAAS,EAAE,CAAC,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;oBAC7B,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,QAAQ,EAAE,CAAC,CAAC,QAAQ,EAAE,KAAK,EAAE,CAAC,CAAC,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI;oBAChE,GAAG,EAAE,YAAY,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,IAAI;oBACjC,MAAM,EAAE,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC;iBACrE,CAAC,CAAC;gBACH,OAAO;gBACP,GAAG,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE,UAAU,EAAE,CAAC,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;gBACrD,GAAG,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,EAAE,aAAa,EAAE,CAAC,CAAC,aAAa,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;gBAC9D,GAAG,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,SAAS,EAAE,CAAC,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;gBAClD,GAAG,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,EAAE,eAAe,EAAE,CAAC,CAAC,eAAe,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;gBACpE,GAAG,CAAC,CAAC,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;gBACpD,GAAG,CAAC,CAAC,CAAC,eAAe,EAAE,MAAM,CAAC,CAAC,CAAC,EAAE,eAAe,EAAE,CAAC,CAAC,eAAe,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;gBAC5E,GAAG,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE,UAAU,EAAE,CAAC,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;gBACrD,GAAG,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,EAAE,cAAc,EAAE,CAAC,CAAC,cAAc,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;aACpE;SACJ;KACJ,CAAC;AACN,CAAC;AAED,gEAAgE;AAChE,MAAM,UAAU,kBAAkB,CAAC,GAA4B;IAC3D,OAAO,aAAa,CAAC,GAAG,EAAE,EAAE,SAAS,EAAE,CAAC,EAAE,CAAC,CAAC;AAChD,CAAC"}
|
|
@@ -0,0 +1,143 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @file src/services/datapackage/store.ts
|
|
3
|
+
* @description Publishing and reading an AIMEAT Data Package — the one implementation the three
|
|
4
|
+
* bindings (ctx.datapackage, the browser library, the MCP tools) all reach.
|
|
5
|
+
*
|
|
6
|
+
* REFUSE BEFORE YOU WRITE. `publish` validates every resource against its own Table Schema and
|
|
7
|
+
* returns the coordinates of what is wrong WITHOUT having stored a byte. The order is the point:
|
|
8
|
+
* this node's own audit found three defects of exactly one shape — bytes written before the name
|
|
9
|
+
* was claimed, a paywall standing down before comparing the coordinate, a response sent before the
|
|
10
|
+
* work it announced. A publish that wrote the CSV and then discovered the schema was violated would
|
|
11
|
+
* leave a half-version at a permanent address, which is worse than no version at all.
|
|
12
|
+
*
|
|
13
|
+
* AND A FAILED RUN LEAVES THE PREVIOUS VERSION STANDING. `recordFailure` writes the reason onto
|
|
14
|
+
* the mutable `latest.json` pointer and touches nothing else, so a consumer following the newest
|
|
15
|
+
* version keeps reading the last good one and can see that the newest attempt failed, when, and
|
|
16
|
+
* why. No empty version, no truncated version, no silent success.
|
|
17
|
+
*
|
|
18
|
+
* TWO SURFACES, ONE TRUTH. The BYTES in storage are canonical — a permanent, auth-free,
|
|
19
|
+
* range-readable address that DuckDB, pandas and frictionless-py read with no AIMEAT knowledge.
|
|
20
|
+
* The knowledge package written beside them is a CATALOGUE entry (`content_type: 'dataset'`, the
|
|
21
|
+
* value the closed union already has — `data-package` is not in it) so the package appears where a
|
|
22
|
+
* person and an agent look for knowledge. The catalogue points at the bytes; it never holds them,
|
|
23
|
+
* because a knowledge package is a collection of memory entries and memory does not carry files.
|
|
24
|
+
* @structure publishPackage · openPackage · readRows · recordFailure · listPackages
|
|
25
|
+
* @usage
|
|
26
|
+
* const out = await publishPackage({ storage, config }, ownerGhii, input, producedBy);
|
|
27
|
+
* if (!out.ok) return out.issues;
|
|
28
|
+
* @version-history
|
|
29
|
+
* v1.0.0 -- 2026-08-15 -- Initial (TARGET-063 vaihe 1, A4/B1/B2).
|
|
30
|
+
*/
|
|
31
|
+
import type { AimeatConfig } from '../../config.js';
|
|
32
|
+
import type { Storage } from '../../storage/interface.js';
|
|
33
|
+
import { type Descriptor, type LatestPointer, type PublishInput, type TableSchema } from './contract.js';
|
|
34
|
+
import { type ValidationIssue } from './table.js';
|
|
35
|
+
export interface StoreDeps {
|
|
36
|
+
storage: Storage;
|
|
37
|
+
config: AimeatConfig;
|
|
38
|
+
}
|
|
39
|
+
/** Who produced this version. Every road knows it; none of them may make it up. */
|
|
40
|
+
export interface ProducedBy {
|
|
41
|
+
/** The exact principal: an owner GHII, an agent GAII, or the owner on an unattended road. */
|
|
42
|
+
gaii: string;
|
|
43
|
+
kind: Descriptor['aimeat']['producer']['kind'];
|
|
44
|
+
ref?: string;
|
|
45
|
+
schedule?: string;
|
|
46
|
+
run?: string;
|
|
47
|
+
}
|
|
48
|
+
export type PublishResult = {
|
|
49
|
+
ok: true;
|
|
50
|
+
descriptor: Descriptor;
|
|
51
|
+
contentHash: string;
|
|
52
|
+
descriptorUrl: string;
|
|
53
|
+
unchanged: boolean;
|
|
54
|
+
resources: Array<{
|
|
55
|
+
name: string;
|
|
56
|
+
url: string;
|
|
57
|
+
rowCount: number;
|
|
58
|
+
bytes: number;
|
|
59
|
+
}>;
|
|
60
|
+
/** Versions the owner's retention policy removed on this publish. Empty when no policy is
|
|
61
|
+
* set, which is the default: keep everything. Returned so the answer can SAY what was
|
|
62
|
+
* deleted — a deletion nobody can see is how a history disappears unnoticed. */
|
|
63
|
+
pruned: string[];
|
|
64
|
+
} | {
|
|
65
|
+
ok: false;
|
|
66
|
+
code: 'INVALID_INPUT' | 'QUALITY_GATE';
|
|
67
|
+
message: string;
|
|
68
|
+
issues: ValidationIssue[];
|
|
69
|
+
};
|
|
70
|
+
/**
|
|
71
|
+
* Build, check and store one version.
|
|
72
|
+
*
|
|
73
|
+
* `unchanged: true` means the content hash matched what is already published: the same address
|
|
74
|
+
* already holds these exact bytes, so nothing was rewritten. That is not a failure and not a new
|
|
75
|
+
* version — it is a deterministic producer proving it is deterministic, and the caller should say
|
|
76
|
+
* so rather than announcing an update that did not happen.
|
|
77
|
+
*/
|
|
78
|
+
export declare function publishPackage(deps: StoreDeps, ownerGhii: string, input: PublishInput, producedBy: ProducedBy): Promise<PublishResult>;
|
|
79
|
+
/**
|
|
80
|
+
* A run failed. The package stays on the version it had; the pointer says the newest attempt did not
|
|
81
|
+
* land, when, and why. This is the whole of "epäonnistuminen näkyy, eikä sitä peitetä": no empty
|
|
82
|
+
* version is written, and a consumer polling `latest.json` learns the difference between a package
|
|
83
|
+
* that has not changed and one whose producer is broken.
|
|
84
|
+
*/
|
|
85
|
+
export declare function recordFailure(deps: StoreDeps, ownerGhii: string, name: string, message: string): Promise<void>;
|
|
86
|
+
export interface OpenedPackage {
|
|
87
|
+
descriptor: Descriptor;
|
|
88
|
+
descriptorUrl: string;
|
|
89
|
+
latest?: LatestPointer;
|
|
90
|
+
}
|
|
91
|
+
/**
|
|
92
|
+
* Read a package back. `ref` is `pkg:{owner}/{name}` for the newest version, or
|
|
93
|
+
* `pkg:{owner}/{name}@sha256:…` to pin one. A pinned reference always answers with the same bytes,
|
|
94
|
+
* which is what makes pinning worth anything.
|
|
95
|
+
*/
|
|
96
|
+
export declare function openPackage(deps: StoreDeps, ref: string, nodeId: string): Promise<OpenedPackage | null>;
|
|
97
|
+
/** Rows of one resource, paginated. The caller names the window; nothing here decides to send a
|
|
98
|
+
* whole table into somebody's context because it happened to fit. */
|
|
99
|
+
export declare function readRows(deps: StoreDeps, ref: string, nodeId: string, resource: string, opts?: {
|
|
100
|
+
offset?: number;
|
|
101
|
+
limit?: number;
|
|
102
|
+
select?: string[];
|
|
103
|
+
}): Promise<{
|
|
104
|
+
rows: Array<Record<string, unknown>>;
|
|
105
|
+
total: number;
|
|
106
|
+
schema: TableSchema;
|
|
107
|
+
} | null>;
|
|
108
|
+
/** Every package one owner has, newest version each, with any recorded failure. */
|
|
109
|
+
export declare function listPackages(deps: StoreDeps, ownerGhii: string): Promise<LatestPointer[]>;
|
|
110
|
+
/** One entry in a package's history: enough to decide about a version without opening it. */
|
|
111
|
+
export interface VersionEntry {
|
|
112
|
+
contentHash: string;
|
|
113
|
+
/** When this version's descriptor was written. Not the descriptor's own `created`, which is the
|
|
114
|
+
* first producer's clock; this is when these bytes landed here. */
|
|
115
|
+
at: string;
|
|
116
|
+
/** True for the one `latest.json` points at. There is exactly one, unless nothing is published. */
|
|
117
|
+
current: boolean;
|
|
118
|
+
/** The mandatory explanation. It is the reason a history is readable rather than a list of hashes. */
|
|
119
|
+
changes: string;
|
|
120
|
+
rowCount: number;
|
|
121
|
+
bytes: number;
|
|
122
|
+
descriptorUrl: string;
|
|
123
|
+
supersedes?: string;
|
|
124
|
+
}
|
|
125
|
+
/**
|
|
126
|
+
* Every version of one package, newest first.
|
|
127
|
+
*
|
|
128
|
+
* The versions are DISCOVERED FROM THE KEYS rather than from an index, because the keys are the
|
|
129
|
+
* index: a version is a directory named by its content hash, so nothing can be published without
|
|
130
|
+
* appearing here and nothing can be listed here without existing. An index would be a second thing
|
|
131
|
+
* to keep in step with the first.
|
|
132
|
+
*
|
|
133
|
+
* Each descriptor is read, which is one small GET per version. That is what makes `changes` and
|
|
134
|
+
* `rowCount` available, and it is bounded by the owner's retention policy rather than by time.
|
|
135
|
+
*/
|
|
136
|
+
export declare function listVersions(deps: StoreDeps, ownerGhii: string, name: string): Promise<VersionEntry[]>;
|
|
137
|
+
/** `pkg:{owner}/{name}` or `pkg:{owner}/{name}@sha256:…`, or the bare `{name}` of your own. */
|
|
138
|
+
export declare function parseRef(ref: string, nodeId: string): {
|
|
139
|
+
ownerGhii: string;
|
|
140
|
+
name: string;
|
|
141
|
+
contentHash?: string;
|
|
142
|
+
} | null;
|
|
143
|
+
//# sourceMappingURL=store.d.ts.map
|