@marcopeg/hal 1.0.18 → 1.0.22
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 -743
- 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/git/callback.d.ts +8 -0
- package/dist/bot/commands/git/callback.d.ts.map +1 -0
- package/dist/bot/commands/git/callback.js +72 -0
- package/dist/bot/commands/git/callback.js.map +1 -0
- package/dist/bot/commands/git/clean.d.ts +4 -0
- package/dist/bot/commands/git/clean.d.ts.map +1 -0
- package/dist/bot/commands/git/clean.js +50 -0
- package/dist/bot/commands/git/clean.js.map +1 -0
- package/dist/bot/commands/git/commit.d.ts +4 -0
- package/dist/bot/commands/git/commit.d.ts.map +1 -0
- package/dist/bot/commands/git/commit.js +72 -0
- package/dist/bot/commands/git/commit.js.map +1 -0
- package/dist/bot/commands/git/exec.d.ts +6 -0
- package/dist/bot/commands/git/exec.d.ts.map +1 -0
- package/dist/bot/commands/git/exec.js +16 -0
- package/dist/bot/commands/git/exec.js.map +1 -0
- package/dist/bot/commands/git/index.d.ts +6 -0
- package/dist/bot/commands/git/index.d.ts.map +1 -0
- package/dist/bot/commands/git/index.js +6 -0
- package/dist/bot/commands/git/index.js.map +1 -0
- package/dist/bot/commands/git/init.d.ts +4 -0
- package/dist/bot/commands/git/init.d.ts.map +1 -0
- package/dist/bot/commands/git/init.js +22 -0
- package/dist/bot/commands/git/init.js.map +1 -0
- package/dist/bot/commands/git/status.d.ts +4 -0
- package/dist/bot/commands/git/status.d.ts.map +1 -0
- package/dist/bot/commands/git/status.js +18 -0
- package/dist/bot/commands/git/status.js.map +1 -0
- package/dist/bot/commands/help.js +1 -1
- package/dist/bot/commands/help.js.map +1 -1
- package/dist/bot/commands/loader.d.ts +14 -6
- package/dist/bot/commands/loader.d.ts.map +1 -1
- package/dist/bot/commands/loader.js +126 -34
- 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 +51 -25
- 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/session.d.ts +2 -2
- package/dist/bot/commands/session.d.ts.map +1 -1
- package/dist/bot/commands/session.js +7 -4
- package/dist/bot/commands/session.js.map +1 -1
- package/dist/bot/commands/start.js +2 -2
- package/dist/bot/commands/start.js.map +1 -1
- package/dist/bot/commands/watcher.d.ts +2 -1
- package/dist/bot/commands/watcher.d.ts.map +1 -1
- package/dist/bot/commands/watcher.js +11 -5
- 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 +11 -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 +43 -11
- package/dist/bot.js.map +1 -1
- package/dist/cli.js +52 -29
- package/dist/cli.js.map +1 -1
- package/dist/config-watcher.d.ts +10 -0
- package/dist/config-watcher.d.ts.map +1 -0
- package/dist/config-watcher.js +55 -0
- package/dist/config-watcher.js.map +1 -0
- 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 +338 -53
- package/dist/config.d.ts.map +1 -1
- package/dist/config.js +337 -92
- package/dist/config.js.map +1 -1
- package/dist/context/resolver.d.ts +4 -0
- package/dist/context/resolver.d.ts.map +1 -1
- package/dist/context/resolver.js +8 -2
- package/dist/context/resolver.js.map +1 -1
- package/dist/default-models.d.ts +3 -0
- package/dist/default-models.d.ts.map +1 -0
- package/dist/default-models.js +16 -0
- package/dist/default-models.js.map +1 -0
- 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 +27 -8
- 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 +3 -0
- package/dist/engine/adapters/cursor.d.ts.map +1 -0
- package/dist/engine/adapters/cursor.js +106 -0
- package/dist/engine/adapters/cursor.js.map +1 -0
- package/dist/engine/adapters/opencode.d.ts +2 -2
- package/dist/engine/adapters/opencode.d.ts.map +1 -1
- package/dist/engine/adapters/opencode.js +33 -13
- 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/prompt.d.ts.map +1 -1
- package/dist/engine/prompt.js +8 -0
- package/dist/engine/prompt.js.map +1 -1
- package/dist/engine/registry.d.ts.map +1 -1
- package/dist/engine/registry.js +4 -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 +2 -0
- package/dist/engine/types.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 +6 -2
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"codex.js","sourceRoot":"","sources":["../../../src/engine/adapters/codex.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,KAAK,EAAE,MAAM,oBAAoB,CAAC;AACrD,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAEjC,OAAO,EAAE,qBAAqB,EAAE,MAAM,cAAc,CAAC;AAQrD,MAAM,eAAe,GAAG,OAAO,CAAC;AAEhC;;;;;GAKG;AACH,MAAM,UAAU,kBAAkB,CAChC,OAAgB,EAChB,KAAc;IAEd,MAAM,GAAG,GAAG,OAAO,IAAI,eAAe,CAAC;IAEvC,OAAO;QACL,IAAI,EAAE,OAAO;QACb,OAAO,EAAE,GAAG;QAEZ,KAAK;YACH,IAAI,CAAC;gBACH,QAAQ,CAAC,GAAG,GAAG,YAAY,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC,CAAC;YAClD,CAAC;YAAC,MAAM,CAAC;gBACP,MAAM,IAAI,KAAK,CACb,sBAAsB,GAAG,iCAAiC;oBACxD,8EAA8E,CACjF,CAAC;YACJ,CAAC;QACH,CAAC;QAED,KAAK,CAAC,OAAO,CACX,OAA6B,EAC7B,GAAmB;YAEnB,MAAM,EAAE,eAAe,EAAE,GAAG,OAAO,CAAC;YACpC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,GAAG,GAAG,CAAC;YAC/B,MAAM,UAAU,GAAG,MAAM,qBAAqB,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC;YAC7D,MAAM,GAAG,GAAG,MAAM,CAAC,GAAG,CAAC;YAEvB,MAAM,wBAAwB,GAC5B,MAAM,CAAC,aAAa,IAAI,eAAe,KAAK,KAAK,CAAC;YAEpD,
|
|
1
|
+
{"version":3,"file":"codex.js","sourceRoot":"","sources":["../../../src/engine/adapters/codex.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"copilot.d.ts","sourceRoot":"","sources":["../../../src/engine/adapters/copilot.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EACV,aAAa,EAId,MAAM,aAAa,CAAC;AAIrB,wBAAgB,oBAAoB,CAClC,OAAO,CAAC,EAAE,MAAM,EAChB,KAAK,CAAC,EAAE,MAAM,GACb,aAAa,
|
|
1
|
+
{"version":3,"file":"copilot.d.ts","sourceRoot":"","sources":["../../../src/engine/adapters/copilot.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EACV,aAAa,EAId,MAAM,aAAa,CAAC;AAIrB,wBAAgB,oBAAoB,CAClC,OAAO,CAAC,EAAE,MAAM,EAChB,KAAK,CAAC,EAAE,MAAM,GACb,aAAa,CAoIf"}
|
|
@@ -97,9 +97,12 @@ export function createCopilotAdapter(command, model) {
|
|
|
97
97
|
text: result.output || "No response received",
|
|
98
98
|
};
|
|
99
99
|
},
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
100
|
+
skillsDirs(projectCwd) {
|
|
101
|
+
return [
|
|
102
|
+
join(projectCwd, ".agents", "skills"),
|
|
103
|
+
join(projectCwd, ".github", "skills"),
|
|
104
|
+
join(projectCwd, ".claude", "skills"),
|
|
105
|
+
];
|
|
103
106
|
},
|
|
104
107
|
instructionsFile() {
|
|
105
108
|
return "AGENTS.md";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"copilot.js","sourceRoot":"","sources":["../../../src/engine/adapters/copilot.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"copilot.js","sourceRoot":"","sources":["../../../src/engine/adapters/copilot.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cursor.d.ts","sourceRoot":"","sources":["../../../src/engine/adapters/cursor.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EACV,aAAa,EAId,MAAM,aAAa,CAAC;AAIrB,wBAAgB,mBAAmB,CACjC,OAAO,CAAC,EAAE,MAAM,EAChB,KAAK,CAAC,EAAE,MAAM,GACb,aAAa,CA+Hf"}
|
|
@@ -0,0 +1,106 @@
|
|
|
1
|
+
import { execSync, spawn } from "node:child_process";
|
|
2
|
+
import { join } from "node:path";
|
|
3
|
+
import { buildContextualPrompt } from "../prompt.js";
|
|
4
|
+
const DEFAULT_COMMAND = "agent";
|
|
5
|
+
export function createCursorAdapter(command, model) {
|
|
6
|
+
const cmd = command || DEFAULT_COMMAND;
|
|
7
|
+
return {
|
|
8
|
+
name: "Cursor",
|
|
9
|
+
command: cmd,
|
|
10
|
+
check() {
|
|
11
|
+
try {
|
|
12
|
+
execSync(`${cmd} --version`, { stdio: "pipe" });
|
|
13
|
+
}
|
|
14
|
+
catch {
|
|
15
|
+
throw new Error(`Cursor Agent CLI command "${cmd}" not found or not executable. ` +
|
|
16
|
+
`Please ensure Cursor Agent is installed and the command is in your PATH.`);
|
|
17
|
+
}
|
|
18
|
+
},
|
|
19
|
+
async execute(options, ctx) {
|
|
20
|
+
const { onProgress, continueSession } = options;
|
|
21
|
+
const { config, logger } = ctx;
|
|
22
|
+
const fullPrompt = await buildContextualPrompt(options, ctx);
|
|
23
|
+
const args = [
|
|
24
|
+
"--print",
|
|
25
|
+
"--workspace",
|
|
26
|
+
config.cwd,
|
|
27
|
+
"--trust",
|
|
28
|
+
"--force",
|
|
29
|
+
];
|
|
30
|
+
args.push("--model", model || "auto");
|
|
31
|
+
if (config.engineSession && continueSession !== false) {
|
|
32
|
+
args.push("--continue");
|
|
33
|
+
}
|
|
34
|
+
args.push(fullPrompt);
|
|
35
|
+
const cwd = config.cwd;
|
|
36
|
+
logger.info({ command: cmd, cwd }, "Executing Cursor Agent CLI");
|
|
37
|
+
return new Promise((resolve) => {
|
|
38
|
+
const proc = spawn(cmd, args, {
|
|
39
|
+
cwd,
|
|
40
|
+
env: process.env,
|
|
41
|
+
stdio: ["ignore", "pipe", "pipe"],
|
|
42
|
+
});
|
|
43
|
+
let stdout = "";
|
|
44
|
+
let stderrOutput = "";
|
|
45
|
+
proc.stdout.on("data", (data) => {
|
|
46
|
+
const chunk = data.toString();
|
|
47
|
+
stdout += chunk;
|
|
48
|
+
if (onProgress && chunk.trim()) {
|
|
49
|
+
onProgress("Cursor is responding...");
|
|
50
|
+
}
|
|
51
|
+
});
|
|
52
|
+
proc.stderr.on("data", (data) => {
|
|
53
|
+
const chunk = data.toString().trim();
|
|
54
|
+
if (chunk) {
|
|
55
|
+
stderrOutput += `${chunk}\n`;
|
|
56
|
+
logger.info({ stderr: chunk }, "Cursor stderr");
|
|
57
|
+
}
|
|
58
|
+
});
|
|
59
|
+
proc.on("close", (code) => {
|
|
60
|
+
logger.info({ code }, "Cursor process closed");
|
|
61
|
+
if (code === 0) {
|
|
62
|
+
resolve({
|
|
63
|
+
success: true,
|
|
64
|
+
output: stdout.trim() || "No response received",
|
|
65
|
+
});
|
|
66
|
+
}
|
|
67
|
+
else {
|
|
68
|
+
const errorMsg = stderrOutput.trim() || `Cursor exited with code ${code}`;
|
|
69
|
+
logger.error({ code, stderr: stderrOutput }, "Cursor process failed");
|
|
70
|
+
resolve({
|
|
71
|
+
success: false,
|
|
72
|
+
output: stdout.trim(),
|
|
73
|
+
error: errorMsg,
|
|
74
|
+
});
|
|
75
|
+
}
|
|
76
|
+
});
|
|
77
|
+
proc.on("error", (err) => {
|
|
78
|
+
logger.error({ error: err.message }, "Cursor process error");
|
|
79
|
+
resolve({
|
|
80
|
+
success: false,
|
|
81
|
+
output: "",
|
|
82
|
+
error: `Failed to start ${cmd}: ${err.message}`,
|
|
83
|
+
});
|
|
84
|
+
});
|
|
85
|
+
});
|
|
86
|
+
},
|
|
87
|
+
parse(result) {
|
|
88
|
+
if (!result.success) {
|
|
89
|
+
return { text: result.error || "An unknown error occurred" };
|
|
90
|
+
}
|
|
91
|
+
return {
|
|
92
|
+
text: result.output || "No response received",
|
|
93
|
+
};
|
|
94
|
+
},
|
|
95
|
+
skillsDirs(projectCwd) {
|
|
96
|
+
return [
|
|
97
|
+
join(projectCwd, ".agents", "skills"),
|
|
98
|
+
join(projectCwd, ".cursor", "skills"),
|
|
99
|
+
];
|
|
100
|
+
},
|
|
101
|
+
instructionsFile() {
|
|
102
|
+
return ".cursorrules";
|
|
103
|
+
},
|
|
104
|
+
};
|
|
105
|
+
}
|
|
106
|
+
//# sourceMappingURL=cursor.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cursor.js","sourceRoot":"","sources":["../../../src/engine/adapters/cursor.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import type { EngineAdapter } from "../types.js";
|
|
2
2
|
/**
|
|
3
|
-
*
|
|
4
|
-
*
|
|
3
|
+
* Adapter for OpenCode CLI. Non-interactive: opencode run [-m model] [-c] "<prompt>".
|
|
4
|
+
* Sessions and config are scoped by process CWD — always spawn with cwd: config.cwd.
|
|
5
5
|
*/
|
|
6
6
|
export declare function createOpencodeAdapter(command?: string, model?: string): EngineAdapter;
|
|
7
7
|
//# sourceMappingURL=opencode.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"opencode.d.ts","sourceRoot":"","sources":["../../../src/engine/adapters/opencode.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EACV,aAAa,EAId,MAAM,aAAa,CAAC;AAIrB;;;GAGG;AACH,wBAAgB,qBAAqB,CACnC,OAAO,CAAC,EAAE,MAAM,EAChB,KAAK,CAAC,EAAE,MAAM,GACb,aAAa,
|
|
1
|
+
{"version":3,"file":"opencode.d.ts","sourceRoot":"","sources":["../../../src/engine/adapters/opencode.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EACV,aAAa,EAId,MAAM,aAAa,CAAC;AAIrB;;;GAGG;AACH,wBAAgB,qBAAqB,CACnC,OAAO,CAAC,EAAE,MAAM,EAChB,KAAK,CAAC,EAAE,MAAM,GACb,aAAa,CAgIf"}
|
|
@@ -3,8 +3,8 @@ import { join } from "node:path";
|
|
|
3
3
|
import { buildContextualPrompt } from "../prompt.js";
|
|
4
4
|
const DEFAULT_COMMAND = "opencode";
|
|
5
5
|
/**
|
|
6
|
-
*
|
|
7
|
-
*
|
|
6
|
+
* Adapter for OpenCode CLI. Non-interactive: opencode run [-m model] [-c] "<prompt>".
|
|
7
|
+
* Sessions and config are scoped by process CWD — always spawn with cwd: config.cwd.
|
|
8
8
|
*/
|
|
9
9
|
export function createOpencodeAdapter(command, model) {
|
|
10
10
|
const cmd = command || DEFAULT_COMMAND;
|
|
@@ -21,27 +21,44 @@ export function createOpencodeAdapter(command, model) {
|
|
|
21
21
|
}
|
|
22
22
|
},
|
|
23
23
|
async execute(options, ctx) {
|
|
24
|
+
const { onProgress, continueSession } = options;
|
|
24
25
|
const { config, logger } = ctx;
|
|
25
26
|
const fullPrompt = await buildContextualPrompt(options, ctx);
|
|
26
|
-
|
|
27
|
-
const args = ["
|
|
28
|
-
// Set model if specified
|
|
27
|
+
const continueSessionRequested = config.engineSession && continueSession !== false;
|
|
28
|
+
const args = ["run"];
|
|
29
29
|
if (model) {
|
|
30
|
-
args.push("
|
|
30
|
+
args.push("-m", model);
|
|
31
31
|
}
|
|
32
|
+
if (continueSessionRequested) {
|
|
33
|
+
args.push("-c");
|
|
34
|
+
}
|
|
35
|
+
args.push(fullPrompt);
|
|
32
36
|
const cwd = config.cwd;
|
|
33
|
-
logger.info({
|
|
34
|
-
|
|
37
|
+
logger.info({
|
|
38
|
+
command: cmd,
|
|
39
|
+
args: args.slice(0, -1),
|
|
40
|
+
cwd,
|
|
41
|
+
continue: continueSessionRequested,
|
|
42
|
+
}, "Executing OpenCode CLI");
|
|
43
|
+
// Don't load ~/.claude/CLAUDE.md so the model doesn't say "I'm Claude"
|
|
44
|
+
const env = {
|
|
45
|
+
...process.env,
|
|
46
|
+
OPENCODE_DISABLE_CLAUDE_CODE_PROMPT: "true",
|
|
47
|
+
};
|
|
35
48
|
return new Promise((resolve) => {
|
|
36
49
|
const proc = spawn(cmd, args, {
|
|
37
50
|
cwd,
|
|
38
|
-
env
|
|
51
|
+
env,
|
|
39
52
|
stdio: ["ignore", "pipe", "pipe"],
|
|
40
53
|
});
|
|
41
54
|
let stdout = "";
|
|
42
55
|
let stderrOutput = "";
|
|
43
56
|
proc.stdout.on("data", (data) => {
|
|
44
|
-
|
|
57
|
+
const chunk = data.toString();
|
|
58
|
+
stdout += chunk;
|
|
59
|
+
if (onProgress && chunk.trim()) {
|
|
60
|
+
onProgress("OpenCode is responding...");
|
|
61
|
+
}
|
|
45
62
|
});
|
|
46
63
|
proc.stderr.on("data", (data) => {
|
|
47
64
|
const chunk = data.toString().trim();
|
|
@@ -82,9 +99,12 @@ export function createOpencodeAdapter(command, model) {
|
|
|
82
99
|
}
|
|
83
100
|
return { text: result.output || "No response received" };
|
|
84
101
|
},
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
102
|
+
skillsDirs(projectCwd) {
|
|
103
|
+
return [
|
|
104
|
+
join(projectCwd, ".agents", "skills"),
|
|
105
|
+
join(projectCwd, ".opencode", "skills"),
|
|
106
|
+
join(projectCwd, ".claude", "skills"),
|
|
107
|
+
];
|
|
88
108
|
},
|
|
89
109
|
instructionsFile() {
|
|
90
110
|
return "AGENTS.md";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"opencode.js","sourceRoot":"","sources":["../../../src/engine/adapters/opencode.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,KAAK,EAAE,MAAM,oBAAoB,CAAC;AACrD,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAEjC,OAAO,EAAE,qBAAqB,EAAE,MAAM,cAAc,CAAC;AAQrD,MAAM,eAAe,GAAG,UAAU,CAAC;AAEnC;;;GAGG;AACH,MAAM,UAAU,qBAAqB,CACnC,OAAgB,EAChB,KAAc;IAEd,MAAM,GAAG,GAAG,OAAO,IAAI,eAAe,CAAC;IAEvC,OAAO;QACL,IAAI,EAAE,UAAU;QAChB,OAAO,EAAE,GAAG;QAEZ,KAAK;YACH,IAAI,CAAC;gBACH,QAAQ,CAAC,GAAG,GAAG,YAAY,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC,CAAC;YAClD,CAAC;YAAC,MAAM,CAAC;gBACP,MAAM,IAAI,KAAK,CACb,yBAAyB,GAAG,iCAAiC;oBAC3D,0EAA0E,CAC7E,CAAC;YACJ,CAAC;QACH,CAAC;QAED,KAAK,CAAC,OAAO,CACX,OAA6B,EAC7B,GAAmB;YAEnB,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,GAAG,GAAG,CAAC;YAE/B,MAAM,UAAU,GAAG,MAAM,qBAAqB,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC;YAE7D,
|
|
1
|
+
{"version":3,"file":"opencode.js","sourceRoot":"","sources":["../../../src/engine/adapters/opencode.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import type pino from "pino";
|
|
2
|
+
import type { EngineName } from "./types.js";
|
|
3
|
+
interface MultiConfigLike {
|
|
4
|
+
globals?: {
|
|
5
|
+
engine?: {
|
|
6
|
+
name?: string;
|
|
7
|
+
};
|
|
8
|
+
};
|
|
9
|
+
}
|
|
10
|
+
/**
|
|
11
|
+
* Returns true if globals.engine.name is set (i.e. a global default exists).
|
|
12
|
+
*/
|
|
13
|
+
export declare function isEngineConfigured(config: MultiConfigLike): boolean;
|
|
14
|
+
export declare function persistEngineToConfig(configDir: string, engine: EngineName): Promise<void>;
|
|
15
|
+
export interface DetectEngineOptions {
|
|
16
|
+
/** Skip the initial "do you want me to check?" confirmation prompt. */
|
|
17
|
+
skipInitialPrompt?: boolean;
|
|
18
|
+
/** Skip the final "save to config?" prompt and always return persist: true. */
|
|
19
|
+
skipPersistPrompt?: boolean;
|
|
20
|
+
}
|
|
21
|
+
export declare function detectEngine(configDir: string, logger: pino.Logger, options?: DetectEngineOptions): Promise<{
|
|
22
|
+
engine: EngineName;
|
|
23
|
+
persist: boolean;
|
|
24
|
+
}>;
|
|
25
|
+
export {};
|
|
26
|
+
//# sourceMappingURL=detect.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"detect.d.ts","sourceRoot":"","sources":["../../src/engine/detect.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,IAAI,MAAM,MAAM,CAAC;AAG7B,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAuB7C,UAAU,eAAe;IACvB,OAAO,CAAC,EAAE;QAAE,MAAM,CAAC,EAAE;YAAE,IAAI,CAAC,EAAE,MAAM,CAAA;SAAE,CAAA;KAAE,CAAC;CAC1C;AAED;;GAEG;AACH,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,eAAe,GAAG,OAAO,CAKnE;AAID,wBAAsB,qBAAqB,CACzC,SAAS,EAAE,MAAM,EACjB,MAAM,EAAE,UAAU,GACjB,OAAO,CAAC,IAAI,CAAC,CAWf;AAID,MAAM,WAAW,mBAAmB;IAClC,uEAAuE;IACvE,iBAAiB,CAAC,EAAE,OAAO,CAAC;IAC5B,+EAA+E;IAC/E,iBAAiB,CAAC,EAAE,OAAO,CAAC;CAC7B;AAED,wBAAsB,YAAY,CAChC,SAAS,EAAE,MAAM,EACjB,MAAM,EAAE,IAAI,CAAC,MAAM,EACnB,OAAO,CAAC,EAAE,mBAAmB,GAC5B,OAAO,CAAC;IAAE,MAAM,EAAE,UAAU,CAAC;IAAC,OAAO,EAAE,OAAO,CAAA;CAAE,CAAC,CAwGnD"}
|
|
@@ -0,0 +1,129 @@
|
|
|
1
|
+
import { readFileSync, writeFileSync } from "node:fs";
|
|
2
|
+
import { join } from "node:path";
|
|
3
|
+
import open from "open";
|
|
4
|
+
import { confirm, select } from "../prompts.js";
|
|
5
|
+
import { getEngine } from "./registry.js";
|
|
6
|
+
// ─── Constants ──────────────────────────────────────────────────────────────
|
|
7
|
+
/** Detection priority order (cosmetic — no pre-selection) */
|
|
8
|
+
const DETECTION_ORDER = [
|
|
9
|
+
"opencode",
|
|
10
|
+
"claude",
|
|
11
|
+
"copilot",
|
|
12
|
+
"cursor",
|
|
13
|
+
"codex",
|
|
14
|
+
];
|
|
15
|
+
const INSTALL_URLS = {
|
|
16
|
+
opencode: "https://opencode.ai",
|
|
17
|
+
claude: "https://docs.anthropic.com/en/docs/claude-code/overview",
|
|
18
|
+
copilot: "https://docs.github.com/en/copilot/github-copilot-in-the-cli",
|
|
19
|
+
cursor: "https://docs.cursor.com/agent",
|
|
20
|
+
codex: "https://github.com/openai/codex",
|
|
21
|
+
};
|
|
22
|
+
/**
|
|
23
|
+
* Returns true if globals.engine.name is set (i.e. a global default exists).
|
|
24
|
+
*/
|
|
25
|
+
export function isEngineConfigured(config) {
|
|
26
|
+
return (typeof config.globals?.engine?.name === "string" &&
|
|
27
|
+
config.globals.engine.name.length > 0);
|
|
28
|
+
}
|
|
29
|
+
// ─── Config writer ──────────────────────────────────────────────────────────
|
|
30
|
+
export async function persistEngineToConfig(configDir, engine) {
|
|
31
|
+
const configPath = join(configDir, "hal.config.json");
|
|
32
|
+
const content = readFileSync(configPath, "utf-8");
|
|
33
|
+
const obj = JSON.parse(content);
|
|
34
|
+
if (!obj.globals) {
|
|
35
|
+
obj.globals = {};
|
|
36
|
+
}
|
|
37
|
+
obj.globals.engine = { ...obj.globals.engine, name: engine };
|
|
38
|
+
writeFileSync(configPath, `${JSON.stringify(obj, null, 2)}\n`, "utf-8");
|
|
39
|
+
}
|
|
40
|
+
export async function detectEngine(configDir, logger, options) {
|
|
41
|
+
// Step 1 — Ask user if they want auto-detection (skippable from wizard)
|
|
42
|
+
if (!options?.skipInitialPrompt) {
|
|
43
|
+
const wantDetection = await confirm({
|
|
44
|
+
message: "No engine config found, do you want me to check your system and figure this out?",
|
|
45
|
+
});
|
|
46
|
+
if (!wantDetection) {
|
|
47
|
+
console.log('Ok then, please fix your "hal.config.json" and set the "globals.engine.name" — then ping me again!');
|
|
48
|
+
process.exit(0);
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
// Step 2 — Auto-detect engines with self-replacing progress line
|
|
52
|
+
const available = [];
|
|
53
|
+
for (const name of DETECTION_ORDER) {
|
|
54
|
+
process.stdout.write(`\r\x1b[KChecking ${name}...`);
|
|
55
|
+
logger.debug({ engine: name }, "Probing engine");
|
|
56
|
+
const adapter = getEngine(name);
|
|
57
|
+
// Check if CLI binary exists
|
|
58
|
+
let hasCliPresence = false;
|
|
59
|
+
try {
|
|
60
|
+
adapter.check();
|
|
61
|
+
hasCliPresence = true;
|
|
62
|
+
logger.debug({ engine: name }, "check() passed");
|
|
63
|
+
}
|
|
64
|
+
catch {
|
|
65
|
+
logger.debug({ engine: name }, "check() failed — binary not found");
|
|
66
|
+
process.stdout.write(`\r\x1b[KChecking ${name}... \u2717 not found`);
|
|
67
|
+
await sleep(500);
|
|
68
|
+
continue;
|
|
69
|
+
}
|
|
70
|
+
// Probe with a minimal prompt
|
|
71
|
+
if (hasCliPresence) {
|
|
72
|
+
const probeOk = await adapter.probe(configDir);
|
|
73
|
+
logger.debug({ engine: name, probeOk }, "probe() result");
|
|
74
|
+
if (probeOk) {
|
|
75
|
+
available.push(name);
|
|
76
|
+
process.stdout.write(`\r\x1b[KChecking ${name}... \u2713 available`);
|
|
77
|
+
}
|
|
78
|
+
else {
|
|
79
|
+
process.stdout.write(`\r\x1b[KChecking ${name}... \u2717 check failed`);
|
|
80
|
+
}
|
|
81
|
+
await sleep(500);
|
|
82
|
+
}
|
|
83
|
+
}
|
|
84
|
+
// Clear progress line
|
|
85
|
+
process.stdout.write("\r\x1b[K");
|
|
86
|
+
let chosen;
|
|
87
|
+
if (available.length > 0) {
|
|
88
|
+
// Step 3a — Engines found: let user choose
|
|
89
|
+
chosen = await select({
|
|
90
|
+
message: "I found the following available engines, which one do you want to use?",
|
|
91
|
+
choices: available.map((name) => ({
|
|
92
|
+
name,
|
|
93
|
+
value: name,
|
|
94
|
+
})),
|
|
95
|
+
});
|
|
96
|
+
}
|
|
97
|
+
else {
|
|
98
|
+
// Step 3b — No engines found: install guidance
|
|
99
|
+
const toInstall = await select({
|
|
100
|
+
message: "Sorry, I couldn't find any working engine on your system. Pick one to install:",
|
|
101
|
+
choices: DETECTION_ORDER.map((name) => ({
|
|
102
|
+
name,
|
|
103
|
+
value: name,
|
|
104
|
+
})),
|
|
105
|
+
});
|
|
106
|
+
const url = INSTALL_URLS[toInstall];
|
|
107
|
+
if (url) {
|
|
108
|
+
await open(url);
|
|
109
|
+
}
|
|
110
|
+
console.log("Once installed, boot me again and I'll detect it!");
|
|
111
|
+
process.exit(0);
|
|
112
|
+
}
|
|
113
|
+
// Step 4 — Persist to config? (skippable from wizard)
|
|
114
|
+
if (options?.skipPersistPrompt) {
|
|
115
|
+
return { engine: chosen, persist: true };
|
|
116
|
+
}
|
|
117
|
+
const wantPersist = await confirm({
|
|
118
|
+
message: `Great, you want to use "${chosen}", do you want me to add this to your configuration file? (recommended)`,
|
|
119
|
+
});
|
|
120
|
+
if (!wantPersist) {
|
|
121
|
+
console.log("Dude, I will do what you ask. But keep in mind that you are forcing me to re-run this task again next time you boot me up! Please consider storing this in your configuration file.");
|
|
122
|
+
}
|
|
123
|
+
return { engine: chosen, persist: wantPersist };
|
|
124
|
+
}
|
|
125
|
+
// ─── Helpers ────────────────────────────────────────────────────────────────
|
|
126
|
+
function sleep(ms) {
|
|
127
|
+
return new Promise((resolve) => setTimeout(resolve, ms));
|
|
128
|
+
}
|
|
129
|
+
//# sourceMappingURL=detect.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"detect.js","sourceRoot":"","sources":["../../src/engine/detect.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import type { EngineAdapter, EngineName, ModelListResult } from "./types.js";
|
|
2
|
+
interface CacheEngineEntry {
|
|
3
|
+
models: {
|
|
4
|
+
id: string;
|
|
5
|
+
displayName: string;
|
|
6
|
+
description?: string;
|
|
7
|
+
}[];
|
|
8
|
+
lastUpdatedAt: string;
|
|
9
|
+
source: "cli" | "http" | "cache" | "embedded";
|
|
10
|
+
}
|
|
11
|
+
export interface CacheData {
|
|
12
|
+
fetchedAt: string;
|
|
13
|
+
engines: Partial<Record<EngineName, CacheEngineEntry>>;
|
|
14
|
+
}
|
|
15
|
+
export declare function readCache(configDir: string): CacheData | null;
|
|
16
|
+
export declare function writeCache(configDir: string, data: CacheData): void;
|
|
17
|
+
export declare function isCacheValid(cache: CacheData): boolean;
|
|
18
|
+
export declare function resolveModels(engine: EngineName, adapter: EngineAdapter, configDir: string): Promise<ModelListResult>;
|
|
19
|
+
export declare function fetchAllModels(engines: Map<EngineName, EngineAdapter>, configDir: string): Promise<CacheData>;
|
|
20
|
+
export declare function startModelCacheRefresh(engines: Map<EngineName, EngineAdapter>, configDir: string): {
|
|
21
|
+
stop: () => void;
|
|
22
|
+
};
|
|
23
|
+
export declare function getCachedModels(engine: EngineName): ModelListResult | null;
|
|
24
|
+
export {};
|
|
25
|
+
//# sourceMappingURL=model-cache.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"model-cache.d.ts","sourceRoot":"","sources":["../../src/engine/model-cache.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,aAAa,EAAE,UAAU,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAI7E,UAAU,gBAAgB;IACxB,MAAM,EAAE;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,WAAW,EAAE,MAAM,CAAC;QAAC,WAAW,CAAC,EAAE,MAAM,CAAA;KAAE,EAAE,CAAC;IACpE,aAAa,EAAE,MAAM,CAAC;IACtB,MAAM,EAAE,KAAK,GAAG,MAAM,GAAG,OAAO,GAAG,UAAU,CAAC;CAC/C;AAED,MAAM,WAAW,SAAS;IACxB,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,OAAO,CAAC,MAAM,CAAC,UAAU,EAAE,gBAAgB,CAAC,CAAC,CAAC;CACxD;AAiBD,wBAAgB,SAAS,CAAC,SAAS,EAAE,MAAM,GAAG,SAAS,GAAG,IAAI,CAO7D;AAED,wBAAgB,UAAU,CAAC,SAAS,EAAE,MAAM,EAAE,IAAI,EAAE,SAAS,GAAG,IAAI,CAMnE;AAED,wBAAgB,YAAY,CAAC,KAAK,EAAE,SAAS,GAAG,OAAO,CAGtD;AAID,wBAAsB,aAAa,CACjC,MAAM,EAAE,UAAU,EAClB,OAAO,EAAE,aAAa,EACtB,SAAS,EAAE,MAAM,GAChB,OAAO,CAAC,eAAe,CAAC,CA+C1B;AAqBD,wBAAsB,cAAc,CAClC,OAAO,EAAE,GAAG,CAAC,UAAU,EAAE,aAAa,CAAC,EACvC,SAAS,EAAE,MAAM,GAChB,OAAO,CAAC,SAAS,CAAC,CAoCpB;AAID,wBAAgB,sBAAsB,CACpC,OAAO,EAAE,GAAG,CAAC,UAAU,EAAE,aAAa,CAAC,EACvC,SAAS,EAAE,MAAM,GAChB;IAAE,IAAI,EAAE,MAAM,IAAI,CAAA;CAAE,CAmBtB;AAID,wBAAgB,eAAe,CAAC,MAAM,EAAE,UAAU,GAAG,eAAe,GAAG,IAAI,CAS1E"}
|