@co0ontty/wand 4.83.1 → 4.84.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 (188) hide show
  1. package/README.md +4 -0
  2. package/dist/agent-dispatch.js +5 -1
  3. package/dist/ai-team-availability.d.ts +1 -1
  4. package/dist/ai-team-prompts.js +13 -4
  5. package/dist/ai-team-runner.d.ts +80 -5
  6. package/dist/ai-team-runner.js +332 -55
  7. package/dist/ai-team-types.d.ts +92 -5
  8. package/dist/ai-team-types.js +9 -2
  9. package/dist/build-info.json +3 -3
  10. package/dist/cli-api.d.ts +1 -0
  11. package/dist/cli-api.js +3 -0
  12. package/dist/cli.js +18 -1
  13. package/dist/commit-task-archive.d.ts +3 -1
  14. package/dist/commit-task-archive.js +21 -10
  15. package/dist/config.d.ts +1 -1
  16. package/dist/config.js +73 -0
  17. package/dist/conversation-mentions.d.ts +16 -0
  18. package/dist/conversation-mentions.js +32 -0
  19. package/dist/conversation-service.d.ts +90 -0
  20. package/dist/conversation-service.js +759 -0
  21. package/dist/conversation-session-preview.d.ts +9 -0
  22. package/dist/conversation-session-preview.js +47 -0
  23. package/dist/conversation-task-preview.d.ts +5 -0
  24. package/dist/conversation-task-preview.js +8 -0
  25. package/dist/conversation-types.d.ts +80 -0
  26. package/dist/conversation-types.js +7 -0
  27. package/dist/core-extension-host.d.ts +27 -0
  28. package/dist/core-extension-host.js +138 -0
  29. package/dist/core-runner.d.ts +86 -0
  30. package/dist/core-runner.js +757 -0
  31. package/dist/core-status-cli.d.ts +9 -0
  32. package/dist/core-status-cli.js +280 -0
  33. package/dist/core-turn-tracker.d.ts +12 -0
  34. package/dist/core-turn-tracker.js +36 -0
  35. package/dist/decision-runner.d.ts +6 -0
  36. package/dist/decision-runner.js +3 -1
  37. package/dist/decision-tool.d.ts +2 -0
  38. package/dist/decision-tool.js +49 -22
  39. package/dist/env-utils.d.ts +7 -3
  40. package/dist/env-utils.js +30 -5
  41. package/dist/git-quick-commit.d.ts +5 -0
  42. package/dist/git-quick-commit.js +9 -3
  43. package/dist/git-utils.js +2 -1
  44. package/dist/harness-engine.d.ts +110 -0
  45. package/dist/harness-engine.js +331 -0
  46. package/dist/mission-diff.js +2 -1
  47. package/dist/model-auto-assign.d.ts +50 -0
  48. package/dist/model-auto-assign.js +163 -0
  49. package/dist/model-group-runner.d.ts +4 -0
  50. package/dist/model-group-runner.js +72 -0
  51. package/dist/model-groups.d.ts +38 -0
  52. package/dist/model-groups.js +138 -0
  53. package/dist/models.d.ts +12 -0
  54. package/dist/models.js +102 -8
  55. package/dist/npm-update-utils.js +2 -1
  56. package/dist/openrouter-free-cli.d.ts +25 -0
  57. package/dist/openrouter-free-cli.js +109 -0
  58. package/dist/openrouter-free-models.d.ts +85 -0
  59. package/dist/openrouter-free-models.js +458 -0
  60. package/dist/openrouter-free-selection.d.ts +5 -0
  61. package/dist/openrouter-free-selection.js +7 -0
  62. package/dist/path-repair.d.ts +10 -0
  63. package/dist/path-repair.js +50 -5
  64. package/dist/pi-auto-resources.d.ts +12 -0
  65. package/dist/pi-auto-resources.js +151 -0
  66. package/dist/pi-execution-types.d.ts +48 -0
  67. package/dist/pi-execution-types.js +1 -0
  68. package/dist/pi-execution.d.ts +9 -0
  69. package/dist/pi-execution.js +187 -0
  70. package/dist/pi-extension-resources.d.ts +13 -0
  71. package/dist/pi-extension-resources.js +71 -0
  72. package/dist/pi-openrouter-free-bridge.d.ts +2 -0
  73. package/dist/pi-openrouter-free-bridge.js +80 -0
  74. package/dist/pi-resource-bridge.d.ts +2 -0
  75. package/dist/pi-resource-bridge.js +73 -0
  76. package/dist/pi-resource-catalog.d.ts +18 -0
  77. package/dist/pi-resource-catalog.js +82 -0
  78. package/dist/pi-resource-recommendation.d.ts +29 -0
  79. package/dist/pi-resource-recommendation.js +169 -0
  80. package/dist/pi-resource-run.d.ts +8 -0
  81. package/dist/pi-resource-run.js +28 -0
  82. package/dist/pi-session-settings.d.ts +157 -0
  83. package/dist/pi-session-settings.js +166 -0
  84. package/dist/platform-action-catalog.d.ts +24 -0
  85. package/dist/platform-action-catalog.js +141 -0
  86. package/dist/platform-action-service.d.ts +37 -0
  87. package/dist/platform-action-service.js +138 -0
  88. package/dist/platform-action-types.d.ts +125 -0
  89. package/dist/platform-action-types.js +7 -0
  90. package/dist/process-manager.d.ts +21 -1
  91. package/dist/process-manager.js +168 -15
  92. package/dist/provider-catalog.js +1 -1
  93. package/dist/provider-cli-updater.js +29 -8
  94. package/dist/provider-history-scanner.d.ts +9 -0
  95. package/dist/provider-history-scanner.js +107 -1
  96. package/dist/retention.d.ts +19 -7
  97. package/dist/retention.js +171 -28
  98. package/dist/server-ai-team-routes.js +6 -2
  99. package/dist/server-conversation-routes.d.ts +5 -0
  100. package/dist/server-conversation-routes.js +91 -0
  101. package/dist/server-employee-routes.d.ts +2 -0
  102. package/dist/server-employee-routes.js +85 -11
  103. package/dist/server-pi-recommendation-routes.d.ts +13 -0
  104. package/dist/server-pi-recommendation-routes.js +67 -0
  105. package/dist/server-resume-routes.js +1 -1
  106. package/dist/server-session-routes.d.ts +4 -3
  107. package/dist/server-session-routes.js +182 -37
  108. package/dist/server-settings-routes.d.ts +5 -0
  109. package/dist/server-settings-routes.js +46 -0
  110. package/dist/server-task-routes.js +49 -4
  111. package/dist/server-team-dispatch-routes.d.ts +19 -0
  112. package/dist/server-team-dispatch-routes.js +71 -0
  113. package/dist/server-update-routes.d.ts +1 -1
  114. package/dist/server-update-routes.js +10 -5
  115. package/dist/server-workspace-routes.js +44 -24
  116. package/dist/server.d.ts +1 -0
  117. package/dist/server.js +148 -30
  118. package/dist/session-ai-context.d.ts +5 -1
  119. package/dist/session-ai-context.js +9 -4
  120. package/dist/session-registry.d.ts +4 -0
  121. package/dist/session-registry.js +47 -13
  122. package/dist/session-transport.js +8 -1
  123. package/dist/settings-web-access.d.ts +15 -0
  124. package/dist/settings-web-access.js +37 -0
  125. package/dist/silicon-employee-defaults.d.ts +29 -0
  126. package/dist/silicon-employee-defaults.js +41 -0
  127. package/dist/silicon-employee-dispatch.d.ts +5 -1
  128. package/dist/silicon-employee-dispatch.js +10 -4
  129. package/dist/silicon-employee-draft.d.ts +21 -4
  130. package/dist/silicon-employee-draft.js +103 -16
  131. package/dist/storage.d.ts +73 -2
  132. package/dist/storage.js +362 -26
  133. package/dist/structured-claude-protocol.js +1 -1
  134. package/dist/structured-client-protocol.js +11 -33
  135. package/dist/structured-content.d.ts +23 -0
  136. package/dist/structured-content.js +72 -0
  137. package/dist/structured-failure.d.ts +16 -0
  138. package/dist/structured-failure.js +36 -0
  139. package/dist/structured-pi-adapter.d.ts +8 -3
  140. package/dist/structured-pi-adapter.js +131 -30
  141. package/dist/structured-provider-common.d.ts +6 -0
  142. package/dist/structured-provider-common.js +23 -1
  143. package/dist/structured-runner.d.ts +45 -0
  144. package/dist/structured-session-manager.d.ts +78 -4
  145. package/dist/structured-session-manager.js +513 -129
  146. package/dist/structured-thinking.d.ts +15 -0
  147. package/dist/structured-thinking.js +46 -0
  148. package/dist/subagent-dispatch.d.ts +56 -0
  149. package/dist/subagent-dispatch.js +102 -0
  150. package/dist/system-employee.d.ts +4 -3
  151. package/dist/system-employee.js +7 -4
  152. package/dist/task-retention.d.ts +23 -0
  153. package/dist/task-retention.js +69 -0
  154. package/dist/task-types.d.ts +4 -0
  155. package/dist/task-types.js +3 -0
  156. package/dist/team-dispatch.d.ts +101 -0
  157. package/dist/team-dispatch.js +269 -0
  158. package/dist/tool-preview.js +7 -1
  159. package/dist/tui/commands.js +50 -1
  160. package/dist/tui/ipc-protocol.d.ts +1 -1
  161. package/dist/tui/ipc-server.d.ts +4 -0
  162. package/dist/tui/ipc-server.js +23 -0
  163. package/dist/turn-heartbeat.d.ts +35 -0
  164. package/dist/turn-heartbeat.js +64 -0
  165. package/dist/types.d.ts +147 -1
  166. package/dist/user-profile.d.ts +33 -0
  167. package/dist/user-profile.js +70 -0
  168. package/dist/web-ui/chat-message-meta.d.ts +11 -0
  169. package/dist/web-ui/chat-message-meta.js +47 -0
  170. package/dist/web-ui/content/ai-teams.js +13 -13
  171. package/dist/web-ui/content/scripts.js +795 -95
  172. package/dist/web-ui/content/styles.css +1 -1
  173. package/dist/web-ui/content/tailwind.css +1 -6808
  174. package/dist/web-ui/content/vendor/qrcode/qrcode.bundle.js +1 -1
  175. package/dist/web-ui/embedded-assets.d.ts +1 -1
  176. package/dist/web-ui/embedded-assets.js +5 -5
  177. package/dist/web-ui/index.d.ts +1 -1
  178. package/dist/web-ui/index.js +3 -3
  179. package/dist/web-ui/markdown.d.ts +2 -0
  180. package/dist/web-ui/markdown.js +111 -0
  181. package/dist/web-ui/page.d.ts +4 -0
  182. package/dist/web-ui/page.js +8 -0
  183. package/dist/web-ui/react/local-preview/controller.d.ts +30 -0
  184. package/dist/web-ui/react/local-preview/controller.js +159 -0
  185. package/dist/web-ui/running-activity.d.ts +63 -0
  186. package/dist/web-ui/running-activity.js +134 -0
  187. package/dist/web-ui/styles.js +2 -11
  188. package/package.json +7 -2
