@xfey/tutti 0.1.21 → 0.1.22

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 (33) hide show
  1. package/dist/collaboration-state/index.d.ts +1 -1
  2. package/dist/collaboration-state/index.js +1 -1
  3. package/dist/collaboration-state/messages.js +50 -1
  4. package/dist/collaboration-state/scratchpad.d.ts +2 -0
  5. package/dist/collaboration-state/scratchpad.js +63 -0
  6. package/dist/collaboration-state/storage-types.d.ts +5 -0
  7. package/dist/collaboration-state/types.d.ts +8 -1
  8. package/dist/control-plane/scratchpad-refresh-start.d.ts +2 -0
  9. package/dist/control-plane/scratchpad-refresh-start.js +10 -0
  10. package/dist/control-plane/scratchpad-refresh.d.ts +2 -0
  11. package/dist/control-plane/scratchpad-refresh.js +1 -0
  12. package/dist/project-timeline/index.d.ts +17 -3
  13. package/dist/server-shell/http/routes/project-api/openapi-collaboration-routes.d.ts +1 -0
  14. package/dist/server-shell/http/routes/project-api/openapi-timeline-routes.d.ts +94 -5
  15. package/dist/server-shell/http/routes/project-api/openapi.d.ts +95 -5
  16. package/dist/server-shell/http/routes/project-api/payload-validation.d.ts +6 -2
  17. package/dist/server-shell/http/routes/project-api/payload-validation.js +3 -0
  18. package/dist/server-shell/http/routes/project-api/project-timeline-projection.js +694 -502
  19. package/migrations/0013_scratchpad_receipt_sources.sql +24 -0
  20. package/migrations/README.md +3 -2
  21. package/node_modules/@tutti/shared/dist/schemas/api/index.d.ts +1 -1
  22. package/node_modules/@tutti/shared/dist/schemas/api/index.js +1 -1
  23. package/node_modules/@tutti/shared/dist/schemas/api/messages.d.ts +1 -0
  24. package/node_modules/@tutti/shared/dist/schemas/api/messages.js +1 -0
  25. package/node_modules/@tutti/shared/dist/schemas/api/project-timeline.d.ts +313 -12
  26. package/node_modules/@tutti/shared/dist/schemas/api/project-timeline.js +131 -14
  27. package/node_modules/@tutti/shared/dist/schemas/api/types.d.ts +5 -1
  28. package/package.json +1 -1
  29. package/web/assets/index-BfFYfzeO.js +29 -0
  30. package/web/assets/index-De6mK5Q2.css +1 -0
  31. package/web/index.html +2 -2
  32. package/web/assets/index-BtneECwp.js +0 -29
  33. package/web/assets/index-CM9mbbeW.css +0 -1
@@ -0,0 +1,24 @@
1
+ CREATE TABLE IF NOT EXISTS scratchpad_source_refs (
2
+ scratchpad_id TEXT NOT NULL DEFAULT 'current' CHECK (scratchpad_id = 'current'),
3
+ message_id TEXT NOT NULL,
4
+ source_scope TEXT NOT NULL CHECK (source_scope IN ('main_chat', 'clarification_round')),
5
+ created_at TEXT NOT NULL,
6
+ PRIMARY KEY (scratchpad_id, message_id),
7
+ FOREIGN KEY (message_id) REFERENCES messages(id) ON DELETE CASCADE
8
+ );
9
+
10
+ CREATE INDEX IF NOT EXISTS idx_scratchpad_source_refs_created_at
11
+ ON scratchpad_source_refs (scratchpad_id, created_at ASC, message_id ASC);
12
+
13
+ CREATE TABLE IF NOT EXISTS scratchpad_receipt_sources (
14
+ workflow_ref TEXT NOT NULL,
15
+ message_id TEXT NOT NULL,
16
+ source_scope TEXT NOT NULL CHECK (source_scope IN ('main_chat', 'clarification_round')),
17
+ created_at TEXT NOT NULL,
18
+ PRIMARY KEY (workflow_ref, message_id),
19
+ FOREIGN KEY (workflow_ref) REFERENCES scratchpad_receipts(workflow_ref) ON DELETE CASCADE,
20
+ FOREIGN KEY (message_id) REFERENCES messages(id) ON DELETE CASCADE
21
+ );
22
+
23
+ CREATE INDEX IF NOT EXISTS idx_scratchpad_receipt_sources_created_at
24
+ ON scratchpad_receipt_sources (workflow_ref, created_at ASC, message_id ASC);
@@ -25,12 +25,13 @@
25
25
  - `0010_project_brief.sql`:新增 host-local Project Brief projection 表,用于保存四个 baseline Project Docs 的短摘要和 source fingerprint。
26
26
  - `0011_message_author_avatar.sql`:为消息作者增加可选 Relay account avatar 快照,保证跨浏览器查看历史消息时不依赖当前 viewer profile 或 presence sample。
27
27
  - `0012_scratchpad_receipts.sql`:为当前 Scratchpad 增加 `submitted` 状态字段,并新增已提交 Scratchpad 小票历史表。
28
+ - `0013_scratchpad_receipt_sources.sql`:新增当前 Scratchpad snapshot 与 submitted receipt 的 source message id 引用表,供 Timeline Task Accepted 追溯原始聊天依据。
28
29
 
