trellis 3.1.35 → 3.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (422) hide show
  1. package/CHANGELOG.md +16 -5
  2. package/README.md +19 -2
  3. package/bin/trellis.mjs +2 -75
  4. package/dist/better-sqlite-backend-2P4F6AOJ.js +209 -0
  5. package/dist/{better-sqlite-backend-ahx5p0br.js → better-sqlite-backend-PII64VE6.js} +37 -25
  6. package/dist/better-sqlite-backend-VUBVQ7SN.js +209 -0
  7. package/dist/better-sqlite-backend-Y3AQN65E.js +159 -0
  8. package/dist/better-sqlite-backend-Y3M7DXOX.js +159 -0
  9. package/dist/boot-middleware-FJDGVUM4.js +9 -0
  10. package/dist/boot-middleware-MHLHFCUC.js +9 -0
  11. package/dist/boot-middleware-MLJUTLUM.js +9 -0
  12. package/dist/boot-middleware-ZZPDZNYR.js +9 -0
  13. package/dist/{index-wncptktd.js → chunk-276LKLZR.js} +126 -59
  14. package/dist/chunk-2BRTCEHB.js +143 -0
  15. package/dist/chunk-2CX5UCRV.js +111 -0
  16. package/dist/chunk-2ESYSVXG.js +48 -0
  17. package/dist/{index-yp88he8n.js → chunk-2I5JU73Y.js} +88 -64
  18. package/dist/{index-w5wccer3.js → chunk-2UNSRRNB.js} +10 -5
  19. package/dist/{index-4wxa8xz4.js → chunk-335UEHQR.js} +158 -22
  20. package/dist/chunk-36VSSTL7.js +357 -0
  21. package/dist/chunk-3ETIIPPB.js +1077 -0
  22. package/dist/chunk-3GDRZTAW.js +45 -0
  23. package/dist/chunk-44FFQKQX.js +142 -0
  24. package/dist/chunk-4CF2L46N.js +29 -0
  25. package/dist/chunk-4HYPLFJD.js +150 -0
  26. package/dist/chunk-4XIVMVHC.js +361 -0
  27. package/dist/chunk-5CINODKT.js +41 -0
  28. package/dist/chunk-5ESGWJ5L.js +45 -0
  29. package/dist/chunk-5FGLQGMF.js +1676 -0
  30. package/dist/chunk-5IQZFITY.js +357 -0
  31. package/dist/{index-wt8rz4gn.js → chunk-5JWFAQDW.js} +41 -23
  32. package/dist/{index-7pjz3tsy.js → chunk-62UHTVU3.js} +50 -16
  33. package/dist/{index-h32txmxe.js → chunk-66UJQT2I.js} +6 -13
  34. package/dist/chunk-6CTA6MCE.js +340 -0
  35. package/dist/{index-4cdr7x2x.js → chunk-6RNNVOAS.js} +178 -109
  36. package/dist/chunk-6X23PZ6H.js +969 -0
  37. package/dist/chunk-7C7LL6MB.js +315 -0
  38. package/dist/chunk-7F4HM3JG.js +394 -0
  39. package/dist/chunk-7KJ7T4D3.js +910 -0
  40. package/dist/chunk-7QQQNUB5.js +92 -0
  41. package/dist/{index-53f3b8p8.js → chunk-7QWJBS72.js} +210 -165
  42. package/dist/chunk-7R36OZK3.js +957 -0
  43. package/dist/chunk-7UPKCOHE.js +946 -0
  44. package/dist/chunk-7WQGTFVJ.js +7434 -0
  45. package/dist/chunk-A3BONW34.js +35 -0
  46. package/dist/chunk-AHMDVHBL.js +141 -0
  47. package/dist/chunk-AW6A4OZY.js +171 -0
  48. package/dist/chunk-B3ZIFA2O.js +2240 -0
  49. package/dist/chunk-BJ5EKCJ5.js +458 -0
  50. package/dist/chunk-BJ7EZ7FP.js +145 -0
  51. package/dist/chunk-BQBUVMRN.js +171 -0
  52. package/dist/chunk-BRGYDO7D.js +223 -0
  53. package/dist/chunk-BXSTJVE3.js +67 -0
  54. package/dist/chunk-C5KPSEDN.js +359 -0
  55. package/dist/chunk-CCTNYTUC.js +940 -0
  56. package/dist/chunk-CYQ2OVD2.js +35 -0
  57. package/dist/chunk-DDAK7YOE.js +299 -0
  58. package/dist/chunk-DRILKBY6.js +965 -0
  59. package/dist/chunk-DXE24HNN.js +45 -0
  60. package/dist/chunk-E7ICUNW7.js +945 -0
  61. package/dist/chunk-EAL2PUOE.js +10022 -0
  62. package/dist/chunk-ELT7MLZB.js +109 -0
  63. package/dist/chunk-EO3J7GRP.js +0 -0
  64. package/dist/chunk-EWEIRF6G.js +171 -0
  65. package/dist/chunk-F5VDGQJC.js +120 -0
  66. package/dist/chunk-FCPL3IEQ.js +98 -0
  67. package/dist/{index-nq520y6k.js → chunk-FDPKYSV7.js} +43 -31
  68. package/dist/chunk-FES3TC24.js +171 -0
  69. package/dist/chunk-FF36CQHZ.js +61 -0
  70. package/dist/chunk-FKQO5A3H.js +35 -0
  71. package/dist/chunk-FOWKR5TW.js +129 -0
  72. package/dist/chunk-FZVCXDYW.js +150 -0
  73. package/dist/chunk-G3XIHPSQ.js +361 -0
  74. package/dist/chunk-GD5QJXSS.js +98 -0
  75. package/dist/chunk-GFZCJ4EH.js +108 -0
  76. package/dist/chunk-GKJLYLVU.js +359 -0
  77. package/dist/chunk-GLM4HGN4.js +55 -0
  78. package/dist/chunk-GNXHXNVQ.js +113 -0
  79. package/dist/chunk-GSR6ILTM.js +277 -0
  80. package/dist/chunk-GWRIMRSX.js +45 -0
  81. package/dist/chunk-H72UW2HJ.js +45 -0
  82. package/dist/chunk-HGI74PXB.js +7417 -0
  83. package/dist/chunk-HGRA37LO.js +145 -0
  84. package/dist/chunk-HO4TURXW.js +1078 -0
  85. package/dist/chunk-HXSRQO3L.js +145 -0
  86. package/dist/chunk-IG2X2BVO.js +373 -0
  87. package/dist/chunk-IIJVDD54.js +373 -0
  88. package/dist/chunk-IUWVEEOX.js +145 -0
  89. package/dist/chunk-IX4BBOIT.js +394 -0
  90. package/dist/{index-yhwjgfvj.js → chunk-IXU4RMQM.js} +67 -60
  91. package/dist/chunk-J3WYZO3Q.js +211 -0
  92. package/dist/{index-vkpkfwhq.js → chunk-J6OUIION.js} +234 -194
  93. package/dist/{index-xzym9w0m.js → chunk-JA7AIHRK.js} +12 -7
  94. package/dist/chunk-JUEMDWLU.js +233 -0
  95. package/dist/chunk-K46RNFDE.js +171 -0
  96. package/dist/chunk-KAGU2XMY.js +359 -0
  97. package/dist/chunk-KCVYJNVX.js +394 -0
  98. package/dist/chunk-KFQGP6VL.js +33 -0
  99. package/dist/chunk-KKDRMIV6.js +419 -0
  100. package/dist/chunk-KQ4A2D2P.js +910 -0
  101. package/dist/chunk-KSU2GW22.js +958 -0
  102. package/dist/chunk-KYLIQ3YI.js +399 -0
  103. package/dist/chunk-KZYJJIRN.js +946 -0
  104. package/dist/chunk-LFOX744K.js +96 -0
  105. package/dist/{index-rv1p47gp.js → chunk-LHOVJEWR.js} +2756 -2307
  106. package/dist/{index-h9e2efx4.js → chunk-LNUIGRDZ.js} +71 -55
  107. package/dist/chunk-LOPXTPF3.js +120 -0
  108. package/dist/chunk-LZR3VIFU.js +907 -0
  109. package/dist/chunk-MBNBTJCR.js +394 -0
  110. package/dist/chunk-MCKGQKYU.js +15 -0
  111. package/dist/{index-skhn0agf.js → chunk-MLC5BUYO.js} +19 -20
  112. package/dist/chunk-MPXUVGT3.js +104 -0
  113. package/dist/chunk-MU6EOS6F.js +0 -0
  114. package/dist/chunk-MWRQ2TXT.js +357 -0
  115. package/dist/{index-nzb3am4f.js → chunk-NO73OK2I.js} +43 -21
  116. package/dist/chunk-NPE2YJHK.js +394 -0
  117. package/dist/{index-xhcp6xrn.js → chunk-NSDXU6QX.js} +654 -500
  118. package/dist/chunk-NXIRDSZ6.js +145 -0
  119. package/dist/chunk-NZWFNHCS.js +407 -0
  120. package/dist/chunk-O2AV5WMN.js +48 -0
  121. package/dist/{index-h7zxhhhh.js → chunk-OB4CMMX6.js} +46 -38
  122. package/dist/chunk-OBKU74FU.js +7411 -0
  123. package/dist/chunk-OQNDWRDE.js +145 -0
  124. package/dist/chunk-OVWAJMB6.js +394 -0
  125. package/dist/chunk-PDHLBTTD.js +45 -0
  126. package/dist/chunk-PEQNRKLG.js +210 -0
  127. package/dist/chunk-QERIS7QY.js +7403 -0
  128. package/dist/chunk-QHA2DM3C.js +373 -0
  129. package/dist/chunk-QLM4HSYC.js +45 -0
  130. package/dist/chunk-RSWUFTO2.js +857 -0
  131. package/dist/chunk-S2OT3TQJ.js +283 -0
  132. package/dist/chunk-S5PHSN5K.js +907 -0
  133. package/dist/chunk-SIAA4J6H.js +21 -0
  134. package/dist/chunk-SPSPV5BC.js +390 -0
  135. package/dist/chunk-SQBNLUIA.js +171 -0
  136. package/dist/chunk-STLN6A6B.js +355 -0
  137. package/dist/chunk-TCKXSOBP.js +123 -0
  138. package/dist/chunk-U7HV7GU2.js +17 -0
  139. package/dist/chunk-UBGUDMUV.js +59 -0
  140. package/dist/chunk-UGZHOGRA.js +39 -0
  141. package/dist/chunk-UICF66FS.js +359 -0
  142. package/dist/chunk-UK3EQREE.js +1078 -0
  143. package/dist/chunk-UPKPURVY.js +394 -0
  144. package/dist/chunk-URC74VCN.js +959 -0
  145. package/dist/chunk-USEINYUL.js +12 -0
  146. package/dist/{index-bmyt7k8n.js → chunk-UZRUP7QW.js} +12 -4
  147. package/dist/chunk-V3G7Q3QQ.js +102 -0
  148. package/dist/chunk-VDAKEOML.js +857 -0
  149. package/dist/chunk-VUJ6SA55.js +303 -0
  150. package/dist/chunk-VUJQLIML.js +141 -0
  151. package/dist/chunk-VWKLKLYB.js +267 -0
  152. package/dist/chunk-VYC3RZMK.js +277 -0
  153. package/dist/chunk-WMERMSWI.js +154 -0
  154. package/dist/chunk-WMR777PO.js +2213 -0
  155. package/dist/{index-n9f2qyh5.js → chunk-X46IECAC.js} +55 -33
  156. package/dist/chunk-X5FLTRUB.js +517 -0
  157. package/dist/chunk-X762XWVC.js +419 -0
  158. package/dist/chunk-XEN3OEYY.js +2234 -0
  159. package/dist/chunk-XMQ7G77X.js +260 -0
  160. package/dist/chunk-XZQ66K7A.js +124 -0
  161. package/dist/{index-w7ng765c.js → chunk-YCM7ZYEZ.js} +102 -49
  162. package/dist/chunk-YY3GF7DH.js +7411 -0
  163. package/dist/chunk-ZE5R3H4C.js +907 -0
  164. package/dist/chunk-ZHVI7BQN.js +1077 -0
  165. package/dist/chunk-ZMN5LUB7.js +7411 -0
  166. package/dist/chunk-ZUV4MD5U.js +94 -0
  167. package/dist/cli/errors.d.ts +6 -0
  168. package/dist/cli/errors.d.ts.map +1 -0
  169. package/dist/cli/examples.d.ts +23 -0
  170. package/dist/cli/examples.d.ts.map +1 -0
  171. package/dist/cli/index.d.ts.map +1 -1
  172. package/dist/cli/index.js +2338 -6190
  173. package/dist/client/index.d.ts +6 -1
  174. package/dist/client/index.d.ts.map +1 -1
  175. package/dist/client/index.js +41 -21
  176. package/dist/client/live.d.ts +67 -0
  177. package/dist/client/live.d.ts.map +1 -0
  178. package/dist/client/reactive.d.ts +31 -0
  179. package/dist/client/reactive.d.ts.map +1 -0
  180. package/dist/client/sdk.d.ts +26 -2
  181. package/dist/client/sdk.d.ts.map +1 -1
  182. package/dist/client/sdk.js +9 -0
  183. package/dist/client/vcs-client.d.ts +129 -0
  184. package/dist/client/vcs-client.d.ts.map +1 -0
  185. package/dist/cms/index.js +171 -163
  186. package/dist/{config-8hczw0rs.js → config-KMY6RRK3.js} +8 -9
  187. package/dist/config-PFTP67TR.js +19 -0
  188. package/dist/config-VDMK2DUJ.js +19 -0
  189. package/dist/core/computation/index.d.ts +5 -0
  190. package/dist/core/computation/index.d.ts.map +1 -0
  191. package/dist/core/computation/rollup.d.ts +18 -0
  192. package/dist/core/computation/rollup.d.ts.map +1 -0
  193. package/dist/core/index.d.ts +5 -0
  194. package/dist/core/index.d.ts.map +1 -1
  195. package/dist/core/index.js +168 -101
  196. package/dist/core/kernel/boot-middleware.d.ts +10 -0
  197. package/dist/core/kernel/boot-middleware.d.ts.map +1 -0
  198. package/dist/core/kernel/logic-middleware.d.ts +7 -1
  199. package/dist/core/kernel/logic-middleware.d.ts.map +1 -1
  200. package/dist/core/kernel/trellis-kernel.d.ts.map +1 -1
  201. package/dist/core/ontology/types.d.ts +5 -0
  202. package/dist/core/ontology/types.d.ts.map +1 -1
  203. package/dist/core/persist/better-sqlite-backend.d.ts +9 -2
  204. package/dist/core/persist/better-sqlite-backend.d.ts.map +1 -1
  205. package/dist/core/persist/factory.d.ts +6 -7
  206. package/dist/core/persist/factory.d.ts.map +1 -1
  207. package/dist/core/persist/factory.js +2 -3
  208. package/dist/core/persist/sqljs-backend.js +2 -3
  209. package/dist/db/index.d.ts +4 -1
  210. package/dist/db/index.d.ts.map +1 -1
  211. package/dist/db/index.js +69 -56
  212. package/dist/db/inspector.js +11 -19
  213. package/dist/decisions/index.js +9 -10
  214. package/dist/deploy-66EC752W.js +9 -0
  215. package/dist/deploy-SO7AFK6L.js +9 -0
  216. package/dist/embeddings/auto-embed.d.ts +2 -2
  217. package/dist/embeddings/auto-embed.d.ts.map +1 -1
  218. package/dist/embeddings/index.js +20 -22
  219. package/dist/embeddings/search.d.ts +2 -1
  220. package/dist/embeddings/search.d.ts.map +1 -1
  221. package/dist/embeddings/store.d.ts +25 -4
  222. package/dist/embeddings/store.d.ts.map +1 -1
  223. package/dist/engine-7GXBM4IT.js +7 -0
  224. package/dist/engine-NSR6BIF7.js +7 -0
  225. package/dist/engine.d.ts +32 -12
  226. package/dist/engine.d.ts.map +1 -1
  227. package/dist/factory-2P64OC7M.js +34 -0
  228. package/dist/factory-YP4ZZK5K.js +34 -0
  229. package/dist/import-AJLYHFIA.js +10 -0
  230. package/dist/import-UZEKXU3B.js +10 -0
  231. package/dist/index.js +102 -93
  232. package/dist/launch-explorer-AI6L2AWJ.js +91 -0
  233. package/dist/launch-explorer-HZ4ZJA4X.js +95 -0
  234. package/dist/links/index.js +24 -26
  235. package/dist/plugins/agent-memory/index.js +316 -0
  236. package/dist/plugins/idea-garden/index.js +165 -0
  237. package/dist/plugins/plan-approval/index.js +579 -0
  238. package/dist/plugins/proactive-watcher/index.js +194 -0
  239. package/dist/{index-2r4jxwnb.js → query-GJL3CVGN.js} +14 -15
  240. package/dist/query-MBJSK3EB.js +31 -0
  241. package/dist/query-TJHEVSKL.js +31 -0
  242. package/dist/query-WUIKOHPE.js +524 -0
  243. package/dist/query-XYLTJYSA.js +31 -0
  244. package/dist/react/index.js +39 -70
  245. package/dist/react/realtime.js +11 -0
  246. package/dist/react/schema-hooks.js +87 -0
  247. package/dist/realtime/broadcast-channel-transport.d.ts +43 -0
  248. package/dist/realtime/broadcast-channel-transport.d.ts.map +1 -0
  249. package/dist/realtime/durable-object-relay-transport.d.ts +96 -0
  250. package/dist/realtime/durable-object-relay-transport.d.ts.map +1 -0
  251. package/dist/realtime/index.d.ts +44 -0
  252. package/dist/realtime/index.d.ts.map +1 -0
  253. package/dist/realtime/index.js +40 -0
  254. package/dist/realtime/memory-hub.d.ts +32 -0
  255. package/dist/realtime/memory-hub.d.ts.map +1 -0
  256. package/dist/realtime/persistent-channel.d.ts +105 -0
  257. package/dist/realtime/persistent-channel.d.ts.map +1 -0
  258. package/dist/realtime/presence.d.ts +73 -0
  259. package/dist/realtime/presence.d.ts.map +1 -0
  260. package/dist/realtime/relay-persistence.d.ts +37 -0
  261. package/dist/realtime/relay-persistence.d.ts.map +1 -0
  262. package/dist/realtime/relay-persistence.js +107 -0
  263. package/dist/realtime/relay-server.d.ts +103 -0
  264. package/dist/realtime/relay-server.d.ts.map +1 -0
  265. package/dist/realtime/room.d.ts +98 -0
  266. package/dist/realtime/room.d.ts.map +1 -0
  267. package/dist/realtime/text.d.ts +73 -0
  268. package/dist/realtime/text.d.ts.map +1 -0
  269. package/dist/realtime/types.d.ts +89 -0
  270. package/dist/realtime/types.d.ts.map +1 -0
  271. package/dist/realtime/websocket-relay-transport.d.ts +28 -0
  272. package/dist/realtime/websocket-relay-transport.d.ts.map +1 -0
  273. package/dist/realtime.bundle.js +1100 -0
  274. package/dist/remote-manager-BLJZ6KF6.js +224 -0
  275. package/dist/{remote-manager-xvbg4230.js → remote-manager-BPYE46SI.js} +24 -15
  276. package/dist/remote-manager-FMESEAFA.js +224 -0
  277. package/dist/remote-manager-K2WZ5RHY.js +223 -0
  278. package/dist/remote-manager-SG545WNY.js +224 -0
  279. package/dist/remote-manager-SG5PQKCH.js +224 -0
  280. package/dist/remote-manager-WGP6MIQZ.js +224 -0
  281. package/dist/scaffold/write.d.ts.map +1 -1
  282. package/dist/schema/define.d.ts +137 -0
  283. package/dist/schema/define.d.ts.map +1 -0
  284. package/dist/schema/entity-projection.d.ts +34 -0
  285. package/dist/schema/entity-projection.d.ts.map +1 -0
  286. package/dist/schema/eql.d.ts +46 -0
  287. package/dist/schema/eql.d.ts.map +1 -0
  288. package/dist/schema/index.d.ts +21 -0
  289. package/dist/schema/index.d.ts.map +1 -0
  290. package/dist/schema/index.js +45 -0
  291. package/dist/schema/kernel-resolve.d.ts +21 -0
  292. package/dist/schema/kernel-resolve.d.ts.map +1 -0
  293. package/dist/schema/mutations.d.ts +20 -0
  294. package/dist/schema/mutations.d.ts.map +1 -0
  295. package/dist/schema/resolve.d.ts +21 -0
  296. package/dist/schema/resolve.d.ts.map +1 -0
  297. package/dist/sdk-3KBB3E6V.js +16 -0
  298. package/dist/sdk-4ZQO6UTU.js +16 -0
  299. package/dist/sdk-6JA6GV3G.js +16 -0
  300. package/dist/sdk-6VTP5UTZ.js +16 -0
  301. package/dist/sdk-7VS6TYCD.js +16 -0
  302. package/dist/sdk-HQ3FTLRT.js +16 -0
  303. package/dist/sdk-HZ7NU3XE.js +15 -0
  304. package/dist/sdk-KBQE2OXT.js +16 -0
  305. package/dist/sdk-LZ7W3EEY.js +9 -0
  306. package/dist/sdk-MSCDZ7JU.js +15 -0
  307. package/dist/sdk-WNZOGO3S.js +15 -0
  308. package/dist/sdk-YLV33ZCW.js +9 -0
  309. package/dist/sdk-ZSUD2LLJ.js +16 -0
  310. package/dist/server/index.d.ts +2 -0
  311. package/dist/server/index.d.ts.map +1 -1
  312. package/dist/server/index.js +69 -61
  313. package/dist/server/node-adapter.js +5 -104
  314. package/dist/server/realtime.d.ts +10 -2
  315. package/dist/server/realtime.d.ts.map +1 -1
  316. package/dist/server/server.d.ts +7 -16
  317. package/dist/server/server.d.ts.map +1 -1
  318. package/dist/server/sprites.d.ts.map +1 -1
  319. package/dist/server/tenancy.d.ts.map +1 -1
  320. package/dist/server-AFXFFBWA.js +11 -0
  321. package/dist/server-AGHC4VUL.js +11 -0
  322. package/dist/server-BOH7M4TT.js +13 -0
  323. package/dist/server-DBUY2KY5.js +11 -0
  324. package/dist/server-GWBQJPRG.js +11 -0
  325. package/dist/server-IGBIIJSF.js +13 -0
  326. package/dist/server-JZZFULVU.js +11 -0
  327. package/dist/server-L5XAF4M5.js +11 -0
  328. package/dist/server-NYFUHANA.js +12 -0
  329. package/dist/server-OABUB2LO.js +12 -0
  330. package/dist/server-P2CKZWWV.js +12 -0
  331. package/dist/{sprites-vc4qbrp1.js → sprites-RU3E4XQN.js} +6 -7
  332. package/dist/sprites-XVSMQLSI.js +15 -0
  333. package/dist/sql-wasm-FORCZFHZ.js +2148 -0
  334. package/dist/sql-wasm-JZH76RLO.js +2148 -0
  335. package/dist/sqljs-backend-CJQOIQYE.js +266 -0
  336. package/dist/sqljs-backend-KWXBUDUO.js +266 -0
  337. package/dist/state-demo.bundle.js +1033 -0
  338. package/dist/svelte/index.d.ts +17 -0
  339. package/dist/svelte/index.d.ts.map +1 -0
  340. package/dist/svelte/index.js +51 -0
  341. package/dist/svelte/schema-hooks.d.ts +45 -0
  342. package/dist/svelte/schema-hooks.d.ts.map +1 -0
  343. package/dist/svelte/schema-hooks.js +71 -0
  344. package/dist/svelte/stores.d.ts +78 -0
  345. package/dist/svelte/stores.d.ts.map +1 -0
  346. package/dist/sync/http-transport.d.ts +3 -3
  347. package/dist/sync/http-transport.d.ts.map +1 -1
  348. package/dist/sync/index.d.ts +15 -1
  349. package/dist/sync/index.d.ts.map +1 -1
  350. package/dist/sync/index.js +617 -0
  351. package/dist/sync/memory-room.d.ts +37 -0
  352. package/dist/sync/memory-room.d.ts.map +1 -0
  353. package/dist/sync/memory-transport.d.ts +3 -3
  354. package/dist/sync/memory-transport.d.ts.map +1 -1
  355. package/dist/sync/partykit-room.d.ts +40 -0
  356. package/dist/sync/partykit-room.d.ts.map +1 -0
  357. package/dist/sync/partykit-transport.d.ts +84 -0
  358. package/dist/sync/partykit-transport.d.ts.map +1 -0
  359. package/dist/sync/room-core.d.ts +53 -0
  360. package/dist/sync/room-core.d.ts.map +1 -0
  361. package/dist/sync/sync-engine.d.ts +40 -2
  362. package/dist/sync/sync-engine.d.ts.map +1 -1
  363. package/dist/sync/sync-room-server.d.ts +39 -0
  364. package/dist/sync/sync-room-server.d.ts.map +1 -0
  365. package/dist/sync/types.d.ts +70 -3
  366. package/dist/sync/types.d.ts.map +1 -1
  367. package/dist/sync/vcs-sync-peer.d.ts +63 -0
  368. package/dist/sync/vcs-sync-peer.d.ts.map +1 -0
  369. package/dist/sync/ws-transport.d.ts +2 -2
  370. package/dist/sync/ws-transport.d.ts.map +1 -1
  371. package/dist/tenancy-CBWYEVUB.js +11 -0
  372. package/dist/tenancy-FO6WVYFN.js +13 -0
  373. package/dist/tenancy-FWDBESMX.js +14 -0
  374. package/dist/tenancy-HGPIS5QA.js +13 -0
  375. package/dist/tenancy-HXFALA37.js +14 -0
  376. package/dist/tenancy-OP34NFFS.js +14 -0
  377. package/dist/tenancy-S676GLID.js +14 -0
  378. package/dist/tenancy-V7ARWNNV.js +14 -0
  379. package/dist/tenancy-ZDN4GXK5.js +13 -0
  380. package/dist/tenancy-ZT5VMY7B.js +14 -0
  381. package/dist/ui/client.html +355 -67
  382. package/dist/ui/launch-explorer.d.ts +22 -0
  383. package/dist/ui/launch-explorer.d.ts.map +1 -0
  384. package/dist/ui/server.d.ts +1 -1
  385. package/dist/ui/server.d.ts.map +1 -1
  386. package/dist/vcs/blob-store.d.ts.map +1 -1
  387. package/dist/vcs/idb-op-log.d.ts +67 -0
  388. package/dist/vcs/idb-op-log.d.ts.map +1 -0
  389. package/dist/vcs/index.d.ts +1 -0
  390. package/dist/vcs/index.d.ts.map +1 -1
  391. package/dist/vcs/index.js +81 -72
  392. package/dist/vcs/issue.d.ts +22 -5
  393. package/dist/vcs/issue.d.ts.map +1 -1
  394. package/dist/vcs/lane-materialize.d.ts +5 -0
  395. package/dist/vcs/lane-materialize.d.ts.map +1 -1
  396. package/dist/vcs/op-log.d.ts +28 -2
  397. package/dist/vcs/op-log.d.ts.map +1 -1
  398. package/dist/vcs/ops.d.ts +10 -0
  399. package/dist/vcs/ops.d.ts.map +1 -1
  400. package/dist/{vm-config-6xhsj6b3.js → vm-config-JI4OXKDQ.js} +9 -10
  401. package/dist/vm-config-YZRJ3KUB.js +21 -0
  402. package/dist/vue/hooks.d.ts +64 -0
  403. package/dist/vue/hooks.d.ts.map +1 -0
  404. package/dist/vue/index.d.ts +19 -0
  405. package/dist/vue/index.d.ts.map +1 -0
  406. package/dist/vue/index.js +59 -0
  407. package/dist/vue/schema-hooks.d.ts +41 -0
  408. package/dist/vue/schema-hooks.d.ts.map +1 -0
  409. package/dist/vue/schema-hooks.js +64 -0
  410. package/package.json +118 -16
  411. package/dist/deploy-999q207z.js +0 -10
  412. package/dist/engine-y0724kjq.js +0 -8
  413. package/dist/import-s2b8e0ft.js +0 -11
  414. package/dist/index-a76rekgs.js +0 -67
  415. package/dist/index-c9h37r6h.js +0 -1
  416. package/dist/index-hr9qvv77.js +0 -860
  417. package/dist/index-k5b0xskw.js +0 -1
  418. package/dist/index-y6a4kj0p.js +0 -43
  419. package/dist/sdk-bepky0xs.js +0 -16
  420. package/dist/server-szdjx0nt.js +0 -13
  421. package/dist/sqlite-backend-0vsmc6qj.js +0 -8
  422. package/dist/tenancy-pjm32b4v.js +0 -14
