@agentshouse/mdruntime 0.1.0-caee7332d2235 → 0.1.0-caf080a9a9c60
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/README.md +19 -16
- package/dist/acceptance.d.ts +3 -0
- package/dist/acceptance.d.ts.map +1 -0
- package/dist/acceptance.js +318 -0
- package/dist/act-lanes.d.ts +29 -0
- package/dist/act-lanes.d.ts.map +1 -0
- package/dist/act-lanes.js +177 -0
- package/dist/actions.d.ts +25 -0
- package/dist/actions.d.ts.map +1 -0
- package/dist/actions.js +261 -0
- package/dist/adapter.d.ts +162 -122
- package/dist/adapter.d.ts.map +1 -1
- package/dist/attached-model.d.ts +7 -10
- package/dist/attached-model.d.ts.map +1 -1
- package/dist/attached-model.js +40 -41
- package/dist/binary.d.ts +0 -5
- package/dist/binary.d.ts.map +1 -1
- package/dist/binary.js +1 -1
- package/dist/bootstrap.d.ts +30 -11
- package/dist/bootstrap.d.ts.map +1 -1
- package/dist/bootstrap.js +309 -113
- package/dist/cell.d.ts +6 -0
- package/dist/cell.d.ts.map +1 -0
- package/dist/cell.js +9 -0
- package/dist/chain.d.ts +12 -0
- package/dist/chain.d.ts.map +1 -0
- package/dist/chain.js +64 -0
- package/dist/change-set.d.ts +10 -16
- package/dist/change-set.d.ts.map +1 -1
- package/dist/change-set.js +17 -94
- package/dist/change.d.ts +32 -1
- package/dist/change.d.ts.map +1 -1
- package/dist/change.js +14 -3
- package/dist/chat-types.d.ts +5 -0
- package/dist/chat-types.d.ts.map +1 -0
- package/dist/chat-types.js +13 -0
- package/dist/client.d.ts +33 -19
- package/dist/client.d.ts.map +1 -1
- package/dist/client.js +112 -21
- package/dist/collection.d.ts +29 -22
- package/dist/collection.d.ts.map +1 -1
- package/dist/collection.js +47 -354
- package/dist/compile.d.ts +18 -0
- package/dist/compile.d.ts.map +1 -0
- package/dist/compile.js +724 -0
- package/dist/connection.d.ts +7 -137
- package/dist/connection.d.ts.map +1 -1
- package/dist/connection.js +111 -3623
- package/dist/context.d.ts +2 -0
- package/dist/context.d.ts.map +1 -0
- package/dist/{chat/context.js → context.js} +1 -4
- package/dist/conversation-live.d.ts +138 -0
- package/dist/conversation-live.d.ts.map +1 -0
- package/dist/conversation-live.js +249 -0
- package/dist/conversation-row.d.ts +33 -0
- package/dist/conversation-row.d.ts.map +1 -0
- package/dist/conversation-row.js +53 -0
- package/dist/conversation.d.ts +66 -49
- package/dist/conversation.d.ts.map +1 -1
- package/dist/conversation.js +962 -799
- package/dist/declaration.d.ts +10 -0
- package/dist/declaration.d.ts.map +1 -0
- package/dist/declaration.js +24 -0
- package/dist/digest.d.ts +7 -0
- package/dist/digest.d.ts.map +1 -0
- package/dist/digest.js +113 -0
- package/dist/discovery.d.ts +10 -0
- package/dist/discovery.d.ts.map +1 -0
- package/dist/discovery.js +153 -0
- package/dist/durability.d.ts +19 -4
- package/dist/durability.d.ts.map +1 -1
- package/dist/durability.js +5 -0
- package/dist/entry.d.ts +5 -2
- package/dist/entry.d.ts.map +1 -1
- package/dist/entry.js +33 -29
- package/dist/expectation.d.ts +26 -13
- package/dist/expectation.d.ts.map +1 -1
- package/dist/expectation.js +72 -19
- package/dist/failure.d.ts +3 -0
- package/dist/failure.d.ts.map +1 -1
- package/dist/failure.js +6 -0
- package/dist/figures.d.ts +49 -0
- package/dist/figures.d.ts.map +1 -0
- package/dist/figures.js +197 -0
- package/dist/file.d.ts +2 -19
- package/dist/file.d.ts.map +1 -1
- package/dist/file.js +7 -122
- package/dist/holdings.d.ts +29 -0
- package/dist/holdings.d.ts.map +1 -0
- package/dist/holdings.js +95 -0
- package/dist/host.d.ts +20 -8
- package/dist/host.d.ts.map +1 -1
- package/dist/host.js +103 -45
- package/dist/identity.d.ts +0 -2
- package/dist/identity.d.ts.map +1 -1
- package/dist/identity.js +0 -6
- package/dist/index.d.ts +39 -15
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +18 -4
- package/dist/install.d.ts +54 -0
- package/dist/install.d.ts.map +1 -0
- package/dist/install.js +539 -0
- package/dist/lifecycle.d.ts +7 -0
- package/dist/lifecycle.d.ts.map +1 -0
- package/dist/lifecycle.js +279 -0
- package/dist/listing.d.ts +48 -0
- package/dist/listing.d.ts.map +1 -0
- package/dist/listing.js +139 -0
- package/dist/live.d.ts +23 -0
- package/dist/live.d.ts.map +1 -0
- package/dist/live.js +165 -0
- package/dist/locks.d.ts +7 -0
- package/dist/locks.d.ts.map +1 -0
- package/dist/locks.js +33 -0
- package/dist/log.d.ts +1 -0
- package/dist/log.d.ts.map +1 -1
- package/dist/lost.d.ts +5 -0
- package/dist/lost.d.ts.map +1 -0
- package/dist/lost.js +50 -0
- package/dist/media.d.ts +8 -0
- package/dist/media.d.ts.map +1 -0
- package/dist/media.js +218 -0
- package/dist/memory.d.ts +17 -7
- package/dist/memory.d.ts.map +1 -1
- package/dist/memory.js +272 -118
- package/dist/messages.d.ts +49 -0
- package/dist/messages.d.ts.map +1 -0
- package/dist/messages.js +150 -0
- package/dist/model.d.ts +8 -11
- package/dist/model.d.ts.map +1 -1
- package/dist/model.js +6 -23
- package/dist/models.d.ts +10 -0
- package/dist/models.d.ts.map +1 -0
- package/dist/models.js +156 -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 +15 -2
- package/dist/observation.d.ts.map +1 -1
- package/dist/observation.js +98 -14
- package/dist/opened.d.ts +22 -0
- package/dist/opened.d.ts.map +1 -0
- package/dist/opened.js +107 -0
- package/dist/opening.d.ts +4 -0
- package/dist/opening.d.ts.map +1 -0
- package/dist/opening.js +59 -0
- package/dist/outcome.d.ts +47 -9
- package/dist/outcome.d.ts.map +1 -1
- package/dist/outcome.js +56 -2
- package/dist/overlay.d.ts +7 -5
- package/dist/overlay.d.ts.map +1 -1
- package/dist/overlay.js +69 -169
- package/dist/page-metadata.d.ts +8 -0
- package/dist/page-metadata.d.ts.map +1 -0
- package/dist/page-metadata.js +19 -0
- package/dist/parts.d.ts +3 -0
- package/dist/parts.d.ts.map +1 -0
- package/dist/parts.js +10 -0
- package/dist/paths.d.ts +2 -0
- package/dist/paths.d.ts.map +1 -1
- package/dist/paths.js +26 -0
- package/dist/preparation.d.ts +20 -0
- package/dist/preparation.d.ts.map +1 -0
- package/dist/preparation.js +233 -0
- package/dist/presence.d.ts +52 -0
- package/dist/presence.d.ts.map +1 -0
- package/dist/presence.js +220 -0
- package/dist/queries.d.ts +16 -0
- package/dist/queries.d.ts.map +1 -0
- package/dist/queries.js +285 -0
- package/dist/query.d.ts +21 -207
- package/dist/query.d.ts.map +1 -1
- package/dist/query.js +3 -493
- package/dist/{chat/questions.d.ts → questions.d.ts} +5 -7
- package/dist/questions.d.ts.map +1 -0
- package/dist/{chat/questions.js → questions.js} +11 -7
- package/dist/queue.d.ts +40 -0
- package/dist/queue.d.ts.map +1 -0
- package/dist/queue.js +465 -0
- package/dist/reach.d.ts +20 -9
- package/dist/reach.d.ts.map +1 -1
- package/dist/reach.js +306 -111
- package/dist/react.d.ts +15 -2
- package/dist/react.d.ts.map +1 -1
- package/dist/react.js +33 -1
- package/dist/{chat/read.d.ts → read.d.ts} +2 -0
- package/dist/read.d.ts.map +1 -0
- package/dist/{chat/read.js → read.js} +4 -0
- package/dist/readiness.d.ts +13 -17
- package/dist/readiness.d.ts.map +1 -1
- package/dist/readiness.js +2 -8
- package/dist/reads.d.ts +38 -10
- package/dist/reads.d.ts.map +1 -1
- package/dist/reads.js +163 -83
- package/dist/recovery.d.ts +5 -2
- package/dist/recovery.d.ts.map +1 -1
- package/dist/recovery.js +65 -8
- package/dist/refresh.d.ts +18 -15
- package/dist/refresh.d.ts.map +1 -1
- package/dist/refresh.js +145 -79
- package/dist/refusal.d.ts +5 -0
- package/dist/refusal.d.ts.map +1 -0
- package/dist/refusal.js +57 -0
- package/dist/replica.d.ts +50 -39
- package/dist/replica.d.ts.map +1 -1
- package/dist/replica.js +319 -208
- package/dist/retried.d.ts +30 -0
- package/dist/retried.d.ts.map +1 -0
- package/dist/retried.js +72 -0
- package/dist/room-draft.d.ts +28 -11
- package/dist/room-draft.d.ts.map +1 -1
- package/dist/room-draft.js +194 -117
- package/dist/room-drafts.d.ts +24 -0
- package/dist/room-drafts.d.ts.map +1 -0
- package/dist/room-drafts.js +217 -0
- package/dist/rows.d.ts +31 -31
- package/dist/rows.d.ts.map +1 -1
- package/dist/rows.js +60 -125
- package/dist/runtime.d.ts +36 -0
- package/dist/runtime.d.ts.map +1 -0
- package/dist/runtime.js +1 -0
- package/dist/save.d.ts +43 -50
- package/dist/save.d.ts.map +1 -1
- package/dist/save.js +661 -228
- package/dist/saves.d.ts +32 -0
- package/dist/saves.d.ts.map +1 -0
- package/dist/saves.js +413 -0
- package/dist/search.d.ts +12 -95
- package/dist/search.d.ts.map +1 -1
- package/dist/search.js +10 -266
- package/dist/seed.d.ts +11 -2
- package/dist/seed.d.ts.map +1 -1
- package/dist/seed.js +71 -1
- package/dist/shared.d.ts +4 -9
- package/dist/shared.d.ts.map +1 -1
- package/dist/shared.js +61 -120
- package/dist/shown.d.ts +32 -0
- package/dist/shown.d.ts.map +1 -0
- package/dist/shown.js +290 -0
- package/dist/socket/admission.d.ts +7 -0
- package/dist/socket/admission.d.ts.map +1 -0
- package/dist/socket/admission.js +39 -0
- package/dist/socket/answers.d.ts +6 -0
- package/dist/socket/answers.d.ts.map +1 -0
- package/dist/socket/answers.js +20 -0
- package/dist/socket/lanes.d.ts +21 -0
- package/dist/socket/lanes.d.ts.map +1 -0
- package/dist/socket/lanes.js +80 -0
- package/dist/socket/reads.d.ts +10 -0
- package/dist/socket/reads.d.ts.map +1 -0
- package/dist/socket/reads.js +31 -0
- package/dist/socket/session.d.ts +38 -0
- package/dist/socket/session.d.ts.map +1 -0
- package/dist/socket/session.js +23 -0
- package/dist/socket.d.ts +68 -0
- package/dist/socket.d.ts.map +1 -0
- package/dist/socket.js +171 -0
- package/dist/source.d.ts +54 -0
- package/dist/source.d.ts.map +1 -0
- package/dist/source.js +82 -0
- package/dist/status.d.ts +4 -5
- package/dist/status.d.ts.map +1 -1
- package/dist/status.js +3 -7
- package/dist/store/installs.d.ts +30 -0
- package/dist/store/installs.d.ts.map +1 -0
- package/dist/store/installs.js +34 -0
- package/dist/store/readiness.d.ts +10 -0
- package/dist/store/readiness.d.ts.map +1 -0
- package/dist/store/readiness.js +52 -0
- package/dist/store/records.d.ts +212 -0
- package/dist/store/records.d.ts.map +1 -0
- package/dist/store/records.js +430 -0
- package/dist/store/room-held.d.ts +8 -0
- package/dist/store/room-held.d.ts.map +1 -0
- package/dist/store/room-held.js +17 -0
- package/dist/store/space.d.ts +11 -0
- package/dist/store/space.d.ts.map +1 -0
- package/dist/store/space.js +41 -0
- package/dist/store/watchers.d.ts +17 -0
- package/dist/store/watchers.d.ts.map +1 -0
- package/dist/store/watchers.js +56 -0
- package/dist/store/writes.d.ts +24 -0
- package/dist/store/writes.d.ts.map +1 -0
- package/dist/store/writes.js +125 -0
- package/dist/store.d.ts +111 -166
- package/dist/store.d.ts.map +1 -1
- package/dist/store.js +158 -797
- package/dist/stored.d.ts +156 -0
- package/dist/stored.d.ts.map +1 -0
- package/dist/stored.js +649 -0
- package/dist/surface.d.ts +88 -0
- package/dist/surface.d.ts.map +1 -0
- package/dist/surface.js +223 -0
- package/dist/sync.d.ts +19 -0
- package/dist/sync.d.ts.map +1 -0
- package/dist/sync.js +540 -0
- package/dist/tables.d.ts +412 -0
- package/dist/tables.d.ts.map +1 -0
- package/dist/tables.js +737 -0
- package/dist/tallies.d.ts +18 -0
- package/dist/tallies.d.ts.map +1 -0
- package/dist/tallies.js +129 -0
- package/dist/transfer.d.ts +0 -5
- package/dist/transfer.d.ts.map +1 -1
- package/dist/turn.d.ts +1 -1
- package/dist/turn.d.ts.map +1 -1
- package/dist/turn.js +31 -20
- package/dist/validation.d.ts +29 -0
- package/dist/validation.d.ts.map +1 -0
- package/dist/validation.js +104 -0
- package/dist/windows.d.ts +1 -16
- package/dist/windows.d.ts.map +1 -1
- package/dist/windows.js +2 -79
- package/dist/wire.d.ts +72 -8
- package/dist/wire.d.ts.map +1 -1
- package/dist/wire.js +24 -5
- package/package.json +19 -19
- package/AGENTS.md +0 -299
- package/dist/attempt.d.ts +0 -16
- package/dist/attempt.d.ts.map +0 -1
- package/dist/attempt.js +0 -70
- package/dist/chat/acts.d.ts +0 -33
- package/dist/chat/acts.d.ts.map +0 -1
- package/dist/chat/acts.js +0 -36
- package/dist/chat/context.d.ts +0 -3
- package/dist/chat/context.d.ts.map +0 -1
- package/dist/chat/earlier.d.ts +0 -10
- package/dist/chat/earlier.d.ts.map +0 -1
- package/dist/chat/earlier.js +0 -54
- package/dist/chat/input.d.ts +0 -9
- package/dist/chat/input.d.ts.map +0 -1
- package/dist/chat/input.js +0 -99
- package/dist/chat/kit.d.ts +0 -61
- package/dist/chat/kit.d.ts.map +0 -1
- package/dist/chat/kit.js +0 -123
- package/dist/chat/lasting.d.ts +0 -6
- package/dist/chat/lasting.d.ts.map +0 -1
- package/dist/chat/lasting.js +0 -19
- package/dist/chat/list.d.ts +0 -27
- package/dist/chat/list.d.ts.map +0 -1
- package/dist/chat/list.js +0 -99
- package/dist/chat/markdown.d.ts +0 -21
- package/dist/chat/markdown.d.ts.map +0 -1
- package/dist/chat/markdown.js +0 -246
- package/dist/chat/message.d.ts +0 -6
- package/dist/chat/message.d.ts.map +0 -1
- package/dist/chat/message.js +0 -192
- package/dist/chat/messages.d.ts +0 -22
- package/dist/chat/messages.d.ts.map +0 -1
- package/dist/chat/messages.js +0 -171
- package/dist/chat/name.d.ts +0 -6
- package/dist/chat/name.d.ts.map +0 -1
- package/dist/chat/name.js +0 -37
- package/dist/chat/opened.d.ts +0 -11
- package/dist/chat/opened.d.ts.map +0 -1
- package/dist/chat/opened.js +0 -17
- package/dist/chat/overlay.d.ts +0 -31
- package/dist/chat/overlay.d.ts.map +0 -1
- package/dist/chat/overlay.js +0 -97
- package/dist/chat/parts.d.ts +0 -57
- package/dist/chat/parts.d.ts.map +0 -1
- package/dist/chat/parts.js +0 -119
- package/dist/chat/pieces.d.ts +0 -62
- package/dist/chat/pieces.d.ts.map +0 -1
- package/dist/chat/pieces.js +0 -1110
- package/dist/chat/process.d.ts +0 -20
- package/dist/chat/process.d.ts.map +0 -1
- package/dist/chat/process.js +0 -32
- package/dist/chat/provider.d.ts +0 -63
- package/dist/chat/provider.d.ts.map +0 -1
- package/dist/chat/provider.js +0 -630
- package/dist/chat/question.d.ts +0 -9
- package/dist/chat/question.d.ts.map +0 -1
- package/dist/chat/question.js +0 -69
- package/dist/chat/questions.d.ts.map +0 -1
- package/dist/chat/read.d.ts.map +0 -1
- package/dist/chat/ready.d.ts +0 -34
- package/dist/chat/ready.d.ts.map +0 -1
- package/dist/chat/ready.js +0 -91
- package/dist/chat/steady.d.ts +0 -3
- package/dist/chat/steady.d.ts.map +0 -1
- package/dist/chat/steady.js +0 -26
- package/dist/chat/style.d.ts +0 -4
- package/dist/chat/style.d.ts.map +0 -1
- package/dist/chat/style.js +0 -302
- package/dist/chat.d.ts +0 -14
- package/dist/chat.d.ts.map +0 -1
- package/dist/chat.js +0 -8
- package/dist/fence.d.ts +0 -6
- package/dist/fence.d.ts.map +0 -1
- package/dist/fence.js +0 -10
- package/dist/read-side.d.ts +0 -27
- package/dist/read-side.d.ts.map +0 -1
- package/dist/read-side.js +0 -826
package/dist/attempt.js
DELETED
|
@@ -1,70 +0,0 @@
|
|
|
1
|
-
import { changeBatchIdentity } from './identity.js';
|
|
2
|
-
export function identities(mint = () => changeBatchIdentity()) {
|
|
3
|
-
const kept = new Map();
|
|
4
|
-
let used = new Map();
|
|
5
|
-
return {
|
|
6
|
-
of(intent) {
|
|
7
|
-
const one = used.get(intent) ?? kept.get(intent) ?? mint();
|
|
8
|
-
used.set(intent, one);
|
|
9
|
-
return one;
|
|
10
|
-
},
|
|
11
|
-
settle(answered) {
|
|
12
|
-
if (answered !== 'offline') {
|
|
13
|
-
for (const [intent, one] of used) {
|
|
14
|
-
if (answered === 'unanswered')
|
|
15
|
-
kept.set(intent, one);
|
|
16
|
-
else
|
|
17
|
-
kept.delete(intent);
|
|
18
|
-
}
|
|
19
|
-
}
|
|
20
|
-
used = new Map();
|
|
21
|
-
},
|
|
22
|
-
};
|
|
23
|
-
}
|
|
24
|
-
const blobs = new WeakMap();
|
|
25
|
-
export function intentOf(name, about) {
|
|
26
|
-
const carried = [];
|
|
27
|
-
const json = JSON.stringify(about, (_key, value) => {
|
|
28
|
-
if (!(value instanceof Blob))
|
|
29
|
-
return value;
|
|
30
|
-
let identity = blobs.get(value);
|
|
31
|
-
if (identity === undefined) {
|
|
32
|
-
identity = changeBatchIdentity();
|
|
33
|
-
blobs.set(value, identity);
|
|
34
|
-
}
|
|
35
|
-
carried.push(identity);
|
|
36
|
-
return null;
|
|
37
|
-
});
|
|
38
|
-
return `${name}\u0000${json}\u0000${carried.join(',')}`;
|
|
39
|
-
}
|
|
40
|
-
export function attempts(mint) {
|
|
41
|
-
const numbers = identities(mint);
|
|
42
|
-
const waiting = new Map();
|
|
43
|
-
return {
|
|
44
|
-
begin(act) {
|
|
45
|
-
const intents = [];
|
|
46
|
-
return {
|
|
47
|
-
identity(intent) {
|
|
48
|
-
intents.push(intent);
|
|
49
|
-
return numbers.of(intent);
|
|
50
|
-
},
|
|
51
|
-
settle(answered, drop) {
|
|
52
|
-
numbers.settle(answered);
|
|
53
|
-
if (answered === 'refused' || answered === 'offline')
|
|
54
|
-
drop(act);
|
|
55
|
-
if (answered === 'offline')
|
|
56
|
-
return;
|
|
57
|
-
for (const intent of intents) {
|
|
58
|
-
const earlier = waiting.get(intent);
|
|
59
|
-
if (earlier !== undefined && earlier !== act)
|
|
60
|
-
drop(earlier);
|
|
61
|
-
if (answered === 'unanswered')
|
|
62
|
-
waiting.set(intent, act);
|
|
63
|
-
else
|
|
64
|
-
waiting.delete(intent);
|
|
65
|
-
}
|
|
66
|
-
},
|
|
67
|
-
};
|
|
68
|
-
},
|
|
69
|
-
};
|
|
70
|
-
}
|
package/dist/chat/acts.d.ts
DELETED
|
@@ -1,33 +0,0 @@
|
|
|
1
|
-
import { type Answered } from '../attempt.js';
|
|
2
|
-
import { type CallResult, type Offline } from '../outcome.js';
|
|
3
|
-
import type { Expected } from './overlay.js';
|
|
4
|
-
export type ChatResult = CallResult | Offline;
|
|
5
|
-
export type ChatOutcome = {
|
|
6
|
-
readonly state: 'sending';
|
|
7
|
-
} | {
|
|
8
|
-
readonly state: 'offline';
|
|
9
|
-
} | {
|
|
10
|
-
readonly state: 'failed';
|
|
11
|
-
readonly result: CallResult;
|
|
12
|
-
};
|
|
13
|
-
export declare function accepted(result: ChatResult): result is Extract<CallResult, {
|
|
14
|
-
readonly kind: 'action';
|
|
15
|
-
}>;
|
|
16
|
-
export declare function unanswered(result: ChatResult): boolean;
|
|
17
|
-
export declare function outcomeOf(result: ChatResult): ChatOutcome | null;
|
|
18
|
-
export declare function answeredOf(result: ChatResult): Answered;
|
|
19
|
-
export type Sender = {
|
|
20
|
-
carried(name: string, about: unknown, sending: (operation: string) => Promise<CallResult>): Promise<ChatResult>;
|
|
21
|
-
numbered(name: string, about: unknown, sending: (operation: string) => Promise<ChatResult>): Promise<ChatResult>;
|
|
22
|
-
expect(expected: Expected): void;
|
|
23
|
-
draw(expected: Expected): void;
|
|
24
|
-
};
|
|
25
|
-
type Senders = {
|
|
26
|
-
readonly online: boolean;
|
|
27
|
-
identity(intent: string): string;
|
|
28
|
-
expect(expected: Expected): void;
|
|
29
|
-
draw(expected: Expected): void;
|
|
30
|
-
};
|
|
31
|
-
export declare function sender({ online, identity, expect, draw }: Senders): Sender;
|
|
32
|
-
export {};
|
|
33
|
-
//# sourceMappingURL=acts.d.ts.map
|
package/dist/chat/acts.d.ts.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"acts.d.ts","sourceRoot":"","sources":["../../src/chat/acts.ts"],"names":[],"mappings":"AAAA,OAAO,EAAY,KAAK,QAAQ,EAAE,MAAM,eAAe,CAAC;AACxD,OAAO,EAAa,KAAK,UAAU,EAAE,KAAK,OAAO,EAAE,MAAM,eAAe,CAAC;AACzE,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,cAAc,CAAC;AAE7C,MAAM,MAAM,UAAU,GAAG,UAAU,GAAG,OAAO,CAAC;AAE9C,MAAM,MAAM,WAAW,GACnB;IAAE,QAAQ,CAAC,KAAK,EAAE,SAAS,CAAA;CAAE,GAC7B;IAAE,QAAQ,CAAC,KAAK,EAAE,SAAS,CAAA;CAAE,GAC7B;IAAE,QAAQ,CAAC,KAAK,EAAE,QAAQ,CAAC;IAAC,QAAQ,CAAC,MAAM,EAAE,UAAU,CAAA;CAAE,CAAC;AAE9D,wBAAgB,QAAQ,CACtB,MAAM,EAAE,UAAU,GACjB,MAAM,IAAI,OAAO,CAAC,UAAU,EAAE;IAAE,QAAQ,CAAC,IAAI,EAAE,QAAQ,CAAA;CAAE,CAAC,CAE5D;AAED,wBAAgB,UAAU,CAAC,MAAM,EAAE,UAAU,GAAG,OAAO,CAEtD;AAED,wBAAgB,SAAS,CAAC,MAAM,EAAE,UAAU,GAAG,WAAW,GAAG,IAAI,CAGhE;AAED,wBAAgB,UAAU,CAAC,MAAM,EAAE,UAAU,GAAG,QAAQ,CAIvD;AAED,MAAM,MAAM,MAAM,GAAG;IACnB,OAAO,CACL,IAAI,EAAE,MAAM,EACZ,KAAK,EAAE,OAAO,EACd,OAAO,EAAE,CAAC,SAAS,EAAE,MAAM,KAAK,OAAO,CAAC,UAAU,CAAC,GAClD,OAAO,CAAC,UAAU,CAAC,CAAC;IACvB,QAAQ,CACN,IAAI,EAAE,MAAM,EACZ,KAAK,EAAE,OAAO,EACd,OAAO,EAAE,CAAC,SAAS,EAAE,MAAM,KAAK,OAAO,CAAC,UAAU,CAAC,GAClD,OAAO,CAAC,UAAU,CAAC,CAAC;IACvB,MAAM,CAAC,QAAQ,EAAE,QAAQ,GAAG,IAAI,CAAC;IACjC,IAAI,CAAC,QAAQ,EAAE,QAAQ,GAAG,IAAI,CAAC;CAChC,CAAC;AAEF,KAAK,OAAO,GAAG;IACb,QAAQ,CAAC,MAAM,EAAE,OAAO,CAAC;IACzB,QAAQ,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAAC;IACjC,MAAM,CAAC,QAAQ,EAAE,QAAQ,GAAG,IAAI,CAAC;IACjC,IAAI,CAAC,QAAQ,EAAE,QAAQ,GAAG,IAAI,CAAC;CAChC,CAAC;AAEF,wBAAgB,MAAM,CAAC,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,EAAE,OAAO,GAAG,MAAM,CAe1E"}
|
package/dist/chat/acts.js
DELETED
|
@@ -1,36 +0,0 @@
|
|
|
1
|
-
import { intentOf } from '../attempt.js';
|
|
2
|
-
import { UNCERTAIN } from '../outcome.js';
|
|
3
|
-
export function accepted(result) {
|
|
4
|
-
return result.kind === 'action';
|
|
5
|
-
}
|
|
6
|
-
export function unanswered(result) {
|
|
7
|
-
return result.kind === 'transport-uncertainty';
|
|
8
|
-
}
|
|
9
|
-
export function outcomeOf(result) {
|
|
10
|
-
if (accepted(result))
|
|
11
|
-
return null;
|
|
12
|
-
return result.kind === 'offline' ? { state: 'offline' } : { state: 'failed', result };
|
|
13
|
-
}
|
|
14
|
-
export function answeredOf(result) {
|
|
15
|
-
if (accepted(result))
|
|
16
|
-
return 'accepted';
|
|
17
|
-
if (result.kind === 'offline')
|
|
18
|
-
return 'offline';
|
|
19
|
-
return unanswered(result) ? 'unanswered' : 'refused';
|
|
20
|
-
}
|
|
21
|
-
export function sender({ online, identity, expect, draw }) {
|
|
22
|
-
const numbered = async (name, about, sending) => {
|
|
23
|
-
try {
|
|
24
|
-
return await sending(identity(intentOf(name, about)));
|
|
25
|
-
}
|
|
26
|
-
catch {
|
|
27
|
-
return UNCERTAIN;
|
|
28
|
-
}
|
|
29
|
-
};
|
|
30
|
-
return {
|
|
31
|
-
carried: (name, about, sending) => online ? numbered(name, about, sending) : Promise.resolve({ kind: 'offline' }),
|
|
32
|
-
numbered,
|
|
33
|
-
expect,
|
|
34
|
-
draw,
|
|
35
|
-
};
|
|
36
|
-
}
|
package/dist/chat/context.d.ts
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"context.d.ts","sourceRoot":"","sources":["../../src/chat/context.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAQjD,wBAAgB,WAAW,CAAC,OAAO,EAAE,WAAW,GAAG,MAAM,CAExD"}
|
package/dist/chat/earlier.d.ts
DELETED
|
@@ -1,10 +0,0 @@
|
|
|
1
|
-
import type { MdRuntimeClient } from '../client.js';
|
|
2
|
-
import type { ConversationView } from '../conversation.js';
|
|
3
|
-
export declare const CHAT_WINDOW = 50;
|
|
4
|
-
export type Paged = {
|
|
5
|
-
readonly view: ConversationView | null;
|
|
6
|
-
readonly hasEarlier: boolean;
|
|
7
|
-
loadEarlier(): Promise<void>;
|
|
8
|
-
};
|
|
9
|
-
export declare function useEarlier(client: MdRuntimeClient, thread: string | null, held: ConversationView | null): Paged;
|
|
10
|
-
//# sourceMappingURL=earlier.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"earlier.d.ts","sourceRoot":"","sources":["../../src/chat/earlier.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AACpD,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AAE3D,eAAO,MAAM,WAAW,KAAK,CAAC;AAU9B,MAAM,MAAM,KAAK,GAAG;IAClB,QAAQ,CAAC,IAAI,EAAE,gBAAgB,GAAG,IAAI,CAAC;IACvC,QAAQ,CAAC,UAAU,EAAE,OAAO,CAAC;IAC7B,WAAW,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;CAC9B,CAAC;AAuBF,wBAAgB,UAAU,CACxB,MAAM,EAAE,eAAe,EACvB,MAAM,EAAE,MAAM,GAAG,IAAI,EACrB,IAAI,EAAE,gBAAgB,GAAG,IAAI,GAC5B,KAAK,CA8BP"}
|
package/dist/chat/earlier.js
DELETED
|
@@ -1,54 +0,0 @@
|
|
|
1
|
-
import { useCallback, useMemo, useState } from 'react';
|
|
2
|
-
export const CHAT_WINDOW = 50;
|
|
3
|
-
function slidOut(before, after) {
|
|
4
|
-
if (before === null || before.conversation !== after.conversation)
|
|
5
|
-
return [];
|
|
6
|
-
const kept = new Set(after.messages.map((one) => one.identity));
|
|
7
|
-
const left = [];
|
|
8
|
-
for (const message of before.messages) {
|
|
9
|
-
if (kept.has(message.identity))
|
|
10
|
-
break;
|
|
11
|
-
left.push(message);
|
|
12
|
-
}
|
|
13
|
-
return left;
|
|
14
|
-
}
|
|
15
|
-
function joined(held, earlier) {
|
|
16
|
-
const { next: _live, ...view } = held;
|
|
17
|
-
const live = new Set(held.messages.map((one) => one.identity));
|
|
18
|
-
return {
|
|
19
|
-
...view,
|
|
20
|
-
messages: [...earlier.messages.filter((one) => !live.has(one.identity)), ...held.messages],
|
|
21
|
-
...(earlier.next === undefined ? {} : { next: earlier.next }),
|
|
22
|
-
};
|
|
23
|
-
}
|
|
24
|
-
export function useEarlier(client, thread, held) {
|
|
25
|
-
const [earlier, setEarlier] = useState(null);
|
|
26
|
-
const [seen, setSeen] = useState(held);
|
|
27
|
-
const whole = held !== null && held.next === undefined;
|
|
28
|
-
let current = earlier !== null && earlier.thread === thread && !whole ? earlier : null;
|
|
29
|
-
if (current !== earlier)
|
|
30
|
-
setEarlier(current);
|
|
31
|
-
if (seen !== held) {
|
|
32
|
-
setSeen(held);
|
|
33
|
-
const carried = held === null ? [] : slidOut(seen, held);
|
|
34
|
-
if (thread !== null && carried.length > 0) {
|
|
35
|
-
const base = current ?? { thread, messages: [], next: seen?.next };
|
|
36
|
-
current = { ...base, messages: [...base.messages, ...carried] };
|
|
37
|
-
setEarlier(current);
|
|
38
|
-
}
|
|
39
|
-
}
|
|
40
|
-
const view = useMemo(() => (held === null || current === null ? held : joined(held, current)), [held, current]);
|
|
41
|
-
const next = current === null ? held?.next : current.next;
|
|
42
|
-
const loadEarlier = useCallback(async () => {
|
|
43
|
-
if (thread === null || next === undefined)
|
|
44
|
-
return;
|
|
45
|
-
const older = await client.conversation.read(thread, { limit: CHAT_WINDOW, after: next });
|
|
46
|
-
setEarlier((now) => {
|
|
47
|
-
const base = now !== null && now.thread === thread ? now : { thread, messages: [], next };
|
|
48
|
-
if (base.next !== next)
|
|
49
|
-
return now;
|
|
50
|
-
return { thread, messages: [...older.messages, ...base.messages], next: older.next };
|
|
51
|
-
});
|
|
52
|
-
}, [client, thread, next]);
|
|
53
|
-
return { view, hasEarlier: next !== undefined, loadEarlier };
|
|
54
|
-
}
|
package/dist/chat/input.d.ts
DELETED
|
@@ -1,9 +0,0 @@
|
|
|
1
|
-
import { type ReactElement, type ReactNode } from 'react';
|
|
2
|
-
import { type ChatNoteProps } from './kit.js';
|
|
3
|
-
export type ChatInputProps = {
|
|
4
|
-
readonly messageLength?: number;
|
|
5
|
-
readonly note?: (note: ChatNoteProps) => ReactNode;
|
|
6
|
-
readonly autoFocus?: boolean;
|
|
7
|
-
};
|
|
8
|
-
export declare function ChatInput({ messageLength, note, autoFocus, }: ChatInputProps): ReactElement;
|
|
9
|
-
//# sourceMappingURL=input.d.ts.map
|
package/dist/chat/input.d.ts.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"input.d.ts","sourceRoot":"","sources":["../../src/chat/input.tsx"],"names":[],"mappings":"AAAA,OAAO,EAA0C,KAAK,YAAY,EAAE,KAAK,SAAS,EAAE,MAAM,OAAO,CAAC;AAqBlG,OAAO,EAAsD,KAAK,aAAa,EAAE,MAAM,UAAU,CAAC;AAMlG,MAAM,MAAM,cAAc,GAAG;IAC3B,QAAQ,CAAC,aAAa,CAAC,EAAE,MAAM,CAAC;IAChC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,EAAE,aAAa,KAAK,SAAS,CAAC;IACnD,QAAQ,CAAC,SAAS,CAAC,EAAE,OAAO,CAAC;CAC9B,CAAC;AAiGF,wBAAgB,SAAS,CAAC,EACxB,aAAa,EACb,IAAY,EACZ,SAAiB,GAClB,EAAE,cAAc,GAAG,YAAY,CA+K/B"}
|
package/dist/chat/input.js
DELETED
|
@@ -1,99 +0,0 @@
|
|
|
1
|
-
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
-
import { useContext, useEffect, useMemo, useRef } from 'react';
|
|
3
|
-
import { ComposerPrimitive, useAui, useAuiState, } from '@assistant-ui/react';
|
|
4
|
-
import { DropdownMenu } from 'radix-ui';
|
|
5
|
-
import ArrowUp from 'lucide-react/dist/esm/icons/arrow-up.mjs';
|
|
6
|
-
import Check from 'lucide-react/dist/esm/icons/check.mjs';
|
|
7
|
-
import ChevronDown from 'lucide-react/dist/esm/icons/chevron-down.mjs';
|
|
8
|
-
import CornerDownRight from 'lucide-react/dist/esm/icons/corner-down-right.mjs';
|
|
9
|
-
import ListEnd from 'lucide-react/dist/esm/icons/list-end.mjs';
|
|
10
|
-
import Paperclip from 'lucide-react/dist/esm/icons/paperclip.mjs';
|
|
11
|
-
import Pencil from 'lucide-react/dist/esm/icons/pencil.mjs';
|
|
12
|
-
import Plus from 'lucide-react/dist/esm/icons/plus.mjs';
|
|
13
|
-
import Square from 'lucide-react/dist/esm/icons/square.mjs';
|
|
14
|
-
import X from 'lucide-react/dist/esm/icons/x.mjs';
|
|
15
|
-
import { contextText } from './context.js';
|
|
16
|
-
import { Button, ChatNote, IconButton, Name, Portal, Scoped } from './kit.js';
|
|
17
|
-
import { COMMAND } from './process.js';
|
|
18
|
-
import { useChat, useChatScope } from './provider.js';
|
|
19
|
-
import { forgetAnswers } from './question.js';
|
|
20
|
-
import { useOpened } from './opened.js';
|
|
21
|
-
const commanded = {
|
|
22
|
-
serialize: (item) => `${COMMAND}${item.id}`,
|
|
23
|
-
parse: (said) => [{ kind: 'text', text: said }],
|
|
24
|
-
};
|
|
25
|
-
const atStart = (said, char, cursor) => {
|
|
26
|
-
const typed = said.slice(0, cursor);
|
|
27
|
-
return typed.startsWith(char) && !/\s/.test(typed)
|
|
28
|
-
? { query: typed.slice(char.length), offset: 0, endOffset: cursor }
|
|
29
|
-
: null;
|
|
30
|
-
};
|
|
31
|
-
function commandItem(command) {
|
|
32
|
-
return {
|
|
33
|
-
id: command.name,
|
|
34
|
-
type: 'command',
|
|
35
|
-
label: `${COMMAND}${command.name}`,
|
|
36
|
-
description: command.description,
|
|
37
|
-
};
|
|
38
|
-
}
|
|
39
|
-
function commandsFound(commands, query) {
|
|
40
|
-
const asked = query.toLowerCase();
|
|
41
|
-
const named = commands.filter((one) => one.name.toLowerCase().startsWith(asked));
|
|
42
|
-
const within = commands.filter((one) => !named.includes(one) && one.name.toLowerCase().includes(asked));
|
|
43
|
-
return [...named, ...within].map(commandItem);
|
|
44
|
-
}
|
|
45
|
-
function Attached({ id, name }) {
|
|
46
|
-
const aui = useAui();
|
|
47
|
-
return (_jsxs("span", { className: "ahc-chip ahc-chip--removable", children: [_jsx(Paperclip, { "aria-hidden": "true" }), _jsx(Name, { text: name }), _jsx(IconButton, { label: `Remove ${name}`, compact: true, onClick: () => void aui.composer().attachment({ id }).remove(), children: _jsx(X, { "aria-hidden": "true" }) })] }));
|
|
48
|
-
}
|
|
49
|
-
function Picker({ option, choose, }) {
|
|
50
|
-
const container = useContext(Portal);
|
|
51
|
-
return (_jsxs(DropdownMenu.Root, { modal: false, children: [_jsxs(DropdownMenu.Trigger, { className: "ahc-btn ahc-picker", "aria-label": option.name, title: option.name, children: [_jsx(Name, { text: option.values.find((one) => one.value === option.value)?.name ?? option.value }), _jsx(ChevronDown, { "aria-hidden": "true" })] }), _jsx(DropdownMenu.Portal, { container: container, children: _jsxs(DropdownMenu.Content, { className: "ahc-menu", side: "top", align: "start", children: [_jsx(DropdownMenu.Label, { className: "ahc-menu__heading", children: option.name }), _jsx(DropdownMenu.RadioGroup, { value: option.value, onValueChange: (value) => {
|
|
52
|
-
if (value !== option.value)
|
|
53
|
-
void choose(option.id, value);
|
|
54
|
-
}, children: option.values.map((one) => (_jsxs(DropdownMenu.RadioItem, { value: one.value, className: "ahc-row", children: [_jsx("span", { className: "ahc-row__label", children: one.name }), _jsx(DropdownMenu.ItemIndicator, { asChild: true, children: _jsx(Check, { "aria-hidden": "true" }) })] }, one.value))) })] }) })] }));
|
|
55
|
-
}
|
|
56
|
-
function noted(note) {
|
|
57
|
-
return _jsx(ChatNote, { ...note });
|
|
58
|
-
}
|
|
59
|
-
export function ChatInput({ messageLength, note = noted, autoFocus = false, }) {
|
|
60
|
-
const chat = useChat();
|
|
61
|
-
const { client } = useChatScope();
|
|
62
|
-
const aui = useAui();
|
|
63
|
-
const opened = useOpened();
|
|
64
|
-
const { lone, commands, context, queued, running } = opened;
|
|
65
|
-
const conversation = chat.conversation ?? '';
|
|
66
|
-
const input = useRef(null);
|
|
67
|
-
const picker = useRef(null);
|
|
68
|
-
const thread = chat.conversation ?? `new:${chat.agent ?? ''}`;
|
|
69
|
-
useEffect(() => {
|
|
70
|
-
if (autoFocus)
|
|
71
|
-
input.current?.focus();
|
|
72
|
-
}, [autoFocus, thread]);
|
|
73
|
-
const typed = useAuiState((s) => s.composer.text);
|
|
74
|
-
const attached = useAuiState((s) => s.composer.attachments.length > 0);
|
|
75
|
-
const fault = messageLength !== undefined && typed.length > messageLength
|
|
76
|
-
? `Keep it to ${messageLength} characters.`
|
|
77
|
-
: null;
|
|
78
|
-
const listed = useMemo(() => ({
|
|
79
|
-
categories: () => [],
|
|
80
|
-
categoryItems: () => [],
|
|
81
|
-
search: (query) => commandsFound(commands, query),
|
|
82
|
-
}), [commands]);
|
|
83
|
-
const interrupt = () => void chat.stop().then((stopped) => {
|
|
84
|
-
if (stopped)
|
|
85
|
-
void forgetAnswers(client, conversation);
|
|
86
|
-
});
|
|
87
|
-
const edit = (id) => {
|
|
88
|
-
chat.edit(id);
|
|
89
|
-
input.current?.focus();
|
|
90
|
-
};
|
|
91
|
-
const drafted = typed.trim() !== '' || attached;
|
|
92
|
-
const readOnly = opened.deleted;
|
|
93
|
-
return (_jsx(Scoped, { children: _jsxs("div", { className: "ahc-input-area", children: [readOnly || queued.length === 0 ? null : (_jsxs("div", { role: "group", "aria-label": "Queued messages", className: "ahc-queue", children: [_jsxs("div", { className: "ahc-queue__head", children: [_jsx(ListEnd, { "aria-hidden": "true" }), _jsx("span", { className: "ahc-queue__said", children: `${queued.length} ${queued.length === 1 ? 'message waits' : 'messages wait'} for ${opened.name} to finish` }), running ? (_jsx(Button, { variant: "outline", compact: true, onClick: interrupt, children: "Send now" })) : null] }), queued.map((item) => (_jsxs("div", { className: "ahc-queue-row", children: [_jsx(CornerDownRight, { "aria-hidden": "true", className: "ahc-muted" }), _jsx("span", { className: "ahc-queue-row__text", children: item.text }), _jsx(IconButton, { label: "Edit queued message", compact: true, onClick: () => edit(item.id), children: _jsx(Pencil, { "aria-hidden": "true" }) }), _jsx(IconButton, { label: "Remove queued message", compact: true, onClick: () => chat.unqueue(item.id), children: _jsx(X, { "aria-hidden": "true" }) })] }, item.id)))] })), readOnly ? null : (_jsx(ComposerPrimitive.Root, { className: "ahc-composer", children: _jsxs(ComposerPrimitive.Unstable_TriggerPopoverRoot, { children: [commands.length === 0 ? null : (_jsxs(ComposerPrimitive.Unstable_TriggerPopover, { char: COMMAND, matcher: atStart, adapter: listed, "aria-label": "Commands", className: "ahc-menu ahc-commands", children: [_jsx(ComposerPrimitive.Unstable_TriggerPopover.Directive, { formatter: commanded }), _jsx(ComposerPrimitive.Unstable_TriggerPopoverItems, { children: (items) => items.map((item, index) => (_jsx(ComposerPrimitive.Unstable_TriggerPopoverItem, { item: item, index: index, className: "ahc-row ahc-row--two", children: _jsxs("span", { className: "ahc-row__label", children: [_jsx("span", { className: "ahc-row__title ahc-mono", children: item.label }), _jsx("span", { className: "ahc-row__sub", children: item.description })] }) }, item.id))) })] })), attached ? (_jsx("div", { className: "ahc-chips", children: _jsx(ComposerPrimitive.Attachments, { children: ({ attachment }) => _jsx(Attached, { id: attachment.id, name: attachment.name }) }) })) : null, _jsx(ComposerPrimitive.Input, { asChild: true, "aria-label": "Message", placeholder: lone === null ? `Message ${opened.name}` : lone.field.prompt, submitMode: fault === null ? 'enter' : 'none', children: _jsx("textarea", { ref: input, className: "ahc-composer__input", rows: 1 }) }), _jsxs("div", { className: "ahc-composer__bar", children: [_jsx(IconButton, { label: "Add files", onClick: () => picker.current?.click(), children: _jsx(Plus, { size: 20, "aria-hidden": "true" }) }), _jsx("input", { ref: picker, type: "file", multiple: true, hidden: true, onChange: (event) => {
|
|
94
|
-
const chosen = [...(event.target.files ?? [])];
|
|
95
|
-
event.target.value = '';
|
|
96
|
-
for (const file of chosen)
|
|
97
|
-
void aui.composer().addAttachment(file);
|
|
98
|
-
} }), opened.options.map((option) => (_jsx(Picker, { option: option, choose: chat.choose }, option.id))), _jsx("span", { className: "ahc-spacer" }), context === null ? null : (_jsx("span", { title: "Context in use", className: "ahc-meta", children: contextText(context) })), running ? (_jsx("button", { type: "button", className: `ahc-btn ahc-btn--icon ${drafted ? 'ahc-btn--outline' : 'ahc-btn--ink'}`, "aria-label": "Stop", title: "Stop", onClick: interrupt, children: _jsx(Square, { "aria-hidden": "true" }) })) : null, running && !drafted ? null : (_jsx(ComposerPrimitive.Send, { className: "ahc-btn ahc-btn--icon ahc-btn--ink", "aria-label": running ? 'Queue message' : 'Send', disabled: fault !== null, children: _jsx(ArrowUp, { size: 20, "aria-hidden": "true" }) }))] })] }) })), fault === null ? null : (_jsx("p", { className: "ahc-note", role: "status", "data-state": "refused", children: fault })), note({ outcome: chat.acting.outcome }), note({ outcome: chat.sending.outcome, again: chat.sending.again ?? undefined })] }) }));
|
|
99
|
-
}
|
package/dist/chat/kit.d.ts
DELETED
|
@@ -1,61 +0,0 @@
|
|
|
1
|
-
import { type ComponentPropsWithRef, type ReactElement, type ReactNode } from 'react';
|
|
2
|
-
import type { ChatOutcome } from './acts.js';
|
|
3
|
-
export type Variant = 'quiet' | 'ink' | 'outline' | 'danger' | 'danger-outline';
|
|
4
|
-
export declare const Portal: import("react").Context<HTMLElement | null>;
|
|
5
|
-
export declare function Within({ root, children, }: {
|
|
6
|
-
root: HTMLElement;
|
|
7
|
-
children: ReactNode;
|
|
8
|
-
}): ReactElement;
|
|
9
|
-
export declare function Scoped({ children }: {
|
|
10
|
-
children: ReactNode;
|
|
11
|
-
}): ReactElement;
|
|
12
|
-
export declare function buttonClass(variant: Variant, compact: boolean, icon: boolean): string;
|
|
13
|
-
type Native = Omit<ComponentPropsWithRef<'button'>, 'className'>;
|
|
14
|
-
export declare function Button({ variant, compact, type, children, ...rest }: Native & {
|
|
15
|
-
variant?: Variant;
|
|
16
|
-
compact?: boolean;
|
|
17
|
-
}): ReactElement;
|
|
18
|
-
export declare function IconButton({ label, variant, compact, type, ...rest }: Native & {
|
|
19
|
-
label: string;
|
|
20
|
-
variant?: Variant;
|
|
21
|
-
compact?: boolean;
|
|
22
|
-
}): ReactElement;
|
|
23
|
-
export declare function Name({ text, className }: {
|
|
24
|
-
text: string;
|
|
25
|
-
className?: string;
|
|
26
|
-
}): ReactElement;
|
|
27
|
-
export declare function Menu({ trigger, children, }: {
|
|
28
|
-
trigger: ReactElement;
|
|
29
|
-
children: ReactNode;
|
|
30
|
-
}): ReactElement;
|
|
31
|
-
export declare function MenuGap(): ReactElement;
|
|
32
|
-
export declare function MenuItem({ icon, danger, onSelect, children, }: {
|
|
33
|
-
icon: ReactNode;
|
|
34
|
-
danger?: boolean;
|
|
35
|
-
onSelect: () => void;
|
|
36
|
-
children: ReactNode;
|
|
37
|
-
}): ReactElement;
|
|
38
|
-
export declare function Confirm({ title, text, action, onConfirm, onClose, }: {
|
|
39
|
-
title: string;
|
|
40
|
-
text: string;
|
|
41
|
-
action: string;
|
|
42
|
-
onConfirm: () => void;
|
|
43
|
-
onClose: () => void;
|
|
44
|
-
}): ReactElement;
|
|
45
|
-
export declare function ItemRow({ lead, title, sub, trailing, }: {
|
|
46
|
-
lead: ReactNode;
|
|
47
|
-
title: ReactNode;
|
|
48
|
-
sub: ReactNode;
|
|
49
|
-
trailing: ReactNode;
|
|
50
|
-
}): ReactElement;
|
|
51
|
-
export declare function Working({ label, step, }: {
|
|
52
|
-
label?: string;
|
|
53
|
-
step?: string | undefined;
|
|
54
|
-
}): ReactElement;
|
|
55
|
-
export type ChatNoteProps = {
|
|
56
|
-
readonly outcome: ChatOutcome | null;
|
|
57
|
-
readonly again?: (() => void) | undefined;
|
|
58
|
-
};
|
|
59
|
-
export declare function ChatNote({ outcome, again }: ChatNoteProps): ReactElement | null;
|
|
60
|
-
export {};
|
|
61
|
-
//# sourceMappingURL=kit.d.ts.map
|
package/dist/chat/kit.d.ts.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"kit.d.ts","sourceRoot":"","sources":["../../src/chat/kit.tsx"],"names":[],"mappings":"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"}
|
package/dist/chat/kit.js
DELETED
|
@@ -1,123 +0,0 @@
|
|
|
1
|
-
import { Fragment as _Fragment, jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
-
import { Children, createContext, useCallback, useContext, useEffect, useState, } from 'react';
|
|
3
|
-
import { Dialog, DropdownMenu } from 'radix-ui';
|
|
4
|
-
import { LucideProvider } from 'lucide-react/dist/esm/context.mjs';
|
|
5
|
-
import X from 'lucide-react/dist/esm/icons/x.mjs';
|
|
6
|
-
import { adopted } from './style.js';
|
|
7
|
-
export const Portal = createContext(null);
|
|
8
|
-
export function Within({ root, children, }) {
|
|
9
|
-
return (_jsx(Portal.Provider, { value: root, children: _jsx(LucideProvider, { size: 16, strokeWidth: 1.5, absoluteStrokeWidth: true, children: children }) }));
|
|
10
|
-
}
|
|
11
|
-
export function Scoped({ children }) {
|
|
12
|
-
const inside = useContext(Portal);
|
|
13
|
-
const [root, setRoot] = useState(null);
|
|
14
|
-
const attach = useCallback((element) => {
|
|
15
|
-
adopted(element);
|
|
16
|
-
setRoot(element);
|
|
17
|
-
}, []);
|
|
18
|
-
if (inside !== null)
|
|
19
|
-
return _jsx(_Fragment, { children: children });
|
|
20
|
-
return (_jsx("div", { ref: attach, className: "ahc ahc-scope", children: root === null ? null : _jsx(Within, { root: root, children: children }) }));
|
|
21
|
-
}
|
|
22
|
-
export function buttonClass(variant, compact, icon) {
|
|
23
|
-
return [
|
|
24
|
-
'ahc-btn',
|
|
25
|
-
icon ? 'ahc-btn--icon' : null,
|
|
26
|
-
variant === 'quiet' ? null : `ahc-btn--${variant}`,
|
|
27
|
-
compact ? 'ahc-btn--compact' : null,
|
|
28
|
-
]
|
|
29
|
-
.filter(Boolean)
|
|
30
|
-
.join(' ');
|
|
31
|
-
}
|
|
32
|
-
function labelled(children) {
|
|
33
|
-
const parts = [];
|
|
34
|
-
let said = '';
|
|
35
|
-
const flush = () => {
|
|
36
|
-
if (said !== '') {
|
|
37
|
-
parts.push(_jsx("span", { className: "ahc-name", children: said }, `text-${parts.length}`));
|
|
38
|
-
}
|
|
39
|
-
said = '';
|
|
40
|
-
};
|
|
41
|
-
for (const child of Children.toArray(children)) {
|
|
42
|
-
if (typeof child === 'string' || typeof child === 'number')
|
|
43
|
-
said += String(child);
|
|
44
|
-
else {
|
|
45
|
-
flush();
|
|
46
|
-
parts.push(child);
|
|
47
|
-
}
|
|
48
|
-
}
|
|
49
|
-
flush();
|
|
50
|
-
return parts;
|
|
51
|
-
}
|
|
52
|
-
export function Button({ variant = 'quiet', compact = false, type = 'button', children, ...rest }) {
|
|
53
|
-
return (_jsx("button", { type: type, className: buttonClass(variant, compact, false), ...rest, children: labelled(children) }));
|
|
54
|
-
}
|
|
55
|
-
export function IconButton({ label, variant = 'quiet', compact = false, type = 'button', ...rest }) {
|
|
56
|
-
return (_jsx("button", { type: type, "aria-label": label, className: buttonClass(variant, compact, true), ...rest }));
|
|
57
|
-
}
|
|
58
|
-
export function Name({ text, className }) {
|
|
59
|
-
return (_jsx("span", { className: className === undefined ? 'ahc-name' : `ahc-name ${className}`, title: text, children: text }));
|
|
60
|
-
}
|
|
61
|
-
export function Menu({ trigger, children, }) {
|
|
62
|
-
const container = useContext(Portal);
|
|
63
|
-
const [open, setOpen] = useState(false);
|
|
64
|
-
return (_jsxs(DropdownMenu.Root, { modal: false, open: open, onOpenChange: setOpen, children: [_jsx(DropdownMenu.Trigger, { asChild: true, children: trigger }), open ? (_jsx(DropdownMenu.Portal, { forceMount: true, container: container, children: _jsx(DropdownMenu.Content, { forceMount: true, className: "ahc-menu", align: "end", sideOffset: 4, collisionPadding: 8, children: children }) })) : null] }));
|
|
65
|
-
}
|
|
66
|
-
export function MenuGap() {
|
|
67
|
-
return _jsx(DropdownMenu.Separator, { className: "ahc-menu__gap" });
|
|
68
|
-
}
|
|
69
|
-
export function MenuItem({ icon, danger = false, onSelect, children, }) {
|
|
70
|
-
return (_jsxs(DropdownMenu.Item, { className: danger ? 'ahc-row ahc-row--danger' : 'ahc-row', onSelect: onSelect, children: [_jsx("span", { className: "ahc-row__icon", children: icon }), _jsx("span", { className: "ahc-row__label", children: _jsx("span", { className: "ahc-row__title", children: children }) })] }));
|
|
71
|
-
}
|
|
72
|
-
export function Confirm({ title, text, action, onConfirm, onClose, }) {
|
|
73
|
-
const container = useContext(Portal);
|
|
74
|
-
useEffect(() => {
|
|
75
|
-
const behind = container?.querySelector('.ahc-frame');
|
|
76
|
-
if (behind === null || behind === undefined)
|
|
77
|
-
return;
|
|
78
|
-
behind.inert = true;
|
|
79
|
-
return () => {
|
|
80
|
-
behind.inert = false;
|
|
81
|
-
};
|
|
82
|
-
}, [container]);
|
|
83
|
-
return (_jsx(Dialog.Root, { open: true, modal: false, onOpenChange: (open) => {
|
|
84
|
-
if (!open)
|
|
85
|
-
onClose();
|
|
86
|
-
}, children: _jsxs(Dialog.Portal, { container: container, children: [_jsx("div", { className: "ahc-scrim", onClick: onClose }), _jsxs(Dialog.Content, { className: "ahc-dialog", role: "alertdialog", "aria-describedby": undefined, "aria-modal": true, onInteractOutside: (event) => event.preventDefault(), children: [_jsxs("div", { className: "ahc-dialog__head", children: [_jsx(Dialog.Title, { className: "ahc-dialog__title", children: title }), _jsx(Dialog.Close, { asChild: true, children: _jsx(IconButton, { label: "Close", compact: true, children: _jsx(X, { size: 20, "aria-hidden": "true" }) }) })] }), _jsx("div", { className: "ahc-dialog__body", children: _jsx("p", { className: "ahc-dialog__text", children: text }) }), _jsxs("div", { className: "ahc-dialog__actions", children: [_jsx(Button, { onClick: onClose, children: "Cancel" }), _jsx(Button, { variant: "danger", onClick: () => {
|
|
87
|
-
onConfirm();
|
|
88
|
-
onClose();
|
|
89
|
-
}, children: action })] })] })] }) }));
|
|
90
|
-
}
|
|
91
|
-
export function ItemRow({ lead, title, sub, trailing, }) {
|
|
92
|
-
return (_jsxs("div", { className: "ahc-row ahc-row--two ahc-item", children: [_jsx("span", { className: "ahc-item__lead", children: lead }), _jsxs("span", { className: "ahc-row__label", children: [_jsx("span", { className: "ahc-row__title ahc-item__title", children: title }), _jsx("span", { className: "ahc-row__sub", children: sub })] }), trailing] }));
|
|
93
|
-
}
|
|
94
|
-
function elapsed(seconds) {
|
|
95
|
-
return seconds >= 60 ? `${Math.floor(seconds / 60)}m ${seconds % 60}s` : `${seconds}s`;
|
|
96
|
-
}
|
|
97
|
-
export function Working({ label = 'Working', step, }) {
|
|
98
|
-
const [from] = useState(() => Date.now());
|
|
99
|
-
const [now, setNow] = useState(from);
|
|
100
|
-
useEffect(() => {
|
|
101
|
-
// The elapsed time counts whole seconds, so it moves once a second.
|
|
102
|
-
const tick = setInterval(() => setNow(Date.now()), 1000);
|
|
103
|
-
return () => clearInterval(tick);
|
|
104
|
-
}, []);
|
|
105
|
-
return (_jsxs("div", { className: "ahc-toolline ahc-working", role: "status", children: [_jsx("span", { className: "ahc-shimmer", children: label }), _jsx("span", { className: "ahc-figure", "aria-hidden": "true", children: elapsed(Math.floor((now - from) / 1000)) }), step === undefined ? null : _jsx("span", { children: step })] }));
|
|
106
|
-
}
|
|
107
|
-
const SAID = {
|
|
108
|
-
sending: 'Sending…',
|
|
109
|
-
offline: 'House can’t be reached. Nothing was sent.',
|
|
110
|
-
};
|
|
111
|
-
const UNANSWERED = 'House did not answer.';
|
|
112
|
-
export function ChatNote({ outcome, again }) {
|
|
113
|
-
if (outcome === null)
|
|
114
|
-
return null;
|
|
115
|
-
const uncertain = outcome.state === 'failed' && outcome.result.kind === 'transport-uncertainty';
|
|
116
|
-
const said = outcome.state !== 'failed'
|
|
117
|
-
? SAID[outcome.state]
|
|
118
|
-
: uncertain
|
|
119
|
-
? 'House did not answer. Try again.'
|
|
120
|
-
: 'House refused this.';
|
|
121
|
-
const retried = again !== undefined && uncertain;
|
|
122
|
-
return (_jsxs("p", { className: "ahc-note", role: "status", "data-state": uncertain ? 'uncertain' : outcome.state, children: [retried ? UNANSWERED : said, retried ? (_jsxs(_Fragment, { children: [' ', _jsx("button", { type: "button", className: "ahc-again", onClick: again, children: "Try again" })] })) : null] }));
|
|
123
|
-
}
|
package/dist/chat/lasting.d.ts
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"lasting.d.ts","sourceRoot":"","sources":["../../src/chat/lasting.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,OAAO,CAAC;AAM1C,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAiB3C,wBAAgB,YAAY,CAAC,EAAE,OAAO,EAAE,EAAE;IAAE,OAAO,EAAE,SAAS,QAAQ,EAAE,CAAA;CAAE,GAAG,YAAY,CAyBxF"}
|
package/dist/chat/lasting.js
DELETED
|
@@ -1,19 +0,0 @@
|
|
|
1
|
-
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
-
import Bot from 'lucide-react/dist/esm/icons/bot.mjs';
|
|
3
|
-
import CalendarClock from 'lucide-react/dist/esm/icons/calendar-clock.mjs';
|
|
4
|
-
import RefreshCw from 'lucide-react/dist/esm/icons/refresh-cw.mjs';
|
|
5
|
-
import Terminal from 'lucide-react/dist/esm/icons/terminal.mjs';
|
|
6
|
-
import { ItemRow } from './kit.js';
|
|
7
|
-
const SUB = {
|
|
8
|
-
job: 'A background job',
|
|
9
|
-
schedule: 'A schedule',
|
|
10
|
-
subagent: 'A sub-agent',
|
|
11
|
-
};
|
|
12
|
-
function Icon({ kind }) {
|
|
13
|
-
if (kind === 'schedule')
|
|
14
|
-
return _jsx(CalendarClock, { size: 20, "aria-hidden": "true" });
|
|
15
|
-
return kind === 'subagent' ? (_jsx(Bot, { size: 20, "aria-hidden": "true" })) : (_jsx(Terminal, { size: 20, "aria-hidden": "true" }));
|
|
16
|
-
}
|
|
17
|
-
export function StillRunning({ lasting }) {
|
|
18
|
-
return (_jsxs("section", { "aria-label": "Still running", className: "ahc-lasting", children: [_jsxs("div", { className: "ahc-lasting__head", children: [_jsx("h2", { className: "ahc-lasting__title", children: "Still running" }), _jsx("span", { className: "ahc-secondary", children: "After this turn ended" })] }), lasting.map((one, at) => (_jsx(ItemRow, { lead: _jsx(Icon, { kind: one.kind }), title: one.title === '' ? SUB[one.kind] : one.title, sub: one.next === null ? SUB[one.kind] : `${SUB[one.kind]} · next run ${one.next}`, trailing: one.kind === 'schedule' ? null : (_jsxs("span", { className: "ahc-running", children: [_jsx(RefreshCw, { "aria-hidden": "true" }), "Running"] })) }, `${one.kind}:${one.title}:${at}`)))] }));
|
|
19
|
-
}
|
package/dist/chat/list.d.ts
DELETED
|
@@ -1,27 +0,0 @@
|
|
|
1
|
-
import { type ComponentType, type ReactElement, type ReactNode } from 'react';
|
|
2
|
-
export type AgentLook = {
|
|
3
|
-
readonly AgentLink?: ComponentType<{
|
|
4
|
-
agent: string;
|
|
5
|
-
className: string;
|
|
6
|
-
children: ReactNode;
|
|
7
|
-
'aria-current': 'true' | undefined;
|
|
8
|
-
}> | undefined;
|
|
9
|
-
readonly agentMark?: ((agent: string, size: number) => ReactNode) | undefined;
|
|
10
|
-
readonly agentDetail?: ((agent: string) => string) | undefined;
|
|
11
|
-
};
|
|
12
|
-
export declare const Described: import("react").Context<AgentLook>;
|
|
13
|
-
export type ChatMessageListProps = {
|
|
14
|
-
readonly components?: {
|
|
15
|
-
readonly UserMessage?: ComponentType;
|
|
16
|
-
readonly AssistantMessage?: ComponentType;
|
|
17
|
-
};
|
|
18
|
-
readonly onLink?: (href: string) => void;
|
|
19
|
-
readonly footer?: ReactNode;
|
|
20
|
-
readonly waiting?: string | null;
|
|
21
|
-
readonly children?: ReactNode;
|
|
22
|
-
};
|
|
23
|
-
export declare function ChatMessageList({ components, onLink, footer, waiting, children, }: ChatMessageListProps): ReactElement;
|
|
24
|
-
export declare function ChatList({ onChoose }: {
|
|
25
|
-
onChoose: () => void;
|
|
26
|
-
}): ReactElement;
|
|
27
|
-
//# sourceMappingURL=list.d.ts.map
|
package/dist/chat/list.d.ts.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"list.d.ts","sourceRoot":"","sources":["../../src/chat/list.tsx"],"names":[],"mappings":"AAAA,OAAO,EAKL,KAAK,aAAa,EAClB,KAAK,YAAY,EACjB,KAAK,SAAS,EACf,MAAM,OAAO,CAAC;AAaf,MAAM,MAAM,SAAS,GAAG;IACtB,QAAQ,CAAC,SAAS,CAAC,EACf,aAAa,CAAC;QACZ,KAAK,EAAE,MAAM,CAAC;QACd,SAAS,EAAE,MAAM,CAAC;QAClB,QAAQ,EAAE,SAAS,CAAC;QACpB,cAAc,EAAE,MAAM,GAAG,SAAS,CAAC;KACpC,CAAC,GACF,SAAS,CAAC;IACd,QAAQ,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,KAAK,SAAS,CAAC,GAAG,SAAS,CAAC;IAC9E,QAAQ,CAAC,WAAW,CAAC,EAAE,CAAC,CAAC,KAAK,EAAE,MAAM,KAAK,MAAM,CAAC,GAAG,SAAS,CAAC;CAChE,CAAC;AAEF,eAAO,MAAM,SAAS,oCAA+B,CAAC;AAkEtD,MAAM,MAAM,oBAAoB,GAAG;IACjC,QAAQ,CAAC,UAAU,CAAC,EAAE;QACpB,QAAQ,CAAC,WAAW,CAAC,EAAE,aAAa,CAAC;QACrC,QAAQ,CAAC,gBAAgB,CAAC,EAAE,aAAa,CAAC;KAC3C,CAAC;IACF,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;IACzC,QAAQ,CAAC,MAAM,CAAC,EAAE,SAAS,CAAC;IAC5B,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACjC,QAAQ,CAAC,QAAQ,CAAC,EAAE,SAAS,CAAC;CAC/B,CAAC;AAEF,wBAAgB,eAAe,CAAC,EAC9B,UAAe,EACf,MAAM,EACN,MAAM,EACN,OAAO,EACP,QAAQ,GACT,EAAE,oBAAoB,GAAG,YAAY,CAsErC;AAoBD,wBAAgB,QAAQ,CAAC,EAAE,QAAQ,EAAE,EAAE;IAAE,QAAQ,EAAE,MAAM,IAAI,CAAA;CAAE,GAAG,YAAY,CAkD7E"}
|