29
30
  ## 当前实现状态
30
31
 
31
- - `0001_init.sql`、`0002_allow_sealed_round_successor_note.sql`、`0003_drop_scratchpad_source_message_refs.sql`、`0004_read_state.sql`、`0005_provider_usage.sql`、`0006_scratchpad_source_state.sql`、`0007_workspace_signal_read_state_scopes.sql`、`0008_provider_usage_anchors.sql`、`0009_project_timeline_events.sql`、`0010_project_brief.sql`、`0011_message_author_avatar.sql` 与 `0012_scratchpad_receipts.sql` 已存在,代表当前 host project SQLite schema contract。
32
+ - `0001_init.sql`、`0002_allow_sealed_round_successor_note.sql`、`0003_drop_scratchpad_source_message_refs.sql`、`0004_read_state.sql`、`0005_provider_usage.sql`、`0006_scratchpad_source_state.sql`、`0007_workspace_signal_read_state_scopes.sql`、`0008_provider_usage_anchors.sql`、`0009_project_timeline_events.sql`、`0010_project_brief.sql`、`0011_message_author_avatar.sql`、`0012_scratchpad_receipts.sql` 与 `0013_scratchpad_receipt_sources.sql` 已存在,代表当前 host project SQLite schema contract。
32
33
  - SQLite adapter、migration runner、checksum 校验、store metadata 初始化、transaction helper 与 command recovery scan helper 已实现。
33
- - 协作 repository 与 Control Plane 已实现第一批业务读写;Phase 7 首批已复用 `0001_init.sql` 中的 `tasks.latest_run_result_id`、`task_details.result_json` 与 `run_results` 表完成 Run result / checks / promotion 摘要持久化。Control Plane recovery resolver 与 task-bound continuation / retry 复用现有 schema;deterministic promotion reconcile 的业务 truth 仍写入最终 Run result / task detail result,Timeline 轻量节点写入 `project_timeline_events`,merge workspace 不进入 SQLite truth。`provider_usage_events` 只保存 token 计数、调用来源、模型名、记录时间和可空 anchor,不保存 provider secret、prompt 或 raw response。store 基础设施本身已经可以创建并迁移 `tutti.sqlite`。
34
+ - 协作 repository 与 Control Plane 已实现第一批业务读写;Phase 7 首批已复用 `0001_init.sql` 中的 `tasks.latest_run_result_id`、`task_details.result_json` 与 `run_results` 表完成 Run result / checks / promotion 摘要持久化。Control Plane recovery resolver 与 task-bound continuation / retry 复用现有 schema;deterministic promotion reconcile 的业务 truth 仍写入最终 Run result / task detail result,Timeline 默认从 `tasks`、`run_results` 与主群聊 `refs.worklist_feedback` 投影三类任务级审计节点,`project_timeline_events` 只保留缺少稳定 record 的轻量可观测性事件。merge workspace 不进入 SQLite truth。`provider_usage_events` 只保存 token 计数、调用来源、模型名、记录时间和可空 anchor,不保存 provider secret、prompt 或 raw response。store 基础设施本身已经可以创建并迁移 `tutti.sqlite`。
34
35
 
35
36
  ## PRAGMA 边界
36
37
 
@@ -3,7 +3,7 @@ export type * from "./types.js";
3
3
  export { ApiErrorCodeSchema, ApiErrorResponseSchema, CommandDispositionBaseSchema, CursorPageRequestSchema, DEFAULT_SSE_REPLAY_WINDOW_POLICY, InterruptedCommandDispositionSchema, QueryInvalidationHintSchema, RelayInvalidationHintSchema, RelaySseEventTypeSchema, SseReplayWindowPolicySchema, WorkspaceSseEventTypeSchema, commandEnvelopeSchema, commandResponseSchema, commandResponseWithResultSchema, cursorPageSchema, relaySseEventSchema, timelineWindowSchema, workspaceSseEventSchema, } from "./primitives.js";
4
4
  export { ProviderConfigInvalidReasonCodeSchema, ProviderConfigProjectionSchema, ProviderUnavailableReasonCodeSchema, } from "./provider-config.js";
5
5
  export { ProviderUsageBreakdownProjectionSchema, ProviderUsageCategorySchema, ProviderUsageModelSummaryProjectionSchema, ProviderUsageProjectionSchema, ProviderUsageSourceSummaryProjectionSchema, } from "./provider-usage.js";
6
- export { ProjectTimelineItemKindSchema, ProjectTimelineItemSchema, ProjectTimelineItemStatusSchema, ProjectTimelineResponseSchema, } from "./project-timeline.js";
6
+ export { ProjectTimelineChangeStatusSchema, ProjectTimelineClarificationTraceSchema, ProjectTimelineDecisionSummarySchema, ProjectTimelineItemKindSchema, ProjectTimelineItemSchema, ProjectTimelineItemStatusSchema, ProjectTimelineResponseSchema, ProjectTimelineSourceSnippetSchema, ProjectTimelineTaskUpdateStateSchema, ProjectTimelineTraceCardSchema, ProjectTimelineTraceLinkSchema, ProjectTimelineTraceToneSchema, } from "./project-timeline.js";
7
7
  export { MAX_REFERENCE_STAGED_UPLOAD_BYTES, MAX_SKILL_ZIP_STAGED_UPLOAD_BYTES, MAX_STAGED_UPLOAD_BYTES, PresignedUploadPutSchema, ReferenceFileStartRelayUploadPayloadSchema, ReferenceStagedUploadReferenceProperties, RelayUploadProjectionSchema, RelayUploadPurposeSchema, Sha256DigestSchema, SkillZipStartRelayUploadPayloadSchema, SkillZipStagedUploadReferenceProperties, StagedUploadReferenceProperties, StagedUploadReferenceSchema, StartRelayUploadBodySchema, StartRelayUploadDispositionSchema, StartRelayUploadPayloadSchema, StartRelayUploadResponseSchema, StartRelayUploadResultSchema, maxStagedUploadBytesForPurpose, } from "./uploads.js";
