@mastra/deployer 0.3.0 → 0.3.1-alpha.1
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/dist/_tsup-dts-rollup.d.cts +23 -3
- package/dist/_tsup-dts-rollup.d.ts +23 -3
- package/dist/build/analyze.cjs +2 -2
- package/dist/build/analyze.js +1 -1
- package/dist/build/index.cjs +6 -6
- package/dist/build/index.js +2 -2
- package/dist/bundler/index.cjs +2 -2
- package/dist/bundler/index.js +1 -1
- package/dist/{chunk-LA6Y6GAB.cjs → chunk-6J52IX4J.cjs} +10 -0
- package/dist/{chunk-ITJLMUBF.js → chunk-ABTWXYGO.js} +1 -1
- package/dist/{chunk-EZPRF2XZ.cjs → chunk-GO4WLOL7.cjs} +9 -9
- package/dist/{chunk-GDLBKKIV.cjs → chunk-KCX3UGHY.cjs} +2 -2
- package/dist/{chunk-M6HTLNVA.js → chunk-OV2EMRTY.js} +6 -6
- package/dist/{chunk-USZDOFES.js → chunk-QJQ2V3Z2.js} +10 -0
- package/dist/index.cjs +12 -8
- package/dist/index.js +11 -7
- package/dist/server/index.cjs +479 -30
- package/dist/server/index.js +477 -27
- package/package.json +3 -3
package/dist/server/index.js
CHANGED
|
@@ -1,8 +1,6 @@
|
|
|
1
1
|
import crypto, { randomUUID } from 'crypto';
|
|
2
2
|
import { readFile } from 'fs/promises';
|
|
3
|
-
import { dirname } from 'path';
|
|
4
3
|
import { join } from 'path/posix';
|
|
5
|
-
import { fileURLToPath, pathToFileURL } from 'url';
|
|
6
4
|
import { createServer } from 'http';
|
|
7
5
|
import { Http2ServerRequest } from 'http2';
|
|
8
6
|
import { Readable } from 'stream';
|
|
@@ -11,7 +9,7 @@ import { getMimeType } from 'hono/utils/mime';
|
|
|
11
9
|
import { createReadStream, lstatSync } from 'fs';
|
|
12
10
|
import { html } from 'hono/html';
|
|
13
11
|
import { Telemetry } from '@mastra/core';
|
|
14
|
-
import { RuntimeContext } from '@mastra/core/
|
|
12
|
+
import { RuntimeContext } from '@mastra/core/runtime-context';
|
|
15
13
|
import { Hono } from 'hono';
|
|
16
14
|
import { bodyLimit } from 'hono/body-limit';
|
|
17
15
|
import { cors } from 'hono/cors';
|
|
@@ -27,9 +25,10 @@ import { z } from 'zod';
|
|
|
27
25
|
import { getTelemetryHandler as getTelemetryHandler$1, storeTelemetryHandler as storeTelemetryHandler$1 } from '@mastra/server/handlers/telemetry';
|
|
28
26
|
import { executeAgentToolHandler as executeAgentToolHandler$1, getToolsHandler as getToolsHandler$1, getToolByIdHandler as getToolByIdHandler$1, executeToolHandler as executeToolHandler$1 } from '@mastra/server/handlers/tools';
|
|
29
27
|
import { upsertVectors as upsertVectors$1, createIndex as createIndex$1, queryVectors as queryVectors$1, listIndexes as listIndexes$1, describeIndex as describeIndex$1, deleteIndex as deleteIndex$1 } from '@mastra/server/handlers/vector';
|
|
28
|
+
import { getVNextWorkflowsHandler as getVNextWorkflowsHandler$1, getVNextWorkflowByIdHandler as getVNextWorkflowByIdHandler$1, getVNextWorkflowRunsHandler as getVNextWorkflowRunsHandler$1, resumeVNextWorkflowHandler as resumeVNextWorkflowHandler$1, resumeAsyncVNextWorkflowHandler as resumeAsyncVNextWorkflowHandler$1, createVNextWorkflowRunHandler as createVNextWorkflowRunHandler$1, startAsyncVNextWorkflowHandler as startAsyncVNextWorkflowHandler$1, startVNextWorkflowRunHandler as startVNextWorkflowRunHandler$1, watchVNextWorkflowHandler as watchVNextWorkflowHandler$1 } from '@mastra/server/handlers/vNextWorkflows';
|
|
29
|
+
import { stream } from 'hono/streaming';
|
|
30
30
|
import { getSpeakersHandler as getSpeakersHandler$1, generateSpeechHandler, transcribeSpeechHandler } from '@mastra/server/handlers/voice';
|
|
31
31
|
import { getWorkflowsHandler as getWorkflowsHandler$1, getWorkflowByIdHandler as getWorkflowByIdHandler$1, getWorkflowRunsHandler as getWorkflowRunsHandler$1, resumeWorkflowHandler as resumeWorkflowHandler$1, resumeAsyncWorkflowHandler as resumeAsyncWorkflowHandler$1, createRunHandler as createRunHandler$1, startAsyncWorkflowHandler as startAsyncWorkflowHandler$1, startWorkflowRunHandler as startWorkflowRunHandler$1, watchWorkflowHandler as watchWorkflowHandler$1 } from '@mastra/server/handlers/workflows';
|
|
32
|
-
import { stream } from 'hono/streaming';
|
|
33
32
|
|
|
34
33
|
// src/server/index.ts
|
|
35
34
|
var RequestError = class extends Error {
|
|
@@ -167,14 +166,14 @@ var newRequest = (incoming, defaultHostname) => {
|
|
|
167
166
|
req[urlKey] = url.href;
|
|
168
167
|
return req;
|
|
169
168
|
};
|
|
170
|
-
function writeFromReadableStream(
|
|
171
|
-
if (
|
|
169
|
+
function writeFromReadableStream(stream3, writable) {
|
|
170
|
+
if (stream3.locked) {
|
|
172
171
|
throw new TypeError("ReadableStream is locked.");
|
|
173
172
|
} else if (writable.destroyed) {
|
|
174
|
-
|
|
173
|
+
stream3.cancel();
|
|
175
174
|
return;
|
|
176
175
|
}
|
|
177
|
-
const reader =
|
|
176
|
+
const reader = stream3.getReader();
|
|
178
177
|
writable.on("close", cancel);
|
|
179
178
|
writable.on("error", cancel);
|
|
180
179
|
reader.read().then(flow, cancel);
|
|
@@ -372,7 +371,7 @@ var responseViaResponseObject = async (res, outgoing, options = {}) => {
|
|
|
372
371
|
const resHeaderRecord = buildOutgoingHttpHeaders(res.headers);
|
|
373
372
|
const internalBody = getInternalBody(res);
|
|
374
373
|
if (internalBody) {
|
|
375
|
-
const { length, source, stream:
|
|
374
|
+
const { length, source, stream: stream3 } = internalBody;
|
|
376
375
|
if (source instanceof Uint8Array && source.byteLength !== length) ; else {
|
|
377
376
|
if (length) {
|
|
378
377
|
resHeaderRecord["content-length"] = length;
|
|
@@ -383,7 +382,7 @@ var responseViaResponseObject = async (res, outgoing, options = {}) => {
|
|
|
383
382
|
} else if (source instanceof Blob) {
|
|
384
383
|
outgoing.end(new Uint8Array(await source.arrayBuffer()));
|
|
385
384
|
} else {
|
|
386
|
-
await writeFromReadableStream(
|
|
385
|
+
await writeFromReadableStream(stream3, outgoing);
|
|
387
386
|
}
|
|
388
387
|
return;
|
|
389
388
|
}
|
|
@@ -487,18 +486,18 @@ var ENCODINGS = {
|
|
|
487
486
|
gzip: ".gz"
|
|
488
487
|
};
|
|
489
488
|
var ENCODINGS_ORDERED_KEYS = Object.keys(ENCODINGS);
|
|
490
|
-
var createStreamBody = (
|
|
489
|
+
var createStreamBody = (stream3) => {
|
|
491
490
|
const body = new ReadableStream({
|
|
492
491
|
start(controller) {
|
|
493
|
-
|
|
492
|
+
stream3.on("data", (chunk) => {
|
|
494
493
|
controller.enqueue(chunk);
|
|
495
494
|
});
|
|
496
|
-
|
|
495
|
+
stream3.on("end", () => {
|
|
497
496
|
controller.close();
|
|
498
497
|
});
|
|
499
498
|
},
|
|
500
499
|
cancel() {
|
|
501
|
-
|
|
500
|
+
stream3.destroy();
|
|
502
501
|
}
|
|
503
502
|
});
|
|
504
503
|
return body;
|
|
@@ -594,10 +593,10 @@ var serveStatic = (options = { root: "" }) => {
|
|
|
594
593
|
end = size - 1;
|
|
595
594
|
}
|
|
596
595
|
const chunksize = end - start + 1;
|
|
597
|
-
const
|
|
596
|
+
const stream3 = createReadStream(path, { start, end });
|
|
598
597
|
c2.header("Content-Length", chunksize.toString());
|
|
599
598
|
c2.header("Content-Range", `bytes ${start}-${end}/${stats.size}`);
|
|
600
|
-
return c2.body(createStreamBody(
|
|
599
|
+
return c2.body(createStreamBody(stream3), 206);
|
|
601
600
|
};
|
|
602
601
|
};
|
|
603
602
|
var RENDER_TYPE = {
|
|
@@ -955,7 +954,7 @@ async function setAgentInstructionsHandler(c2) {
|
|
|
955
954
|
// src/server/handlers/client.ts
|
|
956
955
|
var clients = /* @__PURE__ */ new Set();
|
|
957
956
|
function handleClientsRefresh(c2) {
|
|
958
|
-
const
|
|
957
|
+
const stream3 = new ReadableStream({
|
|
959
958
|
start(controller) {
|
|
960
959
|
clients.add(controller);
|
|
961
960
|
controller.enqueue("data: connected\n\n");
|
|
@@ -964,7 +963,7 @@ function handleClientsRefresh(c2) {
|
|
|
964
963
|
});
|
|
965
964
|
}
|
|
966
965
|
});
|
|
967
|
-
return new Response(
|
|
966
|
+
return new Response(stream3, {
|
|
968
967
|
headers: {
|
|
969
968
|
"Content-Type": "text/event-stream",
|
|
970
969
|
"Cache-Control": "no-cache",
|
|
@@ -1501,6 +1500,174 @@ async function deleteIndex(c2) {
|
|
|
1501
1500
|
return handleError(error, "Error deleting index");
|
|
1502
1501
|
}
|
|
1503
1502
|
}
|
|
1503
|
+
async function getVNextWorkflowsHandler(c2) {
|
|
1504
|
+
try {
|
|
1505
|
+
const mastra = c2.get("mastra");
|
|
1506
|
+
const workflows = await getVNextWorkflowsHandler$1({
|
|
1507
|
+
mastra
|
|
1508
|
+
});
|
|
1509
|
+
return c2.json(workflows);
|
|
1510
|
+
} catch (error) {
|
|
1511
|
+
return handleError(error, "Error getting workflows");
|
|
1512
|
+
}
|
|
1513
|
+
}
|
|
1514
|
+
async function getVNextWorkflowByIdHandler(c2) {
|
|
1515
|
+
try {
|
|
1516
|
+
const mastra = c2.get("mastra");
|
|
1517
|
+
const workflowId = c2.req.param("workflowId");
|
|
1518
|
+
const workflow = await getVNextWorkflowByIdHandler$1({
|
|
1519
|
+
mastra,
|
|
1520
|
+
workflowId
|
|
1521
|
+
});
|
|
1522
|
+
return c2.json(workflow);
|
|
1523
|
+
} catch (error) {
|
|
1524
|
+
return handleError(error, "Error getting workflow");
|
|
1525
|
+
}
|
|
1526
|
+
}
|
|
1527
|
+
async function createVNextWorkflowRunHandler(c2) {
|
|
1528
|
+
try {
|
|
1529
|
+
const mastra = c2.get("mastra");
|
|
1530
|
+
const workflowId = c2.req.param("workflowId");
|
|
1531
|
+
const prevRunId = c2.req.query("runId");
|
|
1532
|
+
const result = await createVNextWorkflowRunHandler$1({
|
|
1533
|
+
mastra,
|
|
1534
|
+
workflowId,
|
|
1535
|
+
runId: prevRunId
|
|
1536
|
+
});
|
|
1537
|
+
return c2.json(result);
|
|
1538
|
+
} catch (e2) {
|
|
1539
|
+
return handleError(e2, "Error creating run");
|
|
1540
|
+
}
|
|
1541
|
+
}
|
|
1542
|
+
async function startAsyncVNextWorkflowHandler(c2) {
|
|
1543
|
+
try {
|
|
1544
|
+
const mastra = c2.get("mastra");
|
|
1545
|
+
const workflowId = c2.req.param("workflowId");
|
|
1546
|
+
const { inputData, runtimeContext } = await c2.req.json();
|
|
1547
|
+
const runId = c2.req.query("runId");
|
|
1548
|
+
const result = await startAsyncVNextWorkflowHandler$1({
|
|
1549
|
+
mastra,
|
|
1550
|
+
runtimeContext,
|
|
1551
|
+
workflowId,
|
|
1552
|
+
runId,
|
|
1553
|
+
inputData
|
|
1554
|
+
});
|
|
1555
|
+
return c2.json(result);
|
|
1556
|
+
} catch (error) {
|
|
1557
|
+
return handleError(error, "Error executing workflow");
|
|
1558
|
+
}
|
|
1559
|
+
}
|
|
1560
|
+
async function startVNextWorkflowRunHandler(c2) {
|
|
1561
|
+
try {
|
|
1562
|
+
const mastra = c2.get("mastra");
|
|
1563
|
+
const workflowId = c2.req.param("workflowId");
|
|
1564
|
+
const { inputData, runtimeContext } = await c2.req.json();
|
|
1565
|
+
const runId = c2.req.query("runId");
|
|
1566
|
+
await startVNextWorkflowRunHandler$1({
|
|
1567
|
+
mastra,
|
|
1568
|
+
runtimeContext,
|
|
1569
|
+
workflowId,
|
|
1570
|
+
runId,
|
|
1571
|
+
inputData
|
|
1572
|
+
});
|
|
1573
|
+
return c2.json({ message: "Workflow run started" });
|
|
1574
|
+
} catch (e2) {
|
|
1575
|
+
return handleError(e2, "Error starting workflow run");
|
|
1576
|
+
}
|
|
1577
|
+
}
|
|
1578
|
+
function watchVNextWorkflowHandler(c2) {
|
|
1579
|
+
try {
|
|
1580
|
+
const mastra = c2.get("mastra");
|
|
1581
|
+
const logger2 = mastra.getLogger();
|
|
1582
|
+
const workflowId = c2.req.param("workflowId");
|
|
1583
|
+
const runId = c2.req.query("runId");
|
|
1584
|
+
if (!runId) {
|
|
1585
|
+
throw new HTTPException(400, { message: "runId required to watch workflow" });
|
|
1586
|
+
}
|
|
1587
|
+
return stream(
|
|
1588
|
+
c2,
|
|
1589
|
+
async (stream3) => {
|
|
1590
|
+
try {
|
|
1591
|
+
const result = await watchVNextWorkflowHandler$1({
|
|
1592
|
+
mastra,
|
|
1593
|
+
workflowId,
|
|
1594
|
+
runId
|
|
1595
|
+
});
|
|
1596
|
+
stream3.onAbort(() => {
|
|
1597
|
+
if (!result.locked) {
|
|
1598
|
+
return result.cancel();
|
|
1599
|
+
}
|
|
1600
|
+
});
|
|
1601
|
+
for await (const chunk of result) {
|
|
1602
|
+
await stream3.write(chunk.toString() + "");
|
|
1603
|
+
}
|
|
1604
|
+
} catch (err) {
|
|
1605
|
+
console.log(err);
|
|
1606
|
+
}
|
|
1607
|
+
},
|
|
1608
|
+
async (err) => {
|
|
1609
|
+
logger2.error("Error in watch stream: " + err?.message);
|
|
1610
|
+
}
|
|
1611
|
+
);
|
|
1612
|
+
} catch (error) {
|
|
1613
|
+
return handleError(error, "Error watching workflow");
|
|
1614
|
+
}
|
|
1615
|
+
}
|
|
1616
|
+
async function resumeAsyncVNextWorkflowHandler(c2) {
|
|
1617
|
+
try {
|
|
1618
|
+
const mastra = c2.get("mastra");
|
|
1619
|
+
const workflowId = c2.req.param("workflowId");
|
|
1620
|
+
const runId = c2.req.query("runId");
|
|
1621
|
+
const { step, resumeData, runtimeContext } = await c2.req.json();
|
|
1622
|
+
if (!runId) {
|
|
1623
|
+
throw new HTTPException(400, { message: "runId required to resume workflow" });
|
|
1624
|
+
}
|
|
1625
|
+
const result = await resumeAsyncVNextWorkflowHandler$1({
|
|
1626
|
+
mastra,
|
|
1627
|
+
runtimeContext,
|
|
1628
|
+
workflowId,
|
|
1629
|
+
runId,
|
|
1630
|
+
body: { step, resumeData }
|
|
1631
|
+
});
|
|
1632
|
+
return c2.json(result);
|
|
1633
|
+
} catch (error) {
|
|
1634
|
+
return handleError(error, "Error resuming workflow step");
|
|
1635
|
+
}
|
|
1636
|
+
}
|
|
1637
|
+
async function resumeVNextWorkflowHandler(c2) {
|
|
1638
|
+
try {
|
|
1639
|
+
const mastra = c2.get("mastra");
|
|
1640
|
+
const workflowId = c2.req.param("workflowId");
|
|
1641
|
+
const runId = c2.req.query("runId");
|
|
1642
|
+
const { step, resumeData, runtimeContext } = await c2.req.json();
|
|
1643
|
+
if (!runId) {
|
|
1644
|
+
throw new HTTPException(400, { message: "runId required to resume workflow" });
|
|
1645
|
+
}
|
|
1646
|
+
await resumeVNextWorkflowHandler$1({
|
|
1647
|
+
mastra,
|
|
1648
|
+
runtimeContext,
|
|
1649
|
+
workflowId,
|
|
1650
|
+
runId,
|
|
1651
|
+
body: { step, resumeData }
|
|
1652
|
+
});
|
|
1653
|
+
return c2.json({ message: "Workflow run resumed" });
|
|
1654
|
+
} catch (error) {
|
|
1655
|
+
return handleError(error, "Error resuming workflow");
|
|
1656
|
+
}
|
|
1657
|
+
}
|
|
1658
|
+
async function getVNextWorkflowRunsHandler(c2) {
|
|
1659
|
+
try {
|
|
1660
|
+
const mastra = c2.get("mastra");
|
|
1661
|
+
const workflowId = c2.req.param("workflowId");
|
|
1662
|
+
const workflowRuns = await getVNextWorkflowRunsHandler$1({
|
|
1663
|
+
mastra,
|
|
1664
|
+
workflowId
|
|
1665
|
+
});
|
|
1666
|
+
return c2.json(workflowRuns);
|
|
1667
|
+
} catch (error) {
|
|
1668
|
+
return handleError(error, "Error getting workflow runs");
|
|
1669
|
+
}
|
|
1670
|
+
}
|
|
1504
1671
|
async function getSpeakersHandler(c2) {
|
|
1505
1672
|
try {
|
|
1506
1673
|
const mastra = c2.get("mastra");
|
|
@@ -1648,20 +1815,20 @@ function watchWorkflowHandler(c2) {
|
|
|
1648
1815
|
}
|
|
1649
1816
|
return stream(
|
|
1650
1817
|
c2,
|
|
1651
|
-
async (
|
|
1818
|
+
async (stream3) => {
|
|
1652
1819
|
try {
|
|
1653
1820
|
const result = await watchWorkflowHandler$1({
|
|
1654
1821
|
mastra,
|
|
1655
1822
|
workflowId,
|
|
1656
1823
|
runId
|
|
1657
1824
|
});
|
|
1658
|
-
|
|
1825
|
+
stream3.onAbort(() => {
|
|
1659
1826
|
if (!result.locked) {
|
|
1660
1827
|
return result.cancel();
|
|
1661
1828
|
}
|
|
1662
1829
|
});
|
|
1663
1830
|
for await (const chunk of result) {
|
|
1664
|
-
await
|
|
1831
|
+
await stream3.write(chunk.toString() + "");
|
|
1665
1832
|
}
|
|
1666
1833
|
} catch (err) {
|
|
1667
1834
|
console.log(err);
|
|
@@ -1844,12 +2011,12 @@ var html2 = `
|
|
|
1844
2011
|
async function createHonoServer(mastra, options = {}) {
|
|
1845
2012
|
const app = new Hono();
|
|
1846
2013
|
const server = mastra.getServer();
|
|
1847
|
-
const
|
|
1848
|
-
const mastraToolsPaths = (await import(
|
|
2014
|
+
const toolsPath = "./tools.mjs";
|
|
2015
|
+
const mastraToolsPaths = (await import(toolsPath)).tools;
|
|
1849
2016
|
const toolImports = mastraToolsPaths ? await Promise.all(
|
|
1850
2017
|
// @ts-ignore
|
|
1851
2018
|
mastraToolsPaths.map(async (toolPath) => {
|
|
1852
|
-
return import(
|
|
2019
|
+
return import(toolPath);
|
|
1853
2020
|
})
|
|
1854
2021
|
) : [];
|
|
1855
2022
|
const tools = toolImports.reduce((acc, toolModule) => {
|
|
@@ -1948,7 +2115,7 @@ async function createHonoServer(mastra, options = {}) {
|
|
|
1948
2115
|
}
|
|
1949
2116
|
}
|
|
1950
2117
|
}
|
|
1951
|
-
if (
|
|
2118
|
+
if (server?.build?.apiReqLogs) {
|
|
1952
2119
|
app.use(logger());
|
|
1953
2120
|
}
|
|
1954
2121
|
app.get(
|
|
@@ -3085,6 +3252,289 @@ async function createHonoServer(mastra, options = {}) {
|
|
|
3085
3252
|
}),
|
|
3086
3253
|
storeTelemetryHandler
|
|
3087
3254
|
);
|
|
3255
|
+
app.get(
|
|
3256
|
+
"/api/workflows/v-next",
|
|
3257
|
+
h({
|
|
3258
|
+
description: "Get all vNext workflows",
|
|
3259
|
+
tags: ["vNextWorkflows"],
|
|
3260
|
+
responses: {
|
|
3261
|
+
200: {
|
|
3262
|
+
description: "List of all vNext workflows"
|
|
3263
|
+
}
|
|
3264
|
+
}
|
|
3265
|
+
}),
|
|
3266
|
+
getVNextWorkflowsHandler
|
|
3267
|
+
);
|
|
3268
|
+
app.get(
|
|
3269
|
+
"/api/workflows/v-next/:workflowId",
|
|
3270
|
+
h({
|
|
3271
|
+
description: "Get vNext workflow by ID",
|
|
3272
|
+
tags: ["vNextWorkflows"],
|
|
3273
|
+
parameters: [
|
|
3274
|
+
{
|
|
3275
|
+
name: "workflowId",
|
|
3276
|
+
in: "path",
|
|
3277
|
+
required: true,
|
|
3278
|
+
schema: { type: "string" }
|
|
3279
|
+
}
|
|
3280
|
+
],
|
|
3281
|
+
responses: {
|
|
3282
|
+
200: {
|
|
3283
|
+
description: "vNext workflow details"
|
|
3284
|
+
},
|
|
3285
|
+
404: {
|
|
3286
|
+
description: "vNext workflow not found"
|
|
3287
|
+
}
|
|
3288
|
+
}
|
|
3289
|
+
}),
|
|
3290
|
+
getVNextWorkflowByIdHandler
|
|
3291
|
+
);
|
|
3292
|
+
app.get(
|
|
3293
|
+
"/api/workflows/v-next/:workflowId/runs",
|
|
3294
|
+
h({
|
|
3295
|
+
description: "Get all runs for a vNext workflow",
|
|
3296
|
+
tags: ["vNextWorkflows"],
|
|
3297
|
+
parameters: [
|
|
3298
|
+
{
|
|
3299
|
+
name: "workflowId",
|
|
3300
|
+
in: "path",
|
|
3301
|
+
required: true,
|
|
3302
|
+
schema: { type: "string" }
|
|
3303
|
+
}
|
|
3304
|
+
],
|
|
3305
|
+
responses: {
|
|
3306
|
+
200: {
|
|
3307
|
+
description: "List of vNext workflow runs from storage"
|
|
3308
|
+
}
|
|
3309
|
+
}
|
|
3310
|
+
}),
|
|
3311
|
+
getVNextWorkflowRunsHandler
|
|
3312
|
+
);
|
|
3313
|
+
app.post(
|
|
3314
|
+
"/api/workflows/v-next/:workflowId/resume",
|
|
3315
|
+
h({
|
|
3316
|
+
description: "Resume a suspended vNext workflow step",
|
|
3317
|
+
tags: ["vNextWorkflows"],
|
|
3318
|
+
parameters: [
|
|
3319
|
+
{
|
|
3320
|
+
name: "workflowId",
|
|
3321
|
+
in: "path",
|
|
3322
|
+
required: true,
|
|
3323
|
+
schema: { type: "string" }
|
|
3324
|
+
},
|
|
3325
|
+
{
|
|
3326
|
+
name: "runId",
|
|
3327
|
+
in: "query",
|
|
3328
|
+
required: true,
|
|
3329
|
+
schema: { type: "string" }
|
|
3330
|
+
}
|
|
3331
|
+
],
|
|
3332
|
+
requestBody: {
|
|
3333
|
+
required: true,
|
|
3334
|
+
content: {
|
|
3335
|
+
"application/json": {
|
|
3336
|
+
schema: {
|
|
3337
|
+
type: "object",
|
|
3338
|
+
properties: {
|
|
3339
|
+
step: {
|
|
3340
|
+
oneOf: [{ type: "string" }, { type: "array", items: { type: "string" } }]
|
|
3341
|
+
},
|
|
3342
|
+
resumeData: { type: "object" },
|
|
3343
|
+
runtimeContext: { type: "object" }
|
|
3344
|
+
},
|
|
3345
|
+
required: ["step"]
|
|
3346
|
+
}
|
|
3347
|
+
}
|
|
3348
|
+
}
|
|
3349
|
+
}
|
|
3350
|
+
}),
|
|
3351
|
+
resumeVNextWorkflowHandler
|
|
3352
|
+
);
|
|
3353
|
+
app.post(
|
|
3354
|
+
"/api/workflows/v-next/:workflowId/resume-async",
|
|
3355
|
+
bodyLimit(bodyLimitOptions),
|
|
3356
|
+
h({
|
|
3357
|
+
description: "Resume a suspended vNext workflow step",
|
|
3358
|
+
tags: ["vNextWorkflows"],
|
|
3359
|
+
parameters: [
|
|
3360
|
+
{
|
|
3361
|
+
name: "workflowId",
|
|
3362
|
+
in: "path",
|
|
3363
|
+
required: true,
|
|
3364
|
+
schema: { type: "string" }
|
|
3365
|
+
},
|
|
3366
|
+
{
|
|
3367
|
+
name: "runId",
|
|
3368
|
+
in: "query",
|
|
3369
|
+
required: true,
|
|
3370
|
+
schema: { type: "string" }
|
|
3371
|
+
}
|
|
3372
|
+
],
|
|
3373
|
+
requestBody: {
|
|
3374
|
+
required: true,
|
|
3375
|
+
content: {
|
|
3376
|
+
"application/json": {
|
|
3377
|
+
schema: {
|
|
3378
|
+
type: "object",
|
|
3379
|
+
properties: {
|
|
3380
|
+
step: {
|
|
3381
|
+
oneOf: [{ type: "string" }, { type: "array", items: { type: "string" } }]
|
|
3382
|
+
},
|
|
3383
|
+
resumeData: { type: "object" },
|
|
3384
|
+
runtimeContext: { type: "object" }
|
|
3385
|
+
},
|
|
3386
|
+
required: ["step"]
|
|
3387
|
+
}
|
|
3388
|
+
}
|
|
3389
|
+
}
|
|
3390
|
+
}
|
|
3391
|
+
}),
|
|
3392
|
+
resumeAsyncVNextWorkflowHandler
|
|
3393
|
+
);
|
|
3394
|
+
app.post(
|
|
3395
|
+
"/api/workflows/v-next/:workflowId/create-run",
|
|
3396
|
+
bodyLimit(bodyLimitOptions),
|
|
3397
|
+
h({
|
|
3398
|
+
description: "Create a new vNext workflow run",
|
|
3399
|
+
tags: ["vNextWorkflows"],
|
|
3400
|
+
parameters: [
|
|
3401
|
+
{
|
|
3402
|
+
name: "workflowId",
|
|
3403
|
+
in: "path",
|
|
3404
|
+
required: true,
|
|
3405
|
+
schema: { type: "string" }
|
|
3406
|
+
},
|
|
3407
|
+
{
|
|
3408
|
+
name: "runId",
|
|
3409
|
+
in: "query",
|
|
3410
|
+
required: false,
|
|
3411
|
+
schema: { type: "string" }
|
|
3412
|
+
}
|
|
3413
|
+
],
|
|
3414
|
+
responses: {
|
|
3415
|
+
200: {
|
|
3416
|
+
description: "New vNext workflow run created"
|
|
3417
|
+
}
|
|
3418
|
+
}
|
|
3419
|
+
}),
|
|
3420
|
+
createVNextWorkflowRunHandler
|
|
3421
|
+
);
|
|
3422
|
+
app.post(
|
|
3423
|
+
"/api/workflows/v-next/:workflowId/start-async",
|
|
3424
|
+
bodyLimit(bodyLimitOptions),
|
|
3425
|
+
h({
|
|
3426
|
+
description: "Execute/Start a vNext workflow",
|
|
3427
|
+
tags: ["vNextWorkflows"],
|
|
3428
|
+
parameters: [
|
|
3429
|
+
{
|
|
3430
|
+
name: "workflowId",
|
|
3431
|
+
in: "path",
|
|
3432
|
+
required: true,
|
|
3433
|
+
schema: { type: "string" }
|
|
3434
|
+
},
|
|
3435
|
+
{
|
|
3436
|
+
name: "runId",
|
|
3437
|
+
in: "query",
|
|
3438
|
+
required: false,
|
|
3439
|
+
schema: { type: "string" }
|
|
3440
|
+
}
|
|
3441
|
+
],
|
|
3442
|
+
requestBody: {
|
|
3443
|
+
required: true,
|
|
3444
|
+
content: {
|
|
3445
|
+
"application/json": {
|
|
3446
|
+
schema: {
|
|
3447
|
+
type: "object",
|
|
3448
|
+
properties: {
|
|
3449
|
+
inputData: { type: "object" },
|
|
3450
|
+
runtimeContext: { type: "object" }
|
|
3451
|
+
}
|
|
3452
|
+
}
|
|
3453
|
+
}
|
|
3454
|
+
}
|
|
3455
|
+
},
|
|
3456
|
+
responses: {
|
|
3457
|
+
200: {
|
|
3458
|
+
description: "vNext workflow execution result"
|
|
3459
|
+
},
|
|
3460
|
+
404: {
|
|
3461
|
+
description: "vNext workflow not found"
|
|
3462
|
+
}
|
|
3463
|
+
}
|
|
3464
|
+
}),
|
|
3465
|
+
startAsyncVNextWorkflowHandler
|
|
3466
|
+
);
|
|
3467
|
+
app.post(
|
|
3468
|
+
"/api/workflows/v-next/:workflowId/start",
|
|
3469
|
+
h({
|
|
3470
|
+
description: "Create and start a new vNext workflow run",
|
|
3471
|
+
tags: ["vNextWorkflows"],
|
|
3472
|
+
parameters: [
|
|
3473
|
+
{
|
|
3474
|
+
name: "workflowId",
|
|
3475
|
+
in: "path",
|
|
3476
|
+
required: true,
|
|
3477
|
+
schema: { type: "string" }
|
|
3478
|
+
},
|
|
3479
|
+
{
|
|
3480
|
+
name: "runId",
|
|
3481
|
+
in: "query",
|
|
3482
|
+
required: true,
|
|
3483
|
+
schema: { type: "string" }
|
|
3484
|
+
}
|
|
3485
|
+
],
|
|
3486
|
+
requestBody: {
|
|
3487
|
+
required: true,
|
|
3488
|
+
content: {
|
|
3489
|
+
"application/json": {
|
|
3490
|
+
schema: {
|
|
3491
|
+
type: "object",
|
|
3492
|
+
properties: {
|
|
3493
|
+
inputData: { type: "object" },
|
|
3494
|
+
runtimeContext: { type: "object" }
|
|
3495
|
+
}
|
|
3496
|
+
}
|
|
3497
|
+
}
|
|
3498
|
+
}
|
|
3499
|
+
},
|
|
3500
|
+
responses: {
|
|
3501
|
+
200: {
|
|
3502
|
+
description: "vNext workflow run started"
|
|
3503
|
+
},
|
|
3504
|
+
404: {
|
|
3505
|
+
description: "vNext workflow not found"
|
|
3506
|
+
}
|
|
3507
|
+
}
|
|
3508
|
+
}),
|
|
3509
|
+
startVNextWorkflowRunHandler
|
|
3510
|
+
);
|
|
3511
|
+
app.get(
|
|
3512
|
+
"/api/workflows/v-next/:workflowId/watch",
|
|
3513
|
+
h({
|
|
3514
|
+
description: "Watch vNext workflow transitions in real-time",
|
|
3515
|
+
parameters: [
|
|
3516
|
+
{
|
|
3517
|
+
name: "workflowId",
|
|
3518
|
+
in: "path",
|
|
3519
|
+
required: true,
|
|
3520
|
+
schema: { type: "string" }
|
|
3521
|
+
},
|
|
3522
|
+
{
|
|
3523
|
+
name: "runId",
|
|
3524
|
+
in: "query",
|
|
3525
|
+
required: false,
|
|
3526
|
+
schema: { type: "string" }
|
|
3527
|
+
}
|
|
3528
|
+
],
|
|
3529
|
+
tags: ["vNextWorkflows"],
|
|
3530
|
+
responses: {
|
|
3531
|
+
200: {
|
|
3532
|
+
description: "vNext workflow transitions in real-time"
|
|
3533
|
+
}
|
|
3534
|
+
}
|
|
3535
|
+
}),
|
|
3536
|
+
watchVNextWorkflowHandler
|
|
3537
|
+
);
|
|
3088
3538
|
app.get(
|
|
3089
3539
|
"/api/workflows",
|
|
3090
3540
|
h({
|
|
@@ -3284,7 +3734,7 @@ async function createHonoServer(mastra, options = {}) {
|
|
|
3284
3734
|
"/api/workflows/:workflowId/startAsync",
|
|
3285
3735
|
bodyLimit(bodyLimitOptions),
|
|
3286
3736
|
h({
|
|
3287
|
-
description: "
|
|
3737
|
+
description: "@deprecated Use /api/workflows/:workflowId/start-async instead",
|
|
3288
3738
|
tags: ["workflows"],
|
|
3289
3739
|
parameters: [
|
|
3290
3740
|
{
|
|
@@ -3328,7 +3778,7 @@ async function createHonoServer(mastra, options = {}) {
|
|
|
3328
3778
|
"/api/workflows/:workflowId/start-async",
|
|
3329
3779
|
bodyLimit(bodyLimitOptions),
|
|
3330
3780
|
h({
|
|
3331
|
-
description: "
|
|
3781
|
+
description: "Execute/Start a workflow",
|
|
3332
3782
|
tags: ["workflows"],
|
|
3333
3783
|
parameters: [
|
|
3334
3784
|
{
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@mastra/deployer",
|
|
3
|
-
"version": "0.3.
|
|
3
|
+
"version": "0.3.1-alpha.1",
|
|
4
4
|
"description": "",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"files": [
|
|
@@ -107,8 +107,8 @@
|
|
|
107
107
|
"rollup-plugin-node-externals": "^8.0.0",
|
|
108
108
|
"typescript-paths": "^1.5.1",
|
|
109
109
|
"zod": "^3.24.2",
|
|
110
|
-
"@mastra/
|
|
111
|
-
"@mastra/
|
|
110
|
+
"@mastra/server": "^2.0.1-alpha.1",
|
|
111
|
+
"@mastra/core": "^0.9.1-alpha.1"
|
|
112
112
|
},
|
|
113
113
|
"devDependencies": {
|
|
114
114
|
"@hono/node-server": "^1.13.8",
|