@agentex/agent 0.0.1 → 0.0.3
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 +358 -78
- package/dist/index.d.ts +16 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +10 -0
- package/dist/index.js.map +1 -1
- package/dist/providers/claude/execute.d.ts +1 -1
- package/dist/providers/claude/execute.d.ts.map +1 -1
- package/dist/providers/claude/execute.js +53 -20
- package/dist/providers/claude/execute.js.map +1 -1
- package/dist/providers/claude/index.d.ts +1 -1
- package/dist/providers/claude/index.d.ts.map +1 -1
- package/dist/providers/claude/index.js +40 -9
- 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 +1 -1
- package/dist/providers/codex/execute.d.ts.map +1 -1
- package/dist/providers/codex/execute.js +114 -75
- package/dist/providers/codex/execute.js.map +1 -1
- package/dist/providers/codex/index.d.ts +1 -1
- package/dist/providers/codex/index.d.ts.map +1 -1
- package/dist/providers/codex/index.js +59 -3
- 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 +30 -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 +64 -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 +1 -1
- package/dist/providers/openclaw/execute.d.ts.map +1 -1
- package/dist/providers/openclaw/execute.js +11 -6
- package/dist/providers/openclaw/execute.js.map +1 -1
- package/dist/providers/openclaw/index.d.ts +1 -1
- package/dist/providers/openclaw/index.d.ts.map +1 -1
- package/dist/providers/openclaw/index.js +13 -3
- 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 +64 -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 +66 -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 +1 -1
- package/dist/providers/process/execute.d.ts.map +1 -1
- package/dist/providers/process/execute.js +46 -8
- package/dist/providers/process/execute.js.map +1 -1
- package/dist/providers/process/index.d.ts +1 -1
- package/dist/providers/process/index.d.ts.map +1 -1
- package/dist/providers/process/index.js +18 -4
- package/dist/providers/process/index.js.map +1 -1
- package/dist/registry.d.ts.map +1 -1
- package/dist/registry.js +16 -8
- package/dist/registry.js.map +1 -1
- package/dist/types.d.ts +325 -8
- 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 +29 -0
- package/dist/utils/auth.d.ts.map +1 -0
- package/dist/utils/auth.js +243 -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/dist/utils/process.js
CHANGED
|
@@ -3,6 +3,8 @@ import process from "node:process";
|
|
|
3
3
|
const DEFAULT_MAX_CAPTURE = 4 * 1024 * 1024; // 4MB
|
|
4
4
|
const DEFAULT_GRACE_SEC = 5;
|
|
5
5
|
export function deriveErrorCode(result) {
|
|
6
|
+
if (result.aborted)
|
|
7
|
+
return "aborted";
|
|
6
8
|
if (result.timedOut)
|
|
7
9
|
return "timeout";
|
|
8
10
|
if (result.signal && !result.timedOut)
|
|
@@ -34,6 +36,17 @@ export function killProcessTree(pid, signal = "SIGTERM") {
|
|
|
34
36
|
}
|
|
35
37
|
}
|
|
36
38
|
export function runChildProcess(opts) {
|
|
39
|
+
// If already aborted before spawn, return immediately
|
|
40
|
+
if (opts.signal?.aborted) {
|
|
41
|
+
return Promise.resolve({
|
|
42
|
+
exitCode: null,
|
|
43
|
+
signal: null,
|
|
44
|
+
timedOut: false,
|
|
45
|
+
aborted: true,
|
|
46
|
+
stdout: "",
|
|
47
|
+
stderr: "",
|
|
48
|
+
});
|
|
49
|
+
}
|
|
37
50
|
return new Promise((resolve) => {
|
|
38
51
|
const maxCapture = opts.maxCaptureBytes ?? DEFAULT_MAX_CAPTURE;
|
|
39
52
|
const graceSec = opts.graceSec ?? DEFAULT_GRACE_SEC;
|
|
@@ -42,6 +55,7 @@ export function runChildProcess(opts) {
|
|
|
42
55
|
let stdoutBytes = 0;
|
|
43
56
|
let stderrBytes = 0;
|
|
44
57
|
let timedOut = false;
|
|
58
|
+
let aborted = false;
|
|
45
59
|
let timeoutHandle = null;
|
|
46
60
|
let graceHandle = null;
|
|
47
61
|
// Chained promise for ordered callback execution
|
|
@@ -53,6 +67,10 @@ export function runChildProcess(opts) {
|
|
|
53
67
|
shell: false,
|
|
54
68
|
detached: process.platform !== "win32", // Enable process group on Unix
|
|
55
69
|
});
|
|
70
|
+
// Notify caller of the child PID
|
|
71
|
+
if (opts.onStart && child.pid != null) {
|
|
72
|
+
opts.onStart(child.pid);
|
|
73
|
+
}
|
|
56
74
|
// Write stdin and close
|
|
57
75
|
if (opts.stdin != null) {
|
|
58
76
|
child.stdin.write(opts.stdin);
|
|
@@ -102,17 +120,41 @@ export function runChildProcess(opts) {
|
|
|
102
120
|
}
|
|
103
121
|
}, opts.timeoutSec * 1000);
|
|
104
122
|
}
|
|
105
|
-
|
|
123
|
+
// AbortSignal handling
|
|
124
|
+
let abortGraceHandle = null;
|
|
125
|
+
const onAbort = () => {
|
|
126
|
+
aborted = true;
|
|
127
|
+
if (child.pid != null) {
|
|
128
|
+
killProcessTree(child.pid, "SIGTERM");
|
|
129
|
+
abortGraceHandle = setTimeout(() => {
|
|
130
|
+
if (child.pid != null) {
|
|
131
|
+
killProcessTree(child.pid, "SIGKILL");
|
|
132
|
+
}
|
|
133
|
+
}, graceSec * 1000);
|
|
134
|
+
}
|
|
135
|
+
};
|
|
136
|
+
if (opts.signal) {
|
|
137
|
+
opts.signal.addEventListener("abort", onAbort, { once: true });
|
|
138
|
+
}
|
|
139
|
+
const cleanup = () => {
|
|
106
140
|
if (timeoutHandle)
|
|
107
141
|
clearTimeout(timeoutHandle);
|
|
108
142
|
if (graceHandle)
|
|
109
143
|
clearTimeout(graceHandle);
|
|
144
|
+
if (abortGraceHandle)
|
|
145
|
+
clearTimeout(abortGraceHandle);
|
|
146
|
+
if (opts.signal)
|
|
147
|
+
opts.signal.removeEventListener("abort", onAbort);
|
|
148
|
+
};
|
|
149
|
+
child.on("close", (code, signal) => {
|
|
150
|
+
cleanup();
|
|
110
151
|
// Wait for callbacks to complete before resolving
|
|
111
152
|
callbackChain.then(() => {
|
|
112
153
|
resolve({
|
|
113
154
|
exitCode: code,
|
|
114
155
|
signal: signal ?? null,
|
|
115
156
|
timedOut,
|
|
157
|
+
aborted,
|
|
116
158
|
stdout: stdoutBuf,
|
|
117
159
|
stderr: stderrBuf,
|
|
118
160
|
});
|
|
@@ -121,20 +163,19 @@ export function runChildProcess(opts) {
|
|
|
121
163
|
exitCode: code,
|
|
122
164
|
signal: signal ?? null,
|
|
123
165
|
timedOut,
|
|
166
|
+
aborted,
|
|
124
167
|
stdout: stdoutBuf,
|
|
125
168
|
stderr: stderrBuf,
|
|
126
169
|
});
|
|
127
170
|
});
|
|
128
171
|
});
|
|
129
172
|
child.on("error", (err) => {
|
|
130
|
-
|
|
131
|
-
clearTimeout(timeoutHandle);
|
|
132
|
-
if (graceHandle)
|
|
133
|
-
clearTimeout(graceHandle);
|
|
173
|
+
cleanup();
|
|
134
174
|
resolve({
|
|
135
175
|
exitCode: null,
|
|
136
176
|
signal: null,
|
|
137
177
|
timedOut: false,
|
|
178
|
+
aborted: false,
|
|
138
179
|
stdout: stdoutBuf,
|
|
139
180
|
stderr: err.message,
|
|
140
181
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"process.js","sourceRoot":"","sources":["../../src/utils/process.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,oBAAoB,CAAC;AAC3C,OAAO,OAAO,MAAM,cAAc,CAAC;
|
|
1
|
+
{"version":3,"file":"process.js","sourceRoot":"","sources":["../../src/utils/process.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
import type { SkillRuntime } from "./skills.js";
|
|
2
|
+
export interface TempConfigResult {
|
|
3
|
+
/** Environment variables to pass to the child process (includes the
|
|
4
|
+
* runtime home env var pointing at the temp config dir). */
|
|
5
|
+
env: Record<string, string>;
|
|
6
|
+
/** Path to the temporary config directory. */
|
|
7
|
+
configDir: string;
|
|
8
|
+
/** Remove the temporary config directory. */
|
|
9
|
+
cleanup(): Promise<void>;
|
|
10
|
+
}
|
|
11
|
+
export interface TempConfigOptions {
|
|
12
|
+
/** Which runtime CLI tool to configure. */
|
|
13
|
+
runtime: SkillRuntime;
|
|
14
|
+
/** Base environment to extend. */
|
|
15
|
+
env?: Record<string, string>;
|
|
16
|
+
/** If true, copy the contents of the default home into the temp dir
|
|
17
|
+
* before applying overrides. Defaults to false. */
|
|
18
|
+
seedFromDefault?: boolean;
|
|
19
|
+
/** Files to write into the temp config dir (relative paths → content). */
|
|
20
|
+
overrides?: Record<string, string>;
|
|
21
|
+
}
|
|
22
|
+
/**
|
|
23
|
+
* Create a temporary config directory for a CLI runtime, optionally seeded
|
|
24
|
+
* from the user's default home, with arbitrary file overrides applied.
|
|
25
|
+
*
|
|
26
|
+
* Returns an env object with the runtime home env var pointed at the temp dir,
|
|
27
|
+
* and a cleanup function to remove the temp dir when done.
|
|
28
|
+
*
|
|
29
|
+
* This is useful for running a CLI tool with custom configuration (e.g.
|
|
30
|
+
* injecting system prompts, custom settings) without modifying the user's
|
|
31
|
+
* real config directory.
|
|
32
|
+
*/
|
|
33
|
+
export declare function withTempConfig(options: TempConfigOptions): Promise<TempConfigResult>;
|
|
34
|
+
//# sourceMappingURL=runtime-config.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"runtime-config.d.ts","sourceRoot":"","sources":["../../src/utils/runtime-config.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAIhD,MAAM,WAAW,gBAAgB;IAC/B;iEAC6D;IAC7D,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC5B,8CAA8C;IAC9C,SAAS,EAAE,MAAM,CAAC;IAClB,6CAA6C;IAC7C,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;CAC1B;AAED,MAAM,WAAW,iBAAiB;IAChC,2CAA2C;IAC3C,OAAO,EAAE,YAAY,CAAC;IACtB,kCAAkC;IAClC,GAAG,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC7B;wDACoD;IACpD,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,0EAA0E;IAC1E,SAAS,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CACpC;AAED;;;;;;;;;;GAUG;AACH,wBAAsB,cAAc,CAAC,OAAO,EAAE,iBAAiB,GAAG,OAAO,CAAC,gBAAgB,CAAC,CAyC1F"}
|
|
@@ -0,0 +1,71 @@
|
|
|
1
|
+
import * as fs from "node:fs/promises";
|
|
2
|
+
import * as path from "node:path";
|
|
3
|
+
import * as os from "node:os";
|
|
4
|
+
import { getRuntimeHomeEnvVar, getDefaultRuntimeHome } from "./runtime-homes.js";
|
|
5
|
+
import { uuidv7 } from "./uuid.js";
|
|
6
|
+
/**
|
|
7
|
+
* Create a temporary config directory for a CLI runtime, optionally seeded
|
|
8
|
+
* from the user's default home, with arbitrary file overrides applied.
|
|
9
|
+
*
|
|
10
|
+
* Returns an env object with the runtime home env var pointed at the temp dir,
|
|
11
|
+
* and a cleanup function to remove the temp dir when done.
|
|
12
|
+
*
|
|
13
|
+
* This is useful for running a CLI tool with custom configuration (e.g.
|
|
14
|
+
* injecting system prompts, custom settings) without modifying the user's
|
|
15
|
+
* real config directory.
|
|
16
|
+
*/
|
|
17
|
+
export async function withTempConfig(options) {
|
|
18
|
+
const { runtime, seedFromDefault, overrides } = options;
|
|
19
|
+
const envVarName = getRuntimeHomeEnvVar(runtime);
|
|
20
|
+
const shortId = uuidv7().slice(0, 8);
|
|
21
|
+
const configDir = path.join(os.tmpdir(), `agentex-cfg-${runtime}-${shortId}`);
|
|
22
|
+
await fs.mkdir(configDir, { recursive: true });
|
|
23
|
+
// Seed from the user's default home if requested
|
|
24
|
+
if (seedFromDefault) {
|
|
25
|
+
const defaultHome = getDefaultRuntimeHome(runtime);
|
|
26
|
+
try {
|
|
27
|
+
await copyDir(defaultHome, configDir);
|
|
28
|
+
}
|
|
29
|
+
catch {
|
|
30
|
+
// Default home may not exist — non-fatal
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
// Apply overrides
|
|
34
|
+
if (overrides) {
|
|
35
|
+
for (const [relativePath, content] of Object.entries(overrides)) {
|
|
36
|
+
const target = path.join(configDir, relativePath);
|
|
37
|
+
await fs.mkdir(path.dirname(target), { recursive: true });
|
|
38
|
+
await fs.writeFile(target, content, "utf-8");
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
// Build env with the runtime home pointing to our temp dir
|
|
42
|
+
const env = { ...(options.env ?? {}) };
|
|
43
|
+
if (envVarName) {
|
|
44
|
+
env[envVarName] = configDir;
|
|
45
|
+
}
|
|
46
|
+
return {
|
|
47
|
+
env,
|
|
48
|
+
configDir,
|
|
49
|
+
async cleanup() {
|
|
50
|
+
await fs.rm(configDir, { recursive: true, force: true });
|
|
51
|
+
},
|
|
52
|
+
};
|
|
53
|
+
}
|
|
54
|
+
// ---------------------------------------------------------------------------
|
|
55
|
+
// Internal helpers
|
|
56
|
+
// ---------------------------------------------------------------------------
|
|
57
|
+
async function copyDir(src, dest) {
|
|
58
|
+
const entries = await fs.readdir(src, { withFileTypes: true });
|
|
59
|
+
for (const entry of entries) {
|
|
60
|
+
const srcPath = path.join(src, entry.name);
|
|
61
|
+
const destPath = path.join(dest, entry.name);
|
|
62
|
+
if (entry.isDirectory()) {
|
|
63
|
+
await fs.mkdir(destPath, { recursive: true });
|
|
64
|
+
await copyDir(srcPath, destPath);
|
|
65
|
+
}
|
|
66
|
+
else {
|
|
67
|
+
await fs.copyFile(srcPath, destPath);
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
//# sourceMappingURL=runtime-config.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"runtime-config.js","sourceRoot":"","sources":["../../src/utils/runtime-config.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import type { SkillRuntime } from "./skills.js";
|
|
2
|
+
/**
|
|
3
|
+
* Returns the environment variable name that overrides the global home
|
|
4
|
+
* directory for the given runtime CLI tool.
|
|
5
|
+
*
|
|
6
|
+
* Returns null for runtimes that don't support home directory override.
|
|
7
|
+
*/
|
|
8
|
+
export declare function getRuntimeHomeEnvVar(runtime: SkillRuntime): string | null;
|
|
9
|
+
/**
|
|
10
|
+
* Returns the default global home directory path for the given runtime.
|
|
11
|
+
*/
|
|
12
|
+
export declare function getDefaultRuntimeHome(runtime: SkillRuntime): string;
|
|
13
|
+
//# sourceMappingURL=runtime-homes.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"runtime-homes.d.ts","sourceRoot":"","sources":["../../src/utils/runtime-homes.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AA2BhD;;;;;GAKG;AACH,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,YAAY,GAAG,MAAM,GAAG,IAAI,CAEzE;AAED;;GAEG;AACH,wBAAgB,qBAAqB,CAAC,OAAO,EAAE,YAAY,GAAG,MAAM,CAEnE"}
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
import * as path from "node:path";
|
|
2
|
+
import * as os from "node:os";
|
|
3
|
+
/**
|
|
4
|
+
* Env var that overrides the global home directory for each runtime CLI.
|
|
5
|
+
* Returns null for runtimes that don't support home directory override.
|
|
6
|
+
*/
|
|
7
|
+
const ENV_VAR_MAP = {
|
|
8
|
+
claude: "CLAUDE_CONFIG_DIR",
|
|
9
|
+
codex: "CODEX_HOME",
|
|
10
|
+
gemini: "GEMINI_CONFIG_DIR",
|
|
11
|
+
cursor: "CURSOR_CONFIG_DIR",
|
|
12
|
+
opencode: "XDG_CONFIG_HOME", // affects ~/.config/opencode/
|
|
13
|
+
pi: "PI_HOME",
|
|
14
|
+
};
|
|
15
|
+
/**
|
|
16
|
+
* Default global home directory path for each runtime.
|
|
17
|
+
*/
|
|
18
|
+
const DEFAULT_HOME_MAP = {
|
|
19
|
+
claude: path.join(os.homedir(), ".claude"),
|
|
20
|
+
codex: path.join(os.homedir(), ".codex"),
|
|
21
|
+
gemini: path.join(os.homedir(), ".gemini"),
|
|
22
|
+
cursor: path.join(os.homedir(), ".cursor"),
|
|
23
|
+
opencode: path.join(os.homedir(), ".config", "opencode"),
|
|
24
|
+
pi: path.join(os.homedir(), ".pi"),
|
|
25
|
+
};
|
|
26
|
+
/**
|
|
27
|
+
* Returns the environment variable name that overrides the global home
|
|
28
|
+
* directory for the given runtime CLI tool.
|
|
29
|
+
*
|
|
30
|
+
* Returns null for runtimes that don't support home directory override.
|
|
31
|
+
*/
|
|
32
|
+
export function getRuntimeHomeEnvVar(runtime) {
|
|
33
|
+
return ENV_VAR_MAP[runtime] ?? null;
|
|
34
|
+
}
|
|
35
|
+
/**
|
|
36
|
+
* Returns the default global home directory path for the given runtime.
|
|
37
|
+
*/
|
|
38
|
+
export function getDefaultRuntimeHome(runtime) {
|
|
39
|
+
return DEFAULT_HOME_MAP[runtime] ?? path.join(os.homedir(), `.${runtime}`);
|
|
40
|
+
}
|
|
41
|
+
//# sourceMappingURL=runtime-homes.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"runtime-homes.js","sourceRoot":"","sources":["../../src/utils/runtime-homes.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,IAAI,MAAM,WAAW,CAAC;AAClC,OAAO,KAAK,EAAE,MAAM,SAAS,CAAC;AAG9B;;;GAGG;AACH,MAAM,WAAW,GAAwC;IACvD,MAAM,EAAE,mBAAmB;IAC3B,KAAK,EAAE,YAAY;IACnB,MAAM,EAAE,mBAAmB;IAC3B,MAAM,EAAE,mBAAmB;IAC3B,QAAQ,EAAE,iBAAiB,EAAG,8BAA8B;IAC5D,EAAE,EAAE,SAAS;CACd,CAAC;AAEF;;GAEG;AACH,MAAM,gBAAgB,GAAiC;IACrD,MAAM,EAAE,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,OAAO,EAAE,EAAE,SAAS,CAAC;IAC1C,KAAK,EAAE,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,OAAO,EAAE,EAAE,QAAQ,CAAC;IACxC,MAAM,EAAE,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,OAAO,EAAE,EAAE,SAAS,CAAC;IAC1C,MAAM,EAAE,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,OAAO,EAAE,EAAE,SAAS,CAAC;IAC1C,QAAQ,EAAE,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,OAAO,EAAE,EAAE,SAAS,EAAE,UAAU,CAAC;IACxD,EAAE,EAAE,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,OAAO,EAAE,EAAE,KAAK,CAAC;CACnC,CAAC;AAEF;;;;;GAKG;AACH,MAAM,UAAU,oBAAoB,CAAC,OAAqB;IACxD,OAAO,WAAW,CAAC,OAAO,CAAC,IAAI,IAAI,CAAC;AACtC,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,qBAAqB,CAAC,OAAqB;IACzD,OAAO,gBAAgB,CAAC,OAAO,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,OAAO,EAAE,EAAE,IAAI,OAAO,EAAE,CAAC,CAAC;AAC7E,CAAC"}
|
package/dist/utils/skills.d.ts
CHANGED
|
@@ -1,4 +1,155 @@
|
|
|
1
|
-
export type SkillRuntime = "claude" | "codex";
|
|
1
|
+
export type SkillRuntime = "claude" | "codex" | "gemini" | "cursor" | "opencode" | "pi";
|
|
2
|
+
export type SkillLocation = "global" | "workspace";
|
|
3
|
+
/**
|
|
4
|
+
* The two standard skill discovery channels:
|
|
5
|
+
* - "agents": ~/.agents/skills/ or {cwd}/.agents/skills/ — scanned by Codex, Gemini, Cursor, OpenCode, Pi
|
|
6
|
+
* - "claude": ~/.claude/skills/ or {cwd}/.claude/skills/ — scanned by Claude Code (the only agent that doesn't scan .agents/)
|
|
7
|
+
*/
|
|
8
|
+
export type SkillChannel = "agents" | "claude";
|
|
9
|
+
export interface InstallSkillsOptions {
|
|
10
|
+
/** Where to install skills. Defaults to "global" (home directory).
|
|
11
|
+
* - "global": ~/.agents/skills/ + ~/.claude/skills/
|
|
12
|
+
* - "workspace": {cwd}/.agents/skills/ + {cwd}/.claude/skills/ */
|
|
13
|
+
location?: SkillLocation;
|
|
14
|
+
/** Working directory. Required for "workspace" location. */
|
|
15
|
+
cwd?: string;
|
|
16
|
+
/** Also install into each runtime's native directory (e.g. ~/.gemini/skills/, ~/.cursor/skills/).
|
|
17
|
+
* Usually unnecessary since most runtimes scan .agents/skills/. Default: false. */
|
|
18
|
+
includeNativeDirs?: boolean;
|
|
19
|
+
}
|
|
20
|
+
export interface SkillInstallEntry {
|
|
21
|
+
target: string;
|
|
22
|
+
skillName: string;
|
|
23
|
+
status: "created" | "skipped" | "conflict" | "error";
|
|
24
|
+
targetPath: string;
|
|
25
|
+
error?: string;
|
|
26
|
+
}
|
|
27
|
+
export interface SkillInstallResult {
|
|
28
|
+
entries: SkillInstallEntry[];
|
|
29
|
+
installed: number;
|
|
30
|
+
skipped: number;
|
|
31
|
+
conflicts: number;
|
|
32
|
+
errors: number;
|
|
33
|
+
}
|
|
34
|
+
export interface RemoveSkillsOptions {
|
|
35
|
+
/** Where to remove skills from. Defaults to "global". */
|
|
36
|
+
location?: SkillLocation;
|
|
37
|
+
/** Working directory. Required for "workspace" location. */
|
|
38
|
+
cwd?: string;
|
|
39
|
+
/** Also remove from native runtime directories. Default: false. */
|
|
40
|
+
includeNativeDirs?: boolean;
|
|
41
|
+
}
|
|
42
|
+
export interface SkillRemoveEntry {
|
|
43
|
+
target: string;
|
|
44
|
+
skillName: string;
|
|
45
|
+
status: "removed" | "not_found" | "conflict" | "error";
|
|
46
|
+
targetPath: string;
|
|
47
|
+
error?: string;
|
|
48
|
+
}
|
|
49
|
+
export interface SkillRemoveResult {
|
|
50
|
+
entries: SkillRemoveEntry[];
|
|
51
|
+
removed: number;
|
|
52
|
+
}
|
|
53
|
+
export interface InstalledSkill {
|
|
54
|
+
name: string;
|
|
55
|
+
sourcePath: string | null;
|
|
56
|
+
isSymlink: boolean;
|
|
57
|
+
}
|
|
58
|
+
/**
|
|
59
|
+
* Install skill directories into agent discovery paths via idempotent symlinks.
|
|
60
|
+
*
|
|
61
|
+
* By default, installs into the two standard channels:
|
|
62
|
+
* - `.agents/skills/` — discovered by Codex, Gemini, Cursor, OpenCode, Pi
|
|
63
|
+
* - `.claude/skills/` — discovered by Claude Code
|
|
64
|
+
*
|
|
65
|
+
* Set `includeNativeDirs: true` to also install into each runtime's
|
|
66
|
+
* native directory (e.g. `.gemini/skills/`, `.cursor/skills/`).
|
|
67
|
+
*
|
|
68
|
+
* @example
|
|
69
|
+
* ```typescript
|
|
70
|
+
* // Global install (home directory)
|
|
71
|
+
* await installSkills(["~/.myapp/skills/code-review"]);
|
|
72
|
+
* // Creates ~/.agents/skills/code-review + ~/.claude/skills/code-review
|
|
73
|
+
*
|
|
74
|
+
* // Workspace install (project-local)
|
|
75
|
+
* await installSkills(skillDirs, { location: "workspace", cwd: "/path/to/project" });
|
|
76
|
+
* // Creates {cwd}/.agents/skills/... + {cwd}/.claude/skills/...
|
|
77
|
+
* ```
|
|
78
|
+
*/
|
|
79
|
+
export declare function installSkills(skillDirs: string[], options?: InstallSkillsOptions): Promise<SkillInstallResult>;
|
|
80
|
+
/**
|
|
81
|
+
* Remove skill symlinks from agent discovery paths.
|
|
82
|
+
*
|
|
83
|
+
* Only removes symlinks that point to the specified source directories.
|
|
84
|
+
* User-installed skills or skills from other apps are never touched.
|
|
85
|
+
*/
|
|
86
|
+
export declare function removeSkills(skillDirs: string[], options?: RemoveSkillsOptions): Promise<SkillRemoveResult>;
|
|
87
|
+
/**
|
|
88
|
+
* List skills installed in the standard discovery channels.
|
|
89
|
+
*
|
|
90
|
+
* Returns a record keyed by channel ("agents", "claude") with the skills
|
|
91
|
+
* found in each. If `includeNativeDirs` is true, also includes native
|
|
92
|
+
* runtime directories (keyed by runtime name).
|
|
93
|
+
*
|
|
94
|
+
* @example
|
|
95
|
+
* ```typescript
|
|
96
|
+
* const skills = await listInstalledSkills();
|
|
97
|
+
* // { agents: [...], claude: [...] }
|
|
98
|
+
*
|
|
99
|
+
* const skills = await listInstalledSkills({ location: "workspace", cwd: "/my/project" });
|
|
100
|
+
* // { agents: [...], claude: [...] }
|
|
101
|
+
* ```
|
|
102
|
+
*/
|
|
103
|
+
export declare function listInstalledSkills(options?: {
|
|
104
|
+
location?: SkillLocation;
|
|
105
|
+
cwd?: string;
|
|
106
|
+
includeNativeDirs?: boolean;
|
|
107
|
+
}): Promise<Record<string, InstalledSkill[]>>;
|
|
108
|
+
/**
|
|
109
|
+
* Resolve the global (home-directory) skills path for a standard channel.
|
|
110
|
+
*/
|
|
111
|
+
export declare function resolveSkillsHome(channel: SkillChannel): string;
|
|
112
|
+
/**
|
|
113
|
+
* Resolve the workspace-relative skills path for a standard channel.
|
|
114
|
+
*/
|
|
115
|
+
export declare function resolveSkillsWorkspace(channel: SkillChannel, cwd: string): string;
|
|
116
|
+
/**
|
|
117
|
+
* Resolve the native per-runtime skills path (home directory).
|
|
118
|
+
* Returns null for runtimes that use standard channels (claude → .claude/, codex → .agents/).
|
|
119
|
+
*/
|
|
120
|
+
export declare function resolveNativeSkillsHome(runtime: SkillRuntime): string | null;
|
|
121
|
+
/**
|
|
122
|
+
* Resolve the native per-runtime skills path (workspace).
|
|
123
|
+
* Returns null for runtimes that use standard channels.
|
|
124
|
+
*/
|
|
125
|
+
export declare function resolveNativeSkillsWorkspace(runtime: SkillRuntime, cwd: string): string | null;
|
|
126
|
+
/**
|
|
127
|
+
* Idempotent symlink creation. Returns the outcome:
|
|
128
|
+
* - "created": new symlink was created
|
|
129
|
+
* - "skipped": symlink already exists and points to the correct source
|
|
130
|
+
* - "conflict": symlink exists but points elsewhere (not overwritten)
|
|
131
|
+
*/
|
|
132
|
+
export declare function ensureSkillSymlink(source: string, target: string): Promise<"created" | "skipped" | "conflict">;
|
|
133
|
+
/**
|
|
134
|
+
* Place skills into a home-directory-based skills folder via idempotent symlinks.
|
|
135
|
+
* Used internally by provider execute functions for native runtime injection.
|
|
136
|
+
*
|
|
137
|
+
* Returns the skills home path, or null if no skills were provided.
|
|
138
|
+
*/
|
|
139
|
+
export declare function injectHomeSkills(skillDirs: string[], runtime: SkillRuntime): Promise<string | null>;
|
|
140
|
+
/**
|
|
141
|
+
* Place skills into {cwd}/.agents/skills/ via idempotent symlinks.
|
|
142
|
+
* Used internally by codex provider.
|
|
143
|
+
*
|
|
144
|
+
* Returns the skills directory path, or null if no skills were provided.
|
|
145
|
+
*/
|
|
146
|
+
export declare function injectWorkspaceSkills(skillDirs: string[], cwd: string): Promise<string | null>;
|
|
147
|
+
/**
|
|
148
|
+
* Build an ephemeral tmpdir with .claude/skills/ containing symlinks.
|
|
149
|
+
* Used by Claude provider — passed via --add-dir, cleaned up after execution.
|
|
150
|
+
*
|
|
151
|
+
* Returns the tmpdir path (caller must clean up with cleanupSkillsDir).
|
|
152
|
+
*/
|
|
2
153
|
export declare function buildSkillsDir(skillDirs: string[], runtime: SkillRuntime): Promise<string>;
|
|
3
154
|
export declare function cleanupSkillsDir(tmpDir: string): Promise<void>;
|
|
4
155
|
//# sourceMappingURL=skills.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"skills.d.ts","sourceRoot":"","sources":["../../src/utils/skills.ts"],"names":[],"mappings":"AAIA,MAAM,MAAM,YAAY,GAAG,QAAQ,GAAG,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"skills.d.ts","sourceRoot":"","sources":["../../src/utils/skills.ts"],"names":[],"mappings":"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"}
|