@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
@@ -1,6 +1,7 @@
1
1
  import { spawn } from 'node:child_process';
2
2
  import path from 'node:path';
3
- import { buildExpressionContext, renderTemplateString, WorkflowExpressionError, } from './expression.js';
3
+ import { buildExpressionContext, evaluateExpression, renderTemplateString, WorkflowExpressionError, } from './expression.js';
4
+ import { cleanChildProcessEnv } from '../security/child-env.js';
4
5
  const MAX_OUTPUT_CHARS = 32_000;
5
6
  const MAX_LOG_CHUNK_CHARS = 4_000;
6
7
  export class ShellNodeError extends Error {
@@ -75,6 +76,44 @@ export async function renderTemplate(template, run, extras) {
75
76
  throw error;
76
77
  }
77
78
  }
79
+ /**
80
+ * Render shell command templates without letting workflow inputs/outputs become
81
+ * raw shell syntax. Unquoted placeholder values are shell-quoted argv fragments.
82
+ * Placeholders inside double quotes are escaped for that shell context so
83
+ * substitutions such as $() and backticks remain literal text.
84
+ */
85
+ export async function renderShellCommandTemplate(template, run, extras) {
86
+ const rewritten = applyLegacyTemplateAliases(template);
87
+ const context = { ...buildArtifactAwareContext(run), ...(extras ?? {}) };
88
+ const placeholderPattern = /\{\{\s*([\s\S]+?)\s*\}\}/g;
89
+ const matches = [];
90
+ let match;
91
+ while ((match = placeholderPattern.exec(rewritten)) !== null) {
92
+ matches.push({
93
+ index: match.index,
94
+ length: match[0].length,
95
+ expression: match[1] ?? '',
96
+ insideDoubleQuotes: isInsideDoubleQuotedShellSpan(rewritten, match.index),
97
+ });
98
+ }
99
+ if (matches.length === 0)
100
+ return rewritten;
101
+ const resolved = await Promise.all(matches.map((entry) => evaluateExpression(entry.expression, context).catch((error) => {
102
+ if (error instanceof WorkflowExpressionError)
103
+ throw error;
104
+ throw new WorkflowExpressionError(error instanceof Error ? error.message : String(error), entry.expression, error);
105
+ })));
106
+ let result = '';
107
+ let cursor = 0;
108
+ matches.forEach((entry, idx) => {
109
+ result += rewritten.slice(cursor, entry.index);
110
+ const rendered = stringifyShellTemplateValue(resolved[idx]);
111
+ result += entry.insideDoubleQuotes ? shellDoubleQuoteEscape(rendered) : shellQuote(rendered);
112
+ cursor = entry.index + entry.length;
113
+ });
114
+ result += rewritten.slice(cursor);
115
+ return result;
116
+ }
78
117
  const LEGACY_OUTPUTS_PATTERN = /\{\{\s*outputs\.([A-Za-z0-9._/-]+)\s*\}\}/g;
79
118
  const LEGACY_ARTIFACTS_PATTERN = /\{\{\s*artifacts\.([A-Za-z0-9._/-]+)\.([A-Za-z0-9._/-]+)\s*\}\}/g;
