@chatcops/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.
Files changed (243) hide show
  1. package/dist/agent/chat.d.ts +13 -0
  2. package/dist/agent/chat.d.ts.map +1 -0
  3. package/dist/agent/chat.js +42 -0
  4. package/dist/agent/chat.js.map +1 -0
  5. package/dist/agent/errors.d.ts +14 -0
  6. package/dist/agent/errors.d.ts.map +1 -0
  7. package/dist/agent/errors.js +24 -0
  8. package/dist/agent/errors.js.map +1 -0
  9. package/dist/agent/index.d.ts +5 -0
  10. package/dist/agent/index.d.ts.map +1 -0
  11. package/dist/agent/index.js +5 -0
  12. package/dist/agent/index.js.map +1 -0
  13. package/dist/agent/run-turn.d.ts +79 -0
  14. package/dist/agent/run-turn.d.ts.map +1 -0
  15. package/dist/agent/run-turn.js +400 -0
  16. package/dist/agent/run-turn.js.map +1 -0
  17. package/dist/agent/tool-registry.d.ts +30 -0
  18. package/dist/agent/tool-registry.d.ts.map +1 -0
  19. package/dist/agent/tool-registry.js +66 -0
  20. package/dist/agent/tool-registry.js.map +1 -0
  21. package/dist/analytics/collector.d.ts +2 -0
  22. package/dist/analytics/collector.d.ts.map +1 -1
  23. package/dist/analytics/collector.js +16 -10
  24. package/dist/analytics/collector.js.map +1 -1
  25. package/dist/analytics/index.d.ts +2 -0
  26. package/dist/analytics/index.d.ts.map +1 -1
  27. package/dist/analytics/index.js +2 -0
  28. package/dist/analytics/index.js.map +1 -1
  29. package/dist/analytics/names.d.ts +21 -0
  30. package/dist/analytics/names.d.ts.map +1 -0
  31. package/dist/analytics/names.js +41 -0
  32. package/dist/analytics/names.js.map +1 -0
  33. package/dist/analytics/sink.d.ts +27 -0
  34. package/dist/analytics/sink.d.ts.map +1 -0
  35. package/dist/analytics/sink.js +109 -0
  36. package/dist/analytics/sink.js.map +1 -0
  37. package/dist/conversation/index.d.ts +1 -0
  38. package/dist/conversation/index.d.ts.map +1 -1
  39. package/dist/conversation/index.js.map +1 -1
  40. package/dist/conversation/manager.d.ts +65 -6
  41. package/dist/conversation/manager.d.ts.map +1 -1
  42. package/dist/conversation/manager.js +110 -34
  43. package/dist/conversation/manager.js.map +1 -1
  44. package/dist/conversation/store.d.ts +6 -5
  45. package/dist/conversation/store.d.ts.map +1 -1
  46. package/dist/conversation/store.js +4 -0
  47. package/dist/conversation/store.js.map +1 -1
  48. package/dist/index.d.ts +21 -4
  49. package/dist/index.d.ts.map +1 -1
  50. package/dist/index.js +16 -2
  51. package/dist/index.js.map +1 -1
  52. package/dist/knowledge/base.d.ts +8 -0
  53. package/dist/knowledge/base.d.ts.map +1 -1
  54. package/dist/knowledge/tokenize.d.ts.map +1 -1
  55. package/dist/knowledge/tokenize.js +4 -4
  56. package/dist/knowledge/tokenize.js.map +1 -1
  57. package/dist/limits/budget.d.ts +84 -0
  58. package/dist/limits/budget.d.ts.map +1 -0
  59. package/dist/limits/budget.js +114 -0
  60. package/dist/limits/budget.js.map +1 -0
  61. package/dist/limits/rate-limit.d.ts +53 -0
  62. package/dist/limits/rate-limit.d.ts.map +1 -0
  63. package/dist/limits/rate-limit.js +68 -0
  64. package/dist/limits/rate-limit.js.map +1 -0
  65. package/dist/logger.d.ts +36 -0
  66. package/dist/logger.d.ts.map +1 -0
  67. package/dist/logger.js +40 -0
  68. package/dist/logger.js.map +1 -0
  69. package/dist/parts.d.ts +9 -0
  70. package/dist/parts.d.ts.map +1 -0
  71. package/dist/parts.js +17 -0
  72. package/dist/parts.js.map +1 -0
  73. package/dist/protocol/ai-sdk.d.ts +27 -0
  74. package/dist/protocol/ai-sdk.d.ts.map +1 -0
  75. package/dist/protocol/ai-sdk.js +127 -0
  76. package/dist/protocol/ai-sdk.js.map +1 -0
  77. package/dist/protocol/errors.d.ts +10 -0
  78. package/dist/protocol/errors.d.ts.map +1 -0
  79. package/dist/protocol/errors.js +42 -0
  80. package/dist/protocol/errors.js.map +1 -0
  81. package/dist/protocol/index.d.ts +9 -0
  82. package/dist/protocol/index.d.ts.map +1 -0
  83. package/dist/protocol/index.js +6 -0
  84. package/dist/protocol/index.js.map +1 -0
  85. package/dist/protocol/legacy.d.ts +18 -0
  86. package/dist/protocol/legacy.d.ts.map +1 -0
  87. package/dist/protocol/legacy.js +41 -0
  88. package/dist/protocol/legacy.js.map +1 -0
  89. package/dist/protocol/sse.d.ts +10 -0
  90. package/dist/protocol/sse.d.ts.map +1 -0
  91. package/dist/protocol/sse.js +15 -0
  92. package/dist/protocol/sse.js.map +1 -0
  93. package/dist/protocol/v1.d.ts +140 -0
  94. package/dist/protocol/v1.d.ts.map +1 -0
  95. package/dist/protocol/v1.js +15 -0
  96. package/dist/protocol/v1.js.map +1 -0
  97. package/dist/providers/base.d.ts +13 -28
  98. package/dist/providers/base.d.ts.map +1 -1
  99. package/dist/providers/base.js +36 -47
  100. package/dist/providers/base.js.map +1 -1
  101. package/dist/providers/claude.d.ts +41 -6
  102. package/dist/providers/claude.d.ts.map +1 -1
  103. package/dist/providers/claude.js +223 -96
  104. package/dist/providers/claude.js.map +1 -1
  105. package/dist/providers/gemini.d.ts +18 -3
  106. package/dist/providers/gemini.d.ts.map +1 -1
  107. package/dist/providers/gemini.js +208 -91
  108. package/dist/providers/gemini.js.map +1 -1
  109. package/dist/providers/history.d.ts +52 -0
  110. package/dist/providers/history.d.ts.map +1 -0
  111. package/dist/providers/history.js +212 -0
  112. package/dist/providers/history.js.map +1 -0
  113. package/dist/providers/index.d.ts +5 -5
  114. package/dist/providers/index.d.ts.map +1 -1
  115. package/dist/providers/index.js +5 -4
  116. package/dist/providers/index.js.map +1 -1
  117. package/dist/providers/openai.d.ts +28 -6
  118. package/dist/providers/openai.d.ts.map +1 -1
  119. package/dist/providers/openai.js +213 -113
  120. package/dist/providers/openai.js.map +1 -1
  121. package/dist/providers/registry.d.ts +7 -0
  122. package/dist/providers/registry.d.ts.map +1 -0
  123. package/dist/providers/registry.js +12 -0
  124. package/dist/providers/registry.js.map +1 -0
  125. package/dist/providers/schema.d.ts +16 -0
  126. package/dist/providers/schema.d.ts.map +1 -0
  127. package/dist/providers/schema.js +80 -0
  128. package/dist/providers/schema.js.map +1 -0
  129. package/dist/providers/tool-execution.d.ts +13 -0
  130. package/dist/providers/tool-execution.d.ts.map +1 -1
  131. package/dist/providers/tool-execution.js +49 -13
  132. package/dist/providers/tool-execution.js.map +1 -1
  133. package/dist/providers/types.d.ts +89 -0
  134. package/dist/providers/types.d.ts.map +1 -0
  135. package/dist/providers/types.js +2 -0
  136. package/dist/providers/types.js.map +1 -0
  137. package/dist/retrieval/citations.d.ts +44 -0
  138. package/dist/retrieval/citations.d.ts.map +1 -0
  139. package/dist/retrieval/citations.js +97 -0
  140. package/dist/retrieval/citations.js.map +1 -0
  141. package/dist/retrieval/cohere-reranker.d.ts +13 -0
  142. package/dist/retrieval/cohere-reranker.d.ts.map +1 -0
  143. package/dist/retrieval/cohere-reranker.js +33 -0
  144. package/dist/retrieval/cohere-reranker.js.map +1 -0
  145. package/dist/retrieval/gemini-embedder.d.ts +26 -0
  146. package/dist/retrieval/gemini-embedder.d.ts.map +1 -0
  147. package/dist/retrieval/gemini-embedder.js +36 -0
  148. package/dist/retrieval/gemini-embedder.js.map +1 -0
  149. package/dist/retrieval/http.d.ts +20 -0
  150. package/dist/retrieval/http.d.ts.map +1 -0
  151. package/dist/retrieval/http.js +68 -0
  152. package/dist/retrieval/http.js.map +1 -0
  153. package/dist/retrieval/index.d.ts +14 -0
  154. package/dist/retrieval/index.d.ts.map +1 -0
  155. package/dist/retrieval/index.js +13 -0
  156. package/dist/retrieval/index.js.map +1 -0
  157. package/dist/retrieval/knowledge.d.ts +16 -0
  158. package/dist/retrieval/knowledge.d.ts.map +1 -0
  159. package/dist/retrieval/knowledge.js +21 -0
  160. package/dist/retrieval/knowledge.js.map +1 -0
  161. package/dist/retrieval/openai-embedder.d.ts +25 -0
  162. package/dist/retrieval/openai-embedder.d.ts.map +1 -0
  163. package/dist/retrieval/openai-embedder.js +30 -0
  164. package/dist/retrieval/openai-embedder.js.map +1 -0
  165. package/dist/retrieval/query.d.ts +8 -0
  166. package/dist/retrieval/query.d.ts.map +1 -0
  167. package/dist/retrieval/query.js +19 -0
  168. package/dist/retrieval/query.js.map +1 -0
  169. package/dist/retrieval/retrievers.d.ts +30 -0
  170. package/dist/retrieval/retrievers.d.ts.map +1 -0
  171. package/dist/retrieval/retrievers.js +89 -0
  172. package/dist/retrieval/retrievers.js.map +1 -0
  173. package/dist/retrieval/sources.d.ts +16 -0
  174. package/dist/retrieval/sources.d.ts.map +1 -0
  175. package/dist/retrieval/sources.js +37 -0
  176. package/dist/retrieval/sources.js.map +1 -0
  177. package/dist/retrieval/types.d.ts +50 -0
  178. package/dist/retrieval/types.d.ts.map +1 -0
  179. package/dist/retrieval/types.js +2 -0
  180. package/dist/retrieval/types.js.map +1 -0
  181. package/dist/retrieval/voyage-embedder.d.ts +33 -0
  182. package/dist/retrieval/voyage-embedder.d.ts.map +1 -0
  183. package/dist/retrieval/voyage-embedder.js +33 -0
  184. package/dist/retrieval/voyage-embedder.js.map +1 -0
  185. package/dist/retrieval/voyage-reranker.d.ts +13 -0
  186. package/dist/retrieval/voyage-reranker.d.ts.map +1 -0
  187. package/dist/retrieval/voyage-reranker.js +38 -0
  188. package/dist/retrieval/voyage-reranker.js.map +1 -0
  189. package/dist/retrieval/workers-ai-embedder.d.ts +21 -0
  190. package/dist/retrieval/workers-ai-embedder.d.ts.map +1 -0
  191. package/dist/retrieval/workers-ai-embedder.js +42 -0
  192. package/dist/retrieval/workers-ai-embedder.js.map +1 -0
  193. package/dist/retrieval/workers-ai-reranker.d.ts +11 -0
  194. package/dist/retrieval/workers-ai-reranker.d.ts.map +1 -0
  195. package/dist/retrieval/workers-ai-reranker.js +54 -0
  196. package/dist/retrieval/workers-ai-reranker.js.map +1 -0
  197. package/dist/storage/adapt.d.ts +15 -0
  198. package/dist/storage/adapt.d.ts.map +1 -0
  199. package/dist/storage/adapt.js +83 -0
  200. package/dist/storage/adapt.js.map +1 -0
  201. package/dist/storage/errors.d.ts +18 -0
  202. package/dist/storage/errors.d.ts.map +1 -0
  203. package/dist/storage/errors.js +28 -0
  204. package/dist/storage/errors.js.map +1 -0
  205. package/dist/storage/index.d.ts +6 -0
  206. package/dist/storage/index.d.ts.map +1 -0
  207. package/dist/storage/index.js +5 -0
  208. package/dist/storage/index.js.map +1 -0
  209. package/dist/storage/memory-vectors.d.ts +22 -0
  210. package/dist/storage/memory-vectors.d.ts.map +1 -0
  211. package/dist/storage/memory-vectors.js +140 -0
  212. package/dist/storage/memory-vectors.js.map +1 -0
  213. package/dist/storage/memory.d.ts +24 -0
  214. package/dist/storage/memory.d.ts.map +1 -0
  215. package/dist/storage/memory.js +265 -0
  216. package/dist/storage/memory.js.map +1 -0
  217. package/dist/storage/types.d.ts +188 -0
  218. package/dist/storage/types.d.ts.map +1 -0
  219. package/dist/storage/types.js +2 -0
  220. package/dist/storage/types.js.map +1 -0
  221. package/dist/testing/conformance.d.ts +30 -0
  222. package/dist/testing/conformance.d.ts.map +1 -0
  223. package/dist/testing/conformance.js +505 -0
  224. package/dist/testing/conformance.js.map +1 -0
  225. package/dist/testing/index.d.ts +3 -0
  226. package/dist/testing/index.d.ts.map +1 -0
  227. package/dist/testing/index.js +5 -0
  228. package/dist/testing/index.js.map +1 -0
  229. package/dist/testing/provider.d.ts +47 -0
  230. package/dist/testing/provider.d.ts.map +1 -0
  231. package/dist/testing/provider.js +83 -0
  232. package/dist/testing/provider.js.map +1 -0
  233. package/dist/tools/base.d.ts +14 -4
  234. package/dist/tools/base.d.ts.map +1 -1
  235. package/dist/tools/base.js +4 -2
  236. package/dist/tools/base.js.map +1 -1
  237. package/dist/tools/lead-capture.d.ts +4 -2
  238. package/dist/tools/lead-capture.d.ts.map +1 -1
  239. package/dist/tools/lead-capture.js +7 -2
  240. package/dist/tools/lead-capture.js.map +1 -1
  241. package/dist/types.d.ts +146 -7
  242. package/dist/types.d.ts.map +1 -1
  243. package/package.json +51 -3
