@dxos/plugin-kanban 0.8.3 → 0.8.4-main.2e9d522

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 (104) hide show
  1. package/dist/lib/browser/{artifact-definition-6HNQFL2M.mjs → artifact-definition-WMSZK3RW.mjs} +32 -36
  2. package/dist/lib/browser/artifact-definition-WMSZK3RW.mjs.map +7 -0
  3. package/dist/lib/browser/{chunk-6JEDX6HA.mjs → chunk-X44RHBZK.mjs} +33 -10
  4. package/dist/lib/browser/chunk-X44RHBZK.mjs.map +7 -0
  5. package/dist/lib/browser/index.mjs +17 -17
  6. package/dist/lib/browser/index.mjs.map +3 -3
  7. package/dist/lib/browser/intent-resolver-E6O3LBAB.mjs +111 -0
  8. package/dist/lib/browser/intent-resolver-E6O3LBAB.mjs.map +7 -0
  9. package/dist/lib/browser/meta.json +1 -1
  10. package/dist/lib/browser/{react-surface-HJL2JRJP.mjs → react-surface-MWNNZYMN.mjs} +40 -89
  11. package/dist/lib/browser/react-surface-MWNNZYMN.mjs.map +7 -0
  12. package/dist/lib/browser/{types.mjs → types/index.mjs} +4 -4
  13. package/dist/lib/node-esm/{artifact-definition-FA2IAAUQ.mjs → artifact-definition-QVZXPDXK.mjs} +32 -36
  14. package/dist/lib/node-esm/artifact-definition-QVZXPDXK.mjs.map +7 -0
  15. package/dist/lib/node-esm/{chunk-7DHZSNGQ.mjs → chunk-6WK5CGYY.mjs} +33 -10
  16. package/dist/lib/node-esm/chunk-6WK5CGYY.mjs.map +7 -0
  17. package/dist/lib/node-esm/index.mjs +17 -17
  18. package/dist/lib/node-esm/index.mjs.map +3 -3
  19. package/dist/lib/node-esm/intent-resolver-LPASDELU.mjs +112 -0
  20. package/dist/lib/node-esm/intent-resolver-LPASDELU.mjs.map +7 -0
  21. package/dist/lib/node-esm/meta.json +1 -1
  22. package/dist/lib/node-esm/{react-surface-257WTPQZ.mjs → react-surface-T52BBG45.mjs} +40 -89
  23. package/dist/lib/node-esm/react-surface-T52BBG45.mjs.map +7 -0
  24. package/dist/lib/node-esm/{types.mjs → types/index.mjs} +4 -4
  25. package/dist/types/src/KanbanPlugin.d.ts.map +1 -1
  26. package/dist/types/src/capabilities/artifact-definition.d.ts +1 -1
  27. package/dist/types/src/capabilities/artifact-definition.d.ts.map +1 -1
  28. package/dist/types/src/capabilities/index.d.ts +1 -1
  29. package/dist/types/src/capabilities/index.d.ts.map +1 -1
  30. package/dist/types/src/capabilities/intent-resolver.d.ts.map +1 -1
  31. package/dist/types/src/capabilities/react-surface.d.ts.map +1 -1
  32. package/dist/types/src/components/KanbanContainer.d.ts +3 -3
  33. package/dist/types/src/components/KanbanContainer.d.ts.map +1 -1
  34. package/dist/types/src/components/KanbanContainer.stories.d.ts +1 -1
  35. package/dist/types/src/components/KanbanContainer.stories.d.ts.map +1 -1
  36. package/dist/types/src/components/KanbanViewEditor.d.ts +3 -3
  37. package/dist/types/src/components/KanbanViewEditor.d.ts.map +1 -1
  38. package/dist/types/src/index.d.ts +1 -1
  39. package/dist/types/src/index.d.ts.map +1 -1
  40. package/dist/types/src/translations.d.ts +24 -53
  41. package/dist/types/src/translations.d.ts.map +1 -1
  42. package/dist/types/src/types/index.d.ts +4 -0
  43. package/dist/types/src/types/index.d.ts.map +1 -0
  44. package/dist/types/src/types/kanban.d.ts +11 -0
  45. package/dist/types/src/types/kanban.d.ts.map +1 -0
  46. package/dist/types/src/types/schema.d.ts +110 -0
  47. package/dist/types/src/types/schema.d.ts.map +1 -0
  48. package/dist/types/src/types/types.d.ts +4 -0
  49. package/dist/types/src/types/types.d.ts.map +1 -0
  50. package/dist/types/tsconfig.tsbuildinfo +1 -1
  51. package/package.json +32 -30
  52. package/src/KanbanPlugin.tsx +5 -4
  53. package/src/capabilities/artifact-definition.ts +25 -17
  54. package/src/capabilities/intent-resolver.ts +13 -14
  55. package/src/capabilities/react-surface.tsx +15 -12
  56. package/src/components/KanbanContainer.stories.tsx +42 -45
  57. package/src/components/KanbanContainer.tsx +11 -11
  58. package/src/components/KanbanViewEditor.tsx +21 -65
  59. package/src/index.ts +2 -1
  60. package/src/translations.ts +7 -7
  61. package/src/types/index.ts +7 -0
  62. package/src/types/kanban.ts +29 -0
  63. package/src/{types.ts → types/schema.ts} +4 -25
  64. package/src/types/types.ts +7 -0
  65. package/dist/lib/browser/artifact-definition-6HNQFL2M.mjs.map +0 -7
  66. package/dist/lib/browser/chunk-6JEDX6HA.mjs.map +0 -7
  67. package/dist/lib/browser/intent-resolver-QQOH5EV2.mjs +0 -297
  68. package/dist/lib/browser/intent-resolver-QQOH5EV2.mjs.map +0 -7
  69. package/dist/lib/browser/react-surface-HJL2JRJP.mjs.map +0 -7
  70. package/dist/lib/node/artifact-definition-GRCAYCVG.cjs +0 -193
  71. package/dist/lib/node/artifact-definition-GRCAYCVG.cjs.map +0 -7
  72. package/dist/lib/node/chunk-ATDUVDIE.cjs +0 -108
  73. package/dist/lib/node/chunk-ATDUVDIE.cjs.map +0 -7
  74. package/dist/lib/node/index.cjs +0 -128
  75. package/dist/lib/node/index.cjs.map +0 -7
  76. package/dist/lib/node/intent-resolver-6ZNOIHKY.cjs +0 -308
  77. package/dist/lib/node/intent-resolver-6ZNOIHKY.cjs.map +0 -7
  78. package/dist/lib/node/meta.json +0 -1
  79. package/dist/lib/node/react-surface-G2J6F7U5.cjs +0 -322
  80. package/dist/lib/node/react-surface-G2J6F7U5.cjs.map +0 -7
  81. package/dist/lib/node/types.cjs +0 -35
  82. package/dist/lib/node/types.cjs.map +0 -7
  83. package/dist/lib/node-esm/artifact-definition-FA2IAAUQ.mjs.map +0 -7
  84. package/dist/lib/node-esm/chunk-7DHZSNGQ.mjs.map +0 -7
  85. package/dist/lib/node-esm/intent-resolver-4TYFDM4E.mjs +0 -298
  86. package/dist/lib/node-esm/intent-resolver-4TYFDM4E.mjs.map +0 -7
  87. package/dist/lib/node-esm/react-surface-257WTPQZ.mjs.map +0 -7
  88. package/dist/types/src/testing/index.d.ts +0 -3
  89. package/dist/types/src/testing/index.d.ts.map +0 -1
  90. package/dist/types/src/testing/initialize-kanban.d.ts +0 -17
  91. package/dist/types/src/testing/initialize-kanban.d.ts.map +0 -1
  92. package/dist/types/src/testing/kanban-manager.d.ts +0 -7
  93. package/dist/types/src/testing/kanban-manager.d.ts.map +0 -1
  94. package/dist/types/src/testing/playwright/smoke.spec.d.ts +0 -2
  95. package/dist/types/src/testing/playwright/smoke.spec.d.ts.map +0 -1
  96. package/dist/types/src/types.d.ts +0 -76
  97. package/dist/types/src/types.d.ts.map +0 -1
  98. package/src/testing/index.ts +0 -6
  99. package/src/testing/initialize-kanban.ts +0 -128
  100. package/src/testing/kanban-manager.ts +0 -13
  101. package/src/testing/playwright/playwright.config.cts +0 -18
  102. package/src/testing/playwright/smoke.spec.ts +0 -7
  103. /package/dist/lib/browser/{types.mjs.map → types/index.mjs.map} +0 -0
  104. /package/dist/lib/node-esm/{types.mjs.map → types/index.mjs.map} +0 -0
