veryfront 0.1.48 → 0.1.49

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 (524) hide show
  1. package/esm/cli/app/components/inline-input.d.ts +1 -4
  2. package/esm/cli/app/components/inline-input.d.ts.map +1 -1
  3. package/esm/cli/app/components/inline-input.js +1 -1
  4. package/esm/cli/app/components/list-select.d.ts +0 -8
  5. package/esm/cli/app/components/list-select.d.ts.map +1 -1
  6. package/esm/cli/app/components/list-select.js +0 -13
  7. package/esm/cli/app/operations/project-creation.d.ts +2 -14
  8. package/esm/cli/app/operations/project-creation.d.ts.map +1 -1
  9. package/esm/cli/app/operations/project-creation.js +3 -68
  10. package/esm/cli/app/shell.js +1 -1
  11. package/esm/cli/app/utils.d.ts +1 -2
  12. package/esm/cli/app/utils.d.ts.map +1 -1
  13. package/esm/cli/app/utils.js +1 -17
  14. package/esm/cli/app/views/dashboard.d.ts +0 -4
  15. package/esm/cli/app/views/dashboard.d.ts.map +1 -1
  16. package/esm/cli/app/views/dashboard.js +0 -15
  17. package/esm/cli/app/views/startup.d.ts +0 -4
  18. package/esm/cli/app/views/startup.d.ts.map +1 -1
  19. package/esm/cli/app/views/startup.js +0 -7
  20. package/esm/cli/auth/login.d.ts.map +1 -1
  21. package/esm/cli/auth/login.js +1 -2
  22. package/esm/cli/auth/token-store.js +1 -1
  23. package/esm/cli/auth/utils.d.ts +2 -1
  24. package/esm/cli/auth/utils.d.ts.map +1 -1
  25. package/esm/cli/commands/generate/integration-generator.js +1 -1
  26. package/esm/cli/commands/install/types.d.ts +2 -2
  27. package/esm/cli/help/formatters.d.ts +1 -1
  28. package/esm/cli/help/formatters.d.ts.map +1 -1
  29. package/esm/cli/help/formatters.js +8 -4
  30. package/esm/cli/help/main-help.d.ts.map +1 -1
  31. package/esm/cli/help/main-help.js +2 -2
  32. package/esm/cli/mcp/server.d.ts +0 -1
  33. package/esm/cli/mcp/server.d.ts.map +1 -1
  34. package/esm/cli/mcp/server.js +2 -5
  35. package/esm/cli/mcp/tools/dev-tools.d.ts +1 -1
  36. package/esm/cli/mcp/tools/dev-tools.d.ts.map +1 -1
  37. package/esm/cli/mcp/tools/dev-tools.js +1 -2
  38. package/esm/cli/mcp/tools/scaffold-tools.d.ts +2 -2
  39. package/esm/cli/mcp/tools.d.ts +1 -2
  40. package/esm/cli/mcp/tools.d.ts.map +1 -1
  41. package/esm/cli/mcp/tools.js +1 -2
  42. package/esm/cli/shared/reserve-slug.d.ts.map +1 -1
  43. package/esm/cli/shared/reserve-slug.js +1 -3
  44. package/esm/cli/sync/ignore.d.ts +1 -1
  45. package/esm/cli/sync/ignore.d.ts.map +1 -1
  46. package/esm/cli/sync/ignore.js +22 -18
  47. package/esm/cli/ui/colors.d.ts +0 -1
  48. package/esm/cli/ui/colors.d.ts.map +1 -1
  49. package/esm/cli/ui/colors.js +0 -10
  50. package/esm/cli/ui/dot-matrix.d.ts.map +1 -1
  51. package/esm/cli/ui/dot-matrix.js +2 -5
  52. package/esm/cli/ui/tui.js +2 -3
  53. package/esm/cli/utils/index.js +1 -2
  54. package/esm/cli/utils/package-manager.d.ts.map +1 -1
  55. package/esm/cli/utils/package-manager.js +3 -4
  56. package/esm/deno.d.ts +3 -0
  57. package/esm/deno.js +22 -19
  58. package/esm/src/agent/chat-handler.d.ts.map +1 -1
  59. package/esm/src/agent/chat-handler.js +8 -23
  60. package/esm/src/agent/factory.d.ts +0 -8
  61. package/esm/src/agent/factory.d.ts.map +1 -1
  62. package/esm/src/agent/factory.js +50 -1
  63. package/esm/src/agent/index.d.ts +16 -1
  64. package/esm/src/agent/index.d.ts.map +1 -1
  65. package/esm/src/agent/index.js +16 -1
  66. package/esm/src/agent/memory/memory.d.ts +2 -2
  67. package/esm/src/agent/memory/memory.d.ts.map +1 -1
  68. package/esm/src/agent/memory/memory.js +0 -1
  69. package/esm/src/agent/react/use-chat/types.d.ts +2 -0
  70. package/esm/src/agent/react/use-chat/types.d.ts.map +1 -1
  71. package/esm/src/agent/react/use-chat/use-chat.d.ts.map +1 -1
  72. package/esm/src/agent/react/use-chat/use-chat.js +15 -9
  73. package/esm/src/agent/runtime/index.d.ts +18 -0
  74. package/esm/src/agent/runtime/index.d.ts.map +1 -1
  75. package/esm/src/agent/runtime/index.js +167 -36
  76. package/esm/src/agent/runtime/tool-helpers.d.ts +6 -1
  77. package/esm/src/agent/runtime/tool-helpers.d.ts.map +1 -1
  78. package/esm/src/agent/runtime/tool-helpers.js +10 -1
  79. package/esm/src/agent/schemas/agent.schema.d.ts +4 -4
  80. package/esm/src/agent/types.d.ts +10 -0
  81. package/esm/src/agent/types.d.ts.map +1 -1
  82. package/esm/src/ai/registry-manager.d.ts.map +1 -1
  83. package/esm/src/ai/registry-manager.js +2 -1
  84. package/esm/src/build/bundler/code-splitter/manifest-builder.d.ts +0 -2
  85. package/esm/src/build/bundler/code-splitter/manifest-builder.d.ts.map +1 -1
  86. package/esm/src/build/bundler/code-splitter/manifest-builder.js +1 -1
  87. package/esm/src/build/compiler/mdx-compiler/validator.d.ts.map +1 -1
  88. package/esm/src/build/compiler/mdx-compiler/validator.js +2 -3
  89. package/esm/src/build/compiler/mdx-to-js.d.ts +0 -2
  90. package/esm/src/build/compiler/mdx-to-js.d.ts.map +1 -1
  91. package/esm/src/build/compiler/mdx-to-js.js +0 -81
  92. package/esm/src/build/index.d.ts +0 -6
  93. package/esm/src/build/index.d.ts.map +1 -1
  94. package/esm/src/build/index.js +0 -1
  95. package/esm/src/build/production-build/build/route-collector.d.ts.map +1 -1
  96. package/esm/src/build/production-build/build/route-collector.js +2 -3
  97. package/esm/src/build/production-build/templates.d.ts +5 -9
  98. package/esm/src/build/production-build/templates.d.ts.map +1 -1
  99. package/esm/src/build/production-build/templates.js +6 -18
  100. package/esm/src/build/vendor-cache.d.ts.map +1 -1
  101. package/esm/src/build/vendor-cache.js +0 -5
  102. package/esm/src/cache/tokenizing-gateway.d.ts +0 -2
  103. package/esm/src/cache/tokenizing-gateway.d.ts.map +1 -1
  104. package/esm/src/cache/tokenizing-gateway.js +1 -3
  105. package/esm/src/chat/index.d.ts +2 -2
  106. package/esm/src/chat/index.d.ts.map +1 -1
  107. package/esm/src/chat/index.js +1 -1
  108. package/esm/src/config/define-config.d.ts.map +1 -1
  109. package/esm/src/config/define-config.js +28 -25
  110. package/esm/src/config/loader.d.ts.map +1 -1
  111. package/esm/src/config/loader.js +10 -7
  112. package/esm/src/config/schemas/config.schema.d.ts +58 -12
  113. package/esm/src/config/schemas/config.schema.d.ts.map +1 -1
  114. package/esm/src/config/schemas/config.schema.js +12 -0
  115. package/esm/src/data/data-fetcher.d.ts +1 -2
  116. package/esm/src/data/data-fetcher.d.ts.map +1 -1
  117. package/esm/src/data/data-fetcher.js +14 -15
  118. package/esm/src/data/server-data-fetcher.d.ts +0 -3
  119. package/esm/src/data/server-data-fetcher.d.ts.map +1 -1
  120. package/esm/src/data/server-data-fetcher.js +1 -8
  121. package/esm/src/data/static-data-fetcher.d.ts +1 -3
  122. package/esm/src/data/static-data-fetcher.d.ts.map +1 -1
  123. package/esm/src/data/static-data-fetcher.js +1 -3
  124. package/esm/src/discovery/discovery-engine.d.ts.map +1 -1
  125. package/esm/src/discovery/discovery-engine.js +19 -1
  126. package/esm/src/discovery/discovery-utils.d.ts +0 -4
  127. package/esm/src/discovery/discovery-utils.d.ts.map +1 -1
  128. package/esm/src/discovery/discovery-utils.js +0 -6
  129. package/esm/src/discovery/file-discovery.d.ts +3 -1
  130. package/esm/src/discovery/file-discovery.d.ts.map +1 -1
  131. package/esm/src/discovery/file-discovery.js +3 -8
  132. package/esm/src/discovery/handlers/index.d.ts +1 -0
  133. package/esm/src/discovery/handlers/index.d.ts.map +1 -1
  134. package/esm/src/discovery/handlers/index.js +1 -0
  135. package/esm/src/discovery/handlers/skill-handler.d.ts +26 -0
  136. package/esm/src/discovery/handlers/skill-handler.d.ts.map +1 -0
  137. package/esm/src/discovery/handlers/skill-handler.js +87 -0
  138. package/esm/src/discovery/handlers/task-handler.d.ts.map +1 -1
  139. package/esm/src/discovery/handlers/task-handler.js +1 -5
  140. package/esm/src/discovery/transpiler.d.ts.map +1 -1
  141. package/esm/src/discovery/transpiler.js +7 -4
  142. package/esm/src/discovery/types.d.ts +3 -0
  143. package/esm/src/discovery/types.d.ts.map +1 -1
  144. package/esm/src/embedding/resolve.d.ts.map +1 -1
  145. package/esm/src/embedding/resolve.js +1 -3
  146. package/esm/src/embedding/upload-handler.d.ts.map +1 -1
  147. package/esm/src/embedding/upload-handler.js +4 -3
  148. package/esm/src/embedding/upload-store.js +4 -4
  149. package/esm/src/errors/error-registry.d.ts +2 -1
  150. package/esm/src/errors/error-registry.d.ts.map +1 -1
  151. package/esm/src/errors/http-error.d.ts +1 -2
  152. package/esm/src/errors/http-error.d.ts.map +1 -1
  153. package/esm/src/errors/http-error.js +2 -2
  154. package/esm/src/errors/middleware/cli-error-boundary.d.ts.map +1 -1
  155. package/esm/src/errors/middleware/cli-error-boundary.js +13 -2
  156. package/esm/src/errors/middleware/wrap-unknown.d.ts +0 -7
  157. package/esm/src/errors/middleware/wrap-unknown.d.ts.map +1 -1
  158. package/esm/src/errors/middleware/wrap-unknown.js +0 -9
  159. package/esm/src/errors/veryfront-error.d.ts +0 -3
  160. package/esm/src/errors/veryfront-error.d.ts.map +1 -1
  161. package/esm/src/errors/veryfront-error.js +0 -5
  162. package/esm/src/html/schemas/html.schema.d.ts +2 -2
  163. package/esm/src/html/styles-builder/css-hash-cache.d.ts.map +1 -1
  164. package/esm/src/html/styles-builder/css-hash-cache.js +1 -2
  165. package/esm/src/html/styles-builder/plugin-loader.d.ts.map +1 -1
  166. package/esm/src/html/styles-builder/plugin-loader.js +50 -21
  167. package/esm/src/html/styles-builder/tailwind-compiler-cache.d.ts.map +1 -1
  168. package/esm/src/html/styles-builder/tailwind-compiler-cache.js +12 -4
  169. package/esm/src/html/utils.d.ts +0 -7
  170. package/esm/src/html/utils.d.ts.map +1 -1
  171. package/esm/src/html/utils.js +0 -25
  172. package/esm/src/modules/component-registry/registry.d.ts +0 -3
  173. package/esm/src/modules/component-registry/registry.d.ts.map +1 -1
  174. package/esm/src/modules/component-registry/registry.js +0 -3
  175. package/esm/src/oauth/handlers/callback-handler.d.ts +2 -0
  176. package/esm/src/oauth/handlers/callback-handler.d.ts.map +1 -1
  177. package/esm/src/oauth/handlers/callback-handler.js +10 -4
  178. package/esm/src/oauth/providers/common.d.ts.map +1 -1
  179. package/esm/src/oauth/providers/common.js +0 -23
  180. package/esm/src/observability/auto-instrument/react-instrumentation.js +2 -1
  181. package/esm/src/observability/instruments/instruments-factory.d.ts +1 -1
  182. package/esm/src/observability/instruments/instruments-factory.d.ts.map +1 -1
  183. package/esm/src/observability/instruments/instruments-factory.js +5 -4
  184. package/esm/src/observability/metrics/config.js +5 -4
  185. package/esm/src/observability/metrics/manager.js +1 -1
  186. package/esm/src/observability/tracing/span-operations.d.ts.map +1 -1
  187. package/esm/src/observability/tracing/span-operations.js +14 -8
  188. package/esm/src/platform/compat/console/node.d.ts +0 -1
  189. package/esm/src/platform/compat/console/node.d.ts.map +1 -1
  190. package/esm/src/platform/compat/console/node.js +4 -11
  191. package/esm/src/platform/compat/fs.d.ts.map +1 -1
  192. package/esm/src/platform/compat/fs.js +4 -2
  193. package/esm/src/platform/compat/opaque-deps.d.ts +4 -2
  194. package/esm/src/platform/compat/opaque-deps.d.ts.map +1 -1
  195. package/esm/src/platform/compat/opaque-deps.js +1 -1
  196. package/esm/src/platform/compat/path/basic-operations.d.ts.map +1 -1
  197. package/esm/src/platform/compat/path/basic-operations.js +8 -7
  198. package/esm/src/platform/compat/path/resolution.d.ts.map +1 -1
  199. package/esm/src/platform/compat/path/resolution.js +15 -10
  200. package/esm/src/platform/compat/path/url-conversion.d.ts.map +1 -1
  201. package/esm/src/platform/compat/path/url-conversion.js +3 -2
  202. package/esm/src/platform/compat/process.d.ts +2 -14
  203. package/esm/src/platform/compat/process.d.ts.map +1 -1
  204. package/esm/src/platform/compat/process.js +92 -70
  205. package/esm/src/provider/index.d.ts +1 -1
  206. package/esm/src/provider/index.d.ts.map +1 -1
  207. package/esm/src/provider/index.js +1 -1
  208. package/esm/src/provider/local/ai-sdk-adapter.d.ts.map +1 -1
  209. package/esm/src/provider/local/ai-sdk-adapter.js +18 -18
  210. package/esm/src/provider/local/env.d.ts.map +1 -1
  211. package/esm/src/provider/local/env.js +2 -1
  212. package/esm/src/provider/model-registry.d.ts +10 -0
  213. package/esm/src/provider/model-registry.d.ts.map +1 -1
  214. package/esm/src/provider/model-registry.js +43 -0
  215. package/esm/src/proxy/retry.d.ts +3 -3
  216. package/esm/src/proxy/retry.d.ts.map +1 -1
  217. package/esm/src/proxy/retry.js +0 -7
  218. package/esm/src/proxy/tracing.d.ts +1 -5
  219. package/esm/src/proxy/tracing.d.ts.map +1 -1
  220. package/esm/src/proxy/tracing.js +1 -7
  221. package/esm/src/react/components/ai/chat/components/code-block.js +1 -1
  222. package/esm/src/react/components/ai/chat/components/skill-badge.d.ts +12 -0
  223. package/esm/src/react/components/ai/chat/components/skill-badge.d.ts.map +1 -0
  224. package/esm/src/react/components/ai/chat/components/skill-badge.js +34 -0
  225. package/esm/src/react/components/ai/chat/components/step-indicator.js +4 -4
  226. package/esm/src/react/components/ai/chat/composition/chat-message-list.d.ts.map +1 -1
  227. package/esm/src/react/components/ai/chat/composition/chat-message-list.js +8 -2
  228. package/esm/src/react/components/ai/chat/composition/message.d.ts.map +1 -1
  229. package/esm/src/react/components/ai/chat/composition/message.js +8 -2
  230. package/esm/src/react/components/ai/chat/index.d.ts +4 -1
  231. package/esm/src/react/components/ai/chat/index.d.ts.map +1 -1
  232. package/esm/src/react/components/ai/chat/index.js +4 -3
  233. package/esm/src/react/components/ai/chat/utils/message-parts.d.ts +2 -0
  234. package/esm/src/react/components/ai/chat/utils/message-parts.d.ts.map +1 -1
  235. package/esm/src/react/components/ai/chat/utils/message-parts.js +9 -0
  236. package/esm/src/react/components/ai/chat-with-sidebar.d.ts +1 -0
  237. package/esm/src/react/components/ai/chat-with-sidebar.d.ts.map +1 -1
  238. package/esm/src/react/components/ai/chat-with-sidebar.js +1 -0
  239. package/esm/src/react/components/ai/chat.d.ts +1 -1
  240. package/esm/src/react/components/ai/chat.d.ts.map +1 -1
  241. package/esm/src/react/components/ai/chat.js +1 -1
  242. package/esm/src/rendering/cache/index.d.ts +1 -5
  243. package/esm/src/rendering/cache/index.d.ts.map +1 -1
  244. package/esm/src/rendering/cache/index.js +1 -5
  245. package/esm/src/rendering/orchestrator/pipeline.d.ts +11 -2
  246. package/esm/src/rendering/orchestrator/pipeline.d.ts.map +1 -1
  247. package/esm/src/rendering/shared/context-aware-cache.d.ts.map +1 -1
  248. package/esm/src/rendering/shared/context-aware-cache.js +0 -4
  249. package/esm/src/repositories/schemas/index.d.ts +1 -1
  250. package/esm/src/repositories/schemas/index.d.ts.map +1 -1
  251. package/esm/src/repositories/schemas/index.js +1 -1
  252. package/esm/src/repositories/schemas/repository.schema.d.ts +0 -11
  253. package/esm/src/repositories/schemas/repository.schema.d.ts.map +1 -1
  254. package/esm/src/repositories/schemas/repository.schema.js +0 -13
  255. package/esm/src/repositories/types.d.ts +1 -1
  256. package/esm/src/repositories/types.d.ts.map +1 -1
  257. package/esm/src/routing/api/module-loader/loader.d.ts.map +1 -1
  258. package/esm/src/routing/api/module-loader/loader.js +63 -7
  259. package/esm/src/routing/api/openapi/path-utils.d.ts +0 -19
  260. package/esm/src/routing/api/openapi/path-utils.d.ts.map +1 -1
  261. package/esm/src/routing/api/openapi/path-utils.js +0 -34
  262. package/esm/src/routing/api/openapi/spec-generator.d.ts.map +1 -1
  263. package/esm/src/routing/api/openapi/spec-generator.js +1 -19
  264. package/esm/src/routing/api/openapi/types.d.ts +1 -0
  265. package/esm/src/routing/api/openapi/types.d.ts.map +1 -1
  266. package/esm/src/routing/api/openapi/types.js +18 -0
  267. package/esm/src/sandbox/sandbox.d.ts +1 -0
  268. package/esm/src/sandbox/sandbox.d.ts.map +1 -1
  269. package/esm/src/sandbox/sandbox.js +7 -8
  270. package/esm/src/security/http/cors/constants.d.ts +0 -2
  271. package/esm/src/security/http/cors/constants.d.ts.map +1 -1
  272. package/esm/src/security/http/cors/constants.js +0 -2
  273. package/esm/src/security/http/response/index.d.ts +3 -4
  274. package/esm/src/security/http/response/index.d.ts.map +1 -1
  275. package/esm/src/security/http/response/index.js +2 -3
  276. package/esm/src/server/context/enriched-context.d.ts +0 -8
  277. package/esm/src/server/context/enriched-context.d.ts.map +1 -1
  278. package/esm/src/server/context/enriched-context.js +1 -12
  279. package/esm/src/server/dev-server/server.d.ts.map +1 -1
  280. package/esm/src/server/dev-server/server.js +11 -4
  281. package/esm/src/server/dev-ui/manifest.d.ts +20 -20
  282. package/esm/src/server/dev-ui/manifest.js +20 -20
  283. package/esm/src/server/handlers/dev/framework-candidates.generated.d.ts.map +1 -1
  284. package/esm/src/server/handlers/dev/framework-candidates.generated.js +426 -179
  285. package/esm/src/server/runtime-handler/index.d.ts.map +1 -1
  286. package/esm/src/server/runtime-handler/index.js +14 -24
  287. package/esm/src/server/shared/renderer/memory/pressure.d.ts +0 -7
  288. package/esm/src/server/shared/renderer/memory/pressure.d.ts.map +1 -1
  289. package/esm/src/server/shared/renderer/memory/pressure.js +1 -13
  290. package/esm/src/server/utils/domain-lookup.d.ts +0 -4
  291. package/esm/src/server/utils/domain-lookup.d.ts.map +1 -1
  292. package/esm/src/server/utils/domain-lookup.js +0 -3
  293. package/esm/src/skill/allowed-tools.d.ts +54 -0
  294. package/esm/src/skill/allowed-tools.d.ts.map +1 -0
  295. package/esm/src/skill/allowed-tools.js +87 -0
  296. package/esm/src/skill/executor.d.ts +28 -0
  297. package/esm/src/skill/executor.d.ts.map +1 -0
  298. package/esm/src/skill/executor.js +187 -0
  299. package/esm/src/skill/index.d.ts +19 -0
  300. package/esm/src/skill/index.d.ts.map +1 -0
  301. package/esm/src/skill/index.js +24 -0
  302. package/esm/src/skill/parser.d.ts +30 -0
  303. package/esm/src/skill/parser.d.ts.map +1 -0
  304. package/esm/src/skill/parser.js +162 -0
  305. package/esm/src/skill/path-safety.d.ts +22 -0
  306. package/esm/src/skill/path-safety.d.ts.map +1 -0
  307. package/esm/src/skill/path-safety.js +156 -0
  308. package/esm/src/skill/prompt-augmentation.d.ts +19 -0
  309. package/esm/src/skill/prompt-augmentation.d.ts.map +1 -0
  310. package/esm/src/skill/prompt-augmentation.js +36 -0
  311. package/esm/src/skill/registry.d.ts +25 -0
  312. package/esm/src/skill/registry.d.ts.map +1 -0
  313. package/esm/src/skill/registry.js +42 -0
  314. package/esm/src/skill/tools.d.ts +27 -0
  315. package/esm/src/skill/tools.d.ts.map +1 -0
  316. package/esm/src/skill/tools.js +149 -0
  317. package/esm/src/skill/types.d.ts +85 -0
  318. package/esm/src/skill/types.d.ts.map +1 -0
  319. package/esm/src/skill/types.js +27 -0
  320. package/esm/src/studio/bridge/bridge-bundle.generated.d.ts +1 -1
  321. package/esm/src/studio/bridge/bridge-bundle.generated.d.ts.map +1 -1
  322. package/esm/src/studio/bridge/bridge-bundle.generated.js +1 -1
  323. package/esm/src/studio/element-selector-injector.d.ts +0 -2
  324. package/esm/src/studio/element-selector-injector.d.ts.map +1 -1
  325. package/esm/src/task/runner.d.ts +6 -0
  326. package/esm/src/task/runner.d.ts.map +1 -1
  327. package/esm/src/task/runner.js +8 -8
  328. package/esm/src/tool/factory.js +31 -39
  329. package/esm/src/transforms/esm/http-cache-helpers.d.ts +0 -8
  330. package/esm/src/transforms/esm/http-cache-helpers.d.ts.map +1 -1
  331. package/esm/src/transforms/esm/http-cache-helpers.js +0 -20
  332. package/esm/src/transforms/esm/path-resolver.d.ts +0 -14
  333. package/esm/src/transforms/esm/path-resolver.d.ts.map +1 -1
  334. package/esm/src/transforms/esm/path-resolver.js +1 -92
  335. package/esm/src/transforms/esm/source-url-embed.d.ts +0 -14
  336. package/esm/src/transforms/esm/source-url-embed.d.ts.map +1 -1
  337. package/esm/src/transforms/esm/source-url-embed.js +0 -47
  338. package/esm/src/transforms/esm/transform-cache.d.ts.map +1 -1
  339. package/esm/src/transforms/esm/transform-cache.js +2 -6
  340. package/esm/src/transforms/mdx/index.d.ts +0 -1
  341. package/esm/src/transforms/mdx/index.d.ts.map +1 -1
  342. package/esm/src/transforms/mdx/index.js +0 -4
  343. package/esm/src/transforms/pipeline/context.d.ts +0 -1
  344. package/esm/src/transforms/pipeline/context.d.ts.map +1 -1
  345. package/esm/src/transforms/pipeline/context.js +0 -1
  346. package/esm/src/transforms/pipeline/index.d.ts +1 -2
  347. package/esm/src/transforms/pipeline/index.d.ts.map +1 -1
  348. package/esm/src/transforms/pipeline/index.js +0 -3
  349. package/esm/src/transforms/pipeline/stages/ssr-http-cache.d.ts.map +1 -1
  350. package/esm/src/transforms/pipeline/stages/ssr-http-cache.js +0 -1
  351. package/esm/src/types/entities/getEntityInfo.js +1 -1
  352. package/esm/src/types/index.d.ts +2 -13
  353. package/esm/src/types/index.d.ts.map +1 -1
  354. package/esm/src/types/server.d.ts +2 -1
  355. package/esm/src/types/server.d.ts.map +1 -1
  356. package/esm/src/utils/cache-file-ops.d.ts +1 -1
  357. package/esm/src/utils/cache-file-ops.d.ts.map +1 -1
  358. package/esm/src/utils/cache-file-ops.js +5 -6
  359. package/esm/src/utils/lru-wrapper.d.ts.map +1 -1
  360. package/esm/src/utils/lru-wrapper.js +2 -4
  361. package/esm/src/workflow/claude-code/event-publisher.d.ts +0 -4
  362. package/esm/src/workflow/claude-code/event-publisher.d.ts.map +1 -1
  363. package/esm/src/workflow/claude-code/event-publisher.js +2 -6
  364. package/esm/src/workflow/executor/workflow-executor.d.ts.map +1 -1
  365. package/esm/src/workflow/executor/workflow-executor.js +6 -1
  366. package/esm/src/workflow/react/use-workflow-list.d.ts.map +1 -1
  367. package/esm/src/workflow/react/use-workflow-list.js +2 -1
  368. package/esm/src/workflow/schemas/workflow.schema.d.ts +8 -8
  369. package/package.json +1 -2
  370. package/src/cli/app/components/inline-input.ts +0 -5
  371. package/src/cli/app/components/list-select.ts +0 -21
  372. package/src/cli/app/operations/project-creation.ts +4 -109
  373. package/src/cli/app/shell.ts +1 -1
  374. package/src/cli/app/utils.ts +0 -22
  375. package/src/cli/app/views/dashboard.ts +0 -17
  376. package/src/cli/app/views/startup.ts +0 -13
  377. package/src/cli/auth/login.ts +1 -2
  378. package/src/cli/auth/token-store.ts +1 -1
  379. package/src/cli/auth/utils.ts +2 -1
  380. package/src/cli/commands/generate/integration-generator.ts +1 -1
  381. package/src/cli/help/formatters.ts +11 -4
  382. package/src/cli/help/main-help.ts +2 -3
  383. package/src/cli/mcp/server.ts +2 -5
  384. package/src/cli/mcp/tools/dev-tools.ts +1 -2
  385. package/src/cli/mcp/tools.ts +8 -2
  386. package/src/cli/shared/reserve-slug.ts +1 -4
  387. package/src/cli/sync/ignore.ts +26 -21
  388. package/src/cli/ui/colors.ts +0 -12
  389. package/src/cli/ui/dot-matrix.ts +3 -6
  390. package/src/cli/ui/tui.ts +3 -3
  391. package/src/cli/utils/index.ts +1 -1
  392. package/src/cli/utils/package-manager.ts +3 -4
  393. package/src/deno.js +22 -19
  394. package/src/src/agent/chat-handler.ts +8 -23
  395. package/src/src/agent/factory.ts +58 -9
  396. package/src/src/agent/index.ts +16 -1
  397. package/src/src/agent/memory/memory.ts +0 -9
  398. package/src/src/agent/react/use-chat/types.ts +2 -0
  399. package/src/src/agent/react/use-chat/use-chat.ts +15 -9
  400. package/src/src/agent/runtime/index.ts +213 -35
  401. package/src/src/agent/runtime/tool-helpers.ts +9 -0
  402. package/src/src/agent/types.ts +10 -0
  403. package/src/src/ai/registry-manager.ts +2 -1
  404. package/src/src/build/bundler/code-splitter/manifest-builder.ts +1 -1
  405. package/src/src/build/compiler/mdx-compiler/validator.ts +3 -7
  406. package/src/src/build/compiler/mdx-to-js.ts +0 -101
  407. package/src/src/build/index.ts +0 -8
  408. package/src/src/build/production-build/build/route-collector.ts +2 -4
  409. package/src/src/build/production-build/templates.ts +9 -18
  410. package/src/src/build/vendor-cache.ts +0 -6
  411. package/src/src/cache/tokenizing-gateway.ts +1 -9
  412. package/src/src/chat/index.ts +3 -0
  413. package/src/src/config/define-config.ts +30 -29
  414. package/src/src/config/loader.ts +10 -9
  415. package/src/src/config/schemas/config.schema.ts +12 -0
  416. package/src/src/data/data-fetcher.ts +15 -21
  417. package/src/src/data/server-data-fetcher.ts +1 -8
  418. package/src/src/data/static-data-fetcher.ts +1 -6
  419. package/src/src/discovery/discovery-engine.ts +27 -0
  420. package/src/src/discovery/discovery-utils.ts +0 -7
  421. package/src/src/discovery/file-discovery.ts +3 -9
  422. package/src/src/discovery/handlers/index.ts +1 -0
  423. package/src/src/discovery/handlers/skill-handler.ts +123 -0
  424. package/src/src/discovery/handlers/task-handler.ts +1 -5
  425. package/src/src/discovery/transpiler.ts +7 -4
  426. package/src/src/discovery/types.ts +3 -0
  427. package/src/src/embedding/resolve.ts +1 -3
  428. package/src/src/embedding/upload-handler.ts +7 -3
  429. package/src/src/embedding/upload-store.ts +4 -4
  430. package/src/src/errors/error-registry.ts +2 -2
  431. package/src/src/errors/http-error.ts +7 -3
  432. package/src/src/errors/middleware/cli-error-boundary.ts +28 -2
  433. package/src/src/errors/middleware/wrap-unknown.ts +0 -10
  434. package/src/src/errors/veryfront-error.ts +0 -9
  435. package/src/src/html/styles-builder/css-hash-cache.ts +5 -2
  436. package/src/src/html/styles-builder/plugin-loader.ts +58 -21
  437. package/src/src/html/styles-builder/tailwind-compiler-cache.ts +11 -4
  438. package/src/src/html/utils.ts +0 -33
  439. package/src/src/modules/component-registry/registry.ts +0 -3
  440. package/src/src/modules/server/websocket-handler.ts +1 -1
  441. package/src/src/oauth/handlers/callback-handler.ts +17 -5
  442. package/src/src/oauth/providers/base.ts +3 -3
  443. package/src/src/oauth/providers/common.ts +0 -23
  444. package/src/src/observability/auto-instrument/react-instrumentation.ts +2 -2
  445. package/src/src/observability/instruments/instruments-factory.ts +6 -6
  446. package/src/src/observability/metrics/config.ts +5 -5
  447. package/src/src/observability/metrics/manager.ts +1 -1
  448. package/src/src/observability/tracing/span-operations.ts +14 -9
  449. package/src/src/platform/compat/console/node.ts +4 -14
  450. package/src/src/platform/compat/fs.ts +14 -3
  451. package/src/src/platform/compat/opaque-deps.ts +10 -5
  452. package/src/src/platform/compat/path/basic-operations.ts +9 -7
  453. package/src/src/platform/compat/path/resolution.ts +15 -8
  454. package/src/src/platform/compat/path/url-conversion.ts +10 -6
  455. package/src/src/platform/compat/process.ts +133 -76
  456. package/src/src/provider/index.ts +1 -0
  457. package/src/src/provider/local/ai-sdk-adapter.ts +40 -37
  458. package/src/src/provider/local/env.ts +4 -1
  459. package/src/src/provider/model-registry.ts +47 -0
  460. package/src/src/proxy/retry.ts +0 -9
  461. package/src/src/proxy/tracing.ts +1 -9
  462. package/src/src/react/components/ai/chat/components/code-block.tsx +1 -1
  463. package/src/src/react/components/ai/chat/components/skill-badge.tsx +51 -0
  464. package/src/src/react/components/ai/chat/components/step-indicator.tsx +4 -4
  465. package/src/src/react/components/ai/chat/composition/chat-message-list.tsx +9 -2
  466. package/src/src/react/components/ai/chat/composition/message.tsx +9 -2
  467. package/src/src/react/components/ai/chat/index.tsx +6 -1
  468. package/src/src/react/components/ai/chat/utils/message-parts.ts +11 -0
  469. package/src/src/react/components/ai/chat-with-sidebar.tsx +2 -0
  470. package/src/src/react/components/ai/chat.tsx +3 -0
  471. package/src/src/rendering/cache/index.ts +12 -5
  472. package/src/src/rendering/orchestrator/pipeline.ts +12 -2
  473. package/src/src/rendering/renderer.ts +1 -1
  474. package/src/src/rendering/shared/context-aware-cache.ts +0 -5
  475. package/src/src/repositories/schemas/index.ts +0 -2
  476. package/src/src/repositories/schemas/repository.schema.ts +0 -15
  477. package/src/src/repositories/types.ts +1 -6
  478. package/src/src/routing/api/module-loader/loader.ts +88 -3
  479. package/src/src/routing/api/openapi/path-utils.ts +0 -39
  480. package/src/src/routing/api/openapi/spec-generator.ts +1 -20
  481. package/src/src/routing/api/openapi/types.ts +20 -0
  482. package/src/src/sandbox/sandbox.ts +8 -8
  483. package/src/src/security/http/cors/constants.ts +0 -4
  484. package/src/src/security/http/response/index.ts +3 -9
  485. package/src/src/server/context/enriched-context.ts +1 -19
  486. package/src/src/server/dev-server/server.ts +11 -4
  487. package/src/src/server/dev-ui/manifest.js +20 -20
  488. package/src/src/server/handlers/dev/framework-candidates.generated.ts +426 -179
  489. package/src/src/server/runtime-handler/index.ts +17 -28
  490. package/src/src/server/shared/renderer/memory/pressure.ts +2 -15
  491. package/src/src/server/utils/domain-lookup.ts +0 -4
  492. package/src/src/skill/allowed-tools.ts +107 -0
  493. package/src/src/skill/executor.ts +215 -0
  494. package/src/src/skill/index.ts +60 -0
  495. package/src/src/skill/parser.ts +214 -0
  496. package/src/src/skill/path-safety.ts +203 -0
  497. package/src/src/skill/prompt-augmentation.ts +48 -0
  498. package/src/src/skill/registry.ts +51 -0
  499. package/src/src/skill/tools.ts +197 -0
  500. package/src/src/skill/types.ts +107 -0
  501. package/src/src/studio/bridge/bridge-bundle.generated.ts +1 -1
  502. package/src/src/studio/element-selector-injector.ts +0 -2
  503. package/src/src/task/runner.ts +10 -8
  504. package/src/src/tool/factory.ts +54 -54
  505. package/src/src/transforms/esm/http-cache-helpers.ts +0 -20
  506. package/src/src/transforms/esm/path-resolver.ts +1 -140
  507. package/src/src/transforms/esm/source-url-embed.ts +0 -53
  508. package/src/src/transforms/esm/transform-cache.ts +3 -7
  509. package/src/src/transforms/mdx/index.ts +0 -5
  510. package/src/src/transforms/pipeline/context.ts +0 -2
  511. package/src/src/transforms/pipeline/index.ts +0 -4
  512. package/src/src/transforms/pipeline/stages/ssr-http-cache.ts +0 -1
  513. package/src/src/types/entities/getEntityInfo.ts +1 -1
  514. package/src/src/types/index.ts +1 -20
  515. package/src/src/types/server.ts +1 -1
  516. package/src/src/utils/cache-file-ops.ts +5 -5
  517. package/src/src/utils/lru-wrapper.ts +2 -8
  518. package/src/src/workflow/claude-code/event-publisher.ts +13 -4
  519. package/src/src/workflow/executor/workflow-executor.ts +7 -2
  520. package/src/src/workflow/react/use-workflow-list.ts +3 -2
  521. package/esm/src/transforms/mdx/parser.d.ts +0 -4
  522. package/esm/src/transforms/mdx/parser.d.ts.map +0 -1
  523. package/esm/src/transforms/mdx/parser.js +0 -49
  524. package/src/src/transforms/mdx/parser.ts +0 -65
