@cosmicdrift/kumiko-framework 0.368.0 → 0.370.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 (453) hide show
  1. package/AGENTS.md +14 -1
  2. package/agents/examples/apex-surface-auth.md +2 -1
  3. package/agents/examples/app-config.md +98 -0
  4. package/agents/examples/auth-mfa.md +72 -0
  5. package/agents/examples/compose-stacks.md +188 -0
  6. package/agents/examples/env-composition.md +268 -0
  7. package/agents/examples/host-routing.md +181 -0
  8. package/agents/examples/legal-pages.md +52 -3
  9. package/agents/examples/managed-config.md +1 -0
  10. package/agents/examples/managed-pages.md +1 -0
  11. package/agents/examples/prod-boot-options.md +180 -0
  12. package/agents/examples/relations.md +4 -0
  13. package/agents/examples/secrets-demo.md +4 -2
  14. package/agents/examples/security-baseline.md +20 -17
  15. package/agents/examples.md +6 -1
  16. package/agents/features.md +17 -5
  17. package/dist/api/anonymous-cookie.d.ts +1 -1
  18. package/dist/api/anonymous-live-entities.d.ts +1 -1
  19. package/dist/api/auth-middleware.d.ts +2 -2
  20. package/dist/api/auth-routes.d.ts +7 -7
  21. package/dist/api/extra-route.d.ts +2 -2
  22. package/dist/api/index.d.ts +37 -37
  23. package/dist/api/jwt.d.ts +1 -1
  24. package/dist/api/observability-middleware.d.ts +1 -1
  25. package/dist/api/readiness.d.ts +1 -1
  26. package/dist/api/redis-sse-broker.d.ts +2 -2
  27. package/dist/api/request-context.d.ts +1 -1
  28. package/dist/api/request-id-middleware.d.ts +3 -3
  29. package/dist/api/route-registrars.d.ts +4 -4
  30. package/dist/api/routes.d.ts +1 -1
  31. package/dist/api/server.d.ts +16 -16
  32. package/dist/api/sse-broker.d.ts +1 -1
  33. package/dist/api/sse-route.d.ts +1 -1
  34. package/dist/api/websocket-route.d.ts +3 -3
  35. package/dist/auth/index.d.ts +2 -2
  36. package/dist/compliance/duration-spec.d.ts +2 -2
  37. package/dist/compliance/index.d.ts +6 -6
  38. package/dist/compliance/profiles.d.ts +1 -1
  39. package/dist/config/index.d.ts +44 -0
  40. package/dist/config/index.js +61 -0
  41. package/dist/crypto/blind-index.d.ts +1 -1
  42. package/dist/crypto/event-pii.d.ts +1 -1
  43. package/dist/crypto/in-memory-kms-adapter.d.ts +1 -1
  44. package/dist/crypto/index.d.ts +11 -11
  45. package/dist/crypto/is-self-pii-field.d.ts +1 -1
  46. package/dist/crypto/kms-wiring.d.ts +2 -2
  47. package/dist/crypto/owner-transition-rekey.d.ts +1 -1
  48. package/dist/crypto/pg-kms-adapter.d.ts +1 -1
  49. package/dist/crypto/pii-field-encryption.d.ts +4 -4
  50. package/dist/crypto/request-kms-cache.d.ts +1 -1
  51. package/dist/crypto/subject-resolver.d.ts +3 -3
  52. package/dist/db/apply-entity-event.d.ts +4 -4
  53. package/dist/db/assert-exists-in.d.ts +4 -4
  54. package/dist/db/blind-index-cleanup.d.ts +2 -2
  55. package/dist/db/collect-table-metas.d.ts +2 -2
  56. package/dist/db/compound-types.d.ts +1 -1
  57. package/dist/db/config-seed.d.ts +5 -5
  58. package/dist/db/connection.d.ts +1 -6
  59. package/dist/db/connection.js +15 -4
  60. package/dist/db/dialect.d.ts +1 -1
  61. package/dist/db/eagerload.d.ts +3 -3
  62. package/dist/db/entity-field-encryption.d.ts +3 -3
  63. package/dist/db/entity-field-encryption.js +3 -1
  64. package/dist/db/entity-table-from-registry.d.ts +3 -3
  65. package/dist/db/entity-table-meta.d.ts +3 -3
  66. package/dist/db/event-store-executor-context.d.ts +9 -9
  67. package/dist/db/event-store-executor-read.d.ts +2 -2
  68. package/dist/db/event-store-executor-write.d.ts +2 -2
  69. package/dist/db/event-store-executor.d.ts +8 -8
  70. package/dist/db/feature-table-sources.d.ts +1 -1
  71. package/dist/db/index.d.ts +39 -39
  72. package/dist/db/located-timestamp.d.ts +1 -1
  73. package/dist/db/lock-guard.d.ts +2 -2
  74. package/dist/db/migrate-generator.d.ts +2 -2
  75. package/dist/db/migrate-runner.d.ts +1 -1
  76. package/dist/db/money.d.ts +1 -1
  77. package/dist/db/parent-ref-clause.d.ts +4 -4
  78. package/dist/db/projection-registry-binding.d.ts +1 -1
  79. package/dist/db/queries/advisory-lock.d.ts +1 -1
  80. package/dist/db/queries/backfill-pii.d.ts +2 -2
  81. package/dist/db/queries/ddl.d.ts +1 -1
  82. package/dist/db/queries/entity-read.d.ts +1 -1
  83. package/dist/db/queries/es-ops.d.ts +1 -1
  84. package/dist/db/queries/event-consumer.d.ts +2 -2
  85. package/dist/db/queries/event-store-admin.d.ts +1 -1
  86. package/dist/db/queries/event-store-transfer.d.ts +1 -1
  87. package/dist/db/queries/event-store.d.ts +1 -1
  88. package/dist/db/queries/pii-backfill-state.d.ts +1 -1
  89. package/dist/db/queries/projection-rebuild.d.ts +1 -1
  90. package/dist/db/queries/raw-sql.d.ts +1 -1
  91. package/dist/db/queries/seed-context.d.ts +2 -2
  92. package/dist/db/queries/shadow-swap.d.ts +3 -3
  93. package/dist/db/queries/table-ops.d.ts +1 -1
  94. package/dist/db/queries/test-stack.d.ts +2 -2
  95. package/dist/db/query.d.ts +3 -3
  96. package/dist/db/rebuild-marker.d.ts +1 -1
  97. package/dist/db/reference-data.d.ts +3 -3
  98. package/dist/db/render-ddl.d.ts +1 -1
  99. package/dist/db/replay-migration-sql.d.ts +1 -1
  100. package/dist/db/retired-framework-tables.d.ts +1 -1
  101. package/dist/db/schema-inspection.d.ts +1 -1
  102. package/dist/db/table-builder.d.ts +4 -4
  103. package/dist/db/table-push.d.ts +3 -3
  104. package/dist/db/tenant-db-runner.d.ts +2 -2
  105. package/dist/db/tenant-db.d.ts +7 -9
  106. package/dist/db/tenant-db.js +2 -12
  107. package/dist/derivatives/derivatives-context.d.ts +3 -3
  108. package/dist/derivatives/field-variants.d.ts +1 -1
  109. package/dist/derivatives/index.d.ts +6 -6
  110. package/dist/engine/access.d.ts +1 -1
  111. package/dist/engine/active-membership.d.ts +2 -2
  112. package/dist/engine/boot-validator/access-declarations.d.ts +1 -1
  113. package/dist/engine/boot-validator/access-roles.d.ts +1 -1
  114. package/dist/engine/boot-validator/action-wiring.d.ts +1 -1
  115. package/dist/engine/boot-validator/api-ext.d.ts +1 -1
  116. package/dist/engine/boot-validator/boot-check.d.ts +1 -1
  117. package/dist/engine/boot-validator/card-meta-overflow.d.ts +1 -1
  118. package/dist/engine/boot-validator/config-deps.d.ts +1 -1
  119. package/dist/engine/boot-validator/detail-screens.d.ts +2 -2
  120. package/dist/engine/boot-validator/entity-handler.d.ts +1 -1
  121. package/dist/engine/boot-validator/entity-list-screens.d.ts +1 -1
  122. package/dist/engine/boot-validator/gdpr-storage.d.ts +1 -1
  123. package/dist/engine/boot-validator/global-tenancy.d.ts +1 -1
  124. package/dist/engine/boot-validator/handler-field-references.d.ts +1 -1
  125. package/dist/engine/boot-validator/i18n-keys.d.ts +1 -1
  126. package/dist/engine/boot-validator/index.d.ts +7 -7
  127. package/dist/engine/boot-validator/nav.d.ts +1 -1
  128. package/dist/engine/boot-validator/ownership.d.ts +2 -2
  129. package/dist/engine/boot-validator/parent-ref.d.ts +1 -1
  130. package/dist/engine/boot-validator/pii-retention.d.ts +2 -2
  131. package/dist/engine/boot-validator/projection-list-screens.d.ts +1 -1
  132. package/dist/engine/boot-validator/query-output-columns.d.ts +1 -1
  133. package/dist/engine/boot-validator/query-refs.d.ts +1 -1
  134. package/dist/engine/boot-validator/record-owned.d.ts +1 -1
  135. package/dist/engine/boot-validator/screens.d.ts +2 -2
  136. package/dist/engine/boot-validator/screens.js +29 -0
  137. package/dist/engine/boot-validator/security-baseline.d.ts +1 -1
  138. package/dist/engine/boot-validator/selector-owner-panels.d.ts +1 -1
  139. package/dist/engine/boot-validator/transfer-graph.d.ts +2 -2
  140. package/dist/engine/boot-validator/url-prefill-fields.d.ts +1 -1
  141. package/dist/engine/boot-validator/workspaces.d.ts +1 -1
  142. package/dist/engine/boot-validator.d.ts +1 -1
  143. package/dist/engine/bridge-stub.d.ts +1 -1
  144. package/dist/engine/build-app-schema.d.ts +2 -2
  145. package/dist/engine/build-config-feature-schema.d.ts +5 -5
  146. package/dist/engine/build-config-feature-schema.js +197 -65
  147. package/dist/engine/build-target.d.ts +2 -2
  148. package/dist/engine/changeset-changes.d.ts +1 -1
  149. package/dist/engine/codemod/index.d.ts +2 -2
  150. package/dist/engine/config-helpers.d.ts +1 -1
  151. package/dist/engine/constants.d.ts +1 -1
  152. package/dist/engine/create-app.d.ts +2 -2
  153. package/dist/engine/cross-tenant.d.ts +2 -2
  154. package/dist/engine/dedupe-features.d.ts +1 -1
  155. package/dist/engine/define-feature.d.ts +1 -1
  156. package/dist/engine/define-feature.js +2 -2
  157. package/dist/engine/define-handler.d.ts +4 -4
  158. package/dist/engine/define-step.d.ts +1 -1
  159. package/dist/engine/define-workflow.d.ts +2 -2
  160. package/dist/engine/effective-features.d.ts +1 -1
  161. package/dist/engine/embedded-derived.d.ts +1 -1
  162. package/dist/engine/entity-handlers.d.ts +6 -5
  163. package/dist/engine/entity-handlers.js +6 -3
  164. package/dist/engine/event-def.d.ts +15 -0
  165. package/dist/engine/event-def.js +123 -0
  166. package/dist/engine/event-helpers.d.ts +1 -1
  167. package/dist/engine/extension-names.d.ts +8 -8
  168. package/dist/engine/extension-selector-plugins.d.ts +4 -1
  169. package/dist/engine/extension-selector-plugins.js +14 -0
  170. package/dist/engine/extensions/escape-hatch-usage.d.ts +1 -1
  171. package/dist/engine/extensions/storage-provider.d.ts +1 -1
  172. package/dist/engine/extensions/tenant-data.d.ts +3 -3
  173. package/dist/engine/extensions/tenant-resource.d.ts +2 -2
  174. package/dist/engine/extensions/user-data.d.ts +2 -2
  175. package/dist/engine/factories.d.ts +1 -1
  176. package/dist/engine/feature-ast/extractors/ai-steps.d.ts +2 -2
  177. package/dist/engine/feature-ast/extractors/events.d.ts +2 -2
  178. package/dist/engine/feature-ast/extractors/handlers.d.ts +4 -4
  179. package/dist/engine/feature-ast/extractors/hooks.d.ts +5 -5
  180. package/dist/engine/feature-ast/extractors/index.d.ts +14 -14
  181. package/dist/engine/feature-ast/extractors/jobs-routes.d.ts +3 -3
  182. package/dist/engine/feature-ast/extractors/projections-screens.d.ts +3 -3
  183. package/dist/engine/feature-ast/extractors/round1.d.ts +2 -2
  184. package/dist/engine/feature-ast/extractors/round2.d.ts +2 -2
  185. package/dist/engine/feature-ast/extractors/round3.d.ts +4 -4
  186. package/dist/engine/feature-ast/extractors/round5.d.ts +2 -2
  187. package/dist/engine/feature-ast/extractors/round6.d.ts +2 -2
  188. package/dist/engine/feature-ast/extractors/shared.d.ts +2 -2
  189. package/dist/engine/feature-ast/index.d.ts +16 -16
  190. package/dist/engine/feature-ast/parse.d.ts +2 -2
  191. package/dist/engine/feature-ast/patch.d.ts +1 -1
  192. package/dist/engine/feature-ast/patcher.d.ts +15 -15
  193. package/dist/engine/feature-ast/pattern-change-schema.d.ts +10 -10
  194. package/dist/engine/feature-ast/patterns.d.ts +15 -15
  195. package/dist/engine/feature-ast/render.d.ts +1 -1
  196. package/dist/engine/feature-builder-state.d.ts +5 -5
  197. package/dist/engine/feature-config-events-jobs.d.ts +5 -3
  198. package/dist/engine/feature-config-events-jobs.js +9 -130
  199. package/dist/engine/feature-entity-handlers.d.ts +4 -4
  200. package/dist/engine/feature-entity-handlers.js +11 -5
  201. package/dist/engine/feature-manifest.d.ts +1 -1
  202. package/dist/engine/feature-ui-extensions.d.ts +7 -7
  203. package/dist/engine/feature-ui-extensions.js +2 -2
  204. package/dist/engine/field-access.d.ts +1 -1
  205. package/dist/engine/field-helpers.d.ts +1 -1
  206. package/dist/engine/handler-helpers.d.ts +1 -1
  207. package/dist/engine/index.d.ts +89 -88
  208. package/dist/engine/index.js +1 -0
  209. package/dist/engine/instruction-fields.d.ts +1 -1
  210. package/dist/engine/object-form.d.ts +1 -1
  211. package/dist/engine/object-form.js +5 -6
  212. package/dist/engine/ownership.d.ts +3 -3
  213. package/dist/engine/pattern-library/index.d.ts +2 -2
  214. package/dist/engine/pattern-library/library.d.ts +2 -2
  215. package/dist/engine/pattern-library/mixed-schemas.d.ts +1 -1
  216. package/dist/engine/pattern-library/opaque-schemas.d.ts +1 -1
  217. package/dist/engine/pattern-library/shared-fields.d.ts +1 -1
  218. package/dist/engine/pattern-library/static-schemas.d.ts +1 -1
  219. package/dist/engine/pattern-library/types.d.ts +1 -1
  220. package/dist/engine/personal-data-fields.d.ts +2 -2
  221. package/dist/engine/pipeline.d.ts +2 -2
  222. package/dist/engine/project-app-schema-for-roles.d.ts +1 -1
  223. package/dist/engine/projection-helpers.d.ts +4 -4
  224. package/dist/engine/read-claim.d.ts +1 -1
  225. package/dist/engine/registry-facade.d.ts +2 -2
  226. package/dist/engine/registry-ingest.d.ts +2 -2
  227. package/dist/engine/registry-state.d.ts +2 -2
  228. package/dist/engine/registry-validate.d.ts +3 -3
  229. package/dist/engine/registry.d.ts +1 -1
  230. package/dist/engine/resolve-config-or-param.d.ts +2 -2
  231. package/dist/engine/role-assignment.d.ts +1 -1
  232. package/dist/engine/run-in.d.ts +1 -1
  233. package/dist/engine/run-pipeline.d.ts +3 -3
  234. package/dist/engine/schema-builder.d.ts +1 -1
  235. package/dist/engine/screen-filter-ops.d.ts +1 -1
  236. package/dist/engine/screen-helpers.d.ts +2 -2
  237. package/dist/engine/soft-delete-cleanup.d.ts +2 -2
  238. package/dist/engine/steps/_event-match.d.ts +1 -1
  239. package/dist/engine/steps/_no-return-guard.d.ts +1 -1
  240. package/dist/engine/steps/_read-source.d.ts +4 -4
  241. package/dist/engine/steps/_resolver-utils.d.ts +1 -1
  242. package/dist/engine/steps/aggregate-append-event.d.ts +1 -1
  243. package/dist/engine/steps/aggregate-create.d.ts +2 -2
  244. package/dist/engine/steps/aggregate-update.d.ts +3 -3
  245. package/dist/engine/steps/branch.d.ts +1 -1
  246. package/dist/engine/steps/call-feature.d.ts +2 -2
  247. package/dist/engine/steps/compute.d.ts +1 -1
  248. package/dist/engine/steps/for-each.d.ts +1 -1
  249. package/dist/engine/steps/mail-send.d.ts +1 -1
  250. package/dist/engine/steps/read-find-many.d.ts +2 -2
  251. package/dist/engine/steps/read-find-one.d.ts +2 -2
  252. package/dist/engine/steps/retry.d.ts +1 -1
  253. package/dist/engine/steps/return.d.ts +2 -2
  254. package/dist/engine/steps/unsafe-projection-delete.d.ts +2 -2
  255. package/dist/engine/steps/unsafe-projection-upsert.d.ts +1 -1
  256. package/dist/engine/steps/wait-for-event.d.ts +1 -1
  257. package/dist/engine/steps/wait.d.ts +1 -1
  258. package/dist/engine/steps/webhook-send.d.ts +1 -1
  259. package/dist/engine/strip-disabled-features-from-app-schema.d.ts +4 -4
  260. package/dist/engine/system-user.d.ts +2 -2
  261. package/dist/engine/template-variables.d.ts +1 -1
  262. package/dist/engine/tier-resolver-extension.d.ts +4 -4
  263. package/dist/engine/transfer-adjacency.d.ts +1 -1
  264. package/dist/engine/types/index.d.ts +6 -6
  265. package/dist/engine/validate-projection-allowlist.d.ts +1 -1
  266. package/dist/engine/validation.d.ts +1 -1
  267. package/dist/entrypoint/index.d.ts +12 -12
  268. package/dist/env/dry-run.d.ts +14 -1
  269. package/dist/env/dry-run.js +50 -0
  270. package/dist/env/index.d.ts +54 -16
  271. package/dist/env/index.js +60 -6
  272. package/dist/errors/classes.d.ts +3 -3
  273. package/dist/errors/docs-url.d.ts +1 -1
  274. package/dist/errors/index.d.ts +18 -18
  275. package/dist/errors/member-resolution.d.ts +1 -1
  276. package/dist/errors/serialize.d.ts +2 -2
  277. package/dist/errors/subject-erased.d.ts +1 -1
  278. package/dist/errors/to-kumiko-error.d.ts +1 -1
  279. package/dist/errors/write-error-info.d.ts +1 -1
  280. package/dist/errors/zod-bridge.d.ts +1 -1
  281. package/dist/es-ops/context.d.ts +4 -4
  282. package/dist/es-ops/index.d.ts +4 -4
  283. package/dist/es-ops/operations-schema.d.ts +1 -1
  284. package/dist/es-ops/runner.d.ts +3 -3
  285. package/dist/es-ops/runner.js +9 -1
  286. package/dist/es-ops/types.d.ts +2 -2
  287. package/dist/event-store/admin-api.d.ts +3 -3
  288. package/dist/event-store/archive.d.ts +2 -2
  289. package/dist/event-store/event-store.d.ts +2 -2
  290. package/dist/event-store/events-schema.d.ts +1 -1
  291. package/dist/event-store/index.d.ts +15 -15
  292. package/dist/event-store/provenance-append.d.ts +3 -3
  293. package/dist/event-store/rebuild-dead-letter.d.ts +2 -2
  294. package/dist/event-store/row-to-stored-event.d.ts +2 -2
  295. package/dist/event-store/snapshot.d.ts +2 -2
  296. package/dist/event-store/tenant-db-append.d.ts +2 -2
  297. package/dist/event-store/transfer.d.ts +3 -3
  298. package/dist/event-store/upcaster-dead-letter.d.ts +2 -2
  299. package/dist/event-store/upcaster.d.ts +3 -3
  300. package/dist/files/assert-file-refs-belong-to-tenant.d.ts +2 -2
  301. package/dist/files/bind-pending-file-refs.d.ts +3 -3
  302. package/dist/files/create-file-ref-from-bytes.d.ts +4 -4
  303. package/dist/files/create-file-ref.d.ts +3 -3
  304. package/dist/files/dispose-removed-file-refs.d.ts +2 -2
  305. package/dist/files/feature.d.ts +3 -3
  306. package/dist/files/file-handle.d.ts +1 -1
  307. package/dist/files/file-ref-entity.d.ts +1 -1
  308. package/dist/files/file-ref-table.d.ts +1 -1
  309. package/dist/files/file-routes.d.ts +5 -5
  310. package/dist/files/in-memory-provider.d.ts +1 -1
  311. package/dist/files/index.d.ts +20 -20
  312. package/dist/files/load-save-file-refs.d.ts +2 -2
  313. package/dist/files/local-provider.d.ts +1 -1
  314. package/dist/files/provider-resolver.d.ts +5 -5
  315. package/dist/files/purge-expired-file-ref-bytes.d.ts +2 -2
  316. package/dist/files/record-read-check.d.ts +1 -1
  317. package/dist/files/record-write-check.d.ts +3 -3
  318. package/dist/files/storage-tracking.d.ts +2 -2
  319. package/dist/files/types.d.ts +1 -1
  320. package/dist/files/zip-stream.d.ts +1 -1
  321. package/dist/i18n/index.d.ts +4 -4
  322. package/dist/i18n/mail-registry.d.ts +1 -1
  323. package/dist/i18n/required-surface-keys.d.ts +1 -1
  324. package/dist/i18n/settings-hub-keys.d.ts +1 -1
  325. package/dist/i18n/settings-hub-keys.js +1 -2
  326. package/dist/internal/stack-support.d.ts +12 -12
  327. package/dist/internal/testing.d.ts +4 -4
  328. package/dist/jobs/index.d.ts +2 -2
  329. package/dist/jobs/job-runner.d.ts +1 -1
  330. package/dist/jobs/max-per-tenant.d.ts +1 -1
  331. package/dist/lifecycle/index.d.ts +2 -2
  332. package/dist/lifecycle/lifecycle.d.ts +1 -1
  333. package/dist/lifecycle/signal-handlers.d.ts +1 -1
  334. package/dist/logging/index.d.ts +4 -4
  335. package/dist/logging/pino-logger.d.ts +1 -1
  336. package/dist/logging/utils.d.ts +1 -1
  337. package/dist/migrations/index.d.ts +4 -4
  338. package/dist/migrations/kumiko-drift.d.ts +1 -1
  339. package/dist/migrations/pending-rebuilds.d.ts +5 -5
  340. package/dist/migrations/pii-event-backfill.d.ts +4 -4
  341. package/dist/migrations/projection-table-index.d.ts +1 -1
  342. package/dist/observability/console-provider.d.ts +1 -1
  343. package/dist/observability/context.d.ts +1 -1
  344. package/dist/observability/escape-hatch-report.d.ts +3 -3
  345. package/dist/observability/fallback.d.ts +1 -1
  346. package/dist/observability/index.d.ts +16 -16
  347. package/dist/observability/metric-validator.d.ts +1 -1
  348. package/dist/observability/metrics-handle.d.ts +1 -1
  349. package/dist/observability/metrics-wiring.d.ts +2 -2
  350. package/dist/observability/noop-provider.d.ts +1 -1
  351. package/dist/observability/prometheus-meter.d.ts +1 -1
  352. package/dist/observability/recording-meter.d.ts +1 -1
  353. package/dist/observability/recording-tracer.d.ts +1 -1
  354. package/dist/observability/redis-wrapper.d.ts +1 -1
  355. package/dist/observability/sensitive-filter.d.ts +1 -1
  356. package/dist/observability/standard-metrics.d.ts +1 -1
  357. package/dist/pipeline/active-membership.d.ts +4 -4
  358. package/dist/pipeline/append-event-core.d.ts +3 -3
  359. package/dist/pipeline/auth-claims-resolver.d.ts +2 -2
  360. package/dist/pipeline/cascade-handler.d.ts +3 -3
  361. package/dist/pipeline/dispatch-batch.d.ts +2 -2
  362. package/dist/pipeline/dispatch-query.d.ts +4 -4
  363. package/dist/pipeline/dispatch-shared.d.ts +17 -17
  364. package/dist/pipeline/dispatch-stream.d.ts +2 -2
  365. package/dist/pipeline/dispatch-write.d.ts +4 -4
  366. package/dist/pipeline/dispatcher-utils.d.ts +2 -2
  367. package/dist/pipeline/dispatcher.d.ts +12 -12
  368. package/dist/pipeline/event-consumer-state.d.ts +1 -1
  369. package/dist/pipeline/event-dispatcher-admin.d.ts +1 -1
  370. package/dist/pipeline/event-dispatcher-delivery.d.ts +7 -7
  371. package/dist/pipeline/event-dispatcher.d.ts +7 -7
  372. package/dist/pipeline/event-retention.d.ts +1 -1
  373. package/dist/pipeline/handler-access-error.d.ts +2 -2
  374. package/dist/pipeline/index.d.ts +42 -42
  375. package/dist/pipeline/irreversible-operation-gate.d.ts +1 -1
  376. package/dist/pipeline/lifecycle-pipeline.d.ts +2 -2
  377. package/dist/pipeline/member-read-only-transaction.d.ts +2 -2
  378. package/dist/pipeline/member-reader.d.ts +5 -5
  379. package/dist/pipeline/msp-rebuild.d.ts +4 -4
  380. package/dist/pipeline/multi-stream-apply-context.d.ts +3 -3
  381. package/dist/pipeline/notify-scope.d.ts +3 -3
  382. package/dist/pipeline/pending-gap-ranges.d.ts +2 -2
  383. package/dist/pipeline/pre-handler-gates.d.ts +3 -3
  384. package/dist/pipeline/pre-transaction-reservations.d.ts +4 -4
  385. package/dist/pipeline/projection-rebuild.d.ts +3 -3
  386. package/dist/pipeline/projection-state.d.ts +1 -1
  387. package/dist/pipeline/projections-runner.d.ts +3 -3
  388. package/dist/pipeline/projections-runner.js +3 -4
  389. package/dist/pipeline/system-hooks.d.ts +4 -4
  390. package/dist/pipeline/system-identity-switch.d.ts +3 -3
  391. package/dist/pipeline/tenant-timezone-cache.d.ts +1 -1
  392. package/dist/pipeline/write-origin.d.ts +3 -3
  393. package/dist/pipeline/write-result-masking.d.ts +2 -2
  394. package/dist/random/index.d.ts +2 -2
  395. package/dist/rate-limit/bucket.d.ts +1 -1
  396. package/dist/rate-limit/index.d.ts +3 -3
  397. package/dist/rate-limit/middleware.d.ts +3 -3
  398. package/dist/redis/cache-sync-bus.d.ts +2 -2
  399. package/dist/redis/cache-sync-topics.d.ts +1 -1
  400. package/dist/redis/index.d.ts +8 -8
  401. package/dist/redis/pubsub-signal.d.ts +1 -1
  402. package/dist/schema-cli.d.ts +1 -1
  403. package/dist/schema-cli.js +9 -1
  404. package/dist/search/derive-search-adapter-config.d.ts +2 -2
  405. package/dist/search/in-memory-adapter.d.ts +1 -1
  406. package/dist/search/index.d.ts +6 -6
  407. package/dist/search/meilisearch-adapter.d.ts +2 -2
  408. package/dist/search/purge-subject.d.ts +4 -4
  409. package/dist/search/reindex-entity.d.ts +3 -3
  410. package/dist/secrets/dek-cache.d.ts +1 -1
  411. package/dist/secrets/env-master-key-provider.d.ts +1 -1
  412. package/dist/secrets/env-master-key-provider.js +26 -11
  413. package/dist/secrets/envelope-cipher.d.ts +2 -2
  414. package/dist/secrets/envelope.d.ts +1 -1
  415. package/dist/secrets/index.d.ts +9 -9
  416. package/dist/secrets/rotation.d.ts +1 -1
  417. package/dist/secrets/stored-envelope.d.ts +1 -1
  418. package/dist/seeding/entity-seed.d.ts +1 -1
  419. package/dist/seeding/index.d.ts +3 -3
  420. package/dist/seeding/seed-users.d.ts +1 -1
  421. package/dist/time/index.d.ts +6 -6
  422. package/dist/ui-types/app-schema.d.ts +5 -5
  423. package/dist/ui-types/index.d.ts +23 -23
  424. package/dist/upgrade-cli.js +18 -6
  425. package/dist/utils/index.d.ts +9 -9
  426. package/package.json +19 -66
  427. package/presets/biome-app.json +80 -0
  428. package/presets/tsconfig.app.json +19 -0
  429. package/src/changes.json +84 -2
  430. package/src/scripts/codemod/README.md +18 -0
  431. package/src/scripts/codemod/codemod-support.ts +1 -1
  432. package/src/scripts/codemod/db-factory.ts +1 -1
  433. package/src/scripts/codemod/feature-factory.ts +1 -1
  434. package/src/scripts/codemod/import-extensions.ts +118 -0
  435. package/src/scripts/codemod/migrate-cross-tenant.ts +2 -2
  436. package/src/scripts/codemod/migrate-db-raw.ts +1 -1
  437. package/src/scripts/codemod/migrate-open-to-all.ts +1 -1
  438. package/src/scripts/codemod/object-form.ts +1 -1
  439. package/src/scripts/codemod/s3-imports.ts +1 -1
  440. package/src/scripts/codemod/tenant-db-options.ts +1 -1
  441. package/src/scripts/codemod/testing-move.ts +2 -2
  442. package/dist/db/bun-db-deprecated.d.ts +0 -10
  443. package/dist/db/bun-db-deprecated.js +0 -5
  444. package/dist/stack/index.d.ts +0 -10
  445. package/dist/stack/index.js +0 -11
  446. package/dist/testing/e2e-generator.d.ts +0 -5
  447. package/dist/testing/e2e-generator.js +0 -5
  448. package/dist/testing/handler-context.d.ts +0 -5
  449. package/dist/testing/handler-context.js +0 -5
  450. package/dist/testing/index.d.ts +0 -10
  451. package/dist/testing/index.js +0 -10
  452. package/dist/testing/real-providers.d.ts +0 -5
  453. package/dist/testing/real-providers.js +0 -5
