veryfront 0.1.215 → 0.1.217

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 (305) hide show
  1. package/README.md +1 -1
  2. package/esm/cli/commands/extension/command-help.d.ts +3 -0
  3. package/esm/cli/commands/extension/command-help.d.ts.map +1 -0
  4. package/esm/cli/commands/extension/command-help.js +16 -0
  5. package/esm/cli/commands/extension/handler.d.ts +3 -0
  6. package/esm/cli/commands/extension/handler.d.ts.map +1 -0
  7. package/esm/cli/commands/extension/handler.js +36 -0
  8. package/esm/cli/commands/extension/init-command.d.ts +19 -0
  9. package/esm/cli/commands/extension/init-command.d.ts.map +1 -0
  10. package/esm/cli/commands/extension/init-command.js +122 -0
  11. package/esm/cli/commands/extension/validate-command.d.ts +13 -0
  12. package/esm/cli/commands/extension/validate-command.d.ts.map +1 -0
  13. package/esm/cli/commands/extension/validate-command.js +62 -0
  14. package/esm/cli/commands/generate/integration-generator-helpers.d.ts +35 -0
  15. package/esm/cli/commands/generate/integration-generator-helpers.d.ts.map +1 -0
  16. package/esm/cli/commands/generate/integration-generator-helpers.js +123 -0
  17. package/esm/cli/commands/generate/integration-generator.d.ts +1 -2
  18. package/esm/cli/commands/generate/integration-generator.d.ts.map +1 -1
  19. package/esm/cli/commands/generate/integration-generator.js +1 -123
  20. package/esm/cli/commands/knowledge/command-helpers.d.ts +48 -0
  21. package/esm/cli/commands/knowledge/command-helpers.d.ts.map +1 -0
  22. package/esm/cli/commands/knowledge/command-helpers.js +216 -0
  23. package/esm/cli/commands/knowledge/command.d.ts +12 -17
  24. package/esm/cli/commands/knowledge/command.d.ts.map +1 -1
  25. package/esm/cli/commands/knowledge/command.js +26 -214
  26. package/esm/cli/help/command-definitions.d.ts.map +1 -1
  27. package/esm/cli/help/command-definitions.js +2 -0
  28. package/esm/cli/mcp/remote-file-tool-helpers.d.ts +5 -0
  29. package/esm/cli/mcp/remote-file-tool-helpers.d.ts.map +1 -0
  30. package/esm/cli/mcp/remote-file-tool-helpers.js +22 -0
  31. package/esm/cli/mcp/remote-file-tools.d.ts.map +1 -1
  32. package/esm/cli/mcp/remote-file-tools.js +1 -22
  33. package/esm/cli/router.d.ts.map +1 -1
  34. package/esm/cli/router.js +2 -0
  35. package/esm/cli/templates/integration-loader-helpers.d.ts +8 -0
  36. package/esm/cli/templates/integration-loader-helpers.d.ts.map +1 -0
  37. package/esm/cli/templates/integration-loader-helpers.js +29 -0
  38. package/esm/cli/templates/integration-loader.d.ts.map +1 -1
  39. package/esm/cli/templates/integration-loader.js +5 -21
  40. package/esm/cli/templates/manifest.d.ts +1 -0
  41. package/esm/cli/templates/manifest.js +2 -1
  42. package/esm/deno.d.ts +3 -0
  43. package/esm/deno.js +5 -2
  44. package/esm/src/agent/runtime/index.d.ts.map +1 -1
  45. package/esm/src/agent/runtime/index.js +48 -90
  46. package/esm/src/chat/ag-ui-helpers.d.ts +17 -0
  47. package/esm/src/chat/ag-ui-helpers.d.ts.map +1 -0
  48. package/esm/src/chat/ag-ui-helpers.js +111 -0
  49. package/esm/src/chat/ag-ui.d.ts.map +1 -1
  50. package/esm/src/chat/ag-ui.js +1 -111
  51. package/esm/src/config/schemas/config.schema.d.ts +1 -0
  52. package/esm/src/config/schemas/config.schema.d.ts.map +1 -1
  53. package/esm/src/config/schemas/config.schema.js +11 -0
  54. package/esm/src/config/schemas/index.d.ts +11 -1
  55. package/esm/src/config/schemas/index.d.ts.map +1 -1
  56. package/esm/src/errors/error-registry-helpers.d.ts +6 -0
  57. package/esm/src/errors/error-registry-helpers.d.ts.map +1 -0
  58. package/esm/src/errors/error-registry-helpers.js +9 -0
  59. package/esm/src/errors/error-registry.d.ts.map +1 -1
  60. package/esm/src/errors/error-registry.js +4 -3
  61. package/esm/src/extensions/capabilities.d.ts +20 -0
  62. package/esm/src/extensions/capabilities.d.ts.map +1 -0
  63. package/esm/src/extensions/capabilities.js +77 -0
  64. package/esm/src/extensions/contracts.d.ts +10 -0
  65. package/esm/src/extensions/contracts.d.ts.map +1 -0
  66. package/esm/src/extensions/contracts.js +28 -0
  67. package/esm/src/extensions/discovery.d.ts +48 -0
  68. package/esm/src/extensions/discovery.d.ts.map +1 -0
  69. package/esm/src/extensions/discovery.js +179 -0
  70. package/esm/src/extensions/errors.d.ts +10 -0
  71. package/esm/src/extensions/errors.d.ts.map +1 -0
  72. package/esm/src/extensions/errors.js +34 -0
  73. package/esm/src/extensions/factory-loader.d.ts +29 -0
  74. package/esm/src/extensions/factory-loader.d.ts.map +1 -0
  75. package/esm/src/extensions/factory-loader.js +63 -0
  76. package/esm/src/extensions/index.d.ts +37 -0
  77. package/esm/src/extensions/index.d.ts.map +1 -0
  78. package/esm/src/extensions/index.js +41 -0
  79. package/esm/src/extensions/interfaces/ai-model-provider.d.ts +94 -0
  80. package/esm/src/extensions/interfaces/ai-model-provider.d.ts.map +1 -0
  81. package/esm/src/extensions/interfaces/ai-model-provider.js +8 -0
  82. package/esm/src/extensions/interfaces/auth-provider.d.ts +49 -0
  83. package/esm/src/extensions/interfaces/auth-provider.d.ts.map +1 -0
  84. package/esm/src/extensions/interfaces/auth-provider.js +8 -0
  85. package/esm/src/extensions/interfaces/bundler.d.ts +118 -0
  86. package/esm/src/extensions/interfaces/bundler.d.ts.map +1 -0
  87. package/esm/src/extensions/interfaces/bundler.js +8 -0
  88. package/esm/src/extensions/interfaces/cache-store.d.ts +27 -0
  89. package/esm/src/extensions/interfaces/cache-store.d.ts.map +1 -0
  90. package/esm/src/extensions/interfaces/cache-store.js +8 -0
  91. package/esm/src/extensions/interfaces/code-parser.d.ts +76 -0
  92. package/esm/src/extensions/interfaces/code-parser.d.ts.map +1 -0
  93. package/esm/src/extensions/interfaces/code-parser.js +8 -0
  94. package/esm/src/extensions/interfaces/content-transformer.d.ts +40 -0
  95. package/esm/src/extensions/interfaces/content-transformer.d.ts.map +1 -0
  96. package/esm/src/extensions/interfaces/content-transformer.js +8 -0
  97. package/esm/src/extensions/interfaces/css-processor.d.ts +38 -0
  98. package/esm/src/extensions/interfaces/css-processor.d.ts.map +1 -0
  99. package/esm/src/extensions/interfaces/css-processor.js +8 -0
  100. package/esm/src/extensions/interfaces/database-client.d.ts +31 -0
  101. package/esm/src/extensions/interfaces/database-client.d.ts.map +1 -0
  102. package/esm/src/extensions/interfaces/database-client.js +8 -0
  103. package/esm/src/extensions/interfaces/embedding-provider.d.ts +37 -0
  104. package/esm/src/extensions/interfaces/embedding-provider.d.ts.map +1 -0
  105. package/esm/src/extensions/interfaces/embedding-provider.js +8 -0
  106. package/esm/src/extensions/interfaces/index.d.ts +21 -0
  107. package/esm/src/extensions/interfaces/index.d.ts.map +1 -0
  108. package/esm/src/extensions/interfaces/index.js +9 -0
  109. package/esm/src/extensions/interfaces/node-compat.d.ts +25 -0
  110. package/esm/src/extensions/interfaces/node-compat.d.ts.map +1 -0
  111. package/esm/src/extensions/interfaces/node-compat.js +8 -0
  112. package/esm/src/extensions/interfaces/schema-validator.d.ts +46 -0
  113. package/esm/src/extensions/interfaces/schema-validator.d.ts.map +1 -0
  114. package/esm/src/extensions/interfaces/schema-validator.js +8 -0
  115. package/esm/src/extensions/interfaces/tracing-exporter.d.ts +44 -0
  116. package/esm/src/extensions/interfaces/tracing-exporter.d.ts.map +1 -0
  117. package/esm/src/extensions/interfaces/tracing-exporter.js +8 -0
  118. package/esm/src/extensions/loader.d.ts +33 -0
  119. package/esm/src/extensions/loader.d.ts.map +1 -0
  120. package/esm/src/extensions/loader.js +209 -0
  121. package/esm/src/extensions/orchestrate.d.ts +54 -0
  122. package/esm/src/extensions/orchestrate.d.ts.map +1 -0
  123. package/esm/src/extensions/orchestrate.js +116 -0
  124. package/esm/src/extensions/recommendations.d.ts +7 -0
  125. package/esm/src/extensions/recommendations.d.ts.map +1 -0
  126. package/esm/src/extensions/recommendations.js +22 -0
  127. package/esm/src/extensions/types.d.ts +47 -0
  128. package/esm/src/extensions/types.d.ts.map +1 -0
  129. package/esm/src/extensions/types.js +6 -0
  130. package/esm/src/extensions/validation.d.ts +44 -0
  131. package/esm/src/extensions/validation.d.ts.map +1 -0
  132. package/esm/src/extensions/validation.js +115 -0
  133. package/esm/src/html/styles-builder/plugin-loader.d.ts.map +1 -1
  134. package/esm/src/html/styles-builder/plugin-loader.js +23 -0
  135. package/esm/src/html/styles-builder/tailwind-plugin-allowlist.d.ts +29 -0
  136. package/esm/src/html/styles-builder/tailwind-plugin-allowlist.d.ts.map +1 -0
  137. package/esm/src/html/styles-builder/tailwind-plugin-allowlist.js +48 -0
  138. package/esm/src/modules/react-loader/ssr-module-loader/loader-helpers.d.ts +15 -0
  139. package/esm/src/modules/react-loader/ssr-module-loader/loader-helpers.d.ts.map +1 -0
  140. package/esm/src/modules/react-loader/ssr-module-loader/loader-helpers.js +22 -0
  141. package/esm/src/modules/react-loader/ssr-module-loader/loader.d.ts +0 -2
  142. package/esm/src/modules/react-loader/ssr-module-loader/loader.d.ts.map +1 -1
  143. package/esm/src/modules/react-loader/ssr-module-loader/loader.js +4 -24
  144. package/esm/src/platform/adapters/fs/veryfront/adapter-helpers.d.ts +19 -0
  145. package/esm/src/platform/adapters/fs/veryfront/adapter-helpers.d.ts.map +1 -0
  146. package/esm/src/platform/adapters/fs/veryfront/adapter-helpers.js +26 -0
  147. package/esm/src/platform/adapters/fs/veryfront/adapter.d.ts.map +1 -1
  148. package/esm/src/platform/adapters/fs/veryfront/adapter.js +4 -20
  149. package/esm/src/platform/adapters/fs/veryfront/read-operations-helpers.d.ts +1 -0
  150. package/esm/src/platform/adapters/fs/veryfront/read-operations-helpers.d.ts.map +1 -1
  151. package/esm/src/platform/adapters/fs/veryfront/read-operations-helpers.js +3 -0
  152. package/esm/src/platform/adapters/fs/veryfront/read-operations.d.ts.map +1 -1
  153. package/esm/src/platform/adapters/fs/veryfront/read-operations.js +4 -7
  154. package/esm/src/platform/adapters/fs/veryfront/websocket-manager-helpers.d.ts +28 -0
  155. package/esm/src/platform/adapters/fs/veryfront/websocket-manager-helpers.d.ts.map +1 -0
  156. package/esm/src/platform/adapters/fs/veryfront/websocket-manager-helpers.js +41 -0
  157. package/esm/src/platform/adapters/fs/veryfront/websocket-manager.d.ts +1 -4
  158. package/esm/src/platform/adapters/fs/veryfront/websocket-manager.d.ts.map +1 -1
  159. package/esm/src/platform/adapters/fs/veryfront/websocket-manager.js +7 -40
  160. package/esm/src/platform/compat/process/command.d.ts +31 -0
  161. package/esm/src/platform/compat/process/command.d.ts.map +1 -0
  162. package/esm/src/platform/compat/process/command.js +193 -0
  163. package/esm/src/platform/compat/process/env.d.ts +31 -0
  164. package/esm/src/platform/compat/process/env.d.ts.map +1 -0
  165. package/esm/src/platform/compat/process/env.js +175 -0
  166. package/esm/src/platform/compat/process/lifecycle.d.ts +98 -0
  167. package/esm/src/platform/compat/process/lifecycle.d.ts.map +1 -0
  168. package/esm/src/platform/compat/process/lifecycle.js +305 -0
  169. package/esm/src/platform/compat/process/runtime-process.d.ts +10 -0
  170. package/esm/src/platform/compat/process/runtime-process.d.ts.map +1 -0
  171. package/esm/src/platform/compat/process/runtime-process.js +24 -0
  172. package/esm/src/platform/compat/process.d.ts +4 -165
  173. package/esm/src/platform/compat/process.d.ts.map +1 -1
  174. package/esm/src/platform/compat/process.js +4 -682
  175. package/esm/src/platform/index.d.ts +1 -1
  176. package/esm/src/platform/index.d.ts.map +1 -1
  177. package/esm/src/provider/runtime-loader/provider-endpoints.d.ts +8 -0
  178. package/esm/src/provider/runtime-loader/provider-endpoints.d.ts.map +1 -0
  179. package/esm/src/provider/runtime-loader/provider-endpoints.js +27 -0
  180. package/esm/src/provider/runtime-loader/provider-request-init.d.ts +32 -0
  181. package/esm/src/provider/runtime-loader/provider-request-init.d.ts.map +1 -0
  182. package/esm/src/provider/runtime-loader/provider-request-init.js +67 -0
  183. package/esm/src/provider/runtime-loader/tool-input-status.d.ts +17 -0
  184. package/esm/src/provider/runtime-loader/tool-input-status.d.ts.map +1 -0
  185. package/esm/src/provider/runtime-loader/tool-input-status.js +155 -0
  186. package/esm/src/provider/runtime-loader.d.ts +2 -3
  187. package/esm/src/provider/runtime-loader.d.ts.map +1 -1
  188. package/esm/src/provider/runtime-loader.js +92 -291
  189. package/esm/src/proxy/handler.d.ts.map +1 -1
  190. package/esm/src/proxy/handler.js +14 -0
  191. package/esm/src/rendering/orchestrator/pipeline-helpers.d.ts +8 -0
  192. package/esm/src/rendering/orchestrator/pipeline-helpers.d.ts.map +1 -0
  193. package/esm/src/rendering/orchestrator/pipeline-helpers.js +20 -0
  194. package/esm/src/rendering/orchestrator/pipeline.d.ts +0 -3
  195. package/esm/src/rendering/orchestrator/pipeline.d.ts.map +1 -1
  196. package/esm/src/rendering/orchestrator/pipeline.js +4 -22
  197. package/esm/src/routing/api/module-loader/loader-helpers.d.ts +10 -0
  198. package/esm/src/routing/api/module-loader/loader-helpers.d.ts.map +1 -0
  199. package/esm/src/routing/api/module-loader/loader-helpers.js +62 -0
  200. package/esm/src/routing/api/module-loader/loader.d.ts +1 -1
  201. package/esm/src/routing/api/module-loader/loader.d.ts.map +1 -1
  202. package/esm/src/routing/api/module-loader/loader.js +2 -60
  203. package/esm/src/server/bootstrap.d.ts +22 -2
  204. package/esm/src/server/bootstrap.d.ts.map +1 -1
  205. package/esm/src/server/bootstrap.js +67 -5
  206. package/esm/src/server/dev-ui/manifest.d.ts +2 -0
  207. package/esm/src/server/dev-ui/manifest.js +3 -1
  208. package/esm/src/server/handlers/request/api/project-discovery.d.ts.map +1 -1
  209. package/esm/src/server/handlers/request/api/project-discovery.js +14 -8
  210. package/esm/src/server/production-server.js +1 -1
  211. package/esm/src/server/services/rsc/endpoints/rsc-bundles.generated.d.ts.map +1 -1
  212. package/esm/src/server/services/rsc/endpoints/rsc-bundles.generated.js +2 -2
  213. package/esm/src/server/utils/domain-parser.d.ts.map +1 -1
  214. package/esm/src/server/utils/domain-parser.js +4 -0
  215. package/esm/src/studio/bridge/bridge-bundle.generated.d.ts.map +1 -1
  216. package/esm/src/studio/bridge/bridge-bundle.generated.js +1 -1
  217. package/esm/src/tool/index.d.ts +1 -1
  218. package/esm/src/tool/index.d.ts.map +1 -1
  219. package/esm/src/tool/types.d.ts +20 -0
  220. package/esm/src/tool/types.d.ts.map +1 -1
  221. package/esm/src/utils/version-constant.d.ts +1 -1
  222. package/esm/src/utils/version-constant.js +1 -1
  223. package/package.json +7 -1
  224. package/src/cli/commands/extension/command-help.ts +18 -0
  225. package/src/cli/commands/extension/handler.ts +41 -0
  226. package/src/cli/commands/extension/init-command.ts +140 -0
  227. package/src/cli/commands/extension/validate-command.ts +78 -0
  228. package/src/cli/commands/generate/integration-generator-helpers.ts +185 -0
  229. package/src/cli/commands/generate/integration-generator.ts +12 -168
  230. package/src/cli/commands/knowledge/command-helpers.ts +295 -0
  231. package/src/cli/commands/knowledge/command.ts +34 -261
  232. package/src/cli/help/command-definitions.ts +2 -0
  233. package/src/cli/mcp/remote-file-tool-helpers.ts +27 -0
  234. package/src/cli/mcp/remote-file-tools.ts +6 -28
  235. package/src/cli/router.ts +2 -0
  236. package/src/cli/templates/integration-loader-helpers.ts +49 -0
  237. package/src/cli/templates/integration-loader.ts +10 -28
  238. package/src/cli/templates/manifest.js +2 -1
  239. package/src/deno.js +5 -2
  240. package/src/src/agent/runtime/index.ts +77 -94
  241. package/src/src/chat/ag-ui-helpers.ts +139 -0
  242. package/src/src/chat/ag-ui.ts +11 -139
  243. package/src/src/config/schemas/config.schema.ts +11 -0
  244. package/src/src/config/schemas/index.ts +15 -1
  245. package/src/src/errors/error-registry-helpers.ts +23 -0
  246. package/src/src/errors/error-registry.ts +8 -3
  247. package/src/src/extensions/capabilities.ts +97 -0
  248. package/src/src/extensions/contracts.ts +36 -0
  249. package/src/src/extensions/discovery.ts +221 -0
  250. package/src/src/extensions/errors.ts +39 -0
  251. package/src/src/extensions/factory-loader.ts +76 -0
  252. package/src/src/extensions/index.ts +79 -0
  253. package/src/src/extensions/interfaces/ai-model-provider.ts +100 -0
  254. package/src/src/extensions/interfaces/auth-provider.ts +52 -0
  255. package/src/src/extensions/interfaces/bundler.ts +116 -0
  256. package/src/src/extensions/interfaces/cache-store.ts +27 -0
  257. package/src/src/extensions/interfaces/code-parser.ts +84 -0
  258. package/src/src/extensions/interfaces/content-transformer.ts +38 -0
  259. package/src/src/extensions/interfaces/css-processor.ts +40 -0
  260. package/src/src/extensions/interfaces/database-client.ts +35 -0
  261. package/src/src/extensions/interfaces/embedding-provider.ts +39 -0
  262. package/src/src/extensions/interfaces/index.ts +81 -0
  263. package/src/src/extensions/interfaces/node-compat.ts +25 -0
  264. package/src/src/extensions/interfaces/schema-validator.ts +51 -0
  265. package/src/src/extensions/interfaces/tracing-exporter.ts +42 -0
  266. package/src/src/extensions/loader.ts +245 -0
  267. package/src/src/extensions/orchestrate.ts +184 -0
  268. package/src/src/extensions/recommendations.ts +24 -0
  269. package/src/src/extensions/types.ts +57 -0
  270. package/src/src/extensions/validation.ts +147 -0
  271. package/src/src/html/styles-builder/plugin-loader.ts +32 -0
  272. package/src/src/html/styles-builder/tailwind-plugin-allowlist.ts +51 -0
  273. package/src/src/modules/react-loader/ssr-module-loader/loader-helpers.ts +37 -0
  274. package/src/src/modules/react-loader/ssr-module-loader/loader.ts +8 -39
  275. package/src/src/platform/adapters/fs/veryfront/adapter-helpers.ts +43 -0
  276. package/src/src/platform/adapters/fs/veryfront/adapter.ts +8 -22
  277. package/src/src/platform/adapters/fs/veryfront/read-operations-helpers.ts +4 -0
  278. package/src/src/platform/adapters/fs/veryfront/read-operations.ts +4 -7
  279. package/src/src/platform/adapters/fs/veryfront/websocket-manager-helpers.ts +73 -0
  280. package/src/src/platform/adapters/fs/veryfront/websocket-manager.ts +29 -44
  281. package/src/src/platform/compat/process/command.ts +297 -0
  282. package/src/src/platform/compat/process/env.ts +227 -0
  283. package/src/src/platform/compat/process/lifecycle.ts +330 -0
  284. package/src/src/platform/compat/process/runtime-process.ts +27 -0
  285. package/src/src/platform/compat/process.ts +37 -870
  286. package/src/src/platform/index.ts +1 -0
  287. package/src/src/provider/runtime-loader/provider-endpoints.ts +50 -0
  288. package/src/src/provider/runtime-loader/provider-request-init.ts +101 -0
  289. package/src/src/provider/runtime-loader/tool-input-status.ts +210 -0
  290. package/src/src/provider/runtime-loader.ts +113 -368
  291. package/src/src/proxy/handler.ts +16 -0
  292. package/src/src/rendering/orchestrator/pipeline-helpers.ts +35 -0
  293. package/src/src/rendering/orchestrator/pipeline.ts +8 -35
  294. package/src/src/routing/api/module-loader/loader-helpers.ts +68 -0
  295. package/src/src/routing/api/module-loader/loader.ts +8 -65
  296. package/src/src/server/bootstrap.ts +88 -7
  297. package/src/src/server/dev-ui/manifest.js +3 -1
  298. package/src/src/server/handlers/request/api/project-discovery.ts +19 -8
  299. package/src/src/server/production-server.ts +1 -1
  300. package/src/src/server/services/rsc/endpoints/rsc-bundles.generated.ts +2 -2
  301. package/src/src/server/utils/domain-parser.ts +4 -0
  302. package/src/src/studio/bridge/bridge-bundle.generated.ts +1 -1
  303. package/src/src/tool/index.ts +1 -0
  304. package/src/src/tool/types.ts +21 -0
  305. package/src/src/utils/version-constant.ts +1 -1
