claude-yes 1.72.4 → 1.73.2

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.
@@ -38,6 +38,30 @@
38
38
  }
39
39
  },
40
40
  "definitions": {
41
+ "RegexSource": {
42
+ "description": "Regex source as a raw pattern string or a structured object with explicit flags",
43
+ "oneOf": [
44
+ {
45
+ "type": "string",
46
+ "description": "Regex pattern source text"
47
+ },
48
+ {
49
+ "type": "object",
50
+ "properties": {
51
+ "pattern": {
52
+ "type": "string",
53
+ "description": "Regex pattern source text"
54
+ },
55
+ "flags": {
56
+ "type": "string",
57
+ "description": "Regex flags such as 'm' or 'im'"
58
+ }
59
+ },
60
+ "required": ["pattern"],
61
+ "additionalProperties": false
62
+ }
63
+ ]
64
+ },
41
65
  "AgentCliConfig": {
42
66
  "type": "object",
43
67
  "description": "Configuration for a specific CLI tool",
@@ -77,17 +101,17 @@
77
101
  },
78
102
  "ready": {
79
103
  "type": "array",
80
- "items": { "type": "string" },
104
+ "items": { "$ref": "#/definitions/RegexSource" },
81
105
  "description": "Regex patterns to detect when CLI is ready for input. Set to [] to disable ready check."
82
106
  },
83
107
  "fatal": {
84
108
  "type": "array",
85
- "items": { "type": "string" },
109
+ "items": { "$ref": "#/definitions/RegexSource" },
86
110
  "description": "Regex patterns to detect fatal errors that should stop execution"
87
111
  },
88
112
  "working": {
89
113
  "type": "array",
90
- "items": { "type": "string" },
114
+ "items": { "$ref": "#/definitions/RegexSource" },
91
115
  "description": "Regex patterns to detect when CLI is currently processing"
92
116
  },
93
117
  "exitCommands": {
@@ -106,12 +130,12 @@
106
130
  },
107
131
  "enter": {
108
132
  "type": "array",
109
- "items": { "type": "string" },
133
+ "items": { "$ref": "#/definitions/RegexSource" },
110
134
  "description": "Regex patterns that trigger automatic Enter key press"
111
135
  },
112
136
  "enterExclude": {
113
137
  "type": "array",
114
- "items": { "type": "string" },
138
+ "items": { "$ref": "#/definitions/RegexSource" },
115
139
  "description": "Regex patterns to exclude from auto-enter (even if 'enter' matches)"
116
140
  },
117
141
  "typingRespond": {
@@ -119,7 +143,7 @@
119
143
  "description": "Map of responses to type when specific patterns are matched",
120
144
  "additionalProperties": {
121
145
  "type": "array",
122
- "items": { "type": "string" },
146
+ "items": { "$ref": "#/definitions/RegexSource" },
123
147
  "description": "Regex patterns that trigger this response"
124
148
  },
125
149
  "examples": [
@@ -134,7 +158,7 @@
134
158
  },
135
159
  "restartWithoutContinueArg": {
136
160
  "type": "array",
137
- "items": { "type": "string" },
161
+ "items": { "$ref": "#/definitions/RegexSource" },
138
162
  "description": "Regex patterns for errors that require restart WITHOUT continue args"
139
163
  },
140
164
  "bunx": {
@@ -155,7 +179,7 @@
155
179
  },
156
180
  "updateAvailable": {
157
181
  "type": "array",
158
- "items": { "type": "string" },
182
+ "items": { "$ref": "#/definitions/RegexSource" },
159
183
  "description": "Regex patterns to detect update available messages"
160
184
  }
161
185
  },
@@ -0,0 +1,154 @@
1
+ clis:
2
+ claude:
3
+ promptArg: last-arg
4
+ systemPrompt: --append-system-prompt
5
+ install:
6
+ powershell: 'powershell -Command "irm https://claude.ai/install.ps1 | iex"'
7
+ bash: "curl -fsSL https://claude.ai/install.sh | bash"
8
+ npm: "npm i -g @anthropic-ai/claude-code@latest"
9
+ ready:
10
+ - '\? for shortcuts'
11
+ - ' Try "'
12
+ - '^\? for shortcuts'
13
+ - "^>[  ]"
14
+ - "──────────+"
15
+ working:
16
+ - esc to interrupt
17
+ - to run in background
18
+ typingRespond:
19
+ "1\n":
20
+ - '│ Do you want to use this API key\?'
21
+ enter:
22
+ - pattern: ' > 1\. Yes, I trust this folder'
23
+ flags: m
24
+ - pattern: '❯ ?1\. ?Dark mode ?✔'
25
+ flags: m
26
+ - pattern: '❯ ?1\. ?Yes'
27
+ flags: m
28
+ - pattern: '^.{0,4} ?1\. ?Dark mode ?✔'
29
+ flags: m
30
+ - pattern: '^.{0,4} ?1\. ?Yes'
31
+ flags: m
32
+ - pattern: Press Enter to continue
33
+ flags: m
34
+ fatal:
35
+ - Claude usage limit reached
36
+ - "^error: unknown option"
37
+ restoreArgs:
38
+ - --continue
39
+ restartWithoutContinueArg:
40
+ - No conversation found to continue
41
+ exitCommands:
42
+ - /exit
43
+ bunx: true
44
+ defaultArgs: []
45
+
46
+ gemini:
47
+ install:
48
+ npm: "npm install -g @google/gemini-cli@latest"
49
+ ready:
50
+ - Type your message
51
+ enter:
52
+ - "│ ● 1. Yes, allow once"
53
+ - "│ ● 1. Allow once"
54
+ - "│ ● 1. Allow once"
55
+ fatal:
56
+ - Error resuming session
57
+ - No previous sessions found for this project\.
58
+ restoreArgs:
59
+ - --resume
60
+ restartWithoutContinueArg:
61
+ - Error resuming session
62
+ - No previous sessions found for this project\.
63
+ exitCommands:
64
+ - /chat save ${PWD}
65
+ - /quit
66
+
67
+ codex:
68
+ promptArg: first-arg
69
+ install:
70
+ npm: "npm install -g @openai/codex@latest"
71
+ updateAvailable:
72
+ - "^✨⬆️ Update available!"
73
+ ready:
74
+ - ⏎ send
75
+ - "› "
76
+ - '\? for shortcuts'
77
+ enter:
78
+ - "> 1. Yes,"
79
+ - "> 1. Yes, allow Codex to work in this folder"
80
+ - "> 1. Approve and run now"
81
+ fatal:
82
+ - "Error: The cursor position could not be read within"
83
+ defaultArgs:
84
+ - --search
85
+ noEOL: true
86
+
87
+ qwen:
88
+ install:
89
+ npm: "npm install -g @qwen-code/qwen-code@latest"
90
+ version: qwen --version
91
+
92
+ grok:
93
+ install:
94
+ npm: "npm install -g @vibe-kit/grok-cli@latest"
95
+ ready:
96
+ - "^ │ ❯ +"
97
+ enter:
98
+ - "^ 1. Yes"
99
+
100
+ copilot:
101
+ promptArg: -i
102
+ install:
103
+ npm: "npm install -g @github/copilot"
104
+ ready:
105
+ - "^ +> "
106
+ - Ctrl\+c Exit
107
+ enter:
108
+ - " │ ❯ +1. Yes, proceed"
109
+ - " ❯ +1. Yes"
110
+ system: "IMPORTANT: USE TOOLS TO RESEARCH/EXPLORE/WORKAROUND your self, except you need approve on DESTRUCTIVE OPERATIONS, DONT ASK QUESTIONS ON USERS REQUEST, JUST SOLVE IT."
111
+ fatal: []
112
+
113
+ cursor:
114
+ install:
115
+ bash: open https://cursor.com/ja/docs/cli/installation
116
+ binary: cursor-agent
117
+ bunx: true
118
+ ready:
119
+ - / commands
120
+ enter:
121
+ - '→ Run \(once\) \(y\) \(enter\)'
122
+ - '▶ \[a\] Trust this workspace'
123
+ fatal:
124
+ - "Error: You've hit your usage limit"
125
+
126
+ auggie:
127
+ help: https://docs.augmentcode.com/cli/overview
128
+ install:
129
+ npm: "npm install -g @augmentcode/auggie"
130
+ promptArg: first-arg
131
+ ready:
132
+ - " > "
133
+ - '\? to show shortcuts'
134
+ typingRespond:
135
+ "y\n":
136
+ - '\[Y\] Enable indexing - Unlock full workspace understanding'
137
+ enter: []
138
+ fatal: []
139
+
140
+ amp:
141
+ help: https://ampcode.com/
142
+ install:
143
+ bash: "curl -fsSL https://ampcode.com/install.sh | bash"
144
+ npm: "npm i -g @sourcegraph/amp"
145
+ enter:
146
+ - "^.{0,4} Approve "
147
+
148
+ opencode:
149
+ help: https://opencode.ai/
150
+ install:
151
+ bash: "curl -fsSL https://opencode.ai/install | bash"
152
+ npm: "npm i -g opencode-ai"
153
+ enter: []
154
+ ready: []
@@ -0,0 +1,10 @@
1
+ import { t as CLIS_CONFIG } from "./ts-CsdLrLod.js";
2
+ import "./logger-B9h0djqx.js";
3
+ import "./pidStore-CPrgJSJi.js";
4
+
5
+ //#region ts/SUPPORTED_CLIS.ts
6
+ const SUPPORTED_CLIS = Object.keys(CLIS_CONFIG);
7
+
8
+ //#endregion
9
+ export { SUPPORTED_CLIS };
10
+ //# sourceMappingURL=SUPPORTED_CLIS-C7sGMdKJ.js.map
@@ -1,7 +1,8 @@
1
- import { t as logger } from "./logger-CX77vJDA.js";
1
+ import { n as logger } from "./logger-B9h0djqx.js";
2
2
  import os from "node:os";
3
3
  import { access, mkdir, readFile, writeFile } from "node:fs/promises";
4
4
  import path from "node:path";
5
+ import { fileURLToPath } from "node:url";
5
6
  import { parse } from "yaml";
6
7
 
7
8
  //#region ts/defineConfig.ts
@@ -10,6 +11,68 @@ async function defineCliYesConfig(cfg) {
10
11
  return cfg;
11
12
  }
12
13
 
14
+ //#endregion
15
+ //#region ts/configShared.ts
16
+ function compileRegexSource(source) {
17
+ if (source instanceof RegExp) return source;
18
+ if (typeof source === "string") return new RegExp(source);
19
+ return new RegExp(source.pattern, source.flags ?? "");
20
+ }
21
+ function compileRegexList(sources) {
22
+ return sources?.map((source) => compileRegexSource(source));
23
+ }
24
+ function compileTypingRespond(typingRespond) {
25
+ if (!typingRespond) return void 0;
26
+ return Object.fromEntries(Object.entries(typingRespond).map(([message, patterns]) => [message, patterns.map(compileRegexSource)]));
27
+ }
28
+ function normalizeCliConfig(raw) {
29
+ const { ready, fatal, working, enter, enterExclude, typingRespond, restartWithoutContinueArg, updateAvailable, exitCommands, exitCommand, ...rest } = raw;
30
+ return {
31
+ ...rest,
32
+ ready: compileRegexList(ready),
33
+ fatal: compileRegexList(fatal),
34
+ working: compileRegexList(working),
35
+ enter: compileRegexList(enter),
36
+ enterExclude: compileRegexList(enterExclude),
37
+ typingRespond: compileTypingRespond(typingRespond),
38
+ restartWithoutContinueArg: compileRegexList(restartWithoutContinueArg),
39
+ updateAvailable: compileRegexList(updateAvailable),
40
+ exitCommands: exitCommands ?? exitCommand
41
+ };
42
+ }
43
+ function normalizeAgentYesConfig(raw) {
44
+ const normalized = {};
45
+ if (raw.configDir !== void 0) normalized.configDir = raw.configDir;
46
+ if (raw.logsDir !== void 0) normalized.logsDir = raw.logsDir;
47
+ if (raw.clis) normalized.clis = Object.fromEntries(Object.entries(raw.clis).map(([name, cliConfig]) => [name, normalizeCliConfig(cliConfig)]));
48
+ return normalized;
49
+ }
50
+ async function fileExists$1(filepath) {
51
+ try {
52
+ await access(filepath);
53
+ return true;
54
+ } catch {
55
+ return false;
56
+ }
57
+ }
58
+ async function findSharedCliDefaultsPath(fromUrl = import.meta.url) {
59
+ let currentDir = path.dirname(fileURLToPath(fromUrl));
60
+ while (true) {
61
+ const candidate = path.resolve(currentDir, "default.config.yaml");
62
+ if (await fileExists$1(candidate)) return candidate;
63
+ const parent = path.dirname(currentDir);
64
+ if (parent === currentDir) break;
65
+ currentDir = parent;
66
+ }
67
+ throw new Error("Unable to locate default.config.yaml from current package path");
68
+ }
69
+ async function loadSharedCliDefaults(fromUrl = import.meta.url) {
70
+ const filepath = await findSharedCliDefaultsPath(fromUrl);
71
+ const parsed = parse(await readFile(filepath, "utf8"));
72
+ if (!parsed || typeof parsed !== "object") throw new Error(`Invalid shared CLI defaults file: ${filepath}`);
73
+ return normalizeAgentYesConfig(parsed).clis ?? {};
74
+ }
75
+
13
76
  //#endregion
14
77
  //#region ts/utils.ts
15
78
  function deepMixin(target, source, ...more) {
@@ -51,12 +114,18 @@ async function fileExists(filepath) {
51
114
  async function parseConfigFile(filepath) {
52
115
  const content = await readFile(filepath, "utf-8");
53
116
  const ext = path.extname(filepath).toLowerCase();
117
+ let parsed;
54
118
  switch (ext) {
55
- case ".json": return JSON.parse(content);
119
+ case ".json":
120
+ parsed = JSON.parse(content);
121
+ break;
56
122
  case ".yml":
57
- case ".yaml": return parse(content) ?? {};
123
+ case ".yaml":
124
+ parsed = parse(content) ?? {};
125
+ break;
58
126
  default: throw new Error(`Unsupported config file extension: ${ext}`);
59
127
  }
128
+ return normalizeAgentYesConfig(parsed);
60
129
  }
61
130
  /**
62
131
  * Find config file in a directory (checks all supported extensions)
@@ -209,127 +278,14 @@ const legacyConfigs = await Promise.all([
209
278
  import(path.resolve(process.cwd(), ".agent-yes/config.ts")).catch(() => ({ default: {} })).then((mod) => mod.default)
210
279
  ]);
211
280
  var agent_yes_config_default = deepMixin(await getDefaultConfig(), cascadingConfig, ...legacyConfigs);
212
- function getDefaultConfig() {
281
+ async function getDefaultConfig() {
213
282
  return defineCliYesConfig({
214
283
  configDir,
215
284
  logsDir: configDir && path.resolve(configDir, "logs"),
216
- clis: {
217
- claude: {
218
- promptArg: "last-arg",
219
- systemPrompt: "--append-system-prompt",
220
- install: {
221
- powershell: "powershell -Command \"irm https://claude.ai/install.ps1 | iex\"",
222
- bash: "curl -fsSL https://claude.ai/install.sh | bash",
223
- npm: "npm i -g @anthropic-ai/claude-code@latest"
224
- },
225
- ready: [
226
- /\? for shortcuts/,
227
- /\u00A0Try "/,
228
- /^\? for shortcuts/,
229
- /^>[ \u00A0]/,
230
- /──────────+/
231
- ],
232
- working: [/esc to interrupt/, /to run in background/],
233
- typingRespond: { "1\n": [/│ Do you want to use this API key\?/] },
234
- enter: [
235
- / > 1. Yes, I trust this folder/m,
236
- /❯ ?1\. ?Dark mode ?✔/m,
237
- /❯ ?1\. ?Yes/m,
238
- /^.{0,4} ?1\. ?Dark mode ?✔/m,
239
- /^.{0,4} ?1\. ?Yes/m,
240
- /Press Enter to continue…/m
241
- ],
242
- fatal: [
243
- /⎿ Claude usage limit reached\./,
244
- /^error: unknown option/,
245
- /No conversation found to continue/
246
- ],
247
- restoreArgs: ["--continue"],
248
- exitCommand: ["/exit"],
249
- bunx: true,
250
- defaultArgs: []
251
- },
252
- gemini: {
253
- install: "npm install -g @google/gemini-cli@latest",
254
- ready: [/Type your message/],
255
- enter: [
256
- /│ ● 1. Yes, allow once/,
257
- /│ ● 1. Allow once/,
258
- /│ ● 1. Allow once/
259
- ],
260
- fatal: [/Error resuming session/, /No previous sessions found for this project./],
261
- restoreArgs: ["--resume"],
262
- exitCommand: ["/chat save ${PWD}", "/quit"]
263
- },
264
- codex: {
265
- promptArg: "first-arg",
266
- install: "npm install -g @openai/codex@latest",
267
- updateAvailable: [/^✨⬆️ Update available!/],
268
- ready: [/⏎ send/, /\? for shortcuts/],
269
- enter: [
270
- /> 1. Yes,/,
271
- /> 1. Yes, allow Codex to work in this folder/,
272
- /> 1. Approve and run now/
273
- ],
274
- fatal: [/Error: The cursor position could not be read within/],
275
- defaultArgs: ["--search"],
276
- noEOL: true
277
- },
278
- qwen: {
279
- install: "npm install -g @qwen-code/qwen-code@latest",
280
- version: "qwen --version"
281
- },
282
- grok: {
283
- install: "npm install -g @vibe-kit/grok-cli@latest",
284
- ready: [/^ │ ❯ +/],
285
- enter: [/^ 1. Yes/]
286
- },
287
- copilot: {
288
- promptArg: "-i",
289
- install: "npm install -g @github/copilot",
290
- ready: [/^ +> /, /Ctrl\+c Exit/],
291
- enter: [/ │ ❯ +1. Yes, proceed/, / ❯ +1. Yes/],
292
- system: "IMPORTANT: USE TOOLS TO RESEARCH/EXPLORE/WORKAROUND your self, except you need approve on DESTRUCTIVE OPERATIONS, DONT ASK QUESTIONS ON USERS REQUEST, JUST SOLVE IT.",
293
- fatal: []
294
- },
295
- cursor: {
296
- install: "open https://cursor.com/ja/docs/cli/installation",
297
- binary: "cursor-agent",
298
- bunx: true,
299
- ready: [/\/ commands/],
300
- enter: [/→ Run \(once\) \(y\) \(enter\)/, /▶ \[a\] Trust this workspace/],
301
- fatal: [/^ Error: You've hit your usage limit/]
302
- },
303
- auggie: {
304
- help: "https://docs.augmentcode.com/cli/overview",
305
- install: "npm install -g @augmentcode/auggie",
306
- promptArg: "first-arg",
307
- ready: [/ > /, /\? to show shortcuts/],
308
- typingRespond: { "y\n": [/\[Y\] Enable indexing - Unlock full workspace understanding/] },
309
- enter: [],
310
- fatal: []
311
- },
312
- amp: {
313
- help: "https://ampcode.com/",
314
- install: {
315
- bash: "curl -fsSL https://ampcode.com/install.sh | bash",
316
- npm: "npm i -g @sourcegraph/amp"
317
- },
318
- enter: [/^.{0,4} Approve /]
319
- },
320
- opencode: {
321
- help: "https://opencode.ai/",
322
- install: {
323
- bash: "curl -fsSL https://opencode.ai/install | bash",
324
- npm: "npm i -g opencode-ai"
325
- },
326
- enter: [],
327
- ready: []
328
- }
329
- }
285
+ clis: await loadSharedCliDefaults(import.meta.url)
330
286
  });
331
287
  }
332
288
 
333
289
  //#endregion
334
290
  export { agent_yes_config_default as default };
335
- //# sourceMappingURL=agent-yes.config-CtQprJrA.js.map
291
+ //# sourceMappingURL=agent-yes.config-CyP5iRZf.js.map