@cosmicdrift/kumiko-framework 0.389.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.
Files changed (616) 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/eagerload.d.ts +2 -1
  98. package/dist/db/entity-field-encryption.d.ts +1 -1
  99. package/dist/db/entity-table-meta.d.ts +1 -1
  100. package/dist/db/event-store-executor-context.d.ts +3 -1
  101. package/dist/db/event-store-executor-context.js +4 -3
  102. package/dist/db/event-store-executor-read-filter.d.ts +1 -1
  103. package/dist/db/event-store-executor-read-rows.d.ts +2 -1
  104. package/dist/db/event-store-executor-read-search.d.ts +2 -1
  105. package/dist/db/event-store-executor-read-sort.d.ts +2 -1
  106. package/dist/db/event-store-executor-read.js +2 -2
  107. package/dist/db/event-store-executor-write-atomic.js +8 -7
  108. package/dist/db/event-store-executor-write-steps.d.ts +3 -2
  109. package/dist/db/event-store-executor-write.js +7 -4
  110. package/dist/db/event-store-executor.d.ts +1 -1
  111. package/dist/db/executor-managed-tables.d.ts +7 -1
  112. package/dist/db/executor-managed-tables.js +11 -2
  113. package/dist/db/index.d.ts +29 -28
  114. package/dist/db/index.js +22 -20
  115. package/dist/db/known-table-names.d.ts +6 -0
  116. package/dist/db/known-table-names.js +21 -0
  117. package/dist/db/list-aggregate-labels.d.ts +1 -1
  118. package/dist/db/located-timestamp.d.ts +1 -1
  119. package/dist/db/located-timestamp.js +0 -5
  120. package/dist/db/migrate-generator.d.ts +17 -1
  121. package/dist/db/migrate-generator.js +50 -20
  122. package/dist/db/migrate-primary-key.d.ts +12 -0
  123. package/dist/db/migrate-primary-key.js +45 -0
  124. package/dist/db/migrate-rls-diff.d.ts +20 -0
  125. package/dist/db/migrate-rls-diff.js +61 -0
  126. package/dist/db/migrate-runner.js +4 -0
  127. package/dist/db/money.d.ts +1 -1
  128. package/dist/db/money.js +1 -1
  129. package/dist/db/parent-ref-clause.d.ts +2 -1
  130. package/dist/db/pg-error.d.ts +2 -0
  131. package/dist/db/pg-error.js +11 -0
  132. package/dist/db/queries/ddl.d.ts +3 -0
  133. package/dist/db/queries/ddl.js +34 -1
  134. package/dist/db/queries/event-store.js +4 -2
  135. package/dist/db/queries/event-tenants.d.ts +2 -0
  136. package/dist/db/queries/event-tenants.js +17 -0
  137. package/dist/db/queries/rebuild-rls-guard.d.ts +2 -0
  138. package/dist/db/queries/rebuild-rls-guard.js +29 -0
  139. package/dist/db/queries/rls-boot-catalog.d.ts +16 -0
  140. package/dist/db/queries/rls-boot-catalog.js +39 -0
  141. package/dist/db/queries/rls-catalog.d.ts +6 -0
  142. package/dist/db/queries/rls-catalog.js +82 -0
  143. package/dist/db/queries/rls-scope.d.ts +3 -0
  144. package/dist/db/queries/rls-scope.js +17 -0
  145. package/dist/db/queries/rls-shape.d.ts +10 -0
  146. package/dist/db/queries/rls-shape.js +42 -0
  147. package/dist/db/queries/session-advisory-lock.d.ts +2 -0
  148. package/dist/db/queries/session-advisory-lock.js +23 -0
  149. package/dist/db/queries/shadow-swap.d.ts +1 -2
  150. package/dist/db/queries/shadow-swap.js +9 -25
  151. package/dist/db/queries/test-stack.d.ts +4 -1
  152. package/dist/db/queries/test-stack.js +83 -2
  153. package/dist/db/query.js +11 -7
  154. package/dist/db/reference-data.d.ts +1 -1
  155. package/dist/db/reference-data.js +6 -1
  156. package/dist/db/render-ddl.d.ts +6 -2
  157. package/dist/db/render-ddl.js +7 -7
  158. package/dist/db/render-rls-ddl.d.ts +35 -0
  159. package/dist/db/render-rls-ddl.js +127 -0
  160. package/dist/db/replay-migration-sql.d.ts +3 -1
  161. package/dist/db/replay-migration-sql.js +22 -5
  162. package/dist/db/replay-rls.d.ts +25 -0
  163. package/dist/db/replay-rls.js +156 -0
  164. package/dist/db/row-level-security-boot-check.d.ts +5 -0
  165. package/dist/db/row-level-security-boot-check.js +85 -0
  166. package/dist/db/row-level-security-connection.d.ts +3 -0
  167. package/dist/db/row-level-security-connection.js +213 -0
  168. package/dist/db/row-level-security-scope.d.ts +33 -0
  169. package/dist/db/row-level-security-scope.js +127 -0
  170. package/dist/db/scope-tenant-db-to-tenant.d.ts +3 -0
  171. package/dist/db/scope-tenant-db-to-tenant.js +14 -0
  172. package/dist/db/sql-identifier.d.ts +1 -0
  173. package/dist/db/sql-identifier.js +3 -0
  174. package/dist/db/table-builder.d.ts +2 -1
  175. package/dist/db/table-builder.js +1 -1
  176. package/dist/db/table-info.js +1 -1
  177. package/dist/db/table-push.d.ts +11 -2
  178. package/dist/db/table-push.js +15 -2
  179. package/dist/db/tenant-db-runner.d.ts +3 -1
  180. package/dist/db/tenant-db-runner.js +4 -3
  181. package/dist/db/tenant-db-scoped-rebind.d.ts +10 -0
  182. package/dist/db/tenant-db-scoped-rebind.js +33 -0
  183. package/dist/db/tenant-db-statement-runner.d.ts +13 -0
  184. package/dist/db/tenant-db-statement-runner.js +48 -0
  185. package/dist/db/tenant-db.d.ts +17 -12
  186. package/dist/db/tenant-db.js +49 -120
  187. package/dist/db/tenant-id-filter.d.ts +3 -0
  188. package/dist/db/tenant-id-filter.js +30 -0
  189. package/dist/db/transaction-serialization.d.ts +6 -0
  190. package/dist/db/transaction-serialization.js +60 -0
  191. package/dist/derivatives/delete-stored-file.js +1 -1
  192. package/dist/derivatives/index.d.ts +2 -5
  193. package/dist/derivatives/index.js +2 -3
  194. package/dist/engine/access.d.ts +2 -1
  195. package/dist/engine/access.js +1 -1
  196. package/dist/engine/boot-validator/entity-handler.d.ts +2 -1
  197. package/dist/engine/boot-validator/entity-handler.js +1 -1
  198. package/dist/engine/boot-validator/entity-list-aggregate-options.d.ts +1 -1
  199. package/dist/engine/boot-validator/list-table-aggregate-options.d.ts +1 -1
  200. package/dist/engine/boot-validator/list-table-aggregate-query.d.ts +2 -1
  201. package/dist/engine/boot-validator/nav.d.ts +3 -1
  202. package/dist/engine/boot-validator/nav.js +1 -1
  203. package/dist/engine/boot-validator/ownership.d.ts +2 -1
  204. package/dist/engine/boot-validator/parent-ref.d.ts +2 -1
  205. package/dist/engine/boot-validator/projection-list-screens.d.ts +2 -1
  206. package/dist/engine/boot-validator/query-refs.d.ts +2 -1
  207. package/dist/engine/boot-validator/screens-forms.d.ts +2 -1
  208. package/dist/engine/boot-validator/screens-kind-shared.d.ts +3 -1
  209. package/dist/engine/boot-validator/screens.d.ts +2 -1
  210. package/dist/engine/boot-validator/workspaces.d.ts +3 -1
  211. package/dist/engine/bridge-stub.d.ts +5 -2
  212. package/dist/engine/bridge-stub.js +39 -24
  213. package/dist/engine/config-helpers.d.ts +2 -2
  214. package/dist/engine/config-helpers.js +0 -9
  215. package/dist/engine/constants.d.ts +0 -10
  216. package/dist/engine/constants.js +0 -8
  217. package/dist/engine/create-app.js +1 -1
  218. package/dist/engine/define-feature.d.ts +2 -1
  219. package/dist/engine/define-feature.js +1 -2
  220. package/dist/engine/define-handler.d.ts +1 -1
  221. package/dist/engine/define-step.d.ts +0 -1
  222. package/dist/engine/define-step.js +0 -3
  223. package/dist/engine/embedded-derived.d.ts +1 -1
  224. package/dist/engine/entity-handlers.d.ts +2 -1
  225. package/dist/engine/entity-handlers.js +7 -7
  226. package/dist/engine/entity-list-runtime-options.js +3 -1
  227. package/dist/engine/entity-list-searchability.d.ts +2 -1
  228. package/dist/engine/event-def.d.ts +2 -1
  229. package/dist/engine/event-helpers.d.ts +3 -1
  230. package/dist/engine/event-helpers.js +3 -3
  231. package/dist/engine/extension-names.d.ts +2 -8
  232. package/dist/engine/extension-names.js +2 -2
  233. package/dist/engine/extension-selector-plugins.d.ts +1 -1
  234. package/dist/engine/extensions/storage-provider.d.ts +1 -2
  235. package/dist/engine/extensions/user-data.d.ts +0 -8
  236. package/dist/engine/factories.d.ts +2 -1
  237. package/dist/engine/feature-builder-state.d.ts +8 -1
  238. package/dist/engine/feature-changelog.d.ts +1 -1
  239. package/dist/engine/feature-config-events-jobs.d.ts +4 -1
  240. package/dist/engine/feature-entity-handlers.d.ts +5 -1
  241. package/dist/engine/feature-manifest.js +1 -1
  242. package/dist/engine/feature-ui-extensions.d.ts +7 -1
  243. package/dist/engine/feature-ui-extensions.js +6 -4
  244. package/dist/engine/field-access.d.ts +2 -1
  245. package/dist/engine/handler-field-references.d.ts +0 -4
  246. package/dist/engine/index.d.ts +57 -54
  247. package/dist/engine/index.js +22 -27
  248. package/dist/engine/instruction-fields.d.ts +1 -1
  249. package/dist/engine/personal-data-fields.d.ts +1 -1
  250. package/dist/engine/qualified-name.d.ts +0 -1
  251. package/dist/engine/read-claim.d.ts +2 -1
  252. package/dist/engine/registry-facade.js +0 -3
  253. package/dist/engine/registry-ingest.d.ts +2 -1
  254. package/dist/engine/registry-ingest.js +1 -2
  255. package/dist/engine/registry-state.d.ts +12 -2
  256. package/dist/engine/registry-state.js +2 -3
  257. package/dist/engine/registry-validate.d.ts +3 -1
  258. package/dist/engine/registry-validate.js +7 -7
  259. package/dist/engine/run-in.d.ts +1 -1
  260. package/dist/engine/run-in.js +0 -1
  261. package/dist/engine/schema-builder.d.ts +1 -1
  262. package/dist/engine/schema-builder.js +1 -1
  263. package/dist/engine/screen-filter-ops.d.ts +2 -1
  264. package/dist/engine/screen-filter-ops.js +0 -5
  265. package/dist/engine/soft-delete-cleanup.d.ts +1 -1
  266. package/dist/engine/soft-delete-cleanup.js +4 -4
  267. package/dist/engine/state-machine.js +2 -1
  268. package/dist/engine/steps/_read-source.js +1 -1
  269. package/dist/engine/steps/aggregate-append-event.js +2 -2
  270. package/dist/engine/steps/call-feature.js +2 -2
  271. package/dist/engine/steps/mail-send.js +1 -1
  272. package/dist/engine/steps/retry.js +1 -1
  273. package/dist/engine/steps/wait-for-event.js +1 -1
  274. package/dist/engine/steps/wait.js +1 -1
  275. package/dist/engine/steps/webhook-send.js +1 -1
  276. package/dist/engine/template-variables.d.ts +2 -1
  277. package/dist/engine/transfer-adjacency.d.ts +1 -1
  278. package/dist/engine/types/index.d.ts +8 -31
  279. package/dist/engine/types/index.js +2 -10
  280. package/dist/engine/validation.d.ts +2 -1
  281. package/dist/entrypoint/index.d.ts +7 -35
  282. package/dist/entrypoint/index.js +7 -1
  283. package/dist/entrypoint/internals.d.ts +40 -0
  284. package/dist/entrypoint/internals.js +1 -0
  285. package/dist/entrypoint/row-level-security-mode-check.d.ts +3 -0
  286. package/dist/entrypoint/row-level-security-mode-check.js +19 -0
  287. package/dist/env/dry-run-internals.d.ts +10 -0
  288. package/dist/env/dry-run-internals.js +1 -0
  289. package/dist/env/dry-run.d.ts +1 -10
  290. package/dist/env/dry-run.js +2 -1
  291. package/dist/env/index.d.ts +1 -85
  292. package/dist/env/index.js +6 -50
  293. package/dist/env/internals.d.ts +87 -0
  294. package/dist/env/internals.js +53 -0
  295. package/dist/errors/classes.js +2 -2
  296. package/dist/errors/index.d.ts +5 -14
  297. package/dist/errors/index.js +4 -9
  298. package/dist/errors/member-resolution.js +1 -1
  299. package/dist/errors/reasons.d.ts +0 -1
  300. package/dist/errors/reasons.js +7 -7
  301. package/dist/errors/serialize.d.ts +0 -18
  302. package/dist/errors/serialize.js +0 -27
  303. package/dist/es-ops/index.d.ts +4 -4
  304. package/dist/es-ops/index.js +2 -2
  305. package/dist/es-ops/operations-schema.d.ts +1 -1
  306. package/dist/es-ops/types.d.ts +4 -5
  307. package/dist/event-store/admin-api-internals.d.ts +14 -0
  308. package/dist/event-store/admin-api-internals.js +1 -0
  309. package/dist/event-store/admin-api.d.ts +1 -14
  310. package/dist/event-store/admin-api.js +11 -6
  311. package/dist/event-store/archive.js +4 -2
  312. package/dist/event-store/errors.js +2 -2
  313. package/dist/event-store/event-store.js +41 -34
  314. package/dist/event-store/events-schema.js +4 -1
  315. package/dist/event-store/index.d.ts +11 -13
  316. package/dist/event-store/index.js +7 -9
  317. package/dist/event-store/rebuild-dead-letter.js +4 -2
  318. package/dist/event-store/snapshot.js +4 -3
  319. package/dist/event-store/stream-scope.d.ts +2 -0
  320. package/dist/event-store/stream-scope.js +6 -0
  321. package/dist/event-store/upcaster-dead-letter.js +4 -2
  322. package/dist/event-store/upcaster.d.ts +2 -1
  323. package/dist/files/action-form-upload.d.ts +2 -1
  324. package/dist/files/action-form-upload.js +1 -1
  325. package/dist/files/assert-file-refs-belong-to-tenant.d.ts +2 -1
  326. package/dist/files/assert-file-refs-belong-to-tenant.js +1 -1
  327. package/dist/files/bind-pending-file-refs.d.ts +2 -1
  328. package/dist/files/bind-pending-file-refs.js +2 -1
  329. package/dist/files/bind-referenced-files.write.js +1 -1
  330. package/dist/files/create-file-ref-from-bytes.d.ts +6 -3
  331. package/dist/files/create-file-ref-from-bytes.js +3 -3
  332. package/dist/files/create-file-ref.d.ts +3 -2
  333. package/dist/files/create-file-ref.js +2 -2
  334. package/dist/files/dispose-removed-file-refs.d.ts +2 -1
  335. package/dist/files/dispose-removed-file-refs.js +1 -1
  336. package/dist/files/feature.js +2 -2
  337. package/dist/files/file-handle.js +1 -1
  338. package/dist/files/file-routes.d.ts +1 -1
  339. package/dist/files/file-routes.js +12 -2
  340. package/dist/files/index.d.ts +11 -13
  341. package/dist/files/index.js +5 -7
  342. package/dist/files/load-save-file-refs.d.ts +2 -1
  343. package/dist/files/load-save-file-refs.js +1 -1
  344. package/dist/files/provider-resolver.d.ts +5 -4
  345. package/dist/files/provider-resolver.js +4 -4
  346. package/dist/files/storage-tracking.js +4 -2
  347. package/dist/files/sweep-orphaned-uploads.d.ts +1 -1
  348. package/dist/files/sweep-orphaned-uploads.js +1 -1
  349. package/dist/i18n/index.d.ts +2 -8
  350. package/dist/i18n/index.js +1 -1
  351. package/dist/i18n/internals.d.ts +7 -0
  352. package/dist/i18n/internals.js +1 -0
  353. package/dist/i18n/required-surface-keys.d.ts +4 -1
  354. package/dist/internal/row-level-security.d.ts +3 -0
  355. package/dist/internal/row-level-security.js +3 -0
  356. package/dist/internal/stack-support.d.ts +1 -1
  357. package/dist/internal/stack-support.js +1 -1
  358. package/dist/internal/testing.d.ts +1 -0
  359. package/dist/internal/testing.js +9 -5
  360. package/dist/jobs/index.d.ts +1 -1
  361. package/dist/jobs/job-append-event.d.ts +12 -0
  362. package/dist/jobs/job-append-event.js +30 -0
  363. package/dist/jobs/job-runner-context.d.ts +2 -2
  364. package/dist/jobs/job-runner-context.js +46 -16
  365. package/dist/jobs/job-runner-execution.d.ts +1 -1
  366. package/dist/jobs/job-runner-execution.js +6 -4
  367. package/dist/jobs/job-runner-gates.d.ts +1 -1
  368. package/dist/jobs/job-runner-gates.js +0 -1
  369. package/dist/jobs/job-runner-helpers.d.ts +11 -4
  370. package/dist/jobs/job-runner-helpers.js +10 -1
  371. package/dist/jobs/job-runner-scope.d.ts +5 -2
  372. package/dist/jobs/job-runner-types.d.ts +2 -1
  373. package/dist/jobs/job-runner.js +19 -6
  374. package/dist/jobs/max-per-tenant.d.ts +1 -1
  375. package/dist/logging/index.d.ts +1 -2
  376. package/dist/logging/index.js +1 -1
  377. package/dist/logging/pino-logger.js +1 -1
  378. package/dist/logging/utils.d.ts +1 -0
  379. package/dist/logging/utils.js +6 -0
  380. package/dist/migrations/index.d.ts +3 -3
  381. package/dist/migrations/index.js +3 -3
  382. package/dist/migrations/pending-rebuilds.d.ts +1 -1
  383. package/dist/migrations/pending-rebuilds.js +1 -1
  384. package/dist/migrations/pii-event-backfill.js +4 -1
  385. package/dist/observability/escape-hatch-report.d.ts +2 -1
  386. package/dist/observability/index.d.ts +7 -15
  387. package/dist/observability/index.js +4 -12
  388. package/dist/observability/metric-validator.js +1 -1
  389. package/dist/observability/metrics-handle.d.ts +0 -1
  390. package/dist/observability/metrics-handle.js +2 -15
  391. package/dist/observability/recording-tracer.d.ts +1 -2
  392. package/dist/observability/recording-tracer.js +0 -6
  393. package/dist/observability/sensitive-filter.d.ts +0 -2
  394. package/dist/observability/sensitive-filter.js +0 -29
  395. package/dist/pipeline/active-membership.d.ts +2 -1
  396. package/dist/pipeline/active-membership.js +6 -2
  397. package/dist/pipeline/append-event-core.d.ts +2 -1
  398. package/dist/pipeline/append-event-core.js +2 -2
  399. package/dist/pipeline/attach-outside-transaction.d.ts +3 -0
  400. package/dist/pipeline/attach-outside-transaction.js +13 -0
  401. package/dist/pipeline/auth-claims-resolver.d.ts +2 -1
  402. package/dist/pipeline/cascade-handler.d.ts +2 -1
  403. package/dist/pipeline/cascade-handler.js +3 -2
  404. package/dist/pipeline/config-accessor-factory.d.ts +1 -1
  405. package/dist/pipeline/config-accessor-factory.js +1 -1
  406. package/dist/pipeline/context-services.d.ts +56 -0
  407. package/dist/pipeline/context-services.js +73 -0
  408. package/dist/pipeline/dispatch-batch.d.ts +2 -1
  409. package/dist/pipeline/dispatch-batch.js +31 -18
  410. package/dist/pipeline/dispatch-query.js +5 -4
  411. package/dist/pipeline/dispatch-scope.d.ts +6 -0
  412. package/dist/pipeline/dispatch-scope.js +27 -0
  413. package/dist/pipeline/dispatch-shared.d.ts +13 -9
  414. package/dist/pipeline/dispatch-shared.js +75 -198
  415. package/dist/pipeline/dispatch-stream.js +8 -4
  416. package/dist/pipeline/dispatch-write.d.ts +2 -1
  417. package/dist/pipeline/dispatch-write.js +10 -8
  418. package/dist/pipeline/dispatcher-utils.d.ts +3 -1
  419. package/dist/pipeline/dispatcher-utils.js +8 -2
  420. package/dist/pipeline/dispatcher.d.ts +3 -2
  421. package/dist/pipeline/dispatcher.js +4 -3
  422. package/dist/pipeline/event-consumer-state.d.ts +0 -1
  423. package/dist/pipeline/event-dispatcher-delivery.d.ts +1 -1
  424. package/dist/pipeline/event-dispatcher-delivery.js +4 -2
  425. package/dist/pipeline/event-dispatcher.d.ts +2 -2
  426. package/dist/pipeline/event-dispatcher.js +7 -3
  427. package/dist/pipeline/event-retention.js +59 -56
  428. package/dist/pipeline/handler-access-error.js +2 -1
  429. package/dist/pipeline/handler-context-auth.d.ts +5 -6
  430. package/dist/pipeline/handler-context-auth.js +7 -4
  431. package/dist/pipeline/handler-context-config.d.ts +2 -5
  432. package/dist/pipeline/handler-context-config.js +2 -2
  433. package/dist/pipeline/handler-context-db.d.ts +32 -7
  434. package/dist/pipeline/handler-context-db.js +26 -17
  435. package/dist/pipeline/handler-context-dispatch.d.ts +13 -7
  436. package/dist/pipeline/handler-context-dispatch.js +9 -8
  437. package/dist/pipeline/handler-context-events.d.ts +22 -36
  438. package/dist/pipeline/handler-context-events.js +36 -31
  439. package/dist/pipeline/handler-context-member-resolution.d.ts +2 -0
  440. package/dist/pipeline/handler-context-member-resolution.js +110 -0
  441. package/dist/pipeline/handler-context-notify.d.ts +3 -2
  442. package/dist/pipeline/handler-context-notify.js +1 -1
  443. package/dist/pipeline/handler-context-observability.d.ts +2 -4
  444. package/dist/pipeline/handler-context-observability.js +7 -5
  445. package/dist/pipeline/handler-context-phase-denials.d.ts +11 -0
  446. package/dist/pipeline/handler-context-phase-denials.js +98 -0
  447. package/dist/pipeline/handler-context-scope.d.ts +7 -10
  448. package/dist/pipeline/handler-context-scope.js +18 -20
  449. package/dist/pipeline/index.d.ts +9 -21
  450. package/dist/pipeline/index.js +5 -7
  451. package/dist/pipeline/irreversible-operation-gate.d.ts +1 -1
  452. package/dist/pipeline/irreversible-operation-gate.js +2 -2
  453. package/dist/pipeline/lifecycle-pipeline.d.ts +8 -7
  454. package/dist/pipeline/lifecycle-pipeline.js +9 -15
  455. package/dist/pipeline/member-read-only-transaction.js +11 -3
  456. package/dist/pipeline/member-reader.d.ts +1 -1
  457. package/dist/pipeline/member-reader.js +2 -2
  458. package/dist/pipeline/msp-rebuild.js +5 -3
  459. package/dist/pipeline/multi-stream-apply-context.js +3 -2
  460. package/dist/pipeline/notify-scope.d.ts +2 -1
  461. package/dist/pipeline/pre-handler-gates.d.ts +2 -1
  462. package/dist/pipeline/pre-transaction-reservations.d.ts +3 -3
  463. package/dist/pipeline/pre-transaction-reservations.js +9 -7
  464. package/dist/pipeline/projection-rebuild.js +12 -5
  465. package/dist/pipeline/projection-state.d.ts +0 -6
  466. package/dist/pipeline/projection-state.js +0 -5
  467. package/dist/pipeline/projections-runner.d.ts +2 -1
  468. package/dist/pipeline/projections-runner.js +10 -6
  469. package/dist/pipeline/system-hooks.d.ts +3 -1
  470. package/dist/pipeline/system-hooks.js +6 -4
  471. package/dist/pipeline/system-identity-switch.d.ts +4 -2
  472. package/dist/pipeline/system-identity-switch.js +51 -36
  473. package/dist/pipeline/typed-append-event.d.ts +2 -0
  474. package/dist/pipeline/typed-append-event.js +4 -0
  475. package/dist/pipeline/write-origin.js +2 -2
  476. package/dist/pipeline/write-result-masking.d.ts +1 -1
  477. package/dist/random/index.d.ts +1 -2
  478. package/dist/random/index.js +1 -2
  479. package/dist/rate-limit/bucket.d.ts +2 -1
  480. package/dist/rate-limit/middleware.js +2 -1
  481. package/dist/redis/index.d.ts +3 -4
  482. package/dist/redis/index.js +2 -2
  483. package/dist/schema-cli/apply-command.js +5 -2
  484. package/dist/schema-cli/baseline-command.js +7 -2
  485. package/dist/schema-cli/generate-command.js +7 -9
  486. package/dist/schema-cli/shared.d.ts +4 -0
  487. package/dist/schema-cli/shared.js +21 -2
  488. package/dist/schema-cli/status-command.js +8 -2
  489. package/dist/schema-cli/validate-command.js +52 -4
  490. package/dist/schema-cli.d.ts +0 -1
  491. package/dist/search/configure-tenant-index.d.ts +1 -3
  492. package/dist/search/configure-tenant-index.js +0 -4
  493. package/dist/search/index.d.ts +1 -4
  494. package/dist/search/index.js +0 -2
  495. package/dist/search/meilisearch-adapter-internals.d.ts +8 -0
  496. package/dist/search/meilisearch-adapter-internals.js +9 -0
  497. package/dist/search/meilisearch-adapter.d.ts +1 -8
  498. package/dist/search/meilisearch-adapter.js +6 -7
  499. package/dist/search/meilisearch-peer.d.ts +2 -0
  500. package/dist/search/meilisearch-peer.js +5 -0
  501. package/dist/search/reindex-entity.js +93 -87
  502. package/dist/secrets/index.d.ts +3 -4
  503. package/dist/secrets/index.js +2 -3
  504. package/dist/seeding/index.d.ts +2 -2
  505. package/dist/seeding/index.js +1 -2
  506. package/dist/time/index.d.ts +2 -2
  507. package/dist/time/index.js +1 -1
  508. package/dist/time/tz-context.d.ts +0 -5
  509. package/dist/time/tz-context.js +0 -9
  510. package/dist/ui-types/index.d.ts +8 -11
  511. package/dist/ui-types/index.js +3 -3
  512. package/dist/upgrade-changelog.d.ts +3 -2
  513. package/dist/upgrade-changelog.js +12 -8
  514. package/dist/upgrade-cli-internals.d.ts +8 -0
  515. package/dist/upgrade-cli-internals.js +63 -0
  516. package/dist/upgrade-cli.d.ts +1 -9
  517. package/dist/upgrade-cli.js +10 -64
  518. package/dist/utils/import-optional-peer.d.ts +6 -0
  519. package/dist/utils/import-optional-peer.js +19 -0
  520. package/dist/utils/index.d.ts +1 -4
  521. package/dist/utils/index.js +1 -4
  522. package/package.json +22 -18
  523. package/src/changes.json +206 -0
  524. package/dist/crypto/request-kms-cache.d.ts +0 -8
  525. package/dist/crypto/request-kms-cache.js +0 -21
  526. package/dist/engine/codemod/index.d.ts +0 -2
  527. package/dist/engine/codemod/index.js +0 -1
  528. package/dist/engine/codemod/pipeline-codemod.d.ts +0 -50
  529. package/dist/engine/codemod/pipeline-codemod.js +0 -536
  530. package/dist/engine/feature-ast/entity-field-types.d.ts +0 -13
  531. package/dist/engine/feature-ast/entity-field-types.js +0 -35
  532. package/dist/engine/feature-ast/extractors/ai-steps.d.ts +0 -6
  533. package/dist/engine/feature-ast/extractors/ai-steps.js +0 -254
  534. package/dist/engine/feature-ast/extractors/events.d.ts +0 -5
  535. package/dist/engine/feature-ast/extractors/events.js +0 -275
  536. package/dist/engine/feature-ast/extractors/handlers.d.ts +0 -24
  537. package/dist/engine/feature-ast/extractors/handlers.js +0 -358
  538. package/dist/engine/feature-ast/extractors/hooks.d.ts +0 -24
  539. package/dist/engine/feature-ast/extractors/hooks.js +0 -248
  540. package/dist/engine/feature-ast/extractors/index.d.ts +0 -14
  541. package/dist/engine/feature-ast/extractors/index.js +0 -13
  542. package/dist/engine/feature-ast/extractors/jobs-routes.d.ts +0 -7
  543. package/dist/engine/feature-ast/extractors/jobs-routes.js +0 -145
  544. package/dist/engine/feature-ast/extractors/projections-screens.d.ts +0 -10
  545. package/dist/engine/feature-ast/extractors/projections-screens.js +0 -195
  546. package/dist/engine/feature-ast/extractors/resolve-import.d.ts +0 -21
  547. package/dist/engine/feature-ast/extractors/resolve-import.js +0 -180
  548. package/dist/engine/feature-ast/extractors/round1.d.ts +0 -11
  549. package/dist/engine/feature-ast/extractors/round1.js +0 -87
  550. package/dist/engine/feature-ast/extractors/round2.d.ts +0 -7
  551. package/dist/engine/feature-ast/extractors/round2.js +0 -191
  552. package/dist/engine/feature-ast/extractors/round3.d.ts +0 -23
  553. package/dist/engine/feature-ast/extractors/round3.js +0 -292
  554. package/dist/engine/feature-ast/extractors/round5.d.ts +0 -9
  555. package/dist/engine/feature-ast/extractors/round5.js +0 -68
  556. package/dist/engine/feature-ast/extractors/round6.d.ts +0 -4
  557. package/dist/engine/feature-ast/extractors/round6.js +0 -17
  558. package/dist/engine/feature-ast/extractors/shared.d.ts +0 -94
  559. package/dist/engine/feature-ast/extractors/shared.js +0 -343
  560. package/dist/engine/feature-ast/index.d.ts +0 -16
  561. package/dist/engine/feature-ast/index.js +0 -10
  562. package/dist/engine/feature-ast/parse.d.ts +0 -31
  563. package/dist/engine/feature-ast/parse.js +0 -485
  564. package/dist/engine/feature-ast/patch.d.ts +0 -212
  565. package/dist/engine/feature-ast/patch.js +0 -611
  566. package/dist/engine/feature-ast/patcher.d.ts +0 -217
  567. package/dist/engine/feature-ast/patcher.js +0 -281
  568. package/dist/engine/feature-ast/pattern-change-schema.d.ts +0 -1238
  569. package/dist/engine/feature-ast/pattern-change-schema.js +0 -1072
  570. package/dist/engine/feature-ast/pattern-id-matchers.d.ts +0 -7
  571. package/dist/engine/feature-ast/pattern-id-matchers.js +0 -211
  572. package/dist/engine/feature-ast/pattern-id-schema.d.ts +0 -251
  573. package/dist/engine/feature-ast/pattern-id-schema.js +0 -166
  574. package/dist/engine/feature-ast/patterns.d.ts +0 -322
  575. package/dist/engine/feature-ast/patterns.js +0 -107
  576. package/dist/engine/feature-ast/render.d.ts +0 -47
  577. package/dist/engine/feature-ast/render.js +0 -666
  578. package/dist/engine/feature-ast/source-location.d.ts +0 -17
  579. package/dist/engine/feature-ast/source-location.js +0 -27
  580. package/dist/engine/pattern-library/index.d.ts +0 -2
  581. package/dist/engine/pattern-library/index.js +0 -3
  582. package/dist/engine/pattern-library/library.d.ts +0 -14
  583. package/dist/engine/pattern-library/library.js +0 -94
  584. package/dist/engine/pattern-library/mixed-schemas.d.ts +0 -16
  585. package/dist/engine/pattern-library/mixed-schemas.js +0 -559
  586. package/dist/engine/pattern-library/opaque-schemas.d.ts +0 -7
  587. package/dist/engine/pattern-library/opaque-schemas.js +0 -115
  588. package/dist/engine/pattern-library/shared-fields.d.ts +0 -122
  589. package/dist/engine/pattern-library/shared-fields.js +0 -88
  590. package/dist/engine/pattern-library/static-schemas.d.ts +0 -21
  591. package/dist/engine/pattern-library/static-schemas.js +0 -487
  592. package/dist/engine/pattern-library/types.d.ts +0 -158
  593. package/dist/engine/pattern-library/types.js +0 -36
  594. package/dist/engine/resolve-config-or-param.d.ts +0 -18
  595. package/dist/engine/resolve-config-or-param.js +0 -76
  596. package/src/scripts/codemod/README.md +0 -187
  597. package/src/scripts/codemod/codemod-support.ts +0 -334
  598. package/src/scripts/codemod/collect-source-files.ts +0 -48
  599. package/src/scripts/codemod/crypto-shredding-testing-move.ts +0 -119
  600. package/src/scripts/codemod/db-factory.ts +0 -810
  601. package/src/scripts/codemod/feature-factory.ts +0 -429
  602. package/src/scripts/codemod/feature-layout.ts +0 -424
  603. package/src/scripts/codemod/import-extensions.ts +0 -118
  604. package/src/scripts/codemod/migrate-cross-tenant.ts +0 -328
  605. package/src/scripts/codemod/migrate-db-raw.ts +0 -401
  606. package/src/scripts/codemod/migrate-open-to-all.ts +0 -235
  607. package/src/scripts/codemod/object-form.ts +0 -746
  608. package/src/scripts/codemod/package-merge.ts +0 -299
  609. package/src/scripts/codemod/pii-personal-migration.ts +0 -816
  610. package/src/scripts/codemod/remove-engine-payload-casts.ts +0 -318
  611. package/src/scripts/codemod/s3-imports.ts +0 -236
  612. package/src/scripts/codemod/tenant-db-options.ts +0 -454
  613. package/src/scripts/codemod/testing-injection.ts +0 -215
  614. package/src/scripts/codemod/testing-move-targets.ts +0 -161
  615. package/src/scripts/codemod/testing-move.ts +0 -542
  616. 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 {};