@lemoncat7/dsh-partner 1.4.0 → 1.4.2

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.
@@ -1 +1 @@
1
- {"version":3,"file":"glass-surface.d.ts","sourceRoot":"","sources":["../src/glass-surface.tsx"],"names":[],"mappings":"AAAA,OAAO,EAML,KAAK,cAAc,EACnB,KAAK,SAAS,EACf,MAAM,OAAO,CAAA;AAEd,KAAK,YAAY,GAAG,QAAQ,GAAG,OAAO,GAAG,SAAS,GAAG,SAAS,GAAG,KAAK,GAAG,QAAQ,CAAA;AAEjF,UAAU,iBAAkB,SAAQ,IAAI,CAAC,cAAc,CAAC,WAAW,CAAC,EAAE,UAAU,GAAG,WAAW,CAAC;IAC7F,EAAE,EAAE,YAAY,CAAA;IAChB,QAAQ,EAAE,SAAS,CAAA;IACnB,SAAS,EAAE,MAAM,CAAA;IACjB,YAAY,EAAE,MAAM,CAAA;IACpB,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,eAAe,CAAC,EAAE,MAAM,CAAA;IACxB,WAAW,CAAC,EAAE,OAAO,CAAA;IACrB,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,IAAI,CAAC,EAAE,QAAQ,GAAG,QAAQ,GAAG,OAAO,CAAA;IACpC,QAAQ,CAAC,EAAE,OAAO,CAAA;CACnB;AA8CD,wBAAgB,YAAY,CAAC,EAC3B,EAAE,EAAE,OAAO,EACX,QAAQ,EACR,SAAS,EACT,YAAY,EACZ,WAAiB,EACjB,UAAe,EACf,IAAS,EACT,eAAqB,EACrB,WAAmB,EACnB,OAAa,EACb,UAAiB,EACjB,GAAG,YAAY,EAChB,EAAE,iBAAiB,GAAG,GAAG,CAAC,OAAO,CAyHjC"}
1
+ {"version":3,"file":"glass-surface.d.ts","sourceRoot":"","sources":["../src/glass-surface.tsx"],"names":[],"mappings":"AAAA,OAAO,EAML,KAAK,cAAc,EACnB,KAAK,SAAS,EACf,MAAM,OAAO,CAAA;AAEd,KAAK,YAAY,GAAG,QAAQ,GAAG,OAAO,GAAG,SAAS,GAAG,SAAS,GAAG,KAAK,GAAG,QAAQ,CAAA;AAEjF,UAAU,iBAAkB,SAAQ,IAAI,CAAC,cAAc,CAAC,WAAW,CAAC,EAAE,UAAU,GAAG,WAAW,CAAC;IAC7F,EAAE,EAAE,YAAY,CAAA;IAChB,QAAQ,EAAE,SAAS,CAAA;IACnB,SAAS,EAAE,MAAM,CAAA;IACjB,YAAY,EAAE,MAAM,CAAA;IACpB,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,eAAe,CAAC,EAAE,MAAM,CAAA;IACxB,WAAW,CAAC,EAAE,OAAO,CAAA;IACrB,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,IAAI,CAAC,EAAE,QAAQ,GAAG,QAAQ,GAAG,OAAO,CAAA;IACpC,QAAQ,CAAC,EAAE,OAAO,CAAA;CACnB;AA8CD,wBAAgB,YAAY,CAAC,EAC3B,EAAE,EAAE,OAAO,EACX,QAAQ,EACR,SAAS,EACT,YAAY,EACZ,WAAiB,EACjB,UAAe,EACf,IAAS,EACT,eAAqB,EACrB,WAAmB,EACnB,OAAa,EACb,UAAiB,EACjB,GAAG,YAAY,EAChB,EAAE,iBAAiB,GAAG,GAAG,CAAC,OAAO,CAqIjC"}
@@ -39,22 +39,30 @@ export function GlassSurface({ as: Element, children, className, borderRadius, b
39
39
  const greenRef = useRef(null);
40
40
  const blueRef = useRef(null);
41
41
  const glareFrameRef = useRef(0);
42
- const glarePositionRef = useRef({ x: 50, y: 50 });
42
+ const glarePointerRef = useRef();
43
43
  const [svgSupported, setSvgSupported] = useState(false);
44
44
  useEffect(() => {
45
45
  setSvgSupported(supportsSvgBackdropFilter(filterId));
46
46
  }, [filterId]);
47
47
  useEffect(() => {
48
+ if (!svgSupported)
49
+ return;
48
50
  const element = containerRef.current;
49
51
  const image = imageRef.current;
50
52
  if (element === null || image === null)
51
53
  return;
52
54
  let frame = 0;
55
+ let previousWidth = 0;
56
+ let previousHeight = 0;
53
57
  const update = () => {
54
58
  frame = 0;
55
59
  const rect = element.getBoundingClientRect();
56
60
  const width = Math.max(1, Math.round(rect.width));
57
61
  const height = Math.max(1, Math.round(rect.height));
62
+ if (width === previousWidth && height === previousHeight)
63
+ return;
64
+ previousWidth = width;
65
+ previousHeight = height;
58
66
  image.setAttribute('href', displacementMap(width, height, Math.min(borderRadius, Math.min(width, height) / 2), borderWidth, brightness, opacity, blur, redGradientId, blueGradientId));
59
67
  };
60
68
  const schedule = () => {
@@ -69,12 +77,14 @@ export function GlassSurface({ as: Element, children, className, borderRadius, b
69
77
  cancelAnimationFrame(frame);
70
78
  observer?.disconnect();
71
79
  };
72
- }, [blueGradientId, blur, borderRadius, borderWidth, brightness, opacity, redGradientId]);
80
+ }, [blueGradientId, blur, borderRadius, borderWidth, brightness, opacity, redGradientId, svgSupported]);
73
81
  useEffect(() => {
82
+ if (!svgSupported)
83
+ return;
74
84
  const channels = [redRef.current, greenRef.current, blueRef.current];
75
85
  const offsets = [0, 5, 10];
76
86
  channels.forEach((channel, index) => channel?.setAttribute('scale', String(distortionScale + (offsets[index] ?? 0))));
77
- }, [distortionScale]);
87
+ }, [distortionScale, svgSupported]);
78
88
  useEffect(() => () => {
79
89
  if (glareFrameRef.current !== 0)
80
90
  cancelAnimationFrame(glareFrameRef.current);
@@ -84,28 +94,34 @@ export function GlassSurface({ as: Element, children, className, borderRadius, b
84
94
  const element = containerRef.current;
85
95
  if (element === null)
86
96
  return;
87
- element.style.setProperty('--partner-glare-x', `${glarePositionRef.current.x}%`);
88
- element.style.setProperty('--partner-glare-y', `${glarePositionRef.current.y}%`);
97
+ const pointer = glarePointerRef.current;
98
+ if (pointer === undefined) {
99
+ element.style.setProperty('--partner-glare-x', '50%');
100
+ element.style.setProperty('--partner-glare-y', '50%');
101
+ return;
102
+ }
103
+ const rect = element.getBoundingClientRect();
104
+ if (rect.width === 0 || rect.height === 0)
105
+ return;
106
+ const x = Math.max(0, Math.min(100, (pointer.clientX - rect.left) / rect.width * 100));
107
+ const y = Math.max(0, Math.min(100, (pointer.clientY - rect.top) / rect.height * 100));
108
+ element.style.setProperty('--partner-glare-x', `${x}%`);
109
+ element.style.setProperty('--partner-glare-y', `${y}%`);
89
110
  };
90
111
  const scheduleGlare = () => {
91
112
  if (glareFrameRef.current === 0)
92
113
  glareFrameRef.current = requestAnimationFrame(renderGlare);
93
114
  };
94
115
  const moveGlare = (clientX, clientY) => {
95
- const element = containerRef.current;
96
- if (!interactive || element === null)
116
+ if (!interactive)
97
117
  return;
98
- const rect = element.getBoundingClientRect();
99
- glarePositionRef.current = {
100
- x: Math.max(0, Math.min(100, (clientX - rect.left) / rect.width * 100)),
101
- y: Math.max(0, Math.min(100, (clientY - rect.top) / rect.height * 100)),
102
- };
118
+ glarePointerRef.current = { clientX, clientY };
103
119
  scheduleGlare();
104
120
  };
105
121
  const resetGlare = () => {
106
122
  if (!interactive)
107
123
  return;
108
- glarePositionRef.current = { x: 50, y: 50 };
124
+ glarePointerRef.current = undefined;
109
125
  scheduleGlare();
110
126
  };
111
127
  const style = {
@@ -114,6 +130,6 @@ export function GlassSurface({ as: Element, children, className, borderRadius, b
114
130
  '--partner-glare-x': '50%',
115
131
  '--partner-glare-y': '50%',
116
132
  };
117
- return _jsxs(Element, { ...elementProps, ref: containerRef, className: `dsh-partner-glass-surface ${svgSupported ? 'is-svg' : 'is-fallback'}${interactive ? ' is-interactive' : ''} ${className}`, style: style, onPointerMove: interactive ? event => moveGlare(event.clientX, event.clientY) : undefined, onPointerLeave: interactive ? resetGlare : undefined, children: [_jsx("svg", { className: "dsh-partner-glass-filter", xmlns: "http://www.w3.org/2000/svg", "aria-hidden": "true", focusable: "false", children: _jsx("defs", { children: _jsxs("filter", { id: filterId, colorInterpolationFilters: "sRGB", x: "0%", y: "0%", width: "100%", height: "100%", children: [_jsx("feImage", { ref: imageRef, x: "0", y: "0", width: "100%", height: "100%", preserveAspectRatio: "none", result: "map" }), _jsx("feDisplacementMap", { ref: redRef, in: "SourceGraphic", in2: "map", result: "displaced-red" }), _jsx("feColorMatrix", { in: "displaced-red", type: "matrix", values: "1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0", result: "red" }), _jsx("feDisplacementMap", { ref: greenRef, in: "SourceGraphic", in2: "map", result: "displaced-green" }), _jsx("feColorMatrix", { in: "displaced-green", type: "matrix", values: "0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 1 0", result: "green" }), _jsx("feDisplacementMap", { ref: blueRef, in: "SourceGraphic", in2: "map", result: "displaced-blue" }), _jsx("feColorMatrix", { in: "displaced-blue", type: "matrix", values: "0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 1 0", result: "blue" }), _jsx("feBlend", { in: "red", in2: "green", mode: "screen", result: "red-green" }), _jsx("feBlend", { in: "red-green", in2: "blue", mode: "screen", result: "output" }), _jsx("feGaussianBlur", { in: "output", stdDeviation: ".45" })] }) }) }), children] });
133
+ return _jsxs(Element, { ...elementProps, ref: containerRef, className: `dsh-partner-glass-surface ${svgSupported ? 'is-svg' : 'is-fallback'}${interactive ? ' is-interactive' : ''} ${className}`, style: style, onPointerMove: interactive ? event => moveGlare(event.clientX, event.clientY) : undefined, onPointerLeave: interactive ? resetGlare : undefined, children: [svgSupported && _jsx("svg", { className: "dsh-partner-glass-filter", xmlns: "http://www.w3.org/2000/svg", "aria-hidden": "true", focusable: "false", children: _jsx("defs", { children: _jsxs("filter", { id: filterId, colorInterpolationFilters: "sRGB", x: "0%", y: "0%", width: "100%", height: "100%", children: [_jsx("feImage", { ref: imageRef, x: "0", y: "0", width: "100%", height: "100%", preserveAspectRatio: "none", result: "map" }), _jsx("feDisplacementMap", { ref: redRef, in: "SourceGraphic", in2: "map", result: "displaced-red" }), _jsx("feColorMatrix", { in: "displaced-red", type: "matrix", values: "1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0", result: "red" }), _jsx("feDisplacementMap", { ref: greenRef, in: "SourceGraphic", in2: "map", result: "displaced-green" }), _jsx("feColorMatrix", { in: "displaced-green", type: "matrix", values: "0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 1 0", result: "green" }), _jsx("feDisplacementMap", { ref: blueRef, in: "SourceGraphic", in2: "map", result: "displaced-blue" }), _jsx("feColorMatrix", { in: "displaced-blue", type: "matrix", values: "0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 1 0", result: "blue" }), _jsx("feBlend", { in: "red", in2: "green", mode: "screen", result: "red-green" }), _jsx("feBlend", { in: "red-green", in2: "blue", mode: "screen", result: "output" }), _jsx("feGaussianBlur", { in: "output", stdDeviation: ".45" })] }) }) }), children] });
118
134
  }
119
135
  //# sourceMappingURL=glass-surface.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"glass-surface.js","sourceRoot":"","sources":["../src/glass-surface.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"glass-surface.js","sourceRoot":"","sources":["../src/glass-surface.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,15 @@
1
+ import type { ToolDefinition } from '@deepseek-ai/dsh-tools';
2
+ export declare const HEARTBEAT_LOCAL_COMMAND = "heartbeat_local_command";
3
+ export interface AuthorizedHeartbeatCommand {
4
+ file: string;
5
+ args: string[];
6
+ command: string;
7
+ }
8
+ /**
9
+ * One heartbeat-only command surface. It never invokes a shell and accepts only
10
+ * exact read-only inspection forms, so a knowledge document cannot smuggle in
11
+ * operators, scripts, environment changes or arbitrary executables.
12
+ */
13
+ export declare function heartbeatLocalCommandTool(cwd: string): ToolDefinition;
14
+ export declare function authorizeHeartbeatCommand(command: string): AuthorizedHeartbeatCommand;
15
+ //# sourceMappingURL=heartbeat-command.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"heartbeat-command.d.ts","sourceRoot":"","sources":["../src/heartbeat-command.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAA;AAE5D,eAAO,MAAM,uBAAuB,4BAA4B,CAAA;AAOhE,MAAM,WAAW,0BAA0B;IACzC,IAAI,EAAE,MAAM,CAAA;IACZ,IAAI,EAAE,MAAM,EAAE,CAAA;IACd,OAAO,EAAE,MAAM,CAAA;CAChB;AAED;;;;GAIG;AACH,wBAAgB,yBAAyB,CAAC,GAAG,EAAE,MAAM,GAAG,cAAc,CAoCrE;AAED,wBAAgB,yBAAyB,CAAC,OAAO,EAAE,MAAM,GAAG,0BAA0B,CAWrF"}
@@ -0,0 +1,211 @@
1
+ import { execFile } from 'node:child_process';
2
+ export const HEARTBEAT_LOCAL_COMMAND = 'heartbeat_local_command';
3
+ const COMMAND_TIMEOUT_MS = 8_000;
4
+ const COMMAND_MAX_BUFFER = 64 * 1024;
5
+ const COMMAND_MAX_LENGTH = 300;
6
+ const PACKAGE_NAME = /^(?:@[a-z0-9][a-z0-9._-]*\/)?[a-z0-9][a-z0-9._-]*$/i;
7
+ /**
8
+ * One heartbeat-only command surface. It never invokes a shell and accepts only
9
+ * exact read-only inspection forms, so a knowledge document cannot smuggle in
10
+ * operators, scripts, environment changes or arbitrary executables.
11
+ */
12
+ export function heartbeatLocalCommandTool(cwd) {
13
+ return {
14
+ name: HEARTBEAT_LOCAL_COMMAND,
15
+ description: [
16
+ 'Run one tightly controlled read-only local inspection command when a user-managed knowledge document explicitly requires that command as evidence.',
17
+ 'Use this instead of guessing a local version from workspace files. The command runs without a shell, in the current partner workspace, with an 8 second timeout and bounded output.',
18
+ 'Supported forms: dsh/node/npm/pnpm/yarn/python/python3/docker/podman/git version; npm or pnpm view/info <package> version|dist-tags.latest; npm list -g <package> --depth=0 --json; and a small set of read-only git status/describe/rev-parse/log commands.',
19
+ 'Pipes, redirects, command substitution, scripts, arbitrary programs and unsupported arguments are rejected. If rejected or failed, report that the local fact was not verified; do not silently replace it with a file search.',
20
+ ].join(' '),
21
+ parameters: {
22
+ type: 'object', additionalProperties: false,
23
+ properties: {
24
+ command: { type: 'string', description: 'Exact command from the knowledge procedure, without surrounding Markdown or sentence punctuation.' },
25
+ },
26
+ required: ['command'],
27
+ },
28
+ output: {
29
+ schema: { type: 'string' },
30
+ render: (_args, value) => [{ type: 'text', text: String(value) }],
31
+ },
32
+ presentCall: () => ({ card: 'generic', title: '核验本地状态' }),
33
+ timeoutMs: COMMAND_TIMEOUT_MS + 1_000,
34
+ isConcurrencySafe: () => true,
35
+ async execute(value, exec) {
36
+ const input = record(value);
37
+ if (typeof input.command !== 'string')
38
+ throw new Error('command must be a string');
39
+ const authorized = authorizeHeartbeatCommand(input.command);
40
+ const result = await runAuthorizedCommand(authorized, cwd, exec.signal);
41
+ return [
42
+ `Command: ${authorized.command}`,
43
+ `Exit code: ${result.exitCode}`,
44
+ result.stdout ? `stdout:\n${result.stdout}` : 'stdout: (empty)',
45
+ result.stderr ? `stderr:\n${result.stderr}` : '',
46
+ ].filter(Boolean).join('\n');
47
+ },
48
+ };
49
+ }
50
+ export function authorizeHeartbeatCommand(command) {
51
+ const normalized = command.normalize('NFKC').trim();
52
+ if (!normalized || normalized.length > COMMAND_MAX_LENGTH)
53
+ throw new Error(`command must contain 1-${COMMAND_MAX_LENGTH} characters`);
54
+ if (/[\r\n\0]/u.test(normalized))
55
+ throw new Error('multiline commands are not allowed');
56
+ const tokens = tokenizeCommand(normalized);
57
+ if (tokens.length === 0 || tokens.length > 8)
58
+ throw new Error('command has an unsupported number of arguments');
59
+ const [file, ...args] = tokens;
60
+ if (allowedVersionCommand(file, args) || allowedRegistryCommand(file, args) || allowedGlobalPackageQuery(file, args) || allowedGitCommand(file, args)) {
61
+ return { file, args, command: tokens.map(quoteDisplayToken).join(' ') };
62
+ }
63
+ throw new Error(`command is not in the heartbeat read-only allowlist: ${file}`);
64
+ }
65
+ function allowedVersionCommand(file, args) {
66
+ const versionArgs = {
67
+ dsh: ['-V', '--version'],
68
+ node: ['-v', '--version'],
69
+ npm: ['-v', '--version'],
70
+ pnpm: ['-v', '--version'],
71
+ yarn: ['-v', '--version'],
72
+ python: ['-V', '--version'],
73
+ python3: ['-V', '--version'],
74
+ docker: ['-v', '--version'],
75
+ podman: ['-v', '--version'],
76
+ git: ['--version'],
77
+ };
78
+ return args.length === 1 && versionArgs[file]?.includes(args[0] ?? '') === true;
79
+ }
80
+ function allowedRegistryCommand(file, args) {
81
+ if (file !== 'npm' && file !== 'pnpm')
82
+ return false;
83
+ if (args.length !== 3 || (args[0] !== 'view' && args[0] !== 'info'))
84
+ return false;
85
+ return PACKAGE_NAME.test(args[1] ?? '') && (args[2] === 'version' || args[2] === 'dist-tags.latest');
86
+ }
87
+ function allowedGlobalPackageQuery(file, args) {
88
+ if (file !== 'npm' || args.length !== 5)
89
+ return false;
90
+ return args[0] === 'list' && args[1] === '-g' && PACKAGE_NAME.test(args[2] ?? '') && args[3] === '--depth=0' && args[4] === '--json';
91
+ }
92
+ function allowedGitCommand(file, args) {
93
+ if (file !== 'git')
94
+ return false;
95
+ const joined = args.join('\0');
96
+ return new Set([
97
+ 'status\0--short\0--branch',
98
+ 'describe\0--tags\0--always',
99
+ 'describe\0--tags\0--always\0--dirty',
100
+ 'rev-parse\0HEAD',
101
+ 'rev-parse\0--short\0HEAD',
102
+ 'branch\0--show-current',
103
+ 'log\0-1\0--format=%H',
104
+ 'log\0-1\0--format=%h',
105
+ ]).has(joined);
106
+ }
107
+ function tokenizeCommand(value) {
108
+ const tokens = [];
109
+ let current = '';
110
+ let quote;
111
+ let escaping = false;
112
+ let started = false;
113
+ for (const character of value) {
114
+ if (escaping) {
115
+ current += character;
116
+ escaping = false;
117
+ started = true;
118
+ continue;
119
+ }
120
+ if (character === '\\' && quote !== "'") {
121
+ escaping = true;
122
+ started = true;
123
+ continue;
124
+ }
125
+ if (quote !== undefined) {
126
+ if (character === quote)
127
+ quote = undefined;
128
+ else
129
+ current += character;
130
+ started = true;
131
+ continue;
132
+ }
133
+ if (character === "'" || character === '"') {
134
+ quote = character;
135
+ started = true;
136
+ continue;
137
+ }
138
+ if (/\s/u.test(character)) {
139
+ if (started) {
140
+ tokens.push(current);
141
+ current = '';
142
+ started = false;
143
+ }
144
+ continue;
145
+ }
146
+ if ('|&;<>`$(){}'.includes(character))
147
+ throw new Error(`shell metacharacter is not allowed: ${character}`);
148
+ current += character;
149
+ started = true;
150
+ }
151
+ if (quote !== undefined || escaping)
152
+ throw new Error('command contains an unfinished quote or escape');
153
+ if (started)
154
+ tokens.push(current);
155
+ return tokens;
156
+ }
157
+ function runAuthorizedCommand(command, cwd, signal) {
158
+ return new Promise((resolve, reject) => {
159
+ execFile(command.file, command.args, {
160
+ cwd,
161
+ signal,
162
+ timeout: COMMAND_TIMEOUT_MS,
163
+ maxBuffer: COMMAND_MAX_BUFFER,
164
+ windowsHide: true,
165
+ encoding: 'utf8',
166
+ env: commandEnvironment(),
167
+ }, (error, stdout, stderr) => {
168
+ const output = { stdout: cleanOutput(stdout), stderr: cleanOutput(stderr), exitCode: exitCode(error) };
169
+ if (error !== null) {
170
+ const detail = output.stderr || output.stdout || error.message;
171
+ reject(new Error(`read-only command failed (exit ${output.exitCode}): ${detail}`));
172
+ return;
173
+ }
174
+ resolve(output);
175
+ });
176
+ });
177
+ }
178
+ function commandEnvironment() {
179
+ const inherited = [
180
+ 'PATH', 'HTTP_PROXY', 'HTTPS_PROXY', 'ALL_PROXY', 'NO_PROXY',
181
+ 'http_proxy', 'https_proxy', 'all_proxy', 'no_proxy', 'npm_config_registry',
182
+ ];
183
+ const env = {};
184
+ for (const name of inherited)
185
+ if (process.env[name] !== undefined)
186
+ env[name] = process.env[name];
187
+ return {
188
+ ...env,
189
+ CI: '1', NO_COLOR: '1', PAGER: 'cat', GIT_PAGER: 'cat', GIT_TERMINAL_PROMPT: '0',
190
+ NPM_CONFIG_AUDIT: 'false', NPM_CONFIG_FUND: 'false', NPM_CONFIG_UPDATE_NOTIFIER: 'false', NPM_CONFIG_COLOR: 'false',
191
+ };
192
+ }
193
+ function cleanOutput(value) {
194
+ const cleaned = value.replace(/\x1B\[[0-?]*[ -/]*[@-~]/gu, '').trim();
195
+ return cleaned.length <= 16_000 ? cleaned : `${cleaned.slice(0, 15_999)}…`;
196
+ }
197
+ function exitCode(error) {
198
+ if (error === null)
199
+ return 0;
200
+ const code = error.code;
201
+ return typeof code === 'number' ? code : code === 'ETIMEDOUT' ? 124 : 1;
202
+ }
203
+ function quoteDisplayToken(value) {
204
+ return /^[a-zA-Z0-9@%_./:=+-]+$/u.test(value) ? value : JSON.stringify(value);
205
+ }
206
+ function record(value) {
207
+ if (typeof value !== 'object' || value === null || Array.isArray(value))
208
+ throw new Error('arguments must be an object');
209
+ return value;
210
+ }
211
+ //# sourceMappingURL=heartbeat-command.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"heartbeat-command.js","sourceRoot":"","sources":["../src/heartbeat-command.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAA0B,MAAM,oBAAoB,CAAA;AAGrE,MAAM,CAAC,MAAM,uBAAuB,GAAG,yBAAyB,CAAA;AAEhE,MAAM,kBAAkB,GAAG,KAAK,CAAA;AAChC,MAAM,kBAAkB,GAAG,EAAE,GAAG,IAAI,CAAA;AACpC,MAAM,kBAAkB,GAAG,GAAG,CAAA;AAC9B,MAAM,YAAY,GAAG,qDAAqD,CAAA;AAQ1E;;;;GAIG;AACH,MAAM,UAAU,yBAAyB,CAAC,GAAW;IACnD,OAAO;QACL,IAAI,EAAE,uBAAuB;QAC7B,WAAW,EAAE;YACX,oJAAoJ;YACpJ,qLAAqL;YACrL,8PAA8P;YAC9P,gOAAgO;SACjO,CAAC,IAAI,CAAC,GAAG,CAAC;QACX,UAAU,EAAE;YACV,IAAI,EAAE,QAAQ,EAAE,oBAAoB,EAAE,KAAK;YAC3C,UAAU,EAAE;gBACV,OAAO,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,mGAAmG,EAAE;aAC9I;YACD,QAAQ,EAAE,CAAC,SAAS,CAAC;SACtB;QACD,MAAM,EAAE;YACN,MAAM,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;YAC1B,MAAM,EAAE,CAAC,KAAK,EAAE,KAAK,EAAE,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC;SAClE;QACD,WAAW,EAAE,GAAG,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAC;QACzD,SAAS,EAAE,kBAAkB,GAAG,KAAK;QACrC,iBAAiB,EAAE,GAAG,EAAE,CAAC,IAAI;QAC7B,KAAK,CAAC,OAAO,CAAC,KAAK,EAAE,IAAI;YACvB,MAAM,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC,CAAA;YAC3B,IAAI,OAAO,KAAK,CAAC,OAAO,KAAK,QAAQ;gBAAE,MAAM,IAAI,KAAK,CAAC,0BAA0B,CAAC,CAAA;YAClF,MAAM,UAAU,GAAG,yBAAyB,CAAC,KAAK,CAAC,OAAO,CAAC,CAAA;YAC3D,MAAM,MAAM,GAAG,MAAM,oBAAoB,CAAC,UAAU,EAAE,GAAG,EAAE,IAAI,CAAC,MAAM,CAAC,CAAA;YACvE,OAAO;gBACL,YAAY,UAAU,CAAC,OAAO,EAAE;gBAChC,cAAc,MAAM,CAAC,QAAQ,EAAE;gBAC/B,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,YAAY,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,iBAAiB;gBAC/D,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,YAAY,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE;aACjD,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;QAC9B,CAAC;KACF,CAAA;AACH,CAAC;AAED,MAAM,UAAU,yBAAyB,CAAC,OAAe;IACvD,MAAM,UAAU,GAAG,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,CAAA;IACnD,IAAI,CAAC,UAAU,IAAI,UAAU,CAAC,MAAM,GAAG,kBAAkB;QAAE,MAAM,IAAI,KAAK,CAAC,0BAA0B,kBAAkB,aAAa,CAAC,CAAA;IACrI,IAAI,WAAW,CAAC,IAAI,CAAC,UAAU,CAAC;QAAE,MAAM,IAAI,KAAK,CAAC,oCAAoC,CAAC,CAAA;IACvF,MAAM,MAAM,GAAG,eAAe,CAAC,UAAU,CAAC,CAAA;IAC1C,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC;QAAE,MAAM,IAAI,KAAK,CAAC,gDAAgD,CAAC,CAAA;IAC/G,MAAM,CAAC,IAAI,EAAE,GAAG,IAAI,CAAC,GAAG,MAA+B,CAAA;IACvD,IAAI,qBAAqB,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,sBAAsB,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,yBAAyB,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,iBAAiB,CAAC,IAAI,EAAE,IAAI,CAAC,EAAE,CAAC;QACtJ,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,CAAC,GAAG,CAAC,iBAAiB,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAA;IACzE,CAAC;IACD,MAAM,IAAI,KAAK,CAAC,wDAAwD,IAAI,EAAE,CAAC,CAAA;AACjF,CAAC;AAED,SAAS,qBAAqB,CAAC,IAAY,EAAE,IAAc;IACzD,MAAM,WAAW,GAAsC;QACrD,GAAG,EAAE,CAAC,IAAI,EAAE,WAAW,CAAC;QACxB,IAAI,EAAE,CAAC,IAAI,EAAE,WAAW,CAAC;QACzB,GAAG,EAAE,CAAC,IAAI,EAAE,WAAW,CAAC;QACxB,IAAI,EAAE,CAAC,IAAI,EAAE,WAAW,CAAC;QACzB,IAAI,EAAE,CAAC,IAAI,EAAE,WAAW,CAAC;QACzB,MAAM,EAAE,CAAC,IAAI,EAAE,WAAW,CAAC;QAC3B,OAAO,EAAE,CAAC,IAAI,EAAE,WAAW,CAAC;QAC5B,MAAM,EAAE,CAAC,IAAI,EAAE,WAAW,CAAC;QAC3B,MAAM,EAAE,CAAC,IAAI,EAAE,WAAW,CAAC;QAC3B,GAAG,EAAE,CAAC,WAAW,CAAC;KACnB,CAAA;IACD,OAAO,IAAI,CAAC,MAAM,KAAK,CAAC,IAAI,WAAW,CAAC,IAAI,CAAC,EAAE,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,KAAK,IAAI,CAAA;AACjF,CAAC;AAED,SAAS,sBAAsB,CAAC,IAAY,EAAE,IAAc;IAC1D,IAAI,IAAI,KAAK,KAAK,IAAI,IAAI,KAAK,MAAM;QAAE,OAAO,KAAK,CAAA;IACnD,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,MAAM,IAAI,IAAI,CAAC,CAAC,CAAC,KAAK,MAAM,CAAC;QAAE,OAAO,KAAK,CAAA;IACjF,OAAO,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,SAAS,IAAI,IAAI,CAAC,CAAC,CAAC,KAAK,kBAAkB,CAAC,CAAA;AACtG,CAAC;AAED,SAAS,yBAAyB,CAAC,IAAY,EAAE,IAAc;IAC7D,IAAI,IAAI,KAAK,KAAK,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,KAAK,CAAA;IACrD,OAAO,IAAI,CAAC,CAAC,CAAC,KAAK,MAAM,IAAI,IAAI,CAAC,CAAC,CAAC,KAAK,IAAI,IAAI,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,KAAK,WAAW,IAAI,IAAI,CAAC,CAAC,CAAC,KAAK,QAAQ,CAAA;AACtI,CAAC;AAED,SAAS,iBAAiB,CAAC,IAAY,EAAE,IAAc;IACrD,IAAI,IAAI,KAAK,KAAK;QAAE,OAAO,KAAK,CAAA;IAChC,MAAM,MAAM,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;IAC9B,OAAO,IAAI,GAAG,CAAC;QACb,2BAA2B;QAC3B,4BAA4B;QAC5B,qCAAqC;QACrC,iBAAiB;QACjB,0BAA0B;QAC1B,wBAAwB;QACxB,sBAAsB;QACtB,sBAAsB;KACvB,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,CAAA;AAChB,CAAC;AAED,SAAS,eAAe,CAAC,KAAa;IACpC,MAAM,MAAM,GAAa,EAAE,CAAA;IAC3B,IAAI,OAAO,GAAG,EAAE,CAAA;IAChB,IAAI,KAA4B,CAAA;IAChC,IAAI,QAAQ,GAAG,KAAK,CAAA;IACpB,IAAI,OAAO,GAAG,KAAK,CAAA;IACnB,KAAK,MAAM,SAAS,IAAI,KAAK,EAAE,CAAC;QAC9B,IAAI,QAAQ,EAAE,CAAC;YACb,OAAO,IAAI,SAAS,CAAA;YACpB,QAAQ,GAAG,KAAK,CAAA;YAChB,OAAO,GAAG,IAAI,CAAA;YACd,SAAQ;QACV,CAAC;QACD,IAAI,SAAS,KAAK,IAAI,IAAI,KAAK,KAAK,GAAG,EAAE,CAAC;YACxC,QAAQ,GAAG,IAAI,CAAA;YACf,OAAO,GAAG,IAAI,CAAA;YACd,SAAQ;QACV,CAAC;QACD,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;YACxB,IAAI,SAAS,KAAK,KAAK;gBAAE,KAAK,GAAG,SAAS,CAAA;;gBACrC,OAAO,IAAI,SAAS,CAAA;YACzB,OAAO,GAAG,IAAI,CAAA;YACd,SAAQ;QACV,CAAC;QACD,IAAI,SAAS,KAAK,GAAG,IAAI,SAAS,KAAK,GAAG,EAAE,CAAC;YAC3C,KAAK,GAAG,SAAS,CAAA;YACjB,OAAO,GAAG,IAAI,CAAA;YACd,SAAQ;QACV,CAAC;QACD,IAAI,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,CAAC;YAC1B,IAAI,OAAO,EAAE,CAAC;gBACZ,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAA;gBACpB,OAAO,GAAG,EAAE,CAAA;gBACZ,OAAO,GAAG,KAAK,CAAA;YACjB,CAAC;YACD,SAAQ;QACV,CAAC;QACD,IAAI,aAAa,CAAC,QAAQ,CAAC,SAAS,CAAC;YAAE,MAAM,IAAI,KAAK,CAAC,uCAAuC,SAAS,EAAE,CAAC,CAAA;QAC1G,OAAO,IAAI,SAAS,CAAA;QACpB,OAAO,GAAG,IAAI,CAAA;IAChB,CAAC;IACD,IAAI,KAAK,KAAK,SAAS,IAAI,QAAQ;QAAE,MAAM,IAAI,KAAK,CAAC,gDAAgD,CAAC,CAAA;IACtG,IAAI,OAAO;QAAE,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAA;IACjC,OAAO,MAAM,CAAA;AACf,CAAC;AAED,SAAS,oBAAoB,CAAC,OAAmC,EAAE,GAAW,EAAE,MAAmB;IACjG,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;QACrC,QAAQ,CAAC,OAAO,CAAC,IAAI,EAAE,OAAO,CAAC,IAAI,EAAE;YACnC,GAAG;YACH,MAAM;YACN,OAAO,EAAE,kBAAkB;YAC3B,SAAS,EAAE,kBAAkB;YAC7B,WAAW,EAAE,IAAI;YACjB,QAAQ,EAAE,MAAM;YAChB,GAAG,EAAE,kBAAkB,EAAE;SAC1B,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,EAAE;YAC3B,MAAM,MAAM,GAAG,EAAE,MAAM,EAAE,WAAW,CAAC,MAAM,CAAC,EAAE,MAAM,EAAE,WAAW,CAAC,MAAM,CAAC,EAAE,QAAQ,EAAE,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAA;YACtG,IAAI,KAAK,KAAK,IAAI,EAAE,CAAC;gBACnB,MAAM,MAAM,GAAG,MAAM,CAAC,MAAM,IAAI,MAAM,CAAC,MAAM,IAAI,KAAK,CAAC,OAAO,CAAA;gBAC9D,MAAM,CAAC,IAAI,KAAK,CAAC,kCAAkC,MAAM,CAAC,QAAQ,MAAM,MAAM,EAAE,CAAC,CAAC,CAAA;gBAClF,OAAM;YACR,CAAC;YACD,OAAO,CAAC,MAAM,CAAC,CAAA;QACjB,CAAC,CAAC,CAAA;IACJ,CAAC,CAAC,CAAA;AACJ,CAAC;AAED,SAAS,kBAAkB;IACzB,MAAM,SAAS,GAAG;QAChB,MAAM,EAAE,YAAY,EAAE,aAAa,EAAE,WAAW,EAAE,UAAU;QAC5D,YAAY,EAAE,aAAa,EAAE,WAAW,EAAE,UAAU,EAAE,qBAAqB;KAC5E,CAAA;IACD,MAAM,GAAG,GAAsB,EAAE,CAAA;IACjC,KAAK,MAAM,IAAI,IAAI,SAAS;QAAE,IAAI,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,SAAS;YAAE,GAAG,CAAC,IAAI,CAAC,GAAG,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,CAAA;IAChG,OAAO;QACL,GAAG,GAAG;QACN,EAAE,EAAE,GAAG,EAAE,QAAQ,EAAE,GAAG,EAAE,KAAK,EAAE,KAAK,EAAE,SAAS,EAAE,KAAK,EAAE,mBAAmB,EAAE,GAAG;QAChF,gBAAgB,EAAE,OAAO,EAAE,eAAe,EAAE,OAAO,EAAE,0BAA0B,EAAE,OAAO,EAAE,gBAAgB,EAAE,OAAO;KACpH,CAAA;AACH,CAAC;AAED,SAAS,WAAW,CAAC,KAAa;IAChC,MAAM,OAAO,GAAG,KAAK,CAAC,OAAO,CAAC,2BAA2B,EAAE,EAAE,CAAC,CAAC,IAAI,EAAE,CAAA;IACrE,OAAO,OAAO,CAAC,MAAM,IAAI,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,MAAM,CAAC,GAAG,CAAA;AAC5E,CAAC;AAED,SAAS,QAAQ,CAAC,KAA+B;IAC/C,IAAI,KAAK,KAAK,IAAI;QAAE,OAAO,CAAC,CAAA;IAC5B,MAAM,IAAI,GAAG,KAAK,CAAC,IAAI,CAAA;IACvB,OAAO,OAAO,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,KAAK,WAAW,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAA;AACzE,CAAC;AAED,SAAS,iBAAiB,CAAC,KAAa;IACtC,OAAO,0BAA0B,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAA;AAC/E,CAAC;AAED,SAAS,MAAM,CAAC,KAAc;IAC5B,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC;QAAE,MAAM,IAAI,KAAK,CAAC,6BAA6B,CAAC,CAAA;IACvH,OAAO,KAAgC,CAAA;AACzC,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@lemoncat7/dsh-partner",
3
- "version": "1.4.0",
3
+ "version": "1.4.2",
4
4
  "description": "Long-lived AI companions with WeChat channel routing for DeepSeek Harness",
5
5
  "keywords": [
6
6
  "deepseek-harness",