@cosmicdrift/kumiko-framework 0.389.0 → 0.390.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (617) hide show
  1. package/AGENTS.md +9 -4
  2. package/README.md +1 -1
  3. package/agents/examples/apex-surface-auth.md +2 -3
  4. package/agents/examples/api-worker-split.md +9 -2
  5. package/agents/examples/auth-claims.md +1 -1
  6. package/agents/examples/cross-feature-events.md +12 -12
  7. package/agents/examples/crypto-shredding-hr.md +2 -2
  8. package/agents/examples/encrypted-tenant-config.md +1 -1
  9. package/agents/examples/error-contract.md +12 -7
  10. package/agents/examples/event-sourcing.md +29 -29
  11. package/agents/examples/files-post-processing.md +10 -8
  12. package/agents/examples/inbound-mail-triage.md +1 -0
  13. package/agents/examples/lane-routing.md +2 -1
  14. package/agents/examples/legal-pages.md +2 -2
  15. package/agents/examples/lifecycle-hooks.md +3 -3
  16. package/agents/examples/managed-config.md +4 -4
  17. package/agents/examples/managed-pages.md +1 -1
  18. package/agents/examples/relations.md +19 -4
  19. package/agents/examples/search.md +4 -4
  20. package/agents/examples/secrets-demo.md +9 -6
  21. package/agents/examples/state-machine.md +2 -2
  22. package/agents/examples/tenant-settings.md +1 -1
  23. package/agents/examples/user-data-rights.md +3 -6
  24. package/agents/examples/workflow-engine.md +53 -47
  25. package/agents/examples.md +4 -4
  26. package/agents/features.md +1 -1
  27. package/dist/api/auth-middleware.js +1 -1
  28. package/dist/api/auth-routes-invite.js +2 -1
  29. package/dist/api/entity-read-access.d.ts +3 -1
  30. package/dist/api/export/export-columns.d.ts +3 -1
  31. package/dist/api/export/export-route.js +3 -2
  32. package/dist/api/export/export-screen.d.ts +2 -1
  33. package/dist/api/extra-route.d.ts +3 -1
  34. package/dist/api/index.d.ts +23 -27
  35. package/dist/api/index.js +13 -15
  36. package/dist/api/jwt.js +1 -1
  37. package/dist/api/observability-middleware.d.ts +1 -1
  38. package/dist/api/observability-middleware.js +2 -1
  39. package/dist/api/request-context-internals.d.ts +31 -0
  40. package/dist/api/request-context-internals.js +11 -0
  41. package/dist/api/request-context-scopes.d.ts +14 -0
  42. package/dist/api/request-context-scopes.js +69 -0
  43. package/dist/api/request-context.d.ts +1 -40
  44. package/dist/api/request-context.js +22 -51
  45. package/dist/api/request-id-middleware.d.ts +1 -1
  46. package/dist/api/route-registrars.d.ts +2 -1
  47. package/dist/api/route-registrars.js +1 -1
  48. package/dist/api/routes.js +7 -3
  49. package/dist/api/server-boot-checks.d.ts +1 -1
  50. package/dist/api/server-boot-checks.js +2 -2
  51. package/dist/api/server-event-dispatcher.d.ts +6 -1
  52. package/dist/api/server-event-dispatcher.js +3 -4
  53. package/dist/api/server-extra-routes.d.ts +1 -1
  54. package/dist/api/server-extra-routes.js +2 -1
  55. package/dist/api/server-middleware.js +3 -1
  56. package/dist/api/server-routes.d.ts +2 -1
  57. package/dist/api/server-wiring.js +6 -4
  58. package/dist/api/server.d.ts +2 -1
  59. package/dist/api/sse-route.d.ts +2 -1
  60. package/dist/api/tenant-scoped-secrets.d.ts +2 -0
  61. package/dist/api/tenant-scoped-secrets.js +13 -0
  62. package/dist/api/websocket-route.d.ts +1 -1
  63. package/dist/auth/index.d.ts +0 -1
  64. package/dist/auth/roles.d.ts +0 -5
  65. package/dist/compliance/duration-spec.d.ts +0 -1
  66. package/dist/compliance/duration-spec.js +0 -5
  67. package/dist/compliance/index.d.ts +4 -4
  68. package/dist/compliance/index.js +2 -2
  69. package/dist/compliance/profiles.d.ts +0 -15
  70. package/dist/compliance/profiles.js +0 -23
  71. package/dist/config/index.d.ts +10 -10
  72. package/dist/config/index.js +13 -1
  73. package/dist/config/internals.d.ts +9 -0
  74. package/dist/config/internals.js +1 -0
  75. package/dist/consumer-cli-internals.d.ts +4 -0
  76. package/dist/consumer-cli-internals.js +1 -0
  77. package/dist/consumer-cli.d.ts +1 -4
  78. package/dist/consumer-cli.js +5 -1
  79. package/dist/crypto/event-pii.js +1 -1
  80. package/dist/crypto/index.d.ts +8 -9
  81. package/dist/crypto/index.js +7 -8
  82. package/dist/crypto/pg-kms-adapter.js +6 -1
  83. package/dist/db/apply-entity-event.d.ts +1 -1
  84. package/dist/db/apply-entity-event.js +15 -47
  85. package/dist/db/blind-index-cleanup.js +91 -77
  86. package/dist/db/collect-table-metas.js +1 -1
  87. package/dist/db/compound-types.d.ts +1 -1
  88. package/dist/db/compound-types.js +0 -7
  89. package/dist/db/config-seed.d.ts +2 -1
  90. package/dist/db/config-seed.js +6 -1
  91. package/dist/db/connection.d.ts +3 -1
  92. package/dist/db/connection.js +15 -5
  93. package/dist/db/cross-tenant-reads.d.ts +1 -1
  94. package/dist/db/cross-tenant-reads.js +1 -1
  95. package/dist/db/dialect.d.ts +0 -5
  96. package/dist/db/dialect.js +0 -3
  97. package/dist/db/driver-value-preparation.js +23 -2
  98. package/dist/db/eagerload.d.ts +2 -1
  99. package/dist/db/entity-field-encryption.d.ts +1 -1
  100. package/dist/db/entity-table-meta.d.ts +1 -1
  101. package/dist/db/event-store-executor-context.d.ts +3 -1
  102. package/dist/db/event-store-executor-context.js +4 -3
  103. package/dist/db/event-store-executor-read-filter.d.ts +1 -1
  104. package/dist/db/event-store-executor-read-rows.d.ts +2 -1
  105. package/dist/db/event-store-executor-read-search.d.ts +2 -1
  106. package/dist/db/event-store-executor-read-sort.d.ts +2 -1
  107. package/dist/db/event-store-executor-read.js +2 -2
  108. package/dist/db/event-store-executor-write-atomic.js +8 -7
  109. package/dist/db/event-store-executor-write-steps.d.ts +3 -2
  110. package/dist/db/event-store-executor-write.js +7 -4
  111. package/dist/db/event-store-executor.d.ts +1 -1
  112. package/dist/db/executor-managed-tables.d.ts +7 -1
  113. package/dist/db/executor-managed-tables.js +11 -2
  114. package/dist/db/index.d.ts +29 -28
  115. package/dist/db/index.js +22 -20
  116. package/dist/db/known-table-names.d.ts +6 -0
  117. package/dist/db/known-table-names.js +21 -0
  118. package/dist/db/list-aggregate-labels.d.ts +1 -1
  119. package/dist/db/located-timestamp.d.ts +1 -1
  120. package/dist/db/located-timestamp.js +0 -5
  121. package/dist/db/migrate-generator.d.ts +17 -1
  122. package/dist/db/migrate-generator.js +50 -20
  123. package/dist/db/migrate-primary-key.d.ts +12 -0
  124. package/dist/db/migrate-primary-key.js +45 -0
  125. package/dist/db/migrate-rls-diff.d.ts +20 -0
  126. package/dist/db/migrate-rls-diff.js +61 -0
  127. package/dist/db/migrate-runner.js +4 -0
  128. package/dist/db/money.d.ts +1 -1
  129. package/dist/db/money.js +1 -1
  130. package/dist/db/parent-ref-clause.d.ts +2 -1
  131. package/dist/db/pg-error.d.ts +2 -0
  132. package/dist/db/pg-error.js +11 -0
  133. package/dist/db/queries/ddl.d.ts +3 -0
  134. package/dist/db/queries/ddl.js +34 -1
  135. package/dist/db/queries/event-store.js +4 -2
  136. package/dist/db/queries/event-tenants.d.ts +2 -0
  137. package/dist/db/queries/event-tenants.js +17 -0
  138. package/dist/db/queries/rebuild-rls-guard.d.ts +2 -0
  139. package/dist/db/queries/rebuild-rls-guard.js +29 -0
  140. package/dist/db/queries/rls-boot-catalog.d.ts +16 -0
  141. package/dist/db/queries/rls-boot-catalog.js +39 -0
  142. package/dist/db/queries/rls-catalog.d.ts +6 -0
  143. package/dist/db/queries/rls-catalog.js +82 -0
  144. package/dist/db/queries/rls-scope.d.ts +3 -0
  145. package/dist/db/queries/rls-scope.js +17 -0
  146. package/dist/db/queries/rls-shape.d.ts +10 -0
  147. package/dist/db/queries/rls-shape.js +42 -0
  148. package/dist/db/queries/session-advisory-lock.d.ts +2 -0
  149. package/dist/db/queries/session-advisory-lock.js +23 -0
  150. package/dist/db/queries/shadow-swap.d.ts +1 -2
  151. package/dist/db/queries/shadow-swap.js +9 -25
  152. package/dist/db/queries/test-stack.d.ts +4 -1
  153. package/dist/db/queries/test-stack.js +84 -2
  154. package/dist/db/query.js +11 -7
  155. package/dist/db/reference-data.d.ts +1 -1
  156. package/dist/db/reference-data.js +6 -1
  157. package/dist/db/render-ddl.d.ts +6 -2
  158. package/dist/db/render-ddl.js +7 -7
  159. package/dist/db/render-rls-ddl.d.ts +35 -0
  160. package/dist/db/render-rls-ddl.js +127 -0
  161. package/dist/db/replay-migration-sql.d.ts +3 -1
  162. package/dist/db/replay-migration-sql.js +22 -5
  163. package/dist/db/replay-rls.d.ts +25 -0
  164. package/dist/db/replay-rls.js +156 -0
  165. package/dist/db/row-level-security-boot-check.d.ts +6 -0
  166. package/dist/db/row-level-security-boot-check.js +86 -0
  167. package/dist/db/row-level-security-connection.d.ts +3 -0
  168. package/dist/db/row-level-security-connection.js +213 -0
  169. package/dist/db/row-level-security-scope.d.ts +33 -0
  170. package/dist/db/row-level-security-scope.js +127 -0
  171. package/dist/db/scope-tenant-db-to-tenant.d.ts +3 -0
  172. package/dist/db/scope-tenant-db-to-tenant.js +14 -0
  173. package/dist/db/sql-identifier.d.ts +1 -0
  174. package/dist/db/sql-identifier.js +3 -0
  175. package/dist/db/table-builder.d.ts +2 -1
  176. package/dist/db/table-builder.js +1 -1
  177. package/dist/db/table-info.js +1 -1
  178. package/dist/db/table-push.d.ts +11 -2
  179. package/dist/db/table-push.js +15 -2
  180. package/dist/db/tenant-db-runner.d.ts +3 -1
  181. package/dist/db/tenant-db-runner.js +4 -3
  182. package/dist/db/tenant-db-scoped-rebind.d.ts +10 -0
  183. package/dist/db/tenant-db-scoped-rebind.js +33 -0
  184. package/dist/db/tenant-db-statement-runner.d.ts +13 -0
  185. package/dist/db/tenant-db-statement-runner.js +48 -0
  186. package/dist/db/tenant-db.d.ts +17 -12
  187. package/dist/db/tenant-db.js +49 -120
  188. package/dist/db/tenant-id-filter.d.ts +3 -0
  189. package/dist/db/tenant-id-filter.js +30 -0
  190. package/dist/db/transaction-serialization.d.ts +6 -0
  191. package/dist/db/transaction-serialization.js +60 -0
  192. package/dist/derivatives/delete-stored-file.js +1 -1
  193. package/dist/derivatives/index.d.ts +2 -5
  194. package/dist/derivatives/index.js +2 -3
  195. package/dist/engine/access.d.ts +2 -1
  196. package/dist/engine/access.js +1 -1
  197. package/dist/engine/boot-validator/entity-handler.d.ts +2 -1
  198. package/dist/engine/boot-validator/entity-handler.js +1 -1
  199. package/dist/engine/boot-validator/entity-list-aggregate-options.d.ts +1 -1
  200. package/dist/engine/boot-validator/list-table-aggregate-options.d.ts +1 -1
  201. package/dist/engine/boot-validator/list-table-aggregate-query.d.ts +2 -1
  202. package/dist/engine/boot-validator/nav.d.ts +3 -1
  203. package/dist/engine/boot-validator/nav.js +1 -1
  204. package/dist/engine/boot-validator/ownership.d.ts +2 -1
  205. package/dist/engine/boot-validator/parent-ref.d.ts +2 -1
  206. package/dist/engine/boot-validator/projection-list-screens.d.ts +2 -1
  207. package/dist/engine/boot-validator/query-refs.d.ts +2 -1
  208. package/dist/engine/boot-validator/screens-forms.d.ts +2 -1
  209. package/dist/engine/boot-validator/screens-kind-shared.d.ts +3 -1
  210. package/dist/engine/boot-validator/screens.d.ts +2 -1
  211. package/dist/engine/boot-validator/workspaces.d.ts +3 -1
  212. package/dist/engine/bridge-stub.d.ts +5 -2
  213. package/dist/engine/bridge-stub.js +39 -24
  214. package/dist/engine/config-helpers.d.ts +2 -2
  215. package/dist/engine/config-helpers.js +0 -9
  216. package/dist/engine/constants.d.ts +0 -10
  217. package/dist/engine/constants.js +0 -8
  218. package/dist/engine/create-app.js +1 -1
  219. package/dist/engine/define-feature.d.ts +2 -1
  220. package/dist/engine/define-feature.js +1 -2
  221. package/dist/engine/define-handler.d.ts +1 -1
  222. package/dist/engine/define-step.d.ts +0 -1
  223. package/dist/engine/define-step.js +0 -3
  224. package/dist/engine/embedded-derived.d.ts +1 -1
  225. package/dist/engine/entity-handlers.d.ts +2 -1
  226. package/dist/engine/entity-handlers.js +7 -7
  227. package/dist/engine/entity-list-runtime-options.js +3 -1
  228. package/dist/engine/entity-list-searchability.d.ts +2 -1
  229. package/dist/engine/event-def.d.ts +2 -1
  230. package/dist/engine/event-helpers.d.ts +3 -1
  231. package/dist/engine/event-helpers.js +3 -3
  232. package/dist/engine/extension-names.d.ts +2 -8
  233. package/dist/engine/extension-names.js +2 -2
  234. package/dist/engine/extension-selector-plugins.d.ts +1 -1
  235. package/dist/engine/extensions/storage-provider.d.ts +1 -2
  236. package/dist/engine/extensions/user-data.d.ts +0 -8
  237. package/dist/engine/factories.d.ts +2 -1
  238. package/dist/engine/feature-builder-state.d.ts +8 -1
  239. package/dist/engine/feature-changelog.d.ts +1 -1
  240. package/dist/engine/feature-config-events-jobs.d.ts +4 -1
  241. package/dist/engine/feature-entity-handlers.d.ts +5 -1
  242. package/dist/engine/feature-manifest.js +1 -1
  243. package/dist/engine/feature-ui-extensions.d.ts +7 -1
  244. package/dist/engine/feature-ui-extensions.js +6 -4
  245. package/dist/engine/field-access.d.ts +2 -1
  246. package/dist/engine/handler-field-references.d.ts +0 -4
  247. package/dist/engine/index.d.ts +57 -54
  248. package/dist/engine/index.js +22 -27
  249. package/dist/engine/instruction-fields.d.ts +1 -1
  250. package/dist/engine/personal-data-fields.d.ts +1 -1
  251. package/dist/engine/qualified-name.d.ts +0 -1
  252. package/dist/engine/read-claim.d.ts +2 -1
  253. package/dist/engine/registry-facade.js +0 -3
  254. package/dist/engine/registry-ingest.d.ts +2 -1
  255. package/dist/engine/registry-ingest.js +1 -2
  256. package/dist/engine/registry-state.d.ts +12 -2
  257. package/dist/engine/registry-state.js +2 -3
  258. package/dist/engine/registry-validate.d.ts +3 -1
  259. package/dist/engine/registry-validate.js +7 -7
  260. package/dist/engine/run-in.d.ts +1 -1
  261. package/dist/engine/run-in.js +0 -1
  262. package/dist/engine/schema-builder.d.ts +1 -1
  263. package/dist/engine/schema-builder.js +1 -1
  264. package/dist/engine/screen-filter-ops.d.ts +2 -1
  265. package/dist/engine/screen-filter-ops.js +0 -5
  266. package/dist/engine/soft-delete-cleanup.d.ts +1 -1
  267. package/dist/engine/soft-delete-cleanup.js +4 -4
  268. package/dist/engine/state-machine.js +2 -1
  269. package/dist/engine/steps/_read-source.js +1 -1
  270. package/dist/engine/steps/aggregate-append-event.js +2 -2
  271. package/dist/engine/steps/call-feature.js +2 -2
  272. package/dist/engine/steps/mail-send.js +1 -1
  273. package/dist/engine/steps/retry.js +1 -1
  274. package/dist/engine/steps/wait-for-event.js +1 -1
  275. package/dist/engine/steps/wait.js +1 -1
  276. package/dist/engine/steps/webhook-send.js +1 -1
  277. package/dist/engine/template-variables.d.ts +2 -1
  278. package/dist/engine/transfer-adjacency.d.ts +1 -1
  279. package/dist/engine/types/index.d.ts +8 -31
  280. package/dist/engine/types/index.js +2 -10
  281. package/dist/engine/validation.d.ts +2 -1
  282. package/dist/entrypoint/index.d.ts +7 -35
  283. package/dist/entrypoint/index.js +7 -1
  284. package/dist/entrypoint/internals.d.ts +40 -0
  285. package/dist/entrypoint/internals.js +1 -0
  286. package/dist/entrypoint/row-level-security-mode-check.d.ts +3 -0
  287. package/dist/entrypoint/row-level-security-mode-check.js +19 -0
  288. package/dist/env/dry-run-internals.d.ts +10 -0
  289. package/dist/env/dry-run-internals.js +1 -0
  290. package/dist/env/dry-run.d.ts +1 -10
  291. package/dist/env/dry-run.js +2 -1
  292. package/dist/env/index.d.ts +1 -85
  293. package/dist/env/index.js +6 -50
  294. package/dist/env/internals.d.ts +87 -0
  295. package/dist/env/internals.js +53 -0
  296. package/dist/errors/classes.js +2 -2
  297. package/dist/errors/index.d.ts +5 -14
  298. package/dist/errors/index.js +4 -9
  299. package/dist/errors/member-resolution.js +1 -1
  300. package/dist/errors/reasons.d.ts +0 -1
  301. package/dist/errors/reasons.js +7 -7
  302. package/dist/errors/serialize.d.ts +0 -18
  303. package/dist/errors/serialize.js +0 -27
  304. package/dist/es-ops/index.d.ts +4 -4
  305. package/dist/es-ops/index.js +2 -2
  306. package/dist/es-ops/operations-schema.d.ts +1 -1
  307. package/dist/es-ops/types.d.ts +4 -5
  308. package/dist/event-store/admin-api-internals.d.ts +14 -0
  309. package/dist/event-store/admin-api-internals.js +1 -0
  310. package/dist/event-store/admin-api.d.ts +1 -14
  311. package/dist/event-store/admin-api.js +11 -6
  312. package/dist/event-store/archive.js +4 -2
  313. package/dist/event-store/errors.js +2 -2
  314. package/dist/event-store/event-store.js +41 -34
  315. package/dist/event-store/events-schema.js +4 -1
  316. package/dist/event-store/index.d.ts +11 -13
  317. package/dist/event-store/index.js +7 -9
  318. package/dist/event-store/rebuild-dead-letter.js +4 -2
  319. package/dist/event-store/snapshot.js +4 -3
  320. package/dist/event-store/stream-scope.d.ts +2 -0
  321. package/dist/event-store/stream-scope.js +6 -0
  322. package/dist/event-store/upcaster-dead-letter.js +4 -2
  323. package/dist/event-store/upcaster.d.ts +2 -1
  324. package/dist/files/action-form-upload.d.ts +2 -1
  325. package/dist/files/action-form-upload.js +1 -1
  326. package/dist/files/assert-file-refs-belong-to-tenant.d.ts +2 -1
  327. package/dist/files/assert-file-refs-belong-to-tenant.js +1 -1
  328. package/dist/files/bind-pending-file-refs.d.ts +2 -1
  329. package/dist/files/bind-pending-file-refs.js +2 -1
  330. package/dist/files/bind-referenced-files.write.js +1 -1
  331. package/dist/files/create-file-ref-from-bytes.d.ts +6 -3
  332. package/dist/files/create-file-ref-from-bytes.js +3 -3
  333. package/dist/files/create-file-ref.d.ts +3 -2
  334. package/dist/files/create-file-ref.js +2 -2
  335. package/dist/files/dispose-removed-file-refs.d.ts +2 -1
  336. package/dist/files/dispose-removed-file-refs.js +1 -1
  337. package/dist/files/feature.js +2 -2
  338. package/dist/files/file-handle.js +1 -1
  339. package/dist/files/file-routes.d.ts +1 -1
  340. package/dist/files/file-routes.js +12 -2
  341. package/dist/files/index.d.ts +11 -13
  342. package/dist/files/index.js +5 -7
  343. package/dist/files/load-save-file-refs.d.ts +2 -1
  344. package/dist/files/load-save-file-refs.js +1 -1
  345. package/dist/files/provider-resolver.d.ts +5 -4
  346. package/dist/files/provider-resolver.js +4 -4
  347. package/dist/files/storage-tracking.js +4 -2
  348. package/dist/files/sweep-orphaned-uploads.d.ts +1 -1
  349. package/dist/files/sweep-orphaned-uploads.js +1 -1
  350. package/dist/i18n/index.d.ts +2 -8
  351. package/dist/i18n/index.js +1 -1
  352. package/dist/i18n/internals.d.ts +7 -0
  353. package/dist/i18n/internals.js +1 -0
  354. package/dist/i18n/required-surface-keys.d.ts +4 -1
  355. package/dist/internal/row-level-security.d.ts +3 -0
  356. package/dist/internal/row-level-security.js +3 -0
  357. package/dist/internal/stack-support.d.ts +1 -1
  358. package/dist/internal/stack-support.js +1 -1
  359. package/dist/internal/testing.d.ts +1 -0
  360. package/dist/internal/testing.js +9 -5
  361. package/dist/jobs/index.d.ts +1 -1
  362. package/dist/jobs/job-append-event.d.ts +12 -0
  363. package/dist/jobs/job-append-event.js +30 -0
  364. package/dist/jobs/job-runner-context.d.ts +2 -2
  365. package/dist/jobs/job-runner-context.js +46 -16
  366. package/dist/jobs/job-runner-execution.d.ts +1 -1
  367. package/dist/jobs/job-runner-execution.js +6 -4
  368. package/dist/jobs/job-runner-gates.d.ts +1 -1
  369. package/dist/jobs/job-runner-gates.js +0 -1
  370. package/dist/jobs/job-runner-helpers.d.ts +11 -4
  371. package/dist/jobs/job-runner-helpers.js +10 -1
  372. package/dist/jobs/job-runner-scope.d.ts +5 -2
  373. package/dist/jobs/job-runner-types.d.ts +2 -1
  374. package/dist/jobs/job-runner.js +19 -6
  375. package/dist/jobs/max-per-tenant.d.ts +1 -1
  376. package/dist/logging/index.d.ts +1 -2
  377. package/dist/logging/index.js +1 -1
  378. package/dist/logging/pino-logger.js +1 -1
  379. package/dist/logging/utils.d.ts +1 -0
  380. package/dist/logging/utils.js +6 -0
  381. package/dist/migrations/index.d.ts +3 -3
  382. package/dist/migrations/index.js +3 -3
  383. package/dist/migrations/pending-rebuilds.d.ts +1 -1
  384. package/dist/migrations/pending-rebuilds.js +1 -1
  385. package/dist/migrations/pii-event-backfill.js +4 -1
  386. package/dist/observability/escape-hatch-report.d.ts +2 -1
  387. package/dist/observability/index.d.ts +7 -15
  388. package/dist/observability/index.js +4 -12
  389. package/dist/observability/metric-validator.js +1 -1
  390. package/dist/observability/metrics-handle.d.ts +0 -1
  391. package/dist/observability/metrics-handle.js +2 -15
  392. package/dist/observability/recording-tracer.d.ts +1 -2
  393. package/dist/observability/recording-tracer.js +0 -6
  394. package/dist/observability/sensitive-filter.d.ts +0 -2
  395. package/dist/observability/sensitive-filter.js +0 -29
  396. package/dist/pipeline/active-membership.d.ts +2 -1
  397. package/dist/pipeline/active-membership.js +6 -2
  398. package/dist/pipeline/append-event-core.d.ts +2 -1
  399. package/dist/pipeline/append-event-core.js +2 -2
  400. package/dist/pipeline/attach-outside-transaction.d.ts +3 -0
  401. package/dist/pipeline/attach-outside-transaction.js +13 -0
  402. package/dist/pipeline/auth-claims-resolver.d.ts +2 -1
  403. package/dist/pipeline/cascade-handler.d.ts +2 -1
  404. package/dist/pipeline/cascade-handler.js +3 -2
  405. package/dist/pipeline/config-accessor-factory.d.ts +1 -1
  406. package/dist/pipeline/config-accessor-factory.js +1 -1
  407. package/dist/pipeline/context-services.d.ts +56 -0
  408. package/dist/pipeline/context-services.js +73 -0
  409. package/dist/pipeline/dispatch-batch.d.ts +2 -1
  410. package/dist/pipeline/dispatch-batch.js +31 -18
  411. package/dist/pipeline/dispatch-query.js +5 -4
  412. package/dist/pipeline/dispatch-scope.d.ts +6 -0
  413. package/dist/pipeline/dispatch-scope.js +27 -0
  414. package/dist/pipeline/dispatch-shared.d.ts +13 -9
  415. package/dist/pipeline/dispatch-shared.js +75 -198
  416. package/dist/pipeline/dispatch-stream.js +8 -4
  417. package/dist/pipeline/dispatch-write.d.ts +2 -1
  418. package/dist/pipeline/dispatch-write.js +10 -8
  419. package/dist/pipeline/dispatcher-utils.d.ts +3 -1
  420. package/dist/pipeline/dispatcher-utils.js +8 -2
  421. package/dist/pipeline/dispatcher.d.ts +3 -2
  422. package/dist/pipeline/dispatcher.js +4 -3
  423. package/dist/pipeline/event-consumer-state.d.ts +0 -1
  424. package/dist/pipeline/event-dispatcher-delivery.d.ts +1 -1
  425. package/dist/pipeline/event-dispatcher-delivery.js +4 -2
  426. package/dist/pipeline/event-dispatcher.d.ts +2 -2
  427. package/dist/pipeline/event-dispatcher.js +7 -3
  428. package/dist/pipeline/event-retention.js +59 -56
  429. package/dist/pipeline/handler-access-error.js +2 -1
  430. package/dist/pipeline/handler-context-auth.d.ts +5 -6
  431. package/dist/pipeline/handler-context-auth.js +7 -4
  432. package/dist/pipeline/handler-context-config.d.ts +2 -5
  433. package/dist/pipeline/handler-context-config.js +2 -2
  434. package/dist/pipeline/handler-context-db.d.ts +32 -7
  435. package/dist/pipeline/handler-context-db.js +26 -17
  436. package/dist/pipeline/handler-context-dispatch.d.ts +13 -7
  437. package/dist/pipeline/handler-context-dispatch.js +9 -8
  438. package/dist/pipeline/handler-context-events.d.ts +22 -36
  439. package/dist/pipeline/handler-context-events.js +36 -31
  440. package/dist/pipeline/handler-context-member-resolution.d.ts +2 -0
  441. package/dist/pipeline/handler-context-member-resolution.js +110 -0
  442. package/dist/pipeline/handler-context-notify.d.ts +3 -2
  443. package/dist/pipeline/handler-context-notify.js +1 -1
  444. package/dist/pipeline/handler-context-observability.d.ts +2 -4
  445. package/dist/pipeline/handler-context-observability.js +7 -5
  446. package/dist/pipeline/handler-context-phase-denials.d.ts +11 -0
  447. package/dist/pipeline/handler-context-phase-denials.js +98 -0
  448. package/dist/pipeline/handler-context-scope.d.ts +7 -10
  449. package/dist/pipeline/handler-context-scope.js +18 -20
  450. package/dist/pipeline/index.d.ts +9 -21
  451. package/dist/pipeline/index.js +5 -7
  452. package/dist/pipeline/irreversible-operation-gate.d.ts +1 -1
  453. package/dist/pipeline/irreversible-operation-gate.js +2 -2
  454. package/dist/pipeline/lifecycle-pipeline.d.ts +8 -7
  455. package/dist/pipeline/lifecycle-pipeline.js +9 -15
  456. package/dist/pipeline/member-read-only-transaction.js +11 -3
  457. package/dist/pipeline/member-reader.d.ts +1 -1
  458. package/dist/pipeline/member-reader.js +2 -2
  459. package/dist/pipeline/msp-rebuild.js +5 -3
  460. package/dist/pipeline/multi-stream-apply-context.js +3 -2
  461. package/dist/pipeline/notify-scope.d.ts +2 -1
  462. package/dist/pipeline/pre-handler-gates.d.ts +2 -1
  463. package/dist/pipeline/pre-transaction-reservations.d.ts +3 -3
  464. package/dist/pipeline/pre-transaction-reservations.js +9 -7
  465. package/dist/pipeline/projection-rebuild.js +12 -5
  466. package/dist/pipeline/projection-state.d.ts +0 -6
  467. package/dist/pipeline/projection-state.js +0 -5
  468. package/dist/pipeline/projections-runner.d.ts +2 -1
  469. package/dist/pipeline/projections-runner.js +10 -6
  470. package/dist/pipeline/system-hooks.d.ts +3 -1
  471. package/dist/pipeline/system-hooks.js +6 -4
  472. package/dist/pipeline/system-identity-switch.d.ts +4 -2
  473. package/dist/pipeline/system-identity-switch.js +51 -36
  474. package/dist/pipeline/typed-append-event.d.ts +2 -0
  475. package/dist/pipeline/typed-append-event.js +4 -0
  476. package/dist/pipeline/write-origin.js +2 -2
  477. package/dist/pipeline/write-result-masking.d.ts +1 -1
  478. package/dist/random/index.d.ts +1 -2
  479. package/dist/random/index.js +1 -2
  480. package/dist/rate-limit/bucket.d.ts +2 -1
  481. package/dist/rate-limit/middleware.js +2 -1
  482. package/dist/redis/index.d.ts +3 -4
  483. package/dist/redis/index.js +2 -2
  484. package/dist/schema-cli/apply-command.js +5 -2
  485. package/dist/schema-cli/baseline-command.js +7 -2
  486. package/dist/schema-cli/generate-command.js +7 -9
  487. package/dist/schema-cli/shared.d.ts +12 -2
  488. package/dist/schema-cli/shared.js +24 -2
  489. package/dist/schema-cli/status-command.js +8 -2
  490. package/dist/schema-cli/validate-command.js +48 -4
  491. package/dist/schema-cli.d.ts +0 -1
  492. package/dist/search/configure-tenant-index.d.ts +1 -3
  493. package/dist/search/configure-tenant-index.js +0 -4
  494. package/dist/search/index.d.ts +1 -4
  495. package/dist/search/index.js +0 -2
  496. package/dist/search/meilisearch-adapter-internals.d.ts +8 -0
  497. package/dist/search/meilisearch-adapter-internals.js +9 -0
  498. package/dist/search/meilisearch-adapter.d.ts +1 -8
  499. package/dist/search/meilisearch-adapter.js +6 -7
  500. package/dist/search/meilisearch-peer.d.ts +2 -0
  501. package/dist/search/meilisearch-peer.js +5 -0
  502. package/dist/search/reindex-entity.js +93 -87
  503. package/dist/secrets/index.d.ts +3 -4
  504. package/dist/secrets/index.js +2 -3
  505. package/dist/seeding/index.d.ts +2 -2
  506. package/dist/seeding/index.js +1 -2
  507. package/dist/time/index.d.ts +2 -2
  508. package/dist/time/index.js +1 -1
  509. package/dist/time/tz-context.d.ts +0 -5
  510. package/dist/time/tz-context.js +0 -9
  511. package/dist/ui-types/index.d.ts +8 -11
  512. package/dist/ui-types/index.js +3 -3
  513. package/dist/upgrade-changelog.d.ts +3 -2
  514. package/dist/upgrade-changelog.js +12 -8
  515. package/dist/upgrade-cli-internals.d.ts +8 -0
  516. package/dist/upgrade-cli-internals.js +63 -0
  517. package/dist/upgrade-cli.d.ts +2 -9
  518. package/dist/upgrade-cli.js +28 -70
  519. package/dist/utils/import-optional-peer.d.ts +6 -0
  520. package/dist/utils/import-optional-peer.js +19 -0
  521. package/dist/utils/index.d.ts +1 -4
  522. package/dist/utils/index.js +1 -4
  523. package/package.json +23 -19
  524. package/src/changes.json +236 -0
  525. package/dist/crypto/request-kms-cache.d.ts +0 -8
  526. package/dist/crypto/request-kms-cache.js +0 -21
  527. package/dist/engine/codemod/index.d.ts +0 -2
  528. package/dist/engine/codemod/index.js +0 -1
  529. package/dist/engine/codemod/pipeline-codemod.d.ts +0 -50
  530. package/dist/engine/codemod/pipeline-codemod.js +0 -536
  531. package/dist/engine/feature-ast/entity-field-types.d.ts +0 -13
  532. package/dist/engine/feature-ast/entity-field-types.js +0 -35
  533. package/dist/engine/feature-ast/extractors/ai-steps.d.ts +0 -6
  534. package/dist/engine/feature-ast/extractors/ai-steps.js +0 -254
  535. package/dist/engine/feature-ast/extractors/events.d.ts +0 -5
  536. package/dist/engine/feature-ast/extractors/events.js +0 -275
  537. package/dist/engine/feature-ast/extractors/handlers.d.ts +0 -24
  538. package/dist/engine/feature-ast/extractors/handlers.js +0 -358
  539. package/dist/engine/feature-ast/extractors/hooks.d.ts +0 -24
  540. package/dist/engine/feature-ast/extractors/hooks.js +0 -248
  541. package/dist/engine/feature-ast/extractors/index.d.ts +0 -14
  542. package/dist/engine/feature-ast/extractors/index.js +0 -13
  543. package/dist/engine/feature-ast/extractors/jobs-routes.d.ts +0 -7
  544. package/dist/engine/feature-ast/extractors/jobs-routes.js +0 -145
  545. package/dist/engine/feature-ast/extractors/projections-screens.d.ts +0 -10
  546. package/dist/engine/feature-ast/extractors/projections-screens.js +0 -195
  547. package/dist/engine/feature-ast/extractors/resolve-import.d.ts +0 -21
  548. package/dist/engine/feature-ast/extractors/resolve-import.js +0 -180
  549. package/dist/engine/feature-ast/extractors/round1.d.ts +0 -11
  550. package/dist/engine/feature-ast/extractors/round1.js +0 -87
  551. package/dist/engine/feature-ast/extractors/round2.d.ts +0 -7
  552. package/dist/engine/feature-ast/extractors/round2.js +0 -191
  553. package/dist/engine/feature-ast/extractors/round3.d.ts +0 -23
  554. package/dist/engine/feature-ast/extractors/round3.js +0 -292
  555. package/dist/engine/feature-ast/extractors/round5.d.ts +0 -9
  556. package/dist/engine/feature-ast/extractors/round5.js +0 -68
  557. package/dist/engine/feature-ast/extractors/round6.d.ts +0 -4
  558. package/dist/engine/feature-ast/extractors/round6.js +0 -17
  559. package/dist/engine/feature-ast/extractors/shared.d.ts +0 -94
  560. package/dist/engine/feature-ast/extractors/shared.js +0 -343
  561. package/dist/engine/feature-ast/index.d.ts +0 -16
  562. package/dist/engine/feature-ast/index.js +0 -10
  563. package/dist/engine/feature-ast/parse.d.ts +0 -31
  564. package/dist/engine/feature-ast/parse.js +0 -485
  565. package/dist/engine/feature-ast/patch.d.ts +0 -212
  566. package/dist/engine/feature-ast/patch.js +0 -611
  567. package/dist/engine/feature-ast/patcher.d.ts +0 -217
  568. package/dist/engine/feature-ast/patcher.js +0 -281
  569. package/dist/engine/feature-ast/pattern-change-schema.d.ts +0 -1238
  570. package/dist/engine/feature-ast/pattern-change-schema.js +0 -1072
  571. package/dist/engine/feature-ast/pattern-id-matchers.d.ts +0 -7
  572. package/dist/engine/feature-ast/pattern-id-matchers.js +0 -211
  573. package/dist/engine/feature-ast/pattern-id-schema.d.ts +0 -251
  574. package/dist/engine/feature-ast/pattern-id-schema.js +0 -166
  575. package/dist/engine/feature-ast/patterns.d.ts +0 -322
  576. package/dist/engine/feature-ast/patterns.js +0 -107
  577. package/dist/engine/feature-ast/render.d.ts +0 -47
  578. package/dist/engine/feature-ast/render.js +0 -666
  579. package/dist/engine/feature-ast/source-location.d.ts +0 -17
  580. package/dist/engine/feature-ast/source-location.js +0 -27
  581. package/dist/engine/pattern-library/index.d.ts +0 -2
  582. package/dist/engine/pattern-library/index.js +0 -3
  583. package/dist/engine/pattern-library/library.d.ts +0 -14
  584. package/dist/engine/pattern-library/library.js +0 -94
  585. package/dist/engine/pattern-library/mixed-schemas.d.ts +0 -16
  586. package/dist/engine/pattern-library/mixed-schemas.js +0 -559
  587. package/dist/engine/pattern-library/opaque-schemas.d.ts +0 -7
  588. package/dist/engine/pattern-library/opaque-schemas.js +0 -115
  589. package/dist/engine/pattern-library/shared-fields.d.ts +0 -122
  590. package/dist/engine/pattern-library/shared-fields.js +0 -88
  591. package/dist/engine/pattern-library/static-schemas.d.ts +0 -21
  592. package/dist/engine/pattern-library/static-schemas.js +0 -487
  593. package/dist/engine/pattern-library/types.d.ts +0 -158
  594. package/dist/engine/pattern-library/types.js +0 -36
  595. package/dist/engine/resolve-config-or-param.d.ts +0 -18
  596. package/dist/engine/resolve-config-or-param.js +0 -76
  597. package/src/scripts/codemod/README.md +0 -187
  598. package/src/scripts/codemod/codemod-support.ts +0 -334
  599. package/src/scripts/codemod/collect-source-files.ts +0 -48
  600. package/src/scripts/codemod/crypto-shredding-testing-move.ts +0 -119
  601. package/src/scripts/codemod/db-factory.ts +0 -810
  602. package/src/scripts/codemod/feature-factory.ts +0 -429
  603. package/src/scripts/codemod/feature-layout.ts +0 -424
  604. package/src/scripts/codemod/import-extensions.ts +0 -118
  605. package/src/scripts/codemod/migrate-cross-tenant.ts +0 -328
  606. package/src/scripts/codemod/migrate-db-raw.ts +0 -401
  607. package/src/scripts/codemod/migrate-open-to-all.ts +0 -235
  608. package/src/scripts/codemod/object-form.ts +0 -746
  609. package/src/scripts/codemod/package-merge.ts +0 -299
  610. package/src/scripts/codemod/pii-personal-migration.ts +0 -816
  611. package/src/scripts/codemod/remove-engine-payload-casts.ts +0 -318
  612. package/src/scripts/codemod/s3-imports.ts +0 -236
  613. package/src/scripts/codemod/tenant-db-options.ts +0 -454
  614. package/src/scripts/codemod/testing-injection.ts +0 -215
  615. package/src/scripts/codemod/testing-move-targets.ts +0 -161
  616. package/src/scripts/codemod/testing-move.ts +0 -542
  617. package/src/scripts/codemod/unprocessable-error-details-reason.ts +0 -411
