@developerz.ai/ai-claude-compat 0.0.2 → 0.0.4
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 +66 -8
- package/dist/agents-loader.js +0 -10
- package/dist/background-process.d.ts +62 -0
- package/dist/background-process.js +146 -0
- package/dist/bash-tool.d.ts +13 -0
- package/dist/bash-tool.js +49 -39
- package/dist/edit-tools.js +0 -9
- package/dist/env-block.js +0 -3
- package/dist/frontmatter.js +0 -9
- package/dist/fs-tools.js +0 -12
- package/dist/index.d.ts +2 -1
- package/dist/index.js +2 -5
- package/dist/safe-path.js +0 -18
- package/dist/search-tools.js +5 -20
- package/dist/skills-loader.js +0 -6
- package/dist/subagent.js +0 -10
- package/package.json +1 -1
- package/dist/agents-loader.js.map +0 -1
- package/dist/bash-tool.js.map +0 -1
- package/dist/edit-tools.js.map +0 -1
- package/dist/env-block.js.map +0 -1
- package/dist/frontmatter.js.map +0 -1
- package/dist/fs-tools.js.map +0 -1
- package/dist/index.js.map +0 -1
- package/dist/safe-path.js.map +0 -1
- package/dist/search-tools.js.map +0 -1
- package/dist/skills-loader.js.map +0 -1
- package/dist/subagent.js.map +0 -1
package/README.md
CHANGED
|
@@ -29,24 +29,56 @@ can't read or write outside the root you give it.
|
|
|
29
29
|
import {
|
|
30
30
|
readFileTool, writeFileTool, // Read (offset/limit window) + Write
|
|
31
31
|
editFileTool, multiEditTool, // exact-string Edit + batched MultiEdit
|
|
32
|
-
bashTool,
|
|
32
|
+
bashTool, multiBashTool, // one shell command / an ordered sequence, scoped to cwd
|
|
33
33
|
globTool, grepTool, // file glob + content search
|
|
34
34
|
} from '@developerz.ai/ai-claude-compat';
|
|
35
35
|
|
|
36
36
|
const cwd = process.cwd();
|
|
37
37
|
const tools = {
|
|
38
|
-
read:
|
|
39
|
-
write:
|
|
40
|
-
edit:
|
|
41
|
-
bash:
|
|
42
|
-
|
|
43
|
-
|
|
38
|
+
read: readFileTool({ cwd }),
|
|
39
|
+
write: writeFileTool({ cwd }),
|
|
40
|
+
edit: editFileTool({ cwd }),
|
|
41
|
+
bash: bashTool({ cwd }),
|
|
42
|
+
multiBash: multiBashTool({ cwd }),
|
|
43
|
+
grep: grepTool({ cwd }),
|
|
44
|
+
glob: globTool({ cwd }),
|
|
44
45
|
};
|
|
45
46
|
```
|
|
46
47
|
|
|
47
48
|
Pass `tools` straight into a `generateText` / `streamText` call or an
|
|
48
49
|
`Agent`/`ToolLoopAgent`.
|
|
49
50
|
|
|
51
|
+
## Background processes
|
|
52
|
+
|
|
53
|
+
`bashTool`/`multiBashTool` block until the command exits, so they can't hold a
|
|
54
|
+
dev server open. `backgroundProcessTools` does: it spawns `bash -c …` without
|
|
55
|
+
awaiting, returns a process id immediately, and lets the agent tail output, kill
|
|
56
|
+
one process, or kill them all on teardown. **The caller owns lifecycle** — keep
|
|
57
|
+
the returned `manager` and call `killAll()` when the run ends, or processes leak.
|
|
58
|
+
|
|
59
|
+
```ts
|
|
60
|
+
import { backgroundProcessTools } from '@developerz.ai/ai-claude-compat';
|
|
61
|
+
|
|
62
|
+
const { manager, backgroundBash, bashOutput, killBash, listBackground } =
|
|
63
|
+
backgroundProcessTools({ cwd });
|
|
64
|
+
|
|
65
|
+
const agentTools = { ...tools, backgroundBash, bashOutput, killBash, listBackground };
|
|
66
|
+
// agent: backgroundBash("npm run dev") -> { id }
|
|
67
|
+
// bashOutput(id) -> new stdout/stderr since last poll, running, exitCode
|
|
68
|
+
// killBash(id)
|
|
69
|
+
try {
|
|
70
|
+
await agent.generate({ prompt: 'start the dev server and check it serves /health' });
|
|
71
|
+
} finally {
|
|
72
|
+
manager.killAll(); // teardown — nothing else guarantees the server is stopped
|
|
73
|
+
}
|
|
74
|
+
```
|
|
75
|
+
|
|
76
|
+
`bashOutput` is **incremental** (like Claude Code's BashOutput): each call returns
|
|
77
|
+
only the bytes produced since the last call. Buffers are capped (256 KiB/stream by
|
|
78
|
+
default); past the cap the oldest bytes are dropped and `truncated` is set.
|
|
79
|
+
Browser/CDP automation is intentionally **out of scope** — drive a browser with a
|
|
80
|
+
dedicated MCP server (e.g. Playwright MCP), not from this library.
|
|
81
|
+
|
|
50
82
|
## Subagents (subagent-as-tool)
|
|
51
83
|
|
|
52
84
|
`createSubagent` wraps the boilerplate of a `ToolLoopAgent` (model + tools +
|
|
@@ -99,7 +131,9 @@ for (const dir of claudeDirs(process.cwd())) {
|
|
|
99
131
|
| --- | --- |
|
|
100
132
|
| `readFileTool`, `writeFileTool` | Read (offset/limit window) + Write, cwd-scoped |
|
|
101
133
|
| `editFileTool`, `multiEditTool`, `applyEdit` | Exact-string Edit, batched MultiEdit, pure edit helper |
|
|
102
|
-
| `bashTool` |
|
|
134
|
+
| `bashTool` | Run one shell command, cwd as initial dir; returns stdout/stderr/exitCode |
|
|
135
|
+
| `multiBashTool` | Run an ordered sequence of commands; stops at the first non-zero exit |
|
|
136
|
+
| `backgroundProcessTools`, `ProcessManager` | Non-blocking background commands (dev servers): start / tail output / kill / killAll |
|
|
103
137
|
| `globTool`, `grepTool`, `globToRegExp` | File glob + content search |
|
|
104
138
|
| `composeSystemPrompt`, `createSubagent` | System-prompt composer + subagent-as-tool factory |
|
|
105
139
|
| `envBlock` | Render the `<env>` system-context block from `EnvInfo` |
|
|
@@ -116,6 +150,30 @@ ESM only. Runs unchanged on **Node ≥ 20, Bun, and Deno ≥ 1.40**. Peer dep: `
|
|
|
116
150
|
(AI SDK v6). No Anthropic SDK — "Claude-compat" refers to the *conventions*, not
|
|
117
151
|
the provider.
|
|
118
152
|
|
|
153
|
+
## Platform: Linux only
|
|
154
|
+
|
|
155
|
+
The shell tools (`bashTool`, `multiBashTool`) target **Linux**. They spawn
|
|
156
|
+
`bash -c …`, so they need a POSIX `bash` on `PATH` — they are **not** supported
|
|
157
|
+
on native Windows (use WSL) and are only best-effort on macOS. The pure
|
|
158
|
+
filesystem/edit/search tools are platform-neutral, but the package as a whole is
|
|
159
|
+
developed and tested on Linux; treat anything else as unsupported.
|
|
160
|
+
|
|
161
|
+
### Shell environment (rbenv / nvm / asdf, `~/.bashrc`)
|
|
162
|
+
|
|
163
|
+
Commands run via a **non-login, non-interactive** `bash -c` with `BASH_ENV`
|
|
164
|
+
scrubbed. That is deliberate: a login/interactive shell would source
|
|
165
|
+
`/etc/profile` and `~/.bashrc`, which often `cd` away and would defeat the
|
|
166
|
+
cwd lock. The consequence:
|
|
167
|
+
|
|
168
|
+
- **PATH-based tools work** — `rbenv`/`asdf` shims, and any binary already on the
|
|
169
|
+
`PATH` of the process that launched the agent, are inherited (the child gets
|
|
170
|
+
`process.env`). If you can run `ruby`/`node` from the shell you start the agent
|
|
171
|
+
in, the agent can too.
|
|
172
|
+
- **Shell-function tools do not** — `nvm`, and anything that exists only as a
|
|
173
|
+
function defined in `~/.bashrc`, is **not** loaded. Source it yourself inside
|
|
174
|
+
the command (`source ~/.nvm/nvm.sh && nvm use && …`) or put the resolved
|
|
175
|
+
binary on `PATH` before launching.
|
|
176
|
+
|
|
119
177
|
## License
|
|
120
178
|
|
|
121
179
|
MIT · part of [`developerz-ai/ai-task-master`](https://github.com/developerz-ai/ai-task-master)
|
package/dist/agents-loader.js
CHANGED
|
@@ -1,13 +1,7 @@
|
|
|
1
|
-
// Discover Claude-Code-style subagent definitions: `<claudeDir>/agents/<name>.md`, each with
|
|
2
|
-
// YAML frontmatter (name, description, tools, model) + a markdown body that is the subagent's
|
|
3
|
-
// system prompt. Mirrors how the harness scans `.claude/agents/` (see claude-code-knowledge
|
|
4
|
-
// skills-and-subagents.md). Also exposes the standard global + project `.claude` locations.
|
|
5
1
|
import { readdir, readFile } from 'node:fs/promises';
|
|
6
2
|
import { homedir } from 'node:os';
|
|
7
3
|
import { basename, join } from 'node:path';
|
|
8
4
|
import { asString, asStringArray, parseFrontmatter } from "./frontmatter.js";
|
|
9
|
-
// Load every agent under `<claudeDir>/agents/*.md`. `claudeDir` is a `.claude` directory.
|
|
10
|
-
// A missing dir yields []. Sorted by name.
|
|
11
5
|
export async function loadAgents(claudeDir) {
|
|
12
6
|
const agentsDir = join(claudeDir, 'agents');
|
|
13
7
|
const entries = await readdir(agentsDir, { withFileTypes: true }).catch(() => null);
|
|
@@ -39,10 +33,6 @@ export async function loadAgents(claudeDir) {
|
|
|
39
33
|
agents.sort((a, b) => a.name.localeCompare(b.name));
|
|
40
34
|
return agents;
|
|
41
35
|
}
|
|
42
|
-
// The two `.claude` locations the harness scans, in increasing precedence: the global
|
|
43
|
-
// `~/.claude` first, then the project `<cwd>/.claude`. A caller merging by name should let the
|
|
44
|
-
// later (project) entry win.
|
|
45
36
|
export function claudeDirs(cwd) {
|
|
46
37
|
return [join(homedir(), '.claude'), join(cwd, '.claude')];
|
|
47
38
|
}
|
|
48
|
-
//# sourceMappingURL=agents-loader.js.map
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
import { spawn as nodeSpawn } from 'node:child_process';
|
|
2
|
+
import { type Tool } from 'ai';
|
|
3
|
+
export type SpawnFn = typeof nodeSpawn;
|
|
4
|
+
export type BackgroundProcessInit = {
|
|
5
|
+
cwd: string;
|
|
6
|
+
maxBufferBytes?: number;
|
|
7
|
+
spawn?: SpawnFn;
|
|
8
|
+
};
|
|
9
|
+
export type ProcessStatus = {
|
|
10
|
+
id: string;
|
|
11
|
+
command: string;
|
|
12
|
+
running: boolean;
|
|
13
|
+
exitCode: number | null;
|
|
14
|
+
pid: number | null;
|
|
15
|
+
};
|
|
16
|
+
export type ProcessOutput = {
|
|
17
|
+
id: string;
|
|
18
|
+
stdout: string;
|
|
19
|
+
stderr: string;
|
|
20
|
+
running: boolean;
|
|
21
|
+
exitCode: number | null;
|
|
22
|
+
truncated: boolean;
|
|
23
|
+
};
|
|
24
|
+
export declare class ProcessManager {
|
|
25
|
+
private readonly cwd;
|
|
26
|
+
private readonly cap;
|
|
27
|
+
private readonly spawn;
|
|
28
|
+
private readonly procs;
|
|
29
|
+
private counter;
|
|
30
|
+
constructor(init: BackgroundProcessInit);
|
|
31
|
+
start(command: string): ProcessStatus;
|
|
32
|
+
output(id: string): ProcessOutput | null;
|
|
33
|
+
kill(id: string, signal?: NodeJS.Signals): boolean;
|
|
34
|
+
killAll(signal?: NodeJS.Signals): void;
|
|
35
|
+
list(): ProcessStatus[];
|
|
36
|
+
private statusOf;
|
|
37
|
+
}
|
|
38
|
+
export type BackgroundBashInput = {
|
|
39
|
+
command: string;
|
|
40
|
+
};
|
|
41
|
+
export type BackgroundBashOutput = ProcessStatus;
|
|
42
|
+
export type BashOutputInput = {
|
|
43
|
+
id: string;
|
|
44
|
+
};
|
|
45
|
+
export type KillBashInput = {
|
|
46
|
+
id: string;
|
|
47
|
+
};
|
|
48
|
+
export type KillBashOutput = {
|
|
49
|
+
id: string;
|
|
50
|
+
killed: boolean;
|
|
51
|
+
};
|
|
52
|
+
export type ListBackgroundOutput = {
|
|
53
|
+
processes: ProcessStatus[];
|
|
54
|
+
};
|
|
55
|
+
export type BackgroundProcessTools = {
|
|
56
|
+
manager: ProcessManager;
|
|
57
|
+
backgroundBash: Tool<BackgroundBashInput, BackgroundBashOutput>;
|
|
58
|
+
bashOutput: Tool<BashOutputInput, ProcessOutput>;
|
|
59
|
+
killBash: Tool<KillBashInput, KillBashOutput>;
|
|
60
|
+
listBackground: Tool<Record<string, never>, ListBackgroundOutput>;
|
|
61
|
+
};
|
|
62
|
+
export declare function backgroundProcessTools(init: BackgroundProcessInit): BackgroundProcessTools;
|
|
@@ -0,0 +1,146 @@
|
|
|
1
|
+
import { spawn as nodeSpawn } from 'node:child_process';
|
|
2
|
+
import { tool } from 'ai';
|
|
3
|
+
import { z } from 'zod';
|
|
4
|
+
const DEFAULT_MAX_BUFFER_BYTES = 256 * 1024;
|
|
5
|
+
class CappedStream {
|
|
6
|
+
cap;
|
|
7
|
+
retained = '';
|
|
8
|
+
produced = 0;
|
|
9
|
+
returned = 0;
|
|
10
|
+
constructor(cap) {
|
|
11
|
+
this.cap = cap;
|
|
12
|
+
}
|
|
13
|
+
append(chunk) {
|
|
14
|
+
this.produced += chunk.length;
|
|
15
|
+
this.retained += chunk;
|
|
16
|
+
if (this.retained.length > this.cap) {
|
|
17
|
+
this.retained = this.retained.slice(this.retained.length - this.cap);
|
|
18
|
+
}
|
|
19
|
+
}
|
|
20
|
+
read() {
|
|
21
|
+
const retainedStart = this.produced - this.retained.length;
|
|
22
|
+
const from = Math.max(this.returned, retainedStart);
|
|
23
|
+
const chunk = this.retained.slice(from - retainedStart);
|
|
24
|
+
const truncated = retainedStart > this.returned;
|
|
25
|
+
this.returned = this.produced;
|
|
26
|
+
return { chunk, truncated };
|
|
27
|
+
}
|
|
28
|
+
}
|
|
29
|
+
export class ProcessManager {
|
|
30
|
+
cwd;
|
|
31
|
+
cap;
|
|
32
|
+
spawn;
|
|
33
|
+
procs = new Map();
|
|
34
|
+
counter = 0;
|
|
35
|
+
constructor(init) {
|
|
36
|
+
this.cwd = init.cwd;
|
|
37
|
+
this.cap = init.maxBufferBytes ?? DEFAULT_MAX_BUFFER_BYTES;
|
|
38
|
+
this.spawn = init.spawn ?? nodeSpawn;
|
|
39
|
+
}
|
|
40
|
+
start(command) {
|
|
41
|
+
const id = `bg-${++this.counter}`;
|
|
42
|
+
const proc = this.spawn('bash', ['-c', command], {
|
|
43
|
+
cwd: this.cwd,
|
|
44
|
+
env: { ...process.env, BASH_ENV: '' },
|
|
45
|
+
});
|
|
46
|
+
const entry = {
|
|
47
|
+
command,
|
|
48
|
+
proc,
|
|
49
|
+
stdout: new CappedStream(this.cap),
|
|
50
|
+
stderr: new CappedStream(this.cap),
|
|
51
|
+
running: true,
|
|
52
|
+
exitCode: null,
|
|
53
|
+
};
|
|
54
|
+
proc.stdout?.on('data', (d) => entry.stdout.append(d.toString()));
|
|
55
|
+
proc.stderr?.on('data', (d) => entry.stderr.append(d.toString()));
|
|
56
|
+
proc.on('error', (err) => {
|
|
57
|
+
entry.stderr.append(err.message);
|
|
58
|
+
entry.running = false;
|
|
59
|
+
if (entry.exitCode === null)
|
|
60
|
+
entry.exitCode = 1;
|
|
61
|
+
});
|
|
62
|
+
proc.on('exit', (code, signal) => {
|
|
63
|
+
entry.running = false;
|
|
64
|
+
entry.exitCode = code ?? (signal ? 1 : 0);
|
|
65
|
+
});
|
|
66
|
+
this.procs.set(id, entry);
|
|
67
|
+
return this.statusOf(id, entry);
|
|
68
|
+
}
|
|
69
|
+
output(id) {
|
|
70
|
+
const entry = this.procs.get(id);
|
|
71
|
+
if (!entry)
|
|
72
|
+
return null;
|
|
73
|
+
const out = entry.stdout.read();
|
|
74
|
+
const err = entry.stderr.read();
|
|
75
|
+
return {
|
|
76
|
+
id,
|
|
77
|
+
stdout: out.chunk,
|
|
78
|
+
stderr: err.chunk,
|
|
79
|
+
running: entry.running,
|
|
80
|
+
exitCode: entry.exitCode,
|
|
81
|
+
truncated: out.truncated || err.truncated,
|
|
82
|
+
};
|
|
83
|
+
}
|
|
84
|
+
kill(id, signal = 'SIGTERM') {
|
|
85
|
+
const entry = this.procs.get(id);
|
|
86
|
+
if (!entry)
|
|
87
|
+
return false;
|
|
88
|
+
if (entry.running)
|
|
89
|
+
entry.proc.kill(signal);
|
|
90
|
+
return true;
|
|
91
|
+
}
|
|
92
|
+
killAll(signal = 'SIGTERM') {
|
|
93
|
+
for (const entry of this.procs.values()) {
|
|
94
|
+
if (entry.running)
|
|
95
|
+
entry.proc.kill(signal);
|
|
96
|
+
}
|
|
97
|
+
}
|
|
98
|
+
list() {
|
|
99
|
+
return [...this.procs.entries()].map(([id, entry]) => this.statusOf(id, entry));
|
|
100
|
+
}
|
|
101
|
+
statusOf(id, entry) {
|
|
102
|
+
return {
|
|
103
|
+
id,
|
|
104
|
+
command: entry.command,
|
|
105
|
+
running: entry.running,
|
|
106
|
+
exitCode: entry.exitCode,
|
|
107
|
+
pid: entry.proc.pid ?? null,
|
|
108
|
+
};
|
|
109
|
+
}
|
|
110
|
+
}
|
|
111
|
+
const backgroundBashInputSchema = z.object({ command: z.string().min(1) });
|
|
112
|
+
const idInputSchema = z.object({ id: z.string().min(1) });
|
|
113
|
+
export function backgroundProcessTools(init) {
|
|
114
|
+
const manager = new ProcessManager(init);
|
|
115
|
+
const backgroundBash = tool({
|
|
116
|
+
description: 'Start a long-running shell command in the background (e.g. a dev server) and return immediately with a process id. Does NOT wait for it to exit. Poll its output with bashOutput(id) and stop it with killBash(id). For a command that finishes quickly, use the blocking bash tool instead.',
|
|
117
|
+
inputSchema: backgroundBashInputSchema,
|
|
118
|
+
execute: async (input) => manager.start(input.command),
|
|
119
|
+
});
|
|
120
|
+
const bashOutput = tool({
|
|
121
|
+
description: 'Read new stdout/stderr produced since the last bashOutput call for a background process id, plus whether it is still running and its exit code once finished.',
|
|
122
|
+
inputSchema: idInputSchema,
|
|
123
|
+
execute: async (input) => manager.output(input.id) ?? {
|
|
124
|
+
id: input.id,
|
|
125
|
+
stdout: '',
|
|
126
|
+
stderr: `no background process with id ${input.id}`,
|
|
127
|
+
running: false,
|
|
128
|
+
exitCode: 1,
|
|
129
|
+
truncated: false,
|
|
130
|
+
},
|
|
131
|
+
});
|
|
132
|
+
const killBash = tool({
|
|
133
|
+
description: 'Stop a background process by id (sends SIGTERM). Idempotent.',
|
|
134
|
+
inputSchema: idInputSchema,
|
|
135
|
+
execute: async (input) => ({
|
|
136
|
+
id: input.id,
|
|
137
|
+
killed: manager.kill(input.id),
|
|
138
|
+
}),
|
|
139
|
+
});
|
|
140
|
+
const listBackground = tool({
|
|
141
|
+
description: 'List all background processes started this session with their running state.',
|
|
142
|
+
inputSchema: z.object({}),
|
|
143
|
+
execute: async () => ({ processes: manager.list() }),
|
|
144
|
+
});
|
|
145
|
+
return { manager, backgroundBash, bashOutput, killBash, listBackground };
|
|
146
|
+
}
|
package/dist/bash-tool.d.ts
CHANGED
|
@@ -5,16 +5,29 @@ declare const bashInputSchema: z.ZodObject<{
|
|
|
5
5
|
command: z.ZodString;
|
|
6
6
|
timeoutMs: z.ZodOptional<z.ZodNumber>;
|
|
7
7
|
}, z.core.$strip>;
|
|
8
|
+
declare const multiBashInputSchema: z.ZodObject<{
|
|
9
|
+
commands: z.ZodArray<z.ZodString>;
|
|
10
|
+
timeoutMs: z.ZodOptional<z.ZodNumber>;
|
|
11
|
+
}, z.core.$strip>;
|
|
8
12
|
export type BashInput = z.infer<typeof bashInputSchema>;
|
|
9
13
|
export type BashOutput = {
|
|
10
14
|
stdout: string;
|
|
11
15
|
stderr: string;
|
|
12
16
|
exitCode: number;
|
|
13
17
|
};
|
|
18
|
+
export type MultiBashInput = z.infer<typeof multiBashInputSchema>;
|
|
19
|
+
export type MultiBashOutput = {
|
|
20
|
+
results: Array<{
|
|
21
|
+
command: string;
|
|
22
|
+
} & BashOutput>;
|
|
23
|
+
exitCode: number;
|
|
24
|
+
failedAt: number | null;
|
|
25
|
+
};
|
|
14
26
|
export type BashToolInit = {
|
|
15
27
|
cwd: string;
|
|
16
28
|
defaultTimeoutMs?: number;
|
|
17
29
|
exec?: typeof execa;
|
|
18
30
|
};
|
|
19
31
|
export declare function bashTool(init: BashToolInit): Tool<BashInput, BashOutput>;
|
|
32
|
+
export declare function multiBashTool(init: BashToolInit): Tool<MultiBashInput, MultiBashOutput>;
|
|
20
33
|
export {};
|
package/dist/bash-tool.js
CHANGED
|
@@ -1,9 +1,3 @@
|
|
|
1
|
-
// Shell tool, modeled on Claude Code's Bash. Runs a command via `bash -c` with its initial cwd
|
|
2
|
-
// set to the worktree. Unlike the FS tools it is intentionally NOT confined to the worktree:
|
|
3
|
-
// subagents need git, test and build commands, so `cd`, absolute paths and `git -C` are all
|
|
4
|
-
// legitimate. The trust boundary is "an agent is running on your repo" — same as Claude Code
|
|
5
|
-
// itself; sandboxing/containerization is out of scope. The worktree is the initial cwd as a
|
|
6
|
-
// convenience default, not a security boundary.
|
|
7
1
|
import { tool } from 'ai';
|
|
8
2
|
import { ExecaError, execa } from 'execa';
|
|
9
3
|
import { z } from 'zod';
|
|
@@ -11,51 +5,67 @@ const bashInputSchema = z.object({
|
|
|
11
5
|
command: z.string().min(1),
|
|
12
6
|
timeoutMs: z.number().int().positive().optional(),
|
|
13
7
|
});
|
|
8
|
+
const multiBashInputSchema = z.object({
|
|
9
|
+
commands: z.array(z.string().min(1)).min(1),
|
|
10
|
+
timeoutMs: z.number().int().positive().optional(),
|
|
11
|
+
});
|
|
14
12
|
const DEFAULT_BASH_TIMEOUT_MS = 60_000;
|
|
15
|
-
// Hard ceiling on the effective timeout so a single tool call — via a huge per-call timeoutMs or
|
|
16
|
-
// an over-large configured default — can't pin the agent loop far longer than intended.
|
|
17
13
|
const MAX_BASH_TIMEOUT_MS = 600_000;
|
|
14
|
+
async function runBash(exec, cwd, command, timeout) {
|
|
15
|
+
try {
|
|
16
|
+
const r = await exec('bash', ['-c', command], {
|
|
17
|
+
cwd,
|
|
18
|
+
timeout,
|
|
19
|
+
env: { ...process.env, BASH_ENV: '' },
|
|
20
|
+
});
|
|
21
|
+
return {
|
|
22
|
+
stdout: typeof r.stdout === 'string' ? r.stdout : '',
|
|
23
|
+
stderr: typeof r.stderr === 'string' ? r.stderr : '',
|
|
24
|
+
exitCode: r.exitCode ?? 0,
|
|
25
|
+
};
|
|
26
|
+
}
|
|
27
|
+
catch (err) {
|
|
28
|
+
if (err instanceof ExecaError) {
|
|
29
|
+
return {
|
|
30
|
+
stdout: typeof err.stdout === 'string' ? err.stdout : '',
|
|
31
|
+
stderr: typeof err.stderr === 'string' ? err.stderr : err.message,
|
|
32
|
+
exitCode: err.exitCode ?? 1,
|
|
33
|
+
};
|
|
34
|
+
}
|
|
35
|
+
return {
|
|
36
|
+
stdout: '',
|
|
37
|
+
stderr: err instanceof Error ? err.message : String(err),
|
|
38
|
+
exitCode: 1,
|
|
39
|
+
};
|
|
40
|
+
}
|
|
41
|
+
}
|
|
18
42
|
export function bashTool(init) {
|
|
19
43
|
const exec = init.exec ?? execa;
|
|
20
44
|
const defaultTimeout = init.defaultTimeoutMs ?? DEFAULT_BASH_TIMEOUT_MS;
|
|
21
45
|
return tool({
|
|
22
46
|
description: 'Run a shell command inside the current worktree. Returns stdout, stderr, and exit code. The command runs via `bash -c` with its initial cwd set to the worktree.',
|
|
23
47
|
inputSchema: bashInputSchema,
|
|
48
|
+
execute: (input) => runBash(exec, init.cwd, input.command, Math.min(input.timeoutMs ?? defaultTimeout, MAX_BASH_TIMEOUT_MS)),
|
|
49
|
+
});
|
|
50
|
+
}
|
|
51
|
+
export function multiBashTool(init) {
|
|
52
|
+
const exec = init.exec ?? execa;
|
|
53
|
+
const defaultTimeout = init.defaultTimeoutMs ?? DEFAULT_BASH_TIMEOUT_MS;
|
|
54
|
+
return tool({
|
|
55
|
+
description: 'Run a sequence of shell commands inside the current worktree, one after another. Stops at the first command that exits non-zero — the remaining commands are not run. Each command runs in its own `bash -c` with cwd reset to the worktree, so chain `cd x && …` within a single command if you need a directory change to persist. Returns one result per command that ran, the overall exit code, and the index of the failing command (failedAt) if any.',
|
|
56
|
+
inputSchema: multiBashInputSchema,
|
|
24
57
|
execute: async (input) => {
|
|
25
58
|
const timeout = Math.min(input.timeoutMs ?? defaultTimeout, MAX_BASH_TIMEOUT_MS);
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
timeout,
|
|
34
|
-
env: { ...process.env, BASH_ENV: '' },
|
|
35
|
-
});
|
|
36
|
-
return {
|
|
37
|
-
stdout: typeof r.stdout === 'string' ? r.stdout : '',
|
|
38
|
-
stderr: typeof r.stderr === 'string' ? r.stderr : '',
|
|
39
|
-
exitCode: r.exitCode ?? 0,
|
|
40
|
-
};
|
|
41
|
-
}
|
|
42
|
-
catch (err) {
|
|
43
|
-
if (err instanceof ExecaError) {
|
|
44
|
-
return {
|
|
45
|
-
stdout: typeof err.stdout === 'string' ? err.stdout : '',
|
|
46
|
-
stderr: typeof err.stderr === 'string' ? err.stderr : err.message,
|
|
47
|
-
exitCode: err.exitCode ?? 1,
|
|
48
|
-
};
|
|
59
|
+
const results = [];
|
|
60
|
+
for (let i = 0; i < input.commands.length; i++) {
|
|
61
|
+
const command = input.commands[i] ?? '';
|
|
62
|
+
const out = await runBash(exec, init.cwd, command, timeout);
|
|
63
|
+
results.push({ command, ...out });
|
|
64
|
+
if (out.exitCode !== 0) {
|
|
65
|
+
return { results, exitCode: out.exitCode, failedAt: i };
|
|
49
66
|
}
|
|
50
|
-
// Unknown failure (timeout, ENOENT on bash, etc.): surface as a non-zero exit with the
|
|
51
|
-
// error message in stderr so the LLM can read it and react.
|
|
52
|
-
return {
|
|
53
|
-
stdout: '',
|
|
54
|
-
stderr: err instanceof Error ? err.message : String(err),
|
|
55
|
-
exitCode: 1,
|
|
56
|
-
};
|
|
57
67
|
}
|
|
68
|
+
return { results, exitCode: 0, failedAt: null };
|
|
58
69
|
},
|
|
59
70
|
});
|
|
60
71
|
}
|
|
61
|
-
//# sourceMappingURL=bash-tool.js.map
|
package/dist/edit-tools.js
CHANGED
|
@@ -1,7 +1,3 @@
|
|
|
1
|
-
// String-replace edit tools, modeled on Claude Code's Edit. `editFile` does one exact
|
|
2
|
-
// replacement; `multiEdit` applies a sequence atomically (all succeed and the file is written
|
|
3
|
-
// once, or nothing is written). Both reject an `oldString` that is absent or — unless
|
|
4
|
-
// `replaceAll` — ambiguous, so the model can't silently edit the wrong occurrence.
|
|
5
1
|
import { readFile as fsReadFile, writeFile as fsWriteFile } from 'node:fs/promises';
|
|
6
2
|
import { tool } from 'ai';
|
|
7
3
|
import { z } from 'zod';
|
|
@@ -52,11 +48,7 @@ export function multiEditTool(init) {
|
|
|
52
48
|
},
|
|
53
49
|
});
|
|
54
50
|
}
|
|
55
|
-
// Pure string replacement with the uniqueness contract. Uses split/join so `newString` is
|
|
56
|
-
// inserted verbatim (no `$&`/`$1` substitution that String.prototype.replace would apply).
|
|
57
51
|
export function applyEdit(content, edit) {
|
|
58
|
-
// Guard the exported API: the tool schemas enforce min(1), but a direct caller could pass
|
|
59
|
-
// '' — which `split('')` would treat as a match at every character boundary.
|
|
60
52
|
if (edit.oldString.length === 0) {
|
|
61
53
|
throw new Error('oldString must be non-empty');
|
|
62
54
|
}
|
|
@@ -78,4 +70,3 @@ function preview(s) {
|
|
|
78
70
|
const oneLine = s.replace(/\n/g, '\\n');
|
|
79
71
|
return oneLine.length > 60 ? `${oneLine.slice(0, 60)}…` : oneLine;
|
|
80
72
|
}
|
|
81
|
-
//# sourceMappingURL=edit-tools.js.map
|
package/dist/env-block.js
CHANGED
|
@@ -1,5 +1,3 @@
|
|
|
1
|
-
// The `<env>` system-context block injected into a subagent's system prompt so the model
|
|
2
|
-
// picks the right paths/commands. Portable: node:os + process only (Bun, Node >=20, Deno).
|
|
3
1
|
import { arch as osArch, release } from 'node:os';
|
|
4
2
|
function runtimeLabel() {
|
|
5
3
|
const v = process.versions;
|
|
@@ -26,4 +24,3 @@ export function envBlock(info) {
|
|
|
26
24
|
];
|
|
27
25
|
return lines.join('\n');
|
|
28
26
|
}
|
|
29
|
-
//# sourceMappingURL=env-block.js.map
|
package/dist/frontmatter.js
CHANGED
|
@@ -1,8 +1,3 @@
|
|
|
1
|
-
// Minimal YAML-frontmatter parser for `.claude/` extension files (SKILL.md, agents/*.md).
|
|
2
|
-
// Handles only what those files use — scalar strings, flow arrays (`[a, b]`), and block
|
|
3
|
-
// sequences (`- a` lines) — so the lib stays dependency-free rather than pulling a full YAML
|
|
4
|
-
// engine. Anything outside that shape is ignored, not errored, so a malformed field never
|
|
5
|
-
// blocks discovery of the rest.
|
|
6
1
|
const FRONTMATTER = /^---[ \t]*\r?\n([\s\S]*?)\r?\n---[ \t]*(?:\r?\n([\s\S]*))?$/;
|
|
7
2
|
export function parseFrontmatter(content) {
|
|
8
3
|
const match = FRONTMATTER.exec(content);
|
|
@@ -23,7 +18,6 @@ function parseBlock(raw) {
|
|
|
23
18
|
const key = m[1] ?? '';
|
|
24
19
|
const rest = (m[2] ?? '').trim();
|
|
25
20
|
if (rest === '') {
|
|
26
|
-
// A bare `key:` may head a block sequence on the following `- item` lines.
|
|
27
21
|
const items = [];
|
|
28
22
|
while (i + 1 < lines.length && /^[ \t]*-[ \t]+/.test(lines[i + 1] ?? '')) {
|
|
29
23
|
i += 1;
|
|
@@ -50,7 +44,6 @@ function stripQuotes(s) {
|
|
|
50
44
|
}
|
|
51
45
|
return s;
|
|
52
46
|
}
|
|
53
|
-
// Coerce a parsed value to a single string (scalars stay; arrays join). Empty when absent.
|
|
54
47
|
export function asString(value) {
|
|
55
48
|
if (typeof value === 'string')
|
|
56
49
|
return value;
|
|
@@ -58,7 +51,6 @@ export function asString(value) {
|
|
|
58
51
|
return value.join(', ');
|
|
59
52
|
return '';
|
|
60
53
|
}
|
|
61
|
-
// Coerce a parsed value to a string list. A scalar splits on commas; absent → undefined.
|
|
62
54
|
export function asStringArray(value) {
|
|
63
55
|
if (Array.isArray(value))
|
|
64
56
|
return value;
|
|
@@ -67,4 +59,3 @@ export function asStringArray(value) {
|
|
|
67
59
|
}
|
|
68
60
|
return undefined;
|
|
69
61
|
}
|
|
70
|
-
//# sourceMappingURL=frontmatter.js.map
|
package/dist/fs-tools.js
CHANGED
|
@@ -1,6 +1,3 @@
|
|
|
1
|
-
// Read/write filesystem tools, modeled on Claude Code's Read/Write. Every tool is scoped to a
|
|
2
|
-
// `cwd` (the active worktree) and rejects paths that escape it via the shared `resolveInside`
|
|
3
|
-
// guard. AI-SDK `Tool`-shaped so they drop straight into a subagent's tool set.
|
|
4
1
|
import { createReadStream } from 'node:fs';
|
|
5
2
|
import { readFile as fsReadFile, writeFile as fsWriteFile, mkdir } from 'node:fs/promises';
|
|
6
3
|
import { dirname } from 'node:path';
|
|
@@ -8,8 +5,6 @@ import { createInterface } from 'node:readline';
|
|
|
8
5
|
import { tool } from 'ai';
|
|
9
6
|
import { z } from 'zod';
|
|
10
7
|
import { resolveInside } from "./safe-path.js";
|
|
11
|
-
// offset is a 1-based starting line; limit is the max number of lines to return. Both optional
|
|
12
|
-
// — omitting them reads the whole file. Mirrors Claude Code's Read line window.
|
|
13
8
|
const readFileInputSchema = z.object({
|
|
14
9
|
path: z.string().min(1),
|
|
15
10
|
offset: z.number().int().positive().optional(),
|
|
@@ -25,8 +20,6 @@ export function readFileTool(init) {
|
|
|
25
20
|
inputSchema: readFileInputSchema,
|
|
26
21
|
execute: async (input) => {
|
|
27
22
|
const safe = await resolveInside(init.cwd, input.path);
|
|
28
|
-
// Whole-file read returns the bytes verbatim; a windowed read streams line-by-line so a
|
|
29
|
-
// small window of a huge file doesn't pull the whole thing into memory.
|
|
30
23
|
if (input.offset === undefined && input.limit === undefined) {
|
|
31
24
|
return { content: await fsReadFile(safe, 'utf8') };
|
|
32
25
|
}
|
|
@@ -46,10 +39,6 @@ export function writeFileTool(init) {
|
|
|
46
39
|
},
|
|
47
40
|
});
|
|
48
41
|
}
|
|
49
|
-
// Stream the [offset, offset+limit) line window (1-based offset) without reading the whole file.
|
|
50
|
-
// readline strips line terminators, so when the window runs to the end of the file we re-attach a
|
|
51
|
-
// trailing newline — matching the whole-file read for to-EOF windows. A window capped early by
|
|
52
|
-
// `limit` returns just the joined lines (no trailing terminator).
|
|
53
42
|
async function readWindow(path, offset, limit) {
|
|
54
43
|
const start = offset ?? 1;
|
|
55
44
|
const stream = createReadStream(path, { encoding: 'utf8' });
|
|
@@ -76,4 +65,3 @@ async function readWindow(path, offset, limit) {
|
|
|
76
65
|
stream.destroy();
|
|
77
66
|
}
|
|
78
67
|
}
|
|
79
|
-
//# sourceMappingURL=fs-tools.js.map
|
package/dist/index.d.ts
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
export { type AgentDefinition, claudeDirs, loadAgents } from './agents-loader.ts';
|
|
2
|
-
export { type
|
|
2
|
+
export { type BackgroundBashInput, type BackgroundBashOutput, type BackgroundProcessInit, type BackgroundProcessTools, type BashOutputInput, backgroundProcessTools, type KillBashInput, type KillBashOutput, type ListBackgroundOutput, ProcessManager, type ProcessOutput, type ProcessStatus, type SpawnFn, } from './background-process.ts';
|
|
3
|
+
export { type BashInput, type BashOutput, type BashToolInit, bashTool, type MultiBashInput, type MultiBashOutput, multiBashTool, } from './bash-tool.ts';
|
|
3
4
|
export { applyEdit, type EditFileInput, type EditFileOutput, type EditSpec, editFileTool, type MultiEditInput, type MultiEditOutput, multiEditTool, } from './edit-tools.ts';
|
|
4
5
|
export { type EnvInfo, envBlock } from './env-block.ts';
|
|
5
6
|
export { asString, asStringArray, type Frontmatter, type FrontmatterValue, parseFrontmatter, } from './frontmatter.ts';
|
package/dist/index.js
CHANGED
|
@@ -1,8 +1,6 @@
|
|
|
1
|
-
// Public API for @developerz.ai/ai-claude-compat. Claude-Code-style agent primitives for the
|
|
2
|
-
// Vercel AI SDK: cwd-scoped FS/edit/search/shell tools, an <env> system-context block, and
|
|
3
|
-
// .claude/ skills + agents loading.
|
|
4
1
|
export { claudeDirs, loadAgents } from "./agents-loader.js";
|
|
5
|
-
export {
|
|
2
|
+
export { backgroundProcessTools, ProcessManager, } from "./background-process.js";
|
|
3
|
+
export { bashTool, multiBashTool, } from "./bash-tool.js";
|
|
6
4
|
export { applyEdit, editFileTool, multiEditTool, } from "./edit-tools.js";
|
|
7
5
|
export { envBlock } from "./env-block.js";
|
|
8
6
|
export { asString, asStringArray, parseFrontmatter, } from "./frontmatter.js";
|
|
@@ -11,4 +9,3 @@ export { resolveInside } from "./safe-path.js";
|
|
|
11
9
|
export { globTool, globToRegExp, grepTool, } from "./search-tools.js";
|
|
12
10
|
export { loadSkills } from "./skills-loader.js";
|
|
13
11
|
export { composeSystemPrompt, createSubagent } from "./subagent.js";
|
|
14
|
-
//# sourceMappingURL=index.js.map
|
package/dist/safe-path.js
CHANGED
|
@@ -1,15 +1,5 @@
|
|
|
1
|
-
// Confine a requested path to a root directory. Every FS tool in this lib is exposed to a
|
|
2
|
-
// fallible LLM and may run against the user's real repo (not a sandbox), so a missing path
|
|
3
|
-
// check is an arbitrary read/write primitive — same severity as a path-traversal CVE in a web
|
|
4
|
-
// app. The guard uses two layers: (1) a cheap pre-resolve string check via `path.relative`
|
|
5
|
-
// that rejects `../`-style escapes, and (2) a realpath of the closest existing ancestor that
|
|
6
|
-
// defeats symlink trickery. We can't realpath the target itself (it may not exist yet for a
|
|
7
|
-
// write), so we realpath the parent and re-check the relative path from there.
|
|
8
1
|
import { realpath } from 'node:fs/promises';
|
|
9
2
|
import { dirname, isAbsolute, relative, resolve, sep } from 'node:path';
|
|
10
|
-
// Resolve `requested` against `root` and assert the result stays inside `root`. Accepts a
|
|
11
|
-
// relative path (resolved against root) or an absolute path (must still be inside root).
|
|
12
|
-
// Throws if the path escapes, by string or via symlink.
|
|
13
3
|
export async function resolveInside(root, requested) {
|
|
14
4
|
const absRoot = resolve(root);
|
|
15
5
|
const target = isAbsolute(requested) ? resolve(requested) : resolve(absRoot, requested);
|
|
@@ -27,17 +17,12 @@ function escapesRoot(root, target) {
|
|
|
27
17
|
const rel = relative(root, target);
|
|
28
18
|
if (rel === '')
|
|
29
19
|
return false;
|
|
30
|
-
// Only a real parent-traversal token escapes — not an in-root name that merely starts with
|
|
31
|
-
// ".." (e.g. "..cache/file").
|
|
32
20
|
if (rel === '..' || rel.startsWith(`..${sep}`))
|
|
33
21
|
return true;
|
|
34
22
|
if (isAbsolute(rel))
|
|
35
23
|
return true;
|
|
36
24
|
return false;
|
|
37
25
|
}
|
|
38
|
-
// Only a genuinely-absent path (ENOENT) may fall back to the string form. EACCES/ELOOP/EIO and
|
|
39
|
-
// the like must propagate — swallowing them would silently downgrade the symlink guard to the
|
|
40
|
-
// weaker string-only check.
|
|
41
26
|
function isEnoent(err) {
|
|
42
27
|
return typeof err === 'object' && err !== null && err.code === 'ENOENT';
|
|
43
28
|
}
|
|
@@ -51,8 +36,6 @@ async function safeRealpath(p) {
|
|
|
51
36
|
throw err;
|
|
52
37
|
}
|
|
53
38
|
}
|
|
54
|
-
// Walk up `target`'s ancestors until one exists, realpath it, then re-attach the
|
|
55
|
-
// non-existing suffix. Lets us safely check would-be-created paths.
|
|
56
39
|
async function realpathOfExisting(target) {
|
|
57
40
|
try {
|
|
58
41
|
return await realpath(target);
|
|
@@ -68,4 +51,3 @@ async function realpathOfExisting(target) {
|
|
|
68
51
|
return resolve(realParent, suffix);
|
|
69
52
|
}
|
|
70
53
|
}
|
|
71
|
-
//# sourceMappingURL=safe-path.js.map
|
package/dist/search-tools.js
CHANGED
|
@@ -1,7 +1,3 @@
|
|
|
1
|
-
// Portable search tools, modeled on how Claude Code uses ripgrep + glob — but implemented in
|
|
2
|
-
// pure node so there's no `rg` dependency (it may be absent) and no reliance on `fs.glob`
|
|
3
|
-
// (not on Node 20). Both walk the tree under a cwd-confined root, skipping `.git` and
|
|
4
|
-
// `node_modules`, following no symlinks (which keeps the walk inside the worktree and loop-free).
|
|
5
1
|
import { readFile as fsReadFile, readdir, stat } from 'node:fs/promises';
|
|
6
2
|
import { join, relative, sep } from 'node:path';
|
|
7
3
|
import { tool } from 'ai';
|
|
@@ -10,8 +6,6 @@ import { resolveInside } from "./safe-path.js";
|
|
|
10
6
|
const DEFAULT_MAX_RESULTS = 200;
|
|
11
7
|
const GLOB_MAX_FILES = 2000;
|
|
12
8
|
const MAX_FILE_BYTES = 5_000_000;
|
|
13
|
-
// Regex metacharacters escaped to literals when translating a glob (a Set, not a string, so the
|
|
14
|
-
// `${` pair doesn't read as a template placeholder).
|
|
15
9
|
const REGEX_META = new Set(['.', '+', '^', '$', '{', '}', '(', ')', '|', '[', ']', '\\']);
|
|
16
10
|
const grepInputSchema = z.object({
|
|
17
11
|
pattern: z.string().min(1),
|
|
@@ -53,7 +47,7 @@ export function grepTool(init) {
|
|
|
53
47
|
break outer;
|
|
54
48
|
}
|
|
55
49
|
if (input.filesWithMatches)
|
|
56
|
-
continue outer;
|
|
50
|
+
continue outer;
|
|
57
51
|
}
|
|
58
52
|
}
|
|
59
53
|
return { matches, truncated };
|
|
@@ -83,15 +77,10 @@ export function globTool(init) {
|
|
|
83
77
|
},
|
|
84
78
|
});
|
|
85
79
|
}
|
|
86
|
-
// Depth-first walk yielding regular files only. `rel` is POSIX-style and relative to `cwd`
|
|
87
|
-
// (so a caller's glob/regex sees forward slashes regardless of platform). Symlinks are not
|
|
88
|
-
// followed — that confines the walk to the worktree and avoids cycles.
|
|
89
80
|
async function* walk(dir, cwd) {
|
|
90
81
|
const entries = await readdir(dir, { withFileTypes: true }).catch(() => null);
|
|
91
82
|
if (entries === null)
|
|
92
83
|
return;
|
|
93
|
-
// readdir order is filesystem-dependent; sort so capped grep/glob results (and which entries
|
|
94
|
-
// survive maxResults) stay deterministic across environments.
|
|
95
84
|
entries.sort((a, b) => a.name.localeCompare(b.name));
|
|
96
85
|
for (const entry of entries) {
|
|
97
86
|
if (entry.isSymbolicLink())
|
|
@@ -114,7 +103,7 @@ async function readTextOrSkip(abs) {
|
|
|
114
103
|
return null;
|
|
115
104
|
const text = await fsReadFile(abs, 'utf8');
|
|
116
105
|
if (text.includes(String.fromCharCode(0)))
|
|
117
|
-
return null;
|
|
106
|
+
return null;
|
|
118
107
|
return text;
|
|
119
108
|
}
|
|
120
109
|
catch {
|
|
@@ -129,9 +118,6 @@ function compileRegExp(pattern, flags) {
|
|
|
129
118
|
throw new Error(`invalid regular expression: ${err.message}`);
|
|
130
119
|
}
|
|
131
120
|
}
|
|
132
|
-
// Convert a glob to an anchored RegExp. Supports `**` (any run of path segments, incl. zero),
|
|
133
|
-
// `*` (any run within one segment), `?` (one non-slash char). Other regex metacharacters are
|
|
134
|
-
// escaped so they match literally.
|
|
135
121
|
export function globToRegExp(glob) {
|
|
136
122
|
let re = '';
|
|
137
123
|
for (let i = 0; i < glob.length; i++) {
|
|
@@ -141,14 +127,14 @@ export function globToRegExp(glob) {
|
|
|
141
127
|
i++;
|
|
142
128
|
if (glob[i + 1] === '/') {
|
|
143
129
|
i++;
|
|
144
|
-
re += '(?:[^/]+/)*';
|
|
130
|
+
re += '(?:[^/]+/)*';
|
|
145
131
|
}
|
|
146
132
|
else {
|
|
147
|
-
re += '.*';
|
|
133
|
+
re += '.*';
|
|
148
134
|
}
|
|
149
135
|
}
|
|
150
136
|
else {
|
|
151
|
-
re += '[^/]*';
|
|
137
|
+
re += '[^/]*';
|
|
152
138
|
}
|
|
153
139
|
}
|
|
154
140
|
else if (c === '?') {
|
|
@@ -163,4 +149,3 @@ export function globToRegExp(glob) {
|
|
|
163
149
|
}
|
|
164
150
|
return new RegExp(`^${re}$`);
|
|
165
151
|
}
|
|
166
|
-
//# sourceMappingURL=search-tools.js.map
|
package/dist/skills-loader.js
CHANGED
|
@@ -1,11 +1,6 @@
|
|
|
1
|
-
// Discover Claude-Code-style skills: `<claudeDir>/skills/<name>/SKILL.md`, each with YAML
|
|
2
|
-
// frontmatter (name, description) + a markdown body of instructions. Mirrors how the harness
|
|
3
|
-
// scans `.claude/skills/` (see claude-code-knowledge skills-and-subagents.md).
|
|
4
1
|
import { readdir, readFile } from 'node:fs/promises';
|
|
5
2
|
import { join } from 'node:path';
|
|
6
3
|
import { asString, parseFrontmatter } from "./frontmatter.js";
|
|
7
|
-
// Load every skill under `<claudeDir>/skills/*/SKILL.md`. `claudeDir` is a `.claude` directory.
|
|
8
|
-
// A missing dir yields []; a skill folder without a SKILL.md is skipped. Sorted by name.
|
|
9
4
|
export async function loadSkills(claudeDir) {
|
|
10
5
|
const skillsDir = join(claudeDir, 'skills');
|
|
11
6
|
const entries = await readdir(skillsDir, { withFileTypes: true }).catch(() => null);
|
|
@@ -30,4 +25,3 @@ export async function loadSkills(claudeDir) {
|
|
|
30
25
|
skills.sort((a, b) => a.name.localeCompare(b.name));
|
|
31
26
|
return skills;
|
|
32
27
|
}
|
|
33
|
-
//# sourceMappingURL=skills-loader.js.map
|
package/dist/subagent.js
CHANGED
|
@@ -1,18 +1,9 @@
|
|
|
1
|
-
// Provider-agnostic subagent scaffolding for the Vercel AI SDK: compose a system prompt with an
|
|
2
|
-
// <env> block, and wrap the `ToolLoopAgent` construction (the subagents-as-tools pattern) behind
|
|
3
|
-
// a single factory so callers don't repeat the model/tools/instructions/stopWhen boilerplate.
|
|
4
1
|
import { stepCountIs, ToolLoopAgent } from 'ai';
|
|
5
2
|
import { envBlock } from "./env-block.js";
|
|
6
|
-
// Build a subagent system prompt: caller style/context + role prefix + an <env> system-context
|
|
7
|
-
// block (so the model knows the worktree cwd, platform, runtime, date). The cwd is per-worktree,
|
|
8
|
-
// so this is composed at the wiring site rather than baked into a static role prefix. Pass a
|
|
9
|
-
// string cwd for the common case, or a full EnvInfo to control the git/date fields.
|
|
10
3
|
export function composeSystemPrompt(style, rolePrefix, env) {
|
|
11
4
|
const info = typeof env === 'string' ? { cwd: env, isGitRepo: true } : env;
|
|
12
5
|
return `${style}${rolePrefix}\n${envBlock(info)}`;
|
|
13
6
|
}
|
|
14
|
-
// Wrap a ToolLoopAgent. Maps systemPrompt → instructions and maxSteps → a stepCountIs stop
|
|
15
|
-
// condition, so each concrete subagent factory is a one-liner over its own tools + output type.
|
|
16
7
|
export function createSubagent(config, defaultMaxSteps) {
|
|
17
8
|
return new ToolLoopAgent({
|
|
18
9
|
model: config.model,
|
|
@@ -22,4 +13,3 @@ export function createSubagent(config, defaultMaxSteps) {
|
|
|
22
13
|
stopWhen: stepCountIs(config.maxSteps ?? defaultMaxSteps),
|
|
23
14
|
});
|
|
24
15
|
}
|
|
25
|
-
//# sourceMappingURL=subagent.js.map
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@developerz.ai/ai-claude-compat",
|
|
3
|
-
"version": "0.0.
|
|
3
|
+
"version": "0.0.4",
|
|
4
4
|
"description": "Claude-Code-style agent primitives for the Vercel AI SDK: FS/bash tools, an <env> system-context block, a subagent-as-tool factory, and .claude/ skills/agents loading.",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"type": "module",
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"agents-loader.js","sourceRoot":"","sources":["../src/agents-loader.ts"],"names":[],"mappings":"AAAA,6FAA6F;AAC7F,8FAA8F;AAC9F,4FAA4F;AAC5F,4FAA4F;AAE5F,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AACrD,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAClC,OAAO,EAAE,QAAQ,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAC3C,OAAO,EAAE,QAAQ,EAAE,aAAa,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AAe7E,0FAA0F;AAC1F,2CAA2C;AAC3C,MAAM,CAAC,KAAK,UAAU,UAAU,CAAC,SAAiB;IAChD,MAAM,SAAS,GAAG,IAAI,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAC;IAC5C,MAAM,OAAO,GAAG,MAAM,OAAO,CAAC,SAAS,EAAE,EAAE,aAAa,EAAE,IAAI,EAAE,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,CAAC;IACpF,IAAI,OAAO,KAAK,IAAI;QAAE,OAAO,EAAE,CAAC;IAEhC,MAAM,MAAM,GAAsB,EAAE,CAAC;IACrC,KAAK,MAAM,KAAK,IAAI,OAAO,EAAE,CAAC;QAC5B,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC;YAAE,SAAS;QAC7D,MAAM,IAAI,GAAG,IAAI,CAAC,SAAS,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC;QACzC,MAAM,OAAO,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,CAAC;QAC/D,IAAI,OAAO,KAAK,IAAI;YAAE,SAAS;QAC/B,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,gBAAgB,CAAC,OAAO,CAAC,CAAC;QACjD,MAAM,GAAG,GAAoB;YAC3B,IAAI,EAAE,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,QAAQ,CAAC,KAAK,CAAC,IAAI,EAAE,KAAK,CAAC;YACxD,WAAW,EAAE,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC;YACvC,YAAY,EAAE,IAAI,CAAC,IAAI,EAAE;YACzB,IAAI;SACL,CAAC;QACF,MAAM,KAAK,GAAG,aAAa,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QACxC,IAAI,KAAK;YAAE,GAAG,CAAC,KAAK,GAAG,KAAK,CAAC;QAC7B,MAAM,KAAK,GAAG,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QACnC,IAAI,KAAK;YAAE,GAAG,CAAC,KAAK,GAAG,KAAK,CAAC;QAC7B,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IACnB,CAAC;IACD,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;IACpD,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,sFAAsF;AACtF,+FAA+F;AAC/F,6BAA6B;AAC7B,MAAM,UAAU,UAAU,CAAC,GAAW;IACpC,OAAO,CAAC,IAAI,CAAC,OAAO,EAAE,EAAE,SAAS,CAAC,EAAE,IAAI,CAAC,GAAG,EAAE,SAAS,CAAC,CAAC,CAAC;AAC5D,CAAC"}
|
package/dist/bash-tool.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"bash-tool.js","sourceRoot":"","sources":["../src/bash-tool.ts"],"names":[],"mappings":"AAAA,+FAA+F;AAC/F,6FAA6F;AAC7F,4FAA4F;AAC5F,6FAA6F;AAC7F,4FAA4F;AAC5F,gDAAgD;AAEhD,OAAO,EAAa,IAAI,EAAE,MAAM,IAAI,CAAC;AACrC,OAAO,EAAE,UAAU,EAAE,KAAK,EAAE,MAAM,OAAO,CAAC;AAC1C,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,MAAM,eAAe,GAAG,CAAC,CAAC,MAAM,CAAC;IAC/B,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;IAC1B,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,EAAE;CAClD,CAAC,CAAC;AAkBH,MAAM,uBAAuB,GAAG,MAAM,CAAC;AACvC,iGAAiG;AACjG,wFAAwF;AACxF,MAAM,mBAAmB,GAAG,OAAO,CAAC;AAEpC,MAAM,UAAU,QAAQ,CAAC,IAAkB;IACzC,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,IAAI,KAAK,CAAC;IAChC,MAAM,cAAc,GAAG,IAAI,CAAC,gBAAgB,IAAI,uBAAuB,CAAC;IACxE,OAAO,IAAI,CAAC;QACV,WAAW,EACT,kKAAkK;QACpK,WAAW,EAAE,eAAe;QAC5B,OAAO,EAAE,KAAK,EAAE,KAAK,EAAuB,EAAE;YAC5C,MAAM,OAAO,GAAG,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,SAAS,IAAI,cAAc,EAAE,mBAAmB,CAAC,CAAC;YACjF,IAAI,CAAC;gBACH,gFAAgF;gBAChF,sFAAsF;gBACtF,wFAAwF;gBACxF,iDAAiD;gBACjD,MAAM,CAAC,GAAG,MAAM,IAAI,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE,KAAK,CAAC,OAAO,CAAC,EAAE;oBAClD,GAAG,EAAE,IAAI,CAAC,GAAG;oBACb,OAAO;oBACP,GAAG,EAAE,EAAE,GAAG,OAAO,CAAC,GAAG,EAAE,QAAQ,EAAE,EAAE,EAAE;iBACtC,CAAC,CAAC;gBACH,OAAO;oBACL,MAAM,EAAE,OAAO,CAAC,CAAC,MAAM,KAAK,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE;oBACpD,MAAM,EAAE,OAAO,CAAC,CAAC,MAAM,KAAK,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE;oBACpD,QAAQ,EAAE,CAAC,CAAC,QAAQ,IAAI,CAAC;iBAC1B,CAAC;YACJ,CAAC;YAAC,OAAO,GAAG,EAAE,CAAC;gBACb,IAAI,GAAG,YAAY,UAAU,EAAE,CAAC;oBAC9B,OAAO;wBACL,MAAM,EAAE,OAAO,GAAG,CAAC,MAAM,KAAK,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE;wBACxD,MAAM,EAAE,OAAO,GAAG,CAAC,MAAM,KAAK,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO;wBACjE,QAAQ,EAAE,GAAG,CAAC,QAAQ,IAAI,CAAC;qBAC5B,CAAC;gBACJ,CAAC;gBACD,uFAAuF;gBACvF,4DAA4D;gBAC5D,OAAO;oBACL,MAAM,EAAE,EAAE;oBACV,MAAM,EAAE,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC;oBACxD,QAAQ,EAAE,CAAC;iBACZ,CAAC;YACJ,CAAC;QACH,CAAC;KACF,CAAC,CAAC;AACL,CAAC"}
|
package/dist/edit-tools.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"edit-tools.js","sourceRoot":"","sources":["../src/edit-tools.ts"],"names":[],"mappings":"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"}
|
package/dist/env-block.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"env-block.js","sourceRoot":"","sources":["../src/env-block.ts"],"names":[],"mappings":"AAAA,yFAAyF;AACzF,2FAA2F;AAE3F,OAAO,EAAE,IAAI,IAAI,MAAM,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AASlD,SAAS,YAAY;IACnB,MAAM,CAAC,GAAG,OAAO,CAAC,QAA8C,CAAC;IACjE,IAAI,CAAC,CAAC,GAAG;QAAE,OAAO,OAAO,CAAC,CAAC,GAAG,EAAE,CAAC;IACjC,IAAI,CAAC,CAAC,IAAI;QAAE,OAAO,QAAQ,CAAC,CAAC,IAAI,EAAE,CAAC;IACpC,OAAO,QAAQ,OAAO,CAAC,OAAO,EAAE,CAAC;AACnC,CAAC;AAED,MAAM,UAAU,QAAQ,CAAC,IAAa;IACpC,MAAM,KAAK,GAAG;QACZ,OAAO;QACP,sBAAsB,IAAI,CAAC,GAAG,EAAE;QAChC,GAAG,CAAC,IAAI,CAAC,SAAS,KAAK,SAAS;YAC9B,CAAC,CAAC,EAAE;YACJ,CAAC,CAAC,CAAC,4BAA4B,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC;QAClE,aAAa,OAAO,CAAC,QAAQ,EAAE;QAC/B,eAAe,OAAO,EAAE,EAAE;QAC1B,SAAS,MAAM,EAAE,EAAE;QACnB,UAAU,OAAO,CAAC,GAAG,CAAC,KAAK,IAAI,EAAE,EAAE;QACnC,YAAY,YAAY,EAAE,EAAE;QAC5B,iBAAiB,IAAI,CAAC,IAAI,IAAI,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE;QACrE,QAAQ;KACT,CAAC;IACF,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC1B,CAAC"}
|
package/dist/frontmatter.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"frontmatter.js","sourceRoot":"","sources":["../src/frontmatter.ts"],"names":[],"mappings":"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"}
|
package/dist/fs-tools.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"fs-tools.js","sourceRoot":"","sources":["../src/fs-tools.ts"],"names":[],"mappings":"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"}
|
package/dist/index.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,6FAA6F;AAC7F,2FAA2F;AAC3F,oCAAoC;AAEpC,OAAO,EAAwB,UAAU,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAClF,OAAO,EAAsD,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAC9F,OAAO,EACL,SAAS,EAIT,YAAY,EAGZ,aAAa,GACd,MAAM,iBAAiB,CAAC;AACzB,OAAO,EAAgB,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AACxD,OAAO,EACL,QAAQ,EACR,aAAa,EAGb,gBAAgB,GACjB,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EAGL,YAAY,EAIZ,aAAa,GACd,MAAM,eAAe,CAAC;AACvB,OAAO,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;AAC/C,OAAO,EAKL,QAAQ,EACR,YAAY,EACZ,QAAQ,GACT,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EAAE,UAAU,EAAwB,MAAM,oBAAoB,CAAC;AACtE,OAAO,EAAE,mBAAmB,EAAE,cAAc,EAAuB,MAAM,eAAe,CAAC"}
|
package/dist/safe-path.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"safe-path.js","sourceRoot":"","sources":["../src/safe-path.ts"],"names":[],"mappings":"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"}
|
package/dist/search-tools.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"search-tools.js","sourceRoot":"","sources":["../src/search-tools.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"skills-loader.js","sourceRoot":"","sources":["../src/skills-loader.ts"],"names":[],"mappings":"AAAA,0FAA0F;AAC1F,6FAA6F;AAC7F,+EAA+E;AAE/E,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AACrD,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,QAAQ,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AAW9D,gGAAgG;AAChG,yFAAyF;AACzF,MAAM,CAAC,KAAK,UAAU,UAAU,CAAC,SAAiB;IAChD,MAAM,SAAS,GAAG,IAAI,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAC;IAC5C,MAAM,OAAO,GAAG,MAAM,OAAO,CAAC,SAAS,EAAE,EAAE,aAAa,EAAE,IAAI,EAAE,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,CAAC;IACpF,IAAI,OAAO,KAAK,IAAI;QAAE,OAAO,EAAE,CAAC;IAEhC,MAAM,MAAM,GAAsB,EAAE,CAAC;IACrC,KAAK,MAAM,KAAK,IAAI,OAAO,EAAE,CAAC;QAC5B,IAAI,CAAC,KAAK,CAAC,WAAW,EAAE;YAAE,SAAS;QACnC,MAAM,IAAI,GAAG,IAAI,CAAC,SAAS,EAAE,KAAK,CAAC,IAAI,EAAE,UAAU,CAAC,CAAC;QACrD,MAAM,OAAO,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,CAAC;QAC/D,IAAI,OAAO,KAAK,IAAI;YAAE,SAAS;QAC/B,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,gBAAgB,CAAC,OAAO,CAAC,CAAC;QACjD,MAAM,CAAC,IAAI,CAAC;YACV,IAAI,EAAE,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,KAAK,CAAC,IAAI;YACvC,WAAW,EAAE,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC;YACvC,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE;YACjB,IAAI;SACL,CAAC,CAAC;IACL,CAAC;IACD,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;IACpD,OAAO,MAAM,CAAC;AAChB,CAAC"}
|
package/dist/subagent.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"subagent.js","sourceRoot":"","sources":["../src/subagent.ts"],"names":[],"mappings":"AAAA,gGAAgG;AAChG,iGAAiG;AACjG,8FAA8F;AAE9F,OAAO,EAAmC,WAAW,EAAE,aAAa,EAAgB,MAAM,IAAI,CAAC;AAC/F,OAAO,EAAgB,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAExD,+FAA+F;AAC/F,iGAAiG;AACjG,6FAA6F;AAC7F,oFAAoF;AACpF,MAAM,UAAU,mBAAmB,CACjC,KAAa,EACb,UAAkB,EAClB,GAAqB;IAErB,MAAM,IAAI,GAAY,OAAO,GAAG,KAAK,QAAQ,CAAC,CAAC,CAAC,EAAE,GAAG,EAAE,GAAG,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC;IACpF,OAAO,GAAG,KAAK,GAAG,UAAU,KAAK,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC;AACpD,CAAC;AAaD,2FAA2F;AAC3F,gGAAgG;AAChG,MAAM,UAAU,cAAc,CAC5B,MAAqC,EACrC,eAAuB;IAEvB,OAAO,IAAI,aAAa,CAAuB;QAC7C,KAAK,EAAE,MAAM,CAAC,KAAK;QACnB,KAAK,EAAE,MAAM,CAAC,KAAK;QACnB,YAAY,EAAE,MAAM,CAAC,YAAY;QACjC,MAAM,EAAE,MAAM,CAAC,MAAM;QACrB,QAAQ,EAAE,WAAW,CAAC,MAAM,CAAC,QAAQ,IAAI,eAAe,CAAC;KAC1D,CAAC,CAAC;AACL,CAAC"}
|