@marcopeg/hal 1.0.26 → 1.0.28

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 (107) hide show
  1. package/README.md +54 -54
  2. package/dist/bot/commands/session.d.ts.map +1 -1
  3. package/dist/bot/commands/session.js +8 -4
  4. package/dist/bot/commands/session.js.map +1 -1
  5. package/dist/bot/handlers/document.d.ts.map +1 -1
  6. package/dist/bot/handlers/document.js +8 -4
  7. package/dist/bot/handlers/document.js.map +1 -1
  8. package/dist/bot/handlers/photo.d.ts.map +1 -1
  9. package/dist/bot/handlers/photo.js +8 -4
  10. package/dist/bot/handlers/photo.js.map +1 -1
  11. package/dist/bot/handlers/text.d.ts.map +1 -1
  12. package/dist/bot/handlers/text.js +8 -4
  13. package/dist/bot/handlers/text.js.map +1 -1
  14. package/dist/bot/handlers/voice.d.ts.map +1 -1
  15. package/dist/bot/handlers/voice.js +8 -4
  16. package/dist/bot/handlers/voice.js.map +1 -1
  17. package/dist/bot.d.ts.map +1 -1
  18. package/dist/bot.js +20 -2
  19. package/dist/bot.js.map +1 -1
  20. package/dist/cli.js +54 -23
  21. package/dist/cli.js.map +1 -1
  22. package/dist/config-watcher.d.ts +7 -3
  23. package/dist/config-watcher.d.ts.map +1 -1
  24. package/dist/config-watcher.js +6 -4
  25. package/dist/config-watcher.js.map +1 -1
  26. package/dist/config.d.ts +49 -146
  27. package/dist/config.d.ts.map +1 -1
  28. package/dist/config.js +140 -39
  29. package/dist/config.js.map +1 -1
  30. package/dist/default-models.d.ts.map +1 -1
  31. package/dist/default-models.js +3 -4
  32. package/dist/default-models.js.map +1 -1
  33. package/dist/engine/adapters/antigravity.d.ts.map +1 -1
  34. package/dist/engine/adapters/antigravity.js +7 -3
  35. package/dist/engine/adapters/antigravity.js.map +1 -1
  36. package/dist/engine/adapters/claude.d.ts.map +1 -1
  37. package/dist/engine/adapters/claude.js +16 -6
  38. package/dist/engine/adapters/claude.js.map +1 -1
  39. package/dist/engine/adapters/codex.d.ts.map +1 -1
  40. package/dist/engine/adapters/codex.js +28 -5
  41. package/dist/engine/adapters/codex.js.map +1 -1
  42. package/dist/engine/adapters/copilot.js +2 -2
  43. package/dist/engine/adapters/copilot.js.map +1 -1
  44. package/dist/engine/adapters/cursor.d.ts.map +1 -1
  45. package/dist/engine/adapters/cursor.js +45 -5
  46. package/dist/engine/adapters/cursor.js.map +1 -1
  47. package/dist/engine/adapters/opencode.d.ts.map +1 -1
  48. package/dist/engine/adapters/opencode.js +4 -2
  49. package/dist/engine/adapters/opencode.js.map +1 -1
  50. package/dist/engine/cli-available.d.ts +9 -1
  51. package/dist/engine/cli-available.d.ts.map +1 -1
  52. package/dist/engine/cli-available.js +27 -2
  53. package/dist/engine/cli-available.js.map +1 -1
  54. package/dist/engine/codex-sessions.d.ts +7 -0
  55. package/dist/engine/codex-sessions.d.ts.map +1 -0
  56. package/dist/engine/codex-sessions.js +90 -0
  57. package/dist/engine/codex-sessions.js.map +1 -0
  58. package/dist/init-template.yaml +5 -8
  59. package/package.json +8 -4
  60. package/dist/bot/commands/clear.d.ts +0 -4
  61. package/dist/bot/commands/clear.d.ts.map +0 -1
  62. package/dist/bot/commands/clear.js +0 -24
  63. package/dist/bot/commands/clear.js.map +0 -1
  64. package/dist/bot/commands/tasks.d.ts +0 -5
  65. package/dist/bot/commands/tasks.d.ts.map +0 -1
  66. package/dist/bot/commands/tasks.js +0 -123
  67. package/dist/bot/commands/tasks.js.map +0 -1
  68. package/dist/claude/executor.d.ts +0 -21
  69. package/dist/claude/executor.d.ts.map +0 -1
  70. package/dist/claude/executor.js +0 -185
  71. package/dist/claude/executor.js.map +0 -1
  72. package/dist/claude/parser.d.ts +0 -13
  73. package/dist/claude/parser.d.ts.map +0 -1
  74. package/dist/claude/parser.js +0 -63
  75. package/dist/claude/parser.js.map +0 -1
  76. package/dist/engine/detect.d.ts +0 -26
  77. package/dist/engine/detect.d.ts.map +0 -1
  78. package/dist/engine/detect.js +0 -129
  79. package/dist/engine/detect.js.map +0 -1
  80. package/dist/engine/model-cache.d.ts +0 -25
  81. package/dist/engine/model-cache.d.ts.map +0 -1
  82. package/dist/engine/model-cache.js +0 -162
  83. package/dist/engine/model-cache.js.map +0 -1
  84. package/dist/engine/model-validation.d.ts +0 -9
  85. package/dist/engine/model-validation.d.ts.map +0 -1
  86. package/dist/engine/model-validation.js +0 -21
  87. package/dist/engine/model-validation.js.map +0 -1
  88. package/dist/engine/models-data.generated.d.ts +0 -4
  89. package/dist/engine/models-data.generated.d.ts.map +0 -1
  90. package/dist/engine/models-data.generated.js +0 -196
  91. package/dist/engine/models-data.generated.js.map +0 -1
  92. package/dist/engine/models-fetch.d.ts +0 -5
  93. package/dist/engine/models-fetch.d.ts.map +0 -1
  94. package/dist/engine/models-fetch.js +0 -54
  95. package/dist/engine/models-fetch.js.map +0 -1
  96. package/dist/engine/probe-utils.d.ts +0 -6
  97. package/dist/engine/probe-utils.d.ts.map +0 -1
  98. package/dist/engine/probe-utils.js +0 -42
  99. package/dist/engine/probe-utils.js.map +0 -1
  100. package/dist/prompts.d.ts +0 -19
  101. package/dist/prompts.d.ts.map +0 -1
  102. package/dist/prompts.js +0 -73
  103. package/dist/prompts.js.map +0 -1
  104. package/dist/setup-wizard.d.ts +0 -4
  105. package/dist/setup-wizard.d.ts.map +0 -1
  106. package/dist/setup-wizard.js +0 -258
  107. package/dist/setup-wizard.js.map +0 -1
