contentbase 0.4.0 → 0.4.2

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 (323) hide show
  1. package/dist/adapters/node-fs.d.ts +17 -0
  2. package/dist/adapters/node-fs.d.ts.map +1 -0
  3. package/dist/adapters/node-fs.js +71 -0
  4. package/dist/adapters/node-fs.js.map +1 -0
  5. package/dist/ast-query.d.ts +44 -0
  6. package/dist/ast-query.d.ts.map +1 -0
  7. package/dist/ast-query.js +95 -0
  8. package/dist/ast-query.js.map +1 -0
  9. package/dist/base-model.d.ts +8 -0
  10. package/dist/base-model.d.ts.map +1 -0
  11. package/dist/base-model.js +12 -0
  12. package/dist/base-model.js.map +1 -0
  13. package/dist/cli/commands/action.d.ts +2 -0
  14. package/dist/cli/commands/action.d.ts.map +1 -0
  15. package/dist/cli/commands/action.js +73 -0
  16. package/dist/cli/commands/action.js.map +1 -0
  17. package/dist/cli/commands/api/endpoints/actions.d.ts +13 -0
  18. package/dist/cli/commands/api/endpoints/actions.d.ts.map +1 -0
  19. package/dist/cli/commands/api/endpoints/actions.js +28 -0
  20. package/dist/cli/commands/api/endpoints/actions.js.map +1 -0
  21. package/dist/cli/commands/api/endpoints/doc.d.ts +5 -0
  22. package/dist/cli/commands/api/endpoints/doc.d.ts.map +1 -0
  23. package/dist/cli/commands/api/endpoints/doc.js +186 -0
  24. package/dist/cli/commands/api/endpoints/doc.js.map +1 -0
  25. package/dist/cli/commands/api/endpoints/docs-index.d.ts +8 -0
  26. package/dist/cli/commands/api/endpoints/docs-index.d.ts.map +1 -0
  27. package/dist/cli/commands/api/endpoints/docs-index.js +23 -0
  28. package/dist/cli/commands/api/endpoints/docs-index.js.map +1 -0
  29. package/dist/cli/commands/api/endpoints/document.d.ts +47 -0
  30. package/dist/cli/commands/api/endpoints/document.d.ts.map +1 -0
  31. package/dist/cli/commands/api/endpoints/document.js +146 -0
  32. package/dist/cli/commands/api/endpoints/document.js.map +1 -0
  33. package/dist/cli/commands/api/endpoints/documents.d.ts +35 -0
  34. package/dist/cli/commands/api/endpoints/documents.d.ts.map +1 -0
  35. package/dist/cli/commands/api/endpoints/documents.js +56 -0
  36. package/dist/cli/commands/api/endpoints/documents.js.map +1 -0
  37. package/dist/cli/commands/api/endpoints/index.d.ts +22 -0
  38. package/dist/cli/commands/api/endpoints/index.d.ts.map +1 -0
  39. package/dist/cli/commands/api/endpoints/index.js +38 -0
  40. package/dist/cli/commands/api/endpoints/index.js.map +1 -0
  41. package/dist/cli/commands/api/endpoints/inspect.d.ts +10 -0
  42. package/dist/cli/commands/api/endpoints/inspect.d.ts.map +1 -0
  43. package/dist/cli/commands/api/endpoints/inspect.js +15 -0
  44. package/dist/cli/commands/api/endpoints/inspect.js.map +1 -0
  45. package/dist/cli/commands/api/endpoints/models.d.ts +5 -0
  46. package/dist/cli/commands/api/endpoints/models.d.ts.map +1 -0
  47. package/dist/cli/commands/api/endpoints/models.js +9 -0
  48. package/dist/cli/commands/api/endpoints/models.js.map +1 -0
  49. package/dist/cli/commands/api/endpoints/query.d.ts +40 -0
  50. package/dist/cli/commands/api/endpoints/query.d.ts.map +1 -0
  51. package/dist/cli/commands/api/endpoints/query.js +106 -0
  52. package/dist/cli/commands/api/endpoints/query.js.map +1 -0
  53. package/dist/cli/commands/api/endpoints/root.d.ts +5 -0
  54. package/dist/cli/commands/api/endpoints/root.d.ts.map +1 -0
  55. package/dist/cli/commands/api/endpoints/root.js +7 -0
  56. package/dist/cli/commands/api/endpoints/root.js.map +1 -0
  57. package/dist/cli/commands/api/endpoints/search-reindex.d.ts +10 -0
  58. package/dist/cli/commands/api/endpoints/search-reindex.d.ts.map +1 -0
  59. package/dist/cli/commands/api/endpoints/search-reindex.js +38 -0
  60. package/dist/cli/commands/api/endpoints/search-reindex.js.map +1 -0
  61. package/dist/cli/commands/api/endpoints/search-status.d.ts +7 -0
  62. package/dist/cli/commands/api/endpoints/search-status.d.ts.map +1 -0
  63. package/dist/cli/commands/api/endpoints/search-status.js +33 -0
  64. package/dist/cli/commands/api/endpoints/search-status.js.map +1 -0
  65. package/dist/cli/commands/api/endpoints/search.d.ts +24 -0
  66. package/dist/cli/commands/api/endpoints/search.d.ts.map +1 -0
  67. package/dist/cli/commands/api/endpoints/search.js +61 -0
  68. package/dist/cli/commands/api/endpoints/search.js.map +1 -0
  69. package/dist/cli/commands/api/endpoints/semantic-search.d.ts +28 -0
  70. package/dist/cli/commands/api/endpoints/semantic-search.d.ts.map +1 -0
  71. package/dist/cli/commands/api/endpoints/semantic-search.js +76 -0
  72. package/dist/cli/commands/api/endpoints/semantic-search.js.map +1 -0
  73. package/dist/cli/commands/api/endpoints/text-search.d.ts +17 -0
  74. package/dist/cli/commands/api/endpoints/text-search.d.ts.map +1 -0
  75. package/dist/cli/commands/api/endpoints/text-search.js +55 -0
  76. package/dist/cli/commands/api/endpoints/text-search.js.map +1 -0
  77. package/dist/cli/commands/api/endpoints/validate.d.ts +12 -0
  78. package/dist/cli/commands/api/endpoints/validate.d.ts.map +1 -0
  79. package/dist/cli/commands/api/endpoints/validate.js +27 -0
  80. package/dist/cli/commands/api/endpoints/validate.js.map +1 -0
  81. package/dist/cli/commands/api/helpers.d.ts +8 -0
  82. package/dist/cli/commands/api/helpers.d.ts.map +1 -0
  83. package/dist/cli/commands/api/helpers.js +89 -0
  84. package/dist/cli/commands/api/helpers.js.map +1 -0
  85. package/dist/cli/commands/console.d.ts +2 -0
  86. package/dist/cli/commands/console.d.ts.map +1 -0
  87. package/dist/cli/commands/console.js +117 -0
  88. package/dist/cli/commands/console.js.map +1 -0
  89. package/dist/cli/commands/create.d.ts +2 -0
  90. package/dist/cli/commands/create.d.ts.map +1 -0
  91. package/dist/cli/commands/create.js +185 -0
  92. package/dist/cli/commands/create.js.map +1 -0
  93. package/dist/cli/commands/embed.d.ts +2 -0
  94. package/dist/cli/commands/embed.d.ts.map +1 -0
  95. package/dist/cli/commands/embed.js +231 -0
  96. package/dist/cli/commands/embed.js.map +1 -0
  97. package/dist/cli/commands/export.d.ts +2 -0
  98. package/dist/cli/commands/export.d.ts.map +1 -0
  99. package/dist/cli/commands/export.js +55 -0
  100. package/dist/cli/commands/export.js.map +1 -0
  101. package/dist/cli/commands/extract.d.ts +2 -0
  102. package/dist/cli/commands/extract.d.ts.map +1 -0
  103. package/dist/cli/commands/extract.js +149 -0
  104. package/dist/cli/commands/extract.js.map +1 -0
  105. package/dist/cli/commands/help.d.ts +2 -0
  106. package/dist/cli/commands/help.d.ts.map +1 -0
  107. package/dist/cli/commands/help.js +58 -0
  108. package/dist/cli/commands/help.js.map +1 -0
  109. package/dist/cli/commands/index.d.ts +18 -0
  110. package/dist/cli/commands/index.d.ts.map +1 -0
  111. package/dist/cli/commands/index.js +19 -0
  112. package/dist/cli/commands/index.js.map +1 -0
  113. package/dist/cli/commands/init.d.ts +2 -0
  114. package/dist/cli/commands/init.d.ts.map +1 -0
  115. package/dist/cli/commands/init.js +82 -0
  116. package/dist/cli/commands/init.js.map +1 -0
  117. package/dist/cli/commands/inspect.d.ts +2 -0
  118. package/dist/cli/commands/inspect.d.ts.map +1 -0
  119. package/dist/cli/commands/inspect.js +53 -0
  120. package/dist/cli/commands/inspect.js.map +1 -0
  121. package/dist/cli/commands/mcp.d.ts +2 -0
  122. package/dist/cli/commands/mcp.d.ts.map +1 -0
  123. package/dist/cli/commands/mcp.js +92 -0
  124. package/dist/cli/commands/mcp.js.map +1 -0
  125. package/dist/cli/commands/search.d.ts +2 -0
  126. package/dist/cli/commands/search.d.ts.map +1 -0
  127. package/dist/cli/commands/search.js +212 -0
  128. package/dist/cli/commands/search.js.map +1 -0
  129. package/dist/cli/commands/serve.d.ts +2 -0
  130. package/dist/cli/commands/serve.d.ts.map +1 -0
  131. package/dist/cli/commands/serve.js +298 -0
  132. package/dist/cli/commands/serve.js.map +1 -0
  133. package/dist/cli/commands/summary.d.ts +2 -0
  134. package/dist/cli/commands/summary.d.ts.map +1 -0
  135. package/dist/cli/commands/summary.js +58 -0
  136. package/dist/cli/commands/summary.js.map +1 -0
  137. package/dist/cli/commands/teach.d.ts +2 -0
  138. package/dist/cli/commands/teach.d.ts.map +1 -0
  139. package/dist/cli/commands/teach.js +80 -0
  140. package/dist/cli/commands/teach.js.map +1 -0
  141. package/dist/cli/commands/text-search.d.ts +2 -0
  142. package/dist/cli/commands/text-search.d.ts.map +1 -0
  143. package/dist/cli/commands/text-search.js +125 -0
  144. package/dist/cli/commands/text-search.js.map +1 -0
  145. package/dist/cli/commands/update.d.ts +2 -0
  146. package/dist/cli/commands/update.d.ts.map +1 -0
  147. package/dist/cli/commands/update.js +167 -0
  148. package/dist/cli/commands/update.js.map +1 -0
  149. package/dist/cli/commands/validate.d.ts +2 -0
  150. package/dist/cli/commands/validate.d.ts.map +1 -0
  151. package/dist/cli/commands/validate.js +129 -0
  152. package/dist/cli/commands/validate.js.map +1 -0
  153. package/dist/cli/index.d.ts +3 -0
  154. package/dist/cli/index.d.ts.map +1 -0
  155. package/dist/cli/index.js +84 -0
  156. package/dist/cli/index.js.map +1 -0
  157. package/dist/cli/load-collection.d.ts +7 -0
  158. package/dist/cli/load-collection.d.ts.map +1 -0
  159. package/dist/cli/load-collection.js +201 -0
  160. package/dist/cli/load-collection.js.map +1 -0
  161. package/dist/cli/registry.d.ts +17 -0
  162. package/dist/cli/registry.d.ts.map +1 -0
  163. package/dist/cli/registry.js +16 -0
  164. package/dist/cli/registry.js.map +1 -0
  165. package/dist/cnotes +0 -0
  166. package/dist/collection.d.ts +145 -0
  167. package/dist/collection.d.ts.map +1 -0
  168. package/dist/collection.js +684 -0
  169. package/dist/collection.js.map +1 -0
  170. package/dist/define-model.d.ts +45 -0
  171. package/dist/define-model.d.ts.map +1 -0
  172. package/dist/define-model.js +106 -0
  173. package/dist/define-model.js.map +1 -0
  174. package/dist/document.d.ts +123 -0
  175. package/dist/document.d.ts.map +1 -0
  176. package/dist/document.js +434 -0
  177. package/dist/document.js.map +1 -0
  178. package/dist/extract-sections.d.ts +46 -0
  179. package/dist/extract-sections.d.ts.map +1 -0
  180. package/dist/extract-sections.js +153 -0
  181. package/dist/extract-sections.js.map +1 -0
  182. package/dist/index.d.ts +28 -0
  183. package/dist/index.d.ts.map +1 -0
  184. package/dist/index.js +31 -0
  185. package/dist/index.js.map +1 -0
  186. package/dist/mcp/helpers.d.ts +14 -0
  187. package/dist/mcp/helpers.d.ts.map +1 -0
  188. package/dist/mcp/helpers.js +7 -0
  189. package/dist/mcp/helpers.js.map +1 -0
  190. package/dist/mcp/model-info.d.ts +2 -0
  191. package/dist/mcp/model-info.d.ts.map +1 -0
  192. package/dist/mcp/model-info.js +94 -0
  193. package/dist/mcp/model-info.js.map +1 -0
  194. package/dist/mcp/prompts.d.ts +2 -0
  195. package/dist/mcp/prompts.d.ts.map +1 -0
  196. package/dist/mcp/prompts.js +180 -0
  197. package/dist/mcp/prompts.js.map +1 -0
  198. package/dist/mcp/readme.d.ts +2 -0
  199. package/dist/mcp/readme.d.ts.map +1 -0
  200. package/dist/mcp/readme.js +71 -0
  201. package/dist/mcp/readme.js.map +1 -0
  202. package/dist/mcp/resources.d.ts +2 -0
  203. package/dist/mcp/resources.d.ts.map +1 -0
  204. package/dist/mcp/resources.js +85 -0
  205. package/dist/mcp/resources.js.map +1 -0
  206. package/dist/mcp/server.d.ts +18 -0
  207. package/dist/mcp/server.d.ts.map +1 -0
  208. package/dist/mcp/server.js +83 -0
  209. package/dist/mcp/server.js.map +1 -0
  210. package/dist/mcp/tools/mutation.d.ts +2 -0
  211. package/dist/mcp/tools/mutation.d.ts.map +1 -0
  212. package/dist/mcp/tools/mutation.js +155 -0
  213. package/dist/mcp/tools/mutation.js.map +1 -0
  214. package/dist/mcp/tools/query.d.ts +2 -0
  215. package/dist/mcp/tools/query.d.ts.map +1 -0
  216. package/dist/mcp/tools/query.js +130 -0
  217. package/dist/mcp/tools/query.js.map +1 -0
  218. package/dist/mcp/tools/search.d.ts +2 -0
  219. package/dist/mcp/tools/search.d.ts.map +1 -0
  220. package/dist/mcp/tools/search.js +168 -0
  221. package/dist/mcp/tools/search.js.map +1 -0
  222. package/dist/model-instance.d.ts +11 -0
  223. package/dist/model-instance.d.ts.map +1 -0
  224. package/dist/model-instance.js +208 -0
  225. package/dist/model-instance.js.map +1 -0
  226. package/dist/node-shortcuts.d.ts +25 -0
  227. package/dist/node-shortcuts.d.ts.map +1 -0
  228. package/dist/node-shortcuts.js +67 -0
  229. package/dist/node-shortcuts.js.map +1 -0
  230. package/dist/parse.d.ts +45 -0
  231. package/dist/parse.d.ts.map +1 -0
  232. package/dist/parse.js +98 -0
  233. package/dist/parse.js.map +1 -0
  234. package/dist/query/collection-query.d.ts +39 -0
  235. package/dist/query/collection-query.d.ts.map +1 -0
  236. package/dist/query/collection-query.js +184 -0
  237. package/dist/query/collection-query.js.map +1 -0
  238. package/dist/query/index.d.ts +8 -0
  239. package/dist/query/index.d.ts.map +1 -0
  240. package/dist/query/index.js +5 -0
  241. package/dist/query/index.js.map +1 -0
  242. package/dist/query/operators.d.ts +3 -0
  243. package/dist/query/operators.d.ts.map +1 -0
  244. package/dist/query/operators.js +18 -0
  245. package/dist/query/operators.js.map +1 -0
  246. package/dist/query/query-builder.d.ts +34 -0
  247. package/dist/query/query-builder.d.ts.map +1 -0
  248. package/dist/query/query-builder.js +84 -0
  249. package/dist/query/query-builder.js.map +1 -0
  250. package/dist/query/query-dsl.d.ts +36 -0
  251. package/dist/query/query-dsl.d.ts.map +1 -0
  252. package/dist/query/query-dsl.js +195 -0
  253. package/dist/query/query-dsl.js.map +1 -0
  254. package/dist/relationships/belongs-to.d.ts +9 -0
  255. package/dist/relationships/belongs-to.d.ts.map +1 -0
  256. package/dist/relationships/belongs-to.js +34 -0
  257. package/dist/relationships/belongs-to.js.map +1 -0
  258. package/dist/relationships/has-many.d.ts +23 -0
  259. package/dist/relationships/has-many.d.ts.map +1 -0
  260. package/dist/relationships/has-many.js +136 -0
  261. package/dist/relationships/has-many.js.map +1 -0
  262. package/dist/relationships/index.d.ts +26 -0
  263. package/dist/relationships/index.d.ts.map +1 -0
  264. package/dist/relationships/index.js +32 -0
  265. package/dist/relationships/index.js.map +1 -0
  266. package/dist/relationships/types.d.ts +2 -0
  267. package/dist/relationships/types.d.ts.map +1 -0
  268. package/dist/relationships/types.js +2 -0
  269. package/dist/relationships/types.js.map +1 -0
  270. package/dist/search/document-inputs.d.ts +30 -0
  271. package/dist/search/document-inputs.d.ts.map +1 -0
  272. package/dist/search/document-inputs.js +52 -0
  273. package/dist/search/document-inputs.js.map +1 -0
  274. package/dist/search/luca-semantic-search.d.ts +27 -0
  275. package/dist/search/luca-semantic-search.d.ts.map +1 -0
  276. package/dist/search/luca-semantic-search.js +56 -0
  277. package/dist/search/luca-semantic-search.js.map +1 -0
  278. package/dist/section.d.ts +21 -0
  279. package/dist/section.d.ts.map +1 -0
  280. package/dist/section.js +21 -0
  281. package/dist/section.js.map +1 -0
  282. package/dist/types.d.ts +185 -0
  283. package/dist/types.d.ts.map +1 -0
  284. package/dist/types.js +2 -0
  285. package/dist/types.js.map +1 -0
  286. package/dist/utils/index.d.ts +9 -0
  287. package/dist/utils/index.d.ts.map +1 -0
  288. package/dist/utils/index.js +8 -0
  289. package/dist/utils/index.js.map +1 -0
  290. package/dist/utils/inflect.d.ts +6 -0
  291. package/dist/utils/inflect.d.ts.map +1 -0
  292. package/dist/utils/inflect.js +75 -0
  293. package/dist/utils/inflect.js.map +1 -0
  294. package/dist/utils/match-pattern.d.ts +25 -0
  295. package/dist/utils/match-pattern.d.ts.map +1 -0
  296. package/dist/utils/match-pattern.js +52 -0
  297. package/dist/utils/match-pattern.js.map +1 -0
  298. package/dist/utils/normalize-headings.d.ts +8 -0
  299. package/dist/utils/normalize-headings.d.ts.map +1 -0
  300. package/dist/utils/normalize-headings.js +19 -0
  301. package/dist/utils/normalize-headings.js.map +1 -0
  302. package/dist/utils/parse-table.d.ts +7 -0
  303. package/dist/utils/parse-table.d.ts.map +1 -0
  304. package/dist/utils/parse-table.js +17 -0
  305. package/dist/utils/parse-table.js.map +1 -0
  306. package/dist/utils/read-directory.d.ts +5 -0
  307. package/dist/utils/read-directory.d.ts.map +1 -0
  308. package/dist/utils/read-directory.js +29 -0
  309. package/dist/utils/read-directory.js.map +1 -0
  310. package/dist/utils/stringify-ast.d.ts +6 -0
  311. package/dist/utils/stringify-ast.d.ts.map +1 -0
  312. package/dist/utils/stringify-ast.js +8 -0
  313. package/dist/utils/stringify-ast.js.map +1 -0
  314. package/dist/utils/strip-markdown.d.ts +11 -0
  315. package/dist/utils/strip-markdown.d.ts.map +1 -0
  316. package/dist/utils/strip-markdown.js +48 -0
  317. package/dist/utils/strip-markdown.js.map +1 -0
  318. package/dist/validator.d.ts +10 -0
  319. package/dist/validator.d.ts.map +1 -0
  320. package/dist/validator.js +55 -0
  321. package/dist/validator.js.map +1 -0
  322. package/package.json +3 -3
  323. package/src/document.ts +26 -8
