@relayflows/surface 2.0.8 → 2.0.10

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 (343) hide show
  1. package/README.md +3 -2
  2. package/dist/completion.d.ts +2 -0
  3. package/dist/completion.d.ts.map +1 -1
  4. package/dist/context.d.ts +29 -4
  5. package/dist/context.d.ts.map +1 -1
  6. package/dist/effect-transport.d.ts +22 -0
  7. package/dist/effect-transport.d.ts.map +1 -0
  8. package/dist/effect-transport.js +42 -0
  9. package/dist/effect-transport.js.map +1 -0
  10. package/dist/flow.d.ts +30 -5
  11. package/dist/flow.d.ts.map +1 -1
  12. package/dist/flow.js +58 -9
  13. package/dist/flow.js.map +1 -1
  14. package/dist/helper-clients.d.ts +86 -0
  15. package/dist/helper-clients.d.ts.map +1 -0
  16. package/dist/helper-clients.js +30 -0
  17. package/dist/helper-clients.js.map +1 -0
  18. package/dist/helpers/airtable.d.ts +4 -0
  19. package/dist/helpers/airtable.d.ts.map +1 -0
  20. package/dist/helpers/airtable.js +5 -0
  21. package/dist/helpers/airtable.js.map +1 -0
  22. package/dist/helpers/asana.d.ts +5 -0
  23. package/dist/helpers/asana.d.ts.map +1 -0
  24. package/dist/helpers/asana.js +6 -0
  25. package/dist/helpers/asana.js.map +1 -0
  26. package/dist/helpers/azure-blob.d.ts +5 -0
  27. package/dist/helpers/azure-blob.d.ts.map +1 -0
  28. package/dist/helpers/azure-blob.js +6 -0
  29. package/dist/helpers/azure-blob.js.map +1 -0
  30. package/dist/helpers/box.d.ts +5 -0
  31. package/dist/helpers/box.d.ts.map +1 -0
  32. package/dist/helpers/box.js +6 -0
  33. package/dist/helpers/box.js.map +1 -0
  34. package/dist/helpers/calendly.d.ts +5 -0
  35. package/dist/helpers/calendly.d.ts.map +1 -0
  36. package/dist/helpers/calendly.js +6 -0
  37. package/dist/helpers/calendly.js.map +1 -0
  38. package/dist/helpers/clickup.d.ts +5 -0
  39. package/dist/helpers/clickup.d.ts.map +1 -0
  40. package/dist/helpers/clickup.js +6 -0
  41. package/dist/helpers/clickup.js.map +1 -0
  42. package/dist/helpers/clients.d.ts +3 -0
  43. package/dist/helpers/clients.d.ts.map +1 -0
  44. package/dist/helpers/clients.js +46 -0
  45. package/dist/helpers/clients.js.map +1 -0
  46. package/dist/helpers/cloudflare.d.ts +5 -0
  47. package/dist/helpers/cloudflare.d.ts.map +1 -0
  48. package/dist/helpers/cloudflare.js +6 -0
  49. package/dist/helpers/cloudflare.js.map +1 -0
  50. package/dist/helpers/confluence.d.ts +5 -0
  51. package/dist/helpers/confluence.d.ts.map +1 -0
  52. package/dist/helpers/confluence.js +6 -0
  53. package/dist/helpers/confluence.js.map +1 -0
  54. package/dist/helpers/daytona.d.ts +5 -0
  55. package/dist/helpers/daytona.d.ts.map +1 -0
  56. package/dist/helpers/daytona.js +6 -0
  57. package/dist/helpers/daytona.js.map +1 -0
  58. package/dist/helpers/docker-hub.d.ts +4 -0
  59. package/dist/helpers/docker-hub.d.ts.map +1 -0
  60. package/dist/helpers/docker-hub.js +5 -0
  61. package/dist/helpers/docker-hub.js.map +1 -0
  62. package/dist/helpers/dropbox.d.ts +5 -0
  63. package/dist/helpers/dropbox.d.ts.map +1 -0
  64. package/dist/helpers/dropbox.js +6 -0
  65. package/dist/helpers/dropbox.js.map +1 -0
  66. package/dist/helpers/fathom.d.ts +4 -0
  67. package/dist/helpers/fathom.d.ts.map +1 -0
  68. package/dist/helpers/fathom.js +5 -0
  69. package/dist/helpers/fathom.js.map +1 -0
  70. package/dist/helpers/gcp.d.ts +4 -0
  71. package/dist/helpers/gcp.d.ts.map +1 -0
  72. package/dist/helpers/gcp.js +5 -0
  73. package/dist/helpers/gcp.js.map +1 -0
  74. package/dist/helpers/gcs.d.ts +5 -0
  75. package/dist/helpers/gcs.d.ts.map +1 -0
  76. package/dist/helpers/gcs.js +6 -0
  77. package/dist/helpers/gcs.js.map +1 -0
  78. package/dist/helpers/github.d.ts +5 -0
  79. package/dist/helpers/github.d.ts.map +1 -0
  80. package/dist/helpers/github.js +6 -0
  81. package/dist/helpers/github.js.map +1 -0
  82. package/dist/helpers/gitlab.d.ts +5 -0
  83. package/dist/helpers/gitlab.d.ts.map +1 -0
  84. package/dist/helpers/gitlab.js +6 -0
  85. package/dist/helpers/gitlab.js.map +1 -0
  86. package/dist/helpers/gmail.d.ts +5 -0
  87. package/dist/helpers/gmail.d.ts.map +1 -0
  88. package/dist/helpers/gmail.js +6 -0
  89. package/dist/helpers/gmail.js.map +1 -0
  90. package/dist/helpers/google-calendar.d.ts +5 -0
  91. package/dist/helpers/google-calendar.d.ts.map +1 -0
  92. package/dist/helpers/google-calendar.js +6 -0
  93. package/dist/helpers/google-calendar.js.map +1 -0
  94. package/dist/helpers/google-drive.d.ts +5 -0
  95. package/dist/helpers/google-drive.d.ts.map +1 -0
  96. package/dist/helpers/google-drive.js +6 -0
  97. package/dist/helpers/google-drive.js.map +1 -0
  98. package/dist/helpers/granola.d.ts +5 -0
  99. package/dist/helpers/granola.d.ts.map +1 -0
  100. package/dist/helpers/granola.js +6 -0
  101. package/dist/helpers/granola.js.map +1 -0
  102. package/dist/helpers/hubspot.d.ts +5 -0
  103. package/dist/helpers/hubspot.d.ts.map +1 -0
  104. package/dist/helpers/hubspot.js +6 -0
  105. package/dist/helpers/hubspot.js.map +1 -0
  106. package/dist/helpers/index.d.ts +155 -0
  107. package/dist/helpers/index.d.ts.map +1 -0
  108. package/dist/helpers/index.js +105 -0
  109. package/dist/helpers/index.js.map +1 -0
  110. package/dist/helpers/intercom.d.ts +5 -0
  111. package/dist/helpers/intercom.d.ts.map +1 -0
  112. package/dist/helpers/intercom.js +6 -0
  113. package/dist/helpers/intercom.js.map +1 -0
  114. package/dist/helpers/jira.d.ts +5 -0
  115. package/dist/helpers/jira.d.ts.map +1 -0
  116. package/dist/helpers/jira.js +6 -0
  117. package/dist/helpers/jira.js.map +1 -0
  118. package/dist/helpers/linear.d.ts +5 -0
  119. package/dist/helpers/linear.d.ts.map +1 -0
  120. package/dist/helpers/linear.js +6 -0
  121. package/dist/helpers/linear.js.map +1 -0
  122. package/dist/helpers/mailgun.d.ts +5 -0
  123. package/dist/helpers/mailgun.d.ts.map +1 -0
  124. package/dist/helpers/mailgun.js +6 -0
  125. package/dist/helpers/mailgun.js.map +1 -0
  126. package/dist/helpers/mixpanel.d.ts +5 -0
  127. package/dist/helpers/mixpanel.d.ts.map +1 -0
  128. package/dist/helpers/mixpanel.js +6 -0
  129. package/dist/helpers/mixpanel.js.map +1 -0
  130. package/dist/helpers/neon.d.ts +4 -0
  131. package/dist/helpers/neon.d.ts.map +1 -0
  132. package/dist/helpers/neon.js +5 -0
  133. package/dist/helpers/neon.js.map +1 -0
  134. package/dist/helpers/notion.d.ts +5 -0
  135. package/dist/helpers/notion.d.ts.map +1 -0
  136. package/dist/helpers/notion.js +6 -0
  137. package/dist/helpers/notion.js.map +1 -0
  138. package/dist/helpers/onedrive.d.ts +5 -0
  139. package/dist/helpers/onedrive.d.ts.map +1 -0
  140. package/dist/helpers/onedrive.js +6 -0
  141. package/dist/helpers/onedrive.js.map +1 -0
  142. package/dist/helpers/pipedrive.d.ts +5 -0
  143. package/dist/helpers/pipedrive.d.ts.map +1 -0
  144. package/dist/helpers/pipedrive.js +6 -0
  145. package/dist/helpers/pipedrive.js.map +1 -0
  146. package/dist/helpers/postgres.d.ts +5 -0
  147. package/dist/helpers/postgres.d.ts.map +1 -0
  148. package/dist/helpers/postgres.js +6 -0
  149. package/dist/helpers/postgres.js.map +1 -0
  150. package/dist/helpers/posthog.d.ts +4 -0
  151. package/dist/helpers/posthog.d.ts.map +1 -0
  152. package/dist/helpers/posthog.js +5 -0
  153. package/dist/helpers/posthog.js.map +1 -0
  154. package/dist/helpers/providers.d.ts +252 -0
  155. package/dist/helpers/providers.d.ts.map +1 -0
  156. package/dist/helpers/providers.js +305 -0
  157. package/dist/helpers/providers.js.map +1 -0
  158. package/dist/helpers/ramp.d.ts +7 -0
  159. package/dist/helpers/ramp.d.ts.map +1 -0
  160. package/dist/helpers/ramp.js +7 -0
  161. package/dist/helpers/ramp.js.map +1 -0
  162. package/dist/helpers/recall.d.ts +5 -0
  163. package/dist/helpers/recall.d.ts.map +1 -0
  164. package/dist/helpers/recall.js +6 -0
  165. package/dist/helpers/recall.js.map +1 -0
  166. package/dist/helpers/reddit.d.ts +5 -0
  167. package/dist/helpers/reddit.d.ts.map +1 -0
  168. package/dist/helpers/reddit.js +6 -0
  169. package/dist/helpers/reddit.js.map +1 -0
  170. package/dist/helpers/redis.d.ts +5 -0
  171. package/dist/helpers/redis.d.ts.map +1 -0
  172. package/dist/helpers/redis.js +6 -0
  173. package/dist/helpers/redis.js.map +1 -0
  174. package/dist/helpers/s3.d.ts +5 -0
  175. package/dist/helpers/s3.d.ts.map +1 -0
  176. package/dist/helpers/s3.js +6 -0
  177. package/dist/helpers/s3.js.map +1 -0
  178. package/dist/helpers/salesforce.d.ts +5 -0
  179. package/dist/helpers/salesforce.d.ts.map +1 -0
  180. package/dist/helpers/salesforce.js +6 -0
  181. package/dist/helpers/salesforce.js.map +1 -0
  182. package/dist/helpers/segment.d.ts +4 -0
  183. package/dist/helpers/segment.d.ts.map +1 -0
  184. package/dist/helpers/segment.js +5 -0
  185. package/dist/helpers/segment.js.map +1 -0
  186. package/dist/helpers/sendgrid.d.ts +5 -0
  187. package/dist/helpers/sendgrid.d.ts.map +1 -0
  188. package/dist/helpers/sendgrid.js +6 -0
  189. package/dist/helpers/sendgrid.js.map +1 -0
  190. package/dist/helpers/sharepoint.d.ts +5 -0
  191. package/dist/helpers/sharepoint.d.ts.map +1 -0
  192. package/dist/helpers/sharepoint.js +6 -0
  193. package/dist/helpers/sharepoint.js.map +1 -0
  194. package/dist/helpers/shopify.d.ts +4 -0
  195. package/dist/helpers/shopify.d.ts.map +1 -0
  196. package/dist/helpers/shopify.js +5 -0
  197. package/dist/helpers/shopify.js.map +1 -0
  198. package/dist/helpers/shortcut.d.ts +5 -0
  199. package/dist/helpers/shortcut.d.ts.map +1 -0
  200. package/dist/helpers/shortcut.js +6 -0
  201. package/dist/helpers/shortcut.js.map +1 -0
  202. package/dist/helpers/slack.d.ts +17 -0
  203. package/dist/helpers/slack.d.ts.map +1 -0
  204. package/dist/helpers/slack.js +4 -0
  205. package/dist/helpers/slack.js.map +1 -0
  206. package/dist/helpers/stripe.d.ts +5 -0
  207. package/dist/helpers/stripe.d.ts.map +1 -0
  208. package/dist/helpers/stripe.js +6 -0
  209. package/dist/helpers/stripe.js.map +1 -0
  210. package/dist/helpers/teams.d.ts +5 -0
  211. package/dist/helpers/teams.d.ts.map +1 -0
  212. package/dist/helpers/teams.js +6 -0
  213. package/dist/helpers/teams.js.map +1 -0
  214. package/dist/helpers/telegram.d.ts +5 -0
  215. package/dist/helpers/telegram.d.ts.map +1 -0
  216. package/dist/helpers/telegram.js +6 -0
  217. package/dist/helpers/telegram.js.map +1 -0
  218. package/dist/helpers/webhook-server.d.ts +4 -0
  219. package/dist/helpers/webhook-server.d.ts.map +1 -0
  220. package/dist/helpers/webhook-server.js +5 -0
  221. package/dist/helpers/webhook-server.js.map +1 -0
  222. package/dist/helpers/x.d.ts +4 -0
  223. package/dist/helpers/x.d.ts.map +1 -0
  224. package/dist/helpers/x.js +5 -0
  225. package/dist/helpers/x.js.map +1 -0
  226. package/dist/helpers/zendesk.d.ts +5 -0
  227. package/dist/helpers/zendesk.d.ts.map +1 -0
  228. package/dist/helpers/zendesk.js +6 -0
  229. package/dist/helpers/zendesk.js.map +1 -0
  230. package/dist/index.d.ts +11 -4
  231. package/dist/index.d.ts.map +1 -1
  232. package/dist/index.js +3 -0
  233. package/dist/index.js.map +1 -1
  234. package/dist/memory.d.ts +19 -0
  235. package/dist/memory.d.ts.map +1 -0
  236. package/dist/memory.js +2 -0
  237. package/dist/memory.js.map +1 -0
  238. package/dist/plugin-contract.d.ts +5 -0
  239. package/dist/plugin-contract.d.ts.map +1 -0
  240. package/dist/plugin-contract.js +2 -0
  241. package/dist/plugin-contract.js.map +1 -0
  242. package/dist/provider-trigger.d.ts +13 -0
  243. package/dist/provider-trigger.d.ts.map +1 -0
  244. package/dist/provider-trigger.js +18 -0
  245. package/dist/provider-trigger.js.map +1 -0
  246. package/dist/runtime.d.ts +6 -1
  247. package/dist/runtime.d.ts.map +1 -1
  248. package/dist/runtime.js +5 -0
  249. package/dist/runtime.js.map +1 -1
  250. package/dist/slack.d.ts +34 -0
  251. package/dist/slack.d.ts.map +1 -0
  252. package/dist/slack.js +17 -0
  253. package/dist/slack.js.map +1 -0
  254. package/dist/step.d.ts +43 -1
  255. package/dist/step.d.ts.map +1 -1
  256. package/dist/triggers/github.d.ts +8 -0
  257. package/dist/triggers/github.d.ts.map +1 -0
  258. package/dist/triggers/github.js +17 -0
  259. package/dist/triggers/github.js.map +1 -0
  260. package/dist/triggers/index.d.ts +8 -0
  261. package/dist/triggers/index.d.ts.map +1 -0
  262. package/dist/triggers/index.js +9 -0
  263. package/dist/triggers/index.js.map +1 -0
  264. package/dist/triggers/slack.d.ts +8 -0
  265. package/dist/triggers/slack.d.ts.map +1 -0
  266. package/dist/triggers/slack.js +17 -0
  267. package/dist/triggers/slack.js.map +1 -0
  268. package/dist/triggers.d.ts +15 -0
  269. package/dist/triggers.d.ts.map +1 -0
  270. package/dist/triggers.js +43 -0
  271. package/dist/triggers.js.map +1 -0
  272. package/package.json +21 -2
  273. package/src/completion.ts +3 -0
  274. package/src/context.ts +28 -4
  275. package/src/effect-transport.ts +59 -0
  276. package/src/flow.ts +77 -15
  277. package/src/helper-clients.ts +30 -0
  278. package/src/helpers/README.md +42 -0
  279. package/src/helpers/airtable.ts +9 -0
  280. package/src/helpers/asana.ts +10 -0
  281. package/src/helpers/azure-blob.ts +10 -0
  282. package/src/helpers/box.ts +10 -0
  283. package/src/helpers/calendly.ts +10 -0
  284. package/src/helpers/clickup.ts +10 -0
  285. package/src/helpers/clients.ts +48 -0
  286. package/src/helpers/cloudflare.ts +10 -0
  287. package/src/helpers/confluence.ts +10 -0
  288. package/src/helpers/daytona.ts +10 -0
  289. package/src/helpers/docker-hub.ts +9 -0
  290. package/src/helpers/dropbox.ts +10 -0
  291. package/src/helpers/fathom.ts +9 -0
  292. package/src/helpers/gcp.ts +9 -0
  293. package/src/helpers/gcs.ts +10 -0
  294. package/src/helpers/github.ts +10 -0
  295. package/src/helpers/gitlab.ts +10 -0
  296. package/src/helpers/gmail.ts +10 -0
  297. package/src/helpers/google-calendar.ts +10 -0
  298. package/src/helpers/google-drive.ts +10 -0
  299. package/src/helpers/granola.ts +10 -0
  300. package/src/helpers/hubspot.ts +10 -0
  301. package/src/helpers/index.ts +212 -0
  302. package/src/helpers/intercom.ts +10 -0
  303. package/src/helpers/jira.ts +10 -0
  304. package/src/helpers/linear.ts +10 -0
  305. package/src/helpers/mailgun.ts +10 -0
  306. package/src/helpers/mixpanel.ts +10 -0
  307. package/src/helpers/neon.ts +9 -0
  308. package/src/helpers/notion.ts +10 -0
  309. package/src/helpers/onedrive.ts +10 -0
  310. package/src/helpers/pipedrive.ts +10 -0
  311. package/src/helpers/postgres.ts +10 -0
  312. package/src/helpers/posthog.ts +9 -0
  313. package/src/helpers/providers.ts +305 -0
  314. package/src/helpers/ramp.ts +12 -0
  315. package/src/helpers/recall.ts +10 -0
  316. package/src/helpers/reddit.ts +10 -0
  317. package/src/helpers/redis.ts +10 -0
  318. package/src/helpers/s3.ts +10 -0
  319. package/src/helpers/salesforce.ts +10 -0
  320. package/src/helpers/segment.ts +9 -0
  321. package/src/helpers/sendgrid.ts +10 -0
  322. package/src/helpers/sharepoint.ts +10 -0
  323. package/src/helpers/shopify.ts +9 -0
  324. package/src/helpers/shortcut.ts +10 -0
  325. package/src/helpers/slack.ts +16 -0
  326. package/src/helpers/stripe.ts +10 -0
  327. package/src/helpers/teams.ts +10 -0
  328. package/src/helpers/telegram.ts +10 -0
  329. package/src/helpers/webhook-server.ts +9 -0
  330. package/src/helpers/x.ts +9 -0
  331. package/src/helpers/zendesk.ts +10 -0
  332. package/src/index.ts +26 -2
  333. package/src/memory.ts +20 -0
  334. package/src/plugin-contract.ts +5 -0
  335. package/src/provider-trigger.ts +26 -0
  336. package/src/runtime.ts +8 -0
  337. package/src/slack.ts +47 -0
  338. package/src/step.ts +52 -1
  339. package/src/triggers/README.md +75 -0
  340. package/src/triggers/github.ts +19 -0
  341. package/src/triggers/index.ts +10 -0
  342. package/src/triggers/slack.ts +19 -0
  343. package/src/triggers.ts +49 -0
