@skaile/workspaces 0.24.0 → 0.26.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 (520) hide show
  1. package/CHANGELOG.md +276 -0
  2. package/README.md +2 -2
  3. package/dist/{asset-feeds-WKIKSZ6Z.js → asset-feeds-WMVTI7KW.js} +11 -10
  4. package/dist/asset-feeds-WMVTI7KW.js.map +1 -0
  5. package/dist/asset-manager/index.js +11 -10
  6. package/dist/asset-manager/installer.js +10 -9
  7. package/dist/asset-manager/renderers.js +2 -2
  8. package/dist/asset-manager/src/index.d.ts +6 -7
  9. package/dist/asset-manager/src/index.d.ts.map +1 -1
  10. package/dist/asset-manager/src/installer.d.ts.map +1 -1
  11. package/dist/bridge/drivers/claude-sdk.js +14 -7
  12. package/dist/bridge/drivers/claude-sdk.js.map +1 -1
  13. package/dist/bridge/drivers/codex.js +8 -34
  14. package/dist/bridge/drivers/codex.js.map +1 -1
  15. package/dist/bridge/drivers/echo.js +1 -1
  16. package/dist/bridge/drivers/omp.js +64 -50
  17. package/dist/bridge/drivers/omp.js.map +1 -1
  18. package/dist/bridge/index.js +4 -4
  19. package/dist/bridge/src/drivers/claude-sdk.d.ts.map +1 -1
  20. package/dist/bridge/src/drivers/codex.d.ts.map +1 -1
  21. package/dist/bridge/src/drivers/omp.d.ts +20 -4
  22. package/dist/bridge/src/drivers/omp.d.ts.map +1 -1
  23. package/dist/bridge/src/error-classifier.d.ts +17 -0
  24. package/dist/bridge/src/error-classifier.d.ts.map +1 -1
  25. package/dist/bridge/src/models.d.ts +1 -1
  26. package/dist/bridge/src/models.d.ts.map +1 -1
  27. package/dist/bridge/src/provider-endpoints.d.ts +16 -0
  28. package/dist/bridge/src/provider-endpoints.d.ts.map +1 -0
  29. package/dist/bridge/src/validation.d.ts +1 -1
  30. package/dist/bridge/src/validation.d.ts.map +1 -1
  31. package/dist/{chunk-M5TE6YI5.js → chunk-23M4XZQW.js} +10 -52
  32. package/dist/chunk-23M4XZQW.js.map +1 -0
  33. package/dist/{chunk-DH4N5AW4.js → chunk-2FS4FPZ7.js} +3 -3
  34. package/dist/{chunk-DH4N5AW4.js.map → chunk-2FS4FPZ7.js.map} +1 -1
  35. package/dist/{chunk-6VTG73UY.js → chunk-45H3UO2R.js} +2 -2
  36. package/dist/{chunk-6VTG73UY.js.map → chunk-45H3UO2R.js.map} +1 -1
  37. package/dist/chunk-4SQ6Y6U7.js +28 -0
  38. package/dist/chunk-4SQ6Y6U7.js.map +1 -0
  39. package/dist/{chunk-LSGAYQ2E.js → chunk-5YO3H5Q4.js} +3 -3
  40. package/dist/{chunk-LSGAYQ2E.js.map → chunk-5YO3H5Q4.js.map} +1 -1
  41. package/dist/{chunk-JDX54X4Y.js → chunk-7GWYRVAX.js} +12 -9
  42. package/dist/chunk-7GWYRVAX.js.map +1 -0
  43. package/dist/{chunk-46COM7M5.js → chunk-7OBGSR7O.js} +5 -5
  44. package/dist/chunk-7OBGSR7O.js.map +1 -0
  45. package/dist/{chunk-2RFOFHSM.js → chunk-BKF3UFF4.js} +21 -9
  46. package/dist/chunk-BKF3UFF4.js.map +1 -0
  47. package/dist/{chunk-KOVLSBXK.js → chunk-BMQKMOQY.js} +81 -79
  48. package/dist/chunk-BMQKMOQY.js.map +1 -0
  49. package/dist/{chunk-J2TITSXF.js → chunk-BQRRBGDE.js} +2 -2
  50. package/dist/{chunk-J2TITSXF.js.map → chunk-BQRRBGDE.js.map} +1 -1
  51. package/dist/{chunk-5ESCS2OS.js → chunk-C32BRO2W.js} +67 -35
  52. package/dist/chunk-C32BRO2W.js.map +1 -0
  53. package/dist/{chunk-GZWJGNNN.js → chunk-DEYYRFQU.js} +3 -3
  54. package/dist/chunk-DEYYRFQU.js.map +1 -0
  55. package/dist/{chunk-YX3UWPJ5.js → chunk-IEJ5IOC3.js} +27 -49
  56. package/dist/chunk-IEJ5IOC3.js.map +1 -0
  57. package/dist/chunk-IERB3UXJ.js +215 -0
  58. package/dist/chunk-IERB3UXJ.js.map +1 -0
  59. package/dist/{chunk-FVTV7M76.js → chunk-IFGTRL2I.js} +3 -3
  60. package/dist/chunk-IFGTRL2I.js.map +1 -0
  61. package/dist/{chunk-LJ52ZKIU.js → chunk-JIQLLZ65.js} +203 -39
  62. package/dist/chunk-JIQLLZ65.js.map +1 -0
  63. package/dist/{chunk-Z3M5K67G.js → chunk-KL2MQ6WI.js} +114 -63
  64. package/dist/chunk-KL2MQ6WI.js.map +1 -0
  65. package/dist/{chunk-6FNCZYJY.js → chunk-MBOR7D65.js} +3 -3
  66. package/dist/{chunk-6FNCZYJY.js.map → chunk-MBOR7D65.js.map} +1 -1
  67. package/dist/{chunk-QAVZOJCV.js → chunk-OVRSNIKJ.js} +2 -2
  68. package/dist/chunk-OVRSNIKJ.js.map +1 -0
  69. package/dist/{chunk-DQWREFRQ.js → chunk-PAYAFNXG.js} +22 -3
  70. package/dist/chunk-PAYAFNXG.js.map +1 -0
  71. package/dist/{chunk-D3VO6WNC.js → chunk-PRLD7EXG.js} +3 -3
  72. package/dist/chunk-PRLD7EXG.js.map +1 -0
  73. package/dist/{chunk-N6TA6RSH.js → chunk-PY7AQRGH.js} +59 -13
  74. package/dist/chunk-PY7AQRGH.js.map +1 -0
  75. package/dist/{chunk-NELZIQ2E.js → chunk-QDJKE557.js} +20 -3
  76. package/dist/chunk-QDJKE557.js.map +1 -0
  77. package/dist/{chunk-OYRW5RCM.js → chunk-QHXS3YDV.js} +9 -9
  78. package/dist/chunk-QHXS3YDV.js.map +1 -0
  79. package/dist/{chunk-2F3RUZXC.js → chunk-RTAIGPTF.js} +161 -106
  80. package/dist/chunk-RTAIGPTF.js.map +1 -0
  81. package/dist/{chunk-IPUYL6TD.js → chunk-TV72ZJYN.js} +8 -5
  82. package/dist/{chunk-IPUYL6TD.js.map → chunk-TV72ZJYN.js.map} +1 -1
  83. package/dist/{chunk-ICS76R4T.js → chunk-W7W66MDZ.js} +10 -8
  84. package/dist/chunk-W7W66MDZ.js.map +1 -0
  85. package/dist/{chunk-JQBHCJ6N.js → chunk-WD4LP66U.js} +329 -121
  86. package/dist/chunk-WD4LP66U.js.map +1 -0
  87. package/dist/{chunk-AFLH7B64.js → chunk-XGLGS5B4.js} +3 -3
  88. package/dist/{chunk-AFLH7B64.js.map → chunk-XGLGS5B4.js.map} +1 -1
  89. package/dist/{chunk-HIIARTRZ.js → chunk-YDTW4GT6.js} +450 -207
  90. package/dist/chunk-YDTW4GT6.js.map +1 -0
  91. package/dist/{chunk-2XY6732A.js → chunk-YRU4WB6Y.js} +5 -5
  92. package/dist/chunk-YRU4WB6Y.js.map +1 -0
  93. package/dist/{chunk-542K7SR6.js → chunk-Z5DI7PDG.js} +173 -90
  94. package/dist/chunk-Z5DI7PDG.js.map +1 -0
  95. package/dist/{chunk-KLNL7QHN.js → chunk-ZAP2BDHG.js} +30 -5
  96. package/dist/chunk-ZAP2BDHG.js.map +1 -0
  97. package/dist/{chunk-GCJXPUHG.js → chunk-ZONCCO5N.js} +9 -4
  98. package/dist/chunk-ZONCCO5N.js.map +1 -0
  99. package/dist/{chunk-ODPII24X.js → chunk-ZYDE52WE.js} +3 -3
  100. package/dist/{chunk-ODPII24X.js.map → chunk-ZYDE52WE.js.map} +1 -1
  101. package/dist/cli/index.js +566 -425
  102. package/dist/cli/index.js.map +1 -1
  103. package/dist/cli/src/commands/complete-resolvers.d.ts.map +1 -1
  104. package/dist/cli/src/commands/config.d.ts.map +1 -1
  105. package/dist/cli/src/commands/connector.d.ts +7 -0
  106. package/dist/cli/src/commands/connector.d.ts.map +1 -1
  107. package/dist/cli/src/commands/flow.d.ts +3 -2
  108. package/dist/cli/src/commands/flow.d.ts.map +1 -1
  109. package/dist/cli/src/commands/npx.d.ts.map +1 -1
  110. package/dist/cli/src/commands/project.d.ts.map +1 -1
  111. package/dist/cli/src/commands/run.d.ts.map +1 -1
  112. package/dist/cli/src/commands/validate.d.ts.map +1 -1
  113. package/dist/cli/src/flow-discovery.d.ts +24 -0
  114. package/dist/cli/src/flow-discovery.d.ts.map +1 -0
  115. package/dist/cli/src/open-registry.d.ts +2 -2
  116. package/dist/cli/src/paths.d.ts +26 -9
  117. package/dist/cli/src/paths.d.ts.map +1 -1
  118. package/dist/cli/src/skill-walker.d.ts +9 -5
  119. package/dist/cli/src/skill-walker.d.ts.map +1 -1
  120. package/dist/connectors/config.js +8 -7
  121. package/dist/connectors/index.js +13 -12
  122. package/dist/connectors/rclone-config.js +1 -1
  123. package/dist/connectors/src/connector-manager.d.ts +24 -2
  124. package/dist/connectors/src/connector-manager.d.ts.map +1 -1
  125. package/dist/connectors/src/connector-prompt.d.ts.map +1 -1
  126. package/dist/connectors/src/connector-registry.d.ts +3 -3
  127. package/dist/connectors/src/credential-helper-script.d.ts.map +1 -1
  128. package/dist/connectors/src/index.d.ts +4 -2
  129. package/dist/connectors/src/index.d.ts.map +1 -1
  130. package/dist/connectors/src/managed-gitconfig.d.ts.map +1 -1
  131. package/dist/connectors/src/mount-placeholder.d.ts +68 -0
  132. package/dist/connectors/src/mount-placeholder.d.ts.map +1 -0
  133. package/dist/connectors/src/rclone-config/googledrive.d.ts +1 -1
  134. package/dist/core/discovery.js +1 -1
  135. package/dist/core/index.js +7 -6
  136. package/dist/core/manifest.js +2 -2
  137. package/dist/core/models.js +1 -1
  138. package/dist/core/publish-manifest.d.ts +2 -0
  139. package/dist/core/publish-manifest.js +5 -0
  140. package/dist/core/publish-manifest.js.map +1 -0
  141. package/dist/core/runtime-assets.js +5 -4
  142. package/dist/core/src/discovery.d.ts +27 -0
  143. package/dist/core/src/discovery.d.ts.map +1 -1
  144. package/dist/core/src/index.d.ts +9 -6
  145. package/dist/core/src/index.d.ts.map +1 -1
  146. package/dist/core/src/lock.d.ts.map +1 -1
  147. package/dist/core/src/manifest-yaml-editor.d.ts +62 -0
  148. package/dist/core/src/manifest-yaml-editor.d.ts.map +1 -0
  149. package/dist/core/src/models.d.ts +16 -3
  150. package/dist/core/src/models.d.ts.map +1 -1
  151. package/dist/core/src/publish-manifest.d.ts +160 -0
  152. package/dist/core/src/publish-manifest.d.ts.map +1 -0
  153. package/dist/core/src/repo-manager.d.ts +9 -1
  154. package/dist/core/src/repo-manager.d.ts.map +1 -1
  155. package/dist/core/src/runtime-assets.d.ts +80 -29
  156. package/dist/core/src/runtime-assets.d.ts.map +1 -1
  157. package/dist/core/src/walker.d.ts +19 -6
  158. package/dist/core/src/walker.d.ts.map +1 -1
  159. package/dist/core/src/workspace-config.d.ts +30 -36
  160. package/dist/core/src/workspace-config.d.ts.map +1 -1
  161. package/dist/core/src/workspace-yaml-editor.d.ts +1 -15
  162. package/dist/core/src/workspace-yaml-editor.d.ts.map +1 -1
  163. package/dist/core/workspace-config.js +4 -3
  164. package/dist/deploy/index.js +50 -79
  165. package/dist/deploy/index.js.map +1 -1
  166. package/dist/deploy/src/targets/container-runtime.d.ts +1 -1
  167. package/dist/deploy/src/targets/container-runtime.d.ts.map +1 -1
  168. package/dist/deploy/src/targets/local.d.ts.map +1 -1
  169. package/dist/deploy/src/targets/nix.d.ts.map +1 -1
  170. package/dist/deploy/src/targets/process-handle.d.ts +7 -5
  171. package/dist/deploy/src/targets/process-handle.d.ts.map +1 -1
  172. package/dist/discovery/index.js +5 -4
  173. package/dist/discovery/src/discover-manifest.d.ts +3 -2
  174. package/dist/discovery/src/discover-manifest.d.ts.map +1 -1
  175. package/dist/discovery/src/discover.d.ts +2 -2
  176. package/dist/discovery/src/discover.d.ts.map +1 -1
  177. package/dist/discovery/src/index.d.ts +1 -1
  178. package/dist/discovery/src/index.d.ts.map +1 -1
  179. package/dist/discovery/src/source-config.d.ts +53 -12
  180. package/dist/discovery/src/source-config.d.ts.map +1 -1
  181. package/dist/discovery/src/tree-entries.d.ts +2 -2
  182. package/dist/discovery/src/tree-entries.d.ts.map +1 -1
  183. package/dist/{ensure-sources-OJUBGX6Z.js → ensure-sources-CVULUVH4.js} +12 -11
  184. package/dist/ensure-sources-CVULUVH4.js.map +1 -0
  185. package/dist/factory-assets/.skaile-source.yaml +6 -0
  186. package/dist/factory-assets/README.md +36 -0
  187. package/dist/factory-assets/bundles/workspaces-authoring/workspaces-authoring.bundle.yaml +9 -0
  188. package/dist/factory-assets/connectors/deploy/CONNECTOR.md +41 -0
  189. package/dist/{base-assets → factory-assets}/connectors/deploy/adapter.d.ts +2 -2
  190. package/dist/factory-assets/connectors/deploy/adapter.d.ts.map +1 -0
  191. package/dist/factory-assets/connectors/deploy.js +22 -0
  192. package/dist/factory-assets/connectors/devserver/CONNECTOR.md +44 -0
  193. package/dist/{base-assets → factory-assets}/connectors/devserver/adapter.d.ts +2 -2
  194. package/dist/factory-assets/connectors/devserver/adapter.d.ts.map +1 -0
  195. package/dist/factory-assets/connectors/devserver.js +22 -0
  196. package/dist/factory-assets/connectors/flow/CONNECTOR.md +47 -0
  197. package/dist/{base-assets → factory-assets}/connectors/flow/adapter.d.ts +2 -2
  198. package/dist/factory-assets/connectors/flow/adapter.d.ts.map +1 -0
  199. package/dist/factory-assets/connectors/flow/adapter.js +22 -0
  200. package/dist/factory-assets/connectors/flow/engine/engine.d.ts.map +1 -0
  201. package/dist/{base-assets → factory-assets}/connectors/flow/engine/flow-kind-provider.d.ts +1 -1
  202. package/dist/factory-assets/connectors/flow/engine/flow-kind-provider.d.ts.map +1 -0
  203. package/dist/factory-assets/connectors/flow/engine/flow-manifest.d.ts.map +1 -0
  204. package/dist/factory-assets/connectors/flow/engine/index.d.ts.map +1 -0
  205. package/dist/factory-assets/connectors/flow/engine/loader.d.ts.map +1 -0
  206. package/dist/factory-assets/connectors/flow/engine/types.d.ts.map +1 -0
  207. package/dist/factory-assets/connectors/flow/engine.js +15 -0
  208. package/dist/factory-assets/connectors/flow/index.d.ts.map +1 -0
  209. package/dist/{base-assets → factory-assets}/connectors/flow/prompt-fragments.d.ts +5 -5
  210. package/dist/factory-assets/connectors/flow/prompt-fragments.d.ts.map +1 -0
  211. package/dist/{base-assets → factory-assets}/connectors/flow/prompt-fragments.js +1 -1
  212. package/dist/{base-assets → factory-assets}/connectors/flow/run-flow.d.ts +8 -8
  213. package/dist/factory-assets/connectors/flow/run-flow.d.ts.map +1 -0
  214. package/dist/factory-assets/connectors/flow/run-flow.js +25 -0
  215. package/dist/{base-assets → factory-assets}/connectors/flow/stimulus-driver.d.ts +2 -2
  216. package/dist/factory-assets/connectors/flow/stimulus-driver.d.ts.map +1 -0
  217. package/dist/factory-assets/connectors/flow/stimulus-driver.js +4 -0
  218. package/dist/factory-assets/connectors/flow.js +22 -0
  219. package/dist/factory-assets/connectors/git/CONNECTOR.md +145 -0
  220. package/dist/{base-assets → factory-assets}/connectors/git/driver.d.ts +2 -2
  221. package/dist/factory-assets/connectors/git/driver.d.ts.map +1 -0
  222. package/dist/factory-assets/connectors/git.js +22 -0
  223. package/dist/factory-assets/connectors/gmail/CONNECTOR.md +50 -0
  224. package/dist/{base-assets → factory-assets}/connectors/gmail/adapter.d.ts +2 -2
  225. package/dist/factory-assets/connectors/gmail/adapter.d.ts.map +1 -0
  226. package/dist/factory-assets/connectors/gmail.js +22 -0
  227. package/dist/factory-assets/connectors/googledrive/CONNECTOR.md +150 -0
  228. package/dist/{base-assets → factory-assets}/connectors/googledrive/driver.d.ts +2 -2
  229. package/dist/factory-assets/connectors/googledrive/driver.d.ts.map +1 -0
  230. package/dist/factory-assets/connectors/googledrive.js +22 -0
  231. package/dist/factory-assets/connectors/local/CONNECTOR.md +40 -0
  232. package/dist/{base-assets → factory-assets}/connectors/local/driver.d.ts +2 -2
  233. package/dist/factory-assets/connectors/local/driver.d.ts.map +1 -0
  234. package/dist/factory-assets/connectors/local.js +22 -0
  235. package/dist/factory-assets/connectors/mattermost/CONNECTOR.md +65 -0
  236. package/dist/{base-assets → factory-assets}/connectors/mattermost/adapter.d.ts +2 -2
  237. package/dist/factory-assets/connectors/mattermost/adapter.d.ts.map +1 -0
  238. package/dist/factory-assets/connectors/mattermost.js +22 -0
  239. package/dist/factory-assets/connectors/memory/CONNECTOR.md +40 -0
  240. package/dist/{base-assets → factory-assets}/connectors/memory/adapter.d.ts +2 -2
  241. package/dist/factory-assets/connectors/memory/adapter.d.ts.map +1 -0
  242. package/dist/factory-assets/connectors/memory.js +22 -0
  243. package/dist/factory-assets/connectors/minio/CONNECTOR.md +68 -0
  244. package/dist/{base-assets → factory-assets}/connectors/minio/adapter.d.ts +2 -2
  245. package/dist/factory-assets/connectors/minio/adapter.d.ts.map +1 -0
  246. package/dist/factory-assets/connectors/minio.js +22 -0
  247. package/dist/factory-assets/connectors/postgres/CONNECTOR.md +46 -0
  248. package/dist/{base-assets → factory-assets}/connectors/postgres/adapter.d.ts +2 -2
  249. package/dist/factory-assets/connectors/postgres/adapter.d.ts.map +1 -0
  250. package/dist/factory-assets/connectors/postgres.js +22 -0
  251. package/dist/factory-assets/connectors/s3/CONNECTOR.md +76 -0
  252. package/dist/{base-assets → factory-assets}/connectors/s3/driver.d.ts +2 -2
  253. package/dist/factory-assets/connectors/s3/driver.d.ts.map +1 -0
  254. package/dist/factory-assets/connectors/s3.js +22 -0
  255. package/dist/factory-assets/connectors/sharepoint/CONNECTOR.md +181 -0
  256. package/dist/{base-assets → factory-assets}/connectors/sharepoint/driver.d.ts +2 -2
  257. package/dist/factory-assets/connectors/sharepoint/driver.d.ts.map +1 -0
  258. package/dist/factory-assets/connectors/sharepoint.js +22 -0
  259. package/dist/factory-assets/connectors/sqlite/CONNECTOR.md +44 -0
  260. package/dist/{base-assets → factory-assets}/connectors/sqlite/adapter.d.ts +2 -2
  261. package/dist/factory-assets/connectors/sqlite/adapter.d.ts.map +1 -0
  262. package/dist/factory-assets/connectors/sqlite.js +22 -0
  263. package/dist/factory-assets/connectors/static-server/CONNECTOR.md +41 -0
  264. package/dist/{base-assets → factory-assets}/connectors/static-server/adapter.d.ts +2 -2
  265. package/dist/factory-assets/connectors/static-server/adapter.d.ts.map +1 -0
  266. package/dist/factory-assets/connectors/static-server.js +22 -0
  267. package/dist/factory-assets/connectors/tunnel/CONNECTOR.md +40 -0
  268. package/dist/{base-assets → factory-assets}/connectors/tunnel/adapter.d.ts +2 -2
  269. package/dist/factory-assets/connectors/tunnel/adapter.d.ts.map +1 -0
  270. package/dist/factory-assets/connectors/tunnel.js +22 -0
  271. package/dist/factory-assets/connectors/webdav/CONNECTOR.md +139 -0
  272. package/dist/{base-assets → factory-assets}/connectors/webdav/driver.d.ts +2 -2
  273. package/dist/factory-assets/connectors/webdav/driver.d.ts.map +1 -0
  274. package/dist/factory-assets/connectors/webdav.js +22 -0
  275. package/dist/factory-assets/connectors/xstate/CONNECTOR.md +57 -0
  276. package/dist/{base-assets → factory-assets}/connectors/xstate/adapter.d.ts +2 -2
  277. package/dist/factory-assets/connectors/xstate/adapter.d.ts.map +1 -0
  278. package/dist/factory-assets/connectors/xstate-store/CONNECTOR.md +48 -0
  279. package/dist/{base-assets → factory-assets}/connectors/xstate-store/adapter.d.ts +2 -2
  280. package/dist/factory-assets/connectors/xstate-store/adapter.d.ts.map +1 -0
  281. package/dist/factory-assets/connectors/xstate-store.js +22 -0
  282. package/dist/factory-assets/connectors/xstate.js +22 -0
  283. package/dist/{base-assets → factory-assets}/index.d.ts +1 -1
  284. package/dist/factory-assets/index.d.ts.map +1 -0
  285. package/dist/{base-assets → factory-assets}/index.js +1 -1
  286. package/dist/factory-assets/index.js.map +1 -0
  287. package/dist/factory-assets/skaile.manifest.yaml +25 -0
  288. package/dist/factory-assets/skills/authoring-skaile-assets/SKILL.md +176 -0
  289. package/dist/factory-assets/skills/authoring-skaile-manifests/SKILL.md +243 -0
  290. package/dist/factory-assets/skills/authoring-skaile-manifests/references/dependency-standard.md +197 -0
  291. package/dist/factory-assets/skills/manifest-compliance/SKILL.md +140 -0
  292. package/dist/factory-assets/skills/skaile-author-asset/SKILL.md +239 -0
  293. package/dist/factory-assets/skills/skaile-manage-workspace/SKILL.md +168 -0
  294. package/dist/{flows-DYFTPCPM.js → flows-JZFJD5IN.js} +3 -3
  295. package/dist/{flows-DYFTPCPM.js.map → flows-JZFJD5IN.js.map} +1 -1
  296. package/dist/library/index.js +14 -5
  297. package/dist/library/src/install/install-from-manifest.d.ts.map +1 -1
  298. package/dist/library/src/library.d.ts +2 -0
  299. package/dist/library/src/library.d.ts.map +1 -1
  300. package/dist/library/src/local/library.d.ts +2 -0
  301. package/dist/library/src/local/library.d.ts.map +1 -1
  302. package/dist/library/src/local/local-catalog-source.d.ts +2 -1
  303. package/dist/library/src/local/local-catalog-source.d.ts.map +1 -1
  304. package/dist/library/src/local/sidecar-paths.d.ts +4 -4
  305. package/dist/library/src/local/sidecar-paths.d.ts.map +1 -1
  306. package/dist/library/src/local/store-paths.d.ts +4 -3
  307. package/dist/library/src/local/store-paths.d.ts.map +1 -1
  308. package/dist/library/src/pin-resolver.d.ts.map +1 -1
  309. package/dist/library/src/preset/apply.d.ts.map +1 -1
  310. package/dist/library/src/preset/placeholders.d.ts.map +1 -1
  311. package/dist/library/src/remote/remote-catalog-source.d.ts +7 -0
  312. package/dist/library/src/remote/remote-catalog-source.d.ts.map +1 -1
  313. package/dist/library/src/remote/rest-catalog-source.d.ts +7 -0
  314. package/dist/library/src/remote/rest-catalog-source.d.ts.map +1 -1
  315. package/dist/library/src/sync/manifest-writeback.d.ts +1 -1
  316. package/dist/library/src/sync/manifest-writeback.d.ts.map +1 -1
  317. package/dist/open-library-WYASW4BH.js +22 -0
  318. package/dist/{open-library-67FSSQWE.js.map → open-library-WYASW4BH.js.map} +1 -1
  319. package/dist/paths-BMW6JYW6.js +15 -0
  320. package/dist/{paths-FKKGS6BA.js.map → paths-BMW6JYW6.js.map} +1 -1
  321. package/dist/{plugin-store-IZ5SCRAV.js → plugin-store-O5VR45CA.js} +9 -8
  322. package/dist/plugin-store-O5VR45CA.js.map +1 -0
  323. package/dist/plugins/src/asset-kind-provider.d.ts +1 -1
  324. package/dist/plugins/src/catalog-source.d.ts +13 -0
  325. package/dist/plugins/src/catalog-source.d.ts.map +1 -1
  326. package/dist/resolver/index.js +1 -1
  327. package/dist/resolver/src/parser.d.ts.map +1 -1
  328. package/dist/runner/index.js +20 -19
  329. package/dist/runner/src/capability-registry.d.ts +1 -1
  330. package/dist/runner/src/capability-registry.d.ts.map +1 -1
  331. package/dist/runner/src/external-mcp.d.ts +112 -0
  332. package/dist/runner/src/external-mcp.d.ts.map +1 -0
  333. package/dist/runner/src/resource-handler.d.ts.map +1 -1
  334. package/dist/runner/src/resources.d.ts +10 -2
  335. package/dist/runner/src/resources.d.ts.map +1 -1
  336. package/dist/runner/src/serve.d.ts.map +1 -1
  337. package/dist/runner/src/session-builder.d.ts +12 -0
  338. package/dist/runner/src/session-builder.d.ts.map +1 -1
  339. package/dist/runner/src/workspace-migration.d.ts.map +1 -1
  340. package/dist/sdk/asset-manager.js +11 -10
  341. package/dist/sdk/bridge.js +4 -4
  342. package/dist/sdk/core.js +7 -6
  343. package/dist/sdk/flow.js +12 -1
  344. package/dist/sdk/index.js +23 -22
  345. package/dist/sdk/index.js.map +1 -1
  346. package/dist/sdk/resolver.js +1 -1
  347. package/dist/sdk/runner.js +20 -19
  348. package/dist/sdk/session.js +1 -1
  349. package/dist/sdk/src/flow/index.d.ts +1 -1
  350. package/dist/sdk/src/flow/index.d.ts.map +1 -1
  351. package/dist/sdk/src/workspace.d.ts +3 -2
  352. package/dist/sdk/src/workspace.d.ts.map +1 -1
  353. package/dist/sdk/telemetry.js +1 -1
  354. package/dist/secrets/index.js +1 -1
  355. package/dist/secrets/src/providers/env.d.ts.map +1 -1
  356. package/dist/secrets/src/providers/local.d.ts.map +1 -1
  357. package/dist/session/index.js +1 -1
  358. package/dist/session/src/mentions.d.ts.map +1 -1
  359. package/dist/{setup-J7CYEQOF.js → setup-YNLFR5GB.js} +13 -12
  360. package/dist/setup-YNLFR5GB.js.map +1 -0
  361. package/dist/skills-6HJ3WINN.js +7 -0
  362. package/dist/{skills-CRL3VJNN.js.map → skills-6HJ3WINN.js.map} +1 -1
  363. package/dist/store-client-CENBEASX.js +15 -0
  364. package/dist/{store-client-AEI6Y3KD.js.map → store-client-CENBEASX.js.map} +1 -1
  365. package/dist/telemetry/index.js +1 -1
  366. package/dist/telemetry/src/config.d.ts +0 -16
  367. package/dist/telemetry/src/config.d.ts.map +1 -1
  368. package/dist/tui/index.js +20 -19
  369. package/dist/tui/index.js.map +1 -1
  370. package/dist/types/manifests.js +1 -1
  371. package/dist/types/src/flow.d.ts +2 -2
  372. package/dist/types/src/install-manifest.d.ts +1 -1
  373. package/dist/types/src/install-manifest.d.ts.map +1 -1
  374. package/dist/types/src/manifests/index.d.ts +1 -1
  375. package/dist/types/src/manifests/skill.d.ts +21 -0
  376. package/dist/types/src/manifests/skill.d.ts.map +1 -1
  377. package/dist/workspace-plugin/adapters/mcp.js +4 -4
  378. package/dist/workspace-plugin/adapters/omp.js +7 -7
  379. package/dist/workspace-plugin/index.js +1 -1
  380. package/dist/workspace-plugin/src/tools/flows.d.ts.map +1 -1
  381. package/package.json +158 -151
  382. package/dist/asset-feeds-WKIKSZ6Z.js.map +0 -1
  383. package/dist/base-assets/connectors/deploy/adapter.d.ts.map +0 -1
  384. package/dist/base-assets/connectors/deploy.js +0 -21
  385. package/dist/base-assets/connectors/devserver/adapter.d.ts.map +0 -1
  386. package/dist/base-assets/connectors/devserver.js +0 -21
  387. package/dist/base-assets/connectors/flow/adapter.d.ts.map +0 -1
  388. package/dist/base-assets/connectors/flow/adapter.js +0 -21
  389. package/dist/base-assets/connectors/flow/engine/engine.d.ts.map +0 -1
  390. package/dist/base-assets/connectors/flow/engine/flow-kind-provider.d.ts.map +0 -1
  391. package/dist/base-assets/connectors/flow/engine/flow-manifest.d.ts.map +0 -1
  392. package/dist/base-assets/connectors/flow/engine/index.d.ts.map +0 -1
  393. package/dist/base-assets/connectors/flow/engine/loader.d.ts.map +0 -1
  394. package/dist/base-assets/connectors/flow/engine/types.d.ts.map +0 -1
  395. package/dist/base-assets/connectors/flow/engine.js +0 -4
  396. package/dist/base-assets/connectors/flow/index.d.ts.map +0 -1
  397. package/dist/base-assets/connectors/flow/prompt-fragments.d.ts.map +0 -1
  398. package/dist/base-assets/connectors/flow/run-flow.d.ts.map +0 -1
  399. package/dist/base-assets/connectors/flow/run-flow.js +0 -24
  400. package/dist/base-assets/connectors/flow/stimulus-driver.d.ts.map +0 -1
  401. package/dist/base-assets/connectors/flow/stimulus-driver.js +0 -4
  402. package/dist/base-assets/connectors/flow.js +0 -21
  403. package/dist/base-assets/connectors/git/driver.d.ts.map +0 -1
  404. package/dist/base-assets/connectors/git.js +0 -21
  405. package/dist/base-assets/connectors/gmail/adapter.d.ts.map +0 -1
  406. package/dist/base-assets/connectors/gmail.js +0 -21
  407. package/dist/base-assets/connectors/googledrive/driver.d.ts.map +0 -1
  408. package/dist/base-assets/connectors/googledrive.js +0 -21
  409. package/dist/base-assets/connectors/local/driver.d.ts.map +0 -1
  410. package/dist/base-assets/connectors/local.js +0 -21
  411. package/dist/base-assets/connectors/mattermost/adapter.d.ts.map +0 -1
  412. package/dist/base-assets/connectors/mattermost.js +0 -21
  413. package/dist/base-assets/connectors/memory/adapter.d.ts.map +0 -1
  414. package/dist/base-assets/connectors/memory.js +0 -21
  415. package/dist/base-assets/connectors/minio/adapter.d.ts.map +0 -1
  416. package/dist/base-assets/connectors/minio.js +0 -21
  417. package/dist/base-assets/connectors/postgres/adapter.d.ts.map +0 -1
  418. package/dist/base-assets/connectors/postgres.js +0 -21
  419. package/dist/base-assets/connectors/s3/driver.d.ts.map +0 -1
  420. package/dist/base-assets/connectors/s3.js +0 -21
  421. package/dist/base-assets/connectors/sharepoint/driver.d.ts.map +0 -1
  422. package/dist/base-assets/connectors/sharepoint.js +0 -21
  423. package/dist/base-assets/connectors/sqlite/adapter.d.ts.map +0 -1
  424. package/dist/base-assets/connectors/sqlite.js +0 -21
  425. package/dist/base-assets/connectors/static-server/adapter.d.ts.map +0 -1
  426. package/dist/base-assets/connectors/static-server.js +0 -21
  427. package/dist/base-assets/connectors/tunnel/adapter.d.ts.map +0 -1
  428. package/dist/base-assets/connectors/tunnel.js +0 -21
  429. package/dist/base-assets/connectors/webdav/driver.d.ts.map +0 -1
  430. package/dist/base-assets/connectors/webdav.js +0 -21
  431. package/dist/base-assets/connectors/xstate/adapter.d.ts.map +0 -1
  432. package/dist/base-assets/connectors/xstate-store/adapter.d.ts.map +0 -1
  433. package/dist/base-assets/connectors/xstate-store.js +0 -21
  434. package/dist/base-assets/connectors/xstate.js +0 -21
  435. package/dist/base-assets/index.d.ts.map +0 -1
  436. package/dist/base-assets/index.js.map +0 -1
  437. package/dist/chunk-2F3RUZXC.js.map +0 -1
  438. package/dist/chunk-2M3XTMOL.js +0 -23
  439. package/dist/chunk-2M3XTMOL.js.map +0 -1
  440. package/dist/chunk-2RFOFHSM.js.map +0 -1
  441. package/dist/chunk-2XY6732A.js.map +0 -1
  442. package/dist/chunk-46COM7M5.js.map +0 -1
  443. package/dist/chunk-542K7SR6.js.map +0 -1
  444. package/dist/chunk-5ESCS2OS.js.map +0 -1
  445. package/dist/chunk-D3VO6WNC.js.map +0 -1
  446. package/dist/chunk-DQWREFRQ.js.map +0 -1
  447. package/dist/chunk-FVTV7M76.js.map +0 -1
  448. package/dist/chunk-GCJXPUHG.js.map +0 -1
  449. package/dist/chunk-GZWJGNNN.js.map +0 -1
  450. package/dist/chunk-HIIARTRZ.js.map +0 -1
  451. package/dist/chunk-ICS76R4T.js.map +0 -1
  452. package/dist/chunk-JDX54X4Y.js.map +0 -1
  453. package/dist/chunk-JQBHCJ6N.js.map +0 -1
  454. package/dist/chunk-KLNL7QHN.js.map +0 -1
  455. package/dist/chunk-KOVLSBXK.js.map +0 -1
  456. package/dist/chunk-LJ52ZKIU.js.map +0 -1
  457. package/dist/chunk-M5TE6YI5.js.map +0 -1
  458. package/dist/chunk-N6TA6RSH.js.map +0 -1
  459. package/dist/chunk-NELZIQ2E.js.map +0 -1
  460. package/dist/chunk-OYRW5RCM.js.map +0 -1
  461. package/dist/chunk-QAVZOJCV.js.map +0 -1
  462. package/dist/chunk-YX3UWPJ5.js.map +0 -1
  463. package/dist/chunk-Z3M5K67G.js.map +0 -1
  464. package/dist/ensure-sources-OJUBGX6Z.js.map +0 -1
  465. package/dist/open-library-67FSSQWE.js +0 -13
  466. package/dist/paths-FKKGS6BA.js +0 -4
  467. package/dist/plugin-store-IZ5SCRAV.js.map +0 -1
  468. package/dist/setup-J7CYEQOF.js.map +0 -1
  469. package/dist/skills-CRL3VJNN.js +0 -7
  470. package/dist/store-client-AEI6Y3KD.js +0 -14
  471. /package/dist/{base-assets → factory-assets}/connectors/deploy.d.ts +0 -0
  472. /package/dist/{base-assets → factory-assets}/connectors/deploy.js.map +0 -0
  473. /package/dist/{base-assets → factory-assets}/connectors/devserver.d.ts +0 -0
  474. /package/dist/{base-assets → factory-assets}/connectors/devserver.js.map +0 -0
  475. /package/dist/{base-assets → factory-assets}/connectors/flow/adapter.js.map +0 -0
  476. /package/dist/{base-assets → factory-assets}/connectors/flow/engine/engine.d.ts +0 -0
  477. /package/dist/{base-assets → factory-assets}/connectors/flow/engine/flow-manifest.d.ts +0 -0
  478. /package/dist/{base-assets → factory-assets}/connectors/flow/engine/index.d.ts +0 -0
  479. /package/dist/{base-assets → factory-assets}/connectors/flow/engine/loader.d.ts +0 -0
  480. /package/dist/{base-assets → factory-assets}/connectors/flow/engine/types.d.ts +0 -0
  481. /package/dist/{base-assets → factory-assets}/connectors/flow/engine.d.ts +0 -0
  482. /package/dist/{base-assets → factory-assets}/connectors/flow/engine.js.map +0 -0
  483. /package/dist/{base-assets → factory-assets}/connectors/flow/index.d.ts +0 -0
  484. /package/dist/{base-assets → factory-assets}/connectors/flow/prompt-fragments.js.map +0 -0
  485. /package/dist/{base-assets → factory-assets}/connectors/flow/run-flow.js.map +0 -0
  486. /package/dist/{base-assets → factory-assets}/connectors/flow/stimulus-driver.js.map +0 -0
  487. /package/dist/{base-assets → factory-assets}/connectors/flow.d.ts +0 -0
  488. /package/dist/{base-assets → factory-assets}/connectors/flow.js.map +0 -0
  489. /package/dist/{base-assets → factory-assets}/connectors/git.d.ts +0 -0
  490. /package/dist/{base-assets → factory-assets}/connectors/git.js.map +0 -0
  491. /package/dist/{base-assets → factory-assets}/connectors/gmail.d.ts +0 -0
  492. /package/dist/{base-assets → factory-assets}/connectors/gmail.js.map +0 -0
  493. /package/dist/{base-assets → factory-assets}/connectors/googledrive.d.ts +0 -0
  494. /package/dist/{base-assets → factory-assets}/connectors/googledrive.js.map +0 -0
  495. /package/dist/{base-assets → factory-assets}/connectors/local.d.ts +0 -0
  496. /package/dist/{base-assets → factory-assets}/connectors/local.js.map +0 -0
  497. /package/dist/{base-assets → factory-assets}/connectors/mattermost.d.ts +0 -0
  498. /package/dist/{base-assets → factory-assets}/connectors/mattermost.js.map +0 -0
  499. /package/dist/{base-assets → factory-assets}/connectors/memory.d.ts +0 -0
  500. /package/dist/{base-assets → factory-assets}/connectors/memory.js.map +0 -0
  501. /package/dist/{base-assets → factory-assets}/connectors/minio.d.ts +0 -0
  502. /package/dist/{base-assets → factory-assets}/connectors/minio.js.map +0 -0
  503. /package/dist/{base-assets → factory-assets}/connectors/postgres.d.ts +0 -0
  504. /package/dist/{base-assets → factory-assets}/connectors/postgres.js.map +0 -0
  505. /package/dist/{base-assets → factory-assets}/connectors/s3.d.ts +0 -0
  506. /package/dist/{base-assets → factory-assets}/connectors/s3.js.map +0 -0
  507. /package/dist/{base-assets → factory-assets}/connectors/sharepoint.d.ts +0 -0
  508. /package/dist/{base-assets → factory-assets}/connectors/sharepoint.js.map +0 -0
  509. /package/dist/{base-assets → factory-assets}/connectors/sqlite.d.ts +0 -0
  510. /package/dist/{base-assets → factory-assets}/connectors/sqlite.js.map +0 -0
  511. /package/dist/{base-assets → factory-assets}/connectors/static-server.d.ts +0 -0
  512. /package/dist/{base-assets → factory-assets}/connectors/static-server.js.map +0 -0
  513. /package/dist/{base-assets → factory-assets}/connectors/tunnel.d.ts +0 -0
  514. /package/dist/{base-assets → factory-assets}/connectors/tunnel.js.map +0 -0
  515. /package/dist/{base-assets → factory-assets}/connectors/webdav.d.ts +0 -0
  516. /package/dist/{base-assets → factory-assets}/connectors/webdav.js.map +0 -0
  517. /package/dist/{base-assets → factory-assets}/connectors/xstate-store.d.ts +0 -0
  518. /package/dist/{base-assets → factory-assets}/connectors/xstate-store.js.map +0 -0
  519. /package/dist/{base-assets → factory-assets}/connectors/xstate.d.ts +0 -0
  520. /package/dist/{base-assets → factory-assets}/connectors/xstate.js.map +0 -0
