@co0ontty/wand 4.97.0 → 4.98.0

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 (160) hide show
  1. package/README.md +0 -4
  2. package/dist/agent-dispatch.d.ts +1 -0
  3. package/dist/agent-dispatch.js +13 -2
  4. package/dist/ai-team-types.d.ts +1 -1
  5. package/dist/ai-team-types.js +1 -1
  6. package/dist/build-info.json +3 -3
  7. package/dist/cli.js +2 -0
  8. package/dist/config.d.ts +1 -1
  9. package/dist/config.js +2 -2
  10. package/dist/core-runner.d.ts +0 -4
  11. package/dist/core-runner.js +41 -3
  12. package/dist/decision-expert-employee.js +1 -0
  13. package/dist/distribution-manager.d.ts +29 -4
  14. package/dist/distribution-manager.js +147 -57
  15. package/dist/employee-types.d.ts +2 -1
  16. package/dist/employee-types.js +2 -4
  17. package/dist/feedback-feature-map.d.ts +0 -1
  18. package/dist/feedback-feature-map.js +0 -1
  19. package/dist/feedback.d.ts +0 -1
  20. package/dist/feedback.js +1 -1
  21. package/dist/git-quick-commit.js +13 -52
  22. package/dist/git-tag-generation.d.ts +11 -0
  23. package/dist/git-tag-generation.js +47 -0
  24. package/dist/hr-employee.js +1 -0
  25. package/dist/local-model-setup.d.ts +1 -9
  26. package/dist/local-model-setup.js +52 -166
  27. package/dist/local-model-types.d.ts +2 -5
  28. package/dist/managed-temp.d.ts +1 -1
  29. package/dist/managed-temp.js +1 -1
  30. package/dist/middleware/api-scope.js +2 -4
  31. package/dist/migration-backup-retention.d.ts +17 -0
  32. package/dist/migration-backup-retention.js +91 -0
  33. package/dist/pi-tmux-host.d.ts +28 -0
  34. package/dist/pi-tmux-host.js +189 -0
  35. package/dist/server-employee-routes.d.ts +1 -0
  36. package/dist/server-employee-routes.js +17 -4
  37. package/dist/server-local-model-routes.js +2 -15
  38. package/dist/server-session-input-routes.js +3 -3
  39. package/dist/server-session-lifecycle-routes.js +94 -18
  40. package/dist/server-task-routes.js +18 -13
  41. package/dist/server-update-routes.d.ts +11 -1
  42. package/dist/server-update-routes.js +25 -12
  43. package/dist/server-workspace-routes.js +11 -5
  44. package/dist/server.js +29 -129
  45. package/dist/storage/conversations-repository.d.ts +2 -0
  46. package/dist/storage/conversations-repository.js +4 -0
  47. package/dist/storage/employees-repository.d.ts +2 -2
  48. package/dist/storage/employees-repository.js +12 -15
  49. package/dist/storage/internal.js +2 -2
  50. package/dist/storage/migrations.js +20 -0
  51. package/dist/storage/readonly.js +3 -0
  52. package/dist/storage/sessions-repository.d.ts +2 -0
  53. package/dist/storage/sessions-repository.js +13 -0
  54. package/dist/storage/tasks-repository.d.ts +22 -0
  55. package/dist/storage/tasks-repository.js +52 -3
  56. package/dist/storage/workspaces-repository.d.ts +1 -0
  57. package/dist/storage/workspaces-repository.js +3 -1
  58. package/dist/storage-cleanup.d.ts +37 -2
  59. package/dist/storage-cleanup.js +62 -2
  60. package/dist/storage-schema.js +9 -0
  61. package/dist/structured-claude-adapter.js +5 -1
  62. package/dist/structured-claude-protocol.d.ts +1 -1
  63. package/dist/structured-claude-protocol.js +12 -1
  64. package/dist/structured-runner.d.ts +2 -0
  65. package/dist/structured-session-manager.d.ts +14 -2
  66. package/dist/structured-session-manager.js +87 -14
  67. package/dist/system-ai-call.d.ts +5 -1
  68. package/dist/system-ai-call.js +32 -1
  69. package/dist/system-ai-session-recorder.d.ts +2 -0
  70. package/dist/system-ai-session-recorder.js +35 -3
  71. package/dist/system-cli.js +6 -1
  72. package/dist/system-employee.js +1 -0
  73. package/dist/task-comment-dispatch.d.ts +18 -0
  74. package/dist/task-comment-dispatch.js +121 -0
  75. package/dist/task-types.d.ts +14 -0
  76. package/dist/version-utils.d.ts +31 -0
  77. package/dist/version-utils.js +35 -0
  78. package/dist/web-ui/content/ai-teams.js +10 -10
  79. package/dist/web-ui/content/module-manifest.json +1 -1
  80. package/dist/web-ui/content/modules/02b1ec89c69dc0dd/host.js +30 -0
  81. package/dist/web-ui/content/modules/{e8f0cda6b9ac8a70 → 0434a45abd2c1d15}/chunk.js +1 -1
  82. package/dist/web-ui/content/modules/{e9a01a25ec573294 → 0afa04591224bc23}/library-bridge.js +1 -1
  83. package/dist/web-ui/content/modules/{b33c567946044d83 → 0bf4a78c8be1bdc9}/host.js +1 -1
  84. package/dist/web-ui/content/modules/17f72e0fb014a302/chat-render.js +75 -0
  85. package/dist/web-ui/content/modules/{5903104a2e0e3888 → 183db4802a7d99ed}/host.js +1 -1
  86. package/dist/web-ui/content/modules/23d2006fcfcf3c0c/host-bridge.js +1 -0
  87. package/dist/web-ui/content/modules/{0c96341a022aa360 → 32f151da1a006041}/host.js +1 -1
  88. package/dist/web-ui/content/modules/{3172fe0b46d51f8d → 34a7674efc329383}/chunk.js +1 -1
  89. package/dist/web-ui/content/modules/3541ba4cb2886e29/chunk.js +1 -0
  90. package/dist/web-ui/content/modules/{801e7f686ce7eb28 → 395257bd20cd0098}/chunk.js +1 -1
  91. package/dist/web-ui/content/modules/{3ddcbd8505bfcdf4 → 3fd75af0a6891549}/chunk.js +1 -1
  92. package/dist/web-ui/content/modules/{c41d8ffa27816766 → 428352e422932c40}/host.js +1 -1
  93. package/dist/web-ui/content/modules/485a72b2c83e7680/workspace-window.js +1 -0
  94. package/dist/web-ui/content/modules/489dfe1f7441ef2c/markdown.js +1 -0
  95. package/dist/web-ui/content/modules/4b42b4336458b7b5/runtime.js +550 -0
  96. package/dist/web-ui/content/modules/{de00ab5329b5e05a → 528c5d97e8f9d582}/chunk.js +1 -1
  97. package/dist/web-ui/content/modules/{3086df78444998b3 → 535aad05d34079d2}/host.js +1 -1
  98. package/dist/web-ui/content/modules/62028b9bbf8ffc88/page.js +6 -0
  99. package/dist/web-ui/content/modules/6868f75a5981ad08/host.js +69 -0
  100. package/dist/web-ui/content/modules/6c72c8c166e34de7/host.js +1 -0
  101. package/dist/web-ui/content/modules/6ff6ce370ef26753/host.js +1 -0
  102. package/dist/web-ui/content/modules/{87379801875d1921 → 72bef6889fdafefe}/host.js +1 -1
  103. package/dist/web-ui/content/modules/{5e5eabd9a9366a56 → 763c79f5527d762a}/panel.js +1 -1
  104. package/dist/web-ui/content/modules/{d30ac9af6dc7d555 → 77ea205020273767}/chunk.js +1 -1
  105. package/dist/web-ui/content/modules/{e01e1e25b7fe37e9 → 7fb02c44fd6f877b}/host.js +1 -1
  106. package/dist/web-ui/content/modules/{349ee129eef5a182 → 818d87c1651fc6a1}/chunk.js +1 -1
  107. package/dist/web-ui/content/modules/{66f36cd2c38cfb07 → 8cb5d84a2731789e}/chunk.js +1 -1
  108. package/dist/web-ui/content/modules/{f5b3fb6fedd9b05d → 96e78c7f2cd9acd5}/chunk.js +1 -1
  109. package/dist/web-ui/content/modules/{64c1b0217f5377aa → a60a07ba1abcdc3f}/chunk.js +1 -1
  110. package/dist/web-ui/content/modules/{ee12d3c4421a5c12 → b4bcb9bf5cfb0b3a}/host.js +1 -1
  111. package/dist/web-ui/content/modules/b71cda413318d71f/employee-card.js +1 -0
  112. package/dist/web-ui/content/modules/bb0c299cf006e157/task-board-host.js +17 -0
  113. package/dist/web-ui/content/modules/{42ae495da5903b07 → c8c6adee81d4bd98}/sha256.js +1 -1
  114. package/dist/web-ui/content/modules/{854b0f6dc887923b → cd0cec0ba1887ffd}/chunk.js +1 -1
  115. package/dist/web-ui/content/modules/{3338b55c7767bacb → d673a76becc7d1f5}/chunk.js +1 -1
  116. package/dist/web-ui/content/modules/{2bce1137f402bd70 → d99ea7e921488348}/chunk.js +1 -1
  117. package/dist/web-ui/content/modules/{a9f15bd03bc590e7 → e862ccabc908eb0c}/host.js +1 -1
  118. package/dist/web-ui/content/modules/{9984f6bb05ac55bb → eb46bf62b1ae1bea}/host.js +1 -1
  119. package/dist/web-ui/content/plush-avatar.js +166 -166
  120. package/dist/web-ui/content/styles.css +1 -1
  121. package/dist/web-ui/embedded-assets.d.ts +177 -177
  122. package/dist/web-ui/embedded-assets.js +6 -6
  123. package/dist/web-ui/page-route.d.ts +24 -0
  124. package/dist/web-ui/page-route.js +130 -0
  125. package/dist/web-ui/pty-input-state.d.ts +2 -0
  126. package/dist/web-ui/pty-input-state.js +2 -2
  127. package/dist/web-ui/react/workspaces/types.d.ts +5 -0
  128. package/package.json +1 -3
  129. package/dist/server-speech-routes.d.ts +0 -10
  130. package/dist/server-speech-routes.js +0 -93
  131. package/dist/speech-models.d.ts +0 -24
  132. package/dist/speech-models.js +0 -16
  133. package/dist/speech-polisher-employee.d.ts +0 -6
  134. package/dist/speech-polisher-employee.js +0 -23
  135. package/dist/speech-polisher-identity.d.ts +0 -4
  136. package/dist/speech-polisher-identity.js +0 -4
  137. package/dist/speech-polisher-service.d.ts +0 -33
  138. package/dist/speech-polisher-service.js +0 -110
  139. package/dist/speech-service.d.ts +0 -59
  140. package/dist/speech-service.js +0 -420
  141. package/dist/speech-support.d.ts +0 -6
  142. package/dist/speech-support.js +0 -24
  143. package/dist/speech-types.d.ts +0 -52
  144. package/dist/speech-types.js +0 -3
  145. package/dist/web-ui/content/modules/15e32e85e086f6b4/page.js +0 -6
  146. package/dist/web-ui/content/modules/1e43259bddbc6805/markdown.js +0 -1
  147. package/dist/web-ui/content/modules/271d488d262909c2/host.js +0 -30
  148. package/dist/web-ui/content/modules/43746e7237d61da9/task-board-host.js +0 -17
  149. package/dist/web-ui/content/modules/4485e6c1f0459aa8/chunk.js +0 -1
  150. package/dist/web-ui/content/modules/5b541e0f296a3592/employee-card.js +0 -1
  151. package/dist/web-ui/content/modules/6ed52e6604661678/chat-render.js +0 -75
  152. package/dist/web-ui/content/modules/89888da0972e5033/host.js +0 -50
  153. package/dist/web-ui/content/modules/c11165f843d818f4/host-bridge.js +0 -1
  154. package/dist/web-ui/content/modules/c1829693f91fd25c/host.js +0 -1
  155. package/dist/web-ui/content/modules/cdb882ddab12e325/host.js +0 -1
  156. package/dist/web-ui/content/modules/ea67fd4e96c9f45a/workspace-window.js +0 -1
  157. package/dist/web-ui/content/modules/fd767282c29173b5/runtime.js +0 -539
  158. package/dist/web-ui/speech-audio.d.ts +0 -2
  159. package/dist/web-ui/speech-audio.js +0 -41
  160. package/scripts/install-speech-runtime.js +0 -82
