@dxos/plugin-kanban 0.8.2-main.f081794 → 0.8.2-main.fbd8ed0

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 (84) hide show
  1. package/dist/lib/browser/{artifact-definition-SVNHDJQT.mjs → artifact-definition-HABFQLG4.mjs} +12 -12
  2. package/dist/lib/browser/artifact-definition-HABFQLG4.mjs.map +7 -0
  3. package/dist/lib/browser/{chunk-K5BYEZ4Z.mjs → chunk-6JAA7YSW.mjs} +23 -35
  4. package/dist/lib/browser/chunk-6JAA7YSW.mjs.map +7 -0
  5. package/dist/lib/browser/index.mjs +4 -4
  6. package/dist/lib/browser/intent-resolver-G6H6HZRG.mjs +297 -0
  7. package/dist/lib/browser/intent-resolver-G6H6HZRG.mjs.map +7 -0
  8. package/dist/lib/browser/meta.json +1 -1
  9. package/dist/lib/browser/{react-surface-R25PYWQV.mjs → react-surface-BIBGD5OD.mjs} +67 -35
  10. package/dist/lib/browser/react-surface-BIBGD5OD.mjs.map +7 -0
  11. package/dist/lib/browser/types.mjs +1 -3
  12. package/dist/lib/node/{artifact-definition-M2XAYUI2.cjs → artifact-definition-M57SFWWP.cjs} +19 -19
  13. package/dist/lib/node/artifact-definition-M57SFWWP.cjs.map +7 -0
  14. package/dist/lib/node/{chunk-3EUR6ZR2.cjs → chunk-O4U7ZQ2I.cjs} +25 -38
  15. package/dist/lib/node/chunk-O4U7ZQ2I.cjs.map +7 -0
  16. package/dist/lib/node/index.cjs +16 -16
  17. package/dist/lib/node/intent-resolver-IBMSLMHX.cjs +308 -0
  18. package/dist/lib/node/intent-resolver-IBMSLMHX.cjs.map +7 -0
  19. package/dist/lib/node/meta.json +1 -1
  20. package/dist/lib/node/{react-surface-FVM64YAQ.cjs → react-surface-ZABOI7UC.cjs} +74 -42
  21. package/dist/lib/node/react-surface-ZABOI7UC.cjs.map +7 -0
  22. package/dist/lib/node/types.cjs +6 -8
  23. package/dist/lib/node/types.cjs.map +2 -2
  24. package/dist/lib/node-esm/{artifact-definition-HQ5I2OO5.mjs → artifact-definition-OLVK4DCO.mjs} +12 -12
  25. package/dist/lib/node-esm/artifact-definition-OLVK4DCO.mjs.map +7 -0
  26. package/dist/lib/node-esm/{chunk-2N7CO3DI.mjs → chunk-NOC32MF5.mjs} +23 -35
  27. package/dist/lib/node-esm/chunk-NOC32MF5.mjs.map +7 -0
  28. package/dist/lib/node-esm/index.mjs +4 -4
  29. package/dist/lib/node-esm/intent-resolver-X66YN6H5.mjs +298 -0
  30. package/dist/lib/node-esm/intent-resolver-X66YN6H5.mjs.map +7 -0
  31. package/dist/lib/node-esm/meta.json +1 -1
  32. package/dist/lib/node-esm/{react-surface-LZ7MP3CQ.mjs → react-surface-LDR423Y7.mjs} +67 -35
  33. package/dist/lib/node-esm/react-surface-LDR423Y7.mjs.map +7 -0
  34. package/dist/lib/node-esm/types.mjs +1 -3
  35. package/dist/types/src/capabilities/index.d.ts +1 -1
  36. package/dist/types/src/capabilities/index.d.ts.map +1 -1
  37. package/dist/types/src/capabilities/intent-resolver.d.ts +2 -2
  38. package/dist/types/src/capabilities/intent-resolver.d.ts.map +1 -1
  39. package/dist/types/src/capabilities/react-surface.d.ts.map +1 -1
  40. package/dist/types/src/components/KanbanContainer.d.ts.map +1 -1
  41. package/dist/types/src/components/KanbanContainer.stories.d.ts +10 -0
  42. package/dist/types/src/components/KanbanContainer.stories.d.ts.map +1 -0
  43. package/dist/types/src/components/KanbanViewEditor.d.ts.map +1 -1
  44. package/dist/types/src/testing/index.d.ts +3 -0
  45. package/dist/types/src/testing/index.d.ts.map +1 -0
  46. package/dist/types/src/testing/initialize-kanban.d.ts +17 -0
  47. package/dist/types/src/testing/initialize-kanban.d.ts.map +1 -0
  48. package/dist/types/src/testing/kanban-manager.d.ts +7 -0
  49. package/dist/types/src/testing/kanban-manager.d.ts.map +1 -0
  50. package/dist/types/src/testing/playwright/smoke.spec.d.ts +2 -0
  51. package/dist/types/src/testing/playwright/smoke.spec.d.ts.map +1 -0
  52. package/dist/types/src/translations.d.ts +2 -28
  53. package/dist/types/src/translations.d.ts.map +1 -1
  54. package/dist/types/src/types.d.ts +34 -41
  55. package/dist/types/src/types.d.ts.map +1 -1
  56. package/dist/types/tsconfig.tsbuildinfo +1 -1
  57. package/package.json +30 -25
  58. package/src/capabilities/artifact-definition.ts +10 -10
  59. package/src/capabilities/intent-resolver.ts +10 -6
  60. package/src/capabilities/react-surface.tsx +46 -12
  61. package/src/components/KanbanContainer.stories.tsx +191 -0
  62. package/src/components/KanbanContainer.tsx +22 -9
  63. package/src/components/KanbanViewEditor.tsx +9 -7
  64. package/src/testing/index.ts +6 -0
  65. package/src/testing/initialize-kanban.ts +139 -0
  66. package/src/testing/kanban-manager.ts +13 -0
  67. package/src/testing/playwright/playwright.config.cts +18 -0
  68. package/src/testing/playwright/smoke.spec.ts +7 -0
  69. package/src/types.ts +26 -43
  70. package/dist/lib/browser/artifact-definition-SVNHDJQT.mjs.map +0 -7
  71. package/dist/lib/browser/chunk-K5BYEZ4Z.mjs.map +0 -7
  72. package/dist/lib/browser/intent-resolver-XCDQ5N3Q.mjs +0 -132
  73. package/dist/lib/browser/intent-resolver-XCDQ5N3Q.mjs.map +0 -7
  74. package/dist/lib/browser/react-surface-R25PYWQV.mjs.map +0 -7
  75. package/dist/lib/node/artifact-definition-M2XAYUI2.cjs.map +0 -7
  76. package/dist/lib/node/chunk-3EUR6ZR2.cjs.map +0 -7
  77. package/dist/lib/node/intent-resolver-P3PSZO7H.cjs +0 -146
  78. package/dist/lib/node/intent-resolver-P3PSZO7H.cjs.map +0 -7
  79. package/dist/lib/node/react-surface-FVM64YAQ.cjs.map +0 -7
  80. package/dist/lib/node-esm/artifact-definition-HQ5I2OO5.mjs.map +0 -7
  81. package/dist/lib/node-esm/chunk-2N7CO3DI.mjs.map +0 -7
  82. package/dist/lib/node-esm/intent-resolver-4G47V67J.mjs +0 -133
  83. package/dist/lib/node-esm/intent-resolver-4G47V67J.mjs.map +0 -7
  84. package/dist/lib/node-esm/react-surface-LZ7MP3CQ.mjs.map +0 -7
