trellis 3.1.35 → 3.2.2

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 (287) hide show
  1. package/CHANGELOG.md +23 -5
  2. package/README.md +63 -156
  3. package/bin/trellis.mjs +2 -75
  4. package/dist/{better-sqlite-backend-ahx5p0br.js → better-sqlite-backend-2P4F6AOJ.js} +91 -29
  5. package/dist/boot-middleware-MHLHFCUC.js +9 -0
  6. package/dist/browser/index.d.ts +18 -0
  7. package/dist/browser/index.d.ts.map +1 -0
  8. package/dist/browser/index.js +95 -0
  9. package/dist/{index-53f3b8p8.js → chunk-2W3MHTMG.js} +552 -213
  10. package/dist/chunk-44FFQKQX.js +142 -0
  11. package/dist/chunk-4HYPLFJD.js +150 -0
  12. package/dist/chunk-4XIVMVHC.js +361 -0
  13. package/dist/{index-yp88he8n.js → chunk-6CTA6MCE.js} +88 -64
  14. package/dist/chunk-6GEZ6DN5.js +394 -0
  15. package/dist/chunk-7ZFRVCUE.js +211 -0
  16. package/dist/chunk-CAG4FULI.js +121 -0
  17. package/dist/chunk-FF36CQHZ.js +61 -0
  18. package/dist/{index-h32txmxe.js → chunk-FKQO5A3H.js} +6 -13
  19. package/dist/{index-nq520y6k.js → chunk-FWRS4CSC.js} +46 -32
  20. package/dist/chunk-GFZCJ4EH.js +108 -0
  21. package/dist/chunk-GLM4HGN4.js +55 -0
  22. package/dist/{index-4cdr7x2x.js → chunk-GU374KWZ.js} +182 -111
  23. package/dist/chunk-H6JB3PZ3.js +45 -0
  24. package/dist/chunk-IZX2PLIB.js +1240 -0
  25. package/dist/chunk-J2TXUFCZ.js +289 -0
  26. package/dist/chunk-J3WYZO3Q.js +211 -0
  27. package/dist/{index-xzym9w0m.js → chunk-JA7AIHRK.js} +12 -7
  28. package/dist/chunk-JHHEXEDM.js +162 -0
  29. package/dist/chunk-JUEMDWLU.js +233 -0
  30. package/dist/chunk-KFQGP6VL.js +33 -0
  31. package/dist/chunk-KIJITUZB.js +419 -0
  32. package/dist/{index-4wxa8xz4.js → chunk-KQ4A2D2P.js} +162 -23
  33. package/dist/chunk-KSU2GW22.js +958 -0
  34. package/dist/{index-rv1p47gp.js → chunk-L5N5PR2S.js} +3015 -2480
  35. package/dist/{index-h9e2efx4.js → chunk-LNUIGRDZ.js} +71 -55
  36. package/dist/{index-skhn0agf.js → chunk-MLC5BUYO.js} +19 -20
  37. package/dist/chunk-MPXUVGT3.js +104 -0
  38. package/dist/chunk-N6MYZT4O.js +68 -0
  39. package/dist/chunk-O2AV5WMN.js +48 -0
  40. package/dist/chunk-PZ4XYZ4J.js +143 -0
  41. package/dist/chunk-QB5ISE47.js +419 -0
  42. package/dist/chunk-RSWUFTO2.js +857 -0
  43. package/dist/chunk-S3XLFZ27.js +1095 -0
  44. package/dist/{index-w5wccer3.js → chunk-S6GBJ2ZB.js} +28 -12
  45. package/dist/{index-7pjz3tsy.js → chunk-SGMDTWJJ.js} +57 -15
  46. package/dist/chunk-SPSPV5BC.js +390 -0
  47. package/dist/chunk-TCKXSOBP.js +123 -0
  48. package/dist/chunk-UBGUDMUV.js +59 -0
  49. package/dist/{index-wt8rz4gn.js → chunk-UQISRW6T.js} +97 -26
  50. package/dist/chunk-USEINYUL.js +12 -0
  51. package/dist/{index-bmyt7k8n.js → chunk-UZRUP7QW.js} +12 -4
  52. package/dist/{index-xhcp6xrn.js → chunk-VBYUTRXX.js} +695 -514
  53. package/dist/{index-vkpkfwhq.js → chunk-VDAKEOML.js} +234 -194
  54. package/dist/chunk-WXSWA3MV.js +0 -0
  55. package/dist/{index-n9f2qyh5.js → chunk-X5FLTRUB.js} +55 -33
  56. package/dist/{index-h7zxhhhh.js → chunk-XMQ7G77X.js} +46 -38
  57. package/dist/{index-w7ng765c.js → chunk-YCM7ZYEZ.js} +102 -49
  58. package/dist/cli/deploy-cli.d.ts +18 -0
  59. package/dist/cli/deploy-cli.d.ts.map +1 -0
  60. package/dist/cli/errors.d.ts +6 -0
  61. package/dist/cli/errors.d.ts.map +1 -0
  62. package/dist/cli/examples.d.ts +23 -0
  63. package/dist/cli/examples.d.ts.map +1 -0
  64. package/dist/cli/index.d.ts +1 -1
  65. package/dist/cli/index.d.ts.map +1 -1
  66. package/dist/cli/index.js +2426 -6225
  67. package/dist/client/index.browser.d.ts +29 -0
  68. package/dist/client/index.browser.d.ts.map +1 -0
  69. package/dist/client/index.browser.js +64 -0
  70. package/dist/client/index.d.ts +6 -1
  71. package/dist/client/index.d.ts.map +1 -1
  72. package/dist/client/index.js +41 -21
  73. package/dist/client/live.d.ts +67 -0
  74. package/dist/client/live.d.ts.map +1 -0
  75. package/dist/client/reactive.d.ts +31 -0
  76. package/dist/client/reactive.d.ts.map +1 -0
  77. package/dist/client/sdk.browser.d.ts +104 -0
  78. package/dist/client/sdk.browser.d.ts.map +1 -0
  79. package/dist/client/sdk.browser.js +9 -0
  80. package/dist/client/sdk.d.ts +26 -2
  81. package/dist/client/sdk.d.ts.map +1 -1
  82. package/dist/client/sdk.js +9 -0
  83. package/dist/client/vcs-client.d.ts +129 -0
  84. package/dist/client/vcs-client.d.ts.map +1 -0
  85. package/dist/cms/index.js +171 -163
  86. package/dist/{config-8hczw0rs.js → config-PFTP67TR.js} +8 -9
  87. package/dist/core/computation/index.d.ts +5 -0
  88. package/dist/core/computation/index.d.ts.map +1 -0
  89. package/dist/core/computation/rollup.d.ts +18 -0
  90. package/dist/core/computation/rollup.d.ts.map +1 -0
  91. package/dist/core/index.d.ts +5 -0
  92. package/dist/core/index.d.ts.map +1 -1
  93. package/dist/core/index.js +171 -104
  94. package/dist/core/kernel/boot-middleware.d.ts +10 -0
  95. package/dist/core/kernel/boot-middleware.d.ts.map +1 -0
  96. package/dist/core/kernel/logic-middleware.d.ts +7 -1
  97. package/dist/core/kernel/logic-middleware.d.ts.map +1 -1
  98. package/dist/core/kernel/trellis-kernel.d.ts.map +1 -1
  99. package/dist/core/ontology/types.d.ts +5 -0
  100. package/dist/core/ontology/types.d.ts.map +1 -1
  101. package/dist/core/persist/better-sqlite-backend.d.ts +9 -2
  102. package/dist/core/persist/better-sqlite-backend.d.ts.map +1 -1
  103. package/dist/core/persist/factory.d.ts +6 -7
  104. package/dist/core/persist/factory.d.ts.map +1 -1
  105. package/dist/core/persist/factory.js +2 -3
  106. package/dist/core/persist/sqljs-backend.js +2 -3
  107. package/dist/db/index.d.ts +4 -1
  108. package/dist/db/index.d.ts.map +1 -1
  109. package/dist/db/index.js +67 -54
  110. package/dist/db/inspector.js +11 -19
  111. package/dist/db/trellis.css +1 -1
  112. package/dist/decisions/index.js +9 -10
  113. package/dist/deploy-LQ7GUGJ5.js +9 -0
  114. package/dist/deploy-YNVG5E4E.js +9 -0
  115. package/dist/deploy-cli-24BCHAXY.js +67 -0
  116. package/dist/deploy-cli-C35HTITO.js +67 -0
  117. package/dist/embeddings/auto-embed.d.ts +2 -2
  118. package/dist/embeddings/auto-embed.d.ts.map +1 -1
  119. package/dist/embeddings/index.js +20 -22
  120. package/dist/embeddings/search.d.ts +2 -1
  121. package/dist/embeddings/search.d.ts.map +1 -1
  122. package/dist/embeddings/store.d.ts +25 -4
  123. package/dist/embeddings/store.d.ts.map +1 -1
  124. package/dist/engine.d.ts +59 -19
  125. package/dist/engine.d.ts.map +1 -1
  126. package/dist/import-UZEKXU3B.js +10 -0
  127. package/dist/index.js +102 -93
  128. package/dist/launch-explorer-HZ4ZJA4X.js +95 -0
  129. package/dist/links/index.js +24 -26
  130. package/dist/mcp/server.d.ts.map +1 -1
  131. package/dist/plugins/agent-memory/index.js +316 -0
  132. package/dist/plugins/idea-garden/index.js +165 -0
  133. package/dist/plugins/plan-approval/index.js +579 -0
  134. package/dist/plugins/proactive-watcher/index.js +194 -0
  135. package/dist/{index-2r4jxwnb.js → query-XYLTJYSA.js} +14 -15
  136. package/dist/react/index.js +39 -70
  137. package/dist/react/realtime.js +11 -0
  138. package/dist/react/schema-hooks.js +87 -0
  139. package/dist/realtime/broadcast-channel-transport.d.ts +43 -0
  140. package/dist/realtime/broadcast-channel-transport.d.ts.map +1 -0
  141. package/dist/realtime/durable-object-relay-transport.d.ts +96 -0
  142. package/dist/realtime/durable-object-relay-transport.d.ts.map +1 -0
  143. package/dist/realtime/index.d.ts +44 -0
  144. package/dist/realtime/index.d.ts.map +1 -0
  145. package/dist/realtime/index.js +40 -0
  146. package/dist/realtime/memory-hub.d.ts +32 -0
  147. package/dist/realtime/memory-hub.d.ts.map +1 -0
  148. package/dist/realtime/persistent-channel.d.ts +105 -0
  149. package/dist/realtime/persistent-channel.d.ts.map +1 -0
  150. package/dist/realtime/presence.d.ts +73 -0
  151. package/dist/realtime/presence.d.ts.map +1 -0
  152. package/dist/realtime/relay-persistence.d.ts +37 -0
  153. package/dist/realtime/relay-persistence.d.ts.map +1 -0
  154. package/dist/realtime/relay-persistence.js +107 -0
  155. package/dist/realtime/relay-server.d.ts +103 -0
  156. package/dist/realtime/relay-server.d.ts.map +1 -0
  157. package/dist/realtime/room.d.ts +98 -0
  158. package/dist/realtime/room.d.ts.map +1 -0
  159. package/dist/realtime/text.d.ts +73 -0
  160. package/dist/realtime/text.d.ts.map +1 -0
  161. package/dist/realtime/types.d.ts +89 -0
  162. package/dist/realtime/types.d.ts.map +1 -0
  163. package/dist/realtime/websocket-relay-transport.d.ts +28 -0
  164. package/dist/realtime/websocket-relay-transport.d.ts.map +1 -0
  165. package/dist/realtime.bundle.js +1100 -0
  166. package/dist/{remote-manager-xvbg4230.js → remote-manager-ODE3T2KR.js} +25 -15
  167. package/dist/scaffold/seed.d.ts.map +1 -1
  168. package/dist/scaffold/write.d.ts +1 -1
  169. package/dist/scaffold/write.d.ts.map +1 -1
  170. package/dist/schema/define.d.ts +137 -0
  171. package/dist/schema/define.d.ts.map +1 -0
  172. package/dist/schema/entity-projection.d.ts +34 -0
  173. package/dist/schema/entity-projection.d.ts.map +1 -0
  174. package/dist/schema/eql.d.ts +46 -0
  175. package/dist/schema/eql.d.ts.map +1 -0
  176. package/dist/schema/index.d.ts +21 -0
  177. package/dist/schema/index.d.ts.map +1 -0
  178. package/dist/schema/index.js +46 -0
  179. package/dist/schema/kernel-resolve.d.ts +21 -0
  180. package/dist/schema/kernel-resolve.d.ts.map +1 -0
  181. package/dist/schema/mutations.d.ts +20 -0
  182. package/dist/schema/mutations.d.ts.map +1 -0
  183. package/dist/schema/resolve.d.ts +21 -0
  184. package/dist/schema/resolve.d.ts.map +1 -0
  185. package/dist/server/deploy-meta.d.ts +25 -0
  186. package/dist/server/deploy-meta.d.ts.map +1 -0
  187. package/dist/server/deploy.d.ts +7 -2
  188. package/dist/server/deploy.d.ts.map +1 -1
  189. package/dist/server/index.d.ts +7 -2
  190. package/dist/server/index.d.ts.map +1 -1
  191. package/dist/server/index.js +100 -58
  192. package/dist/server/node-adapter.js +5 -104
  193. package/dist/server/realtime.d.ts +14 -3
  194. package/dist/server/realtime.d.ts.map +1 -1
  195. package/dist/server/server.d.ts +8 -16
  196. package/dist/server/server.d.ts.map +1 -1
  197. package/dist/server/sprites.d.ts +18 -1
  198. package/dist/server/sprites.d.ts.map +1 -1
  199. package/dist/server/tenancy.d.ts +4 -0
  200. package/dist/server/tenancy.d.ts.map +1 -1
  201. package/dist/server/usage-meter.d.ts +53 -0
  202. package/dist/server/usage-meter.d.ts.map +1 -0
  203. package/dist/server-MB3OPSPI.js +18 -0
  204. package/dist/server-ZVWGLLRF.js +18 -0
  205. package/dist/sprites-KQGTGM6W.js +27 -0
  206. package/dist/{sprites-vc4qbrp1.js → sprites-RU3E4XQN.js} +6 -7
  207. package/dist/svelte/index.d.ts +17 -0
  208. package/dist/svelte/index.d.ts.map +1 -0
  209. package/dist/svelte/index.js +51 -0
  210. package/dist/svelte/schema-hooks.d.ts +45 -0
  211. package/dist/svelte/schema-hooks.d.ts.map +1 -0
  212. package/dist/svelte/schema-hooks.js +71 -0
  213. package/dist/svelte/stores.d.ts +78 -0
  214. package/dist/svelte/stores.d.ts.map +1 -0
  215. package/dist/sync/http-transport.d.ts +3 -3
  216. package/dist/sync/http-transport.d.ts.map +1 -1
  217. package/dist/sync/index.d.ts +15 -1
  218. package/dist/sync/index.d.ts.map +1 -1
  219. package/dist/sync/index.js +617 -0
  220. package/dist/sync/memory-room.d.ts +37 -0
  221. package/dist/sync/memory-room.d.ts.map +1 -0
  222. package/dist/sync/memory-transport.d.ts +3 -3
  223. package/dist/sync/memory-transport.d.ts.map +1 -1
  224. package/dist/sync/partykit-room.d.ts +40 -0
  225. package/dist/sync/partykit-room.d.ts.map +1 -0
  226. package/dist/sync/partykit-transport.d.ts +84 -0
  227. package/dist/sync/partykit-transport.d.ts.map +1 -0
  228. package/dist/sync/room-core.d.ts +53 -0
  229. package/dist/sync/room-core.d.ts.map +1 -0
  230. package/dist/sync/sync-engine.d.ts +40 -2
  231. package/dist/sync/sync-engine.d.ts.map +1 -1
  232. package/dist/sync/sync-room-server.d.ts +39 -0
  233. package/dist/sync/sync-room-server.d.ts.map +1 -0
  234. package/dist/sync/types.d.ts +70 -3
  235. package/dist/sync/types.d.ts.map +1 -1
  236. package/dist/sync/vcs-sync-peer.d.ts +63 -0
  237. package/dist/sync/vcs-sync-peer.d.ts.map +1 -0
  238. package/dist/sync/ws-transport.d.ts +2 -2
  239. package/dist/sync/ws-transport.d.ts.map +1 -1
  240. package/dist/tenancy-NBLLGCNJ.js +14 -0
  241. package/dist/tenancy-POMWQP6M.js +16 -0
  242. package/dist/ui/client.html +355 -67
  243. package/dist/ui/launch-explorer.d.ts +22 -0
  244. package/dist/ui/launch-explorer.d.ts.map +1 -0
  245. package/dist/ui/server.d.ts +1 -1
  246. package/dist/ui/server.d.ts.map +1 -1
  247. package/dist/vcs/blob-store.d.ts.map +1 -1
  248. package/dist/vcs/idb-op-log.d.ts +67 -0
  249. package/dist/vcs/idb-op-log.d.ts.map +1 -0
  250. package/dist/vcs/index.d.ts +1 -0
  251. package/dist/vcs/index.d.ts.map +1 -1
  252. package/dist/vcs/index.js +81 -72
  253. package/dist/vcs/issue.d.ts +22 -5
  254. package/dist/vcs/issue.d.ts.map +1 -1
  255. package/dist/vcs/lane-materialize.d.ts +5 -0
  256. package/dist/vcs/lane-materialize.d.ts.map +1 -1
  257. package/dist/vcs/op-log.d.ts +28 -2
  258. package/dist/vcs/op-log.d.ts.map +1 -1
  259. package/dist/vcs/ops.d.ts +10 -0
  260. package/dist/vcs/ops.d.ts.map +1 -1
  261. package/dist/vcs/types.d.ts +2 -0
  262. package/dist/vcs/types.d.ts.map +1 -1
  263. package/dist/{vm-config-6xhsj6b3.js → vm-config-JI4OXKDQ.js} +9 -10
  264. package/dist/vue/hooks.d.ts +64 -0
  265. package/dist/vue/hooks.d.ts.map +1 -0
  266. package/dist/vue/index.d.ts +19 -0
  267. package/dist/vue/index.d.ts.map +1 -0
  268. package/dist/vue/index.js +59 -0
  269. package/dist/vue/schema-hooks.d.ts +41 -0
  270. package/dist/vue/schema-hooks.d.ts.map +1 -0
  271. package/dist/vue/schema-hooks.js +64 -0
  272. package/package.json +130 -17
  273. package/dist/deploy-999q207z.js +0 -10
  274. package/dist/engine-y0724kjq.js +0 -8
  275. package/dist/import-s2b8e0ft.js +0 -11
  276. package/dist/index-a76rekgs.js +0 -67
  277. package/dist/index-c9h37r6h.js +0 -1
  278. package/dist/index-hr9qvv77.js +0 -860
  279. package/dist/index-k5b0xskw.js +0 -1
  280. package/dist/index-nzb3am4f.js +0 -80
  281. package/dist/index-wncptktd.js +0 -292
  282. package/dist/index-y6a4kj0p.js +0 -43
  283. package/dist/index-yhwjgfvj.js +0 -342
  284. package/dist/sdk-bepky0xs.js +0 -16
  285. package/dist/server-szdjx0nt.js +0 -13
  286. package/dist/sqlite-backend-0vsmc6qj.js +0 -8
  287. package/dist/tenancy-pjm32b4v.js +0 -14
