@pickle-pee/genesis-cli 0.0.1 → 0.0.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.
@@ -19,7 +19,7 @@ export interface InputLoopOptions {
19
19
  cursor: number;
20
20
  }) => void;
21
21
  /** Called for special keys (rawMode only). */
22
- readonly onKey?: (key: "up" | "down" | "pageup" | "pagedown" | "wheelup" | "wheeldown" | "tab" | "shifttab" | "esc" | "ctrlc") => void;
22
+ readonly onKey?: (key: "up" | "down" | "pageup" | "pagedown" | "wheelup" | "wheeldown" | "tab" | "shifttab" | "esc" | "ctrlc" | "ctrlo") => void;
23
23
  /** Called when Tab is pressed in rawMode; may replace the current buffer. */
24
24
  readonly onTabComplete?: (state: {
25
25
  buffer: string;
@@ -30,6 +30,12 @@ export interface InputLoopOptions {
30
30
  } | null;
31
31
  /** Called for terminal focus changes (rawMode only). */
32
32
  readonly onTerminalEvent?: (event: "focusin" | "focusout") => void;
33
+ /** Called for mouse button events (rawMode only). */
34
+ readonly onMouse?: (event: {
35
+ kind: "leftdown" | "leftdrag" | "leftup";
36
+ row: number;
37
+ column: number;
38
+ }) => void;
33
39
  /** Whether pressing Enter should emit a terminal newline in raw mode. Defaults to true. */
34
40
  readonly submitNewline?: boolean;
35
41
  }
@@ -55,6 +55,7 @@ function createInputLoop(options = {}) {
55
55
  onKey: options.onKey,
56
56
  onTabComplete: options.onTabComplete,
57
57
  onTerminalEvent: options.onTerminalEvent,
58
+ onMouse: options.onMouse,
58
59
  submitNewline: options.submitNewline,
59
60
  });
60
61
  }
@@ -104,7 +105,7 @@ function createInputLoop(options = {}) {
104
105
  };
105
106
  }