@@ -1 +1 @@
1
- {"inputs":{"packages/plugins/plugin-kanban/src/meta.ts":{"bytes":2245,"imports":[],"format":"esm"},"packages/plugins/plugin-kanban/src/types.ts":{"bytes":11430,"imports":[{"path":"effect/SchemaAST","kind":"import-statement","external":true},{"path":"@dxos/echo-schema","kind":"import-statement","external":true},{"path":"@dxos/react-client/echo","kind":"import-statement","external":true},{"path":"@dxos/react-ui-kanban","kind":"import-statement","external":true},{"path":"@dxos/react-ui-kanban/testing","kind":"import-statement","external":true},{"path":"@dxos/schema","kind":"import-statement","external":true},{"path":"packages/plugins/plugin-kanban/src/meta.ts","kind":"import-statement","original":"./meta"}],"format":"esm"},"packages/plugins/plugin-kanban/src/capabilities/artifact-definition.ts":{"bytes":19853,"imports":[{"path":"effect","kind":"import-statement","external":true},{"path":"@dxos/app-framework","kind":"import-statement","external":true},{"path":"@dxos/artifact","kind":"import-statement","external":true},{"path":"@dxos/assistant","kind":"import-statement","external":true},{"path":"@dxos/echo-schema","kind":"import-statement","external":true},{"path":"@dxos/invariant","kind":"import-statement","external":true},{"path":"@dxos/plugin-space/types","kind":"import-statement","external":true},{"path":"@dxos/react-client/echo","kind":"import-statement","external":true},{"path":"@dxos/react-ui-kanban","kind":"import-statement","external":true},{"path":"packages/plugins/plugin-kanban/src/meta.ts","kind":"import-statement","original":"../meta"},{"path":"packages/plugins/plugin-kanban/src/types.ts","kind":"import-statement","original":"../types"}],"format":"esm"},"packages/plugins/plugin-kanban/src/capabilities/intent-resolver.ts":{"bytes":10985,"imports":[{"path":"@dxos/app-framework","kind":"import-statement","external":true},{"path":"@dxos/invariant","kind":"import-statement","external":true},{"path":"@dxos/react-client/echo","kind":"import-statement","external":true},{"path":"@dxos/schema","kind":"import-statement","external":true},{"path":"packages/plugins/plugin-kanban/src/meta.ts","kind":"import-statement","original":"../meta"},{"path":"packages/plugins/plugin-kanban/src/types.ts","kind":"import-statement","original":"../types"}],"format":"esm"},"packages/plugins/plugin-kanban/src/components/KanbanContainer.tsx":{"bytes":10174,"imports":[{"path":"react","kind":"import-statement","external":true},{"path":"@dxos/app-framework","kind":"import-statement","external":true},{"path":"@dxos/plugin-search","kind":"import-statement","external":true},{"path":"@dxos/react-client/echo","kind":"import-statement","external":true},{"path":"@dxos/react-ui-kanban","kind":"import-statement","external":true},{"path":"@dxos/react-ui-stack","kind":"import-statement","external":true},{"path":"@dxos/schema","kind":"import-statement","external":true},{"path":"packages/plugins/plugin-kanban/src/types.ts","kind":"import-statement","original":"../types"}],"format":"esm"},"packages/plugins/plugin-kanban/src/components/KanbanViewEditor.tsx":{"bytes":12425,"imports":[{"path":"react","kind":"import-statement","external":true},{"path":"@dxos/app-framework","kind":"import-statement","external":true},{"path":"@dxos/echo-schema","kind":"import-statement","external":true},{"path":"@dxos/invariant","kind":"import-statement","external":true},{"path":"@dxos/react-client","kind":"import-statement","external":true},{"path":"@dxos/react-client/echo","kind":"import-statement","external":true},{"path":"@dxos/react-ui-form","kind":"import-statement","external":true},{"path":"@dxos/react-ui-kanban","kind":"import-statement","external":true},{"path":"@dxos/schema","kind":"import-statement","external":true},{"path":"packages/plugins/plugin-kanban/src/types.ts","kind":"import-statement","original":"../types"}],"format":"esm"},"packages/plugins/plugin-kanban/src/components/index.ts":{"bytes":644,"imports":[{"path":"packages/plugins/plugin-kanban/src/components/KanbanContainer.tsx","kind":"import-statement","original":"./KanbanContainer"},{"path":"packages/plugins/plugin-kanban/src/components/KanbanViewEditor.tsx","kind":"import-statement","original":"./KanbanViewEditor"}],"format":"esm"},"packages/plugins/plugin-kanban/src/capabilities/react-surface.tsx":{"bytes":13173,"imports":[{"path":"react","kind":"import-statement","external":true},{"path":"@dxos/app-framework","kind":"import-statement","external":true},{"path":"@dxos/effect","kind":"import-statement","external":true},{"path":"@dxos/react-client/echo","kind":"import-statement","external":true},{"path":"@dxos/react-ui-form","kind":"import-statement","external":true},{"path":"packages/plugins/plugin-kanban/src/components/index.ts","kind":"import-statement","original":"../components"},{"path":"packages/plugins/plugin-kanban/src/meta.ts","kind":"import-statement","original":"../meta"},{"path":"packages/plugins/plugin-kanban/src/types.ts","kind":"import-statement","original":"../types"}],"format":"esm"},"packages/plugins/plugin-kanban/src/capabilities/index.ts":{"bytes":1366,"imports":[{"path":"@dxos/app-framework","kind":"import-statement","external":true},{"path":"packages/plugins/plugin-kanban/src/capabilities/artifact-definition.ts","kind":"dynamic-import","original":"./artifact-definition"},{"path":"packages/plugins/plugin-kanban/src/capabilities/intent-resolver.ts","kind":"dynamic-import","original":"./intent-resolver"},{"path":"packages/plugins/plugin-kanban/src/capabilities/react-surface.tsx","kind":"dynamic-import","original":"./react-surface"}],"format":"esm"},"packages/plugins/plugin-kanban/src/translations.ts":{"bytes":3122,"imports":[{"path":"@dxos/react-ui-kanban","kind":"import-statement","external":true},{"path":"packages/plugins/plugin-kanban/src/meta.ts","kind":"import-statement","original":"./meta"}],"format":"esm"},"packages/plugins/plugin-kanban/src/KanbanPlugin.tsx":{"bytes":8396,"imports":[{"path":"@dxos/app-framework","kind":"import-statement","external":true},{"path":"@dxos/plugin-client","kind":"import-statement","external":true},{"path":"@dxos/plugin-space","kind":"import-statement","external":true},{"path":"@dxos/plugin-space/types","kind":"import-statement","external":true},{"path":"@dxos/react-ui-kanban","kind":"import-statement","external":true},{"path":"packages/plugins/plugin-kanban/src/capabilities/index.ts","kind":"import-statement","original":"./capabilities"},{"path":"packages/plugins/plugin-kanban/src/meta.ts","kind":"import-statement","original":"./meta"},{"path":"packages/plugins/plugin-kanban/src/translations.ts","kind":"import-statement","original":"./translations"},{"path":"packages/plugins/plugin-kanban/src/types.ts","kind":"import-statement","original":"./types"}],"format":"esm"},"packages/plugins/plugin-kanban/src/index.ts":{"bytes":594,"imports":[{"path":"packages/plugins/plugin-kanban/src/KanbanPlugin.tsx","kind":"import-statement","original":"./KanbanPlugin"},{"path":"packages/plugins/plugin-kanban/src/meta.ts","kind":"import-statement","original":"./meta"}],"format":"esm"}},"outputs":{"packages/plugins/plugin-kanban/dist/lib/node/index.cjs.map":{"imports":[],"exports":[],"inputs":{},"bytes":5969},"packages/plugins/plugin-kanban/dist/lib/node/index.cjs":{"imports":[{"path":"packages/plugins/plugin-kanban/dist/lib/node/chunk-3EUR6ZR2.cjs","kind":"import-statement"},{"path":"@dxos/app-framework","kind":"import-statement","external":true},{"path":"@dxos/plugin-client","kind":"import-statement","external":true},{"path":"@dxos/plugin-space","kind":"import-statement","external":true},{"path":"@dxos/plugin-space/types","kind":"import-statement","external":true},{"path":"@dxos/react-ui-kanban","kind":"import-statement","external":true},{"path":"@dxos/app-framework","kind":"import-statement","external":true},{"path":"packages/plugins/plugin-kanban/dist/lib/node/artifact-definition-M2XAYUI2.cjs","kind":"dynamic-import"},{"path":"packages/plugins/plugin-kanban/dist/lib/node/intent-resolver-P3PSZO7H.cjs","kind":"dynamic-import"},{"path":"packages/plugins/plugin-kanban/dist/lib/node/react-surface-FVM64YAQ.cjs","kind":"dynamic-import"},{"path":"@dxos/react-ui-kanban","kind":"import-statement","external":true}],"exports":["KANBAN_PLUGIN","KanbanPlugin","meta"],"entryPoint":"packages/plugins/plugin-kanban/src/index.ts","inputs":{"packages/plugins/plugin-kanban/src/KanbanPlugin.tsx":{"bytesInOutput":1757},"packages/plugins/plugin-kanban/src/capabilities/index.ts":{"bytesInOutput":273},"packages/plugins/plugin-kanban/src/translations.ts":{"bytesInOutput":801},"packages/plugins/plugin-kanban/src/index.ts":{"bytesInOutput":0}},"bytes":3248},"packages/plugins/plugin-kanban/dist/lib/node/types.cjs.map":{"imports":[],"exports":[],"inputs":{},"bytes":93},"packages/plugins/plugin-kanban/dist/lib/node/types.cjs":{"imports":[{"path":"packages/plugins/plugin-kanban/dist/lib/node/chunk-3EUR6ZR2.cjs","kind":"import-statement"}],"exports":["CreateKanbanSchema","KanbanAction","PivotColumnAnnotationId","TypenameAnnotationId","createKanban","isKanban"],"entryPoint":"packages/plugins/plugin-kanban/src/types.ts","inputs":{},"bytes":319},"packages/plugins/plugin-kanban/dist/lib/node/artifact-definition-M2XAYUI2.cjs.map":{"imports":[],"exports":[],"inputs":{},"bytes":8897},"packages/plugins/plugin-kanban/dist/lib/node/artifact-definition-M2XAYUI2.cjs":{"imports":[{"path":"packages/plugins/plugin-kanban/dist/lib/node/chunk-3EUR6ZR2.cjs","kind":"import-statement"},{"path":"effect","kind":"import-statement","external":true},{"path":"@dxos/app-framework","kind":"import-statement","external":true},{"path":"@dxos/artifact","kind":"import-statement","external":true},{"path":"@dxos/assistant","kind":"import-statement","external":true},{"path":"@dxos/echo-schema","kind":"import-statement","external":true},{"path":"@dxos/invariant","kind":"import-statement","external":true},{"path":"@dxos/plugin-space/types","kind":"import-statement","external":true},{"path":"@dxos/react-client/echo","kind":"import-statement","external":true},{"path":"@dxos/react-ui-kanban","kind":"import-statement","external":true}],"exports":["default"],"entryPoint":"packages/plugins/plugin-kanban/src/capabilities/artifact-definition.ts","inputs":{"packages/plugins/plugin-kanban/src/capabilities/artifact-definition.ts":{"bytesInOutput":5991}},"bytes":6240},"packages/plugins/plugin-kanban/dist/lib/node/intent-resolver-P3PSZO7H.cjs.map":{"imports":[],"exports":[],"inputs":{},"bytes":4474},"packages/plugins/plugin-kanban/dist/lib/node/intent-resolver-P3PSZO7H.cjs":{"imports":[{"path":"packages/plugins/plugin-kanban/dist/lib/node/chunk-3EUR6ZR2.cjs","kind":"import-statement"},{"path":"@dxos/app-framework","kind":"import-statement","external":true},{"path":"@dxos/invariant","kind":"import-statement","external":true},{"path":"@dxos/react-client/echo","kind":"import-statement","external":true},{"path":"@dxos/schema","kind":"import-statement","external":true}],"exports":["default"],"entryPoint":"packages/plugins/plugin-kanban/src/capabilities/intent-resolver.ts","inputs":{"packages/plugins/plugin-kanban/src/capabilities/intent-resolver.ts":{"bytesInOutput":3100}},"bytes":3362},"packages/plugins/plugin-kanban/dist/lib/node/react-surface-FVM64YAQ.cjs.map":{"imports":[],"exports":[],"inputs":{},"bytes":18461},"packages/plugins/plugin-kanban/dist/lib/node/react-surface-FVM64YAQ.cjs":{"imports":[{"path":"packages/plugins/plugin-kanban/dist/lib/node/chunk-3EUR6ZR2.cjs","kind":"import-statement"},{"path":"react","kind":"import-statement","external":true},{"path":"@dxos/app-framework","kind":"import-statement","external":true},{"path":"@dxos/effect","kind":"import-statement","external":true},{"path":"@dxos/react-client/echo","kind":"import-statement","external":true},{"path":"@dxos/react-ui-form","kind":"import-statement","external":true},{"path":"react","kind":"import-statement","external":true},{"path":"@dxos/app-framework","kind":"import-statement","external":true},{"path":"@dxos/plugin-search","kind":"import-statement","external":true},{"path":"@dxos/react-client/echo","kind":"import-statement","external":true},{"path":"@dxos/react-ui-kanban","kind":"import-statement","external":true},{"path":"@dxos/react-ui-stack","kind":"import-statement","external":true},{"path":"@dxos/schema","kind":"import-statement","external":true},{"path":"react","kind":"import-statement","external":true},{"path":"@dxos/app-framework","kind":"import-statement","external":true},{"path":"@dxos/echo-schema","kind":"import-statement","external":true},{"path":"@dxos/invariant","kind":"import-statement","external":true},{"path":"@dxos/react-client","kind":"import-statement","external":true},{"path":"@dxos/react-client/echo","kind":"import-statement","external":true},{"path":"@dxos/react-ui-form","kind":"import-statement","external":true},{"path":"@dxos/react-ui-kanban","kind":"import-statement","external":true},{"path":"@dxos/schema","kind":"import-statement","external":true}],"exports":["default"],"entryPoint":"packages/plugins/plugin-kanban/src/capabilities/react-surface.tsx","inputs":{"packages/plugins/plugin-kanban/src/capabilities/react-surface.tsx":{"bytesInOutput":3019},"packages/plugins/plugin-kanban/src/components/KanbanContainer.tsx":{"bytesInOutput":2379},"packages/plugins/plugin-kanban/src/components/index.ts":{"bytesInOutput":0},"packages/plugins/plugin-kanban/src/components/KanbanViewEditor.tsx":{"bytesInOutput":3360}},"bytes":9273},"packages/plugins/plugin-kanban/dist/lib/node/chunk-3EUR6ZR2.cjs.map":{"imports":[],"exports":[],"inputs":{},"bytes":6877},"packages/plugins/plugin-kanban/dist/lib/node/chunk-3EUR6ZR2.cjs":{"imports":[{"path":"effect/SchemaAST","kind":"import-statement","external":true},{"path":"@dxos/echo-schema","kind":"import-statement","external":true},{"path":"@dxos/react-client/echo","kind":"import-statement","external":true},{"path":"@dxos/react-ui-kanban","kind":"import-statement","external":true},{"path":"@dxos/react-ui-kanban/testing","kind":"import-statement","external":true},{"path":"@dxos/schema","kind":"import-statement","external":true}],"exports":["CreateKanbanSchema","KANBAN_PLUGIN","KanbanAction","PivotColumnAnnotationId","TypenameAnnotationId","createKanban","isKanban","meta"],"inputs":{"packages/plugins/plugin-kanban/src/types.ts":{"bytesInOutput":2243},"packages/plugins/plugin-kanban/src/meta.ts":{"bytesInOutput":564}},"bytes":3147}}}
1
+ {"inputs":{"packages/plugins/plugin-kanban/src/meta.ts":{"bytes":2245,"imports":[],"format":"esm"},"packages/plugins/plugin-kanban/src/types.ts":{"bytes":10497,"imports":[{"path":"effect","kind":"import-statement","external":true},{"path":"@dxos/react-client/echo","kind":"import-statement","external":true},{"path":"@dxos/react-ui-kanban","kind":"import-statement","external":true},{"path":"@dxos/schema","kind":"import-statement","external":true},{"path":"packages/plugins/plugin-kanban/src/meta.ts","kind":"import-statement","original":"./meta"}],"format":"esm"},"packages/plugins/plugin-kanban/src/capabilities/artifact-definition.ts":{"bytes":19965,"imports":[{"path":"effect","kind":"import-statement","external":true},{"path":"@dxos/app-framework","kind":"import-statement","external":true},{"path":"@dxos/artifact","kind":"import-statement","external":true},{"path":"@dxos/assistant","kind":"import-statement","external":true},{"path":"@dxos/echo-schema","kind":"import-statement","external":true},{"path":"@dxos/invariant","kind":"import-statement","external":true},{"path":"@dxos/plugin-space/types","kind":"import-statement","external":true},{"path":"@dxos/react-client/echo","kind":"import-statement","external":true},{"path":"@dxos/react-ui-kanban","kind":"import-statement","external":true},{"path":"packages/plugins/plugin-kanban/src/meta.ts","kind":"import-statement","original":"../meta"},{"path":"packages/plugins/plugin-kanban/src/types.ts","kind":"import-statement","original":"../types"}],"format":"esm"},"packages/plugins/plugin-kanban/src/testing/kanban-manager.ts":{"bytes":1119,"imports":[],"format":"esm"},"packages/plugins/plugin-kanban/src/testing/initialize-kanban.ts":{"bytes":17040,"imports":[{"path":"effect","kind":"import-statement","external":true},{"path":"@dxos/echo-schema","kind":"import-statement","external":true},{"path":"@dxos/invariant","kind":"import-statement","external":true},{"path":"@dxos/react-client","kind":"import-statement","external":true},{"path":"@dxos/react-client/echo","kind":"import-statement","external":true},{"path":"@dxos/react-ui-kanban","kind":"import-statement","external":true},{"path":"@dxos/schema","kind":"import-statement","external":true},{"path":"@dxos/util","kind":"import-statement","external":true}],"format":"esm"},"packages/plugins/plugin-kanban/src/testing/index.ts":{"bytes":641,"imports":[{"path":"packages/plugins/plugin-kanban/src/testing/kanban-manager.ts","kind":"import-statement","original":"./kanban-manager"},{"path":"packages/plugins/plugin-kanban/src/testing/initialize-kanban.ts","kind":"import-statement","original":"./initialize-kanban"}],"format":"esm"},"packages/plugins/plugin-kanban/src/capabilities/intent-resolver.ts":{"bytes":11905,"imports":[{"path":"@dxos/app-framework","kind":"import-statement","external":true},{"path":"@dxos/invariant","kind":"import-statement","external":true},{"path":"@dxos/plugin-client","kind":"import-statement","external":true},{"path":"@dxos/react-client/echo","kind":"import-statement","external":true},{"path":"@dxos/schema","kind":"import-statement","external":true},{"path":"packages/plugins/plugin-kanban/src/meta.ts","kind":"import-statement","original":"../meta"},{"path":"packages/plugins/plugin-kanban/src/testing/index.ts","kind":"import-statement","original":"../testing"},{"path":"packages/plugins/plugin-kanban/src/types.ts","kind":"import-statement","original":"../types"}],"format":"esm"},"packages/plugins/plugin-kanban/src/components/KanbanContainer.tsx":{"bytes":12004,"imports":[{"path":"react","kind":"import-statement","external":true},{"path":"@dxos/app-framework","kind":"import-statement","external":true},{"path":"@dxos/echo-schema","kind":"import-statement","external":true},{"path":"@dxos/plugin-search","kind":"import-statement","external":true},{"path":"@dxos/react-client","kind":"import-statement","external":true},{"path":"@dxos/react-client/echo","kind":"import-statement","external":true},{"path":"@dxos/react-ui-kanban","kind":"import-statement","external":true},{"path":"@dxos/react-ui-stack","kind":"import-statement","external":true},{"path":"@dxos/schema","kind":"import-statement","external":true},{"path":"packages/plugins/plugin-kanban/src/types.ts","kind":"import-statement","original":"../types"}],"format":"esm"},"packages/plugins/plugin-kanban/src/components/KanbanViewEditor.tsx":{"bytes":12989,"imports":[{"path":"react","kind":"import-statement","external":true},{"path":"@dxos/app-framework","kind":"import-statement","external":true},{"path":"@dxos/echo","kind":"import-statement","external":true},{"path":"@dxos/echo-schema","kind":"import-statement","external":true},{"path":"@dxos/invariant","kind":"import-statement","external":true},{"path":"@dxos/react-client","kind":"import-statement","external":true},{"path":"@dxos/react-client/echo","kind":"import-statement","external":true},{"path":"@dxos/react-ui-form","kind":"import-statement","external":true},{"path":"@dxos/react-ui-kanban","kind":"import-statement","external":true},{"path":"@dxos/schema","kind":"import-statement","external":true},{"path":"packages/plugins/plugin-kanban/src/types.ts","kind":"import-statement","original":"../types"}],"format":"esm"},"packages/plugins/plugin-kanban/src/components/index.ts":{"bytes":644,"imports":[{"path":"packages/plugins/plugin-kanban/src/components/KanbanContainer.tsx","kind":"import-statement","original":"./KanbanContainer"},{"path":"packages/plugins/plugin-kanban/src/components/KanbanViewEditor.tsx","kind":"import-statement","original":"./KanbanViewEditor"}],"format":"esm"},"packages/plugins/plugin-kanban/src/capabilities/react-surface.tsx":{"bytes":17888,"imports":[{"path":"react","kind":"import-statement","external":true},{"path":"@dxos/app-framework","kind":"import-statement","external":true},{"path":"@dxos/echo-schema","kind":"import-statement","external":true},{"path":"@dxos/effect","kind":"import-statement","external":true},{"path":"@dxos/plugin-client","kind":"import-statement","external":true},{"path":"@dxos/react-client","kind":"import-statement","external":true},{"path":"@dxos/react-client/echo","kind":"import-statement","external":true},{"path":"@dxos/react-ui-form","kind":"import-statement","external":true},{"path":"packages/plugins/plugin-kanban/src/components/index.ts","kind":"import-statement","original":"../components"},{"path":"packages/plugins/plugin-kanban/src/meta.ts","kind":"import-statement","original":"../meta"},{"path":"packages/plugins/plugin-kanban/src/types.ts","kind":"import-statement","original":"../types"}],"format":"esm"},"packages/plugins/plugin-kanban/src/capabilities/index.ts":{"bytes":1366,"imports":[{"path":"@dxos/app-framework","kind":"import-statement","external":true},{"path":"packages/plugins/plugin-kanban/src/capabilities/artifact-definition.ts","kind":"dynamic-import","original":"./artifact-definition"},{"path":"packages/plugins/plugin-kanban/src/capabilities/intent-resolver.ts","kind":"dynamic-import","original":"./intent-resolver"},{"path":"packages/plugins/plugin-kanban/src/capabilities/react-surface.tsx","kind":"dynamic-import","original":"./react-surface"}],"format":"esm"},"packages/plugins/plugin-kanban/src/translations.ts":{"bytes":3122,"imports":[{"path":"@dxos/react-ui-kanban","kind":"import-statement","external":true},{"path":"packages/plugins/plugin-kanban/src/meta.ts","kind":"import-statement","original":"./meta"}],"format":"esm"},"packages/plugins/plugin-kanban/src/KanbanPlugin.tsx":{"bytes":8396,"imports":[{"path":"@dxos/app-framework","kind":"import-statement","external":true},{"path":"@dxos/plugin-client","kind":"import-statement","external":true},{"path":"@dxos/plugin-space","kind":"import-statement","external":true},{"path":"@dxos/plugin-space/types","kind":"import-statement","external":true},{"path":"@dxos/react-ui-kanban","kind":"import-statement","external":true},{"path":"packages/plugins/plugin-kanban/src/capabilities/index.ts","kind":"import-statement","original":"./capabilities"},{"path":"packages/plugins/plugin-kanban/src/meta.ts","kind":"import-statement","original":"./meta"},{"path":"packages/plugins/plugin-kanban/src/translations.ts","kind":"import-statement","original":"./translations"},{"path":"packages/plugins/plugin-kanban/src/types.ts","kind":"import-statement","original":"./types"}],"format":"esm"},"packages/plugins/plugin-kanban/src/index.ts":{"bytes":594,"imports":[{"path":"packages/plugins/plugin-kanban/src/KanbanPlugin.tsx","kind":"import-statement","original":"./KanbanPlugin"},{"path":"packages/plugins/plugin-kanban/src/meta.ts","kind":"import-statement","original":"./meta"}],"format":"esm"}},"outputs":{"packages/plugins/plugin-kanban/dist/lib/node/index.cjs.map":{"imports":[],"exports":[],"inputs":{},"bytes":5969},"packages/plugins/plugin-kanban/dist/lib/node/index.cjs":{"imports":[{"path":"packages/plugins/plugin-kanban/dist/lib/node/chunk-O4U7ZQ2I.cjs","kind":"import-statement"},{"path":"@dxos/app-framework","kind":"import-statement","external":true},{"path":"@dxos/plugin-client","kind":"import-statement","external":true},{"path":"@dxos/plugin-space","kind":"import-statement","external":true},{"path":"@dxos/plugin-space/types","kind":"import-statement","external":true},{"path":"@dxos/react-ui-kanban","kind":"import-statement","external":true},{"path":"@dxos/app-framework","kind":"import-statement","external":true},{"path":"packages/plugins/plugin-kanban/dist/lib/node/artifact-definition-M57SFWWP.cjs","kind":"dynamic-import"},{"path":"packages/plugins/plugin-kanban/dist/lib/node/intent-resolver-IBMSLMHX.cjs","kind":"dynamic-import"},{"path":"packages/plugins/plugin-kanban/dist/lib/node/react-surface-ZABOI7UC.cjs","kind":"dynamic-import"},{"path":"@dxos/react-ui-kanban","kind":"import-statement","external":true}],"exports":["KANBAN_PLUGIN","KanbanPlugin","meta"],"entryPoint":"packages/plugins/plugin-kanban/src/index.ts","inputs":{"packages/plugins/plugin-kanban/src/KanbanPlugin.tsx":{"bytesInOutput":1757},"packages/plugins/plugin-kanban/src/capabilities/index.ts":{"bytesInOutput":273},"packages/plugins/plugin-kanban/src/translations.ts":{"bytesInOutput":801},"packages/plugins/plugin-kanban/src/index.ts":{"bytesInOutput":0}},"bytes":3248},"packages/plugins/plugin-kanban/dist/lib/node/types.cjs.map":{"imports":[],"exports":[],"inputs":{},"bytes":93},"packages/plugins/plugin-kanban/dist/lib/node/types.cjs":{"imports":[{"path":"packages/plugins/plugin-kanban/dist/lib/node/chunk-O4U7ZQ2I.cjs","kind":"import-statement"}],"exports":["CreateKanbanSchema","KanbanAction","PivotColumnAnnotationId","TypenameAnnotationId","isKanban"],"entryPoint":"packages/plugins/plugin-kanban/src/types.ts","inputs":{},"bytes":287},"packages/plugins/plugin-kanban/dist/lib/node/artifact-definition-M57SFWWP.cjs.map":{"imports":[],"exports":[],"inputs":{},"bytes":8954},"packages/plugins/plugin-kanban/dist/lib/node/artifact-definition-M57SFWWP.cjs":{"imports":[{"path":"packages/plugins/plugin-kanban/dist/lib/node/chunk-O4U7ZQ2I.cjs","kind":"import-statement"},{"path":"effect","kind":"import-statement","external":true},{"path":"@dxos/app-framework","kind":"import-statement","external":true},{"path":"@dxos/artifact","kind":"import-statement","external":true},{"path":"@dxos/assistant","kind":"import-statement","external":true},{"path":"@dxos/echo-schema","kind":"import-statement","external":true},{"path":"@dxos/invariant","kind":"import-statement","external":true},{"path":"@dxos/plugin-space/types","kind":"import-statement","external":true},{"path":"@dxos/react-client/echo","kind":"import-statement","external":true},{"path":"@dxos/react-ui-kanban","kind":"import-statement","external":true}],"exports":["default"],"entryPoint":"packages/plugins/plugin-kanban/src/capabilities/artifact-definition.ts","inputs":{"packages/plugins/plugin-kanban/src/capabilities/artifact-definition.ts":{"bytesInOutput":6027}},"bytes":6276},"packages/plugins/plugin-kanban/dist/lib/node/intent-resolver-IBMSLMHX.cjs.map":{"imports":[],"exports":[],"inputs":{},"bytes":13230},"packages/plugins/plugin-kanban/dist/lib/node/intent-resolver-IBMSLMHX.cjs":{"imports":[{"path":"packages/plugins/plugin-kanban/dist/lib/node/chunk-O4U7ZQ2I.cjs","kind":"import-statement"},{"path":"@dxos/app-framework","kind":"import-statement","external":true},{"path":"@dxos/invariant","kind":"import-statement","external":true},{"path":"@dxos/plugin-client","kind":"import-statement","external":true},{"path":"@dxos/react-client/echo","kind":"import-statement","external":true},{"path":"@dxos/schema","kind":"import-statement","external":true},{"path":"effect","kind":"import-statement","external":true},{"path":"@dxos/echo-schema","kind":"import-statement","external":true},{"path":"@dxos/invariant","kind":"import-statement","external":true},{"path":"@dxos/react-client","kind":"import-statement","external":true},{"path":"@dxos/react-client/echo","kind":"import-statement","external":true},{"path":"@dxos/react-ui-kanban","kind":"import-statement","external":true},{"path":"@dxos/schema","kind":"import-statement","external":true},{"path":"@dxos/util","kind":"import-statement","external":true}],"exports":["default"],"entryPoint":"packages/plugins/plugin-kanban/src/capabilities/intent-resolver.ts","inputs":{"packages/plugins/plugin-kanban/src/capabilities/intent-resolver.ts":{"bytesInOutput":3352},"packages/plugins/plugin-kanban/src/testing/index.ts":{"bytesInOutput":0},"packages/plugins/plugin-kanban/src/testing/initialize-kanban.ts":{"bytesInOutput":4595}},"bytes":8332},"packages/plugins/plugin-kanban/dist/lib/node/react-surface-ZABOI7UC.cjs.map":{"imports":[],"exports":[],"inputs":{},"bytes":22455},"packages/plugins/plugin-kanban/dist/lib/node/react-surface-ZABOI7UC.cjs":{"imports":[{"path":"packages/plugins/plugin-kanban/dist/lib/node/chunk-O4U7ZQ2I.cjs","kind":"import-statement"},{"path":"react","kind":"import-statement","external":true},{"path":"@dxos/app-framework","kind":"import-statement","external":true},{"path":"@dxos/echo-schema","kind":"import-statement","external":true},{"path":"@dxos/effect","kind":"import-statement","external":true},{"path":"@dxos/plugin-client","kind":"import-statement","external":true},{"path":"@dxos/react-client","kind":"import-statement","external":true},{"path":"@dxos/react-client/echo","kind":"import-statement","external":true},{"path":"@dxos/react-ui-form","kind":"import-statement","external":true},{"path":"react","kind":"import-statement","external":true},{"path":"@dxos/app-framework","kind":"import-statement","external":true},{"path":"@dxos/echo-schema","kind":"import-statement","external":true},{"path":"@dxos/plugin-search","kind":"import-statement","external":true},{"path":"@dxos/react-client","kind":"import-statement","external":true},{"path":"@dxos/react-client/echo","kind":"import-statement","external":true},{"path":"@dxos/react-ui-kanban","kind":"import-statement","external":true},{"path":"@dxos/react-ui-stack","kind":"import-statement","external":true},{"path":"@dxos/schema","kind":"import-statement","external":true},{"path":"react","kind":"import-statement","external":true},{"path":"@dxos/app-framework","kind":"import-statement","external":true},{"path":"@dxos/echo","kind":"import-statement","external":true},{"path":"@dxos/echo-schema","kind":"import-statement","external":true},{"path":"@dxos/invariant","kind":"import-statement","external":true},{"path":"@dxos/react-client","kind":"import-statement","external":true},{"path":"@dxos/react-client/echo","kind":"import-statement","external":true},{"path":"@dxos/react-ui-form","kind":"import-statement","external":true},{"path":"@dxos/react-ui-kanban","kind":"import-statement","external":true},{"path":"@dxos/schema","kind":"import-statement","external":true}],"exports":["default"],"entryPoint":"packages/plugins/plugin-kanban/src/capabilities/react-surface.tsx","inputs":{"packages/plugins/plugin-kanban/src/capabilities/react-surface.tsx":{"bytesInOutput":4227},"packages/plugins/plugin-kanban/src/components/KanbanContainer.tsx":{"bytesInOutput":2872},"packages/plugins/plugin-kanban/src/components/index.ts":{"bytesInOutput":0},"packages/plugins/plugin-kanban/src/components/KanbanViewEditor.tsx":{"bytesInOutput":3545}},"bytes":11159},"packages/plugins/plugin-kanban/dist/lib/node/chunk-O4U7ZQ2I.cjs.map":{"imports":[],"exports":[],"inputs":{},"bytes":6370},"packages/plugins/plugin-kanban/dist/lib/node/chunk-O4U7ZQ2I.cjs":{"imports":[{"path":"effect","kind":"import-statement","external":true},{"path":"@dxos/react-client/echo","kind":"import-statement","external":true},{"path":"@dxos/react-ui-kanban","kind":"import-statement","external":true},{"path":"@dxos/schema","kind":"import-statement","external":true}],"exports":["CreateKanbanSchema","KANBAN_PLUGIN","KanbanAction","PivotColumnAnnotationId","TypenameAnnotationId","isKanban","meta"],"inputs":{"packages/plugins/plugin-kanban/src/types.ts":{"bytesInOutput":2055},"packages/plugins/plugin-kanban/src/meta.ts":{"bytesInOutput":564}},"bytes":2943}}}
@@ -26,42 +26,57 @@ var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__ge
26
26
  mod
