@cosmicdrift/kumiko-framework 0.289.0 → 0.291.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 (68) hide show
  1. package/package.json +4 -4
  2. package/src/__tests__/field-access.integration.test.ts +7 -3
  3. package/src/__tests__/ownership-where-write-path.integration.test.ts +1 -1
  4. package/src/__tests__/ownership.integration.test.ts +1 -1
  5. package/src/__tests__/pii-personal-migration-report-codemod.test.ts +160 -0
  6. package/src/api/__tests__/server-boot-guards.test.ts +42 -0
  7. package/src/api/__tests__/server-error-logging.test.ts +168 -17
  8. package/src/api/request-context.ts +31 -0
  9. package/src/api/request-id-middleware.ts +2 -1
  10. package/src/api/routes.ts +35 -3
  11. package/src/api/server.ts +30 -4
  12. package/src/changes.json +69 -0
  13. package/src/crypto/__tests__/blind-index.test.ts +1 -1
  14. package/src/crypto/__tests__/event-pii.test.ts +110 -9
  15. package/src/crypto/__tests__/pii-field-encryption.test.ts +2 -2
  16. package/src/crypto/__tests__/subject-resolver.test.ts +25 -4
  17. package/src/crypto/subject-resolver.ts +25 -8
  18. package/src/db/__tests__/blind-index.integration.test.ts +1 -1
  19. package/src/db/__tests__/eagerload.integration.test.ts +12 -2
  20. package/src/db/__tests__/entity-field-encryption.test.ts +2 -2
  21. package/src/db/__tests__/event-store-executor-context.pii-roundtrip.test.ts +1 -1
  22. package/src/db/__tests__/event-store-executor-money-rehydrate.integration.test.ts +7 -2
  23. package/src/db/__tests__/event-store-executor-write-verbs.integration.test.ts +3 -1
  24. package/src/db/__tests__/event-store-executor.integration.test.ts +15 -5
  25. package/src/db/__tests__/list-filter-field-access.integration.test.ts +6 -2
  26. package/src/db/queries/shadow-swap.ts +35 -0
  27. package/src/engine/__tests__/boot-validator-action-wiring.test.ts +32 -0
  28. package/src/engine/__tests__/boot-validator-boot-check.test.ts +1 -1
  29. package/src/engine/__tests__/boot-validator-pii-retention.test.ts +148 -15
  30. package/src/engine/__tests__/boot-validator.test.ts +226 -0
  31. package/src/engine/__tests__/build-app-schema.test.ts +18 -0
  32. package/src/engine/__tests__/engine.test.ts +87 -0
  33. package/src/engine/__tests__/entity-presave-wiring.integration.test.ts +6 -2
  34. package/src/engine/__tests__/factories-long-text.test.ts +6 -1
  35. package/src/engine/__tests__/form-money-currency-types.test.ts +90 -0
  36. package/src/engine/boot-validator/__tests__/record-owned.test.ts +12 -2
  37. package/src/engine/boot-validator/action-wiring.ts +2 -1
  38. package/src/engine/boot-validator/entity-handler.ts +44 -0
  39. package/src/engine/boot-validator/index.ts +7 -2
  40. package/src/engine/boot-validator/pii-retention.ts +8 -0
  41. package/src/engine/boot-validator/screens.ts +54 -12
  42. package/src/engine/create-app.ts +54 -0
  43. package/src/engine/feature-config-events-jobs.ts +19 -0
  44. package/src/engine/index.ts +2 -0
  45. package/src/engine/qualified-name.ts +9 -0
  46. package/src/engine/screen-helpers.ts +1 -0
  47. package/src/event-store/__tests__/backfill-pii.integration.test.ts +32 -8
  48. package/src/event-store/__tests__/event-attribution.integration.test.ts +186 -0
  49. package/src/event-store/event-store.ts +23 -2
  50. package/src/i18n/required-surface-keys.ts +1 -0
  51. package/src/jobs/__tests__/job-last-success.integration.test.ts +135 -0
  52. package/src/jobs/index.ts +7 -1
  53. package/src/jobs/job-runner.ts +104 -6
  54. package/src/logging/utils.ts +14 -1
  55. package/src/observability/index.ts +1 -0
  56. package/src/observability/standard-metrics.ts +20 -0
  57. package/src/pipeline/__tests__/blind-index-rebuild-guard.integration.test.ts +96 -0
  58. package/src/pipeline/active-membership.ts +10 -4
  59. package/src/pipeline/append-event-core.ts +2 -11
  60. package/src/pipeline/dispatch-shared.ts +17 -5
  61. package/src/pipeline/event-dispatcher-delivery.ts +15 -3
  62. package/src/pipeline/projection-rebuild.ts +7 -0
  63. package/src/schema-cli.ts +21 -0
  64. package/src/scripts/codemod/pii-personal-migration.ts +242 -2
  65. package/src/stack/__tests__/ownership-boot-guard.integration.test.ts +1 -1
  66. package/src/testing/__tests__/e2e-generator.test.ts +50 -0
  67. package/src/testing/e2e-generator.ts +4 -3
  68. package/src/ui-types/index.ts +2 -0