106
107
  function createRawInputLoop(options) {
107
- const { prompt, input, output, onInputStateChange, onKey, onTabComplete, onTerminalEvent, submitNewline = true, } = options;
108
+ const { prompt, input, output, onInputStateChange, onKey, onTabComplete, onTerminalEvent, onMouse, submitNewline = true, } = options;
108
109
  const sgrMousePattern = new RegExp(`^${String.fromCharCode(27)}\\[<(\\d+);(\\d+);(\\d+)([Mm])$`);
109
110
  let closed = false;
110
111
  let buffer = "";
@@ -193,12 +194,28 @@ function createRawInputLoop(options) {
193
194
  const sgrMouse = sgrMousePattern.exec(seq);
194
195
  if (sgrMouse) {
195
196
  const button = Number.parseInt(sgrMouse[1] ?? "", 10);
197
+ const column = Number.parseInt(sgrMouse[2] ?? "", 10);
198
+ const row = Number.parseInt(sgrMouse[3] ?? "", 10);
199
+ const final = sgrMouse[4] ?? "M";
196
200
  if ((button & 0x43) === 0x40) {
197
201
  onKey?.("wheelup");
198
202
  }
199
203
  else if ((button & 0x43) === 0x41) {
200
204
  onKey?.("wheeldown");
201
205
  }
206
+ else if (Number.isFinite(column) && Number.isFinite(row)) {
207
+ const baseButton = button & 0x03;
208
+ const isMotion = (button & 0x20) !== 0;
209
+ if (final === "m" && baseButton === 0) {
210
+ onMouse?.({ kind: "leftup", row, column });
211
+ }
212
+ else if (isMotion && baseButton === 0) {
213
+ onMouse?.({ kind: "leftdrag", row, column });
214
+ }
215
+ else if (!isMotion && final === "M" && baseButton === 0) {
216
+ onMouse?.({ kind: "leftdown", row, column });
217
+ }
218
+ }
202
219
  return;
203
220
  }
204
221
  if (seq.length === 6 && seq.startsWith("\u001b[M")) {
@@ -252,6 +269,10 @@ function createRawInputLoop(options) {
252
269
  }
253
270
  continue;
254
271
  }
272
+ if (code === 15) {
273
+ onKey?.("ctrlo");
274
+ continue;
275
+ }
255
276
  if (code === 27) {
256
277
  escapeBuffer = ch;
257
278
  if (escapeTimeout) {
@@ -1 +1 @@
1
- {"version":3,"file":"input-loop.js","sourceRoot":"","sources":["../src/input-loop.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"input-loop.js","sourceRoot":"","sources":["../src/input-loop.ts"],"names":[],"mappings":"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"}
package/dist/main.d.ts CHANGED
@@ -32,5 +32,6 @@ export interface ParsedArgs {
32
32
  export declare function parseArgs(argv: readonly string[]): ParsedArgs;
33
33
  export declare function main(argv?: readonly string[]): Promise<void>;
34
34
  export declare function resolveCliOptions(flags: Readonly<Record<string, string | boolean>>): Promise<CliOptions>;
35
+ export declare function ensureUserSettingsFile(settingsPath: string, env?: NodeJS.ProcessEnv): Promise<void>;
35
36
  export declare function readCliPackageVersion(packageJsonPath?: string): string;
36
37
  export {};
package/dist/main.js CHANGED
@@ -4,6 +4,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
4
4
  exports.parseArgs = parseArgs;
5
5
  exports.main = main;
6
6
  exports.resolveCliOptions = resolveCliOptions;
7
+ exports.ensureUserSettingsFile = ensureUserSettingsFile;
7
8
  exports.readCliPackageVersion = readCliPackageVersion;
8
9
  const node_fs_1 = require("node:fs");
9
10
  const promises_1 = require("node:fs/promises");
@@ -92,12 +93,17 @@ async function resolveCliOptions(flags) {
92
93
  const workingDirectory = (0, node_path_1.resolve)(readStringFlag(flags, "cwd", process.cwd()));
93
94
  const agentDir = (0, node_path_1.resolve)(readStringFlag(flags, "agent-dir", (0, node_path_1.resolve)(".genesis-local/pi-agent")));
94
95
  const settingsPath = (0, node_path_1.resolve)((0, node_os_1.homedir)(), ".genesis-cli", "settings.json");
95
- const settingsEnv = await readSettingsEnv(settingsPath);
96
- applySettingsEnv(settingsEnv);
96
+ const shellEnv = { ...process.env };
97
+ try {
98
+ await ensureUserSettingsFile(settingsPath);
99
+ }
100
+ catch { }
101
+ const settingsLayers = await loadSettingsLayers(settingsPath, workingDirectory);
102
+ applySettingsEnv(settingsLayers.mergedEnv);
97
103
  const agentConfigPath = (0, node_path_1.resolve)(agentDir, "config.json");
98
- const projectConfigPath = (0, node_path_1.resolve)(workingDirectory, ".genesis/config.json");
99
- const agentConfig = await readOptionalJson(agentConfigPath);
100
- const projectConfig = await readOptionalJson(projectConfigPath);
104
+ const agentConfig = await readOptionalSettingsFile(agentConfigPath);
105
+ const projectSettingsPath = (0, node_path_1.resolve)(workingDirectory, ".genesis/settings.json");
106
+ const localSettingsPath = (0, node_path_1.resolve)(workingDirectory, ".genesis/settings.local.json");
101
107
  const mode = readModeFlag(flags, "mode", "interactive");
102
108
  const sources = {};
103
109
  sources.cwd =
@@ -108,13 +114,37 @@ async function resolveCliOptions(flags) {
108
114
  : { layer: "default", detail: ".genesis-local/pi-agent" };
109
115
  const provider = pickString([
110
116
  { value: asOptionalString(flags.provider), layer: "cli", detail: "--provider" },
111
- { value: process.env.GENESIS_MODEL_PROVIDER, layer: "env", detail: "GENESIS_MODEL_PROVIDER" },
117
+ { value: shellEnv.GENESIS_MODEL_PROVIDER, layer: "env", detail: "GENESIS_MODEL_PROVIDER" },
118
+ {
119
+ value: settingsLayers.local?.provider,
120
+ layer: "local",
121
+ detail: localSettingsPath,
122
+ },
123
+ {
124
+ value: readSettingsEnvValue(settingsLayers.local, "GENESIS_MODEL_PROVIDER"),
125
+ layer: "local",
126
+ detail: `${localSettingsPath} env.GENESIS_MODEL_PROVIDER`,
127
+ },
128
+ {
129
+ value: settingsLayers.project?.provider,
130
+ layer: "project",
131
+ detail: projectSettingsPath,
132
+ },
133
+ {
134
+ value: readSettingsEnvValue(settingsLayers.project, "GENESIS_MODEL_PROVIDER"),
135
+ layer: "project",
136
+ detail: `${projectSettingsPath} env.GENESIS_MODEL_PROVIDER`,
137
+ },
138
+ {
139
+ value: settingsLayers.user?.provider,
140
+ layer: "user",
141
+ detail: settingsPath,
142
+ },
112
143
  {
113
- value: readSettingsEnvValue(settingsEnv, "GENESIS_MODEL_PROVIDER"),
114
- layer: "settings",
144
+ value: readSettingsEnvValue(settingsLayers.user, "GENESIS_MODEL_PROVIDER"),
145
+ layer: "user",
115
146
  detail: `${settingsPath} env.GENESIS_MODEL_PROVIDER`,
116
147
  },
117
- { value: projectConfig?.provider, layer: "project", detail: projectConfigPath },
118
148
  { value: agentConfig?.provider, layer: "agent", detail: agentConfigPath },
119
149
  ], "zai", { layer: "default", detail: "default" }, (value, source) => {
120
150
  sources.provider = source;
@@ -122,13 +152,37 @@ async function resolveCliOptions(flags) {
122
152
  });
123
153
  const modelId = pickString([
124
154
  { value: asOptionalString(flags.model), layer: "cli", detail: "--model" },
125
- { value: process.env.GENESIS_MODEL_ID, layer: "env", detail: "GENESIS_MODEL_ID" },
155
+ { value: shellEnv.GENESIS_MODEL_ID, layer: "env", detail: "GENESIS_MODEL_ID" },
126
156
  {
127
- value: readSettingsEnvValue(settingsEnv, "GENESIS_MODEL_ID"),
128
- layer: "settings",
157
+ value: settingsLayers.local?.model,
158
+ layer: "local",
159
+ detail: localSettingsPath,
160
+ },
161
+ {
162
+ value: readSettingsEnvValue(settingsLayers.local, "GENESIS_MODEL_ID"),
163
+ layer: "local",
164
+ detail: `${localSettingsPath} env.GENESIS_MODEL_ID`,
165
+ },
166
+ {
167
+ value: settingsLayers.project?.model,
168
+ layer: "project",
169
+ detail: projectSettingsPath,
170
+ },
171
+ {
172
+ value: readSettingsEnvValue(settingsLayers.project, "GENESIS_MODEL_ID"),
173
+ layer: "project",
174
+ detail: `${projectSettingsPath} env.GENESIS_MODEL_ID`,
175
+ },
176
+ {
177
+ value: settingsLayers.user?.model,
178
+ layer: "user",
179
+ detail: settingsPath,
180
+ },
181
+ {
182
+ value: readSettingsEnvValue(settingsLayers.user, "GENESIS_MODEL_ID"),
183
+ layer: "user",
129
184
  detail: `${settingsPath} env.GENESIS_MODEL_ID`,
130
185
  },
131
- { value: projectConfig?.model, layer: "project", detail: projectConfigPath },
132
186
  { value: agentConfig?.model, layer: "agent", detail: agentConfigPath },
133
187
  ], "glm-5.1", { layer: "default", detail: "default" }, (value, source) => {
134
188
  sources.model = source;
@@ -136,13 +190,37 @@ async function resolveCliOptions(flags) {
136
190
  });
137
191
  const displayName = pickOptionalString([
138
192
  { value: asOptionalString(flags["display-name"]), layer: "cli", detail: "--display-name" },
139
- { value: process.env.GENESIS_MODEL_DISPLAY_NAME, layer: "env", detail: "GENESIS_MODEL_DISPLAY_NAME" },
193
+ { value: shellEnv.GENESIS_MODEL_DISPLAY_NAME, layer: "env", detail: "GENESIS_MODEL_DISPLAY_NAME" },
194
+ {
195
+ value: settingsLayers.local?.displayName,
196
+ layer: "local",
197
+ detail: localSettingsPath,
198
+ },
199
+ {
200
+ value: readSettingsEnvValue(settingsLayers.local, "GENESIS_MODEL_DISPLAY_NAME"),
201
+ layer: "local",
202
+ detail: `${localSettingsPath} env.GENESIS_MODEL_DISPLAY_NAME`,
203
+ },
204
+ {
205
+ value: settingsLayers.project?.displayName,
206
+ layer: "project",
207
+ detail: projectSettingsPath,
208
+ },
209
+ {
210
+ value: readSettingsEnvValue(settingsLayers.project, "GENESIS_MODEL_DISPLAY_NAME"),
211
+ layer: "project",
212
+ detail: `${projectSettingsPath} env.GENESIS_MODEL_DISPLAY_NAME`,
213
+ },
214
+ {
215
+ value: settingsLayers.user?.displayName,
216
+ layer: "user",
217
+ detail: settingsPath,
218
+ },
140
219
  {
141
- value: readSettingsEnvValue(settingsEnv, "GENESIS_MODEL_DISPLAY_NAME"),
142
- layer: "settings",
220
+ value: readSettingsEnvValue(settingsLayers.user, "GENESIS_MODEL_DISPLAY_NAME"),
221
+ layer: "user",
143
222
  detail: `${settingsPath} env.GENESIS_MODEL_DISPLAY_NAME`,
144
223
  },
145
- { value: projectConfig?.displayName, layer: "project", detail: projectConfigPath },
146
224
  { value: agentConfig?.displayName, layer: "agent", detail: agentConfigPath },
147
225
  ], (value, source) => {
148
226
  sources.displayName = source;
@@ -150,13 +228,37 @@ async function resolveCliOptions(flags) {
150
228
  });
151
229
  const toolSetRaw = pickTools([
152
230
  { value: asOptionalString(flags.tools), layer: "cli", detail: "--tools" },
153
- { value: process.env.GENESIS_TOOL_SET, layer: "env", detail: "GENESIS_TOOL_SET" },
231
+ { value: shellEnv.GENESIS_TOOL_SET, layer: "env", detail: "GENESIS_TOOL_SET" },
154
232
  {
155
- value: readSettingsEnvValue(settingsEnv, "GENESIS_TOOL_SET"),
156
- layer: "settings",
233
+ value: settingsLayers.local?.tools,
234
+ layer: "local",
235
+ detail: localSettingsPath,
236
+ },
237
+ {
238
+ value: readSettingsEnvValue(settingsLayers.local, "GENESIS_TOOL_SET"),
239
+ layer: "local",
240
+ detail: `${localSettingsPath} env.GENESIS_TOOL_SET`,
241
+ },
242
+ {
243
+ value: settingsLayers.project?.tools,
244
+ layer: "project",
245
+ detail: projectSettingsPath,
246
+ },
247
+ {
248
+ value: readSettingsEnvValue(settingsLayers.project, "GENESIS_TOOL_SET"),
249
+ layer: "project",
250
+ detail: `${projectSettingsPath} env.GENESIS_TOOL_SET`,
251
+ },
252
+ {
253
+ value: settingsLayers.user?.tools,
254
+ layer: "user",
255
+ detail: settingsPath,
256
+ },
257
+ {
258
+ value: readSettingsEnvValue(settingsLayers.user, "GENESIS_TOOL_SET"),
259
+ layer: "user",
157
260
  detail: `${settingsPath} env.GENESIS_TOOL_SET`,
158
261
  },
159
- { value: projectConfig?.tools, layer: "project", detail: projectConfigPath },
160
262
  { value: agentConfig?.tools, layer: "agent", detail: agentConfigPath },
161
263
  ], "read,bash,edit,write", { layer: "default", detail: "default" }, (value, source) => {
162
264
  sources.tools = source;
@@ -165,13 +267,37 @@ async function resolveCliOptions(flags) {
165
267
  const toolSet = splitCsv(toolSetRaw);
166
268
  const thinkingLevel = pickOptionalString([
167
269
  { value: asOptionalString(flags.thinking), layer: "cli", detail: "--thinking" },
168
- { value: process.env.GENESIS_THINKING_LEVEL, layer: "env", detail: "GENESIS_THINKING_LEVEL" },
270
+ { value: shellEnv.GENESIS_THINKING_LEVEL, layer: "env", detail: "GENESIS_THINKING_LEVEL" },
271
+ {
272
+ value: settingsLayers.local?.thinking,
273
+ layer: "local",
274
+ detail: localSettingsPath,
275
+ },
276
+ {
277
+ value: readSettingsEnvValue(settingsLayers.local, "GENESIS_THINKING_LEVEL"),
278
+ layer: "local",
279
+ detail: `${localSettingsPath} env.GENESIS_THINKING_LEVEL`,
280
+ },
169
281
  {
170
- value: readSettingsEnvValue(settingsEnv, "GENESIS_THINKING_LEVEL"),
171
- layer: "settings",
282
+ value: settingsLayers.project?.thinking,
283
+ layer: "project",
284
+ detail: projectSettingsPath,
285
+ },
286
+ {
287
+ value: readSettingsEnvValue(settingsLayers.project, "GENESIS_THINKING_LEVEL"),
288
+ layer: "project",
289
+ detail: `${projectSettingsPath} env.GENESIS_THINKING_LEVEL`,
290
+ },
291
+ {
292
+ value: settingsLayers.user?.thinking,
293
+ layer: "user",
294
+ detail: settingsPath,
295
+ },
296
+ {
297
+ value: readSettingsEnvValue(settingsLayers.user, "GENESIS_THINKING_LEVEL"),
298
+ layer: "user",
172
299
  detail: `${settingsPath} env.GENESIS_THINKING_LEVEL`,
173
300
  },
174
- { value: projectConfig?.thinking, layer: "project", detail: projectConfigPath },
175
301
  { value: agentConfig?.thinking, layer: "agent", detail: agentConfigPath },
176
302
  ], (value, source) => {
177
303
  sources.thinking = source;
@@ -179,13 +305,37 @@ async function resolveCliOptions(flags) {
179
305
  });
180
306
  const bootstrapBaseUrl = pickOptionalString([
181
307
  { value: asOptionalString(flags["bootstrap-base-url"]), layer: "cli", detail: "--bootstrap-base-url" },
182
- { value: process.env.GENESIS_BOOTSTRAP_BASE_URL, layer: "env", detail: "GENESIS_BOOTSTRAP_BASE_URL" },
308
+ { value: shellEnv.GENESIS_BOOTSTRAP_BASE_URL, layer: "env", detail: "GENESIS_BOOTSTRAP_BASE_URL" },
309
+ {
310
+ value: settingsLayers.local?.bootstrap?.baseUrl,
311
+ layer: "local",
312
+ detail: localSettingsPath,
313
+ },
314
+ {
315
+ value: readSettingsEnvValue(settingsLayers.local, "GENESIS_BOOTSTRAP_BASE_URL"),
316
+ layer: "local",
317
+ detail: `${localSettingsPath} env.GENESIS_BOOTSTRAP_BASE_URL`,
318
+ },
319
+ {
320
+ value: settingsLayers.project?.bootstrap?.baseUrl,
321
+ layer: "project",
322
+ detail: projectSettingsPath,
323
+ },
183
324
  {
184
- value: readSettingsEnvValue(settingsEnv, "GENESIS_BOOTSTRAP_BASE_URL"),
185
- layer: "settings",
325
+ value: readSettingsEnvValue(settingsLayers.project, "GENESIS_BOOTSTRAP_BASE_URL"),
326
+ layer: "project",
327
+ detail: `${projectSettingsPath} env.GENESIS_BOOTSTRAP_BASE_URL`,
328
+ },
329
+ {
330
+ value: settingsLayers.user?.bootstrap?.baseUrl,
331
+ layer: "user",
332
+ detail: settingsPath,
333
+ },
334
+ {
335
+ value: readSettingsEnvValue(settingsLayers.user, "GENESIS_BOOTSTRAP_BASE_URL"),
336
+ layer: "user",
186
337
  detail: `${settingsPath} env.GENESIS_BOOTSTRAP_BASE_URL`,
187
338
  },
188
- { value: projectConfig?.bootstrap?.baseUrl, layer: "project", detail: projectConfigPath },
189
339
  { value: agentConfig?.bootstrap?.baseUrl, layer: "agent", detail: agentConfigPath },
190
340
  ], (value, source) => {
191
341
  sources["bootstrap.baseUrl"] = source;
@@ -193,13 +343,37 @@ async function resolveCliOptions(flags) {
193
343
  });
194
344
  const bootstrapApi = pickOptionalString([
195
345
  { value: asOptionalString(flags["bootstrap-api"]), layer: "cli", detail: "--bootstrap-api" },
196
- { value: process.env.GENESIS_BOOTSTRAP_API, layer: "env", detail: "GENESIS_BOOTSTRAP_API" },
346
+ { value: shellEnv.GENESIS_BOOTSTRAP_API, layer: "env", detail: "GENESIS_BOOTSTRAP_API" },
347
+ {
348
+ value: settingsLayers.local?.bootstrap?.api,
349
+ layer: "local",
350
+ detail: localSettingsPath,
351
+ },
352
+ {
353
+ value: readSettingsEnvValue(settingsLayers.local, "GENESIS_BOOTSTRAP_API"),
354
+ layer: "local",
355
+ detail: `${localSettingsPath} env.GENESIS_BOOTSTRAP_API`,
356
+ },
357
+ {
358
+ value: settingsLayers.project?.bootstrap?.api,
359
+ layer: "project",
360
+ detail: projectSettingsPath,
361
+ },
362
+ {
363
+ value: readSettingsEnvValue(settingsLayers.project, "GENESIS_BOOTSTRAP_API"),
364
+ layer: "project",
365
+ detail: `${projectSettingsPath} env.GENESIS_BOOTSTRAP_API`,
366
+ },
367
+ {
368
+ value: settingsLayers.user?.bootstrap?.api,
369
+ layer: "user",
370
+ detail: settingsPath,
371
+ },
197
372
  {
198
- value: readSettingsEnvValue(settingsEnv, "GENESIS_BOOTSTRAP_API"),
199
- layer: "settings",
373
+ value: readSettingsEnvValue(settingsLayers.user, "GENESIS_BOOTSTRAP_API"),
374
+ layer: "user",
200
375
  detail: `${settingsPath} env.GENESIS_BOOTSTRAP_API`,
201
376
  },
202
- { value: projectConfig?.bootstrap?.api, layer: "project", detail: projectConfigPath },
203
377
  { value: agentConfig?.bootstrap?.api, layer: "agent", detail: agentConfigPath },
204
378
  ], (value, source) => {
205
379
  sources["bootstrap.api"] = source;
@@ -219,16 +393,27 @@ async function resolveCliOptions(flags) {
219
393
  bootstrapOverrides: {
220
394
  ...(bootstrapBaseUrl !== undefined ? { baseUrl: bootstrapBaseUrl } : {}),
221
395
  ...(bootstrapApi !== undefined ? { api: bootstrapApi } : {}),
222
- apiKeyEnv: readOptionalStringFlag(flags, "bootstrap-api-key-env", process.env.GENESIS_BOOTSTRAP_API_KEY_ENV ??
223
- readSettingsEnvValue(settingsEnv, "GENESIS_BOOTSTRAP_API_KEY_ENV")),
224
- authHeader: readOptionalBooleanFlag(flags, "bootstrap-auth-header", process.env.GENESIS_BOOTSTRAP_AUTH_HEADER ??
225
- readSettingsEnvValue(settingsEnv, "GENESIS_BOOTSTRAP_AUTH_HEADER")),
226
- reasoning: readOptionalBooleanFlag(flags, "bootstrap-reasoning", process.env.GENESIS_BOOTSTRAP_REASONING ?? readSettingsEnvValue(settingsEnv, "GENESIS_BOOTSTRAP_REASONING")),
396
+ apiKeyEnv: readOptionalStringFlag(flags, "bootstrap-api-key-env", shellEnv.GENESIS_BOOTSTRAP_API_KEY_ENV ??
397
+ readSettingsEnvValue(settingsLayers.local, "GENESIS_BOOTSTRAP_API_KEY_ENV") ??
398
+ readSettingsEnvValue(settingsLayers.project, "GENESIS_BOOTSTRAP_API_KEY_ENV") ??
399
+ readSettingsEnvValue(settingsLayers.user, "GENESIS_BOOTSTRAP_API_KEY_ENV")),
400
+ authHeader: readOptionalBooleanFlag(flags, "bootstrap-auth-header", shellEnv.GENESIS_BOOTSTRAP_AUTH_HEADER ??
401
+ readSettingsEnvValue(settingsLayers.local, "GENESIS_BOOTSTRAP_AUTH_HEADER") ??
402
+ readSettingsEnvValue(settingsLayers.project, "GENESIS_BOOTSTRAP_AUTH_HEADER") ??
403
+ readSettingsEnvValue(settingsLayers.user, "GENESIS_BOOTSTRAP_AUTH_HEADER")),
404
+ reasoning: readOptionalBooleanFlag(flags, "bootstrap-reasoning", shellEnv.GENESIS_BOOTSTRAP_REASONING ??
405
+ readSettingsEnvValue(settingsLayers.local, "GENESIS_BOOTSTRAP_REASONING") ??
406
+ readSettingsEnvValue(settingsLayers.project, "GENESIS_BOOTSTRAP_REASONING") ??
407
+ readSettingsEnvValue(settingsLayers.user, "GENESIS_BOOTSTRAP_REASONING")),
227
408
  compat: {
228
- supportsDeveloperRole: readOptionalBooleanFlag(flags, "bootstrap-supports-developer-role", process.env.GENESIS_BOOTSTRAP_SUPPORTS_DEVELOPER_ROLE ??
229
- readSettingsEnvValue(settingsEnv, "GENESIS_BOOTSTRAP_SUPPORTS_DEVELOPER_ROLE")),
230
- supportsReasoningEffort: readOptionalBooleanFlag(flags, "bootstrap-supports-reasoning-effort", process.env.GENESIS_BOOTSTRAP_SUPPORTS_REASONING_EFFORT ??
231
- readSettingsEnvValue(settingsEnv, "GENESIS_BOOTSTRAP_SUPPORTS_REASONING_EFFORT")),
409
+ supportsDeveloperRole: readOptionalBooleanFlag(flags, "bootstrap-supports-developer-role", shellEnv.GENESIS_BOOTSTRAP_SUPPORTS_DEVELOPER_ROLE ??
410
+ readSettingsEnvValue(settingsLayers.local, "GENESIS_BOOTSTRAP_SUPPORTS_DEVELOPER_ROLE") ??
411
+ readSettingsEnvValue(settingsLayers.project, "GENESIS_BOOTSTRAP_SUPPORTS_DEVELOPER_ROLE") ??
412
+ readSettingsEnvValue(settingsLayers.user, "GENESIS_BOOTSTRAP_SUPPORTS_DEVELOPER_ROLE")),
413
+ supportsReasoningEffort: readOptionalBooleanFlag(flags, "bootstrap-supports-reasoning-effort", shellEnv.GENESIS_BOOTSTRAP_SUPPORTS_REASONING_EFFORT ??
414
+ readSettingsEnvValue(settingsLayers.local, "GENESIS_BOOTSTRAP_SUPPORTS_REASONING_EFFORT") ??
415
+ readSettingsEnvValue(settingsLayers.project, "GENESIS_BOOTSTRAP_SUPPORTS_REASONING_EFFORT") ??
416
+ readSettingsEnvValue(settingsLayers.user, "GENESIS_BOOTSTRAP_SUPPORTS_REASONING_EFFORT")),
232
417
  },
233
418
  },
234
419
  configSources: sources,
@@ -282,7 +467,20 @@ function pickTools(candidates, fallback, fallbackSource, onPicked) {
282
467
  }
283
468
  return onPicked(fallback, fallbackSource);
284
469
  }
285
- async function readOptionalJson(filePath) {
470
+ async function loadSettingsLayers(settingsPath, workingDirectory) {
471
+ const projectSettingsPath = (0, node_path_1.resolve)(workingDirectory, ".genesis/settings.json");
472
+ const localSettingsPath = (0, node_path_1.resolve)(workingDirectory, ".genesis/settings.local.json");
473
+ const user = await readOptionalSettingsFile(settingsPath);
474
+ const project = await readOptionalSettingsFile(projectSettingsPath);
475
+ const local = await readOptionalSettingsFile(localSettingsPath);
476
+ return {
477
+ user,
478
+ project,
479
+ local,
480
+ mergedEnv: mergeSettingsEnv(user, project, local),
481
+ };
482
+ }
483
+ async function readOptionalSettingsFile(filePath) {
286
484
  try {
287
485
  const parsed = JSON.parse(await (0, promises_1.readFile)(filePath, "utf8"));
288
486
  if (!parsed || typeof parsed !== "object")
@@ -293,14 +491,44 @@ async function readOptionalJson(filePath) {
293
491
  return null;
294
492
  }
295
493
  }
296
- async function readSettingsEnv(settingsPath) {
494
+ async function ensureUserSettingsFile(settingsPath, env = process.env) {
495
+ await (0, promises_1.mkdir)((0, node_path_1.dirname)(settingsPath), { recursive: true });
297
496
  try {
298
- const parsed = JSON.parse(await (0, promises_1.readFile)(settingsPath, "utf8"));
299
- if (!parsed || typeof parsed !== "object" || !parsed.env || typeof parsed.env !== "object") {
300
- return {};
497
+ await (0, promises_1.readFile)(settingsPath, "utf8");
498
+ return;
499
+ }
500
+ catch { }
501
+ try {
502
+ await (0, promises_1.writeFile)(settingsPath, `${JSON.stringify(buildDefaultSettingsFile(env), null, 2)}\n`, {
503
+ flag: "wx",
504
+ });
505
+ }
506
+ catch (error) {
507
+ if (error.code !== "EEXIST") {
508
+ throw error;
301
509
  }
302
- const env = {};
303
- for (const [key, value] of Object.entries(parsed.env)) {
510
+ }
511
+ }
512
+ function buildDefaultSettingsFile(env = process.env) {
513
+ const modelId = normalizeOptionalString(env.GENESIS_MODEL_ID) ?? "glm-5.1";
514
+ return {
515
+ env: {
516
+ GENESIS_API_KEY: "your_zhipu_api_key",
517
+ GENESIS_BOOTSTRAP_BASE_URL: (0, bootstrap_js_1.resolveDefaultBootstrapBaseUrl)(env),
518
+ GENESIS_BOOTSTRAP_API: normalizeOptionalString(env.GENESIS_BOOTSTRAP_API) ?? "openai-completions",
519
+ GENESIS_MODEL_PROVIDER: normalizeOptionalString(env.GENESIS_MODEL_PROVIDER) ?? "zai",
520
+ GENESIS_MODEL_ID: modelId,
521
+ GENESIS_MODEL_DISPLAY_NAME: normalizeOptionalString(env.GENESIS_MODEL_DISPLAY_NAME) ?? modelId,
522
+ },
523
+ };
524
+ }
525
+ function mergeSettingsEnv(...settingsFiles) {
526
+ const env = {};
527
+ for (const settingsFile of settingsFiles) {
528
+ if (!settingsFile?.env) {
529
+ continue;
530
+ }
531
+ for (const [key, value] of Object.entries(settingsFile.env)) {
304
532
  if (typeof value === "string") {
305
533
  const trimmed = value.trim();
306
534
  if (trimmed.length > 0) {
@@ -312,11 +540,8 @@ async function readSettingsEnv(settingsPath) {
312
540
  env[key] = String(value);
313
541
  }
314
542
  }
315
- return env;
316
- }
317
- catch {
318
- return {};
319
543
  }
544
+ return env;
320
545
  }
321
546
  function applySettingsEnv(settingsEnv, targetEnv = process.env) {
322
547
  for (const [key, value] of Object.entries(settingsEnv)) {
@@ -325,8 +550,16 @@ function applySettingsEnv(settingsEnv, targetEnv = process.env) {
325
550
  }
326
551
  }
327
552
  }
328
- function readSettingsEnvValue(settingsEnv, key) {
329
- return settingsEnv[key];
553
+ function readSettingsEnvValue(settingsFile, key) {
554
+ const value = settingsFile?.env?.[key];
555
+ if (typeof value === "string") {
556
+ const trimmed = value.trim();
557
+ return trimmed.length > 0 ? trimmed : undefined;
558
+ }
559
+ if (typeof value === "number" || typeof value === "boolean") {
560
+ return String(value);
561
+ }
562
+ return undefined;
330
563
  }
331
564
  function readModeFlag(flags, key, fallback) {
332
565
  const value = readStringFlag(flags, key, fallback);