@tansr/serve 0.8.0 → 0.8.1
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 +19 -1
- package/dist/index.d.ts +602 -514
- package/dist/index.js +136 -140
- package/package.json +1 -1
package/dist/index.js
CHANGED
|
@@ -39343,9 +39343,9 @@ var IRBlockSchema = z.discriminatedUnion("t", [
|
|
|
39343
39343
|
var IRRoleSchema = z.enum(["user", "assistant"]);
|
|
39344
39344
|
var IRMessageMetaSchema = z.object({
|
|
39345
39345
|
/**
|
|
39346
|
-
* 消息种类标记。首值 'compaction_summary' = 压缩摘要消息(
|
|
39347
|
-
*
|
|
39348
|
-
*
|
|
39346
|
+
* 消息种类标记。首值 'compaction_summary' = 压缩摘要消息(防碰撞
|
|
39347
|
+
* 文本哨兵的结构化替代);候选扩值 'pinned'/'synthetic' 随
|
|
39348
|
+
* 对应消费方另行契约评审(先冻结已验证形态)。
|
|
39349
39349
|
*/
|
|
39350
39350
|
kind: z.enum(["compaction_summary"]).optional(),
|
|
39351
39351
|
/** 产生本消息的压缩执行 id(RFC-CTX12-2 compactionId 同源;审计链互指) */
|
|
@@ -39359,11 +39359,11 @@ var IRMessageSchema = z.object({
|
|
|
39359
39359
|
});
|
|
39360
39360
|
var IRSystemSegmentSchema = z.object({
|
|
39361
39361
|
text: z.string(),
|
|
39362
|
-
/** 缓存断点提示——忽略方无害
|
|
39362
|
+
/** 缓存断点提示——忽略方无害 */
|
|
39363
39363
|
cacheable: z.boolean().optional(),
|
|
39364
39364
|
/**
|
|
39365
|
-
* 段语义标签(contract-v0.1
|
|
39366
|
-
*
|
|
39365
|
+
* 段语义标签(contract-v0.1):'base'/'tools'/'env'/'memory' 等,
|
|
39366
|
+
* 供上下文压缩按语义识别可替换段;消费方忽略无害。
|
|
39367
39367
|
*/
|
|
39368
39368
|
label: z.string().optional()
|
|
39369
39369
|
});
|
|
@@ -39386,8 +39386,8 @@ var IRRequestSchema = z.object({
|
|
|
39386
39386
|
maxTokens: z.number().int().positive(),
|
|
39387
39387
|
temperature: z.number().optional(),
|
|
39388
39388
|
/**
|
|
39389
|
-
* thinking 能力位控制;适配器按 provider capability
|
|
39390
|
-
*
|
|
39389
|
+
* thinking 能力位控制;适配器按 provider capability 改写。
|
|
39390
|
+
* `off` 位 = 显式思考关断(fast 形态载体)——
|
|
39391
39391
|
* 与「缺席」语义不同:缺席 = 上游缺省(openai 兼容面思考模型缺省仍开思考,
|
|
39392
39392
|
* UCloud 实证),off = 适配器按方言显式关(twp → params.reasoning='off';
|
|
39393
39393
|
* openai 直连 → enable_thinking:false;anthropic → 不发 thinking 参数)。
|
|
@@ -39399,14 +39399,14 @@ var IRRequestSchema = z.object({
|
|
|
39399
39399
|
}).optional(),
|
|
39400
39400
|
stopSequences: z.array(z.string()).optional(),
|
|
39401
39401
|
/**
|
|
39402
|
-
* 请求级缓存写抑制(contract-v0.8
|
|
39402
|
+
* 请求级缓存写抑制(contract-v0.8):true 时显式缓存适配器
|
|
39403
39403
|
* 不在消息尾落 cache_control 断点(system/工具面断点不受影响)。签发方为
|
|
39404
|
-
* 一次性辅助请求(
|
|
39404
|
+
* 一次性辅助请求(上下文压缩/标题生成)——其消息尾不会被复读,
|
|
39405
39405
|
* 写缓存纯付费无收益。implicit/ignored 缓存模式的适配器忽略本键。
|
|
39406
39406
|
*/
|
|
39407
39407
|
skipCacheWrite: z.boolean().optional(),
|
|
39408
39408
|
/**
|
|
39409
|
-
* 端侧预估的 prompt 侧 token 总量(
|
|
39409
|
+
* 端侧预估的 prompt 侧 token 总量(贴窗防御;加法可选)。
|
|
39410
39410
|
* 语义:请求面(system+messages+tools)装配定格后、发出前的估算值,
|
|
39411
39411
|
* 整数 ≥1(向上取整;api TwpParamsSchema.promptTokensEstimate 同下限)。
|
|
39412
39412
|
* 消费方 = twp 适配器(落 params.promptTokensEstimate,网关侧贴窗拦截,
|
|
@@ -39421,7 +39421,7 @@ var IRUsageSchema = z.object({
|
|
|
39421
39421
|
* 会签):不含 cacheReadInputTokens 与 cacheCreationInputTokens——三路
|
|
39422
39422
|
* 相加 = 请求输入总量。适配器出口恒为本口径:inclusive 端点(OpenAI 系
|
|
39423
39423
|
* prompt_tokens,cached ⊆ prompt)在适配器内减法归一,包含关系以 compat
|
|
39424
|
-
* 实录核证(
|
|
39424
|
+
* 实录核证(见 providers openai/wire.ts exclusiveInputTokens
|
|
39425
39425
|
* 注释)。消费方(上下文账本/CostTracker/状态栏)三路直加,不得再做
|
|
39426
39426
|
* inclusive 换算(防双重矫正)。限界注记:端点的缓存写入量不可见时
|
|
39427
39427
|
* (如 OpenAI Chat 协议无 cache_write 字段),写入量仍含在本键内
|
|
@@ -39433,7 +39433,7 @@ var IRUsageSchema = z.object({
|
|
|
39433
39433
|
cacheCreationInputTokens: z.number().int().nonnegative().optional(),
|
|
39434
39434
|
reasoningOutputTokens: z.number().int().nonnegative().optional(),
|
|
39435
39435
|
/**
|
|
39436
|
-
* 缓存删除量(contract-v0.4
|
|
39436
|
+
* 缓存删除量(contract-v0.4;cached microcompact):
|
|
39437
39437
|
* provider 报告的 cache_deleted_input_tokens——服务端缓存段被逐出/失效的
|
|
39438
39438
|
* 通知量,**非计费维度**(cost-tracker 不入账),上下文账本(context
|
|
39439
39439
|
* ledger)以此校正窗口水位。观测到该字段的适配器填入;缺省不落键。
|
|
@@ -39518,12 +39518,12 @@ var IRStreamEventSchema = z.discriminatedUnion("t", [
|
|
|
39518
39518
|
elapsedMs: z.number().nonnegative()
|
|
39519
39519
|
}).optional(),
|
|
39520
39520
|
/**
|
|
39521
|
-
* 结构化事实位(contract-v0.26
|
|
39521
|
+
* 结构化事实位(contract-v0.26;加法可选):适配器把服务端
|
|
39522
39522
|
* 信封 `error.detail` 中**机器可判、不含身份 / 内部 id** 的事实原样带到归一错误上,
|
|
39523
39523
|
* kernel 透传进 `turn.error.detail`。首个签发方 = providers twp 归一层对平台套餐码
|
|
39524
39524
|
* (`plan_concurrency_exceeded` / `plan_end_users_exceeded` / `plan_required` /
|
|
39525
39525
|
* `plan_tier_insufficient`)落 `{ scope: 'plan' }`——端侧据此把「开发者套餐配额」与
|
|
39526
|
-
* 「模型限流」区分(HTTP
|
|
39526
|
+
* 「模型限流」区分(HTTP 面同键同值;事件流面此前分叉)。缺席 = 无附加事实。
|
|
39527
39527
|
*/
|
|
39528
39528
|
detail: z.record(z.string(), z.unknown()).optional(),
|
|
39529
39529
|
/**
|
|
@@ -39613,7 +39613,7 @@ var EventBodySchema = z2.discriminatedUnion("type", [
|
|
|
39613
39613
|
/** 被移除消息的 index 闭区间 [first, last](原数组坐标) */
|
|
39614
39614
|
removedRange: z2.tuple([z2.number(), z2.number()]),
|
|
39615
39615
|
/**
|
|
39616
|
-
* 被移除消息的精确 index 清单(contract-v0.4
|
|
39616
|
+
* 被移除消息的精确 index 清单(contract-v0.4):pinned
|
|
39617
39617
|
* 挖洞时 removedRange 是外包络,重放/审计按本清单才能精确复原折叠面;
|
|
39618
39618
|
* 表面层折叠计数也应优先取本清单长度。升序;缺省时按 removedRange 连续。
|
|
39619
39619
|
*/
|
|
@@ -39774,9 +39774,9 @@ var EventBodySchema = z2.discriminatedUnion("type", [
|
|
|
39774
39774
|
*/
|
|
39775
39775
|
errorKind: z2.string().optional(),
|
|
39776
39776
|
/**
|
|
39777
|
-
* 结构化事实位(contract-v0.26
|
|
39777
|
+
* 结构化事实位(contract-v0.26;加法可选键):scope='model' 时
|
|
39778
39778
|
* = IR error 事件 `detail` 透传(providers 自服务端信封带出的机器可判事实;首个取值
|
|
39779
|
-
* `{ scope: 'plan' }` = 平台套餐配额拒绝,与 HTTP 面
|
|
39779
|
+
* `{ scope: 'plan' }` = 平台套餐配额拒绝,与 HTTP 面 `error.detail.scope`
|
|
39780
39780
|
* 同键同值)。三端 reducer 归约:`recoverable:true` → `SessionNotice.detail`,失败形 →
|
|
39781
39781
|
* `ErrorView.detail`;端侧 `ErrorEnvelope.scope` 取值器同一读法。缺席 = 无附加事实
|
|
39782
39782
|
* (既有事件体字节零变)。值恒不含 endUser 身份 / 令牌 / 内部 id。
|
|
@@ -39788,7 +39788,7 @@ var EventBodySchema = z2.discriminatedUnion("type", [
|
|
|
39788
39788
|
z2.object({ type: z2.literal("msg.text.delta"), index: z2.number().int(), text: z2.string() }),
|
|
39789
39789
|
z2.object({ type: z2.literal("msg.thinking.delta"), index: z2.number().int(), text: z2.string() }),
|
|
39790
39790
|
z2.object({ type: z2.literal("msg.block.end"), index: z2.number().int() }),
|
|
39791
|
-
/** 撤销已展示的 partial(
|
|
39791
|
+
/** 撤销已展示的 partial(tombstone) */
|
|
39792
39792
|
z2.object({ type: z2.literal("msg.retracted"), index: z2.number().int() }),
|
|
39793
39793
|
// tool.*
|
|
39794
39794
|
z2.object({ type: z2.literal("tool.proposed"), toolCallId: z2.string(), name: z2.string(), args: z2.unknown() }),
|
|
@@ -39799,7 +39799,7 @@ var EventBodySchema = z2.discriminatedUnion("type", [
|
|
|
39799
39799
|
decision: PermissionDecisionSchema,
|
|
39800
39800
|
decisionSource: DecisionSourceSchema,
|
|
39801
39801
|
/**
|
|
39802
|
-
* 命中的规则原文(如 `Shell(git *)`;contract-v0.2
|
|
39802
|
+
* 命中的规则原文(如 `Shell(git *)`;contract-v0.2)。
|
|
39803
39803
|
* 审计链由此可答"哪条规则拒的";模式短路/兜底 ask 等无规则命中时不落键。
|
|
39804
39804
|
*/
|
|
39805
39805
|
matchedRule: z2.string().optional()
|
|
@@ -39812,25 +39812,25 @@ var EventBodySchema = z2.discriminatedUnion("type", [
|
|
|
39812
39812
|
toolCallId: z2.string(),
|
|
39813
39813
|
durationMs: z2.number(),
|
|
39814
39814
|
/**
|
|
39815
|
-
* ToolResult.data 透传位(contract-v0.3
|
|
39815
|
+
* ToolResult.data 透传位(contract-v0.3):工具产出的结构化
|
|
39816
39816
|
* 渲染数据(AGENTS.md「工具只产出结构化数据」铁律的事件流出口)。
|
|
39817
39817
|
* 表面层按工具名注册渲染器消费;无 data 的工具不落键,消费方忽略无害。
|
|
39818
39818
|
*/
|
|
39819
39819
|
data: z2.unknown().optional(),
|
|
39820
39820
|
/**
|
|
39821
|
-
* 模型可见文本投影(contract-v0.8
|
|
39821
|
+
* 模型可见文本投影(contract-v0.8):喂回模型的 tool_result
|
|
39822
39822
|
* 文本(截断后形态)。cc-compat stream-json 包络与 SDK 消费方由此拿到
|
|
39823
39823
|
* 与模型一致的结果文本,不必反推 data;与 data 正交(结构化渲染 vs
|
|
39824
|
-
* 模型文本)
|
|
39824
|
+
* 模型文本)。大结果按工具结果预算截断后的文本为准,不另存全量。
|
|
39825
39825
|
*/
|
|
39826
39826
|
content: z2.string().optional(),
|
|
39827
39827
|
/**
|
|
39828
|
-
* 工具结构化失败位(contract-v0.25
|
|
39828
|
+
* 工具结构化失败位(contract-v0.25):`ToolResult.isError`
|
|
39829
39829
|
* 透传。工具以 **return isError** 表达的业务级失败(非零退出 / 用户中断 / SSRF 拒 /
|
|
39830
39830
|
* 媒体错误形)与 throw 径的 `tool.failed` 在表面层归约为同一 failed 态——此前 TUI /
|
|
39831
|
-
* sdk /
|
|
39831
|
+
* sdk / 端侧对这类结果一律 ✓。缺席 = 旧签发方或成功完成(completed 语义不变);
|
|
39832
39832
|
* 消费方(TUI / sdk / Android / iOS reducer)只判 `isError === true → failed`。
|
|
39833
|
-
* 纯可选加法,包络 `v` 不 bump;端侧 vendored
|
|
39833
|
+
* 纯可选加法,包络 `v` 不 bump;端侧 vendored 同步另行跟进。
|
|
39834
39834
|
*/
|
|
39835
39835
|
isError: z2.boolean().optional()
|
|
39836
39836
|
}),
|
|
@@ -39902,7 +39902,7 @@ var EventBodySchema = z2.discriminatedUnion("type", [
|
|
|
39902
39902
|
usage: IRUsageSchema,
|
|
39903
39903
|
costUsd: z2.number().optional(),
|
|
39904
39904
|
/**
|
|
39905
|
-
* 上下文窗口分母(contract-v0.3
|
|
39905
|
+
* 上下文窗口分母(contract-v0.3):签发方(查询环)从装配层
|
|
39906
39906
|
* 注入的 provider capability.maxContext 透传。状态栏水位 = 最近 prompt
|
|
39907
39907
|
* 规模 / 本值;缺省时表面层隐藏水位段(或回退装配注入的静态值)。
|
|
39908
39908
|
* 随 usage 更新携带——/model 热切换后分母随下一轮事件自动矫正。
|
|
@@ -39919,19 +39919,19 @@ var EventBodySchema = z2.discriminatedUnion("type", [
|
|
|
39919
39919
|
toolUseId: z2.string().optional(),
|
|
39920
39920
|
/**
|
|
39921
39921
|
* 用量目的:非对话主流的模型调用标注来源。词表:'compaction'(上下文
|
|
39922
|
-
*
|
|
39923
|
-
*
|
|
39924
|
-
*
|
|
39925
|
-
*
|
|
39922
|
+
* 压缩轮)/ 'title'(会话标题生成,contract-v0.8
|
|
39923
|
+
* 扩容;辅助任务降档的归因面)/ 'permission_classifier'(LLM 权限
|
|
39924
|
+
* 分类器调用)/ 'memory'(记忆四面 fork:提取/固化/晋升/召回
|
|
39925
|
+
* 选择;随本地记账闭环扩词)。新目的先扩词表再签发
|
|
39926
39926
|
* (自由文本仅兜底);缺省即对话主流。
|
|
39927
39927
|
*
|
|
39928
|
-
*
|
|
39928
|
+
* 词表分叉注记:同一分类器子系统在 request-
|
|
39929
39929
|
* measurement 观测面与 TWP 出线面用词 'classifier'(kernel context/
|
|
39930
39930
|
* request-measurement.ts RequestPurpose、providers twp/contract.ts
|
|
39931
|
-
* TWP_PURPOSE_VALUES
|
|
39931
|
+
* TWP_PURPOSE_VALUES——现为扁平单表,分版常量已退役),与本词表
|
|
39932
39932
|
* 'permission_classifier' 属两套近义词并存;且本词当前全仓零签发方
|
|
39933
39933
|
* (分类器 usage 走遥测与测量面,不落本地 cost 事件)。统一到单一词属
|
|
39934
|
-
*
|
|
39934
|
+
* 契约面决策,待定;届时 kernel cost/tracker.ts KNOWN_COST_PURPOSES
|
|
39935
39935
|
* 须同步,勿单侧改词。
|
|
39936
39936
|
*/
|
|
39937
39937
|
purpose: z2.string().optional()
|
|
@@ -40140,7 +40140,7 @@ var JournalRecordSchema = z3.object({
|
|
|
40140
40140
|
/**
|
|
40141
40141
|
* 尾行完整性(contract-v0.1 修订语义):写入端 v1 恒写 'complete',
|
|
40142
40142
|
* 半行截断检测依靠 Reader 的 JSON 解析失败判定;'partial' 保留给未来
|
|
40143
|
-
* 两阶段写入端,Reader 对尾条 'partial'
|
|
40143
|
+
* 两阶段写入端,Reader 对尾条 'partial' 同样按崩溃残留截断。
|
|
40144
40144
|
*/
|
|
40145
40145
|
completeness: z3.enum(["partial", "complete"])
|
|
40146
40146
|
});
|
|
@@ -40214,8 +40214,7 @@ var InputModalityModeSchema = z4.enum(["supported", "rejected", "silently_droppe
|
|
|
40214
40214
|
var CapabilitySchema = z4.object({
|
|
40215
40215
|
maxContext: z4.number().int().positive(),
|
|
40216
40216
|
/**
|
|
40217
|
-
* 实测质量拐点窗口(tokens
|
|
40218
|
-
* maxOutput/RFC-CTX12-3 同律形态)。可选且**无默认值**——undefined =
|
|
40217
|
+
* 实测质量拐点窗口(tokens;与 maxOutput 同律形态)。可选且**无默认值**——undefined =
|
|
40219
40218
|
* 未实证,消费方沿标称 maxContext(行为零变);声明时装配层窗口合成
|
|
40220
40219
|
* 取 min(maxContext, effectiveContext)(合成恒在装配层单点,kernel
|
|
40221
40220
|
* 冻结面不开位)。数据纪律与 maxOutput 同:手工回填须带公开评测出处,
|
|
@@ -40224,11 +40223,11 @@ var CapabilitySchema = z4.object({
|
|
|
40224
40223
|
effectiveContext: z4.number().int().positive().optional(),
|
|
40225
40224
|
/**
|
|
40226
40225
|
* 单次响应输出上限(tokens;厂商 max_tokens / max_completion_tokens
|
|
40227
|
-
* 限额)。contract-v0.15
|
|
40228
|
-
* undefined = 未知/未实证,消费方自选保守值(压缩输出预算径回退 20K,
|
|
40229
|
-
*
|
|
40230
|
-
*
|
|
40231
|
-
*
|
|
40226
|
+
* 限额)。contract-v0.15:可选且**无默认值**——
|
|
40227
|
+
* undefined = 未知/未实证,消费方自选保守值(压缩输出预算径回退 20K),
|
|
40228
|
+
* 与显式数值(官方文档实证)区分,杜绝编造(hostedTools / quirks
|
|
40229
|
+
* 新键同先例)。数据纪律:内置表回填
|
|
40230
|
+
* 必须带官方出处与查证日期,拿不准的模型宁可不录。
|
|
40232
40231
|
*/
|
|
40233
40232
|
maxOutput: z4.number().int().positive().optional(),
|
|
40234
40233
|
/**
|
|
@@ -40356,7 +40355,7 @@ var CapabilitySchema = z4.object({
|
|
|
40356
40355
|
/** 思考首 token 显著慢的建议超时下限(ms;适配器/重试 watchdog 消费) */
|
|
40357
40356
|
minTimeoutMs: z4.number().int().positive().optional(),
|
|
40358
40357
|
/** max_tokens 限额是否不含 reasoning 预算(doubao true 与 kimi/glm false
|
|
40359
|
-
*
|
|
40358
|
+
* 相反实证;成本预估与截断防御的消费点) */
|
|
40360
40359
|
maxTokensExcludesReasoning: z4.boolean().optional()
|
|
40361
40360
|
}).default({}),
|
|
40362
40361
|
/**
|
|
@@ -40367,7 +40366,7 @@ var CapabilitySchema = z4.object({
|
|
|
40367
40366
|
*/
|
|
40368
40367
|
hostedTools: z4.array(z4.string()).optional(),
|
|
40369
40368
|
/**
|
|
40370
|
-
* contract-v0.4
|
|
40369
|
+
* contract-v0.4:Responses `background:true` 异步任务能力位。
|
|
40371
40370
|
* 同上,可选且无默认值。
|
|
40372
40371
|
*/
|
|
40373
40372
|
background: z4.boolean().optional()
|
|
@@ -40387,7 +40386,7 @@ var PricingSchema = z4.object({
|
|
|
40387
40386
|
/** 峰谷时段倍率(DeepSeek 高峰翻倍) */
|
|
40388
40387
|
peakMultiplier: z4.number().positive().optional(),
|
|
40389
40388
|
/**
|
|
40390
|
-
* contract-v0.5
|
|
40389
|
+
* contract-v0.5:阶梯计价。缺省 undefined = 扁平计价(现状零
|
|
40391
40390
|
* 迁移);声明 tiers 时顶层三价约定为**首档镜像**(文档约定不强 refine)——
|
|
40392
40391
|
* 向前兼容降级语义:无 tiers 感知的旧消费端仍按顶层价近似计费,不炸不偏零。
|
|
40393
40392
|
*/
|
|
@@ -40434,11 +40433,11 @@ var HooksSectionSchema = z4.object({
|
|
|
40434
40433
|
Stop: z4.array(HookGroupSchema).optional(),
|
|
40435
40434
|
SessionEnd: z4.array(HookGroupSchema).optional(),
|
|
40436
40435
|
/**
|
|
40437
|
-
* 权限扩展点两事件(contract-v0.13
|
|
40438
|
-
* 运行期 kernel HOOK_EVENTS
|
|
40436
|
+
* 权限扩展点两事件(contract-v0.13;
|
|
40437
|
+
* 运行期 kernel HOOK_EVENTS 已为八事件,此处规范性描述
|
|
40439
40438
|
* 补齐;词表一致性由 schema × HOOK_EVENTS 锁测试把守):
|
|
40440
40439
|
* - PermissionRequest:ask 终局呈现前的最后收紧缝(只收紧,allow 忽略+告警);
|
|
40441
|
-
* - PermissionDenied:deny 终局后的纯通知缝(
|
|
40440
|
+
* - PermissionDenied:deny 终局后的纯通知缝(结构化响应不消费)。
|
|
40442
40441
|
*/
|
|
40443
40442
|
PermissionRequest: z4.array(HookGroupSchema).optional(),
|
|
40444
40443
|
PermissionDenied: z4.array(HookGroupSchema).optional(),
|
|
@@ -40520,32 +40519,31 @@ var PermissionsSectionSchema = z4.object({
|
|
|
40520
40519
|
*/
|
|
40521
40520
|
disableBaselineProtection: z4.boolean().optional(),
|
|
40522
40521
|
/**
|
|
40523
|
-
* LLM 权限分类器治理位(contract-v0.8 增 enabled
|
|
40524
|
-
* contract-v0.13 增 tightenOutsideAuto/callBudget 并放宽 enabled
|
|
40525
|
-
*
|
|
40522
|
+
* LLM 权限分类器治理位(contract-v0.8 增 enabled;
|
|
40523
|
+
* contract-v0.13 增 tightenOutsideAuto/callBudget 并放宽 enabled 为可选)。
|
|
40524
|
+
* 环境变量 TANSR_PERMISSION_CLASSIFIER /
|
|
40526
40525
|
* TANSR_CLASSIFIER_TIGHTEN_OUTSIDE_AUTO / TANSR_CLASSIFIER_BUDGET 保留为
|
|
40527
|
-
* 最高优先覆盖(逐键接管)。仅 user/managed 层被尊重(
|
|
40526
|
+
* 最高优先覆盖(逐键接管)。仅 user/managed 层被尊重(分类器属
|
|
40528
40527
|
* 用户/企业的信任与成本决策,项目层声明整段忽略+示警)。
|
|
40529
40528
|
* 史注:TANSR_CLASSIFIER_ALLOW_UNQUALIFIED(资格越过)曾刻意不进配置
|
|
40530
|
-
* (break-glass 性质恒 env-only)
|
|
40531
|
-
* 任命即授照后无「未达资格」可越)。
|
|
40529
|
+
* (break-glass 性质恒 env-only),已整体退役(任命即授照后无「未达资格」可越)。
|
|
40532
40530
|
*/
|
|
40533
40531
|
classifier: z4.object({
|
|
40534
40532
|
enabled: z4.boolean().optional(),
|
|
40535
|
-
/** 非 auto 模式也咨询分类器(只收紧:unsafe→deny,safe 恒维持 ask
|
|
40533
|
+
/** 非 auto 模式也咨询分类器(只收紧:unsafe→deny,safe 恒维持 ask) */
|
|
40536
40534
|
tightenOutsideAuto: z4.boolean().optional(),
|
|
40537
40535
|
/** 每会话咨询预算:≥1 改上限 / 'off' 不限;缺席用内核缺省 */
|
|
40538
40536
|
callBudget: z4.union([z4.number().int().min(1), z4.literal("off")]).optional()
|
|
40539
40537
|
}).optional(),
|
|
40540
40538
|
/**
|
|
40541
|
-
* 出厂规则包装载开关(contract-v0.13
|
|
40539
|
+
* 出厂规则包装载开关(contract-v0.13;出厂包的契约形态)。
|
|
40542
40540
|
* 缺省 true(装载);false = 卸载。env TANSR_RECOMMENDED_RULES 保留为最高
|
|
40543
40541
|
* 优先覆盖(精确 '0' 卸载)。仅 user/managed 层被尊重(卸出厂 ask 包属
|
|
40544
40542
|
* 扩权向,项目层声明忽略+示警)。
|
|
40545
40543
|
*/
|
|
40546
40544
|
recommendedRules: z4.boolean().optional(),
|
|
40547
40545
|
/**
|
|
40548
|
-
* 项目 ask 注意力预算(contract-v0.13
|
|
40546
|
+
* 项目 ask 注意力预算(contract-v0.13;kernel ask 预算的契约形态)。
|
|
40549
40547
|
* ≥1 = 每会话项目来源询问上限(缺省 10);'off' = 关闭(回到逐条询问)。
|
|
40550
40548
|
* env TANSR_PROJECT_ASK_BUDGET 保留为最高优先覆盖。仅 user/managed 层被
|
|
40551
40549
|
* 尊重(预算防的就是项目层提示风暴,项目自调即越界)。
|
|
@@ -40637,13 +40635,13 @@ var TansrConfigSchema = z4.object({
|
|
|
40637
40635
|
fallbacks: z4.record(z4.array(z4.string())).default({}),
|
|
40638
40636
|
locale: z4.string().optional(),
|
|
40639
40637
|
/**
|
|
40640
|
-
* 生命周期 hooks(contract-v0.3
|
|
40638
|
+
* 生命周期 hooks(contract-v0.3)。分层合并语义特殊:不走深合并,
|
|
40641
40639
|
* 由 kernel 逐层抽取(条目按层优先级稳定排序、跨层同构去重、managed 控制
|
|
40642
40640
|
* 位治理),详见 kernel hooks/config.ts。
|
|
40643
40641
|
*/
|
|
40644
40642
|
hooks: HooksSectionSchema.optional(),
|
|
40645
40643
|
/**
|
|
40646
|
-
* MCP 服务器清单(contract-v0.4
|
|
40644
|
+
* MCP 服务器清单(contract-v0.4)。分层合并语义特殊:不走深合并,
|
|
40647
40645
|
* 由 kernel 逐层抽取(跨层同名高层胜 + 信任门分层归因),详见 kernel
|
|
40648
40646
|
* tools/mcp/config.ts 与 cli assembly/mcp-trust.ts。
|
|
40649
40647
|
*/
|
|
@@ -40676,7 +40674,7 @@ var TansrConfigSchema = z4.object({
|
|
|
40676
40674
|
audit: AuditSectionSchema.optional(),
|
|
40677
40675
|
/** 策略包验签信任(contract-v0.8,RFC-OPT11-2);仅 managed 层被尊重 */
|
|
40678
40676
|
policy: PolicySectionSchema.optional(),
|
|
40679
|
-
/** Shell 沙箱(contract-v0.8
|
|
40677
|
+
/** Shell 沙箱(contract-v0.8);kernel 合并前抽取:user / managed 被尊重,项目层忽略,env 对 managed 只收紧 */
|
|
40680
40678
|
sandbox: SandboxSectionSchema.optional(),
|
|
40681
40679
|
/** 工作区信任治理(contract-v0.8,RFC-OPT12-2);仅 managed 层被尊重 */
|
|
40682
40680
|
workspaceTrust: WorkspaceTrustSectionSchema.optional(),
|
|
@@ -46703,27 +46701,27 @@ var ContextManager = class {
|
|
|
46703
46701
|
return this.#thresholds;
|
|
46704
46702
|
}
|
|
46705
46703
|
/**
|
|
46706
|
-
* 附件注册表观测快照(只读;/context
|
|
46707
|
-
*
|
|
46704
|
+
* 附件注册表观测快照(只读;/context 展示与压缩诊断,不属于七接口)。
|
|
46705
|
+
* 完整快照(在场附件数/逐条 TTL 剩余/估算 tokens/预算),
|
|
46708
46706
|
* 旧形态 {round, injectedBytes} 是其结构子集,消费方零迁移。
|
|
46709
46707
|
*/
|
|
46710
46708
|
get attachmentStats() {
|
|
46711
46709
|
return this.#attachments.snapshot();
|
|
46712
46710
|
}
|
|
46713
|
-
/**
|
|
46711
|
+
/** nothing_to_compact no-op 累计(只读观测;压缩生命周期埋点消费) */
|
|
46714
46712
|
get noopCompactCount() {
|
|
46715
46713
|
return this.#noopCompactCount;
|
|
46716
46714
|
}
|
|
46717
46715
|
/**
|
|
46718
|
-
*
|
|
46719
|
-
*
|
|
46716
|
+
* EWMA 校准因子(只读观测;1 = 未校准或刚重置)。
|
|
46717
|
+
* bucketedCalibration 门开时标量路径不更新(恒 1),分桶态看 calibrationState()。
|
|
46720
46718
|
*/
|
|
46721
46719
|
get calibrationFactor() {
|
|
46722
46720
|
return this.#calibrationFactor;
|
|
46723
46721
|
}
|
|
46724
46722
|
/**
|
|
46725
|
-
*
|
|
46726
|
-
* 门关:buckets 恒空数组 + factor = 标量因子(
|
|
46723
|
+
* 校准态快照(只读观测;/context 展示与锁测消费)。
|
|
46724
|
+
* 门关:buckets 恒空数组 + factor = 标量因子(单标量 EWMA 现状态)。
|
|
46727
46725
|
*/
|
|
46728
46726
|
calibrationState() {
|
|
46729
46727
|
return {
|
|
@@ -46736,13 +46734,13 @@ var ContextManager = class {
|
|
|
46736
46734
|
lastBucket: this.#lastBucket
|
|
46737
46735
|
};
|
|
46738
46736
|
}
|
|
46739
|
-
/**
|
|
46737
|
+
/** 跨 manager 重建搬运出口(driver 切方案携带;切模不携带) */
|
|
46740
46738
|
exportCalibration() {
|
|
46741
46739
|
return this.calibrationState();
|
|
46742
46740
|
}
|
|
46743
46741
|
/**
|
|
46744
|
-
*
|
|
46745
|
-
*
|
|
46742
|
+
* 搬运入口:**仅门开时生效**(门关 no-op——基线标量路径的
|
|
46743
|
+
* 重建归零语义是既定行为,导入会构成漂移)。因子按钳制域收
|
|
46746
46744
|
* 口、观测数取非负整数(防手工快照越界);配对基线不搬(旧测量对旧
|
|
46747
46745
|
* 历史,新实例首次 measure 自然重建)。
|
|
46748
46746
|
*/
|
|
@@ -46757,29 +46755,29 @@ var ContextManager = class {
|
|
|
46757
46755
|
this.#lastBucket = snapshot.lastBucket;
|
|
46758
46756
|
}
|
|
46759
46757
|
/**
|
|
46760
|
-
*
|
|
46758
|
+
* 登记压缩后必须失效/重置的外部派生态(装配层调用;如
|
|
46761
46759
|
* reminder 首屏差分基线)。压缩成功后按「内置清单 → 登记序」统一执行;
|
|
46762
46760
|
* run 抛错被吞(fail-open),不影响压缩收尾与其余清单项。
|
|
46763
46761
|
*/
|
|
46764
46762
|
registerPostCompactInvalidation(entry2) {
|
|
46765
46763
|
this.#postCompactInvalidations.push(entry2);
|
|
46766
46764
|
}
|
|
46767
|
-
/**
|
|
46765
|
+
/** 失效清单登记名快照(观测/锁测断言;含内置三件) */
|
|
46768
46766
|
get postCompactInvalidationIds() {
|
|
46769
46767
|
return this.#postCompactInvalidations.map((entry2) => entry2.id);
|
|
46770
46768
|
}
|
|
46771
46769
|
/**
|
|
46772
|
-
*
|
|
46770
|
+
* 派生态失效清单的公开执行入口(统一应用器消费:非 baseline
|
|
46773
46771
|
* 策略的历史折叠变换应用后,由应用器调用本方法统一失效锚点/附件签名/
|
|
46774
46772
|
* 校准态与外部登记项)。baseline 的 compact/microcompact 路径**不经**
|
|
46775
46773
|
* 本入口——manager 内建执行时序在 measurementAfter 之前(压缩后测量
|
|
46776
46774
|
* 必须基于失效后的干净状态),应用器侧重复执行会清空刚建立的校准配对
|
|
46777
|
-
* 基线(
|
|
46775
|
+
* 基线(校准链漂移),故 baseline 变换标记 invalidations='strategy'。
|
|
46778
46776
|
*/
|
|
46779
46777
|
runPostCompactInvalidations() {
|
|
46780
46778
|
this.#runPostCompactInvalidations();
|
|
46781
46779
|
}
|
|
46782
|
-
/**
|
|
46780
|
+
/** 清单统一执行(仅压缩成功路径调用;逐项 fail-open) */
|
|
46783
46781
|
#runPostCompactInvalidations() {
|
|
46784
46782
|
for (const entry2 of this.#postCompactInvalidations) {
|
|
46785
46783
|
try {
|
|
@@ -46789,7 +46787,7 @@ var ContextManager = class {
|
|
|
46789
46787
|
}
|
|
46790
46788
|
}
|
|
46791
46789
|
/**
|
|
46792
|
-
*
|
|
46790
|
+
* 屏障点计时(半开熔断的时基):查询环每个压缩屏障点调用一次。
|
|
46793
46791
|
* 熔断压制期间每计满 AUTO_COMPACT_HALF_OPEN_BARRIERS 个屏障,assess 放行
|
|
46794
46792
|
* 一次探测压缩(成功清零熔断计数恢复正常,失败继续压制);任何 auto 压缩
|
|
46795
46793
|
* 尝试(含探测与 no-op)都会清零本计时,压制期的失败信息因此有界
|
|
@@ -46800,7 +46798,7 @@ var ContextManager = class {
|
|
|
46800
46798
|
this.#barrierSeq += 1;
|
|
46801
46799
|
}
|
|
46802
46800
|
/**
|
|
46803
|
-
*
|
|
46801
|
+
* 观测缝只读出口:查询环/空闲直压据此把 observer 交给统一
|
|
46804
46802
|
* 应用器(成功结局签发)与工具结果收束缝(clamp 计数)。外部注入 manager
|
|
46805
46803
|
* 形态下构造方持有的观测缝经此对查询环可达。
|
|
46806
46804
|
*/
|
|
@@ -46821,11 +46819,11 @@ var ContextManager = class {
|
|
|
46821
46819
|
this.#updateCacheHitRatio(entry2.usage);
|
|
46822
46820
|
this.#attachments.advanceRound();
|
|
46823
46821
|
}
|
|
46824
|
-
/**
|
|
46822
|
+
/** 请求观测与固定面使用同一基础估算器,尤其外部注入manager时。 */
|
|
46825
46823
|
get requestEstimator() {
|
|
46826
46824
|
return this.#estimator;
|
|
46827
46825
|
}
|
|
46828
|
-
/**
|
|
46826
|
+
/** 主模型/客户端绑定改变时旧tokenizer观测不能沿用。 */
|
|
46829
46827
|
bindRequestModel(model, client) {
|
|
46830
46828
|
const key2 = JSON.stringify(model);
|
|
46831
46829
|
if (this.#requestBinding !== void 0 && (this.#requestBinding.client !== client || this.#requestBinding.model !== key2)) {
|
|
@@ -46856,7 +46854,7 @@ var ContextManager = class {
|
|
|
46856
46854
|
this.#ledger.discardSentRequest(receipt);
|
|
46857
46855
|
}
|
|
46858
46856
|
/**
|
|
46859
|
-
*
|
|
46857
|
+
* 请求固定输入(如 system 段)变化后,旧权威 usage 不再代表当前前缀。
|
|
46860
46858
|
* 只失效测量锚点和待配对校准基线,使下一次 measure 全量计入新 system;
|
|
46861
46859
|
* 已学习密度因子、累计用量、附件/TTL、历史 pin、压缩熔断均保留。
|
|
46862
46860
|
* 不等同历史压缩,不能运行 postCompact 失效清单;调用方须先判断实际输入已变化,
|
|
@@ -46866,7 +46864,7 @@ var ContextManager = class {
|
|
|
46866
46864
|
this.#ledger.resetAnchor();
|
|
46867
46865
|
}
|
|
46868
46866
|
/**
|
|
46869
|
-
*
|
|
46867
|
+
* 缓存命中率 EWMA(观测口径见模块常量注释)。分母 =
|
|
46870
46868
|
* 权威输入合计(input+cacheRead+cacheCreation,与校准闭环同一口径);
|
|
46871
46869
|
* 非正分母(空轮防御)跳过观测。首个观测直接落座(无先验不掺水)。
|
|
46872
46870
|
*/
|
|
@@ -46878,7 +46876,7 @@ var ContextManager = class {
|
|
|
46878
46876
|
this.#cacheHitRatio = this.#cacheHitRatio === null ? observed2 : CACHE_HIT_EWMA_ALPHA * observed2 + (1 - CACHE_HIT_EWMA_ALPHA) * this.#cacheHitRatio;
|
|
46879
46877
|
}
|
|
46880
46878
|
/**
|
|
46881
|
-
*
|
|
46879
|
+
* 当前缓存命中率 EWMA 只读出口(null = 尚无观测)。消费方:
|
|
46882
46880
|
* baseline 策略缓存感知门 + microcompact 观测材料。
|
|
46883
46881
|
*/
|
|
46884
46882
|
cacheHitRatio() {
|
|
@@ -46886,10 +46884,10 @@ var ContextManager = class {
|
|
|
46886
46884
|
}
|
|
46887
46885
|
// ———— 接口 2:measure(§3.6① 出账) ————
|
|
46888
46886
|
/**
|
|
46889
|
-
* 测量当前上下文占用:锚点权威计量 +
|
|
46890
|
-
*
|
|
46887
|
+
* 测量当前上下文占用:锚点权威计量 + 本地估算尾部,六路分解。
|
|
46888
|
+
* 消息尾部经校准因子微调,system/tools 保持基础估算。
|
|
46891
46889
|
* 本次测量独立留基线,实际发送方 prepareSentRequest 后才可配对 usage。
|
|
46892
|
-
*
|
|
46890
|
+
* bucketedCalibration 门开:估算前按 ledger 同一锚点判定取尾部范围并归桶
|
|
46893
46891
|
* (classifyTailBucket),应用缝随之切到该桶因子;基线记录归桶与锚点
|
|
46894
46892
|
* 口径供观测入账。门关零触碰(#lastBucket 不更新,分桶 Map 恒空)。
|
|
46895
46893
|
*/
|
|
@@ -46915,7 +46913,7 @@ var ContextManager = class {
|
|
|
46915
46913
|
return measurement;
|
|
46916
46914
|
}
|
|
46917
46915
|
/**
|
|
46918
|
-
*
|
|
46916
|
+
* 请求装配后新增尾材料的只读计额。只比较受影响尾消息,
|
|
46919
46917
|
* 使用当前测量已选定的校准因子;不刷新桶/配对基线/锚点,也不全量 measure。
|
|
46920
46918
|
* before 缺席表示新增一条消息,按账本同口径包含消息定额。
|
|
46921
46919
|
*/
|
|
@@ -47030,7 +47028,7 @@ var ContextManager = class {
|
|
|
47030
47028
|
// ———— 接口 3:assess(§3.6②⑤ 阈值评估) ————
|
|
47031
47029
|
/**
|
|
47032
47030
|
* 水位评估:测量 → 阈值代数 → 区带/触发建议;熔断中压制自动压缩建议。
|
|
47033
|
-
*
|
|
47031
|
+
* 半开探测:压制期间每隔 AUTO_COMPACT_HALF_OPEN_BARRIERS 个屏障点
|
|
47034
47032
|
* (noteBarrier 计时)放行一次探测压缩——探测成功由 compact 清零计数
|
|
47035
47033
|
* 恢复正常,失败继续压制。本方法只读(计时推进在 noteBarrier/compact)。
|
|
47036
47034
|
*/
|
|
@@ -47038,13 +47036,13 @@ var ContextManager = class {
|
|
|
47038
47036
|
return this.assessMeasurement(this.measure(view));
|
|
47039
47037
|
}
|
|
47040
47038
|
/**
|
|
47041
|
-
*
|
|
47039
|
+
* 以既有测量做阈值评估(不重新 measure):同一
|
|
47042
47040
|
* 屏障内 microcompact 之后的 compact 判定复用其 measurementAfter,消除
|
|
47043
47041
|
* 「同屏障二次全量估算」——第二次估算与淘汰选量投影可能相互矛盾,
|
|
47044
47042
|
* 淘汰刚回收完又立刻整体压缩的同屏障双压由此根治。熔断/半开语义与
|
|
47045
47043
|
* assess 完全一致(同为只读;计时推进在 noteBarrier/compact)。
|
|
47046
|
-
*
|
|
47047
|
-
* 「低置信留更大边际」——桶内观测不足时尾部估算加临时边际,宁可早压
|
|
47044
|
+
* bucketedCalibration 门开:水位判定按 contextTokens + 置信度安全边际
|
|
47045
|
+
* (「低置信留更大边际」——桶内观测不足时尾部估算加临时边际,宁可早压
|
|
47048
47046
|
* 不越界;观测饱和边际归零)。边际只进决策,measurement 如实不动;
|
|
47049
47047
|
* 明细随 assessment.calibration 在场。门关零漂移(边际恒缺席)。
|
|
47050
47048
|
*/
|
|
@@ -47145,8 +47143,7 @@ var ContextManager = class {
|
|
|
47145
47143
|
* 预算语义,恒不提醒;autoCompactAt < 启用下限(20K)同样恒不提醒——
|
|
47146
47144
|
* 提醒自身 ~100 tokens,极小预算下注入本身即可观挤兑(玩具窗实测把
|
|
47147
47145
|
* 水位推回压缩线引发压缩连锁),成本占比论证见 entry-budgets 常量注释。
|
|
47148
|
-
* 占用入参由查询环钳制点透传(同屏障同一测量,不新增 measure
|
|
47149
|
-
* T-CTX13-② 口径纪律)。
|
|
47146
|
+
* 占用入参由查询环钳制点透传(同屏障同一测量,不新增 measure 调用)。
|
|
47150
47147
|
*/
|
|
47151
47148
|
takeContextBudgetReminder(contextTokens) {
|
|
47152
47149
|
const budget = this.#thresholds.autoCompactAt;
|
|
@@ -47163,7 +47160,7 @@ var ContextManager = class {
|
|
|
47163
47160
|
);
|
|
47164
47161
|
return { tier, remainingTokens };
|
|
47165
47162
|
}
|
|
47166
|
-
/**
|
|
47163
|
+
/** 预算提醒两档复位(压缩/硬截断成功 = 预算新纪元) */
|
|
47167
47164
|
#resetBudgetReminderTiers() {
|
|
47168
47165
|
this.#budgetReminderFired.low = false;
|
|
47169
47166
|
this.#budgetReminderFired.critical = false;
|
|
@@ -47172,9 +47169,9 @@ var ContextManager = class {
|
|
|
47172
47169
|
/**
|
|
47173
47170
|
* 标记消息为 pinned:压缩时其所在完整 round 整体保留(round 粒度,保配对)。
|
|
47174
47171
|
*
|
|
47175
|
-
*
|
|
47176
|
-
* 换新对象即丢标——microcompact 存根替换径已明文豁免 pinned(
|
|
47177
|
-
*
|
|
47172
|
+
* **对象身份契约**:pin 按消息对象引用标记(WeakSet),
|
|
47173
|
+
* 换新对象即丢标——microcompact 存根替换径已明文豁免 pinned(pin 承诺完整
|
|
47174
|
+
* 保留,见 #microcompact planOptions);但查询环 meta 合并径(run-query 末条
|
|
47178
47175
|
* user 消息整体换新对象)未防,**末条 user 消息的 pin 可能因 meta 合并
|
|
47179
47176
|
* 静默失效**。现状 pin()/unpin() 无生产调用方(全仓仅测试),按设计债
|
|
47180
47177
|
* 登记不改行为;若未来接线生产消费方,改法二选一:meta 合并改就地追加
|
|
@@ -47193,7 +47190,7 @@ var ContextManager = class {
|
|
|
47193
47190
|
/**
|
|
47194
47191
|
* 手动锚点登记(/pin <text>):过短/空文本返回 null;重复登记升级为
|
|
47195
47192
|
* 手动源(用户显式确认抽取锚点)并回报 duplicate=true。新鲜度取当前
|
|
47196
|
-
* 会话 round;估算用 base 估算器(
|
|
47193
|
+
* 会话 round;估算用 base 估算器(登记时一次性,与附件注册表同纪律)。
|
|
47197
47194
|
*/
|
|
47198
47195
|
pinAnchor(text) {
|
|
47199
47196
|
return this.#anchors.pin(
|
|
@@ -47315,15 +47312,15 @@ var ContextManager = class {
|
|
|
47315
47312
|
* 执行一次压缩:制定 round 粒度计划 → 注入的 ModelClient 打一轮完整
|
|
47316
47313
|
* API round → 产出摘要消息、压缩后消息数组与 session.compacted 所需数据。
|
|
47317
47314
|
* 成功后:测量锚点重置(旧 anchorIndex 失效)、附件签名清空(引用目标
|
|
47318
|
-
* 已被摘要替换)
|
|
47315
|
+
* 已被摘要替换)、自动熔断计数清零、校准态重置。失败(含无
|
|
47319
47316
|
* 可压缩)不改动任何输入。
|
|
47320
|
-
*
|
|
47317
|
+
* 观测缝:观测材料(CompactionObservation)恒随 outcome
|
|
47321
47318
|
* 返回;**成功结局的 started/finished 由统一应用器签发**(折叠效果的
|
|
47322
47319
|
* 必经之门),失败/no-op 结局不经应用器、保留本方法返回面签发(回调
|
|
47323
47320
|
* 异常吞掉,fail-open 不影响压缩主链)。直调本方法的消费方(不经应用器)
|
|
47324
47321
|
* 对成功结局自行消费 outcome.observation。
|
|
47325
47322
|
*
|
|
47326
|
-
*
|
|
47323
|
+
* **非重入契约**:compact/microcompact 的 await 窗口
|
|
47327
47324
|
* 无重入护栏——并发调用会交错破坏账本/校准基线/派生态失效清单的时序。
|
|
47328
47325
|
* 互斥责任在装配层:查询环屏障点单点调用、空闲直压与查询环互斥(driver
|
|
47329
47326
|
* 纪律),现状全部调用面守住。第三方直调本 API 须自行保证同一实例上
|
|
@@ -54421,35 +54418,35 @@ var PermissionEngine = class {
|
|
|
54421
54418
|
/** 规则编译结果按 cwd 缓存(路径模式的相对锚定依赖 cwd) */
|
|
54422
54419
|
compiledByCwd = /* @__PURE__ */ new Map();
|
|
54423
54420
|
sessionCache = [];
|
|
54424
|
-
/** 已装载 PolicyBundle 清单(
|
|
54421
|
+
/** 已装载 PolicyBundle 清单(装载可观测性的事实源) */
|
|
54425
54422
|
loadedBundles = [];
|
|
54426
54423
|
/** 内置安全基线(OPT-04;关闭时两组皆空,判定段整体短路) */
|
|
54427
54424
|
baselineDeny;
|
|
54428
54425
|
baselineExceptions;
|
|
54429
|
-
/**
|
|
54426
|
+
/** 灾难基线(与基线同开关):bypass 分支单独匹配,命中转 ask */
|
|
54430
54427
|
disasterBaselineDeny;
|
|
54431
|
-
/** protected paths(
|
|
54428
|
+
/** protected paths(与基线同开关;家目录不可规范解析时仅剩段保护) */
|
|
54432
54429
|
protectedPathsEnabled;
|
|
54433
54430
|
homeCanonical;
|
|
54434
54431
|
/** TMEM/1 carve-out(4.95 段):canonical + 大小写折叠后的记忆目录集;空集 = 缝不在场 */
|
|
54435
54432
|
memoryCarveOutDirs;
|
|
54436
54433
|
memoryCarveOutCaseInsensitive;
|
|
54437
|
-
/** hard-safety 追加面(
|
|
54434
|
+
/** hard-safety 追加面(内置子集恒启用,本配置只追加 egress/审计目录) */
|
|
54438
54435
|
hardSafetyConfig;
|
|
54439
|
-
/** 会话污点(
|
|
54436
|
+
/** 会话污点(跨调用窄实现):秘密面被读取后置真,egress/publish 恒 ask */
|
|
54440
54437
|
secretTainted = false;
|
|
54441
54438
|
/** LLM 权限分类器(OPT-18;缺省不注入 = 无分类器路径) */
|
|
54442
54439
|
classifierConfig;
|
|
54443
|
-
/** 分类器熔断状态(
|
|
54440
|
+
/** 分类器熔断状态(3 连拒 30min 冷却 / 会话累计 20 拒停用) */
|
|
54444
54441
|
classifierDenyTotal = 0;
|
|
54445
54442
|
classifierDenyStreak = 0;
|
|
54446
54443
|
classifierBreakerUntil = null;
|
|
54447
54444
|
/** 累计跳闸次数(K19f 指标口;人工复位不清零——历史是历史) */
|
|
54448
54445
|
classifierTripCount = 0;
|
|
54449
|
-
/** 分类器咨询预算记账(
|
|
54446
|
+
/** 分类器咨询预算记账(计实际模型咨询;耗尽后直通 ask) */
|
|
54450
54447
|
classifierConsultCount = 0;
|
|
54451
54448
|
classifierBudgetNotified = false;
|
|
54452
|
-
/** 分类器窄缓存(
|
|
54449
|
+
/** 分类器窄缓存(仅只读输入的 safe 裁定;键全字段) */
|
|
54453
54450
|
classifierCache = /* @__PURE__ */ new Map();
|
|
54454
54451
|
classifierCacheHits = 0;
|
|
54455
54452
|
classifierCacheMisses = 0;
|
|
@@ -54506,7 +54503,7 @@ var PermissionEngine = class {
|
|
|
54506
54503
|
return removed;
|
|
54507
54504
|
}
|
|
54508
54505
|
/**
|
|
54509
|
-
* 装载 PolicyBundle 规则集为 policy 层规则(
|
|
54506
|
+
* 装载 PolicyBundle 规则集为 policy 层规则(集中策略分发接缝)。
|
|
54510
54507
|
*
|
|
54511
54508
|
* - 验证不通过(rejected/unsupported)或 meta.id 已装载过的 bundle
|
|
54512
54509
|
* 整体跳过,返回值携带原因(装载可观测性);
|
|
@@ -54755,7 +54752,7 @@ var PermissionEngine = class {
|
|
|
54755
54752
|
return { decision: "ask", source: "mode" };
|
|
54756
54753
|
}
|
|
54757
54754
|
/**
|
|
54758
|
-
* R0 Shell 只读判定(
|
|
54755
|
+
* R0 Shell 只读判定(管线 7.5 段与 plan 豁免共用)。返回:
|
|
54759
54756
|
* - allow(source='builtin',matchedRule=`read-only(<段标签>)`):结构
|
|
54760
54757
|
* 入围且探针全过;
|
|
54761
54758
|
* - deny(source='builtin',matchedRule=`read-only-probe(<实参>)`):结构
|
|
@@ -54819,25 +54816,25 @@ var PermissionEngine = class {
|
|
|
54819
54816
|
return resolved.kind === "ok" ? resolved.path : null;
|
|
54820
54817
|
}
|
|
54821
54818
|
/**
|
|
54822
|
-
* LLM 分类器终裁口(
|
|
54819
|
+
* LLM 分类器终裁口(contract-v0.8 auto 模式起):
|
|
54823
54820
|
* - base 非 ask 或未注入分类器 → **同步**原样返回(零开销直通,调用方的
|
|
54824
54821
|
* 同步快路径不受影响;auto 未注入分类器时,快路径外的输入与 default
|
|
54825
54822
|
* 逐字节一致——工作区快路径本身在 decide 内,不依赖分类器);
|
|
54826
|
-
* - **auto-only
|
|
54823
|
+
* - **auto-only 缺省**:非 auto 模式同步直通 ask——询问面本就有
|
|
54827
54824
|
* 人裁,不花模型钱;`tightenOutsideAuto=true` 才咨询,且只收紧
|
|
54828
54825
|
* (softenToAllow 非 auto 恒 false,safe 维持 ask);
|
|
54829
|
-
* -
|
|
54826
|
+
* - **窄缓存**:只读输入的 safe 裁定按全字段键复用
|
|
54830
54827
|
* (免咨询;资格守卫仍每次现算);写改类输入不查不存;
|
|
54831
|
-
* -
|
|
54828
|
+
* - **调用预算**:实际模型咨询计数达 callBudget(缺省 200)后
|
|
54832
54829
|
* 同步直通 ask(超限改询问;onBudgetExhausted 单次上报);
|
|
54833
|
-
* -
|
|
54830
|
+
* - **熔断先行**:分类器 reject 连续 3 次 → 30min
|
|
54834
54831
|
* 冷却(期满自动复位,连拒计数清零);会话累计 20 次 → 本会话停用。
|
|
54835
54832
|
* 记账按裁决人 reject 计,与 rejectEffect 落地形无关(doc/113)。熔断
|
|
54836
54833
|
* 期间同步原样返回 ask(交回询问面;headless 按既有语义降 deny)。
|
|
54837
54834
|
* 跳闸时经 config.onBreakerTrip 单次上报(内核零 IO);任何非 reject 的
|
|
54838
54835
|
* 咨询终局(safe/unsure/超时/抛错)都会清零连拒计数——期间用户注意力
|
|
54839
|
-
* 已经或即将介入;人工恢复口见 resetClassifierBreaker
|
|
54840
|
-
* 「批准即恢复」:两档皆复位,仅交互面用户显式批准后可调);
|
|
54836
|
+
* 已经或即将介入;人工恢复口见 resetClassifierBreaker
|
|
54837
|
+
* (「批准即恢复」:两档皆复位,仅交互面用户显式批准后可调);
|
|
54841
54838
|
* - base 为 ask 且注入了分类器 → 异步咨询:
|
|
54842
54839
|
* · `unsafe` → 收紧,source 记 'classifier'(RFC-OPT18-3 专属审计归因),
|
|
54843
54840
|
* matchedRule 保留,**reason 携带分类器理由**;落地形按
|
|
@@ -54846,7 +54843,7 @@ var PermissionEngine = class {
|
|
|
54846
54843
|
* 终审(询问面缺席由调度器地板降 deny)——收紧在**一切模式**下生效
|
|
54847
54844
|
* (OPT-18 既有机制语义不变);
|
|
54848
54845
|
* · `safe` → 仅 auto 模式(RFC-OPT18-1)且**生效资格档半径覆盖该调用
|
|
54849
|
-
* 面**时(
|
|
54846
|
+
* 面**时(SOFTEN_RADIUS[resolveTier()][face],档位
|
|
54850
54847
|
* 解析闭包每次咨询现算)放行为 allow,source 记 'classifier',reason
|
|
54851
54848
|
* 同携带;且须通过与模式放行同级的资格守卫(目标可解析、路径非
|
|
54852
54849
|
* UNC、内置基线复查不命中——ask 规则命中时管线 4.5 段未评估,
|
|
@@ -54855,7 +54852,7 @@ var PermissionEngine = class {
|
|
|
54855
54852
|
* 松动,且 deny 规则/基线永不受软化——deny 路径根本不进本方法);
|
|
54856
54853
|
* · `unsure`/超时/抛错 → 维持 ask 原样(fail-degrade,不改变既有语义)。
|
|
54857
54854
|
* - Shell 工具附命令结构树(command-structure.ts);注入了 transcript
|
|
54858
|
-
* 提供器且切片非空时附当前轮用户请求(
|
|
54855
|
+
* 提供器且切片非空时附当前轮用户请求(注入防御语义见 classifier.ts)。
|
|
54859
54856
|
* - 模式在咨询发起时定格(异步窗口内 setMode 不追溯本次终裁)。
|
|
54860
54857
|
*/
|
|
54861
54858
|
consultClassifier(input, base) {
|
|
@@ -54888,7 +54885,7 @@ var PermissionEngine = class {
|
|
|
54888
54885
|
return this.adjudicateByClassifier(input, base, this.classifierConfig, softenToAllow, cacheKey);
|
|
54889
54886
|
}
|
|
54890
54887
|
/**
|
|
54891
|
-
*
|
|
54888
|
+
* 共享咨询预算消耗口:权限分类器与派生裁决查询
|
|
54892
54889
|
* **共用同一预算池**(callBudget 上限 + 同一计数器)——两类模型咨询
|
|
54893
54890
|
* 合计不超预算,避免两个口子各自失控。false = 预算耗尽(调用方按各自
|
|
54894
54891
|
* 方向安全语义降级:分类器直通 ask,裁决查询结构性 escalate);耗尽
|
|
@@ -54908,11 +54905,10 @@ var PermissionEngine = class {
|
|
|
54908
54905
|
return true;
|
|
54909
54906
|
}
|
|
54910
54907
|
/**
|
|
54911
|
-
*
|
|
54908
|
+
* 生效资格档解析:解析闭包在场即**现算**(装配层合成
|
|
54912
54909
|
* min(entry, ceiling, override);闭包抛错 → 'none',词表外脏值由
|
|
54913
|
-
* softenRadiusAllows
|
|
54914
|
-
* 恒 'none'(
|
|
54915
|
-
* 已随 P4-C3 拆除,2026-08-30)。
|
|
54910
|
+
* softenRadiusAllows 安全查表兜底——一切异常朝严);闭包缺席
|
|
54911
|
+
* 恒 'none'(无任命即无软化面;早先的布尔位 qualifiedForAllow 已拆除)。
|
|
54916
54912
|
*/
|
|
54917
54913
|
resolveClassifierTier(config) {
|
|
54918
54914
|
const resolve = config.resolveQualificationTier;
|
|
@@ -54926,8 +54922,8 @@ var PermissionEngine = class {
|
|
|
54926
54922
|
}
|
|
54927
54923
|
}
|
|
54928
54924
|
/**
|
|
54929
|
-
*
|
|
54930
|
-
* 半径与分类器软化共用**同一资格链事实源**(
|
|
54925
|
+
* 生效资格档公共查询口:派生裁决链的 auto 父终审
|
|
54926
|
+
* 半径与分类器软化共用**同一资格链事实源**(「换裁决人不换半径」)
|
|
54931
54927
|
* ——装配层经此口取生效档喂执行器的 endorseFinalizeTier。未注入分类器
|
|
54932
54928
|
* 配置 = 'none'(无在册资格即无自动化裁决面,半径 0);解析异常朝严
|
|
54933
54929
|
* (resolveClassifierTier 已兜 'none')。每次调用现算(validUntil 越期/
|
|
@@ -54937,7 +54933,7 @@ var PermissionEngine = class {
|
|
|
54937
54933
|
if (this.classifierConfig === void 0) return "none";
|
|
54938
54934
|
return this.resolveClassifierTier(this.classifierConfig);
|
|
54939
54935
|
}
|
|
54940
|
-
/** 窄缓存统计快照(
|
|
54936
|
+
/** 窄缓存统计快照(命中率数据;自检面消费) */
|
|
54941
54937
|
getClassifierCacheStats() {
|
|
54942
54938
|
return {
|
|
54943
54939
|
hits: this.classifierCacheHits,
|
|
@@ -54946,7 +54942,7 @@ var PermissionEngine = class {
|
|
|
54946
54942
|
};
|
|
54947
54943
|
}
|
|
54948
54944
|
/**
|
|
54949
|
-
* 咨询用量快照(
|
|
54945
|
+
* 咨询用量快照(/permissions 状态面板消费,零 IO):budget =
|
|
54950
54946
|
* 生效预算(与 consultClassifier 记账同一裁决:config.callBudget ??
|
|
54951
54947
|
* 缺省;非有限值 = 不限)。未注入分类器时如实返回零咨询 + 缺省预算。
|
|
54952
54948
|
*/
|
|
@@ -54959,7 +54955,7 @@ var PermissionEngine = class {
|
|
|
54959
54955
|
};
|
|
54960
54956
|
}
|
|
54961
54957
|
/**
|
|
54962
|
-
* 窄缓存键(
|
|
54958
|
+
* 窄缓存键(键全字段):**仅只读输入**入围(写入/删除/
|
|
54963
54959
|
* 发布/权限修改不得复用 safe 缓存——isReadOnly 非 true 一律返回 null,
|
|
54964
54960
|
* 即不查不存);键 = 工具 + 规范化参数 + cwd + 模式 + 版本标签(装配层
|
|
54965
54961
|
* 以协议指纹+stage 模型对构造)+ 策略束集(id+version)+ transcript
|
|
@@ -55176,7 +55172,7 @@ var PermissionEngine = class {
|
|
|
55176
55172
|
}
|
|
55177
55173
|
// -------------------------------------------------------------------------
|
|
55178
55174
|
/**
|
|
55179
|
-
* allow
|
|
55175
|
+
* allow 侧有效规则集:auto 模式丢弃授予任意代码执行的宽规则
|
|
55180
55176
|
* (broad-allow.ts 谓词),窄规则保留;其余模式原集直通。求值期过滤,
|
|
55181
55177
|
* 不改写配置——退出 auto 即恢复。管线第 6 段与基线 4.5 段的配置 allow
|
|
55182
55178
|
* 中和统一走本口(第 7 段会话缓存在 matchCache 内同口径过滤)。
|
|
@@ -55186,7 +55182,7 @@ var PermissionEngine = class {
|
|
|
55186
55182
|
return this.ruleSets.allow.filter((rule) => !isBroadExecutionAllowRule(rule.parsed));
|
|
55187
55183
|
}
|
|
55188
55184
|
/**
|
|
55189
|
-
* auto 模式下被丢弃的宽 allow 规则清单(层归因 +
|
|
55185
|
+
* auto 模式下被丢弃的宽 allow 规则清单(层归因 + 原文;可见性口)。
|
|
55190
55186
|
* 丢弃是求值期行为(effectiveAllowRules 过滤,配置不改写),此前对用户
|
|
55191
55187
|
* 完全静默——「规则写了却不生效」必须可见,否则用户会误判配置生效面。
|
|
55192
55188
|
* 非 auto 模式恒空:只报告实际发生的丢弃,不报告假设。
|
|
@@ -55208,7 +55204,7 @@ var PermissionEngine = class {
|
|
|
55208
55204
|
rules.splice(index, 0, { layer: "policy", parsed });
|
|
55209
55205
|
}
|
|
55210
55206
|
/**
|
|
55211
|
-
* ask 规则按信任层分位视图(
|
|
55207
|
+
* ask 规则按信任层分位视图(INV-4):受信层(policy/user)在 §2.5 先于
|
|
55212
55208
|
* bypass/基线求值(显式审批义务,INV-3);项目层(projectLocal/projectShared)
|
|
55213
55209
|
* 在 §4.9 后于基线/保护面/污点求值——只收紧不遮蔽 deny。按需过滤而非
|
|
55214
55210
|
* 构造期快照:loadPolicyBundles 运行期注入 policy ask(insertPolicyRule),
|
|
@@ -55280,7 +55276,7 @@ var PermissionEngine = class {
|
|
|
55280
55276
|
return hit.raw;
|
|
55281
55277
|
}
|
|
55282
55278
|
/**
|
|
55283
|
-
*
|
|
55279
|
+
* 灾难基线匹配(bypass 分支专用)。命中返回灾难规则 raw,否则
|
|
55284
55280
|
* null。与 matchBaseline 的区别:①只扫灾难子集(不含秘密面);②**不做
|
|
55285
55281
|
* 配置 allow 中和**——bypass 本身即宽放行意图,灾难地板不容 allow 抵消
|
|
55286
55282
|
* (否则 `allow:['Shell']` + bypass 又放走 rm -rf /);③无例外面。
|
|
@@ -55309,7 +55305,7 @@ var PermissionEngine = class {
|
|
|
55309
55305
|
}
|
|
55310
55306
|
/**
|
|
55311
55307
|
* deny/ask 侧扫描:按层优先级顺序,首个命中即返回(归因到最高层)。
|
|
55312
|
-
* 工具名判定统一走 ruleMatchesTool(
|
|
55308
|
+
* 工具名判定统一走 ruleMatchesTool(精确相等 + MCP 服务器级通配;
|
|
55313
55309
|
* 匹配语义全部落在 rules.ts,引擎只做接线)。
|
|
55314
55310
|
*/
|
|
55315
55311
|
matchRestrict(rules, input, target) {
|
|
@@ -55322,7 +55318,7 @@ var PermissionEngine = class {
|
|
|
55322
55318
|
/**
|
|
55323
55319
|
* allow 侧扫描:Shell 目标要求每一段至少被某条 allow 规则(保守匹配)覆盖,
|
|
55324
55320
|
* 归因取覆盖第一段的规则;其余目标任一规则命中即放行。
|
|
55325
|
-
* 工具名判定统一走 ruleMatchesTool
|
|
55321
|
+
* 工具名判定统一走 ruleMatchesTool:`mcp__srv__*` 在 allow 侧
|
|
55326
55322
|
* 命中该服务器全部工具——是工具级规则语义(命中全部调用),与 deny/ask
|
|
55327
55323
|
* 侧工具名判定相同;不对称公理只作用于 specifier 内容匹配(通配规则
|
|
55328
55324
|
* 恒无 specifier,不触及)。
|
|
@@ -55628,7 +55624,7 @@ var ToolRegistry = class {
|
|
|
55628
55624
|
this.#tools.set(tool.name, tool);
|
|
55629
55625
|
}
|
|
55630
55626
|
/**
|
|
55631
|
-
* 移除工具(
|
|
55627
|
+
* 移除工具(MCP 单服务器重连需先摘旧桥接工具)。不存在返回 false
|
|
55632
55628
|
* 不 throw——清理路径对「已不在」宽容幂等(与 register 的装配期严苛相对)。
|
|
55633
55629
|
*/
|
|
55634
55630
|
unregister(name) {
|
|
@@ -56290,7 +56286,7 @@ var DispatchingToolExecutor = class _DispatchingToolExecutor {
|
|
|
56290
56286
|
* searchAggregator(会话级 grep 轮次聚合)以及其余全部构造选项(askUser /
|
|
56291
56287
|
* onDecision / captureFileCheckpoints / memoryWrite / fs / metrics …);
|
|
56292
56288
|
* - 按新 cwd 重算:ToolContext.cwd、pre-image 采集前的真实目标守卫(checkRealTarget
|
|
56293
|
-
* 工作区双锚)
|
|
56289
|
+
* 工作区双锚)、软化半径判定 classifySoftenFace——三处皆按调用期以 `#cwd` 计算,
|
|
56294
56290
|
* 无跨调用缓存,新实例即新锚;
|
|
56295
56291
|
* - 权限门:**缺省沿用**同一 gate 对象。sdk / cli 网关皆以构造期 cwd 锚定规则路径与
|
|
56296
56292
|
* 工作区快路径(permission.ts「必须与 executor 的 cwd 一致」),装配层须以
|
|
@@ -65387,7 +65383,7 @@ var UpdateSectionSchema = z44.object({
|
|
|
65387
65383
|
/**
|
|
65388
65384
|
* manifest 数据源地址(企业内网/自托管;`{channel}` 占位替换)。在场即
|
|
65389
65385
|
* 优先于 npm registry;形态 = scripts/release/pack-sea.mjs 产物。
|
|
65390
|
-
*
|
|
65386
|
+
* 须为 `https://` 绝对 URL——`http:` / `file:` / 相对形
|
|
65391
65387
|
* 在 schema 层即拒(抽取器 `invalid_value` 剥离回退低层 / 缺席;远程 org 下发经同一
|
|
65392
65388
|
* schema 收口),与 cli 发布 URL 门(release-trust.ts `insecure_scheme`)双闸同向。
|
|
65393
65389
|
*/
|
|
@@ -71874,7 +71870,7 @@ var ProviderRegistry = class {
|
|
|
71874
71870
|
}
|
|
71875
71871
|
/**
|
|
71876
71872
|
* 别名的有序 fallback 链(链首为别名自身;循环引用抛 CyclicFallbackError)。
|
|
71877
|
-
*
|
|
71873
|
+
* 只解析不重试——实际切换由 FallbackModelClient 执行。
|
|
71878
71874
|
*/
|
|
71879
71875
|
fallbacksFor(alias) {
|
|
71880
71876
|
return expandFallbacks(this.#config, alias);
|
|
@@ -80311,7 +80307,7 @@ function createPlatformSessionAssembler(options) {
|
|
|
80311
80307
|
return parentModel;
|
|
80312
80308
|
}
|
|
80313
80309
|
},
|
|
80314
|
-
// doc/112 §5.6-1:bundle 有效能力档 / 平台类型 /
|
|
80310
|
+
// doc/112 §5.6-1:bundle 有效能力档 / 平台类型 / 系统工具的平台提供方材料透出——
|
|
80315
80311
|
// 内层工厂按位装配;令牌经 refreshingFetch 覆写头自续,恒不落静态令牌
|
|
80316
80312
|
capabilities: platform.capabilities,
|
|
80317
80313
|
...platform.systemPrompt !== void 0 ? { systemPrompt: platform.systemPrompt } : {},
|