package/README.md CHANGED
@@ -26,8 +26,9 @@ lifecycle contract are in `docs/SURFACE.md`, "The authored operation lifecycle".
26
26
  This is an in-repository foundation, not a registry-published package. The
27
27
  repository's `flows run` command can execute a directly authored `.flow.ts`
28
28
  with required JSON input. Durable authored-root resume remains tracked in issue
29
- #132. Resident trigger handlers (`flow.on(...)`) are gate-2 work and are not yet
30
- part of this package.
29
+ #132. `flow.on(...)` records webhook and generated provider subscriptions.
30
+ See [provider event triggers](src/triggers/README.md) for declarations, inbox
31
+ envelopes, and executor bindings; deploying handler bodies is tracked in #301.
31
32
 
32
33
  The repository pins Bun through `surface/bun.lock`. From a fresh checkout:
33
34
 
@@ -4,4 +4,6 @@ export type CompletionReason = (typeof COMPLETION_REASONS)[number];
4
4
  /** The closed run completion vocabulary from the journal protocol. */
5
5
  export declare const RUN_COMPLETION_REASONS: readonly ["success", "step_failed", "canceled", "budget_exceeded"];
6
6
  export type RunCompletionReason = (typeof RUN_COMPLETION_REASONS)[number];
7
+ /** Authored outcomes include a human handoff; it is not a kernel terminal reason. */
8
+ export type FlowCompletionReason = RunCompletionReason | 'needs_human';
7
9
  //# sourceMappingURL=completion.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"completion.d.ts","sourceRoot":"","sources":["../src/completion.ts"],"names":[],"mappings":"AAAA,uEAAuE;AACvE,eAAO,MAAM,kBAAkB,wJAUrB,CAAC;AAEX,MAAM,MAAM,gBAAgB,GAAG,CAAC,OAAO,kBAAkB,CAAC,CAAC,MAAM,CAAC,CAAC;AAEnE,sEAAsE;AACtE,eAAO,MAAM,sBAAsB,oEAKzB,CAAC;AAEX,MAAM,MAAM,mBAAmB,GAAG,CAAC,OAAO,sBAAsB,CAAC,CAAC,MAAM,CAAC,CAAC"}
