promptarc 0.0.1 → 0.0.3

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 (304) hide show
  1. package/README.md +8 -8
  2. package/dist/bin.js +366 -0
  3. package/dist/web/.next/BUILD_ID +1 -1
  4. package/dist/web/.next/app-build-manifest.json +315 -175
  5. package/dist/web/.next/app-path-routes-manifest.json +28 -11
  6. package/dist/web/.next/build-manifest.json +14 -14
  7. package/dist/web/.next/prerender-manifest.json +89 -1
  8. package/dist/web/.next/required-server-files.json +0 -1
  9. package/dist/web/.next/routes-manifest.json +62 -0
  10. package/dist/web/.next/server/app/_not-found/page.js +2 -2
  11. package/dist/web/.next/server/app/_not-found/page.js.nft.json +1 -1
  12. package/dist/web/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
  13. package/dist/web/.next/server/app/api/admin/backfill-ai/route.js +8 -0
  14. package/dist/web/.next/server/app/api/admin/backfill-ai/route.js.nft.json +1 -0
  15. package/dist/web/.next/server/app/api/admin/backfill-ai/route_client-reference-manifest.js +1 -0
  16. package/dist/web/.next/server/app/api/admin/backfill-search/route.js +1 -0
  17. package/dist/web/.next/server/app/api/admin/backfill-search/route.js.nft.json +1 -0
  18. package/dist/web/.next/server/app/api/admin/backfill-search/route_client-reference-manifest.js +1 -0
  19. package/dist/web/.next/server/app/api/ai/pr-summary/route.js +28 -0
  20. package/dist/web/.next/server/app/api/ai/pr-summary/route.js.nft.json +1 -0
  21. package/dist/web/.next/server/app/api/ai/pr-summary/route_client-reference-manifest.js +1 -0
  22. package/dist/web/.next/server/app/api/ai/pr-summary-local/route.js +28 -0
  23. package/dist/web/.next/server/app/api/ai/pr-summary-local/route.js.nft.json +1 -0
  24. package/dist/web/.next/server/app/api/ai/pr-summary-local/route_client-reference-manifest.js +1 -0
  25. package/dist/web/.next/server/app/api/ai/process/route.js +8 -0
  26. package/dist/web/.next/server/app/api/ai/process/route.js.nft.json +1 -0
  27. package/dist/web/.next/server/app/api/ai/process/route_client-reference-manifest.js +1 -0
  28. package/dist/web/.next/server/app/api/cli/download/route.js +1 -1
  29. package/dist/web/.next/server/app/api/cli/download/route.js.nft.json +1 -1
  30. package/dist/web/.next/server/app/api/cli/download/route_client-reference-manifest.js +1 -1
  31. package/dist/web/.next/server/app/api/cli/feedback/route.js +1 -0
  32. package/dist/web/.next/server/app/api/cli/feedback/route.js.nft.json +1 -0
  33. package/dist/web/.next/server/app/api/cli/feedback/route_client-reference-manifest.js +1 -0
  34. package/dist/web/.next/server/app/api/cli/init/route.js +1 -1
  35. package/dist/web/.next/server/app/api/cli/init/route.js.nft.json +1 -1
  36. package/dist/web/.next/server/app/api/cli/init/route_client-reference-manifest.js +1 -1
  37. package/dist/web/.next/server/app/api/cli/my-shares/route.js +1 -1
  38. package/dist/web/.next/server/app/api/cli/my-shares/route.js.nft.json +1 -1
  39. package/dist/web/.next/server/app/api/cli/my-shares/route_client-reference-manifest.js +1 -1
  40. package/dist/web/.next/server/app/api/cli/poll/route.js +1 -1
  41. package/dist/web/.next/server/app/api/cli/poll/route.js.nft.json +1 -1
  42. package/dist/web/.next/server/app/api/cli/poll/route_client-reference-manifest.js +1 -1
  43. package/dist/web/.next/server/app/api/cli/project-settings/route.js +1 -1
  44. package/dist/web/.next/server/app/api/cli/project-settings/route.js.nft.json +1 -1
  45. package/dist/web/.next/server/app/api/cli/project-settings/route_client-reference-manifest.js +1 -1
  46. package/dist/web/.next/server/app/api/cli/share-mutate/route.js +1 -1
  47. package/dist/web/.next/server/app/api/cli/share-mutate/route.js.nft.json +1 -1
  48. package/dist/web/.next/server/app/api/cli/share-mutate/route_client-reference-manifest.js +1 -1
  49. package/dist/web/.next/server/app/api/cli/sync-list/route.js +1 -1
  50. package/dist/web/.next/server/app/api/cli/sync-list/route.js.nft.json +1 -1
  51. package/dist/web/.next/server/app/api/cli/sync-list/route_client-reference-manifest.js +1 -1
  52. package/dist/web/.next/server/app/api/local/project-sessions/route.js +1 -1
  53. package/dist/web/.next/server/app/api/local/project-sessions/route.js.nft.json +1 -1
  54. package/dist/web/.next/server/app/api/local/project-sessions/route_client-reference-manifest.js +1 -1
  55. package/dist/web/.next/server/app/api/local/watch/route.js +2 -2
  56. package/dist/web/.next/server/app/api/local/watch/route.js.nft.json +1 -1
  57. package/dist/web/.next/server/app/api/local/watch/route_client-reference-manifest.js +1 -1
  58. package/dist/web/.next/server/app/api/search/route.js +1 -0
  59. package/dist/web/.next/server/app/api/search/route.js.nft.json +1 -0
  60. package/dist/web/.next/server/app/api/search/route_client-reference-manifest.js +1 -0
  61. package/dist/web/.next/server/app/api/search-index/route.js +1 -1
  62. package/dist/web/.next/server/app/api/search-index/route.js.nft.json +1 -1
  63. package/dist/web/.next/server/app/api/search-index/route_client-reference-manifest.js +1 -1
  64. package/dist/web/.next/server/app/api/share/download/[slug]/route.js +1 -0
  65. package/dist/web/.next/server/app/api/share/download/[slug]/route.js.nft.json +1 -0
  66. package/dist/web/.next/server/app/api/share/download/[slug]/route_client-reference-manifest.js +1 -0
  67. package/dist/web/.next/server/app/api/share/route.js +1 -1
  68. package/dist/web/.next/server/app/api/share/route.js.nft.json +1 -1
  69. package/dist/web/.next/server/app/api/share/route_client-reference-manifest.js +1 -1
  70. package/dist/web/.next/server/app/api/upload/route.js +3 -3
  71. package/dist/web/.next/server/app/api/upload/route.js.nft.json +1 -1
  72. package/dist/web/.next/server/app/api/upload/route_client-reference-manifest.js +1 -1
  73. package/dist/web/.next/server/app/auth/callback/route.js +1 -1
  74. package/dist/web/.next/server/app/auth/callback/route.js.nft.json +1 -1
  75. package/dist/web/.next/server/app/auth/callback/route_client-reference-manifest.js +1 -1
  76. package/dist/web/.next/server/app/auth/signout/route.js +1 -1
  77. package/dist/web/.next/server/app/auth/signout/route.js.nft.json +1 -1
  78. package/dist/web/.next/server/app/auth/signout/route_client-reference-manifest.js +1 -1
  79. package/dist/web/.next/server/app/blog/ai-coding-agents-2026/page.js +2 -0
  80. package/dist/web/.next/server/app/blog/ai-coding-agents-2026/page.js.nft.json +1 -0
  81. package/dist/web/.next/server/app/blog/ai-coding-agents-2026/page_client-reference-manifest.js +1 -0
  82. package/dist/web/.next/server/app/blog/page.js +2 -0
  83. package/dist/web/.next/server/app/blog/page.js.nft.json +1 -0
  84. package/dist/web/.next/server/app/blog/page_client-reference-manifest.js +1 -0
  85. package/dist/web/.next/server/app/cli/login/page.js +2 -2
  86. package/dist/web/.next/server/app/cli/login/page.js.nft.json +1 -1
  87. package/dist/web/.next/server/app/cli/login/page_client-reference-manifest.js +1 -1
  88. package/dist/web/.next/server/app/digest/page.js +2 -0
  89. package/dist/web/.next/server/app/digest/page.js.nft.json +1 -0
  90. package/dist/web/.next/server/app/digest/page_client-reference-manifest.js +1 -0
  91. package/dist/web/.next/server/app/feedback/page.js +2 -0
  92. package/dist/web/.next/server/app/feedback/page.js.nft.json +1 -0
  93. package/dist/web/.next/server/app/feedback/page_client-reference-manifest.js +1 -0
  94. package/dist/web/.next/server/app/my-projects/[projectKey]/page.js +2 -2
  95. package/dist/web/.next/server/app/my-projects/[projectKey]/page.js.nft.json +1 -1
  96. package/dist/web/.next/server/app/my-projects/[projectKey]/page_client-reference-manifest.js +1 -1
  97. package/dist/web/.next/server/app/my-projects/page.js +2 -2
  98. package/dist/web/.next/server/app/my-projects/page.js.nft.json +1 -1
  99. package/dist/web/.next/server/app/my-projects/page_client-reference-manifest.js +1 -1
  100. package/dist/web/.next/server/app/my-shares/page.js +2 -2
  101. package/dist/web/.next/server/app/my-shares/page.js.nft.json +1 -1
  102. package/dist/web/.next/server/app/my-shares/page_client-reference-manifest.js +1 -1
  103. package/dist/web/.next/server/app/opengraph-image/route.js +1 -71
  104. package/dist/web/.next/server/app/opengraph-image/route.js.nft.json +1 -0
  105. package/dist/web/.next/server/app/opengraph-image/route_client-reference-manifest.js +1 -1
  106. package/dist/web/.next/server/app/opengraph-image.body +0 -0
  107. package/dist/web/.next/server/app/opengraph-image.meta +1 -0
  108. package/dist/web/.next/server/app/page.js +2 -2
  109. package/dist/web/.next/server/app/page.js.nft.json +1 -1
  110. package/dist/web/.next/server/app/page_client-reference-manifest.js +1 -1
  111. package/dist/web/.next/server/app/privacy/page.js +2 -0
  112. package/dist/web/.next/server/app/privacy/page.js.nft.json +1 -0
  113. package/dist/web/.next/server/app/privacy/page_client-reference-manifest.js +1 -0
  114. package/dist/web/.next/server/app/projects/[id]/page.js +2 -2
  115. package/dist/web/.next/server/app/projects/[id]/page.js.nft.json +1 -1
  116. package/dist/web/.next/server/app/projects/[id]/page_client-reference-manifest.js +1 -1
  117. package/dist/web/.next/server/app/r/[slug]/opengraph-image/route.js +1 -1
  118. package/dist/web/.next/server/app/r/[slug]/opengraph-image/route.js.nft.json +1 -1
  119. package/dist/web/.next/server/app/r/[slug]/opengraph-image/route_client-reference-manifest.js +1 -1
  120. package/dist/web/.next/server/app/r/[slug]/page.js +2 -2
  121. package/dist/web/.next/server/app/r/[slug]/page.js.nft.json +1 -1
  122. package/dist/web/.next/server/app/r/[slug]/page_client-reference-manifest.js +1 -1
  123. package/dist/web/.next/server/app/robots.txt/route.js +16 -0
  124. package/dist/web/.next/server/app/robots.txt/route.js.nft.json +1 -0
  125. package/dist/web/.next/server/app/robots.txt/route_client-reference-manifest.js +1 -0
  126. package/dist/web/.next/server/app/robots.txt.body +9 -0
  127. package/dist/web/.next/server/app/robots.txt.meta +1 -0
  128. package/dist/web/.next/server/app/search/page.js +2 -0
  129. package/dist/web/.next/server/app/search/page.js.nft.json +1 -0
  130. package/dist/web/.next/server/app/search/page_client-reference-manifest.js +1 -0
  131. package/dist/web/.next/server/app/sessions/[projectId]/[sessionId]/page.js +2 -2
  132. package/dist/web/.next/server/app/sessions/[projectId]/[sessionId]/page.js.nft.json +1 -1
  133. package/dist/web/.next/server/app/sessions/[projectId]/[sessionId]/page_client-reference-manifest.js +1 -1
  134. package/dist/web/.next/server/app/sign-in/page.js +2 -2
  135. package/dist/web/.next/server/app/sign-in/page.js.nft.json +1 -1
  136. package/dist/web/.next/server/app/sign-in/page_client-reference-manifest.js +1 -1
  137. package/dist/web/.next/server/app/sitemap.xml/route.js +16 -0
  138. package/dist/web/.next/server/app/sitemap.xml/route.js.nft.json +1 -0
  139. package/dist/web/.next/server/app/sitemap.xml/route_client-reference-manifest.js +1 -0
  140. package/dist/web/.next/server/app/sitemap.xml.body +51 -0
  141. package/dist/web/.next/server/app/sitemap.xml.meta +1 -0
  142. package/dist/web/.next/server/app/terms/page.js +2 -0
  143. package/dist/web/.next/server/app/terms/page.js.nft.json +1 -0
  144. package/dist/web/.next/server/app/terms/page_client-reference-manifest.js +1 -0
  145. package/dist/web/.next/server/app-paths-manifest.json +28 -11
  146. package/dist/web/.next/server/chunks/1017.js +2 -0
  147. package/dist/web/.next/server/chunks/1134.js +8 -0
  148. package/dist/web/.next/server/chunks/1825.js +1 -0
  149. package/dist/web/.next/server/chunks/1924.js +1 -0
  150. package/dist/web/.next/server/chunks/1961.js +1 -0
  151. package/dist/web/.next/server/chunks/2678.js +5 -0
  152. package/dist/web/.next/server/chunks/{901.js → 2901.js} +1 -1
  153. package/dist/web/.next/server/chunks/{635.js → 3256.js} +1 -1
  154. package/dist/web/.next/server/chunks/3398.js +1 -0
  155. package/dist/web/.next/server/chunks/{500.js → 4500.js} +1 -1
  156. package/dist/web/.next/server/chunks/{985.js → 4985.js} +2 -2
  157. package/dist/web/.next/server/chunks/6227.js +1 -0
  158. package/dist/web/.next/server/chunks/8334.js +1 -0
  159. package/dist/web/.next/server/chunks/8632.js +2 -0
  160. package/dist/web/.next/server/chunks/{993.js → 9993.js} +1 -1
  161. package/dist/web/.next/server/functions-config-manifest.json +17 -2
  162. package/dist/web/.next/server/middleware-build-manifest.js +1 -1
  163. package/dist/web/.next/server/middleware-manifest.json +1 -43
  164. package/dist/web/.next/server/pages/500.html +1 -1
  165. package/dist/web/.next/server/pages/_document.js +1 -1
  166. package/dist/web/.next/server/pages/_document.js.nft.json +1 -1
  167. package/dist/web/.next/server/pages/_error.js +2 -2
  168. package/dist/web/.next/server/pages/_error.js.nft.json +1 -1
  169. package/dist/web/.next/server/pages-manifest.json +1 -1
  170. package/dist/web/.next/server/server-reference-manifest.js +1 -1
  171. package/dist/web/.next/server/server-reference-manifest.json +1 -1
  172. package/dist/web/.next/server/webpack-runtime.js +1 -1
  173. package/dist/web/.next/static/ABHGCNY7MSdkh00Z4Y8wS/_buildManifest.js +1 -0
  174. package/dist/web/.next/static/chunks/1029-12dc6d00537d43fd.js +1 -0
  175. package/dist/web/.next/static/chunks/4695-b52fc3d81451c3c3.js +1 -0
  176. package/dist/web/.next/static/chunks/552926ff-c5d04ae0c2d9f826.js +1 -0
  177. package/dist/web/.next/static/chunks/7200-4560b15b9cad37b3.js +1 -0
  178. package/dist/web/.next/static/chunks/app/_not-found/page-fd6592d30c58fa5e.js +1 -0
  179. package/dist/web/.next/static/chunks/app/api/admin/backfill-ai/route-fd6592d30c58fa5e.js +1 -0
  180. package/dist/web/.next/static/chunks/app/api/admin/backfill-search/route-fd6592d30c58fa5e.js +1 -0
  181. package/dist/web/.next/static/chunks/app/api/ai/pr-summary/route-fd6592d30c58fa5e.js +1 -0
  182. package/dist/web/.next/static/chunks/app/api/ai/pr-summary-local/route-fd6592d30c58fa5e.js +1 -0
  183. package/dist/web/.next/static/chunks/app/api/ai/process/route-fd6592d30c58fa5e.js +1 -0
  184. package/dist/web/.next/static/chunks/app/api/cli/download/route-fd6592d30c58fa5e.js +1 -0
  185. package/dist/web/.next/static/chunks/app/api/cli/feedback/route-fd6592d30c58fa5e.js +1 -0
  186. package/dist/web/.next/static/chunks/app/api/cli/init/route-fd6592d30c58fa5e.js +1 -0
  187. package/dist/web/.next/static/chunks/app/api/cli/my-shares/route-fd6592d30c58fa5e.js +1 -0
  188. package/dist/web/.next/static/chunks/app/api/cli/poll/route-fd6592d30c58fa5e.js +1 -0
  189. package/dist/web/.next/static/chunks/app/api/cli/project-settings/route-fd6592d30c58fa5e.js +1 -0
  190. package/dist/web/.next/static/chunks/app/api/cli/share-mutate/route-fd6592d30c58fa5e.js +1 -0
  191. package/dist/web/.next/static/chunks/app/api/cli/sync-list/route-fd6592d30c58fa5e.js +1 -0
  192. package/dist/web/.next/static/chunks/app/api/local/project-sessions/route-fd6592d30c58fa5e.js +1 -0
  193. package/dist/web/.next/static/chunks/app/api/local/watch/route-fd6592d30c58fa5e.js +1 -0
  194. package/dist/web/.next/static/chunks/app/api/search/route-fd6592d30c58fa5e.js +1 -0
  195. package/dist/web/.next/static/chunks/app/api/search-index/route-fd6592d30c58fa5e.js +1 -0
  196. package/dist/web/.next/static/chunks/app/api/share/download/[slug]/route-fd6592d30c58fa5e.js +1 -0
  197. package/dist/web/.next/static/chunks/app/api/share/route-fd6592d30c58fa5e.js +1 -0
  198. package/dist/web/.next/static/chunks/app/api/upload/route-fd6592d30c58fa5e.js +1 -0
  199. package/dist/web/.next/static/chunks/app/auth/callback/route-fd6592d30c58fa5e.js +1 -0
  200. package/dist/web/.next/static/chunks/app/auth/signout/route-fd6592d30c58fa5e.js +1 -0
  201. package/dist/web/.next/static/chunks/app/blog/ai-coding-agents-2026/page-fd6592d30c58fa5e.js +1 -0
  202. package/dist/web/.next/static/chunks/app/blog/layout-9b51270472318488.js +1 -0
  203. package/dist/web/.next/static/chunks/app/blog/page-8400ea4ac5a7eb44.js +1 -0
  204. package/dist/web/.next/static/chunks/app/cli/login/page-26287cfd64c0fb49.js +1 -0
  205. package/dist/web/.next/static/chunks/app/digest/page-8400ea4ac5a7eb44.js +1 -0
  206. package/dist/web/.next/static/chunks/app/feedback/page-55ef0005807f1cef.js +1 -0
  207. package/dist/web/.next/static/chunks/app/layout-aa56caf2bf5af86f.js +1 -0
  208. package/dist/web/.next/static/chunks/app/my-projects/[projectKey]/page-7c5f2badf689d2e8.js +1 -0
  209. package/dist/web/.next/static/chunks/app/my-projects/page-c0390151fd6332a0.js +1 -0
  210. package/dist/web/.next/static/chunks/app/my-shares/page-49c0112973401c14.js +1 -0
  211. package/dist/web/.next/static/chunks/app/not-found-8400ea4ac5a7eb44.js +1 -0
  212. package/dist/web/.next/static/chunks/app/opengraph-image/route-fd6592d30c58fa5e.js +1 -0
  213. package/dist/web/.next/static/chunks/app/page-f7b69fa944b46c20.js +1 -0
  214. package/dist/web/.next/static/chunks/app/privacy/page-9b51270472318488.js +1 -0
  215. package/dist/web/.next/static/chunks/app/projects/[id]/page-7dd46a825d03a7d9.js +1 -0
  216. package/dist/web/.next/static/chunks/app/r/[slug]/opengraph-image/route-fd6592d30c58fa5e.js +1 -0
  217. package/dist/web/.next/static/chunks/app/r/[slug]/page-6a0983805e048ac3.js +1 -0
  218. package/dist/web/.next/static/chunks/app/robots.txt/route-fd6592d30c58fa5e.js +1 -0
  219. package/dist/web/.next/static/chunks/app/search/page-c29f37dc2462b676.js +1 -0
  220. package/dist/web/.next/static/chunks/app/sessions/[projectId]/[sessionId]/page-87b4505dd32edb9d.js +1 -0
  221. package/dist/web/.next/static/chunks/app/sign-in/page-fea3971ff9237b72.js +1 -0
  222. package/dist/web/.next/static/chunks/app/sitemap.xml/route-fd6592d30c58fa5e.js +1 -0
  223. package/dist/web/.next/static/chunks/app/terms/page-9b51270472318488.js +1 -0
  224. package/dist/web/.next/static/chunks/d99d8e6a-55da88efbe15e3e1.js +1 -0
  225. package/dist/web/.next/static/chunks/framework-c1efa271b5a96d9d.js +1 -0
  226. package/dist/web/.next/static/chunks/main-app-70de904c7caade50.js +1 -0
  227. package/dist/web/.next/static/chunks/main-d211cddc79aac1cb.js +1 -0
  228. package/dist/web/.next/static/chunks/pages/{_app-42b849402a54b9e6.js → _app-701b0752a0d4c3a9.js} +1 -1
  229. package/dist/web/.next/static/chunks/pages/_error-327385abc873a736.js +1 -0
  230. package/dist/web/.next/static/chunks/{webpack-3a8b65d12c8eb987.js → webpack-3a446128dfa39f85.js} +1 -1
  231. package/dist/web/.next/static/css/b3ccdd7835e6edda.css +3 -0
  232. package/dist/web/node_modules/.pnpm/@swc+helpers@0.5.15/node_modules/@swc/helpers/_/_class_private_field_loose_base/package.json +4 -0
  233. package/dist/web/node_modules/.pnpm/@swc+helpers@0.5.15/node_modules/@swc/helpers/_/_class_private_field_loose_key/package.json +4 -0
  234. package/dist/web/node_modules/.pnpm/@swc+helpers@0.5.15/node_modules/@swc/helpers/_/_interop_require_default/package.json +4 -0
  235. package/dist/web/node_modules/.pnpm/@swc+helpers@0.5.15/node_modules/@swc/helpers/_/_interop_require_wildcard/package.json +4 -0
  236. package/dist/web/node_modules/.pnpm/@swc+helpers@0.5.15/node_modules/@swc/helpers/cjs/_class_private_field_loose_base.cjs +10 -0
  237. package/dist/web/node_modules/.pnpm/@swc+helpers@0.5.15/node_modules/@swc/helpers/cjs/_class_private_field_loose_key.cjs +8 -0
  238. package/dist/web/node_modules/.pnpm/@swc+helpers@0.5.15/node_modules/@swc/helpers/cjs/_interop_require_default.cjs +6 -0
  239. package/dist/web/node_modules/.pnpm/@swc+helpers@0.5.15/node_modules/@swc/helpers/cjs/_interop_require_wildcard.cjs +38 -0
  240. package/dist/web/node_modules/.pnpm/@swc+helpers@0.5.15/node_modules/@swc/helpers/package.json +471 -0
  241. package/dist/web/package.json +4 -1
  242. package/dist/web/public/apple-touch-icon.png +0 -0
  243. package/dist/web/public/favicon-16.png +0 -0
  244. package/dist/web/public/favicon-32.png +0 -0
  245. package/dist/web/public/icon-192.png +0 -0
  246. package/dist/web/public/icon-512.png +0 -0
  247. package/dist/web/public/logo.png +0 -0
  248. package/dist/web/server.js +1 -1
  249. package/package.json +5 -8
  250. package/dist/web/.next/server/app/opengraph-image/route.js.map +0 -1
  251. package/dist/web/.next/server/chunks/150.js +0 -1
  252. package/dist/web/.next/server/chunks/160.js +0 -2
  253. package/dist/web/.next/server/chunks/334.js +0 -1
  254. package/dist/web/.next/server/chunks/354.js +0 -1
  255. package/dist/web/.next/server/chunks/371.js +0 -1
  256. package/dist/web/.next/server/chunks/398.js +0 -1
  257. package/dist/web/.next/server/chunks/552.js +0 -2
  258. package/dist/web/.next/server/chunks/678.js +0 -5
  259. package/dist/web/.next/server/chunks/924.js +0 -1
  260. package/dist/web/.next/server/edge-chunks/asset_noto-sans-v27-latin-regular.5dda3fca77107598.ttf +0 -0
  261. package/dist/web/.next/server/edge-chunks/wasm_77d9faebf7af9e421806970ce10a58e9d83116d7.wasm +0 -0
  262. package/dist/web/.next/server/edge-chunks/wasm_ef4866ecae192fd87727067cf2c0c0cf9fb8b020.wasm +0 -0
  263. package/dist/web/.next/server/edge-runtime-webpack.js +0 -2
  264. package/dist/web/.next/server/interception-route-rewrite-manifest.js +0 -1
  265. package/dist/web/.next/static/05arLtyVtuaMhMczmbNEQ/_buildManifest.js +0 -1
  266. package/dist/web/.next/static/chunks/200-619918ea0fdbd6ff.js +0 -1
  267. package/dist/web/.next/static/chunks/29-73072d523fc7c3d6.js +0 -1
  268. package/dist/web/.next/static/chunks/552926ff-e8a371ec0133d0dc.js +0 -1
  269. package/dist/web/.next/static/chunks/695-00bca043953d4170.js +0 -1
  270. package/dist/web/.next/static/chunks/app/_not-found/page-28b9b6b1a849439f.js +0 -1
  271. package/dist/web/.next/static/chunks/app/api/cli/download/route-28b9b6b1a849439f.js +0 -1
  272. package/dist/web/.next/static/chunks/app/api/cli/init/route-28b9b6b1a849439f.js +0 -1
  273. package/dist/web/.next/static/chunks/app/api/cli/my-shares/route-28b9b6b1a849439f.js +0 -1
  274. package/dist/web/.next/static/chunks/app/api/cli/poll/route-28b9b6b1a849439f.js +0 -1
  275. package/dist/web/.next/static/chunks/app/api/cli/project-settings/route-28b9b6b1a849439f.js +0 -1
  276. package/dist/web/.next/static/chunks/app/api/cli/share-mutate/route-28b9b6b1a849439f.js +0 -1
  277. package/dist/web/.next/static/chunks/app/api/cli/sync-list/route-28b9b6b1a849439f.js +0 -1
  278. package/dist/web/.next/static/chunks/app/api/local/project-sessions/route-28b9b6b1a849439f.js +0 -1
  279. package/dist/web/.next/static/chunks/app/api/local/watch/route-28b9b6b1a849439f.js +0 -1
  280. package/dist/web/.next/static/chunks/app/api/search-index/route-28b9b6b1a849439f.js +0 -1
  281. package/dist/web/.next/static/chunks/app/api/share/route-28b9b6b1a849439f.js +0 -1
  282. package/dist/web/.next/static/chunks/app/api/upload/route-28b9b6b1a849439f.js +0 -1
  283. package/dist/web/.next/static/chunks/app/auth/callback/route-28b9b6b1a849439f.js +0 -1
  284. package/dist/web/.next/static/chunks/app/auth/signout/route-28b9b6b1a849439f.js +0 -1
  285. package/dist/web/.next/static/chunks/app/cli/login/page-647fd605d0fe2472.js +0 -1
  286. package/dist/web/.next/static/chunks/app/layout-f5666b9135264807.js +0 -1
  287. package/dist/web/.next/static/chunks/app/my-projects/[projectKey]/page-cb6e039c958bfc2c.js +0 -1
  288. package/dist/web/.next/static/chunks/app/my-projects/page-9f8ca9b85ceaf296.js +0 -1
  289. package/dist/web/.next/static/chunks/app/my-shares/page-cb6e039c958bfc2c.js +0 -1
  290. package/dist/web/.next/static/chunks/app/not-found-9f8ca9b85ceaf296.js +0 -1
  291. package/dist/web/.next/static/chunks/app/opengraph-image/route-28b9b6b1a849439f.js +0 -1
  292. package/dist/web/.next/static/chunks/app/page-5094c206f5c10164.js +0 -1
  293. package/dist/web/.next/static/chunks/app/projects/[id]/page-5094c206f5c10164.js +0 -1
  294. package/dist/web/.next/static/chunks/app/r/[slug]/opengraph-image/route-28b9b6b1a849439f.js +0 -1
  295. package/dist/web/.next/static/chunks/app/r/[slug]/page-65707eb198f673a1.js +0 -1
  296. package/dist/web/.next/static/chunks/app/sessions/[projectId]/[sessionId]/page-42e3ca6ddbc89891.js +0 -1
  297. package/dist/web/.next/static/chunks/app/sign-in/page-792d0d79889186cf.js +0 -1
  298. package/dist/web/.next/static/chunks/d99d8e6a-80443bd3c9d31f50.js +0 -1
  299. package/dist/web/.next/static/chunks/framework-39000e34f38d10f6.js +0 -1
  300. package/dist/web/.next/static/chunks/main-app-21e9441fa7ac15ef.js +0 -1
  301. package/dist/web/.next/static/chunks/main-f824d48fd7ff2e3b.js +0 -1
  302. package/dist/web/.next/static/chunks/pages/_error-412ff705bc5b0636.js +0 -1
  303. package/dist/web/.next/static/css/e3f901a57ca280a4.css +0 -3
  304. /package/dist/web/.next/static/{05arLtyVtuaMhMczmbNEQ → ABHGCNY7MSdkh00Z4Y8wS}/_ssgManifest.js +0 -0
