@ytinnovation/harness-core 0.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (397) hide show
  1. package/README.md +17 -0
  2. package/dist/assets/fetch-published-by-name.d.ts +16 -0
  3. package/dist/assets/fetch-published-by-name.d.ts.map +1 -0
  4. package/dist/assets/fetch-published-by-name.js +40 -0
  5. package/dist/assets/fetch-published-by-name.js.map +1 -0
  6. package/dist/assets/install-content.d.ts +7 -0
  7. package/dist/assets/install-content.d.ts.map +1 -0
  8. package/dist/assets/install-content.js +24 -0
  9. package/dist/assets/install-content.js.map +1 -0
  10. package/dist/assets/install-from.d.ts +6 -0
  11. package/dist/assets/install-from.d.ts.map +1 -0
  12. package/dist/assets/install-from.js +13 -0
  13. package/dist/assets/install-from.js.map +1 -0
  14. package/dist/assets/install.d.ts +36 -0
  15. package/dist/assets/install.d.ts.map +1 -0
  16. package/dist/assets/install.js +199 -0
  17. package/dist/assets/install.js.map +1 -0
  18. package/dist/assets/mcp-config-format.d.ts +11 -0
  19. package/dist/assets/mcp-config-format.d.ts.map +1 -0
  20. package/dist/assets/mcp-config-format.js +101 -0
  21. package/dist/assets/mcp-config-format.js.map +1 -0
  22. package/dist/assets/metadata.d.ts +65 -0
  23. package/dist/assets/metadata.d.ts.map +1 -0
  24. package/dist/assets/metadata.js +164 -0
  25. package/dist/assets/metadata.js.map +1 -0
  26. package/dist/assets/project-manifest.d.ts +80 -0
  27. package/dist/assets/project-manifest.d.ts.map +1 -0
  28. package/dist/assets/project-manifest.js +556 -0
  29. package/dist/assets/project-manifest.js.map +1 -0
  30. package/dist/assets/published-content.d.ts +28 -0
  31. package/dist/assets/published-content.d.ts.map +1 -0
  32. package/dist/assets/published-content.js +137 -0
  33. package/dist/assets/published-content.js.map +1 -0
  34. package/dist/assets/registry-entry.d.ts +9 -0
  35. package/dist/assets/registry-entry.d.ts.map +1 -0
  36. package/dist/assets/registry-entry.js +72 -0
  37. package/dist/assets/registry-entry.js.map +1 -0
  38. package/dist/assets/remote-list.d.ts +15 -0
  39. package/dist/assets/remote-list.d.ts.map +1 -0
  40. package/dist/assets/remote-list.js +36 -0
  41. package/dist/assets/remote-list.js.map +1 -0
  42. package/dist/cli-output/clipboard.d.ts +9 -0
  43. package/dist/cli-output/clipboard.d.ts.map +1 -0
  44. package/dist/cli-output/clipboard.js +56 -0
  45. package/dist/cli-output/clipboard.js.map +1 -0
  46. package/dist/cli-output/renderers.d.ts +99 -0
  47. package/dist/cli-output/renderers.d.ts.map +1 -0
  48. package/dist/cli-output/renderers.js +267 -0
  49. package/dist/cli-output/renderers.js.map +1 -0
  50. package/dist/cloud/enterprise-asset-client.d.ts +32 -0
  51. package/dist/cloud/enterprise-asset-client.d.ts.map +1 -0
  52. package/dist/cloud/enterprise-asset-client.js +179 -0
  53. package/dist/cloud/enterprise-asset-client.js.map +1 -0
  54. package/dist/cloud/enterprise-asset-types.d.ts +74 -0
  55. package/dist/cloud/enterprise-asset-types.d.ts.map +1 -0
  56. package/dist/cloud/enterprise-asset-types.js +2 -0
  57. package/dist/cloud/enterprise-asset-types.js.map +1 -0
  58. package/dist/cloud/harness-service-url.d.ts +3 -0
  59. package/dist/cloud/harness-service-url.d.ts.map +1 -0
  60. package/dist/cloud/harness-service-url.js +13 -0
  61. package/dist/cloud/harness-service-url.js.map +1 -0
  62. package/dist/cloud/rag-client.d.ts +18 -0
  63. package/dist/cloud/rag-client.d.ts.map +1 -0
  64. package/dist/cloud/rag-client.js +57 -0
  65. package/dist/cloud/rag-client.js.map +1 -0
  66. package/dist/cloud/redaction.d.ts +2 -0
  67. package/dist/cloud/redaction.d.ts.map +1 -0
  68. package/dist/cloud/redaction.js +53 -0
  69. package/dist/cloud/redaction.js.map +1 -0
  70. package/dist/cloud/telemetry-client.d.ts +21 -0
  71. package/dist/cloud/telemetry-client.d.ts.map +1 -0
  72. package/dist/cloud/telemetry-client.js +39 -0
  73. package/dist/cloud/telemetry-client.js.map +1 -0
  74. package/dist/contracts/config.d.ts +9 -0
  75. package/dist/contracts/config.d.ts.map +1 -0
  76. package/dist/contracts/config.defaults.d.ts +5 -0
  77. package/dist/contracts/config.defaults.d.ts.map +1 -0
  78. package/dist/contracts/config.defaults.js +5 -0
  79. package/dist/contracts/config.defaults.js.map +1 -0
  80. package/dist/contracts/config.js +5 -0
  81. package/dist/contracts/config.js.map +1 -0
  82. package/dist/contracts/config.loader.d.ts +3 -0
  83. package/dist/contracts/config.loader.d.ts.map +1 -0
  84. package/dist/contracts/config.loader.js +38 -0
  85. package/dist/contracts/config.loader.js.map +1 -0
  86. package/dist/contracts/errors.d.ts +8 -0
  87. package/dist/contracts/errors.d.ts.map +1 -0
  88. package/dist/contracts/errors.js +10 -0
  89. package/dist/contracts/errors.js.map +1 -0
  90. package/dist/cursor-acp-demo/index.d.ts +2 -0
  91. package/dist/cursor-acp-demo/index.d.ts.map +1 -0
  92. package/dist/cursor-acp-demo/index.js +63 -0
  93. package/dist/cursor-acp-demo/index.js.map +1 -0
  94. package/dist/dashboard/command.d.ts +15 -0
  95. package/dist/dashboard/command.d.ts.map +1 -0
  96. package/dist/dashboard/command.js +283 -0
  97. package/dist/dashboard/command.js.map +1 -0
  98. package/dist/dashboard/http-api.d.ts +3 -0
  99. package/dist/dashboard/http-api.d.ts.map +1 -0
  100. package/dist/dashboard/http-api.js +376 -0
  101. package/dist/dashboard/http-api.js.map +1 -0
  102. package/dist/dashboard/telemetry-snapshot.d.ts +11 -0
  103. package/dist/dashboard/telemetry-snapshot.d.ts.map +1 -0
  104. package/dist/dashboard/telemetry-snapshot.js +27 -0
  105. package/dist/dashboard/telemetry-snapshot.js.map +1 -0
  106. package/dist/dashboard-assets/assets/index-BNx5sFKx.css +1 -0
  107. package/dist/dashboard-assets/assets/index-ruRt5sDA.js +40 -0
  108. package/dist/dashboard-assets/index.html +13 -0
  109. package/dist/gateway/auth.d.ts +44 -0
  110. package/dist/gateway/auth.d.ts.map +1 -0
  111. package/dist/gateway/auth.js +2 -0
  112. package/dist/gateway/auth.js.map +1 -0
  113. package/dist/gateway/client.d.ts +65 -0
  114. package/dist/gateway/client.d.ts.map +1 -0
  115. package/dist/gateway/client.js +133 -0
  116. package/dist/gateway/client.js.map +1 -0
  117. package/dist/gateway/command.d.ts +4 -0
  118. package/dist/gateway/command.d.ts.map +1 -0
  119. package/dist/gateway/command.js +213 -0
  120. package/dist/gateway/command.js.map +1 -0
  121. package/dist/gateway/service-http-exchange.d.ts +17 -0
  122. package/dist/gateway/service-http-exchange.d.ts.map +1 -0
  123. package/dist/gateway/service-http-exchange.js +183 -0
  124. package/dist/gateway/service-http-exchange.js.map +1 -0
  125. package/dist/gateway/token-exchange.d.ts +10 -0
  126. package/dist/gateway/token-exchange.d.ts.map +1 -0
  127. package/dist/gateway/token-exchange.js +8 -0
  128. package/dist/gateway/token-exchange.js.map +1 -0
  129. package/dist/index.d.ts +111 -0
  130. package/dist/index.d.ts.map +1 -0
  131. package/dist/index.js +62 -0
  132. package/dist/index.js.map +1 -0
  133. package/dist/init/cloud-asset-client.d.ts +74 -0
  134. package/dist/init/cloud-asset-client.d.ts.map +1 -0
  135. package/dist/init/cloud-asset-client.js +399 -0
  136. package/dist/init/cloud-asset-client.js.map +1 -0
  137. package/dist/init/cloud-auto.d.ts +16 -0
  138. package/dist/init/cloud-auto.d.ts.map +1 -0
  139. package/dist/init/cloud-auto.js +61 -0
  140. package/dist/init/cloud-auto.js.map +1 -0
  141. package/dist/init/command.d.ts +17 -0
  142. package/dist/init/command.d.ts.map +1 -0
  143. package/dist/init/command.js +783 -0
  144. package/dist/init/command.js.map +1 -0
  145. package/dist/init/cursor-adapter.d.ts +24 -0
  146. package/dist/init/cursor-adapter.d.ts.map +1 -0
  147. package/dist/init/cursor-adapter.js +71 -0
  148. package/dist/init/cursor-adapter.js.map +1 -0
  149. package/dist/init/fingerprint.d.ts +6 -0
  150. package/dist/init/fingerprint.d.ts.map +1 -0
  151. package/dist/init/fingerprint.js +157 -0
  152. package/dist/init/fingerprint.js.map +1 -0
  153. package/dist/init/git-identity-catalog.d.ts +17 -0
  154. package/dist/init/git-identity-catalog.d.ts.map +1 -0
  155. package/dist/init/git-identity-catalog.js +48 -0
  156. package/dist/init/git-identity-catalog.js.map +1 -0
  157. package/dist/init/local-fallback-config-packs.d.ts +5 -0
  158. package/dist/init/local-fallback-config-packs.d.ts.map +1 -0
  159. package/dist/init/local-fallback-config-packs.js +6 -0
  160. package/dist/init/local-fallback-config-packs.js.map +1 -0
  161. package/dist/init/manifest-records.d.ts +34 -0
  162. package/dist/init/manifest-records.d.ts.map +1 -0
  163. package/dist/init/manifest-records.js +296 -0
  164. package/dist/init/manifest-records.js.map +1 -0
  165. package/dist/init/matched-init.d.ts +64 -0
  166. package/dist/init/matched-init.d.ts.map +1 -0
  167. package/dist/init/matched-init.js +263 -0
  168. package/dist/init/matched-init.js.map +1 -0
  169. package/dist/init/plan.d.ts +8 -0
  170. package/dist/init/plan.d.ts.map +1 -0
  171. package/dist/init/plan.js +165 -0
  172. package/dist/init/plan.js.map +1 -0
  173. package/dist/init/project-fingerprint-catalog.d.ts +17 -0
  174. package/dist/init/project-fingerprint-catalog.d.ts.map +1 -0
  175. package/dist/init/project-fingerprint-catalog.js +105 -0
  176. package/dist/init/project-fingerprint-catalog.js.map +1 -0
  177. package/dist/init/prompt.d.ts +38 -0
  178. package/dist/init/prompt.d.ts.map +1 -0
  179. package/dist/init/prompt.js +217 -0
  180. package/dist/init/prompt.js.map +1 -0
  181. package/dist/init/questions.d.ts +5 -0
  182. package/dist/init/questions.d.ts.map +1 -0
  183. package/dist/init/questions.js +71 -0
  184. package/dist/init/questions.js.map +1 -0
  185. package/dist/init/template-match.d.ts +10 -0
  186. package/dist/init/template-match.d.ts.map +1 -0
  187. package/dist/init/template-match.js +125 -0
  188. package/dist/init/template-match.js.map +1 -0
  189. package/dist/init/types.d.ts +162 -0
  190. package/dist/init/types.d.ts.map +1 -0
  191. package/dist/init/types.js +2 -0
  192. package/dist/init/types.js.map +1 -0
  193. package/dist/init/write.d.ts +7 -0
  194. package/dist/init/write.d.ts.map +1 -0
  195. package/dist/init/write.js +155 -0
  196. package/dist/init/write.js.map +1 -0
  197. package/dist/install/command.d.ts +25 -0
  198. package/dist/install/command.d.ts.map +1 -0
  199. package/dist/install/command.js +251 -0
  200. package/dist/install/command.js.map +1 -0
  201. package/dist/install/prompt.d.ts +21 -0
  202. package/dist/install/prompt.d.ts.map +1 -0
  203. package/dist/install/prompt.js +60 -0
  204. package/dist/install/prompt.js.map +1 -0
  205. package/dist/kernel/commands/init.d.ts +11 -0
  206. package/dist/kernel/commands/init.d.ts.map +1 -0
  207. package/dist/kernel/commands/init.js +144 -0
  208. package/dist/kernel/commands/init.js.map +1 -0
  209. package/dist/kernel/create.d.ts +3 -0
  210. package/dist/kernel/create.d.ts.map +1 -0
  211. package/dist/kernel/create.js +31 -0
  212. package/dist/kernel/create.js.map +1 -0
  213. package/dist/kernel/router.d.ts +14 -0
  214. package/dist/kernel/router.d.ts.map +1 -0
  215. package/dist/kernel/router.js +73 -0
  216. package/dist/kernel/router.js.map +1 -0
  217. package/dist/kernel/types.d.ts +6 -0
  218. package/dist/kernel/types.d.ts.map +1 -0
  219. package/dist/kernel/types.js +2 -0
  220. package/dist/kernel/types.js.map +1 -0
  221. package/dist/knowledge/command.d.ts +6 -0
  222. package/dist/knowledge/command.d.ts.map +1 -0
  223. package/dist/knowledge/command.js +151 -0
  224. package/dist/knowledge/command.js.map +1 -0
  225. package/dist/knowledge/query.d.ts +23 -0
  226. package/dist/knowledge/query.d.ts.map +1 -0
  227. package/dist/knowledge/query.js +133 -0
  228. package/dist/knowledge/query.js.map +1 -0
  229. package/dist/knowledge/rag.d.ts +74 -0
  230. package/dist/knowledge/rag.d.ts.map +1 -0
  231. package/dist/knowledge/rag.js +55 -0
  232. package/dist/knowledge/rag.js.map +1 -0
  233. package/dist/knowledge/types.d.ts +40 -0
  234. package/dist/knowledge/types.d.ts.map +1 -0
  235. package/dist/knowledge/types.js +13 -0
  236. package/dist/knowledge/types.js.map +1 -0
  237. package/dist/mcp/command.d.ts +19 -0
  238. package/dist/mcp/command.d.ts.map +1 -0
  239. package/dist/mcp/command.js +359 -0
  240. package/dist/mcp/command.js.map +1 -0
  241. package/dist/mcp/server.d.ts +14 -0
  242. package/dist/mcp/server.d.ts.map +1 -0
  243. package/dist/mcp/server.js +44 -0
  244. package/dist/mcp/server.js.map +1 -0
  245. package/dist/mcp/tool-registry.d.ts +38 -0
  246. package/dist/mcp/tool-registry.d.ts.map +1 -0
  247. package/dist/mcp/tool-registry.js +50 -0
  248. package/dist/mcp/tool-registry.js.map +1 -0
  249. package/dist/mcp/tools/add-skill.d.ts +29 -0
  250. package/dist/mcp/tools/add-skill.d.ts.map +1 -0
  251. package/dist/mcp/tools/add-skill.js +184 -0
  252. package/dist/mcp/tools/add-skill.js.map +1 -0
  253. package/dist/mcp/tools/assemble-init-assets.d.ts +26 -0
  254. package/dist/mcp/tools/assemble-init-assets.d.ts.map +1 -0
  255. package/dist/mcp/tools/assemble-init-assets.js +136 -0
  256. package/dist/mcp/tools/assemble-init-assets.js.map +1 -0
  257. package/dist/mcp/tools/query-knowledge.d.ts +28 -0
  258. package/dist/mcp/tools/query-knowledge.d.ts.map +1 -0
  259. package/dist/mcp/tools/query-knowledge.js +92 -0
  260. package/dist/mcp/tools/query-knowledge.js.map +1 -0
  261. package/dist/mcp/tools/read-instructions.d.ts +14 -0
  262. package/dist/mcp/tools/read-instructions.d.ts.map +1 -0
  263. package/dist/mcp/tools/read-instructions.js +81 -0
  264. package/dist/mcp/tools/read-instructions.js.map +1 -0
  265. package/dist/mcp/tools/sync-spec.d.ts +17 -0
  266. package/dist/mcp/tools/sync-spec.d.ts.map +1 -0
  267. package/dist/mcp/tools/sync-spec.js +80 -0
  268. package/dist/mcp/tools/sync-spec.js.map +1 -0
  269. package/dist/mcp/tools/update-rule.d.ts +49 -0
  270. package/dist/mcp/tools/update-rule.d.ts.map +1 -0
  271. package/dist/mcp/tools/update-rule.js +188 -0
  272. package/dist/mcp/tools/update-rule.js.map +1 -0
  273. package/dist/mcp/types.d.ts +21 -0
  274. package/dist/mcp/types.d.ts.map +1 -0
  275. package/dist/mcp/types.js +8 -0
  276. package/dist/mcp/types.js.map +1 -0
  277. package/dist/prompt/command.d.ts +10 -0
  278. package/dist/prompt/command.d.ts.map +1 -0
  279. package/dist/prompt/command.js +260 -0
  280. package/dist/prompt/command.js.map +1 -0
  281. package/dist/rule/command.d.ts +10 -0
  282. package/dist/rule/command.d.ts.map +1 -0
  283. package/dist/rule/command.js +120 -0
  284. package/dist/rule/command.js.map +1 -0
  285. package/dist/skills/command.d.ts +23 -0
  286. package/dist/skills/command.d.ts.map +1 -0
  287. package/dist/skills/command.js +713 -0
  288. package/dist/skills/command.js.map +1 -0
  289. package/dist/skills/default-internal-skill-provider.d.ts +4 -0
  290. package/dist/skills/default-internal-skill-provider.d.ts.map +1 -0
  291. package/dist/skills/default-internal-skill-provider.js +23 -0
  292. package/dist/skills/default-internal-skill-provider.js.map +1 -0
  293. package/dist/skills/gitlab-skill-publish-client.d.ts +13 -0
  294. package/dist/skills/gitlab-skill-publish-client.d.ts.map +1 -0
  295. package/dist/skills/gitlab-skill-publish-client.js +255 -0
  296. package/dist/skills/gitlab-skill-publish-client.js.map +1 -0
  297. package/dist/skills/install.d.ts +23 -0
  298. package/dist/skills/install.d.ts.map +1 -0
  299. package/dist/skills/install.js +143 -0
  300. package/dist/skills/install.js.map +1 -0
  301. package/dist/skills/list-scan.d.ts +29 -0
  302. package/dist/skills/list-scan.d.ts.map +1 -0
  303. package/dist/skills/list-scan.js +230 -0
  304. package/dist/skills/list-scan.js.map +1 -0
  305. package/dist/skills/metadata.d.ts +5 -0
  306. package/dist/skills/metadata.d.ts.map +1 -0
  307. package/dist/skills/metadata.js +44 -0
  308. package/dist/skills/metadata.js.map +1 -0
  309. package/dist/skills/providers/harness-service.d.ts +11 -0
  310. package/dist/skills/providers/harness-service.d.ts.map +1 -0
  311. package/dist/skills/providers/harness-service.js +111 -0
  312. package/dist/skills/providers/harness-service.js.map +1 -0
  313. package/dist/skills/providers/stub.d.ts +4 -0
  314. package/dist/skills/providers/stub.d.ts.map +1 -0
  315. package/dist/skills/providers/stub.js +18 -0
  316. package/dist/skills/providers/stub.js.map +1 -0
  317. package/dist/skills/publish.d.ts +35 -0
  318. package/dist/skills/publish.d.ts.map +1 -0
  319. package/dist/skills/publish.js +115 -0
  320. package/dist/skills/publish.js.map +1 -0
  321. package/dist/skills/registry.d.ts +24 -0
  322. package/dist/skills/registry.d.ts.map +1 -0
  323. package/dist/skills/registry.js +124 -0
  324. package/dist/skills/registry.js.map +1 -0
  325. package/dist/skills/remove.d.ts +14 -0
  326. package/dist/skills/remove.d.ts.map +1 -0
  327. package/dist/skills/remove.js +44 -0
  328. package/dist/skills/remove.js.map +1 -0
  329. package/dist/skills/search.d.ts +9 -0
  330. package/dist/skills/search.d.ts.map +1 -0
  331. package/dist/skills/search.js +65 -0
  332. package/dist/skills/search.js.map +1 -0
  333. package/dist/skills/skill-markdown-manifest.d.ts +6 -0
  334. package/dist/skills/skill-markdown-manifest.d.ts.map +1 -0
  335. package/dist/skills/skill-markdown-manifest.js +57 -0
  336. package/dist/skills/skill-markdown-manifest.js.map +1 -0
  337. package/dist/skills/types.d.ts +138 -0
  338. package/dist/skills/types.d.ts.map +1 -0
  339. package/dist/skills/types.js +2 -0
  340. package/dist/skills/types.js.map +1 -0
  341. package/dist/skills/update.d.ts +11 -0
  342. package/dist/skills/update.d.ts.map +1 -0
  343. package/dist/skills/update.js +55 -0
  344. package/dist/skills/update.js.map +1 -0
  345. package/dist/spec/command.d.ts +11 -0
  346. package/dist/spec/command.d.ts.map +1 -0
  347. package/dist/spec/command.js +201 -0
  348. package/dist/spec/command.js.map +1 -0
  349. package/dist/telemetry/reporter.d.ts +14 -0
  350. package/dist/telemetry/reporter.d.ts.map +1 -0
  351. package/dist/telemetry/reporter.js +31 -0
  352. package/dist/telemetry/reporter.js.map +1 -0
  353. package/dist/telemetry/sink.d.ts +7 -0
  354. package/dist/telemetry/sink.d.ts.map +1 -0
  355. package/dist/telemetry/sink.js +309 -0
  356. package/dist/telemetry/sink.js.map +1 -0
  357. package/dist/telemetry/types.d.ts +48 -0
  358. package/dist/telemetry/types.d.ts.map +1 -0
  359. package/dist/telemetry/types.js +2 -0
  360. package/dist/telemetry/types.js.map +1 -0
  361. package/dist/update/apply.d.ts +11 -0
  362. package/dist/update/apply.d.ts.map +1 -0
  363. package/dist/update/apply.js +94 -0
  364. package/dist/update/apply.js.map +1 -0
  365. package/dist/update/command.d.ts +43 -0
  366. package/dist/update/command.d.ts.map +1 -0
  367. package/dist/update/command.js +524 -0
  368. package/dist/update/command.js.map +1 -0
  369. package/dist/update/config-pack-sync.d.ts +11 -0
  370. package/dist/update/config-pack-sync.d.ts.map +1 -0
  371. package/dist/update/config-pack-sync.js +88 -0
  372. package/dist/update/config-pack-sync.js.map +1 -0
  373. package/dist/update/enterprise-update-provider.d.ts +8 -0
  374. package/dist/update/enterprise-update-provider.d.ts.map +1 -0
  375. package/dist/update/enterprise-update-provider.js +76 -0
  376. package/dist/update/enterprise-update-provider.js.map +1 -0
  377. package/dist/update/manifest-source.d.ts +33 -0
  378. package/dist/update/manifest-source.d.ts.map +1 -0
  379. package/dist/update/manifest-source.js +111 -0
  380. package/dist/update/manifest-source.js.map +1 -0
  381. package/dist/update/plan-utils.d.ts +5 -0
  382. package/dist/update/plan-utils.d.ts.map +1 -0
  383. package/dist/update/plan-utils.js +13 -0
  384. package/dist/update/plan-utils.js.map +1 -0
  385. package/dist/update/prompt.d.ts +19 -0
  386. package/dist/update/prompt.d.ts.map +1 -0
  387. package/dist/update/prompt.js +72 -0
  388. package/dist/update/prompt.js.map +1 -0
  389. package/dist/update/resolve-action.d.ts +7 -0
  390. package/dist/update/resolve-action.d.ts.map +1 -0
  391. package/dist/update/resolve-action.js +14 -0
  392. package/dist/update/resolve-action.js.map +1 -0
  393. package/dist/update/types.d.ts +33 -0
  394. package/dist/update/types.d.ts.map +1 -0
  395. package/dist/update/types.js +2 -0
  396. package/dist/update/types.js.map +1 -0
  397. package/package.json +42 -0
