@element47/ag 4.5.1 → 4.5.3
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 +184 -8
- package/dist/cli/__tests__/repl-rawmode.test.d.ts +2 -0
- package/dist/cli/__tests__/repl-rawmode.test.d.ts.map +1 -0
- package/dist/cli/__tests__/repl-rawmode.test.js +46 -0
- package/dist/cli/__tests__/repl-rawmode.test.js.map +1 -0
- package/dist/cli/repl.d.ts +7 -2
- package/dist/cli/repl.d.ts.map +1 -1
- package/dist/cli/repl.js +203 -25
- package/dist/cli/repl.js.map +1 -1
- package/dist/cli.js +10 -8
- package/dist/cli.js.map +1 -1
- package/dist/core/__tests__/agent.test.js +42 -1
- package/dist/core/__tests__/agent.test.js.map +1 -1
- package/dist/core/__tests__/context.test.js +81 -0
- package/dist/core/__tests__/context.test.js.map +1 -1
- package/dist/core/__tests__/events.test.d.ts +2 -0
- package/dist/core/__tests__/events.test.d.ts.map +1 -0
- package/dist/core/__tests__/events.test.js +131 -0
- package/dist/core/__tests__/events.test.js.map +1 -0
- package/dist/core/__tests__/extensions.test.d.ts +2 -0
- package/dist/core/__tests__/extensions.test.d.ts.map +1 -0
- package/dist/core/__tests__/extensions.test.js +59 -0
- package/dist/core/__tests__/extensions.test.js.map +1 -0
- package/dist/core/__tests__/guardrails.test.d.ts +2 -0
- package/dist/core/__tests__/guardrails.test.d.ts.map +1 -0
- package/dist/core/__tests__/guardrails.test.js +418 -0
- package/dist/core/__tests__/guardrails.test.js.map +1 -0
- package/dist/core/__tests__/permission-manager.test.d.ts +2 -0
- package/dist/core/__tests__/permission-manager.test.d.ts.map +1 -0
- package/dist/core/__tests__/permission-manager.test.js +246 -0
- package/dist/core/__tests__/permission-manager.test.js.map +1 -0
- package/dist/core/__tests__/streaming.test.js +8 -1
- package/dist/core/__tests__/streaming.test.js.map +1 -1
- package/dist/core/agent.d.ts +27 -0
- package/dist/core/agent.d.ts.map +1 -1
- package/dist/core/agent.js +263 -121
- package/dist/core/agent.js.map +1 -1
- package/dist/core/context.d.ts.map +1 -1
- package/dist/core/context.js +14 -6
- package/dist/core/context.js.map +1 -1
- package/dist/core/events.d.ts +62 -0
- package/dist/core/events.d.ts.map +1 -0
- package/dist/core/events.js +23 -0
- package/dist/core/events.js.map +1 -0
- package/dist/core/extensions.d.ts +10 -0
- package/dist/core/extensions.d.ts.map +1 -0
- package/dist/core/extensions.js +66 -0
- package/dist/core/extensions.js.map +1 -0
- package/dist/core/guardrails.d.ts +32 -0
- package/dist/core/guardrails.d.ts.map +1 -0
- package/dist/core/guardrails.js +149 -0
- package/dist/core/guardrails.js.map +1 -0
- package/dist/core/loader.d.ts +6 -2
- package/dist/core/loader.d.ts.map +1 -1
- package/dist/core/loader.js +23 -9
- package/dist/core/loader.js.map +1 -1
- package/dist/core/permissions.d.ts +60 -0
- package/dist/core/permissions.d.ts.map +1 -0
- package/dist/core/permissions.js +252 -0
- package/dist/core/permissions.js.map +1 -0
- package/dist/core/registry.d.ts.map +1 -1
- package/dist/core/registry.js +16 -0
- package/dist/core/registry.js.map +1 -1
- package/dist/core/skills.d.ts.map +1 -1
- package/dist/core/skills.js +26 -3
- package/dist/core/skills.js.map +1 -1
- package/dist/core/types.d.ts +15 -1
- package/dist/core/types.d.ts.map +1 -1
- package/dist/memory/__tests__/memory.test.js +28 -0
- package/dist/memory/__tests__/memory.test.js.map +1 -1
- package/dist/memory/memory.js +1 -1
- package/dist/memory/memory.js.map +1 -1
- package/dist/tools/__tests__/bash.test.js +4 -0
- package/dist/tools/__tests__/bash.test.js.map +1 -1
- package/dist/tools/__tests__/file.test.js +7 -1
- package/dist/tools/__tests__/file.test.js.map +1 -1
- package/package.json +1 -4
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { describe, it, expect } from 'vitest';
|
|
2
|
-
import { truncateToolResult } from '../agent.js';
|
|
2
|
+
import { truncateToolResult, raceAll } from '../agent.js';
|
|
3
3
|
describe('truncateToolResult', () => {
|
|
4
4
|
it('returns short results unchanged', () => {
|
|
5
5
|
const result = 'hello world';
|
|
@@ -50,4 +50,45 @@ describe('truncateToolResult', () => {
|
|
|
50
50
|
expect(truncateToolResult('single line')).toBe('single line');
|
|
51
51
|
});
|
|
52
52
|
});
|
|
53
|
+
describe('raceAll', () => {
|
|
54
|
+
it('yields all results', async () => {
|
|
55
|
+
const promises = [
|
|
56
|
+
Promise.resolve('a'),
|
|
57
|
+
Promise.resolve('b'),
|
|
58
|
+
Promise.resolve('c'),
|
|
59
|
+
];
|
|
60
|
+
const results = [];
|
|
61
|
+
for await (const v of raceAll(promises)) {
|
|
62
|
+
results.push(v);
|
|
63
|
+
}
|
|
64
|
+
expect(results.sort()).toEqual(['a', 'b', 'c']);
|
|
65
|
+
});
|
|
66
|
+
it('yields in resolution order not creation order', async () => {
|
|
67
|
+
const delay = (ms, val) => new Promise(r => setTimeout(() => r(val), ms));
|
|
68
|
+
const promises = [
|
|
69
|
+
delay(30, 'slow'),
|
|
70
|
+
delay(10, 'fast'),
|
|
71
|
+
delay(20, 'mid'),
|
|
72
|
+
];
|
|
73
|
+
const results = [];
|
|
74
|
+
for await (const v of raceAll(promises)) {
|
|
75
|
+
results.push(v);
|
|
76
|
+
}
|
|
77
|
+
expect(results).toEqual(['fast', 'mid', 'slow']);
|
|
78
|
+
});
|
|
79
|
+
it('handles empty array', async () => {
|
|
80
|
+
const results = [];
|
|
81
|
+
for await (const v of raceAll([])) {
|
|
82
|
+
results.push(v);
|
|
83
|
+
}
|
|
84
|
+
expect(results).toEqual([]);
|
|
85
|
+
});
|
|
86
|
+
it('handles single promise', async () => {
|
|
87
|
+
const results = [];
|
|
88
|
+
for await (const v of raceAll([Promise.resolve(42)])) {
|
|
89
|
+
results.push(v);
|
|
90
|
+
}
|
|
91
|
+
expect(results).toEqual([42]);
|
|
92
|
+
});
|
|
93
|
+
});
|
|
53
94
|
//# sourceMappingURL=agent.test.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"agent.test.js","sourceRoot":"","sources":["../../../src/core/__tests__/agent.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,EAAE,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAC9C,OAAO,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"agent.test.js","sourceRoot":"","sources":["../../../src/core/__tests__/agent.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -115,6 +115,87 @@ describe('ContextTracker', () => {
|
|
|
115
115
|
const t = new ContextTracker('unknown/model');
|
|
116
116
|
expect(t.formatDetailed()).toContain('unknown');
|
|
117
117
|
});
|
|
118
|
+
it('shows cache hit rate when cached_tokens present', () => {
|
|
119
|
+
const t = new ContextTracker('anthropic/claude-sonnet-4.6');
|
|
120
|
+
t.update({
|
|
121
|
+
prompt_tokens: 10000, completion_tokens: 200, total_tokens: 10200,
|
|
122
|
+
prompt_tokens_details: { cached_tokens: 9000 },
|
|
123
|
+
});
|
|
124
|
+
const output = t.formatDetailed();
|
|
125
|
+
expect(output).toContain('Cached');
|
|
126
|
+
expect(output).toContain('90%');
|
|
127
|
+
});
|
|
128
|
+
it('shows cache write info on first request', () => {
|
|
129
|
+
const t = new ContextTracker('anthropic/claude-sonnet-4.6');
|
|
130
|
+
t.update({
|
|
131
|
+
prompt_tokens: 5000, completion_tokens: 200, total_tokens: 5200,
|
|
132
|
+
prompt_tokens_details: { cache_write_tokens: 3000 },
|
|
133
|
+
});
|
|
134
|
+
const output = t.formatDetailed();
|
|
135
|
+
expect(output).toContain('Cache write');
|
|
136
|
+
});
|
|
137
|
+
});
|
|
138
|
+
describe('format with cache', () => {
|
|
139
|
+
it('shows cached tokens in context bar', () => {
|
|
140
|
+
const t = new ContextTracker('anthropic/claude-sonnet-4.6');
|
|
141
|
+
t.update({
|
|
142
|
+
prompt_tokens: 10000, completion_tokens: 200, total_tokens: 10200,
|
|
143
|
+
prompt_tokens_details: { cached_tokens: 8000 },
|
|
144
|
+
});
|
|
145
|
+
const output = t.format();
|
|
146
|
+
expect(output).toContain('cached');
|
|
147
|
+
expect(output).toContain('80%');
|
|
148
|
+
});
|
|
149
|
+
it('does not show cache info when no cached tokens', () => {
|
|
150
|
+
const t = new ContextTracker('anthropic/claude-sonnet-4.6');
|
|
151
|
+
t.update({ prompt_tokens: 10000, completion_tokens: 200, total_tokens: 10200 });
|
|
152
|
+
const output = t.format();
|
|
153
|
+
expect(output).not.toContain('cached');
|
|
154
|
+
});
|
|
155
|
+
it('shows 99% instead of 100% when nearly all tokens are cached', () => {
|
|
156
|
+
const t = new ContextTracker('anthropic/claude-sonnet-4.6');
|
|
157
|
+
t.update({
|
|
158
|
+
prompt_tokens: 28000, completion_tokens: 200, total_tokens: 28200,
|
|
159
|
+
prompt_tokens_details: { cached_tokens: 27995 },
|
|
160
|
+
});
|
|
161
|
+
const output = t.format();
|
|
162
|
+
expect(output).toContain('99%');
|
|
163
|
+
expect(output).not.toContain('100%');
|
|
164
|
+
expect(output).toContain('+5');
|
|
165
|
+
expect(output).toContain('new');
|
|
166
|
+
});
|
|
167
|
+
it('shows 100% only when all prompt tokens are cached', () => {
|
|
168
|
+
const t = new ContextTracker('anthropic/claude-sonnet-4.6');
|
|
169
|
+
t.update({
|
|
170
|
+
prompt_tokens: 28000, completion_tokens: 200, total_tokens: 28200,
|
|
171
|
+
prompt_tokens_details: { cached_tokens: 28000 },
|
|
172
|
+
});
|
|
173
|
+
const output = t.format();
|
|
174
|
+
expect(output).toContain('100%');
|
|
175
|
+
});
|
|
176
|
+
});
|
|
177
|
+
describe('formatDetailed cache rounding', () => {
|
|
178
|
+
it('shows 99% hit rate when nearly all tokens are cached', () => {
|
|
179
|
+
const t = new ContextTracker('anthropic/claude-sonnet-4.6');
|
|
180
|
+
t.update({
|
|
181
|
+
prompt_tokens: 28000, completion_tokens: 200, total_tokens: 28200,
|
|
182
|
+
prompt_tokens_details: { cached_tokens: 27995 },
|
|
183
|
+
});
|
|
184
|
+
const output = t.formatDetailed();
|
|
185
|
+
expect(output).toContain('99%');
|
|
186
|
+
expect(output).not.toContain('100%');
|
|
187
|
+
expect(output).toContain('uncached');
|
|
188
|
+
});
|
|
189
|
+
it('shows both cached and written when both present', () => {
|
|
190
|
+
const t = new ContextTracker('anthropic/claude-sonnet-4.6');
|
|
191
|
+
t.update({
|
|
192
|
+
prompt_tokens: 10000, completion_tokens: 200, total_tokens: 10200,
|
|
193
|
+
prompt_tokens_details: { cached_tokens: 8000, cache_write_tokens: 1500 },
|
|
194
|
+
});
|
|
195
|
+
const output = t.formatDetailed();
|
|
196
|
+
expect(output).toContain('Cached');
|
|
197
|
+
expect(output).toContain('Cache write');
|
|
198
|
+
});
|
|
118
199
|
});
|
|
119
200
|
});
|
|
120
201
|
//# sourceMappingURL=context.test.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"context.test.js","sourceRoot":"","sources":["../../../src/core/__tests__/context.test.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"context.test.js","sourceRoot":"","sources":["../../../src/core/__tests__/context.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"events.test.d.ts","sourceRoot":"","sources":["../../../src/core/__tests__/events.test.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,131 @@
|
|
|
1
|
+
import { describe, it, expect, vi } from 'vitest';
|
|
2
|
+
import { AgentEventEmitter } from '../events.js';
|
|
3
|
+
describe('AgentEventEmitter', () => {
|
|
4
|
+
it('on() registers handler and returns unsubscribe function', async () => {
|
|
5
|
+
const emitter = new AgentEventEmitter();
|
|
6
|
+
const handler = vi.fn();
|
|
7
|
+
const unsub = emitter.on('turn_start', handler);
|
|
8
|
+
await emitter.emit('turn_start', { iteration: 0, maxIterations: 25, messageCount: 1 });
|
|
9
|
+
expect(handler).toHaveBeenCalledOnce();
|
|
10
|
+
unsub();
|
|
11
|
+
await emitter.emit('turn_start', { iteration: 1, maxIterations: 25, messageCount: 2 });
|
|
12
|
+
expect(handler).toHaveBeenCalledOnce(); // still 1 — unsubscribed
|
|
13
|
+
});
|
|
14
|
+
it('emit() calls handlers sequentially in registration order', async () => {
|
|
15
|
+
const emitter = new AgentEventEmitter();
|
|
16
|
+
const order = [];
|
|
17
|
+
emitter.on('turn_start', async () => { order.push(1); });
|
|
18
|
+
emitter.on('turn_start', async () => { order.push(2); });
|
|
19
|
+
emitter.on('turn_start', async () => { order.push(3); });
|
|
20
|
+
await emitter.emit('turn_start', { iteration: 0, maxIterations: 25, messageCount: 1 });
|
|
21
|
+
expect(order).toEqual([1, 2, 3]);
|
|
22
|
+
});
|
|
23
|
+
it('handlers can mutate event data and subsequent handlers see mutations', async () => {
|
|
24
|
+
const emitter = new AgentEventEmitter();
|
|
25
|
+
emitter.on('input', (event) => {
|
|
26
|
+
event.content = event.content.toUpperCase();
|
|
27
|
+
});
|
|
28
|
+
emitter.on('input', (event) => {
|
|
29
|
+
event.content += '!';
|
|
30
|
+
});
|
|
31
|
+
const data = { content: 'hello' };
|
|
32
|
+
await emitter.emit('input', data);
|
|
33
|
+
expect(data.content).toBe('HELLO!');
|
|
34
|
+
});
|
|
35
|
+
it('async handlers are awaited before next handler runs', async () => {
|
|
36
|
+
const emitter = new AgentEventEmitter();
|
|
37
|
+
const order = [];
|
|
38
|
+
emitter.on('turn_start', async () => {
|
|
39
|
+
await new Promise(r => setTimeout(r, 10));
|
|
40
|
+
order.push('slow');
|
|
41
|
+
});
|
|
42
|
+
emitter.on('turn_start', () => {
|
|
43
|
+
order.push('fast');
|
|
44
|
+
});
|
|
45
|
+
await emitter.emit('turn_start', { iteration: 0, maxIterations: 25, messageCount: 1 });
|
|
46
|
+
expect(order).toEqual(['slow', 'fast']); // slow finishes before fast starts
|
|
47
|
+
});
|
|
48
|
+
it('unsubscribe removes only that handler', async () => {
|
|
49
|
+
const emitter = new AgentEventEmitter();
|
|
50
|
+
const h1 = vi.fn();
|
|
51
|
+
const h2 = vi.fn();
|
|
52
|
+
emitter.on('turn_start', h1);
|
|
53
|
+
const unsub2 = emitter.on('turn_start', h2);
|
|
54
|
+
unsub2();
|
|
55
|
+
await emitter.emit('turn_start', { iteration: 0, maxIterations: 25, messageCount: 1 });
|
|
56
|
+
expect(h1).toHaveBeenCalledOnce();
|
|
57
|
+
expect(h2).not.toHaveBeenCalled();
|
|
58
|
+
});
|
|
59
|
+
it('emitting event with no handlers is a no-op', async () => {
|
|
60
|
+
const emitter = new AgentEventEmitter();
|
|
61
|
+
// Should not throw
|
|
62
|
+
await emitter.emit('turn_start', { iteration: 0, maxIterations: 25, messageCount: 1 });
|
|
63
|
+
});
|
|
64
|
+
it('multiple events do not interfere with each other', async () => {
|
|
65
|
+
const emitter = new AgentEventEmitter();
|
|
66
|
+
const turnHandler = vi.fn();
|
|
67
|
+
const inputHandler = vi.fn();
|
|
68
|
+
emitter.on('turn_start', turnHandler);
|
|
69
|
+
emitter.on('input', inputHandler);
|
|
70
|
+
await emitter.emit('turn_start', { iteration: 0, maxIterations: 25, messageCount: 1 });
|
|
71
|
+
expect(turnHandler).toHaveBeenCalledOnce();
|
|
72
|
+
expect(inputHandler).not.toHaveBeenCalled();
|
|
73
|
+
await emitter.emit('input', { content: 'test' });
|
|
74
|
+
expect(turnHandler).toHaveBeenCalledOnce();
|
|
75
|
+
expect(inputHandler).toHaveBeenCalledOnce();
|
|
76
|
+
});
|
|
77
|
+
it('tool_call block flag prevents execution when set', async () => {
|
|
78
|
+
const emitter = new AgentEventEmitter();
|
|
79
|
+
emitter.on('tool_call', (event) => {
|
|
80
|
+
if (event.toolName === 'bash' && String(event.args.command).includes('rm -rf')) {
|
|
81
|
+
event.block = true;
|
|
82
|
+
event.blockReason = 'Dangerous command blocked';
|
|
83
|
+
}
|
|
84
|
+
});
|
|
85
|
+
const safeEvent = { toolName: 'bash', toolCallId: '1', args: { command: 'ls' } };
|
|
86
|
+
await emitter.emit('tool_call', safeEvent);
|
|
87
|
+
expect(safeEvent.block).toBeUndefined();
|
|
88
|
+
const dangerEvent = { toolName: 'bash', toolCallId: '2', args: { command: 'rm -rf /' } };
|
|
89
|
+
await emitter.emit('tool_call', dangerEvent);
|
|
90
|
+
expect(dangerEvent.block).toBe(true);
|
|
91
|
+
expect(dangerEvent.blockReason).toBe('Dangerous command blocked');
|
|
92
|
+
});
|
|
93
|
+
it('tool_result content can be mutated', async () => {
|
|
94
|
+
const emitter = new AgentEventEmitter();
|
|
95
|
+
emitter.on('tool_result', (event) => {
|
|
96
|
+
event.content = event.content.replace(/secret/g, '[REDACTED]');
|
|
97
|
+
});
|
|
98
|
+
const data = { toolName: 'file', toolCallId: '1', args: {}, content: 'found secret key', isError: false };
|
|
99
|
+
await emitter.emit('tool_result', data);
|
|
100
|
+
expect(data.content).toBe('found [REDACTED] key');
|
|
101
|
+
});
|
|
102
|
+
it('before_compact cancel prevents compaction', async () => {
|
|
103
|
+
const emitter = new AgentEventEmitter();
|
|
104
|
+
emitter.on('before_compact', (event) => {
|
|
105
|
+
event.cancel = true;
|
|
106
|
+
});
|
|
107
|
+
const data = { messageCount: 100, cancel: false, customSummary: undefined };
|
|
108
|
+
await emitter.emit('before_compact', data);
|
|
109
|
+
expect(data.cancel).toBe(true);
|
|
110
|
+
});
|
|
111
|
+
it('before_request messages can be filtered by handler', async () => {
|
|
112
|
+
const emitter = new AgentEventEmitter();
|
|
113
|
+
emitter.on('before_request', (event) => {
|
|
114
|
+
event.messages = event.messages.filter(m => m.role !== 'tool');
|
|
115
|
+
});
|
|
116
|
+
const data = {
|
|
117
|
+
messages: [
|
|
118
|
+
{ role: 'user', content: 'hi' },
|
|
119
|
+
{ role: 'tool', content: 'result', tool_call_id: '1' },
|
|
120
|
+
{ role: 'assistant', content: 'hello' },
|
|
121
|
+
],
|
|
122
|
+
systemPrompt: 'test',
|
|
123
|
+
model: 'test',
|
|
124
|
+
stream: false,
|
|
125
|
+
};
|
|
126
|
+
await emitter.emit('before_request', data);
|
|
127
|
+
expect(data.messages).toHaveLength(2);
|
|
128
|
+
expect(data.messages.every(m => m.role !== 'tool')).toBe(true);
|
|
129
|
+
});
|
|
130
|
+
});
|
|
131
|
+
//# sourceMappingURL=events.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"events.test.js","sourceRoot":"","sources":["../../../src/core/__tests__/events.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"extensions.test.d.ts","sourceRoot":"","sources":["../../../src/core/__tests__/extensions.test.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
import { describe, it, expect, beforeEach, afterEach } from 'vitest';
|
|
2
|
+
import { mkdirSync, writeFileSync, rmSync, existsSync } from 'node:fs';
|
|
3
|
+
import { join } from 'node:path';
|
|
4
|
+
import { tmpdir } from 'node:os';
|
|
5
|
+
import { discoverExtensions } from '../extensions.js';
|
|
6
|
+
const TEST_DIR = join(tmpdir(), `ag-ext-test-${Date.now()}`);
|
|
7
|
+
beforeEach(() => {
|
|
8
|
+
mkdirSync(TEST_DIR, { recursive: true });
|
|
9
|
+
});
|
|
10
|
+
afterEach(() => {
|
|
11
|
+
if (existsSync(TEST_DIR))
|
|
12
|
+
rmSync(TEST_DIR, { recursive: true, force: true });
|
|
13
|
+
});
|
|
14
|
+
describe('discoverExtensions', () => {
|
|
15
|
+
it('discovers .ts files in .ag/extensions/', () => {
|
|
16
|
+
const extDir = join(TEST_DIR, '.ag', 'extensions');
|
|
17
|
+
mkdirSync(extDir, { recursive: true });
|
|
18
|
+
writeFileSync(join(extDir, 'my-ext.ts'), 'export default function() {}');
|
|
19
|
+
writeFileSync(join(extDir, 'another.mjs'), 'export default function() {}');
|
|
20
|
+
const found = discoverExtensions(TEST_DIR, join(TEST_DIR, 'nonexistent-global'));
|
|
21
|
+
expect(found).toHaveLength(2);
|
|
22
|
+
expect(found.some(f => f.endsWith('my-ext.ts'))).toBe(true);
|
|
23
|
+
expect(found.some(f => f.endsWith('another.mjs'))).toBe(true);
|
|
24
|
+
});
|
|
25
|
+
it('discovers directory extensions with index.ts', () => {
|
|
26
|
+
const extDir = join(TEST_DIR, '.ag', 'extensions', 'my-plugin');
|
|
27
|
+
mkdirSync(extDir, { recursive: true });
|
|
28
|
+
writeFileSync(join(extDir, 'index.ts'), 'export default function() {}');
|
|
29
|
+
const found = discoverExtensions(TEST_DIR, join(TEST_DIR, 'nonexistent-global'));
|
|
30
|
+
expect(found).toHaveLength(1);
|
|
31
|
+
expect(found[0]).toContain('my-plugin');
|
|
32
|
+
expect(found[0]).toContain('index.ts');
|
|
33
|
+
});
|
|
34
|
+
it('returns empty array when no extensions directory exists', () => {
|
|
35
|
+
const found = discoverExtensions(TEST_DIR, join(TEST_DIR, 'nonexistent-global'));
|
|
36
|
+
expect(found).toEqual([]);
|
|
37
|
+
});
|
|
38
|
+
it('ignores non-extension files', () => {
|
|
39
|
+
const extDir = join(TEST_DIR, '.ag', 'extensions');
|
|
40
|
+
mkdirSync(extDir, { recursive: true });
|
|
41
|
+
writeFileSync(join(extDir, 'readme.md'), '# Not an extension');
|
|
42
|
+
writeFileSync(join(extDir, 'data.json'), '{}');
|
|
43
|
+
writeFileSync(join(extDir, 'valid.ts'), 'export default function() {}');
|
|
44
|
+
const found = discoverExtensions(TEST_DIR, join(TEST_DIR, 'nonexistent-global'));
|
|
45
|
+
expect(found).toHaveLength(1);
|
|
46
|
+
expect(found[0]).toContain('valid.ts');
|
|
47
|
+
});
|
|
48
|
+
it('discovers from both project and global directories', () => {
|
|
49
|
+
const projectExtDir = join(TEST_DIR, '.ag', 'extensions');
|
|
50
|
+
const globalExtDir = join(TEST_DIR, 'global', 'extensions');
|
|
51
|
+
mkdirSync(projectExtDir, { recursive: true });
|
|
52
|
+
mkdirSync(globalExtDir, { recursive: true });
|
|
53
|
+
writeFileSync(join(projectExtDir, 'proj.ts'), 'export default function() {}');
|
|
54
|
+
writeFileSync(join(globalExtDir, 'global.ts'), 'export default function() {}');
|
|
55
|
+
const found = discoverExtensions(TEST_DIR, join(TEST_DIR, 'global'));
|
|
56
|
+
expect(found).toHaveLength(2);
|
|
57
|
+
});
|
|
58
|
+
});
|
|
59
|
+
//# sourceMappingURL=extensions.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"extensions.test.js","sourceRoot":"","sources":["../../../src/core/__tests__/extensions.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,EAAE,EAAE,MAAM,EAAM,UAAU,EAAE,SAAS,EAAE,MAAM,QAAQ,CAAC;AACzE,OAAO,EAAE,SAAS,EAAE,aAAa,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AACvE,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,MAAM,EAAE,MAAM,SAAS,CAAC;AACjC,OAAO,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAC;AAEtD,MAAM,QAAQ,GAAG,IAAI,CAAC,MAAM,EAAE,EAAE,eAAe,IAAI,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;AAE7D,UAAU,CAAC,GAAG,EAAE;IACd,SAAS,CAAC,QAAQ,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;AAC3C,CAAC,CAAC,CAAC;AAEH,SAAS,CAAC,GAAG,EAAE;IACb,IAAI,UAAU,CAAC,QAAQ,CAAC;QAAE,MAAM,CAAC,QAAQ,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;AAC/E,CAAC,CAAC,CAAC;AAEH,QAAQ,CAAC,oBAAoB,EAAE,GAAG,EAAE;IAClC,EAAE,CAAC,wCAAwC,EAAE,GAAG,EAAE;QAChD,MAAM,MAAM,GAAG,IAAI,CAAC,QAAQ,EAAE,KAAK,EAAE,YAAY,CAAC,CAAC;QACnD,SAAS,CAAC,MAAM,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QACvC,aAAa,CAAC,IAAI,CAAC,MAAM,EAAE,WAAW,CAAC,EAAE,8BAA8B,CAAC,CAAC;QACzE,aAAa,CAAC,IAAI,CAAC,MAAM,EAAE,aAAa,CAAC,EAAE,8BAA8B,CAAC,CAAC;QAE3E,MAAM,KAAK,GAAG,kBAAkB,CAAC,QAAQ,EAAE,IAAI,CAAC,QAAQ,EAAE,oBAAoB,CAAC,CAAC,CAAC;QACjF,MAAM,CAAC,KAAK,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;QAC9B,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC5D,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAChE,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,8CAA8C,EAAE,GAAG,EAAE;QACtD,MAAM,MAAM,GAAG,IAAI,CAAC,QAAQ,EAAE,KAAK,EAAE,YAAY,EAAE,WAAW,CAAC,CAAC;QAChE,SAAS,CAAC,MAAM,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QACvC,aAAa,CAAC,IAAI,CAAC,MAAM,EAAE,UAAU,CAAC,EAAE,8BAA8B,CAAC,CAAC;QAExE,MAAM,KAAK,GAAG,kBAAkB,CAAC,QAAQ,EAAE,IAAI,CAAC,QAAQ,EAAE,oBAAoB,CAAC,CAAC,CAAC;QACjF,MAAM,CAAC,KAAK,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;QAC9B,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,WAAW,CAAC,CAAC;QACxC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC;IACzC,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,yDAAyD,EAAE,GAAG,EAAE;QACjE,MAAM,KAAK,GAAG,kBAAkB,CAAC,QAAQ,EAAE,IAAI,CAAC,QAAQ,EAAE,oBAAoB,CAAC,CAAC,CAAC;QACjF,MAAM,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;IAC5B,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,6BAA6B,EAAE,GAAG,EAAE;QACrC,MAAM,MAAM,GAAG,IAAI,CAAC,QAAQ,EAAE,KAAK,EAAE,YAAY,CAAC,CAAC;QACnD,SAAS,CAAC,MAAM,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QACvC,aAAa,CAAC,IAAI,CAAC,MAAM,EAAE,WAAW,CAAC,EAAE,oBAAoB,CAAC,CAAC;QAC/D,aAAa,CAAC,IAAI,CAAC,MAAM,EAAE,WAAW,CAAC,EAAE,IAAI,CAAC,CAAC;QAC/C,aAAa,CAAC,IAAI,CAAC,MAAM,EAAE,UAAU,CAAC,EAAE,8BAA8B,CAAC,CAAC;QAExE,MAAM,KAAK,GAAG,kBAAkB,CAAC,QAAQ,EAAE,IAAI,CAAC,QAAQ,EAAE,oBAAoB,CAAC,CAAC,CAAC;QACjF,MAAM,CAAC,KAAK,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;QAC9B,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC;IACzC,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,oDAAoD,EAAE,GAAG,EAAE;QAC5D,MAAM,aAAa,GAAG,IAAI,CAAC,QAAQ,EAAE,KAAK,EAAE,YAAY,CAAC,CAAC;QAC1D,MAAM,YAAY,GAAG,IAAI,CAAC,QAAQ,EAAE,QAAQ,EAAE,YAAY,CAAC,CAAC;QAC5D,SAAS,CAAC,aAAa,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QAC9C,SAAS,CAAC,YAAY,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QAC7C,aAAa,CAAC,IAAI,CAAC,aAAa,EAAE,SAAS,CAAC,EAAE,8BAA8B,CAAC,CAAC;QAC9E,aAAa,CAAC,IAAI,CAAC,YAAY,EAAE,WAAW,CAAC,EAAE,8BAA8B,CAAC,CAAC;QAE/E,MAAM,KAAK,GAAG,kBAAkB,CAAC,QAAQ,EAAE,IAAI,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC,CAAC;QACrE,MAAM,CAAC,KAAK,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;IAChC,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"guardrails.test.d.ts","sourceRoot":"","sources":["../../../src/core/__tests__/guardrails.test.ts"],"names":[],"mappings":""}
|