Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
27 commits
Select commit Hold shift + click to select a range
f1a40d1
Project import generated by Copybara.
Sep 20, 2026
a1d7c14
Project import generated by Copybara.
Sep 20, 2026
ac703a8
Project import generated by Copybara.
Sep 20, 2026
82cf8df
Project import generated by Copybara.
Sep 20, 2026
d21bdc8
Merge remote-tracking branch 'origin/main' into sync/mono-projection
github-actions[bot] Sep 20, 2026
1bf0483
chore: project api from Mono a2e8b231b208
Sep 20, 2026
b6d8cac
Merge remote-tracking branch 'origin/main' into sync/mono-projection
github-actions[bot] Sep 20, 2026
b3a0310
chore: project api from Mono cc1e1c0a4251
Sep 20, 2026
86523c3
chore: project api from Mono 9b559bc70e7d
Sep 21, 2026
5a95859
Merge remote-tracking branch 'origin/main' into sync/mono-projection
github-actions[bot] Sep 21, 2026
aff3c56
chore: project api from Mono 78799bd5ae75
Sep 21, 2026
96fbea9
Merge remote-tracking branch 'origin/main' into sync/mono-projection
github-actions[bot] Sep 21, 2026
d87ef71
chore: project api from Mono 9a003786d767
Sep 21, 2026
a10a028
Merge remote-tracking branch 'origin/main' into sync/mono-projection
github-actions[bot] Sep 21, 2026
0aa7b6f
chore: project api from Mono 511bd2305f5a
Sep 21, 2026
8ff8d21
Merge remote-tracking branch 'origin/main' into sync/mono-projection
github-actions[bot] Sep 21, 2026
6a4f422
chore: project api from Mono ad7b9df0b712
Sep 21, 2026
33b4bc4
chore: project api from Mono 3a95acea6719
Sep 21, 2026
525330e
chore: project api from Mono c16f3515c56a
Sep 21, 2026
dd8dceb
chore: project api from Mono 4ab4845398fd
Sep 21, 2026
60209a5
Merge remote-tracking branch 'origin/main' into sync/mono-projection
github-actions[bot] Sep 22, 2026
c46a7cf
chore: project api from Mono 43ad52f7bcc9
Sep 22, 2026
a29facb
chore: project api from Mono 2df44a8283c0
Sep 22, 2026
3e9fe6b
Merge remote-tracking branch 'origin/main' into sync/mono-projection
github-actions[bot] Sep 22, 2026
5e45d26
chore: project api from Mono f6e0aa99e756
Sep 22, 2026
290a3a5
Merge remote-tracking branch 'origin/main' into sync/mono-projection
github-actions[bot] Sep 22, 2026
090e260
chore: project api from Mono 3457dcec675e
Sep 22, 2026
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 3 additions & 3 deletions .repository-projection.json
Original file line number Diff line number Diff line change
Expand Up @@ -3,11 +3,11 @@
"projection": "api",
"projectionSchemaVersion": 1,
"sourceRepository": "dx-corp/mono",
"sourceSha": "f6e0aa99e756a677a1f035d6825462abd1fffe0c",
"sourceSha": "3457dcec675e2f625d5c4fd2b029354a6c999872",
"destinationRepository": "dx-corp/api",
"priorProjectedBase": "3c616f65601b50873ffff1bcde4e238599b3659c",
"priorProjectedBase": "e764dcd689aac72dcdec4c212c4bb55ee572d79d",
"definitionDigest": "144b18a5c1f3e7ee6e2d1abc32f80a97adfeacd088911ec659d63622fe85d18c",
"toolDigest": "f58d71f023a4f0a27d77cb96dcc5348a40816d0b",
"contentDigest": "af711aaad6c4ce1e58865a025562485a296843a19b589a671b975d950e7259ae",
"contentDigest": "d2824e000820bf3c6f06ba07ad78da049a98e9f757b1f5b856d8947ca567940e",
"publicationEligible": true
}
140 changes: 140 additions & 0 deletions openapi/console/v1/console.openapi.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -3921,6 +3921,48 @@ paths:
application/json:
schema:
$ref: '#/components/schemas/console.v1.ArchiveOperatingThreadResponse'
/console.v1.ConsoleService/ForkOperatingThread:
post:
tags:
- console.v1.ConsoleService
summary: ForkOperatingThread
description: |-
ForkOperatingThread copies one operating thread's conversation content
into a new thread owned by the caller. The fork inherits content only:
the source's model selection, Auto route, receipts, attachments, and turn
records are all dropped, because each carries authority granted to the
source's principal rather than to the forker. Repeating a request with
the same idempotency key and digest returns the original fork.
operationId: console.v1.ConsoleService.ForkOperatingThread
parameters:
- name: Connect-Protocol-Version
in: header
required: true
schema:
$ref: '#/components/schemas/connect-protocol-version'
- name: Connect-Timeout-Ms
in: header
schema:
$ref: '#/components/schemas/connect-timeout-header'
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/console.v1.ForkOperatingThreadRequest'
required: true
responses:
default:
description: Error
content:
application/json:
schema:
$ref: '#/components/schemas/connect.error'
"200":
description: Success
content:
application/json:
schema:
$ref: '#/components/schemas/console.v1.ForkOperatingThreadResponse'
/console.v1.ConsoleService/RenameOperatingThread:
post:
tags:
Expand Down Expand Up @@ -18207,6 +18249,59 @@ components:
title: memory_id
title: ForgetWorkspaceMemoryResponse
additionalProperties: false
console.v1.ForkOperatingThreadRequest:
type: object
properties:
query:
title: query
$ref: '#/components/schemas/console.v1.ConsoleQuery'
sourceChannelId:
type: string
title: source_channel_id
minLength: 1
throughMessageId:
type: string
title: through_message_id
maxLength: 512
description: |-
Copy history up to and including this message. Empty copies the whole
thread as of expected_source_conversation_revision.
expectedSourceConversationRevision:
type:
- integer
- string
title: expected_source_conversation_revision
format: int64
description: |-
The source conversation_revision the caller observed. The fork is refused
when the source has moved since, so a fork always names a state the
caller actually read.
idempotencyKey:
type: string
title: idempotency_key
maxLength: 512
minLength: 1
label:
type: string
title: label
maxLength: 80
title: ForkOperatingThreadRequest
required:
- query
additionalProperties: false
console.v1.ForkOperatingThreadResponse:
type: object
properties:
channel:
title: channel
$ref: '#/components/schemas/console.v1.OperatingChannel'
replayed:
type: boolean
title: replayed
title: ForkOperatingThreadResponse
required:
- channel
additionalProperties: false
console.v1.FulfillInferenceCreditCheckoutRequest:
type: object
properties:
Expand Down Expand Up @@ -23180,6 +23275,12 @@ components:
archivedByDisplayName:
type: string
title: archived_by_display_name
fork:
title: fork
description: |-
Fork provenance is durable owner metadata, absent on a thread that was
started directly.
$ref: '#/components/schemas/console.v1.OperatingThreadFork'
title: OperatingChannel
additionalProperties: false
description: |-
Expand Down Expand Up @@ -24780,6 +24881,45 @@ components:
OperatingThreadExecution is the user-safe projection of one durable Dex
thread. Runner, Pod, service, certificate, and cluster coordinates are
intentionally absent.
console.v1.OperatingThreadFork:
type: object
properties:
sourceChannelId:
type: string
title: source_channel_id
throughMessageId:
type: string
title: through_message_id
description: The last source message copied into the fork.
sourceConversationRevision:
type:
- integer
- string
title: source_conversation_revision
format: int64
description: |-
The source's conversation_revision at the moment of the fork. Together
with through_message_id this names exactly what was copied.
forkedByPrincipalId:
type: string
title: forked_by_principal_id
forkedAt:
title: forked_at
$ref: '#/components/schemas/google.protobuf.Timestamp'
copiedMessageCount:
type: integer
title: copied_message_count
format: int32
title: OperatingThreadFork
additionalProperties: false
description: |-
Where a forked operating thread came from.