@@ -0,0 +1,399 @@
1
+ import { HarnessError } from '../contracts/errors.js';
2
+ import { isMarkdownLikeAssetPath } from '../assets/install-content.js';
3
+ import { resolvePublishedAssetBody } from '../assets/published-content.js';
4
+ import { applyCloudPayloadRedaction } from '../cloud/redaction.js';
5
+ import { markerValuesFromFingerprintMarkers } from './project-fingerprint-catalog.js';
6
+ export function createCloudAssetClientUnavailableError(message) {
7
+ return new HarnessError('INIT_CLOUD_UNAVAILABLE', message ??
8
+ 'Cloud asset service is unavailable. Rerun with --mode template-match or --mode local-manual.');
9
+ }
10
+ function selectedAssetTypes(answers) {
11
+ const types = [];
12
+ if (answers.useSkills) {
13
+ types.push('skill');
14
+ }
15
+ if (answers.includeRules) {
16
+ types.push('rule');
17
+ }
18
+ if (answers.syncSpec) {
19
+ types.push('spec');
20
+ }
21
+ // generateReadme only selects ai-coding-readme via filterCloudAssetsBySelection; not all commands.
22
+ if (answers.bootstrapMcp) {
23
+ types.push('mcp-config');
24
+ }
25
+ return types;
26
+ }
27
+ function toServiceAssetType(assetType) {
28
+ if (assetType === 'mcp-config') {
29
+ return 'mcp_config';
30
+ }
31
+ if (assetType === 'spec') {
32
+ return 'spec_template';
33
+ }
34
+ return assetType;
35
+ }
36
+ function normalizeTags(tags) {
37
+ if (!Array.isArray(tags)) {
38
+ return undefined;
39
+ }
40
+ const normalized = tags.filter((tag) => typeof tag === 'string' && tag.trim() !== '');
41
+ return normalized.length > 0 ? normalized : undefined;
42
+ }
43
+ async function fetchPublishedAssetBody(args) {
44
+ const versionUrl = new URL(`${args.normalizedBaseUrl}/assets/${encodeURIComponent(args.assetId)}/versions/${encodeURIComponent(args.versionLabel)}`);
45
+ const versionResponse = await fetchWithTimeout(args.fetchImpl, versionUrl.toString(), undefined, args.requestTimeoutMs);
46
+ if (!versionResponse.ok) {
47
+ return { content: undefined, contentCommitSha: null };
48
+ }
49
+ const versionBody = (await versionResponse.json());
50
+ return {
51
+ content: typeof versionBody.content === 'string' ? versionBody.content : undefined,
52
+ contentCommitSha: typeof versionBody.contentCommitSha === 'string' && versionBody.contentCommitSha.trim() !== ''
53
+ ? versionBody.contentCommitSha
54
+ : null,
55
+ };
56
+ }
57
+ async function resolvePublishedAssetIdByExactName(args) {
58
+ const listUrl = new URL(`${args.normalizedBaseUrl}/assets`);
59
+ listUrl.searchParams.set('type', toServiceAssetType(args.asset.assetType));
60
+ listUrl.searchParams.set('query', args.asset.name);
61
+ listUrl.searchParams.set('limit', '20');
62
+ const listResponse = await fetchWithTimeout(args.fetchImpl, listUrl.toString(), undefined, args.requestTimeoutMs);
63
+ if (!listResponse.ok) {
64
+ return undefined;
65
+ }
66
+ const listBody = (await listResponse.json());
67
+ const matches = (listBody.items ?? []).filter((item) => item.name === args.asset.name && item.id);
68
+ if (matches.length !== 1) {
69
+ return undefined;
70
+ }
71
+ return matches[0].id;
72
+ }
73
+ async function hydratePublishedCloudAsset(args) {
74
+ const base = {
75
+ assetType: args.asset.assetType,
76
+ name: args.asset.name,
77
+ targetPath: args.asset.targetPath,
78
+ source: args.source,
79
+ version: args.asset.contentCommitSha ?? args.packVersion ?? 'unknown',
80
+ ...(args.asset.assetId ? { assetId: args.asset.assetId } : {}),
81
+ ...(args.asset.contentCommitSha ? { contentCommitSha: args.asset.contentCommitSha } : {}),
82
+ ...(args.asset.publishedVersionLabel ? { publishedVersionLabel: args.asset.publishedVersionLabel } : {}),
83
+ ...(normalizeTags(args.asset.tags) ? { tags: normalizeTags(args.asset.tags) } : {}),
84
+ };
85
+ try {
86
+ let assetId = args.asset.assetId;
87
+ let enterpriseMetadata;
88
+ let enterpriseTags = normalizeTags(args.asset.tags);
89
+ if (!assetId) {
90
+ assetId = await resolvePublishedAssetIdByExactName({
91
+ normalizedBaseUrl: args.normalizedBaseUrl,
92
+ fetchImpl: args.fetchImpl,
93
+ requestTimeoutMs: args.requestTimeoutMs,
94
+ asset: args.asset,
95
+ });
96
+ }
97
+ if (!assetId) {
98
+ return base;
99
+ }
100
+ let versionLabel = args.asset.publishedVersionLabel;
101
+ if (!versionLabel || enterpriseTags === undefined || enterpriseMetadata === undefined) {
102
+ const detailUrl = new URL(`${args.normalizedBaseUrl}/assets/${encodeURIComponent(assetId)}`);
103
+ const detailResponse = await fetchWithTimeout(args.fetchImpl, detailUrl.toString(), undefined, args.requestTimeoutMs);
104
+ if (!detailResponse.ok) {
105
+ return { ...base, assetId };
106
+ }
107
+ const detailBody = (await detailResponse.json());
108
+ versionLabel = versionLabel ?? detailBody.latestPublished?.version;
109
+ enterpriseMetadata = enterpriseMetadata ?? detailBody.metadata;
110
+ enterpriseTags = enterpriseTags ?? normalizeTags(detailBody.tags);
111
+ }
112
+ if (!versionLabel) {
113
+ return {
114
+ ...base,
115
+ assetId,
116
+ ...(enterpriseMetadata !== undefined ? { metadata: enterpriseMetadata } : {}),
117
+ ...(enterpriseTags ? { tags: enterpriseTags } : {}),
118
+ };
119
+ }
120
+ const published = await fetchPublishedAssetBody({
121
+ normalizedBaseUrl: args.normalizedBaseUrl,
122
+ fetchImpl: args.fetchImpl,
123
+ requestTimeoutMs: args.requestTimeoutMs,
124
+ assetId,
125
+ versionLabel,
126
+ });
127
+ const contentCommitSha = published.contentCommitSha ?? args.asset.contentCommitSha ?? null;
128
+ const version = contentCommitSha ?? 'unknown';
129
+ let content = published.content;
130
+ let bundleFiles;
131
+ if (content !== undefined && isMarkdownLikeAssetPath(args.asset.targetPath)) {
132
+ const resolved = resolvePublishedAssetBody(content, { assetName: args.asset.name });
133
+ content = resolved.content;
134
+ bundleFiles = resolved.bundleFiles;
135
+ }
136
+ return {
137
+ ...base,
138
+ assetId,
139
+ version,
140
+ publishedVersionLabel: versionLabel,
141
+ ...(enterpriseMetadata !== undefined ? { metadata: enterpriseMetadata } : {}),
142
+ ...(enterpriseTags ? { tags: enterpriseTags } : {}),
143
+ ...(contentCommitSha ? { contentCommitSha } : {}),
144
+ ...(content !== undefined ? { content } : {}),
145
+ ...(bundleFiles && bundleFiles.length > 0 ? { bundleFiles } : {}),
146
+ };
147
+ }
148
+ catch {
149
+ return base;
150
+ }
151
+ }
152
+ async function fetchWithTimeout(fetchImpl, input, init, timeoutMs) {
153
+ const controller = new AbortController();
154
+ const timeout = setTimeout(() => controller.abort(), timeoutMs);
155
+ try {
156
+ return await fetchImpl(input, {
157
+ ...init,
158
+ signal: controller.signal,
159
+ });
160
+ }
161
+ finally {
162
+ clearTimeout(timeout);
163
+ }
164
+ }
165
+ async function hydrateCloudAssetMatchPack(args) {
166
+ const assets = await Promise.all((args.pack.assetSummary ?? []).map((asset) => hydratePublishedCloudAsset({
167
+ normalizedBaseUrl: args.normalizedBaseUrl,
168
+ fetchImpl: args.fetchImpl,
169
+ requestTimeoutMs: args.requestTimeoutMs,
170
+ asset,
171
+ source: 'harness-cloud/config-pack',
172
+ packVersion: args.pack.version,
173
+ })));
174
+ const hitReasonsJoined = args.pack.hitReasons?.length ? args.pack.hitReasons.join(', ') : undefined;
175
+ return {
176
+ packId: args.pack.techStack?.id ?? args.fallbackPackId ?? 'cloud-config-pack',
177
+ packName: args.pack.techStack?.name ?? 'Cloud Config Pack',
178
+ version: args.pack.version ?? 'unknown',
179
+ hitReason: hitReasonsJoined ?? 'cloud-config-pack',
180
+ assets,
181
+ };
182
+ }
183
+ async function parseConfigPackMatchBody(args) {
184
+ const matchedPacks = args.body.matchedPacks && args.body.matchedPacks.length > 0
185
+ ? await Promise.all(args.body.matchedPacks.map((pack) => hydrateCloudAssetMatchPack({
186
+ normalizedBaseUrl: args.normalizedBaseUrl,
187
+ fetchImpl: args.fetchImpl,
188
+ requestTimeoutMs: args.requestTimeoutMs,
189
+ pack,
190
+ })))
191
+ : undefined;
192
+ const primaryPack = matchedPacks?.[0] ??
193
+ (await hydrateCloudAssetMatchPack({
194
+ normalizedBaseUrl: args.normalizedBaseUrl,
195
+ fetchImpl: args.fetchImpl,
196
+ requestTimeoutMs: args.requestTimeoutMs,
197
+ pack: {
198
+ hitReasons: args.body.hitReasons,
199
+ version: args.body.version,
200
+ techStack: args.body.techStack,
201
+ assetSummary: args.body.assetSummary,
202
+ },
203
+ fallbackPackId: args.body.techStack?.id,
204
+ }));
205
+ const hitReasonsJoined = args.body.hitReasons?.length ? args.body.hitReasons.join(', ') : undefined;
206
+ return {
207
+ matched: args.body.matched,
208
+ hitReason: hitReasonsJoined ?? args.body.fallback?.reason ?? primaryPack.hitReason,
209
+ rollbackHint: args.body.rollbackHint,
210
+ packId: primaryPack.packId,
211
+ packName: primaryPack.packName,
212
+ version: primaryPack.version,
213
+ assets: primaryPack.assets,
214
+ matchedPacks: matchedPacks ?? [primaryPack],
215
+ };
216
+ }
217
+ async function requestConfigPackMatch(args) {
218
+ const workspaceRoot = args.request.workspaceRoot ?? args.request.fingerprint.cwd;
219
+ const redactedFingerprint = await applyCloudPayloadRedaction(args.request.fingerprint, workspaceRoot);
220
+ const url = new URL(`${args.normalizedBaseUrl}/config-packs/${args.endpoint}`);
221
+ url.searchParams.set('languages', redactedFingerprint.languages.join(','));
222
+ url.searchParams.set('markers', markerValuesFromFingerprintMarkers(redactedFingerprint.markers).join(','));
223
+ if (redactedFingerprint.packageManager !== 'unknown') {
224
+ url.searchParams.set('packageManager', redactedFingerprint.packageManager);
225
+ }
226
+ url.searchParams.set('hasGitIdentity', String(redactedFingerprint.gitIdentity.name !== null || redactedFingerprint.gitIdentity.email !== null));
227
+ if (redactedFingerprint.gitIdentity.email) {
228
+ url.searchParams.set('gitEmail', redactedFingerprint.gitIdentity.email);
229
+ }
230
+ let response;
231
+ try {
232
+ response = await fetchWithTimeout(args.fetchImpl, url.toString(), undefined, args.requestTimeoutMs);
233
+ }
234
+ catch (error) {
235
+ throw createCloudAssetClientUnavailableError(`Failed to reach cloud config-pack service: ${error instanceof Error && error.name === 'AbortError'
236
+ ? `request timed out after ${args.requestTimeoutMs}ms`
237
+ : error instanceof Error ? error.message : String(error)}`);
238
+ }
239
+ if (!response.ok) {
240
+ throw createCloudAssetClientUnavailableError(`Cloud config-pack request failed with status ${response.status}.`);
241
+ }
242
+ const body = (await response.json());
243
+ return parseConfigPackMatchBody({
244
+ normalizedBaseUrl: args.normalizedBaseUrl,
245
+ fetchImpl: args.fetchImpl,
246
+ requestTimeoutMs: args.requestTimeoutMs,
247
+ body,
248
+ });
249
+ }
250
+ async function requestConfigPackById(args) {
251
+ const url = `${args.normalizedBaseUrl}/config-packs/${encodeURIComponent(args.packId)}`;
252
+ let response;
253
+ try {
254
+ response = await fetchWithTimeout(args.fetchImpl, url, undefined, args.requestTimeoutMs);
255
+ }
256
+ catch (error) {
257
+ throw createCloudAssetClientUnavailableError(`Failed to reach cloud config-pack service: ${error instanceof Error && error.name === 'AbortError'
258
+ ? `request timed out after ${args.requestTimeoutMs}ms`
259
+ : error instanceof Error
260
+ ? error.message
261
+ : String(error)}`);
262
+ }
263
+ if (response.status === 404) {
264
+ return null;
265
+ }
266
+ if (!response.ok) {
267
+ throw createCloudAssetClientUnavailableError(`Cloud config-pack request failed with status ${response.status}.`);
268
+ }
269
+ const body = (await response.json());
270
+ const assets = await Promise.all((body.assetSummary ?? []).map((asset) => hydratePublishedCloudAsset({
271
+ normalizedBaseUrl: args.normalizedBaseUrl,
272
+ fetchImpl: args.fetchImpl,
273
+ requestTimeoutMs: args.requestTimeoutMs,
274
+ asset,
275
+ source: 'harness-cloud/config-pack',
276
+ packVersion: body.version,
277
+ })));
278
+ const hitReasonsJoined = body.hitReasons?.length ? body.hitReasons.join(', ') : undefined;
279
+ return {
280
+ matched: body.matched,
281
+ hitReason: hitReasonsJoined ?? 'cloud-config-pack',
282
+ packId: body.techStack?.id ?? args.packId,
283
+ packName: body.techStack?.name,
284
+ version: body.version,
285
+ assets,
286
+ };
287
+ }
288
+ export function createDefaultCloudAssetClient(options = {}) {
289
+ const baseUrl = options.baseUrl ?? process.env.HARNESS_CLOUD_BASE_URL ?? process.env.HARNESS_SERVICE_URL;
290
+ const fetchImpl = options.fetchImpl ?? globalThis.fetch;
291
+ const requestTimeoutMs = options.requestTimeoutMs ?? 2_000;
292
+ if (!baseUrl) {
293
+ return {
294
+ async matchConfigPack() {
295
+ throw createCloudAssetClientUnavailableError('HARNESS_CLOUD_BASE_URL or HARNESS_SERVICE_URL is not configured.');
296
+ },
297
+ async matchDefaultConfigPack() {
298
+ throw createCloudAssetClientUnavailableError('HARNESS_CLOUD_BASE_URL or HARNESS_SERVICE_URL is not configured.');
299
+ },
300
+ async fetchConfigPackById() {
301
+ throw createCloudAssetClientUnavailableError('HARNESS_CLOUD_BASE_URL or HARNESS_SERVICE_URL is not configured.');
302
+ },
303
+ async assembleAssets() {
304
+ throw createCloudAssetClientUnavailableError('HARNESS_CLOUD_BASE_URL or HARNESS_SERVICE_URL is not configured.');
305
+ },
306
+ };
307
+ }
308
+ const normalizedBaseUrl = baseUrl.endsWith('/') ? baseUrl.slice(0, -1) : baseUrl;
309
+ return {
310
+ async matchConfigPack(request) {
311
+ return requestConfigPackMatch({
312
+ normalizedBaseUrl,
313
+ fetchImpl,
314
+ requestTimeoutMs,
315
+ request,
316
+ endpoint: 'match',
317
+ });
318
+ },
319
+ async matchDefaultConfigPack(request) {
320
+ return requestConfigPackMatch({
321
+ normalizedBaseUrl,
322
+ fetchImpl,
323
+ requestTimeoutMs,
324
+ request,
325
+ endpoint: 'default',
326
+ });
327
+ },
328
+ async fetchConfigPackById(packId) {
329
+ return requestConfigPackById({
330
+ normalizedBaseUrl,
331
+ fetchImpl,
332
+ requestTimeoutMs,
333
+ packId,
334
+ });
335
+ },
336
+ async assembleAssets(request) {
337
+ const workspaceRoot = request.workspaceRoot ?? request.fingerprint.cwd;
338
+ const redactedFingerprint = await applyCloudPayloadRedaction(request.fingerprint, workspaceRoot);
339
+ const redactedAnswers = await applyCloudPayloadRedaction(request.answers, workspaceRoot);
340
+ const hasGitIdentity = redactedFingerprint.gitIdentity.name !== null || redactedFingerprint.gitIdentity.email !== null;
341
+ const requestedAssetTypes = selectedAssetTypes(request.answers).filter((assetType) => assetType !== 'mcp-config');
342
+ let response;
343
+ try {
344
+ response = await fetchWithTimeout(fetchImpl, `${normalizedBaseUrl}/mastra/assemble`, {
345
+ method: 'POST',
346
+ headers: {
347
+ 'content-type': 'application/json',
348
+ },
349
+ body: JSON.stringify({
350
+ userRole: '前端工程师',
351
+ fingerprint: {
352
+ languages: redactedFingerprint.languages,
353
+ packageManager: redactedFingerprint.packageManager === 'unknown'
354
+ ? undefined
355
+ : redactedFingerprint.packageManager,
356
+ markers: markerValuesFromFingerprintMarkers(redactedFingerprint.markers),
357
+ hasGitIdentity,
358
+ },
359
+ teamPolicy: {
360
+ policyId: 'harness-init-cloud-auto',
361
+ preferredAssetTypes: requestedAssetTypes,
362
+ strategy: 'balanced',
363
+ },
364
+ userSelection: {
365
+ inputSource: 'cli',
366
+ requestedAssetTypes,
367
+ enableTutorial: false,
368
+ },
369
+ }),
370
+ }, requestTimeoutMs);
371
+ }
372
+ catch (error) {
373
+ throw createCloudAssetClientUnavailableError(`Failed to reach cloud assembly service: ${error instanceof Error && error.name === 'AbortError'
374
+ ? `request timed out after ${requestTimeoutMs}ms`
375
+ : error instanceof Error ? error.message : String(error)}`);
376
+ }
377
+ if (!response.ok) {
378
+ throw createCloudAssetClientUnavailableError(`Cloud assembly request failed with status ${response.status}.`);
379
+ }
380
+ const body = (await response.json());
381
+ return {
382
+ assembled: body.assembled,
383
+ explainableLog: (body.explainableLog ?? []).map((entry) => entry.message),
384
+ fallbackReason: body.fallback?.reason,
385
+ assets: await Promise.all((body.assets ?? []).map((asset) => hydratePublishedCloudAsset({
386
+ normalizedBaseUrl,
387
+ fetchImpl,
388
+ requestTimeoutMs,
389
+ asset,
390
+ source: 'harness-cloud/mastra',
391
+ }).then((resolved) => ({
392
+ ...resolved,
393
+ reason: asset.reason,
394
+ })))),
395
+ };
396
+ },
397
+ };
398
+ }
399
+ //# sourceMappingURL=cloud-asset-client.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cloud-asset-client.js","sourceRoot":"","sources":["../../src/init/cloud-asset-client.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,16 @@
1
+ import { HarnessError } from '../contracts/errors.js';
2
+ import { type CloudAssetClient } from './cloud-asset-client.js';
3
+ import type { CloudInitPlanPreview, CloudInitRequestPayload } from './types.js';
4
+ export interface CloudInitAdapterRequest {
5
+ cwd: string;
6
+ payload: CloudInitRequestPayload;
7
+ }
8
+ export interface CloudInitAdapter {
9
+ generatePlanPreview(request: CloudInitAdapterRequest): Promise<CloudInitPlanPreview>;
10
+ }
11
+ export interface CreateDefaultCloudInitAdapterOptions {
12
+ cloudAssetClient?: CloudAssetClient;
13
+ }
14
+ export declare function createCloudInitUnavailableError(message?: string): HarnessError;
15
+ export declare function createDefaultCloudInitAdapter(options?: CreateDefaultCloudInitAdapterOptions): CloudInitAdapter;
16
+ //# sourceMappingURL=cloud-auto.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cloud-auto.d.ts","sourceRoot":"","sources":["../../src/init/cloud-auto.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAC;AACtD,OAAO,EAEL,KAAK,gBAAgB,EAEtB,MAAM,yBAAyB,CAAC;AAEjC,OAAO,KAAK,EAAE,oBAAoB,EAAE,uBAAuB,EAAe,MAAM,YAAY,CAAC;AAE7F,MAAM,WAAW,uBAAuB;IACtC,GAAG,EAAE,MAAM,CAAC;IACZ,OAAO,EAAE,uBAAuB,CAAC;CAClC;AAED,MAAM,WAAW,gBAAgB;IAC/B,mBAAmB,CAAC,OAAO,EAAE,uBAAuB,GAAG,OAAO,CAAC,oBAAoB,CAAC,CAAC;CACtF;AAED,MAAM,WAAW,oCAAoC;IACnD,gBAAgB,CAAC,EAAE,gBAAgB,CAAC;CACrC;AAED,wBAAgB,+BAA+B,CAAC,OAAO,CAAC,EAAE,MAAM,GAAG,YAAY,CAM9E;AAoCD,wBAAgB,6BAA6B,CAC3C,OAAO,GAAE,oCAAyC,GACjD,gBAAgB,CA6BlB"}
@@ -0,0 +1,61 @@
1
+ import { stat } from 'node:fs/promises';
2
+ import { resolve } from 'node:path';
3
+ import { HarnessError } from '../contracts/errors.js';
4
+ import { createDefaultCloudAssetClient, } from './cloud-asset-client.js';
5
+ import { detectProjectFingerprint } from './fingerprint.js';
6
+ export function createCloudInitUnavailableError(message) {
7
+ return new HarnessError('INIT_CLOUD_UNAVAILABLE', message ??
8
+ 'Cloud init service is unavailable. Rerun with --mode template-match or --mode local-manual.');
9
+ }
10
+ function sanitizeArtifactIdPart(value) {
11
+ return value.replace(/[^a-zA-Z0-9._-]+/g, '-').replace(/^-+|-+$/g, '');
12
+ }
13
+ async function resolveArtifactAction(cwd, targetPath) {
14
+ try {
15
+ await stat(resolve(cwd, targetPath));
16
+ return 'update';
17
+ }
18
+ catch {
19
+ return 'create';
20
+ }
21
+ }
22
+ function toInitAnswers(payload) {
23
+ return {
24
+ mode: 'cloud-auto',
25
+ ...payload.requestedAssets,
26
+ };
27
+ }
28
+ async function buildPreviewEntries(cwd, assets) {
29
+ return Promise.all(assets.map(async (asset) => ({
30
+ id: `cloud:${asset.assetType}:${sanitizeArtifactIdPart(asset.name)}`,
31
+ targetPath: asset.targetPath,
32
+ action: await resolveArtifactAction(cwd, asset.targetPath),
33
+ reason: asset.reason,
34
+ })));
35
+ }
36
+ export function createDefaultCloudInitAdapter(options = {}) {
37
+ const cloudAssetClient = options.cloudAssetClient ?? createDefaultCloudAssetClient();
38
+ return {
39
+ async generatePlanPreview(request) {
40
+ const fingerprint = await detectProjectFingerprint({ cwd: request.cwd });
41
+ const answers = toInitAnswers(request.payload);
42
+ const assembledResult = await cloudAssetClient.assembleAssets({
43
+ fingerprint,
44
+ answers,
45
+ });
46
+ const assets = assembledResult.assets;
47
+ if (assets.length === 0) {
48
+ throw createCloudInitUnavailableError('Cloud init returned no assets for the current workspace.');
49
+ }
50
+ const version = assets.find((asset) => asset.version !== 'dynamic')?.version ??
51
+ assembledResult.assets[0]?.version ??
52
+ 'dynamic';
53
+ return {
54
+ source: 'harness-cloud/mastra',
55
+ version,
56
+ entries: await buildPreviewEntries(request.cwd, assets),
57
+ };
58
+ },
59
+ };
60
+ }
61
+ //# sourceMappingURL=cloud-auto.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cloud-auto.js","sourceRoot":"","sources":["../../src/init/cloud-auto.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,kBAAkB,CAAC;AACxC,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAC;AACtD,OAAO,EACL,6BAA6B,GAG9B,MAAM,yBAAyB,CAAC;AACjC,OAAO,EAAE,wBAAwB,EAAE,MAAM,kBAAkB,CAAC;AAgB5D,MAAM,UAAU,+BAA+B,CAAC,OAAgB;IAC9D,OAAO,IAAI,YAAY,CACrB,wBAAwB,EACxB,OAAO;QACL,6FAA6F,CAChG,CAAC;AACJ,CAAC;AAED,SAAS,sBAAsB,CAAC,KAAa;IAC3C,OAAO,KAAK,CAAC,OAAO,CAAC,mBAAmB,EAAE,GAAG,CAAC,CAAC,OAAO,CAAC,UAAU,EAAE,EAAE,CAAC,CAAC;AACzE,CAAC;AAED,KAAK,UAAU,qBAAqB,CAAC,GAAW,EAAE,UAAkB;IAClE,IAAI,CAAC;QACH,MAAM,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,UAAU,CAAC,CAAC,CAAC;QACrC,OAAO,QAAQ,CAAC;IAClB,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,QAAQ,CAAC;IAClB,CAAC;AACH,CAAC;AAED,SAAS,aAAa,CAAC,OAAgC;IACrD,OAAO;QACL,IAAI,EAAE,YAAY;QAClB,GAAG,OAAO,CAAC,eAAe;KAC3B,CAAC;AACJ,CAAC;AAED,KAAK,UAAU,mBAAmB,CAChC,GAAW,EACX,MAA8B;IAE9B,OAAO,OAAO,CAAC,GAAG,CAChB,MAAM,CAAC,GAAG,CAAC,KAAK,EAAE,KAAK,EAAE,EAAE,CAAC,CAAC;QAC3B,EAAE,EAAE,SAAS,KAAK,CAAC,SAAS,IAAI,sBAAsB,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE;QACpE,UAAU,EAAE,KAAK,CAAC,UAAU;QAC5B,MAAM,EAAE,MAAM,qBAAqB,CAAC,GAAG,EAAE,KAAK,CAAC,UAAU,CAAC;QAC1D,MAAM,EAAE,KAAK,CAAC,MAAM;KACrB,CAAC,CAAC,CACJ,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,6BAA6B,CAC3C,UAAgD,EAAE;IAElD,MAAM,gBAAgB,GAAG,OAAO,CAAC,gBAAgB,IAAI,6BAA6B,EAAE,CAAC;IAErF,OAAO;QACL,KAAK,CAAC,mBAAmB,CAAC,OAAO;YAC/B,MAAM,WAAW,GAAG,MAAM,wBAAwB,CAAC,EAAE,GAAG,EAAE,OAAO,CAAC,GAAG,EAAE,CAAC,CAAC;YACzE,MAAM,OAAO,GAAG,aAAa,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;YAE/C,MAAM,eAAe,GAAG,MAAM,gBAAgB,CAAC,cAAc,CAAC;gBAC5D,WAAW;gBACX,OAAO;aACR,CAAC,CAAC;YACH,MAAM,MAAM,GAAG,eAAe,CAAC,MAAM,CAAC;YACtC,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;gBACxB,MAAM,+BAA+B,CAAC,0DAA0D,CAAC,CAAC;YACpG,CAAC;YAED,MAAM,OAAO,GACX,MAAM,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,OAAO,KAAK,SAAS,CAAC,EAAE,OAAO;gBAC5D,eAAe,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,OAAO;gBAClC,SAAS,CAAC;YAEZ,OAAO;gBACL,MAAM,EAAE,sBAAsB;gBAC9B,OAAO;gBACP,OAAO,EAAE,MAAM,mBAAmB,CAAC,OAAO,CAAC,GAAG,EAAE,MAAM,CAAC;aACxD,CAAC;QACJ,CAAC;KACF,CAAC;AACJ,CAAC"}
@@ -0,0 +1,17 @@
1
+ import type { CommandRouter } from '../kernel/router.js';
2
+ import type { InitPromptAdapter } from './prompt.js';
3
+ import type { CursorCliAdapter } from './cursor-adapter.js';
4
+ import type { CloudInitAdapter } from './cloud-auto.js';
5
+ import type { CloudAssetClient, CloudAssetDescriptor } from './cloud-asset-client.js';
6
+ export interface InitCommandDependencies {
7
+ promptAdapter?: InitPromptAdapter;
8
+ cursorCliAdapter?: CursorCliAdapter;
9
+ cloudInitAdapter?: CloudInitAdapter;
10
+ cloudAssetClient?: CloudAssetClient;
11
+ }
12
+ declare function renderInitHelp(programName?: string): string;
13
+ export declare function normalizeCursorAssetTargetPath(asset: CloudAssetDescriptor): string;
14
+ export declare function runInitCommand(args: string[], dependencies?: InitCommandDependencies): Promise<number>;
15
+ export declare function registerInitCommand(router: CommandRouter, dependencies?: InitCommandDependencies): void;
16
+ export { renderInitHelp };
17
+ //# sourceMappingURL=command.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"command.d.ts","sourceRoot":"","sources":["../../src/init/command.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAoBzD,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AAErD,OAAO,KAAK,EAAE,gBAAgB,EAAmB,MAAM,qBAAqB,CAAC;AAC7E,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AAExD,OAAO,KAAK,EAAE,gBAAgB,EAAE,oBAAoB,EAAE,MAAM,yBAAyB,CAAC;AAUtF,MAAM,WAAW,uBAAuB;IACtC,aAAa,CAAC,EAAE,iBAAiB,CAAC;IAClC,gBAAgB,CAAC,EAAE,gBAAgB,CAAC;IACpC,gBAAgB,CAAC,EAAE,gBAAgB,CAAC;IACpC,gBAAgB,CAAC,EAAE,gBAAgB,CAAC;CACrC;AAED,iBAAS,cAAc,CAAC,WAAW,SAAY,GAAG,MAAM,CAkBvD;AAwID,wBAAgB,8BAA8B,CAAC,KAAK,EAAE,oBAAoB,GAAG,MAAM,CA8ClF;AA4mBD,wBAAsB,cAAc,CAClC,IAAI,EAAE,MAAM,EAAE,EACd,YAAY,GAAE,uBAA4B,GACzC,OAAO,CAAC,MAAM,CAAC,CA8HjB;AAED,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,aAAa,EAAE,YAAY,GAAE,uBAA4B,GAAG,IAAI,CAE3G;AAED,OAAO,EAAE,cAAc,EAAE,CAAC"}