@xfey/tutti 0.1.127 → 0.1.128

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 (65) hide show
  1. package/dist/approvals/decision-command.d.ts +2 -2
  2. package/dist/chat-assistant/diagnostics.d.ts +7 -2
  3. package/dist/chat-assistant/diagnostics.js +5 -2
  4. package/dist/chat-assistant/failures.d.ts +27 -0
  5. package/dist/chat-assistant/failures.js +102 -0
  6. package/dist/chat-assistant/index.d.ts +14 -2
  7. package/dist/chat-assistant/index.js +226 -48
  8. package/dist/chat-assistant/requests.d.ts +30 -0
  9. package/dist/chat-assistant/requests.js +58 -0
  10. package/dist/collaboration-ingestion/clarification.js +3 -1
  11. package/dist/collaboration-ingestion/main-chat.js +1 -0
  12. package/dist/collaboration-ingestion/types.d.ts +2 -0
  13. package/dist/collaboration-state/clarification-snapshot.d.ts +5 -5
  14. package/dist/collaboration-state/task-compile-context.d.ts +1 -1
  15. package/dist/collaboration-state/task-compile-context.js +11 -1
  16. package/dist/collaboration-state/task-compile-requests.d.ts +6 -0
  17. package/dist/collaboration-state/task-compile-requests.js +16 -0
  18. package/dist/control-plane/task-compile-continuation.js +2 -0
  19. package/dist/control-plane/task-compile-request-status.d.ts +6 -0
  20. package/dist/control-plane/task-compile-request-status.js +70 -0
  21. package/dist/control-plane/task-compile-start.js +40 -2
  22. package/dist/providers/failure-classification.d.ts +23 -0
  23. package/dist/providers/failure-classification.js +43 -0
  24. package/dist/reference-access/read-evidence.d.ts +2 -0
  25. package/dist/reference-access/read-evidence.js +5 -0
  26. package/dist/reference-access/service.d.ts +2 -0
  27. package/dist/reference-access/service.js +2 -0
  28. package/dist/runtime-failures.js +15 -1
  29. package/dist/server-shell/cli/external-reference-runtime.js +6 -3
  30. package/dist/server-shell/cli/host-server-runtime.js +4 -1
  31. package/dist/server-shell/cli/relay-registration.js +1 -0
  32. package/dist/server-shell/http/routes/project-api/messages-routes.js +22 -1
  33. package/dist/server-shell/http/routes/project-api/openapi-collaboration-routes.d.ts +140 -5
  34. package/dist/server-shell/http/routes/project-api/openapi-collaboration-routes.js +29 -2
  35. package/dist/server-shell/http/routes/project-api/openapi-skills-routes.d.ts +2 -0
  36. package/dist/server-shell/http/routes/project-api/openapi-workspace-routes.d.ts +6 -0
  37. package/dist/server-shell/http/routes/project-api/openapi.d.ts +148 -5
  38. package/dist/server-shell/http/routes/project-api/schemas.d.ts +6 -0
  39. package/dist/server-shell/http/routes/project-api/schemas.js +1 -0
  40. package/dist/server-shell/http/routes/project-api/types.d.ts +1 -0
  41. package/dist/server-shell/http/routes/project-api/workflow-routes.js +39 -3
  42. package/dist/server-shell/http/routes/project-api/workspace-projections.js +1 -0
  43. package/dist/server-shell/http/validation.js +8 -2
  44. package/dist/server-shell/local-console/managed-project-service.d.ts +1 -1
  45. package/dist/server-shell/managed-access/transport.d.ts +1 -1
  46. package/migrations/0024_chat_requests.sql +19 -0
  47. package/migrations/0025_task_compile_requests.sql +50 -0
  48. package/migrations/README.md +3 -1
  49. package/node_modules/@tutti/relay-client/dist/host-control.d.ts +1 -0
  50. package/node_modules/@tutti/relay-client/dist/host-control.js +1 -0
  51. package/node_modules/@tutti/shared/dist/schemas/api/index.d.ts +1 -0
  52. package/node_modules/@tutti/shared/dist/schemas/api/index.js +1 -0
  53. package/node_modules/@tutti/shared/dist/schemas/api/operation-status.d.ts +174 -0
  54. package/node_modules/@tutti/shared/dist/schemas/api/operation-status.js +75 -0
  55. package/node_modules/@tutti/shared/dist/schemas/api/primitives.d.ts +1 -0
  56. package/node_modules/@tutti/shared/dist/schemas/api/primitives.js +1 -0
  57. package/node_modules/@tutti/shared/dist/schemas/api/workspace-commands.d.ts +1 -0
  58. package/node_modules/@tutti/shared/dist/schemas/api/workspace-commands.js +2 -1
  59. package/package.json +1 -1
  60. package/web/assets/{homepage-motion-scene-DyEmWwvt.js → homepage-motion-scene-BcMt0AVW.js} +1 -1
  61. package/web/assets/index-2eX37Jx6.js +70 -0
  62. package/web/assets/index-BJvKuUiT.css +1 -0
  63. package/web/index.html +2 -2
  64. package/web/assets/index-By3idT4U.js +0 -70
  65. package/web/assets/index-DSBjOZmJ.css +0 -1
