@sixb/core 0.1.17 → 0.1.19

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 (715) hide show
  1. package/README.md +7 -6
  2. package/dist/actions/commit-edits.d.ts +7 -19
  3. package/dist/actions/commit-edits.d.ts.map +1 -1
  4. package/dist/actions/errors.d.ts +0 -3
  5. package/dist/actions/errors.d.ts.map +1 -1
  6. package/dist/actions/execution.d.ts +10 -3
  7. package/dist/actions/execution.d.ts.map +1 -1
  8. package/dist/actions/index.d.ts +6 -9
  9. package/dist/actions/index.d.ts.map +1 -1
  10. package/dist/actions/index.js +56 -52
  11. package/dist/actions/index.js.map +1 -1
  12. package/dist/actions/read-facade.d.ts +1 -1
  13. package/dist/actions/request.d.ts +14 -25
  14. package/dist/actions/request.d.ts.map +1 -1
  15. package/dist/actions/run/context.d.ts +40 -0
  16. package/dist/actions/run/context.d.ts.map +1 -0
  17. package/dist/actions/run/edits-commit.d.ts +31 -0
  18. package/dist/actions/run/edits-commit.d.ts.map +1 -0
  19. package/dist/actions/run/effects.d.ts +23 -0
  20. package/dist/actions/run/effects.d.ts.map +1 -0
  21. package/dist/actions/run/execute.d.ts +30 -0
  22. package/dist/actions/run/execute.d.ts.map +1 -0
  23. package/dist/actions/run/executor.d.ts +95 -0
  24. package/dist/actions/run/executor.d.ts.map +1 -0
  25. package/dist/actions/run/normalize.d.ts +36 -0
  26. package/dist/actions/run/normalize.d.ts.map +1 -0
  27. package/dist/actions/run/phase-types.d.ts +18 -0
  28. package/dist/actions/run/phase-types.d.ts.map +1 -0
  29. package/dist/actions/run/phases.d.ts +20 -0
  30. package/dist/actions/run/phases.d.ts.map +1 -0
  31. package/dist/actions/run/run-action.d.ts +25 -0
  32. package/dist/actions/run/run-action.d.ts.map +1 -0
  33. package/dist/actions/run/signals.d.ts +67 -0
  34. package/dist/actions/run/signals.d.ts.map +1 -0
  35. package/dist/actions/run/state.d.ts +47 -0
  36. package/dist/actions/run/state.d.ts.map +1 -0
  37. package/dist/actions/run/types.d.ts +54 -0
  38. package/dist/actions/run/types.d.ts.map +1 -0
  39. package/dist/actions/run/writeback.d.ts +17 -0
  40. package/dist/actions/run/writeback.d.ts.map +1 -0
  41. package/dist/actions/run-authorization.d.ts +1 -1
  42. package/dist/actions/run-authorization.d.ts.map +1 -1
  43. package/dist/actions/run-persistence.d.ts +53 -0
  44. package/dist/actions/run-persistence.d.ts.map +1 -0
  45. package/dist/actions/types/context.d.ts +10 -0
  46. package/dist/actions/types/context.d.ts.map +1 -1
  47. package/dist/actions/validation.d.ts.map +1 -1
  48. package/dist/agents/adapters.d.ts +7 -0
  49. package/dist/agents/adapters.d.ts.map +1 -1
  50. package/dist/agents/authority.d.ts +7 -0
  51. package/dist/agents/authority.d.ts.map +1 -1
  52. package/dist/agents/context/entries.d.ts +10 -1
  53. package/dist/agents/context/entries.d.ts.map +1 -1
  54. package/dist/agents/context/index.d.ts +1 -1
  55. package/dist/agents/context/index.d.ts.map +1 -1
  56. package/dist/agents/context/index.js +4 -2
  57. package/dist/agents/context/index.js.map +1 -1
  58. package/dist/agents/context-compaction.d.ts.map +1 -1
  59. package/dist/agents/errors.d.ts +1 -1
  60. package/dist/agents/errors.d.ts.map +1 -1
  61. package/dist/agents/index.d.ts +6 -4
  62. package/dist/agents/index.d.ts.map +1 -1
  63. package/dist/agents/index.js +63 -59
  64. package/dist/agents/index.js.map +1 -1
  65. package/dist/agents/message.d.ts +8 -1
  66. package/dist/agents/message.d.ts.map +1 -1
  67. package/dist/agents/request.d.ts +19 -5
  68. package/dist/agents/request.d.ts.map +1 -1
  69. package/dist/agents/skills.d.ts +41 -0
  70. package/dist/agents/skills.d.ts.map +1 -0
  71. package/dist/agents/streams/index.js +2 -2
  72. package/dist/agents/streams/internal.js +2 -2
  73. package/dist/agents/types.d.ts +33 -4
  74. package/dist/agents/types.d.ts.map +1 -1
  75. package/dist/auth/index.js +12 -9
  76. package/dist/auth/index.js.map +1 -1
  77. package/dist/auth/runtime.d.ts.map +1 -1
  78. package/dist/auth/types.d.ts +6 -0
  79. package/dist/auth/types.d.ts.map +1 -1
  80. package/dist/authorization/event-visibility.d.ts.map +1 -1
  81. package/dist/authorization/index.js +6 -4
  82. package/dist/authorization/index.js.map +1 -1
  83. package/dist/authorization/resolve.d.ts +1 -1
  84. package/dist/authorization/resolve.d.ts.map +1 -1
  85. package/dist/authorization/types.d.ts +7 -0
  86. package/dist/authorization/types.d.ts.map +1 -1
  87. package/dist/blob-storage/browser.js +1 -1
  88. package/dist/blob-storage/execution.d.ts.map +1 -1
  89. package/dist/blob-storage/file-content.d.ts +18 -0
  90. package/dist/blob-storage/file-content.d.ts.map +1 -0
  91. package/dist/blob-storage/index.d.ts +1 -1
  92. package/dist/blob-storage/index.d.ts.map +1 -1
  93. package/dist/blob-storage/index.js +2 -2
  94. package/dist/blob-storage/internal.d.ts +2 -0
  95. package/dist/blob-storage/internal.d.ts.map +1 -1
  96. package/dist/blob-storage/internal.js +16 -4
  97. package/dist/blob-storage/internal.js.map +1 -1
  98. package/dist/blob-storage/media-type.d.ts +8 -0
  99. package/dist/blob-storage/media-type.d.ts.map +1 -0
  100. package/dist/blob-storage/types.d.ts +12 -1
  101. package/dist/blob-storage/types.d.ts.map +1 -1
  102. package/dist/blob-storage/validation.d.ts +6 -0
  103. package/dist/blob-storage/validation.d.ts.map +1 -1
  104. package/dist/bootstrap/agent-context.d.ts +33 -0
  105. package/dist/bootstrap/agent-context.d.ts.map +1 -0
  106. package/dist/bootstrap/discovery.d.ts +23 -3
  107. package/dist/bootstrap/discovery.d.ts.map +1 -1
  108. package/dist/bootstrap/index.d.ts +2 -1
  109. package/dist/bootstrap/index.d.ts.map +1 -1
  110. package/dist/bootstrap/index.js +285 -77
  111. package/dist/bootstrap/index.js.map +4 -3
  112. package/dist/bootstrap/ontology-type-manifest.d.ts.map +1 -1
  113. package/dist/{chunk-t9shqx3w.js → chunk-1f7wpmyp.js} +143 -7
  114. package/dist/chunk-1f7wpmyp.js.map +14 -0
  115. package/dist/{chunk-jjrn5v0p.js → chunk-1k89ecfr.js} +1 -1
  116. package/dist/{chunk-9vx5e9g1.js → chunk-1sr8ryzk.js} +3 -3
  117. package/dist/chunk-1sr8ryzk.js.map +11 -0
  118. package/dist/{chunk-s7ftxrdr.js → chunk-29yx306f.js} +20 -3
  119. package/dist/{chunk-s7ftxrdr.js.map → chunk-29yx306f.js.map} +3 -3
  120. package/dist/{chunk-svabwqdq.js → chunk-3gnrh4ve.js} +44 -420
  121. package/dist/{chunk-svabwqdq.js.map → chunk-3gnrh4ve.js.map} +9 -13
  122. package/dist/{chunk-4ra628t7.js → chunk-3zxk45er.js} +70 -6
  123. package/dist/{chunk-4ra628t7.js.map → chunk-3zxk45er.js.map} +5 -4
  124. package/dist/{chunk-pja9jfz6.js → chunk-4tcx876c.js} +126 -64
  125. package/dist/chunk-4tcx876c.js.map +19 -0
  126. package/dist/{chunk-vre348sb.js → chunk-52bk93x8.js} +2 -2
  127. package/dist/{chunk-4gmng3vf.js → chunk-5e43w60z.js} +2 -2
  128. package/dist/{chunk-91kcnbf0.js → chunk-6gmfggss.js} +22 -9
  129. package/dist/chunk-6gmfggss.js.map +10 -0
  130. package/dist/{chunk-33saed7g.js → chunk-7kg3k1m9.js} +1 -1
  131. package/dist/{chunk-7ecp4v7a.js → chunk-7mbzgd9m.js} +10 -4
  132. package/dist/{chunk-7ecp4v7a.js.map → chunk-7mbzgd9m.js.map} +3 -3
  133. package/dist/{chunk-b9affek3.js → chunk-7n440zgt.js} +30 -30
  134. package/dist/{chunk-b9affek3.js.map → chunk-7n440zgt.js.map} +4 -4
  135. package/dist/{chunk-kkqwzy6h.js → chunk-7t429e3f.js} +1 -1
  136. package/dist/{chunk-xcy5ddha.js → chunk-80mc0971.js} +356 -301
  137. package/dist/chunk-80mc0971.js.map +15 -0
  138. package/dist/{chunk-gf7yht60.js → chunk-85yvv5n0.js} +27 -10
  139. package/dist/chunk-85yvv5n0.js.map +12 -0
  140. package/dist/{chunk-6fsr7y93.js → chunk-8mx7qw3y.js} +14 -13
  141. package/dist/{chunk-6fsr7y93.js.map → chunk-8mx7qw3y.js.map} +4 -4
  142. package/dist/{chunk-kpx7jrmn.js → chunk-91mg3nj9.js} +59 -59
  143. package/dist/{chunk-kpx7jrmn.js.map → chunk-91mg3nj9.js.map} +5 -5
  144. package/dist/{chunk-2am3db31.js → chunk-9gyp8hg1.js} +2 -2
  145. package/dist/{chunk-ewqa58h9.js → chunk-9k93ah50.js} +4 -4
  146. package/dist/{chunk-ewqa58h9.js.map → chunk-9k93ah50.js.map} +1 -1
  147. package/dist/{chunk-4wn7bxxa.js → chunk-9ybhtmg4.js} +1 -1
  148. package/dist/{chunk-fc5zfxy1.js → chunk-a40ad1ft.js} +5 -13
  149. package/dist/chunk-a40ad1ft.js.map +10 -0
  150. package/dist/{chunk-dam456ve.js → chunk-aff7cyea.js} +431 -70
  151. package/dist/{chunk-dam456ve.js.map → chunk-aff7cyea.js.map} +10 -7
  152. package/dist/{chunk-y2aq6ag9.js → chunk-b38szspf.js} +5 -14
  153. package/dist/chunk-b38szspf.js.map +11 -0
  154. package/dist/{chunk-r2y23egw.js → chunk-bkpke1sg.js} +1 -10
  155. package/dist/chunk-bkpke1sg.js.map +10 -0
  156. package/dist/{chunk-xyvy73tj.js → chunk-bpgy64fw.js} +8 -3
  157. package/dist/chunk-bpgy64fw.js.map +12 -0
  158. package/dist/{chunk-rb143ggb.js → chunk-bwjcehza.js} +1 -1
  159. package/dist/{chunk-5thzcb8g.js → chunk-c85m1hyj.js} +2 -2
  160. package/dist/{chunk-e67ynxcr.js → chunk-d2ync1v3.js} +5 -5
  161. package/dist/{chunk-3rrezgyc.js → chunk-dnmadg9k.js} +2 -2
  162. package/dist/chunk-enpsx8k5.js +127 -0
  163. package/dist/chunk-enpsx8k5.js.map +10 -0
  164. package/dist/chunk-ey3pyej1.js +8807 -0
  165. package/dist/chunk-ey3pyej1.js.map +106 -0
  166. package/dist/{chunk-vjcd8d27.js → chunk-fa02jy15.js} +1 -1
  167. package/dist/{chunk-9se093qz.js → chunk-gc4ntf7d.js} +4 -4
  168. package/dist/{chunk-9se093qz.js.map → chunk-gc4ntf7d.js.map} +1 -1
  169. package/dist/{chunk-98cw09sw.js → chunk-hkc3jct7.js} +4 -2
  170. package/dist/chunk-hkc3jct7.js.map +10 -0
  171. package/dist/{chunk-rpxz486p.js → chunk-hvsb78a1.js} +24 -8
  172. package/dist/{chunk-rpxz486p.js.map → chunk-hvsb78a1.js.map} +3 -3
  173. package/dist/{chunk-5yd8cchh.js → chunk-j2bp5ryw.js} +55 -246
  174. package/dist/{chunk-5yd8cchh.js.map → chunk-j2bp5ryw.js.map} +4 -4
  175. package/dist/{chunk-h3v76ams.js → chunk-jhm3zsa7.js} +25 -2
  176. package/dist/chunk-jhm3zsa7.js.map +12 -0
  177. package/dist/{chunk-w9yycd3t.js → chunk-kg5j6fct.js} +4 -8
  178. package/dist/{chunk-w9yycd3t.js.map → chunk-kg5j6fct.js.map} +3 -3
  179. package/dist/{chunk-vp3z1ckh.js → chunk-kyzq4wy9.js} +7 -7
  180. package/dist/{chunk-wr8qp979.js → chunk-m427qgq0.js} +9 -5
  181. package/dist/{chunk-wr8qp979.js.map → chunk-m427qgq0.js.map} +4 -3
  182. package/dist/{chunk-c2rga5cx.js → chunk-mfs23znk.js} +1 -1
  183. package/dist/{chunk-e1c18xjx.js → chunk-nq6gpjt7.js} +4 -45
  184. package/dist/{chunk-e1c18xjx.js.map → chunk-nq6gpjt7.js.map} +5 -5
  185. package/dist/{chunk-a7er86jd.js → chunk-nre82s12.js} +1 -1
  186. package/dist/{chunk-1hqwggsn.js → chunk-nzapm6p0.js} +1 -2
  187. package/dist/chunk-nzapm6p0.js.map +12 -0
  188. package/dist/{chunk-wt4szfec.js → chunk-pbcbn83d.js} +4 -4
  189. package/dist/{chunk-wt4szfec.js.map → chunk-pbcbn83d.js.map} +1 -1
  190. package/dist/{chunk-dmn70ztd.js → chunk-pfp1txq2.js} +25 -6
  191. package/dist/chunk-pfp1txq2.js.map +11 -0
  192. package/dist/chunk-pqajwytd.js.map +2 -2
  193. package/dist/{chunk-f1xh7a32.js → chunk-q1vkr2ys.js} +4 -4
  194. package/dist/chunk-rdghfsss.js.map +2 -2
  195. package/dist/{chunk-23xs4qp9.js → chunk-rhg02hxq.js} +4 -4
  196. package/dist/{chunk-cd234ba4.js → chunk-rz53yb4v.js} +10 -5
  197. package/dist/chunk-rz53yb4v.js.map +14 -0
  198. package/dist/{chunk-aq39q04r.js → chunk-s16apyk9.js} +104 -18
  199. package/dist/chunk-s16apyk9.js.map +16 -0
  200. package/dist/{chunk-69266efg.js → chunk-s54c868q.js} +12 -4
  201. package/dist/chunk-s54c868q.js.map +12 -0
  202. package/dist/{chunk-k4g51s47.js → chunk-t6vq7bff.js} +5 -5
  203. package/dist/{chunk-sk0hcjsz.js → chunk-tjb1mk5t.js} +3 -3
  204. package/dist/{chunk-cnb5kv05.js → chunk-tpn40322.js} +23 -8
  205. package/dist/chunk-tpn40322.js.map +19 -0
  206. package/dist/{chunk-rx7h5fdx.js → chunk-v9xd5wzd.js} +1 -1
  207. package/dist/{chunk-2vhg6ysa.js → chunk-vyf9kfqf.js} +1 -1
  208. package/dist/chunk-wwdfe68s.js +128 -0
  209. package/dist/chunk-wwdfe68s.js.map +11 -0
  210. package/dist/{chunk-jnfxmr3f.js → chunk-wz0xs816.js} +6 -6
  211. package/dist/{chunk-jnfxmr3f.js.map → chunk-wz0xs816.js.map} +1 -1
  212. package/dist/chunk-xt1zt7gv.js +471 -0
  213. package/dist/chunk-xt1zt7gv.js.map +13 -0
  214. package/dist/chunk-y0c4e6ex.js +16 -0
  215. package/dist/chunk-y0c4e6ex.js.map +10 -0
  216. package/dist/{chunk-5be2ath4.js → chunk-y7rqfrgg.js} +20 -138
  217. package/dist/{chunk-5be2ath4.js.map → chunk-y7rqfrgg.js.map} +8 -9
  218. package/dist/{chunk-z5rnrmz1.js → chunk-yw9pyg66.js} +5 -3
  219. package/dist/chunk-yw9pyg66.js.map +11 -0
  220. package/dist/{chunk-dfm066qg.js → chunk-yxd3nnqt.js} +2 -29
  221. package/dist/chunk-yxd3nnqt.js.map +11 -0
  222. package/dist/{chunk-70jmg2zx.js → chunk-yzwja0mj.js} +4 -19
  223. package/dist/{chunk-70jmg2zx.js.map → chunk-yzwja0mj.js.map} +3 -3
  224. package/dist/{chunk-fggq3d9k.js → chunk-zrmy8zvw.js} +66 -47
  225. package/dist/{chunk-fggq3d9k.js.map → chunk-zrmy8zvw.js.map} +4 -4
  226. package/dist/datasets/builders.d.ts +12 -1
  227. package/dist/datasets/builders.d.ts.map +1 -1
  228. package/dist/datasets/execution.d.ts +27 -1
  229. package/dist/datasets/execution.d.ts.map +1 -1
  230. package/dist/datasets/index.d.ts +1 -1
  231. package/dist/datasets/index.d.ts.map +1 -1
  232. package/dist/datasets/types.d.ts +2 -0
  233. package/dist/datasets/types.d.ts.map +1 -1
  234. package/dist/datasets/write.d.ts +5 -0
  235. package/dist/datasets/write.d.ts.map +1 -1
  236. package/dist/datasets/write.js +10 -5
  237. package/dist/datasets/write.js.map +1 -1
  238. package/dist/deploy/index.d.ts +1 -1
  239. package/dist/deploy/index.d.ts.map +1 -1
  240. package/dist/deploy/internal.js +10 -8
  241. package/dist/deploy/internal.js.map +4 -4
  242. package/dist/deploy/services.d.ts +1 -2
  243. package/dist/deploy/services.d.ts.map +1 -1
  244. package/dist/deploy/types.d.ts +6 -5
  245. package/dist/deploy/types.d.ts.map +1 -1
  246. package/dist/deploy/validation.d.ts.map +1 -1
  247. package/dist/edits/index.js +3 -5
  248. package/dist/edits/index.js.map +1 -1
  249. package/dist/edits/properties.d.ts.map +1 -1
  250. package/dist/error-reporting/internal.js +3 -3
  251. package/dist/error-reporting/types.d.ts +2 -9
  252. package/dist/error-reporting/types.d.ts.map +1 -1
  253. package/dist/errors/catalog.d.ts +12 -0
  254. package/dist/errors/catalog.d.ts.map +1 -1
  255. package/dist/errors/internal.js +1 -1
  256. package/dist/events/definitions.d.ts +0 -5
  257. package/dist/events/definitions.d.ts.map +1 -1
  258. package/dist/events/execution.d.ts +2 -1
  259. package/dist/events/execution.d.ts.map +1 -1
  260. package/dist/events/index.d.ts +3 -3
  261. package/dist/events/index.d.ts.map +1 -1
  262. package/dist/events/index.js +6 -8
  263. package/dist/events/index.js.map +1 -1
  264. package/dist/events/scope.d.ts +0 -1
  265. package/dist/events/scope.d.ts.map +1 -1
  266. package/dist/events/scope.js +1 -1
  267. package/dist/events/selectors/builder.d.ts +1 -8
  268. package/dist/events/selectors/builder.d.ts.map +1 -1
  269. package/dist/events/selectors/index.d.ts +2 -2
  270. package/dist/events/selectors/index.d.ts.map +1 -1
  271. package/dist/events/selectors/index.js +2 -2
  272. package/dist/events/selectors/predicate.d.ts.map +1 -1
  273. package/dist/events/selectors/types.d.ts +2 -33
  274. package/dist/events/selectors/types.d.ts.map +1 -1
  275. package/dist/events/types/index.d.ts +1 -12
  276. package/dist/events/types/index.d.ts.map +1 -1
  277. package/dist/events/types/objects.d.ts +5 -0
  278. package/dist/events/types/objects.d.ts.map +1 -1
  279. package/dist/execution/agent.d.ts +10 -0
  280. package/dist/execution/agent.d.ts.map +1 -1
  281. package/dist/execution/agent.js +50 -48
  282. package/dist/execution/agent.js.map +1 -1
  283. package/dist/execution/authorized-object-reader.d.ts +6 -1
  284. package/dist/execution/authorized-object-reader.d.ts.map +1 -1
  285. package/dist/execution/primitive.js +60 -88
  286. package/dist/execution/primitive.js.map +3 -4
  287. package/dist/execution/request.js +46 -46
  288. package/dist/execution/request.js.map +1 -1
  289. package/dist/http/api-routes.d.ts.map +1 -1
  290. package/dist/http/index.js +1 -1
  291. package/dist/index.d.ts +12 -11
  292. package/dist/index.d.ts.map +1 -1
  293. package/dist/index.js +120 -124
  294. package/dist/index.js.map +1 -1
  295. package/dist/lake-storage/index.js +8 -5
  296. package/dist/lake-storage/index.js.map +1 -1
  297. package/dist/materialization/index.js +3 -3
  298. package/dist/materialization/index.js.map +1 -1
  299. package/dist/materialization/model.d.ts +19 -6
  300. package/dist/materialization/model.d.ts.map +1 -1
  301. package/dist/materializer/index.js +35 -32
  302. package/dist/materializer/index.js.map +1 -1
  303. package/dist/materializer/shared/normalize.d.ts.map +1 -1
  304. package/dist/models/catalog.d.ts +1 -1
  305. package/dist/models/catalog.d.ts.map +1 -1
  306. package/dist/models/execution/binding.d.ts +6 -0
  307. package/dist/models/execution/binding.d.ts.map +1 -1
  308. package/dist/models/execution/index.js +26 -23
  309. package/dist/models/execution/index.js.map +1 -1
  310. package/dist/models/execution/model-call-recorder.d.ts +4 -0
  311. package/dist/models/execution/model-call-recorder.d.ts.map +1 -1
  312. package/dist/models/execution.d.ts.map +1 -1
  313. package/dist/models/index.js +1 -1
  314. package/dist/models/language-model.d.ts +6 -0
  315. package/dist/models/language-model.d.ts.map +1 -1
  316. package/dist/objects/action/errors.d.ts +0 -9
  317. package/dist/objects/action/errors.d.ts.map +1 -1
  318. package/dist/objects/action/index.d.ts +3 -3
  319. package/dist/objects/action/index.d.ts.map +1 -1
  320. package/dist/objects/action/request.d.ts +2 -8
  321. package/dist/objects/action/request.d.ts.map +1 -1
  322. package/dist/objects/context/index.d.ts +1 -1
  323. package/dist/objects/context/index.d.ts.map +1 -1
  324. package/dist/objects/context/types.d.ts +6 -0
  325. package/dist/objects/context/types.d.ts.map +1 -1
  326. package/dist/objects/execution.d.ts +2 -3
  327. package/dist/objects/execution.d.ts.map +1 -1
  328. package/dist/objects/index.js +49 -30
  329. package/dist/objects/index.js.map +1 -1
  330. package/dist/objects/materializer-adapter.d.ts.map +1 -1
  331. package/dist/objects/object/upsert-batch.d.ts.map +1 -1
  332. package/dist/objects/object/upsert.d.ts.map +1 -1
  333. package/dist/objects/property-clearance.d.ts +41 -0
  334. package/dist/objects/property-clearance.d.ts.map +1 -0
  335. package/dist/objects/query/executor.d.ts +3 -0
  336. package/dist/objects/query/executor.d.ts.map +1 -1
  337. package/dist/objects/query/index.js +34 -31
  338. package/dist/objects/query/index.js.map +1 -1
  339. package/dist/objects/query/validate.d.ts +10 -1
  340. package/dist/objects/query/validate.d.ts.map +1 -1
  341. package/dist/objects/sdk/file-handle.d.ts +6 -0
  342. package/dist/objects/sdk/file-handle.d.ts.map +1 -0
  343. package/dist/objects/sdk/object-handle.d.ts +2 -2
  344. package/dist/objects/sdk/object-handle.d.ts.map +1 -1
  345. package/dist/objects/sdk/object-set.d.ts +2 -0
  346. package/dist/objects/sdk/object-set.d.ts.map +1 -1
  347. package/dist/objects/service/index.d.ts +0 -1
  348. package/dist/objects/service/index.d.ts.map +1 -1
  349. package/dist/ontology/builders.d.ts +12 -1
  350. package/dist/ontology/builders.d.ts.map +1 -1
  351. package/dist/ontology/docs-markdown.d.ts +35 -0
  352. package/dist/ontology/docs-markdown.d.ts.map +1 -0
  353. package/dist/ontology/docs.d.ts +50 -0
  354. package/dist/ontology/docs.d.ts.map +1 -0
  355. package/dist/ontology/index.js +7 -4
  356. package/dist/ontology/index.js.map +1 -1
  357. package/dist/ontology/inference/index.d.ts +19 -0
  358. package/dist/ontology/inference/index.d.ts.map +1 -1
  359. package/dist/ontology/internal.d.ts +3 -1
  360. package/dist/ontology/internal.d.ts.map +1 -1
  361. package/dist/ontology/internal.js +276 -3
  362. package/dist/ontology/internal.js.map +4 -3
  363. package/dist/ontology/tokens.d.ts +8 -1
  364. package/dist/ontology/tokens.d.ts.map +1 -1
  365. package/dist/ontology/types.d.ts +5 -0
  366. package/dist/ontology/types.d.ts.map +1 -1
  367. package/dist/ontology/validation/index.d.ts +1 -1
  368. package/dist/ontology/validation/index.d.ts.map +1 -1
  369. package/dist/ontology/validation/schema.d.ts +7 -0
  370. package/dist/ontology/validation/schema.d.ts.map +1 -1
  371. package/dist/pipelines/index.js +34 -31
  372. package/dist/pipelines/index.js.map +1 -1
  373. package/dist/projections/internal.js +27 -24
  374. package/dist/projections/internal.js.map +1 -1
  375. package/dist/query.js +2 -2
  376. package/dist/queues/in-memory.d.ts +1 -2
  377. package/dist/queues/in-memory.d.ts.map +1 -1
  378. package/dist/queues/index.d.ts +1 -1
  379. package/dist/queues/index.d.ts.map +1 -1
  380. package/dist/queues/index.js +1 -1
  381. package/dist/queues/types.d.ts +0 -7
  382. package/dist/queues/types.d.ts.map +1 -1
  383. package/dist/runtime/create.d.ts +11 -2
  384. package/dist/runtime/create.d.ts.map +1 -1
  385. package/dist/runtime/definitions.d.ts +3 -1
  386. package/dist/runtime/definitions.d.ts.map +1 -1
  387. package/dist/runtime/host.d.ts +13 -2
  388. package/dist/runtime/host.d.ts.map +1 -1
  389. package/dist/runtime/index.d.ts +1 -1
  390. package/dist/runtime/index.d.ts.map +1 -1
  391. package/dist/runtime/internal.js +30 -28
  392. package/dist/runtime/internal.js.map +1 -1
  393. package/dist/runtime/locale.d.ts +9 -0
  394. package/dist/runtime/locale.d.ts.map +1 -0
  395. package/dist/runtime/resolve-definitions.d.ts +4 -2
  396. package/dist/runtime/resolve-definitions.d.ts.map +1 -1
  397. package/dist/runtime/types.d.ts +46 -39
  398. package/dist/runtime/types.d.ts.map +1 -1
  399. package/dist/sandboxes/index.js +7 -6
  400. package/dist/sandboxes/index.js.map +1 -1
  401. package/dist/scheduler/index.js +1 -1
  402. package/dist/scheduler/runtime.d.ts +3 -0
  403. package/dist/scheduler/runtime.d.ts.map +1 -1
  404. package/dist/schedules/builders.d.ts.map +1 -1
  405. package/dist/schedules/index.js +3 -3
  406. package/dist/schedules/runtime.d.ts.map +1 -1
  407. package/dist/schedules/validation.d.ts +0 -1
  408. package/dist/schedules/validation.d.ts.map +1 -1
  409. package/dist/security/builders.d.ts +11 -2
  410. package/dist/security/builders.d.ts.map +1 -1
  411. package/dist/security/every.d.ts +1 -1
  412. package/dist/security/index.d.ts +4 -4
  413. package/dist/security/index.d.ts.map +1 -1
  414. package/dist/security/markings.d.ts +19 -0
  415. package/dist/security/markings.d.ts.map +1 -0
  416. package/dist/security/redactions.d.ts +4 -0
  417. package/dist/security/redactions.d.ts.map +1 -0
  418. package/dist/security/registry.d.ts +7 -1
  419. package/dist/security/registry.d.ts.map +1 -1
  420. package/dist/security/types.d.ts +25 -0
  421. package/dist/security/types.d.ts.map +1 -1
  422. package/dist/security/validation.d.ts +4 -1
  423. package/dist/security/validation.d.ts.map +1 -1
  424. package/dist/shares/internal.js +24 -21
  425. package/dist/shares/internal.js.map +2 -2
  426. package/dist/storage/action-runs/failure.js +2 -2
  427. package/dist/storage/action-runs/idempotency.d.ts +3 -4
  428. package/dist/storage/action-runs/idempotency.d.ts.map +1 -1
  429. package/dist/storage/action-runs/in-memory.d.ts +2 -9
  430. package/dist/storage/action-runs/in-memory.d.ts.map +1 -1
  431. package/dist/storage/action-runs/index.d.ts +1 -3
  432. package/dist/storage/action-runs/index.d.ts.map +1 -1
  433. package/dist/storage/action-runs/provider.js +1 -1
  434. package/dist/storage/action-runs/record.d.ts +20 -0
  435. package/dist/storage/action-runs/record.d.ts.map +1 -0
  436. package/dist/storage/action-runs/types.d.ts +39 -68
  437. package/dist/storage/action-runs/types.d.ts.map +1 -1
  438. package/dist/storage/agents/provider.d.ts.map +1 -1
  439. package/dist/storage/agents/provider.js +5 -4
  440. package/dist/storage/agents/provider.js.map +1 -1
  441. package/dist/storage/agents/types.d.ts +15 -9
  442. package/dist/storage/agents/types.d.ts.map +1 -1
  443. package/dist/storage/ai-limits/enforcement.js +2 -2
  444. package/dist/storage/connector-connections/provider.js +1 -1
  445. package/dist/storage/file-upload-sessions/provider.js +12 -9
  446. package/dist/storage/file-upload-sessions/provider.js.map +1 -1
  447. package/dist/storage/index.d.ts +3 -2
  448. package/dist/storage/index.d.ts.map +1 -1
  449. package/dist/storage/index.js +36 -34
  450. package/dist/storage/index.js.map +1 -1
  451. package/dist/storage/internal.d.ts +1 -1
  452. package/dist/storage/internal.d.ts.map +1 -1
  453. package/dist/storage/internal.js +11 -13
  454. package/dist/storage/internal.js.map +1 -1
  455. package/dist/storage/objects/execution-limits.d.ts +1 -1
  456. package/dist/storage/objects/execution-limits.d.ts.map +1 -1
  457. package/dist/storage/objects/types.d.ts +7 -0
  458. package/dist/storage/objects/types.d.ts.map +1 -1
  459. package/dist/storage/ontology/provider.js +2 -2
  460. package/dist/storage/projection-runs/provider.js +2 -2
  461. package/dist/storage/types.d.ts +1 -1
  462. package/dist/storage/types.d.ts.map +1 -1
  463. package/dist/storage/workflow-runs/provider.js +12 -9
  464. package/dist/storage/workflow-runs/provider.js.map +1 -1
  465. package/dist/syncs/index.js +35 -32
  466. package/dist/syncs/index.js.map +1 -1
  467. package/dist/testing/action-execution.d.ts +34 -4
  468. package/dist/testing/action-execution.d.ts.map +1 -1
  469. package/dist/testing/action-run-storage-contract.d.ts +11 -0
  470. package/dist/testing/action-run-storage-contract.d.ts.map +1 -0
  471. package/dist/testing/index.d.ts +2 -1
  472. package/dist/testing/index.d.ts.map +1 -1
  473. package/dist/testing/index.js +3213 -2869
  474. package/dist/testing/index.js.map +7 -6
  475. package/dist/testing/materializer-storage-contract.d.ts.map +1 -1
  476. package/dist/testing/queues-contract.d.ts.map +1 -1
  477. package/dist/webhooks/internal.js +29 -26
  478. package/dist/webhooks/internal.js.map +2 -2
  479. package/dist/workers/index.js +1 -1
  480. package/dist/workflows/builders.d.ts.map +1 -1
  481. package/dist/workflows/index.js +55 -55
  482. package/dist/workflows/index.js.map +1 -1
  483. package/dist/workflows/request.d.ts.map +1 -1
  484. package/dist/workflows/types.d.ts +6 -3
  485. package/dist/workflows/types.d.ts.map +1 -1
  486. package/dist/workflows/validation.d.ts +2 -1
  487. package/dist/workflows/validation.d.ts.map +1 -1
  488. package/package.json +1 -7
  489. package/src/actions/commit-edits.ts +9 -37
  490. package/src/actions/errors.ts +0 -4
  491. package/src/actions/execution.ts +10 -10
  492. package/src/actions/index.ts +5 -24
  493. package/src/actions/read-facade.ts +2 -1
  494. package/src/actions/request.ts +157 -295
  495. package/src/actions/run/context.ts +193 -0
  496. package/src/actions/run/edits-commit.ts +102 -0
  497. package/src/actions/run/effects.ts +105 -0
  498. package/src/actions/run/execute.ts +113 -0
  499. package/src/actions/run/executor.ts +314 -0
  500. package/src/actions/run/normalize.ts +142 -0
  501. package/src/actions/run/phase-types.ts +20 -0
  502. package/src/actions/run/phases.ts +150 -0
  503. package/src/actions/run/run-action.ts +170 -0
  504. package/src/actions/run/signals.ts +118 -0
  505. package/src/actions/run/state.ts +95 -0
  506. package/src/actions/run/types.ts +61 -0
  507. package/src/actions/run/writeback.ts +79 -0
  508. package/src/actions/run-authorization.ts +1 -1
  509. package/src/actions/run-persistence.ts +105 -0
  510. package/src/actions/types/context.ts +10 -0
  511. package/src/actions/validation.ts +4 -1
  512. package/src/agents/adapters.ts +15 -0
  513. package/src/agents/authority.ts +15 -0
  514. package/src/agents/context/entries.ts +48 -4
  515. package/src/agents/context/index.ts +1 -0
  516. package/src/agents/context-compaction.ts +6 -0
  517. package/src/agents/errors.ts +3 -0
  518. package/src/agents/index.ts +13 -1
  519. package/src/agents/message.ts +9 -0
  520. package/src/agents/request.ts +178 -22
  521. package/src/agents/skills.ts +63 -0
  522. package/src/agents/types.ts +35 -5
  523. package/src/auth/runtime.ts +14 -0
  524. package/src/auth/types.ts +6 -0
  525. package/src/authorization/event-visibility.ts +0 -12
  526. package/src/authorization/resolve.ts +6 -1
  527. package/src/authorization/types.ts +7 -0
  528. package/src/blob-storage/execution.ts +12 -0
  529. package/src/blob-storage/file-content.ts +106 -0
  530. package/src/blob-storage/index.ts +1 -0
  531. package/src/blob-storage/internal.ts +7 -0
  532. package/src/blob-storage/media-type.ts +29 -0
  533. package/src/blob-storage/types.ts +13 -1
  534. package/src/blob-storage/validation.ts +13 -0
  535. package/src/bootstrap/agent-context.ts +356 -0
  536. package/src/bootstrap/discovery.ts +100 -33
  537. package/src/bootstrap/index.ts +1 -1
  538. package/src/bootstrap/ontology-type-manifest.ts +3 -38
  539. package/src/datasets/builders.ts +17 -1
  540. package/src/datasets/execution.ts +110 -2
  541. package/src/datasets/index.ts +7 -1
  542. package/src/datasets/types.ts +2 -0
  543. package/src/datasets/write.ts +21 -2
  544. package/src/deploy/index.ts +0 -1
  545. package/src/deploy/services.ts +2 -11
  546. package/src/deploy/types.ts +6 -6
  547. package/src/deploy/validation.ts +12 -6
  548. package/src/edits/properties.ts +3 -0
  549. package/src/error-reporting/types.ts +2 -10
  550. package/src/errors/catalog.ts +13 -0
  551. package/src/events/definitions.ts +0 -17
  552. package/src/events/execution.ts +15 -16
  553. package/src/events/index.ts +0 -14
  554. package/src/events/scope.ts +0 -12
  555. package/src/events/selectors/builder.ts +0 -51
  556. package/src/events/selectors/index.ts +0 -6
  557. package/src/events/selectors/predicate.ts +0 -2
  558. package/src/events/selectors/types.ts +7 -65
  559. package/src/events/types/index.ts +0 -11
  560. package/src/events/types/objects.ts +5 -0
  561. package/src/execution/agent.ts +27 -0
  562. package/src/execution/authorization.ts +1 -0
  563. package/src/execution/authorized-object-reader.ts +96 -34
  564. package/src/execution/scopes.ts +2 -6
  565. package/src/http/api-routes.ts +4 -3
  566. package/src/index.ts +28 -21
  567. package/src/materialization/model.ts +26 -9
  568. package/src/materializer/README.md +6 -1
  569. package/src/materializer/edits/commit.ts +42 -32
  570. package/src/materializer/shared/normalize.ts +25 -14
  571. package/src/models/catalog.ts +26 -2
  572. package/src/models/execution/README.md +4 -3
  573. package/src/models/execution/binding.ts +6 -0
  574. package/src/models/execution/model-call-recorder.ts +10 -0
  575. package/src/models/execution/session.ts +2 -2
  576. package/src/models/execution.ts +6 -2
  577. package/src/models/language-model.ts +6 -0
  578. package/src/objects/action/errors.ts +0 -12
  579. package/src/objects/action/index.ts +3 -3
  580. package/src/objects/action/request.ts +2 -29
  581. package/src/objects/context/index.ts +1 -0
  582. package/src/objects/context/types.ts +7 -0
  583. package/src/objects/execution.ts +6 -3
  584. package/src/objects/materializer-adapter.ts +3 -0
  585. package/src/objects/object/upsert-batch.ts +4 -1
  586. package/src/objects/object/upsert.ts +3 -1
  587. package/src/objects/property-clearance.ts +209 -0
  588. package/src/objects/query/executor.ts +43 -36
  589. package/src/objects/query/validate.ts +133 -14
  590. package/src/objects/sdk/file-handle.ts +77 -0
  591. package/src/objects/sdk/object-handle.ts +11 -33
  592. package/src/objects/sdk/object-set.ts +10 -32
  593. package/src/objects/service/index.ts +0 -1
  594. package/src/ontology/builders.ts +18 -2
  595. package/src/ontology/docs-markdown.ts +394 -0
  596. package/src/ontology/docs.ts +196 -0
  597. package/src/ontology/inference/index.ts +25 -0
  598. package/src/ontology/internal.ts +7 -0
  599. package/src/ontology/tokens.ts +13 -2
  600. package/src/ontology/types.ts +5 -0
  601. package/src/ontology/validation/index.ts +1 -0
  602. package/src/ontology/validation/schema.ts +26 -1
  603. package/src/queues/in-memory.ts +0 -6
  604. package/src/queues/index.ts +0 -2
  605. package/src/queues/types.ts +0 -11
  606. package/src/runtime/create.ts +34 -4
  607. package/src/runtime/definitions.ts +3 -1
  608. package/src/runtime/host.ts +50 -1
  609. package/src/runtime/index.ts +3 -0
  610. package/src/runtime/locale.ts +26 -0
  611. package/src/runtime/resolve-definitions.ts +28 -2
  612. package/src/runtime/sixb.ts +1 -1
  613. package/src/runtime/types.ts +55 -48
  614. package/src/scheduler/runtime.ts +11 -2
  615. package/src/schedules/builders.ts +1 -4
  616. package/src/schedules/runtime.ts +0 -41
  617. package/src/schedules/validation.ts +2 -16
  618. package/src/security/builders.ts +49 -5
  619. package/src/security/every.ts +1 -1
  620. package/src/security/index.ts +6 -1
  621. package/src/security/markings.ts +313 -0
  622. package/src/security/redactions.ts +6 -0
  623. package/src/security/registry.ts +21 -1
  624. package/src/security/types.ts +26 -0
  625. package/src/security/validation.ts +59 -2
  626. package/src/storage/action-runs/idempotency.ts +13 -41
  627. package/src/storage/action-runs/in-memory.ts +20 -311
  628. package/src/storage/action-runs/index.ts +1 -16
  629. package/src/storage/action-runs/record.ts +130 -0
  630. package/src/storage/action-runs/types.ts +37 -92
  631. package/src/storage/agents/provider.ts +11 -0
  632. package/src/storage/agents/types.ts +15 -7
  633. package/src/storage/index.ts +2 -9
  634. package/src/storage/internal.ts +1 -7
  635. package/src/storage/objects/execution-limits.ts +3 -2
  636. package/src/storage/objects/types.ts +7 -0
  637. package/src/storage/types.ts +2 -4
  638. package/src/testing/action-execution.ts +73 -13
  639. package/src/testing/action-run-storage-contract.ts +335 -0
  640. package/src/testing/index.ts +8 -1
  641. package/src/testing/materializer-storage-contract.ts +174 -18
  642. package/src/testing/queues-contract.ts +0 -18
  643. package/src/workflows/builders.ts +24 -1
  644. package/src/workflows/request.ts +3 -0
  645. package/src/workflows/types.ts +6 -3
  646. package/src/workflows/validation.ts +32 -4
  647. package/dist/actions/run-dispatch.d.ts +0 -25
  648. package/dist/actions/run-dispatch.d.ts.map +0 -1
  649. package/dist/actions/worker.d.ts +0 -3
  650. package/dist/actions/worker.d.ts.map +0 -1
  651. package/dist/actions/worker.js +0 -321
  652. package/dist/actions/worker.js.map +0 -11
  653. package/dist/chunk-10styjgk.js +0 -1572
  654. package/dist/chunk-10styjgk.js.map +0 -20
  655. package/dist/chunk-1hqwggsn.js.map +0 -12
  656. package/dist/chunk-52c5zb0z.js +0 -81
  657. package/dist/chunk-52c5zb0z.js.map +0 -10
  658. package/dist/chunk-69266efg.js.map +0 -12
  659. package/dist/chunk-6wbm6ymz.js +0 -4399
  660. package/dist/chunk-6wbm6ymz.js.map +0 -48
  661. package/dist/chunk-85cd7e8c.js +0 -51
  662. package/dist/chunk-85cd7e8c.js.map +0 -10
  663. package/dist/chunk-91kcnbf0.js.map +0 -10
  664. package/dist/chunk-98cw09sw.js.map +0 -10
  665. package/dist/chunk-9g6jz9kk.js +0 -592
  666. package/dist/chunk-9g6jz9kk.js.map +0 -15
  667. package/dist/chunk-9vx5e9g1.js.map +0 -11
  668. package/dist/chunk-aq39q04r.js.map +0 -15
  669. package/dist/chunk-cd234ba4.js.map +0 -14
  670. package/dist/chunk-cnb5kv05.js.map +0 -19
  671. package/dist/chunk-dfm066qg.js.map +0 -11
  672. package/dist/chunk-dmn70ztd.js.map +0 -11
  673. package/dist/chunk-fc5zfxy1.js.map +0 -11
  674. package/dist/chunk-gf7yht60.js.map +0 -12
  675. package/dist/chunk-h3v76ams.js.map +0 -11
  676. package/dist/chunk-pja9jfz6.js.map +0 -19
  677. package/dist/chunk-r2y23egw.js.map +0 -10
  678. package/dist/chunk-t9shqx3w.js.map +0 -12
  679. package/dist/chunk-tjjgy3z4.js +0 -1277
  680. package/dist/chunk-tjjgy3z4.js.map +0 -35
  681. package/dist/chunk-xcy5ddha.js.map +0 -15
  682. package/dist/chunk-xyvy73tj.js.map +0 -12
  683. package/dist/chunk-y2aq6ag9.js.map +0 -11
  684. package/dist/chunk-z5rnrmz1.js.map +0 -11
  685. package/dist/chunk-zvx7h87b.js +0 -12
  686. package/dist/chunk-zvx7h87b.js.map +0 -10
  687. package/dist/events/types/actions.d.ts +0 -39
  688. package/dist/events/types/actions.d.ts.map +0 -1
  689. package/dist/objects/service/action-service.d.ts +0 -13
  690. package/dist/objects/service/action-service.d.ts.map +0 -1
  691. package/src/actions/run-dispatch.ts +0 -282
  692. package/src/actions/worker.ts +0 -2
  693. package/src/events/types/actions.ts +0 -42
  694. package/src/objects/service/action-service.ts +0 -43
  695. /package/dist/{chunk-jjrn5v0p.js.map → chunk-1k89ecfr.js.map} +0 -0
  696. /package/dist/{chunk-vre348sb.js.map → chunk-52bk93x8.js.map} +0 -0
  697. /package/dist/{chunk-4gmng3vf.js.map → chunk-5e43w60z.js.map} +0 -0
  698. /package/dist/{chunk-33saed7g.js.map → chunk-7kg3k1m9.js.map} +0 -0
  699. /package/dist/{chunk-kkqwzy6h.js.map → chunk-7t429e3f.js.map} +0 -0
  700. /package/dist/{chunk-2am3db31.js.map → chunk-9gyp8hg1.js.map} +0 -0
  701. /package/dist/{chunk-4wn7bxxa.js.map → chunk-9ybhtmg4.js.map} +0 -0
  702. /package/dist/{chunk-rb143ggb.js.map → chunk-bwjcehza.js.map} +0 -0
  703. /package/dist/{chunk-5thzcb8g.js.map → chunk-c85m1hyj.js.map} +0 -0
  704. /package/dist/{chunk-e67ynxcr.js.map → chunk-d2ync1v3.js.map} +0 -0
  705. /package/dist/{chunk-3rrezgyc.js.map → chunk-dnmadg9k.js.map} +0 -0
  706. /package/dist/{chunk-vjcd8d27.js.map → chunk-fa02jy15.js.map} +0 -0
  707. /package/dist/{chunk-vp3z1ckh.js.map → chunk-kyzq4wy9.js.map} +0 -0
  708. /package/dist/{chunk-c2rga5cx.js.map → chunk-mfs23znk.js.map} +0 -0
  709. /package/dist/{chunk-a7er86jd.js.map → chunk-nre82s12.js.map} +0 -0
  710. /package/dist/{chunk-f1xh7a32.js.map → chunk-q1vkr2ys.js.map} +0 -0
  711. /package/dist/{chunk-23xs4qp9.js.map → chunk-rhg02hxq.js.map} +0 -0
  712. /package/dist/{chunk-k4g51s47.js.map → chunk-t6vq7bff.js.map} +0 -0
  713. /package/dist/{chunk-sk0hcjsz.js.map → chunk-tjb1mk5t.js.map} +0 -0
  714. /package/dist/{chunk-rx7h5fdx.js.map → chunk-v9xd5wzd.js.map} +0 -0
  715. /package/dist/{chunk-2vhg6ysa.js.map → chunk-vyf9kfqf.js.map} +0 -0
