@marcopeg/hal 1.0.20 → 1.0.23
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.
- package/README.md +90 -768
- package/dist/agent/index.d.ts +3 -3
- package/dist/agent/index.d.ts.map +1 -1
- package/dist/agent/index.js +5 -5
- package/dist/agent/index.js.map +1 -1
- package/dist/bot/commands/loader.d.ts +14 -2
- package/dist/bot/commands/loader.d.ts.map +1 -1
- package/dist/bot/commands/loader.js +75 -24
- package/dist/bot/commands/loader.js.map +1 -1
- package/dist/bot/commands/message.d.ts.map +1 -1
- package/dist/bot/commands/message.js +5 -4
- package/dist/bot/commands/message.js.map +1 -1
- package/dist/bot/commands/model-callback.d.ts +4 -0
- package/dist/bot/commands/model-callback.d.ts.map +1 -0
- package/dist/bot/commands/model-callback.js +34 -0
- package/dist/bot/commands/model-callback.js.map +1 -0
- package/dist/bot/commands/model.d.ts +4 -0
- package/dist/bot/commands/model.d.ts.map +1 -0
- package/dist/bot/commands/model.js +83 -0
- package/dist/bot/commands/model.js.map +1 -0
- package/dist/bot/commands/reset.d.ts +3 -2
- package/dist/bot/commands/reset.d.ts.map +1 -1
- package/dist/bot/commands/reset.js +73 -10
- package/dist/bot/commands/reset.js.map +1 -1
- package/dist/bot/commands/resetPrompt.d.ts +20 -0
- package/dist/bot/commands/resetPrompt.d.ts.map +1 -0
- package/dist/bot/commands/resetPrompt.js +58 -0
- package/dist/bot/commands/resetPrompt.js.map +1 -0
- package/dist/bot/commands/watcher.d.ts +1 -1
- package/dist/bot/commands/watcher.d.ts.map +1 -1
- package/dist/bot/commands/watcher.js +20 -6
- package/dist/bot/commands/watcher.js.map +1 -1
- package/dist/bot/handlers/text.d.ts.map +1 -1
- package/dist/bot/handlers/text.js +4 -6
- package/dist/bot/handlers/text.js.map +1 -1
- package/dist/bot/middleware/auth.d.ts +0 -3
- package/dist/bot/middleware/auth.d.ts.map +1 -1
- package/dist/bot/middleware/auth.js +13 -12
- package/dist/bot/middleware/auth.js.map +1 -1
- package/dist/bot.d.ts.map +1 -1
- package/dist/bot.js +25 -7
- package/dist/bot.js.map +1 -1
- package/dist/cli.js +15 -22
- package/dist/cli.js.map +1 -1
- package/dist/config-watcher.d.ts.map +1 -1
- package/dist/config-watcher.js +6 -0
- package/dist/config-watcher.js.map +1 -1
- package/dist/config-writer.d.ts +8 -0
- package/dist/config-writer.d.ts.map +1 -0
- package/dist/config-writer.js +57 -0
- package/dist/config-writer.js.map +1 -0
- package/dist/config.d.ts +221 -13
- package/dist/config.d.ts.map +1 -1
- package/dist/config.js +222 -43
- package/dist/config.js.map +1 -1
- package/dist/engine/adapters/antigravity.d.ts +13 -0
- package/dist/engine/adapters/antigravity.d.ts.map +1 -0
- package/dist/engine/adapters/antigravity.js +230 -0
- package/dist/engine/adapters/antigravity.js.map +1 -0
- package/dist/engine/adapters/claude.js +2 -2
- package/dist/engine/adapters/claude.js.map +1 -1
- package/dist/engine/adapters/codex.d.ts.map +1 -1
- package/dist/engine/adapters/codex.js +2 -3
- package/dist/engine/adapters/codex.js.map +1 -1
- package/dist/engine/adapters/copilot.d.ts.map +1 -1
- package/dist/engine/adapters/copilot.js +6 -3
- package/dist/engine/adapters/copilot.js.map +1 -1
- package/dist/engine/adapters/cursor.d.ts.map +1 -1
- package/dist/engine/adapters/cursor.js +5 -2
- package/dist/engine/adapters/cursor.js.map +1 -1
- package/dist/engine/adapters/opencode.d.ts.map +1 -1
- package/dist/engine/adapters/opencode.js +6 -2
- package/dist/engine/adapters/opencode.js.map +1 -1
- package/dist/engine/detect.d.ts +26 -0
- package/dist/engine/detect.d.ts.map +1 -0
- package/dist/engine/detect.js +129 -0
- package/dist/engine/detect.js.map +1 -0
- package/dist/engine/model-cache.d.ts +25 -0
- package/dist/engine/model-cache.d.ts.map +1 -0
- package/dist/engine/model-cache.js +162 -0
- package/dist/engine/model-cache.js.map +1 -0
- package/dist/engine/model-validation.d.ts +9 -0
- package/dist/engine/model-validation.d.ts.map +1 -0
- package/dist/engine/model-validation.js +21 -0
- package/dist/engine/model-validation.js.map +1 -0
- package/dist/engine/models-data.generated.d.ts +4 -0
- package/dist/engine/models-data.generated.d.ts.map +1 -0
- package/dist/engine/models-data.generated.js +196 -0
- package/dist/engine/models-data.generated.js.map +1 -0
- package/dist/engine/models-fetch.d.ts +5 -0
- package/dist/engine/models-fetch.d.ts.map +1 -0
- package/dist/engine/models-fetch.js +54 -0
- package/dist/engine/models-fetch.js.map +1 -0
- package/dist/engine/probe-utils.d.ts +6 -0
- package/dist/engine/probe-utils.d.ts.map +1 -0
- package/dist/engine/probe-utils.js +42 -0
- package/dist/engine/probe-utils.js.map +1 -0
- package/dist/engine/registry.d.ts.map +1 -1
- package/dist/engine/registry.js +2 -0
- package/dist/engine/registry.js.map +1 -1
- package/dist/engine/types.d.ts +3 -3
- package/dist/engine/types.d.ts.map +1 -1
- package/dist/engine/types.js +1 -0
- package/dist/engine/types.js.map +1 -1
- package/dist/logger.d.ts +2 -1
- package/dist/logger.d.ts.map +1 -1
- package/dist/logger.js +54 -3
- package/dist/logger.js.map +1 -1
- package/dist/prompts.d.ts +19 -0
- package/dist/prompts.d.ts.map +1 -0
- package/dist/prompts.js +73 -0
- package/dist/prompts.js.map +1 -0
- package/dist/setup-wizard.d.ts +4 -0
- package/dist/setup-wizard.d.ts.map +1 -0
- package/dist/setup-wizard.js +258 -0
- package/dist/setup-wizard.js.map +1 -0
- package/package.json +5 -2
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"reset.js","sourceRoot":"","sources":["../../../src/bot/commands/reset.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;
|
|
1
|
+
{"version":3,"file":"reset.js","sourceRoot":"","sources":["../../../src/bot/commands/reset.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import type { Api } from "grammy";
|
|
2
|
+
/**
|
|
3
|
+
* Track a new reset confirmation prompt for a user.
|
|
4
|
+
* Starts a timeout that auto-removes the inline keyboard on expiry.
|
|
5
|
+
*/
|
|
6
|
+
export declare function trackPrompt(userId: number, chatId: number, messageId: number, timeoutMs: number, api: Api): void;
|
|
7
|
+
/**
|
|
8
|
+
* Invalidate a previous active prompt for a user (e.g. when /reset is sent again).
|
|
9
|
+
* Cancels the timer and edits the message to remove buttons.
|
|
10
|
+
*/
|
|
11
|
+
export declare function invalidatePrompt(userId: number, api: Api): Promise<void>;
|
|
12
|
+
/**
|
|
13
|
+
* Resolve (clean up) a prompt after the user has tapped confirm or abort.
|
|
14
|
+
*/
|
|
15
|
+
export declare function resolvePrompt(userId: number): void;
|
|
16
|
+
/**
|
|
17
|
+
* Cancel all active prompt timers. Call on bot shutdown.
|
|
18
|
+
*/
|
|
19
|
+
export declare function clearAllPrompts(): void;
|
|
20
|
+
//# sourceMappingURL=resetPrompt.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"resetPrompt.d.ts","sourceRoot":"","sources":["../../../src/bot/commands/resetPrompt.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,QAAQ,CAAC;AAUlC;;;GAGG;AACH,wBAAgB,WAAW,CACzB,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,MAAM,EACd,SAAS,EAAE,MAAM,EACjB,SAAS,EAAE,MAAM,EACjB,GAAG,EAAE,GAAG,GACP,IAAI,CAaN;AAED;;;GAGG;AACH,wBAAsB,gBAAgB,CACpC,MAAM,EAAE,MAAM,EACd,GAAG,EAAE,GAAG,GACP,OAAO,CAAC,IAAI,CAAC,CAcf;AAED;;GAEG;AACH,wBAAgB,aAAa,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,CAKlD;AAED;;GAEG;AACH,wBAAgB,eAAe,IAAI,IAAI,CAKtC"}
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
const activePrompts = new Map();
|
|
2
|
+
/**
|
|
3
|
+
* Track a new reset confirmation prompt for a user.
|
|
4
|
+
* Starts a timeout that auto-removes the inline keyboard on expiry.
|
|
5
|
+
*/
|
|
6
|
+
export function trackPrompt(userId, chatId, messageId, timeoutMs, api) {
|
|
7
|
+
const timer = setTimeout(async () => {
|
|
8
|
+
activePrompts.delete(userId);
|
|
9
|
+
try {
|
|
10
|
+
await api.editMessageReplyMarkup(chatId, messageId, {
|
|
11
|
+
reply_markup: undefined,
|
|
12
|
+
});
|
|
13
|
+
}
|
|
14
|
+
catch {
|
|
15
|
+
// Message may already be edited or deleted — ignore
|
|
16
|
+
}
|
|
17
|
+
}, timeoutMs);
|
|
18
|
+
activePrompts.set(userId, { chatId, messageId, timer });
|
|
19
|
+
}
|
|
20
|
+
/**
|
|
21
|
+
* Invalidate a previous active prompt for a user (e.g. when /reset is sent again).
|
|
22
|
+
* Cancels the timer and edits the message to remove buttons.
|
|
23
|
+
*/
|
|
24
|
+
export async function invalidatePrompt(userId, api) {
|
|
25
|
+
const entry = activePrompts.get(userId);
|
|
26
|
+
if (!entry)
|
|
27
|
+
return;
|
|
28
|
+
clearTimeout(entry.timer);
|
|
29
|
+
activePrompts.delete(userId);
|
|
30
|
+
try {
|
|
31
|
+
await api.editMessageReplyMarkup(entry.chatId, entry.messageId, {
|
|
32
|
+
reply_markup: undefined,
|
|
33
|
+
});
|
|
34
|
+
}
|
|
35
|
+
catch {
|
|
36
|
+
// Message may already be edited or deleted — ignore
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
/**
|
|
40
|
+
* Resolve (clean up) a prompt after the user has tapped confirm or abort.
|
|
41
|
+
*/
|
|
42
|
+
export function resolvePrompt(userId) {
|
|
43
|
+
const entry = activePrompts.get(userId);
|
|
44
|
+
if (!entry)
|
|
45
|
+
return;
|
|
46
|
+
clearTimeout(entry.timer);
|
|
47
|
+
activePrompts.delete(userId);
|
|
48
|
+
}
|
|
49
|
+
/**
|
|
50
|
+
* Cancel all active prompt timers. Call on bot shutdown.
|
|
51
|
+
*/
|
|
52
|
+
export function clearAllPrompts() {
|
|
53
|
+
for (const entry of activePrompts.values()) {
|
|
54
|
+
clearTimeout(entry.timer);
|
|
55
|
+
}
|
|
56
|
+
activePrompts.clear();
|
|
57
|
+
}
|
|
58
|
+
//# sourceMappingURL=resetPrompt.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"resetPrompt.js","sourceRoot":"","sources":["../../../src/bot/commands/resetPrompt.ts"],"names":[],"mappings":"AAQA,MAAM,aAAa,GAAG,IAAI,GAAG,EAAwB,CAAC;AAEtD;;;GAGG;AACH,MAAM,UAAU,WAAW,CACzB,MAAc,EACd,MAAc,EACd,SAAiB,EACjB,SAAiB,EACjB,GAAQ;IAER,MAAM,KAAK,GAAG,UAAU,CAAC,KAAK,IAAI,EAAE;QAClC,aAAa,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;QAC7B,IAAI,CAAC;YACH,MAAM,GAAG,CAAC,sBAAsB,CAAC,MAAM,EAAE,SAAS,EAAE;gBAClD,YAAY,EAAE,SAAS;aACxB,CAAC,CAAC;QACL,CAAC;QAAC,MAAM,CAAC;YACP,oDAAoD;QACtD,CAAC;IACH,CAAC,EAAE,SAAS,CAAC,CAAC;IAEd,aAAa,CAAC,GAAG,CAAC,MAAM,EAAE,EAAE,MAAM,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC,CAAC;AAC1D,CAAC;AAED;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,gBAAgB,CACpC,MAAc,EACd,GAAQ;IAER,MAAM,KAAK,GAAG,aAAa,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;IACxC,IAAI,CAAC,KAAK;QAAE,OAAO;IAEnB,YAAY,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;IAC1B,aAAa,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;IAE7B,IAAI,CAAC;QACH,MAAM,GAAG,CAAC,sBAAsB,CAAC,KAAK,CAAC,MAAM,EAAE,KAAK,CAAC,SAAS,EAAE;YAC9D,YAAY,EAAE,SAAS;SACxB,CAAC,CAAC;IACL,CAAC;IAAC,MAAM,CAAC;QACP,oDAAoD;IACtD,CAAC;AACH,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,aAAa,CAAC,MAAc;IAC1C,MAAM,KAAK,GAAG,aAAa,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;IACxC,IAAI,CAAC,KAAK;QAAE,OAAO;IACnB,YAAY,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;IAC1B,aAAa,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;AAC/B,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,eAAe;IAC7B,KAAK,MAAM,KAAK,IAAI,aAAa,CAAC,MAAM,EAAE,EAAE,CAAC;QAC3C,YAAY,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;IAC5B,CAAC;IACD,aAAa,CAAC,KAAK,EAAE,CAAC;AACxB,CAAC"}
|
|
@@ -8,5 +8,5 @@ export interface CommandWatcher {
|
|
|
8
8
|
* Start a file watcher that monitors command directories and the skills dir,
|
|
9
9
|
* then re-publishes the full merged command list to Telegram on any change.
|
|
10
10
|
*/
|
|
11
|
-
export declare function startCommandWatcher(bot: Bot, projectCwd: string, configDir: string, logger: pino.Logger,
|
|
11
|
+
export declare function startCommandWatcher(bot: Bot, projectCwd: string, configDir: string, logger: pino.Logger, skillsDirs?: string[], enabled?: CommandEnabledFlags): CommandWatcher;
|
|
12
12
|
//# sourceMappingURL=watcher.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"watcher.d.ts","sourceRoot":"","sources":["../../../src/bot/commands/watcher.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"watcher.d.ts","sourceRoot":"","sources":["../../../src/bot/commands/watcher.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,QAAQ,CAAC;AAClC,OAAO,KAAK,IAAI,MAAM,MAAM,CAAC;AAC7B,OAAO,EACL,KAAK,mBAAmB,EAGzB,MAAM,aAAa,CAAC;AAIrB,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;CAC3B;AAID;;;GAGG;AACH,wBAAgB,mBAAmB,CACjC,GAAG,EAAE,GAAG,EACR,UAAU,EAAE,MAAM,EAClB,SAAS,EAAE,MAAM,EACjB,MAAM,EAAE,IAAI,CAAC,MAAM,EACnB,UAAU,CAAC,EAAE,MAAM,EAAE,EACrB,OAAO,CAAC,EAAE,mBAAmB,GAC5B,cAAc,CA0JhB"}
|
|
@@ -1,17 +1,26 @@
|
|
|
1
|
+
import { mkdirSync } from "node:fs";
|
|
1
2
|
import { join } from "node:path";
|
|
2
|
-
import { loadCommands } from "./loader.js";
|
|
3
|
+
import { getCommandsWithDescriptionTooLong, loadCommands, } from "./loader.js";
|
|
3
4
|
// ─── Implementation ──────────────────────────────────────────────────────────
|
|
4
5
|
/**
|
|
5
6
|
* Start a file watcher that monitors command directories and the skills dir,
|
|
6
7
|
* then re-publishes the full merged command list to Telegram on any change.
|
|
7
8
|
*/
|
|
8
|
-
export function startCommandWatcher(bot, projectCwd, configDir, logger,
|
|
9
|
+
export function startCommandWatcher(bot, projectCwd, configDir, logger, skillsDirs, enabled) {
|
|
9
10
|
const projectCommandDir = join(projectCwd, ".hal", "commands");
|
|
10
11
|
const globalCommandDir = join(configDir, ".hal", "commands");
|
|
11
12
|
let debounceTimer = null;
|
|
12
13
|
async function republish() {
|
|
13
14
|
try {
|
|
14
|
-
const commands = await loadCommands(projectCwd, configDir, logger,
|
|
15
|
+
const commands = await loadCommands(projectCwd, configDir, logger, skillsDirs, enabled);
|
|
16
|
+
const tooLong = getCommandsWithDescriptionTooLong(commands, configDir);
|
|
17
|
+
if (tooLong.length > 0) {
|
|
18
|
+
const details = tooLong
|
|
19
|
+
.map((o) => ` /${o.command}: description length ${o.length} (max 256) — ${o.path}`)
|
|
20
|
+
.join("\n");
|
|
21
|
+
logger.error({ offenders: tooLong }, `Command description(s) exceed Telegram's 256-character limit:\n${details}`);
|
|
22
|
+
return;
|
|
23
|
+
}
|
|
15
24
|
await bot.api.setMyCommands(commands.map((c) => ({
|
|
16
25
|
command: c.command,
|
|
17
26
|
description: c.description,
|
|
@@ -41,8 +50,13 @@ export function startCommandWatcher(bot, projectCwd, configDir, logger, skillsDi
|
|
|
41
50
|
try {
|
|
42
51
|
const chokidar = await import("chokidar");
|
|
43
52
|
const watchPaths = [projectCommandDir, globalCommandDir];
|
|
44
|
-
if (
|
|
45
|
-
watchPaths.push(
|
|
53
|
+
if (skillsDirs) {
|
|
54
|
+
watchPaths.push(...skillsDirs);
|
|
55
|
+
}
|
|
56
|
+
// Ensure all watched directories exist so chokidar can establish
|
|
57
|
+
// real fs watches from the start (it won't detect dirs created later)
|
|
58
|
+
for (const dir of watchPaths) {
|
|
59
|
+
mkdirSync(dir, { recursive: true });
|
|
46
60
|
}
|
|
47
61
|
const watcher = chokidar.watch(watchPaths, {
|
|
48
62
|
ignoreInitial: true,
|
|
@@ -80,7 +94,7 @@ export function startCommandWatcher(bot, projectCwd, configDir, logger, skillsDi
|
|
|
80
94
|
logger.error({ error: err instanceof Error ? err.message : String(err) }, "Command watcher error");
|
|
81
95
|
});
|
|
82
96
|
watcherInstance = watcher;
|
|
83
|
-
logger.debug({ projectCommandDir, globalCommandDir,
|
|
97
|
+
logger.debug({ projectCommandDir, globalCommandDir, skillsDirs }, "Command watcher started");
|
|
84
98
|
}
|
|
85
99
|
catch (err) {
|
|
86
100
|
logger.error({ error: err instanceof Error ? err.message : String(err) }, "Failed to start command watcher");
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"watcher.js","sourceRoot":"","sources":["../../../src/bot/commands/watcher.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAGjC,OAAO,
|
|
1
|
+
{"version":3,"file":"watcher.js","sourceRoot":"","sources":["../../../src/bot/commands/watcher.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"text.d.ts","sourceRoot":"","sources":["../../../src/bot/handlers/text.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,QAAQ,CAAC;AAMtC,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AASrD;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,GAAG,EAAE,cAAc,IACrC,SAAS,OAAO,KAAG,OAAO,CAAC,IAAI,CAAC,
|
|
1
|
+
{"version":3,"file":"text.d.ts","sourceRoot":"","sources":["../../../src/bot/handlers/text.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,QAAQ,CAAC;AAMtC,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AASrD;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,GAAG,EAAE,cAAc,IACrC,SAAS,OAAO,KAAG,OAAO,CAAC,IAAI,CAAC,CAgP/C"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { join, resolve } from "node:path";
|
|
2
|
-
import { createAgent,
|
|
2
|
+
import { createAgent, getSkillsDirs } from "../../agent/index.js";
|
|
3
3
|
import { resolveContext } from "../../context/resolver.js";
|
|
4
4
|
import { getDefaultEngineModel } from "../../default-models.js";
|
|
5
5
|
import { sendChunkedResponse } from "../../telegram/chunker.js";
|
|
@@ -77,7 +77,7 @@ export function createTextHandler(ctx) {
|
|
|
77
77
|
return;
|
|
78
78
|
}
|
|
79
79
|
// No .mjs handler — check if this is a registered skill
|
|
80
|
-
const skillEntry = await resolveSkillEntry(commandName,
|
|
80
|
+
const skillEntry = await resolveSkillEntry(commandName, getSkillsDirs(config.cwd, ctx), logger);
|
|
81
81
|
if (skillEntry?.skillPrompt) {
|
|
82
82
|
const prompt = args.length > 0
|
|
83
83
|
? `${skillEntry.skillPrompt}\n\nUser input: ${args.join(" ")}`
|
|
@@ -180,10 +180,8 @@ export function createTextHandler(ctx) {
|
|
|
180
180
|
await saveSessionId(userDir, result.sessionId);
|
|
181
181
|
logger.debug({ sessionId: result.sessionId }, "Session saved");
|
|
182
182
|
}
|
|
183
|
-
const
|
|
184
|
-
|
|
185
|
-
: result.error || "An error occurred";
|
|
186
|
-
await sendChunkedResponse(gramCtx, responseText);
|
|
183
|
+
const parsed = ctx.engine.parse(result);
|
|
184
|
+
await sendChunkedResponse(gramCtx, parsed.text);
|
|
187
185
|
const filesSent = await sendDownloadFiles(gramCtx, userDir, ctx);
|
|
188
186
|
if (filesSent > 0) {
|
|
189
187
|
logger.info({ filesSent }, "Sent download files to user");
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"text.js","sourceRoot":"","sources":["../../../src/bot/handlers/text.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAE1C,OAAO,EAAE,WAAW,EAAE,
|
|
1
|
+
{"version":3,"file":"text.js","sourceRoot":"","sources":["../../../src/bot/handlers/text.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,7 +1,4 @@
|
|
|
1
1
|
import type { Context, NextFunction } from "grammy";
|
|
2
2
|
import type { ProjectContext } from "../../types.js";
|
|
3
|
-
/**
|
|
4
|
-
* Returns a middleware that checks if the user is in the project's whitelist.
|
|
5
|
-
*/
|
|
6
3
|
export declare function createAuthMiddleware(ctx: ProjectContext): (gramCtx: Context, next: NextFunction) => Promise<void>;
|
|
7
4
|
//# sourceMappingURL=auth.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"auth.d.ts","sourceRoot":"","sources":["../../../src/bot/middleware/auth.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,YAAY,EAAE,MAAM,QAAQ,CAAC;AACpD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;
|
|
1
|
+
{"version":3,"file":"auth.d.ts","sourceRoot":"","sources":["../../../src/bot/middleware/auth.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,YAAY,EAAE,MAAM,QAAQ,CAAC;AACpD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AAMrD,wBAAgB,oBAAoB,CAAC,GAAG,EAAE,cAAc,IACxC,SAAS,OAAO,EAAE,MAAM,YAAY,KAAG,OAAO,CAAC,IAAI,CAAC,CAuBnE"}
|
|
@@ -1,23 +1,24 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
*/
|
|
1
|
+
const DENIED_MSG = "Sorry, you are not authorized to use this bot.\n" +
|
|
2
|
+
"Contact the administrator to request access.";
|
|
4
3
|
export function createAuthMiddleware(ctx) {
|
|
5
4
|
return async (gramCtx, next) => {
|
|
6
|
-
const { allowedUserIds } = ctx.config.access;
|
|
5
|
+
const { allowedUserIds, dangerouslyAllowUnrestrictedAccess } = ctx.config.access;
|
|
7
6
|
const userId = gramCtx.from?.id;
|
|
8
|
-
//
|
|
9
|
-
if (allowedUserIds.length
|
|
10
|
-
|
|
7
|
+
// allowedUserIds takes precedence over dangerouslyAllowUnrestrictedAccess
|
|
8
|
+
if (allowedUserIds.length > 0) {
|
|
9
|
+
if (userId && allowedUserIds.includes(userId)) {
|
|
10
|
+
await next();
|
|
11
|
+
return;
|
|
12
|
+
}
|
|
13
|
+
await gramCtx.reply(DENIED_MSG);
|
|
11
14
|
return;
|
|
12
15
|
}
|
|
13
|
-
|
|
14
|
-
if (userId && allowedUserIds.includes(userId)) {
|
|
16
|
+
if (dangerouslyAllowUnrestrictedAccess) {
|
|
15
17
|
await next();
|
|
16
18
|
return;
|
|
17
19
|
}
|
|
18
|
-
//
|
|
19
|
-
await gramCtx.reply(
|
|
20
|
-
"Contact the administrator to request access.");
|
|
20
|
+
// Defensive: boot validation should prevent reaching this branch
|
|
21
|
+
await gramCtx.reply(DENIED_MSG);
|
|
21
22
|
};
|
|
22
23
|
}
|
|
23
24
|
//# sourceMappingURL=auth.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"auth.js","sourceRoot":"","sources":["../../../src/bot/middleware/auth.ts"],"names":[],"mappings":"AAGA
|
|
1
|
+
{"version":3,"file":"auth.js","sourceRoot":"","sources":["../../../src/bot/middleware/auth.ts"],"names":[],"mappings":"AAGA,MAAM,UAAU,GACd,kDAAkD;IAClD,8CAA8C,CAAC;AAEjD,MAAM,UAAU,oBAAoB,CAAC,GAAmB;IACtD,OAAO,KAAK,EAAE,OAAgB,EAAE,IAAkB,EAAiB,EAAE;QACnE,MAAM,EAAE,cAAc,EAAE,kCAAkC,EAAE,GAC1D,GAAG,CAAC,MAAM,CAAC,MAAM,CAAC;QACpB,MAAM,MAAM,GAAG,OAAO,CAAC,IAAI,EAAE,EAAE,CAAC;QAEhC,0EAA0E;QAC1E,IAAI,cAAc,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC9B,IAAI,MAAM,IAAI,cAAc,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC;gBAC9C,MAAM,IAAI,EAAE,CAAC;gBACb,OAAO;YACT,CAAC;YACD,MAAM,OAAO,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC;YAChC,OAAO;QACT,CAAC;QAED,IAAI,kCAAkC,EAAE,CAAC;YACvC,MAAM,IAAI,EAAE,CAAC;YACb,OAAO;QACT,CAAC;QAED,iEAAiE;QACjE,MAAM,OAAO,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC;IAClC,CAAC,CAAC;AACJ,CAAC"}
|
package/dist/bot.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"bot.d.ts","sourceRoot":"","sources":["../src/bot.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"bot.d.ts","sourceRoot":"","sources":["../src/bot.ts"],"names":[],"mappings":"AAgCA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAEjD,MAAM,WAAW,SAAS;IACxB,IAAI,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;CAC3B;AAED;;;;GAIG;AACH,wBAAsB,QAAQ,CAAC,UAAU,EAAE,cAAc,GAAG,OAAO,CAAC,SAAS,CAAC,CAmJ7E"}
|
package/dist/bot.js
CHANGED
|
@@ -1,8 +1,11 @@
|
|
|
1
1
|
import { Bot } from "grammy";
|
|
2
2
|
import { createGitCallbackHandler, createGitCleanHandler, createGitCommitHandler, createGitInitHandler, createGitStatusHandler, } from "./bot/commands/git/index.js";
|
|
3
3
|
import { createHelpHandler } from "./bot/commands/help.js";
|
|
4
|
-
import { loadCommands, } from "./bot/commands/loader.js";
|
|
5
|
-
import {
|
|
4
|
+
import { getCommandsWithDescriptionTooLong, loadCommands, } from "./bot/commands/loader.js";
|
|
5
|
+
import { createModelHandler } from "./bot/commands/model.js";
|
|
6
|
+
import { createModelCallbackHandler } from "./bot/commands/model-callback.js";
|
|
7
|
+
import { createResetCallbackHandler, createResetHandler, } from "./bot/commands/reset.js";
|
|
8
|
+
import { clearAllPrompts } from "./bot/commands/resetPrompt.js";
|
|
6
9
|
import { createCleanHandler } from "./bot/commands/session.js";
|
|
7
10
|
import { createStartHandler } from "./bot/commands/start.js";
|
|
8
11
|
import { startCommandWatcher } from "./bot/commands/watcher.js";
|
|
@@ -32,8 +35,10 @@ export async function startBot(projectCtx) {
|
|
|
32
35
|
bot.command("start", createStartHandler(projectCtx));
|
|
33
36
|
if (cmd.help.enabled)
|
|
34
37
|
bot.command("help", createHelpHandler(projectCtx));
|
|
35
|
-
if (cmd.reset.enabled)
|
|
36
|
-
bot.command("reset", createResetHandler(projectCtx));
|
|
38
|
+
if (cmd.reset.enabled) {
|
|
39
|
+
bot.command("reset", createResetHandler(projectCtx, bot.api));
|
|
40
|
+
bot.on("callback_query:data", createResetCallbackHandler(projectCtx));
|
|
41
|
+
}
|
|
37
42
|
if (cmd.clean.enabled)
|
|
38
43
|
bot.command("clean", createCleanHandler(projectCtx));
|
|
39
44
|
if (cmd.git.enabled) {
|
|
@@ -43,6 +48,10 @@ export async function startBot(projectCtx) {
|
|
|
43
48
|
bot.command("git_clean", createGitCleanHandler(projectCtx));
|
|
44
49
|
bot.on("callback_query:data", createGitCallbackHandler(projectCtx));
|
|
45
50
|
}
|
|
51
|
+
if (cmd.model.enabled) {
|
|
52
|
+
bot.command("model", createModelHandler(projectCtx));
|
|
53
|
+
bot.on("callback_query:data", createModelCallbackHandler(projectCtx));
|
|
54
|
+
}
|
|
46
55
|
// Wire handlers
|
|
47
56
|
bot.on("message:text", createTextHandler(projectCtx));
|
|
48
57
|
bot.on("message:photo", createPhotoHandler(projectCtx));
|
|
@@ -79,19 +88,28 @@ export async function startBot(projectCtx) {
|
|
|
79
88
|
reset: cmd.reset.enabled,
|
|
80
89
|
clean: cmd.clean.enabled,
|
|
81
90
|
git: cmd.git.enabled,
|
|
91
|
+
model: cmd.model.enabled,
|
|
82
92
|
};
|
|
83
93
|
// Register project-specific commands and skills with Telegram on startup
|
|
84
|
-
const
|
|
85
|
-
const commands = await loadCommands(config.cwd, config.configDir, logger,
|
|
94
|
+
const skillsDirs = engine.skillsDirs(config.cwd);
|
|
95
|
+
const commands = await loadCommands(config.cwd, config.configDir, logger, skillsDirs, enabledFlags);
|
|
86
96
|
if (commands.length > 0) {
|
|
97
|
+
const tooLong = getCommandsWithDescriptionTooLong(commands, config.configDir);
|
|
98
|
+
if (tooLong.length > 0) {
|
|
99
|
+
const details = tooLong
|
|
100
|
+
.map((o) => ` /${o.command}: description length ${o.length} (max 256) — ${o.path}`)
|
|
101
|
+
.join("\n");
|
|
102
|
+
throw new Error(`Command description(s) exceed Telegram's 256-character limit:\n${details}`);
|
|
103
|
+
}
|
|
87
104
|
await bot.api.setMyCommands(commands.map((c) => ({ command: c.command, description: c.description })));
|
|
88
105
|
logger.info({ count: commands.length }, "Commands registered with Telegram");
|
|
89
106
|
}
|
|
90
107
|
// Start file watcher for hot-reload of command and skill files
|
|
91
|
-
const watcher = startCommandWatcher(bot, config.cwd, config.configDir, logger,
|
|
108
|
+
const watcher = startCommandWatcher(bot, config.cwd, config.configDir, logger, skillsDirs, enabledFlags);
|
|
92
109
|
return {
|
|
93
110
|
stop: async () => {
|
|
94
111
|
await watcher.stop();
|
|
112
|
+
clearAllPrompts();
|
|
95
113
|
rateLimitCleanup();
|
|
96
114
|
await bot.stop(); // Stops polling; Grammy waits for in-flight updates to finish
|
|
97
115
|
await runningPromise;
|
package/dist/bot.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"bot.js","sourceRoot":"","sources":["../src/bot.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,MAAM,QAAQ,CAAC;AAC7B,OAAO,EACL,wBAAwB,EACxB,qBAAqB,EACrB,sBAAsB,EACtB,oBAAoB,EACpB,sBAAsB,GACvB,MAAM,6BAA6B,CAAC;AACrC,OAAO,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAC3D,OAAO,EAEL,YAAY,GACb,MAAM,0BAA0B,CAAC;AAClC,OAAO,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AAC7D,OAAO,EAAE,kBAAkB,EAAE,MAAM,2BAA2B,CAAC;AAC/D,OAAO,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AAC7D,OAAO,EAAE,mBAAmB,EAAE,MAAM,2BAA2B,CAAC;AAChE,OAAO,EACL,qBAAqB,EACrB,kBAAkB,EAClB,iBAAiB,EACjB,kBAAkB,GACnB,MAAM,yBAAyB,CAAC;AACjC,OAAO,EAAE,oBAAoB,EAAE,MAAM,0BAA0B,CAAC;AAChE,OAAO,EAAE,yBAAyB,EAAE,MAAM,+BAA+B,CAAC;AAO1E;;;;GAIG;AACH,MAAM,CAAC,KAAK,UAAU,QAAQ,CAAC,UAA0B;IACvD,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,GAAG,UAAU,CAAC;IAE9C,MAAM,CAAC,IAAI,CAAC,EAAE,GAAG,EAAE,MAAM,CAAC,GAAG,EAAE,OAAO,EAAE,MAAM,CAAC,OAAO,EAAE,EAAE,cAAc,CAAC,CAAC;IAE1E,yDAAyD;IACzD,MAAM,CAAC,KAAK,CACV,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,EAAE,MAAM,CAAC,OAAO,EAAE,EAClD,qBAAqB,CACtB,CAAC;IACF,MAAM,CAAC,KAAK,EAAE,CAAC;IACf,MAAM,CAAC,IAAI,CACT,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,EAAE,MAAM,CAAC,OAAO,EAAE,EAClD,qBAAqB,CACtB,CAAC;IAEF,MAAM,GAAG,GAAG,IAAI,GAAG,CAAC,MAAM,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;IAE9C,0BAA0B;IAC1B,MAAM,EAAE,UAAU,EAAE,WAAW,EAAE,OAAO,EAAE,gBAAgB,EAAE,GAC1D,yBAAyB,CAAC,UAAU,CAAC,CAAC;IACxC,GAAG,CAAC,GAAG,CAAC,oBAAoB,CAAC,UAAU,CAAC,CAAC,CAAC;IAC1C,GAAG,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;IAErB,oCAAoC;IACpC,MAAM,GAAG,GAAG,MAAM,CAAC,QAAQ,CAAC;IAC5B,IAAI,GAAG,CAAC,KAAK,CAAC,OAAO;QAAE,GAAG,CAAC,OAAO,CAAC,OAAO,EAAE,kBAAkB,CAAC,UAAU,CAAC,CAAC,CAAC;IAC5E,IAAI,GAAG,CAAC,IAAI,CAAC,OAAO;QAAE,GAAG,CAAC,OAAO,CAAC,MAAM,EAAE,iBAAiB,CAAC,UAAU,CAAC,CAAC,CAAC;IACzE,IAAI,GAAG,CAAC,KAAK,CAAC,OAAO;
|
|
1
|
+
{"version":3,"file":"bot.js","sourceRoot":"","sources":["../src/bot.ts"],"names":[],"mappings":"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"}
|
package/dist/cli.js
CHANGED
|
@@ -3,7 +3,7 @@ import { existsSync } from "node:fs";
|
|
|
3
3
|
import { writeFile } from "node:fs/promises";
|
|
4
4
|
import { join, resolve } from "node:path";
|
|
5
5
|
import { startBot } from "./bot.js";
|
|
6
|
-
import { loadMultiConfig, resolveProjectConfig, tryLoadMultiConfig, validateProjects, } from "./config.js";
|
|
6
|
+
import { loadMultiConfig, resolveProjectConfig, tryLoadMultiConfig, validateAccessPolicies, validateProjects, } from "./config.js";
|
|
7
7
|
import { startConfigWatcher } from "./config-watcher.js";
|
|
8
8
|
import { evaluateBootTimeShells } from "./context/resolver.js";
|
|
9
9
|
import { getDefaultEngineModel } from "./default-models.js";
|
|
@@ -26,7 +26,7 @@ function buildConfigTemplate(engineName) {
|
|
|
26
26
|
"windowMs": 60000
|
|
27
27
|
},
|
|
28
28
|
"access": {
|
|
29
|
-
"allowedUserIds": []
|
|
29
|
+
"allowedUserIds": [0]
|
|
30
30
|
}
|
|
31
31
|
},
|
|
32
32
|
"projects": [
|
|
@@ -35,9 +35,6 @@ function buildConfigTemplate(engineName) {
|
|
|
35
35
|
"cwd": ".",
|
|
36
36
|
"telegram": {
|
|
37
37
|
"botToken": "YOUR_BOT_TOKEN_HERE"
|
|
38
|
-
},
|
|
39
|
-
"access": {
|
|
40
|
-
"allowedUserIds": []
|
|
41
38
|
}
|
|
42
39
|
}
|
|
43
40
|
]
|
|
@@ -56,7 +53,7 @@ Commands:
|
|
|
56
53
|
start Start the bots (default)
|
|
57
54
|
|
|
58
55
|
Options:
|
|
59
|
-
--cwd <path> Directory containing hal.config.json (default: current directory)
|
|
56
|
+
--cwd <path> Directory containing hal.config.{json,jsonc,yaml} (default: current directory)
|
|
60
57
|
--engine <name> Engine to use: claude, copilot, codex, opencode, cursor (default: claude)
|
|
61
58
|
--help, -h Show this help message
|
|
62
59
|
|
|
@@ -159,16 +156,10 @@ async function runInit(cwd, engineName) {
|
|
|
159
156
|
console.log(`\nNext steps:`);
|
|
160
157
|
console.log(`1. Edit hal.config.json and set your Telegram bot token in projects[0].telegram.botToken`);
|
|
161
158
|
console.log(`2. Set the project cwd to the folder the engine should work in`);
|
|
162
|
-
console.log(`3.
|
|
159
|
+
console.log(`3. Replace 0 in access.allowedUserIds with your Telegram user ID (required)`);
|
|
163
160
|
console.log(`4. Run: npx @marcopeg/hal --cwd ${cwd}`);
|
|
164
161
|
process.exit(0);
|
|
165
162
|
}
|
|
166
|
-
// ─── start command ────────────────────────────────────────────────────────────
|
|
167
|
-
/**
|
|
168
|
-
* Load config, resolve projects, build contexts, and start all bots.
|
|
169
|
-
* Rejects if config resolution or any bot startup fails.
|
|
170
|
-
* Used for both initial run and hot-reload.
|
|
171
|
-
*/
|
|
172
163
|
async function runBotsForConfig(configDir, loaded, startupLogger) {
|
|
173
164
|
const { config: multiConfig, loadedFiles } = loaded;
|
|
174
165
|
const globals = multiConfig.globals ?? {};
|
|
@@ -184,8 +175,9 @@ async function runBotsForConfig(configDir, loaded, startupLogger) {
|
|
|
184
175
|
return true;
|
|
185
176
|
});
|
|
186
177
|
validateProjects(resolvedProjects);
|
|
178
|
+
validateAccessPolicies(resolvedProjects);
|
|
187
179
|
const sourceLines = loadedFiles.map((f, i) => {
|
|
188
|
-
const isLocal =
|
|
180
|
+
const isLocal = /hal\.config\.local\.\w+$/.test(f);
|
|
189
181
|
const suffix = isLocal ? " [local override]" : "";
|
|
190
182
|
return ` ${i + 1}. ${f}${suffix}`;
|
|
191
183
|
});
|
|
@@ -206,17 +198,17 @@ async function runBotsForConfig(configDir, loaded, startupLogger) {
|
|
|
206
198
|
startupLogger.info(`Bot "${config.slug}" has terminal logging suppressed.${config.logging.persist ? ` Persisted logs can be read at: ${config.logDir}` : ""}`);
|
|
207
199
|
}
|
|
208
200
|
}
|
|
209
|
-
const
|
|
210
|
-
startupLogger.info({ count:
|
|
211
|
-
return
|
|
201
|
+
const botHandles = await Promise.all(contexts.map((ctx) => startBot(ctx)));
|
|
202
|
+
startupLogger.info({ count: botHandles.length }, "All bots running");
|
|
203
|
+
return { botHandles };
|
|
212
204
|
}
|
|
213
205
|
async function runStart(configDir) {
|
|
214
206
|
const startupLogger = createStartupLogger();
|
|
215
207
|
startupLogger.info({ configDir }, "Loading configuration");
|
|
216
208
|
const loaded = loadMultiConfig(configDir);
|
|
217
|
-
let
|
|
209
|
+
let runResult;
|
|
218
210
|
try {
|
|
219
|
-
|
|
211
|
+
runResult = await runBotsForConfig(configDir, loaded, startupLogger);
|
|
220
212
|
}
|
|
221
213
|
catch (err) {
|
|
222
214
|
startupLogger.error({ error: err instanceof Error ? err.message : String(err) }, "Failed to start one or more bots — aborting");
|
|
@@ -229,14 +221,15 @@ async function runStart(configDir) {
|
|
|
229
221
|
reloading = true;
|
|
230
222
|
try {
|
|
231
223
|
startupLogger.info("Config change detected");
|
|
232
|
-
await Promise.all(
|
|
224
|
+
await Promise.all(runResult.botHandles.map((h) => h.stop()));
|
|
233
225
|
startupLogger.info("All bots stopped");
|
|
234
226
|
try {
|
|
235
227
|
const result = tryLoadMultiConfig(configDir);
|
|
236
|
-
|
|
228
|
+
runResult = await runBotsForConfig(configDir, result, startupLogger);
|
|
237
229
|
}
|
|
238
230
|
catch (err) {
|
|
239
231
|
startupLogger.error({ error: err instanceof Error ? err.message : String(err) }, "Reload failed");
|
|
232
|
+
process.exit(1);
|
|
240
233
|
}
|
|
241
234
|
}
|
|
242
235
|
finally {
|
|
@@ -246,7 +239,7 @@ async function runStart(configDir) {
|
|
|
246
239
|
async function shutdown(signal) {
|
|
247
240
|
startupLogger.info({ signal }, "Received shutdown signal");
|
|
248
241
|
await configWatcher.stop();
|
|
249
|
-
await Promise.all(
|
|
242
|
+
await Promise.all(runResult.botHandles.map((h) => h.stop().catch(() => { })));
|
|
250
243
|
startupLogger.info("All bots stopped");
|
|
251
244
|
process.exit(0);
|
|
252
245
|
}
|
package/dist/cli.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":";AAEA,OAAO,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AACrC,OAAO,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAC7C,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAE1C,OAAO,EAAkB,QAAQ,EAAE,MAAM,UAAU,CAAC;AAEpD,OAAO,EACL,eAAe,EACf,oBAAoB,EACpB,kBAAkB,EAClB,gBAAgB,GACjB,MAAM,aAAa,CAAC;AACrB,OAAO,EAAE,kBAAkB,EAAE,MAAM,qBAAqB,CAAC;AACzD,OAAO,EAAE,sBAAsB,EAAE,MAAM,uBAAuB,CAAC;AAC/D,OAAO,EAAE,qBAAqB,EAAE,MAAM,qBAAqB,CAAC;AAC5D,OAAO,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AAE9C,OAAO,EAAE,mBAAmB,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAC;AAGvE,iFAAiF;AAEjF,SAAS,mBAAmB,CAAC,UAAsB;IACjD,OAAO;;;iBAGQ,UAAU
|
|
1
|
+
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config-watcher.d.ts","sourceRoot":"","sources":["../src/config-watcher.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"config-watcher.d.ts","sourceRoot":"","sources":["../src/config-watcher.ts"],"names":[],"mappings":"AAkBA,MAAM,WAAW,mBAAmB;IAClC,IAAI,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;CAC3B;AAED;;;;GAIG;AACH,wBAAgB,kBAAkB,CAChC,SAAS,EAAE,MAAM,EACjB,cAAc,EAAE,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,GACzC,mBAAmB,CAoCrB"}
|
package/dist/config-watcher.js
CHANGED
|
@@ -2,7 +2,13 @@ import { join } from "node:path";
|
|
|
2
2
|
import chokidar from "chokidar";
|
|
3
3
|
const CONFIG_FILES = [
|
|
4
4
|
"hal.config.json",
|
|
5
|
+
"hal.config.jsonc",
|
|
6
|
+
"hal.config.yaml",
|
|
7
|
+
"hal.config.yml",
|
|
5
8
|
"hal.config.local.json",
|
|
9
|
+
"hal.config.local.jsonc",
|
|
10
|
+
"hal.config.local.yaml",
|
|
11
|
+
"hal.config.local.yml",
|
|
6
12
|
".env",
|
|
7
13
|
".env.local",
|
|
8
14
|
];
|