@@ -464,7 +464,9 @@ export async function startForegroundHostServer(options) {
464
464
  model: createManagedChatModel(managedRuntime, runtimeOptions),
465
465
  };
466
466
  if (resolution.kind !== "ready") {
467
- throw new Error("Provider is not configured.");
467
+ throw Object.assign(new Error("Provider is not configured."), {
468
+ code: "provider_not_configured",
469
+ });
468
470
  }
469
471
  return await resolution.model.answer(input);
470
472
  },
@@ -704,6 +706,7 @@ export async function startForegroundHostServer(options) {
704
706
  workspaceRoot: options.preparation.workspace_root,
705
707
  recoverInProgressCommands: true,
706
708
  });
709
+ chatAssistant.start();
707
710
  };
708
711
  // Managed creation / reauthorization activates during Relay registration. Do
709
712
  // not recover a stored task against a not-yet-activated native delegation.
@@ -66,6 +66,7 @@ export async function registerHostWithRelay(options) {
66
66
  integration_development_bot_v1: true,
67
67
  integration_clarification_v1: true,
68
68
  feishu_supporting_reads_v1: true,
69
+ request_status_v1: true,
69
70
  integration_external_references_v1: true,
70
71
  integration_attachment_ingestion_v1: true,
71
72
  integration_managed_reference_ingestion_v1: true,
@@ -1,11 +1,32 @@
1
- import { GetMessagesRequestSchema, MessageWindowSchema, SendMainChatMessageBodySchema, SendMainChatMessageResponseSchema, } from "@tutti/shared/schemas/api";
1
+ import { Type } from "@sinclair/typebox";
2
+ import { MessageIdSchema } from "@tutti/shared/schemas/domain";
3
+ import { GetMessagesRequestSchema, ChatRequestStatusSchema, MessageWindowSchema, SendMainChatMessageBodySchema, SendMainChatMessageResponseSchema, } from "@tutti/shared/schemas/api";
2
4
  import { createArtifactFeedbackMessage } from "../../../../artifact-feedback/index.js";
3
5
  import { ingestMainChatMessage } from "../../../../collaboration-ingestion/index.js";
4
6
  import { readMainChatMessageWindow } from "../../../../collaboration-state/index.js";
5
7
  import { HOST_PROJECT_API_BASE_PATH } from "./constants.js";
6
8
  import { requireValidMessageWindowRequest, requireValidSendMainChatPayload, } from "./payload-validation.js";
7
9
  import { requireHostProjectSession, requireProjectStore, requireWorkspaceRoot, } from "./session-requirements.js";
10
+ import { HostProjectNotFoundError, HostProjectBadRequestError } from "./errors.js";
11
+ import { chatRequestStatus, readChatRequest } from "../../../../chat-assistant/requests.js";
8
12
  export function registerMessagesRoutes(app, { options, workspaceEvents, artifactPreviewManager, }) {
13
+ app.get(`${HOST_PROJECT_API_BASE_PATH}/chat-requests/:messageId`, {
14
+ preValidation: (request, _reply, done) => done(Object.keys(request.query).length === 0
15
+ ? undefined
16
+ : new HostProjectBadRequestError("Request status does not accept query parameters")),
17
+ schema: {
18
+ params: Type.Object({ messageId: MessageIdSchema }, { additionalProperties: false }),
19
+ querystring: Type.Object({}, { additionalProperties: false }),
20
+ response: { 200: ChatRequestStatusSchema },
21
+ },
22
+ }, (request, reply) => {
23
+ requireHostProjectSession(request, options);
24
+ reply.header("cache-control", "no-store");
25
+ const record = readChatRequest(requireProjectStore(options).db, request.params.messageId);
26
+ if (record === null)
27
+ throw new HostProjectNotFoundError();
28
+ return chatRequestStatus(record);
29
+ });
9
30
  app.get(`${HOST_PROJECT_API_BASE_PATH}/messages`, {
10
31
  schema: {
11
32
  querystring: GetMessagesRequestSchema,
@@ -1,4 +1,139 @@
1
1
  export declare const HOST_PROJECT_COLLABORATION_OPENAPI_ROUTES: ({
2
+ method: "get";
3
+ path: string;
4
+ summary: string;
5
+ tags: string[];
6
+ querystring: import("@sinclair/typebox").TObject<{
7
+ workflow_ref: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
8
+ command_id: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
9
+ }>;
10
+ responses: {
11
+ 200: {
12
+ description: string;
13
+ schema: import("@sinclair/typebox").TObject<{
14
+ request: import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TObject<{
15
+ status: import("@sinclair/typebox").TLiteral<"running">;
16
+ phase: import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TLiteral<"preparing">, import("@sinclair/typebox").TLiteral<"scratchpad_refresh">, import("@sinclair/typebox").TLiteral<"reference_summary_refresh">, import("@sinclair/typebox").TLiteral<"project_context_bootstrap">, import("@sinclair/typebox").TLiteral<"task_compile">]>;
17
+ operation: import("@sinclair/typebox").TObject<{
18
+ kind: import("@sinclair/typebox").TLiteral<"worklist_submit">;
19
+ ref: import("@sinclair/typebox").TString;
20
+ }>;
21
+ created_at: import("@sinclair/typebox").TString;
22
+ activity_ref: import("@sinclair/typebox").TString;
23
+ }>, import("@sinclair/typebox").TObject<{
24
+ status: import("@sinclair/typebox").TLiteral<"waiting_input">;
25
+ phase: import("@sinclair/typebox").TLiteral<"clarification">;
26
+ round_id: import("@sinclair/typebox").TString;
27
+ operation: import("@sinclair/typebox").TObject<{
28
+ kind: import("@sinclair/typebox").TLiteral<"worklist_submit">;
29
+ ref: import("@sinclair/typebox").TString;
30
+ }>;
31
+ created_at: import("@sinclair/typebox").TString;
32
+ activity_ref: import("@sinclair/typebox").TString;
33
+ }>, import("@sinclair/typebox").TObject<{
34
+ status: import("@sinclair/typebox").TLiteral<"succeeded">;
35
+ phase: import("@sinclair/typebox").TLiteral<"settled">;
36
+ operation: import("@sinclair/typebox").TObject<{
37
+ kind: import("@sinclair/typebox").TLiteral<"worklist_submit">;
38
+ ref: import("@sinclair/typebox").TString;
39
+ }>;
40
+ created_at: import("@sinclair/typebox").TString;
41
+ activity_ref: import("@sinclair/typebox").TString;
42
+ }>, import("@sinclair/typebox").TObject<{
43
+ status: import("@sinclair/typebox").TLiteral<"failed">;
44
+ phase: import("@sinclair/typebox").TLiteral<"settled">;
45
+ failure: import("@sinclair/typebox").TObject<{
46
+ code: import("@sinclair/typebox").TString;
47
+ category: import("@sinclair/typebox").TUnion<import("@sinclair/typebox").TLiteral<"interrupted" | "capacity" | "access" | "configuration" | "dependency" | "internal">[]>;
48
+ recovery: import("@sinclair/typebox").TUnion<import("@sinclair/typebox").TLiteral<"resend_request" | "check_provider" | "restart_host" | "contact_support" | "none">[]>;
49
+ diagnostic_id: import("@sinclair/typebox").TString;
50
+ }>;
51
+ operation: import("@sinclair/typebox").TObject<{
52
+ kind: import("@sinclair/typebox").TLiteral<"worklist_submit">;
53
+ ref: import("@sinclair/typebox").TString;
54
+ }>;
55
+ created_at: import("@sinclair/typebox").TString;
56
+ activity_ref: import("@sinclair/typebox").TString;
57
+ }>, import("@sinclair/typebox").TObject<{
58
+ status: import("@sinclair/typebox").TLiteral<"unknown">;
59
+ phase: import("@sinclair/typebox").TLiteral<"unconfirmed">;
60
+ operation: import("@sinclair/typebox").TObject<{
61
+ kind: import("@sinclair/typebox").TLiteral<"worklist_submit">;
62
+ ref: import("@sinclair/typebox").TString;
63
+ }>;
64
+ created_at: import("@sinclair/typebox").TString;
65
+ activity_ref: import("@sinclair/typebox").TString;
66
+ }>]>, import("@sinclair/typebox").TNull]>;
67
+ }>;
68
+ contentType?: never;
69
+ };
70
+ };
71
+ parameters?: never;
72
+ requestBody?: never;
73
+ } | {
74
+ method: "get";
75
+ path: string;
76
+ summary: string;
77
+ tags: string[];
78
+ parameters: import("@tutti/shared/schemas/api").BrowserFacingOpenApiParameter[];
79
+ responses: {
80
+ 200: {
81
+ description: string;
82
+ schema: import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TObject<{
83
+ status: import("@sinclair/typebox").TLiteral<"queued">;
84
+ phase: import("@sinclair/typebox").TLiteral<"queue">;
85
+ operation: import("@sinclair/typebox").TObject<{
86
+ kind: import("@sinclair/typebox").TLiteral<"chat_answer">;
87
+ ref: import("@sinclair/typebox").TString;
88
+ }>;
89
+ revision: import("@sinclair/typebox").TInteger;
90
+ created_at: import("@sinclair/typebox").TString;
91
+ updated_at: import("@sinclair/typebox").TString;
92
+ }>, import("@sinclair/typebox").TObject<{
93
+ status: import("@sinclair/typebox").TLiteral<"running">;
94
+ phase: import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TLiteral<"workspace_wait">, import("@sinclair/typebox").TLiteral<"answer">]>;
95
+ operation: import("@sinclair/typebox").TObject<{
96
+ kind: import("@sinclair/typebox").TLiteral<"chat_answer">;
97
+ ref: import("@sinclair/typebox").TString;
98
+ }>;
99
+ revision: import("@sinclair/typebox").TInteger;
100
+ created_at: import("@sinclair/typebox").TString;
101
+ updated_at: import("@sinclair/typebox").TString;
102
+ }>, import("@sinclair/typebox").TObject<{
103
+ status: import("@sinclair/typebox").TLiteral<"succeeded">;
104
+ phase: import("@sinclair/typebox").TLiteral<"settled">;
105
+ response_message_id: import("@sinclair/typebox").TString;
106
+ operation: import("@sinclair/typebox").TObject<{
107
+ kind: import("@sinclair/typebox").TLiteral<"chat_answer">;
108
+ ref: import("@sinclair/typebox").TString;
109
+ }>;
110
+ revision: import("@sinclair/typebox").TInteger;
111
+ created_at: import("@sinclair/typebox").TString;
112
+ updated_at: import("@sinclair/typebox").TString;
113
+ }>, import("@sinclair/typebox").TObject<{
114
+ status: import("@sinclair/typebox").TLiteral<"failed">;
115
+ phase: import("@sinclair/typebox").TLiteral<"settled">;
116
+ failure: import("@sinclair/typebox").TObject<{
117
+ code: import("@sinclair/typebox").TString;
118
+ category: import("@sinclair/typebox").TUnion<import("@sinclair/typebox").TLiteral<"interrupted" | "capacity" | "access" | "configuration" | "dependency" | "internal">[]>;
119
+ recovery: import("@sinclair/typebox").TUnion<import("@sinclair/typebox").TLiteral<"resend_request" | "check_provider" | "restart_host" | "contact_support" | "none">[]>;
120
+ diagnostic_id: import("@sinclair/typebox").TString;
121
+ }>;
122
+ response_message_id: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
123
+ operation: import("@sinclair/typebox").TObject<{
124
+ kind: import("@sinclair/typebox").TLiteral<"chat_answer">;
125
+ ref: import("@sinclair/typebox").TString;
126
+ }>;
127
+ revision: import("@sinclair/typebox").TInteger;
128
+ created_at: import("@sinclair/typebox").TString;
129
+ updated_at: import("@sinclair/typebox").TString;
130
+ }>]>;
131
+ contentType?: never;
132
+ };
133
+ };
134
+ querystring?: never;
135
+ requestBody?: never;
136
+ } | {
2
137
  method: "get";
3
138
  path: string;
4
139
  summary: string;
@@ -17,8 +152,8 @@ export declare const HOST_PROJECT_COLLABORATION_OPENAPI_ROUTES: ({
17
152
  contentType?: never;
18
153
  };
19
154
  };
20
- requestBody?: never;
21
155
  parameters?: never;
156
+ requestBody?: never;
22
157
  } | {
23
158
  method: "post";
24
159
  path: string;
@@ -77,8 +212,8 @@ export declare const HOST_PROJECT_COLLABORATION_OPENAPI_ROUTES: ({
77
212
  };
78
213
  };
79
214
  };
80
- requestBody?: never;
81
215
  parameters?: never;
216
+ requestBody?: never;
82
217
  } | {
83
218
  method: "get";
84
219
  path: string;
@@ -123,8 +258,8 @@ export declare const HOST_PROJECT_COLLABORATION_OPENAPI_ROUTES: ({
123
258
  };
124
259
  };
125
260
  querystring?: never;
126
- requestBody?: never;
127
261
  parameters?: never;
262
+ requestBody?: never;
128
263
  } | {
129
264
  method: "get";
130
265
  path: string;
@@ -165,8 +300,8 @@ export declare const HOST_PROJECT_COLLABORATION_OPENAPI_ROUTES: ({
165
300
  };
166
301
  };
167
302
  querystring?: never;
168
- requestBody?: never;
169
303
  parameters?: never;
304
+ requestBody?: never;
170
305
  } | {
171
306
  method: "post";
172
307
  path: string;
@@ -294,8 +429,8 @@ export declare const HOST_PROJECT_COLLABORATION_OPENAPI_ROUTES: ({
294
429
  };
295
430
  };
296
431
  querystring?: never;
297
- requestBody?: never;
298
432
  parameters?: never;
433
+ requestBody?: never;
299
434
  } | {
300
435
  method: "get";
301
436
  path: string;
@@ -1,8 +1,35 @@
1
- import { ActiveClarificationProjectionSchema, GetClarificationRoundMessagesRequestSchema, GetClarificationRoundResponseSchema, GetClarificationThreadResponseSchema, GetMessagesRequestSchema, MessageWindowSchema, RunSchedulerNowBodySchema, RunSchedulerNowResponseSchema, ScratchpadProjectionSchema, SendClarificationRoundMessageBodySchema, SendClarificationRoundMessageResponseSchema, SendMainChatMessageResponseSchema, SubmitClarificationRoundBodySchema, SubmitClarificationRoundResponseSchema, SubmitWorklistBodySchema, SubmitWorklistResponseSchema, WorklistProjectionSchema, } from "@tutti/shared/schemas/api";
1
+ import { ActiveClarificationProjectionSchema, ChatRequestStatusSchema, CurrentWorklistSubmissionSchema, WorklistSubmissionQuerySchema, GetClarificationRoundMessagesRequestSchema, GetClarificationRoundResponseSchema, GetClarificationThreadResponseSchema, GetMessagesRequestSchema, MessageWindowSchema, RunSchedulerNowBodySchema, RunSchedulerNowResponseSchema, ScratchpadProjectionSchema, SendClarificationRoundMessageBodySchema, SendClarificationRoundMessageResponseSchema, SendMainChatMessageResponseSchema, SubmitClarificationRoundBodySchema, SubmitClarificationRoundResponseSchema, SubmitWorklistBodySchema, SubmitWorklistResponseSchema, WorklistProjectionSchema, } from "@tutti/shared/schemas/api";
2
+ import { MessageIdSchema } from "@tutti/shared/schemas/domain";
2
3
  import { HOST_PROJECT_API_BASE_PATH } from "./constants.js";
3
4
  import { EventStreamResponseSchema, GetEventsRequestSchema, SendMainChatMessageBodySchema, } from "./schemas.js";
4
- import { ClarificationRoundIdPathParameter, ClarificationThreadIdPathParameter, } from "./openapi-path-parameters.js";
5
+ import { ClarificationRoundIdPathParameter, pathParameter, ClarificationThreadIdPathParameter, } from "./openapi-path-parameters.js";
5
6
  export const HOST_PROJECT_COLLABORATION_OPENAPI_ROUTES = [
7
+ {
8
+ method: "get",
9
+ path: `${HOST_PROJECT_API_BASE_PATH}/worklist/submission`,
10
+ summary: "Read the latest or identified Submit operation; acceptance is not completion.",
11
+ tags: ["worklist"],
12
+ querystring: WorklistSubmissionQuerySchema,
13
+ responses: {
14
+ 200: {
15
+ description: "Submission evidence or null when not recorded.",
16
+ schema: CurrentWorklistSubmissionSchema,
17
+ },
18
+ },
19
+ },
20
+ {
21
+ method: "get",
22
+ path: `${HOST_PROJECT_API_BASE_PATH}/chat-requests/{message_id}`,
23
+ summary: "Read a durable answer request by its trigger message id.",
24
+ tags: ["messages"],
25
+ parameters: [pathParameter("message_id", MessageIdSchema, "Original question message id.")],
26
+ responses: {
27
+ 200: {
28
+ description: "Host processing status, not platform delivery status.",
29
+ schema: ChatRequestStatusSchema,
30
+ },
31
+ },
32
+ },
6
33
  {
7
34
  method: "get",
8
35
  path: `${HOST_PROJECT_API_BASE_PATH}/messages`,
@@ -25,6 +25,7 @@ export declare const HOST_PROJECT_SKILLS_OPENAPI_ROUTES: ({
25
25
  message: import("@sinclair/typebox").TString;
26
26
  retryable: import("@sinclair/typebox").TBoolean;
27
27
  details: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TUnknown>;
28
+ request_id: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
28
29
  }>;
29
30
  }>;
30
31
  };
@@ -60,6 +61,7 @@ export declare const HOST_PROJECT_SKILLS_OPENAPI_ROUTES: ({
60
61
  message: import("@sinclair/typebox").TString;
61
62
  retryable: import("@sinclair/typebox").TBoolean;
62
63
  details: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TUnknown>;
64
+ request_id: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
63
65
  }>;
64
66
  }>;
65
67
  };
@@ -575,6 +575,9 @@ export declare const HOST_PROJECT_WORKSPACE_OPENAPI_ROUTES: ({
575
575
  readonly artifact_feedback: {
576
576
  readonly type: "boolean";
577
577
  };
578
+ readonly request_status_v1: {
579
+ readonly type: "boolean";
580
+ };
578
581
  };
579
582
  };
580
583
  };