package/dist/index.js CHANGED
@@ -1,5 +1,4 @@
1
- // @bun
2
- import"./index-w5wccer3.js";
1
+ import "./chunk-S6GBJ2ZB.js";
3
2
  import {
4
3
  FileWatcher,
5
4
  Ingestion,
@@ -12,10 +11,22 @@ import {
12
11
  loadProfile,
13
12
  saveProfile,
14
13
  writeAgentScaffold
15
- } from "./index-rv1p47gp.js";
14
+ } from "./chunk-L5N5PR2S.js";
15
+ import "./chunk-GU374KWZ.js";
16
+ import {
17
+ SqliteKernelBackend
18
+ } from "./chunk-XMQ7G77X.js";
19
+ import {
20
+ TrellisKernel
21
+ } from "./chunk-KQ4A2D2P.js";
22
+ import "./chunk-6CTA6MCE.js";
23
+ import "./chunk-4XIVMVHC.js";
16
24
  import {
17
25
  VcsMiddleware
18
- } from "./index-nq520y6k.js";
26
+ } from "./chunk-FWRS4CSC.js";
27
+ import {
28
+ IdbOpLog
29
+ } from "./chunk-MPXUVGT3.js";
19
30
  import {
20
31
  BlobStore,
21
32
  JsonOpLog,
@@ -69,112 +80,110 @@ import {
69
80
  unblockIssue,
70
81
  updateIssue,
71
82
  updateLaneHead
72
- } from "./index-xhcp6xrn.js";
73
- import"./index-4cdr7x2x.js";
83
+ } from "./chunk-VBYUTRXX.js";
74
84
  import {
75
85
  DEFAULT_CONFIG,
76
86
  branchEntityId,
77
87
  checkpointEntityId,
78
- createVcsOp,
79
88
  criterionEntityId,
80
89
  decisionEntityId,
81
90
  dirEntityId,
82
91
  fileEntityId,
83
- isVcsOp,
84
- isVcsOpKind,
85
92
  issueEntityId,
86
93
  laneEntityId,
87
94
  milestoneEntityId
88
- } from "./index-nzb3am4f.js";
95
+ } from "./chunk-N6MYZT4O.js";
89
96
  import {
90
- TrellisKernel
91
- } from "./index-4wxa8xz4.js";
92
- import"./index-yp88he8n.js";
93
- import"./index-yhwjgfvj.js";
94
- import {
95
- SqliteKernelBackend
96
- } from "./index-h7zxhhhh.js";
97
- import"./index-a76rekgs.js";
97
+ createVcsOp,
98
+ hashVcsOp,
99
+ isVcsOp,
100
+ isVcsOpKind,
101
+ verifyVcsOpHash
102
+ } from "./chunk-GLM4HGN4.js";
103
+ import "./chunk-KFQGP6VL.js";
98
104
 