1
+ {"version":3,"file":"completion.d.ts","sourceRoot":"","sources":["../src/completion.ts"],"names":[],"mappings":"AAAA,uEAAuE;AACvE,eAAO,MAAM,kBAAkB,wJAUrB,CAAC;AAEX,MAAM,MAAM,gBAAgB,GAAG,CAAC,OAAO,kBAAkB,CAAC,CAAC,MAAM,CAAC,CAAC;AAEnE,sEAAsE;AACtE,eAAO,MAAM,sBAAsB,oEAKzB,CAAC;AAEX,MAAM,MAAM,mBAAmB,GAAG,CAAC,OAAO,sBAAsB,CAAC,CAAC,MAAM,CAAC,CAAC;AAE1E,qFAAqF;AACrF,MAAM,MAAM,oBAAoB,GAAG,mBAAmB,GAAG,aAAa,CAAC"}
package/dist/context.d.ts CHANGED
@@ -1,5 +1,7 @@
1
+ import type { Helpers } from "./helpers/index.js";
2
+ import type { MemoryHelper } from "./memory.js";
1
3
  import type { CloudHelper } from "./cloud.js";
2
- import type { RunCompletionReason } from "./completion.js";
4
+ import type { FlowCompletionReason } from "./completion.js";
3
5
  import type { Step } from "./step.js";
