@relayflows/surface 2.0.9 → 2.0.11
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +3 -2
- package/dist/completion.d.ts +2 -0
- package/dist/completion.d.ts.map +1 -1
- package/dist/context.d.ts +27 -6
- package/dist/context.d.ts.map +1 -1
- package/dist/effect-transport.d.ts +22 -0
- package/dist/effect-transport.d.ts.map +1 -0
- package/dist/effect-transport.js +42 -0
- package/dist/effect-transport.js.map +1 -0
- package/dist/flow.d.ts +30 -17
- package/dist/flow.d.ts.map +1 -1
- package/dist/flow.js +58 -73
- package/dist/flow.js.map +1 -1
- package/dist/helper-clients.d.ts +86 -0
- package/dist/helper-clients.d.ts.map +1 -0
- package/dist/helper-clients.js +30 -0
- package/dist/helper-clients.js.map +1 -0
- package/dist/helpers/airtable.d.ts +4 -0
- package/dist/helpers/airtable.d.ts.map +1 -0
- package/dist/helpers/airtable.js +5 -0
- package/dist/helpers/airtable.js.map +1 -0
- package/dist/helpers/asana.d.ts +5 -0
- package/dist/helpers/asana.d.ts.map +1 -0
- package/dist/helpers/asana.js +6 -0
- package/dist/helpers/asana.js.map +1 -0
- package/dist/helpers/azure-blob.d.ts +5 -0
- package/dist/helpers/azure-blob.d.ts.map +1 -0
- package/dist/helpers/azure-blob.js +6 -0
- package/dist/helpers/azure-blob.js.map +1 -0
- package/dist/helpers/box.d.ts +5 -0
- package/dist/helpers/box.d.ts.map +1 -0
- package/dist/helpers/box.js +6 -0
- package/dist/helpers/box.js.map +1 -0
- package/dist/helpers/calendly.d.ts +5 -0
- package/dist/helpers/calendly.d.ts.map +1 -0
- package/dist/helpers/calendly.js +6 -0
- package/dist/helpers/calendly.js.map +1 -0
- package/dist/helpers/clickup.d.ts +5 -0
- package/dist/helpers/clickup.d.ts.map +1 -0
- package/dist/helpers/clickup.js +6 -0
- package/dist/helpers/clickup.js.map +1 -0
- package/dist/helpers/clients.d.ts +3 -0
- package/dist/helpers/clients.d.ts.map +1 -0
- package/dist/helpers/clients.js +46 -0
- package/dist/helpers/clients.js.map +1 -0
- package/dist/helpers/cloudflare.d.ts +5 -0
- package/dist/helpers/cloudflare.d.ts.map +1 -0
- package/dist/helpers/cloudflare.js +6 -0
- package/dist/helpers/cloudflare.js.map +1 -0
- package/dist/helpers/confluence.d.ts +5 -0
- package/dist/helpers/confluence.d.ts.map +1 -0
- package/dist/helpers/confluence.js +6 -0
- package/dist/helpers/confluence.js.map +1 -0
- package/dist/helpers/daytona.d.ts +5 -0
- package/dist/helpers/daytona.d.ts.map +1 -0
- package/dist/helpers/daytona.js +6 -0
- package/dist/helpers/daytona.js.map +1 -0
- package/dist/helpers/docker-hub.d.ts +4 -0
- package/dist/helpers/docker-hub.d.ts.map +1 -0
- package/dist/helpers/docker-hub.js +5 -0
- package/dist/helpers/docker-hub.js.map +1 -0
- package/dist/helpers/dropbox.d.ts +5 -0
- package/dist/helpers/dropbox.d.ts.map +1 -0
- package/dist/helpers/dropbox.js +6 -0
- package/dist/helpers/dropbox.js.map +1 -0
- package/dist/helpers/fathom.d.ts +4 -0
- package/dist/helpers/fathom.d.ts.map +1 -0
- package/dist/helpers/fathom.js +5 -0
- package/dist/helpers/fathom.js.map +1 -0
- package/dist/helpers/gcp.d.ts +4 -0
- package/dist/helpers/gcp.d.ts.map +1 -0
- package/dist/helpers/gcp.js +5 -0
- package/dist/helpers/gcp.js.map +1 -0
- package/dist/helpers/gcs.d.ts +5 -0
- package/dist/helpers/gcs.d.ts.map +1 -0
- package/dist/helpers/gcs.js +6 -0
- package/dist/helpers/gcs.js.map +1 -0
- package/dist/helpers/github.d.ts +5 -0
- package/dist/helpers/github.d.ts.map +1 -0
- package/dist/helpers/github.js +6 -0
- package/dist/helpers/github.js.map +1 -0
- package/dist/helpers/gitlab.d.ts +5 -0
- package/dist/helpers/gitlab.d.ts.map +1 -0
- package/dist/helpers/gitlab.js +6 -0
- package/dist/helpers/gitlab.js.map +1 -0
- package/dist/helpers/gmail.d.ts +5 -0
- package/dist/helpers/gmail.d.ts.map +1 -0
- package/dist/helpers/gmail.js +6 -0
- package/dist/helpers/gmail.js.map +1 -0
- package/dist/helpers/google-calendar.d.ts +5 -0
- package/dist/helpers/google-calendar.d.ts.map +1 -0
- package/dist/helpers/google-calendar.js +6 -0
- package/dist/helpers/google-calendar.js.map +1 -0
- package/dist/helpers/google-drive.d.ts +5 -0
- package/dist/helpers/google-drive.d.ts.map +1 -0
- package/dist/helpers/google-drive.js +6 -0
- package/dist/helpers/google-drive.js.map +1 -0
- package/dist/helpers/granola.d.ts +5 -0
- package/dist/helpers/granola.d.ts.map +1 -0
- package/dist/helpers/granola.js +6 -0
- package/dist/helpers/granola.js.map +1 -0
- package/dist/helpers/hubspot.d.ts +5 -0
- package/dist/helpers/hubspot.d.ts.map +1 -0
- package/dist/helpers/hubspot.js +6 -0
- package/dist/helpers/hubspot.js.map +1 -0
- package/dist/helpers/index.d.ts +155 -0
- package/dist/helpers/index.d.ts.map +1 -0
- package/dist/helpers/index.js +105 -0
- package/dist/helpers/index.js.map +1 -0
- package/dist/helpers/intercom.d.ts +5 -0
- package/dist/helpers/intercom.d.ts.map +1 -0
- package/dist/helpers/intercom.js +6 -0
- package/dist/helpers/intercom.js.map +1 -0
- package/dist/helpers/jira.d.ts +5 -0
- package/dist/helpers/jira.d.ts.map +1 -0
- package/dist/helpers/jira.js +6 -0
- package/dist/helpers/jira.js.map +1 -0
- package/dist/helpers/linear.d.ts +5 -0
- package/dist/helpers/linear.d.ts.map +1 -0
- package/dist/helpers/linear.js +6 -0
- package/dist/helpers/linear.js.map +1 -0
- package/dist/helpers/mailgun.d.ts +5 -0
- package/dist/helpers/mailgun.d.ts.map +1 -0
- package/dist/helpers/mailgun.js +6 -0
- package/dist/helpers/mailgun.js.map +1 -0
- package/dist/helpers/mixpanel.d.ts +5 -0
- package/dist/helpers/mixpanel.d.ts.map +1 -0
- package/dist/helpers/mixpanel.js +6 -0
- package/dist/helpers/mixpanel.js.map +1 -0
- package/dist/helpers/neon.d.ts +4 -0
- package/dist/helpers/neon.d.ts.map +1 -0
- package/dist/helpers/neon.js +5 -0
- package/dist/helpers/neon.js.map +1 -0
- package/dist/helpers/notion.d.ts +5 -0
- package/dist/helpers/notion.d.ts.map +1 -0
- package/dist/helpers/notion.js +6 -0
- package/dist/helpers/notion.js.map +1 -0
- package/dist/helpers/onedrive.d.ts +5 -0
- package/dist/helpers/onedrive.d.ts.map +1 -0
- package/dist/helpers/onedrive.js +6 -0
- package/dist/helpers/onedrive.js.map +1 -0
- package/dist/helpers/pipedrive.d.ts +5 -0
- package/dist/helpers/pipedrive.d.ts.map +1 -0
- package/dist/helpers/pipedrive.js +6 -0
- package/dist/helpers/pipedrive.js.map +1 -0
- package/dist/helpers/postgres.d.ts +5 -0
- package/dist/helpers/postgres.d.ts.map +1 -0
- package/dist/helpers/postgres.js +6 -0
- package/dist/helpers/postgres.js.map +1 -0
- package/dist/helpers/posthog.d.ts +4 -0
- package/dist/helpers/posthog.d.ts.map +1 -0
- package/dist/helpers/posthog.js +5 -0
- package/dist/helpers/posthog.js.map +1 -0
- package/dist/helpers/providers.d.ts +252 -0
- package/dist/helpers/providers.d.ts.map +1 -0
- package/dist/helpers/providers.js +305 -0
- package/dist/helpers/providers.js.map +1 -0
- package/dist/helpers/ramp.d.ts +7 -0
- package/dist/helpers/ramp.d.ts.map +1 -0
- package/dist/helpers/ramp.js +7 -0
- package/dist/helpers/ramp.js.map +1 -0
- package/dist/helpers/recall.d.ts +5 -0
- package/dist/helpers/recall.d.ts.map +1 -0
- package/dist/helpers/recall.js +6 -0
- package/dist/helpers/recall.js.map +1 -0
- package/dist/helpers/reddit.d.ts +5 -0
- package/dist/helpers/reddit.d.ts.map +1 -0
- package/dist/helpers/reddit.js +6 -0
- package/dist/helpers/reddit.js.map +1 -0
- package/dist/helpers/redis.d.ts +5 -0
- package/dist/helpers/redis.d.ts.map +1 -0
- package/dist/helpers/redis.js +6 -0
- package/dist/helpers/redis.js.map +1 -0
- package/dist/helpers/s3.d.ts +5 -0
- package/dist/helpers/s3.d.ts.map +1 -0
- package/dist/helpers/s3.js +6 -0
- package/dist/helpers/s3.js.map +1 -0
- package/dist/helpers/salesforce.d.ts +5 -0
- package/dist/helpers/salesforce.d.ts.map +1 -0
- package/dist/helpers/salesforce.js +6 -0
- package/dist/helpers/salesforce.js.map +1 -0
- package/dist/helpers/segment.d.ts +4 -0
- package/dist/helpers/segment.d.ts.map +1 -0
- package/dist/helpers/segment.js +5 -0
- package/dist/helpers/segment.js.map +1 -0
- package/dist/helpers/sendgrid.d.ts +5 -0
- package/dist/helpers/sendgrid.d.ts.map +1 -0
- package/dist/helpers/sendgrid.js +6 -0
- package/dist/helpers/sendgrid.js.map +1 -0
- package/dist/helpers/sharepoint.d.ts +5 -0
- package/dist/helpers/sharepoint.d.ts.map +1 -0
- package/dist/helpers/sharepoint.js +6 -0
- package/dist/helpers/sharepoint.js.map +1 -0
- package/dist/helpers/shopify.d.ts +4 -0
- package/dist/helpers/shopify.d.ts.map +1 -0
- package/dist/helpers/shopify.js +5 -0
- package/dist/helpers/shopify.js.map +1 -0
- package/dist/helpers/shortcut.d.ts +5 -0
- package/dist/helpers/shortcut.d.ts.map +1 -0
- package/dist/helpers/shortcut.js +6 -0
- package/dist/helpers/shortcut.js.map +1 -0
- package/dist/helpers/slack.d.ts +17 -0
- package/dist/helpers/slack.d.ts.map +1 -0
- package/dist/helpers/slack.js +4 -0
- package/dist/helpers/slack.js.map +1 -0
- package/dist/helpers/stripe.d.ts +5 -0
- package/dist/helpers/stripe.d.ts.map +1 -0
- package/dist/helpers/stripe.js +6 -0
- package/dist/helpers/stripe.js.map +1 -0
- package/dist/helpers/teams.d.ts +5 -0
- package/dist/helpers/teams.d.ts.map +1 -0
- package/dist/helpers/teams.js +6 -0
- package/dist/helpers/teams.js.map +1 -0
- package/dist/helpers/telegram.d.ts +5 -0
- package/dist/helpers/telegram.d.ts.map +1 -0
- package/dist/helpers/telegram.js +6 -0
- package/dist/helpers/telegram.js.map +1 -0
- package/dist/helpers/webhook-server.d.ts +4 -0
- package/dist/helpers/webhook-server.d.ts.map +1 -0
- package/dist/helpers/webhook-server.js +5 -0
- package/dist/helpers/webhook-server.js.map +1 -0
- package/dist/helpers/x.d.ts +4 -0
- package/dist/helpers/x.d.ts.map +1 -0
- package/dist/helpers/x.js +5 -0
- package/dist/helpers/x.js.map +1 -0
- package/dist/helpers/zendesk.d.ts +5 -0
- package/dist/helpers/zendesk.d.ts.map +1 -0
- package/dist/helpers/zendesk.js +6 -0
- package/dist/helpers/zendesk.js.map +1 -0
- package/dist/index.d.ts +11 -4
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +3 -0
- package/dist/index.js.map +1 -1
- package/dist/memory.d.ts +19 -0
- package/dist/memory.d.ts.map +1 -0
- package/dist/memory.js +2 -0
- package/dist/memory.js.map +1 -0
- package/dist/plugin-contract.d.ts +5 -0
- package/dist/plugin-contract.d.ts.map +1 -0
- package/dist/plugin-contract.js +2 -0
- package/dist/plugin-contract.js.map +1 -0
- package/dist/provider-trigger.d.ts +13 -0
- package/dist/provider-trigger.d.ts.map +1 -0
- package/dist/provider-trigger.js +18 -0
- package/dist/provider-trigger.js.map +1 -0
- package/dist/runtime.d.ts +6 -1
- package/dist/runtime.d.ts.map +1 -1
- package/dist/runtime.js +5 -0
- package/dist/runtime.js.map +1 -1
- package/dist/slack.d.ts +34 -0
- package/dist/slack.d.ts.map +1 -0
- package/dist/slack.js +17 -0
- package/dist/slack.js.map +1 -0
- package/dist/step.d.ts +43 -1
- package/dist/step.d.ts.map +1 -1
- package/dist/triggers/github.d.ts +8 -0
- package/dist/triggers/github.d.ts.map +1 -0
- package/dist/triggers/github.js +17 -0
- package/dist/triggers/github.js.map +1 -0
- package/dist/triggers/index.d.ts +8 -0
- package/dist/triggers/index.d.ts.map +1 -0
- package/dist/triggers/index.js +9 -0
- package/dist/triggers/index.js.map +1 -0
- package/dist/triggers/slack.d.ts +8 -0
- package/dist/triggers/slack.d.ts.map +1 -0
- package/dist/triggers/slack.js +17 -0
- package/dist/triggers/slack.js.map +1 -0
- package/dist/triggers.d.ts +15 -0
- package/dist/triggers.d.ts.map +1 -0
- package/dist/triggers.js +43 -0
- package/dist/triggers.js.map +1 -0
- package/package.json +21 -2
- package/src/completion.ts +3 -0
- package/src/context.ts +26 -6
- package/src/effect-transport.ts +59 -0
- package/src/flow.ts +77 -106
- package/src/helper-clients.ts +30 -0
- package/src/helpers/README.md +42 -0
- package/src/helpers/airtable.ts +9 -0
- package/src/helpers/asana.ts +10 -0
- package/src/helpers/azure-blob.ts +10 -0
- package/src/helpers/box.ts +10 -0
- package/src/helpers/calendly.ts +10 -0
- package/src/helpers/clickup.ts +10 -0
- package/src/helpers/clients.ts +48 -0
- package/src/helpers/cloudflare.ts +10 -0
- package/src/helpers/confluence.ts +10 -0
- package/src/helpers/daytona.ts +10 -0
- package/src/helpers/docker-hub.ts +9 -0
- package/src/helpers/dropbox.ts +10 -0
- package/src/helpers/fathom.ts +9 -0
- package/src/helpers/gcp.ts +9 -0
- package/src/helpers/gcs.ts +10 -0
- package/src/helpers/github.ts +10 -0
- package/src/helpers/gitlab.ts +10 -0
- package/src/helpers/gmail.ts +10 -0
- package/src/helpers/google-calendar.ts +10 -0
- package/src/helpers/google-drive.ts +10 -0
- package/src/helpers/granola.ts +10 -0
- package/src/helpers/hubspot.ts +10 -0
- package/src/helpers/index.ts +212 -0
- package/src/helpers/intercom.ts +10 -0
- package/src/helpers/jira.ts +10 -0
- package/src/helpers/linear.ts +10 -0
- package/src/helpers/mailgun.ts +10 -0
- package/src/helpers/mixpanel.ts +10 -0
- package/src/helpers/neon.ts +9 -0
- package/src/helpers/notion.ts +10 -0
- package/src/helpers/onedrive.ts +10 -0
- package/src/helpers/pipedrive.ts +10 -0
- package/src/helpers/postgres.ts +10 -0
- package/src/helpers/posthog.ts +9 -0
- package/src/helpers/providers.ts +305 -0
- package/src/helpers/ramp.ts +12 -0
- package/src/helpers/recall.ts +10 -0
- package/src/helpers/reddit.ts +10 -0
- package/src/helpers/redis.ts +10 -0
- package/src/helpers/s3.ts +10 -0
- package/src/helpers/salesforce.ts +10 -0
- package/src/helpers/segment.ts +9 -0
- package/src/helpers/sendgrid.ts +10 -0
- package/src/helpers/sharepoint.ts +10 -0
- package/src/helpers/shopify.ts +9 -0
- package/src/helpers/shortcut.ts +10 -0
- package/src/helpers/slack.ts +16 -0
- package/src/helpers/stripe.ts +10 -0
- package/src/helpers/teams.ts +10 -0
- package/src/helpers/telegram.ts +10 -0
- package/src/helpers/webhook-server.ts +9 -0
- package/src/helpers/x.ts +9 -0
- package/src/helpers/zendesk.ts +10 -0
- package/src/index.ts +26 -3
- package/src/memory.ts +20 -0
- package/src/plugin-contract.ts +5 -0
- package/src/provider-trigger.ts +26 -0
- package/src/runtime.ts +8 -0
- package/src/slack.ts +47 -0
- package/src/step.ts +52 -1
- package/src/triggers/README.md +75 -0
- package/src/triggers/github.ts +19 -0
- package/src/triggers/index.ts +10 -0
- package/src/triggers/slack.ts +19 -0
- 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.
|
|
30
|
-
|
|
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
|
|
package/dist/completion.d.ts
CHANGED
|
@@ -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
|
package/dist/completion.d.ts.map
CHANGED
|
@@ -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 {
|
|
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,9 +10,21 @@ export interface AgentResult {
|
|
|
8
10
|
export interface AgentOptions {
|
|
9
11
|
task: string;
|
|
10
12
|
workspace?: string;
|
|
11
|
-
/** Overrides a named declaration's (or the flow/project default's) CLI for this step only. */
|
|
12
13
|
cli?: string;
|
|
13
|
-
|
|
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;
|
|
14
28
|
model?: string;
|
|
15
29
|
}
|
|
16
30
|
/**
|
|
@@ -19,15 +33,22 @@ export interface AgentOptions {
|
|
|
19
33
|
* This package declares the authoring contract only. It cannot construct a
|
|
20
34
|
* context or execute a step, so all effects remain behind the journal client.
|
|
21
35
|
*/
|
|
22
|
-
export interface Ctx {
|
|
23
|
-
|
|
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>;
|
|
24
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>;
|
|
25
45
|
agent(name: string, options: AgentOptions): Step<AgentResult>;
|
|
26
46
|
human(question: string, options: {
|
|
27
47
|
to: string;
|
|
28
48
|
}): Promise<boolean>;
|
|
29
49
|
dispatch<T>(flow: string, input: unknown): Promise<T>;
|
|
30
|
-
done(reason:
|
|
50
|
+
done(reason: FlowCompletionReason): void;
|
|
31
51
|
cloud: CloudHelper;
|
|
52
|
+
memory: MemoryHelper;
|
|
32
53
|
}
|
|
33
54
|
//# sourceMappingURL=context.d.ts.map
|
package/dist/context.d.ts.map
CHANGED
|
@@ -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,
|
|
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,59 +1,72 @@
|
|
|
1
|
+
import type { Helpers } from "./helpers/index.js";
|
|
2
|
+
type HelperTools = Partial<Record<keyof Helpers, boolean>>;
|
|
1
3
|
import type { Ctx } from "./context.js";
|
|
2
|
-
|
|
3
|
-
* A reusable agent CLI/model pair, selectable by name from `f.agent(name, ...)`.
|
|
4
|
-
* Both fields are required so selecting a named agent can never inherit a
|
|
5
|
-
* host model — mirrors the kernel-spec dialect's `NamedAgentSpec`
|
|
6
|
-
* (`packages/sdk/src/spec.ts`), which this compiles into.
|
|
7
|
-
*/
|
|
8
|
-
export interface NamedAgentDeclaration {
|
|
9
|
-
cli: string;
|
|
10
|
-
model: string;
|
|
11
|
-
}
|
|
4
|
+
import { type TriggerSource } from "./triggers.js";
|
|
12
5
|
/** Optional escalation header; the empty header is the common case. */
|
|
13
6
|
export interface FlowHeader {
|
|
7
|
+
/** Relative paths to reusable authored flows composed by this body. */
|
|
8
|
+
use?: string[];
|
|
14
9
|
identity?: string;
|
|
15
10
|
memory?: {
|
|
16
11
|
script?: boolean;
|
|
17
12
|
agent?: boolean;
|
|
18
13
|
};
|
|
19
|
-
budget?: string
|
|
20
|
-
|
|
14
|
+
budget?: string | {
|
|
15
|
+
tokens?: number;
|
|
16
|
+
dollars?: number;
|
|
17
|
+
wallclock?: string;
|
|
18
|
+
};
|
|
19
|
+
tools?: HelperTools & {
|
|
21
20
|
relayfile?: string[];
|
|
22
21
|
mcp?: string[];
|
|
23
22
|
};
|
|
24
23
|
workspace?: string;
|
|
25
|
-
agents?: Record<string, NamedAgentDeclaration>;
|
|
26
24
|
}
|
|
27
25
|
export type FlowBody<Input = unknown> = (f: Ctx, input: Input) => Promise<void>;
|
|
28
26
|
export interface ReadonlyFlowHeader {
|
|
27
|
+
readonly use?: readonly string[];
|
|
29
28
|
readonly identity?: string;
|
|
30
29
|
readonly memory?: Readonly<{
|
|
31
30
|
script?: boolean;
|
|
32
31
|
agent?: boolean;
|
|
33
32
|
}>;
|
|
34
|
-
readonly budget?: string
|
|
35
|
-
|
|
33
|
+
readonly budget?: string | Readonly<{
|
|
34
|
+
tokens?: number;
|
|
35
|
+
dollars?: number;
|
|
36
|
+
wallclock?: string;
|
|
37
|
+
}>;
|
|
38
|
+
readonly tools?: Readonly<HelperTools & {
|
|
39
|
+
slack?: boolean;
|
|
36
40
|
relayfile?: readonly string[];
|
|
37
41
|
mcp?: readonly string[];
|
|
38
42
|
}>;
|
|
39
43
|
readonly workspace?: string;
|
|
40
|
-
readonly agents?: Readonly<Record<string, Readonly<NamedAgentDeclaration>>>;
|
|
41
44
|
}
|
|
42
45
|
/** Immutable definition retained for the SDK's journal-backed runtime. */
|
|
43
46
|
export interface AuthoredFlowDefinition<Input = unknown> {
|
|
44
47
|
readonly name: string;
|
|
45
48
|
readonly header: ReadonlyFlowHeader;
|
|
46
49
|
readonly body: FlowBody<Input>;
|
|
50
|
+
readonly handlers: readonly TriggerHandler[];
|
|
51
|
+
}
|
|
52
|
+
export interface TriggerHandler {
|
|
53
|
+
readonly trigger: TriggerSource;
|
|
54
|
+
readonly body: FlowBody;
|
|
47
55
|
}
|
|
48
56
|
/** Opaque authored-flow handle. Execution stays behind the journal runtime. */
|
|
49
57
|
export interface FlowHandle {
|
|
50
58
|
readonly name: string;
|
|
59
|
+
on<Event = Record<string, unknown>>(trigger: TriggerSource, body: FlowBody<Event>): TriggeredFlowHandle;
|
|
60
|
+
}
|
|
61
|
+
export interface TriggeredFlowHandle extends FlowHandle {
|
|
51
62
|
}
|
|
63
|
+
export declare function flow(name: string, header?: FlowHeader): FlowHandle;
|
|
52
64
|
export declare function flow<Input = unknown>(name: string, body: FlowBody<Input>): FlowHandle;
|
|
53
65
|
export declare function flow<Input = unknown>(name: string, header: FlowHeader, body: FlowBody<Input>): FlowHandle;
|
|
54
66
|
/**
|
|
55
67
|
* Runtime bridge used by the SDK after it imports an authored `.flow.ts`.
|
|
56
68
|
* The root package deliberately does not re-export this accessor.
|
|
57
69
|
*/
|
|
58
|
-
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 {};
|
|
59
72
|
//# sourceMappingURL=flow.d.ts.map
|
package/dist/flow.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"flow.d.ts","sourceRoot":"","sources":["../src/flow.ts"],"names":[],"mappings":"
|
|
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
|
-
|
|
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,12 +79,12 @@ 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",
|
|
63
86
|
"tools",
|
|
64
87
|
"workspace",
|
|
65
|
-
"agents",
|
|
66
88
|
].includes(field));
|
|
67
89
|
if (unknownFields.length > 0) {
|
|
68
90
|
throw new TypeError(`flow header has unknown fields: ${unknownFields.join(", ")}`);
|
|
@@ -73,6 +95,8 @@ function freezeHeader(header) {
|
|
|
73
95
|
const tools = header.tools === undefined
|
|
74
96
|
? undefined
|
|
75
97
|
: Object.freeze({
|
|
98
|
+
...Object.fromEntries(helperProviders.filter(p => header.tools?.[p.namespace] !== undefined)
|
|
99
|
+
.map(p => [p.namespace, header.tools[p.namespace]])),
|
|
76
100
|
...(header.tools.relayfile === undefined
|
|
77
101
|
? {}
|
|
78
102
|
: { relayfile: Object.freeze([...header.tools.relayfile]) }),
|
|
@@ -80,31 +104,38 @@ function freezeHeader(header) {
|
|
|
80
104
|
? {}
|
|
81
105
|
: { mcp: Object.freeze([...header.tools.mcp]) }),
|
|
82
106
|
});
|
|
83
|
-
const agents = header.agents === undefined
|
|
84
|
-
? undefined
|
|
85
|
-
: Object.freeze(Object.fromEntries(ownDataEntries(header.agents, "header.agents").map(([name, declaration]) => {
|
|
86
|
-
// Validated by assertFlowHeader's own ownDataEntries pass before
|
|
87
|
-
// this ever runs: exactly {cli, model}, both non-empty trimmed
|
|
88
|
-
// strings, read as data properties (never through a getter).
|
|
89
|
-
const record = declaration;
|
|
90
|
-
return [name, Object.freeze({ cli: record.cli, model: record.model })];
|
|
91
|
-
})));
|
|
92
107
|
return Object.freeze({
|
|
108
|
+
...(header.use === undefined ? {} : { use: Object.freeze([...header.use]) }),
|
|
93
109
|
...(header.identity === undefined ? {} : { identity: header.identity }),
|
|
94
110
|
...(memory === undefined ? {} : { memory }),
|
|
95
|
-
...(header.budget === undefined ? {} : { budget: header.budget }),
|
|
111
|
+
...(header.budget === undefined ? {} : { budget: typeof header.budget === "string" ? header.budget : Object.freeze({ ...header.budget }) }),
|
|
96
112
|
...(tools === undefined ? {} : { tools }),
|
|
97
113
|
...(header.workspace === undefined ? {} : { workspace: header.workspace }),
|
|
98
|
-
...(agents === undefined ? {} : { agents }),
|
|
99
114
|
});
|
|
100
115
|
}
|
|
101
116
|
function assertFlowHeader(value, flowName) {
|
|
102
117
|
const at = `unsupported_header: flow "${flowName}" header`;
|
|
103
118
|
assertHeaderObject(value, at);
|
|
104
|
-
assertKnownKeys(value, ["identity", "memory", "budget", "tools", "workspace"
|
|
119
|
+
assertKnownKeys(value, ["use", "identity", "memory", "budget", "tools", "workspace"], at);
|
|
105
120
|
assertOptionalString(value, "identity", at);
|
|
106
|
-
|
|
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
|
+
}
|
|
107
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
|
+
}
|
|
108
139
|
if (value.memory !== undefined) {
|
|
109
140
|
assertHeaderObject(value.memory, `${at}.memory`);
|
|
110
141
|
assertKnownKeys(value.memory, ["script", "agent"], `${at}.memory`);
|
|
@@ -113,47 +144,12 @@ function assertFlowHeader(value, flowName) {
|
|
|
113
144
|
}
|
|
114
145
|
if (value.tools !== undefined) {
|
|
115
146
|
assertHeaderObject(value.tools, `${at}.tools`);
|
|
116
|
-
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`);
|
|
117
150
|
assertOptionalStringArray(value.tools, "relayfile", `${at}.tools`);
|
|
118
151
|
assertOptionalStringArray(value.tools, "mcp", `${at}.tools`);
|
|
119
152
|
}
|
|
120
|
-
if (value.agents !== undefined) {
|
|
121
|
-
assertHeaderObject(value.agents, `${at}.agents`);
|
|
122
|
-
for (const [name, declaration] of ownDataEntries(value.agents, `${at}.agents`)) {
|
|
123
|
-
if (name !== name.trim() || name.length === 0) {
|
|
124
|
-
throw new TypeError(`${at}.agents: agent name ${JSON.stringify(name)} must be a non-empty, trimmed string`);
|
|
125
|
-
}
|
|
126
|
-
const declarationAt = `${at}.agents.${name}`;
|
|
127
|
-
assertHeaderObject(declaration, declarationAt);
|
|
128
|
-
assertKnownKeys(declaration, ["cli", "model"], declarationAt);
|
|
129
|
-
assertRequiredTrimmedString(declaration, "cli", declarationAt);
|
|
130
|
-
assertRequiredTrimmedString(declaration, "model", declarationAt);
|
|
131
|
-
}
|
|
132
|
-
}
|
|
133
|
-
}
|
|
134
|
-
/**
|
|
135
|
-
* Reads every own property of `value` via its descriptor rather than
|
|
136
|
-
* `Object.entries`/property access, so an accessor (getter) property is
|
|
137
|
-
* REJECTED — never invoked — instead of being enumerated as if it were
|
|
138
|
-
* ordinary data. `Object.entries` would call the getter, and a stateful
|
|
139
|
-
* getter can legally answer validation with one value and a second,
|
|
140
|
-
* unvalidated read (e.g. during freezing) with a different one — the closed
|
|
141
|
-
* declaration contract must not depend on a property being well-behaved
|
|
142
|
-
* across two separate reads.
|
|
143
|
-
*/
|
|
144
|
-
function ownDataEntries(value, at) {
|
|
145
|
-
const entries = [];
|
|
146
|
-
for (const key of Reflect.ownKeys(value)) {
|
|
147
|
-
if (typeof key !== "string") {
|
|
148
|
-
throw new TypeError(`${at}: unknown field ${JSON.stringify(String(key))}`);
|
|
149
|
-
}
|
|
150
|
-
const descriptor = Object.getOwnPropertyDescriptor(value, key);
|
|
151
|
-
if (descriptor === undefined || !("value" in descriptor)) {
|
|
152
|
-
throw new TypeError(`${at}.${key}: expected a data property`);
|
|
153
|
-
}
|
|
154
|
-
entries.push([key, descriptor.value]);
|
|
155
|
-
}
|
|
156
|
-
return entries;
|
|
157
153
|
}
|
|
158
154
|
function assertHeaderObject(value, at) {
|
|
159
155
|
if (typeof value !== "object" || value === null || Array.isArray(value)) {
|
|
@@ -181,22 +177,6 @@ function assertOptionalString(value, key, at) {
|
|
|
181
177
|
throw new TypeError(`${at}.${key}: expected a string`);
|
|
182
178
|
}
|
|
183
179
|
}
|
|
184
|
-
/**
|
|
185
|
-
* Requires a trimmed, non-empty string — not merely non-empty-after-trim.
|
|
186
|
-
* The SDK's own project-config schema only accepts already-trimmed model/cli
|
|
187
|
-
* strings (`readProjectConfig`, cli/check.ts); accepting untrimmed values
|
|
188
|
-
* here would let a flow author declare " claude " and have it validate at
|
|
189
|
-
* authoring time but fail later at f.agent preflight, moving a defect from
|
|
190
|
-
* authoring to execution instead of catching it up front.
|
|
191
|
-
*/
|
|
192
|
-
function assertRequiredTrimmedString(value, key, at) {
|
|
193
|
-
if (typeof value[key] !== "string" || value[key].length === 0) {
|
|
194
|
-
throw new TypeError(`${at}.${key}: expected a non-empty string`);
|
|
195
|
-
}
|
|
196
|
-
if (value[key] !== value[key].trim()) {
|
|
197
|
-
throw new TypeError(`${at}.${key}: must not have leading or trailing whitespace`);
|
|
198
|
-
}
|
|
199
|
-
}
|
|
200
180
|
function assertOptionalBoolean(value, key, at) {
|
|
201
181
|
if (value[key] !== undefined && typeof value[key] !== "boolean") {
|
|
202
182
|
throw new TypeError(`${at}.${key}: expected a boolean`);
|
|
@@ -205,8 +185,13 @@ function assertOptionalBoolean(value, key, at) {
|
|
|
205
185
|
function assertOptionalStringArray(value, key, at) {
|
|
206
186
|
const candidate = value[key];
|
|
207
187
|
if (candidate !== undefined
|
|
208
|
-
&& (!Array.isArray(candidate) || candidate.some((item) => typeof item !== "string"))) {
|
|
188
|
+
&& (!Array.isArray(candidate) || Array.from(candidate).some((item) => typeof item !== "string"))) {
|
|
209
189
|
throw new TypeError(`${at}.${key}: expected an array of strings`);
|
|
210
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
|
+
}
|
|
211
196
|
}
|
|
212
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":"
|
|
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"}
|