@@ -769,6 +772,9 @@ export declare const HOST_PROJECT_WORKSPACE_OPENAPI_ROUTES: ({
769
772
  readonly artifact_feedback: {
770
773
  readonly type: "boolean";
771
774
  };
775
+ readonly request_status_v1: {
776
+ readonly type: "boolean";
777
+ };
772
778
  };
773
779
  };
774
780
  };
@@ -157,6 +157,141 @@ export declare const HOST_PROJECT_OPENAPI_ROUTES: ({
157
157
  };
158
158
  200?: never;
159
159
  };
160
+ } | {
161
+ method: "get";
162
+ path: string;
163
+ summary: string;
164
+ tags: string[];
165
+ querystring: import("@sinclair/typebox").TObject<{
166
+ workflow_ref: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
167
+ command_id: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
168
+ }>;
169
+ responses: {
170
+ 200: {
171
+ description: string;
172
+ schema: import("@sinclair/typebox").TObject<{
173
+ request: import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TObject<{
174
+ status: import("@sinclair/typebox").TLiteral<"running">;
175
+ phase: import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TLiteral<"preparing">, import("@sinclair/typebox").TLiteral<"scratchpad_refresh">, import("@sinclair/typebox").TLiteral<"reference_summary_refresh">, import("@sinclair/typebox").TLiteral<"project_context_bootstrap">, import("@sinclair/typebox").TLiteral<"task_compile">]>;
176
+ operation: import("@sinclair/typebox").TObject<{
177
+ kind: import("@sinclair/typebox").TLiteral<"worklist_submit">;
178
+ ref: import("@sinclair/typebox").TString;
179
+ }>;
180
+ created_at: import("@sinclair/typebox").TString;
181
+ activity_ref: import("@sinclair/typebox").TString;
182
+ }>, import("@sinclair/typebox").TObject<{
183
+ status: import("@sinclair/typebox").TLiteral<"waiting_input">;
184
+ phase: import("@sinclair/typebox").TLiteral<"clarification">;
185
+ round_id: import("@sinclair/typebox").TString;
186
+ operation: import("@sinclair/typebox").TObject<{
187
+ kind: import("@sinclair/typebox").TLiteral<"worklist_submit">;
188
+ ref: import("@sinclair/typebox").TString;
189
+ }>;
190
+ created_at: import("@sinclair/typebox").TString;
191
+ activity_ref: import("@sinclair/typebox").TString;
192
+ }>, import("@sinclair/typebox").TObject<{
193
+ status: import("@sinclair/typebox").TLiteral<"succeeded">;
194
+ phase: import("@sinclair/typebox").TLiteral<"settled">;
195
+ operation: import("@sinclair/typebox").TObject<{
196
+ kind: import("@sinclair/typebox").TLiteral<"worklist_submit">;
197
+ ref: import("@sinclair/typebox").TString;
198
+ }>;
199
+ created_at: import("@sinclair/typebox").TString;
200
+ activity_ref: import("@sinclair/typebox").TString;
201
+ }>, import("@sinclair/typebox").TObject<{
202
+ status: import("@sinclair/typebox").TLiteral<"failed">;
203
+ phase: import("@sinclair/typebox").TLiteral<"settled">;
204
+ failure: import("@sinclair/typebox").TObject<{
205
+ code: import("@sinclair/typebox").TString;
206
+ category: import("@sinclair/typebox").TUnion<import("@sinclair/typebox").TLiteral<"interrupted" | "capacity" | "access" | "configuration" | "dependency" | "internal">[]>;
207
+ recovery: import("@sinclair/typebox").TUnion<import("@sinclair/typebox").TLiteral<"resend_request" | "check_provider" | "restart_host" | "contact_support" | "none">[]>;
208
+ diagnostic_id: import("@sinclair/typebox").TString;
209
+ }>;
210
+ operation: import("@sinclair/typebox").TObject<{
211
+ kind: import("@sinclair/typebox").TLiteral<"worklist_submit">;
212
+ ref: import("@sinclair/typebox").TString;
213
+ }>;
214
+ created_at: import("@sinclair/typebox").TString;
215
+ activity_ref: import("@sinclair/typebox").TString;
216
+ }>, import("@sinclair/typebox").TObject<{
217
+ status: import("@sinclair/typebox").TLiteral<"unknown">;
218
+ phase: import("@sinclair/typebox").TLiteral<"unconfirmed">;
219
+ operation: import("@sinclair/typebox").TObject<{
220
+ kind: import("@sinclair/typebox").TLiteral<"worklist_submit">;
221
+ ref: import("@sinclair/typebox").TString;
222
+ }>;
223
+ created_at: import("@sinclair/typebox").TString;
224
+ activity_ref: import("@sinclair/typebox").TString;
225
+ }>]>, import("@sinclair/typebox").TNull]>;
226
+ }>;
227
+ contentType?: never;
228
+ };
229
+ };
230
+ parameters?: never;
231
+ requestBody?: never;
232
+ } | {
233
+ method: "get";
234
+ path: string;
235
+ summary: string;
236
+ tags: string[];
237
+ parameters: import("@tutti/shared/schemas/api").BrowserFacingOpenApiParameter[];
238
+ responses: {
239
+ 200: {
240
+ description: string;
241
+ schema: import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TObject<{
242
+ status: import("@sinclair/typebox").TLiteral<"queued">;
243
+ phase: import("@sinclair/typebox").TLiteral<"queue">;
244
+ operation: import("@sinclair/typebox").TObject<{
245
+ kind: import("@sinclair/typebox").TLiteral<"chat_answer">;
246
+ ref: import("@sinclair/typebox").TString;
247
+ }>;
248
+ revision: import("@sinclair/typebox").TInteger;
249
+ created_at: import("@sinclair/typebox").TString;
250
+ updated_at: import("@sinclair/typebox").TString;
251
+ }>, import("@sinclair/typebox").TObject<{
252
+ status: import("@sinclair/typebox").TLiteral<"running">;
253
+ phase: import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TLiteral<"workspace_wait">, import("@sinclair/typebox").TLiteral<"answer">]>;
254
+ operation: import("@sinclair/typebox").TObject<{
255
+ kind: import("@sinclair/typebox").TLiteral<"chat_answer">;
256
+ ref: import("@sinclair/typebox").TString;
257
+ }>;
258
+ revision: import("@sinclair/typebox").TInteger;
259
+ created_at: import("@sinclair/typebox").TString;
260
+ updated_at: import("@sinclair/typebox").TString;
261
+ }>, import("@sinclair/typebox").TObject<{
262
+ status: import("@sinclair/typebox").TLiteral<"succeeded">;
263
+ phase: import("@sinclair/typebox").TLiteral<"settled">;
264
+ response_message_id: import("@sinclair/typebox").TString;
265
+ operation: import("@sinclair/typebox").TObject<{
266
+ kind: import("@sinclair/typebox").TLiteral<"chat_answer">;
267
+ ref: import("@sinclair/typebox").TString;
268
+ }>;
269
+ revision: import("@sinclair/typebox").TInteger;
270
+ created_at: import("@sinclair/typebox").TString;
271
+ updated_at: import("@sinclair/typebox").TString;
272
+ }>, import("@sinclair/typebox").TObject<{
273
+ status: import("@sinclair/typebox").TLiteral<"failed">;
274
+ phase: import("@sinclair/typebox").TLiteral<"settled">;
275
+ failure: import("@sinclair/typebox").TObject<{
276
+ code: import("@sinclair/typebox").TString;
277
+ category: import("@sinclair/typebox").TUnion<import("@sinclair/typebox").TLiteral<"interrupted" | "capacity" | "access" | "configuration" | "dependency" | "internal">[]>;
278
+ recovery: import("@sinclair/typebox").TUnion<import("@sinclair/typebox").TLiteral<"resend_request" | "check_provider" | "restart_host" | "contact_support" | "none">[]>;
279
+ diagnostic_id: import("@sinclair/typebox").TString;
280
+ }>;
281
+ response_message_id: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
282
+ operation: import("@sinclair/typebox").TObject<{
283
+ kind: import("@sinclair/typebox").TLiteral<"chat_answer">;
284
+ ref: import("@sinclair/typebox").TString;
285
+ }>;
286
+ revision: import("@sinclair/typebox").TInteger;
287
+ created_at: import("@sinclair/typebox").TString;
288
+ updated_at: import("@sinclair/typebox").TString;
289
+ }>]>;
290
+ contentType?: never;
291
+ };
292
+ };
293
+ querystring?: never;
294
+ requestBody?: never;
160
295
  } | {
161
296
  method: "get";
162
297
  path: string;
@@ -176,8 +311,8 @@ export declare const HOST_PROJECT_OPENAPI_ROUTES: ({
176
311
  contentType?: never;
177
312
  };
178
313
  };
179
- requestBody?: never;
180
314
  parameters?: never;
315
+ requestBody?: never;
181
316
  } | {
182
317
  method: "post";
183
318
  path: string;
@@ -236,8 +371,8 @@ export declare const HOST_PROJECT_OPENAPI_ROUTES: ({
236
371
  };
237
372
  };
238
373
  };