@@ -473,15 +473,15 @@ export declare const veryfrontConfigSchema: z.ZodObject<{
473
473
  serviceName: z.ZodOptional<z.ZodOptional<z.ZodString>>;
474
474
  sampleRate: z.ZodOptional<z.ZodOptional<z.ZodNumber>>;
475
475
  }, "strip", z.ZodTypeAny, {
476
- endpoint?: string | undefined;
477
476
  enabled?: boolean | undefined;
478
477
  exporter?: "console" | "jaeger" | "zipkin" | "otlp" | undefined;
478
+ endpoint?: string | undefined;
479
479
  serviceName?: string | undefined;
480
480
  sampleRate?: number | undefined;
481
481
  }, {
482
- endpoint?: string | undefined;
483
482
  enabled?: boolean | undefined;
484
483
  exporter?: "console" | "jaeger" | "zipkin" | "otlp" | undefined;
484
+ endpoint?: string | undefined;
485
485
  serviceName?: string | undefined;
486
486
  sampleRate?: number | undefined;
487
487
  }>>>;
@@ -492,45 +492,45 @@ export declare const veryfrontConfigSchema: z.ZodObject<{
492
492
  prefix: z.ZodOptional<z.ZodOptional<z.ZodString>>;
493
493
  collectInterval: z.ZodOptional<z.ZodOptional<z.ZodNumber>>;
494
494
  }, "strip", z.ZodTypeAny, {
495
- endpoint?: string | undefined;
496
495
  enabled?: boolean | undefined;
497
496
  exporter?: "console" | "otlp" | "prometheus" | undefined;
497
+ endpoint?: string | undefined;
498
498
  prefix?: string | undefined;
499
499
  collectInterval?: number | undefined;
500
500
  }, {
501
- endpoint?: string | undefined;
502
501
  enabled?: boolean | undefined;
503
502
  exporter?: "console" | "otlp" | "prometheus" | undefined;
503
+ endpoint?: string | undefined;
504
504
  prefix?: string | undefined;
505
505
  collectInterval?: number | undefined;
506
506
  }>>>;
