@pixelbyte-software/pixcode 1.54.11 → 1.55.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 (165) hide show
  1. package/dist/assets/{index-Bcqs_1vc.js → index-B-ySsQqi.js} +147 -147
  2. package/dist/assets/index-CWO38aJI.css +32 -0
  3. package/dist/index.html +2 -2
  4. package/dist-server/server/claude-sdk.js +1 -1
  5. package/dist-server/server/claude-sdk.js.map +1 -1
  6. package/dist-server/server/index.js +6 -11
  7. package/dist-server/server/index.js.map +1 -1
  8. package/dist-server/server/modules/security/permission-policy.js.map +1 -0
  9. package/dist-server/server/services/control-room.js +9 -1
  10. package/dist-server/server/services/control-room.js.map +1 -1
  11. package/dist-server/server/services/public-api-manifest.js +5 -5
  12. package/dist-server/server/services/public-api-manifest.js.map +1 -1
  13. package/dist-server/server/services/telegram/control-center.js +10 -10
  14. package/dist-server/server/services/telegram/control-center.js.map +1 -1
  15. package/dist-server/server/services/telegram/telegram-gateway.js +2 -2
  16. package/dist-server/server/services/telegram/telegram-gateway.js.map +1 -1
  17. package/dist-server/server/services/telegram/translations.js +5 -5
  18. package/dist-server/server/services/telegram/translations.js.map +1 -1
  19. package/package.json +1 -1
  20. package/server/claude-sdk.js +1 -1
  21. package/server/index.js +6 -23
  22. package/server/services/control-room.js +10 -1
  23. package/server/services/public-api-manifest.js +5 -5
  24. package/server/services/telegram/control-center.js +10 -10
  25. package/server/services/telegram/telegram-gateway.js +2 -2
  26. package/server/services/telegram/translations.js +5 -5
  27. package/dist/assets/index-Dz1luE0u.css +0 -32
  28. package/dist-server/server/modules/orchestration/a2a/adapter-registry.js +0 -73
  29. package/dist-server/server/modules/orchestration/a2a/adapter-registry.js.map +0 -1
  30. package/dist-server/server/modules/orchestration/a2a/adapters/abstract-a2a.adapter.js +0 -17
  31. package/dist-server/server/modules/orchestration/a2a/adapters/abstract-a2a.adapter.js.map +0 -1
  32. package/dist-server/server/modules/orchestration/a2a/adapters/claude-code.adapter.js +0 -236
  33. package/dist-server/server/modules/orchestration/a2a/adapters/claude-code.adapter.js.map +0 -1
  34. package/dist-server/server/modules/orchestration/a2a/adapters/codex.adapter.js +0 -202
  35. package/dist-server/server/modules/orchestration/a2a/adapters/codex.adapter.js.map +0 -1
  36. package/dist-server/server/modules/orchestration/a2a/adapters/cursor.adapter.js +0 -205
  37. package/dist-server/server/modules/orchestration/a2a/adapters/cursor.adapter.js.map +0 -1
  38. package/dist-server/server/modules/orchestration/a2a/adapters/gemini.adapter.js +0 -205
  39. package/dist-server/server/modules/orchestration/a2a/adapters/gemini.adapter.js.map +0 -1
  40. package/dist-server/server/modules/orchestration/a2a/adapters/json-event.adapter.js +0 -84
  41. package/dist-server/server/modules/orchestration/a2a/adapters/json-event.adapter.js.map +0 -1
  42. package/dist-server/server/modules/orchestration/a2a/adapters/json-event.adapter.test.js +0 -43
  43. package/dist-server/server/modules/orchestration/a2a/adapters/json-event.adapter.test.js.map +0 -1
  44. package/dist-server/server/modules/orchestration/a2a/adapters/opencode.adapter.js +0 -205
  45. package/dist-server/server/modules/orchestration/a2a/adapters/opencode.adapter.js.map +0 -1
  46. package/dist-server/server/modules/orchestration/a2a/adapters/qwen.adapter.js +0 -205
  47. package/dist-server/server/modules/orchestration/a2a/adapters/qwen.adapter.js.map +0 -1
  48. package/dist-server/server/modules/orchestration/a2a/agent-card.js +0 -50
  49. package/dist-server/server/modules/orchestration/a2a/agent-card.js.map +0 -1
  50. package/dist-server/server/modules/orchestration/a2a/auth.middleware.js +0 -25
  51. package/dist-server/server/modules/orchestration/a2a/auth.middleware.js.map +0 -1
  52. package/dist-server/server/modules/orchestration/a2a/bus.js +0 -34
  53. package/dist-server/server/modules/orchestration/a2a/bus.js.map +0 -1
  54. package/dist-server/server/modules/orchestration/a2a/routes.js +0 -502
  55. package/dist-server/server/modules/orchestration/a2a/routes.js.map +0 -1
  56. package/dist-server/server/modules/orchestration/a2a/task-dispatcher.js +0 -295
  57. package/dist-server/server/modules/orchestration/a2a/task-dispatcher.js.map +0 -1
  58. package/dist-server/server/modules/orchestration/a2a/task-store.js +0 -144
  59. package/dist-server/server/modules/orchestration/a2a/task-store.js.map +0 -1
  60. package/dist-server/server/modules/orchestration/a2a/types.js +0 -6
  61. package/dist-server/server/modules/orchestration/a2a/types.js.map +0 -1
  62. package/dist-server/server/modules/orchestration/a2a/validator.js +0 -101
  63. package/dist-server/server/modules/orchestration/a2a/validator.js.map +0 -1
  64. package/dist-server/server/modules/orchestration/index.js +0 -27
  65. package/dist-server/server/modules/orchestration/index.js.map +0 -1
  66. package/dist-server/server/modules/orchestration/preview/port-watcher.js +0 -90
  67. package/dist-server/server/modules/orchestration/preview/port-watcher.js.map +0 -1
  68. package/dist-server/server/modules/orchestration/preview/preview-proxy.js +0 -58
  69. package/dist-server/server/modules/orchestration/preview/preview-proxy.js.map +0 -1
  70. package/dist-server/server/modules/orchestration/preview/types.js +0 -2
  71. package/dist-server/server/modules/orchestration/preview/types.js.map +0 -1
  72. package/dist-server/server/modules/orchestration/security/permission-policy.js.map +0 -1
  73. package/dist-server/server/modules/orchestration/tasks/orchestration-task-store.js +0 -34
  74. package/dist-server/server/modules/orchestration/tasks/orchestration-task-store.js.map +0 -1
  75. package/dist-server/server/modules/orchestration/tasks/orchestration-task.routes.js +0 -70
  76. package/dist-server/server/modules/orchestration/tasks/orchestration-task.routes.js.map +0 -1
  77. package/dist-server/server/modules/orchestration/tasks/orchestration-task.service.js +0 -181
  78. package/dist-server/server/modules/orchestration/tasks/orchestration-task.service.js.map +0 -1
  79. package/dist-server/server/modules/orchestration/tasks/orchestration-task.types.js +0 -2
  80. package/dist-server/server/modules/orchestration/tasks/orchestration-task.types.js.map +0 -1
  81. package/dist-server/server/modules/orchestration/tasks/task-run-graph.js +0 -100
  82. package/dist-server/server/modules/orchestration/tasks/task-run-graph.js.map +0 -1
  83. package/dist-server/server/modules/orchestration/workflows/approval-queue.js +0 -72
  84. package/dist-server/server/modules/orchestration/workflows/approval-queue.js.map +0 -1
  85. package/dist-server/server/modules/orchestration/workflows/built-in-workflows.js +0 -126
  86. package/dist-server/server/modules/orchestration/workflows/built-in-workflows.js.map +0 -1
  87. package/dist-server/server/modules/orchestration/workflows/context-packet.js +0 -89
  88. package/dist-server/server/modules/orchestration/workflows/context-packet.js.map +0 -1
  89. package/dist-server/server/modules/orchestration/workflows/handoff-artifact.js +0 -123
  90. package/dist-server/server/modules/orchestration/workflows/handoff-artifact.js.map +0 -1
  91. package/dist-server/server/modules/orchestration/workflows/workflow-fallback-policy.js +0 -114
  92. package/dist-server/server/modules/orchestration/workflows/workflow-fallback-policy.js.map +0 -1
  93. package/dist-server/server/modules/orchestration/workflows/workflow-replay.js +0 -177
  94. package/dist-server/server/modules/orchestration/workflows/workflow-replay.js.map +0 -1
  95. package/dist-server/server/modules/orchestration/workflows/workflow-runner.js +0 -1718
  96. package/dist-server/server/modules/orchestration/workflows/workflow-runner.js.map +0 -1
  97. package/dist-server/server/modules/orchestration/workflows/workflow-store.js +0 -76
  98. package/dist-server/server/modules/orchestration/workflows/workflow-store.js.map +0 -1
  99. package/dist-server/server/modules/orchestration/workflows/workflow-templates.js +0 -242
  100. package/dist-server/server/modules/orchestration/workflows/workflow-templates.js.map +0 -1
  101. package/dist-server/server/modules/orchestration/workflows/workflow-trace.js +0 -388
  102. package/dist-server/server/modules/orchestration/workflows/workflow-trace.js.map +0 -1
  103. package/dist-server/server/modules/orchestration/workflows/workflow.routes.js +0 -508
  104. package/dist-server/server/modules/orchestration/workflows/workflow.routes.js.map +0 -1
  105. package/dist-server/server/modules/orchestration/workflows/workflow.types.js +0 -2
  106. package/dist-server/server/modules/orchestration/workflows/workflow.types.js.map +0 -1
  107. package/dist-server/server/modules/orchestration/workflows/workspace-target.js +0 -100
  108. package/dist-server/server/modules/orchestration/workflows/workspace-target.js.map +0 -1
  109. package/dist-server/server/modules/orchestration/workspace/docker-workspace.js +0 -123
  110. package/dist-server/server/modules/orchestration/workspace/docker-workspace.js.map +0 -1
  111. package/dist-server/server/modules/orchestration/workspace/path-safety.js +0 -48
  112. package/dist-server/server/modules/orchestration/workspace/path-safety.js.map +0 -1
  113. package/dist-server/server/modules/orchestration/workspace/types.js +0 -11
  114. package/dist-server/server/modules/orchestration/workspace/types.js.map +0 -1
  115. package/dist-server/server/modules/orchestration/workspace/workspace-manager.js +0 -84
  116. package/dist-server/server/modules/orchestration/workspace/workspace-manager.js.map +0 -1
  117. package/dist-server/server/modules/orchestration/workspace/worktree-workspace.js +0 -97
  118. package/dist-server/server/modules/orchestration/workspace/worktree-workspace.js.map +0 -1
  119. package/server/modules/orchestration/a2a/adapter-registry.ts +0 -108
  120. package/server/modules/orchestration/a2a/adapters/abstract-a2a.adapter.ts +0 -63
  121. package/server/modules/orchestration/a2a/adapters/claude-code.adapter.ts +0 -286
  122. package/server/modules/orchestration/a2a/adapters/codex.adapter.ts +0 -244
  123. package/server/modules/orchestration/a2a/adapters/cursor.adapter.ts +0 -249
  124. package/server/modules/orchestration/a2a/adapters/gemini.adapter.ts +0 -248
  125. package/server/modules/orchestration/a2a/adapters/json-event.adapter.test.ts +0 -60
  126. package/server/modules/orchestration/a2a/adapters/json-event.adapter.ts +0 -101
  127. package/server/modules/orchestration/a2a/adapters/opencode.adapter.ts +0 -248
  128. package/server/modules/orchestration/a2a/adapters/qwen.adapter.ts +0 -248
  129. package/server/modules/orchestration/a2a/agent-card.ts +0 -55
  130. package/server/modules/orchestration/a2a/auth.middleware.ts +0 -29
  131. package/server/modules/orchestration/a2a/bus.ts +0 -46
  132. package/server/modules/orchestration/a2a/routes.ts +0 -586
  133. package/server/modules/orchestration/a2a/task-dispatcher.ts +0 -345
  134. package/server/modules/orchestration/a2a/task-store.ts +0 -178
  135. package/server/modules/orchestration/a2a/types.ts +0 -126
  136. package/server/modules/orchestration/a2a/validator.ts +0 -113
  137. package/server/modules/orchestration/index.ts +0 -99
  138. package/server/modules/orchestration/preview/port-watcher.ts +0 -112
  139. package/server/modules/orchestration/preview/preview-proxy.ts +0 -60
  140. package/server/modules/orchestration/preview/types.ts +0 -19
  141. package/server/modules/orchestration/tasks/orchestration-task-store.ts +0 -41
  142. package/server/modules/orchestration/tasks/orchestration-task.routes.ts +0 -81
  143. package/server/modules/orchestration/tasks/orchestration-task.service.ts +0 -201
  144. package/server/modules/orchestration/tasks/orchestration-task.types.ts +0 -40
  145. package/server/modules/orchestration/tasks/task-run-graph.ts +0 -155
  146. package/server/modules/orchestration/workflows/approval-queue.ts +0 -106
  147. package/server/modules/orchestration/workflows/built-in-workflows.ts +0 -127
  148. package/server/modules/orchestration/workflows/context-packet.ts +0 -186
  149. package/server/modules/orchestration/workflows/handoff-artifact.ts +0 -175
  150. package/server/modules/orchestration/workflows/workflow-fallback-policy.ts +0 -161
  151. package/server/modules/orchestration/workflows/workflow-replay.ts +0 -254
  152. package/server/modules/orchestration/workflows/workflow-runner.ts +0 -2062
  153. package/server/modules/orchestration/workflows/workflow-store.ts +0 -97
  154. package/server/modules/orchestration/workflows/workflow-templates.ts +0 -272
  155. package/server/modules/orchestration/workflows/workflow-trace.ts +0 -424
  156. package/server/modules/orchestration/workflows/workflow.routes.ts +0 -586
  157. package/server/modules/orchestration/workflows/workflow.types.ts +0 -111
  158. package/server/modules/orchestration/workflows/workspace-target.ts +0 -122
  159. package/server/modules/orchestration/workspace/docker-workspace.ts +0 -136
  160. package/server/modules/orchestration/workspace/path-safety.ts +0 -55
  161. package/server/modules/orchestration/workspace/types.ts +0 -52
  162. package/server/modules/orchestration/workspace/workspace-manager.ts +0 -102
  163. package/server/modules/orchestration/workspace/worktree-workspace.ts +0 -126
  164. /package/dist-server/server/modules/{orchestration/security → security}/permission-policy.js +0 -0
  165. /package/server/modules/{orchestration/security → security}/permission-policy.ts +0 -0