8
8
  export { MarkReadBodySchema, MarkReadDispositionSchema, MarkReadPayloadSchema, MarkReadResponseSchema, MarkReadResultSchema, ReadStateScopeProjectionSchema, ReadStateScopeSchema, ReadStateSummaryProjectionSchema, } from "./read-state.js";
9
9
  export { GetMessagesRequestSchema, MessageAuthorSchema, MessageCreatedEventPayloadSchema, MessageKindSchema, MessageProjectionSchema, MessageReferenceFileRefSchema, MessageRefsSchema, MessageScopeSchema, MessageWindowSchema, ReferenceFileCategorySchema, SendMainChatMessageBodySchema, SendMainChatMessageCreatedDispositionSchema, SendMainChatMessageDispositionSchema, SendMainChatMessagePayloadSchema, SendMainChatMessageResponseSchema, SendMainChatMessageResultSchema, WorklistFeedbackItemSchema, WorklistFeedbackGeneratedFileSchema, WorklistFeedbackRefSchema, } from "./messages.js";
@@ -2,7 +2,7 @@ export * from "./openapi.js";
2
2
  export { ApiErrorCodeSchema, ApiErrorResponseSchema, CommandDispositionBaseSchema, CursorPageRequestSchema, DEFAULT_SSE_REPLAY_WINDOW_POLICY, InterruptedCommandDispositionSchema, QueryInvalidationHintSchema, RelayInvalidationHintSchema, RelaySseEventTypeSchema, SseReplayWindowPolicySchema, WorkspaceSseEventTypeSchema, commandEnvelopeSchema, commandResponseSchema, commandResponseWithResultSchema, cursorPageSchema, relaySseEventSchema, timelineWindowSchema, workspaceSseEventSchema, } from "./primitives.js";
3
3
  export { ProviderConfigInvalidReasonCodeSchema, ProviderConfigProjectionSchema, ProviderUnavailableReasonCodeSchema, } from "./provider-config.js";
4
4
  export { ProviderUsageBreakdownProjectionSchema, ProviderUsageCategorySchema, ProviderUsageModelSummaryProjectionSchema, ProviderUsageProjectionSchema, ProviderUsageSourceSummaryProjectionSchema, } from "./provider-usage.js";
5
- export { ProjectTimelineItemKindSchema, ProjectTimelineItemSchema, ProjectTimelineItemStatusSchema, ProjectTimelineResponseSchema, } from "./project-timeline.js";
5
+ export { ProjectTimelineChangeStatusSchema, ProjectTimelineClarificationTraceSchema, ProjectTimelineDecisionSummarySchema, ProjectTimelineItemKindSchema, ProjectTimelineItemSchema, ProjectTimelineItemStatusSchema, ProjectTimelineResponseSchema, ProjectTimelineSourceSnippetSchema, ProjectTimelineTaskUpdateStateSchema, ProjectTimelineTraceCardSchema, ProjectTimelineTraceLinkSchema, ProjectTimelineTraceToneSchema, } from "./project-timeline.js";
6
6
  export { MAX_REFERENCE_STAGED_UPLOAD_BYTES, MAX_SKILL_ZIP_STAGED_UPLOAD_BYTES, MAX_STAGED_UPLOAD_BYTES, PresignedUploadPutSchema, ReferenceFileStartRelayUploadPayloadSchema, ReferenceStagedUploadReferenceProperties, RelayUploadProjectionSchema, RelayUploadPurposeSchema, Sha256DigestSchema, SkillZipStartRelayUploadPayloadSchema, SkillZipStagedUploadReferenceProperties, StagedUploadReferenceProperties, StagedUploadReferenceSchema, StartRelayUploadBodySchema, StartRelayUploadDispositionSchema, StartRelayUploadPayloadSchema, StartRelayUploadResponseSchema, StartRelayUploadResultSchema, maxStagedUploadBytesForPurpose, } from "./uploads.js";
7
7
  export { MarkReadBodySchema, MarkReadDispositionSchema, MarkReadPayloadSchema, MarkReadResponseSchema, MarkReadResultSchema, ReadStateScopeProjectionSchema, ReadStateScopeSchema, ReadStateSummaryProjectionSchema, } from "./read-state.js";