@@ -0,0 +1,47 @@
1
+ import type { AIProvider, ProviderEvent, ProviderStepParams } from '../providers/types.js';
2
+ import type { TokenUsage } from '../types.js';
3
+ /**
4
+ * One scripted model step: the events to yield, a function that builds them
5
+ * from the request, an `Error` to throw, or `'hang'` to wait until the
6
+ * request is aborted (for testing disconnects).
7
+ */
8
+ export type ScriptedStep = ProviderEvent[] | ((params: ProviderStepParams) => ProviderEvent[]) | Error | 'hang';
9
+ export interface ScriptedProviderOptions {
10
+ name?: string;
11
+ /** Wait this long before each event, to test streaming and timeouts. */
12
+ delayMs?: number;
13
+ /** Act like a provider with native citations: steps get `sources`, and can yield `source` events. */
14
+ citations?: 'native';
15
+ }
16
+ export interface ScriptedProvider extends AIProvider {
17
+ step(params: ProviderStepParams): AsyncGenerator<ProviderEvent>;
18
+ /** The params of every step so far, in order, with the messages as they were then. */
19
+ readonly calls: ProviderStepParams[];
20
+ }
21
+ /** A step that answers with `text`, streamed in pieces of `chunkSize` characters. */
22
+ export declare function textStep(text: string, options?: {
23
+ chunkSize?: number;
24
+ usage?: TokenUsage;
25
+ }): ProviderEvent[];
26
+ /** A step that calls tools, optionally after some text. */
27
+ export declare function toolStep(calls: Array<{
28
+ id?: string;
29
+ name: string;
30
+ input?: Record<string, unknown>;
31
+ }>, options?: {
32
+ text?: string;
33
+ usage?: TokenUsage;
34
+ }): ProviderEvent[];
35
+ /**
36
+ * A provider that plays back a script instead of calling a model, for tests
37
+ * of anything built on ChatCops: each `step()` call takes the next entry.
38
+ *
39
+ * ```ts
40
+ * const provider = scriptedProvider([
41
+ * toolStep([{ name: 'lookup_order', input: { id: 'A-1' } }]),
42
+ * textStep('Your order shipped on Monday.'),
43
+ * ]);
44
+ * ```
45
+ */
46
+ export declare function scriptedProvider(script: ScriptedStep[], options?: ScriptedProviderOptions): ScriptedProvider;
47
+ //# sourceMappingURL=provider.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"provider.d.ts","sourceRoot":"","sources":["../../src/testing/provider.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,UAAU,EAAE,aAAa,EAAE,kBAAkB,EAAE,MAAM,uBAAuB,CAAC;AAC3F,OAAO,KAAK,EAAmC,UAAU,EAAE,MAAM,aAAa,CAAC;AAE/E;;;;GAIG;AACH,MAAM,MAAM,YAAY,GAAG,aAAa,EAAE,GAAG,CAAC,CAAC,MAAM,EAAE,kBAAkB,KAAK,aAAa,EAAE,CAAC,GAAG,KAAK,GAAG,MAAM,CAAC;AAEhH,MAAM,WAAW,uBAAuB;IACtC,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,wEAAwE;IACxE,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,qGAAqG;IACrG,SAAS,CAAC,EAAE,QAAQ,CAAC;CACtB;AAED,MAAM,WAAW,gBAAiB,SAAQ,UAAU;IAClD,IAAI,CAAC,MAAM,EAAE,kBAAkB,GAAG,cAAc,CAAC,aAAa,CAAC,CAAC;IAChE,sFAAsF;IACtF,QAAQ,CAAC,KAAK,EAAE,kBAAkB,EAAE,CAAC;CACtC;AAmBD,qFAAqF;AACrF,wBAAgB,QAAQ,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,GAAE;IAAE,SAAS,CAAC,EAAE,MAAM,CAAC;IAAC,KAAK,CAAC,EAAE,UAAU,CAAA;CAAO,GAAG,aAAa,EAAE,CAKhH;AAED,2DAA2D;AAC3D,wBAAgB,QAAQ,CACtB,KAAK,EAAE,KAAK,CAAC;IAAE,EAAE,CAAC,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;CAAE,CAAC,EAC5E,OAAO,GAAE;IAAE,IAAI,CAAC,EAAE,MAAM,CAAC;IAAC,KAAK,CAAC,EAAE,UAAU,CAAA;CAAO,GAClD,aAAa,EAAE,CAUjB;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,YAAY,EAAE,EAAE,OAAO,GAAE,uBAA4B,GAAG,gBAAgB,CAgChH"}
@@ -0,0 +1,83 @@
1
+ import { chatSyncViaTurn, chatViaTurn } from '../agent/chat.js';
2
+ const USAGE = { inputTokens: 10, outputTokens: 5 };
3
+ function abortError(signal) {
4
+ return signal?.reason ?? new DOMException('The operation was aborted.', 'AbortError');
5
+ }
6
+ function wait(ms, signal) {
7
+ return new Promise((resolve, reject) => {
8
+ if (signal?.aborted)
9
+ return reject(abortError(signal));
10
+ const timer = setTimeout(resolve, ms);
11
+ signal?.addEventListener('abort', () => {
12
+ clearTimeout(timer);
13
+ reject(abortError(signal));
14
+ }, { once: true });
15
+ });
16
+ }
17
+ /** A step that answers with `text`, streamed in pieces of `chunkSize` characters. */
18
+ export function textStep(text, options = {}) {
19
+ const size = options.chunkSize ?? 8;
20
+ const deltas = [];
21
+ for (let i = 0; i < text.length; i += size)
22
+ deltas.push({ type: 'text-delta', delta: text.slice(i, i + size) });
23
+ return [...deltas, { type: 'finish', reason: 'stop', usage: options.usage ?? USAGE, parts: text ? [{ type: 'text', text }] : [] }];
24
+ }
25
+ /** A step that calls tools, optionally after some text. */
26
+ export function toolStep(calls, options = {}) {
27
+ const parts = options.text ? [{ type: 'text', text: options.text }] : [];
28
+ const events = options.text ? [{ type: 'text-delta', delta: options.text }] : [];
29
+ for (const [i, call] of calls.entries()) {
30
+ const id = call.id ?? `call_${i + 1}`;
31
+ const input = call.input ?? {};
32
+ parts.push({ type: 'tool-call', toolCallId: id, toolName: call.name, input, executor: 'server', state: 'pending' });
33
+ events.push({ type: 'tool-call', call: { id, name: call.name, input } });
34
+ }
35
+ return [...events, { type: 'finish', reason: 'tool-calls', usage: options.usage ?? USAGE, parts }];
36
+ }
37
+ /**
38
+ * A provider that plays back a script instead of calling a model, for tests
39
+ * of anything built on ChatCops: each `step()` call takes the next entry.
40
+ *
41
+ * ```ts
42
+ * const provider = scriptedProvider([
43
+ * toolStep([{ name: 'lookup_order', input: { id: 'A-1' } }]),
44
+ * textStep('Your order shipped on Monday.'),
45
+ * ]);
46
+ * ```
47
+ */
48
+ export function scriptedProvider(script, options = {}) {
49
+ const calls = [];
50
+ const provider = {
51
+ name: options.name ?? 'scripted',
52
+ model: 'scripted',
53
+ ...(options.citations ? { citations: options.citations } : {}),
54
+ calls,
55
+ async *step(params) {
56
+ const entry = script[calls.length];
57
+ // A copy, since the reply in `messages` keeps growing after this step.
58
+ calls.push({ ...params, messages: structuredClone(params.messages) });
59
+ if (entry === undefined)
60
+ throw new Error(`scriptedProvider has no step ${calls.length}.`);
61
+ if (entry instanceof Error)
62
+ throw entry;
63
+ if (entry === 'hang') {
64
+ await wait(2 ** 31 - 1, params.signal);
65
+ return;
66
+ }
67
+ for (const event of typeof entry === 'function' ? entry(params) : entry) {
68
+ if (options.delayMs)
69
+ await wait(options.delayMs, params.signal);
70
+ params.signal?.throwIfAborted();
71
+ yield event;
72
+ }
73
+ },
74
+ chat(params) {
75
+ return chatViaTurn(provider, params);
76
+ },
77
+ chatSync(params) {
78
+ return chatSyncViaTurn(provider, params);
79
+ },
80
+ };
81
+ return provider;
82
+ }
83
+ //# sourceMappingURL=provider.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"provider.js","sourceRoot":"","sources":["../../src/testing/provider.ts"],"names":[],"mappings":"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"}
@@ -1,10 +1,20 @@
1
- import type { ToolParameter, ToolResult, ToolDefinition } from '../types.js';
1
+ import type { JSONSchema, MessagePart, ToolAnnotations, ToolContext, ToolDefinition, ToolParameter, ToolResult } from '../types.js';
2
2
  export interface ChatTool {
3
3
  name: string;
4
4
  description: string;
5
- parameters: Record<string, ToolParameter>;
6
- required: string[];
7
- execute(input: Record<string, unknown>): Promise<ToolResult>;
5
+ /** JSON Schema for the input (root `type: 'object'`). Preferred over `parameters`. */
6
+ inputSchema?: JSONSchema;
7
+ /** The 0.4 flat form, used when there's no `inputSchema`. */
8
+ parameters?: Record<string, ToolParameter>;
9
+ required?: string[];
10
+ annotations?: ToolAnnotations;
11
+ /** `context` is new in 0.6; tools written for 0.4 can ignore it. */
12
+ execute(input: Record<string, unknown>, context?: ToolContext): Promise<ToolResult>;
13
+ /**
14
+ * Parts to add to the reply after this tool runs, for things the widget
15
+ * shows besides text. `LeadCaptureTool` adds a `lead-captured` part.
16
+ */
17
+ emits?(result: ToolResult): MessagePart[];
8
18
  }
