@decocms/runtime 0.28.1 → 1.0.0-alpha.2

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 (85) hide show
  1. package/package.json +15 -76
  2. package/scripts/generate-json-schema.ts +24 -0
  3. package/src/asset-server/dev-server-proxy.ts +16 -0
  4. package/src/asset-server/index.ts +44 -0
  5. package/src/bindings/README.md +1 -1
  6. package/src/bindings/binder.ts +1 -1
  7. package/src/bindings/channels.ts +1 -1
  8. package/src/bindings/deconfig/resources.ts +47 -17
  9. package/src/bindings/deconfig/types.ts +1 -1
  10. package/src/bindings/language-model/ai-sdk.ts +7 -4
  11. package/src/bindings/resources/bindings.ts +1 -1
  12. package/src/bindings/resources/schemas.ts +1 -1
  13. package/src/bindings/views.ts +1 -1
  14. package/src/bindings.ts +8 -7
  15. package/src/index.ts +5 -20
  16. package/src/mastra.ts +1 -229
  17. package/src/mcp.ts +7 -6
  18. package/src/proxy.ts +0 -8
  19. package/src/resources.ts +1 -1
  20. package/src/state.ts +1 -1
  21. package/src/views.ts +1 -1
  22. package/tsconfig.json +8 -0
  23. package/dist/admin.d.ts +0 -5
  24. package/dist/admin.js +0 -21
  25. package/dist/admin.js.map +0 -1
  26. package/dist/bindings/deconfig/index.d.ts +0 -12
  27. package/dist/bindings/deconfig/index.js +0 -10
  28. package/dist/bindings/deconfig/index.js.map +0 -1
  29. package/dist/bindings/index.d.ts +0 -2315
  30. package/dist/bindings/index.js +0 -156
  31. package/dist/bindings/index.js.map +0 -1
  32. package/dist/chunk-3AWMDSOH.js +0 -96
  33. package/dist/chunk-3AWMDSOH.js.map +0 -1
  34. package/dist/chunk-4XSQKJLU.js +0 -105
  35. package/dist/chunk-4XSQKJLU.js.map +0 -1
  36. package/dist/chunk-5EYZ2LVM.js +0 -158
  37. package/dist/chunk-5EYZ2LVM.js.map +0 -1
  38. package/dist/chunk-7ITSLORK.js +0 -128
  39. package/dist/chunk-7ITSLORK.js.map +0 -1
  40. package/dist/chunk-I7BWSAN6.js +0 -49
  41. package/dist/chunk-I7BWSAN6.js.map +0 -1
  42. package/dist/chunk-L4OT2YDO.js +0 -27
  43. package/dist/chunk-L4OT2YDO.js.map +0 -1
  44. package/dist/chunk-SHQSNOFL.js +0 -769
  45. package/dist/chunk-SHQSNOFL.js.map +0 -1
  46. package/dist/chunk-UHR3BLMF.js +0 -92
  47. package/dist/chunk-UHR3BLMF.js.map +0 -1
  48. package/dist/chunk-UIJGM3NV.js +0 -518
  49. package/dist/chunk-UIJGM3NV.js.map +0 -1
  50. package/dist/chunk-ZPUT6RN6.js +0 -32
  51. package/dist/chunk-ZPUT6RN6.js.map +0 -1
  52. package/dist/client.d.ts +0 -28
  53. package/dist/client.js +0 -5
  54. package/dist/client.js.map +0 -1
  55. package/dist/d1-store.d.ts +0 -9
  56. package/dist/d1-store.js +0 -4
  57. package/dist/d1-store.js.map +0 -1
  58. package/dist/drizzle.d.ts +0 -49
  59. package/dist/drizzle.js +0 -121
  60. package/dist/drizzle.js.map +0 -1
  61. package/dist/index-LOfgE9a_.d.ts +0 -471
  62. package/dist/index-xKtm7A7B.d.ts +0 -530
  63. package/dist/index.d.ts +0 -10
  64. package/dist/index.js +0 -637
  65. package/dist/index.js.map +0 -1
  66. package/dist/mastra.d.ts +0 -10
  67. package/dist/mastra.js +0 -6
  68. package/dist/mastra.js.map +0 -1
  69. package/dist/mcp-87iLaW9V.d.ts +0 -105
  70. package/dist/mcp-client.d.ts +0 -232
  71. package/dist/mcp-client.js +0 -4
  72. package/dist/mcp-client.js.map +0 -1
  73. package/dist/proxy.d.ts +0 -11
  74. package/dist/proxy.js +0 -5
  75. package/dist/proxy.js.map +0 -1
  76. package/dist/resources.d.ts +0 -362
  77. package/dist/resources.js +0 -4
  78. package/dist/resources.js.map +0 -1
  79. package/dist/views.d.ts +0 -72
  80. package/dist/views.js +0 -4
  81. package/dist/views.js.map +0 -1
  82. package/src/cf-imports.ts +0 -1
  83. package/src/d1-store.ts +0 -34
  84. package/src/deprecated.ts +0 -59
  85. package/src/workflow.ts +0 -193
