simple-ai-sdk 1.0.0 → 1.0.2

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 (53) hide show
  1. package/dist/client/context.d.ts +15 -0
  2. package/dist/client/context.d.ts.map +1 -0
  3. package/dist/client/context.js +25 -0
  4. package/{src/client/index.ts → dist/client/index.d.ts} +2 -6
  5. package/dist/client/index.d.ts.map +1 -0
  6. package/dist/client/index.js +3 -0
  7. package/dist/client/manager.d.ts +101 -0
  8. package/dist/client/manager.d.ts.map +1 -0
  9. package/dist/client/manager.js +650 -0
  10. package/dist/client/types.d.ts +52 -0
  11. package/dist/client/types.d.ts.map +1 -0
  12. package/dist/client/types.js +1 -0
  13. package/dist/client/useChatSession.d.ts +3 -0
  14. package/dist/client/useChatSession.d.ts.map +1 -0
  15. package/dist/client/useChatSession.js +81 -0
  16. package/dist/server/createChatHandler.d.ts +3 -0
  17. package/dist/server/createChatHandler.d.ts.map +1 -0
  18. package/dist/server/createChatHandler.js +218 -0
  19. package/dist/server/index.d.ts +4 -0
  20. package/dist/server/index.d.ts.map +1 -0
  21. package/dist/server/index.js +2 -0
  22. package/dist/server/types.d.ts +50 -0
  23. package/dist/server/types.d.ts.map +1 -0
  24. package/dist/server/types.js +1 -0
  25. package/dist/shared/error-utils.d.ts +2 -0
  26. package/dist/shared/error-utils.d.ts.map +1 -0
  27. package/dist/shared/error-utils.js +11 -0
  28. package/dist/shared/generate-id.d.ts +6 -0
  29. package/dist/shared/generate-id.d.ts.map +1 -0
  30. package/dist/shared/generate-id.js +8 -0
  31. package/dist/shared/index.d.ts +4 -0
  32. package/dist/shared/index.d.ts.map +1 -0
  33. package/dist/shared/types.d.ts +10 -0
  34. package/dist/shared/types.d.ts.map +1 -0
  35. package/dist/shared/types.js +1 -0
  36. package/dist/shared/wire.d.ts +43 -0
  37. package/dist/shared/wire.d.ts.map +1 -0
  38. package/dist/shared/wire.js +1 -0
  39. package/package.json +7 -3
  40. package/eslint.config.js +0 -30
  41. package/src/client/context.tsx +0 -45
  42. package/src/client/manager.ts +0 -814
  43. package/src/client/types.ts +0 -56
  44. package/src/client/useChatSession.ts +0 -120
  45. package/src/server/createChatHandler.ts +0 -247
  46. package/src/server/index.ts +0 -11
  47. package/src/server/types.ts +0 -66
  48. package/src/shared/error-utils.ts +0 -13
  49. package/src/shared/generate-id.ts +0 -16
  50. package/src/shared/types.ts +0 -15
  51. package/src/shared/wire.ts +0 -40
  52. package/tsconfig.json +0 -23
  53. /package/{src/shared/index.ts → dist/shared/index.js} +0 -0
