@kvman/kvcoder 0.1.14 → 0.1.16
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/dist/artifacts/ended-url.d.ts +4 -0
- package/dist/artifacts/ended-url.d.ts.map +1 -0
- package/dist/artifacts/ended-url.js +30 -0
- package/dist/artifacts/ended-url.js.map +1 -0
- package/dist/calls/line-run.d.ts +1 -0
- package/dist/calls/line-run.d.ts.map +1 -1
- package/dist/calls/line-run.js +4 -1
- package/dist/calls/line-run.js.map +1 -1
- package/dist/calls/run-tool.d.ts +38 -1
- package/dist/calls/run-tool.d.ts.map +1 -1
- package/dist/calls/run-tool.js +46 -1
- package/dist/calls/run-tool.js.map +1 -1
- package/dist/connector-call.d.ts +7 -2
- package/dist/connector-call.d.ts.map +1 -1
- package/dist/connector-call.js +8 -4
- package/dist/connector-call.js.map +1 -1
- package/dist/connectors/artifact.d.ts.map +1 -1
- package/dist/connectors/artifact.js +10 -2
- package/dist/connectors/artifact.js.map +1 -1
- package/dist/connectors/background.d.ts +1 -1
- package/dist/connectors/background.d.ts.map +1 -1
- package/dist/connectors/background.js +5 -2
- package/dist/connectors/background.js.map +1 -1
- package/dist/connectors/binary.js +2 -2
- package/dist/connectors/binary.js.map +1 -1
- package/dist/connectors/builtin-connectors.d.ts +16 -3
- package/dist/connectors/builtin-connectors.d.ts.map +1 -1
- package/dist/connectors/delegate.d.ts +20 -13
- package/dist/connectors/delegate.d.ts.map +1 -1
- package/dist/connectors/delegate.js +27 -20
- package/dist/connectors/delegate.js.map +1 -1
- package/dist/connectors/execution-map.d.ts +1 -1
- package/dist/connectors/execution-map.d.ts.map +1 -1
- package/dist/connectors/execution-map.js +1 -1
- package/dist/connectors/execution-map.js.map +1 -1
- package/dist/connectors/mcp.d.ts +1 -1
- package/dist/connectors/mcp.d.ts.map +1 -1
- package/dist/connectors/mcp.js +12 -7
- package/dist/connectors/mcp.js.map +1 -1
- package/dist/connectors/payload-fields.d.ts +1 -0
- package/dist/connectors/payload-fields.d.ts.map +1 -1
- package/dist/connectors/payload-fields.js +1 -0
- package/dist/connectors/payload-fields.js.map +1 -1
- package/dist/connectors/shell.d.ts +1 -0
- package/dist/connectors/shell.d.ts.map +1 -1
- package/dist/connectors/shell.js +2 -2
- package/dist/connectors/shell.js.map +1 -1
- package/dist/delegate/approved-run.d.ts.map +1 -1
- package/dist/delegate/approved-run.js +4 -11
- package/dist/delegate/approved-run.js.map +1 -1
- package/dist/delegate/brief.d.ts +34 -0
- package/dist/delegate/brief.d.ts.map +1 -0
- package/dist/delegate/brief.js +84 -0
- package/dist/delegate/brief.js.map +1 -0
- package/dist/delegate/continue-helper.d.ts.map +1 -1
- package/dist/delegate/continue-helper.js +6 -7
- package/dist/delegate/continue-helper.js.map +1 -1
- package/dist/delegate/permission.d.ts +26 -1
- package/dist/delegate/permission.d.ts.map +1 -1
- package/dist/delegate/program-permission.d.ts +1 -1
- package/dist/delegate/runs.d.ts +7 -3
- package/dist/delegate/runs.d.ts.map +1 -1
- package/dist/delegate/runs.js +2 -2
- package/dist/delegate/runs.js.map +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +4 -0
- package/dist/index.js.map +1 -1
- package/dist/jobs/notify-watch.d.ts +5 -0
- package/dist/jobs/notify-watch.d.ts.map +1 -0
- package/dist/jobs/notify-watch.js +53 -0
- package/dist/jobs/notify-watch.js.map +1 -0
- package/dist/jobs/process-handlers.d.ts.map +1 -1
- package/dist/jobs/process-handlers.js +2 -1
- package/dist/jobs/process-handlers.js.map +1 -1
- package/dist/jobs/process-records.d.ts +4 -1
- package/dist/jobs/process-records.d.ts.map +1 -1
- package/dist/jobs/process-records.js +6 -2
- package/dist/jobs/process-records.js.map +1 -1
- package/dist/jobs/process-report.d.ts +2 -1
- package/dist/jobs/process-report.d.ts.map +1 -1
- package/dist/jobs/process-report.js +8 -5
- package/dist/jobs/process-report.js.map +1 -1
- package/dist/jobs/process-run.d.ts +1 -1
- package/dist/jobs/process-run.d.ts.map +1 -1
- package/dist/jobs/process-run.js +7 -3
- package/dist/jobs/process-run.js.map +1 -1
- package/dist/mcp/connect.d.ts +10 -5
- package/dist/mcp/connect.d.ts.map +1 -1
- package/dist/mcp/connect.js +22 -9
- package/dist/mcp/connect.js.map +1 -1
- package/dist/mcp/servers.d.ts +4 -0
- package/dist/mcp/servers.d.ts.map +1 -1
- package/dist/mcp/servers.js +5 -1
- package/dist/mcp/servers.js.map +1 -1
- package/dist/mcp/turn-servers.d.ts +8 -0
- package/dist/mcp/turn-servers.d.ts.map +1 -0
- package/dist/mcp/turn-servers.js +88 -0
- package/dist/mcp/turn-servers.js.map +1 -0
- package/dist/prompt/build-prompt.d.ts +1 -1
- package/dist/prompt/build-prompt.d.ts.map +1 -1
- package/dist/prompt/build-prompt.js +2 -3
- package/dist/prompt/build-prompt.js.map +1 -1
- package/dist/prompt/kept-rules.d.ts +6 -0
- package/dist/prompt/kept-rules.d.ts.map +1 -0
- package/dist/prompt/kept-rules.js +47 -0
- package/dist/prompt/kept-rules.js.map +1 -0
- package/dist/prompt/project-rules.d.ts +7 -2
- package/dist/prompt/project-rules.d.ts.map +1 -1
- package/dist/prompt/project-rules.js +27 -16
- package/dist/prompt/project-rules.js.map +1 -1
- package/dist/prompt/session-grants.d.ts +16 -23
- package/dist/prompt/session-grants.d.ts.map +1 -1
- package/dist/prompt/session-prompt.d.ts +1 -1
- package/dist/prompt/session-prompt.d.ts.map +1 -1
- package/dist/prompt/session-prompt.js +16 -9
- package/dist/prompt/session-prompt.js.map +1 -1
- package/dist/prompt/working-method.js +7 -7
- package/dist/prompt/working-method.js.map +1 -1
- package/dist/register-settings.d.ts +1 -0
- package/dist/register-settings.d.ts.map +1 -1
- package/dist/register-settings.js +1 -0
- package/dist/register-settings.js.map +1 -1
- package/dist/registry/register-connectors.d.ts +17 -1
- package/dist/registry/register-connectors.d.ts.map +1 -1
- package/dist/registry/register-connectors.js +11 -7
- package/dist/registry/register-connectors.js.map +1 -1
- package/dist/schemas/delegate-brief.d.ts +20 -0
- package/dist/schemas/delegate-brief.d.ts.map +1 -0
- package/dist/schemas/delegate-brief.js +9 -0
- package/dist/schemas/delegate-brief.js.map +1 -0
- package/dist/schemas/kept-rule.d.ts +12 -0
- package/dist/schemas/kept-rule.d.ts.map +1 -0
- package/dist/schemas/kept-rule.js +7 -0
- package/dist/schemas/kept-rule.js.map +1 -0
- package/dist/schemas/mcp-session.d.ts +15 -0
- package/dist/schemas/mcp-session.d.ts.map +1 -0
- package/dist/schemas/mcp-session.js +14 -0
- package/dist/schemas/mcp-session.js.map +1 -0
- package/dist/schemas/process-doc.d.ts +22 -0
- package/dist/schemas/process-doc.d.ts.map +1 -0
- package/dist/schemas/process-doc.js +20 -0
- package/dist/schemas/process-doc.js.map +1 -0
- package/dist/schemas/read-ending.d.ts +8 -0
- package/dist/schemas/read-ending.d.ts.map +1 -0
- package/dist/schemas/read-ending.js +4 -0
- package/dist/schemas/read-ending.js.map +1 -0
- package/dist/schemas/records.d.ts +29 -23
- package/dist/schemas/records.d.ts.map +1 -1
- package/dist/schemas/records.js +14 -16
- package/dist/schemas/records.js.map +1 -1
- package/dist/schemas/registry.d.ts +1 -0
- package/dist/schemas/registry.d.ts.map +1 -1
- package/dist/schemas/registry.js +3 -2
- package/dist/schemas/registry.js.map +1 -1
- package/dist/schemas/sent-record.d.ts +13 -0
- package/dist/schemas/sent-record.d.ts.map +1 -0
- package/dist/schemas/sent-record.js +7 -0
- package/dist/schemas/sent-record.js.map +1 -0
- package/dist/sessions/new-session.d.ts.map +1 -1
- package/dist/sessions/new-session.js +2 -0
- package/dist/sessions/new-session.js.map +1 -1
- package/dist/sessions/session-view.d.ts +7 -2
- package/dist/sessions/session-view.d.ts.map +1 -1
- package/dist/sessions/session-view.js +3 -0
- package/dist/sessions/session-view.js.map +1 -1
- package/dist/store/collections.d.ts +74 -6
- package/dist/store/collections.d.ts.map +1 -1
- package/dist/store/collections.js +6 -0
- package/dist/store/collections.js.map +1 -1
- package/dist/thinking-levels.d.ts +2 -0
- package/dist/thinking-levels.d.ts.map +1 -1
- package/dist/thinking-levels.js +4 -0
- package/dist/thinking-levels.js.map +1 -1
- package/dist/turns/background.d.ts +3 -0
- package/dist/turns/background.d.ts.map +1 -1
- package/dist/turns/background.js +10 -0
- package/dist/turns/background.js.map +1 -1
- package/dist/turns/clear-results.d.ts +2 -2
- package/dist/turns/clear-results.d.ts.map +1 -1
- package/dist/turns/clear-results.js +31 -15
- package/dist/turns/clear-results.js.map +1 -1
- package/dist/turns/collapse.d.ts +12 -0
- package/dist/turns/collapse.d.ts.map +1 -0
- package/dist/turns/collapse.js +67 -0
- package/dist/turns/collapse.js.map +1 -0
- package/dist/turns/connection-wait.d.ts +12 -0
- package/dist/turns/connection-wait.d.ts.map +1 -0
- package/dist/turns/connection-wait.js +56 -0
- package/dist/turns/connection-wait.js.map +1 -0
- package/dist/turns/end-turn-state.js +2 -2
- package/dist/turns/end-turn-state.js.map +1 -1
- package/dist/turns/end-turn.d.ts.map +1 -1
- package/dist/turns/end-turn.js +3 -0
- package/dist/turns/end-turn.js.map +1 -1
- package/dist/turns/history.d.ts +2 -0
- package/dist/turns/history.d.ts.map +1 -1
- package/dist/turns/history.js +1 -0
- package/dist/turns/history.js.map +1 -1
- package/dist/turns/model-context.d.ts +6 -2
- package/dist/turns/model-context.d.ts.map +1 -1
- package/dist/turns/model-context.js +26 -8
- package/dist/turns/model-context.js.map +1 -1
- package/dist/turns/model-retry.d.ts +5 -2
- package/dist/turns/model-retry.d.ts.map +1 -1
- package/dist/turns/model-retry.js +5 -3
- package/dist/turns/model-retry.js.map +1 -1
- package/dist/turns/read-endings.d.ts +8 -0
- package/dist/turns/read-endings.d.ts.map +1 -0
- package/dist/turns/read-endings.js +24 -0
- package/dist/turns/read-endings.js.map +1 -0
- package/dist/turns/run-calls.d.ts +0 -6
- package/dist/turns/run-calls.d.ts.map +1 -1
- package/dist/turns/run-calls.js +24 -26
- package/dist/turns/run-calls.js.map +1 -1
- package/dist/turns/run-command.d.ts +2 -0
- package/dist/turns/run-command.d.ts.map +1 -1
- package/dist/turns/run-command.js +6 -0
- package/dist/turns/run-command.js.map +1 -1
- package/dist/turns/run-scope.d.ts +7 -0
- package/dist/turns/run-scope.d.ts.map +1 -0
- package/dist/turns/run-scope.js +24 -0
- package/dist/turns/run-scope.js.map +1 -0
- package/dist/turns/sent-record.d.ts +4 -0
- package/dist/turns/sent-record.d.ts.map +1 -0
- package/dist/turns/sent-record.js +11 -0
- package/dist/turns/sent-record.js.map +1 -0
- package/dist/turns/settle-calls.d.ts.map +1 -1
- package/dist/turns/settle-calls.js +1 -19
- package/dist/turns/settle-calls.js.map +1 -1
- package/dist/turns/start-turn.js +1 -1
- package/dist/turns/start-turn.js.map +1 -1
- package/dist/turns/step.d.ts.map +1 -1
- package/dist/turns/step.js +36 -9
- package/dist/turns/step.js.map +1 -1
- package/dist/ui/register-ui.js +1 -1
- package/dist/ui/register-ui.js.map +1 -1
- package/dist/web/components/approval.css +1 -1
- package/dist/web/components/call.css +1 -1
- package/dist/web/components/call.js +1 -1
- package/dist/web/components/connectors.css +1 -1
- package/dist/web/components/connectors.js +186 -155
- package/dist/web/components/conversation.css +1 -1
- package/dist/web/components/conversation.js +1391 -1268
- package/dist/web/components/mcp-sign-in.css +1 -1
- package/dist/web/components/model.css +1 -1
- package/dist/web/components/preferences.css +1 -1
- package/dist/web/components/question.css +1 -1
- package/dist/web/components/sessions.css +1 -1
- package/dist/web/components/sessions.js +11 -7
- package/docs/connectors.md +3 -3
- package/locales/ar.json +17 -1
- package/locales/en.json +17 -1
- package/package.json +19 -4
- package/dist/delegate/start-pending.d.ts +0 -5
- package/dist/delegate/start-pending.d.ts.map +0 -1
- package/dist/delegate/start-pending.js +0 -42
- package/dist/delegate/start-pending.js.map +0 -1
|
@@ -1,25 +1,28 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { allDocs } from "../store/all-docs.js";
|
|
2
|
+
import { records, txRecords } from "../store/collections.js";
|
|
2
3
|
import { isCleared } from "./cleared-results.js";
|
|
4
|
+
import { collapsibleTurns, collapsedView, toolsLookups } from "./collapse.js";
|
|
3
5
|
import { promptTokens } from "./compaction.js";
|
|
4
6
|
import { modelInfo } from "./model-info.js";
|
|
5
7
|
import { sentHistory } from "./model-context.js";
|
|
6
8
|
import { sentCharacters } from "./sent-size.js";
|
|
7
9
|
import { liveStep } from "./step-intents.js";
|
|
8
|
-
//
|
|
9
|
-
//
|
|
10
|
-
//
|
|
11
|
-
//
|
|
12
|
-
// between reads the provider's cache.
|
|
10
|
+
// The one trim of the history (plan 08 §8.1, ADR 0108, 5; ADR 0094, 1; ADR 0102, 6): at the start of a step, when the
|
|
11
|
+
// prompt passes 60,000 tokens (half the window for a smaller model) and the trim takes out enough to be worth a cache
|
|
12
|
+
// miss, or at a turn's first step after an hour without a model call, when the provider's cache has expired anyway.
|
|
13
|
+
// It collapses the finished turns and clears the results older than the newest 24,000 tokens of results, in one
|
|
14
|
+
// transaction, so the next trim is many steps away and every step between reads the provider's cache.
|
|
13
15
|
const keptTokens = 24_000;
|
|
14
|
-
const
|
|
16
|
+
const trimTokens = 60_000;
|
|
15
17
|
const worthTokens = 20_000;
|
|
16
18
|
const cacheExpiredMs = 60 * 60 * 1000;
|
|
17
|
-
/** The newest result that may be cleared, and how many tokens the results not yet cleared up to it hold. */
|
|
19
|
+
/** The newest result that may be cleared, and how many tokens the results not yet cleared up to it hold; `mcp tools` lookups are never cleared. */
|
|
18
20
|
export function clearable(history) {
|
|
21
|
+
const lookups = toolsLookups(history.messages);
|
|
19
22
|
let kept = 0;
|
|
20
23
|
let found;
|
|
21
24
|
for (const message of [...history.messages].reverse()) {
|
|
22
|
-
if (message.kind !== 'toolResult')
|
|
25
|
+
if (message.kind !== 'toolResult' || lookups.has(String(message.content['toolCallId'])))
|
|
23
26
|
continue;
|
|
24
27
|
const tokens = sentCharacters(message) / 4;
|
|
25
28
|
if (kept < keptTokens) {
|
|
@@ -32,22 +35,35 @@ export function clearable(history) {
|
|
|
32
35
|
}
|
|
33
36
|
return found;
|
|
34
37
|
}
|
|
38
|
+
const sizeOf = (messages) => messages.reduce((total, message) => total + sentCharacters(message), 0) / 4;
|
|
39
|
+
/** The last message of the newest turn that may be collapsed now, and how many tokens collapsing up to it takes out. */
|
|
40
|
+
async function collapsible(ctx, sessionId, history) {
|
|
41
|
+
const turns = collapsibleTurns(await allDocs((options) => records(ctx.store).turns.find({ sessionId }, options)));
|
|
42
|
+
const ids = new Set(turns);
|
|
43
|
+
const seq = history.messages.reduce((last, message) => (message.turnId !== null && ids.has(message.turnId) ? Math.max(last, message.seq) : last), -1);
|
|
44
|
+
if (seq <= (history.collapsed ?? -1))
|
|
45
|
+
return undefined;
|
|
46
|
+
const region = history.messages.filter((message) => message.seq <= seq);
|
|
47
|
+
return { seq, tokens: sizeOf(region) - sizeOf(collapsedView(region, seq, new Map())) };
|
|
48
|
+
}
|
|
35
49
|
// The time of the chat's newest model call, from the replies it sends.
|
|
36
50
|
const lastCallAt = (history) => {
|
|
37
51
|
const reply = history.messages.findLast((message) => message.kind === 'assistant');
|
|
38
52
|
return reply === undefined ? undefined : Date.parse(reply.createdAt);
|
|
39
53
|
};
|
|
40
|
-
/**
|
|
54
|
+
/** Trims the history when one of the two moments has come; says whether it did. */
|
|
41
55
|
export async function clearOldResults(ctx, session, lease, firstStep, measured) {
|
|
42
56
|
const history = await sentHistory(ctx, session.id, session.nextSeq);
|
|
43
|
-
const
|
|
44
|
-
|
|
57
|
+
const clear = clearable(history);
|
|
58
|
+
const collapse = await collapsible(ctx, session.id, history);
|
|
59
|
+
if (clear === undefined && collapse === undefined)
|
|
45
60
|
return false;
|
|
46
61
|
const last = lastCallAt(history);
|
|
47
62
|
const expired = firstStep && last !== undefined && Date.now() - last > cacheExpiredMs;
|
|
48
63
|
const window = (await modelInfo(ctx, session.model))?.contextWindow;
|
|
49
|
-
const
|
|
50
|
-
const
|
|
64
|
+
const limit = window === undefined ? trimTokens : Math.min(trimTokens, window / 2);
|
|
65
|
+
const worth = (clear?.tokens ?? 0) + (collapse?.tokens ?? 0);
|
|
66
|
+
const full = worth > worthTokens && promptTokens(measured.prompt, history, measured).tokens > limit;
|
|
51
67
|
if (!expired && !full)
|
|
52
68
|
return false;
|
|
53
69
|
return ctx.store.transaction((tx) => {
|
|
@@ -55,7 +71,7 @@ export async function clearOldResults(ctx, session, lease, firstStep, measured)
|
|
|
55
71
|
const store = txRecords(tx);
|
|
56
72
|
if (liveStep(store, lease, lease.jobId) === undefined)
|
|
57
73
|
return false;
|
|
58
|
-
store.sessions.update(session.id, { clearedThroughSeq:
|
|
74
|
+
store.sessions.update(session.id, { ...(clear === undefined ? {} : { clearedThroughSeq: clear.seq }), ...(collapse === undefined ? {} : { collapsedThroughSeq: collapse.seq }) });
|
|
59
75
|
return true;
|
|
60
76
|
});
|
|
61
77
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"clear-results.js","sourceRoot":"","sources":["../../src/turns/clear-results.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,SAAS,EAAE,MAAM,yBAAyB,CAAC;
|
|
1
|
+
{"version":3,"file":"clear-results.js","sourceRoot":"","sources":["../../src/turns/clear-results.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import type { Stored } from '@kvman/sdk';
|
|
2
|
+
import type { MessageDoc, TurnDoc } from '../schemas/records.ts';
|
|
3
|
+
/** The ids of the `mcp tools` calls among the messages: their results are never cleared or collapsed. */
|
|
4
|
+
export declare function toolsLookups(messages: readonly Pick<MessageDoc, 'kind' | 'content'>[]): Set<string>;
|
|
5
|
+
/**
|
|
6
|
+
* The turns that may be collapsed: every ended turn up to and including the newest that ended `done`, except the newest
|
|
7
|
+
* ended turn, so a "Continue." after a failure or a stop finds its turn whole.
|
|
8
|
+
*/
|
|
9
|
+
export declare function collapsibleTurns(turns: readonly Pick<Stored<TurnDoc>, 'id' | 'outcome' | 'startedAt'>[]): string[];
|
|
10
|
+
/** The messages as they are sent with the turns at or before `collapsedThrough` collapsed. */
|
|
11
|
+
export declare function collapsedView(messages: readonly Stored<MessageDoc>[], collapsedThrough: number, files: ReadonlyMap<string, readonly string[]>): Stored<MessageDoc>[];
|
|
12
|
+
//# sourceMappingURL=collapse.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"collapse.d.ts","sourceRoot":"","sources":["../../src/turns/collapse.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,YAAY,CAAC;AAEzC,OAAO,KAAK,EAAE,UAAU,EAAE,OAAO,EAAE,MAAM,uBAAuB,CAAC;AAoBjE,yGAAyG;AACzG,wBAAgB,YAAY,CAAC,QAAQ,EAAE,SAAS,IAAI,CAAC,UAAU,EAAE,MAAM,GAAG,SAAS,CAAC,EAAE,GAAG,GAAG,CAAC,MAAM,CAAC,CAInG;AAID;;;GAGG;AACH,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,SAAS,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE,IAAI,GAAG,SAAS,GAAG,WAAW,CAAC,EAAE,GAAG,MAAM,EAAE,CAIlH;AAsBD,8FAA8F;AAC9F,wBAAgB,aAAa,CAAC,QAAQ,EAAE,SAAS,MAAM,CAAC,UAAU,CAAC,EAAE,EAAE,gBAAgB,EAAE,MAAM,EAAE,KAAK,EAAE,WAAW,CAAC,MAAM,EAAE,SAAS,MAAM,EAAE,CAAC,GAAG,MAAM,CAAC,UAAU,CAAC,EAAE,CASpK"}
|
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
const fields = (value) => (typeof value === 'object' && value !== null && !Array.isArray(value) ? value : {});
|
|
2
|
+
const blocksOf = (message) => {
|
|
3
|
+
const content = message.content['content'];
|
|
4
|
+
return Array.isArray(content) ? content : [];
|
|
5
|
+
};
|
|
6
|
+
const isToolsLookupBlock = (block) => {
|
|
7
|
+
const call = fields(block);
|
|
8
|
+
const args = fields(call['arguments']);
|
|
9
|
+
return call['type'] === 'toolCall' && args['connector'] === 'mcp' && args['command'] === 'tools';
|
|
10
|
+
};
|
|
11
|
+
/** The ids of the `mcp tools` calls among the messages: their results are never cleared or collapsed. */
|
|
12
|
+
export function toolsLookups(messages) {
|
|
13
|
+
const ids = new Set();
|
|
14
|
+
for (const message of messages)
|
|
15
|
+
if (message.kind === 'assistant')
|
|
16
|
+
for (const block of blocksOf(message))
|
|
17
|
+
if (isToolsLookupBlock(block))
|
|
18
|
+
ids.add(String(fields(block)['id']));
|
|
19
|
+
return ids;
|
|
20
|
+
}
|
|
21
|
+
const textOfBlocks = (blocks) => blocks.flatMap((block) => (fields(block)['type'] === 'text' && typeof fields(block)['text'] === 'string' ? [String(fields(block)['text'])] : [])).join('\n');
|
|
22
|
+
/**
|
|
23
|
+
* The turns that may be collapsed: every ended turn up to and including the newest that ended `done`, except the newest
|
|
24
|
+
* ended turn, so a "Continue." after a failure or a stop finds its turn whole.
|
|
25
|
+
*/
|
|
26
|
+
export function collapsibleTurns(turns) {
|
|
27
|
+
const ended = turns.filter((turn) => turn.outcome !== null).sort((a, b) => a.startedAt.localeCompare(b.startedAt));
|
|
28
|
+
const newestDone = ended.findLastIndex((turn) => turn.outcome === 'done');
|
|
29
|
+
return ended.slice(0, Math.min(newestDone + 1, ended.length - 1)).map((turn) => turn.id);
|
|
30
|
+
}
|
|
31
|
+
// Each collapsed turn's final answer: its last reply with text.
|
|
32
|
+
function finalAnswers(messages, collapsedThrough) {
|
|
33
|
+
const last = new Map();
|
|
34
|
+
for (const message of messages)
|
|
35
|
+
if (message.seq <= collapsedThrough && message.kind === 'assistant' && message.turnId !== null && textOfBlocks(blocksOf(message)).trim() !== '')
|
|
36
|
+
last.set(message.turnId, message.id);
|
|
37
|
+
return last;
|
|
38
|
+
}
|
|
39
|
+
const filesLine = (paths) => (paths === undefined || paths.length === 0 ? '' : `\n\n[kvman: files changed in this turn: ${paths.join(', ')}]`);
|
|
40
|
+
function collapsedMessage(message, finals, lookups, files) {
|
|
41
|
+
if (message.kind === 'user')
|
|
42
|
+
return message.source?.kind === 'user' ? message : undefined;
|
|
43
|
+
if (message.kind === 'toolResult')
|
|
44
|
+
return lookups.has(String(message.content['toolCallId'])) ? message : undefined;
|
|
45
|
+
if (message.kind !== 'assistant')
|
|
46
|
+
return undefined;
|
|
47
|
+
const blocks = blocksOf(message);
|
|
48
|
+
const kept = blocks.filter(isToolsLookupBlock);
|
|
49
|
+
const final = message.turnId !== null && finals.get(message.turnId) === message.id;
|
|
50
|
+
if (final)
|
|
51
|
+
return { ...message, content: { ...message.content, content: [{ type: 'text', text: `${textOfBlocks(blocks)}${filesLine(files.get(message.turnId ?? ''))}` }] } };
|
|
52
|
+
return kept.length === 0 ? undefined : { ...message, content: { ...message.content, content: kept } };
|
|
53
|
+
}
|
|
54
|
+
/** The messages as they are sent with the turns at or before `collapsedThrough` collapsed. */
|
|
55
|
+
export function collapsedView(messages, collapsedThrough, files) {
|
|
56
|
+
if (collapsedThrough < 0)
|
|
57
|
+
return [...messages];
|
|
58
|
+
const finals = finalAnswers(messages, collapsedThrough);
|
|
59
|
+
const lookups = toolsLookups(messages);
|
|
60
|
+
return messages.flatMap((message) => {
|
|
61
|
+
if (message.seq > collapsedThrough)
|
|
62
|
+
return [message];
|
|
63
|
+
const shown = collapsedMessage(message, finals, lookups, files);
|
|
64
|
+
return shown === undefined ? [] : [shown];
|
|
65
|
+
});
|
|
66
|
+
}
|
|
67
|
+
//# sourceMappingURL=collapse.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"collapse.js","sourceRoot":"","sources":["../../src/turns/collapse.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { type Ctx, type Stored } from '@kvman/sdk';
|
|
2
|
+
import type { JsonValue } from '../connector-call.ts';
|
|
3
|
+
import type { SessionDoc } from '../schemas/records.ts';
|
|
4
|
+
import type { StepLease } from './step-claim.ts';
|
|
5
|
+
/** The scheduled tries at most, one every 2 minutes. */
|
|
6
|
+
export declare const connectionTries = 30;
|
|
7
|
+
/** Whether the turn has used every try, so a failure ends it as before. */
|
|
8
|
+
export declare const triesUsed: (waits: number) => boolean;
|
|
9
|
+
/** Settles the step as waiting for the connection, and schedules its next try. */
|
|
10
|
+
export declare function waitForConnection(ctx: Ctx, session: Stored<SessionDoc>, lease: StepLease, params: Record<string, JsonValue>): Promise<void>;
|
|
11
|
+
export declare function registerConnectionResume(ctx: Ctx): void;
|
|
12
|
+
//# sourceMappingURL=connection-wait.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"connection-wait.d.ts","sourceRoot":"","sources":["../../src/turns/connection-wait.ts"],"names":[],"mappings":"AAAA,OAAO,EAAK,KAAK,GAAG,EAAE,KAAK,MAAM,EAAE,MAAM,YAAY,CAAC;AACtD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AACtD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC;AAKxD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAQjD,wDAAwD;AACxD,eAAO,MAAM,eAAe,KAAK,CAAC;AAKlC,2EAA2E;AAC3E,eAAO,MAAM,SAAS,GAAI,OAAO,MAAM,KAAG,OAAmC,CAAC;AAE9E,kFAAkF;AAClF,wBAAsB,iBAAiB,CAAC,GAAG,EAAE,GAAG,EAAE,OAAO,EAAE,MAAM,CAAC,UAAU,CAAC,EAAE,KAAK,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,CAajJ;AAED,wBAAgB,wBAAwB,CAAC,GAAG,EAAE,GAAG,GAAG,IAAI,CAkBvD"}
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
import { z } from '@kvman/sdk';
|
|
2
|
+
import { now } from "../sessions/session-lookup.js";
|
|
3
|
+
import { txRecords } from "../store/collections.js";
|
|
4
|
+
import { appendNotice } from "./history.js";
|
|
5
|
+
import { dispatchStep } from "./start-turn.js";
|
|
6
|
+
import { liveStep, prepareStep, settleStep } from "./step-intents.js";
|
|
7
|
+
// A turn whose model call still fails for a temporary reason after its tries waits for the connection (plan 08 §8.1,
|
|
8
|
+
// ADR 0108, 15): the notice CONNECTION_WAITING once, and a schedule that runs the step again every 2 minutes, 30 times
|
|
9
|
+
// at most (an hour), counted on the turn, so the wait needs no clock of its own. A message from the person, or Stop,
|
|
10
|
+
// ends the wait at once; a scheduled try then finds the turn no longer waiting and does nothing.
|
|
11
|
+
/** The scheduled tries at most, one every 2 minutes. */
|
|
12
|
+
export const connectionTries = 30;
|
|
13
|
+
const tryEveryMs = 120_000;
|
|
14
|
+
const resumeInput = z.object({ sessionId: z.string(), turnId: z.string() });
|
|
15
|
+
/** Whether the turn has used every try, so a failure ends it as before. */
|
|
16
|
+
export const triesUsed = (waits) => waits >= connectionTries;
|
|
17
|
+
/** Settles the step as waiting for the connection, and schedules its next try. */
|
|
18
|
+
export async function waitForConnection(ctx, session, lease, params) {
|
|
19
|
+
const waiting = await ctx.store.transaction((tx) => {
|
|
20
|
+
ctx.job.signal.throwIfAborted();
|
|
21
|
+
const store = txRecords(tx);
|
|
22
|
+
const live = liveStep(store, lease, lease.jobId);
|
|
23
|
+
if (live === undefined)
|
|
24
|
+
return false;
|
|
25
|
+
if (live.turn.connectionWaits === 0)
|
|
26
|
+
appendNotice(store, live.session, 'CONNECTION_WAITING', params, lease.turnId);
|
|
27
|
+
store.turns.update(lease.turnId, { connectionWaits: live.turn.connectionWaits + 1 });
|
|
28
|
+
settleStep(store, lease, lease.jobId);
|
|
29
|
+
store.sessions.update(session.id, { status: 'waiting', stepJobId: null, stepIntentId: null, updatedAt: now() });
|
|
30
|
+
return true;
|
|
31
|
+
});
|
|
32
|
+
if (waiting)
|
|
33
|
+
await ctx.schedule('kvcoder.turn.resume', { sessionId: session.id, turnId: lease.turnId }, { at: new Date(Date.now() + tryEveryMs), key: `connection-${session.id}` });
|
|
34
|
+
}
|
|
35
|
+
export function registerConnectionResume(ctx) {
|
|
36
|
+
ctx.registerCommand('kvcoder.turn.resume', {
|
|
37
|
+
description: 'Runs again the step of a turn that waits for the connection.',
|
|
38
|
+
input: resumeInput,
|
|
39
|
+
output: z.object({}),
|
|
40
|
+
handle: async ({ sessionId, turnId }) => {
|
|
41
|
+
const identity = await ctx.store.transaction((tx) => {
|
|
42
|
+
const store = txRecords(tx);
|
|
43
|
+
const session = store.sessions.get(sessionId);
|
|
44
|
+
const turn = store.turns.get(turnId);
|
|
45
|
+
if (session?.turnId !== turnId || session.status !== 'waiting' || turn?.outcome !== null || turn.pending.length > 0 || turn.connectionWaits === 0)
|
|
46
|
+
return undefined;
|
|
47
|
+
store.sessions.update(sessionId, { status: 'running', updatedAt: now() });
|
|
48
|
+
return prepareStep(store, sessionId, turnId);
|
|
49
|
+
});
|
|
50
|
+
if (identity !== undefined)
|
|
51
|
+
await dispatchStep(ctx, identity, true);
|
|
52
|
+
return {};
|
|
53
|
+
},
|
|
54
|
+
});
|
|
55
|
+
}
|
|
56
|
+
//# sourceMappingURL=connection-wait.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"connection-wait.js","sourceRoot":"","sources":["../../src/turns/connection-wait.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { now } from "../sessions/session-lookup.js";
|
|
2
|
-
import {
|
|
2
|
+
import { appendEndingInTx, backgroundText } from "./background.js";
|
|
3
3
|
import { childResultInTx } from "./child-result.js";
|
|
4
4
|
import { appendEndedCalls } from "./ended-calls.js";
|
|
5
5
|
import { appendNotice, appendQueued } from "./history.js";
|
|
@@ -25,7 +25,7 @@ function deliverChild(store, child, outcome, by, notice) {
|
|
|
25
25
|
const [entry] = store.background.find({ sessionId: parent.id, ref: child.id }, { limit: 1 });
|
|
26
26
|
if (entry === undefined)
|
|
27
27
|
return undefined;
|
|
28
|
-
const turnId =
|
|
28
|
+
const turnId = appendEndingInTx(store, parent.id, { kind: 'subagent', sessionId: child.id }, backgroundText(entry.call, child.id, childResultInTx(store, child.id, outcome).text), by === 'step');
|
|
29
29
|
return turnId === undefined ? undefined : { turn: { sessionId: parent.id, turnId } };
|
|
30
30
|
}
|
|
31
31
|
/** Commits terminal state and a child's delivery to its parent; cancellation, points and enqueueing remain outside SQLite. */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"end-turn-state.js","sourceRoot":"","sources":["../../src/turns/end-turn-state.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,GAAG,EAAE,MAAM,+BAA+B,CAAC;AAEpD,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"end-turn-state.js","sourceRoot":"","sources":["../../src/turns/end-turn-state.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"end-turn.d.ts","sourceRoot":"","sources":["../../src/turns/end-turn.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,YAAY,CAAC;AAGtC,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,uBAAuB,CAAC;
|
|
1
|
+
{"version":3,"file":"end-turn.d.ts","sourceRoot":"","sources":["../../src/turns/end-turn.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,YAAY,CAAC;AAGtC,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,uBAAuB,CAAC;AAKrD,OAAO,EAAgB,KAAK,YAAY,EAAE,KAAK,OAAO,EAAE,KAAK,SAAS,EAAE,KAAK,MAAM,EAAE,MAAM,qBAAqB,CAAC;AACjH,YAAY,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAC;AAQ3D,wBAAsB,OAAO,CAAC,GAAG,EAAE,GAAG,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,EAAE,EAAE,OAAO,EAAE,MAAM,CAAC,EAAE,MAAM,EAAE,SAAS,CAAC,EAAE,YAAY,GAAG,OAAO,CAAC,OAAO,CAAC,CAKrK;AAWD,yFAAyF;AACzF,wBAAsB,WAAW,CAAC,GAAG,EAAE,GAAG,EAAE,KAAK,EAAE,SAAS,GAAG,OAAO,CAAC,IAAI,CAAC,CAW3E;AAKD,wBAAsB,UAAU,CAAC,GAAG,EAAE,GAAG,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,IAAI,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAU9G;AAED,0DAA0D;AAC1D,wBAAsB,WAAW,CAAC,GAAG,EAAE,GAAG,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,GAAG,OAAO,CAAC;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,OAAO,CAAA;CAAE,CAAC,CAE1H"}
|
package/dist/turns/end-turn.js
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { dropRun } from "../delegate/runs.js";
|
|
2
2
|
import { firePoint } from "../registry/session-points.js";
|
|
3
3
|
import { records, txRecords } from "../store/collections.js";
|
|
4
|
+
import { closeTurnServers } from "../mcp/turn-servers.js";
|
|
4
5
|
import { cancelStepJob } from "./cancel-step-job.js";
|
|
5
6
|
import { childResultInTx } from "./child-result.js";
|
|
6
7
|
import { endTurnState } from "./end-turn-state.js";
|
|
@@ -33,6 +34,8 @@ export async function notifyEnded(ctx, ended) {
|
|
|
33
34
|
if (session.parentId === null && session.autoTitle && session.endedTurns === 1)
|
|
34
35
|
await ctx.execAsync('kvcoder.session.title', { sessionId: session.id });
|
|
35
36
|
await stopDependents(ctx, ended);
|
|
37
|
+
// The MCP servers the turn kept end with it (ADR 0108, 12).
|
|
38
|
+
await closeTurnServers(ctx, turnId);
|
|
36
39
|
if (delivery === undefined)
|
|
37
40
|
return;
|
|
38
41
|
if ('step' in delivery)
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"end-turn.js","sourceRoot":"","sources":["../../src/turns/end-turn.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"end-turn.js","sourceRoot":"","sources":["../../src/turns/end-turn.ts"],"names":[],"mappings":"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"}
|
package/dist/turns/history.d.ts
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import type { Stored } from '@kvman/sdk';
|
|
2
2
|
import type { JsonValue, MessageDoc, SessionDoc, Source, Usage } from '../schemas/records.ts';
|
|
3
3
|
import type { TxRecords } from '../store/collections.ts';
|
|
4
|
+
import type { SentRecord } from '../schemas/sent-record.ts';
|
|
4
5
|
export type NewMessage = {
|
|
5
6
|
kind: MessageDoc['kind'];
|
|
6
7
|
content: Record<string, JsonValue>;
|
|
@@ -11,6 +12,7 @@ export type NewMessage = {
|
|
|
11
12
|
model?: string | null;
|
|
12
13
|
usage?: Usage | null;
|
|
13
14
|
basis?: string | null;
|
|
15
|
+
sent?: SentRecord | null;
|
|
14
16
|
durationMs?: number | null;
|
|
15
17
|
};
|
|
16
18
|
/** Messages are found in blocks of 500 by `seq`, since the store pages only by equality. */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"history.d.ts","sourceRoot":"","sources":["../../src/turns/history.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,YAAY,CAAC;AACzC,OAAO,KAAK,EAAE,SAAS,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,uBAAuB,CAAC;AAC9F,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yBAAyB,CAAC;
|
|
1
|
+
{"version":3,"file":"history.d.ts","sourceRoot":"","sources":["../../src/turns/history.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,YAAY,CAAC;AACzC,OAAO,KAAK,EAAE,SAAS,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,uBAAuB,CAAC;AAC9F,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yBAAyB,CAAC;AAEzD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,2BAA2B,CAAC;AAI5D,MAAM,MAAM,UAAU,GAAG;IACvB,IAAI,EAAE,UAAU,CAAC,MAAM,CAAC,CAAC;IACzB,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;IACnC,MAAM,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACvB,MAAM,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACvB,OAAO,CAAC,EAAE,SAAS,MAAM,EAAE,GAAG,IAAI,CAAC;IACnC,SAAS,CAAC,EAAE,SAAS,MAAM,EAAE,GAAG,IAAI,CAAC;IACrC,KAAK,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACtB,KAAK,CAAC,EAAE,KAAK,GAAG,IAAI,CAAC;IACrB,KAAK,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACtB,IAAI,CAAC,EAAE,UAAU,GAAG,IAAI,CAAC;IACzB,UAAU,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CAC5B,CAAC;AAEF,4FAA4F;AAC5F,eAAO,MAAM,SAAS,MAAM,CAAC;AAE7B,eAAO,MAAM,OAAO,GAAI,KAAK,MAAM,KAAG,MAAqC,CAAC;AAE5E,wBAAgB,aAAa,CAAC,EAAE,EAAE,SAAS,EAAE,OAAO,EAAE,MAAM,CAAC,UAAU,CAAC,EAAE,OAAO,EAAE,UAAU,GAAG,MAAM,CAAC,UAAU,CAAC,CAoBjH;AAED,iDAAiD;AACjD,kHAAkH;AAClH,wBAAgB,WAAW,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,GAAE,SAAS,MAAM,EAAO,GAAG,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,CAEpG;AAED,4GAA4G;AAC5G,wBAAgB,YAAY,CAAC,EAAE,EAAE,SAAS,EAAE,OAAO,EAAE,MAAM,CAAC,UAAU,CAAC,EAAE,MAAM,EAAE,MAAM,GAAG,IAAI,GAAG,MAAM,CAYtG;AAED,sGAAsG;AACtG,wBAAgB,YAAY,CAAC,EAAE,EAAE,SAAS,EAAE,OAAO,EAAE,MAAM,CAAC,UAAU,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,GAAE,MAAM,CAAC,MAAM,EAAE,SAAS,CAAM,EAAE,MAAM,GAAE,MAAM,GAAG,IAAW,GAAG,IAAI,CAEjK;AAID,oBAAoB;AACpB,eAAO,MAAM,OAAO,QAAO,KAAsB,CAAC;AAElD,wBAAgB,QAAQ,CAAC,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,GAAG,KAAK,CAE3D"}
|
package/dist/turns/history.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"history.js","sourceRoot":"","sources":["../../src/turns/history.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,GAAG,EAAE,MAAM,+BAA+B,CAAC;
|
|
1
|
+
{"version":3,"file":"history.js","sourceRoot":"","sources":["../../src/turns/history.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,10 +1,14 @@
|
|
|
1
1
|
import { type Ctx, type Json, type Stored } from '@kvman/sdk';
|
|
2
2
|
import type { MessageDoc } from '../schemas/records.ts';
|
|
3
|
-
/**
|
|
3
|
+
/**
|
|
4
|
+
* The summary, the model-visible messages after it as they are sent (finished turns collapsed, ADR 0108, 5), the last
|
|
5
|
+
* result sent cleared (ADR 0094, 1), and the last message of the collapsed turns (-1 for none).
|
|
6
|
+
*/
|
|
4
7
|
export type History = {
|
|
5
8
|
summary: Stored<MessageDoc> | undefined;
|
|
6
9
|
messages: Stored<MessageDoc>[];
|
|
7
10
|
cleared: number;
|
|
11
|
+
collapsed?: number;
|
|
8
12
|
};
|
|
9
13
|
/** The summary and the model-visible messages after it. */
|
|
10
14
|
export declare function sentHistory(ctx: Ctx, sessionId: string, nextSeq: number): Promise<History>;
|
|
@@ -26,7 +30,7 @@ export declare function modelMessages(ctx: Ctx, history: History): Promise<({
|
|
|
26
30
|
})[];
|
|
27
31
|
timestamp: number;
|
|
28
32
|
} | {
|
|
29
|
-
stopReason: "error" | "length" | "
|
|
33
|
+
stopReason: "error" | "length" | "toolUse" | "stop" | "aborted";
|
|
30
34
|
role: "assistant";
|
|
31
35
|
content: ({
|
|
32
36
|
type: "text";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"model-context.d.ts","sourceRoot":"","sources":["../../src/turns/model-context.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"model-context.d.ts","sourceRoot":"","sources":["../../src/turns/model-context.ts"],"names":[],"mappings":"AACA,OAAO,EAAgB,KAAK,GAAG,EAAE,KAAK,IAAI,EAAE,KAAK,MAAM,EAAE,MAAM,YAAY,CAAC;AAE5E,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC;AAcxD;;;GAGG;AACH,MAAM,MAAM,OAAO,GAAG;IAAE,OAAO,EAAE,MAAM,CAAC,UAAU,CAAC,GAAG,SAAS,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAC,UAAU,CAAC,EAAE,CAAC;IAAC,OAAO,EAAE,MAAM,CAAC;IAAC,SAAS,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC;AAgBvI,2DAA2D;AAC3D,wBAAsB,WAAW,CAAC,GAAG,EAAE,GAAG,EAAE,SAAS,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAUhG;AAED,6DAA6D;AAC7D,wBAAgB,MAAM,CAAC,OAAO,EAAE,IAAI,GAAG,SAAS,GAAG,MAAM,CAMxD;AAiED,+GAA+G;AAC/G,wBAAgB,WAAW,CAAC,OAAO,EAAE,IAAI,CAAC,UAAU,EAAE,SAAS,CAAC,GAAG,SAAS,GAAG,MAAM,CAIpF;AAED,6DAA6D;AAC7D,wBAAsB,aAAa,CAAC,GAAG,EAAE,GAAG,EAAE,OAAO,EAAE,OAAO;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;MAc7D"}
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import path from 'node:path';
|
|
1
2
|
import { ProblemError } from '@kvman/sdk';
|
|
2
3
|
import { messageSchema } from '@kvman/kvai/messages';
|
|
3
4
|
import { withCallingReply } from "./call-groups.js";
|
|
@@ -5,18 +6,33 @@ import { blockSize } from "./history.js";
|
|
|
5
6
|
import { latestSummary, messagesFrom } from "./message-blocks.js";
|
|
6
7
|
import { messageStamp } from "./message-stamp.js";
|
|
7
8
|
import { callNames, clearedCalls, clearedPayload, clearedText, isCleared } from "./cleared-results.js";
|
|
9
|
+
import { collapsedView, toolsLookups } from "./collapse.js";
|
|
10
|
+
import { allDocs } from "../store/all-docs.js";
|
|
8
11
|
import { records } from "../store/collections.js";
|
|
12
|
+
// The files each turn changed last, in the workspace folder's terms, for a collapsed turn's line (ADR 0108, 5).
|
|
13
|
+
async function changedFiles(ctx, sessionId) {
|
|
14
|
+
const files = new Map();
|
|
15
|
+
const workspace = ctx.job.workspace.path;
|
|
16
|
+
for (const change of await allDocs((options) => records(ctx.store).fileChanges.find({ sessionId }, options))) {
|
|
17
|
+
const inside = path.relative(workspace, change.path);
|
|
18
|
+
const shown = inside === '' || inside.startsWith('..') || path.isAbsolute(inside) ? change.path : inside.split(path.sep).join('/');
|
|
19
|
+
if (change.turnId !== null)
|
|
20
|
+
files.set(change.turnId, [...(files.get(change.turnId) ?? []), shown].sort());
|
|
21
|
+
}
|
|
22
|
+
return files;
|
|
23
|
+
}
|
|
9
24
|
const sent = new Set(['user', 'assistant', 'toolResult']);
|
|
10
25
|
/** The summary and the model-visible messages after it. */
|
|
11
26
|
export async function sentHistory(ctx, sessionId, nextSeq) {
|
|
12
27
|
const summary = await latestSummary(ctx, sessionId);
|
|
13
|
-
const
|
|
28
|
+
const session = await records(ctx.store).sessions.get(sessionId);
|
|
29
|
+
const cleared = session?.clearedThroughSeq ?? -1;
|
|
30
|
+
const collapsed = session?.collapsedThroughSeq ?? -1;
|
|
14
31
|
const from = summary === undefined ? 0 : Number(summary.content['coversThroughSeq'] ?? -1) + 1;
|
|
15
|
-
const
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
return { summary, messages: withCallingReply(before, messages), cleared };
|
|
32
|
+
const read = (await messagesFrom(ctx, sessionId, from, nextSeq)).filter((message) => sent.has(message.kind));
|
|
33
|
+
const whole = read[0]?.kind !== 'toolResult' ? read : withCallingReply((await messagesFrom(ctx, sessionId, Math.max(from - blockSize, 0), from)).filter((message) => sent.has(message.kind)), read);
|
|
34
|
+
const messages = collapsed < from ? whole : collapsedView(whole, collapsed, await changedFiles(ctx, sessionId));
|
|
35
|
+
return { summary, messages, cleared, collapsed };
|
|
20
36
|
}
|
|
21
37
|
/** A message's text: a string, or its text blocks joined. */
|
|
22
38
|
export function textOf(content) {
|
|
@@ -100,14 +116,16 @@ export function summaryText(summary) {
|
|
|
100
116
|
export async function modelMessages(ctx, history) {
|
|
101
117
|
const lead = history.summary === undefined ? [] : [{ role: 'user', content: `${summaryLead}\n${summaryText(history.summary)}`, timestamp: Date.parse(history.summary.createdAt) }];
|
|
102
118
|
const names = callNames(history.messages);
|
|
103
|
-
|
|
119
|
+
// An `mcp tools` lookup is never cleared, so a server's tools are looked up once a chat (ADR 0108, 7).
|
|
120
|
+
const lookups = toolsLookups(history.messages);
|
|
121
|
+
const cleared = new Set([...clearedCalls(history.messages, history.cleared)].filter((id) => !lookups.has(id)));
|
|
104
122
|
const rest = await Promise.all(history.messages.map((message) => {
|
|
105
123
|
if (message.kind === 'user')
|
|
106
124
|
return userMessage(ctx, message);
|
|
107
125
|
if (message.kind === 'assistant')
|
|
108
126
|
return Promise.resolve(assistantMessage(message, cleared));
|
|
109
127
|
// An old result is sent as a line that names its call (ADR 0094, 1).
|
|
110
|
-
if (isCleared(message, history.cleared))
|
|
128
|
+
if (isCleared(message, history.cleared) && !lookups.has(String(message.content['toolCallId'])))
|
|
111
129
|
return Promise.resolve({ ...message.content, content: [{ type: 'text', text: clearedText(names.get(String(message.content['toolCallId'])) ?? 'a call') }] });
|
|
112
130
|
return Promise.resolve(message.content);
|
|
113
131
|
}));
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"model-context.js","sourceRoot":"","sources":["../../src/turns/model-context.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAoC,MAAM,YAAY,CAAC;AAC5E,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAErD,OAAO,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AACpD,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AACzC,OAAO,EAAE,aAAa,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AAClE,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAClD,OAAO,EAAE,SAAS,EAAE,YAAY,EAAE,cAAc,EAAE,WAAW,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AACvG,OAAO,EAAE,OAAO,EAAE,MAAM,yBAAyB,CAAC;
|
|
1
|
+
{"version":3,"file":"model-context.js","sourceRoot":"","sources":["../../src/turns/model-context.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,4 +1,7 @@
|
|
|
1
|
-
import { type Ctx, type InputOf, type OutputOf } from '@kvman/sdk';
|
|
1
|
+
import { ProblemError, type Ctx, type InputOf, type OutputOf } from '@kvman/sdk';
|
|
2
2
|
import { type StepLease } from './step-claim.ts';
|
|
3
|
-
|
|
3
|
+
/** A failure that may pass: a rate limit, or a provider error marked temporary. */
|
|
4
|
+
export declare const transient: (error: ProblemError) => boolean;
|
|
5
|
+
/** With `once`, as a turn waiting for the connection does, the call is tried once (ADR 0108, 15). */
|
|
6
|
+
export declare function completeWithRetries(ctx: Ctx, input: InputOf<'kvai.complete'>, lease: StepLease | undefined, once?: boolean): Promise<OutputOf<'kvai.complete'>>;
|
|
4
7
|
//# sourceMappingURL=model-retry.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"model-retry.d.ts","sourceRoot":"","sources":["../../src/turns/model-retry.ts"],"names":[],"mappings":"AAAA,OAAO,
|
|
1
|
+
{"version":3,"file":"model-retry.d.ts","sourceRoot":"","sources":["../../src/turns/model-retry.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,KAAK,GAAG,EAAE,KAAK,OAAO,EAAE,KAAK,QAAQ,EAAE,MAAM,YAAY,CAAC;AAIjF,OAAO,EAAe,KAAK,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAS9D,mFAAmF;AACnF,eAAO,MAAM,SAAS,GAAI,OAAO,YAAY,KAAG,OAAuJ,CAAC;AAExM,qGAAqG;AACrG,wBAAsB,mBAAmB,CAAC,GAAG,EAAE,GAAG,EAAE,KAAK,EAAE,OAAO,CAAC,eAAe,CAAC,EAAE,KAAK,EAAE,SAAS,GAAG,SAAS,EAAE,IAAI,UAAQ,GAAG,OAAO,CAAC,QAAQ,CAAC,eAAe,CAAC,CAAC,CAcnK"}
|