package/README.md CHANGED
@@ -1,16 +1,16 @@
1
1
  # promptarc
2
2
 
3
- > Local-first viewer for AI coding agent sessions. Browse, search, and share what your agent has been doing — without uploading anything you didn't ask to.
3
+ > Local-first viewer for AI coding agent sessions. Browse, search, and share your Claude Code, Codex, and Cursor sessions — without uploading anything you didn't ask to.
4
4
 
5
5
  ```bash
6
6
  npx promptarc
7
7
  ```
8
8
 
9
- That's it. The CLI boots a dashboard at `http://localhost:3030` that reads `~/.claude/` and renders every Claude Code session as an inspectable timeline (messages, tool calls, file diffs, todos, errors, the works).
9
+ That's it. The CLI boots a dashboard at `http://localhost:3030` that reads `~/.claude/`, `~/.codex/`, and `~/.cursor/` — rendering every session from Claude Code, OpenAI Codex, and Cursor as an inspectable timeline (messages, tool calls, file diffs, todos, errors, the works).
10
10
 
11
11
  ## Features
12
12
 
13
- - **Local-first.** Reads `~/.claude/` directly. No data leaves your machine unless you explicitly click *Share*.
13
+ - **Multi-agent.** Reads `~/.claude/` (Claude Code), `~/.codex/` (Codex), and `~/.cursor/` (Cursor) in one dashboard with tabs to filter by agent.
14
14
  - **Live updates.** Open a session that's still running and the page refreshes within ~300ms of every new message Claude writes.