8
8
  export { GetMessagesRequestSchema, MessageAuthorSchema, MessageCreatedEventPayloadSchema, MessageKindSchema, MessageProjectionSchema, MessageReferenceFileRefSchema, MessageRefsSchema, MessageScopeSchema, MessageWindowSchema, ReferenceFileCategorySchema, SendMainChatMessageBodySchema, SendMainChatMessageCreatedDispositionSchema, SendMainChatMessageDispositionSchema, SendMainChatMessagePayloadSchema, SendMainChatMessageResponseSchema, SendMainChatMessageResultSchema, WorklistFeedbackItemSchema, WorklistFeedbackGeneratedFileSchema, WorklistFeedbackRefSchema, } from "./messages.js";
@@ -329,6 +329,7 @@ export declare const GetMessagesRequestSchema: import("@sinclair/typebox").TObje
329
329
  anchor: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TLiteral<"latest">, import("@sinclair/typebox").TLiteral<"start">]>>;
330
330
  before: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
331
331
  after: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
332
+ around: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
332
333
  }>;
333
334
  export declare const SendMainChatMessageBodySchema: import("@sinclair/typebox").TSchema;
334
335
  export declare const SendMainChatMessageResponseSchema: import("@sinclair/typebox").TSchema;
@@ -135,6 +135,7 @@ export const GetMessagesRequestSchema = Type.Object({
135
135
  anchor: Type.Optional(Type.Union([Type.Literal("latest"), Type.Literal("start")])),
136
136
  before: Type.Optional(CursorSchema),
137
137
  after: Type.Optional(CursorSchema),
138
+ around: Type.Optional(MessageIdSchema),
138
139
  }, { additionalProperties: false });
139
140
  export const SendMainChatMessageBodySchema = commandEnvelopeSchema(SendMainChatMessagePayloadSchema);
140
141
  export const SendMainChatMessageResponseSchema = commandResponseWithResultSchema(SendMainChatMessageDispositionSchema, SendMainChatMessageResultSchema);