@@ -1 +1 @@
1
- {"inputs":{"packages/plugins/plugin-kanban/src/meta.ts":{"bytes":2050,"imports":[],"format":"esm"},"packages/plugins/plugin-kanban/src/types.ts":{"bytes":9981,"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":19768,"imports":[{"path":"effect","kind":"import-statement","external":true},{"path":"@dxos/ai","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","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":1059,"imports":[],"format":"esm"},"packages/plugins/plugin-kanban/src/testing/initialize-kanban.ts":{"bytes":16476,"imports":[{"path":"effect","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-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":609,"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":11701,"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":12603,"imports":[{"path":"@preact-signals/safe-react/tracking","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/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":14104,"imports":[{"path":"@preact-signals/safe-react/tracking","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},{"path":"packages/plugins/plugin-kanban/src/types.ts","kind":"import-statement","original":"../types"}],"format":"esm"},"packages/plugins/plugin-kanban/src/components/index.ts":{"bytes":612,"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":11880,"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/effect","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/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":1330,"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":3595,"imports":[{"path":"@dxos/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"}],"format":"esm"},"packages/plugins/plugin-kanban/src/KanbanPlugin.tsx":{"bytes":8252,"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":562,"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/browser/index.mjs.map":{"imports":[],"exports":[],"inputs":{},"bytes":6231},"packages/plugins/plugin-kanban/dist/lib/browser/index.mjs":{"imports":[{"path":"packages/plugins/plugin-kanban/dist/lib/browser/chunk-6JEDX6HA.mjs","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/browser/artifact-definition-6HNQFL2M.mjs","kind":"dynamic-import"},{"path":"packages/plugins/plugin-kanban/dist/lib/browser/intent-resolver-QQOH5EV2.mjs","kind":"dynamic-import"},{"path":"packages/plugins/plugin-kanban/dist/lib/browser/react-surface-HJL2JRJP.mjs","kind":"dynamic-import"},{"path":"@dxos/echo","kind":"import-statement","external":true},{"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":970},"packages/plugins/plugin-kanban/src/index.ts":{"bytesInOutput":0}},"bytes":3417},"packages/plugins/plugin-kanban/dist/lib/browser/types.mjs.map":{"imports":[],"exports":[],"inputs":{},"bytes":93},"packages/plugins/plugin-kanban/dist/lib/browser/types.mjs":{"imports":[{"path":"packages/plugins/plugin-kanban/dist/lib/browser/chunk-6JEDX6HA.mjs","kind":"import-statement"}],"exports":["CreateKanbanSchema","KanbanAction","PivotColumnAnnotationId","isKanban"],"entryPoint":"packages/plugins/plugin-kanban/src/types.ts","inputs":{},"bytes":239},"packages/plugins/plugin-kanban/dist/lib/browser/artifact-definition-6HNQFL2M.mjs.map":{"imports":[],"exports":[],"inputs":{},"bytes":8979},"packages/plugins/plugin-kanban/dist/lib/browser/artifact-definition-6HNQFL2M.mjs":{"imports":[{"path":"packages/plugins/plugin-kanban/dist/lib/browser/chunk-6JEDX6HA.mjs","kind":"import-statement"},{"path":"effect","kind":"import-statement","external":true},{"path":"@dxos/ai","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","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":6042}},"bytes":6291},"packages/plugins/plugin-kanban/dist/lib/browser/intent-resolver-QQOH5EV2.mjs.map":{"imports":[],"exports":[],"inputs":{},"bytes":13062},"packages/plugins/plugin-kanban/dist/lib/browser/intent-resolver-QQOH5EV2.mjs":{"imports":[{"path":"packages/plugins/plugin-kanban/dist/lib/browser/chunk-6JEDX6HA.mjs","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","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-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":4503}},"bytes":8240},"packages/plugins/plugin-kanban/dist/lib/browser/react-surface-HJL2JRJP.mjs.map":{"imports":[],"exports":[],"inputs":{},"bytes":19800},"packages/plugins/plugin-kanban/dist/lib/browser/react-surface-HJL2JRJP.mjs":{"imports":[{"path":"packages/plugins/plugin-kanban/dist/lib/browser/chunk-6JEDX6HA.mjs","kind":"import-statement"},{"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/effect","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/react-ui-form","kind":"import-statement","external":true},{"path":"@preact-signals/safe-react/tracking","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/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":"@preact-signals/safe-react/tracking","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":2715},"packages/plugins/plugin-kanban/src/components/KanbanContainer.tsx":{"bytesInOutput":3238},"packages/plugins/plugin-kanban/src/components/index.ts":{"bytesInOutput":0},"packages/plugins/plugin-kanban/src/components/KanbanViewEditor.tsx":{"bytesInOutput":4184}},"bytes":10628},"packages/plugins/plugin-kanban/dist/lib/browser/chunk-6JEDX6HA.mjs.map":{"imports":[],"exports":[],"inputs":{},"bytes":6111},"packages/plugins/plugin-kanban/dist/lib/browser/chunk-6JEDX6HA.mjs":{"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","isKanban","meta"],"inputs":{"packages/plugins/plugin-kanban/src/types.ts":{"bytesInOutput":1979},"packages/plugins/plugin-kanban/src/meta.ts":{"bytesInOutput":517}},"bytes":2796}}}
1
+ {"inputs":{"src/meta.ts":{"bytes":2037,"imports":[],"format":"esm"},"src/types/kanban.ts":{"bytes":3387,"imports":[{"path":"@dxos/echo","kind":"import-statement","external":true},{"path":"@dxos/react-ui-kanban","kind":"import-statement","external":true},{"path":"@dxos/schema","kind":"import-statement","external":true}],"format":"esm"},"src/types/schema.ts":{"bytes":8604,"imports":[{"path":"effect","kind":"import-statement","external":true},{"path":"@dxos/react-client/echo","kind":"import-statement","external":true},{"path":"@dxos/schema","kind":"import-statement","external":true},{"path":"src/meta.ts","kind":"import-statement","original":"../meta"}],"format":"esm"},"src/types/index.ts":{"bytes":583,"imports":[{"path":"src/types/kanban.ts","kind":"import-statement","original":"./kanban"},{"path":"src/types/schema.ts","kind":"import-statement","original":"./schema"}],"format":"esm"},"src/capabilities/artifact-definition.ts":{"bytes":20601,"imports":[{"path":"effect","kind":"import-statement","external":true},{"path":"@dxos/ai","kind":"import-statement","external":true},{"path":"@dxos/app-framework","kind":"import-statement","external":true},{"path":"@dxos/assistant","kind":"import-statement","external":true},{"path":"@dxos/blueprints","kind":"import-statement","external":true},{"path":"@dxos/echo","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":"@dxos/schema","kind":"import-statement","external":true},{"path":"@dxos/util","kind":"import-statement","external":true},{"path":"src/meta.ts","kind":"import-statement","original":"../meta"},{"path":"src/types/index.ts","kind":"import-statement","original":"../types"}],"format":"esm"},"src/capabilities/intent-resolver.ts":{"bytes":10111,"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":"src/meta.ts","kind":"import-statement","original":"../meta"},{"path":"src/types/index.ts","kind":"import-statement","original":"../types"}],"format":"esm"},"src/components/KanbanContainer.tsx":{"bytes":12312,"imports":[{"path":"@preact-signals/safe-react/tracking","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/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":"src/types/index.ts","kind":"import-statement","original":"../types"}],"format":"esm"},"src/components/KanbanViewEditor.tsx":{"bytes":8453,"imports":[{"path":"@preact-signals/safe-react/tracking","kind":"import-statement","external":true},{"path":"react","kind":"import-statement","external":true},{"path":"@dxos/echo","kind":"import-statement","external":true},{"path":"@dxos/echo-schema","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}],"format":"esm"},"src/components/index.ts":{"bytes":599,"imports":[{"path":"src/components/KanbanContainer.tsx","kind":"import-statement","original":"./KanbanContainer"},{"path":"src/components/KanbanViewEditor.tsx","kind":"import-statement","original":"./KanbanViewEditor"}],"format":"esm"},"src/capabilities/react-surface.tsx":{"bytes":12761,"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/effect","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/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":"src/components/index.ts","kind":"import-statement","original":"../components"},{"path":"src/meta.ts","kind":"import-statement","original":"../meta"},{"path":"src/types/index.ts","kind":"import-statement","original":"../types"}],"format":"esm"},"src/capabilities/index.ts":{"bytes":1317,"imports":[{"path":"@dxos/app-framework","kind":"import-statement","external":true},{"path":"src/capabilities/artifact-definition.ts","kind":"dynamic-import","original":"./artifact-definition"},{"path":"src/capabilities/intent-resolver.ts","kind":"dynamic-import","original":"./intent-resolver"},{"path":"src/capabilities/react-surface.tsx","kind":"dynamic-import","original":"./react-surface"}],"format":"esm"},"src/translations.ts":{"bytes":3568,"imports":[{"path":"@dxos/react-ui-kanban","kind":"import-statement","external":true},{"path":"src/meta.ts","kind":"import-statement","original":"./meta"}],"format":"esm"},"src/KanbanPlugin.tsx":{"bytes":8349,"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":"src/capabilities/index.ts","kind":"import-statement","original":"./capabilities"},{"path":"src/meta.ts","kind":"import-statement","original":"./meta"},{"path":"src/translations.ts","kind":"import-statement","original":"./translations"},{"path":"src/types/index.ts","kind":"import-statement","original":"./types"}],"format":"esm"},"src/index.ts":{"bytes":553,"imports":[{"path":"src/meta.ts","kind":"import-statement","original":"./meta"},{"path":"src/KanbanPlugin.tsx","kind":"import-statement","original":"./KanbanPlugin"}],"format":"esm"}},"outputs":{"dist/lib/browser/index.mjs.map":{"imports":[],"exports":[],"inputs":{},"bytes":6284},"dist/lib/browser/index.mjs":{"imports":[{"path":"dist/lib/browser/chunk-X44RHBZK.mjs","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":"dist/lib/browser/artifact-definition-WMSZK3RW.mjs","kind":"dynamic-import"},{"path":"dist/lib/browser/intent-resolver-E6O3LBAB.mjs","kind":"dynamic-import"},{"path":"dist/lib/browser/react-surface-MWNNZYMN.mjs","kind":"dynamic-import"},{"path":"@dxos/react-ui-kanban","kind":"import-statement","external":true}],"exports":["KANBAN_PLUGIN","KanbanPlugin","meta"],"entryPoint":"src/index.ts","inputs":{"src/index.ts":{"bytesInOutput":0},"src/KanbanPlugin.tsx":{"bytesInOutput":1769},"src/capabilities/index.ts":{"bytesInOutput":273},"src/translations.ts":{"bytesInOutput":912}},"bytes":3247},"dist/lib/browser/types/index.mjs.map":{"imports":[],"exports":[],"inputs":{},"bytes":93},"dist/lib/browser/types/index.mjs":{"imports":[{"path":"dist/lib/browser/chunk-X44RHBZK.mjs","kind":"import-statement"}],"exports":["CreateKanbanSchema","KanbanAction","PivotColumnAnnotationId","createKanban"],"entryPoint":"src/types/index.ts","inputs":{},"bytes":248},"dist/lib/browser/artifact-definition-WMSZK3RW.mjs.map":{"imports":[],"exports":[],"inputs":{},"bytes":9518},"dist/lib/browser/artifact-definition-WMSZK3RW.mjs":{"imports":[{"path":"dist/lib/browser/chunk-X44RHBZK.mjs","kind":"import-statement"},{"path":"effect","kind":"import-statement","external":true},{"path":"@dxos/ai","kind":"import-statement","external":true},{"path":"@dxos/app-framework","kind":"import-statement","external":true},{"path":"@dxos/assistant","kind":"import-statement","external":true},{"path":"@dxos/blueprints","kind":"import-statement","external":true},{"path":"@dxos/echo","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":"@dxos/schema","kind":"import-statement","external":true},{"path":"@dxos/util","kind":"import-statement","external":true}],"exports":["default"],"entryPoint":"src/capabilities/artifact-definition.ts","inputs":{"src/capabilities/artifact-definition.ts":{"bytesInOutput":6065}},"bytes":6283},"dist/lib/browser/intent-resolver-E6O3LBAB.mjs.map":{"imports":[],"exports":[],"inputs":{},"bytes":4565},"dist/lib/browser/intent-resolver-E6O3LBAB.mjs":{"imports":[{"path":"dist/lib/browser/chunk-X44RHBZK.mjs","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}],"exports":["default"],"entryPoint":"src/capabilities/intent-resolver.ts","inputs":{"src/capabilities/intent-resolver.ts":{"bytesInOutput":2648}},"bytes":2879},"dist/lib/browser/react-surface-MWNNZYMN.mjs.map":{"imports":[],"exports":[],"inputs":{},"bytes":17247},"dist/lib/browser/react-surface-MWNNZYMN.mjs":{"imports":[{"path":"dist/lib/browser/chunk-X44RHBZK.mjs","kind":"import-statement"},{"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/effect","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/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":"@preact-signals/safe-react/tracking","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/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":"@preact-signals/safe-react/tracking","kind":"import-statement","external":true},{"path":"react","kind":"import-statement","external":true},{"path":"@dxos/echo","kind":"import-statement","external":true},{"path":"@dxos/echo-schema","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":"src/capabilities/react-surface.tsx","inputs":{"src/capabilities/react-surface.tsx":{"bytesInOutput":2984},"src/components/KanbanContainer.tsx":{"bytesInOutput":3160},"src/components/index.ts":{"bytesInOutput":0},"src/components/KanbanViewEditor.tsx":{"bytesInOutput":2311}},"bytes":8801},"dist/lib/browser/chunk-X44RHBZK.mjs.map":{"imports":[],"exports":[],"inputs":{},"bytes":6985},"dist/lib/browser/chunk-X44RHBZK.mjs":{"imports":[{"path":"@dxos/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":"effect","kind":"import-statement","external":true},{"path":"@dxos/react-client/echo","kind":"import-statement","external":true},{"path":"@dxos/schema","kind":"import-statement","external":true}],"exports":["CreateKanbanSchema","KANBAN_PLUGIN","KanbanAction","PivotColumnAnnotationId","createKanban","meta"],"inputs":{"src/types/kanban.ts":{"bytesInOutput":671},"src/types/index.ts":{"bytesInOutput":0},"src/types/schema.ts":{"bytesInOutput":1866},"src/meta.ts":{"bytesInOutput":517}},"bytes":3303}}}
@@ -1,20 +1,21 @@
1
1
  import {
2
- KANBAN_PLUGIN,
3
2
  KanbanAction,
4
3
  PivotColumnAnnotationId,
5
- isKanban
6
- } from "./chunk-6JEDX6HA.mjs";
4
+ meta
5
+ } from "./chunk-X44RHBZK.mjs";
7
6
 
8
- // packages/plugins/plugin-kanban/src/capabilities/react-surface.tsx
7
+ // src/capabilities/react-surface.tsx
9
8
  import React3, { useMemo as useMemo3 } from "react";
10
9
  import { Capabilities, contributes, createSurface, useCapabilities } from "@dxos/app-framework";
11
- import { Type as Type3 } from "@dxos/echo";
10
+ import { Obj as Obj2, Type as Type3 } from "@dxos/echo";
12
11
  import { findAnnotation } from "@dxos/effect";
13
12
  import { ClientCapabilities } from "@dxos/plugin-client";
14
13
  import { getSpace as getSpace3, isSpace } from "@dxos/react-client/echo";
15
14
  import { SelectInput as SelectInput2, useFormValues } from "@dxos/react-ui-form";
15
+ import { KanbanView } from "@dxos/react-ui-kanban";
16
+ import { DataType } from "@dxos/schema";
16
17
 
17
- // packages/plugins/plugin-kanban/src/components/KanbanContainer.tsx
18
+ // src/components/KanbanContainer.tsx
18
19
  import { useSignals as _useSignals } from "@preact-signals/safe-react/tracking";
19
20
  import React, { useCallback, useEffect, useMemo, useState } from "react";
20
21
  import { createIntent, useIntentDispatcher } from "@dxos/app-framework";
@@ -25,14 +26,14 @@ import { useClient } from "@dxos/react-client";
25
26
  import { useQuery, getSpace } from "@dxos/react-client/echo";
26
27
  import { useKanbanModel, Kanban } from "@dxos/react-ui-kanban";
27
28
  import { StackItem } from "@dxos/react-ui-stack";
28
- import { ViewProjection } from "@dxos/schema";
29
- var KanbanContainer = ({ kanban }) => {
29
+ import { ProjectionModel } from "@dxos/schema";
30
+ var KanbanContainer = ({ view }) => {
30
31
  var _effect = _useSignals();
31
32
  try {
32
33
  const client = useClient();
33
34
  const [cardSchema, setCardSchema] = useState();
34
35
  const [projection, setProjection] = useState();
35
- const space = getSpace(kanban);
36
+ const space = getSpace(view);
36
37
  const { dispatchPromise: dispatch } = useIntentDispatcher();
37
38
  const jsonSchema = useMemo(() => {
38
39
  if (!cardSchema) {
@@ -43,7 +44,7 @@ var KanbanContainer = ({ kanban }) => {
43
44
  cardSchema
44
45
  ]);
45
46
  useEffect(() => {
46
- const typename = kanban.cardView?.target?.query?.typename;
47
+ const typename = view.query.typename;
47
48
  const staticSchema = client.graph.schemaRegistry.schemas.find((schema) => Type.getTypename(schema) === typename);
48
49
  if (staticSchema) {
49
50
  setCardSchema(() => staticSchema);
@@ -63,21 +64,21 @@ var KanbanContainer = ({ kanban }) => {
63
64
  return unsubscribe;
64
65
  }
65
66
  }, [
66
- kanban.cardView?.target?.query,
67
+ view.query.typename,
67
68
  space
68
69
  ]);
69
70
  useEffect(() => {
70
- if (kanban.cardView?.target && jsonSchema) {
71
- setProjection(new ViewProjection(jsonSchema, kanban.cardView.target));
71
+ if (jsonSchema) {
72
+ setProjection(new ProjectionModel(jsonSchema, view.projection));
72
73
  }
73
74
  }, [
74
- kanban.cardView?.target,
75
+ view.projection,
75
76
  JSON.stringify(jsonSchema)
76
77
  ]);
77
78
  const objects = useQuery(space, cardSchema ? Filter.type(cardSchema) : Filter.nothing());
78
79
  const filteredObjects = useGlobalFilteredObjects(objects);
79
80
  const model = useKanbanModel({
80
- kanban,
81
+ view,
81
82
  schema: cardSchema,
82
83
  projection,
83
84
  items: filteredObjects
@@ -113,74 +114,33 @@ var KanbanContainer = ({ kanban }) => {
113
114
  }
114
115
  };
115
116
 
116
- // packages/plugins/plugin-kanban/src/components/KanbanViewEditor.tsx
117
+ // src/components/KanbanViewEditor.tsx
117
118
  import { useSignals as _useSignals2 } from "@preact-signals/safe-react/tracking";
118
119
  import React2, { useCallback as useCallback2, useMemo as useMemo2 } from "react";
119
- import { createIntent as createIntent2, useIntentDispatcher as useIntentDispatcher2 } from "@dxos/app-framework";
120
120
  import { Type as Type2 } from "@dxos/echo";
121
121
  import { EchoSchema as EchoSchema2, FormatEnum } from "@dxos/echo-schema";
122
- import { invariant } from "@dxos/invariant";
123
122
  import { useClient as useClient2 } from "@dxos/react-client";
124
- import { Filter as Filter2, getSpace as getSpace2, useQuery as useQuery2, useSchema } from "@dxos/react-client/echo";
125
- import { ViewEditor, Form, SelectInput } from "@dxos/react-ui-form";
123
+ import { getSpace as getSpace2, useSchema } from "@dxos/react-client/echo";
124
+ import { Form, SelectInput } from "@dxos/react-ui-form";
126
125
  import { KanbanSettingsSchema } from "@dxos/react-ui-kanban";
127
- import { ViewType, ViewProjection as ViewProjection2 } from "@dxos/schema";
128
- var __dxlog_file = "/home/runner/work/dxos/dxos/packages/plugins/plugin-kanban/src/components/KanbanViewEditor.tsx";
129
- var KanbanViewEditor = ({ kanban }) => {
126
+ import { ProjectionModel as ProjectionModel2 } from "@dxos/schema";
127
+ var KanbanViewEditor = ({ view }) => {
130
128
  var _effect = _useSignals2();
131
129
  try {
132
- const { dispatchPromise: dispatch } = useIntentDispatcher2();
133
130
  const client = useClient2();
134
- const space = getSpace2(kanban);
135
- const currentTypename = useMemo2(() => kanban?.cardView?.target?.query?.typename, [
136
- kanban?.cardView?.target?.query?.typename
131
+ const space = getSpace2(view);
132
+ const kanban = view.presentation.target;
133
+ const currentTypename = useMemo2(() => view.query.typename, [
134
+ view.query.typename
137
135
  ]);
138
136
  const schema = useSchema(client, space, currentTypename);
139
- const views = useQuery2(space, Filter2.type(ViewType));
140
- const handleUpdateTypename = useCallback2((newTypename) => {
141
- invariant(schema, void 0, {
142
- F: __dxlog_file,
143
- L: 34,
144
- S: void 0,
145
- A: [
146
- "schema",
147
- ""
148
- ]
149
- });
150
- invariant(Type2.isMutable(schema), void 0, {
151
- F: __dxlog_file,
152
- L: 35,
153
- S: void 0,
154
- A: [
155
- "Type.isMutable(schema)",
156
- ""
157
- ]
158
- });
159
- const matchingViews = views.filter((view) => view.query.typename === currentTypename);
160
- for (const view of matchingViews) {
161
- view.query.typename = newTypename;
162
- }
163
- schema.updateTypename(newTypename);
164
- }, [
165
- views,
166
- schema
167
- ]);
168
- const handleDelete = useCallback2((fieldId) => {
169
- void dispatch?.(createIntent2(KanbanAction.DeleteCardField, {
170
- kanban,
171
- fieldId
172
- }));
173
- }, [
174
- dispatch,
175
- kanban
176
- ]);
177
137
  const projection = useMemo2(() => {
178
- if (kanban?.cardView?.target && schema) {
138
+ if (schema) {
179
139
  const jsonSchema = schema instanceof EchoSchema2 ? schema.jsonSchema : Type2.toJsonSchema(schema);
180
- return new ViewProjection2(jsonSchema, kanban.cardView.target);
140
+ return new ProjectionModel2(jsonSchema, view.projection);
181
141
  }
182
142
  }, [
183
- kanban?.cardView?.target,
143
+ view.projection,
184
144
  JSON.stringify(schema)
185
145
  ]);
186
146
  const fieldProjections = projection?.getFieldProjections() || [];
@@ -206,10 +166,7 @@ var KanbanViewEditor = ({ kanban }) => {
206
166
  }), [
207
167
  selectFields
208
168
  ]);
209
- if (!space || !schema || !kanban.cardView?.target) {
210
- return null;
211
- }
212
- return /* @__PURE__ */ React2.createElement(React2.Fragment, null, /* @__PURE__ */ React2.createElement(Form, {
169
+ return /* @__PURE__ */ React2.createElement(Form, {
213
170
  Custom: custom,
214
171
  schema: KanbanSettingsSchema,
215
172
  values: initialValues,
@@ -217,43 +174,37 @@ var KanbanViewEditor = ({ kanban }) => {
217
174
  autoSave: true,
218
175
  outerSpacing: false,
219
176
  classNames: "pbs-inputSpacingBlock"
220
- }), /* @__PURE__ */ React2.createElement(ViewEditor, {
221
- registry: space.db.schemaRegistry,
222
- schema,
223
- view: kanban.cardView.target,
224
- onTypenameChanged: Type2.isMutable(schema) ? handleUpdateTypename : void 0,
225
- onDelete: Type2.isMutable(schema) ? handleDelete : void 0,
226
- outerSpacing: false
227
- }));
177
+ });
228
178
  } finally {
229
179
  _effect.f();
230
180
  }
231
181
  };
232
182
 
233
- // packages/plugins/plugin-kanban/src/capabilities/react-surface.tsx
183
+ // src/capabilities/react-surface.tsx
234
184
  var react_surface_default = () => contributes(Capabilities.ReactSurface, [
235
185
  createSurface({
236
- id: `${KANBAN_PLUGIN}/kanban`,
186
+ id: meta.id,
237
187
  role: [
238
188
  "article",
239
189
  "section"
240
190
  ],
241
- filter: (data) => isKanban(data.subject),
191
+ filter: (data) => Obj2.instanceOf(DataType.View, data.subject) && Obj2.instanceOf(KanbanView, data.subject.presentation.target),
242
192
  component: ({ data, role }) => /* @__PURE__ */ React3.createElement(KanbanContainer, {
243
- kanban: data.subject,
193
+ view: data.subject,
244
194
  role
245
195
  })
246
196
  }),
247
197
  createSurface({
248
- id: `${KANBAN_PLUGIN}/object-settings`,
198
+ id: `${meta.id}/object-settings`,
249
199
  role: "object-settings",
250
- filter: (data) => isKanban(data.subject),
200
+ position: "hoist",
201
+ filter: (data) => Obj2.instanceOf(DataType.View, data.subject) && Obj2.instanceOf(KanbanView, data.subject.presentation.target),
251
202
  component: ({ data }) => /* @__PURE__ */ React3.createElement(KanbanViewEditor, {
252
- kanban: data.subject
203
+ view: data.subject
253
204
  })
254
205
  }),
255
206
  createSurface({
256
- id: `${KANBAN_PLUGIN}/create-initial-schema-form-[pivot-column]`,
207
+ id: `${meta.id}/create-initial-schema-form-[pivot-column]`,
257
208
  role: "form-input",
258
209
  filter: (data) => {
259
210
  const annotation = findAnnotation(data.schema.ast, PivotColumnAnnotationId);
@@ -302,4 +253,4 @@ var react_surface_default = () => contributes(Capabilities.ReactSurface, [
302
253
  export {
303
254
  react_surface_default as default
304
255
  };
305
- //# sourceMappingURL=react-surface-HJL2JRJP.mjs.map
256
+ //# sourceMappingURL=react-surface-MWNNZYMN.mjs.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 { Obj, Type } from '@dxos/echo';\nimport { findAnnotation } from '@dxos/effect';\nimport { ClientCapabilities } from '@dxos/plugin-client';\nimport { getSpace, isSpace, type Space } from '@dxos/react-client/echo';\nimport { type InputProps, SelectInput, useFormValues } from '@dxos/react-ui-form';\nimport { KanbanView } from '@dxos/react-ui-kanban';\nimport { DataType } from '@dxos/schema';\n\nimport { KanbanContainer, KanbanViewEditor } from '../components';\nimport { meta } from '../meta';\nimport { PivotColumnAnnotationId } from '../types';\n\nexport default () =>\n contributes(Capabilities.ReactSurface, [\n createSurface({\n id: meta.id,\n role: ['article', 'section'],\n filter: (data): data is { subject: DataType.View } =>\n Obj.instanceOf(DataType.View, data.subject) && Obj.instanceOf(KanbanView, data.subject.presentation.target),\n component: ({ data, role }) => <KanbanContainer view={data.subject} role={role} />,\n }),\n createSurface({\n id: `${meta.id}/object-settings`,\n role: 'object-settings',\n position: 'hoist',\n filter: (data): data is { subject: DataType.View } =>\n Obj.instanceOf(DataType.View, data.subject) && Obj.instanceOf(KanbanView, data.subject.presentation.target),\n component: ({ data }) => <KanbanViewEditor view={data.subject} />,\n }),\n createSurface({\n id: `${meta.id}/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 | DataType.Collection | 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) => Type.getTypename(schema) === typename);\n const [selectedSchema] = space?.db.schemaRegistry.query({ typename }).runSync();\n\n const singleSelectColumns = useMemo(() => {\n const properties = staticSchema\n ? Type.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 { Filter, Obj, Type } from '@dxos/echo';\nimport { EchoSchema, type TypedObject } from '@dxos/echo-schema';\nimport { useGlobalFilteredObjects } from '@dxos/plugin-search';\nimport { useClient } from '@dxos/react-client';\nimport { useQuery, getSpace } from '@dxos/react-client/echo';\nimport { useKanbanModel, Kanban } from '@dxos/react-ui-kanban';\nimport { StackItem } from '@dxos/react-ui-stack';\nimport { ProjectionModel, type DataType } from '@dxos/schema';\n\nimport { KanbanAction } from '../types';\n\nexport const KanbanContainer = ({ view }: { view: DataType.View; role: string }) => {\n const client = useClient();\n const [cardSchema, setCardSchema] = useState<TypedObject<any, any>>();\n const [projection, setProjection] = useState<ProjectionModel>();\n const space = getSpace(view);\n const { dispatchPromise: dispatch } = useIntentDispatcher();\n\n const jsonSchema = useMemo(() => {\n if (!cardSchema) {\n return undefined;\n }\n return cardSchema instanceof EchoSchema ? cardSchema.jsonSchema : Type.toJsonSchema(cardSchema);\n }, [cardSchema]);\n\n useEffect(() => {\n const typename = view.query.typename;\n const staticSchema = client.graph.schemaRegistry.schemas.find((schema) => Type.getTypename(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 }, [view.query.typename, space]);\n\n useEffect(() => {\n if (jsonSchema) {\n setProjection(new ProjectionModel(jsonSchema, view.projection));\n }\n // TODO(ZaymonFC): Is there a better way to get notified about deep changes in the json schema?\n }, [view.projection, 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 view,\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 = Obj.make(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 { Type } from '@dxos/echo';\nimport { EchoSchema, FormatEnum } from '@dxos/echo-schema';\nimport { useClient } from '@dxos/react-client';\nimport { getSpace, useSchema } from '@dxos/react-client/echo';\nimport { Form, SelectInput, type CustomInputMap } from '@dxos/react-ui-form';\nimport { KanbanSettingsSchema, type KanbanView } from '@dxos/react-ui-kanban';\nimport { type DataType, ProjectionModel } from '@dxos/schema';\n\ntype KanbanViewEditorProps = { view: DataType.View };\n\nexport const KanbanViewEditor = ({ view }: KanbanViewEditorProps) => {\n const client = useClient();\n const space = getSpace(view);\n const kanban = view.presentation.target as KanbanView;\n const currentTypename = useMemo(() => view.query.typename, [view.query.typename]);\n const schema = useSchema(client, space, currentTypename);\n\n const projection = useMemo(() => {\n if (schema) {\n const jsonSchema = schema instanceof EchoSchema ? schema.jsonSchema : Type.toJsonSchema(schema);\n return new ProjectionModel(jsonSchema, view.projection);\n }\n }, [view.projection, JSON.stringify(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 handleSave = 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 return (\n <Form\n Custom={custom}\n schema={KanbanSettingsSchema}\n values={initialValues}\n onSave={handleSave}\n autoSave\n outerSpacing={false}\n classNames='pbs-inputSpacingBlock'\n />\n );\n};\n"],
5
+ "mappings": "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",
6
+ "names": ["React", "useMemo", "Capabilities", "contributes", "createSurface", "useCapabilities", "Obj", "Type", "findAnnotation", "ClientCapabilities", "getSpace", "isSpace", "SelectInput", "useFormValues", "KanbanView", "DataType", "React", "useCallback", "useEffect", "useMemo", "useState", "createIntent", "useIntentDispatcher", "Filter", "Obj", "Type", "EchoSchema", "useGlobalFilteredObjects", "useClient", "useQuery", "getSpace", "useKanbanModel", "Kanban", "StackItem", "ProjectionModel", "KanbanContainer", "view", "client", "useClient", "cardSchema", "setCardSchema", "useState", "projection", "setProjection", "space", "getSpace", "dispatchPromise", "dispatch", "useIntentDispatcher", "jsonSchema", "useMemo", "undefined", "EchoSchema", "Type", "toJsonSchema", "useEffect", "typename", "query", "staticSchema", "graph", "schemaRegistry", "schemas", "find", "schema", "getTypename", "db", "unsubscribe", "subscribe", "results", "fire", "ProjectionModel", "JSON", "stringify", "objects", "useQuery", "Filter", "type", "nothing", "filteredObjects", "useGlobalFilteredObjects", "model", "useKanbanModel", "items", "handleAddCard", "useCallback", "columnValue", "path", "columnFieldPath", "card", "Obj", "make", "add", "id", "handleRemoveCard", "createIntent", "KanbanAction", "DeleteCard", "StackItem", "Content", "Kanban", "onAddCard", "onRemoveCard", "React", "useCallback", "useMemo", "Type", "EchoSchema", "FormatEnum", "useClient", "getSpace", "useSchema", "Form", "SelectInput", "KanbanSettingsSchema", "ProjectionModel", "KanbanViewEditor", "view", "client", "useClient", "space", "getSpace", "kanban", "presentation", "target", "currentTypename", "useMemo", "query", "typename", "schema", "useSchema", "projection", "jsonSchema", "EchoSchema", "Type", "toJsonSchema", "ProjectionModel", "JSON", "stringify", "fieldProjections", "getFieldProjections", "selectFields", "filter", "field", "props", "format", "FormatEnum", "SingleSelect", "map", "value", "id", "label", "path", "handleSave", "useCallback", "values", "columnFieldId", "initialValues", "custom", "React", "SelectInput", "options", "Form", "Custom", "KanbanSettingsSchema", "onSave", "autoSave", "outerSpacing", "classNames", "contributes", "Capabilities", "ReactSurface", "createSurface", "id", "meta", "role", "filter", "data", "Obj", "instanceOf", "DataType", "View", "subject", "KanbanView", "presentation", "target", "component", "React", "KanbanContainer", "view", "position", "KanbanViewEditor", "annotation", "findAnnotation", "schema", "ast", "PivotColumnAnnotationId", "inputProps", "props", "space", "isSpace", "getSpace", "typename", "useFormValues", "schemaWhitelists", "useCapabilities", "ClientCapabilities", "SchemaWhiteList", "staticSchema", "flat", "find", "Type", "getTypename", "selectedSchema", "db", "schemaRegistry", "query", "runSync", "singleSelectColumns", "useMemo", "properties", "toJsonSchema", "jsonSchema", "columns", "Object", "entries", "reduce", "acc", "key", "value", "format", "push", "SelectInput", "options", "map", "column"]
7
+ }
@@ -2,12 +2,12 @@ import {
2
2
  CreateKanbanSchema,
3
3
  KanbanAction,
4
4
  PivotColumnAnnotationId,
5
- isKanban
6
- } from "./chunk-6JEDX6HA.mjs";
5
+ createKanban
6
+ } from "../chunk-X44RHBZK.mjs";
7
7
  export {
8
8
  CreateKanbanSchema,
9
9
  KanbanAction,
10
10
  PivotColumnAnnotationId,
11
- isKanban
11
+ createKanban
12
12
  };
13
- //# sourceMappingURL=types.mjs.map
13
+ //# sourceMappingURL=index.mjs.map
@@ -2,20 +2,22 @@ import { createRequire } from 'node:module';const require = createRequire(import
2
2
  import {
3
3
  KanbanAction,
4
4
  meta
5
- } from "./chunk-7DHZSNGQ.mjs";
5
+ } from "./chunk-6WK5CGYY.mjs";
6
6
 
7
- // packages/plugins/plugin-kanban/src/capabilities/artifact-definition.ts
7
+ // src/capabilities/artifact-definition.ts
8
8
  import { Schema, pipe } from "effect";
9
9
  import { createTool, ToolResult } from "@dxos/ai";
10
10
  import { Capabilities, chain, contributes, createIntent } from "@dxos/app-framework";
11
- import { defineArtifact } from "@dxos/artifact";
12
11
  import { createArtifactElement } from "@dxos/assistant";
13
- import { Obj } from "@dxos/echo";
12
+ import { defineArtifact } from "@dxos/blueprints";
13
+ import { Obj, Query } from "@dxos/echo";
14
14
  import { invariant } from "@dxos/invariant";
15
15
  import { SpaceAction } from "@dxos/plugin-space/types";
16
16
  import { Filter, fullyQualifiedId } from "@dxos/react-client/echo";
17
- import { KanbanType } from "@dxos/react-ui-kanban";
18
- var __dxlog_file = "/home/runner/work/dxos/dxos/packages/plugins/plugin-kanban/src/capabilities/artifact-definition.ts";
17
+ import { KanbanView } from "@dxos/react-ui-kanban";
18
+ import { DataType } from "@dxos/schema";
19
+ import { isNonNullable } from "@dxos/util";
20
+ var __dxlog_file = "/__w/dxos/dxos/packages/plugins/plugin-kanban/src/capabilities/artifact-definition.ts";
19
21
  var QualifiedId = Schema.String.annotations({
20
22
  description: "The fully qualified ID of the kanban `spaceID:objectID`"
21
23
  });
@@ -28,7 +30,7 @@ var artifact_definition_default = () => {
28
30
  - When adding items, you must not include the 'id' field -- it is automatically generated
29
31
  - BEFORE adding items, always make sure the board has been shown to the user!
30
32
  `,
31
- schema: KanbanType,
33
+ schema: KanbanView,
32
34
  tools: [
33
35
  createTool(meta.id, {
34
36
  name: "create",
@@ -47,7 +49,7 @@ var artifact_definition_default = () => {
47
49
  execute: async ({ typename, pivotColumn }, { extensions }) => {
48
50
  invariant(extensions?.space, "No space", {
49
51
  F: __dxlog_file,
50
- L: 57,
52
+ L: 59,
51
53
  S: void 0,
52
54
  A: [
53
55
  "extensions?.space",
@@ -56,7 +58,7 @@ var artifact_definition_default = () => {
56
58
  });
57
59
  invariant(extensions?.dispatch, "No intent dispatcher", {
58
60
  F: __dxlog_file,
59
- L: 58,
61
+ L: 60,
60
62
  S: void 0,
61
63
  A: [
62
64
  "extensions?.dispatch",
@@ -91,7 +93,7 @@ var artifact_definition_default = () => {
91
93
  execute: async (_input, { extensions }) => {
92
94
  invariant(extensions?.space, "No space", {
93
95
  F: __dxlog_file,
94
- L: 89,
96
+ L: 91,
95
97
  S: void 0,
96
98
  A: [
97
99
  "extensions?.space",
@@ -99,15 +101,19 @@ var artifact_definition_default = () => {
99
101
  ]
100
102
  });
101
103
  const space = extensions.space;
102
- const { objects: boards } = await space.db.query(Filter.type(KanbanType)).run();
103
- const boardInfo = await Promise.all(boards.map(async (board) => {
104
- const view = await board.cardView?.load();
104
+ const { objects } = await space.db.query(Filter.type(DataType.View)).run();
105
+ const boardInfo = await Promise.all(objects.map(async (view) => {
106
+ const kanban = await view.presentation.load();
107
+ if (!Obj.instanceOf(KanbanView, kanban)) {
108
+ return null;
109
+ }
105
110
  return {
106
- id: fullyQualifiedId(board),
107
- typename: view?.query.typename
111
+ id: fullyQualifiedId(view),
112
+ name: view.name ?? "Unnamed Kanban",
113
+ typename: view.query.typename
108
114
  };
109
115
  }));
110
- return ToolResult.Success(boardInfo);
116
+ return ToolResult.Success(boardInfo.filter(isNonNullable));
111
117
  }
112
118
  }),
113
119
  createTool(meta.id, {
@@ -120,7 +126,7 @@ var artifact_definition_default = () => {
120
126
  execute: async ({ id }, { extensions }) => {
121
127
  invariant(extensions?.space, "No space", {
122
128
  F: __dxlog_file,
123
- L: 112,
129
+ L: 119,
124
130
  S: void 0,
125
131
  A: [
126
132
  "extensions?.space",
@@ -128,24 +134,14 @@ var artifact_definition_default = () => {
128
134
  ]
129
135
  });
130
136
  const space = extensions.space;
131
- const { objects: boards } = await space.db.query(Filter.type(KanbanType)).run();
132
- const board = boards.find((board2) => fullyQualifiedId(board2) === id);
133
- invariant(Obj.instanceOf(KanbanType, board), void 0, {
134
- F: __dxlog_file,
135
- L: 116,
136
- S: void 0,
137
- A: [
138
- "Obj.instanceOf(KanbanType, board)",
139
- ""
140
- ]
141
- });
142
- const view = await board.cardView?.load();
143
- invariant(view, void 0, {
137
+ const view = await space.db.query(Query.select(Filter.and(Filter.type(DataType.View), Filter.ids(id)))).first();
138
+ const kanban = await view.presentation.load();
139
+ invariant(Obj.instanceOf(KanbanView, kanban), void 0, {
144
140
  F: __dxlog_file,
145
- L: 119,
141
+ L: 127,
146
142
  S: void 0,
147
143
  A: [
148
- "view",
144
+ "Obj.instanceOf(KanbanView, kanban)",
149
145
  ""
150
146
  ]
151
147
  });
@@ -155,7 +151,7 @@ var artifact_definition_default = () => {
155
151
  }).firstOrUndefined();
156
152
  invariant(schema, void 0, {
157
153
  F: __dxlog_file,
158
- L: 123,
154
+ L: 131,
159
155
  S: void 0,
160
156
  A: [
161
157
  "schema",
@@ -164,8 +160,8 @@ var artifact_definition_default = () => {
164
160
  });
165
161
  return ToolResult.Success({
166
162
  schema,
167
- columnField: board.columnFieldId,
168
- viewFields: view.fields
163
+ columnField: kanban.columnFieldId,
164
+ viewFields: view.projection.fields
169
165
  });
170
166
  }
171
167
  })
@@ -176,4 +172,4 @@ var artifact_definition_default = () => {
176
172
  export {
177
173
  artifact_definition_default as default
178
174
  };
179
- //# sourceMappingURL=artifact-definition-FA2IAAUQ.mjs.map
175
+ //# sourceMappingURL=artifact-definition-QVZXPDXK.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 { createTool, ToolResult } from '@dxos/ai';\nimport { Capabilities, chain, contributes, createIntent, type PromiseIntentDispatcher } from '@dxos/app-framework';\nimport { createArtifactElement } from '@dxos/assistant';\nimport { defineArtifact } from '@dxos/blueprints';\nimport { Obj, Query } from '@dxos/echo';\nimport { invariant } from '@dxos/invariant';\nimport { SpaceAction } from '@dxos/plugin-space/types';\nimport { Filter, fullyQualifiedId, type Space } from '@dxos/react-client/echo';\nimport { KanbanView } from '@dxos/react-ui-kanban';\nimport { DataType } from '@dxos/schema';\nimport { isNonNullable } from '@dxos/util';\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: KanbanView,\n tools: [\n createTool(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 createTool(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 } = await space.db.query(Filter.type(DataType.View)).run();\n\n const boardInfo = await Promise.all(\n objects.map(async (view) => {\n const kanban = await view.presentation.load();\n if (!Obj.instanceOf(KanbanView, kanban)) {\n return null;\n }\n\n return {\n id: fullyQualifiedId(view),\n name: view.name ?? 'Unnamed Kanban',\n typename: view.query.typename,\n };\n }),\n );\n\n return ToolResult.Success(boardInfo.filter(isNonNullable));\n },\n }),\n createTool(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 view = (await space.db\n // TODO(wittjosiah): Filter.and should aggregate type\n .query(Query.select(Filter.and(Filter.type(DataType.View), Filter.ids(id))))\n .first()) as DataType.View;\n\n const kanban = await view.presentation.load();\n invariant(Obj.instanceOf(KanbanView, kanban));\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: kanban.columnFieldId,\n viewFields: view.projection.fields,\n });\n },\n }),\n ],\n });\n\n return contributes(Capabilities.ArtifactDefinition, definition);\n};\n"],
5
+ "mappings": ";;;;;;;AAIA,SAASA,QAAQC,YAAY;AAE7B,SAASC,YAAYC,kBAAkB;AACvC,SAASC,cAAcC,OAAOC,aAAaC,oBAAkD;AAC7F,SAASC,6BAA6B;AACtC,SAASC,sBAAsB;AAC/B,SAASC,KAAKC,aAAa;AAC3B,SAASC,iBAAiB;AAC1B,SAASC,mBAAmB;AAC5B,SAASC,QAAQC,wBAAoC;AACrD,SAASC,kBAAkB;AAC3B,SAASC,gBAAgB;AACzB,SAASC,qBAAqB;;AAK9B,IAAMC,cAAcC,OAAOC,OAAOC,YAAY;EAC5CC,aAAa;AACf,CAAA;AASA,IAAA,8BAAe,MAAA;AACb,QAAMC,aAAaC,eAAe;IAChCC,IAAI,YAAYC,KAAKD,EAAE;IACvBE,MAAMD,KAAKC;IACXC,cAAc;;;;;IAKdC,QAAQC;IACRC,OAAO;MACLC,WAAWN,KAAKD,IAAI;QAClBE,MAAM;QACNL,aAAa;;;QAGbW,SAAS;QACTJ,QAAQV,OAAOe,OAAO;UACpBC,UAAUhB,OAAOC,OAAOC,YAAY;YAClCC,aAAa;UACf,CAAA;UACAc,aAAajB,OAAOkB,SAASlB,OAAOC,MAAM,EAAEC,YAAY;YACtDC,aAAa;UACf,CAAA;QACF,CAAA;QACAgB,SAAS,OAAO,EAAEH,UAAUC,YAAW,GAAI,EAAEG,WAAU,MAAE;AACvDC,oBAAUD,YAAYE,OAAO,YAAA;;;;;;;;;AAC7BD,oBAAUD,YAAYG,UAAU,wBAAA;;;;;;;;;AAGhC,gBAAMb,SAAS,MAAMU,WAAWE,MAAME,GAAGC,eAAeC,MAAM;YAAEV;UAAS,CAAA,EAAGW,iBAAgB;AAC5F,cAAI,CAACjB,QAAQ;AACX,mBAAOkB,WAAWC,MAAM,qBAAqBb,QAAAA,EAAU;UACzD;AAEA,gBAAMc,SAASC,KACbC,aAAaC,aAAaC,QAAQ;YAChCZ,OAAOF,WAAWE;YAClBN;YACAmB,oBAAoBlB;UACtB,CAAA,GACAmB,MAAMC,YAAYC,WAAW;YAAEC,QAAQnB,WAAWE;UAAM,CAAA,CAAA;AAG1D,gBAAM,EAAEkB,MAAMC,MAAK,IAAK,MAAMrB,WAAWG,SAASO,MAAAA;AAClD,cAAI,CAACU,QAAQC,OAAO;AAClB,mBAAOb,WAAWC,MAAMY,OAAOC,WAAW,+BAAA;UAC5C;AAEA,iBAAOd,WAAWe,QAAQC,sBAAsBJ,KAAKlC,EAAE,CAAA;QACzD;MACF,CAAA;MACAO,WAAWN,KAAKD,IAAI;QAClBE,MAAM;QACNL,aAAa;QACbW,SAAS;QACTJ,QAAQV,OAAOe,OAAO,CAAC,CAAA;QACvBI,SAAS,OAAO0B,QAAQ,EAAEzB,WAAU,MAAE;AACpCC,oBAAUD,YAAYE,OAAO,YAAA;;;;;;;;;AAC7B,gBAAMA,QAAQF,WAAWE;AACzB,gBAAM,EAAEwB,QAAO,IAAK,MAAMxB,MAAME,GAAGE,MAAMqB,OAAOC,KAAKC,SAASC,IAAI,CAAA,EAAGC,IAAG;AAExE,gBAAMC,YAAY,MAAMC,QAAQC,IAC9BR,QAAQS,IAAI,OAAOC,SAAAA;AACjB,kBAAMC,SAAS,MAAMD,KAAKE,aAAaC,KAAI;AAC3C,gBAAI,CAACC,IAAIC,WAAWlD,YAAY8C,MAAAA,GAAS;AACvC,qBAAO;YACT;AAEA,mBAAO;cACLnD,IAAIwD,iBAAiBN,IAAAA;cACrBhD,MAAMgD,KAAKhD,QAAQ;cACnBQ,UAAUwC,KAAK9B,MAAMV;YACvB;UACF,CAAA,CAAA;AAGF,iBAAOY,WAAWe,QAAQS,UAAUW,OAAOC,aAAAA,CAAAA;QAC7C;MACF,CAAA;MACAnD,WAAWN,KAAKD,IAAI;QAClBE,MAAM;QACNL,aAAa;QACbW,SAAS;QACTJ,QAAQV,OAAOe,OAAO;UAAET,IAAIP;QAAY,CAAA;QACxCoB,SAAS,OAAO,EAAEb,GAAE,GAAI,EAAEc,WAAU,MAAE;AACpCC,oBAAUD,YAAYE,OAAO,YAAA;;;;;;;;;AAC7B,gBAAMA,QAAQF,WAAWE;AACzB,gBAAMkC,OAAQ,MAAMlC,MAAME,GAEvBE,MAAMuC,MAAMC,OAAOnB,OAAOoB,IAAIpB,OAAOC,KAAKC,SAASC,IAAI,GAAGH,OAAOqB,IAAI9D,EAAAA,CAAAA,CAAAA,CAAAA,EACrE+D,MAAK;AAER,gBAAMZ,SAAS,MAAMD,KAAKE,aAAaC,KAAI;AAC3CtC,oBAAUuC,IAAIC,WAAWlD,YAAY8C,MAAAA,GAAAA,QAAAA;;;;;;;;;AAErC,gBAAMzC,WAAWwC,KAAK9B,MAAMV;AAC5B,gBAAMN,SAAS,MAAMY,MAAME,GAAGC,eAAeC,MAAM;YAAEV;UAAS,CAAA,EAAGW,iBAAgB;AACjFN,oBAAUX,QAAAA,QAAAA;;;;;;;;;AAEV,iBAAOkB,WAAWe,QAAQ;YACxBjC;YACA4D,aAAab,OAAOc;YACpBC,YAAYhB,KAAKiB,WAAWC;UAC9B,CAAA;QACF;MACF,CAAA;;EAEJ,CAAA;AAEA,SAAOC,YAAYC,aAAaC,oBAAoBzE,UAAAA;AACtD;",
6
+ "names": ["Schema", "pipe", "createTool", "ToolResult", "Capabilities", "chain", "contributes", "createIntent", "createArtifactElement", "defineArtifact", "Obj", "Query", "invariant", "SpaceAction", "Filter", "fullyQualifiedId", "KanbanView", "DataType", "isNonNullable", "QualifiedId", "Schema", "String", "annotations", "description", "definition", "defineArtifact", "id", "meta", "name", "instructions", "schema", "KanbanView", "tools", "createTool", "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", "Filter", "type", "DataType", "View", "run", "boardInfo", "Promise", "all", "map", "view", "kanban", "presentation", "load", "Obj", "instanceOf", "fullyQualifiedId", "filter", "isNonNullable", "Query", "select", "and", "ids", "first", "columnField", "columnFieldId", "viewFields", "projection", "fields", "contributes", "Capabilities", "ArtifactDefinition"]
7
+ }