15
15
  - **Resume.** Lost track of which session you were on? Click any session and copy the `claude --resume <id>` command from the sidebar.
16
16
  - **Selective sharing.** Click *Share session* to upload a single session as a viewable link. Choose visibility per share: **public** (indexed), **unlisted** (anyone with the URL), or **private** (only you, default).
@@ -39,12 +39,12 @@ promptarc --help Show usage
39
39
  ## Requirements
40
40
 
41
41
  - Node.js ≥ 20
42
- - A `~/.claude/` directory (created automatically by [Claude Code](https://docs.claude.com/en/docs/claude-code))
42
+ - At least one of: `~/.claude/` (Claude Code), `~/.codex/` (Codex), or `~/.cursor/` (Cursor)
43
43
 
44
- ## License
44
+ ## Feedback
45
45
 
46
- MIT — see [LICENSE](https://github.com/telugutribe/agentreplay/blob/main/LICENSE).
46
+ [promptarc.dev/feedback](https://promptarc.dev/feedback)
47
47
 
48
- ## Source
48
+ ## License
49
49
 
50
- [github.com/telugutribe/agentreplay](https://github.com/telugutribe/agentreplay)
50
+ MIT
package/dist/bin.js CHANGED
@@ -54,6 +54,10 @@ async function main() {
54
54
  console.log(`Signed in as ${auth.email ?? auth.userId}${auth.login ? ` (@${auth.login})` : ''}`);
55
55
  return;
56
56
  }
57
+ if (cmd === 'pr') {
58
+ await runPR(args.slice(1));
59
+ return;
60
+ }
57
61
  if (cmd === 'pull') {
58
62
  const slug = args[1];
59
63
  if (!slug) {
@@ -81,6 +85,8 @@ COMMANDS
81
85
  login Sign in to your promptarc account via GitHub
82
86
  logout Delete the saved auth token
83
87
  whoami Print the currently signed-in account
88
+ pr Generate a PR description from the current session
89
+ pr --share Generate + share session as private (includes link)
84
90
  pull <slug> Download a shared session into ~/.claude/ for resume
85
91
  --version Print the CLI version
86
92
  --help Show this message
@@ -89,6 +95,366 @@ LEARN MORE
89
95
  https://promptarc.dev
90
96
  `);
91
97
  }
98
+ async function runPR(args) {
99
+ const auth = loadAuth();
100
+ if (!auth) {
101
+ console.error('Not signed in. Run `promptarc login` first.');
102
+ process.exitCode = 1;
103
+ return;
104
+ }
105
+ const shouldShare = args.includes('--share');
106
+ const sessionIdArg = args.find((a) => !a.startsWith('--'));
107
+ const copyFlag = args.includes('--copy');
108
+ // 1. Find the session.
109
+ const cwd = process.cwd();
110
+ const sessionFile = sessionIdArg
111
+ ? findSessionById(sessionIdArg)
112
+ : findLatestSession(cwd);
113
+ if (!sessionFile) {
114
+ console.error(sessionIdArg
115
+ ? `Session ${sessionIdArg} not found.`
116
+ : `No sessions found for ${cwd}. Run this from a project directory with Claude Code/Codex/Cursor sessions.`);
117
+ process.exitCode = 1;
118
+ return;
119
+ }
120
+ console.log(` ▸ reading ${sessionFile.path}`);
121
+ // 2. Extract summary input from the local JSONL.
122
+ const input = extractLocalSummaryInput(sessionFile.path);
123
+ if (input.length < 20) {
124
+ console.error('Session is too short to generate a PR description.');
125
+ process.exitCode = 1;
126
+ return;
127
+ }
128
+ // 3. If --share, share the session first via the local dashboard.
129
+ let shareUrl = '';
130
+ if (shouldShare) {
131
+ console.log(' ▸ sharing session as private...');
132
+ const localOrigin = 'http://localhost:3030';
133
+ try {
134
+ const shareRes = await fetch(`${localOrigin}/api/share`, {
135
+ method: 'POST',
136
+ headers: { 'content-type': 'application/json' },
137
+ body: JSON.stringify({
138
+ sessionId: sessionFile.sessionId,
139
+ projectId: sessionFile.projectId,
140
+ visibility: 'private',
141
+ _h: '',
142
+ }),
143
+ });
144
+ if (shareRes.ok) {
145
+ const json = (await shareRes.json());
146
+ shareUrl = json.url ?? '';
147
+ console.log(` ▸ shared: ${shareUrl}`);
148
+ }
149
+ else {
150
+ console.error(' ▸ share failed (dashboard may not be running). Continuing without link.');
151
+ }
152
+ }
153
+ catch {
154
+ console.error(' ▸ could not reach local dashboard. Run `promptarc` first, or skip --share.');
155
+ }
156
+ }
157
+ // 4. Generate PR description via hosted API.
158
+ console.log(' ▸ generating PR description...');
159
+ const siteUrl = process.env.PROMPTARC_SITE_URL ?? 'https://promptarc.dev';
160
+ let markdown;
161
+ try {
162
+ const res = await fetch(`${siteUrl}/api/ai/pr-summary-local`, {
163
+ method: 'POST',
164
+ headers: {
165
+ 'content-type': 'application/json',
166
+ authorization: `Bearer ${auth.token}`,
167
+ },
168
+ body: JSON.stringify({ input }),
169
+ });
170
+ if (!res.ok) {
171
+ const json = (await res.json());
172
+ console.error(` ✗ ${json.error ?? `HTTP ${res.status}`}`);
173
+ process.exitCode = 1;
174
+ return;
175
+ }
176
+ const json = (await res.json());
177
+ markdown = json.markdown;
178
+ }
179
+ catch (err) {
180
+ console.error(` ✗ Failed to reach ${siteUrl}: ${String(err)}`);
181
+ process.exitCode = 1;
182
+ return;
183
+ }
184
+ // 5. Append session link if shared.
185
+ if (shareUrl) {
186
+ markdown += `\n\n---\n*Generated by [promptarc](https://promptarc.dev) from [session →](${shareUrl})*`;
187
+ }
188
+ // 6. Output.
189
+ if (copyFlag) {
190
+ try {
191
+ const cmd = process.platform === 'darwin'
192
+ ? 'pbcopy'
193
+ : process.platform === 'win32'
194
+ ? 'clip'
195
+ : 'xclip -selection clipboard';
196
+ const { execSync } = await import('node:child_process');
197
+ execSync(cmd, { input: markdown });
198
+ console.log(' ✓ Copied to clipboard.\n');
199
+ }
200
+ catch {
201
+ // Fall through to stdout.
202
+ }
203
+ }
204
+ console.log('');
205
+ console.log(markdown);
206
+ console.log('');
207
+ }
208
+ function findLatestSession(cwd) {
209
+ const fs = require('node:fs');
210
+ const path = require('node:path');
211
+ const candidates = [];
212
+ const cwdParts = cwd.split('/').filter(Boolean);
213
+ const lastPart = cwdParts[cwdParts.length - 1] ?? '';
214
+ const encoded = cwd.replace(/\//g, '-');
215
+ // 1. Claude Code: ~/.claude/projects/<encoded-cwd>/*.jsonl
216
+ const claudeRoot = path.join(homedir(), '.claude', 'projects');
217
+ try {
218
+ const dirs = fs.readdirSync(claudeRoot);
219
+ for (const dir of dirs) {
220
+ if (dir === encoded || dir.endsWith(lastPart)) {
221
+ const projectDir = path.join(claudeRoot, dir);
222
+ if (!fs.statSync(projectDir).isDirectory())
223
+ continue;
224
+ const files = fs.readdirSync(projectDir).filter((f) => f.endsWith('.jsonl'));
225
+ for (const f of files) {
226
+ const fp = path.join(projectDir, f);
227
+ candidates.push({
228
+ path: fp,
229
+ sessionId: path.basename(f, '.jsonl'),
230
+ projectId: dir,
231
+ });
232
+ }
233
+ }
234
+ }
235
+ }
236
+ catch { /* no Claude sessions */ }
237
+ // 2. Codex: ~/.codex/sessions/**/*.jsonl (scan all, match cwd from session_meta)
238
+ const codexRoot = path.join(homedir(), '.codex', 'sessions');
239
+ try {
240
+ const codexFiles = findJsonlRecursive(codexRoot, fs, path);
241
+ for (const fp of codexFiles) {
242
+ // Quick check: read first line for cwd match.
243
+ try {
244
+ const firstLine = fs.readFileSync(fp, 'utf8').split('\n')[0] ?? '';
245
+ if (firstLine.includes(cwd) || firstLine.includes(lastPart)) {
246
+ const name = path.basename(fp, '.jsonl');
247
+ const uuidMatch = name.match(/([0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12})/i);
248
+ candidates.push({
249
+ path: fp,
250
+ sessionId: uuidMatch?.[1] ?? name,
251
+ projectId: `codex:${cwd.replace(/\//g, '-')}`,
252
+ });
253
+ }
254
+ }
255
+ catch { /* skip */ }
256
+ }
257
+ }
258
+ catch { /* no Codex sessions */ }
259
+ // 3. Cursor: ~/.cursor/projects/<encoded>/agent-transcripts/<uuid>/<uuid>.jsonl
260
+ const cursorEncoded = cwd.replace(/\//g, '-').replace(/^-/, '');
261
+ const cursorRoot = path.join(homedir(), '.cursor', 'projects');
262
+ try {
263
+ const dirs = fs.readdirSync(cursorRoot);
264
+ for (const dir of dirs) {
265
+ if (dir === cursorEncoded || dir.endsWith(lastPart)) {
266
+ const transcriptsDir = path.join(cursorRoot, dir, 'agent-transcripts');
267
+ try {
268
+ const sessionDirs = fs.readdirSync(transcriptsDir);
269
+ for (const sd of sessionDirs) {
270
+ const fp = path.join(transcriptsDir, sd, `${sd}.jsonl`);
271
+ try {
272
+ fs.statSync(fp);
273
+ candidates.push({
274
+ path: fp,
275
+ sessionId: sd,
276
+ projectId: `cursor:${dir}`,
277
+ });
278
+ }
279
+ catch { /* skip */ }
280
+ }
281
+ }
282
+ catch { /* no transcripts */ }
283
+ }
284
+ }
285
+ }
286
+ catch { /* no Cursor sessions */ }
287
+ if (candidates.length === 0)
288
+ return null;
289
+ // Return the most recently modified file.
290
+ candidates.sort((a, b) => {
291
+ try {
292
+ return fs.statSync(b.path).mtimeMs - fs.statSync(a.path).mtimeMs;
293
+ }
294
+ catch {
295
+ return 0;
296
+ }
297
+ });
298
+ return candidates[0];
299
+ }
300
+ function findJsonlRecursive(dir, fs, path) {
301
+ const results = [];
302
+ try {
303
+ const entries = fs.readdirSync(dir, { withFileTypes: true });
304
+ for (const entry of entries) {
305
+ const full = path.join(dir, entry.name);
306
+ if (entry.isDirectory())
307
+ results.push(...findJsonlRecursive(full, fs, path));
308
+ else if (entry.name.endsWith('.jsonl'))
309
+ results.push(full);
310
+ }
311
+ }
312
+ catch { /* skip */ }
313
+ return results;
314
+ }
315
+ function findSessionById(id) {
316
+ const fs = require('node:fs');
317
+ const path = require('node:path');
318
+ // Search Claude Code.
319
+ const claudeRoot = path.join(homedir(), '.claude', 'projects');
320
+ try {
321
+ for (const dir of fs.readdirSync(claudeRoot)) {
322
+ const fp = path.join(claudeRoot, dir, `${id}.jsonl`);
323
+ try {
324
+ fs.statSync(fp);
325
+ return { path: fp, sessionId: id, projectId: dir };
326
+ }
327
+ catch { /* skip */ }
328
+ }
329
+ }
330
+ catch { /* no Claude */ }
331
+ // Search Cursor.
332
+ const cursorRoot = path.join(homedir(), '.cursor', 'projects');
333
+ try {
334
+ for (const dir of fs.readdirSync(cursorRoot)) {
335
+ const fp = path.join(cursorRoot, dir, 'agent-transcripts', id, `${id}.jsonl`);
336
+ try {
337
+ fs.statSync(fp);
338
+ return { path: fp, sessionId: id, projectId: `cursor:${dir}` };
339
+ }
340
+ catch { /* skip */ }
341
+ }
342
+ }
343
+ catch { /* no Cursor */ }
344
+ // Search Codex (scan all, match by UUID in filename).
345
+ const codexRoot = path.join(homedir(), '.codex', 'sessions');
346
+ const codexFiles = findJsonlRecursive(codexRoot, fs, path);
347
+ for (const fp of codexFiles) {
348
+ if (fp.includes(id)) {
349
+ return { path: fp, sessionId: id, projectId: null };
350
+ }
351
+ }
352
+ return null;
353
+ }
354
+ /**
355
+ * Lightweight summary input extraction for the CLI. Reads the local
356
+ * JSONL and pulls: first user prompt, last user prompt, tool call
357
+ * names + file paths, and error outputs. Capped at 4K chars.
358
+ */
359
+ function extractLocalSummaryInput(filePath) {
360
+ const { readFileSync } = require('node:fs');
361
+ const raw = readFileSync(filePath, 'utf8');
362
+ const lines = raw.split('\n').filter(Boolean);
363
+ const parts = [];
364
+ const userPrompts = [];
365
+ const toolCalls = [];
366
+ const errors = [];
367
+ const filePaths = new Set();
368
+ for (const line of lines) {
369
+ let parsed;
370
+ try {
371
+ parsed = JSON.parse(line);
372
+ }
373
+ catch {
374
+ continue;
375
+ }
376
+ // Claude Code format.
377
+ const type = parsed.type;
378
+ const msg = parsed.message;
379
+ if (type === 'user' && typeof msg === 'string') {
380
+ userPrompts.push(msg);
381
+ }
382
+ if (typeof msg === 'object' && msg && Array.isArray(msg.content)) {
383
+ for (const block of msg.content) {
384
+ if (block.type === 'text' && typeof block.text === 'string') {
385
+ if (type === 'user')
386
+ userPrompts.push(block.text);
387
+ }
388
+ if (block.type === 'tool_use') {
389
+ const name = block.name;
390
+ const input = block.input;
391
+ const fp = input?.file_path ?? input?.path ?? '';
392
+ if (fp)
393
+ filePaths.add(fp);
394
+ if (input?.command)
395
+ toolCalls.push(`${name}: ${String(input.command).slice(0, 100)}`);
396
+ else if (fp)
397
+ toolCalls.push(`${name}: ${fp}`);
398
+ else
399
+ toolCalls.push(name);
400
+ }
401
+ if (block.type === 'tool_result' && block.is_error) {
402
+ const output = typeof block.content === 'string' ? block.content : String(block.output ?? '');
403
+ if (output)
404
+ errors.push(output.slice(0, 200));
405
+ }
406
+ }
407
+ }
408
+ // Codex format: {timestamp, type, payload}.
409
+ if (parsed.payload && typeof parsed.payload === 'object') {
410
+ const payload = parsed.payload;
411
+ if (payload.type === 'message' && payload.role === 'user') {
412
+ const content = payload.content;
413
+ if (Array.isArray(content)) {
414
+ for (const block of content) {
415
+ if ((block.type === 'input_text' || block.type === 'text') && typeof block.text === 'string') {
416
+ userPrompts.push(block.text);
417
+ }
418
+ }
419
+ }
420
+ }
421
+ }
422
+ // Cursor format: {role, message: {content}}.
423
+ if (parsed.role === 'user' && typeof parsed.message === 'object' && parsed.message) {
424
+ const content = parsed.message.content;
425
+ if (Array.isArray(content)) {
426
+ for (const block of content) {
427
+ if (block.type === 'text' && typeof block.text === 'string') {
428
+ const text = block.text.replace(/<\/?user_query>/g, '').trim();
429
+ if (text)
430
+ userPrompts.push(text);
431
+ }
432
+ }
433
+ }
434
+ }
435
+ }
436
+ if (userPrompts.length > 0) {
437
+ parts.push('--- First prompt ---');
438
+ parts.push(userPrompts[0].slice(0, 500));
439
+ }
440
+ if (userPrompts.length > 1) {
441
+ parts.push('--- Last prompt ---');
442
+ parts.push(userPrompts[userPrompts.length - 1].slice(0, 300));
443
+ }
444
+ if (toolCalls.length > 0) {
445
+ parts.push('--- Tool calls ---');
446
+ parts.push([...new Set(toolCalls)].slice(0, 15).join('\n'));
447
+ }
448
+ if (filePaths.size > 0) {
449
+ parts.push(`--- Files (${filePaths.size}) ---`);
450
+ parts.push([...filePaths].slice(0, 20).join(', '));
451
+ }
452
+ if (errors.length > 0) {
453
+ parts.push('--- Errors ---');
454
+ parts.push(errors.slice(0, 3).join('\n'));
455
+ }
456
+ return parts.join('\n').slice(0, 4000);
457
+ }
92
458
  async function runPull(slug) {
93
459
  const auth = loadAuth();
94
460
  if (!auth) {
@@ -1 +1 @@
1
- 05arLtyVtuaMhMczmbNEQ
1
+ ABHGCNY7MSdkh00Z4Y8wS