@mndrk/agx 1.4.59 → 1.4.61

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 (182) hide show
  1. package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/BUILD_ID +1 -1
  2. package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/app-build-manifest.json +84 -70
  3. package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/app-path-routes-manifest.json +12 -10
  4. package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/build-manifest.json +2 -2
  5. package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/prerender-manifest.json +12 -12
  6. package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/routes-manifest.json +16 -0
  7. package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/server/app/_not-found/page.js +1 -1
  8. package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
  9. package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/server/app/_not-found.html +2 -2
  10. package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/server/app/_not-found.rsc +1 -1
  11. package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/server/app/api/audit/route_client-reference-manifest.js +1 -1
  12. package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/server/app/api/auth/[...nextauth]/route_client-reference-manifest.js +1 -1
  13. package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/server/app/api/auth/daemon-secret/route_client-reference-manifest.js +1 -1
  14. package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/server/app/api/auth/device/code/route_client-reference-manifest.js +1 -1
  15. package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/server/app/api/auth/device/token/route_client-reference-manifest.js +1 -1
  16. package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/server/app/api/auth/refresh/route_client-reference-manifest.js +1 -1
  17. package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/server/app/api/auth/status/route_client-reference-manifest.js +1 -1
  18. package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/server/app/api/domains/[id]/route_client-reference-manifest.js +1 -1
  19. package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/server/app/api/domains/route_client-reference-manifest.js +1 -1
  20. package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/server/app/api/health/route_client-reference-manifest.js +1 -1
  21. package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/server/app/api/learnings/route_client-reference-manifest.js +1 -1
  22. package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/server/app/api/logs/stream/route_client-reference-manifest.js +1 -1
  23. package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/server/app/api/orchestrator/tasks/[taskId]/cancel/route_client-reference-manifest.js +1 -1
  24. package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/server/app/api/orchestrator/tasks/[taskId]/signal/route_client-reference-manifest.js +1 -1
  25. package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/server/app/api/orchestrator/tasks/[taskId]/start/route_client-reference-manifest.js +1 -1
  26. package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/server/app/api/orchestrator/tasks/[taskId]/status/route_client-reference-manifest.js +1 -1
  27. package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/server/app/api/projects/[id]/route_client-reference-manifest.js +1 -1
  28. package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/server/app/api/projects/route_client-reference-manifest.js +1 -1
  29. package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/server/app/api/providers/route_client-reference-manifest.js +1 -1
  30. package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/server/app/api/queue/complete/route_client-reference-manifest.js +1 -1
  31. package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/server/app/api/queue/route_client-reference-manifest.js +1 -1
  32. package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/server/app/api/stage-prompts/route_client-reference-manifest.js +1 -1
  33. package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/server/app/api/tasks/[id]/comments/[commentId]/route_client-reference-manifest.js +1 -1
  34. package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/server/app/api/tasks/[id]/comments/route_client-reference-manifest.js +1 -1
  35. package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/server/app/api/tasks/[id]/costs/route.js +1 -0
  36. package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/server/app/api/tasks/[id]/costs/route.js.nft.json +1 -0
  37. package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/server/app/api/tasks/[id]/costs/route_client-reference-manifest.js +1 -0
  38. package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/server/app/api/tasks/[id]/dependencies/route.js +1 -0
  39. package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/server/app/api/tasks/[id]/dependencies/route.js.nft.json +1 -0
  40. package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/server/app/api/tasks/[id]/dependencies/route_client-reference-manifest.js +1 -0
  41. package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/server/app/api/tasks/[id]/heartbeat/route_client-reference-manifest.js +1 -1
  42. package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/server/app/api/tasks/[id]/history/route_client-reference-manifest.js +1 -1
  43. package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/server/app/api/tasks/[id]/logs/route_client-reference-manifest.js +1 -1
  44. package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/server/app/api/tasks/[id]/restart-stage/route_client-reference-manifest.js +1 -1
  45. package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/server/app/api/tasks/[id]/route_client-reference-manifest.js +1 -1
  46. package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/server/app/api/tasks/route_client-reference-manifest.js +1 -1
  47. package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/server/app/api/tasks/stream/route_client-reference-manifest.js +1 -1
  48. package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/server/app/api/user-settings/route_client-reference-manifest.js +1 -1
  49. package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/server/app/api/workflows/[id]/nodes/route_client-reference-manifest.js +1 -1
  50. package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/server/app/api/workflows/[id]/route_client-reference-manifest.js +1 -1
  51. package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/server/app/api/workflows/route_client-reference-manifest.js +1 -1
  52. package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/server/app/auth/callback/route_client-reference-manifest.js +1 -1
  53. package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/server/app/auth/device/page.js +5 -5
  54. package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/server/app/auth/device/page_client-reference-manifest.js +1 -1
  55. package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/server/app/auth/device.html +1 -1
  56. package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/server/app/auth/device.rsc +2 -2
  57. package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/server/app/dashboard/page.js +2 -2
  58. package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/server/app/dashboard/page.js.nft.json +1 -1
  59. package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/server/app/dashboard/page_client-reference-manifest.js +1 -1
  60. package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/server/app/dashboard.html +2 -2
  61. package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/server/app/dashboard.rsc +2 -2
  62. package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/server/app/index.html +2 -2
  63. package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/server/app/index.rsc +1 -1
  64. package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/server/app/login/page.js +1 -1
  65. package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/server/app/login/page_client-reference-manifest.js +1 -1
  66. package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/server/app/login.html +2 -2
  67. package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/server/app/login.rsc +1 -1
  68. package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/server/app/page.js +1 -1
  69. package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/server/app/page_client-reference-manifest.js +1 -1
  70. package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/server/app/projects/[slug]/page.js +2 -2
  71. package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/server/app/projects/[slug]/page.js.nft.json +1 -1
  72. package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/server/app/projects/[slug]/page_client-reference-manifest.js +1 -1
  73. package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/server/app/projects/[slug]/tasks/page.js +2 -2
  74. package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/server/app/projects/[slug]/tasks/page.js.nft.json +1 -1
  75. package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/server/app/projects/[slug]/tasks/page_client-reference-manifest.js +1 -1
  76. package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/server/app/projects/[slug]/workflow/page.js +1 -1
  77. package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/server/app/projects/[slug]/workflow/page_client-reference-manifest.js +1 -1
  78. package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/server/app/projects/page_client-reference-manifest.js +1 -1
  79. package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/server/app/projects.html +2 -2
  80. package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/server/app/projects.rsc +1 -1
  81. package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/server/app/settings/page.js +1 -1
  82. package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/server/app/settings/page_client-reference-manifest.js +1 -1
  83. package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/server/app/settings.html +2 -2
  84. package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/server/app/settings.rsc +1 -1
  85. package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/server/app-paths-manifest.json +12 -10
  86. package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/server/chunks/4269.js +23 -0
  87. package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/server/chunks/6158.js +1 -1
  88. package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/server/chunks/6317.js +2 -2
  89. package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/server/chunks/7143.js +1 -1
  90. package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/server/middleware-manifest.json +5 -5
  91. package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/server/pages/404.html +1 -1
  92. package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/server/pages/500.html +1 -1
  93. package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/server/server-reference-manifest.js +1 -1
  94. package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/server/server-reference-manifest.json +1 -1
  95. package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/static/chunks/3424-b2ffdccf784b0ce5.js +1 -0
  96. package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/static/chunks/app/api/audit/route-04c3c3cacd67004b.js +1 -0
  97. package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/static/chunks/app/api/auth/[...nextauth]/route-04c3c3cacd67004b.js +1 -0
  98. package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/static/chunks/app/api/auth/daemon-secret/route-04c3c3cacd67004b.js +1 -0
  99. package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/static/chunks/app/api/auth/device/code/route-04c3c3cacd67004b.js +1 -0
  100. package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/static/chunks/app/api/auth/device/token/route-04c3c3cacd67004b.js +1 -0
  101. package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/static/chunks/app/api/auth/refresh/route-04c3c3cacd67004b.js +1 -0
  102. package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/static/chunks/app/api/auth/status/route-04c3c3cacd67004b.js +1 -0
  103. package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/static/chunks/app/api/domains/[id]/route-04c3c3cacd67004b.js +1 -0
  104. package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/static/chunks/app/api/domains/route-04c3c3cacd67004b.js +1 -0
  105. package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/static/chunks/app/api/health/route-04c3c3cacd67004b.js +1 -0
  106. package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/static/chunks/app/api/learnings/route-04c3c3cacd67004b.js +1 -0
  107. package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/static/chunks/app/api/logs/stream/route-04c3c3cacd67004b.js +1 -0
  108. package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/static/chunks/app/api/orchestrator/tasks/[taskId]/cancel/route-04c3c3cacd67004b.js +1 -0
  109. package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/static/chunks/app/api/orchestrator/tasks/[taskId]/signal/route-04c3c3cacd67004b.js +1 -0
  110. package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/static/chunks/app/api/orchestrator/tasks/[taskId]/start/route-04c3c3cacd67004b.js +1 -0
  111. package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/static/chunks/app/api/orchestrator/tasks/[taskId]/status/route-04c3c3cacd67004b.js +1 -0
  112. package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/static/chunks/app/api/projects/[id]/route-04c3c3cacd67004b.js +1 -0
  113. package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/static/chunks/app/api/projects/route-04c3c3cacd67004b.js +1 -0
  114. package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/static/chunks/app/api/providers/route-04c3c3cacd67004b.js +1 -0
  115. package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/static/chunks/app/api/queue/complete/route-04c3c3cacd67004b.js +1 -0
  116. package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/static/chunks/app/api/queue/route-04c3c3cacd67004b.js +1 -0
  117. package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/static/chunks/app/api/stage-prompts/route-04c3c3cacd67004b.js +1 -0
  118. package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/static/chunks/app/api/tasks/[id]/comments/[commentId]/route-04c3c3cacd67004b.js +1 -0
  119. package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/static/chunks/app/api/tasks/[id]/comments/route-04c3c3cacd67004b.js +1 -0
  120. package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/static/chunks/app/api/tasks/[id]/costs/route-04c3c3cacd67004b.js +1 -0
  121. package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/static/chunks/app/api/tasks/[id]/dependencies/route-04c3c3cacd67004b.js +1 -0
  122. package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/static/chunks/app/api/tasks/[id]/heartbeat/route-04c3c3cacd67004b.js +1 -0
  123. package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/static/chunks/app/api/tasks/[id]/history/route-04c3c3cacd67004b.js +1 -0
  124. package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/static/chunks/app/api/tasks/[id]/logs/route-04c3c3cacd67004b.js +1 -0
  125. package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/static/chunks/app/api/tasks/[id]/restart-stage/route-04c3c3cacd67004b.js +1 -0
  126. package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/static/chunks/app/api/tasks/[id]/route-04c3c3cacd67004b.js +1 -0
  127. package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/static/chunks/app/api/tasks/route-04c3c3cacd67004b.js +1 -0
  128. package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/static/chunks/app/api/tasks/stream/route-04c3c3cacd67004b.js +1 -0
  129. package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/static/chunks/app/api/user-settings/route-04c3c3cacd67004b.js +1 -0
  130. package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/static/chunks/app/api/workflows/[id]/nodes/route-04c3c3cacd67004b.js +1 -0
  131. package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/static/chunks/app/api/workflows/[id]/route-04c3c3cacd67004b.js +1 -0
  132. package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/static/chunks/app/api/workflows/route-04c3c3cacd67004b.js +1 -0
  133. package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/static/chunks/app/auth/callback/route-04c3c3cacd67004b.js +1 -0
  134. package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/static/chunks/app/auth/device/{page-903c045ac7fbfd1c.js → page-1c6069a7a4dd058d.js} +1 -1
  135. package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/static/chunks/app/dashboard/{page-ea6ccecbfa743b53.js → page-445516e005034dd0.js} +1 -1
  136. package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/static/chunks/app/projects/[slug]/{page-7357b68f3783a0b4.js → page-f1c8a838c838b996.js} +1 -1
  137. package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/static/chunks/app/projects/[slug]/tasks/{page-ec17b64371f48524.js → page-c76247052ae5aa25.js} +1 -1
  138. package/cloud-runtime/standalone/Projects/Agents/agx-cloud/worker/index.js +50 -14
  139. package/lib/cli/runCli.js +90 -12
  140. package/lib/executor.js +5 -0
  141. package/lib/telemetry.js +109 -0
  142. package/package.json +3 -2
  143. package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/server/chunks/2298.js +0 -23
  144. package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/static/chunks/2456-972d3e5278eb4a3a.js +0 -1
  145. package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/static/chunks/app/api/audit/route-13be4cfc17a5f679.js +0 -1
  146. package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/static/chunks/app/api/auth/[...nextauth]/route-13be4cfc17a5f679.js +0 -1
  147. package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/static/chunks/app/api/auth/daemon-secret/route-13be4cfc17a5f679.js +0 -1
  148. package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/static/chunks/app/api/auth/device/code/route-13be4cfc17a5f679.js +0 -1
  149. package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/static/chunks/app/api/auth/device/token/route-13be4cfc17a5f679.js +0 -1
  150. package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/static/chunks/app/api/auth/refresh/route-13be4cfc17a5f679.js +0 -1
  151. package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/static/chunks/app/api/auth/status/route-13be4cfc17a5f679.js +0 -1
  152. package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/static/chunks/app/api/domains/[id]/route-13be4cfc17a5f679.js +0 -1
  153. package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/static/chunks/app/api/domains/route-13be4cfc17a5f679.js +0 -1
  154. package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/static/chunks/app/api/health/route-13be4cfc17a5f679.js +0 -1
  155. package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/static/chunks/app/api/learnings/route-13be4cfc17a5f679.js +0 -1
  156. package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/static/chunks/app/api/logs/stream/route-13be4cfc17a5f679.js +0 -1
  157. package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/static/chunks/app/api/orchestrator/tasks/[taskId]/cancel/route-13be4cfc17a5f679.js +0 -1
  158. package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/static/chunks/app/api/orchestrator/tasks/[taskId]/signal/route-13be4cfc17a5f679.js +0 -1
  159. package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/static/chunks/app/api/orchestrator/tasks/[taskId]/start/route-13be4cfc17a5f679.js +0 -1
  160. package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/static/chunks/app/api/orchestrator/tasks/[taskId]/status/route-13be4cfc17a5f679.js +0 -1
  161. package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/static/chunks/app/api/projects/[id]/route-13be4cfc17a5f679.js +0 -1
  162. package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/static/chunks/app/api/projects/route-13be4cfc17a5f679.js +0 -1
  163. package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/static/chunks/app/api/providers/route-13be4cfc17a5f679.js +0 -1
  164. package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/static/chunks/app/api/queue/complete/route-13be4cfc17a5f679.js +0 -1
  165. package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/static/chunks/app/api/queue/route-13be4cfc17a5f679.js +0 -1
  166. package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/static/chunks/app/api/stage-prompts/route-13be4cfc17a5f679.js +0 -1
  167. package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/static/chunks/app/api/tasks/[id]/comments/[commentId]/route-13be4cfc17a5f679.js +0 -1
  168. package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/static/chunks/app/api/tasks/[id]/comments/route-13be4cfc17a5f679.js +0 -1
  169. package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/static/chunks/app/api/tasks/[id]/heartbeat/route-13be4cfc17a5f679.js +0 -1
  170. package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/static/chunks/app/api/tasks/[id]/history/route-13be4cfc17a5f679.js +0 -1
  171. package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/static/chunks/app/api/tasks/[id]/logs/route-13be4cfc17a5f679.js +0 -1
  172. package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/static/chunks/app/api/tasks/[id]/restart-stage/route-13be4cfc17a5f679.js +0 -1
  173. package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/static/chunks/app/api/tasks/[id]/route-13be4cfc17a5f679.js +0 -1
  174. package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/static/chunks/app/api/tasks/route-13be4cfc17a5f679.js +0 -1
  175. package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/static/chunks/app/api/tasks/stream/route-13be4cfc17a5f679.js +0 -1
  176. package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/static/chunks/app/api/user-settings/route-13be4cfc17a5f679.js +0 -1
  177. package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/static/chunks/app/api/workflows/[id]/nodes/route-13be4cfc17a5f679.js +0 -1
  178. package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/static/chunks/app/api/workflows/[id]/route-13be4cfc17a5f679.js +0 -1
  179. package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/static/chunks/app/api/workflows/route-13be4cfc17a5f679.js +0 -1
  180. package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/static/chunks/app/auth/callback/route-13be4cfc17a5f679.js +0 -1
  181. /package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/static/{24myOUbvbiDvyX6evcbZU → x2zqTGbGGK8nA-dlhcQDx}/_buildManifest.js +0 -0
  182. /package/cloud-runtime/standalone/Projects/Agents/agx-cloud/.next/static/{24myOUbvbiDvyX6evcbZU → x2zqTGbGGK8nA-dlhcQDx}/_ssgManifest.js +0 -0
