simple-ai-sdk 1.0.24 → 1.0.26

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.
@@ -1 +1 @@
1
- {"version":3,"file":"chat-session-utils.d.ts","sourceRoot":"","sources":["../../src/client/chat-session-utils.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,KAAK,SAAS,EAAc,MAAM,oBAAoB,CAAC;AAGhE,MAAM,MAAM,0BAA0B,GAAG;IACvC,GAAG,EAAE,MAAM,CAAC;IACZ,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;IACjC;;OAEG;IACH,oBAAoB,CAAC,EAAE,MAAM,CAAC;CAC/B,CAAC;AAEF;;;;;GAKG;AACH,wBAAgB,sBAAsB,gBAItB,MAAM,WAAW,0BAA0B,UAoC1D"}
1
+ {"version":3,"file":"chat-session-utils.d.ts","sourceRoot":"","sources":["../../src/client/chat-session-utils.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,KAAK,SAAS,EAAqB,MAAM,oBAAoB,CAAC;AAGvE,MAAM,MAAM,0BAA0B,GAAG;IACvC,GAAG,EAAE,MAAM,CAAC;IACZ,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;IACjC;;OAEG;IACH,oBAAoB,CAAC,EAAE,MAAM,CAAC;CAC/B,CAAC;AAEF;;;;;GAKG;AACH,wBAAgB,sBAAsB,gBAItB,MAAM,WAAW,0BAA0B,UAoC1D"}
@@ -1,5 +1,5 @@
1
1
  import { useCallback } from "react";
2
- import { generateId } from "../shared/index.js";
2
+ import { generateMessageId } from "../shared/index.js";
3
3
  import { useAIStreamManager } from "./context.js";
4
4
  /**
5
5
  * ページ遷移前にセッションを事前に初期化し、オプションでストリーミングを開始するフック
@@ -18,7 +18,7 @@ export function usePrefetchChatSession() {
18
18
  manager
19
19
  .streamChat(sessionId, [
20
20
  {
21
- id: generateId({ prefix: "msg-" }),
21
+ id: generateMessageId(),
22
22
  role: "user",
23
23
  content: options.streamMessageContent,
24
24
  },
@@ -1,4 +1,4 @@
1
- import { generateId } from "../shared/generate-id.js";
1
+ import { generateMessageId } from "../shared/generate-id.js";
2
2
  import { isAbortError } from "../shared/error-utils.js";
3
3
  class StreamManager {
4
4
  state = {
@@ -519,7 +519,7 @@ class StreamManager {
519
519
  let eventName = null;
520
520
  let dataLines = [];
521
521
  const assistantMessage = {
522
- id: generateId({ prefix: "msg-" }),
522
+ id: generateMessageId(),
523
523
  role: "assistant",
524
524
  content: "",
525
525
  };
@@ -50,6 +50,14 @@ export type UseChatSessionOptions = {
50
50
  onFinish?: OnChatFinishCallback;
51
51
  };
52
52
  export type SendMessageReqBody = Record<string, JSONValue>;
53
+ export type SendMessageOptions = {
54
+ body?: SendMessageReqBody;
55
+ /**
56
+ * 指定した id の message 以降(その id を含む)を破棄してから
57
+ * 新しい user メッセージを追加して送信する。
58
+ */
59
+ dropFromMessageId?: string;
60
+ };
53
61
  export type ReloadMessage = (params?: {
54
62
  body?: SendMessageReqBody;
55
63
  }) => Promise<void>;
@@ -75,9 +83,7 @@ export type UseChatSessionReturn = {
75
83
  * - 内部的に messagesVersion がインクリメントされる。
76
84
  */
77
85
  setMessages: (messages: Message[]) => void;
78
- sendMessage: (content: string, params?: {
79
- body?: SendMessageReqBody;
80
- }) => Promise<void>;
86
+ sendMessage: (content: string, params?: SendMessageOptions) => Promise<void>;
81
87
  reload: ReloadMessage;
82
88
  stop: () => void;
83
89
  stopAll: () => void;
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/client/types.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AACtD,OAAO,KAAK,EAAE,OAAO,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAE7D,MAAM,MAAM,UAAU,GAClB,OAAO,GACP,WAAW,GACX,WAAW,GACX,OAAO,GACP,SAAS,CAAC;AAEd,MAAM,MAAM,WAAW,GAAG;IACxB,EAAE,EAAE,MAAM,CAAC;IACX,QAAQ,EAAE,OAAO,EAAE,CAAC;IACpB;;;OAGG;IACH,QAAQ,EAAE,KAAK,CAAC,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC,CAAC;IAC3C;;OAEG;IACH,cAAc,EAAE,gBAAgB,GAAG,IAAI,CAAC;IACxC;;;;;OAKG;IACH,eAAe,EAAE,MAAM,CAAC;IACxB,MAAM,EAAE,UAAU,CAAC;IACnB,KAAK,EAAE,KAAK,GAAG,IAAI,CAAC;IACpB,eAAe,EAAE,eAAe,GAAG,IAAI,CAAC;IACxC,YAAY,EAAE,MAAM,CAAC;CACtB,CAAC;AAEF,MAAM,MAAM,mBAAmB,GAAG,CAAC,KAAK,EAAE,KAAK,KAAK,IAAI,CAAC;AAEzD,MAAM,MAAM,mBAAmB,GAAG;IAChC,cAAc,EAAE,gBAAgB,CAAC;CAClC,CAAC;AAEF,MAAM,MAAM,oBAAoB,GAAG,CACjC,QAAQ,EAAE,OAAO,EAAE,EACnB,OAAO,EAAE,mBAAmB,KACzB,IAAI,CAAC;AAEV,MAAM,MAAM,qBAAqB,GAAG;IAClC,GAAG,EAAE,MAAM,CAAC;IACZ,eAAe,CAAC,EAAE,OAAO,EAAE,CAAC;IAC5B;;;;;OAKG;IACH,OAAO,CAAC,EAAE,mBAAmB,CAAC;IAC9B;;;;;;OAMG;IACH,QAAQ,CAAC,EAAE,oBAAoB,CAAC;CACjC,CAAC;AAEF,MAAM,MAAM,kBAAkB,GAAG,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;AAE3D,MAAM,MAAM,aAAa,GAAG,CAAC,MAAM,CAAC,EAAE;IACpC,IAAI,CAAC,EAAE,kBAAkB,CAAC;CAC3B,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;AAEpB,MAAM,MAAM,oBAAoB,GAAG;IACjC,QAAQ,EAAE,OAAO,EAAE,CAAC;IACpB;;OAEG;IACH,QAAQ,EAAE,KAAK,CAAC,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC,CAAC;IAC3C;;OAEG;IACH,cAAc,EAAE,gBAAgB,CAAC;IACjC;;;OAGG;IACH,eAAe,EAAE,MAAM,CAAC;IACxB,MAAM,EAAE,UAAU,CAAC;IACnB,KAAK,EAAE,KAAK,GAAG,IAAI,CAAC;IACpB;;;OAGG;IACH,WAAW,EAAE,CAAC,QAAQ,EAAE,OAAO,EAAE,KAAK,IAAI,CAAC;IAC3C,WAAW,EAAE,CACX,OAAO,EAAE,MAAM,EACf,MAAM,CAAC,EAAE;QAAE,IAAI,CAAC,EAAE,kBAAkB,CAAA;KAAE,KACnC,OAAO,CAAC,IAAI,CAAC,CAAC;IACnB,MAAM,EAAE,aAAa,CAAC;IACtB,IAAI,EAAE,MAAM,IAAI,CAAC;IACjB,OAAO,EAAE,MAAM,IAAI,CAAC;CACrB,CAAC;AAEF,MAAM,MAAM,qBAAqB,GAAG,MAAM,IAAI,CAAC;AAE/C,MAAM,MAAM,kBAAkB,GAAG;IAC/B,QAAQ,EAAE,GAAG,CAAC,MAAM,EAAE,WAAW,CAAC,CAAC;CACpC,CAAC"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/client/types.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AACtD,OAAO,KAAK,EAAE,OAAO,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAE7D,MAAM,MAAM,UAAU,GAClB,OAAO,GACP,WAAW,GACX,WAAW,GACX,OAAO,GACP,SAAS,CAAC;AAEd,MAAM,MAAM,WAAW,GAAG;IACxB,EAAE,EAAE,MAAM,CAAC;IACX,QAAQ,EAAE,OAAO,EAAE,CAAC;IACpB;;;OAGG;IACH,QAAQ,EAAE,KAAK,CAAC,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC,CAAC;IAC3C;;OAEG;IACH,cAAc,EAAE,gBAAgB,GAAG,IAAI,CAAC;IACxC;;;;;OAKG;IACH,eAAe,EAAE,MAAM,CAAC;IACxB,MAAM,EAAE,UAAU,CAAC;IACnB,KAAK,EAAE,KAAK,GAAG,IAAI,CAAC;IACpB,eAAe,EAAE,eAAe,GAAG,IAAI,CAAC;IACxC,YAAY,EAAE,MAAM,CAAC;CACtB,CAAC;AAEF,MAAM,MAAM,mBAAmB,GAAG,CAAC,KAAK,EAAE,KAAK,KAAK,IAAI,CAAC;AAEzD,MAAM,MAAM,mBAAmB,GAAG;IAChC,cAAc,EAAE,gBAAgB,CAAC;CAClC,CAAC;AAEF,MAAM,MAAM,oBAAoB,GAAG,CACjC,QAAQ,EAAE,OAAO,EAAE,EACnB,OAAO,EAAE,mBAAmB,KACzB,IAAI,CAAC;AAEV,MAAM,MAAM,qBAAqB,GAAG;IAClC,GAAG,EAAE,MAAM,CAAC;IACZ,eAAe,CAAC,EAAE,OAAO,EAAE,CAAC;IAC5B;;;;;OAKG;IACH,OAAO,CAAC,EAAE,mBAAmB,CAAC;IAC9B;;;;;;OAMG;IACH,QAAQ,CAAC,EAAE,oBAAoB,CAAC;CACjC,CAAC;AAEF,MAAM,MAAM,kBAAkB,GAAG,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;AAE3D,MAAM,MAAM,kBAAkB,GAAG;IAC/B,IAAI,CAAC,EAAE,kBAAkB,CAAC;IAC1B;;;OAGG;IACH,iBAAiB,CAAC,EAAE,MAAM,CAAC;CAC5B,CAAC;AAEF,MAAM,MAAM,aAAa,GAAG,CAAC,MAAM,CAAC,EAAE;IACpC,IAAI,CAAC,EAAE,kBAAkB,CAAC;CAC3B,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;AAEpB,MAAM,MAAM,oBAAoB,GAAG;IACjC,QAAQ,EAAE,OAAO,EAAE,CAAC;IACpB;;OAEG;IACH,QAAQ,EAAE,KAAK,CAAC,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC,CAAC;IAC3C;;OAEG;IACH,cAAc,EAAE,gBAAgB,CAAC;IACjC;;;OAGG;IACH,eAAe,EAAE,MAAM,CAAC;IACxB,MAAM,EAAE,UAAU,CAAC;IACnB,KAAK,EAAE,KAAK,GAAG,IAAI,CAAC;IACpB;;;OAGG;IACH,WAAW,EAAE,CAAC,QAAQ,EAAE,OAAO,EAAE,KAAK,IAAI,CAAC;IAC3C,WAAW,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,kBAAkB,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IAC7E,MAAM,EAAE,aAAa,CAAC;IACtB,IAAI,EAAE,MAAM,IAAI,CAAC;IACjB,OAAO,EAAE,MAAM,IAAI,CAAC;CACrB,CAAC;AAEF,MAAM,MAAM,qBAAqB,GAAG,MAAM,IAAI,CAAC;AAE/C,MAAM,MAAM,kBAAkB,GAAG;IAC/B,QAAQ,EAAE,GAAG,CAAC,MAAM,EAAE,WAAW,CAAC,CAAC;CACpC,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"useChatSession.d.ts","sourceRoot":"","sources":["../../src/client/useChatSession.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EACV,qBAAqB,EACrB,oBAAoB,EAErB,MAAM,YAAY,CAAC;AAKpB,wBAAgB,cAAc,CAC5B,SAAS,EAAE,MAAM,EACjB,OAAO,EAAE,qBAAqB,GAC7B,oBAAoB,CAqJtB"}
1
+ {"version":3,"file":"useChatSession.d.ts","sourceRoot":"","sources":["../../src/client/useChatSession.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EACV,qBAAqB,EACrB,oBAAoB,EAGrB,MAAM,YAAY,CAAC;AAKpB,wBAAgB,cAAc,CAC5B,SAAS,EAAE,MAAM,EACjB,OAAO,EAAE,qBAAqB,GAC7B,oBAAoB,CA+JtB"}
@@ -1,6 +1,6 @@
1
1
  import { useEffect, useSyncExternalStore, useCallback, useRef } from "react";
2
2
  import { useAIStreamManager } from "./context.js";
3
- import { generateId } from "../shared/generate-id.js";
3
+ import { generateMessageId } from "../shared/generate-id.js";
4
4
  export function useChatSession(sessionId, options) {
5
5
  const { api, initialMessages = [], onError, onFinish } = options;
6
6
  const manager = useAIStreamManager();
@@ -65,11 +65,19 @@ export function useChatSession(sessionId, options) {
65
65
  }, [sessionId, session.status, session.messages.length]);
66
66
  const sendMessage = useCallback(async (content, params) => {
67
67
  const userMessage = {
68
- id: generateId({ prefix: "msg-" }),
68
+ id: generateMessageId(),
69
69
  role: "user",
70
70
  content,
71
71
  };
72
- const updatedMessages = [...session.messages, userMessage];
72
+ const baseMessages = !params?.dropFromMessageId
73
+ ? session.messages
74
+ : (() => {
75
+ const dropIndex = session.messages.findIndex((message) => message.id === params.dropFromMessageId);
76
+ if (dropIndex === -1)
77
+ return session.messages;
78
+ return session.messages.slice(0, dropIndex);
79
+ })();
80
+ const updatedMessages = [...baseMessages, userMessage];
73
81
  await manager.streamChat(sessionId, updatedMessages, {
74
82
  api,
75
83
  body: params?.body,
@@ -83,7 +91,7 @@ export function useChatSession(sessionId, options) {
83
91
  // キャッシュなどを防ぐため、最後のmessageのidを変える
84
92
  messagesUntilLastUser[messagesUntilLastUser.length - 1] = {
85
93
  ...messagesUntilLastUser[lastUserIndex],
86
- id: generateId({ prefix: "msg-" }),
94
+ id: generateMessageId(),
87
95
  };
88
96
  await manager.streamChat(sessionId, messagesUntilLastUser, {
89
97
  api,
@@ -3,4 +3,5 @@ export declare function generateId({ prefix, length, alphabet, }?: {
3
3
  length?: number;
4
4
  alphabet?: string;
5
5
  }): string;
6
+ export declare function generateMessageId(): string;
6
7
  //# sourceMappingURL=generate-id.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"generate-id.d.ts","sourceRoot":"","sources":["../../src/shared/generate-id.ts"],"names":[],"mappings":"AAAA,wBAAgB,UAAU,CAAC,EACzB,MAAM,EACN,MAAW,EACX,QAA2E,GAC5E,GAAE;IACD,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,QAAQ,CAAC,EAAE,MAAM,CAAC;CACd,UAOL"}
1
+ {"version":3,"file":"generate-id.d.ts","sourceRoot":"","sources":["../../src/shared/generate-id.ts"],"names":[],"mappings":"AAAA,wBAAgB,UAAU,CAAC,EACzB,MAAM,EACN,MAAW,EACX,QAA2E,GAC5E,GAAE;IACD,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,QAAQ,CAAC,EAAE,MAAM,CAAC;CACd,UAOL;AAED,wBAAgB,iBAAiB,WAEhC"}
@@ -6,3 +6,6 @@ export function generateId({ prefix, length = 16, alphabet = "0123456789ABCDEFGH
6
6
  }
7
7
  return prefix ? `${prefix}${id}` : id;
8
8
  }
9
+ export function generateMessageId() {
10
+ return generateId({ prefix: "msg-" });
11
+ }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "simple-ai-sdk",
3
- "version": "1.0.24",
3
+ "version": "1.0.26",
4
4
  "private": false,
5
5
  "description": "Simple AI SDK for Hono / React19+ / OpenAI",
6
6
  "type": "module",