@viewportai/daemon 0.20.1 → 0.22.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (312) hide show
  1. package/README.md +34 -0
  2. package/dist/adapters/claude.d.ts +7 -1
  3. package/dist/adapters/claude.d.ts.map +1 -1
  4. package/dist/adapters/claude.js +71 -0
  5. package/dist/adapters/claude.js.map +1 -1
  6. package/dist/adapters/codex-event-normalizers.d.ts.map +1 -1
  7. package/dist/adapters/codex-event-normalizers.js +55 -2
  8. package/dist/adapters/codex-event-normalizers.js.map +1 -1
  9. package/dist/adapters/codex.d.ts +2 -1
  10. package/dist/adapters/codex.d.ts.map +1 -1
  11. package/dist/adapters/codex.js +35 -0
  12. package/dist/adapters/codex.js.map +1 -1
  13. package/dist/adapters/gemini-cli.d.ts +2 -1
  14. package/dist/adapters/gemini-cli.d.ts.map +1 -1
  15. package/dist/adapters/gemini-cli.js +24 -0
  16. package/dist/adapters/gemini-cli.js.map +1 -1
  17. package/dist/adapters/pty.d.ts +2 -1
  18. package/dist/adapters/pty.d.ts.map +1 -1
  19. package/dist/adapters/pty.js +26 -1
  20. package/dist/adapters/pty.js.map +1 -1
  21. package/dist/cli/args.d.ts.map +1 -1
  22. package/dist/cli/args.js +7 -3
  23. package/dist/cli/args.js.map +1 -1
  24. package/dist/cli/commands.d.ts +3 -0
  25. package/dist/cli/commands.d.ts.map +1 -1
  26. package/dist/cli/commands.js +3 -0
  27. package/dist/cli/commands.js.map +1 -1
  28. package/dist/cli/context-command.js +2 -0
  29. package/dist/cli/context-command.js.map +1 -1
  30. package/dist/cli/context-sync-target.d.ts +2 -0
  31. package/dist/cli/context-sync-target.d.ts.map +1 -1
  32. package/dist/cli/context-sync-target.js +4 -0
  33. package/dist/cli/context-sync-target.js.map +1 -1
  34. package/dist/cli/daemon-client.d.ts +1 -0
  35. package/dist/cli/daemon-client.d.ts.map +1 -1
  36. package/dist/cli/daemon-client.js +13 -1
  37. package/dist/cli/daemon-client.js.map +1 -1
  38. package/dist/cli/global-flags.d.ts.map +1 -1
  39. package/dist/cli/global-flags.js +3 -2
  40. package/dist/cli/global-flags.js.map +1 -1
  41. package/dist/cli/hook-command.d.ts +7 -0
  42. package/dist/cli/hook-command.d.ts.map +1 -1
  43. package/dist/cli/hook-command.js +35 -20
  44. package/dist/cli/hook-command.js.map +1 -1
  45. package/dist/cli/install-command.d.ts +5 -1
  46. package/dist/cli/install-command.d.ts.map +1 -1
  47. package/dist/cli/install-command.js +37 -28
  48. package/dist/cli/install-command.js.map +1 -1
  49. package/dist/cli/lifecycle-commands.d.ts.map +1 -1
  50. package/dist/cli/lifecycle-commands.js +5 -2
  51. package/dist/cli/lifecycle-commands.js.map +1 -1
  52. package/dist/cli/lifecycle-pair-command.d.ts.map +1 -1
  53. package/dist/cli/lifecycle-pair-command.js +51 -6
  54. package/dist/cli/lifecycle-pair-command.js.map +1 -1
  55. package/dist/cli/lifecycle-pair-server.d.ts +2 -0
  56. package/dist/cli/lifecycle-pair-server.d.ts.map +1 -1
  57. package/dist/cli/lifecycle-pair-server.js.map +1 -1
  58. package/dist/cli/lifecycle-status-command.d.ts.map +1 -1
  59. package/dist/cli/lifecycle-status-command.js +43 -0
  60. package/dist/cli/lifecycle-status-command.js.map +1 -1
  61. package/dist/cli/setup-command.d.ts.map +1 -1
  62. package/dist/cli/setup-command.js +8 -8
  63. package/dist/cli/setup-command.js.map +1 -1
  64. package/dist/cli/team-resource-command.d.ts +2 -0
  65. package/dist/cli/team-resource-command.d.ts.map +1 -0
  66. package/dist/cli/team-resource-command.js +364 -0
  67. package/dist/cli/team-resource-command.js.map +1 -0
  68. package/dist/cli/watch-command.d.ts +3 -0
  69. package/dist/cli/watch-command.d.ts.map +1 -0
  70. package/dist/cli/watch-command.js +42 -0
  71. package/dist/cli/watch-command.js.map +1 -0
  72. package/dist/cli/worker-command.d.ts +3 -0
  73. package/dist/cli/worker-command.d.ts.map +1 -0
  74. package/dist/cli/worker-command.js +132 -0
  75. package/dist/cli/worker-command.js.map +1 -0
  76. package/dist/cli/worker-profile.d.ts +65 -0
  77. package/dist/cli/worker-profile.d.ts.map +1 -0
  78. package/dist/cli/worker-profile.js +228 -0
  79. package/dist/cli/worker-profile.js.map +1 -0
  80. package/dist/cli/worker-runtime.d.ts +19 -0
  81. package/dist/cli/worker-runtime.d.ts.map +1 -0
  82. package/dist/cli/worker-runtime.js +606 -0
  83. package/dist/cli/worker-runtime.js.map +1 -0
  84. package/dist/cli/workflow-managed-worker-format.d.ts +4 -3
  85. package/dist/cli/workflow-managed-worker-format.d.ts.map +1 -1
  86. package/dist/cli/workflow-managed-worker-format.js +71 -10
  87. package/dist/cli/workflow-managed-worker-format.js.map +1 -1
  88. package/dist/cli/workflow-managed-worker-types.d.ts +17 -0
  89. package/dist/cli/workflow-managed-worker-types.d.ts.map +1 -1
  90. package/dist/cli/workflow-managed-worker.d.ts.map +1 -1
  91. package/dist/cli/workflow-managed-worker.js +568 -39
  92. package/dist/cli/workflow-managed-worker.js.map +1 -1
  93. package/dist/config-resolution/provider-defaults.d.ts.map +1 -1
  94. package/dist/config-resolution/provider-defaults.js +4 -0
  95. package/dist/config-resolution/provider-defaults.js.map +1 -1
  96. package/dist/config-resolution/schema.d.ts +2 -0
  97. package/dist/config-resolution/schema.d.ts.map +1 -1
  98. package/dist/config-resolution/schema.js +2 -0
  99. package/dist/config-resolution/schema.js.map +1 -1
  100. package/dist/config-resolution/types.d.ts +1 -1
  101. package/dist/config-resolution/types.d.ts.map +1 -1
  102. package/dist/context/local-edge-sync.d.ts +2 -0
  103. package/dist/context/local-edge-sync.d.ts.map +1 -1
  104. package/dist/context/local-edge-sync.js +2 -0
  105. package/dist/context/local-edge-sync.js.map +1 -1
  106. package/dist/context-providers/confluence-provider.d.ts +3 -0
  107. package/dist/context-providers/confluence-provider.d.ts.map +1 -0
  108. package/dist/context-providers/confluence-provider.js +170 -0
  109. package/dist/context-providers/confluence-provider.js.map +1 -0
  110. package/dist/context-providers/notion-provider.d.ts +3 -0
  111. package/dist/context-providers/notion-provider.d.ts.map +1 -0
  112. package/dist/context-providers/notion-provider.js +157 -0
  113. package/dist/context-providers/notion-provider.js.map +1 -0
  114. package/dist/context-providers/registry.d.ts.map +1 -1
  115. package/dist/context-providers/registry.js +9 -1
  116. package/dist/context-providers/registry.js.map +1 -1
  117. package/dist/context-providers/types.d.ts +18 -0
  118. package/dist/context-providers/types.d.ts.map +1 -1
  119. package/dist/core/config-schema.d.ts +96 -3
  120. package/dist/core/config-schema.d.ts.map +1 -1
  121. package/dist/core/config-schema.js +53 -0
  122. package/dist/core/config-schema.js.map +1 -1
  123. package/dist/core/config.d.ts +88 -0
  124. package/dist/core/config.d.ts.map +1 -1
  125. package/dist/core/config.js +6 -0
  126. package/dist/core/config.js.map +1 -1
  127. package/dist/core/daemon.d.ts +5 -1
  128. package/dist/core/daemon.d.ts.map +1 -1
  129. package/dist/core/daemon.js +8 -0
  130. package/dist/core/daemon.js.map +1 -1
  131. package/dist/core/interfaces.d.ts +137 -1
  132. package/dist/core/interfaces.d.ts.map +1 -1
  133. package/dist/core/permission-coordinator.d.ts.map +1 -1
  134. package/dist/core/permission-coordinator.js +4 -2
  135. package/dist/core/permission-coordinator.js.map +1 -1
  136. package/dist/core/session-manager.d.ts.map +1 -1
  137. package/dist/core/session-manager.js +47 -20
  138. package/dist/core/session-manager.js.map +1 -1
  139. package/dist/core/types.d.ts +31 -0
  140. package/dist/core/types.d.ts.map +1 -1
  141. package/dist/core/types.js.map +1 -1
  142. package/dist/discovery/watcher.d.ts.map +1 -1
  143. package/dist/discovery/watcher.js +51 -8
  144. package/dist/discovery/watcher.js.map +1 -1
  145. package/dist/index.d.ts +2 -0
  146. package/dist/index.d.ts.map +1 -1
  147. package/dist/index.js +12 -1
  148. package/dist/index.js.map +1 -1
  149. package/dist/plugins/loader.d.ts.map +1 -1
  150. package/dist/plugins/loader.js +10 -1
  151. package/dist/plugins/loader.js.map +1 -1
  152. package/dist/security/child-env.d.ts +3 -0
  153. package/dist/security/child-env.d.ts.map +1 -0
  154. package/dist/security/child-env.js +44 -0
  155. package/dist/security/child-env.js.map +1 -0
  156. package/dist/server/http-request-schemas.d.ts +6 -0
  157. package/dist/server/http-request-schemas.d.ts.map +1 -1
  158. package/dist/server/http-request-schemas.js +15 -0
  159. package/dist/server/http-request-schemas.js.map +1 -1
  160. package/dist/server/http-server.d.ts.map +1 -1
  161. package/dist/server/http-server.js +4 -2
  162. package/dist/server/http-server.js.map +1 -1
  163. package/dist/workflows/action-adapters.d.ts.map +1 -1
  164. package/dist/workflows/action-adapters.js +42 -0
  165. package/dist/workflows/action-adapters.js.map +1 -1
  166. package/dist/workflows/action-provider-adapters.d.ts.map +1 -1
  167. package/dist/workflows/action-provider-adapters.js +156 -13
  168. package/dist/workflows/action-provider-adapters.js.map +1 -1
  169. package/dist/workflows/action-provider-utils.d.ts +6 -0
  170. package/dist/workflows/action-provider-utils.d.ts.map +1 -1
  171. package/dist/workflows/action-provider-utils.js +21 -0
  172. package/dist/workflows/action-provider-utils.js.map +1 -1
  173. package/dist/workflows/approval-actor.d.ts +6 -0
  174. package/dist/workflows/approval-actor.d.ts.map +1 -0
  175. package/dist/workflows/approval-actor.js +27 -0
  176. package/dist/workflows/approval-actor.js.map +1 -0
  177. package/dist/workflows/approval-on-reject.js +1 -0
  178. package/dist/workflows/approval-on-reject.js.map +1 -1
  179. package/dist/workflows/checkout-node.d.ts +21 -0
  180. package/dist/workflows/checkout-node.d.ts.map +1 -0
  181. package/dist/workflows/checkout-node.js +181 -0
  182. package/dist/workflows/checkout-node.js.map +1 -0
  183. package/dist/workflows/context-node-resolver.d.ts +48 -1
  184. package/dist/workflows/context-node-resolver.d.ts.map +1 -1
  185. package/dist/workflows/context-node-resolver.js +405 -8
  186. package/dist/workflows/context-node-resolver.js.map +1 -1
  187. package/dist/workflows/context-update-targets.d.ts +12 -0
  188. package/dist/workflows/context-update-targets.d.ts.map +1 -0
  189. package/dist/workflows/context-update-targets.js +52 -0
  190. package/dist/workflows/context-update-targets.js.map +1 -0
  191. package/dist/workflows/daemon-session.d.ts +11 -0
  192. package/dist/workflows/daemon-session.d.ts.map +1 -1
  193. package/dist/workflows/daemon-session.js +168 -6
  194. package/dist/workflows/daemon-session.js.map +1 -1
  195. package/dist/workflows/event-types.d.ts +1 -1
  196. package/dist/workflows/event-types.d.ts.map +1 -1
  197. package/dist/workflows/expression.d.ts +4 -0
  198. package/dist/workflows/expression.d.ts.map +1 -1
  199. package/dist/workflows/expression.js +1 -1
  200. package/dist/workflows/expression.js.map +1 -1
  201. package/dist/workflows/git-publish-node.d.ts +23 -0
  202. package/dist/workflows/git-publish-node.d.ts.map +1 -0
  203. package/dist/workflows/git-publish-node.js +237 -0
  204. package/dist/workflows/git-publish-node.js.map +1 -0
  205. package/dist/workflows/inline-agent-types.d.ts +7 -0
  206. package/dist/workflows/inline-agent-types.d.ts.map +1 -1
  207. package/dist/workflows/inline-agents.d.ts +4 -1
  208. package/dist/workflows/inline-agents.d.ts.map +1 -1
  209. package/dist/workflows/inline-agents.js +24 -1
  210. package/dist/workflows/inline-agents.js.map +1 -1
  211. package/dist/workflows/loop-executor.js +1 -0
  212. package/dist/workflows/loop-executor.js.map +1 -1
  213. package/dist/workflows/node-executor.d.ts +7 -0
  214. package/dist/workflows/node-executor.d.ts.map +1 -1
  215. package/dist/workflows/node-executor.js +135 -7
  216. package/dist/workflows/node-executor.js.map +1 -1
  217. package/dist/workflows/node-registry.d.ts.map +1 -1
  218. package/dist/workflows/node-registry.js +553 -4
  219. package/dist/workflows/node-registry.js.map +1 -1
  220. package/dist/workflows/parser.d.ts.map +1 -1
  221. package/dist/workflows/parser.js +70 -5
  222. package/dist/workflows/parser.js.map +1 -1
  223. package/dist/workflows/platform-command-applier.d.ts.map +1 -1
  224. package/dist/workflows/platform-command-applier.js +5 -14
  225. package/dist/workflows/platform-command-applier.js.map +1 -1
  226. package/dist/workflows/platform-context-client.d.ts +74 -0
  227. package/dist/workflows/platform-context-client.d.ts.map +1 -0
  228. package/dist/workflows/platform-context-client.js +228 -0
  229. package/dist/workflows/platform-context-client.js.map +1 -0
  230. package/dist/workflows/platform-sync-format.d.ts +1 -1
  231. package/dist/workflows/platform-sync-format.d.ts.map +1 -1
  232. package/dist/workflows/platform-sync-format.js +3 -1
  233. package/dist/workflows/platform-sync-format.js.map +1 -1
  234. package/dist/workflows/platform-sync-payload.d.ts +1 -0
  235. package/dist/workflows/platform-sync-payload.d.ts.map +1 -1
  236. package/dist/workflows/platform-sync-payload.js +160 -8
  237. package/dist/workflows/platform-sync-payload.js.map +1 -1
  238. package/dist/workflows/platform-sync.d.ts.map +1 -1
  239. package/dist/workflows/platform-sync.js +10 -1
  240. package/dist/workflows/platform-sync.js.map +1 -1
  241. package/dist/workflows/plugin-loader.d.ts.map +1 -1
  242. package/dist/workflows/plugin-loader.js +3 -0
  243. package/dist/workflows/plugin-loader.js.map +1 -1
  244. package/dist/workflows/preflight.d.ts.map +1 -1
  245. package/dist/workflows/preflight.js +9 -1
  246. package/dist/workflows/preflight.js.map +1 -1
  247. package/dist/workflows/prompt-output.d.ts +6 -2
  248. package/dist/workflows/prompt-output.d.ts.map +1 -1
  249. package/dist/workflows/prompt-output.js +8 -2
  250. package/dist/workflows/prompt-output.js.map +1 -1
  251. package/dist/workflows/run-preparation.d.ts +24 -0
  252. package/dist/workflows/run-preparation.d.ts.map +1 -0
  253. package/dist/workflows/run-preparation.js +258 -0
  254. package/dist/workflows/run-preparation.js.map +1 -0
  255. package/dist/workflows/run-types.d.ts +11 -0
  256. package/dist/workflows/run-types.d.ts.map +1 -1
  257. package/dist/workflows/runner-scheduler.d.ts +2 -0
  258. package/dist/workflows/runner-scheduler.d.ts.map +1 -1
  259. package/dist/workflows/runner-scheduler.js +35 -4
  260. package/dist/workflows/runner-scheduler.js.map +1 -1
  261. package/dist/workflows/runner-shared.d.ts.map +1 -1
  262. package/dist/workflows/runner-shared.js +9 -0
  263. package/dist/workflows/runner-shared.js.map +1 -1
  264. package/dist/workflows/runner.d.ts +2 -0
  265. package/dist/workflows/runner.d.ts.map +1 -1
  266. package/dist/workflows/runner.js +171 -6
  267. package/dist/workflows/runner.js.map +1 -1
  268. package/dist/workflows/runtime-helpers.d.ts +20 -1
  269. package/dist/workflows/runtime-helpers.d.ts.map +1 -1
  270. package/dist/workflows/runtime-helpers.js +98 -3
  271. package/dist/workflows/runtime-helpers.js.map +1 -1
  272. package/dist/workflows/session-output.d.ts +9 -0
  273. package/dist/workflows/session-output.d.ts.map +1 -1
  274. package/dist/workflows/session-output.js +156 -0
  275. package/dist/workflows/session-output.js.map +1 -1
  276. package/dist/workflows/session-policy.d.ts +30 -0
  277. package/dist/workflows/session-policy.d.ts.map +1 -0
  278. package/dist/workflows/session-policy.js +45 -0
  279. package/dist/workflows/session-policy.js.map +1 -0
  280. package/dist/workflows/structured-outputs.d.ts +5 -0
  281. package/dist/workflows/structured-outputs.d.ts.map +1 -1
  282. package/dist/workflows/structured-outputs.js +82 -3
  283. package/dist/workflows/structured-outputs.js.map +1 -1
  284. package/dist/workflows/subflow-executor.js +5 -1
  285. package/dist/workflows/subflow-executor.js.map +1 -1
  286. package/dist/workflows/types.d.ts +107 -4
  287. package/dist/workflows/types.d.ts.map +1 -1
  288. package/dist/workflows/workflow-authority-contract.d.ts +25 -0
  289. package/dist/workflows/workflow-authority-contract.d.ts.map +1 -0
  290. package/dist/workflows/workflow-authority-contract.js +366 -0
  291. package/dist/workflows/workflow-authority-contract.js.map +1 -0
  292. package/dist/workflows/workflow-executor-schema.d.ts +1 -1
  293. package/dist/workflows/workflow-production-schema.d.ts +62 -10
  294. package/dist/workflows/workflow-production-schema.d.ts.map +1 -1
  295. package/dist/workflows/workflow-production-schema.js +63 -4
  296. package/dist/workflows/workflow-production-schema.js.map +1 -1
  297. package/dist/workflows/workflow-production-types.d.ts +42 -3
  298. package/dist/workflows/workflow-production-types.d.ts.map +1 -1
  299. package/dist/workflows/workflow-schema-common.d.ts +248 -2
  300. package/dist/workflows/workflow-schema-common.d.ts.map +1 -1
  301. package/dist/workflows/workflow-schema-common.js +58 -2
  302. package/dist/workflows/workflow-schema-common.js.map +1 -1
  303. package/dist/workflows/workflow-schema.d.ts +1966 -16
  304. package/dist/workflows/workflow-schema.d.ts.map +1 -1
  305. package/dist/workflows/workflow-schema.js +97 -3
  306. package/dist/workflows/workflow-schema.js.map +1 -1
  307. package/docs/releasing.md +4 -1
  308. package/node_modules/@viewportai/context-engine/schemas/context_event_v1.schema.json +2 -0
  309. package/node_modules/@viewportai/context-engine/src/repo/candidates.js +2 -0
  310. package/node_modules/@viewportai/context-engine/src/repo/events.js +15 -1
  311. package/node_modules/@viewportai/context-engine/src/repo/vault.js +18 -2
  312. package/package.json +2 -2
