@chatcode/chatcode-cli 3.0.4-rc.4 → 3.0.4-rc.5

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.
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@chatcode/chatcode-cli",
3
3
  "description": "ChatCode CLI: TUI-first coding agent, Web launcher, profiles, and legacy DSH-compatible plugins",
4
- "version": "3.0.4-rc.4",
4
+ "version": "3.0.4-rc.5",
5
5
  "publishConfig": {
6
6
  "access": "public"
7
7
  },
@@ -28,7 +28,7 @@
28
28
  "dependencies": {
29
29
  "@agentclientprotocol/sdk": "1.4.0",
30
30
  "@babel/code-frame": "^7.29.0",
31
- "@chatcode/cco-better-sidebar": "0.18.0-rc.7",
31
+ "@chatcode/cco-better-sidebar": "0.18.0-rc.8",
32
32
  "@chatcode/cco-builtin-browser": "0.1.21",
33
33
  "@chatcode/cco-chat-import": "0.17.0",
34
34
  "@chatcode/cco-computer-use": "0.3.2",
@@ -58,7 +58,7 @@
58
58
  "commander": "^15.0.0",
59
59
  "compression": "^1.8.1",
60
60
  "diff": "^9.0.0",
61
- "dsh-better-sidebar": "npm:@chatcode/cco-better-sidebar@0.18.0-rc.7",
61
+ "dsh-better-sidebar": "npm:@chatcode/cco-better-sidebar@0.18.0-rc.8",
62
62
  "dsh-builtin-browser": "npm:@chatcode/cco-builtin-browser@0.1.21",
63
63
  "dsh-chat-import": "npm:@chatcode/cco-chat-import@0.17.0",
64
64
  "dsh-computer-use": "npm:@chatcode/cco-computer-use@0.3.2",
@@ -97,46 +97,46 @@
97
97
  "execa": "^10.0.0",
98
98
  "ws": "8.21.0",
99
99
  "@deepseek-ai/dsh-acp": "0.1.7-rc.2",
100
+ "@deepseek-ai/dsh-agent": "0.1.7-rc.2",
100
101
  "@deepseek-ai/dsh-agent-loop-testkit": "0.1.7-rc.2",
101
- "@deepseek-ai/dsh-agent-loop": "0.1.7-rc.2",
102
102
  "@deepseek-ai/dsh-bash-local": "0.1.7-rc.2",
103
- "@deepseek-ai/dsh-attachment-local": "0.1.7-rc.2",
104
103
  "@deepseek-ai/dsh-credentials-local": "0.1.7-rc.2",
105
- "@deepseek-ai/dsh-deepseek-llm-api-extensions": "0.1.7-rc.2",
104
+ "@deepseek-ai/dsh-agent-loop": "0.1.7-rc.2",
105
+ "@deepseek-ai/dsh-attachment-local": "0.1.7-rc.2",
106
106
  "@deepseek-ai/dsh-experimental-agent-team": "0.1.7-rc.2",
107
- "@deepseek-ai/dsh-agent": "0.1.7-rc.2",
108
- "@deepseek-ai/dsh-experimental-ptc-runtime-python": "0.1.7-rc.2",
109
- "@deepseek-ai/dsh-experimental-tool-agent-team": "0.1.7-rc.2",
107
+ "@deepseek-ai/dsh-fs-sandbox": "0.1.7-rc.2",
108
+ "@deepseek-ai/dsh-deepseek-llm-api-extensions": "0.1.7-rc.2",
110
109
  "@deepseek-ai/dsh-fs-observation-policy": "0.1.7-rc.2",
110
+ "@deepseek-ai/dsh-experimental-ptc-runtime-python": "0.1.7-rc.2",
111
+ "@deepseek-ai/dsh-host-frontend-static": "0.1.7-rc.2",
111
112
  "@deepseek-ai/dsh-host-webserver": "0.1.7-rc.2",
112
- "@deepseek-ai/dsh-fs-sandbox": "0.1.7-rc.2",
113
113
  "@deepseek-ai/dsh-llm": "0.1.7-rc.2",
114
- "@deepseek-ai/dsh-host-frontend-static": "0.1.7-rc.2",
115
114
  "@deepseek-ai/dsh-llm-deepseek": "0.1.7-rc.2",
116
- "@deepseek-ai/dsh-llm-deepseek-account": "0.1.7-rc.2",
117
115
  "@deepseek-ai/dsh-llm-mock-server": "0.1.7-rc.2",
118
116
  "@deepseek-ai/dsh-llm-pi-ai": "0.1.7-rc.2",
119
- "@deepseek-ai/dsh-llm-replay": "0.1.7-rc.2",
120
- "@deepseek-ai/dsh-llm-deepseek-api-key": "0.1.7-rc.2",
121
- "@deepseek-ai/dsh-plugin-package-inventory-deepseek": "0.1.7-rc.2",
117
+ "@deepseek-ai/dsh-experimental-tool-agent-team": "0.1.7-rc.2",
122
118
  "@deepseek-ai/dsh-sandbox-local": "0.1.7-rc.2",
123
- "@deepseek-ai/dsh-loader-smoke": "0.1.7-rc.2",
119
+ "@deepseek-ai/dsh-sdk-client": "0.1.7-rc.2",
120
+ "@deepseek-ai/dsh-llm-deepseek-account": "0.1.7-rc.2",
121
+ "@deepseek-ai/dsh-session-checkpoint-policy": "0.1.7-rc.2",
122
+ "@deepseek-ai/dsh-plugin-package-inventory-deepseek": "0.1.7-rc.2",
123
+ "@deepseek-ai/dsh-session-log-deepseek": "0.1.7-rc.2",
124
124
  "@deepseek-ai/dsh-sandbox-policy": "0.1.7-rc.2",
125
125
  "@deepseek-ai/dsh-session": "0.1.7-rc.2",
126
- "@deepseek-ai/dsh-session-log-deepseek": "0.1.7-rc.2",
127
- "@deepseek-ai/dsh-session-checkpoint-policy": "0.1.7-rc.2",
128
- "@deepseek-ai/dsh-session-query": "0.1.7-rc.2",
126
+ "@deepseek-ai/dsh-llm-deepseek-api-key": "0.1.7-rc.2",
127
+ "@deepseek-ai/dsh-loader-smoke": "0.1.7-rc.2",
129
128
  "@deepseek-ai/dsh-session-persistence-jsonl": "0.1.7-rc.2",
129
+ "@deepseek-ai/dsh-session-query": "0.1.7-rc.2",
130
130
  "@deepseek-ai/dsh-shell-env": "0.1.7-rc.2",
131
- "@deepseek-ai/dsh-sdk-client": "0.1.7-rc.2",
132
- "@deepseek-ai/dsh-subagent": "0.1.7-rc.2",
131
+ "@deepseek-ai/dsh-llm-replay": "0.1.7-rc.2",
133
132
  "@deepseek-ai/dsh-subagent-fork-in-process": "0.1.7-rc.2",
134
133
  "@deepseek-ai/dsh-settings": "0.1.7-rc.2",
135
134
  "@deepseek-ai/dsh-subagent-spawn-in-process": "0.1.7-rc.2",
135
+ "@deepseek-ai/dsh-subagent": "0.1.7-rc.2",
136
+ "@deepseek-ai/dsh-system-prompt": "0.1.7-rc.2",
136
137
  "@deepseek-ai/dsh-subprocess-local": "0.1.7-rc.2",
137
- "@deepseek-ai/dsh-tools": "0.1.7-rc.2",
138
138
  "@deepseek-ai/dsh-user-approval": "0.1.7-rc.2",
139
- "@deepseek-ai/dsh-system-prompt": "0.1.7-rc.2"
139
+ "@deepseek-ai/dsh-tools": "0.1.7-rc.2"
140
140
  },