@@ -36,6 +36,7 @@ import {
36
36
  parseQn,
37
37
  qn,
38
38
  type Registry,
39
+ sectionFieldSpecs,
39
40
  toKebab,
40
41
  } from "../engine";
41
42
 
@@ -249,7 +250,7 @@ function collectRequiredEditFields(
249
250
  const out: string[] = [];
250
251
  for (const section of screen.layout.sections) {
251
252
  if (!isFieldsEditSection(section)) continue;
252
- for (const rawField of section.fields) {
253
+ for (const rawField of sectionFieldSpecs(section)) {
253
254
  const { field } = normalizeEditField(rawField);
254
255
  const def = entity.fields[field];
255
256
  if (def && "required" in def && def.required === true) {
@@ -287,7 +288,7 @@ function buildEditFillOps(
287
288
  const ops: EditFillOp[] = [];
288
289
  for (const section of screen.layout.sections) {
289
290
  if (!isFieldsEditSection(section)) continue;
290
- for (const raw of section.fields) {
291
+ for (const raw of sectionFieldSpecs(section)) {
291
292
  const { field } = normalizeEditField(raw);
292
293
  const def = entity.fields[field];
293
294
  if (!def) continue;
@@ -335,7 +336,7 @@ function pickIdentifyingForEdit(
335
336
 
336
337
  for (const section of editScreen.layout.sections) {
337
338
  if (!isFieldsEditSection(section)) continue;
338
- for (const rawField of section.fields) {
339
+ for (const rawField of sectionFieldSpecs(section)) {
339
340
  const { field } = normalizeEditField(rawField);
340
341
  if (entity.fields[field]?.type !== "text") continue;
341
342
  if (columns && !columns.has(field)) continue;
@@ -25,6 +25,7 @@ export type { DerivedCellRoundingTarget } from "../engine/embedded-derived";
25
25
  export { computeDerivedCellValue, roundDerivedCellValue } from "../engine/embedded-derived";
26
26
  export type { ParsedRefTarget } from "../engine/parse-ref-target";
27
27
  export { parseRefTarget } from "../engine/parse-ref-target";
28
+ export type { FieldsOrGroupsSection } from "../engine/screen-helpers";
28
29
  export {
29
30
  evalFieldCondition,
30
31
  explicitListScreenId,
@@ -35,6 +36,7 @@ export {
35
36
  normalizeEditField,
36
37
  normalizeListColumn,
37
38
  resolveNavParentScreen,
39
+ sectionFieldSpecs,
38
40
  } from "../engine/screen-helpers";
39
41
  // Entity + field types. EntityDefinition is the canonical shape that
40
42
  // view-model builders iterate; FieldDefinition is the per-field union