@pixelbyte-software/pixcode 1.34.0 → 1.35.1

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 (247) hide show
  1. package/LICENSE +718 -718
  2. package/README.de.md +248 -248
  3. package/README.ja.md +240 -240
  4. package/README.ko.md +240 -240
  5. package/README.md +303 -303
  6. package/README.ru.md +248 -248
  7. package/README.tr.md +250 -250
  8. package/README.zh-CN.md +240 -240
  9. package/dist/api-docs.html +548 -395
  10. package/dist/assets/index-B8w57E1r.css +32 -0
  11. package/dist/assets/index-CBdsvGSR.js +854 -0
  12. package/dist/clear-cache.html +85 -85
  13. package/dist/convert-icons.md +52 -52
  14. package/dist/favicon.svg +8 -8
  15. package/dist/generate-icons.js +48 -48
  16. package/dist/icons/codex-white.svg +3 -3
  17. package/dist/icons/codex.svg +3 -3
  18. package/dist/icons/cursor-white.svg +11 -11
  19. package/dist/icons/icon-128x128.svg +9 -9
  20. package/dist/icons/icon-144x144.svg +9 -9
  21. package/dist/icons/icon-152x152.svg +9 -9
  22. package/dist/icons/icon-192x192.svg +9 -9
  23. package/dist/icons/icon-384x384.svg +9 -9
  24. package/dist/icons/icon-512x512.svg +9 -9
  25. package/dist/icons/icon-72x72.svg +9 -9
  26. package/dist/icons/icon-96x96.svg +9 -9
  27. package/dist/icons/icon-template.svg +9 -9
  28. package/dist/icons/qwen-logo.svg +14 -14
  29. package/dist/index.html +59 -59
  30. package/dist/logo.svg +12 -12
  31. package/dist/manifest.json +60 -60
  32. package/dist/openapi.yaml +1693 -1311
  33. package/dist/sw.js +124 -124
  34. package/dist-server/server/claude-sdk.js +38 -7
  35. package/dist-server/server/claude-sdk.js.map +1 -1
  36. package/dist-server/server/cli.js +107 -112
  37. package/dist-server/server/cli.js.map +1 -1
  38. package/dist-server/server/daemon/manager.js +33 -33
  39. package/dist-server/server/daemon-manager.js +159 -112
  40. package/dist-server/server/daemon-manager.js.map +1 -1
  41. package/dist-server/server/database/json-store.js +8 -5
  42. package/dist-server/server/database/json-store.js.map +1 -1
  43. package/dist-server/server/index.js +31 -10
  44. package/dist-server/server/index.js.map +1 -1
  45. package/dist-server/server/modules/orchestration/a2a/adapter-registry.js +45 -19
  46. package/dist-server/server/modules/orchestration/a2a/adapter-registry.js.map +1 -1
  47. package/dist-server/server/modules/orchestration/a2a/adapters/abstract-a2a.adapter.js.map +1 -1
  48. package/dist-server/server/modules/orchestration/a2a/adapters/claude-code.adapter.js +1 -0
  49. package/dist-server/server/modules/orchestration/a2a/adapters/claude-code.adapter.js.map +1 -1
  50. package/dist-server/server/modules/orchestration/a2a/adapters/codex.adapter.js +202 -0
  51. package/dist-server/server/modules/orchestration/a2a/adapters/codex.adapter.js.map +1 -0
  52. package/dist-server/server/modules/orchestration/a2a/adapters/cursor.adapter.js +205 -0
  53. package/dist-server/server/modules/orchestration/a2a/adapters/cursor.adapter.js.map +1 -0
  54. package/dist-server/server/modules/orchestration/a2a/adapters/gemini.adapter.js +205 -0
  55. package/dist-server/server/modules/orchestration/a2a/adapters/gemini.adapter.js.map +1 -0
  56. package/dist-server/server/modules/orchestration/a2a/adapters/opencode.adapter.js +205 -0
  57. package/dist-server/server/modules/orchestration/a2a/adapters/opencode.adapter.js.map +1 -0
  58. package/dist-server/server/modules/orchestration/a2a/adapters/qwen.adapter.js +205 -0
  59. package/dist-server/server/modules/orchestration/a2a/adapters/qwen.adapter.js.map +1 -0
  60. package/dist-server/server/modules/orchestration/a2a/routes.js +298 -34
  61. package/dist-server/server/modules/orchestration/a2a/routes.js.map +1 -1
  62. package/dist-server/server/modules/orchestration/a2a/task-store.js +144 -0
  63. package/dist-server/server/modules/orchestration/a2a/task-store.js.map +1 -0
  64. package/dist-server/server/modules/orchestration/a2a/validator.js +16 -0
  65. package/dist-server/server/modules/orchestration/a2a/validator.js.map +1 -1
  66. package/dist-server/server/modules/orchestration/index.js +14 -0
  67. package/dist-server/server/modules/orchestration/index.js.map +1 -1
  68. package/dist-server/server/modules/orchestration/preview/port-watcher.js +90 -0
  69. package/dist-server/server/modules/orchestration/preview/port-watcher.js.map +1 -0
  70. package/dist-server/server/modules/orchestration/preview/preview-proxy.js +58 -0
  71. package/dist-server/server/modules/orchestration/preview/preview-proxy.js.map +1 -0
  72. package/dist-server/server/modules/orchestration/preview/types.js +2 -0
  73. package/dist-server/server/modules/orchestration/preview/types.js.map +1 -0
  74. package/dist-server/server/modules/orchestration/tasks/orchestration-task-store.js +37 -0
  75. package/dist-server/server/modules/orchestration/tasks/orchestration-task-store.js.map +1 -0
  76. package/dist-server/server/modules/orchestration/tasks/orchestration-task.routes.js +68 -0
  77. package/dist-server/server/modules/orchestration/tasks/orchestration-task.routes.js.map +1 -0
  78. package/dist-server/server/modules/orchestration/tasks/orchestration-task.service.js +128 -0
  79. package/dist-server/server/modules/orchestration/tasks/orchestration-task.service.js.map +1 -0
  80. package/dist-server/server/modules/orchestration/tasks/orchestration-task.types.js +2 -0
  81. package/dist-server/server/modules/orchestration/tasks/orchestration-task.types.js.map +1 -0
  82. package/dist-server/server/modules/orchestration/workflows/built-in-workflows.js +126 -0
  83. package/dist-server/server/modules/orchestration/workflows/built-in-workflows.js.map +1 -0
  84. package/dist-server/server/modules/orchestration/workflows/workflow-runner.js +1047 -0
  85. package/dist-server/server/modules/orchestration/workflows/workflow-runner.js.map +1 -0
  86. package/dist-server/server/modules/orchestration/workflows/workflow-store.js +76 -0
  87. package/dist-server/server/modules/orchestration/workflows/workflow-store.js.map +1 -0
  88. package/dist-server/server/modules/orchestration/workflows/workflow.routes.js +151 -0
  89. package/dist-server/server/modules/orchestration/workflows/workflow.routes.js.map +1 -0
  90. package/dist-server/server/modules/orchestration/workflows/workflow.types.js +2 -0
  91. package/dist-server/server/modules/orchestration/workflows/workflow.types.js.map +1 -0
  92. package/dist-server/server/modules/orchestration/workflows/workspace-target.js +98 -0
  93. package/dist-server/server/modules/orchestration/workflows/workspace-target.js.map +1 -0
  94. package/dist-server/server/modules/orchestration/workspace/docker-workspace.js +122 -0
  95. package/dist-server/server/modules/orchestration/workspace/docker-workspace.js.map +1 -0
  96. package/dist-server/server/modules/orchestration/workspace/path-safety.js +48 -0
  97. package/dist-server/server/modules/orchestration/workspace/path-safety.js.map +1 -0
  98. package/dist-server/server/modules/orchestration/workspace/types.js +11 -0
  99. package/dist-server/server/modules/orchestration/workspace/types.js.map +1 -0
  100. package/dist-server/server/modules/orchestration/workspace/workspace-manager.js +80 -0
  101. package/dist-server/server/modules/orchestration/workspace/workspace-manager.js.map +1 -0
  102. package/dist-server/server/modules/orchestration/workspace/worktree-workspace.js +96 -0
  103. package/dist-server/server/modules/orchestration/workspace/worktree-workspace.js.map +1 -0
  104. package/dist-server/server/modules/providers/index.js +3 -0
  105. package/dist-server/server/modules/providers/index.js.map +1 -0
  106. package/dist-server/server/openai-codex.js +35 -4
  107. package/dist-server/server/openai-codex.js.map +1 -1
  108. package/dist-server/server/routes/commands.js +25 -25
  109. package/dist-server/server/routes/git.js +17 -17
  110. package/dist-server/server/routes/taskmaster.js +525 -508
  111. package/dist-server/server/routes/taskmaster.js.map +1 -1
  112. package/package.json +180 -178
  113. package/scripts/fix-node-pty.js +67 -67
  114. package/scripts/smoke/a2a-roundtrip.mjs +86 -17
  115. package/scripts/smoke/orchestration-api.mjs +172 -0
  116. package/scripts/smoke/orchestration-live-run.mjs +176 -0
  117. package/server/claude-sdk.js +898 -857
  118. package/server/cli.js +935 -940
  119. package/server/constants/config.js +4 -4
  120. package/server/cursor-cli.js +342 -342
  121. package/server/daemon/manager.js +564 -564
  122. package/server/daemon-manager.js +959 -920
  123. package/server/database/db.js +794 -794
  124. package/server/database/json-store.js +197 -194
  125. package/server/gemini-cli.js +535 -535
  126. package/server/gemini-response-handler.js +79 -79
  127. package/server/index.js +3135 -3104
  128. package/server/load-env.js +34 -34
  129. package/server/middleware/auth.js +173 -173
  130. package/server/modules/orchestration/a2a/adapter-registry.ts +72 -22
  131. package/server/modules/orchestration/a2a/adapters/abstract-a2a.adapter.ts +9 -3
  132. package/server/modules/orchestration/a2a/adapters/claude-code.adapter.ts +1 -0
  133. package/server/modules/orchestration/a2a/adapters/codex.adapter.ts +244 -0
  134. package/server/modules/orchestration/a2a/adapters/cursor.adapter.ts +249 -0
  135. package/server/modules/orchestration/a2a/adapters/gemini.adapter.ts +248 -0
  136. package/server/modules/orchestration/a2a/adapters/opencode.adapter.ts +248 -0
  137. package/server/modules/orchestration/a2a/adapters/qwen.adapter.ts +248 -0
  138. package/server/modules/orchestration/a2a/routes.ts +349 -36
  139. package/server/modules/orchestration/a2a/task-store.ts +178 -0
  140. package/server/modules/orchestration/a2a/types.ts +14 -0
  141. package/server/modules/orchestration/a2a/validator.ts +25 -2
  142. package/server/modules/orchestration/index.ts +40 -0
  143. package/server/modules/orchestration/preview/port-watcher.ts +112 -0
  144. package/server/modules/orchestration/preview/preview-proxy.ts +60 -0
  145. package/server/modules/orchestration/preview/types.ts +19 -0
  146. package/server/modules/orchestration/tasks/orchestration-task-store.ts +45 -0
  147. package/server/modules/orchestration/tasks/orchestration-task.routes.ts +73 -0
  148. package/server/modules/orchestration/tasks/orchestration-task.service.ts +145 -0
  149. package/server/modules/orchestration/tasks/orchestration-task.types.ts +29 -0
  150. package/server/modules/orchestration/workflows/built-in-workflows.ts +127 -0
  151. package/server/modules/orchestration/workflows/workflow-runner.ts +1206 -0
  152. package/server/modules/orchestration/workflows/workflow-store.ts +97 -0
  153. package/server/modules/orchestration/workflows/workflow.routes.ts +169 -0
  154. package/server/modules/orchestration/workflows/workflow.types.ts +70 -0
  155. package/server/modules/orchestration/workflows/workspace-target.ts +120 -0
  156. package/server/modules/orchestration/workspace/docker-workspace.ts +135 -0
  157. package/server/modules/orchestration/workspace/path-safety.ts +55 -0
  158. package/server/modules/orchestration/workspace/types.ts +52 -0
  159. package/server/modules/orchestration/workspace/workspace-manager.ts +97 -0
  160. package/server/modules/orchestration/workspace/worktree-workspace.ts +125 -0
  161. package/server/modules/providers/index.ts +2 -0
  162. package/server/modules/providers/list/claude/claude-auth.provider.ts +145 -145
  163. package/server/modules/providers/list/claude/claude-mcp.provider.ts +135 -135
  164. package/server/modules/providers/list/claude/claude-sessions.provider.ts +306 -306
  165. package/server/modules/providers/list/claude/claude.provider.ts +15 -15
  166. package/server/modules/providers/list/codex/codex-auth.provider.ts +115 -115
  167. package/server/modules/providers/list/codex/codex-mcp.provider.ts +135 -135
  168. package/server/modules/providers/list/codex/codex-sessions.provider.ts +319 -319
  169. package/server/modules/providers/list/codex/codex.provider.ts +15 -15
  170. package/server/modules/providers/list/cursor/cursor-auth.provider.ts +143 -143
  171. package/server/modules/providers/list/cursor/cursor-mcp.provider.ts +108 -108
  172. package/server/modules/providers/list/cursor/cursor-sessions.provider.ts +421 -421
  173. package/server/modules/providers/list/cursor/cursor.provider.ts +15 -15
  174. package/server/modules/providers/list/gemini/gemini-auth.provider.ts +163 -163
  175. package/server/modules/providers/list/gemini/gemini-mcp.provider.ts +110 -110
  176. package/server/modules/providers/list/gemini/gemini-sessions.provider.ts +227 -227
  177. package/server/modules/providers/list/gemini/gemini.provider.ts +15 -15
  178. package/server/modules/providers/list/opencode/opencode-auth.provider.ts +130 -130
  179. package/server/modules/providers/list/opencode/opencode-mcp.provider.ts +126 -126
  180. package/server/modules/providers/list/opencode/opencode-sessions.provider.ts +232 -232
  181. package/server/modules/providers/list/opencode/opencode.provider.ts +29 -29
  182. package/server/modules/providers/list/qwen/qwen-auth.provider.ts +145 -145
  183. package/server/modules/providers/list/qwen/qwen-mcp.provider.ts +114 -114
  184. package/server/modules/providers/list/qwen/qwen-sessions.provider.ts +265 -265
  185. package/server/modules/providers/list/qwen/qwen.provider.ts +21 -21
  186. package/server/modules/providers/provider.registry.ts +40 -40
  187. package/server/modules/providers/provider.routes.ts +819 -819
  188. package/server/modules/providers/services/mcp.service.ts +86 -86
  189. package/server/modules/providers/services/provider-auth.service.ts +26 -26
  190. package/server/modules/providers/services/sessions.service.ts +45 -45
  191. package/server/modules/providers/shared/base/abstract.provider.ts +20 -20
  192. package/server/modules/providers/shared/mcp/mcp.provider.ts +151 -151
  193. package/server/modules/providers/shared/provider-configs.ts +142 -142
  194. package/server/modules/providers/tests/mcp.test.ts +293 -293
  195. package/server/openai-codex.js +462 -426
  196. package/server/opencode-cli.js +459 -459
  197. package/server/opencode-response-handler.js +107 -107
  198. package/server/projects.js +3105 -3105
  199. package/server/qwen-code-cli.js +395 -395
  200. package/server/qwen-response-handler.js +73 -73
  201. package/server/routes/agent.js +1365 -1365
  202. package/server/routes/auth.js +138 -138
  203. package/server/routes/codex.js +19 -19
  204. package/server/routes/commands.js +554 -554
  205. package/server/routes/cursor.js +52 -52
  206. package/server/routes/gemini.js +24 -24
  207. package/server/routes/git.js +1488 -1488
  208. package/server/routes/mcp-utils.js +31 -31
  209. package/server/routes/messages.js +61 -61
  210. package/server/routes/network.js +120 -120
  211. package/server/routes/plugins.js +318 -318
  212. package/server/routes/projects.js +915 -915
  213. package/server/routes/qwen.js +27 -27
  214. package/server/routes/settings.js +286 -286
  215. package/server/routes/taskmaster.js +1496 -1471
  216. package/server/routes/telegram.js +125 -125
  217. package/server/routes/user.js +123 -123
  218. package/server/services/external-access.js +171 -171
  219. package/server/services/install-jobs.js +571 -571
  220. package/server/services/notification-orchestrator.js +242 -242
  221. package/server/services/provider-credentials.js +189 -189
  222. package/server/services/provider-models.js +381 -381
  223. package/server/services/telegram/bot.js +279 -279
  224. package/server/services/telegram/telegram-http-client.js +130 -130
  225. package/server/services/telegram/translations.js +170 -170
  226. package/server/services/vapid-keys.js +36 -36
  227. package/server/sessionManager.js +225 -225
  228. package/server/shared/interfaces.ts +54 -54
  229. package/server/shared/types.ts +172 -172
  230. package/server/shared/utils.ts +193 -193
  231. package/server/tsconfig.json +36 -36
  232. package/server/utils/colors.js +21 -21
  233. package/server/utils/commandParser.js +303 -303
  234. package/server/utils/frontmatter.js +18 -18
  235. package/server/utils/gitConfig.js +34 -34
  236. package/server/utils/mcp-detector.js +147 -147
  237. package/server/utils/plugin-loader.js +457 -457
  238. package/server/utils/plugin-process-manager.js +184 -184
  239. package/server/utils/port-access.js +209 -209
  240. package/server/utils/runtime-paths.js +37 -37
  241. package/server/utils/taskmaster-websocket.js +128 -128
  242. package/server/utils/url-detection.js +71 -71
  243. package/server/vite-daemon.js +78 -78
  244. package/shared/modelConstants.js +162 -162
  245. package/shared/networkHosts.js +22 -22
  246. package/dist/assets/index-B1ghfb4w.css +0 -32
  247. package/dist/assets/index-BvClqlMf.js +0 -852