239
- requestBody?: never;
240
374
  parameters?: never;
375
+ requestBody?: never;
241
376
  } | {
242
377
  method: "get";
243
378
  path: string;
@@ -282,8 +417,8 @@ export declare const HOST_PROJECT_OPENAPI_ROUTES: ({
282
417
  };
283
418
  };
284
419
  querystring?: never;
285
- requestBody?: never;
286
420
  parameters?: never;
421
+ requestBody?: never;
287
422
  } | {
288
423
  method: "get";
289
424
  path: string;
@@ -324,8 +459,8 @@ export declare const HOST_PROJECT_OPENAPI_ROUTES: ({
324
459
  };
325
460
  };
326
461
  querystring?: never;
327
- requestBody?: never;
328
462
  parameters?: never;
463
+ requestBody?: never;
329
464
  } | {
330
465
  method: "get";
331
466
  path: string;
@@ -438,8 +573,8 @@ export declare const HOST_PROJECT_OPENAPI_ROUTES: ({
438
573
  };
439
574
  };
440
575
  querystring?: never;
441
- requestBody?: never;
442
576
  parameters?: never;
577
+ requestBody?: never;
443
578
  } | {
444
579
  method: "get";
445
580
  path: string;
@@ -893,6 +1028,7 @@ export declare const HOST_PROJECT_OPENAPI_ROUTES: ({
893
1028
  message: import("@sinclair/typebox").TString;
894
1029
  retryable: import("@sinclair/typebox").TBoolean;
895
1030
  details: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TUnknown>;
1031
+ request_id: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
896
1032
  }>;
897
1033
  }>;
898
1034
  };
