@pixelbyte-software/pixcode 1.54.11 → 1.55.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (331) hide show
  1. package/dist-server/server/claude-sdk.js +1 -1
  2. package/dist-server/server/claude-sdk.js.map +1 -1
  3. package/dist-server/server/index.js +6 -11
  4. package/dist-server/server/index.js.map +1 -1
  5. package/dist-server/server/modules/security/permission-policy.js.map +1 -0
  6. package/dist-server/server/modules/tasks/git-worktree.js +98 -0
  7. package/dist-server/server/modules/tasks/git-worktree.js.map +1 -0
  8. package/dist-server/server/modules/tasks/index.js +8 -0
  9. package/dist-server/server/modules/tasks/index.js.map +1 -0
  10. package/dist-server/server/modules/tasks/prompt-builder.js +85 -0
  11. package/dist-server/server/modules/tasks/prompt-builder.js.map +1 -0
  12. package/dist-server/server/modules/tasks/role-presets.js +94 -0
  13. package/dist-server/server/modules/tasks/role-presets.js.map +1 -0
  14. package/dist-server/server/modules/tasks/runners/claude-runner.js +109 -0
  15. package/dist-server/server/modules/tasks/runners/claude-runner.js.map +1 -0
  16. package/dist-server/server/modules/tasks/runners/codex-runner.js +67 -0
  17. package/dist-server/server/modules/tasks/runners/codex-runner.js.map +1 -0
  18. package/dist-server/server/modules/tasks/runners/spawn-runner.js +111 -0
  19. package/dist-server/server/modules/tasks/runners/spawn-runner.js.map +1 -0
  20. package/dist-server/server/modules/tasks/runners/types.js +5 -0
  21. package/dist-server/server/modules/tasks/runners/types.js.map +1 -0
  22. package/dist-server/server/modules/tasks/scheduler.js +69 -0
  23. package/dist-server/server/modules/tasks/scheduler.js.map +1 -0
  24. package/dist-server/server/modules/tasks/task-queue.js +81 -0
  25. package/dist-server/server/modules/tasks/task-queue.js.map +1 -0
  26. package/dist-server/server/modules/tasks/task-routes.js +195 -0
  27. package/dist-server/server/modules/tasks/task-routes.js.map +1 -0
  28. package/dist-server/server/modules/tasks/task-runner.js +187 -0
  29. package/dist-server/server/modules/tasks/task-runner.js.map +1 -0
  30. package/dist-server/server/modules/tasks/task-store.js +196 -0
  31. package/dist-server/server/modules/tasks/task-store.js.map +1 -0
  32. package/dist-server/server/modules/tasks/task-types.js +5 -0
  33. package/dist-server/server/modules/tasks/task-types.js.map +1 -0
  34. package/dist-server/server/modules/tasks/user-interaction.js +73 -0
  35. package/dist-server/server/modules/tasks/user-interaction.js.map +1 -0
  36. package/dist-server/server/services/control-room.js +9 -1
  37. package/dist-server/server/services/control-room.js.map +1 -1
  38. package/dist-server/server/services/public-api-manifest.js +5 -5
  39. package/dist-server/server/services/public-api-manifest.js.map +1 -1
  40. package/dist-server/server/services/telegram/control-center.js +10 -10
  41. package/dist-server/server/services/telegram/control-center.js.map +1 -1
  42. package/dist-server/server/services/telegram/telegram-gateway.js +2 -2
  43. package/dist-server/server/services/telegram/telegram-gateway.js.map +1 -1
  44. package/dist-server/server/services/telegram/translations.js +5 -5
  45. package/dist-server/server/services/telegram/translations.js.map +1 -1
  46. package/package.json +1 -1
  47. package/server/claude-sdk.js +1 -1
  48. package/server/index.js +6 -23
  49. package/server/modules/tasks/git-worktree.ts +102 -0
  50. package/server/modules/tasks/index.ts +9 -0
  51. package/server/modules/tasks/prompt-builder.ts +98 -0
  52. package/server/modules/tasks/role-presets.ts +113 -0
  53. package/server/modules/tasks/runners/claude-runner.ts +120 -0
  54. package/server/modules/tasks/runners/codex-runner.ts +80 -0
  55. package/server/modules/tasks/runners/spawn-runner.ts +122 -0
  56. package/server/modules/tasks/runners/types.ts +25 -0
  57. package/server/modules/tasks/scheduler.ts +75 -0
  58. package/server/modules/tasks/task-queue.ts +91 -0
  59. package/server/modules/tasks/task-routes.ts +245 -0
  60. package/server/modules/tasks/task-runner.ts +219 -0
  61. package/server/modules/tasks/task-store.ts +223 -0
  62. package/server/modules/tasks/task-types.ts +100 -0
  63. package/server/modules/tasks/user-interaction.ts +93 -0
  64. package/server/services/control-room.js +10 -1
  65. package/server/services/public-api-manifest.js +5 -5
  66. package/server/services/telegram/control-center.js +10 -10
  67. package/server/services/telegram/telegram-gateway.js +2 -2
  68. package/server/services/telegram/translations.js +5 -5
  69. package/dist/api-automation.html +0 -110
  70. package/dist/api-docs.html +0 -548
  71. package/dist/assets/KaTeX_AMS-Regular-BQhdFMY1.woff2 +0 -0
  72. package/dist/assets/KaTeX_AMS-Regular-DMm9YOAa.woff +0 -0
  73. package/dist/assets/KaTeX_AMS-Regular-DRggAlZN.ttf +0 -0
  74. package/dist/assets/KaTeX_Caligraphic-Bold-ATXxdsX0.ttf +0 -0
  75. package/dist/assets/KaTeX_Caligraphic-Bold-BEiXGLvX.woff +0 -0
  76. package/dist/assets/KaTeX_Caligraphic-Bold-Dq_IR9rO.woff2 +0 -0
  77. package/dist/assets/KaTeX_Caligraphic-Regular-CTRA-rTL.woff +0 -0
  78. package/dist/assets/KaTeX_Caligraphic-Regular-Di6jR-x-.woff2 +0 -0
  79. package/dist/assets/KaTeX_Caligraphic-Regular-wX97UBjC.ttf +0 -0
  80. package/dist/assets/KaTeX_Fraktur-Bold-BdnERNNW.ttf +0 -0
  81. package/dist/assets/KaTeX_Fraktur-Bold-BsDP51OF.woff +0 -0
  82. package/dist/assets/KaTeX_Fraktur-Bold-CL6g_b3V.woff2 +0 -0
  83. package/dist/assets/KaTeX_Fraktur-Regular-CB_wures.ttf +0 -0
  84. package/dist/assets/KaTeX_Fraktur-Regular-CTYiF6lA.woff2 +0 -0
  85. package/dist/assets/KaTeX_Fraktur-Regular-Dxdc4cR9.woff +0 -0
  86. package/dist/assets/KaTeX_Main-Bold-Cx986IdX.woff2 +0 -0
  87. package/dist/assets/KaTeX_Main-Bold-Jm3AIy58.woff +0 -0
  88. package/dist/assets/KaTeX_Main-Bold-waoOVXN0.ttf +0 -0
  89. package/dist/assets/KaTeX_Main-BoldItalic-DxDJ3AOS.woff2 +0 -0
  90. package/dist/assets/KaTeX_Main-BoldItalic-DzxPMmG6.ttf +0 -0
  91. package/dist/assets/KaTeX_Main-BoldItalic-SpSLRI95.woff +0 -0
  92. package/dist/assets/KaTeX_Main-Italic-3WenGoN9.ttf +0 -0
  93. package/dist/assets/KaTeX_Main-Italic-BMLOBm91.woff +0 -0
  94. package/dist/assets/KaTeX_Main-Italic-NWA7e6Wa.woff2 +0 -0
  95. package/dist/assets/KaTeX_Main-Regular-B22Nviop.woff2 +0 -0
  96. package/dist/assets/KaTeX_Main-Regular-Dr94JaBh.woff +0 -0
  97. package/dist/assets/KaTeX_Main-Regular-ypZvNtVU.ttf +0 -0
  98. package/dist/assets/KaTeX_Math-BoldItalic-B3XSjfu4.ttf +0 -0
  99. package/dist/assets/KaTeX_Math-BoldItalic-CZnvNsCZ.woff2 +0 -0
  100. package/dist/assets/KaTeX_Math-BoldItalic-iY-2wyZ7.woff +0 -0
  101. package/dist/assets/KaTeX_Math-Italic-DA0__PXp.woff +0 -0
  102. package/dist/assets/KaTeX_Math-Italic-flOr_0UB.ttf +0 -0
  103. package/dist/assets/KaTeX_Math-Italic-t53AETM-.woff2 +0 -0
  104. package/dist/assets/KaTeX_SansSerif-Bold-CFMepnvq.ttf +0 -0
  105. package/dist/assets/KaTeX_SansSerif-Bold-D1sUS0GD.woff2 +0 -0
  106. package/dist/assets/KaTeX_SansSerif-Bold-DbIhKOiC.woff +0 -0
  107. package/dist/assets/KaTeX_SansSerif-Italic-C3H0VqGB.woff2 +0 -0
  108. package/dist/assets/KaTeX_SansSerif-Italic-DN2j7dab.woff +0 -0
  109. package/dist/assets/KaTeX_SansSerif-Italic-YYjJ1zSn.ttf +0 -0
  110. package/dist/assets/KaTeX_SansSerif-Regular-BNo7hRIc.ttf +0 -0
  111. package/dist/assets/KaTeX_SansSerif-Regular-CS6fqUqJ.woff +0 -0
  112. package/dist/assets/KaTeX_SansSerif-Regular-DDBCnlJ7.woff2 +0 -0
  113. package/dist/assets/KaTeX_Script-Regular-C5JkGWo-.ttf +0 -0
  114. package/dist/assets/KaTeX_Script-Regular-D3wIWfF6.woff2 +0 -0
  115. package/dist/assets/KaTeX_Script-Regular-D5yQViql.woff +0 -0
  116. package/dist/assets/KaTeX_Size1-Regular-C195tn64.woff +0 -0
  117. package/dist/assets/KaTeX_Size1-Regular-Dbsnue_I.ttf +0 -0
  118. package/dist/assets/KaTeX_Size1-Regular-mCD8mA8B.woff2 +0 -0
  119. package/dist/assets/KaTeX_Size2-Regular-B7gKUWhC.ttf +0 -0
  120. package/dist/assets/KaTeX_Size2-Regular-Dy4dx90m.woff2 +0 -0
  121. package/dist/assets/KaTeX_Size2-Regular-oD1tc_U0.woff +0 -0
  122. package/dist/assets/KaTeX_Size3-Regular-CTq5MqoE.woff +0 -0
  123. package/dist/assets/KaTeX_Size3-Regular-DgpXs0kz.ttf +0 -0
  124. package/dist/assets/KaTeX_Size4-Regular-BF-4gkZK.woff +0 -0
  125. package/dist/assets/KaTeX_Size4-Regular-DWFBv043.ttf +0 -0
  126. package/dist/assets/KaTeX_Size4-Regular-Dl5lxZxV.woff2 +0 -0
  127. package/dist/assets/KaTeX_Typewriter-Regular-C0xS9mPB.woff +0 -0
  128. package/dist/assets/KaTeX_Typewriter-Regular-CO6r4hn1.woff2 +0 -0
  129. package/dist/assets/KaTeX_Typewriter-Regular-D3Ib7_Hf.ttf +0 -0
  130. package/dist/assets/index-Bcqs_1vc.js +0 -877
  131. package/dist/assets/index-Dz1luE0u.css +0 -32
  132. package/dist/assets/index-ak1p_4ew.js +0 -11
  133. package/dist/assets/localMonaco-DFIbtDNp.js +0 -1
  134. package/dist/assets/vendor-codemirror-CIYNS698.js +0 -41
  135. package/dist/assets/vendor-react-DB6V5Fl1.js +0 -59
  136. package/dist/assets/vendor-xterm-C7tpxJl7.js +0 -9
  137. package/dist/clear-cache.html +0 -85
  138. package/dist/convert-icons.md +0 -53
  139. package/dist/docs.html +0 -308
  140. package/dist/favicon.png +0 -0
  141. package/dist/favicon.svg +0 -8
  142. package/dist/features.html +0 -133
  143. package/dist/generate-icons.js +0 -49
  144. package/dist/humans.txt +0 -15
  145. package/dist/icons/claude-ai-icon.svg +0 -1
  146. package/dist/icons/codex-white.svg +0 -3
  147. package/dist/icons/codex.svg +0 -3
  148. package/dist/icons/cursor-white.svg +0 -12
  149. package/dist/icons/cursor.svg +0 -1
  150. package/dist/icons/gemini-ai-icon.svg +0 -1
  151. package/dist/icons/icon-128x128.png +0 -0
  152. package/dist/icons/icon-128x128.svg +0 -9
  153. package/dist/icons/icon-144x144.png +0 -0
  154. package/dist/icons/icon-144x144.svg +0 -9
  155. package/dist/icons/icon-152x152.png +0 -0
  156. package/dist/icons/icon-152x152.svg +0 -9
  157. package/dist/icons/icon-192x192.png +0 -0
  158. package/dist/icons/icon-192x192.svg +0 -9
  159. package/dist/icons/icon-384x384.png +0 -0
  160. package/dist/icons/icon-384x384.svg +0 -9
  161. package/dist/icons/icon-512x512.png +0 -0
  162. package/dist/icons/icon-512x512.svg +0 -9
  163. package/dist/icons/icon-72x72.png +0 -0
  164. package/dist/icons/icon-72x72.svg +0 -9
  165. package/dist/icons/icon-96x96.png +0 -0
  166. package/dist/icons/icon-96x96.svg +0 -9
  167. package/dist/icons/icon-template.svg +0 -9
  168. package/dist/icons/opencode-logo-dark.svg +0 -1
  169. package/dist/icons/opencode-logo-light.svg +0 -1
  170. package/dist/icons/qwen-ai-icon.png +0 -0
  171. package/dist/icons/qwen-logo.svg +0 -15
  172. package/dist/index.html +0 -62
  173. package/dist/landing.html +0 -268
  174. package/dist/llms-full.txt +0 -119
  175. package/dist/llms.txt +0 -53
  176. package/dist/logo-128.png +0 -0
  177. package/dist/logo-256.png +0 -0
  178. package/dist/logo-32.png +0 -0
  179. package/dist/logo-512.png +0 -0
  180. package/dist/logo-64.png +0 -0
  181. package/dist/logo.png +0 -0
  182. package/dist/logo.svg +0 -12
  183. package/dist/manifest.json +0 -61
  184. package/dist/openapi.yaml +0 -1696
  185. package/dist/orchestration.html +0 -125
  186. package/dist/robots.txt +0 -4
  187. package/dist/screenshots/cli-selection.png +0 -0
  188. package/dist/screenshots/desktop-main.png +0 -0
  189. package/dist/screenshots/mobile-chat.png +0 -0
  190. package/dist/screenshots/tools-modal.png +0 -0
  191. package/dist/site.css +0 -692
  192. package/dist/sitemap.xml +0 -51
  193. package/dist/sw.js +0 -132
  194. package/dist-server/server/modules/orchestration/a2a/adapter-registry.js +0 -73
  195. package/dist-server/server/modules/orchestration/a2a/adapter-registry.js.map +0 -1
  196. package/dist-server/server/modules/orchestration/a2a/adapters/abstract-a2a.adapter.js +0 -17
  197. package/dist-server/server/modules/orchestration/a2a/adapters/abstract-a2a.adapter.js.map +0 -1
  198. package/dist-server/server/modules/orchestration/a2a/adapters/claude-code.adapter.js +0 -236
  199. package/dist-server/server/modules/orchestration/a2a/adapters/claude-code.adapter.js.map +0 -1
  200. package/dist-server/server/modules/orchestration/a2a/adapters/codex.adapter.js +0 -202
  201. package/dist-server/server/modules/orchestration/a2a/adapters/codex.adapter.js.map +0 -1
  202. package/dist-server/server/modules/orchestration/a2a/adapters/cursor.adapter.js +0 -205
  203. package/dist-server/server/modules/orchestration/a2a/adapters/cursor.adapter.js.map +0 -1
  204. package/dist-server/server/modules/orchestration/a2a/adapters/gemini.adapter.js +0 -205
  205. package/dist-server/server/modules/orchestration/a2a/adapters/gemini.adapter.js.map +0 -1
  206. package/dist-server/server/modules/orchestration/a2a/adapters/json-event.adapter.js +0 -84
  207. package/dist-server/server/modules/orchestration/a2a/adapters/json-event.adapter.js.map +0 -1
  208. package/dist-server/server/modules/orchestration/a2a/adapters/json-event.adapter.test.js +0 -43
  209. package/dist-server/server/modules/orchestration/a2a/adapters/json-event.adapter.test.js.map +0 -1
  210. package/dist-server/server/modules/orchestration/a2a/adapters/opencode.adapter.js +0 -205
  211. package/dist-server/server/modules/orchestration/a2a/adapters/opencode.adapter.js.map +0 -1
  212. package/dist-server/server/modules/orchestration/a2a/adapters/qwen.adapter.js +0 -205
  213. package/dist-server/server/modules/orchestration/a2a/adapters/qwen.adapter.js.map +0 -1
  214. package/dist-server/server/modules/orchestration/a2a/agent-card.js +0 -50
  215. package/dist-server/server/modules/orchestration/a2a/agent-card.js.map +0 -1
  216. package/dist-server/server/modules/orchestration/a2a/auth.middleware.js +0 -25
  217. package/dist-server/server/modules/orchestration/a2a/auth.middleware.js.map +0 -1
  218. package/dist-server/server/modules/orchestration/a2a/bus.js +0 -34
  219. package/dist-server/server/modules/orchestration/a2a/bus.js.map +0 -1
  220. package/dist-server/server/modules/orchestration/a2a/routes.js +0 -502
  221. package/dist-server/server/modules/orchestration/a2a/routes.js.map +0 -1
  222. package/dist-server/server/modules/orchestration/a2a/task-dispatcher.js +0 -295
  223. package/dist-server/server/modules/orchestration/a2a/task-dispatcher.js.map +0 -1
  224. package/dist-server/server/modules/orchestration/a2a/task-store.js +0 -144
  225. package/dist-server/server/modules/orchestration/a2a/task-store.js.map +0 -1
  226. package/dist-server/server/modules/orchestration/a2a/types.js +0 -6
  227. package/dist-server/server/modules/orchestration/a2a/types.js.map +0 -1
  228. package/dist-server/server/modules/orchestration/a2a/validator.js +0 -101
  229. package/dist-server/server/modules/orchestration/a2a/validator.js.map +0 -1
  230. package/dist-server/server/modules/orchestration/index.js +0 -27
  231. package/dist-server/server/modules/orchestration/index.js.map +0 -1
  232. package/dist-server/server/modules/orchestration/preview/port-watcher.js +0 -90
  233. package/dist-server/server/modules/orchestration/preview/port-watcher.js.map +0 -1
  234. package/dist-server/server/modules/orchestration/preview/preview-proxy.js +0 -58
  235. package/dist-server/server/modules/orchestration/preview/preview-proxy.js.map +0 -1
  236. package/dist-server/server/modules/orchestration/preview/types.js +0 -2
  237. package/dist-server/server/modules/orchestration/preview/types.js.map +0 -1
  238. package/dist-server/server/modules/orchestration/security/permission-policy.js.map +0 -1
  239. package/dist-server/server/modules/orchestration/tasks/orchestration-task-store.js +0 -34
  240. package/dist-server/server/modules/orchestration/tasks/orchestration-task-store.js.map +0 -1
  241. package/dist-server/server/modules/orchestration/tasks/orchestration-task.routes.js +0 -70
  242. package/dist-server/server/modules/orchestration/tasks/orchestration-task.routes.js.map +0 -1
  243. package/dist-server/server/modules/orchestration/tasks/orchestration-task.service.js +0 -181
  244. package/dist-server/server/modules/orchestration/tasks/orchestration-task.service.js.map +0 -1
  245. package/dist-server/server/modules/orchestration/tasks/orchestration-task.types.js +0 -2
  246. package/dist-server/server/modules/orchestration/tasks/orchestration-task.types.js.map +0 -1
  247. package/dist-server/server/modules/orchestration/tasks/task-run-graph.js +0 -100
  248. package/dist-server/server/modules/orchestration/tasks/task-run-graph.js.map +0 -1
  249. package/dist-server/server/modules/orchestration/workflows/approval-queue.js +0 -72
  250. package/dist-server/server/modules/orchestration/workflows/approval-queue.js.map +0 -1
  251. package/dist-server/server/modules/orchestration/workflows/built-in-workflows.js +0 -126
  252. package/dist-server/server/modules/orchestration/workflows/built-in-workflows.js.map +0 -1
  253. package/dist-server/server/modules/orchestration/workflows/context-packet.js +0 -89
  254. package/dist-server/server/modules/orchestration/workflows/context-packet.js.map +0 -1
  255. package/dist-server/server/modules/orchestration/workflows/handoff-artifact.js +0 -123
  256. package/dist-server/server/modules/orchestration/workflows/handoff-artifact.js.map +0 -1
  257. package/dist-server/server/modules/orchestration/workflows/workflow-fallback-policy.js +0 -114
  258. package/dist-server/server/modules/orchestration/workflows/workflow-fallback-policy.js.map +0 -1
  259. package/dist-server/server/modules/orchestration/workflows/workflow-replay.js +0 -177
  260. package/dist-server/server/modules/orchestration/workflows/workflow-replay.js.map +0 -1
  261. package/dist-server/server/modules/orchestration/workflows/workflow-runner.js +0 -1718
  262. package/dist-server/server/modules/orchestration/workflows/workflow-runner.js.map +0 -1
  263. package/dist-server/server/modules/orchestration/workflows/workflow-store.js +0 -76
  264. package/dist-server/server/modules/orchestration/workflows/workflow-store.js.map +0 -1
  265. package/dist-server/server/modules/orchestration/workflows/workflow-templates.js +0 -242
  266. package/dist-server/server/modules/orchestration/workflows/workflow-templates.js.map +0 -1
  267. package/dist-server/server/modules/orchestration/workflows/workflow-trace.js +0 -388
  268. package/dist-server/server/modules/orchestration/workflows/workflow-trace.js.map +0 -1
  269. package/dist-server/server/modules/orchestration/workflows/workflow.routes.js +0 -508
  270. package/dist-server/server/modules/orchestration/workflows/workflow.routes.js.map +0 -1
  271. package/dist-server/server/modules/orchestration/workflows/workflow.types.js +0 -2
  272. package/dist-server/server/modules/orchestration/workflows/workflow.types.js.map +0 -1
  273. package/dist-server/server/modules/orchestration/workflows/workspace-target.js +0 -100
  274. package/dist-server/server/modules/orchestration/workflows/workspace-target.js.map +0 -1
  275. package/dist-server/server/modules/orchestration/workspace/docker-workspace.js +0 -123
  276. package/dist-server/server/modules/orchestration/workspace/docker-workspace.js.map +0 -1
  277. package/dist-server/server/modules/orchestration/workspace/path-safety.js +0 -48
  278. package/dist-server/server/modules/orchestration/workspace/path-safety.js.map +0 -1
  279. package/dist-server/server/modules/orchestration/workspace/types.js +0 -11
  280. package/dist-server/server/modules/orchestration/workspace/types.js.map +0 -1
  281. package/dist-server/server/modules/orchestration/workspace/workspace-manager.js +0 -84
  282. package/dist-server/server/modules/orchestration/workspace/workspace-manager.js.map +0 -1
  283. package/dist-server/server/modules/orchestration/workspace/worktree-workspace.js +0 -97
  284. package/dist-server/server/modules/orchestration/workspace/worktree-workspace.js.map +0 -1
  285. package/server/modules/orchestration/a2a/adapter-registry.ts +0 -108
  286. package/server/modules/orchestration/a2a/adapters/abstract-a2a.adapter.ts +0 -63
  287. package/server/modules/orchestration/a2a/adapters/claude-code.adapter.ts +0 -286
  288. package/server/modules/orchestration/a2a/adapters/codex.adapter.ts +0 -244
  289. package/server/modules/orchestration/a2a/adapters/cursor.adapter.ts +0 -249
  290. package/server/modules/orchestration/a2a/adapters/gemini.adapter.ts +0 -248
  291. package/server/modules/orchestration/a2a/adapters/json-event.adapter.test.ts +0 -60
  292. package/server/modules/orchestration/a2a/adapters/json-event.adapter.ts +0 -101
  293. package/server/modules/orchestration/a2a/adapters/opencode.adapter.ts +0 -248
  294. package/server/modules/orchestration/a2a/adapters/qwen.adapter.ts +0 -248
  295. package/server/modules/orchestration/a2a/agent-card.ts +0 -55
  296. package/server/modules/orchestration/a2a/auth.middleware.ts +0 -29
  297. package/server/modules/orchestration/a2a/bus.ts +0 -46
  298. package/server/modules/orchestration/a2a/routes.ts +0 -586
  299. package/server/modules/orchestration/a2a/task-dispatcher.ts +0 -345
  300. package/server/modules/orchestration/a2a/task-store.ts +0 -178
  301. package/server/modules/orchestration/a2a/types.ts +0 -126
  302. package/server/modules/orchestration/a2a/validator.ts +0 -113
  303. package/server/modules/orchestration/index.ts +0 -99
  304. package/server/modules/orchestration/preview/port-watcher.ts +0 -112
  305. package/server/modules/orchestration/preview/preview-proxy.ts +0 -60
  306. package/server/modules/orchestration/preview/types.ts +0 -19
  307. package/server/modules/orchestration/tasks/orchestration-task-store.ts +0 -41
  308. package/server/modules/orchestration/tasks/orchestration-task.routes.ts +0 -81
  309. package/server/modules/orchestration/tasks/orchestration-task.service.ts +0 -201
  310. package/server/modules/orchestration/tasks/orchestration-task.types.ts +0 -40
  311. package/server/modules/orchestration/tasks/task-run-graph.ts +0 -155
  312. package/server/modules/orchestration/workflows/approval-queue.ts +0 -106
  313. package/server/modules/orchestration/workflows/built-in-workflows.ts +0 -127
  314. package/server/modules/orchestration/workflows/context-packet.ts +0 -186
  315. package/server/modules/orchestration/workflows/handoff-artifact.ts +0 -175
  316. package/server/modules/orchestration/workflows/workflow-fallback-policy.ts +0 -161
  317. package/server/modules/orchestration/workflows/workflow-replay.ts +0 -254
  318. package/server/modules/orchestration/workflows/workflow-runner.ts +0 -2062
  319. package/server/modules/orchestration/workflows/workflow-store.ts +0 -97
  320. package/server/modules/orchestration/workflows/workflow-templates.ts +0 -272
  321. package/server/modules/orchestration/workflows/workflow-trace.ts +0 -424
  322. package/server/modules/orchestration/workflows/workflow.routes.ts +0 -586
  323. package/server/modules/orchestration/workflows/workflow.types.ts +0 -111
  324. package/server/modules/orchestration/workflows/workspace-target.ts +0 -122
  325. package/server/modules/orchestration/workspace/docker-workspace.ts +0 -136
  326. package/server/modules/orchestration/workspace/path-safety.ts +0 -55
  327. package/server/modules/orchestration/workspace/types.ts +0 -52
  328. package/server/modules/orchestration/workspace/workspace-manager.ts +0 -102
  329. package/server/modules/orchestration/workspace/worktree-workspace.ts +0 -126
  330. /package/dist-server/server/modules/{orchestration/security → security}/permission-policy.js +0 -0
  331. /package/server/modules/{orchestration/security → security}/permission-policy.ts +0 -0