99
105
  // src/index.ts
100
106
  init_engine();
101
107
  init_fs_watcher();
102
108
  init_ingestion();
103
109
  export {
104
- writeAgentScaffold,
105
- updateLaneHead,
106
- updateIssue,
107
- unblockIssue,
108
- triageIssue,
109
- threeWayTextMerge,
110
- threeWayMerge,
111
- switchBranch,
112
- startIssue,
113
- shouldAdvanceBranchHead,
114
- setCriterionStatus,
115
- saveProfile,
116
- saveLaneMeta,
117
- saveBranchState,
118
- runCriteria,
119
- resumeIssue,
120
- resolveLaneHeadFromJournal,
121
- reopenIssue,
122
- pauseIssue,
123
- newLaneId,
124
- myersDiff,
125
- milestoneEntityId,
126
- loadProfile,
127
- loadLaneMeta,
128
- loadBranchState,
129
- listMilestones,
130
- listLaneMetas,
131
- listLaneIds,
132
- listIssues,
133
- listCheckpoints,
134
- listBranches,
135
- lanesRoot,
136
- laneMetaPath,
137
- laneEntityId,
138
- laneDir,
139
- issueEntityId,
140
- isVcsOpKind,
141
- isVcsOp,
142
- inferProjectContext,
143
- hasProfile,
144
- getIssue,
145
- getBranchHeadOpHash,
146
- getActiveIssues,
147
- generateUnifiedDiff,
148
- fileEntityId,
149
- dirEntityId,
150
- diffOpRange,
151
- diffFileStates,
152
- deleteBranch,
153
- decompose,
154
- decisionEntityId,
155
- criterionEntityId,
156
- createVcsOp,
157
- createMilestone,
158
- createLaneMeta,
159
- createIssue,
160
- createCheckpoint,
161
- createBranch,
162
- closeIssue,
163
- checkpointEntityId,
164
- checkCompletionReadiness,
165
- buildFileStateAtOp,
166
- branchEntityId,
167
- blockIssue,
168
- assignIssue,
169
- addCriterion,
170
- VcsMiddleware,
171
- TrellisVcsEngine,
172
- TrellisKernel,
173
- SqliteKernelBackend,
174
- LaneOpLog,
175
- JsonOpLog,
176
- Ingestion,
177
- FileWatcher,
110
+ BlobStore,
178
111
  DEFAULT_CONFIG,
179
- BlobStore
112
+ FileWatcher,
113
+ IdbOpLog,
114
+ Ingestion,
115
+ JsonOpLog,
116
+ LaneOpLog,
117
+ SqliteKernelBackend,
118
+ TrellisKernel,
119
+ TrellisVcsEngine,
120
+ VcsMiddleware,
121
+ addCriterion,
122
+ assignIssue,
123
+ blockIssue,
124
+ branchEntityId,
125
+ buildFileStateAtOp,
126
+ checkCompletionReadiness,
127
+ checkpointEntityId,
128
+ closeIssue,
129
+ createBranch,
130
+ createCheckpoint,
131
+ createIssue,
132
+ createLaneMeta,
133
+ createMilestone,
134
+ createVcsOp,
135
+ criterionEntityId,
136
+ decisionEntityId,
137
+ decompose,
138
+ deleteBranch,
139
+ diffFileStates,
140
+ diffOpRange,
141
+ dirEntityId,
142
+ fileEntityId,
143
+ generateUnifiedDiff,
144
+ getActiveIssues,
145
+ getBranchHeadOpHash,
146
+ getIssue,
147
+ hasProfile,
148
+ hashVcsOp,
149
+ inferProjectContext,
150
+ isVcsOp,
151
+ isVcsOpKind,
152
+ issueEntityId,
153
+ laneDir,
154
+ laneEntityId,
155
+ laneMetaPath,
156
+ lanesRoot,
157
+ listBranches,
158
+ listCheckpoints,
159
+ listIssues,
160
+ listLaneIds,
161
+ listLaneMetas,
162
+ listMilestones,
163
+ loadBranchState,
164
+ loadLaneMeta,
165
+ loadProfile,
166
+ milestoneEntityId,
167
+ myersDiff,
168
+ newLaneId,
169
+ pauseIssue,
170
+ reopenIssue,
171
+ resolveLaneHeadFromJournal,
172
+ resumeIssue,
173
+ runCriteria,
174
+ saveBranchState,
175
+ saveLaneMeta,
176
+ saveProfile,
177
+ setCriterionStatus,
178
+ shouldAdvanceBranchHead,
179
+ startIssue,
180
+ switchBranch,
181
+ threeWayMerge,
182
+ threeWayTextMerge,
183
+ triageIssue,
184
+ unblockIssue,
185
+ updateIssue,
186
+ updateLaneHead,
187
+ verifyVcsOpHash,
188
+ writeAgentScaffold
180
189
  };
