@nocobase/app-plugin-agents 1.0.0-beta.27 → 1.0.0-beta.29
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/CHANGELOG.md +49 -0
- package/README.md +40 -22
- package/dist/client/chat/api.d.ts +18 -1
- package/dist/client/chat/api.d.ts.map +1 -1
- package/dist/client/chat/api.js +37 -0
- package/dist/client/chat/api.js.map +1 -1
- package/dist/client/chat/coalesced-invalidation.d.ts +15 -0
- package/dist/client/chat/coalesced-invalidation.d.ts.map +1 -0
- package/dist/client/chat/coalesced-invalidation.js +29 -0
- package/dist/client/chat/coalesced-invalidation.js.map +1 -0
- package/dist/client/chat/controller.d.ts +8 -1
- package/dist/client/chat/controller.d.ts.map +1 -1
- package/dist/client/chat/controller.js +28 -4
- package/dist/client/chat/controller.js.map +1 -1
- package/dist/client/chat/message-model.d.ts.map +1 -1
- package/dist/client/chat/message-model.js +4 -0
- package/dist/client/chat/message-model.js.map +1 -1
- package/dist/client/chat/submissions.d.ts +3 -0
- package/dist/client/chat/submissions.d.ts.map +1 -1
- package/dist/client/chat/submissions.js +1 -0
- package/dist/client/chat/submissions.js.map +1 -1
- package/dist/client/chat/use-chat-scroll.d.ts +8 -1
- package/dist/client/chat/use-chat-scroll.d.ts.map +1 -1
- package/dist/client/chat/use-chat-scroll.js +29 -5
- package/dist/client/chat/use-chat-scroll.js.map +1 -1
- package/dist/client/chat/use-chat.d.ts +2 -0
- package/dist/client/chat/use-chat.d.ts.map +1 -1
- package/dist/client/chat/use-chat.js +17 -7
- package/dist/client/chat/use-chat.js.map +1 -1
- package/dist/client/components/agent-prompt-callout.d.ts +19 -0
- package/dist/client/components/agent-prompt-callout.d.ts.map +1 -0
- package/dist/client/components/agent-prompt-callout.js +28 -0
- package/dist/client/components/agent-prompt-callout.js.map +1 -0
- package/dist/client/locales/chat.en-US.d.ts +1 -0
- package/dist/client/locales/chat.en-US.d.ts.map +1 -1
- package/dist/client/locales/chat.en-US.js +1 -0
- package/dist/client/locales/chat.en-US.js.map +1 -1
- package/dist/client/locales/chat.zh-CN.d.ts.map +1 -1
- package/dist/client/locales/chat.zh-CN.js +1 -0
- package/dist/client/locales/chat.zh-CN.js.map +1 -1
- package/dist/client/locales/de-DE.d.ts.map +1 -1
- package/dist/client/locales/de-DE.js +1 -0
- package/dist/client/locales/de-DE.js.map +1 -1
- package/dist/client/locales/es-ES.d.ts.map +1 -1
- package/dist/client/locales/es-ES.js +1 -0
- package/dist/client/locales/es-ES.js.map +1 -1
- package/dist/client/locales/fr-FR.d.ts.map +1 -1
- package/dist/client/locales/fr-FR.js +1 -0
- package/dist/client/locales/fr-FR.js.map +1 -1
- package/dist/client/locales/id-ID.d.ts.map +1 -1
- package/dist/client/locales/id-ID.js +1 -0
- package/dist/client/locales/id-ID.js.map +1 -1
- package/dist/client/locales/ja-JP.d.ts.map +1 -1
- package/dist/client/locales/ja-JP.js +1 -0
- package/dist/client/locales/ja-JP.js.map +1 -1
- package/dist/client/locales/pt-BR.d.ts.map +1 -1
- package/dist/client/locales/pt-BR.js +1 -0
- package/dist/client/locales/pt-BR.js.map +1 -1
- package/dist/client/locales/runtimes.en-US.d.ts +4 -1
- package/dist/client/locales/runtimes.en-US.d.ts.map +1 -1
- package/dist/client/locales/runtimes.en-US.js +6 -3
- package/dist/client/locales/runtimes.en-US.js.map +1 -1
- package/dist/client/locales/runtimes.zh-CN.d.ts.map +1 -1
- package/dist/client/locales/runtimes.zh-CN.js +6 -3
- package/dist/client/locales/runtimes.zh-CN.js.map +1 -1
- package/dist/client/locales/vi-VN.d.ts.map +1 -1
- package/dist/client/locales/vi-VN.js +1 -0
- package/dist/client/locales/vi-VN.js.map +1 -1
- package/dist/client/locales/zh-TW.d.ts.map +1 -1
- package/dist/client/locales/zh-TW.js +1 -0
- package/dist/client/locales/zh-TW.js.map +1 -1
- package/dist/client/pages/runtimes/connect.d.ts.map +1 -1
- package/dist/client/pages/runtimes/connect.js +16 -10
- package/dist/client/pages/runtimes/connect.js.map +1 -1
- package/dist/client/pages/skills/index.js +2 -2
- package/dist/client/pages/skills/index.js.map +1 -1
- package/dist/database/migrations/.manifest.json +8 -0
- package/dist/database/migrations/202611010001_ag_conversation_runner_attention.d.ts +4 -0
- package/dist/database/migrations/202611010001_ag_conversation_runner_attention.d.ts.map +1 -0
- package/dist/database/migrations/202611010001_ag_conversation_runner_attention.js +30 -0
- package/dist/database/migrations/202611010001_ag_conversation_runner_attention.js.map +1 -0
- package/dist/database/migrations/202611010002_ag_create_conversation_links.d.ts +4 -0
- package/dist/database/migrations/202611010002_ag_create_conversation_links.d.ts.map +1 -0
- package/dist/database/migrations/202611010002_ag_create_conversation_links.js +30 -0
- package/dist/database/migrations/202611010002_ag_create_conversation_links.js.map +1 -0
- package/dist/package.json +1 -1
- package/dist/server/composition.d.ts.map +1 -1
- package/dist/server/composition.js +1 -0
- package/dist/server/composition.js.map +1 -1
- package/dist/server/core/conversations/attachments.d.ts +5 -0
- package/dist/server/core/conversations/attachments.d.ts.map +1 -1
- package/dist/server/core/conversations/attachments.js +10 -0
- package/dist/server/core/conversations/attachments.js.map +1 -1
- package/dist/server/core/conversations/conversation.service.d.ts +3 -1
- package/dist/server/core/conversations/conversation.service.d.ts.map +1 -1
- package/dist/server/core/conversations/conversation.service.js +693 -32
- package/dist/server/core/conversations/conversation.service.js.map +1 -1
- package/dist/server/core/conversations/conversation.store.d.ts +24 -0
- package/dist/server/core/conversations/conversation.store.d.ts.map +1 -1
- package/dist/server/core/conversations/conversation.store.js +10 -0
- package/dist/server/core/conversations/conversation.store.js.map +1 -1
- package/dist/server/core/conversations/index.d.ts +1 -1
- package/dist/server/core/conversations/index.d.ts.map +1 -1
- package/dist/server/core/conversations/index.js.map +1 -1
- package/dist/server/core/conversations/links.d.ts +27 -0
- package/dist/server/core/conversations/links.d.ts.map +1 -0
- package/dist/server/core/conversations/links.js +188 -0
- package/dist/server/core/conversations/links.js.map +1 -0
- package/dist/server/core/conversations/ports.d.ts +107 -3
- package/dist/server/core/conversations/ports.d.ts.map +1 -1
- package/dist/server/core/runs/claim.d.ts.map +1 -1
- package/dist/server/core/runs/claim.js +47 -3
- package/dist/server/core/runs/claim.js.map +1 -1
- package/dist/server/core/runs/lifecycle.d.ts.map +1 -1
- package/dist/server/core/runs/lifecycle.js +28 -3
- package/dist/server/core/runs/lifecycle.js.map +1 -1
- package/dist/server/core/runs/ports.d.ts +15 -0
- package/dist/server/core/runs/ports.d.ts.map +1 -1
- package/dist/server/core/runs/ports.js.map +1 -1
- package/dist/server/core/runs/run-data-purge.d.ts +7 -0
- package/dist/server/core/runs/run-data-purge.d.ts.map +1 -1
- package/dist/server/core/runs/run-data-purge.js +13 -0
- package/dist/server/core/runs/run-data-purge.js.map +1 -1
- package/dist/server/core/runs/run.store.d.ts +6 -2
- package/dist/server/core/runs/run.store.d.ts.map +1 -1
- package/dist/server/core/runs/run.store.js +28 -10
- package/dist/server/core/runs/run.store.js.map +1 -1
- package/dist/server/kernel/errors.d.ts +1 -1
- package/dist/server/kernel/errors.d.ts.map +1 -1
- package/dist/server/kernel/errors.js +2 -0
- package/dist/server/kernel/errors.js.map +1 -1
- package/dist/server/kernel/events.d.ts +19 -0
- package/dist/server/kernel/events.d.ts.map +1 -1
- package/dist/server/kernel/events.js.map +1 -1
- package/dist/server/online/agent/contracts.d.ts +5 -0
- package/dist/server/online/agent/contracts.d.ts.map +1 -1
- package/dist/server/online/agent/native/session.d.ts +1 -0
- package/dist/server/online/agent/native/session.d.ts.map +1 -1
- package/dist/server/online/agent/native/session.js +4 -1
- package/dist/server/online/agent/native/session.js.map +1 -1
- package/dist/server/online/agent/persistence/store.d.ts.map +1 -1
- package/dist/server/online/agent/persistence/store.js +8 -1
- package/dist/server/online/agent/persistence/store.js.map +1 -1
- package/dist/server/online/agent/runner/backend.d.ts +15 -0
- package/dist/server/online/agent/runner/backend.d.ts.map +1 -1
- package/dist/server/online/agent/runner/backend.js +310 -70
- package/dist/server/online/agent/runner/backend.js.map +1 -1
- package/dist/server/online/agent/runner/projection.d.ts +24 -2
- package/dist/server/online/agent/runner/projection.d.ts.map +1 -1
- package/dist/server/online/agent/runner/projection.js +330 -26
- package/dist/server/online/agent/runner/projection.js.map +1 -1
- package/dist/server/online/agent/runner/types.d.ts +8 -1
- package/dist/server/online/agent/runner/types.d.ts.map +1 -1
- package/dist/server/online/agent/types.d.ts +2 -0
- package/dist/server/online/agent/types.d.ts.map +1 -1
- package/dist/server/providers/agents.d.ts +7 -0
- package/dist/server/providers/agents.d.ts.map +1 -1
- package/dist/server/providers/agents.js +3 -1
- package/dist/server/providers/agents.js.map +1 -1
- package/dist/server/providers/runners.d.ts.map +1 -1
- package/dist/server/providers/runners.js +12 -1
- package/dist/server/providers/runners.js.map +1 -1
- package/dist/server/routes/chat.d.ts.map +1 -1
- package/dist/server/routes/chat.js +270 -2
- package/dist/server/routes/chat.js.map +1 -1
- package/dist/server/routes/run.d.ts.map +1 -1
- package/dist/server/routes/run.js +44 -0
- package/dist/server/routes/run.js.map +1 -1
- package/dist/server/routes/schemas.d.ts +15 -1
- package/dist/server/routes/schemas.d.ts.map +1 -1
- package/dist/server/routes/schemas.js +116 -1
- package/dist/server/routes/schemas.js.map +1 -1
- package/dist/server/runners/workspaces.d.ts.map +1 -1
- package/dist/server/runners/workspaces.js +46 -2
- package/dist/server/runners/workspaces.js.map +1 -1
- package/dist/server/tokens.d.ts +1 -1
- package/dist/server/tokens.d.ts.map +1 -1
- package/dist/server/tokens.js.map +1 -1
- package/dist/shared/conversations.d.ts +107 -1
- package/dist/shared/conversations.d.ts.map +1 -1
- package/dist/shared/conversations.js +19 -0
- package/dist/shared/conversations.js.map +1 -1
- package/dist/shared/ui-message.d.ts +30 -0
- package/dist/shared/ui-message.d.ts.map +1 -1
- package/dist/shared/ui-message.js +17 -0
- package/dist/shared/ui-message.js.map +1 -1
- package/package.json +9 -9
- package/skills/nocobase-app-plugin-agents/references/extension-points.md +19 -19
- package/skills/nocobase-app-plugin-agents/references/online-agent.md +16 -2
|
@@ -0,0 +1,188 @@
|
|
|
1
|
+
import { CONVERSATION_LINK_KIND_PATTERN, } from '../../../shared/conversations.js';
|
|
2
|
+
import { invalid, notFound } from '../../kernel/errors.js';
|
|
3
|
+
import { findConversation, linksRepo, lockConversation, } from './conversation.store.js';
|
|
4
|
+
/** At most this many links are listed for one conversation, and this many conversations for one target. */
|
|
5
|
+
const CONVERSATION_LINKS_MAX = 200;
|
|
6
|
+
function checkTarget(target) {
|
|
7
|
+
if (!CONVERSATION_LINK_KIND_PATTERN.test(target.kind))
|
|
8
|
+
throw invalid('kind is not a link kind.', { field: 'kind' });
|
|
9
|
+
if (typeof target.targetId !== 'string' ||
|
|
10
|
+
target.targetId.length === 0 ||
|
|
11
|
+
target.targetId.length > 255)
|
|
12
|
+
throw invalid('targetId must be 1 to 255 characters.', {
|
|
13
|
+
field: 'targetId',
|
|
14
|
+
});
|
|
15
|
+
}
|
|
16
|
+
export function createConversationLinks(deps) {
|
|
17
|
+
const { tx, ids, now } = deps;
|
|
18
|
+
const kinds = new Map();
|
|
19
|
+
async function owned(conn, userId, id) {
|
|
20
|
+
const record = await findConversation(conn, id);
|
|
21
|
+
if (!record || record.userId !== userId)
|
|
22
|
+
throw notFound('Conversation');
|
|
23
|
+
return record;
|
|
24
|
+
}
|
|
25
|
+
/** Each kind's views of its targets, for `userId`. */
|
|
26
|
+
async function views(conn, userId, rows) {
|
|
27
|
+
const found = new Map();
|
|
28
|
+
const byKind = new Map();
|
|
29
|
+
for (const row of rows)
|
|
30
|
+
byKind.set(row.kind, [...(byKind.get(row.kind) ?? []), row.targetId]);
|
|
31
|
+
for (const [key, targetIds] of byKind) {
|
|
32
|
+
const resolved = await kinds
|
|
33
|
+
.get(key)
|
|
34
|
+
?.resolve?.(conn, userId, [...new Set(targetIds)]);
|
|
35
|
+
for (const [targetId, view] of resolved ?? [])
|
|
36
|
+
found.set(`${key}:${targetId}`, view);
|
|
37
|
+
}
|
|
38
|
+
return found;
|
|
39
|
+
}
|
|
40
|
+
function linkOf(row, found) {
|
|
41
|
+
return {
|
|
42
|
+
id: row.id,
|
|
43
|
+
conversationId: row.conversationId,
|
|
44
|
+
kind: row.kind,
|
|
45
|
+
targetId: row.targetId,
|
|
46
|
+
origin: row.origin,
|
|
47
|
+
createdAt: row.createdAt,
|
|
48
|
+
view: found.get(`${row.kind}:${row.targetId}`) ?? null,
|
|
49
|
+
};
|
|
50
|
+
}
|
|
51
|
+
async function rowsOf(conn, conversationId) {
|
|
52
|
+
return (await linksRepo(conn).findMany({
|
|
53
|
+
filter: { conversationId },
|
|
54
|
+
sort: (sort) => [sort.field('createdAt').asc(), sort.field('id').asc()],
|
|
55
|
+
limit: CONVERSATION_LINKS_MAX,
|
|
56
|
+
})).filter((row) => kinds.has(row.kind));
|
|
57
|
+
}
|
|
58
|
+
/** Ties the target to the locked conversation; the row, and whether it is new. */
|
|
59
|
+
async function tie(unit, record, target, origin, createdById) {
|
|
60
|
+
const filter = {
|
|
61
|
+
conversationId: record.id,
|
|
62
|
+
kind: target.kind,
|
|
63
|
+
targetId: target.targetId,
|
|
64
|
+
};
|
|
65
|
+
const existing = await linksRepo(unit.conn).findOne({ filter });
|
|
66
|
+
if (existing)
|
|
67
|
+
return { row: existing, created: false };
|
|
68
|
+
const id = ids.next();
|
|
69
|
+
await linksRepo(unit.conn).createOne({
|
|
70
|
+
values: { id, ...filter, origin, createdById, createdAt: now() },
|
|
71
|
+
});
|
|
72
|
+
deps.changed(unit, record);
|
|
73
|
+
return {
|
|
74
|
+
row: (await linksRepo(unit.conn).findOne({ filter: { id } })),
|
|
75
|
+
created: true,
|
|
76
|
+
};
|
|
77
|
+
}
|
|
78
|
+
async function conversationIds(conn, target) {
|
|
79
|
+
const rows = await linksRepo(conn).findMany({
|
|
80
|
+
filter: { kind: target.kind, targetId: target.targetId },
|
|
81
|
+
sort: (sort) => sort.field('createdAt').desc(),
|
|
82
|
+
limit: CONVERSATION_LINKS_MAX,
|
|
83
|
+
});
|
|
84
|
+
return [...new Set(rows.map((row) => row.conversationId))];
|
|
85
|
+
}
|
|
86
|
+
return {
|
|
87
|
+
registerKind(kind) {
|
|
88
|
+
if (!CONVERSATION_LINK_KIND_PATTERN.test(kind.key))
|
|
89
|
+
throw new Error(`Not a conversation link kind: ${kind.key}`);
|
|
90
|
+
if (kinds.has(kind.key))
|
|
91
|
+
throw new Error(`Conversation link kind already registered: ${kind.key}`);
|
|
92
|
+
kinds.set(kind.key, kind);
|
|
93
|
+
return () => {
|
|
94
|
+
if (kinds.get(kind.key) === kind)
|
|
95
|
+
kinds.delete(kind.key);
|
|
96
|
+
};
|
|
97
|
+
},
|
|
98
|
+
hasKind: (key) => kinds.has(key),
|
|
99
|
+
async list(userId, conversationId) {
|
|
100
|
+
const conn = tx.read();
|
|
101
|
+
await owned(conn, userId, conversationId);
|
|
102
|
+
const rows = await rowsOf(conn, conversationId);
|
|
103
|
+
const found = await views(conn, userId, rows);
|
|
104
|
+
return rows.map((row) => linkOf(row, found));
|
|
105
|
+
},
|
|
106
|
+
async add(userId, conversationId, target) {
|
|
107
|
+
checkTarget(target);
|
|
108
|
+
const kind = kinds.get(target.kind);
|
|
109
|
+
if (!kind)
|
|
110
|
+
throw invalid(`${target.kind} is not a kind conversations link to.`, {
|
|
111
|
+
field: 'kind',
|
|
112
|
+
});
|
|
113
|
+
const conn = tx.read();
|
|
114
|
+
await owned(conn, userId, conversationId);
|
|
115
|
+
// Resolved before the transaction: the kind reads what the owner may see.
|
|
116
|
+
const view = kind.resolve
|
|
117
|
+
? (await kind.resolve(conn, userId, [target.targetId])).get(target.targetId)
|
|
118
|
+
: undefined;
|
|
119
|
+
if (kind.resolve && !view)
|
|
120
|
+
throw invalid('targetId names nothing you may see.', {
|
|
121
|
+
field: 'targetId',
|
|
122
|
+
});
|
|
123
|
+
const row = await tx.run(async (unit) => {
|
|
124
|
+
const record = await lockConversation(unit.conn, conversationId, now());
|
|
125
|
+
if (!record || record.userId !== userId)
|
|
126
|
+
throw notFound('Conversation');
|
|
127
|
+
return (await tie(unit, record, target, 'user', userId)).row;
|
|
128
|
+
});
|
|
129
|
+
return linkOf(row, new Map(view ? [[`${target.kind}:${target.targetId}`, view]] : []));
|
|
130
|
+
},
|
|
131
|
+
async remove(userId, conversationId, linkId) {
|
|
132
|
+
await tx.run(async (unit) => {
|
|
133
|
+
const record = await lockConversation(unit.conn, conversationId, now());
|
|
134
|
+
if (!record || record.userId !== userId)
|
|
135
|
+
throw notFound('Conversation');
|
|
136
|
+
const deleted = await linksRepo(unit.conn).deleteMany({
|
|
137
|
+
filter: { id: linkId, conversationId },
|
|
138
|
+
});
|
|
139
|
+
if (deleted.deletedCount !== 1)
|
|
140
|
+
throw notFound('Link');
|
|
141
|
+
deps.changed(unit, record);
|
|
142
|
+
});
|
|
143
|
+
},
|
|
144
|
+
async attach(conversationId, target, options = {}) {
|
|
145
|
+
checkTarget(target);
|
|
146
|
+
const work = async (unit) => {
|
|
147
|
+
const record = await lockConversation(unit.conn, conversationId, now());
|
|
148
|
+
if (!record)
|
|
149
|
+
return false;
|
|
150
|
+
return (await tie(unit, record, target, options.origin ?? 'application', null)).created;
|
|
151
|
+
};
|
|
152
|
+
return options.outer ? work(options.outer) : tx.run(work);
|
|
153
|
+
},
|
|
154
|
+
async linkedTo(conn, target) {
|
|
155
|
+
const found = [];
|
|
156
|
+
for (const id of await conversationIds(conn, target)) {
|
|
157
|
+
const record = await findConversation(conn, id);
|
|
158
|
+
if (record)
|
|
159
|
+
found.push(deps.refOf(record));
|
|
160
|
+
}
|
|
161
|
+
return found;
|
|
162
|
+
},
|
|
163
|
+
async turnSection(conn, conversation) {
|
|
164
|
+
const rows = await rowsOf(conn, conversation.id);
|
|
165
|
+
if (rows.length === 0)
|
|
166
|
+
return null;
|
|
167
|
+
const found = await views(conn, conversation.userId, rows);
|
|
168
|
+
const lines = rows.flatMap((row) => {
|
|
169
|
+
const view = found.get(`${row.kind}:${row.targetId}`);
|
|
170
|
+
// What the owner may no longer see is left out, as it is from their list.
|
|
171
|
+
if (kinds.get(row.kind)?.resolve && !view)
|
|
172
|
+
return [];
|
|
173
|
+
const name = view?.key ?? row.targetId;
|
|
174
|
+
return [
|
|
175
|
+
`- ${row.kind} ${name}${view ? `: ${view.title}` : ''}${view?.status ? ` (${view.status})` : ''}`,
|
|
176
|
+
];
|
|
177
|
+
});
|
|
178
|
+
return lines.length > 0
|
|
179
|
+
? [
|
|
180
|
+
'Linked work (what this conversation drives, as it stands now):',
|
|
181
|
+
...lines,
|
|
182
|
+
]
|
|
183
|
+
: null;
|
|
184
|
+
},
|
|
185
|
+
conversationIds,
|
|
186
|
+
};
|
|
187
|
+
}
|
|
188
|
+
//# sourceMappingURL=links.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"links.js","sourceRoot":"","sources":["../../../../server/core/conversations/links.ts"],"names":[],"mappings":"AAOA,OAAO,EACL,8BAA8B,GAI/B,MAAM,kCAAkC,CAAC;AAC1C,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,wBAAwB,CAAC;AAG3D,OAAO,EACL,gBAAgB,EAChB,SAAS,EACT,gBAAgB,GAGjB,MAAM,yBAAyB,CAAC;AAQjC,2GAA2G;AAC3G,MAAM,sBAAsB,GAAG,GAAG,CAAC;AAwBnC,SAAS,WAAW,CAAC,MAA8B;IACjD,IAAI,CAAC,8BAA8B,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC;QACnD,MAAM,OAAO,CAAC,0BAA0B,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC,CAAC;IAC/D,IACE,OAAO,MAAM,CAAC,QAAQ,KAAK,QAAQ;QACnC,MAAM,CAAC,QAAQ,CAAC,MAAM,KAAK,CAAC;QAC5B,MAAM,CAAC,QAAQ,CAAC,MAAM,GAAG,GAAG;QAE5B,MAAM,OAAO,CAAC,uCAAuC,EAAE;YACrD,KAAK,EAAE,UAAU;SAClB,CAAC,CAAC;AACP,CAAC;AAED,MAAM,UAAU,uBAAuB,CACrC,IAA2B;IAE3B,MAAM,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC;IAC9B,MAAM,KAAK,GAAG,IAAI,GAAG,EAAgC,CAAC;IAEtD,KAAK,UAAU,KAAK,CAAC,IAAwB,EAAE,MAAc,EAAE,EAAU;QACvE,MAAM,MAAM,GAAG,MAAM,gBAAgB,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;QAChD,IAAI,CAAC,MAAM,IAAI,MAAM,CAAC,MAAM,KAAK,MAAM;YAAE,MAAM,QAAQ,CAAC,cAAc,CAAC,CAAC;QACxE,OAAO,MAAM,CAAC;IAChB,CAAC;IAED,sDAAsD;IACtD,KAAK,UAAU,KAAK,CAClB,IAAwB,EACxB,MAAc,EACd,IAA2B;QAE3B,MAAM,KAAK,GAAG,IAAI,GAAG,EAAgC,CAAC;QACtD,MAAM,MAAM,GAAG,IAAI,GAAG,EAAoB,CAAC;QAC3C,KAAK,MAAM,GAAG,IAAI,IAAI;YACpB,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,EAAE,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC;QACxE,KAAK,MAAM,CAAC,GAAG,EAAE,SAAS,CAAC,IAAI,MAAM,EAAE,CAAC;YACtC,MAAM,QAAQ,GAAG,MAAM,KAAK;iBACzB,GAAG,CAAC,GAAG,CAAC;gBACT,EAAE,OAAO,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,CAAC,GAAG,IAAI,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;YACrD,KAAK,MAAM,CAAC,QAAQ,EAAE,IAAI,CAAC,IAAI,QAAQ,IAAI,EAAE;gBAC3C,KAAK,CAAC,GAAG,CAAC,GAAG,GAAG,IAAI,QAAQ,EAAE,EAAE,IAAI,CAAC,CAAC;QAC1C,CAAC;QACD,OAAO,KAAK,CAAC;IACf,CAAC;IAED,SAAS,MAAM,CACb,GAAe,EACf,KAAgD;QAEhD,OAAO;YACL,EAAE,EAAE,GAAG,CAAC,EAAE;YACV,cAAc,EAAE,GAAG,CAAC,cAAc;YAClC,IAAI,EAAE,GAAG,CAAC,IAAI;YACd,QAAQ,EAAE,GAAG,CAAC,QAAQ;YACtB,MAAM,EAAE,GAAG,CAAC,MAAgC;YAC5C,SAAS,EAAE,GAAG,CAAC,SAAS;YACxB,IAAI,EAAE,KAAK,CAAC,GAAG,CAAC,GAAG,GAAG,CAAC,IAAI,IAAI,GAAG,CAAC,QAAQ,EAAE,CAAC,IAAI,IAAI;SACvD,CAAC;IACJ,CAAC;IAED,KAAK,UAAU,MAAM,CAAC,IAAwB,EAAE,cAAsB;QACpE,OAAO,CACL,MAAM,SAAS,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC;YAC7B,MAAM,EAAE,EAAE,cAAc,EAAE;YAC1B,IAAI,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC,GAAG,EAAE,EAAE,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE,CAAC;YACvE,KAAK,EAAE,sBAAsB;SAC9B,CAAC,CACH,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC;IACzC,CAAC;IAED,kFAAkF;IAClF,KAAK,UAAU,GAAG,CAChB,IAAQ,EACR,MAA0B,EAC1B,MAA8B,EAC9B,MAA8B,EAC9B,WAA0B;QAE1B,MAAM,MAAM,GAAG;YACb,cAAc,EAAE,MAAM,CAAC,EAAE;YACzB,IAAI,EAAE,MAAM,CAAC,IAAI;YACjB,QAAQ,EAAE,MAAM,CAAC,QAAQ;SAC1B,CAAC;QACF,MAAM,QAAQ,GAAG,MAAM,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC;QAChE,IAAI,QAAQ;YAAE,OAAO,EAAE,GAAG,EAAE,QAAQ,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC;QACvD,MAAM,EAAE,GAAG,GAAG,CAAC,IAAI,EAAE,CAAC;QACtB,MAAM,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,SAAS,CAAC;YACnC,MAAM,EAAE,EAAE,EAAE,EAAE,GAAG,MAAM,EAAE,MAAM,EAAE,WAAW,EAAE,SAAS,EAAE,GAAG,EAAE,EAAE;SACjE,CAAC,CAAC;QACH,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;QAC3B,OAAO;YACL,GAAG,EAAE,CAAC,MAAM,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,EAAE,MAAM,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,CAAE;YAC9D,OAAO,EAAE,IAAI;SACd,CAAC;IACJ,CAAC;IAED,KAAK,UAAU,eAAe,CAC5B,IAAwB,EACxB,MAA8B;QAE9B,MAAM,IAAI,GAAG,MAAM,SAAS,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC;YAC1C,MAAM,EAAE,EAAE,IAAI,EAAE,MAAM,CAAC,IAAI,EAAE,QAAQ,EAAE,MAAM,CAAC,QAAQ,EAAE;YACxD,IAAI,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC,IAAI,EAAE;YAC9C,KAAK,EAAE,sBAAsB;SAC9B,CAAC,CAAC;QACH,OAAO,CAAC,GAAG,IAAI,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC;IAC7D,CAAC;IAED,OAAO;QACL,YAAY,CAAC,IAAI;YACf,IAAI,CAAC,8BAA8B,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC;gBAChD,MAAM,IAAI,KAAK,CAAC,iCAAiC,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC;YAC/D,IAAI,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC;gBACrB,MAAM,IAAI,KAAK,CACb,8CAA8C,IAAI,CAAC,GAAG,EAAE,CACzD,CAAC;YACJ,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;YAC1B,OAAO,GAAG,EAAE;gBACV,IAAI,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,IAAI;oBAAE,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;YAC3D,CAAC,CAAC;QACJ,CAAC;QACD,OAAO,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC;QAEhC,KAAK,CAAC,IAAI,CAAC,MAAM,EAAE,cAAc;YAC/B,MAAM,IAAI,GAAG,EAAE,CAAC,IAAI,EAAE,CAAC;YACvB,MAAM,KAAK,CAAC,IAAI,EAAE,MAAM,EAAE,cAAc,CAAC,CAAC;YAC1C,MAAM,IAAI,GAAG,MAAM,MAAM,CAAC,IAAI,EAAE,cAAc,CAAC,CAAC;YAChD,MAAM,KAAK,GAAG,MAAM,KAAK,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,CAAC,CAAC;YAC9C,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC,CAAC;QAC/C,CAAC;QAED,KAAK,CAAC,GAAG,CAAC,MAAM,EAAE,cAAc,EAAE,MAAM;YACtC,WAAW,CAAC,MAAM,CAAC,CAAC;YACpB,MAAM,IAAI,GAAG,KAAK,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;YACpC,IAAI,CAAC,IAAI;gBACP,MAAM,OAAO,CAAC,GAAG,MAAM,CAAC,IAAI,uCAAuC,EAAE;oBACnE,KAAK,EAAE,MAAM;iBACd,CAAC,CAAC;YACL,MAAM,IAAI,GAAG,EAAE,CAAC,IAAI,EAAE,CAAC;YACvB,MAAM,KAAK,CAAC,IAAI,EAAE,MAAM,EAAE,cAAc,CAAC,CAAC;YAC1C,0EAA0E;YAC1E,MAAM,IAAI,GAAG,IAAI,CAAC,OAAO;gBACvB,CAAC,CAAC,CAAC,MAAM,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,MAAM,EAAE,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,GAAG,CACvD,MAAM,CAAC,QAAQ,CAChB;gBACH,CAAC,CAAC,SAAS,CAAC;YACd,IAAI,IAAI,CAAC,OAAO,IAAI,CAAC,IAAI;gBACvB,MAAM,OAAO,CAAC,qCAAqC,EAAE;oBACnD,KAAK,EAAE,UAAU;iBAClB,CAAC,CAAC;YACL,MAAM,GAAG,GAAG,MAAM,EAAE,CAAC,GAAG,CAAC,KAAK,EAAE,IAAI,EAAE,EAAE;gBACtC,MAAM,MAAM,GAAG,MAAM,gBAAgB,CAAC,IAAI,CAAC,IAAI,EAAE,cAAc,EAAE,GAAG,EAAE,CAAC,CAAC;gBACxE,IAAI,CAAC,MAAM,IAAI,MAAM,CAAC,MAAM,KAAK,MAAM;oBAAE,MAAM,QAAQ,CAAC,cAAc,CAAC,CAAC;gBACxE,OAAO,CAAC,MAAM,GAAG,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC;YAC/D,CAAC,CAAC,CAAC;YACH,OAAO,MAAM,CACX,GAAG,EACH,IAAI,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,IAAI,IAAI,MAAM,CAAC,QAAQ,EAAE,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CACnE,CAAC;QACJ,CAAC;QAED,KAAK,CAAC,MAAM,CAAC,MAAM,EAAE,cAAc,EAAE,MAAM;YACzC,MAAM,EAAE,CAAC,GAAG,CAAC,KAAK,EAAE,IAAI,EAAE,EAAE;gBAC1B,MAAM,MAAM,GAAG,MAAM,gBAAgB,CAAC,IAAI,CAAC,IAAI,EAAE,cAAc,EAAE,GAAG,EAAE,CAAC,CAAC;gBACxE,IAAI,CAAC,MAAM,IAAI,MAAM,CAAC,MAAM,KAAK,MAAM;oBAAE,MAAM,QAAQ,CAAC,cAAc,CAAC,CAAC;gBACxE,MAAM,OAAO,GAAG,MAAM,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,UAAU,CAAC;oBACpD,MAAM,EAAE,EAAE,EAAE,EAAE,MAAM,EAAE,cAAc,EAAE;iBACvC,CAAC,CAAC;gBACH,IAAI,OAAO,CAAC,YAAY,KAAK,CAAC;oBAAE,MAAM,QAAQ,CAAC,MAAM,CAAC,CAAC;gBACvD,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;YAC7B,CAAC,CAAC,CAAC;QACL,CAAC;QAED,KAAK,CAAC,MAAM,CAAC,cAAc,EAAE,MAAM,EAAE,OAAO,GAAG,EAAE;YAC/C,WAAW,CAAC,MAAM,CAAC,CAAC;YACpB,MAAM,IAAI,GAAG,KAAK,EAAE,IAAQ,EAAE,EAAE;gBAC9B,MAAM,MAAM,GAAG,MAAM,gBAAgB,CAAC,IAAI,CAAC,IAAI,EAAE,cAAc,EAAE,GAAG,EAAE,CAAC,CAAC;gBACxE,IAAI,CAAC,MAAM;oBAAE,OAAO,KAAK,CAAC;gBAC1B,OAAO,CACL,MAAM,GAAG,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,CAAC,MAAM,IAAI,aAAa,EAAE,IAAI,CAAC,CACvE,CAAC,OAAO,CAAC;YACZ,CAAC,CAAC;YACF,OAAO,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QAC5D,CAAC;QAED,KAAK,CAAC,QAAQ,CAAC,IAAI,EAAE,MAAM;YACzB,MAAM,KAAK,GAAsB,EAAE,CAAC;YACpC,KAAK,MAAM,EAAE,IAAI,MAAM,eAAe,CAAC,IAAI,EAAE,MAAM,CAAC,EAAE,CAAC;gBACrD,MAAM,MAAM,GAAG,MAAM,gBAAgB,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;gBAChD,IAAI,MAAM;oBAAE,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC;YAC7C,CAAC;YACD,OAAO,KAAK,CAAC;QACf,CAAC;QAED,KAAK,CAAC,WAAW,CAAC,IAAI,EAAE,YAAY;YAClC,MAAM,IAAI,GAAG,MAAM,MAAM,CAAC,IAAI,EAAE,YAAY,CAAC,EAAE,CAAC,CAAC;YACjD,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC;gBAAE,OAAO,IAAI,CAAC;YACnC,MAAM,KAAK,GAAG,MAAM,KAAK,CAAC,IAAI,EAAE,YAAY,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;YAC3D,MAAM,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC,CAAC,GAAG,EAAE,EAAE;gBACjC,MAAM,IAAI,GAAG,KAAK,CAAC,GAAG,CAAC,GAAG,GAAG,CAAC,IAAI,IAAI,GAAG,CAAC,QAAQ,EAAE,CAAC,CAAC;gBACtD,0EAA0E;gBAC1E,IAAI,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,OAAO,IAAI,CAAC,IAAI;oBAAE,OAAO,EAAE,CAAC;gBACrD,MAAM,IAAI,GAAG,IAAI,EAAE,GAAG,IAAI,GAAG,CAAC,QAAQ,CAAC;gBACvC,OAAO;oBACL,KAAK,GAAG,CAAC,IAAI,IAAI,IAAI,GAAG,IAAI,CAAC,CAAC,CAAC,KAAK,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,GAAG,IAAI,EAAE,MAAM,CAAC,CAAC,CAAC,KAAK,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE;iBAClG,CAAC;YACJ,CAAC,CAAC,CAAC;YACH,OAAO,KAAK,CAAC,MAAM,GAAG,CAAC;gBACrB,CAAC,CAAC;oBACE,gEAAgE;oBAChE,GAAG,KAAK;iBACT;gBACH,CAAC,CAAC,IAAI,CAAC;QACX,CAAC;QAED,eAAe;KAChB,CAAC;AACJ,CAAC"}
|
|
@@ -10,7 +10,7 @@
|
|
|
10
10
|
import type { DatabaseConnection } from '@nocobase/db';
|
|
11
11
|
import type { Agent } from '../../../shared/agents.js';
|
|
12
12
|
import type { I18nText } from '../../../shared/i18n.js';
|
|
13
|
-
import type { ChatAgent, ConversationNotice, ConversationDetail, ConversationListQuery, ConversationPage, ConversationPatch, ConversationSource, CreateConversationRequest, MessagePage, SendMessageRequest, SendMessageResult, StartConversationRequest, ResolvedPageContext } from '../../../shared/conversations.js';
|
|
13
|
+
import type { ChatAgent, ConversationAttentionCounts, ConversationUsage, ConversationLink, ConversationLinkView, ConversationNotice, ConversationDetail, ConversationListQuery, ConversationPage, ConversationPatch, ConversationSource, CreateConversationRequest, MessagePage, SendMessageRequest, SendMessageResult, StartConversationRequest, ResolvedPageContext } from '../../../shared/conversations.js';
|
|
14
14
|
import type { Run } from '../../../shared/runs.js';
|
|
15
15
|
import type { Tx } from '../../kernel/tx.js';
|
|
16
16
|
import type { NewInput, SubjectBinding } from '../runs/index.js';
|
|
@@ -39,12 +39,60 @@ export interface ConversationRuleLines {
|
|
|
39
39
|
readonly rules?: readonly string[];
|
|
40
40
|
/** Sections after the rules, each a list of lines (a heading line, then `- ` lines). */
|
|
41
41
|
readonly sections?: readonly (readonly string[])[];
|
|
42
|
+
/**
|
|
43
|
+
* Sections added to every turn after its first line, each a list of lines: what is current now, such as the work the
|
|
44
|
+
* conversation drives. A resumed session does not read the system layer again, and these never stop it resuming.
|
|
45
|
+
*/
|
|
46
|
+
readonly turn?: readonly (readonly string[])[];
|
|
42
47
|
}
|
|
43
48
|
/**
|
|
44
49
|
* The application's part of the system layer of a conversation's runs, such as its rules for changing data for the
|
|
45
50
|
* person. Database reads only; called in the claim's transaction.
|
|
46
51
|
*/
|
|
47
52
|
export type ConversationRules = (conn: DatabaseConnection, context: ConversationRulesContext) => Promise<ConversationRuleLines>;
|
|
53
|
+
/** A kind of record conversations may be tied to (`ConversationLinks.registerKind`), such as an issue. */
|
|
54
|
+
export interface ConversationLinkKind {
|
|
55
|
+
/** `CONVERSATION_LINK_KIND_PATTERN`; a key is registered once. */
|
|
56
|
+
readonly key: string;
|
|
57
|
+
readonly title?: I18nText;
|
|
58
|
+
/**
|
|
59
|
+
* How each of `targetIds` looks to `userId`, leaving out the ones they may not see. Database reads on `conn` only: it
|
|
60
|
+
* is also read in the claim's transaction, for the "Linked work" section of each turn. Without it the owner may tie
|
|
61
|
+
* any id of the kind, and its links show no view.
|
|
62
|
+
*/
|
|
63
|
+
resolve?(conn: DatabaseConnection, userId: string, targetIds: readonly string[]): Promise<ReadonlyMap<string, ConversationLinkView>>;
|
|
64
|
+
}
|
|
65
|
+
/** A record of a registered kind. */
|
|
66
|
+
export interface ConversationLinkTarget {
|
|
67
|
+
readonly kind: string;
|
|
68
|
+
readonly targetId: string;
|
|
69
|
+
}
|
|
70
|
+
/** What conversations are tied to. A target is tied to a conversation once. */
|
|
71
|
+
export interface ConversationLinks {
|
|
72
|
+
/** Returns what removes the kind. Links of a kind that is not registered stay stored but are not listed. */
|
|
73
|
+
registerKind(kind: ConversationLinkKind): () => void;
|
|
74
|
+
hasKind(key: string): boolean;
|
|
75
|
+
/** The conversation's links, oldest first, as its owner sees them. */
|
|
76
|
+
list(userId: string, conversationId: string): Promise<ConversationLink[]>;
|
|
77
|
+
/** The owner ties a target they may see; tying one again answers the existing link. */
|
|
78
|
+
add(userId: string, conversationId: string, target: ConversationLinkTarget): Promise<ConversationLink>;
|
|
79
|
+
/** 404 for a link the conversation does not have. */
|
|
80
|
+
remove(userId: string, conversationId: string, linkId: string): Promise<void>;
|
|
81
|
+
/**
|
|
82
|
+
* Trusted: ties a target without asking its kind whether anyone may see it, such as what the agent of a run on the
|
|
83
|
+
* conversation created (`ConversationService.ofRunId`). In `outer`'s transaction when given. False when the
|
|
84
|
+
* conversation is gone or already had the link.
|
|
85
|
+
*/
|
|
86
|
+
attach(conversationId: string, target: ConversationLinkTarget, options?: {
|
|
87
|
+
readonly origin?: 'agent' | 'application';
|
|
88
|
+
readonly outer?: Tx;
|
|
89
|
+
}): Promise<boolean>;
|
|
90
|
+
/**
|
|
91
|
+
* Trusted: every conversation tied to the target, whoever owns it, such as to deliver news to each
|
|
92
|
+
* (`ConversationService.deliver`). A person reads their own with `list` and `linkKind`, `linkTargetId`.
|
|
93
|
+
*/
|
|
94
|
+
linkedTo(conn: DatabaseConnection, target: ConversationLinkTarget): Promise<readonly ConversationRef[]>;
|
|
95
|
+
}
|
|
48
96
|
/** A place a conversation may be started from besides the panel (`StartConversationRequest.source`). */
|
|
49
97
|
export interface ConversationSourceKind {
|
|
50
98
|
/** `CONVERSATION_SOURCE_PATTERN`, not `panel`. */
|
|
@@ -63,6 +111,11 @@ export interface ConversationNews {
|
|
|
63
111
|
readonly notice: ConversationNotice;
|
|
64
112
|
/** Handed to the agent as run input on the conversation's key, when the agent may still be woken. */
|
|
65
113
|
readonly input?: NewInput;
|
|
114
|
+
/**
|
|
115
|
+
* A Runner OnlineAgent conversation hands `input` to its agent only when this is true: as a new run, or into the one
|
|
116
|
+
* that works on it now. Its owner sees that run's replies in the conversation like any other.
|
|
117
|
+
*/
|
|
118
|
+
readonly wake?: boolean;
|
|
66
119
|
}
|
|
67
120
|
/** Which messages to read: the newest `limit`, those before a `seq` (older), or those after one (newer). */
|
|
68
121
|
export interface MessageReadOptions {
|
|
@@ -92,15 +145,54 @@ export interface ConversationService {
|
|
|
92
145
|
expectedConfig: OnlineAgentConfig;
|
|
93
146
|
workContext?: ResolvedPageContext;
|
|
94
147
|
business?: OnlineAgentJson;
|
|
148
|
+
/** Join the run already answering: the runner steers it into the turn or takes it as the next one. */
|
|
149
|
+
queue?: boolean;
|
|
95
150
|
}): Promise<{
|
|
96
151
|
readonly seq: number;
|
|
97
152
|
readonly run: SendMessageResult['run'];
|
|
98
153
|
}>;
|
|
154
|
+
/**
|
|
155
|
+
* Takes back a message queued while the agent worked (`queue`), while its runner has not taken it: it stays in the
|
|
156
|
+
* history, marked withdrawn, and the agent never sees it.
|
|
157
|
+
*/
|
|
158
|
+
withdraw(userId: string, id: string, messageId: string): Promise<void>;
|
|
99
159
|
/** A new conversation and its first message (`StartConversationRequest`): the application pages' buttons. */
|
|
100
160
|
start(userId: string, request: StartConversationRequest): Promise<SendMessageResult>;
|
|
101
161
|
markRead(userId: string, id: string): Promise<ConversationDetail>;
|
|
162
|
+
/**
|
|
163
|
+
* The owner saw the conversation up to message `seq`: a reply or failure waiting for them up to there is settled; a
|
|
164
|
+
* question (`confirm`) waits until they write.
|
|
165
|
+
*/
|
|
166
|
+
markSeen(userId: string, id: string, seq: number): Promise<ConversationDetail>;
|
|
167
|
+
/** How many of the owner's open conversations are unread, and how many need them. */
|
|
168
|
+
attention(userId: string): Promise<ConversationAttentionCounts>;
|
|
169
|
+
/** What the conversation's runs used (`ConversationUsage`); owner only. */
|
|
170
|
+
usage(userId: string, id: string): Promise<ConversationUsage>;
|
|
171
|
+
/**
|
|
172
|
+
* The application told the owner of the conversation up to `seq` (a reminder, a push), so it tells them once; the
|
|
173
|
+
* highest one is kept.
|
|
174
|
+
*/
|
|
175
|
+
markNoticed(conversationId: string, seq: number): Promise<void>;
|
|
176
|
+
/**
|
|
177
|
+
* Unbinds the conversation from its runner: the next run goes to whichever runner takes it first, which binds it,
|
|
178
|
+
* starting a fresh session with the conversation's history. The old directory is left to the runner's cleanup.
|
|
179
|
+
*/
|
|
180
|
+
switchRunner(userId: string, id: string): Promise<ConversationDetail>;
|
|
181
|
+
/** Changes the agent of an idle Runner conversation, preserving history and links; its next message starts a fresh session. */
|
|
182
|
+
switchAgent(userId: string, id: string, agentId: string): Promise<ConversationDetail>;
|
|
102
183
|
/** Cancels the conversation's open runs: a queued one at once, a working one is asked to stop. */
|
|
103
184
|
stop(userId: string, id: string): Promise<ConversationDetail>;
|
|
185
|
+
/**
|
|
186
|
+
* Deletes the owner's conversation for good: its open runs are cancelled, its messages, files, links and kept
|
|
187
|
+
* sessions go, its inbox notices are settled, and runners remove its working directories and session files on
|
|
188
|
+
* their next report.
|
|
189
|
+
*/
|
|
190
|
+
delete(userId: string, id: string): Promise<void>;
|
|
191
|
+
/**
|
|
192
|
+
* Deletes conversations archived more than `days` days before `now`, as `delete` does, in batches; answers how many
|
|
193
|
+
* it deleted.
|
|
194
|
+
*/
|
|
195
|
+
purgeArchived(days: number, now?: Date): Promise<number>;
|
|
104
196
|
/** Moves the conversation to the system default agent until `restore`; a new session. */
|
|
105
197
|
fallback(userId: string, id: string): Promise<ConversationDetail>;
|
|
106
198
|
/** Moves the conversation back to its own agent; a new session. */
|
|
@@ -110,6 +202,17 @@ export interface ConversationService {
|
|
|
110
202
|
* `CONVERSATION_CONFLICT` `titleLocked` once the owner renamed it. For the CLI command `conversation title set`.
|
|
111
203
|
*/
|
|
112
204
|
setTitleFromRun(run: Pick<Run, 'subject' | 'actorUserId'>, title: string): Promise<ConversationDetail>;
|
|
205
|
+
/**
|
|
206
|
+
* The agent of a run on the conversation asks its owner something (`confirm`), which waits for them until they write.
|
|
207
|
+
* For the CLI command `conversation ask-owner`.
|
|
208
|
+
*/
|
|
209
|
+
askOwnerFromRun(run: Pick<Run, 'subject' | 'actorUserId'>, question: string, issue?: string): Promise<ConversationDetail>;
|
|
210
|
+
/** Settles only a question about this issue asked before its recorded resumption. */
|
|
211
|
+
settleOwnerQuestion(id: string, issue: string, resumedAt: string): Promise<boolean>;
|
|
212
|
+
/** `homeOf` for a stored run, by id: the conversation what the run did goes back to, or null. */
|
|
213
|
+
ofRunId(runId: string): Promise<ConversationRef | null>;
|
|
214
|
+
/** Where the application registers what conversations may be tied to, and ties them. */
|
|
215
|
+
readonly links: ConversationLinks;
|
|
113
216
|
/** The conversation a run works on, when it is one and the run acts for its owner; null otherwise. */
|
|
114
217
|
ofRun(conn: DatabaseConnection, run: Pick<Run, 'subject' | 'actorUserId'>): Promise<ConversationRef | null>;
|
|
115
218
|
/**
|
|
@@ -122,8 +225,9 @@ export interface ConversationService {
|
|
|
122
225
|
/**
|
|
123
226
|
* In the caller's transaction: writes `news.notice` to the conversation and hands `news.input` to its agent (a new
|
|
124
227
|
* run, or the open one), as a message would. Answers the run, or null when the agent was not woken (no input, or
|
|
125
|
-
* the agent can no longer be woken) or the conversation is gone. Native
|
|
126
|
-
*
|
|
228
|
+
* the agent can no longer be woken) or the conversation is gone. Native bindings save the notice but ignore input
|
|
229
|
+
* for wake-up and return null, as Runner OnlineAgent bindings do unless `news.wake`; null can therefore mean a notice
|
|
230
|
+
* was saved.
|
|
127
231
|
*/
|
|
128
232
|
deliver(outer: Tx, conversationId: string, news: ConversationNews): Promise<SendMessageResult['run']>;
|
|
129
233
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ports.d.ts","sourceRoot":"","sources":["../../../../server/core/conversations/ports.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AACH,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,cAAc,CAAC;AAEvD,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,2BAA2B,CAAC;AACvD,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,yBAAyB,CAAC;AACxD,OAAO,KAAK,EACV,SAAS,EACT,kBAAkB,EAClB,kBAAkB,EAClB,qBAAqB,EACrB,gBAAgB,EAChB,iBAAiB,EACjB,kBAAkB,EAClB,yBAAyB,EACzB,WAAW,EACX,kBAAkB,EAClB,iBAAiB,EACjB,wBAAwB,EACxB,mBAAmB,EACpB,MAAM,kCAAkC,CAAC;AAC1C,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,yBAAyB,CAAC;AACnD,OAAO,KAAK,EAAE,EAAE,EAAE,MAAM,oBAAoB,CAAC;AAC7C,OAAO,KAAK,EAAE,QAAQ,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AACjE,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AAC1D,OAAO,KAAK,EACV,iBAAiB,EACjB,eAAe,EAChB,MAAM,6BAA6B,CAAC;AAErC,qEAAqE;AACrE,MAAM,WAAW,eAAe;IAC9B,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,8CAA8C;IAC9C,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IAC9B,QAAQ,CAAC,MAAM,EAAE,kBAAkB,CAAC;CACrC;AAED,mFAAmF;AACnF,MAAM,WAAW,wBAAwB;IACvC,QAAQ,CAAC,YAAY,EAAE,eAAe,CAAC;IACvC,QAAQ,CAAC,KAAK,EAAE,KAAK,CAAC;IACtB,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,kGAAkG;IAClG,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;CACtB;AAED,8EAA8E;AAC9E,MAAM,WAAW,qBAAqB;IACpC,uEAAuE;IACvE,QAAQ,CAAC,KAAK,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IACnC,wFAAwF;IACxF,QAAQ,CAAC,QAAQ,CAAC,EAAE,SAAS,CAAC,SAAS,MAAM,EAAE,CAAC,EAAE,CAAC;
|
|
1
|
+
{"version":3,"file":"ports.d.ts","sourceRoot":"","sources":["../../../../server/core/conversations/ports.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"claim.d.ts","sourceRoot":"","sources":["../../../../server/core/runs/claim.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"claim.d.ts","sourceRoot":"","sources":["../../../../server/core/runs/claim.ts"],"names":[],"mappings":"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"}
|
|
@@ -240,7 +240,11 @@ function directoryKeyOf(runnerId, dirs) {
|
|
|
240
240
|
async function settleClaimInputs(conn, pending, effective, now) {
|
|
241
241
|
const ids = new Set(effective.map((input) => input.id));
|
|
242
242
|
await dropInputs(conn, pending.filter((input) => !ids.has(input.id)).map((input) => input.id), now);
|
|
243
|
-
|
|
243
|
+
const given = pending.filter((input) => ids.has(input.id));
|
|
244
|
+
const delivered = await markDelivered(conn, given, now);
|
|
245
|
+
// One was withdrawn while the claim assembled it: claim the run again, without it.
|
|
246
|
+
if (delivered.length !== given.length)
|
|
247
|
+
throw new NotForThisRunner();
|
|
244
248
|
}
|
|
245
249
|
export function createClaimService(deps) {
|
|
246
250
|
const { tx, clock } = deps;
|
|
@@ -595,7 +599,7 @@ export function createClaimService(deps) {
|
|
|
595
599
|
cli: deps.cli.name,
|
|
596
600
|
appName: deps.app.name,
|
|
597
601
|
};
|
|
598
|
-
|
|
602
|
+
let assembly = await binding.context.assemble(conn, claim, prepared.get('subject'));
|
|
599
603
|
// workspace.key is required for coordinating runs; old runners must not silently ignore it.
|
|
600
604
|
if ((await assemblyCompatibility(conn, toRun(run), agent, runner, assembly, resources)) === 'incompatible')
|
|
601
605
|
throw new NotForThisRunner();
|
|
@@ -662,13 +666,33 @@ export function createClaimService(deps) {
|
|
|
662
666
|
filter: { runId: run.id },
|
|
663
667
|
sort: (sort) => sort.field('seq').desc(),
|
|
664
668
|
});
|
|
665
|
-
const
|
|
669
|
+
const render = async () => briefOf(agent, await withSections(conn, deps.sections, effectiveClaim, assembly, prepared), skills, deps.cli.name, deps.app.name);
|
|
670
|
+
let brief = await render();
|
|
666
671
|
const briefFingerprint = fingerprint(agent, entry, brief.layers, skills);
|
|
667
672
|
const resume = !run.freshSession &&
|
|
668
673
|
!clean &&
|
|
669
674
|
session &&
|
|
670
675
|
!session.poisoned &&
|
|
671
676
|
session.fingerprint === briefFingerprint;
|
|
677
|
+
// A kept session that cannot be resumed: the new one is told what came before, as a first one is. The history
|
|
678
|
+
// is outside the fingerprint, so it does not change.
|
|
679
|
+
let recoveryContext;
|
|
680
|
+
if (session) {
|
|
681
|
+
const fresh = await binding.context.assemble(conn, { ...claim, freshSession: true }, prepared.get('subject'));
|
|
682
|
+
if (resume) {
|
|
683
|
+
// Should the kept session be gone on the runner, the new one hears what came before from this.
|
|
684
|
+
const kept = assembly;
|
|
685
|
+
assembly = fresh;
|
|
686
|
+
const context = (await render()).layers.context;
|
|
687
|
+
assembly = kept;
|
|
688
|
+
if (context.trim() && context !== brief.layers.context)
|
|
689
|
+
recoveryContext = context;
|
|
690
|
+
}
|
|
691
|
+
else {
|
|
692
|
+
assembly = fresh;
|
|
693
|
+
brief = await render();
|
|
694
|
+
}
|
|
695
|
+
}
|
|
672
696
|
// Mounts only for a runner that places them; their hashes stay out of the fingerprint, and a resumed session
|
|
673
697
|
// hears what changed in them in its turn instead.
|
|
674
698
|
const { mounts, resumeNotes } = runner.features.includes('mounts')
|
|
@@ -731,6 +755,7 @@ export function createClaimService(deps) {
|
|
|
731
755
|
turn,
|
|
732
756
|
session: resume ? 'resume' : 'fresh',
|
|
733
757
|
...(resume ? { resumeSessionId: session.sessionId } : {}),
|
|
758
|
+
...(resume && recoveryContext ? { recoveryContext } : {}),
|
|
734
759
|
},
|
|
735
760
|
inputs,
|
|
736
761
|
workspace: {
|
|
@@ -985,6 +1010,14 @@ export function createClaimService(deps) {
|
|
|
985
1010
|
});
|
|
986
1011
|
return false;
|
|
987
1012
|
}
|
|
1013
|
+
/** Whether `runner` may take the run as its subject binds work to runners. */
|
|
1014
|
+
async function pinnedTo(conn, run, runner) {
|
|
1015
|
+
const pin = deps.subjects.get(run.subjectKind)?.runnerPin;
|
|
1016
|
+
if (!pin)
|
|
1017
|
+
return true;
|
|
1018
|
+
const pinned = await pin.runnerOf(conn, toRun(run));
|
|
1019
|
+
return pinned === null || pinned === runner.id;
|
|
1020
|
+
}
|
|
988
1021
|
async function attempt(runner, agent, candidate, reported) {
|
|
989
1022
|
const conn = tx.read();
|
|
990
1023
|
// Rules that do not depend on who the run acts as come first, and settle the rest of the pass: an agent at its
|
|
@@ -1054,6 +1087,8 @@ export function createClaimService(deps) {
|
|
|
1054
1087
|
const queuedRun = await findRunRecord(conn, candidate.id);
|
|
1055
1088
|
if (!queuedRun || queuedRun.status !== 'queued')
|
|
1056
1089
|
return null;
|
|
1090
|
+
if (!(await pinnedTo(conn, queuedRun, runner)))
|
|
1091
|
+
return null;
|
|
1057
1092
|
const identity = await refreshQueuedIdentity(unit, deps, queuedRun);
|
|
1058
1093
|
// Providers were prepared for the candidate's identity outside this transaction.
|
|
1059
1094
|
if (!identity || identity.actorUserId !== candidate.actorUserId)
|
|
@@ -1132,6 +1167,9 @@ export function createClaimService(deps) {
|
|
|
1132
1167
|
throw error;
|
|
1133
1168
|
throw new AssemblyError(error instanceof Error ? error.message : String(error), error);
|
|
1134
1169
|
}
|
|
1170
|
+
const pin = deps.subjects.get(run.subjectKind)?.runnerPin;
|
|
1171
|
+
if (pin && !(await pin.pin(unit, toRun(run), runner)))
|
|
1172
|
+
throw new NotForThisRunner();
|
|
1135
1173
|
await settleClaimInputs(conn, pending, assembled.payload.inputs, nowText);
|
|
1136
1174
|
await runsRepo(conn).updateMany({
|
|
1137
1175
|
filter: { id: run.id },
|
|
@@ -1462,8 +1500,14 @@ export function createClaimService(deps) {
|
|
|
1462
1500
|
const reserved = upgradeReservation(toExecutions(candidate.executionHistory), affinity.machines, clock.now().getTime());
|
|
1463
1501
|
if (reserved && reserved !== runner.id)
|
|
1464
1502
|
continue;
|
|
1503
|
+
// Work bound to another runner waits for it; work bound here takes no other preference.
|
|
1504
|
+
const pin = deps.subjects.get(candidate.subjectKind)?.runnerPin;
|
|
1505
|
+
const pinned = pin ? await pin.runnerOf(conn, toRun(candidate)) : null;
|
|
1506
|
+
if (pinned !== null && pinned !== runner.id)
|
|
1507
|
+
continue;
|
|
1465
1508
|
const preferred = affinity.preferred.get(candidate.id);
|
|
1466
1509
|
if (!reserved &&
|
|
1510
|
+
pinned === null &&
|
|
1467
1511
|
preferred &&
|
|
1468
1512
|
preferred.id !== runner.id &&
|
|
1469
1513
|
(await readyPreference(candidate, agent, affinity, runner, metadata, inventory)))
|