@keystrokehq/keystroke 0.0.83 → 0.0.84

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 (39) hide show
  1. package/dist/agent.cjs +2 -2
  2. package/dist/agent.mjs +2 -2
  3. package/dist/config.d.cts.map +1 -1
  4. package/dist/config.d.mts.map +1 -1
  5. package/dist/{dist-D9kmfOVj.cjs → dist-B1Dy8DVb.cjs} +60 -2
  6. package/dist/{dist-D9kmfOVj.cjs.map → dist-B1Dy8DVb.cjs.map} +1 -1
  7. package/dist/dist-BdtvGgfO.mjs +380 -0
  8. package/dist/dist-BdtvGgfO.mjs.map +1 -0
  9. package/dist/dist-CZZMGcuu.cjs +409 -0
  10. package/dist/dist-CZZMGcuu.cjs.map +1 -0
  11. package/dist/{dist-D6CLdIst.mjs → dist-DgIJtGrg.mjs} +60 -2
  12. package/dist/{dist-D6CLdIst.mjs.map → dist-DgIJtGrg.mjs.map} +1 -1
  13. package/dist/{index-BzsZvKGT.d.mts → index-Bv6uZ8Xd.d.mts} +87 -11
  14. package/dist/index-Bv6uZ8Xd.d.mts.map +1 -0
  15. package/dist/{index-CtyQ1EEq.d.cts → index-CpJJgeJ2.d.cts} +87 -11
  16. package/dist/index-CpJJgeJ2.d.cts.map +1 -0
  17. package/dist/{mistral-1tV3Hawf.cjs → mistral-Deqt4GvJ.cjs} +2 -2
  18. package/dist/{mistral-1tV3Hawf.cjs.map → mistral-Deqt4GvJ.cjs.map} +1 -1
  19. package/dist/{mistral-YEx-0Ny0.mjs → mistral-wT_K1dZn.mjs} +2 -2
  20. package/dist/{mistral-YEx-0Ny0.mjs.map → mistral-wT_K1dZn.mjs.map} +1 -1
  21. package/dist/{sse-CYVBGHvF.mjs → sse-D12n5Ckf.mjs} +2 -2
  22. package/dist/{sse-CYVBGHvF.mjs.map → sse-D12n5Ckf.mjs.map} +1 -1
  23. package/dist/{sse-_Xt5AdRl.cjs → sse-DvOq9Ntd.cjs} +2 -2
  24. package/dist/{sse-_Xt5AdRl.cjs.map → sse-DvOq9Ntd.cjs.map} +1 -1
  25. package/dist/trigger.cjs +1 -1
  26. package/dist/trigger.d.cts +1 -1
  27. package/dist/trigger.d.mts +1 -1
  28. package/dist/trigger.mjs +1 -1
  29. package/dist/workflow.cjs +2 -1
  30. package/dist/workflow.d.cts +2 -2
  31. package/dist/workflow.d.mts +2 -2
  32. package/dist/workflow.mjs +2 -2
  33. package/package.json +1 -1
  34. package/dist/dist-BgFwZKGS.mjs +0 -154
  35. package/dist/dist-BgFwZKGS.mjs.map +0 -1
  36. package/dist/dist-NUfD1tQj.cjs +0 -177
  37. package/dist/dist-NUfD1tQj.cjs.map +0 -1
  38. package/dist/index-BzsZvKGT.d.mts.map +0 -1
  39. package/dist/index-CtyQ1EEq.d.cts.map +0 -1
@@ -12,6 +12,18 @@ interface ActionStore {
12
12
  get(runId: string, actionKey: string): Promise<unknown | undefined>;
13
13
  set(runId: string, actionKey: string, output: unknown): Promise<void>;
14
14
  }
