@fabric-harness/temporal 0.1.0
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/LICENSE +202 -0
- package/README.md +45 -0
- package/dist/activities.d.ts +92 -0
- package/dist/activities.d.ts.map +1 -0
- package/dist/activities.js +41 -0
- package/dist/activities.js.map +1 -0
- package/dist/client.d.ts +26 -0
- package/dist/client.d.ts.map +1 -0
- package/dist/client.js +153 -0
- package/dist/client.js.map +1 -0
- package/dist/connection.d.ts +14 -0
- package/dist/connection.d.ts.map +1 -0
- package/dist/connection.js +73 -0
- package/dist/connection.js.map +1 -0
- package/dist/index.d.ts +10 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +10 -0
- package/dist/index.js.map +1 -0
- package/dist/inline-runtime.d.ts +13 -0
- package/dist/inline-runtime.d.ts.map +1 -0
- package/dist/inline-runtime.js +25 -0
- package/dist/inline-runtime.js.map +1 -0
- package/dist/local-activities.d.ts +14 -0
- package/dist/local-activities.d.ts.map +1 -0
- package/dist/local-activities.js +387 -0
- package/dist/local-activities.js.map +1 -0
- package/dist/mock-runtime.d.ts +33 -0
- package/dist/mock-runtime.d.ts.map +1 -0
- package/dist/mock-runtime.js +120 -0
- package/dist/mock-runtime.js.map +1 -0
- package/dist/types.d.ts +183 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/types.js +12 -0
- package/dist/types.js.map +1 -0
- package/dist/worker.d.ts +11 -0
- package/dist/worker.d.ts.map +1 -0
- package/dist/worker.js +39 -0
- package/dist/worker.js.map +1 -0
- package/dist/workflow.d.ts +57 -0
- package/dist/workflow.d.ts.map +1 -0
- package/dist/workflow.js +276 -0
- package/dist/workflow.js.map +1 -0
- package/package.json +59 -0
package/dist/workflow.js
ADDED
|
@@ -0,0 +1,276 @@
|
|
|
1
|
+
import { condition, defineQuery, defineSignal, proxyActivities, setHandler, workflowInfo } from '@temporalio/workflow';
|
|
2
|
+
export const APPROVAL_SIGNAL = 'approval';
|
|
3
|
+
export const SESSION_STATE_QUERY = 'sessionState';
|
|
4
|
+
export const PROMPT_WORKFLOW_NAME = 'promptWorkflow';
|
|
5
|
+
export const HYBRID_PROMPT_WORKFLOW_NAME = 'hybridPromptWorkflow';
|
|
6
|
+
export const CHECKPOINT_CREATE_WORKFLOW_NAME = 'checkpointCreateWorkflow';
|
|
7
|
+
export const CHECKPOINT_RESTORE_WORKFLOW_NAME = 'checkpointRestoreWorkflow';
|
|
8
|
+
export const SHELL_WORKFLOW_NAME = 'shellWorkflow';
|
|
9
|
+
export const TASK_WORKFLOW_NAME = 'taskWorkflow';
|
|
10
|
+
export const approvalSignal = defineSignal(APPROVAL_SIGNAL);
|
|
11
|
+
export const sessionStateQuery = defineQuery(SESSION_STATE_QUERY);
|
|
12
|
+
const runtimeActivities = proxyActivities({
|
|
13
|
+
scheduleToCloseTimeout: '10 minutes',
|
|
14
|
+
startToCloseTimeout: '5 minutes',
|
|
15
|
+
heartbeatTimeout: '30 seconds',
|
|
16
|
+
});
|
|
17
|
+
const hybridActivities = proxyActivities({
|
|
18
|
+
scheduleToCloseTimeout: '10 minutes',
|
|
19
|
+
startToCloseTimeout: '5 minutes',
|
|
20
|
+
heartbeatTimeout: '30 seconds',
|
|
21
|
+
});
|
|
22
|
+
/**
|
|
23
|
+
* Long-lived session coordination workflow.
|
|
24
|
+
*
|
|
25
|
+
* This first production Temporal integration supports approval signaling and
|
|
26
|
+
* state queries. Prompt/shell/checkpoint operations are workflows below.
|
|
27
|
+
*/
|
|
28
|
+
export async function sessionWorkflow(input) {
|
|
29
|
+
const pendingApprovals = new Map();
|
|
30
|
+
let status = 'running';
|
|
31
|
+
setHandler(approvalSignal, (signal) => {
|
|
32
|
+
const existing = pendingApprovals.get(signal.approvalId);
|
|
33
|
+
if (existing)
|
|
34
|
+
pendingApprovals.set(signal.approvalId, { ...existing, response: signal });
|
|
35
|
+
status = 'running';
|
|
36
|
+
});
|
|
37
|
+
setHandler(sessionStateQuery, () => ({
|
|
38
|
+
sessionId: input.sessionId,
|
|
39
|
+
status,
|
|
40
|
+
pendingApprovals: [...pendingApprovals.values()].filter((approval) => !approval.response),
|
|
41
|
+
}));
|
|
42
|
+
await condition(() => status === 'cancelled');
|
|
43
|
+
}
|
|
44
|
+
/**
|
|
45
|
+
* Coarse one-shot prompt workflow. Useful as a compatibility path while the
|
|
46
|
+
* hybrid loop is still gaining lower-level activity implementations.
|
|
47
|
+
*/
|
|
48
|
+
export async function promptWorkflow(input) {
|
|
49
|
+
return runtimeActivities.runPrompt(input);
|
|
50
|
+
}
|
|
51
|
+
/**
|
|
52
|
+
* Hybrid durable prompt workflow.
|
|
53
|
+
*
|
|
54
|
+
* The workflow owns deterministic turn orchestration while activities perform
|
|
55
|
+
* nondeterministic effects: context construction, model calls, tool execution,
|
|
56
|
+
* approval policy checks, and durable entry/event appends.
|
|
57
|
+
*/
|
|
58
|
+
export async function hybridPromptWorkflow(input) {
|
|
59
|
+
const pendingApprovals = new Map();
|
|
60
|
+
let status = 'running';
|
|
61
|
+
setHandler(approvalSignal, (signal) => {
|
|
62
|
+
const existing = pendingApprovals.get(signal.approvalId);
|
|
63
|
+
if (existing)
|
|
64
|
+
pendingApprovals.set(signal.approvalId, { ...existing, response: signal });
|
|
65
|
+
status = 'running';
|
|
66
|
+
});
|
|
67
|
+
setHandler(sessionStateQuery, () => ({
|
|
68
|
+
sessionId: input.sessionId,
|
|
69
|
+
status,
|
|
70
|
+
pendingApprovals: [...pendingApprovals.values()].filter((approval) => !approval.response),
|
|
71
|
+
}));
|
|
72
|
+
const base = input.idempotency?.idempotencyKey ?? `prompt:${input.sessionId}:${input.promptId}`;
|
|
73
|
+
await appendEntry(input, 'user_prompt', { text: input.text }, `${base}:entry:user`);
|
|
74
|
+
await appendEvent(input, 'prompt_start', { text: input.text }, `${base}:event:start`);
|
|
75
|
+
const context = await hybridActivities.buildContext({
|
|
76
|
+
sessionId: input.sessionId,
|
|
77
|
+
idempotency: idempotency(`${base}:context`),
|
|
78
|
+
});
|
|
79
|
+
const messages = [...context.messages];
|
|
80
|
+
const maxIterations = input.options?.maxIterations ?? 8;
|
|
81
|
+
let latestUsage;
|
|
82
|
+
for (let iteration = 0; iteration < maxIterations; iteration += 1) {
|
|
83
|
+
const turnKey = `${base}:turn:${iteration}`;
|
|
84
|
+
await appendEvent(input, 'turn_start', { iteration }, `${turnKey}:event:start`);
|
|
85
|
+
const response = await hybridActivities.modelGenerate({
|
|
86
|
+
sessionId: input.sessionId,
|
|
87
|
+
promptId: input.promptId,
|
|
88
|
+
messages,
|
|
89
|
+
...(typeof input.options?.model === 'string' ? { model: input.options.model } : {}),
|
|
90
|
+
idempotency: idempotency(`${turnKey}:model`),
|
|
91
|
+
});
|
|
92
|
+
if (response.usage)
|
|
93
|
+
latestUsage = response.usage;
|
|
94
|
+
if (response.toolCalls?.length) {
|
|
95
|
+
await appendModelToolCalls(input, response.toolCalls, messages, turnKey, pendingApprovals, (next) => { status = next; });
|
|
96
|
+
await appendEvent(input, 'turn_end', { iteration, toolCalls: response.toolCalls.length }, `${turnKey}:event:end`);
|
|
97
|
+
continue;
|
|
98
|
+
}
|
|
99
|
+
const finalText = response.message?.content ?? '';
|
|
100
|
+
messages.push({ role: 'assistant', content: finalText });
|
|
101
|
+
await appendEntry(input, 'assistant_message', { text: finalText }, `${turnKey}:entry:assistant`);
|
|
102
|
+
if (finalText)
|
|
103
|
+
await appendEvent(input, 'text_delta', { delta: finalText }, `${turnKey}:event:text`);
|
|
104
|
+
await appendEntry(input, 'result', { result: finalText }, `${turnKey}:entry:result`);
|
|
105
|
+
await appendEvent(input, 'prompt_end', { text: input.text, result: finalText }, `${turnKey}:event:prompt-end`);
|
|
106
|
+
await appendEvent(input, 'turn_end', { iteration, final: true }, `${turnKey}:event:end`);
|
|
107
|
+
return {
|
|
108
|
+
sessionId: input.sessionId,
|
|
109
|
+
promptId: input.promptId,
|
|
110
|
+
status: 'completed',
|
|
111
|
+
result: finalText,
|
|
112
|
+
...(latestUsage ? { usage: latestUsage } : {}),
|
|
113
|
+
};
|
|
114
|
+
}
|
|
115
|
+
const error = `Prompt exceeded maxIterations (${maxIterations}) without a final response.`;
|
|
116
|
+
await appendEntry(input, 'error', { error }, `${base}:entry:max-iterations`);
|
|
117
|
+
await appendEvent(input, 'error', { error }, `${base}:event:max-iterations`);
|
|
118
|
+
return { sessionId: input.sessionId, promptId: input.promptId, status: 'failed', error };
|
|
119
|
+
}
|
|
120
|
+
export async function taskWorkflow(input) {
|
|
121
|
+
const base = input.idempotency?.idempotencyKey ?? `task:${input.sessionId}:${input.taskId}`;
|
|
122
|
+
await appendEntry(input, 'task_start', { taskId: input.taskId, text: input.text, status: 'running', startedAt: new Date(0).toISOString() }, `${base}:entry:task-start`);
|
|
123
|
+
await appendEvent(input, 'task_start', { taskId: input.taskId, text: input.text, status: 'running' }, `${base}:event:task-start`);
|
|
124
|
+
const result = await hybridPromptWorkflow(input);
|
|
125
|
+
if (result.status === 'completed') {
|
|
126
|
+
await appendEntry(input, 'task_end', { taskId: input.taskId, status: 'completed', completedAt: new Date(0).toISOString() }, `${base}:entry:task-end`);
|
|
127
|
+
await appendEvent(input, 'task_end', { taskId: input.taskId, status: 'completed' }, `${base}:event:task-end`);
|
|
128
|
+
return result;
|
|
129
|
+
}
|
|
130
|
+
await appendEntry(input, 'task_failed', { taskId: input.taskId, status: 'failed', failedAt: new Date(0).toISOString(), ...(result.error ? { error: result.error } : {}) }, `${base}:entry:task-failed`);
|
|
131
|
+
await appendEvent(input, 'task_failed', { taskId: input.taskId, status: 'failed', ...(result.error ? { error: result.error } : {}) }, `${base}:event:task-failed`);
|
|
132
|
+
return result;
|
|
133
|
+
}
|
|
134
|
+
export async function checkpointCreateWorkflow(input) {
|
|
135
|
+
return runtimeActivities.runCheckpointCreate(input);
|
|
136
|
+
}
|
|
137
|
+
export async function checkpointRestoreWorkflow(input) {
|
|
138
|
+
return runtimeActivities.runCheckpointRestore(input);
|
|
139
|
+
}
|
|
140
|
+
export async function shellWorkflow(input) {
|
|
141
|
+
return runtimeActivities.runShell(input);
|
|
142
|
+
}
|
|
143
|
+
async function appendModelToolCalls(input, calls, messages, turnKey, pendingApprovals, setStatus) {
|
|
144
|
+
messages.push({
|
|
145
|
+
role: 'assistant',
|
|
146
|
+
content: '',
|
|
147
|
+
toolCalls: calls.map((call, index) => ({ id: call.id ?? `${turnKey}:tool:${index}`, name: call.tool, input: call.input })),
|
|
148
|
+
});
|
|
149
|
+
for (let index = 0; index < calls.length; index += 1) {
|
|
150
|
+
const call = calls[index];
|
|
151
|
+
if (!call)
|
|
152
|
+
continue;
|
|
153
|
+
const callKey = `${turnKey}:tool:${index}:${call.id ?? call.tool}`;
|
|
154
|
+
await appendEntry(input, 'tool_call', { tool: call.tool, input: asJsonObject(call.input), ...(call.id ? { toolCallId: call.id } : {}) }, `${callKey}:entry:call`);
|
|
155
|
+
await appendEvent(input, 'tool_start', { tool: call.tool, ...(call.id ? { toolCallId: call.id } : {}) }, `${callKey}:event:start`);
|
|
156
|
+
let executed = await hybridActivities.executeTool({
|
|
157
|
+
sessionId: input.sessionId,
|
|
158
|
+
promptId: input.promptId,
|
|
159
|
+
call,
|
|
160
|
+
idempotency: idempotency(`${callKey}:execute`),
|
|
161
|
+
});
|
|
162
|
+
if (executed.approvalRequest) {
|
|
163
|
+
executed = await waitForToolApprovalAndExecute(input, call, executed, callKey, pendingApprovals, setStatus);
|
|
164
|
+
}
|
|
165
|
+
const result = executed.result;
|
|
166
|
+
appendToolResultMessage(messages, result, call.id);
|
|
167
|
+
if (result.error) {
|
|
168
|
+
await appendEntry(input, 'error', { tool: call.tool, error: result.error, ...(call.id ? { toolCallId: call.id } : {}) }, `${callKey}:entry:error`);
|
|
169
|
+
await appendEvent(input, 'tool_end', { tool: call.tool, error: result.error, ...(call.id ? { toolCallId: call.id } : {}) }, `${callKey}:event:end`);
|
|
170
|
+
continue;
|
|
171
|
+
}
|
|
172
|
+
await appendEntry(input, 'tool_result', { tool: call.tool, output: asJsonObjectOrString(result.output), ...(call.id ? { toolCallId: call.id } : {}) }, `${callKey}:entry:result`);
|
|
173
|
+
await appendEvent(input, 'tool_end', { tool: call.tool, ...(call.id ? { toolCallId: call.id } : {}) }, `${callKey}:event:end`);
|
|
174
|
+
}
|
|
175
|
+
}
|
|
176
|
+
async function waitForToolApprovalAndExecute(input, call, executed, callKey, pendingApprovals, setStatus) {
|
|
177
|
+
const request = executed.approvalRequest;
|
|
178
|
+
if (!request)
|
|
179
|
+
return executed;
|
|
180
|
+
const approvalState = {
|
|
181
|
+
approvalId: request.approvalId,
|
|
182
|
+
sessionId: input.sessionId,
|
|
183
|
+
subject: request.subject,
|
|
184
|
+
requestedAt: new Date(0).toISOString(),
|
|
185
|
+
};
|
|
186
|
+
pendingApprovals.set(request.approvalId, approvalState);
|
|
187
|
+
setStatus('waiting_for_approval');
|
|
188
|
+
await appendEntry(input, 'approval_requested', approvalRequestToEntryData(input, request), `${callKey}:entry:approval-requested`);
|
|
189
|
+
await appendEvent(input, 'approval_requested', approvalRequestToEntryData(input, request), `${callKey}:event:approval-requested`);
|
|
190
|
+
const timeoutMs = input.options?.approvalTimeoutMs ?? request.timeoutMs;
|
|
191
|
+
const approvedInTime = timeoutMs === undefined
|
|
192
|
+
? await condition(() => pendingApprovals.get(request.approvalId)?.response !== undefined).then(() => true)
|
|
193
|
+
: await condition(() => pendingApprovals.get(request.approvalId)?.response !== undefined, `${timeoutMs} milliseconds`);
|
|
194
|
+
const response = pendingApprovals.get(request.approvalId)?.response;
|
|
195
|
+
pendingApprovals.delete(request.approvalId);
|
|
196
|
+
setStatus('running');
|
|
197
|
+
if (!approvedInTime || !response) {
|
|
198
|
+
const reason = timeoutMs === undefined ? 'No approval signal received.' : `Approval timed out after ${timeoutMs}ms`;
|
|
199
|
+
await appendEntry(input, 'approval_expired', { approvalId: request.approvalId, reason }, `${callKey}:entry:approval-expired`);
|
|
200
|
+
await appendEvent(input, 'approval_expired', { approvalId: request.approvalId, reason }, `${callKey}:event:approval-expired`);
|
|
201
|
+
return { result: { tool: call.tool, input: call.input, error: reason, ...(call.id ? { id: call.id } : {}) } };
|
|
202
|
+
}
|
|
203
|
+
if (response.decision === 'denied') {
|
|
204
|
+
const reason = response.reason ?? 'Denied by operator.';
|
|
205
|
+
await appendEntry(input, 'approval_denied', { approvalId: request.approvalId, reason }, `${callKey}:entry:approval-denied`);
|
|
206
|
+
await appendEvent(input, 'approval_denied', { approvalId: request.approvalId, reason }, `${callKey}:event:approval-denied`);
|
|
207
|
+
return { result: { tool: call.tool, input: call.input, error: reason, ...(call.id ? { id: call.id } : {}) } };
|
|
208
|
+
}
|
|
209
|
+
await appendEntry(input, 'approval_granted', { approvalId: request.approvalId, reason: response.reason ?? 'Approved by operator.' }, `${callKey}:entry:approval-granted`);
|
|
210
|
+
await appendEvent(input, 'approval_granted', { approvalId: request.approvalId, reason: response.reason ?? 'Approved by operator.' }, `${callKey}:event:approval-granted`);
|
|
211
|
+
return hybridActivities.executeTool({
|
|
212
|
+
sessionId: input.sessionId,
|
|
213
|
+
promptId: input.promptId,
|
|
214
|
+
call,
|
|
215
|
+
approval: response,
|
|
216
|
+
idempotency: idempotency(`${callKey}:execute:approved:${request.approvalId}`),
|
|
217
|
+
});
|
|
218
|
+
}
|
|
219
|
+
function approvalRequestToEntryData(input, request) {
|
|
220
|
+
return {
|
|
221
|
+
id: request.approvalId,
|
|
222
|
+
sessionId: input.sessionId,
|
|
223
|
+
promptId: input.promptId,
|
|
224
|
+
workflowId: workflowInfo().workflowId,
|
|
225
|
+
reason: request.reason,
|
|
226
|
+
subject: request.subject,
|
|
227
|
+
kind: request.kind,
|
|
228
|
+
createdAt: new Date(0).toISOString(),
|
|
229
|
+
...(request.risk ? { risk: request.risk } : {}),
|
|
230
|
+
...(request.matchedPattern ? { matchedPattern: request.matchedPattern } : {}),
|
|
231
|
+
...(request.envKeys?.length ? { envKeys: request.envKeys } : {}),
|
|
232
|
+
...(request.affectedPaths?.length ? { affectedPaths: request.affectedPaths } : {}),
|
|
233
|
+
...(request.tool ? { tool: request.tool } : {}),
|
|
234
|
+
...(request.command ? { command: request.command } : {}),
|
|
235
|
+
...(request.input !== undefined ? { input: request.input } : {}),
|
|
236
|
+
};
|
|
237
|
+
}
|
|
238
|
+
function appendToolResultMessage(messages, result, toolCallId) {
|
|
239
|
+
const message = {
|
|
240
|
+
role: 'tool',
|
|
241
|
+
name: result.tool,
|
|
242
|
+
content: result.error ?? JSON.stringify(result.output ?? null),
|
|
243
|
+
};
|
|
244
|
+
if (toolCallId !== undefined)
|
|
245
|
+
message.toolCallId = toolCallId;
|
|
246
|
+
messages.push(message);
|
|
247
|
+
}
|
|
248
|
+
async function appendEntry(input, type, data, key) {
|
|
249
|
+
return hybridActivities.appendSessionEntry({ sessionId: input.sessionId, type, data, idempotency: idempotency(key) });
|
|
250
|
+
}
|
|
251
|
+
async function appendEvent(input, type, data, key) {
|
|
252
|
+
await hybridActivities.appendSessionEvent({ sessionId: input.sessionId, type, data, idempotency: idempotency(key) });
|
|
253
|
+
}
|
|
254
|
+
function idempotency(idempotencyKey) {
|
|
255
|
+
return { idempotencyKey };
|
|
256
|
+
}
|
|
257
|
+
function asJsonObject(value) {
|
|
258
|
+
if (typeof value === 'object' && value !== null && !Array.isArray(value))
|
|
259
|
+
return value;
|
|
260
|
+
return { value: asJsonValue(value) };
|
|
261
|
+
}
|
|
262
|
+
function asJsonObjectOrString(value) {
|
|
263
|
+
if (typeof value === 'object' && value !== null && !Array.isArray(value))
|
|
264
|
+
return value;
|
|
265
|
+
return { value: asJsonValue(value) };
|
|
266
|
+
}
|
|
267
|
+
function asJsonValue(value) {
|
|
268
|
+
if (value === null || typeof value === 'string' || typeof value === 'number' || typeof value === 'boolean')
|
|
269
|
+
return value;
|
|
270
|
+
if (Array.isArray(value))
|
|
271
|
+
return value.map(asJsonValue);
|
|
272
|
+
if (typeof value === 'object')
|
|
273
|
+
return value;
|
|
274
|
+
return String(value);
|
|
275
|
+
}
|
|
276
|
+
//# sourceMappingURL=workflow.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"workflow.js","sourceRoot":"","sources":["../src/workflow.ts"],"names":[],"mappings":"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"}
|
package/package.json
ADDED
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@fabric-harness/temporal",
|
|
3
|
+
"version": "0.1.0",
|
|
4
|
+
"description": "Temporal.io durable workflow runtime adapter for Fabric Harness.",
|
|
5
|
+
"license": "Apache-2.0",
|
|
6
|
+
"author": "Fabric",
|
|
7
|
+
"homepage": "https://github.com/Fabric-Pro/fabric-harness#readme",
|
|
8
|
+
"repository": {
|
|
9
|
+
"type": "git",
|
|
10
|
+
"url": "https://github.com/Fabric-Pro/fabric-harness.git",
|
|
11
|
+
"directory": "packages/temporal"
|
|
12
|
+
},
|
|
13
|
+
"bugs": {
|
|
14
|
+
"url": "https://github.com/Fabric-Pro/fabric-harness/issues"
|
|
15
|
+
},
|
|
16
|
+
"keywords": [
|
|
17
|
+
"agents",
|
|
18
|
+
"ai",
|
|
19
|
+
"fabric-harness",
|
|
20
|
+
"temporal",
|
|
21
|
+
"durable-execution",
|
|
22
|
+
"workflows"
|
|
23
|
+
],
|
|
24
|
+
"type": "module",
|
|
25
|
+
"sideEffects": false,
|
|
26
|
+
"engines": {
|
|
27
|
+
"node": ">=22.0.0"
|
|
28
|
+
},
|
|
29
|
+
"publishConfig": {
|
|
30
|
+
"registry": "https://registry.npmjs.org",
|
|
31
|
+
"access": "public"
|
|
32
|
+
},
|
|
33
|
+
"exports": {
|
|
34
|
+
".": {
|
|
35
|
+
"types": "./dist/index.d.ts",
|
|
36
|
+
"import": "./dist/index.js"
|
|
37
|
+
}
|
|
38
|
+
},
|
|
39
|
+
"files": [
|
|
40
|
+
"dist",
|
|
41
|
+
"README.md",
|
|
42
|
+
"LICENSE"
|
|
43
|
+
],
|
|
44
|
+
"dependencies": {
|
|
45
|
+
"@temporalio/client": "^1.17.0",
|
|
46
|
+
"@temporalio/worker": "^1.17.0",
|
|
47
|
+
"@temporalio/workflow": "^1.17.0",
|
|
48
|
+
"@fabric-harness/sdk": "0.1.0"
|
|
49
|
+
},
|
|
50
|
+
"devDependencies": {
|
|
51
|
+
"vitest": "^4.1.5"
|
|
52
|
+
},
|
|
53
|
+
"scripts": {
|
|
54
|
+
"build": "tsc -p tsconfig.json",
|
|
55
|
+
"check": "tsc -b tsconfig.json",
|
|
56
|
+
"test": "vitest run",
|
|
57
|
+
"test:watch": "vitest"
|
|
58
|
+
}
|
|
59
|
+
}
|