@marcopeg/hal 1.0.23 → 1.0.26

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 (75) hide show
  1. package/README.md +9 -12
  2. package/dist/bot/commands/engine-callback.d.ts +4 -0
  3. package/dist/bot/commands/engine-callback.d.ts.map +1 -0
  4. package/dist/bot/commands/engine-callback.js +39 -0
  5. package/dist/bot/commands/engine-callback.js.map +1 -0
  6. package/dist/bot/commands/engine.d.ts +4 -0
  7. package/dist/bot/commands/engine.d.ts.map +1 -0
  8. package/dist/bot/commands/engine.js +65 -0
  9. package/dist/bot/commands/engine.js.map +1 -0
  10. package/dist/bot/commands/loader.d.ts +7 -1
  11. package/dist/bot/commands/loader.d.ts.map +1 -1
  12. package/dist/bot/commands/loader.js +18 -3
  13. package/dist/bot/commands/loader.js.map +1 -1
  14. package/dist/bot/commands/message.d.ts.map +1 -1
  15. package/dist/bot/commands/message.js +2 -1
  16. package/dist/bot/commands/message.js.map +1 -1
  17. package/dist/bot/commands/model-callback.d.ts.map +1 -1
  18. package/dist/bot/commands/model-callback.js +7 -1
  19. package/dist/bot/commands/model-callback.js.map +1 -1
  20. package/dist/bot/commands/model.d.ts.map +1 -1
  21. package/dist/bot/commands/model.js +17 -3
  22. package/dist/bot/commands/model.js.map +1 -1
  23. package/dist/bot/commands/tasks.d.ts +5 -0
  24. package/dist/bot/commands/tasks.d.ts.map +1 -0
  25. package/dist/bot/commands/tasks.js +123 -0
  26. package/dist/bot/commands/tasks.js.map +1 -0
  27. package/dist/bot/commands/watcher.d.ts.map +1 -1
  28. package/dist/bot/commands/watcher.js +6 -5
  29. package/dist/bot/commands/watcher.js.map +1 -1
  30. package/dist/bot/handlers/index.d.ts +1 -0
  31. package/dist/bot/handlers/index.d.ts.map +1 -1
  32. package/dist/bot/handlers/index.js +1 -0
  33. package/dist/bot/handlers/index.js.map +1 -1
  34. package/dist/bot/handlers/mjs-callback.d.ts +15 -0
  35. package/dist/bot/handlers/mjs-callback.d.ts.map +1 -0
  36. package/dist/bot/handlers/mjs-callback.js +84 -0
  37. package/dist/bot/handlers/mjs-callback.js.map +1 -0
  38. package/dist/bot.d.ts.map +1 -1
  39. package/dist/bot.js +19 -6
  40. package/dist/bot.js.map +1 -1
  41. package/dist/cli.js +199 -68
  42. package/dist/cli.js.map +1 -1
  43. package/dist/config-writer.d.ts +2 -6
  44. package/dist/config-writer.d.ts.map +1 -1
  45. package/dist/config-writer.js +32 -28
  46. package/dist/config-writer.js.map +1 -1
  47. package/dist/config.d.ts +103 -56
  48. package/dist/config.d.ts.map +1 -1
  49. package/dist/config.js +154 -46
  50. package/dist/config.js.map +1 -1
  51. package/dist/engine/adapters/codex.d.ts.map +1 -1
  52. package/dist/engine/adapters/codex.js +4 -2
  53. package/dist/engine/adapters/codex.js.map +1 -1
  54. package/dist/engine/adapters/copilot.d.ts.map +1 -1
  55. package/dist/engine/adapters/copilot.js +8 -5
  56. package/dist/engine/adapters/copilot.js.map +1 -1
  57. package/dist/engine/adapters/cursor.d.ts.map +1 -1
  58. package/dist/engine/adapters/cursor.js +8 -3
  59. package/dist/engine/adapters/cursor.js.map +1 -1
  60. package/dist/engine/adapters/opencode.d.ts.map +1 -1
  61. package/dist/engine/adapters/opencode.js +4 -2
  62. package/dist/engine/adapters/opencode.js.map +1 -1
  63. package/dist/engine/cli-available.d.ts +6 -0
  64. package/dist/engine/cli-available.d.ts.map +1 -0
  65. package/dist/engine/cli-available.js +19 -0
  66. package/dist/engine/cli-available.js.map +1 -0
  67. package/dist/engine/opencode-models.d.ts +30 -0
  68. package/dist/engine/opencode-models.d.ts.map +1 -0
  69. package/dist/engine/opencode-models.js +96 -0
  70. package/dist/engine/opencode-models.js.map +1 -0
  71. package/dist/init-template.yaml +32 -0
  72. package/dist/user/setup.d.ts.map +1 -1
  73. package/dist/user/setup.js +5 -1
  74. package/dist/user/setup.js.map +1 -1
  75. package/package.json +2 -2