@@ -0,0 +1,15 @@
1
+ import React from "react";
2
+ import { type IStreamManager } from "./manager.js";
3
+ export type SimpleAIProviderProps = {
4
+ children: React.ReactNode;
5
+ maxSessions?: number;
6
+ debug?: boolean;
7
+ /**
8
+ * TTL(ミリ秒)。アクセスのない ready/error セッションを定期的に破棄する。
9
+ * 未指定の場合は破棄しない。
10
+ */
11
+ ttlMs?: number;
12
+ };
13
+ export declare function SimpleAIProvider({ children, maxSessions, debug, ttlMs, }: SimpleAIProviderProps): import("react/jsx-runtime.js").JSX.Element;
14
+ export declare function useAIStreamManager(): IStreamManager;
15
+ //# sourceMappingURL=context.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"context.d.ts","sourceRoot":"","sources":["../../src/client/context.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAsC,MAAM,OAAO,CAAC;AAC3D,OAAO,EAAiB,KAAK,cAAc,EAAE,MAAM,cAAc,CAAC;AAIlE,MAAM,MAAM,qBAAqB,GAAG;IAClC,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC;IAC1B,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB;;;OAGG;IACH,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB,CAAC;AAEF,wBAAgB,gBAAgB,CAAC,EAC/B,QAAQ,EACR,WAAW,EACX,KAAK,EACL,KAAK,GACN,EAAE,qBAAqB,8CAevB;AAED,wBAAgB,kBAAkB,mBAMjC"}
@@ -0,0 +1,25 @@
1
+ import { jsx as _jsx } from "react/jsx-runtime";
2
+ import React, { createContext, use, useMemo } from "react";
3
+ import { StreamManager } from "./manager.js";
4
+ const StreamContext = createContext(null);
5
+ export function SimpleAIProvider({ children, maxSessions, debug, ttlMs, }) {
6
+ // Create StreamManager instance with custom options
7
+ const manager = useMemo(() => {
8
+ return new StreamManager({ maxSessions, debug, ttlMs });
9
+ }, [maxSessions, debug, ttlMs]);
10
+ // Provider がアンマウントされる際に、内部タイマーなどをクリーンアップする
11
+ // (メモリリーク防止のため)
12
+ React.useEffect(() => {
13
+ return () => {
14
+ manager.dispose();
15
+ };
16
+ }, [manager]);
17
+ return _jsx(StreamContext, { value: manager, children: children });
18
+ }
19
+ export function useAIStreamManager() {
20
+ const manager = use(StreamContext);
21
+ if (!manager) {
22
+ throw new Error("useAIStreamManager must be used within SimpleAIProvider");
23
+ }
24
+ return manager;
25
+ }
@@ -1,9 +1,5 @@
1
1
  export { SimpleAIProvider, useAIStreamManager } from "./context.js";
2
2
  export { useChatSession } from "./useChatSession.js";
3
3
  export { streamManager, type IStreamManager } from "./manager.js";