@@ -0,0 +1,123 @@
1
+ import { normalizeEventPiiSubject } from "@cosmicdrift/kumiko-types/handlers";
2
+ import { ZodObject } from "zod";
3
+ import { qn, toKebab } from "./qualified-name.js";
4
+ // A payload field that still holds null/undefined after parsing — the case
5
+ // where an event-PII owner field yields no subject at append time (fw#2776).
6
+ // A `.default(...)` accepts undefined but parses to a value, so it is not
7
+ // absentable.
8
+ function isAbsentable(field) {
9
+ return [null, undefined].some((candidate) => {
10
+ const parsed = field.safeParse(candidate);
11
+ return parsed.success && (parsed.data === null || parsed.data === undefined);
12
+ });
13
+ }
14
+ const NON_STRING_SCHEMA_TYPES = new Set([
15
+ "number",
16
+ "int",
17
+ "boolean",
18
+ "bigint",
19
+ "date",
20
+ "object",
21
+ "array",
22
+ ]);
23
+ // An owner id is resolved through "non-empty string or absent" at append time,
24
+ // so a schema that can never yield a string would make every append throw in
25
+ // prod. Wrappers (optional/nullable/default/...) are looked through.
26
+ function neverYieldsString(field) {
27
+ let current = field;
28
+ for (;;) {
29
+ const def = current._zod.def;
30
+ if (def.innerType === undefined)
31
+ return NON_STRING_SCHEMA_TYPES.has(def.type);
32
+ current = def.innerType;
33
+ }
34
+ }
35
+ function assertOwnerFieldYieldsPresentString(args) {
36
+ const { featureName, eventName, field, ownerField, owner } = args;
37
+ if (neverYieldsString(owner)) {
38
+ throw new Error(`[Feature ${featureName}] defineEvent("${eventName}"): piiFields."${field}" is owned by "${ownerField}", whose payload schema is not a string — the subject id must be a non-empty string, so every append would fail. ` +
39
+ `Use a string owner field, or declare whenAbsent ("tenant" | "self" | "plaintext").`);
40
+ }
41
+ if (isAbsentable(owner)) {
42
+ throw new Error(`[Feature ${featureName}] defineEvent("${eventName}"): piiFields."${field}" is owned by "${ownerField}", which the payload schema allows to be null/undefined. ` +
43
+ `Declare what happens then: { personal: { of: "${ownerField}", whenAbsent: "tenant" } } encrypts under the envelope tenant key, ` +
44
+ `whenAbsent: "self" under the event's own record key, whenAbsent: "plaintext" acknowledges that the value ships unencrypted and cannot be crypto-shredded (fw#2776).`);
45
+ }
46
+ }
47
+ // piiFields misconfiguration is a boot-time error, not a silent
48
+ // plaintext leak: both the pii field and its owner field must exist
49
+ // on the payload schema (checkable when the schema is a ZodObject).
50
+ function validateEventPiiFields(featureName, eventName, schema, piiFields) {
51
+ const shape = schema instanceof ZodObject ? schema.shape : undefined;
52
+ for (const [field, spec] of Object.entries(piiFields)) {
53
+ const normalized = normalizeEventPiiSubject(spec);
54
+ // Only the user form names an owner field — tenant/self subjects come
55
+ // from the write-time envelope (tenantId / aggregateType+aggregateId),
56
+ // so there is no owner-field existence or self-reference check for them.
57
+ if (normalized.kind !== "user") {
58
+ if (shape && !(field in shape)) {
59
+ throw new Error(`[Feature ${featureName}] defineEvent("${eventName}"): piiFields references "${field}" which is not a field of the payload schema.`);
60
+ }
61
+ continue;
62
+ }
63
+ if (field === normalized.ownerField) {
64
+ throw new Error(`[Feature ${featureName}] defineEvent("${eventName}"): piiFields."${field}" cannot use itself as the owner field — the subject id is a plaintext pseudonymous fk, the pii field is the value it owns.`);
65
+ }
66
+ if (normalized.ownerField === "id") {
67
+ throw new Error(`[Feature ${featureName}] defineEvent("${eventName}"): piiFields."${field}" uses owner field "id" — on entities \`of: "id"\` means record-owned, but on events it would encrypt under a phantom user key that a forget never reaches. Use \`personal: "self"\` for a record-owned event field.`);
68
+ }
69
+ for (const required of [field, normalized.ownerField]) {
70
+ if (shape && !(required in shape)) {
71
+ throw new Error(`[Feature ${featureName}] defineEvent("${eventName}"): piiFields references "${required}" which is not a field of the payload schema.`);
72
+ }
73
+ }
74
+ const owner = shape?.[normalized.ownerField];
75
+ if (normalized.whenAbsent === undefined && owner !== undefined) {
76
+ assertOwnerFieldYieldsPresentString({
77
+ featureName,
78
+ eventName,
79
+ field,
80
+ ownerField: normalized.ownerField,
81
+ owner,
82
+ });
83
+ }
84
+ }
85
+ }
86
+ /**
87
+ * The EventDef that `r.defineEvent` returns, built outside a feature's setup
88
+ * callback, so a module can hand the definition to `emitEvent` without the
89
+ * feature instance. Registration still goes through `r.defineEvent`.
90
+ */
91
+ export function createEventDef(options) {
92
+ const { feature, name: eventName, schema } = options;
93
+ // Fail-closed PII stance gate (fw#2558) — runs before anything else so
94
+ // an untyped JS consumer (no compiler to stop it) still can't register
95
+ // an event without declaring whether its payload carries personal data.
96
+ const missingStanceError = () => new Error(`[Feature ${feature}] defineEvent("${eventName}") must declare an explicit PII stance. Pass { piiFields: { <payloadField>: { personal: { of: "<userIdField>" } } } } for payload fields owned by a user (or { personal: "tenant" } / { personal: "self" } for tenant- or record-scoped subjects), or { piiFields: "none" } when the payload holds none.`);
97
+ if (options.piiFields === undefined)
98
+ throw missingStanceError();
99
+ const piiFields = options.piiFields;
100
+ // @cast-boundary runtime-guard — an untyped JS caller can hand
101
+ // anything through `piiFields` (including null), so re-check the
102
+ // shape before trusting it as EventPiiStance: `typeof null === "object"`
103
+ // would otherwise pass through to Object.keys(null) below and throw a
104
+ // raw TypeError instead of this guidance message.
105
+ if (piiFields !== "none" && (typeof piiFields !== "object" || piiFields === null)) {
106
+ throw missingStanceError();
107
+ }
108
+ if (piiFields !== "none" && Object.keys(piiFields).length === 0) {
109
+ throw new Error(`[Feature ${feature}] defineEvent("${eventName}"): piiFields: {} is not a stance — use piiFields: "none" to declare the payload holds no personal data.`);
110
+ }
111
+ if (piiFields !== "none")
112
+ validateEventPiiFields(feature, eventName, schema, piiFields);
113
+ const version = options.version ?? 1;
114
+ if (!Number.isInteger(version) || version < 1) {
115
+ throw new Error(`[Feature ${feature}] defineEvent("${eventName}"): version must be a positive integer, got ${String(version)}`);
116
+ }
117
+ // @cast-boundary engine-bridge — runtime-string mirrors the
118
+ // template-literal-type via QualifiedEventName + toKebab. Both
119
+ // sides are tested (CamelToKebab type-tests + scan-events kebab
120
+ // tests), so the cast is a contract, not a typing-loss.
121
+ const qualified = qn(toKebab(feature), "event", toKebab(eventName));
122
+ return { name: qualified, schema, version, piiFields };
123
+ }
@@ -1,4 +1,4 @@
1
- import type { AppendEventArgs, EventDef, HandlerContext } from "./types/handlers.js";
1
+ import type { AppendEventArgs, EventDef, HandlerContext } from "./types/handlers.ts";
2
2
  export type EmitCtx = Pick<HandlerContext, "unsafeAppendEvent">;
