@namzu/sdk 0.1.2 → 0.1.4-rc.1
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/README.md +19 -1
- package/dist/advisory/context.d.ts +23 -0
- package/dist/advisory/context.d.ts.map +1 -0
- package/dist/advisory/context.js +33 -0
- package/dist/advisory/context.js.map +1 -0
- package/dist/advisory/evaluator.d.ts +14 -0
- package/dist/advisory/evaluator.d.ts.map +1 -0
- package/dist/advisory/evaluator.js +87 -0
- package/dist/advisory/evaluator.js.map +1 -0
- package/dist/advisory/executor.d.ts +40 -0
- package/dist/advisory/executor.d.ts.map +1 -0
- package/dist/advisory/executor.js +132 -0
- package/dist/advisory/executor.js.map +1 -0
- package/dist/advisory/index.d.ts +6 -0
- package/dist/advisory/index.d.ts.map +1 -0
- package/dist/advisory/index.js +5 -0
- package/dist/advisory/index.js.map +1 -0
- package/dist/advisory/registry.d.ts +14 -0
- package/dist/advisory/registry.d.ts.map +1 -0
- package/dist/advisory/registry.js +36 -0
- package/dist/advisory/registry.js.map +1 -0
- package/dist/agents/SupervisorAgent.d.ts.map +1 -1
- package/dist/agents/SupervisorAgent.js +11 -1
- package/dist/agents/SupervisorAgent.js.map +1 -1
- package/dist/compaction/extractor.d.ts +7 -0
- package/dist/compaction/extractor.d.ts.map +1 -0
- package/dist/compaction/extractor.js +131 -0
- package/dist/compaction/extractor.js.map +1 -0
- package/dist/compaction/index.d.ts +6 -0
- package/dist/compaction/index.d.ts.map +1 -0
- package/dist/compaction/index.js +5 -0
- package/dist/compaction/index.js.map +1 -0
- package/dist/compaction/manager.d.ts +22 -0
- package/dist/compaction/manager.d.ts.map +1 -0
- package/dist/compaction/manager.js +91 -0
- package/dist/compaction/manager.js.map +1 -0
- package/dist/compaction/serializer.d.ts +3 -0
- package/dist/compaction/serializer.d.ts.map +1 -0
- package/dist/compaction/serializer.js +67 -0
- package/dist/compaction/serializer.js.map +1 -0
- package/dist/compaction/types.d.ts +40 -0
- package/dist/compaction/types.d.ts.map +1 -0
- package/dist/compaction/types.js +2 -0
- package/dist/compaction/types.js.map +1 -0
- package/dist/compaction/verifier.d.ts +6 -0
- package/dist/compaction/verifier.d.ts.map +1 -0
- package/dist/compaction/verifier.js +68 -0
- package/dist/compaction/verifier.js.map +1 -0
- package/dist/config/runtime.d.ts +193 -0
- package/dist/config/runtime.d.ts.map +1 -1
- package/dist/config/runtime.js +29 -0
- package/dist/config/runtime.js.map +1 -1
- package/dist/constants/advisory/index.d.ts +8 -0
- package/dist/constants/advisory/index.d.ts.map +1 -0
- package/dist/constants/advisory/index.js +8 -0
- package/dist/constants/advisory/index.js.map +1 -0
- package/dist/constants/compaction/index.d.ts +17 -0
- package/dist/constants/compaction/index.d.ts.map +1 -0
- package/dist/constants/compaction/index.js +17 -0
- package/dist/constants/compaction/index.js.map +1 -0
- package/dist/constants/index.d.ts +2 -0
- package/dist/constants/index.d.ts.map +1 -1
- package/dist/constants/index.js +2 -0
- package/dist/constants/index.js.map +1 -1
- package/dist/contracts/schemas.d.ts +20 -20
- package/dist/index.d.ts +13 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +8 -1
- package/dist/index.js.map +1 -1
- package/dist/persona/assembler.d.ts +2 -1
- package/dist/persona/assembler.d.ts.map +1 -1
- package/dist/persona/assembler.js +23 -0
- package/dist/persona/assembler.js.map +1 -1
- package/dist/registry/tool/execute.d.ts +3 -0
- package/dist/registry/tool/execute.d.ts.map +1 -1
- package/dist/registry/tool/execute.js +45 -11
- package/dist/registry/tool/execute.js.map +1 -1
- package/dist/router/index.d.ts +2 -0
- package/dist/router/index.d.ts.map +1 -0
- package/dist/router/index.js +2 -0
- package/dist/router/index.js.map +1 -0
- package/dist/router/task-router.d.ts +8 -0
- package/dist/router/task-router.d.ts.map +1 -0
- package/dist/router/task-router.js +19 -0
- package/dist/router/task-router.js.map +1 -0
- package/dist/runtime/query/executor.d.ts +1 -0
- package/dist/runtime/query/executor.d.ts.map +1 -1
- package/dist/runtime/query/executor.js +19 -1
- package/dist/runtime/query/executor.js.map +1 -1
- package/dist/runtime/query/index.d.ts +2 -0
- package/dist/runtime/query/index.d.ts.map +1 -1
- package/dist/runtime/query/index.js.map +1 -1
- package/dist/runtime/query/prompt.d.ts.map +1 -1
- package/dist/runtime/query/prompt.js +4 -0
- package/dist/runtime/query/prompt.js.map +1 -1
- package/dist/tools/advisory/index.d.ts +7 -0
- package/dist/tools/advisory/index.d.ts.map +1 -0
- package/dist/tools/advisory/index.js +125 -0
- package/dist/tools/advisory/index.js.map +1 -0
- package/dist/tools/defineTool.d.ts +1 -0
- package/dist/tools/defineTool.d.ts.map +1 -1
- package/dist/tools/defineTool.js +1 -0
- package/dist/tools/defineTool.js.map +1 -1
- package/dist/types/advisory/config.d.ts +33 -0
- package/dist/types/advisory/config.d.ts.map +1 -0
- package/dist/types/advisory/config.js +2 -0
- package/dist/types/advisory/config.js.map +1 -0
- package/dist/types/advisory/index.d.ts +4 -0
- package/dist/types/advisory/index.d.ts.map +1 -0
- package/dist/types/advisory/index.js +2 -0
- package/dist/types/advisory/index.js.map +1 -0
- package/dist/types/advisory/result.d.ts +35 -0
- package/dist/types/advisory/result.d.ts.map +1 -0
- package/dist/types/advisory/result.js +2 -0
- package/dist/types/advisory/result.js.map +1 -0
- package/dist/types/advisory/trigger.d.ts +44 -0
- package/dist/types/advisory/trigger.d.ts.map +1 -0
- package/dist/types/advisory/trigger.js +2 -0
- package/dist/types/advisory/trigger.js.map +1 -0
- package/dist/types/agent/factory.d.ts +2 -0
- package/dist/types/agent/factory.d.ts.map +1 -1
- package/dist/types/agent/supervisor.d.ts +2 -0
- package/dist/types/agent/supervisor.d.ts.map +1 -1
- package/dist/types/ids/index.d.ts +2 -0
- package/dist/types/ids/index.d.ts.map +1 -1
- package/dist/types/persona/index.d.ts +9 -0
- package/dist/types/persona/index.d.ts.map +1 -1
- package/dist/types/router/index.d.ts +2 -0
- package/dist/types/router/index.d.ts.map +1 -0
- package/dist/types/router/index.js +2 -0
- package/dist/types/router/index.js.map +1 -0
- package/dist/types/router/task-router.d.ts +12 -0
- package/dist/types/router/task-router.d.ts.map +1 -0
- package/dist/types/router/task-router.js +2 -0
- package/dist/types/router/task-router.js.map +1 -0
- package/dist/types/tool/index.d.ts +13 -0
- package/dist/types/tool/index.d.ts.map +1 -1
- package/dist/utils/id.d.ts +3 -1
- package/dist/utils/id.d.ts.map +1 -1
- package/dist/utils/id.js +6 -0
- package/dist/utils/id.js.map +1 -1
- package/dist/utils/shell-compress.d.ts +13 -0
- package/dist/utils/shell-compress.d.ts.map +1 -0
- package/dist/utils/shell-compress.js +97 -0
- package/dist/utils/shell-compress.js.map +1 -0
- package/package.json +9 -5
- package/src/advisory/context.ts +47 -0
- package/src/advisory/evaluator.ts +98 -0
- package/src/advisory/executor.ts +187 -0
- package/src/advisory/index.ts +5 -0
- package/src/advisory/registry.ts +42 -0
- package/src/agents/SupervisorAgent.ts +12 -1
- package/src/compaction/extractor.ts +149 -0
- package/src/compaction/index.ts +21 -0
- package/src/compaction/manager.ts +107 -0
- package/src/compaction/serializer.ts +88 -0
- package/src/compaction/types.ts +37 -0
- package/src/compaction/verifier.ts +91 -0
- package/src/config/runtime.ts +33 -0
- package/src/constants/advisory/index.ts +7 -0
- package/src/constants/compaction/index.ts +20 -0
- package/src/constants/index.ts +2 -0
- package/src/index.ts +50 -2
- package/src/persona/assembler.ts +36 -1
- package/src/registry/tool/execute.ts +51 -11
- package/src/router/index.ts +1 -0
- package/src/router/task-router.ts +24 -0
- package/src/runtime/query/executor.ts +22 -1
- package/src/runtime/query/index.ts +3 -0
- package/src/runtime/query/prompt.ts +5 -0
- package/src/tools/advisory/index.ts +157 -0
- package/src/tools/defineTool.ts +2 -0
- package/src/types/advisory/config.ts +35 -0
- package/src/types/advisory/index.ts +18 -0
- package/src/types/advisory/result.ts +34 -0
- package/src/types/advisory/trigger.ts +39 -0
- package/src/types/agent/factory.ts +3 -0
- package/src/types/agent/supervisor.ts +3 -0
- package/src/types/ids/index.ts +2 -0
- package/src/types/persona/index.ts +11 -0
- package/src/types/router/index.ts +1 -0
- package/src/types/router/task-router.ts +20 -0
- package/src/types/tool/index.ts +15 -0
- package/src/utils/id.ts +10 -0
- package/src/utils/shell-compress.ts +137 -0
|
@@ -0,0 +1,131 @@
|
|
|
1
|
+
import { EDIT_TOOLS, READ_TOOLS, SEARCH_TOOLS, SHELL_TOOLS } from '../constants/compaction/index.js';
|
|
2
|
+
function tryParseJson(raw) {
|
|
3
|
+
try {
|
|
4
|
+
return JSON.parse(raw);
|
|
5
|
+
}
|
|
6
|
+
catch {
|
|
7
|
+
return null;
|
|
8
|
+
}
|
|
9
|
+
}
|
|
10
|
+
function extractFilePath(args) {
|
|
11
|
+
if (typeof args.path === 'string')
|
|
12
|
+
return args.path;
|
|
13
|
+
if (typeof args.file_path === 'string')
|
|
14
|
+
return args.file_path;
|
|
15
|
+
if (typeof args.filePath === 'string')
|
|
16
|
+
return args.filePath;
|
|
17
|
+
return null;
|
|
18
|
+
}
|
|
19
|
+
function splitSentences(text) {
|
|
20
|
+
return text
|
|
21
|
+
.split(/(?<=[.!?])\s+/)
|
|
22
|
+
.map((s) => s.trim())
|
|
23
|
+
.filter((s) => s.length > 0);
|
|
24
|
+
}
|
|
25
|
+
function isSubstantive(sentence) {
|
|
26
|
+
const fillerPatterns = [
|
|
27
|
+
/^(ok|okay|sure|alright|got it|understood|i see|let me|i'll|i will|now i|here)/i,
|
|
28
|
+
/^(great|perfect|excellent|good|nice|cool|right|yes|no|thanks)/i,
|
|
29
|
+
/^(let's|we can|we should|i can|i should)/i,
|
|
30
|
+
];
|
|
31
|
+
return !fillerPatterns.some((pattern) => pattern.test(sentence));
|
|
32
|
+
}
|
|
33
|
+
function truncateResult(result, maxLen) {
|
|
34
|
+
if (result.length <= maxLen)
|
|
35
|
+
return result;
|
|
36
|
+
return `${result.slice(0, maxLen)}...`;
|
|
37
|
+
}
|
|
38
|
+
export function extractFromToolCall(manager, toolName, args) {
|
|
39
|
+
const parsed = tryParseJson(args);
|
|
40
|
+
if (!parsed)
|
|
41
|
+
return;
|
|
42
|
+
const filePath = extractFilePath(parsed);
|
|
43
|
+
if (READ_TOOLS.has(toolName) && filePath) {
|
|
44
|
+
manager.trackFile(filePath, { type: 'read', summary: 'read' });
|
|
45
|
+
}
|
|
46
|
+
else if (EDIT_TOOLS.has(toolName) && filePath) {
|
|
47
|
+
const detail = typeof parsed.content === 'string' ? truncateResult(parsed.content, 100) : 'modified';
|
|
48
|
+
manager.trackFile(filePath, { type: 'edit', detail });
|
|
49
|
+
}
|
|
50
|
+
else if (SEARCH_TOOLS.has(toolName)) {
|
|
51
|
+
const pattern = typeof parsed.pattern === 'string' ? parsed.pattern : '';
|
|
52
|
+
const path = typeof parsed.path === 'string' ? parsed.path : '';
|
|
53
|
+
if (pattern || path) {
|
|
54
|
+
manager.addDiscovery(`Searched: ${pattern}${path ? ` in ${path}` : ''}`);
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
else if (SHELL_TOOLS.has(toolName)) {
|
|
58
|
+
const command = typeof parsed.command === 'string' ? parsed.command : '';
|
|
59
|
+
if (command) {
|
|
60
|
+
manager.addToolResult({
|
|
61
|
+
tool: toolName,
|
|
62
|
+
summary: `Ran: ${truncateResult(command, 120)}`,
|
|
63
|
+
timestamp: Date.now(),
|
|
64
|
+
});
|
|
65
|
+
}
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
export function extractFromToolResult(manager, toolName, result, isError) {
|
|
69
|
+
if (isError) {
|
|
70
|
+
manager.addFailure(`${toolName}: ${truncateResult(result, 200)}`);
|
|
71
|
+
return;
|
|
72
|
+
}
|
|
73
|
+
if (READ_TOOLS.has(toolName)) {
|
|
74
|
+
const lineCount = result.split('\n').length;
|
|
75
|
+
manager.addToolResult({
|
|
76
|
+
tool: toolName,
|
|
77
|
+
summary: `${lineCount} lines`,
|
|
78
|
+
timestamp: Date.now(),
|
|
79
|
+
});
|
|
80
|
+
}
|
|
81
|
+
else if (SEARCH_TOOLS.has(toolName)) {
|
|
82
|
+
const matches = result.split('\n').filter((l) => l.trim().length > 0);
|
|
83
|
+
manager.addToolResult({
|
|
84
|
+
tool: toolName,
|
|
85
|
+
summary: `${matches.length} results`,
|
|
86
|
+
timestamp: Date.now(),
|
|
87
|
+
});
|
|
88
|
+
}
|
|
89
|
+
else if (EDIT_TOOLS.has(toolName)) {
|
|
90
|
+
manager.addToolResult({
|
|
91
|
+
tool: toolName,
|
|
92
|
+
summary: truncateResult(result, 100),
|
|
93
|
+
timestamp: Date.now(),
|
|
94
|
+
});
|
|
95
|
+
}
|
|
96
|
+
else if (SHELL_TOOLS.has(toolName)) {
|
|
97
|
+
manager.addToolResult({
|
|
98
|
+
tool: toolName,
|
|
99
|
+
summary: truncateResult(result, 150),
|
|
100
|
+
timestamp: Date.now(),
|
|
101
|
+
});
|
|
102
|
+
}
|
|
103
|
+
else {
|
|
104
|
+
manager.addToolResult({
|
|
105
|
+
tool: toolName,
|
|
106
|
+
summary: truncateResult(result, 120),
|
|
107
|
+
timestamp: Date.now(),
|
|
108
|
+
});
|
|
109
|
+
}
|
|
110
|
+
}
|
|
111
|
+
export function extractFromUserMessage(manager, content, isFirst) {
|
|
112
|
+
if (!content.trim())
|
|
113
|
+
return;
|
|
114
|
+
if (isFirst) {
|
|
115
|
+
manager.setTask(content.trim());
|
|
116
|
+
}
|
|
117
|
+
else {
|
|
118
|
+
manager.addUserRequirement(content.trim());
|
|
119
|
+
}
|
|
120
|
+
}
|
|
121
|
+
export function extractFromAssistantMessage(manager, content, config) {
|
|
122
|
+
if (!content || !content.trim())
|
|
123
|
+
return;
|
|
124
|
+
const sentences = splitSentences(content);
|
|
125
|
+
const substantive = sentences.filter(isSubstantive);
|
|
126
|
+
const selected = substantive.slice(0, config.maxSentencesPerTurn);
|
|
127
|
+
for (const sentence of selected) {
|
|
128
|
+
manager.addAssistantNote(sentence);
|
|
129
|
+
}
|
|
130
|
+
}
|
|
131
|
+
//# sourceMappingURL=extractor.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"extractor.js","sourceRoot":"","sources":["../../src/compaction/extractor.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
export type { WorkingState, PlanSlot, FileSlot, FileAction, ToolResultSlot, CompactionStrategy, } from './types.js';
|
|
2
|
+
export { WorkingStateManager } from './manager.js';
|
|
3
|
+
export { serializeState } from './serializer.js';
|
|
4
|
+
export { extractFromToolCall, extractFromToolResult, extractFromUserMessage, extractFromAssistantMessage, } from './extractor.js';
|
|
5
|
+
export { buildVerifiedSummary } from './verifier.js';
|
|
6
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/compaction/index.ts"],"names":[],"mappings":"AAAA,YAAY,EACX,YAAY,EACZ,QAAQ,EACR,QAAQ,EACR,UAAU,EACV,cAAc,EACd,kBAAkB,GAClB,MAAM,YAAY,CAAA;AAEnB,OAAO,EAAE,mBAAmB,EAAE,MAAM,cAAc,CAAA;AAElD,OAAO,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAA;AAEhD,OAAO,EACN,mBAAmB,EACnB,qBAAqB,EACrB,sBAAsB,EACtB,2BAA2B,GAC3B,MAAM,gBAAgB,CAAA;AAEvB,OAAO,EAAE,oBAAoB,EAAE,MAAM,eAAe,CAAA"}
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
export { WorkingStateManager } from './manager.js';
|
|
2
|
+
export { serializeState } from './serializer.js';
|
|
3
|
+
export { extractFromToolCall, extractFromToolResult, extractFromUserMessage, extractFromAssistantMessage, } from './extractor.js';
|
|
4
|
+
export { buildVerifiedSummary } from './verifier.js';
|
|
5
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/compaction/index.ts"],"names":[],"mappings":"AASA,OAAO,EAAE,mBAAmB,EAAE,MAAM,cAAc,CAAA;AAElD,OAAO,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAA;AAEhD,OAAO,EACN,mBAAmB,EACnB,qBAAqB,EACrB,sBAAsB,EACtB,2BAA2B,GAC3B,MAAM,gBAAgB,CAAA;AAEvB,OAAO,EAAE,oBAAoB,EAAE,MAAM,eAAe,CAAA"}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import type { CompactionConfig } from '../config/runtime.js';
|
|
2
|
+
import type { FileAction, PlanSlot, ToolResultSlot, WorkingState } from './types.js';
|
|
3
|
+
export declare class WorkingStateManager {
|
|
4
|
+
private state;
|
|
5
|
+
private readonly config;
|
|
6
|
+
constructor(config: CompactionConfig);
|
|
7
|
+
setTask(task: string): void;
|
|
8
|
+
setPlan(plan: PlanSlot[]): void;
|
|
9
|
+
trackFile(path: string, action: FileAction): void;
|
|
10
|
+
addDecision(decision: string): void;
|
|
11
|
+
addFailure(failure: string): void;
|
|
12
|
+
addDiscovery(discovery: string): void;
|
|
13
|
+
addEnvironment(env: string): void;
|
|
14
|
+
addToolResult(result: ToolResultSlot): void;
|
|
15
|
+
addUserRequirement(requirement: string): void;
|
|
16
|
+
addAssistantNote(note: string): void;
|
|
17
|
+
slotCount(): number;
|
|
18
|
+
getState(): WorkingState;
|
|
19
|
+
reset(): void;
|
|
20
|
+
private pushWithEviction;
|
|
21
|
+
}
|
|
22
|
+
//# sourceMappingURL=manager.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"manager.d.ts","sourceRoot":"","sources":["../../src/compaction/manager.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAA;AAC5D,OAAO,KAAK,EAAE,UAAU,EAAY,QAAQ,EAAE,cAAc,EAAE,YAAY,EAAE,MAAM,YAAY,CAAA;AAiB9F,qBAAa,mBAAmB;IAC/B,OAAO,CAAC,KAAK,CAAc;IAC3B,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAkB;gBAE7B,MAAM,EAAE,gBAAgB;IAKpC,OAAO,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI;IAI3B,OAAO,CAAC,IAAI,EAAE,QAAQ,EAAE,GAAG,IAAI;IAI/B,SAAS,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,UAAU,GAAG,IAAI;IASjD,WAAW,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI;IAInC,UAAU,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI;IAIjC,YAAY,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI;IAIrC,cAAc,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI;IAIjC,aAAa,CAAC,MAAM,EAAE,cAAc,GAAG,IAAI;IAO3C,kBAAkB,CAAC,WAAW,EAAE,MAAM,GAAG,IAAI;IAK7C,gBAAgB,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI;IAKpC,SAAS,IAAI,MAAM;IAenB,QAAQ,IAAI,YAAY;IAIxB,KAAK,IAAI,IAAI;IAIb,OAAO,CAAC,gBAAgB;CAMxB"}
|
|
@@ -0,0 +1,91 @@
|
|
|
1
|
+
function createEmptyState() {
|
|
2
|
+
return {
|
|
3
|
+
task: '',
|
|
4
|
+
plan: [],
|
|
5
|
+
files: new Map(),
|
|
6
|
+
decisions: [],
|
|
7
|
+
failures: [],
|
|
8
|
+
discoveries: [],
|
|
9
|
+
environment: [],
|
|
10
|
+
toolResults: [],
|
|
11
|
+
userRequirements: [],
|
|
12
|
+
assistantNotes: [],
|
|
13
|
+
};
|
|
14
|
+
}
|
|
15
|
+
export class WorkingStateManager {
|
|
16
|
+
state;
|
|
17
|
+
config;
|
|
18
|
+
constructor(config) {
|
|
19
|
+
this.config = config;
|
|
20
|
+
this.state = createEmptyState();
|
|
21
|
+
}
|
|
22
|
+
setTask(task) {
|
|
23
|
+
this.state.task = task.slice(0, this.config.maxCharsPerTask);
|
|
24
|
+
}
|
|
25
|
+
setPlan(plan) {
|
|
26
|
+
this.state.plan = plan;
|
|
27
|
+
}
|
|
28
|
+
trackFile(path, action) {
|
|
29
|
+
const existing = this.state.files.get(path);
|
|
30
|
+
if (existing) {
|
|
31
|
+
existing.actions.push(action);
|
|
32
|
+
}
|
|
33
|
+
else {
|
|
34
|
+
this.state.files.set(path, { path, actions: [action] });
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
addDecision(decision) {
|
|
38
|
+
this.pushWithEviction(this.state.decisions, decision, this.config.maxListSize);
|
|
39
|
+
}
|
|
40
|
+
addFailure(failure) {
|
|
41
|
+
this.pushWithEviction(this.state.failures, failure, this.config.maxListSize);
|
|
42
|
+
}
|
|
43
|
+
addDiscovery(discovery) {
|
|
44
|
+
this.pushWithEviction(this.state.discoveries, discovery, this.config.maxListSize);
|
|
45
|
+
}
|
|
46
|
+
addEnvironment(env) {
|
|
47
|
+
this.pushWithEviction(this.state.environment, env, this.config.maxListSize);
|
|
48
|
+
}
|
|
49
|
+
addToolResult(result) {
|
|
50
|
+
this.state.toolResults.push(result);
|
|
51
|
+
while (this.state.toolResults.length > this.config.maxToolResults) {
|
|
52
|
+
this.state.toolResults.shift();
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
addUserRequirement(requirement) {
|
|
56
|
+
const truncated = requirement.slice(0, this.config.maxCharsPerRequirement);
|
|
57
|
+
this.pushWithEviction(this.state.userRequirements, truncated, this.config.maxListSize);
|
|
58
|
+
}
|
|
59
|
+
addAssistantNote(note) {
|
|
60
|
+
const truncated = note.slice(0, this.config.maxCharsPerNote);
|
|
61
|
+
this.pushWithEviction(this.state.assistantNotes, truncated, this.config.maxListSize);
|
|
62
|
+
}
|
|
63
|
+
slotCount() {
|
|
64
|
+
let count = 0;
|
|
65
|
+
if (this.state.task)
|
|
66
|
+
count++;
|
|
67
|
+
count += this.state.plan.length;
|
|
68
|
+
count += this.state.files.size;
|
|
69
|
+
count += this.state.decisions.length;
|
|
70
|
+
count += this.state.failures.length;
|
|
71
|
+
count += this.state.discoveries.length;
|
|
72
|
+
count += this.state.environment.length;
|
|
73
|
+
count += this.state.toolResults.length;
|
|
74
|
+
count += this.state.userRequirements.length;
|
|
75
|
+
count += this.state.assistantNotes.length;
|
|
76
|
+
return count;
|
|
77
|
+
}
|
|
78
|
+
getState() {
|
|
79
|
+
return this.state;
|
|
80
|
+
}
|
|
81
|
+
reset() {
|
|
82
|
+
this.state = createEmptyState();
|
|
83
|
+
}
|
|
84
|
+
pushWithEviction(list, item, max) {
|
|
85
|
+
list.push(item);
|
|
86
|
+
while (list.length > max) {
|
|
87
|
+
list.shift();
|
|
88
|
+
}
|
|
89
|
+
}
|
|
90
|
+
}
|
|
91
|
+
//# sourceMappingURL=manager.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"manager.js","sourceRoot":"","sources":["../../src/compaction/manager.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"serializer.d.ts","sourceRoot":"","sources":["../../src/compaction/serializer.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAY,YAAY,EAAE,MAAM,YAAY,CAAA;AA0CxD,wBAAgB,cAAc,CAAC,KAAK,EAAE,YAAY,GAAG,MAAM,CA4C1D"}
|
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
import { SECTION_HEADERS } from '../constants/compaction/index.js';
|
|
2
|
+
const PLAN_STATUS_ICONS = {
|
|
3
|
+
pending: '\u25CB',
|
|
4
|
+
active: '\u25C9',
|
|
5
|
+
done: '\u2713',
|
|
6
|
+
skipped: '\u2717',
|
|
7
|
+
};
|
|
8
|
+
function renderPlan(plan) {
|
|
9
|
+
return plan.map((slot) => `- ${PLAN_STATUS_ICONS[slot.status]} ${slot.label}`).join('\n');
|
|
10
|
+
}
|
|
11
|
+
function renderFiles(files) {
|
|
12
|
+
const lines = [];
|
|
13
|
+
for (const [, slot] of files) {
|
|
14
|
+
lines.push(`- \`${slot.path}\``);
|
|
15
|
+
for (const action of slot.actions) {
|
|
16
|
+
if (action.type === 'delete') {
|
|
17
|
+
lines.push(' - deleted');
|
|
18
|
+
}
|
|
19
|
+
else {
|
|
20
|
+
const desc = 'detail' in action ? action.detail : action.summary;
|
|
21
|
+
lines.push(` - ${action.type}: ${desc ?? ''}`);
|
|
22
|
+
}
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
return lines.join('\n');
|
|
26
|
+
}
|
|
27
|
+
function renderList(items) {
|
|
28
|
+
return items.map((item) => `- ${item}`).join('\n');
|
|
29
|
+
}
|
|
30
|
+
function renderToolResults(results) {
|
|
31
|
+
return results.map((r) => `- **${r.tool}**: ${r.summary}`).join('\n');
|
|
32
|
+
}
|
|
33
|
+
export function serializeState(state) {
|
|
34
|
+
const sections = [];
|
|
35
|
+
if (state.task) {
|
|
36
|
+
sections.push(`${SECTION_HEADERS.task}\n\n${state.task}`);
|
|
37
|
+
}
|
|
38
|
+
if (state.userRequirements.length > 0) {
|
|
39
|
+
sections.push(`${SECTION_HEADERS.userRequirements}\n\n${renderList(state.userRequirements)}`);
|
|
40
|
+
}
|
|
41
|
+
if (state.plan.length > 0) {
|
|
42
|
+
sections.push(`${SECTION_HEADERS.plan}\n\n${renderPlan(state.plan)}`);
|
|
43
|
+
}
|
|
44
|
+
if (state.environment.length > 0) {
|
|
45
|
+
sections.push(`${SECTION_HEADERS.environment}\n\n${renderList(state.environment)}`);
|
|
46
|
+
}
|
|
47
|
+
if (state.files.size > 0) {
|
|
48
|
+
sections.push(`${SECTION_HEADERS.files}\n\n${renderFiles(state.files)}`);
|
|
49
|
+
}
|
|
50
|
+
if (state.decisions.length > 0) {
|
|
51
|
+
sections.push(`${SECTION_HEADERS.decisions}\n\n${renderList(state.decisions)}`);
|
|
52
|
+
}
|
|
53
|
+
if (state.assistantNotes.length > 0) {
|
|
54
|
+
sections.push(`${SECTION_HEADERS.assistantNotes}\n\n${renderList(state.assistantNotes)}`);
|
|
55
|
+
}
|
|
56
|
+
if (state.toolResults.length > 0) {
|
|
57
|
+
sections.push(`${SECTION_HEADERS.toolResults}\n\n${renderToolResults(state.toolResults)}`);
|
|
58
|
+
}
|
|
59
|
+
if (state.failures.length > 0) {
|
|
60
|
+
sections.push(`${SECTION_HEADERS.failures}\n\n${renderList(state.failures)}`);
|
|
61
|
+
}
|
|
62
|
+
if (state.discoveries.length > 0) {
|
|
63
|
+
sections.push(`${SECTION_HEADERS.discoveries}\n\n${renderList(state.discoveries)}`);
|
|
64
|
+
}
|
|
65
|
+
return sections.join('\n\n');
|
|
66
|
+
}
|
|
67
|
+
//# sourceMappingURL=serializer.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"serializer.js","sourceRoot":"","sources":["../../src/compaction/serializer.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
export interface WorkingState {
|
|
2
|
+
task: string;
|
|
3
|
+
plan: PlanSlot[];
|
|
4
|
+
files: Map<string, FileSlot>;
|
|
5
|
+
decisions: string[];
|
|
6
|
+
failures: string[];
|
|
7
|
+
discoveries: string[];
|
|
8
|
+
environment: string[];
|
|
9
|
+
toolResults: ToolResultSlot[];
|
|
10
|
+
userRequirements: string[];
|
|
11
|
+
assistantNotes: string[];
|
|
12
|
+
}
|
|
13
|
+
export interface PlanSlot {
|
|
14
|
+
id: string;
|
|
15
|
+
label: string;
|
|
16
|
+
status: 'pending' | 'active' | 'done' | 'skipped';
|
|
17
|
+
}
|
|
18
|
+
export interface FileSlot {
|
|
19
|
+
path: string;
|
|
20
|
+
actions: FileAction[];
|
|
21
|
+
}
|
|
22
|
+
export type FileAction = {
|
|
23
|
+
type: 'read';
|
|
24
|
+
summary: string;
|
|
25
|
+
} | {
|
|
26
|
+
type: 'edit';
|
|
27
|
+
detail: string;
|
|
28
|
+
} | {
|
|
29
|
+
type: 'create';
|
|
30
|
+
detail: string;
|
|
31
|
+
} | {
|
|
32
|
+
type: 'delete';
|
|
33
|
+
};
|
|
34
|
+
export interface ToolResultSlot {
|
|
35
|
+
tool: string;
|
|
36
|
+
summary: string;
|
|
37
|
+
timestamp: number;
|
|
38
|
+
}
|
|
39
|
+
export type CompactionStrategy = 'structured' | 'disabled';
|
|
40
|
+
//# sourceMappingURL=types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/compaction/types.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,YAAY;IAC5B,IAAI,EAAE,MAAM,CAAA;IACZ,IAAI,EAAE,QAAQ,EAAE,CAAA;IAChB,KAAK,EAAE,GAAG,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAA;IAC5B,SAAS,EAAE,MAAM,EAAE,CAAA;IACnB,QAAQ,EAAE,MAAM,EAAE,CAAA;IAClB,WAAW,EAAE,MAAM,EAAE,CAAA;IACrB,WAAW,EAAE,MAAM,EAAE,CAAA;IACrB,WAAW,EAAE,cAAc,EAAE,CAAA;IAC7B,gBAAgB,EAAE,MAAM,EAAE,CAAA;IAC1B,cAAc,EAAE,MAAM,EAAE,CAAA;CACxB;AAED,MAAM,WAAW,QAAQ;IACxB,EAAE,EAAE,MAAM,CAAA;IACV,KAAK,EAAE,MAAM,CAAA;IACb,MAAM,EAAE,SAAS,GAAG,QAAQ,GAAG,MAAM,GAAG,SAAS,CAAA;CACjD;AAED,MAAM,WAAW,QAAQ;IACxB,IAAI,EAAE,MAAM,CAAA;IACZ,OAAO,EAAE,UAAU,EAAE,CAAA;CACrB;AAED,MAAM,MAAM,UAAU,GACnB;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,GACjC;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,GAChC;IAAE,IAAI,EAAE,QAAQ,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,GAClC;IAAE,IAAI,EAAE,QAAQ,CAAA;CAAE,CAAA;AAErB,MAAM,WAAW,cAAc;IAC9B,IAAI,EAAE,MAAM,CAAA;IACZ,OAAO,EAAE,MAAM,CAAA;IACf,SAAS,EAAE,MAAM,CAAA;CACjB;AAED,MAAM,MAAM,kBAAkB,GAAG,YAAY,GAAG,UAAU,CAAA"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/compaction/types.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import type { CompactionConfig } from '../config/runtime.js';
|
|
2
|
+
import type { Message } from '../types/message/index.js';
|
|
3
|
+
import type { LLMProvider } from '../types/provider/interface.js';
|
|
4
|
+
import type { WorkingStateManager } from './manager.js';
|
|
5
|
+
export declare function buildVerifiedSummary(manager: WorkingStateManager, olderMessages: Message[], provider: LLMProvider, config: CompactionConfig): Promise<string>;
|
|
6
|
+
//# sourceMappingURL=verifier.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"verifier.d.ts","sourceRoot":"","sources":["../../src/compaction/verifier.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAA;AAC5D,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,2BAA2B,CAAA;AACxD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,gCAAgC,CAAA;AACjE,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,cAAc,CAAA;AAwCvD,wBAAsB,oBAAoB,CACzC,OAAO,EAAE,mBAAmB,EAC5B,aAAa,EAAE,OAAO,EAAE,EACxB,QAAQ,EAAE,WAAW,EACrB,MAAM,EAAE,gBAAgB,GACtB,OAAO,CAAC,MAAM,CAAC,CA0CjB"}
|
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
import { serializeState } from './serializer.js';
|
|
2
|
+
const VERIFICATION_PROMPT = `You are a context compaction verifier. You are given a structured state summary extracted from a conversation, plus a truncated excerpt of the older conversation that was summarized.
|
|
3
|
+
|
|
4
|
+
Your job: determine if the structured state captures all important information from the conversation excerpt. Important information includes:
|
|
5
|
+
- The user's original task and any follow-up requirements
|
|
6
|
+
- Key decisions made during the conversation
|
|
7
|
+
- Errors encountered and how they were resolved
|
|
8
|
+
- Files that were read, created, or modified
|
|
9
|
+
- Important discoveries or constraints
|
|
10
|
+
|
|
11
|
+
If the structured state is complete, respond with exactly: COMPLETE
|
|
12
|
+
|
|
13
|
+
If something important is missing, respond with a brief bullet list of the missing items (no preamble, just the bullets). Each bullet should be a single concise sentence.`;
|
|
14
|
+
function truncateMessages(messages, budget) {
|
|
15
|
+
const lines = [];
|
|
16
|
+
let charCount = 0;
|
|
17
|
+
for (const msg of messages) {
|
|
18
|
+
if (!msg.content)
|
|
19
|
+
continue;
|
|
20
|
+
const prefix = `[${msg.role}]: `;
|
|
21
|
+
const content = msg.content;
|
|
22
|
+
if (charCount + prefix.length + content.length > budget) {
|
|
23
|
+
const remaining = budget - charCount - prefix.length;
|
|
24
|
+
if (remaining > 0) {
|
|
25
|
+
lines.push(`${prefix}${content.slice(0, remaining)}...`);
|
|
26
|
+
}
|
|
27
|
+
break;
|
|
28
|
+
}
|
|
29
|
+
lines.push(`${prefix}${content}`);
|
|
30
|
+
charCount += prefix.length + content.length;
|
|
31
|
+
}
|
|
32
|
+
return lines.join('\n\n');
|
|
33
|
+
}
|
|
34
|
+
export async function buildVerifiedSummary(manager, olderMessages, provider, config) {
|
|
35
|
+
const serialized = serializeState(manager.getState());
|
|
36
|
+
if (manager.slotCount() >= config.richStateThreshold) {
|
|
37
|
+
return serialized;
|
|
38
|
+
}
|
|
39
|
+
if (!config.llmVerification) {
|
|
40
|
+
return serialized;
|
|
41
|
+
}
|
|
42
|
+
const conversationExcerpt = truncateMessages(olderMessages, config.convoTextBudget);
|
|
43
|
+
if (!conversationExcerpt.trim()) {
|
|
44
|
+
return serialized;
|
|
45
|
+
}
|
|
46
|
+
const verificationMessages = [
|
|
47
|
+
{
|
|
48
|
+
role: 'system',
|
|
49
|
+
content: VERIFICATION_PROMPT,
|
|
50
|
+
},
|
|
51
|
+
{
|
|
52
|
+
role: 'user',
|
|
53
|
+
content: `## Structured State\n\n${serialized}\n\n## Conversation Excerpt\n\n${conversationExcerpt}`,
|
|
54
|
+
},
|
|
55
|
+
];
|
|
56
|
+
const response = await provider.chat({
|
|
57
|
+
model: '',
|
|
58
|
+
messages: verificationMessages,
|
|
59
|
+
maxTokens: config.llmVerificationMaxTokens,
|
|
60
|
+
temperature: 0,
|
|
61
|
+
});
|
|
62
|
+
const responseText = response.message.content?.trim() ?? '';
|
|
63
|
+
if (responseText === 'COMPLETE') {
|
|
64
|
+
return serialized;
|
|
65
|
+
}
|
|
66
|
+
return `${serialized}\n\n## LLM Verification Additions\n\n${responseText}`;
|
|
67
|
+
}
|
|
68
|
+
//# sourceMappingURL=verifier.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"verifier.js","sourceRoot":"","sources":["../../src/compaction/verifier.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAA;AAEhD,MAAM,mBAAmB,GAAG;;;;;;;;;;;2KAW+I,CAAA;AAE3K,SAAS,gBAAgB,CAAC,QAAmB,EAAE,MAAc;IAC5D,MAAM,KAAK,GAAa,EAAE,CAAA;IAC1B,IAAI,SAAS,GAAG,CAAC,CAAA;IAEjB,KAAK,MAAM,GAAG,IAAI,QAAQ,EAAE,CAAC;QAC5B,IAAI,CAAC,GAAG,CAAC,OAAO;YAAE,SAAQ;QAC1B,MAAM,MAAM,GAAG,IAAI,GAAG,CAAC,IAAI,KAAK,CAAA;QAChC,MAAM,OAAO,GAAG,GAAG,CAAC,OAAO,CAAA;QAE3B,IAAI,SAAS,GAAG,MAAM,CAAC,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,MAAM,EAAE,CAAC;YACzD,MAAM,SAAS,GAAG,MAAM,GAAG,SAAS,GAAG,MAAM,CAAC,MAAM,CAAA;YACpD,IAAI,SAAS,GAAG,CAAC,EAAE,CAAC;gBACnB,KAAK,CAAC,IAAI,CAAC,GAAG,MAAM,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,SAAS,CAAC,KAAK,CAAC,CAAA;YACzD,CAAC;YACD,MAAK;QACN,CAAC;QAED,KAAK,CAAC,IAAI,CAAC,GAAG,MAAM,GAAG,OAAO,EAAE,CAAC,CAAA;QACjC,SAAS,IAAI,MAAM,CAAC,MAAM,GAAG,OAAO,CAAC,MAAM,CAAA;IAC5C,CAAC;IAED,OAAO,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,CAAA;AAC1B,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,oBAAoB,CACzC,OAA4B,EAC5B,aAAwB,EACxB,QAAqB,EACrB,MAAwB;IAExB,MAAM,UAAU,GAAG,cAAc,CAAC,OAAO,CAAC,QAAQ,EAAE,CAAC,CAAA;IAErD,IAAI,OAAO,CAAC,SAAS,EAAE,IAAI,MAAM,CAAC,kBAAkB,EAAE,CAAC;QACtD,OAAO,UAAU,CAAA;IAClB,CAAC;IAED,IAAI,CAAC,MAAM,CAAC,eAAe,EAAE,CAAC;QAC7B,OAAO,UAAU,CAAA;IAClB,CAAC;IAED,MAAM,mBAAmB,GAAG,gBAAgB,CAAC,aAAa,EAAE,MAAM,CAAC,eAAe,CAAC,CAAA;IAEnF,IAAI,CAAC,mBAAmB,CAAC,IAAI,EAAE,EAAE,CAAC;QACjC,OAAO,UAAU,CAAA;IAClB,CAAC;IAED,MAAM,oBAAoB,GAAc;QACvC;YACC,IAAI,EAAE,QAAiB;YACvB,OAAO,EAAE,mBAAmB;SAC5B;QACD;YACC,IAAI,EAAE,MAAe;YACrB,OAAO,EAAE,0BAA0B,UAAU,kCAAkC,mBAAmB,EAAE;SACpG;KACD,CAAA;IAED,MAAM,QAAQ,GAAG,MAAM,QAAQ,CAAC,IAAI,CAAC;QACpC,KAAK,EAAE,EAAE;QACT,QAAQ,EAAE,oBAAoB;QAC9B,SAAS,EAAE,MAAM,CAAC,wBAAwB;QAC1C,WAAW,EAAE,CAAC;KACd,CAAC,CAAA;IAEF,MAAM,YAAY,GAAG,QAAQ,CAAC,OAAO,CAAC,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,CAAA;IAE3D,IAAI,YAAY,KAAK,UAAU,EAAE,CAAC;QACjC,OAAO,UAAU,CAAA;IAClB,CAAC;IAED,OAAO,GAAG,UAAU,wCAAwC,YAAY,EAAE,CAAA;AAC3E,CAAC"}
|