dsh-zen-remote 2.3.5 → 2.3.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.
Files changed (100) hide show
  1. package/AGENTS.md +15 -5
  2. package/CHANGELOG.md +71 -0
  3. package/README.md +2 -2
  4. package/README.zh-CN.md +2 -2
  5. package/docs/interface.md +12 -6
  6. package/docs/plugin-bridge.md +2 -2
  7. package/docs/remote-access.en.md +9 -3
  8. package/docs/remote-access.md +9 -3
  9. package/lan-gate.mjs +7 -0
  10. package/lib/adapters/dsh-better-sidebar/index.js +31 -2
  11. package/lib/adapters/dsh-better-sidebar/index.js.map +1 -1
  12. package/lib/client-pairing.js +10 -0
  13. package/lib/client-pairing.js.map +1 -1
  14. package/lib/client-routes.js +183 -94
  15. package/lib/client-routes.js.map +1 -1
  16. package/lib/client.js +589 -97
  17. package/lib/debug-redact.js +253 -0
  18. package/lib/debug-redact.js.map +1 -0
  19. package/lib/debug-report.js +60 -0
  20. package/lib/debug-report.js.map +1 -0
  21. package/lib/fetch-route-intercept.js +23 -0
  22. package/lib/fetch-route-intercept.js.map +1 -1
  23. package/lib/index.js +306 -45
  24. package/lib/index.js.map +1 -1
  25. package/lib/intercept.js +43 -1
  26. package/lib/intercept.js.map +1 -1
  27. package/lib/log-ring.js +76 -0
  28. package/lib/log-ring.js.map +1 -0
  29. package/lib/plugin-adapter-core.js +30 -1
  30. package/lib/plugin-adapter-core.js.map +1 -1
  31. package/lib/plugin-route-intercept.js +506 -11
  32. package/lib/plugin-route-intercept.js.map +1 -1
  33. package/lib/plugin-tunnel.js +210 -18
  34. package/lib/plugin-tunnel.js.map +1 -1
  35. package/lib/types/adapters/dsh-better-sidebar/index.d.ts +5 -2
  36. package/lib/types/adapters/dsh-better-sidebar/index.d.ts.map +1 -1
  37. package/lib/types/client/MobileSessionInfo.d.ts.map +1 -1
  38. package/lib/types/client/effects/remote-drop.d.ts +20 -8
  39. package/lib/types/client/effects/remote-drop.d.ts.map +1 -1
  40. package/lib/types/client/locales.d.ts +10 -1
  41. package/lib/types/client/locales.d.ts.map +1 -1
  42. package/lib/types/client/settings/SettingsSection.d.ts.map +1 -1
  43. package/lib/types/client/styles/content.css.d.ts +1 -1
  44. package/lib/types/client/styles/content.css.d.ts.map +1 -1
  45. package/lib/types/client/styles/layout.css.d.ts +1 -1
  46. package/lib/types/client/styles/layout.css.d.ts.map +1 -1
  47. package/lib/types/client/styles/misc.css.d.ts +1 -1
  48. package/lib/types/client/styles/misc.css.d.ts.map +1 -1
  49. package/lib/types/client-data/remote-drop.d.ts +64 -0
  50. package/lib/types/client-data/remote-drop.d.ts.map +1 -1
  51. package/lib/types/client-data/settings-form.d.ts +3 -0
  52. package/lib/types/client-data/settings-form.d.ts.map +1 -1
  53. package/lib/types/client-pairing.d.ts +8 -0
  54. package/lib/types/client-pairing.d.ts.map +1 -1
  55. package/lib/types/client-routes.d.ts +23 -0
  56. package/lib/types/client-routes.d.ts.map +1 -1
  57. package/lib/types/debug-redact.d.ts +68 -0
  58. package/lib/types/debug-redact.d.ts.map +1 -0
  59. package/lib/types/debug-report.d.ts +58 -0
  60. package/lib/types/debug-report.d.ts.map +1 -0
  61. package/lib/types/fetch-route-intercept.d.ts +26 -0
  62. package/lib/types/fetch-route-intercept.d.ts.map +1 -1
  63. package/lib/types/index.d.ts +7 -1
  64. package/lib/types/index.d.ts.map +1 -1
  65. package/lib/types/intercept.d.ts +6 -0
  66. package/lib/types/intercept.d.ts.map +1 -1
  67. package/lib/types/log-ring.d.ts +57 -0
  68. package/lib/types/log-ring.d.ts.map +1 -0
  69. package/lib/types/plugin-adapter-core.d.ts.map +1 -1
  70. package/lib/types/plugin-route-intercept.d.ts +8 -0
  71. package/lib/types/plugin-route-intercept.d.ts.map +1 -1
  72. package/lib/types/plugin-tunnel.d.ts +37 -2
  73. package/lib/types/plugin-tunnel.d.ts.map +1 -1
  74. package/package.json +3 -2
  75. package/pwa/app.css +13 -2
  76. package/scripts/check-debug-report.mjs +277 -0
  77. package/scripts/check-info-sheet-stacking.mjs +85 -0
  78. package/scripts/check-remote-drop.mjs +130 -0
  79. package/scripts/check-tablet-safe-area.mjs +49 -0
  80. package/src/adapters/dsh-better-sidebar/index.ts +31 -2
  81. package/src/client/MobileSessionInfo.tsx +29 -2
  82. package/src/client/effects/remote-drop.ts +271 -24
  83. package/src/client/locales.ts +24 -4
  84. package/src/client/settings/SettingsSection.tsx +120 -3
  85. package/src/client/styles/content.css.ts +44 -14
  86. package/src/client/styles/layout.css.ts +9 -3
  87. package/src/client/styles/misc.css.ts +38 -0
  88. package/src/client-data/remote-drop.ts +103 -0
  89. package/src/client-data/settings-form.ts +3 -0
  90. package/src/client-pairing.ts +11 -0
  91. package/src/client-routes.ts +196 -90
  92. package/src/debug-redact.ts +290 -0
  93. package/src/debug-report.ts +93 -0
  94. package/src/fetch-route-intercept.ts +29 -0
  95. package/src/index.ts +295 -43
  96. package/src/intercept.ts +46 -0
  97. package/src/log-ring.ts +101 -0
  98. package/src/plugin-adapter-core.ts +29 -2
  99. package/src/plugin-route-intercept.ts +516 -12
  100. package/src/plugin-tunnel.ts +230 -20
