@mastra/code-sdk 1.2.0-alpha.17 → 1.2.0-alpha.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.
Files changed (86) hide show
  1. package/CHANGELOG.md +21 -0
  2. package/README.md +22 -0
  3. package/dist/agents/modes/build.d.ts.map +1 -1
  4. package/dist/agents/modes/build.js +6 -1
  5. package/dist/agents/modes/build.js.map +1 -1
  6. package/dist/agents/modes/explore.d.ts.map +1 -1
  7. package/dist/agents/modes/explore.js +4 -1
  8. package/dist/agents/modes/explore.js.map +1 -1
  9. package/dist/agents/modes/plan.d.ts.map +1 -1
  10. package/dist/agents/modes/plan.js +6 -1
  11. package/dist/agents/modes/plan.js.map +1 -1
  12. package/dist/agents/tool-availability.d.ts.map +1 -1
  13. package/dist/agents/tool-availability.js +6 -2
  14. package/dist/agents/tool-availability.js.map +1 -1
  15. package/dist/agents/tools.d.ts +16 -0
  16. package/dist/agents/tools.d.ts.map +1 -1
  17. package/dist/agents/tools.js +15 -2
  18. package/dist/agents/tools.js.map +1 -1
  19. package/dist/agents/workflow-builder-agent.d.ts +2 -0
  20. package/dist/agents/workflow-builder-agent.d.ts.map +1 -0
  21. package/dist/agents/workflow-builder-agent.js +80 -0
  22. package/dist/agents/workflow-builder-agent.js.map +1 -0
  23. package/dist/index.d.ts +5 -0
  24. package/dist/index.d.ts.map +1 -1
  25. package/dist/index.js +26 -7
  26. package/dist/index.js.map +1 -1
  27. package/dist/permissions.d.ts.map +1 -1
  28. package/dist/permissions.js +6 -1
  29. package/dist/permissions.js.map +1 -1
  30. package/dist/tools/workflows/create-workflow.d.ts +7 -0
  31. package/dist/tools/workflows/create-workflow.d.ts.map +1 -0
  32. package/dist/tools/workflows/create-workflow.js +81 -0
  33. package/dist/tools/workflows/create-workflow.js.map +1 -0
  34. package/dist/tools/workflows/delete-workflow.d.ts +7 -0
  35. package/dist/tools/workflows/delete-workflow.d.ts.map +1 -0
  36. package/dist/tools/workflows/delete-workflow.js +21 -0
  37. package/dist/tools/workflows/delete-workflow.js.map +1 -0
  38. package/dist/tools/workflows/ephemeral-memory.d.ts +7 -0
  39. package/dist/tools/workflows/ephemeral-memory.d.ts.map +1 -0
  40. package/dist/tools/workflows/ephemeral-memory.js +45 -0
  41. package/dist/tools/workflows/ephemeral-memory.js.map +1 -0
  42. package/dist/tools/workflows/extract-json-schema.d.ts +12 -0
  43. package/dist/tools/workflows/extract-json-schema.d.ts.map +1 -0
  44. package/dist/tools/workflows/extract-json-schema.js +22 -0
  45. package/dist/tools/workflows/extract-json-schema.js.map +1 -0
  46. package/dist/tools/workflows/get-workflow.d.ts +11 -0
  47. package/dist/tools/workflows/get-workflow.d.ts.map +1 -0
  48. package/dist/tools/workflows/get-workflow.js +34 -0
  49. package/dist/tools/workflows/get-workflow.js.map +1 -0
  50. package/dist/tools/workflows/list-available-agents.d.ts +8 -0
  51. package/dist/tools/workflows/list-available-agents.d.ts.map +1 -0
  52. package/dist/tools/workflows/list-available-agents.js +32 -0
  53. package/dist/tools/workflows/list-available-agents.js.map +1 -0
  54. package/dist/tools/workflows/list-available-tools.d.ts +9 -0
  55. package/dist/tools/workflows/list-available-tools.d.ts.map +1 -0
  56. package/dist/tools/workflows/list-available-tools.js +40 -0
  57. package/dist/tools/workflows/list-available-tools.js.map +1 -0
  58. package/dist/tools/workflows/list-available-workflows.d.ts +9 -0
  59. package/dist/tools/workflows/list-available-workflows.d.ts.map +1 -0
  60. package/dist/tools/workflows/list-available-workflows.js +32 -0
  61. package/dist/tools/workflows/list-available-workflows.js.map +1 -0
  62. package/dist/tools/workflows/list-workflows.d.ts +9 -0
  63. package/dist/tools/workflows/list-workflows.d.ts.map +1 -0
  64. package/dist/tools/workflows/list-workflows.js +33 -0
  65. package/dist/tools/workflows/list-workflows.js.map +1 -0
  66. package/dist/tools/workflows/run-workflow.d.ts +9 -0
  67. package/dist/tools/workflows/run-workflow.d.ts.map +1 -0
  68. package/dist/tools/workflows/run-workflow.js +52 -0
  69. package/dist/tools/workflows/run-workflow.js.map +1 -0
  70. package/dist/tools/workflows/save-workflow.d.ts +369 -0
  71. package/dist/tools/workflows/save-workflow.d.ts.map +1 -0
  72. package/dist/tools/workflows/save-workflow.js +28 -0
  73. package/dist/tools/workflows/save-workflow.js.map +1 -0
  74. package/dist/tools/workflows/tool-ids.d.ts +15 -0
  75. package/dist/tools/workflows/tool-ids.d.ts.map +1 -0
  76. package/dist/tools/workflows/tool-ids.js +19 -0
  77. package/dist/tools/workflows/tool-ids.js.map +1 -0
  78. package/dist/workflows/register-primitives.d.ts +52 -0
  79. package/dist/workflows/register-primitives.d.ts.map +1 -0
  80. package/dist/workflows/register-primitives.js +39 -0
  81. package/dist/workflows/register-primitives.js.map +1 -0
  82. package/dist/workflows/service.d.ts +64 -0
  83. package/dist/workflows/service.d.ts.map +1 -0
  84. package/dist/workflows/service.js +53 -0
  85. package/dist/workflows/service.js.map +1 -0
  86. package/package.json +8 -8