@@ -1,8 +1,131 @@
1
- export declare const ProjectTimelineItemKindSchema: import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TLiteral<"run">, import("@sinclair/typebox").TLiteral<"procedure">, import("@sinclair/typebox").TLiteral<"commit">, import("@sinclair/typebox").TLiteral<"usage">, import("@sinclair/typebox").TLiteral<"clarification">, import("@sinclair/typebox").TLiteral<"checks">, import("@sinclair/typebox").TLiteral<"promotion">, import("@sinclair/typebox").TLiteral<"recovery">]>;
2
- export declare const ProjectTimelineItemStatusSchema: import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TLiteral<"running">, import("@sinclair/typebox").TLiteral<"completed">, import("@sinclair/typebox").TLiteral<"failed">, import("@sinclair/typebox").TLiteral<"needs_human">, import("@sinclair/typebox").TLiteral<"skipped">]>;
1
+ export declare const ProjectTimelineItemKindSchema: import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TLiteral<"task_accepted">, import("@sinclair/typebox").TLiteral<"task_update">, import("@sinclair/typebox").TLiteral<"checkpoint">]>;
2
+ export declare const ProjectTimelineItemStatusSchema: import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TLiteral<"completed">, import("@sinclair/typebox").TLiteral<"failed">, import("@sinclair/typebox").TLiteral<"needs_human">]>;
3
+ export declare const ProjectTimelineTaskUpdateStateSchema: import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TLiteral<"needs_input">, import("@sinclair/typebox").TLiteral<"completed">, import("@sinclair/typebox").TLiteral<"failed">]>;
4
+ export declare const ProjectTimelineTraceToneSchema: import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TLiteral<"neutral">, import("@sinclair/typebox").TLiteral<"success">, import("@sinclair/typebox").TLiteral<"warning">, import("@sinclair/typebox").TLiteral<"error">]>;
5
+ export declare const ProjectTimelineTraceLinkSchema: import("@sinclair/typebox").TObject<{
6
+ kind: import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TLiteral<"worklist_task">, import("@sinclair/typebox").TLiteral<"chat_message">, import("@sinclair/typebox").TLiteral<"reference_file">, import("@sinclair/typebox").TLiteral<"repo_path">]>;
7
+ label: import("@sinclair/typebox").TString;
8
+ task_id: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
9
+ message_id: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
10
+ path: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
11
+ }>;
12
+ export declare const ProjectTimelineSourceSnippetSchema: import("@sinclair/typebox").TObject<{
13
+ message_id: import("@sinclair/typebox").TString;
14
+ author: import("@sinclair/typebox").TString;
15
+ body: import("@sinclair/typebox").TString;
16
+ created_at: import("@sinclair/typebox").TString;
17
+ }>;
18
+ export declare const ProjectTimelineDecisionSummarySchema: import("@sinclair/typebox").TObject<{
19
+ title: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
20
+ summary: import("@sinclair/typebox").TString;
21
+ source: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TLiteral<"scratchpad">, import("@sinclair/typebox").TLiteral<"clarification">, import("@sinclair/typebox").TLiteral<"contract">]>>;
22
+ }>;
23
+ export declare const ProjectTimelineClarificationTraceSchema: import("@sinclair/typebox").TObject<{
24
+ title: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
25
+ summary: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
26
+ request: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
27
+ status: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TLiteral<"active">, import("@sinclair/typebox").TLiteral<"resolved">]>>;
28
+ answer_count: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TInteger>;
29
+ answers: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TArray<import("@sinclair/typebox").TObject<{
30
+ message_id: import("@sinclair/typebox").TString;
31
+ author: import("@sinclair/typebox").TString;
32
+ body: import("@sinclair/typebox").TString;
33
+ created_at: import("@sinclair/typebox").TString;
34
+ }>>>;
35
+ }>;
36
+ export declare const ProjectTimelineChangeStatusSchema: import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TLiteral<"added">, import("@sinclair/typebox").TLiteral<"modified">, import("@sinclair/typebox").TLiteral<"deleted">, import("@sinclair/typebox").TLiteral<"renamed">, import("@sinclair/typebox").TLiteral<"unknown">]>;
37
+ export declare const ProjectTimelineTraceCardSchema: import("@sinclair/typebox").TObject<{
38
+ tone: import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TLiteral<"neutral">, import("@sinclair/typebox").TLiteral<"success">, import("@sinclair/typebox").TLiteral<"warning">, import("@sinclair/typebox").TLiteral<"error">]>;
39
+ summary: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
40
+ origin: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TObject<{
41
+ title: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
42
+ summary: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
43
+ snippets: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TArray<import("@sinclair/typebox").TObject<{
44
+ message_id: import("@sinclair/typebox").TString;
45
+ author: import("@sinclair/typebox").TString;
46
+ body: import("@sinclair/typebox").TString;
47
+ created_at: import("@sinclair/typebox").TString;
48
+ }>>>;
49
+ source_count: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TInteger>;
50
+ unavailable_reason: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
51
+ }>>;
52
+ decisions: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TArray<import("@sinclair/typebox").TObject<{
53
+ title: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
54
+ summary: import("@sinclair/typebox").TString;
55
+ source: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TLiteral<"scratchpad">, import("@sinclair/typebox").TLiteral<"clarification">, import("@sinclair/typebox").TLiteral<"contract">]>>;
56
+ }>>>;
57
+ clarification: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TObject<{
58
+ title: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
59
+ summary: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
60
+ request: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
61
+ status: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TLiteral<"active">, import("@sinclair/typebox").TLiteral<"resolved">]>>;
62
+ answer_count: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TInteger>;
63
+ answers: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TArray<import("@sinclair/typebox").TObject<{
64
+ message_id: import("@sinclair/typebox").TString;
65
+ author: import("@sinclair/typebox").TString;
66
+ body: import("@sinclair/typebox").TString;
67
+ created_at: import("@sinclair/typebox").TString;
68
+ }>>>;
69
+ }>>;
70
+ contract: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TObject<{
71
+ goal: import("@sinclair/typebox").TString;
72
+ scope: import("@sinclair/typebox").TArray<import("@sinclair/typebox").TString>;
73
+ truncated: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TBoolean>;
74
+ }>>;
75
+ result: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TObject<{
76
+ summary: import("@sinclair/typebox").TString;
77
+ error_code: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
78
+ }>>;
79
+ changes: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TObject<{
80
+ items: import("@sinclair/typebox").TArray<import("@sinclair/typebox").TObject<{
81
+ status: import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TLiteral<"added">, import("@sinclair/typebox").TLiteral<"modified">, import("@sinclair/typebox").TLiteral<"deleted">, import("@sinclair/typebox").TLiteral<"renamed">, import("@sinclair/typebox").TLiteral<"unknown">]>;
82
+ path: import("@sinclair/typebox").TString;
83
+ previous_path: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
84
+ }>>;
85
+ total_count: import("@sinclair/typebox").TInteger;
86
+ truncated: import("@sinclair/typebox").TBoolean;
87
+ }>>;
88
+ verification: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TObject<{
89
+ checks: import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TLiteral<"passed">, import("@sinclair/typebox").TLiteral<"failed">, import("@sinclair/typebox").TLiteral<"skipped">]>;
90
+ skip_reason_code: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
91
+ skip_reason_summary: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
92
+ }>>;
93
+ promotion: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TObject<{
94
+ status: import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TLiteral<"promoted">, import("@sinclair/typebox").TLiteral<"not_promoted">, import("@sinclair/typebox").TLiteral<"not_attempted">]>;
95
+ commit_oid: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
96
+ commit_short_oid: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
97
+ summary: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
98
+ reason_code: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
99
+ }>>;
100
+ checkpoint: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TObject<{
101
+ counters: import("@sinclair/typebox").TObject<{
102
+ completed: import("@sinclair/typebox").TInteger;
103
+ failed: import("@sinclair/typebox").TInteger;
104
+ remaining: import("@sinclair/typebox").TInteger;
105
+ }>;
106
+ items: import("@sinclair/typebox").TArray<import("@sinclair/typebox").TObject<{
107
+ task_id: import("@sinclair/typebox").TString;
108
+ title: import("@sinclair/typebox").TString;
109
+ status: import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TLiteral<"done">, import("@sinclair/typebox").TLiteral<"failed">]>;
110
+ summary: import("@sinclair/typebox").TString;
111
+ }>>;
112
+ generated_files: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TArray<import("@sinclair/typebox").TObject<{
113
+ path: import("@sinclair/typebox").TString;
114
+ name: import("@sinclair/typebox").TString;
115
+ }>>>;
116
+ truncated: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TBoolean>;
117
+ }>>;
118
+ links: import("@sinclair/typebox").TArray<import("@sinclair/typebox").TObject<{
119
+ kind: import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TLiteral<"worklist_task">, import("@sinclair/typebox").TLiteral<"chat_message">, import("@sinclair/typebox").TLiteral<"reference_file">, import("@sinclair/typebox").TLiteral<"repo_path">]>;
120
+ label: import("@sinclair/typebox").TString;
121
+ task_id: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
122
+ message_id: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
123
+ path: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
124
+ }>>;
125
+ }>;
3
126
  export declare const ProjectTimelineItemSchema: import("@sinclair/typebox").TObject<{
4
127
  id: import("@sinclair/typebox").TString;
5
- kind: import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TLiteral<"run">, import("@sinclair/typebox").TLiteral<"procedure">, import("@sinclair/typebox").TLiteral<"commit">, import("@sinclair/typebox").TLiteral<"usage">, import("@sinclair/typebox").TLiteral<"clarification">, import("@sinclair/typebox").TLiteral<"checks">, import("@sinclair/typebox").TLiteral<"promotion">, import("@sinclair/typebox").TLiteral<"recovery">]>;
128
+ kind: import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TLiteral<"task_accepted">, import("@sinclair/typebox").TLiteral<"task_update">, import("@sinclair/typebox").TLiteral<"checkpoint">]>;
6
129
  occurred_at: import("@sinclair/typebox").TString;
