@mastra/inngest 1.0.0-beta.6 → 1.0.0-beta.9
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/CHANGELOG.md +186 -0
- package/dist/execution-engine.d.ts +29 -5
- package/dist/execution-engine.d.ts.map +1 -1
- package/dist/index.cjs +364 -112
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.ts +1 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +359 -108
- package/dist/index.js.map +1 -1
- package/dist/pubsub.d.ts +56 -0
- package/dist/pubsub.d.ts.map +1 -0
- package/dist/run.d.ts +24 -1
- package/dist/run.d.ts.map +1 -1
- package/dist/workflow.d.ts.map +1 -1
- package/package.json +4 -5
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,191 @@
|
|
|
1
1
|
# @mastra/inngest
|
|
2
2
|
|
|
3
|
+
## 1.0.0-beta.9
|
|
4
|
+
|
|
5
|
+
### Patch Changes
|
|
6
|
+
|
|
7
|
+
- feat: Add field filtering and nested workflow control to workflow execution result endpoint ([#11246](https://github.com/mastra-ai/mastra/pull/11246))
|
|
8
|
+
|
|
9
|
+
Adds two optional query parameters to `/api/workflows/:workflowId/runs/:runId/execution-result` endpoint:
|
|
10
|
+
- `fields`: Request only specific fields (e.g., `status`, `result`, `error`)
|
|
11
|
+
- `withNestedWorkflows`: Control whether to fetch nested workflow data
|
|
12
|
+
|
|
13
|
+
This significantly reduces response payload size and improves response times for large workflows.
|
|
14
|
+
|
|
15
|
+
## Server Endpoint Usage
|
|
16
|
+
|
|
17
|
+
```http
|
|
18
|
+
# Get only status (minimal payload - fastest)
|
|
19
|
+
GET /api/workflows/:workflowId/runs/:runId/execution-result?fields=status
|
|
20
|
+
|
|
21
|
+
# Get status and result
|
|
22
|
+
GET /api/workflows/:workflowId/runs/:runId/execution-result?fields=status,result
|
|
23
|
+
|
|
24
|
+
# Get all fields but without nested workflow data (faster)
|
|
25
|
+
GET /api/workflows/:workflowId/runs/:runId/execution-result?withNestedWorkflows=false
|
|
26
|
+
|
|
27
|
+
# Get only specific fields without nested workflow data
|
|
28
|
+
GET /api/workflows/:workflowId/runs/:runId/execution-result?fields=status,steps&withNestedWorkflows=false
|
|
29
|
+
|
|
30
|
+
# Get full data (default behavior)
|
|
31
|
+
GET /api/workflows/:workflowId/runs/:runId/execution-result
|
|
32
|
+
```
|
|
33
|
+
|
|
34
|
+
## Client SDK Usage
|
|
35
|
+
|
|
36
|
+
```typescript
|
|
37
|
+
import { MastraClient } from '@mastra/client-js';
|
|
38
|
+
|
|
39
|
+
const client = new MastraClient({ baseUrl: 'http://localhost:4111' });
|
|
40
|
+
const workflow = client.getWorkflow('myWorkflow');
|
|
41
|
+
|
|
42
|
+
// Get only status (minimal payload - fastest)
|
|
43
|
+
const statusOnly = await workflow.runExecutionResult(runId, {
|
|
44
|
+
fields: ['status'],
|
|
45
|
+
});
|
|
46
|
+
console.log(statusOnly.status); // 'success' | 'failed' | 'running' | etc.
|
|
47
|
+
|
|
48
|
+
// Get status and result
|
|
49
|
+
const statusAndResult = await workflow.runExecutionResult(runId, {
|
|
50
|
+
fields: ['status', 'result'],
|
|
51
|
+
});
|
|
52
|
+
|
|
53
|
+
// Get all fields but without nested workflow data (faster)
|
|
54
|
+
const resultWithoutNested = await workflow.runExecutionResult(runId, {
|
|
55
|
+
withNestedWorkflows: false,
|
|
56
|
+
});
|
|
57
|
+
|
|
58
|
+
// Get specific fields without nested workflow data
|
|
59
|
+
const optimized = await workflow.runExecutionResult(runId, {
|
|
60
|
+
fields: ['status', 'steps'],
|
|
61
|
+
withNestedWorkflows: false,
|
|
62
|
+
});
|
|
63
|
+
|
|
64
|
+
// Get full execution result (default behavior)
|
|
65
|
+
const fullResult = await workflow.runExecutionResult(runId);
|
|
66
|
+
```
|
|
67
|
+
|
|
68
|
+
## Core API Changes
|
|
69
|
+
|
|
70
|
+
The `Workflow.getWorkflowRunExecutionResult` method now accepts an options object:
|
|
71
|
+
|
|
72
|
+
```typescript
|
|
73
|
+
await workflow.getWorkflowRunExecutionResult(runId, {
|
|
74
|
+
withNestedWorkflows: false, // default: true, set to false to skip nested workflow data
|
|
75
|
+
fields: ['status', 'result'], // optional field filtering
|
|
76
|
+
});
|
|
77
|
+
```
|
|
78
|
+
|
|
79
|
+
## Inngest Compatibility
|
|
80
|
+
|
|
81
|
+
The `@mastra/inngest` package has been updated to use the new options object API. This is a non-breaking internal change - no action required from inngest workflow users.
|
|
82
|
+
|
|
83
|
+
## Performance Impact
|
|
84
|
+
|
|
85
|
+
For workflows with large step outputs:
|
|
86
|
+
- Requesting only `status`: ~99% reduction in payload size
|
|
87
|
+
- Requesting `status,result,error`: ~95% reduction in payload size
|
|
88
|
+
- Using `withNestedWorkflows=false`: Avoids expensive nested workflow data fetching
|
|
89
|
+
- Combining both: Maximum performance optimization
|
|
90
|
+
|
|
91
|
+
- Updated dependencies [[`4f94ed8`](https://github.com/mastra-ai/mastra/commit/4f94ed8177abfde3ec536e3574883e075423350c), [`ac3cc23`](https://github.com/mastra-ai/mastra/commit/ac3cc2397d1966bc0fc2736a223abc449d3c7719), [`a86f4df`](https://github.com/mastra-ai/mastra/commit/a86f4df0407311e0d2ea49b9a541f0938810d6a9), [`029540c`](https://github.com/mastra-ai/mastra/commit/029540ca1e582fc2dd8d288ecd4a9b0f31a954ef), [`66741d1`](https://github.com/mastra-ai/mastra/commit/66741d1a99c4f42cf23a16109939e8348ac6852e), [`01b20fe`](https://github.com/mastra-ai/mastra/commit/01b20fefb7c67c2b7d79417598ef4e60256d1225), [`0dbf199`](https://github.com/mastra-ai/mastra/commit/0dbf199110f22192ce5c95b1c8148d4872b4d119), [`a7ce182`](https://github.com/mastra-ai/mastra/commit/a7ce1822a8785ce45d62dd5c911af465e144f7d7)]:
|
|
92
|
+
- @mastra/core@1.0.0-beta.14
|
|
93
|
+
|
|
94
|
+
## 1.0.0-beta.8
|
|
95
|
+
|
|
96
|
+
### Patch Changes
|
|
97
|
+
|
|
98
|
+
- Add `onFinish` and `onError` lifecycle callbacks to workflow options ([#11200](https://github.com/mastra-ai/mastra/pull/11200))
|
|
99
|
+
|
|
100
|
+
Workflows now support lifecycle callbacks for server-side handling of workflow completion and errors:
|
|
101
|
+
- `onFinish`: Called when workflow completes with any status (success, failed, suspended, tripwire)
|
|
102
|
+
- `onError`: Called only when workflow fails (failed or tripwire status)
|
|
103
|
+
|
|
104
|
+
```typescript
|
|
105
|
+
const workflow = createWorkflow({
|
|
106
|
+
id: 'my-workflow',
|
|
107
|
+
inputSchema: z.object({ ... }),
|
|
108
|
+
outputSchema: z.object({ ... }),
|
|
109
|
+
options: {
|
|
110
|
+
onFinish: async (result) => {
|
|
111
|
+
// Handle any workflow completion
|
|
112
|
+
await updateJobStatus(result.status);
|
|
113
|
+
},
|
|
114
|
+
onError: async (errorInfo) => {
|
|
115
|
+
// Handle workflow failures
|
|
116
|
+
await logError(errorInfo.error);
|
|
117
|
+
},
|
|
118
|
+
},
|
|
119
|
+
});
|
|
120
|
+
```
|
|
121
|
+
|
|
122
|
+
Both callbacks support sync and async functions. Callback errors are caught and logged, not propagated to the workflow result.
|
|
123
|
+
|
|
124
|
+
- Updated dependencies [[`919a22b`](https://github.com/mastra-ai/mastra/commit/919a22b25876f9ed5891efe5facbe682c30ff497)]:
|
|
125
|
+
- @mastra/core@1.0.0-beta.13
|
|
126
|
+
|
|
127
|
+
## 1.0.0-beta.7
|
|
128
|
+
|
|
129
|
+
### Patch Changes
|
|
130
|
+
|
|
131
|
+
- Preserve error details when thrown from workflow steps ([#10992](https://github.com/mastra-ai/mastra/pull/10992))
|
|
132
|
+
- Errors thrown in workflow steps now preserve full error details including `cause` chain and custom properties
|
|
133
|
+
- Added `SerializedError` type with proper cause chain support
|
|
134
|
+
- Added `SerializedStepResult` and `SerializedStepFailure` types for handling errors loaded from storage
|
|
135
|
+
- Enhanced `addErrorToJSON` to recursively serialize error cause chains with max depth protection
|
|
136
|
+
- Added `hydrateSerializedStepErrors` to convert serialized errors back to Error instances
|
|
137
|
+
- Fixed Inngest workflow error handling to extract original error from `NonRetriableError.cause`
|
|
138
|
+
|
|
139
|
+
- Refactor internal event system from Emitter to PubSub abstraction for workflow event handling. This change replaces the EventEmitter-based event system with a pluggable PubSub interface, enabling support for distributed workflow execution backends like Inngest. Adds `close()` method to PubSub implementations for proper cleanup. ([#11052](https://github.com/mastra-ai/mastra/pull/11052))
|
|
140
|
+
|
|
141
|
+
- Add `startAsync()` method and fix Inngest duplicate workflow execution bug ([#11093](https://github.com/mastra-ai/mastra/pull/11093))
|
|
142
|
+
|
|
143
|
+
**New Feature: `startAsync()` for fire-and-forget workflow execution**
|
|
144
|
+
- Add `Run.startAsync()` to base workflow class - starts workflow in background and returns `{ runId }` immediately
|
|
145
|
+
- Add `EventedRun.startAsync()` - publishes workflow start event without subscribing for completion
|
|
146
|
+
- Add `InngestRun.startAsync()` - sends Inngest event without polling for result
|
|
147
|
+
|
|
148
|
+
**Bug Fix: Prevent duplicate Inngest workflow executions**
|
|
149
|
+
- Fix `getRuns()` to properly handle rate limits (429), empty responses, and JSON parse errors with retry logic and exponential backoff
|
|
150
|
+
- Fix `getRunOutput()` to throw `NonRetriableError` when polling fails, preventing Inngest from retrying the parent function and re-triggering the workflow
|
|
151
|
+
- Add timeout to `getRunOutput()` polling (default 5 minutes) with `NonRetriableError` on timeout
|
|
152
|
+
|
|
153
|
+
This fixes a production issue where polling failures after successful workflow completion caused Inngest to retry the parent function, which fired a new workflow event and resulted in duplicate executions (e.g., duplicate Slack messages).
|
|
154
|
+
|
|
155
|
+
- Preserve error details when thrown from workflow steps ([#10992](https://github.com/mastra-ai/mastra/pull/10992))
|
|
156
|
+
|
|
157
|
+
Workflow errors now retain custom properties like `statusCode`, `responseHeaders`, and `cause` chains. This enables error-specific recovery logic in your applications.
|
|
158
|
+
|
|
159
|
+
**Before:**
|
|
160
|
+
|
|
161
|
+
```typescript
|
|
162
|
+
const result = await workflow.execute({ input });
|
|
163
|
+
if (result.status === 'failed') {
|
|
164
|
+
// Custom error properties were lost
|
|
165
|
+
console.log(result.error); // "Step execution failed" (just a string)
|
|
166
|
+
}
|
|
167
|
+
```
|
|
168
|
+
|
|
169
|
+
**After:**
|
|
170
|
+
|
|
171
|
+
```typescript
|
|
172
|
+
const result = await workflow.execute({ input });
|
|
173
|
+
if (result.status === 'failed') {
|
|
174
|
+
// Custom properties are preserved
|
|
175
|
+
console.log(result.error.message); // "Step execution failed"
|
|
176
|
+
console.log(result.error.statusCode); // 429
|
|
177
|
+
console.log(result.error.cause?.name); // "RateLimitError"
|
|
178
|
+
}
|
|
179
|
+
```
|
|
180
|
+
|
|
181
|
+
**Type change:** `WorkflowState.error` and `WorkflowRunState.error` types changed from `string | Error` to `SerializedError`.
|
|
182
|
+
|
|
183
|
+
Other changes:
|
|
184
|
+
- Added `UpdateWorkflowStateOptions` type for workflow state updates
|
|
185
|
+
|
|
186
|
+
- Updated dependencies [[`d5ed981`](https://github.com/mastra-ai/mastra/commit/d5ed981c8701c1b8a27a5f35a9a2f7d9244e695f), [`9650cce`](https://github.com/mastra-ai/mastra/commit/9650cce52a1d917ff9114653398e2a0f5c3ba808), [`932d63d`](https://github.com/mastra-ai/mastra/commit/932d63dd51be9c8bf1e00e3671fe65606c6fb9cd), [`b760b73`](https://github.com/mastra-ai/mastra/commit/b760b731aca7c8a3f041f61d57a7f125ae9cb215), [`695a621`](https://github.com/mastra-ai/mastra/commit/695a621528bdabeb87f83c2277cf2bb084c7f2b4), [`2b459f4`](https://github.com/mastra-ai/mastra/commit/2b459f466fd91688eeb2a44801dc23f7f8a887ab), [`486352b`](https://github.com/mastra-ai/mastra/commit/486352b66c746602b68a95839f830de14c7fb8c0), [`09e4bae`](https://github.com/mastra-ai/mastra/commit/09e4bae18dd5357d2ae078a4a95a2af32168ab08), [`24b76d8`](https://github.com/mastra-ai/mastra/commit/24b76d8e17656269c8ed09a0c038adb9cc2ae95a), [`243a823`](https://github.com/mastra-ai/mastra/commit/243a8239c5906f5c94e4f78b54676793f7510ae3), [`486352b`](https://github.com/mastra-ai/mastra/commit/486352b66c746602b68a95839f830de14c7fb8c0), [`c61fac3`](https://github.com/mastra-ai/mastra/commit/c61fac3add96f0dcce0208c07415279e2537eb62), [`6f14f70`](https://github.com/mastra-ai/mastra/commit/6f14f706ccaaf81b69544b6c1b75ab66a41e5317), [`09e4bae`](https://github.com/mastra-ai/mastra/commit/09e4bae18dd5357d2ae078a4a95a2af32168ab08), [`4524734`](https://github.com/mastra-ai/mastra/commit/45247343e384717a7c8404296275c56201d6470f), [`2a53598`](https://github.com/mastra-ai/mastra/commit/2a53598c6d8cfeb904a7fc74e57e526d751c8fa6), [`c7cd3c7`](https://github.com/mastra-ai/mastra/commit/c7cd3c7a187d7aaf79e2ca139de328bf609a14b4), [`847c212`](https://github.com/mastra-ai/mastra/commit/847c212caba7df0d6f2fc756b494ac3c75c3720d), [`6f941c4`](https://github.com/mastra-ai/mastra/commit/6f941c438ca5f578619788acc7608fc2e23bd176)]:
|
|
187
|
+
- @mastra/core@1.0.0-beta.12
|
|
188
|
+
|
|
3
189
|
## 1.0.0-beta.6
|
|
4
190
|
|
|
5
191
|
### Patch Changes
|
|
@@ -1,15 +1,18 @@
|
|
|
1
|
+
import type { SerializedError } from '@mastra/core/error';
|
|
2
|
+
import type { PubSub } from '@mastra/core/events';
|
|
1
3
|
import type { Mastra } from '@mastra/core/mastra';
|
|
2
4
|
import { DefaultExecutionEngine } from '@mastra/core/workflows';
|
|
3
|
-
import type { ExecutionContext, Step, StepResult,
|
|
5
|
+
import type { ExecutionContext, Step, StepResult, ExecutionEngineOptions, TimeTravelExecutionParams } from '@mastra/core/workflows';
|
|
4
6
|
import type { Inngest, BaseContext } from 'inngest';
|
|
5
7
|
export declare class InngestExecutionEngine extends DefaultExecutionEngine {
|
|
6
8
|
private inngestStep;
|
|
7
9
|
private inngestAttempts;
|
|
8
10
|
constructor(mastra: Mastra, inngestStep: BaseContext<Inngest>['step'], inngestAttempts: number | undefined, options: ExecutionEngineOptions);
|
|
9
11
|
/**
|
|
10
|
-
* Format errors
|
|
12
|
+
* Format errors while preserving Error instances and their custom properties.
|
|
13
|
+
* Uses getErrorFromUnknown to ensure all error properties are preserved.
|
|
11
14
|
*/
|
|
12
|
-
protected formatResultError(error: Error | string | undefined, lastOutput: StepResult<any, any, any, any>):
|
|
15
|
+
protected formatResultError(error: Error | string | undefined, lastOutput: StepResult<any, any, any, any>): SerializedError;
|
|
13
16
|
/**
|
|
14
17
|
* Detect InngestWorkflow instances for special nested workflow handling
|
|
15
18
|
*/
|
|
@@ -38,7 +41,7 @@ export declare class InngestExecutionEngine extends DefaultExecutionEngine {
|
|
|
38
41
|
ok: false;
|
|
39
42
|
error: {
|
|
40
43
|
status: 'failed';
|
|
41
|
-
error:
|
|
44
|
+
error: Error;
|
|
42
45
|
endedAt: number;
|
|
43
46
|
};
|
|
44
47
|
}>;
|
|
@@ -62,6 +65,27 @@ export declare class InngestExecutionEngine extends DefaultExecutionEngine {
|
|
|
62
65
|
* Provide Inngest step primitive in engine context
|
|
63
66
|
*/
|
|
64
67
|
getEngineContext(): Record<string, any>;
|
|
68
|
+
/**
|
|
69
|
+
* For Inngest, lifecycle callbacks are invoked in the workflow's finalize step
|
|
70
|
+
* (wrapped in step.run for durability), not in execute(). Override to skip.
|
|
71
|
+
*/
|
|
72
|
+
invokeLifecycleCallbacks(_result: {
|
|
73
|
+
status: any;
|
|
74
|
+
result?: any;
|
|
75
|
+
error?: any;
|
|
76
|
+
steps: Record<string, any>;
|
|
77
|
+
tripwire?: any;
|
|
78
|
+
}): Promise<void>;
|
|
79
|
+
/**
|
|
80
|
+
* Actually invoke the lifecycle callbacks. Called from workflow.ts finalize step.
|
|
81
|
+
*/
|
|
82
|
+
invokeLifecycleCallbacksInternal(result: {
|
|
83
|
+
status: any;
|
|
84
|
+
result?: any;
|
|
85
|
+
error?: any;
|
|
86
|
+
steps: Record<string, any>;
|
|
87
|
+
tripwire?: any;
|
|
88
|
+
}): Promise<void>;
|
|
65
89
|
/**
|
|
66
90
|
* Execute nested InngestWorkflow using inngestStep.invoke() for durability.
|
|
67
91
|
* This MUST be called directly (not inside step.run()) due to Inngest constraints.
|
|
@@ -78,7 +102,7 @@ export declare class InngestExecutionEngine extends DefaultExecutionEngine {
|
|
|
78
102
|
timeTravel?: TimeTravelExecutionParams;
|
|
79
103
|
prevOutput: any;
|
|
80
104
|
inputData: any;
|
|
81
|
-
|
|
105
|
+
pubsub: PubSub;
|
|
82
106
|
startedAt: number;
|
|
83
107
|
}): Promise<StepResult<any, any, any, any> | null>;
|
|
84
108
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"execution-engine.d.ts","sourceRoot":"","sources":["../src/execution-engine.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"execution-engine.d.ts","sourceRoot":"","sources":["../src/execution-engine.ts"],"names":[],"mappings":"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"}
|