@skaile/workspaces 1.16.0 → 2.0.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 (289) hide show
  1. package/CHANGELOG.md +265 -0
  2. package/dist/{asset-feeds-WIBEP37F.js → asset-feeds-7VQVISDI.js} +25 -24
  3. package/dist/asset-feeds-7VQVISDI.js.map +1 -0
  4. package/dist/asset-manager/catalog-deployer.js +13 -1
  5. package/dist/asset-manager/index.js +10 -9
  6. package/dist/asset-manager/installer.js +7 -6
  7. package/dist/asset-manager/src/catalog-deployer.d.ts +70 -5
  8. package/dist/asset-manager/src/catalog-deployer.d.ts.map +1 -1
  9. package/dist/asset-manager/src/index.d.ts +22 -17
  10. package/dist/asset-manager/src/index.d.ts.map +1 -1
  11. package/dist/bridge/drivers/claude-sdk.js +108 -56
  12. package/dist/bridge/drivers/claude-sdk.js.map +1 -1
  13. package/dist/bridge/drivers/codex.js +3 -2
  14. package/dist/bridge/drivers/codex.js.map +1 -1
  15. package/dist/bridge/drivers/continue.js +4 -3
  16. package/dist/bridge/drivers/continue.js.map +1 -1
  17. package/dist/bridge/drivers/echo.js +3 -2
  18. package/dist/bridge/drivers/echo.js.map +1 -1
  19. package/dist/bridge/drivers/gemini.js +5 -4
  20. package/dist/bridge/drivers/goose.js +4 -3
  21. package/dist/bridge/drivers/goose.js.map +1 -1
  22. package/dist/bridge/drivers/omp.js +3 -2
  23. package/dist/bridge/drivers/omp.js.map +1 -1
  24. package/dist/bridge/drivers/opencode.js +4 -3
  25. package/dist/bridge/drivers/opencode.js.map +1 -1
  26. package/dist/bridge/drivers/qwen.js +5 -4
  27. package/dist/bridge/drivers/qwen.js.map +1 -1
  28. package/dist/bridge/index.js +4 -3
  29. package/dist/bridge/src/drivers/claude-sdk.d.ts.map +1 -1
  30. package/dist/bridge/src/drivers/scrub-transcript.d.ts +21 -1
  31. package/dist/bridge/src/drivers/scrub-transcript.d.ts.map +1 -1
  32. package/dist/{chunk-344DEXZS.js → chunk-35ELAMQ5.js} +4 -4
  33. package/dist/{chunk-344DEXZS.js.map → chunk-35ELAMQ5.js.map} +1 -1
  34. package/dist/{chunk-WSTY3AWY.js → chunk-6FJH63NN.js} +4 -4
  35. package/dist/{chunk-WSTY3AWY.js.map → chunk-6FJH63NN.js.map} +1 -1
  36. package/dist/{chunk-ISA7R7PK.js → chunk-72EOJJOM.js} +82 -38
  37. package/dist/chunk-72EOJJOM.js.map +1 -0
  38. package/dist/chunk-7GOCNYUV.js +300 -0
  39. package/dist/chunk-7GOCNYUV.js.map +1 -0
  40. package/dist/{chunk-TFIFNDT2.js → chunk-A5OYCQGT.js} +4 -4
  41. package/dist/{chunk-TFIFNDT2.js.map → chunk-A5OYCQGT.js.map} +1 -1
  42. package/dist/{chunk-KY5NY7LB.js → chunk-BCTU4TN7.js} +11 -11
  43. package/dist/chunk-BCTU4TN7.js.map +1 -0
  44. package/dist/chunk-BEAIJRVF.js +159 -0
  45. package/dist/chunk-BEAIJRVF.js.map +1 -0
  46. package/dist/chunk-BK3WL3QK.js +10 -0
  47. package/dist/chunk-BK3WL3QK.js.map +1 -0
  48. package/dist/{chunk-BI2NKPA4.js → chunk-CA5CWLGN.js} +3 -2
  49. package/dist/chunk-CA5CWLGN.js.map +1 -0
  50. package/dist/{chunk-2TSSCHCQ.js → chunk-CKVIN4H3.js} +5 -5
  51. package/dist/{chunk-2TSSCHCQ.js.map → chunk-CKVIN4H3.js.map} +1 -1
  52. package/dist/{chunk-GXC3TYMQ.js → chunk-CZZRDYT4.js} +70 -32
  53. package/dist/chunk-CZZRDYT4.js.map +1 -0
  54. package/dist/{chunk-MNKUZUN2.js → chunk-DRXDEL3A.js} +3 -3
  55. package/dist/{chunk-MNKUZUN2.js.map → chunk-DRXDEL3A.js.map} +1 -1
  56. package/dist/{chunk-BYS6JDZB.js → chunk-DY2AK577.js} +3 -3
  57. package/dist/{chunk-BYS6JDZB.js.map → chunk-DY2AK577.js.map} +1 -1
  58. package/dist/chunk-DYMWJAL4.js +552 -0
  59. package/dist/chunk-DYMWJAL4.js.map +1 -0
  60. package/dist/{chunk-ACXLKNIM.js → chunk-E7HKNQTH.js} +10 -4
  61. package/dist/chunk-E7HKNQTH.js.map +1 -0
  62. package/dist/{chunk-O5VCUU6D.js → chunk-KUZEIKZH.js} +4 -4
  63. package/dist/{chunk-O5VCUU6D.js.map → chunk-KUZEIKZH.js.map} +1 -1
  64. package/dist/{chunk-YULV7UTU.js → chunk-KYLWY3A7.js} +10 -10
  65. package/dist/{chunk-YULV7UTU.js.map → chunk-KYLWY3A7.js.map} +1 -1
  66. package/dist/{chunk-2BQBWWFX.js → chunk-LBZP2IYG.js} +6 -6
  67. package/dist/chunk-LBZP2IYG.js.map +1 -0
  68. package/dist/{chunk-MZV6WCF3.js → chunk-MAN7AGQJ.js} +3 -3
  69. package/dist/{chunk-MZV6WCF3.js.map → chunk-MAN7AGQJ.js.map} +1 -1
  70. package/dist/{chunk-7J7LQP6T.js → chunk-MMD2KQ3A.js} +31 -19
  71. package/dist/chunk-MMD2KQ3A.js.map +1 -0
  72. package/dist/{chunk-FIUGSIKC.js → chunk-NYCJ7B27.js} +19 -11
  73. package/dist/chunk-NYCJ7B27.js.map +1 -0
  74. package/dist/{chunk-ACWCVB5Q.js → chunk-ORZW7MMO.js} +3 -3
  75. package/dist/{chunk-ACWCVB5Q.js.map → chunk-ORZW7MMO.js.map} +1 -1
  76. package/dist/{chunk-M5GJT3D7.js → chunk-OYX22NJL.js} +3 -3
  77. package/dist/{chunk-M5GJT3D7.js.map → chunk-OYX22NJL.js.map} +1 -1
  78. package/dist/{chunk-C4KVFALU.js → chunk-QIQTYN7F.js} +3 -3
  79. package/dist/{chunk-C4KVFALU.js.map → chunk-QIQTYN7F.js.map} +1 -1
  80. package/dist/{chunk-2IJFUAZB.js → chunk-RK3HU3H3.js} +123 -18
  81. package/dist/chunk-RK3HU3H3.js.map +1 -0
  82. package/dist/{chunk-5NZ56R63.js → chunk-ST3DLLNZ.js} +18 -6
  83. package/dist/chunk-ST3DLLNZ.js.map +1 -0
  84. package/dist/{chunk-6POODADP.js → chunk-SVL4EZJT.js} +453 -250
  85. package/dist/chunk-SVL4EZJT.js.map +1 -0
  86. package/dist/{chunk-JB35MVBN.js → chunk-U5POE4BA.js} +4 -298
  87. package/dist/chunk-U5POE4BA.js.map +1 -0
  88. package/dist/{chunk-MO43URUI.js → chunk-UAQVFATZ.js} +7 -7
  89. package/dist/{chunk-MO43URUI.js.map → chunk-UAQVFATZ.js.map} +1 -1
  90. package/dist/{chunk-A22KZ7GZ.js → chunk-UVW3R6S7.js} +72 -37
  91. package/dist/chunk-UVW3R6S7.js.map +1 -0
  92. package/dist/{chunk-STQOPWPS.js → chunk-VCU4NPUS.js} +4 -4
  93. package/dist/{chunk-STQOPWPS.js.map → chunk-VCU4NPUS.js.map} +1 -1
  94. package/dist/{chunk-MB6563TL.js → chunk-WCWXDW22.js} +3 -3
  95. package/dist/{chunk-MB6563TL.js.map → chunk-WCWXDW22.js.map} +1 -1
  96. package/dist/{chunk-BG4XVMG2.js → chunk-WZPADAE7.js} +254 -135
  97. package/dist/chunk-WZPADAE7.js.map +1 -0
  98. package/dist/{chunk-EPWY2ABE.js → chunk-Y3JVBJ3Y.js} +5 -5
  99. package/dist/{chunk-EPWY2ABE.js.map → chunk-Y3JVBJ3Y.js.map} +1 -1
  100. package/dist/cli/index.js +347 -127
  101. package/dist/cli/index.js.map +1 -1
  102. package/dist/cli/src/asset-feeds.d.ts +2 -2
  103. package/dist/cli/src/asset-feeds.d.ts.map +1 -1
  104. package/dist/cli/src/commands/catalog.d.ts +51 -2
  105. package/dist/cli/src/commands/catalog.d.ts.map +1 -1
  106. package/dist/cli/src/commands/connector.d.ts +1 -1
  107. package/dist/cli/src/commands/connector.d.ts.map +1 -1
  108. package/dist/cli/src/commands/logs.d.ts.map +1 -1
  109. package/dist/cli/src/commands/manage.d.ts +30 -3
  110. package/dist/cli/src/commands/manage.d.ts.map +1 -1
  111. package/dist/cli/src/commands/project.d.ts +5 -2
  112. package/dist/cli/src/commands/project.d.ts.map +1 -1
  113. package/dist/connectors/config.js +7 -6
  114. package/dist/connectors/index.js +8 -7
  115. package/dist/connectors/src/connector-manager.d.ts.map +1 -1
  116. package/dist/connectors/src/watcher.d.ts.map +1 -1
  117. package/dist/connectors/src/worktree.d.ts +20 -2
  118. package/dist/connectors/src/worktree.d.ts.map +1 -1
  119. package/dist/core/index.js +6 -5
  120. package/dist/core/logging.js +2 -1
  121. package/dist/core/manifest.js +2 -1
  122. package/dist/core/runtime-assets.js +4 -3
  123. package/dist/core/src/fs-deadline.d.ts +84 -0
  124. package/dist/core/src/fs-deadline.d.ts.map +1 -0
  125. package/dist/core/src/index.d.ts +4 -3
  126. package/dist/core/src/index.d.ts.map +1 -1
  127. package/dist/core/src/manifest.d.ts +142 -18
  128. package/dist/core/src/manifest.d.ts.map +1 -1
  129. package/dist/core/src/repo-manager.d.ts +2 -2
  130. package/dist/core/src/repo-manager.d.ts.map +1 -1
  131. package/dist/core/src/runtime-assets.d.ts.map +1 -1
  132. package/dist/core/src/subprocess.d.ts +33 -1
  133. package/dist/core/src/subprocess.d.ts.map +1 -1
  134. package/dist/core/src/walker.d.ts +1 -1
  135. package/dist/core/src/walker.d.ts.map +1 -1
  136. package/dist/core/src/workspace-config.d.ts +9 -2
  137. package/dist/core/src/workspace-config.d.ts.map +1 -1
  138. package/dist/core/workspace-config.js +3 -2
  139. package/dist/deploy/index.js +12 -7
  140. package/dist/deploy/index.js.map +1 -1
  141. package/dist/deploy/src/targets/container-runtime.d.ts.map +1 -1
  142. package/dist/discovery/index.js +3 -2
  143. package/dist/{ensure-sources-RSTZONIE.js → ensure-sources-JLVHHZI2.js} +13 -12
  144. package/dist/ensure-sources-JLVHHZI2.js.map +1 -0
  145. package/dist/factory-assets/connectors/box.js +8 -7
  146. package/dist/factory-assets/connectors/deploy/CONNECTOR.md +19 -0
  147. package/dist/factory-assets/connectors/deploy/adapter.d.ts.map +1 -1
  148. package/dist/factory-assets/connectors/deploy.js +8 -7
  149. package/dist/factory-assets/connectors/devserver/adapter.d.ts.map +1 -1
  150. package/dist/factory-assets/connectors/devserver.js +8 -7
  151. package/dist/factory-assets/connectors/flow/adapter.js +8 -7
  152. package/dist/factory-assets/connectors/flow/engine.js +6 -5
  153. package/dist/factory-assets/connectors/flow/run-flow.js +10 -9
  154. package/dist/factory-assets/connectors/flow.js +8 -7
  155. package/dist/factory-assets/connectors/git/driver.d.ts +12 -1
  156. package/dist/factory-assets/connectors/git/driver.d.ts.map +1 -1
  157. package/dist/factory-assets/connectors/git.js +8 -7
  158. package/dist/factory-assets/connectors/gmail.js +8 -7
  159. package/dist/factory-assets/connectors/googledrive.js +8 -7
  160. package/dist/factory-assets/connectors/local/driver.d.ts +25 -1
  161. package/dist/factory-assets/connectors/local/driver.d.ts.map +1 -1
  162. package/dist/factory-assets/connectors/local.js +8 -7
  163. package/dist/factory-assets/connectors/mattermost.js +8 -7
  164. package/dist/factory-assets/connectors/memory.js +8 -7
  165. package/dist/factory-assets/connectors/minio.js +8 -7
  166. package/dist/factory-assets/connectors/postgres.js +8 -7
  167. package/dist/factory-assets/connectors/s3/driver.d.ts +15 -0
  168. package/dist/factory-assets/connectors/s3/driver.d.ts.map +1 -1
  169. package/dist/factory-assets/connectors/s3.js +8 -7
  170. package/dist/factory-assets/connectors/sharepoint.js +8 -7
  171. package/dist/factory-assets/connectors/sqlite/adapter.d.ts +8 -1
  172. package/dist/factory-assets/connectors/sqlite/adapter.d.ts.map +1 -1
  173. package/dist/factory-assets/connectors/sqlite.js +8 -7
  174. package/dist/factory-assets/connectors/static-server/adapter.d.ts.map +1 -1
  175. package/dist/factory-assets/connectors/static-server.js +8 -7
  176. package/dist/factory-assets/connectors/tunnel.js +8 -7
  177. package/dist/factory-assets/connectors/webdav.js +8 -7
  178. package/dist/factory-assets/connectors/xstate/adapter.d.ts +6 -0
  179. package/dist/factory-assets/connectors/xstate/adapter.d.ts.map +1 -1
  180. package/dist/factory-assets/connectors/xstate-store.js +8 -7
  181. package/dist/factory-assets/connectors/xstate.js +8 -7
  182. package/dist/flows-LV5WYJ2I.js +20 -0
  183. package/dist/{flows-FHWBCLXF.js.map → flows-LV5WYJ2I.js.map} +1 -1
  184. package/dist/{helpers-GUUWPPAX.js → helpers-PJ3CPUUL.js} +13 -12
  185. package/dist/{helpers-GUUWPPAX.js.map → helpers-PJ3CPUUL.js.map} +1 -1
  186. package/dist/library/index.js +8 -7
  187. package/dist/library/install.js +6 -5
  188. package/dist/{library-publish-UKKSJP7V.js → library-publish-HVZRCE3C.js} +16 -15
  189. package/dist/library-publish-HVZRCE3C.js.map +1 -0
  190. package/dist/{open-library-VALRYGFV.js → open-library-RMI2FTQ4.js} +14 -13
  191. package/dist/{open-library-VALRYGFV.js.map → open-library-RMI2FTQ4.js.map} +1 -1
  192. package/dist/{paths-5QJJBAND.js → paths-JSVTQAVW.js} +11 -10
  193. package/dist/{paths-5QJJBAND.js.map → paths-JSVTQAVW.js.map} +1 -1
  194. package/dist/plugin-registry/src/deploy-helpers.d.ts +1 -1
  195. package/dist/{plugin-store-ZBJZ7F6D.js → plugin-store-7TVJB2TS.js} +8 -7
  196. package/dist/plugin-store-7TVJB2TS.js.map +1 -0
  197. package/dist/{project-IRUJLIVX.js → project-P636MSYT.js} +14 -13
  198. package/dist/{project-IRUJLIVX.js.map → project-P636MSYT.js.map} +1 -1
  199. package/dist/resolver/index.js +13 -1
  200. package/dist/resolver/src/types.d.ts +7 -0
  201. package/dist/resolver/src/types.d.ts.map +1 -1
  202. package/dist/resolver/src/validator.d.ts +8 -1
  203. package/dist/resolver/src/validator.d.ts.map +1 -1
  204. package/dist/runner/index.js +13 -12
  205. package/dist/runner/src/external-mcp.d.ts +1 -1
  206. package/dist/runner/src/external-mcp.d.ts.map +1 -1
  207. package/dist/runner/src/mcp-prompt.d.ts +7 -3
  208. package/dist/runner/src/mcp-prompt.d.ts.map +1 -1
  209. package/dist/runner/src/mcp-runtime-handlers.d.ts +12 -0
  210. package/dist/runner/src/mcp-runtime-handlers.d.ts.map +1 -1
  211. package/dist/runner/src/mixin-resolver.d.ts.map +1 -1
  212. package/dist/runner/src/recipe-resolver.d.ts +20 -6
  213. package/dist/runner/src/recipe-resolver.d.ts.map +1 -1
  214. package/dist/runner/src/resource-handler.d.ts +43 -0
  215. package/dist/runner/src/resource-handler.d.ts.map +1 -1
  216. package/dist/runner/src/resources.d.ts +12 -5
  217. package/dist/runner/src/resources.d.ts.map +1 -1
  218. package/dist/runner/src/serve.d.ts +5 -5
  219. package/dist/runner/src/serve.d.ts.map +1 -1
  220. package/dist/runner/src/session-builder.d.ts +9 -0
  221. package/dist/runner/src/session-builder.d.ts.map +1 -1
  222. package/dist/runner/src/session-capability-wiring.d.ts +5 -0
  223. package/dist/runner/src/session-capability-wiring.d.ts.map +1 -1
  224. package/dist/runner/src/workspace-migration.d.ts +37 -3
  225. package/dist/runner/src/workspace-migration.d.ts.map +1 -1
  226. package/dist/sdk/asset-manager.js +10 -9
  227. package/dist/sdk/bridge.js +4 -3
  228. package/dist/sdk/core.js +6 -5
  229. package/dist/sdk/flow.js +6 -5
  230. package/dist/sdk/index.js +13 -12
  231. package/dist/sdk/index.js.map +1 -1
  232. package/dist/sdk/resolver.js +13 -1
  233. package/dist/sdk/runner.js +13 -12
  234. package/dist/sdk/session.js +1 -1
  235. package/dist/sdk/store.js +1 -1
  236. package/dist/session/index.js +1 -1
  237. package/dist/session/src/dispatcher.d.ts.map +1 -1
  238. package/dist/{setup-WJPNUE32.js → setup-OYW3W3XK.js} +10 -9
  239. package/dist/setup-OYW3W3XK.js.map +1 -0
  240. package/dist/skills-QY5PHBD3.js +20 -0
  241. package/dist/{skills-BMI6H7HI.js.map → skills-QY5PHBD3.js.map} +1 -1
  242. package/dist/{source-5KDURFBS.js → source-63CHWDC2.js} +15 -14
  243. package/dist/{source-5KDURFBS.js.map → source-63CHWDC2.js.map} +1 -1
  244. package/dist/{source-manifest-publish-DPQI44D3.js → source-manifest-publish-DLASGDK5.js} +17 -16
  245. package/dist/source-manifest-publish-DLASGDK5.js.map +1 -0
  246. package/dist/store/index.js +1 -1
  247. package/dist/store/src/store.d.ts +9 -0
  248. package/dist/store/src/store.d.ts.map +1 -1
  249. package/dist/tui/index.js +13 -12
  250. package/dist/tui/index.js.map +1 -1
  251. package/dist/validator-RN64BKFW.js +5 -0
  252. package/dist/{validator-VF5M764T.js.map → validator-RN64BKFW.js.map} +1 -1
  253. package/dist/workspace-plugin/adapters/mcp.js +18 -5
  254. package/dist/workspace-plugin/adapters/mcp.js.map +1 -1
  255. package/dist/workspace-plugin/adapters/omp.js +10 -10
  256. package/dist/workspace-plugin/index.js +3 -2
  257. package/dist/workspace-plugin/src/tools/validator.d.ts.map +1 -1
  258. package/dist/workspace-plugin/src/utils/ai-assets.d.ts +11 -6
  259. package/dist/workspace-plugin/src/utils/ai-assets.d.ts.map +1 -1
  260. package/package.json +1 -1
  261. package/dist/asset-feeds-WIBEP37F.js.map +0 -1
  262. package/dist/chunk-2BQBWWFX.js.map +0 -1
  263. package/dist/chunk-2IJFUAZB.js.map +0 -1
  264. package/dist/chunk-5NZ56R63.js.map +0 -1
  265. package/dist/chunk-6POODADP.js.map +0 -1
  266. package/dist/chunk-7J7LQP6T.js.map +0 -1
  267. package/dist/chunk-A22KZ7GZ.js.map +0 -1
  268. package/dist/chunk-ACXLKNIM.js.map +0 -1
  269. package/dist/chunk-BG4XVMG2.js.map +0 -1
  270. package/dist/chunk-BI2NKPA4.js.map +0 -1
  271. package/dist/chunk-BQCGFPHW.js +0 -345
  272. package/dist/chunk-BQCGFPHW.js.map +0 -1
  273. package/dist/chunk-FIUGSIKC.js.map +0 -1
  274. package/dist/chunk-GXC3TYMQ.js.map +0 -1
  275. package/dist/chunk-ISA7R7PK.js.map +0 -1
  276. package/dist/chunk-JB35MVBN.js.map +0 -1
  277. package/dist/chunk-KY5NY7LB.js.map +0 -1
  278. package/dist/chunk-LV2HPH3C.js +0 -73
  279. package/dist/chunk-LV2HPH3C.js.map +0 -1
  280. package/dist/chunk-XCBG2KDC.js +0 -23
  281. package/dist/chunk-XCBG2KDC.js.map +0 -1
  282. package/dist/ensure-sources-RSTZONIE.js.map +0 -1
  283. package/dist/flows-FHWBCLXF.js +0 -7
  284. package/dist/library-publish-UKKSJP7V.js.map +0 -1
  285. package/dist/plugin-store-ZBJZ7F6D.js.map +0 -1
  286. package/dist/setup-WJPNUE32.js.map +0 -1
  287. package/dist/skills-BMI6H7HI.js +0 -7
  288. package/dist/source-manifest-publish-DPQI44D3.js.map +0 -1
  289. package/dist/validator-VF5M764T.js +0 -5
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../resolver/src/parser.ts","../resolver/src/preamble.ts","../resolver/src/validator.ts","../resolver/src/version.ts"],"names":["parseYaml"],"mappings":"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","file":"chunk-GXC3TYMQ.js","sourcesContent":["import { parse as parseYaml } from \"yaml\";\nimport type { ConnectorRequirement, InputField, SkillRequirements } from \"./types.js\";\n\n/**\n * Extract YAML frontmatter from a SKILL.md string.\n *\n * Frontmatter is delimited by leading `---` fences. Returns the parsed object,\n * or an empty object `{}` if no frontmatter block is found or if the YAML is malformed.\n * Errors are silently swallowed — callers should treat an empty result as \"no requirements\".\n *\n * @param content - Raw SKILL.md file content (full string, including `---` fences)\n * @returns Parsed frontmatter object, or `{}` on absence or parse failure\n *\n * @docLink packages/resolver/api-reference#parseskill-frontmatter\n */\nexport function parseSkillFrontmatter(content: string): Record<string, any> {\n const match = content.match(/^---\\n([\\s\\S]*?)\\n---/);\n if (!match) return {};\n try {\n return parseYaml(match[1]!) ?? {};\n } catch {\n return {};\n }\n}\n\n/**\n * Parse skill requirements from raw SKILL.md content into a `SkillRequirements` object.\n *\n * Supports two frontmatter formats:\n * 1. **New format** — `metadata.prerequisites` with explicit\n * `files`, `inputs_required`, `inputs_optional`, `reads`, `produces`, and `resources` arrays.\n * 2. **Legacy format** — `metadata.user_inputs.dialog[]` array, automatically promoted to\n * `inputs_required` / `inputs_optional` based on each entry's `required` flag.\n *\n * Returns empty requirements `{ files: [], inputs_required: [], inputs_optional: [], reads: [], produces: [], resources: [] }`\n * when no recognisable prerequisites section is found.\n *\n * @param content - Raw SKILL.md file content (full string, including `---` fences)\n * @returns Structured `SkillRequirements` (never throws)\n *\n * @docLink packages/resolver/api-reference#parseskill-requirements\n */\nexport function parseSkillRequirements(content: string): SkillRequirements {\n const fm = parseSkillFrontmatter(content);\n const meta = fm.metadata ?? {};\n const prerequisites = meta.prerequisites ?? {};\n\n const empty: SkillRequirements = {\n files: [],\n inputs_required: [],\n inputs_optional: [],\n reads: [],\n produces: [],\n resources: [],\n connectors: [],\n };\n\n // New format: metadata.prerequisites\n if (\n prerequisites.files ||\n prerequisites.inputs_required ||\n prerequisites.inputs_optional ||\n prerequisites.reads ||\n prerequisites.produces ||\n prerequisites.resources ||\n prerequisites.connectors\n ) {\n return {\n files: (prerequisites.files ?? []).map((f: any) => ({\n path: f.path,\n gate: f.gate ?? \"hard\",\n description: f.description ?? \"\",\n ...(f.min_entries != null ? { min_entries: f.min_entries } : {}),\n })),\n inputs_required: (prerequisites.inputs_required ?? []).map(normalizeInputField(true)),\n inputs_optional: (prerequisites.inputs_optional ?? []).map(normalizeInputField(false)),\n reads: (prerequisites.reads ?? []).map((r: any) => ({\n path: r.path,\n description: r.description ?? \"\",\n })),\n produces: (prerequisites.produces ?? []).map((p: any) => ({\n path: p.path,\n description: p.description ?? \"\",\n })),\n resources: (prerequisites.resources ?? []).map((r: any) => ({\n id: r.id,\n ...(r.operations ? { operations: r.operations } : {}),\n optional: r.optional ?? false,\n ...(r.description ? { description: r.description } : {}),\n })),\n connectors: parseConnectorRequirements(prerequisites.connectors),\n };\n }\n\n // Legacy format: metadata.user_inputs.dialog[]\n const dialog = meta.user_inputs?.dialog;\n if (Array.isArray(dialog)) {\n const required: InputField[] = [];\n const optional: InputField[] = [];\n for (const d of dialog) {\n const field = normalizeInputField(d.required ?? false)(d);\n if (d.required) required.push(field);\n else optional.push(field);\n }\n return { ...empty, inputs_required: required, inputs_optional: optional, resources: [] };\n }\n\n return empty;\n}\n\n/**\n * Extract compaction directives from a SKILL.md markdown body.\n *\n * Scans the markdown body (not frontmatter) for a `## Compaction Directives` section\n * and returns each bullet point as a trimmed string. Compaction directives are hints\n * the agent uses to summarise context when the conversation history grows long.\n * Returns an empty array when the section is absent.\n *\n * @param content - Raw SKILL.md file content (full string including frontmatter and body)\n * @returns Array of directive strings extracted from the bullet list, or `[]` if none found\n *\n * @docLink packages/resolver/api-reference#parse-compaction-directives\n */\nexport function parseCompactionDirectives(content: string): string[] {\n const headerIdx = content.search(/^## Compaction Directives/m);\n if (headerIdx === -1) return [];\n\n // Header on the last line (no trailing newline) → no body to scan.\n const newlineIdx = content.indexOf(\"\\n\", headerIdx);\n if (newlineIdx === -1) return [];\n const bodyStart = newlineIdx + 1;\n const rest = content.slice(bodyStart);\n const nextSection = rest.search(/^##\\s/m);\n const sectionBody = nextSection === -1 ? rest : rest.slice(0, nextSection);\n\n const bullets: string[] = [];\n for (const line of sectionBody.split(\"\\n\")) {\n const match = line.match(/^\\s*[-*]\\s+(.+)/);\n if (match) bullets.push(match[1].trim());\n }\n return bullets;\n}\n\nfunction normalizeInputField(defaultRequired: boolean) {\n return (d: any): InputField => ({\n // UserInputSchema permits `key` or `id`; `prompt` is the legacy label alias.\n id: d.id ?? d.key,\n label: d.label ?? d.prompt ?? d.id ?? d.key,\n type: d.type ?? \"text\",\n required: d.required ?? defaultRequired,\n ...(d.options ? { options: d.options } : {}),\n ...(d.default != null ? { default: d.default } : {}),\n ...(d.hint ? { hint: d.hint } : {}),\n ...(d.schema ? { schema: d.schema } : {}),\n });\n}\n\nfunction parseConnectorRequirements(raw: unknown): ConnectorRequirement[] {\n if (!Array.isArray(raw)) return [];\n return raw\n .filter((c): c is Record<string, unknown> => typeof c === \"object\" && c !== null)\n .map((c) => ({\n driver: String(c.driver ?? \"\"),\n ...(c.access === \"read-write\"\n ? { access: \"read-write\" as const }\n : { access: \"read-only\" as const }),\n }))\n .filter((c) => c.driver.length > 0);\n}\n","import type { SkillRequirements } from \"./types.js\";\n\n/**\n * Generate a DSL-format preamble from skill requirements.\n *\n * The preamble is prepended to the skill prompt when the skill runs standalone\n * (without an orchestrator), giving the agent an explicit checklist of what to\n * verify before starting work. Each section maps to a requirement category:\n *\n * - `REQUIRES` — file/directory gates (`hard:` or `soft:` prefix)\n * - `INPUT` — user input fields, with a pointer to `input.json` if `skillId` is provided\n * - `READS` — informational read sources (not gated)\n * - `WRITES` — files the skill will produce\n * - `RESOURCE` — runtime resource dependencies\n *\n * Sections with no entries are omitted. Returns an empty string when all\n * requirement arrays are empty.\n *\n * @param requirements - Parsed requirements (output of `parseSkillRequirements`)\n * @param skillId - Optional skill identifier; when provided, the INPUT section includes\n * the canonical `input.json` path so the agent knows where to read collected values\n * @returns Multi-section DSL string, or `\"\"` if there are no requirements to list\n *\n * @example\n * ```ts\n * const preamble = buildRequiresPreamble(requirements, \"cf_overview\");\n * const fullPrompt = preamble ? `${preamble}\\n\\n${skillBody}` : skillBody;\n * ```\n *\n * @docLink packages/resolver/api-reference#build-requires-preamble\n */\nexport function buildRequiresPreamble(requirements: SkillRequirements, skillId?: string): string {\n const sections: string[] = [];\n\n pushSection(sections, buildRequiresSection(requirements));\n pushSection(sections, buildInputSection(requirements, skillId));\n pushSection(sections, buildReadsSection(requirements));\n pushSection(sections, buildWritesSection(requirements));\n pushSection(sections, buildResourceSection(requirements));\n\n return sections.join(\"\\n\\n\");\n}\n\n/** Append a section to the list when it produced output. */\nfunction pushSection(sections: string[], section: string | null): void {\n if (section !== null) sections.push(section);\n}\n\n/** REQUIRES section (file gates). Returns `null` when there are no file gates. */\nfunction buildRequiresSection(requirements: SkillRequirements): string | null {\n if (requirements.files.length === 0) return null;\n const lines = [\"REQUIRES\"];\n for (const f of requirements.files) {\n const prefix = f.gate === \"hard\" ? \"hard\" : \"soft\";\n lines.push(` ${prefix}: ${f.path} — ${f.description}`);\n }\n return lines.join(\"\\n\");\n}\n\n/** INPUT section (user inputs). Returns `null` when there are no inputs. */\nfunction buildInputSection(requirements: SkillRequirements, skillId?: string): string | null {\n const allInputs = [...requirements.inputs_required, ...requirements.inputs_optional];\n if (allInputs.length === 0) return null;\n const lines = [\"INPUT\"];\n if (skillId) {\n lines.push(` Read from: _concept/_grounding/${skillId}/input.json`);\n lines.push(\n ` If input.json is missing, ask the user for the following values and write the file:`,\n );\n }\n for (const input of allInputs) {\n const req = input.required ? \"(required)\" : \"(optional)\";\n const opts = input.options ? ` [${input.options.join(\" | \")}]` : \"\";\n const def = input.default != null ? ` default: ${input.default}` : \"\";\n lines.push(` - ${input.id}: ${input.label} ${req}${opts}${def}`);\n if (input.hint) lines.push(` hint: ${input.hint}`);\n }\n return lines.join(\"\\n\");\n}\n\n/** READS section. Returns `null` when there are no read sources. */\nfunction buildReadsSection(requirements: SkillRequirements): string | null {\n if (requirements.reads.length === 0) return null;\n const lines = [\"READS\"];\n for (const r of requirements.reads) {\n lines.push(` ? ${r.path} — ${r.description}`);\n }\n return lines.join(\"\\n\");\n}\n\n/** WRITES section (produces). Returns `null` when there is nothing produced. */\nfunction buildWritesSection(requirements: SkillRequirements): string | null {\n if (requirements.produces.length === 0) return null;\n const lines = [\"WRITES\"];\n for (const p of requirements.produces) {\n lines.push(` ${p.path} — ${p.description}`);\n }\n return lines.join(\"\\n\");\n}\n\n/** RESOURCE section. Returns `null` when there are no resources. */\nfunction buildResourceSection(requirements: SkillRequirements): string | null {\n if (!requirements.resources || requirements.resources.length === 0) return null;\n const lines = [\"RESOURCE\"];\n for (const r of requirements.resources) {\n const req = r.optional ? \"(optional)\" : \"(required)\";\n const ops = r.operations ? ` ops: [${r.operations.join(\", \")}]` : \"\";\n lines.push(` ${r.id} ${req}${ops}`);\n if (r.description) lines.push(` — ${r.description}`);\n }\n return lines.join(\"\\n\");\n}\n","import fs from \"node:fs\";\nimport path from \"node:path\";\nimport type {\n ConnectorRequirement,\n FileCheck,\n InputCheck,\n NodeOverrides,\n ReadCheck,\n RequirementsReport,\n ResourceCheck,\n SkillInputFile,\n SkillRequirements,\n} from \"./types.js\";\n\n/**\n * Validate skill requirements against the filesystem and collected inputs.\n *\n * File checks resolve paths relative to `projectDir`. Hard-gate files that are absent\n * set `satisfied: false` on the returned report; soft-gate misses are recorded but do not block.\n * Input checks read `_concept/_grounding/{skillId}/input.json`; missing files are treated as\n * no inputs collected. Resource checks are always recorded as `available: true` — actual\n * availability must be confirmed by the runner's `ResourceManager`.\n *\n * @param skillId - Canonical skill identifier, used to locate `input.json`\n * @param requirements - Parsed requirements from SKILL.md (`parseSkillRequirements` output)\n * @param projectDir - Absolute path to the project root directory\n * @param overrides - Optional flow-level overrides; paths in `skip_checks` are treated as present\n * @param producesIndex - Maps file paths to the skill ID that produces them, enabling \"produced by\" hints in the report\n * @returns `RequirementsReport` with per-check results and an overall `satisfied` flag\n *\n * @docLink packages/resolver/api-reference#validate-requirements\n */\nexport function validateRequirements(\n skillId: string,\n requirements: SkillRequirements,\n projectDir: string,\n overrides?: NodeOverrides,\n producesIndex?: Map<string, string>,\n): RequirementsReport {\n const skipSet = new Set(overrides?.skip_checks ?? []);\n\n // Check files\n const files: FileCheck[] = requirements.files.map((req) => {\n if (skipSet.has(req.path)) {\n return { path: req.path, gate: req.gate, exists: true, description: req.description };\n }\n\n const fullPath = path.join(projectDir, req.path);\n let exists: boolean;\n\n if (req.min_entries != null) {\n exists = checkDirectoryMinEntries(fullPath, req.min_entries);\n } else {\n exists = fs.existsSync(fullPath);\n }\n\n const producedBy = producesIndex?.get(req.path);\n return { path: req.path, gate: req.gate, exists, description: req.description, producedBy };\n });\n\n // Check inputs — look for _concept/_grounding/{skillId}/input.json\n const inputFile = path.join(projectDir, \"_concept\", \"_grounding\", skillId, \"input.json\");\n let collectedValues: Record<string, any> = {};\n try {\n const raw = fs.readFileSync(inputFile, \"utf-8\");\n const parsed = JSON.parse(raw) as SkillInputFile;\n collectedValues = parsed.values ?? {};\n } catch {\n // No input file — all inputs are missing\n }\n\n const allInputs = [\n ...requirements.inputs_required.map((f) => ({ field: f, required: true })),\n ...requirements.inputs_optional.map((f) => ({ field: f, required: false })),\n ];\n\n const inputs: InputCheck[] = allInputs.map(({ field, required }) => ({\n id: field.id,\n required,\n present: field.id in collectedValues,\n field,\n }));\n\n // Check reads (informational only)\n const reads: ReadCheck[] = requirements.reads.map((r) => ({\n path: r.path,\n exists: fs.existsSync(path.join(projectDir, r.path)),\n description: r.description,\n }));\n\n // Check resources (validated at a higher level if a ResourceManager is available;\n // here we just record them in the report with unknown status)\n const resources: ResourceCheck[] = (requirements.resources ?? []).map((r) => ({\n id: r.id,\n available: true, // Actual availability checked by runner with ResourceManager\n missingOps: [],\n optional: r.optional ?? false,\n }));\n\n // Satisfaction: all hard file gates pass AND all required inputs present\n const hardFilesSatisfied = files.filter((f) => f.gate === \"hard\").every((f) => f.exists);\n\n const requiredInputsSatisfied = inputs.filter((i) => i.required).every((i) => i.present);\n\n const requiredResourcesSatisfied = resources.filter((r) => !r.optional).every((r) => r.available);\n\n return {\n skillId,\n satisfied: hardFilesSatisfied && requiredInputsSatisfied && requiredResourcesSatisfied,\n files,\n inputs,\n reads,\n resources,\n };\n}\n\n/**\n * A warning produced by `validateConnectorRequirements` when a skill's declared\n * connector requirement is not satisfied by the connectors in skaile.yaml.\n * Each warning covers either a missing driver or an insufficient access level.\n *\n * @docLink packages/resolver/api-reference#connector-validation-warning\n */\nexport interface ConnectorValidationWarning {\n /** Driver name that triggered the warning. */\n driver: string;\n /** Human-readable explanation of the gap, including a remediation command where applicable. */\n message: string;\n}\n\n/** Minimal structural type accepted by validateConnectorRequirements. Compatible with both\n * ConnectorDeclaration shapes in @skaile/workspaces/core and @skaile/workspaces/connectors. */\ninterface AvailableConnector {\n driver: string;\n access?: \"read-only\" | \"read-write\";\n}\n\n/**\n * Check that all connector requirements declared in a skill's SKILL.md are\n * satisfied by the connectors declared in skaile.yaml.\n *\n * Returns one warning per gap — either a missing driver or an insufficient\n * access level. This is a pre-flight advisory; no runtime enforcement is done.\n *\n * @param requirements - Connector requirements from `parseSkillRequirements().connectors`\n * @param available - Connector declarations from `skaile.yaml` (via `loadConnectorDeclarations`)\n * @returns Array of warnings — one per gap. Empty array when all requirements are satisfied.\n *\n * @docLink packages/resolver/api-reference#validate-connector-requirements\n */\nexport function validateConnectorRequirements(\n requirements: ConnectorRequirement[],\n available: AvailableConnector[],\n): ConnectorValidationWarning[] {\n const warnings: ConnectorValidationWarning[] = [];\n\n for (const req of requirements) {\n const matches = available.filter((a) => a.driver === req.driver);\n\n if (matches.length === 0) {\n warnings.push({\n driver: req.driver,\n message:\n `Skill requires connector driver \"${req.driver}\" but none is declared in skaile.yaml. ` +\n `Run: skaile connector add ${req.driver}`,\n });\n continue;\n }\n\n if (req.access === \"read-write\") {\n const hasReadWrite = matches.some((m) => (m.access ?? \"read-only\") === \"read-write\");\n if (!hasReadWrite) {\n warnings.push({\n driver: req.driver,\n message:\n `Skill requires \"${req.driver}\" with read-write access, but all declared instances ` +\n `are read-only. Update access in skaile.yaml.`,\n });\n }\n }\n }\n\n return warnings;\n}\n\n/** Count files recursively in a directory. Returns false if the directory does not exist or contains fewer than min files. */\nfunction checkDirectoryMinEntries(dirPath: string, minEntries: number): boolean {\n try {\n const stat = fs.statSync(dirPath);\n if (!stat.isDirectory()) return false;\n const count = countFilesRecursive(dirPath);\n return count >= minEntries;\n } catch {\n return false;\n }\n}\n\nfunction countFilesRecursive(dirPath: string): number {\n let count = 0;\n for (const entry of fs.readdirSync(dirPath, { withFileTypes: true })) {\n if (entry.isFile()) count++;\n else if (entry.isDirectory()) count += countFilesRecursive(path.join(dirPath, entry.name));\n }\n return count;\n}\n","import { satisfies, valid, validRange } from \"semver\";\n\n/**\n * Result of a single flow-node version pin check.\n * Returned in the array produced by `validateFlowVersions()` for every\n * node that declares a `requestedVersion`.\n *\n * @docLink packages/resolver/api-reference#version-check\n */\nexport interface VersionCheck {\n /** Flow node identifier. */\n nodeId: string;\n /** Canonical skill identifier. */\n skillId: string;\n /** Semver range from the flow node (e.g. \"^1.0.0\") */\n requested: string;\n /** Version from the skill's frontmatter */\n actual: string;\n /** Whether `actual` satisfies the `requested` semver range. */\n satisfied: boolean;\n}\n\n/**\n * Minimal descriptor for a flow node that optionally pins a skill version.\n * Passed as input to `validateFlowVersions()`. Nodes without `requestedVersion`\n * are skipped during version checking.\n *\n * @docLink packages/resolver/api-reference#flow-version-node\n */\nexport interface FlowVersionNode {\n /** Flow node identifier. */\n nodeId: string;\n /** Canonical skill identifier referenced by this node. */\n skillId: string;\n /** Optional semver range the node requires (e.g. `\"^1.2.0\"`). Omit to skip version checking. */\n requestedVersion?: string;\n}\n\n/**\n * Validate flow node version pins against discovered skill versions.\n *\n * Only checks nodes that declare a `requestedVersion`. Nodes without a\n * version pin are skipped entirely (no entry is produced for those nodes).\n * A check is marked `satisfied: false` when the range is invalid, the actual\n * version string is not valid semver, or the version does not satisfy the range.\n *\n * @param nodes - Flow nodes to check; only those with `requestedVersion` are evaluated\n * @param skillVersions - Map from skill ID to the semver version string in its frontmatter\n * @returns Array of `VersionCheck` results, one per node that declared a version pin\n *\n * @docLink packages/resolver/api-reference#validate-flow-versions\n */\nexport function validateFlowVersions(\n nodes: FlowVersionNode[],\n skillVersions: Map<string, string>,\n): VersionCheck[] {\n const checks: VersionCheck[] = [];\n\n for (const node of nodes) {\n if (!node.requestedVersion) continue;\n\n const actual = skillVersions.get(node.skillId) ?? \"\";\n const requested = node.requestedVersion;\n\n // Invalid range or missing/invalid actual version → not satisfied\n const rangeValid = validRange(requested) !== null;\n const actualValid = actual !== \"\" && valid(actual) !== null;\n const isSatisfied = rangeValid && actualValid && satisfies(actual, requested);\n\n checks.push({\n nodeId: node.nodeId,\n skillId: node.skillId,\n requested,\n actual,\n satisfied: isSatisfied,\n });\n }\n\n return checks;\n}\n"]}