@@ -928,6 +1064,7 @@ export declare const HOST_PROJECT_OPENAPI_ROUTES: ({
928
1064
  message: import("@sinclair/typebox").TString;
929
1065
  retryable: import("@sinclair/typebox").TBoolean;
930
1066
  details: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TUnknown>;
1067
+ request_id: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
931
1068
  }>;
932
1069
  }>;
933
1070
  };
@@ -1882,6 +2019,9 @@ export declare const HOST_PROJECT_OPENAPI_ROUTES: ({
1882
2019
  readonly artifact_feedback: {
1883
2020
  readonly type: "boolean";
1884
2021
  };
2022
+ readonly request_status_v1: {
2023
+ readonly type: "boolean";
2024
+ };
1885
2025
  };
1886
2026
  };
1887
2027
  };
@@ -2076,6 +2216,9 @@ export declare const HOST_PROJECT_OPENAPI_ROUTES: ({
2076
2216
  readonly artifact_feedback: {
2077
2217
  readonly type: "boolean";
2078
2218
  };
2219
+ readonly request_status_v1: {
2220
+ readonly type: "boolean";
2221
+ };
2079
2222
  };
2080
2223
  };
2081
2224
  };
@@ -530,6 +530,9 @@ export declare const WorkspaceResponseSchema: {
530
530
  readonly artifact_feedback: {
531
531
  readonly type: "boolean";
532
532
  };
533
+ readonly request_status_v1: {
534
+ readonly type: "boolean";
535
+ };
533
536
  };
534
537
  };
535
538
  };
@@ -713,6 +716,9 @@ export declare const BootstrapResponseSchema: {
713
716
  readonly artifact_feedback: {
714
717
  readonly type: "boolean";
715
718
  };
719
+ readonly request_status_v1: {
720
+ readonly type: "boolean";
721
+ };
716
722
  };
717
723
  };
718
724
  };
@@ -281,6 +281,7 @@ export const WorkspaceResponseSchema = {
281
281
  task_run_now_scheduler: { type: "boolean" },
282
282
  clarification: { type: "boolean" },
283
283
  artifact_feedback: { type: "boolean" },
284
+ request_status_v1: { type: "boolean" },
284
285
  },
285
286
  },
286
287
  },
@@ -67,6 +67,7 @@ export type HostRepoProjection = {
67
67
  mainline_clean: boolean;
68
68
  };
69
69
  export type HostProjectApiCapabilities = {
70
+ request_status_v1?: boolean;
70
71
  sse: boolean;
71
72
  relay_join: boolean;
72
73
  repo_viewer: boolean;