@@ -0,0 +1,21 @@
1
+ var __defProp = Object.defineProperty;
2
+ var __getOwnPropNames = Object.getOwnPropertyNames;
3
+ var __require = /* @__PURE__ */ ((x) => typeof require !== "undefined" ? require : typeof Proxy !== "undefined" ? new Proxy(x, {
4
+ get: (a, b) => (typeof require !== "undefined" ? require : a)[b]
5
+ }) : x)(function(x) {
6
+ if (typeof require !== "undefined") return require.apply(this, arguments);
7
+ throw Error('Dynamic require of "' + x + '" is not supported');
8
+ });
9
+ var __commonJS = (cb, mod) => function __require2() {
10
+ return mod || (0, cb[__getOwnPropNames(cb)[0]])((mod = { exports: {} }).exports, mod), mod.exports;
11
+ };
12
+ var __export = (target, all) => {
13
+ for (var name in all)
14
+ __defProp(target, name, { get: all[name], enumerable: true });
15
+ };
16
+
17
+ export {
18
+ __require,
19
+ __commonJS,
20
+ __export
21
+ };
@@ -0,0 +1,390 @@
1
+ // src/core/computation/expr-evaluator.ts
2
+ var ExprEvaluator = class {
3
+ functions;
4
+ constructor() {
5
+ this.functions = /* @__PURE__ */ new Map([
6
+ ["$if", this.if.bind(this)],
7
+ ["$round", this.round.bind(this)],
8
+ ["$concat", this.concat.bind(this)],
9
+ ["$len", this.len.bind(this)],
10
+ ["$lower", this.lower.bind(this)],
11
+ ["$upper", this.upper.bind(this)],
12
+ ["$trim", this.trim.bind(this)],
13
+ ["$now", this.now.bind(this)],
14
+ ["$uuid", this.uuid.bind(this)],
15
+ ["$add", this.add.bind(this)],
16
+ ["$sub", this.sub.bind(this)],
17
+ ["$mul", this.mul.bind(this)],
18
+ ["$div", this.div.bind(this)],
19
+ ["$mod", this.mod.bind(this)],
20
+ ["$eq", this.eq.bind(this)],
21
+ ["$ne", this.ne.bind(this)],
22
+ ["$gt", this.gt.bind(this)],
23
+ ["$gte", this.gte.bind(this)],
24
+ ["$lt", this.lt.bind(this)],
25
+ ["$lte", this.lte.bind(this)],
26
+ ["$and", this.and.bind(this)],
27
+ ["$or", this.or.bind(this)],
28
+ ["$not", this.not.bind(this)],
29
+ ["$coalesce", this.coalesce.bind(this)],
30
+ ["$contains", this.contains.bind(this)],
31
+ ["$startsWith", this.startsWith.bind(this)],
32
+ ["$endsWith", this.endsWith.bind(this)]
33
+ ]);
34
+ }
35
+ /**
36
+ * Evaluate an expression string against a context.
37
+ */
38
+ eval(expr, context) {
39
+ const trimmed = expr.trim();
40
+ const fnMatch = trimmed.match(/^(\$\w+)\((.*)\)$/s);
41
+ if (fnMatch) {
42
+ const fnName = fnMatch[1];
43
+ const argsStr = fnMatch[2];
44
+ const fn = this.functions.get(fnName);
45
+ if (!fn) {
46
+ throw new Error(`Unknown function: ${fnName}`);
47
+ }
48
+ return this.evalFunction(fn, argsStr, context);
49
+ }
50
+ if (trimmed.startsWith("$")) {
51
+ const field = trimmed.slice(1);
52
+ return context[field];
53
+ }
54
+ if (trimmed === "true") return true;
55
+ if (trimmed === "false") return false;
56
+ if (trimmed === "null") return null;
57
+ const num = Number(trimmed);
58
+ if (!isNaN(num) && trimmed !== "") return num;
59
+ if (trimmed.startsWith('"') && trimmed.endsWith('"') || trimmed.startsWith("'") && trimmed.endsWith("'")) {
60
+ return trimmed.slice(1, -1);
61
+ }
62
+ return trimmed;
63
+ }
64
+ evalFunction(fn, argsStr, context) {
65
+ const args = this.parseArgs(argsStr, context);
66
+ return fn(...args);
67
+ }
68
+ parseArgs(argsStr, context) {
69
+ const args = [];
70
+ let depth = 0;
71
+ let current = "";
72
+ for (let i = 0; i < argsStr.length; i++) {
73
+ const char = argsStr[i];
74
+ if (char === "(" || char === "[" || char === "{") depth++;
75
+ else if (char === ")" || char === "]" || char === "}") depth--;
76
+ else if (char === "," && depth === 0) {
77
+ args.push(this.eval(current.trim(), context));
78
+ current = "";
79
+ continue;
80
+ }
81
+ current += char;
82
+ }
83
+ if (current.trim()) {
84
+ args.push(this.eval(current.trim(), context));
85
+ }
86
+ return args;
87
+ }
88
+ // Built-in functions
89
+ if(cond, trueVal, falseVal) {
90
+ return cond ? trueVal : falseVal;
91
+ }
92
+ round(value, decimals = 0) {
93
+ const n = Number(value);
94
+ const factor = Math.pow(10, Number(decimals));
95
+ return Math.round(n * factor) / factor;
96
+ }
97
+ concat(...args) {
98
+ return args.map((a) => String(a ?? "")).join("");
99
+ }
100
+ len(value) {
101
+ if (typeof value === "string") return value.length;
102
+ if (Array.isArray(value)) return value.length;
103
+ return 0;
104
+ }
105
+ lower(value) {
106
+ return String(value ?? "").toLowerCase();
107
+ }
108
+ upper(value) {
109
+ return String(value ?? "").toUpperCase();
110
+ }
111
+ trim(value) {
112
+ return String(value ?? "").trim();
113
+ }
114
+ now() {
115
+ return (/* @__PURE__ */ new Date()).toISOString();
116
+ }
117
+ uuid() {
118
+ return crypto.randomUUID();
119
+ }
120
+ add(...args) {
121
+ return args.reduce((sum, a) => sum + Number(a), 0);
122
+ }
123
+ sub(a, b) {
124
+ return Number(a) - Number(b);
125
+ }
126
+ mul(...args) {
127
+ return args.reduce((prod, a) => prod * Number(a), 1);
128
+ }
129
+ div(a, b) {
130
+ return Number(a) / Number(b);
131
+ }
132
+ mod(a, b) {
133
+ return Number(a) % Number(b);
134
+ }
135
+ eq(a, b) {
136
+ return a === b;
137
+ }
138
+ ne(a, b) {
139
+ return a !== b;
140
+ }
141
+ gt(a, b) {
142
+ return Number(a) > Number(b);
143
+ }
144
+ gte(a, b) {
145
+ return Number(a) >= Number(b);
146
+ }
147
+ lt(a, b) {
148
+ return Number(a) < Number(b);
149
+ }
150
+ lte(a, b) {
151
+ return Number(a) <= Number(b);
152
+ }
153
+ and(...args) {
154
+ return args.every(Boolean);
155
+ }
156
+ or(...args) {
157
+ return args.some(Boolean);
158
+ }
159
+ not(value) {
160
+ return !value;
161
+ }
162
+ coalesce(...args) {
163
+ for (const arg of args) {
164
+ if (arg !== null && arg !== void 0) return arg;
165
+ }
166
+ return null;
167
+ }
168
+ contains(haystack, needle) {
169
+ return String(haystack ?? "").includes(String(needle ?? ""));
170
+ }
171
+ startsWith(str, prefix) {
172
+ return String(str ?? "").startsWith(String(prefix ?? ""));
173
+ }
174
+ endsWith(str, suffix) {
175
+ return String(str ?? "").endsWith(String(suffix ?? ""));
176
+ }
177
+ };
178
+ function evalExpr(expr, context) {
179
+ const result = new ExprEvaluator().eval(expr, context);
180
+ if (result === null || result === void 0) return "";
181
+ if (typeof result === "boolean") return result ? "true" : "false";
182
+ if (typeof result === "number") return result;
183
+ if (typeof result === "string") return result;
184
+ if (typeof result === "object") return JSON.stringify(result);
185
+ return String(result);
186
+ }
187
+
188
+ // src/core/computation/rollup.ts
189
+ function collectRollupRelatedIds(rollup, ctx) {
190
+ if (rollup.joinEntity) {
191
+ const { type, foreignKey } = rollup.joinEntity;
192
+ const facts = ctx.store.getFactsByAttribute(foreignKey);
193
+ const ids = [];
194
+ for (const fact of facts) {
195
+ if (fact.v !== ctx.entityId) continue;
196
+ const typeFacts = ctx.store.getFactsByEntity(fact.e);
197
+ const entityType = typeFacts.find((f) => f.a === "type")?.v;
198
+ if (entityType === type) ids.push(fact.e);
199
+ }
200
+ return ids;
201
+ }
202
+ const linkAttr = resolveLinkAttribute(rollup.relationProperty, ctx.schema);
203
+ const links = ctx.store.getLinksByEntityAndAttribute(ctx.entityId, linkAttr);
204
+ if (links.length > 0) return links.map((l) => l.e2);
205
+ return [];
206
+ }
207
+ function resolveLinkAttribute(relationProperty, schema) {
208
+ const field = schema?.fields.find((f) => f.name === relationProperty);
209
+ if (field?.valueType === "relation") return relationProperty;
210
+ return relationProperty;
211
+ }
212
+ function readTargetValue(store, entityId, targetProperty) {
213
+ if (targetProperty === "id") return entityId;
214
+ const facts = store.getFactsByEntity(entityId);
215
+ return facts.find((f) => f.a === targetProperty)?.v;
216
+ }
217
+ function toNumbers(values) {
218
+ const nums = [];
219
+ for (const v of values) {
220
+ if (typeof v === "number" && Number.isFinite(v)) nums.push(v);
221
+ }
222
+ return nums;
223
+ }
224
+ function evaluateRollup(rollup, ctx) {
225
+ const related = collectRollupRelatedIds(rollup, ctx);
226
+ if (rollup.aggregation === "count") {
227
+ return related.length;
228
+ }
229
+ const values = related.map((id) => readTargetValue(ctx.store, id, rollup.targetProperty)).filter((v) => v !== void 0);
230
+ const nums = toNumbers(values);
231
+ if (nums.length === 0) return 0;
232
+ switch (rollup.aggregation) {
233
+ case "sum":
234
+ return nums.reduce((a, b) => a + b, 0);
235
+ case "avg":
236
+ return nums.reduce((a, b) => a + b, 0) / nums.length;
237
+ case "min":
238
+ return Math.min(...nums);
239
+ case "max":
240
+ return Math.max(...nums);
241
+ case "median": {
242
+ const sorted = [...nums].sort((a, b) => a - b);
243
+ const mid = Math.floor(sorted.length / 2);
244
+ return sorted.length % 2 === 0 ? (sorted[mid - 1] + sorted[mid]) / 2 : sorted[mid];
245
+ }
246
+ case "mode": {
247
+ const freq = /* @__PURE__ */ new Map();
248
+ for (const n of nums) freq.set(n, (freq.get(n) ?? 0) + 1);
249
+ let best = nums[0];
250
+ let bestCount = 0;
251
+ for (const [n, c] of freq) {
252
+ if (c > bestCount) {
253
+ best = n;
254
+ bestCount = c;
255
+ }
256
+ }
257
+ return best;
258
+ }
259
+ default:
260
+ return 0;
261
+ }
262
+ }
263
+ function projectRelationFields(binding, schema, store, entityId) {
264
+ for (const field of schema.fields) {
265
+ if (field.valueType !== "relation" || field.name in binding) continue;
266
+ const links = store.getLinksByEntityAndAttribute(entityId, field.name);
267
+ if (links.length === 0) continue;
268
+ const cardinality = field.relation?.cardinality ?? "many";
269
+ if (cardinality === "one") {
270
+ binding[field.name] = links[0].e2;
271
+ } else {
272
+ binding[field.name] = links.map((l) => l.e2).join(",");
273
+ }
274
+ }
275
+ }
276
+
277
+ // src/core/kernel/logic-middleware.ts
278
+ function createLogicMiddleware(config) {
279
+ return {
280
+ name: "logic-computation",
281
+ handleQuery(query, ctx, next) {
282
+ const result = next(query);
283
+ if (result && Array.isArray(result.bindings)) {
284
+ const store = resolveStore(config, ctx);
285
+ for (const binding of result.bindings) {
286
+ enrichBinding(binding, config, store);
287
+ }
288
+ }
289
+ return result;
290
+ }
291
+ };
292
+ }
293
+ function resolveStore(config, ctx) {
294
+ if (config.getStore) return config.getStore();
295
+ return ctx.store;
296
+ }
297
+ function enrichBinding(binding, config, store) {
298
+ const row = binding;
299
+ const type = resolveEntityType(binding, config);
300
+ if (!type) return;
301
+ const schema = config.ontologies.get(type);
302
+ if (!schema) return;
303
+ const entityId = findEntityId(binding);
304
+ if (store && entityId) {
305
+ projectRelationFields(binding, schema, store, entityId);
306
+ }
307
+ for (const field of schema.fields) {
308
+ if (!(field.computed || field.formula || field.rollup || field.aiGenerated))
309
+ continue;
310
+ const fieldName = field.name;
311
+ if (fieldName in binding) continue;
312
+ if (field.formula) {
313
+ binding[fieldName] = evalExpr(field.formula, row);
314
+ }
315
+ if (field.rollup && store && entityId) {
316
+ binding[fieldName] = evaluateRollup(field.rollup, {
317
+ store,
318
+ entityId,
319
+ schema,
320
+ getEntityType: config.getEntityType
321
+ });
322
+ }
323
+ if (field.aiGenerated && config.generateAiField) {
324
+ const prompt = field.aiGenerated.prompt.replace(
325
+ /\{\{(\w+)\}\}/g,
326
+ (_, key) => String(row[key] ?? "")
327
+ );
328
+ config.generateAiField(prompt, row).then((value) => {
329
+ binding[fieldName] = value;
330
+ }).catch(() => {
331
+ binding[fieldName] = "";
332
+ });
333
+ }
334
+ }
335
+ }
336
+ function resolveEntityType(binding, config) {
337
+ const explicit = binding.type;
338
+ if (typeof explicit === "string" && explicit.length > 0) return explicit;
339
+ const entityId = findEntityId(binding);
340
+ if (entityId && config.getEntityType) {
341
+ return config.getEntityType(entityId);
342
+ }
343
+ return void 0;
344
+ }
345
+ function findEntityId(binding) {
346
+ for (const value of Object.values(binding)) {
347
+ if (typeof value === "string" && value.includes(":")) return value;
348
+ }
349
+ return void 0;
350
+ }
351
+
352
+ // src/core/kernel/boot-middleware.ts
353
+ function buildOntologyIndex(schemas) {
354
+ const map = /* @__PURE__ */ new Map();
355
+ for (const schema of schemas) {
356
+ map.set(schema["@id"], schema);
357
+ const short = schema["@id"].includes(":") ? schema["@id"].split(":").pop() : schema["@id"];
358
+ if (short) {
359
+ map.set(short, schema);
360
+ map.set(short.toLowerCase(), schema);
361
+ }
362
+ if (schema.label) {
363
+ map.set(schema.label, schema);
364
+ map.set(schema.label.toLowerCase(), schema);
365
+ }
366
+ }
367
+ return map;
368
+ }
369
+ function attachStandardMiddleware(kernel) {
370
+ kernel.removeMiddleware("logic-computation");
371
+ const ontologies = buildOntologyIndex(kernel.listOntologies());
372
+ kernel.addMiddleware(
373
+ createLogicMiddleware({
374
+ ontologies,
375
+ getStore: () => kernel.getStore(),
376
+ getEntityType: (entityId) => kernel.getEntity(entityId)?.type
377
+ })
378
+ );
379
+ }
380
+
381
+ export {
382
+ ExprEvaluator,
383
+ evalExpr,
384
+ collectRollupRelatedIds,
385
+ evaluateRollup,
386
+ projectRelationFields,
387
+ createLogicMiddleware,
388
+ buildOntologyIndex,
389
+ attachStandardMiddleware
390
+ };
@@ -0,0 +1,171 @@
1
+ import {
2
+ inferProjectContext,
3
+ init_infer,
4
+ init_profile,
5
+ init_write,
6
+ loadProfile
7
+ } from "./chunk-QERIS7QY.js";
8
+
9
+ // src/scaffold/seed.ts
10
+ init_profile();
11
+ init_infer();
12
+ import { existsSync, writeFileSync } from "fs";
13
+ import { join } from "path";
14
+ async function seedContext(opts) {
15
+ const { rootPath, ide = "none", force = false } = opts;
16
+ const filesUpdated = [];
17
+ const timestamp = (/* @__PURE__ */ new Date()).toISOString();
18
+ const profile = loadProfile();
19
+ const context = await inferProjectContext(rootPath);
20
+ const agentsDir = join(rootPath, ".trellis", "agents");
21
+ if (existsSync(agentsDir)) {
22
+ const agentsMdPath = join(agentsDir, "AGENTS.md");
23
+ if (existsSync(agentsMdPath) || force) {
24
+ const content = renderSeedAgentsMd(profile, context, timestamp);
25
+ writeFileSync(agentsMdPath, content, "utf-8");
26
+ filesUpdated.push(".trellis/agents/AGENTS.md");
27
+ }
28
+ const agentContextPath = join(agentsDir, "agent-context.json");
29
+ if (existsSync(agentContextPath) || force) {
30
+ const config = {
31
+ domain: context.domain,
32
+ ecosystem: context.ecosystem,
33
+ tools: [],
34
+ ontologies: [],
35
+ generatedAt: timestamp,
36
+ confidence: context.confidence,
37
+ lastSeed: timestamp
38
+ };
39
+ writeFileSync(
40
+ agentContextPath,
41
+ JSON.stringify(config, null, 2),
42
+ "utf-8"
43
+ );
44
+ filesUpdated.push(".trellis/agents/agent-context.json");
45
+ }
46
+ }
47
+ switch (ide) {
48
+ case "cursor": {
49
+ const cursorRulesPath = join(rootPath, ".cursor", "rules.md");
50
+ if (existsSync(cursorRulesPath) || force) {
51
+ const content = renderSeedIdeRules(profile, context, "cursor", timestamp);
52
+ writeFileSync(cursorRulesPath, content, "utf-8");
53
+ filesUpdated.push(".cursor/rules.md");
54
+ }
55
+ break;
56
+ }
57
+ case "windsurf": {
58
+ const windsurfRulesPath = join(rootPath, ".windsurf", "rules.md");
59
+ if (existsSync(windsurfRulesPath) || force) {
60
+ const content = renderSeedIdeRules(profile, context, "windsurf", timestamp);
61
+ writeFileSync(windsurfRulesPath, content, "utf-8");
62
+ filesUpdated.push(".windsurf/rules.md");
63
+ }
64
+ break;
65
+ }
66
+ case "claude": {
67
+ const claudeSettingsPath = join(rootPath, ".claude", "settings.md");
68
+ if (existsSync(claudeSettingsPath) || force) {
69
+ const content = renderSeedIdeRules(profile, context, "claude", timestamp);
70
+ writeFileSync(claudeSettingsPath, content, "utf-8");
71
+ filesUpdated.push(".claude/settings.md");
72
+ }
73
+ break;
74
+ }
75
+ case "none":
76
+ break;
77
+ }
78
+ return {
79
+ success: true,
80
+ filesUpdated,
81
+ timestamp
82
+ };
83
+ }
84
+ function renderSeedAgentsMd(profile, context, timestamp) {
85
+ const userName = profile?.name ?? "the user";
86
+ const userBio = profile?.bio ?? "(not provided)";
87
+ const userSkills = profile?.skills?.length ? profile.skills.join(", ") : "(not specified)";
88
+ return `# Trellis Agent Context
89
+
90
+ > This file was seeded by \`trellis seed\` on ${timestamp}
91
+ > Inference confidence: **${context.confidence}**
92
+
93
+ ---
94
+
95
+ ## About the User
96
+
97
+ | Field | Value |
98
+ |-------|-------|
99
+ | **Name** | ${userName} |
100
+ | **Bio** | ${userBio} |
101
+ | **Skills** | ${userSkills} |
102
+
103
+ ---
104
+
105
+ ## About This Project
106
+
107
+ | Field | Value |
108
+ |-------|-------|
109
+ | **Name** | ${context.name ?? "(unnamed)"} |
110
+ | **Domain** | ${context.domain ?? "(not determined)"} |
111
+ | **Description** | ${context.description ?? "(no description found)"} |
112
+ | **Ecosystem** | ${context.ecosystem ?? "unknown"} |
113
+ | **File count** | ~${context.fileCount} |
114
+
115
+ ---
116
+
117
+ ## Agent Instructions
118
+
119
+ You are operating in a Trellis-tracked repository. Follow these guidelines:
120
+
121
+ 1. **Read \`agent-context.json\`** in this directory for registered tools, ontologies, and domain settings.
122
+ 2. **Check \`skills/\`** for domain-specific operating instructions relevant to this project.
123
+ 3. **Check \`workflows/\`** for repeatable task procedures.
124
+ 4. **Run \`trellis seed\`** to refresh this context file when the project evolves.
125
+
126
+ ---
127
+
128
+ ## Quick Reference
129
+
130
+ \`\`\`bash
131
+ trellis status # Current repo state
132
+ trellis log # Causal operation history
133
+ trellis seed # Refresh this context
134
+ trellis milestone # Create narrative checkpoints
135
+ \`\`\`
136
+ `;
137
+ }
138
+ function renderSeedIdeRules(profile, context, ide, timestamp) {
139
+ const ideName = ide.charAt(0).toUpperCase() + ide.slice(1);
140
+ const projectName = context.name ?? "this project";
141
+ return `# ${ideName} Rules for ${projectName}
142
+
143
+ > Generated by \`trellis seed\` on ${timestamp}
144
+
145
+ ## Project Context
146
+ - **Domain**: ${context.domain ?? "(not determined)"}
147
+ - **Ecosystem**: ${context.ecosystem ?? "unknown"}
148
+ - **File count**: ~${context.fileCount}
149
+ - **Confidence**: ${context.confidence}
150
+
151
+ ## Agent Instructions
152
+ You are working in a Trellis-tracked repository. See \`.trellis/agents/AGENTS.md\` for full context.
153
+
154
+ ## Commands
155
+ - \`trellis status\` \u2014 Check repo state
156
+ - \`trellis seed\` \u2014 Refresh this context file
157
+ - \`trellis log\` \u2014 View causal history
158
+
159
+ ---
160
+ *Auto-generated by Trellis. Run \`trellis seed\` to refresh context.*
161
+ `;
162
+ }
163
+
164
+ // src/scaffold/index.ts
165
+ init_infer();
166
+ init_profile();
167
+ init_write();
168
+
169
+ export {
170
+ seedContext
171
+ };