@@ -0,0 +1,606 @@
1
+ import crypto from 'node:crypto';
2
+ import fs from 'node:fs/promises';
3
+ import path from 'node:path';
4
+ import { ConfigManager } from '../core/config.js';
5
+ import { Daemon } from '../core/daemon.js';
6
+ import { loadAgents } from '../startup-agents.js';
7
+ import { GitTracker } from '../tracking/git-tracker.js';
8
+ import { workflowRunToSyncPayload } from '../workflows/platform-sync-payload.js';
9
+ import { WorkflowRunStore } from '../workflows/store.js';
10
+ import { transportFetch } from './network.js';
11
+ export async function runStandaloneWorker(options) {
12
+ const profile = await loadWorkerRuntimeProfile();
13
+ const transport = options.transport ?? profile.transport;
14
+ if (transport === 'inbound') {
15
+ throw new Error('Inbound worker transport is disabled until signed inbound proof lands.');
16
+ }
17
+ if (transport === 'relay') {
18
+ throw new Error('Relay worker transport is not supported by the standalone runtime yet.');
19
+ }
20
+ let lastHeartbeatAt = Date.now();
21
+ await heartbeat(profile, {
22
+ status: 'online',
23
+ healthStatus: 'idle',
24
+ lifecycle: options.lifecycle,
25
+ transport,
26
+ });
27
+ if (options.leaseToken) {
28
+ const lease = { id: options.leaseToken, leaseToken: options.leaseToken };
29
+ await syncLease(profile, lease, { status: 'completed' });
30
+ await cleanupLease(profile, lease);
31
+ return { claimed: 1, completed: 1, blocked: 0, failed: 0, cleanup: 1, denied: 0 };
32
+ }
33
+ const result = {
34
+ claimed: 0,
35
+ completed: 0,
36
+ blocked: 0,
37
+ failed: 0,
38
+ cleanup: 0,
39
+ denied: 0,
40
+ };
41
+ try {
42
+ while (!options.abortSignal?.aborted) {
43
+ const lease = await claimLease(profile, {
44
+ lifecycle: options.lifecycle,
45
+ transport,
46
+ });
47
+ if (!lease) {
48
+ if (options.once || options.lifecycle !== 'persistent')
49
+ break;
50
+ const now = Date.now();
51
+ if (now - lastHeartbeatAt > 30_000) {
52
+ await heartbeat(profile, {
53
+ status: 'online',
54
+ healthStatus: 'idle',
55
+ lifecycle: options.lifecycle,
56
+ transport,
57
+ });
58
+ lastHeartbeatAt = now;
59
+ }
60
+ await sleepWithAbort(options.pollIntervalMs ?? 5_000, options.abortSignal);
61
+ continue;
62
+ }
63
+ result.claimed += 1;
64
+ let execution = await executeClaim(profile, lease);
65
+ if (isHostedManagedExecutorProfile(profile) &&
66
+ execution.status === 'blocked' &&
67
+ execution.run) {
68
+ await syncLease(profile, lease, execution);
69
+ execution = await resumeBlockedHostedExecution(profile, lease, execution);
70
+ if (execution.status !== 'blocked') {
71
+ await syncLease(profile, lease, execution);
72
+ }
73
+ }
74
+ else {
75
+ await syncLease(profile, lease, execution);
76
+ }
77
+ if (execution.status === 'completed') {
78
+ result.completed += 1;
79
+ }
80
+ else if (execution.status === 'blocked') {
81
+ result.blocked += 1;
82
+ }
83
+ else {
84
+ result.failed += 1;
85
+ }
86
+ await cleanupLease(profile, lease);
87
+ result.cleanup += 1;
88
+ if (options.once)
89
+ break;
90
+ }
91
+ }
92
+ finally {
93
+ await heartbeat(profile, {
94
+ status: 'offline',
95
+ healthStatus: 'offline',
96
+ lifecycle: options.lifecycle,
97
+ transport,
98
+ });
99
+ }
100
+ return result;
101
+ }
102
+ async function executeClaim(profile, lease) {
103
+ if (!isHostedManagedExecutorProfile(profile)) {
104
+ return { status: 'completed' };
105
+ }
106
+ return executeHostedWorkflowClaim(profile, lease);
107
+ }
108
+ async function loadWorkerRuntimeProfile() {
109
+ const manager = new ConfigManager();
110
+ await manager.load();
111
+ const worker = manager.getDaemonConfig()?.worker;
112
+ const missing = [];
113
+ if (!worker?.serverUrl)
114
+ missing.push('server URL');
115
+ if (!worker?.workspaceRoot)
116
+ missing.push('workspace root');
117
+ if (!worker?.publicKeyFingerprint)
118
+ missing.push('worker identity');
119
+ if (missing.length > 0) {
120
+ throw new Error(`Worker profile is not configured: missing ${missing.join(', ')}.`);
121
+ }
122
+ return {
123
+ serverUrl: worker.serverUrl,
124
+ lifecycle: worker.lifecycle ?? 'persistent',
125
+ transport: worker.transport ?? 'polling',
126
+ workspaceId: worker.workspaceId ?? process.env['VIEWPORT_WORKSPACE_ID'],
127
+ managedExecutorId: worker.managedExecutorId ?? process.env['VIEWPORT_MANAGED_EXECUTOR_ID'],
128
+ credential: worker.credential ??
129
+ process.env['VIEWPORT_MANAGED_EXECUTOR_TOKEN'] ??
130
+ process.env['VPD_MANAGED_EXECUTOR_TOKEN'],
131
+ workspaceRoot: worker.workspaceRoot,
132
+ identityKeyPath: worker.identityKeyPath,
133
+ publicKeyFingerprint: worker.publicKeyFingerprint,
134
+ capabilities: worker.capabilities ?? {},
135
+ };
136
+ }
137
+ async function claimLease(profile, body) {
138
+ const response = isHostedManagedExecutorProfile(profile)
139
+ ? await hostedManagedExecutorFetch(profile, 'POST', 'claim', {
140
+ credential: profile.credential,
141
+ lease_seconds: 300,
142
+ })
143
+ : await workerFetch(profile, 'workers/claim', body);
144
+ if (response.status === 204)
145
+ return null;
146
+ const parsed = (await response.json());
147
+ const data = parsed['data'] && typeof parsed['data'] === 'object'
148
+ ? parsed['data']
149
+ : parsed;
150
+ const rawLease = data['run_lease'] && typeof data['run_lease'] === 'object'
151
+ ? data['run_lease']
152
+ : data['lease'] && typeof data['lease'] === 'object'
153
+ ? data['lease']
154
+ : data;
155
+ const id = stringValue(rawLease['id'] ?? rawLease['lease_id']);
156
+ if (!id) {
157
+ throw new Error('Worker claim response did not include a lease id.');
158
+ }
159
+ return {
160
+ id,
161
+ runId: stringValue(data['id'] ?? rawLease['workflow_run_id'] ?? rawLease['run_id'] ?? rawLease['runId']),
162
+ runtimeRunId: stringValue(data['runtime_run_id'] ?? rawLease['runtime_run_id']),
163
+ leaseToken: stringValue(rawLease['lease_token'] ?? rawLease['leaseToken']),
164
+ assignmentClaimToken: stringValue(data['assignment_claim_token']),
165
+ yamlSnapshot: stringValue(data['yaml_snapshot'] ?? rawLease['yaml_snapshot']),
166
+ sourceRef: stringValue(data['source_ref'] ?? rawLease['source_ref']),
167
+ directoryPath: stringValue(data['directory_path'] ?? rawLease['directory_path']),
168
+ inputSnapshot: recordValue(data['input_snapshot'] ?? rawLease['input_snapshot']),
169
+ resourceManifest: recordValue(data['resource_manifest'] ?? rawLease['resource_manifest']),
170
+ workflowAuthorityContract: recordValue(data['workflow_authority_contract'] ?? rawLease['workflow_authority_contract']),
171
+ runtimeTargetId: stringValue(data['runtime_target_id'] ?? rawLease['runtime_target_id']),
172
+ dataCapturePolicy: dataCapturePolicyValue(data['data_capture_policy'] ?? rawLease['data_capture_policy']),
173
+ };
174
+ }
175
+ async function heartbeat(profile, options) {
176
+ const capabilityPayload = managedExecutorCapabilities(profile.capabilities);
177
+ if (isHostedManagedExecutorProfile(profile)) {
178
+ await hostedManagedExecutorFetch(profile, 'POST', 'heartbeat', {
179
+ credential: profile.credential,
180
+ status: options.status,
181
+ health_status: options.healthStatus,
182
+ access_mode: options.transport,
183
+ runner_mode: options.lifecycle === 'ephemeral' ? 'viewport_managed' : 'self_hosted',
184
+ runner_provider: options.lifecycle === 'ephemeral' ? 'viewport_cloud' : 'local',
185
+ context_execution_mode: options.lifecycle === 'ephemeral' ? 'viewport_managed' : 'customer_managed_context_worker',
186
+ credential_mode: options.lifecycle === 'ephemeral' ? 'run_scoped_grant' : 'runner_local',
187
+ runner_posture: {
188
+ transport: { mode: options.transport },
189
+ execution: {
190
+ kind: options.lifecycle === 'ephemeral' ? 'ephemeral-worker' : 'persistent-worker',
191
+ },
192
+ },
193
+ capabilities: capabilityPayload,
194
+ });
195
+ return;
196
+ }
197
+ await workerRequest(profile, 'workers/heartbeat', {
198
+ status: options.status,
199
+ health_status: options.healthStatus,
200
+ lifecycle: options.lifecycle,
201
+ transport: options.transport,
202
+ workspace_root: profile.workspaceRoot,
203
+ public_key_fingerprint: profile.publicKeyFingerprint,
204
+ capabilities: profile.capabilities,
205
+ });
206
+ }
207
+ async function syncLease(profile, lease, execution) {
208
+ const status = execution.status;
209
+ if (isHostedManagedExecutorProfile(profile)) {
210
+ if (!lease.runId) {
211
+ throw new Error('Hosted managed executor sync requires a workflow run id.');
212
+ }
213
+ const runPayload = execution.run
214
+ ? workflowRunToSyncPayload(execution.run, {
215
+ enforceDataCapturePolicy: true,
216
+ includeApprovalDecisions: false,
217
+ })
218
+ : undefined;
219
+ const failure = execution.failure ?? hostedWorkerExecutionUnavailableFailure();
220
+ await hostedManagedExecutorFetch(profile, 'PATCH', `workflow-runs/${encodeURIComponent(lease.runId)}/sync`, {
221
+ ...(runPayload ?? {}),
222
+ credential: profile.credential,
223
+ runtime_run_id: typeof runPayload?.['runtime_run_id'] === 'string'
224
+ ? runPayload['runtime_run_id']
225
+ : `vpd-worker-${lease.runId}`,
226
+ status,
227
+ completed_at: status === 'blocked'
228
+ ? null
229
+ : typeof runPayload?.['completed_at'] === 'string'
230
+ ? runPayload['completed_at']
231
+ : new Date().toISOString(),
232
+ ...(status === 'failed'
233
+ ? {
234
+ error_summary: failure.summary,
235
+ failure: {
236
+ schema: 'viewport.workflow_failure/v1',
237
+ error_code: failure.errorCode,
238
+ failure_class: failure.failureClass,
239
+ summary: failure.summary,
240
+ next_check: failure.nextCheck,
241
+ retry_safe: failure.retrySafe,
242
+ lease_released: true,
243
+ details: {
244
+ worker_runtime: 'standalone',
245
+ hosted_managed_executor: true,
246
+ },
247
+ },
248
+ }
249
+ : {}),
250
+ events: [
251
+ ...(Array.isArray(runPayload?.['events'])
252
+ ? runPayload['events']
253
+ : []),
254
+ {
255
+ runtime_event_id: `vpd-worker-${lease.runId}-${status}`,
256
+ type: status === 'completed' ? 'run-completed' : 'run-failed',
257
+ severity: status === 'completed' ? 'info' : 'error',
258
+ message: `vpd worker marked run ${status}`,
259
+ },
260
+ ],
261
+ }, lease.assignmentClaimToken);
262
+ return;
263
+ }
264
+ await workerRequest(profile, `workers/leases/${encodeURIComponent(lease.id)}/sync`, {
265
+ lease_id: lease.id,
266
+ run_id: lease.runId ?? null,
267
+ status,
268
+ event_type: 'phase8_fixture',
269
+ runtime_event_id: `phase8-${lease.id}-${status}`,
270
+ });
271
+ }
272
+ async function executeHostedWorkflowClaim(profile, lease) {
273
+ if (!lease.yamlSnapshot) {
274
+ return {
275
+ status: 'failed',
276
+ failure: hostedWorkerExecutionUnavailableFailure(),
277
+ };
278
+ }
279
+ try {
280
+ const daemon = await createStandaloneWorkerDaemon();
281
+ const existing = await existingHostedRuntimeRun(lease);
282
+ if (existing) {
283
+ return {
284
+ status: normalizeWorkflowStatus(existing.status),
285
+ run: existing,
286
+ daemon,
287
+ ...(existing.status === 'failed' || existing.status === 'canceled'
288
+ ? { failure: workflowRunFailure(existing) }
289
+ : {}),
290
+ };
291
+ }
292
+ const directoryPath = path.resolve(lease.directoryPath ?? profile.workspaceRoot);
293
+ await fs.mkdir(directoryPath, { recursive: true });
294
+ const directory = await daemon.directoryManager.register(directoryPath);
295
+ const run = await daemon.workflowRunner.startRun({
296
+ workflowYaml: lease.yamlSnapshot,
297
+ workflowSourceRef: lease.sourceRef ?? `viewport://managed-executor/${lease.runId ?? lease.id}`,
298
+ directoryId: directory.id,
299
+ inputs: lease.inputSnapshot,
300
+ resourceId: profile.workspaceId,
301
+ runtimeTargetId: lease.runtimeTargetId ?? profile.managedExecutorId,
302
+ platformRunId: lease.runId,
303
+ resourceManifest: lease.resourceManifest,
304
+ workflowAuthorityContract: lease.workflowAuthorityContract,
305
+ dataCapturePolicy: lease.dataCapturePolicy,
306
+ initiation: 'cli',
307
+ });
308
+ const completed = await waitForWorkflowRun(daemon, run.id);
309
+ return {
310
+ status: normalizeWorkflowStatus(completed.status),
311
+ run: completed,
312
+ daemon,
313
+ ...(completed.status === 'failed' || completed.status === 'canceled'
314
+ ? { failure: workflowRunFailure(completed) }
315
+ : {}),
316
+ };
317
+ }
318
+ catch (error) {
319
+ return {
320
+ status: 'failed',
321
+ failure: {
322
+ errorCode: 'RUNNER_WORKFLOW_EXECUTION_FAILED',
323
+ failureClass: 'internal_error',
324
+ summary: error instanceof Error ? error.message : 'Standalone worker execution failed.',
325
+ nextCheck: 'Inspect worker logs and workflow execution receipts.',
326
+ retrySafe: false,
327
+ },
328
+ };
329
+ }
330
+ }
331
+ async function existingHostedRuntimeRun(lease) {
332
+ if (!lease.runtimeRunId)
333
+ return null;
334
+ const existing = await new WorkflowRunStore().get(lease.runtimeRunId);
335
+ if (!existing)
336
+ return null;
337
+ if (lease.runId && existing.platformRunId !== lease.runId)
338
+ return null;
339
+ return existing;
340
+ }
341
+ async function resumeBlockedHostedExecution(profile, lease, execution) {
342
+ if (!execution.daemon || !execution.run || execution.status !== 'blocked') {
343
+ return execution;
344
+ }
345
+ const daemon = execution.daemon;
346
+ const workflowRunId = execution.run.id;
347
+ const deadline = Date.now() + 10 * 60_000;
348
+ while (Date.now() < deadline) {
349
+ const body = await fetchHostedAssignment(profile, lease);
350
+ const applied = await daemon.workflowRunner.applyRuntimeCommandBody(workflowRunId, body);
351
+ if (applied > 0) {
352
+ const completed = await waitForWorkflowRun(daemon, workflowRunId);
353
+ if (completed.status === 'blocked') {
354
+ const blockedExecution = {
355
+ status: 'blocked',
356
+ run: completed,
357
+ daemon,
358
+ };
359
+ await syncLease(profile, lease, blockedExecution);
360
+ execution = blockedExecution;
361
+ continue;
362
+ }
363
+ return {
364
+ status: normalizeWorkflowStatus(completed.status),
365
+ run: completed,
366
+ daemon,
367
+ ...(completed.status === 'failed' || completed.status === 'canceled'
368
+ ? { failure: workflowRunFailure(completed) }
369
+ : {}),
370
+ };
371
+ }
372
+ await sleep(2_000);
373
+ }
374
+ return execution;
375
+ }
376
+ async function fetchHostedAssignment(profile, lease) {
377
+ if (!lease.runId) {
378
+ throw new Error('Hosted managed executor assignment polling requires a workflow run id.');
379
+ }
380
+ const response = await hostedManagedExecutorFetch(profile, 'GET', `workflow-runs/${encodeURIComponent(lease.runId)}`, {}, lease.assignmentClaimToken, [429]);
381
+ if (response.status === 429) {
382
+ await sleep(retryAfterMs(response));
383
+ return { runtime_commands: [] };
384
+ }
385
+ return response.json();
386
+ }
387
+ async function createStandaloneWorkerDaemon() {
388
+ const daemon = new Daemon();
389
+ await daemon.initialize();
390
+ const registry = await loadAgents(daemon);
391
+ daemon.setModelProvider(() => registry.fetchAllModels());
392
+ daemon.setTrackerFactory((trackerConfig, sessionId) => new GitTracker(trackerConfig, sessionId));
393
+ return daemon;
394
+ }
395
+ async function waitForWorkflowRun(daemon, runId) {
396
+ const deadline = Date.now() + 10 * 60_000;
397
+ let last = null;
398
+ const store = new WorkflowRunStore();
399
+ while (Date.now() < deadline) {
400
+ last = (await store.get(runId)) ?? (await daemon.workflowRunner.getRun(runId));
401
+ if (last && ['completed', 'failed', 'blocked', 'canceled'].includes(last.status)) {
402
+ return last;
403
+ }
404
+ await new Promise((resolve) => setTimeout(resolve, 100));
405
+ }
406
+ throw new Error(`Workflow run ${runId} did not reach a terminal or blocked state.`);
407
+ }
408
+ function normalizeWorkflowStatus(status) {
409
+ return ['completed', 'failed', 'blocked', 'canceled'].includes(status)
410
+ ? status
411
+ : 'failed';
412
+ }
413
+ function hostedWorkerExecutionUnavailableFailure() {
414
+ return {
415
+ errorCode: 'RUNNER_EXECUTION_ENGINE_UNAVAILABLE',
416
+ failureClass: 'internal_error',
417
+ summary: 'Standalone hosted worker claimed the run but no workflow execution engine is wired yet.',
418
+ nextCheck: 'Wire the in-process workflow executor before enabling hosted worker completion.',
419
+ retrySafe: false,
420
+ };
421
+ }
422
+ function workflowRunFailure(run) {
423
+ return {
424
+ errorCode: run.status === 'canceled' ? 'RUNNER_WORKFLOW_CANCELED' : 'RUNNER_WORKFLOW_FAILED',
425
+ failureClass: run.status === 'canceled' ? 'canceled' : 'workflow_error',
426
+ summary: run.error ?? `Workflow run ended with status ${run.status}.`,
427
+ nextCheck: 'Inspect workflow node receipts and worker logs.',
428
+ retrySafe: false,
429
+ };
430
+ }
431
+ async function cleanupLease(profile, lease) {
432
+ if (isHostedManagedExecutorProfile(profile)) {
433
+ return;
434
+ }
435
+ await workerRequest(profile, `workers/leases/${encodeURIComponent(lease.id)}/cleanup`, {
436
+ lease_id: lease.id,
437
+ run_id: lease.runId ?? null,
438
+ status: 'cleanup_completed',
439
+ runtime_event_id: `phase8-${lease.id}-cleanup`,
440
+ });
441
+ }
442
+ async function workerRequest(profile, path, body) {
443
+ await workerFetch(profile, path, body);
444
+ }
445
+ async function workerFetch(profile, path, body) {
446
+ const requestPath = `/api/runtime/${path}`;
447
+ const serialized = JSON.stringify(body);
448
+ const signed = await signWorkerRequest(profile, 'POST', requestPath, serialized);
449
+ const response = await transportFetch(`${profile.serverUrl.replace(/\/+$/, '')}${requestPath}`, {
450
+ method: 'POST',
451
+ headers: {
452
+ 'Content-Type': 'application/json',
453
+ 'X-Viewport-Worker-Fingerprint': profile.publicKeyFingerprint,
454
+ 'X-Viewport-Worker-Timestamp': signed.timestamp,
455
+ 'X-Viewport-Worker-Nonce': signed.nonce,
456
+ 'X-Viewport-Worker-Body-SHA256': signed.bodySha256,
457
+ 'X-Viewport-Worker-Signature': signed.signature,
458
+ },
459
+ body: serialized,
460
+ });
461
+ if (!response.ok) {
462
+ const text = await response.text().catch(() => '');
463
+ throw new Error(`Worker runtime request ${path} failed with HTTP ${response.status}: ${text}`);
464
+ }
465
+ return response;
466
+ }
467
+ function isHostedManagedExecutorProfile(profile) {
468
+ return Boolean(profile.workspaceId && profile.managedExecutorId && profile.credential);
469
+ }
470
+ function managedExecutorCapabilities(capabilities) {
471
+ const agents = capabilities['agents'];
472
+ if (!Array.isArray(agents))
473
+ return capabilities;
474
+ return {
475
+ ...capabilities,
476
+ agents: Object.fromEntries(agents
477
+ .filter((agent) => typeof agent === 'object' && agent !== null && !Array.isArray(agent))
478
+ .map((agent) => {
479
+ const record = agent;
480
+ const id = stringValue(record['id']);
481
+ return id ? [id, record] : null;
482
+ })
483
+ .filter((entry) => entry !== null)),
484
+ };
485
+ }
486
+ async function hostedManagedExecutorFetch(profile, method, path, body, assignmentClaimToken, allowedStatuses = []) {
487
+ if (!profile.workspaceId || !profile.managedExecutorId || !profile.credential) {
488
+ throw new Error('Hosted managed executor profile is missing workspace, executor, or credential.');
489
+ }
490
+ const requestPath = `/api/runtime/workspaces/${encodeURIComponent(profile.workspaceId)}/managed-executors/${encodeURIComponent(profile.managedExecutorId)}/${path}`;
491
+ const serialized = method === 'GET' ? '' : JSON.stringify(body);
492
+ const url = `${profile.serverUrl.replace(/\/+$/, '')}${requestPath}`;
493
+ let lastResponse = null;
494
+ const maxAttempts = hostedManagedExecutorMaxAttempts();
495
+ for (let attempt = 1; attempt <= maxAttempts; attempt += 1) {
496
+ const signed = await signWorkerRequest(profile, method, requestPath, serialized);
497
+ const response = await transportFetch(url, {
498
+ method,
499
+ headers: {
500
+ Authorization: `Bearer ${profile.credential}`,
501
+ Accept: 'application/json',
502
+ 'Content-Type': 'application/json',
503
+ ...(assignmentClaimToken ? { 'X-Viewport-Assignment-Claim': assignmentClaimToken } : {}),
504
+ 'X-Viewport-Worker-Fingerprint': profile.publicKeyFingerprint,
505
+ 'X-Viewport-Worker-Timestamp': signed.timestamp,
506
+ 'X-Viewport-Worker-Nonce': signed.nonce,
507
+ 'X-Viewport-Worker-Body-SHA256': signed.bodySha256,
508
+ 'X-Viewport-Worker-Signature': signed.signature,
509
+ },
510
+ ...(method === 'GET' ? {} : { body: serialized }),
511
+ });
512
+ if (response.ok || allowedStatuses.includes(response.status)) {
513
+ return response;
514
+ }
515
+ lastResponse = response;
516
+ if (!isHostedManagedExecutorTransientStatus(response.status) || attempt === maxAttempts) {
517
+ break;
518
+ }
519
+ await response.text().catch(() => '');
520
+ await sleep(hostedManagedExecutorRetryDelayMs(response, attempt));
521
+ }
522
+ const response = lastResponse;
523
+ if (!response) {
524
+ throw new Error(`Hosted managed executor request ${path} failed before dispatch.`);
525
+ }
526
+ if (!response.ok) {
527
+ const text = await response.text().catch(() => '');
528
+ throw new Error(`Hosted managed executor request ${path} failed with HTTP ${response.status}: ${text}`);
529
+ }
530
+ return response;
531
+ }
532
+ function hostedManagedExecutorMaxAttempts() {
533
+ return 4;
534
+ }
535
+ function isHostedManagedExecutorTransientStatus(status) {
536
+ return status === 429 || status === 500 || status === 502 || status === 503 || status === 504;
537
+ }
538
+ function hostedManagedExecutorRetryDelayMs(response, attempt) {
539
+ if (response.status === 429) {
540
+ return retryAfterMs(response);
541
+ }
542
+ return Math.min(500 * 2 ** (attempt - 1), 5_000);
543
+ }
544
+ function retryAfterMs(response) {
545
+ const raw = response.headers.get('retry-after');
546
+ const seconds = raw ? Number.parseInt(raw, 10) : NaN;
547
+ if (Number.isFinite(seconds) && seconds > 0) {
548
+ return Math.min(seconds * 1_000, 30_000);
549
+ }
550
+ return 5_000;
551
+ }
552
+ function sleep(ms) {
553
+ return new Promise((resolve) => setTimeout(resolve, ms));
554
+ }
555
+ function sleepWithAbort(ms, signal) {
556
+ if (!signal)
557
+ return sleep(ms);
558
+ if (signal.aborted)
559
+ return Promise.resolve();
560
+ return new Promise((resolve) => {
561
+ const timeout = setTimeout(done, ms);
562
+ signal.addEventListener('abort', done, { once: true });
563
+ function done() {
564
+ clearTimeout(timeout);
565
+ signal?.removeEventListener('abort', done);
566
+ resolve();
567
+ }
568
+ });
569
+ }
570
+ function stringValue(value) {
571
+ return typeof value === 'string' && value.trim() !== '' ? value : undefined;
572
+ }
573
+ function recordValue(value) {
574
+ if (!value || typeof value !== 'object' || Array.isArray(value))
575
+ return undefined;
576
+ return value;
577
+ }
578
+ function dataCapturePolicyValue(value) {
579
+ const record = recordValue(value);
580
+ if (!record)
581
+ return undefined;
582
+ const transcripts = record['transcripts'];
583
+ const logs = record['logs'];
584
+ const artifacts = record['artifacts'];
585
+ if ((transcripts === 'none' || transcripts === 'excerpt') &&
586
+ (logs === 'metadata' || logs === 'content') &&
587
+ (artifacts === 'metadata' || artifacts === 'local_reference')) {
588
+ return { transcripts, logs, artifacts };
589
+ }
590
+ return undefined;
591
+ }
592
+ async function signWorkerRequest(profile, method, requestPath, body) {
593
+ const identity = JSON.parse(await fs.readFile(profile.identityKeyPath, 'utf8'));
594
+ if (identity.publicKeyFingerprint !== profile.publicKeyFingerprint) {
595
+ throw new Error('Worker identity fingerprint does not match worker profile.');
596
+ }
597
+ const timestamp = new Date().toISOString();
598
+ const nonce = crypto.randomBytes(16).toString('hex');
599
+ const bodySha256 = crypto.createHash('sha256').update(body).digest('hex');
600
+ const canonical = [method.toUpperCase(), requestPath, bodySha256, nonce, timestamp].join('\n');
601
+ const signature = crypto
602
+ .sign(null, Buffer.from(canonical), identity.privateKey)
603
+ .toString('base64');
604
+ return { timestamp, nonce, bodySha256, signature };
605
+ }
606
+ //# sourceMappingURL=worker-runtime.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"worker-runtime.js","sourceRoot":"","sources":["../../src/cli/worker-runtime.ts"],"names":[],"mappings":"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"}
@@ -1,12 +1,13 @@
1
1
  import type { ManagedAssignment, ManagedWorkerCapabilities } from './workflow-managed-worker-types.js';
