@xfey/tutti 0.1.10 → 0.1.12
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/control-plane/context-sync.js +1 -0
- package/dist/control-plane/event-publishers.js +21 -12
- package/dist/control-plane/execution-status.js +4 -0
- package/dist/control-plane/project-context-bootstrap.d.ts +2 -0
- package/dist/control-plane/project-context-bootstrap.js +1 -0
- package/dist/control-plane/reference-summary-refresh.js +4 -0
- package/dist/control-plane/run-start.js +1 -0
- package/dist/control-plane/task-compile-continuation.js +1 -0
- package/dist/control-plane/task-compile-start.d.ts +2 -1
- package/dist/control-plane/task-compile-start.js +5 -0
- package/dist/control-plane/types.d.ts +2 -1
- package/dist/control-plane/workflows/openai.js +19 -0
- package/dist/control-plane/workflows/types.d.ts +6 -1
- package/dist/procedure-engine/index.d.ts +10 -1
- package/dist/procedure-engine/index.js +34 -4
- package/dist/providers/openai/app-server/json-rpc.d.ts +6 -1
- package/dist/providers/openai/app-server/json-rpc.js +15 -1
- package/dist/providers/openai/app-server/read-only-procedure.d.ts +2 -0
- package/dist/providers/openai/app-server/read-only-procedure.js +13 -1
- package/dist/providers/openai/app-server/runtime-telemetry.d.ts +18 -0
- package/dist/providers/openai/app-server/runtime-telemetry.js +130 -0
- package/dist/providers/openai/app-server/workspace-write-run.d.ts +2 -0
- package/dist/providers/openai/app-server/workspace-write-run.js +13 -1
- package/dist/run-engine/index.d.ts +2 -1
- package/dist/run-engine/index.js +14 -1
- package/dist/run-pipeline/task-run-invocation.js +9 -0
- package/dist/server-shell/cli/args.d.ts +9 -9
- package/dist/server-shell/cli/args.js +31 -31
- package/dist/server-shell/cli/cli.js +27 -27
- package/dist/server-shell/cli/errors.d.ts +2 -1
- package/dist/server-shell/cli/errors.js +55 -12
- package/dist/server-shell/cli/host-lifecycle.js +7 -0
- package/dist/server-shell/cli/launch-command.d.ts +2 -2
- package/dist/server-shell/cli/launch-command.js +25 -11
- package/dist/server-shell/cli/launch.js +0 -3
- package/dist/server-shell/cli/managed-host.d.ts +2 -0
- package/dist/server-shell/cli/managed-host.js +9 -18
- package/dist/server-shell/cli/project-resolver.d.ts +6 -0
- package/dist/server-shell/cli/project-resolver.js +125 -3
- package/dist/server-shell/cli/provider-tui.d.ts +19 -0
- package/dist/server-shell/cli/provider-tui.js +64 -38
- package/dist/server-shell/cli/runtime-commands.d.ts +5 -5
- package/dist/server-shell/cli/runtime-commands.js +68 -25
- package/dist/server-shell/cli/terminal-qr.d.ts +5 -0
- package/dist/server-shell/cli/terminal-qr.js +17 -0
- package/dist/server-shell/http/routes/project-api/openapi-execution-routes.d.ts +14 -0
- package/dist/server-shell/http/routes/project-api/openapi-workspace-routes.d.ts +14 -0
- package/dist/server-shell/http/routes/project-api/openapi.d.ts +28 -0
- package/dist/server-shell/http/routes/project-api/schemas.d.ts +14 -0
- package/node_modules/@tutti/shared/dist/schemas/api/runtime-events.d.ts +50 -0
- package/node_modules/@tutti/shared/dist/schemas/api/runtime-events.js +25 -0
- package/node_modules/@tutti/shared/dist/schemas/api/types.d.ts +4 -1
- package/package.json +1 -1
- package/web/assets/index-CDUT1Etl.js +29 -0
- package/web/assets/{index-D8xJY8Gr.css → index-DIQpGeKY.css} +1 -1
- package/web/index.html +2 -2
- package/web/assets/index-BMMQgQjz.js +0 -29
|
@@ -1,17 +1,19 @@
|
|
|
1
1
|
import { existsSync, readdirSync, readFileSync } from "node:fs";
|
|
2
|
-
import { join
|
|
2
|
+
import { join } from "node:path";
|
|
3
3
|
import { emitKeypressEvents } from "node:readline";
|
|
4
4
|
import { ID_PREFIXES, isPrefixedId } from "@tutti/shared/ids";
|
|
5
5
|
import { redactText } from "@tutti/shared/utils";
|
|
6
6
|
import { createRuntimeEndpointProbe } from "./host-runtime-endpoint.js";
|
|
7
7
|
import { getHostLogFilePath, getMachineRuntimeEndpointPath, getProjectLocalStoreRoot, readMachineProjectBinding, readMachineRuntimeEndpoint, } from "./machine-local.js";
|
|
8
8
|
import { readHostLocalLaunchStatus, readHostLocalProject, readHostLocalProviderConfig, requestHostLocalShutdown, rotateHostLocalInvite, } from "./local-control-client.js";
|
|
9
|
+
import { formatCliErrorReason, LaunchError } from "./errors.js";
|
|
9
10
|
import { resolveExistingProjectContext } from "./project-resolver.js";
|
|
10
|
-
import { renderTerminalQr } from "./terminal-qr.js";
|
|
11
|
+
import { formatJoinLinkValidity, renderTerminalQr } from "./terminal-qr.js";
|
|
11
12
|
import { resolveTuttiHome } from "../../providers/openai/index.js";
|
|
12
|
-
|
|
13
|
+
const PROJECT_ID_DISPLAY_MIN_LENGTH = 12;
|
|
14
|
+
function resolveProject(target) {
|
|
13
15
|
return resolveExistingProjectContext({
|
|
14
|
-
...(
|
|
16
|
+
...(target === undefined ? {} : { target }),
|
|
15
17
|
});
|
|
16
18
|
}
|
|
17
19
|
function projectIdsFromTuttiHome(tuttiHome) {
|
|
@@ -32,6 +34,23 @@ function readEndpointFile(tuttiHome, projectId) {
|
|
|
32
34
|
return null;
|
|
33
35
|
}
|
|
34
36
|
}
|
|
37
|
+
function readBindingFile(tuttiHome, projectId) {
|
|
38
|
+
try {
|
|
39
|
+
return readMachineProjectBinding(tuttiHome, projectId);
|
|
40
|
+
}
|
|
41
|
+
catch {
|
|
42
|
+
return null;
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
export function formatProjectIdForDisplay(projectId, projectIds) {
|
|
46
|
+
for (let length = Math.min(PROJECT_ID_DISPLAY_MIN_LENGTH, projectId.length); length <= projectId.length; length += 1) {
|
|
47
|
+
const prefix = projectId.slice(0, length);
|
|
48
|
+
if (projectIds.every((candidate) => candidate === projectId || !candidate.startsWith(prefix))) {
|
|
49
|
+
return prefix;
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
return projectId;
|
|
53
|
+
}
|
|
35
54
|
export async function listRuntimeProjects(options = {}) {
|
|
36
55
|
const cwd = options.cwd ?? process.cwd();
|
|
37
56
|
const tuttiHome = resolveTuttiHome(options.env?.TUTTI_HOME, cwd);
|
|
@@ -42,7 +61,7 @@ export async function listRuntimeProjects(options = {}) {
|
|
|
42
61
|
if (endpoint === null) {
|
|
43
62
|
continue;
|
|
44
63
|
}
|
|
45
|
-
const binding =
|
|
64
|
+
const binding = readBindingFile(tuttiHome, projectId);
|
|
46
65
|
const health = await probe(endpoint);
|
|
47
66
|
if (health.kind === "stale") {
|
|
48
67
|
rows.push({
|
|
@@ -84,9 +103,11 @@ function formatTable(rows) {
|
|
|
84
103
|
if (rows.length === 0) {
|
|
85
104
|
return "No Tutti host processes found.";
|
|
86
105
|
}
|
|
87
|
-
const header = ["STATUS", "PROJECT", "PROVIDER", "WORKSPACE"];
|
|
106
|
+
const header = ["STATUS", "ID", "PROJECT", "PROVIDER", "WORKSPACE"];
|
|
107
|
+
const projectIds = rows.map((row) => row.project_id);
|
|
88
108
|
const data = rows.map((row) => [
|
|
89
109
|
row.status,
|
|
110
|
+
formatProjectIdForDisplay(row.project_id, projectIds),
|
|
90
111
|
row.display_name,
|
|
91
112
|
row.provider_status ?? "-",
|
|
92
113
|
redactText(row.workspace_root),
|
|
@@ -123,10 +144,12 @@ function renderManager(options) {
|
|
|
123
144
|
"",
|
|
124
145
|
];
|
|
125
146
|
if (options.rows.length > 0) {
|
|
126
|
-
const header = ["", "STATUS", "PROJECT", "PROVIDER", "WORKSPACE"];
|
|
147
|
+
const header = ["", "STATUS", "ID", "PROJECT", "PROVIDER", "WORKSPACE"];
|
|
148
|
+
const projectIds = options.rows.map((row) => row.project_id);
|
|
127
149
|
const data = options.rows.map((row, index) => [
|
|
128
150
|
index === options.selectedIndex ? ">" : " ",
|
|
129
151
|
row.status,
|
|
152
|
+
formatProjectIdForDisplay(row.project_id, projectIds),
|
|
130
153
|
row.display_name,
|
|
131
154
|
row.provider_status ?? "-",
|
|
132
155
|
redactText(row.workspace_root),
|
|
@@ -212,7 +235,7 @@ export async function runPsManageCommand(options = {}) {
|
|
|
212
235
|
message = `Invite refreshed for ${project.display_name}.`;
|
|
213
236
|
}
|
|
214
237
|
catch (error) {
|
|
215
|
-
message = error
|
|
238
|
+
message = formatCliErrorReason(error);
|
|
216
239
|
detail = undefined;
|
|
217
240
|
}
|
|
218
241
|
render();
|
|
@@ -232,7 +255,7 @@ export async function runPsManageCommand(options = {}) {
|
|
|
232
255
|
detail = undefined;
|
|
233
256
|
}
|
|
234
257
|
catch (error) {
|
|
235
|
-
message = error
|
|
258
|
+
message = formatCliErrorReason(error);
|
|
236
259
|
detail = undefined;
|
|
237
260
|
}
|
|
238
261
|
render();
|
|
@@ -248,30 +271,53 @@ export async function runPsManageCommand(options = {}) {
|
|
|
248
271
|
stdout.write(SHOW_CURSOR);
|
|
249
272
|
}
|
|
250
273
|
}
|
|
251
|
-
export async function runStopCommand(
|
|
252
|
-
const project = resolveProject(
|
|
274
|
+
export async function runStopCommand(target) {
|
|
275
|
+
const project = resolveProject(target);
|
|
253
276
|
const endpoint = project.runtime_endpoint;
|
|
254
277
|
if (endpoint === null) {
|
|
255
278
|
return "Tutti host is not running for this project.";
|
|
256
279
|
}
|
|
257
|
-
|
|
280
|
+
try {
|
|
281
|
+
await requestHostLocalShutdown({ endpoint });
|
|
282
|
+
}
|
|
283
|
+
catch (error) {
|
|
284
|
+
throw new LaunchError("existing_server_unhealthy", `Could not stop the host: ${formatCliErrorReason(error)}`, "Run `tutti ps` to inspect the runtime state, or stop the host process manually.");
|
|
285
|
+
}
|
|
258
286
|
return `Stopped ${project.display_name}.`;
|
|
259
287
|
}
|
|
260
|
-
export async function runInviteCommand(
|
|
261
|
-
const project = resolveProject(
|
|
288
|
+
export async function runInviteCommand(target) {
|
|
289
|
+
const project = resolveProject(target);
|
|
262
290
|
const endpoint = project.runtime_endpoint;
|
|
263
291
|
if (endpoint === null) {
|
|
264
|
-
throw new
|
|
292
|
+
throw new LaunchError("host_not_running", "Tutti host is not running for this project.", "Run `tutti launch` first, then retry `tutti invite`.");
|
|
293
|
+
}
|
|
294
|
+
let status;
|
|
295
|
+
try {
|
|
296
|
+
status = await rotateHostLocalInvite({ endpoint });
|
|
297
|
+
}
|
|
298
|
+
catch (error) {
|
|
299
|
+
throw new LaunchError("existing_server_unhealthy", `Could not refresh the invite: ${formatCliErrorReason(error)}`, "Run `tutti launch` to restart or reconnect the host, then retry `tutti invite`.");
|
|
265
300
|
}
|
|
266
|
-
const status = await rotateHostLocalInvite({ endpoint });
|
|
267
301
|
const joinUrl = status.relay?.join_url;
|
|
268
302
|
if (joinUrl === undefined) {
|
|
269
|
-
throw new
|
|
303
|
+
throw new LaunchError("relay_registration_failed", "Relay did not return a visible join URL.", "Retry `tutti invite`; if it keeps failing, run `tutti launch` to reconnect the host.");
|
|
270
304
|
}
|
|
271
|
-
return [
|
|
305
|
+
return [
|
|
306
|
+
`Join URL: ${joinUrl}`,
|
|
307
|
+
formatJoinLinkValidity({
|
|
308
|
+
...(status.relay?.join_token_expires_at === undefined
|
|
309
|
+
? {}
|
|
310
|
+
: { expiresAt: status.relay.join_token_expires_at }),
|
|
311
|
+
...(status.relay?.join_token_reusable === undefined
|
|
312
|
+
? {}
|
|
313
|
+
: { reusable: status.relay.join_token_reusable }),
|
|
314
|
+
}),
|
|
315
|
+
"",
|
|
316
|
+
renderTerminalQr(joinUrl),
|
|
317
|
+
].join("\n");
|
|
272
318
|
}
|
|
273
|
-
export function runProviderStatusCommand(
|
|
274
|
-
const project = resolveProject(
|
|
319
|
+
export function runProviderStatusCommand(target) {
|
|
320
|
+
const project = resolveProject(target);
|
|
275
321
|
return [
|
|
276
322
|
`Project: ${project.display_name}`,
|
|
277
323
|
`Provider: ${project.provider_config.status}`,
|
|
@@ -284,8 +330,8 @@ export function runProviderStatusCommand(workspacePath) {
|
|
|
284
330
|
: []),
|
|
285
331
|
].join("\n");
|
|
286
332
|
}
|
|
287
|
-
export function runLogsCommand(
|
|
288
|
-
const project = resolveProject(
|
|
333
|
+
export function runLogsCommand(target, tailLines = 120) {
|
|
334
|
+
const project = resolveProject(target);
|
|
289
335
|
const logPath = getHostLogFilePath(project.tutti_home);
|
|
290
336
|
if (!existsSync(logPath)) {
|
|
291
337
|
return `No host log exists yet at ${redactText(logPath)}.`;
|
|
@@ -302,7 +348,4 @@ export function runtimeEndpointPathForProject(tuttiHome, projectId) {
|
|
|
302
348
|
export function projectLocalStoreRoot(tuttiHome, projectId) {
|
|
303
349
|
return getProjectLocalStoreRoot(tuttiHome, projectId);
|
|
304
350
|
}
|
|
305
|
-
export function resolveWorkspacePath(value) {
|
|
306
|
-
return resolve(process.cwd(), value ?? ".");
|
|
307
|
-
}
|
|
308
351
|
//# sourceMappingURL=runtime-commands.js.map
|
|
@@ -8,4 +8,21 @@ export function renderTerminalQr(input) {
|
|
|
8
8
|
});
|
|
9
9
|
return output.trimEnd();
|
|
10
10
|
}
|
|
11
|
+
export function formatJoinLinkValidity(options) {
|
|
12
|
+
if (options.expiresAt !== undefined) {
|
|
13
|
+
const expiresAt = new Date(options.expiresAt);
|
|
14
|
+
if (!Number.isNaN(expiresAt.getTime())) {
|
|
15
|
+
const now = options.now ?? new Date();
|
|
16
|
+
const remainingMs = expiresAt.getTime() - now.getTime();
|
|
17
|
+
const suffix = remainingMs <= 0
|
|
18
|
+
? "expired"
|
|
19
|
+
: `about ${Math.ceil(remainingMs / 60_000).toString()} min`;
|
|
20
|
+
return `Join link valid until: ${options.expiresAt} (${suffix})`;
|
|
21
|
+
}
|
|
22
|
+
}
|
|
23
|
+
if (options.reusable === true) {
|
|
24
|
+
return "Join link validity: reusable; expiration was not reported.";
|
|
25
|
+
}
|
|
26
|
+
return "Join link validity: expiration was not reported.";
|
|
27
|
+
}
|
|
11
28
|
//# sourceMappingURL=terminal-qr.js.map
|
|
@@ -189,6 +189,20 @@ export declare const HOST_PROJECT_EXECUTION_OPENAPI_ROUTES: ({
|
|
|
189
189
|
lane: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TLiteral<"foreground">, import("@sinclair/typebox").TLiteral<"scratchpad_background">]>>;
|
|
190
190
|
started_at: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
|
|
191
191
|
}>>>;
|
|
192
|
+
runtime: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TObject<{
|
|
193
|
+
activity_ref: import("@sinclair/typebox").TString;
|
|
194
|
+
stage_id: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
|
|
195
|
+
started_at: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
|
|
196
|
+
updated_at: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
|
|
197
|
+
token_usage: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TObject<{
|
|
198
|
+
input_tokens: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TInteger>;
|
|
199
|
+
cached_input_tokens: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TInteger>;
|
|
200
|
+
output_tokens: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TInteger>;
|
|
201
|
+
reasoning_output_tokens: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TInteger>;
|
|
202
|
+
total_tokens: import("@sinclair/typebox").TInteger;
|
|
203
|
+
}>>;
|
|
204
|
+
current_action: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TLiteral<"reading_context">, import("@sinclair/typebox").TLiteral<"planning">, import("@sinclair/typebox").TLiteral<"editing_files">, import("@sinclair/typebox").TLiteral<"running_command">, import("@sinclair/typebox").TLiteral<"using_tool">, import("@sinclair/typebox").TLiteral<"waiting_for_approval">, import("@sinclair/typebox").TLiteral<"finalizing">]>>;
|
|
205
|
+
}>>;
|
|
192
206
|
blocked_by: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TObject<{
|
|
193
207
|
kind: import("@sinclair/typebox").TLiteral<"clarification">;
|
|
194
208
|
thread_id: import("@sinclair/typebox").TString;
|
|
@@ -1211,6 +1211,20 @@ export declare const HOST_PROJECT_WORKSPACE_OPENAPI_ROUTES: ({
|
|
|
1211
1211
|
lane: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TLiteral<"foreground">, import("@sinclair/typebox").TLiteral<"scratchpad_background">]>>;
|
|
1212
1212
|
started_at: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
|
|
1213
1213
|
}>>>;
|
|
1214
|
+
runtime: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TObject<{
|
|
1215
|
+
activity_ref: import("@sinclair/typebox").TString;
|
|
1216
|
+
stage_id: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
|
|
1217
|
+
started_at: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
|
|
1218
|
+
updated_at: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
|
|
1219
|
+
token_usage: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TObject<{
|
|
1220
|
+
input_tokens: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TInteger>;
|
|
1221
|
+
cached_input_tokens: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TInteger>;
|
|
1222
|
+
output_tokens: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TInteger>;
|
|
1223
|
+
reasoning_output_tokens: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TInteger>;
|
|
1224
|
+
total_tokens: import("@sinclair/typebox").TInteger;
|
|
1225
|
+
}>>;
|
|
1226
|
+
current_action: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TLiteral<"reading_context">, import("@sinclair/typebox").TLiteral<"planning">, import("@sinclair/typebox").TLiteral<"editing_files">, import("@sinclair/typebox").TLiteral<"running_command">, import("@sinclair/typebox").TLiteral<"using_tool">, import("@sinclair/typebox").TLiteral<"waiting_for_approval">, import("@sinclair/typebox").TLiteral<"finalizing">]>>;
|
|
1227
|
+
}>>;
|
|
1214
1228
|
blocked_by: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TObject<{
|
|
1215
1229
|
kind: import("@sinclair/typebox").TLiteral<"clarification">;
|
|
1216
1230
|
thread_id: import("@sinclair/typebox").TString;
|
|
@@ -799,6 +799,20 @@ export declare const HOST_PROJECT_OPENAPI_ROUTES: ({
|
|
|
799
799
|
lane: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TLiteral<"foreground">, import("@sinclair/typebox").TLiteral<"scratchpad_background">]>>;
|
|
800
800
|
started_at: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
|
|
801
801
|
}>>>;
|
|
802
|
+
runtime: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TObject<{
|
|
803
|
+
activity_ref: import("@sinclair/typebox").TString;
|
|
804
|
+
stage_id: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
|
|
805
|
+
started_at: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
|
|
806
|
+
updated_at: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
|
|
807
|
+
token_usage: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TObject<{
|
|
808
|
+
input_tokens: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TInteger>;
|
|
809
|
+
cached_input_tokens: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TInteger>;
|
|
810
|
+
output_tokens: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TInteger>;
|
|
811
|
+
reasoning_output_tokens: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TInteger>;
|
|
812
|
+
total_tokens: import("@sinclair/typebox").TInteger;
|
|
813
|
+
}>>;
|
|
814
|
+
current_action: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TLiteral<"reading_context">, import("@sinclair/typebox").TLiteral<"planning">, import("@sinclair/typebox").TLiteral<"editing_files">, import("@sinclair/typebox").TLiteral<"running_command">, import("@sinclair/typebox").TLiteral<"using_tool">, import("@sinclair/typebox").TLiteral<"waiting_for_approval">, import("@sinclair/typebox").TLiteral<"finalizing">]>>;
|
|
815
|
+
}>>;
|
|
802
816
|
blocked_by: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TObject<{
|
|
803
817
|
kind: import("@sinclair/typebox").TLiteral<"clarification">;
|
|
804
818
|
thread_id: import("@sinclair/typebox").TString;
|
|
@@ -2350,6 +2364,20 @@ export declare const HOST_PROJECT_OPENAPI_ROUTES: ({
|
|
|
2350
2364
|
lane: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TLiteral<"foreground">, import("@sinclair/typebox").TLiteral<"scratchpad_background">]>>;
|
|
2351
2365
|
started_at: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
|
|
2352
2366
|
}>>>;
|
|
2367
|
+
runtime: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TObject<{
|
|
2368
|
+
activity_ref: import("@sinclair/typebox").TString;
|
|
2369
|
+
stage_id: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
|
|
2370
|
+
started_at: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
|
|
2371
|
+
updated_at: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
|
|
2372
|
+
token_usage: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TObject<{
|
|
2373
|
+
input_tokens: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TInteger>;
|
|
2374
|
+
cached_input_tokens: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TInteger>;
|
|
2375
|
+
output_tokens: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TInteger>;
|
|
2376
|
+
reasoning_output_tokens: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TInteger>;
|
|
2377
|
+
total_tokens: import("@sinclair/typebox").TInteger;
|
|
2378
|
+
}>>;
|
|
2379
|
+
current_action: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TLiteral<"reading_context">, import("@sinclair/typebox").TLiteral<"planning">, import("@sinclair/typebox").TLiteral<"editing_files">, import("@sinclair/typebox").TLiteral<"running_command">, import("@sinclair/typebox").TLiteral<"using_tool">, import("@sinclair/typebox").TLiteral<"waiting_for_approval">, import("@sinclair/typebox").TLiteral<"finalizing">]>>;
|
|
2380
|
+
}>>;
|
|
2353
2381
|
blocked_by: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TObject<{
|
|
2354
2382
|
kind: import("@sinclair/typebox").TLiteral<"clarification">;
|
|
2355
2383
|
thread_id: import("@sinclair/typebox").TString;
|
|
@@ -1193,6 +1193,20 @@ export declare const BootstrapResponseSchema: {
|
|
|
1193
1193
|
lane: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TLiteral<"foreground">, import("@sinclair/typebox").TLiteral<"scratchpad_background">]>>;
|
|
1194
1194
|
started_at: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
|
|
1195
1195
|
}>>>;
|
|
1196
|
+
runtime: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TObject<{
|
|
1197
|
+
activity_ref: import("@sinclair/typebox").TString;
|
|
1198
|
+
stage_id: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
|
|
1199
|
+
started_at: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
|
|
1200
|
+
updated_at: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
|
|
1201
|
+
token_usage: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TObject<{
|
|
1202
|
+
input_tokens: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TInteger>;
|
|
1203
|
+
cached_input_tokens: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TInteger>;
|
|
1204
|
+
output_tokens: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TInteger>;
|
|
1205
|
+
reasoning_output_tokens: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TInteger>;
|
|
1206
|
+
total_tokens: import("@sinclair/typebox").TInteger;
|
|
1207
|
+
}>>;
|
|
1208
|
+
current_action: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TLiteral<"reading_context">, import("@sinclair/typebox").TLiteral<"planning">, import("@sinclair/typebox").TLiteral<"editing_files">, import("@sinclair/typebox").TLiteral<"running_command">, import("@sinclair/typebox").TLiteral<"using_tool">, import("@sinclair/typebox").TLiteral<"waiting_for_approval">, import("@sinclair/typebox").TLiteral<"finalizing">]>>;
|
|
1209
|
+
}>>;
|
|
1196
1210
|
blocked_by: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TObject<{
|
|
1197
1211
|
kind: import("@sinclair/typebox").TLiteral<"clarification">;
|
|
1198
1212
|
thread_id: import("@sinclair/typebox").TString;
|
|
@@ -8,6 +8,28 @@ export declare const ExecutionActivitySummarySchema: import("@sinclair/typebox")
|
|
|
8
8
|
lane: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TLiteral<"foreground">, import("@sinclair/typebox").TLiteral<"scratchpad_background">]>>;
|
|
9
9
|
started_at: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
|
|
10
10
|
}>;
|
|
11
|
+
export declare const ExecutionRuntimeActionSchema: import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TLiteral<"reading_context">, import("@sinclair/typebox").TLiteral<"planning">, import("@sinclair/typebox").TLiteral<"editing_files">, import("@sinclair/typebox").TLiteral<"running_command">, import("@sinclair/typebox").TLiteral<"using_tool">, import("@sinclair/typebox").TLiteral<"waiting_for_approval">, import("@sinclair/typebox").TLiteral<"finalizing">]>;
|
|
12
|
+
export declare const ExecutionRuntimeTokenUsageSchema: import("@sinclair/typebox").TObject<{
|
|
13
|
+
input_tokens: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TInteger>;
|
|
14
|
+
cached_input_tokens: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TInteger>;
|
|
15
|
+
output_tokens: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TInteger>;
|
|
16
|
+
reasoning_output_tokens: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TInteger>;
|
|
17
|
+
total_tokens: import("@sinclair/typebox").TInteger;
|
|
18
|
+
}>;
|
|
19
|
+
export declare const ExecutionRuntimeSnapshotSchema: import("@sinclair/typebox").TObject<{
|
|
20
|
+
activity_ref: import("@sinclair/typebox").TString;
|
|
21
|
+
stage_id: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
|
|
22
|
+
started_at: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
|
|
23
|
+
updated_at: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
|
|
24
|
+
token_usage: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TObject<{
|
|
25
|
+
input_tokens: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TInteger>;
|
|
26
|
+
cached_input_tokens: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TInteger>;
|
|
27
|
+
output_tokens: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TInteger>;
|
|
28
|
+
reasoning_output_tokens: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TInteger>;
|
|
29
|
+
total_tokens: import("@sinclair/typebox").TInteger;
|
|
30
|
+
}>>;
|
|
31
|
+
current_action: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TLiteral<"reading_context">, import("@sinclair/typebox").TLiteral<"planning">, import("@sinclair/typebox").TLiteral<"editing_files">, import("@sinclair/typebox").TLiteral<"running_command">, import("@sinclair/typebox").TLiteral<"using_tool">, import("@sinclair/typebox").TLiteral<"waiting_for_approval">, import("@sinclair/typebox").TLiteral<"finalizing">]>>;
|
|
32
|
+
}>;
|
|
11
33
|
export declare const ExecutionStatusProjectionSchema: import("@sinclair/typebox").TObject<{
|
|
12
34
|
status: import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TLiteral<"idle">, import("@sinclair/typebox").TLiteral<"running">, import("@sinclair/typebox").TLiteral<"pending">, import("@sinclair/typebox").TLiteral<"failed">]>;
|
|
13
35
|
summary: import("@sinclair/typebox").TString;
|
|
@@ -41,6 +63,20 @@ export declare const ExecutionStatusProjectionSchema: import("@sinclair/typebox"
|
|
|
41
63
|
lane: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TLiteral<"foreground">, import("@sinclair/typebox").TLiteral<"scratchpad_background">]>>;
|
|
42
64
|
started_at: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
|
|
43
65
|
}>>>;
|
|
66
|
+
runtime: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TObject<{
|
|
67
|
+
activity_ref: import("@sinclair/typebox").TString;
|
|
68
|
+
stage_id: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
|
|
69
|
+
started_at: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
|
|
70
|
+
updated_at: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
|
|
71
|
+
token_usage: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TObject<{
|
|
72
|
+
input_tokens: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TInteger>;
|
|
73
|
+
cached_input_tokens: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TInteger>;
|
|
74
|
+
output_tokens: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TInteger>;
|
|
75
|
+
reasoning_output_tokens: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TInteger>;
|
|
76
|
+
total_tokens: import("@sinclair/typebox").TInteger;
|
|
77
|
+
}>>;
|
|
78
|
+
current_action: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TLiteral<"reading_context">, import("@sinclair/typebox").TLiteral<"planning">, import("@sinclair/typebox").TLiteral<"editing_files">, import("@sinclair/typebox").TLiteral<"running_command">, import("@sinclair/typebox").TLiteral<"using_tool">, import("@sinclair/typebox").TLiteral<"waiting_for_approval">, import("@sinclair/typebox").TLiteral<"finalizing">]>>;
|
|
79
|
+
}>>;
|
|
44
80
|
blocked_by: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TObject<{
|
|
45
81
|
kind: import("@sinclair/typebox").TLiteral<"clarification">;
|
|
46
82
|
thread_id: import("@sinclair/typebox").TString;
|
|
@@ -164,6 +200,20 @@ export declare const ExecutionStatusChangedEventPayloadSchema: import("@sinclair
|
|
|
164
200
|
lane: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TLiteral<"foreground">, import("@sinclair/typebox").TLiteral<"scratchpad_background">]>>;
|
|
165
201
|
started_at: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
|
|
166
202
|
}>>>;
|
|
203
|
+
runtime: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TObject<{
|
|
204
|
+
activity_ref: import("@sinclair/typebox").TString;
|
|
205
|
+
stage_id: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
|
|
206
|
+
started_at: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
|
|
207
|
+
updated_at: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
|
|
208
|
+
token_usage: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TObject<{
|
|
209
|
+
input_tokens: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TInteger>;
|
|
210
|
+
cached_input_tokens: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TInteger>;
|
|
211
|
+
output_tokens: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TInteger>;
|
|
212
|
+
reasoning_output_tokens: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TInteger>;
|
|
213
|
+
total_tokens: import("@sinclair/typebox").TInteger;
|
|
214
|
+
}>>;
|
|
215
|
+
current_action: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TLiteral<"reading_context">, import("@sinclair/typebox").TLiteral<"planning">, import("@sinclair/typebox").TLiteral<"editing_files">, import("@sinclair/typebox").TLiteral<"running_command">, import("@sinclair/typebox").TLiteral<"using_tool">, import("@sinclair/typebox").TLiteral<"waiting_for_approval">, import("@sinclair/typebox").TLiteral<"finalizing">]>>;
|
|
216
|
+
}>>;
|
|
167
217
|
blocked_by: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TObject<{
|
|
168
218
|
kind: import("@sinclair/typebox").TLiteral<"clarification">;
|
|
169
219
|
thread_id: import("@sinclair/typebox").TString;
|
|
@@ -22,12 +22,37 @@ export const ExecutionActivitySummarySchema = Type.Object({
|
|
|
22
22
|
lane: Type.Optional(ProcedureLaneSchema),
|
|
23
23
|
started_at: Type.Optional(IsoDateTimeStringSchema),
|
|
24
24
|
}, { additionalProperties: false });
|
|
25
|
+
export const ExecutionRuntimeActionSchema = Type.Union([
|
|
26
|
+
Type.Literal("reading_context"),
|
|
27
|
+
Type.Literal("planning"),
|
|
28
|
+
Type.Literal("editing_files"),
|
|
29
|
+
Type.Literal("running_command"),
|
|
30
|
+
Type.Literal("using_tool"),
|
|
31
|
+
Type.Literal("waiting_for_approval"),
|
|
32
|
+
Type.Literal("finalizing"),
|
|
33
|
+
]);
|
|
34
|
+
export const ExecutionRuntimeTokenUsageSchema = Type.Object({
|
|
35
|
+
input_tokens: Type.Optional(Type.Integer({ minimum: 0 })),
|
|
36
|
+
cached_input_tokens: Type.Optional(Type.Integer({ minimum: 0 })),
|
|
37
|
+
output_tokens: Type.Optional(Type.Integer({ minimum: 0 })),
|
|
38
|
+
reasoning_output_tokens: Type.Optional(Type.Integer({ minimum: 0 })),
|
|
39
|
+
total_tokens: Type.Integer({ minimum: 0 }),
|
|
40
|
+
}, { additionalProperties: false });
|
|
41
|
+
export const ExecutionRuntimeSnapshotSchema = Type.Object({
|
|
42
|
+
activity_ref: ActivityRefSchema,
|
|
43
|
+
stage_id: Type.Optional(Type.String()),
|
|
44
|
+
started_at: Type.Optional(IsoDateTimeStringSchema),
|
|
45
|
+
updated_at: Type.Optional(IsoDateTimeStringSchema),
|
|
46
|
+
token_usage: Type.Optional(ExecutionRuntimeTokenUsageSchema),
|
|
47
|
+
current_action: Type.Optional(ExecutionRuntimeActionSchema),
|
|
48
|
+
}, { additionalProperties: false });
|
|
25
49
|
export const ExecutionStatusProjectionSchema = Type.Object({
|
|
26
50
|
status: ExecutionStatusKindSchema,
|
|
27
51
|
summary: Type.String(),
|
|
28
52
|
active_task: Type.Optional(TaskProjectionSchema),
|
|
29
53
|
active_activity: Type.Optional(ExecutionActivitySummarySchema),
|
|
30
54
|
active_activities: Type.Optional(Type.Array(ExecutionActivitySummarySchema)),
|
|
55
|
+
runtime: Type.Optional(ExecutionRuntimeSnapshotSchema),
|
|
31
56
|
blocked_by: Type.Optional(Type.Union([
|
|
32
57
|
Type.Object({
|
|
33
58
|
kind: Type.Literal("clarification"),
|
|
@@ -13,7 +13,7 @@ import type { ActiveClarificationProjectionSchema, ClarificationChangedEventPayl
|
|
|
13
13
|
import type { GetProjectDocRequestSchema, GetProjectDocResponseSchema, GetProjectDocsResponseSchema, GetReferenceFilesRequestSchema, GetReferenceFilesResponseSchema, GetViewerAssetRequestSchema, GetViewerFileRequestSchema, GetViewerFileResponseSchema, GetViewerTreeRequestSchema, GetViewerTreeResponseSchema, ProjectDocKeySchema, ProjectDocParamsSchema, ProjectDocSummaryProjectionSchema, ReferenceDirectoryProjectionSchema, ReferenceFileProjectionSchema, ReferenceSummaryProjectionSchema, ReferenceTextReadBlockedReasonSchema, RefreshReferenceSummariesDispositionSchema, RefreshReferenceSummariesPayloadSchema, RefreshReferenceSummariesResultSchema, UploadReferenceFileDispositionSchema, UploadReferenceFilePayloadSchema, UploadReferenceFileResultSchema, ViewerAssetVariantSchema, ViewerFileContentProjectionSchema, ViewerFileProjectionSchema, ViewerPathSchema, ViewerRepoSnapshotSchema, ViewerTreeEntryProjectionSchema, ViewerTreeTextReadBlockedReasonSchema, ViewerUnreadableReasonSchema } from "./viewer-reference.js";
|
|
14
14
|
import type { ArtifactKindSchema, ArtifactManifestPathSchema, ArtifactManifestSchema, ArtifactPreviewCommandPayloadSchema, ArtifactPreviewCommandResultSchema, ArtifactPreviewProjectionSchema, ArtifactPreviewStatusSchema, ArtifactProjectionSchema, ArtifactServerManifestSchema, ArtifactStaticManifestSchema, ArtifactSummaryProjectionSchema, GetArtifactsResponseSchema, HeartbeatArtifactPreviewDispositionSchema, StartArtifactPreviewDispositionSchema, StopArtifactPreviewDispositionSchema } from "./artifacts.js";
|
|
15
15
|
import type { DeleteSkillDispositionSchema, DeleteSkillPayloadSchema, GetSkillParamsSchema, GetSkillResponseSchema, GetSkillsResponseSchema, ImportSkillZipDispositionSchema, ImportSkillZipPayloadSchema, ImportSkillZipResultSchema, SkillDetailProjectionSchema, SkillNameSchema, SkillProjectionSchema } from "./skills.js";
|
|
16
|
-
import type { ActivityEventProjectionSchema, ActivityEventSsePayloadSchema, ApprovalChangedEventPayloadSchema, ActivityProjectionSchema, ConnectionReadyEventPayloadSchema, ExecutionActivitySummarySchema, ExecutionStatusChangedEventPayloadSchema, ExecutionStatusKindSchema, ExecutionStatusProjectionSchema, ProcedureLaneSchema, ProviderConfigChangedEventPayloadSchema, QueryInvalidateEventPayloadSchema, ScratchpadUpdatedEventPayloadSchema, TaskDetailUpdatedEventPayloadSchema, TaskUpdatedEventPayloadSchema, WorklistChangedEventPayloadSchema, WorkspaceRecoveredEventPayloadSchema } from "./runtime-events.js";
|
|
16
|
+
import type { ActivityEventProjectionSchema, ActivityEventSsePayloadSchema, ApprovalChangedEventPayloadSchema, ActivityProjectionSchema, ConnectionReadyEventPayloadSchema, ExecutionActivitySummarySchema, ExecutionRuntimeActionSchema, ExecutionRuntimeSnapshotSchema, ExecutionRuntimeTokenUsageSchema, ExecutionStatusChangedEventPayloadSchema, ExecutionStatusKindSchema, ExecutionStatusProjectionSchema, ProcedureLaneSchema, ProviderConfigChangedEventPayloadSchema, QueryInvalidateEventPayloadSchema, ScratchpadUpdatedEventPayloadSchema, TaskDetailUpdatedEventPayloadSchema, TaskUpdatedEventPayloadSchema, WorklistChangedEventPayloadSchema, WorkspaceRecoveredEventPayloadSchema } from "./runtime-events.js";
|
|
17
17
|
import type { ContextSyncDispositionSchema, ContextSyncPayloadSchema, ContextSyncResultSchema, InitializeProjectDocsDispositionSchema, InitializeProjectDocsPayloadSchema, InitializeProjectDocsResultSchema, RefreshScratchpadDispositionSchema, RefreshScratchpadResultSchema, RunSchedulerNowDispositionSchema, RunSchedulerNowPayloadSchema, SubmitWorklistDispositionSchema, SubmitWorklistPayloadSchema, SubmitWorklistResultSchema, UpdateProjectDisplayNameDispositionSchema, UpdateProjectDisplayNamePayloadSchema, UpdateProjectDisplayNameResultSchema } from "./workspace-commands.js";
|
|
18
18
|
export type CursorPageRequest = Static<typeof CursorPageRequestSchema>;
|
|
19
19
|
export type CursorPage<TItem> = {
|
|
@@ -128,6 +128,9 @@ export type GetRecoverySummaryResponse = Static<typeof GetRecoverySummaryRespons
|
|
|
128
128
|
export type ExecutionStatusKind = Static<typeof ExecutionStatusKindSchema>;
|
|
129
129
|
export type ProcedureLane = Static<typeof ProcedureLaneSchema>;
|
|
130
130
|
export type ExecutionActivitySummary = Static<typeof ExecutionActivitySummarySchema>;
|
|
131
|
+
export type ExecutionRuntimeAction = Static<typeof ExecutionRuntimeActionSchema>;
|
|
132
|
+
export type ExecutionRuntimeTokenUsage = Static<typeof ExecutionRuntimeTokenUsageSchema>;
|
|
133
|
+
export type ExecutionRuntimeSnapshot = Static<typeof ExecutionRuntimeSnapshotSchema>;
|
|
131
134
|
export type ExecutionStatusProjection = Static<typeof ExecutionStatusProjectionSchema>;
|
|
132
135
|
export type ActivityProjection = Static<typeof ActivityProjectionSchema>;
|
|
133
136
|
export type ActivityEventProjection = Static<typeof ActivityEventProjectionSchema>;
|