wezard 2.2.2 → 2.4.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/CLAUDE.md +9 -6
- package/README.md +5 -5
- package/config.example.jsonc +12 -0
- package/dist/cli/init.js +2 -1
- package/dist/cli/init.js.map +1 -1
- package/dist/daemon/approval.js +90 -6
- package/dist/daemon/approval.js.map +1 -1
- package/dist/daemon/chat-log.js +6 -1
- package/dist/daemon/chat-log.js.map +1 -1
- package/dist/daemon/chat-name.js +15 -0
- package/dist/daemon/chat-name.js.map +1 -1
- package/dist/daemon/config-api.js +265 -70
- package/dist/daemon/config-api.js.map +1 -1
- package/dist/daemon/danger.js +15 -0
- package/dist/daemon/danger.js.map +1 -1
- package/dist/daemon/detail.js +49 -0
- package/dist/daemon/detail.js.map +1 -1
- package/dist/daemon/handoff.js +12 -5
- package/dist/daemon/handoff.js.map +1 -1
- package/dist/daemon/idle-nudge.js +55 -0
- package/dist/daemon/idle-nudge.js.map +1 -0
- package/dist/daemon/inbound.js +19 -14
- package/dist/daemon/inbound.js.map +1 -1
- package/dist/daemon/index.js +1509 -259
- package/dist/daemon/index.js.map +1 -1
- package/dist/daemon/jobs.js +180 -32
- package/dist/daemon/jobs.js.map +1 -1
- package/dist/daemon/last-response.js +15 -0
- package/dist/daemon/last-response.js.map +1 -1
- package/dist/daemon/memory-steward.js +124 -68
- package/dist/daemon/memory-steward.js.map +1 -1
- package/dist/daemon/mirror-bridge.js +506 -124
- package/dist/daemon/mirror-bridge.js.map +1 -1
- package/dist/daemon/mirror-store.js.map +1 -1
- package/dist/daemon/model-select.js +102 -0
- package/dist/daemon/model-select.js.map +1 -1
- package/dist/daemon/notices.js +147 -33
- package/dist/daemon/notices.js.map +1 -1
- package/dist/daemon/peers.js +261 -124
- package/dist/daemon/peers.js.map +1 -1
- package/dist/daemon/pending-items.js +171 -0
- package/dist/daemon/pending-items.js.map +1 -0
- package/dist/daemon/receipts.js +428 -80
- package/dist/daemon/receipts.js.map +1 -1
- package/dist/daemon/route.js +133 -19
- package/dist/daemon/route.js.map +1 -1
- package/dist/daemon/spawn-tmux.js +24 -13
- package/dist/daemon/spawn-tmux.js.map +1 -1
- package/dist/daemon/steward-guard.js +32 -0
- package/dist/daemon/steward-guard.js.map +1 -0
- package/dist/daemon/task-registry.js +1 -1
- package/dist/daemon/task-registry.js.map +1 -1
- package/dist/daemon/tasks.js +12 -4
- package/dist/daemon/tasks.js.map +1 -1
- package/dist/daemon/usage.js +4 -11
- package/dist/daemon/usage.js.map +1 -1
- package/dist/daemon/wizard-memory.js +36 -4
- package/dist/daemon/wizard-memory.js.map +1 -1
- package/dist/daemon/wizard.js +174 -87
- package/dist/daemon/wizard.js.map +1 -1
- package/dist/mcp/server.js +209 -132
- package/dist/mcp/server.js.map +1 -1
- package/dist/shared/charter-view.js +35 -0
- package/dist/shared/charter-view.js.map +1 -0
- package/dist/shared/chat-http.js +134 -32
- package/dist/shared/chat-http.js.map +1 -1
- package/dist/shared/chat-render.js +6 -3
- package/dist/shared/chat-render.js.map +1 -1
- package/dist/shared/chat-view.js +17 -6
- package/dist/shared/chat-view.js.map +1 -1
- package/dist/shared/cli-backends.js +2 -0
- package/dist/shared/cli-backends.js.map +1 -1
- package/dist/shared/config-meta.js +91 -0
- package/dist/shared/config-meta.js.map +1 -0
- package/dist/shared/config-writer.js +5 -6
- package/dist/shared/config-writer.js.map +1 -1
- package/dist/shared/config.js +273 -294
- package/dist/shared/config.js.map +1 -1
- package/dist/shared/daemon-token.js +18 -0
- package/dist/shared/daemon-token.js.map +1 -0
- package/dist/shared/detail-render.js +233 -20
- package/dist/shared/detail-render.js.map +1 -1
- package/dist/shared/detail-store.js +33 -12
- package/dist/shared/detail-store.js.map +1 -1
- package/dist/shared/effort.js +11 -0
- package/dist/shared/effort.js.map +1 -0
- package/dist/shared/keepalive.js +5 -5
- package/dist/shared/keepalive.js.map +1 -1
- package/dist/shared/model-prices.js +258 -0
- package/dist/shared/model-prices.js.map +1 -0
- package/dist/shared/pricing.js +55 -0
- package/dist/shared/pricing.js.map +1 -0
- package/dist/shared/reminder.js +18 -4
- package/dist/shared/reminder.js.map +1 -1
- package/dist/shared/role-render.js +210 -8
- package/dist/shared/role-render.js.map +1 -1
- package/dist/shared/role-view.js +104 -26
- package/dist/shared/role-view.js.map +1 -1
- package/dist/shared/session-label.js +4 -0
- package/dist/shared/session-label.js.map +1 -1
- package/dist/shared/task-file.js +16 -1
- package/dist/shared/task-file.js.map +1 -1
- package/dist/shared/turn-state.js +24 -0
- package/dist/shared/turn-state.js.map +1 -0
- package/dist/shared/world.js +116 -13
- package/dist/shared/world.js.map +1 -1
- package/dist/svr/index.js +2 -1
- package/dist/svr/index.js.map +1 -1
- package/hooks/pre-tool-use.sh +15 -3
- package/package.json +1 -1
- package/web/chat.css +226 -74
- package/web/chat.js +1075 -370
|
@@ -1,86 +1,281 @@
|
|
|
1
|
-
import {
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
const
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
parent[
|
|
1
|
+
import { ConfigSchema, TIERS, configIssues, parseConfigText, readSecrets } from "../shared/config.js";
|
|
2
|
+
import { parseEffort } from "../shared/effort.js";
|
|
3
|
+
import { previewPatch, readJsoncText } from "../shared/config-writer.js";
|
|
4
|
+
import { childKeys, isBranch, parsePath, resolve, toJsonPath, typeOf, writeGate, } from "../shared/config-meta.js";
|
|
5
|
+
import { z } from "zod";
|
|
6
|
+
const isObj = (v) => !!v && typeof v === "object" && !Array.isArray(v);
|
|
7
|
+
const getIn = (obj, path) => path.reduce((acc, k) => (acc && typeof acc === "object" ? acc[k] : undefined), obj);
|
|
8
|
+
/** 把 `next` 在 `path` 处的值装进 `obj` (原地): 路上缺的祖先 (记录里的新键、没写过的节) 从最浅的那一层
|
|
9
|
+
* 整段取 `next` 的 —— 连同 schema 默认一起补全; 取到 undefined (unset 掉的记录项) 就删键, 不留一个值为
|
|
10
|
+
* undefined 的键给 `Object.entries` 读。 */
|
|
11
|
+
const putFrom = (obj, path, next) => {
|
|
12
|
+
const depth = path.findIndex((_, i) => i < path.length - 1 && !(isObj(getIn(obj, path.slice(0, i + 1))) || Array.isArray(getIn(obj, path.slice(0, i + 1)))));
|
|
13
|
+
const at = depth < 0 ? path : path.slice(0, depth + 1);
|
|
14
|
+
const parent = getIn(obj, at.slice(0, -1));
|
|
15
|
+
const key = at[at.length - 1];
|
|
16
|
+
const value = getIn(next, at);
|
|
17
|
+
if (value === undefined)
|
|
18
|
+
delete parent[key];
|
|
19
|
+
else
|
|
20
|
+
parent[key] = value;
|
|
21
|
+
};
|
|
22
|
+
// 默认值从 schema 解析一份空配置得来, 而不是读字段自己的 default: `models.tiers.light.model`
|
|
23
|
+
// 的字段默认是 "", 真默认 "haiku" 写在上一层的 `.default({...})` 里。
|
|
24
|
+
let defaults;
|
|
25
|
+
const defaultsOf = () => (defaults ??= ConfigSchema.parse({ bot: { botId: "-", secret: "-" } }));
|
|
26
|
+
const same = (a, b) => JSON.stringify(a) === JSON.stringify(b);
|
|
27
|
+
const show = (v) => (v === undefined ? "—" : JSON.stringify(v));
|
|
28
|
+
const clip = (s, n) => (s.length > n ? `${s.slice(0, n - 1)}…` : s);
|
|
29
|
+
// ── 可见性 ──────────────────────────────────────────────────────────────
|
|
30
|
+
// hidden 两个来源: schema 标的 (bot / 口令), 以及 secrets.json 里实际出现的任何叶子 ——
|
|
31
|
+
// 那里的值叠在 config.jsonc 之上, 读出来是泄密, 写进 config.jsonc 也会被它盖掉。
|
|
32
|
+
const fromSecrets = (path, secrets) => path.some((_, i) => { const v = getIn(secrets, path.slice(0, i + 1)); return v !== undefined && !isObj(v); });
|
|
33
|
+
const visible = (r, secrets) => r.gate !== "hidden" && !fromSecrets(r.path, secrets);
|
|
34
|
+
const APPLY_WORD = { hot: "热生效", reload: "需 reload" };
|
|
35
|
+
const GATE_WORD = { free: "wizard 可直接改", card: "改动要人在卡片上确认", hidden: "不可读写" };
|
|
36
|
+
const flags = (r) => `${writeGate(r) === "card" ? "✋" : ""}${r.apply === "reload" ? "↻" : ""}`;
|
|
37
|
+
const LEGEND = "✋ = 改动要人在卡片上点确认 · ↻ = 改完要 reload (`./cli/wezard.sh reload`) 才生效 · * = 当前值不同于默认";
|
|
38
|
+
// ── config_get ──────────────────────────────────────────────────────────
|
|
39
|
+
// 节 / 记录只报项数: 它们的子项各有各的值、默认与标记, 往下一层看。节上的 ✋ 只在整节都要
|
|
40
|
+
// 确认时才挂 (节自己的 gate), 混着的节 (wrc) 由子项各自标。
|
|
41
|
+
const row = (cfg, r) => {
|
|
42
|
+
const key = r.path[r.path.length - 1];
|
|
43
|
+
const cur = getIn(cfg, r.path);
|
|
44
|
+
const def = getIn(defaultsOf(), r.path);
|
|
45
|
+
const many = isBranch(r.core) || r.core instanceof z.ZodRecord;
|
|
46
|
+
const star = !many && !same(cur, def) ? "*" : " ";
|
|
47
|
+
const size = isBranch(r.core) ? childKeys(r.core).length : isObj(cur) ? Object.keys(cur).length : 0;
|
|
48
|
+
const val = many ? `${size} 项` : `= ${clip(show(cur), 80)}${star === "*" ? ` (默认 ${clip(show(def), 40)})` : ""}`;
|
|
49
|
+
const mark = isBranch(r.core) ? (r.gate === "card" ? "✋" : "") : flags(r);
|
|
50
|
+
return `${star} ${[`${key} ${typeOf(r.core)} ${val}`, mark, r.desc].filter(Boolean).join(" ")}`;
|
|
51
|
+
};
|
|
52
|
+
const leaf = (cfg, r) => [
|
|
53
|
+
r.path.join("."),
|
|
54
|
+
` 说明: ${r.desc || "—"}`,
|
|
55
|
+
` 类型: ${typeOf(r.core)}${r.optional ? " (可不设)" : ""}`,
|
|
56
|
+
` 当前: ${show(getIn(cfg, r.path))}`,
|
|
57
|
+
` 默认: ${show(getIn(defaultsOf(), r.path))}`,
|
|
58
|
+
` 生效: ${r.apply === "hot" ? "热生效, 改完即用" : "需 reload 才生效 (守护进程启动时读一次)"}`,
|
|
59
|
+
` 权限: ${GATE_WORD[writeGate(r)]}`,
|
|
60
|
+
].join("\n");
|
|
61
|
+
// 记录 / 数组: 子项是数据而不是 schema 字段, 按数据列。
|
|
62
|
+
const entries = (cfg, r) => {
|
|
63
|
+
const v = getIn(cfg, r.path);
|
|
64
|
+
const pairs = Array.isArray(v) ? v.map((x, i) => [String(i), x]) : isObj(v) ? Object.entries(v) : [];
|
|
65
|
+
return pairs.length ? pairs.map(([k, x]) => ` ${k} = ${clip(show(x), 120)}`) : [" (空)"];
|
|
66
|
+
};
|
|
67
|
+
const missing = (path, secrets) => {
|
|
68
|
+
const at = [...path.keys()].reverse().map((i) => path.slice(0, i)).find((p) => resolve(ConfigSchema, p));
|
|
69
|
+
const base = resolve(ConfigSchema, at ?? []);
|
|
70
|
+
const kids = childKeys(base.core).filter((k) => visible(resolve(ConfigSchema, [...base.path, k]), secrets));
|
|
71
|
+
return `没有 \`${path.join(".")}\`${kids.length ? `; \`${base.path.join(".") || "<root>"}\` 下有: ${kids.join(", ")}` : ""}`;
|
|
72
|
+
};
|
|
73
|
+
/** `path` 这一层的文本: 节点自己一行说明, 再逐项列子项 (或叶子详情)。`evidence` 挂额外依据 (用量等)。 */
|
|
74
|
+
export const configGet = (cfg, sourcePath, path, evidence = () => []) => {
|
|
75
|
+
const p = parsePath(path);
|
|
76
|
+
const secrets = readSecrets();
|
|
77
|
+
const r = resolve(ConfigSchema, p);
|
|
78
|
+
if (!r)
|
|
79
|
+
return { ok: false, reason: missing(p, secrets) };
|
|
80
|
+
if (!visible(r, secrets))
|
|
81
|
+
return { ok: false, reason: `\`${p.join(".")}\` 不可读` };
|
|
82
|
+
const extra = evidence(p);
|
|
83
|
+
const tail = [...(extra.length ? ["", "依据:", ...extra.map((l) => ` ${l}`)] : []), "", LEGEND];
|
|
84
|
+
if (!isBranch(r.core)) {
|
|
85
|
+
const body = r.core instanceof z.ZodRecord || r.core instanceof z.ZodArray
|
|
86
|
+
? [`${p.join(".")} ${typeOf(r.core)} ${flags(r)} ${r.desc}`, ...entries(cfg, r), "", leaf(cfg, r).split("\n").slice(4).join("\n")]
|
|
87
|
+
: [leaf(cfg, r)];
|
|
88
|
+
return { ok: true, text: [...body, ...tail].join("\n") };
|
|
89
|
+
}
|
|
90
|
+
const head = p.length
|
|
91
|
+
? `${p.join(".")} · ${r.desc}${r.gate === "card" ? " ✋" : ""}`
|
|
92
|
+
: `wezard 配置 (${sourcePath}) —— config_get({path}) 逐层展开; config_set({path, value, dryRun:true}) 先看 diff 再改`;
|
|
93
|
+
const kids = childKeys(r.core)
|
|
94
|
+
.map((k) => resolve(ConfigSchema, [...p, k]))
|
|
95
|
+
.filter((c) => visible(c, secrets))
|
|
96
|
+
.map((c) => row(cfg, c));
|
|
97
|
+
return { ok: true, text: [head, ...kids, ...tail].join("\n") };
|
|
98
|
+
};
|
|
99
|
+
// 字符串之外的类型收到字符串时先试 JSON.parse —— MCP 那头模型常把 `true` / `5` / `["a"]` 写成字符串。
|
|
100
|
+
const coerce = (core, v) => {
|
|
101
|
+
if (typeof v !== "string" || core instanceof z.ZodString || core instanceof z.ZodEnum)
|
|
102
|
+
return v;
|
|
103
|
+
try {
|
|
104
|
+
return JSON.parse(v);
|
|
21
105
|
}
|
|
106
|
+
catch {
|
|
107
|
+
return v;
|
|
108
|
+
}
|
|
109
|
+
};
|
|
110
|
+
// 行级 diff: 掐掉公共首尾, 中间段前后各留一行上下文。jsonc-parser 的改动总是一段连续区域。
|
|
111
|
+
const lineDiff = (a, b) => {
|
|
112
|
+
const x = a.split("\n"), y = b.split("\n");
|
|
113
|
+
let s = 0;
|
|
114
|
+
while (s < x.length && s < y.length && x[s] === y[s])
|
|
115
|
+
s++;
|
|
116
|
+
let e = 0;
|
|
117
|
+
while (e < x.length - s && e < y.length - s && x[x.length - 1 - e] === y[y.length - 1 - e])
|
|
118
|
+
e++;
|
|
119
|
+
const ctx = (l) => (l === undefined ? [] : [` ${l}`]);
|
|
120
|
+
return [
|
|
121
|
+
...ctx(x[s - 1]),
|
|
122
|
+
...x.slice(s, x.length - e).map((l) => `- ${l}`),
|
|
123
|
+
...y.slice(s, y.length - e).map((l) => `+ ${l}`),
|
|
124
|
+
...ctx(x[x.length - e]),
|
|
125
|
+
].join("\n");
|
|
126
|
+
};
|
|
127
|
+
const parseOp = (op) => op === undefined || op === "" ? "set" : ["set", "add", "remove", "unset"].find((o) => o === op);
|
|
128
|
+
/** 算一次写入的全部后果而不落盘: 校验 (整份配置过 zod)、改前改后、jsonc diff、gate / apply。 */
|
|
129
|
+
export const planSet = (cfg, sourcePath, req) => {
|
|
130
|
+
const p = parsePath(req.path);
|
|
131
|
+
if (!p.length)
|
|
132
|
+
return { ok: false, reason: "path 必填, 例如 'models.tiers.light.model'; 不知道有哪些就先 config_get()" };
|
|
133
|
+
const secrets = readSecrets();
|
|
134
|
+
const r = resolve(ConfigSchema, p);
|
|
135
|
+
if (!r)
|
|
136
|
+
return { ok: false, reason: missing(p, secrets) };
|
|
137
|
+
const gate = writeGate(r);
|
|
138
|
+
if (gate === "hidden" || getIn(secrets, p) !== undefined || fromSecrets(p, secrets))
|
|
139
|
+
return { ok: false, reason: `\`${p.join(".")}\` 不可写` };
|
|
140
|
+
const op = parseOp(req.op);
|
|
141
|
+
if (!op)
|
|
142
|
+
return { ok: false, reason: `op 只能是 set / add / remove / unset, 收到 ${req.op}` };
|
|
143
|
+
if ((op === "set" || op === "add" || op === "remove") && req.value === undefined)
|
|
144
|
+
return { ok: false, reason: `op=${op} 要带 value` };
|
|
145
|
+
// 改前取盘上那份 (叠 secrets 后解析) 而不是活的 cfg: reload 项写进文件后活值并不跟着变,
|
|
146
|
+
// 拿活值当 before 会把「文件里已经是 X」说成「还是旧值」。
|
|
147
|
+
const text = readJsoncText(sourcePath);
|
|
148
|
+
const onDisk = parseConfigText(text);
|
|
149
|
+
const before = getIn(onDisk.success ? onDisk.data : cfg, p);
|
|
150
|
+
const value = (() => {
|
|
151
|
+
if (op === "unset")
|
|
152
|
+
return undefined;
|
|
153
|
+
if (op === "set")
|
|
154
|
+
return coerce(r.core, req.value);
|
|
155
|
+
const el = r.core.element;
|
|
156
|
+
const items = (Array.isArray(req.value) ? req.value : [req.value]).map((x) => coerce(el, x));
|
|
157
|
+
const cur = Array.isArray(before) ? before : [];
|
|
158
|
+
return op === "add"
|
|
159
|
+
? [...cur, ...items.filter((x) => !cur.some((c) => same(c, x)))]
|
|
160
|
+
: cur.filter((c) => !items.some((x) => same(c, x)));
|
|
161
|
+
})();
|
|
162
|
+
if ((op === "add" || op === "remove") && !(r.core instanceof z.ZodArray))
|
|
163
|
+
return { ok: false, reason: `\`${p.join(".")}\` 不是数组, add / remove 用不了` };
|
|
164
|
+
const jsonPath = toJsonPath(ConfigSchema, p);
|
|
165
|
+
const next = previewPatch(text, [{ path: jsonPath, value }]);
|
|
166
|
+
const parsed = parseConfigText(next);
|
|
167
|
+
if (!parsed.success)
|
|
168
|
+
return { ok: false, reason: `校验没过, 没写:\n${configIssues(parsed.error)}` };
|
|
169
|
+
const after = getIn(parsed.data, p);
|
|
170
|
+
return {
|
|
171
|
+
ok: true, path: p, jsonPath, value, gate, apply: r.apply, before, after,
|
|
172
|
+
changed: next !== text,
|
|
173
|
+
diff: lineDiff(text, next),
|
|
174
|
+
next: parsed.data,
|
|
175
|
+
};
|
|
176
|
+
};
|
|
177
|
+
/** 计划的文本形态: dryRun 的回包、确认卡的正文、写完的回执共用。 */
|
|
178
|
+
export const renderPlan = (pl) => [
|
|
179
|
+
`${pl.path.join(".")}: ${clip(show(pl.before), 300)} → ${clip(show(pl.after), 300)}`,
|
|
180
|
+
`${GATE_WORD[pl.gate]} · ${APPLY_WORD[pl.apply]}`,
|
|
181
|
+
...(pl.changed ? ["", pl.diff] : ["(文件不变)"]),
|
|
182
|
+
].join("\n");
|
|
183
|
+
/** 落盘之后把新值装进活的 cfg —— 只对 hot 项: reload 项半途换值, 会让启动时抓住旧值的模块与现读的模块各执一词。 */
|
|
184
|
+
export const applyHot = (cfg, pl) => {
|
|
185
|
+
if (pl.apply === "hot")
|
|
186
|
+
putFrom(cfg, pl.path, pl.next);
|
|
187
|
+
};
|
|
188
|
+
/** 只装了这一处改动的顶层节 (深拷贝, 不碰活的 cfg) —— 同节里别人手改了、还没生效的 reload 项不跟着进来。 */
|
|
189
|
+
export const patchedTop = (cfg, pl) => {
|
|
190
|
+
const key = pl.path[0];
|
|
191
|
+
const box = { [key]: structuredClone(cfg[key]) };
|
|
192
|
+
putFrom(box, pl.path, pl.next);
|
|
193
|
+
return box[key];
|
|
22
194
|
};
|
|
23
|
-
const
|
|
195
|
+
const LEGACY = {
|
|
196
|
+
allow_from: { path: "wrc.allowFrom", type: "array" },
|
|
197
|
+
approval_window: { path: "approval.windowMinutes", type: "number" },
|
|
198
|
+
approval_cache: { path: "approval.sessionCacheMinutes", type: "number" },
|
|
199
|
+
danger_skip: { path: "approval.danger.skip", type: "boolean" },
|
|
200
|
+
danger_skip_all: { path: "approval.danger.skipAll", type: "boolean" },
|
|
201
|
+
danger_enabled: { path: "approval.danger.enabled", type: "boolean" },
|
|
202
|
+
approval_mode: { path: "approval.mode", type: "string" },
|
|
203
|
+
cwd: { path: "wrc.cwd", type: "string" },
|
|
204
|
+
default_chat: { path: "defaultChat", type: "string" },
|
|
205
|
+
log_level: { path: "daemon.logLevel", type: "string" },
|
|
206
|
+
slash_ack_first_line: { path: "wrc.mirror.slashAckFirstLine", type: "boolean" },
|
|
207
|
+
};
|
|
208
|
+
const legacyValue = (raw, type) => {
|
|
24
209
|
switch (type) {
|
|
25
210
|
case "number": {
|
|
26
211
|
const n = Number(raw);
|
|
27
|
-
return Number.isFinite(n) ? n :
|
|
212
|
+
return Number.isFinite(n) ? n : raw;
|
|
28
213
|
}
|
|
29
214
|
case "boolean": return raw === "true" || raw === "1";
|
|
30
215
|
case "array": try {
|
|
31
|
-
|
|
32
|
-
return Array.isArray(a) ? a : undefined;
|
|
216
|
+
return JSON.parse(raw);
|
|
33
217
|
}
|
|
34
218
|
catch {
|
|
35
|
-
return
|
|
219
|
+
return raw;
|
|
36
220
|
}
|
|
37
221
|
default: return raw;
|
|
38
222
|
}
|
|
39
223
|
};
|
|
40
|
-
export const
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
const
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
}
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
}
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
224
|
+
export const fromLegacy = (key, value, action) => {
|
|
225
|
+
const spec = LEGACY[key];
|
|
226
|
+
if (!spec)
|
|
227
|
+
return { ok: false, reason: `unknown key "${key}". valid: ${Object.keys(LEGACY).join(", ")}` };
|
|
228
|
+
const raw = String(value ?? "");
|
|
229
|
+
return action === "add" || action === "remove"
|
|
230
|
+
? { path: spec.path, op: action, value: raw }
|
|
231
|
+
: { path: spec.path, op: "set", value: legacyValue(raw, spec.type) };
|
|
232
|
+
};
|
|
233
|
+
export const legacyGet = (cfg, key) => {
|
|
234
|
+
const spec = key ? LEGACY[key] : undefined;
|
|
235
|
+
return spec ? { ok: true, key: key, value: getIn(cfg, parsePath(spec.path)) } : { ok: false, reason: `unknown key "${key}". valid: ${Object.keys(LEGACY).join(", ")}` };
|
|
236
|
+
};
|
|
237
|
+
/** spawn / clone 的 {cli, model, effort}: 显式给的 > 档里写的 > 不传。clone 换不了 CLI —— fork 只能在同一后端里。 */
|
|
238
|
+
export const pickTier = (models, tier, explicit, inherit) => {
|
|
239
|
+
const name = (tier ?? "").trim();
|
|
240
|
+
if (name && !TIERS.includes(name))
|
|
241
|
+
return { ok: false, reason: `tier 只有这几档: ${TIERS.join(" / ")}` };
|
|
242
|
+
const t = name ? models.tiers[name] : undefined;
|
|
243
|
+
const one = (x, y) => x !== undefined ? [x, "explicit"] : y !== undefined ? [y, "tier"] : [undefined, "inherit"];
|
|
244
|
+
const tierCli = inherit ? undefined : t?.cli;
|
|
245
|
+
const [cli, viaCli] = one(explicit.cli, tierCli);
|
|
246
|
+
const [model, viaModel] = one(explicit.model?.trim() || undefined, t?.model.trim() || undefined);
|
|
247
|
+
const [effort, viaEffort] = one(explicit.effort, parseEffort(t?.effort));
|
|
248
|
+
return {
|
|
249
|
+
ok: true,
|
|
250
|
+
...(name ? { tier: name } : {}),
|
|
251
|
+
cli, model, effort,
|
|
252
|
+
via: { cli: viaCli, model: viaModel, effort: viaEffort },
|
|
253
|
+
...(inherit && t?.cli ? { note: `档位里的 cli (${t.cli}) 没用上: 克隆只能留在被克隆者的 CLI 上` } : {}),
|
|
254
|
+
};
|
|
255
|
+
};
|
|
256
|
+
// 口语模型名的每个词都出现在 id 里就算: 'sonnet 5' ⊂ claude-sonnet-5-5。
|
|
257
|
+
const matches = (want, id) => {
|
|
258
|
+
const words = want.toLowerCase().split(/[\s._-]+/).filter(Boolean);
|
|
259
|
+
return words.length > 0 && words.every((w) => id.toLowerCase().includes(w));
|
|
260
|
+
};
|
|
261
|
+
const sumFor = (want, m) => [...m].filter(([id]) => matches(want, id)).reduce((a, [, x]) => ({ tokens: a.tokens + x.tokens, cost: a.cost + x.cost }), { tokens: 0, cost: 0 });
|
|
262
|
+
export const tierEvidence = (models, path, usage, holders, fmt) => {
|
|
263
|
+
if (path[0] !== "models")
|
|
264
|
+
return [];
|
|
265
|
+
const want = path[1] === "tiers" && path[2] ? [path[2]] : path[1] === "router" ? ["router"] : path[1] === "tiers" || !path[1] ? [...TIERS, ...(path[1] ? [] : ["router"])] : [];
|
|
266
|
+
const rows = want.filter((n) => n === "router" || TIERS.includes(n));
|
|
267
|
+
if (!rows.length)
|
|
268
|
+
return [];
|
|
269
|
+
const u = usage();
|
|
270
|
+
const line = (name) => {
|
|
271
|
+
const spec = name === "router" ? models.router : models.tiers[name];
|
|
272
|
+
const label = `${spec.model || "CLI 默认"}${spec.effort ? `·${spec.effort}` : ""}`;
|
|
273
|
+
if (!spec.model)
|
|
274
|
+
return `${name} (${label}): 用的是 CLI 默认模型, 按模型统计不出来`;
|
|
275
|
+
const w = sumFor(spec.model, u.week), d = sumFor(spec.model, u.today);
|
|
276
|
+
const held = name === "router" ? "" : ` · 名册里记作这一档的 ${holders(name)} 个`;
|
|
277
|
+
return `${name} (${label}): 本周 ${fmt.tokens(w.tokens)} tok ${fmt.cost(w.cost)} · 今日 ${fmt.tokens(d.tokens)} tok ${fmt.cost(d.cost)}${held}`;
|
|
278
|
+
};
|
|
279
|
+
return [...rows.map(line), "(用量按模型统计, 同一模型的档外用量也算在内)"];
|
|
85
280
|
};
|
|
86
281
|
//# sourceMappingURL=config-api.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config-api.js","sourceRoot":"","sources":["../../daemon/config-api.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"config-api.js","sourceRoot":"","sources":["../../daemon/config-api.ts"],"names":[],"mappings":"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"}
|
package/dist/daemon/danger.js
CHANGED
|
@@ -169,4 +169,19 @@ export const dangerOf = (cfg, toolName, toolInput) => {
|
|
|
169
169
|
cmds.reduce((acc, c) => acc ?? firstHit(cmdRules, c), undefined) ??
|
|
170
170
|
strings(toolInput).filter(pathish).reduce((acc, s) => acc ?? firstHit(pathRules, s), undefined));
|
|
171
171
|
};
|
|
172
|
+
// 入参里任意深度的 key=value 对 (DeferExecuteTool 之类的包装可能把真实入参套一层)。
|
|
173
|
+
const deepEntries = (v) => v && typeof v === "object"
|
|
174
|
+
? Object.entries(v).flatMap(([k, x]) => [[k, x], ...deepEntries(x)])
|
|
175
|
+
: [];
|
|
176
|
+
/** wezard 自家工具里改全机设置的「写」: set_model scope:"default"。hook 的自家工具白名单把它
|
|
177
|
+
* 放回审批; 这里让它**必发卡** —— 不吃 danger 的两个开关、⏱窗口和会话缓存。只有 skipAll /
|
|
178
|
+
* bypass (人主动选的全关) 压得过它。config_set 不在这里: 它按路径分级, 放权项由守护进程自己
|
|
179
|
+
* 推确认卡 (/config/set), 那张卡连 skipAll 都压不过; 再在 hook 拦一道就成了一次改动两张卡。 */
|
|
180
|
+
export const selfConfigWriteOf = (toolName, toolInput) => {
|
|
181
|
+
const tool = /wezard__(set_model)$/.exec(toolName)?.[1];
|
|
182
|
+
const kv = tool ? deepEntries(toolInput) : [];
|
|
183
|
+
if (tool === "set_model" && kv.some(([k, v]) => k === "scope" && v === "default"))
|
|
184
|
+
return { rule: "改全局默认模型 (set_model scope:default)" };
|
|
185
|
+
return undefined;
|
|
186
|
+
};
|
|
172
187
|
//# sourceMappingURL=danger.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"danger.js","sourceRoot":"","sources":["../../daemon/danger.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"danger.js","sourceRoot":"","sources":["../../daemon/danger.ts"],"names":[],"mappings":"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"}
|
package/dist/daemon/detail.js
CHANGED
|
@@ -8,6 +8,7 @@ import { hostname } from "node:os";
|
|
|
8
8
|
import { resolvePublicHost } from "../shared/lan-ip.js";
|
|
9
9
|
import { baseOfKey } from "../shared/session-label.js";
|
|
10
10
|
import { wizardStore } from "./wizard.js";
|
|
11
|
+
import { isKeepaliveShape } from "../shared/keepalive.js";
|
|
11
12
|
import { createDetailStore, } from "../shared/detail-store.js";
|
|
12
13
|
import { renderDetailPage, renderNotFound } from "../shared/detail-render.js";
|
|
13
14
|
import { createChatRoutes, chatRouteTable, CHAT_ROUTE_KEYS } from "../shared/chat-http.js";
|
|
@@ -47,12 +48,21 @@ const pushFacts = async () => {
|
|
|
47
48
|
body: JSON.stringify({ source: factsSource(), facts }),
|
|
48
49
|
}).then((r) => r.ok, () => false); // 同 forwardToRemote: 远端挂了不该影响本机
|
|
49
50
|
};
|
|
51
|
+
// 聊天票据是长期凭据, 却只在造出来那一刻推过一次: 远端换过地址 (lisct → 本机 svr)、
|
|
52
|
+
// 或那一下 svr 恰好不在, 它就永远缺席 —— 链接在本机开得了, 在 svr 上「未找到该会话」。
|
|
53
|
+
// 所以每次 (重新) 连上远端都把全部票据补推一遍; 一个聊天一条, 量可以忽略, svr 侧 put 幂等。
|
|
54
|
+
// 宪章同理: 一个 wizard 一份、只在出生那刻推一次, 错过了就要等它下次重生。
|
|
55
|
+
const forwardTickets = () => store?.list().filter((r) => r.kind === "chat" || r.kind === "charter").forEach(forwardToRemote);
|
|
50
56
|
// 两个前置条件 (配了远端、装上了 provider) 谁先到都可能 —— 两处都调一次, 起过就不再起。
|
|
51
57
|
const startFactsForward = () => {
|
|
52
58
|
if (factsTimer || !remoteBase || !worldFacts)
|
|
53
59
|
return;
|
|
60
|
+
let linked = false;
|
|
54
61
|
const tick = () => {
|
|
55
62
|
void pushFacts().then((ok) => {
|
|
63
|
+
if (ok && !linked)
|
|
64
|
+
forwardTickets();
|
|
65
|
+
linked = ok;
|
|
56
66
|
factsTimer = setTimeout(tick, ok ? FACTS_PUSH_MS : FACTS_RETRY_MS);
|
|
57
67
|
factsTimer.unref();
|
|
58
68
|
});
|
|
@@ -131,6 +141,22 @@ export const recordPost = (rec) => {
|
|
|
131
141
|
store.put(full);
|
|
132
142
|
forwardToRemote(full);
|
|
133
143
|
};
|
|
144
|
+
// 宪章: 每次渲染都是一次 spawn 要压进系统提示的那份 —— 记下来, rolepage 才看得见它在吃多少上下文。
|
|
145
|
+
export const recordCharter = (target, text, lineage) => {
|
|
146
|
+
if (!store || !target || !text.trim())
|
|
147
|
+
return;
|
|
148
|
+
const full = { kind: "charter", id: `k${randomBytes(12).toString("base64url")}`, createdAt: Date.now(), target, text, ...(lineage ? { lineage } : {}) };
|
|
149
|
+
store.put(full);
|
|
150
|
+
forwardToRemote(full);
|
|
151
|
+
};
|
|
152
|
+
/** 这条记录出现之前就已经活着的 wizard: 从 spawn 落在盘上的那份补一条, 已经有了就不动。 */
|
|
153
|
+
export const backfillCharter = (target, text, at) => {
|
|
154
|
+
if (!store || store.list().some((r) => r.kind === "charter" && r.target === target))
|
|
155
|
+
return;
|
|
156
|
+
const full = { kind: "charter", id: `k${randomBytes(12).toString("base64url")}`, createdAt: at, target, text };
|
|
157
|
+
store.put(full);
|
|
158
|
+
forwardToRemote(full);
|
|
159
|
+
};
|
|
134
160
|
// Brief 模式聚合详情: 一个 turn 的时间线。startTurn 建空壳,item 增量 append,close 收尾。
|
|
135
161
|
// 每次变更都完整重推整条 record 给 remote svr — svr 侧存的是 last-write-wins 快照。
|
|
136
162
|
export const recordTurnStart = (rec) => {
|
|
@@ -153,6 +179,18 @@ export const recordTurnQuery = (id, userQuery, same) => {
|
|
|
153
179
|
if (full)
|
|
154
180
|
forwardToRemote(full);
|
|
155
181
|
};
|
|
182
|
+
/** 一轮跑着时插进来的一句。同一句 (同时刻同正文) 只记一次 —— tail 重放不该把它记成两句。 */
|
|
183
|
+
export const recordTurnInject = (id, inj) => {
|
|
184
|
+
if (!store)
|
|
185
|
+
return;
|
|
186
|
+
const r = store.get(id);
|
|
187
|
+
if (r?.kind !== "turn" || (r.injects ?? []).some((x) => x.ts === inj.ts && x.body === inj.body))
|
|
188
|
+
return;
|
|
189
|
+
store.put({ ...r, injects: [...(r.injects ?? []), inj], updatedAt: Date.now() });
|
|
190
|
+
const full = store.get(id);
|
|
191
|
+
if (full)
|
|
192
|
+
forwardToRemote(full);
|
|
193
|
+
};
|
|
156
194
|
export const recordTurnItem = (id, item) => {
|
|
157
195
|
if (!store)
|
|
158
196
|
return;
|
|
@@ -194,6 +232,17 @@ export const knowsToolUse = (toolUseId) => getDetail(toolUseId)?.kind === "tool"
|
|
|
194
232
|
// 一个 wizard 名字背后的 rolepage 链接需要一张票据 —— `?id=` 既是凭据, 也是页面默认
|
|
195
233
|
// 落点。从没跑过一轮的会话没有自己的票据, 返回 undefined。
|
|
196
234
|
export const latestTurnIdFor = (target) => latestTurnId((r) => r.target === target);
|
|
235
|
+
/** 这个会话**当前这一轮**若是人开的 (有问话、没有同伴出处、不是保温 ping), 那句原话; 回执 / peer 轮 = 无。
|
|
236
|
+
* 管家开需求根单时记「需求原话」用: 取更早一轮的人话会把上一件事的话记到这件上。 */
|
|
237
|
+
export const currentHumanQueryOf = (target) => {
|
|
238
|
+
const id = latestTurnIdFor(target);
|
|
239
|
+
const r = id ? store?.get(id) : undefined;
|
|
240
|
+
return r?.kind === "turn" && r.userQuery && !r.from && !isKeepaliveShape(r.userQuery) ? r.userQuery : undefined;
|
|
241
|
+
};
|
|
242
|
+
/** 这个会话还开着的轮次 (子 agent 的不算), 新的在前 —— reload 时正跑着的那一轮旧进程没来得及收口, 也有排着还没接上的。 */
|
|
243
|
+
export const openTurnsOf = (target, sessionId) => (store?.list() ?? [])
|
|
244
|
+
.filter((r) => r.kind === "turn" && r.target === target && r.sessionId === sessionId && !r.closed && !r.agent)
|
|
245
|
+
.sort((x, y) => y.createdAt - x.createdAt);
|
|
197
246
|
/** 这个会话最近一次有人开口的那一轮落下的频道印章。keepalive 轮不盖频道 (channel
|
|
198
247
|
* 缺省); 没有问话也没有出处的续写轮只是沿用来的, 可能正是一次 reload 记错的, 都不算数。 */
|
|
199
248
|
export const lastChannelOf = (target) => {
|