2
- import type { WorkflowRunRecord } from '../workflows/types.js';
2
+ import type { WorkflowApprovalActor, WorkflowRunRecord } from '../workflows/types.js';
3
3
  export { workflowRunToSyncPayload as localRunToSyncPayload } from '../workflows/platform-sync-payload.js';
4
- export declare function capabilityPayload(capabilities: ManagedWorkerCapabilities): Record<string, string[]>;
4
+ export declare function capabilityPayload(capabilities: ManagedWorkerCapabilities): Record<string, unknown>;
5
5
  export declare function dataFrom(body: unknown): unknown;
6
6
  export declare function readRun(body: unknown): WorkflowRunRecord;
7
7
  export declare function approvalMessage(node: NonNullable<ManagedAssignment['nodes']>[number]): string;
8
- export declare function approvalActor(node: NonNullable<ManagedAssignment['nodes']>[number]): Record<string, string>;
8
+ export declare function approvalActor(node: NonNullable<ManagedAssignment['nodes']>[number]): WorkflowApprovalActor;
9
9
  export declare function approvalExpectedActionDigest(node: NonNullable<ManagedAssignment['nodes']>[number]): string | undefined;
10
10
  export declare function approvalExecutionGrant(node: NonNullable<ManagedAssignment['nodes']>[number]): Record<string, string> | undefined;
11
+ export declare function approvalFeedback(node: NonNullable<ManagedAssignment['nodes']>[number]): Record<string, unknown> | undefined;
11
12
  export declare function progressSyncEveryMs(leaseSeconds: number): number;
12
13
  //# sourceMappingURL=workflow-managed-worker-format.d.ts.map