@optima-chat/agentic-sdk 0.37.0 → 0.37.1

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.
@@ -49,6 +49,9 @@
49
49
  * 用户看到的是「前半段标着失败 + 后半段另起一条」。这一项在设计定稿时**漏登记了**,
50
50
  * 见 `composer-wedge-reconcile-917.test.ts` 的 X1 特征用例(钉的是已知边界,不是期望行为)。
51
51
  *
52
+ * sdk#158 起,帧未出网(`send()` 返 false)**不武装**:「10 秒拿不到回执」的推断只在帧确实
53
+ * 出网之后才成立;`abort()` 用返回值告诉消费方(false = 有会话且未出网)。
54
+ *
52
55
  * 窗口维持在 10 秒(拉长要连带改 toast 的出现时机,属 UX 改动)。
53
56
  *
54
57
  * ## 取消条件(两条,照搬今天 agentic-chat 里那个定时器的语义)
@@ -78,8 +81,16 @@ export interface UseAbortWithEscapeHatchOptions {
78
81
  onEscape?: (conversationId: string) => void;
79
82
  }
80
83
  export interface UseAbortWithEscapeHatchResult {
81
- /** 替代 `useCurrentChat().abort` 调用:发 abort 帧 + 武装逃生口定时器。 */
82
- abort: () => void;
84
+ /**
85
+ * 替代 `useCurrentChat().abort` 调用:发 abort 帧 + 武装逃生口定时器。
86
+ *
87
+ * 返回值(sdk#158):**返 false 当且仅当「有当前会话且 abort 帧未出网」**(`client.send()`
88
+ * 返 false:socket 非 OPEN、或 `onBeforeSend` 拦下)。此时**不武装**逃生口、不改任何本地态——
89
+ * 帧没到服务端,「10 秒没回执」不构成任何推断的前提;消费方拿它提示「未连接,请稍后重试」。
90
+ * 帧出网返 true;无当前会话时不发帧、不武装(既有行为),也返 true——那不是需要提示的失败
91
+ * (COO 的停止键常显,lazy-create 前也会调到这里)。
92
+ */
93
+ abort: () => boolean;
83
94
  /** 正在等待停止回执的会话 id;非空即「停止中」态,可用来置灰停止键。 */
84
95
  abortingConversationId: string | null;
85
96
  }