@@ -1,508 +0,0 @@
1
- import express from 'express';
2
- import { workflowRunner } from '../../../modules/orchestration/workflows/workflow-runner.js';
3
- import { buildWorkflowReplayPlan, } from '../../../modules/orchestration/workflows/workflow-replay.js';
4
- import { applyWorkflowTemplateToMetadata, builtInWorkflowTemplates, getWorkflowTemplate, } from '../../../modules/orchestration/workflows/workflow-templates.js';
5
- import { workflowStore } from '../../../modules/orchestration/workflows/workflow-store.js';
6
- import { buildWorkflowTrace } from '../../../modules/orchestration/workflows/workflow-trace.js';
7
- import { findPixcodeAppRoot } from '../../../modules/orchestration/workflows/workspace-target.js';
8
- import { listPendingApprovals, resolvePermissionApproval, } from '../../../modules/orchestration/workflows/approval-queue.js';
9
- import { DEFAULT_PERMISSION_POLICY, PERMISSION_CAPABILITIES, PERMISSION_POLICY_MODES, PIXCODE_PERMISSION_POLICY_PROTOCOL, evaluatePermissionRequest, normalizePermissionPolicy, } from '../../../modules/orchestration/security/permission-policy.js';
10
- import { dispatchWebhookEvent } from '../../../services/webhooks.js';
11
- const TERMINAL_RUN_STATES = new Set(['completed', 'failed', 'canceled']);
12
- function isWindowsLikeProjectId(projectId) {
13
- return /^[A-Za-z]--/.test(projectId) || /^[A-Za-z]:[\\/]/.test(projectId);
14
- }
15
- function normalizeProjectId(projectId) {
16
- return projectId.trim().replace(/\\/g, '/').toLowerCase();
17
- }
18
- function projectIdsMatch(storedProjectId, requestedProjectId) {
19
- if (typeof storedProjectId !== 'string')
20
- return false;
21
- if (storedProjectId === requestedProjectId)
22
- return true;
23
- if (!isWindowsLikeProjectId(storedProjectId) && !isWindowsLikeProjectId(requestedProjectId)) {
24
- return false;
25
- }
26
- return normalizeProjectId(storedProjectId) === normalizeProjectId(requestedProjectId);
27
- }
28
- function readLimit(value) {
29
- if (typeof value !== 'string')
30
- return undefined;
31
- const parsed = Number.parseInt(value, 10);
32
- if (!Number.isFinite(parsed) || parsed <= 0)
33
- return undefined;
34
- return Math.min(parsed, 100);
35
- }
36
- function readMetadata(body) {
37
- if (!body || typeof body !== 'object')
38
- return undefined;
39
- const metadata = body.metadata;
40
- return metadata && typeof metadata === 'object' ? metadata : undefined;
41
- }
42
- function readRequestUserId(req) {
43
- const user = req.user;
44
- return user?.id ?? user?.userId ?? null;
45
- }
46
- function readReplayScope(value) {
47
- return value === 'run' ? 'run' : 'node';
48
- }
49
- function readOptionalString(value) {
50
- return typeof value === 'string' && value.trim() ? value.trim() : undefined;
51
- }
52
- function readBooleanFlag(value) {
53
- return value === true || value === 'true' || value === '1';
54
- }
55
- function replayOptions(req) {
56
- return {
57
- scope: readReplayScope(req.body?.scope ?? req.query.scope),
58
- fromNodeId: readOptionalString(req.body?.fromNodeId ?? req.query.fromNodeId),
59
- approveReplay: readBooleanFlag(req.body?.approveReplay ?? req.query.approveReplay),
60
- };
61
- }
62
- function readRunArray(run, key) {
63
- const value = run.metadata?.[key];
64
- return Array.isArray(value)
65
- ? value.filter((item) => Boolean(item && typeof item === 'object'))
66
- : [];
67
- }
68
- function updateApproval(run, requestId, patch) {
69
- const approvals = readRunArray(run, 'pendingPermissionApprovals');
70
- let changed = false;
71
- const nextApprovals = approvals.map((approval) => {
72
- if (approval.id !== requestId)
73
- return approval;
74
- changed = true;
75
- return {
76
- ...approval,
77
- ...patch,
78
- };
79
- });
80
- if (!changed)
81
- return false;
82
- run.metadata = {
83
- ...run.metadata,
84
- pendingPermissionApprovals: nextApprovals,
85
- };
86
- return true;
87
- }
88
- function sendRunSnapshot(res, runId) {
89
- const run = workflowStore.getRun(runId);
90
- if (!run) {
91
- res.write(`event: error\ndata: ${JSON.stringify({ error: { code: 'RUN_NOT_FOUND', message: runId } })}\n\n`);
92
- return true;
93
- }
94
- res.write(`event: snapshot\ndata: ${JSON.stringify({ run })}\n\n`);
95
- return TERMINAL_RUN_STATES.has(run.status);
96
- }
97
- export function createWorkflowRouter() {
98
- const router = express.Router();
99
- router.use(express.json({ limit: '2mb' }));
100
- router.get('/workflows', (_req, res) => {
101
- res.json({ workflows: workflowStore.listWorkflows() });
102
- });
103
- router.get('/workflows/templates', (_req, res) => {
104
- res.json({
105
- templates: builtInWorkflowTemplates,
106
- });
107
- });
108
- router.get('/workflows/context', (_req, res) => {
109
- res.json({
110
- appRoot: findPixcodeAppRoot(),
111
- defaultWorkspaceTarget: 'selected_project',
112
- supportedWorkspaceTargets: ['selected_project', 'pixcode_app', 'custom'],
113
- });
114
- });
115
- router.get('/workflows/runs', (req, res) => {
116
- const projectId = typeof req.query.projectId === 'string' ? req.query.projectId : undefined;
117
- const limit = readLimit(req.query.limit);
118
- const runs = projectId
119
- ? workflowStore.listRuns().filter((run) => projectIdsMatch(run.metadata?.projectId, projectId))
120
- : workflowStore.listRuns();
121
- res.json({ runs: limit ? runs.slice(0, limit) : runs });
122
- });
123
- router.get('/workflows/runs/:runId/events', (req, res) => {
124
- res.setHeader('Content-Type', 'text/event-stream');
125
- res.setHeader('Cache-Control', 'no-cache, no-transform');
126
- res.setHeader('Connection', 'keep-alive');
127
- res.setHeader('X-Accel-Buffering', 'no');
128
- if (typeof res.flushHeaders === 'function') {
129
- res.flushHeaders();
130
- }
131
- if (res.socket && typeof res.socket.setNoDelay === 'function') {
132
- try {
133
- res.socket.setNoDelay(true);
134
- }
135
- catch {
136
- // Non-fatal; SSE still works without disabling Nagle.
137
- }
138
- }
139
- const terminal = sendRunSnapshot(res, req.params.runId);
140
- if (terminal) {
141
- res.end();
142
- return;
143
- }
144
- const heartbeat = setInterval(() => {
145
- res.write(': ping\n\n');
146
- }, 15_000);
147
- const timer = setInterval(() => {
148
- const done = sendRunSnapshot(res, req.params.runId);
149
- if (done) {
150
- clearInterval(timer);
151
- clearInterval(heartbeat);
152
- res.end();
153
- }
154
- }, 1_000);
155
- req.on('close', () => {
156
- clearInterval(timer);
157
- clearInterval(heartbeat);
158
- });
159
- });
160
- router.get('/workflows/runs/:runId/trace', (req, res) => {
161
- const run = workflowStore.getRun(req.params.runId);
162
- if (!run) {
163
- res.status(404).json({ error: { code: 'RUN_NOT_FOUND', message: req.params.runId } });
164
- return;
165
- }
166
- res.json({
167
- runId: run.id,
168
- trace: buildWorkflowTrace(run),
169
- });
170
- });
171
- router.get('/workflows/permission-policy', (_req, res) => {
172
- res.json({
173
- protocol: PIXCODE_PERMISSION_POLICY_PROTOCOL,
174
- capabilities: PERMISSION_CAPABILITIES,
175
- modes: PERMISSION_POLICY_MODES,
176
- defaultPolicy: DEFAULT_PERMISSION_POLICY,
177
- });
178
- });
179
- router.post('/workflows/permission-policy/evaluate', (req, res) => {
180
- try {
181
- res.json({
182
- decision: evaluatePermissionRequest({
183
- policy: normalizePermissionPolicy(req.body?.policy),
184
- request: req.body?.request ?? { source: 'api' },
185
- }),
186
- });
187
- }
188
- catch (error) {
189
- res.status(400).json({
190
- error: {
191
- code: 'PERMISSION_POLICY_INVALID',
192
- message: error instanceof Error ? error.message : String(error),
193
- },
194
- });
195
- }
196
- });
197
- router.get('/workflows/runs/:runId/permission-approvals', (req, res) => {
198
- const run = workflowStore.getRun(req.params.runId);
199
- if (!run) {
200
- res.status(404).json({ error: { code: 'RUN_NOT_FOUND', message: req.params.runId } });
201
- return;
202
- }
203
- res.json({
204
- runId: run.id,
205
- pendingApprovals: readRunArray(run, 'pendingPermissionApprovals')
206
- .filter((approval) => approval.status === 'pending'),
207
- approvalHistory: readRunArray(run, 'pendingPermissionApprovals')
208
- .filter((approval) => approval.status !== 'pending'),
209
- });
210
- });
211
- router.get('/workflows/approvals', (req, res) => {
212
- res.json({
213
- pendingApprovals: listPendingApprovals({
214
- projectId: readOptionalString(req.query.projectId),
215
- includeResolved: readBooleanFlag(req.query.includeResolved),
216
- }),
217
- });
218
- });
219
- router.post('/workflows/approvals/:approvalId', (req, res) => {
220
- const allow = req.body?.allow === true;
221
- const deny = req.body?.allow === false;
222
- if (!allow && !deny) {
223
- res.status(400).json({
224
- error: {
225
- code: 'PERMISSION_DECISION_REQUIRED',
226
- message: 'Approval queue decisions require allow=true or allow=false.',
227
- },
228
- });
229
- return;
230
- }
231
- const source = ['ui', 'telegram', 'api'].includes(req.body?.source)
232
- ? req.body.source
233
- : 'api';
234
- const result = resolvePermissionApproval({
235
- approvalId: req.params.approvalId,
236
- allow,
237
- source,
238
- resolvedBy: readRequestUserId(req),
239
- message: readOptionalString(req.body?.message),
240
- });
241
- if (!result) {
242
- res.status(404).json({ error: { code: 'APPROVAL_NOT_FOUND', message: req.params.approvalId } });
243
- return;
244
- }
245
- dispatchWebhookEvent({
246
- type: 'approval.resolved',
247
- payload: {
248
- approvalId: req.params.approvalId,
249
- allow,
250
- source,
251
- runId: result.runId,
252
- },
253
- });
254
- res.json(result);
255
- });
256
- router.post('/workflows/runs/:runId/permission-approvals/:requestId', (req, res) => {
257
- const run = workflowStore.getRun(req.params.runId);
258
- if (!run) {
259
- res.status(404).json({ error: { code: 'RUN_NOT_FOUND', message: req.params.runId } });
260
- return;
261
- }
262
- const allow = req.body?.allow === true;
263
- const deny = req.body?.allow === false;
264
- if (!allow && !deny) {
265
- res.status(400).json({
266
- error: {
267
- code: 'PERMISSION_DECISION_REQUIRED',
268
- message: 'Permission approval requires allow=true or allow=false.',
269
- },
270
- });
271
- return;
272
- }
273
- const updated = updateApproval(run, req.params.requestId, {
274
- status: allow ? 'allowed' : 'denied',
275
- resolvedAt: Date.now(),
276
- resolvedBy: readRequestUserId(req),
277
- resolutionMessage: readOptionalString(req.body?.message),
278
- });
279
- if (!updated) {
280
- res.status(404).json({ error: { code: 'APPROVAL_NOT_FOUND', message: req.params.requestId } });
281
- return;
282
- }
283
- workflowStore.setRun(run);
284
- dispatchWebhookEvent({
285
- type: 'approval.resolved',
286
- payload: {
287
- approvalId: req.params.requestId,
288
- allow,
289
- source: 'ui',
290
- runId: run.id,
291
- },
292
- });
293
- res.json({
294
- runId: run.id,
295
- pendingApprovals: readRunArray(run, 'pendingPermissionApprovals')
296
- .filter((approval) => approval.status === 'pending'),
297
- approvalHistory: readRunArray(run, 'pendingPermissionApprovals')
298
- .filter((approval) => approval.status !== 'pending'),
299
- });
300
- });
301
- router.get('/workflows/runs/:runId/replay-plan', (req, res) => {
302
- const run = workflowStore.getRun(req.params.runId);
303
- if (!run) {
304
- res.status(404).json({ error: { code: 'RUN_NOT_FOUND', message: req.params.runId } });
305
- return;
306
- }
307
- try {
308
- const options = replayOptions(req);
309
- res.json({
310
- replayPlan: buildWorkflowReplayPlan(run, {
311
- scope: options.scope,
312
- fromNodeId: options.fromNodeId,
313
- }),
314
- });
315
- }
316
- catch (error) {
317
- res.status(400).json({
318
- error: {
319
- code: 'REPLAY_PLAN_INVALID',
320
- message: error instanceof Error ? error.message : String(error),
321
- },
322
- });
323
- }
324
- });
325
- router.post('/workflows/runs/:runId/replay', (req, res) => {
326
- const run = workflowStore.getRun(req.params.runId);
327
- if (!run) {
328
- res.status(404).json({ error: { code: 'RUN_NOT_FOUND', message: req.params.runId } });
329
- return;
330
- }
331
- try {
332
- const options = replayOptions(req);
333
- const replayPlan = buildWorkflowReplayPlan(run, {
334
- scope: options.scope,
335
- fromNodeId: options.fromNodeId,
336
- });
337
- if (replayPlan.requiresApproval && !options.approveReplay) {
338
- res.status(409).json({
339
- error: {
340
- code: 'REPLAY_APPROVAL_REQUIRED',
341
- message: 'Replay requires explicit approval because prior shell, network, or file-write activity was detected.',
342
- },
343
- replayPlan,
344
- });
345
- return;
346
- }
347
- const replayRun = workflowRunner.start(replayPlan.workflow, replayPlan.input, {
348
- ...replayPlan.metadata,
349
- userId: readRequestUserId(req) ?? run.metadata?.userId,
350
- replay: {
351
- ...(replayPlan.metadata.replay && typeof replayPlan.metadata.replay === 'object'
352
- ? replayPlan.metadata.replay
353
- : {}),
354
- approved: options.approveReplay,
355
- approvedAt: options.approveReplay ? Date.now() : undefined,
356
- },
357
- });
358
- dispatchWebhookEvent({
359
- type: 'run.started',
360
- payload: {
361
- runId: replayRun.id,
362
- workflowId: replayRun.workflowId,
363
- replayOf: run.id,
364
- },
365
- });
366
- res.status(202).json({
367
- run: replayRun,
368
- replayPlan,
369
- });
370
- }
371
- catch (error) {
372
- res.status(400).json({
373
- error: {
374
- code: 'REPLAY_START_FAILED',
375
- message: error instanceof Error ? error.message : String(error),
376
- },
377
- });
378
- }
379
- });
380
- router.get('/workflows/runs/:runId', (req, res) => {
381
- const run = workflowStore.getRun(req.params.runId);
382
- if (!run) {
383
- res.status(404).json({ error: { code: 'RUN_NOT_FOUND', message: req.params.runId } });
384
- return;
385
- }
386
- res.json(run);
387
- });
388
- router.post('/workflows/:id/preview', (req, res) => {
389
- const workflow = workflowStore.getWorkflow(req.params.id);
390
- if (!workflow) {
391
- res.status(404).json({ error: { code: 'WORKFLOW_NOT_FOUND', message: req.params.id } });
392
- return;
393
- }
394
- try {
395
- const runtimeWorkflow = workflowRunner.preview(workflow, readMetadata(req.body));
396
- res.json({
397
- workflow: runtimeWorkflow,
398
- nodeCount: runtimeWorkflow.nodes.length,
399
- nodes: runtimeWorkflow.nodes.map((node) => ({
400
- id: node.id,
401
- adapterId: node.adapterId,
402
- agentInstanceId: node.agentInstanceId,
403
- agentLabel: node.agentLabel,
404
- assignment: node.assignment,
405
- stage: node.stage,
406
- inputs: node.inputs,
407
- onFail: node.onFail,
408
- output: node.output,
409
- model: node.model,
410
- permissionMode: node.permissionMode,
411
- timeoutMs: node.timeoutMs,
412
- })),
413
- });
414
- }
415
- catch (error) {
416
- res.status(400).json({
417
- error: {
418
- code: 'WORKFLOW_INVALID',
419
- message: error instanceof Error ? error.message : String(error),
420
- },
421
- });
422
- }
423
- });
424
- router.post('/workflows/runs/:runId/cancel', async (req, res) => {
425
- const run = await workflowRunner.cancel(req.params.runId);
426
- if (!run) {
427
- res.status(404).json({ error: { code: 'RUN_NOT_FOUND', message: req.params.runId } });
428
- return;
429
- }
430
- dispatchWebhookEvent({
431
- type: 'run.canceled',
432
- payload: {
433
- runId: run.id,
434
- workflowId: run.workflowId,
435
- },
436
- });
437
- res.json(run);
438
- });
439
- router.post('/workflows/:id/runs', (req, res) => {
440
- const workflow = workflowStore.getWorkflow(req.params.id);
441
- if (!workflow) {
442
- res.status(404).json({ error: { code: 'WORKFLOW_NOT_FOUND', message: req.params.id } });
443
- return;
444
- }
445
- try {
446
- const run = workflowRunner.start(workflow, typeof req.body?.input === 'string' ? req.body.input : '', {
447
- ...readMetadata(req.body),
448
- userId: readRequestUserId(req),
449
- workflowName: workflow.name,
450
- });
451
- dispatchWebhookEvent({
452
- type: 'run.started',
453
- payload: {
454
- runId: run.id,
455
- workflowId: run.workflowId,
456
- workflowName: workflow.name,
457
- },
458
- });
459
- res.status(202).json(run);
460
- }
461
- catch (error) {
462
- res.status(400).json({
463
- error: {
464
- code: 'WORKFLOW_INVALID',
465
- message: error instanceof Error ? error.message : String(error),
466
- },
467
- });
468
- }
469
- });
470
- router.post('/workflows/templates/:templateId/runs', (req, res) => {
471
- const template = getWorkflowTemplate(req.params.templateId);
472
- if (!template) {
473
- res.status(404).json({ error: { code: 'WORKFLOW_TEMPLATE_NOT_FOUND', message: req.params.templateId } });
474
- return;
475
- }
476
- const workflow = workflowStore.getWorkflow(template.workflowId);
477
- if (!workflow) {
478
- res.status(404).json({ error: { code: 'WORKFLOW_NOT_FOUND', message: template.workflowId } });
479
- return;
480
- }
481
- try {
482
- const run = workflowRunner.start(workflow, typeof req.body?.input === 'string' ? req.body.input : '', {
483
- ...applyWorkflowTemplateToMetadata(template, readMetadata(req.body)),
484
- userId: readRequestUserId(req),
485
- workflowName: workflow.name,
486
- });
487
- dispatchWebhookEvent({
488
- type: 'run.started',
489
- payload: {
490
- runId: run.id,
491
- workflowId: run.workflowId,
492
- templateId: template.id,
493
- },
494
- });
495
- res.status(202).json(run);
496
- }
497
- catch (error) {
498
- res.status(400).json({
499
- error: {
500
- code: 'WORKFLOW_TEMPLATE_START_FAILED',
501
- message: error instanceof Error ? error.message : String(error),
502
- },
503
- });
504
- }
505
- });
506
- return router;
507
- }
508
- //# sourceMappingURL=workflow.routes.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"workflow.routes.js","sourceRoot":"","sources":["../../../../../server/modules/orchestration/workflows/workflow.routes.ts"],"names":[],"mappings":"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"}
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=workflow.types.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"workflow.types.js","sourceRoot":"","sources":["../../../../../server/modules/orchestration/workflows/workflow.types.ts"],"names":[],"mappings":""}
@@ -1,100 +0,0 @@
1
- import { readFileSync } from 'node:fs';
2
- import { dirname, resolve } from 'node:path';
3
- import { fileURLToPath } from 'node:url';
4
- const pixcodePackageName = '@pixelbyte-software/pixcode';
5
- function readRecord(value) {
6
- return value && typeof value === 'object' ? value : undefined;
7
- }
8
- function readString(value) {
9
- return typeof value === 'string' && value.trim() ? value.trim() : undefined;
10
- }
11
- function readTargetKind(value) {
12
- return value === 'selected_project' || value === 'pixcode_app' || value === 'custom'
13
- ? value
14
- : undefined;
15
- }
16
- export function findPixcodeAppRoot() {
17
- let currentDir = dirname(fileURLToPath(import.meta.url));
18
- for (let depth = 0; depth < 10; depth += 1) {
19
- try {
20
- const packagePath = resolve(currentDir, 'package.json');
21
- const pkg = JSON.parse(readFileSync(packagePath, 'utf8'));
22
- if (pkg.name === pixcodePackageName) {
23
- return currentDir;
24
- }
25
- }
26
- catch {
27
- // Walk upward until the Pixcode package root is found.
28
- }
29
- const parent = dirname(currentDir);
30
- if (parent === currentDir)
31
- break;
32
- currentDir = parent;
33
- }
34
- return process.cwd();
35
- }
36
- export function resolveWorkflowWorkspace(metadata) {
37
- const target = readRecord(metadata?.workspaceTarget);
38
- const appRoot = findPixcodeAppRoot();
39
- const selectedProjectPath = readString(metadata?.selectedProjectPath) ?? readString(metadata?.projectPath);
40
- const selectedProjectName = readString(metadata?.projectName) ?? readString(metadata?.projectId);
41
- const kind = readTargetKind(target?.kind) ?? 'selected_project';
42
- const customPath = readString(target?.projectPath);
43
- if (kind === 'pixcode_app') {
44
- return {
45
- kind,
46
- label: 'Pixcode app',
47
- projectPath: appRoot,
48
- selectedProjectPath,
49
- selectedProjectName,
50
- appRoot,
51
- };
52
- }
53
- if (kind === 'custom') {
54
- return {
55
- kind,
56
- label: readString(target?.label) ?? 'Custom workspace',
57
- projectPath: customPath ?? selectedProjectPath ?? appRoot,
58
- selectedProjectPath,
59
- selectedProjectName,
60
- appRoot,
61
- };
62
- }
63
- return {
64
- kind: 'selected_project',
65
- label: selectedProjectName ?? 'Selected project',
66
- projectPath: selectedProjectPath ?? appRoot,
67
- selectedProjectPath,
68
- selectedProjectName,
69
- appRoot,
70
- };
71
- }
72
- export function workspaceTargetMetadata(target) {
73
- return {
74
- kind: target.kind,
75
- label: target.label,
76
- projectPath: target.projectPath,
77
- selectedProjectPath: target.selectedProjectPath,
78
- selectedProjectName: target.selectedProjectName,
79
- appRoot: target.appRoot,
80
- };
81
- }
82
- export function workspaceContextPrompt(target) {
83
- return [
84
- 'Pixcode orchestration execution context:',
85
- `- Target workspace: ${target.label}`,
86
- `- Working directory for this agent: ${target.projectPath}`,
87
- target.selectedProjectName ? `- Selected UI project: ${target.selectedProjectName}` : '',
88
- target.selectedProjectPath ? `- Selected UI project path: ${target.selectedProjectPath}` : '',
89
- `- Pixcode app root: ${target.appRoot}`,
90
- '',
91
- 'Rules:',
92
- '- Treat the working directory above as the authoritative project/application for this task.',
93
- '- Do not guess another repository path unless the user explicitly asks for it.',
94
- '- Do not access parent directories, sibling projects, or broad external globs outside the working directory unless the user explicitly asks.',
95
- '- If the user asks to analyze or modify Pixcode/orchestration itself, the target workspace must be the Pixcode app root.',
96
- '- Before running package-manager commands, inspect the package files in the working directory.',
97
- '- If a tool reports a permission denial, summarize the limitation and continue from the provided context instead of retrying the same external path.',
98
- ].filter(Boolean).join('\n');
99
- }
100
- //# sourceMappingURL=workspace-target.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"workspace-target.js","sourceRoot":"","sources":["../../../../../server/modules/orchestration/workflows/workspace-target.ts"],"names":[],"mappings":"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"}