@maadb/core 0.0.1 → 0.7.10-rc.3

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 (419) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +371 -3
  3. package/dist/architect.d.ts +2 -0
  4. package/dist/architect.d.ts.map +1 -0
  5. package/dist/architect.js +273 -0
  6. package/dist/architect.js.map +1 -0
  7. package/dist/auth/resolve.d.ts +36 -0
  8. package/dist/auth/resolve.d.ts.map +1 -0
  9. package/dist/auth/resolve.js +77 -0
  10. package/dist/auth/resolve.js.map +1 -0
  11. package/dist/auth/token-store.d.ts +82 -0
  12. package/dist/auth/token-store.d.ts.map +1 -0
  13. package/dist/auth/token-store.js +464 -0
  14. package/dist/auth/token-store.js.map +1 -0
  15. package/dist/auth/types.d.ts +75 -0
  16. package/dist/auth/types.d.ts.map +1 -0
  17. package/dist/auth/types.js +15 -0
  18. package/dist/auth/types.js.map +1 -0
  19. package/dist/backend/adapter.d.ts +57 -0
  20. package/dist/backend/adapter.d.ts.map +1 -0
  21. package/dist/backend/adapter.js +6 -0
  22. package/dist/backend/adapter.js.map +1 -0
  23. package/dist/backend/index.d.ts +3 -0
  24. package/dist/backend/index.d.ts.map +1 -0
  25. package/dist/backend/index.js +2 -0
  26. package/dist/backend/index.js.map +1 -0
  27. package/dist/backend/sqlite/index.d.ts +63 -0
  28. package/dist/backend/sqlite/index.d.ts.map +1 -0
  29. package/dist/backend/sqlite/index.js +521 -0
  30. package/dist/backend/sqlite/index.js.map +1 -0
  31. package/dist/backend/sqlite/schema.d.ts +2 -0
  32. package/dist/backend/sqlite/schema.d.ts.map +1 -0
  33. package/dist/backend/sqlite/schema.js +88 -0
  34. package/dist/backend/sqlite/schema.js.map +1 -0
  35. package/dist/claude-md.d.ts +2 -0
  36. package/dist/claude-md.d.ts.map +1 -0
  37. package/dist/claude-md.js +97 -0
  38. package/dist/claude-md.js.map +1 -0
  39. package/dist/cli/commands/audit.d.ts +4 -0
  40. package/dist/cli/commands/audit.d.ts.map +1 -0
  41. package/dist/cli/commands/audit.js +39 -0
  42. package/dist/cli/commands/audit.js.map +1 -0
  43. package/dist/cli/commands/auth.d.ts +8 -0
  44. package/dist/cli/commands/auth.d.ts.map +1 -0
  45. package/dist/cli/commands/auth.js +242 -0
  46. package/dist/cli/commands/auth.js.map +1 -0
  47. package/dist/cli/commands/discover.d.ts +5 -0
  48. package/dist/cli/commands/discover.d.ts.map +1 -0
  49. package/dist/cli/commands/discover.js +48 -0
  50. package/dist/cli/commands/discover.js.map +1 -0
  51. package/dist/cli/commands/maintain.d.ts +6 -0
  52. package/dist/cli/commands/maintain.d.ts.map +1 -0
  53. package/dist/cli/commands/maintain.js +168 -0
  54. package/dist/cli/commands/maintain.js.map +1 -0
  55. package/dist/cli/commands/read.d.ts +7 -0
  56. package/dist/cli/commands/read.d.ts.map +1 -0
  57. package/dist/cli/commands/read.js +139 -0
  58. package/dist/cli/commands/read.js.map +1 -0
  59. package/dist/cli/commands/write.d.ts +4 -0
  60. package/dist/cli/commands/write.d.ts.map +1 -0
  61. package/dist/cli/commands/write.js +99 -0
  62. package/dist/cli/commands/write.js.map +1 -0
  63. package/dist/cli/helpers.d.ts +8 -0
  64. package/dist/cli/helpers.d.ts.map +1 -0
  65. package/dist/cli/helpers.js +17 -0
  66. package/dist/cli/helpers.js.map +1 -0
  67. package/dist/cli/index.d.ts +3 -0
  68. package/dist/cli/index.d.ts.map +1 -0
  69. package/dist/cli/index.js +296 -0
  70. package/dist/cli/index.js.map +1 -0
  71. package/dist/cli.d.ts +3 -0
  72. package/dist/cli.d.ts.map +1 -0
  73. package/dist/cli.js +7 -0
  74. package/dist/cli.js.map +1 -0
  75. package/dist/engine/audit.d.ts +15 -0
  76. package/dist/engine/audit.d.ts.map +1 -0
  77. package/dist/engine/audit.js +42 -0
  78. package/dist/engine/audit.js.map +1 -0
  79. package/dist/engine/backup.d.ts +9 -0
  80. package/dist/engine/backup.d.ts.map +1 -0
  81. package/dist/engine/backup.js +100 -0
  82. package/dist/engine/backup.js.map +1 -0
  83. package/dist/engine/composites.d.ts +6 -0
  84. package/dist/engine/composites.d.ts.map +1 -0
  85. package/dist/engine/composites.js +102 -0
  86. package/dist/engine/composites.js.map +1 -0
  87. package/dist/engine/context.d.ts +47 -0
  88. package/dist/engine/context.d.ts.map +1 -0
  89. package/dist/engine/context.js +55 -0
  90. package/dist/engine/context.js.map +1 -0
  91. package/dist/engine/docid-safe.d.ts +8 -0
  92. package/dist/engine/docid-safe.d.ts.map +1 -0
  93. package/dist/engine/docid-safe.js +0 -0
  94. package/dist/engine/docid-safe.js.map +1 -0
  95. package/dist/engine/helpers.d.ts +8 -0
  96. package/dist/engine/helpers.d.ts.map +1 -0
  97. package/dist/engine/helpers.js +102 -0
  98. package/dist/engine/helpers.js.map +1 -0
  99. package/dist/engine/index.d.ts +215 -0
  100. package/dist/engine/index.d.ts.map +1 -0
  101. package/dist/engine/index.js +494 -0
  102. package/dist/engine/index.js.map +1 -0
  103. package/dist/engine/indexing.d.ts +14 -0
  104. package/dist/engine/indexing.d.ts.map +1 -0
  105. package/dist/engine/indexing.js +225 -0
  106. package/dist/engine/indexing.js.map +1 -0
  107. package/dist/engine/journal.d.ts +32 -0
  108. package/dist/engine/journal.d.ts.map +1 -0
  109. package/dist/engine/journal.js +111 -0
  110. package/dist/engine/journal.js.map +1 -0
  111. package/dist/engine/logger.d.ts +19 -0
  112. package/dist/engine/logger.d.ts.map +1 -0
  113. package/dist/engine/logger.js +40 -0
  114. package/dist/engine/logger.js.map +1 -0
  115. package/dist/engine/maintenance.d.ts +15 -0
  116. package/dist/engine/maintenance.d.ts.map +1 -0
  117. package/dist/engine/maintenance.js +87 -0
  118. package/dist/engine/maintenance.js.map +1 -0
  119. package/dist/engine/mutex.d.ts +24 -0
  120. package/dist/engine/mutex.d.ts.map +1 -0
  121. package/dist/engine/mutex.js +50 -0
  122. package/dist/engine/mutex.js.map +1 -0
  123. package/dist/engine/pathguard.d.ts +16 -0
  124. package/dist/engine/pathguard.d.ts.map +1 -0
  125. package/dist/engine/pathguard.js +41 -0
  126. package/dist/engine/pathguard.js.map +1 -0
  127. package/dist/engine/reads.d.ts +25 -0
  128. package/dist/engine/reads.d.ts.map +1 -0
  129. package/dist/engine/reads.js +904 -0
  130. package/dist/engine/reads.js.map +1 -0
  131. package/dist/engine/types.d.ts +396 -0
  132. package/dist/engine/types.d.ts.map +1 -0
  133. package/dist/engine/types.js +5 -0
  134. package/dist/engine/types.js.map +1 -0
  135. package/dist/engine/writes.d.ts +10 -0
  136. package/dist/engine/writes.d.ts.map +1 -0
  137. package/dist/engine/writes.js +606 -0
  138. package/dist/engine/writes.js.map +1 -0
  139. package/dist/engine.d.ts +3 -0
  140. package/dist/engine.d.ts.map +1 -0
  141. package/dist/engine.js +6 -0
  142. package/dist/engine.js.map +1 -0
  143. package/dist/errors.d.ts +20 -0
  144. package/dist/errors.d.ts.map +1 -0
  145. package/dist/errors.js +17 -0
  146. package/dist/errors.js.map +1 -0
  147. package/dist/extractor/fields.d.ts +3 -0
  148. package/dist/extractor/fields.d.ts.map +1 -0
  149. package/dist/extractor/fields.js +58 -0
  150. package/dist/extractor/fields.js.map +1 -0
  151. package/dist/extractor/index.d.ts +7 -0
  152. package/dist/extractor/index.d.ts.map +1 -0
  153. package/dist/extractor/index.js +22 -0
  154. package/dist/extractor/index.js.map +1 -0
  155. package/dist/extractor/normalizers.d.ts +22 -0
  156. package/dist/extractor/normalizers.d.ts.map +1 -0
  157. package/dist/extractor/normalizers.js +250 -0
  158. package/dist/extractor/normalizers.js.map +1 -0
  159. package/dist/extractor/objects.d.ts +3 -0
  160. package/dist/extractor/objects.d.ts.map +1 -0
  161. package/dist/extractor/objects.js +33 -0
  162. package/dist/extractor/objects.js.map +1 -0
  163. package/dist/extractor/relationships.d.ts +3 -0
  164. package/dist/extractor/relationships.d.ts.map +1 -0
  165. package/dist/extractor/relationships.js +58 -0
  166. package/dist/extractor/relationships.js.map +1 -0
  167. package/dist/git/commit.d.ts +63 -0
  168. package/dist/git/commit.d.ts.map +1 -0
  169. package/dist/git/commit.js +161 -0
  170. package/dist/git/commit.js.map +1 -0
  171. package/dist/git/diff.d.ts +4 -0
  172. package/dist/git/diff.d.ts.map +1 -0
  173. package/dist/git/diff.js +56 -0
  174. package/dist/git/diff.js.map +1 -0
  175. package/dist/git/index.d.ts +63 -0
  176. package/dist/git/index.d.ts.map +1 -0
  177. package/dist/git/index.js +151 -0
  178. package/dist/git/index.js.map +1 -0
  179. package/dist/git/log.d.ts +13 -0
  180. package/dist/git/log.d.ts.map +1 -0
  181. package/dist/git/log.js +116 -0
  182. package/dist/git/log.js.map +1 -0
  183. package/dist/git/snapshot.d.ts +4 -0
  184. package/dist/git/snapshot.d.ts.map +1 -0
  185. package/dist/git/snapshot.js +65 -0
  186. package/dist/git/snapshot.js.map +1 -0
  187. package/dist/instance/config.d.ts +19 -0
  188. package/dist/instance/config.d.ts.map +1 -0
  189. package/dist/instance/config.js +107 -0
  190. package/dist/instance/config.js.map +1 -0
  191. package/dist/instance/pool.d.ts +138 -0
  192. package/dist/instance/pool.d.ts.map +1 -0
  193. package/dist/instance/pool.js +335 -0
  194. package/dist/instance/pool.js.map +1 -0
  195. package/dist/instance/session.d.ts +140 -0
  196. package/dist/instance/session.d.ts.map +1 -0
  197. package/dist/instance/session.js +267 -0
  198. package/dist/instance/session.js.map +1 -0
  199. package/dist/logging.d.ts +108 -0
  200. package/dist/logging.d.ts.map +1 -0
  201. package/dist/logging.js +120 -0
  202. package/dist/logging.js.map +1 -0
  203. package/dist/maad-md.d.ts +11 -0
  204. package/dist/maad-md.d.ts.map +1 -0
  205. package/dist/maad-md.js +252 -0
  206. package/dist/maad-md.js.map +1 -0
  207. package/dist/mcp/bulk-cap.d.ts +10 -0
  208. package/dist/mcp/bulk-cap.d.ts.map +1 -0
  209. package/dist/mcp/bulk-cap.js +37 -0
  210. package/dist/mcp/bulk-cap.js.map +1 -0
  211. package/dist/mcp/config.d.ts +18 -0
  212. package/dist/mcp/config.d.ts.map +1 -0
  213. package/dist/mcp/config.js +20 -0
  214. package/dist/mcp/config.js.map +1 -0
  215. package/dist/mcp/ctx.d.ts +17 -0
  216. package/dist/mcp/ctx.d.ts.map +1 -0
  217. package/dist/mcp/ctx.js +7 -0
  218. package/dist/mcp/ctx.js.map +1 -0
  219. package/dist/mcp/guardrails.d.ts +42 -0
  220. package/dist/mcp/guardrails.d.ts.map +1 -0
  221. package/dist/mcp/guardrails.js +58 -0
  222. package/dist/mcp/guardrails.js.map +1 -0
  223. package/dist/mcp/idempotency.d.ts +69 -0
  224. package/dist/mcp/idempotency.d.ts.map +1 -0
  225. package/dist/mcp/idempotency.js +168 -0
  226. package/dist/mcp/idempotency.js.map +1 -0
  227. package/dist/mcp/instance-reload.d.ts +23 -0
  228. package/dist/mcp/instance-reload.d.ts.map +1 -0
  229. package/dist/mcp/instance-reload.js +126 -0
  230. package/dist/mcp/instance-reload.js.map +1 -0
  231. package/dist/mcp/kinds.d.ts +22 -0
  232. package/dist/mcp/kinds.d.ts.map +1 -0
  233. package/dist/mcp/kinds.js +112 -0
  234. package/dist/mcp/kinds.js.map +1 -0
  235. package/dist/mcp/lifecycle.d.ts +8 -0
  236. package/dist/mcp/lifecycle.d.ts.map +1 -0
  237. package/dist/mcp/lifecycle.js +65 -0
  238. package/dist/mcp/lifecycle.js.map +1 -0
  239. package/dist/mcp/memory-pressure.d.ts +37 -0
  240. package/dist/mcp/memory-pressure.d.ts.map +1 -0
  241. package/dist/mcp/memory-pressure.js +179 -0
  242. package/dist/mcp/memory-pressure.js.map +1 -0
  243. package/dist/mcp/notifications.d.ts +87 -0
  244. package/dist/mcp/notifications.d.ts.map +1 -0
  245. package/dist/mcp/notifications.js +154 -0
  246. package/dist/mcp/notifications.js.map +1 -0
  247. package/dist/mcp/query-depth.d.ts +28 -0
  248. package/dist/mcp/query-depth.d.ts.map +1 -0
  249. package/dist/mcp/query-depth.js +43 -0
  250. package/dist/mcp/query-depth.js.map +1 -0
  251. package/dist/mcp/rate-limit.d.ts +60 -0
  252. package/dist/mcp/rate-limit.d.ts.map +1 -0
  253. package/dist/mcp/rate-limit.js +203 -0
  254. package/dist/mcp/rate-limit.js.map +1 -0
  255. package/dist/mcp/reload-signal.d.ts +13 -0
  256. package/dist/mcp/reload-signal.d.ts.map +1 -0
  257. package/dist/mcp/reload-signal.js +68 -0
  258. package/dist/mcp/reload-signal.js.map +1 -0
  259. package/dist/mcp/response.d.ts +109 -0
  260. package/dist/mcp/response.d.ts.map +1 -0
  261. package/dist/mcp/response.js +132 -0
  262. package/dist/mcp/response.js.map +1 -0
  263. package/dist/mcp/roles.d.ts +7 -0
  264. package/dist/mcp/roles.d.ts.map +1 -0
  265. package/dist/mcp/roles.js +57 -0
  266. package/dist/mcp/roles.js.map +1 -0
  267. package/dist/mcp/server.d.ts +33 -0
  268. package/dist/mcp/server.d.ts.map +1 -0
  269. package/dist/mcp/server.js +252 -0
  270. package/dist/mcp/server.js.map +1 -0
  271. package/dist/mcp/shutdown.d.ts +32 -0
  272. package/dist/mcp/shutdown.d.ts.map +1 -0
  273. package/dist/mcp/shutdown.js +130 -0
  274. package/dist/mcp/shutdown.js.map +1 -0
  275. package/dist/mcp/tools/audit.d.ts +4 -0
  276. package/dist/mcp/tools/audit.d.ts.map +1 -0
  277. package/dist/mcp/tools/audit.js +45 -0
  278. package/dist/mcp/tools/audit.js.map +1 -0
  279. package/dist/mcp/tools/auth.d.ts +4 -0
  280. package/dist/mcp/tools/auth.d.ts.map +1 -0
  281. package/dist/mcp/tools/auth.js +181 -0
  282. package/dist/mcp/tools/auth.js.map +1 -0
  283. package/dist/mcp/tools/backup.d.ts +4 -0
  284. package/dist/mcp/tools/backup.d.ts.map +1 -0
  285. package/dist/mcp/tools/backup.js +52 -0
  286. package/dist/mcp/tools/backup.js.map +1 -0
  287. package/dist/mcp/tools/discover.d.ts +4 -0
  288. package/dist/mcp/tools/discover.d.ts.map +1 -0
  289. package/dist/mcp/tools/discover.js +83 -0
  290. package/dist/mcp/tools/discover.js.map +1 -0
  291. package/dist/mcp/tools/instance.d.ts +15 -0
  292. package/dist/mcp/tools/instance.d.ts.map +1 -0
  293. package/dist/mcp/tools/instance.js +207 -0
  294. package/dist/mcp/tools/instance.js.map +1 -0
  295. package/dist/mcp/tools/maintain.d.ts +4 -0
  296. package/dist/mcp/tools/maintain.d.ts.map +1 -0
  297. package/dist/mcp/tools/maintain.js +123 -0
  298. package/dist/mcp/tools/maintain.js.map +1 -0
  299. package/dist/mcp/tools/read.d.ts +4 -0
  300. package/dist/mcp/tools/read.d.ts.map +1 -0
  301. package/dist/mcp/tools/read.js +304 -0
  302. package/dist/mcp/tools/read.js.map +1 -0
  303. package/dist/mcp/tools/write.d.ts +4 -0
  304. package/dist/mcp/tools/write.d.ts.map +1 -0
  305. package/dist/mcp/tools/write.js +342 -0
  306. package/dist/mcp/tools/write.js.map +1 -0
  307. package/dist/mcp/transport/auth.d.ts +41 -0
  308. package/dist/mcp/transport/auth.d.ts.map +1 -0
  309. package/dist/mcp/transport/auth.js +115 -0
  310. package/dist/mcp/transport/auth.js.map +1 -0
  311. package/dist/mcp/transport/http.d.ts +62 -0
  312. package/dist/mcp/transport/http.d.ts.map +1 -0
  313. package/dist/mcp/transport/http.js +357 -0
  314. package/dist/mcp/transport/http.js.map +1 -0
  315. package/dist/mcp/transport/pin.d.ts +15 -0
  316. package/dist/mcp/transport/pin.d.ts.map +1 -0
  317. package/dist/mcp/transport/pin.js +71 -0
  318. package/dist/mcp/transport/pin.js.map +1 -0
  319. package/dist/mcp/transport/telemetry.d.ts +79 -0
  320. package/dist/mcp/transport/telemetry.d.ts.map +1 -0
  321. package/dist/mcp/transport/telemetry.js +97 -0
  322. package/dist/mcp/transport/telemetry.js.map +1 -0
  323. package/dist/mcp/with-session.d.ts +26 -0
  324. package/dist/mcp/with-session.d.ts.map +1 -0
  325. package/dist/mcp/with-session.js +275 -0
  326. package/dist/mcp/with-session.js.map +1 -0
  327. package/dist/parser/annotations.d.ts +3 -0
  328. package/dist/parser/annotations.d.ts.map +1 -0
  329. package/dist/parser/annotations.js +41 -0
  330. package/dist/parser/annotations.js.map +1 -0
  331. package/dist/parser/blocks.d.ts +3 -0
  332. package/dist/parser/blocks.d.ts.map +1 -0
  333. package/dist/parser/blocks.js +101 -0
  334. package/dist/parser/blocks.js.map +1 -0
  335. package/dist/parser/frontmatter.d.ts +9 -0
  336. package/dist/parser/frontmatter.d.ts.map +1 -0
  337. package/dist/parser/frontmatter.js +33 -0
  338. package/dist/parser/frontmatter.js.map +1 -0
  339. package/dist/parser/index.d.ts +11 -0
  340. package/dist/parser/index.d.ts.map +1 -0
  341. package/dist/parser/index.js +54 -0
  342. package/dist/parser/index.js.map +1 -0
  343. package/dist/parser/matter.d.ts +3 -0
  344. package/dist/parser/matter.d.ts.map +1 -0
  345. package/dist/parser/matter.js +32 -0
  346. package/dist/parser/matter.js.map +1 -0
  347. package/dist/parser/tags.d.ts +3 -0
  348. package/dist/parser/tags.d.ts.map +1 -0
  349. package/dist/parser/tags.js +32 -0
  350. package/dist/parser/tags.js.map +1 -0
  351. package/dist/parser/verbatim.d.ts +4 -0
  352. package/dist/parser/verbatim.d.ts.map +1 -0
  353. package/dist/parser/verbatim.js +121 -0
  354. package/dist/parser/verbatim.js.map +1 -0
  355. package/dist/parser/yaml-profile.d.ts +4 -0
  356. package/dist/parser/yaml-profile.d.ts.map +1 -0
  357. package/dist/parser/yaml-profile.js +73 -0
  358. package/dist/parser/yaml-profile.js.map +1 -0
  359. package/dist/registry/index.d.ts +2 -0
  360. package/dist/registry/index.d.ts.map +1 -0
  361. package/dist/registry/index.js +2 -0
  362. package/dist/registry/index.js.map +1 -0
  363. package/dist/registry/loader.d.ts +4 -0
  364. package/dist/registry/loader.d.ts.map +1 -0
  365. package/dist/registry/loader.js +147 -0
  366. package/dist/registry/loader.js.map +1 -0
  367. package/dist/registry/types.d.ts +2 -0
  368. package/dist/registry/types.d.ts.map +1 -0
  369. package/dist/registry/types.js +5 -0
  370. package/dist/registry/types.js.map +1 -0
  371. package/dist/scanner.d.ts +57 -0
  372. package/dist/scanner.d.ts.map +1 -0
  373. package/dist/scanner.js +223 -0
  374. package/dist/scanner.js.map +1 -0
  375. package/dist/schema/index.d.ts +3 -0
  376. package/dist/schema/index.d.ts.map +1 -0
  377. package/dist/schema/index.js +3 -0
  378. package/dist/schema/index.js.map +1 -0
  379. package/dist/schema/loader.d.ts +4 -0
  380. package/dist/schema/loader.d.ts.map +1 -0
  381. package/dist/schema/loader.js +303 -0
  382. package/dist/schema/loader.js.map +1 -0
  383. package/dist/schema/precision.d.ts +6 -0
  384. package/dist/schema/precision.d.ts.map +1 -0
  385. package/dist/schema/precision.js +59 -0
  386. package/dist/schema/precision.js.map +1 -0
  387. package/dist/schema/validator.d.ts +21 -0
  388. package/dist/schema/validator.d.ts.map +1 -0
  389. package/dist/schema/validator.js +200 -0
  390. package/dist/schema/validator.js.map +1 -0
  391. package/dist/schema-md.d.ts +8 -0
  392. package/dist/schema-md.d.ts.map +1 -0
  393. package/dist/schema-md.js +98 -0
  394. package/dist/schema-md.js.map +1 -0
  395. package/dist/skill-files.d.ts +3 -0
  396. package/dist/skill-files.d.ts.map +1 -0
  397. package/dist/skill-files.js +362 -0
  398. package/dist/skill-files.js.map +1 -0
  399. package/dist/skills-scaffold.d.ts +10 -0
  400. package/dist/skills-scaffold.d.ts.map +1 -0
  401. package/dist/skills-scaffold.js +52 -0
  402. package/dist/skills-scaffold.js.map +1 -0
  403. package/dist/types.d.ts +309 -0
  404. package/dist/types.d.ts.map +1 -0
  405. package/dist/types.js +111 -0
  406. package/dist/types.js.map +1 -0
  407. package/dist/writer/index.d.ts +7 -0
  408. package/dist/writer/index.d.ts.map +1 -0
  409. package/dist/writer/index.js +32 -0
  410. package/dist/writer/index.js.map +1 -0
  411. package/dist/writer/serializer.d.ts +4 -0
  412. package/dist/writer/serializer.d.ts.map +1 -0
  413. package/dist/writer/serializer.js +103 -0
  414. package/dist/writer/serializer.js.map +1 -0
  415. package/dist/writer/template.d.ts +3 -0
  416. package/dist/writer/template.d.ts.map +1 -0
  417. package/dist/writer/template.js +27 -0
  418. package/dist/writer/template.js.map +1 -0
  419. package/package.json +59 -7