package/src/workflow.ts DELETED
@@ -1,193 +0,0 @@
1
- /* oxlint-disable no-explicit-any */
2
- import { type DefaultEnv, type RequestContext, withBindings } from "./index.ts";
3
- import {
4
- type AppContext,
5
- type CreateMCPServerOptions,
6
- isWorkflow,
7
- MCPServer,
8
- } from "./mastra.ts";
9
-
10
- import { D1Store } from "./d1-store.ts";
11
- import { Mastra, type Workflow as MastraWorkflow } from "@mastra/core";
12
- import { RuntimeContext } from "@mastra/core/di";
13
- import { DurableObject } from "./cf-imports.ts";
14
- import { State } from "./state.ts";
15
-
16
- const createRuntimeContext = (env: DefaultEnv, ctx: DurableObjectState) => {
17
- const runtimeContext = new RuntimeContext<AppContext>();
18
- runtimeContext.set("env", env);
19
- runtimeContext.set("ctx", ctx);
20
- return runtimeContext;
21
- };
22
- export interface StartWorkflowArgs {
23
- workflowId: string;
24
- args: unknown;
25
- runId?: string;
26
- ctx: RequestContext;
27
- }
28
-
29
- export interface CancelWorkflowArgs {
30
- workflowId: string;
31
- runId?: string;
32
- ctx: RequestContext;
33
- }
34
-
35
- export interface ResumeWorkflowArgs {
36
- workflowId: string;
37
- runId?: string;
38
- resumeData: unknown;
39
- stepId: string;
40
- ctx: RequestContext;
41
- }
42
- export interface WorkflowDO extends Rpc.DurableObjectBranded {
43
- start: (args: StartWorkflowArgs) => Promise<{ runId: string }>;
44
- cancel: (args: CancelWorkflowArgs) => Promise<{ cancelled: boolean }>;
45
- resume: (args: ResumeWorkflowArgs) => Promise<{ resumed: boolean }>;
46
- }
47
-
48
- export const Workflow = (
49
- server: MCPServer<any, any>,
50
- workflows?: CreateMCPServerOptions["workflows"],
51
- ) => {
52
- return class Workflow
53
- extends DurableObject<DefaultEnv>
54
- implements WorkflowDO
55
- {
56
- constructor(
57
- // @ts-ignore: This is a workaround to fix the type error
58
- // oxlint-disable-next-line ban-types
59
- public override ctx: DurableObjectState<{}>,
60
- public override env: DefaultEnv,
61
- ) {
62
- super(ctx, env);
63
- }
64
-
65
- bindings(ctx: RequestContext) {
66
- return withBindings<DefaultEnv>({
67
- env: this.env,
68
- server,
69
- tokenOrContext: ctx,
70
- });
71
- }
72
-
73
- runWithContext<T>(
74
- ctx: RequestContext,
75
- f: (ctx: DefaultEnv) => Promise<T>,
76
- ): Promise<T> {
77
- const bindings = this.bindings(ctx);
78
- return State.run(
79
- {
80
- ctx: {
81
- waitUntil: this.ctx.waitUntil.bind(this.ctx),
82
- },
83
- env: this.bindings(ctx),
84
- },
85
- () => f(bindings),
86
- );
87
- }
88
-
89
- async #getWorkflow(
90
- workflowId: string,
91
- bindings: DefaultEnv,
92
- ): Promise<{ workflow: MastraWorkflow }> {
93
- const bindedWorkflows = await Promise.all(
94
- workflows?.map(async (workflow) => {
95
- const workflowResult = workflow(bindings);
96
- if (isWorkflow(workflowResult)) {
97
- return { workflow: workflowResult };
98
- }
99
-
100
- return await workflowResult;
101
- }) ?? [],
102
- );
103
- const workflowsMap = Object.fromEntries(
104
- bindedWorkflows.map((w) => [w.workflow.id, w.workflow]),
105
- );
106
- const d1Storage = new D1Store({
107
- client: bindings.DECO_WORKSPACE_DB,
108
- });
109
- const mastra = new Mastra({
110
- storage: d1Storage,
111
- workflows: {
112
- [workflowId]: workflowsMap[workflowId],
113
- },
114
- telemetry: {
115
- enabled: true,
116
- serviceName: `app-${
117
- this.env.DECO_CHAT_SCRIPT_SLUG ?? this.env.DECO_APP_SLUG
118
- }`,
119
- },
120
- });
121
- // since mastra workflows are thenables, so we need to wrap then into an object
122
- return { workflow: mastra.getWorkflow(workflowId) };
123
- }
124
-
125
- start({ workflowId, runId, args, ctx }: StartWorkflowArgs) {
126
- return this.runWithContext(ctx, async (bindings) => {
127
- const { workflow } = await this.#getWorkflow(workflowId, bindings);
128
-
129
- const run = await workflow.createRunAsync({
130
- runId: this.ctx.id.name ?? runId,
131
- });
132
-
133
- const promise = run.start({
134
- inputData: args,
135
- runtimeContext: createRuntimeContext(bindings, this.ctx),
136
- });
137
-
138
- this.ctx.waitUntil(
139
- promise
140
- .then(() => {
141
- console.debug("workflow", run.runId, "finished successfully");
142
- })
143
- .catch((e) => {
144
- console.error("workflow", run.runId, "finished with error", e);
145
- throw e;
146
- }),
147
- );
148
-
149
- return {
150
- runId: run.runId,
151
- };
152
- });
153
- }
154
-
155
- cancel({ workflowId, runId, ctx }: CancelWorkflowArgs) {
156
- return this.runWithContext(ctx, async () => {
157
- const { workflow } = await this.#getWorkflow(
158
- workflowId,
159
- this.bindings(ctx),
160
- );
161
- const run = await workflow.createRunAsync({
162
- runId: this.ctx.id.name ?? runId,
163
- });
164
-
165
- this.ctx.waitUntil(run.cancel());
166
-
167
- return {
168
- cancelled: true,
169
- };
170
- });
171
- }
172
- resume({ workflowId, runId, resumeData, stepId, ctx }: ResumeWorkflowArgs) {
173
- return this.runWithContext(ctx, async (bindings) => {
174
- const { workflow } = await this.#getWorkflow(workflowId, bindings);
175
- const run = await workflow.createRunAsync({
176
- runId: this.ctx.id.name ?? runId,
177
- });
178
-
179
- this.ctx.waitUntil(
180
- run.resume({
181
- resumeData,
182
- step: stepId,
183
- runtimeContext: createRuntimeContext(bindings, this.ctx),
184
- }),
185
- );
186
-
187
- return {
188
- resumed: true,
189
- };
190
- });
191
- }
192
- };
193
- };