@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,63 @@
1
+ import type { SimpleGit } from 'simple-git';
2
+ import type { DocId, DocType, CommitSha } from '../types.js';
3
+ interface GitCommitIdentityEnv {
4
+ GIT_AUTHOR_NAME: string;
5
+ GIT_AUTHOR_EMAIL: string;
6
+ GIT_COMMITTER_NAME: string;
7
+ GIT_COMMITTER_EMAIL: string;
8
+ }
9
+ export declare function resolveCommitAuthor(env?: NodeJS.ProcessEnv): GitCommitIdentityEnv;
10
+ /**
11
+ * 0.7.0 — Identity snapshot for commit-message enrichment. Populated from
12
+ * the session's token when `MAAD_COMMIT_IDENTITY` is on (default true in
13
+ * 0.7.0 per dec-maadb-071 since fup-066 resolved). Set to false in the
14
+ * deploy env to opt out for cautious deployments.
15
+ */
16
+ export interface CommitIdentity {
17
+ role: string;
18
+ tokenId?: string;
19
+ agentId?: string;
20
+ userId?: string;
21
+ }
22
+ export interface CommitOptions {
23
+ action: 'create' | 'update' | 'delete';
24
+ docId: DocId;
25
+ docType: DocType;
26
+ detail: string;
27
+ summary: string;
28
+ files: string[];
29
+ identity?: CommitIdentity;
30
+ }
31
+ /**
32
+ * 0.6.10 — Three-state commit outcome. Replaces the prior `CommitSha | null`
33
+ * return on autoCommit so callers can distinguish benign no-ops from real
34
+ * failures that left staged changes uncommitted.
35
+ */
36
+ export type CommitOutcome = {
37
+ status: 'committed';
38
+ sha: CommitSha;
39
+ } | {
40
+ status: 'noop';
41
+ } | {
42
+ status: 'failed';
43
+ code: string;
44
+ message: string;
45
+ };
46
+ export declare function formatCommitMessage(opts: CommitOptions): string;
47
+ /**
48
+ * 0.7.0 — Default ON in 0.7.0 per dec-maadb-071 (fup-066 resolved in 0.6.10
49
+ * removed the silent-commit-failure concern that gated this). Operators opt
50
+ * out with MAAD_COMMIT_IDENTITY=false.
51
+ */
52
+ export declare function isCommitIdentityEnabled(): boolean;
53
+ export interface ParsedCommitMessage {
54
+ action: string;
55
+ docId: string;
56
+ docType: string;
57
+ detail: string;
58
+ summary: string;
59
+ }
60
+ export declare function parseCommitMessage(message: string): ParsedCommitMessage | null;
61
+ export declare function autoCommit(git: SimpleGit, opts: CommitOptions): Promise<CommitOutcome>;
62
+ export {};
63
+ //# sourceMappingURL=commit.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"commit.d.ts","sourceRoot":"","sources":["../../src/git/commit.ts"],"names":[],"mappings":"AAaA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAC5C,OAAO,KAAK,EAAE,KAAK,EAAE,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAmB7D,UAAU,oBAAoB;IAC5B,eAAe,EAAE,MAAM,CAAC;IACxB,gBAAgB,EAAE,MAAM,CAAC;IACzB,kBAAkB,EAAE,MAAM,CAAC;IAC3B,mBAAmB,EAAE,MAAM,CAAC;CAC7B;AAED,wBAAgB,mBAAmB,CAAC,GAAG,GAAE,MAAM,CAAC,UAAwB,GAAG,oBAAoB,CAa9F;AAED;;;;;GAKG;AACH,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,aAAa;IAC5B,MAAM,EAAE,QAAQ,GAAG,QAAQ,GAAG,QAAQ,CAAC;IACvC,KAAK,EAAE,KAAK,CAAC;IACb,OAAO,EAAE,OAAO,CAAC;IACjB,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,MAAM,EAAE,CAAC;IAChB,QAAQ,CAAC,EAAE,cAAc,CAAC;CAC3B;AAED;;;;GAIG;AACH,MAAM,MAAM,aAAa,GACrB;IAAE,MAAM,EAAE,WAAW,CAAC;IAAC,GAAG,EAAE,SAAS,CAAA;CAAE,GACvC;IAAE,MAAM,EAAE,MAAM,CAAA;CAAE,GAClB;IAAE,MAAM,EAAE,QAAQ,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,CAAC;AAMxD,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,aAAa,GAAG,MAAM,CAS/D;AAED;;;;GAIG;AACH,wBAAgB,uBAAuB,IAAI,OAAO,CAEjD;AAKD,MAAM,WAAW,mBAAmB;IAClC,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,MAAM,GAAG,mBAAmB,GAAG,IAAI,CAU9E;AAED,wBAAsB,UAAU,CAC9B,GAAG,EAAE,SAAS,EACd,IAAI,EAAE,aAAa,GAClB,OAAO,CAAC,aAAa,CAAC,CA4ExB"}
@@ -0,0 +1,161 @@
1
+ // ============================================================================
2
+ // Git Commit Builder
3
+ // Formats structured commit messages and auto-commits on write operations.
4
+ //
5
+ // CommitOutcome is a three-state discriminated union so callers can tell
6
+ // (a) we committed and here's the sha; (b) nothing was staged so no commit
7
+ // was needed (benign — e.g. an update that didn't actually change the file);
8
+ // (c) git failed and the working tree may now hold staged-but-uncommitted
9
+ // changes. Before 0.6.10 we returned `sha | null` and swallowed all errors
10
+ // silently — bulk_create races or a mid-run lock conflict would leave the
11
+ // engine ack'ing writes as durable while git quietly held staged state.
12
+ // ============================================================================
13
+ import { commitSha } from '../types.js';
14
+ /**
15
+ * 0.7.3 (fup-2026-095) — Per-invocation git identity. The engine should never
16
+ * depend on the host user's `git config user.name/user.email` — when the host
17
+ * lacks identity, every autoCommit silently fails with "Author identity
18
+ * unknown" and the working tree drifts (observed 2026-04-23 on the brain-app
19
+ * droplet: 21 staged-uncommitted files, gitClean=false stuck).
20
+ *
21
+ * Set GIT_AUTHOR_* / GIT_COMMITTER_* env vars per-invocation so simple-git
22
+ * passes them to the spawned git process. These take precedence over
23
+ * `git config` and don't require touching repo state. Defaults are stable
24
+ * synthetic values; override per-deployment with MAAD_COMMIT_AUTHOR_NAME /
25
+ * MAAD_COMMIT_AUTHOR_EMAIL.
26
+ */
27
+ const DEFAULT_COMMIT_AUTHOR_NAME = 'maadb-engine';
28
+ const DEFAULT_COMMIT_AUTHOR_EMAIL = 'engine@maadb.local';
29
+ export function resolveCommitAuthor(env = process.env) {
30
+ const name = env.MAAD_COMMIT_AUTHOR_NAME && env.MAAD_COMMIT_AUTHOR_NAME.length > 0
31
+ ? env.MAAD_COMMIT_AUTHOR_NAME
32
+ : DEFAULT_COMMIT_AUTHOR_NAME;
33
+ const email = env.MAAD_COMMIT_AUTHOR_EMAIL && env.MAAD_COMMIT_AUTHOR_EMAIL.length > 0
34
+ ? env.MAAD_COMMIT_AUTHOR_EMAIL
35
+ : DEFAULT_COMMIT_AUTHOR_EMAIL;
36
+ return {
37
+ GIT_AUTHOR_NAME: name,
38
+ GIT_AUTHOR_EMAIL: email,
39
+ GIT_COMMITTER_NAME: name,
40
+ GIT_COMMITTER_EMAIL: email,
41
+ };
42
+ }
43
+ // Format: maad:<action> <doc_id> [<doc_type>] <detail> — <summary>
44
+ // With identity (0.7.0 MAAD_COMMIT_IDENTITY=true): title unchanged, body
45
+ // appended with role/token/agent/user lines so `git log --grep` queries on
46
+ // identity stay simple without polluting the summary line.
47
+ export function formatCommitMessage(opts) {
48
+ const detail = opts.detail ? `${opts.detail} ` : '';
49
+ const title = `maad:${opts.action} ${opts.docId} [${opts.docType}] ${detail}— ${opts.summary}`;
50
+ if (!opts.identity)
51
+ return title;
52
+ const lines = [`role: ${opts.identity.role}`];
53
+ if (opts.identity.tokenId !== undefined)
54
+ lines.push(`token: ${opts.identity.tokenId}`);
55
+ if (opts.identity.agentId !== undefined)
56
+ lines.push(`agent: ${opts.identity.agentId}`);
57
+ if (opts.identity.userId !== undefined)
58
+ lines.push(`user: ${opts.identity.userId}`);
59
+ return `${title}\n\n${lines.join('\n')}`;
60
+ }
61
+ /**
62
+ * 0.7.0 — Default ON in 0.7.0 per dec-maadb-071 (fup-066 resolved in 0.6.10
63
+ * removed the silent-commit-failure concern that gated this). Operators opt
64
+ * out with MAAD_COMMIT_IDENTITY=false.
65
+ */
66
+ export function isCommitIdentityEnabled() {
67
+ return process.env['MAAD_COMMIT_IDENTITY'] !== 'false';
68
+ }
69
+ // Parse a structured commit message back into components
70
+ const COMMIT_PARSE_REGEX = /^maad:(\w+)\s+([\w.-]+)\s+\[(\w+)\]\s*(.*?)\s*—\s*(.+)$/;
71
+ export function parseCommitMessage(message) {
72
+ const match = COMMIT_PARSE_REGEX.exec(message.split('\n')[0] ?? '');
73
+ if (!match)
74
+ return null;
75
+ return {
76
+ action: match[1],
77
+ docId: match[2],
78
+ docType: match[3],
79
+ detail: match[4].trim(),
80
+ summary: match[5].trim(),
81
+ };
82
+ }
83
+ export async function autoCommit(git, opts) {
84
+ try {
85
+ // Stage specified files
86
+ try {
87
+ await git.add(opts.files);
88
+ }
89
+ catch (e) {
90
+ return {
91
+ status: 'failed',
92
+ code: 'GIT_ADD_FAILED',
93
+ message: `git add failed: ${e instanceof Error ? e.message : String(e)}`,
94
+ };
95
+ }
96
+ // Check if there's anything to commit. Update paths where the file
97
+ // actually equals its on-disk form produce an empty staged list — this
98
+ // is benign (record is durable; git history matches state).
99
+ let status;
100
+ try {
101
+ status = await git.status();
102
+ }
103
+ catch (e) {
104
+ return {
105
+ status: 'failed',
106
+ code: 'GIT_STATUS_FAILED',
107
+ message: `git status failed: ${e instanceof Error ? e.message : String(e)}`,
108
+ };
109
+ }
110
+ if (status.staged.length === 0) {
111
+ return { status: 'noop' };
112
+ }
113
+ const message = formatCommitMessage(opts);
114
+ let result;
115
+ try {
116
+ // 0.7.3 (fup-2026-095) — set identity env per-call so we never depend
117
+ // on the host's `git config user.name/user.email`. simple-git's .env()
118
+ // is chainable and applies to the next spawned git process.
119
+ const identity = resolveCommitAuthor();
120
+ result = await git
121
+ .env('GIT_AUTHOR_NAME', identity.GIT_AUTHOR_NAME)
122
+ .env('GIT_AUTHOR_EMAIL', identity.GIT_AUTHOR_EMAIL)
123
+ .env('GIT_COMMITTER_NAME', identity.GIT_COMMITTER_NAME)
124
+ .env('GIT_COMMITTER_EMAIL', identity.GIT_COMMITTER_EMAIL)
125
+ .commit(message);
126
+ }
127
+ catch (e) {
128
+ // The add succeeded but the commit itself failed — worst case, since
129
+ // the working tree is now dirty with staged but uncommitted changes.
130
+ // Callers use this signal to stamp `write_durable: false` on the MCP
131
+ // response so clients know to retry (or reconcile out-of-band).
132
+ return {
133
+ status: 'failed',
134
+ code: 'GIT_COMMIT_FAILED',
135
+ message: `git commit failed: ${e instanceof Error ? e.message : String(e)}`,
136
+ };
137
+ }
138
+ if (!result.commit) {
139
+ // simple-git returned an empty commit field — shouldn't happen after a
140
+ // successful commit, but defend against it so durability tracking is
141
+ // truthful rather than optimistic.
142
+ return {
143
+ status: 'failed',
144
+ code: 'GIT_COMMIT_EMPTY',
145
+ message: 'git commit returned no commit sha',
146
+ };
147
+ }
148
+ return { status: 'committed', sha: commitSha(result.commit) };
149
+ }
150
+ catch (e) {
151
+ // Defense-in-depth: anything that escapes the inner try/catches above
152
+ // lands here so we never return undefined. Should be unreachable in
153
+ // practice.
154
+ return {
155
+ status: 'failed',
156
+ code: 'GIT_UNKNOWN_ERROR',
157
+ message: e instanceof Error ? e.message : String(e),
158
+ };
159
+ }
160
+ }
161
+ //# sourceMappingURL=commit.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"commit.js","sourceRoot":"","sources":["../../src/git/commit.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,4 @@
1
+ import type { SimpleGit } from 'simple-git';
2
+ import { type DocId, type DiffResult } from '../types.js';
3
+ export declare function getDiff(git: SimpleGit, filePath: string, docId: DocId, from: string, to?: string): Promise<DiffResult | null>;
4
+ //# sourceMappingURL=diff.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"diff.d.ts","sourceRoot":"","sources":["../../src/git/diff.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAE5C,OAAO,EAEL,KAAK,KAAK,EAEV,KAAK,UAAU,EAChB,MAAM,aAAa,CAAC;AAErB,wBAAsB,OAAO,CAC3B,GAAG,EAAE,SAAS,EACd,QAAQ,EAAE,MAAM,EAChB,KAAK,EAAE,KAAK,EACZ,IAAI,EAAE,MAAM,EACZ,EAAE,CAAC,EAAE,MAAM,GACV,OAAO,CAAC,UAAU,GAAG,IAAI,CAAC,CA2C5B"}
@@ -0,0 +1,56 @@
1
+ // ============================================================================
2
+ // Git Diff Parser
3
+ // Compares two versions of a document and returns structured changes.
4
+ // ============================================================================
5
+ import { parseMatter } from '../parser/matter.js';
6
+ import { commitSha as toCommitSha, } from '../types.js';
7
+ export async function getDiff(git, filePath, docId, from, to) {
8
+ const toRef = to ?? 'HEAD';
9
+ // Get old and new file contents
10
+ let oldContent;
11
+ let newContent;
12
+ try {
13
+ oldContent = await git.show(`${from}:${filePath}`);
14
+ newContent = await git.show(`${toRef}:${filePath}`);
15
+ }
16
+ catch {
17
+ return null;
18
+ }
19
+ // Parse frontmatter from both versions
20
+ const oldFm = parseFm(oldContent);
21
+ const newFm = parseFm(newContent);
22
+ // Diff frontmatter field by field
23
+ const frontmatterChanges = {};
24
+ const allKeys = new Set([...Object.keys(oldFm), ...Object.keys(newFm)]);
25
+ for (const key of allKeys) {
26
+ const oldVal = oldFm[key];
27
+ const newVal = newFm[key];
28
+ if (JSON.stringify(oldVal) !== JSON.stringify(newVal)) {
29
+ frontmatterChanges[key] = { from: oldVal ?? null, to: newVal ?? null };
30
+ }
31
+ }
32
+ // Get unified diff for the body
33
+ let bodyDiff = '';
34
+ try {
35
+ bodyDiff = await git.diff([`${from}..${toRef}`, '--', filePath]);
36
+ }
37
+ catch {
38
+ bodyDiff = '';
39
+ }
40
+ return {
41
+ docId,
42
+ from: toCommitSha(from),
43
+ to: toCommitSha(toRef),
44
+ frontmatterChanges,
45
+ bodyDiff,
46
+ };
47
+ }
48
+ function parseFm(content) {
49
+ try {
50
+ return parseMatter(content).data;
51
+ }
52
+ catch {
53
+ return {};
54
+ }
55
+ }
56
+ //# sourceMappingURL=diff.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"diff.js","sourceRoot":"","sources":["../../src/git/diff.ts"],"names":[],"mappings":"AAAA,+EAA+E;AAC/E,kBAAkB;AAClB,sEAAsE;AACtE,+EAA+E;AAG/E,OAAO,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAClD,OAAO,EACL,SAAS,IAAI,WAAW,GAIzB,MAAM,aAAa,CAAC;AAErB,MAAM,CAAC,KAAK,UAAU,OAAO,CAC3B,GAAc,EACd,QAAgB,EAChB,KAAY,EACZ,IAAY,EACZ,EAAW;IAEX,MAAM,KAAK,GAAG,EAAE,IAAI,MAAM,CAAC;IAE3B,gCAAgC;IAChC,IAAI,UAAkB,CAAC;IACvB,IAAI,UAAkB,CAAC;IACvB,IAAI,CAAC;QACH,UAAU,GAAG,MAAM,GAAG,CAAC,IAAI,CAAC,GAAG,IAAI,IAAI,QAAQ,EAAE,CAAC,CAAC;QACnD,UAAU,GAAG,MAAM,GAAG,CAAC,IAAI,CAAC,GAAG,KAAK,IAAI,QAAQ,EAAE,CAAC,CAAC;IACtD,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAC;IACd,CAAC;IAED,uCAAuC;IACvC,MAAM,KAAK,GAAG,OAAO,CAAC,UAAU,CAAC,CAAC;IAClC,MAAM,KAAK,GAAG,OAAO,CAAC,UAAU,CAAC,CAAC;IAElC,kCAAkC;IAClC,MAAM,kBAAkB,GAAmD,EAAE,CAAC;IAC9E,MAAM,OAAO,GAAG,IAAI,GAAG,CAAC,CAAC,GAAG,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,GAAG,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;IACxE,KAAK,MAAM,GAAG,IAAI,OAAO,EAAE,CAAC;QAC1B,MAAM,MAAM,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC;QAC1B,MAAM,MAAM,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC;QAC1B,IAAI,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,KAAK,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,EAAE,CAAC;YACtD,kBAAkB,CAAC,GAAG,CAAC,GAAG,EAAE,IAAI,EAAE,MAAM,IAAI,IAAI,EAAE,EAAE,EAAE,MAAM,IAAI,IAAI,EAAE,CAAC;QACzE,CAAC;IACH,CAAC;IAED,gCAAgC;IAChC,IAAI,QAAQ,GAAG,EAAE,CAAC;IAClB,IAAI,CAAC;QACH,QAAQ,GAAG,MAAM,GAAG,CAAC,IAAI,CAAC,CAAC,GAAG,IAAI,KAAK,KAAK,EAAE,EAAE,IAAI,EAAE,QAAQ,CAAC,CAAC,CAAC;IACnE,CAAC;IAAC,MAAM,CAAC;QACP,QAAQ,GAAG,EAAE,CAAC;IAChB,CAAC;IAED,OAAO;QACL,KAAK;QACL,IAAI,EAAE,WAAW,CAAC,IAAI,CAAC;QACvB,EAAE,EAAE,WAAW,CAAC,KAAK,CAAC;QACtB,kBAAkB;QAClB,QAAQ;KACT,CAAC;AACJ,CAAC;AAED,SAAS,OAAO,CAAC,OAAe;IAC9B,IAAI,CAAC;QACH,OAAO,WAAW,CAAC,OAAO,CAAC,CAAC,IAA+B,CAAC;IAC9D,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,EAAE,CAAC;IACZ,CAAC;AACH,CAAC"}
@@ -0,0 +1,63 @@
1
+ import { type SimpleGit } from 'simple-git';
2
+ import type { DocId, DocType, ParsedCommit, AuditEntry, DiffResult, SnapshotResult } from '../types.js';
3
+ import { type CommitOptions, type CommitOutcome } from './commit.js';
4
+ export { formatCommitMessage, parseCommitMessage } from './commit.js';
5
+ export type { CommitOptions, CommitOutcome } from './commit.js';
6
+ export declare class GitLayer {
7
+ private git;
8
+ private projectRoot;
9
+ constructor(projectRoot: string);
10
+ isRepo(): Promise<boolean>;
11
+ /**
12
+ * Detect and recover from a stale .git/index.lock left by a prior crashed
13
+ * process. Returns a recovery action string if the lock was removed, or
14
+ * throws if the lock is recent (likely live) and should block startup.
15
+ *
16
+ * Threshold: 30 seconds. A lock younger than that is treated as a concurrent
17
+ * process signal and not touched.
18
+ */
19
+ recoverStaleIndexLock(): {
20
+ action: 'none' | 'removed';
21
+ } | {
22
+ action: 'conflict';
23
+ mtime: Date;
24
+ };
25
+ initRepo(): Promise<void>;
26
+ commit(opts: CommitOptions): Promise<CommitOutcome>;
27
+ history(filePath: string, opts?: {
28
+ limit?: number;
29
+ since?: string;
30
+ }): Promise<ParsedCommit[]>;
31
+ audit(opts?: {
32
+ since?: string;
33
+ until?: string;
34
+ docType?: DocType;
35
+ action?: string;
36
+ }): Promise<AuditEntry[]>;
37
+ diff(filePath: string, docId: DocId, from: string, to?: string): Promise<DiffResult | null>;
38
+ snapshot(filePath: string, docId: DocId, at: string): Promise<SnapshotResult | null>;
39
+ getSimpleGit(): SimpleGit;
40
+ addAnnotatedTag(name: string, message: string): Promise<void>;
41
+ /**
42
+ * List annotated tags whose name starts with the given prefix. Uses
43
+ * for-each-ref so name + commit sha + tagger date + subject all come back
44
+ * in one git call. Returns [] when no tags match.
45
+ *
46
+ * For annotated tags, `%(*objectname)` is the underlying commit sha.
47
+ * For lightweight tags, that field is empty — we surface the empty sha
48
+ * verbatim rather than fall back to the tag object's own sha, since
49
+ * lightweight tags shouldn't appear under our prefix in practice.
50
+ */
51
+ listTagsByPrefix(prefix: string): Promise<Array<{
52
+ tag: string;
53
+ sha: string;
54
+ message: string;
55
+ createdAt: string;
56
+ }>>;
57
+ deleteTag(name: string): Promise<void>;
58
+ /** Returns the HEAD commit sha, or null if the repo has no commits yet. */
59
+ headSha(): Promise<string | null>;
60
+ /** Returns the short branch name (e.g. "main") or "HEAD" when detached. */
61
+ currentBranch(): Promise<string>;
62
+ }
63
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/git/index.ts"],"names":[],"mappings":"AAKA,OAAO,EAAa,KAAK,SAAS,EAAE,MAAM,YAAY,CAAC;AAIvD,OAAO,KAAK,EACV,KAAK,EACL,OAAO,EAEP,YAAY,EACZ,UAAU,EACV,UAAU,EACV,cAAc,EACf,MAAM,aAAa,CAAC;AACrB,OAAO,EAAmC,KAAK,aAAa,EAAE,KAAK,aAAa,EAAE,MAAM,aAAa,CAAC;AAKtG,OAAO,EAAE,mBAAmB,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAC;AACtE,YAAY,EAAE,aAAa,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAEhE,qBAAa,QAAQ;IACnB,OAAO,CAAC,GAAG,CAAY;IACvB,OAAO,CAAC,WAAW,CAAS;gBAEhB,WAAW,EAAE,MAAM;IAKzB,MAAM,IAAI,OAAO,CAAC,OAAO,CAAC;IAMhC;;;;;;;OAOG;IACH,qBAAqB,IAAI;QAAE,MAAM,EAAE,MAAM,GAAG,SAAS,CAAA;KAAE,GAAG;QAAE,MAAM,EAAE,UAAU,CAAC;QAAC,KAAK,EAAE,IAAI,CAAA;KAAE;IAgBvF,QAAQ,IAAI,OAAO,CAAC,IAAI,CAAC;IAwBzB,MAAM,CAAC,IAAI,EAAE,aAAa,GAAG,OAAO,CAAC,aAAa,CAAC;IAInD,OAAO,CACX,QAAQ,EAAE,MAAM,EAChB,IAAI,CAAC,EAAE;QAAE,KAAK,CAAC,EAAE,MAAM,CAAC;QAAC,KAAK,CAAC,EAAE,MAAM,CAAA;KAAE,GACxC,OAAO,CAAC,YAAY,EAAE,CAAC;IAIpB,KAAK,CAAC,IAAI,CAAC,EAAE;QACjB,KAAK,CAAC,EAAE,MAAM,CAAC;QACf,KAAK,CAAC,EAAE,MAAM,CAAC;QACf,OAAO,CAAC,EAAE,OAAO,CAAC;QAClB,MAAM,CAAC,EAAE,MAAM,CAAC;KACjB,GAAG,OAAO,CAAC,UAAU,EAAE,CAAC;IAInB,IAAI,CACR,QAAQ,EAAE,MAAM,EAChB,KAAK,EAAE,KAAK,EACZ,IAAI,EAAE,MAAM,EACZ,EAAE,CAAC,EAAE,MAAM,GACV,OAAO,CAAC,UAAU,GAAG,IAAI,CAAC;IAIvB,QAAQ,CACZ,QAAQ,EAAE,MAAM,EAChB,KAAK,EAAE,KAAK,EACZ,EAAE,EAAE,MAAM,GACT,OAAO,CAAC,cAAc,GAAG,IAAI,CAAC;IAIjC,YAAY,IAAI,SAAS;IAMnB,eAAe,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAgBnE;;;;;;;;;OASG;IACG,gBAAgB,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,KAAK,CAAC;QAAE,GAAG,EAAE,MAAM,CAAC;QAAC,GAAG,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAC;QAAC,SAAS,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IAgBlH,SAAS,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAI5C,2EAA2E;IACrE,OAAO,IAAI,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC;IASvC,2EAA2E;IACrE,aAAa,IAAI,OAAO,CAAC,MAAM,CAAC;CAQvC"}
@@ -0,0 +1,151 @@
1
+ // ============================================================================
2
+ // Git Layer — Public API
3
+ // Thin integration layer wrapping simple-git for MAAD operations.
4
+ // ============================================================================
5
+ import { simpleGit } from 'simple-git';
6
+ import { existsSync, writeFileSync, statSync, unlinkSync } from 'node:fs';
7
+ import path from 'node:path';
8
+ import { autoCommit, resolveCommitAuthor } from './commit.js';
9
+ import { getHistory, getAudit } from './log.js';
10
+ import { getDiff } from './diff.js';
11
+ import { getSnapshot } from './snapshot.js';
12
+ export { formatCommitMessage, parseCommitMessage } from './commit.js';
13
+ export class GitLayer {
14
+ git;
15
+ projectRoot;
16
+ constructor(projectRoot) {
17
+ this.projectRoot = projectRoot;
18
+ this.git = simpleGit(projectRoot);
19
+ }
20
+ async isRepo() {
21
+ // Check if .git exists at the project root specifically — not a parent repo
22
+ const gitDir = path.join(this.projectRoot, '.git');
23
+ return existsSync(gitDir);
24
+ }
25
+ /**
26
+ * Detect and recover from a stale .git/index.lock left by a prior crashed
27
+ * process. Returns a recovery action string if the lock was removed, or
28
+ * throws if the lock is recent (likely live) and should block startup.
29
+ *
30
+ * Threshold: 30 seconds. A lock younger than that is treated as a concurrent
31
+ * process signal and not touched.
32
+ */
33
+ recoverStaleIndexLock() {
34
+ const lockPath = path.join(this.projectRoot, '.git', 'index.lock');
35
+ if (!existsSync(lockPath))
36
+ return { action: 'none' };
37
+ const stat = statSync(lockPath);
38
+ const ageMs = Date.now() - stat.mtimeMs;
39
+ const STALE_MS = 30_000;
40
+ if (ageMs < STALE_MS) {
41
+ return { action: 'conflict', mtime: stat.mtime };
42
+ }
43
+ unlinkSync(lockPath);
44
+ return { action: 'removed' };
45
+ }
46
+ async initRepo() {
47
+ if (await this.isRepo())
48
+ return;
49
+ await this.git.init();
50
+ // Create .gitignore if it doesn't exist
51
+ const gitignorePath = path.join(this.projectRoot, '.gitignore');
52
+ if (!existsSync(gitignorePath)) {
53
+ writeFileSync(gitignorePath, '_backend/\n', 'utf-8');
54
+ }
55
+ // Initial commit. Identity env per fup-2026-095 — same fragility as
56
+ // autoCommit: a host without `git config user.name/email` would otherwise
57
+ // fail this initial commit too.
58
+ await this.git.add('.gitignore');
59
+ const identity = resolveCommitAuthor();
60
+ await this.git
61
+ .env('GIT_AUTHOR_NAME', identity.GIT_AUTHOR_NAME)
62
+ .env('GIT_AUTHOR_EMAIL', identity.GIT_AUTHOR_EMAIL)
63
+ .env('GIT_COMMITTER_NAME', identity.GIT_COMMITTER_NAME)
64
+ .env('GIT_COMMITTER_EMAIL', identity.GIT_COMMITTER_EMAIL)
65
+ .commit('maad:init — Initialize MAAD project');
66
+ }
67
+ async commit(opts) {
68
+ return autoCommit(this.git, opts);
69
+ }
70
+ async history(filePath, opts) {
71
+ return getHistory(this.git, filePath, opts);
72
+ }
73
+ async audit(opts) {
74
+ return getAudit(this.git, opts);
75
+ }
76
+ async diff(filePath, docId, from, to) {
77
+ return getDiff(this.git, filePath, docId, from, to);
78
+ }
79
+ async snapshot(filePath, docId, at) {
80
+ return getSnapshot(this.git, filePath, docId, at);
81
+ }
82
+ getSimpleGit() {
83
+ return this.git;
84
+ }
85
+ // ---- 0.7.10 — tag operations for maad_backup ---------------------------
86
+ async addAnnotatedTag(name, message) {
87
+ // Inject the committer identity env per-call — annotated tags need a
88
+ // tagger identity and we can't depend on the host having `git config
89
+ // user.name/user.email` set. Same pattern as autoCommit + initRepo
90
+ // (0.7.3 fup-2026-095). Without this the call fails on bare CI runners
91
+ // and any other host without global git config — masked locally on any
92
+ // dev machine that does have it set.
93
+ const identity = resolveCommitAuthor();
94
+ await this.git
95
+ .env('GIT_AUTHOR_NAME', identity.GIT_AUTHOR_NAME)
96
+ .env('GIT_AUTHOR_EMAIL', identity.GIT_AUTHOR_EMAIL)
97
+ .env('GIT_COMMITTER_NAME', identity.GIT_COMMITTER_NAME)
98
+ .env('GIT_COMMITTER_EMAIL', identity.GIT_COMMITTER_EMAIL)
99
+ .addAnnotatedTag(name, message);
100
+ }
101
+ /**
102
+ * List annotated tags whose name starts with the given prefix. Uses
103
+ * for-each-ref so name + commit sha + tagger date + subject all come back
104
+ * in one git call. Returns [] when no tags match.
105
+ *
106
+ * For annotated tags, `%(*objectname)` is the underlying commit sha.
107
+ * For lightweight tags, that field is empty — we surface the empty sha
108
+ * verbatim rather than fall back to the tag object's own sha, since
109
+ * lightweight tags shouldn't appear under our prefix in practice.
110
+ */
111
+ async listTagsByPrefix(prefix) {
112
+ const sep = '\x1f'; // ASCII unit separator — safe vs '|' in messages.
113
+ const format = `%(refname:short)${sep}%(*objectname)${sep}%(taggerdate:iso-strict)${sep}%(contents:subject)`;
114
+ const raw = await this.git.raw(['for-each-ref', `--format=${format}`, `refs/tags/${prefix}*`]);
115
+ if (!raw.trim())
116
+ return [];
117
+ return raw.trim().split('\n').map(line => {
118
+ const parts = line.split(sep);
119
+ return {
120
+ tag: parts[0] ?? '',
121
+ sha: parts[1] ?? '',
122
+ createdAt: parts[2] ?? '',
123
+ message: parts[3] ?? '',
124
+ };
125
+ });
126
+ }
127
+ async deleteTag(name) {
128
+ await this.git.tag(['-d', name]);
129
+ }
130
+ /** Returns the HEAD commit sha, or null if the repo has no commits yet. */
131
+ async headSha() {
132
+ try {
133
+ const out = await this.git.revparse(['HEAD']);
134
+ return out.trim() || null;
135
+ }
136
+ catch {
137
+ return null;
138
+ }
139
+ }
140
+ /** Returns the short branch name (e.g. "main") or "HEAD" when detached. */
141
+ async currentBranch() {
142
+ try {
143
+ const out = await this.git.revparse(['--abbrev-ref', 'HEAD']);
144
+ return out.trim() || 'HEAD';
145
+ }
146
+ catch {
147
+ return 'HEAD';
148
+ }
149
+ }
150
+ }
151
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/git/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,13 @@
1
+ import type { SimpleGit } from 'simple-git';
2
+ import { type DocType, type ParsedCommit, type AuditEntry } from '../types.js';
3
+ export declare function getHistory(git: SimpleGit, filePath: string, opts?: {
4
+ limit?: number;
5
+ since?: string;
6
+ }): Promise<ParsedCommit[]>;
7
+ export declare function getAudit(git: SimpleGit, opts?: {
8
+ since?: string;
9
+ until?: string;
10
+ docType?: DocType;
11
+ action?: string;
12
+ }): Promise<AuditEntry[]>;
13
+ //# sourceMappingURL=log.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"log.d.ts","sourceRoot":"","sources":["../../src/git/log.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAG5C,OAAO,EAKL,KAAK,OAAO,EACZ,KAAK,YAAY,EACjB,KAAK,UAAU,EAChB,MAAM,aAAa,CAAC;AASrB,wBAAsB,UAAU,CAC9B,GAAG,EAAE,SAAS,EACd,QAAQ,EAAE,MAAM,EAChB,IAAI,CAAC,EAAE;IAAE,KAAK,CAAC,EAAE,MAAM,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAA;CAAE,GACxC,OAAO,CAAC,YAAY,EAAE,CAAC,CA4CzB;AAED,wBAAsB,QAAQ,CAC5B,GAAG,EAAE,SAAS,EACd,IAAI,CAAC,EAAE;IAAE,KAAK,CAAC,EAAE,MAAM,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAC;IAAC,OAAO,CAAC,EAAE,OAAO,CAAC;IAAC,MAAM,CAAC,EAAE,MAAM,CAAA;CAAE,GAC5E,OAAO,CAAC,UAAU,EAAE,CAAC,CAkEvB"}