@dbx-tools/shared-mastra 0.9.79 → 0.9.95
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/index.ts +3 -1
- package/lib/index.d.ts +3 -1
- package/lib/index.js +4 -2
- package/lib/src/resume.d.ts +18 -0
- package/lib/src/resume.js +43 -0
- package/lib/tsconfig.tsbuildinfo +1 -1
- package/package.json +11 -3
- package/src/resume.ts +44 -0
package/index.ts
CHANGED
|
@@ -3,10 +3,11 @@
|
|
|
3
3
|
// Hand edits are overwritten on the next watch; this file is read-only.
|
|
4
4
|
|
|
5
5
|
export const PACKAGE_IDENTIFIER = "@dbx-tools/shared-mastra";
|
|
6
|
-
export const PACKAGE_VERSION = "0.9.
|
|
6
|
+
export const PACKAGE_VERSION = "0.9.95";
|
|
7
7
|
export * as feedback from "./src/feedback.ts";
|
|
8
8
|
export * as markers from "./src/markers.ts";
|
|
9
9
|
export * as override from "./src/override.ts";
|
|
10
|
+
export * as resume from "./src/resume.ts";
|
|
10
11
|
export * as routes from "./src/routes.ts";
|
|
11
12
|
export * as thread from "./src/thread.ts";
|
|
12
13
|
export * as wire from "./src/wire.ts";
|
|
@@ -14,6 +15,7 @@ export { MLFLOW_TRACE_ID_HEADER, DEFAULT_FEEDBACK_NAME, DEFAULT_COMMENT_NAME, Ma
|
|
|
14
15
|
export type { MastraFeedbackValue, MastraFeedbackRequest, MastraFeedbackResponse, MastraMlflowExperimentResponse } from "./src/feedback.ts";
|
|
15
16
|
export type { MarkerType, ParsedMarker } from "./src/markers.ts";
|
|
16
17
|
export { MODEL_OVERRIDE_HEADER, MODEL_OVERRIDE_QUERY, MODEL_OVERRIDE_BODY_FIELDS } from "./src/override.ts";
|
|
18
|
+
export { STALE_MASTRA_RESUME_IDS, STALE_MASTRA_RESUME_STREAM_TEXT } from "./src/resume.ts";
|
|
17
19
|
export { MASTRA_ROUTES } from "./src/routes.ts";
|
|
18
20
|
export { THREAD_ID_HEADER, THREAD_ID_QUERY } from "./src/thread.ts";
|
|
19
21
|
export { MastraClientConfigSchema, DefaultModelResponseSchema, ServingEndpointsResponseSchema, MastraSuggestionsResponseSchema, ChartTypeSchema, ChartResultSchema, ChartSchema, StatementDataSchema, StartedEventSchema, AskGenieDoneEventSchema, MastraGenieErrorEventSchema, SummaryEventSchema, GenieAgentEventSchema, GenieWriterEventSchema, GENIE_PROGRESS_PART_TYPE, GenieProgressPartDataSchema, ToolStatusProgressEventSchema, ToolProgressEventSchema, TOOL_PROGRESS_PART_TYPE, ToolProgressPartDataSchema, GenieDatasetDataSchema, GenieDatasetChartSchema, GenieDatasetSchema, GenieSummaryItemSchema, GenieAgentResultSchema } from "./src/wire.ts";
|
package/lib/index.d.ts
CHANGED
|
@@ -1,8 +1,9 @@
|
|
|
1
1
|
export declare const PACKAGE_IDENTIFIER = "@dbx-tools/shared-mastra";
|
|
2
|
-
export declare const PACKAGE_VERSION = "0.9.
|
|
2
|
+
export declare const PACKAGE_VERSION = "0.9.95";
|
|
3
3
|
export * as feedback from "./src/feedback.ts";
|
|
4
4
|
export * as markers from "./src/markers.ts";
|
|
5
5
|
export * as override from "./src/override.ts";
|
|
6
|
+
export * as resume from "./src/resume.ts";
|
|
6
7
|
export * as routes from "./src/routes.ts";
|
|
7
8
|
export * as thread from "./src/thread.ts";
|
|
8
9
|
export * as wire from "./src/wire.ts";
|
|
@@ -10,6 +11,7 @@ export { MLFLOW_TRACE_ID_HEADER, DEFAULT_FEEDBACK_NAME, DEFAULT_COMMENT_NAME, Ma
|
|
|
10
11
|
export type { MastraFeedbackValue, MastraFeedbackRequest, MastraFeedbackResponse, MastraMlflowExperimentResponse } from "./src/feedback.ts";
|
|
11
12
|
export type { MarkerType, ParsedMarker } from "./src/markers.ts";
|
|
12
13
|
export { MODEL_OVERRIDE_HEADER, MODEL_OVERRIDE_QUERY, MODEL_OVERRIDE_BODY_FIELDS } from "./src/override.ts";
|
|
14
|
+
export { STALE_MASTRA_RESUME_IDS, STALE_MASTRA_RESUME_STREAM_TEXT } from "./src/resume.ts";
|
|
13
15
|
export { MASTRA_ROUTES } from "./src/routes.ts";
|
|
14
16
|
export { THREAD_ID_HEADER, THREAD_ID_QUERY } from "./src/thread.ts";
|
|
15
17
|
export { MastraClientConfigSchema, DefaultModelResponseSchema, ServingEndpointsResponseSchema, MastraSuggestionsResponseSchema, ChartTypeSchema, ChartResultSchema, ChartSchema, StatementDataSchema, StartedEventSchema, AskGenieDoneEventSchema, MastraGenieErrorEventSchema, SummaryEventSchema, GenieAgentEventSchema, GenieWriterEventSchema, GENIE_PROGRESS_PART_TYPE, GenieProgressPartDataSchema, ToolStatusProgressEventSchema, ToolProgressEventSchema, TOOL_PROGRESS_PART_TYPE, ToolProgressPartDataSchema, GenieDatasetDataSchema, GenieDatasetChartSchema, GenieDatasetSchema, GenieSummaryItemSchema, GenieAgentResultSchema } from "./src/wire.ts";
|
package/lib/index.js
CHANGED
|
@@ -2,16 +2,18 @@
|
|
|
2
2
|
// Regenerated from the exporting modules in ./src.
|
|
3
3
|
// Hand edits are overwritten on the next watch; this file is read-only.
|
|
4
4
|
export const PACKAGE_IDENTIFIER = "@dbx-tools/shared-mastra";
|
|
5
|
-
export const PACKAGE_VERSION = "0.9.
|
|
5
|
+
export const PACKAGE_VERSION = "0.9.95";
|
|
6
6
|
export * as feedback from "./src/feedback.js";
|
|
7
7
|
export * as markers from "./src/markers.js";
|
|
8
8
|
export * as override from "./src/override.js";
|
|
9
|
+
export * as resume from "./src/resume.js";
|
|
9
10
|
export * as routes from "./src/routes.js";
|
|
10
11
|
export * as thread from "./src/thread.js";
|
|
11
12
|
export * as wire from "./src/wire.js";
|
|
12
13
|
export { MLFLOW_TRACE_ID_HEADER, DEFAULT_FEEDBACK_NAME, DEFAULT_COMMENT_NAME, MastraFeedbackValueSchema, MastraFeedbackRequestSchema, MastraFeedbackResponseSchema, MastraMlflowExperimentResponseSchema } from "./src/feedback.js";
|
|
13
14
|
export { MODEL_OVERRIDE_HEADER, MODEL_OVERRIDE_QUERY, MODEL_OVERRIDE_BODY_FIELDS } from "./src/override.js";
|
|
15
|
+
export { STALE_MASTRA_RESUME_IDS, STALE_MASTRA_RESUME_STREAM_TEXT } from "./src/resume.js";
|
|
14
16
|
export { MASTRA_ROUTES } from "./src/routes.js";
|
|
15
17
|
export { THREAD_ID_HEADER, THREAD_ID_QUERY } from "./src/thread.js";
|
|
16
18
|
export { MastraClientConfigSchema, DefaultModelResponseSchema, ServingEndpointsResponseSchema, MastraSuggestionsResponseSchema, ChartTypeSchema, ChartResultSchema, ChartSchema, StatementDataSchema, StartedEventSchema, AskGenieDoneEventSchema, MastraGenieErrorEventSchema, SummaryEventSchema, GenieAgentEventSchema, GenieWriterEventSchema, GENIE_PROGRESS_PART_TYPE, GenieProgressPartDataSchema, ToolStatusProgressEventSchema, ToolProgressEventSchema, TOOL_PROGRESS_PART_TYPE, ToolProgressPartDataSchema, GenieDatasetDataSchema, GenieDatasetChartSchema, GenieDatasetSchema, GenieSummaryItemSchema, GenieAgentResultSchema } from "./src/wire.js";
|
|
17
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
19
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSwyQ0FBMkM7QUFDM0MsbURBQW1EO0FBQ25ELHdFQUF3RTtBQUV4RSxNQUFNLENBQUMsTUFBTSxrQkFBa0IsR0FBRywwQkFBMEIsQ0FBQztBQUM3RCxNQUFNLENBQUMsTUFBTSxlQUFlLEdBQUcsUUFBUSxDQUFDO0FBQ3hDLE9BQU8sS0FBSyxRQUFRLE1BQU0sbUJBQW1CLENBQUM7QUFDOUMsT0FBTyxLQUFLLE9BQU8sTUFBTSxrQkFBa0IsQ0FBQztBQUM1QyxPQUFPLEtBQUssUUFBUSxNQUFNLG1CQUFtQixDQUFDO0FBQzlDLE9BQU8sS0FBSyxNQUFNLE1BQU0saUJBQWlCLENBQUM7QUFDMUMsT0FBTyxLQUFLLE1BQU0sTUFBTSxpQkFBaUIsQ0FBQztBQUMxQyxPQUFPLEtBQUssTUFBTSxNQUFNLGlCQUFpQixDQUFDO0FBQzFDLE9BQU8sS0FBSyxJQUFJLE1BQU0sZUFBZSxDQUFDO0FBQ3RDLE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxxQkFBcUIsRUFBRSxvQkFBb0IsRUFBRSx5QkFBeUIsRUFBRSwyQkFBMkIsRUFBRSw0QkFBNEIsRUFBRSxvQ0FBb0MsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBR3BPLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxvQkFBb0IsRUFBRSwwQkFBMEIsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBQzVHLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSwrQkFBK0IsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQzNGLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUNoRCxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsZUFBZSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDcEUsT0FBTyxFQUFFLHdCQUF3QixFQUFFLDBCQUEwQixFQUFFLDhCQUE4QixFQUFFLCtCQUErQixFQUFFLGVBQWUsRUFBRSxpQkFBaUIsRUFBRSxXQUFXLEVBQUUsbUJBQW1CLEVBQUUsa0JBQWtCLEVBQUUsdUJBQXVCLEVBQUUsMkJBQTJCLEVBQUUsa0JBQWtCLEVBQUUscUJBQXFCLEVBQUUsc0JBQXNCLEVBQUUsd0JBQXdCLEVBQUUsMkJBQTJCLEVBQUUsNkJBQTZCLEVBQUUsdUJBQXVCLEVBQUUsdUJBQXVCLEVBQUUsMEJBQTBCLEVBQUUsc0JBQXNCLEVBQUUsdUJBQXVCLEVBQUUsa0JBQWtCLEVBQUUsc0JBQXNCLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSxlQUFlLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBHRU5FUkFURUQgYnkgcHJvamVuIHdhdGNoIC0gRE8gTk9UIEVESVQuXG4vLyBSZWdlbmVyYXRlZCBmcm9tIHRoZSBleHBvcnRpbmcgbW9kdWxlcyBpbiAuL3NyYy5cbi8vIEhhbmQgZWRpdHMgYXJlIG92ZXJ3cml0dGVuIG9uIHRoZSBuZXh0IHdhdGNoOyB0aGlzIGZpbGUgaXMgcmVhZC1vbmx5LlxuXG5leHBvcnQgY29uc3QgUEFDS0FHRV9JREVOVElGSUVSID0gXCJAZGJ4LXRvb2xzL3NoYXJlZC1tYXN0cmFcIjtcbmV4cG9ydCBjb25zdCBQQUNLQUdFX1ZFUlNJT04gPSBcIjAuOS45NVwiO1xuZXhwb3J0ICogYXMgZmVlZGJhY2sgZnJvbSBcIi4vc3JjL2ZlZWRiYWNrLnRzXCI7XG5leHBvcnQgKiBhcyBtYXJrZXJzIGZyb20gXCIuL3NyYy9tYXJrZXJzLnRzXCI7XG5leHBvcnQgKiBhcyBvdmVycmlkZSBmcm9tIFwiLi9zcmMvb3ZlcnJpZGUudHNcIjtcbmV4cG9ydCAqIGFzIHJlc3VtZSBmcm9tIFwiLi9zcmMvcmVzdW1lLnRzXCI7XG5leHBvcnQgKiBhcyByb3V0ZXMgZnJvbSBcIi4vc3JjL3JvdXRlcy50c1wiO1xuZXhwb3J0ICogYXMgdGhyZWFkIGZyb20gXCIuL3NyYy90aHJlYWQudHNcIjtcbmV4cG9ydCAqIGFzIHdpcmUgZnJvbSBcIi4vc3JjL3dpcmUudHNcIjtcbmV4cG9ydCB7IE1MRkxPV19UUkFDRV9JRF9IRUFERVIsIERFRkFVTFRfRkVFREJBQ0tfTkFNRSwgREVGQVVMVF9DT01NRU5UX05BTUUsIE1hc3RyYUZlZWRiYWNrVmFsdWVTY2hlbWEsIE1hc3RyYUZlZWRiYWNrUmVxdWVzdFNjaGVtYSwgTWFzdHJhRmVlZGJhY2tSZXNwb25zZVNjaGVtYSwgTWFzdHJhTWxmbG93RXhwZXJpbWVudFJlc3BvbnNlU2NoZW1hIH0gZnJvbSBcIi4vc3JjL2ZlZWRiYWNrLnRzXCI7XG5leHBvcnQgdHlwZSB7IE1hc3RyYUZlZWRiYWNrVmFsdWUsIE1hc3RyYUZlZWRiYWNrUmVxdWVzdCwgTWFzdHJhRmVlZGJhY2tSZXNwb25zZSwgTWFzdHJhTWxmbG93RXhwZXJpbWVudFJlc3BvbnNlIH0gZnJvbSBcIi4vc3JjL2ZlZWRiYWNrLnRzXCI7XG5leHBvcnQgdHlwZSB7IE1hcmtlclR5cGUsIFBhcnNlZE1hcmtlciB9IGZyb20gXCIuL3NyYy9tYXJrZXJzLnRzXCI7XG5leHBvcnQgeyBNT0RFTF9PVkVSUklERV9IRUFERVIsIE1PREVMX09WRVJSSURFX1FVRVJZLCBNT0RFTF9PVkVSUklERV9CT0RZX0ZJRUxEUyB9IGZyb20gXCIuL3NyYy9vdmVycmlkZS50c1wiO1xuZXhwb3J0IHsgU1RBTEVfTUFTVFJBX1JFU1VNRV9JRFMsIFNUQUxFX01BU1RSQV9SRVNVTUVfU1RSRUFNX1RFWFQgfSBmcm9tIFwiLi9zcmMvcmVzdW1lLnRzXCI7XG5leHBvcnQgeyBNQVNUUkFfUk9VVEVTIH0gZnJvbSBcIi4vc3JjL3JvdXRlcy50c1wiO1xuZXhwb3J0IHsgVEhSRUFEX0lEX0hFQURFUiwgVEhSRUFEX0lEX1FVRVJZIH0gZnJvbSBcIi4vc3JjL3RocmVhZC50c1wiO1xuZXhwb3J0IHsgTWFzdHJhQ2xpZW50Q29uZmlnU2NoZW1hLCBEZWZhdWx0TW9kZWxSZXNwb25zZVNjaGVtYSwgU2VydmluZ0VuZHBvaW50c1Jlc3BvbnNlU2NoZW1hLCBNYXN0cmFTdWdnZXN0aW9uc1Jlc3BvbnNlU2NoZW1hLCBDaGFydFR5cGVTY2hlbWEsIENoYXJ0UmVzdWx0U2NoZW1hLCBDaGFydFNjaGVtYSwgU3RhdGVtZW50RGF0YVNjaGVtYSwgU3RhcnRlZEV2ZW50U2NoZW1hLCBBc2tHZW5pZURvbmVFdmVudFNjaGVtYSwgTWFzdHJhR2VuaWVFcnJvckV2ZW50U2NoZW1hLCBTdW1tYXJ5RXZlbnRTY2hlbWEsIEdlbmllQWdlbnRFdmVudFNjaGVtYSwgR2VuaWVXcml0ZXJFdmVudFNjaGVtYSwgR0VOSUVfUFJPR1JFU1NfUEFSVF9UWVBFLCBHZW5pZVByb2dyZXNzUGFydERhdGFTY2hlbWEsIFRvb2xTdGF0dXNQcm9ncmVzc0V2ZW50U2NoZW1hLCBUb29sUHJvZ3Jlc3NFdmVudFNjaGVtYSwgVE9PTF9QUk9HUkVTU19QQVJUX1RZUEUsIFRvb2xQcm9ncmVzc1BhcnREYXRhU2NoZW1hLCBHZW5pZURhdGFzZXREYXRhU2NoZW1hLCBHZW5pZURhdGFzZXRDaGFydFNjaGVtYSwgR2VuaWVEYXRhc2V0U2NoZW1hLCBHZW5pZVN1bW1hcnlJdGVtU2NoZW1hLCBHZW5pZUFnZW50UmVzdWx0U2NoZW1hIH0gZnJvbSBcIi4vc3JjL3dpcmUudHNcIjtcbmV4cG9ydCB0eXBlIHsgTWFzdHJhQ2xpZW50Q29uZmlnLCBEZWZhdWx0TW9kZWxSZXNwb25zZSwgU2VydmluZ0VuZHBvaW50c1Jlc3BvbnNlLCBNYXN0cmFTdWdnZXN0aW9uc1Jlc3BvbnNlLCBDaGFydFR5cGUsIENoYXJ0UmVzdWx0LCBDaGFydCwgU3RhdGVtZW50RGF0YSwgU3RhcnRlZEV2ZW50LCBBc2tHZW5pZURvbmVFdmVudCwgTWFzdHJhR2VuaWVFcnJvckV2ZW50LCBTdW1tYXJ5RXZlbnQsIEdlbmllQWdlbnRFdmVudCwgR2VuaWVXcml0ZXJFdmVudCwgR2VuaWVXcml0ZXJFdmVudFR5cGUsIEdlbmllUHJvZ3Jlc3NQYXJ0RGF0YSwgVG9vbFN0YXR1c1Byb2dyZXNzRXZlbnQsIFRvb2xQcm9ncmVzc0V2ZW50LCBUb29sUHJvZ3Jlc3NQYXJ0RGF0YSwgR2VuaWVEYXRhc2V0RGF0YSwgR2VuaWVEYXRhc2V0Q2hhcnQsIEdlbmllRGF0YXNldCwgR2VuaWVTdW1tYXJ5SXRlbSwgR2VuaWVTdW1tYXJ5SXRlbVR5cGUsIEdlbmllQWdlbnRSZXN1bHQgfSBmcm9tIFwiLi9zcmMvd2lyZS50c1wiO1xuIl19
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Classify Mastra resume failures that are already resolved.
|
|
3
|
+
*
|
|
4
|
+
* A second approve, a reconnect, or an internal `consumeStream` can call
|
|
5
|
+
* `resume()` after the workflow left `suspended`. Mastra still throws for
|
|
6
|
+
* that; the chat client should treat it as the turn already moving on.
|
|
7
|
+
*
|
|
8
|
+
* @module
|
|
9
|
+
*/
|
|
10
|
+
/** Mastra error ids that mean the run is no longer waiting for resume. */
|
|
11
|
+
export declare const STALE_MASTRA_RESUME_IDS: readonly ["AGENT_RESUME_NO_SNAPSHOT_FOUND", "AGENT_RESUME_TOOL_CALL_NOT_SUSPENDED", "WORKFLOW_RESUME_ALREADY_CLAIMED"];
|
|
12
|
+
/**
|
|
13
|
+
* Marker `chatRoute.onError` writes instead of the raw workflow throw so
|
|
14
|
+
* the UI stream can finish without a user-visible failure.
|
|
15
|
+
*/
|
|
16
|
+
export declare const STALE_MASTRA_RESUME_STREAM_TEXT = "mastra-resume-already-settled";
|
|
17
|
+
/** True when retrying resume would not change run state. */
|
|
18
|
+
export declare function isStaleMastraResumeError(error: unknown): boolean;
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Classify Mastra resume failures that are already resolved.
|
|
3
|
+
*
|
|
4
|
+
* A second approve, a reconnect, or an internal `consumeStream` can call
|
|
5
|
+
* `resume()` after the workflow left `suspended`. Mastra still throws for
|
|
6
|
+
* that; the chat client should treat it as the turn already moving on.
|
|
7
|
+
*
|
|
8
|
+
* @module
|
|
9
|
+
*/
|
|
10
|
+
/** Mastra error ids that mean the run is no longer waiting for resume. */
|
|
11
|
+
export const STALE_MASTRA_RESUME_IDS = [
|
|
12
|
+
"AGENT_RESUME_NO_SNAPSHOT_FOUND",
|
|
13
|
+
"AGENT_RESUME_TOOL_CALL_NOT_SUSPENDED",
|
|
14
|
+
"WORKFLOW_RESUME_ALREADY_CLAIMED",
|
|
15
|
+
];
|
|
16
|
+
/**
|
|
17
|
+
* Marker `chatRoute.onError` writes instead of the raw workflow throw so
|
|
18
|
+
* the UI stream can finish without a user-visible failure.
|
|
19
|
+
*/
|
|
20
|
+
export const STALE_MASTRA_RESUME_STREAM_TEXT = "mastra-resume-already-settled";
|
|
21
|
+
const STALE_MASTRA_RESUME_ID_SET = new Set(STALE_MASTRA_RESUME_IDS);
|
|
22
|
+
const STALE_MASTRA_RESUME_PATTERNS = [
|
|
23
|
+
/workflow run was not suspended/i,
|
|
24
|
+
/no snapshot found for this workflow run/i,
|
|
25
|
+
/no suspended steps found/i,
|
|
26
|
+
/could not find a suspended/i,
|
|
27
|
+
/already resumed by another caller/i,
|
|
28
|
+
];
|
|
29
|
+
/** True when retrying resume would not change run state. */
|
|
30
|
+
export function isStaleMastraResumeError(error) {
|
|
31
|
+
if (error == null)
|
|
32
|
+
return false;
|
|
33
|
+
if (typeof error === "object" && "id" in error) {
|
|
34
|
+
const id = error.id;
|
|
35
|
+
if (typeof id === "string" && STALE_MASTRA_RESUME_ID_SET.has(id))
|
|
36
|
+
return true;
|
|
37
|
+
}
|
|
38
|
+
const message = error instanceof Error ? error.message : String(error);
|
|
39
|
+
if (message === STALE_MASTRA_RESUME_STREAM_TEXT)
|
|
40
|
+
return true;
|
|
41
|
+
return STALE_MASTRA_RESUME_PATTERNS.some((pattern) => pattern.test(message));
|
|
42
|
+
}
|
|
43
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVzdW1lLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3Jlc3VtZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7Ozs7R0FRRztBQUVILDBFQUEwRTtBQUMxRSxNQUFNLENBQUMsTUFBTSx1QkFBdUIsR0FBRztJQUNyQyxnQ0FBZ0M7SUFDaEMsc0NBQXNDO0lBQ3RDLGlDQUFpQztDQUN6QixDQUFDO0FBRVg7OztHQUdHO0FBQ0gsTUFBTSxDQUFDLE1BQU0sK0JBQStCLEdBQUcsK0JBQStCLENBQUM7QUFFL0UsTUFBTSwwQkFBMEIsR0FBRyxJQUFJLEdBQUcsQ0FBUyx1QkFBdUIsQ0FBQyxDQUFDO0FBRTVFLE1BQU0sNEJBQTRCLEdBQUc7SUFDbkMsaUNBQWlDO0lBQ2pDLDBDQUEwQztJQUMxQywyQkFBMkI7SUFDM0IsNkJBQTZCO0lBQzdCLG9DQUFvQztDQUNyQyxDQUFDO0FBRUYsNERBQTREO0FBQzVELE1BQU0sVUFBVSx3QkFBd0IsQ0FBQyxLQUFjO0lBQ3JELElBQUksS0FBSyxJQUFJLElBQUk7UUFBRSxPQUFPLEtBQUssQ0FBQztJQUNoQyxJQUFJLE9BQU8sS0FBSyxLQUFLLFFBQVEsSUFBSSxJQUFJLElBQUksS0FBSyxFQUFFLENBQUM7UUFDL0MsTUFBTSxFQUFFLEdBQUksS0FBeUIsQ0FBQyxFQUFFLENBQUM7UUFDekMsSUFBSSxPQUFPLEVBQUUsS0FBSyxRQUFRLElBQUksMEJBQTBCLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQztZQUFFLE9BQU8sSUFBSSxDQUFDO0lBQ2hGLENBQUM7SUFDRCxNQUFNLE9BQU8sR0FBRyxLQUFLLFlBQVksS0FBSyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDdkUsSUFBSSxPQUFPLEtBQUssK0JBQStCO1FBQUUsT0FBTyxJQUFJLENBQUM7SUFDN0QsT0FBTyw0QkFBNEIsQ0FBQyxJQUFJLENBQUMsQ0FBQyxPQUFPLEVBQUUsRUFBRSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQztBQUMvRSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBDbGFzc2lmeSBNYXN0cmEgcmVzdW1lIGZhaWx1cmVzIHRoYXQgYXJlIGFscmVhZHkgcmVzb2x2ZWQuXG4gKlxuICogQSBzZWNvbmQgYXBwcm92ZSwgYSByZWNvbm5lY3QsIG9yIGFuIGludGVybmFsIGBjb25zdW1lU3RyZWFtYCBjYW4gY2FsbFxuICogYHJlc3VtZSgpYCBhZnRlciB0aGUgd29ya2Zsb3cgbGVmdCBgc3VzcGVuZGVkYC4gTWFzdHJhIHN0aWxsIHRocm93cyBmb3JcbiAqIHRoYXQ7IHRoZSBjaGF0IGNsaWVudCBzaG91bGQgdHJlYXQgaXQgYXMgdGhlIHR1cm4gYWxyZWFkeSBtb3Zpbmcgb24uXG4gKlxuICogQG1vZHVsZVxuICovXG5cbi8qKiBNYXN0cmEgZXJyb3IgaWRzIHRoYXQgbWVhbiB0aGUgcnVuIGlzIG5vIGxvbmdlciB3YWl0aW5nIGZvciByZXN1bWUuICovXG5leHBvcnQgY29uc3QgU1RBTEVfTUFTVFJBX1JFU1VNRV9JRFMgPSBbXG4gIFwiQUdFTlRfUkVTVU1FX05PX1NOQVBTSE9UX0ZPVU5EXCIsXG4gIFwiQUdFTlRfUkVTVU1FX1RPT0xfQ0FMTF9OT1RfU1VTUEVOREVEXCIsXG4gIFwiV09SS0ZMT1dfUkVTVU1FX0FMUkVBRFlfQ0xBSU1FRFwiLFxuXSBhcyBjb25zdDtcblxuLyoqXG4gKiBNYXJrZXIgYGNoYXRSb3V0ZS5vbkVycm9yYCB3cml0ZXMgaW5zdGVhZCBvZiB0aGUgcmF3IHdvcmtmbG93IHRocm93IHNvXG4gKiB0aGUgVUkgc3RyZWFtIGNhbiBmaW5pc2ggd2l0aG91dCBhIHVzZXItdmlzaWJsZSBmYWlsdXJlLlxuICovXG5leHBvcnQgY29uc3QgU1RBTEVfTUFTVFJBX1JFU1VNRV9TVFJFQU1fVEVYVCA9IFwibWFzdHJhLXJlc3VtZS1hbHJlYWR5LXNldHRsZWRcIjtcblxuY29uc3QgU1RBTEVfTUFTVFJBX1JFU1VNRV9JRF9TRVQgPSBuZXcgU2V0PHN0cmluZz4oU1RBTEVfTUFTVFJBX1JFU1VNRV9JRFMpO1xuXG5jb25zdCBTVEFMRV9NQVNUUkFfUkVTVU1FX1BBVFRFUk5TID0gW1xuICAvd29ya2Zsb3cgcnVuIHdhcyBub3Qgc3VzcGVuZGVkL2ksXG4gIC9ubyBzbmFwc2hvdCBmb3VuZCBmb3IgdGhpcyB3b3JrZmxvdyBydW4vaSxcbiAgL25vIHN1c3BlbmRlZCBzdGVwcyBmb3VuZC9pLFxuICAvY291bGQgbm90IGZpbmQgYSBzdXNwZW5kZWQvaSxcbiAgL2FscmVhZHkgcmVzdW1lZCBieSBhbm90aGVyIGNhbGxlci9pLFxuXTtcblxuLyoqIFRydWUgd2hlbiByZXRyeWluZyByZXN1bWUgd291bGQgbm90IGNoYW5nZSBydW4gc3RhdGUuICovXG5leHBvcnQgZnVuY3Rpb24gaXNTdGFsZU1hc3RyYVJlc3VtZUVycm9yKGVycm9yOiB1bmtub3duKTogYm9vbGVhbiB7XG4gIGlmIChlcnJvciA9PSBudWxsKSByZXR1cm4gZmFsc2U7XG4gIGlmICh0eXBlb2YgZXJyb3IgPT09IFwib2JqZWN0XCIgJiYgXCJpZFwiIGluIGVycm9yKSB7XG4gICAgY29uc3QgaWQgPSAoZXJyb3IgYXMgeyBpZDogdW5rbm93biB9KS5pZDtcbiAgICBpZiAodHlwZW9mIGlkID09PSBcInN0cmluZ1wiICYmIFNUQUxFX01BU1RSQV9SRVNVTUVfSURfU0VULmhhcyhpZCkpIHJldHVybiB0cnVlO1xuICB9XG4gIGNvbnN0IG1lc3NhZ2UgPSBlcnJvciBpbnN0YW5jZW9mIEVycm9yID8gZXJyb3IubWVzc2FnZSA6IFN0cmluZyhlcnJvcik7XG4gIGlmIChtZXNzYWdlID09PSBTVEFMRV9NQVNUUkFfUkVTVU1FX1NUUkVBTV9URVhUKSByZXR1cm4gdHJ1ZTtcbiAgcmV0dXJuIFNUQUxFX01BU1RSQV9SRVNVTUVfUEFUVEVSTlMuc29tZSgocGF0dGVybikgPT4gcGF0dGVybi50ZXN0KG1lc3NhZ2UpKTtcbn1cbiJdfQ==
|
package/lib/tsconfig.tsbuildinfo
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"root":["../src/feedback.ts","../src/markers.ts","../src/override.ts","../src/routes.ts","../src/thread.ts","../src/wire.ts","../index.ts"],"version":"5.9.3"}
|
|
1
|
+
{"root":["../src/feedback.ts","../src/markers.ts","../src/override.ts","../src/resume.ts","../src/routes.ts","../src/thread.ts","../src/wire.ts","../index.ts"],"version":"5.9.3"}
|
package/package.json
CHANGED
|
@@ -22,8 +22,8 @@
|
|
|
22
22
|
"typescript": "^5.9.3"
|
|
23
23
|
},
|
|
24
24
|
"dependencies": {
|
|
25
|
-
"@dbx-tools/shared-genie": "^0.9.
|
|
26
|
-
"@dbx-tools/shared-model": "^0.9.
|
|
25
|
+
"@dbx-tools/shared-genie": "^0.9.95",
|
|
26
|
+
"@dbx-tools/shared-model": "^0.9.95",
|
|
27
27
|
"zod": "4.3.6"
|
|
28
28
|
},
|
|
29
29
|
"main": "./lib/index.js",
|
|
@@ -49,6 +49,10 @@
|
|
|
49
49
|
"types": "./lib/src/override.d.ts",
|
|
50
50
|
"default": "./lib/src/override.js"
|
|
51
51
|
},
|
|
52
|
+
"./resume": {
|
|
53
|
+
"types": "./lib/src/resume.d.ts",
|
|
54
|
+
"default": "./lib/src/resume.js"
|
|
55
|
+
},
|
|
52
56
|
"./routes": {
|
|
53
57
|
"types": "./lib/src/routes.d.ts",
|
|
54
58
|
"default": "./lib/src/routes.js"
|
|
@@ -64,7 +68,7 @@
|
|
|
64
68
|
"./package.json": "./package.json"
|
|
65
69
|
}
|
|
66
70
|
},
|
|
67
|
-
"version": "0.9.
|
|
71
|
+
"version": "0.9.95",
|
|
68
72
|
"types": "./lib/index.d.ts",
|
|
69
73
|
"dbxToolsConfig": {
|
|
70
74
|
"tags": [
|
|
@@ -89,6 +93,10 @@
|
|
|
89
93
|
"types": "./lib/src/override.d.ts",
|
|
90
94
|
"default": "./lib/src/override.js"
|
|
91
95
|
},
|
|
96
|
+
"./resume": {
|
|
97
|
+
"types": "./lib/src/resume.d.ts",
|
|
98
|
+
"default": "./lib/src/resume.js"
|
|
99
|
+
},
|
|
92
100
|
"./routes": {
|
|
93
101
|
"types": "./lib/src/routes.d.ts",
|
|
94
102
|
"default": "./lib/src/routes.js"
|
package/src/resume.ts
ADDED
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Classify Mastra resume failures that are already resolved.
|
|
3
|
+
*
|
|
4
|
+
* A second approve, a reconnect, or an internal `consumeStream` can call
|
|
5
|
+
* `resume()` after the workflow left `suspended`. Mastra still throws for
|
|
6
|
+
* that; the chat client should treat it as the turn already moving on.
|
|
7
|
+
*
|
|
8
|
+
* @module
|
|
9
|
+
*/
|
|
10
|
+
|
|
11
|
+
/** Mastra error ids that mean the run is no longer waiting for resume. */
|
|
12
|
+
export const STALE_MASTRA_RESUME_IDS = [
|
|
13
|
+
"AGENT_RESUME_NO_SNAPSHOT_FOUND",
|
|
14
|
+
"AGENT_RESUME_TOOL_CALL_NOT_SUSPENDED",
|
|
15
|
+
"WORKFLOW_RESUME_ALREADY_CLAIMED",
|
|
16
|
+
] as const;
|
|
17
|
+
|
|
18
|
+
/**
|
|
19
|
+
* Marker `chatRoute.onError` writes instead of the raw workflow throw so
|
|
20
|
+
* the UI stream can finish without a user-visible failure.
|
|
21
|
+
*/
|
|
22
|
+
export const STALE_MASTRA_RESUME_STREAM_TEXT = "mastra-resume-already-settled";
|
|
23
|
+
|
|
24
|
+
const STALE_MASTRA_RESUME_ID_SET = new Set<string>(STALE_MASTRA_RESUME_IDS);
|
|
25
|
+
|
|
26
|
+
const STALE_MASTRA_RESUME_PATTERNS = [
|
|
27
|
+
/workflow run was not suspended/i,
|
|
28
|
+
/no snapshot found for this workflow run/i,
|
|
29
|
+
/no suspended steps found/i,
|
|
30
|
+
/could not find a suspended/i,
|
|
31
|
+
/already resumed by another caller/i,
|
|
32
|
+
];
|
|
33
|
+
|
|
34
|
+
/** True when retrying resume would not change run state. */
|
|
35
|
+
export function isStaleMastraResumeError(error: unknown): boolean {
|
|
36
|
+
if (error == null) return false;
|
|
37
|
+
if (typeof error === "object" && "id" in error) {
|
|
38
|
+
const id = (error as { id: unknown }).id;
|
|
39
|
+
if (typeof id === "string" && STALE_MASTRA_RESUME_ID_SET.has(id)) return true;
|
|
40
|
+
}
|
|
41
|
+
const message = error instanceof Error ? error.message : String(error);
|
|
42
|
+
if (message === STALE_MASTRA_RESUME_STREAM_TEXT) return true;
|
|
43
|
+
return STALE_MASTRA_RESUME_PATTERNS.some((pattern) => pattern.test(message));
|
|
44
|
+
}
|