@mulmoclaude/core 1.0.0 → 1.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (177) hide show
  1. package/assets/helps/collection-skills.md +28 -0
  2. package/assets/helps/custom-view.md +5 -0
  3. package/dist/artifacts/paths.cjs +68 -0
  4. package/dist/artifacts/paths.cjs.map +1 -0
  5. package/dist/artifacts/paths.d.ts +45 -0
  6. package/dist/artifacts/paths.js +62 -0
  7. package/dist/artifacts/paths.js.map +1 -0
  8. package/dist/atomic-C_7YpMiM.cjs +102 -0
  9. package/dist/atomic-C_7YpMiM.cjs.map +1 -0
  10. package/dist/atomic-DPpdrJzO.js +89 -0
  11. package/dist/atomic-DPpdrJzO.js.map +1 -0
  12. package/dist/collection/core/completion.d.ts +21 -0
  13. package/dist/collection/core/ids.d.ts +5 -0
  14. package/dist/collection/core/linkTargets.d.ts +14 -0
  15. package/dist/collection/core/ownProp.d.ts +9 -0
  16. package/dist/collection/core/recordKeys.d.ts +14 -0
  17. package/dist/collection/core/schemaRules.d.ts +167 -0
  18. package/dist/collection/core/schemaZ.d.ts +490 -10
  19. package/dist/collection/core/sortValueOf.d.ts +21 -0
  20. package/dist/collection/core/textSearch.d.ts +12 -0
  21. package/dist/collection/index.cjs +109 -29
  22. package/dist/collection/index.cjs.map +1 -1
  23. package/dist/collection/index.d.ts +4 -0
  24. package/dist/collection/index.js +98 -29
  25. package/dist/collection/index.js.map +1 -1
  26. package/dist/collection/registry/server/index.cjs +14 -42
  27. package/dist/collection/registry/server/index.cjs.map +1 -1
  28. package/dist/collection/registry/server/index.js +6 -34
  29. package/dist/collection/registry/server/index.js.map +1 -1
  30. package/dist/collection/server/discovery.d.ts +7 -0
  31. package/dist/collection/server/host.d.ts +3 -8
  32. package/dist/collection/server/index.cjs +10 -9
  33. package/dist/collection/server/index.d.ts +1 -0
  34. package/dist/collection/server/index.js +4 -4
  35. package/dist/collection/server/io.d.ts +0 -88
  36. package/dist/collection/server/skillAssets.d.ts +90 -0
  37. package/dist/collection-watchers/config.d.ts +2 -4
  38. package/dist/collection-watchers/index.cjs +5 -5
  39. package/dist/collection-watchers/index.cjs.map +1 -1
  40. package/dist/collection-watchers/index.js +5 -5
  41. package/dist/collection-watchers/index.js.map +1 -1
  42. package/dist/{discovery-BbsJwVEq.js → discovery-DYlEOa9a.js} +427 -393
  43. package/dist/discovery-DYlEOa9a.js.map +1 -0
  44. package/dist/{discovery-Bklck7Ck.cjs → discovery-UxkvBxV-.cjs} +445 -435
  45. package/dist/discovery-UxkvBxV-.cjs.map +1 -0
  46. package/dist/dist-Cwk0e12G.js +50 -0
  47. package/dist/dist-Cwk0e12G.js.map +1 -0
  48. package/dist/dist-pWpC-b04.cjs +61 -0
  49. package/dist/dist-pWpC-b04.cjs.map +1 -0
  50. package/dist/feeds/index.cjs +2 -2
  51. package/dist/feeds/index.js +2 -2
  52. package/dist/feeds/server/host.d.ts +5 -8
  53. package/dist/feeds/server/index.cjs +143 -61
  54. package/dist/feeds/server/index.cjs.map +1 -1
  55. package/dist/feeds/server/index.js +141 -59
  56. package/dist/feeds/server/index.js.map +1 -1
  57. package/dist/files/atomic.d.ts +34 -0
  58. package/dist/files/index.cjs +47 -0
  59. package/dist/files/index.cjs.map +1 -0
  60. package/dist/files/index.d.ts +3 -0
  61. package/dist/files/index.js +40 -0
  62. package/dist/files/index.js.map +1 -0
  63. package/dist/files/json.d.ts +4 -0
  64. package/dist/files/safe.d.ts +9 -0
  65. package/dist/google/auth.d.ts +1 -1
  66. package/dist/google/collectionDateTime.d.ts +5 -0
  67. package/dist/google/collectionSync.d.ts +2 -2
  68. package/dist/google/fsJson.d.ts +3 -2
  69. package/dist/google/host.d.ts +3 -6
  70. package/dist/google/index.cjs +64 -91
  71. package/dist/google/index.cjs.map +1 -1
  72. package/dist/google/index.d.ts +1 -0
  73. package/dist/google/index.js +57 -85
  74. package/dist/google/index.js.map +1 -1
  75. package/dist/host/hostSlot.d.ts +27 -0
  76. package/dist/{ids-DWmHjm17.cjs → ids-BJ7rdrDN.cjs} +17 -1
  77. package/dist/{ids-DWmHjm17.cjs.map → ids-BJ7rdrDN.cjs.map} +1 -1
  78. package/dist/{ids-D1M1T6KJ.js → ids-Bv6AOW9Z.js} +12 -2
  79. package/dist/{ids-D1M1T6KJ.js.map → ids-Bv6AOW9Z.js.map} +1 -1
  80. package/dist/{ingestTypes-DbuQNuK6.cjs → ingestTypes-CkbM-zrO.cjs} +2 -2
  81. package/dist/{ingestTypes-DbuQNuK6.cjs.map → ingestTypes-CkbM-zrO.cjs.map} +1 -1
  82. package/dist/{ingestTypes-Ci4eOgv-.js → ingestTypes-DuCiZqye.js} +2 -2
  83. package/dist/{ingestTypes-Ci4eOgv-.js.map → ingestTypes-DuCiZqye.js.map} +1 -1
  84. package/dist/notifier/engine.d.ts +2 -4
  85. package/dist/notifier/index.cjs +1 -1
  86. package/dist/notifier/index.js +1 -1
  87. package/dist/{notifier-ChpY0XrY.js → notifier-BdA5qzhe.js} +14 -16
  88. package/dist/notifier-BdA5qzhe.js.map +1 -0
  89. package/dist/{notifier-bS8IEeLA.cjs → notifier-tMsAXyXp.cjs} +14 -16
  90. package/dist/notifier-tMsAXyXp.cjs.map +1 -0
  91. package/dist/plugin-vue/fileWatch.d.ts +5 -0
  92. package/dist/plugin-vue/i18n.cjs +45 -0
  93. package/dist/plugin-vue/i18n.cjs.map +1 -0
  94. package/dist/plugin-vue/i18n.js +44 -0
  95. package/dist/plugin-vue/i18n.js.map +1 -0
  96. package/dist/plugin-vue/index.cjs +98 -0
  97. package/dist/plugin-vue/index.cjs.map +1 -0
  98. package/dist/plugin-vue/index.d.ts +5 -0
  99. package/dist/plugin-vue/index.js +91 -0
  100. package/dist/plugin-vue/index.js.map +1 -0
  101. package/dist/plugin-vue/markdownDoc.d.ts +10 -0
  102. package/dist/plugin-vue/pluginI18n.d.ts +22 -0
  103. package/dist/plugin-vue/useClipboardCopy.d.ts +6 -0
  104. package/dist/plugin-vue/useFileWatch.d.ts +8 -0
  105. package/dist/plugin-vue/useMarkdownDoc.d.ts +3 -0
  106. package/dist/{promptSafety-Bugq2kqL.js → promptSafety-BNelBKhh.js} +79 -7
  107. package/dist/promptSafety-BNelBKhh.js.map +1 -0
  108. package/dist/{promptSafety-DbE6eZmP.cjs → promptSafety-QAtADXUF.cjs} +108 -6
  109. package/dist/promptSafety-QAtADXUF.cjs.map +1 -0
  110. package/dist/remote-host/index.cjs.map +1 -1
  111. package/dist/remote-host/index.js.map +1 -1
  112. package/dist/remote-host/server/hostRunner.d.ts +2 -1
  113. package/dist/remote-host/server/index.cjs +6 -5
  114. package/dist/remote-host/server/index.cjs.map +1 -1
  115. package/dist/remote-host/server/index.js +3 -2
  116. package/dist/remote-host/server/index.js.map +1 -1
  117. package/dist/remote-view/index.cjs +1 -1
  118. package/dist/remote-view/index.cjs.map +1 -1
  119. package/dist/remote-view/index.d.ts +1 -1
  120. package/dist/remote-view/index.js +1 -1
  121. package/dist/remote-view/index.js.map +1 -1
  122. package/dist/scheduler/index.cjs +3 -3
  123. package/dist/scheduler/index.cjs.map +1 -1
  124. package/dist/scheduler/index.js +2 -2
  125. package/dist/scheduler/index.js.map +1 -1
  126. package/dist/scheduler/task-manager.d.ts +2 -5
  127. package/dist/{server-8EZggEg7.js → server-CnwgECW-.js} +209 -41
  128. package/dist/server-CnwgECW-.js.map +1 -0
  129. package/dist/{server-BOiz_HDi.cjs → server-DFo3zFYB.cjs} +250 -46
  130. package/dist/server-DFo3zFYB.cjs.map +1 -0
  131. package/dist/skill-bridge/index.cjs +1 -1
  132. package/dist/skill-bridge/index.js +1 -1
  133. package/dist/translation/client.cjs +16 -0
  134. package/dist/translation/client.cjs.map +1 -1
  135. package/dist/translation/client.d.ts +6 -0
  136. package/dist/translation/client.js +16 -1
  137. package/dist/translation/client.js.map +1 -1
  138. package/dist/utils/errors.d.ts +2 -1
  139. package/dist/utils/fetch.cjs +36 -0
  140. package/dist/utils/fetch.cjs.map +1 -0
  141. package/dist/{collection/registry/server → utils}/fetch.d.ts +5 -3
  142. package/dist/utils/fetch.js +34 -0
  143. package/dist/utils/fetch.js.map +1 -0
  144. package/dist/utils/index.cjs +11 -3
  145. package/dist/utils/index.cjs.map +1 -0
  146. package/dist/utils/index.js +9 -1
  147. package/dist/utils/index.js.map +1 -0
  148. package/dist/whisper/index.cjs +9 -9
  149. package/dist/whisper/index.cjs.map +1 -1
  150. package/dist/whisper/index.js +3 -3
  151. package/dist/wiki/index.cjs +3 -16
  152. package/dist/wiki/index.cjs.map +1 -1
  153. package/dist/wiki/index.js +1 -14
  154. package/dist/wiki/index.js.map +1 -1
  155. package/dist/wiki/render.d.ts +2 -4
  156. package/dist/wiki/server/frontmatter.d.ts +2 -6
  157. package/dist/wiki/server/index.cjs +4 -40
  158. package/dist/wiki/server/index.cjs.map +1 -1
  159. package/dist/wiki/server/index.js +2 -38
  160. package/dist/wiki/server/index.js.map +1 -1
  161. package/dist/workspace-setup/index.js +22 -6
  162. package/dist/workspace-setup/index.js.map +1 -1
  163. package/package.json +50 -8
  164. package/dist/collection/server/atomic.d.ts +0 -1
  165. package/dist/discovery-BbsJwVEq.js.map +0 -1
  166. package/dist/discovery-Bklck7Ck.cjs.map +0 -1
  167. package/dist/errors-7P5eMOSX.cjs +0 -30
  168. package/dist/errors-7P5eMOSX.cjs.map +0 -1
  169. package/dist/errors-eid6Mes3.js +0 -19
  170. package/dist/errors-eid6Mes3.js.map +0 -1
  171. package/dist/google/fetch.d.ts +0 -8
  172. package/dist/notifier-ChpY0XrY.js.map +0 -1
  173. package/dist/notifier-bS8IEeLA.cjs.map +0 -1
  174. package/dist/promptSafety-Bugq2kqL.js.map +0 -1
  175. package/dist/promptSafety-DbE6eZmP.cjs.map +0 -1
  176. package/dist/server-8EZggEg7.js.map +0 -1
  177. package/dist/server-BOiz_HDi.cjs.map +0 -1
