@cavelang/cli 0.27.14 → 0.29.1

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 (321) hide show
  1. package/Authors.md +5 -0
  2. package/License.md +6 -0
  3. package/README.md +122 -24
  4. package/dist/internal/act/action.d.ts +69 -0
  5. package/dist/internal/act/action.d.ts.map +1 -0
  6. package/dist/internal/act/action.js +201 -0
  7. package/dist/internal/act/action.js.map +1 -0
  8. package/dist/internal/act/declare.d.ts +102 -0
  9. package/dist/internal/act/declare.d.ts.map +1 -0
  10. package/dist/internal/act/declare.js +270 -0
  11. package/dist/internal/act/declare.js.map +1 -0
  12. package/dist/internal/act/engine.d.ts +103 -0
  13. package/dist/internal/act/engine.d.ts.map +1 -0
  14. package/dist/internal/act/engine.js +298 -0
  15. package/dist/internal/act/engine.js.map +1 -0
  16. package/dist/internal/act/index.d.ts +27 -0
  17. package/dist/internal/act/index.d.ts.map +1 -0
  18. package/dist/internal/act/index.js +25 -0
  19. package/dist/internal/act/index.js.map +1 -0
  20. package/dist/internal/automate/automation.d.ts +78 -0
  21. package/dist/internal/automate/automation.d.ts.map +1 -0
  22. package/dist/internal/automate/automation.js +135 -0
  23. package/dist/internal/automate/automation.js.map +1 -0
  24. package/dist/internal/automate/declare.d.ts +84 -0
  25. package/dist/internal/automate/declare.d.ts.map +1 -0
  26. package/dist/internal/automate/declare.js +233 -0
  27. package/dist/internal/automate/declare.js.map +1 -0
  28. package/dist/internal/automate/engine.d.ts +125 -0
  29. package/dist/internal/automate/engine.d.ts.map +1 -0
  30. package/dist/internal/automate/engine.js +388 -0
  31. package/dist/internal/automate/engine.js.map +1 -0
  32. package/dist/internal/automate/index.d.ts +28 -0
  33. package/dist/internal/automate/index.d.ts.map +1 -0
  34. package/dist/internal/automate/index.js +26 -0
  35. package/dist/internal/automate/index.js.map +1 -0
  36. package/dist/internal/automate/main.d.ts +26 -0
  37. package/dist/internal/automate/main.d.ts.map +1 -0
  38. package/dist/internal/automate/main.js +298 -0
  39. package/dist/internal/automate/main.js.map +1 -0
  40. package/dist/internal/connect/index.d.ts +26 -0
  41. package/dist/internal/connect/index.d.ts.map +1 -0
  42. package/dist/internal/connect/index.js +24 -0
  43. package/dist/internal/connect/index.js.map +1 -0
  44. package/dist/internal/connect/main.d.ts +23 -0
  45. package/dist/internal/connect/main.d.ts.map +1 -0
  46. package/dist/internal/connect/main.js +330 -0
  47. package/dist/internal/connect/main.js.map +1 -0
  48. package/dist/internal/connect/run.d.ts +85 -0
  49. package/dist/internal/connect/run.d.ts.map +1 -0
  50. package/dist/internal/connect/run.js +242 -0
  51. package/dist/internal/connect/run.js.map +1 -0
  52. package/dist/internal/connect/source.d.ts +44 -0
  53. package/dist/internal/connect/source.d.ts.map +1 -0
  54. package/dist/internal/connect/source.js +215 -0
  55. package/dist/internal/connect/source.js.map +1 -0
  56. package/dist/internal/connect/template.d.ts +69 -0
  57. package/dist/internal/connect/template.d.ts.map +1 -0
  58. package/dist/internal/connect/template.js +221 -0
  59. package/dist/internal/connect/template.js.map +1 -0
  60. package/dist/internal/eval/index.d.ts +28 -0
  61. package/dist/internal/eval/index.d.ts.map +1 -0
  62. package/dist/internal/eval/index.js +27 -0
  63. package/dist/internal/eval/index.js.map +1 -0
  64. package/dist/internal/eval/judge.d.ts +30 -0
  65. package/dist/internal/eval/judge.d.ts.map +1 -0
  66. package/dist/internal/eval/judge.js +101 -0
  67. package/dist/internal/eval/judge.js.map +1 -0
  68. package/dist/internal/eval/loop.d.ts +64 -0
  69. package/dist/internal/eval/loop.d.ts.map +1 -0
  70. package/dist/internal/eval/loop.js +123 -0
  71. package/dist/internal/eval/loop.js.map +1 -0
  72. package/dist/internal/eval/main.d.ts +17 -0
  73. package/dist/internal/eval/main.d.ts.map +1 -0
  74. package/dist/internal/eval/main.js +236 -0
  75. package/dist/internal/eval/main.js.map +1 -0
  76. package/dist/internal/eval/queries.d.ts +74 -0
  77. package/dist/internal/eval/queries.d.ts.map +1 -0
  78. package/dist/internal/eval/queries.js +161 -0
  79. package/dist/internal/eval/queries.js.map +1 -0
  80. package/dist/internal/eval/run.d.ts +143 -0
  81. package/dist/internal/eval/run.d.ts.map +1 -0
  82. package/dist/internal/eval/run.js +376 -0
  83. package/dist/internal/eval/run.js.map +1 -0
  84. package/dist/internal/eval/score.d.ts +81 -0
  85. package/dist/internal/eval/score.d.ts.map +1 -0
  86. package/dist/internal/eval/score.js +126 -0
  87. package/dist/internal/eval/score.js.map +1 -0
  88. package/dist/internal/eval/suite.d.ts +66 -0
  89. package/dist/internal/eval/suite.d.ts.map +1 -0
  90. package/dist/internal/eval/suite.js +130 -0
  91. package/dist/internal/eval/suite.js.map +1 -0
  92. package/dist/internal/ingest/context.d.ts +20 -0
  93. package/dist/internal/ingest/context.d.ts.map +1 -0
  94. package/dist/internal/ingest/context.js +59 -0
  95. package/dist/internal/ingest/context.js.map +1 -0
  96. package/dist/internal/ingest/files.d.ts +46 -0
  97. package/dist/internal/ingest/files.d.ts.map +1 -0
  98. package/dist/internal/ingest/files.js +115 -0
  99. package/dist/internal/ingest/files.js.map +1 -0
  100. package/dist/internal/ingest/index.d.ts +31 -0
  101. package/dist/internal/ingest/index.d.ts.map +1 -0
  102. package/dist/internal/ingest/index.js +29 -0
  103. package/dist/internal/ingest/index.js.map +1 -0
  104. package/dist/internal/ingest/main.d.ts +12 -0
  105. package/dist/internal/ingest/main.d.ts.map +1 -0
  106. package/dist/internal/ingest/main.js +180 -0
  107. package/dist/internal/ingest/main.js.map +1 -0
  108. package/dist/internal/ingest/prompt.d.ts +32 -0
  109. package/dist/internal/ingest/prompt.d.ts.map +1 -0
  110. package/dist/internal/ingest/prompt.js +75 -0
  111. package/dist/internal/ingest/prompt.js.map +1 -0
  112. package/dist/internal/ingest/run.d.ts +142 -0
  113. package/dist/internal/ingest/run.d.ts.map +1 -0
  114. package/dist/internal/ingest/run.js +350 -0
  115. package/dist/internal/ingest/run.js.map +1 -0
  116. package/dist/internal/ingest/web.d.ts +48 -0
  117. package/dist/internal/ingest/web.d.ts.map +1 -0
  118. package/dist/internal/ingest/web.js +140 -0
  119. package/dist/internal/ingest/web.js.map +1 -0
  120. package/dist/internal/loop/demo.d.ts +22 -0
  121. package/dist/internal/loop/demo.d.ts.map +1 -0
  122. package/dist/internal/loop/demo.js +67 -0
  123. package/dist/internal/loop/demo.js.map +1 -0
  124. package/dist/internal/loop/index.d.ts +20 -0
  125. package/dist/internal/loop/index.d.ts.map +1 -0
  126. package/dist/internal/loop/index.js +17 -0
  127. package/dist/internal/loop/index.js.map +1 -0
  128. package/dist/internal/loop/llm.d.ts +99 -0
  129. package/dist/internal/loop/llm.d.ts.map +1 -0
  130. package/dist/internal/loop/llm.js +231 -0
  131. package/dist/internal/loop/llm.js.map +1 -0
  132. package/dist/internal/loop/reconstruct.d.ts +87 -0
  133. package/dist/internal/loop/reconstruct.d.ts.map +1 -0
  134. package/dist/internal/loop/reconstruct.js +157 -0
  135. package/dist/internal/loop/reconstruct.js.map +1 -0
  136. package/dist/internal/loop/sqlite.d.ts +13 -0
  137. package/dist/internal/loop/sqlite.d.ts.map +1 -0
  138. package/dist/internal/loop/sqlite.js +33 -0
  139. package/dist/internal/loop/sqlite.js.map +1 -0
  140. package/dist/internal/loop/store.d.ts +50 -0
  141. package/dist/internal/loop/store.d.ts.map +1 -0
  142. package/dist/internal/loop/store.js +100 -0
  143. package/dist/internal/loop/store.js.map +1 -0
  144. package/dist/internal/mcp/bin.d.ts +7 -0
  145. package/dist/internal/mcp/bin.d.ts.map +1 -0
  146. package/dist/internal/mcp/bin.js +8 -0
  147. package/dist/internal/mcp/bin.js.map +1 -0
  148. package/dist/internal/mcp/index.d.ts +25 -0
  149. package/dist/internal/mcp/index.d.ts.map +1 -0
  150. package/dist/internal/mcp/index.js +23 -0
  151. package/dist/internal/mcp/index.js.map +1 -0
  152. package/dist/internal/mcp/main.d.ts +23 -0
  153. package/dist/internal/mcp/main.d.ts.map +1 -0
  154. package/dist/internal/mcp/main.js +156 -0
  155. package/dist/internal/mcp/main.js.map +1 -0
  156. package/dist/internal/mcp/server.d.ts +92 -0
  157. package/dist/internal/mcp/server.d.ts.map +1 -0
  158. package/dist/internal/mcp/server.js +251 -0
  159. package/dist/internal/mcp/server.js.map +1 -0
  160. package/dist/internal/mcp/tools.d.ts +91 -0
  161. package/dist/internal/mcp/tools.d.ts.map +1 -0
  162. package/dist/internal/mcp/tools.js +584 -0
  163. package/dist/internal/mcp/tools.js.map +1 -0
  164. package/dist/internal/rules/declare.d.ts +58 -0
  165. package/dist/internal/rules/declare.d.ts.map +1 -0
  166. package/dist/internal/rules/declare.js +152 -0
  167. package/dist/internal/rules/declare.js.map +1 -0
  168. package/dist/internal/rules/engine.d.ts +125 -0
  169. package/dist/internal/rules/engine.d.ts.map +1 -0
  170. package/dist/internal/rules/engine.js +575 -0
  171. package/dist/internal/rules/engine.js.map +1 -0
  172. package/dist/internal/rules/index.d.ts +23 -0
  173. package/dist/internal/rules/index.d.ts.map +1 -0
  174. package/dist/internal/rules/index.js +21 -0
  175. package/dist/internal/rules/index.js.map +1 -0
  176. package/dist/internal/rules/rule.d.ts +88 -0
  177. package/dist/internal/rules/rule.d.ts.map +1 -0
  178. package/dist/internal/rules/rule.js +221 -0
  179. package/dist/internal/rules/rule.js.map +1 -0
  180. package/dist/internal/shape/check.d.ts +118 -0
  181. package/dist/internal/shape/check.d.ts.map +1 -0
  182. package/dist/internal/shape/check.js +331 -0
  183. package/dist/internal/shape/check.js.map +1 -0
  184. package/dist/internal/shape/client.d.ts +31 -0
  185. package/dist/internal/shape/client.d.ts.map +1 -0
  186. package/dist/internal/shape/client.js +170 -0
  187. package/dist/internal/shape/client.js.map +1 -0
  188. package/dist/internal/shape/gate.d.ts +33 -0
  189. package/dist/internal/shape/gate.d.ts.map +1 -0
  190. package/dist/internal/shape/gate.js +0 -0
  191. package/dist/internal/shape/gate.js.map +1 -0
  192. package/dist/internal/shape/index.d.ts +27 -0
  193. package/dist/internal/shape/index.d.ts.map +1 -0
  194. package/dist/internal/shape/index.js +23 -0
  195. package/dist/internal/shape/index.js.map +1 -0
  196. package/dist/internal/shape/suggest.d.ts +82 -0
  197. package/dist/internal/shape/suggest.d.ts.map +1 -0
  198. package/dist/internal/shape/suggest.js +374 -0
  199. package/dist/internal/shape/suggest.js.map +1 -0
  200. package/dist/internal/sync/index.d.ts +22 -0
  201. package/dist/internal/sync/index.d.ts.map +1 -0
  202. package/dist/internal/sync/index.js +21 -0
  203. package/dist/internal/sync/index.js.map +1 -0
  204. package/dist/internal/sync/sync.d.ts +95 -0
  205. package/dist/internal/sync/sync.d.ts.map +1 -0
  206. package/dist/internal/sync/sync.js +342 -0
  207. package/dist/internal/sync/sync.js.map +1 -0
  208. package/dist/internal/view/api.d.ts +196 -0
  209. package/dist/internal/view/api.d.ts.map +1 -0
  210. package/dist/internal/view/api.js +189 -0
  211. package/dist/internal/view/api.js.map +1 -0
  212. package/dist/internal/view/index.d.ts +33 -0
  213. package/dist/internal/view/index.d.ts.map +1 -0
  214. package/dist/internal/view/index.js +30 -0
  215. package/dist/internal/view/index.js.map +1 -0
  216. package/dist/internal/view/main.d.ts +11 -0
  217. package/dist/internal/view/main.d.ts.map +1 -0
  218. package/dist/internal/view/main.js +98 -0
  219. package/dist/internal/view/main.js.map +1 -0
  220. package/dist/internal/view/page.d.ts +14 -0
  221. package/dist/internal/view/page.d.ts.map +1 -0
  222. package/dist/internal/view/page.js +370 -0
  223. package/dist/internal/view/page.js.map +1 -0
  224. package/dist/internal/view/report.d.ts +52 -0
  225. package/dist/internal/view/report.d.ts.map +1 -0
  226. package/dist/internal/view/report.js +367 -0
  227. package/dist/internal/view/report.js.map +1 -0
  228. package/dist/internal/view/scope.d.ts +11 -0
  229. package/dist/internal/view/scope.d.ts.map +1 -0
  230. package/dist/internal/view/scope.js +41 -0
  231. package/dist/internal/view/scope.js.map +1 -0
  232. package/dist/internal/view/server.d.ts +35 -0
  233. package/dist/internal/view/server.d.ts.map +1 -0
  234. package/dist/internal/view/server.js +141 -0
  235. package/dist/internal/view/server.js.map +1 -0
  236. package/dist/src/act.d.ts +3 -0
  237. package/dist/src/act.d.ts.map +1 -0
  238. package/dist/src/act.js +3 -0
  239. package/dist/src/act.js.map +1 -0
  240. package/dist/src/automate.d.ts +3 -0
  241. package/dist/src/automate.d.ts.map +1 -0
  242. package/dist/src/automate.js +3 -0
  243. package/dist/src/automate.js.map +1 -0
  244. package/dist/src/cli.d.ts +24 -17
  245. package/dist/src/cli.d.ts.map +1 -1
  246. package/dist/src/cli.js +408 -107
  247. package/dist/src/cli.js.map +1 -1
  248. package/dist/src/commands.d.ts +104 -0
  249. package/dist/src/commands.d.ts.map +1 -0
  250. package/dist/src/commands.js +33 -0
  251. package/dist/src/commands.js.map +1 -0
  252. package/dist/src/connect.d.ts +3 -0
  253. package/dist/src/connect.d.ts.map +1 -0
  254. package/dist/src/connect.js +3 -0
  255. package/dist/src/connect.js.map +1 -0
  256. package/dist/src/dispatch.d.ts +14 -0
  257. package/dist/src/dispatch.d.ts.map +1 -0
  258. package/dist/src/dispatch.js +116 -0
  259. package/dist/src/dispatch.js.map +1 -0
  260. package/dist/src/doctor.d.ts +45 -0
  261. package/dist/src/doctor.d.ts.map +1 -0
  262. package/dist/src/doctor.js +284 -0
  263. package/dist/src/doctor.js.map +1 -0
  264. package/dist/src/eval.d.ts +3 -0
  265. package/dist/src/eval.d.ts.map +1 -0
  266. package/dist/src/eval.js +3 -0
  267. package/dist/src/eval.js.map +1 -0
  268. package/dist/src/index.d.ts +9 -2
  269. package/dist/src/index.d.ts.map +1 -1
  270. package/dist/src/index.js +6 -2
  271. package/dist/src/index.js.map +1 -1
  272. package/dist/src/ingest.d.ts +3 -0
  273. package/dist/src/ingest.d.ts.map +1 -0
  274. package/dist/src/ingest.js +3 -0
  275. package/dist/src/ingest.js.map +1 -0
  276. package/dist/src/loop.d.ts +3 -0
  277. package/dist/src/loop.d.ts.map +1 -0
  278. package/dist/src/loop.js +3 -0
  279. package/dist/src/loop.js.map +1 -0
  280. package/dist/src/main.d.ts +1 -1
  281. package/dist/src/main.d.ts.map +1 -1
  282. package/dist/src/main.js +3 -75
  283. package/dist/src/main.js.map +1 -1
  284. package/dist/src/mcp.d.ts +3 -0
  285. package/dist/src/mcp.d.ts.map +1 -0
  286. package/dist/src/mcp.js +3 -0
  287. package/dist/src/mcp.js.map +1 -0
  288. package/dist/src/rules.d.ts +3 -0
  289. package/dist/src/rules.d.ts.map +1 -0
  290. package/dist/src/rules.js +3 -0
  291. package/dist/src/rules.js.map +1 -0
  292. package/dist/src/shape.d.ts +3 -0
  293. package/dist/src/shape.d.ts.map +1 -0
  294. package/dist/src/shape.js +3 -0
  295. package/dist/src/shape.js.map +1 -0
  296. package/dist/src/sync.d.ts +3 -0
  297. package/dist/src/sync.d.ts.map +1 -0
  298. package/dist/src/sync.js +3 -0
  299. package/dist/src/sync.js.map +1 -0
  300. package/dist/src/view.d.ts +3 -0
  301. package/dist/src/view.d.ts.map +1 -0
  302. package/dist/src/view.js +3 -0
  303. package/dist/src/view.js.map +1 -0
  304. package/package.json +81 -21
  305. package/src/act.ts +2 -0
  306. package/src/automate.ts +2 -0
  307. package/src/cli.ts +416 -102
  308. package/src/commands.ts +48 -0
  309. package/src/connect.ts +2 -0
  310. package/src/dispatch.ts +141 -0
  311. package/src/doctor.ts +370 -0
  312. package/src/eval.ts +2 -0
  313. package/src/index.ts +9 -2
  314. package/src/ingest.ts +2 -0
  315. package/src/loop.ts +2 -0
  316. package/src/main.ts +3 -66
  317. package/src/mcp.ts +2 -0
  318. package/src/rules.ts +2 -0
  319. package/src/shape.ts +2 -0
  320. package/src/sync.ts +2 -0
  321. package/src/view.ts +2 -0
