dsh-input-traffic 0.7.0 → 0.7.3

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.
@@ -3,6 +3,7 @@ import { SteerQueueDock } from "./steer-queue-dock.js";
3
3
  import { FreezeButton } from "./freeze-button.js";
4
4
  import { InputTrafficFamilyCard } from "./family-card.js";
5
5
  import { HideEnterRow } from "./hide-enter-row.js";
6
+ import { BridgeDocHandle } from "./bridge-scope.js";
6
7
  import { draftWriter, registerSettingsFaces } from "./compat.js";
7
8
  /** Durable conversation settings namespace owned by ui-conversation. */
8
9
  const CONVERSATION_SETTINGS_NAMESPACE = 'ui-conversation';
@@ -65,22 +66,50 @@ export function apply(ctx) {
65
66
  // The durable-settings service is per-line (configForms 0.1.7+ /
66
67
  // settingsScope ≤0.1.5) — the compat waist resolves it and the family tab
67
68
  // registers against whichever scope resolves.
69
+ // 2026-10-07 修复(0.1.5 家族节空白根因,perm-gate ea18a6a 同款):≤0.1.5 上
70
+ // settingsScope 子注入永不 resolve → onScope 永不回调 → 原先关在回调里的
71
+ // family.tab 注册从未执行 → 接管/托管节账本为空 → 节内容空白。注册是金贵的:
72
+ // 提到 apply 顶层无条件执行,scope 改活引用(回调解到就填,卡 inject 现读),
73
+ // 未解析时卡自身呈现不可用态而不是整卡缺席。
74
+ const familyScopeRef = {};
75
+ // T20-b 桥轨(perm-gate T13b 双轨同架构):≤0.1.5 上 settingsScope 子注入
76
+ // 永不 resolve(A2 死路),原生句柄缺席时卡片数据与 busyEnter 钉值走自家
77
+ // webServer 桥(node 半区挂 describe/mutate 路由对;0.1.0 宿主 settings
78
+ // 服务实测全款具备该面)。原生句柄优先——configForms 臂解到就改走原生,
79
+ // 桥只在原生缺席时供数;桥 pending 期间快照 value 为 undefined,卡按钉死
80
+ // 默认值渲染,首拉落地后订阅通知刷新。
81
+ const bridgeScope = new BridgeDocHandle(CONVERSATION_SETTINGS_NAMESPACE);
82
+ let nativeScopeResolved = false;
83
+ let bridgePinned = false;
84
+ bridgeScope.subscribe(() => {
85
+ if (bridgePinned || nativeScopeResolved)
86
+ return;
87
+ if (bridgeScope.getSnapshot().status !== 'ready')
88
+ return;
89
+ // Pin through the bridge once, only when the native arm never resolved
90
+ // (≤0.1.5): same semantics as the configForms arm's startup pin. Worst
91
+ // race (both arms ready simultaneously) writes the same value twice —
92
+ // idempotent, and the host serializes writers.
93
+ bridgePinned = true;
94
+ void bridgeScope.set(BUSY_ENTER_FIELD, 'queue').catch((e) => {
95
+ console.warn('[dsh-input-traffic] bridge busyEnter pin failed:', e);
96
+ });
97
+ });
98
+ ctx.slots.inject('dsh-family.tab', () => ctx.slots.register({
99
+ name: 'dsh-family.tab',
100
+ id: 'input-traffic',
101
+ order: 50,
102
+ label: () => tFamily('family.title'),
103
+ locale: NS,
104
+ inject: () => ({ scope: familyScopeRef.scope ?? bridgeScope }),
105
+ }, InputTrafficFamilyCard));
68
106
  registerSettingsFaces(ctx, {
69
107
  namespace: CONVERSATION_SETTINGS_NAMESPACE,
70
108
  field: BUSY_ENTER_FIELD,
71
109
  value: 'queue',
72
110
  onScope: (scope) => {
73
- // 插件族共用设置 tab:只读状态卡(busyEnter 钉死展示 + 使用说明)。
74
- // 持有者是跨插件族(thinking-levels 一族,非宿主本体),缺席时 slot
75
- // inject 静默等待,不阻塞客户端半。
76
- ctx.slots.inject('dsh-family.tab', () => ctx.slots.register({
77
- name: 'dsh-family.tab',
78
- id: 'input-traffic',
79
- order: 50,
80
- label: () => tFamily('family.title'),
81
- locale: NS,
82
- inject: () => ({ scope }),
83
- }, InputTrafficFamilyCard));
111
+ familyScopeRef.scope = scope;
112
+ nativeScopeResolved = true;
84
113
  },
85
114
  });
86
115
  // Shadow the official queue dock with the three-tier planning strip. The
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/client/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/client/index.ts"],"names":[],"mappings":"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"}
@@ -1,11 +1,22 @@
1
1
  /**
2
- * dsh-input-traffic —node half.
2
+ * dsh-input-traffic — node half.
3
3
  *
4
- * The node half is the Loader entry every client plugin must ship; it carries
5
- * no host-side behavior. The browser half (src/client/index.ts) owns the
6
- * whole takeover: the three-tier planning dock and the busy-Enter row hiding.
4
+ * Historically a deliberate no-op (pure client takeover shape). T20-b gave it
5
+ * one real job: host the settings bridge. The browser half's durable data
6
+ * plane (the `ui-conversation` busy-Enter pin) rides generation-exclusive
7
+ * client settings handles that are a dead end ≤0.1.5 (the A2 posture), so the
8
+ * node half exposes the host settings service over the plugin's webServer as
9
+ * a describe/mutate route pair (src/bridge.ts, perm-gate 5260fe6 generalized
10
+ * form) — see src/client/bridge-scope.ts for the consumer.
11
+ *
12
+ * Inject posture: `webServer` is loader-level (present on every kept line —
13
+ * the web profile serves the UI through it); `settings` resolves via a child
14
+ * effect so a host without it leaves the ref unset and the bridge degrades to
15
+ * `settings-unavailable` responses instead of failing the entry.
7
16
  */
8
17
  import type { Context } from '@deepseek-ai/cordis';
9
- /** @param ctx - host-side context; intentionally unused (client-plugin shape). */
18
+ /** webServer hosts the bridge route pair. */
19
+ export declare const inject: string[];
20
+ /** @param ctx - host-side context; registers the bridge route pair. */
10
21
  export declare function apply(ctx: Context): void;
11
22
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AACH,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAA;AAElD,kFAAkF;AAClF,wBAAgB,KAAK,CAAC,GAAG,EAAE,OAAO,GAAG,IAAI,CAExC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AACH,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAA;AAMlD,6CAA6C;AAC7C,eAAO,MAAM,MAAM,UAAgB,CAAA;AASnC,uEAAuE;AACvE,wBAAgB,KAAK,CAAC,GAAG,EAAE,OAAO,GAAG,IAAI,CAmBxC"}
@@ -1,5 +1,28 @@
1
- /** @param ctx - host-side context; intentionally unused (client-plugin shape). */
1
+ import { registerSettingsBridgeRoutes } from './bridge.js';
2
+ /** The settings namespace the browser half pins (`ui-conversation.busyEnter`). */
3
+ const BRIDGE_NS = 'ui-conversation';
4
+ /** webServer hosts the bridge route pair. */
5
+ export const inject = ['webServer'];
6
+ /** @param ctx - host-side context; registers the bridge route pair. */
2
7
  export function apply(ctx) {
3
- void ctx;
8
+ // Live settings ref: the child effect keeps entry activation independent of
9
+ // the service (a host without settings just gets settings-unavailable).
10
+ const settingsRef = {};
11
+ ctx.inject(['settings'], (child) => {
12
+ // cordis inject callbacks receive (ctx, config) — read services off the
13
+ // scope object by name (the waist-wide convention; bare-service calls are
14
+ // a TypeError on every generation).
15
+ settingsRef.svc = child.settings;
16
+ });
17
+ // Register + unregister the route pair with the entry's life cycle. The
18
+ // webServer comes from the loader inject, with a ctx.get fallback for hosts
19
+ // that resolve services lazily (same posture as dsh-perm-gate).
20
+ ctx.effect(() => {
21
+ const injected = ctx;
22
+ const webServer = injected.webServer ?? injected.get?.('webServer');
23
+ const offs = registerSettingsBridgeRoutes(webServer, () => settingsRef.svc, BRIDGE_NS);
24
+ return () => { for (const off of offs)
25
+ off(); };
26
+ }, 'dsh-input-traffic: settings bridge routes');
4
27
  }
5
28
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AASA,kFAAkF;AAClF,MAAM,UAAU,KAAK,CAAC,GAAY;IAChC,KAAK,GAAG,CAAA;AACV,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAiBA,OAAO,EAAE,4BAA4B,EAAE,MAAM,aAAa,CAAA;AAE1D,kFAAkF;AAClF,MAAM,SAAS,GAAG,iBAAiB,CAAA;AAEnC,6CAA6C;AAC7C,MAAM,CAAC,MAAM,MAAM,GAAG,CAAC,WAAW,CAAC,CAAA;AASnC,uEAAuE;AACvE,MAAM,UAAU,KAAK,CAAC,GAAY;IAChC,4EAA4E;IAC5E,wEAAwE;IACxE,MAAM,WAAW,GAAkC,EAAE,CAAA;IACrD,GAAG,CAAC,MAAM,CAAC,CAAC,UAAU,CAAC,EAAE,CAAC,KAAK,EAAE,EAAE;QACjC,wEAAwE;QACxE,0EAA0E;QAC1E,oCAAoC;QACpC,WAAW,CAAC,GAAG,GAAI,KAAuD,CAAC,QAAQ,CAAA;IACrF,CAAC,CAAC,CAAA;IACF,wEAAwE;IACxE,4EAA4E;IAC5E,gEAAgE;IAChE,GAAG,CAAC,MAAM,CAAC,GAAG,EAAE;QACd,MAAM,QAAQ,GAAG,GAAsE,CAAA;QACvF,MAAM,SAAS,GAAG,QAAQ,CAAC,SAAS,IAAI,QAAQ,CAAC,GAAG,EAAE,CAAC,WAAW,CAAC,CAAA;QACnE,MAAM,IAAI,GAAG,4BAA4B,CAAC,SAAS,EAAE,GAAG,EAAE,CAAC,WAAW,CAAC,GAAG,EAAE,SAAS,CAAC,CAAA;QACtF,OAAO,GAAG,EAAE,GAAG,KAAK,MAAM,GAAG,IAAI,IAAI;YAAE,GAAG,EAAE,CAAA,CAAC,CAAC,CAAA;IAChD,CAAC,EAAE,2CAA2C,CAAC,CAAA;AACjD,CAAC"}
package/package.json CHANGED
@@ -1,7 +1,8 @@
1
1
  {
2
2
  "name": "dsh-input-traffic",
3
- "version": "0.7.0",
3
+ "version": "0.7.3",
4
4
  "publishConfig": {
5
+ "registry": "https://registry.npmjs.org",
5
6
  "tag": "latest"
6
7
  },
7
8
  "type": "module",
@@ -53,6 +54,15 @@
53
54
  "platform": "web"
54
55
  }
55
56
  },