@@ -1,2 +0,0 @@
1
- /** Encode and downsample locally so hosts need no ffmpeg/codec dependencies. */
2
- export declare function encodeSpeechWav(channels: readonly Float32Array[], sourceRate: number): ArrayBuffer;
@@ -1,41 +0,0 @@
1
- import { SPEECH_MAX_SECONDS, SPEECH_SAMPLE_RATE } from "../speech-types.js";
2
- /** Encode and downsample locally so hosts need no ffmpeg/codec dependencies. */
3
- export function encodeSpeechWav(channels, sourceRate) {
4
- if (!channels.length || !Number.isFinite(sourceRate) || sourceRate < SPEECH_SAMPLE_RATE
5
- || !channels[0]?.length || channels.some((channel) => channel.length !== channels[0].length))
6
- throw new Error("麦克风音频格式无效。");
7
- const frames = channels[0].length;
8
- if (frames / sourceRate > SPEECH_MAX_SECONDS + 0.05)
9
- throw new Error("语音最长 60 秒,请分段录音。");
10
- const count = Math.min(SPEECH_SAMPLE_RATE * SPEECH_MAX_SECONDS, Math.floor(frames * SPEECH_SAMPLE_RATE / sourceRate));
11
- if (count < 1600)
12
- throw new Error("录音太短,请按住麦克风说话。");
13
- const bytes = new ArrayBuffer(44 + count * 2);
14
- const view = new DataView(bytes);
15
- const ascii = (offset, value) => { for (let index = 0; index < value.length; index += 1)
16
- view.setUint8(offset + index, value.charCodeAt(index)); };
17
- ascii(0, "RIFF");
18
- view.setUint32(4, bytes.byteLength - 8, true);
19
- ascii(8, "WAVEfmt ");
20
- view.setUint32(16, 16, true);
21
- view.setUint16(20, 1, true);
22
- view.setUint16(22, 1, true);
23
- view.setUint32(24, SPEECH_SAMPLE_RATE, true);
24
- view.setUint32(28, SPEECH_SAMPLE_RATE * 2, true);
25
- view.setUint16(32, 2, true);
26
- view.setUint16(34, 16, true);
27
- ascii(36, "data");
28
- view.setUint32(40, count * 2, true);
29
- const ratio = sourceRate / SPEECH_SAMPLE_RATE;
30
- for (let index = 0; index < count; index += 1) {
31
- const start = Math.floor(index * ratio);
32
- const end = Math.max(start + 1, Math.floor((index + 1) * ratio));
33
- let sample = 0;
34
- for (const channel of channels)
35
- for (let source = start; source < end; source += 1)
36
- sample += channel[source] ?? 0;
37
- sample = Math.max(-1, Math.min(1, sample / ((end - start) * channels.length)));
38
- view.setInt16(44 + index * 2, Math.round(sample < 0 ? sample * 32768 : sample * 32767), true);
39
- }
40
- return bytes;
41
- }
@@ -1,82 +0,0 @@
1
- #!/usr/bin/env node
2
- // Explicit host-side installation; admin model setup may launch this fixed script, never arbitrary HTTP commands.
3
- import { spawnSync } from "node:child_process";
4
- import { existsSync } from "node:fs";
5
- import { cp, mkdir, mkdtemp, rename, rm, writeFile } from "node:fs/promises";
6
- import os from "node:os";
7
- import path from "node:path";
8
- import { buildChildEnv } from "../dist/env-utils.js";
9
-
10
- const SOURCE_COMMIT = "2eeeba56e9edd762b4b38467bab96c2517163158"; // whisper.cpp v1.8.3
11
- const args = process.argv.slice(2);
12
- let backend = "auto";
13
- let root = path.join(os.homedir(), ".wand", "speech");
14
- let workDirectory;
15
- let events = false;
16
- for (let i = 0; i < args.length; i += 1) {
17
- if (args[i] === "--backend") backend = args[++i];
18
- else if (args[i] === "--events") events = true;
19
- else if (args[i] === "--work-dir") {
20
- const directory = args[++i];
21
- if (!directory || directory.startsWith("--")) throw new Error("--work-dir requires a directory");
22
- workDirectory = path.resolve(directory);
23
- }
24
- else if (args[i] === "--dir") {
25
- const directory = args[++i];
26
- if (!directory || directory.startsWith("--")) throw new Error("--dir requires an installation directory");
27
- root = path.resolve(directory);
28
- }
29
- else if (args[i] === "--help") {
30
- console.log("node scripts/install-speech-runtime.js [--backend auto|cpu|metal|cuda] [--dir ~/.wand/speech]");
31
- process.exit(0);
32
- } else throw new Error(`Unknown option: ${args[i]}`);
33
- }
34
- if (!["auto", "cpu", "metal", "cuda"].includes(backend)) throw new Error("Invalid backend");
35
- if (!["darwin", "linux", "win32"].includes(process.platform)) throw new Error("Supported hosts: macOS, Linux, Windows");
36
- if (backend === "auto") backend = process.platform === "darwin" ? "metal" : "cpu";
37
- if (backend === "metal" && process.platform !== "darwin") throw new Error("Metal requires macOS");
38
-
39
- function progress(phase, message) {
40
- if (events) console.log("[wand-model] " + JSON.stringify({ phase, message })); else console.log(message);
41
- }
42
- function run(command, arguments_, cwd, quiet = false) {
43
- const result = spawnSync(command, arguments_, { cwd, env: buildChildEnv(true), shell: false, stdio: quiet || events ? "pipe" : "inherit", encoding: "utf8", windowsHide: true });
44
- if (result.error || result.status !== 0) throw new Error(`${command} failed: install Git, CMake and a C++ toolchain first (CUDA also needs its toolkit)`);
45
- return result.stdout?.trim();
46
- }
47
- const work = workDirectory ?? await mkdtemp(path.join(os.tmpdir(), "wand-whisper-build-"));
48
- if (workDirectory) await mkdir(workDirectory, { recursive: true, mode: 0o700 });
49
- const staging = path.join(root, `bin-staging-${process.pid}`);
50
- const bin = path.join(root, "bin");
51
- const backup = path.join(root, `bin-previous-${process.pid}`);
52
- try {
53
- progress("runtime", "准备固定 whisper.cpp v1.8.3 源码");
54
- run("git", ["init", work], work);
55
- run("git", ["remote", "add", "origin", "https://github.com/ggml-org/whisper.cpp.git"], work);
56
- run("git", ["fetch", "--depth", "1", "origin", SOURCE_COMMIT], work);
57
- run("git", ["checkout", "--detach", "FETCH_HEAD"], work);
58
- if (run("git", ["rev-parse", "HEAD"], work, true) !== SOURCE_COMMIT) throw new Error("Source revision mismatch");
59
- progress("runtime", `配置 ${backend.toUpperCase()} 运行时与编译工具链`);
60
- run("cmake", ["-S", work, "-B", path.join(work, "build"), "-DCMAKE_BUILD_TYPE=Release",
61
- "-DBUILD_SHARED_LIBS=OFF", "-DWHISPER_BUILD_TESTS=OFF", "-DWHISPER_CURL=OFF", "-DGGML_NATIVE=OFF",
62
- `-DGGML_METAL=${backend === "metal" ? "ON" : "OFF"}`, "-DGGML_METAL_EMBED_LIBRARY=ON",
63
- `-DGGML_CUDA=${backend === "cuda" ? "ON" : "OFF"}`], work);
64
- progress("runtime", "编译 whisper.cpp,仅安装可选语音组件");
65
- run("cmake", ["--build", path.join(work, "build"), "--config", "Release", "--target", "whisper-cli", "-j", String(Math.min(8, os.availableParallelism()))], work);
66
- const name = process.platform === "win32" ? "whisper-cli.exe" : "whisper-cli";
67
- const candidates = [path.join(work, "build", "bin", "Release"), path.join(work, "build", "bin")];
68
- const built = candidates.find((directory) => existsSync(path.join(directory, name)));
69
- if (!built) throw new Error("whisper-cli was not produced");
70
- progress("verifying", "校验语音运行时可执行文件");
71
- run(path.join(built, name), ["--help"], work, true);
72
- await mkdir(root, { recursive: true, mode: 0o700 });
73
- await cp(built, staging, { recursive: true });
74
- if (existsSync(bin)) await rename(bin, backup);
75
- try { await rename(staging, bin); } catch (error) { if (existsSync(backup)) await rename(backup, bin); throw error; }
76
- await writeFile(path.join(root, "runtime.json"), JSON.stringify({ version: "1.8.3", sourceCommit: SOURCE_COMMIT, backend, platform: process.platform, arch: process.arch }, null, 2) + "\n", { mode: 0o600 });
77
- await rm(backup, { recursive: true, force: true });
78
- progress("completed", `whisper.cpp v1.8.3 (${backend}) 已安装;未改变模型启用状态`);
79
- } finally {
80
- await rm(work, { recursive: true, force: true });
81
- await rm(staging, { recursive: true, force: true });
82
- }