@@ -1 +1 @@
1
- {"version":3,"sources":["../../tui/src/telemetry.ts","../../tui/src/repl-renderer.ts","../../tui/src/repl-session.ts","../../tui/src/repl.ts"],"names":["text","pc","resolve"],"mappings":"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","file":"index.js","sourcesContent":["/**\n * Local telemetry sink that emits structured events to the TUI log panel.\n *\n * Implements `TelemetryProvider` so it can be injected into `createAgentSession`\n * without any HTTP or OpenTelemetry overhead. Instead of exporting spans over a\n * network, it converts each lifecycle event (trace start/end, span start/end,\n * generation, metric) into a {@link TelemetryLogEntry} and forwards it via the\n * `onEvent` callback. The REPL uses this to optionally display timing and token\n * cost inline when `--verbose` is active.\n *\n * @docLink packages/tui/concepts#tui-telemetry-provider\n */\n\nimport { randomUUID } from \"node:crypto\";\nimport type {\n Attributes,\n GenerationEvent,\n Span,\n SpanKind,\n SpanOptions,\n SpanResult,\n TelemetryProvider,\n Trace,\n TraceOptions,\n} from \"@skaile/workspaces/telemetry\";\n\n// ── Telemetry log entry types ────────────────────────────────────────────────\n\n/**\n * A structured telemetry event emitted by {@link TuiTelemetryProvider}.\n *\n * Discriminated union over `kind`. The TUI renders a subset of these (generation,\n * span_end for tool/turn, trace lifecycle) and suppresses the rest. Used as input\n * to {@link formatTelemetryEntry} and {@link renderLog}.\n *\n * @docLink packages/tui/concepts#tui-telemetry-provider\n */\nexport type TelemetryLogEntry =\n | { kind: \"trace_start\"; traceId: string; name: string; traceKind: string }\n | { kind: \"trace_end\"; traceId: string; status: string; durationMs: number }\n | { kind: \"span_start\"; spanId: string; name: string; spanKind: SpanKind }\n | {\n kind: \"span_end\";\n spanId: string;\n name: string;\n spanKind: SpanKind;\n status: string;\n durationMs: number;\n }\n | {\n kind: \"generation\";\n model: string;\n inputTokens: number;\n outputTokens: number;\n costUsd: number;\n durationMs: number;\n }\n | { kind: \"metric\"; name: string; value: number };\n\n// ── Internal span tracking ───────────────────────────────────────────────────\n\ninterface SpanRecord {\n spanId: string;\n traceId: string;\n name: string;\n spanKind: SpanKind;\n startTime: number;\n}\n\n// ── Provider ─────────────────────────────────────────────────────────────────\n\nexport class TuiTelemetryProvider implements TelemetryProvider {\n private readonly onEvent: (entry: TelemetryLogEntry) => void;\n private readonly spans = new Map<string, SpanRecord>();\n private readonly traces = new Map<string, { name: string; startTime: number }>();\n\n constructor(onEvent: (entry: TelemetryLogEntry) => void) {\n this.onEvent = onEvent;\n }\n\n startTrace(opts: TraceOptions): Trace {\n const traceId = randomUUID().replace(/-/g, \"\");\n const rootSpan: Span = { spanId: randomUUID().slice(0, 16), traceId };\n\n this.traces.set(traceId, { name: opts.name, startTime: Date.now() });\n this.onEvent({ kind: \"trace_start\", traceId, name: opts.name, traceKind: opts.kind });\n\n return { traceId, rootSpan };\n }\n\n endTrace(trace: Trace, result?: SpanResult): void {\n const record = this.traces.get(trace.traceId);\n if (record) {\n const durationMs = Date.now() - record.startTime;\n this.onEvent({\n kind: \"trace_end\",\n traceId: trace.traceId,\n status: result?.status ?? \"ok\",\n durationMs,\n });\n this.traces.delete(trace.traceId);\n }\n }\n\n startSpan(parent: Trace | Span, opts: SpanOptions): Span {\n const spanId = randomUUID().slice(0, 16);\n const traceId = parent.traceId;\n const span: Span = { spanId, traceId };\n\n this.spans.set(spanId, {\n spanId,\n traceId,\n name: opts.name,\n spanKind: opts.kind,\n startTime: Date.now(),\n });\n\n this.onEvent({ kind: \"span_start\", spanId, name: opts.name, spanKind: opts.kind });\n return span;\n }\n\n endSpan(span: Span, result?: SpanResult): void {\n const record = this.spans.get(span.spanId);\n if (record) {\n const durationMs = Date.now() - record.startTime;\n this.onEvent({\n kind: \"span_end\",\n spanId: span.spanId,\n name: record.name,\n spanKind: record.spanKind,\n status: result?.status ?? \"ok\",\n durationMs,\n });\n this.spans.delete(span.spanId);\n }\n }\n\n addEvent(_span: Span, _name: string, _attrs?: Attributes): void {\n // Silently ignored — events are not surfaced in TUI\n }\n\n logGeneration(_span: Span, generation: GenerationEvent): void {\n this.onEvent({\n kind: \"generation\",\n model: generation.model,\n inputTokens: generation.inputTokens ?? 0,\n outputTokens: generation.outputTokens ?? 0,\n costUsd: generation.costUsd ?? 0,\n durationMs: generation.durationMs,\n });\n }\n\n recordMetric(name: string, value: number, _tags?: Record<string, string>): void {\n this.onEvent({ kind: \"metric\", name, value });\n }\n\n async flush(): Promise<void> {}\n async shutdown(): Promise<void> {\n this.spans.clear();\n this.traces.clear();\n }\n}\n\n// ── Log formatting ───────────────────────────────────────────────────────────\n\n/**\n * Format a {@link TelemetryLogEntry} into a human-readable string for the log panel.\n *\n * Produces plain (no ANSI) strings suitable for structured logging or non-terminal\n * output. The format mirrors {@link renderLog} but without colour codes: generation\n * entries include model, token counts, cost, and duration; span_end entries for\n * `tool_call` and `agent_turn` kinds include name, status, and duration; trace\n * lifecycle entries include name and elapsed time. Returns `null` for entry kinds\n * that should not be displayed.\n *\n * @param entry - The structured telemetry event to format.\n * @returns Human-readable string, or `null` if the entry should be suppressed.\n *\n * @docLink packages/tui/concepts#tui-telemetry-provider\n */\nexport function formatTelemetryEntry(entry: TelemetryLogEntry): string | null {\n switch (entry.kind) {\n case \"generation\": {\n const tokens = `${entry.inputTokens}↑ ${entry.outputTokens}↓`;\n const cost = entry.costUsd > 0 ? ` $${entry.costUsd.toFixed(4)}` : \"\";\n const dur = entry.durationMs > 0 ? ` ${(entry.durationMs / 1000).toFixed(1)}s` : \"\";\n return `[gen] ${entry.model} ${tokens}${cost}${dur}`;\n }\n case \"span_end\":\n if (entry.spanKind === \"tool_call\") {\n return `[tool] ${entry.name} ${entry.status} ${entry.durationMs}ms`;\n }\n if (entry.spanKind === \"agent_turn\") {\n return `[turn] ${entry.name} ${(entry.durationMs / 1000).toFixed(1)}s`;\n }\n return null;\n case \"trace_start\":\n return `[trace] ${entry.name} started`;\n case \"trace_end\":\n return `[trace] done ${(entry.durationMs / 1000).toFixed(1)}s`;\n default:\n return null;\n }\n}\n","import pc from \"picocolors\";\nimport type { OutputLine } from \"@skaile/workspaces\";\nimport type { TelemetryLogEntry } from \"./telemetry.js\";\n\n/**\n * Render a single OutputLine to an ANSI-colored string for terminal display.\n *\n * Each `OutputLine` variant is mapped to a distinct colour: user input (cyan/bold),\n * agent text (plain), tool calls (blue italic), questions (yellow), errors (red),\n * status/system messages (dim italic), subagent lifecycle (blue/green italic), and\n * separator lines (dim dashes). Returns an empty string for unrecognised variants.\n *\n * @param line - The typed output line to render.\n * @returns ANSI-coloured string ready for terminal output.\n *\n * @docLink packages/tui/concepts#repl-renderer\n */\nexport function renderLine(line: OutputLine): string {\n switch (line.type) {\n case \"user\":\n return pc.cyan(pc.bold(`> ${line.content}`));\n case \"text\":\n return line.content;\n case \"tool\":\n return pc.blue(pc.italic(` Running: \\`${line.name}\\`...`));\n case \"question\":\n return pc.yellow(`?? ${line.text}\\n Reply below.`);\n case \"error\":\n return pc.red(`Error: ${line.message}`);\n case \"status\":\n return pc.dim(pc.italic(`${line.phase}...`));\n case \"system\":\n return pc.dim(pc.italic(line.message));\n case \"subagent\": {\n const icon = line.status === \"started\" ? \"▶\" : \"✓\";\n const color = line.status === \"started\" ? pc.blue : pc.green;\n return color(pc.italic(` ${icon} ${line.name}: ${line.description}`));\n }\n case \"separator\":\n return pc.dim(\"─\".repeat(60));\n default:\n return \"\";\n }\n}\n\n/**\n * Render a telemetry log entry to an ANSI string, or null to suppress.\n *\n * Formats `generation` entries with model name, token counts, cost, and duration;\n * `span_end` entries for `tool_call` and `agent_turn` kinds; and `trace_start` /\n * `trace_end` lifecycle entries. All output is styled dim for visual de-emphasis.\n * Returns `null` for entry kinds that should not appear in the log panel.\n *\n * @param entry - The structured telemetry event to render.\n * @returns Dim ANSI string, or `null` if the entry should be suppressed.\n *\n * @docLink packages/tui/concepts#repl-renderer\n */\nexport function renderLog(entry: TelemetryLogEntry): string | null {\n switch (entry.kind) {\n case \"generation\": {\n const tokens = `${entry.inputTokens}↑ ${entry.outputTokens}↓`;\n const cost = entry.costUsd > 0 ? ` $${entry.costUsd.toFixed(4)}` : \"\";\n const dur = entry.durationMs > 0 ? ` ${(entry.durationMs / 1000).toFixed(1)}s` : \"\";\n return pc.dim(`[gen] ${entry.model} ${tokens}${cost}${dur}`);\n }\n case \"span_end\":\n if (entry.spanKind === \"tool_call\") {\n return pc.dim(`[tool] ${entry.name} ${entry.status} ${entry.durationMs}ms`);\n }\n if (entry.spanKind === \"agent_turn\") {\n return pc.dim(`[turn] ${entry.name} ${(entry.durationMs / 1000).toFixed(1)}s`);\n }\n return null;\n case \"trace_start\":\n return pc.dim(`[trace] ${entry.name} started`);\n case \"trace_end\":\n return pc.dim(`[trace] done ${(entry.durationMs / 1000).toFixed(1)}s`);\n default:\n return null;\n }\n}\n","/**\n * Slim event bridge: maps AgentDriver events to rendered console lines.\n * No React, no ink, no UI state — just event → string → callback.\n */\n\nimport type { AgentEvent } from \"@skaile/workspaces/bridge\";\nimport type { AgentSession } from \"@skaile/workspaces/runner\";\nimport type { OutputLine, SessionState } from \"@skaile/workspaces\";\nimport { renderLine, renderLog } from \"./repl-renderer.js\";\nimport type { TelemetryLogEntry } from \"./telemetry.js\";\n\n/**\n * Handle returned by {@link createReplSession} for controlling an active REPL session.\n *\n * `state` reflects the current lifecycle state (`idle`, `active`, or `stopped`).\n * Call `send(text)` to forward a user message to the agent driver; the state\n * transitions to `active` until the driver emits `agent_end`. Call `stop()` to\n * terminate the driver and dispose of the underlying agent session.\n *\n * @docLink packages/tui/concepts#repl-session\n */\nexport interface ReplSessionHandle {\n readonly state: SessionState;\n send(text: string): void;\n stop(): void;\n}\n\n/**\n * Options for {@link createReplSession}.\n *\n * @param session - The agent session returned by `createAgentSession`.\n * @param onLine - Callback invoked with an ANSI-rendered string for each output line.\n * @param onLog - Callback invoked with a log string for each telemetry event (if verbose).\n * @param onStateChange - Callback invoked whenever the session state changes.\n *\n * @docLink packages/tui/concepts#repl-session\n */\nexport interface CreateReplSessionOpts {\n session: AgentSession;\n onLine?: (line: string) => void;\n onLog?: (line: string) => void;\n onStateChange?: (state: SessionState) => void;\n}\n\n/**\n * Create a slim event bridge that maps `AgentEvent` stream to rendered console lines.\n *\n * Subscribes to `agent-event` on the session driver and converts each event type\n * (`message_update`, `tool_call`, `error`, `agent_end`, `turn_end`, `subagent`) to\n * an `OutputLine`, renders it via {@link renderLine}, and forwards the string to\n * `opts.onLine`. Text content is buffered internally and flushed line-by-line as\n * newlines arrive. Returns a {@link ReplSessionHandle} for sending messages and\n * stopping the session.\n *\n * @param opts - Session, output callbacks, and state-change hook.\n * @returns Handle for sending messages and observing session state.\n *\n * @docLink packages/tui/concepts#repl-session\n */\nexport function createReplSession(opts: CreateReplSessionOpts): ReplSessionHandle {\n const { session, onLine, onLog, onStateChange } = opts;\n\n let state: SessionState = \"idle\";\n let textBuffer = \"\";\n\n function emit(outputLine: OutputLine) {\n const rendered = renderLine(outputLine);\n if (rendered) onLine?.(rendered);\n }\n\n function setState(s: SessionState) {\n state = s;\n onStateChange?.(s);\n }\n\n session.driver.on(\"agent-event\", (event: AgentEvent) => {\n switch (event.type) {\n case \"message_update\": {\n const delta = (event as any)._textDelta as string | undefined;\n if (delta) {\n textBuffer += delta;\n const lines = textBuffer.split(\"\\n\");\n if (lines.length > 1) {\n for (let i = 0; i < lines.length - 1; i++) {\n emit({ type: \"text\", content: lines[i]! });\n }\n textBuffer = lines[lines.length - 1]!;\n }\n }\n break;\n }\n\n case \"tool_call\": {\n const name = (event as any).tool?.name ?? (event as any).name ?? \"unknown\";\n emit({ type: \"tool\", name });\n break;\n }\n\n case \"error\": {\n const msg = (event as any).error ?? \"Unknown error\";\n emit({ type: \"error\", message: String(msg) });\n if ((event as any).fatal) setState(\"stopped\");\n break;\n }\n\n case \"agent_end\":\n case \"turn_end\": {\n if (textBuffer.trim()) {\n emit({ type: \"text\", content: textBuffer });\n }\n textBuffer = \"\";\n emit({ type: \"separator\" });\n if (event.type === \"agent_end\") setState(\"idle\");\n break;\n }\n\n case \"session_info\":\n break;\n\n default: {\n const raw = event as any;\n if (raw.type === \"subagent\") {\n const status = raw.status === \"finished\" ? \"finished\" : \"started\";\n emit({\n type: \"subagent\",\n name: raw.name ?? \"subagent\",\n status,\n description: raw.description ?? \"\",\n });\n }\n break;\n }\n }\n });\n\n return {\n get state() {\n return state;\n },\n\n send(text: string) {\n if (state === \"stopped\") return;\n setState(\"active\");\n textBuffer = \"\";\n session.driver.prompt(text).catch((err: Error) => {\n emit({ type: \"error\", message: err.message });\n setState(\"idle\");\n });\n },\n\n stop() {\n setState(\"stopped\");\n session.driver.kill();\n session.dispose();\n },\n };\n}\n\n/**\n * Create a telemetry sink that pipes {@link TelemetryLogEntry} events to the log callback.\n *\n * Wraps {@link renderLog} so that only displayable entries (generation, span_end for\n * tool/turn, trace lifecycle) are forwarded. Entries that `renderLog` returns `null`\n * for are silently suppressed. The returned function is used in `startRepl` to drain\n * buffered telemetry and to wire up live forwarding during the session.\n *\n * @param onLog - Callback invoked with an ANSI-rendered log string.\n * @returns A function that accepts a `TelemetryLogEntry` and routes it to `onLog`.\n *\n * @docLink packages/tui/concepts#repl-session\n */\nexport function createTelemetrySink(\n onLog: (line: string) => void,\n): (entry: TelemetryLogEntry) => void {\n return (entry) => {\n const text = renderLog(entry);\n if (text) onLog(text);\n };\n}\n","/**\n * Simple @clack-based agent REPL.\n * No React, no ink, no alt-screen — just a scrolling terminal.\n *\n * Design: clack's text() blocks until user submits, so agent output\n * flows naturally between prompts — no readline interleaving issues.\n * Loop: await text() → send → await idle → loop\n */\n\nimport * as p from \"@clack/prompts\";\nimport { resolve, join, basename, dirname, parse } from \"node:path\";\nimport { existsSync, readFileSync, statSync, readdirSync } from \"node:fs\";\nimport type { Dirent } from \"node:fs\";\nimport pc from \"picocolors\";\nimport { createAgentSession } from \"@skaile/workspaces/runner\";\nimport { resolveAgentDir, resolveSettings } from \"@skaile/workspaces/core\";\nimport { loadConnectorDeclarations } from \"@skaile/workspaces/connectors\";\nimport { TuiTelemetryProvider } from \"./telemetry.js\";\nimport type { TelemetryLogEntry } from \"./telemetry.js\";\nimport { createReplSession, createTelemetrySink } from \"./repl-session.js\";\n\nfunction findAiAssetsRoot(startDir: string): string | undefined {\n let current = resolve(startDir);\n const root = parse(current).root;\n while (current !== root) {\n const candidate = join(current, \"ai-assets\");\n try {\n if (statSync(candidate).isDirectory()) return candidate;\n } catch {}\n const parent = dirname(current);\n if (parent === current) break;\n current = parent;\n }\n return undefined;\n}\n\nfunction countSkills(projectDir: string): number {\n const aiAssetsRoot = findAiAssetsRoot(projectDir);\n if (!aiAssetsRoot) return 0;\n let count = 0;\n const walk = (dir: string) => {\n let entries: Dirent[];\n try {\n entries = readdirSync(dir, { withFileTypes: true });\n } catch {\n return;\n }\n if (entries.some((e) => e.isFile() && e.name === \"SKILL.md\")) {\n count++;\n return;\n }\n for (const e of entries) {\n if (e.isDirectory()) walk(join(dir, e.name));\n }\n };\n walk(aiAssetsRoot);\n return count;\n}\n\n/**\n * Options for {@link startRepl}.\n *\n * @param projectDir - Absolute path to the project root. Used to locate the agent dir, settings, and skill count.\n * @param cwd - Working directory passed to the agent process. Defaults to `projectDir`.\n * @param driver - Agent driver override (`\"omp\"` or `\"claude-sdk\"`). Falls back to settings resolution.\n * @param model - Model name passed to the agent driver.\n * @param provider - Provider name passed to the agent driver.\n * @param resume - When `true`, load the last session ID from `.skaile/last_session` and resume it.\n * @param resumeSessionId - Explicit session ID to resume. Takes precedence over `resume`.\n * @param verbose - When `true`, show telemetry log lines inline between prompts. Default: `false`.\n *\n * @docLink packages/tui/concepts#start-repl\n */\nexport interface ReplOptions {\n projectDir: string;\n cwd?: string;\n driver?: string;\n model?: string;\n provider?: string;\n resume?: boolean;\n resumeSessionId?: string;\n /** When true, show telemetry log lines inline. Default: false. */\n verbose?: boolean;\n}\n\n/**\n * Start the scrolling REPL for an interactive agent conversation.\n *\n * Initialises the agent session (including OMP extension injection when the driver is `omp`),\n * prints a banner with project metadata, then enters a `@clack/prompts` input loop.\n * Each iteration awaits user input, forwards it to the agent via {@link createReplSession},\n * and blocks until the agent signals `idle` or `stopped`. Slash commands (`/help`, `/log`,\n * `/quit`) are handled before the message reaches the agent.\n *\n * @param opts - Configuration for the REPL session.\n * @returns Resolves when the session ends (user quit or fatal error).\n *\n * @docLink packages/tui/concepts#start-repl\n */\nexport async function startRepl(opts: ReplOptions): Promise<void> {\n const projectDir = resolve(opts.projectDir);\n const agentCwd = opts.cwd ? resolve(opts.cwd) : projectDir;\n\n // ── OMP workspace extension injection ──────────────────────────────\n const settings = await resolveSettings(projectDir, { driver: opts.driver });\n const resolvedDriver = settings.driver ?? \"omp\";\n let ompCleanup: (() => void) | undefined;\n\n if (resolvedDriver === \"omp\") {\n const fsAsync = await import(\"node:fs/promises\");\n const pathMod = await import(\"node:path\");\n const { WorkspacePlugin } = await import(\"@skaile/workspaces/workspace-plugin\");\n\n const plugin = new WorkspacePlugin({ projectDir });\n const src = await plugin.buildOmpExtensionSource();\n const extPath = pathMod.default.join(agentCwd, \".omp\", \"extensions\", \"skaile.ts\");\n await fsAsync.default.mkdir(pathMod.default.dirname(extPath), { recursive: true });\n await fsAsync.default.writeFile(extPath, src);\n ompCleanup = () => {\n fsAsync.default.unlink(extPath).catch(() => {});\n };\n }\n\n // ── Session resume ─────────────────────────────────────────────────\n const SESSION_FILE = join(projectDir, \".skaile\", \"last_session\");\n let resumeSessionId = opts.resumeSessionId;\n if (!resumeSessionId && opts.resume) {\n try {\n if (existsSync(SESSION_FILE)) {\n resumeSessionId = readFileSync(SESSION_FILE, \"utf-8\").trim() || undefined;\n }\n } catch {}\n }\n\n // ── Telemetry ──────────────────────────────────────────────────────\n const telemetryBuffer: TelemetryLogEntry[] = [];\n const telemetry = new TuiTelemetryProvider((entry) => {\n telemetryBuffer.push(entry);\n });\n const trace = telemetry.startTrace({ name: \"skaile-repl\", kind: \"chat_session\" });\n\n // ── Create agent session ───────────────────────────────────────────\n const agentDir = resolveAgentDir(projectDir) ?? undefined;\n const session = await createAgentSession({\n projectDir,\n cwd: agentCwd !== projectDir ? agentCwd : undefined,\n agentDir,\n driver: opts.driver ?? resolvedDriver,\n model: opts.model,\n provider: opts.provider,\n resumeSessionId,\n telemetry,\n trace,\n onLog: () => {},\n });\n\n await session.driver.start();\n\n // ── Output + state tracking ────────────────────────────────────────\n let showLog = opts.verbose ?? false;\n let idleResolve: (() => void) | undefined;\n\n const write = (line: string) => {\n p.log.message(line);\n };\n\n const writeLog = (line: string) => {\n if (showLog) p.log.step(line);\n };\n\n // ── Create REPL session ────────────────────────────────────────────\n const replSession = createReplSession({\n session,\n onLine: write,\n onLog: writeLog,\n onStateChange: (state) => {\n if (state === \"idle\" || state === \"stopped\") {\n idleResolve?.();\n }\n },\n });\n\n // Drain buffered telemetry\n const sink = createTelemetrySink(writeLog);\n for (const entry of telemetryBuffer) sink(entry);\n telemetryBuffer.length = 0;\n\n // ── Banner ─────────────────────────────────────────────────────────\n const displayModel = session.model ?? opts.model ?? \"default\";\n const displayDriver = session.driverType ?? resolvedDriver;\n\n const skillCount = countSkills(projectDir);\n let connectorCount = 0;\n try {\n connectorCount = loadConnectorDeclarations(projectDir).length;\n } catch {}\n const agentName = agentDir ? basename(agentDir) : \"(none)\";\n\n p.intro(`${pc.bold(\"skaile repl\")} ${pc.dim(`— ${displayDriver} / ${displayModel}`)}`);\n p.log.info(pc.dim(`Project: ${projectDir}`));\n p.log.info(pc.dim(`Agent: ${agentName} · ${skillCount} skills · ${connectorCount} connectors`));\n if (resumeSessionId) p.log.info(pc.dim(`Resumed: ${resumeSessionId.slice(0, 12)}...`));\n p.log.info(pc.dim(\"Type /help for commands, Ctrl+C to quit.\"));\n\n // ── REPL loop ──────────────────────────────────────────────────────\n function shutdown() {\n replSession.stop();\n telemetry.endTrace(trace, { status: \"ok\" });\n void telemetry.shutdown();\n ompCleanup?.();\n p.outro(\"Bye.\");\n process.exit(0);\n }\n\n process.on(\"SIGINT\", shutdown);\n process.on(\"SIGTERM\", shutdown);\n\n while (replSession.state !== \"stopped\") {\n const input = await p.text({\n message: pc.gray(\">>>\"),\n placeholder: \"\",\n });\n\n if (p.isCancel(input)) {\n shutdown();\n return;\n }\n\n const trimmed = (input as string).trim();\n if (!trimmed) continue;\n\n if (trimmed === \"/quit\" || trimmed === \"/q\") {\n shutdown();\n return;\n }\n if (trimmed === \"/help\" || trimmed === \"/h\" || trimmed === \"/?\") {\n p.log.info(\n [\n \" /help, /h — this help\",\n \" /log — toggle verbose log output\",\n \" /quit, /q — exit\",\n \" Ctrl+C — exit\",\n ].join(\"\\n\"),\n );\n continue;\n }\n if (trimmed === \"/log\") {\n showLog = !showLog;\n p.log.info(`Log output: ${showLog ? \"on\" : \"off\"}`);\n continue;\n }\n\n const idlePromise = new Promise<void>((resolve) => {\n idleResolve = resolve;\n });\n replSession.send(trimmed);\n await idlePromise;\n }\n\n shutdown();\n}\n"]}
1
+ {"version":3,"sources":["../../tui/src/telemetry.ts","../../tui/src/repl-renderer.ts","../../tui/src/repl-session.ts","../../tui/src/repl.ts"],"names":["text","pc","resolve"],"mappings":"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","file":"index.js","sourcesContent":["/**\n * Local telemetry sink that emits structured events to the TUI log panel.\n *\n * Implements `TelemetryProvider` so it can be injected into `createAgentSession`\n * without any HTTP or OpenTelemetry overhead. Instead of exporting spans over a\n * network, it converts each lifecycle event (trace start/end, span start/end,\n * generation, metric) into a {@link TelemetryLogEntry} and forwards it via the\n * `onEvent` callback. The REPL uses this to optionally display timing and token\n * cost inline when `--verbose` is active.\n *\n * @docLink packages/tui/concepts#tui-telemetry-provider\n */\n\nimport { randomUUID } from \"node:crypto\";\nimport type {\n Attributes,\n GenerationEvent,\n Span,\n SpanKind,\n SpanOptions,\n SpanResult,\n TelemetryProvider,\n Trace,\n TraceOptions,\n} from \"@skaile/workspaces/telemetry\";\n\n// ── Telemetry log entry types ────────────────────────────────────────────────\n\n/**\n * A structured telemetry event emitted by {@link TuiTelemetryProvider}.\n *\n * Discriminated union over `kind`. The TUI renders a subset of these (generation,\n * span_end for tool/turn, trace lifecycle) and suppresses the rest. Used as input\n * to {@link formatTelemetryEntry} and {@link renderLog}.\n *\n * @docLink packages/tui/concepts#tui-telemetry-provider\n */\nexport type TelemetryLogEntry =\n | { kind: \"trace_start\"; traceId: string; name: string; traceKind: string }\n | { kind: \"trace_end\"; traceId: string; status: string; durationMs: number }\n | { kind: \"span_start\"; spanId: string; name: string; spanKind: SpanKind }\n | {\n kind: \"span_end\";\n spanId: string;\n name: string;\n spanKind: SpanKind;\n status: string;\n durationMs: number;\n }\n | {\n kind: \"generation\";\n model: string;\n inputTokens: number;\n outputTokens: number;\n costUsd: number;\n durationMs: number;\n }\n | { kind: \"metric\"; name: string; value: number };\n\n// ── Internal span tracking ───────────────────────────────────────────────────\n\ninterface SpanRecord {\n spanId: string;\n traceId: string;\n name: string;\n spanKind: SpanKind;\n startTime: number;\n}\n\n// ── Provider ─────────────────────────────────────────────────────────────────\n\nexport class TuiTelemetryProvider implements TelemetryProvider {\n private readonly onEvent: (entry: TelemetryLogEntry) => void;\n private readonly spans = new Map<string, SpanRecord>();\n private readonly traces = new Map<string, { name: string; startTime: number }>();\n\n constructor(onEvent: (entry: TelemetryLogEntry) => void) {\n this.onEvent = onEvent;\n }\n\n startTrace(opts: TraceOptions): Trace {\n const traceId = randomUUID().replace(/-/g, \"\");\n const rootSpan: Span = { spanId: randomUUID().slice(0, 16), traceId };\n\n this.traces.set(traceId, { name: opts.name, startTime: Date.now() });\n this.onEvent({ kind: \"trace_start\", traceId, name: opts.name, traceKind: opts.kind });\n\n return { traceId, rootSpan };\n }\n\n endTrace(trace: Trace, result?: SpanResult): void {\n const record = this.traces.get(trace.traceId);\n if (record) {\n const durationMs = Date.now() - record.startTime;\n this.onEvent({\n kind: \"trace_end\",\n traceId: trace.traceId,\n status: result?.status ?? \"ok\",\n durationMs,\n });\n this.traces.delete(trace.traceId);\n }\n }\n\n startSpan(parent: Trace | Span, opts: SpanOptions): Span {\n const spanId = randomUUID().slice(0, 16);\n const traceId = parent.traceId;\n const span: Span = { spanId, traceId };\n\n this.spans.set(spanId, {\n spanId,\n traceId,\n name: opts.name,\n spanKind: opts.kind,\n startTime: Date.now(),\n });\n\n this.onEvent({ kind: \"span_start\", spanId, name: opts.name, spanKind: opts.kind });\n return span;\n }\n\n endSpan(span: Span, result?: SpanResult): void {\n const record = this.spans.get(span.spanId);\n if (record) {\n const durationMs = Date.now() - record.startTime;\n this.onEvent({\n kind: \"span_end\",\n spanId: span.spanId,\n name: record.name,\n spanKind: record.spanKind,\n status: result?.status ?? \"ok\",\n durationMs,\n });\n this.spans.delete(span.spanId);\n }\n }\n\n addEvent(_span: Span, _name: string, _attrs?: Attributes): void {\n // Silently ignored — events are not surfaced in TUI\n }\n\n logGeneration(_span: Span, generation: GenerationEvent): void {\n this.onEvent({\n kind: \"generation\",\n model: generation.model,\n inputTokens: generation.inputTokens ?? 0,\n outputTokens: generation.outputTokens ?? 0,\n costUsd: generation.costUsd ?? 0,\n durationMs: generation.durationMs,\n });\n }\n\n recordMetric(name: string, value: number, _tags?: Record<string, string>): void {\n this.onEvent({ kind: \"metric\", name, value });\n }\n\n async flush(): Promise<void> {}\n async shutdown(): Promise<void> {\n this.spans.clear();\n this.traces.clear();\n }\n}\n\n// ── Log formatting ───────────────────────────────────────────────────────────\n\n/**\n * Format a {@link TelemetryLogEntry} into a human-readable string for the log panel.\n *\n * Produces plain (no ANSI) strings suitable for structured logging or non-terminal\n * output. The format mirrors {@link renderLog} but without colour codes: generation\n * entries include model, token counts, cost, and duration; span_end entries for\n * `tool_call` and `agent_turn` kinds include name, status, and duration; trace\n * lifecycle entries include name and elapsed time. Returns `null` for entry kinds\n * that should not be displayed.\n *\n * @param entry - The structured telemetry event to format.\n * @returns Human-readable string, or `null` if the entry should be suppressed.\n *\n * @docLink packages/tui/concepts#tui-telemetry-provider\n */\nexport function formatTelemetryEntry(entry: TelemetryLogEntry): string | null {\n switch (entry.kind) {\n case \"generation\": {\n const tokens = `${entry.inputTokens}↑ ${entry.outputTokens}↓`;\n const cost = entry.costUsd > 0 ? ` $${entry.costUsd.toFixed(4)}` : \"\";\n const dur = entry.durationMs > 0 ? ` ${(entry.durationMs / 1000).toFixed(1)}s` : \"\";\n return `[gen] ${entry.model} ${tokens}${cost}${dur}`;\n }\n case \"span_end\":\n if (entry.spanKind === \"tool_call\") {\n return `[tool] ${entry.name} ${entry.status} ${entry.durationMs}ms`;\n }\n if (entry.spanKind === \"agent_turn\") {\n return `[turn] ${entry.name} ${(entry.durationMs / 1000).toFixed(1)}s`;\n }\n return null;\n case \"trace_start\":\n return `[trace] ${entry.name} started`;\n case \"trace_end\":\n return `[trace] done ${(entry.durationMs / 1000).toFixed(1)}s`;\n default:\n return null;\n }\n}\n","import pc from \"picocolors\";\nimport type { OutputLine } from \"@skaile/workspaces\";\nimport type { TelemetryLogEntry } from \"./telemetry.js\";\n\n/**\n * Render a single OutputLine to an ANSI-colored string for terminal display.\n *\n * Each `OutputLine` variant is mapped to a distinct colour: user input (cyan/bold),\n * agent text (plain), tool calls (blue italic), questions (yellow), errors (red),\n * status/system messages (dim italic), subagent lifecycle (blue/green italic), and\n * separator lines (dim dashes). Returns an empty string for unrecognised variants.\n *\n * @param line - The typed output line to render.\n * @returns ANSI-coloured string ready for terminal output.\n *\n * @docLink packages/tui/concepts#repl-renderer\n */\nexport function renderLine(line: OutputLine): string {\n switch (line.type) {\n case \"user\":\n return pc.cyan(pc.bold(`> ${line.content}`));\n case \"text\":\n return line.content;\n case \"tool\":\n return pc.blue(pc.italic(` Running: \\`${line.name}\\`...`));\n case \"question\":\n return pc.yellow(`?? ${line.text}\\n Reply below.`);\n case \"error\":\n return pc.red(`Error: ${line.message}`);\n case \"status\":\n return pc.dim(pc.italic(`${line.phase}...`));\n case \"system\":\n return pc.dim(pc.italic(line.message));\n case \"subagent\": {\n const icon = line.status === \"started\" ? \"▶\" : \"✓\";\n const color = line.status === \"started\" ? pc.blue : pc.green;\n return color(pc.italic(` ${icon} ${line.name}: ${line.description}`));\n }\n case \"separator\":\n return pc.dim(\"─\".repeat(60));\n default:\n return \"\";\n }\n}\n\n/**\n * Render a telemetry log entry to an ANSI string, or null to suppress.\n *\n * Formats `generation` entries with model name, token counts, cost, and duration;\n * `span_end` entries for `tool_call` and `agent_turn` kinds; and `trace_start` /\n * `trace_end` lifecycle entries. All output is styled dim for visual de-emphasis.\n * Returns `null` for entry kinds that should not appear in the log panel.\n *\n * @param entry - The structured telemetry event to render.\n * @returns Dim ANSI string, or `null` if the entry should be suppressed.\n *\n * @docLink packages/tui/concepts#repl-renderer\n */\nexport function renderLog(entry: TelemetryLogEntry): string | null {\n switch (entry.kind) {\n case \"generation\": {\n const tokens = `${entry.inputTokens}↑ ${entry.outputTokens}↓`;\n const cost = entry.costUsd > 0 ? ` $${entry.costUsd.toFixed(4)}` : \"\";\n const dur = entry.durationMs > 0 ? ` ${(entry.durationMs / 1000).toFixed(1)}s` : \"\";\n return pc.dim(`[gen] ${entry.model} ${tokens}${cost}${dur}`);\n }\n case \"span_end\":\n if (entry.spanKind === \"tool_call\") {\n return pc.dim(`[tool] ${entry.name} ${entry.status} ${entry.durationMs}ms`);\n }\n if (entry.spanKind === \"agent_turn\") {\n return pc.dim(`[turn] ${entry.name} ${(entry.durationMs / 1000).toFixed(1)}s`);\n }\n return null;\n case \"trace_start\":\n return pc.dim(`[trace] ${entry.name} started`);\n case \"trace_end\":\n return pc.dim(`[trace] done ${(entry.durationMs / 1000).toFixed(1)}s`);\n default:\n return null;\n }\n}\n","/**\n * Slim event bridge: maps AgentDriver events to rendered console lines.\n * No React, no ink, no UI state — just event → string → callback.\n */\n\nimport type { AgentEvent } from \"@skaile/workspaces/bridge\";\nimport type { AgentSession } from \"@skaile/workspaces/runner\";\nimport type { OutputLine, SessionState } from \"@skaile/workspaces\";\nimport { renderLine, renderLog } from \"./repl-renderer.js\";\nimport type { TelemetryLogEntry } from \"./telemetry.js\";\n\n/**\n * Handle returned by {@link createReplSession} for controlling an active REPL session.\n *\n * `state` reflects the current lifecycle state (`idle`, `active`, or `stopped`).\n * Call `send(text)` to forward a user message to the agent driver; the state\n * transitions to `active` until the driver emits `agent_end`. Call `stop()` to\n * terminate the driver and dispose of the underlying agent session.\n *\n * @docLink packages/tui/concepts#repl-session\n */\nexport interface ReplSessionHandle {\n readonly state: SessionState;\n send(text: string): void;\n stop(): void;\n}\n\n/**\n * Options for {@link createReplSession}.\n *\n * @param session - The agent session returned by `createAgentSession`.\n * @param onLine - Callback invoked with an ANSI-rendered string for each output line.\n * @param onLog - Callback invoked with a log string for each telemetry event (if verbose).\n * @param onStateChange - Callback invoked whenever the session state changes.\n *\n * @docLink packages/tui/concepts#repl-session\n */\nexport interface CreateReplSessionOpts {\n session: AgentSession;\n onLine?: (line: string) => void;\n onLog?: (line: string) => void;\n onStateChange?: (state: SessionState) => void;\n}\n\n/**\n * Create a slim event bridge that maps `AgentEvent` stream to rendered console lines.\n *\n * Subscribes to `agent-event` on the session driver and converts each event type\n * (`message_update`, `tool_call`, `error`, `agent_end`, `turn_end`, `subagent`) to\n * an `OutputLine`, renders it via {@link renderLine}, and forwards the string to\n * `opts.onLine`. Text content is buffered internally and flushed line-by-line as\n * newlines arrive. Returns a {@link ReplSessionHandle} for sending messages and\n * stopping the session.\n *\n * @param opts - Session, output callbacks, and state-change hook.\n * @returns Handle for sending messages and observing session state.\n *\n * @docLink packages/tui/concepts#repl-session\n */\nexport function createReplSession(opts: CreateReplSessionOpts): ReplSessionHandle {\n const { session, onLine, onLog, onStateChange } = opts;\n\n let state: SessionState = \"idle\";\n let textBuffer = \"\";\n\n function emit(outputLine: OutputLine) {\n const rendered = renderLine(outputLine);\n if (rendered) onLine?.(rendered);\n }\n\n function setState(s: SessionState) {\n state = s;\n onStateChange?.(s);\n }\n\n session.driver.on(\"agent-event\", (event: AgentEvent) => {\n switch (event.type) {\n case \"message_update\": {\n const delta = (event as any)._textDelta as string | undefined;\n if (delta) {\n textBuffer += delta;\n const lines = textBuffer.split(\"\\n\");\n if (lines.length > 1) {\n for (let i = 0; i < lines.length - 1; i++) {\n emit({ type: \"text\", content: lines[i]! });\n }\n textBuffer = lines[lines.length - 1]!;\n }\n }\n break;\n }\n\n case \"tool_call\": {\n const name = (event as any).tool?.name ?? (event as any).name ?? \"unknown\";\n emit({ type: \"tool\", name });\n break;\n }\n\n case \"error\": {\n const msg = (event as any).error ?? \"Unknown error\";\n emit({ type: \"error\", message: String(msg) });\n if ((event as any).fatal) setState(\"stopped\");\n break;\n }\n\n case \"agent_end\":\n case \"turn_end\": {\n if (textBuffer.trim()) {\n emit({ type: \"text\", content: textBuffer });\n }\n textBuffer = \"\";\n emit({ type: \"separator\" });\n if (event.type === \"agent_end\") setState(\"idle\");\n break;\n }\n\n case \"session_info\":\n break;\n\n default: {\n const raw = event as any;\n if (raw.type === \"subagent\") {\n const status = raw.status === \"finished\" ? \"finished\" : \"started\";\n emit({\n type: \"subagent\",\n name: raw.name ?? \"subagent\",\n status,\n description: raw.description ?? \"\",\n });\n }\n break;\n }\n }\n });\n\n return {\n get state() {\n return state;\n },\n\n send(text: string) {\n if (state === \"stopped\") return;\n setState(\"active\");\n textBuffer = \"\";\n session.driver.prompt(text).catch((err: Error) => {\n emit({ type: \"error\", message: err.message });\n setState(\"idle\");\n });\n },\n\n stop() {\n setState(\"stopped\");\n session.driver.kill();\n session.dispose();\n },\n };\n}\n\n/**\n * Create a telemetry sink that pipes {@link TelemetryLogEntry} events to the log callback.\n *\n * Wraps {@link renderLog} so that only displayable entries (generation, span_end for\n * tool/turn, trace lifecycle) are forwarded. Entries that `renderLog` returns `null`\n * for are silently suppressed. The returned function is used in `startRepl` to drain\n * buffered telemetry and to wire up live forwarding during the session.\n *\n * @param onLog - Callback invoked with an ANSI-rendered log string.\n * @returns A function that accepts a `TelemetryLogEntry` and routes it to `onLog`.\n *\n * @docLink packages/tui/concepts#repl-session\n */\nexport function createTelemetrySink(\n onLog: (line: string) => void,\n): (entry: TelemetryLogEntry) => void {\n return (entry) => {\n const text = renderLog(entry);\n if (text) onLog(text);\n };\n}\n","/**\n * Simple @clack-based agent REPL.\n * No React, no ink, no alt-screen — just a scrolling terminal.\n *\n * Design: clack's text() blocks until user submits, so agent output\n * flows naturally between prompts — no readline interleaving issues.\n * Loop: await text() → send → await idle → loop\n */\n\nimport * as p from \"@clack/prompts\";\nimport { resolve, join, basename, dirname, parse } from \"node:path\";\nimport { existsSync, readFileSync, statSync, readdirSync } from \"node:fs\";\nimport type { Dirent } from \"node:fs\";\nimport pc from \"picocolors\";\nimport { createAgentSession } from \"@skaile/workspaces/runner\";\nimport { resolveAgentDir, resolveSettings } from \"@skaile/workspaces/core\";\nimport { loadConnectorDeclarations } from \"@skaile/workspaces/connectors\";\nimport { TuiTelemetryProvider } from \"./telemetry.js\";\nimport type { TelemetryLogEntry } from \"./telemetry.js\";\nimport { createReplSession, createTelemetrySink } from \"./repl-session.js\";\n\nfunction findAiAssetsRoot(startDir: string): string | undefined {\n let current = resolve(startDir);\n const root = parse(current).root;\n while (current !== root) {\n const candidate = join(current, \"ai-assets\");\n try {\n if (statSync(candidate).isDirectory()) return candidate;\n } catch {}\n const parent = dirname(current);\n if (parent === current) break;\n current = parent;\n }\n return undefined;\n}\n\nfunction countSkills(projectDir: string): number {\n const aiAssetsRoot = findAiAssetsRoot(projectDir);\n if (!aiAssetsRoot) return 0;\n let count = 0;\n const walk = (dir: string) => {\n let entries: Dirent[];\n try {\n entries = readdirSync(dir, { withFileTypes: true });\n } catch {\n return;\n }\n if (entries.some((e) => e.isFile() && e.name === \"SKILL.md\")) {\n count++;\n return;\n }\n for (const e of entries) {\n if (e.isDirectory()) walk(join(dir, e.name));\n }\n };\n walk(aiAssetsRoot);\n return count;\n}\n\n/**\n * Options for {@link startRepl}.\n *\n * @param projectDir - Absolute path to the project root. Used to locate the agent dir, settings, and skill count.\n * @param cwd - Working directory passed to the agent process. Defaults to `projectDir`.\n * @param driver - Agent driver override (`\"omp\"` or `\"claude-sdk\"`). Falls back to settings resolution.\n * @param model - Model name passed to the agent driver.\n * @param provider - Provider name passed to the agent driver.\n * @param resume - When `true`, load the last session ID from `.skaile/last_session` and resume it.\n * @param resumeSessionId - Explicit session ID to resume. Takes precedence over `resume`.\n * @param verbose - When `true`, show telemetry log lines inline between prompts. Default: `false`.\n *\n * @docLink packages/tui/concepts#start-repl\n */\nexport interface ReplOptions {\n projectDir: string;\n cwd?: string;\n driver?: string;\n model?: string;\n provider?: string;\n resume?: boolean;\n resumeSessionId?: string;\n /** When true, show telemetry log lines inline. Default: false. */\n verbose?: boolean;\n}\n\n/**\n * Start the scrolling REPL for an interactive agent conversation.\n *\n * Initialises the agent session (including OMP extension injection when the driver is `omp`),\n * prints a banner with project metadata, then enters a `@clack/prompts` input loop.\n * Each iteration awaits user input, forwards it to the agent via {@link createReplSession},\n * and blocks until the agent signals `idle` or `stopped`. Slash commands (`/help`, `/log`,\n * `/quit`) are handled before the message reaches the agent.\n *\n * @param opts - Configuration for the REPL session.\n * @returns Resolves when the session ends (user quit or fatal error).\n *\n * @docLink packages/tui/concepts#start-repl\n */\nexport async function startRepl(opts: ReplOptions): Promise<void> {\n const projectDir = resolve(opts.projectDir);\n const agentCwd = opts.cwd ? resolve(opts.cwd) : projectDir;\n\n // ── OMP workspace extension injection ──────────────────────────────\n const settings = await resolveSettings(projectDir, { driver: opts.driver });\n const resolvedDriver = settings.driver ?? \"omp\";\n let ompCleanup: (() => void) | undefined;\n\n if (resolvedDriver === \"omp\") {\n const fsAsync = await import(\"node:fs/promises\");\n const pathMod = await import(\"node:path\");\n const { WorkspacePlugin } = await import(\"@skaile/workspaces/workspace-plugin\");\n\n const plugin = new WorkspacePlugin({ projectDir });\n const src = await plugin.buildOmpExtensionSource();\n const extPath = pathMod.default.join(agentCwd, \".omp\", \"extensions\", \"skaile.ts\");\n await fsAsync.default.mkdir(pathMod.default.dirname(extPath), { recursive: true });\n await fsAsync.default.writeFile(extPath, src);\n ompCleanup = () => {\n fsAsync.default.unlink(extPath).catch(() => {});\n };\n }\n\n // ── Session resume ─────────────────────────────────────────────────\n const SESSION_FILE = join(projectDir, \".skaile\", \"last_session\");\n let resumeSessionId = opts.resumeSessionId;\n if (!resumeSessionId && opts.resume) {\n try {\n if (existsSync(SESSION_FILE)) {\n resumeSessionId = readFileSync(SESSION_FILE, \"utf-8\").trim() || undefined;\n }\n } catch {}\n }\n\n // ── Telemetry ──────────────────────────────────────────────────────\n const telemetryBuffer: TelemetryLogEntry[] = [];\n const telemetry = new TuiTelemetryProvider((entry) => {\n telemetryBuffer.push(entry);\n });\n const trace = telemetry.startTrace({ name: \"skaile-repl\", kind: \"chat_session\" });\n\n // ── Create agent session ───────────────────────────────────────────\n const agentDir = resolveAgentDir(projectDir) ?? undefined;\n const session = await createAgentSession({\n projectDir,\n cwd: agentCwd !== projectDir ? agentCwd : undefined,\n agentDir,\n driver: opts.driver ?? resolvedDriver,\n model: opts.model,\n provider: opts.provider,\n resumeSessionId,\n telemetry,\n trace,\n onLog: () => {},\n });\n\n await session.driver.start();\n\n // ── Output + state tracking ────────────────────────────────────────\n let showLog = opts.verbose ?? false;\n let idleResolve: (() => void) | undefined;\n\n const write = (line: string) => {\n p.log.message(line);\n };\n\n const writeLog = (line: string) => {\n if (showLog) p.log.step(line);\n };\n\n // ── Create REPL session ────────────────────────────────────────────\n const replSession = createReplSession({\n session,\n onLine: write,\n onLog: writeLog,\n onStateChange: (state) => {\n if (state === \"idle\" || state === \"stopped\") {\n idleResolve?.();\n }\n },\n });\n\n // Drain buffered telemetry\n const sink = createTelemetrySink(writeLog);\n for (const entry of telemetryBuffer) sink(entry);\n telemetryBuffer.length = 0;\n\n // ── Banner ─────────────────────────────────────────────────────────\n const displayModel = session.model ?? opts.model ?? \"default\";\n const displayDriver = session.driverType ?? resolvedDriver;\n\n const skillCount = countSkills(projectDir);\n let connectorCount = 0;\n try {\n connectorCount = loadConnectorDeclarations(projectDir).length;\n } catch {}\n const agentName = agentDir ? basename(agentDir) : \"(none)\";\n\n p.intro(`${pc.bold(\"skaile repl\")} ${pc.dim(`— ${displayDriver} / ${displayModel}`)}`);\n p.log.info(pc.dim(`Project: ${projectDir}`));\n p.log.info(pc.dim(`Agent: ${agentName} · ${skillCount} skills · ${connectorCount} connectors`));\n if (resumeSessionId) p.log.info(pc.dim(`Resumed: ${resumeSessionId.slice(0, 12)}...`));\n p.log.info(pc.dim(\"Type /help for commands, Ctrl+C to quit.\"));\n\n // ── REPL loop ──────────────────────────────────────────────────────\n function shutdown() {\n replSession.stop();\n telemetry.endTrace(trace, { status: \"ok\" });\n void telemetry.shutdown();\n ompCleanup?.();\n p.outro(\"Bye.\");\n process.exit(0);\n }\n\n process.on(\"SIGINT\", shutdown);\n process.on(\"SIGTERM\", shutdown);\n\n while (replSession.state !== \"stopped\") {\n const input = await p.text({\n message: pc.gray(\">>>\"),\n placeholder: \"\",\n });\n\n if (p.isCancel(input)) {\n shutdown();\n return;\n }\n\n const trimmed = (input as string).trim();\n if (!trimmed) continue;\n\n if (trimmed === \"/quit\" || trimmed === \"/q\") {\n shutdown();\n return;\n }\n if (trimmed === \"/help\" || trimmed === \"/h\" || trimmed === \"/?\") {\n p.log.info(\n [\n \" /help, /h — this help\",\n \" /log — toggle verbose log output\",\n \" /quit, /q — exit\",\n \" Ctrl+C — exit\",\n ].join(\"\\n\"),\n );\n continue;\n }\n if (trimmed === \"/log\") {\n showLog = !showLog;\n p.log.info(`Log output: ${showLog ? \"on\" : \"off\"}`);\n continue;\n }\n\n const idlePromise = new Promise<void>((resolve) => {\n idleResolve = resolve;\n });\n replSession.send(trimmed);\n await idlePromise;\n }\n\n shutdown();\n}\n"]}
@@ -1,4 +1,4 @@
1
- export { ANTHROPIC_FULL_ID_PATTERN, ANTHROPIC_MODEL_ALIASES, AgentComposeItemSchema, AgentManifestSchema, ArtifactRefSchema, AssetKindSchema, AssetKindValues, BaseFrontmatterSchema, BindingSchema, BindingValues, CommonMetadataSchema, ConnectorManifestSchema, ContractManifestSchema, FieldSchema, FilePrerequisiteSchema, McpServerManifestSchema, ModelIdSchema, MountManifestSchema, PersonaManifestSchema, PlaceholderSchema, PlaceholderTypeSchema, PresetItemSchema, PresetManifestSchema, PromptManifestSchema, RulesetManifestSchema, SkillManifestSchema, UserInputSchema, normalizeAnthropicModel, validateAgent, validateByKind, validateConnector, validateContract, validateManifest, validateMcpServer, validateMount, validatePersona, validatePreset, validatePrompt, validateRuleset, validateSkill } from '../chunk-NELZIQ2E.js';
1
+ export { ANTHROPIC_FULL_ID_PATTERN, ANTHROPIC_MODEL_ALIASES, AgentComposeItemSchema, AgentManifestSchema, ArtifactRefSchema, AssetKindSchema, AssetKindValues, BaseFrontmatterSchema, BindingSchema, BindingValues, CommonMetadataSchema, ConnectorManifestSchema, ContractManifestSchema, FieldSchema, FilePrerequisiteSchema, McpServerManifestSchema, ModelIdSchema, MountManifestSchema, PersonaManifestSchema, PlaceholderSchema, PlaceholderTypeSchema, PresetItemSchema, PresetManifestSchema, PromptManifestSchema, RulesetManifestSchema, SkillManifestSchema, UserInputSchema, normalizeAnthropicModel, validateAgent, validateByKind, validateConnector, validateContract, validateManifest, validateMcpServer, validateMount, validatePersona, validatePreset, validatePrompt, validateRuleset, validateSkill } from '../chunk-QDJKE557.js';
2
2
  import '../chunk-NSBPE2FW.js';