@@ -0,0 +1,356 @@
1
+ /**
2
+ * Discovery of the project files the Agent reads: Agent Skills under `skills/`, the conversational
3
+ * Agent's instructions in `SIXB.md`, and the hand-written docs and scripts under `ontology/`.
4
+ *
5
+ * Contents are read here, once, so the Agent receives exactly what was validated. Built projects
6
+ * run from their project root with the committed tree, so the same reads work after `sixb build`.
7
+ */
8
+
9
+ import type { Dirent } from "node:fs"
10
+ import { lstat, readdir, readFile, stat } from "node:fs/promises"
11
+ import { basename, join, relative, sep } from "node:path"
12
+ import type { AgentProjectFile, AgentSkillDefinition } from "../agents/skills"
13
+ import type { OntologyDoc } from "../ontology/docs"
14
+ import { RuntimeError } from "../runtime/errors"
15
+
16
+ /** The project's instructions for the conversational Agent, at the project root. */
17
+ export const PROJECT_INSTRUCTIONS_FILE = "SIXB.md"
18
+
19
+ /** They are part of every conversation's prompt, so they stay short. */
20
+ const MAX_PROJECT_INSTRUCTIONS_BYTES = 32 * 1024
21
+
22
+ /** Every sandbox receives them, and every process holds them in memory. */
23
+ const MAX_AGENT_FILES_BYTES = 16 * 1024 * 1024
24
+
25
+ /** Dependency and cache folders, and dotfiles such as `.env`, `.venv`, or `.DS_Store`. */
26
+ const IGNORED_NAMES = new Set(["node_modules", "venv", "__pycache__"])
27
+
28
+ const SKILL_NAME_RE = /^[a-z0-9][a-z0-9._-]*$/
29
+ const UNQUOTED_COLON_VALUE_RE = /^\s*[\w-]+:\s+[^\s"'|>].*:\s/
30
+
31
+ /**
32
+ * Whether a project file, by its POSIX path relative to the project root, is one the Agent reads.
33
+ * `sixb dev` restarts when one changes.
34
+ */
35
+ export function isAgentContextPath(path: string): boolean {
36
+ const segments = path.split("/")
37
+ if (segments.some(isIgnoredAgentContextName)) return false
38
+ if (path === PROJECT_INSTRUCTIONS_FILE || segments[0] === "skills") return true
39
+ if (segments[0] !== "ontology") return false
40
+ return isMarkdown(path) || segments.slice(1, -1).some(isOntologyScriptsDirectory)
41
+ }
42
+
43
+ /** Files and folders the Agent never receives, wherever they appear in its directories. */
44
+ export function isIgnoredAgentContextName(name: string): boolean {
45
+ return name.startsWith(".") || IGNORED_NAMES.has(name)
46
+ }
47
+
48
+ /** A `scripts/` directory anywhere under `ontology/` holds Agent scripts: mounted, never imported. */
49
+ export function isOntologyScriptsDirectory(name: string): boolean {
50
+ return name === "scripts"
51
+ }
52
+
53
+ export interface DiscoveredOntologyFiles {
54
+ /** Markdown under `ontology/`, outside `scripts/` directories. */
55
+ readonly docs: readonly OntologyDoc[]
56
+ /** Every file in a `scripts/` directory under `ontology/`. */
57
+ readonly scripts: readonly AgentProjectFile[]
58
+ }
59
+
60
+ /** Read the hand-written docs and scripts under `ontology/`. Paths are relative to `ontology/`. */
61
+ export async function discoverOntologyFiles(projectRoot: string): Promise<DiscoveredOntologyFiles> {
62
+ const ontologyDir = join(projectRoot, "ontology")
63
+ const docs: OntologyDoc[] = []
64
+ const scripts: AgentProjectFile[] = []
65
+ const budget = createFilesBudget("ontology/")
66
+
67
+ async function walk(dir: string, inScripts: boolean): Promise<void> {
68
+ let entries: Dirent[]
69
+ try {
70
+ entries = await readdir(dir, { withFileTypes: true })
71
+ } catch (error) {
72
+ if (isNotFound(error)) return
73
+ throw error
74
+ }
75
+
76
+ for (const entry of entries.sort((a, b) => a.name.localeCompare(b.name))) {
77
+ if (isIgnoredAgentContextName(entry.name)) continue
78
+ const path = join(dir, entry.name)
79
+ const relativePath = toPosixRelative(ontologyDir, path)
80
+ if (entry.isSymbolicLink()) {
81
+ // Module discovery skips symlinks; a folder, doc, or script the Agent would miss fails.
82
+ const target = await stat(path).catch(() => undefined)
83
+ if (inScripts || isMarkdown(entry.name) || target?.isDirectory()) {
84
+ throw new RuntimeError(
85
+ `[Sixb] Ontology path 'ontology/${relativePath}' must not be a symlink.`
86
+ )
87
+ }
88
+ continue
89
+ }
90
+ if (entry.isDirectory()) {
91
+ await walk(path, inScripts || isOntologyScriptsDirectory(entry.name))
92
+ continue
93
+ }
94
+ if (!entry.isFile() || !(inScripts || isMarkdown(entry.name))) continue
95
+
96
+ const info = await lstat(path)
97
+ budget(info.size)
98
+ if (inScripts) {
99
+ const mode = info.mode & 0o777
100
+ scripts.push(
101
+ Object.freeze({
102
+ path: relativePath,
103
+ contents: await readFile(path),
104
+ ...((mode & 0o111) === 0 ? {} : { mode }),
105
+ })
106
+ )
107
+ } else {
108
+ const contents = decodeUtf8(await readFile(path))
109
+ if (contents === undefined) {
110
+ throw new RuntimeError(
111
+ `[Sixb] Ontology doc 'ontology/${relativePath}' must be UTF-8 text.`
112
+ )
113
+ }
114
+ docs.push(Object.freeze({ path: relativePath, contents }))
115
+ }
116
+ }
117
+ }
118
+
119
+ await walk(ontologyDir, false)
120
+ return { docs, scripts }
121
+ }
122
+
123
+ /** Read and validate every `skills/<name>/` directory. A missing `skills/` has no skills. */
124
+ export async function discoverAgentSkills(
125
+ projectRoot: string
126
+ ): Promise<readonly AgentSkillDefinition[]> {
127
+ const skillsDir = join(projectRoot, "skills")
128
+ let entries: string[]
129
+ try {
130
+ entries = await readdir(skillsDir)
131
+ } catch (error) {
132
+ if (isNotFound(error)) return []
133
+ throw error
134
+ }
135
+
136
+ const skills: AgentSkillDefinition[] = []
137
+ const budget = createFilesBudget("skills/")
138
+ for (const entry of entries.sort((a, b) => a.localeCompare(b))) {
139
+ if (isIgnoredAgentContextName(entry)) continue
140
+ const skillDir = join(skillsDir, entry)
141
+ const info = await lstat(skillDir)
142
+ if (info.isSymbolicLink()) {
143
+ throw skillError(projectRoot, skillDir, "Skill directories must not be symlinks.")
144
+ }
145
+ if (!info.isDirectory()) continue
146
+ skills.push(await loadAgentSkill(projectRoot, skillDir, budget))
147
+ }
148
+ return skills
149
+ }
150
+
151
+ /** Read `SIXB.md` when the project has one. */
152
+ export async function discoverProjectInstructions(
153
+ projectRoot: string
154
+ ): Promise<string | undefined> {
155
+ const path = join(projectRoot, PROJECT_INSTRUCTIONS_FILE)
156
+ let info: Awaited<ReturnType<typeof lstat>>
157
+ try {
158
+ info = await lstat(path)
159
+ } catch (error) {
160
+ if (isNotFound(error)) return undefined
161
+ throw error
162
+ }
163
+ if (!info.isFile()) {
164
+ throw instructionsError("must be a regular file, not a symlink or a directory.")
165
+ }
166
+ if (info.size > MAX_PROJECT_INSTRUCTIONS_BYTES) {
167
+ throw instructionsError(
168
+ `is ${info.size.toLocaleString("en-US")} bytes; the limit is ` +
169
+ `${MAX_PROJECT_INSTRUCTIONS_BYTES.toLocaleString("en-US")}. It is part of every ` +
170
+ "conversation's prompt: keep it to project-wide guidance and move task-specific " +
171
+ "instructions into skills/, which the agent reads only when relevant."
172
+ )
173
+ }
174
+
175
+ const instructions = decodeUtf8(await readFile(path))
176
+ if (instructions === undefined) throw instructionsError("must be UTF-8 text.")
177
+ if (!instructions.trim()) {
178
+ throw instructionsError("is empty. Write the agent's project instructions or delete the file.")
179
+ }
180
+ return instructions
181
+ }
182
+
183
+ async function loadAgentSkill(
184
+ projectRoot: string,
185
+ skillDir: string,
186
+ budget: FilesBudget
187
+ ): Promise<AgentSkillDefinition> {
188
+ const files = await collectSkillFiles(projectRoot, skillDir, budget)
189
+ const skillFile = files.find((file) => file.path === "SKILL.md")
190
+ if (!skillFile || typeof skillFile.contents !== "string") {
191
+ throw skillError(projectRoot, skillDir, "Missing required regular SKILL.md.")
192
+ }
193
+
194
+ const metadata = parseSkillMetadata(projectRoot, skillDir, skillFile.contents)
195
+ validateSkillMetadata(projectRoot, skillDir, metadata)
196
+ return Object.freeze({
197
+ name: metadata.name,
198
+ description: metadata.description,
199
+ files: Object.freeze(files),
200
+ })
201
+ }
202
+
203
+ interface AgentSkillMetadata {
204
+ readonly name?: string
205
+ readonly description?: string
206
+ }
207
+
208
+ function validateSkillMetadata(
209
+ projectRoot: string,
210
+ skillDir: string,
211
+ metadata: AgentSkillMetadata
212
+ ): asserts metadata is Required<AgentSkillMetadata> {
213
+ const fail = (message: string) => skillError(projectRoot, skillDir, message)
214
+ if (!metadata.name?.trim()) {
215
+ throw fail("SKILL.md frontmatter must include a non-empty string name.")
216
+ }
217
+ if (!metadata.description?.trim()) {
218
+ throw fail("SKILL.md frontmatter must include a non-empty string description.")
219
+ }
220
+ if (!SKILL_NAME_RE.test(metadata.name)) {
221
+ throw fail(`Skill name '${metadata.name}' must match ${String(SKILL_NAME_RE)}.`)
222
+ }
223
+
224
+ const dirName = basename(skillDir)
225
+ if (metadata.name !== dirName) {
226
+ throw fail(`Skill name '${metadata.name}' must match directory '${dirName}'.`)
227
+ }
228
+ if (metadata.name.startsWith("sixb-")) {
229
+ throw fail(`Skill name '${metadata.name}' uses the reserved 'sixb-' prefix.`)
230
+ }
231
+ }
232
+
233
+ async function collectSkillFiles(
234
+ projectRoot: string,
235
+ skillDir: string,
236
+ budget: FilesBudget,
237
+ currentDir = skillDir
238
+ ): Promise<AgentProjectFile[]> {
239
+ const files: AgentProjectFile[] = []
240
+ const entries = await readdir(currentDir)
241
+ for (const entry of entries.sort((a, b) => a.localeCompare(b))) {
242
+ if (isIgnoredAgentContextName(entry)) continue
243
+ const path = join(currentDir, entry)
244
+ const info = await lstat(path)
245
+ const relativePath = toPosixRelative(skillDir, path)
246
+ if (info.isSymbolicLink()) {
247
+ throw skillError(projectRoot, skillDir, `Skill file '${relativePath}' must not be a symlink.`)
248
+ }
249
+ if (info.isDirectory()) {
250
+ files.push(...(await collectSkillFiles(projectRoot, skillDir, budget, path)))
251
+ continue
252
+ }
253
+ if (!info.isFile()) continue
254
+ budget(info.size)
255
+
256
+ const mode = info.mode & 0o777
257
+ files.push(
258
+ Object.freeze({
259
+ path: relativePath,
260
+ contents:
261
+ relativePath === "SKILL.md" ? await readFile(path, "utf-8") : await readFile(path),
262
+ ...((mode & 0o111) === 0 ? {} : { mode }),
263
+ })
264
+ )
265
+ }
266
+ return files
267
+ }
268
+
269
+ function parseSkillMetadata(
270
+ projectRoot: string,
271
+ skillDir: string,
272
+ markdown: string
273
+ ): AgentSkillMetadata {
274
+ const fail = (message: string) => skillError(projectRoot, skillDir, message)
275
+ const lines = markdown.replaceAll("\r\n", "\n").split("\n")
276
+ if (lines[0] !== "---") {
277
+ throw fail("SKILL.md must start with YAML frontmatter delimited by ---.")
278
+ }
279
+
280
+ const end = lines.findIndex((line, index) => index > 0 && line === "---")
281
+ if (end < 0) {
282
+ throw fail("SKILL.md frontmatter is missing the closing --- delimiter.")
283
+ }
284
+
285
+ const frontmatter = lines.slice(1, end)
286
+ let parsed: unknown
287
+ try {
288
+ parsed = Bun.YAML.parse(frontmatter.join("\n"))
289
+ } catch (error) {
290
+ const message = error instanceof Error ? error.message : String(error)
291
+ // The usual culprit: `description: Use when: ...` reads as a nested mapping.
292
+ const hint = frontmatter.some((line) => UNQUOTED_COLON_VALUE_RE.test(line))
293
+ ? ` Quote values that contain ': ', for example description: "Use when: ...".`
294
+ : ""
295
+ throw fail(`SKILL.md frontmatter is not valid YAML: ${message}.${hint}`)
296
+ }
297
+ if (!isRecord(parsed)) {
298
+ throw fail("SKILL.md frontmatter must be a YAML mapping.")
299
+ }
300
+
301
+ return {
302
+ ...(typeof parsed.name === "string" ? { name: parsed.name.trim() } : {}),
303
+ ...(typeof parsed.description === "string" ? { description: parsed.description.trim() } : {}),
304
+ }
305
+ }
306
+
307
+ /** Counts the bytes of one family's files and fails once they exceed the limit. */
308
+ type FilesBudget = (size: number) => void
309
+
310
+ function createFilesBudget(directory: string): FilesBudget {
311
+ let total = 0
312
+ return (size) => {
313
+ total += size
314
+ if (total > MAX_AGENT_FILES_BYTES) {
315
+ throw new RuntimeError(
316
+ `[Sixb] The files under ${directory} exceed ${MAX_AGENT_FILES_BYTES / 1024 / 1024} MB. ` +
317
+ "Every agent sandbox receives them: keep large assets out of the project, or have a " +
318
+ "script fetch them when needed."
319
+ )
320
+ }
321
+ }
322
+ }
323
+
324
+ function isMarkdown(path: string): boolean {
325
+ return path.toLowerCase().endsWith(".md")
326
+ }
327
+
328
+ function decodeUtf8(bytes: Uint8Array): string | undefined {
329
+ try {
330
+ return new TextDecoder("utf-8", { fatal: true }).decode(bytes)
331
+ } catch {
332
+ return undefined
333
+ }
334
+ }
335
+
336
+ function isRecord(value: unknown): value is Record<string, unknown> {
337
+ return typeof value === "object" && value !== null && !Array.isArray(value)
338
+ }
339
+
340
+ function toPosixRelative(from: string, to: string): string {
341
+ return relative(from, to).split(sep).join("/")
342
+ }
343
+
344
+ function isNotFound(error: unknown): boolean {
345
+ return typeof error === "object" && error !== null && "code" in error && error.code === "ENOENT"
346
+ }
347
+
348
+ function skillError(projectRoot: string, skillDir: string, message: string): RuntimeError {
349
+ return new RuntimeError(
350
+ `[Sixb] Agent Skill '${toPosixRelative(projectRoot, skillDir)}' is invalid: ${message}`
351
+ )
352
+ }
353
+
354
+ function instructionsError(message: string): RuntimeError {
355
+ return new RuntimeError(`[Sixb] ${PROJECT_INSTRUCTIONS_FILE} ${message}`)
356
+ }
@@ -8,7 +8,7 @@
8
8
 
9
9
  import { AsyncLocalStorage } from "node:async_hooks"
10
10
  import { readdir } from "node:fs/promises"
11
- import { join, relative, resolve } from "node:path"
11
+ import { join, relative, resolve, sep } from "node:path"
12
12
  import { pathToFileURL } from "node:url"
13
13
  import { isActionDefinition } from "../actions"
14
14
  import { isConnectorDefinition } from "../connectors"
@@ -21,36 +21,66 @@ import { isProjectionDefinition } from "../projections/builders"
21
21
  import { isRuleDefinition } from "../rules"
22
22
  import { RuntimeError } from "../runtime/errors"
23
23
  import { isScheduleDefinition } from "../schedules"
24
- import { isGroupDefinition, isMembershipPolicyDefinition, isRoleDefinition } from "../security"
24
+ import {
25
+ isGroupDefinition,
26
+ isMarkingDefinition,
27
+ isMembershipPolicyDefinition,
28
+ isRoleDefinition,
29
+ } from "../security"
25
30
  import { isShareDefinition } from "../shares"
26
31
  import { isSyncDefinition } from "../syncs"
27
32
  import { isWorkflowDefinition } from "../workflows"
33
+ import { isOntologyScriptsDirectory } from "./agent-context"
28
34
 
29
35
  const moduleExtensions = new Set([".ts", ".tsx", ".js", ".jsx", ".mjs", ".cjs"])
30
36
 
31
- export async function discoverOntologySources(
32
- projectRoot: string
33
- ): Promise<readonly OntologySource[]> {
34
- const exportedCandidates = await loadFamilyExports(projectRoot, "ontology", ["ontology"])
37
+ /** An `ontology/` module and the object types it exports, directly or re-exported. */
38
+ export interface DiscoveredOntologyModule {
39
+ /** POSIX path relative to `ontology/`. */
40
+ readonly path: string
41
+ readonly objectTypeIds: readonly string[]
42
+ }
43
+
44
+ export interface DiscoveredOntology {
45
+ readonly sources: readonly OntologySource[]
46
+ readonly modules: readonly DiscoveredOntologyModule[]
47
+ }
48
+
49
+ export async function discoverOntologySources(projectRoot: string): Promise<DiscoveredOntology> {
50
+ const loadedModules = await loadFamilyModules(projectRoot, "ontology", ["ontology"])
35
51
 
36
52
  const ontologyDocuments: OntologyDocumentInput[] = []
37
53
  const objectTypes: ObjectTypeWithPropertyTokens[] = []
38
54
  const valueTypes: ValueType[] = []
55
+ const modules: DiscoveredOntologyModule[] = []
56
+ const seen = new Set<unknown>()
39
57
 
40
- for (const candidate of exportedCandidates) {
41
- if (isOntologyDocumentInput(candidate)) {
42
- ontologyDocuments.push(candidate)
43
- continue
44
- }
45
-
46
- if (isObjectTypeWithPropertyTokens(candidate)) {
47
- objectTypes.push(candidate)
48
- continue
49
- }
50
-
51
- if (isValueType(candidate)) {
52
- valueTypes.push(candidate)
58
+ for (const loaded of loadedModules) {
59
+ const objectTypeIds: string[] = []
60
+ for (const candidate of loaded.exports) {
61
+ const first = !seen.has(candidate)
62
+ seen.add(candidate)
63
+
64
+ if (isOntologyDocumentInput(candidate)) {
65
+ objectTypeIds.push(...candidate.objectTypes.map((objectType) => objectType.id))
66
+ if (first) ontologyDocuments.push(candidate)
67
+ continue
68
+ }
69
+
70
+ if (isObjectTypeWithPropertyTokens(candidate)) {
71
+ objectTypeIds.push(candidate.id)
72
+ if (first) objectTypes.push(candidate)
73
+ continue
74
+ }
75
+
76
+ if (isValueType(candidate) && first) {
77
+ valueTypes.push(candidate)
78
+ }
53
79
  }
80
+ modules.push({
81
+ path: toPosix(relative("ontology", loaded.path)),
82
+ objectTypeIds: [...new Set(objectTypeIds)],
83
+ })
54
84
  }
55
85
 
56
86
  const discoveredSources: OntologySource[] = [...ontologyDocuments, ...objectTypes]
@@ -63,7 +93,7 @@ export async function discoverOntologySources(
63
93
  })
64
94
  }
65
95
 
66
- return discoveredSources
96
+ return { sources: discoveredSources, modules }
67
97
  }
68
98
 
69
99
  export type DiscoveryModuleKind =
@@ -71,6 +101,7 @@ export type DiscoveryModuleKind =
71
101
  | "connector"
72
102
  | "dataset"
73
103
  | "group"
104
+ | "marking"
74
105
  | "membershipPolicy"
75
106
  | "ontology"
76
107
  | "pipeline"
@@ -143,6 +174,11 @@ const definitionDiscoveryRegistry = {
143
174
  kind: "workflow",
144
175
  isDefinition: isWorkflowDefinition,
145
176
  },
177
+ markings: {
178
+ directory: ["security", "markings"],
179
+ kind: "marking",
180
+ isDefinition: isMarkingDefinition,
181
+ },
146
182
  groups: {
147
183
  directory: ["security", "groups"],
148
184
  kind: "group",
@@ -202,9 +238,18 @@ async function discoverDefinitionFamily(
202
238
  projectRoot: string,
203
239
  family: DefinitionDiscoveryFamily<unknown>
204
240
  ): Promise<readonly unknown[]> {
205
- const exportedCandidates = await loadFamilyExports(projectRoot, family.kind, family.directory)
241
+ const loadedModules = await loadFamilyModules(projectRoot, family.kind, family.directory)
242
+ const exportedCandidates = new Set(loadedModules.flatMap((loaded) => loaded.exports))
243
+
244
+ return [...exportedCandidates].filter(family.isDefinition)
245
+ }
206
246
 
207
- return exportedCandidates.filter(family.isDefinition)
247
+ /**
248
+ * Every module file of the `ontology/` family, as absolute paths. `scripts/` directories hold the
249
+ * Agent's ontology scripts, not definitions, so they are never imported.
250
+ */
251
+ export function listOntologyModuleFiles(projectRoot: string): Promise<string[]> {
252
+ return listModuleFiles(join(projectRoot, "ontology"), isOntologyScriptsDirectory)
208
253
  }
209
254
 
210
255
  // ── Internal helpers ────────────────────────────────────────
@@ -214,15 +259,24 @@ async function listFamilyModules(
214
259
  kind: DiscoveryModuleKind,
215
260
  directory: readonly string[]
216
261
  ): Promise<ProjectModule[]> {
217
- const paths = await listModuleFiles(join(projectRoot, ...directory))
262
+ const paths =
263
+ kind === "ontology"
264
+ ? await listOntologyModuleFiles(projectRoot)
265
+ : await listModuleFiles(join(projectRoot, ...directory))
218
266
  return paths.map((path) => ({ kind, path: relative(projectRoot, path) }))
219
267
  }
220
268
 
221
- async function loadFamilyExports(
269
+ interface LoadedProjectModule {
270
+ /** Relative to the project root. */
271
+ readonly path: string
272
+ readonly exports: readonly unknown[]
273
+ }
274
+
275
+ async function loadFamilyModules(
222
276
  projectRoot: string,
223
277
  kind: DiscoveryModuleKind,
224
278
  directory: readonly string[]
225
- ): Promise<unknown[]> {
279
+ ): Promise<LoadedProjectModule[]> {
226
280
  const project = bundledProject.getStore()
227
281
  if (project) {
228
282
  if (resolve(projectRoot) !== project.projectRoot) {
@@ -231,11 +285,11 @@ async function loadFamilyExports(
231
285
  "Run the built entry from the project root and use that root in createSixb()."
232
286
  )
233
287
  }
234
- return loadModuleExports(project.modules.filter((module) => module.kind === kind))
288
+ return loadModules(project.modules.filter((module) => module.kind === kind))
235
289
  }
236
290
 
237
291
  const modules = await listFamilyModules(projectRoot, kind, directory)
238
- return loadModuleExports(
292
+ return loadModules(
239
293
  modules.map((module) => ({
240
294
  ...module,
241
295
  load: () => import(pathToFileURL(resolve(projectRoot, module.path)).href),
@@ -243,9 +297,10 @@ async function loadFamilyExports(
243
297
  )
244
298
  }
245
299
 
246
- async function loadModuleExports(modules: readonly BundledProjectModule[]): Promise<unknown[]> {
247
- const exportedCandidates: unknown[] = []
248
- const seen = new Set<unknown>()
300
+ async function loadModules(
301
+ modules: readonly BundledProjectModule[]
302
+ ): Promise<LoadedProjectModule[]> {
303
+ const loaded: LoadedProjectModule[] = []
249
304
 
250
305
  for (const module of modules) {
251
306
  let moduleNamespace: Record<string, unknown>
@@ -256,12 +311,15 @@ async function loadModuleExports(modules: readonly BundledProjectModule[]): Prom
256
311
  throw new RuntimeError(`Failed to load ${module.kind} module '${module.path}': ${reason}`)
257
312
  }
258
313
 
314
+ const exportedCandidates: unknown[] = []
315
+ const seen = new Set<unknown>()
259
316
  for (const exportedValue of Object.values(moduleNamespace)) {
260
317
  collectExportedCandidates(exportedValue, exportedCandidates, seen)
261
318
  }
319
+ loaded.push({ path: module.path, exports: exportedCandidates })
262
320
  }
263
321
 
264
- return exportedCandidates
322
+ return loaded
265
323
  }
266
324
 
267
325
  function collectExportedCandidates(value: unknown, target: unknown[], seen: Set<unknown>): void {
@@ -286,7 +344,10 @@ function collectExportedCandidates(value: unknown, target: unknown[], seen: Set<
286
344
  target.push(value)
287
345
  }
288
346
 
289
- async function listModuleFiles(dir: string): Promise<string[]> {
347
+ async function listModuleFiles(
348
+ dir: string,
349
+ skipDirectory: (name: string) => boolean = () => false
350
+ ): Promise<string[]> {
290
351
  let entries: import("node:fs").Dirent[]
291
352
  try {
292
353
  entries = (await readdir(dir, { withFileTypes: true })) as import("node:fs").Dirent[]
@@ -303,7 +364,9 @@ async function listModuleFiles(dir: string): Promise<string[]> {
303
364
  for (const entry of sortedEntries) {
304
365
  const fullPath = join(dir, entry.name)
305
366
  if (entry.isDirectory()) {
306
- files.push(...(await listModuleFiles(fullPath)))
367
+ if (!skipDirectory(entry.name)) {
368
+ files.push(...(await listModuleFiles(fullPath, skipDirectory)))
369
+ }
307
370
  continue
308
371
  }
309
372
 
@@ -340,6 +403,10 @@ function hasSupportedModuleExtension(fileName: string): boolean {
340
403
  return false
341
404
  }
342
405
 
406
+ function toPosix(path: string): string {
407
+ return path.split(sep).join("/")
408
+ }
409
+
343
410
  function isRecord(value: unknown): value is Record<string, unknown> {
344
411
  return typeof value === "object" && value !== null && !Array.isArray(value)
345
412
  }
@@ -1,3 +1,4 @@
1
+ export { isAgentContextPath } from "./agent-context"
1
2
  export type {
2
3
  BundledProjectModule,
3
4
  DiscoveredProjectDefinitions,
@@ -5,7 +6,6 @@ export type {
5
6
  ProjectModule,
6
7
  } from "./discovery"
7
8
  export {
8
- discoverOntologySources,
9
9
  discoverProjectDefinitions,
10
10
  listProjectModules,
11
11
  withProjectModules,
@@ -1,10 +1,11 @@
1
- import { access, mkdir, readdir, readFile, writeFile } from "node:fs/promises"
1
+ import { access, mkdir, readFile, writeFile } from "node:fs/promises"
2
2
  import { dirname, extname, join, relative, resolve, sep } from "node:path"
3
3
  import { pathToFileURL } from "node:url"
4
4
  import type { OntologyDocumentInput } from "../ontology/registry"
5
5
  import type { ObjectTypeWithPropertyTokens } from "../ontology/tokens"
6
6
  import type { ValueType } from "../ontology/types"
7
7
  import { RuntimeError } from "../runtime/errors"
8
+ import { listOntologyModuleFiles } from "./discovery"
8
9
 
9
10
  const moduleExtensions = new Set([".ts", ".tsx", ".js", ".jsx", ".mjs", ".cjs"])
10
11
 
@@ -44,8 +45,7 @@ export async function discoverOntologyTypeManifest(
44
45
  projectRoot: string
45
46
  ): Promise<OntologyTypeManifestDiscovery> {
46
47
  const resolvedProjectRoot = resolve(projectRoot)
47
- const ontologyDir = join(resolvedProjectRoot, "ontology")
48
- const modulePaths = await listModuleFiles(ontologyDir)
48
+ const modulePaths = await listOntologyModuleFiles(resolvedProjectRoot)
49
49
  const entries = new Map<string, OntologyTypeManifestEntry>()
50
50
  const valueTypeEntries = new Map<string, OntologyValueTypeManifestEntry>()
51
51
  const seen = new Set<unknown>()
@@ -271,37 +271,6 @@ async function loadOntologyModule(input: {
271
271
  }
272
272
  }
273
273
 
274
- async function listModuleFiles(dir: string): Promise<string[]> {
275
- let entries: import("node:fs").Dirent[]
276
- try {
277
- entries = (await readdir(dir, { withFileTypes: true })) as import("node:fs").Dirent[]
278
- } catch (error) {
279
- if (isNotFoundError(error)) {
280
- return []
281
- }
282
- throw error
283
- }
284
-
285
- const files: string[] = []
286
- const sortedEntries = [...entries].sort((a, b) => a.name.localeCompare(b.name))
287
-
288
- for (const entry of sortedEntries) {
289
- const fullPath = join(dir, entry.name)
290
- if (entry.isDirectory()) {
291
- files.push(...(await listModuleFiles(fullPath)))
292
- continue
293
- }
294
-
295
- if (!entry.isFile() || !hasSupportedModuleExtension(entry.name)) {
296
- continue
297
- }
298
-
299
- files.push(fullPath)
300
- }
301
-
302
- return files
303
- }
304
-
305
274
  function toGeneratedModuleSpecifier(input: {
306
275
  readonly fromDir: string
307
276
  readonly modulePath: string
@@ -316,10 +285,6 @@ function stripSupportedModuleExtension(path: string): string {
316
285
  return moduleExtensions.has(extension) ? path.slice(0, -extension.length) : path
317
286
  }
318
287
 
319
- function hasSupportedModuleExtension(fileName: string): boolean {
320
- return moduleExtensions.has(extname(fileName).toLowerCase())
321
- }
322
-
323
288
  function isNotFoundError(error: unknown): boolean {
324
289
  if (!(error instanceof Error)) {
325
290
  return false