@@ -6,19 +6,39 @@ import { adapterRegistry } from '../../../modules/orchestration/a2a/adapter-regi
6
6
  import { buildPixcodeAgentCard } from '../../../modules/orchestration/a2a/agent-card.js';
7
7
  import { a2aAuth } from '../../../modules/orchestration/a2a/auth.middleware.js';
8
8
  import { a2aBus } from '../../../modules/orchestration/a2a/bus.js';
9
+ import { A2ATaskStore } from '../../../modules/orchestration/a2a/task-store.js';
9
10
  import { assertMessage, assertSubmitTaskInput, } from '../../../modules/orchestration/a2a/validator.js';
10
- // In-memory task store. Persistence is out of scope for the foundation;
11
- // a follow-on plan adds SQLite-backed storage.
12
- const tasks = new Map();
11
+ import { portWatcher } from '../../../modules/orchestration/preview/port-watcher.js';
12
+ import { workspaceManager } from '../../../modules/orchestration/workspace/workspace-manager.js';
13
+ import { WorkspaceError } from '../../../modules/orchestration/workspace/types.js';
14
+ function readRoutingHints(value) {
15
+ if (!value || typeof value !== 'object') {
16
+ return {};
17
+ }
18
+ const source = value;
19
+ return {
20
+ preferredAdapterId: typeof source.preferredAdapterId === 'string' ? source.preferredAdapterId : undefined,
21
+ preferredProvider: typeof source.preferredProvider === 'string' ? source.preferredProvider : undefined,
22
+ preferredSkillId: typeof source.preferredSkillId === 'string' ? source.preferredSkillId : undefined,
23
+ };
24
+ }
25
+ const TERMINAL = ['completed', 'canceled', 'failed'];
13
26
  // Per-task bus unsubscribe handles; called on terminal state.