@@ -1,286 +0,0 @@
1
- // server/modules/orchestration/a2a/adapters/claude-code.adapter.ts
2
- // Wraps the existing server/claude-sdk.js queryClaudeSDK() function.
3
- // claude-sdk.js was designed to stream SDK messages over a WebSocket
4
- // connection, so we feed it a "fake WS" that captures send() calls and
5
- // emits A2A bus events instead.
6
- //
7
- // IMPORTANT: claude-sdk.js calls ws.send(<NormalizedMessage object>) — it
8
- // does NOT JSON.stringify before send. Our shim therefore receives objects
9
- // (not strings) and dispatches on `frame.kind` (not `frame.type`). See
10
- // server/shared/types.ts for the MessageKind enum.
11
-
12
- import crypto from 'node:crypto';
13
-
14
- // eslint-disable-next-line boundaries/no-unknown -- claude-sdk.js is a top-level CLI runtime not yet classified by eslint.config.js; cleanup deferred (cascades into a server/services classification gap).
15
- import { abortClaudeSDKSession, queryClaudeSDK } from '@/claude-sdk.js';
16
- import { AbstractA2AAdapter } from '@/modules/orchestration/a2a/adapters/abstract-a2a.adapter.js';
17
- import type {
18
- AdapterContext,
19
- TaskHandle,
20
- } from '@/modules/orchestration/a2a/adapters/abstract-a2a.adapter.js';
21
- import type { AgentCard, Part, Task } from '@/modules/orchestration/a2a/types.js';
22
-
23
- interface FakeWS {
24
- send(data: unknown): void;
25
- readyState: number;
26
- }
27
-
28
- // WebSocket.OPEN per the ws library — claude-sdk.js gates send() on readyState === 1.
29
- const WS_OPEN = 1;
30
-
31
- function joinPartsToPrompt(parts: Part[]): string {
32
- return parts
33
- .map((p) => {
34
- if (p.kind === 'text') return p.text;
35
- if (p.kind === 'data') return JSON.stringify(p.data);
36
- // file parts: include name + uri/inline marker
37
- return `[file:${p.name}${p.uri ? ` uri=${p.uri}` : ''}]`;
38
- })
39
- .join('\n');
40
- }
41
-
42
- function newId(prefix: string): string {
43
- return `${prefix}_${crypto.randomBytes(8).toString('hex')}`;
44
- }
45
-
46
- export class ClaudeCodeA2AAdapter extends AbstractA2AAdapter {
47
- readonly id = 'claude-code';
48
-
49
- readonly agentCard: AgentCard = {
50
- name: 'pixcode-claude-code',
51
- description: 'Anthropic Claude Code, accessed via Pixcode',
52
- url: '/api/orchestration/agents/claude-code',
53
- version: '1.0.0',
54
- capabilities: ['streaming', 'fileEdit', 'commandExec', 'mcp'],
55
- skills: [
56
- {
57
- id: 'architectural-review',
58
- description: 'Review code architecture and propose structural changes',
59
- },
60
- {
61
- id: 'typescript-edit',
62
- description: 'Edit TypeScript files with type-aware reasoning',
63
- },
64
- {
65
- id: 'multi-file-refactor',
66
- description: 'Coordinated edits across many files',
67
- },
68
- {
69
- id: 'test-run',
70
- description: 'Run test suites and react to results',
71
- },
72
- ],
73
- authentication: { type: 'bearer' },
74
- };
75
-
76
- private readonly active = new Map<string, { sessionId: string | null }>();
77
-
78
- async submitTask(task: Task, ctx: AdapterContext): Promise<TaskHandle> {
79
- // Foundation: only the last user message is fed in. Multi-turn resumption
80
- // (input-required tasks, workflow chaining) needs to pass options.sessionId
81
- // and append history; deferred to a follow-on plan.
82
- const promptText = joinPartsToPrompt(
83
- task.history[task.history.length - 1]?.parts ?? [],
84
- );
85
- const session = { sessionId: null as string | null };
86
- this.active.set(task.id, session);
87
-
88
- this.emitState(task.id, 'working');
89
-
90
- const fakeWS: FakeWS = {
91
- readyState: WS_OPEN,
92
- send: (data) => this.handleSdkFrame(task.id, data, session),
93
- };
94
-
95
- const finished = (async () => {
96
- try {
97
- await queryClaudeSDK(
98
- promptText,
99
- {
100
- cwd: ctx.cwd,
101
- permissionMode: ctx.permissionMode ?? 'default',
102
- permissionPolicy: ctx.permissionPolicy,
103
- permissionPolicyContext: ctx.permissionPolicyContext,
104
- toolsSettings: ctx.toolsSettings,
105
- },
106
- fakeWS,
107
- );
108
- // If cancelTask removed us from `active` first, suppress the spurious
109
- // 'completed' that would otherwise race the 'canceled' state.
110
- if (this.active.has(task.id)) {
111
- this.emitState(task.id, 'completed');
112
- }
113
- } catch (err) {
114
- if (this.active.has(task.id)) {
115
- this.emitState(task.id, 'failed', {
116
- code: 'ADAPTER_RUNTIME_ERROR',
117
- message: err instanceof Error ? err.message : String(err),
118
- });
119
- }
120
- } finally {
121
- this.active.delete(task.id);
122
- }
123
- })();
124
-
125
- return {
126
- cancel: () => this.cancelTask(task.id),
127
- finished,
128
- };
129
- }
130
-
131
- async cancelTask(taskId: string): Promise<void> {
132
- const session = this.active.get(taskId);
133
- if (!session) {
134
- this.emitState(taskId, 'canceled');
135
- return;
136
- }
137
- // Delete BEFORE awaiting so submitTask's IIFE guard (this.active.has)
138
- // suppresses the spurious 'completed' state when queryClaudeSDK's
139
- // for-await loop unwinds from the abort.
140
- this.active.delete(taskId);
141
- if (session.sessionId) {
142
- try {
143
- await abortClaudeSDKSession(session.sessionId);
144
- } catch {
145
- // swallow — adapter has already cleaned its own state
146
- }
147
- }
148
- this.emitState(taskId, 'canceled');
149
- }
150
-
151
- /**
152
- * claude-sdk.js calls `ws.send(<NormalizedMessage>)` with a JS OBJECT
153
- * (not a JSON string). We translate each frame into A2A bus events.
154
- * See server/shared/types.ts for the MessageKind union.
155
- */
156
- private handleSdkFrame(
157
- taskId: string,
158
- frame: unknown,
159
- session: { sessionId: string | null },
160
- ): void {
161
- if (!frame || typeof frame !== 'object') return;
162
- const f = frame as {
163
- kind?: string;
164
- sessionId?: unknown;
165
- newSessionId?: unknown;
166
- text?: unknown;
167
- content?: unknown;
168
- toolName?: unknown;
169
- toolInput?: unknown;
170
- toolResult?: unknown;
171
- };
172
-
173
- // session_created carries the new session id in `newSessionId`. Capture
174
- // it here so cancelTask can call abortClaudeSDKSession with the right id.
175
- if (
176
- f.kind === 'session_created' &&
177
- typeof f.newSessionId === 'string' &&
178
- !session.sessionId
179
- ) {
180
- session.sessionId = f.newSessionId;
181
- }
182
-
183
- switch (f.kind) {
184
- case 'session_created':
185
- case 'status':
186
- case 'stream_delta':
187
- case 'stream_end':
188
- // session_created and status are not user-facing.
189
- // stream_delta and stream_end CARRY user-visible delta text but are
190
- // not currently emitted by claude-sdk.js (it doesn't pass
191
- // includePartialMessages: true to query()). If that flag flips on
192
- // upstream, these cases must be re-routed to emit text Messages.
193
- return;
194
-
195
- case 'text':
196
- case 'thinking': {
197
- const text =
198
- typeof f.text === 'string'
199
- ? f.text
200
- : typeof f.content === 'string'
201
- ? f.content
202
- : null;
203
- if (text) {
204
- this.emitMessage(taskId, {
205
- messageId: newId('msg'),
206
- role: 'agent',
207
- parts: [{ kind: 'text', text }],
208
- taskId,
209
- });
210
- }
211
- return;
212
- }
213
-
214
- case 'tool_use': {
215
- this.emitArtifact(taskId, {
216
- artifactId: newId('art'),
217
- type: 'command-output',
218
- parts: [
219
- {
220
- kind: 'data',
221
- data: { toolName: f.toolName, toolInput: f.toolInput },
222
- },
223
- ],
224
- metadata: { source: 'claude-tool-use' },
225
- });
226
- return;
227
- }
228
-
229
- case 'tool_result': {
230
- this.emitArtifact(taskId, {
231
- artifactId: newId('art'),
232
- type: 'command-output',
233
- parts: [{ kind: 'data', data: { toolResult: f.toolResult } }],
234
- metadata: { source: 'claude-tool-result' },
235
- });
236
- return;
237
- }
238
-
239
- case 'permission_request':
240
- case 'permission_cancelled':
241
- case 'interactive_prompt':
242
- case 'task_notification':
243
- // Informational — surface as data artifact for visibility.
244
- this.emitArtifact(taskId, {
245
- artifactId: newId('art'),
246
- type: 'data',
247
- parts: [{ kind: 'data', data: f as Record<string, unknown> }],
248
- metadata: { source: `claude-${f.kind}` },
249
- });
250
- return;
251
-
252
- case 'error': {
253
- // claude-sdk.js catches internally and emits an error frame without
254
- // rethrowing, so the IIFE await would resolve cleanly. Force the
255
- // failed state here and remove from active so the IIFE's
256
- // 'completed' emit is suppressed by its active.has() guard.
257
- const message =
258
- typeof f.content === 'string'
259
- ? f.content
260
- : typeof f.text === 'string'
261
- ? f.text
262
- : 'Claude Code reported an error';
263
- this.emitState(taskId, 'failed', {
264
- code: 'CLAUDE_RUNTIME_ERROR',
265
- message,
266
- details: f as Record<string, unknown>,
267
- });
268
- this.active.delete(taskId);
269
- return;
270
- }
271
-
272
- case 'complete':
273
- // Lifecycle redundant with the IIFE's 'completed' emit; suppress to
274
- // avoid double-signaling. The IIFE owns terminal state transitions.
275
- return;
276
-
277
- default:
278
- // Unknown kind — surface for visibility
279
- this.emitArtifact(taskId, {
280
- artifactId: newId('art'),
281
- type: 'data',
282
- parts: [{ kind: 'data', data: f as Record<string, unknown> }],
283
- });
284
- }
285
- }
286
- }
@@ -1,244 +0,0 @@
1
- // server/modules/orchestration/a2a/adapters/codex.adapter.ts
2
- // Wraps the existing server/openai-codex.js queryCodex() runtime.
3
- // That runtime already emits provider-neutral NormalizedMessage frames,
4
- // so this adapter mainly translates those frames into A2A bus events.
5
-
6
- import crypto from 'node:crypto';
7
-
8
- // eslint-disable-next-line boundaries/no-unknown -- openai-codex.js is a top-level CLI runtime not yet classified by eslint.config.js; cleanup deferred.
9
- import { abortCodexSession, queryCodex } from '@/openai-codex.js';
10
- import { AbstractA2AAdapter } from '@/modules/orchestration/a2a/adapters/abstract-a2a.adapter.js';
11
- import type {
12
- AdapterContext,
13
- TaskHandle,
14
- } from '@/modules/orchestration/a2a/adapters/abstract-a2a.adapter.js';
15
- import type { AgentCard, Part, Task } from '@/modules/orchestration/a2a/types.js';
16
- import type { NormalizedMessage } from '@/shared/types.js';
17
-
18
- interface FakeWriter {
19
- send(data: unknown): void;
20
- isSSEStreamWriter: true;
21
- }
22
-
23
- function joinPartsToPrompt(parts: Part[]): string {
24
- return parts
25
- .map((part) => {
26
- if (part.kind === 'text') return part.text;
27
- if (part.kind === 'data') return JSON.stringify(part.data);
28
- return `[file:${part.name}${part.uri ? ` uri=${part.uri}` : ''}]`;
29
- })
30
- .join('\n');
31
- }
32
-
33
- function newId(prefix: string): string {
34
- return `${prefix}_${crypto.randomBytes(8).toString('hex')}`;
35
- }
36
-
37
- export class CodexA2AAdapter extends AbstractA2AAdapter {
38
- readonly id = 'codex';
39
-
40
- readonly agentCard: AgentCard = {
41
- name: 'pixcode-codex',
42
- description: 'OpenAI Codex, accessed via Pixcode',
43
- url: '/api/orchestration/agents/codex',
44
- version: '1.0.0',
45
- capabilities: ['streaming', 'fileEdit', 'commandExec', 'webSearch', 'mcp'],
46
- skills: [
47
- {
48
- id: 'typescript-edit',
49
- description: 'Edit TypeScript and JavaScript files with CLI-driven reasoning',
50
- },
51
- {
52
- id: 'command-execution',
53
- description: 'Run shell commands and react to their output',
54
- },
55
- {
56
- id: 'web-research',
57
- description: 'Use web search as part of the development workflow',
58
- },
59
- {
60
- id: 'task-planning',
61
- description: 'Create and update TODO-style execution plans',
62
- },
63
- ],
64
- authentication: { type: 'bearer' },
65
- };
66
-
67
- private readonly active = new Map<string, { sessionId: string | null }>();
68
-
69
- async submitTask(task: Task, ctx: AdapterContext): Promise<TaskHandle> {
70
- const promptText = joinPartsToPrompt(
71
- task.history[task.history.length - 1]?.parts ?? [],
72
- );
73
- const session = { sessionId: null as string | null };
74
- this.active.set(task.id, session);
75
-
76
- this.emitState(task.id, 'working');
77
-
78
- const fakeWriter: FakeWriter = {
79
- isSSEStreamWriter: true,
80
- send: (data) => this.handleRuntimeFrame(task.id, data, session),
81
- };
82
-
83
- const finished = (async () => {
84
- try {
85
- await queryCodex(
86
- promptText,
87
- {
88
- cwd: ctx.cwd,
89
- permissionMode: ctx.permissionMode ?? 'default',
90
- model: ctx.model,
91
- },
92
- fakeWriter,
93
- );
94
-
95
- if (this.active.has(task.id)) {
96
- this.emitState(task.id, 'completed');
97
- }
98
- } catch (err) {
99
- if (this.active.has(task.id)) {
100
- this.emitState(task.id, 'failed', {
101
- code: 'ADAPTER_RUNTIME_ERROR',
102
- message: err instanceof Error ? err.message : String(err),
103
- });
104
- }
105
- } finally {
106
- this.active.delete(task.id);
107
- }
108
- })();
109
-
110
- return {
111
- cancel: () => this.cancelTask(task.id),
112
- finished,
113
- };
114
- }
115
-
116
- async cancelTask(taskId: string): Promise<void> {
117
- const session = this.active.get(taskId);
118
- if (!session) {
119
- this.emitState(taskId, 'canceled');
120
- return;
121
- }
122
-
123
- this.active.delete(taskId);
124
- if (session.sessionId) {
125
- abortCodexSession(session.sessionId);
126
- }
127
- this.emitState(taskId, 'canceled');
128
- }
129
-
130
- private handleRuntimeFrame(
131
- taskId: string,
132
- frame: unknown,
133
- session: { sessionId: string | null },
134
- ): void {
135
- if (!frame || typeof frame !== 'object') return;
136
- const message = frame as Partial<NormalizedMessage>;
137
-
138
- if (
139
- message.kind === 'session_created' &&
140
- typeof message.newSessionId === 'string' &&
141
- !session.sessionId
142
- ) {
143
- session.sessionId = message.newSessionId;
144
- return;
145
- }
146
-
147
- switch (message.kind) {
148
- case 'text': {
149
- const text = typeof message.content === 'string' ? message.content : null;
150
- if (text && text.trim()) {
151
- this.emitMessage(taskId, {
152
- messageId: typeof message.id === 'string' ? message.id : newId('msg'),
153
- role: message.role === 'user' ? 'user' : 'agent',
154
- parts: [{ kind: 'text', text }],
155
- taskId,
156
- });
157
- }
158
- return;
159
- }
160
-
161
- case 'thinking': {
162
- const text = typeof message.content === 'string' ? message.content : '';
163
- this.emitArtifact(taskId, {
164
- artifactId: typeof message.id === 'string' ? message.id : newId('art'),
165
- type: 'data',
166
- parts: [{ kind: 'data', data: { kind: 'thinking', text } }],
167
- metadata: { source: 'codex-thinking' },
168
- });
169
- return;
170
- }
171
-
172
- case 'tool_use': {
173
- this.emitArtifact(taskId, {
174
- artifactId: typeof message.id === 'string' ? message.id : newId('art'),
175
- type: 'command-output',
176
- parts: [
177
- {
178
- kind: 'data',
179
- data: {
180
- toolName: message.toolName,
181
- toolInput: message.toolInput,
182
- toolResult: message.toolResult,
183
- output: message.output,
184
- exitCode: message.exitCode,
185
- status: message.status,
186
- },
187
- },
188
- ],
189
- metadata: { source: 'codex-tool-use' },
190
- });
191
- return;
192
- }
193
-
194
- case 'tool_result': {
195
- this.emitArtifact(taskId, {
196
- artifactId: typeof message.id === 'string' ? message.id : newId('art'),
197
- type: 'command-output',
198
- parts: [
199
- {
200
- kind: 'data',
201
- data: {
202
- toolId: message.toolId,
203
- content: message.content,
204
- isError: message.isError,
205
- toolUseResult: message.toolUseResult,
206
- },
207
- },
208
- ],
209
- metadata: { source: 'codex-tool-result' },
210
- });
211
- return;
212
- }
213
-
214
- case 'status':
215
- case 'stream_delta':
216
- case 'stream_end':
217
- case 'complete':
218
- case 'session_created':
219
- return;
220
-
221
- case 'error': {
222
- const text =
223
- typeof message.content === 'string' && message.content.length > 0
224
- ? message.content
225
- : 'Codex reported an error';
226
- this.emitState(taskId, 'failed', {
227
- code: 'ADAPTER_RUNTIME_ERROR',
228
- message: text,
229
- });
230
- this.active.delete(taskId);
231
- return;
232
- }
233
-
234
- default: {
235
- this.emitArtifact(taskId, {
236
- artifactId: typeof message.id === 'string' ? message.id : newId('art'),
237
- type: 'data',
238
- parts: [{ kind: 'data', data: message as Record<string, unknown> }],
239
- metadata: { source: `codex-${String(message.kind ?? 'event')}` },
240
- });
241
- }
242
- }
243
- }
244
- }