@@ -0,0 +1,253 @@
1
+ /** One pass's replacement result for a matched run of the token pass. */
2
+ const TOKEN_PLACEHOLDER = '<token>';
3
+ /** The private-network address ranges the pairing normalizer admits for
4
+ * plain http (client-pairing.ts's `isPrivateNetworkHost`), restated here
5
+ * because this module must import nothing (see the header). IPv4: `10/8`,
6
+ * `172.16/12`, `192.168/16`, `100.64/10` (CGNAT/Tailscale); IPv6: `fc00::/7`
7
+ * and `fe80::/10` by their first group. Loopback and `*.local` are decided
8
+ * by the caller, not here. */
9
+ function isLanAddress(host) {
10
+ const ipv4 = /^(\d{1,3})\.(\d{1,3})\.(\d{1,3})\.(\d{1,3})$/.exec(host);
11
+ if (ipv4 !== null) {
12
+ const a = Number(ipv4[1]);
13
+ const b = Number(ipv4[2]);
14
+ if (a === 10)
15
+ return true;
16
+ if (a === 172 && b >= 16 && b <= 31)
17
+ return true;
18
+ if (a === 192 && b === 168)
19
+ return true;
20
+ if (a === 100 && b >= 64 && b <= 127)
21
+ return true;
22
+ return false;
23
+ }
24
+ const firstGroup = /^([0-9a-fA-F]{1,4}):/u.exec(host);
25
+ if (firstGroup !== null) {
26
+ const first = parseInt(firstGroup[1], 16);
27
+ return (first >= 0xfc00 && first <= 0xfdff) || (first >= 0xfe80 && first <= 0xfebf);
28
+ }
29
+ return false;
30
+ }
31
+ /** Which class one hostname belongs to. Loopback first (it is also in the
32
+ * private ranges — order matters), then the remaining private ranges as
33
+ * `lan-ip`, then numeric literals as public addresses, everything else as
34
+ * `domain` (the "cannot tell" bucket, per SPEC). IPv6 brackets are
35
+ * stripped first — classification is bracket-free. */
36
+ function classifyHost(bracketed) {
37
+ const host = bracketed.startsWith('[') && bracketed.endsWith(']') ? bracketed.slice(1, -1) : bracketed;
38
+ if (host === 'localhost' || host === '::1' || host.startsWith('127.'))
39
+ return 'loopback';
40
+ if (host.endsWith('.local'))
41
+ return 'domain';
42
+ if (isLanAddress(host))
43
+ return 'lan-ip';
44
+ if (/^\d{1,3}(?:\.\d{1,3}){3}$/.test(host))
45
+ return 'public-ip';
46
+ if (host.includes(':'))
47
+ return 'public-ip';
48
+ return 'domain';
49
+ }
50
+ /**
51
+ * One server address's SHAPE: `scheme://class[:port]` — never the hostname.
52
+ * `http://192.168.1.10:3080` → `http://lan-ip:3080`; `https://myserver.example.com`
53
+ * → `https://domain`; the scheme's default port is omitted. Unset input
54
+ * answers `'unset'`, unparsable input `'invalid'`.
55
+ */
56
+ export function serverUrlShape(url) {
57
+ if (typeof url !== 'string' || url.trim() === '')
58
+ return 'unset';
59
+ let parsed;
60
+ try {
61
+ parsed = new URL(url.trim());
62
+ }
63
+ catch {
64
+ return 'invalid';
65
+ }
66
+ const scheme = parsed.protocol === 'https:' ? 'https' : parsed.protocol === 'http:' ? 'http' : parsed.protocol.replace(/:$/u, '');
67
+ const port = parsed.port;
68
+ const defaultPort = (scheme === 'https' && port === '443') || (scheme === 'http' && port === '80');
69
+ return `${scheme}://${classifyHost(parsed.hostname)}${port !== '' && !defaultPort ? `:${port}` : ''}`;
70
+ }
71
+ /**
72
+ * A bind address's shape for the config plate (`host`): the same address
73
+ * classes as {@link serverUrlShape}, plus `wildcard` for the all-interfaces
74
+ * binds (`0.0.0.0` / `::`) — the one bind fact triage actually needs. Unset
75
+ * input answers `'unset'`. A raw address never reaches the report.
76
+ */
77
+ export function bindHostShape(host) {
78
+ if (typeof host !== 'string' || host.trim() === '')
79
+ return 'unset';
80
+ const value = host.trim();
81
+ if (value === '0.0.0.0' || value === '::' || value === '[::]')
82
+ return 'wildcard';
83
+ return classifyHost(value);
84
+ }
85
+ /** The token pass: any run of ≥32 base64/base64url-ish characters (hex
86
+ * secrets, base64 keys, JWT segments — `-` and `_` included so a base64url
87
+ * signature dies whole instead of leaving a half) — long enough that real
88
+ * prose never trips it, short enough to catch every credential shape this
89
+ * plugin handles. */
90
+ const TOKEN_RUN = /[A-Za-z0-9+/=_-]{32,}/gu;
91
+ /** The same run, as a CONTAINS test for one URL query value / path segment
92
+ * (non-global: `test` must not carry `lastIndex` between calls). */
93
+ const HAS_TOKEN_RUN = /[A-Za-z0-9+/=_-]{32,}/u;
94
+ /** The same run without `/`, for one URL path segment at a time — a long
95
+ * path is not a secret, a long SEGMENT is. */
96
+ const HAS_TOKEN_SEGMENT = /[A-Za-z0-9+=_-]{32,}/u;
97
+ /** Pass 0's URL candidates: a scheme this report can meet, then everything
98
+ * up to whitespace, a quote or an angle bracket. Trailing sentence
99
+ * punctuation is peeled back off afterwards ({@link URL_TRAILING}). */
100
+ const URL_CANDIDATE = /(?:https?|wss?|ftp):\/\/[^\s"'<>\u0000]+/gu;
101
+ /** Sentence punctuation that ends a URL in prose (`see http://x/y).`) — `]`
102
+ * is deliberately absent: it closes a bracketed IPv6 host. */
103
+ const URL_TRAILING = /[.,;:!?)}'"]+$/u;
104
+ /** The in-text stand-in for one extracted URL. NUL never survives into the
105
+ * text (pass 0 replaces any NUL the input carried), so a sentinel can only
106
+ * be one this function placed; nothing in it trips a later pass (no `zr~`,
107
+ * no slash, no 32-run, no drive-letter shape). */
108
+ const URL_SENTINEL = /\u0000zr-url:(\d+)\u0000/gu;
109
+ /** One URL's path, redacted per segment: virtual ids truncate, and a segment
110
+ * that carries a secret-shaped run dies whole. Ordinary routes
111
+ * (`/_dsh/zen-remote/relay/v1/stream`) pass untouched. */
112
+ function redactUrlPath(path) {
113
+ return path
114
+ .replace(VIRTUAL_ID, (_match, serverId, id) => `zr~${serverId}~${id.replace(/^session-/, '').slice(0, 8)}`)
115
+ .split('/')
116
+ .map((segment) => (HAS_TOKEN_SEGMENT.test(segment) ? TOKEN_PLACEHOLDER : segment))
117
+ .join('/');
118
+ }
119
+ /** One URL's query + fragment (`?…` / `#…`), redacted per parameter: the key
120
+ * is kept, a value carrying a secret-shaped run becomes `<token>` (a bare
121
+ * parameter without `=` likewise). Virtual ids truncate first, so a
122
+ * `sessionId=zr~…` value stays recognisable. This is the URL's only secret
123
+ * pass — the URL was extracted before the text-wide token pass ran. */
124
+ function redactUrlQuery(tail) {
125
+ return tail.replace(/([?&#;])([^?&#;]*)/gu, (_match, separator, pair) => {
126
+ const truncated = pair.replace(VIRTUAL_ID, (_m, serverId, id) => `zr~${serverId}~${id.replace(/^session-/, '').slice(0, 8)}`);
127
+ const eq = truncated.indexOf('=');
128
+ if (eq === -1)
129
+ return `${separator}${HAS_TOKEN_RUN.test(truncated) ? TOKEN_PLACEHOLDER : truncated}`;
130
+ const value = truncated.slice(eq + 1);
131
+ return `${separator}${truncated.slice(0, eq)}=${HAS_TOKEN_RUN.test(value) ? TOKEN_PLACEHOLDER : value}`;
132
+ });
133
+ }
134
+ /**
135
+ * One extracted URL in its reportable form: userinfo dropped whole to
136
+ * `<token>@`, host degraded to its address class, port and path KEPT (the
137
+ * SPEC's "端口与 path 保留"), path segments and query values carrying a
138
+ * secret-shaped run replaced by `<token>`.
139
+ *
140
+ * The userinfo boundary is the LAST `@` before the first `?`/`#` (RFC 3986:
141
+ * the authority cannot run past them), so a password holding `/`
142
+ * (`bob:ab/cd@host`) is still userinfo. The cost — a path that itself holds
143
+ * `@` loses everything before it to `<token>@` — is over-redaction, the
144
+ * safe direction.
145
+ */
146
+ function degradeUrl(raw) {
147
+ const schemeEnd = raw.indexOf('://');
148
+ const scheme = raw.slice(0, schemeEnd);
149
+ const rest = raw.slice(schemeEnd + 3);
150
+ const queryAt = rest.search(/[?#]/u);
151
+ const head = queryAt === -1 ? rest : rest.slice(0, queryAt);
152
+ const tail = queryAt === -1 ? '' : rest.slice(queryAt);
153
+ const at = head.lastIndexOf('@');
154
+ const afterUser = at === -1 ? head : head.slice(at + 1);
155
+ const hostPort = /^(\[[^\]]*\]|[^/:]*)(:\d+)?/u.exec(afterUser);
156
+ const host = hostPort?.[1] ?? '';
157
+ const port = hostPort?.[2] ?? '';
158
+ const path = afterUser.slice(hostPort?.[0].length ?? 0);
159
+ return `${scheme}://${at === -1 ? '' : `${TOKEN_PLACEHOLDER}@`}${classifyHost(host)}${port}${redactUrlPath(path)}${redactUrlQuery(tail)}`;
160
+ }
161
+ /** The UNC pass: `\\server\share\…\leaf` → `<路径:leaf>`. Server and share
162
+ * are mandatory and never kept; inner segments may hold spaces
163
+ * (`Shared Docs`), the leaf may not — so trailing prose stays outside. */
164
+ const UNC_PATH = /(?<![\w\\])\\\\[^\\/:*?"<>|\s]+\\[^\\/:*?"<>|\r\n]+(?:\\[^\\/:*?"<>|\r\n]+)*\\([^\\/:*?"<>|\s]+)/gu;
165
+ /** A bare UNC root (`\\server\share`, no leaf beyond the share): nothing in
166
+ * it is safe to keep. Runs after {@link UNC_PATH}. */
167
+ const UNC_ROOT = /(?<![\w\\])\\\\[^\\/:*?"<>|\s]+\\[^\\/:*?"<>|\s]+/gu;
168
+ /** The virtual-id pass: `zr~<serverId>~<id>` keeps the server id and the
169
+ * session id's first 8 characters (the debug report needs "same server?
170
+ * same session?" — not the full id). */
171
+ const VIRTUAL_ID = /zr~([^~\s]{1,80})~([^~\s]{1,80})/gu;
172
+ /** The Windows absolute-path pass: drive letter, colon, separator, then path
173
+ * segments — reduced to `<路径:leaf>`. The drive letter must not follow a
174
+ * word character (`https:/` is not a drive); inner segments may hold spaces
175
+ * (`Program Files`), the leaf may not — so `D:\x\plan.txt failed` keeps
176
+ * `failed` outside the placeholder. */
177
+ const WINDOWS_PATH = /(?<!\w)([A-Za-z]:[\\/](?:[^\\/:*?"<>|\r\n]+[\\/])*)([^\\/:*?"<>|\s]+)/gu;
178
+ /** The Unix absolute-path pass, same reduction. The boundary lookbehind
179
+ * (string start, whitespace, `(`, `~`, `>`) keeps relative paths, URL path
180
+ * segments and `a/b` words out; `~` is excluded so a home-folded path
181
+ * (`~/work/x.txt`) is never re-matched. */
182
+ const UNIX_PATH = /(?<![\w:/.\\~])(\/(?:[^/\s]+\/)*)([^/\s]+)/gu;
183
+ /**
184
+ * Redact one free-text value: home paths fold to `~` (their relative tail is
185
+ * kept — that is the one shape the report intentionally preserves), absolute
186
+ * paths reduce to `<路径:leaf>`, URL hostnames degrade to their address
187
+ * class, virtual session ids truncate, secret-shaped runs become
188
+ * `<token>`. Non-strings pass through unchanged.
189
+ */
190
+ export function redactText(text, context) {
191
+ if (typeof text !== 'string' || text === '')
192
+ return text;
193
+ // 0. URLs out first, each replaced by a sentinel and restored LAST in
194
+ // degraded form — so no text-wide pass can merge a URL's port and path
195
+ // into one token run (the "ws://…:3080/_dsh/…" port loss), and the
196
+ // userinfo/query handling lives in one place (degradeUrl). Any NUL the
197
+ // input carried is neutralized first: a sentinel can only be ours.
198
+ const urls = [];
199
+ let out = text.replaceAll('\u0000', '\uFFFD').replace(URL_CANDIDATE, (match) => {
200
+ const trailing = URL_TRAILING.exec(match)?.[0] ?? '';
201
+ urls.push(match.slice(0, match.length - trailing.length));
202
+ return `\u0000zr-url:${urls.length - 1}\u0000${trailing}`;
203
+ });
204
+ // 1. virtual ids: a ≥32-char id would otherwise die as a token run. The
205
+ // id's `session-` label is stripped before the cut — the ids are all
206
+ // `session-<uuid>`, so the head 8 of the label would carry nothing.
207
+ out = out.replace(VIRTUAL_ID, (_match, serverId, id) => `zr~${serverId}~${id.replace(/^session-/, '').slice(0, 8)}`);
208
+ // 2. the home directory folds to `~` BEFORE the token pass — a long home
209
+ // path is itself a ≥32 run and would otherwise die whole, losing the
210
+ // `~/Downloads/x.bin` shape the SPEC promises (folding only removes
211
+ // information, so running it early is safe). Guarded: never fold the
212
+ // filesystem root; a separator the fold leaves behind is normalized, so a
213
+ // Windows home path reads `~/doc.txt` like its Unix counterpart.
214
+ const home = context.home;
215
+ if (typeof home === 'string' && home.length > 1) {
216
+ out = out.split(home).join('~').replaceAll('~\\', '~/');
217
+ }
218
+ // 3. secret-shaped runs.
219
+ out = out.replace(TOKEN_RUN, () => TOKEN_PLACEHOLDER);
220
+ // 4. UNC paths, then bare UNC roots — before the drive-letter pass.
221
+ out = out.replace(UNC_PATH, (_match, leaf) => `<路径:${leaf}>`);
222
+ out = out.replace(UNC_ROOT, () => '<路径>');
223
+ // 5. Windows absolute paths → <路径:leaf>.
224
+ out = out.replace(WINDOWS_PATH, (_match, _prefix, leaf) => `<路径:${leaf}>`);
225
+ // 6. Unix absolute paths → <路径:leaf> (the leaf class already excludes
226
+ // whitespace).
227
+ out = out.replace(UNIX_PATH, (_match, _prefix, leaf) => `<路径:${leaf}>`);
228
+ // 7. URLs back in, degraded: userinfo → `<token>@`, host → address class,
229
+ // port and path kept, secret-shaped path segments / query values →
230
+ // `<token>`.
231
+ return out.replace(URL_SENTINEL, (_match, index) => degradeUrl(urls[Number(index)] ?? ''));
232
+ }
233
+ /**
234
+ * Deep-redact one JSON-ready value: every string (at any depth) through
235
+ * {@link redactText}; keys are kept as-is (plugin names, field names —
236
+ * public identifiers), numbers/booleans/null pass through. Returns new
237
+ * containers; the input is never mutated.
238
+ */
239
+ export function redactValue(value, context) {
240
+ if (typeof value === 'string')
241
+ return redactText(value, context);
242
+ if (Array.isArray(value))
243
+ return value.map((item) => redactValue(item, context));
244
+ if (value !== null && typeof value === 'object') {
245
+ const out = {};
246
+ for (const [key, item] of Object.entries(value)) {
247
+ out[key] = redactValue(item, context);
248
+ }
249
+ return out;
250
+ }
251
+ return value;
252
+ }
253
+ //# sourceMappingURL=debug-redact.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"debug-redact.js","sourceRoot":"","sources":["../src/debug-redact.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,60 @@
1
+ /**
2
+ * CU-2: the debug report's assembler (SPEC 方案 C). Pure module — no DSH
3
+ * imports, no I/O: everything dynamic (the log ring's snapshot, the resolved
4
+ * config, the status route's body, the gateway's summary, the profile name)
5
+ * arrives as plain input, so the check script and the tests can drive it
6
+ * with poisoned fixtures and assert nothing recoverable comes out.
7
+ *
8
+ * Two redaction layers meet here, per SPEC:
9
+ * 1. construction — the report's own fields are picked by NAME; nothing is
10
+ * ever spread into it. (The wiring in client-routes.ts picks the config
11
+ * summary fields; a secret that sneaks into `configSummary` anyway is
12
+ * still caught by layer 2.)
13
+ * 2. output — every string, at any depth, runs through `redactText`
14
+ * (debug-redact.ts). The two exceptions are `config.serverUrl` and
15
+ * `config.host`, which are not strings but SHAPES (`https://domain`,
16
+ * `http://lan-ip:3080`, `loopback`, `wildcard`) — assigning them after
17
+ * the deep pass keeps the shapers' own labels from being re-classified.
18
+ */
19
+ import { bindHostShape, redactText, redactValue, serverUrlShape } from './debug-redact.js';
20
+ /**
21
+ * Assemble the report's five plates: `_meta`, `config`, `status`,
22
+ * `gateway` (only when a summary was supplied), `logs`. Every string is
23
+ * redacted; nothing in the output can carry a path (beyond a leaf), a
24
+ * hostname (beyond its address class), or a secret-shaped run.
25
+ */
26
+ export function assembleDebugReport(input) {
27
+ const context = { home: input.home };
28
+ const config = {};
29
+ for (const [key, value] of Object.entries(input.configSummary)) {
30
+ if (key === 'serverUrl' || key === 'host')
31
+ continue;
32
+ config[key] = redactValue(value, context);
33
+ }
34
+ // Both addresses are SHAPES, assigned after the deep pass so the shapers'
35
+ // own labels are never re-classified: the bind host keeps only its class
36
+ // (a bare IP must not reach the report), serverUrl its scheme+class+port.
37
+ if ('host' in input.configSummary)
38
+ config.host = bindHostShape(input.configSummary.host);
39
+ config.serverUrl = serverUrlShape(input.configSummary.serverUrl);
40
+ const report = {
41
+ _meta: {
42
+ generatedAt: redactText(input.meta.generatedAt, context),
43
+ pluginVersion: redactText(input.meta.pluginVersion, context),
44
+ dshVersion: redactText(input.meta.dshVersion, context),
45
+ platform: redactText(input.meta.platform, context),
46
+ role: redactText(input.meta.role, context),
47
+ ...(input.meta.profileName === undefined ? {} : { profile: redactText(input.meta.profileName, context) }),
48
+ },
49
+ config,
50
+ status: redactValue(input.statusBody, context),
51
+ ...(input.gatewaySummary === undefined ? {} : { gateway: redactValue(input.gatewaySummary, context) }),
52
+ logs: input.logs.map((entry) => ({
53
+ t: entry.t,
54
+ level: entry.level,
55
+ msg: redactText(entry.msg, context),
56
+ })),
57
+ };
58
+ return report;
59
+ }
60
+ //# sourceMappingURL=debug-report.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"debug-report.js","sourceRoot":"","sources":["../src/debug-report.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AAEH,OAAO,EAAE,aAAa,EAAE,UAAU,EAAE,WAAW,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAA;AAoC1F;;;;;GAKG;AACH,MAAM,UAAU,mBAAmB,CAAC,KAAuB;IACzD,MAAM,OAAO,GAAG,EAAE,IAAI,EAAE,KAAK,CAAC,IAAI,EAAE,CAAA;IACpC,MAAM,MAAM,GAA4B,EAAE,CAAA;IAC1C,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,aAAa,CAAC,EAAE,CAAC;QAC/D,IAAI,GAAG,KAAK,WAAW,IAAI,GAAG,KAAK,MAAM;YAAE,SAAQ;QACnD,MAAM,CAAC,GAAG,CAAC,GAAG,WAAW,CAAC,KAAK,EAAE,OAAO,CAAC,CAAA;IAC3C,CAAC;IACD,0EAA0E;IAC1E,yEAAyE;IACzE,0EAA0E;IAC1E,IAAI,MAAM,IAAI,KAAK,CAAC,aAAa;QAAE,MAAM,CAAC,IAAI,GAAG,aAAa,CAAC,KAAK,CAAC,aAAa,CAAC,IAAI,CAAC,CAAA;IACxF,MAAM,CAAC,SAAS,GAAG,cAAc,CAAC,KAAK,CAAC,aAAa,CAAC,SAAS,CAAC,CAAA;IAChE,MAAM,MAAM,GAA4B;QACtC,KAAK,EAAE;YACL,WAAW,EAAE,UAAU,CAAC,KAAK,CAAC,IAAI,CAAC,WAAW,EAAE,OAAO,CAAC;YACxD,aAAa,EAAE,UAAU,CAAC,KAAK,CAAC,IAAI,CAAC,aAAa,EAAE,OAAO,CAAC;YAC5D,UAAU,EAAE,UAAU,CAAC,KAAK,CAAC,IAAI,CAAC,UAAU,EAAE,OAAO,CAAC;YACtD,QAAQ,EAAE,UAAU,CAAC,KAAK,CAAC,IAAI,CAAC,QAAQ,EAAE,OAAO,CAAC;YAClD,IAAI,EAAE,UAAU,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,EAAE,OAAO,CAAC;YAC1C,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,WAAW,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,UAAU,CAAC,KAAK,CAAC,IAAI,CAAC,WAAW,EAAE,OAAO,CAAC,EAAE,CAAC;SAC1G;QACD,MAAM;QACN,MAAM,EAAE,WAAW,CAAC,KAAK,CAAC,UAAU,EAAE,OAAO,CAAC;QAC9C,GAAG,CAAC,KAAK,CAAC,cAAc,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,WAAW,CAAC,KAAK,CAAC,cAAc,EAAE,OAAO,CAAC,EAAE,CAAC;QACtG,IAAI,EAAE,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;YAC/B,CAAC,EAAE,KAAK,CAAC,CAAC;YACV,KAAK,EAAE,KAAK,CAAC,KAAK;YAClB,GAAG,EAAE,UAAU,CAAC,KAAK,CAAC,GAAG,EAAE,OAAO,CAAC;SACpC,CAAC,CAAC;KACJ,CAAA;IACD,OAAO,MAAM,CAAA;AACf,CAAC"}
@@ -69,6 +69,29 @@ const INTERRUPTED_MESSAGE = `上传中断,文件可能超过远程上传上限
69
69
  function isRecord(value) {
70
70
  return typeof value === 'object' && value !== null;
71
71
  }
72
+ /**
73
+ * Whether the FALLBACK install may fire on this tick (SPEC §2, the RD-6
74
+ * machine-local failure: `ctx.inject(['connection','fileUploads'])` silently
75
+ * stays PENDING on some compositions — the callback never runs, the wrap
76
+ * never installs, and every remote upload dies on the local backend with no
77
+ * diagnostic beyond "inject not seen"). All four facts must line up:
78
+ * - `injectSeen === false` — the inject callback has NOT fired (if it had,
79
+ * the primary path either installed or recorded a refusal itself);
80
+ * - `handleSet === false` — no install happened yet, via EITHER path (the
81
+ * double-install guard, checked again at the moment of installation);
82
+ * - `refused === false` — no install was refused yet (a refusal is a
83
+ * verdict, not a pending state; retrying it would only re-learn it);
84
+ * - `servicesPresent` — the reflection layer answers BOTH `connection` and
85
+ * `fileUploads`, i.e. the services exist and only the inject callback is
86
+ * stuck. Without them there is nothing to wrap and the inject may still
87
+ * be legitimately waiting (normal startup ordering) — the fallback keeps
88
+ * out of the way and inject stays the first choice.
89
+ * Pure judgment over injectable state, so the whole truth table is
90
+ * assertable in Node.
91
+ */
92
+ export function shouldFallbackInstall(state) {
93
+ return !state.injectSeen && !state.handleSet && !state.refused && state.servicesPresent;
94
+ }
72
95
  /**
73
96
  * Check the RAW connection service instance against the shape the wrap
74
97
  * depends on. Pure inspection — nothing is mutated, so a failed check
@@ -1 +1 @@
1
- {"version":3,"file":"fetch-route-intercept.js","sourceRoot":"","sources":["../src/fetch-route-intercept.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"fetch-route-intercept.js","sourceRoot":"","sources":["../src/fetch-route-intercept.ts"],"names":[],"mappings":"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"}