hyperclaw 5.0.5 → 5.0.6
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 +113 -5
- package/dist/chat-jnikU_sY.js +258 -0
- package/dist/daemon-CRtwyRPM.js +5 -0
- package/dist/daemon-Dhd1g5G3.js +318 -0
- package/dist/engine-DwMKOfwf.js +305 -0
- package/dist/engine-wq9XrYn_.js +7 -0
- package/dist/hyperclawbot-_lByyYQP.js +505 -0
- package/dist/mcp-loader-C7wVxPeQ.js +94 -0
- package/dist/onboard-ChdCrzG4.js +3959 -0
- package/dist/onboard-DE6HRM9h.js +11 -0
- package/dist/orchestrator-BC-7wA2Q.js +6 -0
- package/dist/orchestrator-Dr-Kx8Sj.js +189 -0
- package/dist/run-main.js +26 -26
- package/dist/server-5BJD83CF.js +4 -0
- package/dist/server-Cv6kgXvX.js +1255 -0
- package/dist/skill-runtime-BxRuz-SL.js +102 -0
- package/dist/skill-runtime-ChEoWYiG.js +5 -0
- package/dist/src-BJtvfghE.js +63 -0
- package/dist/src-CcX1rZa1.js +458 -0
- package/dist/sub-agent-tools-BN_8yWye.js +39 -0
- package/package.json +1 -1
- package/scripts/postinstall.js +1 -1
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
const require_chunk = require('./chunk-jS-bbMI5.js');
|
|
2
|
+
require('./paths-AIyBxIzm.js');
|
|
3
|
+
require('./paths-DPovhojT.js');
|
|
4
|
+
require('./env-resolve-BFJXWl94.js');
|
|
5
|
+
const require_onboard = require('./onboard-ChdCrzG4.js');
|
|
6
|
+
require('./server-Cv6kgXvX.js');
|
|
7
|
+
require('./daemon-Dhd1g5G3.js');
|
|
8
|
+
require('./providers-Dy15rDb7.js');
|
|
9
|
+
require('./theme-DajRRZbA.js');
|
|
10
|
+
|
|
11
|
+
exports.HyperClawWizard = require_onboard.HyperClawWizard;
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
const require_chunk = require('./chunk-jS-bbMI5.js');
|
|
2
|
+
const require_orchestrator = require('./orchestrator-Dr-Kx8Sj.js');
|
|
3
|
+
|
|
4
|
+
require_orchestrator.init_orchestrator();
|
|
5
|
+
exports.runMultiStep = require_orchestrator.runMultiStep;
|
|
6
|
+
exports.runMultiStepParallel = require_orchestrator.runMultiStepParallel;
|
|
@@ -0,0 +1,189 @@
|
|
|
1
|
+
const require_chunk = require('./chunk-jS-bbMI5.js');
|
|
2
|
+
|
|
3
|
+
//#region packages/core/src/agent/orchestrator.ts
|
|
4
|
+
/** Parse parallel plan into waves: [['A'], ['B','C'], ['D']] = A then B||C then D. */
|
|
5
|
+
function parseParallelWaves(text) {
|
|
6
|
+
const waves = [];
|
|
7
|
+
const lines = (text || "").trim().split(/\n/);
|
|
8
|
+
for (const line of lines) {
|
|
9
|
+
const m = line.match(/^\s*\d+\.\s*(.+)$/);
|
|
10
|
+
if (!m) continue;
|
|
11
|
+
const parts = m[1].split(/\|/).map((s) => s.trim()).filter(Boolean);
|
|
12
|
+
if (parts.length > 0) waves.push(parts);
|
|
13
|
+
}
|
|
14
|
+
return waves;
|
|
15
|
+
}
|
|
16
|
+
/** Parse "1. X\n2. Y" into step strings. */
|
|
17
|
+
function parseSteps(text) {
|
|
18
|
+
const steps = [];
|
|
19
|
+
const lines = (text || "").trim().split(/\n/);
|
|
20
|
+
for (const line of lines) {
|
|
21
|
+
const m = line.match(/^\s*\d+\.\s*(.+)$/);
|
|
22
|
+
if (m) steps.push(m[1].trim());
|
|
23
|
+
}
|
|
24
|
+
return steps.length > 0 ? steps : [];
|
|
25
|
+
}
|
|
26
|
+
/** Multi-step with retry, session context, checkpointing, error recovery. */
|
|
27
|
+
async function runMultiStep(goal, opts) {
|
|
28
|
+
const { runAgentEngine } = await Promise.resolve().then(() => require("./engine-wq9XrYn_.js"));
|
|
29
|
+
const maxRetries = opts.maxStepRetries ?? 2;
|
|
30
|
+
const checkpointable = opts.checkpointable ?? false;
|
|
31
|
+
let steps;
|
|
32
|
+
let results = [];
|
|
33
|
+
let startIndex = 0;
|
|
34
|
+
if (opts.checkpoint && opts.checkpoint.goal === goal && opts.checkpoint.steps.length > 0) {
|
|
35
|
+
steps = opts.checkpoint.steps;
|
|
36
|
+
results = [...opts.checkpoint.results ?? []];
|
|
37
|
+
startIndex = results.length;
|
|
38
|
+
} else {
|
|
39
|
+
const planOpts = opts.sessionId && opts.appendTranscript ? opts : {
|
|
40
|
+
...opts,
|
|
41
|
+
sessionId: opts.sessionId,
|
|
42
|
+
appendTranscript: opts.appendTranscript
|
|
43
|
+
};
|
|
44
|
+
const planResult = await runAgentEngine(`${PLAN_PROMPT}\n\nGoal: ${goal}`, planOpts);
|
|
45
|
+
steps = parseSteps(planResult.text);
|
|
46
|
+
if (steps.length === 0) return runAgentEngine(goal, opts);
|
|
47
|
+
}
|
|
48
|
+
let lastUsage;
|
|
49
|
+
for (let i = startIndex; i < steps.length; i++) {
|
|
50
|
+
const step = steps[i];
|
|
51
|
+
const ctx = results.length > 0 ? `Previous results:\n${results.map((r, j) => `Step ${j + 1}: ${r.slice(0, 400)}${r.length > 400 ? "..." : ""}`).join("\n")}\n\n` : "";
|
|
52
|
+
const message = `${ctx}Step ${i + 1}: ${step}`;
|
|
53
|
+
let lastErr;
|
|
54
|
+
let stepResult;
|
|
55
|
+
for (let attempt = 0; attempt <= maxRetries; attempt++) {
|
|
56
|
+
stepResult = await runAgentEngine(message, opts);
|
|
57
|
+
if (stepResult.usage) lastUsage = stepResult.usage;
|
|
58
|
+
if (!stepResult.error) {
|
|
59
|
+
results.push(stepResult.text);
|
|
60
|
+
if (checkpointable && opts.onCheckpoint) await Promise.resolve(opts.onCheckpoint({
|
|
61
|
+
goal,
|
|
62
|
+
steps,
|
|
63
|
+
completedIndices: [...Array(results.length)].map((_, k) => k),
|
|
64
|
+
results: [...results]
|
|
65
|
+
}));
|
|
66
|
+
break;
|
|
67
|
+
}
|
|
68
|
+
lastErr = stepResult.error;
|
|
69
|
+
if (attempt < maxRetries && opts.onToken) opts.onToken(`[Retry ${attempt + 1}/${maxRetries} for step ${i + 1}…]\n`);
|
|
70
|
+
}
|
|
71
|
+
if (lastErr) {
|
|
72
|
+
const summary$1 = results.length > 0 ? results.map((r, j) => `**Step ${j + 1}**\n${r}`).join("\n\n---\n\n") + `\n\n**Step ${i + 1}** (failed): ${lastErr}` : `Step ${i + 1} failed: ${lastErr}`;
|
|
73
|
+
opts.onDone?.(summary$1);
|
|
74
|
+
return {
|
|
75
|
+
text: summary$1,
|
|
76
|
+
error: lastErr,
|
|
77
|
+
usage: lastUsage
|
|
78
|
+
};
|
|
79
|
+
}
|
|
80
|
+
}
|
|
81
|
+
const summary = results.map((r, i) => `**Step ${i + 1}**\n${r}`).join("\n\n---\n\n");
|
|
82
|
+
opts.onDone?.(summary);
|
|
83
|
+
return {
|
|
84
|
+
text: summary,
|
|
85
|
+
usage: lastUsage
|
|
86
|
+
};
|
|
87
|
+
}
|
|
88
|
+
/** Parallel sub-agents: plan waves → run each wave in parallel (Promise.all) → aggregate. */
|
|
89
|
+
async function runMultiStepParallel(goal, opts) {
|
|
90
|
+
const { runAgentEngine } = await Promise.resolve().then(() => require("./engine-wq9XrYn_.js"));
|
|
91
|
+
const planOpts = {
|
|
92
|
+
...opts,
|
|
93
|
+
sessionId: void 0,
|
|
94
|
+
appendTranscript: void 0
|
|
95
|
+
};
|
|
96
|
+
const planResult = await runAgentEngine(`${PARALLEL_PLAN_PROMPT}\n\nGoal: ${goal}`, planOpts);
|
|
97
|
+
const waves = parseParallelWaves(planResult.text);
|
|
98
|
+
if (waves.length === 0) return runAgentEngine(goal, opts);
|
|
99
|
+
const allResults = [];
|
|
100
|
+
let lastUsage = planResult.usage;
|
|
101
|
+
for (let w = 0; w < waves.length; w++) {
|
|
102
|
+
const wave = waves[w];
|
|
103
|
+
const ctx = allResults.length > 0 ? `Previous results:\n${allResults.map((r, j) => `Result ${j + 1}: ${r.slice(0, 300)}${r.length > 300 ? "..." : ""}`).join("\n")}\n\n` : "";
|
|
104
|
+
const messages = wave.map((step, i) => `${ctx}Sub-task ${w + 1}.${i + 1}: ${step}`);
|
|
105
|
+
const runOpts = {
|
|
106
|
+
...opts,
|
|
107
|
+
onToken: void 0,
|
|
108
|
+
onDone: void 0
|
|
109
|
+
};
|
|
110
|
+
const results = await Promise.all(messages.map((msg) => runAgentEngine(msg, runOpts)));
|
|
111
|
+
for (const r of results) {
|
|
112
|
+
if (r.usage) lastUsage = r.usage;
|
|
113
|
+
if (r.error) {
|
|
114
|
+
const summary$1 = allResults.map((r0, j) => `**Sub-agent ${j + 1}**\n${r0}`).join("\n\n---\n\n") + `\n\n**Failed**\n${r.text}`;
|
|
115
|
+
opts.onDone?.(summary$1);
|
|
116
|
+
return {
|
|
117
|
+
text: summary$1,
|
|
118
|
+
error: r.error,
|
|
119
|
+
usage: lastUsage
|
|
120
|
+
};
|
|
121
|
+
}
|
|
122
|
+
allResults.push(r.text);
|
|
123
|
+
}
|
|
124
|
+
}
|
|
125
|
+
const summary = allResults.map((r, i) => `**Sub-agent ${i + 1}**\n${r}`).join("\n\n---\n\n");
|
|
126
|
+
opts.onDone?.(summary);
|
|
127
|
+
return {
|
|
128
|
+
text: summary,
|
|
129
|
+
usage: lastUsage
|
|
130
|
+
};
|
|
131
|
+
}
|
|
132
|
+
/** Single-run passthrough (unchanged). */
|
|
133
|
+
async function runWithPlan(message, opts) {
|
|
134
|
+
const { runAgentEngine } = await Promise.resolve().then(() => require("./engine-wq9XrYn_.js"));
|
|
135
|
+
return runAgentEngine(message, opts);
|
|
136
|
+
}
|
|
137
|
+
async function planSteps(goal) {
|
|
138
|
+
const { runAgentEngine } = await Promise.resolve().then(() => require("./engine-wq9XrYn_.js"));
|
|
139
|
+
const r = await runAgentEngine(`${PLAN_PROMPT}\n\nGoal: ${goal}`, {});
|
|
140
|
+
return parseSteps(r.text).map((g) => ({ goal: g }));
|
|
141
|
+
}
|
|
142
|
+
var PLAN_PROMPT, PARALLEL_PLAN_PROMPT;
|
|
143
|
+
var init_orchestrator = require_chunk.__esm({ "packages/core/src/agent/orchestrator.ts"() {
|
|
144
|
+
PLAN_PROMPT = `Break this goal into 1-4 concrete, executable steps. Output ONLY numbered lines.
|
|
145
|
+
Format: 1. step one
|
|
146
|
+
2. step two
|
|
147
|
+
...
|
|
148
|
+
No other text.`;
|
|
149
|
+
PARALLEL_PLAN_PROMPT = `Break this goal into 2-6 steps. Steps that can run IN PARALLEL (independent) put on the SAME line with | between them.
|
|
150
|
+
Format:
|
|
151
|
+
1. step one
|
|
152
|
+
2. step A | step B
|
|
153
|
+
3. step three
|
|
154
|
+
Example: "Compare Python vs Node for APIs" → 1. research Python for APIs | research Node for APIs
|
|
155
|
+
2. summarize comparison
|
|
156
|
+
Output ONLY numbered lines. No other text.`;
|
|
157
|
+
} });
|
|
158
|
+
|
|
159
|
+
//#endregion
|
|
160
|
+
Object.defineProperty(exports, 'init_orchestrator', {
|
|
161
|
+
enumerable: true,
|
|
162
|
+
get: function () {
|
|
163
|
+
return init_orchestrator;
|
|
164
|
+
}
|
|
165
|
+
});
|
|
166
|
+
Object.defineProperty(exports, 'planSteps', {
|
|
167
|
+
enumerable: true,
|
|
168
|
+
get: function () {
|
|
169
|
+
return planSteps;
|
|
170
|
+
}
|
|
171
|
+
});
|
|
172
|
+
Object.defineProperty(exports, 'runMultiStep', {
|
|
173
|
+
enumerable: true,
|
|
174
|
+
get: function () {
|
|
175
|
+
return runMultiStep;
|
|
176
|
+
}
|
|
177
|
+
});
|
|
178
|
+
Object.defineProperty(exports, 'runMultiStepParallel', {
|
|
179
|
+
enumerable: true,
|
|
180
|
+
get: function () {
|
|
181
|
+
return runMultiStepParallel;
|
|
182
|
+
}
|
|
183
|
+
});
|
|
184
|
+
Object.defineProperty(exports, 'runWithPlan', {
|
|
185
|
+
enumerable: true,
|
|
186
|
+
get: function () {
|
|
187
|
+
return runWithPlan;
|
|
188
|
+
}
|
|
189
|
+
});
|
package/dist/run-main.js
CHANGED
|
@@ -2,9 +2,9 @@ const require_chunk = require('./chunk-jS-bbMI5.js');
|
|
|
2
2
|
require('./paths-AIyBxIzm.js');
|
|
3
3
|
require('./paths-DPovhojT.js');
|
|
4
4
|
require('./env-resolve-BFJXWl94.js');
|
|
5
|
-
const require_onboard = require('./onboard-
|
|
6
|
-
require('./server-
|
|
7
|
-
const require_daemon = require('./daemon-
|
|
5
|
+
const require_onboard = require('./onboard-ChdCrzG4.js');
|
|
6
|
+
require('./server-Cv6kgXvX.js');
|
|
7
|
+
const require_daemon = require('./daemon-Dhd1g5G3.js');
|
|
8
8
|
require('./providers-Dy15rDb7.js');
|
|
9
9
|
require('./theme-DajRRZbA.js');
|
|
10
10
|
const require_hub = require('./hub-BO6bj8Yj.js');
|
|
@@ -65,7 +65,7 @@ var Dashboard = class {
|
|
|
65
65
|
return c(`� `) + content + " ".repeat(pad) + c(`�`);
|
|
66
66
|
};
|
|
67
67
|
console.log(c(`-${line}�`));
|
|
68
|
-
console.log(c(`�`) + chalk.default.bold.hex("#06b6d4")(`${"?? HYPERCLAW v5.0.
|
|
68
|
+
console.log(c(`�`) + chalk.default.bold.hex("#06b6d4")(`${"?? HYPERCLAW v5.0.6 � GATEWAY DASHBOARD".padStart(45).padEnd(w)}`) + c(`�`));
|
|
69
69
|
console.log(c(`�${line}�`));
|
|
70
70
|
console.log(row(`${statusDot} Gateway ${statusText} ${chalk.default.gray("�")} ws://localhost:${port} ${chalk.default.gray("�")} Agent: ${c(agent)}`));
|
|
71
71
|
console.log(row(`${c("?")} Model ${chalk.default.gray(model.slice(0, 30))} ${chalk.default.gray("�")} User: ${c(user)}`));
|
|
@@ -2427,7 +2427,7 @@ var init_queue = require_chunk.__esm({ "src/delivery/queue.ts"() {
|
|
|
2427
2427
|
//#endregion
|
|
2428
2428
|
//#region src/cli/run-main.ts
|
|
2429
2429
|
const program = new commander.Command();
|
|
2430
|
-
program.name("hyperclaw").description("⚡ HyperClaw — AI Gateway Platform. The Lobster Evolution 🦅").version("5.0.
|
|
2430
|
+
program.name("hyperclaw").description("⚡ HyperClaw — AI Gateway Platform. The Lobster Evolution 🦅").version("5.0.6").option("--profile <name>", "Use an isolated gateway profile. Auto-scopes HYPERCLAW_STATE_DIR and HYPERCLAW_CONFIG_PATH. Required for multi-gateway setups (rescue bot, staging, etc.). Example: hyperclaw --profile rescue gateway --port 19001").hook("preAction", (thisCommand) => {
|
|
2431
2431
|
const profile = thisCommand.opts().profile;
|
|
2432
2432
|
if (profile) {
|
|
2433
2433
|
const os$8 = require("os");
|
|
@@ -2570,7 +2570,7 @@ sandboxCmd.command("explain").description("Show effective sandbox mode, tool pol
|
|
|
2570
2570
|
const sandboxMode = cfg?.agents?.defaults?.sandbox?.mode ?? "non-main";
|
|
2571
2571
|
const toolsCfg = cfg?.tools ?? {};
|
|
2572
2572
|
const { describeToolPolicy, applyToolPolicy } = await Promise.resolve().then(() => require("./tool-policy-DgNqFWYn.js"));
|
|
2573
|
-
const { getBuiltinTools, getSessionsTools, getPCAccessTools, getBrowserTools, getExtractionTools, getWebsiteWatchTools, getVisionTools } = await Promise.resolve().then(() => require("./src-
|
|
2573
|
+
const { getBuiltinTools, getSessionsTools, getPCAccessTools, getBrowserTools, getExtractionTools, getWebsiteWatchTools, getVisionTools } = await Promise.resolve().then(() => require("./src-BJtvfghE.js"));
|
|
2574
2574
|
const allTools = [
|
|
2575
2575
|
...getBuiltinTools(),
|
|
2576
2576
|
...getSessionsTools(() => null),
|
|
@@ -2913,7 +2913,7 @@ cfgCmd.command("set-service-key <serviceId> [apiKey]").description("Set API key
|
|
|
2913
2913
|
cfgCmd.command("schema").description("Show configuration schema").action(() => {
|
|
2914
2914
|
console.log(chalk.default.bold.hex("#06b6d4")("\n Config schema: ~/.hyperclaw/config.json\n"));
|
|
2915
2915
|
const schema = {
|
|
2916
|
-
version: "string (e.g. \"5.0.
|
|
2916
|
+
version: "string (e.g. \"5.0.6\")",
|
|
2917
2917
|
workspaceName: "string",
|
|
2918
2918
|
provider: {
|
|
2919
2919
|
providerId: "string",
|
|
@@ -3235,7 +3235,7 @@ program.command("osint").description("OSINT / Ethical Hacking mode — configure
|
|
|
3235
3235
|
process.exit(0);
|
|
3236
3236
|
});
|
|
3237
3237
|
program.command("chat").description("Interactive terminal chat with the agent").option("--session <id>", "Resume a named session").option("--model <model>", "Override model").option("--thinking <level>", "Thinking level: high|medium|low|none", "none").option("--workspace <dir>", "Override workspace directory").action(async (opts) => {
|
|
3238
|
-
const { runChat } = await Promise.resolve().then(() => require("./chat-
|
|
3238
|
+
const { runChat } = await Promise.resolve().then(() => require("./chat-jnikU_sY.js"));
|
|
3239
3239
|
await runChat({
|
|
3240
3240
|
sessionId: opts.session,
|
|
3241
3241
|
model: opts.model,
|
|
@@ -3245,7 +3245,7 @@ program.command("chat").description("Interactive terminal chat with the agent").
|
|
|
3245
3245
|
});
|
|
3246
3246
|
const agentRunCmd = program.command("agent").description("Run agent with thinking control");
|
|
3247
3247
|
agentRunCmd.requiredOption("-m, --message <text>", "Message to send to the agent").option("--thinking <level>", "Thinking level: high|medium|low|none", "none").option("--model <model>", "Override model").option("--session <id>", "Session/thread ID").option("--multi-step", "Decompose into steps and run each (sequential)").option("--parallel", "Run sub-agents in parallel for independent subtasks").option("--verbose", "Show thinking blocks and request details").option("--workspace <dir>", "Override workspace directory").action(async (opts) => {
|
|
3248
|
-
const { runAgent } = await Promise.resolve().then(() => require("./src-
|
|
3248
|
+
const { runAgent } = await Promise.resolve().then(() => require("./src-BJtvfghE.js"));
|
|
3249
3249
|
await runAgent({
|
|
3250
3250
|
message: opts.message,
|
|
3251
3251
|
thinking: opts.thinking,
|
|
@@ -3261,7 +3261,7 @@ agentRunCmd.requiredOption("-m, --message <text>", "Message to send to the agent
|
|
|
3261
3261
|
});
|
|
3262
3262
|
const threadsCmd = program.command("threads").description("ACP thread-bound agent sessions");
|
|
3263
3263
|
threadsCmd.command("list").description("List agent threads").option("--channel <id>", "Filter by channel").option("--active", "Show only active threads").action(async (opts) => {
|
|
3264
|
-
const { ACPThreadManager } = await Promise.resolve().then(() => require("./src-
|
|
3264
|
+
const { ACPThreadManager } = await Promise.resolve().then(() => require("./src-BJtvfghE.js"));
|
|
3265
3265
|
const mgr = new ACPThreadManager();
|
|
3266
3266
|
const threads = await mgr.list({
|
|
3267
3267
|
channelId: opts.channel,
|
|
@@ -3271,7 +3271,7 @@ threadsCmd.command("list").description("List agent threads").option("--channel <
|
|
|
3271
3271
|
process.exit(0);
|
|
3272
3272
|
});
|
|
3273
3273
|
threadsCmd.command("terminate <id>").description("Terminate a thread").action(async (id) => {
|
|
3274
|
-
const { ACPThreadManager } = await Promise.resolve().then(() => require("./src-
|
|
3274
|
+
const { ACPThreadManager } = await Promise.resolve().then(() => require("./src-BJtvfghE.js"));
|
|
3275
3275
|
await new ACPThreadManager().terminate(id);
|
|
3276
3276
|
console.log(require("chalk").green(`\n ✔ Thread terminated: ${id}\n`));
|
|
3277
3277
|
process.exit(0);
|
|
@@ -3515,7 +3515,7 @@ logsCmd.action(async (opts) => {
|
|
|
3515
3515
|
}
|
|
3516
3516
|
});
|
|
3517
3517
|
program.command("gateway:serve").description("Start the gateway server in the foreground (used by daemon)").action(async () => {
|
|
3518
|
-
const { startGateway } = await Promise.resolve().then(() => require("./server-
|
|
3518
|
+
const { startGateway } = await Promise.resolve().then(() => require("./server-5BJD83CF.js"));
|
|
3519
3519
|
await startGateway();
|
|
3520
3520
|
process.on("SIGINT", () => process.exit(0));
|
|
3521
3521
|
process.on("SIGTERM", () => process.exit(0));
|
|
@@ -3763,13 +3763,13 @@ workspaceCmd.command("show [dir]").description("Show workspace files summary").a
|
|
|
3763
3763
|
});
|
|
3764
3764
|
const botCmd = program.command("bot").description("HyperClaw Bot — companion bot for remote gateway control");
|
|
3765
3765
|
botCmd.command("status").action(async () => {
|
|
3766
|
-
const { showBotStatus } = await Promise.resolve().then(() => require("./hyperclawbot-
|
|
3766
|
+
const { showBotStatus } = await Promise.resolve().then(() => require("./hyperclawbot-_lByyYQP.js"));
|
|
3767
3767
|
await showBotStatus();
|
|
3768
3768
|
process.exit(0);
|
|
3769
3769
|
});
|
|
3770
3770
|
botCmd.command("setup").description("Configure HyperClaw Bot (Telegram token, allowed users)").action(async () => {
|
|
3771
3771
|
const inquirer$2 = require("inquirer");
|
|
3772
|
-
const { saveBotConfig } = await Promise.resolve().then(() => require("./hyperclawbot-
|
|
3772
|
+
const { saveBotConfig } = await Promise.resolve().then(() => require("./hyperclawbot-_lByyYQP.js"));
|
|
3773
3773
|
const chalk$11 = require("chalk");
|
|
3774
3774
|
console.log(chalk$11.bold.hex("#06b6d4")("\n 🦅 HYPERCLAW BOT SETUP\n"));
|
|
3775
3775
|
console.log(chalk$11.gray(" Create a bot at t.me/BotFather, then paste the token below.\n"));
|
|
@@ -3831,14 +3831,14 @@ botCmd.command("start").description("Start HyperClaw Bot (foreground or backgrou
|
|
|
3831
3831
|
cwd: process.cwd()
|
|
3832
3832
|
});
|
|
3833
3833
|
child.unref();
|
|
3834
|
-
const { writeBotPid } = await Promise.resolve().then(() => require("./hyperclawbot-
|
|
3834
|
+
const { writeBotPid } = await Promise.resolve().then(() => require("./hyperclawbot-_lByyYQP.js"));
|
|
3835
3835
|
await writeBotPid(child.pid);
|
|
3836
3836
|
console.log(require("chalk").green(`\n ✔ HyperClaw Bot started in background (PID ${child.pid})`));
|
|
3837
3837
|
console.log(require("chalk").gray(" Stop with: hyperclaw bot stop\n"));
|
|
3838
3838
|
process.exit(0);
|
|
3839
3839
|
return;
|
|
3840
3840
|
}
|
|
3841
|
-
const { loadBotConfig, TelegramHyperClawBot, DiscordHyperClawBot } = await Promise.resolve().then(() => require("./hyperclawbot-
|
|
3841
|
+
const { loadBotConfig, TelegramHyperClawBot, DiscordHyperClawBot } = await Promise.resolve().then(() => require("./hyperclawbot-_lByyYQP.js"));
|
|
3842
3842
|
const cfg = await loadBotConfig();
|
|
3843
3843
|
if (!cfg) {
|
|
3844
3844
|
console.log(require("chalk").red("\n ✖ HyperClaw Bot not configured. Run: hyperclaw bot setup\n"));
|
|
@@ -3865,41 +3865,41 @@ botCmd.command("start").description("Start HyperClaw Bot (foreground or backgrou
|
|
|
3865
3865
|
});
|
|
3866
3866
|
botCmd.command("stop").description("Stop HyperClaw Bot (when running in background)").action(async () => {
|
|
3867
3867
|
const chalk$11 = require("chalk");
|
|
3868
|
-
const { stopBotProcess } = await Promise.resolve().then(() => require("./hyperclawbot-
|
|
3868
|
+
const { stopBotProcess } = await Promise.resolve().then(() => require("./hyperclawbot-_lByyYQP.js"));
|
|
3869
3869
|
const stopped = await stopBotProcess();
|
|
3870
3870
|
if (stopped) console.log(chalk$11.green("\n ✔ HyperClaw Bot stopped\n"));
|
|
3871
3871
|
else console.log(chalk$11.gray("\n Bot not running in background (no PID file). Use Ctrl+C to stop foreground bot.\n"));
|
|
3872
3872
|
process.exit(stopped ? 0 : 0);
|
|
3873
3873
|
});
|
|
3874
3874
|
memCmd.command("search <query>").description("Search MEMORY.md").action(async (query) => {
|
|
3875
|
-
const { searchMemory } = await Promise.resolve().then(() => require("./src-
|
|
3875
|
+
const { searchMemory } = await Promise.resolve().then(() => require("./src-BJtvfghE.js"));
|
|
3876
3876
|
await searchMemory(query);
|
|
3877
3877
|
process.exit(0);
|
|
3878
3878
|
});
|
|
3879
3879
|
memCmd.command("auto-show").description("Show auto-extracted memories from MEMORY.md").action(async () => {
|
|
3880
|
-
const { showMemory } = await Promise.resolve().then(() => require("./src-
|
|
3880
|
+
const { showMemory } = await Promise.resolve().then(() => require("./src-BJtvfghE.js"));
|
|
3881
3881
|
await showMemory();
|
|
3882
3882
|
process.exit(0);
|
|
3883
3883
|
});
|
|
3884
3884
|
memCmd.command("clear").description("Clear all auto-extracted memories").action(async () => {
|
|
3885
|
-
const { clearMemory } = await Promise.resolve().then(() => require("./src-
|
|
3885
|
+
const { clearMemory } = await Promise.resolve().then(() => require("./src-BJtvfghE.js"));
|
|
3886
3886
|
await clearMemory();
|
|
3887
3887
|
process.exit(0);
|
|
3888
3888
|
});
|
|
3889
3889
|
memCmd.command("save <text>").description("Manually save a fact to MEMORY.md").action(async (text) => {
|
|
3890
|
-
const { saveMemoryDirect } = await Promise.resolve().then(() => require("./src-
|
|
3890
|
+
const { saveMemoryDirect } = await Promise.resolve().then(() => require("./src-BJtvfghE.js"));
|
|
3891
3891
|
await saveMemoryDirect(text);
|
|
3892
3892
|
console.log(chalk.default.hex("#06b6d4")(` ✅ Saved: ${text}\n`));
|
|
3893
3893
|
process.exit(0);
|
|
3894
3894
|
});
|
|
3895
3895
|
const pcCmd = program.command("pc").description("PC access — give the AI access to your computer");
|
|
3896
3896
|
pcCmd.command("status").description("Show PC access status and config").action(async () => {
|
|
3897
|
-
const { showPCAccessStatus } = await Promise.resolve().then(() => require("./src-
|
|
3897
|
+
const { showPCAccessStatus } = await Promise.resolve().then(() => require("./src-BJtvfghE.js"));
|
|
3898
3898
|
await showPCAccessStatus();
|
|
3899
3899
|
process.exit(0);
|
|
3900
3900
|
});
|
|
3901
3901
|
pcCmd.command("enable").description("Enable PC access for the AI").option("--level <level>", "Access level: read-only | sandboxed | full", "full").option("--paths <paths>", "Comma-separated allowed paths (sandboxed mode)").action(async (opts) => {
|
|
3902
|
-
const { savePCAccessConfig } = await Promise.resolve().then(() => require("./src-
|
|
3902
|
+
const { savePCAccessConfig } = await Promise.resolve().then(() => require("./src-BJtvfghE.js"));
|
|
3903
3903
|
const level = opts.level;
|
|
3904
3904
|
const allowed = [
|
|
3905
3905
|
"read-only",
|
|
@@ -3926,7 +3926,7 @@ pcCmd.command("enable").description("Enable PC access for the AI").option("--lev
|
|
|
3926
3926
|
process.exit(0);
|
|
3927
3927
|
});
|
|
3928
3928
|
pcCmd.command("disable").description("Disable PC access").action(async () => {
|
|
3929
|
-
const { savePCAccessConfig } = await Promise.resolve().then(() => require("./src-
|
|
3929
|
+
const { savePCAccessConfig } = await Promise.resolve().then(() => require("./src-BJtvfghE.js"));
|
|
3930
3930
|
await savePCAccessConfig({ enabled: false });
|
|
3931
3931
|
console.log(chalk.default.hex("#06b6d4")("\n ✅ PC access disabled\n"));
|
|
3932
3932
|
process.exit(0);
|
|
@@ -3950,7 +3950,7 @@ pcCmd.command("log").description("Show PC access audit log").option("-n, --lines
|
|
|
3950
3950
|
process.exit(0);
|
|
3951
3951
|
});
|
|
3952
3952
|
pcCmd.command("run <command>").description("Run a shell command via PC access (must be enabled)").action(async (command) => {
|
|
3953
|
-
const { loadPCAccessConfig, getPCAccessTools } = await Promise.resolve().then(() => require("./src-
|
|
3953
|
+
const { loadPCAccessConfig, getPCAccessTools } = await Promise.resolve().then(() => require("./src-BJtvfghE.js"));
|
|
3954
3954
|
const cfg = await loadPCAccessConfig();
|
|
3955
3955
|
if (!cfg.enabled) {
|
|
3956
3956
|
console.log(chalk.default.red("\n ✖ PC access disabled. Run: hyperclaw pc enable\n"));
|
|
@@ -4009,7 +4009,7 @@ if (process.argv.length === 2) (async () => {
|
|
|
4009
4009
|
console.log(` ${t.c("hyperclaw --help")} — all commands\n`);
|
|
4010
4010
|
} else {
|
|
4011
4011
|
await new require_onboard.Banner().showNeonBanner(false);
|
|
4012
|
-
const { HyperClawWizard: HyperClawWizard$1 } = await Promise.resolve().then(() => require("./onboard-
|
|
4012
|
+
const { HyperClawWizard: HyperClawWizard$1 } = await Promise.resolve().then(() => require("./onboard-DE6HRM9h.js"));
|
|
4013
4013
|
await new HyperClawWizard$1().run({ wizard: true });
|
|
4014
4014
|
}
|
|
4015
4015
|
await runUpdateCheck();
|