cawdex 1.35.75 → 1.35.77

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 (89) hide show
  1. package/README.md +5 -5
  2. package/bin/anycode.js +2 -2
  3. package/bin/cawdex.js +408 -408
  4. package/bin/ecc-hooks.cjs +11 -11
  5. package/dist/agents-md.d.ts +31 -0
  6. package/dist/agents-md.js +340 -0
  7. package/dist/agents-md.js.map +1 -0
  8. package/dist/agents.js +1424 -1424
  9. package/dist/api.d.ts +1 -0
  10. package/dist/api.js +19 -14
  11. package/dist/api.js.map +1 -1
  12. package/dist/autonomous-loops.js +287 -287
  13. package/dist/benchmark-repos.d.ts +31 -0
  14. package/dist/benchmark-repos.js +234 -8
  15. package/dist/benchmark-repos.js.map +1 -1
  16. package/dist/command-palette.js +5 -2
  17. package/dist/command-palette.js.map +1 -1
  18. package/dist/compaction.js +8 -8
  19. package/dist/config.js +57 -36
  20. package/dist/config.js.map +1 -1
  21. package/dist/content-engine.js +543 -543
  22. package/dist/context-brief.d.ts +4 -0
  23. package/dist/context-brief.js +230 -0
  24. package/dist/context-brief.js.map +1 -0
  25. package/dist/cost-tracker.d.ts +33 -14
  26. package/dist/cost-tracker.js +81 -19
  27. package/dist/cost-tracker.js.map +1 -1
  28. package/dist/coverage.js +39 -39
  29. package/dist/docs-sync.js +98 -98
  30. package/dist/evaluation.js +452 -452
  31. package/dist/fixed-footer.d.ts +11 -2
  32. package/dist/fixed-footer.js +115 -26
  33. package/dist/fixed-footer.js.map +1 -1
  34. package/dist/git-workflow.js +49 -49
  35. package/dist/imports.d.ts +126 -0
  36. package/dist/imports.js +611 -0
  37. package/dist/imports.js.map +1 -0
  38. package/dist/index.d.ts +2 -0
  39. package/dist/index.js +367 -66
  40. package/dist/index.js.map +1 -1
  41. package/dist/inline-suggest.js +136 -12
  42. package/dist/inline-suggest.js.map +1 -1
  43. package/dist/live-queue.js +1 -1
  44. package/dist/live-queue.js.map +1 -1
  45. package/dist/model-aliases.d.ts +37 -0
  46. package/dist/model-aliases.js +203 -0
  47. package/dist/model-aliases.js.map +1 -0
  48. package/dist/orchestration.js +15 -15
  49. package/dist/permissions.d.ts +6 -0
  50. package/dist/permissions.js +53 -0
  51. package/dist/permissions.js.map +1 -1
  52. package/dist/pm2-manager.js +26 -26
  53. package/dist/query.d.ts +0 -1
  54. package/dist/query.js +105 -41
  55. package/dist/query.js.map +1 -1
  56. package/dist/refactor.js +87 -87
  57. package/dist/repo-command.js +7 -1
  58. package/dist/repo-command.js.map +1 -1
  59. package/dist/search-first.js +92 -92
  60. package/dist/skill-create.js +100 -100
  61. package/dist/stitch.js +1 -1
  62. package/dist/system-prompt.d.ts +2 -1
  63. package/dist/system-prompt.js +10 -5
  64. package/dist/system-prompt.js.map +1 -1
  65. package/dist/tools/github-repo-digest.d.ts +1 -1
  66. package/dist/tools/github-repo-digest.js +38 -6
  67. package/dist/tools/github-repo-digest.js.map +1 -1
  68. package/dist/types.d.ts +9 -0
  69. package/dist/types.js.map +1 -1
  70. package/dist/verification.js +55 -55
  71. package/package.json +1 -1
  72. package/resources/__init__.py +1 -1
  73. package/resources/exgentic/cawdex_agent/README.md +114 -114
  74. package/resources/exgentic/cawdex_agent/__init__.py +5 -5
  75. package/resources/exgentic/cawdex_agent/agent.py +605 -605
  76. package/resources/exgentic/cawdex_agent/requirements.txt +2 -2
  77. package/resources/exgentic/cawdex_agent/setup.sh +21 -21
  78. package/resources/exgentic/cawdex_agent/utils.py +1061 -1061
  79. package/resources/hal/cawdex_agent/README.md +24 -24
  80. package/resources/hal/cawdex_agent/__init__.py +1 -1
  81. package/resources/hal/cawdex_agent/main.py +550 -550
  82. package/resources/hal/cawdex_agent/requirements.txt +2 -2
  83. package/resources/kbench/cawdex_agent/README.md +107 -107
  84. package/resources/kbench/cawdex_agent/adapter.manifest.json +19 -19
  85. package/resources/kbench/cawdex_agent/runner.mjs +753 -753
  86. package/resources/open_agent_leaderboard/cawdex-agent-card.md +119 -119
  87. package/resources/terminal_bench/__init__.py +1 -1
  88. package/resources/terminal_bench/cawdex_agent.py +174 -174
  89. package/resources/terminal_bench/setup.sh +121 -121