@@ -0,0 +1,284 @@
1
+ /** Read-only installation, runtime, and store diagnostics for `cave doctor`. */
2
+ import { existsSync, readFileSync, statSync } from 'node:fs';
3
+ import { createRequire } from 'node:module';
4
+ import { dirname, join, parse } from 'node:path';
5
+ import { spawnSync } from 'node:child_process';
6
+ import { parseArgs } from 'node:util';
7
+ import { Version } from '@cavelang/core';
8
+ import { Schema, defaultDbPath } from '@cavelang/store';
9
+ import { nodeSqliteAdapter } from '@cavelang/store/adapter/node';
10
+ const requiredNode = '22.18.0';
11
+ const versionParts = (value) => {
12
+ const match = /^(\d+)\.(\d+)\.(\d+)/.exec(value);
13
+ return match === null ? undefined : [Number(match[1]), Number(match[2]), Number(match[3])];
14
+ };
15
+ const numericVersion = (value) => {
16
+ const parts = versionParts(value);
17
+ return parts === undefined ? undefined : parts.join('.');
18
+ };
19
+ const atLeast = (actual, required) => {
20
+ const a = versionParts(actual);
21
+ const b = versionParts(required);
22
+ if (a === undefined || b === undefined)
23
+ return false;
24
+ for (let index = 0; index < 3; index += 1) {
25
+ if (a[index] !== b[index])
26
+ return a[index] > b[index];
27
+ }
28
+ return true;
29
+ };
30
+ const check = (id, status, summary, remediation) => ({ id, status, summary, ...remediation === undefined ? {} : { remediation } });
31
+ const nodeCheck = () => atLeast(process.versions.node, requiredNode) ?
32
+ check('runtime.node', 'pass', `Node ${process.versions.node} satisfies >=${requiredNode}`) :
33
+ check('runtime.node', 'fail', `Node ${process.versions.node} is unsupported`, `Install Node ${requiredNode} or newer and rerun cave doctor.`);
34
+ const sqliteCheck = () => {
35
+ let db;
36
+ try {
37
+ db = nodeSqliteAdapter.open(':memory:');
38
+ db.exec('PRAGMA foreign_keys = ON');
39
+ const sqlite = db.prepare('SELECT sqlite_version() AS version').get()?.['version'];
40
+ const json = db.prepare(`SELECT json_valid('{}') AS available`).get()?.['available'];
41
+ const foreignKeys = db.prepare('PRAGMA foreign_keys').get()?.['foreign_keys'];
42
+ db.exec('CREATE VIRTUAL TABLE doctor_fts USING fts5(value)');
43
+ db.exec('DROP TABLE doctor_fts');
44
+ if (typeof sqlite !== 'string' || json !== 1 || foreignKeys !== 1 ||
45
+ nodeSqliteAdapter.capabilities.loadExtension === undefined) {
46
+ throw new Error('capability unavailable');
47
+ }
48
+ return check('runtime.sqlite', 'pass', `SQLite ${sqlite} supports FTS5, JSON functions, foreign keys, and extension loading`);
49
+ }
50
+ catch {
51
+ return check('runtime.sqlite', 'fail', 'The Node SQLite runtime lacks a required capability', `Use an official Node ${requiredNode}+ build with SQLite FTS5 and JSON support.`);
52
+ }
53
+ finally {
54
+ db?.close();
55
+ }
56
+ };
57
+ const grammarCheck = () => {
58
+ try {
59
+ const fromHighlight = createRequire(import.meta.resolve('@cavelang/highlight'));
60
+ const assets = [
61
+ fromHighlight.resolve('@cavelang/tree-sitter-cave/wasm'),
62
+ fromHighlight.resolve('@cavelang/tree-sitter-cave/highlights')
63
+ ];
64
+ if (assets.some(asset => !statSync(asset).isFile() || statSync(asset).size === 0)) {
65
+ throw new Error('asset unavailable');
66
+ }
67
+ return check('package.grammar', 'pass', 'Grammar WASM and highlight query are installed');
68
+ }
69
+ catch {
70
+ return check('package.grammar', 'fail', 'Grammar assets are missing from the installed package layout', 'Reinstall @cavelang/cli without omitting its production dependencies.');
71
+ }
72
+ };
73
+ const workspaceFrom = (start) => {
74
+ let directory = start;
75
+ while (true) {
76
+ if (existsSync(join(directory, 'pnpm-workspace.yaml'))) {
77
+ try {
78
+ const manifest = JSON.parse(readFileSync(join(directory, 'package.json'), 'utf8'));
79
+ if (typeof manifest.packageManager === 'string' && manifest.packageManager.startsWith('pnpm@')) {
80
+ return { packageManager: manifest.packageManager };
81
+ }
82
+ }
83
+ catch {
84
+ return { packageManager: 'pnpm' };
85
+ }
86
+ return { packageManager: 'pnpm' };
87
+ }
88
+ const parent = dirname(directory);
89
+ if (parent === directory || directory === parse(directory).root)
90
+ return undefined;
91
+ directory = parent;
92
+ }
93
+ };
94
+ const pnpmCheck = () => {
95
+ const workspace = workspaceFrom(process.cwd());
96
+ if (workspace === undefined) {
97
+ return check('workspace.pnpm', 'pass', 'pnpm is not required for this installed CLI');
98
+ }
99
+ const result = spawnSync('pnpm', ['--version'], {
100
+ encoding: 'utf8',
101
+ timeout: 3_000,
102
+ stdio: ['ignore', 'pipe', 'ignore']
103
+ });
104
+ const actual = result.status === 0 ? numericVersion(result.stdout.trim()) : undefined;
105
+ const pinned = workspace.packageManager.startsWith('pnpm@');
106
+ const required = pinned ? numericVersion(workspace.packageManager.slice('pnpm@'.length)) : undefined;
107
+ if (actual === undefined) {
108
+ return check('workspace.pnpm', 'fail', 'This workspace requires pnpm, but pnpm is unavailable', 'Enable Corepack or install the pnpm version declared by the workspace.');
109
+ }
110
+ if (required !== undefined && !atLeast(actual, required)) {
111
+ return check('workspace.pnpm', 'fail', `pnpm ${actual} is older than the workspace requirement`, `Enable Corepack or install pnpm ${required}.`);
112
+ }
113
+ return check('workspace.pnpm', 'pass', `pnpm ${actual} satisfies the workspace requirement`);
114
+ };
115
+ const inspectDatabase = (path, source) => {
116
+ const memory = path === ':memory:';
117
+ const exists = memory || existsSync(path);
118
+ const base = { source, kind: memory ? 'memory' : 'file', exists };
119
+ if (!exists) {
120
+ return {
121
+ configuration: base,
122
+ checks: [check('store.database', 'warn', 'The configured database does not exist yet', 'Run cave add to create it, or pass --db for an existing store.')]
123
+ };
124
+ }
125
+ let db;
126
+ let observed = base;
127
+ try {
128
+ db = nodeSqliteAdapter.open(path, { readOnly: true });
129
+ const version = db.prepare('PRAGMA user_version').get()?.['user_version'];
130
+ if (typeof version !== 'number')
131
+ throw new Error('invalid version');
132
+ const caveObjects = db.prepare(`SELECT count(*) AS count FROM sqlite_schema WHERE name LIKE 'cave_%' OR name LIKE 'idx_cave_%'`).get()?.['count'];
133
+ const configuration = { ...base, schemaVersion: version };
134
+ observed = configuration;
135
+ if (version > Schema.currentVersion) {
136
+ return {
137
+ configuration,
138
+ checks: [check('store.database', 'fail', `Database schema ${version} is newer than supported schema ${Schema.currentVersion}`, 'Upgrade CAVE before opening this database.')]
139
+ };
140
+ }
141
+ if (version === 0 && caveObjects === 0) {
142
+ return {
143
+ configuration,
144
+ checks: [check('store.database', 'warn', 'The database is readable but is not initialized as a CAVE store', 'Run cave add to initialize it; cave doctor made no changes.')]
145
+ };
146
+ }
147
+ if (version < Schema.currentVersion) {
148
+ return {
149
+ configuration,
150
+ checks: [check('store.database', 'warn', `Database schema ${version} needs migration to schema ${Schema.currentVersion}`, 'Back up the database, then open it with a normal cave command to migrate it.')]
151
+ };
152
+ }
153
+ Schema.validate(db, version);
154
+ const integrity = db.prepare('PRAGMA integrity_check').all();
155
+ if (integrity.length !== 1 || integrity[0]?.['integrity_check'] !== 'ok') {
156
+ return {
157
+ configuration,
158
+ checks: [check('store.integrity', 'fail', 'SQLite integrity checking failed', 'Restore a verified backup or recover the database with SQLite tooling.')]
159
+ };
160
+ }
161
+ const foreignKeys = db.prepare('PRAGMA foreign_key_check').all();
162
+ if (foreignKeys.length > 0) {
163
+ return {
164
+ configuration,
165
+ checks: [check('store.integrity', 'fail', 'The store contains broken foreign-key references', 'Restore a verified backup or repair the affected database rows.')]
166
+ };
167
+ }
168
+ const claims = db.prepare('SELECT count(*) AS count FROM cave_claim').get()?.['count'];
169
+ if (typeof claims !== 'number')
170
+ throw new Error('invalid count');
171
+ return {
172
+ configuration: { ...configuration, claims },
173
+ checks: [
174
+ check('store.database', 'pass', `CAVE schema ${version} is compatible (${claims} claim(s))`),
175
+ check('store.integrity', 'pass', 'SQLite integrity and foreign-key checks passed')
176
+ ]
177
+ };
178
+ }
179
+ catch {
180
+ return {
181
+ configuration: observed,
182
+ checks: [check('store.database', 'fail', 'The configured database is unreadable or has an incompatible schema', 'Check file permissions, restore a verified backup, or pass --db for another store.')]
183
+ };
184
+ }
185
+ finally {
186
+ db?.close();
187
+ }
188
+ };
189
+ const inspectHooks = (path) => {
190
+ if (path === undefined) {
191
+ return {
192
+ configuration: { source: 'none', exists: false },
193
+ check: check('config.hooks', 'pass', 'No optional hooks file was configured')
194
+ };
195
+ }
196
+ const configuration = { source: 'flag', exists: existsSync(path) };
197
+ if (!configuration.exists) {
198
+ return {
199
+ configuration,
200
+ check: check('config.hooks', 'fail', 'The configured hooks file does not exist', 'Create a JSON object of hook names to shell command strings, or omit --hooks.')
201
+ };
202
+ }
203
+ try {
204
+ const parsed = JSON.parse(readFileSync(path, 'utf8'));
205
+ if (typeof parsed !== 'object' || parsed === null || Array.isArray(parsed))
206
+ throw new Error('invalid');
207
+ const entries = Object.entries(parsed);
208
+ if (entries.some(([name, command]) => name.trim() === '' || typeof command !== 'string')) {
209
+ throw new Error('invalid');
210
+ }
211
+ return {
212
+ configuration: { ...configuration, entries: entries.length },
213
+ check: check('config.hooks', 'pass', `Hooks configuration is valid (${entries.length} entr${entries.length === 1 ? 'y' : 'ies'})`)
214
+ };
215
+ }
216
+ catch {
217
+ return {
218
+ configuration,
219
+ check: check('config.hooks', 'fail', 'The configured hooks file is unreadable or malformed', 'Use a JSON object whose values are shell command strings.')
220
+ };
221
+ }
222
+ };
223
+ export const diagnose = (options = {}) => {
224
+ const databasePath = options.db ?? defaultDbPath();
225
+ const databaseSource = options.db !== undefined ? 'flag' :
226
+ process.env['CAVE_DB'] !== undefined ? 'environment' : 'default';
227
+ const database = inspectDatabase(databasePath, databaseSource);
228
+ const hooks = inspectHooks(options.hooks);
229
+ const checks = [
230
+ nodeCheck(),
231
+ sqliteCheck(),
232
+ grammarCheck(),
233
+ pnpmCheck(),
234
+ ...database.checks,
235
+ hooks.check
236
+ ];
237
+ return {
238
+ format: 'cave.doctor',
239
+ version: 1,
240
+ ok: checks.every(entry => entry.status !== 'fail'),
241
+ caveVersion: Version.current(),
242
+ runtime: { node: process.versions.node, platform: process.platform, arch: process.arch },
243
+ configuration: { database: database.configuration, hooks: hooks.configuration },
244
+ checks
245
+ };
246
+ };
247
+ const render = (report) => {
248
+ const lines = [`cave doctor ${report.caveVersion}`];
249
+ for (const entry of report.checks) {
250
+ lines.push(`${entry.status.toUpperCase().padEnd(4)} ${entry.summary}`);
251
+ if (entry.remediation !== undefined)
252
+ lines.push(` ${entry.remediation}`);
253
+ }
254
+ const failures = report.checks.filter(entry => entry.status === 'fail').length;
255
+ const warnings = report.checks.filter(entry => entry.status === 'warn').length;
256
+ lines.push(report.ok ?
257
+ `result: ready${warnings === 0 ? '' : ` with ${warnings} warning(s)`}` :
258
+ `result: ${failures} problem(s), ${warnings} warning(s)`);
259
+ return `${lines.join('\n')}\n`;
260
+ };
261
+ export const doctorCommand = (argv) => {
262
+ const { values, positionals } = parseArgs({
263
+ args: [...argv],
264
+ options: {
265
+ db: { type: 'string' },
266
+ hooks: { type: 'string' },
267
+ json: { type: 'boolean' }
268
+ },
269
+ allowPositionals: true
270
+ });
271
+ if (positionals.length > 0) {
272
+ return { code: 2, out: '', err: 'cave doctor: unexpected positional arguments\n' };
273
+ }
274
+ const report = diagnose({
275
+ ...values.db === undefined ? {} : { db: values.db },
276
+ ...values.hooks === undefined ? {} : { hooks: values.hooks }
277
+ });
278
+ return {
279
+ code: report.ok ? 0 : 1,
280
+ out: values.json === true ? `${JSON.stringify(report, undefined, 2)}\n` : render(report),
281
+ err: ''
282
+ };
283
+ };
284
+ //# sourceMappingURL=doctor.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"doctor.js","sourceRoot":"","sources":["../../src/doctor.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ /** Compatibility subpath for the evaluation tooling. */
2
+ export * from '@cavelang/cli/eval';
3
+ //# sourceMappingURL=eval.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"eval.d.ts","sourceRoot":"","sources":["../../src/eval.ts"],"names":[],"mappings":"AAAA,wDAAwD;AACxD,cAAc,gBAAgB,CAAA"}
@@ -0,0 +1,3 @@
1
+ /** Compatibility subpath for the evaluation tooling. */
2
+ export * from '@cavelang/cli/eval';
3
+ //# sourceMappingURL=eval.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"eval.js","sourceRoot":"","sources":["../../src/eval.ts"],"names":[],"mappings":"AAAA,wDAAwD;AACxD,cAAc,gBAAgB,CAAA"}
@@ -1,7 +1,14 @@
1
1
  /**
2
2
  * `@cavelang/cli` — the `cave` command (parse / add / query / resolve / derive / act / check / suggest-alias / sync / export / report / reconstruct / demo).
3
- * Programmatic access to the same implementations lives here.
3
+ * Programmatic access to the same implementations lives here; `dispatch`
4
+ * and `runCli` expose the shared awaited command lifecycle.
4
5
  */
