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.
Files changed (90) hide show
  1. package/README.md +274 -0
  2. package/dist/agentBuilder.d.ts +51 -0
  3. package/dist/agentBuilder.d.ts.map +1 -0
  4. package/dist/agentBuilder.js +130 -0
  5. package/dist/agentBuilder.js.map +1 -0
  6. package/dist/agentInstance.d.ts +45 -0
  7. package/dist/agentInstance.d.ts.map +1 -0
  8. package/dist/agentInstance.js +501 -0
  9. package/dist/agentInstance.js.map +1 -0
  10. package/dist/agentsCore.d.ts +16 -0
  11. package/dist/agentsCore.d.ts.map +1 -0
  12. package/dist/agentsCore.js +50 -0
  13. package/dist/agentsCore.js.map +1 -0
  14. package/dist/cli/index.d.ts +5 -0
  15. package/dist/cli/index.d.ts.map +1 -0
  16. package/dist/cli/index.js +11 -0
  17. package/dist/cli/index.js.map +1 -0
  18. package/dist/cli/main.d.ts +36 -0
  19. package/dist/cli/main.d.ts.map +1 -0
  20. package/dist/cli/main.js +306 -0
  21. package/dist/cli/main.js.map +1 -0
  22. package/dist/config.d.ts +26 -0
  23. package/dist/config.d.ts.map +1 -0
  24. package/dist/config.js +98 -0
  25. package/dist/config.js.map +1 -0
  26. package/dist/contextCore.d.ts +97 -0
  27. package/dist/contextCore.d.ts.map +1 -0
  28. package/dist/contextCore.js +533 -0
  29. package/dist/contextCore.js.map +1 -0
  30. package/dist/index.d.ts +28 -0
  31. package/dist/index.d.ts.map +1 -0
  32. package/dist/index.js +46 -0
  33. package/dist/index.js.map +1 -0
  34. package/dist/llmProtocol.d.ts +60 -0
  35. package/dist/llmProtocol.d.ts.map +1 -0
  36. package/dist/llmProtocol.js +202 -0
  37. package/dist/llmProtocol.js.map +1 -0
  38. package/dist/loopCore.d.ts +22 -0
  39. package/dist/loopCore.d.ts.map +1 -0
  40. package/dist/loopCore.js +288 -0
  41. package/dist/loopCore.js.map +1 -0
  42. package/dist/main.d.ts +9 -0
  43. package/dist/main.d.ts.map +1 -0
  44. package/dist/main.js +15 -0
  45. package/dist/main.js.map +1 -0
  46. package/dist/memoryCore.d.ts +37 -0
  47. package/dist/memoryCore.d.ts.map +1 -0
  48. package/dist/memoryCore.js +346 -0
  49. package/dist/memoryCore.js.map +1 -0
  50. package/dist/server/app.d.ts +13 -0
  51. package/dist/server/app.d.ts.map +1 -0
  52. package/dist/server/app.js +200 -0
  53. package/dist/server/app.js.map +1 -0
  54. package/dist/sessionCore.d.ts +54 -0
  55. package/dist/sessionCore.d.ts.map +1 -0
  56. package/dist/sessionCore.js +312 -0
  57. package/dist/sessionCore.js.map +1 -0
  58. package/dist/skillsCore.d.ts +23 -0
  59. package/dist/skillsCore.d.ts.map +1 -0
  60. package/dist/skillsCore.js +202 -0
  61. package/dist/skillsCore.js.map +1 -0
  62. package/dist/storage/cloudBackend.d.ts +48 -0
  63. package/dist/storage/cloudBackend.d.ts.map +1 -0
  64. package/dist/storage/cloudBackend.js +301 -0
  65. package/dist/storage/cloudBackend.js.map +1 -0
  66. package/dist/storage/fileBackend.d.ts +41 -0
  67. package/dist/storage/fileBackend.d.ts.map +1 -0
  68. package/dist/storage/fileBackend.js +240 -0
  69. package/dist/storage/fileBackend.js.map +1 -0
  70. package/dist/storage/index.d.ts +21 -0
  71. package/dist/storage/index.d.ts.map +1 -0
  72. package/dist/storage/index.js +58 -0
  73. package/dist/storage/index.js.map +1 -0
  74. package/dist/storage/protocols.d.ts +29 -0
  75. package/dist/storage/protocols.d.ts.map +1 -0
  76. package/dist/storage/protocols.js +20 -0
  77. package/dist/storage/protocols.js.map +1 -0
  78. package/dist/todoCore.d.ts +15 -0
  79. package/dist/todoCore.d.ts.map +1 -0
  80. package/dist/todoCore.js +52 -0
  81. package/dist/todoCore.js.map +1 -0
  82. package/dist/toolsCore.d.ts +31 -0
  83. package/dist/toolsCore.d.ts.map +1 -0
  84. package/dist/toolsCore.js +609 -0
  85. package/dist/toolsCore.js.map +1 -0
  86. package/dist/types.d.ts +144 -0
  87. package/dist/types.d.ts.map +1 -0
  88. package/dist/types.js +8 -0
  89. package/dist/types.js.map +1 -0
  90. package/package.json +48 -0