27
27
  ));
28
28
  var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
29
- var react_surface_FVM64YAQ_exports = {};
30
- __export(react_surface_FVM64YAQ_exports, {
29
+ var react_surface_ZABOI7UC_exports = {};
30
+ __export(react_surface_ZABOI7UC_exports, {
31
31
  default: () => react_surface_default
32
32
  });
33
- module.exports = __toCommonJS(react_surface_FVM64YAQ_exports);
34
- var import_chunk_3EUR6ZR2 = require("./chunk-3EUR6ZR2.cjs");
33
+ module.exports = __toCommonJS(react_surface_ZABOI7UC_exports);
34
+ var import_chunk_O4U7ZQ2I = require("./chunk-O4U7ZQ2I.cjs");
35
35
  var import_react = __toESM(require("react"));
36
36
  var import_app_framework = require("@dxos/app-framework");
37
+ var import_echo_schema = require("@dxos/echo-schema");
37
38
  var import_effect = require("@dxos/effect");
39
+ var import_plugin_client = require("@dxos/plugin-client");
40
+ var import_react_client = require("@dxos/react-client");
38
41
  var import_echo = require("@dxos/react-client/echo");
39
42
  var import_react_ui_form = require("@dxos/react-ui-form");
40
43
  var import_react2 = __toESM(require("react"));
41
44
  var import_app_framework2 = require("@dxos/app-framework");
45
+ var import_echo_schema2 = require("@dxos/echo-schema");
42
46
  var import_plugin_search = require("@dxos/plugin-search");
47
+ var import_react_client2 = require("@dxos/react-client");
43
48
  var import_echo2 = require("@dxos/react-client/echo");
44
49
  var import_react_ui_kanban = require("@dxos/react-ui-kanban");
45
50
  var import_react_ui_stack = require("@dxos/react-ui-stack");
46
51
  var import_schema = require("@dxos/schema");
47
52
  var import_react3 = __toESM(require("react"));
48
53
  var import_app_framework3 = require("@dxos/app-framework");
49
- var import_echo_schema = require("@dxos/echo-schema");
54
+ var import_echo3 = require("@dxos/echo");
55
+ var import_echo_schema3 = require("@dxos/echo-schema");
50
56
  var import_invariant = require("@dxos/invariant");
51
- var import_react_client = require("@dxos/react-client");
52
- var import_echo3 = require("@dxos/react-client/echo");
57
+ var import_react_client3 = require("@dxos/react-client");
58
+ var import_echo4 = require("@dxos/react-client/echo");
53
59
  var import_react_ui_form2 = require("@dxos/react-ui-form");
54
60
  var import_react_ui_kanban2 = require("@dxos/react-ui-kanban");
55
61
  var import_schema2 = require("@dxos/schema");
56
62
  var KanbanContainer = ({ kanban }) => {
63
+ const client = (0, import_react_client2.useClient)();
57
64
  const [cardSchema, setCardSchema] = (0, import_react2.useState)();
58
65
  const [projection, setProjection] = (0, import_react2.useState)();
59
66
  const space = (0, import_echo2.getSpace)(kanban);
60
67
  const { dispatchPromise: dispatch } = (0, import_app_framework2.useIntentDispatcher)();
68
+ const jsonSchema = (0, import_react2.useMemo)(() => cardSchema instanceof import_echo_schema2.EchoSchema ? cardSchema.jsonSchema : cardSchema ? (0, import_echo_schema2.toJsonSchema)(cardSchema) : void 0, [
69
+ cardSchema
70
+ ]);
61
71
  (0, import_react2.useEffect)(() => {
62
- if (kanban.cardView?.target?.query?.typename && space) {
72
+ const typename = kanban.cardView?.target?.query?.typename;
73
+ const staticSchema = client.graph.schemaRegistry.schemas.find((schema) => (0, import_echo_schema2.getTypenameOrThrow)(schema) === typename);
74
+ if (staticSchema) {
75
+ setCardSchema(() => staticSchema);
76
+ }
77
+ if (!staticSchema && typename && space) {
63
78
  const query = space.db.schemaRegistry.query({
64
- typename: kanban.cardView.target.query.typename
79
+ typename
65
80
  });
66
81
  const unsubscribe = query.subscribe(() => {
67
82
  const [schema] = query.results;
@@ -78,15 +93,14 @@ var KanbanContainer = ({ kanban }) => {
78
93
  space
79
94
  ]);
80
95
  (0, import_react2.useEffect)(() => {
81
- if (kanban.cardView?.target && cardSchema) {
82
- setProjection(new import_schema.ViewProjection(cardSchema.jsonSchema, kanban.cardView.target));
96
+ if (kanban.cardView?.target && jsonSchema) {
97
+ setProjection(new import_schema.ViewProjection(jsonSchema, kanban.cardView.target));
83
98
  }
84
99
  }, [
85
100
  kanban.cardView?.target,
86
- cardSchema,
87
- JSON.stringify(cardSchema?.jsonSchema)
101
+ JSON.stringify(jsonSchema)
88
102
  ]);
89
- const objects = (0, import_echo2.useQuery)(space, cardSchema ? import_echo2.Filter.schema(cardSchema) : import_echo2.Filter.nothing());
103
+ const objects = (0, import_echo2.useQuery)(space, cardSchema ? import_echo2.Filter.type(cardSchema) : import_echo2.Filter.nothing());
90
104
  const filteredObjects = (0, import_plugin_search.useGlobalFilteredObjects)(objects);
91
105
  const model = (0, import_react_ui_kanban.useKanbanModel)({
92
106
  kanban,
@@ -109,7 +123,7 @@ var KanbanContainer = ({ kanban }) => {
109
123
  model
110
124
  ]);
111
125
  const handleRemoveCard = (0, import_react2.useCallback)((card) => {
112
- void dispatch((0, import_app_framework2.createIntent)(import_chunk_3EUR6ZR2.KanbanAction.DeleteCard, {
126
+ void dispatch((0, import_app_framework2.createIntent)(import_chunk_O4U7ZQ2I.KanbanAction.DeleteCard, {
113
127
  card
114
128
  }));
115
129
  }, [
@@ -124,17 +138,17 @@ var KanbanContainer = ({ kanban }) => {
124
138
  var __dxlog_file = "/home/runner/work/dxos/dxos/packages/plugins/plugin-kanban/src/components/KanbanViewEditor.tsx";
125
139
  var KanbanViewEditor = ({ kanban }) => {
126
140
  const { dispatchPromise: dispatch } = (0, import_app_framework3.useIntentDispatcher)();
127
- const client = (0, import_react_client.useClient)();
128
- const space = (0, import_echo3.getSpace)(kanban);
141
+ const client = (0, import_react_client3.useClient)();
142
+ const space = (0, import_echo4.getSpace)(kanban);
129
143
  const currentTypename = (0, import_react3.useMemo)(() => kanban?.cardView?.target?.query?.typename, [
130
144
  kanban?.cardView?.target?.query?.typename
131
145
  ]);
132
- const schema = (0, import_echo3.useSchema)(client, space, currentTypename);
133
- const views = (0, import_echo3.useQuery)(space, import_echo3.Filter.schema(import_schema2.ViewType));
146
+ const schema = (0, import_echo4.useSchema)(client, space, currentTypename);
147
+ const views = (0, import_echo4.useQuery)(space, import_echo4.Filter.type(import_schema2.ViewType));
134
148
  const handleUpdateTypename = (0, import_react3.useCallback)((newTypename) => {
135
149
  (0, import_invariant.invariant)(schema, void 0, {
136
150
  F: __dxlog_file,
137
- L: 33,
151
+ L: 34,
138
152
  S: void 0,
139
153
  A: [
140
154
  "schema",
@@ -145,13 +159,13 @@ var KanbanViewEditor = ({ kanban }) => {
145
159
  for (const view of matchingViews) {
146
160
  view.query.typename = newTypename;
147
161
  }
148
- schema.mutable.updateTypename(newTypename);
162
+ (0, import_echo_schema3.assertEchoSchema)(schema).updateTypename(newTypename);
149
163
  }, [
150
164
  views,
151
165
  schema
152
166
  ]);
153
167
  const handleDelete = (0, import_react3.useCallback)((fieldId) => {
154
- void dispatch?.((0, import_app_framework3.createIntent)(import_chunk_3EUR6ZR2.KanbanAction.DeleteCardField, {
168
+ void dispatch?.((0, import_app_framework3.createIntent)(import_chunk_O4U7ZQ2I.KanbanAction.DeleteCardField, {
155
169
  kanban,
156
170
  fieldId
157
171
  }));
@@ -161,15 +175,16 @@ var KanbanViewEditor = ({ kanban }) => {
161
175
  ]);
162
176
  const projection = (0, import_react3.useMemo)(() => {
163
177
  if (kanban?.cardView?.target && schema) {
164
- return new import_schema2.ViewProjection(schema.jsonSchema, kanban.cardView.target);
178
+ const jsonSchema = import_echo3.Type.toJsonSchema(schema);
179
+ return new import_schema2.ViewProjection(jsonSchema, kanban.cardView.target);
165
180
  }
166
181
  }, [
167
182
  kanban?.cardView?.target,
168
183
  schema,
169
- JSON.stringify(schema)
184
+ JSON.stringify(schema ? import_echo3.Type.toJsonSchema(schema) : {})
170
185
  ]);
171
186
  const fieldProjections = projection?.getFieldProjections() || [];
172
- const selectFields = fieldProjections.filter((field) => field.props.format === import_echo_schema.FormatEnum.SingleSelect).map(({ field }) => ({
187
+ const selectFields = fieldProjections.filter((field) => field.props.format === import_echo_schema3.FormatEnum.SingleSelect).map(({ field }) => ({
173
188
  value: field.id,
174
189
  label: field.path
175
190
  }));
@@ -204,58 +219,71 @@ var KanbanViewEditor = ({ kanban }) => {
204
219
  registry: space.db.schemaRegistry,
205
220
  schema,
206
221
  view: kanban.cardView.target,
207
- onTypenameChanged: schema.readonly ? void 0 : handleUpdateTypename,
208
- onDelete: schema.readonly ? void 0 : handleDelete
222
+ onTypenameChanged: (0, import_echo_schema3.isMutable)(schema) ? handleUpdateTypename : void 0,
223
+ onDelete: (0, import_echo_schema3.isMutable)(schema) ? handleDelete : void 0
209
224
  }));
210
225
  };
211
226
  var react_surface_default = () => (0, import_app_framework.contributes)(import_app_framework.Capabilities.ReactSurface, [
212
227
  (0, import_app_framework.createSurface)({
213
- id: `${import_chunk_3EUR6ZR2.KANBAN_PLUGIN}/kanban`,
228
+ id: `${import_chunk_O4U7ZQ2I.KANBAN_PLUGIN}/kanban`,
214
229
  role: [
215
230
  "article",
216
231
  "section"
217
232
  ],
218
- filter: (data) => (0, import_chunk_3EUR6ZR2.isKanban)(data.subject),
233
+ filter: (data) => (0, import_chunk_O4U7ZQ2I.isKanban)(data.subject),
219
234
  component: ({ data, role }) => /* @__PURE__ */ import_react.default.createElement(KanbanContainer, {
220
235
  kanban: data.subject,
221
236
  role
222
237
  })
223
238
  }),
224
239
  (0, import_app_framework.createSurface)({
225
- id: `${import_chunk_3EUR6ZR2.KANBAN_PLUGIN}/object-settings`,
240
+ id: `${import_chunk_O4U7ZQ2I.KANBAN_PLUGIN}/object-settings`,
226
241
  role: "object-settings",
227
- filter: (data) => (0, import_chunk_3EUR6ZR2.isKanban)(data.subject),
242
+ filter: (data) => (0, import_chunk_O4U7ZQ2I.isKanban)(data.subject),
228
243
  component: ({ data }) => /* @__PURE__ */ import_react.default.createElement(KanbanViewEditor, {
229
244
  kanban: data.subject
230
245
  })
231
246
  }),
232
247
  (0, import_app_framework.createSurface)({
233
- id: `${import_chunk_3EUR6ZR2.KANBAN_PLUGIN}/create-initial-schema-form-[schema]`,
248
+ id: `${import_chunk_O4U7ZQ2I.KANBAN_PLUGIN}/create-initial-schema-form`,
234
249
  role: "form-input",
235
250
  filter: (data) => {
236
- const annotation = (0, import_effect.findAnnotation)(data.schema.ast, import_chunk_3EUR6ZR2.TypenameAnnotationId);
251
+ if (data.prop !== "typename") {
252
+ return false;
253
+ }
254
+ const annotation = (0, import_effect.findAnnotation)(data.schema.ast, import_chunk_O4U7ZQ2I.TypenameAnnotationId);
237
255
  return !!annotation;
238
256
  },
239
257
  component: ({ data: { target }, ...inputProps }) => {
258
+ const client = (0, import_react_client.useClient)();
240
259
  const props = inputProps;
241
260
  const space = (0, import_echo.isSpace)(target) ? target : (0, import_echo.getSpace)(target);
242
261
  if (!space) {
243
262
  return null;
244
263
  }
245
- const schemata = space?.db.schemaRegistry.query().runSync();
264
+ const schemaWhitelists = (0, import_app_framework.useCapabilities)(import_plugin_client.ClientCapabilities.SchemaWhiteList);
265
+ const whitelistedTypenames = (0, import_react.useMemo)(() => new Set(schemaWhitelists.flatMap((typeArray) => typeArray.map((type) => type.typename))), [
266
+ schemaWhitelists
267
+ ]);
268
+ const fixed = client.graph.schemaRegistry.schemas.filter((schema) => whitelistedTypenames.has((0, import_echo_schema.getTypenameOrThrow)(schema)));
269
+ const dynamic = space?.db.schemaRegistry.query().runSync();
270
+ const typenames = Array.from(/* @__PURE__ */ new Set([
271
+ ...fixed.map((schema) => (0, import_echo_schema.getTypenameOrThrow)(schema)),
272
+ ...dynamic.map((schema) => schema.typename)
273
+ ])).sort();
246
274
  return /* @__PURE__ */ import_react.default.createElement(import_react_ui_form.SelectInput, {
247
275
  ...props,
248
- options: schemata.map((schema) => ({
249
- value: schema.typename
276
+ options: typenames.map((typename) => ({
277
+ value: typename
250
278
  }))
251
279
  });
252
280
  }
253
281
  }),
254
282
  (0, import_app_framework.createSurface)({
255
- id: `${import_chunk_3EUR6ZR2.KANBAN_PLUGIN}/create-initial-schema-form-[pivot-column]`,
283
+ id: `${import_chunk_O4U7ZQ2I.KANBAN_PLUGIN}/create-initial-schema-form-[pivot-column]`,
256
284
  role: "form-input",
257
285
  filter: (data) => {
258
- const annotation = (0, import_effect.findAnnotation)(data.schema.ast, import_chunk_3EUR6ZR2.PivotColumnAnnotationId);
286
+ const annotation = (0, import_effect.findAnnotation)(data.schema.ast, import_chunk_O4U7ZQ2I.PivotColumnAnnotationId);
259
287
  return !!annotation;
260
288
  },
261
289
  component: ({ data: { target }, ...inputProps }) => {
@@ -265,14 +293,17 @@ var react_surface_default = () => (0, import_app_framework.contributes)(import_a
265
293
  return null;
266
294
  }
267
295
  const { typename } = (0, import_react_ui_form.useFormValues)();
296
+ const schemaWhitelists = (0, import_app_framework.useCapabilities)(import_plugin_client.ClientCapabilities.SchemaWhiteList);
297
+ const staticSchema = schemaWhitelists.flat().find((schema) => (0, import_echo_schema.getTypenameOrThrow)(schema) === typename);
268
298
  const [selectedSchema] = space?.db.schemaRegistry.query({
269
299
  typename
270
300
  }).runSync();
271
301
  const singleSelectColumns = (0, import_react.useMemo)(() => {
272
- if (!selectedSchema?.jsonSchema?.properties) {
302
+ const properties = staticSchema ? (0, import_echo_schema.toJsonSchema)(staticSchema).properties : selectedSchema?.jsonSchema?.properties;
303
+ if (!properties) {
273
304
  return [];
274
305
  }
275
- const columns = Object.entries(selectedSchema.jsonSchema.properties).reduce((acc, [key, value]) => {
306
+ const columns = Object.entries(properties).reduce((acc, [key, value]) => {
276
307
  if (typeof value === "object" && value?.format === "single-select") {
277
308
  acc.push(key);
278
309
  }
@@ -280,7 +311,8 @@ var react_surface_default = () => (0, import_app_framework.contributes)(import_a
280
311
  }, []);
281
312
  return columns;
282
313
  }, [
283
- selectedSchema?.jsonSchema
314
+ selectedSchema?.jsonSchema,
315
+ staticSchema
284
316
  ]);
285
317
  if (!typename) {
286
318
  return null;
@@ -294,4 +326,4 @@ var react_surface_default = () => (0, import_app_framework.contributes)(import_a
294
326
  }
295
327
  })
296
328
  ]);
297
- //# sourceMappingURL=react-surface-FVM64YAQ.cjs.map
329
+ //# sourceMappingURL=react-surface-ZABOI7UC.cjs.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../src/capabilities/react-surface.tsx", "../../../src/components/KanbanContainer.tsx", "../../../src/components/KanbanViewEditor.tsx"],
4
+ "sourcesContent": ["//\n// Copyright 2025 DXOS.org\n//\n\nimport { type Schema } from 'effect';\nimport React, { useMemo } from 'react';\n\nimport { Capabilities, contributes, createSurface, useCapabilities } from '@dxos/app-framework';\nimport { getTypenameOrThrow, toJsonSchema } from '@dxos/echo-schema';\nimport { findAnnotation } from '@dxos/effect';\nimport { ClientCapabilities } from '@dxos/plugin-client';\nimport { type CollectionType } from '@dxos/plugin-space/types';\nimport { useClient } from '@dxos/react-client';\nimport { getSpace, isSpace, type Space } from '@dxos/react-client/echo';\nimport { type InputProps, SelectInput, useFormValues } from '@dxos/react-ui-form';\nimport { type KanbanType } from '@dxos/react-ui-kanban';\n\nimport { KanbanContainer, KanbanViewEditor } from '../components';\nimport { KANBAN_PLUGIN } from '../meta';\nimport { isKanban, TypenameAnnotationId, PivotColumnAnnotationId } from '../types';\n\nexport default () =>\n contributes(Capabilities.ReactSurface, [\n createSurface({\n id: `${KANBAN_PLUGIN}/kanban`,\n role: ['article', 'section'],\n filter: (data): data is { subject: KanbanType } => isKanban(data.subject),\n component: ({ data, role }) => <KanbanContainer kanban={data.subject} role={role} />,\n }),\n createSurface({\n id: `${KANBAN_PLUGIN}/object-settings`,\n role: 'object-settings',\n filter: (data): data is { subject: KanbanType } => isKanban(data.subject),\n component: ({ data }) => <KanbanViewEditor kanban={data.subject} />,\n }),\n createSurface({\n id: `${KANBAN_PLUGIN}/create-initial-schema-form`,\n role: 'form-input',\n filter: (\n data,\n ): data is { prop: string; schema: Schema.Schema<any>; target: Space | CollectionType | undefined } => {\n if (data.prop !== 'typename') {\n return false;\n }\n\n const annotation = findAnnotation<boolean>((data.schema as Schema.Schema.All).ast, TypenameAnnotationId);\n return !!annotation;\n },\n component: ({ data: { target }, ...inputProps }) => {\n const client = useClient();\n const props = inputProps as any as InputProps;\n const space = isSpace(target) ? target : getSpace(target);\n if (!space) {\n return null;\n }\n\n const schemaWhitelists = useCapabilities(ClientCapabilities.SchemaWhiteList);\n const whitelistedTypenames = useMemo(\n () => new Set(schemaWhitelists.flatMap((typeArray) => typeArray.map((type) => type.typename))),\n [schemaWhitelists],\n );\n\n const fixed = client.graph.schemaRegistry.schemas.filter((schema) =>\n whitelistedTypenames.has(getTypenameOrThrow(schema)),\n );\n const dynamic = space?.db.schemaRegistry.query().runSync();\n const typenames = Array.from(\n new Set<string>([\n ...fixed.map((schema) => getTypenameOrThrow(schema)),\n ...dynamic.map((schema) => schema.typename),\n ]),\n ).sort();\n\n return <SelectInput {...props} options={typenames.map((typename) => ({ value: typename }))} />;\n },\n }),\n createSurface({\n id: `${KANBAN_PLUGIN}/create-initial-schema-form-[pivot-column]`,\n role: 'form-input',\n filter: (\n data,\n ): data is { prop: string; schema: Schema.Schema<any>; target: Space | CollectionType | undefined } => {\n const annotation = findAnnotation<boolean>((data.schema as Schema.Schema.All).ast, PivotColumnAnnotationId);\n return !!annotation;\n },\n component: ({ data: { target }, ...inputProps }) => {\n const props = inputProps as any as InputProps;\n const space = isSpace(target) ? target : getSpace(target);\n if (!space) {\n return null;\n }\n const { typename } = useFormValues();\n // TODO(wittjosiah): Unify this schema lookup.\n const schemaWhitelists = useCapabilities(ClientCapabilities.SchemaWhiteList);\n const staticSchema = schemaWhitelists.flat().find((schema) => getTypenameOrThrow(schema) === typename);\n const [selectedSchema] = space?.db.schemaRegistry.query({ typename }).runSync();\n\n const singleSelectColumns = useMemo(() => {\n const properties = staticSchema\n ? toJsonSchema(staticSchema).properties\n : selectedSchema?.jsonSchema?.properties;\n if (!properties) {\n return [];\n }\n\n const columns = Object.entries(properties).reduce<string[]>((acc, [key, value]) => {\n if (typeof value === 'object' && value?.format === 'single-select') {\n acc.push(key);\n }\n return acc;\n }, []);\n\n return columns;\n }, [selectedSchema?.jsonSchema, staticSchema]);\n\n if (!typename) {\n return null;\n }\n\n return <SelectInput {...props} options={singleSelectColumns.map((column) => ({ value: column }))} />;\n },\n }),\n ]);\n", "//\n// Copyright 2024 DXOS.org\n//\n\nimport React, { useCallback, useEffect, useMemo, useState } from 'react';\n\nimport { createIntent, useIntentDispatcher } from '@dxos/app-framework';\nimport { EchoSchema, getTypenameOrThrow, toJsonSchema, type TypedObject } from '@dxos/echo-schema';\nimport { useGlobalFilteredObjects } from '@dxos/plugin-search';\nimport { useClient } from '@dxos/react-client';\nimport { Filter, useQuery, getSpace, live } from '@dxos/react-client/echo';\nimport { type KanbanType, useKanbanModel, Kanban } from '@dxos/react-ui-kanban';\nimport { StackItem } from '@dxos/react-ui-stack';\nimport { ViewProjection } from '@dxos/schema';\n\nimport { KanbanAction } from '../types';\n\nexport const KanbanContainer = ({ kanban }: { kanban: KanbanType; role: string }) => {\n const client = useClient();\n const [cardSchema, setCardSchema] = useState<TypedObject<any, any>>();\n const [projection, setProjection] = useState<ViewProjection>();\n const space = getSpace(kanban);\n const { dispatchPromise: dispatch } = useIntentDispatcher();\n\n const jsonSchema = useMemo(\n () =>\n cardSchema instanceof EchoSchema ? cardSchema.jsonSchema : cardSchema ? toJsonSchema(cardSchema) : undefined,\n [cardSchema],\n );\n\n useEffect(() => {\n const typename = kanban.cardView?.target?.query?.typename;\n const staticSchema = client.graph.schemaRegistry.schemas.find((schema) => getTypenameOrThrow(schema) === typename);\n if (staticSchema) {\n setCardSchema(() => staticSchema as TypedObject<any, any>);\n }\n if (!staticSchema && typename && space) {\n const query = space.db.schemaRegistry.query({ typename });\n const unsubscribe = query.subscribe(\n () => {\n const [schema] = query.results;\n if (schema) {\n setCardSchema(schema);\n }\n },\n { fire: true },\n );\n return unsubscribe;\n }\n }, [kanban.cardView?.target?.query, space]);\n\n useEffect(() => {\n if (kanban.cardView?.target && jsonSchema) {\n setProjection(new ViewProjection(jsonSchema, kanban.cardView.target));\n }\n // TODO(ZaymonFC): Is there a better way to get notified about deep changes in the json schema?\n }, [kanban.cardView?.target, JSON.stringify(jsonSchema)]);\n\n const objects = useQuery(space, cardSchema ? Filter.type(cardSchema) : Filter.nothing());\n const filteredObjects = useGlobalFilteredObjects(objects);\n\n const model = useKanbanModel({\n kanban,\n schema: cardSchema,\n projection,\n items: filteredObjects,\n });\n\n const handleAddCard = useCallback(\n (columnValue: string | undefined) => {\n const path = model?.columnFieldPath;\n if (space && cardSchema && path) {\n const card = live(cardSchema, { [path]: columnValue });\n space.db.add(card);\n return card.id;\n }\n },\n [space, cardSchema, model],\n );\n\n const handleRemoveCard = useCallback(\n (card: { id: string }) => {\n void dispatch(createIntent(KanbanAction.DeleteCard, { card }));\n },\n [dispatch],\n );\n\n return (\n <StackItem.Content>\n {model && <Kanban model={model} onAddCard={handleAddCard} onRemoveCard={handleRemoveCard} />}\n </StackItem.Content>\n );\n};\n", "//\n// Copyright 2025 DXOS.org\n//\n\nimport React, { useCallback, useMemo } from 'react';\n\nimport { createIntent, useIntentDispatcher } from '@dxos/app-framework';\nimport { Type } from '@dxos/echo';\nimport { assertEchoSchema, FormatEnum, isMutable } from '@dxos/echo-schema';\nimport { invariant } from '@dxos/invariant';\nimport { useClient } from '@dxos/react-client';\nimport { Filter, getSpace, useQuery, useSchema } from '@dxos/react-client/echo';\nimport { ViewEditor, Form, SelectInput, type CustomInputMap } from '@dxos/react-ui-form';\nimport { type KanbanType, KanbanSettingsSchema } from '@dxos/react-ui-kanban';\nimport { ViewType, ViewProjection } from '@dxos/schema';\n\nimport { KanbanAction } from '../types';\n\ntype KanbanViewEditorProps = { kanban: KanbanType };\n\nexport const KanbanViewEditor = ({ kanban }: KanbanViewEditorProps) => {\n const { dispatchPromise: dispatch } = useIntentDispatcher();\n const client = useClient();\n const space = getSpace(kanban);\n const currentTypename = useMemo(\n () => kanban?.cardView?.target?.query?.typename,\n [kanban?.cardView?.target?.query?.typename],\n );\n const schema = useSchema(client, space, currentTypename);\n const views = useQuery(space, Filter.type(ViewType));\n\n const handleUpdateTypename = useCallback(\n (newTypename: string) => {\n invariant(schema);\n const matchingViews = views.filter((view) => view.query.typename === currentTypename);\n for (const view of matchingViews) {\n view.query.typename = newTypename;\n }\n\n assertEchoSchema(schema).updateTypename(newTypename);\n },\n [views, schema],\n );\n\n const handleDelete = useCallback(\n (fieldId: string) => {\n void dispatch?.(createIntent(KanbanAction.DeleteCardField, { kanban, fieldId }));\n },\n [dispatch, kanban],\n );\n\n const projection = useMemo(() => {\n if (kanban?.cardView?.target && schema) {\n const jsonSchema = Type.toJsonSchema(schema);\n return new ViewProjection(jsonSchema, kanban.cardView.target);\n }\n }, [kanban?.cardView?.target, schema, JSON.stringify(schema ? Type.toJsonSchema(schema) : {})]);\n\n const fieldProjections = projection?.getFieldProjections() || [];\n const selectFields = fieldProjections\n .filter((field) => field.props.format === FormatEnum.SingleSelect)\n .map(({ field }) => ({ value: field.id, label: field.path }));\n\n const onSave = useCallback(\n (values: Partial<{ columnFieldId: string }>) => {\n kanban.columnFieldId = values.columnFieldId;\n },\n [kanban],\n );\n\n const initialValues = useMemo(() => ({ columnFieldId: kanban.columnFieldId }), [kanban.columnFieldId]);\n const custom: CustomInputMap = useMemo(\n () => ({ columnFieldId: (props) => <SelectInput {...props} options={selectFields} /> }),\n [selectFields],\n );\n\n if (!space || !schema || !kanban.cardView?.target) {\n return null;\n }\n\n return (\n <>\n <Form schema={KanbanSettingsSchema} values={initialValues} onSave={onSave} autoSave Custom={custom} />\n <ViewEditor\n registry={space.db.schemaRegistry}\n schema={schema}\n view={kanban.cardView.target}\n onTypenameChanged={isMutable(schema) ? handleUpdateTypename : undefined}\n onDelete={isMutable(schema) ? handleDelete : undefined}\n />\n </>\n );\n};\n"],
5
+ "mappings": "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",
6
+ "names": ["import_react", "import_app_framework", "import_echo_schema", "import_react_client", "import_echo", "import_react_ui_form", "import_react_ui_kanban", "import_schema", "KanbanContainer", "kanban", "client", "useClient", "cardSchema", "setCardSchema", "useState", "projection", "setProjection", "space", "getSpace", "dispatchPromise", "dispatch", "useIntentDispatcher", "jsonSchema", "useMemo", "EchoSchema", "toJsonSchema", "undefined", "useEffect", "typename", "cardView", "target", "query", "staticSchema", "graph", "schemaRegistry", "schemas", "find", "schema", "getTypenameOrThrow", "db", "unsubscribe", "subscribe", "results", "fire", "ViewProjection", "JSON", "stringify", "objects", "useQuery", "Filter", "type", "nothing", "filteredObjects", "useGlobalFilteredObjects", "model", "useKanbanModel", "items", "handleAddCard", "useCallback", "columnValue", "path", "columnFieldPath", "card", "live", "add", "id", "handleRemoveCard", "createIntent", "KanbanAction", "DeleteCard", "React", "StackItem", "Content", "Kanban", "onAddCard", "onRemoveCard", "KanbanViewEditor", "currentTypename", "useSchema", "views", "ViewType", "handleUpdateTypename", "newTypename", "invariant", "matchingViews", "filter", "view", "assertEchoSchema", "updateTypename", "handleDelete", "fieldId", "DeleteCardField", "Type", "fieldProjections", "getFieldProjections", "selectFields", "field", "props", "format", "FormatEnum", "SingleSelect", "map", "value", "label", "onSave", "values", "columnFieldId", "initialValues", "custom", "SelectInput", "options", "Form", "KanbanSettingsSchema", "autoSave", "Custom", "ViewEditor", "registry", "onTypenameChanged", "isMutable", "onDelete", "contributes", "Capabilities", "ReactSurface", "createSurface", "KANBAN_PLUGIN", "role", "data", "isKanban", "subject", "component", "prop", "annotation", "findAnnotation", "ast", "TypenameAnnotationId", "inputProps", "isSpace", "schemaWhitelists", "useCapabilities", "ClientCapabilities", "SchemaWhiteList", "whitelistedTypenames", "Set", "flatMap", "typeArray", "fixed", "has", "dynamic", "runSync", "typenames", "Array", "from", "sort", "PivotColumnAnnotationId", "useFormValues", "flat", "selectedSchema", "singleSelectColumns", "properties", "columns", "Object", "entries", "reduce", "acc", "key", "push", "column"]
7
+ }
@@ -18,22 +18,20 @@ var __copyProps = (to, from, except, desc) => {
18
18
  var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
19
19
  var types_exports = {};
20
20
  __export(types_exports, {
21
- CreateKanbanSchema: () => import_chunk_3EUR6ZR2.CreateKanbanSchema,
22
- KanbanAction: () => import_chunk_3EUR6ZR2.KanbanAction,
23
- PivotColumnAnnotationId: () => import_chunk_3EUR6ZR2.PivotColumnAnnotationId,
24
- TypenameAnnotationId: () => import_chunk_3EUR6ZR2.TypenameAnnotationId,
25
- createKanban: () => import_chunk_3EUR6ZR2.createKanban,
26
- isKanban: () => import_chunk_3EUR6ZR2.isKanban
21
+ CreateKanbanSchema: () => import_chunk_O4U7ZQ2I.CreateKanbanSchema,
22
+ KanbanAction: () => import_chunk_O4U7ZQ2I.KanbanAction,
23
+ PivotColumnAnnotationId: () => import_chunk_O4U7ZQ2I.PivotColumnAnnotationId,
24
+ TypenameAnnotationId: () => import_chunk_O4U7ZQ2I.TypenameAnnotationId,
25
+ isKanban: () => import_chunk_O4U7ZQ2I.isKanban
27
26
  });
28
27
  module.exports = __toCommonJS(types_exports);
29
- var import_chunk_3EUR6ZR2 = require("./chunk-3EUR6ZR2.cjs");
28
+ var import_chunk_O4U7ZQ2I = require("./chunk-O4U7ZQ2I.cjs");
30
29
  // Annotate the CommonJS export names for ESM import in node:
31
30
  0 && (module.exports = {
32
31
  CreateKanbanSchema,
33
32
  KanbanAction,
34
33
  PivotColumnAnnotationId,
35
34
  TypenameAnnotationId,
36
- createKanban,
37
35
  isKanban
38
36
  });
39
37
  //# sourceMappingURL=types.cjs.map
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["types.cjs"],
4
- "sourcesContent": ["import {\n CreateKanbanSchema,\n KanbanAction,\n PivotColumnAnnotationId,\n TypenameAnnotationId,\n createKanban,\n isKanban\n} from \"./chunk-3EUR6ZR2.cjs\";\nexport {\n CreateKanbanSchema,\n KanbanAction,\n PivotColumnAnnotationId,\n TypenameAnnotationId,\n createKanban,\n isKanban\n};\n//# sourceMappingURL=types.cjs.map\n"],
5
- "mappings": ";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,4BAOO;",
4
+ "sourcesContent": ["import {\n CreateKanbanSchema,\n KanbanAction,\n PivotColumnAnnotationId,\n TypenameAnnotationId,\n isKanban\n} from \"./chunk-O4U7ZQ2I.cjs\";\nexport {\n CreateKanbanSchema,\n KanbanAction,\n PivotColumnAnnotationId,\n TypenameAnnotationId,\n isKanban\n};\n//# sourceMappingURL=types.cjs.map\n"],
5
+ "mappings": ";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,4BAMO;",
6
6
  "names": []
7
7
  }
@@ -2,20 +2,20 @@ import { createRequire } from 'node:module';const require = createRequire(import
2
2
  import {
3
3
  KanbanAction,
4
4
  meta
5
- } from "./chunk-2N7CO3DI.mjs";
5
+ } from "./chunk-NOC32MF5.mjs";
6
6
 
7
7
  // packages/plugins/plugin-kanban/src/capabilities/artifact-definition.ts
8
- import { pipe } from "effect";
8
+ import { Schema, pipe } from "effect";
9
9
  import { Capabilities, chain, contributes, createIntent } from "@dxos/app-framework";
10
10
  import { defineArtifact, defineTool, ToolResult } from "@dxos/artifact";
11
11
  import { createArtifactElement } from "@dxos/assistant";
12
- import { isInstanceOf, S } from "@dxos/echo-schema";
12
+ import { isInstanceOf } from "@dxos/echo-schema";
13
13
  import { invariant } from "@dxos/invariant";
14
14
  import { SpaceAction } from "@dxos/plugin-space/types";
15
15
  import { Filter, fullyQualifiedId } from "@dxos/react-client/echo";
16
16
  import { KanbanType } from "@dxos/react-ui-kanban";
17
17
  var __dxlog_file = "/home/runner/work/dxos/dxos/packages/plugins/plugin-kanban/src/capabilities/artifact-definition.ts";
18
- var QualifiedId = S.String.annotations({
18
+ var QualifiedId = Schema.String.annotations({
19
19
  description: "The fully qualified ID of the kanban `spaceID:objectID`"
20
20
  });
21
21
  var artifact_definition_default = () => {
@@ -35,11 +35,11 @@ var artifact_definition_default = () => {
35
35
  Create a new kanban board using an existing schema.
36
36
  Use schema_create first to create a schema, or schema_list to choose an existing one.`,
37
37
  caption: "Creating kanban board...",
38
- schema: S.Struct({
39
- typename: S.String.annotations({
38
+ schema: Schema.Struct({
39
+ typename: Schema.String.annotations({
40
40
  description: "The fully qualified typename of the schema to use for the kanban cards."
41
41
  }),
42
- pivotColumn: S.optional(S.String).annotations({
42
+ pivotColumn: Schema.optional(Schema.String).annotations({
43
43
  description: "Optional field name to use as the column pivot."
44
44
  })
45
45
  }),
@@ -86,7 +86,7 @@ var artifact_definition_default = () => {
86
86
  name: "list",
87
87
  description: "List all kanban boards in the current space.",
88
88
  caption: "Listing kanban boards...",
89
- schema: S.Struct({}),
89
+ schema: Schema.Struct({}),
90
90
  execute: async (_input, { extensions }) => {
91
91
  invariant(extensions?.space, "No space", {
92
92
  F: __dxlog_file,
@@ -98,7 +98,7 @@ var artifact_definition_default = () => {
98
98
  ]
99
99
  });
100
100
  const space = extensions.space;
101
- const { objects: boards } = await space.db.query(Filter.schema(KanbanType)).run();
101
+ const { objects: boards } = await space.db.query(Filter.type(KanbanType)).run();
102
102
  const boardInfo = await Promise.all(boards.map(async (board) => {
103
103
  const view = await board.cardView?.load();
104
104
  return {
@@ -113,7 +113,7 @@ var artifact_definition_default = () => {
113
113
  name: "inspect",
114
114
  description: "Get details about a specific kanban board.",
115
115
  caption: "Inspecting kanban board...",
116
- schema: S.Struct({
116
+ schema: Schema.Struct({
117
117
  id: QualifiedId
118
118
  }),
119
119
  execute: async ({ id }, { extensions }) => {
@@ -127,7 +127,7 @@ var artifact_definition_default = () => {
127
127
  ]
128
128
  });
129
129
  const space = extensions.space;
130
- const { objects: boards } = await space.db.query(Filter.schema(KanbanType)).run();
130
+ const { objects: boards } = await space.db.query(Filter.type(KanbanType)).run();
131
131
  const board = boards.find((board2) => fullyQualifiedId(board2) === id);
132
132
  invariant(isInstanceOf(KanbanType, board), void 0, {
133
133
  F: __dxlog_file,
@@ -175,4 +175,4 @@ var artifact_definition_default = () => {
175
175
  export {
176
176
  artifact_definition_default as default
177
177
  };
178
- //# sourceMappingURL=artifact-definition-HQ5I2OO5.mjs.map
178
+ //# sourceMappingURL=artifact-definition-OLVK4DCO.mjs.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../src/capabilities/artifact-definition.ts"],
4
+ "sourcesContent": ["//\n// Copyright 2025 DXOS.org\n//\n\nimport { Schema, pipe } from 'effect';\n\nimport { Capabilities, chain, contributes, createIntent, type PromiseIntentDispatcher } from '@dxos/app-framework';\nimport { defineArtifact, defineTool, ToolResult } from '@dxos/artifact';\nimport { createArtifactElement } from '@dxos/assistant';\nimport { isInstanceOf } from '@dxos/echo-schema';\nimport { invariant } from '@dxos/invariant';\nimport { SpaceAction } from '@dxos/plugin-space/types';\nimport { Filter, fullyQualifiedId, type Space } from '@dxos/react-client/echo';\nimport { KanbanType } from '@dxos/react-ui-kanban';\n\nimport { meta } from '../meta';\nimport { KanbanAction } from '../types';\n\nconst QualifiedId = Schema.String.annotations({\n description: 'The fully qualified ID of the kanban `spaceID:objectID`',\n});\n\ndeclare global {\n interface ToolContextExtensions {\n space?: Space;\n dispatch?: PromiseIntentDispatcher;\n }\n}\n\nexport default () => {\n const definition = defineArtifact({\n id: `artifact:${meta.id}`,\n name: meta.name,\n instructions: `\n - Before adding items to a kanban board, inspect the board to see its schema\n - When adding items, you must not include the 'id' field -- it is automatically generated\n - BEFORE adding items, always make sure the board has been shown to the user!\n `,\n schema: KanbanType,\n tools: [\n defineTool(meta.id, {\n name: 'create',\n description: `\n Create a new kanban board using an existing schema.\n Use schema_create first to create a schema, or schema_list to choose an existing one.`,\n caption: 'Creating kanban board...',\n schema: Schema.Struct({\n typename: Schema.String.annotations({\n description: 'The fully qualified typename of the schema to use for the kanban cards.',\n }),\n pivotColumn: Schema.optional(Schema.String).annotations({\n description: 'Optional field name to use as the column pivot.',\n }),\n }),\n execute: async ({ typename, pivotColumn }, { extensions }) => {\n invariant(extensions?.space, 'No space');\n invariant(extensions?.dispatch, 'No intent dispatcher');\n\n // Validate schema exists first\n const schema = await extensions.space.db.schemaRegistry.query({ typename }).firstOrUndefined();\n if (!schema) {\n return ToolResult.Error(`Schema not found: ${typename}`);\n }\n\n const intent = pipe(\n createIntent(KanbanAction.Create, {\n space: extensions.space,\n typename,\n initialPivotColumn: pivotColumn,\n }),\n chain(SpaceAction.AddObject, { target: extensions.space }),\n );\n\n const { data, error } = await extensions.dispatch(intent);\n if (!data || error) {\n return ToolResult.Error(error?.message ?? 'Failed to create kanban board');\n }\n\n return ToolResult.Success(createArtifactElement(data.id));\n },\n }),\n defineTool(meta.id, {\n name: 'list',\n description: 'List all kanban boards in the current space.',\n caption: 'Listing kanban boards...',\n schema: Schema.Struct({}),\n execute: async (_input, { extensions }) => {\n invariant(extensions?.space, 'No space');\n const space = extensions.space;\n const { objects: boards } = await space.db.query(Filter.type(KanbanType)).run();\n\n const boardInfo = await Promise.all(\n boards.map(async (board: KanbanType) => {\n const view = await board.cardView?.load();\n return {\n id: fullyQualifiedId(board),\n typename: view?.query.typename,\n };\n }),\n );\n\n return ToolResult.Success(boardInfo);\n },\n }),\n defineTool(meta.id, {\n name: 'inspect',\n description: 'Get details about a specific kanban board.',\n caption: 'Inspecting kanban board...',\n schema: Schema.Struct({ id: QualifiedId }),\n execute: async ({ id }, { extensions }) => {\n invariant(extensions?.space, 'No space');\n const space = extensions.space;\n const { objects: boards } = await space.db.query(Filter.type(KanbanType)).run();\n const board = boards.find((board: KanbanType) => fullyQualifiedId(board) === id);\n invariant(isInstanceOf(KanbanType, board));\n\n const view = await board.cardView?.load();\n invariant(view);\n\n const typename = view.query.typename;\n const schema = await space.db.schemaRegistry.query({ typename }).firstOrUndefined();\n invariant(schema);\n\n return ToolResult.Success({\n schema,\n columnField: board.columnFieldId,\n viewFields: view.fields,\n });\n },\n }),\n ],\n });\n\n return contributes(Capabilities.ArtifactDefinition, definition);\n};\n"],
5
+ "mappings": "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",
6
+ "names": ["Schema", "pipe", "Capabilities", "chain", "contributes", "createIntent", "defineArtifact", "defineTool", "ToolResult", "createArtifactElement", "isInstanceOf", "invariant", "SpaceAction", "Filter", "fullyQualifiedId", "KanbanType", "QualifiedId", "Schema", "String", "annotations", "description", "definition", "defineArtifact", "id", "meta", "name", "instructions", "schema", "KanbanType", "tools", "defineTool", "caption", "Struct", "typename", "pivotColumn", "optional", "execute", "extensions", "invariant", "space", "dispatch", "db", "schemaRegistry", "query", "firstOrUndefined", "ToolResult", "Error", "intent", "pipe", "createIntent", "KanbanAction", "Create", "initialPivotColumn", "chain", "SpaceAction", "AddObject", "target", "data", "error", "message", "Success", "createArtifactElement", "_input", "objects", "boards", "Filter", "type", "run", "boardInfo", "Promise", "all", "map", "board", "view", "cardView", "load", "fullyQualifiedId", "find", "isInstanceOf", "columnField", "columnFieldId", "viewFields", "fields", "contributes", "Capabilities", "ArtifactDefinition"]
7
+ }