@eddyskywalker/dsh-chatgpt-subscription 0.43.1 → 0.45.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/CHANGELOG.md +29 -0
- package/cordis.patch.yml +5 -0
- package/lib/client.js +94 -8
- package/lib/client.js.map +1 -1
- package/lib/entry-progress-updates-CkGJr_fe.js +1004 -0
- package/lib/index.js +2011 -847
- package/lib/progress-updates.js +2 -0
- package/lib/types/client/progress-updates/host-source.d.ts +16 -0
- package/lib/types/client/progress-updates/host-source.d.ts.map +1 -1
- package/lib/types/client/progress-updates/index.d.ts.map +1 -1
- package/lib/types/client/progress-updates/settings-binding.d.ts +5 -0
- package/lib/types/client/progress-updates/settings-binding.d.ts.map +1 -1
- package/lib/types/compat.d.ts +1 -1
- package/lib/types/entry-progress-updates.d.ts +43 -0
- package/lib/types/entry-progress-updates.d.ts.map +1 -0
- package/lib/types/host/cache-warmup/budget.d.ts +64 -0
- package/lib/types/host/cache-warmup/budget.d.ts.map +1 -0
- package/lib/types/host/cache-warmup/contracts.d.ts +267 -0
- package/lib/types/host/cache-warmup/contracts.d.ts.map +1 -0
- package/lib/types/host/cache-warmup/index.d.ts +21 -0
- package/lib/types/host/cache-warmup/index.d.ts.map +1 -0
- package/lib/types/host/cache-warmup/install.d.ts +130 -0
- package/lib/types/host/cache-warmup/install.d.ts.map +1 -0
- package/lib/types/host/cache-warmup/logging.d.ts +120 -0
- package/lib/types/host/cache-warmup/logging.d.ts.map +1 -0
- package/lib/types/host/cache-warmup/projection.d.ts +29 -0
- package/lib/types/host/cache-warmup/projection.d.ts.map +1 -0
- package/lib/types/host/cache-warmup/result-tool.d.ts +87 -0
- package/lib/types/host/cache-warmup/result-tool.d.ts.map +1 -0
- package/lib/types/host/cache-warmup/settings.d.ts +73 -0
- package/lib/types/host/cache-warmup/settings.d.ts.map +1 -0
- package/lib/types/host/cache-warmup/store.d.ts +108 -0
- package/lib/types/host/cache-warmup/store.d.ts.map +1 -0
- package/lib/types/host/cache-warmup/usage.d.ts +86 -0
- package/lib/types/host/cache-warmup/usage.d.ts.map +1 -0
- package/lib/types/host/kimi-code/adapter.d.ts.map +1 -1
- package/lib/types/host/proxy-manager.d.ts +6 -0
- package/lib/types/host/proxy-manager.d.ts.map +1 -1
- package/lib/types/index.d.ts +32 -25
- package/lib/types/index.d.ts.map +1 -1
- package/lib/types/shared/model-catalog.d.ts +12 -1
- package/lib/types/shared/model-catalog.d.ts.map +1 -1
- package/locale/progress-updates/en.json +6 -0
- package/locale/progress-updates/zh.json +6 -0
- package/package.json +13 -3
- package/progress-updates.svg +9 -0
|
@@ -39,6 +39,22 @@ import type { ProgressSnapshotSource } from './updates-panel.tsx';
|
|
|
39
39
|
* (同 dsh-usage / dsh-git-graph 的处理)。
|
|
40
40
|
*/
|
|
41
41
|
export declare const PROGRESS_UPDATES_PATH = "api/dsh-progress-updates/updates";
|
|
42
|
+
/**
|
|
43
|
+
* 宿主那一行今天装没装。
|
|
44
|
+
*
|
|
45
|
+
* 这个包的浏览器半边按**包**加载:即使「进展更新」那一行被关掉,本 bundle 照样
|
|
46
|
+
* 会跑,面板与设置分区就会变成两个永远空的壳。所以挂载前问一次宿主的只读路由。
|
|
47
|
+
*
|
|
48
|
+
* **只在路由自己说不存在时判「没装」**:本路由的 403(非 loopback)与 200 都说明
|
|
49
|
+
* 它在;而网关对一个不认识的路径回的那句 `not found`(纯文本或 HTML)也常常是
|
|
50
|
+
* 404,把「任何 404」当成没装会让装着它的实例把 UI 自己撤掉——第一版就是这么写的,
|
|
51
|
+
* 实测踩到了。
|
|
52
|
+
*
|
|
53
|
+
* 探测失败(网络错误、超时、无法判断)一律按「装着」处理:宁可多一格外壳,也不能
|
|
54
|
+
* 因为一次抖动把装着的功能判成没装。
|
|
55
|
+
* @returns 宿主半边是否在线。
|
|
56
|
+
*/
|
|
57
|
+
export declare function isProgressUpdatesHostPresent(): Promise<boolean>;
|
|
42
58
|
/** 轮询间隔(毫秒)。进展更新是人读的一行行文字,2 秒足够跟手,也不至于压宿主。 */
|
|
43
59
|
export declare const PROGRESS_POLL_MS = 2000;
|
|
44
60
|
/** 单次请求的硬上限;宿主卡住时不能把请求越堆越多。 */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"host-source.d.ts","sourceRoot":"","sources":["../../../../src/client/progress-updates/host-source.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6BG;AAEH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAA;AACpD,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,qBAAqB,CAAA;AAEjE;;;;;;;GAOG;AACH,eAAO,MAAM,qBAAqB,qCAAqC,CAAA;AAEvE,8CAA8C;AAC9C,eAAO,MAAM,gBAAgB,OAAQ,CAAA;AAErC,+BAA+B;AAC/B,eAAO,MAAM,yBAAyB,OAAQ,CAAA;AAE9C,yCAAyC;AACzC,MAAM,WAAW,uBAAuB;IACtC,sBAAsB;IACtB,OAAO,EAAE,cAAc,EAAE,CAAA;CAC1B;AAED,gCAAgC;AAChC,MAAM,WAAW,cAAc;IAC7B,qBAAqB;IACrB,WAAW,EAAE,CAAC,OAAO,EAAE,MAAM,IAAI,EAAE,EAAE,EAAE,MAAM,KAAK,OAAO,CAAA;IACzD,eAAe;IACf,aAAa,EAAE,CAAC,MAAM,EAAE,OAAO,KAAK,IAAI,CAAA;IACxC,sBAAsB;IACtB,UAAU,EAAE,CAAC,OAAO,EAAE,MAAM,IAAI,EAAE,EAAE,EAAE,MAAM,KAAK,OAAO,CAAA;IACxD,gBAAgB;IAChB,YAAY,EAAE,CAAC,MAAM,EAAE,OAAO,KAAK,IAAI,CAAA;CACxC;AAUD,8CAA8C;AAC9C,MAAM,WAAW,iBAAiB;IAChC;;;;;OAKG;IACH,KAAK,CAAC,EAAE,OAAO,UAAU,CAAC,KAAK,CAAA;IAC/B,4CAA4C;IAC5C,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,uDAAuD;IACvD,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,mDAAmD;IACnD,SAAS,CAAC,EAAE,MAAM,OAAO,CAAA;IACzB,uCAAuC;IACvC,MAAM,CAAC,EAAE,cAAc,CAAA;IACvB,6DAA6D;IAC7D,MAAM,CAAC,EAAE,CAAC,IAAI,EAAE,OAAO,KAAK,SAAS,cAAc,EAAE,CAAA;IACrD,8BAA8B;IAC9B,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,OAAO,KAAK,IAAI,CAAA;CACnC;AAED,qCAAqC;AACrC,MAAM,WAAW,kBAAmB,SAAQ,sBAAsB;IAChE;;;;;OAKG;IACH,IAAI,IAAI,IAAI,CAAA;CACb;AAED;;;;;;;GAOG;AACH,wBAAgB,iBAAiB,IAAI,OAAO,CAO3C;AAoBD;;;;;;;;;GASG;AACH,wBAAgB,kBAAkB,CAAC,SAAS,CAAC,EAAE,MAAM,GAAG,MAAM,CAG7D;AAsBD;;;;;;;;;;;;GAYG;AACH,wBAAgB,wBAAwB,CACtC,SAAS,CAAC,EAAE,MAAM,EAClB,IAAI,GAAE,iBAAsB,GAC3B,kBAAkB,CAoJpB"}
|
|
1
|
+
{"version":3,"file":"host-source.d.ts","sourceRoot":"","sources":["../../../../src/client/progress-updates/host-source.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6BG;AAEH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAA;AACpD,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,qBAAqB,CAAA;AAEjE;;;;;;;GAOG;AACH,eAAO,MAAM,qBAAqB,qCAAqC,CAAA;AAEvE;;;;;;;;;;;;;;GAcG;AACH,wBAAsB,4BAA4B,IAAI,OAAO,CAAC,OAAO,CAAC,CA0BrE;AAED,8CAA8C;AAC9C,eAAO,MAAM,gBAAgB,OAAQ,CAAA;AAErC,+BAA+B;AAC/B,eAAO,MAAM,yBAAyB,OAAQ,CAAA;AAE9C,yCAAyC;AACzC,MAAM,WAAW,uBAAuB;IACtC,sBAAsB;IACtB,OAAO,EAAE,cAAc,EAAE,CAAA;CAC1B;AAED,gCAAgC;AAChC,MAAM,WAAW,cAAc;IAC7B,qBAAqB;IACrB,WAAW,EAAE,CAAC,OAAO,EAAE,MAAM,IAAI,EAAE,EAAE,EAAE,MAAM,KAAK,OAAO,CAAA;IACzD,eAAe;IACf,aAAa,EAAE,CAAC,MAAM,EAAE,OAAO,KAAK,IAAI,CAAA;IACxC,sBAAsB;IACtB,UAAU,EAAE,CAAC,OAAO,EAAE,MAAM,IAAI,EAAE,EAAE,EAAE,MAAM,KAAK,OAAO,CAAA;IACxD,gBAAgB;IAChB,YAAY,EAAE,CAAC,MAAM,EAAE,OAAO,KAAK,IAAI,CAAA;CACxC;AAUD,8CAA8C;AAC9C,MAAM,WAAW,iBAAiB;IAChC;;;;;OAKG;IACH,KAAK,CAAC,EAAE,OAAO,UAAU,CAAC,KAAK,CAAA;IAC/B,4CAA4C;IAC5C,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,uDAAuD;IACvD,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,mDAAmD;IACnD,SAAS,CAAC,EAAE,MAAM,OAAO,CAAA;IACzB,uCAAuC;IACvC,MAAM,CAAC,EAAE,cAAc,CAAA;IACvB,6DAA6D;IAC7D,MAAM,CAAC,EAAE,CAAC,IAAI,EAAE,OAAO,KAAK,SAAS,cAAc,EAAE,CAAA;IACrD,8BAA8B;IAC9B,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,OAAO,KAAK,IAAI,CAAA;CACnC;AAED,qCAAqC;AACrC,MAAM,WAAW,kBAAmB,SAAQ,sBAAsB;IAChE;;;;;OAKG;IACH,IAAI,IAAI,IAAI,CAAA;CACb;AAED;;;;;;;GAOG;AACH,wBAAgB,iBAAiB,IAAI,OAAO,CAO3C;AAoBD;;;;;;;;;GASG;AACH,wBAAgB,kBAAkB,CAAC,SAAS,CAAC,EAAE,MAAM,GAAG,MAAM,CAG7D;AAsBD;;;;;;;;;;;;GAYG;AACH,wBAAgB,wBAAwB,CACtC,SAAS,CAAC,EAAE,MAAM,EAClB,IAAI,GAAE,iBAAsB,GAC3B,kBAAkB,CAoJpB"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/client/progress-updates/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAkCG;AAEH,OAAO,KAAK,EAAE,OAAO,IAAI,aAAa,EAAE,MAAM,qBAAqB,CAAA;AAMnE,OAAO,EAA+C,KAAK,sBAAsB,EAAE,MAAM,qBAAqB,CAAA;AAG9G,OAAO,EAA8B,KAAK,oBAAoB,EAAE,MAAM,uBAAuB,CAAA;AAG7F;;;GAGG;AACH,eAAO,MAAM,YAAY,6DAA6D,CAAA;AAEtF;;;GAGG;AACH,eAAO,MAAM,cAAc,qBAAqB,CAAA;AAEhD;;;;;GAKG;AACH,eAAO,MAAM,mBAAmB,qBAAqB,CAAA;AAErD;;;;;;GAMG;AACH,eAAO,MAAM,sBAAsB,MAAM,CAAA;AAEzC,kBAAkB;AAClB,MAAM,WAAW,4BAA4B;IAC3C;;;OAGG;IACH,MAAM,CAAC,EAAE,sBAAsB,CAAA;IAC/B;;;OAGG;IACH,SAAS,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAA;IAClC;;;OAGG;IACH,QAAQ,CAAC,EAAE,oBAAoB,CAAA;CAChC;AA4CD;;;;;;;GAOG;AACH,wBAAgB,4BAA4B,CAAC,GAAG,EAAE,aAAa,EAAE,OAAO,GAAE,4BAAiC,GAAG,IAAI,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/client/progress-updates/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAkCG;AAEH,OAAO,KAAK,EAAE,OAAO,IAAI,aAAa,EAAE,MAAM,qBAAqB,CAAA;AAMnE,OAAO,EAA+C,KAAK,sBAAsB,EAAE,MAAM,qBAAqB,CAAA;AAG9G,OAAO,EAA8B,KAAK,oBAAoB,EAAE,MAAM,uBAAuB,CAAA;AAG7F;;;GAGG;AACH,eAAO,MAAM,YAAY,6DAA6D,CAAA;AAEtF;;;GAGG;AACH,eAAO,MAAM,cAAc,qBAAqB,CAAA;AAEhD;;;;;GAKG;AACH,eAAO,MAAM,mBAAmB,qBAAqB,CAAA;AAErD;;;;;;GAMG;AACH,eAAO,MAAM,sBAAsB,MAAM,CAAA;AAEzC,kBAAkB;AAClB,MAAM,WAAW,4BAA4B;IAC3C;;;OAGG;IACH,MAAM,CAAC,EAAE,sBAAsB,CAAA;IAC/B;;;OAGG;IACH,SAAS,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAA;IAClC;;;OAGG;IACH,QAAQ,CAAC,EAAE,oBAAoB,CAAA;CAChC;AA4CD;;;;;;;GAOG;AACH,wBAAgB,4BAA4B,CAAC,GAAG,EAAE,aAAa,EAAE,OAAO,GAAE,4BAAiC,GAAG,IAAI,CAgQjH"}
|
|
@@ -61,6 +61,11 @@ export type ProgressUpdatesField = 'progressUpdates' | 'progressUpdatesNudgeThre
|
|
|
61
61
|
* 第一项来自 `cordis.patch.yml` 的行 id(独立安装的唯一形态);后两项是聚合安装
|
|
62
62
|
* 可能套的前缀。镜像答上来之后不再用这张表的顺序,改用"值里带 `progressUpdates`
|
|
63
63
|
* 的那一条"。
|
|
64
|
+
*
|
|
65
|
+
* 这三个字段挂在**核心那一行**(`src/index.ts` 的 Config)而不是「进展更新」那一行:
|
|
66
|
+
* 用户/profile 早就在核心行的 config 里写过 `progressUpdates`,而 loader 的 profile
|
|
67
|
+
* 层是按 id 替换整行 config 的——字段若搬去新行,profile 一写就等于把那行的开关
|
|
68
|
+
* 抹成默认值,于是「设置里显示打开」和「实际是关的」同时成立。
|
|
64
69
|
*/
|
|
65
70
|
export declare const PROGRESS_SETTINGS_ENTRY_IDS: readonly string[];
|
|
66
71
|
/** 卡片真正用到的那几个成员,外加一个释放函数。 */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"settings-binding.d.ts","sourceRoot":"","sources":["../../../../src/client/progress-updates/settings-binding.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AAEH,MAAM,WAAW,kBAAkB,CAAC,CAAC;IACnC,MAAM,EAAE,SAAS,GAAG,OAAO,GAAG,aAAa,CAAA;IAC3C,KAAK,EAAE,CAAC,GAAG,SAAS,CAAA;IACpB,IAAI,EAAE,OAAO,CAAA;IACb,IAAI,EAAE,OAAO,CAAA;IACb,QAAQ,EAAE,MAAM,GAAG,SAAS,CAAA;IAC5B,QAAQ,EAAE,OAAO,CAAA;CAClB;AAQD;;;;;GAKG;AACH,MAAM,WAAW,6BAA6B;IAC5C,WAAW;IACX,eAAe,CAAC,EAAE,OAAO,CAAA;IACzB,0BAA0B;IAC1B,6BAA6B,CAAC,EAAE,MAAM,CAAA;IACtC;;;;;;OAMG;IACH,uBAAuB,CAAC,EAAE,MAAM,GAAG,IAAI,GAAG,IAAI,CAAA;CAC/C;AAED,4BAA4B;AAC5B,MAAM,MAAM,uBAAuB,GAAG,WAAW,CAAC,6BAA6B,CAAC,yBAAyB,CAAC,CAAC,CAAA;AAE3G,mCAAmC;AACnC,MAAM,MAAM,oBAAoB,GAC5B,iBAAiB,GACjB,+BAA+B,GAC/B,yBAAyB,CAAA;AAE7B
|
|
1
|
+
{"version":3,"file":"settings-binding.d.ts","sourceRoot":"","sources":["../../../../src/client/progress-updates/settings-binding.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AAEH,MAAM,WAAW,kBAAkB,CAAC,CAAC;IACnC,MAAM,EAAE,SAAS,GAAG,OAAO,GAAG,aAAa,CAAA;IAC3C,KAAK,EAAE,CAAC,GAAG,SAAS,CAAA;IACpB,IAAI,EAAE,OAAO,CAAA;IACb,IAAI,EAAE,OAAO,CAAA;IACb,QAAQ,EAAE,MAAM,GAAG,SAAS,CAAA;IAC5B,QAAQ,EAAE,OAAO,CAAA;CAClB;AAQD;;;;;GAKG;AACH,MAAM,WAAW,6BAA6B;IAC5C,WAAW;IACX,eAAe,CAAC,EAAE,OAAO,CAAA;IACzB,0BAA0B;IAC1B,6BAA6B,CAAC,EAAE,MAAM,CAAA;IACtC;;;;;;OAMG;IACH,uBAAuB,CAAC,EAAE,MAAM,GAAG,IAAI,GAAG,IAAI,CAAA;CAC/C;AAED,4BAA4B;AAC5B,MAAM,MAAM,uBAAuB,GAAG,WAAW,CAAC,6BAA6B,CAAC,yBAAyB,CAAC,CAAC,CAAA;AAE3G,mCAAmC;AACnC,MAAM,MAAM,oBAAoB,GAC5B,iBAAiB,GACjB,+BAA+B,GAC/B,yBAAyB,CAAA;AAE7B;;;;;;;;;;;GAWG;AACH,eAAO,MAAM,2BAA2B,EAAE,SAAS,MAAM,EAIxD,CAAA;AAED,6BAA6B;AAC7B,MAAM,WAAW,oBAAoB;IACnC,8CAA8C;IAC9C,WAAW,IAAI,kBAAkB,CAAC,6BAA6B,CAAC,CAAA;IAChE,cAAc;IACd,SAAS,CAAC,QAAQ,EAAE,MAAM,IAAI,GAAG,MAAM,IAAI,CAAA;IAC3C,uBAAuB;IACvB,GAAG,CAAC,KAAK,EAAE,oBAAoB,EAAE,KAAK,EAAE,OAAO,GAAG,MAAM,GAAG,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAAA;IACpF,8BAA8B;IAC9B,OAAO,IAAI,IAAI,CAAA;CAChB;AAoED;;;;;;;GAOG;AACH,wBAAgB,0BAA0B,CAAC,GAAG,EAAE;IAAE,GAAG,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAA;CAAE,GAAG,oBAAoB,GAAG,SAAS,CA4FhH"}
|
package/lib/types/compat.d.ts
CHANGED
|
@@ -71,7 +71,7 @@ export declare const ROUTE_PREFIX: "/api/dsh-chatgpt-subscription";
|
|
|
71
71
|
* `test/responses-client.test.ts` asserts the two agree, so a release that
|
|
72
72
|
* forgets this constant fails the suite instead of shipping quietly.
|
|
73
73
|
*/
|
|
74
|
-
export declare const PLUGIN_VERSION: "0.
|
|
74
|
+
export declare const PLUGIN_VERSION: "0.45.0";
|
|
75
75
|
export declare const CODEX_CHATGPT_PROVIDER_ID: "codex-chatgpt";
|
|
76
76
|
export { MINIMAX_CODE_PROVIDER_ID, MINIMAX_CODE_ROUTE_PREFIX } from './shared/minimax-code-contracts.ts';
|
|
77
77
|
export declare const CODEX_API_BASE: "https://chatgpt.com/backend-api/codex";
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* 「进展更新」的宿主入口 —— 本包的**第二个组件**(loader 行)。
|
|
3
|
+
*
|
|
4
|
+
* 这个包原先只有一行:`src/index.ts` 一个 `apply` 同时挂着十二条订阅线路、共享
|
|
5
|
+
* 内核和若干与线路无关的子系统,管理页因此只显示「包含的组件 共1个」。进展更新
|
|
6
|
+
* 是其中最独立的一块:它是一个**不结束回合**的 `progress_update` 工具、一段系统
|
|
7
|
+
* 提示词引导、一个只读取数的 HTTP 路由,跟任何线路、任何号池都没有关系。把它单独
|
|
8
|
+
* 成一行,用户可以在插件管理页里只关它,而宿主这边真的什么都不挂。
|
|
9
|
+
*
|
|
10
|
+
* ## 设置字段留在核心行
|
|
11
|
+
*
|
|
12
|
+
* 三个 `volatile` 字段仍声明在核心入口(`src/index.ts` 的 `Config`),由核心通过
|
|
13
|
+
* 本模块导出的 {@link attachProgressSettings} 递交进来。理由不是偷懒:profile 的
|
|
14
|
+
* patch 层是按 id 定位、**替换整行 config** 的,而用户的 profile 早就在核心行的
|
|
15
|
+
* config 里写了 `progressUpdates: true`——字段若搬来这一行,那条 patch 就会把这行
|
|
16
|
+
* 的配置整体换成空对象,schema 默认值填回 false,于是「设置里显示打开、实际是关的」
|
|
17
|
+
* 同时成立。设置卡片也仍然按「哪个条目有 `progressUpdates` 这个键」定位写入目标,
|
|
18
|
+
* 所以字段留在核心行,卡片与实现才对得上。
|
|
19
|
+
*
|
|
20
|
+
* @module @eddyskywalker/dsh-chatgpt-subscription/progress-updates
|
|
21
|
+
*/
|
|
22
|
+
import type { Context } from '@deepseek-ai/cordis';
|
|
23
|
+
import { type ProgressUpdatesSettings } from './host/progress-updates/index.ts';
|
|
24
|
+
/** Loader 行名;patch 里的行 id 另由 bundle 决定。 */
|
|
25
|
+
export declare const name = "dsh-chatgpt-subscription-progress-updates";
|
|
26
|
+
/**
|
|
27
|
+
* 这一行不为任何服务等待。
|
|
28
|
+
*
|
|
29
|
+
* `installProgressUpdates` 逐个用 `ctx.get()` 探可选服务(tools、systemPrompt、
|
|
30
|
+
* sessions、sessionProjections、webServer),缺哪个就退化成更弱的实现;把它们的
|
|
31
|
+
* 名字写进 `inject` 反而会让没装 agent-loop 的宿主整行挂不上——那是这一行原本的
|
|
32
|
+
* 独立性所要避免的事。
|
|
33
|
+
*/
|
|
34
|
+
export declare const inject: string[];
|
|
35
|
+
/**
|
|
36
|
+
* 由核心入口在挂载时调用,把它的 `volatile` 设置读面交给这一行。
|
|
37
|
+
*
|
|
38
|
+
* 幂等:重复递交以最后一次为准(核心重挂时设置引用会换一份新的)。
|
|
39
|
+
* @param read - 每次调用都重读活引用,返回当前的开关、阈值与语言。
|
|
40
|
+
*/
|
|
41
|
+
export declare function attachProgressSettings(read: () => ProgressUpdatesSettings): void;
|
|
42
|
+
export declare function apply(ctx: Context): Promise<void>;
|
|
43
|
+
//# sourceMappingURL=entry-progress-updates.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"entry-progress-updates.d.ts","sourceRoot":"","sources":["../../src/entry-progress-updates.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAA;AAClD,OAAO,EAGL,KAAK,uBAAuB,EAC7B,MAAM,kCAAkC,CAAA;AAEzC,2CAA2C;AAC3C,eAAO,MAAM,IAAI,8CAA8C,CAAA;AAE/D;;;;;;;GAOG;AACH,eAAO,MAAM,MAAM,EAAE,MAAM,EAAO,CAAA;AAWlC;;;;;GAKG;AACH,wBAAgB,sBAAsB,CAAC,IAAI,EAAE,MAAM,uBAAuB,GAAG,IAAI,CAKhF;AAgBD,wBAAsB,KAAK,CAAC,GAAG,EAAE,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC,CAQvD"}
|
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* 预热预算:预热期保守、连续命中后放大、漂移立刻收回。
|
|
3
|
+
*
|
|
4
|
+
* 控制器是**纯函数**:不发起请求、不改消息、不改登记表。它只回答一个问题 ——
|
|
5
|
+
* 「这一次预览最多能占多少字符」。把决策与执行分开,才能保证预算收紧或放开
|
|
6
|
+
* 都不会悄悄改写已经进入历史的文本(历史里的 preview 是常量)。
|
|
7
|
+
*
|
|
8
|
+
* @module dsh-chatgpt-subscription/host/cache-warmup/budget
|
|
9
|
+
*/
|
|
10
|
+
import { CACHE_WARMUP_DEFAULTS, type PreviewBudget } from './contracts.ts';
|
|
11
|
+
/**
|
|
12
|
+
* 当前会话的预览预算。
|
|
13
|
+
*
|
|
14
|
+
* 规则(约束 4):预热期 `maxChars = 1200`(约 600-750 tokens);连续
|
|
15
|
+
* `consecutiveHitsRequired`(2) 次命中率 ≥ 0.97 且期间没有 drift,才进入稳态
|
|
16
|
+
* `maxChars = 8000`。任何一次 drift 都清零连续计数,于是下一条请求立刻回落到预热预算。
|
|
17
|
+
*
|
|
18
|
+
* **不抛出**:没有会话、没有报告、登记表异常,一律返回预热期的保守预算。
|
|
19
|
+
* @param sessionId - 会话 id;不传则按最保守的预热预算处理。
|
|
20
|
+
* @returns 本次投影可用的预算。
|
|
21
|
+
*/
|
|
22
|
+
export declare function cacheWarmupBudget(sessionId?: string): PreviewBudget;
|
|
23
|
+
/** 用量汇总。 */
|
|
24
|
+
export interface CacheWarmupUsageTotals {
|
|
25
|
+
/** 输入 token 合计。 */
|
|
26
|
+
inputTokens: number;
|
|
27
|
+
/** 命中缓存 token 合计。 */
|
|
28
|
+
cacheReadTokens: number;
|
|
29
|
+
/** 输出 token 合计。 */
|
|
30
|
+
outputTokens: number;
|
|
31
|
+
/** 总 token 合计。 */
|
|
32
|
+
totalTokens: number;
|
|
33
|
+
}
|
|
34
|
+
/** `cacheWarmupSnapshot()` 的返回形状:一份自足的只读快照。 */
|
|
35
|
+
export interface CacheWarmupSnapshot {
|
|
36
|
+
/** 会话 id;全局快照时不存在。 */
|
|
37
|
+
sessionId?: string;
|
|
38
|
+
/** 该会话当前的预算。 */
|
|
39
|
+
budget: PreviewBudget;
|
|
40
|
+
/** 子包默认值,方便设置页展示「当前处于预热期/稳态」的判据。 */
|
|
41
|
+
defaults: typeof CACHE_WARMUP_DEFAULTS;
|
|
42
|
+
/** 该会话的用量汇总。 */
|
|
43
|
+
usage: {
|
|
44
|
+
/** 保留的报告条数。 */
|
|
45
|
+
reports: number;
|
|
46
|
+
/** 最近一条报告时刻。 */
|
|
47
|
+
lastAt?: number;
|
|
48
|
+
/** 最近一次命中率。 */
|
|
49
|
+
hitRatio: number;
|
|
50
|
+
/** token 汇总。 */
|
|
51
|
+
totals: CacheWarmupUsageTotals;
|
|
52
|
+
/** 期间观测到的漂移原因(去重,供诊断)。 */
|
|
53
|
+
driftCauses: string[];
|
|
54
|
+
};
|
|
55
|
+
/** 登记表里的会话总数。 */
|
|
56
|
+
sessions: number;
|
|
57
|
+
}
|
|
58
|
+
/**
|
|
59
|
+
* 一份可读快照。**不抛出**,且完全无副作用(只读登记表)。
|
|
60
|
+
* @param sessionId - 会话 id;不传则给全局汇总。
|
|
61
|
+
* @returns 快照。
|
|
62
|
+
*/
|
|
63
|
+
export declare function cacheWarmupSnapshot(sessionId?: string): CacheWarmupSnapshot;
|
|
64
|
+
//# sourceMappingURL=budget.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"budget.d.ts","sourceRoot":"","sources":["../../../../src/host/cache-warmup/budget.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,EAAE,qBAAqB,EAAE,KAAK,aAAa,EAAE,MAAM,gBAAgB,CAAA;AAgB1E;;;;;;;;;;GAUG;AACH,wBAAgB,iBAAiB,CAAC,SAAS,CAAC,EAAE,MAAM,GAAG,aAAa,CAkBnE;AAED,YAAY;AACZ,MAAM,WAAW,sBAAsB;IACrC,mBAAmB;IACnB,WAAW,EAAE,MAAM,CAAA;IACnB,qBAAqB;IACrB,eAAe,EAAE,MAAM,CAAA;IACvB,mBAAmB;IACnB,YAAY,EAAE,MAAM,CAAA;IACpB,kBAAkB;IAClB,WAAW,EAAE,MAAM,CAAA;CACpB;AAED,+CAA+C;AAC/C,MAAM,WAAW,mBAAmB;IAClC,sBAAsB;IACtB,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,gBAAgB;IAChB,MAAM,EAAE,aAAa,CAAA;IACrB,oCAAoC;IACpC,QAAQ,EAAE,OAAO,qBAAqB,CAAA;IACtC,gBAAgB;IAChB,KAAK,EAAE;QACL,eAAe;QACf,OAAO,EAAE,MAAM,CAAA;QACf,gBAAgB;QAChB,MAAM,CAAC,EAAE,MAAM,CAAA;QACf,eAAe;QACf,QAAQ,EAAE,MAAM,CAAA;QAChB,gBAAgB;QAChB,MAAM,EAAE,sBAAsB,CAAA;QAC9B,0BAA0B;QAC1B,WAAW,EAAE,MAAM,EAAE,CAAA;KACtB,CAAA;IACD,iBAAiB;IACjB,QAAQ,EAAE,MAAM,CAAA;CACjB;AAED;;;;GAIG;AACH,wBAAgB,mBAAmB,CAAC,SAAS,CAAC,EAAE,MAAM,GAAG,mBAAmB,CA6C3E"}
|
|
@@ -0,0 +1,267 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* 缓存预热子包(cache-warmup)的共享契约:类型、默认值与错误码。
|
|
3
|
+
*
|
|
4
|
+
* 这一层刻意不 import 任何 `node:` 内置模块:投影与预算的一半逻辑是纯字符串/数字运算,
|
|
5
|
+
* 保持零依赖才能让消费者(宿主适配层、设置路由、测试)只为了一个类型就拖进文件系统实现。
|
|
6
|
+
* 唯一的例外是 `parseStructuredResultRows` —— 它是对**已存储原文**的解析器,
|
|
7
|
+
* 存储分页与投影预览必须共用同一份判定,否则「能分页但预览判断不同」会立刻变成幻觉。
|
|
8
|
+
*
|
|
9
|
+
* @module dsh-chatgpt-subscription/host/cache-warmup/contracts
|
|
10
|
+
*/
|
|
11
|
+
/**
|
|
12
|
+
* 子包默认值。
|
|
13
|
+
*
|
|
14
|
+
* 预热期的字符上限是**按 token 反推的保守字符预算**:中文/代码混排大约每 token 1.6-2.0
|
|
15
|
+
* 字符,1200 字符落在 512-1024 token 区间的中段,宁可少给也不要在预热期用一个
|
|
16
|
+
* 还没被验证过的更大预算去撞缓存键。命中率与连续次数见约束 4。
|
|
17
|
+
*/
|
|
18
|
+
export declare const CACHE_WARMUP_DEFAULTS: {
|
|
19
|
+
/** 预热期单次预览的字符预算。约 600-750 tokens。 */
|
|
20
|
+
readonly warmupMaxChars: 1200;
|
|
21
|
+
/** 稳态(连续两次高命中率且无 drift 之后)的字符预算。 */
|
|
22
|
+
readonly steadyStateMaxChars: 8000;
|
|
23
|
+
/** 视为命中的最低命中率。 */
|
|
24
|
+
readonly hitRatioThreshold: 0.97;
|
|
25
|
+
/** 退出预热期需要连续命中的报告条数。 */
|
|
26
|
+
readonly consecutiveHitsRequired: 2;
|
|
27
|
+
/** 单结果原文上限(字节)。 */
|
|
28
|
+
readonly maxResultBytes: number;
|
|
29
|
+
/** 每 session 原文总量上限(字节)。 */
|
|
30
|
+
readonly maxSessionBytes: number;
|
|
31
|
+
/** 分页 limit 默认值(行)。 */
|
|
32
|
+
readonly pageLimitDefault: 64;
|
|
33
|
+
/** 分页 limit 上限(行)。 */
|
|
34
|
+
readonly pageLimitMax: 512;
|
|
35
|
+
/** 分页 maxBytes 默认值(字节)。 */
|
|
36
|
+
readonly pageMaxBytesDefault: number;
|
|
37
|
+
/** 分页 maxBytes 上限(字节)。 */
|
|
38
|
+
readonly pageMaxBytesMax: number;
|
|
39
|
+
/** usage registry 的 session 数上限。 */
|
|
40
|
+
readonly maxUsageSessions: 256;
|
|
41
|
+
/** 每 session 保留的用量报告条数上限。 */
|
|
42
|
+
readonly maxUsageReportsPerSession: 32;
|
|
43
|
+
};
|
|
44
|
+
/** 预览预算,也是 `cacheWarmupBudget()` 的返回形状。 */
|
|
45
|
+
export interface PreviewBudget {
|
|
46
|
+
/** 一次预览最多占用的字符数。 */
|
|
47
|
+
maxChars: number;
|
|
48
|
+
/** 是否仍处于预热期。 */
|
|
49
|
+
warmup: boolean;
|
|
50
|
+
/** 当前连续高命中率报告条数(drift 会把它清零)。 */
|
|
51
|
+
consecutiveHits: number;
|
|
52
|
+
/** 最近一次报告的缓存命中率(0-1);没有报告时为 0。 */
|
|
53
|
+
hitRatio: number;
|
|
54
|
+
}
|
|
55
|
+
/** 一次缓存用量报告,形状与宿主 usage 统计一一对应。 */
|
|
56
|
+
export interface CacheWarmupUsage {
|
|
57
|
+
/** 会话 id。 */
|
|
58
|
+
sessionId: string;
|
|
59
|
+
/** 本次请求的输入 token 总数。 */
|
|
60
|
+
inputTokens: number;
|
|
61
|
+
/** 其中命中缓存的 token 数。 */
|
|
62
|
+
cacheReadTokens: number;
|
|
63
|
+
/** 本次请求的输出 token 数。 */
|
|
64
|
+
outputTokens: number;
|
|
65
|
+
/** 本次请求的总 token 数。 */
|
|
66
|
+
totalTokens: number;
|
|
67
|
+
/** 报告时刻(Unix 毫秒)。 */
|
|
68
|
+
at: number;
|
|
69
|
+
/** 非空表示这次观测到缓存漂移(前缀被改、工具集变化等),连续命中计数随之清零。 */
|
|
70
|
+
driftCause?: string;
|
|
71
|
+
}
|
|
72
|
+
/** 结果内容的「块」形状,与宿主工具结果的文本块对齐。 */
|
|
73
|
+
export interface ToolResultBlock {
|
|
74
|
+
/** 块类型;只有 `text` 会被投影考虑。 */
|
|
75
|
+
type: string;
|
|
76
|
+
/** 文本块正文。 */
|
|
77
|
+
text?: string;
|
|
78
|
+
/** 其他字段原样保留,永不改写。 */
|
|
79
|
+
[key: string]: unknown;
|
|
80
|
+
}
|
|
81
|
+
/** 工具结果内容:纯文本,或块数组(非文本块必须原样保留)。 */
|
|
82
|
+
export type ToolResultContent = string | readonly ToolResultBlock[];
|
|
83
|
+
/** 投影策略。`verbatim-*` 一律 `changed: false`。 */
|
|
84
|
+
export type ProjectionStrategy = 'verbatim-small' | 'verbatim-non-text' | 'verbatim-unparsed' | 'verbatim-source-code' | 'verbatim-contract' | 'verbatim-subagent-report' | 'verbatim-budget' | 'store-unavailable' | 'test-failure' | 'shell-output' | 'grep-results' | 'glob-results' | 'structured-rows';
|
|
85
|
+
/** 投影度量。契约要求前四个字段。 */
|
|
86
|
+
export interface ProjectionMetrics {
|
|
87
|
+
/** 输入字符数(原文长度)。 */
|
|
88
|
+
inputChars: number;
|
|
89
|
+
/** 输出字符数(预览长度)。 */
|
|
90
|
+
outputChars: number;
|
|
91
|
+
/** 被预览省略掉的字符数。 */
|
|
92
|
+
omittedChars: number;
|
|
93
|
+
/** 本次采用的策略。 */
|
|
94
|
+
strategy: ProjectionStrategy;
|
|
95
|
+
}
|
|
96
|
+
/** `projectToolResult` 的返回值。 */
|
|
97
|
+
export interface ProjectionResult {
|
|
98
|
+
/** 新内容:未改变时与入参逐字相同,改变时是预览文本(或替换了单个文本块的块数组)。 */
|
|
99
|
+
content: ToolResultContent;
|
|
100
|
+
/** 是否真的改写了内容。只有可证明结构化预览时才为 true。 */
|
|
101
|
+
changed: boolean;
|
|
102
|
+
/** 度量。 */
|
|
103
|
+
metrics: ProjectionMetrics;
|
|
104
|
+
/** 原文引用(只有在 `changed: true` 时存在)。 */
|
|
105
|
+
refId?: string;
|
|
106
|
+
/** 预览正文(只有在 `changed: true` 时存在)。 */
|
|
107
|
+
preview?: string;
|
|
108
|
+
/** 工具名(原样回显,便于统计)。 */
|
|
109
|
+
toolName: string;
|
|
110
|
+
/** 会话 id。 */
|
|
111
|
+
sessionId: string;
|
|
112
|
+
/** provider id(有就回显)。 */
|
|
113
|
+
provider?: string;
|
|
114
|
+
/** 投影时刻(Unix 毫秒)。 */
|
|
115
|
+
at: number;
|
|
116
|
+
}
|
|
117
|
+
/** `projectToolResult` 的入参。 */
|
|
118
|
+
export interface ProjectToolResultInput {
|
|
119
|
+
/** 工具名;用于识别测试/shell/grep/glob 结果。 */
|
|
120
|
+
toolName: string;
|
|
121
|
+
/** provider id,可选,只回显。 */
|
|
122
|
+
provider?: string;
|
|
123
|
+
/** 会话 id;refId 与分页的归属校验都基于它。 */
|
|
124
|
+
sessionId: string;
|
|
125
|
+
/** 工具结果内容。 */
|
|
126
|
+
content: ToolResultContent;
|
|
127
|
+
/** 是否为失败结果;失败结果的失败集必须完整保留。 */
|
|
128
|
+
isError?: boolean;
|
|
129
|
+
/** 预览预算;不传则按 `cacheWarmupBudget(sessionId)` 取当前预算。 */
|
|
130
|
+
budget?: PreviewBudget;
|
|
131
|
+
/** 原文存储;不传则保持原样(没有 ref 的预览等于丢数据)。 */
|
|
132
|
+
store?: ResultReferenceStore;
|
|
133
|
+
/** 投影时刻(Unix 毫秒),默认 `Date.now()`。 */
|
|
134
|
+
at?: number;
|
|
135
|
+
}
|
|
136
|
+
/** 一条已存储的结果引用。 */
|
|
137
|
+
export interface StoredResultReference {
|
|
138
|
+
/** `ref://<session>/<sha256>`。 */
|
|
139
|
+
refId: string;
|
|
140
|
+
/** 所属会话。 */
|
|
141
|
+
sessionId: string;
|
|
142
|
+
/** 原文的 sha256(小写十六进制)。 */
|
|
143
|
+
digest: string;
|
|
144
|
+
/** 原文字节数。 */
|
|
145
|
+
bytes: number;
|
|
146
|
+
/** 原文字符数。 */
|
|
147
|
+
chars: number;
|
|
148
|
+
/** 入库时刻(Unix 毫秒)。 */
|
|
149
|
+
at: number;
|
|
150
|
+
/** 是否本次新写入(false 表示命中了已存在的同一份内容)。 */
|
|
151
|
+
created: boolean;
|
|
152
|
+
}
|
|
153
|
+
/** `put` 的入参。 */
|
|
154
|
+
export interface ResultPutInput {
|
|
155
|
+
/** 会话 id。 */
|
|
156
|
+
sessionId: string;
|
|
157
|
+
/** 原文(逐字保存)。 */
|
|
158
|
+
content: string;
|
|
159
|
+
/** 工具名,只做记录,不参与寻址。 */
|
|
160
|
+
toolName?: string;
|
|
161
|
+
/** 入库时刻(Unix 毫秒)。 */
|
|
162
|
+
at?: number;
|
|
163
|
+
}
|
|
164
|
+
/** `page` 的入参。offset 从 0 开始。 */
|
|
165
|
+
export interface ResultPageQuery {
|
|
166
|
+
/** 会话 id;必须与 refId 内嵌的 session 一致。 */
|
|
167
|
+
sessionId: string;
|
|
168
|
+
/** `ref://<session>/<sha256>`。 */
|
|
169
|
+
refId: string;
|
|
170
|
+
/** 起始位置:文本模式是 UTF-8 字节偏移,结构化模式是(过滤后的)行下标。 */
|
|
171
|
+
offset?: number;
|
|
172
|
+
/** 本页最多行数,默认 64,上限 512。 */
|
|
173
|
+
limit?: number;
|
|
174
|
+
/** 本页最多字节数,默认 16384,上限 65536。 */
|
|
175
|
+
maxBytes?: number;
|
|
176
|
+
/** 结构化模式下要返回的字段;不传则返回全部字段。 */
|
|
177
|
+
fields?: readonly string[];
|
|
178
|
+
/** 结构化模式下的等值过滤(字符串比较,全部命中才算匹配)。 */
|
|
179
|
+
equals?: Readonly<Record<string, string>>;
|
|
180
|
+
}
|
|
181
|
+
/** 一页里被省略掉的部分;`reason: 'none'` 表示这一页就是全部。 */
|
|
182
|
+
export interface ResultPageOmitted {
|
|
183
|
+
/** 省略原因。 */
|
|
184
|
+
reason: 'none' | 'bytes' | 'lines' | 'rows';
|
|
185
|
+
/** 省略的字符数。 */
|
|
186
|
+
chars: number;
|
|
187
|
+
/** 省略的行数。 */
|
|
188
|
+
lines: number;
|
|
189
|
+
/** 省略的行数(结构化模式)。 */
|
|
190
|
+
rows: number;
|
|
191
|
+
/** 省略的字节数。 */
|
|
192
|
+
bytes: number;
|
|
193
|
+
}
|
|
194
|
+
/** `page` 的返回值。 */
|
|
195
|
+
export interface ResultPage {
|
|
196
|
+
/** 会话 id。 */
|
|
197
|
+
sessionId: string;
|
|
198
|
+
/** 原文引用。 */
|
|
199
|
+
refId: string;
|
|
200
|
+
/** 分页模式。 */
|
|
201
|
+
mode: 'text' | 'structured';
|
|
202
|
+
/** 本页内容;文本模式下是原文的一段,结构化模式下是 JSON 行。 */
|
|
203
|
+
content: string;
|
|
204
|
+
/** 本页起始位置(与入参同一单位)。 */
|
|
205
|
+
offset: number;
|
|
206
|
+
/** 下一页的起始位置;`null` 表示已经取完。 */
|
|
207
|
+
nextOffset: number | null;
|
|
208
|
+
/** 本页取完是否就是全文(不要用 content 长度去猜)。 */
|
|
209
|
+
complete: boolean;
|
|
210
|
+
/** 被省略的部分。 */
|
|
211
|
+
omitted: ResultPageOmitted;
|
|
212
|
+
/** 原文总字符数。 */
|
|
213
|
+
totalChars: number;
|
|
214
|
+
/** 原文总字节数。 */
|
|
215
|
+
totalBytes: number;
|
|
216
|
+
/** 实际生效的 limit。 */
|
|
217
|
+
limit: number;
|
|
218
|
+
/** 实际生效的 maxBytes。 */
|
|
219
|
+
maxBytes: number;
|
|
220
|
+
/** 结构化模式下返回的字段。 */
|
|
221
|
+
fields?: string[];
|
|
222
|
+
/** 结构化模式下的总行数。 */
|
|
223
|
+
totalRows?: number;
|
|
224
|
+
/** 结构化模式下过滤后参与分页的行数。 */
|
|
225
|
+
matchedRows?: number;
|
|
226
|
+
}
|
|
227
|
+
/**
|
|
228
|
+
* 结果引用存储。
|
|
229
|
+
*
|
|
230
|
+
* 一条结果一旦进入历史,它的 preview 与 refId 就是常量:存储过期、淘汰、
|
|
231
|
+
* 释放都只影响「还能不能读到原文」,永不影响已经写进历史的那段文本。
|
|
232
|
+
*/
|
|
233
|
+
export interface ResultReferenceStore {
|
|
234
|
+
/** 保存原文并返回引用;同内容重复保存必须幂等。 */
|
|
235
|
+
put(input: ResultPutInput): Promise<StoredResultReference>;
|
|
236
|
+
/** 读取一页;必须校验 session 归属。 */
|
|
237
|
+
page(input: ResultPageQuery): Promise<ResultPage>;
|
|
238
|
+
/** 释放一条引用(只删这个具体文件);返回是否真的删掉了。 */
|
|
239
|
+
release(input: {
|
|
240
|
+
sessionId: string;
|
|
241
|
+
refId: string;
|
|
242
|
+
}): Promise<boolean>;
|
|
243
|
+
}
|
|
244
|
+
/** 错误码。 */
|
|
245
|
+
export type CacheWarmupErrorCode = 'SESSION_INVALID' | 'CONTENT_INVALID' | 'RESULT_TOO_LARGE' | 'STORE_FULL' | 'ROOT_INVALID' | 'REFERENCE_INVALID' | 'SESSION_MISMATCH' | 'RESULT_NOT_FOUND' | 'RESULT_EXPIRED' | 'OFFSET_OUT_OF_RANGE' | 'OFFSET_INVALID' | 'NOT_STRUCTURED' | 'FIELD_UNKNOWN';
|
|
246
|
+
/**
|
|
247
|
+
* 存储层错误。信息里只描述**请求本身**的问题,绝不回显其他 session 的内容或存在性。
|
|
248
|
+
*/
|
|
249
|
+
export declare class CacheWarmupStoreError extends Error {
|
|
250
|
+
readonly code: CacheWarmupErrorCode;
|
|
251
|
+
constructor(message: string, code: CacheWarmupErrorCode);
|
|
252
|
+
}
|
|
253
|
+
/** 可靠解析出来的结构化行。 */
|
|
254
|
+
export interface StructuredResultRows {
|
|
255
|
+
/** 字段名,按首次出现顺序。 */
|
|
256
|
+
fields: string[];
|
|
257
|
+
/** 行,非字符串值用 JSON 序列化后存放。 */
|
|
258
|
+
rows: Array<Record<string, string>>;
|
|
259
|
+
}
|
|
260
|
+
/**
|
|
261
|
+
* 把一段文本可靠地解析成结构化行;解析不可靠就返回 undefined。
|
|
262
|
+
*
|
|
263
|
+
* 判定刻意保守:宁可返回 undefined 让调用方保持原文,也不要猜出一张表,
|
|
264
|
+
* 因为下游会把「猜出来的表」当成完整事实。
|
|
265
|
+
*/
|
|
266
|
+
export declare function parseStructuredResultRows(text: string): StructuredResultRows | undefined;
|
|
267
|
+
//# sourceMappingURL=contracts.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"contracts.d.ts","sourceRoot":"","sources":["../../../../src/host/cache-warmup/contracts.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* 缓存预热子包(cache-warmup)的公开入口。
|
|
3
|
+
*
|
|
4
|
+
* 三方(核心库 / 宿主集成 / Kimi adapter)只从这里取东西:
|
|
5
|
+
* 预算与用量状态、保守投影、内容寻址的结果存储与分页读取。
|
|
6
|
+
*
|
|
7
|
+
* 这个子包**不改变任何现有文件的行为**:它不被 `src/index.ts` 自动装载,
|
|
8
|
+
* 只有显式 import 它的调用方才会用上,所以引入它本身对现有请求是零影响。
|
|
9
|
+
*
|
|
10
|
+
* @module dsh-chatgpt-subscription/host/cache-warmup
|
|
11
|
+
*/
|
|
12
|
+
export { CACHE_WARMUP_DEFAULTS, CacheWarmupStoreError, parseStructuredResultRows, } from './contracts.ts';
|
|
13
|
+
export type { CacheWarmupErrorCode, CacheWarmupUsage, PreviewBudget, ProjectionMetrics, ProjectionResult, ProjectionStrategy, ProjectToolResultInput, ResultPage, ResultPageOmitted, ResultPageQuery, ResultPutInput, ResultReferenceStore, StoredResultReference, StructuredResultRows, ToolResultBlock, ToolResultContent, } from './contracts.ts';
|
|
14
|
+
export { FileResultReferenceStore, defaultResultStoreRootDir, formatResultRefId, parseResultRefId, RESULT_REFERENCE_PREFIX, } from './store.ts';
|
|
15
|
+
export type { FileResultReferenceStoreOptions } from './store.ts';
|
|
16
|
+
export { projectToolResult, defaultPreviewBudget } from './projection.ts';
|
|
17
|
+
export { cacheWarmupBudget, cacheWarmupSnapshot } from './budget.ts';
|
|
18
|
+
export type { CacheWarmupSnapshot, CacheWarmupUsageTotals } from './budget.ts';
|
|
19
|
+
export { cacheWarmupHitRatio, cacheWarmupUsageReports, cacheWarmupUsageSessions, consecutiveWarmupHits, recordCacheWarmupUsage, resetCacheWarmupForTests, } from './usage.ts';
|
|
20
|
+
export type { CacheWarmupUsageSessionSummary, CacheWarmupUsageState } from './usage.ts';
|
|
21
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/host/cache-warmup/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,EACL,qBAAqB,EACrB,qBAAqB,EACrB,yBAAyB,GAC1B,MAAM,gBAAgB,CAAA;AACvB,YAAY,EACV,oBAAoB,EACpB,gBAAgB,EAChB,aAAa,EACb,iBAAiB,EACjB,gBAAgB,EAChB,kBAAkB,EAClB,sBAAsB,EACtB,UAAU,EACV,iBAAiB,EACjB,eAAe,EACf,cAAc,EACd,oBAAoB,EACpB,qBAAqB,EACrB,oBAAoB,EACpB,eAAe,EACf,iBAAiB,GAClB,MAAM,gBAAgB,CAAA;AAEvB,OAAO,EACL,wBAAwB,EACxB,yBAAyB,EACzB,iBAAiB,EACjB,gBAAgB,EAChB,uBAAuB,GACxB,MAAM,YAAY,CAAA;AACnB,YAAY,EAAE,+BAA+B,EAAE,MAAM,YAAY,CAAA;AAEjE,OAAO,EAAE,iBAAiB,EAAE,oBAAoB,EAAE,MAAM,iBAAiB,CAAA;AAEzE,OAAO,EAAE,iBAAiB,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAA;AACpE,YAAY,EAAE,mBAAmB,EAAE,sBAAsB,EAAE,MAAM,aAAa,CAAA;AAE9E,OAAO,EACL,mBAAmB,EACnB,uBAAuB,EACvB,wBAAwB,EACxB,qBAAqB,EACrB,sBAAsB,EACtB,wBAAwB,GACzB,MAAM,YAAY,CAAA;AACnB,YAAY,EAAE,8BAA8B,EAAE,qBAAqB,EAAE,MAAM,YAAY,CAAA"}
|
|
@@ -0,0 +1,130 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* 「缓存预热」宿主集成的挂载点。
|
|
3
|
+
*
|
|
4
|
+
* 这个文件把核心(结果投影、预算、引用存储、指标)接到宿主上,挂四样东西:
|
|
5
|
+
*
|
|
6
|
+
* 1. `tools/post-execute` 上的**新结果投影**:Kimi 线路的 `run_code` 结果交给
|
|
7
|
+
* `projectToolResult`,能可靠结构化提取的大结果被换成带 `ref://` 引用的预览;
|
|
8
|
+
* 2. `cache_warmup_result` 工具(`result-tool.ts`),预览的唯一精确补读入口;
|
|
9
|
+
* 3. 一段**静态**系统提示词引导(见 `CACHE_WARMUP_GUIDANCE`);
|
|
10
|
+
* 4. 结构化指标日志(`logging.ts`)。
|
|
11
|
+
*
|
|
12
|
+
* ## 只处理新结果
|
|
13
|
+
*
|
|
14
|
+
* post-execute 是每条工具结果各触发一次的**当下**事件:这里改的只是这次调用即将
|
|
15
|
+
* 写进历史的 content。历史里已经落下的结果不会被回改,`promptCacheKey`、replay、
|
|
16
|
+
* mapper、动态工具 in-history 机制一概不碰——它们读的是同一个 content,改历史
|
|
17
|
+
* 等于让同一个会话两次重放得到两段不同的字节。
|
|
18
|
+
*
|
|
19
|
+
* 因此开关的语义是**只影响之后的新结果**:关掉之后,已有的 preview/refId 继续
|
|
20
|
+
* 存在、继续可读(引用过期与否归存储管),只是不再产生新的。
|
|
21
|
+
*
|
|
22
|
+
* ## 可选服务一律走 `ctx.get()`
|
|
23
|
+
*
|
|
24
|
+
* `tools` 与 `systemPrompt` 都不在本插件的 `inject` 里(前者由宿主另装,后者
|
|
25
|
+
* 出现与否随 harness 代次)。Cordis 对没写进 `inject` 的服务直接读属性会抛
|
|
26
|
+
* `cannot get property "..." without inject`,一次就够把整个插件打成 degraded。
|
|
27
|
+
* 所以这里全部是**调用时**的 `get()`,缺席就安静降级:没有 tools 就不注册工具,
|
|
28
|
+
* 没有 systemPrompt 就不挂引导,插件照样挂得上。
|
|
29
|
+
*
|
|
30
|
+
* @module dsh-chatgpt-subscription/host/cache-warmup/install
|
|
31
|
+
*/
|
|
32
|
+
import { type ResultReferenceStore } from './index.ts';
|
|
33
|
+
import { type CacheWarmupLogger } from './logging.ts';
|
|
34
|
+
import type { CacheWarmupSettings } from './settings.ts';
|
|
35
|
+
/**
|
|
36
|
+
* 本模块服务的线路。
|
|
37
|
+
*
|
|
38
|
+
* 结果投影的正确性依赖这条线路的缓存语义(内容前缀命中),别的线路上把结果换成
|
|
39
|
+
* 预览只有坏处没有好处,所以这里写死一个 provider 名而不是做成开关。
|
|
40
|
+
*/
|
|
41
|
+
export declare const CACHE_WARMUP_PROVIDER = "kimi-code";
|
|
42
|
+
/**
|
|
43
|
+
* 被投影的工具名。
|
|
44
|
+
*
|
|
45
|
+
* 只有 `run_code` 的结果会走这张表:它的结果常常是一整屏的结构化输出,也正是
|
|
46
|
+
* 「换成预览 + 精确补读」唯一划得来的场景。别的工具(`read` 的源码、`grep` 的
|
|
47
|
+
* 契约定义)必须原样到达模型,核心侧的保守策略也建立在"调用方只喂该喂的"之上。
|
|
48
|
+
*/
|
|
49
|
+
export declare const CACHE_WARMUP_SOURCE_TOOL = "run_code";
|
|
50
|
+
/** 提示词分节名,全局唯一(重复注册会抛错)。 */
|
|
51
|
+
export declare const CACHE_WARMUP_SECTION_NAME = "plugin:cache-warmup";
|
|
52
|
+
/**
|
|
53
|
+
* 引导词在提示词里的排序位。
|
|
54
|
+
*
|
|
55
|
+
* 插件族占用的区间在部署人设之后、SDK 的 `PLAN_POLICY`(500) 之前;进展更新占了
|
|
56
|
+
* 220,这里取 225,紧挨着它但不并列。
|
|
57
|
+
*/
|
|
58
|
+
export declare const CACHE_WARMUP_SECTION_ORDER = 225;
|
|
59
|
+
/**
|
|
60
|
+
* 一段**恒定**的引导词:告诉模型预览是什么、怎么补读。
|
|
61
|
+
*
|
|
62
|
+
* 文本与开关无关,这是刻意的——系统提示是缓存前缀的第一段,会话中途改一个字就
|
|
63
|
+
* 让整段前缀失效、整段重新计费。开关的语义只交给 post-execute 与工具。
|
|
64
|
+
*/
|
|
65
|
+
export declare const CACHE_WARMUP_GUIDANCE: string;
|
|
66
|
+
/**
|
|
67
|
+
* 静态引导词的文本提供者。
|
|
68
|
+
* @returns 一个永远返回同一段文本的函数(系统提示的稳定前缀)。
|
|
69
|
+
*/
|
|
70
|
+
export declare function cacheWarmupSectionText(): () => string;
|
|
71
|
+
/** 一次工具调用所属的线路。 */
|
|
72
|
+
export interface CacheWarmupRoute {
|
|
73
|
+
/** 当前会话被路由到的 provider id。 */
|
|
74
|
+
readonly provider?: string;
|
|
75
|
+
/** 当前会话标识;引用归属、预算与命中率都按它记账。 */
|
|
76
|
+
readonly sessionId?: string;
|
|
77
|
+
}
|
|
78
|
+
/**
|
|
79
|
+
* 读一次工具调用所属的线路。
|
|
80
|
+
*
|
|
81
|
+
* provider 先问会话的 request header(那是本轮请求真正走的那条线),再退回
|
|
82
|
+
* agent 自己的 options。两处都没有就返回空对象——调用方据此放手,而不是猜一个。
|
|
83
|
+
* @param agent - 事件里的调用方 agent。
|
|
84
|
+
* @returns 线路信息;读不到的字段省略。
|
|
85
|
+
*/
|
|
86
|
+
export declare function cacheWarmupRouteOf(agent: unknown): CacheWarmupRoute;
|
|
87
|
+
/** 挂载选项。 */
|
|
88
|
+
export interface CacheWarmupOptions {
|
|
89
|
+
/**
|
|
90
|
+
* 读取当前设置。
|
|
91
|
+
*
|
|
92
|
+
* 必须是**函数**:loader 把 volatile 字段换成活引用,设置保存时就地写新值而不
|
|
93
|
+
* 重挂插件行;apply 时求值一次存下来的写法会让开关在会话中途失效。
|
|
94
|
+
*/
|
|
95
|
+
settings: () => CacheWarmupSettings;
|
|
96
|
+
/**
|
|
97
|
+
* 结果引用存储。
|
|
98
|
+
*
|
|
99
|
+
* 缺省时按需构造一个 `FileResultReferenceStore()`(核心的 `CACHE_WARMUP_DEFAULTS`
|
|
100
|
+
* 提供其余默认值);注入一个工厂是为了让测试与别的部署换掉存储,而不必改这里。
|
|
101
|
+
*/
|
|
102
|
+
store?: () => ResultReferenceStore | undefined;
|
|
103
|
+
}
|
|
104
|
+
/** 本模块读得到的宿主上下文(Cordis Context 结构上满足;测试可用假对象)。 */
|
|
105
|
+
export interface CacheWarmupContext {
|
|
106
|
+
/** Cordis 的副作用登记:回调返回的 disposer 会随插件卸载执行。 */
|
|
107
|
+
effect?<T>(execute: () => T, label?: string): unknown;
|
|
108
|
+
/** Cordis 的事件总线。 */
|
|
109
|
+
on?(event: string, listener: (...args: never[]) => unknown): () => void;
|
|
110
|
+
/** 服务查找:**调用时**读可选服务,不触发 inject 断言。 */
|
|
111
|
+
get?(name: string): unknown;
|
|
112
|
+
/** 宿主 logger(可选)。 */
|
|
113
|
+
logger?: CacheWarmupLogger;
|
|
114
|
+
}
|
|
115
|
+
/**
|
|
116
|
+
* 挂载「缓存预热」的宿主半边。
|
|
117
|
+
* @param ctx - 宿主插件上下文。
|
|
118
|
+
* @param options - 挂载选项(设置读取器、可选的存储工厂)。
|
|
119
|
+
* @returns 卸载函数;重复挂载时返回一个空操作。
|
|
120
|
+
*/
|
|
121
|
+
export declare function installCacheWarmup(ctx: CacheWarmupContext, options: CacheWarmupOptions): () => void;
|
|
122
|
+
/**
|
|
123
|
+
* 本文件刻意**不保留**任何"把异常压成一句话"的辅助函数。
|
|
124
|
+
*
|
|
125
|
+
* 这里曾经有一个 `describe(error)`,把 `error.message` 截断后拼进宿主日志。它看上去
|
|
126
|
+
* 无害(只取第一行、还截了长度),实际上是一条原文出口:异常消息里常常带着绝对
|
|
127
|
+
* 路径、命令行片段、凭据,或者被读取结果的一段正文。三处降级日志现在统一走
|
|
128
|
+
* {@link cacheWarmupErrorLabel}——只输出稳定的 name/code。
|
|
129
|
+
*/
|
|
130
|
+
//# sourceMappingURL=install.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"install.d.ts","sourceRoot":"","sources":["../../../../src/host/cache-warmup/install.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8BG;AAIH,OAAO,EAQL,KAAK,oBAAoB,EAC1B,MAAM,YAAY,CAAA;AACnB,OAAO,EAKL,KAAK,iBAAiB,EACvB,MAAM,cAAc,CAAA;AAErB,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,eAAe,CAAA;AAExD;;;;;GAKG;AACH,eAAO,MAAM,qBAAqB,cAAc,CAAA;AAEhD;;;;;;GAMG;AACH,eAAO,MAAM,wBAAwB,aAAa,CAAA;AAElD,4BAA4B;AAC5B,eAAO,MAAM,yBAAyB,wBAAwB,CAAA;AAE9D;;;;;GAKG;AACH,eAAO,MAAM,0BAA0B,MAAM,CAAA;AAE7C;;;;;GAKG;AACH,eAAO,MAAM,qBAAqB,QAStB,CAAA;AAEZ;;;GAGG;AACH,wBAAgB,sBAAsB,IAAI,MAAM,MAAM,CAErD;AAED,mBAAmB;AACnB,MAAM,WAAW,gBAAgB;IAC/B,6BAA6B;IAC7B,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAA;IAC1B,+BAA+B;IAC/B,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAA;CAC5B;AAaD;;;;;;;GAOG;AACH,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,OAAO,GAAG,gBAAgB,CAiBnE;AAED,YAAY;AACZ,MAAM,WAAW,kBAAkB;IACjC;;;;;OAKG;IACH,QAAQ,EAAE,MAAM,mBAAmB,CAAA;IACnC;;;;;OAKG;IACH,KAAK,CAAC,EAAE,MAAM,oBAAoB,GAAG,SAAS,CAAA;CAC/C;AAED,kDAAkD;AAClD,MAAM,WAAW,kBAAkB;IACjC,6CAA6C;IAC7C,MAAM,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,MAAM,CAAC,EAAE,KAAK,CAAC,EAAE,MAAM,GAAG,OAAO,CAAA;IACrD,oBAAoB;IACpB,EAAE,CAAC,CAAC,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC,GAAG,IAAI,EAAE,KAAK,EAAE,KAAK,OAAO,GAAG,MAAM,IAAI,CAAA;IACvE,uCAAuC;IACvC,GAAG,CAAC,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAA;IAC3B,qBAAqB;IACrB,MAAM,CAAC,EAAE,iBAAiB,CAAA;CAC3B;AA+GD;;;;;GAKG;AACH,wBAAgB,kBAAkB,CAAC,GAAG,EAAE,kBAAkB,EAAE,OAAO,EAAE,kBAAkB,GAAG,MAAM,IAAI,CA4NnG;AAiBD;;;;;;;GAOG"}
|