package/dist/cli.js CHANGED
@@ -1,45 +1,91 @@
1
1
  #!/usr/bin/env node
2
- import { existsSync } from "node:fs";
2
+ import { execSync, spawn } from "node:child_process";
3
+ import { existsSync, readFileSync } from "node:fs";
3
4
  import { writeFile } from "node:fs/promises";
4
5
  import { join, resolve } from "node:path";
5
6
  import { startBot } from "./bot.js";
6
- import { loadMultiConfig, resolveProjectConfig, tryLoadMultiConfig, validateAccessPolicies, validateProjects, } from "./config.js";
7
+ import { resolveProjectConfig, tryLoadMultiConfig, validateAccessPolicies, validateProjects, validateProviderDefaultUniqueness, } from "./config.js";
7
8
  import { startConfigWatcher } from "./config-watcher.js";
8
9
  import { evaluateBootTimeShells } from "./context/resolver.js";
9
10
  import { getDefaultEngineModel } from "./default-models.js";
10
11
  import { getEngine } from "./engine/index.js";
11
12
  import { createProjectLogger, createStartupLogger } from "./logger.js";
12
- // ─── Config template ──────────────────────────────────────────────────────────
13
- function buildConfigTemplate(engineName) {
14
- return `{
15
- "globals": {
16
- "engine": {
17
- "name": "${engineName}"
18
- },
19
- "logging": {
20
- "level": "info",
21
- "flow": true,
22
- "persist": false
23
- },
24
- "rateLimit": {
25
- "max": 10,
26
- "windowMs": 60000
27
- },
28
- "access": {
29
- "allowedUserIds": [0]
30
- }
31
- },
32
- "projects": [
33
- {
34
- "name": "my-project",
35
- "cwd": ".",
36
- "telegram": {
37
- "botToken": "YOUR_BOT_TOKEN_HERE"
38
- }
13
+ // ─── Init: doc URLs (GitHub marcopeg/hal + docs path) ──────────────────────────
14
+ const HAL_DOCS_BASE = "https://github.com/marcopeg/hal/blob/main/docs";
15
+ const HAL_DOCS_TELEGRAM = `${HAL_DOCS_BASE}/telegram/README.md`;
16
+ const HAL_DOCS_TELEGRAM_CREATE_BOT = `${HAL_DOCS_BASE}/telegram/README.md#creating-a-telegram-bot`;
17
+ const HAL_DOCS_CONFIG = `${HAL_DOCS_BASE}/config/README.md`;
18
+ /** One default model per engine for the chosen project engine. */
19
+ const DEFAULT_PROVIDER_MODEL = {
20
+ claude: "sonnet",
21
+ copilot: "gpt-5-mini",
22
+ codex: "gpt-5.2-codex",
23
+ opencode: "opencode/gpt-5-nano",
24
+ cursor: "auto",
25
+ antigravity: "gemini-2.0-flash",
26
+ };
27
+ function getDefaultProviderModel(engine, override) {
28
+ return override ?? DEFAULT_PROVIDER_MODEL[engine];
29
+ }
30
+ const INIT_TEMPLATE_PATH = new URL("./init-template.yaml", import.meta.url);
31
+ /** Build YAML config from the template file with placeholder substitution. */
32
+ function buildYamlInitConfig(engineName, projectCwd, modelOverride) {
33
+ const model = getDefaultProviderModel(engineName, modelOverride);
34
+ const template = readFileSync(INIT_TEMPLATE_PATH, "utf-8");
35
+ return template
36
+ .replace(/\{\{ENGINE_NAME\}\}/g, engineName)
37
+ .replace(/\{\{ENGINE_MODEL\}\}/g, model)
38
+ .replace(/\{\{PROJECT_CWD\}\}/g, JSON.stringify(projectCwd))
39
+ .replace(/\{\{HAL_DOCS_CONFIG\}\}/g, HAL_DOCS_CONFIG)
40
+ .replace(/\{\{HAL_DOCS_TELEGRAM\}\}/g, HAL_DOCS_TELEGRAM)
41
+ .replace(/\{\{HAL_DOCS_TELEGRAM_CREATE_BOT\}\}/g, HAL_DOCS_TELEGRAM_CREATE_BOT);
42
+ }
43
+ /** Prompt Y/n; Enter or empty = yes. Reads exactly one line then closes stdin. */
44
+ function promptYesNo(promptText) {
45
+ return new Promise((resolve) => {
46
+ process.stdout.write(promptText);
47
+ if (!process.stdin.readable || !process.stdin.isTTY) {
48
+ resolve(true);
49
+ return;
50
+ }
51
+ process.stdin.setEncoding("utf-8");
52
+ process.stdin.resume();
53
+ let buf = "";
54
+ const onData = (chunk) => {
55
+ buf += chunk;
56
+ const nl = buf.indexOf("\n");
57
+ if (nl !== -1) {
58
+ process.stdin.removeListener("data", onData);
59
+ process.stdin.pause();
60
+ const line = buf.slice(0, nl).trim().toLowerCase();
61
+ resolve(line !== "n" && line !== "no");
62
+ }
63
+ };
64
+ process.stdin.on("data", onData);
65
+ });
66
+ }
67
+ /** Returns first available editor command, or null. Tries: code, cursor, then system default. */
68
+ function findAvailableEditor() {
69
+ const toTry = ["code", "cursor"];
70
+ for (const cmd of toTry) {
71
+ try {
72
+ execSync(`which ${cmd}`, { stdio: "pipe" });
73
+ return cmd;
74
+ }
75
+ catch { }
39
76
  }
40
- ]
77
+ if (process.env.EDITOR)
78
+ return process.env.EDITOR;
79
+ if (process.platform === "darwin")
80
+ return "open -e";
81
+ if (process.platform === "win32")
82
+ return "notepad";
83
+ return "xdg-open";
41
84
  }