141
141
  "exports": {
142
142
  "./headless-compat": {
@@ -283,5 +283,5 @@
283
283
  "@deepseek-ai/schemastery"
284
284
  ],
285
285
  "fileCount": 3611,
286
- "byteCount": 68767974
286
+ "byteCount": 68769077
287
287
  }
@@ -4125,7 +4125,7 @@ window.__ModuleLoader__.load({
4125
4125
  for (const listener of listeners) listener();
4126
4126
  };
4127
4127
  /** @returns the client identity for one account call, read at call time so it carries the language and zone in effect then. */
4128
- const client = () => accountClientMetadata(ctx.locale.getSnapshot().active, "3.0.4-rc.4");
4128
+ const client = () => accountClientMetadata(ctx.locale.getSnapshot().active, "3.0.4-rc.5");
4129
4129
  const notices = createBonusNoticeController({
4130
4130
  ackRetryDelayMs: config.bonusAckRetryDelayMs,
4131
4131
  ackRetryMaxDelayMs: config.bonusAckRetryMaxDelayMs,
@@ -4256,7 +4256,7 @@ window.__ModuleLoader__.load({
4256
4256
  refreshAccount,
4257
4257
  contactUs() {
4258
4258
  const url = contactUrl(config, {
4259
- version: "3.0.4-rc.4",
4259
+ version: "3.0.4-rc.5",
4260
4260
  locale: ctx.locale.getSnapshot().active === "zh" ? "zh-CN" : "en",
4261
4261
  width: window.screen.width,
4262
4262
  height: window.screen.height,
@@ -657,7 +657,7 @@ window.__ModuleLoader__.load({
657
657
  function CurrentVersionRow({ t }) {
658
658
  return (0, react_jsx_runtime.jsx)("div", {
659
659
  className: CurrentVersionRow_module_css_default.row,
660
- children: t("general.currentVersion", { version: "3.0.4-rc.4" })
660
+ children: t("general.currentVersion", { version: "3.0.4-rc.5" })
661
661
  });
662
662
  }
663
663
  //#endregion
@@ -167,7 +167,7 @@ window.__ModuleLoader__.load({
167
167
  const SCROLLBAR_LINGER_MS = 2e3;
168
168
  /** Format complete-build metadata for the local brand badge. */
169
169
  function localBuildVersion() {
170
- return `3.0.4-rc.4-b93a39c-dirty`;
170
+ return `3.0.4-rc.5-b482da5-dirty`;
171
171
  }
172
172
  /** Each panel row subscribes only to its own selection state. */
173
173
  function PanelRow({ id, label, wide, usePanelInfo, selectPanel, renderSlot }) {
@@ -12,8 +12,8 @@ declare const CONTROL_ID_SCHEMAS: {
12
12
  childSessionId: z.ZodString;
13
13
  mode: z.ZodLiteral<"continuable">;
14
14
  delivery: z.ZodEnum<{
15
- queue: "queue";
16
15
  steer: "steer";
16
+ queue: "queue";
17
17
  }>;
18
18
  }, z.core.$strip>;
19
19
  readonly 'subagent.interrupt': z.ZodObject<{
@@ -1153,6 +1153,15 @@ var WorkspaceRegistry = class extends Service {
1153
1153
  if (sessions === void 0) return;
1154
1154
  await this.indexHeaders(sessions.list().filter((session) => !this.deletedSessionIds.includes(session.id)).map((session) => session.header));
1155
1155
  }
1156
+ /** Retry unresolved membership using known headers or individual persistence lookups. */
1157
+ async refreshUnresolvedMembers() {
1158
+ const sessions = this.ctx.get("sessions");
1159
+ for (const [, record] of this.requireTable().entries()) for (const id of record.sessionIds) {
1160
+ if (this.sessionPaths.has(id)) continue;
1161
+ const header = sessions?.get(id)?.header ?? this.headers.get(id) ?? (await this.ctx.sessionPersistence.stat(id))?.header;
1162
+ if (header !== void 0) await this.indexHeader(header);
1163
+ }
1164
+ }
1156
1165
  reportFilteredCandidates() {
1157
1166
  for (const entity of this.entities.values()) {
1158
1167
  const record = this.requireTable().get(entity.id);
@@ -1201,12 +1210,11 @@ var WorkspaceRegistry = class extends Service {
1201
1210
  await domain.refresh();
1202
1211
  const changed = this.snapshotIdentity() !== this.refreshedState;
1203
1212
  this.state = domain.global.get();
1204
- const missingHeaders = [...this.requireTable().entries()].some(([, record]) => record.sessionIds.some((id) => !this.sessionPaths.has(id)));
1205
- if (changed || missingHeaders) {
1213
+ if (changed) {
1206
1214
  await this.replaceHeaderIndex(await this.listStoredHeaders());
1207
1215
  await this.indexLiveSessions();
1208
1216
  this.rebuildEntities();
1209
- }
1217
+ } else await this.refreshUnresolvedMembers();
1210
1218
  await this.recoverPendingMutation();
1211
1219
  await this.recoverSessionDeletion();
1212
1220
  const newlyDeleted = this.deletedSessionIds.filter((id) => !previousDeleted.has(id));
@@ -319,6 +319,8 @@ export declare class WorkspaceRegistry extends Service {
319
319
  /** Every stored session's header, projected from the persistence snapshot listing. */
320
320
  private listStoredHeaders;
321
321
  private indexLiveSessions;
322
+ /** Retry unresolved membership using known headers or individual persistence lookups. */
323
+ private refreshUnresolvedMembers;
322
324
  private reportFilteredCandidates;
323
325
  private readSessionHeader;
324
326
  private requireTable;
@@ -986,6 +986,20 @@ export class WorkspaceRegistry extends Service {
986
986
  return;
987
987
  await this.indexHeaders(sessions.list().filter(session => !this.deletedSessionIds.includes(session.id)).map(session => session.header));
988
988
  }
989
+ /** Retry unresolved membership using known headers or individual persistence lookups. */
990
+ async refreshUnresolvedMembers() {
991
+ const sessions = this.ctx.get('sessions');
992
+ for (const [, record] of this.requireTable().entries()) {
993
+ for (const id of record.sessionIds) {
994
+ if (this.sessionPaths.has(id))
995
+ continue;
996
+ const header = sessions?.get(id)?.header ?? this.headers.get(id)
997
+ ?? (await this.ctx.sessionPersistence.stat(id))?.header;
998
+ if (header !== undefined)
999
+ await this.indexHeader(header);
1000
+ }
1001
+ }
1002
+ }
989
1003
  reportFilteredCandidates() {
990
1004
  for (const entity of this.entities.values()) {
991
1005
  const record = this.requireTable().get(entity.id);
@@ -1045,12 +1059,14 @@ export class WorkspaceRegistry extends Service {
1045
1059
  await domain.refresh();
1046
1060
  const changed = this.snapshotIdentity() !== this.refreshedState;
1047
1061
  this.state = domain.global.get();
1048
- const missingHeaders = [...this.requireTable().entries()].some(([, record]) => record.sessionIds.some(id => !this.sessionPaths.has(id)));
1049
- if (changed || missingHeaders) {
1062
+ if (changed) {
1050
1063
  await this.replaceHeaderIndex(await this.listStoredHeaders());
1051
1064
  await this.indexLiveSessions();
1052
1065
  this.rebuildEntities();
1053
1066
  }
1067
+ else {
1068
+ await this.refreshUnresolvedMembers();
1069
+ }
1054
1070
  await this.recoverPendingMutation();
1055
1071
  await this.recoverSessionDeletion();
1056
1072
  const newlyDeleted = this.deletedSessionIds.filter(id => !previousDeleted.has(id));