4
6
  export interface AgentResult {
5
7
  summary: string;
@@ -8,6 +10,22 @@ export interface AgentResult {
8
10
  export interface AgentOptions {
9
11
  task: string;
10
12
  workspace?: string;
13
+ cli?: string;
14
+ model?: string;
15
+ /** Working directory for the CLI subprocess; defaults to the flow-runner's cwd. */
16
+ cwd?: string;
17
+ /**
18
+ * Dispatch transport (flows#385). `'direct'` (default) spawns the CLI as a
19
+ * local subprocess. `'relay'` posts to agent-relay so the agent registers
20
+ * as a first-class workspace participant that DMs can steer.
21
+ */
22
+ transport?: 'direct' | 'relay';
23
+ }
24
+ export interface LlmOptions {
25
+ /** JSON Schema checked before the result is accepted by the journal. */
26
+ output: Record<string, unknown>;
27
+ cli?: string;
28
+ model?: string;
11
29
  }
12
30
  /**
13
31
  * The context a journal-backed runtime injects into a flow body.
@@ -15,15 +33,22 @@ export interface AgentOptions {
15
33
  * This package declares the authoring contract only. It cannot construct a
16
34
  * context or execute a step, so all effects remain behind the journal client.
17
35
  */
18
- export interface Ctx {
19
- run(command: string): Step<string>;
36
+ export interface Ctx extends Helpers {
37
+ readonly mcp: Readonly<Record<string, Readonly<Record<string, (args: unknown) => Step<unknown>>>>>;
38
+ /** Command lease: milliseconds or a duration such as "5m"; default 30s, maximum 15m. */
39
+ run(command: string, options?: {
40
+ timeout?: string | number;
41
+ }): Step<string>;
20
42
  llm(strings: TemplateStringsArray, ...values: unknown[]): Step<string>;
43
+ /** JSON Schema validates the value at runtime; narrow unknown in author code. */
44
+ llm(prompt: string, options: LlmOptions): Step<unknown>;
21
45
  agent(name: string, options: AgentOptions): Step<AgentResult>;
22
46
  human(question: string, options: {
23
47
  to: string;
24
48
  }): Promise<boolean>;
25
49
  dispatch<T>(flow: string, input: unknown): Promise<T>;
26
- done(reason: RunCompletionReason): void;
50
+ done(reason: FlowCompletionReason): void;
27
51
  cloud: CloudHelper;
52
+ memory: MemoryHelper;
28
53
  }
29
54
  //# sourceMappingURL=context.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"context.d.ts","sourceRoot":"","sources":["../src/context.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAC9C,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,iBAAiB,CAAC;AAC3D,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAEtC,MAAM,WAAW,WAAW;IAC1B,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,MAAM,EAAE,CAAC;CACrB;AAED,MAAM,WAAW,YAAY;IAC3B,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED;;;;;GAKG;AACH,MAAM,WAAW,GAAG;IAClB,GAAG,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC;IACnC,GAAG,CAAC,OAAO,EAAE,oBAAoB,EAAE,GAAG,MAAM,EAAE,OAAO,EAAE,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC;IACvE,KAAK,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,YAAY,GAAG,IAAI,CAAC,WAAW,CAAC,CAAC;IAC9D,KAAK,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE;QAAE,EAAE,EAAE,MAAM,CAAA;KAAE,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;IACnE,QAAQ,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;IACtD,IAAI,CAAC,MAAM,EAAE,mBAAmB,GAAG,IAAI,CAAC;IACxC,KAAK,EAAE,WAAW,CAAC;CACpB"}
1
+ {"version":3,"file":"context.d.ts","sourceRoot":"","sources":["../src/context.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,oBAAoB,CAAC;AAClD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAChD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAC9C,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,iBAAiB,CAAC;AAC5D,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAEtC,MAAM,WAAW,WAAW;IAC1B,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,MAAM,EAAE,CAAC;CACrB;AAED,MAAM,WAAW,YAAY;IAC3B,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,mFAAmF;IACnF,GAAG,CAAC,EAAE,MAAM,CAAC;IACb;;;;OAIG;IACH,SAAS,CAAC,EAAE,QAAQ,GAAG,OAAO,CAAC;CAChC;AAED,MAAM,WAAW,UAAU;IACzB,wEAAwE;IACxE,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAChC,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED;;;;;GAKG;AACH,MAAM,WAAW,GAAI,SAAQ,OAAO;IAClC,QAAQ,CAAC,GAAG,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE,OAAO,KAAK,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IACnG,wFAAwF;IACxF,GAAG,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE;QAAE,OAAO,CAAC,EAAE,MAAM,GAAG,MAAM,CAAA;KAAE,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC;IAC5E,GAAG,CAAC,OAAO,EAAE,oBAAoB,EAAE,GAAG,MAAM,EAAE,OAAO,EAAE,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC;IACvE,iFAAiF;IACjF,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,UAAU,GAAG,IAAI,CAAC,OAAO,CAAC,CAAC;IACxD,KAAK,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,YAAY,GAAG,IAAI,CAAC,WAAW,CAAC,CAAC;IAC9D,KAAK,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE;QAAE,EAAE,EAAE,MAAM,CAAA;KAAE,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;IACnE,QAAQ,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;IACtD,IAAI,CAAC,MAAM,EAAE,oBAAoB,GAAG,IAAI,CAAC;IACzC,KAAK,EAAE,WAAW,CAAC;IACnB,MAAM,EAAE,YAAY,CAAC;CACtB"}
@@ -0,0 +1,22 @@
1
+ import type { RelayClientOptions, RelayTransport } from '@relayfile/relay-helpers/transport';
2
+ import type { Step } from './step.js';
3
+ /** Promise-returning client verbs become lazy, journal-owned steps. */
4
+ export type JournalHelper<T> = {
5
+ [K in keyof T]: T[K] extends (...args: infer A) => Promise<infer R> ? (...args: A) => Step<R> : T[K] extends (...args: infer A) => infer R ? (...args: A) => R : T[K] extends object ? JournalHelper<T[K]> : T[K];
6
+ };
7
+ export interface HelperCall {
8
+ type: 'effect';
9
+ provider: string;
10
+ verb: string;
11
+ args: unknown[];
12
+ }
13
+ export type EffectDispatcher = <T>(call: HelperCall) => Step<T>;
14
+ export interface UnavailableHelper {
15
+ readonly available: false;
16
+ }
17
+ export type HelperFactory = (options: RelayClientOptions) => object;
18
+ export declare function bindHelper<T extends object>(provider: string, factory: (options: RelayClientOptions) => T, dispatch: EffectDispatcher): JournalHelper<T>;
19
+ export declare function bindHelper(provider: string, factory: undefined, dispatch: EffectDispatcher): UnavailableHelper;
20
+ /** Resolve only own, generated client methods; never arbitrary prototype members. */
21
+ export declare function invokeHelper(factory: HelperFactory, call: HelperCall, transport: RelayTransport): Promise<unknown>;
22
+ //# sourceMappingURL=effect-transport.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"effect-transport.d.ts","sourceRoot":"","sources":["../src/effect-transport.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,kBAAkB,EAAE,cAAc,EAAE,MAAM,oCAAoC,CAAC;AAC7F,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAEtC,uEAAuE;AACvE,MAAM,MAAM,aAAa,CAAC,CAAC,IAAI;KAC5B,CAAC,IAAI,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,GAAG,IAAI,EAAE,MAAM,CAAC,KAAK,OAAO,CAAC,MAAM,CAAC,CAAC,GAC/D,CAAC,GAAG,IAAI,EAAE,CAAC,KAAK,IAAI,CAAC,CAAC,CAAC,GACvB,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,GAAG,IAAI,EAAE,MAAM,CAAC,KAAK,MAAM,CAAC,GAAG,CAAC,GAAG,IAAI,EAAE,CAAC,KAAK,CAAC,GAC9D,CAAC,CAAC,CAAC,CAAC,SAAS,MAAM,GAAG,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;CACrD,CAAC;AACF,MAAM,WAAW,UAAU;IACzB,IAAI,EAAE,QAAQ,CAAC;IACf,QAAQ,EAAE,MAAM,CAAC;IACjB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,OAAO,EAAE,CAAC;CACjB;AACD,MAAM,MAAM,gBAAgB,GAAG,CAAC,CAAC,EAAE,IAAI,EAAE,UAAU,KAAK,IAAI,CAAC,CAAC,CAAC,CAAC;AAChE,MAAM,WAAW,iBAAiB;IAAG,QAAQ,CAAC,SAAS,EAAE,KAAK,CAAA;CAAE;AAChE,MAAM,MAAM,aAAa,GAAG,CAAC,OAAO,EAAE,kBAAkB,KAAK,MAAM,CAAC;AAQpE,wBAAgB,UAAU,CAAC,CAAC,SAAS,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC,OAAO,EAAE,kBAAkB,KAAK,CAAC,EAAE,QAAQ,EAAE,gBAAgB,GAAG,aAAa,CAAC,CAAC,CAAC,CAAC;AAC1J,wBAAgB,UAAU,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,gBAAgB,GAAG,iBAAiB,CAAC;AAkBhH,qFAAqF;AACrF,wBAAsB,YAAY,CAAC,OAAO,EAAE,aAAa,EAAE,IAAI,EAAE,UAAU,EAAE,SAAS,EAAE,cAAc,GAAG,OAAO,CAAC,OAAO,CAAC,CAYxH"}
@@ -0,0 +1,42 @@
1
+ const unavailableTransport = {
2
+ async read() { throw new Error('Helper I/O requires a journaled step'); },
3
+ async list() { throw new Error('Helper I/O requires a journaled step'); },
4
+ async write() { throw new Error('Helper I/O requires a journaled step'); },
5
+ };
6
+ export function bindHelper(provider, factory, dispatch) {
7
+ if (!factory)
8
+ return Object.freeze({ available: false });
9
+ function wrap(client, prefix = '') {
10
+ return Object.fromEntries(Object.entries(client).map(([key, value]) => {
11
+ const verb = `${prefix}${key}`;
12
+ if (typeof value === 'function')
13
+ return [key, key === 'path'
14
+ ? value.bind(client)
15
+ : (...args) => {
16
+ while (args.length && args.at(-1) === undefined)
17
+ args.pop();
18
+ return dispatch({ type: 'effect', provider, verb, args });
19
+ }];
20
+ return [key, value && typeof value === 'object' ? wrap(value, `${verb}.`) : value];
21
+ }));
22
+ }
23
+ return wrap(factory({ transport: unavailableTransport }));
24
+ }
25
+ /** Resolve only own, generated client methods; never arbitrary prototype members. */
26
+ export async function invokeHelper(factory, call, transport) {
27
+ let target = factory({ transport });
28
+ const parts = call.verb.split('.');
29
+ for (const part of parts.slice(0, -1)) {
30
+ if (!target || typeof target !== 'object' || !Object.hasOwn(target, part))
31
+ throw new Error('Unknown helper resource');
32
+ target = target[part];
33
+ }
34
+ const verb = parts.at(-1);
35
+ if (!target || typeof target !== 'object' || !Object.hasOwn(target, verb) || verb === 'path')
36
+ throw new Error('Unknown helper verb');
37
+ const method = target[verb];
38
+ if (typeof method !== 'function')
39
+ throw new Error('Unknown helper verb');
40
+ return await method.apply(target, call.args) ?? null;
41
+ }
42
+ //# sourceMappingURL=effect-transport.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"effect-transport.js","sourceRoot":"","sources":["../src/effect-transport.ts"],"names":[],"mappings":"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"}
package/dist/flow.d.ts CHANGED
@@ -1,13 +1,22 @@
1
+ import type { Helpers } from "./helpers/index.js";
2
+ type HelperTools = Partial<Record<keyof Helpers, boolean>>;
1
3
  import type { Ctx } from "./context.js";
4
+ import { type TriggerSource } from "./triggers.js";
2
5
  /** Optional escalation header; the empty header is the common case. */
3
6
  export interface FlowHeader {
7
+ /** Relative paths to reusable authored flows composed by this body. */
8
+ use?: string[];
4
9
  identity?: string;
5
10
  memory?: {
6
11
  script?: boolean;
7
12
  agent?: boolean;
8
13
  };
9
- budget?: string;
10
- tools?: {
14
+ budget?: string | {
15
+ tokens?: number;
16
+ dollars?: number;
17
+ wallclock?: string;
18
+ };
19
+ tools?: HelperTools & {
11
20
  relayfile?: string[];
12
21
  mcp?: string[];
13
22
  };
@@ -15,13 +24,19 @@ export interface FlowHeader {
15
24
  }
16
25
  export type FlowBody<Input = unknown> = (f: Ctx, input: Input) => Promise<void>;
17
26
  export interface ReadonlyFlowHeader {
27
+ readonly use?: readonly string[];
18
28
  readonly identity?: string;
19
29
  readonly memory?: Readonly<{
20
30
  script?: boolean;
21
31
  agent?: boolean;
22
32
  }>;
23
- readonly budget?: string;
24
- readonly tools?: Readonly<{
33
+ readonly budget?: string | Readonly<{
34
+ tokens?: number;
35
+ dollars?: number;
36
+ wallclock?: string;
37
+ }>;
38
+ readonly tools?: Readonly<HelperTools & {
39
+ slack?: boolean;
25
40
  relayfile?: readonly string[];
26
41
  mcp?: readonly string[];
27
42
  }>;
@@ -32,16 +47,26 @@ export interface AuthoredFlowDefinition<Input = unknown> {
32
47
  readonly name: string;
33
48
  readonly header: ReadonlyFlowHeader;
34
49
  readonly body: FlowBody<Input>;
50
+ readonly handlers: readonly TriggerHandler[];
51
+ }
52
+ export interface TriggerHandler {
53
+ readonly trigger: TriggerSource;
54
+ readonly body: FlowBody;
35
55
  }
36
56
  /** Opaque authored-flow handle. Execution stays behind the journal runtime. */
37
57
  export interface FlowHandle {
38
58
  readonly name: string;
59
+ on<Event = Record<string, unknown>>(trigger: TriggerSource, body: FlowBody<Event>): TriggeredFlowHandle;
60
+ }
61
+ export interface TriggeredFlowHandle extends FlowHandle {
39
62
  }
63
+ export declare function flow(name: string, header?: FlowHeader): FlowHandle;
40
64
  export declare function flow<Input = unknown>(name: string, body: FlowBody<Input>): FlowHandle;
41
65
  export declare function flow<Input = unknown>(name: string, header: FlowHeader, body: FlowBody<Input>): FlowHandle;
42
66
  /**
43
67
  * Runtime bridge used by the SDK after it imports an authored `.flow.ts`.
44
68
  * The root package deliberately does not re-export this accessor.
45
69
  */
46
- export declare function getFlowDefinition<Input = unknown>(handle: FlowHandle): AuthoredFlowDefinition<Input>;
70
+ export declare function getFlowDefinition<Input = unknown>(handle: Pick<FlowHandle, "name">): AuthoredFlowDefinition<Input>;
71
+ export {};
47
72
  //# sourceMappingURL=flow.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"flow.d.ts","sourceRoot":"","sources":["../src/flow.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,cAAc,CAAC;AAExC,uEAAuE;AACvE,MAAM,WAAW,UAAU;IACzB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,MAAM,CAAC,EAAE;QAAE,MAAM,CAAC,EAAE,OAAO,CAAC;QAAC,KAAK,CAAC,EAAE,OAAO,CAAA;KAAE,CAAC;IAC/C,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE;QAAE,SAAS,CAAC,EAAE,MAAM,EAAE,CAAC;QAAC,GAAG,CAAC,EAAE,MAAM,EAAE,CAAA;KAAE,CAAC;IACjD,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,MAAM,QAAQ,CAAC,KAAK,GAAG,OAAO,IAAI,CAAC,CAAC,EAAE,GAAG,EAAE,KAAK,EAAE,KAAK,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;AAEhF,MAAM,WAAW,kBAAkB;IACjC,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,MAAM,CAAC,EAAE,QAAQ,CAAC;QAAE,MAAM,CAAC,EAAE,OAAO,CAAC;QAAC,KAAK,CAAC,EAAE,OAAO,CAAA;KAAE,CAAC,CAAC;IAClE,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,KAAK,CAAC,EAAE,QAAQ,CAAC;QACxB,SAAS,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;QAC9B,GAAG,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;KACzB,CAAC,CAAC;IACH,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC;CAC7B;AAED,0EAA0E;AAC1E,MAAM,WAAW,sBAAsB,CAAC,KAAK,GAAG,OAAO;IACrD,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,MAAM,EAAE,kBAAkB,CAAC;IACpC,QAAQ,CAAC,IAAI,EAAE,QAAQ,CAAC,KAAK,CAAC,CAAC;CAChC;AAED,+EAA+E;AAC/E,MAAM,WAAW,UAAU;IACzB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;CACvB;AAID,wBAAgB,IAAI,CAAC,KAAK,GAAG,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,QAAQ,CAAC,KAAK,CAAC,GAAG,UAAU,CAAC;AACvF,wBAAgB,IAAI,CAAC,KAAK,GAAG,OAAO,EAClC,IAAI,EAAE,MAAM,EACZ,MAAM,EAAE,UAAU,EAClB,IAAI,EAAE,QAAQ,CAAC,KAAK,CAAC,GACpB,UAAU,CAAC;AAkCd;;;GAGG;AACH,wBAAgB,iBAAiB,CAAC,KAAK,GAAG,OAAO,EAAE,MAAM,EAAE,UAAU,GAAG,sBAAsB,CAAC,KAAK,CAAC,CAapG"}
1
+ {"version":3,"file":"flow.d.ts","sourceRoot":"","sources":["../src/flow.ts"],"names":[],"mappings":"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"}
package/dist/flow.js CHANGED
@@ -1,20 +1,42 @@
1
+ import { helperProviders } from "./helpers/providers.js";
2
+ import { webhook } from "./triggers.js";
1
3
  const definitions = new WeakMap();
2
- export function flow(name, headerOrBody, body) {
4
+ export function flow(name, headerOrBody = {}, body) {
3
5
  const flowBody = typeof headerOrBody === "function" ? headerOrBody : body;
4
6
  const header = typeof headerOrBody === "function" ? {} : headerOrBody;
5
7
  if (name.trim().length === 0) {
6
8
  throw new TypeError("flow name must not be empty");
7
9
  }
8
- if (typeof flowBody !== "function") {
10
+ if (flowBody !== undefined && typeof flowBody !== "function") {
9
11
  throw new TypeError(`flow "${name}" requires a body`);
10
12
  }
11
13
  assertFlowHeader(header, name);
12
14
  const definition = Object.freeze({
13
15
  name,
14
16
  header: freezeHeader(header),
15
- body: flowBody,
17
+ body: flowBody ?? (async () => { throw new TypeError(`flow "${name}" has no direct-run body`); }),
18
+ handlers: Object.freeze([]),
16
19
  });
17
- const handle = Object.freeze({ name });
20
+ return makeHandle(definition);
21
+ }
22
+ function makeHandle(definition) {
23
+ const handle = { name: definition.name };
24
+ Object.defineProperty(handle, "on", {
25
+ value: (trigger, body) => {
26
+ if (typeof body !== "function")
27
+ throw new TypeError("trigger handler requires a body");
28
+ assertHeaderObject(trigger, "trigger");
29
+ assertKnownKeys(trigger, ["kind", "name", "filter"], "trigger");
30
+ if (trigger.kind !== "webhook")
31
+ throw new TypeError("unsupported trigger kind");
32
+ const source = webhook(trigger.name, trigger.filter);
33
+ return makeHandle(Object.freeze({
34
+ ...definition,
35
+ handlers: Object.freeze([...definition.handlers, Object.freeze({ trigger: source, body: body })]),
36
+ }));
37
+ },
38
+ });
39
+ Object.freeze(handle);
18
40
  // One map holds definitions of many input types, so it is stored at the
19
41
  // default parameterisation and `getFlowDefinition<Input>` re-parameterises on
20
42
  // the way out. The cast is needed because `body` puts `Input` in a parameter
@@ -57,6 +79,7 @@ function isStoredDefinition(value, handleName) {
57
79
  }
58
80
  function freezeHeader(header) {
59
81
  const unknownFields = Object.keys(header).filter((field) => ![
82
+ "use",
60
83
  "identity",
61
84
  "memory",
62
85
  "budget",
@@ -72,6 +95,8 @@ function freezeHeader(header) {
72
95
  const tools = header.tools === undefined
73
96
  ? undefined
74
97
  : Object.freeze({
98
+ ...Object.fromEntries(helperProviders.filter(p => header.tools?.[p.namespace] !== undefined)
99
+ .map(p => [p.namespace, header.tools[p.namespace]])),
75
100
  ...(header.tools.relayfile === undefined
76
101
  ? {}
77
102
  : { relayfile: Object.freeze([...header.tools.relayfile]) }),
@@ -80,9 +105,10 @@ function freezeHeader(header) {
80
105
  : { mcp: Object.freeze([...header.tools.mcp]) }),
81
106
  });
82
107
  return Object.freeze({
108
+ ...(header.use === undefined ? {} : { use: Object.freeze([...header.use]) }),
83
109
  ...(header.identity === undefined ? {} : { identity: header.identity }),
84
110
  ...(memory === undefined ? {} : { memory }),
85
- ...(header.budget === undefined ? {} : { budget: header.budget }),
111
+ ...(header.budget === undefined ? {} : { budget: typeof header.budget === "string" ? header.budget : Object.freeze({ ...header.budget }) }),
86
112
  ...(tools === undefined ? {} : { tools }),
87
113
  ...(header.workspace === undefined ? {} : { workspace: header.workspace }),
88
114
  });
@@ -90,10 +116,26 @@ function freezeHeader(header) {
90
116
  function assertFlowHeader(value, flowName) {
91
117
  const at = `unsupported_header: flow "${flowName}" header`;
92
118
  assertHeaderObject(value, at);
93
- assertKnownKeys(value, ["identity", "memory", "budget", "tools", "workspace"], at);
119
+ assertKnownKeys(value, ["use", "identity", "memory", "budget", "tools", "workspace"], at);
94
120
  assertOptionalString(value, "identity", at);
95
- assertOptionalString(value, "budget", at);
121
+ if (value.budget !== undefined && typeof value.budget !== "string") {
122
+ assertHeaderObject(value.budget, `${at}.budget`);
123
+ assertKnownKeys(value.budget, ["tokens", "dollars", "wallclock"], `${at}.budget`);
124
+ assertOptionalString(value.budget, "wallclock", at);
125
+ for (const key of ["tokens", "dollars"]) {
126
+ if (value.budget[key] !== undefined && typeof value.budget[key] !== "number")
127
+ throw new TypeError(`budget_syntax_invalid: ${key} must be a number`);
128
+ }
129
+ }
96
130
  assertOptionalString(value, "workspace", at);
131
+ assertOptionalStringArray(value, "use", at);
132
+ if (value.use !== undefined) {
133
+ for (const path of value.use) {
134
+ if (!/^(?:\.\/|\.\.\/).+\.flow\.ts$/.test(path) || /[?#\\\\]/.test(path)) {
135
+ throw new TypeError(`${at}.use: expected relative .flow.ts paths`);
136
+ }
137
+ }
138
+ }
97
139
  if (value.memory !== undefined) {
98
140
  assertHeaderObject(value.memory, `${at}.memory`);
99
141
  assertKnownKeys(value.memory, ["script", "agent"], `${at}.memory`);
@@ -102,7 +144,9 @@ function assertFlowHeader(value, flowName) {
102
144
  }
103
145
  if (value.tools !== undefined) {
104
146
  assertHeaderObject(value.tools, `${at}.tools`);
105
- assertKnownKeys(value.tools, ["relayfile", "mcp"], `${at}.tools`);
147
+ assertKnownKeys(value.tools, ["relayfile", "mcp", ...helperProviders.map(p => p.namespace)], `${at}.tools`);
148
+ for (const { namespace } of helperProviders)
149
+ assertOptionalBoolean(value.tools, namespace, `${at}.tools`);
106
150
  assertOptionalStringArray(value.tools, "relayfile", `${at}.tools`);
107
151
  assertOptionalStringArray(value.tools, "mcp", `${at}.tools`);
108
152
  }
@@ -141,8 +185,13 @@ function assertOptionalBoolean(value, key, at) {
141
185
  function assertOptionalStringArray(value, key, at) {
142
186
  const candidate = value[key];
143
187
  if (candidate !== undefined
144
- && (!Array.isArray(candidate) || candidate.some((item) => typeof item !== "string"))) {
188
+ && (!Array.isArray(candidate) || Array.from(candidate).some((item) => typeof item !== "string"))) {
145
189
  throw new TypeError(`${at}.${key}: expected an array of strings`);
146
190
  }
191
+ if (key === "use" && Array.isArray(candidate)
192
+ && (candidate.some((item) => item.trim().length === 0)
193
+ || new Set(candidate).size !== candidate.length)) {
194
+ throw new TypeError(`${at}.${key}: expected unique nonempty paths`);
195
+ }
147
196
  }
148
197
  //# sourceMappingURL=flow.js.map
package/dist/flow.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"flow.js","sourceRoot":"","sources":["../src/flow.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"flow.js","sourceRoot":"","sources":["../src/flow.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,86 @@
1
+ import type { RelayClientOptions } from '@relayfile/relay-helpers/transport';
2
+ /** Accept the conventional owner/repo shorthand as well as upstream arguments. */
3
+ export declare function githubClient(options: RelayClientOptions): {
4
+ createIssue(args: {
5
+ owner?: string;
6
+ repo: string;
7
+ title: string;
8
+ body: string;
9
+ labels?: string[];
10
+ }): Promise<import("@relayfile/relay-helpers").CreatedResult>;
11
+ comment(target: import("@relayfile/relay-helpers").GithubTarget, body: string): Promise<import("@relayfile/relay-helpers").CreatedResult>;
12
+ createPullRequest(args: {
13
+ owner: string;
14
+ repo: string;
15
+ title: string;
16
+ head: string;
17
+ base: string;
18
+ body?: string;
19
+ draft?: boolean;
20
+ author?: "app" | "user";
21
+ }): Promise<import("@relayfile/relay-helpers").CreatedResult>;
22
+ pushRef(args: {
23
+ owner: string;
24
+ repo: string;
25
+ ref: string;
26
+ sha: string;
27
+ }): Promise<void>;
28
+ updateRef(args: {
29
+ owner: string;
30
+ repo: string;
31
+ ref: string;
32
+ sha: string;
33
+ force?: boolean;
34
+ }): Promise<void>;
35
+ closePullRequest(target: import("@relayfile/relay-helpers").GithubTarget): Promise<void>;
36
+ mergePullRequest(args: {
37
+ owner: string;
38
+ repo: string;
39
+ number: number;
40
+ method?: "merge" | "squash" | "rebase";
41
+ commitTitle?: string;
42
+ commitMessage?: string;
43
+ sha?: string;
44
+ }): Promise<{
45
+ merged: boolean;
46
+ sha?: string;
47
+ }>;
48
+ review(target: import("@relayfile/relay-helpers").GithubTarget, args: {
49
+ body: string;
50
+ event: "COMMENT" | "APPROVE" | "REQUEST_CHANGES";
51
+ comments?: Array<{
52
+ path: string;
53
+ line: number;
54
+ body: string;
55
+ }>;
56
+ }): Promise<void>;
57
+ "close-pull-request": import("@relayfile/relay-helpers").ResourceClient;
58
+ "issue-comments": import("@relayfile/relay-helpers").ResourceClient;
59
+ issues: import("@relayfile/relay-helpers").ResourceClient;
60
+ merge: import("@relayfile/relay-helpers").ResourceClient;
61
+ "pull-requests": import("@relayfile/relay-helpers").ResourceClient;
62
+ refs: import("@relayfile/relay-helpers").ResourceClient;
63
+ replies: import("@relayfile/relay-helpers").ResourceClient;
64
+ reviews: import("@relayfile/relay-helpers").ResourceClient;
65
+ };
66
+ export declare function stripeClient(options: RelayClientOptions): {
67
+ createInvoice(args: {
68
+ customer: string;
69
+ auto_advance?: boolean;
70
+ collection_method?: "charge_automatically" | "send_invoice";
71
+ days_until_due?: number;
72
+ description?: string;
73
+ metadata?: Record<string, string>;
74
+ }): Promise<import("@relayfile/relay-helpers").CreatedResult>;
75
+ };
76
+ export declare function notionClient(options: RelayClientOptions): {
77
+ appendBlock(args: {
78
+ pageId: string;
79
+ block: Record<string, unknown>;
80
+ }): Promise<import("@relayfile/relay-helpers").CreatedResult>;
81
+ comments: import("@relayfile/relay-helpers").ResourceClient;
82
+ pages: import("@relayfile/relay-helpers").ResourceClient;
83
+ content: import("@relayfile/relay-helpers").ResourceClient;
84
+ properties: import("@relayfile/relay-helpers").ResourceClient;
85
+ };
86
+ //# sourceMappingURL=helper-clients.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"helper-clients.d.ts","sourceRoot":"","sources":["../src/helper-clients.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,oCAAoC,CAAC;AAE7E,kFAAkF;AAClF,wBAAgB,YAAY,CAAC,OAAO,EAAE,kBAAkB;sBAEhB;QAAE,KAAK,CAAC,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAC;QAAC,MAAM,CAAC,EAAE,MAAM,EAAE,CAAA;KAAE;;;;;;;;YAOhE,CAAC;aACrC,CAAC;cAAyB,CAAC;;;;;;;;;;;;;aAO3B,CAAC;;;;;;;cAKH,CAAC;mBAAoD,CAAC;qBACtD,CAAC;WAAqB,CAAC;;;WAAgE,CAAC;;;;;gBAG4C,CAAC;;;;;;;;;;;;;;EAnBtJ;AAED,wBAAgB,YAAY,CAAC,OAAO,EAAE,kBAAkB;wBACzB;QAAE,QAAQ,EAAE,MAAM,CAAC;QAAC,YAAY,CAAC,EAAE,OAAO,CAAC;QAAC,iBAAiB,CAAC,EAAE,sBAAsB,GAAG,cAAc,CAAC;QAAC,cAAc,CAAC,EAAE,MAAM,CAAC;QAAC,WAAW,CAAC,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;KAAE;EAKzN;AAED,wBAAgB,YAAY,CAAC,OAAO,EAAE,kBAAkB;sBACO;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;KAAE;;;;;EAOhH"}
@@ -0,0 +1,30 @@
1
+ import { githubClient as upstreamGithub, notionClient as upstreamNotion, created } from '@relayfile/relay-helpers';
2
+ /** Accept the conventional owner/repo shorthand as well as upstream arguments. */
3
+ export function githubClient(options) {
4
+ const client = upstreamGithub(options);
5
+ return { ...client, createIssue(args) {
6
+ const [owner, repo, extra] = args.repo.split('/');
7
+ if (!args.owner && (!owner || !repo || extra))
8
+ throw new Error('github.createIssue requires repo: "owner/repo" or an explicit owner');
9
+ return client.createIssue({ ...args, owner: args.owner ?? owner, repo: args.owner ? args.repo : repo });
10
+ } };
11
+ }
12
+ export function stripeClient(options) {
13
+ return { createInvoice(args) {
14
+ if (!options.transport)
15
+ throw new Error('Stripe requires a journal transport');
16
+ return created(options.transport.write({ provider: 'stripe', resource: 'invoices',
17
+ parameters: {}, path: '/stripe/invoices', body: args }));
18
+ } };
19
+ }
20
+ export function notionClient(options) {
21
+ return { ...upstreamNotion(options), async appendBlock(args) {
22
+ if (!options.transport)
23
+ throw new Error('Notion requires a journal transport');
24
+ // The adapter does not yet support this route. The runtime refuses it in
25
+ // mount mode, while mock mode can exercise authoring and effect lowering.
26
+ return created(options.transport.write({ provider: 'notion', resource: 'blocks',
27
+ parameters: { pageId: args.pageId }, path: `/notion/pages/${encodeURIComponent(args.pageId)}/blocks`, body: { children: [args.block] } }));
28
+ } };
29
+ }
30
+ //# sourceMappingURL=helper-clients.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"helper-clients.js","sourceRoot":"","sources":["../src/helper-clients.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,IAAI,cAAc,EAAE,YAAY,IAAI,cAAc,EAAE,OAAO,EAAE,MAAM,0BAA0B,CAAC;AAGnH,kFAAkF;AAClF,MAAM,UAAU,YAAY,CAAC,OAA2B;IACtD,MAAM,MAAM,GAAG,cAAc,CAAC,OAAO,CAAC,CAAC;IACvC,OAAO,EAAE,GAAG,MAAM,EAAE,WAAW,CAAC,IAAsF;YACpH,MAAM,CAAC,KAAK,EAAE,IAAI,EAAE,KAAK,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;YAClD,IAAI,CAAC,IAAI,CAAC,KAAK,IAAI,CAAC,CAAC,KAAK,IAAI,CAAC,IAAI,IAAI,KAAK,CAAC;gBAAE,MAAM,IAAI,KAAK,CAAC,qEAAqE,CAAC,CAAC;YACtI,OAAO,MAAM,CAAC,WAAW,CAAC,EAAE,GAAG,IAAI,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,IAAI,KAAM,EAAE,IAAI,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,IAAK,EAAE,CAAC,CAAC;QAC5G,CAAC,EAAE,CAAC;AACN,CAAC;AAED,MAAM,UAAU,YAAY,CAAC,OAA2B;IACtD,OAAO,EAAE,aAAa,CAAC,IAAiM;YACtN,IAAI,CAAC,OAAO,CAAC,SAAS;gBAAE,MAAM,IAAI,KAAK,CAAC,qCAAqC,CAAC,CAAC;YAC/E,OAAO,OAAO,CAAC,OAAO,CAAC,SAAS,CAAC,KAAK,CAAC,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,UAAU;gBAC/E,UAAU,EAAE,EAAE,EAAE,IAAI,EAAE,kBAAkB,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;QAC7D,CAAC,EAAE,CAAC;AACN,CAAC;AAED,MAAM,UAAU,YAAY,CAAC,OAA2B;IACtD,OAAO,EAAE,GAAG,cAAc,CAAC,OAAO,CAAC,EAAE,KAAK,CAAC,WAAW,CAAC,IAAwD;YAC7G,IAAI,CAAC,OAAO,CAAC,SAAS;gBAAE,MAAM,IAAI,KAAK,CAAC,qCAAqC,CAAC,CAAC;YAC/E,yEAAyE;YACzE,0EAA0E;YAC1E,OAAO,OAAO,CAAC,OAAO,CAAC,SAAS,CAAC,KAAK,CAAC,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ;gBAC7E,UAAU,EAAE,EAAE,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE,EAAE,IAAI,EAAE,iBAAiB,kBAAkB,CAAC,IAAI,CAAC,MAAM,CAAC,SAAS,EAAE,IAAI,EAAE,EAAE,QAAQ,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC;QAC/I,CAAC,EAAE,CAAC;AACN,CAAC"}
@@ -0,0 +1,4 @@
1
+ import { type EffectDispatcher, type UnavailableHelper } from "../effect-transport.js";
2
+ export type AirtableHelper = UnavailableHelper;
3
+ export declare const createAirtableHelper: (dispatch: EffectDispatcher) => AirtableHelper;
4
+ //# sourceMappingURL=airtable.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"airtable.d.ts","sourceRoot":"","sources":["../../src/helpers/airtable.ts"],"names":[],"mappings":"AAGA,OAAO,EAAc,KAAK,gBAAgB,EAAsB,KAAK,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAEvH,MAAM,MAAM,cAAc,GAAG,iBAAiB,CAAC;AAE/C,eAAO,MAAM,oBAAoB,GAAI,UAAU,gBAAgB,KAAG,cACrB,CAAC"}
@@ -0,0 +1,5 @@
1
+ // GENERATED by scripts/generate-helpers.mjs — do not edit.
2
+ // Run `npm run gen --prefix packages/surface` from the repository root.
3
+ import { bindHelper } from "../effect-transport.js";
4
+ export const createAirtableHelper = (dispatch) => bindHelper("airtable", undefined, dispatch);
5
+ //# sourceMappingURL=airtable.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"airtable.js","sourceRoot":"","sources":["../../src/helpers/airtable.ts"],"names":[],"mappings":"AAAA,2DAA2D;AAC3D,wEAAwE;AAExE,OAAO,EAAE,UAAU,EAAqE,MAAM,wBAAwB,CAAC;AAIvH,MAAM,CAAC,MAAM,oBAAoB,GAAG,CAAC,QAA0B,EAAkB,EAAE,CACjF,UAAU,CAAC,UAAU,EAAE,SAAS,EAAE,QAAQ,CAAC,CAAC"}
@@ -0,0 +1,5 @@
1
+ import { asanaClient } from "@relayfile/relay-helpers";
2
+ import { type EffectDispatcher, type JournalHelper } from "../effect-transport.js";
3
+ export type AsanaHelper = JournalHelper<ReturnType<typeof asanaClient>>;
4
+ export declare const createAsanaHelper: (dispatch: EffectDispatcher) => AsanaHelper;
5
+ //# sourceMappingURL=asana.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"asana.d.ts","sourceRoot":"","sources":["../../src/helpers/asana.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAC;AACvD,OAAO,EAAc,KAAK,gBAAgB,EAAE,KAAK,aAAa,EAAE,MAAM,wBAAwB,CAAC;AAE/F,MAAM,MAAM,WAAW,GAAG,aAAa,CAAC,UAAU,CAAC,OAAO,WAAW,CAAC,CAAC,CAAC;AAExE,eAAO,MAAM,iBAAiB,GAAI,UAAU,gBAAgB,KAAG,WACnB,CAAC"}
@@ -0,0 +1,6 @@
1
+ // GENERATED by scripts/generate-helpers.mjs — do not edit.
2
+ // Run `npm run gen --prefix packages/surface` from the repository root.
3
+ import { asanaClient } from "@relayfile/relay-helpers";
4
+ import { bindHelper } from "../effect-transport.js";
5
+ export const createAsanaHelper = (dispatch) => bindHelper("asana", asanaClient, dispatch);
6
+ //# sourceMappingURL=asana.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"asana.js","sourceRoot":"","sources":["../../src/helpers/asana.ts"],"names":[],"mappings":"AAAA,2DAA2D;AAC3D,wEAAwE;AAExE,OAAO,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAC;AACvD,OAAO,EAAE,UAAU,EAA6C,MAAM,wBAAwB,CAAC;AAI/F,MAAM,CAAC,MAAM,iBAAiB,GAAG,CAAC,QAA0B,EAAe,EAAE,CAC3E,UAAU,CAAC,OAAO,EAAE,WAAW,EAAE,QAAQ,CAAC,CAAC"}
@@ -0,0 +1,5 @@
1
+ import { azureBlobClient } from "@relayfile/relay-helpers";
2
+ import { type EffectDispatcher, type JournalHelper } from "../effect-transport.js";
3
+ export type AzureBlobHelper = JournalHelper<ReturnType<typeof azureBlobClient>>;
4
+ export declare const createAzureBlobHelper: (dispatch: EffectDispatcher) => AzureBlobHelper;
5
+ //# sourceMappingURL=azure-blob.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"azure-blob.d.ts","sourceRoot":"","sources":["../../src/helpers/azure-blob.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,eAAe,EAAE,MAAM,0BAA0B,CAAC;AAC3D,OAAO,EAAc,KAAK,gBAAgB,EAAE,KAAK,aAAa,EAAE,MAAM,wBAAwB,CAAC;AAE/F,MAAM,MAAM,eAAe,GAAG,aAAa,CAAC,UAAU,CAAC,OAAO,eAAe,CAAC,CAAC,CAAC;AAEhF,eAAO,MAAM,qBAAqB,GAAI,UAAU,gBAAgB,KAAG,eACd,CAAC"}
@@ -0,0 +1,6 @@
1
+ // GENERATED by scripts/generate-helpers.mjs — do not edit.
2
+ // Run `npm run gen --prefix packages/surface` from the repository root.
3
+ import { azureBlobClient } from "@relayfile/relay-helpers";
4
+ import { bindHelper } from "../effect-transport.js";
5
+ export const createAzureBlobHelper = (dispatch) => bindHelper("azure-blob", azureBlobClient, dispatch);
6
+ //# sourceMappingURL=azure-blob.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"azure-blob.js","sourceRoot":"","sources":["../../src/helpers/azure-blob.ts"],"names":[],"mappings":"AAAA,2DAA2D;AAC3D,wEAAwE;AAExE,OAAO,EAAE,eAAe,EAAE,MAAM,0BAA0B,CAAC;AAC3D,OAAO,EAAE,UAAU,EAA6C,MAAM,wBAAwB,CAAC;AAI/F,MAAM,CAAC,MAAM,qBAAqB,GAAG,CAAC,QAA0B,EAAmB,EAAE,CACnF,UAAU,CAAC,YAAY,EAAE,eAAe,EAAE,QAAQ,CAAC,CAAC"}