@kvman/kvcoder 0.1.3 → 0.1.5
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/api.d.ts +11 -0
- package/dist/api.d.ts.map +1 -1
- package/dist/connector-call.d.ts +1 -1
- package/dist/connector-call.d.ts.map +1 -1
- package/dist/connector-call.js +2 -2
- package/dist/connector-call.js.map +1 -1
- package/dist/connectors/fs.d.ts.map +1 -1
- package/dist/connectors/fs.js +12 -3
- package/dist/connectors/fs.js.map +1 -1
- package/dist/files/edit-text.d.ts +2 -1
- package/dist/files/edit-text.d.ts.map +1 -1
- package/dist/files/edit-text.js +12 -6
- package/dist/files/edit-text.js.map +1 -1
- package/dist/files/search-text.d.ts +6 -2
- package/dist/files/search-text.d.ts.map +1 -1
- package/dist/files/search-text.js +14 -6
- package/dist/files/search-text.js.map +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +2 -0
- package/dist/index.js.map +1 -1
- package/dist/messages/fitting-messages.d.ts +7 -0
- package/dist/messages/fitting-messages.d.ts.map +1 -0
- package/dist/messages/fitting-messages.js +19 -0
- package/dist/messages/fitting-messages.js.map +1 -0
- package/dist/messages/register-messages.d.ts.map +1 -1
- package/dist/messages/register-messages.js +9 -5
- package/dist/messages/register-messages.js.map +1 -1
- package/dist/prompt/build-prompt.d.ts.map +1 -1
- package/dist/prompt/build-prompt.js +1 -0
- package/dist/prompt/build-prompt.js.map +1 -1
- package/dist/prompt/working-method.js +1 -1
- package/dist/prompt/working-method.js.map +1 -1
- package/dist/sessions/register-context.d.ts +3 -0
- package/dist/sessions/register-context.d.ts.map +1 -0
- package/dist/sessions/register-context.js +23 -0
- package/dist/sessions/register-context.js.map +1 -0
- package/dist/sessions/register-sessions.js +1 -1
- package/dist/sessions/register-sessions.js.map +1 -1
- package/dist/turns/compaction.d.ts +4 -0
- package/dist/turns/compaction.d.ts.map +1 -1
- package/dist/turns/compaction.js +32 -25
- package/dist/turns/compaction.js.map +1 -1
- package/dist/turns/message-stamp.d.ts +3 -0
- package/dist/turns/message-stamp.d.ts.map +1 -0
- package/dist/turns/message-stamp.js +16 -0
- package/dist/turns/message-stamp.js.map +1 -0
- package/dist/turns/model-context.d.ts.map +1 -1
- package/dist/turns/model-context.js +10 -2
- package/dist/turns/model-context.js.map +1 -1
- package/dist/turns/read-again.d.ts +6 -0
- package/dist/turns/read-again.d.ts.map +1 -0
- package/dist/turns/read-again.js +16 -0
- package/dist/turns/read-again.js.map +1 -0
- package/dist/turns/run-command.d.ts.map +1 -1
- package/dist/turns/run-command.js +4 -1
- package/dist/turns/run-command.js.map +1 -1
- package/dist/turns/sent-size.d.ts +4 -0
- package/dist/turns/sent-size.d.ts.map +1 -0
- package/dist/turns/sent-size.js +22 -0
- package/dist/turns/sent-size.js.map +1 -0
- package/dist/turns/settle-calls.d.ts.map +1 -1
- package/dist/turns/settle-calls.js +9 -1
- package/dist/turns/settle-calls.js.map +1 -1
- package/dist/turns/step.js +1 -1
- package/dist/turns/step.js.map +1 -1
- package/dist/web/components/call.css +1 -1
- package/dist/web/components/call.js +30 -21
- package/dist/web/components/connectors.css +1 -1
- package/dist/web/components/conversation.css +1 -1
- package/dist/web/components/conversation.js +766 -668
- package/dist/web/components/mcp-sign-in.css +1 -1
- package/dist/web/components/model.css +1 -1
- package/dist/web/components/question.css +1 -1
- package/dist/web/components/sessions.css +1 -1
- package/docs/connectors.md +1 -1
- package/locales/ar.json +11 -1
- package/locales/en.json +11 -1
- package/package.json +1 -1
|
@@ -14,7 +14,7 @@ const leadMethod = [
|
|
|
14
14
|
"2. Clarify. If the request is unclear, contradicts itself or the code, or leaves out something that changes the result, ask: put each question in its own `ask` call, with all the calls in one reply, and use `ask choice` whenever you offer options, your recommended one first. Don't ask what looking would answer.",
|
|
15
15
|
'3. Plan. Write the plan as the artifact `plan`: the goal, the steps in order as a checklist (☐ to do, ☑ done), what each step uses (a connector from the list below, a worker), which steps can run at the same time, and how you will check each one. Plan only with the connectors and workers you have. Write it in the same reply as your first call. For a large, ambiguous, or risky task, call `ask confirm` on the plan before you start.',
|
|
16
16
|
"4. Execute. Work through the steps, running the independent ones together. Make the smallest change for each step, check it with the project's own check or tests, fix a failure at its cause, and tick the step off with `artifact edit`. Write each file in its own call, with `fs write`. If the facts change, change the plan.",
|
|
17
|
-
'5. Delegate. Hand a separate, self-contained part to a worker of the `delegate` connector when a specialist view or parallel work is worth it; its entry lists the workers and what each is for. Several `delegate run` calls in one reply run in parallel. Brief the worker with the goal, the facts it needs, its limits, and what to return. Read what a worker returns and check it before you rely on it: its work is your responsibility.',
|
|
17
|
+
'5. Delegate. Hand a separate, self-contained part to a worker of the `delegate` connector when a specialist view or parallel work is worth it; its entry lists the workers and what each is for. Several `delegate run` calls in one reply run in parallel. Brief the worker with the goal, the facts it needs, its limits, and what to return. A worker sees none of this conversation and reads again every file it needs, so delegate only what is worth that, and put the paths, the lines that matter, and what you already found in the brief. Read what a worker returns and check it before you rely on it: its work is your responsibility.',
|
|
18
18
|
"6. Finish. The work is done when it is ready for production: it does what was asked, it handles the errors and edge cases that will happen, it follows the project's conventions, its checks and tests pass, and nothing unfinished or temporary is left behind.",
|
|
19
19
|
evidence,
|
|
20
20
|
simplest,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"working-method.js","sourceRoot":"","sources":["../../src/prompt/working-method.ts"],"names":[],"mappings":"AAAA,sHAAsH;AACtH,2GAA2G;AAK3G,MAAM,QAAQ,GAAG,2KAA2K,CAAC;AAC7L,MAAM,QAAQ,GAAG,wIAAwI,CAAC;AAC1J,MAAM,QAAQ,GAAG,kMAAkM,CAAC;AACpN,MAAM,SAAS,GAAG,yHAAyH,CAAC;AAC5I,MAAM,MAAM,GAAG,qFAAqF,CAAC;AACrG,MAAM,OAAO,GAAG,4PAA4P,CAAC;AAC7Q,MAAM,KAAK,GAAG,wDAAwD,CAAC;AACvE,MAAM,iBAAiB,GACrB,8YAA8Y,CAAC;AAEjZ,MAAM,UAAU,GAAG;IACjB,4RAA4R;IAC5R,oTAAoT;IACpT,0TAA0T;IAC1T,mbAAmb;IACnb,oUAAoU;IACpU,
|
|
1
|
+
{"version":3,"file":"working-method.js","sourceRoot":"","sources":["../../src/prompt/working-method.ts"],"names":[],"mappings":"AAAA,sHAAsH;AACtH,2GAA2G;AAK3G,MAAM,QAAQ,GAAG,2KAA2K,CAAC;AAC7L,MAAM,QAAQ,GAAG,wIAAwI,CAAC;AAC1J,MAAM,QAAQ,GAAG,kMAAkM,CAAC;AACpN,MAAM,SAAS,GAAG,yHAAyH,CAAC;AAC5I,MAAM,MAAM,GAAG,qFAAqF,CAAC;AACrG,MAAM,OAAO,GAAG,4PAA4P,CAAC;AAC7Q,MAAM,KAAK,GAAG,wDAAwD,CAAC;AACvE,MAAM,iBAAiB,GACrB,8YAA8Y,CAAC;AAEjZ,MAAM,UAAU,GAAG;IACjB,4RAA4R;IAC5R,oTAAoT;IACpT,0TAA0T;IAC1T,mbAAmb;IACnb,oUAAoU;IACpU,snBAAsnB;IACtnB,kQAAkQ;IAClQ,QAAQ;IACR,QAAQ;IACR,QAAQ;IACR,SAAS;IACT,MAAM;IACN,OAAO;IACP,KAAK;IACL,iBAAiB;CAClB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAEb,MAAM,YAAY,GAAG;IACnB,2IAA2I;IAC3I,wLAAwL;IACxL,0LAA0L;IAC1L,2IAA2I;IAC3I,QAAQ;IACR,QAAQ;IACR,QAAQ;IACR,SAAS;IACT,MAAM;IACN,OAAO;IACP,iBAAiB;CAClB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAEb,0EAA0E;AAC1E,MAAM,UAAU,YAAY,CAAC,IAAU,EAAE,KAAa;IACpD,IAAI,IAAI,KAAK,MAAM;QAAE,OAAO,uLAAuL,KAAK,GAAG,CAAC;IAC5N,OAAO,0EAA0E,KAAK,mDAAmD,CAAC;AAC5I,CAAC;AAED,0CAA0C;AAC1C,MAAM,UAAU,aAAa,CAAC,IAAU;IACtC,OAAO,IAAI,KAAK,MAAM,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,YAAY,CAAC;AACrD,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"register-context.d.ts","sourceRoot":"","sources":["../../src/sessions/register-context.ts"],"names":[],"mappings":"AAAA,OAAO,EAAK,KAAK,GAAG,EAAE,MAAM,YAAY,CAAC;AAUzC,wBAAgB,eAAe,CAAC,GAAG,EAAE,GAAG,GAAG,IAAI,CAa9C"}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import { z } from '@kvman/sdk';
|
|
2
|
+
import { sessionTools } from "../prompt/session-prompt.js";
|
|
3
|
+
import { readSettings } from "../register-settings.js";
|
|
4
|
+
import { promptTokens } from "../turns/compaction.js";
|
|
5
|
+
import { sentHistory } from "../turns/model-context.js";
|
|
6
|
+
import { modelInfo } from "../turns/model-info.js";
|
|
7
|
+
import { findSession } from "./session-lookup.js";
|
|
8
|
+
// `kvcoder.context.get` (plan 08 §8.6; ADR 0034, 9): how full the model's window is, by compaction's own count.
|
|
9
|
+
export function registerContext(ctx) {
|
|
10
|
+
ctx.registerQuery('kvcoder.context.get', {
|
|
11
|
+
description: "Gives the size of a session's prompt in tokens, its model's context window, and the share at which older messages are summarized.",
|
|
12
|
+
input: z.object({ sessionId: z.string() }),
|
|
13
|
+
output: z.object({ tokens: z.number().int().nonnegative(), window: z.number().int().positive().nullable(), compactAt: z.number() }),
|
|
14
|
+
public: true,
|
|
15
|
+
handle: async ({ sessionId }) => {
|
|
16
|
+
const session = await findSession(ctx, sessionId);
|
|
17
|
+
const [tools, settings, info] = await Promise.all([sessionTools(ctx, session), readSettings(ctx), modelInfo(ctx, session.model)]);
|
|
18
|
+
const tokens = promptTokens(tools.built.prompt, await sentHistory(ctx, session.id, session.nextSeq));
|
|
19
|
+
return { tokens: Math.round(tokens), window: info?.contextWindow ?? null, compactAt: settings.compactAt };
|
|
20
|
+
},
|
|
21
|
+
});
|
|
22
|
+
}
|
|
23
|
+
//# sourceMappingURL=register-context.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"register-context.js","sourceRoot":"","sources":["../../src/sessions/register-context.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAY,MAAM,YAAY,CAAC;AACzC,OAAO,EAAE,YAAY,EAAE,MAAM,6BAA6B,CAAC;AAC3D,OAAO,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAC;AACvD,OAAO,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAC;AACtD,OAAO,EAAE,WAAW,EAAE,MAAM,2BAA2B,CAAC;AACxD,OAAO,EAAE,SAAS,EAAE,MAAM,wBAAwB,CAAC;AACnD,OAAO,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAElD,gHAAgH;AAEhH,MAAM,UAAU,eAAe,CAAC,GAAQ;IACtC,GAAG,CAAC,aAAa,CAAC,qBAAqB,EAAE;QACvC,WAAW,EAAE,mIAAmI;QAChJ,KAAK,EAAE,CAAC,CAAC,MAAM,CAAC,EAAE,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC;QAC1C,MAAM,EAAE,CAAC,CAAC,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,WAAW,EAAE,EAAE,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,EAAE,EAAE,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC;QACnI,MAAM,EAAE,IAAI;QACZ,MAAM,EAAE,KAAK,EAAE,EAAE,SAAS,EAAE,EAAE,EAAE;YAC9B,MAAM,OAAO,GAAG,MAAM,WAAW,CAAC,GAAG,EAAE,SAAS,CAAC,CAAC;YAClD,MAAM,CAAC,KAAK,EAAE,QAAQ,EAAE,IAAI,CAAC,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC,CAAC,YAAY,CAAC,GAAG,EAAE,OAAO,CAAC,EAAE,YAAY,CAAC,GAAG,CAAC,EAAE,SAAS,CAAC,GAAG,EAAE,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;YAClI,MAAM,MAAM,GAAG,YAAY,CAAC,KAAK,CAAC,KAAK,CAAC,MAAM,EAAE,MAAM,WAAW,CAAC,GAAG,EAAE,OAAO,CAAC,EAAE,EAAE,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC;YACrG,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,EAAE,MAAM,EAAE,IAAI,EAAE,aAAa,IAAI,IAAI,EAAE,SAAS,EAAE,QAAQ,CAAC,SAAS,EAAE,CAAC;QAC5G,CAAC;KACF,CAAC,CAAC;AACL,CAAC"}
|
|
@@ -86,7 +86,7 @@ export function registerSessions(ctx) {
|
|
|
86
86
|
throw ctx.problem('kvcoder/SESSION_BUSY', { sessionId });
|
|
87
87
|
const tools = await sessionTools(ctx, session);
|
|
88
88
|
const settings = await readSettings(ctx);
|
|
89
|
-
return { summarized: await compact(ctx, session, { force: true, compactAt: settings.compactAt, keep: settings.compactKeep, prompt: tools.built.prompt, turnId: null }) };
|
|
89
|
+
return { summarized: await compact(ctx, session, { force: true, compactAt: settings.compactAt, keep: settings.compactKeep, prompt: tools.built.prompt, tools: tools.listed.map((listed) => listed.name), turnId: null }) };
|
|
90
90
|
},
|
|
91
91
|
});
|
|
92
92
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"register-sessions.js","sourceRoot":"","sources":["../../src/sessions/register-sessions.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"register-sessions.js","sourceRoot":"","sources":["../../src/sessions/register-sessions.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,10 +1,14 @@
|
|
|
1
1
|
import { type Ctx, type Stored } from '@kvman/sdk';
|
|
2
2
|
import type { SessionDoc } from '../schemas/records.ts';
|
|
3
|
+
import { type History } from './model-context.ts';
|
|
4
|
+
export declare function promptTokens(prompt: string, history: History): number;
|
|
5
|
+
/** `prompt` and `tools` are the step's own: its system prompt and the connectors its `run` tool names. */
|
|
3
6
|
export type CompactOptions = {
|
|
4
7
|
force: boolean;
|
|
5
8
|
compactAt: number;
|
|
6
9
|
keep: number;
|
|
7
10
|
prompt: string;
|
|
11
|
+
tools: readonly string[];
|
|
8
12
|
turnId: string | null;
|
|
9
13
|
};
|
|
10
14
|
/** Summarizes the session's older messages when they pass the threshold, or with `force` whatever the threshold; says whether a summary was stored. */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"compaction.d.ts","sourceRoot":"","sources":["../../src/turns/compaction.ts"],"names":[],"mappings":"AAAA,OAAO,EAAgB,KAAK,GAAG,EAAE,KAAK,MAAM,EAAE,MAAM,YAAY,CAAC;AAEjE,OAAO,KAAK,EAAc,UAAU,EAAE,MAAM,uBAAuB,CAAC;
|
|
1
|
+
{"version":3,"file":"compaction.d.ts","sourceRoot":"","sources":["../../src/turns/compaction.ts"],"names":[],"mappings":"AAAA,OAAO,EAAgB,KAAK,GAAG,EAAE,KAAK,MAAM,EAAE,MAAM,YAAY,CAAC;AAEjE,OAAO,KAAK,EAAc,UAAU,EAAE,MAAM,uBAAuB,CAAC;AAKpE,OAAO,EAAsC,KAAK,OAAO,EAAE,MAAM,oBAAoB,CAAC;AAsBtF,wBAAgB,YAAY,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,GAAG,MAAM,CAMrE;AAED,0GAA0G;AAC1G,MAAM,MAAM,cAAc,GAAG;IAAE,KAAK,EAAE,OAAO,CAAC;IAAC,SAAS,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,SAAS,MAAM,EAAE,CAAC;IAAC,MAAM,EAAE,MAAM,GAAG,IAAI,CAAA;CAAE,CAAC;AAOlJ,uJAAuJ;AACvJ,wBAAsB,OAAO,CAAC,GAAG,EAAE,GAAG,EAAE,OAAO,EAAE,MAAM,CAAC,UAAU,CAAC,EAAE,OAAO,EAAE,cAAc,GAAG,OAAO,CAAC,OAAO,CAAC,CAqB9G"}
|
package/dist/turns/compaction.js
CHANGED
|
@@ -1,52 +1,59 @@
|
|
|
1
1
|
import { ProblemError } from '@kvman/sdk';
|
|
2
|
+
import { runTool } from "../calls/run-tool.js";
|
|
2
3
|
import { txRecords } from "../store/collections.js";
|
|
3
4
|
import { appendMessage, appendNotice } from "./history.js";
|
|
4
5
|
import { modelInfo } from "./model-info.js";
|
|
5
|
-
import { sentHistory, textOf } from "./model-context.js";
|
|
6
|
-
|
|
7
|
-
//
|
|
8
|
-
// `
|
|
9
|
-
//
|
|
6
|
+
import { modelMessages, sentHistory, textOf } from "./model-context.js";
|
|
7
|
+
import { sentCharacters } from "./sent-size.js";
|
|
8
|
+
// Compaction (plan 08 §8.1): above `kvcoder.compactAt` of the model's window, by the provider's own count, kvai summarizes the
|
|
9
|
+
// older messages, the last `kvcoder.compactKeep` stay whole (ADR 0020, 1), and a summary message is stored. The request
|
|
10
|
+
// is a step's own, with the instruction as its last message, so the older messages are read from the provider's cache
|
|
11
|
+
// (ADR 0032, 2). A step marks it in its stream with `compaction` chunks (ADR 0009, 99); a failed summary, or one with
|
|
12
|
+
// no text, adds a notice and the step goes on. Older messages smaller than a tenth of the model's window aren't
|
|
13
|
+
// summarized, so a full chat isn't summarized again on every step (ADR 0019, 7).
|
|
10
14
|
const minimumShare = 0.1;
|
|
11
|
-
const
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
const
|
|
19
|
-
|
|
15
|
+
const instruction = 'Summarize the conversation above for the agent that continues it: the goal, the decisions, the files and commands that matter, what is done, and what is left. Keep names, paths, and numbers exact. Reply with the summary only, and call no tool.';
|
|
16
|
+
const sentTokens = (messages) => messages.reduce((total, message) => total + sentCharacters(message), 0) / 4;
|
|
17
|
+
// The whole prompt of a model call, as its provider counted it; 0 when the provider reported none.
|
|
18
|
+
const reportedPrompt = (message) => (message.usage === null ? 0 : message.usage.input + message.usage.cacheRead + message.usage.cacheWrite);
|
|
19
|
+
// The prompt's size in tokens (ADR 0033, 4 and 5): the provider's count at the chat's last call, with what was added
|
|
20
|
+
// since. A call from before the latest summary held the messages the summary replaced, so it doesn't count.
|
|
21
|
+
export function promptTokens(prompt, history) {
|
|
22
|
+
const summarizedAt = history.summary?.seq ?? -1;
|
|
23
|
+
const index = history.messages.findLastIndex((message) => message.seq > summarizedAt && reportedPrompt(message) > 0);
|
|
24
|
+
const counted = history.messages[index];
|
|
25
|
+
if (counted === undefined)
|
|
26
|
+
return (prompt.length + String(history.summary?.content['text'] ?? '').length) / 4 + sentTokens(history.messages);
|
|
27
|
+
return reportedPrompt(counted) + (counted.usage?.output ?? 0) + sentTokens(history.messages.slice(index + 1));
|
|
20
28
|
}
|
|
21
|
-
function
|
|
22
|
-
|
|
23
|
-
return
|
|
29
|
+
async function summaryFailed(ctx, session, code, turnId) {
|
|
30
|
+
await ctx.store.transaction((tx) => appendNotice(txRecords(tx), session, 'SUMMARY_FAILED', { code }, turnId));
|
|
31
|
+
return false;
|
|
24
32
|
}
|
|
25
|
-
const sizeOf = (messages) => messages.reduce((total, message) => total + JSON.stringify(message.content).length, 0) / 4;
|
|
26
|
-
const estimate = (prompt, history) => (prompt.length + JSON.stringify(history.summary?.content ?? '').length) / 4 + sizeOf(history.messages);
|
|
27
33
|
/** Summarizes the session's older messages when they pass the threshold, or with `force` whatever the threshold; says whether a summary was stored. */
|
|
28
34
|
export async function compact(ctx, session, options) {
|
|
29
35
|
const history = await sentHistory(ctx, session.id, session.nextSeq);
|
|
30
36
|
const info = await modelInfo(ctx, session.model);
|
|
31
|
-
if (!options.force && (info === undefined ||
|
|
37
|
+
if (!options.force && (info === undefined || promptTokens(options.prompt, history) <= info.contextWindow * options.compactAt))
|
|
32
38
|
return false;
|
|
33
39
|
const older = history.messages.slice(0, Math.max(history.messages.length - options.keep, 0));
|
|
34
40
|
const last = older.at(-1);
|
|
35
|
-
if (last === undefined || (info !== undefined &&
|
|
41
|
+
if (last === undefined || (info !== undefined && sentTokens(older) < info.contextWindow * minimumShare))
|
|
36
42
|
return false;
|
|
37
43
|
ctx.job.progress({ type: 'compaction', state: 'started' });
|
|
38
44
|
try {
|
|
39
|
-
const
|
|
45
|
+
const messages = [...(await modelMessages(ctx, { summary: history.summary, messages: older })), { role: 'user', content: instruction, timestamp: Date.now() }];
|
|
46
|
+
const answer = await ctx.exec('kvai.complete', { ...(session.model === null ? {} : { model: session.model }), sessionId: session.id, systemPrompt: options.prompt, messages, tools: [runTool(options.tools)], thinking: session.thinking });
|
|
40
47
|
const text = textOf(answer.message.content);
|
|
48
|
+
if (text.trim() === '')
|
|
49
|
+
return await summaryFailed(ctx, session, 'kvcoder/SUMMARY_EMPTY', options.turnId);
|
|
41
50
|
await ctx.store.transaction((tx) => appendMessage(txRecords(tx), session, { kind: 'summary', content: { text, coversThroughSeq: last.seq }, turnId: options.turnId }));
|
|
42
51
|
return true;
|
|
43
52
|
}
|
|
44
53
|
catch (error) {
|
|
45
54
|
if (!(error instanceof ProblemError) || ctx.job.signal.aborted)
|
|
46
55
|
throw error;
|
|
47
|
-
|
|
48
|
-
await ctx.store.transaction((tx) => appendNotice(txRecords(tx), session, 'SUMMARY_FAILED', { code: problem.code }, options.turnId));
|
|
49
|
-
return false;
|
|
56
|
+
return await summaryFailed(ctx, session, error.problem.code, options.turnId);
|
|
50
57
|
}
|
|
51
58
|
finally {
|
|
52
59
|
ctx.job.progress({ type: 'compaction', state: 'done' });
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"compaction.js","sourceRoot":"","sources":["../../src/turns/compaction.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAyB,MAAM,YAAY,CAAC;AAGjE,OAAO,EAAE,SAAS,EAAE,MAAM,yBAAyB,CAAC;AACpD,OAAO,EAAE,aAAa,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AAC3D,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAC5C,OAAO,EAAE,WAAW,EAAE,MAAM,EAAgB,MAAM,oBAAoB,CAAC;
|
|
1
|
+
{"version":3,"file":"compaction.js","sourceRoot":"","sources":["../../src/turns/compaction.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"message-stamp.d.ts","sourceRoot":"","sources":["../../src/turns/message-stamp.ts"],"names":[],"mappings":"AAYA,wHAAwH;AACxH,wBAAgB,YAAY,CAAC,SAAS,EAAE,MAAM,EAAE,aAAa,EAAE,MAAM,GAAG,MAAM,CAK7E"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
// The date line a person's message is sent with (plan 08 §8.2; ADR 0032, 5). It comes from the message's stored time
|
|
2
|
+
// alone, so every step sends the same text and the provider's cache still matches.
|
|
3
|
+
const weekdays = ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday'];
|
|
4
|
+
const twoDigits = (value) => String(value).padStart(2, '0');
|
|
5
|
+
function offsetText(offsetMinutes) {
|
|
6
|
+
const size = Math.abs(offsetMinutes);
|
|
7
|
+
return `${offsetMinutes < 0 ? '-' : '+'}${twoDigits(Math.floor(size / 60))}:${twoDigits(size % 60)}`;
|
|
8
|
+
}
|
|
9
|
+
/** `[<weekday> <YYYY-MM-DD> <HH:mm> <±HH:mm>]` for an ISO time, at an offset from UTC in minutes (east is positive). */
|
|
10
|
+
export function messageStamp(createdAt, offsetMinutes) {
|
|
11
|
+
const local = new Date(Date.parse(createdAt) + offsetMinutes * 60_000);
|
|
12
|
+
const date = `${local.getUTCFullYear()}-${twoDigits(local.getUTCMonth() + 1)}-${twoDigits(local.getUTCDate())}`;
|
|
13
|
+
const time = `${twoDigits(local.getUTCHours())}:${twoDigits(local.getUTCMinutes())}`;
|
|
14
|
+
return `[${weekdays[local.getUTCDay()] ?? ''} ${date} ${time} ${offsetText(offsetMinutes)}]`;
|
|
15
|
+
}
|
|
16
|
+
//# sourceMappingURL=message-stamp.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"message-stamp.js","sourceRoot":"","sources":["../../src/turns/message-stamp.ts"],"names":[],"mappings":"AAAA,qHAAqH;AACrH,mFAAmF;AAEnF,MAAM,QAAQ,GAAG,CAAC,QAAQ,EAAE,QAAQ,EAAE,SAAS,EAAE,WAAW,EAAE,UAAU,EAAE,QAAQ,EAAE,UAAU,CAAU,CAAC;AAEzG,MAAM,SAAS,GAAG,CAAC,KAAa,EAAU,EAAE,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;AAE5E,SAAS,UAAU,CAAC,aAAqB;IACvC,MAAM,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC;IACrC,OAAO,GAAG,aAAa,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,GAAG,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,GAAG,EAAE,CAAC,CAAC,IAAI,SAAS,CAAC,IAAI,GAAG,EAAE,CAAC,EAAE,CAAC;AACvG,CAAC;AAED,wHAAwH;AACxH,MAAM,UAAU,YAAY,CAAC,SAAiB,EAAE,aAAqB;IACnE,MAAM,KAAK,GAAG,IAAI,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,GAAG,aAAa,GAAG,MAAM,CAAC,CAAC;IACvE,MAAM,IAAI,GAAG,GAAG,KAAK,CAAC,cAAc,EAAE,IAAI,SAAS,CAAC,KAAK,CAAC,WAAW,EAAE,GAAG,CAAC,CAAC,IAAI,SAAS,CAAC,KAAK,CAAC,UAAU,EAAE,CAAC,EAAE,CAAC;IAChH,MAAM,IAAI,GAAG,GAAG,SAAS,CAAC,KAAK,CAAC,WAAW,EAAE,CAAC,IAAI,SAAS,CAAC,KAAK,CAAC,aAAa,EAAE,CAAC,EAAE,CAAC;IACrF,OAAO,IAAI,QAAQ,CAAC,KAAK,CAAC,SAAS,EAAE,CAAC,IAAI,EAAE,IAAI,IAAI,IAAI,IAAI,IAAI,UAAU,CAAC,aAAa,CAAC,GAAG,CAAC;AAC/F,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"model-context.d.ts","sourceRoot":"","sources":["../../src/turns/model-context.ts"],"names":[],"mappings":"AAAA,OAAO,EAAgB,KAAK,GAAG,EAAE,KAAK,IAAI,EAAE,KAAK,MAAM,EAAE,MAAM,YAAY,CAAC;AAE5E,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC;
|
|
1
|
+
{"version":3,"file":"model-context.d.ts","sourceRoot":"","sources":["../../src/turns/model-context.ts"],"names":[],"mappings":"AAAA,OAAO,EAAgB,KAAK,GAAG,EAAE,KAAK,IAAI,EAAE,KAAK,MAAM,EAAE,MAAM,YAAY,CAAC;AAE5E,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC;AAOxD,MAAM,MAAM,OAAO,GAAG;IAAE,OAAO,EAAE,MAAM,CAAC,UAAU,CAAC,GAAG,SAAS,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAC,UAAU,CAAC,EAAE,CAAA;CAAE,CAAC;AAIlG,2DAA2D;AAC3D,wBAAsB,WAAW,CAAC,GAAG,EAAE,GAAG,EAAE,SAAS,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAKhG;AAED,6DAA6D;AAC7D,wBAAgB,MAAM,CAAC,OAAO,EAAE,IAAI,GAAG,SAAS,GAAG,MAAM,CAMxD;AA2BD,6DAA6D;AAC7D,wBAAsB,aAAa,CAAC,GAAG,EAAE,GAAG,EAAE,OAAO,EAAE,OAAO;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;MAI7D"}
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { ProblemError } from '@kvman/sdk';
|
|
2
2
|
import { messageSchema } from '@kvman/kvai/messages';
|
|
3
3
|
import { latestSummary, messagesFrom } from "./message-blocks.js";
|
|
4
|
+
import { messageStamp } from "./message-stamp.js";
|
|
4
5
|
const sent = new Set(['user', 'assistant', 'toolResult']);
|
|
5
6
|
/** The summary and the model-visible messages after it. */
|
|
6
7
|
export async function sentHistory(ctx, sessionId, nextSeq) {
|
|
@@ -30,11 +31,18 @@ async function imageBlock(ctx, fileId, name) {
|
|
|
30
31
|
throw error;
|
|
31
32
|
}
|
|
32
33
|
}
|
|
34
|
+
// The person's own message starts with its date (ADR 0032, 5); one from a job, a subagent, or an extension doesn't.
|
|
35
|
+
function sentText(message) {
|
|
36
|
+
const text = textOf(message.content['content']);
|
|
37
|
+
if (message.source?.kind !== 'user')
|
|
38
|
+
return text;
|
|
39
|
+
return `${messageStamp(message.createdAt, -new Date(message.createdAt).getTimezoneOffset())}\n${text}`;
|
|
40
|
+
}
|
|
33
41
|
async function userMessage(ctx, message) {
|
|
34
42
|
if (message.fileIds === null || message.fileIds.length === 0)
|
|
35
|
-
return message.content;
|
|
43
|
+
return { ...message.content, content: sentText(message) };
|
|
36
44
|
const images = await Promise.all(message.fileIds.map((fileId, index) => imageBlock(ctx, fileId, message.fileNames?.[index] ?? fileId)));
|
|
37
|
-
return { ...message.content, content: [{ type: 'text', text:
|
|
45
|
+
return { ...message.content, content: [{ type: 'text', text: sentText(message) }, ...images] };
|
|
38
46
|
}
|
|
39
47
|
const summaryLead = 'A summary of the earlier conversation:';
|
|
40
48
|
/** The messages a step sends, checked as kvai takes them. */
|
|
@@ -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,aAAa,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;
|
|
1
|
+
{"version":3,"file":"model-context.js","sourceRoot":"","sources":["../../src/turns/model-context.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import type { Ctx } from '@kvman/sdk';
|
|
2
|
+
/** Whether a step still sends an `fs read` result with exactly this text. */
|
|
3
|
+
export declare function alreadyRead(ctx: Ctx, sessionId: string, text: string): Promise<boolean>;
|
|
4
|
+
/** What a read returns in place of text the chat already holds. */
|
|
5
|
+
export declare const unchangedText: (path: string) => string;
|
|
6
|
+
//# sourceMappingURL=read-again.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"read-again.d.ts","sourceRoot":"","sources":["../../src/turns/read-again.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,GAAG,EAAQ,MAAM,YAAY,CAAC;AAS5C,6EAA6E;AAC7E,wBAAsB,WAAW,CAAC,GAAG,EAAE,GAAG,EAAE,SAAS,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAK7F;AAED,mEAAmE;AACnE,eAAO,MAAM,aAAa,GAAI,MAAM,MAAM,KAAG,MAA+G,CAAC"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import { records } from "../store/collections.js";
|
|
2
|
+
import { sentHistory, textOf } from "./model-context.js";
|
|
3
|
+
// A read the chat already holds (ADR 0034, 2). It is worked out from the stored messages after the latest summary, so a
|
|
4
|
+
// summary, a fork, and a subagent's own chat need no bookkeeping, and a file that changed in any way never matches.
|
|
5
|
+
const isRead = (details) => typeof details === 'object' && details !== null && !Array.isArray(details) && details['connector'] === 'fs' && details['command'] === 'read';
|
|
6
|
+
/** Whether a step still sends an `fs read` result with exactly this text. */
|
|
7
|
+
export async function alreadyRead(ctx, sessionId, text) {
|
|
8
|
+
const session = await records(ctx.store).sessions.get(sessionId);
|
|
9
|
+
if (session === undefined)
|
|
10
|
+
return false;
|
|
11
|
+
const { messages } = await sentHistory(ctx, sessionId, session.nextSeq);
|
|
12
|
+
return messages.some((message) => message.kind === 'toolResult' && isRead(message.content['details']) && textOf(message.content['content']) === text);
|
|
13
|
+
}
|
|
14
|
+
/** What a read returns in place of text the chat already holds. */
|
|
15
|
+
export const unchangedText = (path) => `${path} is unchanged since you read these lines earlier in this conversation; that result is above.`;
|
|
16
|
+
//# sourceMappingURL=read-again.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"read-again.js","sourceRoot":"","sources":["../../src/turns/read-again.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,OAAO,EAAE,MAAM,yBAAyB,CAAC;AAClD,OAAO,EAAE,WAAW,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAC;AAEzD,wHAAwH;AACxH,oHAAoH;AAEpH,MAAM,MAAM,GAAG,CAAC,OAAyB,EAAW,EAAE,CAAC,OAAO,OAAO,KAAK,QAAQ,IAAI,OAAO,KAAK,IAAI,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,OAAO,CAAC,WAAW,CAAC,KAAK,IAAI,IAAI,OAAO,CAAC,SAAS,CAAC,KAAK,MAAM,CAAC;AAEpM,6EAA6E;AAC7E,MAAM,CAAC,KAAK,UAAU,WAAW,CAAC,GAAQ,EAAE,SAAiB,EAAE,IAAY;IACzE,MAAM,OAAO,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;IACjE,IAAI,OAAO,KAAK,SAAS;QAAE,OAAO,KAAK,CAAC;IACxC,MAAM,EAAE,QAAQ,EAAE,GAAG,MAAM,WAAW,CAAC,GAAG,EAAE,SAAS,EAAE,OAAO,CAAC,OAAO,CAAC,CAAC;IACxE,OAAO,QAAQ,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,CAAC,IAAI,KAAK,YAAY,IAAI,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,KAAK,IAAI,CAAC,CAAC;AACxJ,CAAC;AAED,mEAAmE;AACnE,MAAM,CAAC,MAAM,aAAa,GAAG,CAAC,IAAY,EAAU,EAAE,CAAC,GAAG,IAAI,8FAA8F,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"run-command.d.ts","sourceRoot":"","sources":["../../src/turns/run-command.ts"],"names":[],"mappings":"AAAA,OAAO,EAAK,KAAK,GAAG,EAAE,KAAK,MAAM,EAAE,MAAM,YAAY,CAAC;AAOtD,OAAO,EAAqB,KAAK,gBAAgB,EAAE,MAAM,oCAAoC,CAAC;AAC9F,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,sBAAsB,CAAC;AAKpD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,oCAAoC,CAAC;AAEvE,OAAO,KAAK,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC;
|
|
1
|
+
{"version":3,"file":"run-command.d.ts","sourceRoot":"","sources":["../../src/turns/run-command.ts"],"names":[],"mappings":"AAAA,OAAO,EAAK,KAAK,GAAG,EAAE,KAAK,MAAM,EAAE,MAAM,YAAY,CAAC;AAOtD,OAAO,EAAqB,KAAK,gBAAgB,EAAE,MAAM,oCAAoC,CAAC;AAC9F,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,sBAAsB,CAAC;AAKpD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,oCAAoC,CAAC;AAEvE,OAAO,KAAK,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC;AAOpE,2DAA2D;AAC3D,MAAM,MAAM,QAAQ,GAAG,IAAI,CAAC,UAAU,EAAE,MAAM,GAAG,SAAS,GAAG,SAAS,CAAC,CAAC;AAExE,oJAAoJ;AACpJ,MAAM,MAAM,aAAa,GAAG;IAAE,YAAY,EAAE,MAAM,CAAC;IAAC,OAAO,CAAC,EAAE,gBAAgB,CAAC;IAAC,IAAI,CAAC,EAAE,OAAO,CAAA;CAAE,CAAC;AAEjG,sGAAsG;AACtG,wBAAgB,QAAQ,CAAC,UAAU,EAAE,SAAS,YAAY,EAAE,EAAE,IAAI,EAAE,IAAI,CAAC,OAAO,EAAE,WAAW,GAAG,SAAS,CAAC,GAAG,aAAa,GAAG,SAAS,CAUrI;AAED,mJAAmJ;AACnJ,wBAAgB,cAAc,CAAC,UAAU,EAAE,SAAS,YAAY,EAAE,EAAE,IAAI,EAAE,MAAM,GAAG,MAAM,EAAE,CAK1F;AA2BD,4EAA4E;AAC5E,wBAAgB,UAAU,CAAC,IAAI,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,UAAU,SAAI,GAAG,QAAQ,CAElF;AAED,uDAAuD;AACvD,wBAAgB,UAAU,CAAC,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,UAAU,SAAI,GAAG,QAAQ,CAEhF;AAID,2JAA2J;AAC3J,wBAAgB,SAAS,CAAC,GAAG,EAAE,GAAG,EAAE,OAAO,EAAE,MAAM,CAAC,UAAU,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,EAAE,aAAa,GAAG,OAAO,CAAC,QAAQ,CAAC,CAGxH;AAkCD,+FAA+F;AAC/F,wBAAsB,OAAO,CAAC,GAAG,EAAE,GAAG,EAAE,IAAI,EAAE,OAAO,GAAG,OAAO,CAAC,QAAQ,CAAC,CAaxE"}
|
|
@@ -11,6 +11,7 @@ import { lexicalPath } from "../files/workspace-path.js";
|
|
|
11
11
|
import { builtinConnectors, errorOutput, jsonOutput, runCommand } from "../connector-call.js";
|
|
12
12
|
import { callInfos } from "../registry/loaded.js";
|
|
13
13
|
import { truncate } from "../result-text.js";
|
|
14
|
+
import { alreadyRead, unchangedText } from "./read-again.js";
|
|
14
15
|
/** The job a call's connector command runs, or `undefined` when the connector has no such command. */
|
|
15
16
|
export function targetOf(connectors, call) {
|
|
16
17
|
const builtin = builtinConnectors.find((name) => name === call.connector);
|
|
@@ -64,6 +65,7 @@ export function failedCall(call, output, durationMs = 0) {
|
|
|
64
65
|
export function textResult(call, text, durationMs = 0) {
|
|
65
66
|
return { text, isError: false, details: { ...words(call), output: text, durationMs } };
|
|
66
67
|
}
|
|
68
|
+
const fileRead = 'kvcoder.fs.file.get';
|
|
67
69
|
/** Runs a connector command through `ctx.exec`, after the calls before it on the same file or artifact, and gives what the model and the call card get. */
|
|
68
70
|
export function runTarget(ctx, session, call, target) {
|
|
69
71
|
const key = orderKey(ctx, session, call, target);
|
|
@@ -93,7 +95,8 @@ async function runJob(ctx, sessionId, call, target) {
|
|
|
93
95
|
return { text: output, isError: called.isError, details: { ...words(call), output, durationMs: Date.now() - started } };
|
|
94
96
|
}
|
|
95
97
|
const output = jsonOutput(done.value).output;
|
|
96
|
-
const
|
|
98
|
+
const whole = builtin?.bounded === true ? output : truncate(output);
|
|
99
|
+
const text = target.registration === fileRead && (await alreadyRead(ctx, sessionId, whole)) ? unchangedText(String(call.payload['path'])) : whole;
|
|
97
100
|
const artifactId = artifactChanges.has(target.registration) ? call.payload['id'] : undefined;
|
|
98
101
|
const artifact = typeof artifactId === 'string' ? await artifactCard(ctx, sessionId, artifactId) : undefined;
|
|
99
102
|
return { text, isError: false, details: { ...words(call), output: text, durationMs: Date.now() - started, ...(artifact === undefined ? {} : { artifact }) } };
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"run-command.js","sourceRoot":"","sources":["../../src/turns/run-command.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAyB,MAAM,YAAY,CAAC;AACtD,OAAO,EAAE,QAAQ,EAAE,MAAM,kCAAkC,CAAC;AAC5D,OAAO,EAAE,cAAc,EAAE,aAAa,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AAClF,OAAO,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAC;AACzD,OAAO,EAAE,UAAU,EAAE,MAAM,yBAAyB,CAAC;AACrD,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AACrD,OAAO,EAAE,eAAe,EAAE,iBAAiB,EAAE,UAAU,EAAE,MAAM,qCAAqC,CAAC;AACrG,OAAO,EAAE,iBAAiB,EAAyB,MAAM,oCAAoC,CAAC;AAE9F,OAAO,EAAE,OAAO,EAAE,MAAM,wBAAwB,CAAC;AACjD,OAAO,EAAE,WAAW,EAAE,MAAM,4BAA4B,CAAC;AACzD,OAAO,EAAE,iBAAiB,EAAE,WAAW,EAAE,UAAU,EAAE,UAAU,EAAkB,MAAM,sBAAsB,CAAC;AAC9G,OAAO,EAAE,SAAS,EAAE,MAAM,uBAAuB,CAAC;AAElD,OAAO,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;
|
|
1
|
+
{"version":3,"file":"run-command.js","sourceRoot":"","sources":["../../src/turns/run-command.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sent-size.d.ts","sourceRoot":"","sources":["../../src/turns/sent-size.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC;AAcxD,+DAA+D;AAC/D,wBAAgB,cAAc,CAAC,OAAO,EAAE,IAAI,CAAC,UAAU,EAAE,SAAS,CAAC,GAAG,MAAM,CAI3E"}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
// What is sent of a message, for compaction's count (plan 08 §8.1; ADR 0033, 6): its text, and for an assistant
|
|
2
|
+
// message its thinking and each call's name and arguments. A tool result's `details`, signatures, and the stored
|
|
3
|
+
// metadata never reach the model, so they aren't counted.
|
|
4
|
+
function blockCharacters(block) {
|
|
5
|
+
if (typeof block !== 'object' || block === null || Array.isArray(block))
|
|
6
|
+
return 0;
|
|
7
|
+
if (block['type'] === 'text' && typeof block['text'] === 'string')
|
|
8
|
+
return block['text'].length;
|
|
9
|
+
if (block['type'] === 'thinking' && typeof block['thinking'] === 'string')
|
|
10
|
+
return block['thinking'].length;
|
|
11
|
+
if (block['type'] === 'toolCall')
|
|
12
|
+
return String(block['name'] ?? '').length + JSON.stringify(block['arguments'] ?? {}).length;
|
|
13
|
+
return 0;
|
|
14
|
+
}
|
|
15
|
+
/** The characters of a message that a step sends the model. */
|
|
16
|
+
export function sentCharacters(message) {
|
|
17
|
+
const content = message.content['content'];
|
|
18
|
+
if (typeof content === 'string')
|
|
19
|
+
return content.length;
|
|
20
|
+
return Array.isArray(content) ? content.reduce((total, block) => total + blockCharacters(block), 0) : 0;
|
|
21
|
+
}
|
|
22
|
+
//# sourceMappingURL=sent-size.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sent-size.js","sourceRoot":"","sources":["../../src/turns/sent-size.ts"],"names":[],"mappings":"AAGA,gHAAgH;AAChH,iHAAiH;AACjH,0DAA0D;AAE1D,SAAS,eAAe,CAAC,KAAW;IAClC,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC;QAAE,OAAO,CAAC,CAAC;IAClF,IAAI,KAAK,CAAC,MAAM,CAAC,KAAK,MAAM,IAAI,OAAO,KAAK,CAAC,MAAM,CAAC,KAAK,QAAQ;QAAE,OAAO,KAAK,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC;IAC/F,IAAI,KAAK,CAAC,MAAM,CAAC,KAAK,UAAU,IAAI,OAAO,KAAK,CAAC,UAAU,CAAC,KAAK,QAAQ;QAAE,OAAO,KAAK,CAAC,UAAU,CAAC,CAAC,MAAM,CAAC;IAC3G,IAAI,KAAK,CAAC,MAAM,CAAC,KAAK,UAAU;QAAE,OAAO,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC,MAAM,GAAG,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,WAAW,CAAC,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC;IAC9H,OAAO,CAAC,CAAC;AACX,CAAC;AAED,+DAA+D;AAC/D,MAAM,UAAU,cAAc,CAAC,OAAoC;IACjE,MAAM,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;IAC3C,IAAI,OAAO,OAAO,KAAK,QAAQ;QAAE,OAAO,OAAO,CAAC,MAAM,CAAC;IACvD,OAAO,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,MAAM,CAAS,CAAC,KAAK,EAAE,KAAK,EAAE,EAAE,CAAC,KAAK,GAAG,eAAe,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AAClH,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"settle-calls.d.ts","sourceRoot":"","sources":["../../src/turns/settle-calls.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,EAAE,MAAM,YAAY,CAAC;AAI9C,OAAO,KAAK,EAAE,UAAU,EAAsB,UAAU,EAAE,OAAO,EAAE,MAAM,uBAAuB,CAAC;AAEjG,OAAO,EAAsB,KAAK,SAAS,EAAE,MAAM,yBAAyB,CAAC;AAG7E,OAAO,KAAK,EAAE,WAAW,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAO5D,KAAK,KAAK,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"settle-calls.d.ts","sourceRoot":"","sources":["../../src/turns/settle-calls.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,EAAE,MAAM,YAAY,CAAC;AAI9C,OAAO,KAAK,EAAE,UAAU,EAAsB,UAAU,EAAE,OAAO,EAAE,MAAM,uBAAuB,CAAC;AAEjG,OAAO,EAAsB,KAAK,SAAS,EAAE,MAAM,yBAAyB,CAAC;AAG7E,OAAO,KAAK,EAAE,WAAW,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAO5D,KAAK,KAAK,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;AAU9B,kFAAkF;AAClF,wBAAgB,aAAa,CAAC,KAAK,EAAE,SAAS,EAAE,OAAO,EAAE,MAAM,CAAC,UAAU,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE,OAAO,EAAE,SAAS,UAAU,EAAE,GAAG,IAAI,CAO/I;AAED,sEAAsE;AACtE,wBAAgB,QAAQ,CAAC,KAAK,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG;IAAE,OAAO,EAAE,MAAM,CAAC,UAAU,CAAC,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC,OAAO,CAAC,CAAA;CAAE,GAAG,SAAS,CAKhJ;AAED,oFAAoF;AACpF,wBAAsB,YAAY,CAAC,GAAG,EAAE,GAAG,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAItH;AAUD,wBAAsB,WAAW,CAAC,GAAG,EAAE,GAAG,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,SAAS,QAAQ,EAAE,EAAE,QAAQ,EAAE,SAAS,WAAW,EAAE,EAAE,QAAQ,EAAE,MAAM,GAAG,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAkCnL"}
|
|
@@ -6,6 +6,14 @@ import { records, txRecords } from "../store/collections.js";
|
|
|
6
6
|
import { endTurn } from "./end-turn.js";
|
|
7
7
|
import { appendMessage, appendQueued } from "./history.js";
|
|
8
8
|
import { queueStep } from "./start-turn.js";
|
|
9
|
+
// A result's details without a second copy of its output (ADR 0034, 7): the output stays only where it differs from the
|
|
10
|
+
// text the model gets, which is a shell line's and a binary's.
|
|
11
|
+
function storedDetails(held) {
|
|
12
|
+
const details = held.details;
|
|
13
|
+
if (typeof details !== 'object' || details === null || Array.isArray(details) || details['output'] !== held.text)
|
|
14
|
+
return details;
|
|
15
|
+
return Object.fromEntries(Object.entries(details).filter(([name]) => name !== 'output'));
|
|
16
|
+
}
|
|
9
17
|
/** Appends a step's results as toolResult messages, in the model's call order. */
|
|
10
18
|
export function appendResults(store, session, turnId, calls, results) {
|
|
11
19
|
for (const call of calls) {
|
|
@@ -13,7 +21,7 @@ export function appendResults(store, session, turnId, calls, results) {
|
|
|
13
21
|
if (held === undefined)
|
|
14
22
|
continue;
|
|
15
23
|
const content = { role: 'toolResult', toolCallId: call.toolCallId, toolName: call.toolName, content: [{ type: 'text', text: held.text }], isError: held.isError, timestamp: Date.now() };
|
|
16
|
-
appendMessage(store, session, { kind: 'toolResult', content: held.details === null ? content : { ...content, details: held
|
|
24
|
+
appendMessage(store, session, { kind: 'toolResult', content: held.details === null ? content : { ...content, details: storedDetails(held) }, turnId });
|
|
17
25
|
}
|
|
18
26
|
}
|
|
19
27
|
/** The running turn inside a transaction, if `turnId` still is it. */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"settle-calls.js","sourceRoot":"","sources":["../../src/turns/settle-calls.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,UAAU,EAAE,MAAM,2BAA2B,CAAC;AACvD,OAAO,EAAE,OAAO,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAC;AACzD,OAAO,EAAE,SAAS,EAAE,MAAM,+BAA+B,CAAC;AAE1D,OAAO,EAAE,GAAG,EAAE,MAAM,+BAA+B,CAAC;AACpD,OAAO,EAAE,OAAO,EAAE,SAAS,EAAkB,MAAM,yBAAyB,CAAC;AAC7E,OAAO,EAAE,OAAO,EAAE,MAAM,eAAe,CAAC;AACxC,OAAO,EAAE,aAAa,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AAE3D,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAQ5C,kFAAkF;AAClF,MAAM,UAAU,aAAa,CAAC,KAAgB,EAAE,OAA2B,EAAE,MAAc,EAAE,KAAY,EAAE,OAA8B;IACvI,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACzB,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,SAAS,EAAE,EAAE,CAAC,SAAS,CAAC,UAAU,KAAK,IAAI,CAAC,UAAU,CAAC,CAAC;QACnF,IAAI,IAAI,KAAK,SAAS;YAAE,SAAS;QACjC,MAAM,OAAO,GAA8B,EAAE,IAAI,EAAE,YAAY,EAAE,UAAU,EAAE,IAAI,CAAC,UAAU,EAAE,QAAQ,EAAE,IAAI,CAAC,QAAQ,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,CAAC,EAAE,OAAO,EAAE,IAAI,CAAC,OAAO,EAAE,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE,EAAE,CAAC;QACpN,aAAa,CAAC,KAAK,EAAE,OAAO,EAAE,EAAE,IAAI,EAAE,YAAY,EAAE,OAAO,EAAE,IAAI,CAAC,OAAO,KAAK,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,GAAG,OAAO,EAAE,OAAO,EAAE,IAAI,CAAC,
|
|
1
|
+
{"version":3,"file":"settle-calls.js","sourceRoot":"","sources":["../../src/turns/settle-calls.ts"],"names":[],"mappings":"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"}
|
package/dist/turns/step.js
CHANGED
|
@@ -140,7 +140,7 @@ async function runStep(ctx, sessionId, turnId) {
|
|
|
140
140
|
return;
|
|
141
141
|
const checked = await withChecks(ctx, begun);
|
|
142
142
|
const tools = await sessionTools(ctx, checked);
|
|
143
|
-
await compact(ctx, checked, { force: false, compactAt: settings.compactAt, keep: settings.compactKeep, prompt: tools.built.prompt, turnId });
|
|
143
|
+
await compact(ctx, checked, { force: false, compactAt: settings.compactAt, keep: settings.compactKeep, prompt: tools.built.prompt, tools: tools.listed.map((listed) => listed.name), turnId });
|
|
144
144
|
const session = (await records(ctx.store).sessions.get(sessionId)) ?? checked;
|
|
145
145
|
const answer = await callModel(ctx, session, turnId, tools);
|
|
146
146
|
if (answer === undefined)
|