borderless-agent 0.0.1-alpha.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 +274 -0
- package/dist/agentBuilder.d.ts +51 -0
- package/dist/agentBuilder.d.ts.map +1 -0
- package/dist/agentBuilder.js +130 -0
- package/dist/agentBuilder.js.map +1 -0
- package/dist/agentInstance.d.ts +45 -0
- package/dist/agentInstance.d.ts.map +1 -0
- package/dist/agentInstance.js +501 -0
- package/dist/agentInstance.js.map +1 -0
- package/dist/agentsCore.d.ts +16 -0
- package/dist/agentsCore.d.ts.map +1 -0
- package/dist/agentsCore.js +50 -0
- package/dist/agentsCore.js.map +1 -0
- package/dist/cli/index.d.ts +5 -0
- package/dist/cli/index.d.ts.map +1 -0
- package/dist/cli/index.js +11 -0
- package/dist/cli/index.js.map +1 -0
- package/dist/cli/main.d.ts +36 -0
- package/dist/cli/main.d.ts.map +1 -0
- package/dist/cli/main.js +306 -0
- package/dist/cli/main.js.map +1 -0
- package/dist/config.d.ts +26 -0
- package/dist/config.d.ts.map +1 -0
- package/dist/config.js +98 -0
- package/dist/config.js.map +1 -0
- package/dist/contextCore.d.ts +97 -0
- package/dist/contextCore.d.ts.map +1 -0
- package/dist/contextCore.js +533 -0
- package/dist/contextCore.js.map +1 -0
- package/dist/index.d.ts +28 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +46 -0
- package/dist/index.js.map +1 -0
- package/dist/llmProtocol.d.ts +60 -0
- package/dist/llmProtocol.d.ts.map +1 -0
- package/dist/llmProtocol.js +202 -0
- package/dist/llmProtocol.js.map +1 -0
- package/dist/loopCore.d.ts +22 -0
- package/dist/loopCore.d.ts.map +1 -0
- package/dist/loopCore.js +288 -0
- package/dist/loopCore.js.map +1 -0
- package/dist/main.d.ts +9 -0
- package/dist/main.d.ts.map +1 -0
- package/dist/main.js +15 -0
- package/dist/main.js.map +1 -0
- package/dist/memoryCore.d.ts +37 -0
- package/dist/memoryCore.d.ts.map +1 -0
- package/dist/memoryCore.js +346 -0
- package/dist/memoryCore.js.map +1 -0
- package/dist/server/app.d.ts +13 -0
- package/dist/server/app.d.ts.map +1 -0
- package/dist/server/app.js +200 -0
- package/dist/server/app.js.map +1 -0
- package/dist/sessionCore.d.ts +54 -0
- package/dist/sessionCore.d.ts.map +1 -0
- package/dist/sessionCore.js +312 -0
- package/dist/sessionCore.js.map +1 -0
- package/dist/skillsCore.d.ts +23 -0
- package/dist/skillsCore.d.ts.map +1 -0
- package/dist/skillsCore.js +202 -0
- package/dist/skillsCore.js.map +1 -0
- package/dist/storage/cloudBackend.d.ts +48 -0
- package/dist/storage/cloudBackend.d.ts.map +1 -0
- package/dist/storage/cloudBackend.js +301 -0
- package/dist/storage/cloudBackend.js.map +1 -0
- package/dist/storage/fileBackend.d.ts +41 -0
- package/dist/storage/fileBackend.d.ts.map +1 -0
- package/dist/storage/fileBackend.js +240 -0
- package/dist/storage/fileBackend.js.map +1 -0
- package/dist/storage/index.d.ts +21 -0
- package/dist/storage/index.d.ts.map +1 -0
- package/dist/storage/index.js +58 -0
- package/dist/storage/index.js.map +1 -0
- package/dist/storage/protocols.d.ts +29 -0
- package/dist/storage/protocols.d.ts.map +1 -0
- package/dist/storage/protocols.js +20 -0
- package/dist/storage/protocols.js.map +1 -0
- package/dist/todoCore.d.ts +15 -0
- package/dist/todoCore.d.ts.map +1 -0
- package/dist/todoCore.js +52 -0
- package/dist/todoCore.js.map +1 -0
- package/dist/toolsCore.d.ts +31 -0
- package/dist/toolsCore.d.ts.map +1 -0
- package/dist/toolsCore.js +609 -0
- package/dist/toolsCore.js.map +1 -0
- package/dist/types.d.ts +144 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/types.js +8 -0
- package/dist/types.js.map +1 -0
- package/package.json +48 -0
|
@@ -0,0 +1,533 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* contextCore.ts - Context management pipeline.
|
|
4
|
+
*
|
|
5
|
+
* Dynamic context window, token usage stats, env-based config,
|
|
6
|
+
* source registry, lifecycle manager, selector, compressor, assembler,
|
|
7
|
+
* injection defense, reply cache.
|
|
8
|
+
*/
|
|
9
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
12
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
13
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
14
|
+
}
|
|
15
|
+
Object.defineProperty(o, k2, desc);
|
|
16
|
+
}) : (function(o, m, k, k2) {
|
|
17
|
+
if (k2 === undefined) k2 = k;
|
|
18
|
+
o[k2] = m[k];
|
|
19
|
+
}));
|
|
20
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
21
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
22
|
+
}) : function(o, v) {
|
|
23
|
+
o["default"] = v;
|
|
24
|
+
});
|
|
25
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
26
|
+
var ownKeys = function(o) {
|
|
27
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
28
|
+
var ar = [];
|
|
29
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
30
|
+
return ar;
|
|
31
|
+
};
|
|
32
|
+
return ownKeys(o);
|
|
33
|
+
};
|
|
34
|
+
return function (mod) {
|
|
35
|
+
if (mod && mod.__esModule) return mod;
|
|
36
|
+
var result = {};
|
|
37
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
38
|
+
__setModuleDefault(result, mod);
|
|
39
|
+
return result;
|
|
40
|
+
};
|
|
41
|
+
})();
|
|
42
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
43
|
+
exports.INJECTION_PATTERNS = exports.OBSERVATION_MAX_CHARS = exports.LifecycleManager = exports.SourceRegistry = exports.TokenBudget = exports.MESSAGE_PRIORITIES = exports.TASK_MAX_OUTPUT_LENGTH_MAX = exports.TASK_MAX_OUTPUT_LENGTH_DEFAULT = exports.BASH_MAX_OUTPUT_LENGTH_MAX = exports.BASH_MAX_OUTPUT_LENGTH_DEFAULT = exports.HISTORY_RATIO = exports.RAG_RATIO = exports.OUTPUT_RESERVE_RATIO = exports.SYSTEM_RESERVE_TOKENS = exports.CONTEXT_1M_TOKENS = exports.MAX_OUTPUT_TOKENS_CAP = exports.DEFAULT_MAX_OUTPUT_TOKENS = exports.DEFAULT_OUTPUT_TOKENS = exports.DEFAULT_MAX_TOKENS = exports.FEATURES = void 0;
|
|
44
|
+
exports.estimateTokens = estimateTokens;
|
|
45
|
+
exports.estimateMessagesTokens = estimateMessagesTokens;
|
|
46
|
+
exports.getContextWindowSize = getContextWindowSize;
|
|
47
|
+
exports.getMaxOutputTokens = getMaxOutputTokens;
|
|
48
|
+
exports.computeUsageStats = computeUsageStats;
|
|
49
|
+
exports.getBashMaxOutputLength = getBashMaxOutputLength;
|
|
50
|
+
exports.getTaskMaxOutputLength = getTaskMaxOutputLength;
|
|
51
|
+
exports.getAgentMaxOutputTokens = getAgentMaxOutputTokens;
|
|
52
|
+
exports.getBudget = getBudget;
|
|
53
|
+
exports.prioritizeMessages = prioritizeMessages;
|
|
54
|
+
exports.selectHistory = selectHistory;
|
|
55
|
+
exports.foldObservation = foldObservation;
|
|
56
|
+
exports.summarizeRounds = summarizeRounds;
|
|
57
|
+
exports.sanitizeUserInput = sanitizeUserInput;
|
|
58
|
+
exports.assembleSystem = assembleSystem;
|
|
59
|
+
exports.getCachedReply = getCachedReply;
|
|
60
|
+
exports.setCachedReply = setCachedReply;
|
|
61
|
+
exports.contextEnabled = contextEnabled;
|
|
62
|
+
exports.replyCacheEnabled = replyCacheEnabled;
|
|
63
|
+
const crypto = __importStar(require("crypto"));
|
|
64
|
+
// ---------------------------------------------------------------------------
|
|
65
|
+
// Feature identifiers
|
|
66
|
+
// ---------------------------------------------------------------------------
|
|
67
|
+
exports.FEATURES = {
|
|
68
|
+
CLAUDE_CODE: 'claude-code-20250219',
|
|
69
|
+
INTERLEAVED_THINKING: 'interleaved-thinking-2025-05-14',
|
|
70
|
+
CONTEXT_1M: 'context-1m-2025-08-07',
|
|
71
|
+
CONTEXT_MANAGEMENT: 'context-management-2025-06-27',
|
|
72
|
+
STRUCTURED_OUTPUTS: 'structured-outputs-2025-12-15',
|
|
73
|
+
WEB_SEARCH: 'web-search-2025-03-05',
|
|
74
|
+
TOOL_EXAMPLES: 'tool-examples-2025-10-29',
|
|
75
|
+
ADVANCED_TOOL_USE: 'advanced-tool-use-2025-11-20',
|
|
76
|
+
TOOL_SEARCH_TOOL: 'tool-search-tool-2025-10-19',
|
|
77
|
+
EFFORT: 'effort-2025-11-24',
|
|
78
|
+
PROMPT_CACHING_SCOPE: 'prompt-caching-scope-2026-01-05',
|
|
79
|
+
};
|
|
80
|
+
// ---------------------------------------------------------------------------
|
|
81
|
+
// Token estimation
|
|
82
|
+
// ---------------------------------------------------------------------------
|
|
83
|
+
function estimateTokens(text) {
|
|
84
|
+
if (!text)
|
|
85
|
+
return 0;
|
|
86
|
+
return Math.max(1, Math.floor(text.length / 3));
|
|
87
|
+
}
|
|
88
|
+
function estimateMessagesTokens(messages) {
|
|
89
|
+
let total = 0;
|
|
90
|
+
for (const m of messages) {
|
|
91
|
+
total += estimateTokens(String(m.role ?? ''));
|
|
92
|
+
const content = m.content;
|
|
93
|
+
if (typeof content === 'string') {
|
|
94
|
+
total += estimateTokens(content);
|
|
95
|
+
}
|
|
96
|
+
else if (Array.isArray(content)) {
|
|
97
|
+
for (const block of content) {
|
|
98
|
+
if (typeof block === 'object' && block !== null) {
|
|
99
|
+
if ('text' in block)
|
|
100
|
+
total += estimateTokens(String(block.text ?? ''));
|
|
101
|
+
else if ('content' in block)
|
|
102
|
+
total += estimateTokens(String(block.content ?? ''));
|
|
103
|
+
}
|
|
104
|
+
}
|
|
105
|
+
}
|
|
106
|
+
}
|
|
107
|
+
return total;
|
|
108
|
+
}
|
|
109
|
+
// ---------------------------------------------------------------------------
|
|
110
|
+
// Context window and output limits
|
|
111
|
+
// ---------------------------------------------------------------------------
|
|
112
|
+
exports.DEFAULT_MAX_TOKENS = 200_000;
|
|
113
|
+
exports.DEFAULT_OUTPUT_TOKENS = 20_000;
|
|
114
|
+
exports.DEFAULT_MAX_OUTPUT_TOKENS = 32_000;
|
|
115
|
+
exports.MAX_OUTPUT_TOKENS_CAP = 64_000;
|
|
116
|
+
exports.CONTEXT_1M_TOKENS = 1_000_000;
|
|
117
|
+
exports.SYSTEM_RESERVE_TOKENS = 1_000;
|
|
118
|
+
exports.OUTPUT_RESERVE_RATIO = 0.10;
|
|
119
|
+
exports.RAG_RATIO = 0.40;
|
|
120
|
+
exports.HISTORY_RATIO = 0.50;
|
|
121
|
+
function isClaudeSonnet4(model) {
|
|
122
|
+
return (model || '').toLowerCase().includes('claude-sonnet-4');
|
|
123
|
+
}
|
|
124
|
+
function getContextWindowSize(model, enabledFeatures) {
|
|
125
|
+
const m = (model ?? '').trim();
|
|
126
|
+
const features = new Set(enabledFeatures ?? []);
|
|
127
|
+
if (m.includes('[1m]'))
|
|
128
|
+
return exports.CONTEXT_1M_TOKENS;
|
|
129
|
+
if (features.has(exports.FEATURES.CONTEXT_1M) && isClaudeSonnet4(m))
|
|
130
|
+
return exports.CONTEXT_1M_TOKENS;
|
|
131
|
+
return exports.DEFAULT_MAX_TOKENS;
|
|
132
|
+
}
|
|
133
|
+
function getMaxOutputTokens(model) {
|
|
134
|
+
const raw = (process.env.AGENT_MAX_OUTPUT_TOKENS ?? '').trim();
|
|
135
|
+
if (raw) {
|
|
136
|
+
const val = parseInt(raw, 10);
|
|
137
|
+
if (val > 0)
|
|
138
|
+
return Math.min(val, exports.MAX_OUTPUT_TOKENS_CAP);
|
|
139
|
+
}
|
|
140
|
+
const ml = (model ?? '').toLowerCase();
|
|
141
|
+
if (ml.includes('3-5'))
|
|
142
|
+
return 8192;
|
|
143
|
+
if (ml.includes('claude-3-opus'))
|
|
144
|
+
return 4096;
|
|
145
|
+
if (ml.includes('claude-3-sonnet'))
|
|
146
|
+
return 8192;
|
|
147
|
+
if (ml.includes('claude-3-haiku'))
|
|
148
|
+
return 4096;
|
|
149
|
+
if (ml.includes('opus-4-5'))
|
|
150
|
+
return 64_000;
|
|
151
|
+
if (ml.includes('opus-4'))
|
|
152
|
+
return 32_000;
|
|
153
|
+
if (ml.includes('sonnet-4') || ml.includes('haiku-4'))
|
|
154
|
+
return 64_000;
|
|
155
|
+
return exports.DEFAULT_MAX_OUTPUT_TOKENS;
|
|
156
|
+
}
|
|
157
|
+
function computeUsageStats(usage, maxTokens) {
|
|
158
|
+
if (!usage || maxTokens <= 0)
|
|
159
|
+
return { used: null, remaining: null };
|
|
160
|
+
const totalInput = (parseInt(usage.input_tokens) || 0) +
|
|
161
|
+
(parseInt(usage.cache_creation_input_tokens) || 0) +
|
|
162
|
+
(parseInt(usage.cache_read_input_tokens) || 0);
|
|
163
|
+
let usedPct = Math.round((totalInput / maxTokens) * 100);
|
|
164
|
+
usedPct = Math.max(0, Math.min(100, usedPct));
|
|
165
|
+
return { used: usedPct, remaining: 100 - usedPct };
|
|
166
|
+
}
|
|
167
|
+
// ---------------------------------------------------------------------------
|
|
168
|
+
// Env config with validation
|
|
169
|
+
// ---------------------------------------------------------------------------
|
|
170
|
+
function envInt(name, defaultVal, maxVal) {
|
|
171
|
+
const raw = (process.env[name] ?? '').trim();
|
|
172
|
+
if (!raw)
|
|
173
|
+
return defaultVal;
|
|
174
|
+
const val = parseInt(raw, 10);
|
|
175
|
+
if (isNaN(val) || val <= 0)
|
|
176
|
+
return defaultVal;
|
|
177
|
+
if (maxVal != null && val > maxVal)
|
|
178
|
+
return maxVal;
|
|
179
|
+
return val;
|
|
180
|
+
}
|
|
181
|
+
exports.BASH_MAX_OUTPUT_LENGTH_DEFAULT = 30_000;
|
|
182
|
+
exports.BASH_MAX_OUTPUT_LENGTH_MAX = 150_000;
|
|
183
|
+
exports.TASK_MAX_OUTPUT_LENGTH_DEFAULT = 30_000;
|
|
184
|
+
exports.TASK_MAX_OUTPUT_LENGTH_MAX = 150_000;
|
|
185
|
+
function getBashMaxOutputLength() {
|
|
186
|
+
return envInt('BASH_MAX_OUTPUT_LENGTH', exports.BASH_MAX_OUTPUT_LENGTH_DEFAULT, exports.BASH_MAX_OUTPUT_LENGTH_MAX);
|
|
187
|
+
}
|
|
188
|
+
function getTaskMaxOutputLength() {
|
|
189
|
+
return envInt('TASK_MAX_OUTPUT_LENGTH', exports.TASK_MAX_OUTPUT_LENGTH_DEFAULT, exports.TASK_MAX_OUTPUT_LENGTH_MAX);
|
|
190
|
+
}
|
|
191
|
+
function getAgentMaxOutputTokens() {
|
|
192
|
+
return envInt('AGENT_MAX_OUTPUT_TOKENS', exports.DEFAULT_MAX_OUTPUT_TOKENS, exports.MAX_OUTPUT_TOKENS_CAP);
|
|
193
|
+
}
|
|
194
|
+
// ---------------------------------------------------------------------------
|
|
195
|
+
// Budget
|
|
196
|
+
// ---------------------------------------------------------------------------
|
|
197
|
+
function getBudget(options) {
|
|
198
|
+
const total = options?.total ?? getContextWindowSize(options?.model, options?.enabledFeatures);
|
|
199
|
+
const outputReserve = getMaxOutputTokens(options?.model);
|
|
200
|
+
const inputBudget = Math.max(0, total - outputReserve);
|
|
201
|
+
return {
|
|
202
|
+
total,
|
|
203
|
+
system: exports.SYSTEM_RESERVE_TOKENS,
|
|
204
|
+
rag: Math.floor(inputBudget * exports.RAG_RATIO),
|
|
205
|
+
history: Math.floor(inputBudget * exports.HISTORY_RATIO),
|
|
206
|
+
output_reserve: outputReserve,
|
|
207
|
+
};
|
|
208
|
+
}
|
|
209
|
+
// ---------------------------------------------------------------------------
|
|
210
|
+
// Short-term memory: message prioritization
|
|
211
|
+
// ---------------------------------------------------------------------------
|
|
212
|
+
exports.MESSAGE_PRIORITIES = {
|
|
213
|
+
CRITICAL: 1.0,
|
|
214
|
+
HIGH: 0.8,
|
|
215
|
+
MEDIUM: 0.6,
|
|
216
|
+
LOW: 0.4,
|
|
217
|
+
DISCARDABLE: 0.2,
|
|
218
|
+
};
|
|
219
|
+
class TokenBudget {
|
|
220
|
+
model;
|
|
221
|
+
enabledFeatures;
|
|
222
|
+
maxTokens;
|
|
223
|
+
usedTokens = 0;
|
|
224
|
+
reservedTokens = 0;
|
|
225
|
+
constructor(model, enabledFeatures) {
|
|
226
|
+
this.model = model;
|
|
227
|
+
this.enabledFeatures = enabledFeatures ?? [];
|
|
228
|
+
this.maxTokens = getContextWindowSize(model, enabledFeatures);
|
|
229
|
+
}
|
|
230
|
+
calculateUsage(usage) {
|
|
231
|
+
if (!usage || this.maxTokens <= 0)
|
|
232
|
+
return { input: 0, cached: 0, total: 0, percentage: 0 };
|
|
233
|
+
const inp = parseInt(usage.input_tokens) || 0;
|
|
234
|
+
const cacheCreation = parseInt(usage.cache_creation_input_tokens) || 0;
|
|
235
|
+
const cacheRead = parseInt(usage.cache_read_input_tokens) || 0;
|
|
236
|
+
const total = inp + cacheCreation + cacheRead;
|
|
237
|
+
let pct = Math.round((total / this.maxTokens) * 100);
|
|
238
|
+
pct = Math.max(0, Math.min(100, pct));
|
|
239
|
+
return { input: inp, cached: cacheCreation + cacheRead, total, percentage: pct };
|
|
240
|
+
}
|
|
241
|
+
get remainingTokens() {
|
|
242
|
+
return Math.max(0, this.maxTokens - this.usedTokens - this.reservedTokens);
|
|
243
|
+
}
|
|
244
|
+
}
|
|
245
|
+
exports.TokenBudget = TokenBudget;
|
|
246
|
+
function prioritizeMessages(messages, availableTokens, defaultPriority = exports.MESSAGE_PRIORITIES.MEDIUM) {
|
|
247
|
+
if (!messages.length || availableTokens <= 0)
|
|
248
|
+
return messages;
|
|
249
|
+
const prioritized = [];
|
|
250
|
+
for (const m of messages) {
|
|
251
|
+
const p = m.priority ?? defaultPriority;
|
|
252
|
+
if (p <= exports.MESSAGE_PRIORITIES.DISCARDABLE)
|
|
253
|
+
continue;
|
|
254
|
+
prioritized.push([p, m]);
|
|
255
|
+
}
|
|
256
|
+
prioritized.sort((a, b) => b[0] - a[0]);
|
|
257
|
+
const result = [];
|
|
258
|
+
let used = 0;
|
|
259
|
+
for (const [, m] of prioritized) {
|
|
260
|
+
const est = estimateMessagesTokens([m]);
|
|
261
|
+
if (used + est <= availableTokens) {
|
|
262
|
+
result.push(m);
|
|
263
|
+
used += est;
|
|
264
|
+
}
|
|
265
|
+
else {
|
|
266
|
+
break;
|
|
267
|
+
}
|
|
268
|
+
}
|
|
269
|
+
// Preserve original order
|
|
270
|
+
const order = new Map();
|
|
271
|
+
messages.forEach((m, i) => order.set(m, i));
|
|
272
|
+
result.sort((a, b) => (order.get(a) ?? 999) - (order.get(b) ?? 999));
|
|
273
|
+
return result;
|
|
274
|
+
}
|
|
275
|
+
// ---------------------------------------------------------------------------
|
|
276
|
+
// Source Registry
|
|
277
|
+
// ---------------------------------------------------------------------------
|
|
278
|
+
class SourceRegistry {
|
|
279
|
+
_sources = {};
|
|
280
|
+
register(name, content, meta) {
|
|
281
|
+
this._sources[name] = {
|
|
282
|
+
content,
|
|
283
|
+
meta: meta ?? {},
|
|
284
|
+
tokens: typeof content === 'string' ? estimateTokens(content) : 0,
|
|
285
|
+
};
|
|
286
|
+
}
|
|
287
|
+
get(name) {
|
|
288
|
+
return this._sources[name];
|
|
289
|
+
}
|
|
290
|
+
estimateTokensFor(name) {
|
|
291
|
+
return this._sources[name]?.tokens ?? 0;
|
|
292
|
+
}
|
|
293
|
+
totalTokens() {
|
|
294
|
+
return Object.values(this._sources).reduce((acc, s) => acc + s.tokens, 0);
|
|
295
|
+
}
|
|
296
|
+
}
|
|
297
|
+
exports.SourceRegistry = SourceRegistry;
|
|
298
|
+
// ---------------------------------------------------------------------------
|
|
299
|
+
// Lifecycle Manager
|
|
300
|
+
// ---------------------------------------------------------------------------
|
|
301
|
+
class LifecycleManager {
|
|
302
|
+
_sessionId;
|
|
303
|
+
_conversationSummary = '';
|
|
304
|
+
constructor() {
|
|
305
|
+
this._sessionId = crypto.randomUUID();
|
|
306
|
+
}
|
|
307
|
+
get sessionId() {
|
|
308
|
+
return this._sessionId;
|
|
309
|
+
}
|
|
310
|
+
setConversationSummary(summary) {
|
|
311
|
+
this._conversationSummary = summary;
|
|
312
|
+
}
|
|
313
|
+
getConversationSummary() {
|
|
314
|
+
return this._conversationSummary;
|
|
315
|
+
}
|
|
316
|
+
detectTopicShift(userInput, recentHistory, overlapThreshold = 0.1) {
|
|
317
|
+
if (!userInput || !recentHistory.length)
|
|
318
|
+
return false;
|
|
319
|
+
let lastUser = '';
|
|
320
|
+
for (let i = recentHistory.length - 1; i >= 0; i--) {
|
|
321
|
+
if (recentHistory[i].role === 'user') {
|
|
322
|
+
const c = recentHistory[i].content;
|
|
323
|
+
lastUser = (typeof c === 'string' ? c : '').trim();
|
|
324
|
+
break;
|
|
325
|
+
}
|
|
326
|
+
}
|
|
327
|
+
if (!lastUser)
|
|
328
|
+
return false;
|
|
329
|
+
const a = new Set(userInput.toLowerCase().match(/\w+/g) ?? []);
|
|
330
|
+
const b = new Set(lastUser.toLowerCase().match(/\w+/g) ?? []);
|
|
331
|
+
if (a.size === 0)
|
|
332
|
+
return false;
|
|
333
|
+
let overlap = 0;
|
|
334
|
+
for (const w of a) {
|
|
335
|
+
if (b.has(w))
|
|
336
|
+
overlap++;
|
|
337
|
+
}
|
|
338
|
+
return overlap / a.size < overlapThreshold;
|
|
339
|
+
}
|
|
340
|
+
resetSession() {
|
|
341
|
+
this._sessionId = crypto.randomUUID();
|
|
342
|
+
this._conversationSummary = '';
|
|
343
|
+
return this._sessionId;
|
|
344
|
+
}
|
|
345
|
+
}
|
|
346
|
+
exports.LifecycleManager = LifecycleManager;
|
|
347
|
+
// ---------------------------------------------------------------------------
|
|
348
|
+
// Selector
|
|
349
|
+
// ---------------------------------------------------------------------------
|
|
350
|
+
function selectHistory(history, userInput, maxTokens, maxTurns = 30) {
|
|
351
|
+
if (!history.length)
|
|
352
|
+
return [];
|
|
353
|
+
let capped = history.length > maxTurns * 2
|
|
354
|
+
? history.slice(-(maxTurns * 2))
|
|
355
|
+
: [...history];
|
|
356
|
+
if (estimateMessagesTokens(capped) <= maxTokens)
|
|
357
|
+
return capped;
|
|
358
|
+
for (let i = 1; i <= capped.length; i++) {
|
|
359
|
+
const trimmed = capped.slice(i);
|
|
360
|
+
if (estimateMessagesTokens(trimmed) <= maxTokens)
|
|
361
|
+
return trimmed;
|
|
362
|
+
}
|
|
363
|
+
return capped.length >= 2 ? capped.slice(-2) : capped;
|
|
364
|
+
}
|
|
365
|
+
// ---------------------------------------------------------------------------
|
|
366
|
+
// Compressor
|
|
367
|
+
// ---------------------------------------------------------------------------
|
|
368
|
+
exports.OBSERVATION_MAX_CHARS = 3500;
|
|
369
|
+
function foldObservation(raw, maxChars = exports.OBSERVATION_MAX_CHARS) {
|
|
370
|
+
if (!raw || raw.length <= maxChars)
|
|
371
|
+
return raw;
|
|
372
|
+
const head = raw.slice(0, Math.floor(maxChars / 2)).trim();
|
|
373
|
+
const tail = raw.length > 500 ? raw.slice(-500).trim() : '';
|
|
374
|
+
const summary = `[Data too long (${raw.length} chars). First part: ${head.slice(0, 200)}... Last part: ...${tail.slice(-150)}]`;
|
|
375
|
+
return summary.slice(0, maxChars);
|
|
376
|
+
}
|
|
377
|
+
function summarizerEnabled() {
|
|
378
|
+
return ['1', 'true', 'yes'].includes((process.env.AGENT_SUMMARIZER ?? '').trim().toLowerCase());
|
|
379
|
+
}
|
|
380
|
+
async function modelSummarize(rounds, llm) {
|
|
381
|
+
if (!llm) {
|
|
382
|
+
const { defaultLlmProvider } = await Promise.resolve().then(() => __importStar(require('./config')));
|
|
383
|
+
llm = defaultLlmProvider;
|
|
384
|
+
}
|
|
385
|
+
const textParts = [];
|
|
386
|
+
for (const m of rounds.slice(0, 30)) {
|
|
387
|
+
const role = m.role ?? '';
|
|
388
|
+
const content = m.content ?? '';
|
|
389
|
+
if (typeof content === 'string') {
|
|
390
|
+
textParts.push(`${role}: ${content.slice(0, 300)}`);
|
|
391
|
+
}
|
|
392
|
+
else {
|
|
393
|
+
textParts.push(`${role}: (tool use)`);
|
|
394
|
+
}
|
|
395
|
+
}
|
|
396
|
+
const transcript = textParts.join('\n').slice(0, 4000);
|
|
397
|
+
try {
|
|
398
|
+
const resp = await llm.chat([
|
|
399
|
+
{
|
|
400
|
+
role: 'system',
|
|
401
|
+
content: 'Summarize the following conversation in 2-3 sentences. Focus on key topics, decisions, and outcomes. Be concise.',
|
|
402
|
+
},
|
|
403
|
+
{ role: 'user', content: transcript },
|
|
404
|
+
], { maxTokens: 300, stream: false });
|
|
405
|
+
return (resp.content ?? '').trim();
|
|
406
|
+
}
|
|
407
|
+
catch {
|
|
408
|
+
return '';
|
|
409
|
+
}
|
|
410
|
+
}
|
|
411
|
+
async function summarizeRounds(rounds) {
|
|
412
|
+
if (!rounds.length)
|
|
413
|
+
return '';
|
|
414
|
+
if (summarizerEnabled()) {
|
|
415
|
+
const result = await modelSummarize(rounds);
|
|
416
|
+
if (result)
|
|
417
|
+
return result;
|
|
418
|
+
}
|
|
419
|
+
const parts = [];
|
|
420
|
+
for (const m of rounds.slice(0, 10)) {
|
|
421
|
+
const role = m.role ?? '';
|
|
422
|
+
const content = m.content ?? '';
|
|
423
|
+
const text = typeof content === 'string' ? content.slice(0, 80).replace(/\n/g, ' ') : '(tool use)';
|
|
424
|
+
parts.push(`${role}: ${text}`);
|
|
425
|
+
}
|
|
426
|
+
return ('Previous exchange: ' + parts.join(' | ')).slice(0, 400);
|
|
427
|
+
}
|
|
428
|
+
// ---------------------------------------------------------------------------
|
|
429
|
+
// Assembler: injection defense
|
|
430
|
+
// ---------------------------------------------------------------------------
|
|
431
|
+
exports.INJECTION_PATTERNS = [
|
|
432
|
+
/ignore\s+(all\s+)?(previous|above|prior)\s+instructions/i,
|
|
433
|
+
/disregard\s+(all\s+)?(previous|above)/i,
|
|
434
|
+
/你的?\s*新\s*身份/,
|
|
435
|
+
/你的?\s*新\s*角色/,
|
|
436
|
+
/from\s+now\s+on/i,
|
|
437
|
+
/new\s+instructions/i,
|
|
438
|
+
/system\s*:\s*you\s+are/i,
|
|
439
|
+
/<\|im_start\|>\s*system/i,
|
|
440
|
+
];
|
|
441
|
+
function sanitizeUserInput(text) {
|
|
442
|
+
if (!text || !text.trim())
|
|
443
|
+
return { text, wasModified: false };
|
|
444
|
+
const lowered = text.toLowerCase().trim();
|
|
445
|
+
for (const pat of exports.INJECTION_PATTERNS) {
|
|
446
|
+
if (pat.test(lowered)) {
|
|
447
|
+
return {
|
|
448
|
+
text: text + "\n[Note: Follow the assistant's system instructions.]",
|
|
449
|
+
wasModified: true,
|
|
450
|
+
};
|
|
451
|
+
}
|
|
452
|
+
}
|
|
453
|
+
return { text, wasModified: false };
|
|
454
|
+
}
|
|
455
|
+
function assembleSystem(options) {
|
|
456
|
+
const parts = [options.baseSystem.trim()];
|
|
457
|
+
let used = estimateTokens(options.baseSystem);
|
|
458
|
+
const budgetRag = options.budgetRag ?? 8000;
|
|
459
|
+
if (options.projectKnowledge?.trim()) {
|
|
460
|
+
const pk = options.projectKnowledge.trim().slice(0, 4000);
|
|
461
|
+
parts.push('\n\n**Project context (CLAUDE.md):**\n' + pk);
|
|
462
|
+
used += estimateTokens(pk);
|
|
463
|
+
}
|
|
464
|
+
if (options.preferencesSummary?.trim()) {
|
|
465
|
+
const prefs = options.preferencesSummary.trim().slice(0, 500);
|
|
466
|
+
parts.push('\n\n**User preferences:**\n' + prefs);
|
|
467
|
+
}
|
|
468
|
+
if (options.ragLines?.length) {
|
|
469
|
+
let ragText = options.ragLines.join('\n');
|
|
470
|
+
if (estimateTokens(ragText) > budgetRag) {
|
|
471
|
+
ragText = ragText.slice(0, budgetRag * 3);
|
|
472
|
+
}
|
|
473
|
+
parts.push('\n\n**Relevant past context (long-term memory):**\n' + ragText);
|
|
474
|
+
used += estimateTokens(ragText);
|
|
475
|
+
}
|
|
476
|
+
if (options.conversationSummary?.trim()) {
|
|
477
|
+
const summary = options.conversationSummary.trim().slice(0, 1500);
|
|
478
|
+
parts.push('\n\n**Conversation summary:**\n' + summary);
|
|
479
|
+
}
|
|
480
|
+
if (options.recentFilesSummary?.trim()) {
|
|
481
|
+
parts.push('\n\n**Recently accessed files (this session):**\n' +
|
|
482
|
+
options.recentFilesSummary.trim().slice(0, 800));
|
|
483
|
+
}
|
|
484
|
+
if (options.processingInstruction?.trim()) {
|
|
485
|
+
parts.push('\n\n**Processing note:** ' +
|
|
486
|
+
options.processingInstruction.trim().slice(0, 300));
|
|
487
|
+
}
|
|
488
|
+
return parts.join('\n');
|
|
489
|
+
}
|
|
490
|
+
// ---------------------------------------------------------------------------
|
|
491
|
+
// Reply cache (exact match)
|
|
492
|
+
// ---------------------------------------------------------------------------
|
|
493
|
+
const _replyCache = new Map();
|
|
494
|
+
const CACHE_MAX_ENTRIES = 100;
|
|
495
|
+
function cacheKey(sessionId, userInput, historyHash) {
|
|
496
|
+
const h = crypto
|
|
497
|
+
.createHash('sha256')
|
|
498
|
+
.update(sessionId + userInput + historyHash)
|
|
499
|
+
.digest('hex');
|
|
500
|
+
return h.slice(0, 32);
|
|
501
|
+
}
|
|
502
|
+
function getCachedReply(sessionId, userInput, history) {
|
|
503
|
+
const hh = crypto
|
|
504
|
+
.createHash('sha256')
|
|
505
|
+
.update(JSON.stringify(history))
|
|
506
|
+
.digest('hex');
|
|
507
|
+
const key = cacheKey(sessionId, userInput, hh);
|
|
508
|
+
return _replyCache.get(key);
|
|
509
|
+
}
|
|
510
|
+
function setCachedReply(sessionId, userInput, history, lastAssistantText, messages) {
|
|
511
|
+
const hh = crypto
|
|
512
|
+
.createHash('sha256')
|
|
513
|
+
.update(JSON.stringify(history))
|
|
514
|
+
.digest('hex');
|
|
515
|
+
const key = cacheKey(sessionId, userInput, hh);
|
|
516
|
+
_replyCache.set(key, { text: lastAssistantText, messages });
|
|
517
|
+
if (_replyCache.size > CACHE_MAX_ENTRIES) {
|
|
518
|
+
const it = _replyCache.keys();
|
|
519
|
+
const first = it.next().value;
|
|
520
|
+
if (first)
|
|
521
|
+
_replyCache.delete(first);
|
|
522
|
+
}
|
|
523
|
+
}
|
|
524
|
+
// ---------------------------------------------------------------------------
|
|
525
|
+
// Feature toggles
|
|
526
|
+
// ---------------------------------------------------------------------------
|
|
527
|
+
function contextEnabled() {
|
|
528
|
+
return !['0', 'false'].includes((process.env.AGENT_CONTEXT ?? '1').trim());
|
|
529
|
+
}
|
|
530
|
+
function replyCacheEnabled() {
|
|
531
|
+
return !['0', 'false'].includes((process.env.AGENT_REPLY_CACHE ?? '0').trim());
|
|
532
|
+
}
|
|
533
|
+
//# sourceMappingURL=contextCore.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"contextCore.js","sourceRoot":"","sources":["../src/contextCore.ts"],"names":[],"mappings":"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"}
|
package/dist/index.d.ts
ADDED
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* index.ts — Public barrel export for the agentic-system library.
|
|
3
|
+
*
|
|
4
|
+
* Usage:
|
|
5
|
+
* ```ts
|
|
6
|
+
* import { AgentBuilder, createFileStorage } from 'agentic-system';
|
|
7
|
+
*
|
|
8
|
+
* const agent = new AgentBuilder()
|
|
9
|
+
* .setLLM({ apiKey: 'sk-...' })
|
|
10
|
+
* .setSystemPrompt('You are helpful.')
|
|
11
|
+
* .addTool({ name: 'hello', description: 'Say hi', execute: () => 'Hi!' })
|
|
12
|
+
* .build();
|
|
13
|
+
*
|
|
14
|
+
* const result = await agent.chat('Hello');
|
|
15
|
+
* ```
|
|
16
|
+
*/
|
|
17
|
+
export { AgentBuilder } from './agentBuilder';
|
|
18
|
+
export { AgentInstance } from './agentInstance';
|
|
19
|
+
export type { ToolDefinition, SkillDefinition, AgentConfig, LLMConfig, StorageConfig, ChatResult, StreamChunk, AgentSession, } from './types';
|
|
20
|
+
export { OpenAIProvider } from './llmProtocol';
|
|
21
|
+
export type { LLMProvider, LLMResponse, ToolCall, ChatMessage } from './llmProtocol';
|
|
22
|
+
export { createFileBackend as createFileStorage } from './storage/fileBackend';
|
|
23
|
+
export { createCloudBackend as createCloudStorage } from './storage/cloudBackend';
|
|
24
|
+
export { StorageBackend } from './storage/protocols';
|
|
25
|
+
export type { SessionStore, MemoryStore, SkillStore, ContextStore } from './storage/protocols';
|
|
26
|
+
export { SessionManager, Session } from './sessionCore';
|
|
27
|
+
export { estimateTokens, getBudget, assembleSystem, sanitizeUserInput, LifecycleManager, } from './contextCore';
|
|
28
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAGH,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAC9C,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAGhD,YAAY,EACR,cAAc,EACd,eAAe,EACf,WAAW,EACX,SAAS,EACT,aAAa,EACb,UAAU,EACV,WAAW,EACX,YAAY,GACf,MAAM,SAAS,CAAC;AAGjB,OAAO,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAC/C,YAAY,EAAE,WAAW,EAAE,WAAW,EAAE,QAAQ,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAGrF,OAAO,EAAE,iBAAiB,IAAI,iBAAiB,EAAE,MAAM,uBAAuB,CAAC;AAC/E,OAAO,EAAE,kBAAkB,IAAI,kBAAkB,EAAE,MAAM,wBAAwB,CAAC;AAClF,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AACrD,YAAY,EAAE,YAAY,EAAE,WAAW,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AAG/F,OAAO,EAAE,cAAc,EAAE,OAAO,EAAE,MAAM,eAAe,CAAC;AAGxD,OAAO,EACH,cAAc,EACd,SAAS,EACT,cAAc,EACd,iBAAiB,EACjB,gBAAgB,GACnB,MAAM,eAAe,CAAC"}
|
package/dist/index.js
ADDED
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* index.ts — Public barrel export for the agentic-system library.
|
|
4
|
+
*
|
|
5
|
+
* Usage:
|
|
6
|
+
* ```ts
|
|
7
|
+
* import { AgentBuilder, createFileStorage } from 'agentic-system';
|
|
8
|
+
*
|
|
9
|
+
* const agent = new AgentBuilder()
|
|
10
|
+
* .setLLM({ apiKey: 'sk-...' })
|
|
11
|
+
* .setSystemPrompt('You are helpful.')
|
|
12
|
+
* .addTool({ name: 'hello', description: 'Say hi', execute: () => 'Hi!' })
|
|
13
|
+
* .build();
|
|
14
|
+
*
|
|
15
|
+
* const result = await agent.chat('Hello');
|
|
16
|
+
* ```
|
|
17
|
+
*/
|
|
18
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
19
|
+
exports.LifecycleManager = exports.sanitizeUserInput = exports.assembleSystem = exports.getBudget = exports.estimateTokens = exports.Session = exports.SessionManager = exports.StorageBackend = exports.createCloudStorage = exports.createFileStorage = exports.OpenAIProvider = exports.AgentInstance = exports.AgentBuilder = void 0;
|
|
20
|
+
// ---- Builder & Instance ----
|
|
21
|
+
var agentBuilder_1 = require("./agentBuilder");
|
|
22
|
+
Object.defineProperty(exports, "AgentBuilder", { enumerable: true, get: function () { return agentBuilder_1.AgentBuilder; } });
|
|
23
|
+
var agentInstance_1 = require("./agentInstance");
|
|
24
|
+
Object.defineProperty(exports, "AgentInstance", { enumerable: true, get: function () { return agentInstance_1.AgentInstance; } });
|
|
25
|
+
// ---- LLM provider (for advanced users who want to supply their own) ----
|
|
26
|
+
var llmProtocol_1 = require("./llmProtocol");
|
|
27
|
+
Object.defineProperty(exports, "OpenAIProvider", { enumerable: true, get: function () { return llmProtocol_1.OpenAIProvider; } });
|
|
28
|
+
// ---- Storage helpers ----
|
|
29
|
+
var fileBackend_1 = require("./storage/fileBackend");
|
|
30
|
+
Object.defineProperty(exports, "createFileStorage", { enumerable: true, get: function () { return fileBackend_1.createFileBackend; } });
|
|
31
|
+
var cloudBackend_1 = require("./storage/cloudBackend");
|
|
32
|
+
Object.defineProperty(exports, "createCloudStorage", { enumerable: true, get: function () { return cloudBackend_1.createCloudBackend; } });
|
|
33
|
+
var protocols_1 = require("./storage/protocols");
|
|
34
|
+
Object.defineProperty(exports, "StorageBackend", { enumerable: true, get: function () { return protocols_1.StorageBackend; } });
|
|
35
|
+
// ---- Session manager (for direct access) ----
|
|
36
|
+
var sessionCore_1 = require("./sessionCore");
|
|
37
|
+
Object.defineProperty(exports, "SessionManager", { enumerable: true, get: function () { return sessionCore_1.SessionManager; } });
|
|
38
|
+
Object.defineProperty(exports, "Session", { enumerable: true, get: function () { return sessionCore_1.Session; } });
|
|
39
|
+
// ---- Context helpers (for advanced usage) ----
|
|
40
|
+
var contextCore_1 = require("./contextCore");
|
|
41
|
+
Object.defineProperty(exports, "estimateTokens", { enumerable: true, get: function () { return contextCore_1.estimateTokens; } });
|
|
42
|
+
Object.defineProperty(exports, "getBudget", { enumerable: true, get: function () { return contextCore_1.getBudget; } });
|
|
43
|
+
Object.defineProperty(exports, "assembleSystem", { enumerable: true, get: function () { return contextCore_1.assembleSystem; } });
|
|
44
|
+
Object.defineProperty(exports, "sanitizeUserInput", { enumerable: true, get: function () { return contextCore_1.sanitizeUserInput; } });
|
|
45
|
+
Object.defineProperty(exports, "LifecycleManager", { enumerable: true, get: function () { return contextCore_1.LifecycleManager; } });
|
|
46
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;;GAeG;;;AAEH,+BAA+B;AAC/B,+CAA8C;AAArC,4GAAA,YAAY,OAAA;AACrB,iDAAgD;AAAvC,8GAAA,aAAa,OAAA;AActB,2EAA2E;AAC3E,6CAA+C;AAAtC,6GAAA,cAAc,OAAA;AAGvB,4BAA4B;AAC5B,qDAA+E;AAAtE,gHAAA,iBAAiB,OAAqB;AAC/C,uDAAkF;AAAzE,kHAAA,kBAAkB,OAAsB;AACjD,iDAAqD;AAA5C,2GAAA,cAAc,OAAA;AAGvB,gDAAgD;AAChD,6CAAwD;AAA/C,6GAAA,cAAc,OAAA;AAAE,sGAAA,OAAO,OAAA;AAEhC,iDAAiD;AACjD,6CAMuB;AALnB,6GAAA,cAAc,OAAA;AACd,wGAAA,SAAS,OAAA;AACT,6GAAA,cAAc,OAAA;AACd,gHAAA,iBAAiB,OAAA;AACjB,+GAAA,gBAAgB,OAAA"}
|