9
19
  export declare function toolToDefinition(tool: ChatTool): ToolDefinition;
10
20
  //# sourceMappingURL=base.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"base.d.ts","sourceRoot":"","sources":["../../src/tools/base.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,UAAU,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAE7E,MAAM,WAAW,QAAQ;IACvB,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,aAAa,CAAC,CAAC;IAC1C,QAAQ,EAAE,MAAM,EAAE,CAAC;IACnB,OAAO,CAAC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,OAAO,CAAC,UAAU,CAAC,CAAC;CAC9D;AAED,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,QAAQ,GAAG,cAAc,CAO/D"}
1
+ {"version":3,"file":"base.d.ts","sourceRoot":"","sources":["../../src/tools/base.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,UAAU,EACV,WAAW,EACX,eAAe,EACf,WAAW,EACX,cAAc,EACd,aAAa,EACb,UAAU,EACX,MAAM,aAAa,CAAC;AAErB,MAAM,WAAW,QAAQ;IACvB,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,sFAAsF;IACtF,WAAW,CAAC,EAAE,UAAU,CAAC;IACzB,6DAA6D;IAC7D,UAAU,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,aAAa,CAAC,CAAC;IAC3C,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC;IACpB,WAAW,CAAC,EAAE,eAAe,CAAC;IAC9B,oEAAoE;IACpE,OAAO,CAAC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,OAAO,CAAC,EAAE,WAAW,GAAG,OAAO,CAAC,UAAU,CAAC,CAAC;IACpF;;;OAGG;IACH,KAAK,CAAC,CAAC,MAAM,EAAE,UAAU,GAAG,WAAW,EAAE,CAAC;CAC3C;AAED,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,QAAQ,GAAG,cAAc,CAS/D"}
@@ -2,8 +2,10 @@ export function toolToDefinition(tool) {
2
2
  return {
3
3
  name: tool.name,
4
4
  description: tool.description,
5
- parameters: tool.parameters,
6
- required: tool.required,
5
+ ...(tool.inputSchema ? { inputSchema: tool.inputSchema } : {}),
6
+ ...(tool.parameters ? { parameters: tool.parameters } : {}),
7
+ ...(tool.required ? { required: tool.required } : {}),
8
+ ...(tool.annotations ? { annotations: tool.annotations } : {}),
7
9
  };
8
10
  }
9
11
  //# sourceMappingURL=base.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"base.js","sourceRoot":"","sources":["../../src/tools/base.ts"],"names":[],"mappings":"AAUA,MAAM,UAAU,gBAAgB,CAAC,IAAc;IAC7C,OAAO;QACL,IAAI,EAAE,IAAI,CAAC,IAAI;QACf,WAAW,EAAE,IAAI,CAAC,WAAW;QAC7B,UAAU,EAAE,IAAI,CAAC,UAAU;QAC3B,QAAQ,EAAE,IAAI,CAAC,QAAQ;KACxB,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"base.js","sourceRoot":"","sources":["../../src/tools/base.ts"],"names":[],"mappings":"AA4BA,MAAM,UAAU,gBAAgB,CAAC,IAAc;IAC7C,OAAO;QACL,IAAI,EAAE,IAAI,CAAC,IAAI;QACf,WAAW,EAAE,IAAI,CAAC,WAAW;QAC7B,GAAG,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE,WAAW,EAAE,IAAI,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QAC9D,GAAG,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE,UAAU,EAAE,IAAI,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QAC3D,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QACrD,GAAG,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE,WAAW,EAAE,IAAI,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;KAC/D,CAAC;AACJ,CAAC"}
@@ -1,4 +1,4 @@
1
- import type { ToolResult, LeadData } from '../types.js';
1
+ import type { LeadData, MessagePart, ToolContext, ToolResult } from '../types.js';
2
2
  import type { ChatTool } from './base.js';
3
3
  export type LeadCaptureCallback = (lead: LeadData) => void | Promise<void>;
4
4
  export declare class LeadCaptureTool implements ChatTool {
@@ -29,6 +29,8 @@ export declare class LeadCaptureTool implements ChatTool {
29
29
  required: string[];
30
30
  private onCapture?;
31
31
  constructor(onCapture?: LeadCaptureCallback);
32
- execute(input: Record<string, unknown>): Promise<ToolResult>;
32
+ /** A captured lead shows up in the reply as a `lead-captured` part. */
33
+ emits(result: ToolResult): MessagePart[];
34
+ execute(input: Record<string, unknown>, context?: ToolContext): Promise<ToolResult>;
33
35
  }
34
36
  //# sourceMappingURL=lead-capture.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"lead-capture.d.ts","sourceRoot":"","sources":["../../src/tools/lead-capture.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,UAAU,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AACxD,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAC;AAE1C,MAAM,MAAM,mBAAmB,GAAG,CAAC,IAAI,EAAE,QAAQ,KAAK,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;AAU3E,qBAAa,eAAgB,YAAW,QAAQ;IAC9C,IAAI,SAAkB;IACtB,WAAW,SAA6I;IACxJ,UAAU;;;;;;;;;;;;;;;;;;;;;MAMR;IACF,QAAQ,WAAuC;IAE/C,OAAO,CAAC,SAAS,CAAC,CAAsB;gBAE5B,SAAS,CAAC,EAAE,mBAAmB;IAIrC,OAAO,CAAC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,OAAO,CAAC,UAAU,CAAC;CAoCnE"}
1
+ {"version":3,"file":"lead-capture.d.ts","sourceRoot":"","sources":["../../src/tools/lead-capture.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,QAAQ,EAAE,WAAW,EAAE,WAAW,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAClF,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAC;AAE1C,MAAM,MAAM,mBAAmB,GAAG,CAAC,IAAI,EAAE,QAAQ,KAAK,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;AAU3E,qBAAa,eAAgB,YAAW,QAAQ;IAC9C,IAAI,SAAkB;IACtB,WAAW,SAA6I;IACxJ,UAAU;;;;;;;;;;;;;;;;;;;;;MAMR;IACF,QAAQ,WAAuC;IAE/C,OAAO,CAAC,SAAS,CAAC,CAAsB;gBAE5B,SAAS,CAAC,EAAE,mBAAmB;IAI3C,uEAAuE;IACvE,KAAK,CAAC,MAAM,EAAE,UAAU,GAAG,WAAW,EAAE;IAIlC,OAAO,CAAC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,OAAO,CAAC,EAAE,WAAW,GAAG,OAAO,CAAC,UAAU,CAAC;CAoC1F"}
@@ -1,3 +1,4 @@
1
+ import { consoleLogger } from '../logger.js';
1
2
  import { z } from 'zod';
2
3
  const leadInputSchema = z.object({
3
4
  name: z.string(),
@@ -21,7 +22,11 @@ export class LeadCaptureTool {
21
22
  constructor(onCapture) {
22
23
  this.onCapture = onCapture;
23
24
  }
24
- async execute(input) {
25
+ /** A captured lead shows up in the reply as a `lead-captured` part. */
26
+ emits(result) {
27
+ return result.success && result.data ? [{ type: 'lead-captured', lead: result.data }] : [];
28
+ }
29
+ async execute(input, context) {
25
30
  const parsed = leadInputSchema.safeParse(input);
26
31
  if (!parsed.success) {
27
32
  return {
@@ -42,7 +47,7 @@ export class LeadCaptureTool {
42
47
  await this.onCapture(lead);
43
48
  }
44
49
  catch (err) {
45
- console.error('[chatcops] Lead capture callback failed:', err);
50
+ (context?.logger ?? consoleLogger()).error('lead_capture_failed', 'Lead capture callback failed', { error: err });
46
51
  return {
47
52
  success: false,
48
53
  message: 'Failed to process lead capture callback.',
@@ -1 +1 @@
1
- {"version":3,"file":"lead-capture.js","sourceRoot":"","sources":["../../src/tools/lead-capture.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAMxB,MAAM,eAAe,GAAG,CAAC,CAAC,MAAM,CAAC;IAC/B,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE;IAChB,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,KAAK,EAAE;IACzB,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAC9B,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAC5B,cAAc,EAAE,CAAC,CAAC,MAAM,EAAE;CAC3B,CAAC,CAAC;AAEH,MAAM,OAAO,eAAe;IAC1B,IAAI,GAAG,cAAc,CAAC;IACtB,WAAW,GAAG,yIAAyI,CAAC;IACxJ,UAAU,GAAG;QACX,IAAI,EAAE,EAAE,IAAI,EAAE,QAAiB,EAAE,WAAW,EAAE,uBAAuB,EAAE;QACvE,KAAK,EAAE,EAAE,IAAI,EAAE,QAAiB,EAAE,WAAW,EAAE,eAAe,EAAE;QAChE,OAAO,EAAE,EAAE,IAAI,EAAE,QAAiB,EAAE,WAAW,EAAE,4BAA4B,EAAE;QAC/E,KAAK,EAAE,EAAE,IAAI,EAAE,QAAiB,EAAE,WAAW,EAAE,4BAA4B,EAAE;QAC7E,cAAc,EAAE,EAAE,IAAI,EAAE,QAAiB,EAAE,WAAW,EAAE,gCAAgC,EAAE;KAC3F,CAAC;IACF,QAAQ,GAAG,CAAC,MAAM,EAAE,OAAO,EAAE,gBAAgB,CAAC,CAAC;IAEvC,SAAS,CAAuB;IAExC,YAAY,SAA+B;QACzC,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC;IAC7B,CAAC;IAED,KAAK,CAAC,OAAO,CAAC,KAA8B;QAC1C,MAAM,MAAM,GAAG,eAAe,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;QAChD,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;YACpB,OAAO;gBACL,OAAO,EAAE,KAAK;gBACd,OAAO,EAAE,sBAAsB,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE;aACtF,CAAC;QACJ,CAAC;QAED,MAAM,IAAI,GAAa;YACrB,IAAI,EAAE,MAAM,CAAC,IAAI,CAAC,IAAI;YACtB,KAAK,EAAE,MAAM,CAAC,IAAI,CAAC,KAAK;YACxB,OAAO,EAAE,MAAM,CAAC,IAAI,CAAC,OAAO;YAC5B,KAAK,EAAE,MAAM,CAAC,IAAI,CAAC,KAAK;YACxB,cAAc,EAAE,MAAM,CAAC,IAAI,CAAC,cAAc;YAC1C,MAAM,EAAE,iBAAiB;SAC1B,CAAC;QAEF,IAAI,IAAI,CAAC,SAAS,EAAE,CAAC;YACnB,IAAI,CAAC;gBACH,MAAM,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;YAC7B,CAAC;YAAC,OAAO,GAAG,EAAE,CAAC;gBACb,OAAO,CAAC,KAAK,CAAC,0CAA0C,EAAE,GAAG,CAAC,CAAC;gBAC/D,OAAO;oBACL,OAAO,EAAE,KAAK;oBACd,OAAO,EAAE,0CAA0C;iBACpD,CAAC;YACJ,CAAC;QACH,CAAC;QAED,OAAO;YACL,OAAO,EAAE,IAAI;YACb,IAAI,EAAE,IAAI;YACV,OAAO,EAAE,yCAAyC;SACnD,CAAC;IACJ,CAAC;CACF"}
1
+ {"version":3,"file":"lead-capture.js","sourceRoot":"","sources":["../../src/tools/lead-capture.ts"],"names":[],"mappings":"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"}
package/dist/types.d.ts CHANGED
@@ -1,7 +1,28 @@
1
+ import type { Logger } from './logger.js';
1
2
  export interface ChatMessage {
2
3
  id: string;
3
4
  role: 'user' | 'assistant' | 'system';
5
+ /**
6
+ * The message text. For a message with `parts`, this is the text parts
7
+ * joined, kept so older stores and widgets that only know `content` work.
8
+ */
4
9
  content: string;
10
+ /**
11
+ * What the message is made of: text, tool calls and their results, sources.
12
+ * Messages saved by older versions have no parts; read them with
13
+ * `partsOf(message)`, which treats `content` as one text part.
14
+ */
15
+ parts?: MessagePart[];
16
+ /**
17
+ * `incomplete` is a reply that stopped early (a provider error, max tokens).
18
+ * `aborted` is a reply the visitor walked away from. Neither is sent back to
19
+ * the model as if it were a finished answer. Missing means complete.
20
+ */
21
+ status?: 'complete' | 'incomplete' | 'aborted';
22
+ /** Tokens the reply used. Assistant messages only. */
23
+ usage?: TokenUsage;
24
+ /** True on replies a model wrote, for machine-readable AI marking. */
25
+ aiGenerated?: boolean;
5
26
  timestamp: number;
6
27
  metadata?: Record<string, unknown>;
7
28
  }
@@ -9,9 +30,81 @@ export interface Conversation {
9
30
  id: string;
10
31
  messages: ChatMessage[];
11
32
  metadata?: Record<string, unknown>;
33
+ /**
34
+ * Goes up by one on every write, for stores that check for conflicting
35
+ * writes. Missing on conversations from stores that don't track it.
36
+ */
37
+ version?: number;
12
38
  createdAt: number;
13
39
  updatedAt: number;
14
40
  }
41
+ export interface TokenUsage {
42
+ inputTokens: number;
43
+ outputTokens: number;
44
+ /** Input tokens read from the provider's prompt cache. */
45
+ cacheReadTokens?: number;
46
+ /** Input tokens written to the provider's prompt cache. */
47
+ cacheWriteTokens?: number;
48
+ }
49
+ /**
50
+ * Data a provider needs back on the next request but nobody else reads, keyed
51
+ * by provider name. For example Claude's thinking signatures or Gemini's
52
+ * thought signatures. Store it as is and never show it.
53
+ */
54
+ export type ProviderMetadata = Record<string, Record<string, unknown>>;
55
+ /** A JSON Schema object (draft 2020-12). Providers each accept a subset. */
56
+ export type JSONSchema = Record<string, unknown>;
57
+ export type ToolExecutor = 'server' | 'client' | 'mcp';
58
+ export type ToolCallState = 'pending' | 'awaiting-approval' | 'done' | 'error' | 'expired';
59
+ export interface TextPart {
60
+ type: 'text';
61
+ text: string;
62
+ providerMetadata?: ProviderMetadata;
63
+ }
64
+ /** The model's reasoning. Kept for the provider, never shown to visitors. */
65
+ export interface ReasoningPart {
66
+ type: 'reasoning';
67
+ text: string;
68
+ providerMetadata?: ProviderMetadata;
69
+ }
70
+ export interface SourcePart {
71
+ type: 'source';
72
+ sourceId: string;
73
+ url: string;
74
+ title?: string;
75
+ snippet?: string;
76
+ }
77
+ export interface ToolCallPart {
78
+ type: 'tool-call';
79
+ toolCallId: string;
80
+ toolName: string;
81
+ input: unknown;
82
+ executor: ToolExecutor;
83
+ state: ToolCallState;
84
+ providerMetadata?: ProviderMetadata;
85
+ }
86
+ export interface ToolResultPart {
87
+ type: 'tool-result';
88
+ toolCallId: string;
89
+ toolName: string;
90
+ output?: unknown;
91
+ error?: string;
92
+ }
93
+ export interface LeadCapturedPart {
94
+ type: 'lead-captured';
95
+ lead: Record<string, unknown>;
96
+ }
97
+ export interface HandoffPart {
98
+ type: 'handoff';
99
+ status: 'requested' | 'queued' | 'connected' | 'ended';
100
+ provider?: string;
101
+ }
102
+ /**
103
+ * One piece of a message. An assistant message for a turn with tool calls
104
+ * holds every step in order: reasoning, text and tool calls, then the tool
105
+ * results, then the next step.
106
+ */
107
+ export type MessagePart = TextPart | ReasoningPart | SourcePart | ToolCallPart | ToolResultPart | LeadCapturedPart | HandoffPart;
15
108
  export interface ChatRequest {
16
109
  conversationId: string;
17
110
  message: string;
@@ -28,6 +121,8 @@ export interface PageContext {
28
121
  title: string;
29
122
  description?: string;
30
123
  contentSnippet?: string;
124
+ /** Details the site adds for the next turns (the widget's `setContext()`), such as the visitor's plan. */
125
+ data?: Record<string, string>;
31
126
  }
32
127
  export interface LeadData {
33
128
  name: string;
@@ -43,11 +138,35 @@ export interface ToolParameter {
43
138
  description: string;
44
139
  enum?: string[];
45
140
  }
141
+ /** Hints about what a tool does, in the shape MCP uses. Not enforced. */
142
+ export interface ToolAnnotations {
143
+ title?: string;
144
+ /** The tool only reads; calling it changes nothing. */
145
+ readOnlyHint?: boolean;
146
+ /** The tool can change or delete something that matters. */
147
+ destructiveHint?: boolean;
148
+ }
46
149
  export interface ToolDefinition {
47
150
  name: string;
48
151
  description: string;
49
- parameters: Record<string, ToolParameter>;
50
- required: string[];
152
+ /**
153
+ * JSON Schema for the tool's input. The root must be `type: 'object'`.
154
+ * Nested objects, arrays, `enum`, `anyOf` and `$ref` all work.
155
+ */
156
+ inputSchema?: JSONSchema;
157
+ /** The 0.4 flat form, used when there's no `inputSchema`. */
158
+ parameters?: Record<string, ToolParameter>;
159
+ /** Required keys of `parameters`. Ignored with `inputSchema`, which has its own `required`. */
160
+ required?: string[];
161
+ annotations?: ToolAnnotations;
162
+ }
163
+ /** What a running tool gets besides its input. */
164
+ export interface ToolContext {
165
+ conversationId: string;
166
+ /** Aborts when the visitor leaves or the tool times out. */
167
+ signal: AbortSignal;
168
+ /** The server's logger, for problems the tool handles itself. */
169
+ logger?: Logger;
51
170
  }
52
171
  export interface ToolResult {
53
172
  success: boolean;
@@ -74,14 +193,21 @@ export interface WebhookConfig {
74
193
  /** How much effort a model spends on each reply. Lower is faster and cheaper. */
75
194
  export type ProviderEffort = 'low' | 'medium' | 'high' | 'xhigh' | 'max';
76
195
  export interface ProviderConfig {
77
- type: 'claude' | 'openai' | 'gemini';
78
- apiKey: string;
196
+ type: 'claude' | 'openai' | 'gemini' | 'openai-compatible' | (string & {});
197
+ /** Where the provider's warnings go. The server passes its own `logger`. */
198
+ logger?: Logger;
199
+ /** Required for the hosted providers; optional for openai-compatible and custom providers. */
200
+ apiKey?: string;
79
201
  model?: string;
80
202
  /**
81
203
  * Custom API endpoint, for proxies and OpenAI-compatible servers
82
204
  * (Ollama, vLLM, Groq, OpenRouter). Passed to the provider SDK as is.
83
205
  */
84
206
  baseURL?: string;
207
+ /** Extra request headers for OpenAI and OpenAI-compatible endpoints. */
208
+ headers?: Record<string, string>;
209
+ /** OpenAI providers: omit tools when false. Defaults to true. */
210
+ supportsTools?: boolean;
85
211
  /** OpenAI organization id. Ignored by other providers. */
86
212
  organization?: string;
87
213
  /**
@@ -91,11 +217,24 @@ export interface ProviderConfig {
91
217
  */
92
218
  effort?: ProviderEffort;
93
219
  /**
94
- * OpenAI only: the name of the output token limit sent to the API.
95
- * Defaults to `'max_completion_tokens'`. Set `'max_tokens'` for
96
- * OpenAI-compatible servers that only accept the old name.
220
+ * OpenAI providers: the name of the output token limit sent to the API.
221
+ * Defaults to `'max_completion_tokens'` for openai and `'max_tokens'`
222
+ * for openai-compatible.
97
223
  */
98
224
  maxTokensParam?: 'max_completion_tokens' | 'max_tokens';
225
+ /**
226
+ * The `fetch` the provider SDK sends requests with. Defaults to the global
227
+ * one. Set it to route requests through a proxy or to replay recorded
228
+ * responses in tests.
229
+ */
230
+ fetch?: typeof fetch;
231
+ /**
232
+ * Claude only: mark the system prompt and tools as a cached prefix, so
233
+ * later requests read them from the prompt cache at a tenth of the price.
234
+ * On by default. Prompts shorter than the model's minimum aren't cached
235
+ * either way.
236
+ */
237
+ promptCaching?: boolean;
99
238
  }
100
239
  export interface ProviderChatParams {
101
240
  messages: ChatMessage[];
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AAC1C,MAAM,WAAW,WAAW;IAC1B,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,GAAG,WAAW,GAAG,QAAQ,CAAC;IACtC;;;OAGG;IACH,OAAO,EAAE,MAAM,CAAC;IAChB;;;;OAIG;IACH,KAAK,CAAC,EAAE,WAAW,EAAE,CAAC;IACtB;;;;OAIG;IACH,MAAM,CAAC,EAAE,UAAU,GAAG,YAAY,GAAG,SAAS,CAAC;IAC/C,sDAAsD;IACtD,KAAK,CAAC,EAAE,UAAU,CAAC;IACnB,sEAAsE;IACtE,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACpC;AAED,MAAM,WAAW,YAAY;IAC3B,EAAE,EAAE,MAAM,CAAC;IACX,QAAQ,EAAE,WAAW,EAAE,CAAC;IACxB,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACnC;;;OAGG;IACH,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,UAAU;IACzB,WAAW,EAAE,MAAM,CAAC;IACpB,YAAY,EAAE,MAAM,CAAC;IACrB,0DAA0D;IAC1D,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,2DAA2D;IAC3D,gBAAgB,CAAC,EAAE,MAAM,CAAC;CAC3B;AAED;;;;GAIG;AACH,MAAM,MAAM,gBAAgB,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC;AAEvE,4EAA4E;AAC5E,MAAM,MAAM,UAAU,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;AAEjD,MAAM,MAAM,YAAY,GAAG,QAAQ,GAAG,QAAQ,GAAG,KAAK,CAAC;AAEvD,MAAM,MAAM,aAAa,GAAG,SAAS,GAAG,mBAAmB,GAAG,MAAM,GAAG,OAAO,GAAG,SAAS,CAAC;AAE3F,MAAM,WAAW,QAAQ;IACvB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,gBAAgB,CAAC,EAAE,gBAAgB,CAAC;CACrC;AAED,6EAA6E;AAC7E,MAAM,WAAW,aAAa;IAC5B,IAAI,EAAE,WAAW,CAAC;IAClB,IAAI,EAAE,MAAM,CAAC;IACb,gBAAgB,CAAC,EAAE,gBAAgB,CAAC;CACrC;AAED,MAAM,WAAW,UAAU;IACzB,IAAI,EAAE,QAAQ,CAAC;IACf,QAAQ,EAAE,MAAM,CAAC;IACjB,GAAG,EAAE,MAAM,CAAC;IACZ,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,YAAY;IAC3B,IAAI,EAAE,WAAW,CAAC;IAClB,UAAU,EAAE,MAAM,CAAC;IACnB,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,EAAE,OAAO,CAAC;IACf,QAAQ,EAAE,YAAY,CAAC;IACvB,KAAK,EAAE,aAAa,CAAC;IACrB,gBAAgB,CAAC,EAAE,gBAAgB,CAAC;CACrC;AAED,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,aAAa,CAAC;IACpB,UAAU,EAAE,MAAM,CAAC;IACnB,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,gBAAgB;IAC/B,IAAI,EAAE,eAAe,CAAC;IACtB,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CAC/B;AAED,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,SAAS,CAAC;IAChB,MAAM,EAAE,WAAW,GAAG,QAAQ,GAAG,WAAW,GAAG,OAAO,CAAC;IACvD,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED;;;;GAIG;AACH,MAAM,MAAM,WAAW,GACnB,QAAQ,GACR,aAAa,GACb,UAAU,GACV,YAAY,GACZ,cAAc,GACd,gBAAgB,GAChB,WAAW,CAAC;AAEhB,MAAM,WAAW,WAAW;IAC1B,cAAc,EAAE,MAAM,CAAC;IACvB,OAAO,EAAE,MAAM,CAAC;IAChB,WAAW,CAAC,EAAE,WAAW,CAAC;IAC1B,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,YAAY;IAC3B,OAAO,EAAE,WAAW,CAAC;IACrB,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,gBAAgB,CAAC,EAAE,MAAM,EAAE,CAAC;CAC7B;AAED,MAAM,WAAW,WAAW;IAC1B,GAAG,EAAE,MAAM,CAAC;IACZ,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,0GAA0G;IAC1G,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CAC/B;AAED,MAAM,WAAW,QAAQ;IACvB,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,cAAc,EAAE,MAAM,CAAC;IACvB,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACpC;AAED,MAAM,WAAW,aAAa;IAC5B,IAAI,EAAE,QAAQ,GAAG,QAAQ,GAAG,SAAS,CAAC;IACtC,WAAW,EAAE,MAAM,CAAC;IACpB,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;CACjB;AAED,yEAAyE;AACzE,MAAM,WAAW,eAAe;IAC9B,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,uDAAuD;IACvD,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,4DAA4D;IAC5D,eAAe,CAAC,EAAE,OAAO,CAAC;CAC3B;AAED,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB;;;OAGG;IACH,WAAW,CAAC,EAAE,UAAU,CAAC;IACzB,6DAA6D;IAC7D,UAAU,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,aAAa,CAAC,CAAC;IAC3C,+FAA+F;IAC/F,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC;IACpB,WAAW,CAAC,EAAE,eAAe,CAAC;CAC/B;AAED,kDAAkD;AAClD,MAAM,WAAW,WAAW;IAC1B,cAAc,EAAE,MAAM,CAAC;IACvB,4DAA4D;IAC5D,MAAM,EAAE,WAAW,CAAC;IACpB,iEAAiE;IACjE,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,UAAU;IACzB,OAAO,EAAE,OAAO,CAAC;IACjB,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,gBAAgB;IAC/B,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CAChC;AAED,MAAM,MAAM,oBAAoB,GAAG,CAAC,IAAI,EAAE,gBAAgB,KAAK,OAAO,CAAC,UAAU,CAAC,CAAC;AAEnF,MAAM,WAAW,aAAa;IAC5B,GAAG,EAAE,MAAM,CAAC;IACZ,MAAM,EAAE,MAAM,EAAE,CAAC;IACjB,kFAAkF;IAClF,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB;;;OAGG;IACH,mBAAmB,CAAC,EAAE,OAAO,CAAC;CAC/B;AAED,iFAAiF;AACjF,MAAM,MAAM,cAAc,GAAG,KAAK,GAAG,QAAQ,GAAG,MAAM,GAAG,OAAO,GAAG,KAAK,CAAC;AAEzE,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,QAAQ,GAAG,QAAQ,GAAG,QAAQ,GAAG,mBAAmB,GAAG,CAAC,MAAM,GAAG,EAAE,CAAC,CAAC;IAC3E,4EAA4E;IAC5E,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,8FAA8F;IAC9F,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf;;;OAGG;IACH,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,wEAAwE;IACxE,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACjC,iEAAiE;IACjE,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,0DAA0D;IAC1D,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB;;;;OAIG;IACH,MAAM,CAAC,EAAE,cAAc,CAAC;IACxB;;;;OAIG;IACH,cAAc,CAAC,EAAE,uBAAuB,GAAG,YAAY,CAAC;IACxD;;;;OAIG;IACH,KAAK,CAAC,EAAE,OAAO,KAAK,CAAC;IACrB;;;;;OAKG;IACH,aAAa,CAAC,EAAE,OAAO,CAAC;CACzB;AAED,MAAM,WAAW,kBAAkB;IACjC,QAAQ,EAAE,WAAW,EAAE,CAAC;IACxB,YAAY,EAAE,MAAM,CAAC;IACrB,KAAK,CAAC,EAAE,cAAc,EAAE,CAAC;IACzB,YAAY,CAAC,EAAE,oBAAoB,CAAC;IACpC,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB;;;OAGG;IACH,MAAM,CAAC,EAAE,WAAW,CAAC;CACtB;AAED,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAC/B,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,YAAY,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC"}
package/package.json CHANGED
@@ -1,7 +1,19 @@
1
1
  {
2
2
  "name": "@chatcops/core",
3
- "version": "0.4.0",
3
+ "version": "0.6.0",
4
4
  "description": "Core AI provider abstraction, tools, and knowledge base for ChatCops",
5
+ "keywords": [
6
+ "chatcops",
7
+ "ai",
8
+ "chatbot",
9
+ "llm",
10
+ "claude",
11
+ "openai",
12
+ "gemini",
13
+ "tool-calling"
14
+ ],
15
+ "homepage": "https://chat.codercops.com",
16
+ "bugs": "https://github.com/codercops/chatcops/issues",
5
17
  "type": "module",
6
18
  "main": "dist/index.js",
7
19
  "types": "dist/index.d.ts",
@@ -9,30 +21,66 @@
9
21
  ".": {
10
22
  "types": "./dist/index.d.ts",
11
23
  "import": "./dist/index.js"
24
+ },
25
+ "./providers/claude": {
26
+ "types": "./dist/providers/claude.d.ts",
27
+ "import": "./dist/providers/claude.js"
28
+ },
29
+ "./providers/openai": {
30
+ "types": "./dist/providers/openai.d.ts",
31
+ "import": "./dist/providers/openai.js"
32
+ },
33
+ "./providers/gemini": {
34
+ "types": "./dist/providers/gemini.d.ts",
35
+ "import": "./dist/providers/gemini.js"
36
+ },
37
+ "./protocol": {
38
+ "types": "./dist/protocol/index.d.ts",
39
+ "import": "./dist/protocol/index.js"
40
+ },
41
+ "./testing": {
42
+ "types": "./dist/testing/index.d.ts",
43
+ "import": "./dist/testing/index.js"
44
+ },
45
+ "./testing/provider": {
46
+ "types": "./dist/testing/provider.d.ts",
47
+ "import": "./dist/testing/provider.js"
12
48
  }
13
49
  },
14
50
  "files": [
15
51
  "dist"
16
52
  ],
17
53
  "dependencies": {
18
- "@anthropic-ai/sdk": "^0.135.0",
54
+ "@anthropic-ai/sdk": "^1.2.0",
19
55
  "@google/genai": "^2.30.0",
20
56
  "openai": "^7.39.0",
21
57
  "zod": "^3.24.0"
22
58
  },
59
+ "peerDependencies": {
60
+ "vitest": ">=3.2.0"
61
+ },
62
+ "peerDependenciesMeta": {
63
+ "vitest": {
64
+ "optional": true
65
+ }
66
+ },
23
67
  "devDependencies": {
24
68
  "typescript": "^5.7.0",
25
69
  "vitest": "^4.1.11"
26
70
  },
27
71
  "repository": {
28
72
  "type": "git",
29
- "url": "https://github.com/codercops/chatcops",
73
+ "url": "git+https://github.com/codercops/chatcops.git",
30
74
  "directory": "packages/core"
31
75
  },
32
76
  "publishConfig": {
33
77
  "access": "public"
34
78
  },
35
79
  "license": "MIT",
80
+ "engines": {
81
+ "node": ">=22"
82
+ },
83
+ "sideEffects": false,
36
84
  "scripts": {
37
85
  "build": "tsc",
38
86
  "typecheck": "tsc --noEmit",