3
3
  //# sourceMappingURL=manifests.js.map
4
4
  //# sourceMappingURL=manifests.js.map
@@ -9,7 +9,7 @@
9
9
  *
10
10
  * This file defines the persistence/wire shape — `FlowExecution` snapshots
11
11
  * and their `NodeExecution` entries. The flow-engine state machine
12
- * (`@skaile/workspaces/base-assets/connectors/flow/engine`) operates on the same types via re-exports.
12
+ * (`@skaile/workspaces/factory-assets/connectors/flow/engine`) operates on the same types via re-exports.
13
13
  *
14
14
  * Universal reference: `docs/flow-execution.md`
15
15
  */
@@ -302,7 +302,7 @@ export interface ActiveFlowRehydration {
302
302
  /**
303
303
  * Full flow definition as provided by the host — runner stores its own
304
304
  * copy rather than resolving from disk. Typed as unknown here to avoid
305
- * a cross-package dependency on `@skaile/workspaces/base-assets/connectors/flow/engine`; consumers
305
+ * a cross-package dependency on `@skaile/workspaces/factory-assets/connectors/flow/engine`; consumers
306
306
  * narrow via `FlowDefinition` when they need shape access.
307
307
  */
308
308
  flowDef: unknown;
@@ -8,7 +8,7 @@
8
8
  */
9
9
  /** Pointer Triple returned by the Catalog's `getInstallManifest` route. */
10
10
  export interface InstallManifest {
11
- /** Canonical asset ref, e.g. `"skaile/use-exa@1.0.0"`. */
11
+ /** Canonical asset ref, e.g. `"skill:@skaile/use-exa#1.0.0"`. */
12
12
  ref: string;
13
13
  source: {
14
14
  /** Upstream repository URL. */
@@ -1 +1 @@
1
- {"version":3,"file":"install-manifest.d.ts","sourceRoot":"","sources":["../../../types/src/install-manifest.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,2EAA2E;AAC3E,MAAM,WAAW,eAAe;IAC9B,0DAA0D;IAC1D,GAAG,EAAE,MAAM,CAAC;IACZ,MAAM,EAAE;QACN,+BAA+B;QAC/B,GAAG,EAAE,MAAM,CAAC;QACZ,2CAA2C;QAC3C,SAAS,EAAE,MAAM,CAAC;KACnB,CAAC;IACF,6DAA6D;IAC7D,KAAK,EAAE,KAAK,CAAC;QACX,iDAAiD;QACjD,IAAI,EAAE,MAAM,CAAC;QACb,iDAAiD;QACjD,MAAM,EAAE,MAAM,CAAC;KAChB,CAAC,CAAC;IACH,iEAAiE;IACjE,MAAM,EAAE,MAAM,CAAC;IACf,kCAAkC;IAClC,IAAI,EAAE,MAAM,CAAC;IACb,6CAA6C;IAC7C,IAAI,EAAE,MAAM,CAAC;CACd"}
1
+ {"version":3,"file":"install-manifest.d.ts","sourceRoot":"","sources":["../../../types/src/install-manifest.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,2EAA2E;AAC3E,MAAM,WAAW,eAAe;IAC9B,iEAAiE;IACjE,GAAG,EAAE,MAAM,CAAC;IACZ,MAAM,EAAE;QACN,+BAA+B;QAC/B,GAAG,EAAE,MAAM,CAAC;QACZ,2CAA2C;QAC3C,SAAS,EAAE,MAAM,CAAC;KACnB,CAAC;IACF,6DAA6D;IAC7D,KAAK,EAAE,KAAK,CAAC;QACX,iDAAiD;QACjD,IAAI,EAAE,MAAM,CAAC;QACb,iDAAiD;QACjD,MAAM,EAAE,MAAM,CAAC;KAChB,CAAC,CAAC;IACH,iEAAiE;IACjE,MAAM,EAAE,MAAM,CAAC;IACf,kCAAkC;IAClC,IAAI,EAAE,MAAM,CAAC;IACb,6CAA6C;IAC7C,IAAI,EAAE,MAAM,CAAC;CACd"}
@@ -32,7 +32,7 @@ import type { AssetKind, ManifestValidationResult } from "./_shared.js";
32
32
  /**
33
33
  * Validate a manifest against the schema for the given asset kind.
34
34
  *
35
- * NOTE: flow validation lives in @skaile/workspaces/base-assets/connectors/flow/engine. Use the
35
+ * NOTE: flow validation lives in @skaile/workspaces/factory-assets/connectors/flow/engine. Use the
36
36
  * IAssetKindRegistry for kind-agnostic validation that includes all
37
37
  * registered providers (including extension kinds).
38
38
  */
@@ -97,6 +97,27 @@ export declare const SkillManifestSchema: z.ZodObject<{
97
97
  default: z.ZodOptional<z.ZodUnion<readonly [z.ZodString, z.ZodNumber, z.ZodBoolean, z.ZodArray<z.ZodUnion<readonly [z.ZodString, z.ZodNumber]>>]>>;
98
98
  hint: z.ZodOptional<z.ZodString>;
99
99
  }, z.core.$loose>>>;
100
+ reads: z.ZodOptional<z.ZodArray<z.ZodObject<{
101
+ path: z.ZodString;
102
+ description: z.ZodOptional<z.ZodString>;
103
+ }, z.core.$strip>>>;
104
+ produces: z.ZodOptional<z.ZodArray<z.ZodObject<{
105
+ path: z.ZodString;
106
+ description: z.ZodOptional<z.ZodString>;
107
+ }, z.core.$strip>>>;
108
+ resources: z.ZodOptional<z.ZodArray<z.ZodObject<{
109
+ id: z.ZodString;
110
+ operations: z.ZodOptional<z.ZodArray<z.ZodString>>;
111
+ optional: z.ZodOptional<z.ZodBoolean>;
112
+ description: z.ZodOptional<z.ZodString>;
113
+ }, z.core.$strip>>>;
114
+ connectors: z.ZodOptional<z.ZodArray<z.ZodObject<{
115
+ driver: z.ZodString;
116
+ access: z.ZodOptional<z.ZodEnum<{
117
+ "read-only": "read-only";
118
+ "read-write": "read-write";
119
+ }>>;
120
+ }, z.core.$strip>>>;
100
121
  }, z.core.$strip>>;
101
122
  produces: z.ZodOptional<z.ZodArray<z.ZodObject<{
102
123
  path: z.ZodString;
@@ -1 +1 @@
1
- {"version":3,"file":"skill.d.ts","sourceRoot":"","sources":["../../../../types/src/manifests/skill.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,CAAC,MAAM,KAAK,CAAC;AACzB,OAAO,EAML,KAAK,wBAAwB,EAC9B,MAAM,cAAc,CAAC;AAqBtB,eAAO,MAAM,mBAAmB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBAe9B,CAAC;AAEH,MAAM,MAAM,aAAa,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,mBAAmB,CAAC,CAAC;AAEhE,wBAAgB,aAAa,CAAC,IAAI,EAAE,OAAO,GAAG,wBAAwB,CAAC,aAAa,CAAC,CAEpF"}
1
+ {"version":3,"file":"skill.d.ts","sourceRoot":"","sources":["../../../../types/src/manifests/skill.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,CAAC,MAAM,KAAK,CAAC;AACzB,OAAO,EAML,KAAK,wBAAwB,EAC9B,MAAM,cAAc,CAAC;AA4CtB,eAAO,MAAM,mBAAmB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBAe9B,CAAC;AAEH,MAAM,MAAM,aAAa,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,mBAAmB,CAAC,CAAC;AAEhE,wBAAgB,aAAa,CAAC,IAAI,EAAE,OAAO,GAAG,wBAAwB,CAAC,aAAa,CAAC,CAEpF"}
@@ -1,10 +1,10 @@
1
- import { flowList, flowShow, flowListSessions, flowGetSession, flowFindFlowForSession } from '../../chunk-2XY6732A.js';
1
+ import { mountList, mountSync, mountStatus, mountRead, connectorList, connectorRead, connectorWrite, connectorSearch, connectorExec, connectorLoadSkill, connectorDescribe } from '../../chunk-LDUNTZB6.js';
2
+ import { flowList, flowShow, flowListSessions, flowGetSession, flowFindFlowForSession } from '../../chunk-YRU4WB6Y.js';
2
3
  import { sessionList, sessionGet } from '../../chunk-HK5FRWG6.js';
3
- import { skillList, skillListDomains, skillShow, skillSearch, skillCheckRequirements, skillGetPreamble } from '../../chunk-LSGAYQ2E.js';
4
+ import { skillList, skillListDomains, skillShow, skillSearch, skillCheckRequirements, skillGetPreamble } from '../../chunk-5YO3H5Q4.js';
4
5
  import '../../chunk-XCBG2KDC.js';
5
6
  import { workspaceValidate, workspaceInfo, workspaceTestSecret, workspaceReload } from '../../chunk-7R6W5EQR.js';
6
- import { mountList, mountSync, mountStatus, mountRead, connectorList, connectorRead, connectorWrite, connectorSearch, connectorExec, connectorLoadSkill, connectorDescribe } from '../../chunk-LDUNTZB6.js';
7
- import '../../chunk-IPUYL6TD.js';
7
+ import '../../chunk-TV72ZJYN.js';
8
8
  import '../../chunk-X5YPJV4N.js';
9
9
  import '../../chunk-NSBPE2FW.js';
10
10
  import * as zNS from 'zod';
@@ -74,7 +74,7 @@ function buildOmpToolSet(plugin) {
74
74
  description: "List all available flow definitions from ai-assets.",
75
75
  parameters: {},
76
76
  handler: async () => {
77
- const { flowList } = await import('../../flows-DYFTPCPM.js');
77
+ const { flowList } = await import('../../flows-JZFJD5IN.js');
78
78
  return (await flowList(plugin.projectDir)).content[0].text;
79
79
  }
80
80
  },
@@ -83,7 +83,7 @@ function buildOmpToolSet(plugin) {
83
83
  description: "List past flow run sessions for this workspace.",
84
84
  parameters: {},
85
85
  handler: async () => {
86
- const { flowListSessions } = await import('../../flows-DYFTPCPM.js');
86
+ const { flowListSessions } = await import('../../flows-JZFJD5IN.js');
87
87
  return (await flowListSessions(plugin.projectDir)).content[0].text;
88
88
  }
89
89
  },
@@ -92,7 +92,7 @@ function buildOmpToolSet(plugin) {
92
92
  description: "List all skills in the ai-assets catalog.",
93
93
  parameters: { domain: { type: "string", optional: true } },
94
94
  handler: async ({ domain }) => {
95
- const { skillList } = await import('../../skills-CRL3VJNN.js');
95
+ const { skillList } = await import('../../skills-6HJ3WINN.js');
96
96
  return (await skillList(plugin.projectDir, domain)).content[0].text;
97
97
  }
98
98
  },
@@ -101,7 +101,7 @@ function buildOmpToolSet(plugin) {
101
101
  description: "Search skills by name, description, or keywords.",
102
102
  parameters: { query: { type: "string" } },
103
103
  handler: async ({ query }) => {
104
- const { skillSearch } = await import('../../skills-CRL3VJNN.js');
104
+ const { skillSearch } = await import('../../skills-6HJ3WINN.js');
105
105
  return (await skillSearch(plugin.projectDir, query)).content[0].text;
106
106
  }
107
107
  },
@@ -110,7 +110,7 @@ function buildOmpToolSet(plugin) {
110
110
  description: "Show the full SKILL.md content for a skill.",
111
111
  parameters: { skill_id: { type: "string" } },
112
112
  handler: async ({ skill_id }) => {
113
- const { skillShow } = await import('../../skills-CRL3VJNN.js');
113
+ const { skillShow } = await import('../../skills-6HJ3WINN.js');
114
114
  return (await skillShow(plugin.projectDir, skill_id)).content[0].text;
115
115
  }
116
116
  },
@@ -184,7 +184,7 @@ async function handleSlashCommand(plugin, group, args) {
184
184
  try {
185
185
  switch (group) {
186
186
  case "flow": {
187
- const { flowList, flowShow, flowListSessions, flowGetSession } = await import('../../flows-DYFTPCPM.js');
187
+ const { flowList, flowShow, flowListSessions, flowGetSession } = await import('../../flows-JZFJD5IN.js');
188
188
  if (!sub || sub === "list") return (await flowList(plugin.projectDir)).content[0].text;
189
189
  if (sub === "show" && rest[0])
190
190
  return (await flowShow(plugin.projectDir, rest[0])).content[0].text;
@@ -214,7 +214,7 @@ async function handleSlashCommand(plugin, group, args) {
214
214
  return "Usage: /connector list | read <id> <path> | exec <id> <op> [json-args] | describe <id>";
215
215
  }
216
216
  case "skill": {
217
- const { skillList, skillShow, skillSearch } = await import('../../skills-CRL3VJNN.js');
217
+ const { skillList, skillShow, skillSearch } = await import('../../skills-6HJ3WINN.js');
218
218
  if (sub === "run" && rest[0])
219
219
  return (await skillShow(plugin.projectDir, rest[0])).content[0].text;
220
220
  if (!sub || sub === "list")
@@ -1,4 +1,4 @@
1
- export { PluginStore, WorkspacePlugin, buildClaudePluginFiles, resolveProjectDir } from '../chunk-J2TITSXF.js';
1
+ export { PluginStore, WorkspacePlugin, buildClaudePluginFiles, resolveProjectDir } from '../chunk-BQRRBGDE.js';
2
2
  export { err, ok, okJson } from '../chunk-X5YPJV4N.js';
3
3
  import '../chunk-24UIWON4.js';
4
4
  import '../chunk-NSBPE2FW.js';
@@ -1 +1 @@
1
- {"version":3,"file":"flows.d.ts","sourceRoot":"","sources":["../../../../workspace-plugin/src/tools/flows.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAM9C;;;;;;;;;GASG;AACH,wBAAsB,QAAQ,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,CAAC,CAetE;AAED;;;;;;;GAOG;AACH,wBAAsB,QAAQ,CAAC,UAAU,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,CAAC,CAYtF;AAED;;;;;;;;;GASG;AACH,wBAAsB,gBAAgB,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,CAAC,CAO9E;AAED;;;;;;;GAOG;AACH,wBAAsB,cAAc,CAAC,UAAU,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,CAAC,CAS3F;AAED;;;;;;;;;;GAUG;AACH,wBAAsB,sBAAsB,CAC1C,UAAU,EAAE,MAAM,EAClB,KAAK,EAAE,MAAM,GACZ,OAAO,CAAC,UAAU,CAAC,CAiBrB"}
1
+ {"version":3,"file":"flows.d.ts","sourceRoot":"","sources":["../../../../workspace-plugin/src/tools/flows.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAM9C;;;;;;;;;GASG;AACH,wBAAsB,QAAQ,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,CAAC,CAiBtE;AAED;;;;;;;GAOG;AACH,wBAAsB,QAAQ,CAAC,UAAU,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,CAAC,CActF;AAED;;;;;;;;;GASG;AACH,wBAAsB,gBAAgB,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,CAAC,CAO9E;AAED;;;;;;;GAOG;AACH,wBAAsB,cAAc,CAAC,UAAU,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,CAAC,CAS3F;AAED;;;;;;;;;;GAUG;AACH,wBAAsB,sBAAsB,CAC1C,UAAU,EAAE,MAAM,EAClB,KAAK,EAAE,MAAM,GACZ,OAAO,CAAC,UAAU,CAAC,CAmBrB"}