507
507
  }, "strip", z.ZodTypeAny, {
508
508
  tracing?: {
509
- endpoint?: string | undefined;
510
509
  enabled?: boolean | undefined;
511
510
  exporter?: "console" | "jaeger" | "zipkin" | "otlp" | undefined;
511
+ endpoint?: string | undefined;
512
512
  serviceName?: string | undefined;
513
513
  sampleRate?: number | undefined;
514
514
  } | undefined;
515
515
  metrics?: {
516
- endpoint?: string | undefined;
517
516
  enabled?: boolean | undefined;
518
517
  exporter?: "console" | "otlp" | "prometheus" | undefined;
518
+ endpoint?: string | undefined;
519
519
  prefix?: string | undefined;
520
520
  collectInterval?: number | undefined;
521
521
  } | undefined;
522
522
  }, {
523
523
  tracing?: {
524
- endpoint?: string | undefined;
525
524
  enabled?: boolean | undefined;
526
525
  exporter?: "console" | "jaeger" | "zipkin" | "otlp" | undefined;
526
+ endpoint?: string | undefined;
527
527
  serviceName?: string | undefined;
528
528
  sampleRate?: number | undefined;
529
529
  } | undefined;
530
530
  metrics?: {
531
- endpoint?: string | undefined;
532
531
  enabled?: boolean | undefined;
533
532
  exporter?: "console" | "otlp" | "prometheus" | undefined;
533
+ endpoint?: string | undefined;
534
534
  prefix?: string | undefined;
535
535
  collectInterval?: number | undefined;
536
536
  } | undefined;
@@ -905,6 +905,28 @@ export declare const veryfrontConfigSchema: z.ZodObject<{
905
905
  paths?: string[] | undefined;
906
906
  } | undefined;
907
907
  }>>>;
