@turmind/halo 1.3.3 → 1.3.4-c3090bf
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 +6 -3
- package/admin-out/404.html +1 -1
- package/admin-out/_next/static/chunks/989-e660d0dd799950f2.js +1 -0
- package/admin-out/_next/static/chunks/app/page-18ab83dbdcc3897c.js +1 -0
- package/admin-out/index.html +1 -1
- package/admin-out/index.txt +4 -4
- package/bundled-docs/design/agent.md +2 -0
- package/bundled-docs/design/session.md +12 -2
- package/bundled-docs/dev/add-model-provider.md +4 -3
- package/bundled-docs/dev/tools.md +10 -2
- package/dist/index.js +540 -452
- package/package.json +1 -1
- package/templates/models/aws-bedrock-claude-invoke.yaml +29 -0
- package/templates/models/aws-bedrock-mantle.yaml +90 -10
- package/templates/models/aws-bedrock-openai.yaml +313 -0
- package/templates/models/deepseek.yaml +12 -7
- package/templates/models/mimo-token-plan-china.yaml +63 -5
- package/admin-out/_next/static/chunks/989-056ee2aecccce015.js +0 -1
- package/admin-out/_next/static/chunks/app/page-5ed9b114aa1a8c10.js +0 -1
- /package/admin-out/_next/static/{zi3QS64PlTtv0VfsmIYwZ → BVMDWdlRNum62_KgIRZVc}/_buildManifest.js +0 -0
- /package/admin-out/_next/static/{zi3QS64PlTtv0VfsmIYwZ → BVMDWdlRNum62_KgIRZVc}/_ssgManifest.js +0 -0
package/dist/index.js
CHANGED
|
@@ -8,7 +8,7 @@ var __export = (target, all) => {
|
|
|
8
8
|
__defProp(target, name, { get: all[name], enumerable: true });
|
|
9
9
|
};
|
|
10
10
|
|
|
11
|
-
//
|
|
11
|
+
// src/server-supervisor.ts
|
|
12
12
|
var server_supervisor_exports = {};
|
|
13
13
|
__export(server_supervisor_exports, {
|
|
14
14
|
MAX_RESTARTS: () => MAX_RESTARTS,
|
|
@@ -114,7 +114,7 @@ async function superviseServer() {
|
|
|
114
114
|
}
|
|
115
115
|
var SUPERVISE_ENV, MAX_RESTARTS, RESTART_WINDOW_MS, RESTART_DELAY_MS, INTENTIONAL_SIGNALS;
|
|
116
116
|
var init_server_supervisor = __esm({
|
|
117
|
-
"
|
|
117
|
+
"src/server-supervisor.ts"() {
|
|
118
118
|
"use strict";
|
|
119
119
|
SUPERVISE_ENV = "HALO_SUPERVISE";
|
|
120
120
|
MAX_RESTARTS = 5;
|
|
@@ -124,7 +124,7 @@ var init_server_supervisor = __esm({
|
|
|
124
124
|
}
|
|
125
125
|
});
|
|
126
126
|
|
|
127
|
-
//
|
|
127
|
+
// ../server/dist/prompts/md-vars.js
|
|
128
128
|
var md_vars_exports = {};
|
|
129
129
|
__export(md_vars_exports, {
|
|
130
130
|
buildRenderContext: () => buildRenderContext,
|
|
@@ -294,7 +294,7 @@ async function buildRenderContext(opts) {
|
|
|
294
294
|
}
|
|
295
295
|
var PATTERN, ENV_PATTERN, ARG_PATTERN, PARAM_PATH;
|
|
296
296
|
var init_md_vars = __esm({
|
|
297
|
-
"
|
|
297
|
+
"../server/dist/prompts/md-vars.js"() {
|
|
298
298
|
"use strict";
|
|
299
299
|
PATTERN = /\{\{\s*([\w-][\w.-]*)\s*\}\}/g;
|
|
300
300
|
ENV_PATTERN = /<<([A-Z_][A-Z0-9_]*)>>/g;
|
|
@@ -303,7 +303,7 @@ var init_md_vars = __esm({
|
|
|
303
303
|
}
|
|
304
304
|
});
|
|
305
305
|
|
|
306
|
-
//
|
|
306
|
+
// ../server/dist/prompts/md-loader.js
|
|
307
307
|
import fs3 from "node:fs/promises";
|
|
308
308
|
import fsSync from "node:fs";
|
|
309
309
|
import path3 from "node:path";
|
|
@@ -448,14 +448,14 @@ function resolveMdFilePath(agentId, fileType, scope, workspaceRoot) {
|
|
|
448
448
|
}
|
|
449
449
|
var HALO_HOME;
|
|
450
450
|
var init_md_loader = __esm({
|
|
451
|
-
"
|
|
451
|
+
"../server/dist/prompts/md-loader.js"() {
|
|
452
452
|
"use strict";
|
|
453
453
|
init_md_vars();
|
|
454
454
|
HALO_HOME = path3.join(homedir3(), ".halo", "global");
|
|
455
455
|
}
|
|
456
456
|
});
|
|
457
457
|
|
|
458
|
-
//
|
|
458
|
+
// ../server/dist/settings-schema.js
|
|
459
459
|
import fs4 from "node:fs";
|
|
460
460
|
import path4 from "node:path";
|
|
461
461
|
import { homedir as homedir4 } from "node:os";
|
|
@@ -718,7 +718,7 @@ function loadSettingsSchema(workspaceRoot) {
|
|
|
718
718
|
}
|
|
719
719
|
var GLOBAL_MODELS_DIR, GLOBAL_SKILLS_DIR, GLOBAL_AGENTS_DIR, VALID_TYPES;
|
|
720
720
|
var init_settings_schema = __esm({
|
|
721
|
-
"
|
|
721
|
+
"../server/dist/settings-schema.js"() {
|
|
722
722
|
"use strict";
|
|
723
723
|
GLOBAL_MODELS_DIR = path4.join(homedir4(), ".halo", "global", "models");
|
|
724
724
|
GLOBAL_SKILLS_DIR = path4.join(homedir4(), ".halo", "global", "skills");
|
|
@@ -727,7 +727,7 @@ var init_settings_schema = __esm({
|
|
|
727
727
|
}
|
|
728
728
|
});
|
|
729
729
|
|
|
730
|
-
//
|
|
730
|
+
// ../server/dist/config.js
|
|
731
731
|
var config_exports = {};
|
|
732
732
|
__export(config_exports, {
|
|
733
733
|
HALO_GLOBAL_DIR: () => HALO_GLOBAL_DIR,
|
|
@@ -1033,7 +1033,7 @@ function getModelsRegistry() {
|
|
|
1033
1033
|
}
|
|
1034
1034
|
var HALO_HOME2, HALO_GLOBAL_DIR, HALO_SECRETS_DIR, _modelsRegistryCache, SYSTEM_CONFIG_PATH, _systemConfigCache, SETTINGS_PATH, _settingsCache, _schemaDefaultsCache, ENV_PATTERN2, _wsSettingsCache, config, HIDDEN_DIRS_DEFAULT, HIDDEN_FILES_DEFAULT;
|
|
1035
1035
|
var init_config = __esm({
|
|
1036
|
-
"
|
|
1036
|
+
"../server/dist/config.js"() {
|
|
1037
1037
|
"use strict";
|
|
1038
1038
|
init_settings_schema();
|
|
1039
1039
|
HALO_HOME2 = path5.join(homedir5(), ".halo");
|
|
@@ -1259,7 +1259,7 @@ var init_config = __esm({
|
|
|
1259
1259
|
}
|
|
1260
1260
|
});
|
|
1261
1261
|
|
|
1262
|
-
//
|
|
1262
|
+
// ../server/dist/agents/conversation-repair.js
|
|
1263
1263
|
function getToolUseId(block) {
|
|
1264
1264
|
const b = block;
|
|
1265
1265
|
if (b.type === "tool_use" && typeof b.id === "string")
|
|
@@ -1377,12 +1377,12 @@ function repairConversationMessages(raw, label = "[Repair]") {
|
|
|
1377
1377
|
return messages2;
|
|
1378
1378
|
}
|
|
1379
1379
|
var init_conversation_repair = __esm({
|
|
1380
|
-
"
|
|
1380
|
+
"../server/dist/agents/conversation-repair.js"() {
|
|
1381
1381
|
"use strict";
|
|
1382
1382
|
}
|
|
1383
1383
|
});
|
|
1384
1384
|
|
|
1385
|
-
//
|
|
1385
|
+
// ../server/dist/agents/model-error.js
|
|
1386
1386
|
function classifyModelError(err) {
|
|
1387
1387
|
const msg = err instanceof Error ? err.message : String(err);
|
|
1388
1388
|
const errName = err instanceof Error ? err.name : "";
|
|
@@ -1420,12 +1420,12 @@ function classifyKind(msg, errName, httpStatus) {
|
|
|
1420
1420
|
return "fatal";
|
|
1421
1421
|
}
|
|
1422
1422
|
var init_model_error = __esm({
|
|
1423
|
-
"
|
|
1423
|
+
"../server/dist/agents/model-error.js"() {
|
|
1424
1424
|
"use strict";
|
|
1425
1425
|
}
|
|
1426
1426
|
});
|
|
1427
1427
|
|
|
1428
|
-
//
|
|
1428
|
+
// ../server/dist/agents/compact.js
|
|
1429
1429
|
function splitForCompact(messages2) {
|
|
1430
1430
|
const keepCount = config.compact.keep_messages;
|
|
1431
1431
|
let cut = Math.max(0, messages2.length - keepCount);
|
|
@@ -1472,13 +1472,13 @@ ${summaryText}` }]
|
|
|
1472
1472
|
return { compacted: true, messages: [summaryMsg, ...recentMsgs] };
|
|
1473
1473
|
}
|
|
1474
1474
|
var init_compact = __esm({
|
|
1475
|
-
"
|
|
1475
|
+
"../server/dist/agents/compact.js"() {
|
|
1476
1476
|
"use strict";
|
|
1477
1477
|
init_config();
|
|
1478
1478
|
}
|
|
1479
1479
|
});
|
|
1480
1480
|
|
|
1481
|
-
//
|
|
1481
|
+
// ../server/dist/agents/micro-compact.js
|
|
1482
1482
|
function microCompactMessages(messages2, keepRecent = DEFAULT_KEEP_RECENT) {
|
|
1483
1483
|
if (!messages2 || messages2.length === 0) {
|
|
1484
1484
|
return { compacted: false, cleared: 0, messages: messages2 };
|
|
@@ -1526,7 +1526,7 @@ function microCompactMessages(messages2, keepRecent = DEFAULT_KEEP_RECENT) {
|
|
|
1526
1526
|
}
|
|
1527
1527
|
var MICRO_COMPACT_PLACEHOLDER, COMPACTABLE_TOOLS, DEFAULT_KEEP_RECENT;
|
|
1528
1528
|
var init_micro_compact = __esm({
|
|
1529
|
-
"
|
|
1529
|
+
"../server/dist/agents/micro-compact.js"() {
|
|
1530
1530
|
"use strict";
|
|
1531
1531
|
MICRO_COMPACT_PLACEHOLDER = "[Old tool result content cleared]";
|
|
1532
1532
|
COMPACTABLE_TOOLS = /* @__PURE__ */ new Set([
|
|
@@ -1543,10 +1543,10 @@ var init_micro_compact = __esm({
|
|
|
1543
1543
|
}
|
|
1544
1544
|
});
|
|
1545
1545
|
|
|
1546
|
-
//
|
|
1546
|
+
// ../server/dist/agents/agent-loop.js
|
|
1547
1547
|
var TOOL_ERROR_MARKER, TOOL_WARN_MARKER, MODEL_TIMEOUT_ERROR, AgentLoop;
|
|
1548
1548
|
var init_agent_loop = __esm({
|
|
1549
|
-
"
|
|
1549
|
+
"../server/dist/agents/agent-loop.js"() {
|
|
1550
1550
|
"use strict";
|
|
1551
1551
|
init_config();
|
|
1552
1552
|
TOOL_ERROR_MARKER = "__TOOL_ERROR__";
|
|
@@ -1627,83 +1627,90 @@ var init_agent_loop = __esm({
|
|
|
1627
1627
|
return;
|
|
1628
1628
|
const toolResults = [];
|
|
1629
1629
|
let shouldEndTurn = false;
|
|
1630
|
-
|
|
1631
|
-
|
|
1632
|
-
|
|
1633
|
-
|
|
1634
|
-
|
|
1635
|
-
|
|
1636
|
-
|
|
1637
|
-
|
|
1638
|
-
|
|
1639
|
-
|
|
1640
|
-
|
|
1641
|
-
|
|
1642
|
-
Error: unknown tool "${tu.name}"`;
|
|
1643
|
-
resultText = resultContent;
|
|
1644
|
-
isError = true;
|
|
1645
|
-
} else {
|
|
1646
|
-
try {
|
|
1647
|
-
const raw = await toolDef.callback(tu.input, options?.cancelSignal);
|
|
1648
|
-
if (typeof raw === "string") {
|
|
1649
|
-
resultContent = raw;
|
|
1650
|
-
resultText = raw;
|
|
1651
|
-
} else {
|
|
1652
|
-
resultContent = raw;
|
|
1653
|
-
resultText = raw.map((b) => b.type === "text" ? b.text : `[image ${b.source.media_type}]`).join("\n");
|
|
1654
|
-
}
|
|
1655
|
-
} catch (err) {
|
|
1630
|
+
try {
|
|
1631
|
+
for (const tu of toolUseBlocks) {
|
|
1632
|
+
if (options?.cancelSignal?.aborted)
|
|
1633
|
+
return;
|
|
1634
|
+
const toolDef = this.toolMap.get(tu.name);
|
|
1635
|
+
if (toolDef?.forceEndTurn)
|
|
1636
|
+
shouldEndTurn = true;
|
|
1637
|
+
const startTime = Date.now();
|
|
1638
|
+
let resultContent;
|
|
1639
|
+
let resultText;
|
|
1640
|
+
let isError = false;
|
|
1641
|
+
if (!toolDef) {
|
|
1656
1642
|
resultContent = `${TOOL_ERROR_MARKER}
|
|
1657
|
-
Error: ${
|
|
1643
|
+
Error: unknown tool "${tu.name}"`;
|
|
1658
1644
|
resultText = resultContent;
|
|
1659
1645
|
isError = true;
|
|
1646
|
+
} else {
|
|
1647
|
+
try {
|
|
1648
|
+
const raw = await toolDef.callback(tu.input, options?.cancelSignal);
|
|
1649
|
+
if (typeof raw === "string") {
|
|
1650
|
+
resultContent = raw;
|
|
1651
|
+
resultText = raw;
|
|
1652
|
+
} else {
|
|
1653
|
+
resultContent = raw;
|
|
1654
|
+
resultText = raw.map((b) => b.type === "text" ? b.text : `[image ${b.source.media_type}]`).join("\n");
|
|
1655
|
+
}
|
|
1656
|
+
} catch (err) {
|
|
1657
|
+
resultContent = `${TOOL_ERROR_MARKER}
|
|
1658
|
+
Error: ${err instanceof Error ? err.message : String(err)}`;
|
|
1659
|
+
resultText = resultContent;
|
|
1660
|
+
isError = true;
|
|
1661
|
+
}
|
|
1660
1662
|
}
|
|
1661
|
-
|
|
1662
|
-
|
|
1663
|
-
|
|
1663
|
+
if (options?.cancelSignal?.aborted)
|
|
1664
|
+
return;
|
|
1665
|
+
const uiCap = config.limits.toolResultUiMax;
|
|
1666
|
+
const resultTextFull = resultText.length > uiCap ? resultText.slice(0, uiCap) + `
|
|
1664
1667
|
|
|
1665
1668
|
[Content truncated: ${resultText.length} chars total, showing first ${uiCap}. Use file_read for the complete content.]` : resultText;
|
|
1666
|
-
|
|
1667
|
-
|
|
1669
|
+
const cap2 = tu.name === "activate_skill" ? Infinity : config.limits.toolResultMax;
|
|
1670
|
+
const truncationNote = (origLen) => `
|
|
1668
1671
|
|
|
1669
1672
|
[Content truncated: ${origLen} chars total, showing first ${cap2}. Re-run with narrower scope (e.g. grep / file_read with offset+limit) to see specific sections.]`;
|
|
1670
|
-
|
|
1671
|
-
|
|
1672
|
-
|
|
1673
|
-
|
|
1674
|
-
|
|
1675
|
-
|
|
1676
|
-
|
|
1677
|
-
|
|
1678
|
-
|
|
1679
|
-
|
|
1673
|
+
if (typeof resultContent === "string" && resultContent.length > cap2) {
|
|
1674
|
+
const orig = resultContent.length;
|
|
1675
|
+
resultContent = resultContent.slice(0, cap2) + truncationNote(orig);
|
|
1676
|
+
resultText = resultContent;
|
|
1677
|
+
} else if (Array.isArray(resultContent)) {
|
|
1678
|
+
let mutated = false;
|
|
1679
|
+
resultContent = resultContent.map((b) => {
|
|
1680
|
+
if (b.type === "text" && b.text.length > cap2) {
|
|
1681
|
+
mutated = true;
|
|
1682
|
+
return { type: "text", text: b.text.slice(0, cap2) + truncationNote(b.text.length) };
|
|
1683
|
+
}
|
|
1684
|
+
return b;
|
|
1685
|
+
});
|
|
1686
|
+
if (mutated) {
|
|
1687
|
+
resultText = resultContent.map((b) => b.type === "text" ? b.text : `[image ${b.source.media_type}]`).join("\n");
|
|
1680
1688
|
}
|
|
1681
|
-
return b;
|
|
1682
|
-
});
|
|
1683
|
-
if (mutated) {
|
|
1684
|
-
resultText = resultContent.map((b) => b.type === "text" ? b.text : `[image ${b.source.media_type}]`).join("\n");
|
|
1685
1689
|
}
|
|
1690
|
+
const durationMs = Date.now() - startTime;
|
|
1691
|
+
toolResults.push({
|
|
1692
|
+
type: "tool_result",
|
|
1693
|
+
tool_use_id: tu.id,
|
|
1694
|
+
content: resultContent,
|
|
1695
|
+
// truncated — LLM-facing only
|
|
1696
|
+
...isError ? { is_error: true } : {}
|
|
1697
|
+
});
|
|
1698
|
+
yield {
|
|
1699
|
+
type: "tool_result",
|
|
1700
|
+
toolName: tu.name,
|
|
1701
|
+
toolUseId: tu.id,
|
|
1702
|
+
toolResult: resultText,
|
|
1703
|
+
// truncated (LLM cap applied)
|
|
1704
|
+
toolResultFull: resultTextFull,
|
|
1705
|
+
// full — for UI display
|
|
1706
|
+
durationMs
|
|
1707
|
+
};
|
|
1708
|
+
}
|
|
1709
|
+
} finally {
|
|
1710
|
+
if (toolResults.length > 0) {
|
|
1711
|
+
this.messages.push({ role: "user", content: toolResults });
|
|
1686
1712
|
}
|
|
1687
|
-
const durationMs = Date.now() - startTime;
|
|
1688
|
-
toolResults.push({
|
|
1689
|
-
type: "tool_result",
|
|
1690
|
-
tool_use_id: tu.id,
|
|
1691
|
-
content: resultContent,
|
|
1692
|
-
// truncated — LLM-facing only
|
|
1693
|
-
...isError ? { is_error: true } : {}
|
|
1694
|
-
});
|
|
1695
|
-
yield {
|
|
1696
|
-
type: "tool_result",
|
|
1697
|
-
toolName: tu.name,
|
|
1698
|
-
toolUseId: tu.id,
|
|
1699
|
-
toolResult: resultText,
|
|
1700
|
-
// truncated (LLM cap applied)
|
|
1701
|
-
toolResultFull: resultTextFull,
|
|
1702
|
-
// full — for UI display
|
|
1703
|
-
durationMs
|
|
1704
|
-
};
|
|
1705
1713
|
}
|
|
1706
|
-
this.messages.push({ role: "user", content: toolResults });
|
|
1707
1714
|
if (shouldEndTurn) {
|
|
1708
1715
|
yield { type: "stop", stopReason: "end_turn" };
|
|
1709
1716
|
return;
|
|
@@ -1714,7 +1721,7 @@ Error: ${err instanceof Error ? err.message : String(err)}`;
|
|
|
1714
1721
|
}
|
|
1715
1722
|
});
|
|
1716
1723
|
|
|
1717
|
-
//
|
|
1724
|
+
// ../server/dist/agents/agent-loader.js
|
|
1718
1725
|
import fs6 from "node:fs/promises";
|
|
1719
1726
|
import fsSync2 from "node:fs";
|
|
1720
1727
|
import path6 from "node:path";
|
|
@@ -1997,7 +2004,7 @@ function isTeamMember(team, targetId) {
|
|
|
1997
2004
|
}
|
|
1998
2005
|
var GLOBAL_AGENTS_DIR2, GLOBAL_SKILLS_DIR2, SKILL_ID_RE, ACCESS_RANK;
|
|
1999
2006
|
var init_agent_loader = __esm({
|
|
2000
|
-
"
|
|
2007
|
+
"../server/dist/agents/agent-loader.js"() {
|
|
2001
2008
|
"use strict";
|
|
2002
2009
|
init_agent_loop();
|
|
2003
2010
|
GLOBAL_AGENTS_DIR2 = path6.join(homedir6(), ".halo", "global", "agents");
|
|
@@ -2012,7 +2019,7 @@ var init_agent_loader = __esm({
|
|
|
2012
2019
|
}
|
|
2013
2020
|
});
|
|
2014
2021
|
|
|
2015
|
-
//
|
|
2022
|
+
// ../server/dist/ws/broadcast.js
|
|
2016
2023
|
import path7 from "node:path";
|
|
2017
2024
|
function setBroadcastWss(wss2) {
|
|
2018
2025
|
_wss = wss2;
|
|
@@ -2058,14 +2065,14 @@ function broadcastToWorkspace(workspacePath, event) {
|
|
|
2058
2065
|
}
|
|
2059
2066
|
var _wss, _workspaceOfClient;
|
|
2060
2067
|
var init_broadcast = __esm({
|
|
2061
|
-
"
|
|
2068
|
+
"../server/dist/ws/broadcast.js"() {
|
|
2062
2069
|
"use strict";
|
|
2063
2070
|
_wss = null;
|
|
2064
2071
|
_workspaceOfClient = null;
|
|
2065
2072
|
}
|
|
2066
2073
|
});
|
|
2067
2074
|
|
|
2068
|
-
//
|
|
2075
|
+
// ../server/dist/db/schema.js
|
|
2069
2076
|
var schema_exports = {};
|
|
2070
2077
|
__export(schema_exports, {
|
|
2071
2078
|
agentSessions: () => agentSessions,
|
|
@@ -2074,7 +2081,7 @@ __export(schema_exports, {
|
|
|
2074
2081
|
import { sqliteTable, text, integer } from "drizzle-orm/sqlite-core";
|
|
2075
2082
|
var agentSessions, disabledItems;
|
|
2076
2083
|
var init_schema = __esm({
|
|
2077
|
-
"
|
|
2084
|
+
"../server/dist/db/schema.js"() {
|
|
2078
2085
|
"use strict";
|
|
2079
2086
|
agentSessions = sqliteTable("agent_sessions", {
|
|
2080
2087
|
id: text("id").primaryKey(),
|
|
@@ -2115,7 +2122,7 @@ var init_schema = __esm({
|
|
|
2115
2122
|
}
|
|
2116
2123
|
});
|
|
2117
2124
|
|
|
2118
|
-
//
|
|
2125
|
+
// ../server/dist/init.js
|
|
2119
2126
|
var init_exports = {};
|
|
2120
2127
|
__export(init_exports, {
|
|
2121
2128
|
TEMPLATES_DIR: () => TEMPLATES_DIR,
|
|
@@ -2482,7 +2489,7 @@ function ensureWorkspaceHalo(workspaceRoot) {
|
|
|
2482
2489
|
}
|
|
2483
2490
|
var __dirname, TEMPLATES_DIR, DOCS_SRC_CANDIDATES, TEMPLATE_VERSION, VERSION_FILE, SKIP_NAMES, BUILTIN_AGENT_IDS, BUILTIN_SKILL_IDS, BUNDLED_DOCS, INSTALLED_OPTIONAL_SKILLS_FILE;
|
|
2484
2491
|
var init_init = __esm({
|
|
2485
|
-
"
|
|
2492
|
+
"../server/dist/init.js"() {
|
|
2486
2493
|
"use strict";
|
|
2487
2494
|
__dirname = path8.dirname(fileURLToPath(import.meta.url));
|
|
2488
2495
|
TEMPLATES_DIR = path8.resolve(__dirname, "..", "templates");
|
|
@@ -2490,7 +2497,7 @@ var init_init = __esm({
|
|
|
2490
2497
|
path8.resolve(__dirname, "..", "bundled-docs"),
|
|
2491
2498
|
path8.resolve(__dirname, "..", "..", "..", ".halo", "docs")
|
|
2492
2499
|
];
|
|
2493
|
-
TEMPLATE_VERSION =
|
|
2500
|
+
TEMPLATE_VERSION = 60;
|
|
2494
2501
|
VERSION_FILE = ".template-version";
|
|
2495
2502
|
SKIP_NAMES = /* @__PURE__ */ new Set([".DS_Store", "schema.sql", "__pycache__", ".pytest_cache"]);
|
|
2496
2503
|
BUILTIN_AGENT_IDS = /* @__PURE__ */ new Set([
|
|
@@ -2555,7 +2562,7 @@ var init_init = __esm({
|
|
|
2555
2562
|
}
|
|
2556
2563
|
});
|
|
2557
2564
|
|
|
2558
|
-
//
|
|
2565
|
+
// ../server/dist/db/migrate.js
|
|
2559
2566
|
function runMigrations(sqlite, migrations) {
|
|
2560
2567
|
const current = sqlite.pragma("user_version", { simple: true });
|
|
2561
2568
|
if (current > migrations.length) {
|
|
@@ -2576,12 +2583,12 @@ function addColumnIfMissing(sqlite, table, column, decl) {
|
|
|
2576
2583
|
sqlite.exec(`ALTER TABLE ${table} ADD COLUMN ${column} ${decl}`);
|
|
2577
2584
|
}
|
|
2578
2585
|
var init_migrate = __esm({
|
|
2579
|
-
"
|
|
2586
|
+
"../server/dist/db/migrate.js"() {
|
|
2580
2587
|
"use strict";
|
|
2581
2588
|
}
|
|
2582
2589
|
});
|
|
2583
2590
|
|
|
2584
|
-
//
|
|
2591
|
+
// ../server/dist/db/index.js
|
|
2585
2592
|
import Database from "better-sqlite3";
|
|
2586
2593
|
import { drizzle } from "drizzle-orm/better-sqlite3";
|
|
2587
2594
|
import { eq, and } from "drizzle-orm";
|
|
@@ -2644,7 +2651,7 @@ function toggleDisabled(db, itemType, itemId, scope) {
|
|
|
2644
2651
|
}
|
|
2645
2652
|
var SCHEMA_SQL_PATH, HALO_MIGRATIONS, dbCache;
|
|
2646
2653
|
var init_db = __esm({
|
|
2647
|
-
"
|
|
2654
|
+
"../server/dist/db/index.js"() {
|
|
2648
2655
|
"use strict";
|
|
2649
2656
|
init_schema();
|
|
2650
2657
|
init_init();
|
|
@@ -2670,7 +2677,7 @@ var init_db = __esm({
|
|
|
2670
2677
|
}
|
|
2671
2678
|
});
|
|
2672
2679
|
|
|
2673
|
-
//
|
|
2680
|
+
// ../server/dist/agents/session-tools.js
|
|
2674
2681
|
async function callerTeamFor(sm, sessionId) {
|
|
2675
2682
|
const callerId = sm.sessions.get(sessionId)?.agentId;
|
|
2676
2683
|
if (!callerId)
|
|
@@ -2932,8 +2939,25 @@ ${skillInfo}` : ""
|
|
|
2932
2939
|
queryAgentTool
|
|
2933
2940
|
];
|
|
2934
2941
|
}
|
|
2942
|
+
function buildContinueTaskTool(sm, sessionId) {
|
|
2943
|
+
return {
|
|
2944
|
+
name: "continue_task",
|
|
2945
|
+
description: "Call this when your turn was started by an interruption (a user or parent message arrived while you were working) and the task you were doing is NOT finished yet. After your current reply ends, the session automatically resumes the interrupted task. Do NOT call it if the task is done, if the user told you to stop, or in a normal (uninterrupted) turn \u2014 it does nothing there. The flag lasts one turn: if you get interrupted again before resuming, call it again.",
|
|
2946
|
+
inputSchema: { type: "object", properties: {} },
|
|
2947
|
+
callback: async () => {
|
|
2948
|
+
switch (sm.requestSelfKick(sessionId)) {
|
|
2949
|
+
case "set":
|
|
2950
|
+
return JSON.stringify({ code: 0, message: "Continue flag set. Finish your current reply \u2014 the interrupted task resumes automatically right after." });
|
|
2951
|
+
case "not_interrupted":
|
|
2952
|
+
return JSON.stringify({ code: 0, message: "This turn was not started by an interruption \u2014 nothing to resume. Just keep working normally; do not call this again this turn." });
|
|
2953
|
+
case "no_turn":
|
|
2954
|
+
return JSON.stringify({ code: 1, error: "Turn already ended (stopped) \u2014 flag not set." });
|
|
2955
|
+
}
|
|
2956
|
+
}
|
|
2957
|
+
};
|
|
2958
|
+
}
|
|
2935
2959
|
var init_session_tools = __esm({
|
|
2936
|
-
"
|
|
2960
|
+
"../server/dist/agents/session-tools.js"() {
|
|
2937
2961
|
"use strict";
|
|
2938
2962
|
init_config();
|
|
2939
2963
|
init_agent_loader();
|
|
@@ -2941,7 +2965,7 @@ var init_session_tools = __esm({
|
|
|
2941
2965
|
}
|
|
2942
2966
|
});
|
|
2943
2967
|
|
|
2944
|
-
//
|
|
2968
|
+
// ../server/dist/sessions/session-archive.js
|
|
2945
2969
|
import fsSync3 from "node:fs";
|
|
2946
2970
|
import fs9 from "node:fs/promises";
|
|
2947
2971
|
import path10 from "node:path";
|
|
@@ -3004,13 +3028,13 @@ async function deleteArchiveSegments(dir, seg) {
|
|
|
3004
3028
|
}
|
|
3005
3029
|
var ARCHIVE_SIZE_THRESHOLD;
|
|
3006
3030
|
var init_session_archive = __esm({
|
|
3007
|
-
"
|
|
3031
|
+
"../server/dist/sessions/session-archive.js"() {
|
|
3008
3032
|
"use strict";
|
|
3009
3033
|
ARCHIVE_SIZE_THRESHOLD = 3 * 1024 * 1024;
|
|
3010
3034
|
}
|
|
3011
3035
|
});
|
|
3012
3036
|
|
|
3013
|
-
//
|
|
3037
|
+
// ../server/dist/sessions/session-store.js
|
|
3014
3038
|
import fsSync4 from "node:fs";
|
|
3015
3039
|
import fs10 from "node:fs/promises";
|
|
3016
3040
|
import path11 from "node:path";
|
|
@@ -3254,13 +3278,13 @@ function findAndUpdateSessionTitle(sessionId, title, projectPath) {
|
|
|
3254
3278
|
return false;
|
|
3255
3279
|
}
|
|
3256
3280
|
var init_session_store = __esm({
|
|
3257
|
-
"
|
|
3281
|
+
"../server/dist/sessions/session-store.js"() {
|
|
3258
3282
|
"use strict";
|
|
3259
3283
|
init_session_archive();
|
|
3260
3284
|
}
|
|
3261
3285
|
});
|
|
3262
3286
|
|
|
3263
|
-
//
|
|
3287
|
+
// ../server/dist/agents/goal-mode.js
|
|
3264
3288
|
import fs11 from "node:fs";
|
|
3265
3289
|
import path12 from "node:path";
|
|
3266
3290
|
import { createHash } from "node:crypto";
|
|
@@ -3732,7 +3756,7 @@ function sweepActiveGoals(host) {
|
|
|
3732
3756
|
}
|
|
3733
3757
|
var GOAL_AGENT_ID, DEFAULT_GOAL_CAPS, NO_PROGRESS_LIMIT, DELEGATED_DECISION_CAP, WORKER_RECENT_MAX_MESSAGES, WORKER_RECENT_MSG_CHARS, WORKER_RECENT_TOTAL_CHARS, NEED_INPUT_MARKER;
|
|
3734
3758
|
var init_goal_mode = __esm({
|
|
3735
|
-
"
|
|
3759
|
+
"../server/dist/agents/goal-mode.js"() {
|
|
3736
3760
|
"use strict";
|
|
3737
3761
|
init_schema();
|
|
3738
3762
|
init_session_store();
|
|
@@ -3753,7 +3777,7 @@ var init_goal_mode = __esm({
|
|
|
3753
3777
|
}
|
|
3754
3778
|
});
|
|
3755
3779
|
|
|
3756
|
-
//
|
|
3780
|
+
// ../server/dist/channels/shared/i18n.js
|
|
3757
3781
|
function getLang(account) {
|
|
3758
3782
|
const v = account.language;
|
|
3759
3783
|
return v === "en" || v === "zh" ? v : "en";
|
|
@@ -3772,7 +3796,7 @@ function t(key, lang, params) {
|
|
|
3772
3796
|
}
|
|
3773
3797
|
var messages;
|
|
3774
3798
|
var init_i18n = __esm({
|
|
3775
|
-
"
|
|
3799
|
+
"../server/dist/channels/shared/i18n.js"() {
|
|
3776
3800
|
"use strict";
|
|
3777
3801
|
messages = {
|
|
3778
3802
|
// ── /help ──
|
|
@@ -3941,10 +3965,10 @@ var init_i18n = __esm({
|
|
|
3941
3965
|
}
|
|
3942
3966
|
});
|
|
3943
3967
|
|
|
3944
|
-
//
|
|
3968
|
+
// ../server/dist/commands/registry.js
|
|
3945
3969
|
var CommandRegistry;
|
|
3946
3970
|
var init_registry = __esm({
|
|
3947
|
-
"
|
|
3971
|
+
"../server/dist/commands/registry.js"() {
|
|
3948
3972
|
"use strict";
|
|
3949
3973
|
CommandRegistry = class {
|
|
3950
3974
|
descriptors = /* @__PURE__ */ new Map();
|
|
@@ -3958,13 +3982,13 @@ var init_registry = __esm({
|
|
|
3958
3982
|
}
|
|
3959
3983
|
});
|
|
3960
3984
|
|
|
3961
|
-
//
|
|
3985
|
+
// ../server/dist/commands/index.js
|
|
3962
3986
|
function builtinCommandNames() {
|
|
3963
3987
|
return commandRegistry.listDescriptors().filter((d) => d.source === "builtin").map((d) => d.name);
|
|
3964
3988
|
}
|
|
3965
3989
|
var commandRegistry;
|
|
3966
3990
|
var init_commands = __esm({
|
|
3967
|
-
"
|
|
3991
|
+
"../server/dist/commands/index.js"() {
|
|
3968
3992
|
"use strict";
|
|
3969
3993
|
init_registry();
|
|
3970
3994
|
commandRegistry = new CommandRegistry();
|
|
@@ -4014,7 +4038,7 @@ var init_commands = __esm({
|
|
|
4014
4038
|
}
|
|
4015
4039
|
});
|
|
4016
4040
|
|
|
4017
|
-
//
|
|
4041
|
+
// ../server/dist/commands/skill-command.js
|
|
4018
4042
|
import fs12 from "node:fs/promises";
|
|
4019
4043
|
import path13 from "node:path";
|
|
4020
4044
|
async function scanDir(dir) {
|
|
@@ -4157,7 +4181,7 @@ ${body}`;
|
|
|
4157
4181
|
return "ok";
|
|
4158
4182
|
}
|
|
4159
4183
|
var init_skill_command = __esm({
|
|
4160
|
-
"
|
|
4184
|
+
"../server/dist/commands/skill-command.js"() {
|
|
4161
4185
|
"use strict";
|
|
4162
4186
|
init_commands();
|
|
4163
4187
|
init_agent_loader();
|
|
@@ -4167,7 +4191,7 @@ var init_skill_command = __esm({
|
|
|
4167
4191
|
}
|
|
4168
4192
|
});
|
|
4169
4193
|
|
|
4170
|
-
//
|
|
4194
|
+
// ../server/dist/db/evo-db.js
|
|
4171
4195
|
import Database2 from "better-sqlite3";
|
|
4172
4196
|
import { drizzle as drizzle2 } from "drizzle-orm/better-sqlite3";
|
|
4173
4197
|
import { sqliteTable as sqliteTable2, text as text2, integer as integer2 } from "drizzle-orm/sqlite-core";
|
|
@@ -4192,7 +4216,7 @@ function getEvoDb() {
|
|
|
4192
4216
|
}
|
|
4193
4217
|
var evolutionRuns, evolutionApplies, CREATE_SQL, _evoDb;
|
|
4194
4218
|
var init_evo_db = __esm({
|
|
4195
|
-
"
|
|
4219
|
+
"../server/dist/db/evo-db.js"() {
|
|
4196
4220
|
"use strict";
|
|
4197
4221
|
init_migrate();
|
|
4198
4222
|
evolutionRuns = sqliteTable2("evolution_runs", {
|
|
@@ -4275,7 +4299,7 @@ CREATE INDEX IF NOT EXISTS idx_evo_applies_archived ON evolution_applies(archive
|
|
|
4275
4299
|
}
|
|
4276
4300
|
});
|
|
4277
4301
|
|
|
4278
|
-
//
|
|
4302
|
+
// ../server/dist/paths.js
|
|
4279
4303
|
import path15 from "node:path";
|
|
4280
4304
|
import { homedir as homedir8 } from "node:os";
|
|
4281
4305
|
function haloHome() {
|
|
@@ -4321,12 +4345,12 @@ function evoApplyLogFile(applyId) {
|
|
|
4321
4345
|
return path15.join(evoLogsDir(), `apply-${applyId}.log`);
|
|
4322
4346
|
}
|
|
4323
4347
|
var init_paths = __esm({
|
|
4324
|
-
"
|
|
4348
|
+
"../server/dist/paths.js"() {
|
|
4325
4349
|
"use strict";
|
|
4326
4350
|
}
|
|
4327
4351
|
});
|
|
4328
4352
|
|
|
4329
|
-
//
|
|
4353
|
+
// ../server/dist/evolution/enqueue.js
|
|
4330
4354
|
import fs14 from "node:fs";
|
|
4331
4355
|
import path16 from "node:path";
|
|
4332
4356
|
import { homedir as homedir9 } from "node:os";
|
|
@@ -4611,14 +4635,14 @@ function enqueueEvoRun(input) {
|
|
|
4611
4635
|
return { ok: true, runId, runDir };
|
|
4612
4636
|
}
|
|
4613
4637
|
var init_enqueue = __esm({
|
|
4614
|
-
"
|
|
4638
|
+
"../server/dist/evolution/enqueue.js"() {
|
|
4615
4639
|
"use strict";
|
|
4616
4640
|
init_evo_db();
|
|
4617
4641
|
init_paths();
|
|
4618
4642
|
}
|
|
4619
4643
|
});
|
|
4620
4644
|
|
|
4621
|
-
//
|
|
4645
|
+
// ../server/dist/channels/shared/commands.js
|
|
4622
4646
|
import fs15 from "node:fs";
|
|
4623
4647
|
import path17 from "node:path";
|
|
4624
4648
|
import os from "node:os";
|
|
@@ -5344,7 +5368,7 @@ function execWsSwitch(ctx, arg) {
|
|
|
5344
5368
|
}
|
|
5345
5369
|
var ALIASES_FILE, aliasCache, CHANNEL_LIST_LIMIT, DISPATCH_COMMANDS, NOT_ROUTED, SUBCOMMAND_ROUTES;
|
|
5346
5370
|
var init_commands2 = __esm({
|
|
5347
|
-
"
|
|
5371
|
+
"../server/dist/channels/shared/commands.js"() {
|
|
5348
5372
|
"use strict";
|
|
5349
5373
|
init_agent_loader();
|
|
5350
5374
|
init_init();
|
|
@@ -5419,7 +5443,7 @@ var init_commands2 = __esm({
|
|
|
5419
5443
|
}
|
|
5420
5444
|
});
|
|
5421
5445
|
|
|
5422
|
-
//
|
|
5446
|
+
// ../server/dist/agents/relay.js
|
|
5423
5447
|
import fs16 from "node:fs";
|
|
5424
5448
|
import path18 from "node:path";
|
|
5425
5449
|
import { and as and3, eq as eq3, isNull as isNull2 } from "drizzle-orm";
|
|
@@ -5656,7 +5680,7 @@ ${params.message}`;
|
|
|
5656
5680
|
}
|
|
5657
5681
|
var _registry, WORKSPACE_SESSION_PROPS;
|
|
5658
5682
|
var init_relay = __esm({
|
|
5659
|
-
"
|
|
5683
|
+
"../server/dist/agents/relay.js"() {
|
|
5660
5684
|
"use strict";
|
|
5661
5685
|
init_schema();
|
|
5662
5686
|
init_config();
|
|
@@ -5669,7 +5693,7 @@ var init_relay = __esm({
|
|
|
5669
5693
|
}
|
|
5670
5694
|
});
|
|
5671
5695
|
|
|
5672
|
-
//
|
|
5696
|
+
// ../server/dist/db/runs-db.js
|
|
5673
5697
|
import Database3 from "better-sqlite3";
|
|
5674
5698
|
import { drizzle as drizzle3 } from "drizzle-orm/better-sqlite3";
|
|
5675
5699
|
import { sqliteTable as sqliteTable3, text as text3, integer as integer3, primaryKey } from "drizzle-orm/sqlite-core";
|
|
@@ -5711,7 +5735,7 @@ function listRunningWorkspaces() {
|
|
|
5711
5735
|
}
|
|
5712
5736
|
var runningSessions, CREATE_SQL2, _runsDb;
|
|
5713
5737
|
var init_runs_db = __esm({
|
|
5714
|
-
"
|
|
5738
|
+
"../server/dist/db/runs-db.js"() {
|
|
5715
5739
|
"use strict";
|
|
5716
5740
|
init_migrate();
|
|
5717
5741
|
runningSessions = sqliteTable3("running_sessions", {
|
|
@@ -5733,7 +5757,7 @@ CREATE TABLE IF NOT EXISTS running_sessions (
|
|
|
5733
5757
|
}
|
|
5734
5758
|
});
|
|
5735
5759
|
|
|
5736
|
-
//
|
|
5760
|
+
// ../server/dist/agents/run-ledger.js
|
|
5737
5761
|
import fs18 from "node:fs";
|
|
5738
5762
|
import path20 from "node:path";
|
|
5739
5763
|
import YAML7 from "yaml";
|
|
@@ -5774,7 +5798,7 @@ function sweepInterruptedRuns(host) {
|
|
|
5774
5798
|
console.log(`[RunLedger] Boot sweep (${host.workspaceRoot}): nudged ${nudged} interrupted root(s)`);
|
|
5775
5799
|
}
|
|
5776
5800
|
var init_run_ledger = __esm({
|
|
5777
|
-
"
|
|
5801
|
+
"../server/dist/agents/run-ledger.js"() {
|
|
5778
5802
|
"use strict";
|
|
5779
5803
|
init_schema();
|
|
5780
5804
|
init_runs_db();
|
|
@@ -5783,7 +5807,7 @@ var init_run_ledger = __esm({
|
|
|
5783
5807
|
}
|
|
5784
5808
|
});
|
|
5785
5809
|
|
|
5786
|
-
//
|
|
5810
|
+
// ../server/dist/agents/workspace-runtime-lock.js
|
|
5787
5811
|
import fs19 from "node:fs";
|
|
5788
5812
|
import path21 from "node:path";
|
|
5789
5813
|
function isPidAlive(pid) {
|
|
@@ -5831,19 +5855,19 @@ function claimWorkspaceRuntime(workspaceRoot) {
|
|
|
5831
5855
|
}
|
|
5832
5856
|
var RUNTIME_LOCK_FILE;
|
|
5833
5857
|
var init_workspace_runtime_lock = __esm({
|
|
5834
|
-
"
|
|
5858
|
+
"../server/dist/agents/workspace-runtime-lock.js"() {
|
|
5835
5859
|
"use strict";
|
|
5836
5860
|
RUNTIME_LOCK_FILE = "runtime.lock";
|
|
5837
5861
|
}
|
|
5838
5862
|
});
|
|
5839
5863
|
|
|
5840
|
-
//
|
|
5864
|
+
// ../core/dist/workspace/workspace.js
|
|
5841
5865
|
import { readFile, writeFile, mkdir } from "node:fs/promises";
|
|
5842
5866
|
import { realpathSync } from "node:fs";
|
|
5843
5867
|
import { resolve, isAbsolute, sep } from "node:path";
|
|
5844
5868
|
var WorkspaceError, Workspace;
|
|
5845
5869
|
var init_workspace = __esm({
|
|
5846
|
-
"
|
|
5870
|
+
"../core/dist/workspace/workspace.js"() {
|
|
5847
5871
|
"use strict";
|
|
5848
5872
|
WorkspaceError = class extends Error {
|
|
5849
5873
|
constructor(message) {
|
|
@@ -5888,13 +5912,13 @@ var init_workspace = __esm({
|
|
|
5888
5912
|
}
|
|
5889
5913
|
});
|
|
5890
5914
|
|
|
5891
|
-
//
|
|
5915
|
+
// ../core/dist/workspace/git-manager.js
|
|
5892
5916
|
import path22 from "node:path";
|
|
5893
5917
|
import { promises as fs20 } from "node:fs";
|
|
5894
5918
|
import simpleGit from "simple-git";
|
|
5895
5919
|
var GitManagerError, GitManager;
|
|
5896
5920
|
var init_git_manager = __esm({
|
|
5897
|
-
"
|
|
5921
|
+
"../core/dist/workspace/git-manager.js"() {
|
|
5898
5922
|
"use strict";
|
|
5899
5923
|
GitManagerError = class extends Error {
|
|
5900
5924
|
constructor(message) {
|
|
@@ -6263,7 +6287,7 @@ var init_git_manager = __esm({
|
|
|
6263
6287
|
}
|
|
6264
6288
|
});
|
|
6265
6289
|
|
|
6266
|
-
//
|
|
6290
|
+
// ../core/dist/media/mime.js
|
|
6267
6291
|
function normalizeExt(ext) {
|
|
6268
6292
|
const lower = ext.toLowerCase();
|
|
6269
6293
|
return lower.startsWith(".") ? lower : `.${lower}`;
|
|
@@ -6276,7 +6300,7 @@ function extFromImageMime(mime) {
|
|
|
6276
6300
|
}
|
|
6277
6301
|
var PHOTO_MIME_BY_EXT, SERVE_ONLY_MIME_BY_EXT, IMAGE_MIME_BY_EXT, EXT_BY_PHOTO_MIME, IMAGE_EXTS;
|
|
6278
6302
|
var init_mime = __esm({
|
|
6279
|
-
"
|
|
6303
|
+
"../core/dist/media/mime.js"() {
|
|
6280
6304
|
"use strict";
|
|
6281
6305
|
PHOTO_MIME_BY_EXT = {
|
|
6282
6306
|
".png": "image/png",
|
|
@@ -6300,9 +6324,9 @@ var init_mime = __esm({
|
|
|
6300
6324
|
}
|
|
6301
6325
|
});
|
|
6302
6326
|
|
|
6303
|
-
//
|
|
6327
|
+
// ../core/dist/index.js
|
|
6304
6328
|
var init_dist = __esm({
|
|
6305
|
-
"
|
|
6329
|
+
"../core/dist/index.js"() {
|
|
6306
6330
|
"use strict";
|
|
6307
6331
|
init_workspace();
|
|
6308
6332
|
init_git_manager();
|
|
@@ -6310,7 +6334,7 @@ var init_dist = __esm({
|
|
|
6310
6334
|
}
|
|
6311
6335
|
});
|
|
6312
6336
|
|
|
6313
|
-
//
|
|
6337
|
+
// ../server/dist/channels/shared/media-store.js
|
|
6314
6338
|
import fs21 from "node:fs/promises";
|
|
6315
6339
|
import path23 from "node:path";
|
|
6316
6340
|
import { randomBytes } from "node:crypto";
|
|
@@ -6371,7 +6395,7 @@ async function saveInboundMedia(params) {
|
|
|
6371
6395
|
}
|
|
6372
6396
|
var VISION_IMAGE_MIME_TYPES, EXT_BY_AV_MIME;
|
|
6373
6397
|
var init_media_store = __esm({
|
|
6374
|
-
"
|
|
6398
|
+
"../server/dist/channels/shared/media-store.js"() {
|
|
6375
6399
|
"use strict";
|
|
6376
6400
|
init_dist();
|
|
6377
6401
|
VISION_IMAGE_MIME_TYPES = ["image/jpeg", "image/png", "image/gif", "image/webp"];
|
|
@@ -6389,7 +6413,7 @@ var init_media_store = __esm({
|
|
|
6389
6413
|
}
|
|
6390
6414
|
});
|
|
6391
6415
|
|
|
6392
|
-
//
|
|
6416
|
+
// ../server/dist/sessions/ui-log-builder.js
|
|
6393
6417
|
import { randomUUID } from "node:crypto";
|
|
6394
6418
|
function createEmptyUIState() {
|
|
6395
6419
|
return {
|
|
@@ -6793,19 +6817,19 @@ function applyEvent(state, event) {
|
|
|
6793
6817
|
}
|
|
6794
6818
|
var msgCounter;
|
|
6795
6819
|
var init_ui_log_builder = __esm({
|
|
6796
|
-
"
|
|
6820
|
+
"../server/dist/sessions/ui-log-builder.js"() {
|
|
6797
6821
|
"use strict";
|
|
6798
6822
|
msgCounter = 0;
|
|
6799
6823
|
}
|
|
6800
6824
|
});
|
|
6801
6825
|
|
|
6802
|
-
//
|
|
6826
|
+
// ../server/dist/agents/session-ui-store.js
|
|
6803
6827
|
import fsSync5 from "node:fs";
|
|
6804
6828
|
import path24 from "node:path";
|
|
6805
6829
|
import { eq as eq6 } from "drizzle-orm";
|
|
6806
6830
|
var UI_STATE_IDLE_TTL_MS, UI_STATE_SWEEP_PERIOD_MS, SessionUIStore;
|
|
6807
6831
|
var init_session_ui_store = __esm({
|
|
6808
|
-
"
|
|
6832
|
+
"../server/dist/agents/session-ui-store.js"() {
|
|
6809
6833
|
"use strict";
|
|
6810
6834
|
init_broadcast();
|
|
6811
6835
|
init_schema();
|
|
@@ -7319,11 +7343,11 @@ var init_session_ui_store = __esm({
|
|
|
7319
7343
|
}
|
|
7320
7344
|
});
|
|
7321
7345
|
|
|
7322
|
-
//
|
|
7346
|
+
// ../server/dist/agents/session-query-store.js
|
|
7323
7347
|
import { eq as eq7, and as and5, isNull as isNull3, desc, lt, gte, inArray } from "drizzle-orm";
|
|
7324
7348
|
var SessionQueryStore;
|
|
7325
7349
|
var init_session_query_store = __esm({
|
|
7326
|
-
"
|
|
7350
|
+
"../server/dist/agents/session-query-store.js"() {
|
|
7327
7351
|
"use strict";
|
|
7328
7352
|
init_schema();
|
|
7329
7353
|
init_session_store();
|
|
@@ -7550,7 +7574,7 @@ var init_session_query_store = __esm({
|
|
|
7550
7574
|
}
|
|
7551
7575
|
});
|
|
7552
7576
|
|
|
7553
|
-
//
|
|
7577
|
+
// ../server/dist/agents/bedrock-agent.js
|
|
7554
7578
|
import { BedrockRuntimeClient, InvokeModelCommand } from "@aws-sdk/client-bedrock-runtime";
|
|
7555
7579
|
function effortToBudget(effort, maxTokens) {
|
|
7556
7580
|
const table = {
|
|
@@ -7572,7 +7596,7 @@ function extractRegionFromEndpoint(endpoint) {
|
|
|
7572
7596
|
}
|
|
7573
7597
|
var BedrockAgent;
|
|
7574
7598
|
var init_bedrock_agent = __esm({
|
|
7575
|
-
"
|
|
7599
|
+
"../server/dist/agents/bedrock-agent.js"() {
|
|
7576
7600
|
"use strict";
|
|
7577
7601
|
init_config();
|
|
7578
7602
|
init_agent_loop();
|
|
@@ -7702,7 +7726,7 @@ var init_bedrock_agent = __esm({
|
|
|
7702
7726
|
}
|
|
7703
7727
|
});
|
|
7704
7728
|
|
|
7705
|
-
//
|
|
7729
|
+
// ../server/dist/agents/deepseek-agent.js
|
|
7706
7730
|
function safeParse(json) {
|
|
7707
7731
|
try {
|
|
7708
7732
|
return JSON.parse(json || "{}");
|
|
@@ -7712,7 +7736,7 @@ function safeParse(json) {
|
|
|
7712
7736
|
}
|
|
7713
7737
|
var DeepSeekAgent;
|
|
7714
7738
|
var init_deepseek_agent = __esm({
|
|
7715
|
-
"
|
|
7739
|
+
"../server/dist/agents/deepseek-agent.js"() {
|
|
7716
7740
|
"use strict";
|
|
7717
7741
|
init_config();
|
|
7718
7742
|
init_agent_loop();
|
|
@@ -7841,10 +7865,25 @@ var init_deepseek_agent = __esm({
|
|
|
7841
7865
|
}
|
|
7842
7866
|
return results;
|
|
7843
7867
|
}
|
|
7868
|
+
/** Block arrays become OpenAI content parts — text as-is, image blocks as
|
|
7869
|
+
* `image_url` data URLs (same shape as Kimi). Only `deepseek-flash`
|
|
7870
|
+
* actually sees images — the registry has `image: false` on v4-pro, so the
|
|
7871
|
+
* session manager strips them before they reach here for that model. */
|
|
7844
7872
|
convertUserContent(content) {
|
|
7845
7873
|
if (typeof content === "string")
|
|
7846
7874
|
return content;
|
|
7847
|
-
|
|
7875
|
+
const parts = [];
|
|
7876
|
+
for (const block of content) {
|
|
7877
|
+
if (block.type === "text") {
|
|
7878
|
+
parts.push({ type: "text", text: block.text });
|
|
7879
|
+
} else if (block.type === "image") {
|
|
7880
|
+
parts.push({
|
|
7881
|
+
type: "image_url",
|
|
7882
|
+
image_url: { url: `data:${block.source.media_type};base64,${block.source.data}` }
|
|
7883
|
+
});
|
|
7884
|
+
}
|
|
7885
|
+
}
|
|
7886
|
+
return parts;
|
|
7848
7887
|
}
|
|
7849
7888
|
convertAssistantMessage(msg) {
|
|
7850
7889
|
const results = [];
|
|
@@ -7892,7 +7931,7 @@ var init_deepseek_agent = __esm({
|
|
|
7892
7931
|
}
|
|
7893
7932
|
});
|
|
7894
7933
|
|
|
7895
|
-
//
|
|
7934
|
+
// ../server/dist/agents/kimi-agent.js
|
|
7896
7935
|
function safeParse2(json) {
|
|
7897
7936
|
try {
|
|
7898
7937
|
return JSON.parse(json || "{}");
|
|
@@ -7902,7 +7941,7 @@ function safeParse2(json) {
|
|
|
7902
7941
|
}
|
|
7903
7942
|
var KimiAgent;
|
|
7904
7943
|
var init_kimi_agent = __esm({
|
|
7905
|
-
"
|
|
7944
|
+
"../server/dist/agents/kimi-agent.js"() {
|
|
7906
7945
|
"use strict";
|
|
7907
7946
|
init_config();
|
|
7908
7947
|
init_agent_loop();
|
|
@@ -8098,7 +8137,7 @@ var init_kimi_agent = __esm({
|
|
|
8098
8137
|
}
|
|
8099
8138
|
});
|
|
8100
8139
|
|
|
8101
|
-
//
|
|
8140
|
+
// ../server/dist/agents/minimax-agent.js
|
|
8102
8141
|
function effortToBudget2(effort, maxTokens) {
|
|
8103
8142
|
const table = {
|
|
8104
8143
|
low: 2048,
|
|
@@ -8115,7 +8154,7 @@ function effortToBudget2(effort, maxTokens) {
|
|
|
8115
8154
|
}
|
|
8116
8155
|
var MiniMaxAgent;
|
|
8117
8156
|
var init_minimax_agent = __esm({
|
|
8118
|
-
"
|
|
8157
|
+
"../server/dist/agents/minimax-agent.js"() {
|
|
8119
8158
|
"use strict";
|
|
8120
8159
|
init_config();
|
|
8121
8160
|
init_agent_loop();
|
|
@@ -8237,7 +8276,7 @@ var init_minimax_agent = __esm({
|
|
|
8237
8276
|
}
|
|
8238
8277
|
});
|
|
8239
8278
|
|
|
8240
|
-
//
|
|
8279
|
+
// ../server/dist/agents/qwen-agent.js
|
|
8241
8280
|
function effortToBudget3(effort, maxTokens) {
|
|
8242
8281
|
const table = {
|
|
8243
8282
|
low: 2048,
|
|
@@ -8254,7 +8293,7 @@ function effortToBudget3(effort, maxTokens) {
|
|
|
8254
8293
|
}
|
|
8255
8294
|
var QwenAgent;
|
|
8256
8295
|
var init_qwen_agent = __esm({
|
|
8257
|
-
"
|
|
8296
|
+
"../server/dist/agents/qwen-agent.js"() {
|
|
8258
8297
|
"use strict";
|
|
8259
8298
|
init_config();
|
|
8260
8299
|
init_agent_loop();
|
|
@@ -8372,7 +8411,7 @@ var init_qwen_agent = __esm({
|
|
|
8372
8411
|
}
|
|
8373
8412
|
});
|
|
8374
8413
|
|
|
8375
|
-
//
|
|
8414
|
+
// ../server/dist/agents/hunyuan-agent.js
|
|
8376
8415
|
function safeParse3(json) {
|
|
8377
8416
|
try {
|
|
8378
8417
|
return JSON.parse(json || "{}");
|
|
@@ -8382,7 +8421,7 @@ function safeParse3(json) {
|
|
|
8382
8421
|
}
|
|
8383
8422
|
var HunyuanAgent;
|
|
8384
8423
|
var init_hunyuan_agent = __esm({
|
|
8385
|
-
"
|
|
8424
|
+
"../server/dist/agents/hunyuan-agent.js"() {
|
|
8386
8425
|
"use strict";
|
|
8387
8426
|
init_config();
|
|
8388
8427
|
init_agent_loop();
|
|
@@ -8553,7 +8592,7 @@ var init_hunyuan_agent = __esm({
|
|
|
8553
8592
|
}
|
|
8554
8593
|
});
|
|
8555
8594
|
|
|
8556
|
-
//
|
|
8595
|
+
// ../server/dist/agents/doubao-agent.js
|
|
8557
8596
|
function safeParse4(json) {
|
|
8558
8597
|
try {
|
|
8559
8598
|
return JSON.parse(json || "{}");
|
|
@@ -8563,7 +8602,7 @@ function safeParse4(json) {
|
|
|
8563
8602
|
}
|
|
8564
8603
|
var DoubaoAgent;
|
|
8565
8604
|
var init_doubao_agent = __esm({
|
|
8566
|
-
"
|
|
8605
|
+
"../server/dist/agents/doubao-agent.js"() {
|
|
8567
8606
|
"use strict";
|
|
8568
8607
|
init_config();
|
|
8569
8608
|
init_agent_loop();
|
|
@@ -8734,7 +8773,7 @@ var init_doubao_agent = __esm({
|
|
|
8734
8773
|
}
|
|
8735
8774
|
});
|
|
8736
8775
|
|
|
8737
|
-
//
|
|
8776
|
+
// ../server/dist/agents/openai-agent.js
|
|
8738
8777
|
function safeParse5(json) {
|
|
8739
8778
|
try {
|
|
8740
8779
|
return JSON.parse(json || "{}");
|
|
@@ -8744,7 +8783,7 @@ function safeParse5(json) {
|
|
|
8744
8783
|
}
|
|
8745
8784
|
var OpenAIAgent;
|
|
8746
8785
|
var init_openai_agent = __esm({
|
|
8747
|
-
"
|
|
8786
|
+
"../server/dist/agents/openai-agent.js"() {
|
|
8748
8787
|
"use strict";
|
|
8749
8788
|
init_config();
|
|
8750
8789
|
init_agent_loop();
|
|
@@ -8916,13 +8955,13 @@ var init_openai_agent = __esm({
|
|
|
8916
8955
|
}
|
|
8917
8956
|
});
|
|
8918
8957
|
|
|
8919
|
-
//
|
|
8958
|
+
// ../server/dist/agents/mantle-agent.js
|
|
8920
8959
|
import { SignatureV4 } from "@smithy/signature-v4";
|
|
8921
8960
|
import { Sha256 } from "@aws-crypto/sha256-js";
|
|
8922
8961
|
import { defaultProvider } from "@aws-sdk/credential-provider-node";
|
|
8923
8962
|
function extractRegionFromHost(hostname) {
|
|
8924
|
-
const m = hostname.match(
|
|
8925
|
-
return m?.[1] ?? "us-east-
|
|
8963
|
+
const m = hostname.match(/^bedrock-(?:mantle|runtime)\.([a-z0-9-]+)\./);
|
|
8964
|
+
return m?.[1] ?? "us-east-1";
|
|
8926
8965
|
}
|
|
8927
8966
|
function safeParse6(json) {
|
|
8928
8967
|
try {
|
|
@@ -8933,7 +8972,7 @@ function safeParse6(json) {
|
|
|
8933
8972
|
}
|
|
8934
8973
|
var MantleAgent;
|
|
8935
8974
|
var init_mantle_agent = __esm({
|
|
8936
|
-
"
|
|
8975
|
+
"../server/dist/agents/mantle-agent.js"() {
|
|
8937
8976
|
"use strict";
|
|
8938
8977
|
init_config();
|
|
8939
8978
|
init_agent_loop();
|
|
@@ -9152,10 +9191,10 @@ var init_mantle_agent = __esm({
|
|
|
9152
9191
|
}
|
|
9153
9192
|
});
|
|
9154
9193
|
|
|
9155
|
-
//
|
|
9194
|
+
// ../server/dist/agents/anthropic-agent.js
|
|
9156
9195
|
var AnthropicAgent;
|
|
9157
9196
|
var init_anthropic_agent = __esm({
|
|
9158
|
-
"
|
|
9197
|
+
"../server/dist/agents/anthropic-agent.js"() {
|
|
9159
9198
|
"use strict";
|
|
9160
9199
|
init_config();
|
|
9161
9200
|
init_agent_loop();
|
|
@@ -9279,7 +9318,7 @@ var init_anthropic_agent = __esm({
|
|
|
9279
9318
|
}
|
|
9280
9319
|
});
|
|
9281
9320
|
|
|
9282
|
-
//
|
|
9321
|
+
// ../server/dist/agents/model-runtime.js
|
|
9283
9322
|
function createModelRuntime(providerId, cfg) {
|
|
9284
9323
|
switch (providerId) {
|
|
9285
9324
|
case "aws-bedrock-claude-invoke":
|
|
@@ -9371,10 +9410,15 @@ function createModelRuntime(providerId, cfg) {
|
|
|
9371
9410
|
maxTokens: cfg.maxTokens,
|
|
9372
9411
|
thinking: cfg.thinking
|
|
9373
9412
|
});
|
|
9413
|
+
// aws-bedrock-openai is the same OpenAI Responses wire format on the
|
|
9414
|
+
// bedrock-runtime host (/openai/v1, cross-Region profile ids only) —
|
|
9415
|
+
// Grok 4.6 / Kimi K3 live there and not (or not everywhere) on Mantle.
|
|
9416
|
+
// See aws-bedrock-openai.yaml.
|
|
9374
9417
|
case "aws-bedrock-mantle":
|
|
9418
|
+
case "aws-bedrock-openai":
|
|
9375
9419
|
return new MantleAgent({
|
|
9376
9420
|
modelId: cfg.modelId,
|
|
9377
|
-
endpoint: cfg.endpoint ?? "https://bedrock-mantle.us-east-
|
|
9421
|
+
endpoint: cfg.endpoint ?? (providerId === "aws-bedrock-openai" ? "https://bedrock-runtime.us-east-1.amazonaws.com/openai/v1" : "https://bedrock-mantle.us-east-1.api.aws/openai/v1"),
|
|
9378
9422
|
// No bearer token → MantleAgent falls back to SigV4 IAM auth using
|
|
9379
9423
|
// these creds (or the SDK default chain when also empty).
|
|
9380
9424
|
apiKey: cfg.apiKey ?? "",
|
|
@@ -9414,7 +9458,7 @@ function createModelRuntime(providerId, cfg) {
|
|
|
9414
9458
|
}
|
|
9415
9459
|
}
|
|
9416
9460
|
var init_model_runtime = __esm({
|
|
9417
|
-
"
|
|
9461
|
+
"../server/dist/agents/model-runtime.js"() {
|
|
9418
9462
|
"use strict";
|
|
9419
9463
|
init_bedrock_agent();
|
|
9420
9464
|
init_deepseek_agent();
|
|
@@ -9429,7 +9473,7 @@ var init_model_runtime = __esm({
|
|
|
9429
9473
|
}
|
|
9430
9474
|
});
|
|
9431
9475
|
|
|
9432
|
-
//
|
|
9476
|
+
// ../server/dist/child-env.js
|
|
9433
9477
|
function cleanChildEnv() {
|
|
9434
9478
|
const env = { ...process.env };
|
|
9435
9479
|
delete env.HALO_PASSWORD;
|
|
@@ -9437,12 +9481,12 @@ function cleanChildEnv() {
|
|
|
9437
9481
|
return env;
|
|
9438
9482
|
}
|
|
9439
9483
|
var init_child_env = __esm({
|
|
9440
|
-
"
|
|
9484
|
+
"../server/dist/child-env.js"() {
|
|
9441
9485
|
"use strict";
|
|
9442
9486
|
}
|
|
9443
9487
|
});
|
|
9444
9488
|
|
|
9445
|
-
//
|
|
9489
|
+
// ../server/dist/tools/sandbox.js
|
|
9446
9490
|
import { exec, execFile, spawn as spawn2 } from "node:child_process";
|
|
9447
9491
|
import { promisify } from "node:util";
|
|
9448
9492
|
import path25 from "node:path";
|
|
@@ -9917,7 +9961,7 @@ async function sandboxReaddir(dirPath, opts) {
|
|
|
9917
9961
|
}
|
|
9918
9962
|
var execAsync, execFileAsync, HOME, HALO_HOME3, GLOBAL_DIR, KILL_GRACE_MS, _bwrapAvailable, DEFAULT_HIDDEN_DIRS, DEFAULT_HIDDEN_FILES, WORKSPACE_HIDDEN_DIRS, WORKSPACE_HIDDEN_FILES, _hiddenDirs, _hiddenFiles, _writableDirs;
|
|
9919
9963
|
var init_sandbox = __esm({
|
|
9920
|
-
"
|
|
9964
|
+
"../server/dist/tools/sandbox.js"() {
|
|
9921
9965
|
"use strict";
|
|
9922
9966
|
init_child_env();
|
|
9923
9967
|
execAsync = promisify(exec);
|
|
@@ -9970,7 +10014,7 @@ var init_sandbox = __esm({
|
|
|
9970
10014
|
}
|
|
9971
10015
|
});
|
|
9972
10016
|
|
|
9973
|
-
//
|
|
10017
|
+
// ../server/dist/tools/workspace-tools.js
|
|
9974
10018
|
import fs22 from "node:fs/promises";
|
|
9975
10019
|
import path26 from "node:path";
|
|
9976
10020
|
import crypto from "node:crypto";
|
|
@@ -10689,7 +10733,7 @@ function imageDimensions(buf, mediaType) {
|
|
|
10689
10733
|
}
|
|
10690
10734
|
var SKIP_DIRS, SKIP_HALO_SUBDIRS, GLOB_MAX_RESULTS, HOME2, PARAMS_PATTERN, ENV_PATTERN3;
|
|
10691
10735
|
var init_workspace_tools = __esm({
|
|
10692
|
-
"
|
|
10736
|
+
"../server/dist/tools/workspace-tools.js"() {
|
|
10693
10737
|
"use strict";
|
|
10694
10738
|
init_config();
|
|
10695
10739
|
init_sandbox();
|
|
@@ -10706,7 +10750,7 @@ var init_workspace_tools = __esm({
|
|
|
10706
10750
|
}
|
|
10707
10751
|
});
|
|
10708
10752
|
|
|
10709
|
-
//
|
|
10753
|
+
// ../server/dist/tools/draft-tool.js
|
|
10710
10754
|
function createDraftTool() {
|
|
10711
10755
|
let drafts = 0;
|
|
10712
10756
|
const tool = {
|
|
@@ -10741,7 +10785,7 @@ Error: draft requires non-empty \`content\` \u2014 put your full draft answer th
|
|
|
10741
10785
|
}
|
|
10742
10786
|
var MAX_DRAFTS, REVIEW_CHECKLIST;
|
|
10743
10787
|
var init_draft_tool = __esm({
|
|
10744
|
-
"
|
|
10788
|
+
"../server/dist/tools/draft-tool.js"() {
|
|
10745
10789
|
"use strict";
|
|
10746
10790
|
init_agent_loop();
|
|
10747
10791
|
MAX_DRAFTS = 3;
|
|
@@ -10755,7 +10799,7 @@ If the draft clears all three, write the final answer now. If not, fix it (gathe
|
|
|
10755
10799
|
}
|
|
10756
10800
|
});
|
|
10757
10801
|
|
|
10758
|
-
//
|
|
10802
|
+
// ../server/dist/prompts/system-prompts.js
|
|
10759
10803
|
import fs23 from "node:fs/promises";
|
|
10760
10804
|
import path27 from "node:path";
|
|
10761
10805
|
import { homedir as homedir12 } from "node:os";
|
|
@@ -10841,17 +10885,17 @@ async function loadSystemPrompts(workspaceRoot) {
|
|
|
10841
10885
|
}
|
|
10842
10886
|
var GLOBAL_PROMPTS_DIR;
|
|
10843
10887
|
var init_system_prompts = __esm({
|
|
10844
|
-
"
|
|
10888
|
+
"../server/dist/prompts/system-prompts.js"() {
|
|
10845
10889
|
"use strict";
|
|
10846
10890
|
GLOBAL_PROMPTS_DIR = path27.join(homedir12(), ".halo", "global", "prompts");
|
|
10847
10891
|
}
|
|
10848
10892
|
});
|
|
10849
10893
|
|
|
10850
|
-
//
|
|
10894
|
+
// ../server/dist/agents/session-agent-builder.js
|
|
10851
10895
|
import path28 from "node:path";
|
|
10852
10896
|
var SessionAgentBuilder;
|
|
10853
10897
|
var init_session_agent_builder = __esm({
|
|
10854
|
-
"
|
|
10898
|
+
"../server/dist/agents/session-agent-builder.js"() {
|
|
10855
10899
|
"use strict";
|
|
10856
10900
|
init_model_runtime();
|
|
10857
10901
|
init_workspace_tools();
|
|
@@ -10960,6 +11004,7 @@ var init_session_agent_builder = __esm({
|
|
|
10960
11004
|
const nameSet = new Set(yamlConfig?.tools ?? []);
|
|
10961
11005
|
const delegates = canDelegate(yamlConfig);
|
|
10962
11006
|
const sessionTools = delegates ? this.host.createSessionTools(sessionId) : agentId === GOAL_AGENT_ID ? this.host.createGoalTools(sessionId) : [];
|
|
11007
|
+
sessionTools.push(this.host.createContinueTaskTool(sessionId));
|
|
10963
11008
|
let draftReset = null;
|
|
10964
11009
|
if (nameSet.has("draft")) {
|
|
10965
11010
|
const { tool, reset } = createDraftTool();
|
|
@@ -11222,7 +11267,7 @@ ${roster}`;
|
|
|
11222
11267
|
}
|
|
11223
11268
|
});
|
|
11224
11269
|
|
|
11225
|
-
//
|
|
11270
|
+
// ../server/dist/agents/session-skill-commands.js
|
|
11226
11271
|
import { eq as eq8 } from "drizzle-orm";
|
|
11227
11272
|
function commandVisibilityGate(d) {
|
|
11228
11273
|
if (!d.verbs || d.verbs.length === 0)
|
|
@@ -11239,7 +11284,7 @@ function commandVisibilityGate(d) {
|
|
|
11239
11284
|
}
|
|
11240
11285
|
var SessionSkillCommands;
|
|
11241
11286
|
var init_session_skill_commands = __esm({
|
|
11242
|
-
"
|
|
11287
|
+
"../server/dist/agents/session-skill-commands.js"() {
|
|
11243
11288
|
"use strict";
|
|
11244
11289
|
init_db();
|
|
11245
11290
|
init_schema();
|
|
@@ -11304,12 +11349,12 @@ var init_session_skill_commands = __esm({
|
|
|
11304
11349
|
}
|
|
11305
11350
|
});
|
|
11306
11351
|
|
|
11307
|
-
//
|
|
11352
|
+
// ../server/dist/agents/session-state-store.js
|
|
11308
11353
|
import fsSync6 from "node:fs";
|
|
11309
11354
|
import path29 from "node:path";
|
|
11310
11355
|
var SessionStateStore;
|
|
11311
11356
|
var init_session_state_store = __esm({
|
|
11312
|
-
"
|
|
11357
|
+
"../server/dist/agents/session-state-store.js"() {
|
|
11313
11358
|
"use strict";
|
|
11314
11359
|
init_session_store();
|
|
11315
11360
|
SessionStateStore = class {
|
|
@@ -11373,7 +11418,7 @@ var init_session_state_store = __esm({
|
|
|
11373
11418
|
}
|
|
11374
11419
|
});
|
|
11375
11420
|
|
|
11376
|
-
//
|
|
11421
|
+
// ../server/dist/observability/otel-sdk.js
|
|
11377
11422
|
var otel_sdk_exports = {};
|
|
11378
11423
|
__export(otel_sdk_exports, {
|
|
11379
11424
|
registerSdk: () => registerSdk
|
|
@@ -11412,12 +11457,12 @@ function registerSdk(serviceName, serviceVersion) {
|
|
|
11412
11457
|
return [tracerProvider, meterProvider, loggerProvider];
|
|
11413
11458
|
}
|
|
11414
11459
|
var init_otel_sdk = __esm({
|
|
11415
|
-
"
|
|
11460
|
+
"../server/dist/observability/otel-sdk.js"() {
|
|
11416
11461
|
"use strict";
|
|
11417
11462
|
}
|
|
11418
11463
|
});
|
|
11419
11464
|
|
|
11420
|
-
//
|
|
11465
|
+
// ../server/dist/observability/otel.js
|
|
11421
11466
|
import { trace, metrics as metrics2, ProxyTracerProvider } from "@opentelemetry/api";
|
|
11422
11467
|
import { logs as logs2 } from "@opentelemetry/api-logs";
|
|
11423
11468
|
function externalSdkRegistered() {
|
|
@@ -11442,7 +11487,7 @@ async function initObservability() {
|
|
|
11442
11487
|
return true;
|
|
11443
11488
|
}
|
|
11444
11489
|
const { registerSdk: registerSdk2 } = await Promise.resolve().then(() => (init_otel_sdk(), otel_sdk_exports));
|
|
11445
|
-
providers = registerSdk2(process.env.OTEL_SERVICE_NAME, "1.3.
|
|
11490
|
+
providers = registerSdk2(process.env.OTEL_SERVICE_NAME, "1.3.4-c3090bf");
|
|
11446
11491
|
console.log(`[Observability] OTLP export \u2192 ${process.env.OTEL_EXPORTER_OTLP_ENDPOINT} (service.name=${process.env.OTEL_SERVICE_NAME}, capture_content=${config.observability.captureContent})`);
|
|
11447
11492
|
return true;
|
|
11448
11493
|
}
|
|
@@ -11463,7 +11508,7 @@ async function shutdownObservability() {
|
|
|
11463
11508
|
}
|
|
11464
11509
|
var SCOPE, enabled, tracer, getMeter, otelLogger, captureContent, providers;
|
|
11465
11510
|
var init_otel = __esm({
|
|
11466
|
-
"
|
|
11511
|
+
"../server/dist/observability/otel.js"() {
|
|
11467
11512
|
"use strict";
|
|
11468
11513
|
init_config();
|
|
11469
11514
|
SCOPE = "opentelemetry.instrumentation.halo";
|
|
@@ -11476,7 +11521,7 @@ var init_otel = __esm({
|
|
|
11476
11521
|
}
|
|
11477
11522
|
});
|
|
11478
11523
|
|
|
11479
|
-
//
|
|
11524
|
+
// ../server/dist/observability/genai-spans.js
|
|
11480
11525
|
import { context, trace as trace2, SpanStatusCode } from "@opentelemetry/api";
|
|
11481
11526
|
function instruments() {
|
|
11482
11527
|
const meter = getMeter();
|
|
@@ -11702,7 +11747,7 @@ function recordRetry(kind) {
|
|
|
11702
11747
|
}
|
|
11703
11748
|
var turns, SYSTEM, PART_CAP, SYSTEM_PROMPT_CAP, ATTR_CAP, cachedInstruments, metricsFor;
|
|
11704
11749
|
var init_genai_spans = __esm({
|
|
11705
|
-
"
|
|
11750
|
+
"../server/dist/observability/genai-spans.js"() {
|
|
11706
11751
|
"use strict";
|
|
11707
11752
|
init_otel();
|
|
11708
11753
|
turns = /* @__PURE__ */ new Map();
|
|
@@ -11715,7 +11760,7 @@ var init_genai_spans = __esm({
|
|
|
11715
11760
|
}
|
|
11716
11761
|
});
|
|
11717
11762
|
|
|
11718
|
-
//
|
|
11763
|
+
// ../server/dist/agents/session-manager.js
|
|
11719
11764
|
import fsSync7 from "node:fs";
|
|
11720
11765
|
import path30 from "node:path";
|
|
11721
11766
|
import { eq as eq9, and as and6, isNull as isNull4, isNotNull as isNotNull2 } from "drizzle-orm";
|
|
@@ -11816,9 +11861,9 @@ function generateSessionId() {
|
|
|
11816
11861
|
const rand = Math.random().toString(36).slice(2, 8);
|
|
11817
11862
|
return `sid_${ts}_${rand}`;
|
|
11818
11863
|
}
|
|
11819
|
-
var SessionManager;
|
|
11864
|
+
var CONTINUE_TASK_KICK, SessionManager;
|
|
11820
11865
|
var init_session_manager = __esm({
|
|
11821
|
-
"
|
|
11866
|
+
"../server/dist/agents/session-manager.js"() {
|
|
11822
11867
|
"use strict";
|
|
11823
11868
|
init_md_loader();
|
|
11824
11869
|
init_config();
|
|
@@ -11847,6 +11892,7 @@ var init_session_manager = __esm({
|
|
|
11847
11892
|
init_session_skill_commands();
|
|
11848
11893
|
init_session_state_store();
|
|
11849
11894
|
init_genai_spans();
|
|
11895
|
+
CONTINUE_TASK_KICK = `[System] You called continue_task: the task interrupted earlier is not finished. Resume it now from where it stopped. Any tool call marked "[tool execution interrupted \u2014 no result]" did not run \u2014 re-issue it if you still need the result (this overrides the marker's do-not-retry note \u2014 you explicitly asked to continue).`;
|
|
11850
11896
|
SessionManager = class _SessionManager {
|
|
11851
11897
|
// The fields below are marked `internal:` because they're consumed by
|
|
11852
11898
|
// helpers in this directory (session-tools.ts). Treat them as
|
|
@@ -12063,6 +12109,11 @@ var init_session_manager = __esm({
|
|
|
12063
12109
|
createSessionTools(sessionId) {
|
|
12064
12110
|
return buildSessionTools(this, sessionId);
|
|
12065
12111
|
}
|
|
12112
|
+
/** Built-in continue_task tool (every agent, no yaml opt-in) — see
|
|
12113
|
+
* session-agent-builder / requestSelfKick / drainQueue. */
|
|
12114
|
+
createContinueTaskTool(sessionId) {
|
|
12115
|
+
return buildContinueTaskTool(this, sessionId);
|
|
12116
|
+
}
|
|
12066
12117
|
/** Goal-mode tool set — injected only for the `goal` agent (see
|
|
12067
12118
|
* session-agent-builder / goal-mode.ts). */
|
|
12068
12119
|
createGoalTools(sessionId) {
|
|
@@ -12104,6 +12155,8 @@ var init_session_manager = __esm({
|
|
|
12104
12155
|
warnedToolHashes: /* @__PURE__ */ new Set(),
|
|
12105
12156
|
turnStartTime: 0,
|
|
12106
12157
|
interruptRequested: false,
|
|
12158
|
+
selfKick: false,
|
|
12159
|
+
resumedAfterInterrupt: false,
|
|
12107
12160
|
isCompacting: false,
|
|
12108
12161
|
compactAbortController: null,
|
|
12109
12162
|
compactedThisTurn: false,
|
|
@@ -12707,6 +12760,8 @@ var init_session_manager = __esm({
|
|
|
12707
12760
|
session.toolCallLog = [];
|
|
12708
12761
|
session.warnedToolHashes.clear();
|
|
12709
12762
|
session.interruptRequested = false;
|
|
12763
|
+
session.resumedAfterInterrupt = false;
|
|
12764
|
+
session.selfKick = false;
|
|
12710
12765
|
result = await this.runAgentTurn(session, message);
|
|
12711
12766
|
console.debug(`[SessionManager] runSession ${sessionId} first turn done \u2014 result: ${result.slice(0, 150)}`);
|
|
12712
12767
|
}
|
|
@@ -12847,6 +12902,9 @@ ${list}`;
|
|
|
12847
12902
|
async drainQueue(session) {
|
|
12848
12903
|
while (session.messageQueue.length > 0) {
|
|
12849
12904
|
const batch = session.messageQueue.splice(0);
|
|
12905
|
+
session.resumedAfterInterrupt = session.interruptRequested;
|
|
12906
|
+
const kickFlagReset = session.selfKick;
|
|
12907
|
+
session.selfKick = false;
|
|
12850
12908
|
session.interruptRequested = false;
|
|
12851
12909
|
session.toolCallLog = [];
|
|
12852
12910
|
session.warnedToolHashes.clear();
|
|
@@ -12861,7 +12919,8 @@ ${q.text}` : q.text).join("\n\n");
|
|
|
12861
12919
|
if (suffix && session.parentId === null) {
|
|
12862
12920
|
this.emitEvent(session.id, { type: "system", text: suffix.trim(), agentName: session.agentName });
|
|
12863
12921
|
}
|
|
12864
|
-
const
|
|
12922
|
+
const kickNote = kickFlagReset ? "\n\n[System] The continue_task flag you set last turn was reset by this interrupt. If the interrupted task is still unfinished after you answer, call continue_task again." : "";
|
|
12923
|
+
const input = this.buildInput(merged + suffix + kickNote, images.length > 0 ? images : void 0, session.supportsImage);
|
|
12865
12924
|
try {
|
|
12866
12925
|
await this.runAgentTurn(session, input);
|
|
12867
12926
|
} catch (err) {
|
|
@@ -12869,6 +12928,15 @@ ${q.text}` : q.text).join("\n\n");
|
|
|
12869
12928
|
console.error(`[SessionManager] Drain run error for ${session.id}: ${errMsg}`);
|
|
12870
12929
|
throw err;
|
|
12871
12930
|
}
|
|
12931
|
+
if (session.messageQueue.length === 0) {
|
|
12932
|
+
if (session.selfKick && !session.interruptRequested) {
|
|
12933
|
+
session.messageQueue.push({ text: CONTINUE_TASK_KICK });
|
|
12934
|
+
const taskId = session.parentId !== null ? session.id : void 0;
|
|
12935
|
+
this.emitEvent(session.id, { type: "user", text: CONTINUE_TASK_KICK, agentName: "user", report: true, taskId });
|
|
12936
|
+
console.debug(`[SessionManager] continue_task kick for ${session.id}`);
|
|
12937
|
+
}
|
|
12938
|
+
session.selfKick = false;
|
|
12939
|
+
}
|
|
12872
12940
|
if (session.parentId === null && session.messageQueue.length > 0) {
|
|
12873
12941
|
this.emitEvent(session.id, { type: "complete", batchBoundary: true });
|
|
12874
12942
|
}
|
|
@@ -12944,6 +13012,18 @@ ${q.text}` : q.text).join("\n\n");
|
|
|
12944
13012
|
this.markPendingToolCallsInterrupted(sessionId);
|
|
12945
13013
|
console.debug(`[SessionManager] Interrupted session ${sessionId}`);
|
|
12946
13014
|
}
|
|
13015
|
+
/** continue_task tool backend. Arms the one-turn selfKick flag that drainQueue
|
|
13016
|
+
* turns into a synthetic resume turn — but only in a turn that itself started
|
|
13017
|
+
* after an interrupt (resumedAfterInterrupt), so kicks ≤ interrupts. */
|
|
13018
|
+
requestSelfKick(sessionId) {
|
|
13019
|
+
const session = this.sessions.get(sessionId);
|
|
13020
|
+
if (!session || session.abortController === null)
|
|
13021
|
+
return "no_turn";
|
|
13022
|
+
if (!session.resumedAfterInterrupt)
|
|
13023
|
+
return "not_interrupted";
|
|
13024
|
+
session.selfKick = true;
|
|
13025
|
+
return "set";
|
|
13026
|
+
}
|
|
12947
13027
|
/** Append text as a user turn to a session's agent.messages, coalescing into
|
|
12948
13028
|
* a trailing user message if one exists. Two invariants drive this:
|
|
12949
13029
|
* 1. Anthropic rejects consecutive same-role messages, and the next
|
|
@@ -12981,6 +13061,7 @@ ${q.text}` : q.text);
|
|
|
12981
13061
|
}
|
|
12982
13062
|
session.messageQueue = [];
|
|
12983
13063
|
session.interruptRequested = false;
|
|
13064
|
+
session.selfKick = false;
|
|
12984
13065
|
if (session.abortController) {
|
|
12985
13066
|
session.abortController.abort(abortReason("stop"));
|
|
12986
13067
|
session.abortController = null;
|
|
@@ -13702,6 +13783,7 @@ ${result.summary}`, agentName: "user", report: true, taskId });
|
|
|
13702
13783
|
session.abortController.abort(abortReason("delete"));
|
|
13703
13784
|
session.abortController = null;
|
|
13704
13785
|
}
|
|
13786
|
+
session.selfKick = false;
|
|
13705
13787
|
if (session.promise) {
|
|
13706
13788
|
try {
|
|
13707
13789
|
await session.promise;
|
|
@@ -13718,6 +13800,7 @@ ${result.summary}`, agentName: "user", report: true, taskId });
|
|
|
13718
13800
|
childSession.abortController.abort(abortReason("delete"));
|
|
13719
13801
|
childSession.abortController = null;
|
|
13720
13802
|
}
|
|
13803
|
+
childSession.selfKick = false;
|
|
13721
13804
|
this.sessions.delete(id);
|
|
13722
13805
|
}
|
|
13723
13806
|
}
|
|
@@ -13762,6 +13845,7 @@ ${result.summary}`, agentName: "user", report: true, taskId });
|
|
|
13762
13845
|
session.abortController.abort(abortReason("archive"));
|
|
13763
13846
|
session.abortController = null;
|
|
13764
13847
|
}
|
|
13848
|
+
session.selfKick = false;
|
|
13765
13849
|
if (session.promise) {
|
|
13766
13850
|
try {
|
|
13767
13851
|
await session.promise;
|
|
@@ -13848,8 +13932,10 @@ ${result.summary}`, agentName: "user", report: true, taskId });
|
|
|
13848
13932
|
* message), and requests a SOFT interrupt so a busy turn yields after its
|
|
13849
13933
|
* current tool — same effect as sendUserMessage's busy branch, minus the
|
|
13850
13934
|
* idle/run path (the caller already established the session is busy or
|
|
13851
|
-
* compacting). When compacting
|
|
13852
|
-
*
|
|
13935
|
+
* compacting). When compacting there is no live turn to interrupt, so the
|
|
13936
|
+
* flag is NOT set (mirrors sendUserMessage's compacting branch): endCompact's
|
|
13937
|
+
* drain would snapshot it into resumedAfterInterrupt and let continue_task
|
|
13938
|
+
* arm a kick in a turn that interrupted nothing. endCompact drains the queue. */
|
|
13853
13939
|
async enqueueUserMessage(sessionId, text6, images) {
|
|
13854
13940
|
const session = this.sessions.get(sessionId);
|
|
13855
13941
|
if (!session)
|
|
@@ -13859,7 +13945,8 @@ ${result.summary}`, agentName: "user", report: true, taskId });
|
|
|
13859
13945
|
this.emitEvent(sessionId, { type: "system", text: `\u26A0 ${w}` });
|
|
13860
13946
|
}
|
|
13861
13947
|
session.messageQueue.push({ text: scoped.text, images });
|
|
13862
|
-
session.
|
|
13948
|
+
if (!session.isCompacting)
|
|
13949
|
+
session.interruptRequested = true;
|
|
13863
13950
|
console.debug(`[SessionManager] User message enqueued for ${sessionId} (${session.messageQueue.length} in queue)`);
|
|
13864
13951
|
}
|
|
13865
13952
|
/** Hard stop — abort immediately (for explicit user stop button).
|
|
@@ -13880,6 +13967,7 @@ ${q.text}` : q.text);
|
|
|
13880
13967
|
}
|
|
13881
13968
|
session.messageQueue = [];
|
|
13882
13969
|
session.interruptRequested = false;
|
|
13970
|
+
session.selfKick = false;
|
|
13883
13971
|
if (session.abortController) {
|
|
13884
13972
|
session.abortController.abort();
|
|
13885
13973
|
session.abortController = null;
|
|
@@ -13892,11 +13980,11 @@ ${q.text}` : q.text);
|
|
|
13892
13980
|
}
|
|
13893
13981
|
});
|
|
13894
13982
|
|
|
13895
|
-
//
|
|
13983
|
+
// ../server/dist/agents/session-manager-registry.js
|
|
13896
13984
|
import fs24 from "node:fs";
|
|
13897
13985
|
var SessionManagerRegistry;
|
|
13898
13986
|
var init_session_manager_registry = __esm({
|
|
13899
|
-
"
|
|
13987
|
+
"../server/dist/agents/session-manager-registry.js"() {
|
|
13900
13988
|
"use strict";
|
|
13901
13989
|
init_session_manager();
|
|
13902
13990
|
init_init();
|
|
@@ -13951,7 +14039,7 @@ var init_session_manager_registry = __esm({
|
|
|
13951
14039
|
}
|
|
13952
14040
|
});
|
|
13953
14041
|
|
|
13954
|
-
//
|
|
14042
|
+
// ../server/dist/logger.js
|
|
13955
14043
|
import fs25 from "node:fs";
|
|
13956
14044
|
import path31 from "node:path";
|
|
13957
14045
|
import { homedir as homedir13 } from "node:os";
|
|
@@ -14071,7 +14159,7 @@ function initLogger() {
|
|
|
14071
14159
|
}
|
|
14072
14160
|
var LOG_FILENAME, logDir, logFile, currentSize, LEVEL_ORDER, OTEL_SEVERITY;
|
|
14073
14161
|
var init_logger = __esm({
|
|
14074
|
-
"
|
|
14162
|
+
"../server/dist/logger.js"() {
|
|
14075
14163
|
"use strict";
|
|
14076
14164
|
init_config();
|
|
14077
14165
|
init_otel();
|
|
@@ -14089,7 +14177,7 @@ var init_logger = __esm({
|
|
|
14089
14177
|
}
|
|
14090
14178
|
});
|
|
14091
14179
|
|
|
14092
|
-
//
|
|
14180
|
+
// src/harness.ts
|
|
14093
14181
|
var harness_exports = {};
|
|
14094
14182
|
__export(harness_exports, {
|
|
14095
14183
|
createHarness: () => createHarness,
|
|
@@ -14330,7 +14418,7 @@ async function createHarness(opts) {
|
|
|
14330
14418
|
}
|
|
14331
14419
|
var SESSION_PREFIX, USER_ID;
|
|
14332
14420
|
var init_harness = __esm({
|
|
14333
|
-
"
|
|
14421
|
+
"src/harness.ts"() {
|
|
14334
14422
|
"use strict";
|
|
14335
14423
|
init_session_manager();
|
|
14336
14424
|
init_session_manager_registry();
|
|
@@ -14347,7 +14435,7 @@ var init_harness = __esm({
|
|
|
14347
14435
|
}
|
|
14348
14436
|
});
|
|
14349
14437
|
|
|
14350
|
-
//
|
|
14438
|
+
// ../server/dist/middleware/password-hash.js
|
|
14351
14439
|
var password_hash_exports = {};
|
|
14352
14440
|
__export(password_hash_exports, {
|
|
14353
14441
|
generateJwtSecret: () => generateJwtSecret,
|
|
@@ -14397,7 +14485,7 @@ function generateJwtSecret() {
|
|
|
14397
14485
|
}
|
|
14398
14486
|
var scryptAsync, COST, KEY_LEN;
|
|
14399
14487
|
var init_password_hash = __esm({
|
|
14400
|
-
"
|
|
14488
|
+
"../server/dist/middleware/password-hash.js"() {
|
|
14401
14489
|
"use strict";
|
|
14402
14490
|
scryptAsync = promisify2(crypto2.scrypt);
|
|
14403
14491
|
COST = { N: 16384, r: 8, p: 1 };
|
|
@@ -14405,7 +14493,7 @@ var init_password_hash = __esm({
|
|
|
14405
14493
|
}
|
|
14406
14494
|
});
|
|
14407
14495
|
|
|
14408
|
-
//
|
|
14496
|
+
// ../server/dist/setup-config.js
|
|
14409
14497
|
var setup_config_exports = {};
|
|
14410
14498
|
__export(setup_config_exports, {
|
|
14411
14499
|
configLeafSet: () => configLeafSet,
|
|
@@ -14446,13 +14534,13 @@ function configLeafSet(dotPath) {
|
|
|
14446
14534
|
}
|
|
14447
14535
|
var CONFIG_PATH;
|
|
14448
14536
|
var init_setup_config = __esm({
|
|
14449
|
-
"
|
|
14537
|
+
"../server/dist/setup-config.js"() {
|
|
14450
14538
|
"use strict";
|
|
14451
14539
|
CONFIG_PATH = path33.join(homedir14(), ".halo", "secrets", "config.yaml");
|
|
14452
14540
|
}
|
|
14453
14541
|
});
|
|
14454
14542
|
|
|
14455
|
-
//
|
|
14543
|
+
// ../server/dist/setup-settings.js
|
|
14456
14544
|
var setup_settings_exports = {};
|
|
14457
14545
|
__export(setup_settings_exports, {
|
|
14458
14546
|
maskSecret: () => maskSecret,
|
|
@@ -14531,13 +14619,13 @@ function maskSecret(value) {
|
|
|
14531
14619
|
}
|
|
14532
14620
|
var SETTINGS_PATH2;
|
|
14533
14621
|
var init_setup_settings = __esm({
|
|
14534
|
-
"
|
|
14622
|
+
"../server/dist/setup-settings.js"() {
|
|
14535
14623
|
"use strict";
|
|
14536
14624
|
SETTINGS_PATH2 = path34.join(homedir15(), ".halo", "secrets", "settings.yaml");
|
|
14537
14625
|
}
|
|
14538
14626
|
});
|
|
14539
14627
|
|
|
14540
|
-
//
|
|
14628
|
+
// ../server/dist/setup-providers.js
|
|
14541
14629
|
var setup_providers_exports = {};
|
|
14542
14630
|
__export(setup_providers_exports, {
|
|
14543
14631
|
AWS_CREDENTIAL_CHAIN_PROVIDER: () => AWS_CREDENTIAL_CHAIN_PROVIDER,
|
|
@@ -14743,7 +14831,7 @@ function listRequiredSkillsWithSecrets() {
|
|
|
14743
14831
|
}
|
|
14744
14832
|
var AWS_CREDENTIAL_CHAIN_PROVIDER, REBIND_BUILTIN_AGENT_IDS, GLOBAL_AGENTS_DIR3;
|
|
14745
14833
|
var init_setup_providers = __esm({
|
|
14746
|
-
"
|
|
14834
|
+
"../server/dist/setup-providers.js"() {
|
|
14747
14835
|
"use strict";
|
|
14748
14836
|
init_init();
|
|
14749
14837
|
init_setup_settings();
|
|
@@ -14753,7 +14841,7 @@ var init_setup_providers = __esm({
|
|
|
14753
14841
|
}
|
|
14754
14842
|
});
|
|
14755
14843
|
|
|
14756
|
-
//
|
|
14844
|
+
// src/setup-bind-provider.ts
|
|
14757
14845
|
var setup_bind_provider_exports = {};
|
|
14758
14846
|
__export(setup_bind_provider_exports, {
|
|
14759
14847
|
AWS_CHAIN_PROVIDER: () => AWS_CHAIN_PROVIDER,
|
|
@@ -14793,14 +14881,14 @@ function buildBindProviderPlan(configured, currentProvider, currentProviderHasKe
|
|
|
14793
14881
|
}
|
|
14794
14882
|
var AWS_CHAIN_PROVIDER, KEEP_CURRENT;
|
|
14795
14883
|
var init_setup_bind_provider = __esm({
|
|
14796
|
-
"
|
|
14884
|
+
"src/setup-bind-provider.ts"() {
|
|
14797
14885
|
"use strict";
|
|
14798
14886
|
AWS_CHAIN_PROVIDER = "aws-bedrock-claude-invoke";
|
|
14799
14887
|
KEEP_CURRENT = "__keep__";
|
|
14800
14888
|
}
|
|
14801
14889
|
});
|
|
14802
14890
|
|
|
14803
|
-
//
|
|
14891
|
+
// src/setup-prompts.ts
|
|
14804
14892
|
var setup_prompts_exports = {};
|
|
14805
14893
|
__export(setup_prompts_exports, {
|
|
14806
14894
|
promptMultiSelect: () => promptMultiSelect,
|
|
@@ -15086,12 +15174,12 @@ function promptMultiSelectRich(question, options) {
|
|
|
15086
15174
|
});
|
|
15087
15175
|
}
|
|
15088
15176
|
var init_setup_prompts = __esm({
|
|
15089
|
-
"
|
|
15177
|
+
"src/setup-prompts.ts"() {
|
|
15090
15178
|
"use strict";
|
|
15091
15179
|
}
|
|
15092
15180
|
});
|
|
15093
15181
|
|
|
15094
|
-
//
|
|
15182
|
+
// src/upgrade-verify.ts
|
|
15095
15183
|
var upgrade_verify_exports = {};
|
|
15096
15184
|
__export(upgrade_verify_exports, {
|
|
15097
15185
|
ALLOW_SCRIPTS: () => ALLOW_SCRIPTS,
|
|
@@ -15116,7 +15204,7 @@ function verifyNativeModules(pkgRoot) {
|
|
|
15116
15204
|
}
|
|
15117
15205
|
var NATIVE_MODULE_SMOKES, ALLOW_SCRIPTS;
|
|
15118
15206
|
var init_upgrade_verify = __esm({
|
|
15119
|
-
"
|
|
15207
|
+
"src/upgrade-verify.ts"() {
|
|
15120
15208
|
"use strict";
|
|
15121
15209
|
NATIVE_MODULE_SMOKES = [
|
|
15122
15210
|
{ name: "better-sqlite3", smoke: "new (require(process.argv[1]))(':memory:')" },
|
|
@@ -15126,7 +15214,7 @@ var init_upgrade_verify = __esm({
|
|
|
15126
15214
|
}
|
|
15127
15215
|
});
|
|
15128
15216
|
|
|
15129
|
-
//
|
|
15217
|
+
// src/render-md.ts
|
|
15130
15218
|
import { marked } from "marked";
|
|
15131
15219
|
import { markedTerminal } from "marked-terminal";
|
|
15132
15220
|
function renderMarkdown(text6) {
|
|
@@ -15134,14 +15222,14 @@ function renderMarkdown(text6) {
|
|
|
15134
15222
|
return rendered.replace(/\n{3,}/g, "\n\n").trimEnd();
|
|
15135
15223
|
}
|
|
15136
15224
|
var init_render_md = __esm({
|
|
15137
|
-
"
|
|
15225
|
+
"src/render-md.ts"() {
|
|
15138
15226
|
"use strict";
|
|
15139
15227
|
marked.use(markedTerminal({ reflowText: true, width: Math.min(process.stdout.columns || 80, 120) }));
|
|
15140
15228
|
marked.use({ breaks: true });
|
|
15141
15229
|
}
|
|
15142
15230
|
});
|
|
15143
15231
|
|
|
15144
|
-
//
|
|
15232
|
+
// src/resolve-refs.ts
|
|
15145
15233
|
import fs31 from "node:fs";
|
|
15146
15234
|
import path37 from "node:path";
|
|
15147
15235
|
function resolveRefs(input, workspace) {
|
|
@@ -15220,7 +15308,7 @@ ${content}
|
|
|
15220
15308
|
}
|
|
15221
15309
|
var MAX_FILE_BYTES, MAX_IMAGE_BYTES, REF_PATTERN;
|
|
15222
15310
|
var init_resolve_refs = __esm({
|
|
15223
|
-
"
|
|
15311
|
+
"src/resolve-refs.ts"() {
|
|
15224
15312
|
"use strict";
|
|
15225
15313
|
init_dist();
|
|
15226
15314
|
MAX_FILE_BYTES = 100 * 1024;
|
|
@@ -15229,7 +15317,7 @@ var init_resolve_refs = __esm({
|
|
|
15229
15317
|
}
|
|
15230
15318
|
});
|
|
15231
15319
|
|
|
15232
|
-
//
|
|
15320
|
+
// src/format-usage.ts
|
|
15233
15321
|
function fmtK(n) {
|
|
15234
15322
|
return `${(n / 1e3).toFixed(1)}K`;
|
|
15235
15323
|
}
|
|
@@ -15273,7 +15361,7 @@ function formatUsageLine(event) {
|
|
|
15273
15361
|
}
|
|
15274
15362
|
var ANSI;
|
|
15275
15363
|
var init_format_usage = __esm({
|
|
15276
|
-
"
|
|
15364
|
+
"src/format-usage.ts"() {
|
|
15277
15365
|
"use strict";
|
|
15278
15366
|
ANSI = {
|
|
15279
15367
|
reset: "\x1B[0m",
|
|
@@ -15287,7 +15375,7 @@ var init_format_usage = __esm({
|
|
|
15287
15375
|
}
|
|
15288
15376
|
});
|
|
15289
15377
|
|
|
15290
|
-
//
|
|
15378
|
+
// src/tui/components/banner.tsx
|
|
15291
15379
|
import { Box, Text } from "ink";
|
|
15292
15380
|
import { jsx } from "react/jsx-runtime";
|
|
15293
15381
|
function Banner() {
|
|
@@ -15295,7 +15383,7 @@ function Banner() {
|
|
|
15295
15383
|
}
|
|
15296
15384
|
var LINES, COLORS;
|
|
15297
15385
|
var init_banner = __esm({
|
|
15298
|
-
"
|
|
15386
|
+
"src/tui/components/banner.tsx"() {
|
|
15299
15387
|
"use strict";
|
|
15300
15388
|
LINES = [
|
|
15301
15389
|
" \u2588\u2588\u2557 \u2588\u2588\u2557 \u2588\u2588\u2588\u2588\u2588\u2557 \u2588\u2588\u2557 \u2588\u2588\u2588\u2588\u2588\u2588\u2557 ",
|
|
@@ -15309,7 +15397,7 @@ var init_banner = __esm({
|
|
|
15309
15397
|
}
|
|
15310
15398
|
});
|
|
15311
15399
|
|
|
15312
|
-
//
|
|
15400
|
+
// src/tui/components/messages.tsx
|
|
15313
15401
|
import { Box as Box2, Static, Text as Text2 } from "ink";
|
|
15314
15402
|
import { jsx as jsx2, jsxs } from "react/jsx-runtime";
|
|
15315
15403
|
function Messages({ blocks }) {
|
|
@@ -15367,7 +15455,7 @@ function Block({ block }) {
|
|
|
15367
15455
|
}
|
|
15368
15456
|
var BANNER_ID;
|
|
15369
15457
|
var init_messages = __esm({
|
|
15370
|
-
"
|
|
15458
|
+
"src/tui/components/messages.tsx"() {
|
|
15371
15459
|
"use strict";
|
|
15372
15460
|
init_format_usage();
|
|
15373
15461
|
init_banner();
|
|
@@ -15375,7 +15463,7 @@ var init_messages = __esm({
|
|
|
15375
15463
|
}
|
|
15376
15464
|
});
|
|
15377
15465
|
|
|
15378
|
-
//
|
|
15466
|
+
// src/tui/terminal-text.ts
|
|
15379
15467
|
function sanitizeToolOutput(s) {
|
|
15380
15468
|
return s.replace(ESCAPE_SEQ_RE, "").replace(/\r\n?/g, "\n").replace(/\t/g, " ").replace(C0_RE, "");
|
|
15381
15469
|
}
|
|
@@ -15405,14 +15493,14 @@ function tailByRows(text6, cols, maxRows) {
|
|
|
15405
15493
|
}
|
|
15406
15494
|
var ESCAPE_SEQ_RE, C0_RE;
|
|
15407
15495
|
var init_terminal_text = __esm({
|
|
15408
|
-
"
|
|
15496
|
+
"src/tui/terminal-text.ts"() {
|
|
15409
15497
|
"use strict";
|
|
15410
15498
|
ESCAPE_SEQ_RE = /\x1b\][^\x07\n]*\x07|\x1b\[[0-9;?]*[ -/]*[@-~]|\x1b[@-Z\\-_]/g;
|
|
15411
15499
|
C0_RE = /[\x00-\x09\x0b-\x1f\x7f]/g;
|
|
15412
15500
|
}
|
|
15413
15501
|
});
|
|
15414
15502
|
|
|
15415
|
-
//
|
|
15503
|
+
// src/tui/components/streaming.tsx
|
|
15416
15504
|
import { useEffect, useState } from "react";
|
|
15417
15505
|
import { Box as Box3, Text as Text3, useStdout } from "ink";
|
|
15418
15506
|
import Spinner from "ink-spinner";
|
|
@@ -15465,13 +15553,13 @@ function Streaming({ spinnerLabel, liveText, liveThinking, activeSubs, turnStart
|
|
|
15465
15553
|
] });
|
|
15466
15554
|
}
|
|
15467
15555
|
var init_streaming = __esm({
|
|
15468
|
-
"
|
|
15556
|
+
"src/tui/components/streaming.tsx"() {
|
|
15469
15557
|
"use strict";
|
|
15470
15558
|
init_terminal_text();
|
|
15471
15559
|
}
|
|
15472
15560
|
});
|
|
15473
15561
|
|
|
15474
|
-
//
|
|
15562
|
+
// src/tui/history.ts
|
|
15475
15563
|
import fs32 from "node:fs";
|
|
15476
15564
|
import path38 from "node:path";
|
|
15477
15565
|
import os2 from "node:os";
|
|
@@ -15497,14 +15585,14 @@ function appendHistory(entry) {
|
|
|
15497
15585
|
}
|
|
15498
15586
|
var HISTORY_FILE, MAX_ENTRIES;
|
|
15499
15587
|
var init_history = __esm({
|
|
15500
|
-
"
|
|
15588
|
+
"src/tui/history.ts"() {
|
|
15501
15589
|
"use strict";
|
|
15502
15590
|
HISTORY_FILE = path38.join(os2.homedir(), ".halo", "global", "tui-history.json");
|
|
15503
15591
|
MAX_ENTRIES = 100;
|
|
15504
15592
|
}
|
|
15505
15593
|
});
|
|
15506
15594
|
|
|
15507
|
-
//
|
|
15595
|
+
// src/tui/components/status-bar.tsx
|
|
15508
15596
|
import { Box as Box4, Text as Text4 } from "ink";
|
|
15509
15597
|
import { Fragment, jsx as jsx4, jsxs as jsxs3 } from "react/jsx-runtime";
|
|
15510
15598
|
function shortModel(modelId) {
|
|
@@ -15540,12 +15628,12 @@ function StatusBar({ agentName, modelId, contextPercent, workspace, sessionId, v
|
|
|
15540
15628
|
] });
|
|
15541
15629
|
}
|
|
15542
15630
|
var init_status_bar = __esm({
|
|
15543
|
-
"
|
|
15631
|
+
"src/tui/components/status-bar.tsx"() {
|
|
15544
15632
|
"use strict";
|
|
15545
15633
|
}
|
|
15546
15634
|
});
|
|
15547
15635
|
|
|
15548
|
-
//
|
|
15636
|
+
// src/tui/components/slash-suggest.tsx
|
|
15549
15637
|
import { Box as Box5, Text as Text5 } from "ink";
|
|
15550
15638
|
import { jsx as jsx5, jsxs as jsxs4 } from "react/jsx-runtime";
|
|
15551
15639
|
function SlashSuggest({ items, selectedIdx, maxWidth = 80 }) {
|
|
@@ -15572,12 +15660,12 @@ function SlashSuggest({ items, selectedIdx, maxWidth = 80 }) {
|
|
|
15572
15660
|
] });
|
|
15573
15661
|
}
|
|
15574
15662
|
var init_slash_suggest = __esm({
|
|
15575
|
-
"
|
|
15663
|
+
"src/tui/components/slash-suggest.tsx"() {
|
|
15576
15664
|
"use strict";
|
|
15577
15665
|
}
|
|
15578
15666
|
});
|
|
15579
15667
|
|
|
15580
|
-
//
|
|
15668
|
+
// src/tui/components/path-suggest.tsx
|
|
15581
15669
|
import { Box as Box6, Text as Text6 } from "ink";
|
|
15582
15670
|
import { jsx as jsx6, jsxs as jsxs5 } from "react/jsx-runtime";
|
|
15583
15671
|
function PathSuggest({ items, selectedIdx, cwdLabel }) {
|
|
@@ -15604,12 +15692,12 @@ function PathSuggest({ items, selectedIdx, cwdLabel }) {
|
|
|
15604
15692
|
] });
|
|
15605
15693
|
}
|
|
15606
15694
|
var init_path_suggest = __esm({
|
|
15607
|
-
"
|
|
15695
|
+
"src/tui/components/path-suggest.tsx"() {
|
|
15608
15696
|
"use strict";
|
|
15609
15697
|
}
|
|
15610
15698
|
});
|
|
15611
15699
|
|
|
15612
|
-
//
|
|
15700
|
+
// src/tui/path-suggest-engine.ts
|
|
15613
15701
|
import fs33 from "node:fs";
|
|
15614
15702
|
import path39 from "node:path";
|
|
15615
15703
|
function detectActiveRef(value) {
|
|
@@ -15695,13 +15783,13 @@ function applyPathPick(value, ref, pick) {
|
|
|
15695
15783
|
return `${before}@${kind} ${path70}`;
|
|
15696
15784
|
}
|
|
15697
15785
|
var init_path_suggest_engine = __esm({
|
|
15698
|
-
"
|
|
15786
|
+
"src/tui/path-suggest-engine.ts"() {
|
|
15699
15787
|
"use strict";
|
|
15700
15788
|
init_dist();
|
|
15701
15789
|
}
|
|
15702
15790
|
});
|
|
15703
15791
|
|
|
15704
|
-
//
|
|
15792
|
+
// src/tui/line-editor.ts
|
|
15705
15793
|
function toGraphemes(s) {
|
|
15706
15794
|
if (s === "") return [];
|
|
15707
15795
|
return [...segmenter.segment(s)].map((seg) => seg.segment);
|
|
@@ -15755,13 +15843,13 @@ function deleteToEnd(e) {
|
|
|
15755
15843
|
}
|
|
15756
15844
|
var segmenter;
|
|
15757
15845
|
var init_line_editor = __esm({
|
|
15758
|
-
"
|
|
15846
|
+
"src/tui/line-editor.ts"() {
|
|
15759
15847
|
"use strict";
|
|
15760
15848
|
segmenter = new Intl.Segmenter();
|
|
15761
15849
|
}
|
|
15762
15850
|
});
|
|
15763
15851
|
|
|
15764
|
-
//
|
|
15852
|
+
// src/tui/components/text-input.tsx
|
|
15765
15853
|
import { Text as Text7 } from "ink";
|
|
15766
15854
|
import { jsx as jsx7, jsxs as jsxs6 } from "react/jsx-runtime";
|
|
15767
15855
|
function TextInputView({ value, cursor, placeholder }) {
|
|
@@ -15786,13 +15874,13 @@ function TextInputView({ value, cursor, placeholder }) {
|
|
|
15786
15874
|
] });
|
|
15787
15875
|
}
|
|
15788
15876
|
var init_text_input = __esm({
|
|
15789
|
-
"
|
|
15877
|
+
"src/tui/components/text-input.tsx"() {
|
|
15790
15878
|
"use strict";
|
|
15791
15879
|
init_line_editor();
|
|
15792
15880
|
}
|
|
15793
15881
|
});
|
|
15794
15882
|
|
|
15795
|
-
//
|
|
15883
|
+
// src/tui/components/input-box.tsx
|
|
15796
15884
|
import { useState as useState2, useEffect as useEffect2, useMemo, useRef } from "react";
|
|
15797
15885
|
import { Box as Box7, Text as Text8, useInput, usePaste } from "ink";
|
|
15798
15886
|
import { jsx as jsx8, jsxs as jsxs7 } from "react/jsx-runtime";
|
|
@@ -16043,7 +16131,7 @@ function InputBox({ enabled: enabled2, placeholder, history, onSubmit, hint, com
|
|
|
16043
16131
|
] });
|
|
16044
16132
|
}
|
|
16045
16133
|
var init_input_box = __esm({
|
|
16046
|
-
"
|
|
16134
|
+
"src/tui/components/input-box.tsx"() {
|
|
16047
16135
|
"use strict";
|
|
16048
16136
|
init_slash_suggest();
|
|
16049
16137
|
init_path_suggest();
|
|
@@ -16053,7 +16141,7 @@ var init_input_box = __esm({
|
|
|
16053
16141
|
}
|
|
16054
16142
|
});
|
|
16055
16143
|
|
|
16056
|
-
//
|
|
16144
|
+
// src/tui/components/log-navigator.tsx
|
|
16057
16145
|
import { useState as useState3, useMemo as useMemo2, useEffect as useEffect3 } from "react";
|
|
16058
16146
|
import { Box as Box8, Text as Text9, useInput as useInput2 } from "ink";
|
|
16059
16147
|
import { jsx as jsx9, jsxs as jsxs8 } from "react/jsx-runtime";
|
|
@@ -16132,12 +16220,12 @@ function LogNavigator({ tree, onPick, onCancel }) {
|
|
|
16132
16220
|
] });
|
|
16133
16221
|
}
|
|
16134
16222
|
var init_log_navigator = __esm({
|
|
16135
|
-
"
|
|
16223
|
+
"src/tui/components/log-navigator.tsx"() {
|
|
16136
16224
|
"use strict";
|
|
16137
16225
|
}
|
|
16138
16226
|
});
|
|
16139
16227
|
|
|
16140
|
-
//
|
|
16228
|
+
// src/tui/components/log-viewer.tsx
|
|
16141
16229
|
import { useState as useState4, useMemo as useMemo3, useEffect as useEffect4, useRef as useRef2 } from "react";
|
|
16142
16230
|
import { Box as Box9, Text as Text10, useInput as useInput3, useStdout as useStdout2 } from "ink";
|
|
16143
16231
|
import { jsx as jsx10, jsxs as jsxs9 } from "react/jsx-runtime";
|
|
@@ -16210,12 +16298,12 @@ function LogViewer({ title, lines, live, onClose }) {
|
|
|
16210
16298
|
] });
|
|
16211
16299
|
}
|
|
16212
16300
|
var init_log_viewer = __esm({
|
|
16213
|
-
"
|
|
16301
|
+
"src/tui/components/log-viewer.tsx"() {
|
|
16214
16302
|
"use strict";
|
|
16215
16303
|
}
|
|
16216
16304
|
});
|
|
16217
16305
|
|
|
16218
|
-
//
|
|
16306
|
+
// src/tui/app.tsx
|
|
16219
16307
|
import { useEffect as useEffect5, useMemo as useMemo4, useReducer, useState as useState5, useRef as useRef3 } from "react";
|
|
16220
16308
|
import { Box as Box10, useApp, useInput as useInput4 } from "ink";
|
|
16221
16309
|
import { jsx as jsx11, jsxs as jsxs10 } from "react/jsx-runtime";
|
|
@@ -16925,7 +17013,7 @@ ${lines.join("\n")}` });
|
|
|
16925
17013
|
}
|
|
16926
17014
|
var MAX_CONTEXT_TOKENS_FALLBACK, blockSeq, ANSI2;
|
|
16927
17015
|
var init_app = __esm({
|
|
16928
|
-
"
|
|
17016
|
+
"src/tui/app.tsx"() {
|
|
16929
17017
|
"use strict";
|
|
16930
17018
|
init_render_md();
|
|
16931
17019
|
init_resolve_refs();
|
|
@@ -16953,7 +17041,7 @@ var init_app = __esm({
|
|
|
16953
17041
|
}
|
|
16954
17042
|
});
|
|
16955
17043
|
|
|
16956
|
-
//
|
|
17044
|
+
// src/tui.tsx
|
|
16957
17045
|
var tui_exports = {};
|
|
16958
17046
|
__export(tui_exports, {
|
|
16959
17047
|
runTui: () => runTui
|
|
@@ -16968,13 +17056,13 @@ async function runTui(harness, opts = {}) {
|
|
|
16968
17056
|
await instance.waitUntilExit();
|
|
16969
17057
|
}
|
|
16970
17058
|
var init_tui = __esm({
|
|
16971
|
-
"
|
|
17059
|
+
"src/tui.tsx"() {
|
|
16972
17060
|
"use strict";
|
|
16973
17061
|
init_app();
|
|
16974
17062
|
}
|
|
16975
17063
|
});
|
|
16976
17064
|
|
|
16977
|
-
//
|
|
17065
|
+
// src/cli.ts
|
|
16978
17066
|
var cli_exports = {};
|
|
16979
17067
|
__export(cli_exports, {
|
|
16980
17068
|
runCli: () => runCli
|
|
@@ -17158,7 +17246,7 @@ ${tag}${formatUsageLine(event)}
|
|
|
17158
17246
|
return errorText ? 1 : 0;
|
|
17159
17247
|
}
|
|
17160
17248
|
var init_cli = __esm({
|
|
17161
|
-
"
|
|
17249
|
+
"src/cli.ts"() {
|
|
17162
17250
|
"use strict";
|
|
17163
17251
|
init_render_md();
|
|
17164
17252
|
init_resolve_refs();
|
|
@@ -17166,7 +17254,7 @@ var init_cli = __esm({
|
|
|
17166
17254
|
}
|
|
17167
17255
|
});
|
|
17168
17256
|
|
|
17169
|
-
//
|
|
17257
|
+
// ../server/dist/channels/shared/media.js
|
|
17170
17258
|
import path40 from "node:path";
|
|
17171
17259
|
import os3 from "node:os";
|
|
17172
17260
|
function tempDir() {
|
|
@@ -17207,7 +17295,7 @@ function classifyMedia(filePath) {
|
|
|
17207
17295
|
}
|
|
17208
17296
|
var MEDIA_MARKER_RE, VIDEO_EXTS, VOICE_EXTS;
|
|
17209
17297
|
var init_media = __esm({
|
|
17210
|
-
"
|
|
17298
|
+
"../server/dist/channels/shared/media.js"() {
|
|
17211
17299
|
"use strict";
|
|
17212
17300
|
init_dist();
|
|
17213
17301
|
MEDIA_MARKER_RE = /^MEDIA:\s*(\S.*?)\s*$/gm;
|
|
@@ -17216,7 +17304,7 @@ var init_media = __esm({
|
|
|
17216
17304
|
}
|
|
17217
17305
|
});
|
|
17218
17306
|
|
|
17219
|
-
//
|
|
17307
|
+
// ../server/dist/routes/workspace-path.js
|
|
17220
17308
|
import fs34 from "node:fs/promises";
|
|
17221
17309
|
import { existsSync as existsSync2, realpathSync as realpathSync3 } from "node:fs";
|
|
17222
17310
|
import path41 from "node:path";
|
|
@@ -17260,12 +17348,12 @@ function isSafeIdSegment(id) {
|
|
|
17260
17348
|
return /^[\w.:>\u4e00-\u9fff-]+$/.test(id);
|
|
17261
17349
|
}
|
|
17262
17350
|
var init_workspace_path = __esm({
|
|
17263
|
-
"
|
|
17351
|
+
"../server/dist/routes/workspace-path.js"() {
|
|
17264
17352
|
"use strict";
|
|
17265
17353
|
}
|
|
17266
17354
|
});
|
|
17267
17355
|
|
|
17268
|
-
//
|
|
17356
|
+
// ../server/dist/routes/files.js
|
|
17269
17357
|
import { Hono } from "hono";
|
|
17270
17358
|
import fs35 from "node:fs/promises";
|
|
17271
17359
|
import { createReadStream } from "node:fs";
|
|
@@ -17805,7 +17893,7 @@ function createFileRoutes() {
|
|
|
17805
17893
|
return app2;
|
|
17806
17894
|
}
|
|
17807
17895
|
var init_files = __esm({
|
|
17808
|
-
"
|
|
17896
|
+
"../server/dist/routes/files.js"() {
|
|
17809
17897
|
"use strict";
|
|
17810
17898
|
init_dist();
|
|
17811
17899
|
init_media();
|
|
@@ -17813,7 +17901,7 @@ var init_files = __esm({
|
|
|
17813
17901
|
}
|
|
17814
17902
|
});
|
|
17815
17903
|
|
|
17816
|
-
//
|
|
17904
|
+
// ../server/dist/routes/data-preview.js
|
|
17817
17905
|
import { Hono as Hono2 } from "hono";
|
|
17818
17906
|
import fs36 from "node:fs/promises";
|
|
17819
17907
|
import { createReadStream as createReadStream2 } from "node:fs";
|
|
@@ -18038,7 +18126,7 @@ function createDataPreviewRoutes() {
|
|
|
18038
18126
|
}
|
|
18039
18127
|
var DEFAULT_LIMIT, MAX_LIMIT, MAX_ROW_CHARS, QUOTE, CR, LF, COMMA, SEMI, TAB, CsvScanner;
|
|
18040
18128
|
var init_data_preview = __esm({
|
|
18041
|
-
"
|
|
18129
|
+
"../server/dist/routes/data-preview.js"() {
|
|
18042
18130
|
"use strict";
|
|
18043
18131
|
init_workspace_path();
|
|
18044
18132
|
DEFAULT_LIMIT = 100;
|
|
@@ -18139,7 +18227,7 @@ var init_data_preview = __esm({
|
|
|
18139
18227
|
}
|
|
18140
18228
|
});
|
|
18141
18229
|
|
|
18142
|
-
//
|
|
18230
|
+
// ../server/dist/git-credentials.js
|
|
18143
18231
|
import fs37 from "node:fs";
|
|
18144
18232
|
import path44 from "node:path";
|
|
18145
18233
|
import { homedir as homedir18 } from "node:os";
|
|
@@ -18205,13 +18293,13 @@ function deleteGitCredential(host) {
|
|
|
18205
18293
|
}
|
|
18206
18294
|
var GIT_CREDENTIALS_PATH;
|
|
18207
18295
|
var init_git_credentials = __esm({
|
|
18208
|
-
"
|
|
18296
|
+
"../server/dist/git-credentials.js"() {
|
|
18209
18297
|
"use strict";
|
|
18210
18298
|
GIT_CREDENTIALS_PATH = path44.join(homedir18(), ".git-credentials");
|
|
18211
18299
|
}
|
|
18212
18300
|
});
|
|
18213
18301
|
|
|
18214
|
-
//
|
|
18302
|
+
// ../server/dist/git-ssh.js
|
|
18215
18303
|
import fs38 from "node:fs";
|
|
18216
18304
|
import os4 from "node:os";
|
|
18217
18305
|
import path45 from "node:path";
|
|
@@ -18388,7 +18476,7 @@ function getRemoteProtocol(projectRoot) {
|
|
|
18388
18476
|
}
|
|
18389
18477
|
var SSH_DIR, NON_KEY_NAMES, ownedAgentPid, ASKPASS_SCRIPT;
|
|
18390
18478
|
var init_git_ssh = __esm({
|
|
18391
|
-
"
|
|
18479
|
+
"../server/dist/git-ssh.js"() {
|
|
18392
18480
|
"use strict";
|
|
18393
18481
|
SSH_DIR = path45.join(os4.homedir(), ".ssh");
|
|
18394
18482
|
NON_KEY_NAMES = /* @__PURE__ */ new Set(["known_hosts", "known_hosts2", "authorized_keys", "config"]);
|
|
@@ -18401,7 +18489,7 @@ printf '%s\\n' "$HALO_SSH_PASSPHRASE"
|
|
|
18401
18489
|
}
|
|
18402
18490
|
});
|
|
18403
18491
|
|
|
18404
|
-
//
|
|
18492
|
+
// ../server/dist/routes/git.js
|
|
18405
18493
|
import { Hono as Hono3 } from "hono";
|
|
18406
18494
|
import os5 from "node:os";
|
|
18407
18495
|
import path46 from "node:path";
|
|
@@ -18767,7 +18855,7 @@ function createGitRoutes() {
|
|
|
18767
18855
|
return app2;
|
|
18768
18856
|
}
|
|
18769
18857
|
var init_git = __esm({
|
|
18770
|
-
"
|
|
18858
|
+
"../server/dist/routes/git.js"() {
|
|
18771
18859
|
"use strict";
|
|
18772
18860
|
init_dist();
|
|
18773
18861
|
init_workspace_path();
|
|
@@ -18777,7 +18865,7 @@ var init_git = __esm({
|
|
|
18777
18865
|
}
|
|
18778
18866
|
});
|
|
18779
18867
|
|
|
18780
|
-
//
|
|
18868
|
+
// ../server/dist/routes/mtime-cache.js
|
|
18781
18869
|
function createMtimeCache() {
|
|
18782
18870
|
const entries = /* @__PURE__ */ new Map();
|
|
18783
18871
|
return {
|
|
@@ -18792,12 +18880,12 @@ function createMtimeCache() {
|
|
|
18792
18880
|
};
|
|
18793
18881
|
}
|
|
18794
18882
|
var init_mtime_cache = __esm({
|
|
18795
|
-
"
|
|
18883
|
+
"../server/dist/routes/mtime-cache.js"() {
|
|
18796
18884
|
"use strict";
|
|
18797
18885
|
}
|
|
18798
18886
|
});
|
|
18799
18887
|
|
|
18800
|
-
//
|
|
18888
|
+
// ../server/dist/routes/agent-configs.js
|
|
18801
18889
|
import { Hono as Hono4 } from "hono";
|
|
18802
18890
|
import fs39 from "node:fs/promises";
|
|
18803
18891
|
import path47 from "node:path";
|
|
@@ -19331,7 +19419,7 @@ ${body.description ?? ""}
|
|
|
19331
19419
|
}
|
|
19332
19420
|
var _cachedTools, GLOBAL_AGENTS_DIR4, FALLBACK_SCAFFOLD_PROVIDER, _yamlCache;
|
|
19333
19421
|
var init_agent_configs = __esm({
|
|
19334
|
-
"
|
|
19422
|
+
"../server/dist/routes/agent-configs.js"() {
|
|
19335
19423
|
"use strict";
|
|
19336
19424
|
init_workspace_tools();
|
|
19337
19425
|
init_draft_tool();
|
|
@@ -19348,7 +19436,7 @@ var init_agent_configs = __esm({
|
|
|
19348
19436
|
}
|
|
19349
19437
|
});
|
|
19350
19438
|
|
|
19351
|
-
//
|
|
19439
|
+
// ../server/dist/routes/skills.js
|
|
19352
19440
|
import { Hono as Hono5 } from "hono";
|
|
19353
19441
|
import fs40 from "node:fs/promises";
|
|
19354
19442
|
import path48 from "node:path";
|
|
@@ -19543,7 +19631,7 @@ function createSkillRoutes() {
|
|
|
19543
19631
|
}
|
|
19544
19632
|
var GLOBAL_SETTINGS_PATH, _skillMdCache;
|
|
19545
19633
|
var init_skills = __esm({
|
|
19546
|
-
"
|
|
19634
|
+
"../server/dist/routes/skills.js"() {
|
|
19547
19635
|
"use strict";
|
|
19548
19636
|
init_agent_loader();
|
|
19549
19637
|
init_db();
|
|
@@ -19554,7 +19642,7 @@ var init_skills = __esm({
|
|
|
19554
19642
|
}
|
|
19555
19643
|
});
|
|
19556
19644
|
|
|
19557
|
-
//
|
|
19645
|
+
// ../server/dist/routes/settings.js
|
|
19558
19646
|
import { Hono as Hono6 } from "hono";
|
|
19559
19647
|
import fs41 from "node:fs/promises";
|
|
19560
19648
|
import path49 from "node:path";
|
|
@@ -19823,7 +19911,7 @@ function createSettingsRoutes() {
|
|
|
19823
19911
|
}
|
|
19824
19912
|
var GLOBAL_SETTINGS_PATH2, _changeListeners;
|
|
19825
19913
|
var init_settings = __esm({
|
|
19826
|
-
"
|
|
19914
|
+
"../server/dist/routes/settings.js"() {
|
|
19827
19915
|
"use strict";
|
|
19828
19916
|
init_settings_schema();
|
|
19829
19917
|
init_workspace_path();
|
|
@@ -19832,7 +19920,7 @@ var init_settings = __esm({
|
|
|
19832
19920
|
}
|
|
19833
19921
|
});
|
|
19834
19922
|
|
|
19835
|
-
//
|
|
19923
|
+
// ../server/dist/evolution/archive.js
|
|
19836
19924
|
import fs42 from "node:fs";
|
|
19837
19925
|
import path50 from "node:path";
|
|
19838
19926
|
import { pipeline } from "node:stream/promises";
|
|
@@ -19999,7 +20087,7 @@ function stopArchiveDaemon() {
|
|
|
19999
20087
|
}
|
|
20000
20088
|
var TERMINAL_RUN_STATUSES, TERMINAL_APPLY_STATUSES, DAY_MS, ARCHIVE_AFTER_MS, PURGE_AFTER_MS, _archiveTimer, _startupTimer;
|
|
20001
20089
|
var init_archive = __esm({
|
|
20002
|
-
"
|
|
20090
|
+
"../server/dist/evolution/archive.js"() {
|
|
20003
20091
|
"use strict";
|
|
20004
20092
|
init_evo_db();
|
|
20005
20093
|
init_paths();
|
|
@@ -20013,7 +20101,7 @@ var init_archive = __esm({
|
|
|
20013
20101
|
}
|
|
20014
20102
|
});
|
|
20015
20103
|
|
|
20016
|
-
//
|
|
20104
|
+
// ../server/dist/db/raw-sqlite.js
|
|
20017
20105
|
function rawSqlite(db) {
|
|
20018
20106
|
const withClient = db;
|
|
20019
20107
|
const client = withClient.$client ?? withClient.session?.client;
|
|
@@ -20022,12 +20110,12 @@ function rawSqlite(db) {
|
|
|
20022
20110
|
return client;
|
|
20023
20111
|
}
|
|
20024
20112
|
var init_raw_sqlite = __esm({
|
|
20025
|
-
"
|
|
20113
|
+
"../server/dist/db/raw-sqlite.js"() {
|
|
20026
20114
|
"use strict";
|
|
20027
20115
|
}
|
|
20028
20116
|
});
|
|
20029
20117
|
|
|
20030
|
-
//
|
|
20118
|
+
// ../server/dist/routes/evolution.js
|
|
20031
20119
|
import { Hono as Hono7 } from "hono";
|
|
20032
20120
|
import { eq as eq11, desc as desc2, lt as lt3, and as and8, or, sql } from "drizzle-orm";
|
|
20033
20121
|
import fs43 from "node:fs/promises";
|
|
@@ -20285,7 +20373,7 @@ function extractText(content) {
|
|
|
20285
20373
|
}
|
|
20286
20374
|
var UNDELETABLE_RUN_STATUSES;
|
|
20287
20375
|
var init_evolution = __esm({
|
|
20288
|
-
"
|
|
20376
|
+
"../server/dist/routes/evolution.js"() {
|
|
20289
20377
|
"use strict";
|
|
20290
20378
|
init_evo_db();
|
|
20291
20379
|
init_archive();
|
|
@@ -20296,7 +20384,7 @@ var init_evolution = __esm({
|
|
|
20296
20384
|
}
|
|
20297
20385
|
});
|
|
20298
20386
|
|
|
20299
|
-
//
|
|
20387
|
+
// ../server/dist/routes/sessions.js
|
|
20300
20388
|
import { Hono as Hono8 } from "hono";
|
|
20301
20389
|
import { and as and9, eq as eq12, gte as gte2, lt as lt4 } from "drizzle-orm";
|
|
20302
20390
|
function rawId() {
|
|
@@ -20551,7 +20639,7 @@ function createSessionRoutes(smRegistry) {
|
|
|
20551
20639
|
}
|
|
20552
20640
|
var msgCounter2;
|
|
20553
20641
|
var init_sessions = __esm({
|
|
20554
|
-
"
|
|
20642
|
+
"../server/dist/routes/sessions.js"() {
|
|
20555
20643
|
"use strict";
|
|
20556
20644
|
init_db();
|
|
20557
20645
|
init_schema();
|
|
@@ -20563,7 +20651,7 @@ var init_sessions = __esm({
|
|
|
20563
20651
|
}
|
|
20564
20652
|
});
|
|
20565
20653
|
|
|
20566
|
-
//
|
|
20654
|
+
// ../server/dist/routes/session-archive.js
|
|
20567
20655
|
import { Hono as Hono9 } from "hono";
|
|
20568
20656
|
function createSessionArchiveRoutes(smRegistry) {
|
|
20569
20657
|
const app2 = new Hono9();
|
|
@@ -20596,7 +20684,7 @@ function createSessionArchiveRoutes(smRegistry) {
|
|
|
20596
20684
|
return app2;
|
|
20597
20685
|
}
|
|
20598
20686
|
var init_session_archive2 = __esm({
|
|
20599
|
-
"
|
|
20687
|
+
"../server/dist/routes/session-archive.js"() {
|
|
20600
20688
|
"use strict";
|
|
20601
20689
|
init_db();
|
|
20602
20690
|
init_session_store();
|
|
@@ -20605,7 +20693,7 @@ var init_session_archive2 = __esm({
|
|
|
20605
20693
|
}
|
|
20606
20694
|
});
|
|
20607
20695
|
|
|
20608
|
-
//
|
|
20696
|
+
// ../server/dist/db/channel-db.js
|
|
20609
20697
|
import Database5 from "better-sqlite3";
|
|
20610
20698
|
import { drizzle as drizzle4 } from "drizzle-orm/better-sqlite3";
|
|
20611
20699
|
import { sqliteTable as sqliteTable4, text as text4, integer as integer4 } from "drizzle-orm/sqlite-core";
|
|
@@ -20631,7 +20719,7 @@ function getChannelDb() {
|
|
|
20631
20719
|
}
|
|
20632
20720
|
var channelAccounts, CREATE_SQL3, _channelDb;
|
|
20633
20721
|
var init_channel_db = __esm({
|
|
20634
|
-
"
|
|
20722
|
+
"../server/dist/db/channel-db.js"() {
|
|
20635
20723
|
"use strict";
|
|
20636
20724
|
init_migrate();
|
|
20637
20725
|
channelAccounts = sqliteTable4("channel_accounts", {
|
|
@@ -20665,7 +20753,7 @@ CREATE INDEX IF NOT EXISTS idx_channel_accounts_type ON channel_accounts(channel
|
|
|
20665
20753
|
}
|
|
20666
20754
|
});
|
|
20667
20755
|
|
|
20668
|
-
//
|
|
20756
|
+
// ../server/dist/channels/shared/accounts.js
|
|
20669
20757
|
import fs45 from "node:fs";
|
|
20670
20758
|
import path53 from "node:path";
|
|
20671
20759
|
import { eq as eq13, and as and10 } from "drizzle-orm";
|
|
@@ -20786,7 +20874,7 @@ function deleteAccount(db, accountId) {
|
|
|
20786
20874
|
}
|
|
20787
20875
|
var ACCOUNT_ACCESS_LEVELS, CHAT_ACCESS_LEVELS, _lastActiveChatCache, _wechatContextTokenCache;
|
|
20788
20876
|
var init_accounts = __esm({
|
|
20789
|
-
"
|
|
20877
|
+
"../server/dist/channels/shared/accounts.js"() {
|
|
20790
20878
|
"use strict";
|
|
20791
20879
|
init_channel_db();
|
|
20792
20880
|
init_init();
|
|
@@ -20797,7 +20885,7 @@ var init_accounts = __esm({
|
|
|
20797
20885
|
}
|
|
20798
20886
|
});
|
|
20799
20887
|
|
|
20800
|
-
//
|
|
20888
|
+
// ../server/dist/channels/web/accounts.js
|
|
20801
20889
|
function toWeb(a) {
|
|
20802
20890
|
const c = a.config;
|
|
20803
20891
|
return {
|
|
@@ -20860,14 +20948,14 @@ function deleteAccount2(db, accountId) {
|
|
|
20860
20948
|
}
|
|
20861
20949
|
var CH;
|
|
20862
20950
|
var init_accounts2 = __esm({
|
|
20863
|
-
"
|
|
20951
|
+
"../server/dist/channels/web/accounts.js"() {
|
|
20864
20952
|
"use strict";
|
|
20865
20953
|
init_accounts();
|
|
20866
20954
|
CH = "web";
|
|
20867
20955
|
}
|
|
20868
20956
|
});
|
|
20869
20957
|
|
|
20870
|
-
//
|
|
20958
|
+
// ../server/dist/middleware/brute-force.js
|
|
20871
20959
|
import { getConnInfo } from "@hono/node-server/conninfo";
|
|
20872
20960
|
function bucket(name) {
|
|
20873
20961
|
let b = buckets.get(name);
|
|
@@ -20918,7 +21006,7 @@ function clearFailures(bucketName, ip) {
|
|
|
20918
21006
|
}
|
|
20919
21007
|
var MAX_ATTEMPTS, LOCKOUT_MS, buckets;
|
|
20920
21008
|
var init_brute_force = __esm({
|
|
20921
|
-
"
|
|
21009
|
+
"../server/dist/middleware/brute-force.js"() {
|
|
20922
21010
|
"use strict";
|
|
20923
21011
|
init_config();
|
|
20924
21012
|
MAX_ATTEMPTS = 5;
|
|
@@ -20927,7 +21015,7 @@ var init_brute_force = __esm({
|
|
|
20927
21015
|
}
|
|
20928
21016
|
});
|
|
20929
21017
|
|
|
20930
|
-
//
|
|
21018
|
+
// ../server/dist/middleware/web-token.js
|
|
20931
21019
|
function resolveTokenAuth(c, db) {
|
|
20932
21020
|
const ip = getClientIp(c);
|
|
20933
21021
|
if (isLockedOut(TOKEN_BUCKET, ip))
|
|
@@ -20949,7 +21037,7 @@ function tokenAuthJsonError(c, reason) {
|
|
|
20949
21037
|
}
|
|
20950
21038
|
var TOKEN_BUCKET, TOKEN_AUTH_STATUS, JSON_ERROR;
|
|
20951
21039
|
var init_web_token = __esm({
|
|
20952
|
-
"
|
|
21040
|
+
"../server/dist/middleware/web-token.js"() {
|
|
20953
21041
|
"use strict";
|
|
20954
21042
|
init_accounts2();
|
|
20955
21043
|
init_brute_force();
|
|
@@ -20967,17 +21055,17 @@ var init_web_token = __esm({
|
|
|
20967
21055
|
}
|
|
20968
21056
|
});
|
|
20969
21057
|
|
|
20970
|
-
//
|
|
21058
|
+
// ../server/dist/channels/shared/session-prefix.js
|
|
20971
21059
|
function sessionPrefix(channel, userId) {
|
|
20972
21060
|
return `${channel}_${userId}_`;
|
|
20973
21061
|
}
|
|
20974
21062
|
var init_session_prefix = __esm({
|
|
20975
|
-
"
|
|
21063
|
+
"../server/dist/channels/shared/session-prefix.js"() {
|
|
20976
21064
|
"use strict";
|
|
20977
21065
|
}
|
|
20978
21066
|
});
|
|
20979
21067
|
|
|
20980
|
-
//
|
|
21068
|
+
// ../server/dist/channels/web/handler.js
|
|
20981
21069
|
function buildWebSessionPrefix(accountId) {
|
|
20982
21070
|
return sessionPrefix("web", accountId);
|
|
20983
21071
|
}
|
|
@@ -21394,7 +21482,7 @@ function createMediaBuffer() {
|
|
|
21394
21482
|
};
|
|
21395
21483
|
}
|
|
21396
21484
|
var init_handler = __esm({
|
|
21397
|
-
"
|
|
21485
|
+
"../server/dist/channels/web/handler.js"() {
|
|
21398
21486
|
"use strict";
|
|
21399
21487
|
init_ui_log_builder();
|
|
21400
21488
|
init_accounts2();
|
|
@@ -21411,7 +21499,7 @@ var init_handler = __esm({
|
|
|
21411
21499
|
}
|
|
21412
21500
|
});
|
|
21413
21501
|
|
|
21414
|
-
//
|
|
21502
|
+
// ../core/dist/protocol/session-message.js
|
|
21415
21503
|
function inferMessageType(msg) {
|
|
21416
21504
|
if (msg.type)
|
|
21417
21505
|
return msg.type;
|
|
@@ -21430,20 +21518,20 @@ function inferMessageType(msg) {
|
|
|
21430
21518
|
return "notification";
|
|
21431
21519
|
}
|
|
21432
21520
|
var init_session_message = __esm({
|
|
21433
|
-
"
|
|
21521
|
+
"../core/dist/protocol/session-message.js"() {
|
|
21434
21522
|
"use strict";
|
|
21435
21523
|
}
|
|
21436
21524
|
});
|
|
21437
21525
|
|
|
21438
|
-
//
|
|
21526
|
+
// ../core/dist/protocol/index.js
|
|
21439
21527
|
var init_protocol = __esm({
|
|
21440
|
-
"
|
|
21528
|
+
"../core/dist/protocol/index.js"() {
|
|
21441
21529
|
"use strict";
|
|
21442
21530
|
init_session_message();
|
|
21443
21531
|
}
|
|
21444
21532
|
});
|
|
21445
21533
|
|
|
21446
|
-
//
|
|
21534
|
+
// ../server/dist/sessions/session-types.js
|
|
21447
21535
|
function messageToolCalls(msg) {
|
|
21448
21536
|
if (msg.contentBlocks) {
|
|
21449
21537
|
return msg.contentBlocks.filter((b) => b.type === "tool_call").map((b) => b.toolCall);
|
|
@@ -21451,13 +21539,13 @@ function messageToolCalls(msg) {
|
|
|
21451
21539
|
return msg.toolCalls ?? [];
|
|
21452
21540
|
}
|
|
21453
21541
|
var init_session_types = __esm({
|
|
21454
|
-
"
|
|
21542
|
+
"../server/dist/sessions/session-types.js"() {
|
|
21455
21543
|
"use strict";
|
|
21456
21544
|
init_protocol();
|
|
21457
21545
|
}
|
|
21458
21546
|
});
|
|
21459
21547
|
|
|
21460
|
-
//
|
|
21548
|
+
// ../server/dist/routes/halo-city.js
|
|
21461
21549
|
import { Hono as Hono10 } from "hono";
|
|
21462
21550
|
import fs46 from "node:fs";
|
|
21463
21551
|
import path54 from "node:path";
|
|
@@ -21844,7 +21932,7 @@ function createShowRoutes(registry2) {
|
|
|
21844
21932
|
}
|
|
21845
21933
|
var SESSIONS_PER_WS, _skillCache, _metaCache, _roReaders, SESSION_LOG_MAX_MSGS, _birthCache;
|
|
21846
21934
|
var init_halo_city = __esm({
|
|
21847
|
-
"
|
|
21935
|
+
"../server/dist/routes/halo-city.js"() {
|
|
21848
21936
|
"use strict";
|
|
21849
21937
|
init_channel_db();
|
|
21850
21938
|
init_web_token();
|
|
@@ -21862,7 +21950,7 @@ var init_halo_city = __esm({
|
|
|
21862
21950
|
}
|
|
21863
21951
|
});
|
|
21864
21952
|
|
|
21865
|
-
//
|
|
21953
|
+
// ../server/dist/routes/metrics.js
|
|
21866
21954
|
import { Hono as Hono11 } from "hono";
|
|
21867
21955
|
function family(name, type, help, samples) {
|
|
21868
21956
|
const lines = [`# HELP ${name} ${help}`, `# TYPE ${name} ${type}`];
|
|
@@ -21941,7 +22029,7 @@ function createMetricsRoutes(registry2) {
|
|
|
21941
22029
|
}
|
|
21942
22030
|
var TEXT_ERROR, SESSIONS_PER_WS2;
|
|
21943
22031
|
var init_metrics = __esm({
|
|
21944
|
-
"
|
|
22032
|
+
"../server/dist/routes/metrics.js"() {
|
|
21945
22033
|
"use strict";
|
|
21946
22034
|
init_channel_db();
|
|
21947
22035
|
init_web_token();
|
|
@@ -21955,7 +22043,7 @@ var init_metrics = __esm({
|
|
|
21955
22043
|
}
|
|
21956
22044
|
});
|
|
21957
22045
|
|
|
21958
|
-
//
|
|
22046
|
+
// ../server/dist/routes/commands.js
|
|
21959
22047
|
import { Hono as Hono12 } from "hono";
|
|
21960
22048
|
function createCommandRoutes(registry2, smRegistry) {
|
|
21961
22049
|
const app2 = new Hono12();
|
|
@@ -21980,12 +22068,12 @@ function createCommandRoutes(registry2, smRegistry) {
|
|
|
21980
22068
|
return app2;
|
|
21981
22069
|
}
|
|
21982
22070
|
var init_commands3 = __esm({
|
|
21983
|
-
"
|
|
22071
|
+
"../server/dist/routes/commands.js"() {
|
|
21984
22072
|
"use strict";
|
|
21985
22073
|
}
|
|
21986
22074
|
});
|
|
21987
22075
|
|
|
21988
|
-
//
|
|
22076
|
+
// ../server/dist/routes/agentcore.js
|
|
21989
22077
|
import { Hono as Hono13 } from "hono";
|
|
21990
22078
|
import path55 from "node:path";
|
|
21991
22079
|
import fs47 from "node:fs";
|
|
@@ -22334,7 +22422,7 @@ ${fullText}`, images.length > 0 ? images : void 0);
|
|
|
22334
22422
|
}
|
|
22335
22423
|
var SESSION_HEADER, MAX_IMAGES_PER_MESSAGE, MAX_IMAGE_BASE64_LENGTH, MAX_PENDING_UPLOADS, MAX_CHUNKS_PER_UPLOAD, activeOverrides;
|
|
22336
22424
|
var init_agentcore = __esm({
|
|
22337
|
-
"
|
|
22425
|
+
"../server/dist/routes/agentcore.js"() {
|
|
22338
22426
|
"use strict";
|
|
22339
22427
|
init_commands2();
|
|
22340
22428
|
init_ui_log_builder();
|
|
@@ -22349,7 +22437,7 @@ var init_agentcore = __esm({
|
|
|
22349
22437
|
}
|
|
22350
22438
|
});
|
|
22351
22439
|
|
|
22352
|
-
//
|
|
22440
|
+
// ../server/dist/ws/file-watcher.js
|
|
22353
22441
|
import fs48 from "node:fs";
|
|
22354
22442
|
import path56 from "node:path";
|
|
22355
22443
|
function enqueueNativeOp(op) {
|
|
@@ -22371,7 +22459,7 @@ function isUnwatchablePath(absPath) {
|
|
|
22371
22459
|
}
|
|
22372
22460
|
var IGNORED_SEGMENTS, IS_WIN32, IGNORED_SEGMENT_SET, NATIVE_IGNORE, nativeOpChain, WorkspaceWatcher;
|
|
22373
22461
|
var init_file_watcher = __esm({
|
|
22374
|
-
"
|
|
22462
|
+
"../server/dist/ws/file-watcher.js"() {
|
|
22375
22463
|
"use strict";
|
|
22376
22464
|
IGNORED_SEGMENTS = [
|
|
22377
22465
|
// VCS
|
|
@@ -22593,12 +22681,12 @@ var init_file_watcher = __esm({
|
|
|
22593
22681
|
}
|
|
22594
22682
|
});
|
|
22595
22683
|
|
|
22596
|
-
//
|
|
22684
|
+
// ../server/dist/ws/git-dir-watcher.js
|
|
22597
22685
|
import fs49 from "node:fs";
|
|
22598
22686
|
import path57 from "node:path";
|
|
22599
22687
|
var GitDirWatcher;
|
|
22600
22688
|
var init_git_dir_watcher = __esm({
|
|
22601
|
-
"
|
|
22689
|
+
"../server/dist/ws/git-dir-watcher.js"() {
|
|
22602
22690
|
"use strict";
|
|
22603
22691
|
GitDirWatcher = class {
|
|
22604
22692
|
watcher = null;
|
|
@@ -22717,7 +22805,7 @@ var init_git_dir_watcher = __esm({
|
|
|
22717
22805
|
}
|
|
22718
22806
|
});
|
|
22719
22807
|
|
|
22720
|
-
//
|
|
22808
|
+
// ../server/dist/ws/event-processor.js
|
|
22721
22809
|
function sendJson(ws, data) {
|
|
22722
22810
|
if (ws.readyState === ws.OPEN) {
|
|
22723
22811
|
try {
|
|
@@ -22816,16 +22904,16 @@ function bufferDetachedNotification(event, pendingEvents) {
|
|
|
22816
22904
|
}
|
|
22817
22905
|
}
|
|
22818
22906
|
var init_event_processor = __esm({
|
|
22819
|
-
"
|
|
22907
|
+
"../server/dist/ws/event-processor.js"() {
|
|
22820
22908
|
"use strict";
|
|
22821
22909
|
init_ui_log_builder();
|
|
22822
22910
|
}
|
|
22823
22911
|
});
|
|
22824
22912
|
|
|
22825
|
-
//
|
|
22913
|
+
// ../server/dist/ws/watcher-pool.js
|
|
22826
22914
|
var WatcherPool;
|
|
22827
22915
|
var init_watcher_pool = __esm({
|
|
22828
|
-
"
|
|
22916
|
+
"../server/dist/ws/watcher-pool.js"() {
|
|
22829
22917
|
"use strict";
|
|
22830
22918
|
init_file_watcher();
|
|
22831
22919
|
init_git_dir_watcher();
|
|
@@ -22883,7 +22971,7 @@ var init_watcher_pool = __esm({
|
|
|
22883
22971
|
}
|
|
22884
22972
|
});
|
|
22885
22973
|
|
|
22886
|
-
//
|
|
22974
|
+
// ../server/dist/ws/terminal-manager.js
|
|
22887
22975
|
import { homedir as homedir22 } from "node:os";
|
|
22888
22976
|
import { basename } from "node:path";
|
|
22889
22977
|
import { createRequire } from "node:module";
|
|
@@ -22914,7 +23002,7 @@ function attachListenersOnce(t2) {
|
|
|
22914
23002
|
}
|
|
22915
23003
|
var requireFromHere, ptyModule, TERMINAL_GRACE_MS, terminals, TerminalManager;
|
|
22916
23004
|
var init_terminal_manager = __esm({
|
|
22917
|
-
"
|
|
23005
|
+
"../server/dist/ws/terminal-manager.js"() {
|
|
22918
23006
|
"use strict";
|
|
22919
23007
|
init_config();
|
|
22920
23008
|
init_child_env();
|
|
@@ -23062,7 +23150,7 @@ var init_terminal_manager = __esm({
|
|
|
23062
23150
|
}
|
|
23063
23151
|
});
|
|
23064
23152
|
|
|
23065
|
-
//
|
|
23153
|
+
// ../server/dist/ws/handler.js
|
|
23066
23154
|
import path58 from "node:path";
|
|
23067
23155
|
function setupWebSocketHandler(deps) {
|
|
23068
23156
|
const { wss: wss2, registry: registry2 } = deps;
|
|
@@ -23678,7 +23766,7 @@ ${msg.message}` : markers.join("\n");
|
|
|
23678
23766
|
}
|
|
23679
23767
|
var CLIENT_SILENCE_LIMIT_MS, detachedSessions;
|
|
23680
23768
|
var init_handler2 = __esm({
|
|
23681
|
-
"
|
|
23769
|
+
"../server/dist/ws/handler.js"() {
|
|
23682
23770
|
"use strict";
|
|
23683
23771
|
init_ui_log_builder();
|
|
23684
23772
|
init_config();
|
|
@@ -23696,7 +23784,7 @@ var init_handler2 = __esm({
|
|
|
23696
23784
|
}
|
|
23697
23785
|
});
|
|
23698
23786
|
|
|
23699
|
-
//
|
|
23787
|
+
// ../server/dist/db/cron-db.js
|
|
23700
23788
|
import Database7 from "better-sqlite3";
|
|
23701
23789
|
import { drizzle as drizzle5 } from "drizzle-orm/better-sqlite3";
|
|
23702
23790
|
import { sqliteTable as sqliteTable5, text as text5, integer as integer5 } from "drizzle-orm/sqlite-core";
|
|
@@ -23721,7 +23809,7 @@ function getCronDb() {
|
|
|
23721
23809
|
}
|
|
23722
23810
|
var cronJobs, cronRuns, CREATE_SQL4, CRON_MIGRATIONS, _cronDb;
|
|
23723
23811
|
var init_cron_db = __esm({
|
|
23724
|
-
"
|
|
23812
|
+
"../server/dist/db/cron-db.js"() {
|
|
23725
23813
|
"use strict";
|
|
23726
23814
|
init_migrate();
|
|
23727
23815
|
cronJobs = sqliteTable5("cron_jobs", {
|
|
@@ -23841,7 +23929,7 @@ CREATE INDEX IF NOT EXISTS idx_cron_runs_status ON cron_runs(status);
|
|
|
23841
23929
|
}
|
|
23842
23930
|
});
|
|
23843
23931
|
|
|
23844
|
-
//
|
|
23932
|
+
// ../server/dist/cron/dispatcher.js
|
|
23845
23933
|
function registerCronDispatcher(d) {
|
|
23846
23934
|
_registry2.set(d.channelType, d);
|
|
23847
23935
|
}
|
|
@@ -23888,14 +23976,14 @@ async function dispatchToTargets(rawText, targets, workspacePath) {
|
|
|
23888
23976
|
}
|
|
23889
23977
|
var _registry2;
|
|
23890
23978
|
var init_dispatcher = __esm({
|
|
23891
|
-
"
|
|
23979
|
+
"../server/dist/cron/dispatcher.js"() {
|
|
23892
23980
|
"use strict";
|
|
23893
23981
|
init_media();
|
|
23894
23982
|
_registry2 = /* @__PURE__ */ new Map();
|
|
23895
23983
|
}
|
|
23896
23984
|
});
|
|
23897
23985
|
|
|
23898
|
-
//
|
|
23986
|
+
// ../server/dist/cron/runner.js
|
|
23899
23987
|
import { spawn as spawn3, execFileSync } from "node:child_process";
|
|
23900
23988
|
import fs51 from "node:fs";
|
|
23901
23989
|
import path60 from "node:path";
|
|
@@ -24422,7 +24510,7 @@ function pruneOldLogs() {
|
|
|
24422
24510
|
}
|
|
24423
24511
|
var DAY_MS2, CLI_TIMEOUT_SEC, KILL_GRACE_SEC, UNATTENDED_PREAMBLE, RUNS_PER_JOB_KEEP, LOG_RETENTION_DAYS, _active, _inflight, _fingerprint, _daemonTimers, _lastCronDataVersion;
|
|
24424
24512
|
var init_runner = __esm({
|
|
24425
|
-
"
|
|
24513
|
+
"../server/dist/cron/runner.js"() {
|
|
24426
24514
|
"use strict";
|
|
24427
24515
|
init_cron_db();
|
|
24428
24516
|
init_raw_sqlite();
|
|
@@ -24443,7 +24531,7 @@ var init_runner = __esm({
|
|
|
24443
24531
|
}
|
|
24444
24532
|
});
|
|
24445
24533
|
|
|
24446
|
-
//
|
|
24534
|
+
// ../server/dist/routes/cron.js
|
|
24447
24535
|
import { Hono as Hono14 } from "hono";
|
|
24448
24536
|
import { eq as eq15, desc as desc3, lt as lt6, and as and11 } from "drizzle-orm";
|
|
24449
24537
|
import fs52 from "node:fs/promises";
|
|
@@ -24715,7 +24803,7 @@ function computeNextRun(j) {
|
|
|
24715
24803
|
}
|
|
24716
24804
|
var TIMEOUT_SEC_MIN, TIMEOUT_SEC_MAX;
|
|
24717
24805
|
var init_cron = __esm({
|
|
24718
|
-
"
|
|
24806
|
+
"../server/dist/routes/cron.js"() {
|
|
24719
24807
|
"use strict";
|
|
24720
24808
|
init_cron_db();
|
|
24721
24809
|
init_runner();
|
|
@@ -24726,7 +24814,7 @@ var init_cron = __esm({
|
|
|
24726
24814
|
}
|
|
24727
24815
|
});
|
|
24728
24816
|
|
|
24729
|
-
//
|
|
24817
|
+
// ../server/dist/evolution/ticker.js
|
|
24730
24818
|
import { eq as eq16, and as and12, or as or2, asc, isNull as isNull6, sql as sql2 } from "drizzle-orm";
|
|
24731
24819
|
function setEvoSpawner(fn) {
|
|
24732
24820
|
_spawner = fn;
|
|
@@ -24952,7 +25040,7 @@ function claimApply(id) {
|
|
|
24952
25040
|
}
|
|
24953
25041
|
var _lastRunStatus, _lastApplyStatus, _spawner, TICK_INTERVAL_MS, _interval, _startupTimer2;
|
|
24954
25042
|
var init_ticker = __esm({
|
|
24955
|
-
"
|
|
25043
|
+
"../server/dist/evolution/ticker.js"() {
|
|
24956
25044
|
"use strict";
|
|
24957
25045
|
init_config();
|
|
24958
25046
|
init_evo_db();
|
|
@@ -24968,13 +25056,13 @@ var init_ticker = __esm({
|
|
|
24968
25056
|
}
|
|
24969
25057
|
});
|
|
24970
25058
|
|
|
24971
|
-
//
|
|
25059
|
+
// ../server/dist/evolution/spawn.js
|
|
24972
25060
|
import path61 from "node:path";
|
|
24973
25061
|
import { spawn as spawn4 } from "node:child_process";
|
|
24974
25062
|
import { fileURLToPath as fileURLToPath2 } from "node:url";
|
|
24975
25063
|
var __dirname2, WRAPPER_PATH, realEvoSpawner;
|
|
24976
25064
|
var init_spawn = __esm({
|
|
24977
|
-
"
|
|
25065
|
+
"../server/dist/evolution/spawn.js"() {
|
|
24978
25066
|
"use strict";
|
|
24979
25067
|
init_child_env();
|
|
24980
25068
|
__dirname2 = path61.dirname(fileURLToPath2(import.meta.url));
|
|
@@ -24996,7 +25084,7 @@ var init_spawn = __esm({
|
|
|
24996
25084
|
}
|
|
24997
25085
|
});
|
|
24998
25086
|
|
|
24999
|
-
//
|
|
25087
|
+
// ../server/dist/channels/registry.js
|
|
25000
25088
|
function bootChannels(app2, descriptors, deps) {
|
|
25001
25089
|
for (const d of descriptors) {
|
|
25002
25090
|
if (d.registerCronDispatcher)
|
|
@@ -25021,13 +25109,13 @@ async function shutdownChannels() {
|
|
|
25021
25109
|
}
|
|
25022
25110
|
var _running;
|
|
25023
25111
|
var init_registry2 = __esm({
|
|
25024
|
-
"
|
|
25112
|
+
"../server/dist/channels/registry.js"() {
|
|
25025
25113
|
"use strict";
|
|
25026
25114
|
_running = [];
|
|
25027
25115
|
}
|
|
25028
25116
|
});
|
|
25029
25117
|
|
|
25030
|
-
//
|
|
25118
|
+
// ../server/dist/channels/telegram/accounts.js
|
|
25031
25119
|
function toTelegram(a) {
|
|
25032
25120
|
const c = a.config;
|
|
25033
25121
|
return {
|
|
@@ -25101,14 +25189,14 @@ function deleteAccount3(db, accountId) {
|
|
|
25101
25189
|
}
|
|
25102
25190
|
var CH2;
|
|
25103
25191
|
var init_accounts3 = __esm({
|
|
25104
|
-
"
|
|
25192
|
+
"../server/dist/channels/telegram/accounts.js"() {
|
|
25105
25193
|
"use strict";
|
|
25106
25194
|
init_accounts();
|
|
25107
25195
|
CH2 = "telegram";
|
|
25108
25196
|
}
|
|
25109
25197
|
});
|
|
25110
25198
|
|
|
25111
|
-
//
|
|
25199
|
+
// ../server/dist/channels/shared/chunk.js
|
|
25112
25200
|
function splitText(text6, limit) {
|
|
25113
25201
|
const out = [];
|
|
25114
25202
|
let rest = text6;
|
|
@@ -25124,15 +25212,15 @@ function splitText(text6, limit) {
|
|
|
25124
25212
|
return out;
|
|
25125
25213
|
}
|
|
25126
25214
|
var init_chunk = __esm({
|
|
25127
|
-
"
|
|
25215
|
+
"../server/dist/channels/shared/chunk.js"() {
|
|
25128
25216
|
"use strict";
|
|
25129
25217
|
}
|
|
25130
25218
|
});
|
|
25131
25219
|
|
|
25132
|
-
//
|
|
25220
|
+
// ../server/dist/channels/telegram/event-adapter.js
|
|
25133
25221
|
var HARD_CHARS, TelegramResponder;
|
|
25134
25222
|
var init_event_adapter = __esm({
|
|
25135
|
-
"
|
|
25223
|
+
"../server/dist/channels/telegram/event-adapter.js"() {
|
|
25136
25224
|
"use strict";
|
|
25137
25225
|
init_chunk();
|
|
25138
25226
|
init_media();
|
|
@@ -25215,7 +25303,7 @@ var init_event_adapter = __esm({
|
|
|
25215
25303
|
}
|
|
25216
25304
|
});
|
|
25217
25305
|
|
|
25218
|
-
//
|
|
25306
|
+
// ../server/dist/channels/shared/busy-hint.js
|
|
25219
25307
|
function busyHint(sm, sessionId, lang) {
|
|
25220
25308
|
if (sm.isSessionCompacting(sessionId))
|
|
25221
25309
|
return t("handler.compacting", lang);
|
|
@@ -25224,13 +25312,13 @@ function busyHint(sm, sessionId, lang) {
|
|
|
25224
25312
|
return null;
|
|
25225
25313
|
}
|
|
25226
25314
|
var init_busy_hint = __esm({
|
|
25227
|
-
"
|
|
25315
|
+
"../server/dist/channels/shared/busy-hint.js"() {
|
|
25228
25316
|
"use strict";
|
|
25229
25317
|
init_i18n();
|
|
25230
25318
|
}
|
|
25231
25319
|
});
|
|
25232
25320
|
|
|
25233
|
-
//
|
|
25321
|
+
// ../server/dist/channels/shared/inbound.js
|
|
25234
25322
|
function sessionAccess(accountAccessLevel) {
|
|
25235
25323
|
return accountAccessLevel === "full" ? null : accountAccessLevel === "workspace" ? "workspace" : "readonly";
|
|
25236
25324
|
}
|
|
@@ -25288,7 +25376,7 @@ async function dispatchChannelCommand(ctx, command, arg, opts) {
|
|
|
25288
25376
|
}
|
|
25289
25377
|
var InboundBridge;
|
|
25290
25378
|
var init_inbound = __esm({
|
|
25291
|
-
"
|
|
25379
|
+
"../server/dist/channels/shared/inbound.js"() {
|
|
25292
25380
|
"use strict";
|
|
25293
25381
|
init_goal_mode();
|
|
25294
25382
|
init_accounts();
|
|
@@ -25358,7 +25446,7 @@ var init_inbound = __esm({
|
|
|
25358
25446
|
}
|
|
25359
25447
|
});
|
|
25360
25448
|
|
|
25361
|
-
//
|
|
25449
|
+
// ../server/dist/channels/telegram/handler.js
|
|
25362
25450
|
import { Bot, InputFile } from "grammy";
|
|
25363
25451
|
function inferMediaKind(filePath) {
|
|
25364
25452
|
const cls = classifyMedia(filePath);
|
|
@@ -25745,7 +25833,7 @@ async function handleUserMessage(args) {
|
|
|
25745
25833
|
}
|
|
25746
25834
|
var MAX_TG_DOWNLOAD_BYTES;
|
|
25747
25835
|
var init_handler3 = __esm({
|
|
25748
|
-
"
|
|
25836
|
+
"../server/dist/channels/telegram/handler.js"() {
|
|
25749
25837
|
"use strict";
|
|
25750
25838
|
init_accounts3();
|
|
25751
25839
|
init_event_adapter();
|
|
@@ -25760,7 +25848,7 @@ var init_handler3 = __esm({
|
|
|
25760
25848
|
}
|
|
25761
25849
|
});
|
|
25762
25850
|
|
|
25763
|
-
//
|
|
25851
|
+
// ../server/dist/routes/telegram.js
|
|
25764
25852
|
import { Hono as Hono15 } from "hono";
|
|
25765
25853
|
import { Bot as Bot2 } from "grammy";
|
|
25766
25854
|
import fs53 from "node:fs";
|
|
@@ -25879,14 +25967,14 @@ function createTelegramRoutes(deps) {
|
|
|
25879
25967
|
return app2;
|
|
25880
25968
|
}
|
|
25881
25969
|
var init_telegram = __esm({
|
|
25882
|
-
"
|
|
25970
|
+
"../server/dist/routes/telegram.js"() {
|
|
25883
25971
|
"use strict";
|
|
25884
25972
|
init_accounts3();
|
|
25885
25973
|
init_accounts();
|
|
25886
25974
|
}
|
|
25887
25975
|
});
|
|
25888
25976
|
|
|
25889
|
-
//
|
|
25977
|
+
// ../server/dist/channels/telegram/cron-dispatcher.js
|
|
25890
25978
|
import { Bot as Bot3 } from "grammy";
|
|
25891
25979
|
async function dispatch(accountId, text6, explicitChatId) {
|
|
25892
25980
|
const acct = getAccount3(getChannelDb(), accountId);
|
|
@@ -25935,7 +26023,7 @@ function registerTelegramCronDispatcher() {
|
|
|
25935
26023
|
registerCronDispatcher({ channelType: "telegram", dispatch, listTargets });
|
|
25936
26024
|
}
|
|
25937
26025
|
var init_cron_dispatcher = __esm({
|
|
25938
|
-
"
|
|
26026
|
+
"../server/dist/channels/telegram/cron-dispatcher.js"() {
|
|
25939
26027
|
"use strict";
|
|
25940
26028
|
init_channel_db();
|
|
25941
26029
|
init_accounts3();
|
|
@@ -25943,10 +26031,10 @@ var init_cron_dispatcher = __esm({
|
|
|
25943
26031
|
}
|
|
25944
26032
|
});
|
|
25945
26033
|
|
|
25946
|
-
//
|
|
26034
|
+
// ../server/dist/channels/telegram/descriptor.js
|
|
25947
26035
|
var telegramDescriptor;
|
|
25948
26036
|
var init_descriptor = __esm({
|
|
25949
|
-
"
|
|
26037
|
+
"../server/dist/channels/telegram/descriptor.js"() {
|
|
25950
26038
|
"use strict";
|
|
25951
26039
|
init_handler3();
|
|
25952
26040
|
init_telegram();
|
|
@@ -25961,7 +26049,7 @@ var init_descriptor = __esm({
|
|
|
25961
26049
|
}
|
|
25962
26050
|
});
|
|
25963
26051
|
|
|
25964
|
-
//
|
|
26052
|
+
// ../server/dist/channels/wechat/api.js
|
|
25965
26053
|
import crypto3 from "node:crypto";
|
|
25966
26054
|
function buildClientVersion(version) {
|
|
25967
26055
|
const [ma, mi, pa] = version.split(".").map((p) => parseInt(p, 10));
|
|
@@ -26150,7 +26238,7 @@ async function notifyStop(params) {
|
|
|
26150
26238
|
}
|
|
26151
26239
|
var QR_BASE_URL, DEFAULT_BOT_TYPE, CHANNEL_VERSION, ILINK_APP_ID, ILINK_APP_CLIENT_VERSION, DEFAULT_LONG_POLL_TIMEOUT_MS, DEFAULT_API_TIMEOUT_MS;
|
|
26152
26240
|
var init_api = __esm({
|
|
26153
|
-
"
|
|
26241
|
+
"../server/dist/channels/wechat/api.js"() {
|
|
26154
26242
|
"use strict";
|
|
26155
26243
|
QR_BASE_URL = "https://ilinkai.weixin.qq.com";
|
|
26156
26244
|
DEFAULT_BOT_TYPE = "3";
|
|
@@ -26162,10 +26250,10 @@ var init_api = __esm({
|
|
|
26162
26250
|
}
|
|
26163
26251
|
});
|
|
26164
26252
|
|
|
26165
|
-
//
|
|
26253
|
+
// ../server/dist/channels/wechat/types.js
|
|
26166
26254
|
var MessageItemType, MessageType, MessageState, UploadMediaType;
|
|
26167
26255
|
var init_types = __esm({
|
|
26168
|
-
"
|
|
26256
|
+
"../server/dist/channels/wechat/types.js"() {
|
|
26169
26257
|
"use strict";
|
|
26170
26258
|
MessageItemType = {
|
|
26171
26259
|
NONE: 0,
|
|
@@ -26194,7 +26282,7 @@ var init_types = __esm({
|
|
|
26194
26282
|
}
|
|
26195
26283
|
});
|
|
26196
26284
|
|
|
26197
|
-
//
|
|
26285
|
+
// ../server/dist/channels/wechat/accounts.js
|
|
26198
26286
|
function toWechat(a) {
|
|
26199
26287
|
const c = a.config;
|
|
26200
26288
|
return {
|
|
@@ -26276,17 +26364,17 @@ function saveSyncBuf(db, accountId, syncBuf) {
|
|
|
26276
26364
|
}
|
|
26277
26365
|
var CH3;
|
|
26278
26366
|
var init_accounts4 = __esm({
|
|
26279
|
-
"
|
|
26367
|
+
"../server/dist/channels/wechat/accounts.js"() {
|
|
26280
26368
|
"use strict";
|
|
26281
26369
|
init_accounts();
|
|
26282
26370
|
CH3 = "wechat";
|
|
26283
26371
|
}
|
|
26284
26372
|
});
|
|
26285
26373
|
|
|
26286
|
-
//
|
|
26374
|
+
// ../server/dist/channels/wechat/event-adapter.js
|
|
26287
26375
|
var WECHAT_TEXT_LIMIT, WechatResponder;
|
|
26288
26376
|
var init_event_adapter2 = __esm({
|
|
26289
|
-
"
|
|
26377
|
+
"../server/dist/channels/wechat/event-adapter.js"() {
|
|
26290
26378
|
"use strict";
|
|
26291
26379
|
init_chunk();
|
|
26292
26380
|
init_media();
|
|
@@ -26390,7 +26478,7 @@ var init_event_adapter2 = __esm({
|
|
|
26390
26478
|
}
|
|
26391
26479
|
});
|
|
26392
26480
|
|
|
26393
|
-
//
|
|
26481
|
+
// ../server/dist/channels/wechat/cdn.js
|
|
26394
26482
|
import { createDecipheriv, createCipheriv, randomBytes as randomBytes2, createHash as createHash2 } from "node:crypto";
|
|
26395
26483
|
function decryptAesEcb(ciphertext, key) {
|
|
26396
26484
|
const decipher = createDecipheriv("aes-128-ecb", key, null);
|
|
@@ -26489,14 +26577,14 @@ async function uploadCiphertext(params) {
|
|
|
26489
26577
|
}
|
|
26490
26578
|
var CDN_BASE_URL, UPLOAD_MAX_RETRIES;
|
|
26491
26579
|
var init_cdn = __esm({
|
|
26492
|
-
"
|
|
26580
|
+
"../server/dist/channels/wechat/cdn.js"() {
|
|
26493
26581
|
"use strict";
|
|
26494
26582
|
CDN_BASE_URL = "https://novac2c.cdn.weixin.qq.com/c2c";
|
|
26495
26583
|
UPLOAD_MAX_RETRIES = 3;
|
|
26496
26584
|
}
|
|
26497
26585
|
});
|
|
26498
26586
|
|
|
26499
|
-
//
|
|
26587
|
+
// ../server/dist/channels/wechat/send-media.js
|
|
26500
26588
|
import fs54 from "node:fs/promises";
|
|
26501
26589
|
import path62 from "node:path";
|
|
26502
26590
|
function inferKind(filePath) {
|
|
@@ -26590,7 +26678,7 @@ function buildMessageItem(args) {
|
|
|
26590
26678
|
};
|
|
26591
26679
|
}
|
|
26592
26680
|
var init_send_media = __esm({
|
|
26593
|
-
"
|
|
26681
|
+
"../server/dist/channels/wechat/send-media.js"() {
|
|
26594
26682
|
"use strict";
|
|
26595
26683
|
init_api();
|
|
26596
26684
|
init_cdn();
|
|
@@ -26599,7 +26687,7 @@ var init_send_media = __esm({
|
|
|
26599
26687
|
}
|
|
26600
26688
|
});
|
|
26601
26689
|
|
|
26602
|
-
//
|
|
26690
|
+
// ../server/dist/channels/wechat/login.js
|
|
26603
26691
|
import { randomUUID as randomUUID2 } from "node:crypto";
|
|
26604
26692
|
function isFresh(l) {
|
|
26605
26693
|
return Date.now() - l.startedAt < ACTIVE_TTL_MS;
|
|
@@ -26701,7 +26789,7 @@ async function waitLogin(params) {
|
|
|
26701
26789
|
}
|
|
26702
26790
|
var ACTIVE_TTL_MS, MAX_QR_REFRESH, activeLogins;
|
|
26703
26791
|
var init_login = __esm({
|
|
26704
|
-
"
|
|
26792
|
+
"../server/dist/channels/wechat/login.js"() {
|
|
26705
26793
|
"use strict";
|
|
26706
26794
|
init_api();
|
|
26707
26795
|
ACTIVE_TTL_MS = 5 * 6e4;
|
|
@@ -26710,7 +26798,7 @@ var init_login = __esm({
|
|
|
26710
26798
|
}
|
|
26711
26799
|
});
|
|
26712
26800
|
|
|
26713
|
-
//
|
|
26801
|
+
// ../server/dist/channels/wechat/handler.js
|
|
26714
26802
|
import fs55 from "node:fs";
|
|
26715
26803
|
import path63 from "node:path";
|
|
26716
26804
|
import QRCode from "qrcode";
|
|
@@ -27168,7 +27256,7 @@ function sleep2(ms, signal) {
|
|
|
27168
27256
|
}
|
|
27169
27257
|
var MAX_CONSECUTIVE_FAILURES, BACKOFF_DELAY_MS, RETRY_DELAY_MS;
|
|
27170
27258
|
var init_handler4 = __esm({
|
|
27171
|
-
"
|
|
27259
|
+
"../server/dist/channels/wechat/handler.js"() {
|
|
27172
27260
|
"use strict";
|
|
27173
27261
|
init_api();
|
|
27174
27262
|
init_types();
|
|
@@ -27190,7 +27278,7 @@ var init_handler4 = __esm({
|
|
|
27190
27278
|
}
|
|
27191
27279
|
});
|
|
27192
27280
|
|
|
27193
|
-
//
|
|
27281
|
+
// ../server/dist/routes/wechat.js
|
|
27194
27282
|
import { Hono as Hono16 } from "hono";
|
|
27195
27283
|
import path64 from "node:path";
|
|
27196
27284
|
import fs56 from "node:fs";
|
|
@@ -27305,7 +27393,7 @@ function stripSecrets(acc) {
|
|
|
27305
27393
|
return rest;
|
|
27306
27394
|
}
|
|
27307
27395
|
var init_wechat = __esm({
|
|
27308
|
-
"
|
|
27396
|
+
"../server/dist/routes/wechat.js"() {
|
|
27309
27397
|
"use strict";
|
|
27310
27398
|
init_login();
|
|
27311
27399
|
init_accounts4();
|
|
@@ -27313,7 +27401,7 @@ var init_wechat = __esm({
|
|
|
27313
27401
|
}
|
|
27314
27402
|
});
|
|
27315
27403
|
|
|
27316
|
-
//
|
|
27404
|
+
// ../server/dist/channels/wechat/cron-dispatcher.js
|
|
27317
27405
|
function readLastActiveChatId(accountId) {
|
|
27318
27406
|
const acct = getAccount(getChannelDb(), accountId);
|
|
27319
27407
|
if (!acct)
|
|
@@ -27394,7 +27482,7 @@ function registerWechatCronDispatcher() {
|
|
|
27394
27482
|
registerCronDispatcher({ channelType: "wechat", supportsMedia: true, dispatch: dispatch2, listTargets: listTargets2 });
|
|
27395
27483
|
}
|
|
27396
27484
|
var init_cron_dispatcher2 = __esm({
|
|
27397
|
-
"
|
|
27485
|
+
"../server/dist/channels/wechat/cron-dispatcher.js"() {
|
|
27398
27486
|
"use strict";
|
|
27399
27487
|
init_channel_db();
|
|
27400
27488
|
init_accounts();
|
|
@@ -27408,10 +27496,10 @@ var init_cron_dispatcher2 = __esm({
|
|
|
27408
27496
|
}
|
|
27409
27497
|
});
|
|
27410
27498
|
|
|
27411
|
-
//
|
|
27499
|
+
// ../server/dist/channels/wechat/descriptor.js
|
|
27412
27500
|
var wechatDescriptor;
|
|
27413
27501
|
var init_descriptor2 = __esm({
|
|
27414
|
-
"
|
|
27502
|
+
"../server/dist/channels/wechat/descriptor.js"() {
|
|
27415
27503
|
"use strict";
|
|
27416
27504
|
init_handler4();
|
|
27417
27505
|
init_wechat();
|
|
@@ -27426,7 +27514,7 @@ var init_descriptor2 = __esm({
|
|
|
27426
27514
|
}
|
|
27427
27515
|
});
|
|
27428
27516
|
|
|
27429
|
-
//
|
|
27517
|
+
// ../server/dist/routes/web.js
|
|
27430
27518
|
import { Hono as Hono17 } from "hono";
|
|
27431
27519
|
import { streamSSE } from "hono/streaming";
|
|
27432
27520
|
import crypto4 from "node:crypto";
|
|
@@ -27663,7 +27751,7 @@ function createWebRoutes(deps) {
|
|
|
27663
27751
|
return app2;
|
|
27664
27752
|
}
|
|
27665
27753
|
var init_web = __esm({
|
|
27666
|
-
"
|
|
27754
|
+
"../server/dist/routes/web.js"() {
|
|
27667
27755
|
"use strict";
|
|
27668
27756
|
init_dist();
|
|
27669
27757
|
init_handler();
|
|
@@ -27675,10 +27763,10 @@ var init_web = __esm({
|
|
|
27675
27763
|
}
|
|
27676
27764
|
});
|
|
27677
27765
|
|
|
27678
|
-
//
|
|
27766
|
+
// ../server/dist/channels/web/descriptor.js
|
|
27679
27767
|
var webDescriptor;
|
|
27680
27768
|
var init_descriptor3 = __esm({
|
|
27681
|
-
"
|
|
27769
|
+
"../server/dist/channels/web/descriptor.js"() {
|
|
27682
27770
|
"use strict";
|
|
27683
27771
|
init_handler();
|
|
27684
27772
|
init_web();
|
|
@@ -27694,7 +27782,7 @@ var init_descriptor3 = __esm({
|
|
|
27694
27782
|
}
|
|
27695
27783
|
});
|
|
27696
27784
|
|
|
27697
|
-
//
|
|
27785
|
+
// ../server/dist/channels/slack/accounts.js
|
|
27698
27786
|
function toSlack(a) {
|
|
27699
27787
|
const c = a.config;
|
|
27700
27788
|
return {
|
|
@@ -27770,14 +27858,14 @@ function deleteAccount5(db, accountId) {
|
|
|
27770
27858
|
}
|
|
27771
27859
|
var CH4;
|
|
27772
27860
|
var init_accounts5 = __esm({
|
|
27773
|
-
"
|
|
27861
|
+
"../server/dist/channels/slack/accounts.js"() {
|
|
27774
27862
|
"use strict";
|
|
27775
27863
|
init_accounts();
|
|
27776
27864
|
CH4 = "slack";
|
|
27777
27865
|
}
|
|
27778
27866
|
});
|
|
27779
27867
|
|
|
27780
|
-
//
|
|
27868
|
+
// ../server/dist/channels/shared/markdown.js
|
|
27781
27869
|
function formatForSlack(input) {
|
|
27782
27870
|
if (!input)
|
|
27783
27871
|
return "";
|
|
@@ -27856,15 +27944,15 @@ function stripCommonMark(line) {
|
|
|
27856
27944
|
return line;
|
|
27857
27945
|
}
|
|
27858
27946
|
var init_markdown = __esm({
|
|
27859
|
-
"
|
|
27947
|
+
"../server/dist/channels/shared/markdown.js"() {
|
|
27860
27948
|
"use strict";
|
|
27861
27949
|
}
|
|
27862
27950
|
});
|
|
27863
27951
|
|
|
27864
|
-
//
|
|
27952
|
+
// ../server/dist/channels/slack/event-adapter.js
|
|
27865
27953
|
var HARD_CHARS2, SlackResponder;
|
|
27866
27954
|
var init_event_adapter3 = __esm({
|
|
27867
|
-
"
|
|
27955
|
+
"../server/dist/channels/slack/event-adapter.js"() {
|
|
27868
27956
|
"use strict";
|
|
27869
27957
|
init_chunk();
|
|
27870
27958
|
init_markdown();
|
|
@@ -27957,7 +28045,7 @@ var init_event_adapter3 = __esm({
|
|
|
27957
28045
|
}
|
|
27958
28046
|
});
|
|
27959
28047
|
|
|
27960
|
-
//
|
|
28048
|
+
// ../server/dist/channels/slack/api.js
|
|
27961
28049
|
async function slackPost(endpoint, token, body) {
|
|
27962
28050
|
const isForm = body instanceof FormData;
|
|
27963
28051
|
const res = await fetch(`${SLACK_API}/${endpoint}`, {
|
|
@@ -28145,13 +28233,13 @@ async function downloadFile(botToken, urlPrivate) {
|
|
|
28145
28233
|
}
|
|
28146
28234
|
var SLACK_API;
|
|
28147
28235
|
var init_api2 = __esm({
|
|
28148
|
-
"
|
|
28236
|
+
"../server/dist/channels/slack/api.js"() {
|
|
28149
28237
|
"use strict";
|
|
28150
28238
|
SLACK_API = "https://slack.com/api";
|
|
28151
28239
|
}
|
|
28152
28240
|
});
|
|
28153
28241
|
|
|
28154
|
-
//
|
|
28242
|
+
// ../server/dist/channels/slack/handler.js
|
|
28155
28243
|
import path65 from "node:path";
|
|
28156
28244
|
import { WebSocket } from "ws";
|
|
28157
28245
|
function slashToBang(text6, commandNames) {
|
|
@@ -28514,7 +28602,7 @@ function buildCmdCtx(args) {
|
|
|
28514
28602
|
}
|
|
28515
28603
|
var SLACK_EXTRA_COMMANDS, SEEN_EVENT_IDS, SEEN_EVENT_IDS_MAX;
|
|
28516
28604
|
var init_handler5 = __esm({
|
|
28517
|
-
"
|
|
28605
|
+
"../server/dist/channels/slack/handler.js"() {
|
|
28518
28606
|
"use strict";
|
|
28519
28607
|
init_accounts5();
|
|
28520
28608
|
init_event_adapter3();
|
|
@@ -28534,7 +28622,7 @@ var init_handler5 = __esm({
|
|
|
28534
28622
|
}
|
|
28535
28623
|
});
|
|
28536
28624
|
|
|
28537
|
-
//
|
|
28625
|
+
// ../server/dist/routes/slack.js
|
|
28538
28626
|
import { Hono as Hono18 } from "hono";
|
|
28539
28627
|
import fs58 from "node:fs";
|
|
28540
28628
|
function createSlackRoutes(deps) {
|
|
@@ -28668,7 +28756,7 @@ function createSlackRoutes(deps) {
|
|
|
28668
28756
|
return app2;
|
|
28669
28757
|
}
|
|
28670
28758
|
var init_slack = __esm({
|
|
28671
|
-
"
|
|
28759
|
+
"../server/dist/routes/slack.js"() {
|
|
28672
28760
|
"use strict";
|
|
28673
28761
|
init_accounts5();
|
|
28674
28762
|
init_accounts();
|
|
@@ -28676,7 +28764,7 @@ var init_slack = __esm({
|
|
|
28676
28764
|
}
|
|
28677
28765
|
});
|
|
28678
28766
|
|
|
28679
|
-
//
|
|
28767
|
+
// ../server/dist/channels/slack/cron-dispatcher.js
|
|
28680
28768
|
function parseChatId(raw) {
|
|
28681
28769
|
const idx = raw.indexOf(":");
|
|
28682
28770
|
if (idx < 0)
|
|
@@ -28740,7 +28828,7 @@ function registerSlackCronDispatcher() {
|
|
|
28740
28828
|
registerCronDispatcher({ channelType: "slack", supportsMedia: true, dispatch: dispatch3, listTargets: listTargets3 });
|
|
28741
28829
|
}
|
|
28742
28830
|
var init_cron_dispatcher3 = __esm({
|
|
28743
|
-
"
|
|
28831
|
+
"../server/dist/channels/slack/cron-dispatcher.js"() {
|
|
28744
28832
|
"use strict";
|
|
28745
28833
|
init_channel_db();
|
|
28746
28834
|
init_accounts5();
|
|
@@ -28750,10 +28838,10 @@ var init_cron_dispatcher3 = __esm({
|
|
|
28750
28838
|
}
|
|
28751
28839
|
});
|
|
28752
28840
|
|
|
28753
|
-
//
|
|
28841
|
+
// ../server/dist/channels/slack/descriptor.js
|
|
28754
28842
|
var slackDescriptor;
|
|
28755
28843
|
var init_descriptor4 = __esm({
|
|
28756
|
-
"
|
|
28844
|
+
"../server/dist/channels/slack/descriptor.js"() {
|
|
28757
28845
|
"use strict";
|
|
28758
28846
|
init_handler5();
|
|
28759
28847
|
init_slack();
|
|
@@ -28768,7 +28856,7 @@ var init_descriptor4 = __esm({
|
|
|
28768
28856
|
}
|
|
28769
28857
|
});
|
|
28770
28858
|
|
|
28771
|
-
//
|
|
28859
|
+
// ../server/dist/channels/feishu/accounts.js
|
|
28772
28860
|
function toFeishu(a) {
|
|
28773
28861
|
const c = a.config;
|
|
28774
28862
|
return {
|
|
@@ -28846,17 +28934,17 @@ function deleteAccount6(db, accountId) {
|
|
|
28846
28934
|
}
|
|
28847
28935
|
var CH5;
|
|
28848
28936
|
var init_accounts6 = __esm({
|
|
28849
|
-
"
|
|
28937
|
+
"../server/dist/channels/feishu/accounts.js"() {
|
|
28850
28938
|
"use strict";
|
|
28851
28939
|
init_accounts();
|
|
28852
28940
|
CH5 = "feishu";
|
|
28853
28941
|
}
|
|
28854
28942
|
});
|
|
28855
28943
|
|
|
28856
|
-
//
|
|
28944
|
+
// ../server/dist/channels/feishu/event-adapter.js
|
|
28857
28945
|
var HARD_CHARS3, FeishuResponder;
|
|
28858
28946
|
var init_event_adapter4 = __esm({
|
|
28859
|
-
"
|
|
28947
|
+
"../server/dist/channels/feishu/event-adapter.js"() {
|
|
28860
28948
|
"use strict";
|
|
28861
28949
|
init_chunk();
|
|
28862
28950
|
init_markdown();
|
|
@@ -28949,7 +29037,7 @@ var init_event_adapter4 = __esm({
|
|
|
28949
29037
|
}
|
|
28950
29038
|
});
|
|
28951
29039
|
|
|
28952
|
-
//
|
|
29040
|
+
// ../server/dist/channels/feishu/api.js
|
|
28953
29041
|
async function getTenantAccessToken(args) {
|
|
28954
29042
|
const cached = tokenCache.get(args.appId);
|
|
28955
29043
|
if (cached && cached.expiresAt - Date.now() > 6e4)
|
|
@@ -29213,14 +29301,14 @@ async function searchFeishuTargets(args) {
|
|
|
29213
29301
|
}
|
|
29214
29302
|
var FEISHU_BASE, tokenCache;
|
|
29215
29303
|
var init_api3 = __esm({
|
|
29216
|
-
"
|
|
29304
|
+
"../server/dist/channels/feishu/api.js"() {
|
|
29217
29305
|
"use strict";
|
|
29218
29306
|
FEISHU_BASE = "https://open.feishu.cn";
|
|
29219
29307
|
tokenCache = /* @__PURE__ */ new Map();
|
|
29220
29308
|
}
|
|
29221
29309
|
});
|
|
29222
29310
|
|
|
29223
|
-
//
|
|
29311
|
+
// ../server/dist/channels/feishu/handler.js
|
|
29224
29312
|
import path66 from "node:path";
|
|
29225
29313
|
import * as Lark from "@larksuiteoapi/node-sdk";
|
|
29226
29314
|
function buildSessionPrefixForThread2(chatId, rootId) {
|
|
@@ -29693,7 +29781,7 @@ function buildCmdCtx2(args) {
|
|
|
29693
29781
|
}
|
|
29694
29782
|
var MAX_FEISHU_DOWNLOAD_BYTES;
|
|
29695
29783
|
var init_handler6 = __esm({
|
|
29696
|
-
"
|
|
29784
|
+
"../server/dist/channels/feishu/handler.js"() {
|
|
29697
29785
|
"use strict";
|
|
29698
29786
|
init_accounts6();
|
|
29699
29787
|
init_event_adapter4();
|
|
@@ -29709,7 +29797,7 @@ var init_handler6 = __esm({
|
|
|
29709
29797
|
}
|
|
29710
29798
|
});
|
|
29711
29799
|
|
|
29712
|
-
//
|
|
29800
|
+
// ../server/dist/routes/feishu.js
|
|
29713
29801
|
import { Hono as Hono19 } from "hono";
|
|
29714
29802
|
import fs59 from "node:fs";
|
|
29715
29803
|
function createFeishuRoutes(deps) {
|
|
@@ -29846,7 +29934,7 @@ function createFeishuRoutes(deps) {
|
|
|
29846
29934
|
return app2;
|
|
29847
29935
|
}
|
|
29848
29936
|
var init_feishu = __esm({
|
|
29849
|
-
"
|
|
29937
|
+
"../server/dist/routes/feishu.js"() {
|
|
29850
29938
|
"use strict";
|
|
29851
29939
|
init_accounts6();
|
|
29852
29940
|
init_accounts();
|
|
@@ -29854,7 +29942,7 @@ var init_feishu = __esm({
|
|
|
29854
29942
|
}
|
|
29855
29943
|
});
|
|
29856
29944
|
|
|
29857
|
-
//
|
|
29945
|
+
// ../server/dist/channels/feishu/cron-dispatcher.js
|
|
29858
29946
|
function parseChatId2(raw) {
|
|
29859
29947
|
const idx = raw.indexOf(":");
|
|
29860
29948
|
return { chatId: idx < 0 ? raw : raw.slice(0, idx) };
|
|
@@ -29904,7 +29992,7 @@ function registerFeishuCronDispatcher() {
|
|
|
29904
29992
|
registerCronDispatcher({ channelType: "feishu", dispatch: dispatch4, listTargets: listTargets4 });
|
|
29905
29993
|
}
|
|
29906
29994
|
var init_cron_dispatcher4 = __esm({
|
|
29907
|
-
"
|
|
29995
|
+
"../server/dist/channels/feishu/cron-dispatcher.js"() {
|
|
29908
29996
|
"use strict";
|
|
29909
29997
|
init_channel_db();
|
|
29910
29998
|
init_accounts6();
|
|
@@ -29913,10 +30001,10 @@ var init_cron_dispatcher4 = __esm({
|
|
|
29913
30001
|
}
|
|
29914
30002
|
});
|
|
29915
30003
|
|
|
29916
|
-
//
|
|
30004
|
+
// ../server/dist/channels/feishu/descriptor.js
|
|
29917
30005
|
var feishuDescriptor;
|
|
29918
30006
|
var init_descriptor5 = __esm({
|
|
29919
|
-
"
|
|
30007
|
+
"../server/dist/channels/feishu/descriptor.js"() {
|
|
29920
30008
|
"use strict";
|
|
29921
30009
|
init_handler6();
|
|
29922
30010
|
init_feishu();
|
|
@@ -29931,7 +30019,7 @@ var init_descriptor5 = __esm({
|
|
|
29931
30019
|
}
|
|
29932
30020
|
});
|
|
29933
30021
|
|
|
29934
|
-
//
|
|
30022
|
+
// ../server/dist/channels/wecom/accounts.js
|
|
29935
30023
|
function toWecom(a) {
|
|
29936
30024
|
const c = a.config;
|
|
29937
30025
|
return {
|
|
@@ -30006,17 +30094,17 @@ function deleteAccount7(db, accountId) {
|
|
|
30006
30094
|
}
|
|
30007
30095
|
var CH6;
|
|
30008
30096
|
var init_accounts7 = __esm({
|
|
30009
|
-
"
|
|
30097
|
+
"../server/dist/channels/wecom/accounts.js"() {
|
|
30010
30098
|
"use strict";
|
|
30011
30099
|
init_accounts();
|
|
30012
30100
|
CH6 = "wecom";
|
|
30013
30101
|
}
|
|
30014
30102
|
});
|
|
30015
30103
|
|
|
30016
|
-
//
|
|
30104
|
+
// ../server/dist/channels/wecom/event-adapter.js
|
|
30017
30105
|
var HARD_CHARS4, WecomResponder;
|
|
30018
30106
|
var init_event_adapter5 = __esm({
|
|
30019
|
-
"
|
|
30107
|
+
"../server/dist/channels/wecom/event-adapter.js"() {
|
|
30020
30108
|
"use strict";
|
|
30021
30109
|
init_chunk();
|
|
30022
30110
|
init_media();
|
|
@@ -30107,7 +30195,7 @@ var init_event_adapter5 = __esm({
|
|
|
30107
30195
|
}
|
|
30108
30196
|
});
|
|
30109
30197
|
|
|
30110
|
-
//
|
|
30198
|
+
// ../server/dist/channels/wecom/handler.js
|
|
30111
30199
|
import path67 from "node:path";
|
|
30112
30200
|
import fs60 from "node:fs/promises";
|
|
30113
30201
|
import { WSClient as WSClient2, generateReqId } from "@wecom/aibot-node-sdk";
|
|
@@ -30476,7 +30564,7 @@ function buildCmdCtx3(args) {
|
|
|
30476
30564
|
}
|
|
30477
30565
|
var liveClients, DEDUPE_CAP, MAX_WECOM_DOWNLOAD_BYTES;
|
|
30478
30566
|
var init_handler7 = __esm({
|
|
30479
|
-
"
|
|
30567
|
+
"../server/dist/channels/wecom/handler.js"() {
|
|
30480
30568
|
"use strict";
|
|
30481
30569
|
init_accounts7();
|
|
30482
30570
|
init_event_adapter5();
|
|
@@ -30492,7 +30580,7 @@ var init_handler7 = __esm({
|
|
|
30492
30580
|
}
|
|
30493
30581
|
});
|
|
30494
30582
|
|
|
30495
|
-
//
|
|
30583
|
+
// ../server/dist/routes/wecom.js
|
|
30496
30584
|
import { Hono as Hono20 } from "hono";
|
|
30497
30585
|
import fs61 from "node:fs";
|
|
30498
30586
|
function createWecomRoutes(deps) {
|
|
@@ -30599,14 +30687,14 @@ function createWecomRoutes(deps) {
|
|
|
30599
30687
|
return app2;
|
|
30600
30688
|
}
|
|
30601
30689
|
var init_wecom = __esm({
|
|
30602
|
-
"
|
|
30690
|
+
"../server/dist/routes/wecom.js"() {
|
|
30603
30691
|
"use strict";
|
|
30604
30692
|
init_accounts7();
|
|
30605
30693
|
init_accounts();
|
|
30606
30694
|
}
|
|
30607
30695
|
});
|
|
30608
30696
|
|
|
30609
|
-
//
|
|
30697
|
+
// ../server/dist/channels/wecom/cron-dispatcher.js
|
|
30610
30698
|
async function dispatch5(accountId, text6, explicitChatId) {
|
|
30611
30699
|
const acct = getAccount7(getChannelDb(), accountId);
|
|
30612
30700
|
if (!acct)
|
|
@@ -30648,7 +30736,7 @@ function registerWecomCronDispatcher() {
|
|
|
30648
30736
|
registerCronDispatcher({ channelType: "wecom", dispatch: dispatch5, listTargets: listTargets5 });
|
|
30649
30737
|
}
|
|
30650
30738
|
var init_cron_dispatcher5 = __esm({
|
|
30651
|
-
"
|
|
30739
|
+
"../server/dist/channels/wecom/cron-dispatcher.js"() {
|
|
30652
30740
|
"use strict";
|
|
30653
30741
|
init_channel_db();
|
|
30654
30742
|
init_accounts7();
|
|
@@ -30657,10 +30745,10 @@ var init_cron_dispatcher5 = __esm({
|
|
|
30657
30745
|
}
|
|
30658
30746
|
});
|
|
30659
30747
|
|
|
30660
|
-
//
|
|
30748
|
+
// ../server/dist/channels/wecom/descriptor.js
|
|
30661
30749
|
var wecomDescriptor;
|
|
30662
30750
|
var init_descriptor6 = __esm({
|
|
30663
|
-
"
|
|
30751
|
+
"../server/dist/channels/wecom/descriptor.js"() {
|
|
30664
30752
|
"use strict";
|
|
30665
30753
|
init_handler7();
|
|
30666
30754
|
init_wecom();
|
|
@@ -30675,10 +30763,10 @@ var init_descriptor6 = __esm({
|
|
|
30675
30763
|
}
|
|
30676
30764
|
});
|
|
30677
30765
|
|
|
30678
|
-
//
|
|
30766
|
+
// ../server/dist/channels/descriptors.js
|
|
30679
30767
|
var defaultChannelDescriptors;
|
|
30680
30768
|
var init_descriptors = __esm({
|
|
30681
|
-
"
|
|
30769
|
+
"../server/dist/channels/descriptors.js"() {
|
|
30682
30770
|
"use strict";
|
|
30683
30771
|
init_descriptor();
|
|
30684
30772
|
init_descriptor2();
|
|
@@ -30697,7 +30785,7 @@ var init_descriptors = __esm({
|
|
|
30697
30785
|
}
|
|
30698
30786
|
});
|
|
30699
30787
|
|
|
30700
|
-
//
|
|
30788
|
+
// ../server/dist/middleware/auth.js
|
|
30701
30789
|
import { Hono as Hono21 } from "hono";
|
|
30702
30790
|
import { getCookie, setCookie } from "hono/cookie";
|
|
30703
30791
|
import crypto5 from "node:crypto";
|
|
@@ -30890,7 +30978,7 @@ function authMiddleware() {
|
|
|
30890
30978
|
}
|
|
30891
30979
|
var TOKEN_MAX_AGE, REFRESH_AFTER, COOKIE_NAME, ADMIN_LOGIN_BUCKET, isLockedOut2, recordFailure2, clearFailures2, PUBLIC_PATHS;
|
|
30892
30980
|
var init_auth = __esm({
|
|
30893
|
-
"
|
|
30981
|
+
"../server/dist/middleware/auth.js"() {
|
|
30894
30982
|
"use strict";
|
|
30895
30983
|
init_config();
|
|
30896
30984
|
init_password_hash();
|
|
@@ -30907,7 +30995,7 @@ var init_auth = __esm({
|
|
|
30907
30995
|
}
|
|
30908
30996
|
});
|
|
30909
30997
|
|
|
30910
|
-
//
|
|
30998
|
+
// ../server/dist/index.js
|
|
30911
30999
|
var dist_exports = {};
|
|
30912
31000
|
import { Hono as Hono22 } from "hono";
|
|
30913
31001
|
import { cors } from "hono/cors";
|
|
@@ -31036,7 +31124,7 @@ async function gracefulShutdown(signal) {
|
|
|
31036
31124
|
}
|
|
31037
31125
|
var __dirname3, PORT, HALO_VERSION, PROJECT_ROOT, HALO_HOME4, GIT_SHA, AGENTCORE, app, allowlist, authRoutes, fileRoutes, dataPreviewRoutes, gitRoutes, agentConfigRoutes, skillRoutes, settingsRoutes, evolutionRoutes, cronRoutes, channelDb, registry, sessionRoutes, sessionArchiveRoutes, showRoutes, metricsRoutes, commandRoutes, FRONTEND_DIR, server, wss;
|
|
31038
31126
|
var init_dist2 = __esm({
|
|
31039
|
-
async "
|
|
31127
|
+
async "../server/dist/index.js"() {
|
|
31040
31128
|
"use strict";
|
|
31041
31129
|
init_files();
|
|
31042
31130
|
init_data_preview();
|
|
@@ -31078,7 +31166,7 @@ var init_dist2 = __esm({
|
|
|
31078
31166
|
init_git_ssh();
|
|
31079
31167
|
__dirname3 = path68.dirname(fileURLToPath3(import.meta.url));
|
|
31080
31168
|
PORT = config.server.port;
|
|
31081
|
-
HALO_VERSION = "1.3.
|
|
31169
|
+
HALO_VERSION = "1.3.4-c3090bf";
|
|
31082
31170
|
PROJECT_ROOT = findProjectRoot();
|
|
31083
31171
|
HALO_HOME4 = path68.join(homedir24(), ".halo");
|
|
31084
31172
|
GIT_SHA = readGitSha();
|
|
@@ -31269,7 +31357,7 @@ var init_dist2 = __esm({
|
|
|
31269
31357
|
}
|
|
31270
31358
|
});
|
|
31271
31359
|
|
|
31272
|
-
//
|
|
31360
|
+
// ../acp-adapter/dist/halo-client.js
|
|
31273
31361
|
async function safeText(res) {
|
|
31274
31362
|
try {
|
|
31275
31363
|
return (await res.text()).slice(0, 500);
|
|
@@ -31312,7 +31400,7 @@ async function* parseSseStream(body) {
|
|
|
31312
31400
|
}
|
|
31313
31401
|
var HaloClient;
|
|
31314
31402
|
var init_halo_client = __esm({
|
|
31315
|
-
"
|
|
31403
|
+
"../acp-adapter/dist/halo-client.js"() {
|
|
31316
31404
|
"use strict";
|
|
31317
31405
|
HaloClient = class {
|
|
31318
31406
|
opts;
|
|
@@ -31412,7 +31500,7 @@ var init_halo_client = __esm({
|
|
|
31412
31500
|
}
|
|
31413
31501
|
});
|
|
31414
31502
|
|
|
31415
|
-
//
|
|
31503
|
+
// ../acp-adapter/dist/adapter.js
|
|
31416
31504
|
function newError(message, code = -32603) {
|
|
31417
31505
|
const e = new Error(message);
|
|
31418
31506
|
e.code = code;
|
|
@@ -31420,7 +31508,7 @@ function newError(message, code = -32603) {
|
|
|
31420
31508
|
}
|
|
31421
31509
|
var AcpAdapter;
|
|
31422
31510
|
var init_adapter = __esm({
|
|
31423
|
-
"
|
|
31511
|
+
"../acp-adapter/dist/adapter.js"() {
|
|
31424
31512
|
"use strict";
|
|
31425
31513
|
init_halo_client();
|
|
31426
31514
|
AcpAdapter = class {
|
|
@@ -31707,10 +31795,10 @@ var init_adapter = __esm({
|
|
|
31707
31795
|
}
|
|
31708
31796
|
});
|
|
31709
31797
|
|
|
31710
|
-
//
|
|
31798
|
+
// ../acp-adapter/dist/jsonrpc.js
|
|
31711
31799
|
var ERROR_PARSE, ERROR_METHOD_NOT_FOUND, ERROR_INTERNAL, JsonRpcConnection;
|
|
31712
31800
|
var init_jsonrpc = __esm({
|
|
31713
|
-
"
|
|
31801
|
+
"../acp-adapter/dist/jsonrpc.js"() {
|
|
31714
31802
|
"use strict";
|
|
31715
31803
|
ERROR_PARSE = -32700;
|
|
31716
31804
|
ERROR_METHOD_NOT_FOUND = -32601;
|
|
@@ -31843,7 +31931,7 @@ var init_jsonrpc = __esm({
|
|
|
31843
31931
|
}
|
|
31844
31932
|
});
|
|
31845
31933
|
|
|
31846
|
-
//
|
|
31934
|
+
// ../acp-adapter/dist/index.js
|
|
31847
31935
|
var dist_exports2 = {};
|
|
31848
31936
|
__export(dist_exports2, {
|
|
31849
31937
|
main: () => main
|
|
@@ -31959,7 +32047,7 @@ function main(argv = process.argv.slice(2)) {
|
|
|
31959
32047
|
}
|
|
31960
32048
|
var HELP;
|
|
31961
32049
|
var init_dist3 = __esm({
|
|
31962
|
-
"
|
|
32050
|
+
"../acp-adapter/dist/index.js"() {
|
|
31963
32051
|
"use strict";
|
|
31964
32052
|
init_adapter();
|
|
31965
32053
|
init_jsonrpc();
|
|
@@ -31998,7 +32086,7 @@ Stdio:
|
|
|
31998
32086
|
}
|
|
31999
32087
|
});
|
|
32000
32088
|
|
|
32001
|
-
//
|
|
32089
|
+
// src/silence-warnings.ts
|
|
32002
32090
|
var emit = process.emitWarning.bind(process);
|
|
32003
32091
|
process.emitWarning = (warning, ...args) => {
|
|
32004
32092
|
const opt = args[0];
|
|
@@ -32007,13 +32095,13 @@ process.emitWarning = (warning, ...args) => {
|
|
|
32007
32095
|
return emit(warning, ...args);
|
|
32008
32096
|
};
|
|
32009
32097
|
|
|
32010
|
-
//
|
|
32098
|
+
// src/index.ts
|
|
32011
32099
|
init_server_supervisor();
|
|
32012
32100
|
import path69 from "node:path";
|
|
32013
32101
|
import fs63 from "node:fs";
|
|
32014
32102
|
import { homedir as homedir25 } from "node:os";
|
|
32015
32103
|
import { parseArgs as parseArgs2 } from "node:util";
|
|
32016
|
-
var VERSION = "1.3.
|
|
32104
|
+
var VERSION = "1.3.4-c3090bf";
|
|
32017
32105
|
var HELP_TOP = `Usage: halo <command> [options]
|
|
32018
32106
|
|
|
32019
32107
|
Commands:
|