lightclawbot 1.0.7 → 1.0.9-beta.0
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 +47 -213
- package/dist/index.d.ts +3 -3
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +2 -2
- package/dist/index.js.map +1 -1
- package/dist/src/channel.d.ts +1 -1
- package/dist/src/channel.d.ts.map +1 -1
- package/dist/src/channel.js +1 -1
- package/dist/src/channel.js.map +1 -1
- package/dist/src/config.d.ts +16 -6
- package/dist/src/config.d.ts.map +1 -1
- package/dist/src/config.js +18 -5
- package/dist/src/config.js.map +1 -1
- package/dist/src/download-tool.d.ts +2 -2
- package/dist/src/download-tool.d.ts.map +1 -1
- package/dist/src/download-tool.js +9 -9
- package/dist/src/download-tool.js.map +1 -1
- package/dist/src/file-storage.d.ts +9 -9
- package/dist/src/file-storage.d.ts.map +1 -1
- package/dist/src/file-storage.js +10 -10
- package/dist/src/file-storage.js.map +1 -1
- package/dist/src/format-urls.d.ts +5 -5
- package/dist/src/format-urls.js +8 -8
- package/dist/src/format-urls.js.map +1 -1
- package/dist/src/gateway.d.ts.map +1 -1
- package/dist/src/gateway.js +18 -14
- package/dist/src/gateway.js.map +1 -1
- package/dist/src/inbound.d.ts.map +1 -1
- package/dist/src/inbound.js +20 -21
- package/dist/src/inbound.js.map +1 -1
- package/dist/src/outbound.d.ts +1 -1
- package/dist/src/outbound.d.ts.map +1 -1
- package/dist/src/outbound.js +15 -3
- package/dist/src/outbound.js.map +1 -1
- package/dist/src/runtime.d.ts +1 -1
- package/dist/src/runtime.d.ts.map +1 -1
- package/dist/src/socket/handlers.d.ts +26 -0
- package/dist/src/socket/handlers.d.ts.map +1 -0
- package/dist/src/socket/handlers.js +130 -0
- package/dist/src/socket/handlers.js.map +1 -0
- package/dist/src/socket/index.d.ts +11 -0
- package/dist/src/socket/index.d.ts.map +1 -0
- package/dist/src/socket/index.js +9 -0
- package/dist/src/socket/index.js.map +1 -0
- package/dist/src/socket/registry.d.ts +59 -0
- package/dist/src/socket/registry.d.ts.map +1 -0
- package/dist/src/socket/registry.js +125 -0
- package/dist/src/socket/registry.js.map +1 -0
- package/dist/src/socket/reliable-emitter.d.ts +79 -0
- package/dist/src/socket/reliable-emitter.d.ts.map +1 -0
- package/dist/src/socket/reliable-emitter.js +217 -0
- package/dist/src/socket/reliable-emitter.js.map +1 -0
- package/dist/src/types.d.ts +7 -2
- package/dist/src/types.d.ts.map +1 -1
- package/dist/src/upload-tool.d.ts +2 -2
- package/dist/src/upload-tool.d.ts.map +1 -1
- package/dist/src/upload-tool.js +3 -3
- package/dist/src/upload-tool.js.map +1 -1
- package/node_modules/socket.io-parser/build/cjs/index.d.ts +14 -4
- package/node_modules/socket.io-parser/build/cjs/index.js +14 -6
- package/node_modules/socket.io-parser/build/esm/index.d.ts +14 -4
- package/node_modules/socket.io-parser/build/esm/index.js +14 -6
- package/node_modules/socket.io-parser/build/esm-debug/index.d.ts +14 -4
- package/node_modules/socket.io-parser/build/esm-debug/index.js +14 -6
- package/node_modules/socket.io-parser/package.json +1 -1
- package/package.json +6 -11
- package/skills/lightclaw-media/SKILL.md +22 -102
- package/dist/public/data/scripts/manifest.json +0 -11
- package/dist/public/data/scripts/upgrade.211d7e4c.sh +0 -266
- package/dist/public/data/scripts/upgrade.sh +0 -266
- package/dist/src/session-history.d.ts +0 -88
- package/dist/src/session-history.d.ts.map +0 -1
- package/dist/src/session-history.js +0 -598
- package/dist/src/session-history.js.map +0 -1
- package/dist/src/streaming/delta-tracker.d.ts +0 -34
- package/dist/src/streaming/delta-tracker.d.ts.map +0 -1
- package/dist/src/streaming/delta-tracker.js +0 -145
- package/dist/src/streaming/delta-tracker.js.map +0 -1
- package/dist/src/streaming/index.d.ts +0 -12
- package/dist/src/streaming/index.d.ts.map +0 -1
- package/dist/src/streaming/index.js +0 -13
- package/dist/src/streaming/index.js.map +0 -1
- package/dist/src/streaming/stream-reply-sink.d.ts +0 -59
- package/dist/src/streaming/stream-reply-sink.d.ts.map +0 -1
- package/dist/src/streaming/stream-reply-sink.js +0 -293
- package/dist/src/streaming/stream-reply-sink.js.map +0 -1
- package/dist/src/streaming/types.d.ts +0 -45
- package/dist/src/streaming/types.d.ts.map +0 -1
- package/dist/src/streaming/types.js +0 -7
- package/dist/src/streaming/types.js.map +0 -1
|
@@ -1,266 +0,0 @@
|
|
|
1
|
-
#!/bin/bash
|
|
2
|
-
set -e
|
|
3
|
-
|
|
4
|
-
# ========== lightclawbot 插件快速安装/升级脚本 ==========
|
|
5
|
-
# 用途:跳过 openclaw plugins install 的慢路径,直接安装/升级 lightclawbot 插件
|
|
6
|
-
# 前提:openclaw 已安装且可用,pnpm 或 npm 已安装(不依赖 jq,JSON 操作统一用 node)
|
|
7
|
-
# 支持:首次安装 / 重装 / 升级,自动保留已有的 channels 配置
|
|
8
|
-
#
|
|
9
|
-
# 输出规范:stdout 只输出一行 RESULT:{...} JSON,供前端解析
|
|
10
|
-
# - 成功:RESULT:{"status":"ok","version":"x.y.z"}
|
|
11
|
-
# - 失败:RESULT:{"status":"error","reason":"..."}
|
|
12
|
-
#
|
|
13
|
-
# 使用方式:
|
|
14
|
-
# 本地执行: bash scripts/upgrade.sh
|
|
15
|
-
# CDN 执行: bash <(curl -fsSL https://your-cdn.com/upgrade.sh)
|
|
16
|
-
# 传入参数: APIKEY="sk-xxx" bash <(curl -fsSL https://your-cdn.com/upgrade.sh)
|
|
17
|
-
|
|
18
|
-
# ========== 工具函数 ==========
|
|
19
|
-
|
|
20
|
-
result_exit() {
|
|
21
|
-
local reason="$1"
|
|
22
|
-
echo "RESULT:{\"status\":\"error\",\"reason\":\"${reason}\"}"
|
|
23
|
-
exit 1
|
|
24
|
-
}
|
|
25
|
-
|
|
26
|
-
result_ok() {
|
|
27
|
-
echo "RESULT:{\"status\":\"ok\",\"version\":\"${1}\"}"
|
|
28
|
-
exit 0
|
|
29
|
-
}
|
|
30
|
-
|
|
31
|
-
# ========== 配置 ==========
|
|
32
|
-
|
|
33
|
-
id="lightclawbot"
|
|
34
|
-
spec="lightclawbot"
|
|
35
|
-
cfg="$HOME/.openclaw/openclaw.json"
|
|
36
|
-
plugin_dir="$HOME/.openclaw/extensions/${id}"
|
|
37
|
-
|
|
38
|
-
# npm 源:使用腾讯镜像源(可通过 NPM_REGISTRY 环境变量覆盖)
|
|
39
|
-
NPM_REGISTRY="${NPM_REGISTRY:-https://mirrors.tencent.com/npm/}"
|
|
40
|
-
# fallback 源:首选失败时兜底(可通过 NPM_FALLBACK 环境变量覆盖)
|
|
41
|
-
NPM_FALLBACK="${NPM_FALLBACK:-https://registry.npmjs.org}"
|
|
42
|
-
|
|
43
|
-
# API Key:优先读取环境变量,为空则保留配置文件中已有的值
|
|
44
|
-
# 用法:APIKEY="sk-xxx" bash <(curl -fsSL https://your-cdn.com/upgrade.sh)
|
|
45
|
-
APIKEY="${APIKEY:-}"
|
|
46
|
-
|
|
47
|
-
# ========== 环境加载 ==========
|
|
48
|
-
# bash xxx.sh 启动的是非交互式 shell,不会自动 source ~/.bashrc,
|
|
49
|
-
# 如果用户通过 nvm 安装 node,脚本中的 node/pnpm/openclaw 都找不到。
|
|
50
|
-
|
|
51
|
-
export NVM_DIR="$HOME/.nvm"
|
|
52
|
-
[ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh"
|
|
53
|
-
|
|
54
|
-
if [ -z "$PNPM_HOME" ] && [ -d "$HOME/.local/share/pnpm" ]; then
|
|
55
|
-
export PNPM_HOME="$HOME/.local/share/pnpm"
|
|
56
|
-
export PATH="$PNPM_HOME:$PATH"
|
|
57
|
-
fi
|
|
58
|
-
|
|
59
|
-
[ ! -t 1 ] && export CI=true
|
|
60
|
-
|
|
61
|
-
# ========== 前置检查 ==========
|
|
62
|
-
|
|
63
|
-
# 1) 探测包管理器:优先 pnpm,fallback npm,都没有则报错
|
|
64
|
-
if command -v pnpm &>/dev/null; then
|
|
65
|
-
PKG_MGR="pnpm"
|
|
66
|
-
elif command -v npm &>/dev/null; then
|
|
67
|
-
PKG_MGR="npm"
|
|
68
|
-
else
|
|
69
|
-
result_exit "npm_not_found"
|
|
70
|
-
fi
|
|
71
|
-
|
|
72
|
-
# 2) 检查 openclaw 是否可用
|
|
73
|
-
if ! openclaw -v &>/dev/null; then
|
|
74
|
-
result_exit "openclaw_not_available"
|
|
75
|
-
fi
|
|
76
|
-
|
|
77
|
-
# 3) 设置 npm/pnpm 源(确保后续 pack/install 都走镜像源)
|
|
78
|
-
npm config set registry "$NPM_REGISTRY" 2>/dev/null || true
|
|
79
|
-
[ "$PKG_MGR" = "pnpm" ] && pnpm config set registry "$NPM_REGISTRY" 2>/dev/null || true
|
|
80
|
-
|
|
81
|
-
# 4) 检查 APIKEY
|
|
82
|
-
if [ -z "$APIKEY" ]; then
|
|
83
|
-
result_exit "apikey_empty"
|
|
84
|
-
fi
|
|
85
|
-
|
|
86
|
-
# ========== 安装 / 升级 lightclawbot ==========
|
|
87
|
-
|
|
88
|
-
# ---------- 检查是否已安装,获取本地版本 ----------
|
|
89
|
-
local_version=""
|
|
90
|
-
if [ -d "$plugin_dir" ] && [ -f "$plugin_dir/package.json" ]; then
|
|
91
|
-
local_version=$(node -e "try{console.log(JSON.parse(require('fs').readFileSync(process.argv[1],'utf8')).version||'')}catch(e){console.log('')}" "$plugin_dir/package.json" 2>/dev/null || true)
|
|
92
|
-
fi
|
|
93
|
-
|
|
94
|
-
# ---------- 查询远程最新版本 ----------
|
|
95
|
-
remote_version=$(npm view "$spec" version 2>/dev/null || true)
|
|
96
|
-
|
|
97
|
-
if [ -z "$remote_version" ]; then
|
|
98
|
-
remote_version=$(npm view "$spec" version --registry "$NPM_FALLBACK" 2>/dev/null || true)
|
|
99
|
-
fi
|
|
100
|
-
|
|
101
|
-
# ---------- 判断安装模式 ----------
|
|
102
|
-
install_mode="install"
|
|
103
|
-
if [ -n "$local_version" ]; then
|
|
104
|
-
if [ -n "$remote_version" ] && [ "$local_version" = "$remote_version" ]; then
|
|
105
|
-
install_mode="up-to-date"
|
|
106
|
-
else
|
|
107
|
-
install_mode="upgrade"
|
|
108
|
-
fi
|
|
109
|
-
fi
|
|
110
|
-
|
|
111
|
-
if [ "$install_mode" != "up-to-date" ]; then
|
|
112
|
-
# ---------- 清理旧版本 ----------
|
|
113
|
-
rm -rf "$plugin_dir"
|
|
114
|
-
|
|
115
|
-
# ---------- npm pack 下载 tgz ----------
|
|
116
|
-
tmp_dir=$(mktemp -d /tmp/openclaw-plugin-XXXXXX)
|
|
117
|
-
|
|
118
|
-
tgz_file=$(cd "$tmp_dir" && npm pack "$spec" 2>/dev/null | tail -n1)
|
|
119
|
-
if [ -z "$tgz_file" ] || [ ! -f "$tmp_dir/$tgz_file" ]; then
|
|
120
|
-
tgz_file=$(cd "$tmp_dir" && npm pack "$spec" --registry "$NPM_FALLBACK" 2>/dev/null | tail -n1)
|
|
121
|
-
fi
|
|
122
|
-
if [ -z "$tgz_file" ] || [ ! -f "$tmp_dir/$tgz_file" ]; then
|
|
123
|
-
rm -rf "$tmp_dir"
|
|
124
|
-
result_exit "download_failed"
|
|
125
|
-
fi
|
|
126
|
-
|
|
127
|
-
# ---------- 解压到插件目录 ----------
|
|
128
|
-
mkdir -p "$plugin_dir"
|
|
129
|
-
tar -xzf "$tmp_dir/$tgz_file" -C "$plugin_dir" --strip-components=1
|
|
130
|
-
rm -rf "$tmp_dir"
|
|
131
|
-
|
|
132
|
-
# ---------- 安装生产依赖 ----------
|
|
133
|
-
# lightclawbot 声明了 bundledDependencies,npm pack 产出的 tgz 已包含所有依赖
|
|
134
|
-
has_unbundled_deps=$(node -e '
|
|
135
|
-
const pkg = JSON.parse(require("fs").readFileSync(process.argv[1], "utf8"));
|
|
136
|
-
const deps = Object.keys(pkg.dependencies || {});
|
|
137
|
-
const bundled = pkg.bundledDependencies || pkg.bundleDependencies || [];
|
|
138
|
-
console.log(deps.length > 0 && bundled.length < deps.length ? "true" : "false");
|
|
139
|
-
' "$plugin_dir/package.json")
|
|
140
|
-
|
|
141
|
-
if [ "$has_unbundled_deps" = true ]; then
|
|
142
|
-
(cd "$plugin_dir" && CI=true $PKG_MGR install --prod) >/dev/null 2>&1
|
|
143
|
-
fi
|
|
144
|
-
fi
|
|
145
|
-
|
|
146
|
-
# ========== 更新配置文件 ==========
|
|
147
|
-
|
|
148
|
-
# 确保配置文件存在
|
|
149
|
-
if [ ! -f "$cfg" ]; then
|
|
150
|
-
mkdir -p "$(dirname "$cfg")"
|
|
151
|
-
echo '{}' > "$cfg"
|
|
152
|
-
fi
|
|
153
|
-
|
|
154
|
-
# 校验配置文件是合法 JSON(用户可能手动编辑弄坏了格式)
|
|
155
|
-
if ! node -e "JSON.parse(require('fs').readFileSync(process.argv[1],'utf8'))" "$cfg" 2>/dev/null; then
|
|
156
|
-
result_exit "config_json_invalid"
|
|
157
|
-
fi
|
|
158
|
-
|
|
159
|
-
# ---------- 单次 node 调用完成所有配置更新 ----------
|
|
160
|
-
# 一次启动 V8,通过环境变量安全传参,
|
|
161
|
-
# 顺序完成 plugins.entries / installs / deny / allow / channels 全部配置修改,
|
|
162
|
-
# 减少文件 I/O 次数(只读一次 + 写一次)。
|
|
163
|
-
|
|
164
|
-
version=$(UPGRADE_CFG="$cfg" UPGRADE_ID="$id" UPGRADE_SPEC="$spec" \
|
|
165
|
-
UPGRADE_PLUGIN_DIR="$plugin_dir" UPGRADE_APIKEY="$APIKEY" \
|
|
166
|
-
node -e '
|
|
167
|
-
const fs = require("fs");
|
|
168
|
-
const cfgPath = process.env.UPGRADE_CFG;
|
|
169
|
-
const pluginId = process.env.UPGRADE_ID;
|
|
170
|
-
const spec = process.env.UPGRADE_SPEC;
|
|
171
|
-
const pluginDir = process.env.UPGRADE_PLUGIN_DIR;
|
|
172
|
-
const envApiKey = process.env.UPGRADE_APIKEY || "";
|
|
173
|
-
|
|
174
|
-
function fail(reason) {
|
|
175
|
-
process.exit(1);
|
|
176
|
-
}
|
|
177
|
-
|
|
178
|
-
// 读取配置
|
|
179
|
-
let cfg;
|
|
180
|
-
try {
|
|
181
|
-
cfg = JSON.parse(fs.readFileSync(cfgPath, "utf8"));
|
|
182
|
-
} catch (e) {
|
|
183
|
-
fail("config_read_failed");
|
|
184
|
-
}
|
|
185
|
-
|
|
186
|
-
// 读取插件版本
|
|
187
|
-
let version = "unknown";
|
|
188
|
-
try {
|
|
189
|
-
const pkg = JSON.parse(fs.readFileSync(pluginDir + "/package.json", "utf8"));
|
|
190
|
-
version = pkg.version || "unknown";
|
|
191
|
-
} catch (e) {}
|
|
192
|
-
|
|
193
|
-
// ---------- 1) 确保 plugins 基础结构存在 & 全局插件系统启用 ----------
|
|
194
|
-
if (!cfg.plugins) cfg.plugins = {};
|
|
195
|
-
// 确保全局插件系统生效(plugins.enabled 默认 true,仅显式 false 时需修复)
|
|
196
|
-
if (cfg.plugins.enabled === false) {
|
|
197
|
-
cfg.plugins.enabled = true;
|
|
198
|
-
}
|
|
199
|
-
if (!cfg.plugins.entries) cfg.plugins.entries = {};
|
|
200
|
-
if (!cfg.plugins.installs) cfg.plugins.installs = {};
|
|
201
|
-
|
|
202
|
-
// plugins.entries:启用插件
|
|
203
|
-
cfg.plugins.entries[pluginId] = { enabled: true };
|
|
204
|
-
|
|
205
|
-
// plugins.installs:安装记录
|
|
206
|
-
cfg.plugins.installs[pluginId] = {
|
|
207
|
-
source: "npm",
|
|
208
|
-
spec: spec,
|
|
209
|
-
installPath: pluginDir,
|
|
210
|
-
version: version,
|
|
211
|
-
installedAt: new Date().toISOString().replace(/\.\d{3}Z$/, ".000Z")
|
|
212
|
-
};
|
|
213
|
-
|
|
214
|
-
// ---------- 2) 黑名单修复 ----------
|
|
215
|
-
if (Array.isArray(cfg.plugins.deny)) {
|
|
216
|
-
const idx = cfg.plugins.deny.indexOf(pluginId);
|
|
217
|
-
if (idx !== -1) {
|
|
218
|
-
cfg.plugins.deny.splice(idx, 1);
|
|
219
|
-
if (cfg.plugins.deny.length === 0) {
|
|
220
|
-
delete cfg.plugins.deny;
|
|
221
|
-
}
|
|
222
|
-
}
|
|
223
|
-
}
|
|
224
|
-
|
|
225
|
-
// ---------- 3) 白名单添加 ----------
|
|
226
|
-
if (Array.isArray(cfg.plugins.allow)) {
|
|
227
|
-
if (!cfg.plugins.allow.includes(pluginId)) {
|
|
228
|
-
cfg.plugins.allow.push(pluginId);
|
|
229
|
-
}
|
|
230
|
-
}
|
|
231
|
-
|
|
232
|
-
// ---------- 4) channel 配置:智能合并 ----------
|
|
233
|
-
if (!cfg.channels) cfg.channels = {};
|
|
234
|
-
const ch = cfg.channels[pluginId] || {};
|
|
235
|
-
|
|
236
|
-
// 迁移旧的 apiKey -> apiKeys
|
|
237
|
-
let apiKeys = Array.isArray(ch.apiKeys) ? [...ch.apiKeys] : [];
|
|
238
|
-
if (ch.apiKey && typeof ch.apiKey === "string") {
|
|
239
|
-
if (!apiKeys.includes(ch.apiKey)) {
|
|
240
|
-
apiKeys.push(ch.apiKey);
|
|
241
|
-
}
|
|
242
|
-
delete ch.apiKey;
|
|
243
|
-
}
|
|
244
|
-
|
|
245
|
-
// 如果通过环境变量传入了 APIKEY,确保它在 apiKeys 数组中(去重)
|
|
246
|
-
if (envApiKey && !apiKeys.includes(envApiKey)) {
|
|
247
|
-
apiKeys.push(envApiKey);
|
|
248
|
-
}
|
|
249
|
-
|
|
250
|
-
ch.enabled = true;
|
|
251
|
-
ch.apiKeys = apiKeys;
|
|
252
|
-
cfg.channels[pluginId] = ch;
|
|
253
|
-
|
|
254
|
-
// ---------- 5) 写回配置文件 ----------
|
|
255
|
-
fs.writeFileSync(cfgPath, JSON.stringify(cfg, null, 2) + "\n", "utf8");
|
|
256
|
-
|
|
257
|
-
// 输出版本号到 stdout,供 shell 接收
|
|
258
|
-
process.stdout.write(version);
|
|
259
|
-
') || result_exit "config_update_failed"
|
|
260
|
-
|
|
261
|
-
# ========== 重启 Gateway ==========
|
|
262
|
-
|
|
263
|
-
openclaw gateway restart >/dev/null 2>&1 || true
|
|
264
|
-
|
|
265
|
-
# stdout 只输出这一行 RESULT,供前端解析
|
|
266
|
-
result_ok "$version"
|
|
@@ -1,88 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* LightClaw — Session History Reader
|
|
3
|
-
*
|
|
4
|
-
* 直接读取 OpenClaw Gateway 的 JSONL session 文件,获取持久化的对话历史。
|
|
5
|
-
* 文件路径: ~/.openclaw/agents/<agentId>/sessions/<sessionId>.jsonl
|
|
6
|
-
*
|
|
7
|
-
* JSONL 每行格式:
|
|
8
|
-
* { "type": "session", ... } ← session header (第一行)
|
|
9
|
-
* { "type": "message", "message": { ... }} ← 对话消息
|
|
10
|
-
* { "type": "compaction", ... } ← 上下文压缩标记
|
|
11
|
-
* { "type": "model_change", ... } ← 模型切换(跳过)
|
|
12
|
-
* { "type": "thinking_level_change", ... } ← 思考级别变更(跳过)
|
|
13
|
-
* { "type": "custom", ... } ← 自定义元数据(跳过)
|
|
14
|
-
*/
|
|
15
|
-
/** 文件附件信息(从消息文本中提取) */
|
|
16
|
-
export interface FileAttachmentInfo {
|
|
17
|
-
/** 原始文件名 */
|
|
18
|
-
name: string;
|
|
19
|
-
/** MIME 类型 */
|
|
20
|
-
mimeType?: string;
|
|
21
|
-
/** 文件大小描述(如 "3.0KB") */
|
|
22
|
-
size?: string;
|
|
23
|
-
/** 文件路径或 URI */
|
|
24
|
-
uri?: string;
|
|
25
|
-
}
|
|
26
|
-
/** 标准化后返回给前端的历史消息 */
|
|
27
|
-
export interface HistoryMessage {
|
|
28
|
-
role: "user" | "assistant" | "system" | "tool";
|
|
29
|
-
content: string;
|
|
30
|
-
timestamp?: number;
|
|
31
|
-
/** 消息中包含的工具调用(可选) */
|
|
32
|
-
toolCalls?: Array<{
|
|
33
|
-
name: string;
|
|
34
|
-
args?: string;
|
|
35
|
-
}>;
|
|
36
|
-
/** 消息中包含的工具结果(可选) */
|
|
37
|
-
toolResult?: {
|
|
38
|
-
toolCallId?: string;
|
|
39
|
-
name?: string;
|
|
40
|
-
output?: string;
|
|
41
|
-
};
|
|
42
|
-
/** AI 的思考过程(可选) */
|
|
43
|
-
thinking?: string;
|
|
44
|
-
/** 消息中包含的文件附件(可选) */
|
|
45
|
-
files?: FileAttachmentInfo[];
|
|
46
|
-
/** 压缩标记 */
|
|
47
|
-
isCompaction?: boolean;
|
|
48
|
-
}
|
|
49
|
-
/**
|
|
50
|
-
* 根据 sessionKey 找到对应的 .jsonl transcript 文件路径
|
|
51
|
-
*/
|
|
52
|
-
export declare function resolveTranscriptPath(sessionKey: string, agentId?: string): string | null;
|
|
53
|
-
export interface ReadHistoryOptions {
|
|
54
|
-
/** 最大返回条数,默认 200 */
|
|
55
|
-
limit?: number;
|
|
56
|
-
/** Agent ID,默认 "default" */
|
|
57
|
-
agentId?: string;
|
|
58
|
-
/** 只返回 user/assistant 消息(过滤 system/tool),默认 false */
|
|
59
|
-
chatOnly?: boolean;
|
|
60
|
-
}
|
|
61
|
-
/**
|
|
62
|
-
* 读取指定 sessionKey 的历史对话消息
|
|
63
|
-
*
|
|
64
|
-
* @param sessionKey - 会话标识(与 gateway.ts 中 route.sessionKey 一致)
|
|
65
|
-
* @param opts - 选项
|
|
66
|
-
* @returns 历史消息数组(按时间正序),如果找不到 session 返回空数组
|
|
67
|
-
*/
|
|
68
|
-
export declare function readSessionHistory(sessionKey: string, opts?: ReadHistoryOptions): HistoryMessage[];
|
|
69
|
-
/**
|
|
70
|
-
* 读取指定 sessionKey 的历史消息(从文件末尾读取,大文件性能更好)
|
|
71
|
-
*
|
|
72
|
-
* 对于大文件(>1MB),不读取整个文件,而是从末尾读取指定字节数。
|
|
73
|
-
*/
|
|
74
|
-
export declare function readSessionHistoryTail(sessionKey: string, opts?: ReadHistoryOptions & {
|
|
75
|
-
maxBytes?: number;
|
|
76
|
-
}): HistoryMessage[];
|
|
77
|
-
/**
|
|
78
|
-
* 列出所有已知的 session(从 sessions.json 索引读取)
|
|
79
|
-
*/
|
|
80
|
-
export declare function listSessions(agentId?: string): Array<{
|
|
81
|
-
sessionKey: string;
|
|
82
|
-
sessionId: string;
|
|
83
|
-
updatedAt?: number;
|
|
84
|
-
label?: string;
|
|
85
|
-
displayName?: string;
|
|
86
|
-
channel?: string;
|
|
87
|
-
}>;
|
|
88
|
-
//# sourceMappingURL=session-history.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"session-history.d.ts","sourceRoot":"","sources":["../../src/session-history.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAUH,uBAAuB;AACvB,MAAM,WAAW,kBAAkB;IACjC,YAAY;IACZ,IAAI,EAAE,MAAM,CAAC;IACb,cAAc;IACd,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,wBAAwB;IACxB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,gBAAgB;IAChB,GAAG,CAAC,EAAE,MAAM,CAAC;CACd;AAED,qBAAqB;AACrB,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,MAAM,GAAG,WAAW,GAAG,QAAQ,GAAG,MAAM,CAAC;IAC/C,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,qBAAqB;IACrB,SAAS,CAAC,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IACnD,qBAAqB;IACrB,UAAU,CAAC,EAAE;QAAE,UAAU,CAAC,EAAE,MAAM,CAAC;QAAC,IAAI,CAAC,EAAE,MAAM,CAAC;QAAC,MAAM,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IACrE,mBAAmB;IACnB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,qBAAqB;IACrB,KAAK,CAAC,EAAE,kBAAkB,EAAE,CAAC;IAC7B,WAAW;IACX,YAAY,CAAC,EAAE,OAAO,CAAC;CACxB;AA4ED;;GAEG;AACH,wBAAgB,qBAAqB,CAAC,UAAU,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CA0BzF;AA6YD,MAAM,WAAW,kBAAkB;IACjC,oBAAoB;IACpB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,4BAA4B;IAC5B,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,qDAAqD;IACrD,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB;AAED;;;;;;GAMG;AACH,wBAAgB,kBAAkB,CAAC,UAAU,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,kBAAkB,GAAG,cAAc,EAAE,CA4DlG;AAED;;;;GAIG;AACH,wBAAgB,sBAAsB,CACpC,UAAU,EAAE,MAAM,EAClB,IAAI,CAAC,EAAE,kBAAkB,GAAG;IAAE,QAAQ,CAAC,EAAE,MAAM,CAAA;CAAE,GAChD,cAAc,EAAE,CAuElB;AAED;;GAEG;AACH,wBAAgB,YAAY,CAAC,OAAO,CAAC,EAAE,MAAM,GAAG,KAAK,CAAC;IACpD,UAAU,EAAE,MAAM,CAAC;IACnB,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB,CAAC,CAaD"}
|