@skaile/workspaces 5.8.0 → 5.10.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (348) hide show
  1. package/CHANGELOG.md +102 -0
  2. package/dist/app-sdk/index.js +1 -1
  3. package/dist/{asset-feeds-EYRZR4K5.js → asset-feeds-ELEBTNUS.js} +18 -18
  4. package/dist/{asset-feeds-EYRZR4K5.js.map → asset-feeds-ELEBTNUS.js.map} +1 -1
  5. package/dist/asset-manager/catalog-deployer.js +8 -8
  6. package/dist/asset-manager/index.js +14 -14
  7. package/dist/asset-manager/installer.js +10 -10
  8. package/dist/asset-manager/renderers.js +9 -9
  9. package/dist/asset-manager/src/index.d.ts +300 -36
  10. package/dist/asset-manager/src/index.d.ts.map +1 -1
  11. package/dist/asset-manager/src/install-agent.d.ts +3 -1
  12. package/dist/asset-manager/src/install-agent.d.ts.map +1 -1
  13. package/dist/asset-manager/src/install-instances.d.ts +31 -1
  14. package/dist/asset-manager/src/install-instances.d.ts.map +1 -1
  15. package/dist/asset-manager/src/installer.d.ts +20 -0
  16. package/dist/asset-manager/src/installer.d.ts.map +1 -1
  17. package/dist/asset-manager/src/renderers.d.ts +4 -5
  18. package/dist/asset-manager/src/renderers.d.ts.map +1 -1
  19. package/dist/bridge/drivers/claude-sdk.js +170 -17
  20. package/dist/bridge/drivers/claude-sdk.js.map +1 -1
  21. package/dist/bridge/drivers/codex.js +13 -11
  22. package/dist/bridge/drivers/codex.js.map +1 -1
  23. package/dist/bridge/drivers/continue.js +10 -10
  24. package/dist/bridge/drivers/echo.js +4 -4
  25. package/dist/bridge/drivers/gemini.js +7 -7
  26. package/dist/bridge/drivers/goose.js +10 -10
  27. package/dist/bridge/drivers/omp.js +7 -5
  28. package/dist/bridge/drivers/omp.js.map +1 -1
  29. package/dist/bridge/drivers/opencode.js +10 -10
  30. package/dist/bridge/drivers/qwen.js +7 -7
  31. package/dist/bridge/index.js +14 -14
  32. package/dist/bridge/src/codex/managed-driver.d.ts.map +1 -1
  33. package/dist/bridge/src/drivers/claude-sdk.d.ts +31 -1
  34. package/dist/bridge/src/drivers/claude-sdk.d.ts.map +1 -1
  35. package/dist/bridge/src/drivers/claude-tool-allowlist.d.ts +43 -0
  36. package/dist/bridge/src/drivers/claude-tool-allowlist.d.ts.map +1 -0
  37. package/dist/bridge/src/drivers/omp.d.ts.map +1 -1
  38. package/dist/bridge/src/types.d.ts +20 -1
  39. package/dist/bridge/src/types.d.ts.map +1 -1
  40. package/dist/{chunk-36AFURKZ.js → chunk-2FMEGSBN.js} +38 -11
  41. package/dist/chunk-2FMEGSBN.js.map +1 -0
  42. package/dist/{chunk-GCICGXDD.js → chunk-2H73V6XR.js} +3 -3
  43. package/dist/{chunk-GCICGXDD.js.map → chunk-2H73V6XR.js.map} +1 -1
  44. package/dist/{chunk-H7QUDDKH.js → chunk-2JMLDZLP.js} +1069 -182
  45. package/dist/chunk-2JMLDZLP.js.map +1 -0
  46. package/dist/{chunk-B6GIW55K.js → chunk-32XKCNCL.js} +6 -3
  47. package/dist/chunk-32XKCNCL.js.map +1 -0
  48. package/dist/{chunk-4MQS7CAF.js → chunk-3BEY4WK3.js} +371 -175
  49. package/dist/chunk-3BEY4WK3.js.map +1 -0
  50. package/dist/{chunk-SH5D7U7N.js → chunk-3KHYGOEY.js} +3 -3
  51. package/dist/{chunk-SH5D7U7N.js.map → chunk-3KHYGOEY.js.map} +1 -1
  52. package/dist/{chunk-CGT45WN7.js → chunk-3MKPZZRE.js} +3 -3
  53. package/dist/{chunk-CGT45WN7.js.map → chunk-3MKPZZRE.js.map} +1 -1
  54. package/dist/{chunk-QVNRCDTV.js → chunk-4OV5DSBB.js} +4 -4
  55. package/dist/chunk-4OV5DSBB.js.map +1 -0
  56. package/dist/{chunk-GXXFLBUQ.js → chunk-4P3KTUZH.js} +33 -33
  57. package/dist/chunk-4P3KTUZH.js.map +1 -0
  58. package/dist/{chunk-I6NLLJHZ.js → chunk-5QI2JYJC.js} +2 -2
  59. package/dist/{chunk-I6NLLJHZ.js.map → chunk-5QI2JYJC.js.map} +1 -1
  60. package/dist/{chunk-EF7NPDDU.js → chunk-6HHE63CO.js} +31 -17
  61. package/dist/chunk-6HHE63CO.js.map +1 -0
  62. package/dist/{chunk-FTJJO3EM.js → chunk-7CR6HT2X.js} +10 -10
  63. package/dist/{chunk-FTJJO3EM.js.map → chunk-7CR6HT2X.js.map} +1 -1
  64. package/dist/{chunk-FZNG4V4J.js → chunk-7I5VRVDP.js} +3 -3
  65. package/dist/{chunk-FZNG4V4J.js.map → chunk-7I5VRVDP.js.map} +1 -1
  66. package/dist/{chunk-HG34RNTK.js → chunk-CLTHEKHR.js} +10 -9
  67. package/dist/chunk-CLTHEKHR.js.map +1 -0
  68. package/dist/{chunk-UMVKJM4Q.js → chunk-DALV4HHP.js} +18 -3
  69. package/dist/chunk-DALV4HHP.js.map +1 -0
  70. package/dist/{chunk-F3RDEH5U.js → chunk-F4NJDSR7.js} +6 -5
  71. package/dist/chunk-F4NJDSR7.js.map +1 -0
  72. package/dist/{chunk-LSXHED6I.js → chunk-FRPBSUFH.js} +6 -6
  73. package/dist/{chunk-LSXHED6I.js.map → chunk-FRPBSUFH.js.map} +1 -1
  74. package/dist/{chunk-W5DWWE4Y.js → chunk-G54USEUP.js} +4 -4
  75. package/dist/{chunk-W5DWWE4Y.js.map → chunk-G54USEUP.js.map} +1 -1
  76. package/dist/{chunk-Y7QA2OLD.js → chunk-GEWAIQZ5.js} +24 -20
  77. package/dist/chunk-GEWAIQZ5.js.map +1 -0
  78. package/dist/{chunk-GB7WDMH2.js → chunk-GFCXNFTW.js} +4 -4
  79. package/dist/{chunk-GB7WDMH2.js.map → chunk-GFCXNFTW.js.map} +1 -1
  80. package/dist/{chunk-AWQYXZVG.js → chunk-HJ5MCB3L.js} +28 -4
  81. package/dist/chunk-HJ5MCB3L.js.map +1 -0
  82. package/dist/{chunk-2LWYNQK7.js → chunk-HOHUEKES.js} +3 -3
  83. package/dist/{chunk-2LWYNQK7.js.map → chunk-HOHUEKES.js.map} +1 -1
  84. package/dist/{chunk-ZKSJMZKD.js → chunk-IJHH4DSW.js} +8 -8
  85. package/dist/{chunk-ZKSJMZKD.js.map → chunk-IJHH4DSW.js.map} +1 -1
  86. package/dist/{chunk-BTE2V4IW.js → chunk-IXWODEED.js} +40 -7
  87. package/dist/chunk-IXWODEED.js.map +1 -0
  88. package/dist/{chunk-OFBIWVCR.js → chunk-JFXQEVLF.js} +3 -3
  89. package/dist/{chunk-OFBIWVCR.js.map → chunk-JFXQEVLF.js.map} +1 -1
  90. package/dist/{chunk-JAKOMFC6.js → chunk-JZCSNEHK.js} +77 -31
  91. package/dist/chunk-JZCSNEHK.js.map +1 -0
  92. package/dist/{chunk-CKQEIY43.js → chunk-MVQ3Q2HM.js} +4 -4
  93. package/dist/{chunk-CKQEIY43.js.map → chunk-MVQ3Q2HM.js.map} +1 -1
  94. package/dist/{chunk-LEMHVDET.js → chunk-NRDSGLCQ.js} +188 -33
  95. package/dist/chunk-NRDSGLCQ.js.map +1 -0
  96. package/dist/{chunk-V2DXZYBB.js → chunk-NWDSLXOX.js} +3 -3
  97. package/dist/{chunk-V2DXZYBB.js.map → chunk-NWDSLXOX.js.map} +1 -1
  98. package/dist/{chunk-6GRX5L6A.js → chunk-OBVJ7RPW.js} +4 -4
  99. package/dist/{chunk-6GRX5L6A.js.map → chunk-OBVJ7RPW.js.map} +1 -1
  100. package/dist/{chunk-PTSGWKHR.js → chunk-OOWHXOK6.js} +4 -4
  101. package/dist/{chunk-PTSGWKHR.js.map → chunk-OOWHXOK6.js.map} +1 -1
  102. package/dist/{chunk-YSHVQGUS.js → chunk-PE36IF2D.js} +119 -30
  103. package/dist/chunk-PE36IF2D.js.map +1 -0
  104. package/dist/{chunk-S53LOR7B.js → chunk-QG3HOJEK.js} +3 -3
  105. package/dist/{chunk-S53LOR7B.js.map → chunk-QG3HOJEK.js.map} +1 -1
  106. package/dist/{chunk-2FRUUDZY.js → chunk-SBFW3CJH.js} +5 -5
  107. package/dist/{chunk-2FRUUDZY.js.map → chunk-SBFW3CJH.js.map} +1 -1
  108. package/dist/{chunk-UAROCOXF.js → chunk-SX5U422E.js} +3 -3
  109. package/dist/{chunk-UAROCOXF.js.map → chunk-SX5U422E.js.map} +1 -1
  110. package/dist/{chunk-QOP6KDFR.js → chunk-TH4CTXHX.js} +6 -6
  111. package/dist/{chunk-QOP6KDFR.js.map → chunk-TH4CTXHX.js.map} +1 -1
  112. package/dist/{chunk-F2EKONM7.js → chunk-TRSQP3JD.js} +3 -3
  113. package/dist/{chunk-F2EKONM7.js.map → chunk-TRSQP3JD.js.map} +1 -1
  114. package/dist/{chunk-FVJK4QWM.js → chunk-V5TZH4GF.js} +4 -4
  115. package/dist/{chunk-FVJK4QWM.js.map → chunk-V5TZH4GF.js.map} +1 -1
  116. package/dist/{chunk-HYDRDNKN.js → chunk-V7PQZOBR.js} +5 -5
  117. package/dist/{chunk-HYDRDNKN.js.map → chunk-V7PQZOBR.js.map} +1 -1
  118. package/dist/{chunk-IONAUNWB.js → chunk-VLXDXRRX.js} +3 -3
  119. package/dist/{chunk-IONAUNWB.js.map → chunk-VLXDXRRX.js.map} +1 -1
  120. package/dist/{chunk-CIFS5K6T.js → chunk-VMKMFS2Q.js} +28 -7
  121. package/dist/chunk-VMKMFS2Q.js.map +1 -0
  122. package/dist/{chunk-Y4N2NUZD.js → chunk-WBYDAL6X.js} +4 -4
  123. package/dist/{chunk-Y4N2NUZD.js.map → chunk-WBYDAL6X.js.map} +1 -1
  124. package/dist/{chunk-WTQ3TATB.js → chunk-X4BAYGMT.js} +3 -3
  125. package/dist/{chunk-WTQ3TATB.js.map → chunk-X4BAYGMT.js.map} +1 -1
  126. package/dist/{chunk-NPLPCRW5.js → chunk-XCNK4UE5.js} +5 -5
  127. package/dist/{chunk-NPLPCRW5.js.map → chunk-XCNK4UE5.js.map} +1 -1
  128. package/dist/{chunk-OJ4N4T4H.js → chunk-XDVR7QIT.js} +20 -6
  129. package/dist/chunk-XDVR7QIT.js.map +1 -0
  130. package/dist/{chunk-GTILM2CI.js → chunk-Y34MSWEZ.js} +43 -12
  131. package/dist/chunk-Y34MSWEZ.js.map +1 -0
  132. package/dist/{chunk-4PTSR4UU.js → chunk-Y63UQZ7P.js} +3 -3
  133. package/dist/{chunk-4PTSR4UU.js.map → chunk-Y63UQZ7P.js.map} +1 -1
  134. package/dist/chunk-YBQONMH2.js +465 -0
  135. package/dist/chunk-YBQONMH2.js.map +1 -0
  136. package/dist/{chunk-P23M65LB.js → chunk-Z2K6BGUR.js} +71 -24
  137. package/dist/chunk-Z2K6BGUR.js.map +1 -0
  138. package/dist/{chunk-BJNUNQAW.js → chunk-ZGQTS3Y4.js} +3 -3
  139. package/dist/{chunk-BJNUNQAW.js.map → chunk-ZGQTS3Y4.js.map} +1 -1
  140. package/dist/cli/index.js +913 -720
  141. package/dist/cli/index.js.map +1 -1
  142. package/dist/cli/src/commands/asset-cmd.d.ts.map +1 -1
  143. package/dist/cli/src/commands/catalog.d.ts +8 -5
  144. package/dist/cli/src/commands/catalog.d.ts.map +1 -1
  145. package/dist/cli/src/commands/diff.d.ts +3 -1
  146. package/dist/cli/src/commands/diff.d.ts.map +1 -1
  147. package/dist/cli/src/commands/library-cmd.d.ts.map +1 -1
  148. package/dist/cli/src/commands/library-index.d.ts +34 -2
  149. package/dist/cli/src/commands/library-index.d.ts.map +1 -1
  150. package/dist/cli/src/commands/library-publish.d.ts.map +1 -1
  151. package/dist/cli/src/commands/manage.d.ts +6 -5
  152. package/dist/cli/src/commands/manage.d.ts.map +1 -1
  153. package/dist/cli/src/commands/migrate-assets.d.ts.map +1 -1
  154. package/dist/cli/src/commands/outdated.d.ts +7 -5
  155. package/dist/cli/src/commands/outdated.d.ts.map +1 -1
  156. package/dist/cli/src/commands/project.d.ts +11 -8
  157. package/dist/cli/src/commands/project.d.ts.map +1 -1
  158. package/dist/cli/src/commands/source.d.ts +30 -1
  159. package/dist/cli/src/commands/source.d.ts.map +1 -1
  160. package/dist/cli/src/commands/update.d.ts.map +1 -1
  161. package/dist/cli/src/commands/validate.d.ts.map +1 -1
  162. package/dist/cli/src/commands/why.d.ts.map +1 -1
  163. package/dist/cli/src/skill-checks.d.ts +47 -2
  164. package/dist/cli/src/skill-checks.d.ts.map +1 -1
  165. package/dist/client/index.js +1 -1
  166. package/dist/client/src/client.d.ts +10 -3
  167. package/dist/client/src/client.d.ts.map +1 -1
  168. package/dist/connectors/config.js +5 -5
  169. package/dist/connectors/index.js +18 -18
  170. package/dist/{connectors-O6Y6VESP.js → connectors-OXP2JBGI.js} +21 -21
  171. package/dist/{connectors-O6Y6VESP.js.map → connectors-OXP2JBGI.js.map} +1 -1
  172. package/dist/connectors-shared/index.js +2 -2
  173. package/dist/core/index.js +7 -7
  174. package/dist/core/logging.js +1 -1
  175. package/dist/core/manifest.js +2 -2
  176. package/dist/core/models.js +1 -1
  177. package/dist/core/publish-manifest.js +2 -2
  178. package/dist/core/ref.js +1 -1
  179. package/dist/core/runtime-assets.js +5 -5
  180. package/dist/core/src/index.d.ts +2 -1
  181. package/dist/core/src/index.d.ts.map +1 -1
  182. package/dist/core/src/lock.d.ts +5 -2
  183. package/dist/core/src/lock.d.ts.map +1 -1
  184. package/dist/core/src/logging/sinks/sqlite-runtime.d.ts.map +1 -1
  185. package/dist/core/src/manifest.d.ts.map +1 -1
  186. package/dist/core/src/models.d.ts +21 -5
  187. package/dist/core/src/models.d.ts.map +1 -1
  188. package/dist/core/src/publish-manifest.d.ts +19 -3
  189. package/dist/core/src/publish-manifest.d.ts.map +1 -1
  190. package/dist/core/src/repo-manager.d.ts.map +1 -1
  191. package/dist/core/src/requirements.d.ts +26 -0
  192. package/dist/core/src/requirements.d.ts.map +1 -0
  193. package/dist/core/src/walker.d.ts.map +1 -1
  194. package/dist/core/src/workspace-config.d.ts +18 -0
  195. package/dist/core/src/workspace-config.d.ts.map +1 -1
  196. package/dist/core/src/workspace-yaml-editor.d.ts +4 -1
  197. package/dist/core/src/workspace-yaml-editor.d.ts.map +1 -1
  198. package/dist/core/workspace-config.js +4 -4
  199. package/dist/deploy/index.js +7 -7
  200. package/dist/discovery/index.js +5 -5
  201. package/dist/discovery/src/builtin-providers.d.ts.map +1 -1
  202. package/dist/discovery/src/discover-manifest.d.ts.map +1 -1
  203. package/dist/discovery/src/discover.d.ts.map +1 -1
  204. package/dist/discovery/src/source-config.d.ts.map +1 -1
  205. package/dist/discovery/src/tree-entries.d.ts.map +1 -1
  206. package/dist/{ensure-sources-SKLNM4UZ.js → ensure-sources-5ISVIA4T.js} +17 -17
  207. package/dist/{ensure-sources-SKLNM4UZ.js.map → ensure-sources-5ISVIA4T.js.map} +1 -1
  208. package/dist/factory-assets/connectors/box.js +18 -18
  209. package/dist/factory-assets/connectors/deploy.js +18 -18
  210. package/dist/factory-assets/connectors/devserver.js +18 -18
  211. package/dist/factory-assets/connectors/flow/adapter.js +18 -18
  212. package/dist/factory-assets/connectors/flow/engine.js +8 -8
  213. package/dist/factory-assets/connectors/flow/run-flow.js +20 -20
  214. package/dist/factory-assets/connectors/flow.js +18 -18
  215. package/dist/factory-assets/connectors/git.js +18 -18
  216. package/dist/factory-assets/connectors/gmail.js +18 -18
  217. package/dist/factory-assets/connectors/googledrive.js +18 -18
  218. package/dist/factory-assets/connectors/local.js +18 -18
  219. package/dist/factory-assets/connectors/mattermost.js +18 -18
  220. package/dist/factory-assets/connectors/memory.js +18 -18
  221. package/dist/factory-assets/connectors/minio.js +18 -18
  222. package/dist/factory-assets/connectors/postgres.js +18 -18
  223. package/dist/factory-assets/connectors/s3.js +18 -18
  224. package/dist/factory-assets/connectors/sharepoint.js +18 -18
  225. package/dist/factory-assets/connectors/sqlite.js +18 -18
  226. package/dist/factory-assets/connectors/static-server.js +18 -18
  227. package/dist/factory-assets/connectors/tunnel.js +18 -18
  228. package/dist/factory-assets/connectors/webdav.js +18 -18
  229. package/dist/factory-assets/connectors/xstate-store.js +18 -18
  230. package/dist/factory-assets/connectors/xstate.js +18 -18
  231. package/dist/factory-assets/skills/authoring-skaile-manifests/SKILL.md +9 -3
  232. package/dist/{flows-CBYRSAGS.js → flows-HMSE76PO.js} +12 -12
  233. package/dist/{flows-CBYRSAGS.js.map → flows-HMSE76PO.js.map} +1 -1
  234. package/dist/{helpers-MWZDRBLD.js → helpers-X6URBGSF.js} +17 -17
  235. package/dist/{helpers-MWZDRBLD.js.map → helpers-X6URBGSF.js.map} +1 -1
  236. package/dist/library/index.js +11 -11
  237. package/dist/library/install.js +3 -3
  238. package/dist/library/src/index.d.ts +2 -1
  239. package/dist/library/src/index.d.ts.map +1 -1
  240. package/dist/library/src/local/library-dir.d.ts +42 -0
  241. package/dist/library/src/local/library-dir.d.ts.map +1 -0
  242. package/dist/library/src/local/library-manager.d.ts +10 -1
  243. package/dist/library/src/local/library-manager.d.ts.map +1 -1
  244. package/dist/library/src/local/library.d.ts +2 -2
  245. package/dist/library/src/local/library.d.ts.map +1 -1
  246. package/dist/library/src/local/local-catalog-source.d.ts +9 -0
  247. package/dist/library/src/local/local-catalog-source.d.ts.map +1 -1
  248. package/dist/library/src/manifest-writer.d.ts +55 -4
  249. package/dist/library/src/manifest-writer.d.ts.map +1 -1
  250. package/dist/library/src/remote/cache.d.ts +18 -1
  251. package/dist/library/src/remote/cache.d.ts.map +1 -1
  252. package/dist/library/src/remote/remote-catalog-source.d.ts.map +1 -1
  253. package/dist/library/src/remote/rest-catalog-source.d.ts.map +1 -1
  254. package/dist/library/src/sync/git-driver.d.ts +5 -6
  255. package/dist/library/src/sync/git-driver.d.ts.map +1 -1
  256. package/dist/{library-publish-PICMDSB2.js → library-publish-OS3JDW4S.js} +123 -41
  257. package/dist/library-publish-OS3JDW4S.js.map +1 -0
  258. package/dist/open-library-4QSUORI6.js +40 -0
  259. package/dist/{open-library-OG457THY.js.map → open-library-4QSUORI6.js.map} +1 -1
  260. package/dist/open-registry-VCKS3MP5.js +32 -0
  261. package/dist/{open-registry-ZUZJ7MS7.js.map → open-registry-VCKS3MP5.js.map} +1 -1
  262. package/dist/paths-BVO56A25.js +22 -0
  263. package/dist/{paths-FQ64OLJG.js.map → paths-BVO56A25.js.map} +1 -1
  264. package/dist/{plugin-store-MPAMD5OT.js → plugin-store-X7GPWGBG.js} +9 -9
  265. package/dist/{plugin-store-MPAMD5OT.js.map → plugin-store-X7GPWGBG.js.map} +1 -1
  266. package/dist/{project-2GFT5LEZ.js → project-PAXP46RD.js} +20 -20
  267. package/dist/{project-2GFT5LEZ.js.map → project-PAXP46RD.js.map} +1 -1
  268. package/dist/resolver/index.js +8 -8
  269. package/dist/runner/index.js +32 -32
  270. package/dist/runner/src/agent.d.ts.map +1 -1
  271. package/dist/runner/src/context-usage/compose.d.ts.map +1 -1
  272. package/dist/runner/src/platform-blocks.d.ts +55 -0
  273. package/dist/runner/src/platform-blocks.d.ts.map +1 -0
  274. package/dist/runner/src/serve.d.ts.map +1 -1
  275. package/dist/runner/src/session-builder.d.ts.map +1 -1
  276. package/dist/sdk/asset-manager.js +14 -14
  277. package/dist/sdk/bridge.js +14 -14
  278. package/dist/sdk/client.js +1 -1
  279. package/dist/sdk/core.js +7 -7
  280. package/dist/sdk/flow.js +8 -8
  281. package/dist/sdk/index.js +33 -33
  282. package/dist/sdk/resolver.js +8 -8
  283. package/dist/sdk/runner.js +32 -32
  284. package/dist/sdk/session.js +2 -2
  285. package/dist/sdk/types.js +1 -1
  286. package/dist/session/index.js +2 -2
  287. package/dist/session/src/dispatcher.d.ts +25 -4
  288. package/dist/session/src/dispatcher.d.ts.map +1 -1
  289. package/dist/session/src/index.d.ts +1 -1
  290. package/dist/session/src/index.d.ts.map +1 -1
  291. package/dist/{setup-WHMCSIF2.js → setup-BV55VHWC.js} +24 -24
  292. package/dist/{setup-WHMCSIF2.js.map → setup-BV55VHWC.js.map} +1 -1
  293. package/dist/{skills-TVO26Y4V.js → skills-EDFUCJPX.js} +13 -13
  294. package/dist/{skills-TVO26Y4V.js.map → skills-EDFUCJPX.js.map} +1 -1
  295. package/dist/source-E4VAT5RZ.js +41 -0
  296. package/dist/{source-LKOFTOEK.js.map → source-E4VAT5RZ.js.map} +1 -1
  297. package/dist/{source-manifest-publish-L5J3QXER.js → source-manifest-publish-CLEE6TNH.js} +23 -23
  298. package/dist/{source-manifest-publish-L5J3QXER.js.map → source-manifest-publish-CLEE6TNH.js.map} +1 -1
  299. package/dist/tui/index.js +32 -32
  300. package/dist/types/index.js +1 -1
  301. package/dist/types/manifests.js +1 -1
  302. package/dist/types/src/events.d.ts +1 -1
  303. package/dist/types/src/events.d.ts.map +1 -1
  304. package/dist/types/src/index.d.ts +2 -2
  305. package/dist/types/src/index.d.ts.map +1 -1
  306. package/dist/types/src/manifests/agent.d.ts +2 -0
  307. package/dist/types/src/manifests/agent.d.ts.map +1 -1
  308. package/dist/types/src/manifests/contract.d.ts +2 -0
  309. package/dist/types/src/manifests/contract.d.ts.map +1 -1
  310. package/dist/types/src/manifests/index.d.ts +3 -3
  311. package/dist/types/src/manifests/index.d.ts.map +1 -1
  312. package/dist/types/src/manifests/prompt.d.ts +2 -0
  313. package/dist/types/src/manifests/prompt.d.ts.map +1 -1
  314. package/dist/types/src/protocol.d.ts +43 -1
  315. package/dist/types/src/protocol.d.ts.map +1 -1
  316. package/dist/types/src/version.d.ts +17 -1
  317. package/dist/types/src/version.d.ts.map +1 -1
  318. package/dist/workspace-plugin/adapters/mcp.js +25 -25
  319. package/dist/workspace-plugin/adapters/omp.js +14 -14
  320. package/dist/workspace-plugin/index.js +2 -2
  321. package/package.json +1 -1
  322. package/dist/chunk-36AFURKZ.js.map +0 -1
  323. package/dist/chunk-4MQS7CAF.js.map +0 -1
  324. package/dist/chunk-AWQYXZVG.js.map +0 -1
  325. package/dist/chunk-B6GIW55K.js.map +0 -1
  326. package/dist/chunk-BTE2V4IW.js.map +0 -1
  327. package/dist/chunk-CIFS5K6T.js.map +0 -1
  328. package/dist/chunk-EF7NPDDU.js.map +0 -1
  329. package/dist/chunk-F3RDEH5U.js.map +0 -1
  330. package/dist/chunk-GTILM2CI.js.map +0 -1
  331. package/dist/chunk-GXXFLBUQ.js.map +0 -1
  332. package/dist/chunk-H7QUDDKH.js.map +0 -1
  333. package/dist/chunk-HG34RNTK.js.map +0 -1
  334. package/dist/chunk-JAKOMFC6.js.map +0 -1
  335. package/dist/chunk-LEMHVDET.js.map +0 -1
  336. package/dist/chunk-OJ4N4T4H.js.map +0 -1
  337. package/dist/chunk-P23M65LB.js.map +0 -1
  338. package/dist/chunk-QVNRCDTV.js.map +0 -1
  339. package/dist/chunk-UMVKJM4Q.js.map +0 -1
  340. package/dist/chunk-Y7QA2OLD.js.map +0 -1
  341. package/dist/chunk-YSHVQGUS.js.map +0 -1
  342. package/dist/chunk-ZAOGFXDO.js +0 -112
  343. package/dist/chunk-ZAOGFXDO.js.map +0 -1
  344. package/dist/library-publish-PICMDSB2.js.map +0 -1
  345. package/dist/open-library-OG457THY.js +0 -40
  346. package/dist/open-registry-ZUZJ7MS7.js +0 -32
  347. package/dist/paths-FQ64OLJG.js +0 -22
  348. package/dist/source-LKOFTOEK.js +0 -41