@@ -0,0 +1,95 @@
1
+ import "./chunk-KFQGP6VL.js";
2
+
3
+ // src/ui/launch-explorer.ts
4
+ import { existsSync } from "node:fs";
5
+ import { spawn } from "node:child_process";
6
+ import path from "node:path";
7
+ import { fileURLToPath } from "node:url";
8
+ var MODULE_DIR = path.dirname(fileURLToPath(import.meta.url));
9
+ function resolveExplorerAppDir() {
10
+ const candidates = [
11
+ path.resolve(MODULE_DIR, "../../demo/realtime-app"),
12
+ path.resolve(process.cwd(), "demo/realtime-app")
13
+ ];
14
+ for (const dir of candidates) {
15
+ if (existsSync(path.join(dir, "package.json"))) return dir;
16
+ }
17
+ throw new Error(
18
+ "Realtime explorer app not found at demo/realtime-app.\nRun: node scripts/sync-realtime-app.mjs"
19
+ );
20
+ }
21
+ function which(cmd) {
22
+ return process.platform === "win32" ? `${cmd}.cmd` : cmd;
23
+ }
24
+ async function launchRealtimeExplorer(opts) {
25
+ const appDir = resolveExplorerAppDir();
26
+ const appPort = opts.appPort ?? 4e3;
27
+ const trellisPort = opts.trellisPort ?? 3920;
28
+ if (!existsSync(path.join(appDir, "node_modules"))) {
29
+ console.log("Installing explorer dependencies (pnpm)\u2026");
30
+ await runCmd(which("pnpm"), ["install"], { cwd: appDir });
31
+ } else {
32
+ await runCmd(which("node"), ["scripts/ensure-trellis-build.mjs"], {
33
+ cwd: appDir
34
+ });
35
+ }
36
+ const env = {
37
+ ...process.env,
38
+ TRELLIS_PORT: String(trellisPort),
39
+ TRELLIS_REPO_ROOT: opts.rootPath
40
+ };
41
+ const child = spawn(which("pnpm"), ["run", "dev:all"], {
42
+ cwd: appDir,
43
+ env,
44
+ stdio: "inherit",
45
+ shell: process.platform === "win32"
46
+ });
47
+ const stop = () => {
48
+ if (!child.killed) child.kill("SIGTERM");
49
+ };
50
+ return new Promise((resolve, reject) => {
51
+ let settled = false;
52
+ child.on("error", (err) => {
53
+ if (!settled) {
54
+ settled = true;
55
+ reject(err);
56
+ }
57
+ });
58
+ child.on("exit", (code) => {
59
+ if (settled) return;
60
+ if (code != null && code !== 0) {
61
+ settled = true;
62
+ reject(new Error(`Explorer exited with code ${code}`));
63
+ }
64
+ });
65
+ setTimeout(() => {
66
+ if (settled) return;
67
+ settled = true;
68
+ resolve({
69
+ appPort,
70
+ trellisPort,
71
+ appUrl: `http://localhost:${appPort}`,
72
+ trellisUrl: `http://localhost:${trellisPort}`,
73
+ stop
74
+ });
75
+ }, 2e3);
76
+ });
77
+ }
78
+ function runCmd(cmd, args, opts) {
79
+ return new Promise((resolve, reject) => {
80
+ const child = spawn(cmd, args, {
81
+ cwd: opts.cwd,
82
+ stdio: "inherit",
83
+ shell: process.platform === "win32"
84
+ });
85
+ child.on("error", reject);
86
+ child.on("exit", (code) => {
87
+ if (code === 0) resolve();
88
+ else reject(new Error(`${cmd} exited with ${code}`));
89
+ });
90
+ });
91
+ }
92
+ export {
93
+ launchRealtimeExplorer,
94
+ resolveExplorerAppDir
95
+ };
@@ -1,4 +1,3 @@
1
- // @bun
2
1
  import {
3
2
  StaleRefRegistry,
4
3
  applyRenameProposal,
@@ -24,32 +23,31 @@ import {
24
23
  resolveRef,
25
24
  resolveRefs,
26
25
  updateFileInIndex
27
- } from "../index-vkpkfwhq.js";
28
- import"../index-a76rekgs.js";
26
+ } from "../chunk-VDAKEOML.js";
27
+ import "../chunk-KFQGP6VL.js";
29
28
  init_links();