@@ -59,9 +59,9 @@ export declare const SubFieldSpecZ: z.ZodDiscriminatedUnion<[z.ZodObject<{
59
59
  string: "string";
60
60
  number: "number";
61
61
  boolean: "boolean";
62
- date: "date";
63
62
  text: "text";
64
63
  email: "email";
64
+ date: "date";
65
65
  datetime: "datetime";
66
66
  markdown: "markdown";
67
67
  }>;
@@ -94,13 +94,13 @@ export declare const FieldSpecZ: z.ZodDiscriminatedUnion<[z.ZodObject<{
94
94
  string: "string";
95
95
  number: "number";
96
96
  boolean: "boolean";
97
- date: "date";
98
- file: "file";
99
97
  text: "text";
100
98
  email: "email";
99
+ date: "date";
101
100
  datetime: "datetime";
102
101
  markdown: "markdown";
103
102
  image: "image";
103
+ file: "file";
104
104
  }>;
105
105
  }, z.core.$strip>, z.ZodObject<{
106
106
  to: z.ZodString;
@@ -141,9 +141,9 @@ export declare const FieldSpecZ: z.ZodDiscriminatedUnion<[z.ZodObject<{
141
141
  string: "string";
142
142
  number: "number";
143
143
  boolean: "boolean";
144
- date: "date";
145
144
  text: "text";
146
145
  email: "email";
146
+ date: "date";
147
147
  datetime: "datetime";
148
148
  markdown: "markdown";
149
149
  }>;
@@ -308,9 +308,9 @@ export declare const ActionSpecZ: z.ZodDiscriminatedUnion<[z.ZodObject<{
308
308
  string: "string";
309
309
  number: "number";
310
310
  boolean: "boolean";
311
- date: "date";
312
311
  text: "text";
313
312
  email: "email";
313
+ date: "date";
314
314
  datetime: "datetime";
315
315
  markdown: "markdown";
316
316
  }>;
@@ -673,12 +673,15 @@ export declare const DataSourceZ: z.ZodObject<{
673
673
  * (`node:sqlite`, one JSON record per row keyed by the primaryKey).
674
674
  * `path` is workspace-relative and containment-checked exactly like
675
675
  * `dataPath`. The store factory registry (`server/store.ts`) picks the
676
- * implementation by `type` (plans/refactor-storage-virtualization.md). */
676
+ * implementation by `type` (plans/done/refactor-storage-virtualization.md). */
677
677
  export declare const StorageZ: z.ZodObject<{
678
678
  type: z.ZodLiteral<"sqlite">;
679
679
  path: z.ZodString;
680
680
  }, z.core.$strip>;
681
- export declare const CollectionSchemaZ: z.ZodPreprocess<z.ZodObject<{
681
+ /** The schema's SHAPE, before any cross-field rule runs. Named so the rules in
682
+ * `./schemaRules` can type their argument against it — they receive whatever
683
+ * this parses to, and nothing narrower. */
684
+ declare const CollectionObjectZ: z.ZodObject<{
682
685
  title: z.ZodString;
683
686
  icon: z.ZodString;
684
687
  dataPath: z.ZodOptional<z.ZodString>;
@@ -704,13 +707,489 @@ export declare const CollectionSchemaZ: z.ZodPreprocess<z.ZodObject<{
704
707
  string: "string";
705
708
  number: "number";
706
709
  boolean: "boolean";
710
+ text: "text";
711
+ email: "email";
707
712
  date: "date";
713
+ datetime: "datetime";
714
+ markdown: "markdown";
715
+ image: "image";
708
716
  file: "file";
717
+ }>;
718
+ }, z.core.$strip>, z.ZodObject<{
719
+ to: z.ZodString;
720
+ label: z.ZodString;
721
+ primary: z.ZodOptional<z.ZodBoolean>;
722
+ required: z.ZodOptional<z.ZodBoolean>;
723
+ when: z.ZodOptional<z.ZodObject<{
724
+ field: z.ZodString;
725
+ in: z.ZodArray<z.ZodString>;
726
+ }, z.core.$strip>>;
727
+ type: z.ZodLiteral<"ref">;
728
+ }, z.core.$strip>, z.ZodObject<{
729
+ currency: z.ZodOptional<z.ZodString>;
730
+ currencyField: z.ZodOptional<z.ZodString>;
731
+ label: z.ZodString;
732
+ primary: z.ZodOptional<z.ZodBoolean>;
733
+ required: z.ZodOptional<z.ZodBoolean>;
734
+ when: z.ZodOptional<z.ZodObject<{
735
+ field: z.ZodString;
736
+ in: z.ZodArray<z.ZodString>;
737
+ }, z.core.$strip>>;
738
+ type: z.ZodLiteral<"money">;
739
+ }, z.core.$strip>, z.ZodObject<{
740
+ values: z.ZodArray<z.ZodString>;
741
+ label: z.ZodString;
742
+ primary: z.ZodOptional<z.ZodBoolean>;
743
+ required: z.ZodOptional<z.ZodBoolean>;
744
+ when: z.ZodOptional<z.ZodObject<{
745
+ field: z.ZodString;
746
+ in: z.ZodArray<z.ZodString>;
747
+ }, z.core.$strip>>;
748
+ type: z.ZodLiteral<"enum">;
749
+ }, z.core.$strip>, z.ZodObject<{
750
+ of: z.ZodRecord<z.ZodString, z.ZodDiscriminatedUnion<[z.ZodObject<{
751
+ label: z.ZodString;
752
+ required: z.ZodOptional<z.ZodBoolean>;
753
+ type: z.ZodEnum<{
754
+ string: "string";
755
+ number: "number";
756
+ boolean: "boolean";
757
+ text: "text";
758
+ email: "email";
759
+ date: "date";
760
+ datetime: "datetime";
761
+ markdown: "markdown";
762
+ }>;
763
+ }, z.core.$strip>, z.ZodObject<{
764
+ to: z.ZodString;
765
+ label: z.ZodString;
766
+ required: z.ZodOptional<z.ZodBoolean>;
767
+ type: z.ZodLiteral<"ref">;
768
+ }, z.core.$strip>, z.ZodObject<{
769
+ currency: z.ZodOptional<z.ZodString>;
770
+ currencyField: z.ZodOptional<z.ZodString>;
771
+ label: z.ZodString;
772
+ required: z.ZodOptional<z.ZodBoolean>;
773
+ type: z.ZodLiteral<"money">;
774
+ }, z.core.$strip>, z.ZodObject<{
775
+ values: z.ZodArray<z.ZodString>;
776
+ label: z.ZodString;
777
+ required: z.ZodOptional<z.ZodBoolean>;
778
+ type: z.ZodLiteral<"enum">;
779
+ }, z.core.$strip>], "type">>;
780
+ label: z.ZodString;
781
+ primary: z.ZodOptional<z.ZodBoolean>;
782
+ required: z.ZodOptional<z.ZodBoolean>;
783
+ when: z.ZodOptional<z.ZodObject<{
784
+ field: z.ZodString;
785
+ in: z.ZodArray<z.ZodString>;
786
+ }, z.core.$strip>>;
787
+ type: z.ZodLiteral<"table">;
788
+ }, z.core.$strip>, z.ZodObject<{
789
+ currency: z.ZodOptional<z.ZodString>;
790
+ currencyField: z.ZodOptional<z.ZodString>;
791
+ formula: z.ZodString;
792
+ display: z.ZodOptional<z.ZodEnum<{
793
+ string: "string";
794
+ number: "number";
795
+ date: "date";
796
+ money: "money";
797
+ }>>;
798
+ label: z.ZodString;
799
+ primary: z.ZodOptional<z.ZodBoolean>;
800
+ required: z.ZodOptional<z.ZodBoolean>;
801
+ when: z.ZodOptional<z.ZodObject<{
802
+ field: z.ZodString;
803
+ in: z.ZodArray<z.ZodString>;
804
+ }, z.core.$strip>>;
805
+ type: z.ZodLiteral<"derived">;
806
+ }, z.core.$strip>, z.ZodObject<{
807
+ to: z.ZodString;
808
+ id: z.ZodOptional<z.ZodString>;
809
+ idField: z.ZodOptional<z.ZodString>;
810
+ label: z.ZodString;
811
+ primary: z.ZodOptional<z.ZodBoolean>;
812
+ required: z.ZodOptional<z.ZodBoolean>;
813
+ when: z.ZodOptional<z.ZodObject<{
814
+ field: z.ZodString;
815
+ in: z.ZodArray<z.ZodString>;
816
+ }, z.core.$strip>>;
817
+ type: z.ZodLiteral<"embed">;
818
+ }, z.core.$strip>, z.ZodObject<{
819
+ from: z.ZodString;
820
+ via: z.ZodString;
821
+ display: z.ZodArray<z.ZodString>;
822
+ filter: z.ZodOptional<z.ZodObject<{
823
+ field: z.ZodString;
824
+ in: z.ZodArray<z.ZodString>;
825
+ }, z.core.$strip>>;
826
+ label: z.ZodString;
827
+ primary: z.ZodOptional<z.ZodBoolean>;
828
+ required: z.ZodOptional<z.ZodBoolean>;
829
+ when: z.ZodOptional<z.ZodObject<{
830
+ field: z.ZodString;
831
+ in: z.ZodArray<z.ZodString>;
832
+ }, z.core.$strip>>;
833
+ type: z.ZodLiteral<"backlinks">;
834
+ }, z.core.$strip>, z.ZodObject<{
835
+ from: z.ZodString;
836
+ via: z.ZodString;
837
+ op: z.ZodEnum<{
838
+ sum: "sum";
839
+ count: "count";
840
+ }>;
841
+ column: z.ZodOptional<z.ZodString>;
842
+ filter: z.ZodOptional<z.ZodObject<{
843
+ field: z.ZodString;
844
+ in: z.ZodArray<z.ZodString>;
845
+ }, z.core.$strip>>;
846
+ label: z.ZodString;
847
+ primary: z.ZodOptional<z.ZodBoolean>;
848
+ required: z.ZodOptional<z.ZodBoolean>;
849
+ when: z.ZodOptional<z.ZodObject<{
850
+ field: z.ZodString;
851
+ in: z.ZodArray<z.ZodString>;
852
+ }, z.core.$strip>>;
853
+ type: z.ZodLiteral<"rollup">;
854
+ }, z.core.$strip>, z.ZodObject<{
855
+ field: z.ZodString;
856
+ onValue: z.ZodString;
857
+ offValue: z.ZodString;
858
+ label: z.ZodString;
859
+ primary: z.ZodOptional<z.ZodBoolean>;
860
+ required: z.ZodOptional<z.ZodBoolean>;
861
+ when: z.ZodOptional<z.ZodObject<{
862
+ field: z.ZodString;
863
+ in: z.ZodArray<z.ZodString>;
864
+ }, z.core.$strip>>;
865
+ type: z.ZodLiteral<"toggle">;
866
+ }, z.core.$strip>, z.ZodObject<{
867
+ where: z.ZodArray<z.ZodObject<{
868
+ field: z.ZodString;
869
+ op: z.ZodEnum<{
870
+ in: "in";
871
+ eq: "eq";
872
+ ne: "ne";
873
+ gt: "gt";
874
+ gte: "gte";
875
+ lt: "lt";
876
+ lte: "lte";
877
+ contains: "contains";
878
+ }>;
879
+ value: z.ZodOptional<z.ZodUnion<readonly [z.ZodString, z.ZodArray<z.ZodString>]>>;
880
+ valueFrom: z.ZodOptional<z.ZodObject<{
881
+ record: z.ZodOptional<z.ZodString>;
882
+ field: z.ZodString;
883
+ }, z.core.$strip>>;
884
+ }, z.core.$strip>>;
885
+ label: z.ZodString;
886
+ primary: z.ZodOptional<z.ZodBoolean>;
887
+ required: z.ZodOptional<z.ZodBoolean>;
888
+ when: z.ZodOptional<z.ZodObject<{
889
+ field: z.ZodString;
890
+ in: z.ZodArray<z.ZodString>;
891
+ }, z.core.$strip>>;
892
+ type: z.ZodLiteral<"flag">;
893
+ }, z.core.$strip>], "type">>;
894
+ actions: z.ZodOptional<z.ZodArray<z.ZodDiscriminatedUnion<[z.ZodObject<{
895
+ role: z.ZodString;
896
+ template: z.ZodString;
897
+ when: z.ZodOptional<z.ZodObject<{
898
+ field: z.ZodString;
899
+ in: z.ZodArray<z.ZodString>;
900
+ }, z.core.$strip>>;
901
+ id: z.ZodString;
902
+ label: z.ZodString;
903
+ icon: z.ZodOptional<z.ZodString>;
904
+ kind: z.ZodEnum<{
905
+ chat: "chat";
906
+ agent: "agent";
907
+ }>;
908
+ }, z.core.$strip>, z.ZodObject<{
909
+ require: z.ZodOptional<z.ZodObject<{
910
+ field: z.ZodString;
911
+ in: z.ZodArray<z.ZodString>;
912
+ }, z.core.$strip>>;
913
+ params: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodDiscriminatedUnion<[z.ZodObject<{
914
+ label: z.ZodString;
915
+ required: z.ZodOptional<z.ZodBoolean>;
916
+ type: z.ZodEnum<{
917
+ string: "string";
918
+ number: "number";
919
+ boolean: "boolean";
920
+ text: "text";
921
+ email: "email";
922
+ date: "date";
923
+ datetime: "datetime";
924
+ markdown: "markdown";
925
+ }>;
926
+ }, z.core.$strip>, z.ZodObject<{
927
+ to: z.ZodString;
928
+ label: z.ZodString;
929
+ required: z.ZodOptional<z.ZodBoolean>;
930
+ type: z.ZodLiteral<"ref">;
931
+ }, z.core.$strip>, z.ZodObject<{
932
+ currency: z.ZodOptional<z.ZodString>;
933
+ currencyField: z.ZodOptional<z.ZodString>;
934
+ label: z.ZodString;
935
+ required: z.ZodOptional<z.ZodBoolean>;
936
+ type: z.ZodLiteral<"money">;
937
+ }, z.core.$strip>, z.ZodObject<{
938
+ values: z.ZodArray<z.ZodString>;
939
+ label: z.ZodString;
940
+ required: z.ZodOptional<z.ZodBoolean>;
941
+ type: z.ZodLiteral<"enum">;
942
+ }, z.core.$strip>], "type">>>;
943
+ set: z.ZodRecord<z.ZodString, z.ZodUnion<readonly [z.ZodString, z.ZodNumber, z.ZodBoolean]>>;
944
+ id: z.ZodString;
945
+ label: z.ZodString;
946
+ icon: z.ZodOptional<z.ZodString>;
947
+ kind: z.ZodLiteral<"mutate">;
948
+ }, z.core.$strip>], "kind">>>;
949
+ collectionActions: z.ZodOptional<z.ZodArray<z.ZodDiscriminatedUnion<[z.ZodObject<{
950
+ role: z.ZodString;
951
+ template: z.ZodString;
952
+ when: z.ZodOptional<z.ZodObject<{
953
+ field: z.ZodString;
954
+ in: z.ZodArray<z.ZodString>;
955
+ }, z.core.$strip>>;
956
+ id: z.ZodString;
957
+ label: z.ZodString;
958
+ icon: z.ZodOptional<z.ZodString>;
959
+ kind: z.ZodEnum<{
960
+ chat: "chat";
961
+ agent: "agent";
962
+ }>;
963
+ }, z.core.$strip>, z.ZodObject<{
964
+ require: z.ZodOptional<z.ZodObject<{
965
+ field: z.ZodString;
966
+ in: z.ZodArray<z.ZodString>;
967
+ }, z.core.$strip>>;
968
+ params: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodDiscriminatedUnion<[z.ZodObject<{
969
+ label: z.ZodString;
970
+ required: z.ZodOptional<z.ZodBoolean>;
971
+ type: z.ZodEnum<{
972
+ string: "string";
973
+ number: "number";
974
+ boolean: "boolean";
975
+ text: "text";
976
+ email: "email";
977
+ date: "date";
978
+ datetime: "datetime";
979
+ markdown: "markdown";
980
+ }>;
981
+ }, z.core.$strip>, z.ZodObject<{
982
+ to: z.ZodString;
983
+ label: z.ZodString;
984
+ required: z.ZodOptional<z.ZodBoolean>;
985
+ type: z.ZodLiteral<"ref">;
986
+ }, z.core.$strip>, z.ZodObject<{
987
+ currency: z.ZodOptional<z.ZodString>;
988
+ currencyField: z.ZodOptional<z.ZodString>;
989
+ label: z.ZodString;
990
+ required: z.ZodOptional<z.ZodBoolean>;
991
+ type: z.ZodLiteral<"money">;
992
+ }, z.core.$strip>, z.ZodObject<{
993
+ values: z.ZodArray<z.ZodString>;
994
+ label: z.ZodString;
995
+ required: z.ZodOptional<z.ZodBoolean>;
996
+ type: z.ZodLiteral<"enum">;
997
+ }, z.core.$strip>], "type">>>;
998
+ set: z.ZodRecord<z.ZodString, z.ZodUnion<readonly [z.ZodString, z.ZodNumber, z.ZodBoolean]>>;
999
+ id: z.ZodString;
1000
+ label: z.ZodString;
1001
+ icon: z.ZodOptional<z.ZodString>;
1002
+ kind: z.ZodLiteral<"mutate">;
1003
+ }, z.core.$strip>], "kind">>>;
1004
+ completionField: z.ZodOptional<z.ZodString>;
1005
+ completionDoneValues: z.ZodOptional<z.ZodArray<z.ZodString>>;
1006
+ displayField: z.ZodOptional<z.ZodString>;
1007
+ triggerField: z.ZodOptional<z.ZodString>;
1008
+ triggerLeadDays: z.ZodOptional<z.ZodNumber>;
1009
+ spawn: z.ZodOptional<z.ZodObject<{
1010
+ when: z.ZodOptional<z.ZodObject<{
1011
+ field: z.ZodString;
1012
+ in: z.ZodArray<z.ZodString>;
1013
+ }, z.core.$strip>>;
1014
+ every: z.ZodUnion<readonly [z.ZodObject<{
1015
+ unit: z.ZodEnum<{
1016
+ day: "day";
1017
+ week: "week";
1018
+ month: "month";
1019
+ year: "year";
1020
+ }>;
1021
+ interval: z.ZodNumber;
1022
+ dayOfMonth: z.ZodOptional<z.ZodUnion<readonly [z.ZodNumber, z.ZodLiteral<"last">]>>;
1023
+ }, z.core.$strict>, z.ZodObject<{
1024
+ fromField: z.ZodString;
1025
+ map: z.ZodRecord<z.ZodString, z.ZodObject<{
1026
+ unit: z.ZodEnum<{
1027
+ day: "day";
1028
+ week: "week";
1029
+ month: "month";
1030
+ year: "year";
1031
+ }>;
1032
+ interval: z.ZodNumber;
1033
+ dayOfMonth: z.ZodOptional<z.ZodUnion<readonly [z.ZodNumber, z.ZodLiteral<"last">]>>;
1034
+ }, z.core.$strict>>;
1035
+ }, z.core.$strict>]>;
1036
+ carry: z.ZodOptional<z.ZodArray<z.ZodString>>;
1037
+ set: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
1038
+ }, z.core.$strip>>;
1039
+ calendarField: z.ZodOptional<z.ZodString>;
1040
+ calendarEndField: z.ZodOptional<z.ZodString>;
1041
+ calendarTimeField: z.ZodOptional<z.ZodString>;
1042
+ kanbanField: z.ZodOptional<z.ZodString>;
1043
+ views: z.ZodOptional<z.ZodArray<z.ZodObject<{
1044
+ id: z.ZodString;
1045
+ label: z.ZodString;
1046
+ icon: z.ZodOptional<z.ZodString>;
1047
+ target: z.ZodOptional<z.ZodEnum<{
1048
+ desktop: "desktop";
1049
+ mobile: "mobile";
1050
+ }>>;
1051
+ file: z.ZodString;
1052
+ i18n: z.ZodOptional<z.ZodString>;
1053
+ capabilities: z.ZodOptional<z.ZodArray<z.ZodEnum<{
1054
+ read: "read";
1055
+ write: "write";
1056
+ }>>>;
1057
+ editableFields: z.ZodOptional<z.ZodArray<z.ZodString>>;
1058
+ allowDelete: z.ZodOptional<z.ZodBoolean>;
1059
+ imageFields: z.ZodOptional<z.ZodArray<z.ZodString>>;
1060
+ imageMaxEdge: z.ZodOptional<z.ZodNumber>;
1061
+ }, z.core.$strip>>>;
1062
+ notifyWhen: z.ZodOptional<z.ZodObject<{
1063
+ field: z.ZodString;
1064
+ in: z.ZodArray<z.ZodString>;
1065
+ }, z.core.$strip>>;
1066
+ ingest: z.ZodOptional<z.ZodDiscriminatedUnion<[z.ZodObject<{
1067
+ kind: z.ZodEnum<{
1068
+ rss: "rss";
1069
+ atom: "atom";
1070
+ "http-json": "http-json";
1071
+ }>;
1072
+ url: z.ZodString;
1073
+ schedule: z.ZodEnum<{
1074
+ hourly: "hourly";
1075
+ daily: "daily";
1076
+ weekly: "weekly";
1077
+ "on-demand": "on-demand";
1078
+ }>;
1079
+ atHour: z.ZodOptional<z.ZodNumber>;
1080
+ itemsAt: z.ZodOptional<z.ZodString>;
1081
+ map: z.ZodRecord<z.ZodString, z.ZodString>;
1082
+ idFrom: z.ZodOptional<z.ZodString>;
1083
+ maxItems: z.ZodOptional<z.ZodNumber>;
1084
+ }, z.core.$strip>, z.ZodObject<{
1085
+ kind: z.ZodLiteral<"agent">;
1086
+ schedule: z.ZodEnum<{
1087
+ hourly: "hourly";
1088
+ daily: "daily";
1089
+ weekly: "weekly";
1090
+ "on-demand": "on-demand";
1091
+ }>;
1092
+ atHour: z.ZodOptional<z.ZodNumber>;
1093
+ role: z.ZodString;
1094
+ template: z.ZodString;
1095
+ }, z.core.$strip>], "kind">>;
1096
+ googleCalendar: z.ZodOptional<z.ZodObject<{
1097
+ calendarId: z.ZodOptional<z.ZodString>;
1098
+ map: z.ZodRecord<z.ZodString, z.ZodEnum<{
1099
+ summary: "summary";
1100
+ start: "start";
1101
+ end: "end";
1102
+ htmlLink: "htmlLink";
1103
+ colorId: "colorId";
1104
+ status: "status";
1105
+ }>>;
1106
+ }, z.core.$strip>>;
1107
+ dynamicIcon: z.ZodOptional<z.ZodObject<{
1108
+ source: z.ZodObject<{
1109
+ collection: z.ZodString;
1110
+ from: z.ZodOptional<z.ZodEnum<{
1111
+ when: "when";
1112
+ latest: "latest";
1113
+ first: "first";
1114
+ }>>;
1115
+ orderBy: z.ZodOptional<z.ZodString>;
1116
+ where: z.ZodOptional<z.ZodArray<z.ZodObject<{
1117
+ field: z.ZodString;
1118
+ op: z.ZodEnum<{
1119
+ in: "in";
1120
+ eq: "eq";
1121
+ ne: "ne";
1122
+ gt: "gt";
1123
+ gte: "gte";
1124
+ lt: "lt";
1125
+ lte: "lte";
1126
+ contains: "contains";
1127
+ }>;
1128
+ value: z.ZodOptional<z.ZodUnion<readonly [z.ZodString, z.ZodArray<z.ZodString>]>>;
1129
+ valueFrom: z.ZodOptional<z.ZodObject<{
1130
+ record: z.ZodOptional<z.ZodString>;
1131
+ field: z.ZodString;
1132
+ }, z.core.$strip>>;
1133
+ }, z.core.$strip>>>;
1134
+ }, z.core.$strip>;
1135
+ rules: z.ZodArray<z.ZodObject<{
1136
+ where: z.ZodArray<z.ZodObject<{
1137
+ field: z.ZodString;
1138
+ op: z.ZodEnum<{
1139
+ in: "in";
1140
+ eq: "eq";
1141
+ ne: "ne";
1142
+ gt: "gt";
1143
+ gte: "gte";
1144
+ lt: "lt";
1145
+ lte: "lte";
1146
+ contains: "contains";
1147
+ }>;
1148
+ value: z.ZodOptional<z.ZodUnion<readonly [z.ZodString, z.ZodArray<z.ZodString>]>>;
1149
+ valueFrom: z.ZodOptional<z.ZodObject<{
1150
+ record: z.ZodOptional<z.ZodString>;
1151
+ field: z.ZodString;
1152
+ }, z.core.$strip>>;
1153
+ }, z.core.$strip>>;
1154
+ icon: z.ZodString;
1155
+ }, z.core.$strip>>;
1156
+ fallback: z.ZodOptional<z.ZodString>;
1157
+ }, z.core.$strip>>;
1158
+ }, z.core.$strip>;
1159
+ export type CollectionSchemaInput = z.infer<typeof CollectionObjectZ>;
1160
+ export declare const CollectionSchemaZ: z.ZodPreprocess<z.ZodObject<{
1161
+ title: z.ZodString;
1162
+ icon: z.ZodString;
1163
+ dataPath: z.ZodOptional<z.ZodString>;
1164
+ dataSource: z.ZodOptional<z.ZodObject<{
1165
+ type: z.ZodLiteral<"csv">;
1166
+ path: z.ZodString;
1167
+ }, z.core.$strip>>;
1168
+ storage: z.ZodOptional<z.ZodObject<{
1169
+ type: z.ZodLiteral<"sqlite">;
1170
+ path: z.ZodString;
1171
+ }, z.core.$strip>>;
1172
+ primaryKey: z.ZodString;
1173
+ singleton: z.ZodOptional<z.ZodString>;
1174
+ fields: z.ZodRecord<z.ZodString, z.ZodDiscriminatedUnion<[z.ZodObject<{
1175
+ label: z.ZodString;
1176
+ primary: z.ZodOptional<z.ZodBoolean>;
1177
+ required: z.ZodOptional<z.ZodBoolean>;
1178
+ when: z.ZodOptional<z.ZodObject<{
1179
+ field: z.ZodString;
1180
+ in: z.ZodArray<z.ZodString>;
1181
+ }, z.core.$strip>>;
1182
+ type: z.ZodEnum<{
1183
+ string: "string";
1184
+ number: "number";
1185
+ boolean: "boolean";
709
1186
  text: "text";
710
1187
  email: "email";
1188
+ date: "date";
711
1189
  datetime: "datetime";
712
1190
  markdown: "markdown";
713
1191
  image: "image";
1192
+ file: "file";
714
1193
  }>;
715
1194
  }, z.core.$strip>, z.ZodObject<{
716
1195
  to: z.ZodString;
@@ -751,9 +1230,9 @@ export declare const CollectionSchemaZ: z.ZodPreprocess<z.ZodObject<{
751
1230
  string: "string";
752
1231
  number: "number";
753
1232
  boolean: "boolean";
754
- date: "date";
755
1233
  text: "text";
756
1234
  email: "email";
1235
+ date: "date";
757
1236
  datetime: "datetime";
758
1237
  markdown: "markdown";
759
1238
  }>;
@@ -914,9 +1393,9 @@ export declare const CollectionSchemaZ: z.ZodPreprocess<z.ZodObject<{
914
1393
  string: "string";
915
1394
  number: "number";
916
1395
  boolean: "boolean";
917
- date: "date";
918
1396
  text: "text";
919
1397
  email: "email";
1398
+ date: "date";
920
1399
  datetime: "datetime";
921
1400
  markdown: "markdown";
922
1401
  }>;
@@ -969,9 +1448,9 @@ export declare const CollectionSchemaZ: z.ZodPreprocess<z.ZodObject<{
969
1448
  string: "string";
970
1449
  number: "number";
971
1450
  boolean: "boolean";
972
- date: "date";
973
1451
  text: "text";
974
1452
  email: "email";
1453
+ date: "date";
975
1454
  datetime: "datetime";
976
1455
  markdown: "markdown";
977
1456
  }>;
@@ -1153,3 +1632,4 @@ export declare const CollectionSchemaZ: z.ZodPreprocess<z.ZodObject<{
1153
1632
  fallback: z.ZodOptional<z.ZodString>;
1154
1633
  }, z.core.$strip>>;
1155
1634
  }, z.core.$strip>>;
1635
+ export {};
@@ -0,0 +1,21 @@
1
+ import { SortValue } from './sortItems';
2
+ import { CollectionItem, CollectionFieldSpec as FieldSpec } from './schema';
3
+ /** Resolve a `ref` cell to its human display label (target slug + item id). */
4
+ export type RefDisplayResolver = (targetSlug: string, itemSlug: string) => string;
5
+ /** The row readers the view supplies for the field kinds that can't sort off
6
+ * the raw cell value. All come from the rendering composable. */
7
+ export interface SortValueDeps {
8
+ toggleChecked: (item: CollectionItem, field: FieldSpec) => boolean;
9
+ flagValueOf: (key: string, item: CollectionItem) => boolean;
10
+ evaluateDerived: (field: FieldSpec, key: string, item: CollectionItem) => number | null;
11
+ deriveRecord: (item: CollectionItem) => CollectionItem;
12
+ resolveRefDisplay: RefDisplayResolver;
13
+ }
14
+ /** Comparable value for scalar fields that key off the raw cell value. */
15
+ export declare function scalarSortValue(field: FieldSpec, raw: unknown, resolveRefDisplay: RefDisplayResolver): SortValue;
16
+ /** Derived rows sort by their display type: money/number → numeric,
17
+ * date → epoch, anything else → the enriched value as a string. */
18
+ export declare function derivedSortValue(field: FieldSpec, key: string, item: CollectionItem, deps: Pick<SortValueDeps, "evaluateDerived" | "deriveRecord">): SortValue;
19
+ /** Comparable value for one row under the active field. Toggle, flag, and
20
+ * derived need the whole record; every other type keys off the raw cell. */
21
+ export declare function sortValueOf(field: FieldSpec, key: string, item: CollectionItem, deps: SortValueDeps): SortValue;
@@ -0,0 +1,12 @@
1
+ import { CollectionItem } from './schema';
2
+ /** Case-insensitive substring match across an item's scalar fields.
3
+ * Object/array-valued fields (table rows, nested records) have no text
4
+ * form (`fieldTextOrNull` → `null`) and are skipped — they don't render as
5
+ * searchable text in the list table.
6
+ *
7
+ * `query` is matched against each cell's lower-cased text but is NOT
8
+ * lower-cased here: callers pass an already-normalised (trimmed +
9
+ * lower-cased) query, so an upper-case `query` intentionally matches
10
+ * nothing. Keeping the normalisation at the call site avoids re-lowering
11
+ * the same query once per row. */
12
+ export declare function itemMatchesQuery(item: CollectionItem, query: string): boolean;