@xfey/tutti 0.1.111 → 0.1.113
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/approvals/decision-command.d.ts +2 -2
- package/dist/chat-assistant/index.d.ts +1 -1
- package/dist/chat-assistant/index.js +19 -6
- package/dist/collaboration-ingestion/clarification.d.ts +25 -0
- package/dist/collaboration-ingestion/clarification.js +63 -0
- package/dist/collaboration-ingestion/external-source.d.ts +2 -0
- package/dist/collaboration-ingestion/external-source.js +35 -0
- package/dist/collaboration-ingestion/index.d.ts +2 -0
- package/dist/collaboration-ingestion/index.js +2 -0
- package/dist/collaboration-ingestion/platform-clarification.d.ts +10 -0
- package/dist/collaboration-ingestion/platform-clarification.js +42 -0
- package/dist/collaboration-state/clarification-messages.js +3 -2
- package/dist/collaboration-state/clarification-records.d.ts +1 -1
- package/dist/collaboration-state/clarification-records.js +7 -5
- package/dist/collaboration-state/clarification-rounds.js +5 -5
- package/dist/collaboration-state/clarification-snapshot.d.ts +228 -0
- package/dist/collaboration-state/clarification-snapshot.js +29 -0
- package/dist/collaboration-state/clarification-successors.js +6 -6
- package/dist/collaboration-state/index.d.ts +1 -0
- package/dist/collaboration-state/index.js +1 -0
- package/dist/collaboration-state/run-recording.js +1 -1
- package/dist/collaboration-state/task-compile-context.d.ts +1 -1
- package/dist/collaboration-state/types.d.ts +1 -0
- package/dist/control-plane/clarification-commands.d.ts +3 -2
- package/dist/control-plane/clarification-commands.js +13 -4
- package/dist/control-plane/follow-up-context.js +8 -14
- package/dist/control-plane/index.d.ts +3 -2
- package/dist/control-plane/task-compile-clarification-context.js +7 -2
- package/dist/control-plane/types.d.ts +1 -0
- package/dist/control-plane/workflows/openai.js +5 -4
- package/dist/platform-outbound/repository.js +83 -4
- package/dist/server-shell/cli/host-lifecycle.js +1 -0
- package/dist/server-shell/cli/host-server-runtime.d.ts +2 -1
- package/dist/server-shell/cli/host-server-runtime.js +4 -2
- package/dist/server-shell/cli/relay-registration.js +1 -0
- package/dist/server-shell/http/host-tunnel.d.ts +2 -1
- package/dist/server-shell/http/host-tunnel.js +4 -1
- package/dist/server-shell/http/integration-clarification-dispatch.d.ts +6 -0
- package/dist/server-shell/http/integration-clarification-dispatch.js +43 -0
- package/dist/server-shell/http/routes/project-api/clarification-routes.js +16 -42
- package/dist/server-shell/http/routes/project-api/openapi-collaboration-routes.d.ts +2 -0
- package/dist/server-shell/http/routes/project-api/openapi-workspace-routes.d.ts +1 -0
- package/dist/server-shell/http/routes/project-api/openapi.d.ts +3 -0
- package/dist/server-shell/http/routes/project-api/schemas.d.ts +1 -0
- package/migrations/0022_clarification_projection_cursors.sql +7 -0
- package/node_modules/@tutti/relay-client/dist/host-control.d.ts +1 -0
- package/node_modules/@tutti/relay-client/dist/host-control.js +3 -0
- package/node_modules/@tutti/shared/dist/schemas/api/clarifications.d.ts +13 -1
- package/node_modules/@tutti/shared/dist/schemas/api/clarifications.js +9 -2
- package/node_modules/@tutti/shared/dist/schemas/internal/index.d.ts +2 -0
- package/node_modules/@tutti/shared/dist/schemas/internal/index.js +2 -0
- package/node_modules/@tutti/shared/dist/schemas/internal/platform-clarification-content.d.ts +15 -0
- package/node_modules/@tutti/shared/dist/schemas/internal/platform-clarification-content.js +24 -0
- package/node_modules/@tutti/shared/dist/schemas/internal/platform-clarification.d.ts +354 -0
- package/node_modules/@tutti/shared/dist/schemas/internal/platform-clarification.js +94 -0
- package/node_modules/@tutti/shared/dist/schemas/internal/platform-integration.d.ts +89 -3
- package/node_modules/@tutti/shared/dist/schemas/internal/platform-integration.js +15 -3
- package/node_modules/@tutti/shared/dist/utils/clarification-participants.d.ts +4 -0
- package/node_modules/@tutti/shared/dist/utils/clarification-participants.js +11 -0
- package/node_modules/@tutti/shared/dist/utils/index.d.ts +1 -0
- package/node_modules/@tutti/shared/dist/utils/index.js +1 -0
- package/package.json +1 -1
- package/prompts/procedures/follow-up-check.md +4 -4
- package/web/assets/{homepage-motion-scene-TmkKf8wQ.js → homepage-motion-scene-BwdH6Iss.js} +1 -1
- package/web/assets/index-B29RuNsd.js +69 -0
- package/web/index.html +1 -1
- package/web/assets/index-B1oL1p9_.js +0 -69
|
@@ -1,9 +1,8 @@
|
|
|
1
1
|
import { ActiveClarificationProjectionSchema, GetClarificationRoundMessagesRequestSchema, GetClarificationRoundResponseSchema, GetClarificationThreadResponseSchema, MessageWindowSchema, SendClarificationRoundMessageBodySchema, SendClarificationRoundMessageResponseSchema, SubmitClarificationRoundBodySchema, SubmitClarificationRoundResponseSchema, } from "@tutti/shared/schemas/api";
|
|
2
2
|
import { readActiveClarificationProjection, readClarificationRoundMessagesWindow, readClarificationRoundProjection, readClarificationThreadResponse, } from "../../../../collaboration-state/index.js";
|
|
3
|
-
import {
|
|
3
|
+
import { ingestClarificationMessage, submitClarificationAnswers, } from "../../../../collaboration-ingestion/index.js";
|
|
4
4
|
import { HOST_PROJECT_API_BASE_PATH } from "./constants.js";
|
|
5
5
|
import { HostProjectNotFoundError } from "./errors.js";
|
|
6
|
-
import { clarificationRoundInvalidates } from "./invalidations.js";
|
|
7
6
|
import { requireValidMessageWindowRequest, requireValidRoundMessagePayload, } from "./payload-validation.js";
|
|
8
7
|
import { ClarificationRoundParamsSchema, ClarificationThreadParamsSchema, } from "./schemas.js";
|
|
9
8
|
import { requireControlPlane, requireHostProjectSession, requireProjectStore, } from "./session-requirements.js";
|
|
@@ -85,35 +84,20 @@ export function registerClarificationRoutes(app, options) {
|
|
|
85
84
|
const store = requireProjectStore(options);
|
|
86
85
|
const controlPlane = requireControlPlane(options);
|
|
87
86
|
const payload = requireValidRoundMessagePayload(request.body.payload);
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
payload
|
|
94
|
-
|
|
95
|
-
author_ref: session.account.account_ref,
|
|
96
|
-
},
|
|
97
|
-
...(options.now === undefined ? {} : { now: options.now }),
|
|
98
|
-
execute: () => controlPlane.sendClarificationRoundMessage(request.params.roundId, payload, {
|
|
87
|
+
return ingestClarificationMessage({
|
|
88
|
+
store,
|
|
89
|
+
controlPlane,
|
|
90
|
+
commandId: request.body.command_id,
|
|
91
|
+
roundId: request.params.roundId,
|
|
92
|
+
payload,
|
|
93
|
+
author: {
|
|
99
94
|
account_ref: session.account.account_ref,
|
|
100
95
|
display_name: session.account.display_name,
|
|
101
96
|
avatar: session.account.avatar,
|
|
102
|
-
}
|
|
97
|
+
},
|
|
98
|
+
...(options.now === undefined ? {} : { now: options.now }),
|
|
99
|
+
...(options.chatAssistant === undefined ? {} : { chatAssistant: options.chatAssistant }),
|
|
103
100
|
});
|
|
104
|
-
const response = {
|
|
105
|
-
command_id: execution.command_id,
|
|
106
|
-
disposition: execution.disposition,
|
|
107
|
-
invalidates: clarificationRoundInvalidates(request.params.roundId),
|
|
108
|
-
};
|
|
109
|
-
if (execution.result !== undefined) {
|
|
110
|
-
response.result = execution.result;
|
|
111
|
-
}
|
|
112
|
-
const message = execution.result?.message;
|
|
113
|
-
if (!execution.replayed && message !== undefined) {
|
|
114
|
-
options.chatAssistant?.enqueue({ message });
|
|
115
|
-
}
|
|
116
|
-
return response;
|
|
117
101
|
});
|
|
118
102
|
app.post(`${HOST_PROJECT_API_BASE_PATH}/clarifications/rounds/:roundId/submit`, {
|
|
119
103
|
schema: {
|
|
@@ -127,24 +111,14 @@ export function registerClarificationRoutes(app, options) {
|
|
|
127
111
|
requireHostProjectSession(request, options);
|
|
128
112
|
const store = requireProjectStore(options);
|
|
129
113
|
const controlPlane = requireControlPlane(options);
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
114
|
+
return submitClarificationAnswers({
|
|
115
|
+
store,
|
|
116
|
+
controlPlane,
|
|
117
|
+
commandId: request.body.command_id,
|
|
118
|
+
roundId: request.params.roundId,
|
|
135
119
|
payload: request.body.payload,
|
|
136
120
|
...(options.now === undefined ? {} : { now: options.now }),
|
|
137
|
-
execute: () => controlPlane.submitClarificationRound(request.params.roundId, request.body.payload, request.body.command_id),
|
|
138
121
|
});
|
|
139
|
-
const response = {
|
|
140
|
-
command_id: execution.command_id,
|
|
141
|
-
disposition: execution.disposition,
|
|
142
|
-
invalidates: clarificationRoundInvalidates(request.params.roundId),
|
|
143
|
-
};
|
|
144
|
-
if (execution.result !== undefined) {
|
|
145
|
-
response.result = execution.result;
|
|
146
|
-
}
|
|
147
|
-
return response;
|
|
148
122
|
});
|
|
149
123
|
}
|
|
150
124
|
//# sourceMappingURL=clarification-routes.js.map
|
|
@@ -266,6 +266,7 @@ export declare const HOST_PROJECT_COLLABORATION_OPENAPI_ROUTES: ({
|
|
|
266
266
|
}>;
|
|
267
267
|
card_message_id: import("@sinclair/typebox").TString;
|
|
268
268
|
opening_message_id: import("@sinclair/typebox").TString;
|
|
269
|
+
answer_revision: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TInteger>;
|
|
269
270
|
submitted_at: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
|
|
270
271
|
submitted_message_refs: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TArray<import("@sinclair/typebox").TString>>;
|
|
271
272
|
successor_status: import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TLiteral<"not_materialized">, import("@sinclair/typebox").TLiteral<"materialized">]>;
|
|
@@ -421,6 +422,7 @@ export declare const HOST_PROJECT_COLLABORATION_OPENAPI_ROUTES: ({
|
|
|
421
422
|
}>;
|
|
422
423
|
card_message_id: import("@sinclair/typebox").TString;
|
|
423
424
|
opening_message_id: import("@sinclair/typebox").TString;
|
|
425
|
+
answer_revision: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TInteger>;
|
|
424
426
|
submitted_at: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
|
|
425
427
|
submitted_message_refs: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TArray<import("@sinclair/typebox").TString>>;
|
|
426
428
|
successor_status: import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TLiteral<"not_materialized">, import("@sinclair/typebox").TLiteral<"materialized">]>;
|
|
@@ -1117,6 +1117,7 @@ export declare const HOST_PROJECT_WORKSPACE_OPENAPI_ROUTES: ({
|
|
|
1117
1117
|
}>;
|
|
1118
1118
|
card_message_id: import("@sinclair/typebox").TString;
|
|
1119
1119
|
opening_message_id: import("@sinclair/typebox").TString;
|
|
1120
|
+
answer_revision: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TInteger>;
|
|
1120
1121
|
submitted_at: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
|
|
1121
1122
|
submitted_message_refs: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TArray<import("@sinclair/typebox").TString>>;
|
|
1122
1123
|
successor_status: import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TLiteral<"not_materialized">, import("@sinclair/typebox").TLiteral<"materialized">]>;
|
|
@@ -410,6 +410,7 @@ export declare const HOST_PROJECT_OPENAPI_ROUTES: ({
|
|
|
410
410
|
}>;
|
|
411
411
|
card_message_id: import("@sinclair/typebox").TString;
|
|
412
412
|
opening_message_id: import("@sinclair/typebox").TString;
|
|
413
|
+
answer_revision: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TInteger>;
|
|
413
414
|
submitted_at: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
|
|
414
415
|
submitted_message_refs: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TArray<import("@sinclair/typebox").TString>>;
|
|
415
416
|
successor_status: import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TLiteral<"not_materialized">, import("@sinclair/typebox").TLiteral<"materialized">]>;
|
|
@@ -565,6 +566,7 @@ export declare const HOST_PROJECT_OPENAPI_ROUTES: ({
|
|
|
565
566
|
}>;
|
|
566
567
|
card_message_id: import("@sinclair/typebox").TString;
|
|
567
568
|
opening_message_id: import("@sinclair/typebox").TString;
|
|
569
|
+
answer_revision: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TInteger>;
|
|
568
570
|
submitted_at: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
|
|
569
571
|
submitted_message_refs: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TArray<import("@sinclair/typebox").TString>>;
|
|
570
572
|
successor_status: import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TLiteral<"not_materialized">, import("@sinclair/typebox").TLiteral<"materialized">]>;
|
|
@@ -2400,6 +2402,7 @@ export declare const HOST_PROJECT_OPENAPI_ROUTES: ({
|
|
|
2400
2402
|
}>;
|
|
2401
2403
|
card_message_id: import("@sinclair/typebox").TString;
|
|
2402
2404
|
opening_message_id: import("@sinclair/typebox").TString;
|
|
2405
|
+
answer_revision: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TInteger>;
|
|
2403
2406
|
submitted_at: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
|
|
2404
2407
|
submitted_message_refs: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TArray<import("@sinclair/typebox").TString>>;
|
|
2405
2408
|
successor_status: import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TLiteral<"not_materialized">, import("@sinclair/typebox").TLiteral<"materialized">]>;
|
|
@@ -1081,6 +1081,7 @@ export declare const BootstrapResponseSchema: {
|
|
|
1081
1081
|
}>;
|
|
1082
1082
|
card_message_id: import("@sinclair/typebox").TString;
|
|
1083
1083
|
opening_message_id: import("@sinclair/typebox").TString;
|
|
1084
|
+
answer_revision: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TInteger>;
|
|
1084
1085
|
submitted_at: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
|
|
1085
1086
|
submitted_message_refs: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TArray<import("@sinclair/typebox").TString>>;
|
|
1086
1087
|
successor_status: import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TLiteral<"not_materialized">, import("@sinclair/typebox").TLiteral<"materialized">]>;
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
CREATE TABLE platform_clarification_projection_cursors (
|
|
2
|
+
round_id TEXT PRIMARY KEY REFERENCES clarification_rounds(id),
|
|
3
|
+
binding_ref TEXT NOT NULL,
|
|
4
|
+
version INTEGER NOT NULL CHECK (version >= 0),
|
|
5
|
+
closed INTEGER NOT NULL DEFAULT 0 CHECK (closed IN (0, 1))
|
|
6
|
+
);
|
|
7
|
+
CREATE INDEX idx_platform_clarification_live ON platform_clarification_projection_cursors(closed);
|
|
@@ -45,6 +45,7 @@ export type RegisterRelayHostConnectionPayload = {
|
|
|
45
45
|
repo_viewer: boolean;
|
|
46
46
|
integration_source_ingestion_v1?: boolean;
|
|
47
47
|
integration_development_bot_v1?: boolean;
|
|
48
|
+
integration_clarification_v1?: boolean;
|
|
48
49
|
integration_external_references_v1?: boolean;
|
|
49
50
|
integration_attachment_ingestion_v1?: boolean;
|
|
50
51
|
integration_managed_reference_ingestion_v1?: boolean;
|
|
@@ -65,6 +65,9 @@ function createRegisterPayload(options) {
|
|
|
65
65
|
integration_managed_reference_ingestion_v1: capabilities.integration_managed_reference_ingestion_v1 ?? false,
|
|
66
66
|
integration_outbound_v1: capabilities.integration_outbound_v1 ?? false,
|
|
67
67
|
integration_approval_decision_v1: capabilities.integration_approval_decision_v1 ?? false,
|
|
68
|
+
...(capabilities.integration_clarification_v1 === true
|
|
69
|
+
? { integration_clarification_v1: true }
|
|
70
|
+
: {}),
|
|
68
71
|
},
|
|
69
72
|
},
|
|
70
73
|
};
|
|
@@ -201,6 +201,7 @@ export declare const ClarificationRoundProjectionSchema: import("@sinclair/typeb
|
|
|
201
201
|
}>;
|
|
202
202
|
card_message_id: import("@sinclair/typebox").TString;
|
|
203
203
|
opening_message_id: import("@sinclair/typebox").TString;
|
|
204
|
+
answer_revision: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TInteger>;
|
|
204
205
|
submitted_at: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
|
|
205
206
|
submitted_message_refs: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TArray<import("@sinclair/typebox").TString>>;
|
|
206
207
|
successor_status: import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TLiteral<"not_materialized">, import("@sinclair/typebox").TLiteral<"materialized">]>;
|
|
@@ -299,6 +300,7 @@ export declare const ActiveClarificationProjectionSchema: import("@sinclair/type
|
|
|
299
300
|
}>;
|
|
300
301
|
card_message_id: import("@sinclair/typebox").TString;
|
|
301
302
|
opening_message_id: import("@sinclair/typebox").TString;
|
|
303
|
+
answer_revision: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TInteger>;
|
|
302
304
|
submitted_at: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
|
|
303
305
|
submitted_message_refs: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TArray<import("@sinclair/typebox").TString>>;
|
|
304
306
|
successor_status: import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TLiteral<"not_materialized">, import("@sinclair/typebox").TLiteral<"materialized">]>;
|
|
@@ -437,6 +439,7 @@ export declare const GetClarificationRoundResponseSchema: import("@sinclair/type
|
|
|
437
439
|
}>;
|
|
438
440
|
card_message_id: import("@sinclair/typebox").TString;
|
|
439
441
|
opening_message_id: import("@sinclair/typebox").TString;
|
|
442
|
+
answer_revision: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TInteger>;
|
|
440
443
|
submitted_at: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
|
|
441
444
|
submitted_message_refs: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TArray<import("@sinclair/typebox").TString>>;
|
|
442
445
|
successor_status: import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TLiteral<"not_materialized">, import("@sinclair/typebox").TLiteral<"materialized">]>;
|
|
@@ -471,6 +474,7 @@ export declare const SendClarificationRoundMessagePayloadSchema: import("@sincla
|
|
|
471
474
|
}>;
|
|
472
475
|
export declare const SendClarificationRoundMessageDispositionSchema: import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TObject<{
|
|
473
476
|
kind: import("@sinclair/typebox").TLiteral<"created">;
|
|
477
|
+
message_id: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
|
|
474
478
|
}>, import("@sinclair/typebox").TObject<{
|
|
475
479
|
kind: import("@sinclair/typebox").TLiteral<"stale_round">;
|
|
476
480
|
current_round_id: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
|
|
@@ -706,9 +710,16 @@ export declare const SendClarificationRoundMessageResultSchema: import("@sinclai
|
|
|
706
710
|
}>;
|
|
707
711
|
export declare const SendClarificationRoundMessageBodySchema: import("@sinclair/typebox").TSchema;
|
|
708
712
|
export declare const SendClarificationRoundMessageResponseSchema: import("@sinclair/typebox").TSchema;
|
|
709
|
-
export declare const SubmitClarificationRoundPayloadSchema: import("@sinclair/typebox").TObject<{
|
|
713
|
+
export declare const SubmitClarificationRoundPayloadSchema: import("@sinclair/typebox").TObject<{
|
|
714
|
+
expected_answer_revision: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TInteger>;
|
|
715
|
+
}>;
|
|
710
716
|
export declare const SubmitClarificationRoundDispositionSchema: import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TObject<{
|
|
711
717
|
kind: import("@sinclair/typebox").TLiteral<"accepted">;
|
|
718
|
+
}>, import("@sinclair/typebox").TObject<{
|
|
719
|
+
kind: import("@sinclair/typebox").TLiteral<"no_answers">;
|
|
720
|
+
}>, import("@sinclair/typebox").TObject<{
|
|
721
|
+
kind: import("@sinclair/typebox").TLiteral<"answers_changed">;
|
|
722
|
+
current_answer_revision: import("@sinclair/typebox").TInteger;
|
|
712
723
|
}>, import("@sinclair/typebox").TObject<{
|
|
713
724
|
kind: import("@sinclair/typebox").TLiteral<"already_submitted">;
|
|
714
725
|
successor_status: import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TLiteral<"not_materialized">, import("@sinclair/typebox").TLiteral<"materialized">]>;
|
|
@@ -790,6 +801,7 @@ export declare const SubmitClarificationRoundResultSchema: import("@sinclair/typ
|
|
|
790
801
|
}>;
|
|
791
802
|
card_message_id: import("@sinclair/typebox").TString;
|
|
792
803
|
opening_message_id: import("@sinclair/typebox").TString;
|
|
804
|
+
answer_revision: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TInteger>;
|
|
793
805
|
submitted_at: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
|
|
794
806
|
submitted_message_refs: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TArray<import("@sinclair/typebox").TString>>;
|
|
795
807
|
successor_status: import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TLiteral<"not_materialized">, import("@sinclair/typebox").TLiteral<"materialized">]>;
|
|
@@ -119,6 +119,8 @@ export const ClarificationRoundProjectionSchema = Type.Object({
|
|
|
119
119
|
request_payload: ClarificationRequestPayloadSchema,
|
|
120
120
|
card_message_id: MessageIdSchema,
|
|
121
121
|
opening_message_id: MessageIdSchema,
|
|
122
|
+
// Append-only eligible answers. Optional for compatibility with older Hosts.
|
|
123
|
+
answer_revision: Type.Optional(Type.Integer({ minimum: 0 })),
|
|
122
124
|
submitted_at: Type.Optional(IsoDateTimeStringSchema),
|
|
123
125
|
submitted_message_refs: Type.Optional(Type.Array(MessageIdSchema)),
|
|
124
126
|
successor_status: Type.Union([Type.Literal("not_materialized"), Type.Literal("materialized")]),
|
|
@@ -168,7 +170,7 @@ export const SendClarificationRoundMessagePayloadSchema = Type.Object({
|
|
|
168
170
|
body: Type.String({ minLength: 1, maxLength: 8000 }),
|
|
169
171
|
}, { additionalProperties: false });
|
|
170
172
|
export const SendClarificationRoundMessageDispositionSchema = Type.Union([
|
|
171
|
-
Type.Object({ kind: Type.Literal("created") }, { additionalProperties: false }),
|
|
173
|
+
Type.Object({ kind: Type.Literal("created"), message_id: Type.Optional(MessageIdSchema) }, { additionalProperties: false }),
|
|
172
174
|
Type.Object({
|
|
173
175
|
kind: Type.Literal("stale_round"),
|
|
174
176
|
current_round_id: Type.Optional(ClarificationRoundRefSchema),
|
|
@@ -181,9 +183,14 @@ export const SendClarificationRoundMessageResultSchema = Type.Object({
|
|
|
181
183
|
}, { additionalProperties: false });
|
|
182
184
|
export const SendClarificationRoundMessageBodySchema = commandEnvelopeSchema(SendClarificationRoundMessagePayloadSchema);
|
|
183
185
|
export const SendClarificationRoundMessageResponseSchema = commandResponseWithResultSchema(SendClarificationRoundMessageDispositionSchema, SendClarificationRoundMessageResultSchema);
|
|
184
|
-
export const SubmitClarificationRoundPayloadSchema = Type.Object({}, { additionalProperties: false });
|
|
186
|
+
export const SubmitClarificationRoundPayloadSchema = Type.Object({ expected_answer_revision: Type.Optional(Type.Integer({ minimum: 0 })) }, { additionalProperties: false });
|
|
185
187
|
export const SubmitClarificationRoundDispositionSchema = Type.Union([
|
|
186
188
|
Type.Object({ kind: Type.Literal("accepted") }, { additionalProperties: false }),
|
|
189
|
+
Type.Object({ kind: Type.Literal("no_answers") }, { additionalProperties: false }),
|
|
190
|
+
Type.Object({
|
|
191
|
+
kind: Type.Literal("answers_changed"),
|
|
192
|
+
current_answer_revision: Type.Integer({ minimum: 0 }),
|
|
193
|
+
}, { additionalProperties: false }),
|
|
187
194
|
Type.Object({
|
|
188
195
|
kind: Type.Literal("already_submitted"),
|
|
189
196
|
successor_status: Type.Union([
|
|
@@ -75,4 +75,6 @@ export * from "./platform-integration.js";
|
|
|
75
75
|
export * from "./feishu-user-credentials.js";
|
|
76
76
|
export * from "./feishu-documents.js";
|
|
77
77
|
export * from "./external-references.js";
|
|
78
|
+
export * from "./platform-clarification-content.js";
|
|
79
|
+
export * from "./platform-clarification.js";
|
|
78
80
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -69,4 +69,6 @@ export * from "./platform-integration.js";
|
|
|
69
69
|
export * from "./feishu-user-credentials.js";
|
|
70
70
|
export * from "./feishu-documents.js";
|
|
71
71
|
export * from "./external-references.js";
|
|
72
|
+
export * from "./platform-clarification-content.js";
|
|
73
|
+
export * from "./platform-clarification.js";
|
|
72
74
|
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import type { Static } from "@sinclair/typebox";
|
|
2
|
+
/** Immutable request plus a monotonic Host projection, never Integration-owned round truth. */
|
|
3
|
+
export declare const PlatformClarificationContentSchema: import("@sinclair/typebox").TObject<{
|
|
4
|
+
kind: import("@sinclair/typebox").TLiteral<"clarification">;
|
|
5
|
+
round_id: import("@sinclair/typebox").TString;
|
|
6
|
+
version: import("@sinclair/typebox").TInteger;
|
|
7
|
+
answer_revision: import("@sinclair/typebox").TInteger;
|
|
8
|
+
closed_reason: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TLiteral<"resolved">, import("@sinclair/typebox").TLiteral<"contract_changed">, import("@sinclair/typebox").TLiteral<"cancelled">]>>;
|
|
9
|
+
state: import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TLiteral<"writable">, import("@sinclair/typebox").TLiteral<"submitted">, import("@sinclair/typebox").TLiteral<"continued">, import("@sinclair/typebox").TLiteral<"closed">]>;
|
|
10
|
+
title: import("@sinclair/typebox").TString;
|
|
11
|
+
request: import("@sinclair/typebox").TString;
|
|
12
|
+
opened_at: import("@sinclair/typebox").TString;
|
|
13
|
+
}>;
|
|
14
|
+
export type PlatformClarificationContent = Static<typeof PlatformClarificationContentSchema>;
|
|
15
|
+
//# sourceMappingURL=platform-clarification-content.d.ts.map
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import { Type } from "@sinclair/typebox";
|
|
2
|
+
import { ClarificationRoundRefSchema, IsoDateTimeStringSchema } from "../domain/index.js";
|
|
3
|
+
/** Immutable request plus a monotonic Host projection, never Integration-owned round truth. */
|
|
4
|
+
export const PlatformClarificationContentSchema = Type.Object({
|
|
5
|
+
kind: Type.Literal("clarification"),
|
|
6
|
+
round_id: ClarificationRoundRefSchema,
|
|
7
|
+
version: Type.Integer({ minimum: 0 }),
|
|
8
|
+
answer_revision: Type.Integer({ minimum: 0 }),
|
|
9
|
+
closed_reason: Type.Optional(Type.Union([
|
|
10
|
+
Type.Literal("resolved"),
|
|
11
|
+
Type.Literal("contract_changed"),
|
|
12
|
+
Type.Literal("cancelled"),
|
|
13
|
+
])),
|
|
14
|
+
state: Type.Union([
|
|
15
|
+
Type.Literal("writable"),
|
|
16
|
+
Type.Literal("submitted"),
|
|
17
|
+
Type.Literal("continued"),
|
|
18
|
+
Type.Literal("closed"),
|
|
19
|
+
]),
|
|
20
|
+
title: Type.String({ minLength: 1, maxLength: 512 }),
|
|
21
|
+
request: Type.String({ minLength: 1, maxLength: 4_000 }),
|
|
22
|
+
opened_at: IsoDateTimeStringSchema,
|
|
23
|
+
}, { additionalProperties: false });
|
|
24
|
+
//# sourceMappingURL=platform-clarification-content.js.map
|