@relayflows/sdk 2.0.11 → 2.0.13

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (180) hide show
  1. package/dist/adapters/base.d.ts +6 -0
  2. package/dist/adapters/base.d.ts.map +1 -1
  3. package/dist/adapters/claude.d.ts.map +1 -1
  4. package/dist/adapters/claude.js +1 -0
  5. package/dist/adapters/claude.js.map +1 -1
  6. package/dist/authored-admission.d.ts +5 -0
  7. package/dist/authored-admission.d.ts.map +1 -0
  8. package/dist/authored-admission.js +14 -0
  9. package/dist/authored-admission.js.map +1 -0
  10. package/dist/authored-budget.d.ts +1 -1
  11. package/dist/authored-budget.d.ts.map +1 -1
  12. package/dist/authored-budget.js +18 -9
  13. package/dist/authored-budget.js.map +1 -1
  14. package/dist/authored-flow-error.d.ts +1 -1
  15. package/dist/authored-flow-error.d.ts.map +1 -1
  16. package/dist/authored-flow-error.js.map +1 -1
  17. package/dist/authored-flow-executor.d.ts +10 -0
  18. package/dist/authored-flow-executor.d.ts.map +1 -1
  19. package/dist/authored-flow-executor.js +15 -7
  20. package/dist/authored-flow-executor.js.map +1 -1
  21. package/dist/authored-flow-loader.d.ts +20 -0
  22. package/dist/authored-flow-loader.d.ts.map +1 -1
  23. package/dist/authored-flow-loader.js +86 -11
  24. package/dist/authored-flow-loader.js.map +1 -1
  25. package/dist/authored-helper-effect.d.ts +1 -1
  26. package/dist/authored-helper-effect.d.ts.map +1 -1
  27. package/dist/authored-helper-effect.js +5 -3
  28. package/dist/authored-helper-effect.js.map +1 -1
  29. package/dist/authored-mcp.d.ts +1 -1
  30. package/dist/authored-mcp.d.ts.map +1 -1
  31. package/dist/authored-mcp.js +7 -4
  32. package/dist/authored-mcp.js.map +1 -1
  33. package/dist/authored-node-entry.d.ts +2 -0
  34. package/dist/authored-node-entry.d.ts.map +1 -0
  35. package/dist/authored-node-entry.js +111 -0
  36. package/dist/authored-node-entry.js.map +1 -0
  37. package/dist/authored-node-runner.d.ts +11 -0
  38. package/dist/authored-node-runner.d.ts.map +1 -0
  39. package/dist/authored-node-runner.js +246 -0
  40. package/dist/authored-node-runner.js.map +1 -0
  41. package/dist/authored-plugin-effect.d.ts +1 -1
  42. package/dist/authored-plugin-effect.d.ts.map +1 -1
  43. package/dist/authored-plugin-effect.js +7 -4
  44. package/dist/authored-plugin-effect.js.map +1 -1
  45. package/dist/authored-root.d.ts +38 -0
  46. package/dist/authored-root.d.ts.map +1 -0
  47. package/dist/authored-root.js +329 -0
  48. package/dist/authored-root.js.map +1 -0
  49. package/dist/authored-runtime-capability.d.ts +6 -0
  50. package/dist/authored-runtime-capability.d.ts.map +1 -0
  51. package/dist/authored-runtime-capability.js +40 -0
  52. package/dist/authored-runtime-capability.js.map +1 -0
  53. package/dist/authored-source-authority.d.ts +4 -0
  54. package/dist/authored-source-authority.d.ts.map +1 -0
  55. package/dist/authored-source-authority.js +61 -0
  56. package/dist/authored-source-authority.js.map +1 -0
  57. package/dist/authored-worker-step.d.ts +2 -2
  58. package/dist/authored-worker-step.d.ts.map +1 -1
  59. package/dist/authored-worker-step.js +11 -6
  60. package/dist/authored-worker-step.js.map +1 -1
  61. package/dist/budget-preflight.d.ts +28 -3
  62. package/dist/budget-preflight.d.ts.map +1 -1
  63. package/dist/budget-preflight.js +34 -24
  64. package/dist/budget-preflight.js.map +1 -1
  65. package/dist/cli/build.d.ts.map +1 -1
  66. package/dist/cli/build.js +8 -0
  67. package/dist/cli/build.js.map +1 -1
  68. package/dist/cli/check.js +3 -1
  69. package/dist/cli/check.js.map +1 -1
  70. package/dist/cli/deploy.d.ts.map +1 -1
  71. package/dist/cli/deploy.js +5 -0
  72. package/dist/cli/deploy.js.map +1 -1
  73. package/dist/cli/direct-run.d.ts.map +1 -1
  74. package/dist/cli/direct-run.js +46 -14
  75. package/dist/cli/direct-run.js.map +1 -1
  76. package/dist/cli/run.d.ts +10 -0
  77. package/dist/cli/run.d.ts.map +1 -1
  78. package/dist/cli/run.js +90 -12
  79. package/dist/cli/run.js.map +1 -1
  80. package/dist/cli/step-failure.d.ts +40 -0
  81. package/dist/cli/step-failure.d.ts.map +1 -0
  82. package/dist/cli/step-failure.js +150 -0
  83. package/dist/cli/step-failure.js.map +1 -0
  84. package/dist/cli-adapter.d.ts +16 -0
  85. package/dist/cli-adapter.d.ts.map +1 -1
  86. package/dist/cli-adapter.js +17 -0
  87. package/dist/cli-adapter.js.map +1 -1
  88. package/dist/cli.d.ts.map +1 -1
  89. package/dist/cli.js +8 -8
  90. package/dist/cli.js.map +1 -1
  91. package/dist/cloud-run.d.ts +11 -1
  92. package/dist/cloud-run.d.ts.map +1 -1
  93. package/dist/cloud-run.js +65 -19
  94. package/dist/cloud-run.js.map +1 -1
  95. package/dist/daemon-connection.d.ts +7 -0
  96. package/dist/daemon-connection.d.ts.map +1 -1
  97. package/dist/daemon-connection.js +7 -0
  98. package/dist/daemon-connection.js.map +1 -1
  99. package/dist/failure-kinds.d.ts +30 -4
  100. package/dist/failure-kinds.d.ts.map +1 -1
  101. package/dist/failure-kinds.js +8 -1
  102. package/dist/failure-kinds.js.map +1 -1
  103. package/dist/journal-client.d.ts +3 -7
  104. package/dist/journal-client.d.ts.map +1 -1
  105. package/dist/journal-client.js +6 -2
  106. package/dist/journal-client.js.map +1 -1
  107. package/dist/llm-worker.d.ts.map +1 -1
  108. package/dist/llm-worker.js +4 -2
  109. package/dist/llm-worker.js.map +1 -1
  110. package/dist/local-agent.d.ts +1 -1
  111. package/dist/local-agent.d.ts.map +1 -1
  112. package/dist/local-agent.js +2 -2
  113. package/dist/local-agent.js.map +1 -1
  114. package/dist/model-pricing.d.ts +7 -6
  115. package/dist/model-pricing.d.ts.map +1 -1
  116. package/dist/model-pricing.js +8 -6
  117. package/dist/model-pricing.js.map +1 -1
  118. package/dist/preflight.d.ts +9 -1
  119. package/dist/preflight.d.ts.map +1 -1
  120. package/dist/preflight.js +36 -18
  121. package/dist/preflight.js.map +1 -1
  122. package/dist/protocol.d.ts +24 -5
  123. package/dist/protocol.d.ts.map +1 -1
  124. package/dist/spec.d.ts +27 -11
  125. package/dist/spec.d.ts.map +1 -1
  126. package/dist/spec.js.map +1 -1
  127. package/dist/worker-cli.d.ts.map +1 -1
  128. package/dist/worker-cli.js +6 -5
  129. package/dist/worker-cli.js.map +1 -1
  130. package/dist/worker-spend.d.ts +13 -8
  131. package/dist/worker-spend.d.ts.map +1 -1
  132. package/dist/worker-spend.js +27 -4
  133. package/dist/worker-spend.js.map +1 -1
  134. package/dist/worker.d.ts.map +1 -1
  135. package/dist/worker.js +4 -2
  136. package/dist/worker.js.map +1 -1
  137. package/package.json +2 -2
  138. package/src/adapters/base.ts +7 -0
  139. package/src/adapters/claude.ts +1 -0
  140. package/src/authored-admission.ts +17 -0
  141. package/src/authored-budget.ts +38 -11
  142. package/src/authored-flow-error.ts +0 -1
  143. package/src/authored-flow-executor.ts +32 -7
  144. package/src/authored-flow-loader.ts +96 -13
  145. package/src/authored-helper-effect.ts +5 -3
  146. package/src/authored-mcp.ts +6 -4
  147. package/src/authored-node-entry.ts +90 -0
  148. package/src/authored-node-runner.ts +219 -0
  149. package/src/authored-plugin-effect.ts +6 -3
  150. package/src/authored-root.ts +396 -0
  151. package/src/authored-runtime-capability.ts +40 -0
  152. package/src/authored-source-authority.ts +62 -0
  153. package/src/authored-worker-step.ts +15 -4
  154. package/src/budget-preflight.ts +52 -25
  155. package/src/cli/build.ts +7 -0
  156. package/src/cli/check.ts +3 -1
  157. package/src/cli/deploy.ts +4 -0
  158. package/src/cli/direct-run.ts +52 -16
  159. package/src/cli/run.ts +101 -12
  160. package/src/cli/step-failure.ts +160 -0
  161. package/src/cli-adapter.ts +27 -0
  162. package/src/cli.ts +9 -9
  163. package/src/cloud-run.ts +74 -21
  164. package/src/daemon-connection.ts +8 -0
  165. package/src/failure-kinds.ts +28 -2
  166. package/src/journal-client.ts +8 -3
  167. package/src/llm-worker.ts +4 -2
  168. package/src/local-agent.ts +7 -2
  169. package/src/model-pricing.ts +8 -6
  170. package/src/preflight.ts +45 -18
  171. package/src/protocol.ts +17 -2
  172. package/src/spec.ts +28 -5
  173. package/src/worker-cli.ts +7 -5
  174. package/src/worker-spend.ts +32 -5
  175. package/src/worker.ts +4 -2
  176. package/dist/cli/deterministic-failure.d.ts +0 -5
  177. package/dist/cli/deterministic-failure.d.ts.map +0 -1
  178. package/dist/cli/deterministic-failure.js +0 -66
  179. package/dist/cli/deterministic-failure.js.map +0 -1
  180. package/src/cli/deterministic-failure.ts +0 -69