7
130
  title: import("@sinclair/typebox").TString;
8
131
  summary: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
@@ -10,9 +133,10 @@ export declare const ProjectTimelineItemSchema: import("@sinclair/typebox").TObj
10
133
  task_title: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
11
134
  activity_ref: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
12
135
  workflow_ref: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
13
- commit_oid: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
14
- commit_short_oid: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
15
- status: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TLiteral<"running">, import("@sinclair/typebox").TLiteral<"completed">, import("@sinclair/typebox").TLiteral<"failed">, import("@sinclair/typebox").TLiteral<"needs_human">, import("@sinclair/typebox").TLiteral<"skipped">]>>;
136
+ run_result_id: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
137
+ message_id: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
138
+ status: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TLiteral<"completed">, import("@sinclair/typebox").TLiteral<"failed">, import("@sinclair/typebox").TLiteral<"needs_human">]>>;
139
+ update_state: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TLiteral<"needs_input">, import("@sinclair/typebox").TLiteral<"completed">, import("@sinclair/typebox").TLiteral<"failed">]>>;
16
140
  token_usage: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TObject<{
17
141
  input_tokens: import("@sinclair/typebox").TInteger;
18
142
  cached_input_tokens: import("@sinclair/typebox").TInteger;
@@ -41,7 +165,95 @@ export declare const ProjectTimelineItemSchema: import("@sinclair/typebox").TObj
41
165
  total_tokens: import("@sinclair/typebox").TInteger;
42
166
  event_count: import("@sinclair/typebox").TInteger;
43
167
  }>>>;
