@artkit-ai/core 0.1.0 → 0.2.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 (87) hide show
  1. package/dist/adapter.d.ts +119 -0
  2. package/dist/adapter.d.ts.map +1 -0
  3. package/dist/adapter.js +45 -0
  4. package/dist/adapter.js.map +1 -0
  5. package/dist/diff.d.ts +1 -1
  6. package/dist/diff.d.ts.map +1 -1
  7. package/dist/engine.d.ts +29 -23
  8. package/dist/engine.d.ts.map +1 -1
  9. package/dist/engine.js +148 -197
  10. package/dist/engine.js.map +1 -1
  11. package/dist/envelope.d.ts +10 -27
  12. package/dist/envelope.d.ts.map +1 -1
  13. package/dist/envelope.js +8 -20
  14. package/dist/envelope.js.map +1 -1
  15. package/dist/errors.d.ts +1 -1
  16. package/dist/errors.d.ts.map +1 -1
  17. package/dist/errors.js +4 -4
  18. package/dist/errors.js.map +1 -1
  19. package/dist/events.d.ts +2 -10
  20. package/dist/events.d.ts.map +1 -1
  21. package/dist/events.js.map +1 -1
  22. package/dist/i18n.d.ts +8 -14
  23. package/dist/i18n.d.ts.map +1 -1
  24. package/dist/i18n.js +12 -18
  25. package/dist/i18n.js.map +1 -1
  26. package/dist/index.d.ts +2 -2
  27. package/dist/index.d.ts.map +1 -1
  28. package/dist/index.js +2 -2
  29. package/dist/index.js.map +1 -1
  30. package/dist/logger.d.ts +1 -2
  31. package/dist/logger.d.ts.map +1 -1
  32. package/dist/logger.js.map +1 -1
  33. package/dist/memory.d.ts +0 -2
  34. package/dist/memory.d.ts.map +1 -1
  35. package/dist/memory.js +15 -109
  36. package/dist/memory.js.map +1 -1
  37. package/dist/migrations.d.ts +6 -5
  38. package/dist/migrations.d.ts.map +1 -1
  39. package/dist/migrations.js +20 -14
  40. package/dist/migrations.js.map +1 -1
  41. package/dist/projection.d.ts +22 -6
  42. package/dist/projection.d.ts.map +1 -1
  43. package/dist/projection.js +5 -5
  44. package/dist/projection.js.map +1 -1
  45. package/dist/registry.d.ts +17 -16
  46. package/dist/registry.d.ts.map +1 -1
  47. package/dist/registry.js +25 -25
  48. package/dist/registry.js.map +1 -1
  49. package/dist/service.d.ts +19 -51
  50. package/dist/service.d.ts.map +1 -1
  51. package/dist/service.js +119 -404
  52. package/dist/service.js.map +1 -1
  53. package/dist/store.d.ts +12 -61
  54. package/dist/store.d.ts.map +1 -1
  55. package/dist/testing/index.d.ts +10 -9
  56. package/dist/testing/index.d.ts.map +1 -1
  57. package/dist/testing/index.js +75 -136
  58. package/dist/testing/index.js.map +1 -1
  59. package/dist/theme.js +1 -1
  60. package/dist/ui.d.ts +18 -1
  61. package/dist/ui.d.ts.map +1 -1
  62. package/dist/ui.js +5 -3
  63. package/dist/ui.js.map +1 -1
  64. package/package.json +1 -1
  65. package/src/adapter.ts +180 -0
  66. package/src/diff.ts +1 -1
  67. package/src/engine.ts +183 -230
  68. package/src/envelope.ts +11 -29
  69. package/src/errors.ts +4 -4
  70. package/src/events.ts +2 -11
  71. package/src/i18n.ts +14 -20
  72. package/src/index.ts +2 -4
  73. package/src/logger.ts +1 -2
  74. package/src/memory.ts +16 -122
  75. package/src/migrations.ts +24 -18
  76. package/src/projection.ts +25 -7
  77. package/src/registry.ts +45 -41
  78. package/src/service.ts +144 -540
  79. package/src/store.ts +12 -64
  80. package/src/testing/index.ts +89 -164
  81. package/src/theme.ts +1 -1
  82. package/src/ui.ts +24 -4
  83. package/dist/kind.d.ts +0 -156
  84. package/dist/kind.d.ts.map +0 -1
  85. package/dist/kind.js +0 -52
  86. package/dist/kind.js.map +0 -1
  87. package/src/kind.ts +0 -217
