@astro-minimax/ai 0.2.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.
Files changed (159) hide show
  1. package/README.md +223 -0
  2. package/dist/cache/global-cache.d.ts +31 -0
  3. package/dist/cache/global-cache.d.ts.map +1 -0
  4. package/dist/cache/global-cache.js +141 -0
  5. package/dist/cache/index.d.ts +8 -0
  6. package/dist/cache/index.d.ts.map +1 -0
  7. package/dist/cache/index.js +62 -0
  8. package/dist/cache/kv-adapter.d.ts +21 -0
  9. package/dist/cache/kv-adapter.d.ts.map +1 -0
  10. package/dist/cache/kv-adapter.js +102 -0
  11. package/dist/cache/memory-adapter.d.ts +24 -0
  12. package/dist/cache/memory-adapter.d.ts.map +1 -0
  13. package/dist/cache/memory-adapter.js +95 -0
  14. package/dist/cache/response-cache.d.ts +45 -0
  15. package/dist/cache/response-cache.d.ts.map +1 -0
  16. package/dist/cache/response-cache.js +85 -0
  17. package/dist/cache/types.d.ts +118 -0
  18. package/dist/cache/types.d.ts.map +1 -0
  19. package/dist/cache/types.js +16 -0
  20. package/dist/data/index.d.ts +3 -0
  21. package/dist/data/index.d.ts.map +1 -0
  22. package/dist/data/index.js +1 -0
  23. package/dist/data/metadata-loader.d.ts +37 -0
  24. package/dist/data/metadata-loader.d.ts.map +1 -0
  25. package/dist/data/metadata-loader.js +54 -0
  26. package/dist/data/types.d.ts +51 -0
  27. package/dist/data/types.d.ts.map +1 -0
  28. package/dist/data/types.js +1 -0
  29. package/dist/index.d.ts +19 -0
  30. package/dist/index.d.ts.map +1 -0
  31. package/dist/index.js +28 -0
  32. package/dist/intelligence/citation-guard.d.ts +24 -0
  33. package/dist/intelligence/citation-guard.d.ts.map +1 -0
  34. package/dist/intelligence/citation-guard.js +82 -0
  35. package/dist/intelligence/evidence-analysis.d.ts +29 -0
  36. package/dist/intelligence/evidence-analysis.d.ts.map +1 -0
  37. package/dist/intelligence/evidence-analysis.js +88 -0
  38. package/dist/intelligence/index.d.ts +6 -0
  39. package/dist/intelligence/index.d.ts.map +1 -0
  40. package/dist/intelligence/index.js +4 -0
  41. package/dist/intelligence/intent-detect.d.ts +29 -0
  42. package/dist/intelligence/intent-detect.d.ts.map +1 -0
  43. package/dist/intelligence/intent-detect.js +64 -0
  44. package/dist/intelligence/keyword-extract.d.ts +31 -0
  45. package/dist/intelligence/keyword-extract.d.ts.map +1 -0
  46. package/dist/intelligence/keyword-extract.js +114 -0
  47. package/dist/intelligence/types.d.ts +27 -0
  48. package/dist/intelligence/types.d.ts.map +1 -0
  49. package/dist/intelligence/types.js +1 -0
  50. package/dist/middleware/index.d.ts +3 -0
  51. package/dist/middleware/index.d.ts.map +1 -0
  52. package/dist/middleware/index.js +1 -0
  53. package/dist/middleware/rate-limiter.d.ts +26 -0
  54. package/dist/middleware/rate-limiter.d.ts.map +1 -0
  55. package/dist/middleware/rate-limiter.js +129 -0
  56. package/dist/prompt/dynamic-layer.d.ts +7 -0
  57. package/dist/prompt/dynamic-layer.d.ts.map +1 -0
  58. package/dist/prompt/dynamic-layer.js +40 -0
  59. package/dist/prompt/index.d.ts +6 -0
  60. package/dist/prompt/index.d.ts.map +1 -0
  61. package/dist/prompt/index.js +4 -0
  62. package/dist/prompt/prompt-builder.d.ts +11 -0
  63. package/dist/prompt/prompt-builder.d.ts.map +1 -0
  64. package/dist/prompt/prompt-builder.js +19 -0
  65. package/dist/prompt/semi-static-layer.d.ts +7 -0
  66. package/dist/prompt/semi-static-layer.d.ts.map +1 -0
  67. package/dist/prompt/semi-static-layer.js +32 -0
  68. package/dist/prompt/static-layer.d.ts +3 -0
  69. package/dist/prompt/static-layer.d.ts.map +1 -0
  70. package/dist/prompt/static-layer.js +78 -0
  71. package/dist/prompt/types.d.ts +25 -0
  72. package/dist/prompt/types.d.ts.map +1 -0
  73. package/dist/prompt/types.js +1 -0
  74. package/dist/provider-manager/base.d.ts +26 -0
  75. package/dist/provider-manager/base.d.ts.map +1 -0
  76. package/dist/provider-manager/base.js +47 -0
  77. package/dist/provider-manager/config.d.ts +7 -0
  78. package/dist/provider-manager/config.d.ts.map +1 -0
  79. package/dist/provider-manager/config.js +134 -0
  80. package/dist/provider-manager/index.d.ts +8 -0
  81. package/dist/provider-manager/index.d.ts.map +1 -0
  82. package/dist/provider-manager/index.js +6 -0
  83. package/dist/provider-manager/manager.d.ts +18 -0
  84. package/dist/provider-manager/manager.d.ts.map +1 -0
  85. package/dist/provider-manager/manager.js +121 -0
  86. package/dist/provider-manager/mock.d.ts +18 -0
  87. package/dist/provider-manager/mock.d.ts.map +1 -0
  88. package/dist/provider-manager/mock.js +56 -0
  89. package/dist/provider-manager/openai.d.ts +20 -0
  90. package/dist/provider-manager/openai.d.ts.map +1 -0
  91. package/dist/provider-manager/openai.js +83 -0
  92. package/dist/provider-manager/types.d.ts +217 -0
  93. package/dist/provider-manager/types.d.ts.map +1 -0
  94. package/dist/provider-manager/types.js +6 -0
  95. package/dist/provider-manager/workers.d.ts +20 -0
  96. package/dist/provider-manager/workers.d.ts.map +1 -0
  97. package/dist/provider-manager/workers.js +74 -0
  98. package/dist/providers/index.d.ts +2 -0
  99. package/dist/providers/index.d.ts.map +1 -0
  100. package/dist/providers/index.js +1 -0
  101. package/dist/providers/mock.d.ts +14 -0
  102. package/dist/providers/mock.d.ts.map +1 -0
  103. package/dist/providers/mock.js +234 -0
  104. package/dist/search/index.d.ts +5 -0
  105. package/dist/search/index.d.ts.map +1 -0
  106. package/dist/search/index.js +3 -0
  107. package/dist/search/search-api.d.ts +28 -0
  108. package/dist/search/search-api.d.ts.map +1 -0
  109. package/dist/search/search-api.js +110 -0
  110. package/dist/search/search-index.d.ts +6 -0
  111. package/dist/search/search-index.d.ts.map +1 -0
  112. package/dist/search/search-index.js +22 -0
  113. package/dist/search/search-utils.d.ts +43 -0
  114. package/dist/search/search-utils.d.ts.map +1 -0
  115. package/dist/search/search-utils.js +114 -0
  116. package/dist/search/session-cache.d.ts +19 -0
  117. package/dist/search/session-cache.d.ts.map +1 -0
  118. package/dist/search/session-cache.js +92 -0
  119. package/dist/search/types.d.ts +41 -0
  120. package/dist/search/types.d.ts.map +1 -0
  121. package/dist/search/types.js +1 -0
  122. package/dist/server/chat-handler.d.ts +3 -0
  123. package/dist/server/chat-handler.d.ts.map +1 -0
  124. package/dist/server/chat-handler.js +750 -0
  125. package/dist/server/dev-server.d.ts +18 -0
  126. package/dist/server/dev-server.d.ts.map +1 -0
  127. package/dist/server/dev-server.js +294 -0
  128. package/dist/server/errors.d.ts +17 -0
  129. package/dist/server/errors.d.ts.map +1 -0
  130. package/dist/server/errors.js +41 -0
  131. package/dist/server/index.d.ts +8 -0
  132. package/dist/server/index.d.ts.map +1 -0
  133. package/dist/server/index.js +5 -0
  134. package/dist/server/metadata-init.d.ts +11 -0
  135. package/dist/server/metadata-init.d.ts.map +1 -0
  136. package/dist/server/metadata-init.js +45 -0
  137. package/dist/server/notify.d.ts +25 -0
  138. package/dist/server/notify.d.ts.map +1 -0
  139. package/dist/server/notify.js +62 -0
  140. package/dist/server/types.d.ts +56 -0
  141. package/dist/server/types.d.ts.map +1 -0
  142. package/dist/server/types.js +13 -0
  143. package/dist/stream/index.d.ts +3 -0
  144. package/dist/stream/index.d.ts.map +1 -0
  145. package/dist/stream/index.js +2 -0
  146. package/dist/stream/mock-stream.d.ts +12 -0
  147. package/dist/stream/mock-stream.d.ts.map +1 -0
  148. package/dist/stream/mock-stream.js +27 -0
  149. package/dist/stream/response.d.ts +10 -0
  150. package/dist/stream/response.d.ts.map +1 -0
  151. package/dist/stream/response.js +22 -0
  152. package/dist/utils/i18n.d.ts +18 -0
  153. package/dist/utils/i18n.d.ts.map +1 -0
  154. package/dist/utils/i18n.js +148 -0
  155. package/package.json +93 -0
  156. package/src/components/AIChatContainer.tsx +30 -0
  157. package/src/components/AIChatWidget.astro +30 -0
  158. package/src/components/ChatPanel.tsx +865 -0
  159. package/src/styles/source.css +2 -0