@@ -1,5 +1,5 @@
1
- import { logErr } from './chunk-F2EKONM7.js';
2
- import { getKindRegistry } from './chunk-2FRUUDZY.js';
1
+ import { logErr } from './chunk-TRSQP3JD.js';
2
+ import { getKindRegistry } from './chunk-SBFW3CJH.js';
3
3
  import { userConfigPath } from './chunk-L5VSIPQD.js';
4
4
 
5
5
  // cli/src/open-library.ts
@@ -42,7 +42,9 @@ async function resolveCatalogSource(opts) {
42
42
  RemoteCatalogSource,
43
43
  RestCatalogSource,
44
44
  LocalCatalogSource,
45
- isLocalCatalogUrl
45
+ isLocalCatalogUrl,
46
+ libraryDirMissing,
47
+ missingLibraryDirMessage
46
48
  } = await import('./library/index.js');
47
49
  const cfg = resolveConfig({
48
50
  projectDir: opts?.projectDir,
@@ -57,17 +59,16 @@ async function resolveCatalogSource(opts) {
57
59
  const usable = sources.filter(
58
60
  (s) => s.backend === "local" && typeof s.path === "string" && s.path.length > 0
59
61
  ).sort((a, b) => b.createdAt.getTime() - a.createdAt.getTime());
62
+ const gone = sources.filter(libraryDirMissing);
60
63
  if (usable.length === 0) {
64
+ if (gone.length > 0) throw new Error(gone.map(missingLibraryDirMessage).join("\n"));
61
65
  throw new Error(
62
66
  "catalog.url is set to 'local' but no local library is registered. Run `skaile source add <path>` first, then `skaile source sync`."
63
67
  );
64
68
  }
65
69
  const present = usable.find((s) => fs.existsSync(s.path));
66
70
  if (!present) {
67
- const head = usable[0];
68
- throw new Error(
69
- `catalog.url is set to 'local' but every registered local library has a missing path on disk. Most recent: ${head.path} (library ${head.id}). Re-register with \`skaile source add <existing-path>\` or run \`skaile source list\` to inspect.`
70
- );
71
+ throw new Error(gone.map(missingLibraryDirMessage).join("\n"));
71
72
  }
72
73
  const source2 = new LocalCatalogSource(library, present.id, present.path, getKindRegistry());
73
74
  return { source: source2, close: () => library.close() };
@@ -89,5 +90,5 @@ async function openLibraryManager() {
89
90
  }
90
91
 
91
92
  export { LocalCatalogDisabledError, openCatalogSource, openLibrary, openLibraryManager, resolveCatalogSource };
92
- //# sourceMappingURL=chunk-HG34RNTK.js.map
93
- //# sourceMappingURL=chunk-HG34RNTK.js.map
93
+ //# sourceMappingURL=chunk-CLTHEKHR.js.map
94
+ //# sourceMappingURL=chunk-CLTHEKHR.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../cli/src/open-library.ts"],"names":["source"],"mappings":"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","file":"chunk-CLTHEKHR.js","sourcesContent":["/**\n * open-library.ts — shared helpers to open the LocalIndex and the configured\n * Catalog source.\n *\n * Lazy-loads the `@skaile/workspaces/library` subpath and returns the\n * LocalIndex instance (backed by `@libsql/client`; runs on Node and Bun).\n * The catalog-source helper reads\n * `~/.skaile/config.yaml` (and project-level overlay if `projectDir` is given)\n * to decide between {@link RemoteCatalogSource} (default — points at\n * `https://skaile.store`) and a {@link LocalCatalogSource} bound to the most\n * recent local library registered via `skaile source add`.\n */\n\nimport { userConfigPath } from \"@skaile/workspaces/core\";\nimport { logErr } from \"./helpers.ts\";\nimport { getKindRegistry } from \"./open-registry.ts\";\n\n/** Thrown by {@link openCatalogSource} when `catalog.url` is the `local` sentinel. */\nexport class LocalCatalogDisabledError extends Error {\n constructor(message: string) {\n super(message);\n this.name = \"LocalCatalogDisabledError\";\n }\n}\n\n/**\n * Open the LocalIndex with the full kind registry. Exits with code 1\n * if the library directory cannot be created.\n *\n * @returns A `LocalIndex` instance ready for use.\n * @docLink cli/dev-guide#open-library\n */\nexport async function openLibrary() {\n try {\n const { LocalIndex } = await import(\"@skaile/workspaces/library\");\n return new LocalIndex({ kindRegistry: getKindRegistry() });\n } catch (err) {\n logErr(`Could not open LocalIndex: ${err instanceof Error ? err.message : String(err)}`);\n process.exit(1);\n }\n}\n\n/**\n * Resolve the configured **remote** Catalog source for the CLI.\n *\n * Reads `~/.skaile/config.yaml` (plus the optional project-level overlay) and\n * returns a {@link RemoteCatalogSource} pointing at `catalog.url` (default:\n * `https://skaile.store`). The `cache_ttl: 0` config flag flips the source\n * into air-gapped mode: network reads are disabled, only `skaile update`\n * performs refreshes.\n *\n * **Local-mode rejection.** If the resolved config has `catalog.url: local`\n * this helper throws — callers wanting the dispatched local-or-remote source\n * must use {@link resolveCatalogSource}. Remote-only consumers like\n * `skaile update --catalog-only` rely on this strict behaviour.\n *\n * @param opts - Project directory (overlays project config) and explicit overrides.\n * @returns A configured {@link RemoteCatalogSource}.\n * @throws When `catalog.url` is the `local` sentinel.\n * @docLink cli/dev-guide#open-library\n */\nexport async function openCatalogSource(opts?: {\n projectDir?: string;\n baseUrlOverride?: string;\n /** Override the user-config path for tests. */\n userConfigFile?: string;\n}): Promise<\n | import(\"@skaile/workspaces/library\").RemoteCatalogSource\n | import(\"@skaile/workspaces/library\").RestCatalogSource\n> {\n const { resolveConfig, RemoteCatalogSource, RestCatalogSource, isLocalCatalogUrl } = await import(\n \"@skaile/workspaces/library\"\n );\n const cfg = resolveConfig({\n projectDir: opts?.projectDir,\n userConfigFile: opts?.userConfigFile,\n });\n const baseUrl = opts?.baseUrlOverride ?? cfg.catalog.url;\n if (isLocalCatalogUrl(baseUrl)) {\n throw new LocalCatalogDisabledError(\n \"catalog.url is set to 'local' — remote catalog is disabled. \" +\n \"Use `skaile source add <path>` + `skaile source sync` for local sources, \" +\n `or set \\`catalog.url: https://skaile.store\\` in ${userConfigPath()}.`,\n );\n }\n const cacheTtlMs = cfg.catalog.cache_ttl * 1000;\n if (cfg.catalog.framing === \"rest\") {\n return new RestCatalogSource({ baseUrl, cacheTtlMs });\n }\n return new RemoteCatalogSource({ baseUrl, cacheTtlMs });\n}\n\n/**\n * Resolved catalog source plus a close handle for releasing any underlying\n * resources (e.g. the `LocalIndex` SQLite connection in local mode).\n *\n * Callers MUST invoke `close()` when done — typically in a `finally` block.\n * For remote-mode sources `close()` is a no-op, but the contract is uniform\n * so consumers don't have to branch.\n *\n * @docLink cli/dev-guide#open-library\n */\nexport interface ResolvedCatalogSource {\n /** The {@link ICatalogSource} ready for use. */\n source: import(\"@skaile/workspaces/library\").ICatalogSource;\n /** Release any underlying resources (SQLite handle in local mode). */\n close(): void;\n}\n\n/**\n * Resolve the configured Catalog source — local or remote — based on\n * `~/.skaile/config.yaml`.\n *\n * Dispatch:\n * - `catalog.url: local` → opens {@link LocalIndex}, picks the most recently\n * registered local library whose `path` still exists on disk, and returns a\n * {@link LocalCatalogSource} bound to that library. Throws if no usable\n * local library is registered.\n * - any URL → returns {@link RemoteCatalogSource} (same as\n * {@link openCatalogSource}).\n *\n * The returned `close()` releases the underlying `LocalIndex` SQLite handle\n * in local mode (no-op in remote mode). Callers MUST invoke it — typically in\n * a `finally` block — to satisfy `library/CLAUDE.md` § \"Notes for Consumers\".\n *\n * @param opts - Project directory (overlays project config) and explicit overrides.\n * @returns A `ResolvedCatalogSource` carrying the source and a close handle.\n * @throws When `local` is configured but no usable local library is registered.\n * @docLink cli/dev-guide#open-library\n */\nexport async function resolveCatalogSource(opts?: {\n projectDir?: string;\n baseUrlOverride?: string;\n /** Override the user-config path for tests. */\n userConfigFile?: string;\n}): Promise<ResolvedCatalogSource> {\n const {\n resolveConfig,\n RemoteCatalogSource,\n RestCatalogSource,\n LocalCatalogSource,\n isLocalCatalogUrl,\n libraryDirMissing,\n missingLibraryDirMessage,\n } = await import(\"@skaile/workspaces/library\");\n const cfg = resolveConfig({\n projectDir: opts?.projectDir,\n userConfigFile: opts?.userConfigFile,\n });\n const baseUrl = opts?.baseUrlOverride ?? cfg.catalog.url;\n\n if (isLocalCatalogUrl(baseUrl)) {\n const fs = await import(\"node:fs\");\n const library = await openLibrary();\n try {\n const sources = await library.listSources();\n type LibraryRow = (typeof sources)[number];\n // Type-narrow: `path` is required for local libraries after the filter.\n const usable = sources\n .filter(\n (s): s is LibraryRow & { path: string } =>\n s.backend === \"local\" && typeof s.path === \"string\" && s.path.length > 0,\n )\n .sort((a, b) => b.createdAt.getTime() - a.createdAt.getTime());\n\n // A registered library whose directory is gone has one wording everywhere.\n const gone = sources.filter(libraryDirMissing);\n if (usable.length === 0) {\n if (gone.length > 0) throw new Error(gone.map(missingLibraryDirMessage).join(\"\\n\"));\n throw new Error(\n \"catalog.url is set to 'local' but no local library is registered. \" +\n \"Run `skaile source add <path>` first, then `skaile source sync`.\",\n );\n }\n\n // Prefer the most recently added library whose path still exists.\n const present = usable.find((s) => fs.existsSync(s.path));\n if (!present) {\n throw new Error(gone.map(missingLibraryDirMessage).join(\"\\n\"));\n }\n\n const source = new LocalCatalogSource(library, present.id, present.path, getKindRegistry());\n return { source, close: () => library.close() };\n } catch (err) {\n // Release the handle on any failure during dispatch — otherwise the\n // SQLite WAL state leaks for the lifetime of the process.\n library.close();\n throw err;\n }\n }\n\n const cacheTtlMs = cfg.catalog.cache_ttl * 1000;\n const source =\n cfg.catalog.framing === \"rest\"\n ? new RestCatalogSource({ baseUrl, cacheTtlMs })\n : new RemoteCatalogSource({ baseUrl, cacheTtlMs });\n return { source, close: () => {} };\n}\n\n/**\n * Open the LibraryManager bound to the active LocalIndex.\n * Caller owns lifetime — must call `close()` (returned helper closes the\n * underlying LocalIndex).\n *\n * @docLink cli/dev-guide#open-library\n */\nexport async function openLibraryManager(): Promise<{\n manager: import(\"@skaile/workspaces/library\").LibraryManager;\n library: import(\"@skaile/workspaces/library\").LocalIndex;\n close: () => void;\n}> {\n const { LibraryManager } = await import(\"@skaile/workspaces/library\");\n const library = await openLibrary();\n const manager = new LibraryManager(library);\n return { manager, library, close: () => library.close() };\n}\n"]}
@@ -30,8 +30,23 @@ function openBunSqlite(path2, opts) {
30
30
  }
31
31
  };
32
32
  }
33
+ function requireNodeSqlite() {
34
+ const original = process.emitWarning;
35
+ process.emitWarning = function(warning, ...args) {
36
+ const first = args[0];
37
+ const type = typeof first === "string" ? first : first?.type;
38
+ const text = typeof warning === "string" ? warning : warning?.message;
39
+ if (type === "ExperimentalWarning" && /sqlite/i.test(text ?? "")) return;
40
+ return original.call(process, warning, ...args);
41
+ };
42
+ try {
43
+ return nodeRequire("node:sqlite");
44
+ } finally {
45
+ process.emitWarning = original;
46
+ }
47
+ }
33
48
  function openNodeSqlite(path2, opts) {
34
- const { DatabaseSync } = nodeRequire("node:sqlite");
49
+ const { DatabaseSync } = requireNodeSqlite();
35
50
  const db = opts.readonly ? new DatabaseSync(path2, { readOnly: true }) : new DatabaseSync(path2);
36
51
  return {
37
52
  exec: (sql) => {
@@ -355,5 +370,5 @@ var WsLogSink = class {
355
370
  };
356
371
 
357
372
  export { DEFAULT_LOGS_RETENTION, OnLogBridgeSink, SqliteSink, WsLogSink, createLogStoreFromConfig, enforceLogsRetention, openSqlite, resolveLogStoreConfig, resolveLogsRetention };
358
- //# sourceMappingURL=chunk-UMVKJM4Q.js.map
359
- //# sourceMappingURL=chunk-UMVKJM4Q.js.map
373
+ //# sourceMappingURL=chunk-DALV4HHP.js.map
374
+ //# sourceMappingURL=chunk-DALV4HHP.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../core/src/logging/sinks/sqlite-runtime.ts","../core/src/logging/sinks/sqlite-sink.ts","../core/src/logging/config.ts","../core/src/logging/retention.ts","../core/src/logging/sinks/on-log-bridge-sink.ts","../core/src/logging/sinks/ws-log-sink.ts"],"names":["path"],"mappings":"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","file":"chunk-DALV4HHP.js","sourcesContent":["/**\n * Runtime-portable embedded SQLite for the logging sink.\n *\n * The log store needs a synchronous, embedded SQLite driver. Bun ships\n * `bun:sqlite`; Node 22.5+ ships `node:sqlite`. This shim selects the right\n * one at runtime so the CLI and runtime run unmodified under either — no Bun\n * dependency baked into the published build.\n *\n * Both drivers accept `$`-prefixed named-parameter keys directly, so callers\n * use one binding convention. The only API gap is transactions: `bun:sqlite`\n * has `db.transaction()`, `node:sqlite` does not — {@link openSqlite}\n * synthesizes it with manual `BEGIN`/`COMMIT`/`ROLLBACK`.\n */\nimport { createRequire } from \"node:module\";\n\nconst nodeRequire = createRequire(import.meta.url);\n\n/** True when executing under the Bun runtime. */\nconst isBun = typeof (globalThis as { Bun?: unknown }).Bun !== \"undefined\";\n\n/** A prepared statement bound with `$`-prefixed named parameters. */\nexport interface PortableStatement {\n /** Returns the number of rows the statement changed. */\n run(params?: Record<string, unknown>): PortableRunResult;\n all<T = unknown>(params?: Record<string, unknown>): T[];\n get<T = unknown>(params?: Record<string, unknown>): T | undefined;\n}\n\n/** Outcome of {@link PortableStatement.run}, normalised across drivers. */\nexport interface PortableRunResult {\n changes: number;\n}\n\n/** A synchronous embedded SQLite handle, uniform across Bun and Node. */\nexport interface PortableDatabase {\n exec(sql: string): void;\n prepare(sql: string): PortableStatement;\n /** Wrap `fn` so the statements it runs commit as one transaction. */\n transaction<A extends unknown[]>(fn: (...args: A) => void): (...args: A) => void;\n close(): void;\n}\n\nexport interface OpenSqliteOptions {\n /** Open read-only. The database file must already exist. */\n readonly?: boolean;\n}\n\n/** Minimal structural shape shared by `bun:sqlite` and `node:sqlite` handles. */\ninterface RawStatement {\n run(params?: unknown): unknown;\n all(params?: unknown): unknown[];\n get(params?: unknown): unknown;\n}\ninterface RawDatabase {\n exec(sql: string): unknown;\n prepare(sql: string): RawStatement;\n close(): void;\n}\n\nfunction wrapStatement(stmt: RawStatement): PortableStatement {\n return {\n run: (params) => {\n const raw = (params === undefined ? stmt.run() : stmt.run(params)) as\n | { changes?: number | bigint }\n | undefined;\n return { changes: Number(raw?.changes ?? 0) };\n },\n all: (params) => (params === undefined ? stmt.all() : stmt.all(params)) as never,\n get: (params) => (params === undefined ? stmt.get() : stmt.get(params)) as never,\n };\n}\n\nfunction openBunSqlite(path: string, opts: OpenSqliteOptions): PortableDatabase {\n const { Database } = nodeRequire(\"bun:sqlite\") as {\n Database: new (\n p: string,\n o?: { readonly?: boolean },\n ) => RawDatabase & {\n transaction<A extends unknown[]>(fn: (...args: A) => void): (...args: A) => void;\n };\n };\n const db = opts.readonly ? new Database(path, { readonly: true }) : new Database(path);\n return {\n exec: (sql) => {\n db.exec(sql);\n },\n prepare: (sql) => wrapStatement(db.prepare(sql)),\n transaction: (fn) => db.transaction(fn),\n close: () => {\n db.close();\n },\n };\n}\n\n/**\n * Load `node:sqlite` without Node's \"SQLite is an experimental feature\"\n * `ExperimentalWarning` (Node 22.5–23). The warning is emitted synchronously by\n * the `require`, so the filter is installed for that one call only; every other\n * warning, before or after, is passed through untouched.\n */\nfunction requireNodeSqlite(): {\n DatabaseSync: new (p: string, o?: { readOnly?: boolean }) => RawDatabase;\n} {\n const original = process.emitWarning;\n process.emitWarning = function (this: unknown, warning: string | Error, ...args: unknown[]) {\n const first = args[0];\n const type = typeof first === \"string\" ? first : (first as { type?: string } | undefined)?.type;\n const text = typeof warning === \"string\" ? warning : warning?.message;\n if (type === \"ExperimentalWarning\" && /sqlite/i.test(text ?? \"\")) return;\n return (original as (...a: unknown[]) => void).call(process, warning, ...args);\n } as typeof process.emitWarning;\n try {\n return nodeRequire(\"node:sqlite\");\n } finally {\n process.emitWarning = original;\n }\n}\n\nfunction openNodeSqlite(path: string, opts: OpenSqliteOptions): PortableDatabase {\n const { DatabaseSync } = requireNodeSqlite();\n const db = opts.readonly ? new DatabaseSync(path, { readOnly: true }) : new DatabaseSync(path);\n return {\n exec: (sql) => {\n db.exec(sql);\n },\n prepare: (sql) => wrapStatement(db.prepare(sql)),\n transaction:\n (fn) =>\n (...args) => {\n db.exec(\"BEGIN\");\n try {\n fn(...args);\n db.exec(\"COMMIT\");\n } catch (err) {\n db.exec(\"ROLLBACK\");\n throw err;\n }\n },\n close: () => {\n db.close();\n },\n };\n}\n\n/**\n * Open an embedded SQLite database using the runtime's native driver —\n * `bun:sqlite` under Bun, `node:sqlite` under Node 22.5+.\n */\nexport function openSqlite(path: string, opts: OpenSqliteOptions = {}): PortableDatabase {\n return isBun ? openBunSqlite(path, opts) : openNodeSqlite(path, opts);\n}\n","import { chmodSync } from \"node:fs\";\nimport type { LogEntry, LogQuery, LogQueryResult } from \"@skaile/workspaces/types\";\nimport { openSqlite, type PortableDatabase, type PortableStatement } from \"./sqlite-runtime.js\";\nimport type { LogSink } from \"./types.js\";\n\nexport interface SqliteSinkOptions {\n path: string; // ':memory:' or filesystem path\n}\n\nconst SCHEMA = `\nCREATE TABLE IF NOT EXISTS log_entries (\n id TEXT PRIMARY KEY,\n timestamp TEXT NOT NULL,\n session_id TEXT NOT NULL,\n kind TEXT NOT NULL,\n subkind TEXT NOT NULL,\n instance TEXT,\n level TEXT NOT NULL,\n message TEXT NOT NULL,\n data_json TEXT,\n error_json TEXT\n);\nCREATE INDEX IF NOT EXISTS idx_logs_timestamp ON log_entries(timestamp);\nCREATE INDEX IF NOT EXISTS idx_logs_kind_level ON log_entries(kind, level);\nCREATE INDEX IF NOT EXISTS idx_logs_source ON log_entries(kind, subkind, instance);\n`;\n\ninterface LogEntryRow {\n id: string;\n timestamp: string;\n session_id: string;\n kind: string;\n subkind: string;\n instance: string | null;\n level: string;\n message: string;\n data_json: string | null;\n error_json: string | null;\n}\n\nexport class SqliteSink implements LogSink {\n private db: PortableDatabase;\n private insertStmt: PortableStatement;\n private insertMany: (entries: LogEntry[]) => void;\n private closed = false;\n\n constructor(opts: SqliteSinkOptions) {\n this.db = openSqlite(opts.path);\n if (opts.path !== \":memory:\") {\n this.db.exec(\"PRAGMA journal_mode = WAL\");\n }\n this.db.exec(SCHEMA);\n if (opts.path !== \":memory:\") {\n // Group-writable so a co-grouped host process can open read-write for retention.\n makeGroupWritable(opts.path);\n }\n this.insertStmt = this.db.prepare(\n `INSERT INTO log_entries (id, timestamp, session_id, kind, subkind, instance, level, message, data_json, error_json)\n VALUES ($id, $timestamp, $session_id, $kind, $subkind, $instance, $level, $message, $data_json, $error_json)`,\n );\n this.insertMany = this.db.transaction((entries: LogEntry[]) => {\n for (const e of entries) this.insertStmt.run(this.toRow(e));\n });\n }\n\n write(entry: LogEntry): void {\n if (this.closed) return;\n this.insertStmt.run(this.toRow(entry));\n }\n\n writeBatch(entries: LogEntry[]): void {\n if (this.closed || entries.length === 0) return;\n this.insertMany(entries);\n }\n\n close(): void {\n if (this.closed) return;\n this.closed = true;\n this.db.close();\n }\n\n query(q: LogQuery): LogQueryResult {\n if (this.closed) return { entries: [] };\n const where: string[] = [\"session_id = $sessionId\"];\n const params: Record<string, unknown> = { $sessionId: q.sessionId };\n\n if (q.source?.kind) {\n where.push(\"kind = $kind\");\n params.$kind = q.source.kind;\n }\n if (q.source?.subkind) {\n where.push(\"subkind = $subkind\");\n params.$subkind = q.source.subkind;\n }\n if (q.source?.instance) {\n where.push(\"instance = $instance\");\n params.$instance = q.source.instance;\n }\n if (q.levels && q.levels.length > 0) {\n const placeholders = q.levels.map((_, i) => `$level${i}`).join(\", \");\n where.push(`level IN (${placeholders})`);\n q.levels.forEach((lvl, i) => {\n params[`$level${i}`] = lvl;\n });\n }\n if (q.since) {\n where.push(\"timestamp >= $since\");\n params.$since = q.since;\n }\n if (q.until) {\n where.push(\"timestamp < $until\");\n params.$until = q.until;\n }\n if (q.search) {\n // Escape SQL LIKE wildcards so a search for \"100%\" matches the literal string,\n // not \"100<anything>\". \\\\ is also escaped because it's the escape character itself.\n const escaped = q.search.replace(/[\\\\%_]/g, \"\\\\$&\");\n where.push(\"message LIKE $search ESCAPE '\\\\'\");\n params.$search = `%${escaped}%`;\n }\n if (q.cursor) {\n where.push(\"id < $cursor\");\n params.$cursor = q.cursor;\n }\n\n const limit = Math.min(q.limit ?? 500, 5000);\n params.$limit = limit + 1;\n\n const sql = `SELECT id, timestamp, session_id, kind, subkind, instance, level, message, data_json, error_json\n FROM log_entries\n WHERE ${where.join(\" AND \")}\n ORDER BY id DESC\n LIMIT $limit`;\n\n const rows = this.db.prepare(sql).all<LogEntryRow>(params);\n\n const hasMore = rows.length > limit;\n const sliced = hasMore ? rows.slice(0, limit) : rows;\n const entries: LogEntry[] = sliced.map((r) => ({\n id: r.id,\n timestamp: r.timestamp,\n sessionId: r.session_id,\n source: {\n kind: r.kind as LogEntry[\"source\"][\"kind\"],\n subkind: r.subkind,\n instance: r.instance ?? undefined,\n },\n level: r.level as LogEntry[\"level\"],\n message: r.message,\n data: r.data_json ? JSON.parse(r.data_json) : undefined,\n error: r.error_json ? JSON.parse(r.error_json) : undefined,\n }));\n\n return {\n entries,\n nextCursor: hasMore ? entries[entries.length - 1].id : undefined,\n };\n }\n\n // Both bun:sqlite and node:sqlite bind `$name` SQL placeholders from\n // matching `$`-prefixed object keys.\n private toRow(e: LogEntry): Record<string, unknown> {\n return {\n $id: e.id,\n $timestamp: e.timestamp,\n $session_id: e.sessionId,\n $kind: e.source.kind,\n $subkind: e.source.subkind,\n $instance: e.source.instance ?? null,\n $level: e.level,\n $message: e.message,\n $data_json: e.data ? JSON.stringify(e.data) : null,\n $error_json: e.error ? JSON.stringify(e.error) : null,\n };\n }\n}\n\n/**\n * Best-effort `chmod 0664` on the db file and its WAL/SHM siblings. Swallows all\n * errors (missing sibling, EPERM when not the owner) so logging never throws.\n */\nfunction makeGroupWritable(dbPath: string): void {\n for (const p of [dbPath, `${dbPath}-wal`, `${dbPath}-shm`]) {\n try {\n chmodSync(p, 0o664);\n } catch {\n // Sibling may not exist yet, or this process may not own the file.\n // Either way, retention degrades cleanly — never break logging.\n }\n }\n}\n","import { mkdirSync } from \"node:fs\";\nimport path from \"node:path\";\nimport type { LogLevel, LogStoreConfig, LogStoreMode } from \"@skaile/workspaces/types\";\nimport { LogStore } from \"./log-store.js\";\nimport { NoOpSink } from \"./sinks/no-op-sink.js\";\nimport { SqliteSink } from \"./sinks/sqlite-sink.js\";\nimport { StdoutSink } from \"./sinks/stdout-sink.js\";\n\nconst VALID_MODES: LogStoreMode[] = [\"persistent\", \"ephemeral\", \"off\"];\nconst VALID_LEVELS: LogLevel[] = [\"debug\", \"info\", \"warn\", \"error\"];\n\nexport interface ResolveLogStoreConfigInput {\n sessionId: string;\n workspacePath?: string;\n yamlBlock?: Partial<{\n mode: LogStoreMode;\n level: LogLevel;\n retention: { maxEntries?: number; maxAgeDays?: number };\n }>;\n}\n\nexport function resolveLogStoreConfig(input: ResolveLogStoreConfigInput): LogStoreConfig {\n const yaml = input.yamlBlock ?? {};\n const envMode = process.env.SKAILE_LOG_MODE as LogStoreMode | undefined;\n const envLevel = process.env.SKAILE_LOG_LEVEL as LogLevel | undefined;\n\n const mode = envMode ?? yaml.mode ?? \"persistent\";\n if (!VALID_MODES.includes(mode)) {\n throw new Error(`Invalid logging.mode: ${mode}`);\n }\n const level = envLevel ?? yaml.level ?? \"info\";\n if (!VALID_LEVELS.includes(level)) {\n throw new Error(`Invalid logging.level: ${level}`);\n }\n\n return {\n sessionId: input.sessionId,\n workspacePath: input.workspacePath,\n mode,\n level,\n retention: yaml.retention,\n };\n}\n\nexport interface CreateLogStoreOptions {\n /**\n * Mirror every entry to stdout as well (default `true`, for container logs).\n * A CLI host that already renders the entries itself passes `false` so a\n * record is not printed twice.\n */\n stdout?: boolean;\n}\n\nexport function createLogStoreFromConfig(\n cfg: LogStoreConfig,\n opts: CreateLogStoreOptions = {},\n): LogStore {\n const sinks = [];\n if (cfg.mode === \"off\") {\n sinks.push(new NoOpSink());\n } else if (cfg.mode === \"ephemeral\") {\n sinks.push(new SqliteSink({ path: \":memory:\" }));\n } else {\n if (!cfg.workspacePath) {\n throw new Error(\"logging.mode=persistent requires workspacePath\");\n }\n const dir = path.join(cfg.workspacePath, \".skaile\");\n mkdirSync(dir, { recursive: true });\n const dbPath = path.join(dir, \"logs.db\");\n sinks.push(new SqliteSink({ path: dbPath }));\n }\n // Include stdout for live container logs (dev-friendly) unless the host opts out.\n if (opts.stdout !== false) sinks.push(new StdoutSink());\n return new LogStore({\n sessionId: cfg.sessionId,\n level: cfg.level,\n sinks,\n });\n}\n","/**\n * Retention for the per-session structured-log SQLite store (`logs.db`).\n *\n * Mirrors the platform's `enforceLogsRetention`\n * (`platform/backend/libs/session/src/logs-retention.utils.ts`): the same\n * age-then-count semantics, batch size, pass ceiling and busy timeout. The\n * platform trims the host copy of the file once per wake; in broker mode that\n * copy is not the file the runner writes, so the runner trims its own file at\n * boot. In docker mode both trim the same file with the same rules, which is\n * harmless: a second pass finds nothing left to delete.\n */\nimport { existsSync } from \"node:fs\";\nimport type { LogStoreRetention } from \"@skaile/workspaces/types\";\nimport { isRetentionValue } from \"./retention-value.js\";\nimport { openSqlite, type PortableStatement } from \"./sinks/sqlite-runtime.js\";\n\n/** Rows removed by one {@link enforceLogsRetention} run. */\nexport interface EnforceLogsRetentionResult {\n deletedByAge: number;\n deletedByCount: number;\n}\n\n/**\n * The platform's cloud-mode retention defaults (docker and broker). Used when\n * `skaile.yaml` has no `logging.retention` value for a field.\n */\nexport const DEFAULT_LOGS_RETENTION: Readonly<Required<LogStoreRetention>> = Object.freeze({\n maxEntries: 100_000,\n maxAgeDays: 7,\n});\n\nconst DAY_MS = 86_400_000;\n\n/** Rows deleted per statement. Caps both the write lock and the loop stall. */\nconst BATCH_SIZE = 500;\n\n/**\n * Pass ceiling per statement. Concurrent inserts keep refilling the count-trim\n * delete-set, so \"loop until a short batch\" is not a guaranteed bound;\n * leftovers are trimmed on the next boot.\n */\nconst MAX_TRIM_PASSES = 200;\n\n/** Wait on a lock held by another connection instead of failing with SQLITE_BUSY. */\nconst BUSY_TIMEOUT_MS = 2_000;\n\n// `LIMIT` directly on `DELETE` needs SQLITE_ENABLE_UPDATE_DELETE_LIMIT; the\n// `id IN (SELECT ... LIMIT)` form works under both bun:sqlite and node:sqlite.\nconst AGE_TRIM_SQL = `DELETE FROM log_entries WHERE id IN (\n SELECT id FROM log_entries WHERE timestamp < $cutoff ORDER BY id LIMIT $batch\n)`;\n\nconst COUNT_TRIM_SQL = `DELETE FROM log_entries WHERE id IN (\n SELECT id FROM log_entries\n WHERE id NOT IN (SELECT id FROM log_entries ORDER BY id DESC LIMIT $keep)\n ORDER BY id LIMIT $batch\n)`;\n\n/**\n * Overlay the configured retention on {@link DEFAULT_LOGS_RETENTION}, field by\n * field. A value that is not a non-negative finite number counts as unset.\n * `0` is a valid value: `maxEntries: 0` or `maxAgeDays: 0` deletes every row,\n * as it does on the platform.\n */\nexport function resolveLogsRetention(\n configured: LogStoreRetention | undefined,\n): Required<LogStoreRetention> {\n return {\n maxEntries: isRetentionValue(configured?.maxEntries)\n ? configured.maxEntries\n : DEFAULT_LOGS_RETENTION.maxEntries,\n maxAgeDays: isRetentionValue(configured?.maxAgeDays)\n ? configured.maxAgeDays\n : DEFAULT_LOGS_RETENTION.maxAgeDays,\n };\n}\n\nfunction yieldToEventLoop(): Promise<void> {\n return new Promise<void>((resolve) => setImmediate(resolve));\n}\n\n/**\n * Run one bounded delete until it stops filling a batch. Each statement is its\n * own implicit transaction, so no lock is held across the yield and the\n * in-process sink can write between batches.\n */\nasync function runBoundedTrim(\n stmt: PortableStatement,\n params: Record<string, unknown>,\n): Promise<number> {\n let deleted = 0;\n for (let pass = 0; pass < MAX_TRIM_PASSES; pass++) {\n const { changes } = stmt.run(params);\n deleted += changes;\n if (changes < BATCH_SIZE) break;\n await yieldToEventLoop();\n }\n return deleted;\n}\n\n/**\n * Delete rows older than `maxAgeDays`, then keep at most the `maxEntries`\n * newest rows (by ULID id). Uses its own connection with a busy timeout, in\n * bounded batches that yield to the event loop between passes.\n *\n * Returns zero counts when the file does not exist or the policy is empty.\n * Other failures (lock timeout, not a log store) reject; the caller decides\n * how loud to be.\n */\nexport async function enforceLogsRetention(\n dbPath: string,\n retention: LogStoreRetention,\n): Promise<EnforceLogsRetentionResult> {\n const result: EnforceLogsRetentionResult = { deletedByAge: 0, deletedByCount: 0 };\n if (!existsSync(dbPath)) return result;\n if (retention.maxAgeDays == null && retention.maxEntries == null) return result;\n\n const db = openSqlite(dbPath);\n try {\n db.exec(`PRAGMA busy_timeout = ${BUSY_TIMEOUT_MS}`);\n if (retention.maxAgeDays != null) {\n const cutoff = new Date(Date.now() - retention.maxAgeDays * DAY_MS).toISOString();\n result.deletedByAge = await runBoundedTrim(db.prepare(AGE_TRIM_SQL), {\n $cutoff: cutoff,\n $batch: BATCH_SIZE,\n });\n }\n if (retention.maxEntries != null) {\n result.deletedByCount = await runBoundedTrim(db.prepare(COUNT_TRIM_SQL), {\n $keep: retention.maxEntries,\n $batch: BATCH_SIZE,\n });\n }\n return result;\n } finally {\n db.close();\n }\n}\n","import type { LogEntry, LogSink } from \"@skaile/workspaces/types\";\n\n/**\n * OnLogBridgeSink — forwards every entry as a single formatted text line to\n * a legacy `onLog(line)` callback. Used as a back-compat bridge for callers\n * that historically received plain text lines from the runner.\n *\n * Format: `[level] [kind:subkind[:instance]] message [data-json] [— error.message]`\n */\nexport class OnLogBridgeSink implements LogSink {\n constructor(private readonly onLog: (line: string) => void) {}\n\n write(entry: LogEntry): void {\n const tag = entry.source.instance\n ? `${entry.source.kind}:${entry.source.subkind}:${entry.source.instance}`\n : `${entry.source.kind}:${entry.source.subkind}`;\n let line = `[${entry.level}] [${tag}] ${entry.message}`;\n if (entry.data && Object.keys(entry.data).length > 0) {\n line += ` ${JSON.stringify(entry.data)}`;\n }\n if (entry.error?.message) {\n line += ` — ${entry.error.message}`;\n }\n this.onLog(line);\n }\n\n writeBatch(entries: LogEntry[]): void {\n for (const e of entries) this.write(e);\n }\n\n close(): void {\n /* no-op */\n }\n}\n","import type { LogEntry, LogEntryEvent } from \"@skaile/workspaces/types\";\nimport type { LogSink } from \"./types.js\";\n\nexport interface WsLogSinkOptions {\n /**\n * Transport send callback. Typically wired to `transport.send` on the\n * runner's `WebSocketServerTransport`. The transport already drops sends\n * when no client is connected — this sink does not buffer.\n */\n send: (event: LogEntryEvent) => void;\n}\n\n/**\n * Forwards every LogEntry recorded by LogStore as a `log_entry` AgentEvent\n * over the configured transport. Used by the runner to make container-side\n * structured logs visible to the platform gateway in real time. Historical\n * reads still go through SQLite — this sink is for live tail only.\n */\nexport class WsLogSink implements LogSink {\n private readonly send: (event: LogEntryEvent) => void;\n\n constructor(opts: WsLogSinkOptions) {\n this.send = opts.send;\n }\n\n write(entry: LogEntry): void {\n try {\n this.send({ type: \"log_entry\", entry });\n } catch {\n // Logging must never break the agent — drop on transport failure.\n }\n }\n\n writeBatch(entries: LogEntry[]): void {\n for (const e of entries) this.write(e);\n }\n\n close(): void {\n /* nothing to release — transport lifecycle is owned by the caller */\n }\n}\n"]}
@@ -118,6 +118,7 @@ var CONNECTOR_ERROR_KINDS = ["credential", "repo-state", "config"];
118
118
  var MENTION_GROUPS = ["agent", "humans", "humans_here", "here", "all"];
119
119
 
120
120
  // types/src/protocol.ts
121
+ var PLATFORM_BLOCKS_RUNTIME_FEATURE = "platformBlocks.v1";
121
122
  var SESSION_ROOT_CONNECTOR_ID = "@session";
122
123
 
123
124
  // types/src/reactions.ts
@@ -218,8 +219,8 @@ function withActivityLabelDefs(defs, z) {
218
219
  }
219
220
 
220
221
  // types/src/version.ts
221
- var PROTOCOL_VERSION = { major: 4, minor: 17, patch: 0 };
222
- var PROTOCOL_VERSION_STRING = "4.17.0";
222
+ var PROTOCOL_VERSION = { major: 4, minor: 18, patch: 0 };
223
+ var PROTOCOL_VERSION_STRING = "4.18.0";
223
224
  var RANGED_WRITE_MIN_PROTOCOL = { major: 4, minor: 15, patch: 0 };
224
225
  function parseVersion(s) {
225
226
  const parts = s.split(".");
@@ -239,6 +240,6 @@ function formatVersion(v) {
239
240
  return `${v.major}.${v.minor}.${v.patch}`;
240
241
  }
241
242
 
242
- export { AGENT_RUN_STATUSES, CONNECTOR_ERROR_KINDS, MENTION_GROUPS, PROTOCOL_VERSION, PROTOCOL_VERSION_STRING, QUICK_REACTIONS, RANGED_WRITE_MIN_PROTOCOL, SESSION_ROOT_CONNECTOR_ID, TERMINAL_AGENT_RUN_STATUSES, TOOL_ACTIVITY_LABEL_DESCRIPTION, TOOL_ACTIVITY_LABEL_MAX_CHARS, TOOL_ACTIVITY_LABEL_PARAM, TOOL_ACTIVITY_PROMPT_SECTION, declaresActivityLabel, deliveryClassOf, formatVersion, isRenderCapability, isUserInvokable, parseVersion, stripActivityLabel, withActivityLabelDefs, withActivityLabelJsonSchema, withActivityLabelShape };
243
- //# sourceMappingURL=chunk-F3RDEH5U.js.map
244
- //# sourceMappingURL=chunk-F3RDEH5U.js.map
243
+ export { AGENT_RUN_STATUSES, CONNECTOR_ERROR_KINDS, MENTION_GROUPS, PLATFORM_BLOCKS_RUNTIME_FEATURE, PROTOCOL_VERSION, PROTOCOL_VERSION_STRING, QUICK_REACTIONS, RANGED_WRITE_MIN_PROTOCOL, SESSION_ROOT_CONNECTOR_ID, TERMINAL_AGENT_RUN_STATUSES, TOOL_ACTIVITY_LABEL_DESCRIPTION, TOOL_ACTIVITY_LABEL_MAX_CHARS, TOOL_ACTIVITY_LABEL_PARAM, TOOL_ACTIVITY_PROMPT_SECTION, declaresActivityLabel, deliveryClassOf, formatVersion, isRenderCapability, isUserInvokable, parseVersion, stripActivityLabel, withActivityLabelDefs, withActivityLabelJsonSchema, withActivityLabelShape };
244
+ //# sourceMappingURL=chunk-F4NJDSR7.js.map
245
+ //# sourceMappingURL=chunk-F4NJDSR7.js.map