@@ -0,0 +1,47 @@
1
+ import type { Registry, SchemaStore } from '../types.js';
2
+ import type { MaadBackend } from '../backend/index.js';
3
+ import type { GitLayer, CommitOptions, CommitOutcome } from '../git/index.js';
4
+ import type { CommitIdentity } from '../git/commit.js';
5
+ import type { OperationJournal } from './journal.js';
6
+ /**
7
+ * 0.6.10 — Mutable counters on the context so a write-path failure in
8
+ * `gitCommit` can be surfaced through `maad_health` without plumbing state
9
+ * back to the engine. Initialized once per engine init; bumped by `gitCommit`
10
+ * on the 'failed' outcome.
11
+ */
12
+ export interface CommitFailureTracker {
13
+ count: number;
14
+ lastAt: string | null;
15
+ lastCode: string | null;
16
+ lastMessage: string | null;
17
+ lastAction: 'create' | 'update' | 'delete' | null;
18
+ lastDocId: string | null;
19
+ }
20
+ export declare function newCommitFailureTracker(): CommitFailureTracker;
21
+ export interface EngineContext {
22
+ projectRoot: string;
23
+ registry: Registry;
24
+ schemaStore: SchemaStore;
25
+ backend: MaadBackend;
26
+ gitLayer: GitLayer | null;
27
+ journal: OperationJournal;
28
+ readOnly: boolean;
29
+ commitFailures: CommitFailureTracker;
30
+ /**
31
+ * 0.7.0 — Identity snapshot set per-operation by the MCP layer inside the
32
+ * write mutex. When populated AND MAAD_COMMIT_IDENTITY is not "false",
33
+ * gitCommit passes it through to the commit builder so commit messages
34
+ * get role/token/agent/user lines appended.
35
+ */
36
+ commitIdentity?: CommitIdentity;
37
+ }
38
+ /**
39
+ * Run a git commit and return the outcome. When gitLayer is absent (git not
40
+ * initialized or disabled), returns `noop` — the caller treats that as
41
+ * durable since there's no git to reconcile against. When the commit fails,
42
+ * the failure is logged on the ops channel AND tallied on
43
+ * `ctx.commitFailures` so `maad_health` can surface it; the caller gets the
44
+ * outcome back and can stamp `write_durable: false` on the MCP response.
45
+ */
46
+ export declare function gitCommit(ctx: EngineContext, opts: CommitOptions): Promise<CommitOutcome>;
47
+ //# sourceMappingURL=context.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"context.d.ts","sourceRoot":"","sources":["../../src/engine/context.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,QAAQ,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AACzD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AACvD,OAAO,KAAK,EAAE,QAAQ,EAAE,aAAa,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAC9E,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AACvD,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAC;AAIrD;;;;;GAKG;AACH,MAAM,WAAW,oBAAoB;IACnC,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;IACtB,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,UAAU,EAAE,QAAQ,GAAG,QAAQ,GAAG,QAAQ,GAAG,IAAI,CAAC;IAClD,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;CAC1B;AAED,wBAAgB,uBAAuB,IAAI,oBAAoB,CAS9D;AAED,MAAM,WAAW,aAAa;IAC5B,WAAW,EAAE,MAAM,CAAC;IACpB,QAAQ,EAAE,QAAQ,CAAC;IACnB,WAAW,EAAE,WAAW,CAAC;IACzB,OAAO,EAAE,WAAW,CAAC;IACrB,QAAQ,EAAE,QAAQ,GAAG,IAAI,CAAC;IAC1B,OAAO,EAAE,gBAAgB,CAAC;IAC1B,QAAQ,EAAE,OAAO,CAAC;IAClB,cAAc,EAAE,oBAAoB,CAAC;IACrC;;;;;OAKG;IACH,cAAc,CAAC,EAAE,cAAc,CAAC;CACjC;AAED;;;;;;;GAOG;AACH,wBAAsB,SAAS,CAAC,GAAG,EAAE,aAAa,EAAE,IAAI,EAAE,aAAa,GAAG,OAAO,CAAC,aAAa,CAAC,CA6B/F"}
@@ -0,0 +1,55 @@
1
+ // ============================================================================
2
+ // Engine Context — shared state passed to all domain modules
3
+ // ============================================================================
4
+ import { logger } from './logger.js';
5
+ import { logCommitFailure } from '../logging.js';
6
+ export function newCommitFailureTracker() {
7
+ return {
8
+ count: 0,
9
+ lastAt: null,
10
+ lastCode: null,
11
+ lastMessage: null,
12
+ lastAction: null,
13
+ lastDocId: null,
14
+ };
15
+ }
16
+ /**
17
+ * Run a git commit and return the outcome. When gitLayer is absent (git not
18
+ * initialized or disabled), returns `noop` — the caller treats that as
19
+ * durable since there's no git to reconcile against. When the commit fails,
20
+ * the failure is logged on the ops channel AND tallied on
21
+ * `ctx.commitFailures` so `maad_health` can surface it; the caller gets the
22
+ * outcome back and can stamp `write_durable: false` on the MCP response.
23
+ */
24
+ export async function gitCommit(ctx, opts) {
25
+ if (!ctx.gitLayer)
26
+ return { status: 'noop' };
27
+ // 0.7.0 — Thread commit identity through when set by the MCP layer.
28
+ // Engine-level direct callers (CLI imports, tests) leave ctx.commitIdentity
29
+ // undefined; formatCommitMessage then emits the bare title.
30
+ const enriched = ctx.commitIdentity !== undefined
31
+ ? { ...opts, identity: ctx.commitIdentity }
32
+ : opts;
33
+ const outcome = await ctx.gitLayer.commit(enriched);
34
+ if (outcome.status === 'failed') {
35
+ ctx.commitFailures.count++;
36
+ ctx.commitFailures.lastAt = new Date().toISOString();
37
+ ctx.commitFailures.lastCode = outcome.code;
38
+ ctx.commitFailures.lastMessage = outcome.message;
39
+ ctx.commitFailures.lastAction = opts.action;
40
+ ctx.commitFailures.lastDocId = opts.docId;
41
+ logCommitFailure({
42
+ code: outcome.code,
43
+ message: outcome.message,
44
+ action: opts.action,
45
+ doc_id: opts.docId,
46
+ doc_type: opts.docType,
47
+ file_count: opts.files.length,
48
+ });
49
+ // Keep the dev-facing log line so the existing logger.bestEffort signal
50
+ // stays visible for humans tailing ops in non-JSON mode.
51
+ logger.bestEffort('git', 'commit', `Git commit failed for ${opts.docId}: ${outcome.code} — ${outcome.message}`);
52
+ }
53
+ return outcome;
54
+ }
55
+ //# sourceMappingURL=context.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"context.js","sourceRoot":"","sources":["../../src/engine/context.ts"],"names":[],"mappings":"AAAA,+EAA+E;AAC/E,6DAA6D;AAC7D,+EAA+E;AAO/E,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AACrC,OAAO,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAC;AAiBjD,MAAM,UAAU,uBAAuB;IACrC,OAAO;QACL,KAAK,EAAE,CAAC;QACR,MAAM,EAAE,IAAI;QACZ,QAAQ,EAAE,IAAI;QACd,WAAW,EAAE,IAAI;QACjB,UAAU,EAAE,IAAI;QAChB,SAAS,EAAE,IAAI;KAChB,CAAC;AACJ,CAAC;AAoBD;;;;;;;GAOG;AACH,MAAM,CAAC,KAAK,UAAU,SAAS,CAAC,GAAkB,EAAE,IAAmB;IACrE,IAAI,CAAC,GAAG,CAAC,QAAQ;QAAE,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC;IAC7C,oEAAoE;IACpE,4EAA4E;IAC5E,4DAA4D;IAC5D,MAAM,QAAQ,GAAkB,GAAG,CAAC,cAAc,KAAK,SAAS;QAC9D,CAAC,CAAC,EAAE,GAAG,IAAI,EAAE,QAAQ,EAAE,GAAG,CAAC,cAAc,EAAE;QAC3C,CAAC,CAAC,IAAI,CAAC;IACT,MAAM,OAAO,GAAG,MAAM,GAAG,CAAC,QAAQ,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;IACpD,IAAI,OAAO,CAAC,MAAM,KAAK,QAAQ,EAAE,CAAC;QAChC,GAAG,CAAC,cAAc,CAAC,KAAK,EAAE,CAAC;QAC3B,GAAG,CAAC,cAAc,CAAC,MAAM,GAAG,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;QACrD,GAAG,CAAC,cAAc,CAAC,QAAQ,GAAG,OAAO,CAAC,IAAI,CAAC;QAC3C,GAAG,CAAC,cAAc,CAAC,WAAW,GAAG,OAAO,CAAC,OAAO,CAAC;QACjD,GAAG,CAAC,cAAc,CAAC,UAAU,GAAG,IAAI,CAAC,MAAM,CAAC;QAC5C,GAAG,CAAC,cAAc,CAAC,SAAS,GAAG,IAAI,CAAC,KAAe,CAAC;QACpD,gBAAgB,CAAC;YACf,IAAI,EAAE,OAAO,CAAC,IAAI;YAClB,OAAO,EAAE,OAAO,CAAC,OAAO;YACxB,MAAM,EAAE,IAAI,CAAC,MAAM;YACnB,MAAM,EAAE,IAAI,CAAC,KAAe;YAC5B,QAAQ,EAAE,IAAI,CAAC,OAAiB;YAChC,UAAU,EAAE,IAAI,CAAC,KAAK,CAAC,MAAM;SAC9B,CAAC,CAAC;QACH,wEAAwE;QACxE,yDAAyD;QACzD,MAAM,CAAC,UAAU,CAAC,KAAK,EAAE,QAAQ,EAAE,yBAAyB,IAAI,CAAC,KAAe,KAAK,OAAO,CAAC,IAAI,MAAM,OAAO,CAAC,OAAO,EAAE,CAAC,CAAC;IAC5H,CAAC;IACD,OAAO,OAAO,CAAC;AACjB,CAAC"}
@@ -0,0 +1,8 @@
1
+ export interface DocIdRejection {
2
+ reason: 'EMPTY' | 'TOO_LONG' | 'CONTAINS_DOTDOT' | 'LEADING_DOT' | 'INVALID_CHARS' | 'WINDOWS_RESERVED' | 'CONTROL_CHARS';
3
+ message: string;
4
+ }
5
+ export declare function checkDocIdSafe(docId: string): DocIdRejection | null;
6
+ export declare function assertDocIdSafe(docId: string): void;
7
+ export declare const DOC_ID_MAX_LEN = 128;
8
+ //# sourceMappingURL=docid-safe.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"docid-safe.d.ts","sourceRoot":"","sources":["../../src/engine/docid-safe.ts"],"names":[],"mappings":"AAuCA,MAAM,WAAW,cAAc;IAC7B,MAAM,EACF,OAAO,GACP,UAAU,GACV,iBAAiB,GACjB,aAAa,GACb,eAAe,GACf,kBAAkB,GAClB,eAAe,CAAC;IACpB,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,wBAAgB,cAAc,CAAC,KAAK,EAAE,MAAM,GAAG,cAAc,GAAG,IAAI,CAkCnE;AAED,wBAAgB,eAAe,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,CAGnD;AAED,eAAO,MAAM,cAAc,MAAiB,CAAC"}
Binary file
@@ -0,0 +1 @@
1
+ {"version":3,"file":"docid-safe.js","sourceRoot":"","sources":["../../src/engine/docid-safe.ts"],"names":[],"mappings":"AAAA,+EAA+E;AAC/E,iDAAiD;AACjD,EAAE;AACF,uEAAuE;AACvE,0EAA0E;AAC1E,yEAAyE;AACzE,2EAA2E;AAC3E,wDAAwD;AACxD,EAAE;AACF,oEAAoE;AACpE,0EAA0E;AAC1E,2EAA2E;AAC3E,gCAAgC;AAChC,EAAE;AACF,2EAA2E;AAC3E,sEAAsE;AACtE,mEAAmE;AACnE,yEAAyE;AACzE,2EAA2E;AAC3E,+EAA+E;AAE/E,MAAM,cAAc,GAAG,GAAG,CAAC;AAE3B,MAAM,cAAc,GAAG,8CAA8C,CAAC;AAEtE,6EAA6E;AAC7E,4EAA4E;AAC5E,2EAA2E;AAC3E,MAAM,gBAAgB,GAAG,IAAI,GAAG,CAAC;IAC/B,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK;IAC1B,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM;IAC9E,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM;CAC/E,CAAC,CAAC;AAEH,yEAAyE;AACzE,8EAA8E;AAC9E,4CAA4C;AAC5C,MAAM,eAAe,GAAG,QAAQ,CAAC;AAcjC,MAAM,UAAU,cAAc,CAAC,KAAa;IAC1C,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACpD,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,kCAAkC,EAAE,CAAC;IAC1E,CAAC;IACD,IAAI,KAAK,CAAC,MAAM,GAAG,cAAc,EAAE,CAAC;QAClC,OAAO;YACL,MAAM,EAAE,UAAU;YAClB,OAAO,EAAE,+BAA+B,cAAc,aAAa;SACpE,CAAC;IACJ,CAAC;IACD,0EAA0E;IAC1E,6DAA6D;IAC7D,IAAI,eAAe,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC;QAChC,OAAO,EAAE,MAAM,EAAE,eAAe,EAAE,OAAO,EAAE,mCAAmC,EAAE,CAAC;IACnF,CAAC;IACD,IAAI,KAAK,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;QAC1B,OAAO,EAAE,MAAM,EAAE,aAAa,EAAE,OAAO,EAAE,8BAA8B,EAAE,CAAC;IAC5E,CAAC;IACD,IAAI,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC;QACzB,OAAO,EAAE,MAAM,EAAE,iBAAiB,EAAE,OAAO,EAAE,6CAA6C,EAAE,CAAC;IAC/F,CAAC;IACD,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC;QAChC,OAAO;YACL,MAAM,EAAE,eAAe;YACvB,OAAO,EAAE,oHAAoH;SAC9H,CAAC;IACJ,CAAC;IACD,IAAI,gBAAgB,CAAC,GAAG,CAAC,KAAK,CAAC,WAAW,EAAE,CAAC,EAAE,CAAC;QAC9C,OAAO;YACL,MAAM,EAAE,kBAAkB;YAC1B,OAAO,EAAE,UAAU,KAAK,wCAAwC;SACjE,CAAC;IACJ,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAED,MAAM,UAAU,eAAe,CAAC,KAAa;IAC3C,MAAM,GAAG,GAAG,cAAc,CAAC,KAAK,CAAC,CAAC;IAClC,IAAI,GAAG;QAAE,MAAM,IAAI,KAAK,CAAC,iBAAiB,GAAG,CAAC,OAAO,EAAE,CAAC,CAAC;AAC3D,CAAC;AAED,MAAM,CAAC,MAAM,cAAc,GAAG,cAAc,CAAC"}
@@ -0,0 +1,8 @@
1
+ import type { DocumentRecord } from '../types.js';
2
+ export declare function readFrontmatter(projectRoot: string, doc: DocumentRecord): Promise<Record<string, unknown>>;
3
+ export declare function readFrontmatterSync(projectRoot: string, doc: DocumentRecord): Record<string, unknown> | null;
4
+ export declare function readBlockContent(projectRoot: string, doc: DocumentRecord, startLine: number, endLine: number, isPreamble: boolean): Promise<string>;
5
+ export declare function generateDocId(prefix: string, fields: Record<string, unknown>, existingIds?: string[]): string;
6
+ export declare function computeNumericValue(value: unknown, fieldType: string): number | null;
7
+ export declare function collectMarkdownFiles(dirPath: string): Promise<string[]>;
8
+ //# sourceMappingURL=helpers.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"helpers.d.ts","sourceRoot":"","sources":["../../src/engine/helpers.ts"],"names":[],"mappings":"AASA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAElD,wBAAsB,eAAe,CAAC,WAAW,EAAE,MAAM,EAAE,GAAG,EAAE,cAAc,GAAG,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAKhH;AAED,wBAAgB,mBAAmB,CAAC,WAAW,EAAE,MAAM,EAAE,GAAG,EAAE,cAAc,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,CAS5G;AAED,wBAAsB,gBAAgB,CAAC,WAAW,EAAE,MAAM,EAAE,GAAG,EAAE,cAAc,EAAE,SAAS,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,OAAO,GAAG,OAAO,CAAC,MAAM,CAAC,CAOzJ;AAED,wBAAgB,aAAa,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,WAAW,CAAC,EAAE,MAAM,EAAE,GAAG,MAAM,CA+B7G;AAED,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,OAAO,EAAE,SAAS,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAkBpF;AAED,wBAAsB,oBAAoB,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,CAkB7E"}
@@ -0,0 +1,102 @@
1
+ // ============================================================================
2
+ // Engine Helpers — file reading, ID generation, utility functions
3
+ // ============================================================================
4
+ import { readFile } from 'node:fs/promises';
5
+ import { readFileSync } from 'node:fs';
6
+ import path from 'node:path';
7
+ import { glob } from 'node:fs/promises';
8
+ import { parseMatter } from '../parser/matter.js';
9
+ export async function readFrontmatter(projectRoot, doc) {
10
+ const absPath = path.join(projectRoot, doc.filePath);
11
+ const raw = await readFile(absPath, 'utf-8');
12
+ const parsed = parseMatter(raw);
13
+ return parsed.data;
14
+ }
15
+ export function readFrontmatterSync(projectRoot, doc) {
16
+ try {
17
+ const absPath = path.join(projectRoot, doc.filePath);
18
+ const raw = readFileSync(absPath, 'utf-8');
19
+ const parsed = parseMatter(raw);
20
+ return parsed.data;
21
+ }
22
+ catch {
23
+ return null;
24
+ }
25
+ }
26
+ export async function readBlockContent(projectRoot, doc, startLine, endLine, isPreamble) {
27
+ const absPath = path.join(projectRoot, doc.filePath);
28
+ const raw = await readFile(absPath, 'utf-8');
29
+ const lines = raw.split('\n');
30
+ const contentStart = isPreamble ? startLine - 1 : startLine;
31
+ const contentEnd = endLine;
32
+ return lines.slice(contentStart, contentEnd).join('\n').trim();
33
+ }
34
+ export function generateDocId(prefix, fields, existingIds) {
35
+ const nameOrTitle = fields['name'] ?? fields['title'];
36
+ // Slug strategy: use name/title if available
37
+ if (typeof nameOrTitle === 'string') {
38
+ const slug = nameOrTitle
39
+ .toLowerCase()
40
+ .replace(/[^a-z0-9\s-]/g, '')
41
+ .replace(/\s+/g, '-')
42
+ .replace(/-+/g, '-')
43
+ .replace(/^-|-$/g, '')
44
+ .slice(0, 40);
45
+ if (slug.length > 0)
46
+ return `${prefix}-${slug}`;
47
+ }
48
+ // Sequence strategy: prefix-YYYY-NNN
49
+ const year = new Date().getFullYear();
50
+ const seqPrefix = `${prefix}-${year}-`;
51
+ let maxSeq = 0;
52
+ if (existingIds) {
53
+ for (const id of existingIds) {
54
+ if (id.startsWith(seqPrefix)) {
55
+ const seqStr = id.slice(seqPrefix.length);
56
+ const num = parseInt(seqStr, 10);
57
+ if (!isNaN(num) && num > maxSeq)
58
+ maxSeq = num;
59
+ }
60
+ }
61
+ }
62
+ return `${seqPrefix}${String(maxSeq + 1).padStart(3, '0')}`;
63
+ }
64
+ export function computeNumericValue(value, fieldType) {
65
+ if (value === null || value === undefined)
66
+ return null;
67
+ if (fieldType === 'number') {
68
+ const num = typeof value === 'number' ? value : parseFloat(String(value));
69
+ return isFinite(num) ? num : null;
70
+ }
71
+ if (fieldType === 'amount') {
72
+ const match = /^([\d,.]+)/.exec(String(value));
73
+ if (match) {
74
+ const num = parseFloat(match[1].replace(/,/g, ''));
75
+ return isFinite(num) ? num : null;
76
+ }
77
+ return null;
78
+ }
79
+ return null;
80
+ }
81
+ export async function collectMarkdownFiles(dirPath) {
82
+ const files = [];
83
+ try {
84
+ for await (const entry of glob('**/*.md', { cwd: dirPath })) {
85
+ const basename = path.basename(entry);
86
+ if (basename.startsWith('_deleted_'))
87
+ continue;
88
+ files.push(path.join(dirPath, entry));
89
+ }
90
+ }
91
+ catch {
92
+ const { readdir } = await import('node:fs/promises');
93
+ const entries = await readdir(dirPath, { withFileTypes: true });
94
+ for (const entry of entries) {
95
+ if (entry.isFile() && entry.name.endsWith('.md') && !entry.name.startsWith('_deleted_')) {
96
+ files.push(path.join(dirPath, entry.name));
97
+ }
98
+ }
99
+ }
100
+ return files;
101
+ }
102
+ //# sourceMappingURL=helpers.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"helpers.js","sourceRoot":"","sources":["../../src/engine/helpers.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,215 @@
1
+ import { type Result } from '../errors.js';
2
+ import type { DocId, DocType, FilePath, Registry, SchemaDefinition, ExtractionResult } from '../types.js';
3
+ import type { MaadBackend } from '../backend/index.js';
4
+ import { GitLayer } from '../git/index.js';
5
+ import * as maintenance from './maintenance.js';
6
+ export type { IndexResult, CreateResult, GetResult, UpdateResult, DeleteResult, FindResult, SearchResult, RelatedResult, DescribeResult, SummaryResult, GetFullResult, SchemaInfoResult, ValidationReport, VerifyResult, } from './types.js';
7
+ export interface HealthReport {
8
+ projectRoot: string;
9
+ initialized: boolean;
10
+ readOnly: boolean;
11
+ gitAvailable: boolean;
12
+ indexExists: boolean;
13
+ lastIndexedAt: string | null;
14
+ totalDocuments: number;
15
+ registeredTypes: number;
16
+ recoveryActions: string[];
17
+ emptyProject: boolean;
18
+ bootstrapHint: string | null;
19
+ writeQueueDepth: number;
20
+ lastWriteOp: {
21
+ op: string;
22
+ startedAt: string;
23
+ elapsedMs: number;
24
+ } | null;
25
+ lastWriteAt: string | null;
26
+ repoSizeBytes: number | null;
27
+ gitClean: boolean | null;
28
+ diskHeadroomMb: number | null;
29
+ commitFailuresTotal: number;
30
+ lastCommitFailureAt: string | null;
31
+ lastCommitFailureCode: string | null;
32
+ lastCommitFailureAction: 'create' | 'update' | 'delete' | null;
33
+ lastCommitFailureDocId: string | null;
34
+ }
35
+ export declare class MaadEngine {
36
+ private projectRoot;
37
+ private registry;
38
+ private schemaStore;
39
+ private backend;
40
+ private gitLayer;
41
+ private journal;
42
+ private commitFailures;
43
+ private pendingCommitIdentity;
44
+ private initialized;
45
+ private _readOnly;
46
+ private startupRecovery;
47
+ private writeLock;
48
+ private lastWriteOp;
49
+ private lastWriteAt;
50
+ private repoSizeCache;
51
+ private static readonly REPO_SIZE_CACHE_MS;
52
+ private lastGitCleanCache;
53
+ /**
54
+ * Acquire the per-engine write mutex, run `fn`, release. Records
55
+ * `lastWriteOp` / `lastWriteAt` for health reporting and logs slow writes.
56
+ *
57
+ * **Reentrant.** When the current async context already holds this
58
+ * engine's write scope (e.g. `withEngine`'s write branch acquired at the
59
+ * MCP boundary, and the handler then calls `engine.createDocument` which
60
+ * itself wraps in `runExclusive`), the inner call skips acquisition and
61
+ * runs `fn` directly. Prevents double-locking deadlocks on a
62
+ * non-reentrant FIFO mutex. Bookkeeping (lastWriteOp/lastWriteAt) fires
63
+ * once per outermost scope.
64
+ *
65
+ * As of 0.5.0 R4 the MCP entry point is the primary caller — every tool
66
+ * classified as `write` in `src/mcp/kinds.ts` wraps here at the request
67
+ * boundary. Direct non-MCP callers (CLI, tests, import scripts) continue
68
+ * to call engine mutation methods normally; those methods self-wrap in
69
+ * runExclusive so direct callers stay serialized.
70
+ */
71
+ runExclusive<T>(op: string, fn: () => Promise<T>): Promise<T>;
72
+ init(projectRoot: string, opts?: {
73
+ readOnly?: boolean;
74
+ }): Promise<Result<void>>;
75
+ isReadOnly(): boolean;
76
+ reload(): Promise<Result<void>>;
77
+ /**
78
+ * 0.7.7 (fup-2026-202) — Lightweight in-place reload of registry + schemas.
79
+ * Triggered from `runExclusive` when `schemaStore.isStale()` reports drift
80
+ * (another process edited the schema/registry files since our last load).
81
+ *
82
+ * Does NOT reset the backend or git layer — only the in-memory schema and
83
+ * registry refs are swapped. Cheap enough to run as a defensive check on
84
+ * every write entry; the staleness probe (a handful of fstat calls) takes
85
+ * microseconds and the actual reload only fires when files actually
86
+ * changed. Failure path: log and proceed with the stale schema rather than
87
+ * blocking the write — a rare case (schema deleted mid-flight) where doing
88
+ * nothing is the lesser harm.
89
+ */
90
+ private reloadSchemasIfStale;
91
+ health(): HealthReport;
92
+ /**
93
+ * Size of the .git directory on disk, in bytes. Cached for 60s since a full
94
+ * recursive walk is O(size) and maad_health may be polled frequently. Returns
95
+ * null if git is unavailable. Best-effort: filesystem errors return null.
96
+ */
97
+ private probeRepoSize;
98
+ /**
99
+ * Synchronous "is the working tree clean" probe. Uses simple-git's
100
+ * status() — fast enough for health reporting. Returns null if git is
101
+ * unavailable. Best-effort: errors return null.
102
+ *
103
+ * Note: simple-git's status() is async, but we cache the most recent
104
+ * result on a health() call so maad_health stays synchronous.
105
+ */
106
+ private probeGitClean;
107
+ /**
108
+ * Refresh the cached git-clean flag. Called on demand (e.g. from an async
109
+ * path that awaits the status) and in the background by probeGitClean
110
+ * fallback.
111
+ */
112
+ refreshGitClean(): Promise<boolean | null>;
113
+ /**
114
+ * Free space on the volume holding projectRoot, in megabytes. Uses
115
+ * fs.statfsSync which is available on Node 18+. Returns null on error
116
+ * (e.g. unsupported filesystem, permissions).
117
+ */
118
+ private probeDiskHeadroom;
119
+ /**
120
+ * Test/drain accessor for the write mutex's current queue depth (held + waiting).
121
+ * Used by the lifecycle drain loop (0.4.1 H7) and the concurrency test suite.
122
+ */
123
+ writeQueueDepth(): number;
124
+ getStartupRecovery(): string[];
125
+ close(): void;
126
+ private ctx;
127
+ /**
128
+ * 0.7.0 — Set the identity slot used by the next git commit under the
129
+ * write mutex. Caller MUST be inside `runExclusive` so no concurrent
130
+ * writer can stomp the slot. `withEngine` (MCP layer) brackets set/clear
131
+ * around each write handler; clear with setCommitIdentity(undefined).
132
+ */
133
+ setCommitIdentity(identity: import('../git/commit.js').CommitIdentity | undefined): void;
134
+ private assertInit;
135
+ indexAll(opts?: {
136
+ force?: boolean;
137
+ }): Promise<import("./types.js").IndexResult>;
138
+ indexFile(absolutePath: FilePath): Promise<Result<ExtractionResult>>;
139
+ reindex(opts?: {
140
+ docId?: DocId;
141
+ force?: boolean;
142
+ }): Promise<Result<import("./types.js").IndexResult>>;
143
+ getDocument(id: DocId, depth: 'hot' | 'warm' | 'cold', blockIdOrHeading?: string): Promise<Result<import("./types.js").GetResult>>;
144
+ findDocuments(query: import('../types.js').DocumentQuery): Result<import("./types.js").FindResult>;
145
+ searchObjects(query: import('../types.js').ObjectQuery): Result<import("./types.js").SearchResult>;
146
+ listRelated(id: DocId, direction: 'outgoing' | 'incoming' | 'both', types?: DocType[]): Result<import("./types.js").RelatedResult>;
147
+ describe(): import("./types.js").DescribeResult;
148
+ summary(): import("./types.js").SummaryResult;
149
+ getSchema(dt: DocType): SchemaDefinition | undefined;
150
+ schemaInfo(dt: DocType): Result<import("./types.js").SchemaInfoResult>;
151
+ aggregate(query: import('./types.js').AggregateQuery): Result<import("./types.js").AggregateResult>;
152
+ join(query: import('./types.js').JoinQuery): Result<import("./types.js").JoinResult>;
153
+ verifyField(id: DocId, field: string, expected: unknown): Promise<Result<import("./types.js").VerifyResult>>;
154
+ verifyCount(dt: DocType, expectedCount: number, filters?: Record<string, import('../types.js').FilterCondition>): Result<import("./types.js").VerifyResult>;
155
+ verifyIntegrity(query?: import('./types.js').IntegrityQuery): Promise<Result<import("./types.js").IntegrityResult>>;
156
+ backupCreate(opts?: import('./types.js').CreateBackupOptions): Promise<Result<import("./types.js").BackupTag>>;
157
+ backupList(opts?: import('./types.js').ListBackupsOptions): Promise<Result<import("./types.js").BackupTag[]>>;
158
+ backupDelete(tag: string): Promise<Result<{
159
+ removed: string;
160
+ }>>;
161
+ changesSince(query: import('./types.js').ChangesSinceQuery): Result<import("./types.js").ChangesPage>;
162
+ getDocumentFull(id: DocId): Promise<Result<import("./types.js").GetFullResult>>;
163
+ createDocument(dt: DocType, fields: Record<string, unknown>, body?: string, customDocId?: string): Promise<{
164
+ ok: false;
165
+ errors: import("../errors.js").MaadError[];
166
+ } | {
167
+ ok: true;
168
+ value: unknown;
169
+ }>;
170
+ updateDocument(id: DocId, fields?: Record<string, unknown>, body?: string, appendBody?: string, expectedVersion?: number): Promise<{
171
+ ok: false;
172
+ errors: import("../errors.js").MaadError[];
173
+ } | {
174
+ ok: true;
175
+ value: unknown;
176
+ }>;
177
+ deleteDocument(id: DocId, mode: 'soft' | 'hard'): Promise<{
178
+ ok: false;
179
+ errors: import("../errors.js").MaadError[];
180
+ } | {
181
+ ok: true;
182
+ value: unknown;
183
+ }>;
184
+ bulkCreate(records: import('./types.js').BulkCreateInput[]): Promise<{
185
+ ok: false;
186
+ errors: import("../errors.js").MaadError[];
187
+ } | {
188
+ ok: true;
189
+ value: unknown;
190
+ }>;
191
+ bulkUpdate(updates: import('./types.js').BulkUpdateInput[]): Promise<{
192
+ ok: false;
193
+ errors: import("../errors.js").MaadError[];
194
+ } | {
195
+ ok: true;
196
+ value: unknown;
197
+ }>;
198
+ validate(docId?: DocId, options?: maintenance.ValidateOptions): Promise<Result<import("./types.js").ValidationReport>>;
199
+ history(id: DocId, opts?: {
200
+ limit?: number;
201
+ since?: string;
202
+ }): Promise<Result<import("../types.js").ParsedCommit[]>>;
203
+ diff(id: DocId, from: string, to?: string): Promise<Result<import("../types.js").DiffResult>>;
204
+ snapshot(id: DocId, at: string): Promise<Result<import("../types.js").SnapshotResult>>;
205
+ audit(opts?: {
206
+ since?: string;
207
+ until?: string;
208
+ docType?: DocType;
209
+ }): Promise<Result<import("../types.js").AuditEntry[]>>;
210
+ getBackend(): MaadBackend;
211
+ getRegistry(): Registry;
212
+ getGitLayer(): GitLayer | null;
213
+ getProjectRoot(): string;
214
+ }
215
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/engine/index.ts"],"names":[],"mappings":"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"}