@viewportai/daemon 0.25.12 → 0.25.13
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.
- package/dist/cli/check-command.d.ts +2 -0
- package/dist/cli/check-command.d.ts.map +1 -0
- package/dist/cli/check-command.js +168 -0
- package/dist/cli/check-command.js.map +1 -0
- package/dist/cli/commands.d.ts +2 -0
- package/dist/cli/commands.d.ts.map +1 -1
- package/dist/cli/commands.js +2 -0
- package/dist/cli/commands.js.map +1 -1
- package/dist/cli/diagnostic-command.d.ts +2 -0
- package/dist/cli/diagnostic-command.d.ts.map +1 -0
- package/dist/cli/diagnostic-command.js +102 -0
- package/dist/cli/diagnostic-command.js.map +1 -0
- package/dist/cli/lifecycle-commands.d.ts.map +1 -1
- package/dist/cli/lifecycle-commands.js +2 -1
- package/dist/cli/lifecycle-commands.js.map +1 -1
- package/dist/cli/lifecycle-pair-command.d.ts.map +1 -1
- package/dist/cli/lifecycle-pair-command.js +31 -0
- package/dist/cli/lifecycle-pair-command.js.map +1 -1
- package/dist/cli/policy-schema-validator.d.ts +221 -0
- package/dist/cli/policy-schema-validator.d.ts.map +1 -0
- package/dist/cli/policy-schema-validator.js +280 -0
- package/dist/cli/policy-schema-validator.js.map +1 -0
- package/dist/cli/support-packet.d.ts +7 -0
- package/dist/cli/support-packet.d.ts.map +1 -0
- package/dist/cli/support-packet.js +19 -0
- package/dist/cli/support-packet.js.map +1 -0
- package/dist/cli/worker-command.d.ts.map +1 -1
- package/dist/cli/worker-command.js +367 -14
- package/dist/cli/worker-command.js.map +1 -1
- package/dist/cli/worker-process-lock.d.ts +27 -0
- package/dist/cli/worker-process-lock.d.ts.map +1 -0
- package/dist/cli/worker-process-lock.js +150 -0
- package/dist/cli/worker-process-lock.js.map +1 -0
- package/dist/cli/worker-profile.d.ts +20 -0
- package/dist/cli/worker-profile.d.ts.map +1 -1
- package/dist/cli/worker-profile.js +38 -0
- package/dist/cli/worker-profile.js.map +1 -1
- package/dist/cli/worker-runtime.d.ts +2 -1
- package/dist/cli/worker-runtime.d.ts.map +1 -1
- package/dist/cli/worker-runtime.js +282 -88
- package/dist/cli/worker-runtime.js.map +1 -1
- package/dist/cli/workflow-managed-worker-format.d.ts.map +1 -1
- package/dist/cli/workflow-managed-worker-format.js +3 -1
- package/dist/cli/workflow-managed-worker-format.js.map +1 -1
- package/dist/cli/workflow-managed-worker.d.ts.map +1 -1
- package/dist/cli/workflow-managed-worker.js +157 -20
- package/dist/cli/workflow-managed-worker.js.map +1 -1
- package/dist/core/logger.d.ts.map +1 -1
- package/dist/core/logger.js +6 -0
- package/dist/core/logger.js.map +1 -1
- package/dist/core/output.d.ts.map +1 -1
- package/dist/core/output.js +5 -4
- package/dist/core/output.js.map +1 -1
- package/dist/core/redaction.d.ts +4 -0
- package/dist/core/redaction.d.ts.map +1 -0
- package/dist/core/redaction.js +76 -0
- package/dist/core/redaction.js.map +1 -0
- package/dist/index.d.ts +2 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +5 -1
- package/dist/index.js.map +1 -1
- package/dist/workflows/action-provider-adapters.js +52 -4
- package/dist/workflows/action-provider-adapters.js.map +1 -1
- package/dist/workflows/checkout-node.d.ts +1 -0
- package/dist/workflows/checkout-node.d.ts.map +1 -1
- package/dist/workflows/checkout-node.js +9 -4
- package/dist/workflows/checkout-node.js.map +1 -1
- package/dist/workflows/event-types.d.ts +1 -1
- package/dist/workflows/event-types.d.ts.map +1 -1
- package/dist/workflows/git-publish-node.d.ts +20 -0
- package/dist/workflows/git-publish-node.d.ts.map +1 -1
- package/dist/workflows/git-publish-node.js +87 -3
- package/dist/workflows/git-publish-node.js.map +1 -1
- package/dist/workflows/node-executor.d.ts +6 -0
- package/dist/workflows/node-executor.d.ts.map +1 -1
- package/dist/workflows/node-executor.js +53 -2
- package/dist/workflows/node-executor.js.map +1 -1
- package/dist/workflows/node-registry.d.ts +2 -2
- package/dist/workflows/node-registry.d.ts.map +1 -1
- package/dist/workflows/node-registry.js +129 -5
- package/dist/workflows/node-registry.js.map +1 -1
- package/dist/workflows/parser.d.ts.map +1 -1
- package/dist/workflows/parser.js +17 -1
- package/dist/workflows/parser.js.map +1 -1
- package/dist/workflows/platform-command-applier.d.ts +4 -0
- package/dist/workflows/platform-command-applier.d.ts.map +1 -1
- package/dist/workflows/platform-command-applier.js +152 -1
- package/dist/workflows/platform-command-applier.js.map +1 -1
- package/dist/workflows/platform-runtime-command.d.ts +2 -0
- package/dist/workflows/platform-runtime-command.d.ts.map +1 -1
- package/dist/workflows/platform-runtime-command.js +2 -0
- package/dist/workflows/platform-runtime-command.js.map +1 -1
- package/dist/workflows/platform-sync-payload.js +18 -4
- package/dist/workflows/platform-sync-payload.js.map +1 -1
- package/dist/workflows/platform-sync.js +7 -2
- package/dist/workflows/platform-sync.js.map +1 -1
- package/dist/workflows/policy-enforcement.d.ts +43 -0
- package/dist/workflows/policy-enforcement.d.ts.map +1 -0
- package/dist/workflows/policy-enforcement.js +0 -0
- package/dist/workflows/policy-enforcement.js.map +1 -0
- package/dist/workflows/run-types.d.ts +1 -0
- package/dist/workflows/run-types.d.ts.map +1 -1
- package/dist/workflows/runner.d.ts +4 -1
- package/dist/workflows/runner.d.ts.map +1 -1
- package/dist/workflows/runner.js +46 -12
- package/dist/workflows/runner.js.map +1 -1
- package/dist/workflows/types.d.ts +33 -0
- package/dist/workflows/types.d.ts.map +1 -1
- package/dist/workflows/workflow-authority-contract.d.ts +1 -1
- package/dist/workflows/workflow-authority-contract.d.ts.map +1 -1
- package/dist/workflows/workflow-authority-contract.js +23 -0
- package/dist/workflows/workflow-authority-contract.js.map +1 -1
- package/dist/workflows/workflow-production-schema.d.ts +13 -0
- package/dist/workflows/workflow-production-schema.d.ts.map +1 -1
- package/dist/workflows/workflow-production-schema.js +26 -0
- package/dist/workflows/workflow-production-schema.js.map +1 -1
- package/dist/workflows/workflow-production-types.d.ts +6 -0
- package/dist/workflows/workflow-production-types.d.ts.map +1 -1
- package/dist/workflows/workflow-schema.d.ts +50 -0
- package/dist/workflows/workflow-schema.d.ts.map +1 -1
- package/dist/workflows/workflow-schema.js +41 -0
- package/dist/workflows/workflow-schema.js.map +1 -1
- package/package.json +6 -3
|
@@ -100,7 +100,9 @@ export function approvalActor(node) {
|
|
|
100
100
|
export function approvalExpectedActionDigest(node) {
|
|
101
101
|
const approval = node.metadata?.['approval'];
|
|
102
102
|
if (approval && typeof approval === 'object') {
|
|
103
|
-
const digest = approval.
|
|
103
|
+
const digest = approval.expectedActionDigest ??
|
|
104
|
+
approval.expected_action_digest ??
|
|
105
|
+
approval.actionDigest;
|
|
104
106
|
if (typeof digest === 'string' && digest.trim() !== '')
|
|
105
107
|
return digest;
|
|
106
108
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"workflow-managed-worker-format.js","sourceRoot":"","sources":["../../src/cli/workflow-managed-worker-format.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"workflow-managed-worker-format.js","sourceRoot":"","sources":["../../src/cli/workflow-managed-worker-format.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"workflow-managed-worker.d.ts","sourceRoot":"","sources":["../../src/cli/workflow-managed-worker.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"workflow-managed-worker.d.ts","sourceRoot":"","sources":["../../src/cli/workflow-managed-worker.ts"],"names":[],"mappings":"AAyDA,wBAAsB,cAAc,IAAI,OAAO,CAAC,IAAI,CAAC,CA4NpD"}
|
|
@@ -13,6 +13,7 @@ import { executeProviderAction, WorkflowActionError, } from '../workflows/action
|
|
|
13
13
|
import { envNameForCredentialRef } from '../workflows/action-provider-utils.js';
|
|
14
14
|
import { sanitizeActionInput } from '../workflows/action-digest.js';
|
|
15
15
|
import { approvalActor, approvalExecutionGrant, approvalFeedback, approvalExpectedActionDigest, approvalMessage, capabilityPayload, dataFrom, localRunToSyncPayload, progressSyncEveryMs, readRun, } from './workflow-managed-worker-format.js';
|
|
16
|
+
import { acquireWorkerProcessLock } from './worker-process-lock.js';
|
|
16
17
|
export async function workflowWorker() {
|
|
17
18
|
if (hasFlag('help') || getArgs().includes('-h')) {
|
|
18
19
|
console.log(workflowWorkerUsage());
|
|
@@ -63,6 +64,7 @@ export async function workflowWorker() {
|
|
|
63
64
|
failed: 0,
|
|
64
65
|
};
|
|
65
66
|
let failed = false;
|
|
67
|
+
const processLock = options.once ? undefined : acquireWorkerProcessLock(options);
|
|
66
68
|
try {
|
|
67
69
|
do {
|
|
68
70
|
await heartbeat(options, 'online', 'idle');
|
|
@@ -91,6 +93,17 @@ export async function workflowWorker() {
|
|
|
91
93
|
continue;
|
|
92
94
|
}
|
|
93
95
|
stats.claimed += 1;
|
|
96
|
+
if (assignment.status === 'canceled') {
|
|
97
|
+
const canceledRun = assignmentCanceledBeforeStartRun(assignment);
|
|
98
|
+
clearRunCredentialMaterial(assignment.id);
|
|
99
|
+
await syncLocalRun(options, assignment.id, canceledRun, assignment.assignment_claim_token);
|
|
100
|
+
stats.failed += 1;
|
|
101
|
+
if (options.once ||
|
|
102
|
+
(options.maxRuns !== undefined && totalClaimed(stats) >= options.maxRuns)) {
|
|
103
|
+
break;
|
|
104
|
+
}
|
|
105
|
+
continue;
|
|
106
|
+
}
|
|
94
107
|
let localRun;
|
|
95
108
|
try {
|
|
96
109
|
localRun = await runAssignmentLocally(options, assignment);
|
|
@@ -131,7 +144,21 @@ export async function workflowWorker() {
|
|
|
131
144
|
continue;
|
|
132
145
|
}
|
|
133
146
|
}
|
|
134
|
-
|
|
147
|
+
let synced;
|
|
148
|
+
try {
|
|
149
|
+
synced = await syncLocalRun(options, assignment.id, localRun, assignment.assignment_claim_token);
|
|
150
|
+
}
|
|
151
|
+
catch (error) {
|
|
152
|
+
if (localRun.status === 'canceled' && isPlatformAccessDenied(error)) {
|
|
153
|
+
stats.failed += 1;
|
|
154
|
+
if (options.once ||
|
|
155
|
+
(options.maxRuns !== undefined && totalClaimed(stats) >= options.maxRuns)) {
|
|
156
|
+
break;
|
|
157
|
+
}
|
|
158
|
+
continue;
|
|
159
|
+
}
|
|
160
|
+
throw error;
|
|
161
|
+
}
|
|
135
162
|
if (synced.status === 'blocked') {
|
|
136
163
|
stats.blocked += 1;
|
|
137
164
|
if (!options.once) {
|
|
@@ -158,6 +185,7 @@ export async function workflowWorker() {
|
|
|
158
185
|
throw error;
|
|
159
186
|
}
|
|
160
187
|
finally {
|
|
188
|
+
processLock?.release();
|
|
161
189
|
await safeHeartbeat(options, 'offline', failed ? 'degraded' : 'offline');
|
|
162
190
|
}
|
|
163
191
|
if (isJsonMode()) {
|
|
@@ -208,6 +236,9 @@ async function syncDaemonModelCapabilities(options) {
|
|
|
208
236
|
if (allModels.length === 0) {
|
|
209
237
|
return;
|
|
210
238
|
}
|
|
239
|
+
if (options.capabilities.agents.length === 0) {
|
|
240
|
+
options.capabilities.agents = Object.keys(catalog);
|
|
241
|
+
}
|
|
211
242
|
options.capabilities.models = allModels;
|
|
212
243
|
options.capabilities.agentModels = catalog;
|
|
213
244
|
}
|
|
@@ -950,7 +981,16 @@ async function runAssignmentLocally(options, assignment) {
|
|
|
950
981
|
if (existingRun) {
|
|
951
982
|
if (existingRun.status === 'running' || existingRun.status === 'queued') {
|
|
952
983
|
const completed = await pollLocalRun(existingRun.id, async (run) => {
|
|
953
|
-
|
|
984
|
+
try {
|
|
985
|
+
await syncLocalRun(options, assignment.id, run, assignment.assignment_claim_token);
|
|
986
|
+
}
|
|
987
|
+
catch (error) {
|
|
988
|
+
if (isPlatformAccessDenied(error)) {
|
|
989
|
+
return cancelLocalRun(existingRun.id);
|
|
990
|
+
}
|
|
991
|
+
throw error;
|
|
992
|
+
}
|
|
993
|
+
return cancelLocalRunIfAssignmentCanceled(options, assignment.id, existingRun.id, assignment.assignment_claim_token);
|
|
954
994
|
}, progressSyncEveryMs(options.leaseSeconds));
|
|
955
995
|
if (terminalRunStatus(completed.status)) {
|
|
956
996
|
clearRunCredentialMaterial(assignment.id);
|
|
@@ -990,7 +1030,16 @@ async function runAssignmentLocally(options, assignment) {
|
|
|
990
1030
|
});
|
|
991
1031
|
const runId = readRun(started).id;
|
|
992
1032
|
const completed = await pollLocalRun(runId, async (run) => {
|
|
993
|
-
|
|
1033
|
+
try {
|
|
1034
|
+
await syncLocalRun(options, assignment.id, run, assignment.assignment_claim_token);
|
|
1035
|
+
}
|
|
1036
|
+
catch (error) {
|
|
1037
|
+
if (isPlatformAccessDenied(error)) {
|
|
1038
|
+
return cancelLocalRun(runId);
|
|
1039
|
+
}
|
|
1040
|
+
throw error;
|
|
1041
|
+
}
|
|
1042
|
+
return cancelLocalRunIfAssignmentCanceled(options, assignment.id, runId, assignment.assignment_claim_token);
|
|
994
1043
|
}, progressSyncEveryMs(options.leaseSeconds));
|
|
995
1044
|
if (terminalRunStatus(completed.status)) {
|
|
996
1045
|
clearRunCredentialMaterial(assignment.id);
|
|
@@ -1131,6 +1180,65 @@ function assignmentExecutionFailureRun(assignment, error) {
|
|
|
1131
1180
|
error: message,
|
|
1132
1181
|
};
|
|
1133
1182
|
}
|
|
1183
|
+
function assignmentCanceledBeforeStartRun(assignment) {
|
|
1184
|
+
const now = Date.now();
|
|
1185
|
+
const runtimeRunId = `assignment-canceled-before-start-${assignment.id}`;
|
|
1186
|
+
const message = 'Managed workflow assignment was canceled before local execution started.';
|
|
1187
|
+
return {
|
|
1188
|
+
id: runtimeRunId,
|
|
1189
|
+
workflowName: 'managed-assignment-canceled',
|
|
1190
|
+
sourceType: 'viewport_snapshot',
|
|
1191
|
+
sourcePath: assignment.source_ref ?? `viewport://managed-executor/${assignment.id}`,
|
|
1192
|
+
digest: `managed-assignment-canceled:${assignment.id}`,
|
|
1193
|
+
schema: 'viewport.workflow/v1',
|
|
1194
|
+
yamlSnapshot: assignment.yaml_snapshot ?? '',
|
|
1195
|
+
directoryId: 'managed-assignment-canceled',
|
|
1196
|
+
directoryPath: assignment.directory_path ?? process.cwd(),
|
|
1197
|
+
resourceId: undefined,
|
|
1198
|
+
runtimeTargetId: assignment.runtime_target_id ?? undefined,
|
|
1199
|
+
platformRunId: assignment.id,
|
|
1200
|
+
machineId: 'managed-executor',
|
|
1201
|
+
dataCapturePolicy: {
|
|
1202
|
+
transcripts: assignment.data_capture_policy?.transcripts ?? 'none',
|
|
1203
|
+
logs: assignment.data_capture_policy?.logs ?? 'metadata',
|
|
1204
|
+
artifacts: assignment.data_capture_policy?.artifacts ?? 'metadata',
|
|
1205
|
+
},
|
|
1206
|
+
initiation: 'cli',
|
|
1207
|
+
status: 'canceled',
|
|
1208
|
+
inputs: assignment.input_snapshot ?? {},
|
|
1209
|
+
preflight: {
|
|
1210
|
+
ok: false,
|
|
1211
|
+
issues: [
|
|
1212
|
+
{
|
|
1213
|
+
kind: 'node',
|
|
1214
|
+
name: 'managed-assignment-canceled',
|
|
1215
|
+
message,
|
|
1216
|
+
},
|
|
1217
|
+
],
|
|
1218
|
+
},
|
|
1219
|
+
nodes: {},
|
|
1220
|
+
artifacts: [],
|
|
1221
|
+
events: [
|
|
1222
|
+
{
|
|
1223
|
+
id: 'managed-assignment-canceled-before-start',
|
|
1224
|
+
runId: runtimeRunId,
|
|
1225
|
+
timestamp: now,
|
|
1226
|
+
type: 'run-canceled',
|
|
1227
|
+
message,
|
|
1228
|
+
data: {
|
|
1229
|
+
platform_run_id: assignment.id,
|
|
1230
|
+
runtime_run_id: runtimeRunId,
|
|
1231
|
+
recovery_policy: 'skip_local_execution_for_canceled_assignment',
|
|
1232
|
+
},
|
|
1233
|
+
},
|
|
1234
|
+
],
|
|
1235
|
+
createdAt: now,
|
|
1236
|
+
startedAt: now,
|
|
1237
|
+
updatedAt: now,
|
|
1238
|
+
completedAt: now,
|
|
1239
|
+
error: message,
|
|
1240
|
+
};
|
|
1241
|
+
}
|
|
1134
1242
|
function recordChildValue(value, key) {
|
|
1135
1243
|
if (!value || typeof value !== 'object' || Array.isArray(value))
|
|
1136
1244
|
return undefined;
|
|
@@ -1305,9 +1413,13 @@ async function materializeCredential(options, assignment, handle) {
|
|
|
1305
1413
|
return data;
|
|
1306
1414
|
}
|
|
1307
1415
|
function repositoryForCredentialMaterialization(assignment, handle) {
|
|
1308
|
-
const
|
|
1309
|
-
if (
|
|
1310
|
-
return { repository:
|
|
1416
|
+
const actionRepositories = repositoriesFromActionCredentialRef(assignment, handle);
|
|
1417
|
+
if (actionRepositories.length === 1 && actionRepositories[0]) {
|
|
1418
|
+
return { repository: actionRepositories[0] };
|
|
1419
|
+
}
|
|
1420
|
+
if (actionRepositories.length > 1) {
|
|
1421
|
+
return { repositories: actionRepositories };
|
|
1422
|
+
}
|
|
1311
1423
|
const checkoutEntries = [
|
|
1312
1424
|
...credentialEntriesFrom(pathValue(asRecord(assignment.execution_profile_snapshot), ['credentials', 'repo_checkout'])),
|
|
1313
1425
|
...credentialEntriesFrom(pathValue(asRecord(assignment.workflow_snapshot), ['credentials', 'repo_checkout'])),
|
|
@@ -1427,11 +1539,12 @@ function actionCredentialRefs(nodes) {
|
|
|
1427
1539
|
return credentialRef ? [credentialRef] : [];
|
|
1428
1540
|
});
|
|
1429
1541
|
}
|
|
1430
|
-
function
|
|
1542
|
+
function repositoriesFromActionCredentialRef(assignment, handle) {
|
|
1431
1543
|
const workflow = yamlSnapshotDocument(assignment);
|
|
1432
1544
|
const nodes = isRecord(workflow) ? workflow['nodes'] : undefined;
|
|
1433
1545
|
if (!isRecord(nodes))
|
|
1434
|
-
return
|
|
1546
|
+
return [];
|
|
1547
|
+
const repositories = new Set();
|
|
1435
1548
|
for (const node of Object.values(nodes)) {
|
|
1436
1549
|
if (!isRecord(node) || stringField(node, 'type') !== 'action')
|
|
1437
1550
|
continue;
|
|
@@ -1442,9 +1555,9 @@ function repositoryFromActionCredentialRef(assignment, handle) {
|
|
|
1442
1555
|
const repository = stringField(withValue, 'repository') ?? stringField(withValue, 'repo');
|
|
1443
1556
|
const rendered = renderCredentialTemplate(repository, assignment);
|
|
1444
1557
|
if (rendered)
|
|
1445
|
-
|
|
1558
|
+
repositories.add(rendered);
|
|
1446
1559
|
}
|
|
1447
|
-
return
|
|
1560
|
+
return [...repositories].sort();
|
|
1448
1561
|
}
|
|
1449
1562
|
function renderCredentialTemplate(value, assignment) {
|
|
1450
1563
|
if (!value)
|
|
@@ -1532,11 +1645,7 @@ async function waitForApprovalAndResume(options, platformRunId, localRunId, assi
|
|
|
1532
1645
|
}
|
|
1533
1646
|
}
|
|
1534
1647
|
if (assignment.status === 'canceled' || assignment.status === 'failed') {
|
|
1535
|
-
const
|
|
1536
|
-
message: 'Managed workflow assignment was canceled from Viewport.',
|
|
1537
|
-
actor: { name: 'Viewport', source: 'managed-executor' },
|
|
1538
|
-
});
|
|
1539
|
-
const run = readRun(canceled);
|
|
1648
|
+
const run = await cancelLocalRun(localRunId);
|
|
1540
1649
|
await syncLocalRun(options, platformRunId, run, assignmentClaimToken);
|
|
1541
1650
|
return run;
|
|
1542
1651
|
}
|
|
@@ -1547,6 +1656,19 @@ async function waitForApprovalAndResume(options, platformRunId, localRunId, assi
|
|
|
1547
1656
|
await delay(options.commandSleepSeconds * 1000);
|
|
1548
1657
|
}
|
|
1549
1658
|
}
|
|
1659
|
+
async function cancelLocalRunIfAssignmentCanceled(options, platformRunId, localRunId, assignmentClaimToken) {
|
|
1660
|
+
const assignment = await getAssignment(options, platformRunId, assignmentClaimToken);
|
|
1661
|
+
if (assignment.status !== 'canceled' && assignment.status !== 'failed')
|
|
1662
|
+
return undefined;
|
|
1663
|
+
return cancelLocalRun(localRunId);
|
|
1664
|
+
}
|
|
1665
|
+
async function cancelLocalRun(localRunId) {
|
|
1666
|
+
const canceled = await daemonJson('POST', `/api/workflows/runs/${encodeURIComponent(localRunId)}/cancel`, {
|
|
1667
|
+
message: 'Managed workflow assignment was canceled from Viewport.',
|
|
1668
|
+
actor: { name: 'Viewport', source: 'managed-executor' },
|
|
1669
|
+
});
|
|
1670
|
+
return readRun(canceled);
|
|
1671
|
+
}
|
|
1550
1672
|
async function applyBrokerActionCompletedCommands(options, platformRunId, assignment, localRunId, assignmentClaimToken) {
|
|
1551
1673
|
const localRun = await readExistingLocalRun(localRunId);
|
|
1552
1674
|
const commands = (assignment.runtime_commands ?? []).filter((command) => command['type'] === 'workflow.action_completed' &&
|
|
@@ -1659,7 +1781,7 @@ async function resumeApprovedLocalRun(options, platformRunId, localRunId, approv
|
|
|
1659
1781
|
});
|
|
1660
1782
|
}
|
|
1661
1783
|
catch (error) {
|
|
1662
|
-
if (!
|
|
1784
|
+
if (!isNonFatalApprovalResumeError(error))
|
|
1663
1785
|
throw error;
|
|
1664
1786
|
const current = await readExistingLocalRun(localRunId);
|
|
1665
1787
|
if (!current)
|
|
@@ -1735,9 +1857,10 @@ function assignmentWorkflowAuthorityContracts(assignment) {
|
|
|
1735
1857
|
recordChildValue(recordChildValue(asRecord(assignment.input_snapshot), 'viewport'), 'workflowAuthorityContract'),
|
|
1736
1858
|
].filter(isRecord);
|
|
1737
1859
|
}
|
|
1738
|
-
function
|
|
1860
|
+
function isNonFatalApprovalResumeError(error) {
|
|
1739
1861
|
const message = error instanceof Error ? error.message : String(error);
|
|
1740
|
-
return message.includes('Workflow node is not awaiting approval')
|
|
1862
|
+
return (message.includes('Workflow node is not awaiting approval') ||
|
|
1863
|
+
message.includes('The proposed action changed before approval'));
|
|
1741
1864
|
}
|
|
1742
1865
|
function isResolvedManagedGateNode(node) {
|
|
1743
1866
|
if (!['approval', 'gate', 'plan'].includes(String(node.type ?? '')))
|
|
@@ -1800,6 +1923,7 @@ async function ensureDirectory(directoryPath) {
|
|
|
1800
1923
|
const existing = directories.find((directory) => directory.path === resolvedPath);
|
|
1801
1924
|
if (existing)
|
|
1802
1925
|
return existing;
|
|
1926
|
+
await fs.promises.mkdir(resolvedPath, { recursive: true, mode: 0o700 });
|
|
1803
1927
|
const created = (await daemonJson('POST', '/api/directories', { path: resolvedPath }));
|
|
1804
1928
|
if (!created.id)
|
|
1805
1929
|
throw new Error(`Failed to register workflow worker directory: ${resolvedPath}`);
|
|
@@ -1813,12 +1937,25 @@ async function pollLocalRun(runId, onProgress, progressEveryMs = 30_000) {
|
|
|
1813
1937
|
if (['completed', 'failed', 'blocked', 'canceled'].includes(run.status))
|
|
1814
1938
|
return run;
|
|
1815
1939
|
if (onProgress && Date.now() >= nextProgressAt) {
|
|
1816
|
-
await onProgress(run);
|
|
1940
|
+
const progressRun = await onProgress(run);
|
|
1941
|
+
if (progressRun)
|
|
1942
|
+
return progressRun;
|
|
1817
1943
|
nextProgressAt = Date.now() + progressEveryMs;
|
|
1818
1944
|
}
|
|
1819
1945
|
await delay(500);
|
|
1820
1946
|
}
|
|
1821
1947
|
}
|
|
1948
|
+
class PlatformRequestError extends Error {
|
|
1949
|
+
status;
|
|
1950
|
+
constructor(status, message) {
|
|
1951
|
+
super(message);
|
|
1952
|
+
this.status = status;
|
|
1953
|
+
this.name = 'PlatformRequestError';
|
|
1954
|
+
}
|
|
1955
|
+
}
|
|
1956
|
+
function isPlatformAccessDenied(error) {
|
|
1957
|
+
return error instanceof PlatformRequestError && [401, 402, 403, 404].includes(error.status);
|
|
1958
|
+
}
|
|
1822
1959
|
async function daemonJson(method, urlPath, body) {
|
|
1823
1960
|
const response = await daemonFetch(urlPath, {
|
|
1824
1961
|
method,
|
|
@@ -1855,7 +1992,7 @@ async function platformFetch(options, method, pathSuffix, body, assignmentClaimT
|
|
|
1855
1992
|
tlsPins: parseCsvList(process.env['VPD_SERVER_TLS_PINS']),
|
|
1856
1993
|
});
|
|
1857
1994
|
if (!response.ok && response.status !== 204) {
|
|
1858
|
-
throw new
|
|
1995
|
+
throw new PlatformRequestError(response.status, `Platform request failed: HTTP ${response.status} ${await response.text()}`);
|
|
1859
1996
|
}
|
|
1860
1997
|
return response;
|
|
1861
1998
|
}
|