42
- `;
85
+ function openFileInEditor(filePath, editor) {
86
+ const args = editor === "open -e" ? ["-e", filePath] : [filePath];
87
+ const cmd = editor === "open -e" ? "open" : editor;
88
+ spawn(cmd, args, { stdio: "inherit", detached: true }).unref();
43
89
  }
44
90
  function showHelp() {
45
91
  console.log(`
@@ -49,17 +95,18 @@ Usage:
49
95
  npx @marcopeg/hal [command] [options]
50
96
 
51
97
  Commands:
52
- init Create hal.config.json in the working directory
98
+ init Create hal.config.yaml in the working directory (with confirmation)
53
99
  start Start the bots (default)
54
100
 
55
101
  Options:
56
- --cwd <path> Directory containing hal.config.{json,jsonc,yaml} (default: current directory)
57
- --engine <name> Engine to use: claude, copilot, codex, opencode, cursor (default: claude)
102
+ --cwd <path> Directory for config file and project cwd (default: current directory)
103
+ --engine <name> Engine: claude, copilot, codex, opencode, cursor, antigravity (default: codex)
104
+ --model <name> Default model for the chosen engine (default: engine default)
58
105
  --help, -h Show this help message
59
106
 
60
107
  Examples:
61
108
  npx @marcopeg/hal init
62
- npx @marcopeg/hal init --engine copilot
109
+ npx @marcopeg/hal init --engine opencode --model opencode/gpt-5-nano
63
110
  npx @marcopeg/hal init --cwd ./workspace
64
111
  npx @marcopeg/hal
65
112
  npx @marcopeg/hal --cwd ./workspace
@@ -71,14 +118,13 @@ Configuration (hal.config.json):
71
118
  "logging": { "level": "info", "flow": true, "persist": false },
