@turmind/halo 1.3.2 → 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/deploy.md +5 -2
- package/bundled-docs/dev/tools.md +10 -2
- package/dist/index.js +546 -454
- 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/{vbv7FN3A5To2JBO2ozlis → BVMDWdlRNum62_KgIRZVc}/_buildManifest.js +0 -0
- /package/admin-out/_next/static/{vbv7FN3A5To2JBO2ozlis → 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";
|
|
@@ -5764,7 +5788,7 @@ function sweepInterruptedRuns(host) {
|
|
|
5764
5788
|
continue;
|
|
5765
5789
|
if (isInternalAgent2(row.agentId, host.workspaceRoot))
|
|
5766
5790
|
continue;
|
|
5767
|
-
const nudge = `[System] The server restarted at ${restartedAt} while you were mid-
|
|
5791
|
+
const nudge = `[System] The server restarted at ${restartedAt} while you were mid-turn. Your conversation history up to your last completed tool call is intact; the tool call that was in flight when the process died was cut off, and its result may or may not have landed on disk \u2014 check before repeating anything with side effects. Look at what you were doing right before this message and continue the task from there; do not start over or wait for more input. If you had sub-agents running, they were cut off too (marked stopped, no further reports will arrive) \u2014 re-dispatch with query_session("<id>", ...) to revive one with its context intact.`;
|
|
5768
5792
|
host.appendUserMessage(rootId, nudge);
|
|
5769
5793
|
host.sendUserMessage(rootId, nudge).catch((err) => {
|
|
5770
5794
|
console.error(`[RunLedger] Restart nudge failed for ${rootId}: ${err instanceof Error ? err.message : String(err)}`);
|
|
@@ -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,
|
|
@@ -12473,6 +12526,7 @@ var init_session_manager = __esm({
|
|
|
12473
12526
|
}
|
|
12474
12527
|
case "tool_call": {
|
|
12475
12528
|
session.lastActivityAt = (/* @__PURE__ */ new Date()).toISOString();
|
|
12529
|
+
this.saveAgentState(session);
|
|
12476
12530
|
const loopStatus = this.checkLoop(session, event.toolName, event.toolInput);
|
|
12477
12531
|
if (loopStatus === "warn") {
|
|
12478
12532
|
this.emitEvent(session.id, { type: "system", text: `\u26A0\uFE0F Tool "${event.toolName}" called repeatedly with identical input. Consider a different approach.` });
|
|
@@ -12553,7 +12607,10 @@ var init_session_manager = __esm({
|
|
|
12553
12607
|
session.turnStartTime = Date.now();
|
|
12554
12608
|
const iter = session.agent.run(input, {
|
|
12555
12609
|
cancelSignal: signal,
|
|
12556
|
-
beforeCallModel: () =>
|
|
12610
|
+
beforeCallModel: async () => {
|
|
12611
|
+
await this.maybeAutoCompact(session);
|
|
12612
|
+
this.saveAgentState(session);
|
|
12613
|
+
}
|
|
12557
12614
|
});
|
|
12558
12615
|
for await (const event of iter) {
|
|
12559
12616
|
if (signal.aborted)
|
|
@@ -12703,6 +12760,8 @@ var init_session_manager = __esm({
|
|
|
12703
12760
|
session.toolCallLog = [];
|
|
12704
12761
|
session.warnedToolHashes.clear();
|
|
12705
12762
|
session.interruptRequested = false;
|
|
12763
|
+
session.resumedAfterInterrupt = false;
|
|
12764
|
+
session.selfKick = false;
|
|
12706
12765
|
result = await this.runAgentTurn(session, message);
|
|
12707
12766
|
console.debug(`[SessionManager] runSession ${sessionId} first turn done \u2014 result: ${result.slice(0, 150)}`);
|
|
12708
12767
|
}
|
|
@@ -12843,6 +12902,9 @@ ${list}`;
|
|
|
12843
12902
|
async drainQueue(session) {
|
|
12844
12903
|
while (session.messageQueue.length > 0) {
|
|
12845
12904
|
const batch = session.messageQueue.splice(0);
|
|
12905
|
+
session.resumedAfterInterrupt = session.interruptRequested;
|
|
12906
|
+
const kickFlagReset = session.selfKick;
|
|
12907
|
+
session.selfKick = false;
|
|
12846
12908
|
session.interruptRequested = false;
|
|
12847
12909
|
session.toolCallLog = [];
|
|
12848
12910
|
session.warnedToolHashes.clear();
|
|
@@ -12857,7 +12919,8 @@ ${q.text}` : q.text).join("\n\n");
|
|
|
12857
12919
|
if (suffix && session.parentId === null) {
|
|
12858
12920
|
this.emitEvent(session.id, { type: "system", text: suffix.trim(), agentName: session.agentName });
|
|
12859
12921
|
}
|
|
12860
|
-
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);
|
|
12861
12924
|
try {
|
|
12862
12925
|
await this.runAgentTurn(session, input);
|
|
12863
12926
|
} catch (err) {
|
|
@@ -12865,6 +12928,15 @@ ${q.text}` : q.text).join("\n\n");
|
|
|
12865
12928
|
console.error(`[SessionManager] Drain run error for ${session.id}: ${errMsg}`);
|
|
12866
12929
|
throw err;
|
|
12867
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
|
+
}
|
|
12868
12940
|
if (session.parentId === null && session.messageQueue.length > 0) {
|
|
12869
12941
|
this.emitEvent(session.id, { type: "complete", batchBoundary: true });
|
|
12870
12942
|
}
|
|
@@ -12940,6 +13012,18 @@ ${q.text}` : q.text).join("\n\n");
|
|
|
12940
13012
|
this.markPendingToolCallsInterrupted(sessionId);
|
|
12941
13013
|
console.debug(`[SessionManager] Interrupted session ${sessionId}`);
|
|
12942
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
|
+
}
|
|
12943
13027
|
/** Append text as a user turn to a session's agent.messages, coalescing into
|
|
12944
13028
|
* a trailing user message if one exists. Two invariants drive this:
|
|
12945
13029
|
* 1. Anthropic rejects consecutive same-role messages, and the next
|
|
@@ -12977,6 +13061,7 @@ ${q.text}` : q.text);
|
|
|
12977
13061
|
}
|
|
12978
13062
|
session.messageQueue = [];
|
|
12979
13063
|
session.interruptRequested = false;
|
|
13064
|
+
session.selfKick = false;
|
|
12980
13065
|
if (session.abortController) {
|
|
12981
13066
|
session.abortController.abort(abortReason("stop"));
|
|
12982
13067
|
session.abortController = null;
|
|
@@ -13698,6 +13783,7 @@ ${result.summary}`, agentName: "user", report: true, taskId });
|
|
|
13698
13783
|
session.abortController.abort(abortReason("delete"));
|
|
13699
13784
|
session.abortController = null;
|
|
13700
13785
|
}
|
|
13786
|
+
session.selfKick = false;
|
|
13701
13787
|
if (session.promise) {
|
|
13702
13788
|
try {
|
|
13703
13789
|
await session.promise;
|
|
@@ -13714,6 +13800,7 @@ ${result.summary}`, agentName: "user", report: true, taskId });
|
|
|
13714
13800
|
childSession.abortController.abort(abortReason("delete"));
|
|
13715
13801
|
childSession.abortController = null;
|
|
13716
13802
|
}
|
|
13803
|
+
childSession.selfKick = false;
|
|
13717
13804
|
this.sessions.delete(id);
|
|
13718
13805
|
}
|
|
13719
13806
|
}
|
|
@@ -13758,6 +13845,7 @@ ${result.summary}`, agentName: "user", report: true, taskId });
|
|
|
13758
13845
|
session.abortController.abort(abortReason("archive"));
|
|
13759
13846
|
session.abortController = null;
|
|
13760
13847
|
}
|
|
13848
|
+
session.selfKick = false;
|
|
13761
13849
|
if (session.promise) {
|
|
13762
13850
|
try {
|
|
13763
13851
|
await session.promise;
|
|
@@ -13844,8 +13932,10 @@ ${result.summary}`, agentName: "user", report: true, taskId });
|
|
|
13844
13932
|
* message), and requests a SOFT interrupt so a busy turn yields after its
|
|
13845
13933
|
* current tool — same effect as sendUserMessage's busy branch, minus the
|
|
13846
13934
|
* idle/run path (the caller already established the session is busy or
|
|
13847
|
-
* compacting). When compacting
|
|
13848
|
-
*
|
|
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. */
|
|
13849
13939
|
async enqueueUserMessage(sessionId, text6, images) {
|
|
13850
13940
|
const session = this.sessions.get(sessionId);
|
|
13851
13941
|
if (!session)
|
|
@@ -13855,7 +13945,8 @@ ${result.summary}`, agentName: "user", report: true, taskId });
|
|
|
13855
13945
|
this.emitEvent(sessionId, { type: "system", text: `\u26A0 ${w}` });
|
|
13856
13946
|
}
|
|
13857
13947
|
session.messageQueue.push({ text: scoped.text, images });
|
|
13858
|
-
session.
|
|
13948
|
+
if (!session.isCompacting)
|
|
13949
|
+
session.interruptRequested = true;
|
|
13859
13950
|
console.debug(`[SessionManager] User message enqueued for ${sessionId} (${session.messageQueue.length} in queue)`);
|
|
13860
13951
|
}
|
|
13861
13952
|
/** Hard stop — abort immediately (for explicit user stop button).
|
|
@@ -13876,6 +13967,7 @@ ${q.text}` : q.text);
|
|
|
13876
13967
|
}
|
|
13877
13968
|
session.messageQueue = [];
|
|
13878
13969
|
session.interruptRequested = false;
|
|
13970
|
+
session.selfKick = false;
|
|
13879
13971
|
if (session.abortController) {
|
|
13880
13972
|
session.abortController.abort();
|
|
13881
13973
|
session.abortController = null;
|
|
@@ -13888,11 +13980,11 @@ ${q.text}` : q.text);
|
|
|
13888
13980
|
}
|
|
13889
13981
|
});
|
|
13890
13982
|
|
|
13891
|
-
//
|
|
13983
|
+
// ../server/dist/agents/session-manager-registry.js
|
|
13892
13984
|
import fs24 from "node:fs";
|
|
13893
13985
|
var SessionManagerRegistry;
|
|
13894
13986
|
var init_session_manager_registry = __esm({
|
|
13895
|
-
"
|
|
13987
|
+
"../server/dist/agents/session-manager-registry.js"() {
|
|
13896
13988
|
"use strict";
|
|
13897
13989
|
init_session_manager();
|
|
13898
13990
|
init_init();
|
|
@@ -13947,7 +14039,7 @@ var init_session_manager_registry = __esm({
|
|
|
13947
14039
|
}
|
|
13948
14040
|
});
|
|
13949
14041
|
|
|
13950
|
-
//
|
|
14042
|
+
// ../server/dist/logger.js
|
|
13951
14043
|
import fs25 from "node:fs";
|
|
13952
14044
|
import path31 from "node:path";
|
|
13953
14045
|
import { homedir as homedir13 } from "node:os";
|
|
@@ -14067,7 +14159,7 @@ function initLogger() {
|
|
|
14067
14159
|
}
|
|
14068
14160
|
var LOG_FILENAME, logDir, logFile, currentSize, LEVEL_ORDER, OTEL_SEVERITY;
|
|
14069
14161
|
var init_logger = __esm({
|
|
14070
|
-
"
|
|
14162
|
+
"../server/dist/logger.js"() {
|
|
14071
14163
|
"use strict";
|
|
14072
14164
|
init_config();
|
|
14073
14165
|
init_otel();
|
|
@@ -14085,7 +14177,7 @@ var init_logger = __esm({
|
|
|
14085
14177
|
}
|
|
14086
14178
|
});
|
|
14087
14179
|
|
|
14088
|
-
//
|
|
14180
|
+
// src/harness.ts
|
|
14089
14181
|
var harness_exports = {};
|
|
14090
14182
|
__export(harness_exports, {
|
|
14091
14183
|
createHarness: () => createHarness,
|
|
@@ -14326,7 +14418,7 @@ async function createHarness(opts) {
|
|
|
14326
14418
|
}
|
|
14327
14419
|
var SESSION_PREFIX, USER_ID;
|
|
14328
14420
|
var init_harness = __esm({
|
|
14329
|
-
"
|
|
14421
|
+
"src/harness.ts"() {
|
|
14330
14422
|
"use strict";
|
|
14331
14423
|
init_session_manager();
|
|
14332
14424
|
init_session_manager_registry();
|
|
@@ -14343,7 +14435,7 @@ var init_harness = __esm({
|
|
|
14343
14435
|
}
|
|
14344
14436
|
});
|
|
14345
14437
|
|
|
14346
|
-
//
|
|
14438
|
+
// ../server/dist/middleware/password-hash.js
|
|
14347
14439
|
var password_hash_exports = {};
|
|
14348
14440
|
__export(password_hash_exports, {
|
|
14349
14441
|
generateJwtSecret: () => generateJwtSecret,
|
|
@@ -14393,7 +14485,7 @@ function generateJwtSecret() {
|
|
|
14393
14485
|
}
|
|
14394
14486
|
var scryptAsync, COST, KEY_LEN;
|
|
14395
14487
|
var init_password_hash = __esm({
|
|
14396
|
-
"
|
|
14488
|
+
"../server/dist/middleware/password-hash.js"() {
|
|
14397
14489
|
"use strict";
|
|
14398
14490
|
scryptAsync = promisify2(crypto2.scrypt);
|
|
14399
14491
|
COST = { N: 16384, r: 8, p: 1 };
|
|
@@ -14401,7 +14493,7 @@ var init_password_hash = __esm({
|
|
|
14401
14493
|
}
|
|
14402
14494
|
});
|
|
14403
14495
|
|
|
14404
|
-
//
|
|
14496
|
+
// ../server/dist/setup-config.js
|
|
14405
14497
|
var setup_config_exports = {};
|
|
14406
14498
|
__export(setup_config_exports, {
|
|
14407
14499
|
configLeafSet: () => configLeafSet,
|
|
@@ -14442,13 +14534,13 @@ function configLeafSet(dotPath) {
|
|
|
14442
14534
|
}
|
|
14443
14535
|
var CONFIG_PATH;
|
|
14444
14536
|
var init_setup_config = __esm({
|
|
14445
|
-
"
|
|
14537
|
+
"../server/dist/setup-config.js"() {
|
|
14446
14538
|
"use strict";
|
|
14447
14539
|
CONFIG_PATH = path33.join(homedir14(), ".halo", "secrets", "config.yaml");
|
|
14448
14540
|
}
|
|
14449
14541
|
});
|
|
14450
14542
|
|
|
14451
|
-
//
|
|
14543
|
+
// ../server/dist/setup-settings.js
|
|
14452
14544
|
var setup_settings_exports = {};
|
|
14453
14545
|
__export(setup_settings_exports, {
|
|
14454
14546
|
maskSecret: () => maskSecret,
|
|
@@ -14527,13 +14619,13 @@ function maskSecret(value) {
|
|
|
14527
14619
|
}
|
|
14528
14620
|
var SETTINGS_PATH2;
|
|
14529
14621
|
var init_setup_settings = __esm({
|
|
14530
|
-
"
|
|
14622
|
+
"../server/dist/setup-settings.js"() {
|
|
14531
14623
|
"use strict";
|
|
14532
14624
|
SETTINGS_PATH2 = path34.join(homedir15(), ".halo", "secrets", "settings.yaml");
|
|
14533
14625
|
}
|
|
14534
14626
|
});
|
|
14535
14627
|
|
|
14536
|
-
//
|
|
14628
|
+
// ../server/dist/setup-providers.js
|
|
14537
14629
|
var setup_providers_exports = {};
|
|
14538
14630
|
__export(setup_providers_exports, {
|
|
14539
14631
|
AWS_CREDENTIAL_CHAIN_PROVIDER: () => AWS_CREDENTIAL_CHAIN_PROVIDER,
|
|
@@ -14739,7 +14831,7 @@ function listRequiredSkillsWithSecrets() {
|
|
|
14739
14831
|
}
|
|
14740
14832
|
var AWS_CREDENTIAL_CHAIN_PROVIDER, REBIND_BUILTIN_AGENT_IDS, GLOBAL_AGENTS_DIR3;
|
|
14741
14833
|
var init_setup_providers = __esm({
|
|
14742
|
-
"
|
|
14834
|
+
"../server/dist/setup-providers.js"() {
|
|
14743
14835
|
"use strict";
|
|
14744
14836
|
init_init();
|
|
14745
14837
|
init_setup_settings();
|
|
@@ -14749,7 +14841,7 @@ var init_setup_providers = __esm({
|
|
|
14749
14841
|
}
|
|
14750
14842
|
});
|
|
14751
14843
|
|
|
14752
|
-
//
|
|
14844
|
+
// src/setup-bind-provider.ts
|
|
14753
14845
|
var setup_bind_provider_exports = {};
|
|
14754
14846
|
__export(setup_bind_provider_exports, {
|
|
14755
14847
|
AWS_CHAIN_PROVIDER: () => AWS_CHAIN_PROVIDER,
|
|
@@ -14789,14 +14881,14 @@ function buildBindProviderPlan(configured, currentProvider, currentProviderHasKe
|
|
|
14789
14881
|
}
|
|
14790
14882
|
var AWS_CHAIN_PROVIDER, KEEP_CURRENT;
|
|
14791
14883
|
var init_setup_bind_provider = __esm({
|
|
14792
|
-
"
|
|
14884
|
+
"src/setup-bind-provider.ts"() {
|
|
14793
14885
|
"use strict";
|
|
14794
14886
|
AWS_CHAIN_PROVIDER = "aws-bedrock-claude-invoke";
|
|
14795
14887
|
KEEP_CURRENT = "__keep__";
|
|
14796
14888
|
}
|
|
14797
14889
|
});
|
|
14798
14890
|
|
|
14799
|
-
//
|
|
14891
|
+
// src/setup-prompts.ts
|
|
14800
14892
|
var setup_prompts_exports = {};
|
|
14801
14893
|
__export(setup_prompts_exports, {
|
|
14802
14894
|
promptMultiSelect: () => promptMultiSelect,
|
|
@@ -15082,12 +15174,12 @@ function promptMultiSelectRich(question, options) {
|
|
|
15082
15174
|
});
|
|
15083
15175
|
}
|
|
15084
15176
|
var init_setup_prompts = __esm({
|
|
15085
|
-
"
|
|
15177
|
+
"src/setup-prompts.ts"() {
|
|
15086
15178
|
"use strict";
|
|
15087
15179
|
}
|
|
15088
15180
|
});
|
|
15089
15181
|
|
|
15090
|
-
//
|
|
15182
|
+
// src/upgrade-verify.ts
|
|
15091
15183
|
var upgrade_verify_exports = {};
|
|
15092
15184
|
__export(upgrade_verify_exports, {
|
|
15093
15185
|
ALLOW_SCRIPTS: () => ALLOW_SCRIPTS,
|
|
@@ -15112,7 +15204,7 @@ function verifyNativeModules(pkgRoot) {
|
|
|
15112
15204
|
}
|
|
15113
15205
|
var NATIVE_MODULE_SMOKES, ALLOW_SCRIPTS;
|
|
15114
15206
|
var init_upgrade_verify = __esm({
|
|
15115
|
-
"
|
|
15207
|
+
"src/upgrade-verify.ts"() {
|
|
15116
15208
|
"use strict";
|
|
15117
15209
|
NATIVE_MODULE_SMOKES = [
|
|
15118
15210
|
{ name: "better-sqlite3", smoke: "new (require(process.argv[1]))(':memory:')" },
|
|
@@ -15122,7 +15214,7 @@ var init_upgrade_verify = __esm({
|
|
|
15122
15214
|
}
|
|
15123
15215
|
});
|
|
15124
15216
|
|
|
15125
|
-
//
|
|
15217
|
+
// src/render-md.ts
|
|
15126
15218
|
import { marked } from "marked";
|
|
15127
15219
|
import { markedTerminal } from "marked-terminal";
|
|
15128
15220
|
function renderMarkdown(text6) {
|
|
@@ -15130,14 +15222,14 @@ function renderMarkdown(text6) {
|
|
|
15130
15222
|
return rendered.replace(/\n{3,}/g, "\n\n").trimEnd();
|
|
15131
15223
|
}
|
|
15132
15224
|
var init_render_md = __esm({
|
|
15133
|
-
"
|
|
15225
|
+
"src/render-md.ts"() {
|
|
15134
15226
|
"use strict";
|
|
15135
15227
|
marked.use(markedTerminal({ reflowText: true, width: Math.min(process.stdout.columns || 80, 120) }));
|
|
15136
15228
|
marked.use({ breaks: true });
|
|
15137
15229
|
}
|
|
15138
15230
|
});
|
|
15139
15231
|
|
|
15140
|
-
//
|
|
15232
|
+
// src/resolve-refs.ts
|
|
15141
15233
|
import fs31 from "node:fs";
|
|
15142
15234
|
import path37 from "node:path";
|
|
15143
15235
|
function resolveRefs(input, workspace) {
|
|
@@ -15216,7 +15308,7 @@ ${content}
|
|
|
15216
15308
|
}
|
|
15217
15309
|
var MAX_FILE_BYTES, MAX_IMAGE_BYTES, REF_PATTERN;
|
|
15218
15310
|
var init_resolve_refs = __esm({
|
|
15219
|
-
"
|
|
15311
|
+
"src/resolve-refs.ts"() {
|
|
15220
15312
|
"use strict";
|
|
15221
15313
|
init_dist();
|
|
15222
15314
|
MAX_FILE_BYTES = 100 * 1024;
|
|
@@ -15225,7 +15317,7 @@ var init_resolve_refs = __esm({
|
|
|
15225
15317
|
}
|
|
15226
15318
|
});
|
|
15227
15319
|
|
|
15228
|
-
//
|
|
15320
|
+
// src/format-usage.ts
|
|
15229
15321
|
function fmtK(n) {
|
|
15230
15322
|
return `${(n / 1e3).toFixed(1)}K`;
|
|
15231
15323
|
}
|
|
@@ -15269,7 +15361,7 @@ function formatUsageLine(event) {
|
|
|
15269
15361
|
}
|
|
15270
15362
|
var ANSI;
|
|
15271
15363
|
var init_format_usage = __esm({
|
|
15272
|
-
"
|
|
15364
|
+
"src/format-usage.ts"() {
|
|
15273
15365
|
"use strict";
|
|
15274
15366
|
ANSI = {
|
|
15275
15367
|
reset: "\x1B[0m",
|
|
@@ -15283,7 +15375,7 @@ var init_format_usage = __esm({
|
|
|
15283
15375
|
}
|
|
15284
15376
|
});
|
|
15285
15377
|
|
|
15286
|
-
//
|
|
15378
|
+
// src/tui/components/banner.tsx
|
|
15287
15379
|
import { Box, Text } from "ink";
|
|
15288
15380
|
import { jsx } from "react/jsx-runtime";
|
|
15289
15381
|
function Banner() {
|
|
@@ -15291,7 +15383,7 @@ function Banner() {
|
|
|
15291
15383
|
}
|
|
15292
15384
|
var LINES, COLORS;
|
|
15293
15385
|
var init_banner = __esm({
|
|
15294
|
-
"
|
|
15386
|
+
"src/tui/components/banner.tsx"() {
|
|
15295
15387
|
"use strict";
|
|
15296
15388
|
LINES = [
|
|
15297
15389
|
" \u2588\u2588\u2557 \u2588\u2588\u2557 \u2588\u2588\u2588\u2588\u2588\u2557 \u2588\u2588\u2557 \u2588\u2588\u2588\u2588\u2588\u2588\u2557 ",
|
|
@@ -15305,7 +15397,7 @@ var init_banner = __esm({
|
|
|
15305
15397
|
}
|
|
15306
15398
|
});
|
|
15307
15399
|
|
|
15308
|
-
//
|
|
15400
|
+
// src/tui/components/messages.tsx
|
|
15309
15401
|
import { Box as Box2, Static, Text as Text2 } from "ink";
|
|
15310
15402
|
import { jsx as jsx2, jsxs } from "react/jsx-runtime";
|
|
15311
15403
|
function Messages({ blocks }) {
|
|
@@ -15363,7 +15455,7 @@ function Block({ block }) {
|
|
|
15363
15455
|
}
|
|
15364
15456
|
var BANNER_ID;
|
|
15365
15457
|
var init_messages = __esm({
|
|
15366
|
-
"
|
|
15458
|
+
"src/tui/components/messages.tsx"() {
|
|
15367
15459
|
"use strict";
|
|
15368
15460
|
init_format_usage();
|
|
15369
15461
|
init_banner();
|
|
@@ -15371,7 +15463,7 @@ var init_messages = __esm({
|
|
|
15371
15463
|
}
|
|
15372
15464
|
});
|
|
15373
15465
|
|
|
15374
|
-
//
|
|
15466
|
+
// src/tui/terminal-text.ts
|
|
15375
15467
|
function sanitizeToolOutput(s) {
|
|
15376
15468
|
return s.replace(ESCAPE_SEQ_RE, "").replace(/\r\n?/g, "\n").replace(/\t/g, " ").replace(C0_RE, "");
|
|
15377
15469
|
}
|
|
@@ -15401,14 +15493,14 @@ function tailByRows(text6, cols, maxRows) {
|
|
|
15401
15493
|
}
|
|
15402
15494
|
var ESCAPE_SEQ_RE, C0_RE;
|
|
15403
15495
|
var init_terminal_text = __esm({
|
|
15404
|
-
"
|
|
15496
|
+
"src/tui/terminal-text.ts"() {
|
|
15405
15497
|
"use strict";
|
|
15406
15498
|
ESCAPE_SEQ_RE = /\x1b\][^\x07\n]*\x07|\x1b\[[0-9;?]*[ -/]*[@-~]|\x1b[@-Z\\-_]/g;
|
|
15407
15499
|
C0_RE = /[\x00-\x09\x0b-\x1f\x7f]/g;
|
|
15408
15500
|
}
|
|
15409
15501
|
});
|
|
15410
15502
|
|
|
15411
|
-
//
|
|
15503
|
+
// src/tui/components/streaming.tsx
|
|
15412
15504
|
import { useEffect, useState } from "react";
|
|
15413
15505
|
import { Box as Box3, Text as Text3, useStdout } from "ink";
|
|
15414
15506
|
import Spinner from "ink-spinner";
|
|
@@ -15461,13 +15553,13 @@ function Streaming({ spinnerLabel, liveText, liveThinking, activeSubs, turnStart
|
|
|
15461
15553
|
] });
|
|
15462
15554
|
}
|
|
15463
15555
|
var init_streaming = __esm({
|
|
15464
|
-
"
|
|
15556
|
+
"src/tui/components/streaming.tsx"() {
|
|
15465
15557
|
"use strict";
|
|
15466
15558
|
init_terminal_text();
|
|
15467
15559
|
}
|
|
15468
15560
|
});
|
|
15469
15561
|
|
|
15470
|
-
//
|
|
15562
|
+
// src/tui/history.ts
|
|
15471
15563
|
import fs32 from "node:fs";
|
|
15472
15564
|
import path38 from "node:path";
|
|
15473
15565
|
import os2 from "node:os";
|
|
@@ -15493,14 +15585,14 @@ function appendHistory(entry) {
|
|
|
15493
15585
|
}
|
|
15494
15586
|
var HISTORY_FILE, MAX_ENTRIES;
|
|
15495
15587
|
var init_history = __esm({
|
|
15496
|
-
"
|
|
15588
|
+
"src/tui/history.ts"() {
|
|
15497
15589
|
"use strict";
|
|
15498
15590
|
HISTORY_FILE = path38.join(os2.homedir(), ".halo", "global", "tui-history.json");
|
|
15499
15591
|
MAX_ENTRIES = 100;
|
|
15500
15592
|
}
|
|
15501
15593
|
});
|
|
15502
15594
|
|
|
15503
|
-
//
|
|
15595
|
+
// src/tui/components/status-bar.tsx
|
|
15504
15596
|
import { Box as Box4, Text as Text4 } from "ink";
|
|
15505
15597
|
import { Fragment, jsx as jsx4, jsxs as jsxs3 } from "react/jsx-runtime";
|
|
15506
15598
|
function shortModel(modelId) {
|
|
@@ -15536,12 +15628,12 @@ function StatusBar({ agentName, modelId, contextPercent, workspace, sessionId, v
|
|
|
15536
15628
|
] });
|
|
15537
15629
|
}
|
|
15538
15630
|
var init_status_bar = __esm({
|
|
15539
|
-
"
|
|
15631
|
+
"src/tui/components/status-bar.tsx"() {
|
|
15540
15632
|
"use strict";
|
|
15541
15633
|
}
|
|
15542
15634
|
});
|
|
15543
15635
|
|
|
15544
|
-
//
|
|
15636
|
+
// src/tui/components/slash-suggest.tsx
|
|
15545
15637
|
import { Box as Box5, Text as Text5 } from "ink";
|
|
15546
15638
|
import { jsx as jsx5, jsxs as jsxs4 } from "react/jsx-runtime";
|
|
15547
15639
|
function SlashSuggest({ items, selectedIdx, maxWidth = 80 }) {
|
|
@@ -15568,12 +15660,12 @@ function SlashSuggest({ items, selectedIdx, maxWidth = 80 }) {
|
|
|
15568
15660
|
] });
|
|
15569
15661
|
}
|
|
15570
15662
|
var init_slash_suggest = __esm({
|
|
15571
|
-
"
|
|
15663
|
+
"src/tui/components/slash-suggest.tsx"() {
|
|
15572
15664
|
"use strict";
|
|
15573
15665
|
}
|
|
15574
15666
|
});
|
|
15575
15667
|
|
|
15576
|
-
//
|
|
15668
|
+
// src/tui/components/path-suggest.tsx
|
|
15577
15669
|
import { Box as Box6, Text as Text6 } from "ink";
|
|
15578
15670
|
import { jsx as jsx6, jsxs as jsxs5 } from "react/jsx-runtime";
|
|
15579
15671
|
function PathSuggest({ items, selectedIdx, cwdLabel }) {
|
|
@@ -15600,12 +15692,12 @@ function PathSuggest({ items, selectedIdx, cwdLabel }) {
|
|
|
15600
15692
|
] });
|
|
15601
15693
|
}
|
|
15602
15694
|
var init_path_suggest = __esm({
|
|
15603
|
-
"
|
|
15695
|
+
"src/tui/components/path-suggest.tsx"() {
|
|
15604
15696
|
"use strict";
|
|
15605
15697
|
}
|
|
15606
15698
|
});
|
|
15607
15699
|
|
|
15608
|
-
//
|
|
15700
|
+
// src/tui/path-suggest-engine.ts
|
|
15609
15701
|
import fs33 from "node:fs";
|
|
15610
15702
|
import path39 from "node:path";
|
|
15611
15703
|
function detectActiveRef(value) {
|
|
@@ -15691,13 +15783,13 @@ function applyPathPick(value, ref, pick) {
|
|
|
15691
15783
|
return `${before}@${kind} ${path70}`;
|
|
15692
15784
|
}
|
|
15693
15785
|
var init_path_suggest_engine = __esm({
|
|
15694
|
-
"
|
|
15786
|
+
"src/tui/path-suggest-engine.ts"() {
|
|
15695
15787
|
"use strict";
|
|
15696
15788
|
init_dist();
|
|
15697
15789
|
}
|
|
15698
15790
|
});
|
|
15699
15791
|
|
|
15700
|
-
//
|
|
15792
|
+
// src/tui/line-editor.ts
|
|
15701
15793
|
function toGraphemes(s) {
|
|
15702
15794
|
if (s === "") return [];
|
|
15703
15795
|
return [...segmenter.segment(s)].map((seg) => seg.segment);
|
|
@@ -15751,13 +15843,13 @@ function deleteToEnd(e) {
|
|
|
15751
15843
|
}
|
|
15752
15844
|
var segmenter;
|
|
15753
15845
|
var init_line_editor = __esm({
|
|
15754
|
-
"
|
|
15846
|
+
"src/tui/line-editor.ts"() {
|
|
15755
15847
|
"use strict";
|
|
15756
15848
|
segmenter = new Intl.Segmenter();
|
|
15757
15849
|
}
|
|
15758
15850
|
});
|
|
15759
15851
|
|
|
15760
|
-
//
|
|
15852
|
+
// src/tui/components/text-input.tsx
|
|
15761
15853
|
import { Text as Text7 } from "ink";
|
|
15762
15854
|
import { jsx as jsx7, jsxs as jsxs6 } from "react/jsx-runtime";
|
|
15763
15855
|
function TextInputView({ value, cursor, placeholder }) {
|
|
@@ -15782,13 +15874,13 @@ function TextInputView({ value, cursor, placeholder }) {
|
|
|
15782
15874
|
] });
|
|
15783
15875
|
}
|
|
15784
15876
|
var init_text_input = __esm({
|
|
15785
|
-
"
|
|
15877
|
+
"src/tui/components/text-input.tsx"() {
|
|
15786
15878
|
"use strict";
|
|
15787
15879
|
init_line_editor();
|
|
15788
15880
|
}
|
|
15789
15881
|
});
|
|
15790
15882
|
|
|
15791
|
-
//
|
|
15883
|
+
// src/tui/components/input-box.tsx
|
|
15792
15884
|
import { useState as useState2, useEffect as useEffect2, useMemo, useRef } from "react";
|
|
15793
15885
|
import { Box as Box7, Text as Text8, useInput, usePaste } from "ink";
|
|
15794
15886
|
import { jsx as jsx8, jsxs as jsxs7 } from "react/jsx-runtime";
|
|
@@ -16039,7 +16131,7 @@ function InputBox({ enabled: enabled2, placeholder, history, onSubmit, hint, com
|
|
|
16039
16131
|
] });
|
|
16040
16132
|
}
|
|
16041
16133
|
var init_input_box = __esm({
|
|
16042
|
-
"
|
|
16134
|
+
"src/tui/components/input-box.tsx"() {
|
|
16043
16135
|
"use strict";
|
|
16044
16136
|
init_slash_suggest();
|
|
16045
16137
|
init_path_suggest();
|
|
@@ -16049,7 +16141,7 @@ var init_input_box = __esm({
|
|
|
16049
16141
|
}
|
|
16050
16142
|
});
|
|
16051
16143
|
|
|
16052
|
-
//
|
|
16144
|
+
// src/tui/components/log-navigator.tsx
|
|
16053
16145
|
import { useState as useState3, useMemo as useMemo2, useEffect as useEffect3 } from "react";
|
|
16054
16146
|
import { Box as Box8, Text as Text9, useInput as useInput2 } from "ink";
|
|
16055
16147
|
import { jsx as jsx9, jsxs as jsxs8 } from "react/jsx-runtime";
|
|
@@ -16128,12 +16220,12 @@ function LogNavigator({ tree, onPick, onCancel }) {
|
|
|
16128
16220
|
] });
|
|
16129
16221
|
}
|
|
16130
16222
|
var init_log_navigator = __esm({
|
|
16131
|
-
"
|
|
16223
|
+
"src/tui/components/log-navigator.tsx"() {
|
|
16132
16224
|
"use strict";
|
|
16133
16225
|
}
|
|
16134
16226
|
});
|
|
16135
16227
|
|
|
16136
|
-
//
|
|
16228
|
+
// src/tui/components/log-viewer.tsx
|
|
16137
16229
|
import { useState as useState4, useMemo as useMemo3, useEffect as useEffect4, useRef as useRef2 } from "react";
|
|
16138
16230
|
import { Box as Box9, Text as Text10, useInput as useInput3, useStdout as useStdout2 } from "ink";
|
|
16139
16231
|
import { jsx as jsx10, jsxs as jsxs9 } from "react/jsx-runtime";
|
|
@@ -16206,12 +16298,12 @@ function LogViewer({ title, lines, live, onClose }) {
|
|
|
16206
16298
|
] });
|
|
16207
16299
|
}
|
|
16208
16300
|
var init_log_viewer = __esm({
|
|
16209
|
-
"
|
|
16301
|
+
"src/tui/components/log-viewer.tsx"() {
|
|
16210
16302
|
"use strict";
|
|
16211
16303
|
}
|
|
16212
16304
|
});
|
|
16213
16305
|
|
|
16214
|
-
//
|
|
16306
|
+
// src/tui/app.tsx
|
|
16215
16307
|
import { useEffect as useEffect5, useMemo as useMemo4, useReducer, useState as useState5, useRef as useRef3 } from "react";
|
|
16216
16308
|
import { Box as Box10, useApp, useInput as useInput4 } from "ink";
|
|
16217
16309
|
import { jsx as jsx11, jsxs as jsxs10 } from "react/jsx-runtime";
|
|
@@ -16921,7 +17013,7 @@ ${lines.join("\n")}` });
|
|
|
16921
17013
|
}
|
|
16922
17014
|
var MAX_CONTEXT_TOKENS_FALLBACK, blockSeq, ANSI2;
|
|
16923
17015
|
var init_app = __esm({
|
|
16924
|
-
"
|
|
17016
|
+
"src/tui/app.tsx"() {
|
|
16925
17017
|
"use strict";
|
|
16926
17018
|
init_render_md();
|
|
16927
17019
|
init_resolve_refs();
|
|
@@ -16949,7 +17041,7 @@ var init_app = __esm({
|
|
|
16949
17041
|
}
|
|
16950
17042
|
});
|
|
16951
17043
|
|
|
16952
|
-
//
|
|
17044
|
+
// src/tui.tsx
|
|
16953
17045
|
var tui_exports = {};
|
|
16954
17046
|
__export(tui_exports, {
|
|
16955
17047
|
runTui: () => runTui
|
|
@@ -16964,13 +17056,13 @@ async function runTui(harness, opts = {}) {
|
|
|
16964
17056
|
await instance.waitUntilExit();
|
|
16965
17057
|
}
|
|
16966
17058
|
var init_tui = __esm({
|
|
16967
|
-
"
|
|
17059
|
+
"src/tui.tsx"() {
|
|
16968
17060
|
"use strict";
|
|
16969
17061
|
init_app();
|
|
16970
17062
|
}
|
|
16971
17063
|
});
|
|
16972
17064
|
|
|
16973
|
-
//
|
|
17065
|
+
// src/cli.ts
|
|
16974
17066
|
var cli_exports = {};
|
|
16975
17067
|
__export(cli_exports, {
|
|
16976
17068
|
runCli: () => runCli
|
|
@@ -17154,7 +17246,7 @@ ${tag}${formatUsageLine(event)}
|
|
|
17154
17246
|
return errorText ? 1 : 0;
|
|
17155
17247
|
}
|
|
17156
17248
|
var init_cli = __esm({
|
|
17157
|
-
"
|
|
17249
|
+
"src/cli.ts"() {
|
|
17158
17250
|
"use strict";
|
|
17159
17251
|
init_render_md();
|
|
17160
17252
|
init_resolve_refs();
|
|
@@ -17162,7 +17254,7 @@ var init_cli = __esm({
|
|
|
17162
17254
|
}
|
|
17163
17255
|
});
|
|
17164
17256
|
|
|
17165
|
-
//
|
|
17257
|
+
// ../server/dist/channels/shared/media.js
|
|
17166
17258
|
import path40 from "node:path";
|
|
17167
17259
|
import os3 from "node:os";
|
|
17168
17260
|
function tempDir() {
|
|
@@ -17203,7 +17295,7 @@ function classifyMedia(filePath) {
|
|
|
17203
17295
|
}
|
|
17204
17296
|
var MEDIA_MARKER_RE, VIDEO_EXTS, VOICE_EXTS;
|
|
17205
17297
|
var init_media = __esm({
|
|
17206
|
-
"
|
|
17298
|
+
"../server/dist/channels/shared/media.js"() {
|
|
17207
17299
|
"use strict";
|
|
17208
17300
|
init_dist();
|
|
17209
17301
|
MEDIA_MARKER_RE = /^MEDIA:\s*(\S.*?)\s*$/gm;
|
|
@@ -17212,7 +17304,7 @@ var init_media = __esm({
|
|
|
17212
17304
|
}
|
|
17213
17305
|
});
|
|
17214
17306
|
|
|
17215
|
-
//
|
|
17307
|
+
// ../server/dist/routes/workspace-path.js
|
|
17216
17308
|
import fs34 from "node:fs/promises";
|
|
17217
17309
|
import { existsSync as existsSync2, realpathSync as realpathSync3 } from "node:fs";
|
|
17218
17310
|
import path41 from "node:path";
|
|
@@ -17256,12 +17348,12 @@ function isSafeIdSegment(id) {
|
|
|
17256
17348
|
return /^[\w.:>\u4e00-\u9fff-]+$/.test(id);
|
|
17257
17349
|
}
|
|
17258
17350
|
var init_workspace_path = __esm({
|
|
17259
|
-
"
|
|
17351
|
+
"../server/dist/routes/workspace-path.js"() {
|
|
17260
17352
|
"use strict";
|
|
17261
17353
|
}
|
|
17262
17354
|
});
|
|
17263
17355
|
|
|
17264
|
-
//
|
|
17356
|
+
// ../server/dist/routes/files.js
|
|
17265
17357
|
import { Hono } from "hono";
|
|
17266
17358
|
import fs35 from "node:fs/promises";
|
|
17267
17359
|
import { createReadStream } from "node:fs";
|
|
@@ -17801,7 +17893,7 @@ function createFileRoutes() {
|
|
|
17801
17893
|
return app2;
|
|
17802
17894
|
}
|
|
17803
17895
|
var init_files = __esm({
|
|
17804
|
-
"
|
|
17896
|
+
"../server/dist/routes/files.js"() {
|
|
17805
17897
|
"use strict";
|
|
17806
17898
|
init_dist();
|
|
17807
17899
|
init_media();
|
|
@@ -17809,7 +17901,7 @@ var init_files = __esm({
|
|
|
17809
17901
|
}
|
|
17810
17902
|
});
|
|
17811
17903
|
|
|
17812
|
-
//
|
|
17904
|
+
// ../server/dist/routes/data-preview.js
|
|
17813
17905
|
import { Hono as Hono2 } from "hono";
|
|
17814
17906
|
import fs36 from "node:fs/promises";
|
|
17815
17907
|
import { createReadStream as createReadStream2 } from "node:fs";
|
|
@@ -18034,7 +18126,7 @@ function createDataPreviewRoutes() {
|
|
|
18034
18126
|
}
|
|
18035
18127
|
var DEFAULT_LIMIT, MAX_LIMIT, MAX_ROW_CHARS, QUOTE, CR, LF, COMMA, SEMI, TAB, CsvScanner;
|
|
18036
18128
|
var init_data_preview = __esm({
|
|
18037
|
-
"
|
|
18129
|
+
"../server/dist/routes/data-preview.js"() {
|
|
18038
18130
|
"use strict";
|
|
18039
18131
|
init_workspace_path();
|
|
18040
18132
|
DEFAULT_LIMIT = 100;
|
|
@@ -18135,7 +18227,7 @@ var init_data_preview = __esm({
|
|
|
18135
18227
|
}
|
|
18136
18228
|
});
|
|
18137
18229
|
|
|
18138
|
-
//
|
|
18230
|
+
// ../server/dist/git-credentials.js
|
|
18139
18231
|
import fs37 from "node:fs";
|
|
18140
18232
|
import path44 from "node:path";
|
|
18141
18233
|
import { homedir as homedir18 } from "node:os";
|
|
@@ -18201,13 +18293,13 @@ function deleteGitCredential(host) {
|
|
|
18201
18293
|
}
|
|
18202
18294
|
var GIT_CREDENTIALS_PATH;
|
|
18203
18295
|
var init_git_credentials = __esm({
|
|
18204
|
-
"
|
|
18296
|
+
"../server/dist/git-credentials.js"() {
|
|
18205
18297
|
"use strict";
|
|
18206
18298
|
GIT_CREDENTIALS_PATH = path44.join(homedir18(), ".git-credentials");
|
|
18207
18299
|
}
|
|
18208
18300
|
});
|
|
18209
18301
|
|
|
18210
|
-
//
|
|
18302
|
+
// ../server/dist/git-ssh.js
|
|
18211
18303
|
import fs38 from "node:fs";
|
|
18212
18304
|
import os4 from "node:os";
|
|
18213
18305
|
import path45 from "node:path";
|
|
@@ -18384,7 +18476,7 @@ function getRemoteProtocol(projectRoot) {
|
|
|
18384
18476
|
}
|
|
18385
18477
|
var SSH_DIR, NON_KEY_NAMES, ownedAgentPid, ASKPASS_SCRIPT;
|
|
18386
18478
|
var init_git_ssh = __esm({
|
|
18387
|
-
"
|
|
18479
|
+
"../server/dist/git-ssh.js"() {
|
|
18388
18480
|
"use strict";
|
|
18389
18481
|
SSH_DIR = path45.join(os4.homedir(), ".ssh");
|
|
18390
18482
|
NON_KEY_NAMES = /* @__PURE__ */ new Set(["known_hosts", "known_hosts2", "authorized_keys", "config"]);
|
|
@@ -18397,7 +18489,7 @@ printf '%s\\n' "$HALO_SSH_PASSPHRASE"
|
|
|
18397
18489
|
}
|
|
18398
18490
|
});
|
|
18399
18491
|
|
|
18400
|
-
//
|
|
18492
|
+
// ../server/dist/routes/git.js
|
|
18401
18493
|
import { Hono as Hono3 } from "hono";
|
|
18402
18494
|
import os5 from "node:os";
|
|
18403
18495
|
import path46 from "node:path";
|
|
@@ -18763,7 +18855,7 @@ function createGitRoutes() {
|
|
|
18763
18855
|
return app2;
|
|
18764
18856
|
}
|
|
18765
18857
|
var init_git = __esm({
|
|
18766
|
-
"
|
|
18858
|
+
"../server/dist/routes/git.js"() {
|
|
18767
18859
|
"use strict";
|
|
18768
18860
|
init_dist();
|
|
18769
18861
|
init_workspace_path();
|
|
@@ -18773,7 +18865,7 @@ var init_git = __esm({
|
|
|
18773
18865
|
}
|
|
18774
18866
|
});
|
|
18775
18867
|
|
|
18776
|
-
//
|
|
18868
|
+
// ../server/dist/routes/mtime-cache.js
|
|
18777
18869
|
function createMtimeCache() {
|
|
18778
18870
|
const entries = /* @__PURE__ */ new Map();
|
|
18779
18871
|
return {
|
|
@@ -18788,12 +18880,12 @@ function createMtimeCache() {
|
|
|
18788
18880
|
};
|
|
18789
18881
|
}
|
|
18790
18882
|
var init_mtime_cache = __esm({
|
|
18791
|
-
"
|
|
18883
|
+
"../server/dist/routes/mtime-cache.js"() {
|
|
18792
18884
|
"use strict";
|
|
18793
18885
|
}
|
|
18794
18886
|
});
|
|
18795
18887
|
|
|
18796
|
-
//
|
|
18888
|
+
// ../server/dist/routes/agent-configs.js
|
|
18797
18889
|
import { Hono as Hono4 } from "hono";
|
|
18798
18890
|
import fs39 from "node:fs/promises";
|
|
18799
18891
|
import path47 from "node:path";
|
|
@@ -19327,7 +19419,7 @@ ${body.description ?? ""}
|
|
|
19327
19419
|
}
|
|
19328
19420
|
var _cachedTools, GLOBAL_AGENTS_DIR4, FALLBACK_SCAFFOLD_PROVIDER, _yamlCache;
|
|
19329
19421
|
var init_agent_configs = __esm({
|
|
19330
|
-
"
|
|
19422
|
+
"../server/dist/routes/agent-configs.js"() {
|
|
19331
19423
|
"use strict";
|
|
19332
19424
|
init_workspace_tools();
|
|
19333
19425
|
init_draft_tool();
|
|
@@ -19344,7 +19436,7 @@ var init_agent_configs = __esm({
|
|
|
19344
19436
|
}
|
|
19345
19437
|
});
|
|
19346
19438
|
|
|
19347
|
-
//
|
|
19439
|
+
// ../server/dist/routes/skills.js
|
|
19348
19440
|
import { Hono as Hono5 } from "hono";
|
|
19349
19441
|
import fs40 from "node:fs/promises";
|
|
19350
19442
|
import path48 from "node:path";
|
|
@@ -19539,7 +19631,7 @@ function createSkillRoutes() {
|
|
|
19539
19631
|
}
|
|
19540
19632
|
var GLOBAL_SETTINGS_PATH, _skillMdCache;
|
|
19541
19633
|
var init_skills = __esm({
|
|
19542
|
-
"
|
|
19634
|
+
"../server/dist/routes/skills.js"() {
|
|
19543
19635
|
"use strict";
|
|
19544
19636
|
init_agent_loader();
|
|
19545
19637
|
init_db();
|
|
@@ -19550,7 +19642,7 @@ var init_skills = __esm({
|
|
|
19550
19642
|
}
|
|
19551
19643
|
});
|
|
19552
19644
|
|
|
19553
|
-
//
|
|
19645
|
+
// ../server/dist/routes/settings.js
|
|
19554
19646
|
import { Hono as Hono6 } from "hono";
|
|
19555
19647
|
import fs41 from "node:fs/promises";
|
|
19556
19648
|
import path49 from "node:path";
|
|
@@ -19819,7 +19911,7 @@ function createSettingsRoutes() {
|
|
|
19819
19911
|
}
|
|
19820
19912
|
var GLOBAL_SETTINGS_PATH2, _changeListeners;
|
|
19821
19913
|
var init_settings = __esm({
|
|
19822
|
-
"
|
|
19914
|
+
"../server/dist/routes/settings.js"() {
|
|
19823
19915
|
"use strict";
|
|
19824
19916
|
init_settings_schema();
|
|
19825
19917
|
init_workspace_path();
|
|
@@ -19828,7 +19920,7 @@ var init_settings = __esm({
|
|
|
19828
19920
|
}
|
|
19829
19921
|
});
|
|
19830
19922
|
|
|
19831
|
-
//
|
|
19923
|
+
// ../server/dist/evolution/archive.js
|
|
19832
19924
|
import fs42 from "node:fs";
|
|
19833
19925
|
import path50 from "node:path";
|
|
19834
19926
|
import { pipeline } from "node:stream/promises";
|
|
@@ -19995,7 +20087,7 @@ function stopArchiveDaemon() {
|
|
|
19995
20087
|
}
|
|
19996
20088
|
var TERMINAL_RUN_STATUSES, TERMINAL_APPLY_STATUSES, DAY_MS, ARCHIVE_AFTER_MS, PURGE_AFTER_MS, _archiveTimer, _startupTimer;
|
|
19997
20089
|
var init_archive = __esm({
|
|
19998
|
-
"
|
|
20090
|
+
"../server/dist/evolution/archive.js"() {
|
|
19999
20091
|
"use strict";
|
|
20000
20092
|
init_evo_db();
|
|
20001
20093
|
init_paths();
|
|
@@ -20009,7 +20101,7 @@ var init_archive = __esm({
|
|
|
20009
20101
|
}
|
|
20010
20102
|
});
|
|
20011
20103
|
|
|
20012
|
-
//
|
|
20104
|
+
// ../server/dist/db/raw-sqlite.js
|
|
20013
20105
|
function rawSqlite(db) {
|
|
20014
20106
|
const withClient = db;
|
|
20015
20107
|
const client = withClient.$client ?? withClient.session?.client;
|
|
@@ -20018,12 +20110,12 @@ function rawSqlite(db) {
|
|
|
20018
20110
|
return client;
|
|
20019
20111
|
}
|
|
20020
20112
|
var init_raw_sqlite = __esm({
|
|
20021
|
-
"
|
|
20113
|
+
"../server/dist/db/raw-sqlite.js"() {
|
|
20022
20114
|
"use strict";
|
|
20023
20115
|
}
|
|
20024
20116
|
});
|
|
20025
20117
|
|
|
20026
|
-
//
|
|
20118
|
+
// ../server/dist/routes/evolution.js
|
|
20027
20119
|
import { Hono as Hono7 } from "hono";
|
|
20028
20120
|
import { eq as eq11, desc as desc2, lt as lt3, and as and8, or, sql } from "drizzle-orm";
|
|
20029
20121
|
import fs43 from "node:fs/promises";
|
|
@@ -20281,7 +20373,7 @@ function extractText(content) {
|
|
|
20281
20373
|
}
|
|
20282
20374
|
var UNDELETABLE_RUN_STATUSES;
|
|
20283
20375
|
var init_evolution = __esm({
|
|
20284
|
-
"
|
|
20376
|
+
"../server/dist/routes/evolution.js"() {
|
|
20285
20377
|
"use strict";
|
|
20286
20378
|
init_evo_db();
|
|
20287
20379
|
init_archive();
|
|
@@ -20292,7 +20384,7 @@ var init_evolution = __esm({
|
|
|
20292
20384
|
}
|
|
20293
20385
|
});
|
|
20294
20386
|
|
|
20295
|
-
//
|
|
20387
|
+
// ../server/dist/routes/sessions.js
|
|
20296
20388
|
import { Hono as Hono8 } from "hono";
|
|
20297
20389
|
import { and as and9, eq as eq12, gte as gte2, lt as lt4 } from "drizzle-orm";
|
|
20298
20390
|
function rawId() {
|
|
@@ -20547,7 +20639,7 @@ function createSessionRoutes(smRegistry) {
|
|
|
20547
20639
|
}
|
|
20548
20640
|
var msgCounter2;
|
|
20549
20641
|
var init_sessions = __esm({
|
|
20550
|
-
"
|
|
20642
|
+
"../server/dist/routes/sessions.js"() {
|
|
20551
20643
|
"use strict";
|
|
20552
20644
|
init_db();
|
|
20553
20645
|
init_schema();
|
|
@@ -20559,7 +20651,7 @@ var init_sessions = __esm({
|
|
|
20559
20651
|
}
|
|
20560
20652
|
});
|
|
20561
20653
|
|
|
20562
|
-
//
|
|
20654
|
+
// ../server/dist/routes/session-archive.js
|
|
20563
20655
|
import { Hono as Hono9 } from "hono";
|
|
20564
20656
|
function createSessionArchiveRoutes(smRegistry) {
|
|
20565
20657
|
const app2 = new Hono9();
|
|
@@ -20592,7 +20684,7 @@ function createSessionArchiveRoutes(smRegistry) {
|
|
|
20592
20684
|
return app2;
|
|
20593
20685
|
}
|
|
20594
20686
|
var init_session_archive2 = __esm({
|
|
20595
|
-
"
|
|
20687
|
+
"../server/dist/routes/session-archive.js"() {
|
|
20596
20688
|
"use strict";
|
|
20597
20689
|
init_db();
|
|
20598
20690
|
init_session_store();
|
|
@@ -20601,7 +20693,7 @@ var init_session_archive2 = __esm({
|
|
|
20601
20693
|
}
|
|
20602
20694
|
});
|
|
20603
20695
|
|
|
20604
|
-
//
|
|
20696
|
+
// ../server/dist/db/channel-db.js
|
|
20605
20697
|
import Database5 from "better-sqlite3";
|
|
20606
20698
|
import { drizzle as drizzle4 } from "drizzle-orm/better-sqlite3";
|
|
20607
20699
|
import { sqliteTable as sqliteTable4, text as text4, integer as integer4 } from "drizzle-orm/sqlite-core";
|
|
@@ -20627,7 +20719,7 @@ function getChannelDb() {
|
|
|
20627
20719
|
}
|
|
20628
20720
|
var channelAccounts, CREATE_SQL3, _channelDb;
|
|
20629
20721
|
var init_channel_db = __esm({
|
|
20630
|
-
"
|
|
20722
|
+
"../server/dist/db/channel-db.js"() {
|
|
20631
20723
|
"use strict";
|
|
20632
20724
|
init_migrate();
|
|
20633
20725
|
channelAccounts = sqliteTable4("channel_accounts", {
|
|
@@ -20661,7 +20753,7 @@ CREATE INDEX IF NOT EXISTS idx_channel_accounts_type ON channel_accounts(channel
|
|
|
20661
20753
|
}
|
|
20662
20754
|
});
|
|
20663
20755
|
|
|
20664
|
-
//
|
|
20756
|
+
// ../server/dist/channels/shared/accounts.js
|
|
20665
20757
|
import fs45 from "node:fs";
|
|
20666
20758
|
import path53 from "node:path";
|
|
20667
20759
|
import { eq as eq13, and as and10 } from "drizzle-orm";
|
|
@@ -20782,7 +20874,7 @@ function deleteAccount(db, accountId) {
|
|
|
20782
20874
|
}
|
|
20783
20875
|
var ACCOUNT_ACCESS_LEVELS, CHAT_ACCESS_LEVELS, _lastActiveChatCache, _wechatContextTokenCache;
|
|
20784
20876
|
var init_accounts = __esm({
|
|
20785
|
-
"
|
|
20877
|
+
"../server/dist/channels/shared/accounts.js"() {
|
|
20786
20878
|
"use strict";
|
|
20787
20879
|
init_channel_db();
|
|
20788
20880
|
init_init();
|
|
@@ -20793,7 +20885,7 @@ var init_accounts = __esm({
|
|
|
20793
20885
|
}
|
|
20794
20886
|
});
|
|
20795
20887
|
|
|
20796
|
-
//
|
|
20888
|
+
// ../server/dist/channels/web/accounts.js
|
|
20797
20889
|
function toWeb(a) {
|
|
20798
20890
|
const c = a.config;
|
|
20799
20891
|
return {
|
|
@@ -20856,14 +20948,14 @@ function deleteAccount2(db, accountId) {
|
|
|
20856
20948
|
}
|
|
20857
20949
|
var CH;
|
|
20858
20950
|
var init_accounts2 = __esm({
|
|
20859
|
-
"
|
|
20951
|
+
"../server/dist/channels/web/accounts.js"() {
|
|
20860
20952
|
"use strict";
|
|
20861
20953
|
init_accounts();
|
|
20862
20954
|
CH = "web";
|
|
20863
20955
|
}
|
|
20864
20956
|
});
|
|
20865
20957
|
|
|
20866
|
-
//
|
|
20958
|
+
// ../server/dist/middleware/brute-force.js
|
|
20867
20959
|
import { getConnInfo } from "@hono/node-server/conninfo";
|
|
20868
20960
|
function bucket(name) {
|
|
20869
20961
|
let b = buckets.get(name);
|
|
@@ -20914,7 +21006,7 @@ function clearFailures(bucketName, ip) {
|
|
|
20914
21006
|
}
|
|
20915
21007
|
var MAX_ATTEMPTS, LOCKOUT_MS, buckets;
|
|
20916
21008
|
var init_brute_force = __esm({
|
|
20917
|
-
"
|
|
21009
|
+
"../server/dist/middleware/brute-force.js"() {
|
|
20918
21010
|
"use strict";
|
|
20919
21011
|
init_config();
|
|
20920
21012
|
MAX_ATTEMPTS = 5;
|
|
@@ -20923,7 +21015,7 @@ var init_brute_force = __esm({
|
|
|
20923
21015
|
}
|
|
20924
21016
|
});
|
|
20925
21017
|
|
|
20926
|
-
//
|
|
21018
|
+
// ../server/dist/middleware/web-token.js
|
|
20927
21019
|
function resolveTokenAuth(c, db) {
|
|
20928
21020
|
const ip = getClientIp(c);
|
|
20929
21021
|
if (isLockedOut(TOKEN_BUCKET, ip))
|
|
@@ -20945,7 +21037,7 @@ function tokenAuthJsonError(c, reason) {
|
|
|
20945
21037
|
}
|
|
20946
21038
|
var TOKEN_BUCKET, TOKEN_AUTH_STATUS, JSON_ERROR;
|
|
20947
21039
|
var init_web_token = __esm({
|
|
20948
|
-
"
|
|
21040
|
+
"../server/dist/middleware/web-token.js"() {
|
|
20949
21041
|
"use strict";
|
|
20950
21042
|
init_accounts2();
|
|
20951
21043
|
init_brute_force();
|
|
@@ -20963,17 +21055,17 @@ var init_web_token = __esm({
|
|
|
20963
21055
|
}
|
|
20964
21056
|
});
|
|
20965
21057
|
|
|
20966
|
-
//
|
|
21058
|
+
// ../server/dist/channels/shared/session-prefix.js
|
|
20967
21059
|
function sessionPrefix(channel, userId) {
|
|
20968
21060
|
return `${channel}_${userId}_`;
|
|
20969
21061
|
}
|
|
20970
21062
|
var init_session_prefix = __esm({
|
|
20971
|
-
"
|
|
21063
|
+
"../server/dist/channels/shared/session-prefix.js"() {
|
|
20972
21064
|
"use strict";
|
|
20973
21065
|
}
|
|
20974
21066
|
});
|
|
20975
21067
|
|
|
20976
|
-
//
|
|
21068
|
+
// ../server/dist/channels/web/handler.js
|
|
20977
21069
|
function buildWebSessionPrefix(accountId) {
|
|
20978
21070
|
return sessionPrefix("web", accountId);
|
|
20979
21071
|
}
|
|
@@ -21390,7 +21482,7 @@ function createMediaBuffer() {
|
|
|
21390
21482
|
};
|
|
21391
21483
|
}
|
|
21392
21484
|
var init_handler = __esm({
|
|
21393
|
-
"
|
|
21485
|
+
"../server/dist/channels/web/handler.js"() {
|
|
21394
21486
|
"use strict";
|
|
21395
21487
|
init_ui_log_builder();
|
|
21396
21488
|
init_accounts2();
|
|
@@ -21407,7 +21499,7 @@ var init_handler = __esm({
|
|
|
21407
21499
|
}
|
|
21408
21500
|
});
|
|
21409
21501
|
|
|
21410
|
-
//
|
|
21502
|
+
// ../core/dist/protocol/session-message.js
|
|
21411
21503
|
function inferMessageType(msg) {
|
|
21412
21504
|
if (msg.type)
|
|
21413
21505
|
return msg.type;
|
|
@@ -21426,20 +21518,20 @@ function inferMessageType(msg) {
|
|
|
21426
21518
|
return "notification";
|
|
21427
21519
|
}
|
|
21428
21520
|
var init_session_message = __esm({
|
|
21429
|
-
"
|
|
21521
|
+
"../core/dist/protocol/session-message.js"() {
|
|
21430
21522
|
"use strict";
|
|
21431
21523
|
}
|
|
21432
21524
|
});
|
|
21433
21525
|
|
|
21434
|
-
//
|
|
21526
|
+
// ../core/dist/protocol/index.js
|
|
21435
21527
|
var init_protocol = __esm({
|
|
21436
|
-
"
|
|
21528
|
+
"../core/dist/protocol/index.js"() {
|
|
21437
21529
|
"use strict";
|
|
21438
21530
|
init_session_message();
|
|
21439
21531
|
}
|
|
21440
21532
|
});
|
|
21441
21533
|
|
|
21442
|
-
//
|
|
21534
|
+
// ../server/dist/sessions/session-types.js
|
|
21443
21535
|
function messageToolCalls(msg) {
|
|
21444
21536
|
if (msg.contentBlocks) {
|
|
21445
21537
|
return msg.contentBlocks.filter((b) => b.type === "tool_call").map((b) => b.toolCall);
|
|
@@ -21447,13 +21539,13 @@ function messageToolCalls(msg) {
|
|
|
21447
21539
|
return msg.toolCalls ?? [];
|
|
21448
21540
|
}
|
|
21449
21541
|
var init_session_types = __esm({
|
|
21450
|
-
"
|
|
21542
|
+
"../server/dist/sessions/session-types.js"() {
|
|
21451
21543
|
"use strict";
|
|
21452
21544
|
init_protocol();
|
|
21453
21545
|
}
|
|
21454
21546
|
});
|
|
21455
21547
|
|
|
21456
|
-
//
|
|
21548
|
+
// ../server/dist/routes/halo-city.js
|
|
21457
21549
|
import { Hono as Hono10 } from "hono";
|
|
21458
21550
|
import fs46 from "node:fs";
|
|
21459
21551
|
import path54 from "node:path";
|
|
@@ -21840,7 +21932,7 @@ function createShowRoutes(registry2) {
|
|
|
21840
21932
|
}
|
|
21841
21933
|
var SESSIONS_PER_WS, _skillCache, _metaCache, _roReaders, SESSION_LOG_MAX_MSGS, _birthCache;
|
|
21842
21934
|
var init_halo_city = __esm({
|
|
21843
|
-
"
|
|
21935
|
+
"../server/dist/routes/halo-city.js"() {
|
|
21844
21936
|
"use strict";
|
|
21845
21937
|
init_channel_db();
|
|
21846
21938
|
init_web_token();
|
|
@@ -21858,7 +21950,7 @@ var init_halo_city = __esm({
|
|
|
21858
21950
|
}
|
|
21859
21951
|
});
|
|
21860
21952
|
|
|
21861
|
-
//
|
|
21953
|
+
// ../server/dist/routes/metrics.js
|
|
21862
21954
|
import { Hono as Hono11 } from "hono";
|
|
21863
21955
|
function family(name, type, help, samples) {
|
|
21864
21956
|
const lines = [`# HELP ${name} ${help}`, `# TYPE ${name} ${type}`];
|
|
@@ -21937,7 +22029,7 @@ function createMetricsRoutes(registry2) {
|
|
|
21937
22029
|
}
|
|
21938
22030
|
var TEXT_ERROR, SESSIONS_PER_WS2;
|
|
21939
22031
|
var init_metrics = __esm({
|
|
21940
|
-
"
|
|
22032
|
+
"../server/dist/routes/metrics.js"() {
|
|
21941
22033
|
"use strict";
|
|
21942
22034
|
init_channel_db();
|
|
21943
22035
|
init_web_token();
|
|
@@ -21951,7 +22043,7 @@ var init_metrics = __esm({
|
|
|
21951
22043
|
}
|
|
21952
22044
|
});
|
|
21953
22045
|
|
|
21954
|
-
//
|
|
22046
|
+
// ../server/dist/routes/commands.js
|
|
21955
22047
|
import { Hono as Hono12 } from "hono";
|
|
21956
22048
|
function createCommandRoutes(registry2, smRegistry) {
|
|
21957
22049
|
const app2 = new Hono12();
|
|
@@ -21976,12 +22068,12 @@ function createCommandRoutes(registry2, smRegistry) {
|
|
|
21976
22068
|
return app2;
|
|
21977
22069
|
}
|
|
21978
22070
|
var init_commands3 = __esm({
|
|
21979
|
-
"
|
|
22071
|
+
"../server/dist/routes/commands.js"() {
|
|
21980
22072
|
"use strict";
|
|
21981
22073
|
}
|
|
21982
22074
|
});
|
|
21983
22075
|
|
|
21984
|
-
//
|
|
22076
|
+
// ../server/dist/routes/agentcore.js
|
|
21985
22077
|
import { Hono as Hono13 } from "hono";
|
|
21986
22078
|
import path55 from "node:path";
|
|
21987
22079
|
import fs47 from "node:fs";
|
|
@@ -22330,7 +22422,7 @@ ${fullText}`, images.length > 0 ? images : void 0);
|
|
|
22330
22422
|
}
|
|
22331
22423
|
var SESSION_HEADER, MAX_IMAGES_PER_MESSAGE, MAX_IMAGE_BASE64_LENGTH, MAX_PENDING_UPLOADS, MAX_CHUNKS_PER_UPLOAD, activeOverrides;
|
|
22332
22424
|
var init_agentcore = __esm({
|
|
22333
|
-
"
|
|
22425
|
+
"../server/dist/routes/agentcore.js"() {
|
|
22334
22426
|
"use strict";
|
|
22335
22427
|
init_commands2();
|
|
22336
22428
|
init_ui_log_builder();
|
|
@@ -22345,7 +22437,7 @@ var init_agentcore = __esm({
|
|
|
22345
22437
|
}
|
|
22346
22438
|
});
|
|
22347
22439
|
|
|
22348
|
-
//
|
|
22440
|
+
// ../server/dist/ws/file-watcher.js
|
|
22349
22441
|
import fs48 from "node:fs";
|
|
22350
22442
|
import path56 from "node:path";
|
|
22351
22443
|
function enqueueNativeOp(op) {
|
|
@@ -22367,7 +22459,7 @@ function isUnwatchablePath(absPath) {
|
|
|
22367
22459
|
}
|
|
22368
22460
|
var IGNORED_SEGMENTS, IS_WIN32, IGNORED_SEGMENT_SET, NATIVE_IGNORE, nativeOpChain, WorkspaceWatcher;
|
|
22369
22461
|
var init_file_watcher = __esm({
|
|
22370
|
-
"
|
|
22462
|
+
"../server/dist/ws/file-watcher.js"() {
|
|
22371
22463
|
"use strict";
|
|
22372
22464
|
IGNORED_SEGMENTS = [
|
|
22373
22465
|
// VCS
|
|
@@ -22589,12 +22681,12 @@ var init_file_watcher = __esm({
|
|
|
22589
22681
|
}
|
|
22590
22682
|
});
|
|
22591
22683
|
|
|
22592
|
-
//
|
|
22684
|
+
// ../server/dist/ws/git-dir-watcher.js
|
|
22593
22685
|
import fs49 from "node:fs";
|
|
22594
22686
|
import path57 from "node:path";
|
|
22595
22687
|
var GitDirWatcher;
|
|
22596
22688
|
var init_git_dir_watcher = __esm({
|
|
22597
|
-
"
|
|
22689
|
+
"../server/dist/ws/git-dir-watcher.js"() {
|
|
22598
22690
|
"use strict";
|
|
22599
22691
|
GitDirWatcher = class {
|
|
22600
22692
|
watcher = null;
|
|
@@ -22713,7 +22805,7 @@ var init_git_dir_watcher = __esm({
|
|
|
22713
22805
|
}
|
|
22714
22806
|
});
|
|
22715
22807
|
|
|
22716
|
-
//
|
|
22808
|
+
// ../server/dist/ws/event-processor.js
|
|
22717
22809
|
function sendJson(ws, data) {
|
|
22718
22810
|
if (ws.readyState === ws.OPEN) {
|
|
22719
22811
|
try {
|
|
@@ -22812,16 +22904,16 @@ function bufferDetachedNotification(event, pendingEvents) {
|
|
|
22812
22904
|
}
|
|
22813
22905
|
}
|
|
22814
22906
|
var init_event_processor = __esm({
|
|
22815
|
-
"
|
|
22907
|
+
"../server/dist/ws/event-processor.js"() {
|
|
22816
22908
|
"use strict";
|
|
22817
22909
|
init_ui_log_builder();
|
|
22818
22910
|
}
|
|
22819
22911
|
});
|
|
22820
22912
|
|
|
22821
|
-
//
|
|
22913
|
+
// ../server/dist/ws/watcher-pool.js
|
|
22822
22914
|
var WatcherPool;
|
|
22823
22915
|
var init_watcher_pool = __esm({
|
|
22824
|
-
"
|
|
22916
|
+
"../server/dist/ws/watcher-pool.js"() {
|
|
22825
22917
|
"use strict";
|
|
22826
22918
|
init_file_watcher();
|
|
22827
22919
|
init_git_dir_watcher();
|
|
@@ -22879,7 +22971,7 @@ var init_watcher_pool = __esm({
|
|
|
22879
22971
|
}
|
|
22880
22972
|
});
|
|
22881
22973
|
|
|
22882
|
-
//
|
|
22974
|
+
// ../server/dist/ws/terminal-manager.js
|
|
22883
22975
|
import { homedir as homedir22 } from "node:os";
|
|
22884
22976
|
import { basename } from "node:path";
|
|
22885
22977
|
import { createRequire } from "node:module";
|
|
@@ -22910,7 +23002,7 @@ function attachListenersOnce(t2) {
|
|
|
22910
23002
|
}
|
|
22911
23003
|
var requireFromHere, ptyModule, TERMINAL_GRACE_MS, terminals, TerminalManager;
|
|
22912
23004
|
var init_terminal_manager = __esm({
|
|
22913
|
-
"
|
|
23005
|
+
"../server/dist/ws/terminal-manager.js"() {
|
|
22914
23006
|
"use strict";
|
|
22915
23007
|
init_config();
|
|
22916
23008
|
init_child_env();
|
|
@@ -23058,7 +23150,7 @@ var init_terminal_manager = __esm({
|
|
|
23058
23150
|
}
|
|
23059
23151
|
});
|
|
23060
23152
|
|
|
23061
|
-
//
|
|
23153
|
+
// ../server/dist/ws/handler.js
|
|
23062
23154
|
import path58 from "node:path";
|
|
23063
23155
|
function setupWebSocketHandler(deps) {
|
|
23064
23156
|
const { wss: wss2, registry: registry2 } = deps;
|
|
@@ -23674,7 +23766,7 @@ ${msg.message}` : markers.join("\n");
|
|
|
23674
23766
|
}
|
|
23675
23767
|
var CLIENT_SILENCE_LIMIT_MS, detachedSessions;
|
|
23676
23768
|
var init_handler2 = __esm({
|
|
23677
|
-
"
|
|
23769
|
+
"../server/dist/ws/handler.js"() {
|
|
23678
23770
|
"use strict";
|
|
23679
23771
|
init_ui_log_builder();
|
|
23680
23772
|
init_config();
|
|
@@ -23692,7 +23784,7 @@ var init_handler2 = __esm({
|
|
|
23692
23784
|
}
|
|
23693
23785
|
});
|
|
23694
23786
|
|
|
23695
|
-
//
|
|
23787
|
+
// ../server/dist/db/cron-db.js
|
|
23696
23788
|
import Database7 from "better-sqlite3";
|
|
23697
23789
|
import { drizzle as drizzle5 } from "drizzle-orm/better-sqlite3";
|
|
23698
23790
|
import { sqliteTable as sqliteTable5, text as text5, integer as integer5 } from "drizzle-orm/sqlite-core";
|
|
@@ -23717,7 +23809,7 @@ function getCronDb() {
|
|
|
23717
23809
|
}
|
|
23718
23810
|
var cronJobs, cronRuns, CREATE_SQL4, CRON_MIGRATIONS, _cronDb;
|
|
23719
23811
|
var init_cron_db = __esm({
|
|
23720
|
-
"
|
|
23812
|
+
"../server/dist/db/cron-db.js"() {
|
|
23721
23813
|
"use strict";
|
|
23722
23814
|
init_migrate();
|
|
23723
23815
|
cronJobs = sqliteTable5("cron_jobs", {
|
|
@@ -23837,7 +23929,7 @@ CREATE INDEX IF NOT EXISTS idx_cron_runs_status ON cron_runs(status);
|
|
|
23837
23929
|
}
|
|
23838
23930
|
});
|
|
23839
23931
|
|
|
23840
|
-
//
|
|
23932
|
+
// ../server/dist/cron/dispatcher.js
|
|
23841
23933
|
function registerCronDispatcher(d) {
|
|
23842
23934
|
_registry2.set(d.channelType, d);
|
|
23843
23935
|
}
|
|
@@ -23884,14 +23976,14 @@ async function dispatchToTargets(rawText, targets, workspacePath) {
|
|
|
23884
23976
|
}
|
|
23885
23977
|
var _registry2;
|
|
23886
23978
|
var init_dispatcher = __esm({
|
|
23887
|
-
"
|
|
23979
|
+
"../server/dist/cron/dispatcher.js"() {
|
|
23888
23980
|
"use strict";
|
|
23889
23981
|
init_media();
|
|
23890
23982
|
_registry2 = /* @__PURE__ */ new Map();
|
|
23891
23983
|
}
|
|
23892
23984
|
});
|
|
23893
23985
|
|
|
23894
|
-
//
|
|
23986
|
+
// ../server/dist/cron/runner.js
|
|
23895
23987
|
import { spawn as spawn3, execFileSync } from "node:child_process";
|
|
23896
23988
|
import fs51 from "node:fs";
|
|
23897
23989
|
import path60 from "node:path";
|
|
@@ -24418,7 +24510,7 @@ function pruneOldLogs() {
|
|
|
24418
24510
|
}
|
|
24419
24511
|
var DAY_MS2, CLI_TIMEOUT_SEC, KILL_GRACE_SEC, UNATTENDED_PREAMBLE, RUNS_PER_JOB_KEEP, LOG_RETENTION_DAYS, _active, _inflight, _fingerprint, _daemonTimers, _lastCronDataVersion;
|
|
24420
24512
|
var init_runner = __esm({
|
|
24421
|
-
"
|
|
24513
|
+
"../server/dist/cron/runner.js"() {
|
|
24422
24514
|
"use strict";
|
|
24423
24515
|
init_cron_db();
|
|
24424
24516
|
init_raw_sqlite();
|
|
@@ -24439,7 +24531,7 @@ var init_runner = __esm({
|
|
|
24439
24531
|
}
|
|
24440
24532
|
});
|
|
24441
24533
|
|
|
24442
|
-
//
|
|
24534
|
+
// ../server/dist/routes/cron.js
|
|
24443
24535
|
import { Hono as Hono14 } from "hono";
|
|
24444
24536
|
import { eq as eq15, desc as desc3, lt as lt6, and as and11 } from "drizzle-orm";
|
|
24445
24537
|
import fs52 from "node:fs/promises";
|
|
@@ -24711,7 +24803,7 @@ function computeNextRun(j) {
|
|
|
24711
24803
|
}
|
|
24712
24804
|
var TIMEOUT_SEC_MIN, TIMEOUT_SEC_MAX;
|
|
24713
24805
|
var init_cron = __esm({
|
|
24714
|
-
"
|
|
24806
|
+
"../server/dist/routes/cron.js"() {
|
|
24715
24807
|
"use strict";
|
|
24716
24808
|
init_cron_db();
|
|
24717
24809
|
init_runner();
|
|
@@ -24722,7 +24814,7 @@ var init_cron = __esm({
|
|
|
24722
24814
|
}
|
|
24723
24815
|
});
|
|
24724
24816
|
|
|
24725
|
-
//
|
|
24817
|
+
// ../server/dist/evolution/ticker.js
|
|
24726
24818
|
import { eq as eq16, and as and12, or as or2, asc, isNull as isNull6, sql as sql2 } from "drizzle-orm";
|
|
24727
24819
|
function setEvoSpawner(fn) {
|
|
24728
24820
|
_spawner = fn;
|
|
@@ -24948,7 +25040,7 @@ function claimApply(id) {
|
|
|
24948
25040
|
}
|
|
24949
25041
|
var _lastRunStatus, _lastApplyStatus, _spawner, TICK_INTERVAL_MS, _interval, _startupTimer2;
|
|
24950
25042
|
var init_ticker = __esm({
|
|
24951
|
-
"
|
|
25043
|
+
"../server/dist/evolution/ticker.js"() {
|
|
24952
25044
|
"use strict";
|
|
24953
25045
|
init_config();
|
|
24954
25046
|
init_evo_db();
|
|
@@ -24964,13 +25056,13 @@ var init_ticker = __esm({
|
|
|
24964
25056
|
}
|
|
24965
25057
|
});
|
|
24966
25058
|
|
|
24967
|
-
//
|
|
25059
|
+
// ../server/dist/evolution/spawn.js
|
|
24968
25060
|
import path61 from "node:path";
|
|
24969
25061
|
import { spawn as spawn4 } from "node:child_process";
|
|
24970
25062
|
import { fileURLToPath as fileURLToPath2 } from "node:url";
|
|
24971
25063
|
var __dirname2, WRAPPER_PATH, realEvoSpawner;
|
|
24972
25064
|
var init_spawn = __esm({
|
|
24973
|
-
"
|
|
25065
|
+
"../server/dist/evolution/spawn.js"() {
|
|
24974
25066
|
"use strict";
|
|
24975
25067
|
init_child_env();
|
|
24976
25068
|
__dirname2 = path61.dirname(fileURLToPath2(import.meta.url));
|
|
@@ -24992,7 +25084,7 @@ var init_spawn = __esm({
|
|
|
24992
25084
|
}
|
|
24993
25085
|
});
|
|
24994
25086
|
|
|
24995
|
-
//
|
|
25087
|
+
// ../server/dist/channels/registry.js
|
|
24996
25088
|
function bootChannels(app2, descriptors, deps) {
|
|
24997
25089
|
for (const d of descriptors) {
|
|
24998
25090
|
if (d.registerCronDispatcher)
|
|
@@ -25017,13 +25109,13 @@ async function shutdownChannels() {
|
|
|
25017
25109
|
}
|
|
25018
25110
|
var _running;
|
|
25019
25111
|
var init_registry2 = __esm({
|
|
25020
|
-
"
|
|
25112
|
+
"../server/dist/channels/registry.js"() {
|
|
25021
25113
|
"use strict";
|
|
25022
25114
|
_running = [];
|
|
25023
25115
|
}
|
|
25024
25116
|
});
|
|
25025
25117
|
|
|
25026
|
-
//
|
|
25118
|
+
// ../server/dist/channels/telegram/accounts.js
|
|
25027
25119
|
function toTelegram(a) {
|
|
25028
25120
|
const c = a.config;
|
|
25029
25121
|
return {
|
|
@@ -25097,14 +25189,14 @@ function deleteAccount3(db, accountId) {
|
|
|
25097
25189
|
}
|
|
25098
25190
|
var CH2;
|
|
25099
25191
|
var init_accounts3 = __esm({
|
|
25100
|
-
"
|
|
25192
|
+
"../server/dist/channels/telegram/accounts.js"() {
|
|
25101
25193
|
"use strict";
|
|
25102
25194
|
init_accounts();
|
|
25103
25195
|
CH2 = "telegram";
|
|
25104
25196
|
}
|
|
25105
25197
|
});
|
|
25106
25198
|
|
|
25107
|
-
//
|
|
25199
|
+
// ../server/dist/channels/shared/chunk.js
|
|
25108
25200
|
function splitText(text6, limit) {
|
|
25109
25201
|
const out = [];
|
|
25110
25202
|
let rest = text6;
|
|
@@ -25120,15 +25212,15 @@ function splitText(text6, limit) {
|
|
|
25120
25212
|
return out;
|
|
25121
25213
|
}
|
|
25122
25214
|
var init_chunk = __esm({
|
|
25123
|
-
"
|
|
25215
|
+
"../server/dist/channels/shared/chunk.js"() {
|
|
25124
25216
|
"use strict";
|
|
25125
25217
|
}
|
|
25126
25218
|
});
|
|
25127
25219
|
|
|
25128
|
-
//
|
|
25220
|
+
// ../server/dist/channels/telegram/event-adapter.js
|
|
25129
25221
|
var HARD_CHARS, TelegramResponder;
|
|
25130
25222
|
var init_event_adapter = __esm({
|
|
25131
|
-
"
|
|
25223
|
+
"../server/dist/channels/telegram/event-adapter.js"() {
|
|
25132
25224
|
"use strict";
|
|
25133
25225
|
init_chunk();
|
|
25134
25226
|
init_media();
|
|
@@ -25211,7 +25303,7 @@ var init_event_adapter = __esm({
|
|
|
25211
25303
|
}
|
|
25212
25304
|
});
|
|
25213
25305
|
|
|
25214
|
-
//
|
|
25306
|
+
// ../server/dist/channels/shared/busy-hint.js
|
|
25215
25307
|
function busyHint(sm, sessionId, lang) {
|
|
25216
25308
|
if (sm.isSessionCompacting(sessionId))
|
|
25217
25309
|
return t("handler.compacting", lang);
|
|
@@ -25220,13 +25312,13 @@ function busyHint(sm, sessionId, lang) {
|
|
|
25220
25312
|
return null;
|
|
25221
25313
|
}
|
|
25222
25314
|
var init_busy_hint = __esm({
|
|
25223
|
-
"
|
|
25315
|
+
"../server/dist/channels/shared/busy-hint.js"() {
|
|
25224
25316
|
"use strict";
|
|
25225
25317
|
init_i18n();
|
|
25226
25318
|
}
|
|
25227
25319
|
});
|
|
25228
25320
|
|
|
25229
|
-
//
|
|
25321
|
+
// ../server/dist/channels/shared/inbound.js
|
|
25230
25322
|
function sessionAccess(accountAccessLevel) {
|
|
25231
25323
|
return accountAccessLevel === "full" ? null : accountAccessLevel === "workspace" ? "workspace" : "readonly";
|
|
25232
25324
|
}
|
|
@@ -25284,7 +25376,7 @@ async function dispatchChannelCommand(ctx, command, arg, opts) {
|
|
|
25284
25376
|
}
|
|
25285
25377
|
var InboundBridge;
|
|
25286
25378
|
var init_inbound = __esm({
|
|
25287
|
-
"
|
|
25379
|
+
"../server/dist/channels/shared/inbound.js"() {
|
|
25288
25380
|
"use strict";
|
|
25289
25381
|
init_goal_mode();
|
|
25290
25382
|
init_accounts();
|
|
@@ -25354,7 +25446,7 @@ var init_inbound = __esm({
|
|
|
25354
25446
|
}
|
|
25355
25447
|
});
|
|
25356
25448
|
|
|
25357
|
-
//
|
|
25449
|
+
// ../server/dist/channels/telegram/handler.js
|
|
25358
25450
|
import { Bot, InputFile } from "grammy";
|
|
25359
25451
|
function inferMediaKind(filePath) {
|
|
25360
25452
|
const cls = classifyMedia(filePath);
|
|
@@ -25741,7 +25833,7 @@ async function handleUserMessage(args) {
|
|
|
25741
25833
|
}
|
|
25742
25834
|
var MAX_TG_DOWNLOAD_BYTES;
|
|
25743
25835
|
var init_handler3 = __esm({
|
|
25744
|
-
"
|
|
25836
|
+
"../server/dist/channels/telegram/handler.js"() {
|
|
25745
25837
|
"use strict";
|
|
25746
25838
|
init_accounts3();
|
|
25747
25839
|
init_event_adapter();
|
|
@@ -25756,7 +25848,7 @@ var init_handler3 = __esm({
|
|
|
25756
25848
|
}
|
|
25757
25849
|
});
|
|
25758
25850
|
|
|
25759
|
-
//
|
|
25851
|
+
// ../server/dist/routes/telegram.js
|
|
25760
25852
|
import { Hono as Hono15 } from "hono";
|
|
25761
25853
|
import { Bot as Bot2 } from "grammy";
|
|
25762
25854
|
import fs53 from "node:fs";
|
|
@@ -25875,14 +25967,14 @@ function createTelegramRoutes(deps) {
|
|
|
25875
25967
|
return app2;
|
|
25876
25968
|
}
|
|
25877
25969
|
var init_telegram = __esm({
|
|
25878
|
-
"
|
|
25970
|
+
"../server/dist/routes/telegram.js"() {
|
|
25879
25971
|
"use strict";
|
|
25880
25972
|
init_accounts3();
|
|
25881
25973
|
init_accounts();
|
|
25882
25974
|
}
|
|
25883
25975
|
});
|
|
25884
25976
|
|
|
25885
|
-
//
|
|
25977
|
+
// ../server/dist/channels/telegram/cron-dispatcher.js
|
|
25886
25978
|
import { Bot as Bot3 } from "grammy";
|
|
25887
25979
|
async function dispatch(accountId, text6, explicitChatId) {
|
|
25888
25980
|
const acct = getAccount3(getChannelDb(), accountId);
|
|
@@ -25931,7 +26023,7 @@ function registerTelegramCronDispatcher() {
|
|
|
25931
26023
|
registerCronDispatcher({ channelType: "telegram", dispatch, listTargets });
|
|
25932
26024
|
}
|
|
25933
26025
|
var init_cron_dispatcher = __esm({
|
|
25934
|
-
"
|
|
26026
|
+
"../server/dist/channels/telegram/cron-dispatcher.js"() {
|
|
25935
26027
|
"use strict";
|
|
25936
26028
|
init_channel_db();
|
|
25937
26029
|
init_accounts3();
|
|
@@ -25939,10 +26031,10 @@ var init_cron_dispatcher = __esm({
|
|
|
25939
26031
|
}
|
|
25940
26032
|
});
|
|
25941
26033
|
|
|
25942
|
-
//
|
|
26034
|
+
// ../server/dist/channels/telegram/descriptor.js
|
|
25943
26035
|
var telegramDescriptor;
|
|
25944
26036
|
var init_descriptor = __esm({
|
|
25945
|
-
"
|
|
26037
|
+
"../server/dist/channels/telegram/descriptor.js"() {
|
|
25946
26038
|
"use strict";
|
|
25947
26039
|
init_handler3();
|
|
25948
26040
|
init_telegram();
|
|
@@ -25957,7 +26049,7 @@ var init_descriptor = __esm({
|
|
|
25957
26049
|
}
|
|
25958
26050
|
});
|
|
25959
26051
|
|
|
25960
|
-
//
|
|
26052
|
+
// ../server/dist/channels/wechat/api.js
|
|
25961
26053
|
import crypto3 from "node:crypto";
|
|
25962
26054
|
function buildClientVersion(version) {
|
|
25963
26055
|
const [ma, mi, pa] = version.split(".").map((p) => parseInt(p, 10));
|
|
@@ -26146,7 +26238,7 @@ async function notifyStop(params) {
|
|
|
26146
26238
|
}
|
|
26147
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;
|
|
26148
26240
|
var init_api = __esm({
|
|
26149
|
-
"
|
|
26241
|
+
"../server/dist/channels/wechat/api.js"() {
|
|
26150
26242
|
"use strict";
|
|
26151
26243
|
QR_BASE_URL = "https://ilinkai.weixin.qq.com";
|
|
26152
26244
|
DEFAULT_BOT_TYPE = "3";
|
|
@@ -26158,10 +26250,10 @@ var init_api = __esm({
|
|
|
26158
26250
|
}
|
|
26159
26251
|
});
|
|
26160
26252
|
|
|
26161
|
-
//
|
|
26253
|
+
// ../server/dist/channels/wechat/types.js
|
|
26162
26254
|
var MessageItemType, MessageType, MessageState, UploadMediaType;
|
|
26163
26255
|
var init_types = __esm({
|
|
26164
|
-
"
|
|
26256
|
+
"../server/dist/channels/wechat/types.js"() {
|
|
26165
26257
|
"use strict";
|
|
26166
26258
|
MessageItemType = {
|
|
26167
26259
|
NONE: 0,
|
|
@@ -26190,7 +26282,7 @@ var init_types = __esm({
|
|
|
26190
26282
|
}
|
|
26191
26283
|
});
|
|
26192
26284
|
|
|
26193
|
-
//
|
|
26285
|
+
// ../server/dist/channels/wechat/accounts.js
|
|
26194
26286
|
function toWechat(a) {
|
|
26195
26287
|
const c = a.config;
|
|
26196
26288
|
return {
|
|
@@ -26272,17 +26364,17 @@ function saveSyncBuf(db, accountId, syncBuf) {
|
|
|
26272
26364
|
}
|
|
26273
26365
|
var CH3;
|
|
26274
26366
|
var init_accounts4 = __esm({
|
|
26275
|
-
"
|
|
26367
|
+
"../server/dist/channels/wechat/accounts.js"() {
|
|
26276
26368
|
"use strict";
|
|
26277
26369
|
init_accounts();
|
|
26278
26370
|
CH3 = "wechat";
|
|
26279
26371
|
}
|
|
26280
26372
|
});
|
|
26281
26373
|
|
|
26282
|
-
//
|
|
26374
|
+
// ../server/dist/channels/wechat/event-adapter.js
|
|
26283
26375
|
var WECHAT_TEXT_LIMIT, WechatResponder;
|
|
26284
26376
|
var init_event_adapter2 = __esm({
|
|
26285
|
-
"
|
|
26377
|
+
"../server/dist/channels/wechat/event-adapter.js"() {
|
|
26286
26378
|
"use strict";
|
|
26287
26379
|
init_chunk();
|
|
26288
26380
|
init_media();
|
|
@@ -26386,7 +26478,7 @@ var init_event_adapter2 = __esm({
|
|
|
26386
26478
|
}
|
|
26387
26479
|
});
|
|
26388
26480
|
|
|
26389
|
-
//
|
|
26481
|
+
// ../server/dist/channels/wechat/cdn.js
|
|
26390
26482
|
import { createDecipheriv, createCipheriv, randomBytes as randomBytes2, createHash as createHash2 } from "node:crypto";
|
|
26391
26483
|
function decryptAesEcb(ciphertext, key) {
|
|
26392
26484
|
const decipher = createDecipheriv("aes-128-ecb", key, null);
|
|
@@ -26485,14 +26577,14 @@ async function uploadCiphertext(params) {
|
|
|
26485
26577
|
}
|
|
26486
26578
|
var CDN_BASE_URL, UPLOAD_MAX_RETRIES;
|
|
26487
26579
|
var init_cdn = __esm({
|
|
26488
|
-
"
|
|
26580
|
+
"../server/dist/channels/wechat/cdn.js"() {
|
|
26489
26581
|
"use strict";
|
|
26490
26582
|
CDN_BASE_URL = "https://novac2c.cdn.weixin.qq.com/c2c";
|
|
26491
26583
|
UPLOAD_MAX_RETRIES = 3;
|
|
26492
26584
|
}
|
|
26493
26585
|
});
|
|
26494
26586
|
|
|
26495
|
-
//
|
|
26587
|
+
// ../server/dist/channels/wechat/send-media.js
|
|
26496
26588
|
import fs54 from "node:fs/promises";
|
|
26497
26589
|
import path62 from "node:path";
|
|
26498
26590
|
function inferKind(filePath) {
|
|
@@ -26586,7 +26678,7 @@ function buildMessageItem(args) {
|
|
|
26586
26678
|
};
|
|
26587
26679
|
}
|
|
26588
26680
|
var init_send_media = __esm({
|
|
26589
|
-
"
|
|
26681
|
+
"../server/dist/channels/wechat/send-media.js"() {
|
|
26590
26682
|
"use strict";
|
|
26591
26683
|
init_api();
|
|
26592
26684
|
init_cdn();
|
|
@@ -26595,7 +26687,7 @@ var init_send_media = __esm({
|
|
|
26595
26687
|
}
|
|
26596
26688
|
});
|
|
26597
26689
|
|
|
26598
|
-
//
|
|
26690
|
+
// ../server/dist/channels/wechat/login.js
|
|
26599
26691
|
import { randomUUID as randomUUID2 } from "node:crypto";
|
|
26600
26692
|
function isFresh(l) {
|
|
26601
26693
|
return Date.now() - l.startedAt < ACTIVE_TTL_MS;
|
|
@@ -26697,7 +26789,7 @@ async function waitLogin(params) {
|
|
|
26697
26789
|
}
|
|
26698
26790
|
var ACTIVE_TTL_MS, MAX_QR_REFRESH, activeLogins;
|
|
26699
26791
|
var init_login = __esm({
|
|
26700
|
-
"
|
|
26792
|
+
"../server/dist/channels/wechat/login.js"() {
|
|
26701
26793
|
"use strict";
|
|
26702
26794
|
init_api();
|
|
26703
26795
|
ACTIVE_TTL_MS = 5 * 6e4;
|
|
@@ -26706,7 +26798,7 @@ var init_login = __esm({
|
|
|
26706
26798
|
}
|
|
26707
26799
|
});
|
|
26708
26800
|
|
|
26709
|
-
//
|
|
26801
|
+
// ../server/dist/channels/wechat/handler.js
|
|
26710
26802
|
import fs55 from "node:fs";
|
|
26711
26803
|
import path63 from "node:path";
|
|
26712
26804
|
import QRCode from "qrcode";
|
|
@@ -27164,7 +27256,7 @@ function sleep2(ms, signal) {
|
|
|
27164
27256
|
}
|
|
27165
27257
|
var MAX_CONSECUTIVE_FAILURES, BACKOFF_DELAY_MS, RETRY_DELAY_MS;
|
|
27166
27258
|
var init_handler4 = __esm({
|
|
27167
|
-
"
|
|
27259
|
+
"../server/dist/channels/wechat/handler.js"() {
|
|
27168
27260
|
"use strict";
|
|
27169
27261
|
init_api();
|
|
27170
27262
|
init_types();
|
|
@@ -27186,7 +27278,7 @@ var init_handler4 = __esm({
|
|
|
27186
27278
|
}
|
|
27187
27279
|
});
|
|
27188
27280
|
|
|
27189
|
-
//
|
|
27281
|
+
// ../server/dist/routes/wechat.js
|
|
27190
27282
|
import { Hono as Hono16 } from "hono";
|
|
27191
27283
|
import path64 from "node:path";
|
|
27192
27284
|
import fs56 from "node:fs";
|
|
@@ -27301,7 +27393,7 @@ function stripSecrets(acc) {
|
|
|
27301
27393
|
return rest;
|
|
27302
27394
|
}
|
|
27303
27395
|
var init_wechat = __esm({
|
|
27304
|
-
"
|
|
27396
|
+
"../server/dist/routes/wechat.js"() {
|
|
27305
27397
|
"use strict";
|
|
27306
27398
|
init_login();
|
|
27307
27399
|
init_accounts4();
|
|
@@ -27309,7 +27401,7 @@ var init_wechat = __esm({
|
|
|
27309
27401
|
}
|
|
27310
27402
|
});
|
|
27311
27403
|
|
|
27312
|
-
//
|
|
27404
|
+
// ../server/dist/channels/wechat/cron-dispatcher.js
|
|
27313
27405
|
function readLastActiveChatId(accountId) {
|
|
27314
27406
|
const acct = getAccount(getChannelDb(), accountId);
|
|
27315
27407
|
if (!acct)
|
|
@@ -27390,7 +27482,7 @@ function registerWechatCronDispatcher() {
|
|
|
27390
27482
|
registerCronDispatcher({ channelType: "wechat", supportsMedia: true, dispatch: dispatch2, listTargets: listTargets2 });
|
|
27391
27483
|
}
|
|
27392
27484
|
var init_cron_dispatcher2 = __esm({
|
|
27393
|
-
"
|
|
27485
|
+
"../server/dist/channels/wechat/cron-dispatcher.js"() {
|
|
27394
27486
|
"use strict";
|
|
27395
27487
|
init_channel_db();
|
|
27396
27488
|
init_accounts();
|
|
@@ -27404,10 +27496,10 @@ var init_cron_dispatcher2 = __esm({
|
|
|
27404
27496
|
}
|
|
27405
27497
|
});
|
|
27406
27498
|
|
|
27407
|
-
//
|
|
27499
|
+
// ../server/dist/channels/wechat/descriptor.js
|
|
27408
27500
|
var wechatDescriptor;
|
|
27409
27501
|
var init_descriptor2 = __esm({
|
|
27410
|
-
"
|
|
27502
|
+
"../server/dist/channels/wechat/descriptor.js"() {
|
|
27411
27503
|
"use strict";
|
|
27412
27504
|
init_handler4();
|
|
27413
27505
|
init_wechat();
|
|
@@ -27422,7 +27514,7 @@ var init_descriptor2 = __esm({
|
|
|
27422
27514
|
}
|
|
27423
27515
|
});
|
|
27424
27516
|
|
|
27425
|
-
//
|
|
27517
|
+
// ../server/dist/routes/web.js
|
|
27426
27518
|
import { Hono as Hono17 } from "hono";
|
|
27427
27519
|
import { streamSSE } from "hono/streaming";
|
|
27428
27520
|
import crypto4 from "node:crypto";
|
|
@@ -27659,7 +27751,7 @@ function createWebRoutes(deps) {
|
|
|
27659
27751
|
return app2;
|
|
27660
27752
|
}
|
|
27661
27753
|
var init_web = __esm({
|
|
27662
|
-
"
|
|
27754
|
+
"../server/dist/routes/web.js"() {
|
|
27663
27755
|
"use strict";
|
|
27664
27756
|
init_dist();
|
|
27665
27757
|
init_handler();
|
|
@@ -27671,10 +27763,10 @@ var init_web = __esm({
|
|
|
27671
27763
|
}
|
|
27672
27764
|
});
|
|
27673
27765
|
|
|
27674
|
-
//
|
|
27766
|
+
// ../server/dist/channels/web/descriptor.js
|
|
27675
27767
|
var webDescriptor;
|
|
27676
27768
|
var init_descriptor3 = __esm({
|
|
27677
|
-
"
|
|
27769
|
+
"../server/dist/channels/web/descriptor.js"() {
|
|
27678
27770
|
"use strict";
|
|
27679
27771
|
init_handler();
|
|
27680
27772
|
init_web();
|
|
@@ -27690,7 +27782,7 @@ var init_descriptor3 = __esm({
|
|
|
27690
27782
|
}
|
|
27691
27783
|
});
|
|
27692
27784
|
|
|
27693
|
-
//
|
|
27785
|
+
// ../server/dist/channels/slack/accounts.js
|
|
27694
27786
|
function toSlack(a) {
|
|
27695
27787
|
const c = a.config;
|
|
27696
27788
|
return {
|
|
@@ -27766,14 +27858,14 @@ function deleteAccount5(db, accountId) {
|
|
|
27766
27858
|
}
|
|
27767
27859
|
var CH4;
|
|
27768
27860
|
var init_accounts5 = __esm({
|
|
27769
|
-
"
|
|
27861
|
+
"../server/dist/channels/slack/accounts.js"() {
|
|
27770
27862
|
"use strict";
|
|
27771
27863
|
init_accounts();
|
|
27772
27864
|
CH4 = "slack";
|
|
27773
27865
|
}
|
|
27774
27866
|
});
|
|
27775
27867
|
|
|
27776
|
-
//
|
|
27868
|
+
// ../server/dist/channels/shared/markdown.js
|
|
27777
27869
|
function formatForSlack(input) {
|
|
27778
27870
|
if (!input)
|
|
27779
27871
|
return "";
|
|
@@ -27852,15 +27944,15 @@ function stripCommonMark(line) {
|
|
|
27852
27944
|
return line;
|
|
27853
27945
|
}
|
|
27854
27946
|
var init_markdown = __esm({
|
|
27855
|
-
"
|
|
27947
|
+
"../server/dist/channels/shared/markdown.js"() {
|
|
27856
27948
|
"use strict";
|
|
27857
27949
|
}
|
|
27858
27950
|
});
|
|
27859
27951
|
|
|
27860
|
-
//
|
|
27952
|
+
// ../server/dist/channels/slack/event-adapter.js
|
|
27861
27953
|
var HARD_CHARS2, SlackResponder;
|
|
27862
27954
|
var init_event_adapter3 = __esm({
|
|
27863
|
-
"
|
|
27955
|
+
"../server/dist/channels/slack/event-adapter.js"() {
|
|
27864
27956
|
"use strict";
|
|
27865
27957
|
init_chunk();
|
|
27866
27958
|
init_markdown();
|
|
@@ -27953,7 +28045,7 @@ var init_event_adapter3 = __esm({
|
|
|
27953
28045
|
}
|
|
27954
28046
|
});
|
|
27955
28047
|
|
|
27956
|
-
//
|
|
28048
|
+
// ../server/dist/channels/slack/api.js
|
|
27957
28049
|
async function slackPost(endpoint, token, body) {
|
|
27958
28050
|
const isForm = body instanceof FormData;
|
|
27959
28051
|
const res = await fetch(`${SLACK_API}/${endpoint}`, {
|
|
@@ -28141,13 +28233,13 @@ async function downloadFile(botToken, urlPrivate) {
|
|
|
28141
28233
|
}
|
|
28142
28234
|
var SLACK_API;
|
|
28143
28235
|
var init_api2 = __esm({
|
|
28144
|
-
"
|
|
28236
|
+
"../server/dist/channels/slack/api.js"() {
|
|
28145
28237
|
"use strict";
|
|
28146
28238
|
SLACK_API = "https://slack.com/api";
|
|
28147
28239
|
}
|
|
28148
28240
|
});
|
|
28149
28241
|
|
|
28150
|
-
//
|
|
28242
|
+
// ../server/dist/channels/slack/handler.js
|
|
28151
28243
|
import path65 from "node:path";
|
|
28152
28244
|
import { WebSocket } from "ws";
|
|
28153
28245
|
function slashToBang(text6, commandNames) {
|
|
@@ -28510,7 +28602,7 @@ function buildCmdCtx(args) {
|
|
|
28510
28602
|
}
|
|
28511
28603
|
var SLACK_EXTRA_COMMANDS, SEEN_EVENT_IDS, SEEN_EVENT_IDS_MAX;
|
|
28512
28604
|
var init_handler5 = __esm({
|
|
28513
|
-
"
|
|
28605
|
+
"../server/dist/channels/slack/handler.js"() {
|
|
28514
28606
|
"use strict";
|
|
28515
28607
|
init_accounts5();
|
|
28516
28608
|
init_event_adapter3();
|
|
@@ -28530,7 +28622,7 @@ var init_handler5 = __esm({
|
|
|
28530
28622
|
}
|
|
28531
28623
|
});
|
|
28532
28624
|
|
|
28533
|
-
//
|
|
28625
|
+
// ../server/dist/routes/slack.js
|
|
28534
28626
|
import { Hono as Hono18 } from "hono";
|
|
28535
28627
|
import fs58 from "node:fs";
|
|
28536
28628
|
function createSlackRoutes(deps) {
|
|
@@ -28664,7 +28756,7 @@ function createSlackRoutes(deps) {
|
|
|
28664
28756
|
return app2;
|
|
28665
28757
|
}
|
|
28666
28758
|
var init_slack = __esm({
|
|
28667
|
-
"
|
|
28759
|
+
"../server/dist/routes/slack.js"() {
|
|
28668
28760
|
"use strict";
|
|
28669
28761
|
init_accounts5();
|
|
28670
28762
|
init_accounts();
|
|
@@ -28672,7 +28764,7 @@ var init_slack = __esm({
|
|
|
28672
28764
|
}
|
|
28673
28765
|
});
|
|
28674
28766
|
|
|
28675
|
-
//
|
|
28767
|
+
// ../server/dist/channels/slack/cron-dispatcher.js
|
|
28676
28768
|
function parseChatId(raw) {
|
|
28677
28769
|
const idx = raw.indexOf(":");
|
|
28678
28770
|
if (idx < 0)
|
|
@@ -28736,7 +28828,7 @@ function registerSlackCronDispatcher() {
|
|
|
28736
28828
|
registerCronDispatcher({ channelType: "slack", supportsMedia: true, dispatch: dispatch3, listTargets: listTargets3 });
|
|
28737
28829
|
}
|
|
28738
28830
|
var init_cron_dispatcher3 = __esm({
|
|
28739
|
-
"
|
|
28831
|
+
"../server/dist/channels/slack/cron-dispatcher.js"() {
|
|
28740
28832
|
"use strict";
|
|
28741
28833
|
init_channel_db();
|
|
28742
28834
|
init_accounts5();
|
|
@@ -28746,10 +28838,10 @@ var init_cron_dispatcher3 = __esm({
|
|
|
28746
28838
|
}
|
|
28747
28839
|
});
|
|
28748
28840
|
|
|
28749
|
-
//
|
|
28841
|
+
// ../server/dist/channels/slack/descriptor.js
|
|
28750
28842
|
var slackDescriptor;
|
|
28751
28843
|
var init_descriptor4 = __esm({
|
|
28752
|
-
"
|
|
28844
|
+
"../server/dist/channels/slack/descriptor.js"() {
|
|
28753
28845
|
"use strict";
|
|
28754
28846
|
init_handler5();
|
|
28755
28847
|
init_slack();
|
|
@@ -28764,7 +28856,7 @@ var init_descriptor4 = __esm({
|
|
|
28764
28856
|
}
|
|
28765
28857
|
});
|
|
28766
28858
|
|
|
28767
|
-
//
|
|
28859
|
+
// ../server/dist/channels/feishu/accounts.js
|
|
28768
28860
|
function toFeishu(a) {
|
|
28769
28861
|
const c = a.config;
|
|
28770
28862
|
return {
|
|
@@ -28842,17 +28934,17 @@ function deleteAccount6(db, accountId) {
|
|
|
28842
28934
|
}
|
|
28843
28935
|
var CH5;
|
|
28844
28936
|
var init_accounts6 = __esm({
|
|
28845
|
-
"
|
|
28937
|
+
"../server/dist/channels/feishu/accounts.js"() {
|
|
28846
28938
|
"use strict";
|
|
28847
28939
|
init_accounts();
|
|
28848
28940
|
CH5 = "feishu";
|
|
28849
28941
|
}
|
|
28850
28942
|
});
|
|
28851
28943
|
|
|
28852
|
-
//
|
|
28944
|
+
// ../server/dist/channels/feishu/event-adapter.js
|
|
28853
28945
|
var HARD_CHARS3, FeishuResponder;
|
|
28854
28946
|
var init_event_adapter4 = __esm({
|
|
28855
|
-
"
|
|
28947
|
+
"../server/dist/channels/feishu/event-adapter.js"() {
|
|
28856
28948
|
"use strict";
|
|
28857
28949
|
init_chunk();
|
|
28858
28950
|
init_markdown();
|
|
@@ -28945,7 +29037,7 @@ var init_event_adapter4 = __esm({
|
|
|
28945
29037
|
}
|
|
28946
29038
|
});
|
|
28947
29039
|
|
|
28948
|
-
//
|
|
29040
|
+
// ../server/dist/channels/feishu/api.js
|
|
28949
29041
|
async function getTenantAccessToken(args) {
|
|
28950
29042
|
const cached = tokenCache.get(args.appId);
|
|
28951
29043
|
if (cached && cached.expiresAt - Date.now() > 6e4)
|
|
@@ -29209,14 +29301,14 @@ async function searchFeishuTargets(args) {
|
|
|
29209
29301
|
}
|
|
29210
29302
|
var FEISHU_BASE, tokenCache;
|
|
29211
29303
|
var init_api3 = __esm({
|
|
29212
|
-
"
|
|
29304
|
+
"../server/dist/channels/feishu/api.js"() {
|
|
29213
29305
|
"use strict";
|
|
29214
29306
|
FEISHU_BASE = "https://open.feishu.cn";
|
|
29215
29307
|
tokenCache = /* @__PURE__ */ new Map();
|
|
29216
29308
|
}
|
|
29217
29309
|
});
|
|
29218
29310
|
|
|
29219
|
-
//
|
|
29311
|
+
// ../server/dist/channels/feishu/handler.js
|
|
29220
29312
|
import path66 from "node:path";
|
|
29221
29313
|
import * as Lark from "@larksuiteoapi/node-sdk";
|
|
29222
29314
|
function buildSessionPrefixForThread2(chatId, rootId) {
|
|
@@ -29689,7 +29781,7 @@ function buildCmdCtx2(args) {
|
|
|
29689
29781
|
}
|
|
29690
29782
|
var MAX_FEISHU_DOWNLOAD_BYTES;
|
|
29691
29783
|
var init_handler6 = __esm({
|
|
29692
|
-
"
|
|
29784
|
+
"../server/dist/channels/feishu/handler.js"() {
|
|
29693
29785
|
"use strict";
|
|
29694
29786
|
init_accounts6();
|
|
29695
29787
|
init_event_adapter4();
|
|
@@ -29705,7 +29797,7 @@ var init_handler6 = __esm({
|
|
|
29705
29797
|
}
|
|
29706
29798
|
});
|
|
29707
29799
|
|
|
29708
|
-
//
|
|
29800
|
+
// ../server/dist/routes/feishu.js
|
|
29709
29801
|
import { Hono as Hono19 } from "hono";
|
|
29710
29802
|
import fs59 from "node:fs";
|
|
29711
29803
|
function createFeishuRoutes(deps) {
|
|
@@ -29842,7 +29934,7 @@ function createFeishuRoutes(deps) {
|
|
|
29842
29934
|
return app2;
|
|
29843
29935
|
}
|
|
29844
29936
|
var init_feishu = __esm({
|
|
29845
|
-
"
|
|
29937
|
+
"../server/dist/routes/feishu.js"() {
|
|
29846
29938
|
"use strict";
|
|
29847
29939
|
init_accounts6();
|
|
29848
29940
|
init_accounts();
|
|
@@ -29850,7 +29942,7 @@ var init_feishu = __esm({
|
|
|
29850
29942
|
}
|
|
29851
29943
|
});
|
|
29852
29944
|
|
|
29853
|
-
//
|
|
29945
|
+
// ../server/dist/channels/feishu/cron-dispatcher.js
|
|
29854
29946
|
function parseChatId2(raw) {
|
|
29855
29947
|
const idx = raw.indexOf(":");
|
|
29856
29948
|
return { chatId: idx < 0 ? raw : raw.slice(0, idx) };
|
|
@@ -29900,7 +29992,7 @@ function registerFeishuCronDispatcher() {
|
|
|
29900
29992
|
registerCronDispatcher({ channelType: "feishu", dispatch: dispatch4, listTargets: listTargets4 });
|
|
29901
29993
|
}
|
|
29902
29994
|
var init_cron_dispatcher4 = __esm({
|
|
29903
|
-
"
|
|
29995
|
+
"../server/dist/channels/feishu/cron-dispatcher.js"() {
|
|
29904
29996
|
"use strict";
|
|
29905
29997
|
init_channel_db();
|
|
29906
29998
|
init_accounts6();
|
|
@@ -29909,10 +30001,10 @@ var init_cron_dispatcher4 = __esm({
|
|
|
29909
30001
|
}
|
|
29910
30002
|
});
|
|
29911
30003
|
|
|
29912
|
-
//
|
|
30004
|
+
// ../server/dist/channels/feishu/descriptor.js
|
|
29913
30005
|
var feishuDescriptor;
|
|
29914
30006
|
var init_descriptor5 = __esm({
|
|
29915
|
-
"
|
|
30007
|
+
"../server/dist/channels/feishu/descriptor.js"() {
|
|
29916
30008
|
"use strict";
|
|
29917
30009
|
init_handler6();
|
|
29918
30010
|
init_feishu();
|
|
@@ -29927,7 +30019,7 @@ var init_descriptor5 = __esm({
|
|
|
29927
30019
|
}
|
|
29928
30020
|
});
|
|
29929
30021
|
|
|
29930
|
-
//
|
|
30022
|
+
// ../server/dist/channels/wecom/accounts.js
|
|
29931
30023
|
function toWecom(a) {
|
|
29932
30024
|
const c = a.config;
|
|
29933
30025
|
return {
|
|
@@ -30002,17 +30094,17 @@ function deleteAccount7(db, accountId) {
|
|
|
30002
30094
|
}
|
|
30003
30095
|
var CH6;
|
|
30004
30096
|
var init_accounts7 = __esm({
|
|
30005
|
-
"
|
|
30097
|
+
"../server/dist/channels/wecom/accounts.js"() {
|
|
30006
30098
|
"use strict";
|
|
30007
30099
|
init_accounts();
|
|
30008
30100
|
CH6 = "wecom";
|
|
30009
30101
|
}
|
|
30010
30102
|
});
|
|
30011
30103
|
|
|
30012
|
-
//
|
|
30104
|
+
// ../server/dist/channels/wecom/event-adapter.js
|
|
30013
30105
|
var HARD_CHARS4, WecomResponder;
|
|
30014
30106
|
var init_event_adapter5 = __esm({
|
|
30015
|
-
"
|
|
30107
|
+
"../server/dist/channels/wecom/event-adapter.js"() {
|
|
30016
30108
|
"use strict";
|
|
30017
30109
|
init_chunk();
|
|
30018
30110
|
init_media();
|
|
@@ -30103,7 +30195,7 @@ var init_event_adapter5 = __esm({
|
|
|
30103
30195
|
}
|
|
30104
30196
|
});
|
|
30105
30197
|
|
|
30106
|
-
//
|
|
30198
|
+
// ../server/dist/channels/wecom/handler.js
|
|
30107
30199
|
import path67 from "node:path";
|
|
30108
30200
|
import fs60 from "node:fs/promises";
|
|
30109
30201
|
import { WSClient as WSClient2, generateReqId } from "@wecom/aibot-node-sdk";
|
|
@@ -30472,7 +30564,7 @@ function buildCmdCtx3(args) {
|
|
|
30472
30564
|
}
|
|
30473
30565
|
var liveClients, DEDUPE_CAP, MAX_WECOM_DOWNLOAD_BYTES;
|
|
30474
30566
|
var init_handler7 = __esm({
|
|
30475
|
-
"
|
|
30567
|
+
"../server/dist/channels/wecom/handler.js"() {
|
|
30476
30568
|
"use strict";
|
|
30477
30569
|
init_accounts7();
|
|
30478
30570
|
init_event_adapter5();
|
|
@@ -30488,7 +30580,7 @@ var init_handler7 = __esm({
|
|
|
30488
30580
|
}
|
|
30489
30581
|
});
|
|
30490
30582
|
|
|
30491
|
-
//
|
|
30583
|
+
// ../server/dist/routes/wecom.js
|
|
30492
30584
|
import { Hono as Hono20 } from "hono";
|
|
30493
30585
|
import fs61 from "node:fs";
|
|
30494
30586
|
function createWecomRoutes(deps) {
|
|
@@ -30595,14 +30687,14 @@ function createWecomRoutes(deps) {
|
|
|
30595
30687
|
return app2;
|
|
30596
30688
|
}
|
|
30597
30689
|
var init_wecom = __esm({
|
|
30598
|
-
"
|
|
30690
|
+
"../server/dist/routes/wecom.js"() {
|
|
30599
30691
|
"use strict";
|
|
30600
30692
|
init_accounts7();
|
|
30601
30693
|
init_accounts();
|
|
30602
30694
|
}
|
|
30603
30695
|
});
|
|
30604
30696
|
|
|
30605
|
-
//
|
|
30697
|
+
// ../server/dist/channels/wecom/cron-dispatcher.js
|
|
30606
30698
|
async function dispatch5(accountId, text6, explicitChatId) {
|
|
30607
30699
|
const acct = getAccount7(getChannelDb(), accountId);
|
|
30608
30700
|
if (!acct)
|
|
@@ -30644,7 +30736,7 @@ function registerWecomCronDispatcher() {
|
|
|
30644
30736
|
registerCronDispatcher({ channelType: "wecom", dispatch: dispatch5, listTargets: listTargets5 });
|
|
30645
30737
|
}
|
|
30646
30738
|
var init_cron_dispatcher5 = __esm({
|
|
30647
|
-
"
|
|
30739
|
+
"../server/dist/channels/wecom/cron-dispatcher.js"() {
|
|
30648
30740
|
"use strict";
|
|
30649
30741
|
init_channel_db();
|
|
30650
30742
|
init_accounts7();
|
|
@@ -30653,10 +30745,10 @@ var init_cron_dispatcher5 = __esm({
|
|
|
30653
30745
|
}
|
|
30654
30746
|
});
|
|
30655
30747
|
|
|
30656
|
-
//
|
|
30748
|
+
// ../server/dist/channels/wecom/descriptor.js
|
|
30657
30749
|
var wecomDescriptor;
|
|
30658
30750
|
var init_descriptor6 = __esm({
|
|
30659
|
-
"
|
|
30751
|
+
"../server/dist/channels/wecom/descriptor.js"() {
|
|
30660
30752
|
"use strict";
|
|
30661
30753
|
init_handler7();
|
|
30662
30754
|
init_wecom();
|
|
@@ -30671,10 +30763,10 @@ var init_descriptor6 = __esm({
|
|
|
30671
30763
|
}
|
|
30672
30764
|
});
|
|
30673
30765
|
|
|
30674
|
-
//
|
|
30766
|
+
// ../server/dist/channels/descriptors.js
|
|
30675
30767
|
var defaultChannelDescriptors;
|
|
30676
30768
|
var init_descriptors = __esm({
|
|
30677
|
-
"
|
|
30769
|
+
"../server/dist/channels/descriptors.js"() {
|
|
30678
30770
|
"use strict";
|
|
30679
30771
|
init_descriptor();
|
|
30680
30772
|
init_descriptor2();
|
|
@@ -30693,7 +30785,7 @@ var init_descriptors = __esm({
|
|
|
30693
30785
|
}
|
|
30694
30786
|
});
|
|
30695
30787
|
|
|
30696
|
-
//
|
|
30788
|
+
// ../server/dist/middleware/auth.js
|
|
30697
30789
|
import { Hono as Hono21 } from "hono";
|
|
30698
30790
|
import { getCookie, setCookie } from "hono/cookie";
|
|
30699
30791
|
import crypto5 from "node:crypto";
|
|
@@ -30886,7 +30978,7 @@ function authMiddleware() {
|
|
|
30886
30978
|
}
|
|
30887
30979
|
var TOKEN_MAX_AGE, REFRESH_AFTER, COOKIE_NAME, ADMIN_LOGIN_BUCKET, isLockedOut2, recordFailure2, clearFailures2, PUBLIC_PATHS;
|
|
30888
30980
|
var init_auth = __esm({
|
|
30889
|
-
"
|
|
30981
|
+
"../server/dist/middleware/auth.js"() {
|
|
30890
30982
|
"use strict";
|
|
30891
30983
|
init_config();
|
|
30892
30984
|
init_password_hash();
|
|
@@ -30903,7 +30995,7 @@ var init_auth = __esm({
|
|
|
30903
30995
|
}
|
|
30904
30996
|
});
|
|
30905
30997
|
|
|
30906
|
-
//
|
|
30998
|
+
// ../server/dist/index.js
|
|
30907
30999
|
var dist_exports = {};
|
|
30908
31000
|
import { Hono as Hono22 } from "hono";
|
|
30909
31001
|
import { cors } from "hono/cors";
|
|
@@ -31032,7 +31124,7 @@ async function gracefulShutdown(signal) {
|
|
|
31032
31124
|
}
|
|
31033
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;
|
|
31034
31126
|
var init_dist2 = __esm({
|
|
31035
|
-
async "
|
|
31127
|
+
async "../server/dist/index.js"() {
|
|
31036
31128
|
"use strict";
|
|
31037
31129
|
init_files();
|
|
31038
31130
|
init_data_preview();
|
|
@@ -31074,7 +31166,7 @@ var init_dist2 = __esm({
|
|
|
31074
31166
|
init_git_ssh();
|
|
31075
31167
|
__dirname3 = path68.dirname(fileURLToPath3(import.meta.url));
|
|
31076
31168
|
PORT = config.server.port;
|
|
31077
|
-
HALO_VERSION = "1.3.
|
|
31169
|
+
HALO_VERSION = "1.3.4-c3090bf";
|
|
31078
31170
|
PROJECT_ROOT = findProjectRoot();
|
|
31079
31171
|
HALO_HOME4 = path68.join(homedir24(), ".halo");
|
|
31080
31172
|
GIT_SHA = readGitSha();
|
|
@@ -31265,7 +31357,7 @@ var init_dist2 = __esm({
|
|
|
31265
31357
|
}
|
|
31266
31358
|
});
|
|
31267
31359
|
|
|
31268
|
-
//
|
|
31360
|
+
// ../acp-adapter/dist/halo-client.js
|
|
31269
31361
|
async function safeText(res) {
|
|
31270
31362
|
try {
|
|
31271
31363
|
return (await res.text()).slice(0, 500);
|
|
@@ -31308,7 +31400,7 @@ async function* parseSseStream(body) {
|
|
|
31308
31400
|
}
|
|
31309
31401
|
var HaloClient;
|
|
31310
31402
|
var init_halo_client = __esm({
|
|
31311
|
-
"
|
|
31403
|
+
"../acp-adapter/dist/halo-client.js"() {
|
|
31312
31404
|
"use strict";
|
|
31313
31405
|
HaloClient = class {
|
|
31314
31406
|
opts;
|
|
@@ -31408,7 +31500,7 @@ var init_halo_client = __esm({
|
|
|
31408
31500
|
}
|
|
31409
31501
|
});
|
|
31410
31502
|
|
|
31411
|
-
//
|
|
31503
|
+
// ../acp-adapter/dist/adapter.js
|
|
31412
31504
|
function newError(message, code = -32603) {
|
|
31413
31505
|
const e = new Error(message);
|
|
31414
31506
|
e.code = code;
|
|
@@ -31416,7 +31508,7 @@ function newError(message, code = -32603) {
|
|
|
31416
31508
|
}
|
|
31417
31509
|
var AcpAdapter;
|
|
31418
31510
|
var init_adapter = __esm({
|
|
31419
|
-
"
|
|
31511
|
+
"../acp-adapter/dist/adapter.js"() {
|
|
31420
31512
|
"use strict";
|
|
31421
31513
|
init_halo_client();
|
|
31422
31514
|
AcpAdapter = class {
|
|
@@ -31703,10 +31795,10 @@ var init_adapter = __esm({
|
|
|
31703
31795
|
}
|
|
31704
31796
|
});
|
|
31705
31797
|
|
|
31706
|
-
//
|
|
31798
|
+
// ../acp-adapter/dist/jsonrpc.js
|
|
31707
31799
|
var ERROR_PARSE, ERROR_METHOD_NOT_FOUND, ERROR_INTERNAL, JsonRpcConnection;
|
|
31708
31800
|
var init_jsonrpc = __esm({
|
|
31709
|
-
"
|
|
31801
|
+
"../acp-adapter/dist/jsonrpc.js"() {
|
|
31710
31802
|
"use strict";
|
|
31711
31803
|
ERROR_PARSE = -32700;
|
|
31712
31804
|
ERROR_METHOD_NOT_FOUND = -32601;
|
|
@@ -31839,7 +31931,7 @@ var init_jsonrpc = __esm({
|
|
|
31839
31931
|
}
|
|
31840
31932
|
});
|
|
31841
31933
|
|
|
31842
|
-
//
|
|
31934
|
+
// ../acp-adapter/dist/index.js
|
|
31843
31935
|
var dist_exports2 = {};
|
|
31844
31936
|
__export(dist_exports2, {
|
|
31845
31937
|
main: () => main
|
|
@@ -31955,7 +32047,7 @@ function main(argv = process.argv.slice(2)) {
|
|
|
31955
32047
|
}
|
|
31956
32048
|
var HELP;
|
|
31957
32049
|
var init_dist3 = __esm({
|
|
31958
|
-
"
|
|
32050
|
+
"../acp-adapter/dist/index.js"() {
|
|
31959
32051
|
"use strict";
|
|
31960
32052
|
init_adapter();
|
|
31961
32053
|
init_jsonrpc();
|
|
@@ -31994,7 +32086,7 @@ Stdio:
|
|
|
31994
32086
|
}
|
|
31995
32087
|
});
|
|
31996
32088
|
|
|
31997
|
-
//
|
|
32089
|
+
// src/silence-warnings.ts
|
|
31998
32090
|
var emit = process.emitWarning.bind(process);
|
|
31999
32091
|
process.emitWarning = (warning, ...args) => {
|
|
32000
32092
|
const opt = args[0];
|
|
@@ -32003,13 +32095,13 @@ process.emitWarning = (warning, ...args) => {
|
|
|
32003
32095
|
return emit(warning, ...args);
|
|
32004
32096
|
};
|
|
32005
32097
|
|
|
32006
|
-
//
|
|
32098
|
+
// src/index.ts
|
|
32007
32099
|
init_server_supervisor();
|
|
32008
32100
|
import path69 from "node:path";
|
|
32009
32101
|
import fs63 from "node:fs";
|
|
32010
32102
|
import { homedir as homedir25 } from "node:os";
|
|
32011
32103
|
import { parseArgs as parseArgs2 } from "node:util";
|
|
32012
|
-
var VERSION = "1.3.
|
|
32104
|
+
var VERSION = "1.3.4-c3090bf";
|
|
32013
32105
|
var HELP_TOP = `Usage: halo <command> [options]
|
|
32014
32106
|
|
|
32015
32107
|
Commands:
|