@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 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, // streaming shell, scoped to cwd
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: readFileTool({ cwd }),
39
- write: writeFileTool({ cwd }),
40
- edit: editFileTool({ cwd }),
41
- bash: bashTool({ cwd }),
42
- grep: grepTool({ cwd }),
43
- glob: globTool({ cwd }),
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` | Streaming shell tool, scoped to cwd |
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)
@@ -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
+ }
@@ -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
- try {
27
- // Plain `-c`, not a login shell (`-lc`): a login shell sources /etc/profile and
28
- // ~/.bash_profile, which in CI can `cd` away from `cwd` before the command runs. Also
29
- // scrub BASH_ENV even a non-login `bash -c` sources the file it points to at startup,
30
- // which could `cd` away and defeat the cwd lock.
31
- const r = await exec('bash', ['-c', input.command], {
32
- cwd: init.cwd,
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
@@ -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
@@ -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 BashInput, type BashOutput, type BashToolInit, bashTool } from './bash-tool.ts';
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 { bashTool } from "./bash-tool.js";
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
@@ -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; // one entry per file
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; // crude binary guard: NUL byte
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 += '(?:[^/]+/)*'; // `**/` — zero or more directories
130
+ re += '(?:[^/]+/)*';
145
131
  }
146
132
  else {
147
- re += '.*'; // `**` — anything, including slashes
133
+ re += '.*';
148
134
  }
149
135
  }
150
136
  else {
151
- re += '[^/]*'; // `*` — within a segment
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
@@ -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.2",
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"}
@@ -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"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"edit-tools.js","sourceRoot":"","sources":["../src/edit-tools.ts"],"names":[],"mappings":"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"}
@@ -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"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"frontmatter.js","sourceRoot":"","sources":["../src/frontmatter.ts"],"names":[],"mappings":"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"}
@@ -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"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"safe-path.js","sourceRoot":"","sources":["../src/safe-path.ts"],"names":[],"mappings":"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"}
@@ -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"}
@@ -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"}