5
- export { actCommand, addCommand, cave, checkCommand, commandHelp, demoCommand, deriveCommand, exportCommand, helpCommand, highlightCommand, importCommand, parseCommand, queryCommand, reconstructCommand, reportCommand, resolveCommand, suggestAliasCommand, syncCommand, usage, versionCommand } from './cli.ts';
6
+ export { actCommand, addCommand, backupCommand, cave, checkCommand, commandHelp, demoCommand, deriveCommand, exportCommand, generateCommand, helpCommand, highlightCommand, importCommand, parseCommand, queryCommand, reconstructCommand, reportCommand, resolveCommand, restoreCommand, suggestAliasCommand, syncCommand, usage, versionCommand } from './cli.ts';
7
+ export { dispatch, runCli } from './dispatch.ts';
8
+ export type { CommandRuntime } from './dispatch.ts';
9
+ export { commandRegistry } from './commands.ts';
10
+ export type { CommandReference } from './commands.ts';
6
11
  export type { Output } from './cli.ts';
12
+ export { diagnose, doctorCommand } from './doctor.ts';
13
+ export type { DoctorCheck, DoctorOutput, DoctorReport, DoctorStatus } from './doctor.ts';
7
14
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,UAAU,EAAE,UAAU,EAAE,IAAI,EAAE,YAAY,EAAE,WAAW,EAAE,WAAW,EAAE,aAAa,EAAE,aAAa,EAAE,WAAW,EAAE,gBAAgB,EAAE,aAAa,EAAE,YAAY,EAAE,YAAY,EAAE,kBAAkB,EAAE,aAAa,EAAE,cAAc,EAAE,mBAAmB,EAAE,WAAW,EAAE,KAAK,EAAE,cAAc,EAAE,MAAM,UAAU,CAAA;AACnT,YAAY,EAAE,MAAM,EAAE,MAAM,UAAU,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,UAAU,EAAE,UAAU,EAAE,aAAa,EAAE,IAAI,EAAE,YAAY,EAAE,WAAW,EAAE,WAAW,EAAE,aAAa,EAAE,aAAa,EAAE,eAAe,EAAE,WAAW,EAAE,gBAAgB,EAAE,aAAa,EAAE,YAAY,EAAE,YAAY,EAAE,kBAAkB,EAAE,aAAa,EAAE,cAAc,EAAE,cAAc,EAAE,mBAAmB,EAAE,WAAW,EAAE,KAAK,EAAE,cAAc,EAAE,MAAM,UAAU,CAAA;AACnW,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,eAAe,CAAA;AAChD,YAAY,EAAE,cAAc,EAAE,MAAM,eAAe,CAAA;AACnD,OAAO,EAAE,eAAe,EAAE,MAAM,eAAe,CAAA;AAC/C,YAAY,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAA;AACrD,YAAY,EAAE,MAAM,EAAE,MAAM,UAAU,CAAA;AACtC,OAAO,EAAE,QAAQ,EAAE,aAAa,EAAE,MAAM,aAAa,CAAA;AACrD,YAAY,EAAE,WAAW,EAAE,YAAY,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,aAAa,CAAA"}
package/dist/src/index.js CHANGED
@@ -1,6 +1,10 @@
1
1
  /**
2
2
  * `@cavelang/cli` — the `cave` command (parse / add / query / resolve / derive / act / check / suggest-alias / sync / export / report / reconstruct / demo).
3
- * Programmatic access to the same implementations lives here.
3
+ * Programmatic access to the same implementations lives here; `dispatch`
4
+ * and `runCli` expose the shared awaited command lifecycle.
4
5
  */