4
- export type {
5
- ChatStatus,
6
- ChatSession,
7
- UseChatSessionOptions,
8
- UseChatSessionReturn,
9
- } from "./types.js";
4
+ export type { ChatStatus, ChatSession, UseChatSessionOptions, UseChatSessionReturn, } from "./types.js";
5
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/client/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,kBAAkB,EAAE,MAAM,cAAc,CAAC;AACpE,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AACrD,OAAO,EAAE,aAAa,EAAE,KAAK,cAAc,EAAE,MAAM,cAAc,CAAC;AAClE,YAAY,EACV,UAAU,EACV,WAAW,EACX,qBAAqB,EACrB,oBAAoB,GACrB,MAAM,YAAY,CAAC"}
@@ -0,0 +1,3 @@
1
+ export { SimpleAIProvider, useAIStreamManager } from "./context.js";
2
+ export { useChatSession } from "./useChatSession.js";
3
+ export { streamManager } from "./manager.js";
@@ -0,0 +1,101 @@
1
+ import type { ChatSession, StreamManagerListener, StreamManagerState } from "./types.js";
2
+ import type { Message, JSONValue } from "../shared/index.js";
3
+ export interface IStreamManager {
4
+ subscribe(listener: StreamManagerListener): () => void;
5
+ getSnapshot(): StreamManagerState;
6
+ getSession(sessionId: string): ChatSession | undefined;
7
+ initSession(sessionId: string, initialMessages?: Message[]): void;
8
+ /**
9
+ * セッション単位で最新の onFinish ハンドラを登録する。
10
+ * - ストリーム完了時は常にこの最新ハンドラを呼び出す。
11
+ * - コンポーネントがアンマウントされても保持され、完了時に呼ばれる。
12
+ */
13
+ setOnFinishHandler(sessionId: string, handler: ((messages: Message[]) => void) | undefined): void;
14
+ /**
15
+ * セッション単位で最新の onMetadata ハンドラを登録する。
16
+ */
17
+ setOnMetadataHandler(sessionId: string, handler: ((metadata: Record<string, JSONValue>) => void) | undefined): void;
18
+ /**
19
+ * セッション単位で最新の onError ハンドラを登録する。
20
+ */
21
+ setOnErrorHandler(sessionId: string, handler: ((error: Error) => void) | undefined): void;
22
+ /**
23
+ * セッションに購読者を関連付ける(マウント時に呼ぶ)。
24
+ */
25
+ retainSession(sessionId: string): void;
26
+ /**
27
+ * セッションから購読者を外す(アンマウント時に呼ぶ)。
28
+ */
29
+ releaseSession(sessionId: string): void;
30
+ /**
31
+ * セッションの最終アクセス時刻を更新する(LRU用)。
32
+ * レンダリング中に呼ばれる可能性があるため、通知は行わない。
33
+ */
34
+ touchSession(sessionId: string): void;
35
+ updateSession(sessionId: string, updates: Partial<ChatSession>): void;
36
+ streamChat(sessionId: string, messages: Message[], options: {
37
+ api: string;
38
+ body?: Record<string, JSONValue>;
39
+ }): Promise<void>;
40
+ stopStream(sessionId: string): void;
41
+ /**
42
+ * ライフサイクル終了時のクリーンアップ用。
43
+ * SimpleAIProvider から呼び出される想定。
44
+ */
45
+ dispose(): void;
46
+ }
47
+ export type StreamManagerOptions = {
48
+ maxSessions?: number;
49
+ debug?: boolean;
50
+ /**
51
+ * TTL(ミリ秒)を過ぎてアクセスのない ready/error セッションを自動掃除する。
52
+ * 指定しない場合は自動掃除を行わない。
53
+ */
54
+ ttlMs?: number;
55
+ };
56
+ declare class StreamManager implements IStreamManager {
57
+ private state;
58
+ private listeners;
59
+ private rafScheduled;
60
+ private rafId;
61
+ private rafFallbackTimer;
62
+ private getRAF;
63
+ private getCAF;
64
+ private maxSessions;
65
+ private debug;
66
+ private ttlMs?;
67
+ private sweepTimer;
68
+ private activeSubscribers;
69
+ private latestOnFinish;
70
+ private latestOnMetadata;
71
+ private latestOnError;
72
+ private streamIds;
73
+ constructor(options?: StreamManagerOptions);
74
+ subscribe(listener: StreamManagerListener): () => void;
75
+ setOnFinishHandler(sessionId: string, handler: ((messages: Message[]) => void) | undefined): void;
76
+ setOnMetadataHandler(sessionId: string, handler: ((metadata: Record<string, JSONValue>) => void) | undefined): void;
77
+ setOnErrorHandler(sessionId: string, handler: ((error: Error) => void) | undefined): void;
78
+ getSnapshot(): StreamManagerState;
79
+ private notify;
80
+ getSession(sessionId: string): ChatSession | undefined;
81
+ touchSession(sessionId: string): void;
82
+ initSession(sessionId: string, initialMessages?: Message[]): void;
83
+ retainSession(sessionId: string): void;
84
+ releaseSession(sessionId: string): void;
85
+ private removeOldestSession;
86
+ private logSessionInfo;
87
+ updateSession(sessionId: string, updates: Partial<ChatSession>, immediate?: boolean): void;
88
+ streamChat(sessionId: string, messages: Message[], options: {
89
+ api: string;
90
+ body?: Record<string, JSONValue>;
91
+ }): Promise<void>;
92
+ stopStream(sessionId: string): void;
93
+ /**
94
+ * ライフサイクル終了時のクリーンアップ用。
95
+ * SimpleAIProvider から呼び出される想定。
96
+ */
97
+ dispose(): void;
98
+ }
99
+ export { StreamManager };
100
+ export declare const streamManager: IStreamManager;
101
+ //# sourceMappingURL=manager.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"manager.d.ts","sourceRoot":"","sources":["../../src/client/manager.ts"],"names":[],"mappings":"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"}