15
+ type SleepDuration = number | string | Date;
16
+ type WorkflowSleep = (duration: SleepDuration) => Promise<void>;
17
+ type HookOptions<T> = {
18
+ /** Reuse a stable token instead of generating one. */token?: string; /** Optional schema to validate the resume payload. */
19
+ schema?: z.ZodType<T>;
20
+ };
21
+ /** Awaitable handle returned by `ctx.hook()`; awaiting it suspends until resumed. */
22
+ type HookHandle<T> = PromiseLike<T> & {
23
+ token: string;
24
+ resumeUrl: string;
25
+ };
26
+ type WorkflowHook = <T = unknown>(options?: HookOptions<T>) => HookHandle<T>;
15
27
  type WorkflowRunContext = {
16
28
  runId: string;
17
29
  workspacesRoot?: string;
@@ -19,7 +31,9 @@ type WorkflowRunContext = {
19
31
  root: string;
20
32
  };
21
33
  trigger?: "api" | "cron" | "webhook" | "poll" | "retry";
22
- triggeredAt?: Date;
34
+ triggeredAt?: Date; /** Durably suspend the run for a duration (or until a Date). */
35
+ sleep: WorkflowSleep; /** Create a resume token and suspend the run until it is resumed externally. */
36
+ hook: WorkflowHook;
23
37
  }; //#endregion
24
38
  //#region src/workflow-definition.d.ts
25
39
  /** Runtime validation for an unbranded workflow definition. */
@@ -75,19 +89,73 @@ type WorkflowDefinitionInput<TInputSchema extends z.ZodType = z.ZodType, TOutput
75
89
  declare function isWorkflow(value: unknown): value is WorkflowDefinition; //#endregion
76
90
  //#region src/define-workflow.d.ts
77
91
  declare function defineWorkflow<TInputSchema extends z.ZodType, TOutputSchema extends z.ZodType>(def: WorkflowDefinitionInput<TInputSchema, TOutputSchema>): WorkflowDefinition<z.infer<TInputSchema>, z.infer<TOutputSchema>>; //#endregion
92
+ //#region src/replay/types.d.ts
93
+ type WorkflowEventType = "run_started" | "step_completed" | "step_failed" | "sleep_scheduled" | "sleep_completed" | "hook_created" | "hook_resumed" | "run_completed" | "run_failed";
94
+ /** Structural shape of a persisted event row (matches @keystrokehq/database). */
95
+ type ReplayEvent = {
96
+ id: string;
97
+ runId: string;
98
+ seq: number;
99
+ type: WorkflowEventType;
100
+ correlationId: string | null;
101
+ data: unknown;
102
+ };
103
+ type AppendEventInput = {
104
+ id?: string;
105
+ runId: string;
106
+ type: WorkflowEventType;
107
+ correlationId?: string | null;
108
+ data?: unknown;
109
+ };
110
+ /** Injected durable log (DB-backed in the server, in-memory in tests). */
111
+ type DurableEventLog = {
112
+ append(event: AppendEventInput): Promise<boolean>;
113
+ listReplay(runId: string): Promise<ReplayEvent[]>;
114
+ };
115
+ type SleepPendingItem = {
116
+ kind: "sleep";
117
+ correlationId: string;
118
+ resumeAt: Date;
119
+ };
120
+ type HookPendingItem = {
121
+ kind: "hook";
122
+ correlationId: string;
123
+ token: string;
124
+ };
125
+ type PendingItem = SleepPendingItem | HookPendingItem;
126
+ type ReplayResult = {
127
+ status: "completed";
128
+ output: unknown;
129
+ } | {
130
+ status: "failed";
131
+ error: unknown;
132
+ } | {
133
+ status: "suspended";
134
+ items: PendingItem[];
135
+ }; //#endregion
78
136
  //#region src/execute-workflow.d.ts
79
137
  type ExecuteWorkflowOptions = {
80
- runId?: string;
138
+ runId?: string; /** Durable event log. Defaults to an in-memory log (single, non-resumable pass). */
139
+ eventLog?: DurableEventLog; /** Action checkpoint store. Defaults to in-memory. */
81
140
  actionStore?: ActionStore;
82
- actionStoreFactory?: () => ActionStore;
83
141
  resolveCredentials?: ActionRunnerOptions["resolveCredentials"];
84
- credentialContext?: CredentialRunContext;
85
- oauthAdapter?: OAuthTokenAdapter;
86
- context?: Partial<WorkflowRunContext>;
87
- skipWorkflowSpan?: boolean;
88
- workflowSpanMetadata?: Record<string, unknown>;
142
+ credentialContext?: ActionRunnerOptions["credentialContext"];
143
+ oauthAdapter?: ActionRunnerOptions["oauthAdapter"]; /** Public base URL used to build hook resume URLs. */
144
+ hookBaseUrl?: string; /** Captured once per pass; primitives use this for deterministic time math. */
145
+ now?: Date;
146
+ context?: Partial<Omit<WorkflowRunContext, "runId" | "sleep" | "hook">>;
89
147
  };