@@ -0,0 +1,53 @@
1
+ //#region src/workflows/service.ts
2
+ async function workflowDefinitionsStore(mastra) {
3
+ const storage = mastra.getStorage();
4
+ if (!storage) throw new Error("Storage is not configured on the Mastra instance.");
5
+ const store = await storage.getStore("workflowDefinitions");
6
+ if (!store) throw new Error("workflowDefinitions storage domain is not available.");
7
+ return store;
8
+ }
9
+ async function listWorkflows(mastra) {
10
+ const result = await (await workflowDefinitionsStore(mastra)).list({ status: "active" });
11
+ return {
12
+ workflows: result.definitions,
13
+ total: result.total
14
+ };
15
+ }
16
+ async function getWorkflow(mastra, id) {
17
+ return (await workflowDefinitionsStore(mastra)).get(id);
18
+ }
19
+ async function deleteWorkflow(mastra, id) {
20
+ await (await workflowDefinitionsStore(mastra)).delete(id);
21
+ mastra.removeWorkflow(id);
22
+ return {
23
+ ok: true,
24
+ id
25
+ };
26
+ }
27
+ async function runWorkflow(mastra, workflowId, inputData, requestContext, onEvent) {
28
+ let wf;
29
+ let lookupError;
30
+ try {
31
+ wf = mastra.getWorkflow(workflowId);
32
+ } catch (error) {
33
+ lookupError = error;
34
+ }
35
+ if (!wf) throw new Error(`No workflow registered with id "${workflowId}". Was it built and saved?`, { cause: lookupError });
36
+ const run = await wf.createRun();
37
+ if (!onEvent) return await run.start({
38
+ inputData,
39
+ requestContext
40
+ });
41
+ const output = run.stream({
42
+ inputData,
43
+ requestContext
44
+ });
45
+ for await (const event of output.fullStream) try {
46
+ onEvent(event);
47
+ } catch {}
48
+ return await output.result;
49
+ }
50
+ //#endregion
51
+ export { deleteWorkflow, getWorkflow, listWorkflows, runWorkflow };
52
+
53
+ //# sourceMappingURL=service.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"service.js","names":[],"sources":["../../src/workflows/service.ts"],"sourcesContent":["/**\n * Thin wrapper around `mastra.getStorage().getStore('workflowDefinitions')` and\n * `mastra.getWorkflow(id).createRun().stream(...)` so both the parent-mode\n * tools and the `/workflows` slash command go through one implementation.\n */\nimport type { Mastra } from '@mastra/core/mastra';\n\nexport interface StoredWorkflowRow {\n id: string;\n description?: string;\n status: 'active' | 'archived';\n inputSchema?: unknown;\n outputSchema?: unknown;\n graph?: unknown[];\n createdAt?: Date;\n updatedAt?: Date;\n}\n\nexport interface RunResult {\n status: string;\n result?: unknown;\n error?: unknown;\n steps?: Record<string, unknown>;\n tripwire?: { reason?: string; retry?: unknown; metadata?: unknown; processorId?: string };\n}\n\nexport interface WorkflowRunEvent {\n type: string;\n payload?: Record<string, unknown> & { id?: string };\n [key: string]: unknown;\n}\n\nexport type WorkflowRunEventCallback = (event: WorkflowRunEvent) => void;\n\ninterface WorkflowRunOutputLike {\n fullStream: ReadableStream<WorkflowRunEvent>;\n result: Promise<unknown>;\n}\n\ninterface WorkflowDefinitionsStore {\n list: (args?: { status?: 'active' | 'archived' }) => Promise<{ definitions: StoredWorkflowRow[]; total: number }>;\n get: (id: string) => Promise<StoredWorkflowRow | null>;\n delete: (id: string) => Promise<void>;\n}\n\nasync function workflowDefinitionsStore(mastra: Mastra): Promise<WorkflowDefinitionsStore> {\n const storage = mastra.getStorage();\n if (!storage) throw new Error('Storage is not configured on the Mastra instance.');\n // `getStore` is a generic domain accessor; workflowDefinitions is registered\n // by mastracode. The domain shape is validated at boot; cast the resolved\n // store to the interface we exercise.\n const store = (await (storage as unknown as { getStore: (name: string) => Promise<unknown> }).getStore(\n 'workflowDefinitions',\n )) as WorkflowDefinitionsStore | undefined;\n if (!store) throw new Error('workflowDefinitions storage domain is not available.');\n return store;\n}\n\nexport async function listWorkflows(mastra: Mastra): Promise<{ workflows: StoredWorkflowRow[]; total: number }> {\n const store = await workflowDefinitionsStore(mastra);\n const result = await store.list({ status: 'active' });\n return { workflows: result.definitions, total: result.total };\n}\n\nexport async function getWorkflow(mastra: Mastra, id: string): Promise<StoredWorkflowRow | null> {\n const store = await workflowDefinitionsStore(mastra);\n return store.get(id);\n}\n\nexport async function deleteWorkflow(mastra: Mastra, id: string): Promise<{ ok: true; id: string }> {\n const store = await workflowDefinitionsStore(mastra);\n await store.delete(id);\n // Also unregister the live in-process Workflow instance so a subsequent\n // save-workflow with the same id re-registers cleanly instead of getting\n // no-op'd by addWorkflow's first-write-wins guard.\n mastra.removeWorkflow(id);\n return { ok: true, id };\n}\n\nexport async function runWorkflow(\n mastra: Mastra,\n workflowId: string,\n inputData: unknown,\n /**\n * Optional. When provided, passed through to `run.stream(...)` so agent steps\n * (like `code-agent`) that depend on session state — `getDynamicModel` reads\n * `controller.session.modelId` off it — can resolve correctly.\n *\n * Chat-driven `run-workflow` inherits its context from the parent code-agent\n * turn, so this is unused there. The `/workflows run` slash handler builds a\n * synthetic context from the current TUI session and passes it here.\n */\n requestContext?: unknown,\n /**\n * Optional. When provided, invoked for every `WorkflowStreamEvent` the run\n * emits — used by the `/workflows run` slash handler to render live per-step\n * progress in the TUI. Non-fatal: errors in the callback are swallowed so a\n * misbehaving consumer can't take the workflow down.\n */\n onEvent?: WorkflowRunEventCallback,\n): Promise<RunResult> {\n // `getWorkflow` is generic over the statically-registered workflow map, but\n // stored workflows are registered dynamically at load time — the id is a\n // runtime value, not a compile-time key. `as never` widens the arg past the\n // generic constraint; the runtime lookup already validates.\n let wf: ReturnType<Mastra['getWorkflow']> | undefined;\n let lookupError: unknown;\n try {\n wf = mastra.getWorkflow(workflowId as never);\n } catch (error) {\n lookupError = error;\n }\n if (!wf) {\n throw new Error(`No workflow registered with id \"${workflowId}\". Was it built and saved?`, { cause: lookupError });\n }\n\n const run = await wf.createRun();\n if (!onEvent) {\n return (await run.start({\n inputData,\n requestContext: requestContext as Parameters<typeof run.start>[0]['requestContext'],\n })) as RunResult;\n }\n\n const output = run.stream({\n inputData,\n requestContext: requestContext as Parameters<typeof run.stream>[0]['requestContext'],\n }) as unknown as WorkflowRunOutputLike;\n for await (const event of output.fullStream) {\n try {\n onEvent(event);\n } catch {\n // Never let a bad consumer break the run.\n }\n }\n return (await output.result) as RunResult;\n}\n"],"mappings":";AA6CA,eAAe,yBAAyB,QAAmD;CACzF,MAAM,UAAU,OAAO,WAAW;CAClC,IAAI,CAAC,SAAS,MAAM,IAAI,MAAM,mDAAmD;CAIjF,MAAM,QAAS,MAAO,QAAwE,SAC5F,qBACF;CACA,IAAI,CAAC,OAAO,MAAM,IAAI,MAAM,sDAAsD;CAClF,OAAO;AACT;AAEA,eAAsB,cAAc,QAA4E;CAE9G,MAAM,SAAS,OAAM,MADD,yBAAyB,MAAM,EAAA,CACxB,KAAK,EAAE,QAAQ,SAAS,CAAC;CACpD,OAAO;EAAE,WAAW,OAAO;EAAa,OAAO,OAAO;CAAM;AAC9D;AAEA,eAAsB,YAAY,QAAgB,IAA+C;CAE/F,QAAO,MADa,yBAAyB,MAAM,EAAA,CACtC,IAAI,EAAE;AACrB;AAEA,eAAsB,eAAe,QAAgB,IAA+C;CAElG,OAAM,MADc,yBAAyB,MAAM,EAAA,CACvC,OAAO,EAAE;CAIrB,OAAO,eAAe,EAAE;CACxB,OAAO;EAAE,IAAI;EAAM;CAAG;AACxB;AAEA,eAAsB,YACpB,QACA,YACA,WAUA,gBAOA,SACoB;CAKpB,IAAI;CACJ,IAAI;CACJ,IAAI;EACF,KAAK,OAAO,YAAY,UAAmB;CAC7C,SAAS,OAAO;EACd,cAAc;CAChB;CACA,IAAI,CAAC,IACH,MAAM,IAAI,MAAM,mCAAmC,WAAW,6BAA6B,EAAE,OAAO,YAAY,CAAC;CAGnH,MAAM,MAAM,MAAM,GAAG,UAAU;CAC/B,IAAI,CAAC,SACH,OAAQ,MAAM,IAAI,MAAM;EACtB;EACgB;CAClB,CAAC;CAGH,MAAM,SAAS,IAAI,OAAO;EACxB;EACgB;CAClB,CAAC;CACD,WAAW,MAAM,SAAS,OAAO,YAC/B,IAAI;EACF,QAAQ,KAAK;CACf,QAAQ,CAER;CAEF,OAAQ,MAAM,OAAO;AACvB"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@mastra/code-sdk",
3
- "version": "1.2.0-alpha.17",
3
+ "version": "1.2.0-alpha.18",
4
4
  "description": "Mastra Code SDK: the agent core behind Mastra Code (everything except the TUI) — build your own UIs and surfaces on top of it",