3
3
  export declare function emitEvent<TPayload>(ctx: EmitCtx, eventDef: EventDef<TPayload>, args: {
4
4
  readonly aggregateId: string;
@@ -1,12 +1,12 @@
1
1
  import type { DerivativeRendererPlugin } from "@cosmicdrift/kumiko-types/derivatives-types";
2
- import type { OverlayResolverPlugin } from "../derivatives/derivatives-context.js";
3
- import type { FileProviderPlugin } from "../files/provider-resolver.js";
4
- import type { PrincipalStatusPlugin, TenantLifecycleStatusPlugin } from "./active-membership.js";
5
- import type { TenantDataExtensionHooks } from "./extensions/tenant-data.js";
6
- import type { TenantResourceExtensionHooks } from "./extensions/tenant-resource.js";
7
- import type { UserDataExtensionOptions } from "./extensions/user-data.js";
8
- import type { AssignableFromRole } from "./role-assignment.js";
9
- import { TENANT_TIER_RESOLVER_EXT, type TierResolverPlugin } from "./tier-resolver-extension.js";
2
+ import type { OverlayResolverPlugin } from "../derivatives/derivatives-context.ts";
3
+ import type { FileProviderPlugin } from "../files/provider-resolver.ts";
4
+ import type { PrincipalStatusPlugin, TenantLifecycleStatusPlugin } from "./active-membership.ts";
5
+ import type { TenantDataExtensionHooks } from "./extensions/tenant-data.ts";
6
+ import type { TenantResourceExtensionHooks } from "./extensions/tenant-resource.ts";
7
+ import type { UserDataExtensionOptions } from "./extensions/user-data.ts";
8
+ import type { AssignableFromRole } from "./role-assignment.ts";
9
+ import { TENANT_TIER_RESOLVER_EXT, type TierResolverPlugin } from "./tier-resolver-extension.ts";
10
10
  /**
11
11
  * `userData` — User-Daten-Rights-Hooks (DSGVO Art. 15 + 17 + 20).
12
12
  *
@@ -1,5 +1,8 @@
1
- import type { Registry } from "./types/feature.js";
1
+ import type { Registry } from "./types/feature.ts";
2
+ import type { RegistrarExtensionRegistration } from "./types/index.ts";
2
3
  export declare const SELECTED_EXTENSIONS_QUERY = "config:query:config-value:selected-extensions";
3
4
  export declare const EXTENSION_SELECTOR_HINT_KEY = "config.settings.extensionSelectorHint";
4
5
  export declare function selectablePluginIds(registry: Pick<Registry, "getExtensionUsages">, extensionName: string): string[];
6
+ export declare function isSelectableInSettings(usage: RegistrarExtensionRegistration): boolean;
7
+ export declare function settingsSelectablePluginIds(registry: Pick<Registry, "getExtensionUsages">, extensionName: string): string[];
5
8
  export declare function extensionSelectorTargets(registry: Pick<Registry, "getAllExtensionSelectors">): ReadonlyMap<string, string>;
@@ -5,6 +5,20 @@ export const EXTENSION_SELECTOR_HINT_KEY = "config.settings.extensionSelectorHin
5
5
  export function selectablePluginIds(registry, extensionName) {
6
6
  return [...new Set(registry.getExtensionUsages(extensionName).map((u) => u.entityName))].sort();
7
7
  }
8
+ // A plugin registered with `selectableInSettings: false` (a test inbox) stays a valid
9
+ // stored value for seeds and dev setups, but the generated settings never offer it.
10
+ const SELECTABLE_IN_SETTINGS_OPTION = "selectableInSettings";
11
+ export function isSelectableInSettings(usage) {
12
+ return usage.options?.[SELECTABLE_IN_SETTINGS_OPTION] !== false;
13
+ }
14
+ export function settingsSelectablePluginIds(registry, extensionName) {
15
+ return [
16
+ ...new Set(registry
17
+ .getExtensionUsages(extensionName)
18
+ .filter(isSelectableInSettings)
19
+ .map((u) => u.entityName)),
20
+ ].sort();
21
+ }
8
22
  export function extensionSelectorTargets(registry) {
9
23
  const extensionByKey = new Map();
10
24
  for (const [extensionName, selectorKey] of registry.getAllExtensionSelectors()) {
@@ -1,2 +1,2 @@
1
- import type { RegistrarExtensionRegistration } from "../types/config.js";
1
+ import type { RegistrarExtensionRegistration } from "../types/config.ts";
2
2
  export declare function extensionUsageEscapeHatchReason(usage: Pick<RegistrarExtensionRegistration, "options">): string | undefined;
@@ -1,4 +1,4 @@
1
- import type { TenantResourceDestroyHook, TenantResourceExtensionHooks, TenantResourceHookCtx } from "./tenant-resource.js";
1
+ import type { TenantResourceDestroyHook, TenantResourceExtensionHooks, TenantResourceHookCtx } from "./tenant-resource.ts";
2
2
  export type StorageProviderHookCtx = TenantResourceHookCtx;
3
3
  export type StorageProviderDestroyTenantHook = TenantResourceDestroyHook;
4
4
  export type StorageProviderExtensionHooks = TenantResourceExtensionHooks;
@@ -1,7 +1,7 @@
1
1
  import type { FileProviderResolver } from "@cosmicdrift/kumiko-types/file-provider-resolver-types";
2
- import type { TenantDb } from "../../db/tenant-db.js";
3
- import type { Registry, TenantId } from "../types/index.js";
4
- import type { TenantDestroyHookResult } from "./tenant-resource.js";
2
+ import type { TenantDb } from "../../db/tenant-db.ts";
3
+ import type { Registry, TenantId } from "../types/index.ts";
4
+ import type { TenantDestroyHookResult } from "./tenant-resource.ts";
5
5
  export interface TenantDataHookCtx {
6
6
  readonly db: TenantDb;
7
7
  readonly registry: Registry;
@@ -1,6 +1,6 @@
1
1
  import type { FileProviderResolver } from "@cosmicdrift/kumiko-types/file-provider-resolver-types";
2
- import type { DbRunner } from "../../db/connection.js";
3
- import type { TenantId } from "../types/index.js";
2
+ import type { DbRunner } from "../../db/connection.ts";
3
+ import type { TenantId } from "../types/index.ts";
4
4
  export type TenantDestroyHookResult = {
5
5
  readonly done: true;
6
6
  readonly processed?: number;
@@ -1,5 +1,5 @@
1
- import type { TenantDb } from "../../db/tenant-db.js";
2
- import type { Registry, TenantId } from "../types/index.js";
1
+ import type { TenantDb } from "../../db/tenant-db.ts";
2
+ import type { Registry, TenantId } from "../types/index.ts";
3
3
  type UserId = string;
4
4
  /**
5
5
  * Strategie für den Forget-Pfad pro Entity:
@@ -1,5 +1,5 @@
1
1
  import type { EntityTenancy } from "@cosmicdrift/kumiko-types/tenancy-brand";
2
- import type { BigIntFieldDef, BooleanFieldDef, DateFieldDef, DecimalFieldDef, DerivedFieldDef, EmbeddedFieldDef, EntityDefinition, EntityIndexDef, FieldsMap, FileFieldDef, FilesFieldDef, ImageFieldDef, ImagesFieldDef, JsonbFieldDef, LocatedTimestampFieldDef, LongTextFieldDef, MoneyFieldDef, MultiSelectFieldDef, NumberFieldDef, PersonalAnnotations, PersonalAnnotationsLongText, PersonalAnnotationsNoFind, ResolvedPiiFlags, RetentionDef, SelectFieldDef, TextFieldDef, TimestampFieldDef, TzFieldDef } from "./types/index.js";
2
+ import type { BigIntFieldDef, BooleanFieldDef, DateFieldDef, DecimalFieldDef, DerivedFieldDef, EmbeddedFieldDef, EntityDefinition, EntityIndexDef, FieldsMap, FileFieldDef, FilesFieldDef, ImageFieldDef, ImagesFieldDef, JsonbFieldDef, LocatedTimestampFieldDef, LongTextFieldDef, MoneyFieldDef, MultiSelectFieldDef, NumberFieldDef, PersonalAnnotations, PersonalAnnotationsLongText, PersonalAnnotationsNoFind, ResolvedPiiFlags, RetentionDef, SelectFieldDef, TextFieldDef, TimestampFieldDef, TzFieldDef } from "./types/index.ts";
3
3
  export declare function createTextField<R extends true | false = false>(overrides: Partial<Omit<TextFieldDef, "type" | "required" | keyof ResolvedPiiFlags>> & PersonalAnnotations & {
4
4
  required?: R;
5
5
  }): TextFieldDef & {
@@ -1,6 +1,6 @@
1
1
  import type { CallExpression, SourceFile } from "ts-morph";
2
- import type { AiClassifyPattern, AiExtractPattern, AiGeneratePattern } from "../patterns.js";
3
- import { type ExtractOutput } from "./shared.js";
2
+ import type { AiClassifyPattern, AiExtractPattern, AiGeneratePattern } from "../patterns.ts";
3
+ import { type ExtractOutput } from "./shared.ts";
4
4
  export declare function extractAiGenerate(call: CallExpression, sourceFile: SourceFile): ExtractOutput<AiGeneratePattern>;
5
5
  export declare function extractAiExtract(call: CallExpression, sourceFile: SourceFile): ExtractOutput<AiExtractPattern>;
6
6
  export declare function extractAiClassify(call: CallExpression, sourceFile: SourceFile): ExtractOutput<AiClassifyPattern>;
@@ -1,5 +1,5 @@
1
1
  import type { CallExpression, SourceFile } from "ts-morph";
2
- import type { DefineEventPattern, NotificationPattern } from "../patterns.js";
3
- import { type ExtractOutput } from "./shared.js";
2
+ import type { DefineEventPattern, NotificationPattern } from "../patterns.ts";
3
+ import { type ExtractOutput } from "./shared.ts";
4
4
  export declare function extractDefineEvent(call: CallExpression, sourceFile: SourceFile): ExtractOutput<DefineEventPattern>;
5
5
  export declare function extractNotification(call: CallExpression, sourceFile: SourceFile): ExtractOutput<NotificationPattern>;
@@ -1,8 +1,8 @@
1
1
  import type { CallExpression, SourceFile } from "ts-morph";
2
- import type { AccessRule, AgentHandlerHints, AgentRisk, EscapeHatchDeclaration, PayloadRateLimitOption, RateLimitDeclaration } from "../../types/handlers.js";
3
- import type { QueryHandlerPattern, StreamHandlerPattern, WriteHandlerPattern } from "../patterns.js";
4
- import type { SourceLocation } from "../source-location.js";
5
- import { type ExtractOutput, type RawRefSentinel } from "./shared.js";
2
+ import type { AccessRule, AgentHandlerHints, AgentRisk, EscapeHatchDeclaration, PayloadRateLimitOption, RateLimitDeclaration } from "../../types/handlers.ts";
3
+ import type { QueryHandlerPattern, StreamHandlerPattern, WriteHandlerPattern } from "../patterns.ts";
4
+ import type { SourceLocation } from "../source-location.ts";
5
+ import { type ExtractOutput, type RawRefSentinel } from "./shared.ts";
6
6
  export type ParsedHandlerCall = {
7
7
  readonly source: SourceLocation;
8
8
  readonly handlerName?: string;
@@ -1,9 +1,9 @@
1
1
  import type { CallExpression, Node, SourceFile } from "ts-morph";
2
- import type { LifecycleHookType } from "../../constants.js";
3
- import type { AccessRule, EscapeHatchDeclaration, PayloadRateLimitOption, RateLimitDeclaration } from "../../types/handlers.js";
4
- import type { HookPhase } from "../../types/hooks.js";
5
- import type { AuthClaimsPattern, HookPattern } from "../patterns.js";
6
- import { type ExtractOutput, type RawRefSentinel } from "./shared.js";
2
+ import type { LifecycleHookType } from "../../constants.ts";
3
+ import type { AccessRule, EscapeHatchDeclaration, PayloadRateLimitOption, RateLimitDeclaration } from "../../types/handlers.ts";
4
+ import type { HookPhase } from "../../types/hooks.ts";
5
+ import type { AuthClaimsPattern, HookPattern } from "../patterns.ts";
6
+ import { type ExtractOutput, type RawRefSentinel } from "./shared.ts";
7
7
  export type HeaderReadResult<T> = {
8
8
  readonly kind: "value";
9
9
  readonly value: T;
@@ -1,14 +1,14 @@
1
- export { extractAiClassify, extractAiExtract, extractAiGenerate, } from "./ai-steps.js";
2
- export { extractDefineEvent, extractNotification, } from "./events.js";
3
- export { extractQueryHandler, extractStreamHandler, extractWriteHandler, type ParsedHandlerCall, parseHandlerCall, } from "./handlers.js";
4
- export { extractAuthClaims, extractHook, isHookType, readOptionalAccessRule, readOptionalAdditionalRateLimits, readOptionalPhase, readOptionalRateLimit, } from "./hooks.js";
5
- export { extractHttpRoute, extractJob, isHttpRouteMethod, } from "./jobs-routes.js";
6
- export { collectScreenOpaqueProps, extractMultiStreamProjection, extractProjection, extractScreen, readApplyBodies, readScreenStatic, } from "./projections-screens.js";
7
- export { findImportBindingForLocalName, resolveModuleFile, } from "./resolve-import.js";
8
- export { extractDescribe, extractOptionalRequires, extractReadsConfig, extractRequires, extractSystemScope, extractToggleable, extractUiHints, } from "./round1.js";
9
- export { extractEntity, extractNav, extractRelation, extractWorkspace, } from "./round2.js";
10
- export { extractClaimKey, extractConfig, extractMetric, extractReferenceData, extractSecret, extractSecretNamespace, extractTranslations, extractUseExtension, isClaimKeyType, type NamedOptionsResult, readNamedOptions, } from "./round3.js";
11
- export { extractBootCheck, extractEnvSchema, extractExposesApi, extractExtendsRegistrar, extractStoreTable, extractUsesApi, } from "./round5.js";
12
- export { extractTreeActions } from "./round6.js";
13
- export type { ExtractOutput } from "./shared.js";
14
- export { fail, findFunctionLiteral, isPlainObject, ok, readBooleanProperty, readDataLiteralNode, readNameOrRef, readNameOrRefOrList, readObjectPropertyInitializer, readPropertyKey, readStringLiteralArgs, readVarargsOrArrayProp, resolveSameFileObjectLiteral, } from "./shared.js";
1
+ export { extractAiClassify, extractAiExtract, extractAiGenerate, } from "./ai-steps.ts";
2
+ export { extractDefineEvent, extractNotification, } from "./events.ts";
3
+ export { extractQueryHandler, extractStreamHandler, extractWriteHandler, type ParsedHandlerCall, parseHandlerCall, } from "./handlers.ts";
4
+ export { extractAuthClaims, extractHook, isHookType, readOptionalAccessRule, readOptionalAdditionalRateLimits, readOptionalPhase, readOptionalRateLimit, } from "./hooks.ts";
5
+ export { extractHttpRoute, extractJob, isHttpRouteMethod, } from "./jobs-routes.ts";
6
+ export { collectScreenOpaqueProps, extractMultiStreamProjection, extractProjection, extractScreen, readApplyBodies, readScreenStatic, } from "./projections-screens.ts";
7
+ export { findImportBindingForLocalName, resolveModuleFile, } from "./resolve-import.ts";
8
+ export { extractDescribe, extractOptionalRequires, extractReadsConfig, extractRequires, extractSystemScope, extractToggleable, extractUiHints, } from "./round1.ts";
9
+ export { extractEntity, extractNav, extractRelation, extractWorkspace, } from "./round2.ts";
10
+ export { extractClaimKey, extractConfig, extractMetric, extractReferenceData, extractSecret, extractSecretNamespace, extractTranslations, extractUseExtension, isClaimKeyType, type NamedOptionsResult, readNamedOptions, } from "./round3.ts";
11
+ export { extractBootCheck, extractEnvSchema, extractExposesApi, extractExtendsRegistrar, extractStoreTable, extractUsesApi, } from "./round5.ts";
12
+ export { extractTreeActions } from "./round6.ts";
13
+ export type { ExtractOutput } from "./shared.ts";
14
+ export { fail, findFunctionLiteral, isPlainObject, ok, readBooleanProperty, readDataLiteralNode, readNameOrRef, readNameOrRefOrList, readObjectPropertyInitializer, readPropertyKey, readStringLiteralArgs, readVarargsOrArrayProp, resolveSameFileObjectLiteral, } from "./shared.ts";
@@ -1,7 +1,7 @@
1
1
  import type { CallExpression, SourceFile } from "ts-morph";
2
- import type { HttpRouteMethod } from "../../types/http-route.js";
3
- import type { HttpRoutePattern, JobPattern } from "../patterns.js";
4
- import { type ExtractOutput } from "./shared.js";
2
+ import type { HttpRouteMethod } from "../../types/http-route.ts";
3
+ import type { HttpRoutePattern, JobPattern } from "../patterns.ts";
4
+ import { type ExtractOutput } from "./shared.ts";
5
5
  export declare function isHttpRouteMethod(value: string): value is HttpRouteMethod;
6
6
  export declare function extractJob(call: CallExpression, sourceFile: SourceFile): ExtractOutput<JobPattern>;
7
7
  export declare function extractHttpRoute(call: CallExpression, sourceFile: SourceFile): ExtractOutput<HttpRoutePattern>;
@@ -1,7 +1,7 @@
1
1
  import type { CallExpression, Node, SourceFile } from "ts-morph";
2
- import type { MultiStreamProjectionPattern, ProjectionPattern, ScreenPattern } from "../patterns.js";
3
- import type { SourceLocation } from "../source-location.js";
4
- import { type ExtractOutput } from "./shared.js";
2
+ import type { MultiStreamProjectionPattern, ProjectionPattern, ScreenPattern } from "../patterns.ts";
3
+ import type { SourceLocation } from "../source-location.ts";
4
+ import { type ExtractOutput } from "./shared.ts";
5
5
  export declare function readApplyBodies(defObj: ReturnType<Node["asKind"]>, sourceFile: SourceFile): Record<string, SourceLocation> | undefined;
6
6
  export declare function extractProjection(call: CallExpression, sourceFile: SourceFile): ExtractOutput<ProjectionPattern>;
7
7
  export declare function extractMultiStreamProjection(call: CallExpression, sourceFile: SourceFile): ExtractOutput<MultiStreamProjectionPattern>;
@@ -1,6 +1,6 @@
1
1
  import type { CallExpression, SourceFile } from "ts-morph";
2
- import type { DescribePattern, OptionalRequiresPattern, ReadsConfigPattern, RequiresPattern, SystemScopePattern, ToggleablePattern, UiHintsPattern } from "../patterns.js";
3
- import { type ExtractOutput } from "./shared.js";
2
+ import type { DescribePattern, OptionalRequiresPattern, ReadsConfigPattern, RequiresPattern, SystemScopePattern, ToggleablePattern, UiHintsPattern } from "../patterns.ts";
3
+ import { type ExtractOutput } from "./shared.ts";
4
4
  export declare function extractRequires(call: CallExpression, sourceFile: SourceFile): ExtractOutput<RequiresPattern>;
5
5
  export declare function extractOptionalRequires(call: CallExpression, sourceFile: SourceFile): ExtractOutput<OptionalRequiresPattern>;
6
6
  export declare function extractReadsConfig(call: CallExpression, sourceFile: SourceFile): ExtractOutput<ReadsConfigPattern>;
@@ -1,6 +1,6 @@
1
1
  import type { CallExpression, SourceFile } from "ts-morph";
2
- import type { EntityPattern, NavPattern, RelationPattern, WorkspacePattern } from "../patterns.js";
3
- import { type ExtractOutput } from "./shared.js";
2
+ import type { EntityPattern, NavPattern, RelationPattern, WorkspacePattern } from "../patterns.ts";
3
+ import { type ExtractOutput } from "./shared.ts";
4
4
  export declare function extractEntity(call: CallExpression, sourceFile: SourceFile): ExtractOutput<EntityPattern>;
5
5
  export declare function extractRelation(call: CallExpression, sourceFile: SourceFile): ExtractOutput<RelationPattern>;
6
6
  export declare function extractNav(call: CallExpression, sourceFile: SourceFile): ExtractOutput<NavPattern>;
@@ -1,8 +1,8 @@
1
1
  import type { CallExpression, SourceFile } from "ts-morph";
2
- import type { ClaimKeyType } from "../../types/handlers.js";
3
- import type { ParseError } from "../parse.js";
4
- import type { ClaimKeyPattern, ConfigPattern, MetricPattern, ReferenceDataPattern, SecretNamespacePattern, SecretPattern, TranslationsPattern, UseExtensionPattern } from "../patterns.js";
5
- import { type ExtractOutput, type ReadDataLiteralOptions } from "./shared.js";
2
+ import type { ClaimKeyType } from "../../types/handlers.ts";
3
+ import type { ParseError } from "../parse.ts";
4
+ import type { ClaimKeyPattern, ConfigPattern, MetricPattern, ReferenceDataPattern, SecretNamespacePattern, SecretPattern, TranslationsPattern, UseExtensionPattern } from "../patterns.ts";
5
+ import { type ExtractOutput, type ReadDataLiteralOptions } from "./shared.ts";
6
6
  export type NamedOptionsResult = {
7
7
  readonly kind: "ok";
8
8
  readonly name: string;
@@ -1,6 +1,6 @@
1
1
  import type { CallExpression, SourceFile } from "ts-morph";
2
- import type { EnvSchemaPattern, ExposesApiPattern, ExtendsRegistrarPattern, UsesApiPattern } from "../patterns.js";
3
- import { type ExtractOutput } from "./shared.js";
2
+ import type { EnvSchemaPattern, ExposesApiPattern, ExtendsRegistrarPattern, UsesApiPattern } from "../patterns.ts";
3
+ import { type ExtractOutput } from "./shared.ts";
4
4
  export declare function extractEnvSchema(call: CallExpression, sourceFile: SourceFile): ExtractOutput<EnvSchemaPattern>;
5
5
  export declare function extractExtendsRegistrar(call: CallExpression, sourceFile: SourceFile): ExtractOutput<ExtendsRegistrarPattern>;
6
6
  export declare function extractUsesApi(call: CallExpression, sourceFile: SourceFile): ExtractOutput<UsesApiPattern>;
@@ -1,4 +1,4 @@
1
1
  import type { CallExpression, SourceFile } from "ts-morph";
2
- import type { TreeActionsPattern } from "../patterns.js";
3
- import { type ExtractOutput } from "./shared.js";
2
+ import type { TreeActionsPattern } from "../patterns.ts";
3
+ import { type ExtractOutput } from "./shared.ts";
4
4
  export declare function extractTreeActions(call: CallExpression, sourceFile: SourceFile): ExtractOutput<TreeActionsPattern>;
@@ -1,6 +1,6 @@
1
1
  import type { CallExpression, ObjectLiteralExpression } from "ts-morph";
2
2
  import { Node } from "ts-morph";
3
- import type { ParseError } from "../parse.js";
3
+ import type { ParseError } from "../parse.ts";
4
4
  export type ExtractOutput<TPattern> = {
5
5
  readonly kind: "pattern";
6
6
  readonly pattern: TPattern;
@@ -51,7 +51,7 @@ export declare function readStringOrRaw(node: Node): string | RawRefSentinel | u
51
51
  * — see #1009).
52
52
  */
53
53
  export declare function readStringOrRawArgs(call: CallExpression): readonly (string | RawRefSentinel)[] | undefined;
54
- export { isPlainObject } from "../../../utils/is-plain-object.js";
54
+ export { isPlainObject } from "../../../utils/is-plain-object.ts";
55
55
  export declare function readPropertyKey(propAssign: import("ts-morph").PropertyAssignment): string;
56
56
  /**
57
57
  * Resolved name plus, when the source node was an identifier rather than
@@ -1,16 +1,16 @@
1
- export type { FormFieldLabel, FormFieldSpec, FormInputType, PatternCategory, PatternFormSchema, } from "../pattern-library/index.js";
2
- export { getPatternSchema, groupByCategory, PATTERN_LIBRARY } from "../pattern-library/index.js";
3
- export type { ParseError, ParseResult } from "./parse.js";
4
- export { parseFeatureFile, parseSourceFile } from "./parse.js";
5
- export type { HandlerHeaderUpdate, PatternChange, PatternId, QueryHandlerHeaderKey, StreamHandlerHeaderKey, WriteHandlerHeaderKey, } from "./patch.js";
6
- export { addPattern, applyChanges, removePattern, replacePattern, SINGLETON_KINDS, updatePattern, } from "./patch.js";
7
- export type { AddAuthClaimsArgs, AddClaimKeyArgs, AddConfigArgs, AddDefineEventArgs, AddEntityArgs, AddHookArgs, AddHttpRouteArgs, AddJobArgs, AddMetricArgs, AddMultiStreamProjectionArgs, AddNavArgs, AddNotificationArgs, AddOptionalRequiresArgs, AddProjectionArgs, AddQueryHandlerArgs, AddReadsConfigArgs, AddReferenceDataArgs, AddRelationArgs, AddRequiresArgs, AddScreenArgs, AddSecretArgs, AddStreamHandlerArgs, AddToggleableArgs, AddTranslationsArgs, AddUseExtensionArgs, AddWorkspaceArgs, AddWriteHandlerArgs, FeaturePatcher, } from "./patcher.js";
8
- export { createFeaturePatcher } from "./patcher.js";
9
- export type { PatternChangeIssue, PatternChangesParseResult } from "./pattern-change-schema.js";
10
- export { parsePatternChanges } from "./pattern-change-schema.js";
11
- export type { AuthClaimsPattern, ClaimKeyPattern, ConfigPattern, DefineEventPattern, Editability, EntityPattern, ExtendsRegistrarPattern, FeaturePattern, FeaturePatternKind, HookPattern, HttpRoutePattern, JobPattern, MetricPattern, MultiStreamProjectionPattern, NavPattern, NotificationPattern, OptionalRequiresPattern, ProjectionPattern, QueryHandlerPattern, ReadsConfigPattern, ReferenceDataPattern, RelationPattern, RequiresPattern, ScreenPattern, SecretNamespacePattern, SecretPattern, StreamHandlerPattern, SystemScopePattern, ToggleablePattern, TranslationsPattern, UnknownPattern, UseExtensionPattern, WorkspacePattern, WriteHandlerPattern, } from "./patterns.js";
12
- export { getEditability } from "./patterns.js";
13
- export type { RenderFeatureFileInput } from "./render.js";
14
- export { FEATURE_FILE_VERSION, renderFeatureFile, renderPattern, renderValue, VERSION_HEADER, } from "./render.js";
15
- export type { SourceLocation, SourcePosition } from "./source-location.js";
16
- export { sourceLocationFromNode } from "./source-location.js";
1
+ export type { FormFieldLabel, FormFieldSpec, FormInputType, PatternCategory, PatternFormSchema, } from "../pattern-library/index.ts";
2
+ export { getPatternSchema, groupByCategory, PATTERN_LIBRARY } from "../pattern-library/index.ts";
3
+ export type { ParseError, ParseResult } from "./parse.ts";
4
+ export { parseFeatureFile, parseSourceFile } from "./parse.ts";
5
+ export type { HandlerHeaderUpdate, PatternChange, PatternId, QueryHandlerHeaderKey, StreamHandlerHeaderKey, WriteHandlerHeaderKey, } from "./patch.ts";
6
+ export { addPattern, applyChanges, removePattern, replacePattern, SINGLETON_KINDS, updatePattern, } from "./patch.ts";
7
+ export type { AddAuthClaimsArgs, AddClaimKeyArgs, AddConfigArgs, AddDefineEventArgs, AddEntityArgs, AddHookArgs, AddHttpRouteArgs, AddJobArgs, AddMetricArgs, AddMultiStreamProjectionArgs, AddNavArgs, AddNotificationArgs, AddOptionalRequiresArgs, AddProjectionArgs, AddQueryHandlerArgs, AddReadsConfigArgs, AddReferenceDataArgs, AddRelationArgs, AddRequiresArgs, AddScreenArgs, AddSecretArgs, AddStreamHandlerArgs, AddToggleableArgs, AddTranslationsArgs, AddUseExtensionArgs, AddWorkspaceArgs, AddWriteHandlerArgs, FeaturePatcher, } from "./patcher.ts";
8
+ export { createFeaturePatcher } from "./patcher.ts";
9
+ export type { PatternChangeIssue, PatternChangesParseResult } from "./pattern-change-schema.ts";
10
+ export { parsePatternChanges } from "./pattern-change-schema.ts";
11
+ export type { AuthClaimsPattern, ClaimKeyPattern, ConfigPattern, DefineEventPattern, Editability, EntityPattern, ExtendsRegistrarPattern, FeaturePattern, FeaturePatternKind, HookPattern, HttpRoutePattern, JobPattern, MetricPattern, MultiStreamProjectionPattern, NavPattern, NotificationPattern, OptionalRequiresPattern, ProjectionPattern, QueryHandlerPattern, ReadsConfigPattern, ReferenceDataPattern, RelationPattern, RequiresPattern, ScreenPattern, SecretNamespacePattern, SecretPattern, StreamHandlerPattern, SystemScopePattern, ToggleablePattern, TranslationsPattern, UnknownPattern, UseExtensionPattern, WorkspacePattern, WriteHandlerPattern, } from "./patterns.ts";
12
+ export { getEditability } from "./patterns.ts";
13
+ export type { RenderFeatureFileInput } from "./render.ts";
14
+ export { FEATURE_FILE_VERSION, renderFeatureFile, renderPattern, renderValue, VERSION_HEADER, } from "./render.ts";
15
+ export type { SourceLocation, SourcePosition } from "./source-location.ts";
16
+ export { sourceLocationFromNode } from "./source-location.ts";
@@ -1,6 +1,6 @@
1
1
  import type { SourceFile } from "ts-morph";
2
- import type { FeaturePattern } from "./patterns.js";
3
- import { type SourceLocation } from "./source-location.js";
2
+ import type { FeaturePattern } from "./patterns.ts";
3
+ import { type SourceLocation } from "./source-location.ts";
4
4
  export type ParseError = {
5
5
  readonly methodName: string;
6
6
  readonly source: SourceLocation;
@@ -1,5 +1,5 @@
1
1
  import { type SourceFile } from "ts-morph";
2
- import type { FeaturePattern, QueryHandlerPattern, StreamHandlerPattern, WriteHandlerPattern } from "./patterns.js";
2
+ import type { FeaturePattern, QueryHandlerPattern, StreamHandlerPattern, WriteHandlerPattern } from "./patterns.ts";
3
3
  /**
4
4
  * Identifier used by replace/remove. Discriminated union: each pattern
5
5
  * kind names the property the patcher must match against. Adding a new
@@ -1,19 +1,19 @@
1
1
  import type { SourceFile } from "ts-morph";
2
- import type { LifecycleHookType } from "../constants.js";
3
- import type { ConfigKeyDefinition, ConfigKeyType, JobDefinition, RunIn, TranslationKeys } from "../types/config.js";
4
- import type { MetricOptions, SecretNamespaceOptions, SecretOptions } from "../types/feature.js";
5
- import type { EntityDefinition } from "../types/fields.js";
6
- import type { AccessRule, ClaimKeyType, EscapeHatchDeclaration, RateLimitOption } from "../types/handlers.js";
7
- import type { HookPhase } from "../types/hooks.js";
8
- import type { HttpRouteMethod } from "../types/http-route.js";
9
- import type { NavDefinition } from "../types/nav.js";
10
- import type { MspErrorMode } from "../types/projection.js";
11
- import type { RelationDefinition } from "../types/relations.js";
12
- import type { ScreenDefinition } from "../types/screen.js";
13
- import type { WorkspaceDefinition } from "../types/workspace.js";
14
- import { type PatternChange, type PatternId } from "./patch.js";
15
- import type { FeaturePattern } from "./patterns.js";
16
- import type { SourceLocation } from "./source-location.js";
2
+ import type { LifecycleHookType } from "../constants.ts";
3
+ import type { ConfigKeyDefinition, ConfigKeyType, JobDefinition, RunIn, TranslationKeys } from "../types/config.ts";
4
+ import type { MetricOptions, SecretNamespaceOptions, SecretOptions } from "../types/feature.ts";
5
+ import type { EntityDefinition } from "../types/fields.ts";
6
+ import type { AccessRule, ClaimKeyType, EscapeHatchDeclaration, RateLimitOption } from "../types/handlers.ts";
7
+ import type { HookPhase } from "../types/hooks.ts";
8
+ import type { HttpRouteMethod } from "../types/http-route.ts";
9
+ import type { NavDefinition } from "../types/nav.ts";
10
+ import type { MspErrorMode } from "../types/projection.ts";
11
+ import type { RelationDefinition } from "../types/relations.ts";
12
+ import type { ScreenDefinition } from "../types/screen.ts";
13
+ import type { WorkspaceDefinition } from "../types/workspace.ts";
14
+ import { type PatternChange, type PatternId } from "./patch.ts";
15
+ import type { FeaturePattern } from "./patterns.ts";
16
+ import type { SourceLocation } from "./source-location.ts";
17
17
  export declare const SYNTHETIC_LOC: SourceLocation;
18
18
  export declare function rawLoc(raw: string): SourceLocation;
19
19
  export type AddEntityArgs = {
@@ -1,14 +1,14 @@
1
1
  import * as z from "zod";
2
- import type { ConfigKeyDefinition, ConfigKeyType, JobDefinition } from "../types/config.js";
3
- import type { MetricOptions, SecretNamespaceOptions, SecretOptions } from "../types/feature.js";
4
- import type { EntityDefinition } from "../types/fields.js";
5
- import type { NavDefinition } from "../types/nav.js";
6
- import type { RelationDefinition } from "../types/relations.js";
7
- import type { ScreenDefinition } from "../types/screen.js";
8
- import type { TreeActionDef } from "../types/tree-node.js";
9
- import type { WorkspaceDefinition } from "../types/workspace.js";
10
- import type { PatternChange } from "./patch.js";
11
- import type { SourceLocation } from "./source-location.js";
2
+ import type { ConfigKeyDefinition, ConfigKeyType, JobDefinition } from "../types/config.ts";
3
+ import type { MetricOptions, SecretNamespaceOptions, SecretOptions } from "../types/feature.ts";
4
+ import type { EntityDefinition } from "../types/fields.ts";
5
+ import type { NavDefinition } from "../types/nav.ts";
6
+ import type { RelationDefinition } from "../types/relations.ts";
7
+ import type { ScreenDefinition } from "../types/screen.ts";
8
+ import type { TreeActionDef } from "../types/tree-node.ts";
9
+ import type { WorkspaceDefinition } from "../types/workspace.ts";
10
+ import type { PatternChange } from "./patch.ts";
11
+ import type { SourceLocation } from "./source-location.ts";
12
12
  export type PatternChangeIssue = {
13
13
  readonly path: string;
14
14
  readonly message: string;
@@ -1,18 +1,18 @@
1
- import type { LifecycleHookType } from "../constants.js";
2
- import type { ConfigKeyDefinition, ConfigKeyType, JobDefinition, ReferenceDataDef, RunIn, TranslationKeys } from "../types/config.js";
3
- import type { MetricOptions, SecretNamespaceOptions, SecretOptions } from "../types/feature.js";
4
- import type { EntityDefinition } from "../types/fields.js";
5
- import type { AccessRule, AgentHandlerHints, ClaimKeyType, EscapeHatchDeclaration, PayloadRateLimitOption, RateLimitDeclaration } from "../types/handlers.js";
6
- import type { HookPhase } from "../types/hooks.js";
7
- import type { HttpRouteMethod } from "../types/http-route.js";
8
- import type { NavDefinition } from "../types/nav.js";
9
- import type { MspErrorMode } from "../types/projection.js";
10
- import type { RelationDefinition } from "../types/relations.js";
11
- import type { ScreenDefinition } from "../types/screen.js";
12
- import type { TreeActionDef } from "../types/tree-node.js";
13
- import type { WorkspaceDefinition } from "../types/workspace.js";
14
- import type { RawRefSentinel } from "./extractors/shared.js";
15
- import type { SourceLocation } from "./source-location.js";
1
+ import type { LifecycleHookType } from "../constants.ts";
2
+ import type { ConfigKeyDefinition, ConfigKeyType, JobDefinition, ReferenceDataDef, RunIn, TranslationKeys } from "../types/config.ts";
3
+ import type { MetricOptions, SecretNamespaceOptions, SecretOptions } from "../types/feature.ts";
4
+ import type { EntityDefinition } from "../types/fields.ts";
5
+ import type { AccessRule, AgentHandlerHints, ClaimKeyType, EscapeHatchDeclaration, PayloadRateLimitOption, RateLimitDeclaration } from "../types/handlers.ts";
6
+ import type { HookPhase } from "../types/hooks.ts";
7
+ import type { HttpRouteMethod } from "../types/http-route.ts";
8
+ import type { NavDefinition } from "../types/nav.ts";
9
+ import type { MspErrorMode } from "../types/projection.ts";
10
+ import type { RelationDefinition } from "../types/relations.ts";
11
+ import type { ScreenDefinition } from "../types/screen.ts";
12
+ import type { TreeActionDef } from "../types/tree-node.ts";
13
+ import type { WorkspaceDefinition } from "../types/workspace.ts";
14
+ import type { RawRefSentinel } from "./extractors/shared.ts";
15
+ import type { SourceLocation } from "./source-location.ts";
16
16
  export type EntityPattern = {
17
17
  readonly kind: "entity";
18
18
  readonly source: SourceLocation;
@@ -1,4 +1,4 @@
1
- import type { FeaturePattern } from "./patterns.js";
1
+ import type { FeaturePattern } from "./patterns.ts";
2
2
  export declare const FEATURE_FILE_VERSION: 1;
3
3
  export declare const VERSION_HEADER: string;
4
4
  /**