@cutie-crypto/connector-core 0.4.0 → 0.6.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.
@@ -8,6 +8,7 @@
8
8
  * - HTTP 调用方式(adapter.callAgent 决定)
9
9
  * - 升级方式(adapter.selfUpgrade 决定)
10
10
  */
11
+ import type { MaintenanceCommand, MaintenanceStatus } from './protocol';
11
12
  import type { CorePlatformAdapter } from './adapter';
12
13
  export interface CoreConnectionConfig {
13
14
  connector_id: string;
@@ -31,12 +32,31 @@ export interface ConnectorConnectionDeps {
31
32
  connectorVersion: string;
32
33
  /** 日志钩子,core 不假设 logger 实现 */
33
34
  logger?: ConnectorConnectionLogger;
35
+ maintenanceExecutor?: CoreMaintenanceExecutor;
36
+ }
37
+ export interface MaintenanceReport {
38
+ status: MaintenanceStatus;
39
+ result?: Record<string, unknown>;
40
+ error_type?: string | null;
41
+ error_message?: string | null;
42
+ }
43
+ export type SendOutcome = 'sent' | 'buffered' | 'dropped';
44
+ export type MaintenanceAckOutcome = 'acked' | 'rejected' | 'timeout' | 'not_required' | 'not_sent';
45
+ export interface MaintenanceReportDelivery {
46
+ send: SendOutcome;
47
+ ack: Promise<MaintenanceAckOutcome>;
48
+ }
49
+ export interface CoreMaintenanceExecutor {
50
+ execute(command: MaintenanceCommand, report: (report: MaintenanceReport) => MaintenanceReportDelivery | Promise<MaintenanceReportDelivery>): Promise<Record<string, unknown> | void>;
34
51
  }
35
52
  export declare class ConnectorConnection {
36
53
  private config;
37
54
  private adapter;
38
55
  private connectorVersion;
39
56
  private log;
57
+ private maintenanceExecutor?;
58
+ private maintenanceStates;
59
+ private maintenanceAckWaiters;
40
60
  private ws;
41
61
  private heartbeatTimer;
42
62
  private reconnectTimer;
@@ -45,30 +65,64 @@ export declare class ConnectorConnection {
45
65
  private running;
46
66
  private authFailCount;
47
67
  private readonly maxAuthFails;
68
+ /**
69
+ * 5 次 auth fail 后进入"auth cooldown"自愈状态:
70
+ * - cleanup WS / heartbeat(不调 stop(),running 保持 true)
71
+ * - 启动 cooldown timer,到期后重置 authFailCount 重连
72
+ * - 每次进入 cooldown 都指数退避(×1.5 上限 1 天),避免 server 端凭据真失效时
73
+ * 烧 CPU/网络;当 server 端凭据修复后,下一次 cooldown 到期会自然恢复
74
+ * - 重连成功(WS 'open' 触发)后 cooldown delay reset 回初始值
75
+ */
76
+ private authCooldownTimer;
77
+ private readonly initialAuthCooldownDelay;
78
+ private readonly maxAuthCooldownDelay;
79
+ private authCooldownDelay;
48
80
  private lastError;
49
81
  private upgrading;
50
82
  private upgradeFailedAt;
51
83
  /**
52
- * 出站 buffer:仅缓存 task.result(不可重建:含 adapter 算出来的 answer)。
84
+ * 出站 buffer:仅缓存不可重建的重要终态消息。
85
+ * - task.result:含 adapter 算出来的 answer,丢了用户永远拿不到结果。
86
+ * - maintenance.status:维护命令终态/进度,丢了 runbook 会误判修复失败。
53
87
  * heartbeat / hello / task.ack 不缓存——丢了下次自然补上。
54
88
  * 见 docs/issues/2026-05-07-task-result-loss.md(最小补丁阶段,完整方案待异步化)。
55
89
  */
56
90
  private outboundBuffer;
57
91
  private readonly outboundBufferMax;
58
92
  private readonly outboundBufferTtlMs;
93
+ private readonly maintenanceAckTimeoutMs;
59
94
  constructor(deps: ConnectorConnectionDeps);
60
95
  start(): void;
61
96
  stop(): void;
62
97
  private cleanup;
63
98
  private connect;
64
99
  private scheduleReconnect;
100
+ /**
101
+ * 5 次连续 401/403 后进入 cooldown:cleanup 当前 WS / heartbeat / reconnect timer,
102
+ * 但 running 保持 true,启动 cooldown timer 到期后自动重连。
103
+ *
104
+ * 设计意图:当 server 端凭据漂移(如 migration backfill bug)时,KOL 端不需要任何
105
+ * 人工介入。Server 修复凭据后,下一次 cooldown 到期重连会成功,WS 'open' 会把
106
+ * authCooldownDelay reset 回初始 10 分钟。
107
+ *
108
+ * 如果凭据真失效(KOL 端被踢出 / token revoked),cooldown 会指数退避到 1 天,
109
+ * 不烧 CPU/网络,KOL 通过 cutie-connector status / 平台 UI 看到 connector 离线
110
+ * 后主动 `cutie-connector reset` + 重 pair。
111
+ */
112
+ private enterAuthCooldown;
65
113
  private handleMessage;
114
+ private handleMaintenanceCommand;
115
+ private sendMaintenanceStatus;
116
+ private createMaintenanceAckWaiter;
117
+ private handleMaintenanceStatusAck;
118
+ private resolveMaintenanceAck;
119
+ private maintenanceAckKey;
66
120
  private handleTask;
67
121
  private startHeartbeat;
68
122
  private doHeartbeat;
69
123
  private triggerSelfUpgrade;
70
124
  private send;
71
- private isTaskResult;
125
+ private isImportantMessage;
72
126
  private enqueueOutbound;
73
127
  private flushOutboundBuffer;
74
128
  }
@@ -26,6 +26,9 @@ class ConnectorConnection {
26
26
  adapter;
27
27
  connectorVersion;
28
28
  log;
29
+ maintenanceExecutor;
30
+ maintenanceStates = new Map();
31
+ maintenanceAckWaiters = new Map();
29
32
  ws = null;
30
33
  heartbeatTimer = null;
31
34
  reconnectTimer = null;
@@ -34,30 +37,55 @@ class ConnectorConnection {
34
37
  running = false;
35
38
  authFailCount = 0;
36
39
  maxAuthFails = 5;
40
+ /**
41
+ * 5 次 auth fail 后进入"auth cooldown"自愈状态:
42
+ * - cleanup WS / heartbeat(不调 stop(),running 保持 true)
43
+ * - 启动 cooldown timer,到期后重置 authFailCount 重连
44
+ * - 每次进入 cooldown 都指数退避(×1.5 上限 1 天),避免 server 端凭据真失效时
45
+ * 烧 CPU/网络;当 server 端凭据修复后,下一次 cooldown 到期会自然恢复
46
+ * - 重连成功(WS 'open' 触发)后 cooldown delay reset 回初始值
47
+ */
48
+ authCooldownTimer = null;
49
+ initialAuthCooldownDelay = 10 * 60 * 1000; // 10 min
50
+ maxAuthCooldownDelay = 24 * 60 * 60 * 1000; // 1 day cap
51
+ authCooldownDelay = this.initialAuthCooldownDelay;
37
52
  lastError;
38
53
  upgrading = false;
39
54
  upgradeFailedAt = 0;
40
55
  /**
41
- * 出站 buffer:仅缓存 task.result(不可重建:含 adapter 算出来的 answer)。
56
+ * 出站 buffer:仅缓存不可重建的重要终态消息。
57
+ * - task.result:含 adapter 算出来的 answer,丢了用户永远拿不到结果。
58
+ * - maintenance.status:维护命令终态/进度,丢了 runbook 会误判修复失败。
42
59
  * heartbeat / hello / task.ack 不缓存——丢了下次自然补上。
43
60
  * 见 docs/issues/2026-05-07-task-result-loss.md(最小补丁阶段,完整方案待异步化)。
44
61
  */
45
62
  outboundBuffer = [];
46
63
  outboundBufferMax = 50;
47
64
  outboundBufferTtlMs = 5 * 60 * 1000;
65
+ maintenanceAckTimeoutMs = 10 * 1000;
48
66
  constructor(deps) {
49
67
  this.config = deps.config;
50
68
  this.adapter = deps.adapter;
51
69
  this.connectorVersion = deps.connectorVersion;
52
70
  this.log = deps.logger ?? NOOP_LOGGER;
71
+ this.maintenanceExecutor = deps.maintenanceExecutor;
53
72
  }
54
73
  start() {
55
74
  this.running = true;
75
+ // 防御性 reset:stop()→start() 周期里 authFailCount 可能停在 5、
76
+ // authCooldownDelay 可能停在退避后期值;下次 connect 第一个 error 就会立即
77
+ // 触发 cooldown 而非给一个完整 5-strikes 窗口。WS 'open' 也会 reset,但
78
+ // 在握手成功之前先把状态置干净更安全。
79
+ this.authFailCount = 0;
80
+ this.authCooldownDelay = this.initialAuthCooldownDelay;
56
81
  this.connect();
57
82
  }
58
83
  stop() {
59
84
  this.running = false;
60
85
  this.cleanup();
86
+ for (const [key] of this.maintenanceAckWaiters) {
87
+ this.resolveMaintenanceAck(key, 'not_sent');
88
+ }
61
89
  this.log.info('Connector stopped');
62
90
  }
63
91
  cleanup() {
@@ -69,6 +97,10 @@ class ConnectorConnection {
69
97
  clearTimeout(this.reconnectTimer);
70
98
  this.reconnectTimer = null;
71
99
  }
100
+ if (this.authCooldownTimer) {
101
+ clearTimeout(this.authCooldownTimer);
102
+ this.authCooldownTimer = null;
103
+ }
72
104
  if (this.ws) {
73
105
  this.ws.removeAllListeners();
74
106
  if (this.ws.readyState === ws_1.default.OPEN || this.ws.readyState === ws_1.default.CONNECTING) {
@@ -104,6 +136,7 @@ class ConnectorConnection {
104
136
  this.log.info('WebSocket connected');
105
137
  this.reconnectDelay = 3000;
106
138
  this.authFailCount = 0;
139
+ this.authCooldownDelay = this.initialAuthCooldownDelay;
107
140
  // Send hello, heartbeat starts after hello_ok
108
141
  this.send({
109
142
  type: 'hello',
@@ -130,9 +163,12 @@ class ConnectorConnection {
130
163
  if (err.message.includes('403') || err.message.includes('401')) {
131
164
  this.authFailCount++;
132
165
  if (this.authFailCount >= this.maxAuthFails) {
133
- this.log.error(`Authentication failed ${this.maxAuthFails} times consecutively. Token is likely invalid.`);
134
- this.log.error('Run "cutie-connector reset" then re-pair with a new token.');
135
- this.stop();
166
+ const cooldownMin = Math.round(this.authCooldownDelay / 60000);
167
+ this.log.error(`Authentication failed ${this.maxAuthFails} times consecutively. ` +
168
+ `Token may be invalid or server-side credential drifted.`);
169
+ this.log.error(`Pausing WS for ${cooldownMin} min before retry. If problem persists across ` +
170
+ `multiple cooldowns, run "cutie-connector reset" and re-pair with a new token.`);
171
+ this.enterAuthCooldown();
136
172
  }
137
173
  }
138
174
  });
@@ -147,6 +183,34 @@ class ConnectorConnection {
147
183
  }, this.reconnectDelay);
148
184
  this.reconnectDelay = Math.min(this.reconnectDelay * 1.5, this.maxReconnectDelay);
149
185
  }
186
+ /**
187
+ * 5 次连续 401/403 后进入 cooldown:cleanup 当前 WS / heartbeat / reconnect timer,
188
+ * 但 running 保持 true,启动 cooldown timer 到期后自动重连。
189
+ *
190
+ * 设计意图:当 server 端凭据漂移(如 migration backfill bug)时,KOL 端不需要任何
191
+ * 人工介入。Server 修复凭据后,下一次 cooldown 到期重连会成功,WS 'open' 会把
192
+ * authCooldownDelay reset 回初始 10 分钟。
193
+ *
194
+ * 如果凭据真失效(KOL 端被踢出 / token revoked),cooldown 会指数退避到 1 天,
195
+ * 不烧 CPU/网络,KOL 通过 cutie-connector status / 平台 UI 看到 connector 离线
196
+ * 后主动 `cutie-connector reset` + 重 pair。
197
+ */
198
+ enterAuthCooldown() {
199
+ if (!this.running)
200
+ return;
201
+ this.cleanup();
202
+ const delay = this.authCooldownDelay;
203
+ this.authCooldownTimer = setTimeout(() => {
204
+ this.authCooldownTimer = null;
205
+ if (!this.running)
206
+ return;
207
+ this.log.info('Auth cooldown elapsed, retrying connection...');
208
+ this.authFailCount = 0; // 重置,给重连一个完整的 5-strikes 窗口
209
+ this.connect();
210
+ }, delay);
211
+ // 指数退避 ×1.5,上限 1 天
212
+ this.authCooldownDelay = Math.min(this.authCooldownDelay * 1.5, this.maxAuthCooldownDelay);
213
+ }
150
214
  handleMessage(msg) {
151
215
  switch (msg.type) {
152
216
  case 'hello_ok':
@@ -166,10 +230,115 @@ class ConnectorConnection {
166
230
  this.triggerSelfUpgrade(msg.target_version);
167
231
  }
168
232
  break;
233
+ case 'maintenance.command':
234
+ this.handleMaintenanceCommand(msg);
235
+ break;
236
+ case 'maintenance.status_ack':
237
+ this.handleMaintenanceStatusAck(msg);
238
+ break;
169
239
  default:
170
240
  this.log.warn('Unknown message type:', msg.type);
171
241
  }
172
242
  }
243
+ async handleMaintenanceCommand(command) {
244
+ const existing = this.maintenanceStates.get(command.command_id);
245
+ if (existing) {
246
+ this.sendMaintenanceStatus(command, existing);
247
+ return;
248
+ }
249
+ if (!this.maintenanceExecutor) {
250
+ this.sendMaintenanceStatus(command, {
251
+ status: 'failed',
252
+ error_type: 'UNSUPPORTED',
253
+ error_message: 'connector does not support remote maintenance',
254
+ });
255
+ return;
256
+ }
257
+ if (command.expires_at && command.expires_at <= Math.floor(Date.now() / 1000)) {
258
+ this.sendMaintenanceStatus(command, {
259
+ status: 'failed',
260
+ error_type: 'EXPIRED',
261
+ error_message: 'maintenance command expired before execution',
262
+ });
263
+ return;
264
+ }
265
+ const report = async (next) => {
266
+ const delivery = this.sendMaintenanceStatus(command, next);
267
+ if (delivery.send !== 'dropped') {
268
+ this.maintenanceStates.set(command.command_id, next);
269
+ }
270
+ return delivery;
271
+ };
272
+ try {
273
+ await report({ status: 'received' });
274
+ const result = await this.maintenanceExecutor.execute(command, report);
275
+ const latest = this.maintenanceStates.get(command.command_id);
276
+ if (latest?.status !== 'success' && latest?.status !== 'failed') {
277
+ await report({ status: 'success', result: result ?? {} });
278
+ }
279
+ }
280
+ catch (err) {
281
+ const message = err instanceof Error ? err.message : String(err);
282
+ await report({
283
+ status: 'failed',
284
+ error_type: 'MAINTENANCE_FAILED',
285
+ error_message: message,
286
+ });
287
+ this.log.error(`Maintenance command ${command.command_id} failed: ${message}`);
288
+ }
289
+ }
290
+ sendMaintenanceStatus(command, report) {
291
+ const message = {
292
+ type: 'maintenance.status',
293
+ command_id: command.command_id,
294
+ nonce: command.nonce,
295
+ status: report.status,
296
+ result: report.result,
297
+ error_type: report.error_type ?? null,
298
+ error_message: report.error_message ?? null,
299
+ };
300
+ const ackWaiter = this.createMaintenanceAckWaiter(command, report.status);
301
+ const send = this.send(message);
302
+ if (send === 'dropped') {
303
+ this.resolveMaintenanceAck(ackWaiter.key, 'not_sent');
304
+ }
305
+ return { send, ack: ackWaiter.ack };
306
+ }
307
+ createMaintenanceAckWaiter(command, status) {
308
+ const key = this.maintenanceAckKey(command.command_id, command.nonce, status);
309
+ if (status !== 'success' && status !== 'failed') {
310
+ return { key, ack: Promise.resolve('not_required') };
311
+ }
312
+ const previous = this.maintenanceAckWaiters.get(key);
313
+ if (previous) {
314
+ clearTimeout(previous.timer);
315
+ previous.resolve('timeout');
316
+ this.maintenanceAckWaiters.delete(key);
317
+ }
318
+ const ack = new Promise((resolve) => {
319
+ const timer = setTimeout(() => {
320
+ this.maintenanceAckWaiters.delete(key);
321
+ resolve('timeout');
322
+ }, this.maintenanceAckTimeoutMs);
323
+ this.maintenanceAckWaiters.set(key, { resolve, timer });
324
+ });
325
+ return { key, ack };
326
+ }
327
+ handleMaintenanceStatusAck(ack) {
328
+ const key = this.maintenanceAckKey(ack.command_id, ack.nonce, ack.status);
329
+ this.resolveMaintenanceAck(key, ack.accepted ? 'acked' : 'rejected');
330
+ }
331
+ resolveMaintenanceAck(key, outcome) {
332
+ const waiter = this.maintenanceAckWaiters.get(key);
333
+ if (!waiter)
334
+ return;
335
+ clearTimeout(waiter.timer);
336
+ this.maintenanceAckWaiters.delete(key);
337
+ waiter.resolve(outcome);
338
+ }
339
+ maintenanceAckKey(commandId, nonce, status) {
340
+ return `${commandId}:${nonce}:${status}`;
341
+ }
173
342
  async handleTask(task) {
174
343
  // W2.1:envelope 顶层 scene 与 payload.scene 同义;前者权威(server 主写),
175
344
  // 后者向后兼容老链路。优先用顶层,缺失时回 payload.scene。
@@ -346,37 +515,39 @@ class ConnectorConnection {
346
515
  if (this.ws?.readyState === ws_1.default.OPEN) {
347
516
  try {
348
517
  this.ws.send(JSON.stringify(data));
349
- return;
518
+ return 'sent';
350
519
  }
351
520
  catch (err) {
352
521
  // ws.send 同步抛错(如 readyState 漂移到 CLOSING,Node ws 同步 throw)。
353
522
  // 必须自己兜住,否则:handleMessage(line 201) 不 await handleTask,
354
523
  // 实时路径 send(success task.result) 抛错 → 外层 catch 当 RUNNER_FAILURE →
355
524
  // 再 send(error task.result) 二次抛错 → unhandled async rejection,task
356
- // silent loss。与 flushOutboundBuffer 的兜底语义对齐:task.result 永远进
525
+ // silent loss。与 flushOutboundBuffer 的兜底语义对齐:重要消息永远进
357
526
  // buffer 等下次重连 flush,其它消息(heartbeat / hello / task.ack)丢弃,
358
527
  // 下次心跳 / 重连自然补上。
359
528
  const message = err instanceof Error ? err.message : String(err);
360
- if (this.isTaskResult(data)) {
361
- this.log.warn(`ws.send threw, buffering task.result (${message})`);
362
- this.enqueueOutbound(data);
529
+ if (this.isImportantMessage(data)) {
530
+ this.log.warn(`ws.send threw, buffering important message (${message})`);
531
+ return this.enqueueOutbound(data);
363
532
  }
364
533
  else {
365
- this.log.warn(`ws.send threw on non-task.result message, dropping (${message})`);
534
+ this.log.warn(`ws.send threw on non-important message, dropping (${message})`);
366
535
  }
367
- return;
536
+ return 'dropped';
368
537
  }
369
538
  }
370
- // WS 不 OPEN:只 buffer task.result(含 adapter 算出的 answer,不可重建)。
539
+ // WS 不 OPEN:只 buffer 不可重建的重要消息。
371
540
  // 其它消息丢了下次重连自然补上。
372
- if (this.isTaskResult(data)) {
373
- this.enqueueOutbound(data);
541
+ if (this.isImportantMessage(data)) {
542
+ return this.enqueueOutbound(data);
374
543
  }
544
+ return 'dropped';
375
545
  }
376
- isTaskResult(data) {
377
- return (typeof data === 'object' &&
378
- data !== null &&
379
- data.type === 'task.result');
546
+ isImportantMessage(data) {
547
+ if (typeof data !== 'object' || data === null)
548
+ return false;
549
+ const type = data.type;
550
+ return type === 'task.result' || type === 'maintenance.status';
380
551
  }
381
552
  enqueueOutbound(data) {
382
553
  if (this.outboundBuffer.length >= this.outboundBufferMax) {
@@ -384,10 +555,11 @@ class ConnectorConnection {
384
555
  // × 60s timeout 的稳态;触发淘汰意味着长时间断线积压,旧 result server
385
556
  // 那边大概率已 timeout,丢弃可接受。
386
557
  const dropped = this.outboundBuffer.shift();
387
- this.log.warn(`Outbound buffer full (${this.outboundBufferMax}), dropped oldest task.result (age=${dropped ? Date.now() - dropped.enqueuedAt : 0}ms)`);
558
+ this.log.warn(`Outbound buffer full (${this.outboundBufferMax}), dropped oldest important message (age=${dropped ? Date.now() - dropped.enqueuedAt : 0}ms)`);
388
559
  }
389
560
  this.outboundBuffer.push({ enqueuedAt: Date.now(), data });
390
- this.log.warn(`WS not OPEN, buffered task.result (queue=${this.outboundBuffer.length})`);
561
+ this.log.warn(`WS not OPEN, buffered important message (queue=${this.outboundBuffer.length})`);
562
+ return 'buffered';
391
563
  }
392
564
  flushOutboundBuffer() {
393
565
  if (this.outboundBuffer.length === 0)
@@ -1 +1 @@
1
- {"version":3,"file":"connection.js","sourceRoot":"","sources":["../src/connection.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"connection.js","sourceRoot":"","sources":["../src/connection.ts"],"names":[],"mappings":"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"}
@@ -25,7 +25,7 @@ export declare const PROTOCOL_VERSION = 1;
25
25
  * `CORE_VERSION === pkg.version`,bump 时漏改即被单测拦截。BACKLOG(PR #4 后续):
26
26
  * 等到 connector-core 真正公开发布时再考虑 dist 路径调整 / 改 build 脚本注入。
27
27
  */
28
- export declare const CORE_VERSION = "0.4.0";
28
+ export declare const CORE_VERSION = "0.6.0";
29
29
  export interface TaskPayload {
30
30
  kol_user_id: string;
31
31
  caller_user_id: string;
@@ -84,7 +84,27 @@ export interface HeartbeatAck {
84
84
  target_version: string;
85
85
  upgrade_required: boolean;
86
86
  }
87
- export type ServerMessage = TaskPush | HelloOk | HeartbeatAck;
87
+ export type MaintenanceCommandType = 'diagnose' | 'self_reinstall' | 'rollback' | 'restart' | 'reset_config';
88
+ export type MaintenanceStatus = 'received' | 'preflight_ok' | 'executing' | 'success' | 'failed';
89
+ export interface MaintenanceCommand {
90
+ type: 'maintenance.command';
91
+ command_id: string;
92
+ nonce: string;
93
+ command_type: MaintenanceCommandType;
94
+ requested_version?: string | null;
95
+ payload?: Record<string, unknown>;
96
+ expires_at: number;
97
+ }
98
+ export interface MaintenanceStatusAck {
99
+ type: 'maintenance.status_ack';
100
+ command_id: string;
101
+ nonce: string;
102
+ status: MaintenanceStatus;
103
+ accepted: boolean;
104
+ error_type?: string | null;
105
+ error_message?: string | null;
106
+ }
107
+ export type ServerMessage = TaskPush | HelloOk | HeartbeatAck | MaintenanceCommand | MaintenanceStatusAck;
88
108
  export interface RegisterResult {
89
109
  connector_id: string;
90
110
  connector_token: string;
@@ -106,3 +126,12 @@ export interface TaskResultMessage {
106
126
  /** 失败时填错误描述,成功时为 null */
107
127
  error_message: string | null;
108
128
  }
129
+ export interface MaintenanceStatusMessage {
130
+ type: 'maintenance.status';
131
+ command_id: string;
132
+ nonce: string;
133
+ status: MaintenanceStatus;
134
+ result?: Record<string, unknown>;
135
+ error_type?: string | null;
136
+ error_message?: string | null;
137
+ }
package/dist/protocol.js CHANGED
@@ -28,5 +28,5 @@ exports.PROTOCOL_VERSION = 1;
28
28
  * `CORE_VERSION === pkg.version`,bump 时漏改即被单测拦截。BACKLOG(PR #4 后续):
29
29
  * 等到 connector-core 真正公开发布时再考虑 dist 路径调整 / 改 build 脚本注入。
30
30
  */
31
- exports.CORE_VERSION = '0.4.0';
31
+ exports.CORE_VERSION = '0.6.0';
32
32
  //# sourceMappingURL=protocol.js.map
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@cutie-crypto/connector-core",
3
- "version": "0.4.0",
3
+ "version": "0.6.0",
4
4
  "description": "Cutie Connector core protocol types and shared abstractions (Node.js only — HTTP transport uses node:https/http)",
5
5
  "main": "dist/index.js",
6
6
  "types": "dist/index.d.ts",