package/dist/prompts.js DELETED
@@ -1,73 +0,0 @@
1
- import { createInterface } from "node:readline";
2
- let sharedRl = null;
3
- function getRl() {
4
- if (!sharedRl) {
5
- sharedRl = createInterface({
6
- input: process.stdin,
7
- output: process.stdout,
8
- });
9
- // Clean up when stdin closes naturally
10
- sharedRl.on("close", () => {
11
- sharedRl = null;
12
- });
13
- }
14
- return sharedRl;
15
- }
16
- /** Close the shared readline. Call once when all prompts are done. */
17
- export function closePrompts() {
18
- if (sharedRl) {
19
- sharedRl.close();
20
- sharedRl = null;
21
- }
22
- }
23
- function ask(rl, q) {
24
- return new Promise((resolve) => {
25
- rl.question(q, (answer) => resolve(answer));
26
- });
27
- }
28
- // ─── confirm ────────────────────────────────────────────────────────────────
29
- export async function confirm(options) {
30
- const defaultVal = options.default ?? true;
31
- const hint = defaultVal ? "Y/n" : "y/N";
32
- const rl = getRl();
33
- const answer = await ask(rl, `? ${options.message} (${hint}) `);
34
- const trimmed = answer.trim().toLowerCase();
35
- if (trimmed === "")
36
- return defaultVal;
37
- return trimmed === "y" || trimmed === "yes";
38
- }
39
- // ─── input ──────────────────────────────────────────────────────────────────
40
- export async function input(options) {
41
- const rl = getRl();
42
- const suffix = options.default ? ` (${options.default})` : "";
43
- while (true) {
44
- const answer = await ask(rl, `? ${options.message}${suffix} `);
45
- const value = answer.trim() || options.default || "";
46
- if (options.validate) {
47
- const result = options.validate(value);
48
- if (result !== true) {
49
- console.log(` ${result}`);
50
- continue;
51
- }
52
- }
53
- return value;
54
- }
55
- }
56
- // ─── select ─────────────────────────────────────────────────────────────────
57
- export async function select(options) {
58
- const { choices } = options;
59
- const rl = getRl();
60
- console.log(`? ${options.message}`);
61
- for (let i = 0; i < choices.length; i++) {
62
- console.log(` ${i + 1}. ${choices[i].name}`);
63
- }
64
- while (true) {
65
- const answer = await ask(rl, `Enter choice (1-${choices.length}): `);
66
- const num = Number.parseInt(answer.trim(), 10);
67
- if (num >= 1 && num <= choices.length) {
68
- return choices[num - 1].value;
69
- }
70
- console.log(` Please enter a number between 1 and ${choices.length}.`);
71
- }
72
- }
73
- //# sourceMappingURL=prompts.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"prompts.js","sourceRoot":"","sources":["../src/prompts.ts"],"names":[],"mappings":"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"}
@@ -1,4 +0,0 @@
1
- import type pino from "pino";
2
- export declare function runSetupWizard(configDir: string, logger: pino.Logger): Promise<void>;
3
- export declare function runConfigRepair(configDir: string, raw: Record<string, unknown>, issues: string[], logger: pino.Logger): Promise<void>;
4
- //# sourceMappingURL=setup-wizard.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"setup-wizard.d.ts","sourceRoot":"","sources":["../src/setup-wizard.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,IAAI,MAAM,MAAM,CAAC;AAY7B,wBAAsB,cAAc,CAClC,SAAS,EAAE,MAAM,EACjB,MAAM,EAAE,IAAI,CAAC,MAAM,GAClB,OAAO,CAAC,IAAI,CAAC,CA+Ff;AAID,wBAAsB,eAAe,CACnC,SAAS,EAAE,MAAM,EACjB,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC5B,MAAM,EAAE,MAAM,EAAE,EAChB,MAAM,EAAE,IAAI,CAAC,MAAM,GAClB,OAAO,CAAC,IAAI,CAAC,CAmFf"}
@@ -1,258 +0,0 @@
1
- import { existsSync, readdirSync, statSync, writeFileSync } from "node:fs";
2
- import { writeFile } from "node:fs/promises";
3
- import { basename, join, resolve } from "node:path";
4
- import open from "open";
5
- import { getDefaultEngineModel } from "./default-models.js";
6
- import { detectEngine } from "./engine/detect.js";
7
- import { getEngine } from "./engine/registry.js";
8
- import { closePrompts, confirm, input, select } from "./prompts.js";
9
- // ─── Constants ──────────────────────────────────────────────────────────────
10
- const BOTFATHER_URL = "https://core.telegram.org/bots/tutorial";
11
- // ─── Full setup wizard (no config file exists) ─────────────────────────────
12
- export async function runSetupWizard(configDir, logger) {
13
- console.log("");
14
- console.log("Hey! Looks like you don't have a config file yet.");
15
- const wantSetup = await confirm({
16
- message: "Want me to help you set one up?",
17
- });
18
- if (!wantSetup) {
19
- console.log('No worries! You can run "npx @marcopeg/hal init" any time to create a template config.');
20
- process.exit(0);
21
- }
22
- // 1. Engine detection (skip both initial and persist prompts — wizard handles config writing)
23
- console.log("");
24
- console.log("Let's start by finding an AI engine on your system...");
25
- const { engine: engineName } = await detectEngine(configDir, logger, {
26
- skipInitialPrompt: true,
27
- skipPersistPrompt: true,
28
- });
29
- // 2. Project working directory
30
- console.log("");
31
- const projectCwd = await askProjectCwd(configDir);
32
- // 3. Telegram bot token
33
- console.log("");
34
- const botToken = await askBotToken();
35
- // 4. Project name (optional)
36
- console.log("");
37
- const defaultName = projectCwd === "."
38
- ? basename(resolve(configDir))
39
- : basename(resolve(configDir, projectCwd));
40
- const projectName = await input({
41
- message: "Project name (press Enter to skip):",
42
- default: defaultName,
43
- });
44
- // 5. Dictation / transcription
45
- console.log("");
46
- const enableDictation = await confirm({
47
- message: "Enable voice dictation? (allows sending voice messages to the bot)",
48
- default: false,
49
- });
50
- // 6. Build and write config
51
- const config = {
52
- globals: {
53
- engine: { name: engineName },
54
- logging: { level: "info", flow: true, persist: false },
55
- rateLimit: { max: 10, windowMs: 60000 },
56
- access: { allowedUserIds: [] },
57
- ...(enableDictation
58
- ? { transcription: { model: "base.en", showTranscription: true } }
59
- : {}),
60
- },
61
- projects: [
62
- {
63
- ...(projectName.trim() ? { name: projectName.trim() } : {}),
64
- cwd: projectCwd.trim(),
65
- telegram: { botToken: botToken.trim() },
66
- access: { allowedUserIds: [] },
67
- },
68
- ],
69
- };
70
- const configPath = join(configDir, "hal.config.json");
71
- writeFileSync(configPath, `${JSON.stringify(config, null, 2)}\n`, "utf-8");
72
- logger.info({ configPath }, "Configuration file created");
73
- // 7. Scaffold engine instructions file
74
- const effectiveModel = getDefaultEngineModel(engineName);
75
- const engineAdapter = getEngine(engineName, undefined, effectiveModel);
76
- const instrFile = engineAdapter.instructionsFile();
77
- const instrPath = join(configDir, instrFile);
78
- if (!existsSync(instrPath)) {
79
- await writeFile(instrPath, "# Project Instructions\n\nAdd your project-specific instructions here.\n", "utf-8");
80
- console.log(`Created ${instrFile}`);
81
- }
82
- closePrompts();
83
- console.log("");
84
- console.log(`Config written to ${configPath}`);
85
- console.log("Setup complete! Starting up...");
86
- console.log("");
87
- }
88
- // ─── Config repair (config exists but has validation issues) ────────────────
89
- export async function runConfigRepair(configDir, raw, issues, logger) {
90
- console.log("");
91
- console.log("Your config file has some issues:");
92
- for (const issue of issues) {
93
- console.log(` - ${issue}`);
94
- }
95
- console.log("");
96
- const wantRepair = await confirm({
97
- message: "Want me to help you fix them?",
98
- });
99
- if (!wantRepair) {
100
- console.log("Please fix the issues above and try again.");
101
- process.exit(1);
102
- }
103
- const patched = { ...raw };
104
- // Ensure globals exists
105
- if (!patched.globals || typeof patched.globals !== "object") {
106
- patched.globals = {};
107
- }
108
- const globals = patched.globals;
109
- // Check engine
110
- const engine = globals.engine;
111
- if (!engine?.name) {
112
- console.log("");
113
- console.log("Let's find an AI engine for you...");
114
- const { engine: engineName } = await detectEngine(configDir, logger, {
115
- skipInitialPrompt: true,
116
- skipPersistPrompt: true,
117
- });
118
- globals.engine = { ...engine, name: engineName };
119
- }
120
- // Check projects
121
- let projects = patched.projects;
122
- if (!Array.isArray(projects) || projects.length === 0) {
123
- console.log("");
124
- console.log("No projects configured. Let's add one!");
125
- const project = await askNewProject(configDir);
126
- patched.projects = [project];
127
- projects = patched.projects;
128
- }
129
- // Check each project for missing mandatory fields
130
- for (let i = 0; i < projects.length; i++) {
131
- const proj = projects[i];
132
- const label = proj.name || `project ${i + 1}`;
133
- if (!proj.cwd || proj.cwd.trim().length === 0) {
134
- console.log("");
135
- console.log(`Missing working directory for "${label}".`);
136
- proj.cwd = await askProjectCwd(configDir);
137
- }
138
- const telegram = proj.telegram;
139
- const token = telegram?.botToken;
140
- if (!token ||
141
- token.trim().length === 0 ||
142
- token === "YOUR_BOT_TOKEN_HERE") {
143
- console.log("");
144
- console.log(`Missing Telegram bot token for "${label}".`);
145
- const newToken = await askBotToken();
146
- proj.telegram = { ...telegram, botToken: newToken.trim() };
147
- }
148
- }
149
- // Write patched config
150
- const configPath = join(configDir, "hal.config.json");
151
- writeFileSync(configPath, `${JSON.stringify(patched, null, 2)}\n`, "utf-8");
152
- logger.info({ configPath }, "Configuration file repaired");
153
- closePrompts();
154
- console.log("");
155
- console.log(`Config updated at ${configPath}`);
156
- console.log("Issues fixed! Starting up...");
157
- console.log("");
158
- }
159
- // ─── Shared prompt helpers ──────────────────────────────────────────────────
160
- async function askProjectCwd(configDir) {
161
- // Scan for subdirectories to offer as choices
162
- const subdirs = listSubdirectories(configDir);
163
- if (subdirs.length > 0) {
164
- const cwdChoice = await select({
165
- message: "Which folder should the AI engine work in?",
166
- choices: [
167
- { name: ". (current directory)", value: "." },
168
- ...subdirs.map((d) => ({ name: d, value: d })),
169
- { name: "Enter a custom path...", value: "__custom__" },
170
- ],
171
- });
172
- if (cwdChoice !== "__custom__") {
173
- return cwdChoice;
174
- }
175
- }
176
- return input({
177
- message: "Project working directory:",
178
- default: ".",
179
- validate: (val) => {
180
- if (!val || val.trim().length === 0)
181
- return "A working directory is required.";
182
- const resolved = resolve(configDir, val.trim());
183
- if (!existsSync(resolved))
184
- return `Directory not found: ${resolved}`;
185
- return true;
186
- },
187
- });
188
- }
189
- async function askBotToken() {
190
- const hasToken = await select({
191
- message: "Do you have a Telegram bot token?",
192
- choices: [
193
- {
194
- name: "Yes, I have a token",
195
- value: "yes",
196
- },
197
- {
198
- name: "No, help me create one",
199
- value: "help",
200
- },
201
- ],
202
- });
203
- if (hasToken === "help") {
204
- console.log("");
205
- console.log("Opening the Telegram Bot tutorial — follow the steps to create a bot with @BotFather.");
206
- console.log("Once you have the token, come back here and paste it.");
207
- await open(BOTFATHER_URL);
208
- console.log("");
209
- }
210
- return input({
211
- message: "Telegram bot token (from @BotFather):",
212
- validate: (val) => {
213
- if (!val || val.trim().length === 0)
214
- return "A bot token is required.";
215
- return true;
216
- },
217
- });
218
- }
219
- async function askNewProject(configDir) {
220
- const cwd = await askProjectCwd(configDir);
221
- const botToken = await askBotToken();
222
- const defaultName = cwd === "."
223
- ? basename(resolve(configDir))
224
- : basename(resolve(configDir, cwd));
225
- const name = await input({
226
- message: "Project name (press Enter to skip):",
227
- default: defaultName,
228
- });
229
- return {
230
- ...(name.trim() ? { name: name.trim() } : {}),
231
- cwd: cwd.trim(),
232
- telegram: { botToken: botToken.trim() },
233
- access: { allowedUserIds: [] },
234
- };
235
- }
236
- // ─── Helpers ────────────────────────────────────────────────────────────────
237
- function listSubdirectories(dir) {
238
- try {
239
- return readdirSync(dir)
240
- .filter((entry) => {
241
- if (entry.startsWith("."))
242
- return false;
243
- if (entry === "node_modules" || entry === "dist")
244
- return false;
245
- try {
246
- return statSync(join(dir, entry)).isDirectory();
247
- }
248
- catch {
249
- return false;
250
- }
251
- })
252
- .sort();
253
- }
254
- catch {
255
- return [];
256
- }
257
- }
258
- //# sourceMappingURL=setup-wizard.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"setup-wizard.js","sourceRoot":"","sources":["../src/setup-wizard.ts"],"names":[],"mappings":"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"}