@@ -1 +1 @@
1
- {"version":3,"file":"service.js","sourceRoot":"","sources":["../src/service.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"service.js","sourceRoot":"","sources":["../src/service.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,eAAe,EAAoB,cAAc,EAAE,MAAM,aAAa,CAAC;AAChF,OAAO,EAAuC,SAAS,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAC5F,OAAO,EAAE,aAAa,EAAE,sBAAsB,EAAE,MAAM,aAAa,CAAC;AACpE,OAAO,EAAE,cAAc,EAAiB,MAAM,aAAa,CAAC;AAC5D,OAAO,EAAE,CAAC,EAAE,MAAM,WAAW,CAAC;AAC9B,OAAO,EAAkD,YAAY,EAAE,MAAM,aAAa,CAAC;AAC3F,OAAO,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AACjD,OAAO,EAAE,iBAAiB,EAA2C,MAAM,iBAAiB,CAAC;AAE7F,OAAO,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAuG7C;;;GAGG;AACH,MAAM,UAAU,qBAAqB,CAAC,OAA+B;IACnE,MAAM,EAAE,QAAQ,EAAE,KAAK,EAAE,GAAG,OAAO,CAAC;IACpC,MAAM,MAAM,GAAG,OAAO,CAAC,MAAM,IAAI,IAAI,CAAC;IACtC,MAAM,MAAM,GAAG,OAAO,CAAC,MAAM,IAAI,YAAY,CAAC;IAC9C,MAAM,OAAO,GAAG,OAAO,CAAC,OAAO,IAAI,EAAE,CAAC;IACtC,MAAM,MAAM,GACV,OAAO,CAAC,MAAM;QACd,cAAc,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,MAAM,CAAC,KAAK,CAAC,sBAAsB,EAAE,EAAE,IAAI,EAAE,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC;IAE3F,KAAK,UAAU,SAAS,CACtB,MAAsB,EACtB,QAAgC,EAChC,KAAY;QAEZ,IAAI,CAAC,OAAO,CAAC,SAAS;YAAE,OAAO;QAC/B,MAAM,OAAO,GAAG,MAAM,OAAO,CAAC,SAAS,CAAC,MAAM,EAAE,QAAQ,EAAE,KAAK,CAAC,CAAC;QACjE,IAAI,CAAC,OAAO,EAAE,CAAC;YACb,OAAO,CAAC,SAAS,EAAE,CAAC,mBAAmB,EAAE,EAAE,SAAS,EAAE,KAAK,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC;YAC1E,MAAM,IAAI,aAAa,CAAC,mBAAmB,EAAE,CAAC,CAAC,MAAM,EAAE,mBAAmB,EAAE,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC;QAC3F,CAAC;IACH,CAAC;IAED,KAAK,UAAU,IAAI,CAAC,KAAY,EAAE,EAAU;QAC1C,MAAM,KAAK,GAAG,MAAM,KAAK,CAAC,GAAG,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;QACzC,IAAI,CAAC,KAAK,EAAE,CAAC;YACX,MAAM,IAAI,aAAa,CAAC,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE,WAAW,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,EAAE,EAAE,CAAC,EAAE;gBACrF,MAAM,EAAE;oBACN;wBACE,IAAI,EAAE,IAAI;wBACV,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,WAAW,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,EAAE,EAAE,CAAC;wBACzD,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,gBAAgB,CAAC;qBAClC;iBACF;aACF,CAAC,CAAC;QACL,CAAC;QACD,OAAO,QAAQ,CAAC,KAAK,CAAC,CAAC;IACzB,CAAC;IAED,SAAS,QAAQ,CAAC,QAAkB;QAClC,MAAM,OAAO,GAAG,QAAQ,CAAC,GAAG,CAAC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;QACtD,MAAM,MAAM,GAAG,cAAc,CAAC,OAAO,EAAE,QAAQ,CAAC,OAAO,EAAE,QAAQ,CAAC,aAAa,EAAE,MAAM,CAAC,CAAC;QACzF,OAAO,MAAM,CAAC,QAAQ;YACpB,CAAC,CAAC,EAAE,GAAG,QAAQ,EAAE,OAAO,EAAE,MAAM,CAAC,OAAO,EAAE,aAAa,EAAE,MAAM,CAAC,aAAa,EAAE;YAC/E,CAAC,CAAC,QAAQ,CAAC;IACf,CAAC;IAED,SAAS,MAAM,CACb,QAAqD,EACrD,KAAY,EACZ,KAAK,GAAc,EAAE;QAErB,OAAO;YACL,UAAU,EAAE,QAAQ,CAAC,EAAE;YACvB,MAAM,EAAE,QAAQ,CAAC,MAAM;YACvB,OAAO,EAAE,QAAQ,CAAC,OAAO;YACzB,SAAS,EAAE,KAAK,CAAC,KAAK,CAAC,IAAI;YAC3B,GAAG,KAAK;SACT,CAAC;IACJ,CAAC;IAED,KAAK,UAAU,eAAe,CAAC,KAAY,EAAE,EAAU;QACrD,MAAM,IAAI,GAAG,MAAM,KAAK,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;QAC5C,IAAI,CAAC,IAAI;YAAE,OAAO;QAClB,IAAI,IAAI,CAAC,MAAM,CAAC,IAAI,KAAK,KAAK,CAAC,KAAK,CAAC,IAAI,IAAI,IAAI,CAAC,MAAM,CAAC,EAAE,KAAK,KAAK,CAAC,KAAK,CAAC,EAAE;YAAE,OAAO;QACvF,MAAM,IAAI,aAAa,CACrB,QAAQ,EACR,CAAC,CAAC,MAAM,EAAE,QAAQ,EAAE,EAAE,MAAM,EAAE,GAAG,IAAI,CAAC,MAAM,CAAC,IAAI,IAAI,IAAI,CAAC,MAAM,CAAC,EAAE,EAAE,EAAE,SAAS,EAAE,IAAI,CAAC,SAAS,EAAE,CAAC,EACnG;YACE,MAAM,EAAE;gBACN;oBACE,IAAI,EAAE,YAAY;oBAClB,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,QAAQ,EAAE,EAAE,MAAM,EAAE,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,SAAS,EAAE,IAAI,CAAC,SAAS,EAAE,CAAC;oBACrF,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,aAAa,CAAC;iBAC/B;aACF;YACD,OAAO,EAAE,EAAE,SAAS,EAAE,IAAI,CAAC,SAAS,EAAE;SACvC,CACF,CAAC;IACJ,CAAC;IAED,iHAAiH;IACjH,SAAS,UAAU,CAAC,KAAY,EAAE,OAAiB,EAAE,WAAmB;QACtE,IAAI,WAAW,KAAK,OAAO,CAAC,OAAO;YAAE,OAAO;QAC5C,OAAO,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC,CAAC;QAC3C,MAAM,CAAC,IAAI,CAAC;YACV,IAAI,EAAE,mBAAmB;YACzB,UAAU,EAAE,OAAO,CAAC,EAAE;YACtB,WAAW;YACX,cAAc,EAAE,OAAO,CAAC,OAAO;YAC/B,KAAK,EAAE,KAAK,CAAC,KAAK;SACnB,CAAC,CAAC;QACH,MAAM,OAAO,GAAG,CAAC,CAAC,MAAM,EAAE,kBAAkB,EAAE,EAAE,WAAW,EAAE,cAAc,EAAE,OAAO,CAAC,OAAO,EAAE,CAAC,CAAC;QAChG,MAAM,IAAI,aAAa,CAAC,kBAAkB,EAAE,OAAO,EAAE;YACnD,MAAM,EAAE;gBACN;oBACE,IAAI,EAAE,aAAa;oBACnB,OAAO;oBACP,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,uBAAuB,CAAC;iBACzC;aACF;YACD,OAAO,EAAE,EAAE,cAAc,EAAE,OAAO,CAAC,OAAO,EAAE;SAC7C,CAAC,CAAC;IACL,CAAC;IAED,MAAM,OAAO,GAAoB;QAC/B,QAAQ;QACR,MAAM;QAEN,KAAK,CAAC,MAAM,CAAC,KAAK,EAAE,OAAO;YACzB,MAAM,SAAS,CAAC,QAAQ,EAAE,IAAI,EAAE,KAAK,CAAC,CAAC;YACvC,MAAM,OAAO,GAAG,QAAQ,CAAC,GAAG,CAAC,OAAO,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;YACrD,MAAM,KAAK,GAAG,WAAW,CAAC,SAAS,CAAC,YAAY,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC;YACjE,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC;gBACnB,MAAM,IAAI,aAAa,CAAC,iBAAiB,EAAE,CAAC,CAAC,MAAM,EAAE,iBAAiB,CAAC,EAAE;oBACvE,MAAM,EAAE,sBAAsB,CAAC,KAAK,CAAC,KAAK,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,CAAC;iBACpE,CAAC,CAAC;YACL,CAAC;YACD,MAAM,cAAc,GAAG,OAAO,CAAC,MAAM,IAAI,OAAO,CAAC,qBAAqB,IAAI,IAAI,CAAC;YAC/E,MAAM,OAAO,GAAG,OAAO,CAAC,OAAO,IAAI,OAAO,CAAC,cAAc,IAAI,SAAS,CAAC;YACvE,QAAQ,CAAC,KAAK,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;YAChC,MAAM,IAAI,GAAG;gBACX,EAAE,EAAE,EAAE;gBACN,MAAM,EAAE,OAAO,CAAC,MAAM;gBACtB,aAAa,EAAE,OAAO,CAAC,aAAa;gBACpC,OAAO,EAAE,CAAC;gBACV,KAAK,EAAE,KAAK,CAAC,IAAI;gBACjB,MAAM,EAAE,cAAc;gBACtB,OAAO;gBACP,OAAO,EAAE,OAAO,CAAC,OAAO,IAAI,OAAO,CAAC,KAAK,EAAE;aAC5C,CAAC;YACF,6EAA6E;YAC7E,MAAM,OAAO,GAAG,OAAO,CAAC,UAAU,EAAE,MAAM;gBACxC,CAAC,CAAC,MAAM,eAAe,CAAC,QAAQ,EAAE,IAAgB,EAAE,OAAO,CAAC,UAAU,EAAE,EAAE,MAAM,EAAE,CAAC;gBACnF,CAAC,CAAC,SAAS,CAAC;YACd,MAAM,QAAQ,GAAG,OAAO;gBACtB,CAAC,CAAC,EAAE,OAAO,EAAE,OAAO,CAAC,OAAO,EAAE,IAAI,EAAE,OAAO,CAAC,IAAI,EAAE;gBAClD,CAAC,CAAC,cAAc,CAAC,QAAQ,EAAE,OAAO,CAAC,MAAM,EAAE,IAAI,CAAC,OAAO,EAAE,EAAE,MAAM,EAAE,cAAc,EAAE,OAAO,EAAE,CAAC,CAAC;YAChG,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,MAAM,CAAC,KAAK,EAAE;gBACzC,MAAM,EAAE,OAAO,CAAC,MAAM;gBACtB,aAAa,EAAE,OAAO,CAAC,aAAa;gBACpC,KAAK,EAAE,KAAK,CAAC,IAAI;gBACjB,MAAM,EAAE,cAAc;gBACtB,OAAO;gBACP,OAAO,EAAE,QAAQ,CAAC,OAAO;gBACzB,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,OAAO,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;aAChD,CAAC,CAAC;YACH,MAAM,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,kBAAkB,EAAE,QAAQ,EAAE,SAAS,CAAC,QAAQ,CAAC,EAAE,KAAK,EAAE,KAAK,CAAC,KAAK,EAAE,CAAC,CAAC;YAC7F,IAAI,QAAQ,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBAC7B,MAAM,CAAC,IAAI,CAAC;oBACV,IAAI,EAAE,eAAe;oBACrB,UAAU,EAAE,QAAQ,CAAC,EAAE;oBACvB,OAAO,EAAE,QAAQ,CAAC,OAAO;oBACzB,QAAQ,EAAE,QAAQ,CAAC,IAAI,CAAC,MAAM;iBAC/B,CAAC,CAAC;YACL,CAAC;YACD,MAAM,CAAC,IAAI,CAAC,kBAAkB,EAAE,MAAM,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC,CAAC;YACzD,OAAO;gBACL,QAAQ;gBACR,OAAO,EAAE,QAAQ,CAAC,OAAO;gBACzB,WAAW,EAAE,OAAO,EAAE,WAAW,IAAI,EAAE;gBACvC,IAAI,EAAE;oBACJ;wBACE,IAAI,EAAE,OAAO;wBACb,MAAM,EAAE,YAAY,QAAQ,CAAC,EAAE,EAAE;wBACjC,OAAO,EAAE,GAAG,OAAO,CAAC,KAAK,KAAK,QAAQ,CAAC,KAAK,GAAG;qBAChD;iBACF;gBACD,IAAI,EAAE,QAAQ,CAAC,IAAI;aACpB,CAAC;QACJ,CAAC;QAED,KAAK,CAAC,GAAG,CAAC,KAAK,EAAE,EAAE;YACjB,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;YACvC,MAAM,SAAS,CAAC,MAAM,EAAE,SAAS,CAAC,QAAQ,CAAC,EAAE,KAAK,CAAC,CAAC;YACpD,OAAO,QAAQ,CAAC;QAClB,CAAC;QAED,KAAK,CAAC,IAAI,CAAC,KAAK,EAAE,EAAE,EAAE,IAAI,GAAG,EAAE;YAC7B,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;YACvC,MAAM,SAAS,CAAC,MAAM,EAAE,SAAS,CAAC,QAAQ,CAAC,EAAE,KAAK,CAAC,CAAC;YACpD,MAAM,OAAO,GAAG,QAAQ,CAAC,GAAG,CAAC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;YACtD,MAAM,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,OAAgB,EAAE;gBACrD,IAAI,EAAE,IAAI,CAAC,IAAI,IAAI,SAAS;gBAC5B,MAAM,EAAE,QAAQ,CAAC,MAAM;gBACvB,GAAG,CAAC,IAAI,CAAC,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,CAAC;gBAC1D,GAAG,CAAC,IAAI,CAAC,SAAS,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,SAAS,EAAE,IAAI,CAAC,SAAS,EAAE,CAAC;gBACtE,GAAG,CAAC,IAAI,CAAC,MAAM,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE,CAAC;gBAC7D,GAAG,CAAC,IAAI,CAAC,aAAa,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,aAAa,EAAE,IAAI,CAAC,aAAa,EAAE,CAAC;aACnF,CAAC,CAAC;YACH,MAAM,UAAU,GAAe;gBAC7B,IAAI,EAAE,MAAM,CAAC,IAAI;gBACjB,SAAS,EAAE,MAAM,CAAC,SAAS;gBAC3B,GAAG,CAAC,MAAM,CAAC,MAAM,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,CAAC;aAClE,CAAC;YACF,MAAM,MAAM,GAAG,GAAG,OAAO,CAAC,KAAK,KAAK,QAAQ,CAAC,KAAK,UAAU,QAAQ,CAAC,EAAE,aAAa,QAAQ,CAAC,MAAM,cAAc,QAAQ,CAAC,OAAO,aAAa,QAAQ,CAAC,MAAM,GAAG,CAAC;YACjK,IAAI,IAAI,GAAG,GAAG,MAAM,KAAK,iBAAiB,CAAC,QAAQ,CAAC,EAAE,EAAE,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC;YAC3E,IAAI,UAAU,CAAC,SAAS,EAAE,CAAC;gBACzB,IAAI,IAAI,wCAAwC,UAAU,CAAC,MAAM,IAAI,CAAC;YACxE,CAAC;YACD,OAAO,EAAE,QAAQ,EAAE,SAAS,CAAC,QAAQ,CAAC,EAAE,OAAO,EAAE,QAAQ,CAAC,OAAO,EAAE,UAAU,EAAE,IAAI,EAAE,CAAC;QACxF,CAAC;QAED,KAAK,CAAC,KAAK,CAAC,KAAK,EAAE,OAAO;YACxB,MAAM,OAAO,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;YAC3B,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,KAAK,EAAE,OAAO,CAAC,UAAU,CAAC,CAAC;YACtD,MAAM,SAAS,CAAC,OAAO,EAAE,SAAS,CAAC,OAAO,CAAC,EAAE,KAAK,CAAC,CAAC;YACpD,MAAM,eAAe,CAAC,KAAK,EAAE,OAAO,CAAC,EAAE,CAAC,CAAC;YACzC,UAAU,CAAC,KAAK,EAAE,OAAO,EAAE,OAAO,CAAC,WAAW,CAAC,CAAC;YAChD,MAAM,MAAM,GAAG,MAAM,eAAe,CAAC,QAAQ,EAAE,OAAO,EAAE,OAAO,CAAC,UAAU,EAAE,EAAE,MAAM,EAAE,CAAC,CAAC;YACxF,IAAI,SAAmB,CAAC;YACxB,IAAI,CAAC;gBACH,SAAS,GAAG,MAAM,KAAK,CAAC,MAAM,CAAC,KAAK,EAAE,OAAO,CAAC,EAAE,EAAE;oBAChD,WAAW,EAAE,OAAO,CAAC,OAAO;oBAC5B,aAAa,EAAE,MAAM,CAAC,aAAa;oBACnC,OAAO,EAAE,MAAM,CAAC,OAAO;oBACvB,KAAK,EAAE,MAAM,CAAC,KAAK;oBACnB,MAAM,EAAE,MAAM,CAAC,MAAM;oBACrB,OAAO,EAAE,MAAM,CAAC,OAAO;iBACxB,CAAC,CAAC;YACL,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,IAAI,KAAK,YAAY,aAAa;oBAAE,OAAO,CAAC,SAAS,EAAE,CAAC,KAAK,CAAC,IAAI,EAAE,MAAM,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC,CAAC;gBAC5F,MAAM,KAAK,CAAC;YACd,CAAC;YACD,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,OAAO,CAAC;YACtC,MAAM,SAAS,GAAG,MAAM,CAAC,SAAS,EAAE,KAAK,EAAE;gBACzC,cAAc,EAAE,OAAO,CAAC,UAAU,CAAC,MAAM;gBACzC,UAAU,EAAE,QAAQ;aACrB,CAAC,CAAC;YACH,OAAO,CAAC,aAAa,EAAE,CAAC,QAAQ,EAAE,SAAS,CAAC,CAAC;YAC7C,MAAM,CAAC,IAAI,CAAC,oBAAoB,EAAE,SAAS,CAAC,CAAC;YAC7C,MAAM,CAAC,IAAI,CAAC;gBACV,IAAI,EAAE,oBAAoB;gBAC1B,QAAQ,EAAE,SAAS,CAAC,SAAS,CAAC;gBAC9B,KAAK,EAAE,KAAK,CAAC,KAAK;gBAClB,cAAc,EAAE,OAAO,CAAC,UAAU,CAAC,MAAM;gBACzC,IAAI,EAAE,MAAM,CAAC,IAAI;aAClB,CAAC,CAAC;YACH,IAAI,MAAM,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBAC3B,MAAM,CAAC,IAAI,CAAC;oBACV,IAAI,EAAE,eAAe;oBACrB,UAAU,EAAE,SAAS,CAAC,EAAE;oBACxB,OAAO,EAAE,SAAS,CAAC,OAAO;oBAC1B,QAAQ,EAAE,MAAM,CAAC,IAAI,CAAC,MAAM;iBAC7B,CAAC,CAAC;YACL,CAAC;YACD,OAAO;gBACL,QAAQ,EAAE,SAAS;gBACnB,OAAO,EAAE,SAAS,CAAC,OAAO;gBAC1B,WAAW,EAAE,MAAM,CAAC,WAAW;gBAC/B,IAAI,EAAE,MAAM,CAAC,IAAI;gBACjB,IAAI,EAAE,MAAM,CAAC,IAAI;aAClB,CAAC;QACJ,CAAC;QAED,KAAK,CAAC,OAAO,CAAC,KAAK,EAAE,OAAO;YAC1B,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,KAAK,EAAE,OAAO,CAAC,UAAU,CAAC,CAAC;YACtD,MAAM,SAAS,CAAC,MAAM,EAAE,SAAS,CAAC,OAAO,CAAC,EAAE,KAAK,CAAC,CAAC;YACnD,UAAU,CAAC,KAAK,EAAE,OAAO,EAAE,OAAO,CAAC,WAAW,CAAC,CAAC;YAChD,OAAO,eAAe,CAAC,QAAQ,EAAE,OAAO,EAAE,OAAO,CAAC,UAAU,EAAE,EAAE,MAAM,EAAE,CAAC,CAAC;QAC5E,CAAC;QAED,KAAK,CAAC,IAAI,CAAC,KAAK,EAAE,MAAM,GAAG,EAAE,EAAE,IAAI,GAAG,EAAE;YACtC,MAAM,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,KAAK,CAAC,CAAC;YACrC,OAAO,KAAK,CAAC,IAAI,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,CAAC,CAAC;QACzC,CAAC;QAED,KAAK,CAAC,IAAI,CAAC,KAAK,EAAE,EAAE,EAAE,KAAK,GAAG,CAAC,GAAG,MAAM;YACtC,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;YACtC,MAAM,SAAS,CAAC,MAAM,EAAE,SAAS,CAAC,OAAO,CAAC,EAAE,KAAK,CAAC,CAAC;YACnD,OAAO,KAAK,CAAC,IAAI,CAAC,KAAK,EAAE,EAAE,EAAE,KAAK,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;QACnD,CAAC;QAED,MAAM,EAAE,CAAC,KAAK,EAAE,IAAI,EAAE,EAAE,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,EAAE,IAAI,CAAC;QAElD,KAAK,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE;YACrB,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;YACtC,MAAM,SAAS,CAAC,MAAM,EAAE,SAAS,CAAC,OAAO,CAAC,EAAE,KAAK,CAAC,CAAC;YACnD,OAAO,KAAK,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;QAClC,CAAC;QAED,KAAK,CAAC,MAAM,CAAC,KAAK,EAAE,OAAO;YACzB,MAAM,OAAO,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;YAC3B,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,KAAK,EAAE,OAAO,CAAC,UAAU,CAAC,CAAC;YACvD,MAAM,SAAS,CAAC,QAAQ,EAAE,SAAS,CAAC,QAAQ,CAAC,EAAE,KAAK,CAAC,CAAC;YACtD,MAAM,QAAQ,GAAG,QAAQ,CAAC,QAAQ,CAAC,QAAQ,CAAC,MAAM,EAAE,OAAO,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;YAC5E,MAAM,QAAQ,GAAa,EAAE,CAAC;YAC9B,MAAM,OAAO,GAAG,WAAW,CAAC,OAAO,CAAC,OAAO,CAAC,SAAS,IAAI,OAAO,CAAC,eAAe,IAAI,MAAM,CAAC,CAAC;YAC5F,MAAM,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC;YACrF,IAAI,KAAiB,CAAC;YACtB,IAAI,CAAC;gBACH,KAAK,GAAG,MAAM,SAAS,CACrB,QAAQ,CAAC,MAAM,CAAC,QAAQ,CAAC,OAAO,EAAE;oBAChC,KAAK,EAAE,QAAQ,CAAC,KAAK;oBACrB,KAAK,EAAE,QAAQ,CAAC,KAAK,CAAC,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;oBAC/C,MAAM,EAAE,QAAQ,CAAC,MAAM;oBACvB,MAAM,EAAE,OAAO,CAAC,aAAa,CAAC,KAAK,CAAC;oBACpC,MAAM;oBACN,MAAM;oBACN,IAAI,EAAE,CAAC,OAAO,EAAE,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC;oBACzC,GAAG,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,OAAO,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;iBACzD,CAAC,EACF,MAAM,CACP,CAAC;YACJ,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,OAAO,CAAC,SAAS,EAAE,CAAC,eAAe,EAAE,MAAM,CAAC,QAAQ,EAAE,KAAK,EAAE,EAAE,MAAM,EAAE,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;gBAC1F,MAAM,CAAC,KAAK,CAAC,wBAAwB,EAAE,MAAM,CAAC,QAAQ,EAAE,KAAK,EAAE,EAAE,MAAM,EAAE,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;gBAC5F,MAAM,IAAI,aAAa,CAAC,eAAe,EAAE,CAAC,CAAC,MAAM,EAAE,eAAe,EAAE,EAAE,MAAM,EAAE,OAAO,CAAC,MAAM,EAAE,CAAC,EAAE;oBAC/F,KAAK;iBACN,CAAC,CAAC;YACL,CAAC;YACD,MAAM,QAAQ,GAAG,GAAG,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,QAAQ,CAAC,SAAS,EAAE,CAAC;YACpE,MAAM,MAAM,GAAiB;gBAC3B,KAAK;gBACL,QAAQ,EAAE,QAAQ,CAAC,QAAQ;gBAC3B,SAAS,EAAE,QAAQ,CAAC,SAAS;gBAC7B,QAAQ;gBACR,QAAQ;aACT,CAAC;YACF,IAAI,OAAO,CAAC,YAAY,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC;gBAC5C,MAAM,IAAI,aAAa,CAAC,eAAe,EAAE,CAAC,CAAC,MAAM,EAAE,eAAe,EAAE,EAAE,MAAM,EAAE,OAAO,CAAC,MAAM,EAAE,CAAC,EAAE;oBAC/F,KAAK,EAAE,IAAI,KAAK,CAAC,6EAA6E,CAAC;iBAChG,CAAC,CAAC;YACL,CAAC;YACD,IAAI,OAAO,CAAC,YAAY,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;gBAC3C,MAAM,MAAM,GAAG,MAAM,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,EAAE,KAAK,EAAE;oBACpD,QAAQ,EAAE,QAAQ,CAAC,QAAQ;oBAC3B,QAAQ;oBACR,MAAM,EAAE,WAAW;iBACpB,CAAC,CAAC;gBACH,MAAM,CAAC,KAAK,GAAG,EAAE,GAAG,EAAE,MAAM,CAAC,GAAG,EAAE,IAAI,EAAE,MAAM,CAAC,IAAI,EAAE,IAAI,EAAE,MAAM,CAAC,IAAI,EAAE,CAAC;YAC3E,CAAC;YACD,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,OAAO,CAAC;YACtC,OAAO,CAAC,cAAc,EAAE,CACtB,QAAQ,EACR,MAAM,CAAC,QAAQ,EAAE,KAAK,EAAE,EAAE,MAAM,EAAE,OAAO,CAAC,MAAM,EAAE,UAAU,EAAE,QAAQ,EAAE,CAAC,CAC1E,CAAC;YACF,MAAM,CAAC,IAAI,CAAC;gBACV,IAAI,EAAE,mBAAmB;gBACzB,QAAQ,EAAE,SAAS,CAAC,QAAQ,CAAC;gBAC7B,MAAM,EAAE,OAAO,CAAC,MAAM;gBACtB,KAAK,EAAE,KAAK,CAAC,KAAK;gBAClB,QAAQ,EAAE,QAAQ,CAAC,MAAM;aAC1B,CAAC,CAAC;YACH,OAAO,MAAM,CAAC;QAChB,CAAC;QAED,aAAa,CAAC,KAAK;YACjB,OAAO;gBACL,KAAK,CAAC,OAAO,CAAC,GAAG;oBACf,IAAI,CAAC,OAAO,CAAC,MAAM;wBACjB,MAAM,IAAI,aAAa,CAAC,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE,WAAW,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,EAAE,EAAE,GAAG,EAAE,CAAC,CAAC,CAAC;oBAC3F,OAAO,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;gBACxC,CAAC;aACF,CAAC;QACJ,CAAC;KACF,CAAC;IACF,OAAO,OAAO,CAAC;AACjB,CAAC;AAED,SAAS,SAAS,CAAI,OAAmB,EAAE,MAAmB;IAC5D,IAAI,MAAM,CAAC,OAAO;QAAE,OAAO,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;IACzD,OAAO,IAAI,OAAO,CAAI,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;QACxC,MAAM,OAAO,GAAG,GAAG,EAAE,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;QAC5C,MAAM,CAAC,gBAAgB,CAAC,OAAO,EAAE,OAAO,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC;QAC1D,OAAO,CAAC,IAAI,CACV,CAAC,KAAK,EAAE,EAAE;YACR,MAAM,CAAC,mBAAmB,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;YAC7C,OAAO,CAAC,KAAK,CAAC,CAAC;QACjB,CAAC,EACD,CAAC,KAAK,EAAE,EAAE;YACR,MAAM,CAAC,mBAAmB,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;YAC7C,MAAM,CAAC,KAAK,CAAC,CAAC;QAChB,CAAC,CACF,CAAC;IACJ,CAAC,CAAC,CAAC;AACL,CAAC;AAED,MAAM,UAAU,OAAO,CAAC,KAAa;IACnC,MAAM,IAAI,GAAG,KAAK;SACf,SAAS,CAAC,KAAK,CAAC;SAChB,OAAO,CAAC,SAAS,EAAE,EAAE,CAAC;SACtB,WAAW,EAAE;SACb,OAAO,CAAC,aAAa,EAAE,GAAG,CAAC;SAC3B,OAAO,CAAC,UAAU,EAAE,EAAE,CAAC;SACvB,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;IAChB,OAAO,IAAI,IAAI,UAAU,CAAC;AAC5B,CAAC"}
package/dist/store.d.ts CHANGED
@@ -1,6 +1,5 @@
1
1
  import type { AssetMeta, AssetRef, StoredAssetInfo } from './assets.js';
2
- import type { Actor, Artifact, ArtifactStatus, ArtifactSummary } from './envelope.js';
3
- import type { ChangeSummary } from './kind.js';
2
+ import type { Actor, Artifact, ArtifactSummary } from './envelope.js';
4
3
  /** Workspace and actor. Every store implementation filters by scope; ids alone never grant access. */
5
4
  export interface Scope {
6
5
  workspaceId: string;
@@ -8,60 +7,22 @@ export interface Scope {
8
7
  }
9
8
  export type StoredArtifact = Artifact;
10
9
  export interface NewArtifact {
11
- kind: string;
12
- schemaVersion: number;
10
+ format: string;
11
+ formatVersion: string;
13
12
  title: string;
14
- status: ArtifactStatus;
15
13
  locale: string;
16
14
  themeId: string;
17
15
  content: unknown;
18
16
  tags?: string[];
19
- message?: string;
20
- idempotencyKey?: string;
21
- createdIds?: string[];
22
17
  }
23
18
  export interface Commit {
24
19
  /** Version the change was computed against. The store rejects with VERSION_CONFLICT when it is stale. */
25
20
  baseVersion: number;
26
- schemaVersion: number;
21
+ formatVersion: string;
27
22
  content: unknown;
28
23
  title: string;
29
24
  locale: string;
30
25
  themeId: string;
31
- status?: ArtifactStatus;
32
- operations: unknown[];
33
- diff: ChangeSummary[];
34
- createdIds?: string[];
35
- message?: string;
36
- idempotencyKey?: string;
37
- /** Set when the commit restores an older version (spec §8.5). */
38
- restoredFrom?: number;
39
- }
40
- export interface VersionEntry {
41
- version: number;
42
- actor: Actor;
43
- createdAt: string;
44
- operations: unknown[];
45
- diff: ChangeSummary[];
46
- createdIds: string[];
47
- status: ArtifactStatus;
48
- message?: string;
49
- idempotencyKey?: string;
50
- restoredFrom?: number;
51
- /** Lifecycle changes made while this was the current version, oldest first (approval trail). */
52
- statusLog?: StatusChange[];
53
- /** Content snapshot, present at least on the first version and periodically after (spec §8.5). */
54
- snapshot?: {
55
- schemaVersion: number;
56
- content: unknown;
57
- };
58
- }
59
- export interface StatusChange {
60
- status: ArtifactStatus;
61
- actor: Actor;
62
- at: string;
63
- /** Submit message, approval note or rejection reason. */
64
- message?: string;
65
26
  }
66
27
  export interface PageRequest {
67
28
  limit?: number;
@@ -72,8 +33,7 @@ export interface Page<T> {
72
33
  nextCursor?: string;
73
34
  }
74
35
  export interface ArtifactFilter {
75
- kind?: string;
76
- status?: ArtifactStatus;
36
+ format?: string;
77
37
  /** Case-insensitive substring of the title. */
78
38
  title?: string;
79
39
  tag?: string;
@@ -85,31 +45,22 @@ export interface Lock {
85
45
  expiresAt: string;
86
46
  }
87
47
  /**
88
- * Persistence contract (spec §15.1). Implementations must pass the shared contract suite
89
- * exported from `@artkit-ai/core/testing`.
48
+ * Persistence contract (spec §17.1). The store keeps the current content of each artifact and its version counter;
49
+ * it does not keep earlier versions. Implementations must pass the shared contract suite from `@artkit-ai/core/testing`.
90
50
  */
91
51
  export interface ArtifactStore {
92
- get(scope: Scope, id: string, opts?: {
93
- version?: number;
94
- }): Promise<StoredArtifact | null>;
52
+ get(scope: Scope, id: string): Promise<StoredArtifact | null>;
95
53
  create(scope: Scope, input: NewArtifact): Promise<StoredArtifact>;
96
- /** Throws `ArtifactError('VERSION_CONFLICT')` when `change.baseVersion` is not the current version. */
54
+ /**
55
+ * Replaces the content when `change.baseVersion` is the current version and increments the version. Throws
56
+ * `ArtifactError('VERSION_CONFLICT')` otherwise.
57
+ */
97
58
  commit(scope: Scope, id: string, change: Commit): Promise<StoredArtifact>;
98
- history(scope: Scope, id: string, page: PageRequest): Promise<Page<VersionEntry>>;
99
59
  list(scope: Scope, filter: ArtifactFilter, page: PageRequest): Promise<Page<ArtifactSummary>>;
100
- /** Changes status without creating a version; sets `meta.publishedVersion` when publishing. */
101
- setStatus(scope: Scope, id: string, status: ArtifactStatus, actor: Actor, message?: string): Promise<StoredArtifact>;
102
60
  /** Throws `ArtifactError('LOCKED')` when another actor holds a valid lock. */
103
61
  lock(scope: Scope, id: string, actor: Actor, ttlMs: number): Promise<Lock>;
104
62
  unlock(scope: Scope, lock: Lock): Promise<void>;
105
63
  getLock(scope: Scope, id: string): Promise<Lock | null>;
106
- findByIdempotencyKey(scope: Scope, id: string, key: string): Promise<VersionEntry | null>;
107
- /**
108
- * Finds an artifact created with this idempotency key by the same actor in the scope's workspace, so a repeated
109
- * `create` tool call returns the first artifact instead of a duplicate. Optional for compatibility;
110
- * without it, creation is not deduplicated across processes.
111
- */
112
- findCreatedByIdempotencyKey?(scope: Scope, key: string): Promise<StoredArtifact | null>;
113
64
  }
114
65
  export interface AssetStore {
115
66
  put(scope: Scope, bytes: Uint8Array, meta: AssetMeta): Promise<StoredAssetInfo>;
@@ -1 +1 @@
1
- {"version":3,"file":"store.d.ts","sourceRoot":"","sources":["../src/store.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"store.d.ts","sourceRoot":"","sources":["../src/store.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,4 @@
1
- import type { AnyArtifactKind } from '../kind.js';
1
+ import type { AnyFormatAdapter, FormatAdapter } from '../adapter.js';
2
2
  import type { ArtifactStore } from '../store.js';
3
3
  /** Minimal test API so the suites work with vitest, jest or node:test. */
4
4
  export interface TestApi {
@@ -6,25 +6,26 @@ export interface TestApi {
6
6
  it(name: string, fn: () => unknown | Promise<unknown>): void;
7
7
  }
8
8
  /**
9
- * Shared contract suite every `ArtifactStore` adapter must pass (spec §15.1).
9
+ * Shared contract suite every `ArtifactStore` adapter must pass (spec §17.1).
10
10
  * `factory` must return a fresh, empty store for each test.
11
11
  */
12
12
  export declare function defineStoreContractTests(name: string, factory: () => ArtifactStore | Promise<ArtifactStore>, test: TestApi): void;
13
- export interface KindFixture {
13
+ export interface FormatFixture {
14
14
  title: string;
15
15
  content: unknown;
16
- /** Batches applied in sequence on the content; each must succeed. */
16
+ /** Batches that must apply deterministically on this fixture. */
17
17
  batches?: unknown[][];
18
- /** Batches that must be rejected with the given code. */
18
+ /** Batches that must be rejected, with the expected error code. */
19
19
  rejects?: {
20
20
  operations: unknown[];
21
21
  code: string;
22
22
  }[];
23
23
  }
24
24
  /**
25
- * Conformance suite for kinds (spec §20): instruction examples validate against the schemas, apply is
26
- * deterministic and atomic, projection exposes ids, diff of identical content is empty, parsePartial
27
- * accepts complete content and migrations chain up to the current version.
25
+ * Shared conformance suite every format adapter must pass (spec §8 and §22): examples in the instructions are valid,
26
+ * fixtures validate and read with ids, `apply` is deterministic, pure and atomic, and migrations form a chain.
28
27
  */
29
- export declare function defineKindConformanceTests(kind: AnyArtifactKind, fixtures: KindFixture[], test: TestApi): void;
28
+ export declare function defineFormatConformanceTests(adapter: AnyFormatAdapter, fixtures: FormatFixture[], test: TestApi): void;
29
+ /** Re-export for adapters that want the generic type in their own tests. */
30
+ export type { FormatAdapter };
30
31
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/testing/index.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAElD,OAAO,KAAK,EAAE,aAAa,EAAsB,MAAM,aAAa,CAAC;AAGrE,0EAA0E;AAC1E,MAAM,WAAW,OAAO;IACtB,QAAQ,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,IAAI,GAAG,IAAI,CAAC;IAC7C,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,GAAG,IAAI,CAAC;CAC9D;AAgCD;;;GAGG;AACH,wBAAgB,wBAAwB,CACtC,IAAI,EAAE,MAAM,EACZ,OAAO,EAAE,MAAM,aAAa,GAAG,OAAO,CAAC,aAAa,CAAC,EACrD,IAAI,EAAE,OAAO,GACZ,IAAI,CAoHN;AAeD,MAAM,WAAW,WAAW;IAC1B,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,OAAO,CAAC;IACjB,qEAAqE;IACrE,OAAO,CAAC,EAAE,OAAO,EAAE,EAAE,CAAC;IACtB,yDAAyD;IACzD,OAAO,CAAC,EAAE;QAAE,UAAU,EAAE,OAAO,EAAE,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,EAAE,CAAC;CACrD;AAED;;;;GAIG;AACH,wBAAgB,0BAA0B,CACxC,IAAI,EAAE,eAAe,EACrB,QAAQ,EAAE,WAAW,EAAE,EACvB,IAAI,EAAE,OAAO,GACZ,IAAI,CA8GN"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/testing/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AAKrE,OAAO,KAAK,EAAE,aAAa,EAA8B,MAAM,aAAa,CAAC;AAG7E,0EAA0E;AAC1E,MAAM,WAAW,OAAO;IACtB,QAAQ,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,IAAI,GAAG,IAAI,CAAC;IAC7C,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,GAAG,IAAI,CAAC;CAC9D;AAyCD;;;GAGG;AACH,wBAAgB,wBAAwB,CACtC,IAAI,EAAE,MAAM,EACZ,OAAO,EAAE,MAAM,aAAa,GAAG,OAAO,CAAC,aAAa,CAAC,EACrD,IAAI,EAAE,OAAO,GACZ,IAAI,CAoDN;AAED,MAAM,WAAW,aAAa;IAC5B,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,OAAO,CAAC;IACjB,iEAAiE;IACjE,OAAO,CAAC,EAAE,OAAO,EAAE,EAAE,CAAC;IACtB,mEAAmE;IACnE,OAAO,CAAC,EAAE;QAAE,UAAU,EAAE,OAAO,EAAE,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,EAAE,CAAC;CACrD;AAED;;;GAGG;AACH,wBAAgB,4BAA4B,CAC1C,OAAO,EAAE,gBAAgB,EACzB,QAAQ,EAAE,aAAa,EAAE,EACzB,IAAI,EAAE,OAAO,GACZ,IAAI,CAqGN;AAED,4EAA4E;AAC5E,YAAY,EAAE,aAAa,EAAE,CAAC"}
@@ -20,19 +20,27 @@ async function expectCode(promise, code) {
20
20
  }
21
21
  const scopeA = { workspaceId: 'ws_a', actor: { type: 'user', id: 'usr_1' } };
22
22
  const scopeB = { workspaceId: 'ws_b', actor: { type: 'user', id: 'usr_2' } };
23
- const agent = { workspaceId: 'ws_a', actor: { type: 'agent', id: 'agt_1' } };
24
23
  const sample = {
25
- kind: 'note',
26
- schemaVersion: 1,
24
+ format: 'contract-text',
25
+ formatVersion: 'contract@1',
27
26
  title: 'Contract test',
28
- status: 'draft',
29
27
  locale: 'en',
30
28
  themeId: 'default',
31
- content: { text: 'hello' },
29
+ content: 'hello',
32
30
  tags: ['contract'],
33
31
  };
32
+ function commitFrom(baseVersion, text = 'v2') {
33
+ return {
34
+ baseVersion,
35
+ formatVersion: 'contract@1',
36
+ content: text,
37
+ title: 'Contract test',
38
+ locale: 'en',
39
+ themeId: 'default',
40
+ };
41
+ }
34
42
  /**
35
- * Shared contract suite every `ArtifactStore` adapter must pass (spec §15.1).
43
+ * Shared contract suite every `ArtifactStore` adapter must pass (spec §17.1).
36
44
  * `factory` must return a fresh, empty store for each test.
37
45
  */
38
46
  export function defineStoreContractTests(name, factory, test) {
@@ -59,153 +67,81 @@ export function defineStoreContractTests(name, factory, test) {
59
67
  const created = await store.create(scopeA, sample);
60
68
  const v2 = await store.commit(scopeA, created.id, commitFrom(1, 'v2'));
61
69
  assert(v2.version === 2, 'second version');
70
+ assert(v2.content === 'v2', 'the current content is replaced');
62
71
  await expectCode(store.commit(scopeA, created.id, commitFrom(1, 'stale')), 'VERSION_CONFLICT');
63
- const v1 = await store.get(scopeA, created.id, { version: 1 });
64
- assert(deepEqual(v1?.content, sample.content), 'old versions are immutable');
65
- const latest = await store.get(scopeA, created.id);
66
- assert(deepEqual(latest?.content, { text: 'v2' }), 'latest is v2');
72
+ const current = await store.get(scopeA, created.id);
73
+ assert(current?.content === 'v2', 'a rejected commit leaves the current content untouched');
67
74
  });
68
- test.it('records history newest first with idempotency lookup', async () => {
75
+ test.it('filters the list by format and tag', async () => {
69
76
  const store = await factory();
70
- const created = await store.create(scopeA, sample);
71
- await store.commit(scopeA, created.id, {
72
- ...commitFrom(1, 'x'),
73
- idempotencyKey: 'call_1',
74
- message: 'edit',
75
- });
76
- const history = await store.history(scopeA, created.id, {});
77
- assert(history.items[0]?.version === 2 && history.items[1]?.version === 1, 'history order');
78
- assert(history.items[0]?.message === 'edit', 'message kept');
79
- const found = await store.findByIdempotencyKey(scopeA, created.id, 'call_1');
80
- assert(found?.version === 2, 'idempotency key lookup');
81
- assert((await store.findByIdempotencyKey(scopeA, created.id, 'missing')) === null, 'unknown key');
82
- });
83
- test.it('filters and paginates lists', async () => {
84
- const store = await factory();
85
- for (let i = 0; i < 5; i++)
86
- await store.create(scopeA, { ...sample, title: `Doc ${i}`, kind: i % 2 ? 'sheet' : 'note' });
87
- const sheets = await store.list(scopeA, { kind: 'sheet' }, {});
88
- assert(sheets.items.length === 2, 'kind filter');
89
- const titled = await store.list(scopeA, { title: 'doc 3' }, {});
90
- assert(titled.items.length === 1, 'title filter is case-insensitive');
91
- const page1 = await store.list(scopeA, {}, { limit: 2 });
92
- assert(page1.items.length === 2 && page1.nextCursor !== undefined, 'first page');
93
- const page2 = await store.list(scopeA, {}, { limit: 2, cursor: page1.nextCursor });
94
- assert(page2.items.length === 2 && !page2.items.some((item) => page1.items.some((p) => p.id === item.id)), 'second page');
77
+ await store.create(scopeA, sample);
78
+ await store.create(scopeA, { ...sample, format: 'contract-other', title: 'Other', tags: [] });
79
+ const onlyText = await store.list(scopeA, { format: 'contract-text' }, {});
80
+ assert(onlyText.items.length === 1, 'format filter must narrow the list');
81
+ const tagged = await store.list(scopeA, { tag: 'contract' }, {});
82
+ assert(tagged.items.length === 1, 'tag filter must narrow the list');
95
83
  });
96
- test.it('changes status and records the published version', async () => {
84
+ test.it('locks are exclusive to other actors', async () => {
97
85
  const store = await factory();
98
86
  const created = await store.create(scopeA, sample);
99
- const published = await store.setStatus(scopeA, created.id, 'published', scopeA.actor);
100
- assert(published.status === 'published', 'status');
101
- assert(published.meta.publishedVersion === 1, 'publishedVersion');
102
- assert(published.version === 1, 'status change does not create a version');
103
- await store.setStatus(scopeA, created.id, 'draft', scopeA.actor, 'needs a cost table');
104
- const entry = (await store.history(scopeA, created.id, {})).items[0];
105
- const log = entry?.statusLog ?? [];
106
- assert(log.length === 2, 'status changes are logged on the current version');
107
- assert(log[1]?.status === 'draft' && log[1]?.message === 'needs a cost table', 'reason is kept');
108
- });
109
- test.it('locks against other actors', async () => {
110
- const store = await factory();
111
- const created = await store.create(scopeA, sample);
112
- const lock = await store.lock(scopeA, created.id, agent.actor, 60_000);
113
- assert((await store.getLock(scopeA, created.id))?.token === lock.token, 'lock visible');
114
- await expectCode(store.lock(scopeA, created.id, scopeA.actor, 60_000), 'LOCKED');
115
- await store.lock(scopeA, created.id, agent.actor, 60_000);
116
- await store.unlock(scopeA, (await store.getLock(scopeA, created.id)));
117
- assert((await store.getLock(scopeA, created.id)) === null, 'unlocked');
118
- });
119
- test.it('expires locks', async () => {
120
- const store = await factory();
121
- const created = await store.create(scopeA, sample);
122
- await store.lock(scopeA, created.id, agent.actor, 1);
123
- await new Promise((resolve) => setTimeout(() => resolve(), 15));
124
- assert((await store.getLock(scopeA, created.id)) === null, 'lock expired');
125
- });
126
- test.it('finds artifacts by creation idempotency key when supported', async () => {
127
- const store = await factory();
128
- if (!store.findCreatedByIdempotencyKey)
129
- return;
130
- const created = await store.create(scopeA, { ...sample, idempotencyKey: 'create_1' });
131
- await store.commit(scopeA, created.id, { ...commitFrom(1, 'later'), idempotencyKey: 'apply_1' });
132
- assert((await store.findCreatedByIdempotencyKey(scopeA, 'create_1'))?.id === created.id, 'found by create key');
133
- assert((await store.findCreatedByIdempotencyKey(scopeA, 'apply_1')) === null, 'apply keys are not create keys');
134
- assert((await store.findCreatedByIdempotencyKey(scopeB, 'create_1')) === null, 'workspace isolation');
135
- assert((await store.findCreatedByIdempotencyKey(agent, 'create_1')) === null, 'keys are per actor');
87
+ const lock = await store.lock(scopeA, created.id, scopeA.actor, 60_000);
88
+ const other = { type: 'agent', id: 'agt_1' };
89
+ await expectCode(store.lock(scopeA, created.id, other, 60_000), 'LOCKED');
90
+ await store.unlock(scopeA, lock);
91
+ assert((await store.getLock(scopeA, created.id)) === null, 'unlock must release');
136
92
  });
137
93
  });
138
94
  }
139
- function commitFrom(baseVersion, text = 'changed') {
140
- return {
141
- baseVersion,
142
- schemaVersion: 1,
143
- content: { text },
144
- title: 'Contract test',
145
- locale: 'en',
146
- themeId: 'default',
147
- operations: [{ op: 'replace_content', content: { text } }],
148
- diff: [],
149
- };
150
- }
151
95
  /**
152
- * Conformance suite for kinds (spec §20): instruction examples validate against the schemas, apply is
153
- * deterministic and atomic, projection exposes ids, diff of identical content is empty, parsePartial
154
- * accepts complete content and migrations chain up to the current version.
96
+ * Shared conformance suite every format adapter must pass (spec §8 and §22): examples in the instructions are valid,
97
+ * fixtures validate and read with ids, `apply` is deterministic, pure and atomic, and migrations form a chain.
155
98
  */
156
- export function defineKindConformanceTests(kind, fixtures, test) {
157
- const registry = createRegistry({ kinds: [kind] });
158
- const lint = { locale: 'en', theme: defaultTheme };
159
- test.describe(`Kind conformance: ${kind.kind}`, () => {
160
- test.it('empty() is valid and projectable', () => {
161
- const prepared = prepareContent(registry, kind.kind, kind.empty());
162
- kind.project(prepared.content, { mode: 'full', locale: 'en' });
99
+ export function defineFormatConformanceTests(adapter, fixtures, test) {
100
+ const registry = createRegistry({ formats: [adapter] });
101
+ const ctx = { locale: 'en', theme: defaultTheme };
102
+ test.describe(`Format conformance: ${adapter.format}`, () => {
103
+ test.it('empty() is valid and readable', () => {
104
+ const prepared = prepareContent(registry, adapter.format, adapter.empty());
105
+ const read = adapter.read(prepared.content, { mode: 'full', locale: 'en' });
106
+ assert(typeof read.text === 'string', 'read must return text');
163
107
  });
164
- for (const example of kind.instructions.examples) {
165
- test.it(`instruction example "${example.title}" is valid`, () => {
166
- if (example.input) {
167
- const input = kind.inputs?.[example.input.format];
168
- assert(input, `example uses unknown input format "${example.input.format}"`);
169
- const raw = input.toContent(input.schema.parse(example.input.source), { locale: 'en' });
170
- const fromInput = prepareContent(registry, kind.kind, raw).content;
171
- if (example.content !== undefined) {
172
- const expected = prepareContent(registry, kind.kind, example.content).content;
173
- assert(deepEqual(fromInput, expected), 'example input must produce the example content');
174
- }
175
- }
108
+ for (const example of adapter.instructions.examples) {
109
+ test.it(`instruction example "${example.title}" is valid`, async () => {
176
110
  const base = example.content === undefined
177
- ? kind.empty()
178
- : prepareContent(registry, kind.kind, example.content).content;
111
+ ? adapter.empty()
112
+ : prepareContent(registry, adapter.format, example.content).content;
179
113
  if (example.operations) {
180
- applyOperations(registry, { kind: kind.kind, content: base, title: 'Example', themeId: 'default', locale: 'en' }, example.operations);
114
+ await applyOperations(registry, { format: adapter.format, content: base, title: 'Example', themeId: 'default', locale: 'en' }, example.operations);
181
115
  }
182
116
  });
183
117
  }
184
118
  for (const fixture of fixtures) {
185
- test.it(`fixture "${fixture.title}": validates, projects ids and diffs`, () => {
186
- const { content } = prepareContent(registry, kind.kind, fixture.content);
187
- const full = kind.project(content, { mode: 'full', locale: 'en' });
188
- const outline = kind.project(content, { mode: 'outline', locale: 'en' });
189
- assert(full.text.length > 0 && outline.text.length > 0, 'projection must not be empty');
190
- const someId = [...kind.ids(content)][0];
191
- if (someId)
192
- assert(full.text.includes(someId), `full projection must expose ids (missing ${someId})`);
193
- assert(kind.diff(content, structuredClone(content)).length === 0, 'diff of identical content must be empty');
194
- const partial = kind.parsePartial(structuredClone(content));
195
- assert(partial !== undefined && kind.contentSchema.safeParse(partial).success, 'parsePartial must accept complete content');
196
- kind.lint(content, lint);
197
- assert(deepEqual(JSON.parse(JSON.stringify(content)), content), 'content must be JSON-serializable');
119
+ test.it(`fixture "${fixture.title}": validates, reads with ids and diffs`, () => {
120
+ const { content } = prepareContent(registry, adapter.format, fixture.content);
121
+ const full = adapter.read(content, { mode: 'full', locale: 'en' });
122
+ const outline = adapter.read(content, { mode: 'outline', locale: 'en' });
123
+ assert(full.text.length > 0 && outline.text.length > 0, 'reading must not be empty');
124
+ assert(adapter.diff(content, structuredClone(content)).length === 0, 'diff of identical content must be empty');
125
+ const partial = adapter.parsePartial(JSON.stringify(content));
126
+ assert(partial !== undefined, 'parsePartial must accept complete content');
127
+ adapter.lint(content, ctx);
198
128
  });
199
129
  if (fixture.batches?.length) {
200
- test.it(`fixture "${fixture.title}": apply is deterministic and does not mutate input`, () => {
201
- let { content } = prepareContent(registry, kind.kind, fixture.content);
130
+ test.it(`fixture "${fixture.title}": apply is deterministic and does not mutate input`, async () => {
131
+ let { content } = prepareContent(registry, adapter.format, fixture.content);
202
132
  for (const batch of fixture.batches ?? []) {
203
133
  const frozen = structuredClone(content);
204
- const artifact = { kind: kind.kind, content, title: 'Fixture', themeId: 'default', locale: 'en' };
205
- const a = applyOperations(registry, artifact, batch);
206
- const b = applyOperations(registry, artifact, batch);
134
+ const artifact = {
135
+ format: adapter.format,
136
+ content,
137
+ title: 'Fixture',
138
+ themeId: 'default',
139
+ locale: 'en',
140
+ };
141
+ const a = await applyOperations(registry, artifact, batch);
142
+ const b = await applyOperations(registry, artifact, batch);
207
143
  assert(deepEqual(a.content, b.content), 'same batch must produce the same content');
208
- assert(deepEqual(a.createdIds, b.createdIds), 'generated ids must be deterministic');
144
+ assert(deepEqual(a.createdRefs, b.createdRefs), 'created refs must be deterministic');
209
145
  assert(deepEqual(content, frozen), 'apply must not mutate the input');
210
146
  assert(a.diff.length > 0, 'a successful batch should report changes');
211
147
  content = a.content;
@@ -213,11 +149,11 @@ export function defineKindConformanceTests(kind, fixtures, test) {
213
149
  });
214
150
  }
215
151
  for (const [index, rejected] of (fixture.rejects ?? []).entries()) {
216
- test.it(`fixture "${fixture.title}": rejects batch ${index} with ${rejected.code}`, () => {
217
- const { content } = prepareContent(registry, kind.kind, fixture.content);
152
+ test.it(`fixture "${fixture.title}": rejects batch ${index} with ${rejected.code}`, async () => {
153
+ const { content } = prepareContent(registry, adapter.format, fixture.content);
218
154
  const frozen = structuredClone(content);
219
155
  try {
220
- applyOperations(registry, { kind: kind.kind, content, title: 'Fixture', themeId: 'default', locale: 'en' }, rejected.operations);
156
+ await applyOperations(registry, { format: adapter.format, content, title: 'Fixture', themeId: 'default', locale: 'en' }, rejected.operations);
221
157
  }
222
158
  catch (error) {
223
159
  assert(error instanceof ArtifactError, `expected ArtifactError, got ${String(error)}`);
@@ -230,9 +166,12 @@ export function defineKindConformanceTests(kind, fixtures, test) {
230
166
  });
231
167
  }
232
168
  }
233
- test.it('migrations chain to the current version', () => {
234
- const versions = kind.migrations.map((m) => m.to);
235
- assert(kind.migrations.length === 0 || Math.max(...versions) === kind.version, 'migrations must end at version');
169
+ test.it('migrations chain to the current format version', () => {
170
+ const chain = adapter.migrations;
171
+ for (const migration of chain) {
172
+ assert(migration.to !== migration.from, 'a migration must change the version');
173
+ }
174
+ assert(adapter.readableVersions.includes(adapter.formatVersion), 'current version must be readable');
236
175
  });
237
176
  });
238
177
  }