14
27
  const taskUnsubs = new Map();
15
28
  // Eviction timeouts (terminal tasks live for 1 hour before being purged).
16
29
  const taskEvictions = new Map();
17
30
  const TERMINAL_TASK_TTL_MS = 60 * 60 * 1000; // 1 hour
18
31
  const MAX_TASKS = 1000;
32
+ const taskStore = new A2ATaskStore({ terminalTaskTtlMs: TERMINAL_TASK_TTL_MS });
33
+ const activeWorkspaces = new Map();
34
+ const previewStops = new Map();
35
+ const finalizingTasks = new Set();
19
36
  function newId(prefix) {
20
37
  return `${prefix}_${crypto.randomBytes(8).toString('hex')}`;
21
38
  }
39
+ function isTerminalTaskState(state) {
40
+ return TERMINAL.includes(state);
41
+ }
22
42
  function getBaseUrl(req) {
23
43
  // TODO: this trusts X-Forwarded-Proto/Host without checking app's
24
44
  // trust-proxy setting. Same posture as auth.middleware.ts; revisit
@@ -27,6 +47,125 @@ function getBaseUrl(req) {
27
47
  const host = req.header('x-forwarded-host') ?? req.get('host');
28
48
  return `${proto}://${host}`;
29
49
  }
50
+ function scheduleTaskEviction(taskId) {
51
+ const existingTimeout = taskEvictions.get(taskId);
52
+ if (existingTimeout) {
53
+ clearTimeout(existingTimeout);
54
+ }
55
+ const task = taskStore.get(taskId);
56
+ if (!task) {
57
+ taskEvictions.delete(taskId);
58
+ return;
59
+ }
60
+ const remainingMs = Math.max(0, task.updatedAt + TERMINAL_TASK_TTL_MS - Date.now());
61
+ taskEvictions.set(taskId, setTimeout(() => {
62
+ taskStore.delete(taskId);
63
+ taskEvictions.delete(taskId);
64
+ }, remainingMs));
65
+ }
66
+ function parseTaskState(value) {
67
+ if (typeof value !== 'string') {
68
+ return undefined;
69
+ }
70
+ const normalized = value.trim();
71
+ if (normalized === 'submitted' ||
72
+ normalized === 'working' ||
73
+ normalized === 'input-required' ||
74
+ normalized === 'completed' ||
75
+ normalized === 'canceled' ||
76
+ normalized === 'failed') {
77
+ return normalized;
78
+ }
79
+ return undefined;
80
+ }
81
+ function parsePositiveInt(value, fallback) {
82
+ if (typeof value !== 'string') {
83
+ return fallback;
84
+ }
85
+ const parsed = Number.parseInt(value, 10);
86
+ if (!Number.isFinite(parsed) || parsed < 0) {
87
+ return fallback;
88
+ }
89
+ return parsed;
90
+ }
91
+ function readString(value) {
92
+ return typeof value === 'string' && value.trim() ? value : undefined;
93
+ }
94
+ function readBoolean(value) {
95
+ return typeof value === 'boolean' ? value : undefined;
96
+ }
97
+ function readObject(value) {
98
+ return value && typeof value === 'object' ? value : undefined;
99
+ }
100
+ function readWorkspaceKind(value) {
101
+ return value === 'host' || value === 'worktree' || value === 'docker' ? value : undefined;
102
+ }
103
+ function workspaceMetadata(workspace, keepAfterCompletion) {
104
+ return {
105
+ id: workspace.id,
106
+ kind: workspace.kind,
107
+ path: workspace.path,
108
+ baseRef: workspace.baseRef,
109
+ branchName: workspace.branchName,
110
+ keepAfterCompletion,
111
+ };
112
+ }
113
+ async function finalizeTerminalTask(task) {
114
+ if (finalizingTasks.has(task.id))
115
+ return;
116
+ finalizingTasks.add(task.id);
117
+ const stopPreview = previewStops.get(task.id);
118
+ if (stopPreview) {
119
+ stopPreview();
120
+ previewStops.delete(task.id);
121
+ }
122
+ const workspace = activeWorkspaces.get(task.id);
123
+ try {
124
+ if (workspace) {
125
+ const diff = await workspace.diff();
126
+ a2aBus.publish({
127
+ kind: 'artifact',
128
+ taskId: task.id,
129
+ artifact: {
130
+ artifactId: newId('art'),
131
+ type: 'file-diff',
132
+ parts: [{ kind: 'text', text: diff }],
133
+ metadata: {
134
+ source: 'workspace-diff',
135
+ workspaceId: workspace.id,
136
+ workspaceKind: workspace.kind,
137
+ baseRef: workspace.baseRef,
138
+ },
139
+ },
140
+ });
141
+ const keepAfterCompletion = task.metadata?.workspace &&
142
+ typeof task.metadata.workspace === 'object' &&
143
+ readBoolean(task.metadata.workspace.keepAfterCompletion);
144
+ if (workspace.kind !== 'host' && keepAfterCompletion !== true) {
145
+ await workspace.destroy();
146
+ }
147
+ }
148
+ }
149
+ catch (error) {
150
+ const message = error instanceof Error ? error.message : String(error);
151
+ task.metadata = {
152
+ ...task.metadata,
153
+ workspaceFinalizationError: message,
154
+ };
155
+ task.updatedAt = Date.now();
156
+ taskStore.set(task);
157
+ }
158
+ finally {
159
+ activeWorkspaces.delete(task.id);
160
+ const unsub = taskUnsubs.get(task.id);
161
+ if (unsub) {
162
+ unsub();
163
+ taskUnsubs.delete(task.id);
164
+ }
165
+ scheduleTaskEviction(task.id);
166
+ finalizingTasks.delete(task.id);
167
+ }
168
+ }
30
169
  function attachBusToTask(task) {
31
170
  const unsubscribe = a2aBus.subscribe(task.id, (event) => {
32
171
  if (event.kind === 'task-state') {
@@ -34,33 +173,29 @@ function attachBusToTask(task) {
34
173
  if (event.error)
35
174
  task.error = event.error;
36
175
  task.updatedAt = Date.now();
37
- if (event.state === 'completed' || event.state === 'canceled' || event.state === 'failed') {
38
- // Release the listener; schedule eviction.
39
- const unsub = taskUnsubs.get(task.id);
40
- if (unsub) {
41
- unsub();
42
- taskUnsubs.delete(task.id);
43
- }
44
- const existingTimeout = taskEvictions.get(task.id);
45
- if (existingTimeout)
46
- clearTimeout(existingTimeout);
47
- taskEvictions.set(task.id, setTimeout(() => {
48
- tasks.delete(task.id);
49
- taskEvictions.delete(task.id);
50
- }, TERMINAL_TASK_TTL_MS));
176
+ taskStore.set(task);
177
+ if (isTerminalTaskState(event.state)) {
178
+ void finalizeTerminalTask(task);
51
179
  }
52
180
  }
53
181
  else if (event.kind === 'message') {
54
182
  task.history.push(event.message);
55
183
  task.updatedAt = Date.now();
184
+ taskStore.set(task);
56
185
  }
57
186
  else if (event.kind === 'artifact') {
58
187
  task.artifacts.push(event.artifact);
59
188
  task.updatedAt = Date.now();
189
+ taskStore.set(task);
60
190
  }
61
191
  });
62
192
  taskUnsubs.set(task.id, unsubscribe);
63
193
  }
194
+ for (const task of taskStore.values()) {
195
+ if (isTerminalTaskState(task.state)) {
196
+ scheduleTaskEviction(task.id);
197
+ }
198
+ }
64
199
  export function createA2ARouter() {
65
200
  const router = express.Router();
66
201
  router.use(express.json({ limit: '5mb' }));
@@ -80,6 +215,51 @@ export function createA2ARouter() {
80
215
  }
81
216
  res.json(adapter.agentCard);
82
217
  });
218
+ router.post('/adapters/resolve', (req, res) => {
219
+ const selector = typeof req.body?.adapterId === 'string' ? req.body.adapterId : '';
220
+ if (!selector.trim()) {
221
+ res.status(400).json({
222
+ error: { code: 'ADAPTER_ID_REQUIRED', message: 'adapterId is required.' },
223
+ });
224
+ return;
225
+ }
226
+ const routing = readRoutingHints(req.body?.routing);
227
+ const adapter = adapterRegistry.resolve(selector, routing);
228
+ if (!adapter) {
229
+ res.status(404).json({
230
+ error: {
231
+ code: 'ADAPTER_NOT_FOUND',
232
+ message: selector,
233
+ availableAdapters: adapterRegistry.list().map((candidate) => candidate.id),
234
+ },
235
+ });
236
+ return;
237
+ }
238
+ res.json({
239
+ selector,
240
+ resolvedAdapterId: adapter.id,
241
+ agentCard: adapter.agentCard,
242
+ });
243
+ });
244
+ router.get('/tasks', (req, res) => {
245
+ const state = parseTaskState(req.query.state);
246
+ const contextId = typeof req.query.contextId === 'string' ? req.query.contextId : undefined;
247
+ const adapterId = typeof req.query.adapterId === 'string' ? req.query.adapterId : undefined;
248
+ const limit = parsePositiveInt(req.query.limit, 50);
249
+ const tasks = taskStore
250
+ .list({ state, contextId, adapterId, limit })
251
+ .map((task) => taskStore.summarize(task));
252
+ res.json({
253
+ tasks,
254
+ count: tasks.length,
255
+ filters: {
256
+ state,
257
+ contextId,
258
+ adapterId,
259
+ limit,
260
+ },
261
+ });
262
+ });
83
263
  // Task lifecycle
84
264
  router.post('/tasks', async (req, res) => {
85
265
  try {
@@ -90,19 +270,25 @@ export function createA2ARouter() {
90
270
  res.status(400).json({ error: { code: 'INVALID_INPUT', message: e.message, path: e.path } });
91
271
  return;
92
272
  }
93
- const adapter = adapterRegistry.get(req.body.adapterId);
273
+ const metadata = req.body.metadata;
274
+ const routing = readRoutingHints(metadata?.routing);
275
+ const adapter = adapterRegistry.resolve(req.body.adapterId, routing);
94
276
  if (!adapter) {
95
277
  res.status(404).json({
96
- error: { code: 'ADAPTER_NOT_FOUND', message: req.body.adapterId },
278
+ error: {
279
+ code: 'ADAPTER_NOT_FOUND',
280
+ message: req.body.adapterId,
281
+ availableAdapters: adapterRegistry.list().map((candidate) => candidate.id),
282
+ },
97
283
  });
98
284
  return;
99
285
  }
100
286
  // Enforce MAX_TASKS cap. Evict the oldest terminal task first; if all
101
287
  // active, fail closed with 503.
102
- if (tasks.size >= MAX_TASKS) {
288
+ if (taskStore.size >= MAX_TASKS) {
103
289
  let evicted = false;
104
- for (const [tid, t] of tasks) {
105
- if (t.state === 'completed' || t.state === 'canceled' || t.state === 'failed') {
290
+ for (const [tid, t] of taskStore.entries()) {
291
+ if (isTerminalTaskState(t.state)) {
106
292
  const timeout = taskEvictions.get(tid);
107
293
  if (timeout)
108
294
  clearTimeout(timeout);
@@ -112,7 +298,7 @@ export function createA2ARouter() {
112
298
  unsub();
113
299
  taskUnsubs.delete(tid);
114
300
  }
115
- tasks.delete(tid);
301
+ taskStore.delete(tid);
116
302
  evicted = true;
117
303
  break;
118
304
  }
@@ -129,19 +315,92 @@ export function createA2ARouter() {
129
315
  id: newId('task'),
130
316
  contextId: req.body.contextId,
131
317
  state: 'submitted',
132
- history: [userMessage],
318
+ history: [],
133
319
  artifacts: [],
134
320
  metadata: req.body.metadata,
135
321
  createdAt: Date.now(),
136
322
  updatedAt: Date.now(),
137
323
  };
138
- tasks.set(task.id, task);
324
+ task.history.push({ ...userMessage, taskId: task.id });
325
+ const workspaceOptions = (metadata?.workspace && typeof metadata.workspace === 'object'
326
+ ? metadata.workspace
327
+ : {});
139
328
  // Persist adapterId in metadata so cancel can resolve the owning adapter
140
329
  // even when the original request body is no longer available.
141
- task.metadata = { ...task.metadata, adapterId: req.body.adapterId };
330
+ task.metadata = {
331
+ ...task.metadata,
332
+ adapterId: adapter.id,
333
+ adapterSelector: req.body.adapterId,
334
+ };
335
+ taskStore.set(task);
142
336
  attachBusToTask(task);
337
+ let workspace;
338
+ try {
339
+ workspace = await workspaceManager.create({
340
+ taskId: task.id,
341
+ projectPath: readString(workspaceOptions.projectPath) ?? process.cwd(),
342
+ kind: readWorkspaceKind(workspaceOptions.kind) ?? readWorkspaceKind(metadata?.isolation),
343
+ baseRef: readString(workspaceOptions.baseRef) ?? readString(metadata?.baseRef) ?? 'HEAD',
344
+ keepAfterCompletion: readBoolean(workspaceOptions.keepAfterCompletion),
345
+ metadata: workspaceOptions,
346
+ });
347
+ }
348
+ catch (err) {
349
+ const workspaceError = err instanceof WorkspaceError ? err : undefined;
350
+ a2aBus.publish({
351
+ kind: 'task-state',
352
+ taskId: task.id,
353
+ state: 'failed',
354
+ error: {
355
+ code: workspaceError?.code ?? 'WORKSPACE_CREATE_FAILED',
356
+ message: err instanceof Error ? err.message : String(err),
357
+ details: workspaceError?.details,
358
+ },
359
+ });
360
+ res.status(202).json(task);
361
+ return;
362
+ }
363
+ activeWorkspaces.set(task.id, workspace);
364
+ task.metadata = {
365
+ ...task.metadata,
366
+ workspace: workspaceMetadata(workspace, readBoolean(workspaceOptions.keepAfterCompletion)),
367
+ };
368
+ taskStore.set(task);
369
+ previewStops.set(task.id, portWatcher.watch({
370
+ taskId: task.id,
371
+ workspace,
372
+ onPort: (event) => {
373
+ const data = {
374
+ url: event.url,
375
+ proxiedUrl: `/preview/${event.port}/`,
376
+ port: event.port,
377
+ host: event.host,
378
+ processName: event.processName,
379
+ confidence: event.confidence,
380
+ };
381
+ a2aBus.publish({
382
+ kind: 'artifact',
383
+ taskId: task.id,
384
+ artifact: {
385
+ artifactId: newId('art'),
386
+ type: 'preview-url',
387
+ parts: [{ kind: 'data', data: { ...data } }],
388
+ metadata: {
389
+ source: 'port-watcher',
390
+ workspaceId: workspace.id,
391
+ },
392
+ },
393
+ });
394
+ },
395
+ }));
143
396
  try {
144
- await adapter.submitTask(task, { cwd: process.cwd() });
397
+ await adapter.submitTask(task, {
398
+ cwd: workspace.path,
399
+ workspace,
400
+ model: readString(metadata?.model),
401
+ permissionMode: readString(metadata?.permissionMode),
402
+ toolsSettings: readObject(metadata?.toolsSettings),
403
+ });
145
404
  }
146
405
  catch (err) {
147
406
  // Publish to bus so SSE subscribers and the attachBusToTask listener
@@ -160,7 +419,7 @@ export function createA2ARouter() {
160
419
  res.status(202).json(task);
161
420
  });
162
421
  router.get('/tasks/:id', (req, res) => {
163
- const task = tasks.get(req.params.id);
422
+ const task = taskStore.get(req.params.id);
164
423
  if (!task) {
165
424
  res.status(404).json({ error: { code: 'TASK_NOT_FOUND', message: req.params.id } });
166
425
  return;
@@ -168,7 +427,7 @@ export function createA2ARouter() {
168
427
  res.json(task);
169
428
  });
170
429
  router.get('/tasks/:id/stream', (req, res) => {
171
- const task = tasks.get(req.params.id);
430
+ const task = taskStore.get(req.params.id);
172
431
  if (!task) {
173
432
  res.status(404).json({ error: { code: 'TASK_NOT_FOUND', message: req.params.id } });
174
433
  return;
@@ -180,11 +439,10 @@ export function createA2ARouter() {
180
439
  // Replay current state once so late subscribers see history.
181
440
  const initial = { kind: 'task-snapshot', task };
182
441
  res.write(`event: snapshot\ndata: ${JSON.stringify(initial)}\n\n`);
183
- const TERMINAL = ['completed', 'canceled', 'failed'];
184
442
  const unsubscribe = a2aBus.subscribe(task.id, (event) => {
185
443
  res.write(`event: ${event.kind}\ndata: ${JSON.stringify(event)}\n\n`);
186
444
  if (event.kind === 'task-state' && TERMINAL.includes(event.state)) {
187
- res.end();
445
+ setTimeout(() => res.end(), 1500);
188
446
  }
189
447
  });
190
448
  req.on('close', () => {
@@ -192,14 +450,14 @@ export function createA2ARouter() {
192
450
  });
193
451
  });
194
452
  router.post('/tasks/:id/cancel', async (req, res) => {
195
- const task = tasks.get(req.params.id);
453
+ const task = taskStore.get(req.params.id);
196
454
  if (!task) {
197
455
  res.status(404).json({ error: { code: 'TASK_NOT_FOUND', message: req.params.id } });
198
456
  return;
199
457
  }
200
458
  // Look up the adapter that owns this task. We stored adapterId in metadata.
201
459
  const adapterId = req.body?.adapterId ?? task.metadata?.adapterId;
202
- const adapter = typeof adapterId === 'string' ? adapterRegistry.get(adapterId) : undefined;
460
+ const adapter = typeof adapterId === 'string' ? adapterRegistry.resolve(adapterId) : undefined;
203
461
  if (!adapter) {
204
462
  res.status(400).json({
205
463
  error: {
@@ -210,7 +468,7 @@ export function createA2ARouter() {
210
468
  return;
211
469
  }
212
470
  await adapter.cancelTask(task.id);
213
- res.json(tasks.get(task.id));
471
+ res.json(taskStore.get(task.id));
214
472
  });
215
473
  router.post('/messages', (req, res) => {
216
474
  try {
@@ -221,6 +479,12 @@ export function createA2ARouter() {
221
479
  res.status(400).json({ error: { code: 'INVALID_INPUT', message: e.message, path: e.path } });
222
480
  return;
223
481
  }
482
+ if (typeof req.body.taskId === 'string' && !taskStore.get(req.body.taskId)) {
483
+ res.status(404).json({
484
+ error: { code: 'TASK_NOT_FOUND', message: req.body.taskId },
485
+ });
486
+ return;
487
+ }
224
488
  a2aBus.publish({
225
489
  kind: 'message',
226
490
  taskId: req.body.taskId ?? 'broadcast',
@@ -1 +1 @@
1
- {"version":3,"file":"routes.js","sourceRoot":"","sources":["../../../../../server/modules/orchestration/a2a/routes.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"routes.js","sourceRoot":"","sources":["../../../../../server/modules/orchestration/a2a/routes.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,144 @@
1
+ // server/modules/orchestration/a2a/task-store.ts
2
+ // A2A task persistence backed by shared JsonStore for atomic writes and corruption recovery.
3
+ // Exposes a Map-compatible surface (get/set/delete/size/entries/values) so routes.ts
4
+ // can treat the store as a typed Map while still benefiting from durable JSON storage.
5
+ import os from 'os';
6
+ import path from 'path';
7
+ import { JsonStore } from '../../../database/json-store.js';
8
+ const filePath = path.join(os.homedir(), '.pixcode', 'a2a-tasks.json');
9
+ export class A2ATaskStore {
10
+ store;
11
+ constructor(_options) {
12
+ this.store = new JsonStore(filePath, { a2a_tasks: [] });
13
+ }
14
+ // ── Map-compatible API ─────────────────────────────────────────────────────
15
+ get(id) {
16
+ return this.store.findWhere('a2a_tasks', (t) => t.id === id) ?? undefined;
17
+ }
18
+ set(task) {
19
+ const existing = this.get(task.id);
20
+ if (existing) {
21
+ this.store.updateWhere('a2a_tasks', (t) => t.id === task.id, task);
22
+ }
23
+ else {
24
+ this.store.insert('a2a_tasks', task, { autoId: false });
25
+ }
26
+ }
27
+ delete(id) {
28
+ this.store.deleteWhere('a2a_tasks', (t) => t.id === id);
29
+ }
30
+ get size() {
31
+ return this.store.filterWhere('a2a_tasks', () => true).length;
32
+ }
33
+ *entries() {
34
+ const tasks = this.store.filterWhere('a2a_tasks', () => true);
35
+ for (const task of tasks) {
36
+ yield [task.id, task];
37
+ }
38
+ }
39
+ *values() {
40
+ const tasks = this.store.filterWhere('a2a_tasks', () => true);
41
+ for (const task of tasks) {
42
+ yield task;
43
+ }
44
+ }
45
+ // ── Query helpers ──────────────────────────────────────────────────────────
46
+ list(options = {}) {
47
+ const { state, contextId, adapterId, limit = 50 } = options;
48
+ let tasks = this.store.filterWhere('a2a_tasks', (t) => {
49
+ if (state && t.state !== state)
50
+ return false;
51
+ if (contextId && t.contextId !== contextId)
52
+ return false;
53
+ if (adapterId && t.metadata?.adapterId !== adapterId)
54
+ return false;
55
+ return true;
56
+ });
57
+ if (limit > 0)
58
+ tasks = tasks.slice(0, limit);
59
+ return tasks;
60
+ }
61
+ summarize(task) {
62
+ return {
63
+ id: task.id,
64
+ contextId: task.contextId,
65
+ state: task.state,
66
+ adapterId: task.metadata?.adapterId,
67
+ adapterSelector: task.metadata?.adapterSelector,
68
+ error: task.error,
69
+ createdAt: task.createdAt,
70
+ updatedAt: task.updatedAt,
71
+ messageCount: task.history?.length ?? 0,
72
+ artifactCount: task.artifacts?.length ?? 0,
73
+ lastMessage: task.history?.at(-1),
74
+ };
75
+ }
76
+ // ── Legacy named methods (kept for any future internal callers) ────────────
77
+ getTask(id) {
78
+ return this.get(id);
79
+ }
80
+ getTaskByIndex(index) {
81
+ const tasks = this.store.filterWhere('a2a_tasks', () => true);
82
+ return tasks[index] ?? undefined;
83
+ }
84
+ getTasks() {
85
+ return this.store.filterWhere('a2a_tasks', () => true);
86
+ }
87
+ createTask(task) {
88
+ this.store.insert('a2a_tasks', task, { autoId: false });
89
+ }
90
+ updateTask(id, updates) {
91
+ const existing = this.get(id);
92
+ if (!existing)
93
+ return;
94
+ const updated = { ...existing, ...updates, id: existing.id };
95
+ this.store.updateWhere('a2a_tasks', (t) => t.id === id, updated);
96
+ }
97
+ updateTaskState(id, state) {
98
+ this.updateTask(id, { status: { state } });
99
+ }
100
+ deleteTask(id) {
101
+ this.delete(id);
102
+ }
103
+ appendHistory(id, entry) {
104
+ const task = this.get(id);
105
+ if (!task)
106
+ return;
107
+ const history = [...(task.history ?? []), entry];
108
+ this.updateTask(id, { history });
109
+ }
110
+ addArtifact(id, artifact) {
111
+ const task = this.get(id);
112
+ if (!task)
113
+ return;
114
+ const artifacts = [...(task.artifacts ?? []), artifact];
115
+ this.updateTask(id, { artifacts });
116
+ }
117
+ addMessage(id, message) {
118
+ const task = this.get(id);
119
+ if (!task)
120
+ return;
121
+ const history = [...(task.history ?? []), message];
122
+ this.updateTask(id, { history });
123
+ }
124
+ updateMessage(id, messageId, updates) {
125
+ const task = this.get(id);
126
+ if (!task?.history)
127
+ return;
128
+ const history = task.history.map((m) => m.messageId === messageId ? { ...m, ...updates } : m);
129
+ this.updateTask(id, { history });
130
+ }
131
+ getMessage(id, messageId) {
132
+ const task = this.get(id);
133
+ return task?.history?.find((m) => m.messageId === messageId);
134
+ }
135
+ getMessages(id) {
136
+ const task = this.get(id);
137
+ return task?.history ?? [];
138
+ }
139
+ clearMessages(id) {
140
+ this.updateTask(id, { history: [] });
141
+ }
142
+ }
143
+ export const a2aTaskStore = new A2ATaskStore();
144
+ //# sourceMappingURL=task-store.js.map