44
- meta: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TArray<import("@sinclair/typebox").TString>>;
168
+ trace_card: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TObject<{
169
+ tone: import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TLiteral<"neutral">, import("@sinclair/typebox").TLiteral<"success">, import("@sinclair/typebox").TLiteral<"warning">, import("@sinclair/typebox").TLiteral<"error">]>;
170
+ summary: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
171
+ origin: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TObject<{
172
+ title: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
173
+ summary: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
174
+ snippets: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TArray<import("@sinclair/typebox").TObject<{
175
+ message_id: import("@sinclair/typebox").TString;
176
+ author: import("@sinclair/typebox").TString;
177
+ body: import("@sinclair/typebox").TString;
178
+ created_at: import("@sinclair/typebox").TString;
179
+ }>>>;
180
+ source_count: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TInteger>;
181
+ unavailable_reason: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
182
+ }>>;
183
+ decisions: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TArray<import("@sinclair/typebox").TObject<{
184
+ title: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
185
+ summary: import("@sinclair/typebox").TString;
186
+ source: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TLiteral<"scratchpad">, import("@sinclair/typebox").TLiteral<"clarification">, import("@sinclair/typebox").TLiteral<"contract">]>>;
187
+ }>>>;
188
+ clarification: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TObject<{
189
+ title: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
190
+ summary: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
191
+ request: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
192
+ status: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TLiteral<"active">, import("@sinclair/typebox").TLiteral<"resolved">]>>;
193
+ answer_count: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TInteger>;
194
+ answers: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TArray<import("@sinclair/typebox").TObject<{
195
+ message_id: import("@sinclair/typebox").TString;
196
+ author: import("@sinclair/typebox").TString;
197
+ body: import("@sinclair/typebox").TString;
198
+ created_at: import("@sinclair/typebox").TString;
199
+ }>>>;
200
+ }>>;
201
+ contract: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TObject<{
202
+ goal: import("@sinclair/typebox").TString;
203
+ scope: import("@sinclair/typebox").TArray<import("@sinclair/typebox").TString>;
204
+ truncated: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TBoolean>;
205
+ }>>;
206
+ result: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TObject<{
207
+ summary: import("@sinclair/typebox").TString;
208
+ error_code: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
209
+ }>>;
210
+ changes: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TObject<{
211
+ items: import("@sinclair/typebox").TArray<import("@sinclair/typebox").TObject<{
212
+ status: import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TLiteral<"added">, import("@sinclair/typebox").TLiteral<"modified">, import("@sinclair/typebox").TLiteral<"deleted">, import("@sinclair/typebox").TLiteral<"renamed">, import("@sinclair/typebox").TLiteral<"unknown">]>;
213
+ path: import("@sinclair/typebox").TString;
214
+ previous_path: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
215
+ }>>;
216
+ total_count: import("@sinclair/typebox").TInteger;
217
+ truncated: import("@sinclair/typebox").TBoolean;
218
+ }>>;
219
+ verification: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TObject<{
220
+ checks: import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TLiteral<"passed">, import("@sinclair/typebox").TLiteral<"failed">, import("@sinclair/typebox").TLiteral<"skipped">]>;
221
+ skip_reason_code: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
222
+ skip_reason_summary: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
223
+ }>>;
224
+ promotion: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TObject<{
225
+ status: import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TLiteral<"promoted">, import("@sinclair/typebox").TLiteral<"not_promoted">, import("@sinclair/typebox").TLiteral<"not_attempted">]>;
226
+ commit_oid: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
227
+ commit_short_oid: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
228
+ summary: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
229
+ reason_code: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
230
+ }>>;
231
+ checkpoint: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TObject<{
232
+ counters: import("@sinclair/typebox").TObject<{
233
+ completed: import("@sinclair/typebox").TInteger;
234
+ failed: import("@sinclair/typebox").TInteger;
235
+ remaining: import("@sinclair/typebox").TInteger;
236
+ }>;
237
+ items: import("@sinclair/typebox").TArray<import("@sinclair/typebox").TObject<{
238
+ task_id: import("@sinclair/typebox").TString;
239
+ title: import("@sinclair/typebox").TString;
240
+ status: import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TLiteral<"done">, import("@sinclair/typebox").TLiteral<"failed">]>;
241
+ summary: import("@sinclair/typebox").TString;
242
+ }>>;
243
+ generated_files: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TArray<import("@sinclair/typebox").TObject<{
244
+ path: import("@sinclair/typebox").TString;
245
+ name: import("@sinclair/typebox").TString;
246
+ }>>>;
247
+ truncated: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TBoolean>;
248
+ }>>;
249
+ links: import("@sinclair/typebox").TArray<import("@sinclair/typebox").TObject<{
250
+ kind: import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TLiteral<"worklist_task">, import("@sinclair/typebox").TLiteral<"chat_message">, import("@sinclair/typebox").TLiteral<"reference_file">, import("@sinclair/typebox").TLiteral<"repo_path">]>;
251
+ label: import("@sinclair/typebox").TString;
252
+ task_id: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
253
+ message_id: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
254
+ path: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
255
+ }>>;
256
+ }>>;
45
257
  }>;
46
258
  export declare const ProjectTimelineResponseSchema: import("@sinclair/typebox").TObject<{
47
259
  generated_at: import("@sinclair/typebox").TString;
@@ -104,7 +316,7 @@ export declare const ProjectTimelineResponseSchema: import("@sinclair/typebox").
104
316
  }>;
105
317
  items: import("@sinclair/typebox").TArray<import("@sinclair/typebox").TObject<{
106
318
  id: import("@sinclair/typebox").TString;
107
- kind: import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TLiteral<"run">, import("@sinclair/typebox").TLiteral<"procedure">, import("@sinclair/typebox").TLiteral<"commit">, import("@sinclair/typebox").TLiteral<"usage">, import("@sinclair/typebox").TLiteral<"clarification">, import("@sinclair/typebox").TLiteral<"checks">, import("@sinclair/typebox").TLiteral<"promotion">, import("@sinclair/typebox").TLiteral<"recovery">]>;
319
+ kind: import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TLiteral<"task_accepted">, import("@sinclair/typebox").TLiteral<"task_update">, import("@sinclair/typebox").TLiteral<"checkpoint">]>;
108
320
  occurred_at: import("@sinclair/typebox").TString;
109
321
  title: import("@sinclair/typebox").TString;
110
322
  summary: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
@@ -112,9 +324,10 @@ export declare const ProjectTimelineResponseSchema: import("@sinclair/typebox").
112
324
  task_title: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
113
325
  activity_ref: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
114
326
  workflow_ref: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
115
- commit_oid: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
116
- commit_short_oid: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
117
- status: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TLiteral<"running">, import("@sinclair/typebox").TLiteral<"completed">, import("@sinclair/typebox").TLiteral<"failed">, import("@sinclair/typebox").TLiteral<"needs_human">, import("@sinclair/typebox").TLiteral<"skipped">]>>;
327
+ run_result_id: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
328
+ message_id: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
329
+ status: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TLiteral<"completed">, import("@sinclair/typebox").TLiteral<"failed">, import("@sinclair/typebox").TLiteral<"needs_human">]>>;
330
+ update_state: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TLiteral<"needs_input">, import("@sinclair/typebox").TLiteral<"completed">, import("@sinclair/typebox").TLiteral<"failed">]>>;
118
331
  token_usage: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TObject<{
119
332
  input_tokens: import("@sinclair/typebox").TInteger;
120
333
  cached_input_tokens: import("@sinclair/typebox").TInteger;
@@ -143,7 +356,95 @@ export declare const ProjectTimelineResponseSchema: import("@sinclair/typebox").
143
356
  total_tokens: import("@sinclair/typebox").TInteger;
144
357
  event_count: import("@sinclair/typebox").TInteger;
145
358
  }>>>;
