@agentshouse/mdruntime 0.1.0-cedb03eaa48b6 → 0.1.0-cee9c8aa4cd86
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 +86 -71
- package/README.md +9 -8
- package/dist/adapter.d.ts +44 -18
- package/dist/adapter.d.ts.map +1 -1
- package/dist/attached-model.d.ts +4 -1
- package/dist/attached-model.d.ts.map +1 -1
- package/dist/attached-model.js +13 -3
- package/dist/bootstrap.d.ts +13 -6
- package/dist/bootstrap.d.ts.map +1 -1
- package/dist/bootstrap.js +90 -61
- package/dist/chain.d.ts +11 -0
- package/dist/chain.d.ts.map +1 -0
- package/dist/chain.js +64 -0
- package/dist/change-set.d.ts +9 -16
- package/dist/change-set.d.ts.map +1 -1
- package/dist/change-set.js +11 -89
- package/dist/change.d.ts +31 -1
- package/dist/change.d.ts.map +1 -1
- package/dist/change.js +10 -1
- package/dist/chat/house.d.ts +25 -0
- package/dist/chat/house.d.ts.map +1 -0
- package/dist/chat/house.js +38 -0
- package/dist/chat/input.d.ts +3 -1
- package/dist/chat/input.d.ts.map +1 -1
- package/dist/chat/input.js +11 -18
- package/dist/chat/list.d.ts +2 -1
- package/dist/chat/list.d.ts.map +1 -1
- package/dist/chat/list.js +7 -3
- package/dist/chat/markdown.d.ts +1 -0
- package/dist/chat/markdown.d.ts.map +1 -1
- package/dist/chat/markdown.js +78 -20
- package/dist/chat/message.d.ts +1 -0
- package/dist/chat/message.d.ts.map +1 -1
- package/dist/chat/message.js +73 -11
- package/dist/chat/messages.d.ts +14 -1
- package/dist/chat/messages.d.ts.map +1 -1
- package/dist/chat/messages.js +79 -24
- package/dist/chat/name.d.ts +1 -0
- package/dist/chat/name.d.ts.map +1 -1
- package/dist/chat/name.js +1 -1
- package/dist/chat/opened.d.ts +1 -0
- package/dist/chat/opened.d.ts.map +1 -1
- package/dist/chat/opened.js +2 -0
- package/dist/chat/overlay.d.ts +1 -0
- package/dist/chat/overlay.d.ts.map +1 -1
- package/dist/chat/overlay.js +11 -5
- package/dist/chat/parts.d.ts +1 -0
- package/dist/chat/parts.d.ts.map +1 -1
- package/dist/chat/parts.js +3 -2
- package/dist/chat/pieces.d.ts +62 -0
- package/dist/chat/pieces.d.ts.map +1 -0
- package/dist/chat/pieces.js +1110 -0
- package/dist/chat/provider.d.ts +8 -1
- package/dist/chat/provider.d.ts.map +1 -1
- package/dist/chat/provider.js +88 -81
- package/dist/chat/ready.d.ts +5 -2
- package/dist/chat/ready.d.ts.map +1 -1
- package/dist/chat/ready.js +7 -5
- package/dist/chat/room-file.d.ts +8 -0
- package/dist/chat/room-file.d.ts.map +1 -0
- package/dist/chat/room-file.js +72 -0
- package/dist/chat/steady.d.ts +3 -0
- package/dist/chat/steady.d.ts.map +1 -0
- package/dist/chat/steady.js +26 -0
- package/dist/chat/style.d.ts.map +1 -1
- package/dist/chat/style.js +5 -0
- package/dist/chat.d.ts +3 -2
- package/dist/chat.d.ts.map +1 -1
- package/dist/chat.js +2 -2
- package/dist/client.d.ts +6 -1
- package/dist/client.d.ts.map +1 -1
- package/dist/client.js +29 -2
- package/dist/collection.d.ts +6 -19
- package/dist/collection.d.ts.map +1 -1
- package/dist/collection.js +30 -317
- package/dist/compile.d.ts +16 -0
- package/dist/compile.d.ts.map +1 -0
- package/dist/compile.js +718 -0
- package/dist/connection.d.ts +11 -5
- package/dist/connection.d.ts.map +1 -1
- package/dist/connection.js +1931 -706
- package/dist/conversation.d.ts +9 -3
- package/dist/conversation.d.ts.map +1 -1
- package/dist/conversation.js +85 -61
- package/dist/digest.d.ts +7 -0
- package/dist/digest.d.ts.map +1 -0
- package/dist/digest.js +113 -0
- package/dist/durability.d.ts +2 -1
- package/dist/durability.d.ts.map +1 -1
- package/dist/entry.d.ts +3 -1
- package/dist/entry.d.ts.map +1 -1
- package/dist/entry.js +18 -24
- package/dist/file.d.ts +2 -10
- package/dist/file.d.ts.map +1 -1
- package/dist/file.js +3 -120
- package/dist/fulltext.d.ts +27 -0
- package/dist/fulltext.d.ts.map +1 -0
- package/dist/fulltext.js +368 -0
- package/dist/host.d.ts +0 -1
- package/dist/host.d.ts.map +1 -1
- package/dist/host.js +10 -3
- package/dist/identity.d.ts +0 -1
- package/dist/identity.d.ts.map +1 -1
- package/dist/identity.js +0 -3
- package/dist/index.d.ts +8 -5
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +3 -0
- package/dist/live.d.ts +22 -0
- package/dist/live.d.ts.map +1 -0
- package/dist/live.js +123 -0
- package/dist/memory.d.ts +1 -0
- package/dist/memory.d.ts.map +1 -1
- package/dist/memory.js +22 -6
- package/dist/messages.d.ts +28 -0
- package/dist/messages.d.ts.map +1 -0
- package/dist/messages.js +90 -0
- package/dist/name.d.ts +4 -0
- package/dist/name.d.ts.map +1 -0
- package/dist/name.js +122 -0
- package/dist/observation.d.ts +12 -0
- package/dist/observation.d.ts.map +1 -1
- package/dist/observation.js +84 -0
- package/dist/opened.d.ts +22 -0
- package/dist/opened.d.ts.map +1 -0
- package/dist/opened.js +107 -0
- package/dist/outcome.d.ts +29 -4
- package/dist/outcome.d.ts.map +1 -1
- package/dist/outcome.js +25 -0
- package/dist/overlay.d.ts +2 -5
- package/dist/overlay.d.ts.map +1 -1
- package/dist/overlay.js +86 -171
- package/dist/query.d.ts +2 -1
- package/dist/query.d.ts.map +1 -1
- package/dist/query.js +1 -0
- package/dist/reach.d.ts +5 -1
- package/dist/reach.d.ts.map +1 -1
- package/dist/reach.js +158 -52
- package/dist/readiness.d.ts +3 -3
- package/dist/readiness.d.ts.map +1 -1
- package/dist/reads.js +1 -1
- package/dist/recovery.d.ts +2 -2
- package/dist/recovery.d.ts.map +1 -1
- package/dist/recovery.js +8 -7
- package/dist/refresh.d.ts +10 -13
- package/dist/refresh.d.ts.map +1 -1
- package/dist/refresh.js +74 -51
- package/dist/replica.d.ts +54 -36
- package/dist/replica.d.ts.map +1 -1
- package/dist/replica.js +277 -184
- package/dist/room-draft.d.ts +3 -1
- package/dist/room-draft.d.ts.map +1 -1
- package/dist/room-draft.js +29 -22
- package/dist/rows.d.ts +29 -31
- package/dist/rows.d.ts.map +1 -1
- package/dist/rows.js +113 -69
- package/dist/save.d.ts +50 -14
- package/dist/save.d.ts.map +1 -1
- package/dist/save.js +502 -178
- package/dist/search.d.ts +11 -43
- package/dist/search.d.ts.map +1 -1
- package/dist/search.js +0 -213
- package/dist/shared.d.ts +8 -3
- package/dist/shared.d.ts.map +1 -1
- package/dist/shared.js +129 -66
- package/dist/store.d.ts +79 -93
- package/dist/store.d.ts.map +1 -1
- package/dist/store.js +318 -687
- package/dist/stored.d.ts +138 -0
- package/dist/stored.d.ts.map +1 -0
- package/dist/stored.js +544 -0
- package/dist/tables.d.ts +332 -0
- package/dist/tables.d.ts.map +1 -0
- package/dist/tables.js +570 -0
- package/dist/turn.d.ts +4 -2
- package/dist/turn.d.ts.map +1 -1
- package/dist/turn.js +46 -22
- package/dist/validation.d.ts +30 -0
- package/dist/validation.d.ts.map +1 -0
- package/dist/validation.js +162 -0
- package/dist/windows.d.ts +2 -6
- package/dist/windows.d.ts.map +1 -1
- package/dist/windows.js +30 -34
- package/dist/wire.d.ts +16 -0
- package/dist/wire.d.ts.map +1 -1
- package/dist/wire.js +4 -0
- package/dist/words.d.ts +19 -0
- package/dist/words.d.ts.map +1 -0
- package/dist/words.js +150 -0
- package/package.json +10 -4
- package/dist/read-side.d.ts +0 -27
- package/dist/read-side.d.ts.map +0 -1
- package/dist/read-side.js +0 -824
package/dist/chat/messages.js
CHANGED
|
@@ -1,17 +1,50 @@
|
|
|
1
|
+
import { sourceOf } from './house.js';
|
|
1
2
|
import { contextIn, jobOf, partsOf, stillRunning } from './parts.js';
|
|
2
3
|
import { list, record, text } from './read.js';
|
|
4
|
+
const SAID = new WeakMap();
|
|
5
|
+
const CONVERTED = new WeakMap();
|
|
3
6
|
export function saidOf(entry) {
|
|
7
|
+
const held = SAID.get(entry);
|
|
8
|
+
if (held !== undefined)
|
|
9
|
+
return held;
|
|
4
10
|
const message = record(entry.message);
|
|
5
|
-
|
|
11
|
+
const house = text(message, 'role') === 'house';
|
|
12
|
+
const said = {
|
|
6
13
|
turn: text(message, 'turn_id') ?? entry.turn,
|
|
7
14
|
user: text(message, 'role') === 'user',
|
|
15
|
+
house,
|
|
16
|
+
source: house ? sourceOf(message.source) : null,
|
|
17
|
+
waiting: message.waiting === true,
|
|
8
18
|
text: text(message, 'text') ?? '',
|
|
19
|
+
transcripts: list(message, 'transcripts').flatMap((entry) => {
|
|
20
|
+
const path = text(record(entry), 'path');
|
|
21
|
+
const said = text(record(entry), 'text');
|
|
22
|
+
return path === null || said === null ? [] : [{ path, text: said }];
|
|
23
|
+
}),
|
|
9
24
|
parts: partsOf(list(message, 'parts')),
|
|
10
25
|
context: contextIn(message.context),
|
|
11
26
|
failure: text(message, 'failure'),
|
|
27
|
+
resumeRefused: message.resume_refused === true,
|
|
12
28
|
undelivered: message.telegram_undelivered === true,
|
|
13
|
-
files: list(message, 'files').flatMap((one) => text(record(one), 'name') ?? []),
|
|
14
29
|
};
|
|
30
|
+
SAID.set(entry, said);
|
|
31
|
+
return said;
|
|
32
|
+
}
|
|
33
|
+
function sameWork(held, now) {
|
|
34
|
+
return (held.length === now.length &&
|
|
35
|
+
held.every((one, at) => one.kind === now[at].kind && one.title === now[at].title && one.next === now[at].next));
|
|
36
|
+
}
|
|
37
|
+
function converted(entry, lasting, again, unknown, convert) {
|
|
38
|
+
const held = CONVERTED.get(entry);
|
|
39
|
+
if (held !== undefined &&
|
|
40
|
+
held.again === again &&
|
|
41
|
+
held.unknown === unknown &&
|
|
42
|
+
sameWork(held.lasting, lasting)) {
|
|
43
|
+
return held.message;
|
|
44
|
+
}
|
|
45
|
+
const message = convert();
|
|
46
|
+
CONVERTED.set(entry, { lasting, again, unknown, message });
|
|
47
|
+
return message;
|
|
15
48
|
}
|
|
16
49
|
function markerArgs(part) {
|
|
17
50
|
if (part.marker !== 'job')
|
|
@@ -58,7 +91,7 @@ function contentOf(id, parts, live) {
|
|
|
58
91
|
args: { steps: part.steps.map((step) => ({ ...step })) },
|
|
59
92
|
};
|
|
60
93
|
case 'image':
|
|
61
|
-
return { type: 'file', filename: part.name, mimeType: part.mediaType, data:
|
|
94
|
+
return { type: 'file', filename: part.name, mimeType: part.mediaType, data: part.path };
|
|
62
95
|
}
|
|
63
96
|
});
|
|
64
97
|
}
|
|
@@ -67,7 +100,7 @@ function leftRunning(view) {
|
|
|
67
100
|
return new Map();
|
|
68
101
|
const turns = view.messages.flatMap((entry) => {
|
|
69
102
|
const one = saidOf(entry);
|
|
70
|
-
return one.user ? [] : [{ turn: one.turn, parts: one.parts, ended: true }];
|
|
103
|
+
return one.user || one.house ? [] : [{ turn: one.turn, parts: one.parts, ended: true }];
|
|
71
104
|
});
|
|
72
105
|
return stillRunning(view.turn === null
|
|
73
106
|
? turns
|
|
@@ -75,15 +108,26 @@ function leftRunning(view) {
|
|
|
75
108
|
}
|
|
76
109
|
export function awaitsTurn(view) {
|
|
77
110
|
const newest = view?.messages.at(-1);
|
|
78
|
-
|
|
111
|
+
if (view?.turn !== null || newest === undefined)
|
|
112
|
+
return false;
|
|
113
|
+
const said = saidOf(newest);
|
|
114
|
+
return said.user || (said.house && !said.waiting);
|
|
115
|
+
}
|
|
116
|
+
export function requestIn(view) {
|
|
117
|
+
for (const entry of view?.messages ?? []) {
|
|
118
|
+
const { waiting, source } = saidOf(entry);
|
|
119
|
+
if (source?.kind === 'request')
|
|
120
|
+
return { request: { request: source.request, room: source.room.ref }, waiting };
|
|
121
|
+
}
|
|
122
|
+
return null;
|
|
79
123
|
}
|
|
80
124
|
export function askedBefore(view, id) {
|
|
81
125
|
const said = (view?.messages ?? []).map((entry) => ({ ...saidOf(entry), id: entry.identity }));
|
|
82
126
|
const asked = said
|
|
83
127
|
.slice(0, said.findIndex((one) => one.id === id) + 1)
|
|
84
128
|
.reverse()
|
|
85
|
-
.find((one) => one.user);
|
|
86
|
-
return asked === undefined || asked.text === '' ? null : asked.text;
|
|
129
|
+
.find((one) => one.user || one.house);
|
|
130
|
+
return asked === undefined || asked.house || asked.text === '' ? null : asked.text;
|
|
87
131
|
}
|
|
88
132
|
export function chatMessages(view) {
|
|
89
133
|
if (view === null)
|
|
@@ -92,25 +136,38 @@ export function chatMessages(view) {
|
|
|
92
136
|
const said = view.messages.map((entry, at) => {
|
|
93
137
|
const one = saidOf(entry);
|
|
94
138
|
const custom = { undelivered: one.undelivered };
|
|
139
|
+
if (one.house)
|
|
140
|
+
return converted(entry, [], false, false, () => ({
|
|
141
|
+
id: entry.identity,
|
|
142
|
+
role: 'system',
|
|
143
|
+
content: [{ type: 'text', text: one.text }],
|
|
144
|
+
metadata: {
|
|
145
|
+
custom: {
|
|
146
|
+
...custom,
|
|
147
|
+
source: one.source,
|
|
148
|
+
waiting: one.waiting,
|
|
149
|
+
transcripts: one.transcripts,
|
|
150
|
+
},
|
|
151
|
+
},
|
|
152
|
+
}));
|
|
95
153
|
if (one.user) {
|
|
96
|
-
|
|
154
|
+
const unknown = view.deliveryUnknown.includes(entry.identity);
|
|
155
|
+
return converted(entry, [], false, unknown, () => ({
|
|
97
156
|
id: entry.identity,
|
|
98
157
|
role: 'user',
|
|
99
158
|
content: [{ type: 'text', text: one.text }],
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
type: 'file',
|
|
103
|
-
name,
|
|
104
|
-
status: { type: 'complete' },
|
|
105
|
-
content: [],
|
|
106
|
-
})),
|
|
107
|
-
metadata: { custom },
|
|
108
|
-
};
|
|
159
|
+
metadata: { custom: { ...custom, unknown, transcripts: one.transcripts } },
|
|
160
|
+
}));
|
|
109
161
|
}
|
|
110
162
|
const failed = one.failure === null
|
|
111
163
|
? undefined
|
|
112
164
|
: { type: 'incomplete', reason: 'error', error: one.failure };
|
|
113
|
-
|
|
165
|
+
const working = lasting.get(one.turn) ?? [];
|
|
166
|
+
const again = failed !== undefined &&
|
|
167
|
+
view.turn === null &&
|
|
168
|
+
at === view.messages.length - 1 &&
|
|
169
|
+
askedBefore(view, view.messages[at - 1]?.identity ?? null) !== null;
|
|
170
|
+
return converted(entry, working, again, false, () => ({
|
|
114
171
|
id: entry.identity,
|
|
115
172
|
role: 'assistant',
|
|
116
173
|
content: contentOf(entry.identity, one.parts, false),
|
|
@@ -118,14 +175,12 @@ export function chatMessages(view) {
|
|
|
118
175
|
metadata: {
|
|
119
176
|
custom: {
|
|
120
177
|
...custom,
|
|
121
|
-
lasting:
|
|
122
|
-
again
|
|
123
|
-
|
|
124
|
-
at === view.messages.length - 1 &&
|
|
125
|
-
askedBefore(view, view.messages[at - 1]?.identity ?? null) !== null,
|
|
178
|
+
lasting: working,
|
|
179
|
+
again,
|
|
180
|
+
renew: failed !== undefined && one.resumeRefused,
|
|
126
181
|
},
|
|
127
182
|
},
|
|
128
|
-
};
|
|
183
|
+
}));
|
|
129
184
|
});
|
|
130
185
|
if (view.turn === null)
|
|
131
186
|
return said;
|
package/dist/chat/name.d.ts
CHANGED
package/dist/chat/name.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"name.d.ts","sourceRoot":"","sources":["../../src/chat/name.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"name.d.ts","sourceRoot":"","sources":["../../src/chat/name.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,OAAO,CAAC;AAM1C,wBAAgB,KAAK,CAAC,EAAE,EAAE,MAAM,GAAG,MAAM,CAUxC;AAgBD,wBAAgB,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAI7C;AAED,wBAAgB,QAAQ,CAAC,EAAE,IAAI,EAAE,EAAE;IAAE,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;CAAE,GAAG,YAAY,CAc1E"}
|
package/dist/chat/name.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { Fragment as _Fragment, jsx as _jsx } from "react/jsx-runtime";
|
|
2
2
|
const INSTANT = /\d{4}-\d{2}-\d{2}T\d{2}:\d{2}(?::\d{2}(?:\.\d+)?)?(?:Z|[+-]\d{2}:\d{2})/g;
|
|
3
|
-
function stamp(at) {
|
|
3
|
+
export function stamp(at) {
|
|
4
4
|
const time = new Date(at);
|
|
5
5
|
return Number.isNaN(time.getTime())
|
|
6
6
|
? ''
|
package/dist/chat/opened.d.ts
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"opened.d.ts","sourceRoot":"","sources":["../../src/chat/opened.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAC;
|
|
1
|
+
{"version":3,"file":"opened.d.ts","sourceRoot":"","sources":["../../src/chat/opened.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAC;AAE5D,OAAO,EAAyB,KAAK,SAAS,EAAE,MAAM,eAAe,CAAC;AAEtE,MAAM,MAAM,MAAM,GAAG,SAAS,GAAG;IAC/B,QAAQ,CAAC,KAAK,EAAE,iBAAiB,GAAG,SAAS,CAAC;IAC9C,QAAQ,CAAC,EAAE,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC;IAC1B,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAC;IACvB,QAAQ,CAAC,KAAK,EAAE,OAAO,CAAC;CACzB,CAAC;AAEF,wBAAgB,SAAS,IAAI,MAAM,CAgBlC"}
|
package/dist/chat/opened.js
CHANGED
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { requestIn } from './messages.js';
|
|
1
2
|
import { useChat, useChatScope } from './provider.js';
|
|
2
3
|
export function useOpened() {
|
|
3
4
|
const chat = useChat();
|
|
@@ -13,5 +14,6 @@ export function useOpened() {
|
|
|
13
14
|
name: live?.name ?? entry?.agent.name ?? '',
|
|
14
15
|
deleted: known && chat.conversation !== null && by !== null && live === undefined,
|
|
15
16
|
busy: chat.running || asks,
|
|
17
|
+
waits: requestIn(chat.view)?.waiting ?? entry?.waiting === true,
|
|
16
18
|
};
|
|
17
19
|
}
|
package/dist/chat/overlay.d.ts
CHANGED
|
@@ -24,6 +24,7 @@ export declare function overlay(): Overlay;
|
|
|
24
24
|
export declare function sentMessage(key: string, into: readonly string[], said: ChatDraft, turn: string | null): Expectation;
|
|
25
25
|
export declare function optionChosen(conversation: string, option: string, value: string): Expectation;
|
|
26
26
|
export declare function questionAnswered(conversation: string, interaction: string): Expectation;
|
|
27
|
+
export declare function deliveryRetried(conversation: string, message: string): Expectation;
|
|
27
28
|
export declare function conversationListed(entry: ConversationEntry): Expectation;
|
|
28
29
|
export declare function conversationChanged(conversation: string, changes: Partial<Pick<ConversationEntry, 'name' | 'finished'>>, shown: (entry: ConversationEntry) => boolean): Expectation;
|
|
29
30
|
export declare function conversationGone(conversation: string): Expectation;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"overlay.d.ts","sourceRoot":"","sources":["../../src/chat/overlay.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,iBAAiB,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AACzF,OAAO,EAAa,KAAK,UAAU,EAAE,KAAK,SAAS,EAAE,MAAM,mBAAmB,CAAC;AAG/E,KAAK,OAAO,GAAG,SAAS,iBAAiB,EAAE,CAAC;AAE5C,MAAM,MAAM,WAAW,GACnB;IACE,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,IAAI,EAAE,cAAc,CAAC;IAC9B,IAAI,CAAC,IAAI,EAAE,gBAAgB,GAAG,gBAAgB,CAAC;IAC/C,KAAK,CAAC,IAAI,EAAE,gBAAgB,GAAG,OAAO,CAAC;CACxC,GACD;IACE,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,IAAI,EAAE,eAAe,CAAC;IAC/B,IAAI,CAAC,IAAI,EAAE,OAAO,GAAG,OAAO,CAAC;IAC7B,KAAK,CAAC,IAAI,EAAE,OAAO,GAAG,OAAO,CAAC;CAC/B,CAAC;AAEN,MAAM,MAAM,QAAQ,GAAG,UAAU,CAAC,WAAW,CAAC,CAAC;AAE/C,MAAM,MAAM,OAAO,GAAG,IAAI,CAAC,SAAS,CAAC,WAAW,CAAC,EAAE,QAAQ,GAAG,OAAO,GAAG,OAAO,CAAC,GAAG;IACjF,MAAM,CAAC,GAAG,EAAE,MAAM,EAAE,QAAQ,EAAE,QAAQ,GAAG,IAAI,CAAC;IAC9C,KAAK,CAAC,IAAI,EAAE,gBAAgB,GAAG,IAAI,CAAC;IACpC,SAAS,CAAC,IAAI,EAAE,OAAO,GAAG,IAAI,CAAC;IAC/B,YAAY,CAAC,IAAI,EAAE,gBAAgB,GAAG,gBAAgB,CAAC;IACvD,aAAa,CAAC,IAAI,EAAE,OAAO,GAAG,OAAO,CAAC;CACvC,CAAC;AAEF,wBAAgB,OAAO,IAAI,OAAO,CAiBjC;AAED,wBAAgB,WAAW,CACzB,GAAG,EAAE,MAAM,EACX,IAAI,EAAE,SAAS,MAAM,EAAE,EACvB,IAAI,EAAE,SAAS,EACf,IAAI,EAAE,MAAM,GAAG,IAAI,GAClB,WAAW,
|
|
1
|
+
{"version":3,"file":"overlay.d.ts","sourceRoot":"","sources":["../../src/chat/overlay.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,iBAAiB,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AACzF,OAAO,EAAa,KAAK,UAAU,EAAE,KAAK,SAAS,EAAE,MAAM,mBAAmB,CAAC;AAG/E,KAAK,OAAO,GAAG,SAAS,iBAAiB,EAAE,CAAC;AAE5C,MAAM,MAAM,WAAW,GACnB;IACE,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,IAAI,EAAE,cAAc,CAAC;IAC9B,IAAI,CAAC,IAAI,EAAE,gBAAgB,GAAG,gBAAgB,CAAC;IAC/C,KAAK,CAAC,IAAI,EAAE,gBAAgB,GAAG,OAAO,CAAC;CACxC,GACD;IACE,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,IAAI,EAAE,eAAe,CAAC;IAC/B,IAAI,CAAC,IAAI,EAAE,OAAO,GAAG,OAAO,CAAC;IAC7B,KAAK,CAAC,IAAI,EAAE,OAAO,GAAG,OAAO,CAAC;CAC/B,CAAC;AAEN,MAAM,MAAM,QAAQ,GAAG,UAAU,CAAC,WAAW,CAAC,CAAC;AAE/C,MAAM,MAAM,OAAO,GAAG,IAAI,CAAC,SAAS,CAAC,WAAW,CAAC,EAAE,QAAQ,GAAG,OAAO,GAAG,OAAO,CAAC,GAAG;IACjF,MAAM,CAAC,GAAG,EAAE,MAAM,EAAE,QAAQ,EAAE,QAAQ,GAAG,IAAI,CAAC;IAC9C,KAAK,CAAC,IAAI,EAAE,gBAAgB,GAAG,IAAI,CAAC;IACpC,SAAS,CAAC,IAAI,EAAE,OAAO,GAAG,IAAI,CAAC;IAC/B,YAAY,CAAC,IAAI,EAAE,gBAAgB,GAAG,gBAAgB,CAAC;IACvD,aAAa,CAAC,IAAI,EAAE,OAAO,GAAG,OAAO,CAAC;CACvC,CAAC;AAEF,wBAAgB,OAAO,IAAI,OAAO,CAiBjC;AAED,wBAAgB,WAAW,CACzB,GAAG,EAAE,MAAM,EACX,IAAI,EAAE,SAAS,MAAM,EAAE,EACvB,IAAI,EAAE,SAAS,EACf,IAAI,EAAE,MAAM,GAAG,IAAI,GAClB,WAAW,CAuBb;AAED,wBAAgB,YAAY,CAAC,YAAY,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,WAAW,CAkB7F;AAED,wBAAgB,gBAAgB,CAAC,YAAY,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,GAAG,WAAW,CAWvF;AAED,wBAAgB,eAAe,CAAC,YAAY,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,WAAW,CAUlF;AAED,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,iBAAiB,GAAG,WAAW,CAQxE;AAED,wBAAgB,mBAAmB,CACjC,YAAY,EAAE,MAAM,EACpB,OAAO,EAAE,OAAO,CAAC,IAAI,CAAC,iBAAiB,EAAE,MAAM,GAAG,UAAU,CAAC,CAAC,EAC9D,KAAK,EAAE,CAAC,KAAK,EAAE,iBAAiB,KAAK,OAAO,GAC3C,WAAW,CAQb;AAED,wBAAgB,gBAAgB,CAAC,YAAY,EAAE,MAAM,GAAG,WAAW,CAQlE"}
|
package/dist/chat/overlay.js
CHANGED
|
@@ -31,11 +31,7 @@ export function sentMessage(key, into, said, turn) {
|
|
|
31
31
|
identity: key,
|
|
32
32
|
turn: turn ?? key,
|
|
33
33
|
text: said.text,
|
|
34
|
-
message: {
|
|
35
|
-
role: 'user',
|
|
36
|
-
text: said.text,
|
|
37
|
-
files: said.files.map((file) => ({ name: file.name })),
|
|
38
|
-
},
|
|
34
|
+
message: { role: 'user', text: said.text },
|
|
39
35
|
},
|
|
40
36
|
],
|
|
41
37
|
},
|
|
@@ -68,6 +64,16 @@ export function questionAnswered(conversation, interaction) {
|
|
|
68
64
|
shown: (held) => held.conversation === conversation && !held.questions.some(ours),
|
|
69
65
|
};
|
|
70
66
|
}
|
|
67
|
+
export function deliveryRetried(conversation, message) {
|
|
68
|
+
return {
|
|
69
|
+
key: `retry ${conversation} ${message}`,
|
|
70
|
+
view: 'conversation',
|
|
71
|
+
draw: (held) => held.conversation !== conversation
|
|
72
|
+
? held
|
|
73
|
+
: { ...held, deliveryUnknown: held.deliveryUnknown.filter((one) => one !== message) },
|
|
74
|
+
shown: (held) => held.conversation === conversation && !held.deliveryUnknown.includes(message),
|
|
75
|
+
};
|
|
76
|
+
}
|
|
71
77
|
export function conversationListed(entry) {
|
|
72
78
|
const ours = (one) => one.conversation === entry.conversation;
|
|
73
79
|
return {
|
package/dist/chat/parts.d.ts
CHANGED
package/dist/chat/parts.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"parts.d.ts","sourceRoot":"","sources":["../../src/chat/parts.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAGjD,MAAM,MAAM,QAAQ,GAAG;IACrB,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;CACzB,CAAC;AAEF,MAAM,MAAM,MAAM,GAAG,MAAM,GAAG,YAAY,GAAG,OAAO,GAAG,OAAO,GAAG,KAAK,CAAC;AAEvE,MAAM,MAAM,IAAI,GACZ;IAAE,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;CAAE,GAChD;IAAE,QAAQ,CAAC,IAAI,EAAE,WAAW,CAAC;IAAC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;CAAE,GACrD;IAAE,QAAQ,CAAC,IAAI,EAAE,UAAU,CAAC;IAAC,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAA;CAAE,GACrD;IACE,QAAQ,CAAC,IAAI,EAAE,UAAU,CAAC;IAC1B,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAC;IACvB,QAAQ,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;CAChC,GACD;IAAE,QAAQ,CAAC,IAAI,EAAE,SAAS,CAAC;IAAC,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,CAAA;CAAE,GACtF;
|
|
1
|
+
{"version":3,"file":"parts.d.ts","sourceRoot":"","sources":["../../src/chat/parts.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAGjD,MAAM,MAAM,QAAQ,GAAG;IACrB,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;CACzB,CAAC;AAEF,MAAM,MAAM,MAAM,GAAG,MAAM,GAAG,YAAY,GAAG,OAAO,GAAG,OAAO,GAAG,KAAK,CAAC;AAEvE,MAAM,MAAM,IAAI,GACZ;IAAE,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;CAAE,GAChD;IAAE,QAAQ,CAAC,IAAI,EAAE,WAAW,CAAC;IAAC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;CAAE,GACrD;IAAE,QAAQ,CAAC,IAAI,EAAE,UAAU,CAAC;IAAC,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAA;CAAE,GACrD;IACE,QAAQ,CAAC,IAAI,EAAE,UAAU,CAAC;IAC1B,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAC;IACvB,QAAQ,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;CAChC,GACD;IAAE,QAAQ,CAAC,IAAI,EAAE,SAAS,CAAC;IAAC,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,CAAA;CAAE,GACtF;IACE,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAC;IACvB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;CAC5B,GACD;IAAE,QAAQ,CAAC,IAAI,EAAE,QAAQ,CAAC;IAAC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;CAAE,GAC3E;IAAE,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,KAAK,EAAE,SAAS,QAAQ,EAAE,CAAA;CAAE,CAAC;AAoDnE,wBAAgB,OAAO,CAAC,GAAG,EAAE,SAAS,OAAO,EAAE,GAAG,SAAS,IAAI,EAAE,CAEhE;AAED,wBAAgB,SAAS,CAAC,GAAG,EAAE,OAAO,GAAG,WAAW,GAAG,IAAI,CAK1D;AAED,MAAM,MAAM,IAAI,GAAG;IACjB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,KAAK,EAAE,SAAS,IAAI,EAAE,CAAC;IAChC,QAAQ,CAAC,KAAK,EAAE,OAAO,CAAC;CACzB,CAAC;AAEF,MAAM,MAAM,QAAQ,GAAG;IACrB,QAAQ,CAAC,IAAI,EAAE,KAAK,GAAG,UAAU,GAAG,UAAU,CAAC;IAC/C,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;CAC9B,CAAC;AAEF,MAAM,MAAM,GAAG,GAAG;IAChB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,IAAI,EAAE,SAAS,GAAG,WAAW,GAAG,OAAO,CAAC;IACjD,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;CAC9B,CAAC;AAIF,wBAAgB,KAAK,CAAC,IAAI,EAAE,MAAM,GAAG,GAAG,CASvC;AAED,wBAAgB,YAAY,CAAC,KAAK,EAAE,SAAS,IAAI,EAAE,GAAG,WAAW,CAAC,MAAM,EAAE,SAAS,QAAQ,EAAE,CAAC,CA0C7F"}
|
package/dist/chat/parts.js
CHANGED
|
@@ -22,10 +22,11 @@ function partOf(raw) {
|
|
|
22
22
|
return command === null ? null : { type: 'message', command, target: text(part, 'target') };
|
|
23
23
|
}
|
|
24
24
|
case 'image': {
|
|
25
|
+
const path = text(part, 'file');
|
|
25
26
|
const name = text(part, 'name');
|
|
26
|
-
return name === null
|
|
27
|
+
return path === null || name === null
|
|
27
28
|
? null
|
|
28
|
-
: { type: 'image', name, mediaType: text(part, 'media_type') ?? '' };
|
|
29
|
+
: { type: 'image', path, name, mediaType: text(part, 'media_type') ?? '' };
|
|
29
30
|
}
|
|
30
31
|
case 'marker': {
|
|
31
32
|
const marker = text(part, 'marker');
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
import { fromMarkdown } from 'mdast-util-from-markdown';
|
|
2
|
+
export type Root = ReturnType<typeof fromMarkdown>;
|
|
3
|
+
export type Block = Root['children'][number];
|
|
4
|
+
export declare function parseMarkdown(text: string): Root;
|
|
5
|
+
export type Step = 'list' | 'item' | 'footnote' | 'table' | 'blockquote' | 'paragraph';
|
|
6
|
+
export interface Piece {
|
|
7
|
+
readonly nodes: readonly Block[];
|
|
8
|
+
readonly path: readonly Step[];
|
|
9
|
+
readonly join: string;
|
|
10
|
+
}
|
|
11
|
+
interface Level {
|
|
12
|
+
readonly kind: 'quote' | 'item' | 'note';
|
|
13
|
+
readonly line: number;
|
|
14
|
+
readonly column: number;
|
|
15
|
+
readonly size: number;
|
|
16
|
+
readonly carry: string;
|
|
17
|
+
readonly spread: boolean;
|
|
18
|
+
}
|
|
19
|
+
interface Next {
|
|
20
|
+
readonly start: number;
|
|
21
|
+
readonly path: readonly Step[];
|
|
22
|
+
readonly join: string;
|
|
23
|
+
readonly carry: string;
|
|
24
|
+
readonly levels: readonly Level[];
|
|
25
|
+
}
|
|
26
|
+
interface Found {
|
|
27
|
+
readonly key: string;
|
|
28
|
+
readonly at: number;
|
|
29
|
+
readonly url: string;
|
|
30
|
+
}
|
|
31
|
+
interface Region {
|
|
32
|
+
readonly from: number;
|
|
33
|
+
readonly looks: readonly number[];
|
|
34
|
+
readonly last: ReadonlyMap<string, number>;
|
|
35
|
+
readonly runs: ReadonlyMap<number, number>;
|
|
36
|
+
}
|
|
37
|
+
interface Discovery {
|
|
38
|
+
readonly found: Found[];
|
|
39
|
+
next: Next | null;
|
|
40
|
+
}
|
|
41
|
+
export interface Long {
|
|
42
|
+
readonly text: string;
|
|
43
|
+
readonly starts: Int32Array;
|
|
44
|
+
readonly breaks: Int32Array;
|
|
45
|
+
readonly quoteBreaks: Int32Array;
|
|
46
|
+
readonly anchors: readonly number[];
|
|
47
|
+
readonly candidates: ReadonlyMap<string, readonly number[]>;
|
|
48
|
+
readonly pieces: Piece[];
|
|
49
|
+
next: Next | null;
|
|
50
|
+
readonly urls: Map<string, string>;
|
|
51
|
+
readonly spans: Map<string, readonly Found[]>;
|
|
52
|
+
readonly discoveries: Map<number, Discovery>;
|
|
53
|
+
readonly regions: Map<string, Region>;
|
|
54
|
+
readonly spreads: Map<number, boolean | null>;
|
|
55
|
+
}
|
|
56
|
+
export declare function identifierOf(label: string): string;
|
|
57
|
+
export declare function longOf(text: string): Long;
|
|
58
|
+
export declare function pieceAt(long: Long, index: number): Piece | null;
|
|
59
|
+
export declare function drawn(long: Long, count: number): Block[];
|
|
60
|
+
export declare function remaining(long: Long, count: number): boolean;
|
|
61
|
+
export {};
|
|
62
|
+
//# sourceMappingURL=pieces.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"pieces.d.ts","sourceRoot":"","sources":["../../src/chat/pieces.ts"],"names":[],"mappings":"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"}
|