@morlay/dsh-session-mode 0.0.6 → 0.0.7

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 CHANGED
@@ -58,15 +58,16 @@
58
58
  `coding` 留空名单 → `true`,`chat` 的三件里没有 `skill` → `false`。要"工具收窄但目录照旧列"就显式写 `skills: true`。
59
59
 
60
60
  技能名单(`allowSkills` / `denySkills`)收的是**技能名**,与工具名单同一套合成规则(`allowSkills` 留空 = 不设收窄,
61
- 两份同时命中时 deny 优先),收窄落在两处:`skill-catalog` 那条消息(正文里 ``- `<名字>`: <说明>`` 那几行与它
62
- `source.entries` 里的结构化名单**一起**删)与 `skill` 工具的**调用参数**(拒的是它这次要加载的那一件,工具本身的
63
- 可见性仍归 `allowTools`)。**不碰注册表**:技能照旧注册着,收的是"模型看到什么、能加载什么"。本部署用它收官方
64
- Office 面——那三件技能由桌面宿主代码 `ctx.plugin` 挂载(不是 entry 行,profile 层停不掉),于是 `coding` 按名排除
65
- 它们,`load_workspace_dependencies` 那件工具同样进 `denyTools`。
61
+ 两份同时命中时 deny 优先),收窄落在两处:`skill-catalog` 那条消息的**正文**(删掉 ``- `<名字>`: <说明>`` 那几行;
62
+ `source.entries` 是官方发布的记录、也是官方判"目录变没变"的输入,**不动它**)与 `skill` 工具的**调用参数**(拒的是
63
+ 它这次要加载的那一件,工具本身的可见性仍归 `allowTools`)。**不碰注册表**:技能照旧注册着,收的是"模型看到什么、
64
+ 能加载什么"。本部署用它收官方 Office 面——那三件技能由桌面宿主代码 `ctx.plugin` 挂载(不是 entry 行,profile 层
65
+ 停不掉),于是 `coding` 按名排除它们,`load_workspace_dependencies` 那件工具同样进 `denyTools`。
66
66
 
67
67
  代价与失效方式:正文删行认的是官方渲染形状(``- `<名字>`:`` 行首)。上游改了这个形状时那**一条目录消息整条不动**
68
- (宁可多列一个名字,也不让正文与结构化名单分叉),并打一条点名告警——那是这条名单面唯一的失灵信号。技能名是模型
69
- 可见契约,跟着上游改名走。
68
+ (宁可多列一个名字,也不删错行),并打一条点名告警——那是这条名单面唯一的失灵信号。技能名是模型可见契约,跟着
69
+ 上游改名走。日志与页面读到的是官方那份**完整**结构化名单,收窄只在模型可见的正文上——这是刻意的:官方按那份名单
70
+ 的 digest 判目录要不要重发,改了它会每一步都重发一条目录。
70
71
 
71
72
  写错在装载时就拒绝:`default` 必须在清单里且声明 `main`、`role` 不能是空数组、`defaultModel` 要给全 `provider` 与
72
73
  `model`、`allowPolicies` / `denyPolicies` 里的名字必须是上游那两条 waterfall(`fs/write-intent` /
package/dist/client.cjs CHANGED
@@ -16762,14 +16762,14 @@ window.__ModuleLoader__.load({
16762
16762
  document.head.appendChild(tag);
16763
16763
  }
16764
16764
  var SessionModeSeat_module_css_default = {
16765
- "item": "dDMF8q_item",
16766
- "menuAnchor": "dDMF8q_menuAnchor",
16767
16765
  "itemName": "dDMF8q_itemName",
16766
+ "seatIcon": "dDMF8q_seatIcon",
16768
16767
  "seat": "dDMF8q_seat",
16768
+ "seatLabel": "dDMF8q_seatLabel",
16769
16769
  "itemDesc": "dDMF8q_itemDesc",
16770
16770
  "chevron": "dDMF8q_chevron",
16771
- "seatLabel": "dDMF8q_seatLabel",
16772
- "seatIcon": "dDMF8q_seatIcon"
16771
+ "item": "dDMF8q_item",
16772
+ "menuAnchor": "dDMF8q_menuAnchor"
16773
16773
  };
16774
16774
  //#endregion
16775
16775
  //#region src/client/SessionModeSeat.tsx
package/dist/index.mjs CHANGED
@@ -198,11 +198,7 @@ function narrowCatalog(message, gate, warn) {
198
198
  content: [{
199
199
  ...block,
200
200
  text: lines.join("\n")
201
- }],
202
- source: {
203
- ...source,
204
- entries: entries.filter((entry) => !denied.has(entry.name))
205
- }
201
+ }]
206
202
  };
207
203
  }
208
204
  function skillNameOf(arguments_) {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@morlay/dsh-session-mode",
3
- "version": "0.0.6",
3
+ "version": "0.0.7",
4
4
  "description": "Session modes for dsh: coding / chat as data — a mode is a persona plus its tool lists, its upstream policy lists, its instruction / skill-catalog / runtime-context switches and an optional default model. The host applies the current mode to each session, and the chip in the composer sits beside the official agent-preset entry, which stays.",
5
5
  "keywords": [
6
6
  "dsh",
package/src/scope.ts CHANGED
@@ -151,11 +151,10 @@ function narrowCatalog(
151
151
  warn(`skill catalog lines not recognized; denied skills stay listed: ${missing.join(", ")}`);
152
152
  return undefined;
153
153
  }
154
- return {
155
- ...message,
156
- content: [{ ...block, text: lines.join("\n") }],
157
- source: { ...source, entries: entries.filter((entry) => !denied.has(entry.name)) },
158
- };
154
+ // **只改正文**,`source.entries` 原样留着:官方 `tool-skill` 用那份结构化名单的 digest 判断"目录变没变"
155
+ // (`catalogHistory` 从会话日志里读它),改了它 digest 就永远对不上,于是每一步都重发一条目录。
156
+ // 收窄是"模型看到什么",不是"官方发布过什么":日志里留的是官方发布的完整名单,模型可见面由正文承担。
157
+ return { ...message, content: [{ ...block, text: lines.join("\n") }] };
159
158
  }
160
159
 
161
160
  // `skill` 工具调用的技能名:参数形状是官方那一行的 `{ name: string }`,认不出就不判(那是别人的工具)。