@agentshouse/mdruntime 0.1.0-cebcd51f70ed1 → 0.1.0-cede5a74284be
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 +109 -35
- package/README.md +13 -3
- package/dist/adapter.d.ts +47 -14
- package/dist/adapter.d.ts.map +1 -1
- package/dist/attached-model.d.ts.map +1 -1
- package/dist/attached-model.js +15 -2
- package/dist/attempt.d.ts +16 -0
- package/dist/attempt.d.ts.map +1 -0
- package/dist/attempt.js +57 -0
- package/dist/binary.d.ts +23 -0
- package/dist/binary.d.ts.map +1 -0
- package/dist/binary.js +8 -0
- package/dist/bootstrap.d.ts +17 -5
- package/dist/bootstrap.d.ts.map +1 -1
- package/dist/bootstrap.js +88 -38
- package/dist/change-set.d.ts.map +1 -1
- package/dist/change-set.js +19 -12
- package/dist/change.d.ts +15 -0
- package/dist/change.d.ts.map +1 -1
- package/dist/change.js +26 -1
- package/dist/chat/acts.d.ts +34 -0
- package/dist/chat/acts.d.ts.map +1 -0
- package/dist/chat/acts.js +36 -0
- package/dist/chat/context.d.ts +3 -0
- package/dist/chat/context.d.ts.map +1 -0
- package/dist/chat/context.js +10 -0
- package/dist/chat/input.d.ts +9 -0
- package/dist/chat/input.d.ts.map +1 -0
- package/dist/chat/input.js +99 -0
- package/dist/chat/kit.d.ts +60 -0
- package/dist/chat/kit.d.ts.map +1 -0
- package/dist/chat/kit.js +123 -0
- package/dist/chat/lasting.d.ts +6 -0
- package/dist/chat/lasting.d.ts.map +1 -0
- package/dist/chat/lasting.js +19 -0
- package/dist/chat/list.d.ts +20 -0
- package/dist/chat/list.d.ts.map +1 -0
- package/dist/chat/list.js +59 -0
- package/dist/chat/markdown.d.ts +19 -0
- package/dist/chat/markdown.d.ts.map +1 -0
- package/dist/chat/markdown.js +187 -0
- package/dist/chat/message.d.ts +6 -0
- package/dist/chat/message.d.ts.map +1 -0
- package/dist/chat/message.js +192 -0
- package/dist/chat/messages.d.ts +21 -0
- package/dist/chat/messages.d.ts.map +1 -0
- package/dist/chat/messages.js +151 -0
- package/dist/chat/name.d.ts +6 -0
- package/dist/chat/name.d.ts.map +1 -0
- package/dist/chat/name.js +37 -0
- package/dist/chat/opened.d.ts +11 -0
- package/dist/chat/opened.d.ts.map +1 -0
- package/dist/chat/opened.js +17 -0
- package/dist/chat/overlay.d.ts +31 -0
- package/dist/chat/overlay.d.ts.map +1 -0
- package/dist/chat/overlay.js +97 -0
- package/dist/chat/parts.d.ts +57 -0
- package/dist/chat/parts.d.ts.map +1 -0
- package/dist/chat/parts.js +119 -0
- package/dist/chat/process.d.ts +20 -0
- package/dist/chat/process.d.ts.map +1 -0
- package/dist/chat/process.js +32 -0
- package/dist/chat/provider.d.ts +63 -0
- package/dist/chat/provider.d.ts.map +1 -0
- package/dist/chat/provider.js +645 -0
- package/dist/chat/question.d.ts +9 -0
- package/dist/chat/question.d.ts.map +1 -0
- package/dist/chat/question.js +80 -0
- package/dist/chat/questions.d.ts +31 -0
- package/dist/chat/questions.d.ts.map +1 -0
- package/dist/chat/questions.js +111 -0
- package/dist/chat/read.d.ts +5 -0
- package/dist/chat/read.d.ts.map +1 -0
- package/dist/chat/read.js +13 -0
- package/dist/chat/ready.d.ts +33 -0
- package/dist/chat/ready.d.ts.map +1 -0
- package/dist/chat/ready.js +91 -0
- package/dist/chat/style.d.ts +4 -0
- package/dist/chat/style.d.ts.map +1 -0
- package/dist/chat/style.js +302 -0
- package/dist/chat.d.ts +14 -0
- package/dist/chat.d.ts.map +1 -0
- package/dist/chat.js +8 -0
- package/dist/client.d.ts +14 -5
- package/dist/client.d.ts.map +1 -1
- package/dist/client.js +65 -15
- package/dist/collection.d.ts +6 -11
- package/dist/collection.d.ts.map +1 -1
- package/dist/collection.js +56 -19
- package/dist/connection.d.ts +21 -9
- package/dist/connection.d.ts.map +1 -1
- package/dist/connection.js +470 -142
- package/dist/conversation.d.ts +11 -3
- package/dist/conversation.d.ts.map +1 -1
- package/dist/conversation.js +47 -7
- package/dist/expectation.d.ts +21 -0
- package/dist/expectation.d.ts.map +1 -0
- package/dist/expectation.js +70 -0
- package/dist/failure.d.ts +13 -0
- package/dist/failure.d.ts.map +1 -0
- package/dist/failure.js +19 -0
- package/dist/host.d.ts +1 -0
- package/dist/host.d.ts.map +1 -1
- package/dist/host.js +9 -8
- package/dist/identity.d.ts +3 -0
- package/dist/identity.d.ts.map +1 -1
- package/dist/identity.js +13 -1
- package/dist/index.d.ts +9 -4
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +3 -0
- package/dist/memory.d.ts +4 -3
- package/dist/memory.d.ts.map +1 -1
- package/dist/memory.js +60 -20
- package/dist/model.d.ts +10 -2
- package/dist/model.d.ts.map +1 -1
- package/dist/model.js +2 -0
- package/dist/open.d.ts +2 -0
- package/dist/open.d.ts.map +1 -0
- package/dist/open.js +1 -0
- package/dist/outcome.d.ts +28 -3
- package/dist/outcome.d.ts.map +1 -1
- package/dist/outcome.js +41 -1
- package/dist/overlay.d.ts +14 -3
- package/dist/overlay.d.ts.map +1 -1
- package/dist/overlay.js +75 -37
- package/dist/query.d.ts +4 -0
- package/dist/query.d.ts.map +1 -1
- package/dist/query.js +5 -31
- package/dist/reach.d.ts +2 -0
- package/dist/reach.d.ts.map +1 -1
- package/dist/reach.js +43 -19
- package/dist/react.d.ts +25 -16
- package/dist/react.d.ts.map +1 -1
- package/dist/react.js +8 -6
- package/dist/read-side.d.ts.map +1 -1
- package/dist/read-side.js +9 -2
- package/dist/refresh.d.ts +10 -0
- package/dist/refresh.d.ts.map +1 -1
- package/dist/refresh.js +42 -38
- package/dist/replica.d.ts +8 -5
- package/dist/replica.d.ts.map +1 -1
- package/dist/replica.js +76 -56
- package/dist/room-draft.d.ts +26 -9
- package/dist/room-draft.d.ts.map +1 -1
- package/dist/room-draft.js +132 -23
- package/dist/rows.d.ts +5 -1
- package/dist/rows.d.ts.map +1 -1
- package/dist/rows.js +10 -2
- package/dist/save.d.ts +27 -1
- package/dist/save.d.ts.map +1 -1
- package/dist/save.js +340 -33
- package/dist/search.d.ts +3 -2
- package/dist/search.d.ts.map +1 -1
- package/dist/status.d.ts +2 -2
- package/dist/status.d.ts.map +1 -1
- package/dist/status.js +0 -8
- package/dist/store.d.ts +33 -9
- package/dist/store.d.ts.map +1 -1
- package/dist/store.js +273 -164
- package/dist/wire.d.ts +7 -3
- package/dist/wire.d.ts.map +1 -1
- package/dist/wire.js +15 -2
- package/package.json +22 -14
- package/dist/attachment.d.ts +0 -3
- package/dist/attachment.d.ts.map +0 -1
- package/dist/attachment.js +0 -8
|
@@ -0,0 +1,119 @@
|
|
|
1
|
+
import { list, record, text } from './read.js';
|
|
2
|
+
const MARKERS = ['mode', 'compaction', 'retry', 'model', 'job'];
|
|
3
|
+
function partOf(raw) {
|
|
4
|
+
const part = record(raw);
|
|
5
|
+
switch (text(part, 'type')) {
|
|
6
|
+
case 'text':
|
|
7
|
+
case 'reasoning': {
|
|
8
|
+
const said = text(part, 'text');
|
|
9
|
+
return said === null ? null : { type: part.type, text: said };
|
|
10
|
+
}
|
|
11
|
+
case 'commands':
|
|
12
|
+
return typeof part.count === 'number' ? { type: 'commands', count: part.count } : null;
|
|
13
|
+
case 'subagent':
|
|
14
|
+
return {
|
|
15
|
+
type: 'subagent',
|
|
16
|
+
description: text(part, 'description') ?? '',
|
|
17
|
+
done: part.status === 'done',
|
|
18
|
+
result: text(part, 'result'),
|
|
19
|
+
};
|
|
20
|
+
case 'message': {
|
|
21
|
+
const command = text(part, 'command');
|
|
22
|
+
return command === null ? null : { type: 'message', command, target: text(part, 'target') };
|
|
23
|
+
}
|
|
24
|
+
case 'image': {
|
|
25
|
+
const name = text(part, 'name');
|
|
26
|
+
return name === null
|
|
27
|
+
? null
|
|
28
|
+
: { type: 'image', name, mediaType: text(part, 'media_type') ?? '' };
|
|
29
|
+
}
|
|
30
|
+
case 'marker': {
|
|
31
|
+
const marker = text(part, 'marker');
|
|
32
|
+
return marker === null || !MARKERS.includes(marker)
|
|
33
|
+
? null
|
|
34
|
+
: { type: 'marker', marker: marker, text: text(part, 'text') ?? '' };
|
|
35
|
+
}
|
|
36
|
+
case 'plan':
|
|
37
|
+
return {
|
|
38
|
+
type: 'plan',
|
|
39
|
+
steps: list(part, 'entries').flatMap((entry) => {
|
|
40
|
+
const step = record(entry);
|
|
41
|
+
const content = text(step, 'content');
|
|
42
|
+
return content === null ? [] : [{ content, status: text(step, 'status') ?? '' }];
|
|
43
|
+
}),
|
|
44
|
+
};
|
|
45
|
+
default:
|
|
46
|
+
return null;
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
export function partsOf(raw) {
|
|
50
|
+
return raw.flatMap((one) => partOf(one) ?? []);
|
|
51
|
+
}
|
|
52
|
+
export function contextIn(raw) {
|
|
53
|
+
const held = record(raw);
|
|
54
|
+
return typeof held.used === 'number' && typeof held.window === 'number' && held.window > 0
|
|
55
|
+
? { used: held.used, window: held.window }
|
|
56
|
+
: null;
|
|
57
|
+
}
|
|
58
|
+
const NEXT_RUN = 'next run ';
|
|
59
|
+
export function jobOf(said) {
|
|
60
|
+
const at = said.lastIndexOf(': ');
|
|
61
|
+
const label = at === -1 ? said : said.slice(0, at);
|
|
62
|
+
const state = at === -1 ? '' : said.slice(at + 2);
|
|
63
|
+
if (state === 'running')
|
|
64
|
+
return { label, kind: 'started', state, next: null };
|
|
65
|
+
if (state === 'scheduled')
|
|
66
|
+
return { label, kind: 'scheduled', state, next: null };
|
|
67
|
+
return state.startsWith(NEXT_RUN)
|
|
68
|
+
? { label, kind: 'scheduled', state, next: state.slice(NEXT_RUN.length) }
|
|
69
|
+
: { label, kind: 'ended', state, next: null };
|
|
70
|
+
}
|
|
71
|
+
export function stillRunning(turns) {
|
|
72
|
+
const open = [];
|
|
73
|
+
const close = (key) => {
|
|
74
|
+
const at = open.map((one) => one.key).lastIndexOf(key);
|
|
75
|
+
if (at !== -1)
|
|
76
|
+
open.splice(at, 1);
|
|
77
|
+
};
|
|
78
|
+
for (const { turn, parts, ended } of turns) {
|
|
79
|
+
for (const part of parts) {
|
|
80
|
+
if (part.type === 'subagent') {
|
|
81
|
+
const key = `subagent\u0000${part.description}`;
|
|
82
|
+
if (part.done)
|
|
83
|
+
close(key);
|
|
84
|
+
else if (ended) {
|
|
85
|
+
open.push({ turn, key, work: { kind: 'subagent', title: part.description, next: null } });
|
|
86
|
+
}
|
|
87
|
+
continue;
|
|
88
|
+
}
|
|
89
|
+
if (part.type !== 'marker' || part.marker !== 'job')
|
|
90
|
+
continue;
|
|
91
|
+
const job = jobOf(part.text);
|
|
92
|
+
const started = `job\u0000${job.label}`;
|
|
93
|
+
const schedule = `schedule\u0000${job.label}`;
|
|
94
|
+
if (job.kind === 'scheduled') {
|
|
95
|
+
close(schedule);
|
|
96
|
+
if (ended) {
|
|
97
|
+
open.push({
|
|
98
|
+
turn,
|
|
99
|
+
key: schedule,
|
|
100
|
+
work: { kind: 'schedule', title: job.label, next: job.next },
|
|
101
|
+
});
|
|
102
|
+
}
|
|
103
|
+
}
|
|
104
|
+
else if (job.kind === 'started') {
|
|
105
|
+
if (ended) {
|
|
106
|
+
open.push({ turn, key: started, work: { kind: 'job', title: job.label, next: null } });
|
|
107
|
+
}
|
|
108
|
+
}
|
|
109
|
+
else {
|
|
110
|
+
close(started);
|
|
111
|
+
close(schedule);
|
|
112
|
+
}
|
|
113
|
+
}
|
|
114
|
+
}
|
|
115
|
+
const under = new Map();
|
|
116
|
+
for (const one of open)
|
|
117
|
+
under.set(one.turn, [...(under.get(one.turn) ?? []), one.work]);
|
|
118
|
+
return under;
|
|
119
|
+
}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import type { ConversationView } from '../conversation.js';
|
|
2
|
+
export type ChatOptionValue = {
|
|
3
|
+
readonly value: string;
|
|
4
|
+
readonly name: string;
|
|
5
|
+
};
|
|
6
|
+
export type ChatOption = {
|
|
7
|
+
readonly id: string;
|
|
8
|
+
readonly name: string;
|
|
9
|
+
readonly value: string;
|
|
10
|
+
readonly values: readonly ChatOptionValue[];
|
|
11
|
+
};
|
|
12
|
+
export type ChatCommand = {
|
|
13
|
+
readonly name: string;
|
|
14
|
+
readonly description: string;
|
|
15
|
+
};
|
|
16
|
+
export declare function optionsOf(view: ConversationView | null): readonly ChatOption[];
|
|
17
|
+
export declare function commandsOf(view: ConversationView | null): readonly ChatCommand[];
|
|
18
|
+
export declare const COMMAND = "/";
|
|
19
|
+
export declare function commandIn(said: string, commands: readonly ChatCommand[]): boolean;
|
|
20
|
+
//# sourceMappingURL=process.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"process.d.ts","sourceRoot":"","sources":["../../src/chat/process.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AAG3D,MAAM,MAAM,eAAe,GAAG;IAC5B,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;CACvB,CAAC;AAEF,MAAM,MAAM,UAAU,GAAG;IACvB,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,MAAM,EAAE,SAAS,eAAe,EAAE,CAAC;CAC7C,CAAC;AAEF,MAAM,MAAM,WAAW,GAAG;IACxB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;CAC9B,CAAC;AAWF,wBAAgB,SAAS,CAAC,IAAI,EAAE,gBAAgB,GAAG,IAAI,GAAG,SAAS,UAAU,EAAE,CAU9E;AAED,wBAAgB,UAAU,CAAC,IAAI,EAAE,gBAAgB,GAAG,IAAI,GAAG,SAAS,WAAW,EAAE,CAMhF;AAED,eAAO,MAAM,OAAO,MAAM,CAAC;AAE3B,wBAAgB,SAAS,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,SAAS,WAAW,EAAE,GAAG,OAAO,CAGjF"}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
import { list, record, text } from './read.js';
|
|
2
|
+
function valuesOf(option) {
|
|
3
|
+
return list(option, 'options').flatMap((entry) => {
|
|
4
|
+
const choice = record(entry);
|
|
5
|
+
const value = text(choice, 'value');
|
|
6
|
+
const name = text(choice, 'name');
|
|
7
|
+
return value === null || name === null ? [] : [{ value, name }];
|
|
8
|
+
});
|
|
9
|
+
}
|
|
10
|
+
export function optionsOf(view) {
|
|
11
|
+
return (view?.options ?? []).flatMap((entry) => {
|
|
12
|
+
const option = record(entry);
|
|
13
|
+
const id = text(option, 'id');
|
|
14
|
+
const name = text(option, 'name');
|
|
15
|
+
const value = text(option, 'currentValue');
|
|
16
|
+
return id === null || name === null || value === null
|
|
17
|
+
? []
|
|
18
|
+
: [{ id, name, value, values: valuesOf(option) }];
|
|
19
|
+
});
|
|
20
|
+
}
|
|
21
|
+
export function commandsOf(view) {
|
|
22
|
+
return (view?.commands ?? []).flatMap((entry) => {
|
|
23
|
+
const command = record(entry);
|
|
24
|
+
const name = text(command, 'name');
|
|
25
|
+
return name === null ? [] : [{ name, description: text(command, 'description') ?? '' }];
|
|
26
|
+
});
|
|
27
|
+
}
|
|
28
|
+
export const COMMAND = '/';
|
|
29
|
+
export function commandIn(said, commands) {
|
|
30
|
+
const [first] = said.split(/\s/);
|
|
31
|
+
return commands.some((one) => first === `${COMMAND}${one.name}`);
|
|
32
|
+
}
|
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
import { type ReactElement, type ReactNode } from 'react';
|
|
2
|
+
import type { TurnContext } from '../adapter.js';
|
|
3
|
+
import type { MdRuntimeClient } from '../client.js';
|
|
4
|
+
import type { ChatDraft, ConversationAgent, ConversationEntry, ConversationView } from '../conversation.js';
|
|
5
|
+
import { type ChatOutcome } from './acts.js';
|
|
6
|
+
import { type ChatCommand, type ChatOption } from './process.js';
|
|
7
|
+
import { type ChatLone, type ChatQuestion } from './questions.js';
|
|
8
|
+
export type ChatOpened = {
|
|
9
|
+
readonly conversation: string | null;
|
|
10
|
+
readonly agent: string | null;
|
|
11
|
+
};
|
|
12
|
+
export type ChatActing = {
|
|
13
|
+
readonly busy: boolean;
|
|
14
|
+
readonly outcome: ChatOutcome | null;
|
|
15
|
+
};
|
|
16
|
+
export type ChatQueued = {
|
|
17
|
+
readonly id: string;
|
|
18
|
+
readonly text: string;
|
|
19
|
+
};
|
|
20
|
+
export type ChatState = ChatOpened & {
|
|
21
|
+
readonly conversations: readonly ConversationEntry[];
|
|
22
|
+
readonly agents: readonly ConversationAgent[];
|
|
23
|
+
readonly view: ConversationView | null;
|
|
24
|
+
readonly running: boolean;
|
|
25
|
+
readonly questions: readonly ChatQuestion[];
|
|
26
|
+
readonly lone: ChatLone | null;
|
|
27
|
+
readonly options: readonly ChatOption[];
|
|
28
|
+
readonly commands: readonly ChatCommand[];
|
|
29
|
+
readonly context: TurnContext | null;
|
|
30
|
+
readonly queued: readonly ChatQueued[];
|
|
31
|
+
readonly sending: ChatActing & {
|
|
32
|
+
readonly again: (() => void) | null;
|
|
33
|
+
};
|
|
34
|
+
readonly acting: ChatActing;
|
|
35
|
+
open(conversation: string): void;
|
|
36
|
+
start(agent: string): void;
|
|
37
|
+
send(draft: ChatDraft): void;
|
|
38
|
+
answer(question: ChatQuestion, response: unknown): Promise<boolean>;
|
|
39
|
+
choose(option: string, value: string): Promise<boolean>;
|
|
40
|
+
stop(): Promise<boolean>;
|
|
41
|
+
kill(): Promise<boolean>;
|
|
42
|
+
done(): Promise<boolean>;
|
|
43
|
+
rename(name: string): Promise<boolean>;
|
|
44
|
+
remove(): Promise<boolean>;
|
|
45
|
+
edit(queued: string): void;
|
|
46
|
+
unqueue(queued: string): void;
|
|
47
|
+
};
|
|
48
|
+
export type ChatProviderProps = {
|
|
49
|
+
readonly client: MdRuntimeClient;
|
|
50
|
+
readonly conversation?: string | null;
|
|
51
|
+
readonly agent?: string | null;
|
|
52
|
+
readonly onOpen?: (opened: ChatOpened) => void;
|
|
53
|
+
readonly children?: ReactNode;
|
|
54
|
+
};
|
|
55
|
+
type Scope = {
|
|
56
|
+
readonly client: MdRuntimeClient;
|
|
57
|
+
readonly known: boolean;
|
|
58
|
+
};
|
|
59
|
+
export declare function useChatScope(): Scope;
|
|
60
|
+
export declare function useChat(): ChatState;
|
|
61
|
+
export declare function ChatProvider({ client, conversation, agent, onOpen, children, }: ChatProviderProps): ReactElement;
|
|
62
|
+
export {};
|
|
63
|
+
//# sourceMappingURL=provider.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"provider.d.ts","sourceRoot":"","sources":["../../src/chat/provider.ts"],"names":[],"mappings":"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"}
|