@@ -0,0 +1,48 @@
1
+ import type { KnowledgeIngestFailedFileResult, KnowledgeIngestFileResult, KnowledgeIngestSkippedFileResult } from "./result.js";
2
+ export type KnowledgeSource = {
3
+ kind: "local";
4
+ input: string;
5
+ localPath: string;
6
+ } | {
7
+ kind: "upload";
8
+ input: string;
9
+ uploadPath: string;
10
+ localPath: string;
11
+ };
12
+ export interface KnowledgeSourceCollection {
13
+ sources: KnowledgeSource[];
14
+ skipped: KnowledgeIngestSkippedFileResult[];
15
+ }
16
+ export declare function normalizeKnowledgeInputPath(inputPath: string): string;
17
+ export declare function normalizeProjectUploadPath(inputPath: string): string;
18
+ export declare function formatKnowledgeUploadSource(uploadPath: string): string;
19
+ export declare function resolveExplicitUploadPath(inputPath: string): string;
20
+ export declare function isLikelyLocalPath(value: string): boolean;
21
+ export declare function isProjectUploadReference(value: string): boolean;
22
+ export declare function stripChatUploadPrefix(name: string): string;
23
+ export declare function resolveKnowledgeDownloadOutputDir(outputDir: string): string;
24
+ export declare function createFailedKnowledgeSource(input: {
25
+ source: string;
26
+ localSourcePath: string;
27
+ message: string;
28
+ reason: KnowledgeIngestFailedFileResult["reason"];
29
+ }): KnowledgeIngestFailedFileResult;
30
+ export declare function collectLocalFiles(root: string, recursive: boolean): Promise<KnowledgeSourceCollection>;
31
+ export declare function buildSourceReference(source: KnowledgeSource): string;
32
+ export declare function buildSuggestedSlug(source: KnowledgeSource, index: number): string;
33
+ export declare function ensureUniqueSlugs(sources: KnowledgeSource[]): string[];
34
+ export declare function deriveKnowledgeRemotePath(outputPath: string, outputDir: string, knowledgePath: string): string;
35
+ export declare function createKnowledgeIngestResult(input: {
36
+ source: string;
37
+ localSourcePath: string;
38
+ outputPath: string;
39
+ remotePath: string;
40
+ parser: {
41
+ slug: string;
42
+ stats: Record<string, unknown>;
43
+ warnings: string[];
44
+ source_type: string;
45
+ summary: string;
46
+ };
47
+ }): KnowledgeIngestFileResult;
48
+ //# sourceMappingURL=command-helpers.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"command-helpers.d.ts","sourceRoot":"","sources":["../../../../src/cli/commands/knowledge/command-helpers.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EACV,+BAA+B,EAC/B,yBAAyB,EACzB,gCAAgC,EACjC,MAAM,aAAa,CAAC;AAErB,MAAM,MAAM,eAAe,GACvB;IAAE,IAAI,EAAE,OAAO,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,MAAM,CAAA;CAAE,GACnD;IAAE,IAAI,EAAE,QAAQ,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,UAAU,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,MAAM,CAAA;CAAE,CAAC;AAE7E,MAAM,WAAW,yBAAyB;IACxC,OAAO,EAAE,eAAe,EAAE,CAAC;IAC3B,OAAO,EAAE,gCAAgC,EAAE,CAAC;CAC7C;AASD,wBAAgB,2BAA2B,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,CAMrE;AAED,wBAAgB,0BAA0B,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,CAEpE;AAED,wBAAgB,2BAA2B,CAAC,UAAU,EAAE,MAAM,GAAG,MAAM,CAKtE;AAED,wBAAgB,yBAAyB,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,CAanE;AAED,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAGxD;AAED,wBAAgB,wBAAwB,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAI/D;AAED,wBAAgB,qBAAqB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAE1D;AAED,wBAAgB,iCAAiC,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,CAE3E;AAgBD,wBAAgB,2BAA2B,CAAC,KAAK,EAAE;IACjD,MAAM,EAAE,MAAM,CAAC;IACf,eAAe,EAAE,MAAM,CAAC;IACxB,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,+BAA+B,CAAC,QAAQ,CAAC,CAAC;CACnD,GAAG,+BAA+B,CAOlC;AAmCD,wBAAsB,iBAAiB,CACrC,IAAI,EAAE,MAAM,EACZ,SAAS,EAAE,OAAO,GACjB,OAAO,CAAC,yBAAyB,CAAC,CA8DpC;AAED,wBAAgB,oBAAoB,CAAC,MAAM,EAAE,eAAe,GAAG,MAAM,CAIpE;AAED,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,eAAe,EAAE,KAAK,EAAE,MAAM,GAAG,MAAM,CAgCjF;AAED,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,eAAe,EAAE,GAAG,MAAM,EAAE,CAQtE;AAED,wBAAgB,yBAAyB,CACvC,UAAU,EAAE,MAAM,EAClB,SAAS,EAAE,MAAM,EACjB,aAAa,EAAE,MAAM,GACpB,MAAM,CAQR;AAED,wBAAgB,2BAA2B,CAAC,KAAK,EAAE;IACjD,MAAM,EAAE,MAAM,CAAC;IACf,eAAe,EAAE,MAAM,CAAC;IACxB,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,MAAM,CAAC;IACnB,MAAM,EAAE;QACN,IAAI,EAAE,MAAM,CAAC;QACb,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;QAC/B,QAAQ,EAAE,MAAM,EAAE,CAAC;QACnB,WAAW,EAAE,MAAM,CAAC;QACpB,OAAO,EAAE,MAAM,CAAC;KACjB,CAAC;CACH,GAAG,yBAAyB,CAY5B"}
@@ -0,0 +1,216 @@
1
+ import { createFileSystem } from "../../../src/platform/index.js";
2
+ import { basename, extname, join, normalize, relative } from "../../../src/platform/compat/path/index.js";
3
+ import { classifyKnowledgeDirectoryPath, classifyKnowledgeSourcePath } from "./source-policy.js";
4
+ function slugify(value) {
5
+ return value.toLowerCase().replace(/[^a-z0-9]+/g, "-").replace(/^-+|-+$/g, "") || "document";
6
+ }
7
+ const CHAT_UPLOAD_PREFIX_RE = /^chat-[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}-\d+-[a-z0-9]+-/i;
8
+ export function normalizeKnowledgeInputPath(inputPath) {
9
+ const normalizedPath = normalize(inputPath).replace(/^\/+/, "").replace(/\\/g, "/");
10
+ if (!normalizedPath || normalizedPath.startsWith("..") || normalizedPath.startsWith("/")) {
11
+ throw new Error(`Invalid knowledge input path: ${inputPath}`);
12
+ }
13
+ return normalizedPath;
14
+ }
15
+ export function normalizeProjectUploadPath(inputPath) {
16
+ return normalizeKnowledgeInputPath(inputPath);
17
+ }
18
+ export function formatKnowledgeUploadSource(uploadPath) {
19
+ const normalizedPath = normalizeKnowledgeInputPath(uploadPath);
20
+ return normalizedPath === "uploads" || normalizedPath.startsWith("uploads/")
21
+ ? normalizedPath
22
+ : `uploads/${normalizedPath}`;
23
+ }
24
+ export function resolveExplicitUploadPath(inputPath) {
25
+ const normalizedInput = normalizeKnowledgeInputPath(inputPath);
26
+ const displayInput = inputPath.replace(/\\/g, "/");
27
+ const uploadPath = normalizeProjectUploadPath(inputPath);
28
+ if (!uploadPath || uploadPath === "uploads" || normalizedInput === "uploads" ||
29
+ normalizedInput.endsWith("/")) {
30
+ throw new Error(`Directory upload references require --path <prefix> --all: ${displayInput}`);
31
+ }
32
+ return uploadPath;
33
+ }
34
+ export function isLikelyLocalPath(value) {
35
+ return value.startsWith("/") || value.startsWith("./") || value.startsWith("../") ||
36
+ /^[A-Za-z]:[\\/]/.test(value);
37
+ }
38
+ export function isProjectUploadReference(value) {
39
+ if (isLikelyLocalPath(value))
40
+ return false;
41
+ const normalizedValue = normalize(value).replace(/\\/g, "/").replace(/^\/+/, "");
42
+ return normalizedValue === "uploads" || normalizedValue.startsWith("uploads/");
43
+ }
44
+ export function stripChatUploadPrefix(name) {
45
+ return name.replace(CHAT_UPLOAD_PREFIX_RE, "");
46
+ }
47
+ export function resolveKnowledgeDownloadOutputDir(outputDir) {
48
+ return join(outputDir, ".uploads");
49
+ }
50
+ function createSkippedKnowledgeSource(input) {
51
+ return {
52
+ source: input.source,
53
+ localSourcePath: input.localSourcePath ?? null,
54
+ message: input.message,
55
+ reason: input.reason,
56
+ };
57
+ }
58
+ export function createFailedKnowledgeSource(input) {
59
+ return {
60
+ source: input.source,
61
+ localSourcePath: input.localSourcePath,
62
+ message: input.message,
63
+ reason: input.reason,
64
+ };
65
+ }
66
+ function classifySourceOrSkip(input) {
67
+ const decision = classifyKnowledgeSourcePath(input.source);
68
+ if (decision.kind === "ingest") {
69
+ return null;
70
+ }
71
+ return createSkippedKnowledgeSource({
72
+ source: input.source,
73
+ localSourcePath: input.localSourcePath,
74
+ message: decision.message,
75
+ reason: decision.reason,
76
+ });
77
+ }
78
+ function classifyDirectoryOrSkip(input) {
79
+ const decision = classifyKnowledgeDirectoryPath(input.source);
80
+ if (decision.kind === "ingest") {
81
+ return null;
82
+ }
83
+ return createSkippedKnowledgeSource({
84
+ source: input.source,
85
+ localSourcePath: null,
86
+ message: decision.message,
87
+ reason: decision.reason,
88
+ });
89
+ }
90
+ export async function collectLocalFiles(root, recursive) {
91
+ const fs = createFileSystem();
92
+ const stat = await fs.stat(root);
93
+ if (stat.isFile) {
94
+ const skipped = classifySourceOrSkip({ source: root, localSourcePath: root });
95
+ return skipped == null
96
+ ? {
97
+ sources: [{ kind: "local", input: root, localPath: root }],
98
+ skipped: [],
99
+ }
100
+ : {
101
+ sources: [],
102
+ skipped: [skipped],
103
+ };
104
+ }
105
+ if (!stat.isDirectory) {
106
+ return { sources: [], skipped: [] };
107
+ }
108
+ const skippedRootDirectory = classifyDirectoryOrSkip({ source: root });
109
+ if (skippedRootDirectory != null) {
110
+ return {
111
+ sources: [],
112
+ skipped: [skippedRootDirectory],
113
+ };
114
+ }
115
+ const collection = {
116
+ sources: [],
117
+ skipped: [],
118
+ };
119
+ async function walk(dir) {
120
+ for await (const entry of fs.readDir(dir)) {
121
+ const entryPath = join(dir, entry.name);
122
+ if (entry.isDirectory) {
123
+ const skipped = classifyDirectoryOrSkip({ source: entryPath });
124
+ if (skipped != null) {
125
+ collection.skipped.push(skipped);
126
+ continue;
127
+ }
128
+ if (recursive)
129
+ await walk(entryPath);
130
+ continue;
131
+ }
132
+ if (!entry.isFile) {
133
+ continue;
134
+ }
135
+ const skipped = classifySourceOrSkip({ source: entryPath, localSourcePath: entryPath });
136
+ if (skipped != null) {
137
+ collection.skipped.push(skipped);
138
+ continue;
139
+ }
140
+ collection.sources.push({ kind: "local", input: root, localPath: entryPath });
141
+ }
142
+ }
143
+ await walk(root);
144
+ collection.sources.sort((left, right) => left.localPath.localeCompare(right.localPath));
145
+ collection.skipped.sort((left, right) => left.source.localeCompare(right.source));
146
+ return collection;
147
+ }
148
+ export function buildSourceReference(source) {
149
+ return source.kind === "upload"
150
+ ? formatKnowledgeUploadSource(source.uploadPath)
151
+ : source.localPath;
152
+ }
153
+ export function buildSuggestedSlug(source, index) {
154
+ const normalized = normalize(source.kind === "upload" ? source.uploadPath : source.localPath).replace(/\\/g, "/");
155
+ let stripped;
156
+ if (source.kind === "upload") {
157
+ stripped = normalized
158
+ .replace(/^\/workspace\/uploads\//, "")
159
+ .replace(/^\/workspace\//, "")
160
+ .replace(/^uploads\//, "")
161
+ .replace(/\.[^.]+$/, "");
162
+ }
163
+ else if (normalized.startsWith("/workspace/uploads/")) {
164
+ stripped = normalized.replace(/^\/workspace\/uploads\//, "").replace(/\.[^.]+$/, "");
165
+ }
166
+ else if (normalized.startsWith("/workspace/")) {
167
+ stripped = normalized.replace(/^\/workspace\//, "").replace(/\.[^.]+$/, "");
168
+ }
169
+ else if (normalized.startsWith("/")) {
170
+ stripped = basename(normalized, extname(normalized));
171
+ }
172
+ else {
173
+ stripped = normalized.replace(/\.[^.]+$/, "");
174
+ }
175
+ const lastSlash = stripped.lastIndexOf("/");
176
+ if (lastSlash >= 0) {
177
+ const dir = stripped.slice(0, lastSlash + 1);
178
+ const file = stripChatUploadPrefix(stripped.slice(lastSlash + 1));
179
+ stripped = file ? `${dir}${file}` : stripped;
180
+ }
181
+ else {
182
+ stripped = stripChatUploadPrefix(stripped) || stripped;
183
+ }
184
+ return slugify(stripped || basename(normalized, extname(normalized)) || `document-${index + 1}`);
185
+ }
186
+ export function ensureUniqueSlugs(sources) {
187
+ const counts = new Map();
188
+ return sources.map((source, index) => {
189
+ const baseSlug = buildSuggestedSlug(source, index);
190
+ const nextCount = (counts.get(baseSlug) ?? 0) + 1;
191
+ counts.set(baseSlug, nextCount);
192
+ return nextCount === 1 ? baseSlug : `${baseSlug}-${nextCount}`;
193
+ });
194
+ }
195
+ export function deriveKnowledgeRemotePath(outputPath, outputDir, knowledgePath) {
196
+ const relativeOutputPath = relative(outputDir, outputPath).replace(/\\/g, "/");
197
+ if (!relativeOutputPath || relativeOutputPath.startsWith("..")) {
198
+ throw new Error(`Output path is outside output directory: ${outputPath}`);
199
+ }
200
+ const prefix = normalizeKnowledgeInputPath(knowledgePath);
201
+ const normalizedRelative = normalize(relativeOutputPath).replace(/^\/+/, "");
202
+ return `${prefix}/${normalizedRelative}`.replace(/\\/g, "/");
203
+ }
204
+ export function createKnowledgeIngestResult(input) {
205
+ return {
206
+ source: input.source,
207
+ localSourcePath: input.localSourcePath,
208
+ outputPath: input.outputPath,
209
+ remotePath: input.remotePath,
210
+ slug: input.parser.slug,
211
+ sourceType: input.parser.source_type,
212
+ summary: input.parser.summary,
213
+ stats: input.parser.stats,
214
+ warnings: input.parser.warnings,
215
+ };
216
+ }
@@ -6,9 +6,10 @@ type SafeParseResult<T> = {
6
6
  success: false;
7
7
  error: z.ZodError;
8
8
  };
9
- import { type CommandResult } from "../../../src/platform/compat/process.js";
9
+ import { type CommandResult } from "../../../src/platform/index.js";
10
10
  import { type ApiClient } from "../../shared/config.js";
11
11
  import type { ParsedArgs } from "../../shared/types.js";
12
+ import * as commandHelpers from "./command-helpers.js";
12
13
  import { type Logger } from "../../../src/utils/index.js";
13
14
  import { type KnowledgeIngestFailedFileResult, type KnowledgeIngestFileResult, type KnowledgeIngestSkippedFileResult } from "./result.js";
14
15
  export interface KnowledgeParserResult {
@@ -66,22 +67,16 @@ declare const KnowledgeIngestArgsSchema: z.ZodObject<{
66
67
  }, z.core.$strip>;
67
68
  export type KnowledgeIngestOptions = z.infer<typeof KnowledgeIngestArgsSchema>;
68
69
  export declare function parseKnowledgeIngestArgs(args: ParsedArgs): SafeParseResult<KnowledgeIngestOptions>;
69
- export declare function normalizeKnowledgeInputPath(inputPath: string): string;
70
- export declare function normalizeProjectUploadPath(inputPath: string): string;
71
- export declare function formatKnowledgeUploadSource(uploadPath: string): string;
72
- export declare function isLikelyLocalPath(value: string): boolean;
73
- export declare function stripChatUploadPrefix(name: string): string;
74
- export declare function resolveKnowledgeDownloadOutputDir(outputDir: string): string;
75
- export declare function buildSuggestedSlug(source: KnowledgeSource, index: number): string;
76
- export declare function ensureUniqueSlugs(sources: KnowledgeSource[]): string[];
77
- export declare function deriveKnowledgeRemotePath(outputPath: string, outputDir: string, knowledgePath: string): string;
78
- export declare function createKnowledgeIngestResult(input: {
79
- source: string;
80
- localSourcePath: string;
81
- outputPath: string;
82
- remotePath: string;
83
- parser: Pick<KnowledgeParserResult, "slug" | "stats" | "warnings" | "source_type" | "summary">;
84
- }): KnowledgeIngestFileResult;
70
+ export declare const normalizeKnowledgeInputPath: typeof commandHelpers.normalizeKnowledgeInputPath;
71
+ export declare const normalizeProjectUploadPath: typeof commandHelpers.normalizeProjectUploadPath;
72
+ export declare const formatKnowledgeUploadSource: typeof commandHelpers.formatKnowledgeUploadSource;
73
+ export declare const isLikelyLocalPath: typeof commandHelpers.isLikelyLocalPath;
74
+ export declare const stripChatUploadPrefix: typeof commandHelpers.stripChatUploadPrefix;
75
+ export declare const resolveKnowledgeDownloadOutputDir: typeof commandHelpers.resolveKnowledgeDownloadOutputDir;
76
+ export declare const buildSuggestedSlug: typeof commandHelpers.buildSuggestedSlug;
77
+ export declare const ensureUniqueSlugs: typeof commandHelpers.ensureUniqueSlugs;
78
+ export declare const deriveKnowledgeRemotePath: typeof commandHelpers.deriveKnowledgeRemotePath;
79
+ export declare const createKnowledgeIngestResult: typeof commandHelpers.createKnowledgeIngestResult;
85
80
  export declare function runKnowledgeParser(input: {
86
81
  filePath: string;
87
82
  outputDir: string;
@@ -1 +1 @@
1
- {"version":3,"file":"command.d.ts","sourceRoot":"","sources":["../../../../src/cli/commands/knowledge/command.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"command.d.ts","sourceRoot":"","sources":["../../../../src/cli/commands/knowledge/command.ts"],"names":[],"mappings":"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"}
@@ -1,8 +1,7 @@
1
1
  import * as dntShim from "../../../_dnt.shims.js";
2
2
  import { z } from "zod";
3
- import { createFileSystem, getEnv } from "../../../src/platform/index.js";
4
- import { basename, extname, join, normalize, relative } from "../../../src/platform/compat/path/index.js";
5
- import { runCommand } from "../../../src/platform/compat/process.js";
3
+ import { createFileSystem, getEnv, runCommand } from "../../../src/platform/index.js";
4
+ import { basename } from "../../../src/platform/compat/path/index.js";
6
5
  import { withSpan } from "../../../src/observability/tracing/otlp-setup.js";
7
6
  import { cliLogger } from "../../utils/index.js";
8
7
  import { createApiClient, resolveConfigWithAuth } from "../../shared/config.js";
@@ -10,9 +9,10 @@ import { getStringArg } from "../../shared/parsed-args.js";
10
9
  import { downloadUploadToFile, listAllUploads } from "../uploads/command.js";
11
10
  import { putRemoteFileFromLocal } from "../files/command.js";
12
11
  import { knowledgeIngestPythonSource } from "./parser-source.js";
12
+ import * as commandHelpers from "./command-helpers.js";
13
13
  import { createJobUserLogger, serverLogger } from "../../../src/utils/index.js";
14
14
  import { writeJobResultIfConfigured } from "../../utils/write-job-result.js";
15
- import { classifyKnowledgeDirectoryPath, classifyKnowledgeSourcePath } from "./source-policy.js";
15
+ import { classifyKnowledgeSourcePath } from "./source-policy.js";
16
16
  import { buildKnowledgeIngestJobResult, } from "./result.js";
17
17
  const knowledgeJobLogger = serverLogger.component("knowledge-ingest");
18
18
  const KnowledgeIngestArgsSchema = z.object({
@@ -113,233 +113,45 @@ export function parseKnowledgeIngestArgs(args) {
113
113
  quiet: getBooleanArg(args, "quiet", "q"),
114
114
  });
115
115
  }
116
- export function normalizeKnowledgeInputPath(inputPath) {
117
- const normalizedPath = normalize(inputPath).replace(/^\/+/, "").replace(/\\/g, "/");
118
- if (!normalizedPath || normalizedPath.startsWith("..") || normalizedPath.startsWith("/")) {
119
- throw new Error(`Invalid knowledge input path: ${inputPath}`);
120
- }
121
- return normalizedPath;
122
- }
123
- export function normalizeProjectUploadPath(inputPath) {
124
- return normalizeKnowledgeInputPath(inputPath);
125
- }
126
- export function formatKnowledgeUploadSource(uploadPath) {
127
- const normalizedPath = normalizeKnowledgeInputPath(uploadPath);
128
- return normalizedPath === "uploads" || normalizedPath.startsWith("uploads/")
129
- ? normalizedPath
130
- : `uploads/${normalizedPath}`;
131
- }
132
- function resolveExplicitUploadPath(inputPath) {
133
- const normalizedInput = normalizeKnowledgeInputPath(inputPath);
134
- const displayInput = inputPath.replace(/\\/g, "/");
135
- const uploadPath = normalizeProjectUploadPath(inputPath);
136
- if (!uploadPath || uploadPath === "uploads" || normalizedInput === "uploads" ||
137
- normalizedInput.endsWith("/")) {
138
- throw new Error(`Directory upload references require --path <prefix> --all: ${displayInput}`);
139
- }
140
- return uploadPath;
141
- }
142
- export function isLikelyLocalPath(value) {
143
- return value.startsWith("/") || value.startsWith("./") || value.startsWith("../") ||
144
- /^[A-Za-z]:[\\/]/.test(value);
145
- }
146
- function isProjectUploadReference(value) {
147
- if (isLikelyLocalPath(value))
148
- return false;
149
- const normalizedValue = normalize(value).replace(/\\/g, "/").replace(/^\/+/, "");
150
- return normalizedValue === "uploads" || normalizedValue.startsWith("uploads/");
151
- }
152
- function slugify(value) {
153
- return value.toLowerCase().replace(/[^a-z0-9]+/g, "-").replace(/^-+|-+$/g, "") || "document";
154
- }
155
- /**
156
- * Strip the chat-upload prefix that Studio prepends to uploaded files.
157
- *
158
- * Studio stores uploads with a generated prefix like:
159
- * chat-<uuid>-<timestamp>-<shortid>-<original-filename>
160
- *
161
- * This function removes the prefix so knowledge files use the clean
162
- * original filename (e.g. "agents" instead of
163
- * "chat-909d3dbc-5a9a-4156-97e4-bcceb5c2ec0d-1773942180291-fv1qg5-agents").
164
- */
165
- const CHAT_UPLOAD_PREFIX_RE = /^chat-[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}-\d+-[a-z0-9]+-/i;
166
- export function stripChatUploadPrefix(name) {
167
- return name.replace(CHAT_UPLOAD_PREFIX_RE, "");
168
- }
169
116
  function defaultOutputRoot() {
170
117
  return dntShim.Deno.makeTempDir({ prefix: "veryfront-knowledge-" });
171
118
  }
172
- export function resolveKnowledgeDownloadOutputDir(outputDir) {
173
- return join(outputDir, ".uploads");
174
- }
175
- function createSkippedKnowledgeSource(input) {
176
- return {
177
- source: input.source,
178
- localSourcePath: input.localSourcePath ?? null,
179
- message: input.message,
180
- reason: input.reason,
181
- };
182
- }
183
- function createFailedKnowledgeSource(input) {
184
- return {
185
- source: input.source,
186
- localSourcePath: input.localSourcePath,
187
- message: input.message,
188
- reason: input.reason,
189
- };
190
- }
191
119
  function classifySourceOrSkip(input) {
192
120
  const decision = classifyKnowledgeSourcePath(input.source);
193
121
  if (decision.kind === "ingest") {
194
122
  return null;
195
123
  }
196
- return createSkippedKnowledgeSource({
197
- source: input.source,
198
- localSourcePath: input.localSourcePath,
199
- message: decision.message,
200
- reason: decision.reason,
201
- });
202
- }
203
- function classifyDirectoryOrSkip(input) {
204
- const decision = classifyKnowledgeDirectoryPath(input.source);
205
- if (decision.kind === "ingest") {
206
- return null;
207
- }
208
- return createSkippedKnowledgeSource({
124
+ return {
209
125
  source: input.source,
210
- localSourcePath: null,
126
+ localSourcePath: input.localSourcePath ?? null,
211
127
  message: decision.message,
212
128
  reason: decision.reason,
213
- });
214
- }
215
- async function collectLocalFiles(root, recursive) {
216
- const fs = createFileSystem();
217
- const stat = await fs.stat(root);
218
- if (stat.isFile) {
219
- const skipped = classifySourceOrSkip({ source: root, localSourcePath: root });
220
- return skipped == null
221
- ? {
222
- sources: [{ kind: "local", input: root, localPath: root }],
223
- skipped: [],
224
- }
225
- : {
226
- sources: [],
227
- skipped: [skipped],
228
- };
229
- }
230
- if (!stat.isDirectory) {
231
- return { sources: [], skipped: [] };
232
- }
233
- const skippedRootDirectory = classifyDirectoryOrSkip({ source: root });
234
- if (skippedRootDirectory != null) {
235
- return {
236
- sources: [],
237
- skipped: [skippedRootDirectory],
238
- };
239
- }
240
- const collection = {
241
- sources: [],
242
- skipped: [],
243
129
  };
244
- async function walk(dir) {
245
- for await (const entry of fs.readDir(dir)) {
246
- const entryPath = join(dir, entry.name);
247
- if (entry.isDirectory) {
248
- const skipped = classifyDirectoryOrSkip({ source: entryPath });
249
- if (skipped != null) {
250
- collection.skipped.push(skipped);
251
- continue;
252
- }
253
- if (recursive)
254
- await walk(entryPath);
255
- continue;
256
- }
257
- if (!entry.isFile) {
258
- continue;
259
- }
260
- const skipped = classifySourceOrSkip({ source: entryPath, localSourcePath: entryPath });
261
- if (skipped != null) {
262
- collection.skipped.push(skipped);
263
- continue;
264
- }
265
- collection.sources.push({ kind: "local", input: root, localPath: entryPath });
266
- }
267
- }
268
- await walk(root);
269
- collection.sources.sort((left, right) => left.localPath.localeCompare(right.localPath));
270
- collection.skipped.sort((left, right) => left.source.localeCompare(right.source));
271
- return collection;
272
130
  }
273
- function buildSourceReference(source) {
274
- return source.kind === "upload"
275
- ? formatKnowledgeUploadSource(source.uploadPath)
276
- : source.localPath;
131
+ export const normalizeKnowledgeInputPath = commandHelpers.normalizeKnowledgeInputPath;
132
+ export const normalizeProjectUploadPath = commandHelpers.normalizeProjectUploadPath;
133
+ export const formatKnowledgeUploadSource = commandHelpers.formatKnowledgeUploadSource;
134
+ export const isLikelyLocalPath = commandHelpers.isLikelyLocalPath;
135
+ export const stripChatUploadPrefix = commandHelpers.stripChatUploadPrefix;
136
+ export const resolveKnowledgeDownloadOutputDir = commandHelpers.resolveKnowledgeDownloadOutputDir;
137
+ export const buildSuggestedSlug = commandHelpers.buildSuggestedSlug;
138
+ export const ensureUniqueSlugs = commandHelpers.ensureUniqueSlugs;
139
+ export const deriveKnowledgeRemotePath = commandHelpers.deriveKnowledgeRemotePath;
140
+ export const createKnowledgeIngestResult = commandHelpers.createKnowledgeIngestResult;
141
+ function resolveExplicitUploadPath(inputPath) {
142
+ return commandHelpers.resolveExplicitUploadPath(inputPath);
277
143
  }
278
- export function buildSuggestedSlug(source, index) {
279
- const normalized = normalize(source.kind === "upload" ? source.uploadPath : source.localPath).replace(/\\/g, "/");
280
- let stripped;
281
- if (source.kind === "upload") {
282
- stripped = normalized
283
- .replace(/^\/workspace\/uploads\//, "")
284
- .replace(/^\/workspace\//, "")
285
- .replace(/^uploads\//, "")
286
- .replace(/\.[^.]+$/, "");
287
- }
288
- else if (normalized.startsWith("/workspace/uploads/")) {
289
- stripped = normalized.replace(/^\/workspace\/uploads\//, "").replace(/\.[^.]+$/, "");
290
- }
291
- else if (normalized.startsWith("/workspace/")) {
292
- stripped = normalized.replace(/^\/workspace\//, "").replace(/\.[^.]+$/, "");
293
- }
294
- else if (normalized.startsWith("/")) {
295
- stripped = basename(normalized, extname(normalized));
296
- }
297
- else {
298
- stripped = normalized.replace(/\.[^.]+$/, "");
299
- }
300
- // Strip Studio's chat-upload prefix from the filename portion so that
301
- // knowledge files use the original clean filename.
302
- const lastSlash = stripped.lastIndexOf("/");
303
- if (lastSlash >= 0) {
304
- const dir = stripped.slice(0, lastSlash + 1);
305
- const file = stripChatUploadPrefix(stripped.slice(lastSlash + 1));
306
- stripped = file ? `${dir}${file}` : stripped;
307
- }
308
- else {
309
- stripped = stripChatUploadPrefix(stripped) || stripped;
310
- }
311
- return slugify(stripped || basename(normalized, extname(normalized)) || `document-${index + 1}`);
144
+ function isProjectUploadReference(value) {
145
+ return commandHelpers.isProjectUploadReference(value);
312
146
  }
313
- export function ensureUniqueSlugs(sources) {
314
- const counts = new Map();
315
- return sources.map((source, index) => {
316
- const baseSlug = buildSuggestedSlug(source, index);
317
- const nextCount = (counts.get(baseSlug) ?? 0) + 1;
318
- counts.set(baseSlug, nextCount);
319
- return nextCount === 1 ? baseSlug : `${baseSlug}-${nextCount}`;
320
- });
147
+ function createFailedKnowledgeSource(input) {
148
+ return commandHelpers.createFailedKnowledgeSource(input);
321
149
  }
322
- export function deriveKnowledgeRemotePath(outputPath, outputDir, knowledgePath) {
323
- const relativeOutputPath = relative(outputDir, outputPath).replace(/\\/g, "/");
324
- if (!relativeOutputPath || relativeOutputPath.startsWith("..")) {
325
- throw new Error(`Output path is outside output directory: ${outputPath}`);
326
- }
327
- const prefix = normalizeKnowledgeInputPath(knowledgePath);
328
- const normalizedRelative = normalize(relativeOutputPath).replace(/^\/+/, "");
329
- return `${prefix}/${normalizedRelative}`.replace(/\\/g, "/");
150
+ async function collectLocalFiles(root, recursive) {
151
+ return commandHelpers.collectLocalFiles(root, recursive);
330
152
  }
331
- export function createKnowledgeIngestResult(input) {
332
- return {
333
- source: input.source,
334
- localSourcePath: input.localSourcePath,
335
- outputPath: input.outputPath,
336
- remotePath: input.remotePath,
337
- slug: input.parser.slug,
338
- sourceType: input.parser.source_type,
339
- summary: input.parser.summary,
340
- stats: input.parser.stats,
341
- warnings: input.parser.warnings,
342
- };
153
+ function buildSourceReference(source) {
154
+ return commandHelpers.buildSourceReference(source);
343
155
  }
344
156
  export async function runKnowledgeParser(input) {
345
157
  const [result] = await runKnowledgeParsers({
@@ -1 +1 @@
1
- {"version":3,"file":"command-definitions.d.ts","sourceRoot":"","sources":["../../../src/cli/help/command-definitions.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAyClD;;;GAGG;AACH,eAAO,MAAM,QAAQ,EAAE,eAuCtB,CAAC"}
1
+ {"version":3,"file":"command-definitions.d.ts","sourceRoot":"","sources":["../../../src/cli/help/command-definitions.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AA0ClD;;;GAGG;AACH,eAAO,MAAM,QAAQ,EAAE,eAwCtB,CAAC"}
@@ -42,6 +42,7 @@ import { skillsHelp } from "../commands/skills/command-help.js";
42
42
  import { configHelp } from "../commands/config/command-help.js";
43
43
  import { openHelp } from "../commands/open/command-help.js";
44
44
  import { completionsHelp } from "../commands/completions/command-help.js";
45
+ import { extensionHelp } from "../commands/extension/command-help.js";
45
46
  /**
46
47
  * Central registry of all command help definitions.
47
48
  * Each command's help is imported from its respective command-help.ts file.
@@ -85,4 +86,5 @@ export const COMMANDS = {
85
86
  config: configHelp,
86
87
  open: openHelp,
87
88
  completions: completionsHelp,
89
+ extension: extensionHelp,
88
90
  };
@@ -0,0 +1,5 @@
1
+ export declare function getBranchParam(branch?: string): string;
2
+ export declare function buildProjectApiPath(project: string, resource: string, branch?: string): string;
3
+ export declare function buildProjectFilePath(project: string, filePath: string, branch?: string): string;
4
+ export declare function slugToName(slug: string): string;
5
+ //# sourceMappingURL=remote-file-tool-helpers.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"remote-file-tool-helpers.d.ts","sourceRoot":"","sources":["../../../src/cli/mcp/remote-file-tool-helpers.ts"],"names":[],"mappings":"AAQA,wBAAgB,cAAc,CAAC,MAAM,CAAC,EAAE,MAAM,GAAG,MAAM,CAEtD;AAED,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,GAAG,MAAM,CAG9F;AAED,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,GAAG,MAAM,CAE/F;AAED,wBAAgB,UAAU,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAK/C"}