@cosmicdrift/kumiko-framework 0.388.0 → 0.390.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/AGENTS.md +12 -4
- package/README.md +1 -1
- package/agents/examples/apex-surface-auth.md +2 -3
- package/agents/examples/api-worker-split.md +9 -2
- package/agents/examples/auth-claims.md +1 -1
- package/agents/examples/cross-feature-events.md +12 -12
- package/agents/examples/crypto-shredding-hr.md +2 -2
- package/agents/examples/encrypted-tenant-config.md +1 -1
- package/agents/examples/error-contract.md +12 -7
- package/agents/examples/event-sourcing.md +29 -29
- package/agents/examples/files-post-processing.md +10 -8
- package/agents/examples/golden-path.md +13 -1
- package/agents/examples/inbound-mail-triage.md +1 -0
- package/agents/examples/lane-routing.md +2 -1
- package/agents/examples/legal-pages.md +2 -2
- package/agents/examples/lifecycle-hooks.md +55 -2
- package/agents/examples/list-table-options.md +466 -0
- package/agents/examples/managed-config.md +4 -4
- package/agents/examples/managed-pages.md +1 -1
- package/agents/examples/pdf-audit-export.md +4 -2
- package/agents/examples/relations.md +19 -4
- package/agents/examples/search.md +4 -4
- package/agents/examples/secrets-demo.md +9 -6
- package/agents/examples/state-machine.md +5 -4
- package/agents/examples/tenant-isolation.md +73 -1
- package/agents/examples/tenant-settings.md +1 -1
- package/agents/examples/user-data-rights.md +3 -6
- package/agents/examples/workflow-engine.md +53 -47
- package/agents/examples.md +5 -4
- package/agents/features.md +1 -1
- package/agents/widgets.md +1 -0
- package/dist/api/api-constants.d.ts +1 -0
- package/dist/api/api-constants.js +2 -0
- package/dist/api/auth-middleware.js +1 -1
- package/dist/api/auth-routes-invite.js +2 -1
- package/dist/api/auth-routes-shared.d.ts +2 -0
- package/dist/api/auth-routes-shared.js +5 -0
- package/dist/api/client-error-route.js +2 -3
- package/dist/api/entity-read-access.d.ts +4 -1
- package/dist/api/entity-read-access.js +14 -0
- package/dist/api/export/export-cells-reference.d.ts +9 -0
- package/dist/api/export/export-cells-reference.js +21 -0
- package/dist/api/export/export-cells.d.ts +11 -0
- package/dist/api/export/export-cells.js +136 -0
- package/dist/api/export/export-ciphertext-guard.d.ts +2 -0
- package/dist/api/export/export-ciphertext-guard.js +27 -0
- package/dist/api/export/export-columns.d.ts +31 -0
- package/dist/api/export/export-columns.js +85 -0
- package/dist/api/export/export-errors.d.ts +4 -0
- package/dist/api/export/export-errors.js +14 -0
- package/dist/api/export/export-route.d.ts +4 -0
- package/dist/api/export/export-route.js +75 -0
- package/dist/api/export/export-rows.d.ts +13 -0
- package/dist/api/export/export-rows.js +62 -0
- package/dist/api/export/export-screen.d.ts +13 -0
- package/dist/api/export/export-screen.js +47 -0
- package/dist/api/export/export-xlsx-writer.d.ts +4 -0
- package/dist/api/export/export-xlsx-writer.js +21 -0
- package/dist/api/extra-route.d.ts +7 -1
- package/dist/api/index.d.ts +23 -27
- package/dist/api/index.js +13 -15
- package/dist/api/jwt.js +1 -1
- package/dist/api/observability-middleware.d.ts +1 -1
- package/dist/api/observability-middleware.js +2 -1
- package/dist/api/pii-leak-guard.d.ts +3 -0
- package/dist/api/pii-leak-guard.js +3 -2
- package/dist/api/request-context-internals.d.ts +31 -0
- package/dist/api/request-context-internals.js +11 -0
- package/dist/api/request-context-scopes.d.ts +14 -0
- package/dist/api/request-context-scopes.js +69 -0
- package/dist/api/request-context.d.ts +1 -40
- package/dist/api/request-context.js +22 -51
- package/dist/api/request-id-middleware.d.ts +1 -1
- package/dist/api/route-registrars.d.ts +2 -1
- package/dist/api/route-registrars.js +1 -1
- package/dist/api/routes.d.ts +16 -0
- package/dist/api/routes.js +9 -5
- package/dist/api/server-boot-checks.d.ts +1 -1
- package/dist/api/server-boot-checks.js +2 -2
- package/dist/api/server-event-dispatcher.d.ts +6 -1
- package/dist/api/server-event-dispatcher.js +3 -4
- package/dist/api/server-extra-routes.d.ts +1 -1
- package/dist/api/server-extra-routes.js +5 -1
- package/dist/api/server-middleware.js +3 -1
- package/dist/api/server-routes.d.ts +3 -2
- package/dist/api/server-routes.js +8 -2
- package/dist/api/server-wiring.js +8 -4
- package/dist/api/server.d.ts +2 -1
- package/dist/api/sse-route.d.ts +3 -1
- package/dist/api/sse-route.js +11 -1
- package/dist/api/tenant-scoped-secrets.d.ts +2 -0
- package/dist/api/tenant-scoped-secrets.js +13 -0
- package/dist/api/websocket-route.d.ts +1 -1
- package/dist/auth/index.d.ts +0 -1
- package/dist/auth/roles.d.ts +0 -5
- package/dist/compliance/duration-spec.d.ts +0 -1
- package/dist/compliance/duration-spec.js +0 -5
- package/dist/compliance/index.d.ts +4 -4
- package/dist/compliance/index.js +2 -2
- package/dist/compliance/profiles.d.ts +0 -15
- package/dist/compliance/profiles.js +0 -23
- package/dist/config/index.d.ts +11 -9
- package/dist/config/index.js +13 -1
- package/dist/config/internals.d.ts +9 -0
- package/dist/config/internals.js +1 -0
- package/dist/consumer-cli-internals.d.ts +4 -0
- package/dist/consumer-cli-internals.js +1 -0
- package/dist/consumer-cli.d.ts +1 -4
- package/dist/consumer-cli.js +5 -1
- package/dist/crypto/event-pii.js +1 -1
- package/dist/crypto/index.d.ts +8 -9
- package/dist/crypto/index.js +7 -8
- package/dist/crypto/pg-kms-adapter.d.ts +1 -0
- package/dist/crypto/pg-kms-adapter.js +17 -18
- package/dist/db/aggregate-sql.d.ts +2 -0
- package/dist/db/aggregate-sql.js +10 -0
- package/dist/db/apply-entity-event.d.ts +1 -1
- package/dist/db/apply-entity-event.js +15 -47
- package/dist/db/blind-index-cleanup.js +91 -77
- package/dist/db/closed-connection.js +12 -19
- package/dist/db/collect-table-metas.js +1 -1
- package/dist/db/compound-types.d.ts +1 -1
- package/dist/db/compound-types.js +0 -7
- package/dist/db/config-seed.d.ts +2 -1
- package/dist/db/config-seed.js +6 -1
- package/dist/db/connection.d.ts +7 -6
- package/dist/db/connection.js +43 -24
- package/dist/db/cross-tenant-reads.d.ts +1 -1
- package/dist/db/cross-tenant-reads.js +1 -1
- package/dist/db/dialect.d.ts +0 -5
- package/dist/db/dialect.js +0 -3
- package/dist/db/driver-row-coercion.js +4 -4
- package/dist/db/driver-value-preparation.js +6 -4
- package/dist/db/eagerload.d.ts +2 -1
- package/dist/db/entity-field-encryption.d.ts +1 -1
- package/dist/db/entity-table-meta.d.ts +1 -1
- package/dist/db/event-store-executor-context.d.ts +3 -1
- package/dist/db/event-store-executor-context.js +4 -3
- package/dist/db/event-store-executor-read-aggregate-currencies.d.ts +17 -0
- package/dist/db/event-store-executor-read-aggregate-currencies.js +40 -0
- package/dist/db/event-store-executor-read-aggregate.js +36 -5
- package/dist/db/event-store-executor-read-filter.d.ts +1 -1
- package/dist/db/event-store-executor-read-filter.js +6 -3
- package/dist/db/event-store-executor-read-rows.d.ts +2 -1
- package/dist/db/event-store-executor-read-search.d.ts +2 -1
- package/dist/db/event-store-executor-read-sort.d.ts +2 -1
- package/dist/db/event-store-executor-read.js +2 -2
- package/dist/db/event-store-executor-write-atomic.d.ts +4 -0
- package/dist/db/event-store-executor-write-atomic.js +42 -0
- package/dist/db/event-store-executor-write-steps.d.ts +3 -5
- package/dist/db/event-store-executor-write-steps.js +0 -5
- package/dist/db/event-store-executor-write.js +22 -19
- package/dist/db/event-store-executor.d.ts +1 -1
- package/dist/db/event-store-executor.js +2 -1
- package/dist/db/executor-managed-tables.d.ts +7 -1
- package/dist/db/executor-managed-tables.js +12 -3
- package/dist/db/index.d.ts +29 -28
- package/dist/db/index.js +22 -20
- package/dist/db/known-table-names.d.ts +6 -0
- package/dist/db/known-table-names.js +21 -0
- package/dist/db/list-aggregate-labels.d.ts +1 -1
- package/dist/db/located-timestamp.d.ts +1 -1
- package/dist/db/located-timestamp.js +0 -5
- package/dist/db/migrate-generator.d.ts +17 -1
- package/dist/db/migrate-generator.js +50 -20
- package/dist/db/migrate-primary-key.d.ts +12 -0
- package/dist/db/migrate-primary-key.js +45 -0
- package/dist/db/migrate-rls-diff.d.ts +20 -0
- package/dist/db/migrate-rls-diff.js +61 -0
- package/dist/db/migrate-runner.js +7 -3
- package/dist/db/money.d.ts +1 -1
- package/dist/db/money.js +1 -1
- package/dist/db/parent-ref-clause.d.ts +2 -1
- package/dist/db/pg-error.d.ts +2 -0
- package/dist/db/pg-error.js +37 -21
- package/dist/db/queries/backfill-pii.js +3 -6
- package/dist/db/queries/database-now.js +2 -1
- package/dist/db/queries/ddl.d.ts +3 -0
- package/dist/db/queries/ddl.js +34 -1
- package/dist/db/queries/event-store.js +4 -2
- package/dist/db/queries/event-tenants.d.ts +2 -0
- package/dist/db/queries/event-tenants.js +17 -0
- package/dist/db/queries/rebuild-rls-guard.d.ts +2 -0
- package/dist/db/queries/rebuild-rls-guard.js +29 -0
- package/dist/db/queries/rls-boot-catalog.d.ts +16 -0
- package/dist/db/queries/rls-boot-catalog.js +39 -0
- package/dist/db/queries/rls-catalog.d.ts +6 -0
- package/dist/db/queries/rls-catalog.js +82 -0
- package/dist/db/queries/rls-scope.d.ts +3 -0
- package/dist/db/queries/rls-scope.js +17 -0
- package/dist/db/queries/rls-shape.d.ts +10 -0
- package/dist/db/queries/rls-shape.js +42 -0
- package/dist/db/queries/session-advisory-lock.d.ts +2 -0
- package/dist/db/queries/session-advisory-lock.js +23 -0
- package/dist/db/queries/shadow-swap.d.ts +1 -2
- package/dist/db/queries/shadow-swap.js +11 -28
- package/dist/db/queries/test-stack.d.ts +4 -1
- package/dist/db/queries/test-stack.js +83 -2
- package/dist/db/query.d.ts +14 -0
- package/dist/db/query.js +77 -48
- package/dist/db/reference-data.d.ts +1 -1
- package/dist/db/reference-data.js +20 -3
- package/dist/db/render-ddl.d.ts +6 -2
- package/dist/db/render-ddl.js +7 -7
- package/dist/db/render-rls-ddl.d.ts +35 -0
- package/dist/db/render-rls-ddl.js +127 -0
- package/dist/db/replay-migration-sql.d.ts +3 -1
- package/dist/db/replay-migration-sql.js +22 -5
- package/dist/db/replay-rls.d.ts +25 -0
- package/dist/db/replay-rls.js +156 -0
- package/dist/db/row-level-security-boot-check.d.ts +5 -0
- package/dist/db/row-level-security-boot-check.js +85 -0
- package/dist/db/row-level-security-connection.d.ts +3 -0
- package/dist/db/row-level-security-connection.js +213 -0
- package/dist/db/row-level-security-scope.d.ts +33 -0
- package/dist/db/row-level-security-scope.js +127 -0
- package/dist/db/scope-tenant-db-to-tenant.d.ts +3 -0
- package/dist/db/scope-tenant-db-to-tenant.js +14 -0
- package/dist/db/sql-identifier.d.ts +1 -0
- package/dist/db/sql-identifier.js +3 -0
- package/dist/db/statement-timeout.js +2 -1
- package/dist/db/table-builder.d.ts +2 -1
- package/dist/db/table-builder.js +1 -1
- package/dist/db/table-info.js +1 -1
- package/dist/db/table-push.d.ts +11 -2
- package/dist/db/table-push.js +15 -2
- package/dist/db/tenant-db-runner.d.ts +3 -1
- package/dist/db/tenant-db-runner.js +4 -3
- package/dist/db/tenant-db-scoped-rebind.d.ts +10 -0
- package/dist/db/tenant-db-scoped-rebind.js +33 -0
- package/dist/db/tenant-db-statement-runner.d.ts +13 -0
- package/dist/db/tenant-db-statement-runner.js +48 -0
- package/dist/db/tenant-db-upsert.d.ts +5 -0
- package/dist/db/tenant-db-upsert.js +91 -0
- package/dist/db/tenant-db.d.ts +17 -12
- package/dist/db/tenant-db.js +60 -121
- package/dist/db/tenant-id-filter.d.ts +3 -0
- package/dist/db/tenant-id-filter.js +30 -0
- package/dist/db/transaction-serialization.d.ts +6 -0
- package/dist/db/transaction-serialization.js +60 -0
- package/dist/derivatives/delete-stored-file.js +1 -1
- package/dist/derivatives/index.d.ts +2 -5
- package/dist/derivatives/index.js +2 -3
- package/dist/engine/access.d.ts +2 -1
- package/dist/engine/access.js +1 -1
- package/dist/engine/boot-validator/bundled-lists-table.d.ts +2 -0
- package/dist/engine/boot-validator/bundled-lists-table.js +36 -0
- package/dist/engine/boot-validator/entity-handler.d.ts +2 -1
- package/dist/engine/boot-validator/entity-handler.js +1 -1
- package/dist/engine/boot-validator/entity-list-aggregate-options.d.ts +3 -0
- package/dist/engine/boot-validator/entity-list-aggregate-options.js +23 -0
- package/dist/engine/boot-validator/list-bulk-actions.d.ts +3 -0
- package/dist/engine/boot-validator/list-bulk-actions.js +49 -0
- package/dist/engine/boot-validator/list-column-layout.d.ts +8 -0
- package/dist/engine/boot-validator/list-column-layout.js +41 -0
- package/dist/engine/boot-validator/list-table-aggregate-options.d.ts +24 -0
- package/dist/engine/boot-validator/list-table-aggregate-options.js +145 -0
- package/dist/engine/boot-validator/list-table-aggregate-query.d.ts +11 -0
- package/dist/engine/boot-validator/list-table-aggregate-query.js +31 -0
- package/dist/engine/boot-validator/list-table-export-options.d.ts +1 -0
- package/dist/engine/boot-validator/list-table-export-options.js +27 -0
- package/dist/engine/boot-validator/list-table-options.d.ts +3 -0
- package/dist/engine/boot-validator/list-table-options.js +77 -0
- package/dist/engine/boot-validator/list-table-reject-unknown-keys.d.ts +1 -0
- package/dist/engine/boot-validator/list-table-reject-unknown-keys.js +7 -0
- package/dist/engine/boot-validator/nav.d.ts +3 -1
- package/dist/engine/boot-validator/nav.js +1 -1
- package/dist/engine/boot-validator/ownership.d.ts +2 -1
- package/dist/engine/boot-validator/parent-ref.d.ts +2 -1
- package/dist/engine/boot-validator/projection-list-screens.d.ts +2 -1
- package/dist/engine/boot-validator/projection-list-screens.js +3 -13
- package/dist/engine/boot-validator/query-refs.d.ts +2 -1
- package/dist/engine/boot-validator/related-list-table-rules.d.ts +4 -0
- package/dist/engine/boot-validator/related-list-table-rules.js +42 -0
- package/dist/engine/boot-validator/screens-forms.d.ts +2 -1
- package/dist/engine/boot-validator/screens-kind-entity-list.js +7 -0
- package/dist/engine/boot-validator/screens-kind-projection-list.js +4 -0
- package/dist/engine/boot-validator/screens-kind-shared.d.ts +3 -1
- package/dist/engine/boot-validator/screens-lists.js +12 -2
- package/dist/engine/boot-validator/screens.d.ts +2 -1
- package/dist/engine/boot-validator/workspaces.d.ts +3 -1
- package/dist/engine/bridge-stub.d.ts +5 -2
- package/dist/engine/bridge-stub.js +39 -24
- package/dist/engine/build-app-schema.d.ts +2 -1
- package/dist/engine/build-app-schema.js +9 -1
- package/dist/engine/build-config-feature-schema.js +6 -1
- package/dist/engine/config-helpers.d.ts +2 -2
- package/dist/engine/config-helpers.js +0 -9
- package/dist/engine/constants.d.ts +0 -10
- package/dist/engine/constants.js +0 -8
- package/dist/engine/create-app.js +1 -1
- package/dist/engine/define-feature.d.ts +2 -1
- package/dist/engine/define-feature.js +5 -2
- package/dist/engine/define-handler.d.ts +1 -1
- package/dist/engine/define-step.d.ts +0 -1
- package/dist/engine/define-step.js +0 -3
- package/dist/engine/embedded-derived.d.ts +1 -1
- package/dist/engine/entity-handlers.d.ts +2 -1
- package/dist/engine/entity-handlers.js +7 -7
- package/dist/engine/entity-list-runtime-options.js +3 -1
- package/dist/engine/entity-list-searchability.d.ts +2 -1
- package/dist/engine/event-def.d.ts +2 -1
- package/dist/engine/event-helpers.d.ts +3 -1
- package/dist/engine/event-helpers.js +3 -3
- package/dist/engine/extension-names.d.ts +2 -8
- package/dist/engine/extension-names.js +2 -2
- package/dist/engine/extension-selector-plugins.d.ts +1 -1
- package/dist/engine/extensions/storage-provider.d.ts +1 -2
- package/dist/engine/extensions/user-data.d.ts +0 -8
- package/dist/engine/factories.d.ts +2 -1
- package/dist/engine/feature-builder-state.d.ts +9 -1
- package/dist/engine/feature-builder-state.js +1 -0
- package/dist/engine/feature-changelog.d.ts +1 -1
- package/dist/engine/feature-config-events-jobs.d.ts +4 -1
- package/dist/engine/feature-entity-handlers.d.ts +5 -1
- package/dist/engine/feature-manifest.d.ts +1 -0
- package/dist/engine/feature-manifest.js +2 -1
- package/dist/engine/feature-ui-extensions.d.ts +7 -1
- package/dist/engine/feature-ui-extensions.js +6 -4
- package/dist/engine/field-access.d.ts +3 -1
- package/dist/engine/field-access.js +12 -0
- package/dist/engine/handler-field-references.d.ts +0 -4
- package/dist/engine/index.d.ts +58 -55
- package/dist/engine/index.js +23 -28
- package/dist/engine/instruction-fields.d.ts +1 -1
- package/dist/engine/personal-data-fields.d.ts +1 -1
- package/dist/engine/qualified-name.d.ts +0 -1
- package/dist/engine/read-claim.d.ts +2 -1
- package/dist/engine/registry-facade.js +0 -3
- package/dist/engine/registry-ingest.d.ts +2 -1
- package/dist/engine/registry-ingest.js +1 -2
- package/dist/engine/registry-state.d.ts +12 -2
- package/dist/engine/registry-state.js +2 -3
- package/dist/engine/registry-validate.d.ts +3 -1
- package/dist/engine/registry-validate.js +7 -7
- package/dist/engine/run-in.d.ts +1 -1
- package/dist/engine/run-in.js +0 -1
- package/dist/engine/schema-builder.d.ts +1 -1
- package/dist/engine/schema-builder.js +1 -1
- package/dist/engine/screen-filter-ops.d.ts +2 -1
- package/dist/engine/screen-filter-ops.js +2 -5
- package/dist/engine/soft-delete-cleanup.d.ts +1 -1
- package/dist/engine/soft-delete-cleanup.js +4 -4
- package/dist/engine/state-machine.js +2 -1
- package/dist/engine/steps/_read-source.js +1 -1
- package/dist/engine/steps/aggregate-append-event.js +2 -2
- package/dist/engine/steps/call-feature.js +2 -2
- package/dist/engine/steps/mail-send.js +1 -1
- package/dist/engine/steps/retry.js +1 -1
- package/dist/engine/steps/wait-for-event.js +1 -1
- package/dist/engine/steps/wait.js +1 -1
- package/dist/engine/steps/webhook-send.js +1 -1
- package/dist/engine/strip-disabled-features-from-app-schema.js +7 -3
- package/dist/engine/template-variables.d.ts +2 -1
- package/dist/engine/transfer-adjacency.d.ts +1 -1
- package/dist/engine/types/feature.d.ts +1 -0
- package/dist/engine/types/index.d.ts +8 -30
- package/dist/engine/types/index.js +2 -10
- package/dist/engine/types/screen.d.ts +1 -1
- package/dist/engine/types/screen.js +1 -1
- package/dist/engine/validation.d.ts +2 -1
- package/dist/entrypoint/index.d.ts +9 -35
- package/dist/entrypoint/index.js +10 -1
- package/dist/entrypoint/internals.d.ts +40 -0
- package/dist/entrypoint/internals.js +1 -0
- package/dist/entrypoint/row-level-security-mode-check.d.ts +3 -0
- package/dist/entrypoint/row-level-security-mode-check.js +19 -0
- package/dist/env/dry-run-internals.d.ts +10 -0
- package/dist/env/dry-run-internals.js +1 -0
- package/dist/env/dry-run.d.ts +1 -10
- package/dist/env/dry-run.js +2 -1
- package/dist/env/index.d.ts +1 -85
- package/dist/env/index.js +6 -50
- package/dist/env/internals.d.ts +87 -0
- package/dist/env/internals.js +53 -0
- package/dist/errors/classes.js +2 -2
- package/dist/errors/index.d.ts +5 -14
- package/dist/errors/index.js +4 -9
- package/dist/errors/member-resolution.js +1 -1
- package/dist/errors/reasons.d.ts +0 -1
- package/dist/errors/reasons.js +7 -7
- package/dist/errors/serialize.d.ts +0 -18
- package/dist/errors/serialize.js +0 -27
- package/dist/es-ops/index.d.ts +4 -4
- package/dist/es-ops/index.js +2 -2
- package/dist/es-ops/operations-schema.d.ts +1 -1
- package/dist/es-ops/types.d.ts +4 -5
- package/dist/event-store/admin-api-internals.d.ts +14 -0
- package/dist/event-store/admin-api-internals.js +1 -0
- package/dist/event-store/admin-api.d.ts +1 -14
- package/dist/event-store/admin-api.js +11 -6
- package/dist/event-store/archive.js +4 -2
- package/dist/event-store/errors.js +2 -2
- package/dist/event-store/event-store.d.ts +1 -0
- package/dist/event-store/event-store.js +42 -32
- package/dist/event-store/events-schema.js +4 -1
- package/dist/event-store/index.d.ts +11 -13
- package/dist/event-store/index.js +7 -9
- package/dist/event-store/provenance-append.js +1 -1
- package/dist/event-store/rebuild-dead-letter.js +4 -2
- package/dist/event-store/snapshot.js +4 -3
- package/dist/event-store/stream-scope.d.ts +2 -0
- package/dist/event-store/stream-scope.js +6 -0
- package/dist/event-store/upcaster-dead-letter.js +4 -2
- package/dist/event-store/upcaster.d.ts +2 -1
- package/dist/files/action-form-upload.d.ts +2 -1
- package/dist/files/action-form-upload.js +1 -1
- package/dist/files/assert-file-refs-belong-to-tenant.d.ts +2 -1
- package/dist/files/assert-file-refs-belong-to-tenant.js +1 -1
- package/dist/files/bind-pending-file-refs.d.ts +2 -1
- package/dist/files/bind-pending-file-refs.js +2 -1
- package/dist/files/bind-referenced-files.write.js +1 -1
- package/dist/files/create-file-ref-from-bytes.d.ts +6 -3
- package/dist/files/create-file-ref-from-bytes.js +6 -3
- package/dist/files/create-file-ref.d.ts +6 -2
- package/dist/files/create-file-ref.js +13 -4
- package/dist/files/dispose-removed-file-refs.d.ts +2 -1
- package/dist/files/dispose-removed-file-refs.js +1 -1
- package/dist/files/feature.js +2 -2
- package/dist/files/file-handle.js +1 -1
- package/dist/files/file-routes.d.ts +3 -1
- package/dist/files/file-routes.js +41 -4
- package/dist/files/index.d.ts +11 -13
- package/dist/files/index.js +5 -7
- package/dist/files/load-save-file-refs.d.ts +2 -1
- package/dist/files/load-save-file-refs.js +1 -1
- package/dist/files/provider-resolver.d.ts +6 -4
- package/dist/files/provider-resolver.js +5 -5
- package/dist/files/record-write-check.d.ts +6 -0
- package/dist/files/record-write-check.js +13 -0
- package/dist/files/storage-tracking.js +4 -2
- package/dist/files/sweep-orphaned-uploads.d.ts +1 -1
- package/dist/files/sweep-orphaned-uploads.js +1 -1
- package/dist/files/upload-ledger.d.ts +2 -2
- package/dist/files/upload-ledger.js +4 -4
- package/dist/i18n/index.d.ts +2 -8
- package/dist/i18n/index.js +1 -1
- package/dist/i18n/internals.d.ts +7 -0
- package/dist/i18n/internals.js +1 -0
- package/dist/i18n/required-surface-keys.d.ts +4 -1
- package/dist/i18n/required-surface-keys.js +7 -2
- package/dist/internal/row-level-security.d.ts +3 -0
- package/dist/internal/row-level-security.js +3 -0
- package/dist/internal/stack-support.d.ts +1 -1
- package/dist/internal/stack-support.js +1 -1
- package/dist/internal/testing.d.ts +1 -0
- package/dist/internal/testing.js +10 -6
- package/dist/jobs/index.d.ts +1 -1
- package/dist/jobs/job-append-event.d.ts +12 -0
- package/dist/jobs/job-append-event.js +30 -0
- package/dist/jobs/job-runner-context.d.ts +2 -2
- package/dist/jobs/job-runner-context.js +46 -16
- package/dist/jobs/job-runner-execution.d.ts +1 -1
- package/dist/jobs/job-runner-execution.js +6 -4
- package/dist/jobs/job-runner-gates.d.ts +1 -1
- package/dist/jobs/job-runner-gates.js +0 -1
- package/dist/jobs/job-runner-helpers.d.ts +11 -4
- package/dist/jobs/job-runner-helpers.js +10 -1
- package/dist/jobs/job-runner-scope.d.ts +5 -2
- package/dist/jobs/job-runner-scope.js +6 -6
- package/dist/jobs/job-runner-types.d.ts +2 -1
- package/dist/jobs/job-runner.js +22 -6
- package/dist/jobs/max-per-tenant.d.ts +1 -1
- package/dist/logging/index.d.ts +1 -2
- package/dist/logging/index.js +1 -1
- package/dist/logging/pino-logger.js +1 -1
- package/dist/logging/utils.d.ts +1 -0
- package/dist/logging/utils.js +6 -0
- package/dist/migrations/index.d.ts +3 -3
- package/dist/migrations/index.js +3 -3
- package/dist/migrations/pending-rebuilds.d.ts +1 -1
- package/dist/migrations/pending-rebuilds.js +1 -1
- package/dist/migrations/pii-event-backfill.js +4 -1
- package/dist/observability/escape-hatch-report.d.ts +2 -1
- package/dist/observability/escape-hatch-report.js +9 -2
- package/dist/observability/index.d.ts +7 -15
- package/dist/observability/index.js +4 -12
- package/dist/observability/metric-validator.js +1 -1
- package/dist/observability/metrics-handle.d.ts +0 -1
- package/dist/observability/metrics-handle.js +2 -15
- package/dist/observability/recording-tracer.d.ts +1 -2
- package/dist/observability/recording-tracer.js +0 -6
- package/dist/observability/sensitive-filter.d.ts +0 -2
- package/dist/observability/sensitive-filter.js +0 -29
- package/dist/pipeline/active-membership.d.ts +2 -1
- package/dist/pipeline/active-membership.js +6 -2
- package/dist/pipeline/after-rollback-sink.d.ts +6 -0
- package/dist/pipeline/after-rollback-sink.js +32 -0
- package/dist/pipeline/append-event-core.d.ts +2 -1
- package/dist/pipeline/append-event-core.js +2 -2
- package/dist/pipeline/attach-outside-transaction.d.ts +3 -0
- package/dist/pipeline/attach-outside-transaction.js +13 -0
- package/dist/pipeline/auth-claims-resolver.d.ts +2 -1
- package/dist/pipeline/cascade-handler.d.ts +2 -1
- package/dist/pipeline/cascade-handler.js +3 -2
- package/dist/pipeline/config-accessor-factory.d.ts +1 -1
- package/dist/pipeline/config-accessor-factory.js +1 -1
- package/dist/pipeline/context-services.d.ts +56 -0
- package/dist/pipeline/context-services.js +73 -0
- package/dist/pipeline/dispatch-batch.d.ts +2 -1
- package/dist/pipeline/dispatch-batch.js +39 -19
- package/dist/pipeline/dispatch-query.js +5 -4
- package/dist/pipeline/dispatch-scope.d.ts +6 -0
- package/dist/pipeline/dispatch-scope.js +27 -0
- package/dist/pipeline/dispatch-shared.d.ts +13 -9
- package/dist/pipeline/dispatch-shared.js +75 -194
- package/dist/pipeline/dispatch-stream.js +8 -4
- package/dist/pipeline/dispatch-write.d.ts +2 -1
- package/dist/pipeline/dispatch-write.js +10 -8
- package/dist/pipeline/dispatcher-utils.d.ts +3 -1
- package/dist/pipeline/dispatcher-utils.js +8 -2
- package/dist/pipeline/dispatcher.d.ts +3 -2
- package/dist/pipeline/dispatcher.js +4 -3
- package/dist/pipeline/event-consumer-state.d.ts +0 -1
- package/dist/pipeline/event-dispatcher-delivery.d.ts +1 -1
- package/dist/pipeline/event-dispatcher-delivery.js +7 -3
- package/dist/pipeline/event-dispatcher.d.ts +3 -2
- package/dist/pipeline/event-dispatcher.js +13 -12
- package/dist/pipeline/event-retention.js +59 -56
- package/dist/pipeline/handler-access-error.js +2 -1
- package/dist/pipeline/handler-context-auth.d.ts +5 -6
- package/dist/pipeline/handler-context-auth.js +7 -4
- package/dist/pipeline/handler-context-config.d.ts +2 -5
- package/dist/pipeline/handler-context-config.js +2 -2
- package/dist/pipeline/handler-context-db.d.ts +32 -7
- package/dist/pipeline/handler-context-db.js +26 -17
- package/dist/pipeline/handler-context-dispatch.d.ts +14 -6
- package/dist/pipeline/handler-context-dispatch.js +18 -5
- package/dist/pipeline/handler-context-events.d.ts +22 -38
- package/dist/pipeline/handler-context-events.js +42 -35
- package/dist/pipeline/handler-context-member-resolution.d.ts +2 -0
- package/dist/pipeline/handler-context-member-resolution.js +110 -0
- package/dist/pipeline/handler-context-notify.d.ts +3 -2
- package/dist/pipeline/handler-context-notify.js +1 -1
- package/dist/pipeline/handler-context-observability.d.ts +2 -4
- package/dist/pipeline/handler-context-observability.js +7 -5
- package/dist/pipeline/handler-context-phase-denials.d.ts +11 -0
- package/dist/pipeline/handler-context-phase-denials.js +98 -0
- package/dist/pipeline/handler-context-scope.d.ts +7 -10
- package/dist/pipeline/handler-context-scope.js +18 -20
- package/dist/pipeline/index.d.ts +9 -21
- package/dist/pipeline/index.js +5 -7
- package/dist/pipeline/irreversible-operation-gate.d.ts +1 -1
- package/dist/pipeline/irreversible-operation-gate.js +2 -2
- package/dist/pipeline/lifecycle-pipeline.d.ts +8 -7
- package/dist/pipeline/lifecycle-pipeline.js +9 -15
- package/dist/pipeline/member-read-only-transaction.js +11 -3
- package/dist/pipeline/member-reader.d.ts +1 -1
- package/dist/pipeline/member-reader.js +2 -2
- package/dist/pipeline/msp-rebuild.js +5 -3
- package/dist/pipeline/multi-stream-apply-context.js +3 -2
- package/dist/pipeline/notify-scope.d.ts +2 -1
- package/dist/pipeline/pre-handler-gates.d.ts +2 -1
- package/dist/pipeline/pre-transaction-reservations.d.ts +3 -3
- package/dist/pipeline/pre-transaction-reservations.js +9 -7
- package/dist/pipeline/projection-rebuild.js +12 -5
- package/dist/pipeline/projection-state.d.ts +0 -6
- package/dist/pipeline/projection-state.js +0 -5
- package/dist/pipeline/projections-runner.d.ts +2 -1
- package/dist/pipeline/projections-runner.js +10 -6
- package/dist/pipeline/system-hooks.d.ts +6 -2
- package/dist/pipeline/system-hooks.js +61 -10
- package/dist/pipeline/system-identity-switch.d.ts +4 -2
- package/dist/pipeline/system-identity-switch.js +51 -36
- package/dist/pipeline/typed-append-event.d.ts +2 -0
- package/dist/pipeline/typed-append-event.js +4 -0
- package/dist/pipeline/write-origin.js +2 -2
- package/dist/pipeline/write-result-masking.d.ts +1 -1
- package/dist/pipeline/write-result-masking.js +13 -10
- package/dist/random/index.d.ts +1 -2
- package/dist/random/index.js +1 -2
- package/dist/rate-limit/bucket.d.ts +2 -1
- package/dist/rate-limit/middleware.js +2 -1
- package/dist/redis/index.d.ts +3 -4
- package/dist/redis/index.js +2 -2
- package/dist/schema-cli/apply-command.js +5 -2
- package/dist/schema-cli/baseline-command.js +7 -2
- package/dist/schema-cli/generate-command.js +7 -9
- package/dist/schema-cli/shared.d.ts +4 -0
- package/dist/schema-cli/shared.js +21 -2
- package/dist/schema-cli/status-command.js +8 -2
- package/dist/schema-cli/validate-command.js +52 -4
- package/dist/schema-cli.d.ts +0 -1
- package/dist/search/configure-tenant-index.d.ts +1 -3
- package/dist/search/configure-tenant-index.js +0 -4
- package/dist/search/index.d.ts +1 -4
- package/dist/search/index.js +0 -2
- package/dist/search/meilisearch-adapter-internals.d.ts +8 -0
- package/dist/search/meilisearch-adapter-internals.js +9 -0
- package/dist/search/meilisearch-adapter.d.ts +1 -8
- package/dist/search/meilisearch-adapter.js +6 -7
- package/dist/search/meilisearch-peer.d.ts +2 -0
- package/dist/search/meilisearch-peer.js +5 -0
- package/dist/search/reindex-entity.js +107 -91
- package/dist/secrets/index.d.ts +3 -4
- package/dist/secrets/index.js +2 -3
- package/dist/seeding/index.d.ts +2 -2
- package/dist/seeding/index.js +1 -2
- package/dist/time/index.d.ts +2 -2
- package/dist/time/index.js +1 -1
- package/dist/time/tz-context.d.ts +0 -5
- package/dist/time/tz-context.js +0 -9
- package/dist/ui-types/index.d.ts +8 -11
- package/dist/ui-types/index.js +3 -3
- package/dist/upgrade-changelog.d.ts +3 -0
- package/dist/upgrade-changelog.js +18 -0
- package/dist/upgrade-cli-internals.d.ts +8 -0
- package/dist/upgrade-cli-internals.js +63 -0
- package/dist/upgrade-cli.d.ts +1 -18
- package/dist/upgrade-cli.js +29 -137
- package/dist/upgrade-marker-parse.d.ts +32 -0
- package/dist/upgrade-marker-parse.js +73 -0
- package/dist/utils/import-optional-peer.d.ts +6 -0
- package/dist/utils/import-optional-peer.js +19 -0
- package/dist/utils/index.d.ts +1 -4
- package/dist/utils/index.js +1 -4
- package/package.json +27 -20
- package/src/changes.json +451 -0
- package/dist/crypto/request-kms-cache.d.ts +0 -8
- package/dist/crypto/request-kms-cache.js +0 -21
- package/dist/engine/codemod/index.d.ts +0 -2
- package/dist/engine/codemod/index.js +0 -1
- package/dist/engine/codemod/pipeline-codemod.d.ts +0 -50
- package/dist/engine/codemod/pipeline-codemod.js +0 -536
- package/dist/engine/feature-ast/entity-field-types.d.ts +0 -13
- package/dist/engine/feature-ast/entity-field-types.js +0 -35
- package/dist/engine/feature-ast/extractors/ai-steps.d.ts +0 -6
- package/dist/engine/feature-ast/extractors/ai-steps.js +0 -254
- package/dist/engine/feature-ast/extractors/events.d.ts +0 -5
- package/dist/engine/feature-ast/extractors/events.js +0 -275
- package/dist/engine/feature-ast/extractors/handlers.d.ts +0 -24
- package/dist/engine/feature-ast/extractors/handlers.js +0 -358
- package/dist/engine/feature-ast/extractors/hooks.d.ts +0 -24
- package/dist/engine/feature-ast/extractors/hooks.js +0 -248
- package/dist/engine/feature-ast/extractors/index.d.ts +0 -14
- package/dist/engine/feature-ast/extractors/index.js +0 -13
- package/dist/engine/feature-ast/extractors/jobs-routes.d.ts +0 -7
- package/dist/engine/feature-ast/extractors/jobs-routes.js +0 -145
- package/dist/engine/feature-ast/extractors/projections-screens.d.ts +0 -10
- package/dist/engine/feature-ast/extractors/projections-screens.js +0 -195
- package/dist/engine/feature-ast/extractors/resolve-import.d.ts +0 -21
- package/dist/engine/feature-ast/extractors/resolve-import.js +0 -180
- package/dist/engine/feature-ast/extractors/round1.d.ts +0 -10
- package/dist/engine/feature-ast/extractors/round1.js +0 -81
- package/dist/engine/feature-ast/extractors/round2.d.ts +0 -7
- package/dist/engine/feature-ast/extractors/round2.js +0 -191
- package/dist/engine/feature-ast/extractors/round3.d.ts +0 -23
- package/dist/engine/feature-ast/extractors/round3.js +0 -292
- package/dist/engine/feature-ast/extractors/round5.d.ts +0 -9
- package/dist/engine/feature-ast/extractors/round5.js +0 -68
- package/dist/engine/feature-ast/extractors/round6.d.ts +0 -4
- package/dist/engine/feature-ast/extractors/round6.js +0 -17
- package/dist/engine/feature-ast/extractors/shared.d.ts +0 -94
- package/dist/engine/feature-ast/extractors/shared.js +0 -343
- package/dist/engine/feature-ast/index.d.ts +0 -16
- package/dist/engine/feature-ast/index.js +0 -10
- package/dist/engine/feature-ast/parse.d.ts +0 -31
- package/dist/engine/feature-ast/parse.js +0 -483
- package/dist/engine/feature-ast/patch.d.ts +0 -210
- package/dist/engine/feature-ast/patch.js +0 -610
- package/dist/engine/feature-ast/patcher.d.ts +0 -217
- package/dist/engine/feature-ast/patcher.js +0 -281
- package/dist/engine/feature-ast/pattern-change-schema.d.ts +0 -1476
- package/dist/engine/feature-ast/pattern-change-schema.js +0 -1226
- package/dist/engine/feature-ast/pattern-id-matchers.d.ts +0 -7
- package/dist/engine/feature-ast/pattern-id-matchers.js +0 -210
- package/dist/engine/feature-ast/patterns.d.ts +0 -318
- package/dist/engine/feature-ast/patterns.js +0 -106
- package/dist/engine/feature-ast/render.d.ts +0 -47
- package/dist/engine/feature-ast/render.js +0 -662
- package/dist/engine/feature-ast/source-location.d.ts +0 -17
- package/dist/engine/feature-ast/source-location.js +0 -27
- package/dist/engine/pattern-library/index.d.ts +0 -2
- package/dist/engine/pattern-library/index.js +0 -3
- package/dist/engine/pattern-library/library.d.ts +0 -14
- package/dist/engine/pattern-library/library.js +0 -93
- package/dist/engine/pattern-library/mixed-schemas.d.ts +0 -16
- package/dist/engine/pattern-library/mixed-schemas.js +0 -559
- package/dist/engine/pattern-library/opaque-schemas.d.ts +0 -7
- package/dist/engine/pattern-library/opaque-schemas.js +0 -115
- package/dist/engine/pattern-library/shared-fields.d.ts +0 -122
- package/dist/engine/pattern-library/shared-fields.js +0 -88
- package/dist/engine/pattern-library/static-schemas.d.ts +0 -20
- package/dist/engine/pattern-library/static-schemas.js +0 -478
- package/dist/engine/pattern-library/types.d.ts +0 -158
- package/dist/engine/pattern-library/types.js +0 -36
- package/dist/engine/provider-plugin-context.d.ts +0 -3
- package/dist/engine/provider-plugin-context.js +0 -28
- package/dist/engine/resolve-config-or-param.d.ts +0 -18
- package/dist/engine/resolve-config-or-param.js +0 -76
- package/src/scripts/codemod/README.md +0 -187
- package/src/scripts/codemod/codemod-support.ts +0 -334
- package/src/scripts/codemod/collect-source-files.ts +0 -48
- package/src/scripts/codemod/crypto-shredding-testing-move.ts +0 -119
- package/src/scripts/codemod/db-factory.ts +0 -810
- package/src/scripts/codemod/feature-factory.ts +0 -429
- package/src/scripts/codemod/feature-layout.ts +0 -424
- package/src/scripts/codemod/import-extensions.ts +0 -118
- package/src/scripts/codemod/migrate-cross-tenant.ts +0 -328
- package/src/scripts/codemod/migrate-db-raw.ts +0 -401
- package/src/scripts/codemod/migrate-open-to-all.ts +0 -235
- package/src/scripts/codemod/object-form.ts +0 -746
- package/src/scripts/codemod/package-merge.ts +0 -299
- package/src/scripts/codemod/pii-personal-migration.ts +0 -816
- package/src/scripts/codemod/remove-engine-payload-casts.ts +0 -318
- package/src/scripts/codemod/s3-imports.ts +0 -236
- package/src/scripts/codemod/tenant-db-options.ts +0 -454
- package/src/scripts/codemod/testing-injection.ts +0 -215
- package/src/scripts/codemod/testing-move-targets.ts +0 -161
- package/src/scripts/codemod/testing-move.ts +0 -542
- package/src/scripts/codemod/unprocessable-error-details-reason.ts +0 -411
|
@@ -1,478 +0,0 @@
|
|
|
1
|
-
// Static pattern schemas (form-only, no closures).
|
|
2
|
-
import { CLAIM_KEY_TYPE_OPTIONS, ID_TYPE_OPTIONS } from "./shared-fields.js";
|
|
3
|
-
// --- Static patterns (form-only, no closures) -----------------------------
|
|
4
|
-
export const requiresSchema = {
|
|
5
|
-
kind: "requires",
|
|
6
|
-
label: { en: "Requires", de: "Benötigt" },
|
|
7
|
-
summary: { en: "Hard dependency on other features." },
|
|
8
|
-
category: "meta",
|
|
9
|
-
editability: "static",
|
|
10
|
-
singleton: true,
|
|
11
|
-
fields: [
|
|
12
|
-
{
|
|
13
|
-
path: "featureNames",
|
|
14
|
-
label: { en: "Feature names", de: "Feature-Namen" },
|
|
15
|
-
input: "string-list",
|
|
16
|
-
itemPlaceholder: "auth",
|
|
17
|
-
required: true,
|
|
18
|
-
},
|
|
19
|
-
],
|
|
20
|
-
};
|
|
21
|
-
export const optionalRequiresSchema = {
|
|
22
|
-
kind: "optionalRequires",
|
|
23
|
-
label: { en: "Optional requires", de: "Optional benötigt" },
|
|
24
|
-
summary: { en: "Soft dependency — used if available, otherwise skipped." },
|
|
25
|
-
category: "meta",
|
|
26
|
-
editability: "static",
|
|
27
|
-
singleton: true,
|
|
28
|
-
fields: [
|
|
29
|
-
{
|
|
30
|
-
path: "featureNames",
|
|
31
|
-
label: { en: "Feature names", de: "Feature-Namen" },
|
|
32
|
-
input: "string-list",
|
|
33
|
-
itemPlaceholder: "analytics",
|
|
34
|
-
},
|
|
35
|
-
],
|
|
36
|
-
};
|
|
37
|
-
export const readsConfigSchema = {
|
|
38
|
-
kind: "readsConfig",
|
|
39
|
-
label: { en: "Reads config", de: "Liest Config" },
|
|
40
|
-
summary: { en: "Declares which qualified config keys this feature reads." },
|
|
41
|
-
category: "meta",
|
|
42
|
-
editability: "static",
|
|
43
|
-
singleton: true,
|
|
44
|
-
fields: [
|
|
45
|
-
{
|
|
46
|
-
path: "qualifiedKeys",
|
|
47
|
-
label: { en: "Qualified keys", de: "Qualifizierte Keys" },
|
|
48
|
-
input: "string-list",
|
|
49
|
-
itemPlaceholder: "billing:plan",
|
|
50
|
-
},
|
|
51
|
-
],
|
|
52
|
-
};
|
|
53
|
-
export const systemScopeSchema = {
|
|
54
|
-
kind: "systemScope",
|
|
55
|
-
label: { en: "System scope", de: "System-Scope" },
|
|
56
|
-
summary: { en: "Marks this feature as system-tenant only." },
|
|
57
|
-
category: "meta",
|
|
58
|
-
editability: "static",
|
|
59
|
-
singleton: true,
|
|
60
|
-
fields: [],
|
|
61
|
-
};
|
|
62
|
-
export const toggleableSchema = {
|
|
63
|
-
kind: "toggleable",
|
|
64
|
-
label: { en: "Toggleable", de: "Umschaltbar" },
|
|
65
|
-
summary: { en: "Operator can switch this feature on/off per tenant." },
|
|
66
|
-
category: "meta",
|
|
67
|
-
editability: "static",
|
|
68
|
-
singleton: true,
|
|
69
|
-
fields: [
|
|
70
|
-
{
|
|
71
|
-
path: "default",
|
|
72
|
-
label: { en: "Enabled by default", de: "Standardmäßig aktiviert" },
|
|
73
|
-
input: "boolean",
|
|
74
|
-
required: true,
|
|
75
|
-
},
|
|
76
|
-
],
|
|
77
|
-
};
|
|
78
|
-
export const describeSchema = {
|
|
79
|
-
kind: "describe",
|
|
80
|
-
label: { en: "Description", de: "Beschreibung" },
|
|
81
|
-
summary: { en: "One-to-three-sentence docs-lead: what the feature does + when you need it." },
|
|
82
|
-
category: "meta",
|
|
83
|
-
editability: "static",
|
|
84
|
-
singleton: true,
|
|
85
|
-
fields: [
|
|
86
|
-
{
|
|
87
|
-
path: "text",
|
|
88
|
-
label: { en: "Text", de: "Text" },
|
|
89
|
-
input: "textarea",
|
|
90
|
-
required: true,
|
|
91
|
-
placeholder: "Stores per-tenant widgets and exposes CRUD handlers for them.",
|
|
92
|
-
},
|
|
93
|
-
],
|
|
94
|
-
};
|
|
95
|
-
export const uiHintsSchema = {
|
|
96
|
-
kind: "uiHints",
|
|
97
|
-
label: { en: "UI hints", de: "UI-Hinweise" },
|
|
98
|
-
summary: { en: "Picker/scaffolder metadata. Opaque to the Designer; rendered as raw TS source." },
|
|
99
|
-
category: "meta",
|
|
100
|
-
editability: "opaque",
|
|
101
|
-
singleton: true,
|
|
102
|
-
fields: [],
|
|
103
|
-
};
|
|
104
|
-
export const entitySchema = {
|
|
105
|
-
kind: "entity",
|
|
106
|
-
label: { en: "Entity", de: "Entität" },
|
|
107
|
-
summary: { en: "An aggregate stored as event-sourced read-model." },
|
|
108
|
-
category: "data",
|
|
109
|
-
editability: "static",
|
|
110
|
-
fields: [
|
|
111
|
-
{
|
|
112
|
-
path: "entityName",
|
|
113
|
-
label: { en: "Name", de: "Name" },
|
|
114
|
-
input: "text",
|
|
115
|
-
required: true,
|
|
116
|
-
placeholder: "task",
|
|
117
|
-
},
|
|
118
|
-
{
|
|
119
|
-
path: "definition.fields",
|
|
120
|
-
label: { en: "Fields", de: "Felder" },
|
|
121
|
-
input: "entity-fields-editor",
|
|
122
|
-
required: true,
|
|
123
|
-
},
|
|
124
|
-
{
|
|
125
|
-
path: "definition.idType",
|
|
126
|
-
label: { en: "ID type", de: "ID-Typ" },
|
|
127
|
-
input: "select",
|
|
128
|
-
options: ID_TYPE_OPTIONS,
|
|
129
|
-
},
|
|
130
|
-
{
|
|
131
|
-
path: "definition.softDelete",
|
|
132
|
-
label: { en: "Soft delete", de: "Soft-Delete" },
|
|
133
|
-
hint: { en: "Mark rows isDeleted=true instead of removing them." },
|
|
134
|
-
input: "boolean",
|
|
135
|
-
},
|
|
136
|
-
{
|
|
137
|
-
path: "definition.table",
|
|
138
|
-
label: { en: "Table name (override)", de: "Tabellenname (Override)" },
|
|
139
|
-
hint: { en: "Defaults to read_<plural-snake-case-name>." },
|
|
140
|
-
input: "text",
|
|
141
|
-
},
|
|
142
|
-
],
|
|
143
|
-
};
|
|
144
|
-
export const relationSchema = {
|
|
145
|
-
kind: "relation",
|
|
146
|
-
label: { en: "Relation", de: "Beziehung" },
|
|
147
|
-
summary: { en: "Foreign-key relationship between entities." },
|
|
148
|
-
category: "data",
|
|
149
|
-
editability: "static",
|
|
150
|
-
fields: [
|
|
151
|
-
{
|
|
152
|
-
path: "entityName",
|
|
153
|
-
label: { en: "Owner entity", de: "Besitzende Entität" },
|
|
154
|
-
input: "entity-ref",
|
|
155
|
-
required: true,
|
|
156
|
-
},
|
|
157
|
-
{
|
|
158
|
-
path: "relationName",
|
|
159
|
-
label: { en: "Relation name", de: "Beziehungs-Name" },
|
|
160
|
-
input: "text",
|
|
161
|
-
required: true,
|
|
162
|
-
placeholder: "owner",
|
|
163
|
-
},
|
|
164
|
-
{
|
|
165
|
-
path: "definition",
|
|
166
|
-
label: { en: "Type", de: "Typ" },
|
|
167
|
-
input: "discriminated-union",
|
|
168
|
-
discriminator: "type",
|
|
169
|
-
variants: [
|
|
170
|
-
{
|
|
171
|
-
tag: "belongsTo",
|
|
172
|
-
label: { en: "Belongs to", de: "Gehört zu" },
|
|
173
|
-
fields: [
|
|
174
|
-
{
|
|
175
|
-
path: "definition.target",
|
|
176
|
-
label: { en: "Target entity", de: "Ziel-Entität" },
|
|
177
|
-
input: "entity-ref",
|
|
178
|
-
required: true,
|
|
179
|
-
},
|
|
180
|
-
{
|
|
181
|
-
path: "definition.foreignKey",
|
|
182
|
-
label: { en: "Foreign key column", de: "FK-Spalte" },
|
|
183
|
-
input: "text",
|
|
184
|
-
required: true,
|
|
185
|
-
},
|
|
186
|
-
],
|
|
187
|
-
},
|
|
188
|
-
{
|
|
189
|
-
tag: "hasMany",
|
|
190
|
-
label: { en: "Has many", de: "Hat viele" },
|
|
191
|
-
fields: [
|
|
192
|
-
{
|
|
193
|
-
path: "definition.target",
|
|
194
|
-
label: { en: "Target entity", de: "Ziel-Entität" },
|
|
195
|
-
input: "entity-ref",
|
|
196
|
-
required: true,
|
|
197
|
-
},
|
|
198
|
-
],
|
|
199
|
-
},
|
|
200
|
-
{
|
|
201
|
-
tag: "manyToMany",
|
|
202
|
-
label: { en: "Many to many", de: "Viele zu viele" },
|
|
203
|
-
fields: [
|
|
204
|
-
{
|
|
205
|
-
path: "definition.target",
|
|
206
|
-
label: { en: "Target entity", de: "Ziel-Entität" },
|
|
207
|
-
input: "entity-ref",
|
|
208
|
-
required: true,
|
|
209
|
-
},
|
|
210
|
-
],
|
|
211
|
-
},
|
|
212
|
-
],
|
|
213
|
-
},
|
|
214
|
-
],
|
|
215
|
-
};
|
|
216
|
-
export const navSchema = {
|
|
217
|
-
kind: "nav",
|
|
218
|
-
label: { en: "Navigation entry", de: "Navigations-Eintrag" },
|
|
219
|
-
summary: { en: "Side-bar / menu link." },
|
|
220
|
-
category: "ui",
|
|
221
|
-
editability: "static",
|
|
222
|
-
fields: [
|
|
223
|
-
{
|
|
224
|
-
path: "definition.id",
|
|
225
|
-
label: { en: "ID", de: "ID" },
|
|
226
|
-
input: "text",
|
|
227
|
-
required: true,
|
|
228
|
-
},
|
|
229
|
-
{
|
|
230
|
-
path: "definition.label",
|
|
231
|
-
label: { en: "Label", de: "Beschriftung" },
|
|
232
|
-
input: "text",
|
|
233
|
-
},
|
|
234
|
-
{
|
|
235
|
-
path: "definition.screen",
|
|
236
|
-
label: { en: "Screen QN", de: "Screen-QN" },
|
|
237
|
-
hint: { en: "<feature>:screen:<id> qualified name." },
|
|
238
|
-
input: "text",
|
|
239
|
-
},
|
|
240
|
-
{
|
|
241
|
-
path: "definition.parent",
|
|
242
|
-
label: { en: "Parent nav", de: "Eltern-Nav" },
|
|
243
|
-
input: "text",
|
|
244
|
-
},
|
|
245
|
-
],
|
|
246
|
-
};
|
|
247
|
-
export const workspaceSchema = {
|
|
248
|
-
kind: "workspace",
|
|
249
|
-
label: { en: "Workspace", de: "Arbeitsbereich" },
|
|
250
|
-
summary: { en: "Persona-/role-scoped UI surface." },
|
|
251
|
-
category: "ui",
|
|
252
|
-
editability: "static",
|
|
253
|
-
fields: [
|
|
254
|
-
{
|
|
255
|
-
path: "definition.id",
|
|
256
|
-
label: { en: "ID", de: "ID" },
|
|
257
|
-
input: "text",
|
|
258
|
-
required: true,
|
|
259
|
-
},
|
|
260
|
-
{
|
|
261
|
-
path: "definition.label",
|
|
262
|
-
label: { en: "Label", de: "Beschriftung" },
|
|
263
|
-
input: "text",
|
|
264
|
-
},
|
|
265
|
-
],
|
|
266
|
-
};
|
|
267
|
-
export const configSchema = {
|
|
268
|
-
kind: "config",
|
|
269
|
-
label: { en: "Config keys", de: "Config-Keys" },
|
|
270
|
-
summary: { en: "Typed runtime configuration." },
|
|
271
|
-
category: "meta",
|
|
272
|
-
editability: "static",
|
|
273
|
-
singleton: true,
|
|
274
|
-
fields: [
|
|
275
|
-
{
|
|
276
|
-
path: "keys",
|
|
277
|
-
label: { en: "Keys", de: "Keys" },
|
|
278
|
-
input: "key-value-map",
|
|
279
|
-
keyPlaceholder: "maxItems",
|
|
280
|
-
valueInput: "json-readonly",
|
|
281
|
-
required: true,
|
|
282
|
-
},
|
|
283
|
-
],
|
|
284
|
-
};
|
|
285
|
-
export const translationsSchema = {
|
|
286
|
-
kind: "translations",
|
|
287
|
-
label: { en: "Translations", de: "Übersetzungen" },
|
|
288
|
-
summary: { en: "i18n strings keyed by locale." },
|
|
289
|
-
category: "meta",
|
|
290
|
-
editability: "static",
|
|
291
|
-
singleton: true,
|
|
292
|
-
fields: [
|
|
293
|
-
{
|
|
294
|
-
path: "keys",
|
|
295
|
-
label: { en: "Locales", de: "Sprachen" },
|
|
296
|
-
input: "key-value-map",
|
|
297
|
-
keyPlaceholder: "en",
|
|
298
|
-
valueInput: "json-readonly",
|
|
299
|
-
required: true,
|
|
300
|
-
},
|
|
301
|
-
],
|
|
302
|
-
};
|
|
303
|
-
export const metricSchema = {
|
|
304
|
-
kind: "metric",
|
|
305
|
-
label: { en: "Metric", de: "Metrik" },
|
|
306
|
-
summary: { en: "Prometheus-style counter / gauge / histogram." },
|
|
307
|
-
category: "meta",
|
|
308
|
-
editability: "static",
|
|
309
|
-
fields: [
|
|
310
|
-
{
|
|
311
|
-
path: "shortName",
|
|
312
|
-
label: { en: "Short name", de: "Kurzname" },
|
|
313
|
-
hint: { en: "Snake-case; auto-prefixed with kumiko_<feature>_." },
|
|
314
|
-
input: "text",
|
|
315
|
-
required: true,
|
|
316
|
-
},
|
|
317
|
-
{
|
|
318
|
-
path: "options.type",
|
|
319
|
-
label: { en: "Type", de: "Typ" },
|
|
320
|
-
input: "select",
|
|
321
|
-
options: [
|
|
322
|
-
{ value: "counter", label: { en: "Counter" } },
|
|
323
|
-
{ value: "gauge", label: { en: "Gauge" } },
|
|
324
|
-
{ value: "histogram", label: { en: "Histogram" } },
|
|
325
|
-
],
|
|
326
|
-
required: true,
|
|
327
|
-
},
|
|
328
|
-
],
|
|
329
|
-
};
|
|
330
|
-
export const secretSchema = {
|
|
331
|
-
kind: "secret",
|
|
332
|
-
label: { en: "Secret", de: "Secret" },
|
|
333
|
-
summary: { en: "Tenant-scoped encrypted credential." },
|
|
334
|
-
category: "meta",
|
|
335
|
-
editability: "static",
|
|
336
|
-
fields: [
|
|
337
|
-
{
|
|
338
|
-
path: "shortName",
|
|
339
|
-
label: { en: "Short name", de: "Kurzname" },
|
|
340
|
-
input: "text",
|
|
341
|
-
required: true,
|
|
342
|
-
},
|
|
343
|
-
{
|
|
344
|
-
path: "options.label",
|
|
345
|
-
label: { en: "UI label (i18n)", de: "UI-Label (i18n)" },
|
|
346
|
-
hint: { en: "{ en: 'API Key', de: 'API-Schlüssel' }" },
|
|
347
|
-
input: "json-readonly",
|
|
348
|
-
required: true,
|
|
349
|
-
},
|
|
350
|
-
{
|
|
351
|
-
path: "options.scope",
|
|
352
|
-
label: { en: "Scope", de: "Geltungsbereich" },
|
|
353
|
-
input: "select",
|
|
354
|
-
options: [{ value: "tenant", label: { en: "Tenant" } }],
|
|
355
|
-
},
|
|
356
|
-
{
|
|
357
|
-
path: "options.writeRoles",
|
|
358
|
-
label: { en: "Write roles", de: "Schreibrollen" },
|
|
359
|
-
hint: {
|
|
360
|
-
en: "Roles allowed to set or delete. Leave empty to rely on the secrets handler access alone.",
|
|
361
|
-
de: "Rollen, die setzen oder löschen dürfen. Leer lassen, dann entscheidet allein der Handler-Zugriff.",
|
|
362
|
-
},
|
|
363
|
-
input: "string-list",
|
|
364
|
-
},
|
|
365
|
-
],
|
|
366
|
-
};
|
|
367
|
-
export const secretNamespaceSchema = {
|
|
368
|
-
kind: "secretNamespace",
|
|
369
|
-
label: { en: "Secret namespace", de: "Secret-Namespace" },
|
|
370
|
-
summary: { en: "Family of tenant-scoped secrets with a runtime-chosen name." },
|
|
371
|
-
category: "meta",
|
|
372
|
-
editability: "static",
|
|
373
|
-
fields: [
|
|
374
|
-
{
|
|
375
|
-
path: "shortName",
|
|
376
|
-
label: { en: "Short name", de: "Kurzname" },
|
|
377
|
-
input: "text",
|
|
378
|
-
required: true,
|
|
379
|
-
},
|
|
380
|
-
{
|
|
381
|
-
path: "options.label",
|
|
382
|
-
label: { en: "UI label (i18n)", de: "UI-Label (i18n)" },
|
|
383
|
-
hint: { en: "{ en: 'Webhook token', de: 'Webhook-Token' }" },
|
|
384
|
-
input: "json-readonly",
|
|
385
|
-
required: true,
|
|
386
|
-
},
|
|
387
|
-
{
|
|
388
|
-
path: "options.scope",
|
|
389
|
-
label: { en: "Scope", de: "Geltungsbereich" },
|
|
390
|
-
input: "select",
|
|
391
|
-
options: [{ value: "tenant", label: { en: "Tenant" } }],
|
|
392
|
-
},
|
|
393
|
-
{
|
|
394
|
-
path: "options.writeRoles",
|
|
395
|
-
label: { en: "Write roles", de: "Schreibrollen" },
|
|
396
|
-
hint: {
|
|
397
|
-
en: "Roles allowed to set or delete. Leave empty to rely on the secrets handler access alone.",
|
|
398
|
-
de: "Rollen, die setzen oder löschen dürfen. Leer lassen, dann entscheidet allein der Handler-Zugriff.",
|
|
399
|
-
},
|
|
400
|
-
input: "string-list",
|
|
401
|
-
},
|
|
402
|
-
],
|
|
403
|
-
};
|
|
404
|
-
export const claimKeySchema = {
|
|
405
|
-
kind: "claimKey",
|
|
406
|
-
label: { en: "Claim key", de: "Claim-Key" },
|
|
407
|
-
summary: { en: "Typed JWT claim contributed at login." },
|
|
408
|
-
category: "meta",
|
|
409
|
-
editability: "static",
|
|
410
|
-
fields: [
|
|
411
|
-
{
|
|
412
|
-
path: "shortName",
|
|
413
|
-
label: { en: "Short name", de: "Kurzname" },
|
|
414
|
-
input: "text",
|
|
415
|
-
required: true,
|
|
416
|
-
},
|
|
417
|
-
{
|
|
418
|
-
path: "claimType",
|
|
419
|
-
label: { en: "Type", de: "Typ" },
|
|
420
|
-
input: "select",
|
|
421
|
-
options: CLAIM_KEY_TYPE_OPTIONS,
|
|
422
|
-
required: true,
|
|
423
|
-
},
|
|
424
|
-
],
|
|
425
|
-
};
|
|
426
|
-
export const referenceDataSchema = {
|
|
427
|
-
kind: "referenceData",
|
|
428
|
-
label: { en: "Reference data", de: "Referenzdaten" },
|
|
429
|
-
summary: { en: "Seed data for an entity (currencies, categories, …)." },
|
|
430
|
-
category: "data",
|
|
431
|
-
editability: "static",
|
|
432
|
-
fields: [
|
|
433
|
-
{
|
|
434
|
-
path: "entityName",
|
|
435
|
-
label: { en: "Entity", de: "Entität" },
|
|
436
|
-
input: "entity-ref",
|
|
437
|
-
required: true,
|
|
438
|
-
},
|
|
439
|
-
{
|
|
440
|
-
path: "data",
|
|
441
|
-
label: { en: "Rows", de: "Zeilen" },
|
|
442
|
-
input: "json-readonly",
|
|
443
|
-
required: true,
|
|
444
|
-
},
|
|
445
|
-
{
|
|
446
|
-
path: "upsertKey",
|
|
447
|
-
label: { en: "Upsert key", de: "Upsert-Key" },
|
|
448
|
-
hint: { en: "Field name to deduplicate on." },
|
|
449
|
-
input: "text",
|
|
450
|
-
},
|
|
451
|
-
],
|
|
452
|
-
};
|
|
453
|
-
export const useExtensionSchema = {
|
|
454
|
-
kind: "useExtension",
|
|
455
|
-
label: { en: "Use extension", de: "Erweiterung nutzen" },
|
|
456
|
-
summary: { en: "Apply a registered registrar-extension to an entity." },
|
|
457
|
-
category: "advanced",
|
|
458
|
-
editability: "static",
|
|
459
|
-
fields: [
|
|
460
|
-
{
|
|
461
|
-
path: "extensionName",
|
|
462
|
-
label: { en: "Extension name", de: "Erweiterungs-Name" },
|
|
463
|
-
input: "text",
|
|
464
|
-
required: true,
|
|
465
|
-
},
|
|
466
|
-
{
|
|
467
|
-
path: "entityName",
|
|
468
|
-
label: { en: "Entity", de: "Entität" },
|
|
469
|
-
input: "entity-ref",
|
|
470
|
-
required: true,
|
|
471
|
-
},
|
|
472
|
-
{
|
|
473
|
-
path: "options",
|
|
474
|
-
label: { en: "Options", de: "Optionen" },
|
|
475
|
-
input: "json-readonly",
|
|
476
|
-
},
|
|
477
|
-
],
|
|
478
|
-
};
|
|
@@ -1,158 +0,0 @@
|
|
|
1
|
-
import type { FeaturePatternKind } from "../feature-ast/patterns.ts";
|
|
2
|
-
export type FormInputType = "text" | "textarea" | "number" | "boolean" | "select" | "string-list" | "code-block" | "entity-fields-editor" | "key-value-map" | "discriminated-union" | "entity-ref" | "json-readonly";
|
|
3
|
-
/**
|
|
4
|
-
* Bilingual labels — Designer renders the user's locale, falls back to
|
|
5
|
-
* `en`. AI-Builder uses `en` exclusively (cheaper prompts, single
|
|
6
|
-
* grounding language for the model).
|
|
7
|
-
*/
|
|
8
|
-
export type FormFieldLabel = {
|
|
9
|
-
readonly en: string;
|
|
10
|
-
readonly de?: string;
|
|
11
|
-
};
|
|
12
|
-
/**
|
|
13
|
-
* Common shape every field carries — the input-specific fields are added
|
|
14
|
-
* by the discriminated subtypes below.
|
|
15
|
-
*/
|
|
16
|
-
type FormFieldBase = {
|
|
17
|
-
/**
|
|
18
|
-
* Dot/bracket-path inside the FeaturePattern. e.g. "entityName",
|
|
19
|
-
* "definition.fields", "access.roles", "templates.email".
|
|
20
|
-
*/
|
|
21
|
-
readonly path: string;
|
|
22
|
-
readonly label: FormFieldLabel;
|
|
23
|
-
/**
|
|
24
|
-
* Short hint shown below the input. Optional — keep terse, the
|
|
25
|
-
* Designer / LLM is the doc consumer, not the casual reader.
|
|
26
|
-
*/
|
|
27
|
-
readonly hint?: FormFieldLabel;
|
|
28
|
-
/**
|
|
29
|
-
* Whether the form should refuse to submit when this field is empty.
|
|
30
|
-
* Defaults to `false`. Validation runs *before* the patch hits the
|
|
31
|
-
* file — caller-side guard.
|
|
32
|
-
*/
|
|
33
|
-
readonly required?: boolean;
|
|
34
|
-
/**
|
|
35
|
-
* Read-only fields are surfaced for context but never edited (e.g.
|
|
36
|
-
* `kind` discriminator, opaque source-spans on mixed patterns).
|
|
37
|
-
*/
|
|
38
|
-
readonly readOnly?: boolean;
|
|
39
|
-
};
|
|
40
|
-
export type TextField = FormFieldBase & {
|
|
41
|
-
readonly input: "text";
|
|
42
|
-
readonly placeholder?: string;
|
|
43
|
-
readonly maxLength?: number;
|
|
44
|
-
readonly pattern?: string;
|
|
45
|
-
};
|
|
46
|
-
export type TextareaField = FormFieldBase & {
|
|
47
|
-
readonly input: "textarea";
|
|
48
|
-
readonly placeholder?: string;
|
|
49
|
-
readonly rows?: number;
|
|
50
|
-
};
|
|
51
|
-
export type NumberField = FormFieldBase & {
|
|
52
|
-
readonly input: "number";
|
|
53
|
-
readonly min?: number;
|
|
54
|
-
readonly max?: number;
|
|
55
|
-
readonly step?: number;
|
|
56
|
-
};
|
|
57
|
-
export type BooleanField = FormFieldBase & {
|
|
58
|
-
readonly input: "boolean";
|
|
59
|
-
};
|
|
60
|
-
export type SelectOption = {
|
|
61
|
-
readonly value: string;
|
|
62
|
-
readonly label: FormFieldLabel;
|
|
63
|
-
};
|
|
64
|
-
export type SelectField = FormFieldBase & {
|
|
65
|
-
readonly input: "select";
|
|
66
|
-
readonly options: readonly SelectOption[];
|
|
67
|
-
};
|
|
68
|
-
export type StringListField = FormFieldBase & {
|
|
69
|
-
readonly input: "string-list";
|
|
70
|
-
/** Per-item placeholder, e.g. "feature-name". */
|
|
71
|
-
readonly itemPlaceholder?: string;
|
|
72
|
-
};
|
|
73
|
-
export type CodeBlockField = FormFieldBase & {
|
|
74
|
-
readonly input: "code-block";
|
|
75
|
-
/**
|
|
76
|
-
* The source language for syntax highlighting. The skeleton renders
|
|
77
|
-
* everything as plain TS; later iterations can branch on `zod` /
|
|
78
|
-
* `tsx` for dedicated highlighters.
|
|
79
|
-
*/
|
|
80
|
-
readonly language: "typescript" | "tsx" | "zod";
|
|
81
|
-
};
|
|
82
|
-
/**
|
|
83
|
-
* Editor for `EntityDefinition.fields` — a row per field with name,
|
|
84
|
-
* type-discriminator, plus type-specific knobs. Modeled as a single
|
|
85
|
-
* input-type because the structure is too rich for a generic
|
|
86
|
-
* key-value-map (each row's right-hand side is itself a discriminated
|
|
87
|
-
* union over FieldDefinition variants).
|
|
88
|
-
*/
|
|
89
|
-
export type EntityFieldsEditorField = FormFieldBase & {
|
|
90
|
-
readonly input: "entity-fields-editor";
|
|
91
|
-
};
|
|
92
|
-
/**
|
|
93
|
-
* Generic `{ [key]: value }` editor — value-shape is described by an
|
|
94
|
-
* inner FormSchema applied to each entry. Used for config-keys,
|
|
95
|
-
* translations, projection.applyBodies, notification.templates.
|
|
96
|
-
*/
|
|
97
|
-
export type KeyValueMapField = FormFieldBase & {
|
|
98
|
-
readonly input: "key-value-map";
|
|
99
|
-
/** Placeholder for new keys. */
|
|
100
|
-
readonly keyPlaceholder?: string;
|
|
101
|
-
/** What input renders for each value. Recursive — keep it simple. */
|
|
102
|
-
readonly valueInput: FormInputType;
|
|
103
|
-
};
|
|
104
|
-
export type DiscriminatedUnionField = FormFieldBase & {
|
|
105
|
-
readonly input: "discriminated-union";
|
|
106
|
-
/** Tag-property name (e.g. "type" for hook-target, "kind" for relation). */
|
|
107
|
-
readonly discriminator: string;
|
|
108
|
-
/** Each branch carries its own field-list. */
|
|
109
|
-
readonly variants: ReadonlyArray<{
|
|
110
|
-
readonly tag: string;
|
|
111
|
-
readonly label: FormFieldLabel;
|
|
112
|
-
readonly fields: readonly FormFieldSpec[];
|
|
113
|
-
}>;
|
|
114
|
-
};
|
|
115
|
-
export type EntityRefField = FormFieldBase & {
|
|
116
|
-
readonly input: "entity-ref";
|
|
117
|
-
/**
|
|
118
|
-
* If true, the input also accepts cross-feature references like
|
|
119
|
-
* `auth:event:loggedIn`. Default is feature-local only.
|
|
120
|
-
*/
|
|
121
|
-
readonly allowQualified?: boolean;
|
|
122
|
-
};
|
|
123
|
-
export type JsonReadonlyField = FormFieldBase & {
|
|
124
|
-
readonly input: "json-readonly";
|
|
125
|
-
};
|
|
126
|
-
export type FormFieldSpec = TextField | TextareaField | NumberField | BooleanField | SelectField | StringListField | CodeBlockField | EntityFieldsEditorField | KeyValueMapField | DiscriminatedUnionField | EntityRefField | JsonReadonlyField;
|
|
127
|
-
/**
|
|
128
|
-
* High-level grouping the Designer uses for navigation: data shapes
|
|
129
|
-
* (entity / relation), behaviour (handler / hook), UI (screen / nav),
|
|
130
|
-
* meta (config / metric / secret), background (job / projection),
|
|
131
|
-
* cross-cutting (notification / authClaims / httpRoute), advanced
|
|
132
|
-
* (extendsRegistrar / unknown). Order in the Designer panel is alpha
|
|
133
|
-
* inside a category.
|
|
134
|
-
*/
|
|
135
|
-
export type PatternCategory = "data" | "behaviour" | "ui" | "meta" | "background" | "cross-cutting" | "advanced";
|
|
136
|
-
export type PatternFormSchema = {
|
|
137
|
-
readonly kind: FeaturePatternKind;
|
|
138
|
-
readonly label: FormFieldLabel;
|
|
139
|
-
/** Short blurb shown in the Designer's "add new pattern" dialog. */
|
|
140
|
-
readonly summary: FormFieldLabel;
|
|
141
|
-
readonly category: PatternCategory;
|
|
142
|
-
/**
|
|
143
|
-
* Editability matches feature-ast's `getEditability()`:
|
|
144
|
-
* - "static" → fully form-driven, no closures
|
|
145
|
-
* - "mixed" → header is form, body is opaque code-block
|
|
146
|
-
* - "opaque" → entire pattern is read-only
|
|
147
|
-
*/
|
|
148
|
-
readonly editability: "static" | "mixed" | "opaque";
|
|
149
|
-
/**
|
|
150
|
-
* Singleton kinds appear at most once per feature (requires,
|
|
151
|
-
* toggleable, config, …). The Designer hides "Add" once the
|
|
152
|
-
* singleton is present.
|
|
153
|
-
*/
|
|
154
|
-
readonly singleton?: boolean;
|
|
155
|
-
/** Ordered list of editable fields. */
|
|
156
|
-
readonly fields: readonly FormFieldSpec[];
|
|
157
|
-
};
|
|
158
|
-
export {};
|
|
@@ -1,36 +0,0 @@
|
|
|
1
|
-
// Forms-Schema metadata — describes how a FeaturePattern is rendered as
|
|
2
|
-
// a Designer form, fed to an LLM as a JSON-Schema, or surfaced in the
|
|
3
|
-
// MCP-Server tool list. One schema, three consumers — that's the whole
|
|
4
|
-
// point of factoring this out of the hand-rolled skeleton.
|
|
5
|
-
//
|
|
6
|
-
// **NOT a DSL.** The Source-of-Truth for a feature stays
|
|
7
|
-
// `defineFeature.ts` — the AST-visitor (feature-ast/parse.ts) reads it
|
|
8
|
-
// and the renderer (feature-ast/render.ts) writes it. This file is
|
|
9
|
-
// pure metadata for UI / LLM-prompt rendering: how to display the
|
|
10
|
-
// already-parsed FeaturePattern in a form. No alternative parser, no
|
|
11
|
-
// alternative syntax, no second canonical representation.
|
|
12
|
-
//
|
|
13
|
-
// **Vocabulary** (12 input-types):
|
|
14
|
-
//
|
|
15
|
-
// text — single-line string (name / label / id)
|
|
16
|
-
// textarea — multi-line string (description / SQL / readme)
|
|
17
|
-
// number — numeric (version / fromVersion / rateLimit.limit)
|
|
18
|
-
// boolean — checkbox (softDelete / default / openToAll)
|
|
19
|
-
// select — closed enum (idType / hookType / method)
|
|
20
|
-
// string-list — readonly string[] (featureNames / roles)
|
|
21
|
-
// code-block — opaque TS source-span, read-only in the form
|
|
22
|
-
// (schemaSource / handlerBody / fnBody)
|
|
23
|
-
// entity-fields-editor — per-row editor for EntityDefinition.fields
|
|
24
|
-
// key-value-map — generic { [key]: structured-value } editor
|
|
25
|
-
// (config.keys / translations.keys / applyBodies)
|
|
26
|
-
// discriminated-union — tagged sub-form (AccessRule: roles vs openToAll)
|
|
27
|
-
// entity-ref — string with autocomplete against the registry
|
|
28
|
-
// json-readonly — opaque pretty-printed JSON (Unknown / extension)
|
|
29
|
-
//
|
|
30
|
-
// **Path notation:** `path` references the value's location inside the
|
|
31
|
-
// FeaturePattern object using dot-separated keys (`definition.fields`,
|
|
32
|
-
// `access.roles`, `templates.email`). Numeric indices use the bracket
|
|
33
|
-
// form (`columns.0`). The Designer/LLM uses paths for read & write —
|
|
34
|
-
// the patcher consumes pattern-level updates only, so paths are
|
|
35
|
-
// purely a UI concern at this stage.
|
|
36
|
-
export {};
|
|
@@ -1,3 +0,0 @@
|
|
|
1
|
-
import type { HandlerContext, JobContext, ProviderPluginContext } from "@cosmicdrift/kumiko-types/handlers";
|
|
2
|
-
export declare function providerPluginContextFromHandler(ctx: HandlerContext): ProviderPluginContext;
|
|
3
|
-
export declare function providerPluginContextFromJob(ctx: JobContext): ProviderPluginContext;
|