@@ -0,0 +1,80 @@
1
+ import { z } from 'zod';
2
+ import fs from 'fs/promises';
3
+ import path from 'path';
4
+ import { commands } from '../registry.js';
5
+ import { loadCollection } from '../load-collection.js';
6
+ const argsSchema = z.object({
7
+ contentFolder: z.string().optional(),
8
+ });
9
+ async function handler(options) {
10
+ const collection = await loadCollection({
11
+ contentFolder: options.contentFolder,
12
+ });
13
+ const modelsSummary = collection.generateModelSummary();
14
+ const toc = collection.tableOfContents({ title: 'Table of Contents' });
15
+ // Read the bundled static docs from the contentbase package
16
+ const packageRoot = path.resolve(import.meta.dir, '../../..');
17
+ const primer = await fs.readFile(path.join(packageRoot, 'PRIMER.md'), 'utf8');
18
+ const cli = await fs.readFile(path.join(packageRoot, 'CLI.md'), 'utf8');
19
+ const output = [
20
+ modelsSummary.trimEnd(),
21
+ '',
22
+ '---',
23
+ '',
24
+ toc.trimEnd(),
25
+ '',
26
+ '---',
27
+ '',
28
+ cli.trimEnd(),
29
+ '',
30
+ '---',
31
+ '',
32
+ primer.trimEnd(),
33
+ '',
34
+ ].join('\n');
35
+ console.log(output);
36
+ }
37
+ commands.register('teach', {
38
+ description: 'Output combined documentation (README.md + TOC + CLI.md + PRIMER.md) for LLM context',
39
+ help: `# cnotes teach
40
+
41
+ Output combined documentation suitable for feeding to an LLM as context. Concatenates the models summary, table of contents, CLI reference, and API primer into a single stream.
42
+
43
+ ## Usage
44
+
45
+ \`\`\`
46
+ cnotes teach [options]
47
+ \`\`\`
48
+
49
+ ## Options
50
+
51
+ | Option | Description |
52
+ |--------|-------------|
53
+ | \`--contentFolder\` | Path to content folder |
54
+
55
+ ## Output
56
+
57
+ Writes to stdout in this order:
58
+
59
+ 1. **README.md** — Model definitions summary
60
+ 2. **TABLE-OF-CONTENTS.md** — Document listing
61
+ 3. **CLI.md** — CLI reference
62
+ 4. **PRIMER.md** — API primer
63
+
64
+ ## Examples
65
+
66
+ \`\`\`bash
67
+ # Print full documentation
68
+ cnotes teach
69
+
70
+ # Save to a file for LLM context
71
+ cnotes teach > context.md
72
+
73
+ # Teach from a specific content folder
74
+ cnotes teach --contentFolder ./docs
75
+ \`\`\`
76
+ `,
77
+ argsSchema,
78
+ handler,
79
+ });
80
+ //# sourceMappingURL=teach.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"teach.js","sourceRoot":"","sources":["../../../src/cli/commands/teach.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AACvB,OAAO,EAAE,MAAM,aAAa,CAAA;AAC5B,OAAO,IAAI,MAAM,MAAM,CAAA;AACvB,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAA;AACzC,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAA;AAEtD,MAAM,UAAU,GAAG,CAAC,CAAC,MAAM,CAAC;IAC1B,aAAa,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;CACrC,CAAC,CAAA;AAEF,KAAK,UAAU,OAAO,CAAC,OAAmC;IACxD,MAAM,UAAU,GAAG,MAAM,cAAc,CAAC;QACtC,aAAa,EAAE,OAAO,CAAC,aAAa;KACrC,CAAC,CAAA;IAEF,MAAM,aAAa,GAAG,UAAU,CAAC,oBAAoB,EAAE,CAAA;IACvD,MAAM,GAAG,GAAG,UAAU,CAAC,eAAe,CAAC,EAAE,KAAK,EAAE,mBAAmB,EAAE,CAAC,CAAA;IAEtE,4DAA4D;IAC5D,MAAM,WAAW,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,EAAE,UAAU,CAAC,CAAA;IAC7D,MAAM,MAAM,GAAG,MAAM,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,WAAW,CAAC,EAAE,MAAM,CAAC,CAAA;IAC7E,MAAM,GAAG,GAAG,MAAM,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,QAAQ,CAAC,EAAE,MAAM,CAAC,CAAA;IAEvE,MAAM,MAAM,GAAG;QACb,aAAa,CAAC,OAAO,EAAE;QACvB,EAAE;QACF,KAAK;QACL,EAAE;QACF,GAAG,CAAC,OAAO,EAAE;QACb,EAAE;QACF,KAAK;QACL,EAAE;QACF,GAAG,CAAC,OAAO,EAAE;QACb,EAAE;QACF,KAAK;QACL,EAAE;QACF,MAAM,CAAC,OAAO,EAAE;QAChB,EAAE;KACH,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;IAEZ,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,CAAA;AACrB,CAAC;AAED,QAAQ,CAAC,QAAQ,CAAC,OAAO,EAAE;IACzB,WAAW,EAAE,sFAAsF;IACnG,IAAI,EAAE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAqCP;IACC,UAAU;IACV,OAAO;CACR,CAAC,CAAA"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=text-search.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"text-search.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/text-search.ts"],"names":[],"mappings":""}
@@ -0,0 +1,125 @@
1
+ import { z } from 'zod';
2
+ import { commands } from '../registry.js';
3
+ import { loadCollection } from '../load-collection.js';
4
+ const argsSchema = z.object({
5
+ include: z.string().optional(),
6
+ exclude: z.string().optional(),
7
+ ignoreCase: z.boolean().default(false),
8
+ expanded: z.boolean().default(false),
9
+ maxResults: z.number().optional(),
10
+ contentFolder: z.string().optional(),
11
+ });
12
+ async function handler(options, { container }) {
13
+ const pattern = container.argv._[1];
14
+ if (!pattern) {
15
+ console.error('Usage: cnotes text-search <pattern> [options]');
16
+ console.error(' --expanded Show line-level matches (default: files only)');
17
+ console.error(' --include Glob filter (e.g. "*.md")');
18
+ console.error(' --exclude Glob filter');
19
+ console.error(' --ignoreCase Case insensitive search');
20
+ console.error(' --maxResults Limit number of results');
21
+ process.exit(1);
22
+ }
23
+ const collection = await loadCollection({
24
+ contentFolder: options.contentFolder,
25
+ });
26
+ const grep = container.feature('grep');
27
+ const searchPath = collection.rootPath;
28
+ const grepOptions = {
29
+ pattern,
30
+ path: searchPath,
31
+ ignoreCase: options.ignoreCase,
32
+ maxResults: options.maxResults,
33
+ include: options.include,
34
+ exclude: options.exclude,
35
+ };
36
+ if (!options.expanded) {
37
+ const files = await grep.filesContaining(pattern, {
38
+ path: searchPath,
39
+ ignoreCase: options.ignoreCase,
40
+ maxResults: options.maxResults,
41
+ include: options.include,
42
+ exclude: options.exclude,
43
+ });
44
+ if (files.length === 0) {
45
+ console.log('No matches found.');
46
+ return;
47
+ }
48
+ console.log(`${files.length} file(s) match:\n`);
49
+ for (const file of files) {
50
+ console.log(` ${file}`);
51
+ }
52
+ }
53
+ else {
54
+ const results = await grep.search(grepOptions);
55
+ if (results.length === 0) {
56
+ console.log('No matches found.');
57
+ return;
58
+ }
59
+ // Group by file
60
+ const grouped = new Map();
61
+ for (const match of results) {
62
+ if (!grouped.has(match.file))
63
+ grouped.set(match.file, []);
64
+ grouped.get(match.file).push(match);
65
+ }
66
+ console.log(`${grouped.size} file(s), ${results.length} match(es):\n`);
67
+ for (const [file, matches] of grouped) {
68
+ console.log(` ${file}`);
69
+ for (const m of matches) {
70
+ console.log(` ${m.line}: ${m.content}`);
71
+ }
72
+ console.log();
73
+ }
74
+ }
75
+ }
76
+ commands.register('text-search', {
77
+ description: 'Search file contents with pattern matching',
78
+ usage: '<pattern>',
79
+ help: `# cnotes text-search
80
+
81
+ Search file contents within the collection using ripgrep. Returns matching files by default, or line-level detail with \`--expanded\`.
82
+
83
+ ## Usage
84
+
85
+ \`\`\`
86
+ cnotes text-search <pattern> [options]
87
+ \`\`\`
88
+
89
+ ## Arguments
90
+
91
+ | Argument | Description |
92
+ |----------|-------------|
93
+ | \`pattern\` | Text or regex pattern to search for |
94
+
95
+ ## Options
96
+
97
+ | Option | Default | Description |
98
+ |--------|---------|-------------|
99
+ | \`--expanded\` | \`false\` | Show line-level matches instead of just file paths |
100
+ | \`--include\` | | Glob filter for file types (e.g. \`"*.md"\`) |
101
+ | \`--exclude\` | | Glob filter to exclude (e.g. \`"node_modules"\`) |
102
+ | \`--ignoreCase\` | \`false\` | Case-insensitive matching |
103
+ | \`--maxResults\` | | Limit number of results |
104
+ | \`--contentFolder\` | | Path to content folder |
105
+
106
+ ## Examples
107
+
108
+ \`\`\`bash
109
+ # Find files containing "authentication"
110
+ cnotes text-search authentication
111
+
112
+ # Case-insensitive search with line details
113
+ cnotes text-search "TODO" --ignoreCase --expanded
114
+
115
+ # Search only markdown files
116
+ cnotes text-search "status: draft" --include "*.md"
117
+
118
+ # Limit results
119
+ cnotes text-search "import" --maxResults 10 --expanded
120
+ \`\`\`
121
+ `,
122
+ argsSchema,
123
+ handler,
124
+ });
125
+ //# sourceMappingURL=text-search.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"text-search.js","sourceRoot":"","sources":["../../../src/cli/commands/text-search.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=update.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"update.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/update.ts"],"names":[],"mappings":""}
@@ -0,0 +1,167 @@
1
+ import { z } from 'zod';
2
+ import picomatch from 'picomatch';
3
+ import { commands } from '../registry.js';
4
+ import { loadCollection } from '../load-collection.js';
5
+ const argsSchema = z.object({
6
+ contentFolder: z.string().optional(),
7
+ force: z.boolean().default(false),
8
+ dry: z.boolean().default(false),
9
+ });
10
+ /**
11
+ * Parse "meta.status=spark" into a nested path assignment.
12
+ * Supports dotted paths like "meta.status" or bare keys like "status"
13
+ * (bare keys are treated as meta.<key>).
14
+ */
15
+ function parseAssignment(raw) {
16
+ const eqIdx = raw.indexOf('=');
17
+ if (eqIdx === -1)
18
+ return null;
19
+ const key = raw.slice(0, eqIdx).trim();
20
+ const value = raw.slice(eqIdx + 1).trim();
21
+ // Normalise: if path doesn't start with "meta.", prepend it
22
+ const fullKey = key.startsWith('meta.') ? key : `meta.${key}`;
23
+ const path = fullKey.split('.');
24
+ return { path, value };
25
+ }
26
+ /**
27
+ * Coerce a string value to a JS primitive if it looks like one.
28
+ */
29
+ function coerceValue(raw) {
30
+ if (raw === 'true')
31
+ return true;
32
+ if (raw === 'false')
33
+ return false;
34
+ if (raw === 'null')
35
+ return null;
36
+ if (/^-?\d+(\.\d+)?$/.test(raw))
37
+ return Number(raw);
38
+ return raw;
39
+ }
40
+ /**
41
+ * Set a nested value on an object via a path array.
42
+ * e.g. setNested(obj, ['meta', 'status'], 'spark') → obj.meta.status = 'spark'
43
+ */
44
+ function setNested(obj, path, value) {
45
+ let current = obj;
46
+ for (let i = 1; i < path.length - 1; i++) {
47
+ if (!(path[i] in current) || typeof current[path[i]] !== 'object') {
48
+ current[path[i]] = {};
49
+ }
50
+ current = current[path[i]];
51
+ }
52
+ current[path[path.length - 1]] = value;
53
+ }
54
+ async function handler(options, context) {
55
+ const { container } = context;
56
+ const args = container.argv._.slice(1); // everything after "update"
57
+ if (args.length < 2) {
58
+ console.error('Usage: cnotes update <glob> <key=value> [key=value ...] [--force] [--dry]');
59
+ process.exit(1);
60
+ }
61
+ const globPattern = args[0];
62
+ const assignments = args.slice(1).map(parseAssignment).filter(Boolean);
63
+ if (assignments.length === 0) {
64
+ console.error('No valid key=value assignments found. Use format: meta.status=spark');
65
+ process.exit(1);
66
+ }
67
+ const collection = await loadCollection({
68
+ contentFolder: options.contentFolder,
69
+ });
70
+ // Match pathIds against the glob pattern
71
+ const isMatch = picomatch(globPattern);
72
+ const matchedIds = collection.available.filter((id) => isMatch(id));
73
+ if (matchedIds.length === 0) {
74
+ console.log(`No documents matched "${globPattern}"`);
75
+ return;
76
+ }
77
+ console.log(`Matched ${matchedIds.length} document(s)\n`);
78
+ let updated = 0;
79
+ let skipped = 0;
80
+ let validationErrors = 0;
81
+ for (const pathId of matchedIds) {
82
+ const doc = collection.document(pathId);
83
+ const def = collection.findModelDefinition(pathId);
84
+ // Apply assignments to a draft copy of meta for validation
85
+ const draftMeta = structuredClone(doc.meta);
86
+ for (const { path, value } of assignments) {
87
+ setNested({ meta: draftMeta }, ['meta', ...path.slice(1)], coerceValue(value));
88
+ }
89
+ // Validate unless --force
90
+ if (!options.force && def) {
91
+ const rawMeta = { ...(def.defaults ?? {}), ...draftMeta };
92
+ const metaResult = def.meta.safeParse(rawMeta);
93
+ if (!metaResult.success) {
94
+ validationErrors++;
95
+ console.log(`INVALID: ${pathId}`);
96
+ for (const issue of metaResult.error.issues) {
97
+ console.log(` ${issue.path.join('.')}: ${issue.message}`);
98
+ }
99
+ continue;
100
+ }
101
+ }
102
+ if (options.dry) {
103
+ console.log(`WOULD UPDATE: ${pathId}`);
104
+ for (const { path, value } of assignments) {
105
+ console.log(` ${path.join('.')} = ${value}`);
106
+ }
107
+ updated++;
108
+ continue;
109
+ }
110
+ // Apply to the real document
111
+ for (const { path, value } of assignments) {
112
+ setNested({ meta: doc.meta }, ['meta', ...path.slice(1)], coerceValue(value));
113
+ }
114
+ await doc.save({ normalize: false });
115
+ updated++;
116
+ console.log(`UPDATED: ${pathId}`);
117
+ }
118
+ console.log();
119
+ console.log(`${updated} updated, ${validationErrors} invalid, ${matchedIds.length - updated - validationErrors} skipped`);
120
+ }
121
+ commands.register('update', {
122
+ description: 'Bulk-update document frontmatter by glob pattern',
123
+ help: `# cnotes update
124
+
125
+ Bulk-update frontmatter fields on documents matching a glob pattern. Validates changes against the model schema before writing (bypass with \`--force\`).
126
+
127
+ ## Usage
128
+
129
+ \`\`\`
130
+ cnotes update <glob> <key=value> [key=value ...] [options]
131
+ \`\`\`
132
+
133
+ ## Arguments
134
+
135
+ | Argument | Description |
136
+ |----------|-------------|
137
+ | \`glob\` | Glob pattern to match document path IDs (e.g. \`docs/ideas/**\`) |
138
+ | \`key=value\` | One or more assignments. Prefix with \`meta.\` or use bare keys (auto-prefixed). |
139
+
140
+ ## Options
141
+
142
+ | Option | Description |
143
+ |--------|-------------|
144
+ | \`--force\` | Skip schema validation |
145
+ | \`--dry\` | Preview changes without writing |
146
+ | \`--contentFolder\` | Path to content folder |
147
+
148
+ ## Examples
149
+
150
+ \`\`\`bash
151
+ # Set status on all ideas
152
+ cnotes update "ideas/**" meta.status=spark
153
+
154
+ # Multiple fields at once
155
+ cnotes update "epics/*" status=approved priority=high
156
+
157
+ # Preview what would change
158
+ cnotes update "ideas/**" status=spark --dry
159
+
160
+ # Force past schema validation
161
+ cnotes update "ideas/**" status=spark --force
162
+ \`\`\`
163
+ `,
164
+ argsSchema,
165
+ handler,
166
+ });
167
+ //# sourceMappingURL=update.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"update.js","sourceRoot":"","sources":["../../../src/cli/commands/update.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=validate.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"validate.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/validate.ts"],"names":[],"mappings":""}
@@ -0,0 +1,129 @@
1
+ import { z } from 'zod';
2
+ import { commands } from '../registry.js';
3
+ import { loadCollection } from '../load-collection.js';
4
+ import { validateDocument } from '../../validator.js';
5
+ const argsSchema = z.object({
6
+ contentFolder: z.string().optional(),
7
+ setDefaultMeta: z.boolean().default(false),
8
+ });
9
+ async function handler(options, context) {
10
+ const collection = await loadCollection({
11
+ contentFolder: options.contentFolder,
12
+ });
13
+ const setDefaultMeta = options.setDefaultMeta;
14
+ const target = context.container.argv._[1] || 'all';
15
+ let pathIds;
16
+ if (target === 'all') {
17
+ pathIds = collection.available;
18
+ }
19
+ else if (collection.items.has(target)) {
20
+ pathIds = [target];
21
+ }
22
+ else {
23
+ const def = collection.getModelDefinition(target);
24
+ if (def) {
25
+ pathIds = collection.available.filter((id) => id.startsWith(def.prefix));
26
+ }
27
+ else {
28
+ console.error(`Not found: "${target}"`);
29
+ process.exit(1);
30
+ }
31
+ }
32
+ let valid = 0;
33
+ let invalid = 0;
34
+ let updated = 0;
35
+ for (const pathId of pathIds) {
36
+ const def = collection.findModelDefinition(pathId);
37
+ if (!def)
38
+ continue;
39
+ const doc = collection.document(pathId);
40
+ if (setDefaultMeta && Object.keys(doc.meta).length === 0) {
41
+ const defaults = def.meta.parse({});
42
+ if (Object.keys(defaults).length > 0) {
43
+ const cleanDefaults = {};
44
+ for (const [k, v] of Object.entries(defaults)) {
45
+ if (v !== undefined)
46
+ cleanDefaults[k] = v;
47
+ }
48
+ if (Object.keys(cleanDefaults).length > 0) {
49
+ Object.assign(doc.meta, cleanDefaults);
50
+ await doc.save({ normalize: false });
51
+ updated++;
52
+ console.log(`SET DEFAULTS: ${pathId}`);
53
+ }
54
+ }
55
+ }
56
+ const result = validateDocument(doc, def);
57
+ if (result.valid) {
58
+ valid++;
59
+ }
60
+ else {
61
+ invalid++;
62
+ console.log(`INVALID: ${pathId}`);
63
+ for (const error of result.errors) {
64
+ console.log(` ${error.path.join('.')}: ${error.message}`);
65
+ }
66
+ }
67
+ }
68
+ console.log();
69
+ if (updated > 0) {
70
+ console.log(`Updated ${updated} document(s) with default meta.`);
71
+ }
72
+ console.log(`Validated ${valid + invalid} documents: ${valid} valid, ${invalid} invalid`);
73
+ if (invalid > 0)
74
+ process.exit(1);
75
+ }
76
+ commands.register('validate', {
77
+ description: 'Validate documents against their model schemas',
78
+ usage: '[model]',
79
+ help: `# cnotes validate
80
+
81
+ Validate documents against their model schemas. Check frontmatter types, required fields, and optionally fill in missing defaults.
82
+
83
+ ## Usage
84
+
85
+ \`\`\`
86
+ cnotes validate [target] [options]
87
+ \`\`\`
88
+
89
+ ## Arguments
90
+
91
+ | Argument | Description | Default |
92
+ |----------|-------------|---------|
93
+ | \`target\` | A path ID, model name, or \`all\` | \`all\` |
94
+
95
+ ## Options
96
+
97
+ | Option | Description |
98
+ |--------|-------------|
99
+ | \`--setDefaultMeta\` | Write Zod schema defaults to documents with empty frontmatter |
100
+ | \`--contentFolder\` | Path to content folder |
101
+
102
+ ## Exit Codes
103
+
104
+ - \`0\` — All documents valid
105
+ - \`1\` — One or more validation errors
106
+
107
+ ## Examples
108
+
109
+ \`\`\`bash
110
+ # Validate everything
111
+ cnotes validate
112
+
113
+ # Validate a single document
114
+ cnotes validate epics/auth-system
115
+
116
+ # Validate all documents of a model
117
+ cnotes validate Epic
118
+
119
+ # Fill in missing defaults and validate
120
+ cnotes validate all --setDefaultMeta
121
+
122
+ # Validate a different content folder
123
+ cnotes validate --contentFolder ./docs
124
+ \`\`\`
125
+ `,
126
+ argsSchema,
127
+ handler,
128
+ });
129
+ //# sourceMappingURL=validate.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"validate.js","sourceRoot":"","sources":["../../../src/cli/commands/validate.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ #!/usr/bin/env bun
2
+ import './commands/index.js';
3
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/cli/index.ts"],"names":[],"mappings":";AAKA,OAAO,qBAAqB,CAAA"}
@@ -0,0 +1,84 @@
1
+ #!/usr/bin/env bun
2
+ import { commands } from './registry.js';
3
+ import pkg from '../../package.json';
4
+ // Side-effect imports register all commands
5
+ import './commands/index.js';
6
+ async function renderMarkdown(container, text) {
7
+ const ui = container.feature('ui');
8
+ console.log(ui.markdown(text));
9
+ }
10
+ async function main() {
11
+ // Dynamic import so the library stays luca-free; only the CLI pulls it in
12
+ const luca = await import('luca/node');
13
+ const container = luca.default;
14
+ const commandName = container.argv._[0];
15
+ if (container.argv.version || container.argv.v || commandName === 'version') {
16
+ console.log(`cnotes ${pkg.version}\n${pkg.repository}`);
17
+ return;
18
+ }
19
+ const wantsHelp = container.argv.help || container.argv.h;
20
+ // Bare invocation or explicit "help" with no subcommand
21
+ if (!commandName || (commandName === 'help' && !container.argv._[1])) {
22
+ const help = commands.get('help');
23
+ await help.handler({}, { container });
24
+ return;
25
+ }
26
+ // `cnotes help <command>` — show that command's help
27
+ if (commandName === 'help' && container.argv._[1]) {
28
+ const target = container.argv._[1];
29
+ if (!commands.has(target)) {
30
+ console.error(`Unknown command: ${target}`);
31
+ console.error(`Run "cnotes help" to see available commands.\n`);
32
+ process.exit(1);
33
+ }
34
+ const def = commands.get(target);
35
+ if (def.help) {
36
+ await renderMarkdown(container, def.help);
37
+ }
38
+ else {
39
+ console.log(`${target} — ${def.description}\n`);
40
+ console.log(`No detailed help available for this command.`);
41
+ }
42
+ return;
43
+ }
44
+ if (!commands.has(commandName)) {
45
+ console.error(`Unknown command: ${commandName}`);
46
+ console.error(`Run "cnotes help" to see available commands.\n`);
47
+ process.exit(1);
48
+ }
49
+ const def = commands.get(commandName);
50
+ // `cnotes <command> --help` — show that command's help
51
+ if (wantsHelp) {
52
+ if (def.help) {
53
+ await renderMarkdown(container, def.help);
54
+ }
55
+ else {
56
+ console.log(`${commandName} — ${def.description}\n`);
57
+ console.log(`No detailed help available for this command.`);
58
+ }
59
+ return;
60
+ }
61
+ // Parse args from container.argv (minimist-parsed)
62
+ const { _: _positional, ...flags } = container.argv;
63
+ let options = flags;
64
+ if (def.argsSchema) {
65
+ const result = def.argsSchema.safeParse(flags);
66
+ if (!result.success) {
67
+ console.error(`Invalid options for "${commandName}":`);
68
+ for (const issue of result.error.issues) {
69
+ console.error(` ${issue.path.join('.')}: ${issue.message}`);
70
+ }
71
+ if (def.help) {
72
+ console.error(`\nRun "cnotes ${commandName} --help" for usage information.`);
73
+ }
74
+ process.exit(1);
75
+ }
76
+ options = result.data;
77
+ }
78
+ await def.handler(options, { container });
79
+ }
80
+ main().catch((err) => {
81
+ console.error(err);
82
+ process.exit(1);
83
+ });
84
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/cli/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,7 @@
1
+ import { Collection } from "../collection";
2
+ export declare function loadCollection(options: {
3
+ contentFolder?: string;
4
+ modulePath?: string;
5
+ container?: any;
6
+ }): Promise<Collection>;
7
+ //# sourceMappingURL=load-collection.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"load-collection.d.ts","sourceRoot":"","sources":["../../src/cli/load-collection.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AA6H3C,wBAAsB,cAAc,CAAC,OAAO,EAAE;IAC5C,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,SAAS,CAAC,EAAE,GAAG,CAAC;CACjB,GAAG,OAAO,CAAC,UAAU,CAAC,CAoGtB"}