@@ -1,12 +1,22 @@
1
+ import { type OpenRouterFreeModelsService } from "./openrouter-free-models.js";
2
+ import { type StructuredFailure } from "./structured-failure.js";
1
3
  import { type WorktreeSetupSpec } from "./git-worktree.js";
2
4
  import { SessionLogger } from "./session-logger.js";
3
5
  import { WandStorage } from "./storage.js";
4
6
  import { ConversationTurn, ExecutionMode, ProcessEvent, SessionProvider, SessionRunner, SessionSnapshot, SessionSource, WandConfig } from "./types.js";
5
7
  import type { WandTaskAgent } from "./task-types.js";
8
+ import type { CoreStatus } from "./core-status-cli.js";
9
+ import { type EngineResolution } from "./harness-engine.js";
10
+ import { type PiSessionSettings } from "./pi-session-settings.js";
6
11
  import { type DecisionRuntimeAccess } from "./decision-runner.js";
7
12
  import { type StructuredExecHost } from "./structured-exec-host.js";
8
13
  import type { StructuredRunnerAdapter } from "./structured-runner.js";
9
14
  export interface StructuredSessionManagerRunners {
15
+ /**
16
+ * 宿主注入的执行器。注入 `pi` 视作钉死 CLI 引擎(`auto` 不覆盖);
17
+ * 注入 `core` 则视为宿主提供了进程内 harness 能力。
18
+ */
19
+ core?: StructuredRunnerAdapter;
10
20
  claudeCli?: StructuredRunnerAdapter;
11
21
  codex?: StructuredRunnerAdapter;
12
22
  opencode?: StructuredRunnerAdapter;
@@ -16,6 +26,7 @@ export interface StructuredSessionManagerRunners {
16
26
  gemini?: StructuredRunnerAdapter;
17
27
  }
18
28
  interface CreateStructuredSessionOptions {
29
+ title?: string;
19
30
  cwd: string;
20
31
  mode: ExecutionMode;
21
32
  provider?: SessionProvider;
@@ -68,10 +79,18 @@ export declare class StructuredSessionManager {
68
79
  private readonly config;
69
80
  private readonly logger;
70
81
  private readonly execHost?;
82
+ private readonly decisionRuntime;
83
+ /** 「智能分配」专用的本地决策入口:只有真正能跑时才注入,没注入则用系统员工回退。 */
84
+ private readonly autoAssignEvaluate;
71
85
  private readonly sessions;
72
86
  private readonly pendingRunnerExecutions;
73
87
  private readonly unacceptedTeamStarts;
74
88
  private readonly interruptedWith;
89
+ /**
90
+ * 「智能分配」正在结算的会话:这段窗口内还没有 runner 归属,新输入必须排队而不是另起一轮。
91
+ * token.cancelled 由 stop / delete 置位,结算回来后不得再启动。
92
+ */
93
+ private readonly autoAssignPending;
75
94
  private readonly preserveQueueOnInterrupt;
76
95
  /** Last wall-clock time (ms) a streaming checkpoint reached SQLite. */
77
96
  private readonly lastStreamSaveAt;
@@ -88,6 +107,11 @@ export declare class StructuredSessionManager {
88
107
  private readonly relayHandlers;
89
108
  private emitEvent;
90
109
  private archiveTimer;
110
+ /**
111
+ * 静默期心跳:回合在飞且连续 TURN_QUIET_HEARTBEAT_MS 没有任何事件时,用现有的
112
+ * status 事件重发一次权威快照(含最新 turn 锚点)。timer 只在 inFlight 期间存在。
113
+ */
114
+ private readonly turnHeartbeat;
91
115
  private readonly topicCoordinator;
92
116
  private readonly nativeTitles;
93
117
  private readonly streamEmitTimers;
@@ -97,6 +121,12 @@ export declare class StructuredSessionManager {
97
121
  private readonly grokRunner;
98
122
  private readonly qoderRunner;
99
123
  private readonly piRunner;
124
+ /** 进程内 core 引擎供员工候选显式启用;普通 Pi 主功能不使用它。 */
125
+ private readonly coreRunner;
126
+ /** 宿主是否显式注入了 pi 的 CLI runner / core runner,供系统级引擎状态使用。 */
127
+ private readonly piRunnerSupplied;
128
+ private readonly coreRunnerSupplied;
129
+ private coreRestartDrains;
100
130
  private readonly geminiRunner;
101
131
  /** Structured CLI runs that were mid-flight when the previous web process died. */
102
132
  private pendingRecoveryIds;
@@ -104,9 +134,16 @@ export declare class StructuredSessionManager {
104
134
  private detachedRecoveryRetryTimer;
105
135
  private detachedRecoveryFailureLogged;
106
136
  private disposed;
107
- constructor(storage: WandStorage, config: WandConfig, logger?: SessionLogger | null, runners?: StructuredSessionManagerRunners, execHost?: StructuredExecHost | undefined, decisionRuntime?: () => DecisionRuntimeAccess | null);
137
+ constructor(storage: WandStorage, config: WandConfig, logger?: SessionLogger | null, runners?: StructuredSessionManagerRunners, execHost?: StructuredExecHost | undefined, decisionRuntime?: () => DecisionRuntimeAccess | null, openRouter?: OpenRouterFreeModelsService,
138
+ /** 「智能分配」专用的本地决策入口:只有真正能跑时才注入,没注入则用系统员工回退。 */
139
+ autoAssignEvaluate?: () => DecisionRuntimeAccess["evaluate"]);
108
140
  private archiveExpiredSessions;
109
141
  setEventEmitter(emitEvent: (event: ProcessEvent) => void): void;
142
+ getCoreTurnStatus(): CoreStatus;
143
+ /** Keep current turns running; new Pi inputs stay in the durable input queue. */
144
+ beginCoreRestartDrain(): () => void;
145
+ /** Resume accepted inputs after a cancelled drain or after a successful restart. */
146
+ resumeQueuedPiMessages(): void;
110
147
  /** Stop every runner and flush terminal state before storage is closed. */
111
148
  dispose(): void;
112
149
  /** Called once after startup wiring; transient daemon failures retry automatically. */
@@ -130,7 +167,7 @@ export declare class StructuredSessionManager {
130
167
  get(id: string): SessionSnapshot | null;
131
168
  setSessionWorkspace(id: string, membership: Pick<SessionSnapshot, "workspaceId" | "workspaceTaskId">): void;
132
169
  setSessionTopic(id: string, title: string, description: string): SessionSnapshot;
133
- /** 归档 / 取消归档:只写标记并广播,不中断运行中的 run,也不删历史。 */
170
+ /** 归档会先停掉还在跑的回合,会话 ID 和 provider session id 都留着。 */
134
171
  setSessionArchived(id: string, archived: boolean): SessionSnapshot;
135
172
  private setSessionTopicGenerating;
136
173
  /**
@@ -150,10 +187,14 @@ export declare class StructuredSessionManager {
150
187
  }): SessionSnapshot;
151
188
  /** Server-only generation anchor, including a failed unaccepted turn whose activeRequestId is cleared. */
152
189
  teamRequestId(id: string): string | null;
153
- /** Consume only the exact failed request observed by the team's dispatch, never error-text inference. */
190
+ /** Compatibility boolean API; typed consumers preserve the reason without parsing user-facing text. */
154
191
  consumeUnacceptedTeamStartup(id: string, requestId: string): boolean;
155
- /** Only an unstarted employee conversation may change CLI after a failed first turn. */
192
+ /** Consume only the exact failed request observed by dispatch, once, before a newer request can replace it. */
193
+ consumeUnacceptedTeamFailure(id: string, requestId: string): StructuredFailure | null;
194
+ private employeeCandidateModel;
195
+ /** Only an unstarted employee conversation may replay its explicitly rejected first input. */
156
196
  private retryEmployeeCandidate;
197
+ private throwUnacceptedInput;
157
198
  /** 往转发会话里追加别的参与者的发言。 */
158
199
  appendRelayTurns(id: string, turns: ConversationTurn[]): SessionSnapshot | null;
159
200
  sendMessage(id: string, input: string, opts?: {
@@ -186,6 +227,12 @@ export declare class StructuredSessionManager {
186
227
  clearQueuedMessages(sessionId: string): SessionSnapshot;
187
228
  /** 新建空白对话可原位换 CLI;接受过输入、恢复会话和自动化不跨 provider 搬历史。 */
188
229
  setSessionProvider(sessionId: string, provider: SessionProvider): SessionSnapshot;
230
+ getPiSettings(sessionId: string): {
231
+ settings: PiSessionSettings;
232
+ resolution: EngineResolution;
233
+ };
234
+ /** Metadata-only, synchronous merge: active runs retain their captured settings, queued rounds see these. */
235
+ setPiSettings(sessionId: string, patch: unknown): SessionSnapshot;
189
236
  /** Update the selected model for a structured session. Takes effect on the next spawn. */
190
237
  setSessionModel(sessionId: string, model: string | null): SessionSnapshot;
191
238
  /**
@@ -216,7 +263,34 @@ export declare class StructuredSessionManager {
216
263
  private currentSessionForRequest;
217
264
  /** Delete a handle only if it still belongs to the execution doing cleanup. */
218
265
  private releasePendingRunnerExecution;
266
+ /**
267
+ * 本轮开始:turnStartedAt / lastActivityAt 同时落下,并给这一轮挂上静默心跳。
268
+ * 只在新回合(新 requestId)起点未知时调用;daemon 领养走 adoptTurn。
269
+ */
270
+ private beginTurn;
271
+ /**
272
+ * 领养 daemon 里仍在飞的回合:起点是重启前那一轮的真实时刻,不能改写成重连时刻;
273
+ * 锚点缺失(改动之前落库的历史数据)才退回现在。
274
+ */
275
+ private adoptTurn;
276
+ /**
277
+ * 观测到本轮活动(输出 chunk / 状态变化):只刷新 lastActivityAt 并重新计算静默窗口;
278
+ * turnStartedAt 保持不变,客户端才算是「这一轮已经跑了多久」而不是「距离上一条输出多久」。
279
+ */
280
+ private noteTurnActivity;
281
+ /**
282
+ * 本轮收敛:`inFlight` 清 false 的一切路径(结束 / 失败 / 停止 / 中断 / 重启降级 /
283
+ * 候选降级)都必须走这里——两个锚点一起回 null,静默心跳立即 cancel。
284
+ * 收敛后不存在任何「还在跑」的读数,客户端不需要再猜上一轮的锚点属于哪一轮。
285
+ */
286
+ private settleTurn;
287
+ /**
288
+ * 静默窗口到期:确认这一轮仍在飞才补发一次,payload 与一条普通 status 快照完全一致
289
+ * (不带新字段、不开新事件类型)。返回值决定要不要再挂下一个窗口。
290
+ */
291
+ private publishQuietHeartbeat;
219
292
  private emitStructuredSnapshot;
293
+ private enqueueInput;
220
294
  private flushNextQueuedMessage;
221
295
  private emit;
222
296
  private incrementApprovalStats;