5
5
  "type": "module",
6
6
  "publishConfig": {
@@ -57,18 +57,18 @@
57
57
  "yaml": "^2.7.1",
58
58
  "zod": "^4.3.6",
59
59
  "@mastra/agent-browser": "0.5.1-alpha.0",
60
- "@mastra/core": "1.58.0-alpha.15",
60
+ "@mastra/core": "1.58.0-alpha.16",
61
61
  "@mastra/duckdb": "1.6.1-alpha.0",
62
- "@mastra/github-signals": "0.2.5-alpha.1",
63
62
  "@mastra/fastembed": "1.2.0",
64
- "@mastra/libsql": "1.20.0-alpha.3",
65
- "@mastra/observability": "1.16.6-alpha.4",
63
+ "@mastra/github-signals": "0.2.5-alpha.1",
64
+ "@mastra/memory": "1.26.1-alpha.7",
66
65
  "@mastra/mcp": "1.16.0-alpha.2",
66
+ "@mastra/observability": "1.16.6-alpha.4",
67
+ "@mastra/pg": "1.20.0-alpha.4",
67
68
  "@mastra/schema-compat": "1.3.6-alpha.3",
68
69
  "@mastra/stagehand": "0.3.2-alpha.1",
69
- "@mastra/pg": "1.20.0-alpha.4",
70
70
  "@mastra/tavily": "1.1.1",
71
- "@mastra/memory": "1.26.1-alpha.7"
71
+ "@mastra/libsql": "1.20.0-alpha.3"
72
72
  },
73
73
  "devDependencies": {
74
74
  "@libsql/client": "^0.17.4",
@@ -79,8 +79,8 @@
79
79
  "typescript": "^6.0.3",
80
80
  "typescript-eslint": "^8.57.0",
81
81
  "vitest": "4.1.10",
82
- "@internal/lint": "0.0.121",
83
82
  "@internal/types-builder": "0.0.96",
83
+ "@internal/lint": "0.0.121",
84
84
  "@internal/workspace-test-utils": "0.0.65"
85
85
  },
86
86
  "engines": {