@productbrain/cli 0.1.0-beta.20 → 0.1.0-beta.26
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/dist/__tests__/adapters.test.d.ts +2 -0
- package/dist/__tests__/adapters.test.d.ts.map +1 -0
- package/dist/__tests__/adapters.test.js +417 -0
- package/dist/__tests__/adapters.test.js.map +1 -0
- package/dist/__tests__/batch-transformations.test.d.ts +2 -0
- package/dist/__tests__/batch-transformations.test.d.ts.map +1 -0
- package/dist/__tests__/batch-transformations.test.js +263 -0
- package/dist/__tests__/batch-transformations.test.js.map +1 -0
- package/dist/__tests__/surface-profiles.test.d.ts +2 -0
- package/dist/__tests__/surface-profiles.test.d.ts.map +1 -0
- package/dist/__tests__/surface-profiles.test.js +233 -0
- package/dist/__tests__/surface-profiles.test.js.map +1 -0
- package/dist/commands/capture.d.ts.map +1 -1
- package/dist/commands/capture.js +4 -0
- package/dist/commands/capture.js.map +1 -1
- package/dist/commands/handshake.d.ts.map +1 -1
- package/dist/commands/handshake.js +53 -7
- package/dist/commands/handshake.js.map +1 -1
- package/dist/formatters/capture.d.ts +18 -0
- package/dist/formatters/capture.d.ts.map +1 -1
- package/dist/formatters/capture.js +18 -0
- package/dist/formatters/capture.js.map +1 -1
- package/dist/generators/__tests__/surface-profiles.test.d.ts +2 -0
- package/dist/generators/__tests__/surface-profiles.test.d.ts.map +1 -0
- package/dist/generators/__tests__/surface-profiles.test.js +89 -0
- package/dist/generators/__tests__/surface-profiles.test.js.map +1 -0
- package/dist/generators/adapters.d.ts +37 -4
- package/dist/generators/adapters.d.ts.map +1 -1
- package/dist/generators/adapters.js +147 -7
- package/dist/generators/adapters.js.map +1 -1
- package/dist/generators/portable-knowledge.d.ts +23 -5
- package/dist/generators/portable-knowledge.d.ts.map +1 -1
- package/dist/generators/portable-knowledge.js +54 -6
- package/dist/generators/portable-knowledge.js.map +1 -1
- package/dist/generators/surface-profiles.d.ts +49 -0
- package/dist/generators/surface-profiles.d.ts.map +1 -0
- package/dist/generators/surface-profiles.js +98 -0
- package/dist/generators/surface-profiles.js.map +1 -0
- package/package.json +1 -1
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"adapters.test.d.ts","sourceRoot":"","sources":["../../src/__tests__/adapters.test.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,417 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* adapters — unit tests for generateAgentsMd and generateCopilotMd.
|
|
3
|
+
* BET-270 Slice 2: governance-enriched AGENTS.md adapter.
|
|
4
|
+
* BET-270 Slice 3: profile-driven single-file Copilot adapter.
|
|
5
|
+
*/
|
|
6
|
+
import { describe, expect, it } from 'vitest';
|
|
7
|
+
import { MARKER, generateAgentsMd, generateCopilotMd } from '../generators/adapters.js';
|
|
8
|
+
import { SURFACE_PROFILES } from '../generators/surface-profiles.js';
|
|
9
|
+
const TIMESTAMP = '2026-04-05T12:00:00.000Z';
|
|
10
|
+
// ── Auto-generated marker ─────────────────────────────────────────────
|
|
11
|
+
describe('generateAgentsMd — marker', () => {
|
|
12
|
+
it('always includes the auto-generated marker', () => {
|
|
13
|
+
expect(generateAgentsMd(TIMESTAMP)).toContain(MARKER);
|
|
14
|
+
});
|
|
15
|
+
it('always includes the marker when options are provided', () => {
|
|
16
|
+
expect(generateAgentsMd(TIMESTAMP, {
|
|
17
|
+
workspaceContext: { stage: 'grounded' },
|
|
18
|
+
skills: [{ name: 'my-skill', description: 'does things' }],
|
|
19
|
+
})).toContain(MARKER);
|
|
20
|
+
});
|
|
21
|
+
it('embeds the timestamp in the marker line', () => {
|
|
22
|
+
const result = generateAgentsMd(TIMESTAMP);
|
|
23
|
+
expect(result).toContain(`<!-- ${MARKER} — ${TIMESTAMP} -->`);
|
|
24
|
+
});
|
|
25
|
+
});
|
|
26
|
+
// ── Backward compatibility (no options) ──────────────────────────────
|
|
27
|
+
describe('generateAgentsMd — no options (backward compat)', () => {
|
|
28
|
+
it('produces the command reference table', () => {
|
|
29
|
+
const result = generateAgentsMd(TIMESTAMP);
|
|
30
|
+
expect(result).toContain('pb orient -b');
|
|
31
|
+
expect(result).toContain('pb get <ID>');
|
|
32
|
+
expect(result).toContain('pb search <query>');
|
|
33
|
+
expect(result).toContain('pb handshake');
|
|
34
|
+
});
|
|
35
|
+
it('produces the session lifecycle section', () => {
|
|
36
|
+
const result = generateAgentsMd(TIMESTAMP);
|
|
37
|
+
expect(result).toContain('pb session start');
|
|
38
|
+
expect(result).toContain('pb capture');
|
|
39
|
+
expect(result).toContain('pb session close');
|
|
40
|
+
});
|
|
41
|
+
it('does not include workspace context section when no options given', () => {
|
|
42
|
+
const result = generateAgentsMd(TIMESTAMP);
|
|
43
|
+
expect(result).not.toContain('## Workspace Context');
|
|
44
|
+
});
|
|
45
|
+
it('does not include skill directory when no options given', () => {
|
|
46
|
+
const result = generateAgentsMd(TIMESTAMP);
|
|
47
|
+
expect(result).not.toContain('## Skill Directory');
|
|
48
|
+
});
|
|
49
|
+
it('includes governance summary', () => {
|
|
50
|
+
const result = generateAgentsMd(TIMESTAMP);
|
|
51
|
+
expect(result).toContain('## Governance Summary');
|
|
52
|
+
});
|
|
53
|
+
});
|
|
54
|
+
// ── Workspace Context section ─────────────────────────────────────────
|
|
55
|
+
describe('generateAgentsMd — workspaceContext', () => {
|
|
56
|
+
it('includes workspace context section when workspaceContext is provided', () => {
|
|
57
|
+
const result = generateAgentsMd(TIMESTAMP, {
|
|
58
|
+
workspaceContext: { stage: 'grounded', governanceMode: 'active', totalEntries: 42 },
|
|
59
|
+
});
|
|
60
|
+
expect(result).toContain('## Workspace Context');
|
|
61
|
+
});
|
|
62
|
+
it('renders stage in workspace context table', () => {
|
|
63
|
+
const result = generateAgentsMd(TIMESTAMP, {
|
|
64
|
+
workspaceContext: { stage: 'grounded' },
|
|
65
|
+
});
|
|
66
|
+
expect(result).toContain('grounded');
|
|
67
|
+
expect(result).toContain('Stage');
|
|
68
|
+
});
|
|
69
|
+
it('renders focus in workspace context table', () => {
|
|
70
|
+
const result = generateAgentsMd(TIMESTAMP, {
|
|
71
|
+
workspaceContext: { focus: 'Ship BET-270' },
|
|
72
|
+
});
|
|
73
|
+
expect(result).toContain('Ship BET-270');
|
|
74
|
+
expect(result).toContain('Current focus');
|
|
75
|
+
});
|
|
76
|
+
it('renders governanceMode in workspace context table', () => {
|
|
77
|
+
const result = generateAgentsMd(TIMESTAMP, {
|
|
78
|
+
workspaceContext: { governanceMode: 'structured' },
|
|
79
|
+
});
|
|
80
|
+
expect(result).toContain('structured');
|
|
81
|
+
expect(result).toContain('Governance mode');
|
|
82
|
+
});
|
|
83
|
+
it('renders totalEntries in workspace context table', () => {
|
|
84
|
+
const result = generateAgentsMd(TIMESTAMP, {
|
|
85
|
+
workspaceContext: { totalEntries: 99 },
|
|
86
|
+
});
|
|
87
|
+
expect(result).toContain('99');
|
|
88
|
+
expect(result).toContain('Chain entries');
|
|
89
|
+
});
|
|
90
|
+
it('omits workspace context section when workspaceContext is undefined', () => {
|
|
91
|
+
const result = generateAgentsMd(TIMESTAMP, { skills: [] });
|
|
92
|
+
expect(result).not.toContain('## Workspace Context');
|
|
93
|
+
});
|
|
94
|
+
it('omits workspace context section when workspaceContext is empty object', () => {
|
|
95
|
+
const result = generateAgentsMd(TIMESTAMP, { workspaceContext: {} });
|
|
96
|
+
expect(result).not.toContain('## Workspace Context');
|
|
97
|
+
});
|
|
98
|
+
it('omits skill directory when only workspaceContext provided (no skills)', () => {
|
|
99
|
+
const result = generateAgentsMd(TIMESTAMP, {
|
|
100
|
+
workspaceContext: { stage: 'grounded' },
|
|
101
|
+
});
|
|
102
|
+
expect(result).not.toContain('## Skill Directory');
|
|
103
|
+
});
|
|
104
|
+
});
|
|
105
|
+
// ── Skill Directory section ───────────────────────────────────────────
|
|
106
|
+
describe('generateAgentsMd — skills', () => {
|
|
107
|
+
it('includes skill directory when skills array provided', () => {
|
|
108
|
+
const result = generateAgentsMd(TIMESTAMP, {
|
|
109
|
+
skills: [{ name: 'my-skill', description: 'does things' }],
|
|
110
|
+
});
|
|
111
|
+
expect(result).toContain('## Skill Directory');
|
|
112
|
+
});
|
|
113
|
+
it('renders skill name in the table', () => {
|
|
114
|
+
const result = generateAgentsMd(TIMESTAMP, {
|
|
115
|
+
skills: [{ name: 'commit', description: 'commit changes to main' }],
|
|
116
|
+
});
|
|
117
|
+
expect(result).toContain('commit');
|
|
118
|
+
expect(result).toContain('commit changes to main');
|
|
119
|
+
});
|
|
120
|
+
it('renders skill triggers (up to 3) in the table', () => {
|
|
121
|
+
const result = generateAgentsMd(TIMESTAMP, {
|
|
122
|
+
skills: [
|
|
123
|
+
{
|
|
124
|
+
name: 'review',
|
|
125
|
+
description: 'review changes',
|
|
126
|
+
triggers: ['review', 'implementation review', 'review this'],
|
|
127
|
+
},
|
|
128
|
+
],
|
|
129
|
+
});
|
|
130
|
+
expect(result).toContain('review');
|
|
131
|
+
expect(result).toContain('implementation review');
|
|
132
|
+
expect(result).toContain('review this');
|
|
133
|
+
});
|
|
134
|
+
it('caps triggers at 3 items', () => {
|
|
135
|
+
const result = generateAgentsMd(TIMESTAMP, {
|
|
136
|
+
skills: [
|
|
137
|
+
{
|
|
138
|
+
name: 'shape',
|
|
139
|
+
description: 'shape a bet',
|
|
140
|
+
triggers: ['shape', 'shape this', 'shape a bet', 'shape up', 'let\'s shape'],
|
|
141
|
+
},
|
|
142
|
+
],
|
|
143
|
+
});
|
|
144
|
+
// Should have at most 3 triggers shown — 4th and 5th should not appear if they are unique
|
|
145
|
+
// The row should contain up to 3 triggers joined by ', '
|
|
146
|
+
const lines = result.split('\n');
|
|
147
|
+
const skillRow = lines.find((l) => l.includes('shape') && l.includes('shape a bet'));
|
|
148
|
+
expect(skillRow).toBeDefined();
|
|
149
|
+
const parts = skillRow.split('|');
|
|
150
|
+
// triggers cell is the 4th column (index 3)
|
|
151
|
+
const triggersCell = parts[3]?.trim() ?? '';
|
|
152
|
+
const triggerCount = triggersCell.split(',').length;
|
|
153
|
+
expect(triggerCount).toBeLessThanOrEqual(3);
|
|
154
|
+
});
|
|
155
|
+
it('renders "—" when no triggers provided for a skill', () => {
|
|
156
|
+
const result = generateAgentsMd(TIMESTAMP, {
|
|
157
|
+
skills: [{ name: 'my-skill', description: 'does things' }],
|
|
158
|
+
});
|
|
159
|
+
expect(result).toContain('—');
|
|
160
|
+
});
|
|
161
|
+
it('renders multiple skills as separate rows', () => {
|
|
162
|
+
const result = generateAgentsMd(TIMESTAMP, {
|
|
163
|
+
skills: [
|
|
164
|
+
{ name: 'skill-a', description: 'skill A description' },
|
|
165
|
+
{ name: 'skill-b', description: 'skill B description' },
|
|
166
|
+
],
|
|
167
|
+
});
|
|
168
|
+
expect(result).toContain('skill-a');
|
|
169
|
+
expect(result).toContain('skill-b');
|
|
170
|
+
expect(result).toContain('skill A description');
|
|
171
|
+
expect(result).toContain('skill B description');
|
|
172
|
+
});
|
|
173
|
+
it('omits skill directory when skills array is empty', () => {
|
|
174
|
+
const result = generateAgentsMd(TIMESTAMP, { skills: [] });
|
|
175
|
+
expect(result).not.toContain('## Skill Directory');
|
|
176
|
+
});
|
|
177
|
+
it('omits skill directory when skills option is undefined', () => {
|
|
178
|
+
const result = generateAgentsMd(TIMESTAMP, { workspaceContext: { stage: 'grounded' } });
|
|
179
|
+
expect(result).not.toContain('## Skill Directory');
|
|
180
|
+
});
|
|
181
|
+
it('includes workspace context AND skill directory together', () => {
|
|
182
|
+
const result = generateAgentsMd(TIMESTAMP, {
|
|
183
|
+
workspaceContext: { stage: 'grounded', totalEntries: 10 },
|
|
184
|
+
skills: [{ name: 'orient', description: 'orient the workspace' }],
|
|
185
|
+
});
|
|
186
|
+
expect(result).toContain('## Workspace Context');
|
|
187
|
+
expect(result).toContain('## Skill Directory');
|
|
188
|
+
});
|
|
189
|
+
});
|
|
190
|
+
// ── Governance summary (always present) ─────────────────────────────
|
|
191
|
+
describe('generateAgentsMd — governance summary', () => {
|
|
192
|
+
it('is present with no options', () => {
|
|
193
|
+
expect(generateAgentsMd(TIMESTAMP)).toContain('## Governance Summary');
|
|
194
|
+
});
|
|
195
|
+
it('is present with full context', () => {
|
|
196
|
+
const result = generateAgentsMd(TIMESTAMP, {
|
|
197
|
+
workspaceContext: { stage: 'grounded' },
|
|
198
|
+
skills: [{ name: 'commit', description: 'commit to main' }],
|
|
199
|
+
});
|
|
200
|
+
expect(result).toContain('## Governance Summary');
|
|
201
|
+
});
|
|
202
|
+
it('mentions Product Brain governance', () => {
|
|
203
|
+
const result = generateAgentsMd(TIMESTAMP);
|
|
204
|
+
expect(result).toContain('Product Brain governance');
|
|
205
|
+
});
|
|
206
|
+
});
|
|
207
|
+
// ────────────────────────────────────────────────────────────────────
|
|
208
|
+
// generateCopilotMd
|
|
209
|
+
// ────────────────────────────────────────────────────────────────────
|
|
210
|
+
// ── Marker always present ────────────────────────────────────────────
|
|
211
|
+
describe('generateCopilotMd — marker', () => {
|
|
212
|
+
it('always includes the auto-generated marker with no options', () => {
|
|
213
|
+
expect(generateCopilotMd(TIMESTAMP)).toContain(MARKER);
|
|
214
|
+
});
|
|
215
|
+
it('always includes the marker when options are provided', () => {
|
|
216
|
+
expect(generateCopilotMd(TIMESTAMP, {
|
|
217
|
+
skills: [{ name: 'my-skill', description: 'does things' }],
|
|
218
|
+
})).toContain(MARKER);
|
|
219
|
+
});
|
|
220
|
+
it('embeds the timestamp in the marker line', () => {
|
|
221
|
+
const result = generateCopilotMd(TIMESTAMP);
|
|
222
|
+
expect(result).toContain(`<!-- ${MARKER} — ${TIMESTAMP} -->`);
|
|
223
|
+
});
|
|
224
|
+
});
|
|
225
|
+
// ── Backward compatibility (no options) ─────────────────────────────
|
|
226
|
+
describe('generateCopilotMd — no options (backward compat)', () => {
|
|
227
|
+
it('produces the command reference section', () => {
|
|
228
|
+
const result = generateCopilotMd(TIMESTAMP);
|
|
229
|
+
expect(result).toContain('pb orient -b');
|
|
230
|
+
expect(result).toContain('pb get <ID>');
|
|
231
|
+
expect(result).toContain('pb search <query>');
|
|
232
|
+
expect(result).toContain('pb handshake');
|
|
233
|
+
});
|
|
234
|
+
it('produces the session lifecycle section', () => {
|
|
235
|
+
const result = generateCopilotMd(TIMESTAMP);
|
|
236
|
+
expect(result).toContain('pb session start');
|
|
237
|
+
expect(result).toContain('pb capture');
|
|
238
|
+
expect(result).toContain('pb session close');
|
|
239
|
+
});
|
|
240
|
+
it('does not include Skills section when no options given', () => {
|
|
241
|
+
const result = generateCopilotMd(TIMESTAMP);
|
|
242
|
+
expect(result).not.toContain('## Skills');
|
|
243
|
+
});
|
|
244
|
+
it('does not include Rules section when no options given', () => {
|
|
245
|
+
const result = generateCopilotMd(TIMESTAMP);
|
|
246
|
+
expect(result).not.toContain('## Rules');
|
|
247
|
+
});
|
|
248
|
+
it('does not include workspace context section when no options given', () => {
|
|
249
|
+
const result = generateCopilotMd(TIMESTAMP);
|
|
250
|
+
expect(result).not.toContain('## Workspace Context');
|
|
251
|
+
});
|
|
252
|
+
});
|
|
253
|
+
// ── Full context ─────────────────────────────────────────────────────
|
|
254
|
+
describe('generateCopilotMd — full context', () => {
|
|
255
|
+
it('produces all sections when all options provided', () => {
|
|
256
|
+
const result = generateCopilotMd(TIMESTAMP, {
|
|
257
|
+
profile: SURFACE_PROFILES.copilot,
|
|
258
|
+
workspaceContext: { stage: 'grounded', focus: 'Ship BET-270', governanceMode: 'active', totalEntries: 55 },
|
|
259
|
+
skills: [{ name: 'commit', description: 'commit changes', triggers: ['commit'] }],
|
|
260
|
+
rules: [{ name: 'git-workflow', description: 'two-track git workflow' }],
|
|
261
|
+
});
|
|
262
|
+
expect(result).toContain('## Workspace Context');
|
|
263
|
+
expect(result).toContain('## Skills');
|
|
264
|
+
expect(result).toContain('## Rules');
|
|
265
|
+
expect(result).toContain('commit');
|
|
266
|
+
expect(result).toContain('git-workflow');
|
|
267
|
+
});
|
|
268
|
+
it('renders workspace context fields', () => {
|
|
269
|
+
const result = generateCopilotMd(TIMESTAMP, {
|
|
270
|
+
workspaceContext: { stage: 'grounded', governanceMode: 'active', totalEntries: 42, focus: 'BET-270' },
|
|
271
|
+
});
|
|
272
|
+
expect(result).toContain('grounded');
|
|
273
|
+
expect(result).toContain('active');
|
|
274
|
+
expect(result).toContain('42');
|
|
275
|
+
expect(result).toContain('BET-270');
|
|
276
|
+
});
|
|
277
|
+
it('renders skill name and description', () => {
|
|
278
|
+
const result = generateCopilotMd(TIMESTAMP, {
|
|
279
|
+
skills: [{ name: 'review', description: 'review implementation changes' }],
|
|
280
|
+
});
|
|
281
|
+
expect(result).toContain('### review');
|
|
282
|
+
expect(result).toContain('review implementation changes');
|
|
283
|
+
});
|
|
284
|
+
it('renders skill triggers (up to 3)', () => {
|
|
285
|
+
const result = generateCopilotMd(TIMESTAMP, {
|
|
286
|
+
skills: [
|
|
287
|
+
{ name: 'shape', description: 'shape a bet', triggers: ['shape', 'shape this', 'shape a bet', 'let\'s shape'] },
|
|
288
|
+
],
|
|
289
|
+
});
|
|
290
|
+
expect(result).toContain('shape');
|
|
291
|
+
expect(result).toContain('shape this');
|
|
292
|
+
expect(result).toContain('shape a bet');
|
|
293
|
+
// 4th trigger should not appear as it was sliced
|
|
294
|
+
expect(result).not.toContain('let\'s shape');
|
|
295
|
+
});
|
|
296
|
+
it('renders rule name and description', () => {
|
|
297
|
+
const result = generateCopilotMd(TIMESTAMP, {
|
|
298
|
+
rules: [{ name: 'feature-flags', description: 'three-tier feature flag resolution' }],
|
|
299
|
+
});
|
|
300
|
+
expect(result).toContain('### feature-flags');
|
|
301
|
+
expect(result).toContain('three-tier feature flag resolution');
|
|
302
|
+
});
|
|
303
|
+
it('renders multiple skills as separate headings', () => {
|
|
304
|
+
const result = generateCopilotMd(TIMESTAMP, {
|
|
305
|
+
skills: [
|
|
306
|
+
{ name: 'skill-a', description: 'alpha skill' },
|
|
307
|
+
{ name: 'skill-b', description: 'beta skill' },
|
|
308
|
+
],
|
|
309
|
+
});
|
|
310
|
+
expect(result).toContain('### skill-a');
|
|
311
|
+
expect(result).toContain('### skill-b');
|
|
312
|
+
expect(result).toContain('alpha skill');
|
|
313
|
+
expect(result).toContain('beta skill');
|
|
314
|
+
});
|
|
315
|
+
it('renders multiple rules as separate headings', () => {
|
|
316
|
+
const result = generateCopilotMd(TIMESTAMP, {
|
|
317
|
+
rules: [
|
|
318
|
+
{ name: 'rule-one', description: 'first rule' },
|
|
319
|
+
{ name: 'rule-two', description: 'second rule' },
|
|
320
|
+
],
|
|
321
|
+
});
|
|
322
|
+
expect(result).toContain('### rule-one');
|
|
323
|
+
expect(result).toContain('### rule-two');
|
|
324
|
+
});
|
|
325
|
+
it('does not include skill bodies — only summaries', () => {
|
|
326
|
+
// Summaries contain just name + description + optional triggers, no full markdown content
|
|
327
|
+
const result = generateCopilotMd(TIMESTAMP, {
|
|
328
|
+
skills: [{ name: 'orchestrate', description: 'run bounded implementation slices' }],
|
|
329
|
+
});
|
|
330
|
+
// Should have a heading and description but NOT multi-paragraph content from the skill body
|
|
331
|
+
expect(result).toContain('### orchestrate');
|
|
332
|
+
expect(result).toContain('run bounded implementation slices');
|
|
333
|
+
// Confirm no "Run Contract" section from skill body is present
|
|
334
|
+
expect(result).not.toContain('## Run Contract');
|
|
335
|
+
});
|
|
336
|
+
});
|
|
337
|
+
// ── Token budget enforcement ─────────────────────────────────────────
|
|
338
|
+
describe('generateCopilotMd — token budget enforcement', () => {
|
|
339
|
+
it('output length does not exceed profile token budget', () => {
|
|
340
|
+
const profile = SURFACE_PROFILES.copilot; // 30000 chars
|
|
341
|
+
// Generate a large payload
|
|
342
|
+
const manySkills = Array.from({ length: 100 }, (_, i) => ({
|
|
343
|
+
name: `skill-${i}`,
|
|
344
|
+
description: `Description for skill ${i} — a moderately long description to consume budget`,
|
|
345
|
+
triggers: [`trigger-${i}-a`, `trigger-${i}-b`, `trigger-${i}-c`],
|
|
346
|
+
}));
|
|
347
|
+
const manyRules = Array.from({ length: 50 }, (_, i) => ({
|
|
348
|
+
name: `rule-${i}`,
|
|
349
|
+
description: `Description for rule ${i} — another moderately long description`,
|
|
350
|
+
}));
|
|
351
|
+
const result = generateCopilotMd(TIMESTAMP, { profile, skills: manySkills, rules: manyRules });
|
|
352
|
+
expect(result.length).toBeLessThanOrEqual(profile.tokenBudget);
|
|
353
|
+
});
|
|
354
|
+
it('includes a truncation note when content is truncated', () => {
|
|
355
|
+
const profile = { ...SURFACE_PROFILES.copilot, tokenBudget: 2000 };
|
|
356
|
+
const manySkills = Array.from({ length: 50 }, (_, i) => ({
|
|
357
|
+
name: `skill-${i}`,
|
|
358
|
+
description: `Description for skill ${i}`,
|
|
359
|
+
}));
|
|
360
|
+
const result = generateCopilotMd(TIMESTAMP, { profile, skills: manySkills });
|
|
361
|
+
expect(result).toContain('Truncated');
|
|
362
|
+
expect(result).toContain('token budget');
|
|
363
|
+
});
|
|
364
|
+
it('does not include a truncation note when everything fits', () => {
|
|
365
|
+
const result = generateCopilotMd(TIMESTAMP, {
|
|
366
|
+
profile: SURFACE_PROFILES.copilot,
|
|
367
|
+
skills: [{ name: 'one-skill', description: 'a single skill that easily fits' }],
|
|
368
|
+
rules: [{ name: 'one-rule', description: 'a single rule that easily fits' }],
|
|
369
|
+
});
|
|
370
|
+
expect(result).not.toContain('Truncated');
|
|
371
|
+
});
|
|
372
|
+
it('respects a custom small token budget', () => {
|
|
373
|
+
// Budget must be larger than the base template (~1437 chars) + truncation note (~80 chars)
|
|
374
|
+
const smallBudget = 2500;
|
|
375
|
+
const profile = { ...SURFACE_PROFILES.copilot, tokenBudget: smallBudget };
|
|
376
|
+
const manySkills = Array.from({ length: 30 }, (_, i) => ({
|
|
377
|
+
name: `skill-${i}`,
|
|
378
|
+
description: `Description for skill ${i} with enough text to consume budget`,
|
|
379
|
+
triggers: [`trigger-${i}`],
|
|
380
|
+
}));
|
|
381
|
+
const result = generateCopilotMd(TIMESTAMP, { profile, skills: manySkills });
|
|
382
|
+
expect(result.length).toBeLessThanOrEqual(smallBudget);
|
|
383
|
+
expect(result).toContain('Truncated');
|
|
384
|
+
});
|
|
385
|
+
it('stays within budget even when base nearly fills it', () => {
|
|
386
|
+
// Budget barely above base template — should not exceed budget
|
|
387
|
+
const tightBudget = 1500;
|
|
388
|
+
const profile = { ...SURFACE_PROFILES.copilot, tokenBudget: tightBudget };
|
|
389
|
+
const manySkills = Array.from({ length: 20 }, (_, i) => ({
|
|
390
|
+
name: `skill-${i}`,
|
|
391
|
+
description: `Description ${i}`,
|
|
392
|
+
}));
|
|
393
|
+
const result = generateCopilotMd(TIMESTAMP, { profile, skills: manySkills });
|
|
394
|
+
expect(result.length).toBeLessThanOrEqual(tightBudget);
|
|
395
|
+
});
|
|
396
|
+
it('respects a large custom token budget without unnecessary truncation', () => {
|
|
397
|
+
const largeBudget = 200000;
|
|
398
|
+
const profile = { ...SURFACE_PROFILES.copilot, tokenBudget: largeBudget };
|
|
399
|
+
const fewSkills = Array.from({ length: 5 }, (_, i) => ({
|
|
400
|
+
name: `skill-${i}`,
|
|
401
|
+
description: `Short desc ${i}`,
|
|
402
|
+
}));
|
|
403
|
+
const result = generateCopilotMd(TIMESTAMP, { profile, skills: fewSkills });
|
|
404
|
+
expect(result.length).toBeLessThanOrEqual(largeBudget);
|
|
405
|
+
expect(result).not.toContain('Truncated');
|
|
406
|
+
});
|
|
407
|
+
it('truncated output still contains the marker', () => {
|
|
408
|
+
const profile = { ...SURFACE_PROFILES.copilot, tokenBudget: 2000 };
|
|
409
|
+
const manySkills = Array.from({ length: 50 }, (_, i) => ({
|
|
410
|
+
name: `skill-${i}`,
|
|
411
|
+
description: `Description for skill ${i}`,
|
|
412
|
+
}));
|
|
413
|
+
const result = generateCopilotMd(TIMESTAMP, { profile, skills: manySkills });
|
|
414
|
+
expect(result).toContain(MARKER);
|
|
415
|
+
});
|
|
416
|
+
});
|
|
417
|
+
//# sourceMappingURL=adapters.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"adapters.test.js","sourceRoot":"","sources":["../../src/__tests__/adapters.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"batch-transformations.test.d.ts","sourceRoot":"","sources":["../../src/__tests__/batch-transformations.test.ts"],"names":[],"mappings":""}
|