@@ -28,6 +28,12 @@ export interface CliAdapterIdentification {
28
28
  export interface HeadlessAdapter {
29
29
  /** Identity of this adapter — matches CliAdapterKind for registry keys. */
30
30
  readonly kind: string;
31
+ /**
32
+ * Stable model used only when neither the step nor its selected named agent
33
+ * declares one. Explicit authoring always wins. A default without an entry
34
+ * in MODEL_PRICING runs unmetered under a dollar budget (a warning).
35
+ */
36
+ readonly defaultModel?: string;
31
37
  /** Shape-check invocation before classifying an auth failure. */
32
38
  buildIdentification(): CliAdapterIdentification;
33
39
  /** Non-interactive auth-status probe. */
@@ -1 +1 @@
1
- {"version":3,"file":"base.d.ts","sourceRoot":"","sources":["../../src/adapters/base.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAEH,MAAM,WAAW,aAAa;IAC5B,IAAI,EAAE,MAAM,EAAE,CAAC;IACf,SAAS,EAAE,MAAM,CAAC;IAClB,iFAAiF;IACjF,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,wBAAwB;IACvC,UAAU,EAAE,aAAa,CAAC;IAC1B,cAAc,CAAC,EAAE,MAAM,CAAC;CACzB;AAED;;;GAGG;AACH,MAAM,WAAW,eAAe;IAC9B,2EAA2E;IAC3E,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IAEtB,iEAAiE;IACjE,mBAAmB,IAAI,wBAAwB,CAAC;IAEhD,yCAAyC;IACzC,cAAc,IAAI,aAAa,CAAC;IAEhC;;;;OAIG;IACH,wBAAwB,CAAC,KAAK,EAAE,MAAM,GAAG,aAAa,CAAC;IAEvD,yEAAyE;IACzE,oBAAoB,CAAC,WAAW,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,MAAM,GAAG,aAAa,CAAC;IAEzE,iEAAiE;IACjE,kBAAkB,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,MAAM,GAAG,aAAa,CAAC;CACnE"}
1
+ {"version":3,"file":"base.d.ts","sourceRoot":"","sources":["../../src/adapters/base.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAEH,MAAM,WAAW,aAAa;IAC5B,IAAI,EAAE,MAAM,EAAE,CAAC;IACf,SAAS,EAAE,MAAM,CAAC;IAClB,iFAAiF;IACjF,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,wBAAwB;IACvC,UAAU,EAAE,aAAa,CAAC;IAC1B,cAAc,CAAC,EAAE,MAAM,CAAC;CACzB;AAED;;;GAGG;AACH,MAAM,WAAW,eAAe;IAC9B,2EAA2E;IAC3E,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IAEtB;;;;OAIG;IACH,QAAQ,CAAC,YAAY,CAAC,EAAE,MAAM,CAAC;IAE/B,iEAAiE;IACjE,mBAAmB,IAAI,wBAAwB,CAAC;IAEhD,yCAAyC;IACzC,cAAc,IAAI,aAAa,CAAC;IAEhC;;;;OAIG;IACH,wBAAwB,CAAC,KAAK,EAAE,MAAM,GAAG,aAAa,CAAC;IAEvD,yEAAyE;IACzE,oBAAoB,CAAC,WAAW,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,MAAM,GAAG,aAAa,CAAC;IAEzE,iEAAiE;IACjE,kBAAkB,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,MAAM,GAAG,aAAa,CAAC;CACnE"}
@@ -1 +1 @@
1
- {"version":3,"file":"claude.d.ts","sourceRoot":"","sources":["../../src/adapters/claude.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAGV,eAAe,EAChB,MAAM,WAAW,CAAC;AAInB;8EAC8E;AAC9E,eAAO,MAAM,aAAa,EAAE,eA4C3B,CAAC"}
1
+ {"version":3,"file":"claude.d.ts","sourceRoot":"","sources":["../../src/adapters/claude.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAGV,eAAe,EAChB,MAAM,WAAW,CAAC;AAInB;8EAC8E;AAC9E,eAAO,MAAM,aAAa,EAAE,eA6C3B,CAAC"}
@@ -3,6 +3,7 @@ const MODEL_PROBE_PROMPT = 'Reply with exactly RELAYFLOWS_MODEL_READY and nothin
3
3
  * pre-#141 inline shape in `cli-adapter.ts` — only the packaging changed. */
4
4
  export const claudeAdapter = {
5
5
  kind: 'claude',
6
+ defaultModel: 'claude-opus-5',
6
7
  buildIdentification() {
7
8
  return { invocation: { args: ['auth', 'status', '--help'], timeoutMs: 10_000 } };
8
9
  },
@@ -1 +1 @@
1
- {"version":3,"file":"claude.js","sourceRoot":"","sources":["../../src/adapters/claude.ts"],"names":[],"mappings":"AAMA,MAAM,kBAAkB,GAAG,6DAA6D,CAAC;AAEzF;8EAC8E;AAC9E,MAAM,CAAC,MAAM,aAAa,GAAoB;IAC5C,IAAI,EAAE,QAAQ;IAEd,mBAAmB;QACjB,OAAO,EAAE,UAAU,EAAE,EAAE,IAAI,EAAE,CAAC,MAAM,EAAE,QAAQ,EAAE,QAAQ,CAAC,EAAE,SAAS,EAAE,MAAM,EAAE,EAAE,CAAC;IACnF,CAAC;IAED,cAAc;QACZ,OAAO,EAAE,IAAI,EAAE,CAAC,MAAM,EAAE,QAAQ,CAAC,EAAE,SAAS,EAAE,MAAM,EAAE,CAAC;IACzD,CAAC;IAED,wBAAwB,CAAC,KAAa;QACpC,OAAO;YACL,IAAI,EAAE;gBACJ,IAAI,EAAE,SAAS,EAAE,KAAK,EAAE,SAAS,EAAE,EAAE,EAAE,0BAA0B;gBACjE,kBAAkB;aACnB;YACD,SAAS,EAAE,MAAM;SAClB,CAAC;IACJ,CAAC;IAED,oBAAoB,CAAC,WAAmB,EAAE,KAAc;QACtD,OAAO;YACL,IAAI,EAAE;gBACJ,IAAI;gBACJ,sEAAsE;gBACtE,gEAAgE;gBAChE,iEAAiE;gBACjE,uDAAuD;gBACvD,gCAAgC;gBAChC,GAAG,CAAC,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC;gBAClD,WAAW;aACZ;YACD,SAAS,EAAE,CAAC;SACb,CAAC;IACJ,CAAC;IAED,kBAAkB,CAAC,MAAc,EAAE,KAAc;QAC/C,OAAO;YACL,IAAI,EAAE,CAAC,IAAI,EAAE,SAAS,EAAE,EAAE,EAAE,0BAA0B;gBACpD,GAAG,CAAC,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC,EAAE,MAAM,CAAC;YAC7D,SAAS,EAAE,CAAC;SACb,CAAC;IACJ,CAAC;CACF,CAAC"}
1
+ {"version":3,"file":"claude.js","sourceRoot":"","sources":["../../src/adapters/claude.ts"],"names":[],"mappings":"AAMA,MAAM,kBAAkB,GAAG,6DAA6D,CAAC;AAEzF;8EAC8E;AAC9E,MAAM,CAAC,MAAM,aAAa,GAAoB;IAC5C,IAAI,EAAE,QAAQ;IACd,YAAY,EAAE,eAAe;IAE7B,mBAAmB;QACjB,OAAO,EAAE,UAAU,EAAE,EAAE,IAAI,EAAE,CAAC,MAAM,EAAE,QAAQ,EAAE,QAAQ,CAAC,EAAE,SAAS,EAAE,MAAM,EAAE,EAAE,CAAC;IACnF,CAAC;IAED,cAAc;QACZ,OAAO,EAAE,IAAI,EAAE,CAAC,MAAM,EAAE,QAAQ,CAAC,EAAE,SAAS,EAAE,MAAM,EAAE,CAAC;IACzD,CAAC;IAED,wBAAwB,CAAC,KAAa;QACpC,OAAO;YACL,IAAI,EAAE;gBACJ,IAAI,EAAE,SAAS,EAAE,KAAK,EAAE,SAAS,EAAE,EAAE,EAAE,0BAA0B;gBACjE,kBAAkB;aACnB;YACD,SAAS,EAAE,MAAM;SAClB,CAAC;IACJ,CAAC;IAED,oBAAoB,CAAC,WAAmB,EAAE,KAAc;QACtD,OAAO;YACL,IAAI,EAAE;gBACJ,IAAI;gBACJ,sEAAsE;gBACtE,gEAAgE;gBAChE,iEAAiE;gBACjE,uDAAuD;gBACvD,gCAAgC;gBAChC,GAAG,CAAC,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC;gBAClD,WAAW;aACZ;YACD,SAAS,EAAE,CAAC;SACb,CAAC;IACJ,CAAC;IAED,kBAAkB,CAAC,MAAc,EAAE,KAAc;QAC/C,OAAO;YACL,IAAI,EAAE,CAAC,IAAI,EAAE,SAAS,EAAE,EAAE,EAAE,0BAA0B;gBACpD,GAAG,CAAC,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC,EAAE,MAAM,CAAC;YAC7D,SAAS,EAAE,CAAC;SACb,CAAC;IACJ,CAAC;CACF,CAAC"}
@@ -0,0 +1,5 @@
1
+ /** Stable retry identity for one operation in one durable authored root. */
2
+ export declare function authoredChildAdmissionKey(rootRunId: string | undefined, stepId: string): string | undefined;
3
+ /** Stable local worker surface for retries of one caller-owned root start. */
4
+ export declare function authoredLocalAgentStream(admissionIdentity: string): string;
5
+ //# sourceMappingURL=authored-admission.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"authored-admission.d.ts","sourceRoot":"","sources":["../src/authored-admission.ts"],"names":[],"mappings":"AAEA,4EAA4E;AAC5E,wBAAgB,yBAAyB,CACvC,SAAS,EAAE,MAAM,GAAG,SAAS,EAC7B,MAAM,EAAE,MAAM,GACb,MAAM,GAAG,SAAS,CAGpB;AAED,8EAA8E;AAC9E,wBAAgB,wBAAwB,CAAC,iBAAiB,EAAE,MAAM,GAAG,MAAM,CAI1E"}
@@ -0,0 +1,14 @@
1
+ import { createHash } from 'node:crypto';
2
+ /** Stable retry identity for one operation in one durable authored root. */
3
+ export function authoredChildAdmissionKey(rootRunId, stepId) {
4
+ if (rootRunId === undefined)
5
+ return undefined;
6
+ return `authored-child:${createHash('sha256').update(`${rootRunId}\0${stepId}`).digest('hex')}`;
7
+ }
8
+ /** Stable local worker surface for retries of one caller-owned root start. */
9
+ export function authoredLocalAgentStream(admissionIdentity) {
10
+ return `local-agent-${createHash('sha256')
11
+ .update(`authored-root-worker\0${admissionIdentity}`)
12
+ .digest('hex')}`;
13
+ }
14
+ //# sourceMappingURL=authored-admission.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"authored-admission.js","sourceRoot":"","sources":["../src/authored-admission.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAEzC,4EAA4E;AAC5E,MAAM,UAAU,yBAAyB,CACvC,SAA6B,EAC7B,MAAc;IAEd,IAAI,SAAS,KAAK,SAAS;QAAE,OAAO,SAAS,CAAC;IAC9C,OAAO,kBAAkB,UAAU,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,GAAG,SAAS,KAAK,MAAM,EAAE,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC;AAClG,CAAC;AAED,8EAA8E;AAC9E,MAAM,UAAU,wBAAwB,CAAC,iBAAyB;IAChE,OAAO,eAAe,UAAU,CAAC,QAAQ,CAAC;SACvC,MAAM,CAAC,yBAAyB,iBAAiB,EAAE,CAAC;SACpD,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC;AACrB,CAAC"}
@@ -8,6 +8,6 @@ export declare class AuthoredBudget {
8
8
  private tail;
9
9
  private charges;
10
10
  constructor(header: unknown);
11
- execute<T>(journal: JournalClient, spec: KernelRunSpec, consume: (outcome: RunOutcome) => Promise<T>): Promise<T>;
11
+ execute<T>(journal: JournalClient, spec: KernelRunSpec, consume: (outcome: RunOutcome) => Promise<T>, admissionKey?: string): Promise<T>;
12
12
  }
13
13
  //# sourceMappingURL=authored-budget.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"authored-budget.d.ts","sourceRoot":"","sources":["../src/authored-budget.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACzD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAChD,OAAO,KAAK,EAAoB,aAAa,EAAE,MAAM,WAAW,CAAC;AAEjE,kFAAkF;AAClF,qBAAa,cAAc;IACzB,OAAO,CAAC,QAAQ,CAAC,KAAK,CAA+B;IACrD,OAAO,CAAC,MAAM,CAAS;IACvB,OAAO,CAAC,IAAI,CAAuC;IACnD,OAAO,CAAC,OAAO,CAAmF;gBAEtF,MAAM,EAAE,OAAO;IASrB,OAAO,CAAC,CAAC,EAAE,OAAO,EAAE,aAAa,EAAE,IAAI,EAAE,aAAa,EAAE,OAAO,EAAE,CAAC,OAAO,EAAE,UAAU,KAAK,OAAO,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC;CA8CxH"}
1
+ {"version":3,"file":"authored-budget.d.ts","sourceRoot":"","sources":["../src/authored-budget.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACzD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAChD,OAAO,KAAK,EAAsC,aAAa,EAAE,MAAM,WAAW,CAAC;AAmBnF,kFAAkF;AAClF,qBAAa,cAAc;IACzB,OAAO,CAAC,QAAQ,CAAC,KAAK,CAA+B;IACrD,OAAO,CAAC,MAAM,CAAS;IACvB,OAAO,CAAC,IAAI,CAAuC;IACnD,OAAO,CAAC,OAAO,CAAgB;gBAEnB,MAAM,EAAE,OAAO;IASrB,OAAO,CAAC,CAAC,EAAE,OAAO,EAAE,aAAa,EAAE,IAAI,EAAE,aAAa,EAC1D,OAAO,EAAE,CAAC,OAAO,EAAE,UAAU,KAAK,OAAO,CAAC,CAAC,CAAC,EAAE,YAAY,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,CAAC,CAAC;CAuDnF"}
@@ -16,9 +16,9 @@ export class AuthoredBudget {
16
16
  throw error;
17
17
  }
18
18
  }
19
- async execute(journal, spec, consume) {
19
+ async execute(journal, spec, consume, admissionKey) {
20
20
  if (this.limit === undefined)
21
- return consume(await journal.runStart(spec));
21
+ return consume(await journal.runStart(spec, undefined, admissionKey));
22
22
  const previous = this.tail;
23
23
  let release;
24
24
  this.tail = new Promise(resolve => { release = resolve; });
@@ -29,14 +29,22 @@ export class AuthoredBudget {
29
29
  // Window selection follows journal timestamps, never the SDK host clock.
30
30
  const day = this.charges.at(-1)?.day;
31
31
  const total = this.charges.filter(c => this.limit.window !== 'day' || c.day === day)
32
- .reduce((s, c) => ({ input: s.input + c.input, output: s.output + c.output, micro: s.micro + c.micro, ms: s.ms + c.ms }), { input: 0n, output: 0n, micro: 0n, ms: 0n });
32
+ .reduce((s, c) => ({ input: s.input + c.input, output: s.output + c.output, micro: s.micro + c.micro, ms: s.ms + c.ms,
33
+ // Sticky, exactly as the kernel's running total is: once any charge
34
+ // in the window was unmetered, the carried dollars are a lower bound.
35
+ unmetered: s.unmetered || c.unmetered }), { input: 0n, output: 0n, micro: 0n, ms: 0n, unmetered: false });
33
36
  const exactNumber = (n) => { if (n > BigInt(Number.MAX_SAFE_INTEGER))
34
37
  throw new Error('budget counter overflow'); return Number(n); };
35
- const outcome = await journal.runStart({ ...spec, budget: { ...this.limit, prior_spend: {
36
- tokens_in: exactNumber(total.input), tokens_out: exactNumber(total.output),
37
- dollars: `${total.micro / 1000000n}.${String(total.micro % 1000000n).padStart(6, '0')}`,
38
- wallclock_ms: exactNumber(total.ms), ...(this.limit.window === 'day' && day !== undefined ? { day } : {}),
39
- } } });
38
+ // One explicit conversion to the shared carried-spend shape, so a new
39
+ // accounting field is added here rather than silently dropped inline.
40
+ const priorSpend = {
41
+ tokens_in: exactNumber(total.input), tokens_out: exactNumber(total.output),
42
+ dollars: `${total.micro / 1000000n}.${String(total.micro % 1000000n).padStart(6, '0')}`,
43
+ wallclock_ms: exactNumber(total.ms),
44
+ ...(this.limit.window === 'day' && day !== undefined ? { day } : {}),
45
+ ...(total.unmetered ? { dollars_unmetered: true } : {}),
46
+ };
47
+ const outcome = await journal.runStart({ ...spec, budget: { ...this.limit, prior_spend: priorSpend } }, undefined, admissionKey);
40
48
  try {
41
49
  if (outcome.completion_reason === 'budget_exceeded')
42
50
  throw new AuthoredFlowExecutionError('step_failed', 'Flow budget exceeded before the next step.', 'budget_exceeded', outcome.run_id);
@@ -61,7 +69,8 @@ export class AuthoredBudget {
61
69
  throw new Error('budget accounting requires microdollar precision');
62
70
  this.charges.push({ input: BigInt(b.tokens_in), output: BigInt(b.tokens_out),
63
71
  micro: BigInt(whole) * 1000000n + BigInt(fraction.slice(0, 6).padEnd(6, '0')),
64
- ms: BigInt(e.payload.spend?.wallclock_ms ?? 0), day: Math.floor(e.at_ms / 86_400_000) });
72
+ ms: BigInt(e.payload.spend?.wallclock_ms ?? 0), day: Math.floor(e.at_ms / 86_400_000),
73
+ unmetered: b.dollars_unmetered === true });
65
74
  }
66
75
  }
67
76
  }
@@ -1 +1 @@
1
- {"version":3,"file":"authored-budget.js","sourceRoot":"","sources":["../src/authored-budget.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"authored-budget.js","sourceRoot":"","sources":["../src/authored-budget.ts"],"names":[],"mappings":"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"}
@@ -1,5 +1,5 @@
1
1
  import type { CompletionReason as ProtocolCompletionReason, RunCompletionReason as ProtocolRunCompletionReason } from './protocol.js';
2
- export type AuthoredFlowExecutionErrorCode = 'helper_provider.mount_required' | 'helper_provider.unsupported' | 'helper_slack.credential_missing' | 'helper_slack.mount_required' | 'budget_syntax_invalid' | 'budget_missing_price' | 'agent_cli_unresolved' | 'agent_parked' | 'llm_cli_unresolved' | 'llm_parked' | 'duplicate_completion' | 'journal_protocol_violation' | 'missing_completion' | 'memory_unreachable' | 'operation_after_completion' | 'operation_callback_failed' | 'step_failed' | 'lease_exceeded' | 'unsupported_completion' | 'unsupported_gate' | 'unsupported_header' | 'unsettled_derived_work' | 'unsupported_promise_lifecycle' | 'unsupported_workspace_permission' | 'unawaited_step' | 'unsupported_verb';
2
+ export type AuthoredFlowExecutionErrorCode = 'helper_provider.mount_required' | 'helper_provider.unsupported' | 'helper_slack.credential_missing' | 'helper_slack.mount_required' | 'budget_syntax_invalid' | 'agent_cli_unresolved' | 'agent_parked' | 'llm_cli_unresolved' | 'llm_parked' | 'duplicate_completion' | 'journal_protocol_violation' | 'missing_completion' | 'memory_unreachable' | 'operation_after_completion' | 'operation_callback_failed' | 'step_failed' | 'lease_exceeded' | 'unsupported_completion' | 'unsupported_gate' | 'unsupported_header' | 'unsettled_derived_work' | 'unsupported_promise_lifecycle' | 'unsupported_workspace_permission' | 'unawaited_step' | 'unsupported_verb';
3
3
  export declare class AuthoredFlowExecutionError extends Error {
4
4
  readonly code: AuthoredFlowExecutionErrorCode;
5
5
  readonly completionReason?: (ProtocolCompletionReason | ProtocolRunCompletionReason) | undefined;
@@ -1 +1 @@
1
- {"version":3,"file":"authored-flow-error.d.ts","sourceRoot":"","sources":["../src/authored-flow-error.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,gBAAgB,IAAI,wBAAwB,EAC5C,mBAAmB,IAAI,2BAA2B,EACnD,MAAM,eAAe,CAAC;AAEvB,MAAM,MAAM,8BAA8B,GACtC,gCAAgC,GAChC,6BAA6B,GAC7B,iCAAiC,GACjC,6BAA6B,GAC7B,uBAAuB,GACvB,sBAAsB,GACtB,sBAAsB,GACtB,cAAc,GACd,oBAAoB,GACpB,YAAY,GACZ,sBAAsB,GACtB,4BAA4B,GAC5B,oBAAoB,GACpB,oBAAoB,GACpB,4BAA4B,GAC5B,2BAA2B,GAC3B,aAAa,GACb,gBAAgB,GAChB,wBAAwB,GACxB,kBAAkB,GAClB,oBAAoB,GACpB,wBAAwB,GACxB,+BAA+B,GAC/B,kCAAkC,GAClC,gBAAgB,GAChB,kBAAkB,CAAC;AAEvB,qBAAa,0BAA2B,SAAQ,KAAK;IAEjD,QAAQ,CAAC,IAAI,EAAE,8BAA8B;IAE7C,QAAQ,CAAC,gBAAgB,CAAC,GAAE,wBAAwB,GAAG,2BAA2B;IAClF,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM;gBAHd,IAAI,EAAE,8BAA8B,EAC7C,OAAO,EAAE,MAAM,EACN,gBAAgB,CAAC,GAAE,wBAAwB,GAAG,2BAA2B,aAAA,EACzE,KAAK,CAAC,EAAE,MAAM,YAAA;CAK1B"}
1
+ {"version":3,"file":"authored-flow-error.d.ts","sourceRoot":"","sources":["../src/authored-flow-error.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,gBAAgB,IAAI,wBAAwB,EAC5C,mBAAmB,IAAI,2BAA2B,EACnD,MAAM,eAAe,CAAC;AAEvB,MAAM,MAAM,8BAA8B,GACtC,gCAAgC,GAChC,6BAA6B,GAC7B,iCAAiC,GACjC,6BAA6B,GAC7B,uBAAuB,GACvB,sBAAsB,GACtB,cAAc,GACd,oBAAoB,GACpB,YAAY,GACZ,sBAAsB,GACtB,4BAA4B,GAC5B,oBAAoB,GACpB,oBAAoB,GACpB,4BAA4B,GAC5B,2BAA2B,GAC3B,aAAa,GACb,gBAAgB,GAChB,wBAAwB,GACxB,kBAAkB,GAClB,oBAAoB,GACpB,wBAAwB,GACxB,+BAA+B,GAC/B,kCAAkC,GAClC,gBAAgB,GAChB,kBAAkB,CAAC;AAEvB,qBAAa,0BAA2B,SAAQ,KAAK;IAEjD,QAAQ,CAAC,IAAI,EAAE,8BAA8B;IAE7C,QAAQ,CAAC,gBAAgB,CAAC,GAAE,wBAAwB,GAAG,2BAA2B;IAClF,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM;gBAHd,IAAI,EAAE,8BAA8B,EAC7C,OAAO,EAAE,MAAM,EACN,gBAAgB,CAAC,GAAE,wBAAwB,GAAG,2BAA2B,aAAA,EACzE,KAAK,CAAC,EAAE,MAAM,YAAA;CAK1B"}
@@ -1 +1 @@
1
- {"version":3,"file":"authored-flow-error.js","sourceRoot":"","sources":["../src/authored-flow-error.ts"],"names":[],"mappings":"AAiCA,MAAM,OAAO,0BAA2B,SAAQ,KAAK;IAExC;IAEA;IACA;IAJX,YACW,IAAoC,EAC7C,OAAe,EACN,gBAAyE,EACzE,KAAc;QAEvB,KAAK,CAAC,GAAG,IAAI,KAAK,OAAO,EAAE,CAAC,CAAC;QALpB,SAAI,GAAJ,IAAI,CAAgC;QAEpC,qBAAgB,GAAhB,gBAAgB,CAAyD;QACzE,UAAK,GAAL,KAAK,CAAS;QAGvB,IAAI,CAAC,IAAI,GAAG,4BAA4B,CAAC;IAC3C,CAAC;CACF"}
1
+ {"version":3,"file":"authored-flow-error.js","sourceRoot":"","sources":["../src/authored-flow-error.ts"],"names":[],"mappings":"AAgCA,MAAM,OAAO,0BAA2B,SAAQ,KAAK;IAExC;IAEA;IACA;IAJX,YACW,IAAoC,EAC7C,OAAe,EACN,gBAAyE,EACzE,KAAc;QAEvB,KAAK,CAAC,GAAG,IAAI,KAAK,OAAO,EAAE,CAAC,CAAC;QALpB,SAAI,GAAJ,IAAI,CAAgC;QAEpC,qBAAgB,GAAhB,gBAAgB,CAAyD;QACzE,UAAK,GAAL,KAAK,CAAS;QAGvB,IAAI,CAAC,IAAI,GAAG,4BAA4B,CAAC;IAC3C,CAAC;CACF"}
@@ -12,7 +12,15 @@ export interface AuthoredFlowJournalStep {
12
12
  readonly runId: string;
13
13
  readonly completionReason: ProtocolCompletionReason;
14
14
  }
15
+ export interface AuthoredExecutionRuntime {
16
+ readonly kind: 'node';
17
+ readonly version: string;
18
+ readonly executableSha256: string;
19
+ readonly payloadSha256: string;
20
+ }
15
21
  export interface AuthoredFlowExecutionResult {
22
+ readonly executionRuntime?: AuthoredExecutionRuntime;
23
+ readonly rootRunId?: string;
16
24
  readonly name: string;
17
25
  readonly completionReason: FlowCompletionReason;
18
26
  readonly journalSteps: readonly AuthoredFlowJournalStep[];
@@ -55,6 +63,8 @@ export interface ExecuteAuthoredFlowOptions {
55
63
  readonly onWait?: RunLifecycleOptions['onWait'];
56
64
  readonly onProgress?: (event: ProgressEvent) => void;
57
65
  readonly localAgentStream?: string;
66
+ /** Durable kernel root that owns this body's child admission identities. */
67
+ readonly rootRunId?: string;
58
68
  }
59
69
  export declare function executeAuthoredFlow<Input = undefined>(handle: FlowHandle, journal: JournalClient, input?: Input, options?: ExecuteAuthoredFlowOptions): Promise<AuthoredFlowExecutionResult>;
60
70
  //# sourceMappingURL=authored-flow-executor.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"authored-flow-executor.d.ts","sourceRoot":"","sources":["../src/authored-flow-executor.ts"],"names":[],"mappings":"AAcA,OAAO,EAML,KAAK,oBAAoB,EAG1B,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EAAmD,KAAK,UAAU,EAAE,MAAM,6BAA6B,CAAC;AAE/G,OAAO,EAAe,KAAK,aAAa,EAAE,MAAM,eAAe,CAAC;AAGhE,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,2BAA2B,CAAC;AACnE,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,cAAc,CAAC;AACxD,OAAO,EACL,0BAA0B,EAC1B,KAAK,8BAA8B,EACpC,MAAM,0BAA0B,CAAC;AAOlC,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACpD,OAAO,KAAK,EACV,gBAAgB,IAAI,wBAAwB,EAE7C,MAAM,eAAe,CAAC;AAoBvB,OAAO,EAAE,0BAA0B,EAAE,KAAK,8BAA8B,EAAE,CAAC;AAE3E,MAAM,WAAW,uBAAuB;IACtC,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,gBAAgB,EAAE,wBAAwB,CAAC;CACrD;AAED,MAAM,WAAW,2BAA2B;IAC1C,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,gBAAgB,EAAE,oBAAoB,CAAC;IAChD,QAAQ,CAAC,YAAY,EAAE,SAAS,uBAAuB,EAAE,CAAC;CAC3D;AASD;;;;;;;;;;GAUG;AACH,MAAM,WAAW,0BAA0B;IACzC;;;;;OAKG;IACH,QAAQ,CAAC,aAAa,CAAC,EAAE,iBAAiB,CAAC;IAC3C,uFAAuF;IACvF,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,CAAC;IAC1B;;;;;;;;;;OAUG;IACH,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAC3B,kFAAkF;IAClF,QAAQ,CAAC,MAAM,CAAC,EAAE,mBAAmB,CAAC,QAAQ,CAAC,CAAC;IAChD,QAAQ,CAAC,MAAM,CAAC,EAAE,mBAAmB,CAAC,QAAQ,CAAC,CAAC;IAChD,QAAQ,CAAC,UAAU,CAAC,EAAE,CAAC,KAAK,EAAE,aAAa,KAAK,IAAI,CAAC;IACrD,QAAQ,CAAC,gBAAgB,CAAC,EAAE,MAAM,CAAC;CACpC;AAED,wBAAsB,mBAAmB,CAAC,KAAK,GAAG,SAAS,EACzD,MAAM,EAAE,UAAU,EAClB,OAAO,EAAE,aAAa,EACtB,KAAK,CAAC,EAAE,KAAK,EACb,OAAO,GAAE,0BAA+B,GACvC,OAAO,CAAC,2BAA2B,CAAC,CAsQtC"}
1
+ {"version":3,"file":"authored-flow-executor.d.ts","sourceRoot":"","sources":["../src/authored-flow-executor.ts"],"names":[],"mappings":"AAeA,OAAO,EAML,KAAK,oBAAoB,EAG1B,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EAAmD,KAAK,UAAU,EAAE,MAAM,6BAA6B,CAAC;AAE/G,OAAO,EAAe,KAAK,aAAa,EAAE,MAAM,eAAe,CAAC;AAGhE,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,2BAA2B,CAAC;AACnE,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,cAAc,CAAC;AACxD,OAAO,EACL,0BAA0B,EAC1B,KAAK,8BAA8B,EACpC,MAAM,0BAA0B,CAAC;AAOlC,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACpD,OAAO,KAAK,EACV,gBAAgB,IAAI,wBAAwB,EAE7C,MAAM,eAAe,CAAC;AAoBvB,OAAO,EAAE,0BAA0B,EAAE,KAAK,8BAA8B,EAAE,CAAC;AAE3E,MAAM,WAAW,uBAAuB;IACtC,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,gBAAgB,EAAE,wBAAwB,CAAC;CACrD;AAED,MAAM,WAAW,wBAAwB;IACvC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,gBAAgB,EAAE,MAAM,CAAC;IAClC,QAAQ,CAAC,aAAa,EAAE,MAAM,CAAC;CAChC;AAED,MAAM,WAAW,2BAA2B;IAC1C,QAAQ,CAAC,gBAAgB,CAAC,EAAE,wBAAwB,CAAC;IACrD,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,gBAAgB,EAAE,oBAAoB,CAAC;IAChD,QAAQ,CAAC,YAAY,EAAE,SAAS,uBAAuB,EAAE,CAAC;CAC3D;AASD;;;;;;;;;;GAUG;AACH,MAAM,WAAW,0BAA0B;IACzC;;;;;OAKG;IACH,QAAQ,CAAC,aAAa,CAAC,EAAE,iBAAiB,CAAC;IAC3C,uFAAuF;IACvF,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,CAAC;IAC1B;;;;;;;;;;OAUG;IACH,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAC3B,kFAAkF;IAClF,QAAQ,CAAC,MAAM,CAAC,EAAE,mBAAmB,CAAC,QAAQ,CAAC,CAAC;IAChD,QAAQ,CAAC,MAAM,CAAC,EAAE,mBAAmB,CAAC,QAAQ,CAAC,CAAC;IAChD,QAAQ,CAAC,UAAU,CAAC,EAAE,CAAC,KAAK,EAAE,aAAa,KAAK,IAAI,CAAC;IACrD,QAAQ,CAAC,gBAAgB,CAAC,EAAE,MAAM,CAAC;IACnC,4EAA4E;IAC5E,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC;CAC7B;AAED,wBAAsB,mBAAmB,CAAC,KAAK,GAAG,SAAS,EACzD,MAAM,EAAE,UAAU,EAClB,OAAO,EAAE,aAAa,EACtB,KAAK,CAAC,EAAE,KAAK,EACb,OAAO,GAAE,0BAA+B,GACvC,OAAO,CAAC,2BAA2B,CAAC,CAmRtC"}
@@ -1,3 +1,4 @@
1
+ import { assertAuthoredPromiseHooks } from './authored-runtime-capability.js';
1
2
  import { pluginHelpers } from './plugin-loader.js';
2
3
  import { runPluginEffect } from './authored-plugin-effect.js';
3
4
  import { randomUUID } from 'node:crypto';
@@ -21,11 +22,17 @@ import { AuthoredFlowOperation, stopAuthoredOperations, verifyAuthoredOperations
21
22
  import { AuthoredFlowLifecycle } from './authored-flow-lifecycle.js';
22
23
  export { AuthoredFlowExecutionError };
23
24
  export async function executeAuthoredFlow(handle, journal, input, options = {}) {
25
+ assertAuthoredPromiseHooks();
24
26
  const getDefinition = options.getDefinition ?? getAuthoredFlowDefinition;
25
27
  const localAgentStream = options.localAgentStream;
26
28
  const onProgress = options.onProgress;
27
29
  const flowPath = options.flowPath ?? join(process.cwd(), 'flow.ts');
28
30
  const waitOptions = {
31
+ // Carried so a failed `f.agent` can name the journal that holds its
32
+ // evidence. Each authored worker call runs as its own kernel run, and
33
+ // without the data dir the diagnostic can name the run id but not where
34
+ // on disk to read it.
35
+ ...(options.dataDir !== undefined ? { dataDir: options.dataDir } : {}),
29
36
  ...(options.signal !== undefined ? { signal: options.signal } : {}),
30
37
  ...(options.onWait !== undefined ? { onWait: options.onWait } : {}),
31
38
  };
@@ -60,8 +67,8 @@ export async function executeAuthoredFlow(handle, journal, input, options = {})
60
67
  const lifecycle = new AuthoredFlowLifecycle();
61
68
  let nextStep = 1;
62
69
  let requestedCompletion;
63
- const lowerDeterministic = authoredDeterministicRunner(definition.name, journal, journalSteps, budget);
64
- const worker = authoredWorkerRunner(definition, journal, flowPath, journalSteps, waitOptions, localAgentStream, budget, definition.header.budget);
70
+ const lowerDeterministic = authoredDeterministicRunner(definition.name, journal, journalSteps, budget, options.rootRunId);
71
+ const worker = authoredWorkerRunner(definition, journal, flowPath, journalSteps, waitOptions, localAgentStream, budget, definition.header.budget, options.rootRunId);
65
72
  function llmOperation(prompt, ...values) {
66
73
  assertOperationAllowed('llm', definition.name, requestedCompletion);
67
74
  const id = `llm-${nextStep++}`;
@@ -82,13 +89,13 @@ export async function executeAuthoredFlow(handle, journal, input, options = {})
82
89
  }, onProgress), lifecycle);
83
90
  return trackStep(authoredSteps, llmOp);
84
91
  }
85
- const slackRun = randomUUID();
92
+ const slackRun = options.rootRunId ?? randomUUID();
86
93
  function slackOperation(call) {
87
94
  assertOperationAllowed(`slack.${call.verb}`, definition.name, requestedCompletion);
88
95
  const snapshot = snapshotJsonValue(call, 'f.slack call');
89
96
  const id = `slack-${slackRun}-${nextStep++}`;
90
97
  return trackStep(authoredSteps, new AuthoredFlowOperation(id, `slack.${call.verb}`, () => assertOperationAllowed(`slack.${call.verb}`, definition.name, requestedCompletion), async () => {
91
- const receipt = await runHelperEffect(journal, definition.name, id, snapshot, options.dataDir ?? dirname(journal.socketPath), journalSteps);
98
+ const receipt = await runHelperEffect(journal, definition.name, id, snapshot, options.dataDir ?? dirname(journal.socketPath), journalSteps, options.rootRunId);
92
99
  return (call.verb === 'react' ? undefined : receipt);
93
100
  }, lifecycle));
94
101
  }
@@ -98,7 +105,7 @@ export async function executeAuthoredFlow(handle, journal, input, options = {})
98
105
  assertOperationAllowed(verb, definition.name, requestedCompletion);
99
106
  const snapshot = snapshotJsonValue(call, `f.${verb} call`);
100
107
  const id = `${call.provider}-${slackRun}-${nextStep++}`;
101
- return trackStep(authoredSteps, new AuthoredFlowOperation(id, verb, () => assertOperationAllowed(verb, definition.name, requestedCompletion), async () => await runHelperEffect(journal, definition.name, id, snapshot, options.dataDir ?? dirname(journal.socketPath), journalSteps), lifecycle));
108
+ return trackStep(authoredSteps, new AuthoredFlowOperation(id, verb, () => assertOperationAllowed(verb, definition.name, requestedCompletion), async () => await runHelperEffect(journal, definition.name, id, snapshot, options.dataDir ?? dirname(journal.socketPath), journalSteps, options.rootRunId), lifecycle));
102
109
  }),
103
110
  slack: {
104
111
  post: (channel, text, opts) => slackOperation({ type: 'effect', provider: 'slack', verb: 'post', params: { channel, text, ...(opts === undefined ? {} : { opts }) } }),
@@ -109,7 +116,7 @@ export async function executeAuthoredFlow(handle, journal, input, options = {})
109
116
  mcp: buildMcpProxy(checkedMcp.inventory, (server, tool, args, known) => {
110
117
  assertOperationAllowed('mcp', definition.name, requestedCompletion);
111
118
  const id = `mcp-${nextStep++}`;
112
- return trackStep(authoredSteps, new AuthoredFlowOperation(id, 'mcp', () => assertOperationAllowed('mcp', definition.name, requestedCompletion), () => runMcpEffect(journal, definition.name, id, server, tool, args, known, checkedMcp.servers[server], journalSteps), lifecycle));
119
+ return trackStep(authoredSteps, new AuthoredFlowOperation(id, 'mcp', () => assertOperationAllowed('mcp', definition.name, requestedCompletion), () => runMcpEffect(journal, definition.name, id, server, tool, args, known, checkedMcp.servers[server], journalSteps, options.rootRunId), lifecycle));
113
120
  }),
114
121
  memory: authoredMemory(scriptMemoryScope(flowPath, definition.name), () => assertOperationAllowed('memory', definition.name, requestedCompletion), definition.header.memory?.script !== false),
115
122
  run(command, runOptions) {
@@ -156,7 +163,7 @@ export async function executeAuthoredFlow(handle, journal, input, options = {})
156
163
  const label = `${verb.namespace}.${verb.method}`;
157
164
  assertOperationAllowed(label, definition.name, requestedCompletion);
158
165
  const id = `plugin-${nextStep++}`;
159
- return trackStep(authoredSteps, new AuthoredFlowOperation(id, label, () => assertOperationAllowed(label, definition.name, requestedCompletion), () => runPluginEffect(journal, definition.name, id, plugin, verb, args, journalSteps, budget), lifecycle));
166
+ return trackStep(authoredSteps, new AuthoredFlowOperation(id, label, () => assertOperationAllowed(label, definition.name, requestedCompletion), () => runPluginEffect(journal, definition.name, id, plugin, verb, args, journalSteps, budget, options.rootRunId), lifecycle));
160
167
  }));
161
168
  let bodyFailed = false;
162
169
  let bodyFailure;
@@ -213,6 +220,7 @@ export async function executeAuthoredFlow(handle, journal, input, options = {})
213
220
  await lowerDeterministic(`complete-${nextStep}`, requestedCompletion === 'needs_human'
214
221
  ? `printf '%s' '{"completionReason":"needs_human"}'` : ':', true);
215
222
  return Object.freeze({
223
+ ...(options.rootRunId === undefined ? {} : { rootRunId: options.rootRunId }),
216
224
  name: definition.name,
217
225
  completionReason: requestedCompletion,
218
226
  journalSteps: Object.freeze([...journalSteps]),
@@ -1 +1 @@
1
- {"version":3,"file":"authored-flow-executor.js","sourceRoot":"","sources":["../src/authored-flow-executor.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"authored-flow-executor.js","sourceRoot":"","sources":["../src/authored-flow-executor.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,0BAA0B,EAAE,MAAM,kCAAkC,CAAC;AAC9E,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AACnD,OAAO,EAAE,eAAe,EAAE,MAAM,6BAA6B,CAAC;AAC9D,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACzC,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,eAAe,EAAE,MAAM,6BAA6B,CAAC;AAC9D,OAAO,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AACzD,OAAO,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAC;AAEpD,OAAO,EAAE,cAAc,EAAE,iBAAiB,EAAE,MAAM,2BAA2B,CAAC;AAC9E,OAAO,EAAE,aAAa,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAChE,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AACtD,OAAO,EAAE,qBAAqB,EAAE,cAAc,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AAChG,OAAO,EAAE,2BAA2B,EAAE,oBAAoB,EAAE,MAAM,2BAA2B,CAAC;AAC9F,OAAO,EAAE,4BAA4B,EAAE,MAAM,2BAA2B,CAAC;AAWzE,OAAO,EAAE,aAAa,EAAE,eAAe,EAAoC,MAAM,6BAA6B,CAAC;AAC/G,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,WAAW,EAAsB,MAAM,eAAe,CAAC;AAChE,OAAO,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAC;AAChD,OAAO,EAAE,yBAAyB,EAAE,MAAM,oBAAoB,CAAC;AAG/D,OAAO,EACL,0BAA0B,GAE3B,MAAM,0BAA0B,CAAC;AAClC,OAAO,EACL,qBAAqB,EACrB,sBAAsB,EACtB,wBAAwB,GACzB,MAAM,8BAA8B,CAAC;AACtC,OAAO,EAAE,qBAAqB,EAAE,MAAM,8BAA8B,CAAC;AAyBrE,OAAO,EAAE,0BAA0B,EAAuC,CAAC;AAwE3E,MAAM,CAAC,KAAK,UAAU,mBAAmB,CACvC,MAAkB,EAClB,OAAsB,EACtB,KAAa,EACb,UAAsC,EAAE;IAExC,0BAA0B,EAAE,CAAC;IAC7B,MAAM,aAAa,GAAG,OAAO,CAAC,aAAa,IAAI,yBAAyB,CAAC;IACzE,MAAM,gBAAgB,GAAG,OAAO,CAAC,gBAAgB,CAAC;IAClD,MAAM,UAAU,GAAG,OAAO,CAAC,UAAU,CAAC;IACtC,MAAM,QAAQ,GAAG,OAAO,CAAC,QAAQ,IAAI,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,SAAS,CAAC,CAAC;IACpE,MAAM,WAAW,GAAwB;QACvC,oEAAoE;QACpE,sEAAsE;QACtE,wEAAwE;QACxE,sBAAsB;QACtB,GAAG,CAAC,OAAO,CAAC,OAAO,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,OAAO,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QACtE,GAAG,CAAC,OAAO,CAAC,MAAM,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QACnE,GAAG,CAAC,OAAO,CAAC,MAAM,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;KACpE,CAAC;IACF,MAAM,UAAU,GAAG,aAAa,CAAQ,MAAM,CAAC,CAAC;IAChD,MAAM,YAAY,GAAG,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,OAAO,IAAI,GAAG,KAAK,QAAQ,IAAI,GAAG,KAAK,QAAQ,CAAC,CAAC;IAC3H,IAAI,UAAU,CAAC,MAAM,CAAC,KAAK,IAAI,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK,EAAE,GAAG,eAAe,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;QAAE,YAAY,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IAC9K,IAAI,UAAU,CAAC,MAAM,CAAC,KAAK,EAAE,SAAS,KAAK,SAAS;QAAE,YAAY,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC;IAC3F,MAAM,eAAe,GAAG,iBAAiB,CAAC,UAAU,CAAC,CAAC;IACtD,IAAI,CAAC,eAAe,CAAC,EAAE,EAAE,CAAC;QACxB,MAAM,UAAU,GAAG,eAAe,CAAC,WAAW,CAAC,CAAC,CAAE,CAAC;QACnD,MAAM,IAAI,0BAA0B,CAAC,UAAU,CAAC,IAAsC,EAAE,UAAU,CAAC,OAAO,CAAC,CAAC;IAC9G,CAAC;IACD,IAAI,YAAY,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC5B,MAAM,IAAI,0BAA0B,CAClC,oBAAoB,EACpB,SAAS,UAAU,CAAC,IAAI,qCAAqC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CACvF,CAAC;IACJ,CAAC;IAED,MAAM,UAAU,GAAG,MAAM,cAAc,CAAC,UAAU,EAAE,QAAQ,CAAC,CAAC;IAC9D,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,EAAE;QAAE,MAAM,IAAI,iBAAiB,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC;IAE1E,MAAM,MAAM,GAAG,IAAI,cAAc,CAAC,UAAU,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;IAC5D,IAAI,UAAU,CAAC,MAAM,CAAC,MAAM,EAAE,KAAK,KAAK,IAAI,EAAE,CAAC;QAC7C,MAAM,IAAI,0BAA0B,CAAC,oBAAoB,EAAE,0EAA0E,CAAC,CAAC;IACzI,CAAC;IACD,4EAA4E;IAC5E,qEAAqE;IACrE,IAAI,UAAU,CAAC,MAAM,CAAC,MAAM,KAAK,SAAS,IAAI,YAAY,CAAC,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC;QACzF,MAAM,qBAAqB,EAAE,CAAC;IAChC,CAAC;IAED,MAAM,YAAY,GAA8B,EAAE,CAAC;IACnD,MAAM,aAAa,GAAqC,EAAE,CAAC;IAC3D,MAAM,SAAS,GAAG,IAAI,qBAAqB,EAAE,CAAC;IAC9C,IAAI,QAAQ,GAAG,CAAC,CAAC;IACjB,IAAI,mBAAqD,CAAC;IAE1D,MAAM,kBAAkB,GAAG,2BAA2B,CACpD,UAAU,CAAC,IAAI,EAAE,OAAO,EAAE,YAAY,EAAE,MAAM,EAAE,OAAO,CAAC,SAAS,CAClE,CAAC;IAEF,MAAM,MAAM,GAAG,oBAAoB,CACjC,UAAU,EAAE,OAAO,EAAE,QAAQ,EAAE,YAAY,EAAE,WAAW,EACxD,gBAAgB,EAAE,MAAM,EAAE,UAAU,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,SAAS,CACtE,CAAC;IAIF,SAAS,YAAY,CAAC,MAAqC,EAAE,GAAG,MAAiB;QAC/E,sBAAsB,CAAC,KAAK,EAAE,UAAU,CAAC,IAAI,EAAE,mBAAmB,CAAC,CAAC;QACpE,MAAM,EAAE,GAAG,OAAO,QAAQ,EAAE,EAAE,CAAC;QAC/B,kEAAkE;QAClE,qEAAqE;QACrE,oEAAoE;QACpE,IAAI,KAAsC,CAAC;QAC3C,KAAK,GAAG,IAAI,qBAAqB,CAC/B,EAAE,EAAE,KAAK,EACT,GAAG,EAAE,CAAC,sBAAsB,CAAC,KAAK,EAAE,UAAU,CAAC,IAAI,EAAE,mBAAmB,CAAC,EACzE,GAAG,EAAE,CAAC,WAAW,CAAC,EAAE,EAAE,KAAK,EAAE,GAAG,EAAE;YAChC,IAAI,OAAO,MAAM,KAAK,QAAQ,EAAE,CAAC;gBAC/B,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,IAAI,MAAM,CAAC,CAAC,CAAC,KAAK,SAAS,EAAE,CAAC;oBACnD,MAAM,IAAI,0BAA0B,CAAC,oBAAoB,EAAE,wDAAwD,CAAC,CAAC;gBACvH,CAAC;gBACD,OAAO,MAAM,CAAC,GAAG,CAAC,EAAE,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC,CAAe,EAAE,KAAK,CAAC,SAAS,CAAC,CAAC;YAC1E,CAAC;YACD,MAAM,IAAI,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC,MAAM,GAAG,IAAI;kBAC7D,CAAC,KAAK,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC;YAC9D,OAAO,MAAM,CAAC,GAAG,CAAC,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,KAAK,CAAC,SAAS,CAAC,CAAC;QAC1D,CAAC,EAAE,UAAU,CAAC,EACd,SAAS,CACV,CAAC;QACF,OAAO,SAAS,CAAC,aAAa,EAAE,KAAK,CAAC,CAAC;IACzC,CAAC;IAED,MAAM,QAAQ,GAAG,OAAO,CAAC,SAAS,IAAI,UAAU,EAAE,CAAC;IACnD,SAAS,cAAc,CAAI,IAAe;QACxC,sBAAsB,CAAC,SAAS,IAAI,CAAC,IAAI,EAAE,EAAE,UAAU,CAAC,IAAI,EAAE,mBAAmB,CAAC,CAAC;QACnF,MAAM,QAAQ,GAAG,iBAAiB,CAAC,IAAI,EAAE,cAAc,CAAyB,CAAC;QACjF,MAAM,EAAE,GAAG,SAAS,QAAQ,IAAI,QAAQ,EAAE,EAAE,CAAC;QAC7C,OAAO,SAAS,CAAC,aAAa,EAAE,IAAI,qBAAqB,CACvD,EAAE,EAAE,SAAS,IAAI,CAAC,IAAI,EAAE,EACxB,GAAG,EAAE,CAAC,sBAAsB,CAAC,SAAS,IAAI,CAAC,IAAI,EAAE,EAAE,UAAU,CAAC,IAAI,EAAE,mBAAmB,CAAC,EACxF,KAAK,IAAI,EAAE;YACT,MAAM,OAAO,GAAG,MAAM,eAAe,CAAC,OAAO,EAAE,UAAU,CAAC,IAAI,EAAE,EAAE,EAAE,QAAQ,EAC1E,OAAO,CAAC,OAAO,IAAI,OAAO,CAAC,OAAO,CAAC,UAAU,CAAC,EAAE,YAAY,EAAE,OAAO,CAAC,SAAS,CAAC,CAAC;YACnF,OAAO,CAAC,IAAI,CAAC,IAAI,KAAK,OAAO,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,OAAO,CAAM,CAAC;QAC5D,CAAC,EACD,SAAS,CACV,CAAC,CAAC;IACL,CAAC;IAED,MAAM,OAAO,GAAQ;QACnB,GAAG,aAAa,CAAC,CAAI,IAAgB,EAAW,EAAE;YAChD,MAAM,IAAI,GAAG,GAAG,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC;YAC7C,sBAAsB,CAAC,IAAI,EAAE,UAAU,CAAC,IAAI,EAAE,mBAAmB,CAAC,CAAC;YACnE,MAAM,QAAQ,GAAG,iBAAiB,CAAC,IAAI,EAAE,KAAK,IAAI,OAAO,CAA0B,CAAC;YACpF,MAAM,EAAE,GAAG,GAAG,IAAI,CAAC,QAAQ,IAAI,QAAQ,IAAI,QAAQ,EAAE,EAAE,CAAC;YACxD,OAAO,SAAS,CAAC,aAAa,EAAE,IAAI,qBAAqB,CAAI,EAAE,EAAE,IAAI,EACnE,GAAG,EAAE,CAAC,sBAAsB,CAAC,IAAI,EAAE,UAAU,CAAC,IAAI,EAAE,mBAAmB,CAAC,EACxE,KAAK,IAAI,EAAE,CAAC,MAAM,eAAe,CAAC,OAAO,EAAE,UAAU,CAAC,IAAI,EAAE,EAAE,EAAE,QAAQ,EACtE,OAAO,CAAC,OAAO,IAAI,OAAO,CAAC,OAAO,CAAC,UAAU,CAAC,EAAE,YAAY,EAAE,OAAO,CAAC,SAAS,CAAM,EACvF,SAAS,CAAC,CAAC,CAAC;QAChB,CAAC,CAAC;QACF,KAAK,EAAE;YACL,IAAI,EAAE,CAAC,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,EAAE,CAAC,cAAc,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,QAAQ,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,GAAG,CAAC,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,EAAE,CAAC;YACtK,EAAE,EAAE,CAAC,IAAI,EAAE,IAAI,EAAE,EAAE,CAAC,cAAc,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,QAAQ,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,EAAE,CAAC;YAC7G,KAAK,EAAE,CAAC,OAAO,EAAE,QAAQ,EAAE,IAAI,EAAE,EAAE,CAAC,cAAc,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,QAAQ,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,EAAE,EAAE,OAAO,EAAE,QAAQ,EAAE,IAAI,EAAE,EAAE,CAAC;YAC7I,KAAK,EAAE,CAAC,OAAO,EAAE,SAAS,EAAE,KAAK,EAAE,EAAE,CAAC,cAAc,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,QAAQ,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,EAAE,EAAE,OAAO,EAAE,SAAS,EAAE,KAAK,EAAE,EAAE,CAAC;SAClJ;QACD,GAAG,EAAE,aAAa,CAAC,UAAU,CAAC,SAAS,EAAE,CAAC,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,EAAE;YACrE,sBAAsB,CAAC,KAAK,EAAE,UAAU,CAAC,IAAI,EAAE,mBAAmB,CAAC,CAAC;YACpE,MAAM,EAAE,GAAG,OAAO,QAAQ,EAAE,EAAE,CAAC;YAC/B,OAAO,SAAS,CAAC,aAAa,EAAE,IAAI,qBAAqB,CACvD,EAAE,EAAE,KAAK,EACT,GAAG,EAAE,CAAC,sBAAsB,CAAC,KAAK,EAAE,UAAU,CAAC,IAAI,EAAE,mBAAmB,CAAC,EACzE,GAAG,EAAE,CAAC,YAAY,CAAC,OAAO,EAAE,UAAU,CAAC,IAAI,EAAE,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,EACjE,KAAK,EAAE,UAAU,CAAC,OAAO,CAAC,MAAM,CAAE,EAAE,YAAY,EAAE,OAAO,CAAC,SAAS,CAAC,EACtE,SAAS,CACV,CAAC,CAAC;QACL,CAAC,CAAC;QACF,MAAM,EAAE,cAAc,CACpB,iBAAiB,CAAC,QAAQ,EAAE,UAAU,CAAC,IAAI,CAAC,EAC5C,GAAG,EAAE,CAAC,sBAAsB,CAAC,QAAQ,EAAE,UAAU,CAAC,IAAI,EAAE,mBAAmB,CAAC,EAC5E,UAAU,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,KAAK,KAAK,CAC3C;QACD,GAAG,CAAC,OAAO,EAAE,UAAU;YACrB,sBAAsB,CAAC,KAAK,EAAE,UAAU,CAAC,IAAI,EAAE,mBAAmB,CAAC,CAAC;YACpE,MAAM,OAAO,GAAG,UAAU,EAAE,OAAO,KAAK,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,gBAAgB,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC;YACrG,MAAM,EAAE,GAAG,OAAO,QAAQ,EAAE,EAAE,CAAC;YAC/B,IAAI,KAAqC,CAAC;YAC1C,KAAK,GAAG,IAAI,qBAAqB,CAC/B,EAAE,EACF,KAAK,EACL,GAAG,EAAE,CAAC,sBAAsB,CAAC,KAAK,EAAE,UAAU,CAAC,IAAI,EAAE,mBAAmB,CAAC,EACzE,GAAG,EAAE,CAAC,WAAW,CAAC,EAAE,EAAE,eAAe,EAAE,GAAG,EAAE,CAAC,kBAAkB,CAAC,EAAE,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,CAAC,SAAS,CAAC,EAAE,OAAO,CAAC,UAAU,CAAC,EAClI,SAAS,CACV,CAAC;YACF,OAAO,SAAS,CAAC,aAAa,EAAE,KAAK,CAAC,CAAC;QACzC,CAAC;QACD,GAAG,EAAE,YAAY;QACjB,KAAK,CAAC,IAAI,EAAE,OAAO;YACjB,sBAAsB,CAAC,OAAO,EAAE,UAAU,CAAC,IAAI,EAAE,mBAAmB,CAAC,CAAC;YACtE,KAAK,IAAI,CAAC,CAAC,6DAA6D;YACxE,MAAM,EAAE,GAAG,SAAS,QAAQ,EAAE,EAAE,CAAC;YACjC,IAAI,OAA4C,CAAC;YACjD,OAAO,GAAG,IAAI,qBAAqB,CACjC,EAAE,EACF,OAAO,EACP,GAAG,EAAE,CAAC,sBAAsB,CAAC,OAAO,EAAE,UAAU,CAAC,IAAI,EAAE,mBAAmB,CAAC,EAC3E,GAAG,EAAE,CAAC,WAAW,CAAC,EAAE,EAAE,OAAO,EAAE,GAAG,EAAE,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,EAAE,OAAO,EAAE,OAAO,CAAC,SAAS,CAAC,EAAE,UAAU,CAAC,EAC9F,SAAS,CACV,CAAC;YACF,OAAO,SAAS,CAAC,aAAa,EAAE,OAAO,CAAC,CAAC;QAC3C,CAAC;QACD,KAAK;YACH,sBAAsB,CAAC,OAAO,EAAE,UAAU,CAAC,IAAI,EAAE,mBAAmB,CAAC,CAAC;YACtE,MAAM,eAAe,CAAC,OAAO,CAAC,CAAC;QACjC,CAAC;QACD,QAAQ;YACN,sBAAsB,CAAC,UAAU,EAAE,UAAU,CAAC,IAAI,EAAE,mBAAmB,CAAC,CAAC;YACzE,MAAM,eAAe,CAAC,UAAU,CAAC,CAAC;QACpC,CAAC;QACD,IAAI,CAAC,MAAM;YACT,IAAI,MAAM,KAAK,aAAa,IAAI,CAAC,4BAA4B,CAAC,MAAM,CAAC,EAAE,CAAC;gBACtE,MAAM,IAAI,0BAA0B,CAClC,wBAAwB,EACxB,8BAA8B,MAAM,CAAC,MAAM,CAAC,EAAE,CAC/C,CAAC;YACJ,CAAC;YACD,IAAI,mBAAmB,KAAK,SAAS,EAAE,CAAC;gBACtC,MAAM,IAAI,0BAA0B,CAClC,sBAAsB,EACtB,SAAS,UAAU,CAAC,IAAI,gCAAgC,CACzD,CAAC;YACJ,CAAC;YACD,IAAI,MAAM,KAAK,SAAS,IAAI,MAAM,KAAK,aAAa,EAAE,CAAC;gBACrD,MAAM,IAAI,0BAA0B,CAClC,wBAAwB,EACxB,oDAAoD,MAAM,IAAI,EAC9D,MAAM,CACP,CAAC;YACJ,CAAC;YACD,SAAS,CAAC,cAAc,EAAE,CAAC;YAC3B,mBAAmB,GAAG,MAAM,CAAC;QAC/B,CAAC;QACD,KAAK,EAAE,gBAAgB,CACrB,GAAG,EAAE,CAAC,sBAAsB,CAAC,OAAO,EAAE,UAAU,CAAC,IAAI,EAAE,mBAAmB,CAAC,CAC5E;KACF,CAAC;IAEF,MAAM,CAAC,MAAM,CAAC,OAAO,EAAE,aAAa,CAAC,UAAU,CAAC,OAAO,IAAI,EAAE,EAAE,CAAC,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,EAAE;QACpF,MAAM,KAAK,GAAG,GAAG,IAAI,CAAC,SAAS,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC;QACjD,sBAAsB,CAAC,KAAK,EAAE,UAAU,CAAC,IAAI,EAAE,mBAAmB,CAAC,CAAC;QACpE,MAAM,EAAE,GAAG,UAAU,QAAQ,EAAE,EAAE,CAAC;QAClC,OAAO,SAAS,CAAC,aAAa,EAAE,IAAI,qBAAqB,CACvD,EAAE,EAAE,KAAK,EAAE,GAAG,EAAE,CAAC,sBAAsB,CAAC,KAAK,EAAE,UAAU,CAAC,IAAI,EAAE,mBAAmB,CAAC,EACpF,GAAG,EAAE,CAAC,eAAe,CAAC,OAAO,EAAE,UAAU,CAAC,IAAI,EAAE,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,EACpE,YAAY,EAAE,MAAM,EAAE,OAAO,CAAC,SAAS,CAAC,EAC1C,SAAS,CACV,CAAC,CAAC;IACL,CAAC,CAAC,CAAC,CAAC;IAEJ,IAAI,UAAU,GAAG,KAAK,CAAC;IACvB,IAAI,WAAoB,CAAC;IACzB,IAAI,CAAC;QACH,MAAM,WAAW,GAAG,SAAS,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,OAAO,EAAE,KAAc,CAAC,CAAC,CAAC;QACtF,MAAM,WAAW,CAAC;IACpB,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,UAAU,GAAG,IAAI,CAAC;QAClB,WAAW,GAAG,KAAK,CAAC;IACtB,CAAC;IACD,IAAI,UAAU,EAAE,CAAC;QACf,IAAI,CAAC;YACH,MAAM,sBAAsB,CAAC,aAAa,EAAE,WAAW,CAAC,CAAC;QAC3D,CAAC;gBAAS,CAAC;YACT,SAAS,CAAC,KAAK,EAAE,CAAC;QACpB,CAAC;QACD,MAAM,WAAW,CAAC;IACpB,CAAC;IACD,uEAAuE;IACvE,sEAAsE;IACtE,2EAA2E;IAC3E,uEAAuE;IACvE,yEAAyE;IACzE,wEAAwE;IACxE,wEAAwE;IACxE,wDAAwD;IACxD,EAAE;IACF,4EAA4E;IAC5E,uEAAuE;IACvE,sEAAsE;IACtE,4EAA4E;IAC5E,qBAAqB;IACrB,IAAI,mBAAmB,KAAK,SAAS,EAAE,CAAC;QACtC,MAAM,iBAAiB,GAAG,IAAI,0BAA0B,CACtD,oBAAoB,EACpB,SAAS,UAAU,CAAC,IAAI,2BAA2B,CACpD,CAAC;QACF,IAAI,CAAC;YACH,MAAM,sBAAsB,CAAC,aAAa,EAAE,iBAAiB,CAAC,CAAC;QACjE,CAAC;gBAAS,CAAC;YACT,SAAS,CAAC,KAAK,EAAE,CAAC;QACpB,CAAC;QACD,MAAM,iBAAiB,CAAC;IAC1B,CAAC;IACD,IAAI,CAAC;QACH,MAAM,wBAAwB,CAAC,UAAU,CAAC,IAAI,EAAE,aAAa,EAAE,SAAS,CAAC,CAAC;IAC5E,CAAC;YAAS,CAAC;QACT,SAAS,CAAC,KAAK,EAAE,CAAC;IACpB,CAAC;IAED,uEAAuE;IACvE,6EAA6E;IAC7E,yEAAyE;IACzE,MAAM,kBAAkB,CAAC,YAAY,QAAQ,EAAE,EAAE,mBAAmB,KAAK,aAAa;QACpF,CAAC,CAAC,kDAAkD,CAAC,CAAC,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;IACpE,OAAO,MAAM,CAAC,MAAM,CAAC;QACnB,GAAG,CAAC,OAAO,CAAC,SAAS,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,SAAS,EAAE,OAAO,CAAC,SAAS,EAAE,CAAC;QAC5E,IAAI,EAAE,UAAU,CAAC,IAAI;QACrB,gBAAgB,EAAE,mBAAmB;QACrC,YAAY,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC,GAAG,YAAY,CAAC,CAAC;KAC/C,CAAC,CAAC;AACL,CAAC;AAED,SAAS,SAAS,CAChB,OAAyC,EACzC,SAAmC;IAEnC,OAAO,CAAC,IAAI,CAAC,SAA2C,CAAC,CAAC;IAC1D,OAAO,SAAS,CAAC,IAAI,CAAC;AACxB,CAAC;AAED,SAAS,eAAe,CAAC,IAAY;IACnC,OAAO,IAAI,0BAA0B,CACnC,kBAAkB,EAClB,kDAAkD,IAAI,EAAE,CACzD,CAAC;AACJ,CAAC;AAED,SAAS,sBAAsB,CAC7B,IAAY,EACZ,QAAgB,EAChB,UAA4C;IAE5C,IAAI,UAAU,KAAK,SAAS,EAAE,CAAC;QAC7B,MAAM,IAAI,0BAA0B,CAClC,4BAA4B,EAC5B,SAAS,QAAQ,cAAc,IAAI,eAAe,EAClD,UAAU,KAAK,aAAa,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,UAAU,CACtD,CAAC;IACJ,CAAC;AACH,CAAC;AAED,SAAS,gBAAgB,CAAC,UAAsB;IAC9C,OAAO,IAAI,KAAK,CAAC,EAAE,EAAE;QACnB,GAAG;YACD,UAAU,EAAE,CAAC;YACb,MAAM,eAAe,CAAC,OAAO,CAAC,CAAC;QACjC,CAAC;KACF,CAAgB,CAAC;AACpB,CAAC"}
@@ -5,7 +5,14 @@ export declare class AuthoredFlowLoadError extends Error {
5
5
  }
6
6
  /** Same signature as `getAuthoredFlowDefinition`, resolved from wherever a flow was loaded. */
7
7
  export type GetFlowDefinition = <Input = unknown>(handle: FlowHandle) => AuthoredFlowDefinition<Input>;
8
+ export interface SurfaceModuleAuthority {
9
+ readonly packageName: '@relayflows/surface';
10
+ readonly version: string;
11
+ readonly packageSha256: string;
12
+ readonly runtimeSha256: string;
13
+ }
8
14
  export interface LoadedAuthoredFlow {
15
+ readonly sourcePath: string;
9
16
  readonly handle: FlowHandle;
10
17
  /**
11
18
  * Bound to the SAME `@relayflows/surface` module instance the flow file
@@ -15,6 +22,8 @@ export interface LoadedAuthoredFlow {
15
22
  * `getAuthoredFlowDefinition` import.
16
23
  */
17
24
  readonly getDefinition: GetFlowDefinition;
25
+ /** Exact Surface package/runtime that owns the handle's WeakMap identity. */
26
+ readonly surfaceAuthority: SurfaceModuleAuthority;
18
27
  /** Dependency-first load order, each canonical absolute path appearing once. */
19
28
  readonly graph: readonly LoadedAuthoredFlowNode[];
20
29
  }
@@ -22,9 +31,20 @@ export interface LoadedAuthoredFlowNode {
22
31
  readonly path: string;
23
32
  readonly handle: FlowHandle;
24
33
  readonly getDefinition: GetFlowDefinition;
34
+ readonly surfaceAuthority: SurfaceModuleAuthority;
25
35
  readonly use: readonly string[];
26
36
  }
27
37
  /** Import and validate a direct-run module without executing its authored body. */
28
38
  export declare function loadAuthoredFlow(path: string): Promise<LoadedAuthoredFlow>;
39
+ /**
40
+ * Hash the exact installed Surface package payload, including path boundaries.
41
+ *
42
+ * npm may materialize a package-local node_modules tree for workspace and
43
+ * file: dependencies. That tree is installation state, not part of the
44
+ * published Surface package, and can contain platform-specific .bin symlinks.
45
+ * Keep it outside the authority boundary while pinning every package payload
46
+ * file, including the runtime module hashed separately by the caller.
47
+ */
48
+ export declare function packageTreeSha256(root: string): Promise<string>;
29
49
  export { getAuthoredFlowDefinition };
30
50
  //# sourceMappingURL=authored-flow-loader.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"authored-flow-loader.d.ts","sourceRoot":"","sources":["../src/authored-flow-loader.ts"],"names":[],"mappings":"AAIA,OAAO,EACL,yBAAyB,EACzB,KAAK,sBAAsB,EAC3B,KAAK,UAAU,EAChB,MAAM,oBAAoB,CAAC;AAE5B,qBAAa,qBAAsB,SAAQ,KAAK;IACjB,QAAQ,CAAC,IAAI,EAAE,cAAc,GAAG,eAAe,GAAG,aAAa,GAAG,WAAW;gBAA9F,OAAO,EAAE,MAAM,EAAW,IAAI,GAAE,cAAc,GAAG,eAAe,GAAG,aAAa,GAAG,WAA4B;CAI5H;AAED,+FAA+F;AAC/F,MAAM,MAAM,iBAAiB,GAAG,CAAC,KAAK,GAAG,OAAO,EAAE,MAAM,EAAE,UAAU,KAAK,sBAAsB,CAAC,KAAK,CAAC,CAAC;AAEvG,MAAM,WAAW,kBAAkB;IACjC,QAAQ,CAAC,MAAM,EAAE,UAAU,CAAC;IAC5B;;;;;;OAMG;IACH,QAAQ,CAAC,aAAa,EAAE,iBAAiB,CAAC;IAC1C,gFAAgF;IAChF,QAAQ,CAAC,KAAK,EAAE,SAAS,sBAAsB,EAAE,CAAC;CACnD;AAED,MAAM,WAAW,sBAAsB;IACrC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,MAAM,EAAE,UAAU,CAAC;IAC5B,QAAQ,CAAC,aAAa,EAAE,iBAAiB,CAAC;IAC1C,QAAQ,CAAC,GAAG,EAAE,SAAS,MAAM,EAAE,CAAC;CACjC;AAED,mFAAmF;AACnF,wBAAsB,gBAAgB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,kBAAkB,CAAC,CA8ChF;AAiFD,OAAO,EAAE,yBAAyB,EAAE,CAAC"}
1
+ {"version":3,"file":"authored-flow-loader.d.ts","sourceRoot":"","sources":["../src/authored-flow-loader.ts"],"names":[],"mappings":"AAMA,OAAO,EACL,yBAAyB,EACzB,KAAK,sBAAsB,EAC3B,KAAK,UAAU,EAChB,MAAM,oBAAoB,CAAC;AAE5B,qBAAa,qBAAsB,SAAQ,KAAK;IACjB,QAAQ,CAAC,IAAI,EAAE,cAAc,GAAG,eAAe,GAAG,aAAa,GAAG,WAAW;gBAA9F,OAAO,EAAE,MAAM,EAAW,IAAI,GAAE,cAAc,GAAG,eAAe,GAAG,aAAa,GAAG,WAA4B;CAI5H;AAED,+FAA+F;AAC/F,MAAM,MAAM,iBAAiB,GAAG,CAAC,KAAK,GAAG,OAAO,EAAE,MAAM,EAAE,UAAU,KAAK,sBAAsB,CAAC,KAAK,CAAC,CAAC;AAEvG,MAAM,WAAW,sBAAsB;IACrC,QAAQ,CAAC,WAAW,EAAE,qBAAqB,CAAC;IAC5C,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,aAAa,EAAE,MAAM,CAAC;IAC/B,QAAQ,CAAC,aAAa,EAAE,MAAM,CAAC;CAChC;AAED,MAAM,WAAW,kBAAkB;IACjC,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,MAAM,EAAE,UAAU,CAAC;IAC5B;;;;;;OAMG;IACH,QAAQ,CAAC,aAAa,EAAE,iBAAiB,CAAC;IAC1C,6EAA6E;IAC7E,QAAQ,CAAC,gBAAgB,EAAE,sBAAsB,CAAC;IAClD,gFAAgF;IAChF,QAAQ,CAAC,KAAK,EAAE,SAAS,sBAAsB,EAAE,CAAC;CACnD;AAED,MAAM,WAAW,sBAAsB;IACrC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,MAAM,EAAE,UAAU,CAAC;IAC5B,QAAQ,CAAC,aAAa,EAAE,iBAAiB,CAAC;IAC1C,QAAQ,CAAC,gBAAgB,EAAE,sBAAsB,CAAC;IAClD,QAAQ,CAAC,GAAG,EAAE,SAAS,MAAM,EAAE,CAAC;CACjC;AAED,mFAAmF;AACnF,wBAAsB,gBAAgB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,kBAAkB,CAAC,CA+ChF;AAiHD;;;;;;;;GAQG;AACH,wBAAsB,iBAAiB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAuBrE;AAKD,OAAO,EAAE,yBAAyB,EAAE,CAAC"}
@@ -1,6 +1,8 @@
1
- import { accessSync, constants, realpathSync } from 'node:fs';
1
+ import { accessSync, constants, existsSync, realpathSync } from 'node:fs';
2
+ import { readFile, readdir } from 'node:fs/promises';
3
+ import { createHash } from 'node:crypto';
2
4
  import { createRequire } from 'node:module';
3
- import { dirname, resolve } from 'node:path';
5
+ import { dirname, join, relative, resolve, sep } from 'node:path';
4
6
  import { pathToFileURL } from 'node:url';
5
7
  import { getAuthoredFlowDefinition, } from './authored-flow.js';
6
8
  export class AuthoredFlowLoadError extends Error {
@@ -32,7 +34,7 @@ export async function loadAuthoredFlow(path) {
32
34
  return cached;
33
35
  visiting.add(absolutePath);
34
36
  try {
35
- const { handle, getDefinition } = await importAuthoredFlow(absolutePath);
37
+ const { handle, getDefinition, surfaceAuthority } = await importAuthoredFlow(absolutePath);
36
38
  const dependencies = [];
37
39
  for (const entry of getDefinition(handle).header.use ?? []) {
38
40
  // Validate again at the SDK boundary: the author's surface package may
@@ -46,7 +48,7 @@ export async function loadAuthoredFlow(path) {
46
48
  }
47
49
  dependencies.push(child.path);
48
50
  }
49
- const node = Object.freeze({ path: absolutePath, handle, getDefinition, use: Object.freeze(dependencies) });
51
+ const node = Object.freeze({ path: absolutePath, handle, getDefinition, surfaceAuthority, use: Object.freeze(dependencies) });
50
52
  loaded.set(absolutePath, node);
51
53
  return node;
52
54
  }
@@ -61,7 +63,8 @@ export async function loadAuthoredFlow(path) {
61
63
  }
62
64
  }
63
65
  const root = await visit(resolve(path), true);
64
- return Object.freeze({ handle: root.handle, getDefinition: root.getDefinition, graph: Object.freeze([...loaded.values()]) });
66
+ return Object.freeze({ sourcePath: root.path, handle: root.handle, getDefinition: root.getDefinition,
67
+ surfaceAuthority: root.surfaceAuthority, graph: Object.freeze([...loaded.values()]) });
65
68
  }
66
69
  async function importAuthoredFlow(path) {
67
70
  const absolutePath = resolve(path);
@@ -73,12 +76,12 @@ async function importAuthoredFlow(path) {
73
76
  }
74
77
  let authoredModule;
75
78
  try {
76
- authoredModule = await import(pathToFileURL(absolutePath).href);
79
+ authoredModule = await import(/* @vite-ignore */ pathToFileURL(absolutePath).href);
77
80
  }
78
81
  catch (error) {
79
82
  throw new AuthoredFlowLoadError(`Flow "${path}" could not be imported: ${errorMessage(error)}`);
80
83
  }
81
- const getDefinition = await resolveGetFlowDefinition(absolutePath, path);
84
+ const { getDefinition, surfaceAuthority } = await resolveSurfaceRuntime(absolutePath, path);
82
85
  const handle = authoredModule['default'];
83
86
  try {
84
87
  getDefinition(handle);
@@ -86,7 +89,7 @@ async function importAuthoredFlow(path) {
86
89
  catch (error) {
87
90
  throw new AuthoredFlowLoadError(`Flow "${path}" must default-export flow(...): ${errorMessage(error)}`);
88
91
  }
89
- return { handle, getDefinition };
92
+ return { handle, getDefinition, surfaceAuthority };
90
93
  }
91
94
  /**
92
95
  * `getFlowDefinition` recognizes a handle by object identity in a `WeakMap`
@@ -109,22 +112,94 @@ async function importAuthoredFlow(path) {
109
112
  * compatible `@relayflows/surface` is provably resolvable from this same
110
113
  * anchor.
111
114
  */
112
- async function resolveGetFlowDefinition(absolutePath, displayPath) {
115
+ async function resolveSurfaceRuntime(absolutePath, displayPath) {
113
116
  const require = createRequire(pathToFileURL(absolutePath));
114
117
  let resolvedRuntimePath;
115
118
  try {
116
119
  resolvedRuntimePath = require.resolve('@relayflows/surface/runtime');
120
+ // Some ESM test/load hooks return a percent-encoded absolute path without
121
+ // a file: scheme. Normalize it only when the literal path does not exist.
122
+ if (!existsSync(resolvedRuntimePath) && resolvedRuntimePath.includes('%')) {
123
+ const decoded = decodeURI(resolvedRuntimePath);
124
+ if (existsSync(decoded))
125
+ resolvedRuntimePath = decoded;
126
+ }
117
127
  }
118
128
  catch (error) {
119
129
  throw new AuthoredFlowLoadError(`Flow "${displayPath}" imports @relayflows/surface, but @relayflows/surface/runtime `
120
130
  + `could not be resolved from the same location: ${errorMessage(error)}`);
121
131
  }
122
- const runtimeModule = await import(pathToFileURL(resolvedRuntimePath).href);
132
+ const runtimeModule = await import(/* @vite-ignore */ resolvedRuntimePath);
123
133
  if (typeof runtimeModule.getFlowDefinition !== 'function') {
124
134
  throw new AuthoredFlowLoadError(`Flow "${displayPath}": the @relayflows/surface/runtime resolved from its location `
125
135
  + 'does not export getFlowDefinition — check its @relayflows/surface version.');
126
136
  }
127
- return runtimeModule.getFlowDefinition;
137
+ let packagePath = dirname(resolvedRuntimePath);
138
+ for (;;) {
139
+ const candidate = resolve(packagePath, 'package.json');
140
+ try {
141
+ const packageBytes = await readFile(candidate);
142
+ const manifest = JSON.parse(packageBytes.toString('utf8'));
143
+ if (manifest.name === '@relayflows/surface') {
144
+ if (typeof manifest.version !== 'string' || manifest.version.length === 0) {
145
+ throw new AuthoredFlowLoadError(`Flow "${displayPath}": @relayflows/surface has no pinned package version.`);
146
+ }
147
+ const runtimeBytes = await readFile(resolvedRuntimePath);
148
+ return {
149
+ getDefinition: runtimeModule.getFlowDefinition,
150
+ surfaceAuthority: Object.freeze({
151
+ packageName: '@relayflows/surface', version: manifest.version,
152
+ packageSha256: await packageTreeSha256(packagePath),
153
+ runtimeSha256: createHash('sha256').update(runtimeBytes).digest('hex'),
154
+ }),
155
+ };
156
+ }
157
+ }
158
+ catch (error) {
159
+ if (!(error instanceof SyntaxError) && error.code !== 'ENOENT')
160
+ throw error;
161
+ }
162
+ const parent = dirname(packagePath);
163
+ if (parent === packagePath)
164
+ break;
165
+ packagePath = parent;
166
+ }
167
+ throw new AuthoredFlowLoadError(`Flow "${displayPath}": the resolved @relayflows/surface/runtime is not inside its declared package.`);
168
+ }
169
+ /**
170
+ * Hash the exact installed Surface package payload, including path boundaries.
171
+ *
172
+ * npm may materialize a package-local node_modules tree for workspace and
173
+ * file: dependencies. That tree is installation state, not part of the
174
+ * published Surface package, and can contain platform-specific .bin symlinks.
175
+ * Keep it outside the authority boundary while pinning every package payload
176
+ * file, including the runtime module hashed separately by the caller.
177
+ */
178
+ export async function packageTreeSha256(root) {
179
+ const files = [];
180
+ async function visit(directory) {
181
+ const entries = await readdir(directory, { withFileTypes: true });
182
+ entries.sort((a, b) => a.name.localeCompare(b.name));
183
+ for (const entry of entries) {
184
+ if (directory === root && entry.name === 'node_modules')
185
+ continue;
186
+ const path = join(directory, entry.name);
187
+ if (entry.isDirectory())
188
+ await visit(path);
189
+ else if (entry.isFile())
190
+ files.push(path);
191
+ else
192
+ throw new AuthoredFlowLoadError(`@relayflows/surface package contains unsupported entry "${relative(root, path)}".`);
193
+ }
194
+ }
195
+ await visit(root);
196
+ const hash = createHash('sha256');
197
+ for (const path of files) {
198
+ const bytes = await readFile(path);
199
+ const name = relative(root, path).split(sep).join('/');
200
+ hash.update(name).update('\0').update(String(bytes.length)).update('\0').update(bytes);
201
+ }
202
+ return hash.digest('hex');
128
203
  }
129
204
  // Exported for callers (internal SDK tests, and any co-located flow that is
130
205
  // provably the same `@relayflows/surface` instance as this package) that