@agentshouse/mdruntime 0.1.0-alpha.5 → 0.1.0-alpha.50
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/AGENTS.md +210 -0
- package/README.md +44 -0
- package/dist/adapter.d.ts +253 -19
- package/dist/adapter.d.ts.map +1 -1
- package/dist/adapter.js +2 -1
- package/dist/adapter.js.map +1 -1
- package/dist/attachment.d.ts +3 -0
- package/dist/attachment.d.ts.map +1 -0
- package/dist/attachment.js +11 -0
- package/dist/attachment.js.map +1 -0
- package/dist/bootstrap.d.ts +7 -6
- package/dist/bootstrap.d.ts.map +1 -1
- package/dist/bootstrap.js +30 -10
- package/dist/bootstrap.js.map +1 -1
- package/dist/change-set.d.ts +33 -0
- package/dist/change-set.d.ts.map +1 -0
- package/dist/change-set.js +95 -0
- package/dist/change-set.js.map +1 -0
- package/dist/change.d.ts +10 -0
- package/dist/change.d.ts.map +1 -1
- package/dist/change.js.map +1 -1
- package/dist/client.d.ts +75 -0
- package/dist/client.d.ts.map +1 -0
- package/dist/client.js +237 -0
- package/dist/client.js.map +1 -0
- package/dist/collection.d.ts +26 -12
- package/dist/collection.d.ts.map +1 -1
- package/dist/collection.js +78 -31
- package/dist/collection.js.map +1 -1
- package/dist/connection.d.ts +85 -28
- package/dist/connection.d.ts.map +1 -1
- package/dist/connection.js +1756 -510
- package/dist/connection.js.map +1 -1
- package/dist/conversation.d.ts +79 -0
- package/dist/conversation.d.ts.map +1 -0
- package/dist/conversation.js +635 -0
- package/dist/conversation.js.map +1 -0
- package/dist/durability.d.ts +8 -3
- package/dist/durability.d.ts.map +1 -1
- package/dist/durability.js +8 -62
- package/dist/durability.js.map +1 -1
- package/dist/file.d.ts +20 -0
- package/dist/file.d.ts.map +1 -0
- package/dist/file.js +149 -0
- package/dist/file.js.map +1 -0
- package/dist/host.d.ts +14 -0
- package/dist/host.d.ts.map +1 -0
- package/dist/host.js +213 -0
- package/dist/host.js.map +1 -0
- package/dist/identity.d.ts +3 -0
- package/dist/identity.d.ts.map +1 -0
- package/dist/identity.js +23 -0
- package/dist/identity.js.map +1 -0
- package/dist/index.d.ts +15 -7
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -0
- package/dist/index.js.map +1 -1
- package/dist/memory.d.ts +19 -2
- package/dist/memory.d.ts.map +1 -1
- package/dist/memory.js +283 -24
- package/dist/memory.js.map +1 -1
- package/dist/model.d.ts +55 -0
- package/dist/model.d.ts.map +1 -0
- package/dist/model.js +36 -0
- package/dist/model.js.map +1 -0
- package/dist/observation.d.ts +25 -0
- package/dist/observation.d.ts.map +1 -0
- package/dist/observation.js +92 -0
- package/dist/observation.js.map +1 -0
- package/dist/outcome.d.ts +22 -18
- package/dist/outcome.d.ts.map +1 -1
- package/dist/outcome.js +1 -11
- package/dist/outcome.js.map +1 -1
- package/dist/overlay.d.ts +9 -2
- package/dist/overlay.d.ts.map +1 -1
- package/dist/overlay.js +145 -6
- package/dist/overlay.js.map +1 -1
- package/dist/paths.d.ts +0 -1
- package/dist/paths.d.ts.map +1 -1
- package/dist/paths.js +0 -4
- package/dist/paths.js.map +1 -1
- package/dist/query.d.ts +213 -0
- package/dist/query.d.ts.map +1 -0
- package/dist/query.js +470 -0
- package/dist/query.js.map +1 -0
- package/dist/read-side.d.ts +14 -0
- package/dist/read-side.d.ts.map +1 -0
- package/dist/read-side.js +457 -0
- package/dist/read-side.js.map +1 -0
- package/dist/refresh.d.ts +4 -4
- package/dist/refresh.d.ts.map +1 -1
- package/dist/refresh.js +40 -10
- package/dist/refresh.js.map +1 -1
- package/dist/replica.d.ts +27 -4
- package/dist/replica.d.ts.map +1 -1
- package/dist/replica.js +255 -13
- package/dist/replica.js.map +1 -1
- package/dist/room-draft.d.ts +124 -0
- package/dist/room-draft.d.ts.map +1 -0
- package/dist/room-draft.js +406 -0
- package/dist/room-draft.js.map +1 -0
- package/dist/rows.d.ts +41 -0
- package/dist/rows.d.ts.map +1 -0
- package/dist/rows.js +102 -0
- package/dist/rows.js.map +1 -0
- package/dist/save.d.ts +11 -2
- package/dist/save.d.ts.map +1 -1
- package/dist/save.js +116 -128
- package/dist/save.js.map +1 -1
- package/dist/search.d.ts +61 -0
- package/dist/search.d.ts.map +1 -0
- package/dist/search.js +155 -0
- package/dist/search.js.map +1 -0
- package/dist/status.d.ts +9 -2
- package/dist/status.d.ts.map +1 -1
- package/dist/status.js +5 -4
- package/dist/status.js.map +1 -1
- package/dist/store.d.ts +90 -18
- package/dist/store.d.ts.map +1 -1
- package/dist/store.js +492 -67
- package/dist/store.js.map +1 -1
- package/dist/transfer.d.ts +5 -0
- package/dist/transfer.d.ts.map +1 -1
- package/dist/transfer.js.map +1 -1
- package/dist/wire.d.ts +64 -0
- package/dist/wire.d.ts.map +1 -0
- package/dist/wire.js +145 -0
- package/dist/wire.js.map +1 -0
- package/package.json +15 -13
package/dist/search.js
ADDED
|
@@ -0,0 +1,155 @@
|
|
|
1
|
+
import MiniSearch from 'minisearch';
|
|
2
|
+
import { invalid, known, limitOf, plain } from './query.js';
|
|
3
|
+
const FIELDS = [
|
|
4
|
+
'fields',
|
|
5
|
+
'sections',
|
|
6
|
+
'preamble',
|
|
7
|
+
'path',
|
|
8
|
+
'text'
|
|
9
|
+
];
|
|
10
|
+
function documentId(room, path) {
|
|
11
|
+
return JSON.stringify([
|
|
12
|
+
'document',
|
|
13
|
+
room,
|
|
14
|
+
path
|
|
15
|
+
]);
|
|
16
|
+
}
|
|
17
|
+
function messageId(conversation, identity) {
|
|
18
|
+
return JSON.stringify([
|
|
19
|
+
'message',
|
|
20
|
+
conversation,
|
|
21
|
+
identity
|
|
22
|
+
]);
|
|
23
|
+
}
|
|
24
|
+
function scalars(value) {
|
|
25
|
+
if (value === null || value === undefined) return [];
|
|
26
|
+
if (Array.isArray(value)) return value.flatMap(scalars);
|
|
27
|
+
if (typeof value === 'object') return Object.values(value).flatMap(scalars);
|
|
28
|
+
return [
|
|
29
|
+
String(value)
|
|
30
|
+
];
|
|
31
|
+
}
|
|
32
|
+
export function searchPlanOf(input) {
|
|
33
|
+
if (!plain(input)) invalid('search', 'expects a search object');
|
|
34
|
+
known(input, [
|
|
35
|
+
'text',
|
|
36
|
+
'documents',
|
|
37
|
+
'conversations',
|
|
38
|
+
'limit'
|
|
39
|
+
], '');
|
|
40
|
+
if (typeof input.text !== 'string') invalid('text', 'expects text');
|
|
41
|
+
const conversations = input.conversations;
|
|
42
|
+
if (conversations !== undefined && (!Array.isArray(conversations) || conversations.some((named)=>typeof named !== 'string'))) {
|
|
43
|
+
invalid('conversations', 'expects a list of conversations');
|
|
44
|
+
}
|
|
45
|
+
return {
|
|
46
|
+
text: input.text,
|
|
47
|
+
documents: input.documents,
|
|
48
|
+
conversations: conversations ?? null,
|
|
49
|
+
limit: limitOf(input.limit)
|
|
50
|
+
};
|
|
51
|
+
}
|
|
52
|
+
export function createSearchIndex(source) {
|
|
53
|
+
let index = null;
|
|
54
|
+
const documents = new Map();
|
|
55
|
+
const messages = new Map();
|
|
56
|
+
const changedDocuments = new Map();
|
|
57
|
+
const changedMessages = new Map();
|
|
58
|
+
function addDocument(built, document) {
|
|
59
|
+
const id = documentId(document.room, document.path);
|
|
60
|
+
documents.set(id, {
|
|
61
|
+
room: document.room,
|
|
62
|
+
path: document.path,
|
|
63
|
+
type: document.type
|
|
64
|
+
});
|
|
65
|
+
built.add({
|
|
66
|
+
id,
|
|
67
|
+
fields: scalars(document.fields).join('\n'),
|
|
68
|
+
sections: Object.entries(document.sections).map(([heading, text])=>`${heading}\n${text}`).join('\n'),
|
|
69
|
+
preamble: document.preamble,
|
|
70
|
+
path: document.path
|
|
71
|
+
});
|
|
72
|
+
}
|
|
73
|
+
function addMessage(built, message) {
|
|
74
|
+
const id = messageId(message.conversation, message.identity);
|
|
75
|
+
messages.set(id, {
|
|
76
|
+
conversation: message.conversation,
|
|
77
|
+
identity: message.identity
|
|
78
|
+
});
|
|
79
|
+
built.add({
|
|
80
|
+
id,
|
|
81
|
+
text: message.text
|
|
82
|
+
});
|
|
83
|
+
}
|
|
84
|
+
function current() {
|
|
85
|
+
if (index === null) {
|
|
86
|
+
const built = new MiniSearch({
|
|
87
|
+
fields: FIELDS
|
|
88
|
+
});
|
|
89
|
+
for (const document of source.documents())addDocument(built, document);
|
|
90
|
+
for (const message of source.messages())addMessage(built, message);
|
|
91
|
+
index = built;
|
|
92
|
+
return built;
|
|
93
|
+
}
|
|
94
|
+
const built = index;
|
|
95
|
+
for (const [id, { room, path }] of changedDocuments){
|
|
96
|
+
if (documents.delete(id)) built.discard(id);
|
|
97
|
+
const document = source.document(room, path);
|
|
98
|
+
if (document !== null) addDocument(built, document);
|
|
99
|
+
}
|
|
100
|
+
changedDocuments.clear();
|
|
101
|
+
for (const [id, { conversation, identity }] of changedMessages){
|
|
102
|
+
if (messages.delete(id)) built.discard(id);
|
|
103
|
+
const message = source.message(conversation, identity);
|
|
104
|
+
if (message !== null) addMessage(built, message);
|
|
105
|
+
}
|
|
106
|
+
changedMessages.clear();
|
|
107
|
+
return built;
|
|
108
|
+
}
|
|
109
|
+
function ranked(built, text, entries, keep, limit) {
|
|
110
|
+
const found = built.search(text, {
|
|
111
|
+
filter: ({ id })=>{
|
|
112
|
+
const entry = entries.get(id);
|
|
113
|
+
return entry !== undefined && keep(entry, id);
|
|
114
|
+
}
|
|
115
|
+
});
|
|
116
|
+
return (limit === null ? found : found.slice(0, limit)).map(({ id, score, match })=>({
|
|
117
|
+
...entries.get(id),
|
|
118
|
+
score,
|
|
119
|
+
match
|
|
120
|
+
}));
|
|
121
|
+
}
|
|
122
|
+
return {
|
|
123
|
+
changed (set) {
|
|
124
|
+
if (index === null) return;
|
|
125
|
+
for (const { locator, path } of set.documents){
|
|
126
|
+
changedDocuments.set(documentId(locator, path), {
|
|
127
|
+
room: locator,
|
|
128
|
+
path
|
|
129
|
+
});
|
|
130
|
+
}
|
|
131
|
+
for (const { conversation, identity } of set.messages){
|
|
132
|
+
changedMessages.set(messageId(conversation, identity), {
|
|
133
|
+
conversation,
|
|
134
|
+
identity
|
|
135
|
+
});
|
|
136
|
+
}
|
|
137
|
+
},
|
|
138
|
+
search ({ text, conversations, limit }, selected) {
|
|
139
|
+
const built = current();
|
|
140
|
+
const chosen = selected === null ? null : new Set(selected.map(({ room, path })=>documentId(room, path)));
|
|
141
|
+
return {
|
|
142
|
+
documents: ranked(built, text, documents, (_entry, id)=>chosen === null || chosen.has(id), limit).map(({ match, ...hit })=>({
|
|
143
|
+
...hit,
|
|
144
|
+
matches: match
|
|
145
|
+
})),
|
|
146
|
+
messages: ranked(built, text, messages, ({ conversation })=>conversations === null || conversations.includes(conversation), limit).map(({ match, ...hit })=>({
|
|
147
|
+
...hit,
|
|
148
|
+
matches: match
|
|
149
|
+
}))
|
|
150
|
+
};
|
|
151
|
+
}
|
|
152
|
+
};
|
|
153
|
+
}
|
|
154
|
+
|
|
155
|
+
//# sourceMappingURL=search.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["/workspace/packages/mdruntime/src/search.ts"],"sourcesContent":["import MiniSearch from 'minisearch';\nimport type { ChangeSet } from './change-set.js';\nimport { invalid, known, limitOf, plain, type Filter } from './query.js';\n\nexport type DocumentPart = 'fields' | 'sections' | 'preamble' | 'path';\n\nexport type SearchRequest = {\n text: string;\n documents?: Filter;\n conversations?: readonly string[];\n limit?: number;\n};\n\nexport type DocumentHit = {\n room: string;\n path: string;\n type: string;\n score: number;\n matches: Readonly<Record<string, readonly DocumentPart[]>>;\n};\n\nexport type MessageHit = {\n conversation: string;\n identity: string;\n score: number;\n matches: Readonly<Record<string, readonly 'text'[]>>;\n};\n\nexport type SearchResult = {\n documents: readonly DocumentHit[];\n messages: readonly MessageHit[];\n};\n\nexport type SearchedDocument = {\n room: string;\n path: string;\n type: string;\n fields: Readonly<Record<string, unknown>>;\n preamble: string;\n sections: Readonly<Record<string, string>>;\n};\n\nexport type SearchedMessage = { conversation: string; identity: string; text: string };\n\nexport type SearchSource = {\n documents(): readonly SearchedDocument[];\n document(room: string, path: string): SearchedDocument | null;\n messages(): readonly SearchedMessage[];\n message(conversation: string, identity: string): SearchedMessage | null;\n};\n\nexport type SearchPlan = {\n text: string;\n documents: unknown;\n conversations: readonly string[] | null;\n limit: number | null;\n};\n\nexport type SearchIndex = {\n changed(set: ChangeSet): void;\n search(\n plan: SearchPlan,\n documents: readonly { room: string; path: string }[] | null,\n ): SearchResult;\n};\n\ntype Indexed = {\n id: string;\n fields?: string;\n sections?: string;\n preamble?: string;\n path?: string;\n text?: string;\n};\n\nconst FIELDS = ['fields', 'sections', 'preamble', 'path', 'text'];\n\nfunction documentId(room: string, path: string): string {\n return JSON.stringify(['document', room, path]);\n}\n\nfunction messageId(conversation: string, identity: string): string {\n return JSON.stringify(['message', conversation, identity]);\n}\n\nfunction scalars(value: unknown): readonly string[] {\n if (value === null || value === undefined) return [];\n if (Array.isArray(value)) return value.flatMap(scalars);\n if (typeof value === 'object') return Object.values(value).flatMap(scalars);\n return [String(value)];\n}\n\nexport function searchPlanOf(input: unknown): SearchPlan {\n if (!plain(input)) invalid('search', 'expects a search object');\n known(input, ['text', 'documents', 'conversations', 'limit'], '');\n if (typeof input.text !== 'string') invalid('text', 'expects text');\n const conversations = input.conversations;\n if (\n conversations !== undefined &&\n (!Array.isArray(conversations) || conversations.some((named) => typeof named !== 'string'))\n ) {\n invalid('conversations', 'expects a list of conversations');\n }\n return {\n text: input.text,\n documents: input.documents,\n conversations: (conversations as readonly string[] | undefined) ?? null,\n limit: limitOf(input.limit),\n };\n}\n\ntype DocumentEntry = { room: string; path: string; type: string };\n\ntype MessageEntry = { conversation: string; identity: string };\n\nexport function createSearchIndex(source: SearchSource): SearchIndex {\n let index: MiniSearch<Indexed> | null = null;\n const documents = new Map<string, DocumentEntry>();\n const messages = new Map<string, MessageEntry>();\n const changedDocuments = new Map<string, { room: string; path: string }>();\n const changedMessages = new Map<string, MessageEntry>();\n\n function addDocument(built: MiniSearch<Indexed>, document: SearchedDocument) {\n const id = documentId(document.room, document.path);\n documents.set(id, { room: document.room, path: document.path, type: document.type });\n built.add({\n id,\n fields: scalars(document.fields).join('\\n'),\n sections: Object.entries(document.sections)\n .map(([heading, text]) => `${heading}\\n${text}`)\n .join('\\n'),\n preamble: document.preamble,\n path: document.path,\n });\n }\n\n function addMessage(built: MiniSearch<Indexed>, message: SearchedMessage) {\n const id = messageId(message.conversation, message.identity);\n messages.set(id, { conversation: message.conversation, identity: message.identity });\n built.add({ id, text: message.text });\n }\n\n function current(): MiniSearch<Indexed> {\n if (index === null) {\n const built = new MiniSearch<Indexed>({ fields: FIELDS });\n for (const document of source.documents()) addDocument(built, document);\n for (const message of source.messages()) addMessage(built, message);\n index = built;\n return built;\n }\n const built = index;\n for (const [id, { room, path }] of changedDocuments) {\n if (documents.delete(id)) built.discard(id);\n const document = source.document(room, path);\n if (document !== null) addDocument(built, document);\n }\n changedDocuments.clear();\n for (const [id, { conversation, identity }] of changedMessages) {\n if (messages.delete(id)) built.discard(id);\n const message = source.message(conversation, identity);\n if (message !== null) addMessage(built, message);\n }\n changedMessages.clear();\n return built;\n }\n\n function ranked<Entry>(\n built: MiniSearch<Indexed>,\n text: string,\n entries: ReadonlyMap<string, Entry>,\n keep: (entry: Entry, id: string) => boolean,\n limit: number | null,\n ) {\n const found = built.search(text, {\n filter: ({ id }) => {\n const entry = entries.get(id);\n return entry !== undefined && keep(entry, id);\n },\n });\n return (limit === null ? found : found.slice(0, limit)).map(({ id, score, match }) => ({\n ...(entries.get(id) as Entry),\n score,\n match,\n }));\n }\n\n return {\n changed(set) {\n if (index === null) return;\n for (const { locator, path } of set.documents) {\n changedDocuments.set(documentId(locator, path), { room: locator, path });\n }\n for (const { conversation, identity } of set.messages) {\n changedMessages.set(messageId(conversation, identity), { conversation, identity });\n }\n },\n search({ text, conversations, limit }, selected) {\n const built = current();\n const chosen =\n selected === null\n ? null\n : new Set(selected.map(({ room, path }) => documentId(room, path)));\n return {\n documents: ranked(\n built,\n text,\n documents,\n (_entry, id) => chosen === null || chosen.has(id),\n limit,\n ).map(({ match, ...hit }) => ({ ...hit, matches: match as DocumentHit['matches'] })),\n messages: ranked(\n built,\n text,\n messages,\n ({ conversation }) => conversations === null || conversations.includes(conversation),\n limit,\n ).map(({ match, ...hit }) => ({ ...hit, matches: match as MessageHit['matches'] })),\n };\n },\n };\n}\n"],"names":["MiniSearch","invalid","known","limitOf","plain","FIELDS","documentId","room","path","JSON","stringify","messageId","conversation","identity","scalars","value","undefined","Array","isArray","flatMap","Object","values","String","searchPlanOf","input","text","conversations","some","named","documents","limit","createSearchIndex","source","index","Map","messages","changedDocuments","changedMessages","addDocument","built","document","id","set","type","add","fields","join","sections","entries","map","heading","preamble","addMessage","message","current","delete","discard","clear","ranked","keep","found","search","filter","entry","get","slice","score","match","changed","locator","selected","chosen","Set","_entry","has","hit","matches","includes"],"mappings":"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"}
|
package/dist/status.d.ts
CHANGED
|
@@ -1,8 +1,15 @@
|
|
|
1
|
+
import type { ReturnReason } from './room-draft.js';
|
|
2
|
+
export type AttentionEntry = {
|
|
3
|
+
room: string;
|
|
4
|
+
path: string;
|
|
5
|
+
returned: ReturnReason;
|
|
6
|
+
};
|
|
1
7
|
export type SyncStatus = {
|
|
2
8
|
state: 'pending' | 'syncing' | 'synced';
|
|
3
9
|
lastCompleted: string | null;
|
|
4
10
|
providerUnreachable: boolean;
|
|
5
|
-
attentionRequired:
|
|
11
|
+
attentionRequired: readonly AttentionEntry[];
|
|
12
|
+
reset: string | null;
|
|
6
13
|
};
|
|
7
14
|
export type CycleProgress = {
|
|
8
15
|
complete: boolean;
|
|
@@ -10,7 +17,7 @@ export type CycleProgress = {
|
|
|
10
17
|
};
|
|
11
18
|
export declare const STARTING: SyncStatus;
|
|
12
19
|
export declare function transferring(status: SyncStatus): SyncStatus;
|
|
13
|
-
export declare function settled(status: SyncStatus, progress: CycleProgress, at: string, queued: boolean,
|
|
20
|
+
export declare function settled(status: SyncStatus, progress: CycleProgress, at: string | null, queued: boolean, attention: Pick<SyncStatus, 'attentionRequired' | 'reset'>): SyncStatus;
|
|
14
21
|
export declare function saving(status: SyncStatus): SyncStatus;
|
|
15
22
|
export declare function same(one: SyncStatus, other: SyncStatus): boolean;
|
|
16
23
|
//# sourceMappingURL=status.d.ts.map
|
package/dist/status.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"status.d.ts","sourceRoot":"","sources":["../src/status.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,UAAU,GAAG;IACvB,KAAK,EAAE,SAAS,GAAG,SAAS,GAAG,QAAQ,CAAC;IACxC,aAAa,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7B,mBAAmB,EAAE,OAAO,CAAC;IAC7B,iBAAiB,EAAE,
|
|
1
|
+
{"version":3,"file":"status.d.ts","sourceRoot":"","sources":["../src/status.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAEpD,MAAM,MAAM,cAAc,GAAG;IAC3B,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,YAAY,CAAC;CACxB,CAAC;AAEF,MAAM,MAAM,UAAU,GAAG;IACvB,KAAK,EAAE,SAAS,GAAG,SAAS,GAAG,QAAQ,CAAC;IACxC,aAAa,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7B,mBAAmB,EAAE,OAAO,CAAC;IAC7B,iBAAiB,EAAE,SAAS,cAAc,EAAE,CAAC;IAC7C,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;CACtB,CAAC;AAEF,MAAM,MAAM,aAAa,GAAG;IAC1B,QAAQ,EAAE,OAAO,CAAC;IAClB,SAAS,EAAE,OAAO,CAAC;CACpB,CAAC;AAEF,eAAO,MAAM,QAAQ,EAAE,UAMtB,CAAC;AAEF,wBAAgB,YAAY,CAAC,MAAM,EAAE,UAAU,GAAG,UAAU,CAE3D;AAED,wBAAgB,OAAO,CACrB,MAAM,EAAE,UAAU,EAClB,QAAQ,EAAE,aAAa,EACvB,EAAE,EAAE,MAAM,GAAG,IAAI,EACjB,MAAM,EAAE,OAAO,EACf,SAAS,EAAE,IAAI,CAAC,UAAU,EAAE,mBAAmB,GAAG,OAAO,CAAC,GACzD,UAAU,CAOZ;AAED,wBAAgB,MAAM,CAAC,MAAM,EAAE,UAAU,GAAG,UAAU,CAErD;AAED,wBAAgB,IAAI,CAAC,GAAG,EAAE,UAAU,EAAE,KAAK,EAAE,UAAU,GAAG,OAAO,CAQhE"}
|
package/dist/status.js
CHANGED
|
@@ -2,7 +2,8 @@ export const STARTING = {
|
|
|
2
2
|
state: 'syncing',
|
|
3
3
|
lastCompleted: null,
|
|
4
4
|
providerUnreachable: false,
|
|
5
|
-
attentionRequired:
|
|
5
|
+
attentionRequired: [],
|
|
6
|
+
reset: null
|
|
6
7
|
};
|
|
7
8
|
export function transferring(status) {
|
|
8
9
|
return {
|
|
@@ -10,12 +11,12 @@ export function transferring(status) {
|
|
|
10
11
|
state: 'syncing'
|
|
11
12
|
};
|
|
12
13
|
}
|
|
13
|
-
export function settled(status, progress, at, queued,
|
|
14
|
+
export function settled(status, progress, at, queued, attention) {
|
|
14
15
|
return {
|
|
15
16
|
state: queued ? 'pending' : progress.complete ? 'synced' : status.state,
|
|
16
17
|
lastCompleted: progress.complete ? at : status.lastCompleted,
|
|
17
18
|
providerUnreachable: !progress.reachable,
|
|
18
|
-
|
|
19
|
+
...attention
|
|
19
20
|
};
|
|
20
21
|
}
|
|
21
22
|
export function saving(status) {
|
|
@@ -25,7 +26,7 @@ export function saving(status) {
|
|
|
25
26
|
};
|
|
26
27
|
}
|
|
27
28
|
export function same(one, other) {
|
|
28
|
-
return one.state === other.state && one.lastCompleted === other.lastCompleted && one.providerUnreachable === other.providerUnreachable && one.attentionRequired === other.attentionRequired;
|
|
29
|
+
return one.state === other.state && one.lastCompleted === other.lastCompleted && one.providerUnreachable === other.providerUnreachable && one.reset === other.reset && JSON.stringify(one.attentionRequired) === JSON.stringify(other.attentionRequired);
|
|
29
30
|
}
|
|
30
31
|
|
|
31
32
|
//# sourceMappingURL=status.js.map
|
package/dist/status.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["/workspace/packages/mdruntime/src/status.ts"],"sourcesContent":["
|
|
1
|
+
{"version":3,"sources":["/workspace/packages/mdruntime/src/status.ts"],"sourcesContent":["import type { ReturnReason } from './room-draft.js';\n\nexport type AttentionEntry = {\n room: string;\n path: string;\n returned: ReturnReason;\n};\n\nexport type SyncStatus = {\n state: 'pending' | 'syncing' | 'synced';\n lastCompleted: string | null;\n providerUnreachable: boolean;\n attentionRequired: readonly AttentionEntry[];\n reset: string | null;\n};\n\nexport type CycleProgress = {\n complete: boolean;\n reachable: boolean;\n};\n\nexport const STARTING: SyncStatus = {\n state: 'syncing',\n lastCompleted: null,\n providerUnreachable: false,\n attentionRequired: [],\n reset: null,\n};\n\nexport function transferring(status: SyncStatus): SyncStatus {\n return { ...status, state: 'syncing' };\n}\n\nexport function settled(\n status: SyncStatus,\n progress: CycleProgress,\n at: string | null,\n queued: boolean,\n attention: Pick<SyncStatus, 'attentionRequired' | 'reset'>,\n): SyncStatus {\n return {\n state: queued ? 'pending' : progress.complete ? 'synced' : status.state,\n lastCompleted: progress.complete ? at : status.lastCompleted,\n providerUnreachable: !progress.reachable,\n ...attention,\n };\n}\n\nexport function saving(status: SyncStatus): SyncStatus {\n return { ...status, state: 'pending' };\n}\n\nexport function same(one: SyncStatus, other: SyncStatus): boolean {\n return (\n one.state === other.state &&\n one.lastCompleted === other.lastCompleted &&\n one.providerUnreachable === other.providerUnreachable &&\n one.reset === other.reset &&\n JSON.stringify(one.attentionRequired) === JSON.stringify(other.attentionRequired)\n );\n}\n"],"names":["STARTING","state","lastCompleted","providerUnreachable","attentionRequired","reset","transferring","status","settled","progress","at","queued","attention","complete","reachable","saving","same","one","other","JSON","stringify"],"mappings":"AAqBA,OAAO,MAAMA,WAAuB;IAClCC,OAAO;IACPC,eAAe;IACfC,qBAAqB;IACrBC,mBAAmB,EAAE;IACrBC,OAAO;AACT,EAAE;AAEF,OAAO,SAASC,aAAaC,MAAkB;IAC7C,OAAO;QAAE,GAAGA,MAAM;QAAEN,OAAO;IAAU;AACvC;AAEA,OAAO,SAASO,QACdD,MAAkB,EAClBE,QAAuB,EACvBC,EAAiB,EACjBC,MAAe,EACfC,SAA0D;IAE1D,OAAO;QACLX,OAAOU,SAAS,YAAYF,SAASI,QAAQ,GAAG,WAAWN,OAAON,KAAK;QACvEC,eAAeO,SAASI,QAAQ,GAAGH,KAAKH,OAAOL,aAAa;QAC5DC,qBAAqB,CAACM,SAASK,SAAS;QACxC,GAAGF,SAAS;IACd;AACF;AAEA,OAAO,SAASG,OAAOR,MAAkB;IACvC,OAAO;QAAE,GAAGA,MAAM;QAAEN,OAAO;IAAU;AACvC;AAEA,OAAO,SAASe,KAAKC,GAAe,EAAEC,KAAiB;IACrD,OACED,IAAIhB,KAAK,KAAKiB,MAAMjB,KAAK,IACzBgB,IAAIf,aAAa,KAAKgB,MAAMhB,aAAa,IACzCe,IAAId,mBAAmB,KAAKe,MAAMf,mBAAmB,IACrDc,IAAIZ,KAAK,KAAKa,MAAMb,KAAK,IACzBc,KAAKC,SAAS,CAACH,IAAIb,iBAAiB,MAAMe,KAAKC,SAAS,CAACF,MAAMd,iBAAiB;AAEpF"}
|
package/dist/store.d.ts
CHANGED
|
@@ -1,42 +1,114 @@
|
|
|
1
|
-
import type {
|
|
1
|
+
import type { ModelState } from './model.js';
|
|
2
|
+
import type { Capability, Discovery, HeadChange, OperationScopes, ProviderLimit, ReplicaAdmission, RoomAttachment, TypedSelection } from './adapter.js';
|
|
3
|
+
import type { AcceptedMessage } from './adapter.js';
|
|
2
4
|
import type { ChangeBatch } from './change.js';
|
|
3
|
-
import type {
|
|
5
|
+
import type { ChatDraftFile } from './file.js';
|
|
6
|
+
import type { Submission, SubmissionOutcome } from './outcome.js';
|
|
7
|
+
import type { RoomDraftRecord, SavedDraft } from './room-draft.js';
|
|
4
8
|
export type ReplicaRecord = {
|
|
5
9
|
locator: string;
|
|
6
10
|
name: string;
|
|
7
|
-
|
|
11
|
+
operations: OperationScopes;
|
|
12
|
+
replica: ReplicaAdmission;
|
|
13
|
+
model: ModelState;
|
|
14
|
+
attachedModel: import('./model.js').ModelIdentity | null;
|
|
15
|
+
typedSelection: TypedSelection | null;
|
|
16
|
+
selectionModel: ModelState;
|
|
17
|
+
untypedFolders: readonly string[];
|
|
8
18
|
providerOwnedPaths: readonly string[];
|
|
9
19
|
roomVersion: string;
|
|
10
20
|
documents: Readonly<Record<string, string>>;
|
|
11
21
|
binaryTargets: readonly string[];
|
|
12
22
|
revisions: Readonly<Record<string, string>>;
|
|
23
|
+
changes: Readonly<Record<string, HeadChange>>;
|
|
24
|
+
written: Readonly<Record<string, string>>;
|
|
25
|
+
attachments: readonly RoomAttachment[];
|
|
13
26
|
};
|
|
14
|
-
export type
|
|
27
|
+
export type PendingState = {
|
|
28
|
+
readonly drafts: readonly SavedDraft[];
|
|
29
|
+
readonly submission: Submission;
|
|
30
|
+
readonly lost: boolean;
|
|
31
|
+
readonly upload?: unknown;
|
|
32
|
+
};
|
|
33
|
+
export type OutcomeRecord = {
|
|
15
34
|
locator: string;
|
|
16
|
-
|
|
17
|
-
|
|
35
|
+
id: string;
|
|
36
|
+
outcome: SubmissionOutcome;
|
|
18
37
|
};
|
|
19
|
-
export type
|
|
38
|
+
export type QueueRecord = {
|
|
20
39
|
locator: string;
|
|
21
|
-
|
|
22
|
-
|
|
40
|
+
pending: readonly {
|
|
41
|
+
batch: ChangeBatch;
|
|
42
|
+
state: PendingState;
|
|
43
|
+
}[];
|
|
44
|
+
};
|
|
45
|
+
export type PresentationRecord = {
|
|
46
|
+
app: string;
|
|
47
|
+
value: unknown;
|
|
48
|
+
};
|
|
49
|
+
export type HeldConversation = {
|
|
50
|
+
conversation: string;
|
|
51
|
+
read: string | null | undefined;
|
|
52
|
+
messages: readonly AcceptedMessage[];
|
|
53
|
+
};
|
|
54
|
+
export type ConversationWrite = {
|
|
55
|
+
conversation: string;
|
|
56
|
+
messages: readonly AcceptedMessage[];
|
|
57
|
+
read?: string | null;
|
|
58
|
+
sealed?: boolean;
|
|
59
|
+
};
|
|
60
|
+
export type ChatDraftRecord = {
|
|
61
|
+
conversation: string;
|
|
62
|
+
text: string;
|
|
63
|
+
files: readonly ChatDraftFile[];
|
|
64
|
+
turn: string | null;
|
|
65
|
+
};
|
|
66
|
+
export type RecordWrite = {
|
|
67
|
+
next: ReplicaRecord;
|
|
68
|
+
previous: ReplicaRecord | null;
|
|
69
|
+
queue: readonly ChangeBatch[];
|
|
70
|
+
previousQueue?: readonly ChangeBatch[];
|
|
71
|
+
saved?: readonly SavedDraft[];
|
|
72
|
+
outcomes?: readonly {
|
|
73
|
+
id: string;
|
|
74
|
+
outcome: SubmissionOutcome | null;
|
|
75
|
+
}[];
|
|
76
|
+
roomDrafts?: readonly RoomDraftRecord[];
|
|
77
|
+
consumedRoomDrafts?: readonly string[];
|
|
23
78
|
};
|
|
24
|
-
export type
|
|
79
|
+
export type RuntimeStore = {
|
|
25
80
|
all(): Promise<readonly ReplicaRecord[]>;
|
|
26
|
-
|
|
81
|
+
write(input: RecordWrite): Promise<void>;
|
|
82
|
+
revokeModels(records: readonly {
|
|
83
|
+
record: ReplicaRecord;
|
|
84
|
+
queue: readonly ChangeBatch[];
|
|
85
|
+
}[]): Promise<void>;
|
|
27
86
|
lastCompleted(): Promise<string | null>;
|
|
28
87
|
complete(at: string): Promise<void>;
|
|
29
88
|
providerLimits(): Promise<readonly ProviderLimit[]>;
|
|
30
|
-
|
|
89
|
+
capabilities(): Promise<readonly Capability[]>;
|
|
90
|
+
slots(): Promise<NonNullable<Discovery['slots']>>;
|
|
91
|
+
declare(limits: readonly ProviderLimit[], capabilities: readonly Capability[], slots: NonNullable<Discovery['slots']>): Promise<void>;
|
|
31
92
|
queues(): Promise<readonly QueueRecord[]>;
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
93
|
+
outcomes(): Promise<readonly OutcomeRecord[]>;
|
|
94
|
+
submit(locator: string, id: string, submission: Submission, lost: boolean): Promise<void>;
|
|
95
|
+
keepUpload(locator: string, id: string, upload: unknown): Promise<void>;
|
|
96
|
+
roomDrafts(): Promise<readonly RoomDraftRecord[]>;
|
|
97
|
+
presentation(): Promise<readonly PresentationRecord[]>;
|
|
98
|
+
present(record: PresentationRecord): Promise<void>;
|
|
99
|
+
conversations(): Promise<readonly HeldConversation[]>;
|
|
100
|
+
keepMessages(write: ConversationWrite): Promise<void>;
|
|
101
|
+
dropConversations(conversations: readonly string[]): Promise<void>;
|
|
102
|
+
chatDrafts(): Promise<readonly ChatDraftRecord[]>;
|
|
103
|
+
keepChatDraft(record: ChatDraftRecord): Promise<void>;
|
|
104
|
+
dropChatDraft(conversation: string): Promise<void>;
|
|
105
|
+
keepRoomDraft(record: RoomDraftRecord): Promise<void>;
|
|
106
|
+
discardRoomDraft(locator: string, path: string): Promise<void>;
|
|
107
|
+
dropRooms(locators: readonly string[]): Promise<void>;
|
|
37
108
|
generation(): Promise<string | null>;
|
|
38
109
|
rememberGeneration(value: string): Promise<void>;
|
|
39
110
|
close(): void;
|
|
40
111
|
};
|
|
41
|
-
export declare function
|
|
112
|
+
export declare function removeRuntimeStore(): Promise<void>;
|
|
113
|
+
export declare function openRuntimeStore(): Promise<RuntimeStore>;
|
|
42
114
|
//# sourceMappingURL=store.d.ts.map
|
package/dist/store.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"store.d.ts","sourceRoot":"","sources":["../src/store.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;
|
|
1
|
+
{"version":3,"file":"store.d.ts","sourceRoot":"","sources":["../src/store.ts"],"names":[],"mappings":"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"}
|