5
- export { actCommand, addCommand, cave, checkCommand, commandHelp, demoCommand, deriveCommand, exportCommand, helpCommand, highlightCommand, importCommand, parseCommand, queryCommand, reconstructCommand, reportCommand, resolveCommand, suggestAliasCommand, syncCommand, usage, versionCommand } from "./cli.js";
6
+ export { actCommand, addCommand, backupCommand, cave, checkCommand, commandHelp, demoCommand, deriveCommand, exportCommand, generateCommand, helpCommand, highlightCommand, importCommand, parseCommand, queryCommand, reconstructCommand, reportCommand, resolveCommand, restoreCommand, suggestAliasCommand, syncCommand, usage, versionCommand } from "./cli.js";
7
+ export { dispatch, runCli } from "./dispatch.js";
8
+ export { commandRegistry } from "./commands.js";
9
+ export { diagnose, doctorCommand } from "./doctor.js";
6
10
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,UAAU,EAAE,UAAU,EAAE,IAAI,EAAE,YAAY,EAAE,WAAW,EAAE,WAAW,EAAE,aAAa,EAAE,aAAa,EAAE,WAAW,EAAE,gBAAgB,EAAE,aAAa,EAAE,YAAY,EAAE,YAAY,EAAE,kBAAkB,EAAE,aAAa,EAAE,cAAc,EAAE,mBAAmB,EAAE,WAAW,EAAE,KAAK,EAAE,cAAc,EAAE,MAAM,UAAU,CAAA"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,UAAU,EAAE,UAAU,EAAE,aAAa,EAAE,IAAI,EAAE,YAAY,EAAE,WAAW,EAAE,WAAW,EAAE,aAAa,EAAE,aAAa,EAAE,eAAe,EAAE,WAAW,EAAE,gBAAgB,EAAE,aAAa,EAAE,YAAY,EAAE,YAAY,EAAE,kBAAkB,EAAE,aAAa,EAAE,cAAc,EAAE,cAAc,EAAE,mBAAmB,EAAE,WAAW,EAAE,KAAK,EAAE,cAAc,EAAE,MAAM,UAAU,CAAA;AACnW,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,eAAe,CAAA;AAEhD,OAAO,EAAE,eAAe,EAAE,MAAM,eAAe,CAAA;AAG/C,OAAO,EAAE,QAAQ,EAAE,aAAa,EAAE,MAAM,aAAa,CAAA"}
@@ -0,0 +1,3 @@
1
+ /** Compatibility subpath for the agent ingestion tooling. */
2
+ export * from '@cavelang/cli/ingest';
3
+ //# sourceMappingURL=ingest.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ingest.d.ts","sourceRoot":"","sources":["../../src/ingest.ts"],"names":[],"mappings":"AAAA,6DAA6D;AAC7D,cAAc,kBAAkB,CAAA"}
@@ -0,0 +1,3 @@
1
+ /** Compatibility subpath for the agent ingestion tooling. */
2
+ export * from '@cavelang/cli/ingest';
3
+ //# sourceMappingURL=ingest.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ingest.js","sourceRoot":"","sources":["../../src/ingest.ts"],"names":[],"mappings":"AAAA,6DAA6D;AAC7D,cAAc,kBAAkB,CAAA"}
@@ -0,0 +1,3 @@
1
+ /** Compatibility subpath for reconstruction policies. */
2
+ export * from '@cavelang/cli/loop';
3
+ //# sourceMappingURL=loop.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"loop.d.ts","sourceRoot":"","sources":["../../src/loop.ts"],"names":[],"mappings":"AAAA,yDAAyD;AACzD,cAAc,gBAAgB,CAAA"}
@@ -0,0 +1,3 @@
1
+ /** Compatibility subpath for reconstruction policies. */
2
+ export * from '@cavelang/cli/loop';
3
+ //# sourceMappingURL=loop.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"loop.js","sourceRoot":"","sources":["../../src/loop.ts"],"names":[],"mappings":"AAAA,yDAAyD;AACzD,cAAc,gBAAgB,CAAA"}
@@ -1,4 +1,4 @@
1
1
  #!/usr/bin/env node
