@cavelang/cli 0.27.3 → 0.29.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 (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 +416 -109
  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 +423 -104
  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,270 @@
1
+ /**
2
+ * Action lifecycle (spec §25.1) — declaring actions from a CAVE document,
3
+ * resolving and listing what a store currently believes its actions are,
4
+ * and retracting a declaration.
5
+ *
6
+ * An action file is an ordinary CAVE document: top-level
7
+ * `action/<name> HAS action: `…`` claims are the declarations; everything
8
+ * else — parameter docs (`action/<name>/<param> IS param`), hook
9
+ * references (`HAS hook:`), verb declarations, comments — is prelude,
10
+ * ingested first. Declaring is idempotent: an unchanged declaration (or
11
+ * prelude) appends nothing.
12
+ *
13
+ * Unlike rules, an action's identity is its *name*: the declaration
14
+ * evolves as one belief series per subject, and because a declaration may
15
+ * also be appended by other surfaces (`cave add`, an agent's `cave_add`),
16
+ * whose §9.5 stamps fork the series per actor, resolution takes the
17
+ * newest current row across every series of the subject — latest belief
18
+ * wins, whoever appended it.
19
+ */
20
+ import { Claim, Key, Value } from '@cavelang/core';
21
+ import { parseDocument } from '@cavelang/parser';
22
+ import { Rule } from '@cavelang/cli/rules';
23
+ import { Row } from '@cavelang/store';
24
+ import * as Action from "./action.js";
25
+ /** Source context stamped on declarations and bookkeeping (spec §9.5). */
26
+ export const provenanceContext = 'src:cave-act';
27
+ /** Subject of the prelude digest bookkeeping claim. */
28
+ const preludeSubject = 'act/prelude';
29
+ const preludeDigestAttribute = 'act-digest';
30
+ const declarationKey = (subject, attribute) => Key.of(Claim.of({
31
+ subject: Claim.entity(subject),
32
+ verb: 'HAS',
33
+ payload: Claim.attribute(attribute, Value.parse('x')),
34
+ contexts: [provenanceContext]
35
+ }));
36
+ /**
37
+ * The newest current row of `attribute` on `subject`, across every
38
+ * belief series (§9.5 stamps make one series per appending actor).
39
+ * @returns the winner even when it is retracted or negated — callers
40
+ * decide whether a disabled declaration matters.
41
+ */
42
+ export const currentAttribute = (store, subject, attribute) => {
43
+ let winner;
44
+ for (const row of store.currentBeliefs()) {
45
+ if (row.subject === subject && row.verb === 'HAS' && row.attribute === attribute &&
46
+ (winner === undefined || winner.tx < row.tx)) {
47
+ winner = row;
48
+ }
49
+ }
50
+ return winner;
51
+ };
52
+ const enabled = (row) => row !== undefined && row.conf > 0 && row.negated === 0 && row.value_text !== null;
53
+ /** Current positive action declaration rows, newest series winner per subject. */
54
+ const currentActionRows = (store) => {
55
+ const bySubject = new Map();
56
+ for (const row of store.currentBeliefs()) {
57
+ if (row.verb !== 'HAS' || row.attribute !== Action.actionAttribute ||
58
+ Action.actionName(row.subject) === undefined) {
59
+ continue;
60
+ }
61
+ const seen = bySubject.get(row.subject);
62
+ if (seen === undefined || seen.tx < row.tx) {
63
+ bySubject.set(row.subject, row);
64
+ }
65
+ }
66
+ return [...bySubject.values()].filter(enabled);
67
+ };
68
+ /**
69
+ * Resolves one action by name (or full subject) to its current
70
+ * declaration. @returns `undefined` when unknown, retracted, or negated;
71
+ * problems when the stored body does not parse.
72
+ */
73
+ export const loadAction = (store, name) => {
74
+ const subject = Action.actionSubject(name);
75
+ const row = currentAttribute(store, subject, Action.actionAttribute);
76
+ if (!enabled(row)) {
77
+ return undefined;
78
+ }
79
+ const parsed = Action.parse(subject, Row.parseValue(row.value_text).raw);
80
+ if (!parsed.ok) {
81
+ return { problems: parsed.problems };
82
+ }
83
+ return {
84
+ loaded: {
85
+ action: parsed.action,
86
+ row,
87
+ ...row.comment === null ? {} : { description: row.comment }
88
+ },
89
+ problems: []
90
+ };
91
+ };
92
+ /** The hook name the action currently references, if any (§25.4). */
93
+ export const currentHook = (store, subject) => {
94
+ const row = currentAttribute(store, subject, Action.hookAttribute);
95
+ return enabled(row) ? Row.parseValue(row.value_text).raw : undefined;
96
+ };
97
+ /** Parameter doc — the comment of `action/<name>/<param> IS param` (§25.1). */
98
+ const paramDoc = (store, subject, param) => {
99
+ let winner;
100
+ for (const row of store.currentBeliefs()) {
101
+ if (row.subject === `${subject}/${param}` && row.verb === 'IS' && row.object === 'param' &&
102
+ row.negated === 0 && row.conf > 0 && (winner === undefined || winner.tx < row.tx)) {
103
+ winner = row;
104
+ }
105
+ }
106
+ return winner?.comment ?? undefined;
107
+ };
108
+ /** Current positive actions of a store, in declaration order. */
109
+ export const listActions = (store) => currentActionRows(store).map(row => {
110
+ const text = Row.parseValue(row.value_text).raw;
111
+ const parsed = Action.parse(row.subject, text);
112
+ const params = parsed.ok ?
113
+ parsed.action.params.map(name => {
114
+ const doc = paramDoc(store, row.subject, name);
115
+ return { name, ...doc === undefined ? {} : { doc } };
116
+ }) :
117
+ [];
118
+ const hook = currentHook(store, row.subject);
119
+ return {
120
+ subject: row.subject,
121
+ name: Action.actionName(row.subject),
122
+ text,
123
+ ...row.comment === null ? {} : { description: row.comment },
124
+ params,
125
+ ...hook === undefined ? {} : { hook },
126
+ ok: parsed.ok,
127
+ problems: parsed.ok ? [] : parsed.problems
128
+ };
129
+ });
130
+ const indentOf = (line) => line.length - line.trimStart().length;
131
+ const isStructural = (line) => {
132
+ const body = line.trim();
133
+ return body !== '' && !body.startsWith(';');
134
+ };
135
+ /**
136
+ * Reads one top-level line as an action declaration claim —
137
+ * `action/<name> HAS action: `…``. @returns `undefined` when the line is
138
+ * anything else (prelude).
139
+ */
140
+ const asDeclaration = (line) => {
141
+ const document = parseDocument(line);
142
+ if (document.diagnostics.length > 0) {
143
+ return undefined;
144
+ }
145
+ const entry = document.lines.find(candidate => candidate.kind === 'claim');
146
+ if (entry === undefined || entry.kind !== 'claim') {
147
+ return undefined;
148
+ }
149
+ const claim = entry.claim;
150
+ if (claim.verb !== 'HAS' || claim.negated || claim.payload.kind !== 'attribute' ||
151
+ claim.payload.attribute !== Action.actionAttribute ||
152
+ claim.subject.kind !== 'entity' || Action.actionName(claim.subject.text) === undefined) {
153
+ return undefined;
154
+ }
155
+ return {
156
+ subject: claim.subject.text,
157
+ body: claim.payload.value.raw,
158
+ ...claim.meta.comment === undefined ? {} : { comment: claim.meta.comment }
159
+ };
160
+ };
161
+ /**
162
+ * Declares the actions of a CAVE document into the store — prelude
163
+ * first, then one normalized `action/<name> HAS action: …` claim per
164
+ * declaration (§25.1), each skipped when already current. Declarations
165
+ * re-emit in the normalized form; metadata beyond the description
166
+ * comment is not preserved — append exotic declarations with `cave add`.
167
+ */
168
+ export const declareActions = (store, text) => {
169
+ const problems = [];
170
+ const actions = [];
171
+ const preludeLines = [];
172
+ const declarations = [];
173
+ // Top-level blocks: a structural unindented line plus what follows it.
174
+ // A declaration's structural children would silently re-attach to the
175
+ // preceding prelude line if the declaration were extracted alone, so a
176
+ // declaration block with children is rejected whole.
177
+ const blocks = [];
178
+ text.split(/\r?\n/).forEach((line, index) => {
179
+ if (isStructural(line) && indentOf(line) === 0) {
180
+ blocks.push({ lines: [line], at: index + 1 });
181
+ }
182
+ else if (blocks.length === 0) {
183
+ preludeLines.push(line);
184
+ }
185
+ else {
186
+ blocks[blocks.length - 1].lines.push(line);
187
+ }
188
+ });
189
+ for (const block of blocks) {
190
+ const declaration = asDeclaration(block.lines[0]);
191
+ if (declaration === undefined) {
192
+ preludeLines.push(...block.lines);
193
+ continue;
194
+ }
195
+ if (block.lines.slice(1).some(isStructural)) {
196
+ problems.push({ line: block.at, message: 'action declarations take no qualifier children (spec §25.1)' });
197
+ continue;
198
+ }
199
+ declarations.push({ declaration, at: block.at });
200
+ preludeLines.push(...block.lines.slice(1));
201
+ }
202
+ return store.transaction(() => {
203
+ let prelude = 0;
204
+ const preludeText = preludeLines.join('\n');
205
+ if (preludeText.trim() !== '') {
206
+ const digest = Rule.digestOf(preludeText);
207
+ const known = store.currentBelief(declarationKey(preludeSubject, preludeDigestAttribute));
208
+ if (known === undefined || known.conf <= 0 || known.value_text !== digest) {
209
+ const result = store.ingest(preludeText, { source: 'cave-act' });
210
+ problems.push(...result.problems);
211
+ prelude = result.ids.length;
212
+ store.ingest(`${preludeSubject} HAS ${preludeDigestAttribute}: ${digest} @${provenanceContext}`);
213
+ }
214
+ }
215
+ let declared = 0;
216
+ let unchanged = 0;
217
+ for (const { declaration, at } of declarations) {
218
+ const parsed = Action.parse(declaration.subject, declaration.body);
219
+ if (!parsed.ok) {
220
+ problems.push(...parsed.problems.map(message => ({ line: at, message })));
221
+ continue;
222
+ }
223
+ const action = parsed.action;
224
+ actions.push(action);
225
+ const literal = !action.text.includes('`') ? `\`${action.text}\`` :
226
+ !action.text.includes('"') ? `"${action.text}"` :
227
+ undefined;
228
+ if (literal === undefined) {
229
+ problems.push({ line: at, message: 'action body contains both " and ` — cannot be stored as a literal' });
230
+ continue;
231
+ }
232
+ const known = currentAttribute(store, action.subject, Action.actionAttribute);
233
+ if (enabled(known) && known.value_text === literal &&
234
+ (known.comment ?? undefined) === declaration.comment) {
235
+ unchanged += 1;
236
+ continue;
237
+ }
238
+ const description = declaration.comment === undefined ? '' : ` ; ${declaration.comment}`;
239
+ store.ingest(`${action.subject} HAS ${Action.actionAttribute}: ${literal} @${provenanceContext}${description}`);
240
+ declared += 1;
241
+ }
242
+ return { declared, unchanged, prelude, actions, problems };
243
+ });
244
+ };
245
+ /**
246
+ * Retracts an action's declaration — by name or subject — disabling it.
247
+ * Every current positive series of the declaration is retracted (§9.5
248
+ * stamps fork one per appending actor). Effects of past executions are
249
+ * recorded knowledge and stay untouched (spec §25.1; contrast §24.5).
250
+ */
251
+ export const retractAction = (store, ref) => {
252
+ const subject = Action.actionSubject(ref);
253
+ const rows = store.currentBeliefs().filter(row => row.subject === subject && row.verb === 'HAS' && row.attribute === Action.actionAttribute &&
254
+ row.negated === 0 && row.conf > 0);
255
+ if (rows.length === 0) {
256
+ return { ok: false, error: `no current action matches ${JSON.stringify(ref)}` };
257
+ }
258
+ return store.transaction(() => {
259
+ for (const row of rows) {
260
+ store.insertResult({
261
+ claims: [{ claim: { ...store.toClaim(row), conf: 0, raw: '', comment: 'retracted: cave act --retract' }, line: 0 }],
262
+ edges: [],
263
+ registry: store.registry(),
264
+ problems: []
265
+ });
266
+ }
267
+ return { ok: true, subject, retracted: rows.length };
268
+ });
269
+ };
270
+ //# sourceMappingURL=declare.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"declare.js","sourceRoot":"","sources":["../../src/declare.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,103 @@
1
+ /**
2
+ * Action execution (spec §25.2–§25.4) — the governed write path.
3
+ *
4
+ * `act` resolves the named action's current declaration, validates the
5
+ * caller's arguments against its parameters, evaluates the premises over
6
+ * current beliefs with the parameters pre-bound (the §24.2 left-to-right
7
+ * join — a premise with no solution fails the action), and appends the
8
+ * instantiated effects atomically:
9
+ *
10
+ * - effect confidence is the template's own — an action is the caller's
11
+ * assertion; premises are gates, not evidence (no noisy-AND, §25.2);
12
+ * - appended rows are stamped `@src:action/<name>` (§9.5) and linked
13
+ * `BECAUSE` to the premise rows of the justifying solution and `VIA`
14
+ * to the declaration row (§24.3's obligations);
15
+ * - execution is idempotent: an effect equal to its current belief
16
+ * appends nothing;
17
+ * - the §20.3 shape gate runs by default — effects that introduce new
18
+ * `EXPECTS` violations roll the whole execution back (§25.3);
19
+ * - after a commit that changed belief, a named-and-configured hook runs
20
+ * as a shell command — placeholders shell-quoted, appended claims on
21
+ * stdin, failures reported but never rolled back into the store
22
+ * (§25.4).
23
+ */
24
+ import { type Violation } from '@cavelang/cli/shape';
25
+ import { type Store } from '@cavelang/store';
26
+ export type ActOptions = {
27
+ /** Validate and report inside a rolled-back transaction; never fires hooks. */
28
+ readonly dryRun?: boolean;
29
+ /** Shape gate (spec §25.3) — on by default; `false` skips the `EXPECTS` re-check. */
30
+ readonly check?: boolean;
31
+ /** Premises match through the alias closure (spec §13.6). */
32
+ readonly aliases?: boolean;
33
+ /** Out-of-band hook command templates by name (spec §25.4). */
34
+ readonly hooks?: Readonly<Record<string, string>>;
35
+ /** Working directory for hook commands. */
36
+ readonly cwd?: string;
37
+ /** Hook wall-clock budget (default 600 s). */
38
+ readonly hookTimeoutSeconds?: number;
39
+ };
40
+ export declare const defaultHookTimeoutSeconds = 600;
41
+ export type EffectOutcome = {
42
+ /** Canonical line of the instantiated effect. */
43
+ readonly line: string;
44
+ readonly outcome: 'appended' | 'updated' | 'unchanged';
45
+ };
46
+ export type HookOutcome = {
47
+ readonly name: string;
48
+ readonly fired: boolean;
49
+ /** Why the hook did not fire (`not configured`, `nothing changed`). */
50
+ readonly note?: string;
51
+ readonly code?: null | number;
52
+ /** Trailing stdout+stderr of the hook command. */
53
+ readonly output?: string;
54
+ readonly error?: string;
55
+ };
56
+ export type ActFailure = {
57
+ readonly ok: false;
58
+ readonly action: string;
59
+ readonly error: string;
60
+ /** The first premise that found no match, when that is the failure. */
61
+ readonly failedPremise?: string;
62
+ /** New `EXPECTS` violations, when the shape gate rejected (spec §25.3). */
63
+ readonly violations?: readonly Violation[];
64
+ };
65
+ export type ActSuccess = {
66
+ readonly ok: true;
67
+ readonly action: string;
68
+ readonly subject: string;
69
+ readonly dryRun: boolean;
70
+ /** Solutions of the premise join — 1 when there are no premises. */
71
+ readonly solutions: number;
72
+ readonly effects: readonly EffectOutcome[];
73
+ readonly appended: number;
74
+ readonly updated: number;
75
+ readonly unchanged: number;
76
+ readonly hook?: HookOutcome;
77
+ };
78
+ export type ActReport = ActFailure | ActSuccess;
79
+ /**
80
+ * An untrusted recommendation from a solver or another planning system.
81
+ * Possessing a proposal grants no authority: `actProposal` resolves the
82
+ * current declaration and repeats ordinary parameter, premise, shape, and
83
+ * hook checks at execution time.
84
+ */
85
+ export type ActionProposal = {
86
+ readonly action: string;
87
+ readonly parameters: Readonly<Record<string, unknown>>;
88
+ };
89
+ /** POSIX single-quoting — hook placeholders never splice raw (spec §25.4). */
90
+ export declare const shellQuote: (value: string) => string;
91
+ /**
92
+ * Substitutes `{action}` and `{<param>}` placeholders in one pass —
93
+ * substituted values are never re-scanned, unknown placeholders stay.
94
+ */
95
+ export declare const substitute: (template: string, action: string, args: Readonly<Record<string, unknown>>) => string;
96
+ /**
97
+ * Executes one action (spec §25.2). See the module doc for semantics;
98
+ * `dryRun` computes the same report inside a rolled-back transaction.
99
+ */
100
+ export declare const act: (store: Store, name: string, args?: Readonly<Record<string, unknown>>, options?: ActOptions) => ActReport;
101
+ /** Execute an untrusted proposal through the governed action boundary. */
102
+ export declare const actProposal: (store: Store, proposal: ActionProposal, options?: ActOptions) => ActReport;
103
+ //# sourceMappingURL=engine.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"engine.d.ts","sourceRoot":"","sources":["../../src/engine.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;GAsBG;AAQH,OAAO,EAA0B,KAAK,SAAS,EAAE,MAAM,iBAAiB,CAAA;AACxE,OAAO,EAAO,KAAK,KAAK,EAAE,MAAM,iBAAiB,CAAA;AAKjD,MAAM,MAAM,UAAU,GAAG;IACvB,+EAA+E;IAC/E,QAAQ,CAAC,MAAM,CAAC,EAAE,OAAO,CAAA;IACzB,qFAAqF;IACrF,QAAQ,CAAC,KAAK,CAAC,EAAE,OAAO,CAAA;IACxB,6DAA6D;IAC7D,QAAQ,CAAC,OAAO,CAAC,EAAE,OAAO,CAAA;IAC1B,+DAA+D;IAC/D,QAAQ,CAAC,KAAK,CAAC,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAA;IACjD,2CAA2C;IAC3C,QAAQ,CAAC,GAAG,CAAC,EAAE,MAAM,CAAA;IACrB,8CAA8C;IAC9C,QAAQ,CAAC,kBAAkB,CAAC,EAAE,MAAM,CAAA;CACrC,CAAA;AAED,eAAO,MAAM,yBAAyB,MAAM,CAAA;AAE5C,MAAM,MAAM,aAAa,GAAG;IAC1B,iDAAiD;IACjD,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;IACrB,QAAQ,CAAC,OAAO,EAAE,UAAU,GAAG,SAAS,GAAG,WAAW,CAAA;CACvD,CAAA;AAED,MAAM,MAAM,WAAW,GAAG;IACxB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;IACrB,QAAQ,CAAC,KAAK,EAAE,OAAO,CAAA;IACvB,uEAAuE;IACvE,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,CAAA;IACtB,QAAQ,CAAC,IAAI,CAAC,EAAE,IAAI,GAAG,MAAM,CAAA;IAC7B,kDAAkD;IAClD,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAA;IACxB,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAA;CACxB,CAAA;AAED,MAAM,MAAM,UAAU,GAAG;IACvB,QAAQ,CAAC,EAAE,EAAE,KAAK,CAAA;IAClB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAA;IACvB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAA;IACtB,uEAAuE;IACvE,QAAQ,CAAC,aAAa,CAAC,EAAE,MAAM,CAAA;IAC/B,2EAA2E;IAC3E,QAAQ,CAAC,UAAU,CAAC,EAAE,SAAS,SAAS,EAAE,CAAA;CAC3C,CAAA;AAED,MAAM,MAAM,UAAU,GAAG;IACvB,QAAQ,CAAC,EAAE,EAAE,IAAI,CAAA;IACjB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAA;IACvB,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAA;IACxB,QAAQ,CAAC,MAAM,EAAE,OAAO,CAAA;IACxB,oEAAoE;IACpE,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAA;IAC1B,QAAQ,CAAC,OAAO,EAAE,SAAS,aAAa,EAAE,CAAA;IAC1C,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAA;IACzB,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAA;IACxB,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAA;IAC1B,QAAQ,CAAC,IAAI,CAAC,EAAE,WAAW,CAAA;CAC5B,CAAA;AAED,MAAM,MAAM,SAAS,GAAG,UAAU,GAAG,UAAU,CAAA;AAE/C;;;;;GAKG;AACH,MAAM,MAAM,cAAc,GAAG;IAC3B,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAA;IACvB,QAAQ,CAAC,UAAU,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAA;CACvD,CAAA;AAqFD,8EAA8E;AAC9E,eAAO,MAAM,UAAU,GAAI,OAAO,MAAM,KAAG,MACJ,CAAA;AAEvC;;;GAGG;AACH,eAAO,MAAM,UAAU,GACrB,UAAU,MAAM,EAChB,QAAQ,MAAM,EACd,MAAM,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,KACtC,MAIO,CAAA;AAiDV;;;GAGG;AACH,eAAO,MAAM,GAAG,GACd,OAAO,KAAK,EACZ,MAAM,MAAM,EACZ,OAAM,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAM,EAC5C,UAAS,UAAe,KACvB,SAiKF,CAAA;AAED,0EAA0E;AAC1E,eAAO,MAAM,WAAW,GACtB,OAAO,KAAK,EACZ,UAAU,cAAc,EACxB,UAAS,UAAe,KACvB,SAAsE,CAAA"}