30
-
31
29
  export {
32
- updateFileInIndex,
33
- resolveRefs,
34
- resolveRef,
35
- removeFileFromIndex,
36
- processSemanticPatches,
37
- parseRefContent,
38
- parseMarkdownRefs,
39
- parseFileRefs,
40
- parseDocCommentRefs,
41
- inferNamespace,
42
- handleSymbolDeletion,
43
- handleFileDeletion,
44
- getReferencedEntities,
45
- getOutgoingRefs,
46
- getIndexStats,
47
- getFilesWithRefs,
48
- getDiagnostics,
49
- getBacklinks,
50
- createResolverContext,
51
- buildRenameProposal,
52
- buildRefIndex,
30
+ StaleRefRegistry,
53
31
  applyRenameProposal,
54
- StaleRefRegistry
32
+ buildRefIndex,
33
+ buildRenameProposal,
34
+ createResolverContext,
35
+ getBacklinks,
36
+ getDiagnostics,
37
+ getFilesWithRefs,
38
+ getIndexStats,
39
+ getOutgoingRefs,
40
+ getReferencedEntities,
41
+ handleFileDeletion,
42
+ handleSymbolDeletion,
43
+ inferNamespace,
44
+ parseDocCommentRefs,
45
+ parseFileRefs,
46
+ parseMarkdownRefs,
47
+ parseRefContent,
48
+ processSemanticPatches,
49
+ removeFileFromIndex,
50
+ resolveRef,
51
+ resolveRefs,
52
+ updateFileInIndex
55
53
  };