@@ -0,0 +1,501 @@
1
+ "use strict";
2
+ /**
3
+ * agentInstance.ts — Runtime agent returned by AgentBuilder.build().
4
+ *
5
+ * Provides: chat(), stream(), createSession(), restoreSession().
6
+ * All internal modules are wired through dependency injection — no globals.
7
+ */
8
+ Object.defineProperty(exports, "__esModule", { value: true });
9
+ exports.AgentInstance = void 0;
10
+ const sessionCore_1 = require("./sessionCore");
11
+ const contextCore_1 = require("./contextCore");
12
+ const memoryCore_1 = require("./memoryCore");
13
+ const fileBackend_1 = require("./storage/fileBackend");
14
+ // ---------------------------------------------------------------------------
15
+ // Internal helpers
16
+ // ---------------------------------------------------------------------------
17
+ /** Convert ToolDefinition[] → OpenAI function-calling tool format */
18
+ function toolDefsToOpenAI(tools) {
19
+ return tools.map((t) => ({
20
+ type: 'function',
21
+ function: {
22
+ name: t.name,
23
+ description: t.description,
24
+ parameters: {
25
+ type: 'object',
26
+ properties: Object.fromEntries(Object.entries(t.parameters ?? {}).map(([k, v]) => [k, v])),
27
+ required: t.required ?? [],
28
+ },
29
+ },
30
+ }));
31
+ }
32
+ /** Convert SkillDefinition[] → inline skill descriptions */
33
+ function skillDescriptions(skills) {
34
+ if (!skills.length)
35
+ return '';
36
+ return ('\n\n**Available skills** (use the `Skill` tool to load one):\n' +
37
+ skills.map((s) => `- ${s.name}: ${s.description}`).join('\n'));
38
+ }
39
+ /** Build the Skill meta-tool for user-defined skills */
40
+ function buildSkillTool(skills) {
41
+ if (!skills.length)
42
+ return null;
43
+ const loadedSkills = new Set();
44
+ return {
45
+ name: 'Skill',
46
+ description: 'Load a skill for specialized knowledge.\nAvailable:\n' +
47
+ skills.map((s) => `- ${s.name}: ${s.description}`).join('\n'),
48
+ parameters: { skill: { type: 'string', description: 'Skill name to load' } },
49
+ required: ['skill'],
50
+ execute: (args) => {
51
+ const name = args.skill;
52
+ if (loadedSkills.has(name)) {
53
+ return `(Skill '${name}' already loaded. Use the knowledge above.)`;
54
+ }
55
+ const skill = skills.find((s) => s.name === name);
56
+ if (!skill) {
57
+ return `Error: Unknown skill '${name}'. Available: ${skills.map((s) => s.name).join(', ')}`;
58
+ }
59
+ loadedSkills.add(name);
60
+ return `<skill-loaded name="${name}">\n# Skill: ${skill.name}\n\n${skill.body}\n</skill-loaded>\n\nUse the knowledge above to complete the user's task. Do NOT call Skill again.`;
61
+ },
62
+ };
63
+ }
64
+ // Built-in tools (only included when includeBuiltinTools is true)
65
+ function getBuiltinToolDefs() {
66
+ // Lazy import to avoid circular deps and allow tree-shaking
67
+ const { runBash, runRead, runGrep, runWrite, runEdit, runTodo, runSearchKnowledgeBase, runReadEmail, } = require('./toolsCore');
68
+ return [
69
+ {
70
+ name: 'bash',
71
+ description: 'Run a shell command.',
72
+ parameters: { command: { type: 'string' } },
73
+ required: ['command'],
74
+ execute: (args) => runBash(args.command),
75
+ },
76
+ {
77
+ name: 'read_file',
78
+ description: 'Read file with pagination (offset/limit).',
79
+ parameters: {
80
+ path: { type: 'string' },
81
+ offset: { type: 'integer', description: '0-based start line' },
82
+ limit: { type: 'integer', description: 'Max lines' },
83
+ },
84
+ required: ['path'],
85
+ execute: (args) => runRead(args.path, args.offset ?? 0, args.limit),
86
+ },
87
+ {
88
+ name: 'grep',
89
+ description: 'Search for pattern in file.',
90
+ parameters: {
91
+ path: { type: 'string' },
92
+ pattern: { type: 'string' },
93
+ context_before: { type: 'integer' },
94
+ context_after: { type: 'integer' },
95
+ },
96
+ required: ['path', 'pattern'],
97
+ execute: (args) => runGrep(args.path, args.pattern, args.context_before ?? 0, args.context_after ?? 0),
98
+ },
99
+ {
100
+ name: 'write_file',
101
+ description: 'Write content to file (creates backup).',
102
+ parameters: {
103
+ path: { type: 'string' },
104
+ content: { type: 'string' },
105
+ },
106
+ required: ['path', 'content'],
107
+ requiresApproval: true,
108
+ execute: (args) => runWrite(args.path, args.content),
109
+ },
110
+ {
111
+ name: 'edit_file',
112
+ description: 'Replace text in file.',
113
+ parameters: {
114
+ path: { type: 'string' },
115
+ old_text: { type: 'string' },
116
+ new_text: { type: 'string' },
117
+ },
118
+ required: ['path', 'old_text', 'new_text'],
119
+ requiresApproval: true,
120
+ execute: (args) => runEdit(args.path, args.old_text, args.new_text),
121
+ },
122
+ {
123
+ name: 'TodoWrite',
124
+ description: 'Update task list.',
125
+ parameters: {
126
+ items: {
127
+ type: 'array',
128
+ description: 'Array of {content, status, activeForm}',
129
+ },
130
+ },
131
+ required: ['items'],
132
+ execute: (args) => runTodo(args.items),
133
+ },
134
+ ];
135
+ }
136
+ function toolCallsToMsgShape(toolCalls) {
137
+ return toolCalls.map((tc) => ({
138
+ id: tc.id,
139
+ type: 'function',
140
+ function: {
141
+ name: tc.name,
142
+ arguments: tc.arguments ? JSON.stringify(tc.arguments) : '{}',
143
+ },
144
+ }));
145
+ }
146
+ // ---------------------------------------------------------------------------
147
+ // AgentInstance
148
+ // ---------------------------------------------------------------------------
149
+ class AgentInstance {
150
+ _llm;
151
+ _systemPrompt;
152
+ _tools;
153
+ _skills;
154
+ _openaiTools;
155
+ _toolMap;
156
+ _sessionMgr;
157
+ _maxToolRounds;
158
+ _memoryEnabled;
159
+ _streamingEnabled;
160
+ _contextEnabled;
161
+ _approvalCallback;
162
+ constructor(config) {
163
+ this._llm = config.llm;
164
+ this._maxToolRounds = config.maxToolRounds ?? 20;
165
+ this._memoryEnabled = config.enableMemory ?? false;
166
+ this._streamingEnabled = config.enableStreaming ?? false;
167
+ this._contextEnabled = config.enableContext ?? true;
168
+ this._approvalCallback = config.approvalCallback;
169
+ // Assemble tools
170
+ this._tools = [];
171
+ if (config.includeBuiltinTools !== false) {
172
+ this._tools.push(...getBuiltinToolDefs());
173
+ }
174
+ if (config.tools?.length) {
175
+ this._tools.push(...config.tools);
176
+ }
177
+ // Skills
178
+ this._skills = config.skills ?? [];
179
+ const skillTool = buildSkillTool(this._skills);
180
+ if (skillTool)
181
+ this._tools.push(skillTool);
182
+ // Build lookup and OpenAI format
183
+ this._toolMap = new Map(this._tools.map((t) => [t.name, t]));
184
+ this._openaiTools = toolDefsToOpenAI(this._tools);
185
+ // System prompt
186
+ this._systemPrompt =
187
+ config.systemPrompt ??
188
+ 'You are a helpful assistant. Use the provided tools when needed.';
189
+ if (this._skills.length) {
190
+ this._systemPrompt += skillDescriptions(this._skills);
191
+ }
192
+ // Storage & session manager
193
+ let storage;
194
+ if (config.storage) {
195
+ if (config.storage.backend === 'file') {
196
+ storage = (0, fileBackend_1.createFileBackend)({ sessionDir: config.storage.dir });
197
+ }
198
+ // cloud and memory backends can be added here
199
+ }
200
+ this._sessionMgr = new sessionCore_1.SessionManager({
201
+ store: storage?.sessionStore ?? undefined,
202
+ });
203
+ }
204
+ // ---- Public API ----
205
+ /** Send a single message (no session, stateless). */
206
+ async chat(message, history) {
207
+ const hist = history ? [...history] : [];
208
+ const result = await this._runLoop(message, hist);
209
+ return result;
210
+ }
211
+ /** Stream a single message (no session, stateless). */
212
+ async *stream(message, history) {
213
+ const hist = history ? [...history] : [];
214
+ yield* this._runLoopStream(message, hist);
215
+ }
216
+ /** Create a new session (persisted, maintains conversation history). */
217
+ createSession() {
218
+ const session = this._sessionMgr.createSession({ context: {} });
219
+ return this._wrapSession(session);
220
+ }
221
+ /** Restore a previously saved session by ID. */
222
+ restoreSession(sessionId) {
223
+ const session = this._sessionMgr.restoreSession(sessionId);
224
+ if (!session)
225
+ return null;
226
+ return this._wrapSession(session);
227
+ }
228
+ /** List saved session IDs. */
229
+ listSessions() {
230
+ return this._sessionMgr.listSessionIds();
231
+ }
232
+ /** List saved session summaries. */
233
+ listSessionSummaries(limit) {
234
+ return this._sessionMgr.listSessionsSummary(limit);
235
+ }
236
+ /** Get the underlying LLM provider. */
237
+ get llm() {
238
+ return this._llm;
239
+ }
240
+ /** Get the list of registered tools. */
241
+ get tools() {
242
+ return [...this._tools];
243
+ }
244
+ // ---- Session wrapper ----
245
+ _wrapSession(session) {
246
+ const self = this;
247
+ return {
248
+ get id() {
249
+ return session.id;
250
+ },
251
+ async chat(message) {
252
+ const result = await self._runLoop(message, session.history);
253
+ session.history = result.history;
254
+ session.updatedAt = Date.now() / 1000;
255
+ self._sessionMgr.saveSession(session);
256
+ return { ...result, sessionId: session.id };
257
+ },
258
+ async *stream(message) {
259
+ const chunks = [];
260
+ yield* self._runLoopStream(message, session.history, (fullResult) => {
261
+ session.history = fullResult.history;
262
+ session.updatedAt = Date.now() / 1000;
263
+ self._sessionMgr.saveSession(session);
264
+ });
265
+ },
266
+ getHistory() {
267
+ return [...session.history];
268
+ },
269
+ async save() {
270
+ self._sessionMgr.saveSession(session);
271
+ },
272
+ };
273
+ }
274
+ // ---- Internal agent loop ----
275
+ async _executeTool(name, args) {
276
+ const tool = this._toolMap.get(name);
277
+ if (!tool)
278
+ return `Unknown tool: ${name}`;
279
+ // Approval check
280
+ if (tool.requiresApproval && this._approvalCallback) {
281
+ const approved = await this._approvalCallback(name, args);
282
+ if (!approved)
283
+ return 'Action not approved by user.';
284
+ }
285
+ try {
286
+ const result = await tool.execute(args);
287
+ return result;
288
+ }
289
+ catch (e) {
290
+ return `Error: ${e.message ?? String(e)}`;
291
+ }
292
+ }
293
+ _buildSystemForTurn(userInput) {
294
+ if (!this._contextEnabled)
295
+ return this._systemPrompt;
296
+ let ragLines;
297
+ if (this._memoryEnabled) {
298
+ const memories = (0, memoryCore_1.retrieve)(userInput, 5);
299
+ ragLines = memories.map((m) => m[0]).filter(Boolean);
300
+ }
301
+ return (0, contextCore_1.assembleSystem)({
302
+ baseSystem: this._systemPrompt,
303
+ ragLines: ragLines?.length ? ragLines : undefined,
304
+ });
305
+ }
306
+ async _runLoop(userInput, history) {
307
+ const sanitized = (0, contextCore_1.sanitizeUserInput)(userInput);
308
+ const message = sanitized.text;
309
+ const system = this._buildSystemForTurn(message);
310
+ // Trim history if context management enabled
311
+ let workingHistory = [...history];
312
+ if (this._contextEnabled) {
313
+ const budget = (0, contextCore_1.getBudget)();
314
+ workingHistory = (0, contextCore_1.selectHistory)(workingHistory, message, budget.history);
315
+ }
316
+ workingHistory.push({ role: 'user', content: message });
317
+ const apiMessages = [
318
+ { role: 'system', content: system },
319
+ ...workingHistory,
320
+ ];
321
+ let toolRounds = 0;
322
+ let hadToolCalls = false;
323
+ while (true) {
324
+ const response = (await this._llm.chat(apiMessages, {
325
+ tools: this._openaiTools,
326
+ maxTokens: 8000,
327
+ stream: false,
328
+ }));
329
+ const tcs = response.toolCalls?.length
330
+ ? toolCallsToMsgShape(response.toolCalls)
331
+ : [];
332
+ const content = response.content ?? '';
333
+ if (!tcs.length) {
334
+ workingHistory.push({ role: 'assistant', content: content.trim() });
335
+ if (this._memoryEnabled) {
336
+ (0, memoryCore_1.consolidateTurn)(message, content.trim());
337
+ }
338
+ // Sync back
339
+ history.length = 0;
340
+ history.push(...workingHistory);
341
+ return {
342
+ reply: content.trim(),
343
+ history: workingHistory,
344
+ hadToolCalls,
345
+ };
346
+ }
347
+ hadToolCalls = true;
348
+ toolRounds++;
349
+ if (toolRounds >= this._maxToolRounds) {
350
+ const msg = 'Stopped: reached tool-use safety limit. Please simplify your request.';
351
+ workingHistory.push({ role: 'assistant', content: msg });
352
+ history.length = 0;
353
+ history.push(...workingHistory);
354
+ return { reply: msg, history: workingHistory, hadToolCalls };
355
+ }
356
+ // Execute tools
357
+ const results = [];
358
+ for (const tc of tcs) {
359
+ let args;
360
+ try {
361
+ args = JSON.parse(tc.function.arguments || '{}');
362
+ }
363
+ catch {
364
+ args = {};
365
+ }
366
+ let output = await this._executeTool(tc.function.name, args);
367
+ if (this._contextEnabled) {
368
+ output = (0, contextCore_1.foldObservation)(output);
369
+ }
370
+ results.push({ tool_call_id: tc.id, content: output });
371
+ }
372
+ // Append to conversation
373
+ apiMessages.push({
374
+ role: 'assistant',
375
+ content: content || '',
376
+ tool_calls: tcs,
377
+ });
378
+ workingHistory.push({
379
+ role: 'assistant',
380
+ content: content || '',
381
+ tool_calls: tcs,
382
+ });
383
+ for (const r of results) {
384
+ apiMessages.push({
385
+ role: 'tool',
386
+ tool_call_id: r.tool_call_id,
387
+ content: r.content,
388
+ });
389
+ workingHistory.push({
390
+ role: 'tool',
391
+ tool_call_id: r.tool_call_id,
392
+ content: r.content,
393
+ });
394
+ }
395
+ }
396
+ }
397
+ async *_runLoopStream(userInput, history, onComplete) {
398
+ const sanitized = (0, contextCore_1.sanitizeUserInput)(userInput);
399
+ const message = sanitized.text;
400
+ const system = this._buildSystemForTurn(message);
401
+ let workingHistory = [...history];
402
+ if (this._contextEnabled) {
403
+ const budget = (0, contextCore_1.getBudget)();
404
+ workingHistory = (0, contextCore_1.selectHistory)(workingHistory, message, budget.history);
405
+ }
406
+ workingHistory.push({ role: 'user', content: message });
407
+ const apiMessages = [
408
+ { role: 'system', content: system },
409
+ ...workingHistory,
410
+ ];
411
+ let toolRounds = 0;
412
+ let hadToolCalls = false;
413
+ while (true) {
414
+ const streamGen = this._llm.chat(apiMessages, {
415
+ tools: this._openaiTools,
416
+ maxTokens: 8000,
417
+ stream: true,
418
+ });
419
+ let lastResponse = null;
420
+ for await (const r of streamGen) {
421
+ if (r.content && !r.toolCalls?.length) {
422
+ yield { delta: r.content, done: false };
423
+ }
424
+ lastResponse = r;
425
+ }
426
+ const content = lastResponse?.content ?? '';
427
+ const tcs = lastResponse?.toolCalls?.length
428
+ ? toolCallsToMsgShape(lastResponse.toolCalls)
429
+ : [];
430
+ if (!tcs.length) {
431
+ workingHistory.push({ role: 'assistant', content: content.trim() });
432
+ if (this._memoryEnabled) {
433
+ (0, memoryCore_1.consolidateTurn)(message, content.trim());
434
+ }
435
+ history.length = 0;
436
+ history.push(...workingHistory);
437
+ const result = {
438
+ reply: content.trim(),
439
+ history: workingHistory,
440
+ hadToolCalls,
441
+ };
442
+ if (onComplete)
443
+ onComplete(result);
444
+ yield { reply: content.trim(), done: true };
445
+ return;
446
+ }
447
+ hadToolCalls = true;
448
+ toolRounds++;
449
+ if (toolRounds >= this._maxToolRounds) {
450
+ const msg = 'Stopped: reached tool-use safety limit.';
451
+ workingHistory.push({ role: 'assistant', content: msg });
452
+ history.length = 0;
453
+ history.push(...workingHistory);
454
+ if (onComplete) {
455
+ onComplete({ reply: msg, history: workingHistory, hadToolCalls });
456
+ }
457
+ yield { reply: msg, done: true };
458
+ return;
459
+ }
460
+ // Execute tools (non-streaming phase)
461
+ const results = [];
462
+ for (const tc of tcs) {
463
+ let args;
464
+ try {
465
+ args = JSON.parse(tc.function.arguments || '{}');
466
+ }
467
+ catch {
468
+ args = {};
469
+ }
470
+ let output = await this._executeTool(tc.function.name, args);
471
+ if (this._contextEnabled)
472
+ output = (0, contextCore_1.foldObservation)(output);
473
+ results.push({ tool_call_id: tc.id, content: output });
474
+ }
475
+ apiMessages.push({
476
+ role: 'assistant',
477
+ content: content || '',
478
+ tool_calls: tcs,
479
+ });
480
+ workingHistory.push({
481
+ role: 'assistant',
482
+ content: content || '',
483
+ tool_calls: tcs,
484
+ });
485
+ for (const r of results) {
486
+ apiMessages.push({
487
+ role: 'tool',
488
+ tool_call_id: r.tool_call_id,
489
+ content: r.content,
490
+ });
491
+ workingHistory.push({
492
+ role: 'tool',
493
+ tool_call_id: r.tool_call_id,
494
+ content: r.content,
495
+ });
496
+ }
497
+ }
498
+ }
499
+ }
500
+ exports.AgentInstance = AgentInstance;
501
+ //# sourceMappingURL=agentInstance.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"agentInstance.js","sourceRoot":"","sources":["../src/agentInstance.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,16 @@
1
+ /**
2
+ * agentsCore.ts - Agent type registry and descriptions.
3
+ *
4
+ * Explorer (侦察兵): read-only, high concurrency.
5
+ * Executor (执行者): mutating, single-thread, requires approval.
6
+ */
7
+ export interface AgentConfig {
8
+ description: string;
9
+ tools: string[] | '*';
10
+ prompt: string;
11
+ requiresApproval?: boolean;
12
+ }
13
+ export declare const EXECUTOR_MUTATING_TOOLS: ReadonlySet<string>;
14
+ export declare const AGENT_TYPES: Record<string, AgentConfig>;
15
+ export declare function getAgentDescriptions(): string;
16
+ //# sourceMappingURL=agentsCore.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"agentsCore.d.ts","sourceRoot":"","sources":["../src/agentsCore.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,MAAM,WAAW,WAAW;IACxB,WAAW,EAAE,MAAM,CAAC;IACpB,KAAK,EAAE,MAAM,EAAE,GAAG,GAAG,CAAC;IACtB,MAAM,EAAE,MAAM,CAAC;IACf,gBAAgB,CAAC,EAAE,OAAO,CAAC;CAC9B;AAGD,eAAO,MAAM,uBAAuB,EAAE,WAAW,CAAC,MAAM,CAItD,CAAC;AAEH,eAAO,MAAM,WAAW,EAAE,MAAM,CAAC,MAAM,EAAE,WAAW,CAkCnD,CAAC;AAEF,wBAAgB,oBAAoB,IAAI,MAAM,CAI7C"}
@@ -0,0 +1,50 @@
1
+ "use strict";
2
+ /**
3
+ * agentsCore.ts - Agent type registry and descriptions.
4
+ *
5
+ * Explorer (侦察兵): read-only, high concurrency.
6
+ * Executor (执行者): mutating, single-thread, requires approval.
7
+ */
8
+ Object.defineProperty(exports, "__esModule", { value: true });
9
+ exports.AGENT_TYPES = exports.EXECUTOR_MUTATING_TOOLS = void 0;
10
+ exports.getAgentDescriptions = getAgentDescriptions;
11
+ // Tools that change state; Executor must get approval before running these
12
+ exports.EXECUTOR_MUTATING_TOOLS = new Set([
13
+ 'write_file',
14
+ 'edit_file',
15
+ 'bash',
16
+ ]);
17
+ exports.AGENT_TYPES = {
18
+ explore: {
19
+ description: 'Read-only agent for exploring code, finding files, searching',
20
+ tools: ['bash', 'read_file'],
21
+ prompt: 'You are an exploration agent. Search and analyze, but never modify files. Return a concise summary.',
22
+ },
23
+ code: {
24
+ description: 'Full agent for implementing features and fixing bugs',
25
+ tools: '*',
26
+ prompt: 'You are a coding agent. Implement the requested changes efficiently.',
27
+ },
28
+ plan: {
29
+ description: 'Planning agent for designing implementation strategies',
30
+ tools: ['bash', 'read_file'],
31
+ prompt: 'You are a planning agent. Analyze the codebase and output a numbered implementation plan. Do NOT make changes.',
32
+ },
33
+ explorer: {
34
+ description: 'Explorer (侦察兵): Retrieve info, read emails, query knowledge base. No side effects, safe for high concurrency.',
35
+ tools: ['read_file', 'grep', 'Skill', 'search_knowledge_base', 'read_email'],
36
+ prompt: 'You are an Explorer (侦察兵). Your job is to gather information only: search, read files, query knowledge base, read emails. Never modify files or run commands that change state. Return clear, concise findings.',
37
+ },
38
+ executor: {
39
+ description: 'Executor (执行者): Buy tickets, post, transfer, write files. Single-thread; each mutating action requires user approval.',
40
+ tools: ['write_file', 'edit_file', 'bash', 'TodoWrite'],
41
+ prompt: 'You are an Executor (执行者). You perform concrete actions: write/edit files, run commands, update tasks. Each mutating action will be sent to the user for approval before execution. Propose one logical step at a time when possible.',
42
+ requiresApproval: true,
43
+ },
44
+ };
45
+ function getAgentDescriptions() {
46
+ return Object.entries(exports.AGENT_TYPES)
47
+ .map(([name, cfg]) => `- ${name}: ${cfg.description}`)
48
+ .join('\n');
49
+ }
50
+ //# sourceMappingURL=agentsCore.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"agentsCore.js","sourceRoot":"","sources":["../src/agentsCore.ts"],"names":[],"mappings":";AAAA;;;;;GAKG;;;AAoDH,oDAIC;AA/CD,2EAA2E;AAC9D,QAAA,uBAAuB,GAAwB,IAAI,GAAG,CAAC;IAChE,YAAY;IACZ,WAAW;IACX,MAAM;CACT,CAAC,CAAC;AAEU,QAAA,WAAW,GAAgC;IACpD,OAAO,EAAE;QACL,WAAW,EAAE,8DAA8D;QAC3E,KAAK,EAAE,CAAC,MAAM,EAAE,WAAW,CAAC;QAC5B,MAAM,EACF,qGAAqG;KAC5G;IACD,IAAI,EAAE;QACF,WAAW,EAAE,sDAAsD;QACnE,KAAK,EAAE,GAAG;QACV,MAAM,EACF,sEAAsE;KAC7E;IACD,IAAI,EAAE;QACF,WAAW,EAAE,wDAAwD;QACrE,KAAK,EAAE,CAAC,MAAM,EAAE,WAAW,CAAC;QAC5B,MAAM,EACF,gHAAgH;KACvH;IACD,QAAQ,EAAE;QACN,WAAW,EACP,+GAA+G;QACnH,KAAK,EAAE,CAAC,WAAW,EAAE,MAAM,EAAE,OAAO,EAAE,uBAAuB,EAAE,YAAY,CAAC;QAC5E,MAAM,EACF,iNAAiN;KACxN;IACD,QAAQ,EAAE;QACN,WAAW,EACP,uHAAuH;QAC3H,KAAK,EAAE,CAAC,YAAY,EAAE,WAAW,EAAE,MAAM,EAAE,WAAW,CAAC;QACvD,MAAM,EACF,uOAAuO;QAC3O,gBAAgB,EAAE,IAAI;KACzB;CACJ,CAAC;AAEF,SAAgB,oBAAoB;IAChC,OAAO,MAAM,CAAC,OAAO,CAAC,mBAAW,CAAC;SAC7B,GAAG,CAAC,CAAC,CAAC,IAAI,EAAE,GAAG,CAAC,EAAE,EAAE,CAAC,KAAK,IAAI,KAAK,GAAG,CAAC,WAAW,EAAE,CAAC;SACrD,IAAI,CAAC,IAAI,CAAC,CAAC;AACpB,CAAC"}
@@ -0,0 +1,5 @@
1
+ /**
2
+ * cli/index.ts - CLI barrel export.
3
+ */
4
+ export { Agent, main, runTurn } from './main';
5
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/cli/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,QAAQ,CAAC"}
@@ -0,0 +1,11 @@
1
+ "use strict";
2
+ /**
3
+ * cli/index.ts - CLI barrel export.
4
+ */
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.runTurn = exports.main = exports.Agent = void 0;
7
+ var main_1 = require("./main");
8
+ Object.defineProperty(exports, "Agent", { enumerable: true, get: function () { return main_1.Agent; } });
9
+ Object.defineProperty(exports, "main", { enumerable: true, get: function () { return main_1.main; } });
10
+ Object.defineProperty(exports, "runTurn", { enumerable: true, get: function () { return main_1.runTurn; } });
11
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/cli/index.ts"],"names":[],"mappings":";AAAA;;GAEG;;;AAEH,+BAA8C;AAArC,6FAAA,KAAK,OAAA;AAAE,4FAAA,IAAI,OAAA;AAAE,+FAAA,OAAO,OAAA"}
@@ -0,0 +1,36 @@
1
+ /**
2
+ * cli/main.ts - CLI entry point for the general-purpose agent (REPL, session choice, run_turn).
3
+ */
4
+ import { SessionManager } from '../sessionCore';
5
+ import { LLMProvider } from '../llmProtocol';
6
+ import { LifecycleManager } from '../contextCore';
7
+ export declare function runTurn(options: {
8
+ userInput: string;
9
+ history: Record<string, any>[];
10
+ sessionMgr: SessionManager;
11
+ lifecycle: LifecycleManager;
12
+ budget: Record<string, number>;
13
+ streamCallback?: (chunk: string) => void;
14
+ llm?: LLMProvider;
15
+ }): Promise<{
16
+ history: Record<string, any>[];
17
+ lastAssistantText: string;
18
+ }>;
19
+ export declare class Agent {
20
+ llm: LLMProvider;
21
+ workdir?: string;
22
+ constructor(llm: LLMProvider, workdir?: string);
23
+ runTurn(options: {
24
+ userInput: string;
25
+ history: Record<string, any>[];
26
+ sessionMgr: SessionManager;
27
+ lifecycle: LifecycleManager;
28
+ budget: Record<string, number>;
29
+ streamCallback?: (chunk: string) => void;
30
+ }): Promise<{
31
+ history: Record<string, any>[];
32
+ lastAssistantText: string;
33
+ }>;
34
+ }
35
+ export declare function main(): Promise<void>;
36
+ //# sourceMappingURL=main.d.ts.map