pray-cli 1.6.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 (374) hide show
  1. package/CHANGELOG.md +50 -0
  2. package/LICENSE.md +21 -0
  3. package/README.md +69 -0
  4. package/SECURITY.md +28 -0
  5. package/bin/pray.js +5 -0
  6. package/dist/archive/praypkg.d.ts +6 -0
  7. package/dist/archive/praypkg.d.ts.map +1 -0
  8. package/dist/archive/praypkg.js +67 -0
  9. package/dist/archive/praypkg.js.map +1 -0
  10. package/dist/auth/login.d.ts +11 -0
  11. package/dist/auth/login.d.ts.map +1 -0
  12. package/dist/auth/login.js +84 -0
  13. package/dist/auth/login.js.map +1 -0
  14. package/dist/auth/passkey.d.ts +3 -0
  15. package/dist/auth/passkey.d.ts.map +1 -0
  16. package/dist/auth/passkey.js +48 -0
  17. package/dist/auth/passkey.js.map +1 -0
  18. package/dist/auth/session.d.ts +11 -0
  19. package/dist/auth/session.d.ts.map +1 -0
  20. package/dist/auth/session.js +38 -0
  21. package/dist/auth/session.js.map +1 -0
  22. package/dist/auth/ssh-agent.d.ts +3 -0
  23. package/dist/auth/ssh-agent.d.ts.map +1 -0
  24. package/dist/auth/ssh-agent.js +135 -0
  25. package/dist/auth/ssh-agent.js.map +1 -0
  26. package/dist/cli/commands/distribution.d.ts +5 -0
  27. package/dist/cli/commands/distribution.d.ts.map +1 -0
  28. package/dist/cli/commands/distribution.js +134 -0
  29. package/dist/cli/commands/distribution.js.map +1 -0
  30. package/dist/cli/commands/init.d.ts +3 -0
  31. package/dist/cli/commands/init.d.ts.map +1 -0
  32. package/dist/cli/commands/init.js +44 -0
  33. package/dist/cli/commands/init.js.map +1 -0
  34. package/dist/cli/commands/inspect.d.ts +7 -0
  35. package/dist/cli/commands/inspect.d.ts.map +1 -0
  36. package/dist/cli/commands/inspect.js +98 -0
  37. package/dist/cli/commands/inspect.js.map +1 -0
  38. package/dist/cli/commands/packages.d.ts +4 -0
  39. package/dist/cli/commands/packages.d.ts.map +1 -0
  40. package/dist/cli/commands/packages.js +62 -0
  41. package/dist/cli/commands/packages.js.map +1 -0
  42. package/dist/cli/commands/plan.d.ts +2 -0
  43. package/dist/cli/commands/plan.d.ts.map +1 -0
  44. package/dist/cli/commands/plan.js +55 -0
  45. package/dist/cli/commands/plan.js.map +1 -0
  46. package/dist/cli/commands/update-core.d.ts +16 -0
  47. package/dist/cli/commands/update-core.d.ts.map +1 -0
  48. package/dist/cli/commands/update-core.js +108 -0
  49. package/dist/cli/commands/update-core.js.map +1 -0
  50. package/dist/cli/commands/update-latest.d.ts +2 -0
  51. package/dist/cli/commands/update-latest.d.ts.map +1 -0
  52. package/dist/cli/commands/update-latest.js +68 -0
  53. package/dist/cli/commands/update-latest.js.map +1 -0
  54. package/dist/cli/commands/update-report.d.ts +23 -0
  55. package/dist/cli/commands/update-report.d.ts.map +1 -0
  56. package/dist/cli/commands/update-report.js +113 -0
  57. package/dist/cli/commands/update-report.js.map +1 -0
  58. package/dist/cli/commands/update.d.ts +11 -0
  59. package/dist/cli/commands/update.d.ts.map +1 -0
  60. package/dist/cli/commands/update.js +65 -0
  61. package/dist/cli/commands/update.js.map +1 -0
  62. package/dist/cli/commands/workspace.d.ts +3 -0
  63. package/dist/cli/commands/workspace.d.ts.map +1 -0
  64. package/dist/cli/commands/workspace.js +63 -0
  65. package/dist/cli/commands/workspace.js.map +1 -0
  66. package/dist/cli/help.d.ts +6 -0
  67. package/dist/cli/help.d.ts.map +1 -0
  68. package/dist/cli/help.js +164 -0
  69. package/dist/cli/help.js.map +1 -0
  70. package/dist/cli/invocation.d.ts +10 -0
  71. package/dist/cli/invocation.d.ts.map +1 -0
  72. package/dist/cli/invocation.js +127 -0
  73. package/dist/cli/invocation.js.map +1 -0
  74. package/dist/cli/main.d.ts +2 -0
  75. package/dist/cli/main.d.ts.map +1 -0
  76. package/dist/cli/main.js +199 -0
  77. package/dist/cli/main.js.map +1 -0
  78. package/dist/cli/materialize.d.ts +10 -0
  79. package/dist/cli/materialize.d.ts.map +1 -0
  80. package/dist/cli/materialize.js +59 -0
  81. package/dist/cli/materialize.js.map +1 -0
  82. package/dist/cli/suggest.d.ts +4 -0
  83. package/dist/cli/suggest.d.ts.map +1 -0
  84. package/dist/cli/suggest.js +88 -0
  85. package/dist/cli/suggest.js.map +1 -0
  86. package/dist/cli/upgrade.d.ts +2 -0
  87. package/dist/cli/upgrade.d.ts.map +1 -0
  88. package/dist/cli/upgrade.js +15 -0
  89. package/dist/cli/upgrade.js.map +1 -0
  90. package/dist/confess/index.d.ts +11 -0
  91. package/dist/confess/index.d.ts.map +1 -0
  92. package/dist/confess/index.js +51 -0
  93. package/dist/confess/index.js.map +1 -0
  94. package/dist/constraint.d.ts +8 -0
  95. package/dist/constraint.d.ts.map +1 -0
  96. package/dist/constraint.js +97 -0
  97. package/dist/constraint.js.map +1 -0
  98. package/dist/domain/types.d.ts +8 -0
  99. package/dist/domain/types.d.ts.map +1 -0
  100. package/dist/domain/types.js +2 -0
  101. package/dist/domain/types.js.map +1 -0
  102. package/dist/environment.d.ts +8 -0
  103. package/dist/environment.d.ts.map +1 -0
  104. package/dist/environment.js +42 -0
  105. package/dist/environment.js.map +1 -0
  106. package/dist/errors.d.ts +18 -0
  107. package/dist/errors.d.ts.map +1 -0
  108. package/dist/errors.js +67 -0
  109. package/dist/errors.js.map +1 -0
  110. package/dist/git/sources.d.ts +14 -0
  111. package/dist/git/sources.d.ts.map +1 -0
  112. package/dist/git/sources.js +225 -0
  113. package/dist/git/sources.js.map +1 -0
  114. package/dist/hashing.d.ts +7 -0
  115. package/dist/hashing.d.ts.map +1 -0
  116. package/dist/hashing.js +43 -0
  117. package/dist/hashing.js.map +1 -0
  118. package/dist/http/client.d.ts +9 -0
  119. package/dist/http/client.d.ts.map +1 -0
  120. package/dist/http/client.js +51 -0
  121. package/dist/http/client.js.map +1 -0
  122. package/dist/index.d.ts +25 -0
  123. package/dist/index.d.ts.map +1 -0
  124. package/dist/index.js +19 -0
  125. package/dist/index.js.map +1 -0
  126. package/dist/literal/call-parser.d.ts +12 -0
  127. package/dist/literal/call-parser.d.ts.map +1 -0
  128. package/dist/literal/call-parser.js +75 -0
  129. package/dist/literal/call-parser.js.map +1 -0
  130. package/dist/literal/lines.d.ts +3 -0
  131. package/dist/literal/lines.d.ts.map +1 -0
  132. package/dist/literal/lines.js +34 -0
  133. package/dist/literal/lines.js.map +1 -0
  134. package/dist/literal/parser.d.ts +5 -0
  135. package/dist/literal/parser.d.ts.map +1 -0
  136. package/dist/literal/parser.js +269 -0
  137. package/dist/literal/parser.js.map +1 -0
  138. package/dist/literal/split.d.ts +4 -0
  139. package/dist/literal/split.d.ts.map +1 -0
  140. package/dist/literal/split.js +110 -0
  141. package/dist/literal/split.js.map +1 -0
  142. package/dist/literal/statement-surface.d.ts +11 -0
  143. package/dist/literal/statement-surface.d.ts.map +1 -0
  144. package/dist/literal/statement-surface.js +320 -0
  145. package/dist/literal/statement-surface.js.map +1 -0
  146. package/dist/literal/statements.d.ts +8 -0
  147. package/dist/literal/statements.d.ts.map +1 -0
  148. package/dist/literal/statements.js +49 -0
  149. package/dist/literal/statements.js.map +1 -0
  150. package/dist/literal/types.d.ts +27 -0
  151. package/dist/literal/types.d.ts.map +1 -0
  152. package/dist/literal/types.js +19 -0
  153. package/dist/literal/types.js.map +1 -0
  154. package/dist/lockfile/index.d.ts +24 -0
  155. package/dist/lockfile/index.d.ts.map +1 -0
  156. package/dist/lockfile/index.js +100 -0
  157. package/dist/lockfile/index.js.map +1 -0
  158. package/dist/lockfile/parse.d.ts +3 -0
  159. package/dist/lockfile/parse.d.ts.map +1 -0
  160. package/dist/lockfile/parse.js +94 -0
  161. package/dist/lockfile/parse.js.map +1 -0
  162. package/dist/lockfile/paths.d.ts +8 -0
  163. package/dist/lockfile/paths.d.ts.map +1 -0
  164. package/dist/lockfile/paths.js +66 -0
  165. package/dist/lockfile/paths.js.map +1 -0
  166. package/dist/lockfile/serialize.d.ts +3 -0
  167. package/dist/lockfile/serialize.d.ts.map +1 -0
  168. package/dist/lockfile/serialize.js +118 -0
  169. package/dist/lockfile/serialize.js.map +1 -0
  170. package/dist/lockfile/types.d.ts +49 -0
  171. package/dist/lockfile/types.d.ts.map +1 -0
  172. package/dist/lockfile/types.js +16 -0
  173. package/dist/lockfile/types.js.map +1 -0
  174. package/dist/manifest/deprecation.d.ts +7 -0
  175. package/dist/manifest/deprecation.d.ts.map +1 -0
  176. package/dist/manifest/deprecation.js +35 -0
  177. package/dist/manifest/deprecation.js.map +1 -0
  178. package/dist/manifest/destination.d.ts +19 -0
  179. package/dist/manifest/destination.d.ts.map +1 -0
  180. package/dist/manifest/destination.js +179 -0
  181. package/dist/manifest/destination.js.map +1 -0
  182. package/dist/manifest/edit.d.ts +9 -0
  183. package/dist/manifest/edit.d.ts.map +1 -0
  184. package/dist/manifest/edit.js +56 -0
  185. package/dist/manifest/edit.js.map +1 -0
  186. package/dist/manifest/format-manifest.d.ts +14 -0
  187. package/dist/manifest/format-manifest.d.ts.map +1 -0
  188. package/dist/manifest/format-manifest.js +274 -0
  189. package/dist/manifest/format-manifest.js.map +1 -0
  190. package/dist/manifest/format-serialize.d.ts +4 -0
  191. package/dist/manifest/format-serialize.d.ts.map +1 -0
  192. package/dist/manifest/format-serialize.js +172 -0
  193. package/dist/manifest/format-serialize.js.map +1 -0
  194. package/dist/manifest/index.d.ts +10 -0
  195. package/dist/manifest/index.d.ts.map +1 -0
  196. package/dist/manifest/index.js +33 -0
  197. package/dist/manifest/index.js.map +1 -0
  198. package/dist/manifest/package-declaration.d.ts +4 -0
  199. package/dist/manifest/package-declaration.d.ts.map +1 -0
  200. package/dist/manifest/package-declaration.js +80 -0
  201. package/dist/manifest/package-declaration.js.map +1 -0
  202. package/dist/manifest/parse-statements.d.ts +15 -0
  203. package/dist/manifest/parse-statements.d.ts.map +1 -0
  204. package/dist/manifest/parse-statements.js +216 -0
  205. package/dist/manifest/parse-statements.js.map +1 -0
  206. package/dist/manifest/parser.d.ts +3 -0
  207. package/dist/manifest/parser.d.ts.map +1 -0
  208. package/dist/manifest/parser.js +382 -0
  209. package/dist/manifest/parser.js.map +1 -0
  210. package/dist/manifest/types.d.ts +78 -0
  211. package/dist/manifest/types.d.ts.map +1 -0
  212. package/dist/manifest/types.js +84 -0
  213. package/dist/manifest/types.js.map +1 -0
  214. package/dist/package-spec/discovery.d.ts +2 -0
  215. package/dist/package-spec/discovery.d.ts.map +1 -0
  216. package/dist/package-spec/discovery.js +21 -0
  217. package/dist/package-spec/discovery.js.map +1 -0
  218. package/dist/package-spec/index.d.ts +5 -0
  219. package/dist/package-spec/index.d.ts.map +1 -0
  220. package/dist/package-spec/index.js +5 -0
  221. package/dist/package-spec/index.js.map +1 -0
  222. package/dist/package-spec/parse-maps.d.ts +8 -0
  223. package/dist/package-spec/parse-maps.d.ts.map +1 -0
  224. package/dist/package-spec/parse-maps.js +127 -0
  225. package/dist/package-spec/parse-maps.js.map +1 -0
  226. package/dist/package-spec/parser.d.ts +3 -0
  227. package/dist/package-spec/parser.d.ts.map +1 -0
  228. package/dist/package-spec/parser.js +111 -0
  229. package/dist/package-spec/parser.js.map +1 -0
  230. package/dist/package-spec/tree-hash.d.ts +4 -0
  231. package/dist/package-spec/tree-hash.d.ts.map +1 -0
  232. package/dist/package-spec/tree-hash.js +29 -0
  233. package/dist/package-spec/tree-hash.js.map +1 -0
  234. package/dist/package-spec/types.d.ts +44 -0
  235. package/dist/package-spec/types.d.ts.map +1 -0
  236. package/dist/package-spec/types.js +12 -0
  237. package/dist/package-spec/types.js.map +1 -0
  238. package/dist/project-context/dotenv.d.ts +3 -0
  239. package/dist/project-context/dotenv.d.ts.map +1 -0
  240. package/dist/project-context/dotenv.js +49 -0
  241. package/dist/project-context/dotenv.js.map +1 -0
  242. package/dist/project-context/index.d.ts +10 -0
  243. package/dist/project-context/index.d.ts.map +1 -0
  244. package/dist/project-context/index.js +62 -0
  245. package/dist/project-context/index.js.map +1 -0
  246. package/dist/project-context/runtime.d.ts +4 -0
  247. package/dist/project-context/runtime.d.ts.map +1 -0
  248. package/dist/project-context/runtime.js +8 -0
  249. package/dist/project-context/runtime.js.map +1 -0
  250. package/dist/project-context/types.d.ts +11 -0
  251. package/dist/project-context/types.d.ts.map +1 -0
  252. package/dist/project-context/types.js +2 -0
  253. package/dist/project-context/types.js.map +1 -0
  254. package/dist/publish/index.d.ts +6 -0
  255. package/dist/publish/index.d.ts.map +1 -0
  256. package/dist/publish/index.js +133 -0
  257. package/dist/publish/index.js.map +1 -0
  258. package/dist/registry/index.d.ts +17 -0
  259. package/dist/registry/index.d.ts.map +1 -0
  260. package/dist/registry/index.js +223 -0
  261. package/dist/registry/index.js.map +1 -0
  262. package/dist/registry/types.d.ts +27 -0
  263. package/dist/registry/types.d.ts.map +1 -0
  264. package/dist/registry/types.js +2 -0
  265. package/dist/registry/types.js.map +1 -0
  266. package/dist/render/content-builder.d.ts +9 -0
  267. package/dist/render/content-builder.d.ts.map +1 -0
  268. package/dist/render/content-builder.js +31 -0
  269. package/dist/render/content-builder.js.map +1 -0
  270. package/dist/render/header.d.ts +4 -0
  271. package/dist/render/header.d.ts.map +1 -0
  272. package/dist/render/header.js +15 -0
  273. package/dist/render/header.js.map +1 -0
  274. package/dist/render/legacy.d.ts +5 -0
  275. package/dist/render/legacy.d.ts.map +1 -0
  276. package/dist/render/legacy.js +53 -0
  277. package/dist/render/legacy.js.map +1 -0
  278. package/dist/render/managed-export.d.ts +7 -0
  279. package/dist/render/managed-export.d.ts.map +1 -0
  280. package/dist/render/managed-export.js +33 -0
  281. package/dist/render/managed-export.js.map +1 -0
  282. package/dist/render/project.d.ts +8 -0
  283. package/dist/render/project.d.ts.map +1 -0
  284. package/dist/render/project.js +35 -0
  285. package/dist/render/project.js.map +1 -0
  286. package/dist/render/provisioned.d.ts +9 -0
  287. package/dist/render/provisioned.d.ts.map +1 -0
  288. package/dist/render/provisioned.js +191 -0
  289. package/dist/render/provisioned.js.map +1 -0
  290. package/dist/render/scoped.d.ts +5 -0
  291. package/dist/render/scoped.d.ts.map +1 -0
  292. package/dist/render/scoped.js +50 -0
  293. package/dist/render/scoped.js.map +1 -0
  294. package/dist/render/types.d.ts +7 -0
  295. package/dist/render/types.d.ts.map +1 -0
  296. package/dist/render/types.js +2 -0
  297. package/dist/render/types.js.map +1 -0
  298. package/dist/resolve/context.d.ts +11 -0
  299. package/dist/resolve/context.d.ts.map +1 -0
  300. package/dist/resolve/context.js +16 -0
  301. package/dist/resolve/context.js.map +1 -0
  302. package/dist/resolve/package-root.d.ts +13 -0
  303. package/dist/resolve/package-root.d.ts.map +1 -0
  304. package/dist/resolve/package-root.js +86 -0
  305. package/dist/resolve/package-root.js.map +1 -0
  306. package/dist/resolve/project.d.ts +8 -0
  307. package/dist/resolve/project.d.ts.map +1 -0
  308. package/dist/resolve/project.js +261 -0
  309. package/dist/resolve/project.js.map +1 -0
  310. package/dist/resolve/types.d.ts +36 -0
  311. package/dist/resolve/types.d.ts.map +1 -0
  312. package/dist/resolve/types.js +2 -0
  313. package/dist/resolve/types.js.map +1 -0
  314. package/dist/serve/index.d.ts +7 -0
  315. package/dist/serve/index.d.ts.map +1 -0
  316. package/dist/serve/index.js +88 -0
  317. package/dist/serve/index.js.map +1 -0
  318. package/dist/substitute.d.ts +3 -0
  319. package/dist/substitute.d.ts.map +1 -0
  320. package/dist/substitute.js +38 -0
  321. package/dist/substitute.js.map +1 -0
  322. package/dist/sync/index.d.ts +6 -0
  323. package/dist/sync/index.d.ts.map +1 -0
  324. package/dist/sync/index.js +74 -0
  325. package/dist/sync/index.js.map +1 -0
  326. package/dist/terminal.d.ts +4 -0
  327. package/dist/terminal.d.ts.map +1 -0
  328. package/dist/terminal.js +26 -0
  329. package/dist/terminal.js.map +1 -0
  330. package/dist/tree/index.d.ts +4 -0
  331. package/dist/tree/index.d.ts.map +1 -0
  332. package/dist/tree/index.js +40 -0
  333. package/dist/tree/index.js.map +1 -0
  334. package/dist/trust/import-registry.d.ts +6 -0
  335. package/dist/trust/import-registry.d.ts.map +1 -0
  336. package/dist/trust/import-registry.js +65 -0
  337. package/dist/trust/import-registry.js.map +1 -0
  338. package/dist/trust/import-repo.d.ts +2 -0
  339. package/dist/trust/import-repo.d.ts.map +1 -0
  340. package/dist/trust/import-repo.js +50 -0
  341. package/dist/trust/import-repo.js.map +1 -0
  342. package/dist/trust/index.d.ts +11 -0
  343. package/dist/trust/index.d.ts.map +1 -0
  344. package/dist/trust/index.js +148 -0
  345. package/dist/trust/index.js.map +1 -0
  346. package/dist/trust/parse.d.ts +3 -0
  347. package/dist/trust/parse.d.ts.map +1 -0
  348. package/dist/trust/parse.js +43 -0
  349. package/dist/trust/parse.js.map +1 -0
  350. package/dist/trust/policy-helpers.d.ts +8 -0
  351. package/dist/trust/policy-helpers.d.ts.map +1 -0
  352. package/dist/trust/policy-helpers.js +36 -0
  353. package/dist/trust/policy-helpers.js.map +1 -0
  354. package/dist/trust/store.d.ts +7 -0
  355. package/dist/trust/store.d.ts.map +1 -0
  356. package/dist/trust/store.js +40 -0
  357. package/dist/trust/store.js.map +1 -0
  358. package/dist/trust/types.d.ts +13 -0
  359. package/dist/trust/types.d.ts.map +1 -0
  360. package/dist/trust/types.js +2 -0
  361. package/dist/trust/types.js.map +1 -0
  362. package/dist/validation.d.ts +8 -0
  363. package/dist/validation.d.ts.map +1 -0
  364. package/dist/validation.js +41 -0
  365. package/dist/validation.js.map +1 -0
  366. package/dist/vendor/index.d.ts +4 -0
  367. package/dist/vendor/index.d.ts.map +1 -0
  368. package/dist/vendor/index.js +31 -0
  369. package/dist/vendor/index.js.map +1 -0
  370. package/dist/verify/project.d.ts +14 -0
  371. package/dist/verify/project.d.ts.map +1 -0
  372. package/dist/verify/project.js +240 -0
  373. package/dist/verify/project.js.map +1 -0
  374. package/package.json +75 -0
