@notionhq/apps 0.0.16 → 0.0.18
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/AGENTS.md +27 -0
- package/README.md +86 -36
- package/dist/connections.d.ts +39 -11
- package/dist/connections.d.ts.map +1 -1
- package/dist/connections.js +85 -21
- package/dist/index.d.ts +2 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +2 -0
- package/dist/notion-as-code/database.d.ts +89 -48
- package/dist/notion-as-code/database.d.ts.map +1 -1
- package/dist/notion-as-code/database.js +132 -45
- package/dist/notion-as-code/database.test.d.ts +2 -0
- package/dist/notion-as-code/database.test.d.ts.map +1 -0
- package/dist/notion-as-code/handles.d.ts +2 -0
- package/dist/notion-as-code/handles.d.ts.map +1 -1
- package/dist/notion-as-code/handles.js +2 -0
- package/dist/notion-as-code/index.d.ts +5 -2
- package/dist/notion-as-code/index.d.ts.map +1 -1
- package/dist/notion-as-code/intents.d.ts +36 -3
- package/dist/notion-as-code/intents.d.ts.map +1 -1
- package/dist/notion-as-code/schema.d.ts +8 -4
- package/dist/notion-as-code/schema.d.ts.map +1 -1
- package/dist/notion-as-code/view.d.ts +12 -0
- package/dist/notion-as-code/view.d.ts.map +1 -0
- package/dist/notion-as-code/view.js +13 -0
- package/dist/notion-as-code/views-types.test.d.ts +2 -0
- package/dist/notion-as-code/views-types.test.d.ts.map +1 -0
- package/dist/notion-as-code/views.d.ts +488 -0
- package/dist/notion-as-code/views.d.ts.map +1 -0
- package/dist/notion-as-code/views.js +0 -0
- package/dist/oauth.d.ts +11 -0
- package/dist/oauth.d.ts.map +1 -0
- package/dist/oauth.js +26 -0
- package/dist/providers.generated.d.ts +26 -86
- package/dist/providers.generated.d.ts.map +1 -1
- package/dist/providers.generated.js +54 -66
- package/dist/sync.d.ts +33 -15
- package/dist/sync.d.ts.map +1 -1
- package/dist/sync.js +12 -0
- package/dist/triggers.generated.d.ts +3 -3
- package/dist/triggers.generated.d.ts.map +1 -1
- package/dist/workflow-state.d.ts +13 -0
- package/dist/workflow-state.d.ts.map +1 -0
- package/dist/workflow-state.js +107 -0
- package/dist/workflow.d.ts +56 -11
- package/dist/workflow.d.ts.map +1 -1
- package/dist/workflow.js +123 -10
- package/docs/BUILD.md +96 -0
- package/docs/CONNECTIONS.md +70 -22
- package/package.json +1 -1
- package/skills/connections/SKILL.md +7 -8
- package/skills/notion-as-code/SKILL.md +88 -50
- package/skills/sync/SKILL.md +21 -18
- package/skills/workflow/SKILL.md +52 -3
- package/src/cli/build.test.ts +124 -64
- package/src/connections.test.ts +205 -41
- package/src/connections.ts +144 -38
- package/src/index.ts +2 -0
- package/src/notion-as-code/database.test.ts +661 -0
- package/src/notion-as-code/database.ts +346 -129
- package/src/notion-as-code/handles.ts +2 -0
- package/src/notion-as-code/index.ts +71 -1
- package/src/notion-as-code/intents.ts +41 -4
- package/src/notion-as-code/schema.ts +11 -3
- package/src/notion-as-code/view.ts +23 -0
- package/src/notion-as-code/views-types.test.ts +59 -0
- package/src/notion-as-code/views.ts +573 -0
- package/src/oauth.ts +40 -0
- package/src/providers.generated.ts +68 -163
- package/src/sync.test.ts +295 -0
- package/src/sync.ts +85 -21
- package/src/triggers.generated.ts +4 -4
- package/src/workflow-connections-types.test.ts +16 -10
- package/src/workflow-state.ts +152 -0
- package/src/workflow-types.test.ts +88 -16
- package/src/workflow.test.ts +374 -18
- package/src/workflow.ts +211 -23
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"providers.generated.d.ts","sourceRoot":"","sources":["../src/providers.generated.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,yBAAyB,CAAA;AACtE,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAA;AAC1D,OAAO,EAAE,wBAAwB,EAAE,MAAM,yBAAyB,CAAA;AAClE,OAAO,EAAE,qBAAqB,EAAE,MAAM,sBAAsB,CAAA;AAC5D,OAAO,EAAE,gCAAgC,EAAE,MAAM,iCAAiC,CAAA;AAClF,OAAO,EAAE,uBAAuB,EAAE,MAAM,wBAAwB,CAAA;AAChE,OAAO,EAAE,sBAAsB,EAAE,MAAM,uBAAuB,CAAA;AAC9D,OAAO,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAA;AACxD,OAAO,EAAE,0BAA0B,EAAE,MAAM,2BAA2B,CAAA;AACtE,OAAO,EAAE,qBAAqB,EAAE,MAAM,sBAAsB,CAAA;AAC5D,OAAO,EAAE,8BAA8B,EAAE,MAAM,+BAA+B,CAAA;AAC9E,OAAO,EAAE,2BAA2B,EAAE,MAAM,4BAA4B,CAAA;AACxE,OAAO,EAAE,uBAAuB,EAAE,MAAM,wBAAwB,CAAA;AAChE,OAAO,EAAE,0BAA0B,EAAE,MAAM,2BAA2B,CAAA;AACtE,eAAO,MAAM,WAAW;;;;;;;;;;;;;CAavB,CAAA;AACD,MAAM,MAAM,
|
|
1
|
+
{"version":3,"file":"providers.generated.d.ts","sourceRoot":"","sources":["../src/providers.generated.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,yBAAyB,CAAA;AACtE,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAA;AAC1D,OAAO,EAAE,wBAAwB,EAAE,MAAM,yBAAyB,CAAA;AAClE,OAAO,EAAE,qBAAqB,EAAE,MAAM,sBAAsB,CAAA;AAC5D,OAAO,EAAE,gCAAgC,EAAE,MAAM,iCAAiC,CAAA;AAClF,OAAO,EAAE,uBAAuB,EAAE,MAAM,wBAAwB,CAAA;AAChE,OAAO,EAAE,sBAAsB,EAAE,MAAM,uBAAuB,CAAA;AAC9D,OAAO,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAA;AACxD,OAAO,EAAE,0BAA0B,EAAE,MAAM,2BAA2B,CAAA;AACtE,OAAO,EAAE,qBAAqB,EAAE,MAAM,sBAAsB,CAAA;AAC5D,OAAO,EAAE,8BAA8B,EAAE,MAAM,+BAA+B,CAAA;AAC9E,OAAO,EAAE,2BAA2B,EAAE,MAAM,4BAA4B,CAAA;AACxE,OAAO,EAAE,uBAAuB,EAAE,MAAM,wBAAwB,CAAA;AAChE,OAAO,EAAE,0BAA0B,EAAE,MAAM,2BAA2B,CAAA;AACtE,eAAO,MAAM,WAAW;;;;;;;;;;;;;CAavB,CAAA;AACD,MAAM,MAAM,iBAAiB,GAAG;IAC/B,QAAQ,EAAE,wBAAwB,CAAA;IAClC,KAAK,EAAE,qBAAqB,CAAA;IAC5B,gBAAgB,EAAE,gCAAgC,CAAA;IAClD,OAAO,EAAE,uBAAuB,CAAA;IAChC,MAAM,EAAE,sBAAsB,CAAA;IAC9B,GAAG,EAAE,mBAAmB,CAAA;IACxB,UAAU,EAAE,0BAA0B,CAAA;IACtC,KAAK,EAAE,qBAAqB,CAAA;IAC5B,cAAc,EAAE,8BAA8B,CAAA;IAC9C,WAAW,EAAE,2BAA2B,CAAA;IACxC,OAAO,EAAE,uBAAuB,CAAA;IAChC,UAAU,EAAE,0BAA0B,CAAA;CACtC,CAAA;AACD,wBAAgB,sBAAsB,CACrC,QAAQ,EAAE,MAAM,EAChB,OAAO,EAAE,uBAAuB,GAC9B,iBAAiB,CAAC,MAAM,iBAAiB,CAAC,CA6B5C;AACD,iBAAS,QAAQ,IAAI,kBAAkB,CAAC,UAAU,CAAC,CAElD;AACD,iBAAS,KAAK,IAAI,kBAAkB,CAAC,OAAO,CAAC,CAE5C;AACD,iBAAS,gBAAgB,IAAI,kBAAkB,CAAC,kBAAkB,CAAC,CAElE;AACD,iBAAS,OAAO,IAAI,kBAAkB,CAAC,SAAS,CAAC,CAEhD;AACD,iBAAS,MAAM,IAAI,kBAAkB,CAAC,QAAQ,CAAC,CAE9C;AACD,iBAAS,GAAG,IAAI,kBAAkB,CAAC,KAAK,CAAC,CAExC;AACD,iBAAS,UAAU,IAAI,kBAAkB,CAAC,YAAY,CAAC,CAEtD;AACD,iBAAS,KAAK,IAAI,kBAAkB,CAAC,OAAO,CAAC,CAE5C;AACD,iBAAS,cAAc,IAAI,kBAAkB,CAAC,gBAAgB,CAAC,CAE9D;AACD,iBAAS,WAAW,IAAI,kBAAkB,CAAC,aAAa,CAAC,CAExD;AACD,iBAAS,OAAO,IAAI,kBAAkB,CAAC,SAAS,CAAC,CAEhD;AACD,iBAAS,UAAU,IAAI,kBAAkB,CAAC,YAAY,CAAC,CAEtD"}
|
|
@@ -24,85 +24,73 @@ const connections = {
|
|
|
24
24
|
outlook,
|
|
25
25
|
salesforce
|
|
26
26
|
};
|
|
27
|
-
function
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
return new CalendarConnectionClient(invoker
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
return new
|
|
37
|
-
|
|
38
|
-
);
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
return new
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
return new
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
return new GoogleCalendarConnectionClient(invoker("googleCalendar", key));
|
|
57
|
-
},
|
|
58
|
-
googleDrive(key = "googleDrive") {
|
|
59
|
-
return new GoogleDriveConnectionClient(invoker("googleDrive", key));
|
|
60
|
-
},
|
|
61
|
-
outlook(key = "outlook") {
|
|
62
|
-
return new OutlookConnectionClient(invoker("outlook", key));
|
|
63
|
-
},
|
|
64
|
-
salesforce(key = "salesforce") {
|
|
65
|
-
return new SalesforceConnectionClient(invoker("salesforce", key));
|
|
66
|
-
}
|
|
67
|
-
};
|
|
27
|
+
function createConnectionClient(provider, invoker) {
|
|
28
|
+
switch (provider) {
|
|
29
|
+
case "calendar":
|
|
30
|
+
return new CalendarConnectionClient(invoker);
|
|
31
|
+
case "slack":
|
|
32
|
+
return new SlackConnectionClient(invoker);
|
|
33
|
+
case "googleDriveOauth":
|
|
34
|
+
return new GoogleDriveOauthConnectionClient(invoker);
|
|
35
|
+
case "discord":
|
|
36
|
+
return new DiscordConnectionClient(invoker);
|
|
37
|
+
case "cursor":
|
|
38
|
+
return new CursorConnectionClient(invoker);
|
|
39
|
+
case "box":
|
|
40
|
+
return new BoxConnectionClient(invoker);
|
|
41
|
+
case "confluence":
|
|
42
|
+
return new ConfluenceConnectionClient(invoker);
|
|
43
|
+
case "gmail":
|
|
44
|
+
return new GmailConnectionClient(invoker);
|
|
45
|
+
case "googleCalendar":
|
|
46
|
+
return new GoogleCalendarConnectionClient(invoker);
|
|
47
|
+
case "googleDrive":
|
|
48
|
+
return new GoogleDriveConnectionClient(invoker);
|
|
49
|
+
case "outlook":
|
|
50
|
+
return new OutlookConnectionClient(invoker);
|
|
51
|
+
case "salesforce":
|
|
52
|
+
return new SalesforceConnectionClient(invoker);
|
|
53
|
+
default:
|
|
54
|
+
throw new Error("Unsupported connection provider: " + provider);
|
|
55
|
+
}
|
|
68
56
|
}
|
|
69
|
-
function calendar(
|
|
70
|
-
return { type: "calendar"
|
|
57
|
+
function calendar() {
|
|
58
|
+
return { type: "calendar" };
|
|
71
59
|
}
|
|
72
|
-
function slack(
|
|
73
|
-
return { type: "slack"
|
|
60
|
+
function slack() {
|
|
61
|
+
return { type: "slack" };
|
|
74
62
|
}
|
|
75
|
-
function googleDriveOauth(
|
|
76
|
-
return { type: "googleDriveOauth"
|
|
63
|
+
function googleDriveOauth() {
|
|
64
|
+
return { type: "googleDriveOauth" };
|
|
77
65
|
}
|
|
78
|
-
function discord(
|
|
79
|
-
return { type: "discord"
|
|
66
|
+
function discord() {
|
|
67
|
+
return { type: "discord" };
|
|
80
68
|
}
|
|
81
|
-
function cursor(
|
|
82
|
-
return { type: "cursor"
|
|
69
|
+
function cursor() {
|
|
70
|
+
return { type: "cursor" };
|
|
83
71
|
}
|
|
84
|
-
function box(
|
|
85
|
-
return { type: "box"
|
|
72
|
+
function box() {
|
|
73
|
+
return { type: "box" };
|
|
86
74
|
}
|
|
87
|
-
function confluence(
|
|
88
|
-
return { type: "confluence"
|
|
75
|
+
function confluence() {
|
|
76
|
+
return { type: "confluence" };
|
|
89
77
|
}
|
|
90
|
-
function gmail(
|
|
91
|
-
return { type: "gmail"
|
|
78
|
+
function gmail() {
|
|
79
|
+
return { type: "gmail" };
|
|
92
80
|
}
|
|
93
|
-
function googleCalendar(
|
|
94
|
-
return { type: "googleCalendar"
|
|
81
|
+
function googleCalendar() {
|
|
82
|
+
return { type: "googleCalendar" };
|
|
95
83
|
}
|
|
96
|
-
function googleDrive(
|
|
97
|
-
return { type: "googleDrive"
|
|
84
|
+
function googleDrive() {
|
|
85
|
+
return { type: "googleDrive" };
|
|
98
86
|
}
|
|
99
|
-
function outlook(
|
|
100
|
-
return { type: "outlook"
|
|
87
|
+
function outlook() {
|
|
88
|
+
return { type: "outlook" };
|
|
101
89
|
}
|
|
102
|
-
function salesforce(
|
|
103
|
-
return { type: "salesforce"
|
|
90
|
+
function salesforce() {
|
|
91
|
+
return { type: "salesforce" };
|
|
104
92
|
}
|
|
105
93
|
export {
|
|
106
94
|
connections,
|
|
107
|
-
|
|
95
|
+
createConnectionClient
|
|
108
96
|
};
|
package/dist/sync.d.ts
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import type { CapabilityContext } from "./context.js";
|
|
2
2
|
import type { Database } from "./database.js";
|
|
3
3
|
import type { DataSourceHandle } from "./notion-as-code/database.js";
|
|
4
|
-
import type {
|
|
5
|
-
import type {
|
|
4
|
+
import type { NotionAsCodeSchema } from "./notion-as-code/intents.js";
|
|
5
|
+
import type { AppsSchemaForSchema } from "./notion-as-code/schema.js";
|
|
6
6
|
import { type PacerEntry } from "./pacer.js";
|
|
7
7
|
import type { DatabaseSchema, PropertyConfiguration, TextProperty, TitleProperty } from "./schema.js";
|
|
8
8
|
import type { Cover, HandlerOptions, Icon, NormalizedSchedule, PeopleValue, PlaceValue, RelationValue, Schedule, TextValue } from "./types.js";
|
|
@@ -18,13 +18,35 @@ type PropertyValue<T extends PropertyConfiguration> = T extends {
|
|
|
18
18
|
} ? PlaceValue : T extends {
|
|
19
19
|
type: "relation";
|
|
20
20
|
} ? RelationValue : TextValue;
|
|
21
|
+
type SyncPropertyName<S extends DatabaseSchema> = Extract<keyof S, string>;
|
|
22
|
+
/**
|
|
23
|
+
* Collect unknown property names across the whole inferred change union before checking it.
|
|
24
|
+
* Otherwise a valid subset properties object could structurally hide an invalid sibling row.
|
|
25
|
+
*/
|
|
26
|
+
type SyncUnknownPropertyNames<AllowedPropertyNames extends string, Change> = Change extends {
|
|
27
|
+
type: "upsert";
|
|
28
|
+
properties: infer Properties extends object;
|
|
29
|
+
} ? Exclude<keyof Properties, AllowedPropertyNames> : never;
|
|
30
|
+
/** Require at least one key while keeping all other keys optional. */
|
|
31
|
+
type AtLeastOne<T extends object> = Partial<T> & {
|
|
32
|
+
[RequiredKey in keyof T]-?: Required<Pick<T, RequiredKey>>;
|
|
33
|
+
}[keyof T];
|
|
34
|
+
type SyncUpsertProperties<S extends DatabaseSchema, PrimaryKey extends KeyPropertyName<S>> = AtLeastOne<{
|
|
35
|
+
[P in Exclude<SyncPropertyName<S>, PrimaryKey>]: PropertyValue<S[P]>;
|
|
36
|
+
}>;
|
|
37
|
+
type ExactSyncHandlerResult<AllowedPropertyNames extends string, Result extends {
|
|
38
|
+
changes: readonly unknown[];
|
|
39
|
+
}> = Result & {
|
|
40
|
+
changes: [SyncUnknownPropertyNames<AllowedPropertyNames, Result["changes"][number]>] extends [
|
|
41
|
+
never
|
|
42
|
+
] ? Result["changes"] : never;
|
|
43
|
+
};
|
|
21
44
|
export type SyncMode = "replace" | "incremental";
|
|
45
|
+
/** Upsert one or more known non-primary-key properties; the key is supplied separately. */
|
|
22
46
|
export type SyncChangeUpsert<S extends DatabaseSchema, PrimaryKey extends KeyPropertyName<S>> = {
|
|
23
47
|
type: "upsert";
|
|
24
48
|
key: string;
|
|
25
|
-
properties:
|
|
26
|
-
[P in keyof S]: PropertyValue<S[P]>;
|
|
27
|
-
}, PrimaryKey>;
|
|
49
|
+
properties: SyncUpsertProperties<S, PrimaryKey>;
|
|
28
50
|
upstreamUpdatedAt?: string;
|
|
29
51
|
icon?: Icon;
|
|
30
52
|
cover?: Cover;
|
|
@@ -40,20 +62,16 @@ export type SyncHandlerResult<S extends DatabaseSchema, PrimaryKey extends KeyPr
|
|
|
40
62
|
hasMore?: boolean;
|
|
41
63
|
nextState?: State;
|
|
42
64
|
};
|
|
43
|
-
export type SyncConfiguration<S extends DatabaseSchema, PrimaryKey extends KeyPropertyName<S>, State> = {
|
|
65
|
+
export type SyncConfiguration<S extends DatabaseSchema, PrimaryKey extends KeyPropertyName<S>, State, Result extends SyncHandlerResult<S, PrimaryKey, State> = SyncHandlerResult<S, PrimaryKey, State>> = {
|
|
44
66
|
database: Database<S>;
|
|
45
67
|
primaryKey: PrimaryKey;
|
|
46
68
|
mode?: SyncMode;
|
|
47
69
|
schedule?: Schedule;
|
|
48
|
-
handler: (state: State | undefined, context: CapabilityContext) => Promise<SyncHandlerResult<NoInfer<S>, NoInfer<PrimaryKey>, State>>;
|
|
70
|
+
handler: (state: State | undefined, context: CapabilityContext) => Promise<SyncHandlerResult<NoInfer<S>, NoInfer<PrimaryKey>, State> & ExactSyncHandlerResult<Exclude<SyncPropertyName<NoInfer<S>>, NoInfer<PrimaryKey>>, Result>>;
|
|
49
71
|
};
|
|
50
72
|
/** Configuration for a sync backed by a Notion-as-Code data source. */
|
|
51
|
-
export type DataSourceSyncConfiguration<
|
|
52
|
-
dataSource: DataSourceHandle<
|
|
53
|
-
primaryKey: PrimaryKey;
|
|
54
|
-
mode?: SyncMode;
|
|
55
|
-
schedule?: Schedule;
|
|
56
|
-
handler: (state: State | undefined, context: CapabilityContext) => Promise<SyncHandlerResult<NoInfer<AppsSchemaForProperties<Properties>>, NoInfer<PrimaryKey>, State>>;
|
|
73
|
+
export type DataSourceSyncConfiguration<Schema extends NotionAsCodeSchema, PrimaryKey extends KeyPropertyName<AppsSchemaForSchema<Schema>>, State, Result extends SyncHandlerResult<AppsSchemaForSchema<Schema>, PrimaryKey, State> = SyncHandlerResult<AppsSchemaForSchema<Schema>, PrimaryKey, State>> = Omit<SyncConfiguration<AppsSchemaForSchema<Schema>, PrimaryKey, State, Result>, "database"> & {
|
|
74
|
+
dataSource: DataSourceHandle<Schema>;
|
|
57
75
|
};
|
|
58
76
|
export type SyncRuntimeContext = {
|
|
59
77
|
state?: unknown;
|
|
@@ -78,8 +96,8 @@ export type Sync = {
|
|
|
78
96
|
handler: (context?: SyncRuntimeContext, options?: HandlerOptions) => Promise<SyncRunResult>;
|
|
79
97
|
};
|
|
80
98
|
/** Create a database sync. Default-export it from a sync file. */
|
|
81
|
-
export declare function createSync<const S extends DatabaseSchema, const PrimaryKey extends KeyPropertyName<S>, State = unknown>(configuration: SyncConfiguration<S, PrimaryKey, State>): Sync;
|
|
99
|
+
export declare function createSync<const S extends DatabaseSchema, const PrimaryKey extends KeyPropertyName<S>, State = unknown, const Result extends SyncHandlerResult<S, PrimaryKey, State> = SyncHandlerResult<S, PrimaryKey, State>>(configuration: SyncConfiguration<S, PrimaryKey, State, Result>): Sync;
|
|
82
100
|
/** Create a sync backed by a Notion-as-Code data source. */
|
|
83
|
-
export declare function sync<const
|
|
101
|
+
export declare function sync<const Schema extends NotionAsCodeSchema, const PrimaryKey extends KeyPropertyName<AppsSchemaForSchema<Schema>>, State = unknown, const Result extends SyncHandlerResult<AppsSchemaForSchema<Schema>, PrimaryKey, State> = SyncHandlerResult<AppsSchemaForSchema<Schema>, PrimaryKey, State>>(configuration: DataSourceSyncConfiguration<Schema, PrimaryKey, State, Result>): Sync;
|
|
84
102
|
export {};
|
|
85
103
|
//# sourceMappingURL=sync.d.ts.map
|
package/dist/sync.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sync.d.ts","sourceRoot":"","sources":["../src/sync.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,cAAc,CAAC;AAEtD,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AAE9C,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,8BAA8B,CAAC;AACrE,OAAO,KAAK,EAAE,
|
|
1
|
+
{"version":3,"file":"sync.d.ts","sourceRoot":"","sources":["../src/sync.ts"],"names":[],"mappings":"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"}
|
package/dist/sync.js
CHANGED
|
@@ -35,6 +35,18 @@ function createSyncDefinition(configuration) {
|
|
|
35
35
|
if (change.type === "delete") {
|
|
36
36
|
return { ...change, targetDatabaseKey: database.key };
|
|
37
37
|
}
|
|
38
|
+
let hasOwnEnumerableProperty = false;
|
|
39
|
+
for (const propertyName in change.properties) {
|
|
40
|
+
if (Object.hasOwn(change.properties, propertyName)) {
|
|
41
|
+
hasOwnEnumerableProperty = true;
|
|
42
|
+
break;
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
if (!hasOwnEnumerableProperty) {
|
|
46
|
+
throw new Error(
|
|
47
|
+
"Sync upsert properties must include at least one property."
|
|
48
|
+
);
|
|
49
|
+
}
|
|
38
50
|
return {
|
|
39
51
|
...change,
|
|
40
52
|
properties: {
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type {
|
|
1
|
+
import type { WorkflowConnectionDeclarations, WorkflowConnectionKeys } from "./connections.js";
|
|
2
2
|
import type { CalendarEventCanceledEvent, CalendarEventCreatedEvent, CalendarEventUpdatedEvent, DiscordInteractionEvent, GoogleDriveOauthFilesChangedEvent, MailEmailReceivedEvent, MailEmailSentEvent, MailLabelAppliedEvent, NotionAgentMentionedEvent, NotionButtonPressedEvent, NotionCommentAddedEvent, NotionDatabaseAgentUpdatedEvent, NotionMeetingNoteSummaryCompletedEvent, NotionPageCreatedEvent, NotionPageDeletedEvent, NotionPageUpdatedEvent, RecurrenceEvent, SlackAppMentionEvent, SlackMessageEvent, SlackReactionAddedEvent, WebhookEvent } from "./triggers.js";
|
|
3
3
|
export type { Actor, ActorLike, CalendarEventCanceledEvent, CalendarEventCreatedEvent, CalendarEventLike, CalendarEventUpdatedEvent, ChatMessageLike, ChatThreadMessage, DiscordChatThreadMessage, DiscordInteractionEvent, EmailMessageLike, EmailThreadLike, EmailTriggerMessage, GoogleDriveOauthFilesChangedEvent, LinkLike, MailEmailReceivedEvent, MailEmailSentEvent, MailLabelAppliedEvent, MessageLike, NotionAgentMentionedEvent, NotionButtonPressedEvent, NotionCommentAddedEvent, NotionDatabaseAgentUpdatedEvent, NotionMeetingNoteSummaryCompletedEvent, NotionPageCreatedEvent, NotionPageDeletedEvent, NotionPageEdit, NotionPageUpdatedEvent, RecurrenceEvent, RecurrenceFrequency, SlackAppMentionEvent, SlackChatThreadMessage, SlackMessageEvent, SlackReactionAddedEvent, ThreadLike, ThreadMessage, TimestampLike, TriggerEvent, TriggerEventBase, TriggerEventMap, TriggerType, VendorActor, VendorExtensions, WebhookEvent, } from "./triggers.js";
|
|
4
4
|
/** Triggers immediately after a new message is posted in Slack (includes new threads and replies) */
|
|
@@ -247,7 +247,7 @@ export declare const triggers: {
|
|
|
247
247
|
readonly scheduled: () => RecurrenceTrigger;
|
|
248
248
|
};
|
|
249
249
|
/** Trigger creators restricted to the workflow's declared provider keys. */
|
|
250
|
-
export type WorkflowTriggerCreators<TConnections extends
|
|
250
|
+
export type WorkflowTriggerCreators<TConnections extends WorkflowConnectionDeclarations> = {
|
|
251
251
|
slackMessage(options?: {
|
|
252
252
|
connectionKey: WorkflowConnectionKeys<TConnections, "slack">;
|
|
253
253
|
}): SlackMessageTrigger<WorkflowConnectionKeys<TConnections, "slack">>;
|
|
@@ -287,7 +287,7 @@ export type WorkflowTriggerCreators<TConnections extends readonly WorkflowConnec
|
|
|
287
287
|
scheduled(): RecurrenceTrigger;
|
|
288
288
|
};
|
|
289
289
|
/** Triggers whose connection keys belong to the declared provider. */
|
|
290
|
-
export type WorkflowTriggerForConnections<TConnections extends
|
|
290
|
+
export type WorkflowTriggerForConnections<TConnections extends WorkflowConnectionDeclarations> = SlackMessageTrigger<WorkflowConnectionKeys<TConnections, "slack">> | SlackReactionAddedTrigger<WorkflowConnectionKeys<TConnections, "slack">> | SlackAppMentionTrigger<WorkflowConnectionKeys<TConnections, "slack">> | DiscordInteractionTrigger<WorkflowConnectionKeys<TConnections, "discord">> | MailEmailReceivedTrigger | MailEmailSentTrigger | MailLabelAppliedTrigger | CalendarEventCreatedTrigger<WorkflowConnectionKeys<TConnections, "calendar">> | CalendarEventUpdatedTrigger<WorkflowConnectionKeys<TConnections, "calendar">> | CalendarEventCanceledTrigger<WorkflowConnectionKeys<TConnections, "calendar">> | NotionPageCreatedTrigger | NotionPageUpdatedTrigger | NotionPageDeletedTrigger | NotionMeetingNoteSummaryCompletedTrigger | NotionCommentAddedTrigger | NotionAgentMentionedTrigger | NotionButtonPressedTrigger | NotionDatabaseAgentUpdatedTrigger | WebhookTrigger | GoogleDriveOauthFilesChangedTrigger<WorkflowConnectionKeys<TConnections, "googleDriveOauth">> | RecurrenceTrigger;
|
|
291
291
|
/** Event that can trigger a workflow. */
|
|
292
292
|
export type WorkflowTrigger = SlackMessageTrigger | SlackReactionAddedTrigger | SlackAppMentionTrigger | DiscordInteractionTrigger | MailEmailReceivedTrigger | MailEmailSentTrigger | MailLabelAppliedTrigger | CalendarEventCreatedTrigger | CalendarEventUpdatedTrigger | CalendarEventCanceledTrigger | NotionPageCreatedTrigger | NotionPageUpdatedTrigger | NotionPageDeletedTrigger | NotionMeetingNoteSummaryCompletedTrigger | NotionCommentAddedTrigger | NotionAgentMentionedTrigger | NotionButtonPressedTrigger | NotionDatabaseAgentUpdatedTrigger | WebhookTrigger | GoogleDriveOauthFilesChangedTrigger | RecurrenceTrigger;
|
|
293
293
|
/** All workflow trigger type strings. */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"triggers.generated.d.ts","sourceRoot":"","sources":["../src/triggers.generated.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,
|
|
1
|
+
{"version":3,"file":"triggers.generated.d.ts","sourceRoot":"","sources":["../src/triggers.generated.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import type { RunMetadata } from "./runtime-metadata.js";
|
|
2
|
+
export type WorkflowStateValue = null | boolean | number | string | ReadonlyArray<WorkflowStateValue> | {
|
|
3
|
+
readonly [key: string]: WorkflowStateValue;
|
|
4
|
+
};
|
|
5
|
+
export type WorkflowState = {
|
|
6
|
+
get(key: string): Promise<WorkflowStateValue | undefined>;
|
|
7
|
+
set(key: string, value: WorkflowStateValue | undefined): void;
|
|
8
|
+
};
|
|
9
|
+
export declare function createWorkflowStepState(metadata: Pick<RunMetadata, "workerId">, stepId: string): {
|
|
10
|
+
state: WorkflowState;
|
|
11
|
+
run<T>(fn: () => T | Promise<T>): Promise<T>;
|
|
12
|
+
};
|
|
13
|
+
//# sourceMappingURL=workflow-state.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"workflow-state.d.ts","sourceRoot":"","sources":["../src/workflow-state.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AAEzD,MAAM,MAAM,kBAAkB,GAC3B,IAAI,GACJ,OAAO,GACP,MAAM,GACN,MAAM,GACN,aAAa,CAAC,kBAAkB,CAAC,GACjC;IAAE,QAAQ,EAAE,GAAG,EAAE,MAAM,GAAG,kBAAkB,CAAA;CAAE,CAAC;AAElD,MAAM,MAAM,aAAa,GAAG;IAC3B,GAAG,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,kBAAkB,GAAG,SAAS,CAAC,CAAC;IAC1D,GAAG,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,kBAAkB,GAAG,SAAS,GAAG,IAAI,CAAC;CAC9D,CAAC;AAeF,wBAAgB,uBAAuB,CACtC,QAAQ,EAAE,IAAI,CAAC,WAAW,EAAE,UAAU,CAAC,EACvC,MAAM,EAAE,MAAM,GACZ;IACF,KAAK,EAAE,aAAa,CAAC;IACrB,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE,MAAM,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;CAC7C,CA2DA"}
|
|
@@ -0,0 +1,107 @@
|
|
|
1
|
+
const MAX_STATE_KEY_BYTES = 256;
|
|
2
|
+
const WORKFLOW_CAPABILITY_KEY_ENV = "NOTION_WORKFLOW_CAPABILITY_KEY";
|
|
3
|
+
function createWorkflowStepState(metadata, stepId) {
|
|
4
|
+
const scope = {
|
|
5
|
+
id: stepId,
|
|
6
|
+
active: true,
|
|
7
|
+
mutations: /* @__PURE__ */ new Map()
|
|
8
|
+
};
|
|
9
|
+
const state = {
|
|
10
|
+
async get(key) {
|
|
11
|
+
requireActiveStep(scope, "get");
|
|
12
|
+
validateStateKey(key);
|
|
13
|
+
const pending = scope.mutations.get(key);
|
|
14
|
+
if (pending?.operation === "set") {
|
|
15
|
+
return pending.value;
|
|
16
|
+
}
|
|
17
|
+
if (pending?.operation === "delete") {
|
|
18
|
+
return void 0;
|
|
19
|
+
}
|
|
20
|
+
const response = await requestWorkflowState(metadata, {
|
|
21
|
+
operation: "get",
|
|
22
|
+
key
|
|
23
|
+
});
|
|
24
|
+
const body = JSON.parse(
|
|
25
|
+
await response.text()
|
|
26
|
+
);
|
|
27
|
+
if (!body.exists) {
|
|
28
|
+
return void 0;
|
|
29
|
+
}
|
|
30
|
+
return body.value;
|
|
31
|
+
},
|
|
32
|
+
set(key, value) {
|
|
33
|
+
requireActiveStep(scope, "set");
|
|
34
|
+
validateStateKey(key);
|
|
35
|
+
if (value === void 0) {
|
|
36
|
+
recordMutation(scope, { operation: "delete", key });
|
|
37
|
+
return;
|
|
38
|
+
}
|
|
39
|
+
recordMutation(scope, { operation: "set", key, value });
|
|
40
|
+
}
|
|
41
|
+
};
|
|
42
|
+
return {
|
|
43
|
+
state,
|
|
44
|
+
async run(fn) {
|
|
45
|
+
try {
|
|
46
|
+
const result = await fn();
|
|
47
|
+
if (scope.mutations.size > 0) {
|
|
48
|
+
await requestWorkflowState(metadata, {
|
|
49
|
+
operation: "commit",
|
|
50
|
+
operationId: scope.id,
|
|
51
|
+
mutations: [...scope.mutations.values()]
|
|
52
|
+
});
|
|
53
|
+
}
|
|
54
|
+
return result;
|
|
55
|
+
} finally {
|
|
56
|
+
scope.active = false;
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
};
|
|
60
|
+
}
|
|
61
|
+
function requireActiveStep(expectedScope, operation) {
|
|
62
|
+
if (!expectedScope.active) {
|
|
63
|
+
throw new Error(`state.${operation}() must be called inside context.step().`);
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
function recordMutation(scope, mutation) {
|
|
67
|
+
scope.mutations.set(mutation.key, mutation);
|
|
68
|
+
}
|
|
69
|
+
async function requestWorkflowState(metadata, request) {
|
|
70
|
+
const baseUrl = process.env.NOTION_API_BASE_URL;
|
|
71
|
+
const token = process.env.NOTION_API_TOKEN;
|
|
72
|
+
const capabilityKey = process.env[WORKFLOW_CAPABILITY_KEY_ENV];
|
|
73
|
+
if (!baseUrl || !token || !capabilityKey) {
|
|
74
|
+
throw new Error(
|
|
75
|
+
`Workflow state is only available when the workflow runtime provides NOTION_API_BASE_URL, NOTION_API_TOKEN, and ${WORKFLOW_CAPABILITY_KEY_ENV}.`
|
|
76
|
+
);
|
|
77
|
+
}
|
|
78
|
+
const response = await fetch(`${baseUrl.replace(/\/$/, "")}/api/v3/workersWorkflowState`, {
|
|
79
|
+
method: "POST",
|
|
80
|
+
headers: {
|
|
81
|
+
authorization: `Bearer ${token}`,
|
|
82
|
+
"content-type": "application/json"
|
|
83
|
+
},
|
|
84
|
+
body: JSON.stringify({
|
|
85
|
+
...request,
|
|
86
|
+
workerId: metadata.workerId,
|
|
87
|
+
capabilityKey
|
|
88
|
+
})
|
|
89
|
+
});
|
|
90
|
+
if (!response.ok) {
|
|
91
|
+
throw new Error(
|
|
92
|
+
`Workflow state ${request.operation} failed with status ${response.status}.`
|
|
93
|
+
);
|
|
94
|
+
}
|
|
95
|
+
return response;
|
|
96
|
+
}
|
|
97
|
+
function validateStateKey(key) {
|
|
98
|
+
if (key.length === 0) {
|
|
99
|
+
throw new Error("Workflow state keys must not be empty.");
|
|
100
|
+
}
|
|
101
|
+
if (Buffer.byteLength(key) > MAX_STATE_KEY_BYTES) {
|
|
102
|
+
throw new Error(`Workflow state keys must be at most ${MAX_STATE_KEY_BYTES} UTF-8 bytes.`);
|
|
103
|
+
}
|
|
104
|
+
}
|
|
105
|
+
export {
|
|
106
|
+
createWorkflowStepState
|
|
107
|
+
};
|
package/dist/workflow.d.ts
CHANGED
|
@@ -1,19 +1,50 @@
|
|
|
1
|
-
import { type
|
|
1
|
+
import { type WorkflowConnectionDeclarations, type WorkflowConnectionRequirement, type WorkflowConnections } from "./connections.js";
|
|
2
2
|
import type { CapabilityContext } from "./context.js";
|
|
3
3
|
import { type RunMetadata } from "./runtime-metadata.js";
|
|
4
|
+
import { type WorkflowState } from "./workflow-state.js";
|
|
4
5
|
import type { WorkflowEventMap, WorkflowTrigger, WorkflowTriggerCreators, WorkflowTriggerForConnections } from "./triggers.generated.js";
|
|
5
6
|
type HandlerOptions = {
|
|
6
7
|
/** Return the concrete result instead of writing the output envelope. */
|
|
7
8
|
concreteOutput?: true;
|
|
8
9
|
};
|
|
10
|
+
type WorkflowWaitDurationValues = {
|
|
11
|
+
milliseconds?: number;
|
|
12
|
+
seconds?: number;
|
|
13
|
+
minutes?: number;
|
|
14
|
+
hours?: number;
|
|
15
|
+
days?: number;
|
|
16
|
+
weeks?: number;
|
|
17
|
+
};
|
|
18
|
+
export type WorkflowWaitDuration = {
|
|
19
|
+
[Unit in keyof WorkflowWaitDurationValues]-?: Required<Pick<WorkflowWaitDurationValues, Unit>> & WorkflowWaitDurationValues;
|
|
20
|
+
}[keyof WorkflowWaitDurationValues];
|
|
21
|
+
type WorkflowWaitKey = string | string[];
|
|
22
|
+
export type WorkflowWaitUntilOptions = {
|
|
23
|
+
at: Date;
|
|
24
|
+
key?: WorkflowWaitKey;
|
|
25
|
+
} | {
|
|
26
|
+
after: WorkflowWaitDuration;
|
|
27
|
+
key?: WorkflowWaitKey;
|
|
28
|
+
};
|
|
29
|
+
export type WorkflowWaitUntilResult = {
|
|
30
|
+
status: "waiting";
|
|
31
|
+
wait: {
|
|
32
|
+
type: "until";
|
|
33
|
+
name: string;
|
|
34
|
+
resumeAtMs: number;
|
|
35
|
+
};
|
|
36
|
+
};
|
|
37
|
+
type WorkflowHandlerResult = {
|
|
38
|
+
status: "success";
|
|
39
|
+
} | WorkflowWaitUntilResult;
|
|
9
40
|
export type WorkflowEvent = WorkflowEventMap[keyof WorkflowEventMap];
|
|
10
41
|
export type WorkflowEventForTrigger<T extends WorkflowTrigger> = WorkflowEventMap[T["type"]];
|
|
11
42
|
export type WorkflowEventForTriggers<T extends readonly WorkflowTrigger[]> = WorkflowEventForTrigger<T[number]>;
|
|
12
|
-
export { connections, type WorkflowConnection, type WorkflowConnections } from "./connections.js";
|
|
43
|
+
export { connections, type WorkflowConnection, type WorkflowConnectionDeclarations, type WorkflowConnectionRequirement, type WorkflowConnections, type OAuthConfiguration, type OAuthConnection, } from "./connections.js";
|
|
13
44
|
/**
|
|
14
45
|
* Configuration passed to {@link workflow}.
|
|
15
46
|
*/
|
|
16
|
-
export type WorkflowConfiguration<TTriggers extends readonly [WorkflowTrigger, ...WorkflowTrigger[]], TConnections extends
|
|
47
|
+
export type WorkflowConfiguration<TTriggers extends readonly [WorkflowTrigger, ...WorkflowTrigger[]], TConnections extends WorkflowConnectionDeclarations = WorkflowConnectionDeclarations> = {
|
|
17
48
|
/**
|
|
18
49
|
* A human-readable name for the workflow, shown in the UI when viewing workflows
|
|
19
50
|
*/
|
|
@@ -35,7 +66,7 @@ export type WorkflowConfiguration<TTriggers extends readonly [WorkflowTrigger, .
|
|
|
35
66
|
handler: (event: WorkflowEventForTriggers<TTriggers>, context: WorkflowContext<TConnections>) => Promise<void> | void;
|
|
36
67
|
};
|
|
37
68
|
/** Configuration that checks trigger keys against declared connections. */
|
|
38
|
-
export type WorkflowTriggerConfiguration<TTriggers extends readonly [WorkflowTrigger, ...WorkflowTrigger[]], TConnections extends
|
|
69
|
+
export type WorkflowTriggerConfiguration<TTriggers extends readonly [WorkflowTrigger, ...WorkflowTrigger[]], TConnections extends WorkflowConnectionDeclarations> = Omit<WorkflowConfiguration<TTriggers, TConnections>, "triggers"> & {
|
|
39
70
|
triggers: (context: {
|
|
40
71
|
triggers: WorkflowTriggerCreators<NoInfer<TConnections>>;
|
|
41
72
|
}) => TTriggers;
|
|
@@ -55,11 +86,9 @@ export type Workflow<TTriggers extends readonly [WorkflowTrigger, ...WorkflowTri
|
|
|
55
86
|
name: string;
|
|
56
87
|
description: string;
|
|
57
88
|
triggers: TTriggers;
|
|
58
|
-
connections?: readonly
|
|
89
|
+
connections?: readonly WorkflowConnectionRequirement[];
|
|
59
90
|
};
|
|
60
|
-
handler: (event: WorkflowEventForTriggers<TTriggers>, options?: HandlerOptions) => Promise<
|
|
61
|
-
status: "success";
|
|
62
|
-
} | undefined>;
|
|
91
|
+
handler: (event: WorkflowEventForTriggers<TTriggers>, options?: HandlerOptions) => Promise<WorkflowHandlerResult | undefined>;
|
|
63
92
|
};
|
|
64
93
|
/**
|
|
65
94
|
* Create a workflow capability.
|
|
@@ -90,8 +119,8 @@ export type Workflow<TTriggers extends readonly [WorkflowTrigger, ...WorkflowTri
|
|
|
90
119
|
export declare function workflow<const TTriggers extends readonly [
|
|
91
120
|
WorkflowTriggerForConnections<NoInfer<TConnections>>,
|
|
92
121
|
...WorkflowTriggerForConnections<NoInfer<TConnections>>[]
|
|
93
|
-
], const TConnections extends
|
|
94
|
-
export declare function workflow<const TTriggers extends readonly [WorkflowTrigger, ...WorkflowTrigger[]], const TConnections extends
|
|
122
|
+
], const TConnections extends WorkflowConnectionDeclarations = Record<never, never>>(configuration: WorkflowTriggerConfiguration<TTriggers, TConnections>): Workflow<TTriggers>;
|
|
123
|
+
export declare function workflow<const TTriggers extends readonly [WorkflowTrigger, ...WorkflowTrigger[]], const TConnections extends WorkflowConnectionDeclarations = Record<never, never>>(configuration: WorkflowConfiguration<TTriggers, TConnections>): Workflow<TTriggers>;
|
|
95
124
|
/** Context passed to a workflow step. */
|
|
96
125
|
export type StepContext = {
|
|
97
126
|
/**
|
|
@@ -99,6 +128,13 @@ export type StepContext = {
|
|
|
99
128
|
* Use this to make side effects idempotent when the workflow is retried.
|
|
100
129
|
*/
|
|
101
130
|
id: string;
|
|
131
|
+
/**
|
|
132
|
+
* Durable key-value state shared by every run of this workflow.
|
|
133
|
+
*
|
|
134
|
+
* State is exposed on the step context because every operation participates
|
|
135
|
+
* in the active step's durability and replay boundary.
|
|
136
|
+
*/
|
|
137
|
+
state: WorkflowState;
|
|
102
138
|
};
|
|
103
139
|
type WorkflowStepResult<T> = T extends void ? null : T;
|
|
104
140
|
/** Options for a workflow step. */
|
|
@@ -114,8 +150,15 @@ type WorkflowStep = {
|
|
|
114
150
|
<T>(name: string, fn: (context: StepContext) => T | Promise<T>): Promise<WorkflowStepResult<T>>;
|
|
115
151
|
<T>(name: string, options: WorkflowStepOptions, fn: (context: StepContext) => T | Promise<T>): Promise<WorkflowStepResult<T>>;
|
|
116
152
|
};
|
|
153
|
+
type WorkflowWait = {
|
|
154
|
+
/**
|
|
155
|
+
* Suspend the workflow until a relative duration has elapsed or an absolute
|
|
156
|
+
* date has been reached.
|
|
157
|
+
*/
|
|
158
|
+
until(name: string, options: WorkflowWaitUntilOptions): Promise<void>;
|
|
159
|
+
};
|
|
117
160
|
/** Context passed to a workflow handler. */
|
|
118
|
-
export type WorkflowContext<TConnections extends
|
|
161
|
+
export type WorkflowContext<TConnections extends WorkflowConnectionDeclarations = WorkflowConnectionDeclarations> = CapabilityContext & {
|
|
119
162
|
connections: WorkflowConnections<TConnections>;
|
|
120
163
|
} & RunMetadata & {
|
|
121
164
|
/**
|
|
@@ -139,5 +182,7 @@ export type WorkflowContext<TConnections extends readonly WorkflowConnection[] =
|
|
|
139
182
|
* ```
|
|
140
183
|
*/
|
|
141
184
|
step: WorkflowStep;
|
|
185
|
+
/** Suspend this workflow without consuming compute resources. */
|
|
186
|
+
wait: WorkflowWait;
|
|
142
187
|
};
|
|
143
188
|
//# sourceMappingURL=workflow.d.ts.map
|