package/bin/ecc-hooks.cjs CHANGED
@@ -1,8 +1,8 @@
1
1
  #!/usr/bin/env node
2
2
  /**
3
- * ECC-native hook dispatcher for Cawdex.
3
+ * ECC-native hook dispatcher for Cawdex.
4
4
  *
5
- * Reads Cawdex's hook env vars (CAWDEX_EVENT, CAWDEX_TOOL,
5
+ * Reads Cawdex's hook env vars (CAWDEX_EVENT, CAWDEX_TOOL,
6
6
  * CAWDEX_TOOL_INPUT, CAWDEX_TOOL_OUTPUT) and runs a single named check.
7
7
  *
8
8
  * Exit codes:
@@ -26,7 +26,7 @@ const checkName = process.argv[2] || '';
26
26
  // don't carry input, like SessionStart); a NON-empty payload that
27
27
  // fails to parse is treated as a security event and the hook
28
28
  // blocks. Fail closed > fail open.
29
- const rawToolInput = process.env.CAWDEX_TOOL_INPUT || '';
29
+ const rawToolInput = process.env.CAWDEX_TOOL_INPUT || '';
30
30
  let toolInput = {};
31
31
  if (rawToolInput.length > 0) {
32
32
  try {
@@ -37,8 +37,8 @@ if (rawToolInput.length > 0) {
37
37
  }
38
38
  }
39
39
 
40
- const tool = process.env.CAWDEX_TOOL || '';
41
- const cwd = process.env.CAWDEX_CWD || process.cwd();
40
+ const tool = process.env.CAWDEX_TOOL || '';
41
+ const cwd = process.env.CAWDEX_CWD || process.cwd();
42
42
 
43
43
  // ── Helpers ─────────────────────────────────────────────
44
44
  function bashCommand() {
@@ -209,13 +209,13 @@ const checks = {
209
209
  */