908
+ skills: z.ZodOptional<z.ZodOptional<z.ZodObject<{
909
+ discovery: z.ZodOptional<z.ZodOptional<z.ZodObject<{
910
+ enabled: z.ZodOptional<z.ZodOptional<z.ZodBoolean>>;
911
+ paths: z.ZodOptional<z.ZodOptional<z.ZodArray<z.ZodString, "many">>>;
912
+ }, "strip", z.ZodTypeAny, {
913
+ enabled?: boolean | undefined;
914
+ paths?: string[] | undefined;
915
+ }, {
916
+ enabled?: boolean | undefined;
917
+ paths?: string[] | undefined;
918
+ }>>>;
919
+ }, "strip", z.ZodTypeAny, {
920
+ discovery?: {
921
+ enabled?: boolean | undefined;
922
+ paths?: string[] | undefined;
923
+ } | undefined;
924
+ }, {
925
+ discovery?: {
926
+ enabled?: boolean | undefined;
927
+ paths?: string[] | undefined;
928
+ } | undefined;
929
+ }>>>;
908
930
  mcp: z.ZodOptional<z.ZodOptional<z.ZodObject<{
909
931
  enabled: z.ZodOptional<z.ZodOptional<z.ZodBoolean>>;
910
932
  port: z.ZodOptional<z.ZodOptional<z.ZodNumber>>;
@@ -938,6 +960,12 @@ export declare const veryfrontConfigSchema: z.ZodObject<{
938
960
  paths?: string[] | undefined;
939
961
  } | undefined;
940
962
  } | undefined;
