@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.
Files changed (198) hide show
  1. package/README.md +358 -78
  2. package/dist/index.d.ts +16 -1
  3. package/dist/index.d.ts.map +1 -1
  4. package/dist/index.js +10 -0
  5. package/dist/index.js.map +1 -1
  6. package/dist/providers/claude/execute.d.ts +1 -1
  7. package/dist/providers/claude/execute.d.ts.map +1 -1
  8. package/dist/providers/claude/execute.js +53 -20
  9. package/dist/providers/claude/execute.js.map +1 -1
  10. package/dist/providers/claude/index.d.ts +1 -1
  11. package/dist/providers/claude/index.d.ts.map +1 -1
  12. package/dist/providers/claude/index.js +40 -9
  13. package/dist/providers/claude/index.js.map +1 -1
  14. package/dist/providers/claude/parse.d.ts.map +1 -1
  15. package/dist/providers/claude/parse.js +2 -1
  16. package/dist/providers/claude/parse.js.map +1 -1
  17. package/dist/providers/claude/session.d.ts +10 -0
  18. package/dist/providers/claude/session.d.ts.map +1 -0
  19. package/dist/providers/claude/session.js +549 -0
  20. package/dist/providers/claude/session.js.map +1 -0
  21. package/dist/providers/claude/test.d.ts.map +1 -1
  22. package/dist/providers/claude/test.js +38 -11
  23. package/dist/providers/claude/test.js.map +1 -1
  24. package/dist/providers/codex/execute.d.ts +1 -1
  25. package/dist/providers/codex/execute.d.ts.map +1 -1
  26. package/dist/providers/codex/execute.js +114 -75
  27. package/dist/providers/codex/execute.js.map +1 -1
  28. package/dist/providers/codex/index.d.ts +1 -1
  29. package/dist/providers/codex/index.d.ts.map +1 -1
  30. package/dist/providers/codex/index.js +59 -3
  31. package/dist/providers/codex/index.js.map +1 -1
  32. package/dist/providers/codex/parse.d.ts.map +1 -1
  33. package/dist/providers/codex/parse.js +25 -3
  34. package/dist/providers/codex/parse.js.map +1 -1
  35. package/dist/providers/codex/session.d.ts +3 -0
  36. package/dist/providers/codex/session.d.ts.map +1 -0
  37. package/dist/providers/codex/session.js +553 -0
  38. package/dist/providers/codex/session.js.map +1 -0
  39. package/dist/providers/codex/test.d.ts.map +1 -1
  40. package/dist/providers/codex/test.js +28 -12
  41. package/dist/providers/codex/test.js.map +1 -1
  42. package/dist/providers/codex/usage-scanner.d.ts +18 -0
  43. package/dist/providers/codex/usage-scanner.d.ts.map +1 -0
  44. package/dist/providers/codex/usage-scanner.js +148 -0
  45. package/dist/providers/codex/usage-scanner.js.map +1 -0
  46. package/dist/providers/cursor/codec.d.ts +3 -0
  47. package/dist/providers/cursor/codec.d.ts.map +1 -0
  48. package/dist/providers/cursor/codec.js +43 -0
  49. package/dist/providers/cursor/codec.js.map +1 -0
  50. package/dist/providers/cursor/execute.d.ts +3 -0
  51. package/dist/providers/cursor/execute.d.ts.map +1 -0
  52. package/dist/providers/cursor/execute.js +248 -0
  53. package/dist/providers/cursor/execute.js.map +1 -0
  54. package/dist/providers/cursor/index.d.ts +3 -0
  55. package/dist/providers/cursor/index.d.ts.map +1 -0
  56. package/dist/providers/cursor/index.js +30 -0
  57. package/dist/providers/cursor/index.js.map +1 -0
  58. package/dist/providers/cursor/parse.d.ts +26 -0
  59. package/dist/providers/cursor/parse.d.ts.map +1 -0
  60. package/dist/providers/cursor/parse.js +224 -0
  61. package/dist/providers/cursor/parse.js.map +1 -0
  62. package/dist/providers/cursor/test.d.ts +3 -0
  63. package/dist/providers/cursor/test.d.ts.map +1 -0
  64. package/dist/providers/cursor/test.js +58 -0
  65. package/dist/providers/cursor/test.js.map +1 -0
  66. package/dist/providers/gemini/codec.d.ts +3 -0
  67. package/dist/providers/gemini/codec.d.ts.map +1 -0
  68. package/dist/providers/gemini/codec.js +47 -0
  69. package/dist/providers/gemini/codec.js.map +1 -0
  70. package/dist/providers/gemini/execute.d.ts +3 -0
  71. package/dist/providers/gemini/execute.d.ts.map +1 -0
  72. package/dist/providers/gemini/execute.js +236 -0
  73. package/dist/providers/gemini/execute.js.map +1 -0
  74. package/dist/providers/gemini/index.d.ts +3 -0
  75. package/dist/providers/gemini/index.d.ts.map +1 -0
  76. package/dist/providers/gemini/index.js +64 -0
  77. package/dist/providers/gemini/index.js.map +1 -0
  78. package/dist/providers/gemini/parse.d.ts +20 -0
  79. package/dist/providers/gemini/parse.d.ts.map +1 -0
  80. package/dist/providers/gemini/parse.js +207 -0
  81. package/dist/providers/gemini/parse.js.map +1 -0
  82. package/dist/providers/gemini/test.d.ts +3 -0
  83. package/dist/providers/gemini/test.d.ts.map +1 -0
  84. package/dist/providers/gemini/test.js +67 -0
  85. package/dist/providers/gemini/test.js.map +1 -0
  86. package/dist/providers/openclaw/execute.d.ts +1 -1
  87. package/dist/providers/openclaw/execute.d.ts.map +1 -1
  88. package/dist/providers/openclaw/execute.js +11 -6
  89. package/dist/providers/openclaw/execute.js.map +1 -1
  90. package/dist/providers/openclaw/index.d.ts +1 -1
  91. package/dist/providers/openclaw/index.d.ts.map +1 -1
  92. package/dist/providers/openclaw/index.js +13 -3
  93. package/dist/providers/openclaw/index.js.map +1 -1
  94. package/dist/providers/openclaw/test.d.ts.map +1 -1
  95. package/dist/providers/openclaw/test.js +4 -0
  96. package/dist/providers/openclaw/test.js.map +1 -1
  97. package/dist/providers/opencode/codec.d.ts +3 -0
  98. package/dist/providers/opencode/codec.d.ts.map +1 -0
  99. package/dist/providers/opencode/codec.js +47 -0
  100. package/dist/providers/opencode/codec.js.map +1 -0
  101. package/dist/providers/opencode/execute.d.ts +3 -0
  102. package/dist/providers/opencode/execute.d.ts.map +1 -0
  103. package/dist/providers/opencode/execute.js +225 -0
  104. package/dist/providers/opencode/execute.js.map +1 -0
  105. package/dist/providers/opencode/index.d.ts +3 -0
  106. package/dist/providers/opencode/index.d.ts.map +1 -0
  107. package/dist/providers/opencode/index.js +64 -0
  108. package/dist/providers/opencode/index.js.map +1 -0
  109. package/dist/providers/opencode/parse.d.ts +19 -0
  110. package/dist/providers/opencode/parse.d.ts.map +1 -0
  111. package/dist/providers/opencode/parse.js +145 -0
  112. package/dist/providers/opencode/parse.js.map +1 -0
  113. package/dist/providers/opencode/test.d.ts +3 -0
  114. package/dist/providers/opencode/test.d.ts.map +1 -0
  115. package/dist/providers/opencode/test.js +60 -0
  116. package/dist/providers/opencode/test.js.map +1 -0
  117. package/dist/providers/pi/codec.d.ts +7 -0
  118. package/dist/providers/pi/codec.d.ts.map +1 -0
  119. package/dist/providers/pi/codec.js +45 -0
  120. package/dist/providers/pi/codec.js.map +1 -0
  121. package/dist/providers/pi/execute.d.ts +3 -0
  122. package/dist/providers/pi/execute.d.ts.map +1 -0
  123. package/dist/providers/pi/execute.js +300 -0
  124. package/dist/providers/pi/execute.js.map +1 -0
  125. package/dist/providers/pi/index.d.ts +3 -0
  126. package/dist/providers/pi/index.d.ts.map +1 -0
  127. package/dist/providers/pi/index.js +66 -0
  128. package/dist/providers/pi/index.js.map +1 -0
  129. package/dist/providers/pi/parse.d.ts +18 -0
  130. package/dist/providers/pi/parse.d.ts.map +1 -0
  131. package/dist/providers/pi/parse.js +182 -0
  132. package/dist/providers/pi/parse.js.map +1 -0
  133. package/dist/providers/pi/test.d.ts +3 -0
  134. package/dist/providers/pi/test.d.ts.map +1 -0
  135. package/dist/providers/pi/test.js +60 -0
  136. package/dist/providers/pi/test.js.map +1 -0
  137. package/dist/providers/process/execute.d.ts +1 -1
  138. package/dist/providers/process/execute.d.ts.map +1 -1
  139. package/dist/providers/process/execute.js +46 -8
  140. package/dist/providers/process/execute.js.map +1 -1
  141. package/dist/providers/process/index.d.ts +1 -1
  142. package/dist/providers/process/index.d.ts.map +1 -1
  143. package/dist/providers/process/index.js +18 -4
  144. package/dist/providers/process/index.js.map +1 -1
  145. package/dist/registry.d.ts.map +1 -1
  146. package/dist/registry.js +16 -8
  147. package/dist/registry.js.map +1 -1
  148. package/dist/types.d.ts +325 -8
  149. package/dist/types.d.ts.map +1 -1
  150. package/dist/types.js +23 -1
  151. package/dist/types.js.map +1 -1
  152. package/dist/utils/ask-user-question.d.ts +50 -0
  153. package/dist/utils/ask-user-question.d.ts.map +1 -0
  154. package/dist/utils/ask-user-question.js +32 -0
  155. package/dist/utils/ask-user-question.js.map +1 -0
  156. package/dist/utils/auth.d.ts +29 -0
  157. package/dist/utils/auth.d.ts.map +1 -0
  158. package/dist/utils/auth.js +243 -0
  159. package/dist/utils/auth.js.map +1 -0
  160. package/dist/utils/binary.d.ts.map +1 -1
  161. package/dist/utils/binary.js +29 -6
  162. package/dist/utils/binary.js.map +1 -1
  163. package/dist/utils/env.d.ts.map +1 -1
  164. package/dist/utils/env.js +18 -0
  165. package/dist/utils/env.js.map +1 -1
  166. package/dist/utils/execute-all.d.ts +20 -0
  167. package/dist/utils/execute-all.d.ts.map +1 -0
  168. package/dist/utils/execute-all.js +46 -0
  169. package/dist/utils/execute-all.js.map +1 -0
  170. package/dist/utils/instructions.d.ts +7 -0
  171. package/dist/utils/instructions.d.ts.map +1 -0
  172. package/dist/utils/instructions.js +21 -0
  173. package/dist/utils/instructions.js.map +1 -0
  174. package/dist/utils/model-cache.d.ts +11 -0
  175. package/dist/utils/model-cache.d.ts.map +1 -0
  176. package/dist/utils/model-cache.js +17 -0
  177. package/dist/utils/model-cache.js.map +1 -0
  178. package/dist/utils/process.d.ts +4 -0
  179. package/dist/utils/process.d.ts.map +1 -1
  180. package/dist/utils/process.js +46 -5
  181. package/dist/utils/process.js.map +1 -1
  182. package/dist/utils/runtime-config.d.ts +34 -0
  183. package/dist/utils/runtime-config.d.ts.map +1 -0
  184. package/dist/utils/runtime-config.js +71 -0
  185. package/dist/utils/runtime-config.js.map +1 -0
  186. package/dist/utils/runtime-homes.d.ts +13 -0
  187. package/dist/utils/runtime-homes.d.ts.map +1 -0
  188. package/dist/utils/runtime-homes.js +41 -0
  189. package/dist/utils/runtime-homes.js.map +1 -0
  190. package/dist/utils/skills.d.ts +152 -1
  191. package/dist/utils/skills.d.ts.map +1 -1
  192. package/dist/utils/skills.js +352 -0
  193. package/dist/utils/skills.js.map +1 -1
  194. package/dist/utils/workspace.d.ts +55 -0
  195. package/dist/utils/workspace.d.ts.map +1 -0
  196. package/dist/utils/workspace.js +89 -0
  197. package/dist/utils/workspace.js.map +1 -0
  198. package/package.json +5 -2
@@ -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
- child.on("close", (code, signal) => {
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
- if (timeoutHandle)
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":"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"}
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"}
@@ -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;AAE9C,wBAAsB,cAAc,CAAC,SAAS,EAAE,MAAM,EAAE,EAAE,OAAO,EAAE,YAAY,GAAG,OAAO,CAAC,MAAM,CAAC,CAqBhG;AAED,wBAAsB,gBAAgB,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAMpE"}
1
+ {"version":3,"file":"skills.d.ts","sourceRoot":"","sources":["../../src/utils/skills.ts"],"names":[],"mappings":"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"}