@@ -1 +1 @@
1
- {"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../../src/mcp/server.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAIpE,OAAO,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AAErD,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,8BAA8B,CAAC;AAwBrE,wBAAgB,sBAAsB,IAAI,SAAS,CAisClD;AAMD;;;GAGG;AACH,eAAO,MAAM,YAAY,cAAqB,CAAC;AAE/C;;GAEG;AACH,wBAAgB,cAAc,CAAC,QAAQ,EAAE,MAAM,GAAG,gBAAgB,CAKjE"}
1
+ {"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../../src/mcp/server.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAIpE,OAAO,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AAErD,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,8BAA8B,CAAC;AAwBrE,wBAAgB,sBAAsB,IAAI,SAAS,CAqsClD;AAMD;;;GAGG;AACH,eAAO,MAAM,YAAY,cAAqB,CAAC;AAE/C;;GAEG;AACH,wBAAgB,cAAc,CAAC,QAAQ,EAAE,MAAM,GAAG,gBAAgB,CAKjE"}
@@ -0,0 +1,316 @@
1
+ import "../../chunk-KFQGP6VL.js";
2
+
3
+ // src/plugins/agent-memory/ontology.ts
4
+ var agentMemoryOntology = {
5
+ id: "trellis:agent-memory",
6
+ name: "Agent Memory",
7
+ version: "1.0.0",
8
+ description: "Graph-persisted agent conversations and message history",
9
+ entities: [
10
+ {
11
+ name: "Conversation",
12
+ description: "A thread of messages between user and agent",
13
+ attributes: [
14
+ { name: "title", type: "string", required: true },
15
+ { name: "model", type: "string", description: "LLM model used for this conversation" },
16
+ {
17
+ name: "status",
18
+ type: "string",
19
+ enum: ["active", "archived"],
20
+ default: "active"
21
+ },
22
+ { name: "createdAt", type: "string", required: true, description: "ISO 8601 timestamp" },
23
+ { name: "createdBy", type: "string", description: "Agent or user ID that initiated" },
24
+ { name: "agentId", type: "ref", description: "Agent entity this conversation belongs to", refTypes: ["Agent"] },
25
+ { name: "runId", type: "ref", description: "AgentRun this conversation is associated with", refTypes: ["AgentRun"] }
26
+ ]
27
+ },
28
+ {
29
+ name: "Message",
30
+ description: "A single message within a conversation",
31
+ attributes: [
32
+ {
33
+ name: "role",
34
+ type: "string",
35
+ required: true,
36
+ enum: ["system", "user", "assistant", "tool"]
37
+ },
38
+ { name: "content", type: "string", description: "Message content (may be null for tool-call-only messages)" },
39
+ { name: "timestamp", type: "string", required: true, description: "ISO 8601 timestamp" },
40
+ { name: "tokenCount", type: "number", description: "Estimated token count" },
41
+ { name: "name", type: "string", description: "Tool name for tool messages" },
42
+ { name: "toolCallId", type: "string", description: "Tool call ID for tool response messages" },
43
+ {
44
+ name: "status",
45
+ type: "string",
46
+ enum: ["active", "archived"],
47
+ default: "active",
48
+ description: "Archived messages are preserved for Idea Garden but excluded from active context"
49
+ }
50
+ ]
51
+ }
52
+ ],
53
+ relations: [
54
+ {
55
+ name: "hasMessage",
56
+ sourceTypes: ["Conversation"],
57
+ targetTypes: ["Message"],
58
+ cardinality: "many"
59
+ }
60
+ ]
61
+ };
62
+
63
+ // src/plugins/agent-memory/plugin.ts
64
+ function createAgentMemoryPlugin() {
65
+ const isMemoryEntity = (data) => {
66
+ if (!data || typeof data !== "object") return false;
67
+ const d = data;
68
+ return d.type === "Conversation" || d.type === "Message";
69
+ };
70
+ return {
71
+ id: "trellis:agent-memory",
72
+ name: "Agent Memory",
73
+ version: "1.0.0",
74
+ description: "Graph-persisted agent conversations and message history",
75
+ ontologies: [agentMemoryOntology],
76
+ eventHandlers: [
77
+ {
78
+ event: "entity:created",
79
+ handler: (data) => {
80
+ if (!isMemoryEntity(data)) return;
81
+ }
82
+ },
83
+ {
84
+ event: "entity:updated",
85
+ handler: (data) => {
86
+ if (!isMemoryEntity(data)) return;
87
+ }
88
+ },
89
+ {
90
+ event: "entity:deleted",
91
+ handler: (data) => {
92
+ if (!isMemoryEntity(data)) return;
93
+ }
94
+ }
95
+ ],
96
+ onLoad: async (ctx) => {
97
+ ctx.log("Agent memory system loaded");
98
+ },
99
+ onUnload: async (ctx) => {
100
+ ctx.log("Agent memory system unloaded");
101
+ }
102
+ };
103
+ }
104
+
105
+ // src/plugins/agent-memory/graph-context-manager.ts
106
+ var globalIdCounter = 0;
107
+ var GraphContextManager = class {
108
+ kernel;
109
+ conversationId = null;
110
+ messageCounter = 0;
111
+ /**
112
+ * In-memory cache of active messages for fast getHistory() reads.
113
+ * Always kept in sync with the graph via addMessage/prune/resume.
114
+ */
115
+ cache = [];
116
+ /** In-flight graph writes from fire-and-forget addMessage/prune calls. */
117
+ pendingWrites = /* @__PURE__ */ new Set();
118
+ constructor(kernel) {
119
+ this.kernel = kernel;
120
+ }
121
+ // -------------------------------------------------------------------------
122
+ // Conversation lifecycle
123
+ // -------------------------------------------------------------------------
124
+ /**
125
+ * Create a new conversation entity and set it as the active context.
126
+ * Returns the conversation entity ID.
127
+ */
128
+ async createConversation(opts) {
129
+ const id = `conversation:${Date.now()}:${++globalIdCounter}`;
130
+ const attrs = {
131
+ title: opts.title,
132
+ status: "active"
133
+ };
134
+ if (opts.agentId) attrs.agentId = opts.agentId;
135
+ if (opts.model) attrs.model = opts.model;
136
+ if (opts.createdBy) attrs.createdBy = opts.createdBy;
137
+ await this.kernel.createEntity(id, "Conversation", attrs);
138
+ this.conversationId = id;
139
+ this.cache = [];
140
+ this.messageCounter = 0;
141
+ return id;
142
+ }
143
+ /**
144
+ * Resume an existing conversation by loading its messages from the graph.
145
+ */
146
+ async resumeConversation(conversationId) {
147
+ const entity = this.kernel.getEntity(conversationId);
148
+ if (!entity || entity.type !== "Conversation") {
149
+ throw new Error(`Conversation "${conversationId}" not found.`);
150
+ }
151
+ this.conversationId = conversationId;
152
+ this.cache = this._loadMessagesFromGraph(conversationId);
153
+ this.messageCounter = this.cache.length;
154
+ }
155
+ /**
156
+ * Get the active conversation ID, or null if none is set.
157
+ */
158
+ getConversationId() {
159
+ return this.conversationId;
160
+ }
161
+ /**
162
+ * Archive the active conversation and clear local state.
163
+ */
164
+ async archiveConversation() {
165
+ if (!this.conversationId) return;
166
+ await this.kernel.updateEntity(this.conversationId, { status: "archived" });
167
+ this.conversationId = null;
168
+ this.cache = [];
169
+ }
170
+ // -------------------------------------------------------------------------
171
+ // ContextManager implementation
172
+ // -------------------------------------------------------------------------
173
+ addMessage(message) {
174
+ if (!this.conversationId) {
175
+ throw new Error("GraphContextManager: No active conversation. Call createConversation() first.");
176
+ }
177
+ const timestamp = (/* @__PURE__ */ new Date()).toISOString();
178
+ const entityId = `message:${this.conversationId.replace("conversation:", "")}:${++globalIdCounter}`;
179
+ const attrs = {
180
+ role: message.role,
181
+ timestamp,
182
+ status: "active"
183
+ };
184
+ if (message.content != null) attrs.content = message.content;
185
+ if (message.name) attrs.name = message.name;
186
+ if (message.tool_call_id) attrs.toolCallId = message.tool_call_id;
187
+ const tokenCount = this.calculateTokenCount(message);
188
+ attrs.tokenCount = tokenCount;
189
+ const write = this.kernel.createEntity(entityId, "Message", attrs, [
190
+ { attribute: "hasMessage", targetEntityId: entityId }
191
+ ]).then(() => {
192
+ return this.kernel.addLink(this.conversationId, "hasMessage", entityId);
193
+ }).catch((err) => {
194
+ console.error(`GraphContextManager: Failed to persist message ${entityId}:`, err);
195
+ }).then(() => void 0);
196
+ this.trackWrite(write);
197
+ this.cache.push({
198
+ entityId,
199
+ message,
200
+ timestamp,
201
+ status: "active"
202
+ });
203
+ }
204
+ getHistory() {
205
+ return this.cache.filter((r) => r.status === "active").map((r) => r.message);
206
+ }
207
+ async prune(targetTokenCount) {
208
+ let totalTokens = 0;
209
+ const active = this.cache.filter((r) => r.status === "active");
210
+ for (const record of active) {
211
+ totalTokens += this.calculateTokenCount(record.message);
212
+ }
213
+ if (totalTokens <= targetTokenCount) return;
214
+ for (const record of active) {
215
+ if (totalTokens <= targetTokenCount) break;
216
+ if (record.message.role === "system") continue;
217
+ record.status = "archived";
218
+ totalTokens -= this.calculateTokenCount(record.message);
219
+ const write = this.kernel.updateEntity(record.entityId, { status: "archived" }).catch((err) => {
220
+ console.error(`GraphContextManager: Failed to archive message ${record.entityId}:`, err);
221
+ }).then(() => void 0);
222
+ this.trackWrite(write);
223
+ }
224
+ }
225
+ async summarize() {
226
+ const archived = this.cache.filter((r) => r.status === "archived");
227
+ if (archived.length === 0) return "";
228
+ return `[${archived.length} earlier messages archived]`;
229
+ }
230
+ async injectRagContext(query, limit) {
231
+ }
232
+ calculateTokenCount(message) {
233
+ return (message.content?.length ?? 0) / 4;
234
+ }
235
+ // -------------------------------------------------------------------------
236
+ // Graph queries
237
+ // -------------------------------------------------------------------------
238
+ /**
239
+ * List all conversations, optionally filtered by status.
240
+ */
241
+ listConversations(status) {
242
+ const entities = this.kernel.listEntities("Conversation", status ? { status } : void 0);
243
+ return entities.map((e) => {
244
+ const get = (a) => e.facts.find((f) => f.a === a)?.v;
245
+ const messageLinks = this.kernel.getStore().getLinksByEntityAndAttribute(e.id, "hasMessage");
246
+ return {
247
+ id: e.id,
248
+ title: String(get("title") ?? "Untitled"),
249
+ status: String(get("status") ?? "active"),
250
+ createdAt: String(get("createdAt") ?? ""),
251
+ messageCount: messageLinks.length
252
+ };
253
+ });
254
+ }
255
+ /**
256
+ * Get the total message count for the active conversation.
257
+ */
258
+ getMessageCount() {
259
+ return this.cache.filter((r) => r.status === "active").length;
260
+ }
261
+ /**
262
+ * Get the total estimated token count for the active conversation.
263
+ */
264
+ getTotalTokenCount() {
265
+ return this.cache.filter((r) => r.status === "active").reduce((sum, r) => sum + this.calculateTokenCount(r.message), 0);
266
+ }
267
+ /** Wait for in-flight graph writes (tests and graceful shutdown). */
268
+ async awaitPersistence() {
269
+ while (this.pendingWrites.size > 0) {
270
+ await Promise.all([...this.pendingWrites]);
271
+ }
272
+ }
273
+ // -------------------------------------------------------------------------
274
+ // Internal
275
+ // -------------------------------------------------------------------------
276
+ trackWrite(write) {
277
+ this.pendingWrites.add(write);
278
+ write.finally(() => {
279
+ this.pendingWrites.delete(write);
280
+ });
281
+ }
282
+ /**
283
+ * Load messages from the graph for a given conversation, sorted by timestamp.
284
+ */
285
+ _loadMessagesFromGraph(conversationId) {
286
+ const store = this.kernel.getStore();
287
+ const messageLinks = store.getLinksByEntityAndAttribute(conversationId, "hasMessage");
288
+ const records = [];
289
+ for (const link of messageLinks) {
290
+ const entity = this.kernel.getEntity(link.e2);
291
+ if (!entity || entity.type !== "Message") continue;
292
+ const get = (a) => entity.facts.find((f) => f.a === a)?.v;
293
+ const message = {
294
+ role: get("role"),
295
+ content: get("content") ?? null
296
+ };
297
+ const name = get("name");
298
+ if (name) message.name = name;
299
+ const toolCallId = get("toolCallId");
300
+ if (toolCallId) message.tool_call_id = toolCallId;
301
+ records.push({
302
+ entityId: entity.id,
303
+ message,
304
+ timestamp: String(get("timestamp") ?? ""),
305
+ status: get("status") ?? "active"
306
+ });
307
+ }
308
+ records.sort((a, b) => a.timestamp.localeCompare(b.timestamp));
309
+ return records;
310
+ }
311
+ };
312
+ export {
313
+ GraphContextManager,
314
+ agentMemoryOntology,
315
+ createAgentMemoryPlugin
316
+ };