@@ -0,0 +1,4 @@
1
+ import type { ResolvedProject } from "../resolve/types.js";
2
+ export declare function vendorProject(project: ResolvedProject): void;
3
+ export declare function cleanProjectCaches(projectRoot: string): void;
4
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/vendor/index.ts"],"names":[],"mappings":"AASA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AAE3D,wBAAgB,aAAa,CAAC,OAAO,EAAE,eAAe,GAAG,IAAI,CA4B5D;AAED,wBAAgB,kBAAkB,CAAC,WAAW,EAAE,MAAM,GAAG,IAAI,CAO5D"}
@@ -0,0 +1,31 @@
1
+ import { copyFileSync, existsSync, mkdirSync, rmSync, writeFileSync, } from "node:fs";
2
+ import { basename, dirname, join } from "node:path";
3
+ import { findPrayspecFile } from "../package-spec/index.js";
4
+ export function vendorProject(project) {
5
+ for (const packageEntry of project.packages) {
6
+ const vendorRoot = join(project.projectRoot, ".pray", "vendor", packageEntry.declaration.name.replaceAll("/", "-"), packageEntry.spec.version);
7
+ mkdirSync(vendorRoot, { recursive: true });
8
+ const prayspecPath = findPrayspecFile(packageEntry.root);
9
+ copyFileSync(prayspecPath, join(vendorRoot, basename(prayspecPath)));
10
+ writeFileSync(join(vendorRoot, "metadata.json"), JSON.stringify({
11
+ name: packageEntry.spec.name,
12
+ version: packageEntry.spec.version,
13
+ tree_hash: packageEntry.treeHash,
14
+ exports: packageEntry.selectedExports,
15
+ }), "utf8");
16
+ for (const file of packageEntry.spec.files) {
17
+ const destination = join(vendorRoot, file);
18
+ mkdirSync(dirname(destination), { recursive: true });
19
+ copyFileSync(join(packageEntry.root, file), destination);
20
+ }
21
+ }
22
+ }
23
+ export function cleanProjectCaches(projectRoot) {
24
+ for (const relative of [".pray/cache", ".pray/vendor", ".pray/state.json"]) {
25
+ const path = join(projectRoot, relative);
26
+ if (existsSync(path)) {
27
+ rmSync(path, { recursive: true, force: true });
28
+ }
29
+ }
30
+ }
31
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/vendor/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,YAAY,EACZ,UAAU,EACV,SAAS,EACT,MAAM,EACN,aAAa,GACd,MAAM,SAAS,CAAC;AACjB,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACpD,OAAO,EAAE,gBAAgB,EAAE,MAAM,0BAA0B,CAAC;AAG5D,MAAM,UAAU,aAAa,CAAC,OAAwB;IACpD,KAAK,MAAM,YAAY,IAAI,OAAO,CAAC,QAAQ,EAAE,CAAC;QAC5C,MAAM,UAAU,GAAG,IAAI,CACrB,OAAO,CAAC,WAAW,EACnB,OAAO,EACP,QAAQ,EACR,YAAY,CAAC,WAAW,CAAC,IAAI,CAAC,UAAU,CAAC,GAAG,EAAE,GAAG,CAAC,EAClD,YAAY,CAAC,IAAI,CAAC,OAAO,CAC1B,CAAC;QACF,SAAS,CAAC,UAAU,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QAC3C,MAAM,YAAY,GAAG,gBAAgB,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC;QACzD,YAAY,CAAC,YAAY,EAAE,IAAI,CAAC,UAAU,EAAE,QAAQ,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;QACrE,aAAa,CACX,IAAI,CAAC,UAAU,EAAE,eAAe,CAAC,EACjC,IAAI,CAAC,SAAS,CAAC;YACb,IAAI,EAAE,YAAY,CAAC,IAAI,CAAC,IAAI;YAC5B,OAAO,EAAE,YAAY,CAAC,IAAI,CAAC,OAAO;YAClC,SAAS,EAAE,YAAY,CAAC,QAAQ;YAChC,OAAO,EAAE,YAAY,CAAC,eAAe;SACtC,CAAC,EACF,MAAM,CACP,CAAC;QACF,KAAK,MAAM,IAAI,IAAI,YAAY,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC;YAC3C,MAAM,WAAW,GAAG,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC,CAAC;YAC3C,SAAS,CAAC,OAAO,CAAC,WAAW,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;YACrD,YAAY,CAAC,IAAI,CAAC,YAAY,CAAC,IAAI,EAAE,IAAI,CAAC,EAAE,WAAW,CAAC,CAAC;QAC3D,CAAC;IACH,CAAC;AACH,CAAC;AAED,MAAM,UAAU,kBAAkB,CAAC,WAAmB;IACpD,KAAK,MAAM,QAAQ,IAAI,CAAC,aAAa,EAAE,cAAc,EAAE,kBAAkB,CAAC,EAAE,CAAC;QAC3E,MAAM,IAAI,GAAG,IAAI,CAAC,WAAW,EAAE,QAAQ,CAAC,CAAC;QACzC,IAAI,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC;YACrB,MAAM,CAAC,IAAI,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;QACjD,CAAC;IACH,CAAC;AACH,CAAC"}
@@ -0,0 +1,14 @@
1
+ import type { Lockfile } from "../lockfile/types.js";
2
+ import type { ResolvedProject } from "../resolve/types.js";
3
+ export interface VerificationFinding {
4
+ kind: string;
5
+ message: string;
6
+ }
7
+ export interface VerificationReport {
8
+ findings: VerificationFinding[];
9
+ }
10
+ export declare function inspectProject(project: ResolvedProject, lockfile: Lockfile): VerificationReport;
11
+ export declare function verifyProject(project: ResolvedProject, lockfile: Lockfile, strict?: boolean): VerificationReport;
12
+ export declare function driftProject(project: ResolvedProject, lockfile: Lockfile): VerificationReport;
13
+ export declare function formatVerificationReport(report: VerificationReport): string;
14
+ //# sourceMappingURL=project.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"project.d.ts","sourceRoot":"","sources":["../../src/verify/project.ts"],"names":[],"mappings":"AAQA,OAAO,KAAK,EAAE,QAAQ,EAAqB,MAAM,sBAAsB,CAAC;AAIxE,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AAE3D,MAAM,WAAW,mBAAmB;IAClC,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,kBAAkB;IACjC,QAAQ,EAAE,mBAAmB,EAAE,CAAC;CACjC;AAED,wBAAgB,cAAc,CAC5B,OAAO,EAAE,eAAe,EACxB,QAAQ,EAAE,QAAQ,GACjB,kBAAkB,CAEpB;AAED,wBAAgB,aAAa,CAC3B,OAAO,EAAE,eAAe,EACxB,QAAQ,EAAE,QAAQ,EAClB,MAAM,UAAQ,GACb,kBAAkB,CASpB;AAED,wBAAgB,YAAY,CAC1B,OAAO,EAAE,eAAe,EACxB,QAAQ,EAAE,QAAQ,GACjB,kBAAkB,CA+BpB;AAED,wBAAgB,wBAAwB,CAAC,MAAM,EAAE,kBAAkB,GAAG,MAAM,CAI3E"}
@@ -0,0 +1,240 @@
1
+ import { existsSync, readFileSync } from "node:fs";
2
+ import { resolve } from "node:path";
3
+ import { PrayError } from "../errors.js";
4
+ import { checksumManagedBodyLineRefs, normalizeLineEndings, sha256Prefixed, } from "../hashing.js";
5
+ import { renderProject } from "../render/project.js";
6
+ import { expectedProvisionedBytes } from "../render/provisioned.js";
7
+ import { missingLocalEmbedGuidance } from "../resolve/project.js";
8
+ export function inspectProject(project, lockfile) {
9
+ return collectVerificationReport(project, lockfile).report;
10
+ }
11
+ export function verifyProject(project, lockfile, strict = false) {
12
+ const report = inspectProject(project, lockfile);
13
+ if (report.findings.length === 0) {
14
+ return report;
15
+ }
16
+ if (strict || report.findings.some((finding) => !isWarning(finding))) {
17
+ throw PrayError.verify(formatVerificationReport(report));
18
+ }
19
+ return report;
20
+ }
21
+ export function driftProject(project, lockfile) {
22
+ const { report, renderedTargets } = collectVerificationReport(project, lockfile);
23
+ const rendered = renderProject(project);
24
+ const lockTargets = new Set(lockfile.target.flatMap((target) => target.outputs));
25
+ for (const target of rendered) {
26
+ const normalizedFresh = normalizeLineEndings(target.content);
27
+ const onDisk = renderedTargets.get(target.path);
28
+ if (!onDisk || normalizeLineEndings(onDisk) !== normalizedFresh) {
29
+ report.findings.push({
30
+ kind: "renderer_drift",
31
+ message: `${target.path} differs from fresh render`,
32
+ });
33
+ }
34
+ if (!lockTargets.has(target.path)) {
35
+ report.findings.push({
36
+ kind: "renderer_drift",
37
+ message: `${target.path} is not tracked in lockfile`,
38
+ });
39
+ }
40
+ }
41
+ if (report.findings.length === 0) {
42
+ return report;
43
+ }
44
+ throw PrayError.verify(formatDriftReport(report));
45
+ }
46
+ export function formatVerificationReport(report) {
47
+ return report.findings
48
+ .map((finding) => `${finding.kind}: ${finding.message}`)
49
+ .join("\n");
50
+ }
51
+ function formatDriftReport(report) {
52
+ return formatVerificationReport(report);
53
+ }
54
+ function collectVerificationReport(project, lockfile) {
55
+ const report = { findings: [] };
56
+ const renderedTargets = new Map();
57
+ if (project.manifestHash !== lockfile.manifest_hash) {
58
+ report.findings.push({
59
+ kind: "verify_error",
60
+ message: "Prayfile changed since `Prayfile.lock` was generated. Run `pray install` to refresh the lockfile.",
61
+ });
62
+ }
63
+ const lockedPackages = new Map(lockfile.package.map((packageEntry) => [packageEntry.name, packageEntry]));
64
+ for (const packageEntry of project.packages) {
65
+ const locked = lockedPackages.get(packageEntry.declaration.name);
66
+ if (!locked) {
67
+ report.findings.push({
68
+ kind: "verify_error",
69
+ message: `Package \`${packageEntry.declaration.name}\` is declared in Prayfile but missing from \`Prayfile.lock\`. Run \`pray install\` to update the lockfile.`,
70
+ });
71
+ continue;
72
+ }
73
+ lockedPackages.delete(packageEntry.declaration.name);
74
+ if (locked.tree_hash !== packageEntry.treeHash) {
75
+ report.findings.push({
76
+ kind: "package_integrity",
77
+ message: `Package \`${packageEntry.declaration.name}\` no longer matches the locked tree hash. Run \`pray install\` to re-resolve packages.`,
78
+ });
79
+ }
80
+ if (locked.version !== packageEntry.spec.version) {
81
+ report.findings.push({
82
+ kind: "verify_error",
83
+ message: `Package \`${packageEntry.declaration.name}\` resolved to version ${packageEntry.spec.version} but \`Prayfile.lock\` has ${locked.version}. Run \`pray install\` to refresh the lockfile.`,
84
+ });
85
+ }
86
+ }
87
+ for (const locked of lockedPackages.values()) {
88
+ report.findings.push({
89
+ kind: "verify_error",
90
+ message: `Package \`${locked.name}\` is in \`Prayfile.lock\` but not declared in Prayfile. Remove it from the lockfile with \`pray install\` or add it back to Prayfile.`,
91
+ });
92
+ }
93
+ const targetSpans = new Map();
94
+ for (const span of lockfile.managed_span) {
95
+ const spans = targetSpans.get(span.target) ?? [];
96
+ spans.push(span);
97
+ targetSpans.set(span.target, spans);
98
+ }
99
+ for (const [targetPath, spans] of targetSpans.entries()) {
100
+ const absolutePath = resolve(project.projectRoot, targetPath);
101
+ if (!existsSync(absolutePath)) {
102
+ report.findings.push({
103
+ kind: "verify_error",
104
+ message: `Rendered file \`${targetPath}\` is missing. Run \`pray install\` to generate it.`,
105
+ });
106
+ continue;
107
+ }
108
+ const text = readFileSync(absolutePath, "utf8");
109
+ renderedTargets.set(targetPath, text);
110
+ const lines = text.split("\n");
111
+ const markers = markerPositions(lines);
112
+ for (const span of spans) {
113
+ const marker = markers.get(span.id);
114
+ if (!marker) {
115
+ report.findings.push({
116
+ kind: "removed_prayer",
117
+ message: `\`${targetPath}\` is missing managed marker \`${span.id}\` for \`${span.package}::${span.export}\`. Run \`pray install\` to restore the managed span.`,
118
+ });
119
+ continue;
120
+ }
121
+ if (marker.checksum !== span.ideal_checksum) {
122
+ report.findings.push({
123
+ kind: "custom_implementation",
124
+ message: `\`${targetPath}\` marker \`${span.id}\` (\`${span.package}::${span.export}\`) was edited. Restore the managed block or run \`pray install\` to regenerate it.`,
125
+ });
126
+ }
127
+ if (marker.openLine !== span.open_line ||
128
+ marker.closeLine !== span.close_line) {
129
+ report.findings.push({
130
+ kind: "position_drift",
131
+ message: `\`${targetPath}\` marker \`${span.id}\` (\`${span.package}::${span.export}\`) moved to different lines. Run \`pray install\` to restore expected positions.`,
132
+ });
133
+ }
134
+ }
135
+ const trackedIds = new Set(spans.map((span) => span.id));
136
+ for (const markerId of markers.keys()) {
137
+ if (markerId !== "0" && !trackedIds.has(markerId)) {
138
+ report.findings.push({
139
+ kind: "orphan_marker",
140
+ message: `\`${targetPath}\` contains marker \`${markerId}\` that is not tracked in \`Prayfile.lock\`. Remove the marker or run \`pray install\` to reconcile.`,
141
+ });
142
+ }
143
+ }
144
+ }
145
+ for (const packageEntry of project.packages) {
146
+ verifyExclusiveFileBinding(packageEntry, project, report);
147
+ }
148
+ for (const local of project.localFiles) {
149
+ if (local.optional) {
150
+ continue;
151
+ }
152
+ if (!existsSync(resolve(project.projectRoot, local.path))) {
153
+ report.findings.push({
154
+ kind: "verify_error",
155
+ message: missingLocalEmbedGuidance(local.path),
156
+ });
157
+ }
158
+ }
159
+ return { report, renderedTargets };
160
+ }
161
+ function verifyExclusiveFileBinding(packageEntry, project, report) {
162
+ const destination = packageEntry.declaration.file;
163
+ if (!destination) {
164
+ return;
165
+ }
166
+ const absolute = resolve(project.projectRoot, destination);
167
+ const exportName = packageEntry.selectedExports.find((name) => {
168
+ return packageEntry.spec.exports.get(name)?.kind === "file";
169
+ });
170
+ if (!exportName) {
171
+ report.findings.push({
172
+ kind: "verify_error",
173
+ message: `Package \`${packageEntry.declaration.name}\` declares file: "${destination}" but has no selected file export.`,
174
+ });
175
+ return;
176
+ }
177
+ if (!existsSync(absolute)) {
178
+ report.findings.push({
179
+ kind: "verify_error",
180
+ message: `Exclusive file \`${destination}\` from \`${packageEntry.declaration.name}\` is missing. Run \`pray install\` to materialize it.`,
181
+ });
182
+ return;
183
+ }
184
+ const exportEntry = packageEntry.spec.exports.get(exportName);
185
+ const source = resolve(packageEntry.root, exportEntry?.path ?? "");
186
+ const destinationBytes = readFileSync(absolute);
187
+ const expectedBytes = expectedProvisionedBytes(source, project.manifest.symbols ?? {});
188
+ if (sha256Prefixed(destinationBytes) !== sha256Prefixed(expectedBytes)) {
189
+ report.findings.push({
190
+ kind: "package_integrity",
191
+ message: `Exclusive file \`${destination}\` no longer matches package \`${packageEntry.declaration.name}\`. Run \`pray install\` to restore it.`,
192
+ });
193
+ }
194
+ }
195
+ function isWarning(finding) {
196
+ return finding.kind === "orphan_marker";
197
+ }
198
+ function markerPositions(lines) {
199
+ const markers = new Map();
200
+ let active;
201
+ for (let index = 0; index < lines.length; index += 1) {
202
+ const line = lines[index];
203
+ const parsed = parseMarker(line);
204
+ if (!parsed) {
205
+ active?.body.push(line);
206
+ continue;
207
+ }
208
+ if (parsed === "ignore") {
209
+ continue;
210
+ }
211
+ if (!active) {
212
+ active = { id: parsed, openLine: index + 1, body: [] };
213
+ continue;
214
+ }
215
+ if (active.id === parsed) {
216
+ markers.set(active.id, {
217
+ openLine: active.openLine,
218
+ closeLine: index + 1,
219
+ checksum: checksumManagedBodyLineRefs(active.body),
220
+ });
221
+ active = undefined;
222
+ }
223
+ }
224
+ return markers;
225
+ }
226
+ function parseMarker(line) {
227
+ const trimmed = line.trim();
228
+ if (!trimmed.startsWith("<!-- pray:") || !trimmed.endsWith(" -->")) {
229
+ return undefined;
230
+ }
231
+ const id = trimmed.slice("<!-- pray:".length, -" -->".length);
232
+ if (id === "0 ignore-comments") {
233
+ return "ignore";
234
+ }
235
+ if (/^[a-z0-9]+$/.test(id)) {
236
+ return id;
237
+ }
238
+ return undefined;
239
+ }
240
+ //# sourceMappingURL=project.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"project.js","sourceRoot":"","sources":["../../src/verify/project.ts"],"names":[],"mappings":"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"}
package/package.json ADDED
@@ -0,0 +1,75 @@
1
+ {
2
+ "name": "pray-cli",
3
+ "version": "1.6.0",
4
+ "description": "Package manager for the language placed before inference — TypeScript Prayfile CLI and library",
5
+ "author": "Andrei Makarov <contact@kiskolabs.com>",
6
+ "license": "MIT",
7
+ "homepage": "https://pray.kisko.dev",
8
+ "bugs": {
9
+ "url": "https://github.com/kiskolabs/pray/issues"
10
+ },
11
+ "type": "module",
12
+ "bin": {
13
+ "pray": "./bin/pray.js"
14
+ },
15
+ "main": "./dist/index.js",
16
+ "types": "./dist/index.d.ts",
17
+ "exports": {
18
+ ".": {
19
+ "types": "./dist/index.d.ts",
20
+ "import": "./dist/index.js"
21
+ }
22
+ },
23
+ "files": [
24
+ "bin",
25
+ "dist",
26
+ "README.md",
27
+ "LICENSE.md",
28
+ "CHANGELOG.md",
29
+ "SECURITY.md"
30
+ ],
31
+ "engines": {
32
+ "node": ">=20"
33
+ },
34
+ "scripts": {
35
+ "build": "rm -rf dist && tsc -p tsconfig.build.json",
36
+ "prepublishOnly": "npm run build",
37
+ "test": "npm run build && tsc -p tsconfig.test.json && node --test 'dist/**/*.test.js'",
38
+ "typecheck": "tsc -p tsconfig.json --noEmit",
39
+ "lint": "biome check . && npm run lint:cycles",
40
+ "libyears": "libyear --dev --quiet",
41
+ "lint:cycles": "madge --circular --extensions ts --ts-config tsconfig.json src/index.ts src/cli/main.ts",
42
+ "format": "biome format --write .",
43
+ "format:check": "biome format ."
44
+ },
45
+ "publishConfig": {
46
+ "access": "public"
47
+ },
48
+ "dependencies": {
49
+ "semver": "^7.7.2",
50
+ "smol-toml": "^1.3.1"
51
+ },
52
+ "devDependencies": {
53
+ "@biomejs/biome": "^2.0.0",
54
+ "@types/node": "^22.15.0",
55
+ "@types/semver": "^7.7.0",
56
+ "libyear": "^0.9.3",
57
+ "madge": "^8.0.0",
58
+ "typescript": "^5.8.3"
59
+ },
60
+ "overrides": {
61
+ "brace-expansion": ">=5.0.8"
62
+ },
63
+ "keywords": [
64
+ "pray",
65
+ "prayfile",
66
+ "agents",
67
+ "inference",
68
+ "package-manager"
69
+ ],
70
+ "repository": {
71
+ "type": "git",
72
+ "url": "git+https://github.com/kiskolabs/pray.git",
73
+ "directory": "npmjs/pray-cli"
74
+ }
75
+ }