A fork copies conversation content and nothing else. It does not inherit
the source's pinned model selection, its Auto route, its receipts, its
attachments, or its turn records, because each of those carries authority
that was granted to the source thread's principal rather than to whoever
forked it. The fork re-resolves all of them under the forking principal.
console.v1.OperatingThreadResponse:
type: object
properties:
Expand Down
134 changes: 134 additions & 0 deletions openapi/deixic/v1/deixic.openapi.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -4116,6 +4116,42 @@ paths:
application/json:
schema:
$ref: '#/components/schemas/console.v1.ArchiveOperatingThreadResponse'
/deixic.v1.DeixicService/ForkOperatingThread:
post:
tags:
- deixic.v1.DeixicService
summary: ForkOperatingThread
description: Uses the canonical console.v1.ConsoleService.ForkOperatingThread message contract.
operationId: deixic.v1.DeixicService.ForkOperatingThread
parameters:
- name: Connect-Protocol-Version
in: header
required: true
schema:
$ref: '#/components/schemas/connect-protocol-version'
- name: Connect-Timeout-Ms
in: header
schema:
$ref: '#/components/schemas/connect-timeout-header'
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/console.v1.ForkOperatingThreadRequest'
required: true
responses:
default:
description: Error
content:
application/json:
schema:
$ref: '#/components/schemas/connect.error'
"200":
description: Success
content:
application/json:
schema:
$ref: '#/components/schemas/console.v1.ForkOperatingThreadResponse'
/deixic.v1.DeixicService/RenameOperatingThread:
post:
tags:
Expand Down Expand Up @@ -17589,6 +17625,59 @@ components:
title: memory_id
title: ForgetWorkspaceMemoryResponse
additionalProperties: false
console.v1.ForkOperatingThreadRequest:
type: object
properties:
query:
title: query
$ref: '#/components/schemas/console.v1.ConsoleQuery'
sourceChannelId:
type: string
title: source_channel_id
minLength: 1
throughMessageId:
type: string
title: through_message_id
maxLength: 512
description: |-
Copy history up to and including this message. Empty copies the whole
thread as of expected_source_conversation_revision.
expectedSourceConversationRevision:
type:
- integer
- string
title: expected_source_conversation_revision
format: int64
description: |-
The source conversation_revision the caller observed. The fork is refused
when the source has moved since, so a fork always names a state the
caller actually read.
idempotencyKey:
type: string
title: idempotency_key
maxLength: 512
minLength: 1
label:
type: string
title: label
maxLength: 80
title: ForkOperatingThreadRequest
required:
- query
additionalProperties: false
console.v1.ForkOperatingThreadResponse:
type: object
properties:
channel:
title: channel
$ref: '#/components/schemas/console.v1.OperatingChannel'
replayed:
type: boolean
title: replayed
title: ForkOperatingThreadResponse
required:
- channel
additionalProperties: false
console.v1.FulfillInferenceCreditCheckoutRequest:
type: object
properties:
Expand Down Expand Up @@ -22267,6 +22356,12 @@ components:
archivedByDisplayName:
type: string
title: archived_by_display_name
fork:
title: fork
description: |-
Fork provenance is durable owner metadata, absent on a thread that was
started directly.
$ref: '#/components/schemas/console.v1.OperatingThreadFork'
title: OperatingChannel
additionalProperties: false
description: |-
Expand Down Expand Up @@ -23362,6 +23457,45 @@ components:
OperatingThreadExecution is the user-safe projection of one durable Dex
thread. Runner, Pod, service, certificate, and cluster coordinates are
intentionally absent.
console.v1.OperatingThreadFork:
type: object
properties:
sourceChannelId:
type: string
title: source_channel_id
throughMessageId:
type: string
title: through_message_id
description: The last source message copied into the fork.
sourceConversationRevision:
type:
- integer
- string
title: source_conversation_revision
format: int64
description: |-
The source's conversation_revision at the moment of the fork. Together
with through_message_id this names exactly what was copied.
forkedByPrincipalId:
type: string
title: forked_by_principal_id
forkedAt:
title: forked_at
$ref: '#/components/schemas/google.protobuf.Timestamp'
copiedMessageCount:
type: integer
title: copied_message_count
format: int32
title: OperatingThreadFork
additionalProperties: false
description: |-
Where a forked operating thread came from.

A fork copies conversation content and nothing else. It does not inherit
the source's pinned model selection, its Auto route, its receipts, its
attachments, or its turn records, because each of those carries authority
that was granted to the source thread's principal rather than to whoever
forked it. The fork re-resolves all of them under the forking principal.
console.v1.OperatingThreadResponse:
type: object
properties:
Expand Down
Loading
Loading