72
119
  "rateLimit": { "max": 10, "windowMs": 60000 }
73
120
  },
74
- "projects": [
75
- {
76
- "name": "my-project",
121
+ "projects": {
122
+ "my-project": {
77
123
  "cwd": "./path/to/project",
78
124
  "telegram": { "botToken": "your-bot-token" },
79
125
  "access": { "allowedUserIds": [123456789] }
80
126
  }
81
- ]
127
+ }
82
128
  }
83
129
  `);
84
130
  }
@@ -88,12 +134,14 @@ const VALID_ENGINES = [
88
134
  "codex",
89
135
  "opencode",
90
136
  "cursor",
137
+ "antigravity",
91
138
  ];
92
139
  function parseArgs() {
93
140
  const args = process.argv.slice(2);
94
141
  let cwd = process.cwd();
95
142
  let command = "start";
96
- let engine = "claude";
143
+ let engine = "codex";
144
+ let model;
97
145
  for (let i = 0; i < args.length; i++) {
98
146
  const arg = args[i];
99
147
  if (arg === "--cwd" && args[i + 1]) {
@@ -120,6 +168,13 @@ function parseArgs() {
120
168
  }
121
169
  engine = val;
122
170
  }
171
+ else if (arg === "--model" && args[i + 1]) {
172
+ model = args[i + 1];
173
+ i++;
174
+ }
175
+ else if (arg.startsWith("--model=")) {
176
+ model = arg.slice(8);
177
+ }
123
178
  else if (arg === "--help" || arg === "-h") {
124
179
  showHelp();
125
180
  process.exit(0);
@@ -131,45 +186,98 @@ function parseArgs() {
131
186
  command = "start";
132
187
  }
133
188
  }
134
- return { command, cwd, engine };
189
+ return { command, cwd, engine, model };
135
190
  }
136
191
  // ─── init command ─────────────────────────────────────────────────────────────
137
- async function runInit(cwd, engineName) {
138
- const configPath = join(cwd, "hal.config.json");
139
- if (existsSync(configPath)) {
140
- console.error(`Error: hal.config.json already exists in ${cwd}`);
141
- process.exit(1);
192
+ const INIT_CONFIG_BASENAMES = [
193
+ "hal.config.json",
194
+ "hal.config.jsonc",
195
+ "hal.config.yaml",
196
+ "hal.config.yml",
197
+ ];
198
+ async function runInit(cwd, engineName, modelOverride) {
199
+ for (const name of INIT_CONFIG_BASENAMES) {
200
+ if (existsSync(join(cwd, name))) {
201
+ console.error(`Error: ${name} already exists in ${cwd}`);
202
+ process.exit(1);
203
+ }
204
+ }
205
+ const projectCwd = "."; // project runs in same dir as config
206
+ const yamlContent = buildYamlInitConfig(engineName, projectCwd, modelOverride);
207
+ console.log("\nProposed configuration (hal.config.yaml):\n");
208
+ console.log("---");
209
+ console.log(yamlContent);
210
+ console.log("---\n");
211
+ const ok = await promptYesNo("Write this to file? (Y/n, Enter = yes): ");
212
+ if (!ok) {
213
+ console.log("Aborted. No file written.");
214
+ process.exit(0);
142
215
  }
143
- // Write config with the selected engine
144
- const template = buildConfigTemplate(engineName);
145
- await writeFile(configPath, template, "utf-8");
146
- console.log(`Created hal.config.json in ${cwd} (engine: ${engineName})`);
147
- // Scaffold engine-specific instructions file
148
- const effectiveModel = getDefaultEngineModel(engineName);
149
- const engine = getEngine(engineName, undefined, effectiveModel);
216
+ const configPath = join(cwd, "hal.config.yaml");
217
+ await writeFile(configPath, yamlContent, "utf-8");
218
+ console.log(`\nConfig: ${configPath}`);
219
+ const engine = getEngine(engineName, undefined, getDefaultProviderModel(engineName, modelOverride));
150
220
  const instrFile = engine.instructionsFile();
151
221
  const instrPath = join(cwd, instrFile);
152
222
  if (!existsSync(instrPath)) {
153
- await writeFile(instrPath, `# Project Instructions\n\nAdd your project-specific instructions here.\n`, "utf-8");
223
+ await writeFile(instrPath, "# Project Instructions\n\nAdd your project-specific instructions here.\n", "utf-8");
154
224
  console.log(`Created ${instrFile}`);