80
119
  function applyLegacyTemplateAliases(template) {
@@ -82,6 +121,52 @@ function applyLegacyTemplateAliases(template) {
82
121
  .replace(LEGACY_OUTPUTS_PATTERN, (_match, nodeId) => `{{ nodes.${nodeId}.output }}`)
83
122
  .replace(LEGACY_ARTIFACTS_PATTERN, (_match, nodeId, name) => `{{ artifacts[nodeId='${nodeId}' and name='${name}'].path }}`);
84
123
  }
124
+ function isInsideDoubleQuotedShellSpan(value, offset) {
125
+ let inSingle = false;
126
+ let inDouble = false;
127
+ let escaped = false;
128
+ for (let idx = 0; idx < offset; idx += 1) {
129
+ const char = value[idx];
130
+ if (escaped) {
131
+ escaped = false;
132
+ continue;
133
+ }
134
+ if (char === '\\') {
135
+ escaped = true;
136
+ continue;
137
+ }
138
+ if (char === "'" && !inDouble) {
139
+ inSingle = !inSingle;
140
+ continue;
141
+ }
142
+ if (char === '"' && !inSingle) {
143
+ inDouble = !inDouble;
144
+ }
145
+ }
146
+ return inDouble;
147
+ }
148
+ function shellQuote(value) {
149
+ if (value.length === 0)
150
+ return "''";
151
+ return `'${value.replace(/'/g, `'\\''`)}'`;
152
+ }
153
+ function shellDoubleQuoteEscape(value) {
154
+ return value.replace(/["\\$`]/g, (char) => `\\${char}`);
155
+ }
156
+ function stringifyShellTemplateValue(value) {
157
+ if (value === undefined || value === null)
158
+ return '';
159
+ if (typeof value === 'string')
160
+ return value;
161
+ if (typeof value === 'number' || typeof value === 'boolean')
162
+ return String(value);
163
+ try {
164
+ return JSON.stringify(value);
165
+ }
166
+ catch {
167
+ return String(value);
168
+ }
169
+ }
85
170
  function buildArtifactAwareContext(run) {
86
171
  const base = buildExpressionContext(run);
87
172
  return {
@@ -95,10 +180,20 @@ function buildArtifactAwareContext(run) {
95
180
  };
96
181
  }
97
182
  export async function runShellNode(command, options) {
183
+ return await runProcessNode('sh', ['-lc', command], options);
184
+ }
185
+ export async function runArgvNode(argv, options) {
186
+ const [file, ...args] = argv;
187
+ if (!file || file.trim() === '') {
188
+ throw new ShellNodeError('Structured argv command is empty', '', null);
189
+ }
190
+ return await runProcessNode(file, args, options);
191
+ }
192
+ async function runProcessNode(file, args, options) {
98
193
  return await new Promise((resolve, reject) => {
99
- const child = spawn('sh', ['-lc', command], {
194
+ const child = spawn(file, args, {
100
195
  cwd: options.cwd,
101
- env: options.env ? { ...process.env, ...options.env } : process.env,
196
+ env: cleanChildProcessEnv(options.env),
102
197
  stdio: ['ignore', 'pipe', 'pipe'],
103
198
  detached: process.platform !== 'win32',
104
199
  });
@@ -1 +1 @@
1
- {"version":3,"file":"runtime-helpers.js","sourceRoot":"","sources":["../../src/workflows/runtime-helpers.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"runtime-helpers.js","sourceRoot":"","sources":["../../src/workflows/runtime-helpers.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,5 @@
1
1
  import type { SessionMessage } from '../core/types.js';
2
+ import type { AgentAdapterDescriptor, AgentRunResult } from '../core/interfaces.js';
2
3
  import { type RichSessionMessage } from '../discovery/jsonl-reader.js';
3
4
  export interface TranscriptExcerptMessage {
4
5
  role: 'user' | 'assistant';
@@ -7,6 +8,14 @@ export interface TranscriptExcerptMessage {
7
8
  export interface SessionOutputCollector {
8
9
  push(message: SessionMessage): void;
9
10
  text(): string;
11
+ agentRunResult(options: {
12
+ agent: AgentAdapterDescriptor;
13
+ model?: string;
14
+ executionMode?: 'plan' | 'read_only' | 'implement' | 'review';
15
+ startedAt: number;
16
+ completedAt: number;
17
+ reason: string;
18
+ }): AgentRunResult;
10
19
  }
11
20
  export declare function createSessionOutputCollector(): SessionOutputCollector;
12
21
  export declare function outputFromRichMessages(messages: RichSessionMessage[]): string;
@@ -1 +1 @@
1
- {"version":3,"file":"session-output.d.ts","sourceRoot":"","sources":["../../src/workflows/session-output.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AACvD,OAAO,EAEL,KAAK,kBAAkB,EACxB,MAAM,8BAA8B,CAAC;AAItC,MAAM,WAAW,wBAAwB;IACvC,IAAI,EAAE,MAAM,GAAG,WAAW,CAAC;IAC3B,IAAI,EAAE,MAAM,CAAC;CACd;AAED,MAAM,WAAW,sBAAsB;IACrC,IAAI,CAAC,OAAO,EAAE,cAAc,GAAG,IAAI,CAAC;IACpC,IAAI,IAAI,MAAM,CAAC;CAChB;AAED,wBAAgB,4BAA4B,IAAI,sBAAsB,CAsBrE;AAED,wBAAgB,sBAAsB,CAAC,QAAQ,EAAE,kBAAkB,EAAE,GAAG,MAAM,CAQ7E;AAED,wBAAgB,iCAAiC,CAC/C,QAAQ,EAAE,kBAAkB,EAAE,EAC9B,OAAO,GAAE;IAAE,WAAW,CAAC,EAAE,MAAM,CAAC;IAAC,kBAAkB,CAAC,EAAE,MAAM,CAAA;CAAO,GAClE,wBAAwB,EAAE,CAgB5B;AAED,wBAAgB,0BAA0B,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,CAEpE;AAED,wBAAgB,qCAAqC,CACnD,SAAS,EAAE,MAAM,GAChB,wBAAwB,EAAE,CAE5B;AAED,wBAAsB,8BAA8B,CAClD,YAAY,EAAE,MAAM,EACpB,UAAU,GAAE,MAAM,EAAO,GACxB,OAAO,CAAC,MAAM,CAAC,CAKjB;AAED,wBAAsB,yCAAyC,CAC7D,YAAY,EAAE,MAAM,EACpB,UAAU,GAAE,MAAM,EAAO,GACxB,OAAO,CAAC,wBAAwB,EAAE,CAAC,CAKrC"}
1
+ {"version":3,"file":"session-output.d.ts","sourceRoot":"","sources":["../../src/workflows/session-output.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AACvD,OAAO,KAAK,EACV,sBAAsB,EACtB,cAAc,EAIf,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EAEL,KAAK,kBAAkB,EACxB,MAAM,8BAA8B,CAAC;AAItC,MAAM,WAAW,wBAAwB;IACvC,IAAI,EAAE,MAAM,GAAG,WAAW,CAAC;IAC3B,IAAI,EAAE,MAAM,CAAC;CACd;AAED,MAAM,WAAW,sBAAsB;IACrC,IAAI,CAAC,OAAO,EAAE,cAAc,GAAG,IAAI,CAAC;IACpC,IAAI,IAAI,MAAM,CAAC;IACf,cAAc,CAAC,OAAO,EAAE;QACtB,KAAK,EAAE,sBAAsB,CAAC;QAC9B,KAAK,CAAC,EAAE,MAAM,CAAC;QACf,aAAa,CAAC,EAAE,MAAM,GAAG,WAAW,GAAG,WAAW,GAAG,QAAQ,CAAC;QAC9D,SAAS,EAAE,MAAM,CAAC;QAClB,WAAW,EAAE,MAAM,CAAC;QACpB,MAAM,EAAE,MAAM,CAAC;KAChB,GAAG,cAAc,CAAC;CACpB;AAED,wBAAgB,4BAA4B,IAAI,sBAAsB,CAyIrE;AA4CD,wBAAgB,sBAAsB,CAAC,QAAQ,EAAE,kBAAkB,EAAE,GAAG,MAAM,CAQ7E;AAED,wBAAgB,iCAAiC,CAC/C,QAAQ,EAAE,kBAAkB,EAAE,EAC9B,OAAO,GAAE;IAAE,WAAW,CAAC,EAAE,MAAM,CAAC;IAAC,kBAAkB,CAAC,EAAE,MAAM,CAAA;CAAO,GAClE,wBAAwB,EAAE,CAgB5B;AAED,wBAAgB,0BAA0B,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,CAEpE;AAED,wBAAgB,qCAAqC,CACnD,SAAS,EAAE,MAAM,GAChB,wBAAwB,EAAE,CAE5B;AAED,wBAAsB,8BAA8B,CAClD,YAAY,EAAE,MAAM,EACpB,UAAU,GAAE,MAAM,EAAO,GACxB,OAAO,CAAC,MAAM,CAAC,CAKjB;AAED,wBAAsB,yCAAyC,CAC7D,YAAY,EAAE,MAAM,EACpB,UAAU,GAAE,MAAM,EAAO,GACxB,OAAO,CAAC,wBAAwB,EAAE,CAAC,CAKrC"}
@@ -1,9 +1,16 @@
1
+ import { createHash } from 'node:crypto';
1
2
  import { readRichSessionMessagesFromFile, } from '../discovery/jsonl-reader.js';
2
3
  import { readPersistedSessionMessagesRich } from '../server/ring-buffer.js';
3
4
  import { CodexDiscovery } from '../discovery/codex.js';
4
5
  export function createSessionOutputCollector() {
5
6
  const finalMessages = new Map();
6
7
  const chunkMessages = new Map();
8
+ const toolCalls = new Map();
9
+ const usage = {
10
+ available: false,
11
+ reason: 'stream_missing_final_usage',
12
+ };
13
+ const permissionDenials = [];
7
14
  return {
8
15
  push(message) {
9
16
  if (message.type === 'agent_message') {
@@ -14,6 +21,79 @@ export function createSessionOutputCollector() {
14
21
  chunks.push(message.text);
15
22
  chunkMessages.set(message.messageId, chunks);
16
23
  }
24
+ else if (message.type === 'token_usage') {
25
+ usage.available = true;
26
+ delete usage.reason;
27
+ usage.inputTokens = (usage.inputTokens ?? 0) + message.inputTokens;
28
+ usage.inputTokenScope =
29
+ usage.inputTokenScope === 'raw_provider' || message.inputTokenScope === 'raw_provider'
30
+ ? 'raw_provider'
31
+ : 'billable';
32
+ usage.outputTokens = (usage.outputTokens ?? 0) + message.outputTokens;
33
+ usage.totalTokens = (usage.inputTokens ?? 0) + (usage.outputTokens ?? 0);
34
+ if (typeof message.cacheReadInputTokens === 'number') {
35
+ usage.cacheReadInputTokens =
36
+ (usage.cacheReadInputTokens ?? 0) + message.cacheReadInputTokens;
37
+ }
38
+ if (typeof message.cacheCreationInputTokens === 'number') {
39
+ usage.cacheCreationInputTokens =
40
+ (usage.cacheCreationInputTokens ?? 0) + message.cacheCreationInputTokens;
41
+ }
42
+ usage.billableInputTokens =
43
+ typeof message.billableInputTokens === 'number'
44
+ ? (usage.billableInputTokens ?? 0) + message.billableInputTokens
45
+ : message.inputTokenScope === 'raw_provider'
46
+ ? usage.billableInputTokens
47
+ : Math.max(0, (usage.inputTokens ?? 0) - (usage.cacheReadInputTokens ?? 0));
48
+ usage.budgetedTotalTokens =
49
+ typeof message.budgetedTotalTokens === 'number'
50
+ ? (usage.budgetedTotalTokens ?? 0) + message.budgetedTotalTokens
51
+ : message.inputTokenScope === 'raw_provider'
52
+ ? (usage.budgetedTotalTokens ?? 0) + message.outputTokens
53
+ : (usage.billableInputTokens ?? 0) + (usage.outputTokens ?? 0);
54
+ if (typeof message.totalCostUsd === 'number') {
55
+ usage.totalCostUsd = (usage.totalCostUsd ?? 0) + message.totalCostUsd;
56
+ }
57
+ if (typeof message.durationMs === 'number') {
58
+ usage.durationMs = Math.max(usage.durationMs ?? 0, message.durationMs);
59
+ }
60
+ if (typeof message.numTurns === 'number') {
61
+ usage.numTurns = Math.max(usage.numTurns ?? 0, message.numTurns);
62
+ }
63
+ if (message.modelUsage) {
64
+ usage.modelUsage = mergeModelUsage(usage.modelUsage, message.modelUsage);
65
+ }
66
+ }
67
+ else if (message.type === 'tool_call') {
68
+ toolCalls.set(message.toolCallId, {
69
+ id: message.toolCallId,
70
+ name: message.toolName,
71
+ status: message.status,
72
+ title: message.title,
73
+ startedAt: message.timestamp,
74
+ ...(message.input ? { inputDigest: digestRecord(message.input) } : {}),
75
+ });
76
+ }
77
+ else if (message.type === 'tool_call_update') {
78
+ const existing = toolCalls.get(message.toolCallId);
79
+ const status = message.status === 'error' ? 'error' : 'completed';
80
+ toolCalls.set(message.toolCallId, {
81
+ id: message.toolCallId,
82
+ name: message.toolName ?? existing?.name ?? 'unknown',
83
+ status,
84
+ title: message.title ?? existing?.title,
85
+ startedAt: existing?.startedAt,
86
+ completedAt: message.timestamp,
87
+ inputDigest: existing?.inputDigest,
88
+ });
89
+ if (status === 'error') {
90
+ permissionDenials.push({
91
+ toolName: message.toolName ?? existing?.name ?? 'unknown',
92
+ reason: message.output ?? 'tool error',
93
+ timestamp: message.timestamp,
94
+ });
95
+ }
96
+ }
17
97
  },
18
98
  text() {
19
99
  const chunksWithoutFinal = [...chunkMessages.entries()]
@@ -21,8 +101,84 @@ export function createSessionOutputCollector() {
21
101
  .map(([, chunks]) => chunks.join(''));
22
102
  return [...chunksWithoutFinal, ...finalMessages.values()].join('').trim();
23
103
  },
104
+ agentRunResult(options) {
105
+ const output = this.text();
106
+ const executionMode = options.executionMode ?? 'implement';
107
+ const completedAt = new Date(options.completedAt).toISOString();
108
+ const startedAt = new Date(options.startedAt).toISOString();
109
+ return {
110
+ schema: 'viewport.agent_run_result/v1',
111
+ agentId: options.agent.agentId,
112
+ adapterVersion: options.agent.adapterVersion,
113
+ ...(options.model ? { model: options.model } : {}),
114
+ executionMode,
115
+ enforcement: {
116
+ executionMode,
117
+ planMode: options.agent.capabilities.executionModes.plan,
118
+ readOnlyMode: options.agent.capabilities.executionModes.read_only,
119
+ toolAllowlist: options.agent.capabilities.toolAllowlist,
120
+ structuredOutput: options.agent.capabilities.structuredOutput,
121
+ sandbox: 'hard',
122
+ },
123
+ output,
124
+ usage: usage.available === true
125
+ ? { ...usage }
126
+ : {
127
+ available: false,
128
+ reason: options.agent.capabilities.usageReporting === 'unavailable'
129
+ ? 'adapter_no_usage'
130
+ : 'stream_missing_final_usage',
131
+ },
132
+ toolCalls: [...toolCalls.values()],
133
+ permissionDenials,
134
+ stopReason: normalizeStopReason(options.reason),
135
+ startedAt,
136
+ completedAt,
137
+ durationMs: Math.max(0, options.completedAt - options.startedAt),
138
+ };
139
+ },
24
140
  };
25
141
  }
142
+ function normalizeStopReason(reason) {
143
+ if (reason === 'idle')
144
+ return 'idle';
145
+ if (reason === 'completed' || reason === 'ended')
146
+ return 'completed';
147
+ if (reason === 'timeout')
148
+ return 'timeout';
149
+ if (reason === 'killed' || reason === 'canceled')
150
+ return 'canceled';
151
+ if (reason.includes('permission'))
152
+ return 'tool_denied';
153
+ if (reason.startsWith('error'))
154
+ return 'error';
155
+ return 'unknown';
156
+ }
157
+ function mergeModelUsage(current, next) {
158
+ const merged = { ...(current ?? {}) };
159
+ for (const [model, value] of Object.entries(next)) {
160
+ const existing = merged[model];
161
+ merged[model] = {
162
+ inputTokens: (existing?.inputTokens ?? 0) + value.inputTokens,
163
+ outputTokens: (existing?.outputTokens ?? 0) + value.outputTokens,
164
+ costUsd: (existing?.costUsd ?? 0) + value.costUsd,
165
+ ...((existing?.cacheReadInputTokens ?? 0) + (value.cacheReadInputTokens ?? 0) > 0
166
+ ? {
167
+ cacheReadInputTokens: (existing?.cacheReadInputTokens ?? 0) + (value.cacheReadInputTokens ?? 0),
168
+ }
169
+ : {}),
170
+ ...((existing?.cacheCreationInputTokens ?? 0) + (value.cacheCreationInputTokens ?? 0) > 0
171
+ ? {
172
+ cacheCreationInputTokens: (existing?.cacheCreationInputTokens ?? 0) + (value.cacheCreationInputTokens ?? 0),
173
+ }
174
+ : {}),
175
+ };
176
+ }
177
+ return merged;
178
+ }
179
+ function digestRecord(input) {
180
+ return createHash('sha256').update(JSON.stringify(input)).digest('hex');
181
+ }
26
182
  export function outputFromRichMessages(messages) {
27
183
  const text = [];
28
184
  for (const message of messages) {
@@ -1 +1 @@
1
- {"version":3,"file":"session-output.js","sourceRoot":"","sources":["../../src/workflows/session-output.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"session-output.js","sourceRoot":"","sources":["../../src/workflows/session-output.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,30 @@
1
+ import type { SessionExecutionMode } from '../core/types.js';
2
+ export declare const WORKFLOW_SESSION_TIMEOUT_DEFAULTS_SECONDS: Record<SessionExecutionMode, number>;
3
+ export interface ResolvedWorkflowSessionPolicy {
4
+ executionMode: SessionExecutionMode;
5
+ timeoutSeconds: number;
6
+ executionModeDefaulted: boolean;
7
+ timeoutDefaulted: boolean;
8
+ }
9
+ export interface WorkflowSessionBudget {
10
+ maxTokens?: number;
11
+ maxCostUsd?: number;
12
+ maxTurns?: number;
13
+ }
14
+ export declare function resolveWorkflowSessionPolicy(input: {
15
+ executionMode?: SessionExecutionMode;
16
+ timeoutSeconds?: number;
17
+ defaultExecutionMode?: SessionExecutionMode;
18
+ }): ResolvedWorkflowSessionPolicy;
19
+ export declare function resolveInlineAgentExecutionMode(input: {
20
+ explicitExecutionMode?: SessionExecutionMode;
21
+ parentExecutionMode?: SessionExecutionMode;
22
+ }): SessionExecutionMode;
23
+ export declare function resolveWorkflowSessionBudget(input: {
24
+ maxTokens?: number;
25
+ tokens?: number;
26
+ maxCostUsd?: number;
27
+ usd?: number;
28
+ maxTurns?: number;
29
+ } | undefined): WorkflowSessionBudget | undefined;
30
+ //# sourceMappingURL=session-policy.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"session-policy.d.ts","sourceRoot":"","sources":["../../src/workflows/session-policy.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,kBAAkB,CAAC;AAE7D,eAAO,MAAM,yCAAyC,EAAE,MAAM,CAAC,oBAAoB,EAAE,MAAM,CAK1F,CAAC;AAEF,MAAM,WAAW,6BAA6B;IAC5C,aAAa,EAAE,oBAAoB,CAAC;IACpC,cAAc,EAAE,MAAM,CAAC;IACvB,sBAAsB,EAAE,OAAO,CAAC;IAChC,gBAAgB,EAAE,OAAO,CAAC;CAC3B;AAED,MAAM,WAAW,qBAAqB;IACpC,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED,wBAAgB,4BAA4B,CAAC,KAAK,EAAE;IAClD,aAAa,CAAC,EAAE,oBAAoB,CAAC;IACrC,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,oBAAoB,CAAC,EAAE,oBAAoB,CAAC;CAC7C,GAAG,6BAA6B,CAShC;AAED,wBAAgB,+BAA+B,CAAC,KAAK,EAAE;IACrD,qBAAqB,CAAC,EAAE,oBAAoB,CAAC;IAC7C,mBAAmB,CAAC,EAAE,oBAAoB,CAAC;CAC5C,GAAG,oBAAoB,CAavB;AAED,wBAAgB,4BAA4B,CAC1C,KAAK,EACD;IACE,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB,GACD,SAAS,GACZ,qBAAqB,GAAG,SAAS,CAUnC"}
@@ -0,0 +1,45 @@
1
+ export const WORKFLOW_SESSION_TIMEOUT_DEFAULTS_SECONDS = {
2
+ plan: 600,
3
+ read_only: 900,
4
+ review: 900,
5
+ implement: 1800,
6
+ };
7
+ export function resolveWorkflowSessionPolicy(input) {
8
+ const executionMode = input.executionMode ?? input.defaultExecutionMode ?? 'implement';
9
+ return {
10
+ executionMode,
11
+ timeoutSeconds: input.timeoutSeconds ?? WORKFLOW_SESSION_TIMEOUT_DEFAULTS_SECONDS[executionMode],
12
+ executionModeDefaulted: input.executionMode === undefined,
13
+ timeoutDefaulted: input.timeoutSeconds === undefined,
14
+ };
15
+ }
16
+ export function resolveInlineAgentExecutionMode(input) {
17
+ if (input.explicitExecutionMode)
18
+ return input.explicitExecutionMode;
19
+ switch (input.parentExecutionMode) {
20
+ case 'plan':
21
+ return 'plan';
22
+ case 'read_only':
23
+ return 'read_only';
24
+ case 'review':
25
+ return 'review';
26
+ case 'implement':
27
+ case undefined:
28
+ return 'review';
29
+ }
30
+ }
31
+ export function resolveWorkflowSessionBudget(input) {
32
+ const maxTokens = positiveNumber(input?.maxTokens ?? input?.tokens);
33
+ const maxCostUsd = positiveNumber(input?.maxCostUsd ?? input?.usd);
34
+ const maxTurns = positiveNumber(input?.maxTurns);
35
+ const budget = {
36
+ ...(maxTokens !== undefined ? { maxTokens } : {}),
37
+ ...(maxCostUsd !== undefined ? { maxCostUsd } : {}),
38
+ ...(maxTurns !== undefined ? { maxTurns } : {}),
39
+ };
40
+ return Object.keys(budget).length > 0 ? budget : undefined;
41
+ }
42
+ function positiveNumber(value) {
43
+ return typeof value === 'number' && Number.isFinite(value) && value > 0 ? value : undefined;
44
+ }
45
+ //# sourceMappingURL=session-policy.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"session-policy.js","sourceRoot":"","sources":["../../src/workflows/session-policy.ts"],"names":[],"mappings":"AAEA,MAAM,CAAC,MAAM,yCAAyC,GAAyC;IAC7F,IAAI,EAAE,GAAG;IACT,SAAS,EAAE,GAAG;IACd,MAAM,EAAE,GAAG;IACX,SAAS,EAAE,IAAI;CAChB,CAAC;AAeF,MAAM,UAAU,4BAA4B,CAAC,KAI5C;IACC,MAAM,aAAa,GAAG,KAAK,CAAC,aAAa,IAAI,KAAK,CAAC,oBAAoB,IAAI,WAAW,CAAC;IACvF,OAAO;QACL,aAAa;QACb,cAAc,EACZ,KAAK,CAAC,cAAc,IAAI,yCAAyC,CAAC,aAAa,CAAC;QAClF,sBAAsB,EAAE,KAAK,CAAC,aAAa,KAAK,SAAS;QACzD,gBAAgB,EAAE,KAAK,CAAC,cAAc,KAAK,SAAS;KACrD,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,+BAA+B,CAAC,KAG/C;IACC,IAAI,KAAK,CAAC,qBAAqB;QAAE,OAAO,KAAK,CAAC,qBAAqB,CAAC;IACpE,QAAQ,KAAK,CAAC,mBAAmB,EAAE,CAAC;QAClC,KAAK,MAAM;YACT,OAAO,MAAM,CAAC;QAChB,KAAK,WAAW;YACd,OAAO,WAAW,CAAC;QACrB,KAAK,QAAQ;YACX,OAAO,QAAQ,CAAC;QAClB,KAAK,WAAW,CAAC;QACjB,KAAK,SAAS;YACZ,OAAO,QAAQ,CAAC;IACpB,CAAC;AACH,CAAC;AAED,MAAM,UAAU,4BAA4B,CAC1C,KAQa;IAEb,MAAM,SAAS,GAAG,cAAc,CAAC,KAAK,EAAE,SAAS,IAAI,KAAK,EAAE,MAAM,CAAC,CAAC;IACpE,MAAM,UAAU,GAAG,cAAc,CAAC,KAAK,EAAE,UAAU,IAAI,KAAK,EAAE,GAAG,CAAC,CAAC;IACnE,MAAM,QAAQ,GAAG,cAAc,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC;IACjD,MAAM,MAAM,GAA0B;QACpC,GAAG,CAAC,SAAS,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,SAAS,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QACjD,GAAG,CAAC,UAAU,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,UAAU,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QACnD,GAAG,CAAC,QAAQ,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;KAChD,CAAC;IACF,OAAO,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS,CAAC;AAC7D,CAAC;AAED,SAAS,cAAc,CAAC,KAAc;IACpC,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS,CAAC;AAC9F,CAAC"}
@@ -1,4 +1,9 @@
1
1
  import type { WorkflowNode, WorkflowNodeRunState } from './types.js';
2
+ export declare class WorkflowStructuredOutputError extends Error {
3
+ readonly outputName: string;
4
+ readonly reason: string;
5
+ constructor(outputName: string, reason: string);
6
+ }
2
7
  /**
3
8
  * After a node finishes running, populate `state.outputs` based on the node's
4
9
  * declared output schema and the captured `state.output` text.
@@ -1 +1 @@
1
- {"version":3,"file":"structured-outputs.d.ts","sourceRoot":"","sources":["../../src/workflows/structured-outputs.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,YAAY,EAAE,oBAAoB,EAA4B,MAAM,YAAY,CAAC;AAE/F;;;;;;;;;;;;;;;GAeG;AACH,wBAAsB,4BAA4B,CAChD,KAAK,EAAE,oBAAoB,EAC3B,IAAI,EAAE,YAAY,GACjB,OAAO,CAAC,IAAI,CAAC,CAWf"}
1
+ {"version":3,"file":"structured-outputs.d.ts","sourceRoot":"","sources":["../../src/workflows/structured-outputs.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,YAAY,EAAE,oBAAoB,EAA4B,MAAM,YAAY,CAAC;AAU/F,qBAAa,6BAA8B,SAAQ,KAAK;IAEpD,QAAQ,CAAC,UAAU,EAAE,MAAM;IAC3B,QAAQ,CAAC,MAAM,EAAE,MAAM;gBADd,UAAU,EAAE,MAAM,EAClB,MAAM,EAAE,MAAM;CAI1B;AAED;;;;;;;;;;;;;;;GAeG;AACH,wBAAsB,4BAA4B,CAChD,KAAK,EAAE,oBAAoB,EAC3B,IAAI,EAAE,YAAY,GACjB,OAAO,CAAC,IAAI,CAAC,CAsDf"}
@@ -1,4 +1,13 @@
1
1
  import jsonata from 'jsonata';
2
+ export class WorkflowStructuredOutputError extends Error {
3
+ outputName;
4
+ reason;
5
+ constructor(outputName, reason) {
6
+ super(`Structured output ${outputName} is invalid: ${reason}`);
7
+ this.outputName = outputName;
8
+ this.reason = reason;
9
+ }
10
+ }
2
11
  /**
3
12
  * After a node finishes running, populate `state.outputs` based on the node's
4
13
  * declared output schema and the captured `state.output` text.
@@ -16,16 +25,63 @@ import jsonata from 'jsonata';
16
25
  * collector will populate `run.artifacts` for the actual file content.
17
26
  */
18
27
  export async function captureNodeStructuredOutputs(state, node) {
19
- if (!node.outputs || Object.keys(node.outputs).length === 0)
28
+ const definitions = structuredOutputDefinitions(node);
29
+ if (Object.keys(definitions).length === 0)
20
30
  return;
21
31
  const text = state.output ?? '';
22
32
  const parsedJson = parseJson(text);
23
33
  const collected = {};
24
- for (const [name, definition] of Object.entries(node.outputs)) {
34
+ const receipt = {};
35
+ for (const [name, definition] of Object.entries(definitions)) {
36
+ const requirement = definition.requirement ?? 'optional';
37
+ if (requirement === 'unsupported') {
38
+ receipt[name] = {
39
+ requirement,
40
+ status: 'degraded',
41
+ reason: 'structured_output_unsupported',
42
+ };
43
+ continue;
44
+ }
25
45
  const source = await outputSource(text, parsedJson, definition);
26
- collected[name] = coerceOutputValue(source, definition);
46
+ const value = coerceOutputValue(source, definition);
47
+ const invalidReason = invalidOutputReason(value, source, parsedJson, text, definition);
48
+ if (requirement === 'required' && invalidReason) {
49
+ receipt[name] = {
50
+ requirement,
51
+ status: 'invalid',
52
+ reason: invalidReason,
53
+ };
54
+ state.outputs = {};
55
+ state.status = 'failed';
56
+ state.error = `Required structured output ${name} is invalid: ${invalidReason}`;
57
+ state.metadata = {
58
+ ...(state.metadata ?? {}),
59
+ structuredOutputs: {
60
+ schema: 'viewport.structured_outputs/v1',
61
+ outputs: receipt,
62
+ },
63
+ };
64
+ throw new WorkflowStructuredOutputError(name, invalidReason);
65
+ }
66
+ collected[name] = value;
67
+ receipt[name] = invalidReason
68
+ ? { requirement, status: 'invalid', reason: invalidReason }
69
+ : { requirement, status: 'captured' };
27
70
  }
28
71
  state.outputs = collected;
72
+ state.metadata = {
73
+ ...(state.metadata ?? {}),
74
+ structuredOutputs: {
75
+ schema: 'viewport.structured_outputs/v1',
76
+ outputs: receipt,
77
+ },
78
+ };
79
+ }
80
+ function structuredOutputDefinitions(node) {
81
+ return {
82
+ ...(node.outputs ?? {}),
83
+ ...(node.outputSchema ?? {}),
84
+ };
29
85
  }
30
86
  async function outputSource(text, parsedJson, definition) {
31
87
  if (!definition.extract)
@@ -67,6 +123,29 @@ function coerceOutputValue(value, definition) {
67
123
  return stringifyValue(value);
68
124
  }
69
125
  }
126
+ function invalidOutputReason(value, source, parsedJson, text, definition) {
127
+ if (source === undefined || source === null || stringifyValue(source).trim() === '') {
128
+ return 'missing';
129
+ }
130
+ switch (definition.type) {
131
+ case 'string':
132
+ return stringifyValue(value).trim() === '' ? 'missing' : null;
133
+ case 'json':
134
+ if (!definition.extract && parsedJson === undefined && text.trim() !== '') {
135
+ return 'malformed_json';
136
+ }
137
+ return value === undefined || value === null ? 'missing' : null;
138
+ case 'number':
139
+ return typeof value === 'number' && Number.isFinite(value) ? null : 'invalid_number';
140
+ case 'boolean':
141
+ return typeof value === 'boolean' ? null : 'invalid_boolean';
142
+ case 'file':
143
+ case 'artifact':
144
+ return stringifyValue(value).trim() === '' ? 'missing' : null;
145
+ default:
146
+ return null;
147
+ }
148
+ }
70
149
  function parseJson(text) {
71
150
  const trimmed = text.trim();
72
151
  if (!trimmed)
@@ -1 +1 @@
1
- {"version":3,"file":"structured-outputs.js","sourceRoot":"","sources":["../../src/workflows/structured-outputs.ts"],"names":[],"mappings":"AAAA,OAAO,OAAO,MAAM,SAAS,CAAC;AAG9B;;;;;;;;;;;;;;;GAeG;AACH,MAAM,CAAC,KAAK,UAAU,4BAA4B,CAChD,KAA2B,EAC3B,IAAkB;IAElB,IAAI,CAAC,IAAI,CAAC,OAAO,IAAI,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO;IAEpE,MAAM,IAAI,GAAG,KAAK,CAAC,MAAM,IAAI,EAAE,CAAC;IAChC,MAAM,UAAU,GAAG,SAAS,CAAC,IAAI,CAAC,CAAC;IACnC,MAAM,SAAS,GAA4B,EAAE,CAAC;IAC9C,KAAK,MAAM,CAAC,IAAI,EAAE,UAAU,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC;QAC9D,MAAM,MAAM,GAAG,MAAM,YAAY,CAAC,IAAI,EAAE,UAAU,EAAE,UAAU,CAAC,CAAC;QAChE,SAAS,CAAC,IAAI,CAAC,GAAG,iBAAiB,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC;IAC1D,CAAC;IACD,KAAK,CAAC,OAAO,GAAG,SAAS,CAAC;AAC5B,CAAC;AAED,KAAK,UAAU,YAAY,CACzB,IAAY,EACZ,UAAmB,EACnB,UAAoC;IAEpC,IAAI,CAAC,UAAU,CAAC,OAAO;QAAE,OAAO,IAAI,CAAC;IAErC,IAAI,CAAC;QACH,OAAO,MAAM,OAAO,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC,QAAQ,CAAC;YAChD,MAAM,EAAE,IAAI;YACZ,IAAI,EAAE,UAAU;SACjB,CAAC,CAAC;IACL,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC;AAED,SAAS,iBAAiB,CAAC,KAAc,EAAE,UAAoC;IAC7E,QAAQ,UAAU,CAAC,IAAI,EAAE,CAAC;QACxB,KAAK,QAAQ;YACX,OAAO,cAAc,CAAC,KAAK,CAAC,CAAC;QAC/B,KAAK,MAAM,CAAC,CAAC,CAAC;YACZ,IAAI,UAAU,CAAC,OAAO;gBAAE,OAAO,KAAK,IAAI,IAAI,CAAC;YAC7C,MAAM,MAAM,GAAG,SAAS,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC,CAAC;YAChD,OAAO,MAAM,KAAK,SAAS,CAAC,CAAC,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC;QAC/D,CAAC;QACD,KAAK,QAAQ,CAAC,CAAC,CAAC;YACd,MAAM,MAAM,GAAG,MAAM,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC;YACpD,OAAO,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC;QACjD,CAAC;QACD,KAAK,SAAS,CAAC,CAAC,CAAC;YACf,MAAM,UAAU,GAAG,cAAc,CAAC,KAAK,CAAC,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;YAC9D,OAAO,CAAC,MAAM,EAAE,GAAG,EAAE,KAAK,EAAE,GAAG,EAAE,MAAM,EAAE,QAAQ,EAAE,IAAI,CAAC,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC;QAChF,CAAC;QACD,KAAK,MAAM,CAAC;QACZ,KAAK,UAAU;YACb,yEAAyE;YACzE,4DAA4D;YAC5D,OAAO,cAAc,CAAC,KAAK,CAAC,IAAI,IAAI,CAAC;QACvC;YACE,OAAO,cAAc,CAAC,KAAK,CAAC,CAAC;IACjC,CAAC;AACH,CAAC;AAED,SAAS,SAAS,CAAC,IAAY;IAC7B,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC;IAC5B,IAAI,CAAC,OAAO;QAAE,OAAO,IAAI,CAAC;IAC1B,IAAI,CAAC;QACH,OAAO,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;IAC7B,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,SAAS,CAAC;IACnB,CAAC;AACH,CAAC;AAED,SAAS,cAAc,CAAC,KAAc;IACpC,IAAI,KAAK,KAAK,SAAS,IAAI,KAAK,KAAK,IAAI;QAAE,OAAO,EAAE,CAAC;IACrD,IAAI,OAAO,KAAK,KAAK,QAAQ;QAAE,OAAO,KAAK,CAAC;IAC5C,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,OAAO,KAAK,KAAK,SAAS;QAAE,OAAO,MAAM,CAAC,KAAK,CAAC,CAAC;IAClF,IAAI,CAAC;QACH,OAAO,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;IAC/B,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,MAAM,CAAC,KAAK,CAAC,CAAC;IACvB,CAAC;AACH,CAAC"}
1
+ {"version":3,"file":"structured-outputs.js","sourceRoot":"","sources":["../../src/workflows/structured-outputs.ts"],"names":[],"mappings":"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"}