@agentex/agent 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 +405 -87
- package/dist/index.d.ts +18 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +11 -0
- package/dist/index.js.map +1 -1
- package/dist/providers/claude/execute.d.ts.map +1 -1
- package/dist/providers/claude/execute.js +51 -18
- package/dist/providers/claude/execute.js.map +1 -1
- package/dist/providers/claude/index.d.ts.map +1 -1
- package/dist/providers/claude/index.js +37 -8
- package/dist/providers/claude/index.js.map +1 -1
- package/dist/providers/claude/parse.d.ts.map +1 -1
- package/dist/providers/claude/parse.js +2 -1
- package/dist/providers/claude/parse.js.map +1 -1
- package/dist/providers/claude/session.d.ts +10 -0
- package/dist/providers/claude/session.d.ts.map +1 -0
- package/dist/providers/claude/session.js +549 -0
- package/dist/providers/claude/session.js.map +1 -0
- package/dist/providers/claude/test.d.ts.map +1 -1
- package/dist/providers/claude/test.js +38 -11
- package/dist/providers/claude/test.js.map +1 -1
- package/dist/providers/codex/execute.d.ts.map +1 -1
- package/dist/providers/codex/execute.js +122 -74
- package/dist/providers/codex/execute.js.map +1 -1
- package/dist/providers/codex/index.d.ts.map +1 -1
- package/dist/providers/codex/index.js +56 -2
- package/dist/providers/codex/index.js.map +1 -1
- package/dist/providers/codex/parse.d.ts.map +1 -1
- package/dist/providers/codex/parse.js +25 -3
- package/dist/providers/codex/parse.js.map +1 -1
- package/dist/providers/codex/session.d.ts +3 -0
- package/dist/providers/codex/session.d.ts.map +1 -0
- package/dist/providers/codex/session.js +553 -0
- package/dist/providers/codex/session.js.map +1 -0
- package/dist/providers/codex/test.d.ts.map +1 -1
- package/dist/providers/codex/test.js +28 -12
- package/dist/providers/codex/test.js.map +1 -1
- package/dist/providers/codex/usage-scanner.d.ts +18 -0
- package/dist/providers/codex/usage-scanner.d.ts.map +1 -0
- package/dist/providers/codex/usage-scanner.js +148 -0
- package/dist/providers/codex/usage-scanner.js.map +1 -0
- package/dist/providers/cursor/codec.d.ts +3 -0
- package/dist/providers/cursor/codec.d.ts.map +1 -0
- package/dist/providers/cursor/codec.js +43 -0
- package/dist/providers/cursor/codec.js.map +1 -0
- package/dist/providers/cursor/execute.d.ts +3 -0
- package/dist/providers/cursor/execute.d.ts.map +1 -0
- package/dist/providers/cursor/execute.js +248 -0
- package/dist/providers/cursor/execute.js.map +1 -0
- package/dist/providers/cursor/index.d.ts +3 -0
- package/dist/providers/cursor/index.d.ts.map +1 -0
- package/dist/providers/cursor/index.js +28 -0
- package/dist/providers/cursor/index.js.map +1 -0
- package/dist/providers/cursor/parse.d.ts +26 -0
- package/dist/providers/cursor/parse.d.ts.map +1 -0
- package/dist/providers/cursor/parse.js +224 -0
- package/dist/providers/cursor/parse.js.map +1 -0
- package/dist/providers/cursor/test.d.ts +3 -0
- package/dist/providers/cursor/test.d.ts.map +1 -0
- package/dist/providers/cursor/test.js +58 -0
- package/dist/providers/cursor/test.js.map +1 -0
- package/dist/providers/gemini/codec.d.ts +3 -0
- package/dist/providers/gemini/codec.d.ts.map +1 -0
- package/dist/providers/gemini/codec.js +47 -0
- package/dist/providers/gemini/codec.js.map +1 -0
- package/dist/providers/gemini/execute.d.ts +3 -0
- package/dist/providers/gemini/execute.d.ts.map +1 -0
- package/dist/providers/gemini/execute.js +236 -0
- package/dist/providers/gemini/execute.js.map +1 -0
- package/dist/providers/gemini/index.d.ts +3 -0
- package/dist/providers/gemini/index.d.ts.map +1 -0
- package/dist/providers/gemini/index.js +62 -0
- package/dist/providers/gemini/index.js.map +1 -0
- package/dist/providers/gemini/parse.d.ts +20 -0
- package/dist/providers/gemini/parse.d.ts.map +1 -0
- package/dist/providers/gemini/parse.js +207 -0
- package/dist/providers/gemini/parse.js.map +1 -0
- package/dist/providers/gemini/test.d.ts +3 -0
- package/dist/providers/gemini/test.d.ts.map +1 -0
- package/dist/providers/gemini/test.js +67 -0
- package/dist/providers/gemini/test.js.map +1 -0
- package/dist/providers/openclaw/execute.d.ts.map +1 -1
- package/dist/providers/openclaw/execute.js +10 -5
- package/dist/providers/openclaw/execute.js.map +1 -1
- package/dist/providers/openclaw/index.d.ts.map +1 -1
- package/dist/providers/openclaw/index.js +15 -2
- package/dist/providers/openclaw/index.js.map +1 -1
- package/dist/providers/openclaw/test.d.ts.map +1 -1
- package/dist/providers/openclaw/test.js +4 -0
- package/dist/providers/openclaw/test.js.map +1 -1
- package/dist/providers/opencode/codec.d.ts +3 -0
- package/dist/providers/opencode/codec.d.ts.map +1 -0
- package/dist/providers/opencode/codec.js +47 -0
- package/dist/providers/opencode/codec.js.map +1 -0
- package/dist/providers/opencode/execute.d.ts +3 -0
- package/dist/providers/opencode/execute.d.ts.map +1 -0
- package/dist/providers/opencode/execute.js +225 -0
- package/dist/providers/opencode/execute.js.map +1 -0
- package/dist/providers/opencode/index.d.ts +3 -0
- package/dist/providers/opencode/index.d.ts.map +1 -0
- package/dist/providers/opencode/index.js +62 -0
- package/dist/providers/opencode/index.js.map +1 -0
- package/dist/providers/opencode/parse.d.ts +19 -0
- package/dist/providers/opencode/parse.d.ts.map +1 -0
- package/dist/providers/opencode/parse.js +145 -0
- package/dist/providers/opencode/parse.js.map +1 -0
- package/dist/providers/opencode/test.d.ts +3 -0
- package/dist/providers/opencode/test.d.ts.map +1 -0
- package/dist/providers/opencode/test.js +60 -0
- package/dist/providers/opencode/test.js.map +1 -0
- package/dist/providers/pi/codec.d.ts +7 -0
- package/dist/providers/pi/codec.d.ts.map +1 -0
- package/dist/providers/pi/codec.js +45 -0
- package/dist/providers/pi/codec.js.map +1 -0
- package/dist/providers/pi/execute.d.ts +3 -0
- package/dist/providers/pi/execute.d.ts.map +1 -0
- package/dist/providers/pi/execute.js +300 -0
- package/dist/providers/pi/execute.js.map +1 -0
- package/dist/providers/pi/index.d.ts +3 -0
- package/dist/providers/pi/index.d.ts.map +1 -0
- package/dist/providers/pi/index.js +64 -0
- package/dist/providers/pi/index.js.map +1 -0
- package/dist/providers/pi/parse.d.ts +18 -0
- package/dist/providers/pi/parse.d.ts.map +1 -0
- package/dist/providers/pi/parse.js +182 -0
- package/dist/providers/pi/parse.js.map +1 -0
- package/dist/providers/pi/test.d.ts +3 -0
- package/dist/providers/pi/test.d.ts.map +1 -0
- package/dist/providers/pi/test.js +60 -0
- package/dist/providers/pi/test.js.map +1 -0
- package/dist/providers/process/execute.d.ts.map +1 -1
- package/dist/providers/process/execute.js +45 -7
- package/dist/providers/process/execute.js.map +1 -1
- package/dist/providers/process/index.d.ts.map +1 -1
- package/dist/providers/process/index.js +27 -30
- package/dist/providers/process/index.js.map +1 -1
- package/dist/registry.d.ts.map +1 -1
- package/dist/registry.js +8 -0
- package/dist/registry.js.map +1 -1
- package/dist/types.d.ts +379 -22
- package/dist/types.d.ts.map +1 -1
- package/dist/types.js +23 -1
- package/dist/types.js.map +1 -1
- package/dist/utils/ask-user-question.d.ts +50 -0
- package/dist/utils/ask-user-question.d.ts.map +1 -0
- package/dist/utils/ask-user-question.js +32 -0
- package/dist/utils/ask-user-question.js.map +1 -0
- package/dist/utils/auth.d.ts +22 -0
- package/dist/utils/auth.d.ts.map +1 -0
- package/dist/utils/auth.js +497 -0
- package/dist/utils/auth.js.map +1 -0
- package/dist/utils/binary.d.ts.map +1 -1
- package/dist/utils/binary.js +29 -6
- package/dist/utils/binary.js.map +1 -1
- package/dist/utils/env.d.ts.map +1 -1
- package/dist/utils/env.js +18 -0
- package/dist/utils/env.js.map +1 -1
- package/dist/utils/execute-all.d.ts +20 -0
- package/dist/utils/execute-all.d.ts.map +1 -0
- package/dist/utils/execute-all.js +46 -0
- package/dist/utils/execute-all.js.map +1 -0
- package/dist/utils/instructions.d.ts +7 -0
- package/dist/utils/instructions.d.ts.map +1 -0
- package/dist/utils/instructions.js +21 -0
- package/dist/utils/instructions.js.map +1 -0
- package/dist/utils/model-cache.d.ts +11 -0
- package/dist/utils/model-cache.d.ts.map +1 -0
- package/dist/utils/model-cache.js +17 -0
- package/dist/utils/model-cache.js.map +1 -0
- package/dist/utils/process.d.ts +4 -0
- package/dist/utils/process.d.ts.map +1 -1
- package/dist/utils/process.js +46 -5
- package/dist/utils/process.js.map +1 -1
- package/dist/utils/runtime-config.d.ts +34 -0
- package/dist/utils/runtime-config.d.ts.map +1 -0
- package/dist/utils/runtime-config.js +71 -0
- package/dist/utils/runtime-config.js.map +1 -0
- package/dist/utils/runtime-homes.d.ts +13 -0
- package/dist/utils/runtime-homes.d.ts.map +1 -0
- package/dist/utils/runtime-homes.js +41 -0
- package/dist/utils/runtime-homes.js.map +1 -0
- package/dist/utils/skills.d.ts +152 -1
- package/dist/utils/skills.d.ts.map +1 -1
- package/dist/utils/skills.js +352 -0
- package/dist/utils/skills.js.map +1 -1
- package/dist/utils/workspace.d.ts +55 -0
- package/dist/utils/workspace.d.ts.map +1 -0
- package/dist/utils/workspace.js +89 -0
- package/dist/utils/workspace.js.map +1 -0
- package/package.json +5 -2
package/README.md
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# @agentex/agent
|
|
2
2
|
|
|
3
|
-
Programmatic execution of AI coding agents. Spawn and manage Claude Code, Codex, OpenClaw, or any CLI-based agent as a child process with streaming output,
|
|
3
|
+
Programmatic execution of AI coding agents. Spawn and manage Claude Code, Codex, Gemini, Cursor, OpenCode, Pi, OpenClaw, or any CLI-based agent as a child process with streaming output, multi-turn sessions, auth detection, isolated workspaces, skill installation, and a unified interface.
|
|
4
4
|
|
|
5
5
|
## Install
|
|
6
6
|
|
|
@@ -8,6 +8,8 @@ Programmatic execution of AI coding agents. Spawn and manage Claude Code, Codex,
|
|
|
8
8
|
npm install @agentex/agent
|
|
9
9
|
```
|
|
10
10
|
|
|
11
|
+
Node.js >= 18. Each provider requires its CLI to be installed and on `$PATH`.
|
|
12
|
+
|
|
11
13
|
## Quick Start
|
|
12
14
|
|
|
13
15
|
```typescript
|
|
@@ -28,21 +30,352 @@ const result = await claude.execute({
|
|
|
28
30
|
},
|
|
29
31
|
});
|
|
30
32
|
|
|
31
|
-
console.log(result.
|
|
33
|
+
console.log(result.status); // "completed"
|
|
32
34
|
console.log(result.summary); // "Added try/catch to all route handlers..."
|
|
33
35
|
console.log(result.durationMs); // 12340
|
|
34
36
|
console.log(result.costUsd); // 0.0342
|
|
35
|
-
console.log(result.usage); // { inputTokens: 1200, outputTokens: 350,
|
|
37
|
+
console.log(result.usage); // { "claude-sonnet-4-6": { inputTokens: 1200, outputTokens: 350, ... } }
|
|
36
38
|
```
|
|
37
39
|
|
|
38
40
|
## Built-in Providers
|
|
39
41
|
|
|
40
|
-
| Provider | CLI | Description
|
|
41
|
-
| ---------- | ---------------- |
|
|
42
|
-
| `claude` | `claude` | Claude Code (Anthropic)
|
|
43
|
-
| `codex` | `codex` | Codex CLI (OpenAI)
|
|
44
|
-
| `
|
|
45
|
-
| `
|
|
42
|
+
| Provider | CLI | Description |
|
|
43
|
+
| ---------- | ---------------- | ------------------------------------------- |
|
|
44
|
+
| `claude` | `claude` | Claude Code (Anthropic) |
|
|
45
|
+
| `codex` | `codex` | Codex CLI (OpenAI) |
|
|
46
|
+
| `gemini` | `gemini` | Gemini CLI (Google) |
|
|
47
|
+
| `cursor` | `agent` | Cursor CLI agent |
|
|
48
|
+
| `opencode` | `opencode` | OpenCode |
|
|
49
|
+
| `pi` | `pi` | Pi CLI |
|
|
50
|
+
| `openclaw` | gateway HTTP | OpenClaw HTTP-gateway agent |
|
|
51
|
+
| `process` | any executable | Generic process executor (arbitrary binary) |
|
|
52
|
+
|
|
53
|
+
Provider capabilities (sessions, skills, workspaces, MCP, model discovery, quota probing, instructions) are declared on each module's `capabilities` field — check `provider.capabilities` to branch on what's supported.
|
|
54
|
+
|
|
55
|
+
## Execution Context
|
|
56
|
+
|
|
57
|
+
Only `prompt` is required. Everything else has sensible defaults.
|
|
58
|
+
|
|
59
|
+
```typescript
|
|
60
|
+
interface ExecutionContext {
|
|
61
|
+
prompt: string;
|
|
62
|
+
model?: string;
|
|
63
|
+
runId?: string; // Auto-generated UUIDv7 if omitted
|
|
64
|
+
cwd?: string; // Defaults to process.cwd()
|
|
65
|
+
env?: Record<string, string>;
|
|
66
|
+
sessionParams?: Record<string, unknown> | null;
|
|
67
|
+
config?: ProviderConfig;
|
|
68
|
+
signal?: AbortSignal; // Cancellation — SIGTERM then SIGKILL after graceSec
|
|
69
|
+
onOutput?: (stream: "stdout" | "stderr", chunk: string) => void | Promise<void>;
|
|
70
|
+
onEvent?: (event: StreamEvent) => void | Promise<void>;
|
|
71
|
+
onStart?: (pid: number) => void;
|
|
72
|
+
onLifecycle?: (event: LifecycleEvent) => void;
|
|
73
|
+
}
|
|
74
|
+
```
|
|
75
|
+
|
|
76
|
+
`ProviderConfig` covers the knobs most providers accept:
|
|
77
|
+
|
|
78
|
+
```typescript
|
|
79
|
+
interface ProviderConfig {
|
|
80
|
+
command?: string; // Override CLI binary path
|
|
81
|
+
model?: string;
|
|
82
|
+
effort?: string;
|
|
83
|
+
maxTurns?: number;
|
|
84
|
+
timeoutSec?: number;
|
|
85
|
+
graceSec?: number;
|
|
86
|
+
skipPermissions?: boolean;
|
|
87
|
+
skillDirs?: string[];
|
|
88
|
+
instructionsFile?: string;
|
|
89
|
+
mcpServers?: McpServerConfig[];
|
|
90
|
+
extraArgs?: string[];
|
|
91
|
+
search?: boolean;
|
|
92
|
+
sandbox?: boolean;
|
|
93
|
+
thinking?: string;
|
|
94
|
+
mode?: string;
|
|
95
|
+
workspace?: { strategy: "worktree"; baseBranch?: string; branchName?: string };
|
|
96
|
+
}
|
|
97
|
+
```
|
|
98
|
+
|
|
99
|
+
## Execution Result
|
|
100
|
+
|
|
101
|
+
```typescript
|
|
102
|
+
interface ExecutionResult {
|
|
103
|
+
runId: string;
|
|
104
|
+
exitCode: number | null;
|
|
105
|
+
signal: string | null;
|
|
106
|
+
status: ExecutionStatus; // "completed" | "failed" | "aborted" | "timeout" | "blocked"
|
|
107
|
+
startedAt: string; // ISO timestamp
|
|
108
|
+
completedAt: string;
|
|
109
|
+
durationMs: number;
|
|
110
|
+
errorMessage: string | null;
|
|
111
|
+
errorCode: string | null;
|
|
112
|
+
usage?: Record<string, TokenUsage>; // keyed by model ID
|
|
113
|
+
costUsd: number | null;
|
|
114
|
+
model: string | null;
|
|
115
|
+
summary: string | null;
|
|
116
|
+
sessionParams: Record<string, unknown> | null;
|
|
117
|
+
sessionDisplayId: string | null;
|
|
118
|
+
clearSession: boolean;
|
|
119
|
+
billingType: "api" | "subscription" | "metered_api" | null;
|
|
120
|
+
raw?: Record<string, unknown> | null;
|
|
121
|
+
workspace?: PreparedWorkspace; // Present if config.workspace was set
|
|
122
|
+
}
|
|
123
|
+
```
|
|
124
|
+
|
|
125
|
+
Use `aggregateUsage(result.usage)` to collapse per-model usage into a single total.
|
|
126
|
+
|
|
127
|
+
## Stream Events
|
|
128
|
+
|
|
129
|
+
Emitted during execution via `onEvent`. All events include `timestamp`.
|
|
130
|
+
|
|
131
|
+
- `system` — Session init (`sessionId`, `model`, `subtype`)
|
|
132
|
+
- `assistant` — Text output from the agent (`text`)
|
|
133
|
+
- `thinking` — Agent's internal reasoning (`text`)
|
|
134
|
+
- `tool_call` — Agent invoked a tool (`name`, `input`, `callId?`)
|
|
135
|
+
- `tool_result` — Tool returned a result (`toolCallId`, `content`, `isError`)
|
|
136
|
+
- `result` — Final result (`text`, `cost`, `isError`)
|
|
137
|
+
|
|
138
|
+
Lifecycle events (via `onLifecycle`) report phases: `preparing`, `spawning`, `running`, `waiting_for_input`, `completed`, `cancelled`, `error`.
|
|
139
|
+
|
|
140
|
+
## Sessions (multi-turn)
|
|
141
|
+
|
|
142
|
+
Providers with `capabilities.sessions = true` (Claude, Codex) can host a persistent session where you send multiple user messages and reuse context across turns.
|
|
143
|
+
|
|
144
|
+
```typescript
|
|
145
|
+
import { getProvider, parseAskUserQuestion } from "@agentex/agent";
|
|
146
|
+
|
|
147
|
+
const claude = getProvider("claude");
|
|
148
|
+
const session = await claude.createSession!({
|
|
149
|
+
cwd: process.cwd(),
|
|
150
|
+
onEvent: (e) => { /* stream events */ },
|
|
151
|
+
onUserInputRequest: async (req) => {
|
|
152
|
+
const q = parseAskUserQuestion(req);
|
|
153
|
+
if (q) return { allow: true, updatedInput: { answers: ["Yes"] } };
|
|
154
|
+
return { allow: true }; // auto-approve other tool calls
|
|
155
|
+
},
|
|
156
|
+
});
|
|
157
|
+
|
|
158
|
+
const first = await session.send("List the API routes in src/");
|
|
159
|
+
const followUp = await session.send("Now add rate limiting to each one.");
|
|
160
|
+
|
|
161
|
+
await session.close();
|
|
162
|
+
```
|
|
163
|
+
|
|
164
|
+
`session.send()` returns a `TurnResult` with `summary`, `usage`, `costUsd`, and a `status` of `completed | failed | max_turns | max_budget | aborted`. Handle elicitations (MCP forms), hook callbacks, and interrupts through the corresponding `SessionContext` callbacks.
|
|
165
|
+
|
|
166
|
+
## Auth
|
|
167
|
+
|
|
168
|
+
`provider.resolveAuth()` is the single entry point for "is this provider usable?" It returns binary status, every supported auth path with a definitive `present: boolean`, and (when the CLI exposes it) rich identity info like email and subscription tier.
|
|
169
|
+
|
|
170
|
+
Under the hood it prefers the provider's own status subcommand — `claude auth status --json`, `codex login status` — falling back to filesystem heuristics if the binary is missing or too old.
|
|
171
|
+
|
|
172
|
+
```typescript
|
|
173
|
+
import { getProvider, hasSubscription, hasApiKey } from "@agentex/agent";
|
|
174
|
+
|
|
175
|
+
const claude = getProvider("claude");
|
|
176
|
+
const auth = await claude.resolveAuth();
|
|
177
|
+
|
|
178
|
+
// {
|
|
179
|
+
// providerType: "claude",
|
|
180
|
+
// binary: { installed: true, resolvedPath: "/Users/you/.local/bin/claude", version: "2.1.116" },
|
|
181
|
+
// options: [
|
|
182
|
+
// { method: "api_key", source: { kind: "env", var: "ANTHROPIC_API_KEY" }, present: false },
|
|
183
|
+
// { method: "bedrock", source: { kind: "env_combo", vars: [...] }, present: false },
|
|
184
|
+
// { method: "subscription", source: { kind: "cli", command: "claude auth status --json" }, present: true },
|
|
185
|
+
// ],
|
|
186
|
+
// identity: { email: "you@example.com", orgName: "Acme", subscriptionType: "max", authMethod: "claude.ai" },
|
|
187
|
+
// source: "cli",
|
|
188
|
+
// }
|
|
189
|
+
```
|
|
190
|
+
|
|
191
|
+
### Sugar helpers (commit to a billing mode explicitly)
|
|
192
|
+
|
|
193
|
+
There is deliberately no blanket `canRun()` / `isReady()` helper — conflating subscription and API-key auth is a billing footgun (e.g. Claude with `ANTHROPIC_API_KEY` set silently bills metered API even if the user's also subscribed). Callers name the mode they want:
|
|
194
|
+
|
|
195
|
+
```typescript
|
|
196
|
+
await hasSubscription(claude); // true only if a subscription credential is confirmed present
|
|
197
|
+
await hasApiKey(claude); // true only if an API env var is set
|
|
198
|
+
await hasBedrock(claude); // true only if Bedrock credentials are configured
|
|
199
|
+
```
|
|
200
|
+
|
|
201
|
+
For "any auth works," write it out explicitly at the call site:
|
|
202
|
+
|
|
203
|
+
```typescript
|
|
204
|
+
const anyReady = (await claude.resolveAuth()).options.some((o) => o.present);
|
|
205
|
+
```
|
|
206
|
+
|
|
207
|
+
### Welcome-flow pattern
|
|
208
|
+
|
|
209
|
+
```typescript
|
|
210
|
+
const auth = await claude.resolveAuth();
|
|
211
|
+
|
|
212
|
+
if (!auth.binary.installed) {
|
|
213
|
+
return showInstallInstructions(auth.binary.error);
|
|
214
|
+
}
|
|
215
|
+
|
|
216
|
+
const sub = await hasSubscription(claude);
|
|
217
|
+
const key = await hasApiKey(claude);
|
|
218
|
+
|
|
219
|
+
if (sub && !key) return showReady("subscription", auth.identity);
|
|
220
|
+
if (key && !sub) return showReady("api_key");
|
|
221
|
+
if (sub && key) return showReady("api_key", { warning: "api_key_wins" });
|
|
222
|
+
return showLoginInstructions();
|
|
223
|
+
```
|
|
224
|
+
|
|
225
|
+
For end-to-end verification (is auth actually good enough to complete a round-trip?), just call `execute()` with a trivial prompt — no separate probe method:
|
|
226
|
+
|
|
227
|
+
```typescript
|
|
228
|
+
await claude.execute({ prompt: "Respond with 'hello'.", config: { timeoutSec: 15 } });
|
|
229
|
+
```
|
|
230
|
+
|
|
231
|
+
### What each provider reports
|
|
232
|
+
|
|
233
|
+
| Provider | Subscription source | API key source(s) | Other |
|
|
234
|
+
| --------- | --------------------------------------------------------------- | ------------------------------------------ | ---------------------------------------------------------------------------- |
|
|
235
|
+
| `claude` | `claude auth status --json` · fallback: keychain/creds file | `ANTHROPIC_API_KEY` | Bedrock via `ANTHROPIC_BEDROCK_BASE_URL` or `AWS_ACCESS_KEY_ID`+`AWS_REGION` |
|
|
236
|
+
| `codex` | `codex login status` · fallback: `$CODEX_HOME/auth.json` | `OPENAI_API_KEY` | — |
|
|
237
|
+
| `gemini` | `$GEMINI_CONFIG_DIR/oauth_creds.json` | `GEMINI_API_KEY`, `GOOGLE_API_KEY` | — |
|
|
238
|
+
| `cursor` | (detected at runtime by the CLI) | `CURSOR_API_KEY`, `OPENAI_API_KEY` | — |
|
|
239
|
+
| `opencode`| — | `OPENAI_API_KEY`, `ANTHROPIC_API_KEY` | — |
|
|
240
|
+
| `pi` | — | `OPENAI_API_KEY`, `ANTHROPIC_API_KEY` | — |
|
|
241
|
+
|
|
242
|
+
### Precedence (what actually gets used when both are present)
|
|
243
|
+
|
|
244
|
+
The library reflects real CLI behavior rather than imposing its own:
|
|
245
|
+
|
|
246
|
+
| Provider | Winner when both API key and subscription present |
|
|
247
|
+
| --------- | ----------------------------------------------------------------------- |
|
|
248
|
+
| Claude | API key wins (documented). Set `hasApiKey` + show a billing warning. |
|
|
249
|
+
| Codex | Subscription wins (current CLI; see openai/codex#2733, #3286). |
|
|
250
|
+
| Gemini | API key wins in non-interactive mode. |
|
|
251
|
+
|
|
252
|
+
### Caching
|
|
253
|
+
|
|
254
|
+
Results are cached for 60s per `(providerType, env, command)` to keep welcome-flow and badge-rendering calls effectively free. Pass `{ fresh: true }` to bypass:
|
|
255
|
+
|
|
256
|
+
```typescript
|
|
257
|
+
await claude.resolveAuth({ fresh: true });
|
|
258
|
+
// Or globally:
|
|
259
|
+
import { clearAuthCache } from "@agentex/agent";
|
|
260
|
+
clearAuthCache();
|
|
261
|
+
```
|
|
262
|
+
|
|
263
|
+
### Auth types
|
|
264
|
+
|
|
265
|
+
```typescript
|
|
266
|
+
type AuthMethod = "api_key" | "bedrock" | "subscription";
|
|
267
|
+
|
|
268
|
+
type AuthSource =
|
|
269
|
+
| { kind: "env"; var: string }
|
|
270
|
+
| { kind: "env_combo"; vars: string[] }
|
|
271
|
+
| { kind: "file"; path: string }
|
|
272
|
+
| { kind: "keychain"; service: string; account?: string }
|
|
273
|
+
| { kind: "cli"; command: string };
|
|
274
|
+
|
|
275
|
+
interface AuthOption {
|
|
276
|
+
method: AuthMethod;
|
|
277
|
+
source: AuthSource;
|
|
278
|
+
present: boolean;
|
|
279
|
+
}
|
|
280
|
+
|
|
281
|
+
interface BinaryStatus {
|
|
282
|
+
installed: boolean;
|
|
283
|
+
resolvedPath?: string;
|
|
284
|
+
version?: string;
|
|
285
|
+
error?: string;
|
|
286
|
+
}
|
|
287
|
+
|
|
288
|
+
interface AuthIdentity {
|
|
289
|
+
email?: string;
|
|
290
|
+
orgName?: string;
|
|
291
|
+
subscriptionType?: string; // "max", "pro", "team", "enterprise"
|
|
292
|
+
authMethod?: string; // "claude.ai", "chatgpt", "api_key", ...
|
|
293
|
+
}
|
|
294
|
+
|
|
295
|
+
interface AuthReport {
|
|
296
|
+
providerType: string;
|
|
297
|
+
binary: BinaryStatus;
|
|
298
|
+
options: AuthOption[];
|
|
299
|
+
identity?: AuthIdentity;
|
|
300
|
+
source: "cli" | "filesystem";
|
|
301
|
+
}
|
|
302
|
+
```
|
|
303
|
+
|
|
304
|
+
## Workspaces (isolated git worktree)
|
|
305
|
+
|
|
306
|
+
Providers with `capabilities.workspace = true` can run in an isolated `git worktree`, letting you diff or discard the agent's changes without touching your main checkout.
|
|
307
|
+
|
|
308
|
+
```typescript
|
|
309
|
+
import { prepareWorkspace } from "@agentex/agent";
|
|
310
|
+
|
|
311
|
+
const ws = await prepareWorkspace({ strategy: "worktree", baseBranch: "main" });
|
|
312
|
+
const result = await claude.execute({ prompt: "Refactor utils.ts", cwd: ws.cwd });
|
|
313
|
+
|
|
314
|
+
const patch = await ws.diff(); // all changes (default)
|
|
315
|
+
const summary = await ws.diff({ stat: true }); // --stat summary
|
|
316
|
+
const committed = await ws.diff({ scope: "committed" });
|
|
317
|
+
|
|
318
|
+
await ws.cleanup({ deleteBranch: true });
|
|
319
|
+
```
|
|
320
|
+
|
|
321
|
+
Or pass `config.workspace` to `execute()` and the provider will prepare and attach it — the result's `workspace` field exposes the same handle.
|
|
322
|
+
|
|
323
|
+
## Parallel Execution
|
|
324
|
+
|
|
325
|
+
```typescript
|
|
326
|
+
import { executeAll } from "@agentex/agent";
|
|
327
|
+
|
|
328
|
+
const results = await executeAll(
|
|
329
|
+
[
|
|
330
|
+
{ provider: "claude", ctx: { prompt: "Review server.ts" } },
|
|
331
|
+
{ provider: "codex", ctx: { prompt: "Review db.ts" } },
|
|
332
|
+
],
|
|
333
|
+
{ cancelOnFailure: true },
|
|
334
|
+
);
|
|
335
|
+
```
|
|
336
|
+
|
|
337
|
+
## Skills
|
|
338
|
+
|
|
339
|
+
Install and remove reusable agent skills across multiple runtimes at once, into either the user's home or a workspace directory.
|
|
340
|
+
|
|
341
|
+
```typescript
|
|
342
|
+
import { installSkills, listInstalledSkills, removeSkills } from "@agentex/agent";
|
|
343
|
+
|
|
344
|
+
await installSkills({
|
|
345
|
+
location: "global", // or "workspace" with cwd
|
|
346
|
+
includeNativeDirs: false, // true also installs into ~/.gemini/skills/, etc.
|
|
347
|
+
});
|
|
348
|
+
|
|
349
|
+
const installed = await listInstalledSkills({ location: "global" });
|
|
350
|
+
await removeSkills({ location: "global" });
|
|
351
|
+
```
|
|
352
|
+
|
|
353
|
+
Channels and locations follow the emerging `.agents/skills/` + `.claude/skills/` convention — see the `SkillRuntime`, `SkillLocation`, and `SkillChannel` types.
|
|
354
|
+
|
|
355
|
+
## Temporary Config Override
|
|
356
|
+
|
|
357
|
+
Run a CLI with a throwaway config directory (useful for injecting system prompts or custom settings without touching the user's real home).
|
|
358
|
+
|
|
359
|
+
```typescript
|
|
360
|
+
import { withTempConfig } from "@agentex/agent";
|
|
361
|
+
|
|
362
|
+
const cfg = await withTempConfig({
|
|
363
|
+
runtime: "codex",
|
|
364
|
+
seedFromDefault: true, // optional: copy ~/.codex into the temp dir
|
|
365
|
+
overrides: { "config.toml": "model = \"o3\"\n" },
|
|
366
|
+
});
|
|
367
|
+
|
|
368
|
+
await codex.execute({ prompt: "...", env: cfg.env });
|
|
369
|
+
await cfg.cleanup();
|
|
370
|
+
```
|
|
371
|
+
|
|
372
|
+
## AskUserQuestion / Elicitation / Hooks
|
|
373
|
+
|
|
374
|
+
Sessions can surface three distinct user-input requests. Handle each via a `SessionContext` callback:
|
|
375
|
+
|
|
376
|
+
- `onUserInputRequest` — tool permission requests (and interactive tools like Claude's `AskUserQuestion`). Use `parseAskUserQuestion(req)` to detect structured question payloads and return answers via `updatedInput`.
|
|
377
|
+
- `onElicitation` — MCP servers asking the host to render a form or open a URL (`form` / `url` modes, with a JSON-Schema `requestedSchema`).
|
|
378
|
+
- `onHookCallback` — CLI requesting the host to run a registered hook.
|
|
46
379
|
|
|
47
380
|
## Custom Providers
|
|
48
381
|
|
|
@@ -52,6 +385,15 @@ import type { ProviderModule } from "@agentex/agent";
|
|
|
52
385
|
|
|
53
386
|
const myProvider: ProviderModule = {
|
|
54
387
|
type: "my-agent",
|
|
388
|
+
capabilities: {
|
|
389
|
+
sessions: false,
|
|
390
|
+
modelDiscovery: false,
|
|
391
|
+
quotaProbing: false,
|
|
392
|
+
mcp: false,
|
|
393
|
+
skills: false,
|
|
394
|
+
instructions: false,
|
|
395
|
+
workspace: false,
|
|
396
|
+
},
|
|
55
397
|
async execute(ctx) {
|
|
56
398
|
const startedAt = new Date().toISOString();
|
|
57
399
|
// Spawn your agent, stream events via ctx.onEvent...
|
|
@@ -59,7 +401,7 @@ const myProvider: ProviderModule = {
|
|
|
59
401
|
runId: ctx.runId ?? "generated-id",
|
|
60
402
|
exitCode: 0,
|
|
61
403
|
signal: null,
|
|
62
|
-
|
|
404
|
+
status: "completed",
|
|
63
405
|
startedAt,
|
|
64
406
|
completedAt: new Date().toISOString(),
|
|
65
407
|
durationMs: 0,
|
|
@@ -74,93 +416,69 @@ const myProvider: ProviderModule = {
|
|
|
74
416
|
billingType: null,
|
|
75
417
|
};
|
|
76
418
|
},
|
|
77
|
-
async
|
|
78
|
-
return {
|
|
419
|
+
async resolveAuth() {
|
|
420
|
+
return {
|
|
421
|
+
providerType: "my-agent",
|
|
422
|
+
binary: { installed: true },
|
|
423
|
+
options: [],
|
|
424
|
+
source: "filesystem",
|
|
425
|
+
};
|
|
79
426
|
},
|
|
80
427
|
};
|
|
81
428
|
|
|
82
429
|
registerProvider(myProvider);
|
|
83
430
|
```
|
|
84
431
|
|
|
85
|
-
## API
|
|
86
|
-
|
|
87
|
-
###
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
###
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
runId: string;
|
|
130
|
-
exitCode: number | null;
|
|
131
|
-
signal: string | null;
|
|
132
|
-
timedOut: boolean;
|
|
133
|
-
startedAt: string; // ISO timestamp
|
|
134
|
-
completedAt: string; // ISO timestamp
|
|
135
|
-
durationMs: number; // Wall-clock duration
|
|
136
|
-
errorMessage: string | null;
|
|
137
|
-
errorCode: string | null;
|
|
138
|
-
usage?: { inputTokens: number; outputTokens: number; cachedInputTokens?: number };
|
|
139
|
-
costUsd: number | null;
|
|
140
|
-
model: string | null;
|
|
141
|
-
summary: string | null;
|
|
142
|
-
sessionParams: Record<string, unknown> | null;
|
|
143
|
-
sessionDisplayId: string | null;
|
|
144
|
-
clearSession: boolean;
|
|
145
|
-
billingType: "api" | "subscription" | null;
|
|
146
|
-
}
|
|
147
|
-
```
|
|
148
|
-
|
|
149
|
-
## Stream Events
|
|
150
|
-
|
|
151
|
-
Events emitted during execution via `onEvent`. All events include a `timestamp` field.
|
|
152
|
-
|
|
153
|
-
- `system` — Session init (`event.sessionId`, `event.model`)
|
|
154
|
-
- `assistant` — Text output from the agent (`event.text`)
|
|
155
|
-
- `thinking` — Agent's internal reasoning (`event.text`)
|
|
156
|
-
- `tool_call` — Agent invoked a tool (`event.name`, `event.input`)
|
|
157
|
-
- `tool_result` — Tool returned a result (`event.content`, `event.isError`)
|
|
158
|
-
- `result` — Final result (`event.text`, `event.cost`)
|
|
432
|
+
## API Reference
|
|
433
|
+
|
|
434
|
+
### Registry
|
|
435
|
+
- `getProvider(type)` — look up a registered provider. Throws if unknown.
|
|
436
|
+
- `listProviders()` — list all registered provider type names.
|
|
437
|
+
- `registerProvider(module)` — register a custom provider.
|
|
438
|
+
|
|
439
|
+
### Execution
|
|
440
|
+
- `provider.execute(ctx)` — run a single turn.
|
|
441
|
+
- `provider.createSession?(ctx)` — start a multi-turn session (when `capabilities.sessions`).
|
|
442
|
+
- `executeAll(tasks, { cancelOnFailure?, signal? })` — run multiple executions concurrently.
|
|
443
|
+
|
|
444
|
+
### Auth
|
|
445
|
+
- `provider.resolveAuth(ctx?)` — structured report: binary status, all auth paths, identity. Cached 60s; pass `{ fresh: true }` to bypass.
|
|
446
|
+
- `hasSubscription(provider, ctx?)` / `hasApiKey(provider, ctx?)` / `hasBedrock(provider, ctx?)` — presence sugar.
|
|
447
|
+
- `clearAuthCache()` — invalidate the resolveAuth cache globally (e.g. after a login).
|
|
448
|
+
- `detectAuth(providerType, env)` — legacy env-only auth classification used internally for `ExecutionResult.billingType`.
|
|
449
|
+
|
|
450
|
+
### Binary / runtime
|
|
451
|
+
- `findBinary(name, configOverride?)` — resolve a provider CLI on disk.
|
|
452
|
+
- `ensureCommandResolvable(command)` — like `findBinary` but accepts an absolute path too.
|
|
453
|
+
- `clearBinaryCache()` — invalidate the binary-resolution cache.
|
|
454
|
+
- `provider.checkQuota?(ctx)` — rate-limit / quota status (when `capabilities.quotaProbing`).
|
|
455
|
+
- `provider.listModels?(opts?)` — enumerate models the binary can drive.
|
|
456
|
+
|
|
457
|
+
### Workspace
|
|
458
|
+
- `prepareWorkspace({ strategy, baseBranch?, branchName?, targetDir? })` → `PreparedWorkspace` with `cwd`, `diff()`, `cleanup()`.
|
|
459
|
+
|
|
460
|
+
### Skills
|
|
461
|
+
- `installSkills(opts)` / `removeSkills(opts)` / `listInstalledSkills(opts)`
|
|
462
|
+
- `resolveSkillsHome(channel)` / `resolveSkillsWorkspace(channel, cwd)`
|
|
463
|
+
- `resolveNativeSkillsHome(runtime)` / `resolveNativeSkillsWorkspace(runtime, cwd)`
|
|
464
|
+
- `ensureSkillSymlink(...)`
|
|
465
|
+
|
|
466
|
+
### Runtime config
|
|
467
|
+
- `withTempConfig({ runtime, seedFromDefault?, overrides? })` → env + configDir + cleanup.
|
|
468
|
+
- `getRuntimeHomeEnvVar(runtime)` / `getDefaultRuntimeHome(runtime)` — introspect each CLI's home dir override.
|
|
469
|
+
|
|
470
|
+
### Utilities
|
|
471
|
+
- `aggregateUsage(usage)` — collapse `Record<string, TokenUsage>` to a single total.
|
|
472
|
+
- `renderTemplate(template, ctx)` — `{{var}}` interpolation.
|
|
473
|
+
- `redactEnvForLogs(env)` — redact sensitive values before logging.
|
|
474
|
+
- `resolveInstructions(path?)` — read an instructions file, or `null` if no path.
|
|
475
|
+
- `parseAskUserQuestion(req)` — extract structured question/option data from a `UserInputRequest`.
|
|
159
476
|
|
|
160
477
|
## Requirements
|
|
161
478
|
|
|
162
479
|
- Node.js >= 18
|
|
163
|
-
-
|
|
480
|
+
- Each provider's CLI installed and resolvable on `$PATH` (`claude`, `codex`, `gemini`, `agent` for Cursor, `opencode`, `pi`, or a reachable OpenClaw gateway)
|
|
481
|
+
- For subscription auth, the relevant CLI must already be logged in (`codex login`, `claude login`, `gemini auth login`, etc.)
|
|
164
482
|
|
|
165
483
|
## License
|
|
166
484
|
|
package/dist/index.d.ts
CHANGED
|
@@ -1,5 +1,22 @@
|
|
|
1
1
|
export { getProvider, listProviders, registerProvider } from "./registry.js";
|
|
2
2
|
export { renderTemplate } from "./utils/template.js";
|
|
3
3
|
export { redactEnvForLogs } from "./utils/env.js";
|
|
4
|
-
export
|
|
4
|
+
export { parseAskUserQuestion } from "./utils/ask-user-question.js";
|
|
5
|
+
export { aggregateUsage } from "./types.js";
|
|
6
|
+
export { resolveInstructions } from "./utils/instructions.js";
|
|
7
|
+
export { getRuntimeHomeEnvVar, getDefaultRuntimeHome } from "./utils/runtime-homes.js";
|
|
8
|
+
export { findBinary, ensureCommandResolvable, clearBinaryCache } from "./utils/binary.js";
|
|
9
|
+
export type { ResolvedBinary } from "./utils/binary.js";
|
|
10
|
+
export { detectAuth, resolveAuthForProvider, clearAuthCache, hasSubscription, hasApiKey, hasBedrock, } from "./utils/auth.js";
|
|
11
|
+
export type { ResolvedAuth } from "./utils/auth.js";
|
|
12
|
+
export { prepareWorkspace } from "./utils/workspace.js";
|
|
13
|
+
export type { WorkspaceOptions, PreparedWorkspace, DiffOptions } from "./utils/workspace.js";
|
|
14
|
+
export { withTempConfig } from "./utils/runtime-config.js";
|
|
15
|
+
export type { TempConfigResult, TempConfigOptions } from "./utils/runtime-config.js";
|
|
16
|
+
export { executeAll } from "./utils/execute-all.js";
|
|
17
|
+
export type { ExecuteAllOptions, ExecuteAllTask } from "./utils/execute-all.js";
|
|
18
|
+
export { installSkills, removeSkills, listInstalledSkills, resolveSkillsHome, resolveSkillsWorkspace, resolveNativeSkillsHome, resolveNativeSkillsWorkspace, ensureSkillSymlink, } from "./utils/skills.js";
|
|
19
|
+
export type { ProviderModule, ProviderCapabilities, ExecutionContext, ExecutionResult, ExecutionStatus, ProviderConfig, McpServerConfig, StreamEvent, SessionCodec, SessionState, TokenUsage, LifecycleEvent, QuotaStatus, QuotaContext, AuthMethod, AuthSource, AuthOption, AuthReport, AuthResolveContext, AuthIdentity, BinaryStatus, ProviderModel, SessionContext, AgentSession, TurnResult, UserInputRequest, UserInputResponse, ElicitationRequest, ElicitationResponse, HookCallbackRequest, HookCallbackResponse, } from "./types.js";
|
|
20
|
+
export type { AskUserQuestion, QuestionOption, } from "./utils/ask-user-question.js";
|
|
21
|
+
export type { SkillRuntime, SkillLocation, SkillChannel, InstallSkillsOptions, SkillInstallEntry, SkillInstallResult, RemoveSkillsOptions, SkillRemoveEntry, SkillRemoveResult, InstalledSkill, } from "./utils/skills.js";
|
|
5
22
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,WAAW,EAAE,aAAa,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAC;AAC7E,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AACrD,OAAO,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,WAAW,EAAE,aAAa,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAC;AAC7E,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AACrD,OAAO,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;AAClD,OAAO,EAAE,oBAAoB,EAAE,MAAM,8BAA8B,CAAC;AACpE,OAAO,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAC5C,OAAO,EAAE,mBAAmB,EAAE,MAAM,yBAAyB,CAAC;AAC9D,OAAO,EAAE,oBAAoB,EAAE,qBAAqB,EAAE,MAAM,0BAA0B,CAAC;AACvF,OAAO,EAAE,UAAU,EAAE,uBAAuB,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AAC1F,YAAY,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AACxD,OAAO,EACL,UAAU,EACV,sBAAsB,EACtB,cAAc,EACd,eAAe,EACf,SAAS,EACT,UAAU,GACX,MAAM,iBAAiB,CAAC;AACzB,YAAY,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AACpD,OAAO,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AACxD,YAAY,EAAE,gBAAgB,EAAE,iBAAiB,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AAC7F,OAAO,EAAE,cAAc,EAAE,MAAM,2BAA2B,CAAC;AAC3D,YAAY,EAAE,gBAAgB,EAAE,iBAAiB,EAAE,MAAM,2BAA2B,CAAC;AACrF,OAAO,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAC;AACpD,YAAY,EAAE,iBAAiB,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AAGhF,OAAO,EACL,aAAa,EACb,YAAY,EACZ,mBAAmB,EACnB,iBAAiB,EACjB,sBAAsB,EACtB,uBAAuB,EACvB,4BAA4B,EAC5B,kBAAkB,GACnB,MAAM,mBAAmB,CAAC;AAG3B,YAAY,EACV,cAAc,EACd,oBAAoB,EACpB,gBAAgB,EAChB,eAAe,EACf,eAAe,EACf,cAAc,EACd,eAAe,EACf,WAAW,EACX,YAAY,EACZ,YAAY,EACZ,UAAU,EACV,cAAc,EACd,WAAW,EACX,YAAY,EACZ,UAAU,EACV,UAAU,EACV,UAAU,EACV,UAAU,EACV,kBAAkB,EAClB,YAAY,EACZ,YAAY,EACZ,aAAa,EACb,cAAc,EACd,YAAY,EACZ,UAAU,EACV,gBAAgB,EAChB,iBAAiB,EACjB,kBAAkB,EAClB,mBAAmB,EACnB,mBAAmB,EACnB,oBAAoB,GACrB,MAAM,YAAY,CAAC;AAEpB,YAAY,EACV,eAAe,EACf,cAAc,GACf,MAAM,8BAA8B,CAAC;AAEtC,YAAY,EACV,YAAY,EACZ,aAAa,EACb,YAAY,EACZ,oBAAoB,EACpB,iBAAiB,EACjB,kBAAkB,EAClB,mBAAmB,EACnB,gBAAgB,EAChB,iBAAiB,EACjB,cAAc,GACf,MAAM,mBAAmB,CAAC"}
|
package/dist/index.js
CHANGED
|
@@ -2,4 +2,15 @@
|
|
|
2
2
|
export { getProvider, listProviders, registerProvider } from "./registry.js";
|
|
3
3
|
export { renderTemplate } from "./utils/template.js";
|
|
4
4
|
export { redactEnvForLogs } from "./utils/env.js";
|
|
5
|
+
export { parseAskUserQuestion } from "./utils/ask-user-question.js";
|
|
6
|
+
export { aggregateUsage } from "./types.js";
|
|
7
|
+
export { resolveInstructions } from "./utils/instructions.js";
|
|
8
|
+
export { getRuntimeHomeEnvVar, getDefaultRuntimeHome } from "./utils/runtime-homes.js";
|
|
9
|
+
export { findBinary, ensureCommandResolvable, clearBinaryCache } from "./utils/binary.js";
|
|
10
|
+
export { detectAuth, resolveAuthForProvider, clearAuthCache, hasSubscription, hasApiKey, hasBedrock, } from "./utils/auth.js";
|
|
11
|
+
export { prepareWorkspace } from "./utils/workspace.js";
|
|
12
|
+
export { withTempConfig } from "./utils/runtime-config.js";
|
|
13
|
+
export { executeAll } from "./utils/execute-all.js";
|
|
14
|
+
// Skills
|
|
15
|
+
export { installSkills, removeSkills, listInstalledSkills, resolveSkillsHome, resolveSkillsWorkspace, resolveNativeSkillsHome, resolveNativeSkillsWorkspace, ensureSkillSymlink, } from "./utils/skills.js";
|
|
5
16
|
//# sourceMappingURL=index.js.map
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,YAAY;AACZ,OAAO,EAAE,WAAW,EAAE,aAAa,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAC;AAC7E,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AACrD,OAAO,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,YAAY;AACZ,OAAO,EAAE,WAAW,EAAE,aAAa,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAC;AAC7E,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AACrD,OAAO,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;AAClD,OAAO,EAAE,oBAAoB,EAAE,MAAM,8BAA8B,CAAC;AACpE,OAAO,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAC5C,OAAO,EAAE,mBAAmB,EAAE,MAAM,yBAAyB,CAAC;AAC9D,OAAO,EAAE,oBAAoB,EAAE,qBAAqB,EAAE,MAAM,0BAA0B,CAAC;AACvF,OAAO,EAAE,UAAU,EAAE,uBAAuB,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AAE1F,OAAO,EACL,UAAU,EACV,sBAAsB,EACtB,cAAc,EACd,eAAe,EACf,SAAS,EACT,UAAU,GACX,MAAM,iBAAiB,CAAC;AAEzB,OAAO,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AAExD,OAAO,EAAE,cAAc,EAAE,MAAM,2BAA2B,CAAC;AAE3D,OAAO,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAC;AAGpD,SAAS;AACT,OAAO,EACL,aAAa,EACb,YAAY,EACZ,mBAAmB,EACnB,iBAAiB,EACjB,sBAAsB,EACtB,uBAAuB,EACvB,4BAA4B,EAC5B,kBAAkB,GACnB,MAAM,mBAAmB,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"execute.d.ts","sourceRoot":"","sources":["../../../src/providers/claude/execute.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,gBAAgB,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAC;
|
|
1
|
+
{"version":3,"file":"execute.d.ts","sourceRoot":"","sources":["../../../src/providers/claude/execute.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,gBAAgB,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAC;AAWxE,wBAAsB,qBAAqB,CAAC,GAAG,EAAE,gBAAgB,GAAG,OAAO,CAAC,eAAe,CAAC,CAgP3F"}
|