@element47/ag 4.4.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +316 -0
- package/dist/cli/parser.d.ts +6 -0
- package/dist/cli/parser.d.ts.map +1 -0
- package/dist/cli/parser.js +62 -0
- package/dist/cli/parser.js.map +1 -0
- package/dist/cli/repl.d.ts +16 -0
- package/dist/cli/repl.d.ts.map +1 -0
- package/dist/cli/repl.js +599 -0
- package/dist/cli/repl.js.map +1 -0
- package/dist/cli.d.ts +3 -0
- package/dist/cli.d.ts.map +1 -0
- package/dist/cli.js +84 -0
- package/dist/cli.js.map +1 -0
- package/dist/core/__tests__/agent.test.d.ts +2 -0
- package/dist/core/__tests__/agent.test.d.ts.map +1 -0
- package/dist/core/__tests__/agent.test.js +53 -0
- package/dist/core/__tests__/agent.test.js.map +1 -0
- package/dist/core/__tests__/config.test.d.ts +2 -0
- package/dist/core/__tests__/config.test.d.ts.map +1 -0
- package/dist/core/__tests__/config.test.js +58 -0
- package/dist/core/__tests__/config.test.js.map +1 -0
- package/dist/core/__tests__/constants.test.d.ts +2 -0
- package/dist/core/__tests__/constants.test.d.ts.map +1 -0
- package/dist/core/__tests__/constants.test.js +40 -0
- package/dist/core/__tests__/constants.test.js.map +1 -0
- package/dist/core/__tests__/context.test.d.ts +2 -0
- package/dist/core/__tests__/context.test.d.ts.map +1 -0
- package/dist/core/__tests__/context.test.js +120 -0
- package/dist/core/__tests__/context.test.js.map +1 -0
- package/dist/core/__tests__/environment.test.d.ts +2 -0
- package/dist/core/__tests__/environment.test.d.ts.map +1 -0
- package/dist/core/__tests__/environment.test.js +94 -0
- package/dist/core/__tests__/environment.test.js.map +1 -0
- package/dist/core/__tests__/permissions.test.d.ts +2 -0
- package/dist/core/__tests__/permissions.test.d.ts.map +1 -0
- package/dist/core/__tests__/permissions.test.js +66 -0
- package/dist/core/__tests__/permissions.test.js.map +1 -0
- package/dist/core/__tests__/registry.test.d.ts +2 -0
- package/dist/core/__tests__/registry.test.d.ts.map +1 -0
- package/dist/core/__tests__/registry.test.js +152 -0
- package/dist/core/__tests__/registry.test.js.map +1 -0
- package/dist/core/__tests__/streaming.test.d.ts +2 -0
- package/dist/core/__tests__/streaming.test.d.ts.map +1 -0
- package/dist/core/__tests__/streaming.test.js +54 -0
- package/dist/core/__tests__/streaming.test.js.map +1 -0
- package/dist/core/agent.d.ts +87 -0
- package/dist/core/agent.d.ts.map +1 -0
- package/dist/core/agent.js +711 -0
- package/dist/core/agent.js.map +1 -0
- package/dist/core/colors.d.ts +12 -0
- package/dist/core/colors.d.ts.map +1 -0
- package/dist/core/colors.js +37 -0
- package/dist/core/colors.js.map +1 -0
- package/dist/core/config.d.ts +13 -0
- package/dist/core/config.d.ts.map +1 -0
- package/dist/core/config.js +30 -0
- package/dist/core/config.js.map +1 -0
- package/dist/core/constants.d.ts +5 -0
- package/dist/core/constants.d.ts.map +1 -0
- package/dist/core/constants.js +26 -0
- package/dist/core/constants.js.map +1 -0
- package/dist/core/context.d.ts +18 -0
- package/dist/core/context.d.ts.map +1 -0
- package/dist/core/context.js +99 -0
- package/dist/core/context.js.map +1 -0
- package/dist/core/loader.d.ts +3 -0
- package/dist/core/loader.d.ts.map +1 -0
- package/dist/core/loader.js +39 -0
- package/dist/core/loader.js.map +1 -0
- package/dist/core/registry.d.ts +11 -0
- package/dist/core/registry.d.ts.map +1 -0
- package/dist/core/registry.js +112 -0
- package/dist/core/registry.js.map +1 -0
- package/dist/core/skills.d.ts +14 -0
- package/dist/core/skills.d.ts.map +1 -0
- package/dist/core/skills.js +100 -0
- package/dist/core/skills.js.map +1 -0
- package/dist/core/types.d.ts +64 -0
- package/dist/core/types.d.ts.map +1 -0
- package/dist/core/types.js +2 -0
- package/dist/core/types.js.map +1 -0
- package/dist/core/version.d.ts +2 -0
- package/dist/core/version.d.ts.map +1 -0
- package/dist/core/version.js +7 -0
- package/dist/core/version.js.map +1 -0
- package/dist/memory/__tests__/memory.test.d.ts +2 -0
- package/dist/memory/__tests__/memory.test.d.ts.map +1 -0
- package/dist/memory/__tests__/memory.test.js +196 -0
- package/dist/memory/__tests__/memory.test.js.map +1 -0
- package/dist/memory/memory.d.ts +41 -0
- package/dist/memory/memory.d.ts.map +1 -0
- package/dist/memory/memory.js +206 -0
- package/dist/memory/memory.js.map +1 -0
- package/dist/tools/__tests__/bash.test.d.ts +2 -0
- package/dist/tools/__tests__/bash.test.d.ts.map +1 -0
- package/dist/tools/__tests__/bash.test.js +58 -0
- package/dist/tools/__tests__/bash.test.js.map +1 -0
- package/dist/tools/__tests__/file.test.d.ts +2 -0
- package/dist/tools/__tests__/file.test.d.ts.map +1 -0
- package/dist/tools/__tests__/file.test.js +115 -0
- package/dist/tools/__tests__/file.test.js.map +1 -0
- package/dist/tools/__tests__/git.test.d.ts +2 -0
- package/dist/tools/__tests__/git.test.d.ts.map +1 -0
- package/dist/tools/__tests__/git.test.js +19 -0
- package/dist/tools/__tests__/git.test.js.map +1 -0
- package/dist/tools/__tests__/grep.test.d.ts +2 -0
- package/dist/tools/__tests__/grep.test.d.ts.map +1 -0
- package/dist/tools/__tests__/grep.test.js +36 -0
- package/dist/tools/__tests__/grep.test.js.map +1 -0
- package/dist/tools/__tests__/memory-tool.test.d.ts +2 -0
- package/dist/tools/__tests__/memory-tool.test.d.ts.map +1 -0
- package/dist/tools/__tests__/memory-tool.test.js +39 -0
- package/dist/tools/__tests__/memory-tool.test.js.map +1 -0
- package/dist/tools/__tests__/plan.test.d.ts +2 -0
- package/dist/tools/__tests__/plan.test.d.ts.map +1 -0
- package/dist/tools/__tests__/plan.test.js +81 -0
- package/dist/tools/__tests__/plan.test.js.map +1 -0
- package/dist/tools/__tests__/schemas.test.d.ts +2 -0
- package/dist/tools/__tests__/schemas.test.d.ts.map +1 -0
- package/dist/tools/__tests__/schemas.test.js +40 -0
- package/dist/tools/__tests__/schemas.test.js.map +1 -0
- package/dist/tools/__tests__/web.test.d.ts +2 -0
- package/dist/tools/__tests__/web.test.d.ts.map +1 -0
- package/dist/tools/__tests__/web.test.js +51 -0
- package/dist/tools/__tests__/web.test.js.map +1 -0
- package/dist/tools/bash.d.ts +6 -0
- package/dist/tools/bash.d.ts.map +1 -0
- package/dist/tools/bash.js +89 -0
- package/dist/tools/bash.js.map +1 -0
- package/dist/tools/file.d.ts +7 -0
- package/dist/tools/file.d.ts.map +1 -0
- package/dist/tools/file.js +224 -0
- package/dist/tools/file.js.map +1 -0
- package/dist/tools/git.d.ts +3 -0
- package/dist/tools/git.d.ts.map +1 -0
- package/dist/tools/git.js +220 -0
- package/dist/tools/git.js.map +1 -0
- package/dist/tools/grep.d.ts +8 -0
- package/dist/tools/grep.d.ts.map +1 -0
- package/dist/tools/grep.js +265 -0
- package/dist/tools/grep.js.map +1 -0
- package/dist/tools/memory.d.ts +3 -0
- package/dist/tools/memory.d.ts.map +1 -0
- package/dist/tools/memory.js +33 -0
- package/dist/tools/memory.js.map +1 -0
- package/dist/tools/plan.d.ts +3 -0
- package/dist/tools/plan.d.ts.map +1 -0
- package/dist/tools/plan.js +60 -0
- package/dist/tools/plan.js.map +1 -0
- package/dist/tools/skill.d.ts +6 -0
- package/dist/tools/skill.d.ts.map +1 -0
- package/dist/tools/skill.js +20 -0
- package/dist/tools/skill.js.map +1 -0
- package/dist/tools/web.d.ts +3 -0
- package/dist/tools/web.d.ts.map +1 -0
- package/dist/tools/web.js +187 -0
- package/dist/tools/web.js.map +1 -0
- package/package.json +48 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"environment.test.js","sourceRoot":"","sources":["../../../src/core/__tests__/environment.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"permissions.test.d.ts","sourceRoot":"","sources":["../../../src/core/__tests__/permissions.test.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
import { describe, it, expect } from 'vitest';
|
|
2
|
+
import { isReadOnlyToolCall } from '../agent.js';
|
|
3
|
+
describe('isReadOnlyToolCall', () => {
|
|
4
|
+
describe('always read-only tools', () => {
|
|
5
|
+
it('grep search is read-only', () => {
|
|
6
|
+
expect(isReadOnlyToolCall('grep', { action: 'search', pattern: 'foo' })).toBe(true);
|
|
7
|
+
});
|
|
8
|
+
it('grep find is read-only', () => {
|
|
9
|
+
expect(isReadOnlyToolCall('grep', { action: 'find', pattern: '*.ts' })).toBe(true);
|
|
10
|
+
});
|
|
11
|
+
it('memory save is read-only', () => {
|
|
12
|
+
expect(isReadOnlyToolCall('memory', { action: 'save', tier: 'global', content: 'x' })).toBe(true);
|
|
13
|
+
});
|
|
14
|
+
it('plan is read-only', () => {
|
|
15
|
+
expect(isReadOnlyToolCall('plan', { action: 'save', content: 'x' })).toBe(true);
|
|
16
|
+
});
|
|
17
|
+
it('skill is read-only', () => {
|
|
18
|
+
expect(isReadOnlyToolCall('skill', { name: 'frontend' })).toBe(true);
|
|
19
|
+
});
|
|
20
|
+
});
|
|
21
|
+
describe('file tool — action-dependent', () => {
|
|
22
|
+
it('file read is read-only', () => {
|
|
23
|
+
expect(isReadOnlyToolCall('file', { action: 'read', path: 'foo.ts' })).toBe(true);
|
|
24
|
+
});
|
|
25
|
+
it('file list is read-only', () => {
|
|
26
|
+
expect(isReadOnlyToolCall('file', { action: 'list', path: '.' })).toBe(true);
|
|
27
|
+
});
|
|
28
|
+
it('file write is NOT read-only', () => {
|
|
29
|
+
expect(isReadOnlyToolCall('file', { action: 'write', path: 'foo.ts', content: 'x' })).toBe(false);
|
|
30
|
+
});
|
|
31
|
+
it('file edit is NOT read-only', () => {
|
|
32
|
+
expect(isReadOnlyToolCall('file', { action: 'edit', path: 'foo.ts', old_string: 'a', new_string: 'b' })).toBe(false);
|
|
33
|
+
});
|
|
34
|
+
});
|
|
35
|
+
describe('git tool — action-dependent', () => {
|
|
36
|
+
it('git status is read-only', () => {
|
|
37
|
+
expect(isReadOnlyToolCall('git', { action: 'status' })).toBe(true);
|
|
38
|
+
});
|
|
39
|
+
it('git commit is NOT read-only', () => {
|
|
40
|
+
expect(isReadOnlyToolCall('git', { action: 'commit', message: 'fix' })).toBe(false);
|
|
41
|
+
});
|
|
42
|
+
it('git push is NOT read-only', () => {
|
|
43
|
+
expect(isReadOnlyToolCall('git', { action: 'push' })).toBe(false);
|
|
44
|
+
});
|
|
45
|
+
it('git branch is NOT read-only', () => {
|
|
46
|
+
expect(isReadOnlyToolCall('git', { action: 'branch', name: 'feat/x' })).toBe(false);
|
|
47
|
+
});
|
|
48
|
+
});
|
|
49
|
+
describe('web tool — action-dependent', () => {
|
|
50
|
+
it('web search is read-only', () => {
|
|
51
|
+
expect(isReadOnlyToolCall('web', { action: 'search', query: 'foo' })).toBe(true);
|
|
52
|
+
});
|
|
53
|
+
it('web fetch is NOT read-only', () => {
|
|
54
|
+
expect(isReadOnlyToolCall('web', { action: 'fetch', url: 'https://example.com' })).toBe(false);
|
|
55
|
+
});
|
|
56
|
+
});
|
|
57
|
+
describe('unknown/mutating tools', () => {
|
|
58
|
+
it('bash is NOT read-only', () => {
|
|
59
|
+
expect(isReadOnlyToolCall('bash', { command: 'echo hi' })).toBe(false);
|
|
60
|
+
});
|
|
61
|
+
it('unknown custom tool is NOT read-only', () => {
|
|
62
|
+
expect(isReadOnlyToolCall('deploy', { target: 'prod' })).toBe(false);
|
|
63
|
+
});
|
|
64
|
+
});
|
|
65
|
+
});
|
|
66
|
+
//# sourceMappingURL=permissions.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"permissions.test.js","sourceRoot":"","sources":["../../../src/core/__tests__/permissions.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"registry.test.d.ts","sourceRoot":"","sources":["../../../src/core/__tests__/registry.test.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,152 @@
|
|
|
1
|
+
import { describe, it, expect, vi, afterEach } from 'vitest';
|
|
2
|
+
import { formatInstalls, installSkill, removeSkill } from '../registry.js';
|
|
3
|
+
import { existsSync, readFileSync } from 'node:fs';
|
|
4
|
+
import { join } from 'node:path';
|
|
5
|
+
import { homedir } from 'node:os';
|
|
6
|
+
import { rmSync } from 'node:fs';
|
|
7
|
+
const SKILLS_DIR = join(homedir(), '.ag', 'skills');
|
|
8
|
+
const TEST_SKILL = `__test-skill-${Date.now()}`;
|
|
9
|
+
function mockTree(skillDir, files) {
|
|
10
|
+
return {
|
|
11
|
+
tree: [
|
|
12
|
+
{ path: skillDir, type: 'tree', sha: 'abc' },
|
|
13
|
+
...files.map(f => ({ path: `${skillDir}/${f}`, type: 'blob', sha: 'def', size: 100 })),
|
|
14
|
+
],
|
|
15
|
+
};
|
|
16
|
+
}
|
|
17
|
+
describe('formatInstalls', () => {
|
|
18
|
+
it('returns raw number for small values', () => {
|
|
19
|
+
expect(formatInstalls(0)).toBe('0');
|
|
20
|
+
expect(formatInstalls(42)).toBe('42');
|
|
21
|
+
expect(formatInstalls(999)).toBe('999');
|
|
22
|
+
});
|
|
23
|
+
it('formats thousands with K suffix', () => {
|
|
24
|
+
expect(formatInstalls(1000)).toBe('1.0K');
|
|
25
|
+
expect(formatInstalls(2500)).toBe('2.5K');
|
|
26
|
+
expect(formatInstalls(10000)).toBe('10.0K');
|
|
27
|
+
});
|
|
28
|
+
});
|
|
29
|
+
describe('installSkill', () => {
|
|
30
|
+
it('throws on invalid format (no @ separator)', async () => {
|
|
31
|
+
await expect(installSkill('invalid-source')).rejects.toThrow('Format');
|
|
32
|
+
});
|
|
33
|
+
it('throws when skill directory is not found', async () => {
|
|
34
|
+
await expect(installSkill('nonexistent-owner/nonexistent-repo@nonexistent-skill'))
|
|
35
|
+
.rejects.toThrow('Could not find skill directory');
|
|
36
|
+
});
|
|
37
|
+
});
|
|
38
|
+
describe('installSkill - full directory fetch', () => {
|
|
39
|
+
const originalFetch = globalThis.fetch;
|
|
40
|
+
afterEach(() => {
|
|
41
|
+
globalThis.fetch = originalFetch;
|
|
42
|
+
const skillDir = join(SKILLS_DIR, TEST_SKILL);
|
|
43
|
+
if (existsSync(skillDir))
|
|
44
|
+
rmSync(skillDir, { recursive: true });
|
|
45
|
+
});
|
|
46
|
+
it('downloads all files in the skill directory', async () => {
|
|
47
|
+
const skillMdContent = '---\nname: test\ndescription: A test skill\ntools: true\n---\nTest instructions';
|
|
48
|
+
const toolsContent = 'export default { type: "function", function: { name: "test" }, execute: () => {} }';
|
|
49
|
+
globalThis.fetch = vi.fn(async (url) => {
|
|
50
|
+
const urlStr = typeof url === 'string' ? url : url.toString();
|
|
51
|
+
// Trees API
|
|
52
|
+
if (urlStr.includes('/git/trees/main')) {
|
|
53
|
+
return new Response(JSON.stringify(mockTree(TEST_SKILL, ['SKILL.md', 'tools.mjs'])), { status: 200 });
|
|
54
|
+
}
|
|
55
|
+
// File downloads via raw.githubusercontent.com
|
|
56
|
+
if (urlStr.endsWith('/SKILL.md')) {
|
|
57
|
+
return new Response(skillMdContent, { status: 200 });
|
|
58
|
+
}
|
|
59
|
+
if (urlStr.endsWith('/tools.mjs')) {
|
|
60
|
+
return new Response(toolsContent, { status: 200 });
|
|
61
|
+
}
|
|
62
|
+
return new Response('Not Found', { status: 404 });
|
|
63
|
+
});
|
|
64
|
+
const result = await installSkill(`test/repo@${TEST_SKILL}`);
|
|
65
|
+
expect(result).toContain('2 files');
|
|
66
|
+
const skillDir = join(SKILLS_DIR, TEST_SKILL);
|
|
67
|
+
expect(existsSync(join(skillDir, 'SKILL.md'))).toBe(true);
|
|
68
|
+
expect(existsSync(join(skillDir, 'tools.mjs'))).toBe(true);
|
|
69
|
+
expect(readFileSync(join(skillDir, 'SKILL.md'), 'utf-8')).toBe(skillMdContent);
|
|
70
|
+
expect(readFileSync(join(skillDir, 'tools.mjs'), 'utf-8')).toBe(toolsContent);
|
|
71
|
+
});
|
|
72
|
+
it('finds skills nested in arbitrary directory structures', async () => {
|
|
73
|
+
// Simulates tool-belt/skills where skill is at tools/agent-tools/
|
|
74
|
+
const nestedDir = `tools/${TEST_SKILL}`;
|
|
75
|
+
globalThis.fetch = vi.fn(async (url) => {
|
|
76
|
+
const urlStr = typeof url === 'string' ? url : url.toString();
|
|
77
|
+
if (urlStr.includes('/git/trees/main')) {
|
|
78
|
+
return new Response(JSON.stringify(mockTree(nestedDir, ['SKILL.md', 'references/cli.md'])), { status: 200 });
|
|
79
|
+
}
|
|
80
|
+
if (urlStr.endsWith('/SKILL.md')) {
|
|
81
|
+
return new Response('---\nname: test\ndescription: test\n---\nContent', { status: 200 });
|
|
82
|
+
}
|
|
83
|
+
if (urlStr.endsWith('/cli.md')) {
|
|
84
|
+
return new Response('# CLI Reference', { status: 200 });
|
|
85
|
+
}
|
|
86
|
+
return new Response('Not Found', { status: 404 });
|
|
87
|
+
});
|
|
88
|
+
const result = await installSkill(`test/repo@${TEST_SKILL}`);
|
|
89
|
+
expect(result).toContain('2 files');
|
|
90
|
+
const skillDir = join(SKILLS_DIR, TEST_SKILL);
|
|
91
|
+
expect(existsSync(join(skillDir, 'SKILL.md'))).toBe(true);
|
|
92
|
+
expect(existsSync(join(skillDir, 'references', 'cli.md'))).toBe(true);
|
|
93
|
+
});
|
|
94
|
+
it('falls back to master branch', async () => {
|
|
95
|
+
globalThis.fetch = vi.fn(async (url) => {
|
|
96
|
+
const urlStr = typeof url === 'string' ? url : url.toString();
|
|
97
|
+
// main branch fails
|
|
98
|
+
if (urlStr.includes('/git/trees/main')) {
|
|
99
|
+
return new Response('Not Found', { status: 404 });
|
|
100
|
+
}
|
|
101
|
+
// master branch works
|
|
102
|
+
if (urlStr.includes('/git/trees/master')) {
|
|
103
|
+
return new Response(JSON.stringify(mockTree(TEST_SKILL, ['SKILL.md'])), { status: 200 });
|
|
104
|
+
}
|
|
105
|
+
if (urlStr.endsWith('/SKILL.md')) {
|
|
106
|
+
return new Response('---\nname: test\ndescription: test\n---\nContent', { status: 200 });
|
|
107
|
+
}
|
|
108
|
+
return new Response('Not Found', { status: 404 });
|
|
109
|
+
});
|
|
110
|
+
const result = await installSkill(`test/repo@${TEST_SKILL}`);
|
|
111
|
+
expect(result).toContain('1 file');
|
|
112
|
+
});
|
|
113
|
+
it('reports warnings for files that fail to download', async () => {
|
|
114
|
+
globalThis.fetch = vi.fn(async (url) => {
|
|
115
|
+
const urlStr = typeof url === 'string' ? url : url.toString();
|
|
116
|
+
if (urlStr.includes('/git/trees/main')) {
|
|
117
|
+
return new Response(JSON.stringify(mockTree(TEST_SKILL, ['SKILL.md', 'broken.js'])), { status: 200 });
|
|
118
|
+
}
|
|
119
|
+
if (urlStr.endsWith('/SKILL.md')) {
|
|
120
|
+
return new Response('---\nname: test\ndescription: test\n---\nContent', { status: 200 });
|
|
121
|
+
}
|
|
122
|
+
if (urlStr.endsWith('/broken.js')) {
|
|
123
|
+
return new Response('Server Error', { status: 500 });
|
|
124
|
+
}
|
|
125
|
+
return new Response('Not Found', { status: 404 });
|
|
126
|
+
});
|
|
127
|
+
const result = await installSkill(`test/repo@${TEST_SKILL}`);
|
|
128
|
+
expect(result).toContain('Warnings');
|
|
129
|
+
expect(result).toContain('broken.js');
|
|
130
|
+
expect(existsSync(join(SKILLS_DIR, TEST_SKILL, 'SKILL.md'))).toBe(true);
|
|
131
|
+
});
|
|
132
|
+
it('sends auth header when GITHUB_TOKEN is set', async () => {
|
|
133
|
+
const capturedHeaders = [];
|
|
134
|
+
process.env.GITHUB_TOKEN = 'test-token-123';
|
|
135
|
+
globalThis.fetch = vi.fn(async (_url, init) => {
|
|
136
|
+
if (init?.headers)
|
|
137
|
+
capturedHeaders.push(init.headers);
|
|
138
|
+
return new Response('Not Found', { status: 404 });
|
|
139
|
+
});
|
|
140
|
+
await installSkill(`test/repo@${TEST_SKILL}`).catch(() => { });
|
|
141
|
+
delete process.env.GITHUB_TOKEN;
|
|
142
|
+
expect(capturedHeaders.length).toBeGreaterThan(0);
|
|
143
|
+
expect(capturedHeaders[0]['Authorization']).toBe('Bearer test-token-123');
|
|
144
|
+
});
|
|
145
|
+
});
|
|
146
|
+
describe('removeSkill', () => {
|
|
147
|
+
it('returns not-found for nonexistent skill', () => {
|
|
148
|
+
const result = removeSkill('nonexistent-skill-xyz-' + Date.now());
|
|
149
|
+
expect(result).toContain('not found');
|
|
150
|
+
});
|
|
151
|
+
});
|
|
152
|
+
//# sourceMappingURL=registry.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"registry.test.js","sourceRoot":"","sources":["../../../src/core/__tests__/registry.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"streaming.test.d.ts","sourceRoot":"","sources":["../../../src/core/__tests__/streaming.test.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
import { describe, it, expect } from 'vitest';
|
|
2
|
+
/**
|
|
3
|
+
* StreamChunk type contract tests — ensures the streaming interface
|
|
4
|
+
* is well-defined and types are correct.
|
|
5
|
+
*/
|
|
6
|
+
describe('StreamChunk types', () => {
|
|
7
|
+
it('text chunk has correct shape', () => {
|
|
8
|
+
const chunk = { type: 'text', content: 'hello' };
|
|
9
|
+
expect(chunk.type).toBe('text');
|
|
10
|
+
expect(chunk.content).toBe('hello');
|
|
11
|
+
});
|
|
12
|
+
it('tool_start chunk has correct shape', () => {
|
|
13
|
+
const chunk = { type: 'tool_start', toolName: 'bash', toolCallId: 'call_123' };
|
|
14
|
+
expect(chunk.type).toBe('tool_start');
|
|
15
|
+
expect(chunk.toolName).toBe('bash');
|
|
16
|
+
expect(chunk.toolCallId).toBe('call_123');
|
|
17
|
+
});
|
|
18
|
+
it('tool_end chunk has correct shape', () => {
|
|
19
|
+
const chunk = { type: 'tool_end', toolName: 'file', toolCallId: 'call_456', content: 'result', success: true };
|
|
20
|
+
expect(chunk.type).toBe('tool_end');
|
|
21
|
+
expect(chunk.success).toBe(true);
|
|
22
|
+
expect(chunk.content).toBe('result');
|
|
23
|
+
});
|
|
24
|
+
it('done chunk has correct shape', () => {
|
|
25
|
+
const chunk = { type: 'done', content: 'final response' };
|
|
26
|
+
expect(chunk.type).toBe('done');
|
|
27
|
+
expect(chunk.content).toBe('final response');
|
|
28
|
+
});
|
|
29
|
+
it('max_iterations chunk has correct shape', () => {
|
|
30
|
+
const chunk = { type: 'max_iterations' };
|
|
31
|
+
expect(chunk.type).toBe('max_iterations');
|
|
32
|
+
expect(chunk.content).toBeUndefined();
|
|
33
|
+
});
|
|
34
|
+
it('thinking chunk has correct shape', () => {
|
|
35
|
+
const chunk = { type: 'thinking', content: 'thinking [1/25]' };
|
|
36
|
+
expect(chunk.type).toBe('thinking');
|
|
37
|
+
expect(chunk.content).toBe('thinking [1/25]');
|
|
38
|
+
});
|
|
39
|
+
it('all chunk types are covered', () => {
|
|
40
|
+
const validTypes = ['thinking', 'text', 'tool_start', 'tool_end', 'done', 'max_iterations'];
|
|
41
|
+
const chunks = [
|
|
42
|
+
{ type: 'thinking', content: 'thinking' },
|
|
43
|
+
{ type: 'text', content: 'a' },
|
|
44
|
+
{ type: 'tool_start', toolName: 'x' },
|
|
45
|
+
{ type: 'tool_end', toolName: 'x', success: true },
|
|
46
|
+
{ type: 'done' },
|
|
47
|
+
{ type: 'max_iterations' },
|
|
48
|
+
];
|
|
49
|
+
for (const chunk of chunks) {
|
|
50
|
+
expect(validTypes).toContain(chunk.type);
|
|
51
|
+
}
|
|
52
|
+
});
|
|
53
|
+
});
|
|
54
|
+
//# sourceMappingURL=streaming.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"streaming.test.js","sourceRoot":"","sources":["../../../src/core/__tests__/streaming.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,87 @@
|
|
|
1
|
+
import { Tool, AgentConfig, StreamChunk, ConfirmToolCall } from './types.js';
|
|
2
|
+
import { type MemoryStats } from '../memory/memory.js';
|
|
3
|
+
import { type SkillHost } from '../tools/skill.js';
|
|
4
|
+
import { type SkillMeta } from './skills.js';
|
|
5
|
+
import { ContextTracker } from './context.js';
|
|
6
|
+
export declare const MAX_ITERATIONS_REACHED = "[Max iterations reached]";
|
|
7
|
+
export declare function getEnvironmentContext(cwd: string): string;
|
|
8
|
+
export declare function isReadOnlyToolCall(toolName: string, args: Record<string, unknown>): boolean;
|
|
9
|
+
export declare function truncateToolResult(result: string): string;
|
|
10
|
+
export declare class Agent implements SkillHost {
|
|
11
|
+
private readonly apiKey;
|
|
12
|
+
private model;
|
|
13
|
+
private readonly baseURL;
|
|
14
|
+
private readonly baseSystemPrompt;
|
|
15
|
+
private readonly maxIterations;
|
|
16
|
+
private readonly tools;
|
|
17
|
+
private readonly cwd;
|
|
18
|
+
private messages;
|
|
19
|
+
private allSkills;
|
|
20
|
+
private activeSkillContent;
|
|
21
|
+
private cachedContext;
|
|
22
|
+
private cachedCatalog;
|
|
23
|
+
private cachedAlwaysOn;
|
|
24
|
+
private readonly builtinToolNames;
|
|
25
|
+
private contextTracker;
|
|
26
|
+
private compactionInProgress;
|
|
27
|
+
private confirmToolCall;
|
|
28
|
+
constructor(config?: AgentConfig);
|
|
29
|
+
addTool(tool: Tool): void;
|
|
30
|
+
private refreshCache;
|
|
31
|
+
private getProjectListing;
|
|
32
|
+
private get systemPrompt();
|
|
33
|
+
activateSkill(name: string): Promise<string>;
|
|
34
|
+
private compactConversation;
|
|
35
|
+
chat(content: string): Promise<string>;
|
|
36
|
+
chatStream(content: string): AsyncGenerator<StreamChunk>;
|
|
37
|
+
getTools(): Array<{
|
|
38
|
+
name: string;
|
|
39
|
+
description: string;
|
|
40
|
+
}>;
|
|
41
|
+
getModel(): string;
|
|
42
|
+
getBaseURL(): string;
|
|
43
|
+
setModel(model: string): void;
|
|
44
|
+
setConfirmToolCall(cb: ConfirmToolCall | null): void;
|
|
45
|
+
compactNow(): Promise<void>;
|
|
46
|
+
fetchModels(query?: string): Promise<Array<{
|
|
47
|
+
id: string;
|
|
48
|
+
name: string;
|
|
49
|
+
context_length: number;
|
|
50
|
+
pricing?: {
|
|
51
|
+
prompt?: string;
|
|
52
|
+
completion?: string;
|
|
53
|
+
};
|
|
54
|
+
}>>;
|
|
55
|
+
getSkills(): SkillMeta[];
|
|
56
|
+
getActiveSkillNames(): string[];
|
|
57
|
+
refreshSkills(): void;
|
|
58
|
+
getStats(): MemoryStats;
|
|
59
|
+
getPaths(): {
|
|
60
|
+
globalMemory: string;
|
|
61
|
+
projectMemory: string;
|
|
62
|
+
plansDir: string;
|
|
63
|
+
history: string;
|
|
64
|
+
projectDir: string;
|
|
65
|
+
};
|
|
66
|
+
getGlobalMemory(): string;
|
|
67
|
+
getProjectMemory(): string;
|
|
68
|
+
getPlan(): string;
|
|
69
|
+
getPlanByName(name: string): string;
|
|
70
|
+
getPlans(): {
|
|
71
|
+
name: string;
|
|
72
|
+
path: string;
|
|
73
|
+
}[];
|
|
74
|
+
setGlobalMemory(content: string): void;
|
|
75
|
+
setProjectMemory(content: string): void;
|
|
76
|
+
setPlan(content: string, name?: string): void;
|
|
77
|
+
appendToPlan(content: string): void;
|
|
78
|
+
activatePlan(name: string): void;
|
|
79
|
+
getActivePlanName(): string | null;
|
|
80
|
+
clearProject(): void;
|
|
81
|
+
clearAll(): void;
|
|
82
|
+
getContextUsage(): string;
|
|
83
|
+
getContextDetails(): string;
|
|
84
|
+
getContextTracker(): ContextTracker;
|
|
85
|
+
getSystemPromptSize(): number;
|
|
86
|
+
}
|
|
87
|
+
//# sourceMappingURL=agent.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"agent.d.ts","sourceRoot":"","sources":["../../src/core/agent.ts"],"names":[],"mappings":"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"}
|