@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,309 @@
1
+ type Brand<T, B extends string> = T & {
2
+ readonly __brand: B;
3
+ };
4
+ export type DocId = Brand<string, 'DocId'>;
5
+ export type DocType = Brand<string, 'DocType'>;
6
+ export type SchemaRef = Brand<string, 'SchemaRef'>;
7
+ export type FilePath = Brand<string, 'FilePath'>;
8
+ export type BlockId = Brand<string, 'BlockId'>;
9
+ export type CommitSha = Brand<string, 'CommitSha'>;
10
+ export declare function docId(raw: string): DocId;
11
+ export declare function docType(raw: string): DocType;
12
+ export declare function schemaRef(raw: string): SchemaRef;
13
+ export declare function filePath(raw: string): FilePath;
14
+ export declare function blockId(raw: string): BlockId;
15
+ export declare function commitSha(raw: string): CommitSha;
16
+ export declare const PRIMITIVES: readonly ["entity", "date", "duration", "amount", "measure", "quantity", "percentage", "location", "identifier", "contact", "media"];
17
+ export type Primitive = typeof PRIMITIVES[number];
18
+ export declare const DEFAULT_SUBTYPE_MAP: Record<string, Primitive>;
19
+ export declare function buildSubtypeMap(defaults: Record<string, Primitive>, projectExtensions?: Record<string, string>): Record<string, Primitive>;
20
+ export declare function resolvePrimitive(subtype: string, map: Record<string, Primitive>): Primitive;
21
+ export interface SourceLocation {
22
+ file: FilePath;
23
+ line: number;
24
+ col: number;
25
+ }
26
+ export interface ParsedDocument {
27
+ filePath: FilePath;
28
+ fileHash: string;
29
+ frontmatter: Record<string, unknown>;
30
+ blocks: ParsedBlock[];
31
+ valueCalls: ValueCall[];
32
+ annotations: InlineAnnotation[];
33
+ }
34
+ export interface ParsedBlock {
35
+ id: BlockId | null;
36
+ heading: string;
37
+ level: number;
38
+ startLine: number;
39
+ endLine: number;
40
+ }
41
+ export interface ValueCall {
42
+ field: string;
43
+ location: SourceLocation;
44
+ }
45
+ export interface InlineAnnotation {
46
+ rawType: string;
47
+ primitive: Primitive;
48
+ value: string;
49
+ label: string;
50
+ location: SourceLocation;
51
+ }
52
+ export type FieldType = 'string' | 'number' | 'date' | 'enum' | 'ref' | 'boolean' | 'list' | 'amount';
53
+ export interface FieldDefinition {
54
+ name: string;
55
+ type: FieldType;
56
+ index: boolean;
57
+ role: string | null;
58
+ format: string | null;
59
+ target: DocType | null;
60
+ values: string[] | null;
61
+ defaultValue: unknown;
62
+ itemType: FieldType | null;
63
+ storePrecision: import('./schema/precision.js').Precision | null;
64
+ onCoarser: 'warn' | 'error' | null;
65
+ displayPrecision: import('./schema/precision.js').Precision | null;
66
+ }
67
+ export interface TemplateHeading {
68
+ level: number;
69
+ text: string;
70
+ id: string | null;
71
+ }
72
+ export interface SchemaDefinition {
73
+ type: DocType;
74
+ version: number;
75
+ required: string[];
76
+ fields: Map<string, FieldDefinition>;
77
+ template: TemplateHeading[] | null;
78
+ }
79
+ export interface RegistryType {
80
+ name: DocType;
81
+ path: string;
82
+ idPrefix: string;
83
+ schemaRef: SchemaRef;
84
+ template: string | null;
85
+ }
86
+ export interface ExtractionConfig {
87
+ subtypes: Record<string, Primitive>;
88
+ }
89
+ export interface Registry {
90
+ types: Map<DocType, RegistryType>;
91
+ extraction: ExtractionConfig;
92
+ subtypeMap: Record<string, Primitive>;
93
+ }
94
+ export interface SchemaStore {
95
+ schemas: Map<SchemaRef, SchemaDefinition>;
96
+ getSchema(ref: SchemaRef): SchemaDefinition | undefined;
97
+ getSchemaForType(type: DocType): SchemaDefinition | undefined;
98
+ /**
99
+ * 0.7.7 (fup-2026-202) — per-file mtime + size captured at load time.
100
+ * Keyed by absolute path. Used by `isStale()` to detect cross-process
101
+ * schema edits; if any cached file's on-disk mtime/size has drifted, a
102
+ * concurrent process edited the schema and our in-memory copy is stale.
103
+ */
104
+ cachedFiles: Map<string, {
105
+ mtimeMs: number;
106
+ size: number;
107
+ }>;
108
+ /**
109
+ * 0.7.7 — Returns true when any cached schema file's on-disk
110
+ * mtime/size differs from what was captured at load time, OR a cached
111
+ * file no longer exists. Cheap (one fstat per cached file). Triggered
112
+ * from the engine write-mutex entry so every write sees fresh schemas.
113
+ */
114
+ isStale(): boolean;
115
+ }
116
+ export interface BoundDocument {
117
+ parsed: ParsedDocument;
118
+ docId: DocId;
119
+ docType: DocType;
120
+ schemaRef: SchemaRef;
121
+ validatedFields: Record<string, ValidatedField>;
122
+ validationResult: ValidationResult;
123
+ }
124
+ export interface ValidatedField {
125
+ name: string;
126
+ value: unknown;
127
+ fieldType: FieldType;
128
+ role: string | null;
129
+ indexed: boolean;
130
+ }
131
+ export interface ValidationResult {
132
+ valid: boolean;
133
+ errors: ValidationError[];
134
+ warnings: ValidationWarning[];
135
+ }
136
+ export interface ValidationError {
137
+ field: string;
138
+ message: string;
139
+ location: SourceLocation | null;
140
+ }
141
+ /**
142
+ * Non-fatal signal emitted by the validator. Never blocks the write.
143
+ * Surfaces in response `_meta.warnings[]` and in the ops log so agents can
144
+ * self-correct and operators can see patterns.
145
+ *
146
+ * First use case is PRECISION_COARSER_THAN_DECLARED (0.6.7 Phase 4), but
147
+ * the channel is reusable for future soft-validations — deprecated fields,
148
+ * length hints, cross-field invariants, schema-evolution notices.
149
+ */
150
+ export interface ValidationWarning {
151
+ field: string;
152
+ message: string;
153
+ code: string;
154
+ location: SourceLocation | null;
155
+ }
156
+ export interface ExtractionResult {
157
+ document: BoundDocument;
158
+ objects: ExtractedObject[];
159
+ relationships: Relationship[];
160
+ }
161
+ export interface ExtractedObject {
162
+ primitive: Primitive;
163
+ subtype: string;
164
+ value: string;
165
+ normalizedValue: string | number | Record<string, unknown> | null;
166
+ label: string;
167
+ role: string | null;
168
+ docId: DocId;
169
+ location: SourceLocation;
170
+ blockId: BlockId | null;
171
+ }
172
+ export interface Relationship {
173
+ sourceDocId: DocId;
174
+ targetDocId: DocId;
175
+ field: string;
176
+ relationType: 'ref' | 'mention';
177
+ }
178
+ export interface DocumentRecord {
179
+ docId: DocId;
180
+ docType: DocType;
181
+ schemaRef: SchemaRef;
182
+ filePath: FilePath;
183
+ fileHash: string;
184
+ version: number;
185
+ deleted: boolean;
186
+ indexedAt: string;
187
+ updatedAt: string;
188
+ }
189
+ export type FilterCondition = {
190
+ op: 'eq';
191
+ value: unknown;
192
+ } | {
193
+ op: 'neq';
194
+ value: unknown;
195
+ } | {
196
+ op: 'gt' | 'gte' | 'lt' | 'lte';
197
+ value: number | string;
198
+ } | {
199
+ op: 'in';
200
+ value: unknown[];
201
+ } | {
202
+ op: 'contains';
203
+ value: string;
204
+ } | {
205
+ op: 'between';
206
+ value: [number | string, number | string];
207
+ };
208
+ /**
209
+ * 0.7.1 R2 — filter input accepts composite forms:
210
+ * - scalar (shorthand eq): "value", 42
211
+ * - single FilterCondition: { op: "eq", value: "x" }
212
+ * - array-of-ops: [{op, value}, {op, value}, ...] — AND semantics
213
+ * - between shortcut: { op: "between", value: [lo, hi] }
214
+ * Normalized to Record<string, FilterCondition[]> at engine layer before
215
+ * reaching the backend. All atomic conditions in the array combine with AND.
216
+ */
217
+ export type FilterInput = FilterCondition | FilterCondition[] | string | number | unknown;
218
+ export interface DocumentQuery {
219
+ docType?: DocType;
220
+ filters?: Record<string, FilterInput>;
221
+ fields?: string[];
222
+ sortBy?: string;
223
+ sortOrder?: 'asc' | 'desc';
224
+ limit?: number;
225
+ offset?: number;
226
+ }
227
+ export interface ObjectQuery {
228
+ primitive?: Primitive;
229
+ subtype?: string;
230
+ value?: string;
231
+ contains?: string;
232
+ range?: {
233
+ gte?: string;
234
+ gt?: string;
235
+ lte?: string;
236
+ lt?: string;
237
+ };
238
+ docId?: DocId;
239
+ limit?: number;
240
+ offset?: number;
241
+ }
242
+ export interface DocumentMatch {
243
+ docId: DocId;
244
+ docType: DocType;
245
+ filePath: FilePath;
246
+ fields?: Record<string, string>;
247
+ }
248
+ export interface ObjectMatch {
249
+ primitive: Primitive;
250
+ subtype: string;
251
+ value: string;
252
+ normalizedValue: string | number | null;
253
+ label: string;
254
+ docId: DocId;
255
+ sourceLine: number;
256
+ blockId: BlockId | null;
257
+ }
258
+ export interface BackendStats {
259
+ totalDocuments: number;
260
+ totalObjects: number;
261
+ totalRelationships: number;
262
+ lastIndexedAt: string | null;
263
+ documentCountByType: Record<string, number>;
264
+ }
265
+ export interface ParsedCommit {
266
+ action: string;
267
+ docId: DocId;
268
+ docType: DocType;
269
+ detail: string;
270
+ summary: string;
271
+ sha: CommitSha;
272
+ author: string;
273
+ timestamp: string;
274
+ }
275
+ export interface AuditEntry {
276
+ docId: DocId;
277
+ docType: DocType;
278
+ actions: number;
279
+ lastAction: string;
280
+ lastSummary: string;
281
+ lastAuthor: string;
282
+ lastTimestamp: string;
283
+ }
284
+ export interface DiffResult {
285
+ docId: DocId;
286
+ from: CommitSha;
287
+ to: CommitSha;
288
+ frontmatterChanges: Record<string, {
289
+ from: unknown;
290
+ to: unknown;
291
+ }>;
292
+ bodyDiff: string;
293
+ }
294
+ export interface SnapshotResult {
295
+ docId: DocId;
296
+ commit: CommitSha;
297
+ timestamp: string;
298
+ frontmatter: Record<string, unknown>;
299
+ body: string;
300
+ }
301
+ export interface VerbatimZone {
302
+ startLine: number;
303
+ endLine: number;
304
+ startCol?: number | undefined;
305
+ endCol?: number | undefined;
306
+ inline: boolean;
307
+ }
308
+ export {};
309
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAOA,KAAK,KAAK,CAAC,CAAC,EAAE,CAAC,SAAS,MAAM,IAAI,CAAC,GAAG;IAAE,QAAQ,CAAC,OAAO,EAAE,CAAC,CAAA;CAAE,CAAC;AAE9D,MAAM,MAAM,KAAK,GAAG,KAAK,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;AAC3C,MAAM,MAAM,OAAO,GAAG,KAAK,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;AAC/C,MAAM,MAAM,SAAS,GAAG,KAAK,CAAC,MAAM,EAAE,WAAW,CAAC,CAAC;AACnD,MAAM,MAAM,QAAQ,GAAG,KAAK,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC;AACjD,MAAM,MAAM,OAAO,GAAG,KAAK,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;AAC/C,MAAM,MAAM,SAAS,GAAG,KAAK,CAAC,MAAM,EAAE,WAAW,CAAC,CAAC;AAEnD,wBAAgB,KAAK,CAAC,GAAG,EAAE,MAAM,GAAG,KAAK,CAExC;AAED,wBAAgB,OAAO,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAE5C;AAED,wBAAgB,SAAS,CAAC,GAAG,EAAE,MAAM,GAAG,SAAS,CAEhD;AAED,wBAAgB,QAAQ,CAAC,GAAG,EAAE,MAAM,GAAG,QAAQ,CAE9C;AAED,wBAAgB,OAAO,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAE5C;AAED,wBAAgB,SAAS,CAAC,GAAG,EAAE,MAAM,GAAG,SAAS,CAEhD;AAID,eAAO,MAAM,UAAU,sIAYb,CAAC;AAEX,MAAM,MAAM,SAAS,GAAG,OAAO,UAAU,CAAC,MAAM,CAAC,CAAC;AAElD,eAAO,MAAM,mBAAmB,EAAE,MAAM,CAAC,MAAM,EAAE,SAAS,CAsEzD,CAAC;AAEF,wBAAgB,eAAe,CAC7B,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,EACnC,iBAAiB,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GACzC,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,CAU3B;AAED,wBAAgB,gBAAgB,CAC9B,OAAO,EAAE,MAAM,EACf,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,GAC7B,SAAS,CAEX;AAID,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,QAAQ,CAAC;IACf,IAAI,EAAE,MAAM,CAAC;IACb,GAAG,EAAE,MAAM,CAAC;CACb;AAID,MAAM,WAAW,cAAc;IAC7B,QAAQ,EAAE,QAAQ,CAAC;IACnB,QAAQ,EAAE,MAAM,CAAC;IACjB,WAAW,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACrC,MAAM,EAAE,WAAW,EAAE,CAAC;IACtB,UAAU,EAAE,SAAS,EAAE,CAAC;IACxB,WAAW,EAAE,gBAAgB,EAAE,CAAC;CACjC;AAED,MAAM,WAAW,WAAW;IAC1B,EAAE,EAAE,OAAO,GAAG,IAAI,CAAC;IACnB,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,SAAS;IACxB,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,cAAc,CAAC;CAC1B;AAED,MAAM,WAAW,gBAAgB;IAC/B,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,SAAS,CAAC;IACrB,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,cAAc,CAAC;CAC1B;AAID,MAAM,MAAM,SAAS,GACjB,QAAQ,GACR,QAAQ,GACR,MAAM,GACN,MAAM,GACN,KAAK,GACL,SAAS,GACT,MAAM,GACN,QAAQ,CAAC;AAEb,MAAM,WAAW,eAAe;IAC9B,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,SAAS,CAAC;IAChB,KAAK,EAAE,OAAO,CAAC;IACf,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;IACpB,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;IACtB,MAAM,EAAE,OAAO,GAAG,IAAI,CAAC;IACvB,MAAM,EAAE,MAAM,EAAE,GAAG,IAAI,CAAC;IACxB,YAAY,EAAE,OAAO,CAAC;IACtB,QAAQ,EAAE,SAAS,GAAG,IAAI,CAAC;IAG3B,cAAc,EAAE,OAAO,uBAAuB,EAAE,SAAS,GAAG,IAAI,CAAC;IACjE,SAAS,EAAE,MAAM,GAAG,OAAO,GAAG,IAAI,CAAC;IACnC,gBAAgB,EAAE,OAAO,uBAAuB,EAAE,SAAS,GAAG,IAAI,CAAC;CACpE;AAED,MAAM,WAAW,eAAe;IAC9B,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;IACb,EAAE,EAAE,MAAM,GAAG,IAAI,CAAC;CACnB;AAED,MAAM,WAAW,gBAAgB;IAC/B,IAAI,EAAE,OAAO,CAAC;IACd,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,MAAM,EAAE,CAAC;IACnB,MAAM,EAAE,GAAG,CAAC,MAAM,EAAE,eAAe,CAAC,CAAC;IACrC,QAAQ,EAAE,eAAe,EAAE,GAAG,IAAI,CAAC;CACpC;AAID,MAAM,WAAW,YAAY;IAC3B,IAAI,EAAE,OAAO,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,SAAS,CAAC;IACrB,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;CACzB;AAED,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;CACrC;AAED,MAAM,WAAW,QAAQ;IACvB,KAAK,EAAE,GAAG,CAAC,OAAO,EAAE,YAAY,CAAC,CAAC;IAClC,UAAU,EAAE,gBAAgB,CAAC;IAC7B,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;CACvC;AAID,MAAM,WAAW,WAAW;IAC1B,OAAO,EAAE,GAAG,CAAC,SAAS,EAAE,gBAAgB,CAAC,CAAC;IAC1C,SAAS,CAAC,GAAG,EAAE,SAAS,GAAG,gBAAgB,GAAG,SAAS,CAAC;IACxD,gBAAgB,CAAC,IAAI,EAAE,OAAO,GAAG,gBAAgB,GAAG,SAAS,CAAC;IAC9D;;;;;OAKG;IACH,WAAW,EAAE,GAAG,CAAC,MAAM,EAAE;QAAE,OAAO,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IAC5D;;;;;OAKG;IACH,OAAO,IAAI,OAAO,CAAC;CACpB;AAID,MAAM,WAAW,aAAa;IAC5B,MAAM,EAAE,cAAc,CAAC;IACvB,KAAK,EAAE,KAAK,CAAC;IACb,OAAO,EAAE,OAAO,CAAC;IACjB,SAAS,EAAE,SAAS,CAAC;IACrB,eAAe,EAAE,MAAM,CAAC,MAAM,EAAE,cAAc,CAAC,CAAC;IAChD,gBAAgB,EAAE,gBAAgB,CAAC;CACpC;AAED,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,OAAO,CAAC;IACf,SAAS,EAAE,SAAS,CAAC;IACrB,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;IACpB,OAAO,EAAE,OAAO,CAAC;CAClB;AAED,MAAM,WAAW,gBAAgB;IAC/B,KAAK,EAAE,OAAO,CAAC;IACf,MAAM,EAAE,eAAe,EAAE,CAAC;IAC1B,QAAQ,EAAE,iBAAiB,EAAE,CAAC;CAC/B;AAED,MAAM,WAAW,eAAe;IAC9B,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,cAAc,GAAG,IAAI,CAAC;CACjC;AAED;;;;;;;;GAQG;AACH,MAAM,WAAW,iBAAiB;IAChC,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,cAAc,GAAG,IAAI,CAAC;CACjC;AAID,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,EAAE,aAAa,CAAC;IACxB,OAAO,EAAE,eAAe,EAAE,CAAC;IAC3B,aAAa,EAAE,YAAY,EAAE,CAAC;CAC/B;AAED,MAAM,WAAW,eAAe;IAC9B,SAAS,EAAE,SAAS,CAAC;IACrB,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,MAAM,CAAC;IACd,eAAe,EAAE,MAAM,GAAG,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,CAAC;IAClE,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;IACpB,KAAK,EAAE,KAAK,CAAC;IACb,QAAQ,EAAE,cAAc,CAAC;IACzB,OAAO,EAAE,OAAO,GAAG,IAAI,CAAC;CACzB;AAED,MAAM,WAAW,YAAY;IAC3B,WAAW,EAAE,KAAK,CAAC;IACnB,WAAW,EAAE,KAAK,CAAC;IACnB,KAAK,EAAE,MAAM,CAAC;IACd,YAAY,EAAE,KAAK,GAAG,SAAS,CAAC;CACjC;AAID,MAAM,WAAW,cAAc;IAC7B,KAAK,EAAE,KAAK,CAAC;IACb,OAAO,EAAE,OAAO,CAAC;IACjB,SAAS,EAAE,SAAS,CAAC;IACrB,QAAQ,EAAE,QAAQ,CAAC;IACnB,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,OAAO,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,MAAM,eAAe,GACvB;IAAE,EAAE,EAAE,IAAI,CAAC;IAAC,KAAK,EAAE,OAAO,CAAA;CAAE,GAC5B;IAAE,EAAE,EAAE,KAAK,CAAC;IAAC,KAAK,EAAE,OAAO,CAAA;CAAE,GAC7B;IAAE,EAAE,EAAE,IAAI,GAAG,KAAK,GAAG,IAAI,GAAG,KAAK,CAAC;IAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAAA;CAAE,GAC3D;IAAE,EAAE,EAAE,IAAI,CAAC;IAAC,KAAK,EAAE,OAAO,EAAE,CAAA;CAAE,GAC9B;IAAE,EAAE,EAAE,UAAU,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,GAIjC;IAAE,EAAE,EAAE,SAAS,CAAC;IAAC,KAAK,EAAE,CAAC,MAAM,GAAG,MAAM,EAAE,MAAM,GAAG,MAAM,CAAC,CAAA;CAAE,CAAC;AAEjE;;;;;;;;GAQG;AACH,MAAM,MAAM,WAAW,GAAG,eAAe,GAAG,eAAe,EAAE,GAAG,MAAM,GAAG,MAAM,GAAG,OAAO,CAAC;AAE1F,MAAM,WAAW,aAAa;IAC5B,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,WAAW,CAAC,CAAC;IACtC,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC;IAClB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,SAAS,CAAC,EAAE,KAAK,GAAG,MAAM,CAAC;IAC3B,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,WAAW;IAC1B,SAAS,CAAC,EAAE,SAAS,CAAC;IACtB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,KAAK,CAAC,EAAE;QAAE,GAAG,CAAC,EAAE,MAAM,CAAC;QAAC,EAAE,CAAC,EAAE,MAAM,CAAC;QAAC,GAAG,CAAC,EAAE,MAAM,CAAC;QAAC,EAAE,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IACjE,KAAK,CAAC,EAAE,KAAK,CAAC;IACd,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,aAAa;IAC5B,KAAK,EAAE,KAAK,CAAC;IACb,OAAO,EAAE,OAAO,CAAC;IACjB,QAAQ,EAAE,QAAQ,CAAC;IACnB,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CACjC;AAED,MAAM,WAAW,WAAW;IAC1B,SAAS,EAAE,SAAS,CAAC;IACrB,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,MAAM,CAAC;IACd,eAAe,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAAC;IACxC,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,KAAK,CAAC;IACb,UAAU,EAAE,MAAM,CAAC;IACnB,OAAO,EAAE,OAAO,GAAG,IAAI,CAAC;CACzB;AAED,MAAM,WAAW,YAAY;IAC3B,cAAc,EAAE,MAAM,CAAC;IACvB,YAAY,EAAE,MAAM,CAAC;IACrB,kBAAkB,EAAE,MAAM,CAAC;IAC3B,aAAa,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7B,mBAAmB,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CAC7C;AAID,MAAM,WAAW,YAAY;IAC3B,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,KAAK,CAAC;IACb,OAAO,EAAE,OAAO,CAAC;IACjB,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,MAAM,CAAC;IAChB,GAAG,EAAE,SAAS,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,UAAU;IACzB,KAAK,EAAE,KAAK,CAAC;IACb,OAAO,EAAE,OAAO,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;IAChB,UAAU,EAAE,MAAM,CAAC;IACnB,WAAW,EAAE,MAAM,CAAC;IACpB,UAAU,EAAE,MAAM,CAAC;IACnB,aAAa,EAAE,MAAM,CAAC;CACvB;AAED,MAAM,WAAW,UAAU;IACzB,KAAK,EAAE,KAAK,CAAC;IACb,IAAI,EAAE,SAAS,CAAC;IAChB,EAAE,EAAE,SAAS,CAAC;IACd,kBAAkB,EAAE,MAAM,CAAC,MAAM,EAAE;QAAE,IAAI,EAAE,OAAO,CAAC;QAAC,EAAE,EAAE,OAAO,CAAA;KAAE,CAAC,CAAC;IACnE,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,cAAc;IAC7B,KAAK,EAAE,KAAK,CAAC;IACb,MAAM,EAAE,SAAS,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACrC,IAAI,EAAE,MAAM,CAAC;CACd;AAID,MAAM,WAAW,YAAY;IAC3B,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC9B,MAAM,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC5B,MAAM,EAAE,OAAO,CAAC;CACjB"}
package/dist/types.js ADDED
@@ -0,0 +1,111 @@
1
+ // ============================================================================
2
+ // MAAD Core Types
3
+ // Every type, branded ID, IR, and constant used across the engine.
4
+ // ============================================================================
5
+ export function docId(raw) {
6
+ return raw;
7
+ }
8
+ export function docType(raw) {
9
+ return raw;
10
+ }
11
+ export function schemaRef(raw) {
12
+ return raw;
13
+ }
14
+ export function filePath(raw) {
15
+ return raw;
16
+ }
17
+ export function blockId(raw) {
18
+ return raw;
19
+ }
20
+ export function commitSha(raw) {
21
+ return raw;
22
+ }
23
+ // --- Extraction Primitives -------------------------------------------------
24
+ export const PRIMITIVES = [
25
+ 'entity',
26
+ 'date',
27
+ 'duration',
28
+ 'amount',
29
+ 'measure',
30
+ 'quantity',
31
+ 'percentage',
32
+ 'location',
33
+ 'identifier',
34
+ 'contact',
35
+ 'media',
36
+ ];
37
+ export const DEFAULT_SUBTYPE_MAP = {
38
+ // primitives self-map (so [[date:...]] resolves to 'date', not 'entity')
39
+ entity: 'entity',
40
+ date: 'date',
41
+ duration: 'duration',
42
+ amount: 'amount',
43
+ measure: 'measure',
44
+ quantity: 'quantity',
45
+ percentage: 'percentage',
46
+ location: 'location',
47
+ identifier: 'identifier',
48
+ contact: 'contact',
49
+ media: 'media',
50
+ // entity
51
+ person: 'entity',
52
+ org: 'entity',
53
+ team: 'entity',
54
+ product: 'entity',
55
+ event: 'entity',
56
+ role: 'entity',
57
+ // date
58
+ datetime: 'date',
59
+ // duration
60
+ timespan: 'duration',
61
+ // amount
62
+ currency: 'amount',
63
+ price: 'amount',
64
+ // measure
65
+ weight: 'measure',
66
+ height: 'measure',
67
+ distance: 'measure',
68
+ temperature: 'measure',
69
+ dosage: 'measure',
70
+ area: 'measure',
71
+ // quantity
72
+ count: 'quantity',
73
+ // percentage
74
+ rate: 'percentage',
75
+ ratio: 'percentage',
76
+ // location
77
+ address: 'location',
78
+ place: 'location',
79
+ coordinates: 'location',
80
+ // identifier
81
+ case_number: 'identifier',
82
+ invoice: 'identifier',
83
+ license: 'identifier',
84
+ reference: 'identifier',
85
+ code: 'identifier',
86
+ // contact
87
+ email: 'contact',
88
+ phone: 'contact',
89
+ url: 'contact',
90
+ // media
91
+ image: 'media',
92
+ video: 'media',
93
+ audio: 'media',
94
+ document: 'media',
95
+ diagram: 'media',
96
+ };
97
+ export function buildSubtypeMap(defaults, projectExtensions) {
98
+ const map = { ...defaults };
99
+ if (projectExtensions) {
100
+ for (const [subtype, primitive] of Object.entries(projectExtensions)) {
101
+ if (PRIMITIVES.includes(primitive)) {
102
+ map[subtype] = primitive;
103
+ }
104
+ }
105
+ }
106
+ return map;
107
+ }
108
+ export function resolvePrimitive(subtype, map) {
109
+ return map[subtype] ?? 'entity';
110
+ }
111
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA,+EAA+E;AAC/E,kBAAkB;AAClB,mEAAmE;AACnE,+EAA+E;AAa/E,MAAM,UAAU,KAAK,CAAC,GAAW;IAC/B,OAAO,GAAY,CAAC;AACtB,CAAC;AAED,MAAM,UAAU,OAAO,CAAC,GAAW;IACjC,OAAO,GAAc,CAAC;AACxB,CAAC;AAED,MAAM,UAAU,SAAS,CAAC,GAAW;IACnC,OAAO,GAAgB,CAAC;AAC1B,CAAC;AAED,MAAM,UAAU,QAAQ,CAAC,GAAW;IAClC,OAAO,GAAe,CAAC;AACzB,CAAC;AAED,MAAM,UAAU,OAAO,CAAC,GAAW;IACjC,OAAO,GAAc,CAAC;AACxB,CAAC;AAED,MAAM,UAAU,SAAS,CAAC,GAAW;IACnC,OAAO,GAAgB,CAAC;AAC1B,CAAC;AAED,8EAA8E;AAE9E,MAAM,CAAC,MAAM,UAAU,GAAG;IACxB,QAAQ;IACR,MAAM;IACN,UAAU;IACV,QAAQ;IACR,SAAS;IACT,UAAU;IACV,YAAY;IACZ,UAAU;IACV,YAAY;IACZ,SAAS;IACT,OAAO;CACC,CAAC;AAIX,MAAM,CAAC,MAAM,mBAAmB,GAA8B;IAC5D,yEAAyE;IACzE,MAAM,EAAE,QAAQ;IAChB,IAAI,EAAE,MAAM;IACZ,QAAQ,EAAE,UAAU;IACpB,MAAM,EAAE,QAAQ;IAChB,OAAO,EAAE,SAAS;IAClB,QAAQ,EAAE,UAAU;IACpB,UAAU,EAAE,YAAY;IACxB,QAAQ,EAAE,UAAU;IACpB,UAAU,EAAE,YAAY;IACxB,OAAO,EAAE,SAAS;IAClB,KAAK,EAAE,OAAO;IAEd,SAAS;IACT,MAAM,EAAE,QAAQ;IAChB,GAAG,EAAE,QAAQ;IACb,IAAI,EAAE,QAAQ;IACd,OAAO,EAAE,QAAQ;IACjB,KAAK,EAAE,QAAQ;IACf,IAAI,EAAE,QAAQ;IAEd,OAAO;IACP,QAAQ,EAAE,MAAM;IAEhB,WAAW;IACX,QAAQ,EAAE,UAAU;IAEpB,SAAS;IACT,QAAQ,EAAE,QAAQ;IAClB,KAAK,EAAE,QAAQ;IAEf,UAAU;IACV,MAAM,EAAE,SAAS;IACjB,MAAM,EAAE,SAAS;IACjB,QAAQ,EAAE,SAAS;IACnB,WAAW,EAAE,SAAS;IACtB,MAAM,EAAE,SAAS;IACjB,IAAI,EAAE,SAAS;IAEf,WAAW;IACX,KAAK,EAAE,UAAU;IAEjB,aAAa;IACb,IAAI,EAAE,YAAY;IAClB,KAAK,EAAE,YAAY;IAEnB,WAAW;IACX,OAAO,EAAE,UAAU;IACnB,KAAK,EAAE,UAAU;IACjB,WAAW,EAAE,UAAU;IAEvB,aAAa;IACb,WAAW,EAAE,YAAY;IACzB,OAAO,EAAE,YAAY;IACrB,OAAO,EAAE,YAAY;IACrB,SAAS,EAAE,YAAY;IACvB,IAAI,EAAE,YAAY;IAElB,UAAU;IACV,KAAK,EAAE,SAAS;IAChB,KAAK,EAAE,SAAS;IAChB,GAAG,EAAE,SAAS;IAEd,QAAQ;IACR,KAAK,EAAE,OAAO;IACd,KAAK,EAAE,OAAO;IACd,KAAK,EAAE,OAAO;IACd,QAAQ,EAAE,OAAO;IACjB,OAAO,EAAE,OAAO;CACjB,CAAC;AAEF,MAAM,UAAU,eAAe,CAC7B,QAAmC,EACnC,iBAA0C;IAE1C,MAAM,GAAG,GAAG,EAAE,GAAG,QAAQ,EAAE,CAAC;IAC5B,IAAI,iBAAiB,EAAE,CAAC;QACtB,KAAK,MAAM,CAAC,OAAO,EAAE,SAAS,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,iBAAiB,CAAC,EAAE,CAAC;YACrE,IAAK,UAAgC,CAAC,QAAQ,CAAC,SAAS,CAAC,EAAE,CAAC;gBAC1D,GAAG,CAAC,OAAO,CAAC,GAAG,SAAsB,CAAC;YACxC,CAAC;QACH,CAAC;IACH,CAAC;IACD,OAAO,GAAG,CAAC;AACb,CAAC;AAED,MAAM,UAAU,gBAAgB,CAC9B,OAAe,EACf,GAA8B;IAE9B,OAAO,GAAG,CAAC,OAAO,CAAC,IAAI,QAAQ,CAAC;AAClC,CAAC"}
@@ -0,0 +1,7 @@
1
+ import type { SchemaDefinition } from '../types.js';
2
+ export { serializeFrontmatter, serializeField } from './serializer.js';
3
+ export { generateTemplateBody } from './template.js';
4
+ export declare function generateDocument(frontmatter: Record<string, unknown>, schema: SchemaDefinition, body?: string | undefined): string;
5
+ export declare function extractBody(rawContent: string): string;
6
+ export declare function appendToBody(existingContent: string, additional: string): string;
7
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/writer/index.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAIpD,OAAO,EAAE,oBAAoB,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AACvE,OAAO,EAAE,oBAAoB,EAAE,MAAM,eAAe,CAAC;AAErD,wBAAgB,gBAAgB,CAC9B,WAAW,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EACpC,MAAM,EAAE,gBAAgB,EACxB,IAAI,CAAC,EAAE,MAAM,GAAG,SAAS,GACxB,MAAM,CAaR;AAED,wBAAgB,WAAW,CAAC,UAAU,EAAE,MAAM,GAAG,MAAM,CAGtD;AAED,wBAAgB,YAAY,CAAC,eAAe,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,MAAM,CAQhF"}
@@ -0,0 +1,32 @@
1
+ // ============================================================================
2
+ // Document Writer — Public API
3
+ // Generates, updates, and serializes markdown documents deterministically.
4
+ // ============================================================================
5
+ import { serializeFrontmatter } from './serializer.js';
6
+ import { generateTemplateBody } from './template.js';
7
+ export { serializeFrontmatter, serializeField } from './serializer.js';
8
+ export { generateTemplateBody } from './template.js';
9
+ export function generateDocument(frontmatter, schema, body) {
10
+ const fm = serializeFrontmatter(frontmatter, schema);
11
+ // If no body provided, generate from template (if schema defines one)
12
+ const resolvedBody = body ?? generateTemplateBody(schema, frontmatter);
13
+ const parts = [fm, ''];
14
+ if (resolvedBody.length > 0) {
15
+ parts.push(resolvedBody);
16
+ parts.push('');
17
+ }
18
+ return parts.join('\n');
19
+ }
20
+ export function extractBody(rawContent) {
21
+ const match = /^---\n[\s\S]*?\n---\n?([\s\S]*)$/.exec(rawContent);
22
+ return match ? match[1].trim() : rawContent.trim();
23
+ }
24
+ export function appendToBody(existingContent, additional) {
25
+ const fmMatch = /^(---\n[\s\S]*?\n---\n?)([\s\S]*)$/.exec(existingContent);
26
+ if (!fmMatch)
27
+ return existingContent + '\n\n' + additional;
28
+ const fmPart = fmMatch[1];
29
+ const bodyPart = fmMatch[2].trimEnd();
30
+ return fmPart + bodyPart + '\n\n' + additional + '\n';
31
+ }
32
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/writer/index.ts"],"names":[],"mappings":"AAAA,+EAA+E;AAC/E,+BAA+B;AAC/B,2EAA2E;AAC3E,+EAA+E;AAG/E,OAAO,EAAE,oBAAoB,EAAE,MAAM,iBAAiB,CAAC;AACvD,OAAO,EAAE,oBAAoB,EAAE,MAAM,eAAe,CAAC;AAErD,OAAO,EAAE,oBAAoB,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AACvE,OAAO,EAAE,oBAAoB,EAAE,MAAM,eAAe,CAAC;AAErD,MAAM,UAAU,gBAAgB,CAC9B,WAAoC,EACpC,MAAwB,EACxB,IAAyB;IAEzB,MAAM,EAAE,GAAG,oBAAoB,CAAC,WAAW,EAAE,MAAM,CAAC,CAAC;IAErD,sEAAsE;IACtE,MAAM,YAAY,GAAG,IAAI,IAAI,oBAAoB,CAAC,MAAM,EAAE,WAAW,CAAC,CAAC;IAEvE,MAAM,KAAK,GAAG,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;IACvB,IAAI,YAAY,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC5B,KAAK,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;QACzB,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACjB,CAAC;IAED,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC1B,CAAC;AAED,MAAM,UAAU,WAAW,CAAC,UAAkB;IAC5C,MAAM,KAAK,GAAG,kCAAkC,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;IAClE,OAAO,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAE,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,UAAU,CAAC,IAAI,EAAE,CAAC;AACtD,CAAC;AAED,MAAM,UAAU,YAAY,CAAC,eAAuB,EAAE,UAAkB;IACtE,MAAM,OAAO,GAAG,oCAAoC,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;IAC3E,IAAI,CAAC,OAAO;QAAE,OAAO,eAAe,GAAG,MAAM,GAAG,UAAU,CAAC;IAE3D,MAAM,MAAM,GAAG,OAAO,CAAC,CAAC,CAAE,CAAC;IAC3B,MAAM,QAAQ,GAAG,OAAO,CAAC,CAAC,CAAE,CAAC,OAAO,EAAE,CAAC;IAEvC,OAAO,MAAM,GAAG,QAAQ,GAAG,MAAM,GAAG,UAAU,GAAG,IAAI,CAAC;AACxD,CAAC"}
@@ -0,0 +1,4 @@
1
+ import type { SchemaDefinition } from '../types.js';
2
+ export declare function serializeFrontmatter(frontmatter: Record<string, unknown>, schema: SchemaDefinition): string;
3
+ export declare function serializeField(key: string, value: unknown): string;
4
+ //# sourceMappingURL=serializer.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"serializer.d.ts","sourceRoot":"","sources":["../../src/writer/serializer.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAiBpD,wBAAgB,oBAAoB,CAClC,WAAW,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EACpC,MAAM,EAAE,gBAAgB,GACvB,MAAM,CAsCR;AAED,wBAAgB,cAAc,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,GAAG,MAAM,CAiDlE"}
@@ -0,0 +1,103 @@
1
+ // ============================================================================
2
+ // YAML Serializer
3
+ // Serializes frontmatter to YAML with deterministic field ordering.
4
+ // ============================================================================
5
+ import yaml from 'js-yaml';
6
+ // Coercion-roundtrip guard. Any string whose unquoted YAML form would parse
7
+ // back as a non-string under our CORE_SCHEMA loader must be quoted, or string
8
+ // fields silently corrupt on read. The static keyword/numeric checks below
9
+ // catch the common cases; this guard is the catch-all that future-proofs us
10
+ // against any implicit-tag scalar we forgot to enumerate (leading-zero ints,
11
+ // sci-notation lookalikes like `1e38892`, hex/octal literals, etc.).
12
+ function wouldCoerceFromString(candidate) {
13
+ try {
14
+ const parsed = yaml.load(candidate, { schema: yaml.CORE_SCHEMA });
15
+ return parsed !== candidate;
16
+ }
17
+ catch {
18
+ return true;
19
+ }
20
+ }
21
+ export function serializeFrontmatter(frontmatter, schema) {
22
+ const lines = ['---'];
23
+ const written = new Set();
24
+ // Core keys first: doc_id, doc_type, schema
25
+ const coreKeys = ['doc_id', 'doc_type', 'schema'];
26
+ for (const key of coreKeys) {
27
+ if (key in frontmatter) {
28
+ lines.push(serializeField(key, frontmatter[key]));
29
+ written.add(key);
30
+ }
31
+ }
32
+ // Required fields next (in schema order)
33
+ for (const key of schema.required) {
34
+ if (!written.has(key) && key in frontmatter) {
35
+ lines.push(serializeField(key, frontmatter[key]));
36
+ written.add(key);
37
+ }
38
+ }
39
+ // Remaining fields (in schema field order, then any extras)
40
+ for (const [key] of schema.fields) {
41
+ if (!written.has(key) && key in frontmatter) {
42
+ lines.push(serializeField(key, frontmatter[key]));
43
+ written.add(key);
44
+ }
45
+ }
46
+ // Any fields not in schema (user extras)
47
+ for (const key of Object.keys(frontmatter)) {
48
+ if (!written.has(key)) {
49
+ lines.push(serializeField(key, frontmatter[key]));
50
+ }
51
+ }
52
+ lines.push('---');
53
+ return lines.join('\n');
54
+ }
55
+ export function serializeField(key, value) {
56
+ if (value === null || value === undefined)
57
+ return `${key}: null`;
58
+ if (typeof value === 'boolean')
59
+ return `${key}: ${value}`;
60
+ if (typeof value === 'number')
61
+ return `${key}: ${value}`;
62
+ if (Array.isArray(value)) {
63
+ const items = value.map(v => {
64
+ const s = String(v);
65
+ // Quote items that contain commas or brackets
66
+ if (s.includes(',') || s.includes('[') || s.includes(']'))
67
+ return `"${s.replace(/"/g, '\\"')}"`;
68
+ return s;
69
+ });
70
+ return `${key}: [${items.join(', ')}]`;
71
+ }
72
+ if (value instanceof Date) {
73
+ // Full ISO millisecond precision. Never slice — precision on round-trip
74
+ // is contract-critical for 0.6.7 schema precision hints. Quoted so the
75
+ // emitted YAML parses as a literal string under any schema (including
76
+ // default js-yaml outside our pipeline), never as a !!timestamp.
77
+ return `${key}: "${value.toISOString()}"`;
78
+ }
79
+ const str = String(value);
80
+ // Quote strings that contain YAML-special characters
81
+ if (str.includes(':') ||
82
+ str.includes('#') ||
83
+ str.includes('"') ||
84
+ str.includes("'") ||
85
+ str.startsWith('{') ||
86
+ str.startsWith('[') ||
87
+ str.startsWith('*') ||
88
+ str.startsWith('&') ||
89
+ str.startsWith('!') ||
90
+ str.startsWith('%') ||
91
+ str.startsWith('@') ||
92
+ str.startsWith('`') ||
93
+ str === '' ||
94
+ str === 'true' || str === 'false' ||
95
+ str === 'null' || str === 'yes' || str === 'no' ||
96
+ /^\d/.test(str) && /[^\d.eE+-]/.test(str) || // looks numeric but isn't
97
+ wouldCoerceFromString(str) // catch-all: any implicit-tag coercion forces quotes
98
+ ) {
99
+ return `${key}: "${str.replace(/\\/g, '\\\\').replace(/"/g, '\\"')}"`;
100
+ }
101
+ return `${key}: ${str}`;
102
+ }
103
+ //# sourceMappingURL=serializer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"serializer.js","sourceRoot":"","sources":["../../src/writer/serializer.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ import type { SchemaDefinition } from '../types.js';
2
+ export declare function generateTemplateBody(schema: SchemaDefinition, fields: Record<string, unknown>): string;
3
+ //# sourceMappingURL=template.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"template.d.ts","sourceRoot":"","sources":["../../src/writer/template.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,gBAAgB,EAAmB,MAAM,aAAa,CAAC;AAErE,wBAAgB,oBAAoB,CAClC,MAAM,EAAE,gBAAgB,EACxB,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAC9B,MAAM,CAeR"}
@@ -0,0 +1,27 @@
1
+ // ============================================================================
2
+ // Template Generator
3
+ // Generates markdown body structure from schema-defined template headings.
4
+ // Resolves {{field}} references in heading text.
5
+ // ============================================================================
6
+ export function generateTemplateBody(schema, fields) {
7
+ if (!schema.template || schema.template.length === 0)
8
+ return '';
9
+ const sections = [];
10
+ for (const heading of schema.template) {
11
+ const prefix = '#'.repeat(heading.level);
12
+ const text = resolveFieldRefs(heading.text, fields);
13
+ const anchor = heading.id ? ` {#${heading.id}}` : '';
14
+ sections.push(`${prefix} ${text}${anchor}`);
15
+ sections.push(''); // blank line after heading
16
+ }
17
+ return sections.join('\n').trimEnd();
18
+ }
19
+ function resolveFieldRefs(text, fields) {
20
+ return text.replace(/\{\{([a-zA-Z_][a-zA-Z0-9_.]*)\}\}/g, (_, key) => {
21
+ const value = fields[key];
22
+ if (value === undefined || value === null)
23
+ return key;
24
+ return String(value);
25
+ });
26
+ }
27
+ //# sourceMappingURL=template.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"template.js","sourceRoot":"","sources":["../../src/writer/template.ts"],"names":[],"mappings":"AAAA,+EAA+E;AAC/E,qBAAqB;AACrB,2EAA2E;AAC3E,iDAAiD;AACjD,+EAA+E;AAI/E,MAAM,UAAU,oBAAoB,CAClC,MAAwB,EACxB,MAA+B;IAE/B,IAAI,CAAC,MAAM,CAAC,QAAQ,IAAI,MAAM,CAAC,QAAQ,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,EAAE,CAAC;IAEhE,MAAM,QAAQ,GAAa,EAAE,CAAC;IAE9B,KAAK,MAAM,OAAO,IAAI,MAAM,CAAC,QAAQ,EAAE,CAAC;QACtC,MAAM,MAAM,GAAG,GAAG,CAAC,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;QACzC,MAAM,IAAI,GAAG,gBAAgB,CAAC,OAAO,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;QACpD,MAAM,MAAM,GAAG,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,OAAO,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC;QAErD,QAAQ,CAAC,IAAI,CAAC,GAAG,MAAM,IAAI,IAAI,GAAG,MAAM,EAAE,CAAC,CAAC;QAC5C,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,2BAA2B;IAChD,CAAC;IAED,OAAO,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,CAAC;AACvC,CAAC;AAED,SAAS,gBAAgB,CAAC,IAAY,EAAE,MAA+B;IACrE,OAAO,IAAI,CAAC,OAAO,CAAC,oCAAoC,EAAE,CAAC,CAAC,EAAE,GAAW,EAAE,EAAE;QAC3E,MAAM,KAAK,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC;QAC1B,IAAI,KAAK,KAAK,SAAS,IAAI,KAAK,KAAK,IAAI;YAAE,OAAO,GAAG,CAAC;QACtD,OAAO,MAAM,CAAC,KAAK,CAAC,CAAC;IACvB,CAAC,CAAC,CAAC;AACL,CAAC"}