@@ -1,487 +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 adoptsBundledListsSchema = {
63
- kind: "adoptsBundledLists",
64
- label: { en: "Adopts bundled lists", de: "Übernimmt Bundled-Listen" },
65
- summary: { en: "Feature packages only: takes the app-wide bundledLists table block." },
66
- category: "meta",
67
- editability: "opaque",
68
- singleton: true,
69
- fields: [],
70
- };
71
- export const toggleableSchema = {
72
- kind: "toggleable",
73
- label: { en: "Toggleable", de: "Umschaltbar" },
74
- summary: { en: "Operator can switch this feature on/off per tenant." },
75
- category: "meta",
76
- editability: "static",
77
- singleton: true,
78
- fields: [
79
- {
80
- path: "default",
81
- label: { en: "Enabled by default", de: "Standardmäßig aktiviert" },
82
- input: "boolean",
83
- required: true,
84
- },
85
- ],
86
- };
87
- export const describeSchema = {
88
- kind: "describe",
89
- label: { en: "Description", de: "Beschreibung" },
90
- summary: { en: "One-to-three-sentence docs-lead: what the feature does + when you need it." },
91
- category: "meta",
92
- editability: "static",
93
- singleton: true,
94
- fields: [
95
- {
96
- path: "text",
97
- label: { en: "Text", de: "Text" },
98
- input: "textarea",
99
- required: true,
100
- placeholder: "Stores per-tenant widgets and exposes CRUD handlers for them.",
101
- },
102
- ],
103
- };
104
- export const uiHintsSchema = {
105
- kind: "uiHints",
106
- label: { en: "UI hints", de: "UI-Hinweise" },
107
- summary: { en: "Picker/scaffolder metadata. Opaque to the Designer; rendered as raw TS source." },
108
- category: "meta",
109
- editability: "opaque",
110
- singleton: true,
111
- fields: [],
112
- };
113
- export const entitySchema = {
114
- kind: "entity",
115
- label: { en: "Entity", de: "Entität" },
116
- summary: { en: "An aggregate stored as event-sourced read-model." },
117
- category: "data",
118
- editability: "static",
119
- fields: [
120
- {
121
- path: "entityName",
122
- label: { en: "Name", de: "Name" },
123
- input: "text",
124
- required: true,
125
- placeholder: "task",
126
- },
127
- {
128
- path: "definition.fields",
129
- label: { en: "Fields", de: "Felder" },
130
- input: "entity-fields-editor",
131
- required: true,
132
- },
133
- {
134
- path: "definition.idType",
135
- label: { en: "ID type", de: "ID-Typ" },
136
- input: "select",
137
- options: ID_TYPE_OPTIONS,
138
- },
139
- {
140
- path: "definition.softDelete",
141
- label: { en: "Soft delete", de: "Soft-Delete" },
142
- hint: { en: "Mark rows isDeleted=true instead of removing them." },
143
- input: "boolean",
144
- },
145
- {
146
- path: "definition.table",
147
- label: { en: "Table name (override)", de: "Tabellenname (Override)" },
148
- hint: { en: "Defaults to read_<plural-snake-case-name>." },
149
- input: "text",
150
- },
151
- ],
152
- };
153
- export const relationSchema = {
154
- kind: "relation",
155
- label: { en: "Relation", de: "Beziehung" },
156
- summary: { en: "Foreign-key relationship between entities." },
157
- category: "data",
158
- editability: "static",
159
- fields: [
160
- {
161
- path: "entityName",
162
- label: { en: "Owner entity", de: "Besitzende Entität" },
163
- input: "entity-ref",
164
- required: true,
165
- },
166
- {
167
- path: "relationName",
168
- label: { en: "Relation name", de: "Beziehungs-Name" },
169
- input: "text",
170
- required: true,
171
- placeholder: "owner",
172
- },
173
- {
174
- path: "definition",
175
- label: { en: "Type", de: "Typ" },
176
- input: "discriminated-union",
177
- discriminator: "type",
178
- variants: [
179
- {
180
- tag: "belongsTo",
181
- label: { en: "Belongs to", de: "Gehört zu" },
182
- fields: [
183
- {
184
- path: "definition.target",
185
- label: { en: "Target entity", de: "Ziel-Entität" },
186
- input: "entity-ref",
187
- required: true,
188
- },
189
- {
190
- path: "definition.foreignKey",
191
- label: { en: "Foreign key column", de: "FK-Spalte" },
192
- input: "text",
193
- required: true,
194
- },
195
- ],
196
- },
197
- {
198
- tag: "hasMany",
199
- label: { en: "Has many", de: "Hat viele" },
200
- fields: [
201
- {
202
- path: "definition.target",
203
- label: { en: "Target entity", de: "Ziel-Entität" },
204
- input: "entity-ref",
205
- required: true,
206
- },
207
- ],
208
- },
209
- {
210
- tag: "manyToMany",
211
- label: { en: "Many to many", de: "Viele zu viele" },
212
- fields: [
213
- {
214
- path: "definition.target",
215
- label: { en: "Target entity", de: "Ziel-Entität" },
216
- input: "entity-ref",
217
- required: true,
218
- },
219
- ],
220
- },
221
- ],
222
- },
223
- ],
224
- };
225
- export const navSchema = {
226
- kind: "nav",
227
- label: { en: "Navigation entry", de: "Navigations-Eintrag" },
228
- summary: { en: "Side-bar / menu link." },
229
- category: "ui",
230
- editability: "static",
231
- fields: [
232
- {
233
- path: "definition.id",
234
- label: { en: "ID", de: "ID" },
235
- input: "text",
236
- required: true,
237
- },
238
- {
239
- path: "definition.label",
240
- label: { en: "Label", de: "Beschriftung" },
241
- input: "text",
242
- },
243
- {
244
- path: "definition.screen",
245
- label: { en: "Screen QN", de: "Screen-QN" },
246
- hint: { en: "<feature>:screen:<id> qualified name." },
247
- input: "text",
248
- },
249
- {
250
- path: "definition.parent",
251
- label: { en: "Parent nav", de: "Eltern-Nav" },
252
- input: "text",
253
- },
254
- ],
255
- };
256
- export const workspaceSchema = {
257
- kind: "workspace",
258
- label: { en: "Workspace", de: "Arbeitsbereich" },
259
- summary: { en: "Persona-/role-scoped UI surface." },
260
- category: "ui",
261
- editability: "static",
262
- fields: [
263
- {
264
- path: "definition.id",
265
- label: { en: "ID", de: "ID" },
266
- input: "text",
267
- required: true,
268
- },
269
- {
270
- path: "definition.label",
271
- label: { en: "Label", de: "Beschriftung" },
272
- input: "text",
273
- },
274
- ],
275
- };
276
- export const configSchema = {
277
- kind: "config",
278
- label: { en: "Config keys", de: "Config-Keys" },
279
- summary: { en: "Typed runtime configuration." },
280
- category: "meta",
281
- editability: "static",
282
- singleton: true,
283
- fields: [
284
- {
285
- path: "keys",
286
- label: { en: "Keys", de: "Keys" },
287
- input: "key-value-map",
288
- keyPlaceholder: "maxItems",
289
- valueInput: "json-readonly",
290
- required: true,
291
- },
292
- ],
293
- };
294
- export const translationsSchema = {
295
- kind: "translations",
296
- label: { en: "Translations", de: "Übersetzungen" },
297
- summary: { en: "i18n strings keyed by locale." },
298
- category: "meta",
299
- editability: "static",
300
- singleton: true,
301
- fields: [
302
- {
303
- path: "keys",
304
- label: { en: "Locales", de: "Sprachen" },
305
- input: "key-value-map",
306
- keyPlaceholder: "en",
307
- valueInput: "json-readonly",
308
- required: true,
309
- },
310
- ],
311
- };
312
- export const metricSchema = {
313
- kind: "metric",
314
- label: { en: "Metric", de: "Metrik" },
315
- summary: { en: "Prometheus-style counter / gauge / histogram." },
316
- category: "meta",
317
- editability: "static",
318
- fields: [
319
- {
320
- path: "shortName",
321
- label: { en: "Short name", de: "Kurzname" },
322
- hint: { en: "Snake-case; auto-prefixed with kumiko_<feature>_." },
323
- input: "text",
324
- required: true,
325
- },
326
- {
327
- path: "options.type",
328
- label: { en: "Type", de: "Typ" },
329
- input: "select",
330
- options: [
331
- { value: "counter", label: { en: "Counter" } },
332
- { value: "gauge", label: { en: "Gauge" } },
333
- { value: "histogram", label: { en: "Histogram" } },
334
- ],
335
- required: true,
336
- },
337
- ],
338
- };
339
- export const secretSchema = {
340
- kind: "secret",
341
- label: { en: "Secret", de: "Secret" },
342
- summary: { en: "Tenant-scoped encrypted credential." },
343
- category: "meta",
344
- editability: "static",
345
- fields: [
346
- {
347
- path: "shortName",
348
- label: { en: "Short name", de: "Kurzname" },
349
- input: "text",
350
- required: true,
351
- },
352
- {
353
- path: "options.label",
354
- label: { en: "UI label (i18n)", de: "UI-Label (i18n)" },
355
- hint: { en: "{ en: 'API Key', de: 'API-Schlüssel' }" },
356
- input: "json-readonly",
357
- required: true,
358
- },
359
- {
360
- path: "options.scope",
361
- label: { en: "Scope", de: "Geltungsbereich" },
362
- input: "select",
363
- options: [{ value: "tenant", label: { en: "Tenant" } }],
364
- },
365
- {
366
- path: "options.writeRoles",
367
- label: { en: "Write roles", de: "Schreibrollen" },
368
- hint: {
369
- en: "Roles allowed to set or delete. Leave empty to rely on the secrets handler access alone.",
370
- de: "Rollen, die setzen oder löschen dürfen. Leer lassen, dann entscheidet allein der Handler-Zugriff.",
371
- },
372
- input: "string-list",
373
- },
374
- ],
375
- };
376
- export const secretNamespaceSchema = {
377
- kind: "secretNamespace",
378
- label: { en: "Secret namespace", de: "Secret-Namespace" },
379
- summary: { en: "Family of tenant-scoped secrets with a runtime-chosen name." },
380
- category: "meta",
381
- editability: "static",
382
- fields: [
383
- {
384
- path: "shortName",
385
- label: { en: "Short name", de: "Kurzname" },
386
- input: "text",
387
- required: true,
388
- },
389
- {
390
- path: "options.label",
391
- label: { en: "UI label (i18n)", de: "UI-Label (i18n)" },
392
- hint: { en: "{ en: 'Webhook token', de: 'Webhook-Token' }" },
393
- input: "json-readonly",
394
- required: true,
395
- },
396
- {
397
- path: "options.scope",
398
- label: { en: "Scope", de: "Geltungsbereich" },
399
- input: "select",
400
- options: [{ value: "tenant", label: { en: "Tenant" } }],
401
- },
402
- {
403
- path: "options.writeRoles",
404
- label: { en: "Write roles", de: "Schreibrollen" },
405
- hint: {
406
- en: "Roles allowed to set or delete. Leave empty to rely on the secrets handler access alone.",
407
- de: "Rollen, die setzen oder löschen dürfen. Leer lassen, dann entscheidet allein der Handler-Zugriff.",
408
- },
409
- input: "string-list",
410
- },
411
- ],
412
- };
413
- export const claimKeySchema = {
414
- kind: "claimKey",
415
- label: { en: "Claim key", de: "Claim-Key" },
416
- summary: { en: "Typed JWT claim contributed at login." },
417
- category: "meta",
418
- editability: "static",
419
- fields: [
420
- {
421
- path: "shortName",
422
- label: { en: "Short name", de: "Kurzname" },
423
- input: "text",
424
- required: true,
425
- },
426
- {
427
- path: "claimType",
428
- label: { en: "Type", de: "Typ" },
429
- input: "select",
430
- options: CLAIM_KEY_TYPE_OPTIONS,
431
- required: true,
432
- },
433
- ],
434
- };
435
- export const referenceDataSchema = {
436
- kind: "referenceData",
437
- label: { en: "Reference data", de: "Referenzdaten" },
438
- summary: { en: "Seed data for an entity (currencies, categories, …)." },
439
- category: "data",
440
- editability: "static",
441
- fields: [
442
- {
443
- path: "entityName",
444
- label: { en: "Entity", de: "Entität" },
445
- input: "entity-ref",
446
- required: true,
447
- },
448
- {
449
- path: "data",
450
- label: { en: "Rows", de: "Zeilen" },
451
- input: "json-readonly",
452
- required: true,
453
- },
454
- {
455
- path: "upsertKey",
456
- label: { en: "Upsert key", de: "Upsert-Key" },
457
- hint: { en: "Field name to deduplicate on." },
458
- input: "text",
459
- },
460
- ],
461
- };
462
- export const useExtensionSchema = {
463
- kind: "useExtension",
464
- label: { en: "Use extension", de: "Erweiterung nutzen" },
465
- summary: { en: "Apply a registered registrar-extension to an entity." },
466
- category: "advanced",
467
- editability: "static",
468
- fields: [
469
- {
470
- path: "extensionName",
471
- label: { en: "Extension name", de: "Erweiterungs-Name" },
472
- input: "text",
473
- required: true,
474
- },
475
- {
476
- path: "entityName",
477
- label: { en: "Entity", de: "Entität" },
478
- input: "entity-ref",
479
- required: true,
480
- },
481
- {
482
- path: "options",
483
- label: { en: "Options", de: "Optionen" },
484
- input: "json-readonly",
485
- },
486
- ],
487
- };
@@ -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 {};