@@ -1 +1 @@
1
- {"version":3,"file":"use-abort-with-escape-hatch.d.ts","sourceRoot":"","sources":["../../src/hooks/use-abort-with-escape-hatch.ts"],"names":[],"mappings":"AAIA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAkEG;AACH,MAAM,WAAW,8BAA8B;IAC7C;;;OAGG;IACH,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB;;;OAGG;IACH,QAAQ,CAAC,EAAE,CAAC,cAAc,EAAE,MAAM,KAAK,IAAI,CAAC;CAC7C;AAED,MAAM,WAAW,6BAA6B;IAC5C,2DAA2D;IAC3D,KAAK,EAAE,MAAM,IAAI,CAAC;IAClB,yCAAyC;IACzC,sBAAsB,EAAE,MAAM,GAAG,IAAI,CAAC;CACvC;AAED,wBAAgB,uBAAuB,CACrC,OAAO,GAAE,8BAAmC,GAC3C,6BAA6B,CA+C/B"}
1
+ {"version":3,"file":"use-abort-with-escape-hatch.d.ts","sourceRoot":"","sources":["../../src/hooks/use-abort-with-escape-hatch.ts"],"names":[],"mappings":"AAIA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAqEG;AACH,MAAM,WAAW,8BAA8B;IAC7C;;;OAGG;IACH,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB;;;OAGG;IACH,QAAQ,CAAC,EAAE,CAAC,cAAc,EAAE,MAAM,KAAK,IAAI,CAAC;CAC7C;AAED,MAAM,WAAW,6BAA6B;IAC5C;;;;;;;;OAQG;IACH,KAAK,EAAE,MAAM,OAAO,CAAC;IACrB,yCAAyC;IACzC,sBAAsB,EAAE,MAAM,GAAG,IAAI,CAAC;CACvC;AAED,wBAAgB,uBAAuB,CACrC,OAAO,GAAE,8BAAmC,GAC3C,6BAA6B,CAmD/B"}
@@ -21,9 +21,14 @@ export function useAbortWithEscapeHatch(options = {}) {
21
21
  const abort = useCallback(() => {
22
22
  const conversationId = store.getState().currentConversationId;
23
23
  if (!conversationId)
24
- return;
25
- client.send({ type: 'abort', conversation_id: conversationId });
24
+ return true;
25
+ // sdk#158:帧没出网就不武装——否则重连 gap 里按停止,10s 后会把仍在跑的回合判成「已停」
26
+ //(回复劈两条 + 撞并发锁 + #1021 下误发 E10)。abort 不入 outbox、不重投,丢了就是丢了。
27
+ const sent = client.send({ type: 'abort', conversation_id: conversationId });
28
+ if (!sent)
29
+ return false;
26
30
  setAbortingConversationId(conversationId);
31
+ return true;
27
32
  }, [store, client]);
28
33
  useEffect(() => {
29
34
  if (!abortingConversationId)
@@ -1 +1 @@
1
- {"version":3,"file":"use-abort-with-escape-hatch.js","sourceRoot":"","sources":["../../src/hooks/use-abort-with-escape-hatch.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,SAAS,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AACjE,OAAO,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AACnC,OAAO,EAAE,cAAc,EAAE,MAAM,6BAA6B,CAAC;AAyF7D,MAAM,UAAU,uBAAuB,CACrC,UAA0C,EAAE;IAE5C,MAAM,EAAE,SAAS,GAAG,MAAM,EAAE,QAAQ,EAAE,GAAG,OAAO,CAAC;IACjD,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,cAAc,EAAE,CAAC;IAC3C,MAAM,CAAC,sBAAsB,EAAE,yBAAyB,CAAC,GAAG,QAAQ,CAAgB,IAAI,CAAC,CAAC;IAE1F,MAAM,qBAAqB,GAAG,QAAQ,CAAC,KAAK,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,qBAAqB,CAAC,CAAC;IAC9E,mDAAmD;IACnD,8CAA8C;IAC9C,MAAM,kBAAkB,GAAG,QAAQ,CAAC,KAAK,EAAE,CAAC,CAAC,EAAE,EAAE,CAC/C,sBAAsB,KAAK,IAAI;QAC7B,CAAC,CAAC,KAAK;QACP,CAAC,CAAC,CAAC,CAAC,yBAAyB,CAAC,GAAG,CAAC,sBAAsB,CAAC;YACvD,CAAC,sBAAsB,KAAK,CAAC,CAAC,qBAAqB,IAAI,CAAC,CAAC,CAAC,WAAW,IAAI,CAAC,CAAC,UAAU,CAAC,CAAC,CAC5F,CAAC;IAEF,uDAAuD;IACvD,kCAAkC;IAClC,MAAM,WAAW,GAAG,MAAM,CAAC,QAAQ,CAAC,CAAC;IACrC,SAAS,CAAC,GAAG,EAAE;QACb,WAAW,CAAC,OAAO,GAAG,QAAQ,CAAC;IACjC,CAAC,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC;IAEf,MAAM,KAAK,GAAG,WAAW,CAAC,GAAG,EAAE;QAC7B,MAAM,cAAc,GAAG,KAAK,CAAC,QAAQ,EAAE,CAAC,qBAAqB,CAAC;QAC9D,IAAI,CAAC,cAAc;YAAE,OAAO;QAC5B,MAAM,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,eAAe,EAAE,cAAc,EAAE,CAAC,CAAC;QAChE,yBAAyB,CAAC,cAAc,CAAC,CAAC;IAC5C,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC,CAAC;IAEpB,SAAS,CAAC,GAAG,EAAE;QACb,IAAI,CAAC,sBAAsB;YAAE,OAAO;QACpC,oBAAoB;QACpB,IAAI,sBAAsB,KAAK,qBAAqB,IAAI,CAAC,kBAAkB,EAAE,CAAC;YAC5E,yBAAyB,CAAC,IAAI,CAAC,CAAC;YAChC,OAAO;QACT,CAAC;QACD,MAAM,KAAK,GAAG,UAAU,CAAC,GAAG,EAAE;YAC5B,yBAAyB,CAAC,IAAI,CAAC,CAAC;YAChC,oEAAoE;YACpE,kDAAkD;YAClD,KAAK,CAAC,QAAQ,EAAE,CAAC,eAAe,CAAC,sBAAsB,EAAE,cAAc,CAAC,CAAC;YACzE,WAAW,CAAC,OAAO,EAAE,CAAC,sBAAsB,CAAC,CAAC;QAChD,CAAC,EAAE,SAAS,CAAC,CAAC;QACd,OAAO,GAAG,EAAE,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC;IACnC,CAAC,EAAE,CAAC,sBAAsB,EAAE,qBAAqB,EAAE,kBAAkB,EAAE,SAAS,EAAE,KAAK,CAAC,CAAC,CAAC;IAE1F,OAAO,EAAE,KAAK,EAAE,sBAAsB,EAAE,CAAC;AAC3C,CAAC"}
1
+ {"version":3,"file":"use-abort-with-escape-hatch.js","sourceRoot":"","sources":["../../src/hooks/use-abort-with-escape-hatch.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,SAAS,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AACjE,OAAO,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AACnC,OAAO,EAAE,cAAc,EAAE,MAAM,6BAA6B,CAAC;AAoG7D,MAAM,UAAU,uBAAuB,CACrC,UAA0C,EAAE;IAE5C,MAAM,EAAE,SAAS,GAAG,MAAM,EAAE,QAAQ,EAAE,GAAG,OAAO,CAAC;IACjD,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,cAAc,EAAE,CAAC;IAC3C,MAAM,CAAC,sBAAsB,EAAE,yBAAyB,CAAC,GAAG,QAAQ,CAAgB,IAAI,CAAC,CAAC;IAE1F,MAAM,qBAAqB,GAAG,QAAQ,CAAC,KAAK,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,qBAAqB,CAAC,CAAC;IAC9E,mDAAmD;IACnD,8CAA8C;IAC9C,MAAM,kBAAkB,GAAG,QAAQ,CAAC,KAAK,EAAE,CAAC,CAAC,EAAE,EAAE,CAC/C,sBAAsB,KAAK,IAAI;QAC7B,CAAC,CAAC,KAAK;QACP,CAAC,CAAC,CAAC,CAAC,yBAAyB,CAAC,GAAG,CAAC,sBAAsB,CAAC;YACvD,CAAC,sBAAsB,KAAK,CAAC,CAAC,qBAAqB,IAAI,CAAC,CAAC,CAAC,WAAW,IAAI,CAAC,CAAC,UAAU,CAAC,CAAC,CAC5F,CAAC;IAEF,uDAAuD;IACvD,kCAAkC;IAClC,MAAM,WAAW,GAAG,MAAM,CAAC,QAAQ,CAAC,CAAC;IACrC,SAAS,CAAC,GAAG,EAAE;QACb,WAAW,CAAC,OAAO,GAAG,QAAQ,CAAC;IACjC,CAAC,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC;IAEf,MAAM,KAAK,GAAG,WAAW,CAAC,GAAY,EAAE;QACtC,MAAM,cAAc,GAAG,KAAK,CAAC,QAAQ,EAAE,CAAC,qBAAqB,CAAC;QAC9D,IAAI,CAAC,cAAc;YAAE,OAAO,IAAI,CAAC;QACjC,sDAAsD;QACtD,4DAA4D;QAC5D,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,eAAe,EAAE,cAAc,EAAE,CAAC,CAAC;QAC7E,IAAI,CAAC,IAAI;YAAE,OAAO,KAAK,CAAC;QACxB,yBAAyB,CAAC,cAAc,CAAC,CAAC;QAC1C,OAAO,IAAI,CAAC;IACd,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC,CAAC;IAEpB,SAAS,CAAC,GAAG,EAAE;QACb,IAAI,CAAC,sBAAsB;YAAE,OAAO;QACpC,oBAAoB;QACpB,IAAI,sBAAsB,KAAK,qBAAqB,IAAI,CAAC,kBAAkB,EAAE,CAAC;YAC5E,yBAAyB,CAAC,IAAI,CAAC,CAAC;YAChC,OAAO;QACT,CAAC;QACD,MAAM,KAAK,GAAG,UAAU,CAAC,GAAG,EAAE;YAC5B,yBAAyB,CAAC,IAAI,CAAC,CAAC;YAChC,oEAAoE;YACpE,kDAAkD;YAClD,KAAK,CAAC,QAAQ,EAAE,CAAC,eAAe,CAAC,sBAAsB,EAAE,cAAc,CAAC,CAAC;YACzE,WAAW,CAAC,OAAO,EAAE,CAAC,sBAAsB,CAAC,CAAC;QAChD,CAAC,EAAE,SAAS,CAAC,CAAC;QACd,OAAO,GAAG,EAAE,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC;IACnC,CAAC,EAAE,CAAC,sBAAsB,EAAE,qBAAqB,EAAE,kBAAkB,EAAE,SAAS,EAAE,KAAK,CAAC,CAAC,CAAC;IAE1F,OAAO,EAAE,KAAK,EAAE,sBAAsB,EAAE,CAAC;AAC3C,CAAC"}
package/dist/version.d.ts CHANGED
@@ -1,2 +1,2 @@
1
- export declare const SDK_VERSION = "0.37.0";
1
+ export declare const SDK_VERSION = "0.37.1";
2
2
  //# sourceMappingURL=version.d.ts.map
package/dist/version.js CHANGED
@@ -1,3 +1,3 @@
1
1
  // AUTO-GENERATED by scripts/gen-version.mjs — do not edit.
2
- export const SDK_VERSION = "0.37.0";
2
+ export const SDK_VERSION = "0.37.1";
3
3
  //# sourceMappingURL=version.js.map
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@optima-chat/agentic-sdk",
3
- "version": "0.37.0",
3
+ "version": "0.37.1",
4
4
  "description": "Chat core logic for Optima gateway - Provider, hooks, store, WebSocket client",
5
5
  "license": "UNLICENSED",
6
6
  "type": "module",