@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,424 +0,0 @@
1
- import os from 'node:os';
2
-
3
- import type {
4
- WorkflowNodeRun,
5
- WorkflowRun,
6
- WorkflowTraceEvent,
7
- } from '@/modules/orchestration/workflows/workflow.types.js';
8
-
9
- const MAX_TRACE_TEXT_CHARS = 2_400;
10
- const TERMINAL_STATES = new Set(['completed', 'failed', 'canceled', 'skipped']);
11
-
12
- function traceId(parts: Array<string | number | undefined>): string {
13
- return parts.filter((part) => part !== undefined && part !== '').join(':');
14
- }
15
-
16
- function durationMs(startedAt?: number, finishedAt?: number): number | undefined {
17
- if (!startedAt || !finishedAt) return undefined;
18
- return Math.max(0, finishedAt - startedAt);
19
- }
20
-
21
- function readString(value: unknown): string | undefined {
22
- return typeof value === 'string' && value.trim() ? value : undefined;
23
- }
24
-
25
- function readRecord(value: unknown): Record<string, unknown> | undefined {
26
- return value && typeof value === 'object' ? value as Record<string, unknown> : undefined;
27
- }
28
-
29
- function redactionValues(run: WorkflowRun): string[] {
30
- const metadata = run.metadata ?? {};
31
- const workspaceTarget = metadata.workspaceTarget && typeof metadata.workspaceTarget === 'object'
32
- ? metadata.workspaceTarget as Record<string, unknown>
33
- : {};
34
-
35
- return [
36
- os.homedir(),
37
- readString(metadata.projectPath),
38
- readString(metadata.selectedProjectPath),
39
- readString(workspaceTarget.path),
40
- readString(workspaceTarget.projectPath),
41
- readString(workspaceTarget.selectedProjectPath),
42
- ].filter((value): value is string => Boolean(value && value.length > 2));
43
- }
44
-
45
- function escapeRegExp(value: string): string {
46
- return value.replace(/[.*+?^${}()|[\]\\]/g, '\\$&');
47
- }
48
-
49
- export function redactTraceText(value: string | undefined, run: WorkflowRun, maxLength = MAX_TRACE_TEXT_CHARS): string | undefined {
50
- if (!value?.trim()) return undefined;
51
-
52
- let text = value;
53
- for (const secret of redactionValues(run)) {
54
- text = text.replace(new RegExp(escapeRegExp(secret), 'g'), '[workspace]');
55
- }
56
-
57
- text = text
58
- .replace(/\b(?:sk|ghp|github_pat|glpat|npm)_[A-Za-z0-9_=-]{12,}\b/gu, '[redacted-token]')
59
- .replace(/\b[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[A-Za-z]{2,}\b/gu, '[redacted-email]')
60
- .trim();
61
-
62
- if (text.length <= maxLength) return text;
63
- return `${text.slice(0, maxLength - 32).trimEnd()}\n...[trace truncated]`;
64
- }
65
-
66
- function eventBase(
67
- node: WorkflowNodeRun | undefined,
68
- ): Pick<WorkflowTraceEvent, 'actor' | 'adapterId' | 'agentInstanceId' | 'agentLabel' | 'model' | 'nodeId'> {
69
- if (!node) {
70
- return { actor: 'Pixcode' };
71
- }
72
-
73
- return {
74
- actor: node.agentLabel || node.adapterId || node.nodeId,
75
- nodeId: node.nodeId,
76
- adapterId: node.adapterId,
77
- agentInstanceId: node.agentInstanceId,
78
- agentLabel: node.agentLabel,
79
- model: node.model,
80
- };
81
- }
82
-
83
- function pushEvent(
84
- events: WorkflowTraceEvent[],
85
- event: WorkflowTraceEvent,
86
- ): void {
87
- events.push(event);
88
- }
89
-
90
- function artifactTitleKey(type: string): string {
91
- if (type === 'file-diff') return 'workflow.trace.fileChanged';
92
- if (type === 'preview-url') return 'workflow.trace.previewReady';
93
- if (type === 'command-output') return 'workflow.trace.commandOutput';
94
- if (type === 'handoff-artifact') return 'workflow.trace.handoffArtifact';
95
- return 'workflow.trace.artifact';
96
- }
97
-
98
- function artifactType(type: string): WorkflowTraceEvent['type'] {
99
- return type === 'file-diff' ? 'file' : 'artifact';
100
- }
101
-
102
- function artifactTitle(type: string): string {
103
- if (type === 'file-diff') return 'File changes captured';
104
- if (type === 'preview-url') return 'Preview output captured';
105
- if (type === 'command-output') return 'Command output captured';
106
- if (type === 'handoff-artifact') return 'Handoff artifact captured';
107
- return 'Artifact captured';
108
- }
109
-
110
- function artifactSummary(
111
- artifact: NonNullable<WorkflowNodeRun['artifacts']>[number],
112
- run: WorkflowRun,
113
- ): string | undefined {
114
- if (artifact.text?.trim()) {
115
- return redactTraceText(artifact.text, run);
116
- }
117
- if (artifact.data && Object.keys(artifact.data).length > 0) {
118
- return redactTraceText(JSON.stringify(artifact.data, null, 2), run);
119
- }
120
- return artifact.type;
121
- }
122
-
123
- function nodeTimestamp(run: WorkflowRun, node: WorkflowNodeRun, index: number): number {
124
- return node.startedAt ?? run.startedAt + index;
125
- }
126
-
127
- export function buildWorkflowTrace(run: WorkflowRun): WorkflowTraceEvent[] {
128
- const events: WorkflowTraceEvent[] = [];
129
-
130
- pushEvent(events, {
131
- id: traceId([run.id, 'run-started']),
132
- type: 'run',
133
- severity: 'info',
134
- status: run.status,
135
- timestamp: run.startedAt,
136
- durationMs: durationMs(run.startedAt, run.finishedAt),
137
- actor: 'Pixcode',
138
- title: 'Workflow run started',
139
- titleKey: 'workflow.trace.runStarted',
140
- summary: redactTraceText(run.input, run),
141
- metadata: {
142
- workflowId: run.workflowId,
143
- contextId: run.contextId,
144
- },
145
- });
146
-
147
- const replay = readRecord(run.metadata?.replay);
148
- if (replay) {
149
- pushEvent(events, {
150
- id: traceId([run.id, 'replay']),
151
- type: 'run',
152
- severity: replay.requiresApproval ? 'warning' : 'info',
153
- status: run.status,
154
- timestamp: run.startedAt + 0.25,
155
- actor: 'Pixcode',
156
- title: 'Workflow replay prepared',
157
- titleKey: 'workflow.trace.replay',
158
- summary: redactTraceText([
159
- `Source run: ${readString(replay.sourceRunId) ?? 'unknown'}`,
160
- `Scope: ${readString(replay.scope) ?? 'unknown'}`,
161
- Array.isArray(replay.selectedNodeIds) ? `Selected steps: ${replay.selectedNodeIds.join(', ')}` : undefined,
162
- replay.requiresApproval ? 'Replay required approval for prior shell, network, or file-write activity.' : undefined,
163
- ].filter(Boolean).join('\n'), run),
164
- metadata: replay,
165
- });
166
- }
167
-
168
- const workflowTemplate = readRecord(run.metadata?.workflowTemplate);
169
- if (workflowTemplate) {
170
- pushEvent(events, {
171
- id: traceId([run.id, 'workflow-template']),
172
- type: 'run',
173
- severity: 'info',
174
- status: run.status,
175
- timestamp: run.startedAt + 0.3,
176
- actor: 'Pixcode',
177
- title: 'Workflow template applied',
178
- titleKey: 'workflow.trace.template',
179
- summary: redactTraceText([
180
- `Template: ${readString(workflowTemplate.name) ?? readString(workflowTemplate.id) ?? 'unknown'}`,
181
- `Protocol: ${readString(workflowTemplate.protocol) ?? 'unknown'}`,
182
- Array.isArray(workflowTemplate.acceptanceCriteria)
183
- ? `Acceptance criteria:\n- ${workflowTemplate.acceptanceCriteria.filter((item) => typeof item === 'string').join('\n- ')}`
184
- : undefined,
185
- ].filter(Boolean).join('\n'), run),
186
- metadata: workflowTemplate,
187
- });
188
- }
189
-
190
- const fallbackEvents = Array.isArray(run.metadata?.fallbackEvents)
191
- ? run.metadata.fallbackEvents
192
- : [];
193
- fallbackEvents.forEach((event, index) => {
194
- const record = readRecord(event);
195
- if (!record) return;
196
- pushEvent(events, {
197
- id: traceId([run.id, 'fallback', index]),
198
- type: 'node',
199
- severity: 'warning',
200
- status: 'submitted',
201
- timestamp: typeof record.startedAt === 'number' ? record.startedAt : run.startedAt + 0.5 + index,
202
- actor: 'Pixcode',
203
- nodeId: readString(record.nodeId),
204
- title: 'Fallback agent started',
205
- titleKey: 'workflow.trace.fallback',
206
- summary: redactTraceText([
207
- `Trigger: ${readString(record.trigger) ?? 'unknown'}`,
208
- `Source node: ${readString(record.nodeId) ?? 'unknown'}`,
209
- `Fallback node: ${readString(record.fallbackNodeId) ?? 'unknown'}`,
210
- readString(record.reason) ? `Reason: ${readString(record.reason)}` : undefined,
211
- ].filter(Boolean).join('\n'), run),
212
- metadata: record,
213
- });
214
- });
215
-
216
- const fallbackSkippedEvents = Array.isArray(run.metadata?.fallbackSkippedEvents)
217
- ? run.metadata.fallbackSkippedEvents
218
- : [];
219
- fallbackSkippedEvents.forEach((event, index) => {
220
- const record = readRecord(event);
221
- if (!record) return;
222
- pushEvent(events, {
223
- id: traceId([run.id, 'fallback-skipped', index]),
224
- type: 'node',
225
- severity: 'info',
226
- status: 'skipped',
227
- timestamp: typeof record.createdAt === 'number' ? record.createdAt : run.startedAt + 0.75 + index,
228
- actor: 'Pixcode',
229
- nodeId: readString(record.nodeId),
230
- title: 'Fallback skipped',
231
- titleKey: 'workflow.trace.fallback',
232
- summary: redactTraceText([
233
- `Trigger: ${readString(record.trigger) ?? 'unknown'}`,
234
- `Skipped: ${readString(record.skippedReason) ?? 'policy did not allow fallback'}`,
235
- readString(record.reason) ? `Reason: ${readString(record.reason)}` : undefined,
236
- ].filter(Boolean).join('\n'), run),
237
- metadata: record,
238
- });
239
- });
240
-
241
- const permissionPolicyEvents = Array.isArray(run.metadata?.permissionPolicyEvents)
242
- ? run.metadata.permissionPolicyEvents
243
- : [];
244
- permissionPolicyEvents.forEach((event, index) => {
245
- const record = readRecord(event);
246
- if (!record) return;
247
- const behavior = readString(record.behavior);
248
- const capabilities = Array.isArray(record.capabilities)
249
- ? record.capabilities.filter((item): item is string => typeof item === 'string')
250
- : [];
251
- pushEvent(events, {
252
- id: traceId([run.id, 'permission-policy', readString(record.id) ?? index]),
253
- type: 'permission_policy',
254
- severity: behavior === 'deny' ? 'error' : behavior === 'prompt' ? 'warning' : 'info',
255
- status: behavior === 'deny' ? 'failed' : behavior === 'prompt' ? 'submitted' : 'completed',
256
- timestamp: typeof record.createdAt === 'number' ? record.createdAt : run.startedAt + 0.85 + index,
257
- actor: 'Pixcode',
258
- nodeId: readString(record.nodeId),
259
- adapterId: readString(record.adapterId),
260
- agentLabel: readString(record.agentLabel),
261
- title: 'Permission policy decision',
262
- titleKey: 'workflow.trace.permissionPolicy',
263
- summary: redactTraceText([
264
- `Decision: ${behavior ?? readString(record.status) ?? 'unknown'}`,
265
- capabilities.length > 0 ? `Capabilities: ${capabilities.join(', ')}` : undefined,
266
- readString(record.summary),
267
- readString(record.message),
268
- ].filter(Boolean).join('\n'), run),
269
- metadata: record,
270
- });
271
- });
272
-
273
- run.nodeRuns.forEach((node, index) => {
274
- const base = eventBase(node);
275
- const timestamp = nodeTimestamp(run, node, index);
276
- const nodeDuration = durationMs(node.startedAt, node.finishedAt);
277
-
278
- pushEvent(events, {
279
- id: traceId([run.id, node.nodeId, 'node']),
280
- type: 'node',
281
- severity: node.status === 'failed' ? 'error' : 'info',
282
- status: node.status,
283
- timestamp,
284
- durationMs: nodeDuration,
285
- ...base,
286
- title: TERMINAL_STATES.has(node.status) ? 'Workflow step finished' : 'Workflow step started',
287
- titleKey: TERMINAL_STATES.has(node.status) ? 'workflow.trace.nodeFinished' : 'workflow.trace.nodeStarted',
288
- summary: redactTraceText(node.assignment, run),
289
- metadata: {
290
- stage: node.stage,
291
- internal: node.internal,
292
- },
293
- });
294
-
295
- if (node.promptPreview) {
296
- pushEvent(events, {
297
- id: traceId([run.id, node.nodeId, 'prompt']),
298
- type: 'message',
299
- severity: 'info',
300
- status: node.status,
301
- timestamp: timestamp + 1,
302
- ...base,
303
- title: 'Prompt prepared',
304
- titleKey: 'workflow.trace.prompt',
305
- summary: redactTraceText(node.promptPreview, run),
306
- });
307
- }
308
-
309
- if (node.contextPacket) {
310
- pushEvent(events, {
311
- id: traceId([run.id, node.nodeId, 'context-packet']),
312
- type: 'message',
313
- severity: node.contextPacket.compaction.wasCompacted ? 'warning' : 'info',
314
- status: node.status,
315
- timestamp: timestamp + 1.5,
316
- ...base,
317
- title: 'Context packet prepared',
318
- titleKey: 'workflow.trace.contextPacket',
319
- summary: node.contextPacket.compaction.wasCompacted
320
- ? `Context compacted by ${node.contextPacket.compaction.omittedChars} characters`
321
- : 'Context packet prepared without compaction',
322
- metadata: {
323
- protocol: node.contextPacket.protocol,
324
- compaction: node.contextPacket.compaction,
325
- upstreamArtifactCount: node.contextPacket.upstreamArtifacts.length,
326
- sourceNodeIds: node.contextPacket.upstreamArtifacts.flatMap((artifact) => artifact.sourceNodeIds),
327
- },
328
- });
329
- }
330
-
331
- if (node.adapterId || node.model) {
332
- pushEvent(events, {
333
- id: traceId([run.id, node.nodeId, 'provider']),
334
- type: 'provider',
335
- severity: node.status === 'failed' ? 'error' : 'info',
336
- status: node.a2aTaskId ? 'submitted' : node.status,
337
- timestamp: timestamp + 2,
338
- durationMs: nodeDuration,
339
- ...base,
340
- title: 'Provider call',
341
- titleKey: 'workflow.trace.providerCall',
342
- summary: [node.adapterId, node.model].filter(Boolean).join(' / '),
343
- metadata: {
344
- a2aTaskId: node.a2aTaskId,
345
- permissionMode: node.permissionMode,
346
- timeoutMs: node.timeoutMs,
347
- },
348
- });
349
- }
350
-
351
- (node.messages ?? [])
352
- .filter((message) => message.role !== 'user' && message.text.trim())
353
- .forEach((message, messageIndex) => {
354
- pushEvent(events, {
355
- id: traceId([run.id, node.nodeId, 'message', messageIndex]),
356
- type: 'message',
357
- severity: 'info',
358
- status: node.status,
359
- timestamp: message.createdAt ?? timestamp + 10 + messageIndex,
360
- ...base,
361
- title: 'Agent message',
362
- titleKey: 'workflow.trace.agentMessage',
363
- summary: redactTraceText(message.text, run),
364
- metadata: {
365
- role: message.role,
366
- },
367
- });
368
- });
369
-
370
- (node.artifacts ?? []).forEach((artifact, artifactIndex) => {
371
- pushEvent(events, {
372
- id: traceId([run.id, node.nodeId, 'artifact', artifactIndex]),
373
- type: artifactType(artifact.type),
374
- severity: 'info',
375
- status: node.status,
376
- timestamp: node.finishedAt ?? timestamp + 20 + artifactIndex,
377
- ...base,
378
- title: artifactTitle(artifact.type),
379
- titleKey: artifactTitleKey(artifact.type),
380
- summary: artifactSummary(artifact, run),
381
- metadata: {
382
- artifactType: artifact.type,
383
- artifactMetadata: artifact.metadata,
384
- },
385
- });
386
- });
387
-
388
- if (node.error) {
389
- pushEvent(events, {
390
- id: traceId([run.id, node.nodeId, 'error']),
391
- type: 'error',
392
- severity: 'error',
393
- status: node.status,
394
- timestamp: node.finishedAt ?? timestamp + 30,
395
- durationMs: nodeDuration,
396
- ...base,
397
- title: 'Step error',
398
- titleKey: 'workflow.trace.error',
399
- summary: redactTraceText(node.error, run),
400
- });
401
- }
402
- });
403
-
404
- if (run.finishedAt) {
405
- pushEvent(events, {
406
- id: traceId([run.id, 'run-finished']),
407
- type: 'run',
408
- severity: run.status === 'failed' ? 'error' : 'info',
409
- status: run.status,
410
- timestamp: run.finishedAt,
411
- durationMs: durationMs(run.startedAt, run.finishedAt),
412
- actor: 'Pixcode',
413
- title: 'Workflow run finished',
414
- titleKey: 'workflow.trace.runFinished',
415
- summary: redactTraceText(readString(run.metadata?.error), run),
416
- metadata: {
417
- workflowId: run.workflowId,
418
- contextId: run.contextId,
419
- },
420
- });
421
- }
422
-
423
- return events.sort((a, b) => a.timestamp - b.timestamp || a.id.localeCompare(b.id));
424
- }