90
- declare function executeWorkflow<TInput, TOutput>(workflow: WorkflowDefinition<TInput, TOutput>, input: unknown, options?: ExecuteWorkflowOptions): Promise<TOutput>; //#endregion
148
+ /**
149
+ * The single way to run a workflow: replay its event log from the top, execute
150
+ * un-cached primitives, and either complete/fail or suspend at the first
151
+ * un-satisfied sleep/hook. New events (sleep_scheduled/sleep_completed/
152
+ * hook_created/run_completed/run_failed) are flushed before returning.
153
+ *
154
+ * Durability comes entirely from the log — a suspended run resumes by calling
155
+ * this again with the same `runId` and event log once the sleep is due or the
156
+ * hook is resumed.
157
+ */
158
+ declare function executeWorkflow<TInput, TOutput>(workflow: WorkflowDefinition<TInput, TOutput>, input: unknown, options?: ExecuteWorkflowOptions): Promise<ReplayResult>; //#endregion
91
159
  //#region src/memory-action-store.d.ts
92
160
  declare class MemoryActionStore implements ActionStore {
93
161
  private readonly records;
@@ -95,6 +163,14 @@ declare class MemoryActionStore implements ActionStore {
95
163
  get(runId: string, actionKey: string): Promise<unknown | undefined>;
96
164
  set(runId: string, actionKey: string, output: unknown): Promise<void>;
97
165
  } //#endregion
166
+ //#region src/replay/memory-event-log.d.ts
167
+ /** In-memory durable log for inline execution and tests. */
168
+ declare class MemoryEventLog implements DurableEventLog {
169
+ private readonly events;
170
+ private readonly ids;
171
+ append(event: AppendEventInput): Promise<boolean>;
172
+ listReplay(runId: string): Promise<ReplayEvent[]>;
173
+ } //#endregion
98
174
  //#endregion
99
- export { WorkflowRunContext as a, isWorkflow as c, WorkflowDefinition as i, ExecuteWorkflowOptions as n, defineWorkflow as o, MemoryActionStore as r, executeWorkflow as s, ActionStore as t };
100
- //# sourceMappingURL=index-BzsZvKGT.d.mts.map
175
+ export { isWorkflow as S, WorkflowHook as _, HookHandle as a, defineWorkflow as b, MemoryActionStore as c, ReplayEvent as d, ReplayResult as f, WorkflowEventType as g, WorkflowDefinition as h, ExecuteWorkflowOptions as i, MemoryEventLog as l, SleepPendingItem as m, AppendEventInput as n, HookOptions as o, SleepDuration as p, DurableEventLog as r, HookPendingItem as s, ActionStore as t, PendingItem as u, WorkflowRunContext as v, executeWorkflow as x, WorkflowSleep as y };
176
+ //# sourceMappingURL=index-Bv6uZ8Xd.d.mts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index-Bv6uZ8Xd.d.mts","names":["z","CredentialList","ResolvedCredentials","CredentialConsumer","CredentialRunContext","OAuthTokenAdapter","ActionRunnerOptions","T","Partial","Promise","resolveCredentials","requirements","consumer","contextOverride","credentialContext","oauthAdapter","ActionStore","get","runId","actionKey","set","output","SleepDuration","Date","WorkflowSleep","duration","HookOptions","ZodType","token","schema","HookHandle","PromiseLike","resumeUrl","WorkflowHook","options","WorkflowRunContext","workspacesRoot","sandbox","root","trigger","triggeredAt","sleep","hook","workflowCoreSchema","ZodString","ZodOptional","ZodEnum","core","$strip","ZodObject","ZodArray","$ZodTypeInternals","ZodCustom","$ZodFunctionArgs","$ZodFunctionOut","ZodFunction","key","name","description","subscription","mode","system","subscribable","files","path","file","dir","input","run","WorkflowMeta","infer","Omit","WorkflowIO","TInputSchema","TOutputSchema","ctx","WORKFLOW","WorkflowDefinition","TInput","TOutput","WorkflowDefinitionInput","isWorkflow","value","defineWorkflow","def","WorkflowEventType","ReplayEvent","id","seq","type","correlationId","data","AppendEventInput","DurableEventLog","append","event","listReplay","SleepPendingItem","kind","resumeAt","HookPendingItem","PendingItem","ReplayResult","status","error","items","ExecuteWorkflowOptions","eventLog","actionStore","hookBaseUrl","now","context","executeWorkflow","workflow","MemoryActionStore","records","MemoryEventLog","events","ids"],"sources":["../../workflow/dist/index.d.mts"],"mappings":"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"}
@@ -12,6 +12,18 @@ interface ActionStore {
12
12
  get(runId: string, actionKey: string): Promise<unknown | undefined>;
13
13
  set(runId: string, actionKey: string, output: unknown): Promise<void>;
14
14
  }
15
+ type SleepDuration = number | string | Date;
16
+ type WorkflowSleep = (duration: SleepDuration) => Promise<void>;
17
+ type HookOptions<T> = {
18
+ /** Reuse a stable token instead of generating one. */token?: string; /** Optional schema to validate the resume payload. */
19
+ schema?: z.ZodType<T>;
20
+ };
21
+ /** Awaitable handle returned by `ctx.hook()`; awaiting it suspends until resumed. */
22
+ type HookHandle<T> = PromiseLike<T> & {
23
+ token: string;
24
+ resumeUrl: string;
25
+ };
26
+ type WorkflowHook = <T = unknown>(options?: HookOptions<T>) => HookHandle<T>;
15
27
  type WorkflowRunContext = {
16
28
  runId: string;
17
29
  workspacesRoot?: string;
@@ -19,7 +31,9 @@ type WorkflowRunContext = {
19
31
  root: string;
20
32
  };
21
33
  trigger?: "api" | "cron" | "webhook" | "poll" | "retry";
22
- triggeredAt?: Date;
34
+ triggeredAt?: Date; /** Durably suspend the run for a duration (or until a Date). */
35
+ sleep: WorkflowSleep; /** Create a resume token and suspend the run until it is resumed externally. */
36
+ hook: WorkflowHook;
23
37
  }; //#endregion
24
38
  //#region src/workflow-definition.d.ts
25
39
  /** Runtime validation for an unbranded workflow definition. */
@@ -75,19 +89,73 @@ type WorkflowDefinitionInput<TInputSchema extends z.ZodType = z.ZodType, TOutput
75
89
  declare function isWorkflow(value: unknown): value is WorkflowDefinition; //#endregion
76
90
  //#region src/define-workflow.d.ts
77
91
  declare function defineWorkflow<TInputSchema extends z.ZodType, TOutputSchema extends z.ZodType>(def: WorkflowDefinitionInput<TInputSchema, TOutputSchema>): WorkflowDefinition<z.infer<TInputSchema>, z.infer<TOutputSchema>>; //#endregion
92
+ //#region src/replay/types.d.ts
93
+ type WorkflowEventType = "run_started" | "step_completed" | "step_failed" | "sleep_scheduled" | "sleep_completed" | "hook_created" | "hook_resumed" | "run_completed" | "run_failed";
94
+ /** Structural shape of a persisted event row (matches @keystrokehq/database). */
95
+ type ReplayEvent = {
96
+ id: string;
97
+ runId: string;
98
+ seq: number;
99
+ type: WorkflowEventType;
100
+ correlationId: string | null;
101
+ data: unknown;
102
+ };
103
+ type AppendEventInput = {
104
+ id?: string;
105
+ runId: string;
106
+ type: WorkflowEventType;
107
+ correlationId?: string | null;
108
+ data?: unknown;
109
+ };
110
+ /** Injected durable log (DB-backed in the server, in-memory in tests). */
111
+ type DurableEventLog = {
112
+ append(event: AppendEventInput): Promise<boolean>;
113
+ listReplay(runId: string): Promise<ReplayEvent[]>;
114
+ };
115
+ type SleepPendingItem = {
116
+ kind: "sleep";
117
+ correlationId: string;
118
+ resumeAt: Date;
119
+ };
120
+ type HookPendingItem = {
121
+ kind: "hook";
122
+ correlationId: string;
123
+ token: string;
124
+ };
125
+ type PendingItem = SleepPendingItem | HookPendingItem;
126
+ type ReplayResult = {
127
+ status: "completed";
128
+ output: unknown;
129
+ } | {
130
+ status: "failed";
131
+ error: unknown;
132
+ } | {
133
+ status: "suspended";
134
+ items: PendingItem[];
135
+ }; //#endregion
78
136
  //#region src/execute-workflow.d.ts
79
137
  type ExecuteWorkflowOptions = {
80
- runId?: string;
138
+ runId?: string; /** Durable event log. Defaults to an in-memory log (single, non-resumable pass). */
139
+ eventLog?: DurableEventLog; /** Action checkpoint store. Defaults to in-memory. */
81
140
  actionStore?: ActionStore;
82
- actionStoreFactory?: () => ActionStore;
83
141
  resolveCredentials?: ActionRunnerOptions["resolveCredentials"];
84
- credentialContext?: CredentialRunContext;
85
- oauthAdapter?: OAuthTokenAdapter;
86
- context?: Partial<WorkflowRunContext>;
87
- skipWorkflowSpan?: boolean;
88
- workflowSpanMetadata?: Record<string, unknown>;
142
+ credentialContext?: ActionRunnerOptions["credentialContext"];
143
+ oauthAdapter?: ActionRunnerOptions["oauthAdapter"]; /** Public base URL used to build hook resume URLs. */
144
+ hookBaseUrl?: string; /** Captured once per pass; primitives use this for deterministic time math. */
145
+ now?: Date;
146
+ context?: Partial<Omit<WorkflowRunContext, "runId" | "sleep" | "hook">>;
89
147
  };
90
- declare function executeWorkflow<TInput, TOutput>(workflow: WorkflowDefinition<TInput, TOutput>, input: unknown, options?: ExecuteWorkflowOptions): Promise<TOutput>; //#endregion
148
+ /**
149
+ * The single way to run a workflow: replay its event log from the top, execute
150
+ * un-cached primitives, and either complete/fail or suspend at the first
151
+ * un-satisfied sleep/hook. New events (sleep_scheduled/sleep_completed/
152
+ * hook_created/run_completed/run_failed) are flushed before returning.
153
+ *
154
+ * Durability comes entirely from the log — a suspended run resumes by calling
155
+ * this again with the same `runId` and event log once the sleep is due or the
156
+ * hook is resumed.
157
+ */
158
+ declare function executeWorkflow<TInput, TOutput>(workflow: WorkflowDefinition<TInput, TOutput>, input: unknown, options?: ExecuteWorkflowOptions): Promise<ReplayResult>; //#endregion
91
159
  //#region src/memory-action-store.d.ts
92
160
  declare class MemoryActionStore implements ActionStore {
93
161
  private readonly records;
@@ -95,6 +163,14 @@ declare class MemoryActionStore implements ActionStore {
95
163
  get(runId: string, actionKey: string): Promise<unknown | undefined>;
96
164
  set(runId: string, actionKey: string, output: unknown): Promise<void>;
97
165
  } //#endregion
166
+ //#region src/replay/memory-event-log.d.ts
167
+ /** In-memory durable log for inline execution and tests. */
168
+ declare class MemoryEventLog implements DurableEventLog {
169
+ private readonly events;
170
+ private readonly ids;
171
+ append(event: AppendEventInput): Promise<boolean>;
172
+ listReplay(runId: string): Promise<ReplayEvent[]>;
173
+ } //#endregion
98
174
  //#endregion
99
- export { WorkflowRunContext as a, isWorkflow as c, WorkflowDefinition as i, ExecuteWorkflowOptions as n, defineWorkflow as o, MemoryActionStore as r, executeWorkflow as s, ActionStore as t };
100
- //# sourceMappingURL=index-CtyQ1EEq.d.cts.map
175
+ export { isWorkflow as S, WorkflowHook as _, HookHandle as a, defineWorkflow as b, MemoryActionStore as c, ReplayEvent as d, ReplayResult as f, WorkflowEventType as g, WorkflowDefinition as h, ExecuteWorkflowOptions as i, MemoryEventLog as l, SleepPendingItem as m, AppendEventInput as n, HookOptions as o, SleepDuration as p, DurableEventLog as r, HookPendingItem as s, ActionStore as t, PendingItem as u, WorkflowRunContext as v, executeWorkflow as x, WorkflowSleep as y };
176
+ //# sourceMappingURL=index-CpJJgeJ2.d.cts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index-CpJJgeJ2.d.cts","names":["z","CredentialList","ResolvedCredentials","CredentialConsumer","CredentialRunContext","OAuthTokenAdapter","ActionRunnerOptions","T","Partial","Promise","resolveCredentials","requirements","consumer","contextOverride","credentialContext","oauthAdapter","ActionStore","get","runId","actionKey","set","output","SleepDuration","Date","WorkflowSleep","duration","HookOptions","ZodType","token","schema","HookHandle","PromiseLike","resumeUrl","WorkflowHook","options","WorkflowRunContext","workspacesRoot","sandbox","root","trigger","triggeredAt","sleep","hook","workflowCoreSchema","ZodString","ZodOptional","ZodEnum","core","$strip","ZodObject","ZodArray","$ZodTypeInternals","ZodCustom","$ZodFunctionArgs","$ZodFunctionOut","ZodFunction","key","name","description","subscription","mode","system","subscribable","files","path","file","dir","input","run","WorkflowMeta","infer","Omit","WorkflowIO","TInputSchema","TOutputSchema","ctx","WORKFLOW","WorkflowDefinition","TInput","TOutput","WorkflowDefinitionInput","isWorkflow","value","defineWorkflow","def","WorkflowEventType","ReplayEvent","id","seq","type","correlationId","data","AppendEventInput","DurableEventLog","append","event","listReplay","SleepPendingItem","kind","resumeAt","HookPendingItem","PendingItem","ReplayResult","status","error","items","ExecuteWorkflowOptions","eventLog","actionStore","hookBaseUrl","now","context","executeWorkflow","workflow","MemoryActionStore","records","MemoryEventLog","events","ids"],"sources":["../../workflow/dist/index.d.mts"],"mappings":"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"}
@@ -2,7 +2,7 @@ const require_dist = require("./dist-CLqJza2Y.cjs");
2
2
  const require_env_api_keys = require("./env-api-keys-BFptfIIs.cjs");
3
3
  const require_event_stream = require("./event-stream-CS-ls7wC.cjs");
4
4
  const require_json_parse = require("./json-parse-CpkTvzp8.cjs");
5
- const require_dist$1 = require("./dist-D9kmfOVj.cjs");
5
+ const require_dist$1 = require("./dist-B1Dy8DVb.cjs");
6
6
  const require_sanitize_unicode = require("./sanitize-unicode-Bh6iO3Nz.cjs");
7
7
  const require_transform_messages = require("./transform-messages-BwOWnhwJ.cjs");
8
8
  const require_hash = require("./hash-DEgLRlHK.cjs");
@@ -27563,4 +27563,4 @@ function mapChatStopReason(reason) {
27563
27563
  exports.streamMistral = streamMistral;
27564
27564
  exports.streamSimpleMistral = streamSimpleMistral;
27565
27565
 
27566
- //# sourceMappingURL=mistral-1tV3Hawf.cjs.map
27566
+ //# sourceMappingURL=mistral-Deqt4GvJ.cjs.map