@@ -0,0 +1,92 @@
1
+ import { MemoryCacheAdapter } from '../cache/memory-adapter.js';
2
+ const SESSION_ID_PATTERN = /^[a-z0-9][a-z0-9_-]{7,63}$/i;
3
+ export const SESSION_CACHE_TTL_SECONDS = 600;
4
+ export const SESSION_CACHE_TTL_MS = SESSION_CACHE_TTL_SECONDS * 1000;
5
+ let defaultCache = null;
6
+ function getDefaultCache() {
7
+ if (!defaultCache) {
8
+ defaultCache = new MemoryCacheAdapter({
9
+ defaultTtl: SESSION_CACHE_TTL_SECONDS,
10
+ maxEntries: 400,
11
+ });
12
+ }
13
+ return defaultCache;
14
+ }
15
+ export function getSessionCacheKey(req) {
16
+ const sessionId = req.headers.get('x-session-id')?.trim();
17
+ if (sessionId && SESSION_ID_PATTERN.test(sessionId)) {
18
+ return `sid:${sessionId}`;
19
+ }
20
+ return null;
21
+ }
22
+ export function setCacheAdapter(cache) {
23
+ defaultCache = cache;
24
+ }
25
+ export function getCacheAdapter() {
26
+ return getDefaultCache();
27
+ }
28
+ export async function getCachedContext(key, cache) {
29
+ const adapter = cache ?? getDefaultCache();
30
+ const entry = await adapter.get(key);
31
+ return entry?.value;
32
+ }
33
+ export async function setCachedContext(key, ctx, cache) {
34
+ const adapter = cache ?? getDefaultCache();
35
+ await adapter.set(key, ctx, { ttl: SESSION_CACHE_TTL_SECONDS });
36
+ }
37
+ export async function deleteCachedContext(key, cache) {
38
+ const adapter = cache ?? getDefaultCache();
39
+ return adapter.delete(key);
40
+ }
41
+ export function cleanupCache(_now) {
42
+ // No-op: MemoryCacheAdapter handles cleanup internally
43
+ // KV adapter handles TTL automatically
44
+ }
45
+ // Legacy sync functions for backward compatibility (deprecated)
46
+ // These use internal Map for synchronous access
47
+ const legacyCache = new Map();
48
+ const LEGACY_TTL_MS = 10 * 60 * 1000;
49
+ const MAX_CACHE_SIZE = 400;
50
+ /** @deprecated Use getCachedContext instead */
51
+ export function getCachedContextSync(key) {
52
+ const entry = legacyCache.get(key);
53
+ if (!entry)
54
+ return undefined;
55
+ if (Date.now() - entry.updatedAt > LEGACY_TTL_MS) {
56
+ legacyCache.delete(key);
57
+ return undefined;
58
+ }
59
+ return entry;
60
+ }
61
+ /** @deprecated Use setCachedContext instead */
62
+ export function setCachedContextSync(key, ctx) {
63
+ legacyCache.set(key, ctx);
64
+ if (legacyCache.size > MAX_CACHE_SIZE) {
65
+ const overflow = legacyCache.size - MAX_CACHE_SIZE;
66
+ const keys = legacyCache.keys();
67
+ for (let i = 0; i < overflow; i++) {
68
+ const next = keys.next();
69
+ if (next.done)
70
+ break;
71
+ legacyCache.delete(next.value);
72
+ }
73
+ }
74
+ }
75
+ /** @deprecated Use cleanupCache instead (no-op) */
76
+ export function cleanupCacheLegacy(now) {
77
+ for (const [key, value] of legacyCache) {
78
+ if (now - value.updatedAt > LEGACY_TTL_MS) {
79
+ legacyCache.delete(key);
80
+ }
81
+ }
82
+ if (legacyCache.size > MAX_CACHE_SIZE) {
83
+ const overflow = legacyCache.size - MAX_CACHE_SIZE;
84
+ const keys = legacyCache.keys();
85
+ for (let i = 0; i < overflow; i++) {
86
+ const next = keys.next();
87
+ if (next.done)
88
+ break;
89
+ legacyCache.delete(next.value);
90
+ }
91
+ }
92
+ }
@@ -0,0 +1,41 @@
1
+ export interface SearchDocument {
2
+ id: string;
3
+ title: string;
4
+ url: string;
5
+ excerpt: string;
6
+ content: string;
7
+ categories: string[];
8
+ tags: string[];
9
+ keyPoints: string[];
10
+ dateTime: number;
11
+ lang: string;
12
+ summary?: string;
13
+ }
14
+ export interface IndexedDocument extends SearchDocument {
15
+ /** Normalized token list for fast lookup */
16
+ tokens: string[];
17
+ }
18
+ export interface SearchResult extends SearchDocument {
19
+ score: number;
20
+ }
21
+ export interface ArticleContext {
22
+ title: string;
23
+ url: string;
24
+ summary?: string;
25
+ keyPoints: string[];
26
+ categories: string[];
27
+ dateTime: number;
28
+ fullContent?: string;
29
+ }
30
+ export interface ProjectContext {
31
+ name: string;
32
+ url: string;
33
+ description: string;
34
+ }
35
+ export interface CachedSearchContext {
36
+ query: string;
37
+ articles: ArticleContext[];
38
+ projects: ProjectContext[];
39
+ updatedAt: number;
40
+ }
41
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/search/types.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,cAAc;IAC7B,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;IACd,GAAG,EAAE,MAAM,CAAC;IACZ,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;IAChB,UAAU,EAAE,MAAM,EAAE,CAAC;IACrB,IAAI,EAAE,MAAM,EAAE,CAAC;IACf,SAAS,EAAE,MAAM,EAAE,CAAC;IACpB,QAAQ,EAAE,MAAM,CAAC;IACjB,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,eAAgB,SAAQ,cAAc;IACrD,4CAA4C;IAC5C,MAAM,EAAE,MAAM,EAAE,CAAC;CAClB;AAED,MAAM,WAAW,YAAa,SAAQ,cAAc;IAClD,KAAK,EAAE,MAAM,CAAC;CACf;AAED,MAAM,WAAW,cAAc;IAC7B,KAAK,EAAE,MAAM,CAAC;IACd,GAAG,EAAE,MAAM,CAAC;IACZ,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,MAAM,EAAE,CAAC;IACpB,UAAU,EAAE,MAAM,EAAE,CAAC;IACrB,QAAQ,EAAE,MAAM,CAAC;IACjB,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,MAAM,CAAC;IACb,GAAG,EAAE,MAAM,CAAC;IACZ,WAAW,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,mBAAmB;IAClC,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,cAAc,EAAE,CAAC;IAC3B,QAAQ,EAAE,cAAc,EAAE,CAAC;IAC3B,SAAS,EAAE,MAAM,CAAC;CACnB"}
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,3 @@
1
+ import type { ChatHandlerOptions } from './types.js';
2
+ export declare function handleChatRequest(options: ChatHandlerOptions): Promise<Response>;
3
+ //# sourceMappingURL=chat-handler.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"chat-handler.d.ts","sourceRoot":"","sources":["../../src/server/chat-handler.ts"],"names":[],"mappings":"AA2CA,OAAO,KAAK,EAAE,kBAAkB,EAAgC,MAAM,YAAY,CAAC;AA6EnF,wBAAsB,iBAAiB,CAAC,OAAO,EAAE,kBAAkB,GAAG,OAAO,CAAC,QAAQ,CAAC,CA0CtF"}