@corenel/harness 0.12.0 → 0.14.0
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/audit/recorder.d.ts +6 -1
- package/dist/audit/recorder.d.ts.map +1 -1
- package/dist/audit/recorder.js +9 -2
- package/dist/audit/recorder.js.map +1 -1
- package/dist/audit/runAudit.d.ts.map +1 -1
- package/dist/audit/runAudit.js +2 -0
- package/dist/audit/runAudit.js.map +1 -1
- package/dist/conversation.d.ts +33 -0
- package/dist/conversation.d.ts.map +1 -1
- package/dist/conversation.js +44 -1
- package/dist/conversation.js.map +1 -1
- package/dist/core/compactHistory.d.ts +27 -18
- package/dist/core/compactHistory.d.ts.map +1 -1
- package/dist/core/compactHistory.js +106 -40
- package/dist/core/compactHistory.js.map +1 -1
- package/dist/core/fileChanges.d.ts +18 -0
- package/dist/core/fileChanges.d.ts.map +1 -0
- package/dist/core/fileChanges.js +85 -0
- package/dist/core/fileChanges.js.map +1 -0
- package/dist/core/foldBlocks.d.ts +43 -0
- package/dist/core/foldBlocks.d.ts.map +1 -0
- package/dist/core/foldBlocks.js +114 -0
- package/dist/core/foldBlocks.js.map +1 -0
- package/dist/core/foldTypes.d.ts +25 -0
- package/dist/core/foldTypes.d.ts.map +1 -0
- package/dist/core/foldTypes.js +2 -0
- package/dist/core/foldTypes.js.map +1 -0
- package/dist/core/loop.d.ts +29 -5
- package/dist/core/loop.d.ts.map +1 -1
- package/dist/core/loop.js +166 -70
- package/dist/core/loop.js.map +1 -1
- package/dist/core/recovery.d.ts +1 -0
- package/dist/core/recovery.d.ts.map +1 -1
- package/dist/core/recovery.js +12 -0
- package/dist/core/recovery.js.map +1 -1
- package/dist/core/spawn.d.ts +4 -0
- package/dist/core/spawn.d.ts.map +1 -1
- package/dist/core/spawn.js +11 -4
- package/dist/core/spawn.js.map +1 -1
- package/dist/core/summarize.d.ts +9 -3
- package/dist/core/summarize.d.ts.map +1 -1
- package/dist/core/summarize.js +97 -42
- package/dist/core/summarize.js.map +1 -1
- package/dist/dag/executeNode.d.ts +5 -0
- package/dist/dag/executeNode.d.ts.map +1 -1
- package/dist/dag/executeNode.js +5 -1
- package/dist/dag/executeNode.js.map +1 -1
- package/dist/guardrail/permission-service.d.ts.map +1 -1
- package/dist/guardrail/permission-service.js +11 -2
- package/dist/guardrail/permission-service.js.map +1 -1
- package/dist/guardrail/serialize.d.ts.map +1 -1
- package/dist/guardrail/serialize.js +4 -0
- package/dist/guardrail/serialize.js.map +1 -1
- package/dist/guardrail/validate.d.ts.map +1 -1
- package/dist/guardrail/validate.js +3 -1
- package/dist/guardrail/validate.js.map +1 -1
- package/dist/orchestrator/record.d.ts +94 -5
- package/dist/orchestrator/record.d.ts.map +1 -1
- package/dist/orchestrator/record.js +186 -5
- package/dist/orchestrator/record.js.map +1 -1
- package/dist/orchestrator/sidecarTools.d.ts +5 -0
- package/dist/orchestrator/sidecarTools.d.ts.map +1 -1
- package/dist/orchestrator/sidecarTools.js +53 -15
- package/dist/orchestrator/sidecarTools.js.map +1 -1
- package/dist/prompts/library/defaults.generated.js +2 -2
- package/dist/prompts/library/defaults.generated.js.map +1 -1
- package/dist/sessions/directivesStore.d.ts +9 -0
- package/dist/sessions/directivesStore.d.ts.map +1 -0
- package/dist/sessions/directivesStore.js +54 -0
- package/dist/sessions/directivesStore.js.map +1 -0
- package/dist/sessions/fileSessionStore.d.ts +2 -2
- package/dist/sessions/fileSessionStore.d.ts.map +1 -1
- package/dist/sessions/fileSessionStore.js +19 -8
- package/dist/sessions/fileSessionStore.js.map +1 -1
- package/dist/sessions/foldStorage.d.ts +15 -0
- package/dist/sessions/foldStorage.d.ts.map +1 -0
- package/dist/sessions/foldStorage.js +121 -0
- package/dist/sessions/foldStorage.js.map +1 -0
- package/dist/sessions/jsonl.d.ts +6 -0
- package/dist/sessions/jsonl.d.ts.map +1 -1
- package/dist/sessions/jsonl.js +15 -1
- package/dist/sessions/jsonl.js.map +1 -1
- package/dist/sidecar/deviceKeys.d.ts +75 -0
- package/dist/sidecar/deviceKeys.d.ts.map +1 -0
- package/dist/sidecar/deviceKeys.js +142 -0
- package/dist/sidecar/deviceKeys.js.map +1 -0
- package/dist/sidecar/host.d.ts +144 -24
- package/dist/sidecar/host.d.ts.map +1 -1
- package/dist/sidecar/host.js +306 -16
- package/dist/sidecar/host.js.map +1 -1
- package/dist/sidecar/identity.d.ts +41 -17
- package/dist/sidecar/identity.d.ts.map +1 -1
- package/dist/sidecar/identity.js +10 -21
- package/dist/sidecar/identity.js.map +1 -1
- package/dist/sidecar/server.d.ts +197 -28
- package/dist/sidecar/server.d.ts.map +1 -1
- package/dist/sidecar/server.js +701 -110
- package/dist/sidecar/server.js.map +1 -1
- package/dist/sidecar/testing.d.ts +97 -0
- package/dist/sidecar/testing.d.ts.map +1 -0
- package/dist/sidecar/testing.js +259 -0
- package/dist/sidecar/testing.js.map +1 -0
- package/dist/sidecar/wsChannel.d.ts +8 -1
- package/dist/sidecar/wsChannel.d.ts.map +1 -1
- package/dist/sidecar/wsChannel.js +17 -1
- package/dist/sidecar/wsChannel.js.map +1 -1
- package/dist/tools/callAgent.d.ts.map +1 -1
- package/dist/tools/callAgent.js +33 -13
- package/dist/tools/callAgent.js.map +1 -1
- package/dist/tools/foldTools.d.ts +5 -0
- package/dist/tools/foldTools.d.ts.map +1 -0
- package/dist/tools/foldTools.js +123 -0
- package/dist/tools/foldTools.js.map +1 -0
- package/dist/tools/orchestration.js +1 -1
- package/dist/tools/orchestration.js.map +1 -1
- package/dist/tools/skillTool.d.ts.map +1 -1
- package/dist/tools/skillTool.js +7 -2
- package/dist/tools/skillTool.js.map +1 -1
- package/package.json +2 -2
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"compactHistory.js","sourceRoot":"","sources":["../../core/compactHistory.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;6DAU6D;AAG7D,OAAO,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;
|
|
1
|
+
{"version":3,"file":"compactHistory.js","sourceRoot":"","sources":["../../core/compactHistory.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import type { FileChange, ToolContext } from '@corenel/protocol';
|
|
2
|
+
type Args = Record<string, unknown>;
|
|
3
|
+
/** A path as the record keeps it: forward slashes, no leading `./`. */
|
|
4
|
+
export declare function normalizeOutputPath(p: string): string;
|
|
5
|
+
/** Every tool whose calls can change a file. */
|
|
6
|
+
export declare const FILE_CHANGE_TOOLS: ReadonlySet<string>;
|
|
7
|
+
/** The files one successful call changed. Empty for any other tool, or an
|
|
8
|
+
* answer that is not the tool's success answer. */
|
|
9
|
+
export declare function fileChangesOf(tool: string, args: Args, result: string, existed?: boolean | null): FileChange[];
|
|
10
|
+
/** Whether a write_file target exists before the call, so a new file reads as
|
|
11
|
+
* created. Null when it cannot be told (no workspace, a slow or failing
|
|
12
|
+
* store): the change is then reported as modified, never guessed as new. */
|
|
13
|
+
export declare function existedBefore(tool: string, args: Args, ctx: ToolContext): Promise<boolean | null>;
|
|
14
|
+
/** Hand each change of one successful call to the context's observer. Never
|
|
15
|
+
* throws: an observer's failure is not the tool's. */
|
|
16
|
+
export declare function reportFileChanges(ctx: ToolContext, tool: string, args: Args, result: string, existed: boolean | null): Promise<void>;
|
|
17
|
+
export {};
|
|
18
|
+
//# sourceMappingURL=fileChanges.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"fileChanges.d.ts","sourceRoot":"","sources":["../../core/fileChanges.ts"],"names":[],"mappings":"AAcA,OAAO,KAAK,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAEjE,KAAK,IAAI,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;AAOpC,uEAAuE;AACvE,wBAAgB,mBAAmB,CAAC,CAAC,EAAE,MAAM,GAAG,MAAM,CAErD;AAsCD,gDAAgD;AAChD,eAAO,MAAM,iBAAiB,EAAE,WAAW,CAAC,MAAM,CAAiC,CAAC;AAEpF;mDACmD;AACnD,wBAAgB,aAAa,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,OAAO,GAAG,IAAI,GAAG,UAAU,EAAE,CAE9G;AAID;;4EAE4E;AAC5E,wBAAsB,aAAa,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,EAAE,WAAW,GAAG,OAAO,CAAC,OAAO,GAAG,IAAI,CAAC,CAgBvG;AAED;sDACsD;AACtD,wBAAsB,iBAAiB,CAAC,GAAG,EAAE,WAAW,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,GAAG,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAM1I"}
|
|
@@ -0,0 +1,85 @@
|
|
|
1
|
+
function str(args, key) {
|
|
2
|
+
const v = args[key];
|
|
3
|
+
return typeof v === 'string' ? v : '';
|
|
4
|
+
}
|
|
5
|
+
/** A path as the record keeps it: forward slashes, no leading `./`. */
|
|
6
|
+
export function normalizeOutputPath(p) {
|
|
7
|
+
return p.trim().replace(/\\/g, '/').replace(/^(\.\/)+/, '');
|
|
8
|
+
}
|
|
9
|
+
function utf8Bytes(s) {
|
|
10
|
+
return new TextEncoder().encode(s).byteLength;
|
|
11
|
+
}
|
|
12
|
+
function change(path, kind, args, bytes) {
|
|
13
|
+
const p = normalizeOutputPath(path);
|
|
14
|
+
if (!p)
|
|
15
|
+
return [];
|
|
16
|
+
const root = str(args, 'root');
|
|
17
|
+
return [{ path: p, ...(root ? { root } : {}), change: kind, ...(bytes !== undefined ? { bytes } : {}) }];
|
|
18
|
+
}
|
|
19
|
+
const READERS = {
|
|
20
|
+
// The sidecar says `created` for a new file and `wrote` for an existing one.
|
|
21
|
+
sidecar_fs_write_file: (args, result) => {
|
|
22
|
+
const m = /^(created|wrote) /.exec(result);
|
|
23
|
+
return m ? change(str(args, 'path'), m[1] === 'created' ? 'created' : 'modified', args, utf8Bytes(str(args, 'content'))) : [];
|
|
24
|
+
},
|
|
25
|
+
sidecar_fs_write_bytes: (args, result) => {
|
|
26
|
+
const m = /^(created|wrote) .*\((\d+) bytes\)$/.exec(result);
|
|
27
|
+
return m ? change(str(args, 'path'), m[1] === 'created' ? 'created' : 'modified', args, Number(m[2])) : [];
|
|
28
|
+
},
|
|
29
|
+
sidecar_fs_delete: (args, result) => (/^deleted /.test(result) ? change(str(args, 'path'), 'deleted', args) : []),
|
|
30
|
+
create_file: (args, result) => (/^Created /.test(result) ? change(str(args, 'path'), 'created', args, utf8Bytes(str(args, 'content'))) : []),
|
|
31
|
+
write_file: (args, result, existed) => (/^Wrote /.test(result)
|
|
32
|
+
? change(str(args, 'path'), existed === false ? 'created' : 'modified', args, utf8Bytes(str(args, 'content')))
|
|
33
|
+
: []),
|
|
34
|
+
delete_file: (args, result) => (/^Deleted /.test(result) ? change(str(args, 'path'), 'deleted', args) : []),
|
|
35
|
+
rename_file: (args, result) => (/^Renamed /.test(result)
|
|
36
|
+
? [...change(str(args, 'from'), 'deleted', args), ...change(str(args, 'to'), 'created', args)]
|
|
37
|
+
: []),
|
|
38
|
+
};
|
|
39
|
+
/** Every tool whose calls can change a file. */
|
|
40
|
+
export const FILE_CHANGE_TOOLS = new Set(Object.keys(READERS));
|
|
41
|
+
/** The files one successful call changed. Empty for any other tool, or an
|
|
42
|
+
* answer that is not the tool's success answer. */
|
|
43
|
+
export function fileChangesOf(tool, args, result, existed) {
|
|
44
|
+
return READERS[tool]?.(args, result, existed) ?? [];
|
|
45
|
+
}
|
|
46
|
+
const PROBE_TIMEOUT_MS = 3000;
|
|
47
|
+
/** Whether a write_file target exists before the call, so a new file reads as
|
|
48
|
+
* created. Null when it cannot be told (no workspace, a slow or failing
|
|
49
|
+
* store): the change is then reported as modified, never guessed as new. */
|
|
50
|
+
export async function existedBefore(tool, args, ctx) {
|
|
51
|
+
if (tool !== 'write_file' || !ctx.files)
|
|
52
|
+
return null;
|
|
53
|
+
const path = str(args, 'path');
|
|
54
|
+
if (!path)
|
|
55
|
+
return null;
|
|
56
|
+
let timer;
|
|
57
|
+
try {
|
|
58
|
+
const st = await Promise.race([
|
|
59
|
+
ctx.files.stat(path),
|
|
60
|
+
new Promise((_, reject) => { timer = setTimeout(() => reject(new Error('timeout')), PROBE_TIMEOUT_MS); }),
|
|
61
|
+
]);
|
|
62
|
+
return st !== null;
|
|
63
|
+
}
|
|
64
|
+
catch {
|
|
65
|
+
return null;
|
|
66
|
+
}
|
|
67
|
+
finally {
|
|
68
|
+
if (timer)
|
|
69
|
+
clearTimeout(timer);
|
|
70
|
+
}
|
|
71
|
+
}
|
|
72
|
+
/** Hand each change of one successful call to the context's observer. Never
|
|
73
|
+
* throws: an observer's failure is not the tool's. */
|
|
74
|
+
export async function reportFileChanges(ctx, tool, args, result, existed) {
|
|
75
|
+
const observe = ctx.onFileChange;
|
|
76
|
+
if (!observe)
|
|
77
|
+
return;
|
|
78
|
+
for (const c of fileChangesOf(tool, args, result, existed)) {
|
|
79
|
+
try {
|
|
80
|
+
await observe(c);
|
|
81
|
+
}
|
|
82
|
+
catch { /* observer only */ }
|
|
83
|
+
}
|
|
84
|
+
}
|
|
85
|
+
//# sourceMappingURL=fileChanges.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"fileChanges.js","sourceRoot":"","sources":["../../core/fileChanges.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
/** The marker every checkpoint (rolling summary) message starts with, so a
|
|
2
|
+
* later pass can recognize one it already wrote instead of collapsing it again. */
|
|
3
|
+
export declare const CHECKPOINT_MARKER = "[checkpoint] ";
|
|
4
|
+
/** The marker every anchor message starts with. An anchor is context ABOUT the
|
|
5
|
+
* user message that follows it, not something the assistant said. */
|
|
6
|
+
export declare const ANCHOR_MARKER = "[anchor] ";
|
|
7
|
+
export declare const USER_TAIL_SHARE = 0.15;
|
|
8
|
+
export declare const DIRECTIVES_SHARE = 0.02;
|
|
9
|
+
export declare const SUMMARY_SHARE = 0.1;
|
|
10
|
+
export declare const SUMMARIZER_INPUT_SHARE = 0.7;
|
|
11
|
+
export declare const ANCHOR_CHARS = 120;
|
|
12
|
+
/** The window assumed when a host gave none -- matches resolveContextWindow's fallback. */
|
|
13
|
+
export declare const FALLBACK_CONTEXT_WINDOW = 32000;
|
|
14
|
+
export declare const DIRECTIVES_MARKER = "[directives] ";
|
|
15
|
+
export interface FoldSummary {
|
|
16
|
+
summary: string;
|
|
17
|
+
directives: string[];
|
|
18
|
+
}
|
|
19
|
+
export interface SummaryEntry {
|
|
20
|
+
at: string;
|
|
21
|
+
body: string;
|
|
22
|
+
}
|
|
23
|
+
export interface SummaryBlock {
|
|
24
|
+
folds: number;
|
|
25
|
+
entries: SummaryEntry[];
|
|
26
|
+
}
|
|
27
|
+
/** A share of a token window, in characters (4 per token, as estimateFill). */
|
|
28
|
+
export declare function shareChars(share: number, contextWindow: number): number;
|
|
29
|
+
export declare function normalizeDirective(s: string): string;
|
|
30
|
+
/** Previous then new, de-duplicated by normalized text (first wording wins),
|
|
31
|
+
* then the OLDEST dropped until the total fits `maxChars`. */
|
|
32
|
+
export declare function mergeDirectives(prev: string[], next: string[], maxChars: number): string[];
|
|
33
|
+
export declare function renderDirectivesBlock(directives: string[]): string;
|
|
34
|
+
export declare function parseDirectivesBlock(content: string): string[] | null;
|
|
35
|
+
export declare function renderSummaryBlock(block: SummaryBlock, opts: {
|
|
36
|
+
recall: boolean;
|
|
37
|
+
}): string;
|
|
38
|
+
export declare function parseSummaryBlock(content: string): SummaryBlock | null;
|
|
39
|
+
/** Drop the oldest entries until their RENDERED size fits; the newest always stays. */
|
|
40
|
+
export declare function trimEntries(entries: SummaryEntry[], maxChars: number): SummaryEntry[];
|
|
41
|
+
/** What a kept user message was replying to, without a model call. */
|
|
42
|
+
export declare function anchorText(answered: string | null): string | null;
|
|
43
|
+
//# sourceMappingURL=foldBlocks.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"foldBlocks.d.ts","sourceRoot":"","sources":["../../core/foldBlocks.ts"],"names":[],"mappings":"AAOA;mFACmF;AACnF,eAAO,MAAM,iBAAiB,kBAAkB,CAAC;AAEjD;qEACqE;AACrE,eAAO,MAAM,aAAa,cAAc,CAAC;AAEzC,eAAO,MAAM,eAAe,OAAO,CAAC;AACpC,eAAO,MAAM,gBAAgB,OAAO,CAAC;AACrC,eAAO,MAAM,aAAa,MAAM,CAAC;AACjC,eAAO,MAAM,sBAAsB,MAAM,CAAC;AAC1C,eAAO,MAAM,YAAY,MAAM,CAAC;AAChC,2FAA2F;AAC3F,eAAO,MAAM,uBAAuB,QAAS,CAAC;AAC9C,eAAO,MAAM,iBAAiB,kBAAkB,CAAC;AAEjD,MAAM,WAAW,WAAW;IAC1B,OAAO,EAAE,MAAM,CAAC;IAChB,UAAU,EAAE,MAAM,EAAE,CAAC;CACtB;AACD,MAAM,WAAW,YAAY;IAAG,EAAE,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE;AAC1D,MAAM,WAAW,YAAY;IAAG,KAAK,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,YAAY,EAAE,CAAA;CAAE;AAExE,+EAA+E;AAC/E,wBAAgB,UAAU,CAAC,KAAK,EAAE,MAAM,EAAE,aAAa,EAAE,MAAM,GAAG,MAAM,CAEvE;AAED,wBAAgB,kBAAkB,CAAC,CAAC,EAAE,MAAM,GAAG,MAAM,CAEpD;AAED;8DAC8D;AAC9D,wBAAgB,eAAe,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,EAAE,QAAQ,EAAE,MAAM,GAAG,MAAM,EAAE,CAc1F;AAID,wBAAgB,qBAAqB,CAAC,UAAU,EAAE,MAAM,EAAE,GAAG,MAAM,CAElE;AAED,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,EAAE,GAAG,IAAI,CAGrE;AAMD,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,YAAY,EAAE,IAAI,EAAE;IAAE,MAAM,EAAE,OAAO,CAAA;CAAE,GAAG,MAAM,CAQzF;AAED,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,MAAM,GAAG,YAAY,GAAG,IAAI,CAiBtE;AAOD,uFAAuF;AACvF,wBAAgB,WAAW,CAAC,OAAO,EAAE,YAAY,EAAE,EAAE,QAAQ,EAAE,MAAM,GAAG,YAAY,EAAE,CAKrF;AAED,sEAAsE;AACtE,wBAAgB,UAAU,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI,GAAG,MAAM,GAAG,IAAI,CAGjE"}
|
|
@@ -0,0 +1,114 @@
|
|
|
1
|
+
/* The blocks a fold leaves in the conversation, as pure text in and out.
|
|
2
|
+
*
|
|
3
|
+
* Both blocks are PARSED BACK FROM THE MESSAGE on the next fold, so a fold
|
|
4
|
+
* needs no store to remember what the last one kept: the conversation is its
|
|
5
|
+
* own record. The durable copies (CHECKPOINT.md, DIRECTIVES.md) are written by
|
|
6
|
+
* the host; these are only what the model carries. */
|
|
7
|
+
/** The marker every checkpoint (rolling summary) message starts with, so a
|
|
8
|
+
* later pass can recognize one it already wrote instead of collapsing it again. */
|
|
9
|
+
export const CHECKPOINT_MARKER = '[checkpoint] ';
|
|
10
|
+
/** The marker every anchor message starts with. An anchor is context ABOUT the
|
|
11
|
+
* user message that follows it, not something the assistant said. */
|
|
12
|
+
export const ANCHOR_MARKER = '[anchor] ';
|
|
13
|
+
export const USER_TAIL_SHARE = 0.15;
|
|
14
|
+
export const DIRECTIVES_SHARE = 0.02;
|
|
15
|
+
export const SUMMARY_SHARE = 0.1;
|
|
16
|
+
export const SUMMARIZER_INPUT_SHARE = 0.7;
|
|
17
|
+
export const ANCHOR_CHARS = 120;
|
|
18
|
+
/** The window assumed when a host gave none -- matches resolveContextWindow's fallback. */
|
|
19
|
+
export const FALLBACK_CONTEXT_WINDOW = 32000;
|
|
20
|
+
export const DIRECTIVES_MARKER = '[directives] ';
|
|
21
|
+
/** A share of a token window, in characters (4 per token, as estimateFill). */
|
|
22
|
+
export function shareChars(share, contextWindow) {
|
|
23
|
+
return Math.floor(share * contextWindow * 4);
|
|
24
|
+
}
|
|
25
|
+
export function normalizeDirective(s) {
|
|
26
|
+
return s.trim().replace(/\s+/g, ' ').toLowerCase();
|
|
27
|
+
}
|
|
28
|
+
/** Previous then new, de-duplicated by normalized text (first wording wins),
|
|
29
|
+
* then the OLDEST dropped until the total fits `maxChars`. */
|
|
30
|
+
export function mergeDirectives(prev, next, maxChars) {
|
|
31
|
+
const seen = new Set();
|
|
32
|
+
const out = [];
|
|
33
|
+
for (const d of [...prev, ...next]) {
|
|
34
|
+
const t = d.trim().replace(/\s+/g, ' ');
|
|
35
|
+
if (!t)
|
|
36
|
+
continue;
|
|
37
|
+
const k = normalizeDirective(t);
|
|
38
|
+
if (seen.has(k))
|
|
39
|
+
continue;
|
|
40
|
+
seen.add(k);
|
|
41
|
+
out.push(t);
|
|
42
|
+
}
|
|
43
|
+
let total = out.reduce((n, d) => n + d.length, 0);
|
|
44
|
+
while (out.length > 1 && total > maxChars)
|
|
45
|
+
total -= out.shift().length;
|
|
46
|
+
return out;
|
|
47
|
+
}
|
|
48
|
+
const DIRECTIVES_HEAD = 'Standing instructions and decisions from the user. They hold until the user changes them:';
|
|
49
|
+
export function renderDirectivesBlock(directives) {
|
|
50
|
+
return `${DIRECTIVES_MARKER}${DIRECTIVES_HEAD}\n${directives.map((d) => `- ${d}`).join('\n')}`;
|
|
51
|
+
}
|
|
52
|
+
export function parseDirectivesBlock(content) {
|
|
53
|
+
if (!content.startsWith(DIRECTIVES_MARKER))
|
|
54
|
+
return null;
|
|
55
|
+
return content.split('\n').filter((l) => l.startsWith('- ')).map((l) => l.slice(2).trim()).filter(Boolean);
|
|
56
|
+
}
|
|
57
|
+
const SUMMARY_HEAD = /^Conversation so far \(folded (\d+) times?\)\.$/;
|
|
58
|
+
const ENTRY_LINE = /^--- fold (.*) ---$/;
|
|
59
|
+
const NOTICE_PREFIX = 'Earlier conversation was folded ';
|
|
60
|
+
export function renderSummaryBlock(block, opts) {
|
|
61
|
+
const n = block.folds;
|
|
62
|
+
const parts = [`Conversation so far (folded ${n} ${n === 1 ? 'time' : 'times'}).`];
|
|
63
|
+
for (const e of block.entries)
|
|
64
|
+
parts.push(`--- fold ${e.at} ---`, e.body);
|
|
65
|
+
const notice = `${NOTICE_PREFIX}${n} ${n === 1 ? 'time' : 'times'}.`
|
|
66
|
+
+ (opts.recall ? ' Older summaries and the full transcript can be searched with recall_history.' : '');
|
|
67
|
+
parts.push('', notice);
|
|
68
|
+
return `${CHECKPOINT_MARKER}${parts.join('\n')}`;
|
|
69
|
+
}
|
|
70
|
+
export function parseSummaryBlock(content) {
|
|
71
|
+
if (!content.startsWith(CHECKPOINT_MARKER))
|
|
72
|
+
return null;
|
|
73
|
+
const lines = content.slice(CHECKPOINT_MARKER.length).split('\n');
|
|
74
|
+
const head = SUMMARY_HEAD.exec(lines[0] ?? '');
|
|
75
|
+
/* A checkpoint written before this format existed is one plain summary.
|
|
76
|
+
* Treat it as one entry from one fold rather than dropping it. */
|
|
77
|
+
if (!head)
|
|
78
|
+
return { folds: 1, entries: [{ at: '', body: lines.join('\n').trim() }] };
|
|
79
|
+
const entries = [];
|
|
80
|
+
let cur = null;
|
|
81
|
+
for (const line of lines.slice(1)) {
|
|
82
|
+
if (line.startsWith(NOTICE_PREFIX))
|
|
83
|
+
break;
|
|
84
|
+
const m = ENTRY_LINE.exec(line);
|
|
85
|
+
if (m) {
|
|
86
|
+
cur = { at: m[1], body: '' };
|
|
87
|
+
entries.push(cur);
|
|
88
|
+
continue;
|
|
89
|
+
}
|
|
90
|
+
if (cur)
|
|
91
|
+
cur.body = cur.body ? `${cur.body}\n${line}` : line;
|
|
92
|
+
}
|
|
93
|
+
for (const e of entries)
|
|
94
|
+
e.body = e.body.replace(/\n+$/, '');
|
|
95
|
+
return { folds: Number(head[1]), entries };
|
|
96
|
+
}
|
|
97
|
+
/** The size an entry adds to the rendered block: its fold line and its body, each with a newline. */
|
|
98
|
+
function entryChars(e) {
|
|
99
|
+
return `--- fold ${e.at} ---`.length + 1 + e.body.length + 1;
|
|
100
|
+
}
|
|
101
|
+
/** Drop the oldest entries until their RENDERED size fits; the newest always stays. */
|
|
102
|
+
export function trimEntries(entries, maxChars) {
|
|
103
|
+
const out = [...entries];
|
|
104
|
+
let total = out.reduce((n, e) => n + entryChars(e), 0);
|
|
105
|
+
while (out.length > 1 && total > maxChars)
|
|
106
|
+
total -= entryChars(out.shift());
|
|
107
|
+
return out;
|
|
108
|
+
}
|
|
109
|
+
/** What a kept user message was replying to, without a model call. */
|
|
110
|
+
export function anchorText(answered) {
|
|
111
|
+
const t = (answered ?? '').replace(/\s+/g, ' ').trim();
|
|
112
|
+
return t ? `re: ${t.slice(0, ANCHOR_CHARS)}` : null;
|
|
113
|
+
}
|
|
114
|
+
//# sourceMappingURL=foldBlocks.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"foldBlocks.js","sourceRoot":"","sources":["../../core/foldBlocks.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import type { ChatCompletionMessageParam } from 'openai/resources/chat/completions';
|
|
2
|
+
import type { FoldSummary } from './foldBlocks';
|
|
3
|
+
/** One fold as the host records it: what the summarizer kept, and the raw
|
|
4
|
+
* messages it was handed, so recall can still find what left the context. */
|
|
5
|
+
export interface FoldRecord extends FoldSummary {
|
|
6
|
+
collapsed: ChatCompletionMessageParam[];
|
|
7
|
+
}
|
|
8
|
+
export interface TranscriptReader {
|
|
9
|
+
/** This session's stored messages, either stored shape, including what
|
|
10
|
+
* folds removed. Throws when there is no readable history at all. */
|
|
11
|
+
messages(): Promise<unknown[]>;
|
|
12
|
+
/** CHECKPOINT.md text, or null when there is none. */
|
|
13
|
+
checkpoints(): Promise<string | null>;
|
|
14
|
+
}
|
|
15
|
+
export interface DirectivesFile {
|
|
16
|
+
/** Parsed DIRECTIVES.md, or null when absent/unreadable. */
|
|
17
|
+
read(): Promise<string[] | null>;
|
|
18
|
+
write(directives: string[]): Promise<void>;
|
|
19
|
+
}
|
|
20
|
+
export interface FoldStorage {
|
|
21
|
+
onFold?(record: FoldRecord): Promise<void>;
|
|
22
|
+
directives?: DirectivesFile;
|
|
23
|
+
transcript?: TranscriptReader;
|
|
24
|
+
}
|
|
25
|
+
//# sourceMappingURL=foldTypes.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"foldTypes.d.ts","sourceRoot":"","sources":["../../core/foldTypes.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,0BAA0B,EAAE,MAAM,mCAAmC,CAAC;AACpF,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAEhD;6EAC6E;AAC7E,MAAM,WAAW,UAAW,SAAQ,WAAW;IAC7C,SAAS,EAAE,0BAA0B,EAAE,CAAC;CACzC;AAED,MAAM,WAAW,gBAAgB;IAC/B;yEACqE;IACrE,QAAQ,IAAI,OAAO,CAAC,OAAO,EAAE,CAAC,CAAC;IAC/B,sDAAsD;IACtD,WAAW,IAAI,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAAC;CACvC;AAED,MAAM,WAAW,cAAc;IAC7B,4DAA4D;IAC5D,IAAI,IAAI,OAAO,CAAC,MAAM,EAAE,GAAG,IAAI,CAAC,CAAC;IACjC,KAAK,CAAC,UAAU,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CAC5C;AAED,MAAM,WAAW,WAAW;IAC1B,MAAM,CAAC,CAAC,MAAM,EAAE,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAC3C,UAAU,CAAC,EAAE,cAAc,CAAC;IAC5B,UAAU,CAAC,EAAE,gBAAgB,CAAC;CAC/B"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"foldTypes.js","sourceRoot":"","sources":["../../core/foldTypes.ts"],"names":[],"mappings":""}
|
package/dist/core/loop.d.ts
CHANGED
|
@@ -5,7 +5,17 @@ import { type RecoveryConfig } from './recovery';
|
|
|
5
5
|
import type { Policy } from '@corenel/protocol';
|
|
6
6
|
import type { PermissionService } from '../guardrail/permission-service';
|
|
7
7
|
import { type CompressionConfig } from '../compression';
|
|
8
|
+
import { type FoldSummary } from './foldBlocks';
|
|
9
|
+
import type { FoldStorage } from './foldTypes';
|
|
8
10
|
import { type SkillEntry } from '../tools/skillTool';
|
|
11
|
+
/** What the run ends with when even a folded history will not fit the window. */
|
|
12
|
+
export declare const OVERFLOW_GIVE_UP = "The conversation no longer fits this model's context window even after folding. Start a new chat or switch to a larger-context model.";
|
|
13
|
+
/** The overflow ending when there was nothing a fold could remove (compaction
|
|
14
|
+
* not configured, or nothing collapsible). */
|
|
15
|
+
export declare const OVERFLOW_NO_FOLD = "The conversation no longer fits this model's context window and there is nothing left to fold. Start a new chat or switch to a larger-context model.";
|
|
16
|
+
/** The overflow ending when a fold was possible but did not complete (the
|
|
17
|
+
* summarizer threw, for one). The loop appends the fold error and the 400. */
|
|
18
|
+
export declare const OVERFLOW_FOLD_FAILED = "The conversation no longer fits this model's context window and folding it failed. Try again, or start a new chat.";
|
|
9
19
|
export interface RunAgentArgs {
|
|
10
20
|
client: OpenAI;
|
|
11
21
|
model: string;
|
|
@@ -54,13 +64,17 @@ export interface RunAgentArgs {
|
|
|
54
64
|
* then behaves exactly as it did before this existed, which is to say it
|
|
55
65
|
* runs until the provider rejects an oversized request with a fatal 400.
|
|
56
66
|
* `summarize` is a host concern because it costs a model call; the host also
|
|
57
|
-
* decides
|
|
58
|
-
* not an invisible blob). */
|
|
67
|
+
* decides, through `storage`, where a fold is persisted (files the user can
|
|
68
|
+
* edit, not an invisible blob). */
|
|
59
69
|
compaction?: {
|
|
60
|
-
summarize: (collapsed: ChatCompletionMessageParam[]) => Promise<
|
|
61
|
-
|
|
62
|
-
|
|
70
|
+
summarize: (collapsed: ChatCompletionMessageParam[]) => Promise<FoldSummary>;
|
|
71
|
+
/** Where folds are recorded and what backs recall_history/update_directives.
|
|
72
|
+
* Absent: the run still folds, it just records nothing. */
|
|
73
|
+
storage?: FoldStorage;
|
|
63
74
|
};
|
|
75
|
+
/** Fold before the first request regardless of fill: set when the chat's own
|
|
76
|
+
* model is gone and the fallback's window cannot hold the history. */
|
|
77
|
+
forceFoldFirstTurn?: boolean;
|
|
64
78
|
/** Intra-run self-healing budget (stream-retry + tool-steer). Omit for defaults. */
|
|
65
79
|
recovery?: Partial<RecoveryConfig>;
|
|
66
80
|
/** Optional output-token ceiling forwarded to the model on every turn (reasoning
|
|
@@ -81,6 +95,13 @@ export interface RunAgentArgs {
|
|
|
81
95
|
* with no tool calls, so a message that arrived during the final turn is not
|
|
82
96
|
* stranded by a run that stops one moment too early. */
|
|
83
97
|
hasPendingInjection?: () => boolean;
|
|
98
|
+
/** Asked when the model ends a turn with no tool calls, i.e. when the run is
|
|
99
|
+
* about to finish. Return null to let it finish; return a message to keep it
|
|
100
|
+
* going, which is appended as the next user turn. For a host that knows the
|
|
101
|
+
* run has more to do than the model thinks: an orchestrator whose approved
|
|
102
|
+
* plan still has tasks nobody started. Bounded by MAX_STOP_NUDGES in a row
|
|
103
|
+
* without a tool call, so a model that is genuinely stuck still stops. */
|
|
104
|
+
beforeStop?: () => string | null;
|
|
84
105
|
/** Called ONCE at run start with a function that cuts the current model
|
|
85
106
|
* stream without ending the run. The partial completion is discarded (it was
|
|
86
107
|
* never pushed to `messages`, so no orphaned tool_calls can survive), any
|
|
@@ -130,5 +151,8 @@ export interface RunAgentResult {
|
|
|
130
151
|
* source and per-tool switches in the composer popout -- is the real answer;
|
|
131
152
|
* this only guarantees the request is valid when nobody has. */
|
|
132
153
|
export declare const MAX_PROVIDER_TOOLS = 128;
|
|
154
|
+
/** How many `beforeStop` nudges in a row (turns with no tool call) a run gets
|
|
155
|
+
* before it is allowed to stop anyway. A tool call resets the count. */
|
|
156
|
+
export declare const MAX_STOP_NUDGES = 2;
|
|
133
157
|
export declare function runAgent(args: RunAgentArgs): Promise<RunAgentResult>;
|
|
134
158
|
//# sourceMappingURL=loop.d.ts.map
|
package/dist/core/loop.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"loop.d.ts","sourceRoot":"","sources":["../../core/loop.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,MAAM,MAAM,QAAQ,CAAC;AACjC,OAAO,KAAK,EAAE,0BAA0B,EAAsB,MAAM,mCAAmC,CAAC;AACxG,OAAO,KAAK,EAAE,SAAS,EAAE,WAAW,EAAE,UAAU,EAAE,KAAK,EAA4B,MAAM,mBAAmB,CAAC;AAE7G,OAAO,EACY,KAAK,cAAc,EAErC,MAAM,YAAY,CAAC;AAMpB,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAC;AAChD,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,iCAAiC,CAAC;AACzE,OAAO,EAA0D,KAAK,iBAAiB,EAAE,MAAM,gBAAgB,CAAC;
|
|
1
|
+
{"version":3,"file":"loop.d.ts","sourceRoot":"","sources":["../../core/loop.ts"],"names":[],"mappings":"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"}
|