57
+ "scripts": {
58
+ "build": "tsc -p tsconfig.json && tsdown",
59
+ "test": "vitest run",
60
+ "clean": "node -e \"require('node:fs').rmSync('lib', { recursive: true, force: true })\"",
61
+ "lint": "eslint src tests",
62
+ "lint:fix": "eslint src tests --fix",
63
+ "tdd": "vitest",
64
+ "verify": "npm run lint && npm run test && npm run build && node examples/verify-assembly.mjs"
65
+ },
56
66
  "engines": {
57
67
  "node": ">=20",
58
68
  "dsh": "0.1.0-rc.2 || 0.1.0-rc.3 || 0.1.0-rc.6 || 0.1.0-rc.7 || 0.1.0-rc.8 || 0.1.1-rc.1 || 0.1.1-rc.2 || 0.1.2-rc.1 || 0.1.5-rc.1 || 0.1.5-rc.2 || 0.1.5-rc.3 || 0.1.7-rc.1 || 0.1.7-rc.2 || 0.2.0-rc.1 || 0.2.0-rc.2"
@@ -106,14 +116,5 @@
106
116
  "typescript": "^6.0.3",
107
117
  "typescript-eslint": "^8.67.0",
108
118
  "vitest": "^4.1.8"
109
- },
110
- "scripts": {
111
- "build": "tsc -p tsconfig.json && tsdown",
112
- "test": "vitest run",
113
- "clean": "node -e \"require('node:fs').rmSync('lib', { recursive: true, force: true })\"",
114
- "lint": "eslint src tests",
115
- "lint:fix": "eslint src tests --fix",
116
- "tdd": "vitest",
117
- "verify": "npm run lint && npm run test && npm run build && node examples/verify-assembly.mjs"
118
119
  }
119
- }
120
+ }