155
225
  }
156
- console.log(`\nNext steps:`);
157
- console.log(`1. Edit hal.config.json and set your Telegram bot token in projects[0].telegram.botToken`);
158
- console.log(`2. Set the project cwd to the folder the engine should work in`);
159
- console.log(`3. Replace 0 in access.allowedUserIds with your Telegram user ID (required)`);
160
- console.log(`4. Run: npx @marcopeg/hal --cwd ${cwd}`);
226
+ console.log("\nNext steps:");
227
+ console.log(" 1. Set TELEGRAM_BOT_TOKEN in .env or .env.local (see docs: " +
228
+ HAL_DOCS_TELEGRAM_CREATE_BOT +
229
+ ")");
230
+ console.log(" 2. Add your Telegram user ID to access.allowedUserIds (see: " +
231
+ HAL_DOCS_TELEGRAM +
232
+ ")");
233
+ console.log(" 3. Run: npx @marcopeg/hal");
161
234
  process.exit(0);
162
235
  }
236
+ function supportsAnsiColor(out = process.stdout, env = process.env) {
237
+ if (!out.isTTY)
238
+ return false;
239
+ if ("NO_COLOR" in env)
240
+ return false;
241
+ if ((env.TERM ?? "").toLowerCase() === "dumb")
242
+ return false;
243
+ return true;
244
+ }
245
+ function renderStartupBanner(useColor) {
246
+ const subtitle = "MULTI-ENGINE TELEGRAM COMMAND DECK FOR AI CODING AGENTS";
247
+ const frame = "================================================================";
248
+ const accentStart = useColor ? "\u001b[31;1m" : "";
249
+ const accentEnd = useColor ? "\u001b[0m" : "";
250
+ return [
251
+ frame,
252
+ "",
253
+ " _ _ _ _ ",
254
+ "| | | | / \\ | | ",
255
+ "| |_| | / _ \\ | | ",
256
+ "| _ | / ___ \\ | |___ ",
257
+ "|_| |_| /_/ \\_\\ |_____|",
258
+ "",
259
+ `${accentStart}${subtitle}${accentEnd}`,
260
+ "",
261
+ frame,
262
+ ].join("\n");
263
+ }
264
+ function printStartupBanner(out = process.stdout) {
265
+ const banner = renderStartupBanner(supportsAnsiColor(out));
266
+ out.write(`${banner}\n\n`);
267
+ }
163
268
  async function runBotsForConfig(configDir, loaded, startupLogger) {
164
269
  const { config: multiConfig, loadedFiles } = loaded;
270
+ validateProviderDefaultUniqueness(multiConfig);
165
271
  const globals = multiConfig.globals ?? {};
166
- // Resolve all project configs, skip inactive ones
272
+ // Resolve all project configs, skip inactive ones (stable order: sorted keys)
167
273
  const rootContext = multiConfig.context;
168
- const allProjects = multiConfig.projects.map((project) => resolveProjectConfig(project, globals, configDir, rootContext));
274
+ const projectKeys = Object.keys(multiConfig.projects).sort();
275
+ const allProjects = projectKeys.map((key) => resolveProjectConfig(key, multiConfig.projects[key], globals, configDir, rootContext, multiConfig.providers));
169
276
  const resolvedProjects = allProjects.filter((_, i) => {
170
- const project = multiConfig.projects[i];
277
+ const key = projectKeys[i];
278
+ const project = multiConfig.projects[key];
171
279
  if (project.active === false) {
172
- startupLogger.info(`Skipping inactive project "${project.name ?? project.cwd}"`);
280
+ startupLogger.info(`Skipping inactive project "${project.name ?? key}"`);
173
281
  return false;
174
282
  }
175
283
  return true;
@@ -189,7 +297,9 @@ async function runBotsForConfig(configDir, loaded, startupLogger) {
189
297
  const shellCache = config.context
190
298
  ? evaluateBootTimeShells(config.context, logger)
191
299
  : {};
192
- const effectiveModel = config.engineModel ?? getDefaultEngineModel(config.engine);
300
+ const effectiveModel = config.engineModel ??
301
+ config.providerDefaultModel ??
302
+ getDefaultEngineModel(config.engine);
193
303
  const engine = getEngine(config.engine, config.engineCommand, effectiveModel);
194
304
  return { config, logger, bootContext: { shellCache }, engine };
195
305
  });
@@ -202,10 +312,31 @@ async function runBotsForConfig(configDir, loaded, startupLogger) {
202
312
  startupLogger.info({ count: botHandles.length }, "All bots running");
203
313
  return { botHandles };
204
314
  }
315
+ const STARTUP_BANNER_DELAY_MS = 500;
316
+ const HAL_DOCS_URL = "https://github.com/marcopeg/hal";
317
+ const HAL_QUICK_START = "npx @marcopeg/hal init";
318
+ function printConfigError(err) {
319
+ const message = err instanceof Error ? err.message : String(err);
320
+ console.error("\n\u001b[1;31mConfiguration error\u001b[0m\n");
321
+ console.error(message);
322
+ console.error("\n\u001b[1m— Need help?\u001b[0m");
323
+ console.error(` Documentation: ${HAL_DOCS_URL}`);
324
+ console.error(` Quick start: ${HAL_QUICK_START}`);
325
+ console.error("");
326
+ process.exit(1);
327
+ }
205
328
  async function runStart(configDir) {
329
+ printStartupBanner();
330
+ await new Promise((resolve) => setTimeout(resolve, STARTUP_BANNER_DELAY_MS));
206
331
  const startupLogger = createStartupLogger();
207
332
  startupLogger.info({ configDir }, "Loading configuration");
208
- const loaded = loadMultiConfig(configDir);
333
+ let loaded;
334
+ try {
335
+ loaded = tryLoadMultiConfig(configDir);
336
+ }
337
+ catch (err) {
338
+ printConfigError(err);
339
+ }
209
340
  let runResult;
210
341
  try {
211
342
  runResult = await runBotsForConfig(configDir, loaded, startupLogger);
@@ -221,7 +352,7 @@ async function runStart(configDir) {
221
352
  reloading = true;
222
353
  try {
223
354
  startupLogger.info("Config change detected");
224
- await Promise.all(runResult.botHandles.map((h) => h.stop()));
355
+ await Promise.all(runResult.botHandles.map((h) => h.stop().catch(() => { })));
225
356
  startupLogger.info("All bots stopped");
226
357
  try {
227
358
  const result = tryLoadMultiConfig(configDir);
@@ -248,9 +379,9 @@ async function runStart(configDir) {
248
379
  }
249
380
  // ─── Entry point ──────────────────────────────────────────────────────────────
250
381
  async function main() {
251
- const { command, cwd, engine } = parseArgs();
382
+ const { command, cwd, engine, model } = parseArgs();
252
383
  if (command === "init") {
253
- await runInit(cwd, engine);
384
+ await runInit(cwd, engine, model);
254
385
  }
255
386
  else {
256
387
  await runStart(cwd);
package/dist/cli.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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"}
@@ -1,8 +1,4 @@
1
1
  import type { EngineName } from "./engine/types.js";
2
- interface ProjectIdentifier {
3
- name?: string;
4
- cwd: string;
5
- }
6
- export declare function updateProjectModel(configDir: string, project: ProjectIdentifier, engine: EngineName, model: string): void;
7
- export {};
2
+ export declare function updateProjectModel(configDir: string, projectSlug: string, engine: EngineName, model: string): void;
3
+ export declare function updateProjectEngine(configDir: string, projectSlug: string, engine: EngineName): void;
8
4
  //# sourceMappingURL=config-writer.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"config-writer.d.ts","sourceRoot":"","sources":["../src/config-writer.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAEpD,UAAU,iBAAiB;IACzB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,GAAG,EAAE,MAAM,CAAC;CACb;AAaD,wBAAgB,kBAAkB,CAChC,SAAS,EAAE,MAAM,EACjB,OAAO,EAAE,iBAAiB,EAC1B,MAAM,EAAE,UAAU,EAClB,KAAK,EAAE,MAAM,GACZ,IAAI,CAgDN"}
1
+ {"version":3,"file":"config-writer.d.ts","sourceRoot":"","sources":["../src/config-writer.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAmDpD,wBAAgB,kBAAkB,CAChC,SAAS,EAAE,MAAM,EACjB,WAAW,EAAE,MAAM,EACnB,MAAM,EAAE,UAAU,EAClB,KAAK,EAAE,MAAM,GACZ,IAAI,CAaN;AAED,wBAAgB,mBAAmB,CACjC,SAAS,EAAE,MAAM,EACjB,WAAW,EAAE,MAAM,EACnB,MAAM,EAAE,UAAU,GACjB,IAAI,CAaN"}
@@ -8,12 +8,12 @@ function serializeConfig(data, format) {
8
8
  // jsonc → plain JSON on write (comments are not preserved)
9
9
  return JSON.stringify(data, null, 2);
10
10
  }
11
- export function updateProjectModel(configDir, project, engine, model) {
11
+ function loadConfigData(configDir) {
12
12
  const localResolved = resolveConfigFile(configDir, "hal.config.local");
13
13
  const baseResolved = resolveConfigFile(configDir, "hal.config");
14
14
  const target = localResolved ?? baseResolved;
15
15
  if (!target)
16
- return;
16
+ return { data: {}, target: null };
17
17
  let data;
18
18
  try {
19
19
  const content = readFileSync(target.path, "utf-8");
@@ -22,35 +22,39 @@ export function updateProjectModel(configDir, project, engine, model) {
22
22
  catch {
23
23
  data = {};
24
24
  }
25
+ return { data, target };
26
+ }
27
+ function getProjectEntry(data, projectSlug) {
25
28
  const projects = data.projects;
26
- if (projects && Array.isArray(projects)) {
27
- const idx = projects.findIndex((p) => {
28
- if (project.name && p.name === project.name)
29
- return true;
30
- return p.cwd === project.cwd;
31
- });
32
- if (idx >= 0) {
33
- const entry = projects[idx];
34
- const engineConfig = entry.engine ?? {};
35
- engineConfig.name = engine;
36
- engineConfig.model = model;
37
- entry.engine = engineConfig;
38
- }
39
- else {
40
- const newEntry = {
41
- cwd: project.cwd,
42
- engine: { name: engine, model },
43
- };
44
- if (project.name)
45
- newEntry.name = project.name;
46
- projects.push(newEntry);
47
- }
48
- }
49
- else {
50
- const engineConfig = data.engine ?? {};
29
+ if (projects === null ||
30
+ typeof projects !== "object" ||
31
+ Array.isArray(projects))
32
+ return undefined;
33
+ return projects[projectSlug];
34
+ }
35
+ export function updateProjectModel(configDir, projectSlug, engine, model) {
36
+ const { data, target } = loadConfigData(configDir);
37
+ if (!target)
38
+ return;
39
+ const entry = getProjectEntry(data, projectSlug);
40
+ if (entry) {
41
+ const engineConfig = entry.engine ?? {};
51
42
  engineConfig.name = engine;
52
43
  engineConfig.model = model;
53
- data.engine = engineConfig;
44
+ entry.engine = engineConfig;
45
+ }
46
+ writeFileSync(target.path, serializeConfig(data, target.format), "utf-8");
47
+ }
48
+ export function updateProjectEngine(configDir, projectSlug, engine) {
49
+ const { data, target } = loadConfigData(configDir);
50
+ if (!target)
51
+ return;
52
+ const entry = getProjectEntry(data, projectSlug);
53
+ if (entry) {
54
+ const engineConfig = entry.engine ?? {};
55
+ engineConfig.name = engine;
56
+ delete engineConfig.model;
57
+ entry.engine = engineConfig;
54
58
  }
55
59
  writeFileSync(target.path, serializeConfig(data, target.format), "utf-8");
56
60
  }
@@ -1 +1 @@
1
- {"version":3,"file":"config-writer.js","sourceRoot":"","sources":["../src/config-writer.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"config-writer.js","sourceRoot":"","sources":["../src/config-writer.ts"],"names":[],"mappings":"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"}