210
210
  'gateguard': () => {
211
211
  // ── Disable knob ─────────────────────────────────────
212
- // Documented in the hint/block message below.
213
- const disableEnv = (process.env.CAWDEX_GATEGUARD || '').trim();
212
+ // Documented in the hint/block message below.
213
+ const disableEnv = (process.env.CAWDEX_GATEGUARD || '').trim();
214
214
  if (/^(off|false|0|no|disabled?)$/i.test(disableEnv)) return ok();
215
215
 
216
216
  // ── Mode selection ───────────────────────────────────
217
217
  // Pick warn (new default) vs block (legacy strict) vs off.
218
- const modeEnv = (process.env.CAWDEX_GATEGUARD_MODE || 'warn').toLowerCase().trim();
218
+ const modeEnv = (process.env.CAWDEX_GATEGUARD_MODE || 'warn').toLowerCase().trim();
219
219
  if (modeEnv === 'off') return ok();
220
220
  const strict = modeEnv === 'block' || modeEnv === 'strict';
221
221
 
@@ -226,7 +226,7 @@ const checks = {
226
226
  // yolo would mean the safest setting in cawdex is more
227
227
  // pedantic than the most-cautious, which is backwards. Silent
228
228
  // no-op so the user gets the unblocked flow they asked for.
229
- const perm = (process.env.CAWDEX_PERMISSION_MODE || '').toLowerCase().trim();
229
+ const perm = (process.env.CAWDEX_PERMISSION_MODE || '').toLowerCase().trim();
230
230
  if (perm === 'yolo') return ok();
231
231
 
232
232
  const fs = require('fs');
@@ -256,7 +256,7 @@ const checks = {
256
256
  // model-controlled file paths). Allow only [A-Za-z0-9_-], length
257
257
  // <=64. Anything else falls back to "unknown" — degraded UX
258
258
  // (gateguard tracking won't persist), not a security breach.
259
- const rawSessionId = process.env.CAWDEX_SESSION_ID || '';
259
+ const rawSessionId = process.env.CAWDEX_SESSION_ID || '';
260
260
  const sessionId = /^[A-Za-z0-9_-]{1,64}$/.test(rawSessionId) ? rawSessionId : 'unknown';
261
261
  const stateDir = pathMod.join(os.homedir(), '.cawdex', 'state', 'gateguard');
262
262
  const stateFile = pathMod.join(stateDir, `${sessionId}.json`);
@@ -409,7 +409,7 @@ const checks = {
409
409
  const fs = require('fs');
410
410
  const pathMod = require('path');
411
411
  const os = require('os');
412
- const rawSessionId = process.env.CAWDEX_SESSION_ID || '';
412
+ const rawSessionId = process.env.CAWDEX_SESSION_ID || '';
413
413
  const sessionId = /^[A-Za-z0-9_-]{1,64}$/.test(rawSessionId) ? rawSessionId : 'unknown';
414
414
  const stateDir = pathMod.join(os.homedir(), '.cawdex', 'state', 'quality-hint');
415
415
  const stateFile = pathMod.join(stateDir, `${sessionId}.json`);
@@ -0,0 +1,31 @@
1
+ import type { Tool } from './tools/types.js';
2
+ export type AgentsSectionKind = 'model' | 'tool';
3
+ export interface AgentsScopedSection {
4
+ kind: AgentsSectionKind;
5
+ selector: string;
6
+ content: string;
7
+ }
8
+ export interface AgentsFileInstructions {
9
+ filePath: string;
10
+ relativePath: string;
11
+ global: string;
12
+ modelSections: AgentsScopedSection[];
13
+ toolSections: AgentsScopedSection[];
14
+ truncated: boolean;
15
+ }
16
+ export interface AgentsInstructionSet {
17
+ root: string;
18
+ cwd: string;
19
+ files: AgentsFileInstructions[];
20
+ }
21
+ export declare function findAgentsRoot(cwd?: string): string;
22
+ export declare function parseAgentsMarkdown(content: string): {
23
+ global: string;
24
+ modelSections: AgentsScopedSection[];
25
+ toolSections: AgentsScopedSection[];
26
+ };
27
+ export declare function discoverAgentsInstructions(cwd?: string): AgentsInstructionSet;
28
+ export declare function selectorMatches(selector: string, target: string): boolean;
29
+ export declare function buildAgentsInstructionsPrompt(cwd: string, model: string): string;
30
+ export declare function applyAgentToolInstructions(tools: Tool[], cwd: string, _model: string): Tool[];
31
+ export declare function formatAgentsInstructionsReport(cwd: string, model: string, tools?: Tool[]): string;
@@ -0,0 +1,340 @@
1
+ import { execFileSync } from 'node:child_process';
2
+ import { existsSync, readFileSync, statSync } from 'node:fs';
3
+ import { isAbsolute, join, relative, resolve } from 'node:path';
4
+ const AGENTS_FILE_NAMES = ['AGENTS.md', 'agents.md'];
5
+ const MAX_FILE_CHARS = 50_000;
6
+ const MAX_SECTION_CHARS = 4_000;
7
+ const MAX_PROMPT_CHARS = 12_000;
8
+ const MAX_TOOL_INSTRUCTION_CHARS = 3_000;
9
+ function normalizeLines(value) {
10
+ return value.replace(/\r\n?/g, '\n');
11
+ }
12
+ function trimBlock(value) {
13
+ const lines = normalizeLines(value).split('\n');
14
+ while (lines.length > 0 && lines[0].trim() === '')
15
+ lines.shift();
16
+ while (lines.length > 0 && lines[lines.length - 1].trim() === '')
17
+ lines.pop();
18
+ return lines.join('\n');
19
+ }
20
+ function capText(value, maxChars) {
21
+ if (value.length <= maxChars)
22
+ return value;
23
+ return `${value.slice(0, Math.max(0, maxChars - 38)).trimEnd()}\n[truncated by Cawdex for prompt budget]`;
24
+ }
25
+ function isWithin(parent, child) {
26
+ const rel = relative(resolve(parent), resolve(child));
27
+ return rel === '' || (!rel.startsWith('..') && !isAbsolute(rel));
28
+ }
29
+ function findGitRootByCommand(cwd) {
30
+ try {
31
+ const out = execFileSync('git', ['rev-parse', '--show-toplevel'], {
32
+ cwd,
33
+ encoding: 'utf8',
34
+ stdio: ['ignore', 'pipe', 'ignore'],
35
+ }).trim();
36
+ if (!out)
37
+ return null;
38
+ const root = resolve(out);
39
+ return isWithin(root, cwd) ? root : null;
40
+ }
41
+ catch {
42
+ return null;
43
+ }
44
+ }
45
+ function findGitRootByWalking(cwd) {
46
+ let cur = resolve(cwd);
47
+ while (true) {
48
+ const dotGit = join(cur, '.git');
49
+ if (existsSync(dotGit))
50
+ return cur;
51
+ const parent = resolve(cur, '..');
52
+ if (parent === cur)
53
+ return null;
54
+ cur = parent;
55
+ }
56
+ }
57
+ function normalizeCwd(cwd) {
58
+ const resolved = resolve(cwd || process.cwd());
59
+ try {
60
+ const stat = statSync(resolved);
61
+ return stat.isDirectory() ? resolved : resolve(resolved, '..');
62
+ }
63
+ catch {
64
+ return resolved;
65
+ }
66
+ }
67
+ export function findAgentsRoot(cwd = process.cwd()) {
68
+ const normalized = normalizeCwd(cwd);
69
+ return findGitRootByWalking(normalized) ?? findGitRootByCommand(normalized) ?? normalized;
70
+ }
71
+ function dirsFromRootToCwd(root, cwd) {
72
+ const normalizedRoot = resolve(root);
73
+ const normalizedCwd = normalizeCwd(cwd);
74
+ if (!isWithin(normalizedRoot, normalizedCwd))
75
+ return [normalizedCwd];
76
+ const dirs = [normalizedRoot];
77
+ const rel = relative(normalizedRoot, normalizedCwd);
78
+ if (!rel)
79
+ return dirs;
80
+ let cur = normalizedRoot;
81
+ for (const part of rel.split(/[\\/]+/).filter(Boolean)) {
82
+ cur = join(cur, part);
83
+ dirs.push(cur);
84
+ }
85
+ return dirs;
86
+ }
87
+ function firstAgentsFile(dir) {
88
+ for (const name of AGENTS_FILE_NAMES) {
89
+ const candidate = join(dir, name);
90
+ try {
91
+ if (existsSync(candidate) && statSync(candidate).isFile())
92
+ return candidate;
93
+ }
94
+ catch {
95
+ // Ignore unreadable or racing files.
96
+ }
97
+ }
98
+ return null;
99
+ }
100
+ function parseScopedHeading(line) {
101
+ const match = /^(#{1,6})\s+(Model|Tool)\s*:\s*(.+?)\s*#*\s*$/i.exec(line.trimEnd());
102
+ if (!match)
103
+ return null;
104
+ const selector = match[3].trim();
105
+ if (!selector)
106
+ return null;
107
+ return {
108
+ level: match[1].length,
109
+ kind: match[2].toLowerCase(),
110
+ selector,
111
+ };
112
+ }
113
+ function parseAnyHeading(line) {
114
+ const match = /^(#{1,6})\s+/.exec(line.trimEnd());
115
+ return match ? { level: match[1].length } : null;
116
+ }
117
+ export function parseAgentsMarkdown(content) {
118
+ const globalLines = [];
119
+ const modelSections = [];
120
+ const toolSections = [];
121
+ let active = null;
122
+ const flushActive = () => {
123
+ if (!active)
124
+ return;
125
+ const content = capText(trimBlock(active.lines.join('\n')), MAX_SECTION_CHARS);
126
+ if (content) {
127
+ const section = {
128
+ kind: active.kind,
129
+ selector: active.selector,
130
+ content,
131
+ };
132
+ if (active.kind === 'model')
133
+ modelSections.push(section);
134
+ else
135
+ toolSections.push(section);
136
+ }
137
+ active = null;
138
+ };
139
+ for (const line of normalizeLines(content).split('\n')) {
140
+ const scopedHeading = parseScopedHeading(line);
141
+ if (scopedHeading) {
142
+ flushActive();
143
+ active = {
144
+ kind: scopedHeading.kind,
145
+ selector: scopedHeading.selector,
146
+ level: scopedHeading.level,
147
+ lines: [],
148
+ };
149
+ continue;
150
+ }
151
+ const heading = parseAnyHeading(line);
152
+ if (active && heading && heading.level <= active.level) {
153
+ flushActive();
154
+ }
155
+ if (active)
156
+ active.lines.push(line);
157
+ else
158
+ globalLines.push(line);
159
+ }
160
+ flushActive();
161
+ return {
162
+ global: capText(trimBlock(globalLines.join('\n')), MAX_SECTION_CHARS),
163
+ modelSections,
164
+ toolSections,
165
+ };
166
+ }
167
+ function readAgentsFile(filePath, root) {
168
+ try {
169
+ const raw = readFileSync(filePath, 'utf8');
170
+ const truncated = raw.length > MAX_FILE_CHARS;
171
+ const parsed = parseAgentsMarkdown(raw.slice(0, MAX_FILE_CHARS));
172
+ const rel = relative(root, filePath).replace(/\\/g, '/') || filePath;
173
+ return {
174
+ filePath,
175
+ relativePath: rel,
176
+ truncated,
177
+ ...parsed,
178
+ };
179
+ }
180
+ catch {
181
+ return null;
182
+ }
183
+ }
184
+ export function discoverAgentsInstructions(cwd = process.cwd()) {
185
+ const normalizedCwd = normalizeCwd(cwd);
186
+ const root = findAgentsRoot(normalizedCwd);
187
+ const files = [];
188
+ for (const dir of dirsFromRootToCwd(root, normalizedCwd)) {
189
+ const filePath = firstAgentsFile(dir);
190
+ if (!filePath)
191
+ continue;
192
+ const parsed = readAgentsFile(filePath, root);
193
+ if (parsed)
194
+ files.push(parsed);
195
+ }
196
+ return { root, cwd: normalizedCwd, files };
197
+ }
198
+ function compileSlashRegex(value) {
199
+ if (!value.startsWith('/'))
200
+ return null;
201
+ const lastSlash = value.lastIndexOf('/');
202
+ if (lastSlash <= 0)
203
+ return null;
204
+ try {
205
+ return new RegExp(value.slice(1, lastSlash), value.slice(lastSlash + 1));
206
+ }
207
+ catch {
208
+ return null;
209
+ }
210
+ }
211
+ function selectorParts(selector) {
212
+ return selector.split(',').map((part) => part.trim()).filter(Boolean);
213
+ }
214
+ export function selectorMatches(selector, target) {
215
+ const normalizedTarget = target.trim();
216
+ if (!normalizedTarget)
217
+ return false;
218
+ for (const part of selectorParts(selector)) {
219
+ if (part.toLowerCase() === normalizedTarget.toLowerCase())
220
+ return true;
221
+ const slashRegex = compileSlashRegex(part);
222
+ if (slashRegex) {
223
+ if (slashRegex.test(normalizedTarget))
224
+ return true;
225
+ continue;
226
+ }
227
+ try {
228
+ if (new RegExp(part, 'i').test(normalizedTarget))
229
+ return true;
230
+ }
231
+ catch {
232
+ // Invalid regex-like selectors fall back to case-insensitive exact
233
+ // matching above. This keeps a typo from breaking startup.
234
+ }
235
+ }
236
+ return false;
237
+ }
238
+ function matchingModelSections(file, model) {
239
+ return file.modelSections.filter((section) => selectorMatches(section.selector, model));
240
+ }
241
+ function collectPromptBlocks(set, model) {
242
+ const blocks = [];
243
+ for (const file of set.files) {
244
+ if (file.global) {
245
+ blocks.push(`## ${file.relativePath}\n${file.global}${file.truncated ? '\n[AGENTS.md file was truncated before parsing]' : ''}`);
246
+ }
247
+ for (const section of matchingModelSections(file, model)) {
248
+ blocks.push(`## ${file.relativePath} - Model: ${section.selector}\n${section.content}`);
249
+ }
250
+ }
251
+ return blocks;
252
+ }
253
+ export function buildAgentsInstructionsPrompt(cwd, model) {
254
+ const set = discoverAgentsInstructions(cwd);
255
+ const blocks = collectPromptBlocks(set, model);
256
+ if (blocks.length === 0)
257
+ return '';
258
+ const body = capText(blocks.join('\n\n'), MAX_PROMPT_CHARS);
259
+ return `\n# AGENTS.md Instructions\n` +
260
+ `Repo-local AGENTS.md instructions were discovered from repository root to current directory. ` +
261
+ `Follow them when they do not conflict with the user's latest request, Cawdex safety rules, permissions, or current file evidence. ` +
262
+ `Later files are closer to the current directory and take precedence over earlier files when they conflict. ` +
263
+ `Tool-scoped sections are attached to matching tool descriptions.\n\n` +
264
+ body + '\n';
265
+ }
266
+ function collectToolInstructions(set, toolName) {
267
+ const entries = [];
268
+ for (const file of set.files) {
269
+ for (const section of file.toolSections) {
270
+ if (!selectorMatches(section.selector, toolName))
271
+ continue;
272
+ entries.push(`From ${file.relativePath} (Tool: ${section.selector}):\n${section.content}`);
273
+ }
274
+ }
275
+ return entries;
276
+ }
277
+ export function applyAgentToolInstructions(tools, cwd, _model) {
278
+ const set = discoverAgentsInstructions(cwd);
279
+ if (set.files.length === 0)
280
+ return tools;
281
+ let changed = false;
282
+ const scopedTools = tools.map((tool) => {
283
+ const entries = collectToolInstructions(set, tool.name);
284
+ if (entries.length === 0)
285
+ return tool;
286
+ changed = true;
287
+ const instructionText = capText(entries.join('\n\n'), MAX_TOOL_INSTRUCTION_CHARS);
288
+ return {
289
+ ...tool,
290
+ description: `${tool.description}\n\n` +
291
+ `AGENTS.md instructions for this tool, ordered from repository root to current directory. ` +
292
+ `Follow these only when compatible with user instructions, Cawdex safety rules, and tool permissions:\n` +
293
+ instructionText,
294
+ };
295
+ });
296
+ return changed ? scopedTools : tools;
297
+ }
298
+ export function formatAgentsInstructionsReport(cwd, model, tools = []) {
299
+ const set = discoverAgentsInstructions(cwd);
300
+ if (set.files.length === 0) {
301
+ return `\n No AGENTS.md files found from ${set.root} to ${set.cwd}.`;
302
+ }
303
+ const toolNames = tools.map((tool) => tool.name);
304
+ const lines = [
305
+ '',
306
+ ` AGENTS.md files (${set.files.length})`,
307
+ ` Root: ${set.root}`,
308
+ ` CWD: ${set.cwd}`,
309
+ ` Model: ${model}`,
310
+ '',
311
+ ];
312
+ for (const file of set.files) {
313
+ const matchingModels = matchingModelSections(file, model);
314
+ const matchingTools = file.toolSections
315
+ .map((section) => ({
316
+ selector: section.selector,
317
+ tools: toolNames.filter((name) => selectorMatches(section.selector, name)),
318
+ }))
319
+ .filter((entry) => entry.tools.length > 0);
320
+ lines.push(` - ${file.relativePath}`);
321
+ if (file.global)
322
+ lines.push(` global: ${file.global.length} chars`);
323
+ if (matchingModels.length > 0) {
324
+ lines.push(` model: ${matchingModels.map((section) => section.selector).join(', ')}`);
325
+ }
326
+ if (matchingTools.length > 0) {
327
+ for (const entry of matchingTools) {
328
+ lines.push(` tool: ${entry.selector} -> ${entry.tools.join(', ')}`);
329
+ }
330
+ }
331
+ if (file.truncated)
332
+ lines.push(' note: file was truncated before parsing');
333
+ if (!file.global && matchingModels.length === 0 && matchingTools.length === 0) {
334
+ lines.push(' no active global/model/tool sections for this model and tool set');
335
+ }
336
+ }
337
+ lines.push('');
338
+ return lines.join('\n');
339
+ }
340
+ //# sourceMappingURL=agents-md.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"agents-md.js","sourceRoot":"","sources":["../src/agents-md.ts"],"names":[],"mappings":"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"}