2
- /** `cave` binary entry point — see `cli.ts` for the command implementations. */
2
+ /** `cave` binary entry point — one lifecycle for every command. */
3
3
  export {};
4
4
  //# sourceMappingURL=main.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"main.d.ts","sourceRoot":"","sources":["../../src/main.ts"],"names":[],"mappings":";AACA,gFAAgF"}
1
+ {"version":3,"file":"main.d.ts","sourceRoot":"","sources":["../../src/main.ts"],"names":[],"mappings":";AACA,mEAAmE"}
package/dist/src/main.js CHANGED
@@ -1,77 +1,5 @@
1
1
  #!/usr/bin/env node
2
- /** `cave` binary entry point — see `cli.ts` for the command implementations. */
3
- import { cave, highlightCommand, reconstructCommand, suggestAliasCommand } from "./cli.js";
4
- const write = (code, out, err) => {
5
- if (out !== '') {
6
- process.stdout.write(out);
7
- }
8
- if (err !== '') {
9
- process.stderr.write(err);
10
- }
11
- process.exitCode = code;
12
- };
13
- // mcp, ingest, connect, eval, automate and serve own their help text, so `cave help X` becomes `cave X --help`.
14
- const raw = process.argv.slice(2);
15
- const argv = raw[0] === 'help' && (raw[1] === 'mcp' || raw[1] === 'ingest' || raw[1] === 'connect' || raw[1] === 'eval' || raw[1] === 'automate' || raw[1] === 'serve') ?
16
- [raw[1], '--help'] :
17
- raw;
18
- if (argv[0] === 'mcp') {
19
- // Long-running: serves MCP on stdio until the client disconnects.
20
- const { runMcp } = await import('@cavelang/mcp');
21
- process.exitCode = await runMcp(argv.slice(1));
22
- }
23
- else if (argv[0] === 'ingest') {
24
- // Long-running: drives an LLM agent over batches of files.
25
- const { runIngest } = await import('@cavelang/ingest');
26
- process.exitCode = await runIngest(argv.slice(1));
27
- }
28
- else if (argv[0] === 'eval') {
29
- // Long-running: drives an agent (and optionally a judge) over eval fixtures.
30
- const { runEval } = await import('@cavelang/eval');
31
- process.exitCode = await runEval(argv.slice(1));
32
- }
33
- else if (argv[0] === 'connect') {
34
- // Async (URL sources fetch) and potentially long-running (--watch).
35
- const { runConnect } = await import('@cavelang/connect');
36
- process.exitCode = await runConnect(argv.slice(1));
37
- }
38
- else if (argv[0] === 'automate') {
39
- // Async (prompt steps run a shell agent) and potentially long-running (the loop).
40
- const { runAutomate } = await import('@cavelang/automate');
41
- process.exitCode = await runAutomate(argv.slice(1));
42
- }
43
- else if (argv[0] === 'serve') {
44
- // Long-running: the human read surface serves HTTP until interrupted.
45
- const { runServe } = await import('@cavelang/view');
46
- process.exitCode = await runServe(argv.slice(1));
47
- }
48
- else if (argv[0] === 'reconstruct') {
49
- // Async: the LLM policy runs a shell agent once per step.
50
- const { code, out, err } = await reconstructCommand(argv.slice(1));
51
- write(code, out, err);
52
- }
53
- else if (argv[0] === 'suggest-alias') {
54
- // Async: the optional judge runs a shell agent.
55
- const { code, out, err } = await suggestAliasCommand(argv.slice(1));
56
- write(code, out, err);
57
- }
58
- else if (argv[0] === 'highlight' && !argv.includes('--help') && !argv.includes('-h')) {
59
- // Async (grammar WASM loads on first use); --help stays on the sync path.
60
- const { code, out, err } = await highlightCommand(argv.slice(1));
61
- write(code, out, err);
62
- }
63
- else {
64
- const { code, out, err } = cave(argv);
65
- // Canonical CAVE text going to a terminal gets syntax colors from the same
66
- // grammar query `cave highlight` uses; piping or NO_COLOR keeps bytes clean.
67
- const colorize = code === 0 && argv[0] === 'export' && !argv.includes('--out') &&
68
- out !== '' && process.stdout.isTTY === true && process.env['NO_COLOR'] === undefined;
69
- if (colorize) {
70
- const { highlighter } = await import('@cavelang/highlight');
71
- write(code, (await highlighter()).ansi(out), err);
72
- }
73
- else {
74
- write(code, out, err);
75
- }
76
- }
2
+ /** `cave` binary entry point — one lifecycle for every command. */
3
+ import { runCli } from "./dispatch.js";
4
+ process.exitCode = await runCli(process.argv.slice(2));
77
5
  //# sourceMappingURL=main.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"main.js","sourceRoot":"","sources":["../../src/main.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"main.js","sourceRoot":"","sources":["../../src/main.ts"],"names":[],"mappings":";AACA,mEAAmE;AAEnE,OAAO,EAAE,MAAM,EAAE,MAAM,eAAe,CAAA;AAEtC,OAAO,CAAC,QAAQ,GAAG,MAAM,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAA"}