146
- meta: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TArray<import("@sinclair/typebox").TString>>;
359
+ trace_card: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TObject<{
360
+ tone: import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TLiteral<"neutral">, import("@sinclair/typebox").TLiteral<"success">, import("@sinclair/typebox").TLiteral<"warning">, import("@sinclair/typebox").TLiteral<"error">]>;
361
+ summary: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
362
+ origin: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TObject<{
363
+ title: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
364
+ summary: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
365
+ snippets: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TArray<import("@sinclair/typebox").TObject<{
366
+ message_id: import("@sinclair/typebox").TString;
367
+ author: import("@sinclair/typebox").TString;
368
+ body: import("@sinclair/typebox").TString;
369
+ created_at: import("@sinclair/typebox").TString;
370
+ }>>>;
371
+ source_count: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TInteger>;
372
+ unavailable_reason: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
373
+ }>>;
374
+ decisions: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TArray<import("@sinclair/typebox").TObject<{
375
+ title: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
376
+ summary: import("@sinclair/typebox").TString;
377
+ source: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TLiteral<"scratchpad">, import("@sinclair/typebox").TLiteral<"clarification">, import("@sinclair/typebox").TLiteral<"contract">]>>;
378
+ }>>>;
379
+ clarification: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TObject<{
380
+ title: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
381
+ summary: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
382
+ request: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
383
+ status: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TLiteral<"active">, import("@sinclair/typebox").TLiteral<"resolved">]>>;
384
+ answer_count: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TInteger>;
385
+ answers: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TArray<import("@sinclair/typebox").TObject<{
386
+ message_id: import("@sinclair/typebox").TString;
387
+ author: import("@sinclair/typebox").TString;
388
+ body: import("@sinclair/typebox").TString;
389
+ created_at: import("@sinclair/typebox").TString;
390
+ }>>>;
391
+ }>>;
392
+ contract: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TObject<{
393
+ goal: import("@sinclair/typebox").TString;
394
+ scope: import("@sinclair/typebox").TArray<import("@sinclair/typebox").TString>;
395
+ truncated: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TBoolean>;
396
+ }>>;
397
+ result: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TObject<{
398
+ summary: import("@sinclair/typebox").TString;
399
+ error_code: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
400
+ }>>;
401
+ changes: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TObject<{
402
+ items: import("@sinclair/typebox").TArray<import("@sinclair/typebox").TObject<{
403
+ status: import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TLiteral<"added">, import("@sinclair/typebox").TLiteral<"modified">, import("@sinclair/typebox").TLiteral<"deleted">, import("@sinclair/typebox").TLiteral<"renamed">, import("@sinclair/typebox").TLiteral<"unknown">]>;
404
+ path: import("@sinclair/typebox").TString;
405
+ previous_path: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
406
+ }>>;
407
+ total_count: import("@sinclair/typebox").TInteger;
408
+ truncated: import("@sinclair/typebox").TBoolean;
409
+ }>>;
410
+ verification: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TObject<{
411
+ checks: import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TLiteral<"passed">, import("@sinclair/typebox").TLiteral<"failed">, import("@sinclair/typebox").TLiteral<"skipped">]>;
412
+ skip_reason_code: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
413
+ skip_reason_summary: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
414
+ }>>;
415
+ promotion: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TObject<{
416
+ status: import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TLiteral<"promoted">, import("@sinclair/typebox").TLiteral<"not_promoted">, import("@sinclair/typebox").TLiteral<"not_attempted">]>;
417
+ commit_oid: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
418
+ commit_short_oid: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
419
+ summary: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
420
+ reason_code: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
421
+ }>>;
422
+ checkpoint: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TObject<{
423
+ counters: import("@sinclair/typebox").TObject<{
424
+ completed: import("@sinclair/typebox").TInteger;
425
+ failed: import("@sinclair/typebox").TInteger;
426
+ remaining: import("@sinclair/typebox").TInteger;
427
+ }>;
428
+ items: import("@sinclair/typebox").TArray<import("@sinclair/typebox").TObject<{
429
+ task_id: import("@sinclair/typebox").TString;
430
+ title: import("@sinclair/typebox").TString;
431
+ status: import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TLiteral<"done">, import("@sinclair/typebox").TLiteral<"failed">]>;
432
+ summary: import("@sinclair/typebox").TString;
433
+ }>>;
434
+ generated_files: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TArray<import("@sinclair/typebox").TObject<{
435
+ path: import("@sinclair/typebox").TString;
436
+ name: import("@sinclair/typebox").TString;
437
+ }>>>;
438
+ truncated: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TBoolean>;
439
+ }>>;
440
+ links: import("@sinclair/typebox").TArray<import("@sinclair/typebox").TObject<{
441
+ kind: import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TLiteral<"worklist_task">, import("@sinclair/typebox").TLiteral<"chat_message">, import("@sinclair/typebox").TLiteral<"reference_file">, import("@sinclair/typebox").TLiteral<"repo_path">]>;
442
+ label: import("@sinclair/typebox").TString;
443
+ task_id: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
444
+ message_id: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
445
+ path: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
446
+ }>>;
447
+ }>>;
147
448
  }>>;
148
449
  }>;
149
450
  //# sourceMappingURL=project-timeline.d.ts.map