963
+ skills?: {
964
+ discovery?: {
965
+ enabled?: boolean | undefined;
966
+ paths?: string[] | undefined;
967
+ } | undefined;
968
+ } | undefined;
941
969
  mcp?: {
942
970
  port?: number | undefined;
943
971
  enabled?: boolean | undefined;
@@ -963,6 +991,12 @@ export declare const veryfrontConfigSchema: z.ZodObject<{
963
991
  paths?: string[] | undefined;
964
992
  } | undefined;
965
993
  } | undefined;
994
+ skills?: {
995
+ discovery?: {
996
+ enabled?: boolean | undefined;
997
+ paths?: string[] | undefined;
998
+ } | undefined;
999
+ } | undefined;
966
1000
  mcp?: {
967
1001
  port?: number | undefined;
968
1002
  enabled?: boolean | undefined;
@@ -1186,6 +1220,12 @@ export declare const veryfrontConfigSchema: z.ZodObject<{
1186
1220
  paths?: string[] | undefined;
1187
1221
  } | undefined;
1188
1222
  } | undefined;
1223
+ skills?: {
1224
+ discovery?: {
1225
+ enabled?: boolean | undefined;
1226
+ paths?: string[] | undefined;
1227
+ } | undefined;
1228
+ } | undefined;
1189
1229
  mcp?: {
1190
1230
  port?: number | undefined;
1191
1231
  enabled?: boolean | undefined;
@@ -1304,16 +1344,16 @@ export declare const veryfrontConfigSchema: z.ZodObject<{
1304
1344
  } | undefined;
1305
1345
  observability?: {
1306
1346
  tracing?: {
1307
- endpoint?: string | undefined;
1308
1347
  enabled?: boolean | undefined;
1309
1348
  exporter?: "console" | "jaeger" | "zipkin" | "otlp" | undefined;
1349
+ endpoint?: string | undefined;
1310
1350
  serviceName?: string | undefined;
1311
1351
  sampleRate?: number | undefined;
1312
1352
  } | undefined;
1313
1353
  metrics?: {
1314
- endpoint?: string | undefined;
1315
1354
  enabled?: boolean | undefined;
1316
1355
  exporter?: "console" | "otlp" | "prometheus" | undefined;
1356
+ endpoint?: string | undefined;
1317
1357
  prefix?: string | undefined;
1318
1358
  collectInterval?: number | undefined;
1319
1359
  } | undefined;
@@ -1456,6 +1496,12 @@ export declare const veryfrontConfigSchema: z.ZodObject<{
1456
1496
  paths?: string[] | undefined;
1457
1497
  } | undefined;
1458
1498
  } | undefined;
1499
+ skills?: {
1500
+ discovery?: {
1501
+ enabled?: boolean | undefined;
1502
+ paths?: string[] | undefined;
1503
+ } | undefined;
1504
+ } | undefined;
1459
1505
  mcp?: {
1460
1506
  port?: number | undefined;
1461
1507
  enabled?: boolean | undefined;
@@ -1574,16 +1620,16 @@ export declare const veryfrontConfigSchema: z.ZodObject<{
1574
1620
  } | undefined;
1575
1621
  observability?: {
1576
1622
  tracing?: {
1577
- endpoint?: string | undefined;
1578
1623
  enabled?: boolean | undefined;
1579
1624
  exporter?: "console" | "jaeger" | "zipkin" | "otlp" | undefined;
1625
+ endpoint?: string | undefined;
1580
1626
  serviceName?: string | undefined;
1581
1627
  sampleRate?: number | undefined;
1582
1628
  } | undefined;
1583
1629
  metrics?: {
1584
- endpoint?: string | undefined;
1585
1630
  enabled?: boolean | undefined;
1586
1631
  exporter?: "console" | "otlp" | "prometheus" | undefined;
1632
+ endpoint?: string | undefined;
1587
1633
  prefix?: string | undefined;
1588
1634
  collectInterval?: number | undefined;
1589
1635
  } | undefined;
@@ -1 +1 @@
1
- {"version":3,"file":"config.schema.d.ts","sourceRoot":"","sources":["../../../../src/src/config/schemas/config.schema.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"config.schema.d.ts","sourceRoot":"","sources":["../../../../src/src/config/schemas/config.schema.ts"],"names":[],"mappings":"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"}
@@ -390,6 +390,18 @@ export const veryfrontConfigSchema = z
390
390
  })
391
391
  .partial()
392
392
  .optional(),
393
+ skills: z
394
+ .object({
395
+ discovery: z
396
+ .object({
397
+ enabled: z.boolean().optional(),
398
+ paths: z.array(z.string()).optional(),
399
+ })
400
+ .partial()
401
+ .optional(),
402
+ })
403
+ .partial()
404
+ .optional(),
393
405
  mcp: z
394
406
  .object({
395
407
  enabled: z.boolean().optional(),
@@ -1,11 +1,10 @@
1
- import type { RuntimeAdapter } from "../platform/adapters/base.js";
2
1
  import type { DataContext, DataResult, PageWithData, StaticPathsResult } from "./types.js";
3
2
  export declare class DataFetcher {
4
3
  private cacheManager;
5
4
  private serverFetcher;
6
5
  private staticFetcher;
7
6
  private pathsFetcher;
8
- constructor(adapter?: RuntimeAdapter);
7
+ constructor(adapter?: unknown);
9
8
  fetchData(pageModule: PageWithData, context: DataContext, mode?: "development" | "production"): Promise<DataResult>;
10
9
  getStaticPaths(pageModule: PageWithData): Promise<StaticPathsResult | null>;
11
10
  clearCache(pattern?: string): void;
@@ -1 +1 @@
1
- {"version":3,"file":"data-fetcher.d.ts","sourceRoot":"","sources":["../../../src/src/data/data-fetcher.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,8BAA8B,CAAC;AAOnE,OAAO,KAAK,EAAE,WAAW,EAAE,UAAU,EAAE,YAAY,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAC;AAE3F,qBAAa,WAAW;IACtB,OAAO,CAAC,YAAY,CAAe;IACnC,OAAO,CAAC,aAAa,CAAoB;IACzC,OAAO,CAAC,aAAa,CAAoB;IACzC,OAAO,CAAC,YAAY,CAAqB;gBAE7B,OAAO,CAAC,EAAE,cAAc;IAOpC,SAAS,CACP,UAAU,EAAE,YAAY,EACxB,OAAO,EAAE,WAAW,EACpB,IAAI,GAAE,aAAa,GAAG,YAA4B,GACjD,OAAO,CAAC,UAAU,CAAC;IA+BtB,cAAc,CAAC,UAAU,EAAE,YAAY,GAAG,OAAO,CAAC,iBAAiB,GAAG,IAAI,CAAC;IAI3E,UAAU,CAAC,OAAO,CAAC,EAAE,MAAM,GAAG,IAAI;CAQnC"}
1
+ {"version":3,"file":"data-fetcher.d.ts","sourceRoot":"","sources":["../../../src/src/data/data-fetcher.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,WAAW,EAAE,UAAU,EAAE,YAAY,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAC;AAE3F,qBAAa,WAAW;IACtB,OAAO,CAAC,YAAY,CAAe;IACnC,OAAO,CAAC,aAAa,CAAoB;IACzC,OAAO,CAAC,aAAa,CAAoB;IACzC,OAAO,CAAC,YAAY,CAAqB;gBAG7B,OAAO,CAAC,EAAE,OAAO;IAO7B,SAAS,CACP,UAAU,EAAE,YAAY,EACxB,OAAO,EAAE,WAAW,EACpB,IAAI,GAAE,aAAa,GAAG,YAA4B,GACjD,OAAO,CAAC,UAAU,CAAC;IA0BtB,cAAc,CAAC,UAAU,EAAE,YAAY,GAAG,OAAO,CAAC,iBAAiB,GAAG,IAAI,CAAC;IAI3E,UAAU,CAAC,OAAO,CAAC,EAAE,MAAM,GAAG,IAAI;CAQnC"}
@@ -9,29 +9,28 @@ export class DataFetcher {
9
9
  serverFetcher;
10
10
  staticFetcher;
11
11
  pathsFetcher;
12
+ // deno-lint-ignore no-unused-vars -- adapter kept for public API compatibility
12
13
  constructor(adapter) {
13
14
  this.cacheManager = new CacheManager();
14
- this.serverFetcher = new ServerDataFetcher(adapter);
15
- this.staticFetcher = new StaticDataFetcher(this.cacheManager, adapter);
15
+ this.serverFetcher = new ServerDataFetcher();
16
+ this.staticFetcher = new StaticDataFetcher(this.cacheManager);
16
17
  this.pathsFetcher = new StaticPathsFetcher();
17
18
  }
18
19
  fetchData(pageModule, context, mode = "development") {
19
20
  const preferServerData = mode === "development" || !pageModule.getStaticData;
20
- let fetchType = "none";
21
- if (preferServerData && pageModule.getServerData) {
22
- fetchType = "server";
23
- }
24
- else if (pageModule.getStaticData) {
25
- fetchType = "static";
26
- }
27
- return withSpan(SpanNames.DATA_FETCH, async () => {
28
- if (preferServerData && pageModule.getServerData) {
21
+ const useServer = preferServerData && !!pageModule.getServerData;
22
+ const useStatic = !useServer && !!pageModule.getStaticData;
23
+ const fetchType = useServer
24
+ ? "server"
25
+ : useStatic
26
+ ? "static"
27
+ : "none";
28
+ return withSpan(SpanNames.DATA_FETCH, () => {
29
+ if (useServer)
29
30
  return this.serverFetcher.fetch(pageModule, context);
30
- }
31
- if (pageModule.getStaticData) {
31
+ if (useStatic)
32
32
  return this.staticFetcher.fetch(pageModule, context);
33
- }
34
- return { props: {} };
33
+ return Promise.resolve({ props: {} });
35
34
  }, {
36
35
  "data.fetch_type": fetchType,
37
36
  "data.mode": mode,
@@ -1,8 +1,5 @@
1
- import type { RuntimeAdapter } from "../platform/adapters/base.js";
2
1
  import type { DataContext, DataResult, PageWithData } from "./types.js";
3
2
  export declare class ServerDataFetcher {
4
- private adapter?;
5
- constructor(adapter?: RuntimeAdapter | undefined);
6
3
  fetch(pageModule: PageWithData, context: DataContext): Promise<DataResult>;
7
4
  /**
8
5
  * Log errors unconditionally. Production errors should always be logged.
@@ -1 +1 @@
1
- {"version":3,"file":"server-data-fetcher.d.ts","sourceRoot":"","sources":["../../../src/src/data/server-data-fetcher.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,8BAA8B,CAAC;AACnE,OAAO,KAAK,EAAE,WAAW,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAOxE,qBAAa,iBAAiB;IAChB,OAAO,CAAC,OAAO,CAAC;gBAAR,OAAO,CAAC,EAAE,cAAc,YAAA;IAE5C,KAAK,CAAC,UAAU,EAAE,YAAY,EAAE,OAAO,EAAE,WAAW,GAAG,OAAO,CAAC,UAAU,CAAC;IAqE1E;;;OAGG;IACH,OAAO,CAAC,QAAQ;CAGjB"}
1
+ {"version":3,"file":"server-data-fetcher.d.ts","sourceRoot":"","sources":["../../../src/src/data/server-data-fetcher.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAOxE,qBAAa,iBAAiB;IAC5B,KAAK,CAAC,UAAU,EAAE,YAAY,EAAE,OAAO,EAAE,WAAW,GAAG,OAAO,CAAC,UAAU,CAAC;IAkE1E;;;OAGG;IACH,OAAO,CAAC,QAAQ;CAGjB"}
@@ -4,10 +4,6 @@ import { TimeoutError, withTimeoutThrow } from "../rendering/utils/stream-utils.
4
4
  import { withSpan } from "../observability/tracing/otlp-setup.js";
5
5
  import { CircuitBreakerOpen, getCircuitBreaker } from "../utils/circuit-breaker.js";
6
6
  export class ServerDataFetcher {
7
- adapter;
8
- constructor(adapter) {
9
- this.adapter = adapter;
10
- }
11
7
  fetch(pageModule, context) {
12
8
  if (typeof pageModule.getServerData !== "function") {
13
9
  return Promise.resolve({ props: {} });
@@ -22,10 +18,7 @@ export class ServerDataFetcher {
22
18
  return withSpan("data.fetch_server", async () => {
23
19
  const start = performance.now();
24
20
  try {
25
- const getServerData = pageModule.getServerData;
26
- if (!getServerData)
27
- throw new Error(`No getServerData function on ${pathname}`);
28
- const result = await circuitBreaker.execute(() => withTimeoutThrow(Promise.resolve(getServerData(context)), DATA_FETCH_TIMEOUT_MS, `getServerData for ${pathname}`));
21
+ const result = await circuitBreaker.execute(() => withTimeoutThrow(Promise.resolve(pageModule.getServerData(context)), DATA_FETCH_TIMEOUT_MS, `getServerData for ${pathname}`));
29
22
  if (result.redirect)
30
23
  return { redirect: result.redirect };
31
24
  if (result.notFound)
@@ -1,11 +1,9 @@
1
- import type { RuntimeAdapter } from "../platform/adapters/base.js";
2
1
  import type { CacheManager } from "./data-fetching-cache.js";
3
2
  import type { DataContext, DataResult, PageWithData } from "./types.js";
4
3
  export declare class StaticDataFetcher {
5
4
  private cacheManager;
6
- private adapter?;
7
5
  private pendingRevalidations;
8
- constructor(cacheManager: CacheManager, adapter?: RuntimeAdapter | undefined);
6
+ constructor(cacheManager: CacheManager);
9
7
  fetch(pageModule: PageWithData, context: DataContext): Promise<DataResult>;
10
8
  private fetchFreshNoCache;
11
9
  private fetchFresh;
@@ -1 +1 @@
1
- {"version":3,"file":"static-data-fetcher.d.ts","sourceRoot":"","sources":["../../../src/src/data/static-data-fetcher.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,8BAA8B,CAAC;AACnE,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAC;AAC7D,OAAO,KAAK,EAAE,WAAW,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAoDxE,qBAAa,iBAAiB;IAI1B,OAAO,CAAC,YAAY;IACpB,OAAO,CAAC,OAAO,CAAC;IAJlB,OAAO,CAAC,oBAAoB,CAAoC;gBAGtD,YAAY,EAAE,YAAY,EAC1B,OAAO,CAAC,EAAE,cAAc,YAAA;IAG5B,KAAK,CAAC,UAAU,EAAE,YAAY,EAAE,OAAO,EAAE,WAAW,GAAG,OAAO,CAAC,UAAU,CAAC;YAuClE,iBAAiB;YA8BjB,UAAU;YAwEV,sBAAsB;IA2EpC;;;;;OAKG;IACH,OAAO,CAAC,QAAQ;CAIjB"}
1
+ {"version":3,"file":"static-data-fetcher.d.ts","sourceRoot":"","sources":["../../../src/src/data/static-data-fetcher.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAC;AAC7D,OAAO,KAAK,EAAE,WAAW,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAoDxE,qBAAa,iBAAiB;IAGhB,OAAO,CAAC,YAAY;IAFhC,OAAO,CAAC,oBAAoB,CAAoC;gBAE5C,YAAY,EAAE,YAAY;IAExC,KAAK,CAAC,UAAU,EAAE,YAAY,EAAE,OAAO,EAAE,WAAW,GAAG,OAAO,CAAC,UAAU,CAAC;YAuClE,iBAAiB;YA8BjB,UAAU;YAwEV,sBAAsB;IA2EpC;;;;;OAKG;IACH,OAAO,CAAC,QAAQ;CAIjB"}
@@ -39,11 +39,9 @@ function getProjectId(context, fallback) {
39
39
  }
40
40
  export class StaticDataFetcher {
41
41
  cacheManager;
42
- adapter;
43
42
  pendingRevalidations = new Map();
44
- constructor(cacheManager, adapter) {
43
+ constructor(cacheManager) {
45
44
  this.cacheManager = cacheManager;
46
- this.adapter = adapter;
47
45
  }
48
46
  async fetch(pageModule, context) {
49
47
  if (typeof pageModule.getStaticData !== "function")
@@ -1 +1 @@
1
- {"version":3,"file":"discovery-engine.d.ts","sourceRoot":"","sources":["../../../src/src/discovery/discovery-engine.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAKH,OAAO,KAAK,EACV,eAAe,EAEf,eAAe,EAEhB,MAAM,YAAY,CAAC;AA2DpB;;GAEG;AACH,wBAAsB,WAAW,CAAC,MAAM,EAAE,eAAe,GAAG,OAAO,CAAC,eAAe,CAAC,CAkDnF"}
1
+ {"version":3,"file":"discovery-engine.d.ts","sourceRoot":"","sources":["../../../src/src/discovery/discovery-engine.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAMH,OAAO,KAAK,EACV,eAAe,EAEf,eAAe,EAEhB,MAAM,YAAY,CAAC;AA6DpB;;GAEG;AACH,wBAAsB,WAAW,CAAC,MAAM,EAAE,eAAe,GAAG,OAAO,CAAC,eAAe,CAAC,CA0EnF"}
@@ -7,9 +7,11 @@
7
7
  import { detectPlatform } from "../platform/core-platform.js";
8
8
  import { agentLogger } from "../utils/logger/logger.js";
9
9
  import { ensureError } from "../errors/veryfront-error.js";
10
+ import { registerSkill, skillRegistry } from "../skill/registry.js";
10
11
  import { importModule } from "./transpiler.js";
11
12
  import { findTypeScriptFiles } from "./file-discovery.js";
12
- import { agentHandler, promptHandler, resourceHandler, taskHandler, toolHandler, workflowHandler, } from "./handlers/index.js";
13
+ import { agentHandler, discoverSkills, promptHandler, resourceHandler, taskHandler, toolHandler, workflowHandler, } from "./handlers/index.js";
14
+ import { join } from "../platform/compat/path/index.js";
13
15
  const logger = agentLogger.component("discovery");
14
16
  /**
15
17
  * Discover items of a specific type in a directory
@@ -57,6 +59,7 @@ export async function discoverAll(config) {
57
59
  const result = {
58
60
  tools: new Map(),
59
61
  agents: new Map(),
62
+ skills: new Map(),
60
63
  resources: new Map(),
61
64
  prompts: new Map(),
62
65
  workflows: new Map(),
@@ -87,5 +90,20 @@ export async function discoverAll(config) {
87
90
  for (const dir of config.taskDirs ?? ["tasks"]) {
88
91
  await discoverItems(`${baseDir}/${dir}`, result, context, taskHandler, config.verbose);
89
92
  }
93
+ // Clear stale skills before rediscovery so deleted/renamed skills are removed.
94
+ skillRegistry.clear();
95
+ // Discover skills (parallel path — markdown-based, not TypeScript import)
96
+ for (const dir of config.skillDirs ?? ["skills"]) {
97
+ const skillResult = await discoverSkills(join(baseDir, dir), context, config.verbose);
98
+ for (const [id, skill] of skillResult.skills) {
99
+ if (result.skills.has(id)) {
100
+ logger.warn(`Duplicate skill "${id}" across discovery roots; keeping first registration`);
101
+ continue;
102
+ }
103
+ registerSkill(id, skill);
104
+ result.skills.set(id, skill);
105
+ }
106
+ result.errors.push(...skillResult.errors.map((e) => ({ file: e.file, error: e.error })));
107
+ }
90
108
  return result;
91
109
  }
@@ -15,10 +15,6 @@ export declare function filePathToPattern(filePath: string, baseDir: string): st
15
15
  * Track an agent's file path for index generation
16
16
  */
17
17
  export declare function trackAgentPath(id: string, filePath: string): void;
18
- /**
19
- * Get all tracked agent paths
20
- */
21
- export declare function getTrackedAgentPaths(): Map<string, string>;
22
18
  /**
23
19
  * Clear tracked agent paths
24
20
  */
@@ -1 +1 @@
1
- {"version":3,"file":"discovery-utils.d.ts","sourceRoot":"","sources":["../../../src/src/discovery/discovery-utils.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH;;GAEG;AACH,wBAAgB,YAAY,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,CAKrD;AAED;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,MAAM,CAO3E;AAKD;;GAEG;AACH,wBAAgB,cAAc,CAAC,EAAE,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,IAAI,CAEjE;AAED;;GAEG;AACH,wBAAgB,oBAAoB,IAAI,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAE1D;AAED;;GAEG;AACH,wBAAgB,kBAAkB,IAAI,IAAI,CAEzC"}
1
+ {"version":3,"file":"discovery-utils.d.ts","sourceRoot":"","sources":["../../../src/src/discovery/discovery-utils.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH;;GAEG;AACH,wBAAgB,YAAY,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,CAKrD;AAED;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,MAAM,CAO3E;AAKD;;GAEG;AACH,wBAAgB,cAAc,CAAC,EAAE,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,IAAI,CAEjE;AAED;;GAEG;AACH,wBAAgB,kBAAkB,IAAI,IAAI,CAEzC"}
@@ -29,12 +29,6 @@ const discoveredAgentPaths = new Map();
29
29
  export function trackAgentPath(id, filePath) {
30
30
  discoveredAgentPaths.set(id, filePath);
31
31
  }
32
- /**
33
- * Get all tracked agent paths
34
- */
35
- export function getTrackedAgentPaths() {
36
- return discoveredAgentPaths;
37
- }
38
32
  /**
39
33
  * Clear tracked agent paths
40
34
  */
@@ -9,7 +9,9 @@ import type { FileDiscoveryContext } from "./types.js";
9
9
  */
10
10
  export declare function findTypeScriptFiles(dir: string, context: FileDiscoveryContext): Promise<string[]>;
11
11
  /**
12
- * Get Node.js fs and path modules (cached on context)
12
+ * Get Node.js fs and path modules (cached on context).
13
+ *
14
+ * Only called when no fsAdapter is present — callers must guard accordingly.
13
15
  */
14
16
  export declare function getNodeDeps(context: FileDiscoveryContext): Promise<{
15
17
  fs: typeof import("node:fs");
@@ -1 +1 @@
1
- {"version":3,"file":"file-discovery.d.ts","sourceRoot":"","sources":["../../../src/src/discovery/file-discovery.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,YAAY,CAAC;AAEvD;;GAEG;AACH,wBAAsB,mBAAmB,CACvC,GAAG,EAAE,MAAM,EACX,OAAO,EAAE,oBAAoB,GAC5B,OAAO,CAAC,MAAM,EAAE,CAAC,CA2CnB;AAED;;GAEG;AACH,wBAAsB,WAAW,CAC/B,OAAO,EAAE,oBAAoB,GAC5B,OAAO,CAAC;IAAE,EAAE,EAAE,cAAc,SAAS,CAAC,CAAC;IAAC,IAAI,EAAE,cAAc,WAAW,CAAC,CAAA;CAAE,CAAC,CAc7E"}
1
+ {"version":3,"file":"file-discovery.d.ts","sourceRoot":"","sources":["../../../src/src/discovery/file-discovery.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,YAAY,CAAC;AAEvD;;GAEG;AACH,wBAAsB,mBAAmB,CACvC,GAAG,EAAE,MAAM,EACX,OAAO,EAAE,oBAAoB,GAC5B,OAAO,CAAC,MAAM,EAAE,CAAC,CA2CnB;AAED;;;;GAIG;AACH,wBAAsB,WAAW,CAC/B,OAAO,EAAE,oBAAoB,GAC5B,OAAO,CAAC;IAAE,EAAE,EAAE,cAAc,SAAS,CAAC,CAAC;IAAC,IAAI,EAAE,cAAc,WAAW,CAAC,CAAA;CAAE,CAAC,CAM7E"}
@@ -44,18 +44,13 @@ export async function findTypeScriptFiles(dir, context) {
44
44
  return files;
45
45
  }
46
46
  /**
47
- * Get Node.js fs and path modules (cached on context)
47
+ * Get Node.js fs and path modules (cached on context).
48
+ *
49
+ * Only called when no fsAdapter is present — callers must guard accordingly.
48
50
  */
49
51
  export async function getNodeDeps(context) {
50
52
  if (context.nodeDeps)
51
53
  return context.nodeDeps;
52
- if (context.fsAdapter) {
53
- context.nodeDeps = {
54
- fs: {},
55
- path: {},
56
- };
57
- return context.nodeDeps;
58
- }
59
54
  const [fsModule, pathModule] = await Promise.all([import("node:fs"), import("node:path")]);
60
55
  context.nodeDeps = { fs: fsModule, path: pathModule };
61
56
  return context.nodeDeps;
@@ -9,4 +9,5 @@ export { resourceHandler } from "./resource-handler.js";
9
9
  export { promptHandler } from "./prompt-handler.js";
10
10
  export { workflowHandler } from "./workflow-handler.js";
11
11
  export { taskHandler } from "./task-handler.js";
12
+ export { discoverSkills } from "./skill-handler.js";
12
13
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/src/discovery/handlers/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAChD,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAClD,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AACxD,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACpD,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AACxD,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/src/discovery/handlers/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAChD,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAClD,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AACxD,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACpD,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AACxD,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAChD,OAAO,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC"}
@@ -9,3 +9,4 @@ export { resourceHandler } from "./resource-handler.js";
9
9
  export { promptHandler } from "./prompt-handler.js";
10
10
  export { workflowHandler } from "./workflow-handler.js";
11
11
  export { taskHandler } from "./task-handler.js";
12
+ export { discoverSkills } from "./skill-handler.js";
@@ -0,0 +1,26 @@
1
+ /**
2
+ * Skill Discovery Handler
3
+ *
4
+ * Discovers skills from SKILL.md files in project directories.
5
+ * This is a parallel discovery path — it does NOT implement DiscoveryHandler<T>
6
+ * (which expects TypeScript import()). Instead, it operates on markdown files.
7
+ */
8
+ import type { Skill } from "../../skill/index.js";
9
+ import type { FileDiscoveryContext } from "../types.js";
10
+ export interface SkillDiscoveryError {
11
+ file: string;
12
+ error: Error;
13
+ }
14
+ export interface SkillDiscoveryResult {
15
+ skills: Map<string, Skill>;
16
+ errors: SkillDiscoveryError[];
17
+ }
18
+ /**
19
+ * Discover skills from a directory.
20
+ *
21
+ * Scans for subdirectories containing SKILL.md files and parses them
22
+ * into Skill objects. Uses fsAdapter when available (for VFS/cloud),
23
+ * falling back to compat layer functions.
24
+ */
25
+ export declare function discoverSkills(dir: string, context: FileDiscoveryContext, verbose?: boolean): Promise<SkillDiscoveryResult>;
26
+ //# sourceMappingURL=skill-handler.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"skill-handler.d.ts","sourceRoot":"","sources":["../../../../src/src/discovery/handlers/skill-handler.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAQH,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,sBAAsB,CAAC;AAClD,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,aAAa,CAAC;AAIxD,MAAM,WAAW,mBAAmB;IAClC,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,KAAK,CAAC;CACd;AAED,MAAM,WAAW,oBAAoB;IACnC,MAAM,EAAE,GAAG,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;IAC3B,MAAM,EAAE,mBAAmB,EAAE,CAAC;CAC/B;AAED;;;;;;GAMG;AACH,wBAAsB,cAAc,CAClC,GAAG,EAAE,MAAM,EACX,OAAO,EAAE,oBAAoB,EAC7B,OAAO,CAAC,EAAE,OAAO,GAChB,OAAO,CAAC,oBAAoB,CAAC,CAkF/B"}
@@ -0,0 +1,87 @@
1
+ /**
2
+ * Skill Discovery Handler
3
+ *
4
+ * Discovers skills from SKILL.md files in project directories.
5
+ * This is a parallel discovery path — it does NOT implement DiscoveryHandler<T>
6
+ * (which expects TypeScript import()). Instead, it operates on markdown files.
7
+ */
8
+ import { exists, readDir, readTextFile } from "../../platform/compat/fs.js";
9
+ import { join } from "../../platform/compat/path/index.js";
10
+ import { agentLogger } from "../../utils/logger/logger.js";
11
+ import { ensureError } from "../../errors/veryfront-error.js";
12
+ import { parseSkillFrontmatter, validateSkillMetadata } from "../../skill/parser.js";
13
+ import { SKILL_MD_FILENAME } from "../../skill/types.js";
14
+ const logger = agentLogger.component("skill-discovery");
15
+ /**
16
+ * Discover skills from a directory.
17
+ *
18
+ * Scans for subdirectories containing SKILL.md files and parses them
19
+ * into Skill objects. Uses fsAdapter when available (for VFS/cloud),
20
+ * falling back to compat layer functions.
21
+ */
22
+ export async function discoverSkills(dir, context, verbose) {
23
+ const skills = new Map();
24
+ const errors = [];
25
+ const { fsAdapter } = context;
26
+ // Check if directory exists
27
+ const dirExists = fsAdapter ? await fsAdapter.exists(dir) : await exists(dir);
28
+ if (!dirExists) {
29
+ if (verbose) {
30
+ logger.info(`Skills directory does not exist: ${dir}`);
31
+ }
32
+ return { skills, errors };
33
+ }
34
+ // Iterate subdirectories
35
+ const entries = fsAdapter ? fsAdapter.readDir(dir) : readDir(dir);
36
+ for await (const entry of entries) {
37
+ if (!entry.isDirectory)
38
+ continue;
39
+ const skillDir = join(dir, entry.name);
40
+ const skillMdPath = join(skillDir, SKILL_MD_FILENAME);
41
+ try {
42
+ // Check if SKILL.md exists
43
+ const mdExists = fsAdapter ? await fsAdapter.exists(skillMdPath) : await exists(skillMdPath);
44
+ if (!mdExists) {
45
+ if (verbose) {
46
+ logger.info(`Skipping ${entry.name}: no ${SKILL_MD_FILENAME}`);
47
+ }
48
+ continue;
49
+ }
50
+ // Read SKILL.md content
51
+ const content = fsAdapter
52
+ ? await fsAdapter.readFile(skillMdPath)
53
+ : await readTextFile(skillMdPath);
54
+ // Parse frontmatter
55
+ const parsed = await parseSkillFrontmatter(content);
56
+ // Validate metadata (directory name as fallback for skill name)
57
+ const metadata = validateSkillMetadata(parsed.frontmatter, entry.name);
58
+ // Warn if metadata name differs from directory name, use directory name as ID
59
+ const skillId = entry.name;
60
+ if (metadata.name !== entry.name) {
61
+ logger.warn(`Skill "${metadata.name}" in directory "${entry.name}" — using directory name as ID`);
62
+ }
63
+ // Check for duplicate IDs (first wins)
64
+ if (skills.has(skillId)) {
65
+ logger.warn(`Duplicate skill "${skillId}" — keeping first registration`);
66
+ continue;
67
+ }
68
+ const skill = {
69
+ id: skillId,
70
+ metadata,
71
+ rootPath: skillDir,
72
+ ...(fsAdapter && { fsAdapter }),
73
+ };
74
+ skills.set(skillId, skill);
75
+ if (verbose) {
76
+ logger.info(`Discovered skill: ${skillId}`);
77
+ }
78
+ }
79
+ catch (error) {
80
+ errors.push({ file: skillMdPath, error: ensureError(error) });
81
+ if (verbose) {
82
+ logger.error(`Error loading skill from ${entry.name}:`, error);
83
+ }
84
+ }
85
+ }
86
+ return { skills, errors };
87
+ }
@@ -1 +1 @@
1
- {"version":3,"file":"task-handler.d.ts","sourceRoot":"","sources":["../../../../src/src/discovery/handlers/task-handler.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAE1D,OAAO,KAAK,EAAE,gBAAgB,EAAmB,MAAM,aAAa,CAAC;AAErE,eAAO,MAAM,WAAW,EAAE,gBAAgB,CAAC,cAAc,CAcxD,CAAC"}
1
+ {"version":3,"file":"task-handler.d.ts","sourceRoot":"","sources":["../../../../src/src/discovery/handlers/task-handler.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAE1D,OAAO,KAAK,EAAE,gBAAgB,EAAmB,MAAM,aAAa,CAAC;AAErE,eAAO,MAAM,WAAW,EAAE,gBAAgB,CAAC,cAAc,CAUxD,CAAC"}
@@ -6,12 +6,8 @@ export const taskHandler = {
6
6
  typeName: "task",
7
7
  validate: (item) => isTaskDefinition(item),
8
8
  getId: (_task, file, dir) => {
9
- // Derive ID from file path relative to tasks dir
10
- let relative = file;
11
9
  const prefix = dir.endsWith("/") ? dir : `${dir}/`;
12
- if (relative.startsWith(prefix)) {
13
- relative = relative.slice(prefix.length);
14
- }
10
+ const relative = file.startsWith(prefix) ? file.slice(prefix.length) : file;
15
11
  return relative.replace(/\.(ts|tsx|js|jsx)$/, "");
16
12
  },
17
13
  register: (_id, task) => task,
@@ -1 +1 @@
1
- {"version":3,"file":"transpiler.d.ts","sourceRoot":"","sources":["../../../src/src/discovery/transpiler.ts"],"names":[],"mappings":"AAeA,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,YAAY,CAAC;AA0HvD;;GAEG;AACH,wBAAsB,YAAY,CAChC,IAAI,EAAE,MAAM,EACZ,OAAO,EAAE,oBAAoB,GAC5B,OAAO,CAAC,OAAO,CAAC,CAwFlB;AAED;;GAEG;AACH,wBAAgB,mBAAmB,IAAI,IAAI,CAE1C"}
1
+ {"version":3,"file":"transpiler.d.ts","sourceRoot":"","sources":["../../../src/src/discovery/transpiler.ts"],"names":[],"mappings":"AAeA,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,YAAY,CAAC;AA6HvD;;GAEG;AACH,wBAAsB,YAAY,CAChC,IAAI,EAAE,MAAM,EACZ,OAAO,EAAE,oBAAoB,GAC5B,OAAO,CAAC,OAAO,CAAC,CAwFlB;AAED;;GAEG;AACH,wBAAgB,mBAAmB,IAAI,IAAI,CAE1C"}