@@ -0,0 +1,3 @@
1
+ /** Compatibility subpath for the MCP server API. */
2
+ export * from '@cavelang/cli/mcp';
3
+ //# sourceMappingURL=mcp.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mcp.d.ts","sourceRoot":"","sources":["../../src/mcp.ts"],"names":[],"mappings":"AAAA,oDAAoD;AACpD,cAAc,eAAe,CAAA"}
@@ -0,0 +1,3 @@
1
+ /** Compatibility subpath for the MCP server API. */
2
+ export * from '@cavelang/cli/mcp';
3
+ //# sourceMappingURL=mcp.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mcp.js","sourceRoot":"","sources":["../../src/mcp.ts"],"names":[],"mappings":"AAAA,oDAAoD;AACpD,cAAc,eAAe,CAAA"}
@@ -0,0 +1,3 @@
1
+ /** Compatibility subpath for the internal rules engine. */
2
+ export * from '@cavelang/cli/rules';
3
+ //# sourceMappingURL=rules.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"rules.d.ts","sourceRoot":"","sources":["../../src/rules.ts"],"names":[],"mappings":"AAAA,2DAA2D;AAC3D,cAAc,iBAAiB,CAAA"}
@@ -0,0 +1,3 @@
1
+ /** Compatibility subpath for the internal rules engine. */
2
+ export * from '@cavelang/cli/rules';
3
+ //# sourceMappingURL=rules.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"rules.js","sourceRoot":"","sources":["../../src/rules.ts"],"names":[],"mappings":"AAAA,2DAA2D;AAC3D,cAAc,iBAAiB,CAAA"}
@@ -0,0 +1,3 @@
1
+ /** Compatibility subpath for shape checking and alias suggestions. */
2
+ export * from '@cavelang/cli/shape';
3
+ //# sourceMappingURL=shape.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"shape.d.ts","sourceRoot":"","sources":["../../src/shape.ts"],"names":[],"mappings":"AAAA,sEAAsE;AACtE,cAAc,iBAAiB,CAAA"}
@@ -0,0 +1,3 @@
1
+ /** Compatibility subpath for shape checking and alias suggestions. */
2
+ export * from '@cavelang/cli/shape';
3
+ //# sourceMappingURL=shape.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"shape.js","sourceRoot":"","sources":["../../src/shape.ts"],"names":[],"mappings":"AAAA,sEAAsE;AACtE,cAAc,iBAAiB,CAAA"}
@@ -0,0 +1,3 @@
1
+ /** Compatibility subpath for exact store synchronization. */
2
+ export * from '@cavelang/cli/sync';
3
+ //# sourceMappingURL=sync.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sync.d.ts","sourceRoot":"","sources":["../../src/sync.ts"],"names":[],"mappings":"AAAA,6DAA6D;AAC7D,cAAc,gBAAgB,CAAA"}
@@ -0,0 +1,3 @@
1
+ /** Compatibility subpath for exact store synchronization. */
2
+ export * from '@cavelang/cli/sync';
3
+ //# sourceMappingURL=sync.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sync.js","sourceRoot":"","sources":["../../src/sync.ts"],"names":[],"mappings":"AAAA,6DAA6D;AAC7D,cAAc,gBAAgB,CAAA"}
@@ -0,0 +1,3 @@
1
+ /** Compatibility subpath for reports and read-only views. */
2
+ export * from '@cavelang/cli/view';
3
+ //# sourceMappingURL=view.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"view.d.ts","sourceRoot":"","sources":["../../src/view.ts"],"names":[],"mappings":"AAAA,6DAA6D;AAC7D,cAAc,gBAAgB,CAAA"}
@@ -0,0 +1,3 @@
1
+ /** Compatibility subpath for reports and read-only views. */
2
+ export * from '@cavelang/cli/view';
3
+ //# sourceMappingURL=view.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"view.js","sourceRoot":"","sources":["../../src/view.ts"],"names":[],"mappings":"AAAA,6DAA6D;AAC7D,cAAc,gBAAgB,CAAA"}