@agentshouse/mdruntime 0.1.0-alpha.46 → 0.1.0-alpha.47
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/adapter.d.ts
CHANGED
|
@@ -66,6 +66,47 @@ export type WorkingNote = {
|
|
|
66
66
|
noteId: string;
|
|
67
67
|
text: string;
|
|
68
68
|
};
|
|
69
|
+
export type PlanStep = {
|
|
70
|
+
label: string;
|
|
71
|
+
priority?: string;
|
|
72
|
+
status: string;
|
|
73
|
+
};
|
|
74
|
+
export type ProcessCommand = {
|
|
75
|
+
[field: string]: unknown;
|
|
76
|
+
name: string;
|
|
77
|
+
description: string;
|
|
78
|
+
input?: {
|
|
79
|
+
[field: string]: unknown;
|
|
80
|
+
hint: string;
|
|
81
|
+
} | null;
|
|
82
|
+
};
|
|
83
|
+
type SelectValue = {
|
|
84
|
+
[field: string]: unknown;
|
|
85
|
+
value: string;
|
|
86
|
+
name: string;
|
|
87
|
+
description?: string | null;
|
|
88
|
+
};
|
|
89
|
+
type SelectGroup = {
|
|
90
|
+
[field: string]: unknown;
|
|
91
|
+
group: string;
|
|
92
|
+
name: string;
|
|
93
|
+
options: readonly SelectValue[];
|
|
94
|
+
};
|
|
95
|
+
type SessionOptionNaming = {
|
|
96
|
+
[field: string]: unknown;
|
|
97
|
+
id: string;
|
|
98
|
+
name: string;
|
|
99
|
+
description?: string | null;
|
|
100
|
+
category?: string | null;
|
|
101
|
+
};
|
|
102
|
+
export type SessionOption = (SessionOptionNaming & {
|
|
103
|
+
type: 'select';
|
|
104
|
+
currentValue: string;
|
|
105
|
+
options: readonly SelectValue[] | readonly SelectGroup[];
|
|
106
|
+
}) | (SessionOptionNaming & {
|
|
107
|
+
type: 'boolean';
|
|
108
|
+
currentValue: boolean;
|
|
109
|
+
});
|
|
69
110
|
export type ConversationEvent = {
|
|
70
111
|
kind: 'growing-text';
|
|
71
112
|
conversation: string;
|
|
@@ -75,7 +116,7 @@ export type ConversationEvent = {
|
|
|
75
116
|
kind: 'plan';
|
|
76
117
|
conversation: string;
|
|
77
118
|
turn: string;
|
|
78
|
-
plan:
|
|
119
|
+
plan: readonly PlanStep[];
|
|
79
120
|
} | {
|
|
80
121
|
kind: 'working-note';
|
|
81
122
|
conversation: string;
|
|
@@ -91,11 +132,11 @@ export type ConversationEvent = {
|
|
|
91
132
|
} | {
|
|
92
133
|
kind: 'commands';
|
|
93
134
|
conversation: string;
|
|
94
|
-
commands: readonly
|
|
135
|
+
commands: readonly ProcessCommand[];
|
|
95
136
|
} | {
|
|
96
137
|
kind: 'options';
|
|
97
138
|
conversation: string;
|
|
98
|
-
options: readonly
|
|
139
|
+
options: readonly SessionOption[];
|
|
99
140
|
} | {
|
|
100
141
|
kind: 'accepted-message';
|
|
101
142
|
conversation: string;
|
|
@@ -329,4 +370,5 @@ export type Adapter = {
|
|
|
329
370
|
conversations?: ConversationStream;
|
|
330
371
|
serviceMode?: ServiceModeSignal;
|
|
331
372
|
};
|
|
373
|
+
export {};
|
|
332
374
|
//# sourceMappingURL=adapter.d.ts.map
|
package/dist/adapter.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"adapter.d.ts","sourceRoot":"","sources":["../src/adapter.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"adapter.d.ts","sourceRoot":"","sources":["../src/adapter.ts"],"names":[],"mappings":"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"}
|
package/dist/adapter.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["/workspace/packages/mdruntime/src/adapter.ts"],"sourcesContent":["import type { ModelIdentity, ModelResult } from './model.js';\nimport type { ChangeBatch } from './change.js';\n\nexport type Authorization = object;\n\nexport const ROOM_CONTRACT_VERSION = 1;\n\nexport const VERSION_1_CAPABILITIES = [\n 'stable-file-ids',\n 'ranked-provider-search',\n 'room-version-notifications',\n 'room-history',\n 'provider-actions',\n 'move-reference-rewrites',\n] as const;\n\nexport type MdModelIdentity = {\n identity: string;\n version: string;\n};\n\nexport type TypedSelection = {\n roots: readonly string[];\n attachedModel: ModelIdentity | null;\n};\n\nexport type OperationScopes = {\n read: readonly string[];\n sync: readonly string[];\n write: readonly string[];\n delete: readonly string[];\n};\nexport type ReplicaAdmission = { selection: string; admission: 'admitted' | 'unavailable' };\n\nexport type DiscoveredRoom = {\n name: string;\n locator: string;\n roomVersion: string;\n operations: OperationScopes;\n replica: ReplicaAdmission;\n attachedModel: ModelIdentity | null;\n typedSelection?: TypedSelection;\n untypedFolders?: readonly string[];\n providerOwnedPaths: readonly string[];\n};\n\nexport type Capability = {\n name: string;\n limits?: readonly ProviderLimit[];\n actions?: readonly ActionDeclaration[];\n conversationCards?: ConversationCards;\n};\n\nexport type ConversationCards = {\n locator: string;\n type: string;\n identity: string;\n agent: string;\n};\n\nexport type ConversationAction =\n | 'conversation.create'\n | 'conversation.send'\n | 'conversation.answer'\n | 'conversation.interrupt'\n | 'conversation.kill'\n | 'conversation.cancel'\n | 'conversation.delete'\n | 'conversation.history';\n\nexport type ConversationMessage = {\n identity: string;\n turn: string;\n text: string;\n message: unknown;\n};\n\nexport type AcceptedMessage = ConversationMessage & { position: string };\n\nexport type ConversationHistoryRequest = {\n conversation: string;\n after?: string;\n};\n\nexport type ConversationHistoryPage = {\n messages: readonly AcceptedMessage[];\n next?: string;\n};\n\nexport type WorkingNote = { noteId: string; text: string };\n\nexport type ConversationEvent =\n | { kind: 'growing-text'; conversation: string; turn: string; text: string }\n | { kind: 'plan'; conversation: string; turn: string; plan: unknown }\n | { kind: 'working-note'; conversation: string; note: WorkingNote | null }\n | { kind: 'questions'; conversation: string; questions: readonly unknown[] }\n | { kind: 'process'; conversation: string; running: boolean }\n | { kind: 'commands'; conversation: string; commands: readonly unknown[] }\n | { kind: 'options'; conversation: string; options: readonly unknown[] }\n | { kind: 'accepted-message'; conversation: string; message: AcceptedMessage }\n | { kind: 'gap'; conversation: string };\n\nexport type ConversationStream = {\n replicate(conversations: readonly string[]): void;\n observe(notify: (event: ConversationEvent) => void): () => void;\n};\n\nexport type ActionDeclaration = {\n name: string;\n inputShape: unknown;\n resultKind: unknown;\n};\n\nexport type ProviderLimit = {\n name: string;\n value?: number | string;\n};\n\nexport type HistoryRetention =\n | { kind: 'duration'; seconds: number }\n | { kind: 'no-declared-time-bound' };\n\nexport type Retention = {\n history: HistoryRetention;\n outcome: number;\n refreshHorizon: number;\n};\n\nexport type Discovery = {\n kind: 'discovery';\n supportedVersions: readonly number[];\n mdModel: MdModelIdentity;\n rooms: readonly DiscoveredRoom[];\n slots?: readonly {\n slot: string;\n entries: readonly { locator: string; segment: string | null }[];\n }[];\n capabilities: readonly Capability[];\n providerLimits: readonly ProviderLimit[];\n retention: Retention;\n};\n\nexport type TransportUncertainty = { kind: 'transport-uncertainty' };\nexport type RoomNotReadable = { kind: 'room-not-readable'; locator: string };\nexport type RevokedAuthorization = { kind: 'revoked-authorization' };\n\nexport type ProviderRefusal = {\n code: string;\n fields: Readonly<Record<string, unknown>>;\n};\n\nexport type ScopedRefusal = ProviderRefusal & {\n kind: 'scoped-refusal';\n locator: string;\n scope: 'content' | 'sync' | 'model' | 'operation' | 'undisclosed';\n};\nexport type AdapterFailure =\n | TransportUncertainty\n | RoomNotReadable\n | RevokedAuthorization\n | ScopedRefusal;\n\nexport type ContractUnavailable = ProviderRefusal & { kind: 'contract-unavailable' };\n\nexport type DiscoverResult =\n | Discovery\n | TransportUncertainty\n | RevokedAuthorization\n | ContractUnavailable;\n\nexport type PageToken = string;\n\nexport type ChangeAuthor =\n | { kind: 'user'; id: string; name: string }\n | { kind: 'site'; id: string; name: string };\n\nexport type HeadChange = { author: ChangeAuthor | null; time: string };\n\nexport type BootstrapRequest = {\n locator: string;\n selection: string;\n pageToken?: PageToken;\n};\n\nexport type BootstrapPage = {\n kind: 'bootstrap';\n roomVersion: string;\n documents: Readonly<Record<string, string>>;\n revisions: Readonly<Record<string, string>>;\n changes: Readonly<Record<string, HeadChange>>;\n binaryTargets: readonly string[];\n pageToken?: PageToken;\n};\n\nexport type BootstrapResult = BootstrapPage | AdapterFailure;\n\nexport type RefreshRequest = {\n locator: string;\n selection: string;\n fromRoomVersion: string;\n minPosition?: string;\n pageToken?: PageToken;\n};\n\nexport type RefreshPage = {\n kind: 'net-advancement';\n roomVersion: string;\n documents: Readonly<Record<string, string>>;\n revisions: Readonly<Record<string, string>>;\n changes: Readonly<Record<string, HeadChange>>;\n binaryTargets: readonly string[];\n removals: readonly string[];\n pageToken?: PageToken;\n};\n\nexport type RefreshResult =\n | { kind: 'still-current' }\n | RefreshPage\n | { kind: 'beyond-horizon' }\n | RetryableRefusal\n | AdapterFailure;\n\nexport type MutationRequest = {\n locator: string;\n changeBatch: ChangeBatch;\n upload?: unknown;\n};\n\nexport type RetryableRefusal = ProviderRefusal & {\n kind: 'retryable-refusal';\n reset?: string;\n};\n\nexport type ServiceMode = 'open' | 'write-halted';\n\nexport type ServiceModeSignal = {\n observe(notify: (mode: ServiceMode) => void): () => void;\n};\n\nexport type MutationResult =\n | {\n kind: 'accepted';\n roomVersion: string;\n documents: Readonly<Record<string, string>>;\n revisions: Readonly<Record<string, string>>;\n removals: readonly string[];\n author?: string;\n time?: string;\n }\n | (ProviderRefusal & {\n kind: 'conflicted';\n roomVersion?: string;\n affected: Readonly<Record<string, string>>;\n })\n | (ProviderRefusal & {\n kind: 'rejected';\n affected: Readonly<Record<string, string>>;\n })\n | RetryableRefusal\n | { kind: 'write-halted' }\n | { kind: 'expired' }\n | AdapterFailure;\n\nexport type HistoryAuthor =\n | { kind: 'user'; id: string }\n | { kind: 'site'; id: string; name: string };\n\nexport type HistoryRevision = {\n revision: string;\n author: HistoryAuthor;\n time: string;\n};\n\nexport type HistoryRequest = {\n locator: string;\n path: string;\n revision?: string;\n pageToken?: PageToken;\n};\n\nexport type HistoryResult =\n | {\n kind: 'history';\n revisions: readonly HistoryRevision[];\n pageToken?: PageToken;\n }\n | {\n kind: 'revision';\n content: string;\n }\n | { kind: 'no-history' }\n | AdapterFailure;\n\nexport type ActionRequest = {\n name: string;\n input: unknown;\n};\n\nexport type RoomVersionAt = {\n locator: string;\n roomVersion: string;\n};\n\nexport type ActionResult =\n | { kind: 'action'; result: unknown; at?: RoomVersionAt }\n | (ProviderRefusal & { kind: 'rejected' })\n | AdapterFailure;\n\nexport type ModelRequest =\n | { locator: string; attached: 'collection'; model: ModelIdentity | null }\n | {\n locator: string;\n attached: 'typed-selection';\n roots: readonly string[];\n model: ModelIdentity | null;\n };\n\nexport type RoomVersionNotification = {\n locator: string;\n roomVersion: string;\n modelChanged?: true;\n};\n\nexport type SelectedRooms = {\n select(locators: readonly string[]): void;\n observe(notify: (notification: RoomVersionNotification) => void): () => void;\n};\n\nexport type Adapter = {\n model(authorization: Authorization, request: ModelRequest): Promise<ModelResult>;\n authorize(): Promise<Authorization>;\n discover(authorization: Authorization): Promise<DiscoverResult>;\n bootstrap(authorization: Authorization, request: BootstrapRequest): Promise<BootstrapResult>;\n refresh(authorization: Authorization, request: RefreshRequest): Promise<RefreshResult>;\n mutate(\n authorization: Authorization,\n request: MutationRequest,\n keep: (upload: unknown) => Promise<void>,\n ): Promise<MutationResult>;\n history(authorization: Authorization, request: HistoryRequest): Promise<HistoryResult>;\n action(authorization: Authorization, request: ActionRequest): Promise<ActionResult>;\n reached(locator: string, roomVersion: string, target: string): boolean;\n roomVersions?: SelectedRooms;\n conversations?: ConversationStream;\n serviceMode?: ServiceModeSignal;\n};\n"],"names":["ROOM_CONTRACT_VERSION","VERSION_1_CAPABILITIES"],"mappings":"AAKA,OAAO,MAAMA,wBAAwB,EAAE;AAEvC,OAAO,MAAMC,yBAAyB;IACpC;IACA;IACA;IACA;IACA;IACA;CACD,CAAU"}
|
|
1
|
+
{"version":3,"sources":["/workspace/packages/mdruntime/src/adapter.ts"],"sourcesContent":["import type { ModelIdentity, ModelResult } from './model.js';\nimport type { ChangeBatch } from './change.js';\n\nexport type Authorization = object;\n\nexport const ROOM_CONTRACT_VERSION = 1;\n\nexport const VERSION_1_CAPABILITIES = [\n 'stable-file-ids',\n 'ranked-provider-search',\n 'room-version-notifications',\n 'room-history',\n 'provider-actions',\n 'move-reference-rewrites',\n] as const;\n\nexport type MdModelIdentity = {\n identity: string;\n version: string;\n};\n\nexport type TypedSelection = {\n roots: readonly string[];\n attachedModel: ModelIdentity | null;\n};\n\nexport type OperationScopes = {\n read: readonly string[];\n sync: readonly string[];\n write: readonly string[];\n delete: readonly string[];\n};\nexport type ReplicaAdmission = { selection: string; admission: 'admitted' | 'unavailable' };\n\nexport type DiscoveredRoom = {\n name: string;\n locator: string;\n roomVersion: string;\n operations: OperationScopes;\n replica: ReplicaAdmission;\n attachedModel: ModelIdentity | null;\n typedSelection?: TypedSelection;\n untypedFolders?: readonly string[];\n providerOwnedPaths: readonly string[];\n};\n\nexport type Capability = {\n name: string;\n limits?: readonly ProviderLimit[];\n actions?: readonly ActionDeclaration[];\n conversationCards?: ConversationCards;\n};\n\nexport type ConversationCards = {\n locator: string;\n type: string;\n identity: string;\n agent: string;\n};\n\nexport type ConversationAction =\n | 'conversation.create'\n | 'conversation.send'\n | 'conversation.answer'\n | 'conversation.interrupt'\n | 'conversation.kill'\n | 'conversation.cancel'\n | 'conversation.delete'\n | 'conversation.history';\n\nexport type ConversationMessage = {\n identity: string;\n turn: string;\n text: string;\n message: unknown;\n};\n\nexport type AcceptedMessage = ConversationMessage & { position: string };\n\nexport type ConversationHistoryRequest = {\n conversation: string;\n after?: string;\n};\n\nexport type ConversationHistoryPage = {\n messages: readonly AcceptedMessage[];\n next?: string;\n};\n\nexport type WorkingNote = { noteId: string; text: string };\n\nexport type PlanStep = { label: string; priority?: string; status: string };\n\nexport type ProcessCommand = {\n [field: string]: unknown;\n name: string;\n description: string;\n input?: { [field: string]: unknown; hint: string } | null;\n};\n\ntype SelectValue = {\n [field: string]: unknown;\n value: string;\n name: string;\n description?: string | null;\n};\n\ntype SelectGroup = {\n [field: string]: unknown;\n group: string;\n name: string;\n options: readonly SelectValue[];\n};\n\ntype SessionOptionNaming = {\n [field: string]: unknown;\n id: string;\n name: string;\n description?: string | null;\n category?: string | null;\n};\n\nexport type SessionOption =\n | (SessionOptionNaming & {\n type: 'select';\n currentValue: string;\n options: readonly SelectValue[] | readonly SelectGroup[];\n })\n | (SessionOptionNaming & { type: 'boolean'; currentValue: boolean });\n\nexport type ConversationEvent =\n | { kind: 'growing-text'; conversation: string; turn: string; text: string }\n | { kind: 'plan'; conversation: string; turn: string; plan: readonly PlanStep[] }\n | { kind: 'working-note'; conversation: string; note: WorkingNote | null }\n | { kind: 'questions'; conversation: string; questions: readonly unknown[] }\n | { kind: 'process'; conversation: string; running: boolean }\n | { kind: 'commands'; conversation: string; commands: readonly ProcessCommand[] }\n | { kind: 'options'; conversation: string; options: readonly SessionOption[] }\n | { kind: 'accepted-message'; conversation: string; message: AcceptedMessage }\n | { kind: 'gap'; conversation: string };\n\nexport type ConversationStream = {\n replicate(conversations: readonly string[]): void;\n observe(notify: (event: ConversationEvent) => void): () => void;\n};\n\nexport type ActionDeclaration = {\n name: string;\n inputShape: unknown;\n resultKind: unknown;\n};\n\nexport type ProviderLimit = {\n name: string;\n value?: number | string;\n};\n\nexport type HistoryRetention =\n | { kind: 'duration'; seconds: number }\n | { kind: 'no-declared-time-bound' };\n\nexport type Retention = {\n history: HistoryRetention;\n outcome: number;\n refreshHorizon: number;\n};\n\nexport type Discovery = {\n kind: 'discovery';\n supportedVersions: readonly number[];\n mdModel: MdModelIdentity;\n rooms: readonly DiscoveredRoom[];\n slots?: readonly {\n slot: string;\n entries: readonly { locator: string; segment: string | null }[];\n }[];\n capabilities: readonly Capability[];\n providerLimits: readonly ProviderLimit[];\n retention: Retention;\n};\n\nexport type TransportUncertainty = { kind: 'transport-uncertainty' };\nexport type RoomNotReadable = { kind: 'room-not-readable'; locator: string };\nexport type RevokedAuthorization = { kind: 'revoked-authorization' };\n\nexport type ProviderRefusal = {\n code: string;\n fields: Readonly<Record<string, unknown>>;\n};\n\nexport type ScopedRefusal = ProviderRefusal & {\n kind: 'scoped-refusal';\n locator: string;\n scope: 'content' | 'sync' | 'model' | 'operation' | 'undisclosed';\n};\nexport type AdapterFailure =\n | TransportUncertainty\n | RoomNotReadable\n | RevokedAuthorization\n | ScopedRefusal;\n\nexport type ContractUnavailable = ProviderRefusal & { kind: 'contract-unavailable' };\n\nexport type DiscoverResult =\n | Discovery\n | TransportUncertainty\n | RevokedAuthorization\n | ContractUnavailable;\n\nexport type PageToken = string;\n\nexport type ChangeAuthor =\n | { kind: 'user'; id: string; name: string }\n | { kind: 'site'; id: string; name: string };\n\nexport type HeadChange = { author: ChangeAuthor | null; time: string };\n\nexport type BootstrapRequest = {\n locator: string;\n selection: string;\n pageToken?: PageToken;\n};\n\nexport type BootstrapPage = {\n kind: 'bootstrap';\n roomVersion: string;\n documents: Readonly<Record<string, string>>;\n revisions: Readonly<Record<string, string>>;\n changes: Readonly<Record<string, HeadChange>>;\n binaryTargets: readonly string[];\n pageToken?: PageToken;\n};\n\nexport type BootstrapResult = BootstrapPage | AdapterFailure;\n\nexport type RefreshRequest = {\n locator: string;\n selection: string;\n fromRoomVersion: string;\n minPosition?: string;\n pageToken?: PageToken;\n};\n\nexport type RefreshPage = {\n kind: 'net-advancement';\n roomVersion: string;\n documents: Readonly<Record<string, string>>;\n revisions: Readonly<Record<string, string>>;\n changes: Readonly<Record<string, HeadChange>>;\n binaryTargets: readonly string[];\n removals: readonly string[];\n pageToken?: PageToken;\n};\n\nexport type RefreshResult =\n | { kind: 'still-current' }\n | RefreshPage\n | { kind: 'beyond-horizon' }\n | RetryableRefusal\n | AdapterFailure;\n\nexport type MutationRequest = {\n locator: string;\n changeBatch: ChangeBatch;\n upload?: unknown;\n};\n\nexport type RetryableRefusal = ProviderRefusal & {\n kind: 'retryable-refusal';\n reset?: string;\n};\n\nexport type ServiceMode = 'open' | 'write-halted';\n\nexport type ServiceModeSignal = {\n observe(notify: (mode: ServiceMode) => void): () => void;\n};\n\nexport type MutationResult =\n | {\n kind: 'accepted';\n roomVersion: string;\n documents: Readonly<Record<string, string>>;\n revisions: Readonly<Record<string, string>>;\n removals: readonly string[];\n author?: string;\n time?: string;\n }\n | (ProviderRefusal & {\n kind: 'conflicted';\n roomVersion?: string;\n affected: Readonly<Record<string, string>>;\n })\n | (ProviderRefusal & {\n kind: 'rejected';\n affected: Readonly<Record<string, string>>;\n })\n | RetryableRefusal\n | { kind: 'write-halted' }\n | { kind: 'expired' }\n | AdapterFailure;\n\nexport type HistoryAuthor =\n | { kind: 'user'; id: string }\n | { kind: 'site'; id: string; name: string };\n\nexport type HistoryRevision = {\n revision: string;\n author: HistoryAuthor;\n time: string;\n};\n\nexport type HistoryRequest = {\n locator: string;\n path: string;\n revision?: string;\n pageToken?: PageToken;\n};\n\nexport type HistoryResult =\n | {\n kind: 'history';\n revisions: readonly HistoryRevision[];\n pageToken?: PageToken;\n }\n | {\n kind: 'revision';\n content: string;\n }\n | { kind: 'no-history' }\n | AdapterFailure;\n\nexport type ActionRequest = {\n name: string;\n input: unknown;\n};\n\nexport type RoomVersionAt = {\n locator: string;\n roomVersion: string;\n};\n\nexport type ActionResult =\n | { kind: 'action'; result: unknown; at?: RoomVersionAt }\n | (ProviderRefusal & { kind: 'rejected' })\n | AdapterFailure;\n\nexport type ModelRequest =\n | { locator: string; attached: 'collection'; model: ModelIdentity | null }\n | {\n locator: string;\n attached: 'typed-selection';\n roots: readonly string[];\n model: ModelIdentity | null;\n };\n\nexport type RoomVersionNotification = {\n locator: string;\n roomVersion: string;\n modelChanged?: true;\n};\n\nexport type SelectedRooms = {\n select(locators: readonly string[]): void;\n observe(notify: (notification: RoomVersionNotification) => void): () => void;\n};\n\nexport type Adapter = {\n model(authorization: Authorization, request: ModelRequest): Promise<ModelResult>;\n authorize(): Promise<Authorization>;\n discover(authorization: Authorization): Promise<DiscoverResult>;\n bootstrap(authorization: Authorization, request: BootstrapRequest): Promise<BootstrapResult>;\n refresh(authorization: Authorization, request: RefreshRequest): Promise<RefreshResult>;\n mutate(\n authorization: Authorization,\n request: MutationRequest,\n keep: (upload: unknown) => Promise<void>,\n ): Promise<MutationResult>;\n history(authorization: Authorization, request: HistoryRequest): Promise<HistoryResult>;\n action(authorization: Authorization, request: ActionRequest): Promise<ActionResult>;\n reached(locator: string, roomVersion: string, target: string): boolean;\n roomVersions?: SelectedRooms;\n conversations?: ConversationStream;\n serviceMode?: ServiceModeSignal;\n};\n"],"names":["ROOM_CONTRACT_VERSION","VERSION_1_CAPABILITIES"],"mappings":"AAKA,OAAO,MAAMA,wBAAwB,EAAE;AAEvC,OAAO,MAAMC,yBAAyB;IACpC;IACA;IACA;IACA;IACA;IACA;CACD,CAAU"}
|
package/dist/conversation.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type { ConversationAction, ConversationCards, ConversationEvent, ConversationMessage, ConversationStream, WorkingNote } from './adapter.js';
|
|
1
|
+
import type { ConversationAction, ConversationCards, ConversationEvent, ConversationMessage, ConversationStream, PlanStep, ProcessCommand, SessionOption, WorkingNote } from './adapter.js';
|
|
2
2
|
import { type ChangeSet } from './change-set.js';
|
|
3
3
|
import { type ChatDraftFile } from './file.js';
|
|
4
4
|
import type { CallResult } from './outcome.js';
|
|
@@ -27,13 +27,13 @@ export type ConversationView = {
|
|
|
27
27
|
messages: readonly ConversationMessage[];
|
|
28
28
|
growingText: GrowingText | null;
|
|
29
29
|
workingNote: WorkingNote | null;
|
|
30
|
-
plan:
|
|
30
|
+
plan: readonly PlanStep[] | null;
|
|
31
31
|
questions: readonly unknown[];
|
|
32
32
|
process: {
|
|
33
33
|
running: boolean;
|
|
34
34
|
} | null;
|
|
35
|
-
commands: readonly
|
|
36
|
-
options: readonly
|
|
35
|
+
commands: readonly ProcessCommand[];
|
|
36
|
+
options: readonly SessionOption[];
|
|
37
37
|
chatDraft: ChatDraft | null;
|
|
38
38
|
};
|
|
39
39
|
export type ConversationSurface = {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"conversation.d.ts","sourceRoot":"","sources":["../src/conversation.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAEV,kBAAkB,EAClB,iBAAiB,EACjB,iBAAiB,EAEjB,mBAAmB,EACnB,kBAAkB,EAClB,WAAW,EACZ,MAAM,cAAc,CAAC;AACtB,OAAO,EAAyB,KAAK,SAAS,EAAsB,MAAM,iBAAiB,CAAC;AAC5F,OAAO,EAAgB,KAAK,aAAa,EAAE,MAAM,WAAW,CAAC;AAC7D,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAC/C,OAAO,KAAK,EAAE,cAAc,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAChE,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AACnD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AACjD,OAAO,KAAK,EAAE,eAAe,EAAE,gBAAgB,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAElF,MAAM,MAAM,iBAAiB,GAAG;IAC9B,YAAY,EAAE,MAAM,CAAC;IACrB,IAAI,EAAE,QAAQ,CAAC,aAAa,CAAC,CAAC;IAC9B,KAAK,EAAE,QAAQ,CAAC,aAAa,CAAC,GAAG,IAAI,CAAC;CACvC,CAAC;AAEF,MAAM,MAAM,WAAW,GAAG;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,CAAC;AAEzD,MAAM,MAAM,SAAS,GAAG;IACtB,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,SAAS,aAAa,EAAE,CAAC;CACjC,CAAC;AAEF,MAAM,MAAM,mBAAmB,GAAG;IAAE,KAAK,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC;AAErD,MAAM,MAAM,gBAAgB,GAAG;IAC7B,YAAY,EAAE,MAAM,CAAC;IACrB,QAAQ,EAAE,SAAS,mBAAmB,EAAE,CAAC;IACzC,WAAW,EAAE,WAAW,GAAG,IAAI,CAAC;IAChC,WAAW,EAAE,WAAW,GAAG,IAAI,CAAC;IAChC,IAAI,EAAE,
|
|
1
|
+
{"version":3,"file":"conversation.d.ts","sourceRoot":"","sources":["../src/conversation.ts"],"names":[],"mappings":"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"}
|
package/dist/conversation.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["/workspace/packages/mdruntime/src/conversation.ts"],"sourcesContent":["import type {\n AcceptedMessage,\n ConversationAction,\n ConversationCards,\n ConversationEvent,\n ConversationHistoryPage,\n ConversationMessage,\n ConversationStream,\n WorkingNote,\n} from './adapter.js';\nimport { conversationChangeSet, type ChangeSet, type MessageChange } from './change-set.js';\nimport { declaredFile, type ChatDraftFile } from './file.js';\nimport type { CallResult } from './outcome.js';\nimport type { DocumentResult, QueryDocument } from './query.js';\nimport type { SearchedMessage } from './search.js';\nimport type { CycleProgress } from './status.js';\nimport type { ChatDraftRecord, HeldConversation, RuntimeStore } from './store.js';\n\nexport type ConversationEntry = {\n conversation: string;\n card: Required<QueryDocument>;\n agent: Required<QueryDocument> | null;\n};\n\nexport type GrowingText = { turn: string; text: string };\n\nexport type ChatDraft = {\n text: string;\n files: readonly ChatDraftFile[];\n};\n\nexport type ConversationOptions = { limit?: number };\n\nexport type ConversationView = {\n conversation: string;\n messages: readonly ConversationMessage[];\n growingText: GrowingText | null;\n workingNote: WorkingNote | null;\n plan: unknown;\n questions: readonly unknown[];\n process: { running: boolean } | null;\n commands: readonly unknown[];\n options: readonly unknown[];\n chatDraft: ChatDraft | null;\n};\n\nexport type ConversationSurface = {\n list(): Promise<readonly ConversationEntry[]>;\n read(conversation: string, options?: ConversationOptions): Promise<ConversationView>;\n create(input: unknown): Promise<CallResult>;\n send(conversation: string): Promise<CallResult>;\n answer(conversation: string, answer: unknown): Promise<CallResult>;\n interrupt(conversation: string): Promise<CallResult>;\n kill(conversation: string): Promise<CallResult>;\n cancel(conversation: string, turn: string): Promise<CallResult>;\n delete(conversation: string): Promise<CallResult>;\n};\n\nexport type ChatDraftSurface = {\n write(conversation: string, draft: ChatDraft): Promise<void>;\n discard(conversation: string): Promise<void>;\n};\n\nexport type ConversationDependencies = {\n cards(): ConversationCards | undefined;\n documents(locator: string): Promise<DocumentResult>;\n call(name: ConversationAction, input: unknown): Promise<CallResult>;\n durably<T>(work: (local: RuntimeStore) => Promise<T>): Promise<T>;\n stream(): ConversationStream | undefined;\n publish(set: ChangeSet): void;\n closed(): boolean;\n};\n\nexport type ConversationStore = {\n surface: ConversationSurface;\n chatDraft: ChatDraftSurface;\n hydrate(held: readonly HeldConversation[], drafts: readonly ChatDraftRecord[]): void;\n reconcile(): Promise<void>;\n catchUp(progress: CycleProgress): Promise<void>;\n current(): boolean;\n reconnected(): void;\n watch(\n conversation: string,\n options: ConversationOptions,\n deliver: (view: ConversationView) => void,\n ): () => void;\n changed(set: ChangeSet): void;\n receive(event: ConversationEvent): void;\n messages(): readonly SearchedMessage[];\n message(conversation: string, identity: string): SearchedMessage | null;\n close(): void;\n};\n\ntype Watcher = {\n notify: (view: ConversationView) => void;\n ready: boolean;\n};\n\ntype Sending = { draft: ChatDraftRecord };\n\ntype Live = {\n growingText: GrowingText | null;\n plan: { turn: string; plan: unknown } | null;\n workingNote: WorkingNote | null;\n questions: readonly unknown[];\n process: { running: boolean } | null;\n commands: readonly unknown[];\n options: readonly unknown[];\n};\n\nconst QUIET: Live = {\n growingText: null,\n plan: null,\n workingNote: null,\n questions: [],\n process: null,\n commands: [],\n options: [],\n};\n\ntype SharedView = {\n conversation: string;\n limit: number | undefined;\n watchers: Set<Watcher>;\n};\n\nfunction ordered(left: AcceptedMessage, right: AcceptedMessage): number {\n if (left.position !== right.position) return left.position < right.position ? -1 : 1;\n if (left.identity !== right.identity) return left.identity < right.identity ? -1 : 1;\n return 0;\n}\n\nfunction merged(\n held: readonly AcceptedMessage[],\n arriving: readonly AcceptedMessage[],\n): readonly AcceptedMessage[] {\n const byIdentity = new Map(held.map((message) => [message.identity, message]));\n for (const message of arriving) byIdentity.set(message.identity, message);\n return [...byIdentity.values()].sort(ordered);\n}\n\nfunction acceptedMessage(value: unknown): AcceptedMessage | null {\n if (typeof value !== 'object' || value === null) return null;\n const record = value as Partial<Record<keyof AcceptedMessage, unknown>>;\n if (\n typeof record.identity !== 'string' ||\n typeof record.turn !== 'string' ||\n typeof record.position !== 'string' ||\n typeof record.text !== 'string'\n ) {\n return null;\n }\n return {\n identity: record.identity,\n turn: record.turn,\n position: record.position,\n text: record.text,\n message: structuredClone(record.message),\n };\n}\n\nfunction historyPage(result: CallResult): ConversationHistoryPage | null {\n if (result.kind !== 'action') return null;\n const answer = result.result;\n if (typeof answer !== 'object' || answer === null) return null;\n const record = answer as { messages?: unknown; next?: unknown };\n if (!Array.isArray(record.messages)) return null;\n if (record.next !== undefined && typeof record.next !== 'string') return null;\n const messages: AcceptedMessage[] = [];\n for (const entry of record.messages) {\n const message = acceptedMessage(entry);\n if (message === null) return null;\n messages.push(message);\n }\n return { messages, ...(record.next === undefined ? {} : { next: record.next }) };\n}\n\nfunction turnOf(result: CallResult): string | null {\n if (result.kind !== 'action') return null;\n const answer = result.result;\n if (typeof answer !== 'object' || answer === null) return null;\n const record = answer as { turn?: unknown };\n return typeof record.turn === 'string' ? record.turn : null;\n}\n\nfunction limitOf(options: ConversationOptions): number | undefined {\n const { limit } = options;\n if (limit === undefined) return undefined;\n if (!Number.isInteger(limit) || limit < 0) {\n throw new Error(`conversation limit must be a non-negative integer, got ${String(limit)}`);\n }\n return limit;\n}\n\nexport function createConversationStore(deps: ConversationDependencies): ConversationStore {\n const messages = new Map<string, readonly AcceptedMessage[]>();\n const reads = new Map<string, string | null>();\n const drafts = new Map<string, ChatDraftRecord>();\n const sending = new Map<string, Sending>();\n const behind = new Set<string>();\n const gaps = new Map<string, number>();\n const lives = new Map<string, Live>();\n const views = new Map<string, SharedView>();\n let replicated: ReadonlySet<string> = new Set();\n let handedReplicated: string | undefined;\n\n function liveOf(conversation: string): Live {\n return lives.get(conversation) ?? QUIET;\n }\n\n function viewOf(conversation: string, limit: number | undefined): ConversationView {\n const held = messages.get(conversation) ?? [];\n const shown = limit === undefined ? held : held.slice(Math.max(0, held.length - limit));\n const draft = drafts.get(conversation);\n const facts = liveOf(conversation);\n return {\n conversation,\n messages: shown.map(({ identity, turn, text, message }) => ({\n identity,\n turn,\n text,\n message: structuredClone(message),\n })),\n growingText: facts.growingText === null ? null : { ...facts.growingText },\n workingNote: facts.workingNote === null ? null : { ...facts.workingNote },\n plan: structuredClone(facts.plan?.plan ?? null),\n questions: structuredClone(facts.questions),\n process: facts.process === null ? null : { ...facts.process },\n commands: structuredClone(facts.commands),\n options: structuredClone(facts.options),\n chatDraft:\n draft === undefined || draft.turn !== null || sending.get(conversation)?.draft === draft\n ? null\n : { text: draft.text, files: [...draft.files] },\n };\n }\n\n function emit(conversation: string) {\n if (deps.closed()) return;\n for (const view of views.values()) {\n if (view.conversation !== conversation) continue;\n const ready = [...view.watchers].filter((watcher) => watcher.ready);\n if (ready.length === 0) continue;\n const value = viewOf(conversation, view.limit);\n for (const watcher of ready) watcher.notify(value);\n }\n }\n\n function live(conversation: string, change: Partial<Live>) {\n lives.set(conversation, { ...liveOf(conversation), ...change });\n emit(conversation);\n }\n\n function sealTurns(conversation: string, turns: ReadonlySet<string>): boolean {\n const held = lives.get(conversation);\n if (held === undefined) return false;\n const growingText =\n held.growingText !== null && turns.has(held.growingText.turn) ? null : held.growingText;\n const plan = held.plan !== null && turns.has(held.plan.turn) ? null : held.plan;\n if (growingText === held.growingText && plan === held.plan) return false;\n lives.set(conversation, { ...held, growingText, plan });\n return true;\n }\n\n function handReplicated() {\n const stream = deps.stream();\n if (stream === undefined) return;\n const held = [...replicated].sort();\n const named = JSON.stringify(held);\n if (named === handedReplicated) return;\n handedReplicated = named;\n stream.replicate(held);\n }\n\n async function documented(): Promise<readonly Required<QueryDocument>[]> {\n const declaration = deps.cards();\n if (declaration === undefined) return [];\n const { documents } = await deps.documents(declaration.locator);\n return documents.filter(\n (document): document is Required<QueryDocument> => typeof document.type === 'string',\n );\n }\n\n function carded(\n documents: readonly Required<QueryDocument>[],\n ): readonly { conversation: string; card: Required<QueryDocument> }[] {\n const declaration = deps.cards();\n if (declaration === undefined) return [];\n const cards: { conversation: string; card: Required<QueryDocument> }[] = [];\n for (const card of documents) {\n if (card.type !== declaration.type) continue;\n const identity = card.fields[declaration.identity];\n if (typeof identity === 'string') cards.push({ conversation: identity, card });\n }\n return cards;\n }\n\n async function remove(leaving: readonly string[]) {\n await deps.durably(async (local) => {\n await local.dropConversations(leaving);\n const removed: MessageChange[] = [];\n const changed: string[] = [];\n for (const conversation of leaving) {\n for (const message of messages.get(conversation) ?? []) {\n removed.push({ conversation, identity: message.identity });\n }\n if (messages.has(conversation) || drafts.has(conversation) || lives.has(conversation)) {\n changed.push(conversation);\n }\n messages.delete(conversation);\n reads.delete(conversation);\n drafts.delete(conversation);\n behind.delete(conversation);\n lives.delete(conversation);\n }\n if (changed.length > 0) deps.publish(conversationChangeSet(removed, changed));\n });\n }\n\n function gap(conversation: string) {\n gaps.set(conversation, (gaps.get(conversation) ?? 0) + 1);\n behind.add(conversation);\n }\n\n function keep(conversation: string, message: AcceptedMessage) {\n return deps.durably(async (local) => {\n if (!replicated.has(conversation)) return;\n const read = reads.get(conversation);\n const advances =\n read !== undefined &&\n !behind.has(conversation) &&\n (read === null || message.position > read);\n const sealed = drafts.get(conversation)?.turn === message.turn;\n await local.keepMessages({\n conversation,\n messages: [message],\n ...(advances ? { read: message.position } : {}),\n sealed,\n });\n messages.set(conversation, merged(messages.get(conversation) ?? [], [message]));\n if (advances) reads.set(conversation, message.position);\n if (sealed) drafts.delete(conversation);\n sealTurns(conversation, new Set([message.turn]));\n deps.publish(\n conversationChangeSet([{ conversation, identity: message.identity }], [conversation]),\n );\n });\n }\n\n async function readHistory(conversation: string): Promise<CallResult | null> {\n const generation = gaps.get(conversation) ?? 0;\n const from = reads.get(conversation);\n const arriving: AcceptedMessage[] = [];\n let after = from ?? undefined;\n for (;;) {\n const result = await deps.call('conversation.history', {\n conversation,\n ...(after === undefined ? {} : { after }),\n });\n const page = historyPage(result);\n if (page === null) return result;\n arriving.push(...page.messages);\n if (page.next === undefined) break;\n after = page.next;\n }\n await deps.durably(async (local) => {\n if (!replicated.has(conversation)) return;\n const newest = arriving.reduce<string | null>(\n (top, message) => (top === null || message.position > top ? message.position : top),\n from ?? null,\n );\n const turn = drafts.get(conversation)?.turn;\n const sealed = arriving.some((message) => message.turn === turn);\n await local.keepMessages({ conversation, messages: arriving, read: newest, sealed });\n messages.set(conversation, merged(messages.get(conversation) ?? [], arriving));\n reads.set(conversation, newest);\n if (sealed) drafts.delete(conversation);\n sealTurns(conversation, new Set(arriving.map((message) => message.turn)));\n if ((gaps.get(conversation) ?? 0) === generation) behind.delete(conversation);\n if (arriving.length > 0 || sealed) {\n deps.publish(\n conversationChangeSet(\n arriving.map((message) => ({ conversation, identity: message.identity })),\n [conversation],\n ),\n );\n }\n });\n return null;\n }\n\n function withDraft(\n conversation: string,\n next: (draft: ChatDraftRecord | undefined) => ChatDraftRecord | null | undefined,\n ): Promise<void> {\n return deps.durably(async (local) => {\n const following = next(drafts.get(conversation));\n if (following === undefined) return;\n if (following === null) {\n await local.dropChatDraft(conversation);\n drafts.delete(conversation);\n } else {\n await local.keepChatDraft(following);\n drafts.set(conversation, following);\n }\n deps.publish(conversationChangeSet([], [conversation]));\n });\n }\n\n function invoke(\n name: ConversationAction,\n conversation: string,\n extra: Readonly<Record<string, unknown>> = {},\n ): Promise<CallResult> {\n return deps.call(name, { conversation, ...extra });\n }\n\n const surface: ConversationSurface = {\n async list() {\n const declaration = deps.cards();\n if (declaration === undefined) return [];\n const documents = await documented();\n const entries: ConversationEntry[] = carded(documents).map(({ conversation, card }) => ({\n conversation,\n card,\n agent:\n documents.find((document) =>\n document.backlinks.some(\n (backlink) => backlink.path === card.path && backlink.field === declaration.agent,\n ),\n ) ?? null,\n }));\n entries.sort((left, right) => (left.conversation < right.conversation ? -1 : 1));\n return entries;\n },\n async read(conversation: string, options: ConversationOptions = {}) {\n const limit = limitOf(options);\n return deps.durably(() => Promise.resolve(viewOf(conversation, limit)));\n },\n create(input: unknown) {\n return deps.call('conversation.create', input);\n },\n async send(conversation: string) {\n const draft = drafts.get(conversation);\n const pending: Sending | undefined = draft === undefined ? undefined : { draft };\n if (pending !== undefined) {\n sending.set(conversation, pending);\n deps.publish(conversationChangeSet([], [conversation]));\n }\n try {\n const files = await Promise.all(\n (draft?.files ?? []).map(async (file) => ({\n ...(await declaredFile(file)),\n blob: file.blob,\n })),\n );\n const result = await invoke('conversation.send', conversation, {\n text: draft?.text ?? '',\n files,\n });\n const turn = turnOf(result);\n if (turn === null || draft === undefined) return result;\n await withDraft(conversation, (current) => {\n if (current !== draft) return undefined;\n const sealed = (messages.get(conversation) ?? []).some(\n (message) => message.turn === turn,\n );\n return sealed ? null : { ...draft, turn };\n });\n return result;\n } finally {\n if (pending !== undefined && sending.get(conversation) === pending) {\n sending.delete(conversation);\n if (drafts.get(conversation) === draft) {\n deps.publish(conversationChangeSet([], [conversation]));\n }\n }\n }\n },\n answer(conversation: string, answer: unknown) {\n return invoke('conversation.answer', conversation, { answer });\n },\n interrupt(conversation: string) {\n return invoke('conversation.interrupt', conversation);\n },\n kill(conversation: string) {\n return invoke('conversation.kill', conversation);\n },\n async cancel(conversation: string, turn: string) {\n const result = await invoke('conversation.cancel', conversation, { turn });\n if (result.kind !== 'action') return result;\n await withDraft(conversation, (current) =>\n current === undefined || current.turn !== turn ? undefined : { ...current, turn: null },\n );\n return result;\n },\n delete(conversation: string) {\n return invoke('conversation.delete', conversation);\n },\n };\n\n const chatDraft: ChatDraftSurface = {\n write(conversation: string, draft: ChatDraft) {\n return withDraft(conversation, () => ({\n conversation,\n text: draft.text,\n files: [...draft.files],\n turn: null,\n }));\n },\n discard(conversation: string) {\n return withDraft(conversation, (current) => (current === undefined ? undefined : null));\n },\n };\n\n return {\n surface,\n chatDraft,\n hydrate(held, stored) {\n messages.clear();\n reads.clear();\n for (const entry of held) {\n messages.set(entry.conversation, [...entry.messages].sort(ordered));\n if (entry.read !== undefined) reads.set(entry.conversation, entry.read);\n }\n drafts.clear();\n for (const record of stored) drafts.set(record.conversation, record);\n },\n async reconcile() {\n const named = new Set(carded(await documented()).map((entry) => entry.conversation));\n const leaving = [\n ...new Set([...replicated, ...messages.keys(), ...reads.keys(), ...drafts.keys()]),\n ].filter((conversation) => !named.has(conversation));\n for (const conversation of named) {\n if (!replicated.has(conversation)) behind.add(conversation);\n }\n replicated = named;\n handReplicated();\n if (leaving.length > 0) await remove(leaving);\n },\n async catchUp(progress) {\n for (const conversation of [...behind].sort()) {\n if (deps.closed()) return;\n if (!replicated.has(conversation)) continue;\n const failed = await readHistory(conversation);\n if (failed?.kind === 'transport-uncertainty') progress.reachable = false;\n }\n if (behind.size > 0) progress.complete = false;\n },\n current() {\n return behind.size === 0;\n },\n reconnected() {\n for (const conversation of replicated) gap(conversation);\n },\n watch(conversation, options, deliver) {\n const limit = limitOf(options);\n const key = JSON.stringify([conversation, limit ?? null]);\n const view = views.get(key) ?? { conversation, limit, watchers: new Set<Watcher>() };\n views.set(key, view);\n const watcher: Watcher = { notify: deliver, ready: false };\n view.watchers.add(watcher);\n void deps\n .durably(() => Promise.resolve())\n .then(() => {\n if (deps.closed() || !view.watchers.has(watcher)) return;\n watcher.ready = true;\n watcher.notify(viewOf(conversation, limit));\n })\n .catch(() => {});\n return () => {\n if (!view.watchers.delete(watcher)) return;\n if (view.watchers.size === 0) views.delete(key);\n };\n },\n changed(set) {\n for (const conversation of set.conversations) emit(conversation);\n },\n receive(event) {\n if (deps.closed()) return;\n const { conversation } = event;\n if (event.kind === 'gap') {\n if (replicated.has(conversation)) gap(conversation);\n if (lives.delete(conversation)) emit(conversation);\n return;\n }\n if (event.kind === 'growing-text') {\n live(conversation, { growingText: { turn: event.turn, text: event.text } });\n return;\n }\n if (event.kind === 'plan') {\n live(conversation, { plan: { turn: event.turn, plan: structuredClone(event.plan) } });\n return;\n }\n if (event.kind === 'working-note') {\n live(conversation, {\n workingNote:\n event.note === null ? null : { noteId: event.note.noteId, text: event.note.text },\n });\n return;\n }\n if (event.kind === 'questions') {\n live(conversation, { questions: structuredClone(event.questions) });\n return;\n }\n if (event.kind === 'process') {\n live(conversation, { process: { running: event.running } });\n return;\n }\n if (event.kind === 'commands') {\n live(conversation, { commands: structuredClone(event.commands) });\n return;\n }\n if (event.kind === 'options') {\n live(conversation, { options: structuredClone(event.options) });\n return;\n }\n const arriving = acceptedMessage(event.message);\n if (arriving === null) return;\n if (replicated.has(conversation)) {\n void keep(conversation, arriving).catch(() => {});\n return;\n }\n if (sealTurns(conversation, new Set([arriving.turn]))) emit(conversation);\n },\n messages() {\n return [...messages].flatMap(([conversation, held]) =>\n held.map(({ identity, text }) => ({ conversation, identity, text })),\n );\n },\n message(conversation, identity) {\n const held = messages.get(conversation)?.find((message) => message.identity === identity);\n return held === undefined ? null : { conversation, identity, text: held.text };\n },\n close() {\n views.clear();\n lives.clear();\n },\n };\n}\n"],"names":["conversationChangeSet","declaredFile","QUIET","growingText","plan","workingNote","questions","process","commands","options","ordered","left","right","position","identity","merged","held","arriving","byIdentity","Map","map","message","set","values","sort","acceptedMessage","value","record","turn","text","structuredClone","historyPage","result","kind","answer","Array","isArray","messages","next","undefined","entry","push","turnOf","limitOf","limit","Number","isInteger","Error","String","createConversationStore","deps","reads","drafts","sending","behind","Set","gaps","lives","views","replicated","handedReplicated","liveOf","conversation","get","viewOf","shown","slice","Math","max","length","draft","facts","chatDraft","files","emit","closed","view","ready","watchers","filter","watcher","notify","live","change","sealTurns","turns","has","handReplicated","stream","named","JSON","stringify","replicate","documented","declaration","cards","documents","locator","document","type","carded","card","fields","remove","leaving","durably","local","dropConversations","removed","changed","delete","publish","gap","add","keep","read","advances","sealed","keepMessages","readHistory","generation","from","after","call","page","newest","reduce","top","some","withDraft","following","dropChatDraft","keepChatDraft","invoke","name","extra","surface","list","entries","agent","find","backlinks","backlink","path","field","Promise","resolve","create","input","send","pending","all","file","blob","current","interrupt","kill","cancel","write","discard","hydrate","stored","clear","reconcile","keys","catchUp","progress","failed","reachable","size","complete","reconnected","watch","deliver","key","then","catch","conversations","receive","event","note","noteId","running","flatMap","close"],"mappings":"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"}
|
|
1
|
+
{"version":3,"sources":["/workspace/packages/mdruntime/src/conversation.ts"],"sourcesContent":["import type {\n AcceptedMessage,\n ConversationAction,\n ConversationCards,\n ConversationEvent,\n ConversationHistoryPage,\n ConversationMessage,\n ConversationStream,\n PlanStep,\n ProcessCommand,\n SessionOption,\n WorkingNote,\n} from './adapter.js';\nimport { conversationChangeSet, type ChangeSet, type MessageChange } from './change-set.js';\nimport { declaredFile, type ChatDraftFile } from './file.js';\nimport type { CallResult } from './outcome.js';\nimport type { DocumentResult, QueryDocument } from './query.js';\nimport type { SearchedMessage } from './search.js';\nimport type { CycleProgress } from './status.js';\nimport type { ChatDraftRecord, HeldConversation, RuntimeStore } from './store.js';\n\nexport type ConversationEntry = {\n conversation: string;\n card: Required<QueryDocument>;\n agent: Required<QueryDocument> | null;\n};\n\nexport type GrowingText = { turn: string; text: string };\n\nexport type ChatDraft = {\n text: string;\n files: readonly ChatDraftFile[];\n};\n\nexport type ConversationOptions = { limit?: number };\n\nexport type ConversationView = {\n conversation: string;\n messages: readonly ConversationMessage[];\n growingText: GrowingText | null;\n workingNote: WorkingNote | null;\n plan: readonly PlanStep[] | null;\n questions: readonly unknown[];\n process: { running: boolean } | null;\n commands: readonly ProcessCommand[];\n options: readonly SessionOption[];\n chatDraft: ChatDraft | null;\n};\n\nexport type ConversationSurface = {\n list(): Promise<readonly ConversationEntry[]>;\n read(conversation: string, options?: ConversationOptions): Promise<ConversationView>;\n create(input: unknown): Promise<CallResult>;\n send(conversation: string): Promise<CallResult>;\n answer(conversation: string, answer: unknown): Promise<CallResult>;\n interrupt(conversation: string): Promise<CallResult>;\n kill(conversation: string): Promise<CallResult>;\n cancel(conversation: string, turn: string): Promise<CallResult>;\n delete(conversation: string): Promise<CallResult>;\n};\n\nexport type ChatDraftSurface = {\n write(conversation: string, draft: ChatDraft): Promise<void>;\n discard(conversation: string): Promise<void>;\n};\n\nexport type ConversationDependencies = {\n cards(): ConversationCards | undefined;\n documents(locator: string): Promise<DocumentResult>;\n call(name: ConversationAction, input: unknown): Promise<CallResult>;\n durably<T>(work: (local: RuntimeStore) => Promise<T>): Promise<T>;\n stream(): ConversationStream | undefined;\n publish(set: ChangeSet): void;\n closed(): boolean;\n};\n\nexport type ConversationStore = {\n surface: ConversationSurface;\n chatDraft: ChatDraftSurface;\n hydrate(held: readonly HeldConversation[], drafts: readonly ChatDraftRecord[]): void;\n reconcile(): Promise<void>;\n catchUp(progress: CycleProgress): Promise<void>;\n current(): boolean;\n reconnected(): void;\n watch(\n conversation: string,\n options: ConversationOptions,\n deliver: (view: ConversationView) => void,\n ): () => void;\n changed(set: ChangeSet): void;\n receive(event: ConversationEvent): void;\n messages(): readonly SearchedMessage[];\n message(conversation: string, identity: string): SearchedMessage | null;\n close(): void;\n};\n\ntype Watcher = {\n notify: (view: ConversationView) => void;\n ready: boolean;\n};\n\ntype Sending = { draft: ChatDraftRecord };\n\ntype Live = {\n growingText: GrowingText | null;\n plan: { turn: string; plan: readonly PlanStep[] } | null;\n workingNote: WorkingNote | null;\n questions: readonly unknown[];\n process: { running: boolean } | null;\n commands: readonly ProcessCommand[];\n options: readonly SessionOption[];\n};\n\nconst QUIET: Live = {\n growingText: null,\n plan: null,\n workingNote: null,\n questions: [],\n process: null,\n commands: [],\n options: [],\n};\n\ntype SharedView = {\n conversation: string;\n limit: number | undefined;\n watchers: Set<Watcher>;\n};\n\nfunction ordered(left: AcceptedMessage, right: AcceptedMessage): number {\n if (left.position !== right.position) return left.position < right.position ? -1 : 1;\n if (left.identity !== right.identity) return left.identity < right.identity ? -1 : 1;\n return 0;\n}\n\nfunction merged(\n held: readonly AcceptedMessage[],\n arriving: readonly AcceptedMessage[],\n): readonly AcceptedMessage[] {\n const byIdentity = new Map(held.map((message) => [message.identity, message]));\n for (const message of arriving) byIdentity.set(message.identity, message);\n return [...byIdentity.values()].sort(ordered);\n}\n\nfunction acceptedMessage(value: unknown): AcceptedMessage | null {\n if (typeof value !== 'object' || value === null) return null;\n const record = value as Partial<Record<keyof AcceptedMessage, unknown>>;\n if (\n typeof record.identity !== 'string' ||\n typeof record.turn !== 'string' ||\n typeof record.position !== 'string' ||\n typeof record.text !== 'string'\n ) {\n return null;\n }\n return {\n identity: record.identity,\n turn: record.turn,\n position: record.position,\n text: record.text,\n message: structuredClone(record.message),\n };\n}\n\nfunction historyPage(result: CallResult): ConversationHistoryPage | null {\n if (result.kind !== 'action') return null;\n const answer = result.result;\n if (typeof answer !== 'object' || answer === null) return null;\n const record = answer as { messages?: unknown; next?: unknown };\n if (!Array.isArray(record.messages)) return null;\n if (record.next !== undefined && typeof record.next !== 'string') return null;\n const messages: AcceptedMessage[] = [];\n for (const entry of record.messages) {\n const message = acceptedMessage(entry);\n if (message === null) return null;\n messages.push(message);\n }\n return { messages, ...(record.next === undefined ? {} : { next: record.next }) };\n}\n\nfunction turnOf(result: CallResult): string | null {\n if (result.kind !== 'action') return null;\n const answer = result.result;\n if (typeof answer !== 'object' || answer === null) return null;\n const record = answer as { turn?: unknown };\n return typeof record.turn === 'string' ? record.turn : null;\n}\n\nfunction limitOf(options: ConversationOptions): number | undefined {\n const { limit } = options;\n if (limit === undefined) return undefined;\n if (!Number.isInteger(limit) || limit < 0) {\n throw new Error(`conversation limit must be a non-negative integer, got ${String(limit)}`);\n }\n return limit;\n}\n\nexport function createConversationStore(deps: ConversationDependencies): ConversationStore {\n const messages = new Map<string, readonly AcceptedMessage[]>();\n const reads = new Map<string, string | null>();\n const drafts = new Map<string, ChatDraftRecord>();\n const sending = new Map<string, Sending>();\n const behind = new Set<string>();\n const gaps = new Map<string, number>();\n const lives = new Map<string, Live>();\n const views = new Map<string, SharedView>();\n let replicated: ReadonlySet<string> = new Set();\n let handedReplicated: string | undefined;\n\n function liveOf(conversation: string): Live {\n return lives.get(conversation) ?? QUIET;\n }\n\n function viewOf(conversation: string, limit: number | undefined): ConversationView {\n const held = messages.get(conversation) ?? [];\n const shown = limit === undefined ? held : held.slice(Math.max(0, held.length - limit));\n const draft = drafts.get(conversation);\n const facts = liveOf(conversation);\n return {\n conversation,\n messages: shown.map(({ identity, turn, text, message }) => ({\n identity,\n turn,\n text,\n message: structuredClone(message),\n })),\n growingText: facts.growingText === null ? null : { ...facts.growingText },\n workingNote: facts.workingNote === null ? null : { ...facts.workingNote },\n plan: structuredClone(facts.plan?.plan ?? null),\n questions: structuredClone(facts.questions),\n process: facts.process === null ? null : { ...facts.process },\n commands: structuredClone(facts.commands),\n options: structuredClone(facts.options),\n chatDraft:\n draft === undefined || draft.turn !== null || sending.get(conversation)?.draft === draft\n ? null\n : { text: draft.text, files: [...draft.files] },\n };\n }\n\n function emit(conversation: string) {\n if (deps.closed()) return;\n for (const view of views.values()) {\n if (view.conversation !== conversation) continue;\n const ready = [...view.watchers].filter((watcher) => watcher.ready);\n if (ready.length === 0) continue;\n const value = viewOf(conversation, view.limit);\n for (const watcher of ready) watcher.notify(value);\n }\n }\n\n function live(conversation: string, change: Partial<Live>) {\n lives.set(conversation, { ...liveOf(conversation), ...change });\n emit(conversation);\n }\n\n function sealTurns(conversation: string, turns: ReadonlySet<string>): boolean {\n const held = lives.get(conversation);\n if (held === undefined) return false;\n const growingText =\n held.growingText !== null && turns.has(held.growingText.turn) ? null : held.growingText;\n const plan = held.plan !== null && turns.has(held.plan.turn) ? null : held.plan;\n if (growingText === held.growingText && plan === held.plan) return false;\n lives.set(conversation, { ...held, growingText, plan });\n return true;\n }\n\n function handReplicated() {\n const stream = deps.stream();\n if (stream === undefined) return;\n const held = [...replicated].sort();\n const named = JSON.stringify(held);\n if (named === handedReplicated) return;\n handedReplicated = named;\n stream.replicate(held);\n }\n\n async function documented(): Promise<readonly Required<QueryDocument>[]> {\n const declaration = deps.cards();\n if (declaration === undefined) return [];\n const { documents } = await deps.documents(declaration.locator);\n return documents.filter(\n (document): document is Required<QueryDocument> => typeof document.type === 'string',\n );\n }\n\n function carded(\n documents: readonly Required<QueryDocument>[],\n ): readonly { conversation: string; card: Required<QueryDocument> }[] {\n const declaration = deps.cards();\n if (declaration === undefined) return [];\n const cards: { conversation: string; card: Required<QueryDocument> }[] = [];\n for (const card of documents) {\n if (card.type !== declaration.type) continue;\n const identity = card.fields[declaration.identity];\n if (typeof identity === 'string') cards.push({ conversation: identity, card });\n }\n return cards;\n }\n\n async function remove(leaving: readonly string[]) {\n await deps.durably(async (local) => {\n await local.dropConversations(leaving);\n const removed: MessageChange[] = [];\n const changed: string[] = [];\n for (const conversation of leaving) {\n for (const message of messages.get(conversation) ?? []) {\n removed.push({ conversation, identity: message.identity });\n }\n if (messages.has(conversation) || drafts.has(conversation) || lives.has(conversation)) {\n changed.push(conversation);\n }\n messages.delete(conversation);\n reads.delete(conversation);\n drafts.delete(conversation);\n behind.delete(conversation);\n lives.delete(conversation);\n }\n if (changed.length > 0) deps.publish(conversationChangeSet(removed, changed));\n });\n }\n\n function gap(conversation: string) {\n gaps.set(conversation, (gaps.get(conversation) ?? 0) + 1);\n behind.add(conversation);\n }\n\n function keep(conversation: string, message: AcceptedMessage) {\n return deps.durably(async (local) => {\n if (!replicated.has(conversation)) return;\n const read = reads.get(conversation);\n const advances =\n read !== undefined &&\n !behind.has(conversation) &&\n (read === null || message.position > read);\n const sealed = drafts.get(conversation)?.turn === message.turn;\n await local.keepMessages({\n conversation,\n messages: [message],\n ...(advances ? { read: message.position } : {}),\n sealed,\n });\n messages.set(conversation, merged(messages.get(conversation) ?? [], [message]));\n if (advances) reads.set(conversation, message.position);\n if (sealed) drafts.delete(conversation);\n sealTurns(conversation, new Set([message.turn]));\n deps.publish(\n conversationChangeSet([{ conversation, identity: message.identity }], [conversation]),\n );\n });\n }\n\n async function readHistory(conversation: string): Promise<CallResult | null> {\n const generation = gaps.get(conversation) ?? 0;\n const from = reads.get(conversation);\n const arriving: AcceptedMessage[] = [];\n let after = from ?? undefined;\n for (;;) {\n const result = await deps.call('conversation.history', {\n conversation,\n ...(after === undefined ? {} : { after }),\n });\n const page = historyPage(result);\n if (page === null) return result;\n arriving.push(...page.messages);\n if (page.next === undefined) break;\n after = page.next;\n }\n await deps.durably(async (local) => {\n if (!replicated.has(conversation)) return;\n const newest = arriving.reduce<string | null>(\n (top, message) => (top === null || message.position > top ? message.position : top),\n from ?? null,\n );\n const turn = drafts.get(conversation)?.turn;\n const sealed = arriving.some((message) => message.turn === turn);\n await local.keepMessages({ conversation, messages: arriving, read: newest, sealed });\n messages.set(conversation, merged(messages.get(conversation) ?? [], arriving));\n reads.set(conversation, newest);\n if (sealed) drafts.delete(conversation);\n sealTurns(conversation, new Set(arriving.map((message) => message.turn)));\n if ((gaps.get(conversation) ?? 0) === generation) behind.delete(conversation);\n if (arriving.length > 0 || sealed) {\n deps.publish(\n conversationChangeSet(\n arriving.map((message) => ({ conversation, identity: message.identity })),\n [conversation],\n ),\n );\n }\n });\n return null;\n }\n\n function withDraft(\n conversation: string,\n next: (draft: ChatDraftRecord | undefined) => ChatDraftRecord | null | undefined,\n ): Promise<void> {\n return deps.durably(async (local) => {\n const following = next(drafts.get(conversation));\n if (following === undefined) return;\n if (following === null) {\n await local.dropChatDraft(conversation);\n drafts.delete(conversation);\n } else {\n await local.keepChatDraft(following);\n drafts.set(conversation, following);\n }\n deps.publish(conversationChangeSet([], [conversation]));\n });\n }\n\n function invoke(\n name: ConversationAction,\n conversation: string,\n extra: Readonly<Record<string, unknown>> = {},\n ): Promise<CallResult> {\n return deps.call(name, { conversation, ...extra });\n }\n\n const surface: ConversationSurface = {\n async list() {\n const declaration = deps.cards();\n if (declaration === undefined) return [];\n const documents = await documented();\n const entries: ConversationEntry[] = carded(documents).map(({ conversation, card }) => ({\n conversation,\n card,\n agent:\n documents.find((document) =>\n document.backlinks.some(\n (backlink) => backlink.path === card.path && backlink.field === declaration.agent,\n ),\n ) ?? null,\n }));\n entries.sort((left, right) => (left.conversation < right.conversation ? -1 : 1));\n return entries;\n },\n async read(conversation: string, options: ConversationOptions = {}) {\n const limit = limitOf(options);\n return deps.durably(() => Promise.resolve(viewOf(conversation, limit)));\n },\n create(input: unknown) {\n return deps.call('conversation.create', input);\n },\n async send(conversation: string) {\n const draft = drafts.get(conversation);\n const pending: Sending | undefined = draft === undefined ? undefined : { draft };\n if (pending !== undefined) {\n sending.set(conversation, pending);\n deps.publish(conversationChangeSet([], [conversation]));\n }\n try {\n const files = await Promise.all(\n (draft?.files ?? []).map(async (file) => ({\n ...(await declaredFile(file)),\n blob: file.blob,\n })),\n );\n const result = await invoke('conversation.send', conversation, {\n text: draft?.text ?? '',\n files,\n });\n const turn = turnOf(result);\n if (turn === null || draft === undefined) return result;\n await withDraft(conversation, (current) => {\n if (current !== draft) return undefined;\n const sealed = (messages.get(conversation) ?? []).some(\n (message) => message.turn === turn,\n );\n return sealed ? null : { ...draft, turn };\n });\n return result;\n } finally {\n if (pending !== undefined && sending.get(conversation) === pending) {\n sending.delete(conversation);\n if (drafts.get(conversation) === draft) {\n deps.publish(conversationChangeSet([], [conversation]));\n }\n }\n }\n },\n answer(conversation: string, answer: unknown) {\n return invoke('conversation.answer', conversation, { answer });\n },\n interrupt(conversation: string) {\n return invoke('conversation.interrupt', conversation);\n },\n kill(conversation: string) {\n return invoke('conversation.kill', conversation);\n },\n async cancel(conversation: string, turn: string) {\n const result = await invoke('conversation.cancel', conversation, { turn });\n if (result.kind !== 'action') return result;\n await withDraft(conversation, (current) =>\n current === undefined || current.turn !== turn ? undefined : { ...current, turn: null },\n );\n return result;\n },\n delete(conversation: string) {\n return invoke('conversation.delete', conversation);\n },\n };\n\n const chatDraft: ChatDraftSurface = {\n write(conversation: string, draft: ChatDraft) {\n return withDraft(conversation, () => ({\n conversation,\n text: draft.text,\n files: [...draft.files],\n turn: null,\n }));\n },\n discard(conversation: string) {\n return withDraft(conversation, (current) => (current === undefined ? undefined : null));\n },\n };\n\n return {\n surface,\n chatDraft,\n hydrate(held, stored) {\n messages.clear();\n reads.clear();\n for (const entry of held) {\n messages.set(entry.conversation, [...entry.messages].sort(ordered));\n if (entry.read !== undefined) reads.set(entry.conversation, entry.read);\n }\n drafts.clear();\n for (const record of stored) drafts.set(record.conversation, record);\n },\n async reconcile() {\n const named = new Set(carded(await documented()).map((entry) => entry.conversation));\n const leaving = [\n ...new Set([...replicated, ...messages.keys(), ...reads.keys(), ...drafts.keys()]),\n ].filter((conversation) => !named.has(conversation));\n for (const conversation of named) {\n if (!replicated.has(conversation)) behind.add(conversation);\n }\n replicated = named;\n handReplicated();\n if (leaving.length > 0) await remove(leaving);\n },\n async catchUp(progress) {\n for (const conversation of [...behind].sort()) {\n if (deps.closed()) return;\n if (!replicated.has(conversation)) continue;\n const failed = await readHistory(conversation);\n if (failed?.kind === 'transport-uncertainty') progress.reachable = false;\n }\n if (behind.size > 0) progress.complete = false;\n },\n current() {\n return behind.size === 0;\n },\n reconnected() {\n for (const conversation of replicated) gap(conversation);\n },\n watch(conversation, options, deliver) {\n const limit = limitOf(options);\n const key = JSON.stringify([conversation, limit ?? null]);\n const view = views.get(key) ?? { conversation, limit, watchers: new Set<Watcher>() };\n views.set(key, view);\n const watcher: Watcher = { notify: deliver, ready: false };\n view.watchers.add(watcher);\n void deps\n .durably(() => Promise.resolve())\n .then(() => {\n if (deps.closed() || !view.watchers.has(watcher)) return;\n watcher.ready = true;\n watcher.notify(viewOf(conversation, limit));\n })\n .catch(() => {});\n return () => {\n if (!view.watchers.delete(watcher)) return;\n if (view.watchers.size === 0) views.delete(key);\n };\n },\n changed(set) {\n for (const conversation of set.conversations) emit(conversation);\n },\n receive(event) {\n if (deps.closed()) return;\n const { conversation } = event;\n if (event.kind === 'gap') {\n if (replicated.has(conversation)) gap(conversation);\n if (lives.delete(conversation)) emit(conversation);\n return;\n }\n if (event.kind === 'growing-text') {\n live(conversation, { growingText: { turn: event.turn, text: event.text } });\n return;\n }\n if (event.kind === 'plan') {\n live(conversation, { plan: { turn: event.turn, plan: structuredClone(event.plan) } });\n return;\n }\n if (event.kind === 'working-note') {\n live(conversation, {\n workingNote:\n event.note === null ? null : { noteId: event.note.noteId, text: event.note.text },\n });\n return;\n }\n if (event.kind === 'questions') {\n live(conversation, { questions: structuredClone(event.questions) });\n return;\n }\n if (event.kind === 'process') {\n live(conversation, { process: { running: event.running } });\n return;\n }\n if (event.kind === 'commands') {\n live(conversation, { commands: structuredClone(event.commands) });\n return;\n }\n if (event.kind === 'options') {\n live(conversation, { options: structuredClone(event.options) });\n return;\n }\n const arriving = acceptedMessage(event.message);\n if (arriving === null) return;\n if (replicated.has(conversation)) {\n void keep(conversation, arriving).catch(() => {});\n return;\n }\n if (sealTurns(conversation, new Set([arriving.turn]))) emit(conversation);\n },\n messages() {\n return [...messages].flatMap(([conversation, held]) =>\n held.map(({ identity, text }) => ({ conversation, identity, text })),\n );\n },\n message(conversation, identity) {\n const held = messages.get(conversation)?.find((message) => message.identity === identity);\n return held === undefined ? null : { conversation, identity, text: held.text };\n },\n close() {\n views.clear();\n lives.clear();\n },\n };\n}\n"],"names":["conversationChangeSet","declaredFile","QUIET","growingText","plan","workingNote","questions","process","commands","options","ordered","left","right","position","identity","merged","held","arriving","byIdentity","Map","map","message","set","values","sort","acceptedMessage","value","record","turn","text","structuredClone","historyPage","result","kind","answer","Array","isArray","messages","next","undefined","entry","push","turnOf","limitOf","limit","Number","isInteger","Error","String","createConversationStore","deps","reads","drafts","sending","behind","Set","gaps","lives","views","replicated","handedReplicated","liveOf","conversation","get","viewOf","shown","slice","Math","max","length","draft","facts","chatDraft","files","emit","closed","view","ready","watchers","filter","watcher","notify","live","change","sealTurns","turns","has","handReplicated","stream","named","JSON","stringify","replicate","documented","declaration","cards","documents","locator","document","type","carded","card","fields","remove","leaving","durably","local","dropConversations","removed","changed","delete","publish","gap","add","keep","read","advances","sealed","keepMessages","readHistory","generation","from","after","call","page","newest","reduce","top","some","withDraft","following","dropChatDraft","keepChatDraft","invoke","name","extra","surface","list","entries","agent","find","backlinks","backlink","path","field","Promise","resolve","create","input","send","pending","all","file","blob","current","interrupt","kill","cancel","write","discard","hydrate","stored","clear","reconcile","keys","catchUp","progress","failed","reachable","size","complete","reconnected","watch","deliver","key","then","catch","conversations","receive","event","note","noteId","running","flatMap","close"],"mappings":"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"}
|