package/lib/cli/runCli.js CHANGED
@@ -375,6 +375,9 @@ async function checkOnboarding() {
375
375
  return true;
376
376
  }
377
377
 
378
+ // Show telemetry notice on first run
379
+ require('../telemetry').showNoticeIfFirstRun();
380
+
378
381
  // ============================================================
379
382
  // CLOUD STATE HELPERS
380
383
  // ============================================================
@@ -495,6 +498,7 @@ async function checkOnboarding() {
495
498
 
496
499
  const url = `${config.apiUrl}${endpoint}`;
497
500
  logExecutionFlow('cloudRequest', 'processing', `url=${url}`);
501
+ const apiStart = Date.now();
498
502
  try {
499
503
  const makeRequest = async (cfg) => {
500
504
  const options = {
@@ -518,6 +522,7 @@ async function checkOnboarding() {
518
522
  let { response, data } = await makeRequest(activeConfig);
519
523
 
520
524
  if (response.status === 401) {
525
+ require('../telemetry').track('api_call_retry', { method, endpoint });
521
526
  const refreshedConfig = await tryRefreshCloudToken(activeConfig);
522
527
  if (refreshedConfig?.token) {
523
528
  activeConfig = refreshedConfig;
@@ -530,9 +535,11 @@ async function checkOnboarding() {
530
535
  throw new Error(data?.error || `HTTP ${response.status}`);
531
536
  }
532
537
  logExecutionFlow('cloudRequest', 'output', `status=${response.status}`);
538
+ require('../telemetry').track('api_call', { method, endpoint, status: response.status, duration_ms: Date.now() - apiStart });
533
539
  return data;
534
540
  } catch (err) {
535
541
  logExecutionFlow('cloudRequest', 'output', `exception ${err?.message || err}`);
542
+ require('../telemetry').track('api_call_error', { method, endpoint, error: err.message, duration_ms: Date.now() - apiStart });
536
543
  throw err;
537
544
  }
538
545
  }
@@ -790,6 +797,7 @@ async function checkOnboarding() {
790
797
  let lastRun = null;
791
798
  let runIndexEntry = null;
792
799
 
800
+ const taskStart = Date.now();
793
801
  logger.log('system', `[daemon] picked task ${taskId} (${task?.stage || 'unknown'})\n`);
794
802
  console.log(`${c.dim}[daemon] picked ${taskId} (${task?.stage || 'unknown'}) via ${provider}${model ? `/${model}` : ''}${c.reset}`);
795
803
 
@@ -976,6 +984,7 @@ async function checkOnboarding() {
976
984
  };
977
985
  console.error(`[daemon] execution failed:`, err?.stack || message);
978
986
  logger.log('error', `[daemon] execution failed: ${message}\n${err?.stack || ''}\n`);
987
+ require('../telemetry').track('task_failed', { engine: provider, model, error: message, duration_ms: Date.now() - taskStart });
979
988
  } finally {
980
989
  await logger.flushAll();
981
990
  try { cancellationWatcher?.destroy?.(); } catch { }
@@ -1007,6 +1016,8 @@ async function checkOnboarding() {
1007
1016
  ...(runIndexEntry ? { run_entry: runIndexEntry } : {}),
1008
1017
  });
1009
1018
 
1019
+ require('../telemetry').track('task_completed', { engine: provider, model, decision: decisionPayload.decision, duration_ms: Date.now() - taskStart });
1020
+
1010
1021
  // Best-effort: ensure cloud task status is terminal when stage/decision indicates completion.
1011
1022
  // Some board runtimes advance `stage` to "done" but leave `status` as "in_progress".
1012
1023
  try {
@@ -1085,6 +1096,7 @@ async function checkOnboarding() {
1085
1096
  const queue = await cloudRequest('GET', '/api/queue');
1086
1097
  task = queue?.task || null;
1087
1098
  } catch (err) {
1099
+ require('../telemetry').track('daemon_poll_error', { error: err?.message || String(err) });
1088
1100
  console.error(`${c.red}[daemon][${workerLabel}] queue poll failed:${c.reset} ${err?.message || err}`);
1089
1101
  if (!stopping) await sleep(pollMs);
1090
1102
  continue;
@@ -1173,12 +1185,29 @@ async function checkOnboarding() {
1173
1185
  // ============================================================
1174
1186
 
1175
1187
  // Provider aliases for convenience
1176
- const PROVIDER_ALIASES = {
1177
- 'c': 'claude', 'cl': 'claude', 'claude': 'claude',
1178
- 'x': 'codex', 'codex': 'codex',
1179
- 'g': 'gemini', 'gem': 'gemini', 'gemini': 'gemini',
1180
- 'o': 'ollama', 'ol': 'ollama', 'ollama': 'ollama'
1181
- };
1188
+ const PROVIDER_ALIASES = {
1189
+ 'c': 'claude', 'cl': 'claude', 'claude': 'claude',
1190
+ 'x': 'codex', 'codex': 'codex',
1191
+ 'g': 'gemini', 'gem': 'gemini', 'gemini': 'gemini',
1192
+ 'o': 'ollama', 'ol': 'ollama', 'ollama': 'ollama'
1193
+ };
1194
+
1195
+ function collectFlagValues(args, flag) {
1196
+ const values = [];
1197
+ const consumedIndices = new Set();
1198
+ for (let i = 0; i < args.length; i += 1) {
1199
+ if (args[i] === flag) {
1200
+ consumedIndices.add(i);
1201
+ const next = args[i + 1];
1202
+ if (typeof next === 'string' && next.length) {
1203
+ values.push(next);
1204
+ consumedIndices.add(i + 1);
1205
+ }
1206
+ i += 1;
1207
+ }
1208
+ }
1209
+ return { values, consumedIndices };
1210
+ }
1182
1211
 
1183
1212
  // ============================================================
1184
1213
  // LOCAL-FIRST CLI COMMANDS
@@ -1203,6 +1232,7 @@ async function checkOnboarding() {
1203
1232
  if (cmd === 'new') {
1204
1233
  const jsonMode = args.includes('--json');
1205
1234
  const runAfter = args.includes('--run') || args.includes('-r');
1235
+ const { values: dependsOnValues, consumedIndices: dependsOnSkipIndices } = collectFlagValues(args, '--depends-on');
1206
1236
 
1207
1237
  // Parse --provider / -P flag and resolve alias
1208
1238
  let provider = null;
@@ -1269,6 +1299,9 @@ async function checkOnboarding() {
1269
1299
  const flagsToRemove = ['--json', '--run', '-r', '--provider', '-P', '--model', '-m', '--project', '--type', '--ticket-type'];
1270
1300
  const goalParts = [];
1271
1301
  for (let i = 1; i < args.length; i++) {
1302
+ if (dependsOnSkipIndices.has(i)) {
1303
+ continue;
1304
+ }
1272
1305
  if (flagsToRemove.includes(args[i])) {
1273
1306
  if (args[i] === '--provider' || args[i] === '-P') i++;
1274
1307
  if (args[i] === '--model' || args[i] === '-m') i++;
@@ -1282,9 +1315,9 @@ async function checkOnboarding() {
1282
1315
 
1283
1316
  if (!goalText) {
1284
1317
  if (jsonMode) {
1285
- console.log(JSON.stringify({ error: 'missing_goal', usage: 'agx new "<goal>" [--provider c] [--project <slug>] [--type spike|task] [--run]' }));
1318
+ console.log(JSON.stringify({ error: 'missing_goal', usage: 'agx new "<goal>" [--provider c] [--project <slug>] [--type spike|task] [--run] [--depends-on <task-id>]' }));
1286
1319
  } else {
1287
- console.log(`${c.red}Usage:${c.reset} agx new "<goal>" [--provider c|g|o|x] [--project <slug>] [--type spike|task] [--run]`);
1320
+ console.log(`${c.red}Usage:${c.reset} agx new "<goal>" [--provider c|g|o|x] [--project <slug>] [--type spike|task] [--run] [--depends-on <task-id>]`);
1288
1321
  }
1289
1322
  process.exit(1);
1290
1323
  }
@@ -1318,8 +1351,13 @@ async function checkOnboarding() {
1318
1351
 
1319
1352
  const content = `---\n${frontmatter.join('\n')}\n---\n\n# ${goalText}\n`;
1320
1353
 
1321
- const { task } = await cloudRequest('POST', '/api/tasks', { content });
1354
+ const payload = { content };
1355
+ if (dependsOnValues.length) {
1356
+ payload.depends_on = dependsOnValues;
1357
+ }
1358
+ const { task } = await cloudRequest('POST', '/api/tasks', payload);
1322
1359
  console.log(`${c.green}✓${c.reset} Task created in cloud`);
1360
+ require('../telemetry').track('task_created', { engine: provider, model: model || null });
1323
1361
  if (task?.id) {
1324
1362
  console.log(`${c.dim}Task ID: ${task.id}${c.reset}`);
1325
1363
  if (task.slug) {
@@ -1473,10 +1511,15 @@ async function checkOnboarding() {
1473
1511
  process.exit(1);
1474
1512
  }
1475
1513
 
1514
+ const { values: dependsOnValues, consumedIndices: dependsOnSkipIndices } = collectFlagValues(args, '--depends-on');
1515
+
1476
1516
  // Parse flags
1477
1517
  let projectSlug = null, projectId = null, priority = null, engine = null, provider = null, model = null, ticketType = null, createdBy = 'user';
1478
1518
  const taskParts = [];
1479
1519
  for (let i = 1; i < args.length; i++) {
1520
+ if (dependsOnSkipIndices.has(i)) {
1521
+ continue;
1522
+ }
1480
1523
  if (args[i] === '--project' || args[i] === '-p') {
1481
1524
  projectSlug = args[++i];
1482
1525
  } else if (args[i] === '--project-slug') {
@@ -1502,7 +1545,7 @@ async function checkOnboarding() {
1502
1545
 
1503
1546
  const taskDesc = taskParts.join(' ');
1504
1547
  if (!taskDesc) {
1505
- console.log(`${c.yellow}Usage:${c.reset} agx new "<task>" [--project <slug>] [--project-slug <slug>] [--project-id <uuid>] [--priority n] [--engine claude|gemini|ollama|codex] [--type spike|task]`);
1548
+ console.log(`${c.yellow}Usage:${c.reset} agx new "<task>" [--project <slug>] [--project-slug <slug>] [--project-id <uuid>] [--priority n] [--engine claude|gemini|ollama|codex] [--type spike|task] [--depends-on <task-id>]`);
1506
1549
  process.exit(1);
1507
1550
  }
1508
1551
 
@@ -1532,7 +1575,11 @@ async function checkOnboarding() {
1532
1575
  const content = `---\n${frontmatter.join('\n')}\n---\n\n# ${taskDesc}\n`;
1533
1576
 
1534
1577
  try {
1535
- const { task } = await cloudRequest('POST', '/api/tasks', { content });
1578
+ const payload = { content };
1579
+ if (dependsOnValues.length) {
1580
+ payload.depends_on = dependsOnValues;
1581
+ }
1582
+ const { task } = await cloudRequest('POST', '/api/tasks', payload);
1536
1583
  console.log(`${c.green}✓${c.reset} Task created`);
1537
1584
  console.log(` ID: ${task.id}`);
1538
1585
  if (task.slug) {
@@ -2685,6 +2732,28 @@ async function checkOnboarding() {
2685
2732
  process.exit(0);
2686
2733
  }
2687
2734
 
2735
+ // ============================================================
2736
+ // agx telemetry - Manage anonymous usage telemetry
2737
+ // ============================================================
2738
+ if (cmd === 'telemetry') {
2739
+ const telemetry = require('../telemetry');
2740
+ const subCmd = args[1];
2741
+ if (subCmd === 'on') {
2742
+ telemetry.setEnabled(true);
2743
+ console.log(`${c.green}✓${c.reset} Telemetry enabled`);
2744
+ } else if (subCmd === 'off') {
2745
+ telemetry.setEnabled(false);
2746
+ console.log(`${c.green}✓${c.reset} Telemetry disabled`);
2747
+ } else {
2748
+ console.log(`${c.bold}agx telemetry${c.reset} — anonymous usage analytics\n`);
2749
+ console.log(` Status: ${telemetry.getStatus() === 'enabled' ? `${c.green}enabled${c.reset}` : `${c.dim}disabled${c.reset}`}`);
2750
+ console.log(`\n agx telemetry on Enable telemetry`);
2751
+ console.log(` agx telemetry off Disable telemetry`);
2752
+ console.log(`\n ${c.dim}Override with AGX_TELEMETRY=0${c.reset}`);
2753
+ }
2754
+ process.exit(0);
2755
+ }
2756
+
2688
2757
  // First run detection — skip for non-interactive/daemon contexts
2689
2758
  const config = loadConfig();
2690
2759
  const isNonInteractive = args.includes('--print') || args.includes('--cloud-task') || args.some(a => a.startsWith('--cloud-task'));
@@ -2701,11 +2770,13 @@ async function checkOnboarding() {
2701
2770
  async function runCli(argv = process.argv) {
2702
2771
  const originalArgv = process.argv;
2703
2772
  if (Array.isArray(argv)) process.argv = argv;
2773
+ const telemetry = require('../telemetry');
2704
2774
  try {
2705
2775
  if (await checkOnboarding()) return;
2706
2776
 
2707
2777
  const args = process.argv.slice(2);
2708
2778
  let provider = args[0];
2779
+ telemetry.track('cli_command', { command: args[0] || 'default', subcommand: args[1] || null });
2709
2780
  const config = loadConfig();
2710
2781
 
2711
2782
  // Normalize provider aliases
@@ -2793,7 +2864,11 @@ EXAMPLES:
2793
2864
  agx claude -p "explain this" # One-shot question
2794
2865
  agx codex -p "refactor this" # One-shot question
2795
2866
  agx task ls # Check cloud tasks
2796
- agx container logs # See what's happening`);
2867
+ agx container logs # See what's happening
2868
+
2869
+ TELEMETRY:
2870
+ agx telemetry Show telemetry status
2871
+ agx telemetry on/off Enable/disable anonymous usage data`);
2797
2872
  process.exit(0);
2798
2873
  }
2799
2874
 
@@ -3257,6 +3332,7 @@ EXAMPLES:
3257
3332
  }
3258
3333
 
3259
3334
  childProc.on('exit', (code) => {
3335
+ require('../telemetry').track('agent_exit', { engine: provider, exit_code: code });
3260
3336
  process.exit(code || 0);
3261
3337
  });
3262
3338
 
@@ -3277,6 +3353,7 @@ EXAMPLES:
3277
3353
  } else {
3278
3354
  console.error(`${c.red}Failed to start ${cmd}:${c.reset}`, err.message);
3279
3355
  }
3356
+ require('../telemetry').track('agent_spawn_error', { engine: provider, error_code: err.code });
3280
3357
  process.exit(1);
3281
3358
  });
3282
3359
 
@@ -3341,6 +3418,7 @@ EXAMPLES:
3341
3418
 
3342
3419
  } finally {
3343
3420
  process.argv = originalArgv;
3421
+ await telemetry.shutdown();
3344
3422
  }
3345
3423
  }
3346
3424
 
package/lib/executor.js CHANGED
@@ -133,6 +133,7 @@ async function executeTask(options) {
133
133
  fs.mkdirSync(workDir, { recursive: true });
134
134
  }
135
135
 
136
+ const execStart = Date.now();
136
137
  onLog?.(`[${engine}] Starting ${stage} stage...`);
137
138
  onProgress?.(10);
138
139
 
@@ -197,6 +198,7 @@ async function executeTask(options) {
197
198
 
198
199
  proc.on('error', (err) => {
199
200
  clearStageTimeout();
201
+ require('./telemetry').track('executor_spawn_error', { engine, error: err.message });
200
202
  settle(reject)(new Error(`Failed to spawn ${engine}: ${err.message}`));
201
203
  });
202
204
 
@@ -206,6 +208,7 @@ async function executeTask(options) {
206
208
 
207
209
  if (code === 0 || code === null) {
208
210
  onLog?.(`[${engine}] Stage completed successfully`);
211
+ require('./telemetry').track('executor_completed', { engine, stage, duration_ms: Date.now() - execStart });
209
212
  settle(resolve)({
210
213
  success: true,
211
214
  output,
@@ -214,6 +217,7 @@ async function executeTask(options) {
214
217
  });
215
218
  } else {
216
219
  onLog?.(`[${engine}] Stage failed with exit code ${code}`);
220
+ require('./telemetry').track('executor_failed', { engine, stage, exit_code: code, duration_ms: Date.now() - execStart });
217
221
  settle(reject)(new Error(`${engine} exited with code ${code}`));
218
222
  }
219
223
  });
@@ -221,6 +225,7 @@ async function executeTask(options) {
221
225
  // Set a timeout for the process (30 minutes max per stage)
222
226
  timeout = setTimeout(() => {
223
227
  try { proc.kill('SIGTERM'); } catch { /* ignore */ }
228
+ require('./telemetry').track('executor_timeout', { engine, stage });
224
229
  settle(reject)(new Error(`Stage timed out after 30 minutes`));
225
230
  }, 30 * 60 * 1000);
226
231
  timeout.unref?.();
@@ -0,0 +1,109 @@
1
+ 'use strict';
2
+
3
+ const fs = require('fs');
4
+ const os = require('os');
5
+ const path = require('path');
6
+ const crypto = require('crypto');
7
+
8
+ const CONFIG_DIR = path.join(process.env.HOME || process.env.USERPROFILE || '', '.agx');
9
+ const CONFIG_FILE = path.join(CONFIG_DIR, 'config.json');
10
+ const POSTHOG_KEY = 'phc_oBf1haYu4HKjYmUZpthQ4cUf9O3UKkDSOX675M7dRWW';
11
+ const POSTHOG_HOST = 'https://us.i.posthog.com';
12
+
13
+ let client = null;
14
+ let distinctId = null;
15
+
16
+ function loadConfig() {
17
+ try {
18
+ if (fs.existsSync(CONFIG_FILE)) {
19
+ return JSON.parse(fs.readFileSync(CONFIG_FILE, 'utf8'));
20
+ }
21
+ } catch { }
22
+ return null;
23
+ }
24
+
25
+ function saveConfig(config) {
26
+ if (!fs.existsSync(CONFIG_DIR)) {
27
+ fs.mkdirSync(CONFIG_DIR, { recursive: true });
28
+ }
29
+ fs.writeFileSync(CONFIG_FILE, JSON.stringify(config, null, 2));
30
+ }
31
+
32
+ function isEnabled() {
33
+ if (process.env.AGX_TELEMETRY === '0') return false;
34
+ const config = loadConfig();
35
+ if (config?.telemetry?.enabled === false) return false;
36
+ return true;
37
+ }
38
+
39
+ function getAnonymousId() {
40
+ if (distinctId) return distinctId;
41
+ const config = loadConfig() || {};
42
+ if (config.telemetry?.anonymousId) {
43
+ distinctId = config.telemetry.anonymousId;
44
+ return distinctId;
45
+ }
46
+ distinctId = crypto.randomUUID();
47
+ config.telemetry = { ...config.telemetry, anonymousId: distinctId };
48
+ saveConfig(config);
49
+ return distinctId;
50
+ }
51
+
52
+ function getClient() {
53
+ if (client) return client;
54
+ if (!isEnabled()) return null;
55
+ try {
56
+ const { PostHog } = require('posthog-node');
57
+ client = new PostHog(POSTHOG_KEY, { host: POSTHOG_HOST, flushAt: 1, flushInterval: 0 });
58
+ return client;
59
+ } catch {
60
+ return null;
61
+ }
62
+ }
63
+
64
+ function track(event, properties = {}) {
65
+ const ph = getClient();
66
+ if (!ph) return;
67
+ try {
68
+ const version = (() => { try { return require('../package.json').version; } catch { return 'unknown'; } })();
69
+ ph.capture({
70
+ distinctId: getAnonymousId(),
71
+ event,
72
+ properties: {
73
+ os: os.platform(),
74
+ arch: os.arch(),
75
+ node_version: process.version,
76
+ agx_version: version,
77
+ ...properties,
78
+ },
79
+ });
80
+ } catch { }
81
+ }
82
+
83
+ async function shutdown() {
84
+ if (client) {
85
+ try { await client.shutdown(); } catch { }
86
+ client = null;
87
+ }
88
+ }
89
+
90
+ function setEnabled(enabled) {
91
+ const config = loadConfig() || {};
92
+ config.telemetry = { ...config.telemetry, enabled };
93
+ saveConfig(config);
94
+ }
95
+
96
+ function getStatus() {
97
+ return isEnabled() ? 'enabled' : 'disabled';
98
+ }
99
+
100
+ function showNoticeIfFirstRun() {
101
+ const config = loadConfig() || {};
102
+ if (config.telemetry?.noticeSeen) return;
103
+ console.log('\n \x1b[2magx collects anonymous usage data to improve the tool.\x1b[0m');
104
+ console.log(' \x1b[2mRun \x1b[0magx telemetry off\x1b[2m to disable.\x1b[0m\n');
105
+ config.telemetry = { ...config.telemetry, noticeSeen: true };
106
+ saveConfig(config);
107
+ }
108
+
109
+ module.exports = { track, shutdown, isEnabled, setEnabled, getStatus, showNoticeIfFirstRun };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@mndrk/agx",
3
- "version": "1.4.59",
3
+ "version": "1.4.61",
4
4
  "description": "Autonomous AI Agent Orchestrator for Claude, Gemini, and Ollama",
5
5
  "main": "lib/index.js",
6
6
  "exports": {
@@ -49,7 +49,8 @@
49
49
  "eventsource": "^4.1.0",
50
50
  "execa": "^5.1.1",
51
51
  "p-map": "^7.0.4",
52
- "p-retry": "^7.1.1"
52
+ "p-retry": "^7.1.1",
53
+ "posthog-node": "^4.18.0"
53
54
  },
54
55
  "devDependencies": {
55
56
  "esbuild": "^0.25.0",
@@ -1,23 +0,0 @@
1
- "use strict";exports.id=2298,exports.ids=[2298],exports.modules={5600:(a,b,c)=>{c.d(b,{A:()=>I});var d=c(21124),e=c(38301),f=c(94195);function g({comments:a,onAddComment:b,onDeleteComment:c}){let[f,g]=(0,e.useState)(""),[h,i]=(0,e.useState)(!1),[j,k]=(0,e.useState)(!1),[l,m]=(0,e.useState)(null),n=async a=>{if(a.preventDefault(),f.trim()&&!j){k(!0);try{await b(f),g(""),i(!1)}finally{k(!1)}}},o=async a=>{if(c&&!l&&confirm("Are you sure you want to delete this comment?")){m(a);try{await c(a)}catch(a){console.error("Failed to delete comment:",a)}finally{m(null)}}};return(0,d.jsxs)("div",{className:"space-y-4",children:[h?(0,d.jsxs)("form",{onSubmit:n,className:"space-y-3 animate-fade-in-up",children:[(0,d.jsx)("textarea",{value:f,onChange:a=>g(a.target.value),placeholder:"Add context, decisions, or guidance...",className:"input resize-none h-24 focus:ring-2 focus:ring-[var(--primary)]/20",autoFocus:!0,disabled:j}),(0,d.jsxs)("div",{className:"flex gap-2",children:[(0,d.jsx)("button",{type:"submit",disabled:!f.trim()||j,className:"btn-primary px-4 py-2 flex items-center gap-2",children:j?(0,d.jsxs)(d.Fragment,{children:[(0,d.jsx)("span",{className:"spinner w-4 h-4 border-2 border-white/20 border-t-white"}),"Adding..."]}):"Add Comment"}),(0,d.jsx)("button",{type:"button",onClick:()=>{i(!1),g("")},disabled:j,className:"btn-ghost px-4 py-2",children:"Cancel"})]})]}):(0,d.jsx)("button",{onClick:()=>i(!0),className:"w-full py-3 border-2 border-dashed border-[var(--card-border)] rounded-xl text-[var(--muted-foreground)] hover:text-[var(--foreground)] hover:border-[var(--primary)] hover:bg-[var(--primary-muted)] transition-all duration-200 text-sm font-medium focus-visible:outline-2 focus-visible:outline-[var(--ring)] focus-visible:outline-offset-2",children:(0,d.jsxs)("span",{className:"flex items-center justify-center gap-2",children:[(0,d.jsx)("svg",{className:"w-4 h-4",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor",children:(0,d.jsx)("path",{strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:2,d:"M12 4v16m8-8H4"})}),"Add comment"]})}),0===a.length?(0,d.jsxs)("div",{className:"text-center py-12 animate-fade-in",children:[(0,d.jsx)("div",{className:"inline-flex items-center justify-center w-12 h-12 rounded-xl bg-[var(--background)] border border-[var(--card-border)] mb-3",children:(0,d.jsx)("span",{className:"text-xl opacity-50",children:"\uD83D\uDCDD"})}),(0,d.jsx)("p",{className:"text-[var(--muted-foreground)] text-sm",children:"No comments yet"}),(0,d.jsx)("p",{className:"text-[var(--muted-foreground)] text-xs mt-1",children:"Add context and guidance for this task"})]}):(0,d.jsxs)("div",{className:"relative",children:[(0,d.jsx)("div",{className:"timeline-line"}),(0,d.jsx)("div",{className:"space-y-4",children:a.map((a,b)=>(0,d.jsxs)("div",{className:"timeline-item relative pl-7 animate-fade-in-up",style:{animationDelay:`${50*b}ms`},children:[(0,d.jsx)("div",{className:"timeline-dot"}),(0,d.jsxs)("div",{className:"card p-4 hover:border-[var(--primary)]/30 group",children:[(0,d.jsxs)("div",{className:"flex items-center justify-between mb-2",children:[(0,d.jsxs)("div",{className:"flex items-center gap-2",children:[(0,d.jsx)("span",{className:"text-xs text-[var(--muted-foreground)] tabular-nums",children:new Date(a.created_at).toLocaleString("en-US",{month:"short",day:"numeric",hour:"2-digit",minute:"2-digit"})}),a.author_type&&(0,d.jsx)("span",{className:"text-[10px] uppercase tracking-wide text-[var(--muted-foreground)]",children:a.author_type})]}),c&&"user"===a.author_type&&(0,d.jsx)("button",{onClick:()=>o(a.id),disabled:l===a.id,className:"opacity-0 group-hover:opacity-100 transition-opacity text-[var(--muted-foreground)] hover:text-[var(--destructive)] p-1 rounded",title:"Delete comment",children:l===a.id?(0,d.jsx)("span",{className:"spinner w-3 h-3 border-2 border-current border-t-transparent"}):(0,d.jsx)("svg",{className:"w-3.5 h-3.5",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor",children:(0,d.jsx)("path",{strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:2,d:"M19 7l-.867 12.142A2 2 0 0116.138 21H7.862a2 2 0 01-1.995-1.858L5 7m5 4v6m4-6v6m1-10V4a1 1 0 00-1-1h-4a1 1 0 00-1 1v3M4 7h16"})})})]}),(0,d.jsx)("p",{className:"text-sm whitespace-pre-wrap leading-relaxed",children:a.content})]})]},a.id))})]})]})}var h=c(36937);let i={30:"#94a3b8",31:"#f87171",32:"#4ade80",33:"#facc15",34:"#60a5fa",35:"#c084fc",36:"#22d3ee",37:"#e2e8f0",90:"#64748b",91:"#ef4444",92:"#22c55e",93:"#eab308",94:"#3b82f6",95:"#a855f7",96:"#06b6d4",97:"#f8fafc"},j=/\u001b\[([0-9;]*)m/g,k=/(^|\s)\[((?:\d{1,3};)*\d{1,3})m(\s|$)/g;function l(a){return Math.max(0,Math.min(255,a))}function m({taskId:a,status:b}){let[c,f]=(0,e.useState)(!1),[g,m]=(0,e.useState)(!1),{output:n,isLoading:o,isStreaming:p}=(0,h.zH)(a,{enabled:c,tail:500,maxChars:2e5}),q=(0,e.useRef)(null),r=n||(o?"Loading logs...":"in_progress"===b?"Waiting for live output...":"No output yet."),s=(0,e.useMemo)(()=>c?function(a){if(!a)return[];let b=a.replace(k,(a,b,c,d)=>b&&d?" ":b||d||""),c=[],d={},e=0;for(let a of b.matchAll(j)){let f=a.index??0;if(f>e){let a=b.slice(e,f);c.push({text:a,style:Object.keys(d).length?{...d}:void 0})}d=function(a,b){let c={...a},d=(b||"0").split(";").map(a=>Number.parseInt(a,10)).filter(a=>Number.isFinite(a));for(let a=0;a<d.length;a+=1){let b=d[a];if(0===b){delete c.color,delete c.fontStyle,delete c.fontWeight,delete c.textDecoration;continue}if(1===b){c.fontWeight=700;continue}if(3===b){c.fontStyle="italic";continue}if(4===b){c.textDecoration="underline";continue}if(22===b){delete c.fontWeight;continue}if(23===b){delete c.fontStyle;continue}if(24===b){delete c.textDecoration;continue}if(39===b){delete c.color;continue}if(38===b){let b=d[a+1];if(5===b&&Number.isFinite(d[a+2]))c.color=function(a){let b=Math.max(0,Math.min(255,a));if(b<16)return i[[30,31,32,33,34,35,36,37,90,91,92,93,94,95,96,97][b]]||"#e2e8f0";if(b>=232){let a=Math.round((b-232)/23*255);return`rgb(${a}, ${a}, ${a})`}let c=b-16,d=Math.floor(c/36),e=Math.floor(c%36/6),f=a=>0===a?0:40*a+55;return`rgb(${f(d)}, ${f(e)}, ${f(c%6)})`}(d[a+2]),a+=2;else if(2===b&&Number.isFinite(d[a+2])&&Number.isFinite(d[a+3])&&Number.isFinite(d[a+4])){let b=l(d[a+2]),e=l(d[a+3]),f=l(d[a+4]);c.color=`rgb(${b}, ${e}, ${f})`,a+=4}continue}i[b]&&(c.color=i[b])}return c}(d,a[1]||"0"),e=f+a[0].length}return e<b.length&&c.push({text:b.slice(e),style:Object.keys(d).length?{...d}:void 0}),function(a){if(!a.length)return a;let b=[];for(let c of a){if(!c.text)continue;let a=b[b.length-1],d=!!a&&JSON.stringify(a.style||null)===JSON.stringify(c.style||null);a&&d?a.text+=c.text:b.push({text:c.text,style:c.style?{...c.style}:void 0})}return b}(c)}(r):[],[r,c]);return(0,d.jsxs)("div",{className:"border-t border-[var(--card-border)] pt-8",children:[(0,d.jsxs)("button",{type:"button",onClick:()=>f(a=>!a),className:"w-full flex items-center justify-between text-xs font-semibold uppercase tracking-wider text-[var(--muted-foreground)]","aria-expanded":c,children:[(0,d.jsxs)("span",{className:"flex items-center gap-2",children:[(0,d.jsx)("span",{children:"Terminal Stream"}),p&&(0,d.jsx)("span",{className:"text-[10px] px-2 py-0.5 rounded-full bg-emerald-500/15 text-emerald-400 border border-emerald-500/30",children:"Live"})]}),(0,d.jsx)("span",{className:"text-[10px] text-[var(--muted-foreground)]",children:c?"Collapse":"Expand"})]}),c&&(0,d.jsxs)("div",{className:"mt-4 rounded-xl border border-[var(--card-border)] bg-[#0b0f14] shadow-inner transition-all duration-300 ease-in-out",children:[(0,d.jsxs)("div",{className:"flex items-center justify-between px-3 py-2 border-b border-white/10 text-[10px] uppercase tracking-widest text-white/60",children:[(0,d.jsx)("span",{children:"Run Log"}),(0,d.jsxs)("div",{className:"flex items-center gap-3",children:[(0,d.jsx)("span",{className:"font-mono text-[10px]",children:p?"Streaming":"Idle"}),(0,d.jsx)("button",{onClick:()=>m(!g),className:"hover:text-white transition-colors p-1",title:g?"Collapse View":"Expand View",children:g?(0,d.jsxs)("svg",{xmlns:"http://www.w3.org/2000/svg",width:"14",height:"14",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round",children:[(0,d.jsx)("path",{d:"M8 3v3a2 2 0 0 1-2 2H3"}),(0,d.jsx)("path",{d:"M21 8h-3a2 2 0 0 1-2-2V3"}),(0,d.jsx)("path",{d:"M3 16h3a2 2 0 0 1 2 2v3"}),(0,d.jsx)("path",{d:"M16 21v-3a2 2 0 0 1 2-2h3"})]}):(0,d.jsxs)("svg",{xmlns:"http://www.w3.org/2000/svg",width:"14",height:"14",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round",children:[(0,d.jsx)("path",{d:"M15 3h6v6"}),(0,d.jsx)("path",{d:"M9 21H3v-6"}),(0,d.jsx)("path",{d:"M21 3l-7 7"}),(0,d.jsx)("path",{d:"M3 21l7-7"})]})})]})]}),(0,d.jsx)("div",{ref:q,className:`${g?"max-h-[70vh]":"max-h-64"} overflow-y-auto px-3 py-3 font-mono text-xs text-slate-200 whitespace-pre-wrap leading-relaxed transition-all duration-300 ease-in-out`,children:s.map((a,b)=>(0,d.jsx)("span",{style:a.style,children:a.text},`${b}-${a.text.length}`))})]})]})}let n={task:{label:"This Task",icon:"\uD83D\uDCCC",color:"var(--primary)",bgColor:"var(--primary-muted)",description:"Specific to this task only"},project:{label:"Project",icon:"\uD83D\uDCC1",color:"var(--accent)",bgColor:"var(--accent-muted)",description:"Applies to the whole project"},global:{label:"Playbook",icon:"\uD83D\uDCD6",color:"var(--warning)",bgColor:"var(--warning-muted)",description:"Universal best practices"}};function o({learnings:a,taskId:b,projectContext:c,onAddLearning:f,compact:g=!1}){let[h,i]=(0,e.useState)(!1),[j,k]=(0,e.useState)(""),[l,m]=(0,e.useState)("task"),[o,p]=(0,e.useState)(!1),q=c?.project?[c.project.id,c.project.slug].filter(Boolean):[],r=c?.project?.name||c?.project?.slug||"Project",s=async a=>{if(a.preventDefault(),j.trim()&&!o){p(!0);try{let a="project"===l?q[0]:void 0;await f(j,l,a),k(""),i(!1)}finally{p(!1)}}},t=a.filter(a=>"task"===a.scope&&a.scope_id===b),u=q.length?a.filter(a=>"project"===a.scope&&a.scope_id&&q.includes(a.scope_id)):[],v=a.filter(a=>"global"===a.scope),w=(a,b,c)=>{let e=n[a];return(0,d.jsxs)("div",{className:g?"mb-4":"mb-6",children:[(0,d.jsxs)("div",{className:`flex items-center gap-2 ${g?"mb-2":"mb-3"}`,children:[(0,d.jsx)("span",{className:"w-5 h-5 rounded-lg flex items-center justify-center text-xs",style:{backgroundColor:e.bgColor},children:e.icon}),(0,d.jsxs)("div",{children:[(0,d.jsx)("h4",{className:"text-xs font-semibold",style:{color:e.color},children:c||e.label}),!g&&(0,d.jsx)("p",{className:"text-[10px] text-[var(--muted-foreground)]",children:e.description})]})]}),0===b.length?(0,d.jsx)("p",{className:"text-[10px] text-[var(--muted-foreground)] py-2 text-center bg-[var(--background)] rounded-lg border border-dashed border-[var(--card-border)]",children:"No learnings yet"}):(0,d.jsx)("ul",{className:"space-y-1.5",children:b.map((a,b)=>(0,d.jsx)("li",{className:`text-xs bg-[var(--background)] rounded-lg ${g?"p-2":"p-3"} border border-[var(--card-border)]
2
- hover:border-[color-mix(in_srgb,var(--primary)_30%,var(--card-border))]
3
- transition-colors animate-fade-in-up`,style:{animationDelay:`${30*b}ms`},children:a.content},a.id))})]})};return(0,d.jsxs)("div",{children:[!g&&(0,d.jsxs)("div",{className:"flex items-center gap-2 mb-4",children:[(0,d.jsx)("span",{className:"text-lg",children:"\uD83D\uDCA1"}),(0,d.jsx)("h3",{className:"text-lg font-semibold",children:"Learnings"}),(0,d.jsx)("span",{className:"text-xs text-[var(--muted-foreground)] bg-[var(--muted)] px-2 py-0.5 rounded-full",children:a.length})]}),h?(0,d.jsxs)("form",{onSubmit:s,className:`${g?"mb-3":"mb-5"} space-y-2 animate-fade-in-up`,children:[(0,d.jsx)("textarea",{value:j,onChange:a=>k(a.target.value),placeholder:"What did you learn?",className:`input resize-none ${g?"h-16 text-xs":"h-20 text-sm"}`,autoFocus:!0,disabled:o}),(0,d.jsx)("div",{className:"flex gap-1",children:["task","project","global"].map(a=>{let b=n[a],c=l===a,e="project"===a&&0===q.length;return(0,d.jsxs)("button",{type:"button",onClick:()=>m(a),disabled:e,className:`
4
- flex-1 flex items-center justify-center gap-1 px-1.5 py-1 text-[10px] font-medium rounded-lg
5
- transition-all duration-200
6
- ${c?"text-white shadow-md":"bg-[var(--background)] text-[var(--muted-foreground)] hover:text-[var(--foreground)]"}
7
- ${e?"opacity-40 cursor-not-allowed":""}
8
- `,style:c?{backgroundColor:b.color,boxShadow:`0 2px 8px -2px ${b.color}60`}:void 0,children:[(0,d.jsx)("span",{children:b.icon}),!g&&(0,d.jsx)("span",{children:b.label})]},a)})}),(0,d.jsxs)("div",{className:"flex gap-2",children:[(0,d.jsx)("button",{type:"submit",disabled:!j.trim()||o,className:"btn-primary px-2 py-1 text-xs flex items-center gap-1.5",children:o?"...":"Add"}),(0,d.jsx)("button",{type:"button",onClick:()=>{i(!1),k("")},disabled:o,className:"btn-ghost px-2 py-1 text-xs",children:"Cancel"})]})]}):(0,d.jsx)("button",{onClick:()=>i(!0),className:`w-full ${g?"py-2 mb-3":"py-3 mb-5"} border-2 border-dashed border-[var(--card-border)] rounded-xl
9
- text-[var(--muted-foreground)] hover:text-[var(--foreground)]
10
- hover:border-[var(--primary)] hover:bg-[var(--primary-muted)]
11
- transition-all duration-200 text-xs font-medium`,children:(0,d.jsxs)("span",{className:"flex items-center justify-center gap-2",children:[(0,d.jsx)("svg",{className:"w-3.5 h-3.5",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor",children:(0,d.jsx)("path",{strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:2,d:"M12 4v16m8-8H4"})}),"Add learning"]})}),w("task",t),q.length>0&&w("project",u,`Project: ${r}`),w("global",v,"Global Playbook")]})}let p=[{id:"ideation",icon:"\uD83D\uDCA1",label:"Ideation",prompt:"Research and scope. Define approach, estimate effort.",color:"var(--warning)"},{id:"planning",icon:"\uD83D\uDCCB",label:"Planning",prompt:"Create detailed plan with tasks, milestones, and dependencies.",color:"var(--info)"},{id:"execution",icon:"\uD83D\uDCBB",label:"Execution",prompt:"Implement based on plan. Write clean, tested code.",color:"var(--primary)"},{id:"verification",icon:"\uD83E\uDDEA",label:"Verification",prompt:"Test thoroughly. Find edge cases. Fix bugs. Verify against requirements.",color:"var(--accent)"},{id:"done",icon:"✅",label:"Done",prompt:"Task finished and shipped.",color:"var(--success)"}];function q({currentStage:a,onStageChange:b,readonly:c,size:e="md",stageDecisions:f,stages:g}){let h=g||p,i=a?h.findIndex(b=>b.id===a):-1;return(0,d.jsx)("div",{className:"flex items-center gap-1 flex-wrap",role:"tablist","aria-label":"Task stages",children:h.map((g,j)=>{let k=g.id===a,l=i>j,m=!c&&b,n=f?.[g.id],o=[`${g.label}: ${g.prompt||""}`];return n?.decision&&o.push(`Decision: ${n.decision}`),n?.rationale&&o.push(`Rationale: ${n.rationale}`),(0,d.jsxs)("button",{onClick:()=>m&&b(g.id),disabled:c,title:o.join(" | "),role:"tab","aria-selected":k,"aria-disabled":c,className:`
12
- group relative flex items-center gap-1.5 rounded-lg font-medium
13
- transition-all duration-200 select-none
14
- focus-visible:outline-2 focus-visible:outline-[var(--ring)] focus-visible:outline-offset-2
15
- ${"sm"===e?"px-2 py-1 text-[10px]":"px-3 py-1.5 text-xs"}
16
- ${k?"text-white shadow-md":l?"bg-[var(--success-muted)] text-[var(--success)]":i<j&&-1!==i?"bg-[var(--background)] text-[var(--muted-foreground)] opacity-50":"bg-[var(--background)] text-[var(--muted-foreground)]"}
17
- ${m&&!k?"hover:bg-[var(--card-border)] hover:text-[var(--foreground)] cursor-pointer":""}
18
- ${c?"cursor-default":""}
19
- `,style:k?{backgroundColor:g.color,boxShadow:`0 4px 14px -3px ${g.color}40`}:void 0,children:[(0,d.jsx)("span",{className:`${"sm"===e?"text-xs":"text-sm"} ${k?"":"opacity-80"}`,children:g.icon}),(0,d.jsx)("span",{className:"hidden lg:inline",children:g.label}),j<h.length-1&&(0,d.jsx)("span",{className:`
20
- absolute -right-1 top-1/2 -translate-y-1/2 w-2 h-0.5
21
- ${l||k?"bg-[var(--success)]":"bg-[var(--card-border)]"}
22
- transition-colors duration-300 hidden lg:block
23
- `}),(0,d.jsx)("span",{className:"absolute bottom-full left-1/2 -translate-x-1/2 mb-2 px-2 py-1 text-[10px] font-normal whitespace-nowrap bg-[var(--card-bg)] text-[var(--foreground)] border border-[var(--card-border)] rounded-md shadow-lg opacity-0 group-hover:opacity-100 pointer-events-none transition-opacity duration-200 lg:hidden z-50",children:g.label})]},g.id)})})}var r=c(95627),s=c.n(r),t=c(53603),u=c(43843),v=c(93130),w=c(72576),x=c(22833);let y=({editor:a})=>a?(0,d.jsxs)("div",{className:"flex flex-wrap items-center gap-1 p-2 border-b border-[var(--card-border)] mb-2 sticky top-0 bg-[var(--card-bg)] z-10 opacity-90 backdrop-blur-sm",children:[(0,d.jsx)("button",{onClick:()=>a.chain().focus().toggleBold().run(),disabled:!a.can().chain().focus().toggleBold().run(),className:`p-1.5 rounded hover:bg-[var(--muted)] ${a.isActive("bold")?"bg-[var(--muted)] text-[var(--foreground)]":"text-[var(--muted-foreground)]"}`,title:"Bold",children:(0,d.jsx)("span",{className:"font-bold font-serif",children:"B"})}),(0,d.jsx)("button",{onClick:()=>a.chain().focus().toggleItalic().run(),disabled:!a.can().chain().focus().toggleItalic().run(),className:`p-1.5 rounded hover:bg-[var(--muted)] ${a.isActive("italic")?"bg-[var(--muted)] text-[var(--foreground)]":"text-[var(--muted-foreground)]"}`,title:"Italic",children:(0,d.jsx)("span",{className:"italic font-serif",children:"I"})}),(0,d.jsx)("button",{onClick:()=>a.chain().focus().toggleStrike().run(),disabled:!a.can().chain().focus().toggleStrike().run(),className:`p-1.5 rounded hover:bg-[var(--muted)] ${a.isActive("strike")?"bg-[var(--muted)] text-[var(--foreground)]":"text-[var(--muted-foreground)]"}`,title:"Strike",children:(0,d.jsx)("span",{className:"line-through font-serif",children:"S"})}),(0,d.jsx)("div",{className:"w-px h-4 bg-[var(--card-border)] mx-1"}),(0,d.jsx)("button",{onClick:()=>a.chain().focus().toggleCode().run(),disabled:!a.can().chain().focus().toggleCode().run(),className:`p-1.5 rounded hover:bg-[var(--muted)] ${a.isActive("code")?"bg-[var(--muted)] text-[var(--foreground)]":"text-[var(--muted-foreground)]"}`,title:"Code",children:(0,d.jsx)("span",{className:"font-mono text-xs",children:"<>"})}),(0,d.jsx)("button",{onClick:()=>a.chain().focus().toggleCodeBlock().run(),className:`p-1.5 rounded hover:bg-[var(--muted)] ${a.isActive("codeBlock")?"bg-[var(--muted)] text-[var(--foreground)]":"text-[var(--muted-foreground)]"}`,title:"Code Block",children:(0,d.jsx)("span",{className:"font-mono text-xs",children:"CB"})}),(0,d.jsx)("div",{className:"w-px h-4 bg-[var(--card-border)] mx-1"}),(0,d.jsx)("button",{onClick:()=>a.chain().focus().toggleHeading({level:1}).run(),className:`p-1.5 rounded hover:bg-[var(--muted)] ${a.isActive("heading",{level:1})?"bg-[var(--muted)] text-[var(--foreground)]":"text-[var(--muted-foreground)]"}`,title:"H1",children:(0,d.jsx)("span",{className:"font-bold text-xs",children:"H1"})}),(0,d.jsx)("button",{onClick:()=>a.chain().focus().toggleHeading({level:2}).run(),className:`p-1.5 rounded hover:bg-[var(--muted)] ${a.isActive("heading",{level:2})?"bg-[var(--muted)] text-[var(--foreground)]":"text-[var(--muted-foreground)]"}`,title:"H2",children:(0,d.jsx)("span",{className:"font-bold text-xs",children:"H2"})}),(0,d.jsx)("button",{onClick:()=>a.chain().focus().toggleHeading({level:3}).run(),className:`p-1.5 rounded hover:bg-[var(--muted)] ${a.isActive("heading",{level:3})?"bg-[var(--muted)] text-[var(--foreground)]":"text-[var(--muted-foreground)]"}`,title:"H3",children:(0,d.jsx)("span",{className:"font-bold text-xs",children:"H3"})}),(0,d.jsx)("div",{className:"w-px h-4 bg-[var(--card-border)] mx-1"}),(0,d.jsx)("button",{onClick:()=>a.chain().focus().toggleBulletList().run(),className:`p-1.5 rounded hover:bg-[var(--muted)] ${a.isActive("bulletList")?"bg-[var(--muted)] text-[var(--foreground)]":"text-[var(--muted-foreground)]"}`,title:"Bullet List",children:(0,d.jsx)("span",{className:"text-xs",children:"• List"})}),(0,d.jsx)("button",{onClick:()=>a.chain().focus().toggleOrderedList().run(),className:`p-1.5 rounded hover:bg-[var(--muted)] ${a.isActive("orderedList")?"bg-[var(--muted)] text-[var(--foreground)]":"text-[var(--muted-foreground)]"}`,title:"Ordered List",children:(0,d.jsx)("span",{className:"text-xs",children:"1. List"})}),(0,d.jsx)("button",{onClick:()=>a.chain().focus().toggleBlockquote().run(),className:`p-1.5 rounded hover:bg-[var(--muted)] ${a.isActive("blockquote")?"bg-[var(--muted)] text-[var(--foreground)]":"text-[var(--muted-foreground)]"}`,title:"Quote",children:(0,d.jsx)("span",{className:"text-xs serif italic",children:'""'})})]}):null;function z({content:a,editable:b=!0,onChange:c,onBlur:e,placeholder:f="Add a description..."}){let g=(0,t.hG)({extensions:[u.A,w.Ay.configure({openOnClick:!1}),v.A.configure({placeholder:f,emptyEditorClass:"is-editor-empty before:content-[attr(data-placeholder)] before:text-[var(--muted-foreground)] before:float-left before:pointer-events-none before:h-0"}),x.o.configure({html:!1,transformPastedText:!0,transformCopiedText:!0})],immediatelyRender:!1,content:a,editable:b,editorProps:{attributes:{class:"prose prose-sm max-w-none focus:outline-none min-h-[100px] text-[var(--foreground)]"}},onUpdate:({editor:a})=>{c?.(a.storage.markdown.getMarkdown())},onBlur:()=>{e?.()}});return(0,d.jsxs)("div",{className:"jsx-cdf669dd826a0677 relative group",children:[b&&(0,d.jsx)(y,{editor:g}),(0,d.jsx)(t.$Z,{editor:g,className:"rich-text-editor"}),(0,d.jsx)(s(),{id:"cdf669dd826a0677",children:".rich-text-editor .ProseMirror{min-height:100px;outline:none}.rich-text-editor .ProseMirror p{margin-bottom:.75em;line-height:1.6}.rich-text-editor .ProseMirror h1{font-size:1.5em;font-weight:700;margin-top:1em;margin-bottom:.5em}.rich-text-editor .ProseMirror h2{font-size:1.25em;font-weight:600;margin-top:1em;margin-bottom:.5em}.rich-text-editor .ProseMirror h3{font-size:1.1em;font-weight:600;margin-top:1em;margin-bottom:.5em}.rich-text-editor .ProseMirror ul{list-style-type:disc;padding-left:1.5em;margin-bottom:.75em}.rich-text-editor .ProseMirror ol{list-style-type:decimal;padding-left:1.5em;margin-bottom:.75em}.rich-text-editor .ProseMirror blockquote{border-left:3px solid var(--card-border);padding-left:1em;font-style:italic;color:var(--muted-foreground)}.rich-text-editor .ProseMirror pre{background:var(--muted);padding:.75em;border-radius:var(--radius-sm);font-family:monospace;overflow-x:auto;margin-bottom:.75em}.rich-text-editor .ProseMirror code{background:var(--muted);padding:.2em .4em;border-radius:var(--radius-sm);font-family:monospace;font-size:.85em}.rich-text-editor .ProseMirror a{color:var(--primary);text-decoration:underline}"})]})}var A=c(82997),B=c(3991),C=c.n(B);function D({projectContext:a,fallbackProjectSlug:b}){var c;let e=a?.project||null,f=a?.repos??[],g=a?.learnings??[],h=(c=e?.metadata)&&"object"==typeof c?Object.entries(c).filter(([a])=>!!a):[];if(!e)return(0,d.jsxs)("div",{className:"p-4 rounded-2xl border border-dashed border-[var(--card-border)] bg-[var(--card-bg)]/60 space-y-3",children:[(0,d.jsxs)("div",{children:[(0,d.jsx)("p",{className:"text-xs font-semibold uppercase tracking-wide text-[var(--muted-foreground)]",children:"Project Context"}),(0,d.jsx)("p",{className:"text-sm text-[var(--muted-foreground)]",children:b?`Task is tagged with "${b}" but no structured project context is available yet.`:"This task is not connected to a project. Link it to unlock repo maps, CI/CD notes, and project learnings."})]}),(0,d.jsx)(C(),{href:"/projects",className:"inline-flex items-center justify-center text-xs font-semibold px-3 py-1.5 rounded-full border border-[var(--card-border)] hover:border-[var(--primary)] hover:text-[var(--primary)] transition-colors",children:"Manage Projects"})]});let i=g.slice(0,3),j=g.length-i.length;return(0,d.jsxs)("div",{className:"p-4 rounded-2xl border border-[var(--card-border)] bg-[var(--card-bg)] space-y-4",children:[(0,d.jsxs)("div",{className:"flex items-start justify-between gap-3",children:[(0,d.jsxs)("div",{children:[(0,d.jsx)("p",{className:"text-xs font-semibold uppercase tracking-wide text-[var(--muted-foreground)]",children:"Project Context"}),(0,d.jsx)("h3",{className:"text-base font-semibold leading-tight mt-1",children:e.name}),(0,d.jsx)("p",{className:"text-[11px] uppercase tracking-wide text-[var(--muted-foreground)]",children:e.slug})]}),(0,d.jsx)(C(),{href:"/projects",className:"text-[11px] font-semibold px-2 py-1 rounded-full border border-[var(--card-border)] hover:border-[var(--primary)] hover:text-[var(--primary)] transition-colors",children:"View"})]}),e.description&&(0,d.jsx)("p",{className:"text-sm text-[var(--foreground)] whitespace-pre-line",children:e.description}),e.ci_cd_info&&(0,d.jsxs)("div",{className:"text-xs space-y-1",children:[(0,d.jsx)("p",{className:"font-semibold text-[var(--muted-foreground)] uppercase tracking-wide",children:"CI / CD"}),(0,d.jsx)("p",{className:"text-[var(--foreground)] text-sm",children:e.ci_cd_info})]}),h.length>0&&(0,d.jsxs)("div",{children:[(0,d.jsx)("p",{className:"text-[11px] font-semibold uppercase tracking-wide text-[var(--muted-foreground)] mb-2",children:"Metadata"}),(0,d.jsx)("dl",{className:"space-y-1.5",children:h.map(([a,b])=>(0,d.jsxs)("div",{className:"flex items-start justify-between gap-2 text-xs",children:[(0,d.jsx)("dt",{className:"font-semibold text-[var(--foreground)]",children:a}),(0,d.jsx)("dd",{className:"text-[var(--muted-foreground)] text-right max-w-[160px]",children:"string"==typeof b?b:JSON.stringify(b)})]},a))})]}),(0,d.jsxs)("div",{children:[(0,d.jsxs)("div",{className:"flex items-center justify-between mb-2",children:[(0,d.jsx)("p",{className:"text-[11px] font-semibold uppercase tracking-wide text-[var(--muted-foreground)]",children:"Repository Map"}),(0,d.jsx)("span",{className:"text-[11px] text-[var(--muted-foreground)]",children:f.length?`${f.length} connected`:"None"})]}),0===f.length?(0,d.jsx)("p",{className:"text-xs text-[var(--muted-foreground)]",children:"Add repositories to help agents navigate local and remote paths."}):(0,d.jsx)("ul",{className:"space-y-2",children:f.map(a=>(0,d.jsxs)("li",{className:"p-2 rounded-xl border border-[var(--card-border)] bg-[var(--background)] space-y-1 text-xs",children:[(0,d.jsx)("p",{className:"font-semibold text-[var(--foreground)]",children:a.name}),a.path&&(0,d.jsxs)("p",{className:"text-[var(--muted-foreground)]",children:["Path: ",a.path]}),a.git_url&&(0,d.jsxs)("p",{className:"text-[var(--muted-foreground)] break-all",children:["Repo: ",(0,d.jsx)("span",{className:"text-[var(--primary)]",children:a.git_url})]}),a.notes&&(0,d.jsxs)("p",{className:"text-[var(--muted-foreground)]",children:["Notes: ",a.notes]})]},a.id||a.name))})]}),g.length>0&&(0,d.jsxs)("div",{children:[(0,d.jsx)("p",{className:"text-[11px] font-semibold uppercase tracking-wide text-[var(--muted-foreground)] mb-2",children:"Project Learnings"}),(0,d.jsx)("ul",{className:"space-y-1 text-xs text-[var(--foreground)]",children:i.map((a,b)=>(0,d.jsxs)("li",{className:"leading-relaxed",children:["• ",a]},`${a}-${b}`))}),j>0&&(0,d.jsxs)("p",{className:"text-[11px] text-[var(--muted-foreground)] mt-1",children:["+",j," more learnings in the panel below"]})]})]})}var E=c(7889);let F={queued:{label:"Queued",color:"var(--status-queued)",bgColor:"var(--status-queued-bg)"},in_progress:{label:"In Progress",color:"var(--status-in-progress)",bgColor:"var(--status-in-progress-bg)"},blocked:{label:"Blocked",color:"var(--status-blocked)",bgColor:"var(--status-blocked-bg)"},completed:{label:"Completed",color:"var(--status-completed)",bgColor:"var(--status-completed-bg)"},failed:{label:"Failed",color:"var(--status-failed)",bgColor:"var(--status-failed-bg)"}},G=["queued","in_progress","blocked","completed","failed"];function H(a){if(!a)return"N/A";let b=new Date(a);return Number.isNaN(b.getTime())?a:b.toLocaleString()}function I({task:a,comments:b,learnings:c,projectContext:h,projects:i,stage_config:j,stages:k,isDraft:l=!1,isCreating:n=!1,onClose:r,onAddComment:s,onDeleteComment:t,onAddLearning:u,onUpdate:v,onDelete:w}){let{providers:x}=(0,E.u)(),{projects:y}=(0,A.Y)(),B=i||y,C=k||p,[I,K]=(0,e.useState)(!1),[L,M]=(0,e.useState)(!1),[N,O]=(0,e.useState)(!1),[P,Q]=(0,e.useState)(""),[R,S]=(0,e.useState)(null),[T,U]=(0,e.useState)(!1),[V,W]=(0,e.useState)(a.provider||""),[X,Y]=(0,e.useState)(a.model||""),[Z,$]=(0,e.useState)(a.swarm??!1),[_,aa]=(0,e.useState)([]),[ab,ac]=(0,e.useState)("gemini"),[ad,ae]=(0,e.useState)(""),[af,ag]=(0,e.useState)(!1),[ah,ai]=(0,e.useState)(null),aj=a.resolved_provider||j?.provider||"gemini",ak=a.resolved_model||j?.model||"",al=a.swarm??j?.swarm??!1;a.resolved_swarm_models||j?.swarm_models;let am=h??a.project_context??null,an=am?.project?.slug??a.project??null,[ao,ap]=(0,e.useState)(a.title||""),[aq,ar]=(0,e.useState)(""),as=async()=>{O(!0);try{await w?.()}finally{O(!1),M(!1)}},at=(0,f.YQ)(async b=>{let c=(a.description??(a=>{let b=a.match(/^---\n[\s\S]*?\n---\n([\s\S]*)$/);return(b?b[1]:a).replace(/^#\s+.+(\r?\n|$)/,"").trim()})(a.content||"")).replace(/^#\s+.+(\r?\n|$)/,"").trim();l||b===c||await v({description:b})},1e3),au=(0,f.YQ)(async b=>{if(!l&&b!==(a.title||"")){ag(!0);try{await v({title:b})}finally{ag(!1)}}},1e3),av=(0,f.YQ)(async a=>{ag(!0),ai(null);try{await v(a)}catch(a){ai(a instanceof Error?a.message:"Failed to update settings")}finally{ag(!1)}},1e3),aw=async a=>{let b="done"===a?"completed":"ideation"===a?"queued":"in_progress";if(l)return void await v({stage:a,status:b});await v({stage:a,status:b})},ax=async a=>{if(!a)return void await v({project:null,project_id:null});let b=B.find(b=>b.id===a);b&&await v({project:b.slug,project_id:b.id})},ay=async()=>{try{await aA("queued")}catch(a){console.error("Failed to retry task",a)}},az=async()=>{try{await aA("queued")}catch(a){console.error("Failed to unblock task",a)}},aA=async b=>{let c={status:b};"queued"===b&&(c.started_at=null,c.completed_at=null,c.error=void 0),"completed"!==b&&"failed"!==b&&"blocked"!==b||a.completed_at||(c.completed_at=new Date().toISOString()),await v(c)};F[a.status||"queued"];let aB=a.stage_decisions||{},aC=a.stage?aB[a.stage]:void 0,aD=function(a,b){if(!a||"object"!=typeof a)return null;let c=Object.entries(a).filter(([,a])=>!!(a&&b(a))).sort((a,b)=>{let c=Date.parse(a[1]?.decided_at||""),d=Date.parse(b[1]?.decided_at||"");return(Number.isNaN(d)?0:d)-(Number.isNaN(c)?0:c)});if(!c.length)return null;let[d,e]=c[0];return{stage:d,decision:e}}(aB,a=>"failed"===a.decision),aE=Object.entries(aB).filter(([,a])=>a?.decision==="blocked").sort((a,b)=>{let c=Date.parse(a[1]?.decided_at||""),d=Date.parse(b[1]?.decided_at||"");return(Number.isNaN(d)?0:d)-(Number.isNaN(c)?0:c)})[0],aF=aC?.decision==="blocked"?a.stage:aE?.[0],aG=aF&&aB[aF]?aB[aF]:void 0,aH=aG?.rationale,aI="string"==typeof a.error&&a.error.trim()?a.error.trim():(aD?.decision?.rationale||aD?.decision?.final_result||"").trim()||"Task marked failed.";return(0,d.jsx)("div",{className:"modal-backdrop",onClick:a=>a.target===a.currentTarget&&r(),children:(0,d.jsxs)("div",{className:"bg-[var(--card-bg)] w-full max-w-[1200px] h-[90vh] rounded-xl shadow-2xl overflow-hidden flex flex-col animate-scale-in border border-[var(--card-border)] m-4",children:[(0,d.jsxs)("div",{className:"flex items-center justify-between px-6 py-4 border-b border-[var(--card-border)] bg-[var(--card-bg)]",children:[(0,d.jsxs)("div",{className:"flex items-center gap-3",children:[(0,d.jsx)("span",{className:"text-[var(--muted-foreground)] font-mono text-sm",children:l?"New Task":a.slug||a.id.slice(0,6)}),!l&&(0,d.jsx)(q,{currentStage:a.stage,onStageChange:aw,stageDecisions:a.stage_decisions,stages:C})]}),(0,d.jsxs)("div",{className:"flex items-center gap-2",children:[l&&(0,d.jsx)("button",{onClick:()=>{if(!aq.trim())return;let b="done"===a.stage?"completed":"ideation"===a.stage?"queued":"in_progress";v({title:ao,description:aq,stage:a.stage,status:b,project:a.project??null,project_id:a.project_id??null,provider:V||void 0,model:X||void 0,swarm:Z,swarm_models:Z?_:[]})},disabled:n||!aq.trim(),className:"btn-primary px-4 py-2 rounded-md text-sm font-medium disabled:opacity-50 disabled:cursor-not-allowed",children:n?"Creating...":"Create Task"}),!l&&af&&(0,d.jsxs)("span",{className:"text-[10px] text-[var(--muted-foreground)] animate-pulse flex items-center gap-1 mr-2",children:[(0,d.jsx)("span",{className:"w-1.5 h-1.5 rounded-full bg-[var(--primary)]"}),"Saving..."]}),!l&&w&&(0,d.jsx)("button",{onClick:()=>M(!0),className:"btn-ghost p-2 rounded hover:bg-[var(--destructive-muted)] hover:text-[var(--destructive)]",title:"Delete Task",children:(0,d.jsx)("svg",{className:"w-5 h-5",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor",children:(0,d.jsx)("path",{strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:2,d:"M19 7l-.867 12.142A2 2 0 0116.138 21H7.862a2 2 0 01-1.995-1.858L5 7m5 4v6m4-6v6m1-10V4a1 1 0 00-1-1h-4a1 1 0 00-1 1v3M4 7h16"})})}),(0,d.jsx)("button",{onClick:r,className:"btn-ghost p-2 rounded",title:"Close (Esc)",children:(0,d.jsx)("svg",{className:"w-5 h-5",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor",children:(0,d.jsx)("path",{strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:2,d:"M6 18L18 6M6 6l12 12"})})})]})]}),L&&(0,d.jsx)("div",{className:"absolute inset-0 bg-black/60 backdrop-blur-sm flex items-center justify-center z-50 rounded-xl animate-fade-in",children:(0,d.jsxs)("div",{className:"modal-content p-6 max-w-sm mx-4 animate-scale-in bg-[var(--card-bg)]",children:[(0,d.jsx)("h3",{className:"text-lg font-bold mb-2",children:"Delete Task?"}),(0,d.jsxs)("p",{className:"text-[var(--muted-foreground)] text-sm mb-6",children:["Are you sure you want to delete ",(0,d.jsx)("strong",{className:"text-[var(--foreground)]",children:a.slug||a.id.slice(0,6)}),"? This cannot be undone."]}),(0,d.jsxs)("div",{className:"flex justify-end gap-3",children:[(0,d.jsx)("button",{onClick:()=>M(!1),disabled:N,className:"btn-ghost",children:"Cancel"}),(0,d.jsx)("button",{onClick:as,disabled:N,className:"btn-destructive px-4 py-2 rounded-md",children:N?"Deleting...":"Delete"})]})]})}),(0,d.jsxs)("div",{className:"flex flex-1 overflow-hidden",children:[(0,d.jsx)("div",{className:"flex-1 overflow-y-auto scrollbar-thin",children:(0,d.jsxs)("div",{className:"max-w-3xl mx-auto p-8",children:[!l&&"failed"===a.status&&(0,d.jsxs)("div",{className:"mb-8 p-4 rounded-lg bg-[var(--status-failed-bg)] border border-[var(--status-failed)] text-[var(--status-failed)]",children:[(0,d.jsxs)("div",{className:"flex items-center justify-between mb-2",children:[(0,d.jsxs)("div",{className:"flex items-center gap-2",children:[(0,d.jsx)("svg",{className:"w-5 h-5",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor",children:(0,d.jsx)("path",{strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:2,d:"M12 8v4m0 4h.01M21 12a9 9 0 11-18 0 9 9 0 0118 0z"})}),(0,d.jsx)("span",{className:"font-bold text-sm uppercase tracking-wider",children:"Task Execution Failed"})]}),(0,d.jsx)("button",{onClick:ay,className:"btn-ghost px-3 py-1 text-xs font-bold bg-white/20 rounded hover:bg-white/30 transition-colors uppercase",children:"Retry Task"})]}),(0,d.jsx)("p",{className:"text-sm font-medium",children:aI}),(0,d.jsxs)("div",{className:"mt-3 text-xs rounded-md border border-[var(--status-failed)]/40 bg-white/50 p-3",children:[(0,d.jsx)("h4",{className:"font-semibold uppercase tracking-wider mb-2",children:"Failure Metadata"}),(0,d.jsxs)("div",{className:"grid grid-cols-[140px_1fr] gap-x-3 gap-y-1.5",children:[(0,d.jsx)("span",{className:"opacity-70",children:"Stage"}),(0,d.jsx)("span",{className:"font-medium",children:a.stage||aD?.stage||"N/A"}),(0,d.jsx)("span",{className:"opacity-70",children:"Exit Code"}),(0,d.jsx)("span",{className:"font-mono",children:a.exit_code??"N/A"}),(0,d.jsx)("span",{className:"opacity-70",children:"PID"}),(0,d.jsx)("span",{className:"font-mono",children:a.pid??"N/A"}),(0,d.jsx)("span",{className:"opacity-70",children:"Completed At"}),(0,d.jsx)("span",{className:"font-medium",children:H(a.completed_at)}),aD?.decision&&(0,d.jsxs)(d.Fragment,{children:[(0,d.jsx)("span",{className:"opacity-70",children:"Decision"}),(0,d.jsx)("span",{className:"font-medium",children:aD.decision.decision}),(0,d.jsx)("span",{className:"opacity-70",children:"Rationale"}),(0,d.jsx)("span",{className:"font-medium break-words",children:aD.decision.rationale||"N/A"}),(0,d.jsx)("span",{className:"opacity-70",children:"Final Result"}),(0,d.jsx)("span",{className:"font-medium break-words",children:aD.decision.final_result||"N/A"}),(0,d.jsx)("span",{className:"opacity-70",children:"Decided At"}),(0,d.jsx)("span",{className:"font-medium",children:H(aD.decision.decided_at)})]})]})]}),(T||P||R)&&(0,d.jsxs)("details",{className:"mt-3",open:!0,children:[(0,d.jsx)("summary",{className:"cursor-pointer select-none text-xs font-semibold uppercase tracking-wider opacity-90",children:"Error Details"}),(0,d.jsxs)("div",{className:"mt-2 rounded-md border border-[var(--status-failed)]/40 bg-[#0b0f14] text-slate-200",children:[(0,d.jsxs)("div",{className:"px-3 py-2 border-b border-white/10 text-[10px] uppercase tracking-widest text-white/60 flex items-center justify-between",children:[(0,d.jsx)("span",{children:"Log Excerpt"}),(0,d.jsx)("span",{className:"font-mono",children:T?"Loading...":R?"Unavailable":"Ready"})]}),(0,d.jsx)("pre",{className:"px-3 py-3 text-xs font-mono whitespace-pre-wrap max-h-64 overflow-y-auto",children:R?`Failed to load error details: ${R}`:P||"No error logs found."})]})]})]}),!l&&"blocked"===a.status&&(0,d.jsxs)("div",{className:"mb-8 p-4 rounded-lg bg-[var(--status-blocked-bg)] border border-[var(--status-blocked)] text-[var(--status-blocked)]",children:[(0,d.jsxs)("div",{className:"flex items-center justify-between mb-2",children:[(0,d.jsxs)("div",{className:"flex items-center gap-2",children:[(0,d.jsx)("svg",{className:"w-5 h-5",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor",children:(0,d.jsx)("path",{strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:2,d:"M12 15v2m-6 4h12a2 2 0 002-2v-6a2 2 0 00-2-2H6a2 2 0 00-2 2v6a2 2 0 002 2zm10-10V7a4 4 0 00-8 0v4h8z"})}),(0,d.jsx)("span",{className:"font-bold text-sm uppercase tracking-wider",children:"Task Blocked"})]}),(0,d.jsx)("button",{onClick:az,className:"btn-ghost px-3 py-1 text-xs font-bold bg-white/20 rounded hover:bg-white/30 transition-colors uppercase",children:"Unblock Task"})]}),(0,d.jsx)("p",{className:"text-sm opacity-90 pl-7 mb-4",children:aH||"Task is blocked and requires manual intervention."}),(0,d.jsxs)("div",{className:"ml-7 text-xs rounded-md border border-[var(--status-blocked)]/40 bg-white/50 p-3",children:[(0,d.jsx)("h4",{className:"font-semibold uppercase tracking-wider mb-2",children:"Blocked Metadata"}),(0,d.jsxs)("div",{className:"grid grid-cols-[140px_1fr] gap-x-3 gap-y-1.5",children:[(0,d.jsx)("span",{className:"opacity-70",children:"Decision Stage"}),(0,d.jsx)("span",{className:"font-medium",children:aF||a.stage||"N/A"}),(0,d.jsx)("span",{className:"opacity-70",children:"Decision"}),(0,d.jsx)("span",{className:"font-medium",children:aG?.decision||"blocked"}),(0,d.jsx)("span",{className:"opacity-70",children:"Final Result"}),(0,d.jsx)("span",{className:"font-medium break-words",children:aG?.final_result||"N/A"}),(0,d.jsx)("span",{className:"opacity-70",children:"Rationale"}),(0,d.jsx)("span",{className:"font-medium break-words",children:aG?.rationale||"N/A"}),(0,d.jsx)("span",{className:"opacity-70",children:"Decided At"}),(0,d.jsx)("span",{className:"font-medium",children:H(aG?.decided_at)}),(0,d.jsx)("span",{className:"opacity-70",children:"Workflow ID"}),(0,d.jsx)("span",{className:"font-mono break-all",children:a.workflow_id||"N/A"}),(0,d.jsx)("span",{className:"opacity-70",children:"Workflow Run ID"}),(0,d.jsx)("span",{className:"font-mono break-all",children:a.workflow_run_id||"N/A"}),(0,d.jsx)("span",{className:"opacity-70",children:"Orchestration Status"}),(0,d.jsx)("span",{className:"font-medium",children:a.orchestration_status||"N/A"}),(0,d.jsx)("span",{className:"opacity-70",children:"Last Orchestration Update"}),(0,d.jsx)("span",{className:"font-medium",children:H(a.last_orchestration_update)}),(0,d.jsx)("span",{className:"opacity-70",children:"Started At"}),(0,d.jsx)("span",{className:"font-medium",children:H(a.started_at)}),(0,d.jsx)("span",{className:"opacity-70",children:"Completed At"}),(0,d.jsx)("span",{className:"font-medium",children:H(a.completed_at)})]})]})]}),(0,d.jsx)("input",{type:"text",value:ao,onChange:a=>{var b;ap(b=a.target.value),l||au(b)},placeholder:"Task title...",className:"w-full text-2xl font-bold bg-transparent border-none outline-none text-[var(--foreground)] placeholder:text-[var(--muted-foreground)]/50 mb-4"}),(0,d.jsx)("div",{className:"mb-12 min-h-[150px]",children:(0,d.jsx)(z,{content:aq,onChange:a=>{ar(a),l||at(a)},placeholder:l?"Describe the task...":"Add more detail to this task..."})}),!l&&(0,d.jsx)(m,{taskId:a.id,status:a.status}),!l&&a.history&&a.history.length>0&&(0,d.jsxs)("div",{className:"mt-12 border-t border-[var(--card-border)] pt-8",children:[(0,d.jsx)("h3",{className:"text-xs font-semibold uppercase tracking-wider text-[var(--muted-foreground)] mb-4",children:"Execution History"}),(0,d.jsx)("div",{className:"overflow-x-auto",children:(0,d.jsxs)("table",{className:"w-full text-sm text-left",children:[(0,d.jsx)("thead",{className:"text-xs text-[var(--muted-foreground)] border-b border-[var(--card-border)]",children:(0,d.jsxs)("tr",{children:[(0,d.jsx)("th",{className:"py-2 pr-4 font-medium",children:"Started"}),(0,d.jsx)("th",{className:"py-2 pr-4 font-medium",children:"Duration"}),(0,d.jsx)("th",{className:"py-2 pr-4 font-medium",children:"PID"}),(0,d.jsx)("th",{className:"py-2 pr-4 font-medium",children:"Exit Code"})]})}),(0,d.jsx)("tbody",{className:"divide-y divide-[var(--card-border)]",children:a.history.map(a=>(0,d.jsxs)("tr",{className:"hover:bg-[var(--muted)]/20 transition-colors",children:[(0,d.jsx)("td",{className:"py-2 pr-4 font-mono text-xs opacity-80",children:a.started_at?new Date(a.started_at).toLocaleString():"N/A"}),(0,d.jsx)("td",{className:"py-2 pr-4 font-mono text-xs opacity-80",children:a.started_at&&a.completed_at?function(a,b){let c=b.getTime()-a.getTime();if(c<1e3)return`${c}ms`;let d=Math.floor(c/1e3);if(d<60)return`${d}s`;let e=Math.floor(d/60);return`${e}m ${d%60}s`}(new Date(a.started_at),new Date(a.completed_at)):"-"}),(0,d.jsx)("td",{className:"py-2 pr-4 font-mono text-xs opacity-80",children:a.pid??"-"}),(0,d.jsx)("td",{className:"py-2 pr-4",children:(0,d.jsx)("span",{className:`inline-flex items-center px-1.5 py-0.5 rounded text-[10px] font-medium border ${0===a.exit_code?"bg-[var(--status-completed-bg)] text-[var(--status-completed)] border-[var(--status-completed)]/20":"bg-[var(--status-failed-bg)] text-[var(--status-failed)] border-[var(--status-failed)]/20"}`,children:a.exit_code??"-"})})]},a.id))})]})})]}),!l&&(0,d.jsxs)("div",{className:"border-t border-[var(--card-border)] pt-8",children:[(0,d.jsxs)("h3",{className:"text-xs font-semibold uppercase tracking-wider text-[var(--muted-foreground)] mb-6 flex items-center justify-between",children:[(0,d.jsx)("span",{children:"Comments"}),(0,d.jsx)("span",{className:"text-[10px] bg-[var(--muted)] px-2 py-0.5 rounded-full",children:b.length})]}),(0,d.jsx)(g,{comments:b,onAddComment:s,onDeleteComment:t})]})]})}),(0,d.jsxs)("div",{className:"w-80 border-l border-[var(--card-border)] bg-[var(--muted)]/20 overflow-y-auto scrollbar-thin p-6 flex flex-col gap-8 flex-shrink-0",children:[(0,d.jsxs)("div",{className:"space-y-4",children:[(0,d.jsxs)("div",{className:"flex items-center justify-between",children:[(0,d.jsx)("span",{className:"text-sm text-[var(--muted-foreground)]",children:"Stage"}),(0,d.jsx)("select",{value:a.stage,onChange:a=>aw(a.target.value),className:"text-sm font-medium bg-[var(--card-bg)] border border-[var(--card-border)] rounded px-2 py-1 focus:border-[var(--primary)] outline-none transition-colors cursor-pointer",children:C.map(a=>(0,d.jsx)("option",{value:a.id,children:a.label},a.id))})]}),!l&&(0,d.jsxs)(d.Fragment,{children:[(0,d.jsxs)("div",{className:"flex items-center justify-between",children:[(0,d.jsx)("span",{className:"text-sm text-[var(--muted-foreground)]",children:"Status"}),(0,d.jsx)("select",{value:a.status||"queued",onChange:a=>aA(a.target.value),className:"text-sm font-medium bg-[var(--card-bg)] border border-[var(--card-border)] rounded px-2 py-1 focus:border-[var(--primary)] outline-none transition-colors cursor-pointer",children:G.map(a=>(0,d.jsx)("option",{value:a,children:F[a].label},a))})]}),(0,d.jsx)(J,{label:"ID",value:a.id}),a.slug&&(0,d.jsx)(J,{label:"Slug",value:a.slug,truncate:!0})]}),(0,d.jsxs)("div",{className:"flex items-center justify-between",children:[(0,d.jsx)("span",{className:"text-sm text-[var(--muted-foreground)]",children:"Project"}),(0,d.jsxs)("select",{value:a.project_id||B.find(b=>b.slug===a.project)?.id||"",onChange:a=>ax(a.target.value),className:"text-sm font-medium bg-[var(--card-bg)] border border-[var(--card-border)] rounded px-2 py-1 focus:border-[var(--primary)] outline-none transition-colors cursor-pointer max-w-[150px] truncate",children:[(0,d.jsx)("option",{value:"",children:"None"}),B.map(a=>(0,d.jsx)("option",{value:a.id,children:a.name},a.id))]})]}),!l&&(0,d.jsxs)(d.Fragment,{children:[(0,d.jsxs)("div",{className:"flex items-center justify-between",children:[(0,d.jsx)("span",{className:"text-sm text-[var(--muted-foreground)]",children:"Provider"}),(0,d.jsx)("span",{className:"text-sm font-medium",children:al?"Swarm":aj||"Default"})]}),void 0!==a.pid&&null!==a.pid&&(0,d.jsxs)("div",{className:"flex items-center justify-between",children:[(0,d.jsx)("span",{className:"text-sm text-[var(--muted-foreground)]",children:"PID"}),(0,d.jsx)("span",{className:"text-sm font-mono font-medium",title:"Process ID",children:a.pid})]}),void 0!==a.exit_code&&null!==a.exit_code&&(0,d.jsxs)("div",{className:"flex items-center justify-between",children:[(0,d.jsx)("span",{className:"text-sm text-[var(--muted-foreground)]",children:"Exit Code"}),(0,d.jsx)("span",{className:`text-sm font-mono font-medium ${0===a.exit_code?"text-[var(--status-completed)]":"text-[var(--status-failed)]"}`,children:a.exit_code})]})]})]}),(0,d.jsx)("div",{className:"w-full h-px bg-[var(--card-border)]"}),(0,d.jsxs)("div",{className:"space-y-4",children:[(0,d.jsx)("div",{className:"flex items-center justify-between",children:(0,d.jsx)("h4",{className:"text-xs font-semibold uppercase tracking-wider text-[var(--muted-foreground)]",children:"Execution"})}),(0,d.jsxs)("div",{className:"flex items-center justify-between bg-[var(--card-bg)] p-2 rounded border border-[var(--card-border)]",children:[(0,d.jsx)("span",{className:"text-sm font-medium",children:"Swarm Mode"}),(0,d.jsx)("button",{onClick:()=>(a=>{$(a);let b={swarm:a};a?b.swarm_models=_:(b.provider=V,b.model=X),v(b)})(!Z),className:`w-10 h-5 rounded-full transition-colors relative ${Z?"bg-[var(--primary)]":"bg-[var(--muted-foreground)]/30"}`,children:(0,d.jsx)("span",{className:`absolute top-0.5 left-0.5 w-4 h-4 bg-white rounded-full transition-transform ${Z?"translate-x-5":"translate-x-0"}`})})]}),Z?(0,d.jsxs)("div",{className:"space-y-3 animate-fade-in",children:[(0,d.jsx)("label",{className:"block text-xs text-[var(--muted-foreground)]",children:"Swarm Models"}),(0,d.jsxs)("div",{className:"grid gap-2",children:[(0,d.jsxs)("div",{className:"grid grid-cols-[1fr_1.2fr_auto] gap-2",children:[(0,d.jsx)("select",{value:ab,onChange:a=>ac(a.target.value),className:"text-sm bg-[var(--card-bg)] border border-[var(--card-border)] rounded px-2 py-1.5 focus:border-[var(--primary)] outline-none transition-colors appearance-none",children:x.map(a=>(0,d.jsx)("option",{value:a.id,children:a.label},a.id))}),(0,d.jsx)("input",{value:ad,onChange:a=>ae(a.target.value),placeholder:"model name",className:"text-sm bg-[var(--card-bg)] border border-[var(--card-border)] rounded px-2 py-1.5 focus:border-[var(--primary)] outline-none transition-colors"}),(0,d.jsx)("button",{type:"button",onClick:()=>{let a=ad.trim();if(!a)return;let b={provider:ab,model:a};if(_.some(a=>a.provider.toLowerCase()===b.provider.toLowerCase()&&a.model.toLowerCase()===b.model.toLowerCase()))return;let c=[..._,b];if(aa(c),ae(""),l)return void v({swarm_models:c});Z&&av({swarm_models:c})},className:"px-3 py-1.5 text-xs font-semibold rounded-md bg-[var(--card-bg)] border border-[var(--card-border)] hover:border-[var(--muted-foreground)]",children:"Add"})]}),_.length>0&&(0,d.jsx)("div",{className:"space-y-1",children:_.map((a,b)=>(0,d.jsxs)("div",{className:"flex items-center justify-between px-2 py-1.5 rounded text-sm border bg-[var(--card-bg)] border-[var(--card-border)]",children:[(0,d.jsxs)("span",{className:"truncate",children:[(0,d.jsx)("span",{className:"text-[var(--muted-foreground)]",children:a.provider}),(0,d.jsx)("span",{className:"mx-1",children:"\xb7"}),(0,d.jsx)("span",{children:a.model})]}),(0,d.jsx)("button",{type:"button",onClick:()=>(a=>{let b=_.filter((b,c)=>c!==a);if(aa(b),l)return void v({swarm_models:b});Z&&av({swarm_models:b})})(b),className:"text-xs text-[var(--destructive)] hover:underline",children:"Remove"})]},`${a.provider}-${a.model}-${b}`))})]})]}):(0,d.jsxs)("div",{className:"space-y-3 animate-fade-in",children:[(0,d.jsxs)("div",{children:[(0,d.jsx)("label",{className:"block text-xs text-[var(--muted-foreground)] mb-1.5",children:"Provider"}),(0,d.jsxs)("select",{value:V,onChange:a=>(a=>{if(W(a),l)return void v({provider:a});v({provider:a})})(a.target.value),className:"w-full text-sm bg-[var(--card-bg)] border border-[var(--card-border)] rounded px-2 py-1.5 focus:border-[var(--primary)] outline-none transition-colors appearance-none",children:[(0,d.jsxs)("option",{value:"",children:["Default (",aj,")"]}),x.map(a=>(0,d.jsx)("option",{value:a.id,children:a.label},a.id))]})]}),(0,d.jsxs)("div",{children:[(0,d.jsx)("label",{className:"block text-xs text-[var(--muted-foreground)] mb-1.5",children:"Model"}),(0,d.jsx)("input",{value:X,onChange:a=>(a=>{if(Y(a),l)return void v({model:a});av({model:a})})(a.target.value),placeholder:`Default (${ak||"unspecified"})`,className:"w-full text-sm bg-[var(--card-bg)] border border-[var(--card-border)] rounded px-2 py-1.5 focus:border-[var(--primary)] outline-none transition-colors"})]})]}),ah&&(0,d.jsx)("p",{className:"text-xs text-[var(--destructive)]",children:ah})]}),!l&&(0,d.jsx)("div",{className:"w-full h-px bg-[var(--card-border)]"}),!l&&(0,d.jsx)(D,{projectContext:am,fallbackProjectSlug:an}),!l&&(0,d.jsx)("div",{className:"w-full h-px bg-[var(--card-border)]"}),!l&&(0,d.jsxs)("div",{children:[(0,d.jsxs)("button",{onClick:()=>K(!I),className:`w-full flex items-center justify-between p-3 rounded-lg border transition-all duration-200 ${I?"bg-[var(--primary-muted)] border-[var(--primary)] text-[var(--primary)]":"bg-[var(--card-bg)] border-[var(--card-border)] hover:border-[var(--muted-foreground)]"}`,children:[(0,d.jsx)("span",{className:"text-sm font-medium",children:"Learnings"}),(0,d.jsx)("span",{className:"text-xs bg-[var(--background)] px-2 py-0.5 rounded-full border border-[var(--card-border)]",children:c.length})]}),I&&(0,d.jsx)("div",{className:"mt-4 animate-fade-in-up",children:(0,d.jsx)(o,{learnings:c,taskId:a.id,projectContext:am,onAddLearning:u,compact:!0})})]}),!l&&(0,d.jsx)("div",{className:"mt-auto text-xs text-[var(--muted-foreground)]",children:(0,d.jsxs)("p",{children:["Created ",new Date(a.created_at||Date.now()).toLocaleDateString()]})})]})]})]})})}function J({label:a,value:b,truncate:c,mono:f=!0}){let[g,h]=(0,e.useState)(!1);return(0,d.jsxs)("div",{className:"flex items-center justify-between group h-7",children:[(0,d.jsx)("span",{className:"text-sm text-[var(--muted-foreground)]",children:a}),(0,d.jsxs)("button",{onClick:()=>{navigator.clipboard.writeText(b),h(!0),setTimeout(()=>h(!1),2e3)},className:`text-sm ${f?"font-mono":""} flex items-center gap-1.5 hover:bg-[var(--primary-muted)] hover:text-[var(--primary)] px-1.5 py-0.5 -mr-1.5 rounded transition-all`,title:"Click to copy",children:[(0,d.jsx)("span",{className:`${c?"max-w-[140px] truncate":""} ${g?"opacity-50":""}`,children:c&&b.length>20?b.slice(0,8)+"..."+b.slice(-8):b}),g?(0,d.jsx)("span",{className:"text-[10px] uppercase font-bold tracking-wider text-[var(--primary)] animate-scale-in",children:"Copied"}):(0,d.jsx)("svg",{className:"w-3.5 h-3.5 opacity-0 group-hover:opacity-60 transition-opacity",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor",children:(0,d.jsx)("path",{strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:2,d:"M8 16H6a2 2 0 01-2-2V6a2 2 0 012-2h8a2 2 0 012 2v2m-6 12h8a2 2 0 002-2v-8a2 2 0 00-2-2h-8a2 2 0 00-2 2v8a2 2 0 002 2z"})})]})]})}},7889:(a,b,c)=>{c.d(b,{u:()=>f});var d=c(38301);let e=[{id:"gemini",label:"Gemini"},{id:"claude",label:"Claude"},{id:"ollama",label:"Ollama"},{id:"codex",label:"Codex"}];function f(){let[a,b]=(0,d.useState)(e),[c,f]=(0,d.useState)(!0),g=(0,d.useMemo)(()=>a.map(a=>a.id),[a]);return{providers:a,providerIds:g,loading:c}}},88885:(a,b,c)=>{c.d(b,{Tw:()=>g,ls:()=>h,mP:()=>m,ou:()=>l});var d=c(38301);let e={ideation:"\uD83D\uDCA1",planning:"\uD83D\uDCCB",execution:"\uD83D\uDCBB",verification:"\uD83E\uDDEA",done:"✅",coding:"\uD83D\uDCBB",qa:"\uD83E\uDDEA",acceptance:"✓",pr:"\uD83D\uDD00",pr_review:"\uD83D\uDC40",merge:"\uD83D\uDE80"},f={ideation:"var(--warning)",planning:"var(--info)",execution:"var(--primary)",verification:"var(--accent)",done:"var(--success)",coding:"var(--primary)",qa:"var(--accent)",acceptance:"#8b5cf6",pr:"#f97316",pr_review:"#ef4444",merge:"#22c55e"},g=["ideation","planning","execution","verification","done"],h={ideation:{icon:"\uD83D\uDCA1",label:"Ideation",color:"var(--warning)"},planning:{icon:"\uD83D\uDCCB",label:"Planning",color:"var(--info)"},execution:{icon:"\uD83D\uDCBB",label:"Execution",color:"var(--primary)"},verification:{icon:"\uD83E\uDDEA",label:"Verification",color:"var(--accent)"},done:{icon:"✅",label:"Done",color:"var(--success)"}},i="00000000-0000-0000-0000-000000000001",j=[{id:"00000000-0000-0000-0001-000000000001",workflow_id:i,name:"ideation",label:"Ideation",prompt:"Research and scope this. Define approach, estimate effort, list unknowns.",provider:null,model:null,position:0,node_type:"step",created_at:new Date(0).toISOString(),updated_at:new Date(0).toISOString()},{id:"00000000-0000-0000-0001-000000000002",workflow_id:i,name:"planning",label:"Planning",prompt:"Create detailed plan with tasks, milestones, and dependencies.",provider:null,model:null,position:1,node_type:"step",created_at:new Date(0).toISOString(),updated_at:new Date(0).toISOString()},{id:"00000000-0000-0000-0001-000000000003",workflow_id:i,name:"execution",label:"Execution",prompt:"Implement based on the plan. Write clean, tested code.",provider:null,model:null,position:2,node_type:"step",created_at:new Date(0).toISOString(),updated_at:new Date(0).toISOString()},{id:"00000000-0000-0000-0001-000000000004",workflow_id:i,name:"verification",label:"Verification",prompt:"Test thoroughly. Find edge cases. Fix bugs. Verify it works.",provider:null,model:null,position:3,node_type:"gate",created_at:new Date(0).toISOString(),updated_at:new Date(0).toISOString()},{id:"00000000-0000-0000-0001-000000000009",workflow_id:i,name:"done",label:"Done",prompt:"Task completed and shipped.",provider:null,model:null,position:4,node_type:"terminal",created_at:new Date(0).toISOString(),updated_at:new Date(0).toISOString()}],k=[{id:"fallback-ideation-planning",workflow_id:i,from_node:"ideation",to_node:"planning",condition:"done",priority:0,created_at:new Date(0).toISOString()},{id:"fallback-planning-execution",workflow_id:i,from_node:"planning",to_node:"execution",condition:"done",priority:0,created_at:new Date(0).toISOString()},{id:"fallback-execution-verification",workflow_id:i,from_node:"execution",to_node:"verification",condition:"done",priority:0,created_at:new Date(0).toISOString()},{id:"fallback-verification-done",workflow_id:i,from_node:"verification",to_node:"done",condition:"done",priority:0,created_at:new Date(0).toISOString()},{id:"fallback-verification-execution",workflow_id:i,from_node:"verification",to_node:"execution",condition:"failed",priority:1,created_at:new Date(0).toISOString()}],l="00000000-0000-0000-0000-000000000001";function m(a={}){let b=a.workflowId||l,[c,n]=(0,d.useState)(null),[o,p]=(0,d.useState)(!0),[q,r]=(0,d.useState)(null),s=(0,d.useCallback)(async()=>{p(!0),r(null);try{let a=await fetch(`/api/workflows/${b}`);if(!a.ok)throw Error(`Failed to fetch workflow: ${a.statusText}`);let c=await a.json(),d=c.workflow??c,e=Array.isArray(d.nodes)?d.nodes:[];Array.isArray(d.transitions)&&d.transitions,e&&0!==e.length||b!==i?n(d):n({...d,nodes:j,transitions:k})}catch(a){console.error("Error fetching workflow:",a),r(a instanceof Error?a:Error(String(a)))}finally{p(!1)}},[b]),t=(0,d.useMemo)(()=>c?.nodes?.length?c.nodes.slice().sort((a,b)=>a.position-b.position).map(a=>a.name):[...g],[c]),u=(0,d.useMemo)(()=>{if(!c?.nodes?.length)return h;let a={};for(let b of c.nodes)a[b.name]={icon:e[b.name]||"\uD83D\uDCCC",label:b.label||b.name.charAt(0).toUpperCase()+b.name.slice(1),color:f[b.name]||"var(--primary)"};return a},[c]),v=(0,d.useMemo)(()=>c?.transitions||[],[c]),w=(0,d.useCallback)((a,b)=>{if(a===b)return!0;if(!c?.nodes?.length){let c=g.indexOf(a),d=g.indexOf(b);return d<c||d===c+1}let d=t.indexOf(a),e=t.indexOf(b);return!!(e<d||v.some(c=>c.from_node===a&&c.to_node===b))||e===d+1},[c,t,v]);return{workflow:c,stages:t,stageConfig:u,transitions:v,isLoading:o,error:q,refetch:s,isValidTransition:w}}}};