@proteinjs/conversation 2.7.2 → 3.0.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 (54) hide show
  1. package/CHANGELOG.md +24 -0
  2. package/LICENSE +21 -0
  3. package/dist/index.d.ts +3 -0
  4. package/dist/index.d.ts.map +1 -1
  5. package/dist/index.js +3 -0
  6. package/dist/index.js.map +1 -1
  7. package/dist/src/CodegenConversation.js +1 -1
  8. package/dist/src/CodegenConversation.js.map +1 -1
  9. package/dist/src/Conversation.d.ts +173 -99
  10. package/dist/src/Conversation.d.ts.map +1 -1
  11. package/dist/src/Conversation.js +903 -502
  12. package/dist/src/Conversation.js.map +1 -1
  13. package/dist/src/OpenAi.d.ts +20 -0
  14. package/dist/src/OpenAi.d.ts.map +1 -1
  15. package/dist/src/OpenAi.js +16 -0
  16. package/dist/src/OpenAi.js.map +1 -1
  17. package/dist/src/OpenAiStreamProcessor.d.ts +9 -3
  18. package/dist/src/OpenAiStreamProcessor.d.ts.map +1 -1
  19. package/dist/src/OpenAiStreamProcessor.js +5 -3
  20. package/dist/src/OpenAiStreamProcessor.js.map +1 -1
  21. package/dist/src/UsageData.d.ts.map +1 -1
  22. package/dist/src/UsageData.js +22 -0
  23. package/dist/src/UsageData.js.map +1 -1
  24. package/dist/src/code_template/Code.d.ts.map +1 -1
  25. package/dist/src/code_template/Code.js +8 -2
  26. package/dist/src/code_template/Code.js.map +1 -1
  27. package/dist/src/resolveModel.d.ts +17 -0
  28. package/dist/src/resolveModel.d.ts.map +1 -0
  29. package/dist/src/resolveModel.js +121 -0
  30. package/dist/src/resolveModel.js.map +1 -0
  31. package/dist/test/conversation/conversation.generateObject.test.d.ts +2 -0
  32. package/dist/test/conversation/conversation.generateObject.test.d.ts.map +1 -0
  33. package/dist/test/conversation/conversation.generateObject.test.js +153 -0
  34. package/dist/test/conversation/conversation.generateObject.test.js.map +1 -0
  35. package/dist/test/conversation/conversation.generateResponse.test.d.ts +2 -0
  36. package/dist/test/conversation/conversation.generateResponse.test.d.ts.map +1 -0
  37. package/dist/test/conversation/conversation.generateResponse.test.js +167 -0
  38. package/dist/test/conversation/conversation.generateResponse.test.js.map +1 -0
  39. package/dist/test/conversation/conversation.generateStream.test.d.ts +2 -0
  40. package/dist/test/conversation/conversation.generateStream.test.d.ts.map +1 -0
  41. package/dist/test/conversation/conversation.generateStream.test.js +255 -0
  42. package/dist/test/conversation/conversation.generateStream.test.js.map +1 -0
  43. package/index.ts +5 -0
  44. package/package.json +7 -2
  45. package/src/CodegenConversation.ts +1 -1
  46. package/src/Conversation.ts +938 -496
  47. package/src/OpenAi.ts +20 -0
  48. package/src/OpenAiStreamProcessor.ts +9 -3
  49. package/src/UsageData.ts +25 -0
  50. package/src/code_template/Code.ts +5 -1
  51. package/src/resolveModel.ts +130 -0
  52. package/test/conversation/conversation.generateObject.test.ts +132 -0
  53. package/test/conversation/conversation.generateResponse.test.ts +132 -0
  54. package/test/conversation/conversation.generateStream.test.ts +173 -0
@@ -0,0 +1,255 @@
1
+ "use strict";
2
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
3
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
4
+ return new (P || (P = Promise))(function (resolve, reject) {
5
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
6
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
7
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
8
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
9
+ });
10
+ };
11
+ var __generator = (this && this.__generator) || function (thisArg, body) {
12
+ var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
13
+ return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
14
+ function verb(n) { return function (v) { return step([n, v]); }; }
15
+ function step(op) {
16
+ if (f) throw new TypeError("Generator is already executing.");
17
+ while (g && (g = 0, op[0] && (_ = 0)), _) try {
18
+ if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
19
+ if (y = 0, t) op = [op[0] & 2, t.value];
20
+ switch (op[0]) {
21
+ case 0: case 1: t = op; break;
22
+ case 4: _.label++; return { value: op[1], done: false };
23
+ case 5: _.label++; y = op[1]; op = [0]; continue;
24
+ case 7: op = _.ops.pop(); _.trys.pop(); continue;
25
+ default:
26
+ if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
27
+ if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
28
+ if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
29
+ if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
30
+ if (t[2]) _.ops.pop();
31
+ _.trys.pop(); continue;
32
+ }
33
+ op = body.call(thisArg, _);
34
+ } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
35
+ if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
36
+ }
37
+ };
38
+ var __asyncValues = (this && this.__asyncValues) || function (o) {
39
+ if (!Symbol.asyncIterator) throw new TypeError("Symbol.asyncIterator is not defined.");
40
+ var m = o[Symbol.asyncIterator], i;
41
+ return m ? m.call(o) : (o = typeof __values === "function" ? __values(o) : o[Symbol.iterator](), i = {}, verb("next"), verb("throw"), verb("return"), i[Symbol.asyncIterator] = function () { return this; }, i);
42
+ function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }
43
+ function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }
44
+ };
45
+ Object.defineProperty(exports, "__esModule", { value: true });
46
+ var Conversation_1 = require("../../src/Conversation");
47
+ /**
48
+ * Integration tests for Conversation.generateStream.
49
+ *
50
+ * These hit the real OpenAI API (requires OPENAI_API_KEY env var).
51
+ * They verify the full path through the AI SDK: message building,
52
+ * tool schema wiring, streaming, usage extraction, and tool invocation reporting.
53
+ */
54
+ var hasApiKey = !!process.env.OPENAI_API_KEY;
55
+ var describeIfKey = hasApiKey ? describe : describe.skip;
56
+ var TEST_MODEL = 'gpt-4.1-nano';
57
+ var TIMEOUT = 60000;
58
+ /** A simple tool that adds two numbers. */
59
+ function createAddTool() {
60
+ var calls = [];
61
+ var fn = {
62
+ definition: {
63
+ name: 'addNumbers',
64
+ description: 'Adds two numbers together and returns the sum.',
65
+ parameters: {
66
+ type: 'object',
67
+ properties: {
68
+ a: { type: 'number', description: 'First number' },
69
+ b: { type: 'number', description: 'Second number' },
70
+ },
71
+ required: ['a', 'b'],
72
+ },
73
+ },
74
+ call: function (args) {
75
+ return __awaiter(this, void 0, void 0, function () {
76
+ return __generator(this, function (_a) {
77
+ calls.push(args);
78
+ return [2 /*return*/, { sum: args.a + args.b }];
79
+ });
80
+ });
81
+ },
82
+ };
83
+ return { fn: fn, calls: calls };
84
+ }
85
+ /** A tool with no parameters (the case that caused the type: "None" bug). */
86
+ function createNoParamTool() {
87
+ var callCount = [0];
88
+ var fn = {
89
+ definition: {
90
+ name: 'getServerTime',
91
+ description: 'Returns the current server time. Takes no parameters.',
92
+ },
93
+ call: function () {
94
+ return __awaiter(this, void 0, void 0, function () {
95
+ return __generator(this, function (_a) {
96
+ callCount[0]++;
97
+ return [2 /*return*/, { time: new Date().toISOString() }];
98
+ });
99
+ });
100
+ },
101
+ };
102
+ return { fn: fn, callCount: callCount };
103
+ }
104
+ /** A simple module that provides a system message and a tool. */
105
+ function createTestModule(systemMessage, functions) {
106
+ return {
107
+ getName: function () { return 'TestModule'; },
108
+ getSystemMessages: function () { return [systemMessage]; },
109
+ getFunctions: function () { return functions; },
110
+ getMessageModerators: function () { return []; },
111
+ };
112
+ }
113
+ describeIfKey('Conversation.generateStream', function () {
114
+ test('streams a text response and resolves usage data', function () { return __awaiter(void 0, void 0, void 0, function () {
115
+ var conversation, result, chunks, _a, _b, _c, chunk, e_1_1, text, usage;
116
+ var _d, e_1, _e, _f;
117
+ return __generator(this, function (_g) {
118
+ switch (_g.label) {
119
+ case 0:
120
+ conversation = new Conversation_1.Conversation({ name: 'test-stream' });
121
+ return [4 /*yield*/, conversation.generateStream({
122
+ messages: ['What is 2+2? Reply with just the number.'],
123
+ model: TEST_MODEL,
124
+ })];
125
+ case 1:
126
+ result = _g.sent();
127
+ chunks = [];
128
+ _g.label = 2;
129
+ case 2:
130
+ _g.trys.push([2, 7, 8, 13]);
131
+ _a = true, _b = __asyncValues(result.textStream);
132
+ _g.label = 3;
133
+ case 3: return [4 /*yield*/, _b.next()];
134
+ case 4:
135
+ if (!(_c = _g.sent(), _d = _c.done, !_d)) return [3 /*break*/, 6];
136
+ _f = _c.value;
137
+ _a = false;
138
+ chunk = _f;
139
+ chunks.push(chunk);
140
+ _g.label = 5;
141
+ case 5:
142
+ _a = true;
143
+ return [3 /*break*/, 3];
144
+ case 6: return [3 /*break*/, 13];
145
+ case 7:
146
+ e_1_1 = _g.sent();
147
+ e_1 = { error: e_1_1 };
148
+ return [3 /*break*/, 13];
149
+ case 8:
150
+ _g.trys.push([8, , 11, 12]);
151
+ if (!(!_a && !_d && (_e = _b.return))) return [3 /*break*/, 10];
152
+ return [4 /*yield*/, _e.call(_b)];
153
+ case 9:
154
+ _g.sent();
155
+ _g.label = 10;
156
+ case 10: return [3 /*break*/, 12];
157
+ case 11:
158
+ if (e_1) throw e_1.error;
159
+ return [7 /*endfinally*/];
160
+ case 12: return [7 /*endfinally*/];
161
+ case 13:
162
+ // Should have streamed something
163
+ expect(chunks.length).toBeGreaterThan(0);
164
+ return [4 /*yield*/, result.text];
165
+ case 14:
166
+ text = _g.sent();
167
+ expect(text).toContain('4');
168
+ return [4 /*yield*/, result.usage];
169
+ case 15:
170
+ usage = _g.sent();
171
+ expect(usage.totalTokenUsage.inputTokens).toBeGreaterThan(0);
172
+ expect(usage.totalTokenUsage.outputTokens).toBeGreaterThan(0);
173
+ expect(usage.totalTokenUsage.totalTokens).toBeGreaterThan(0);
174
+ expect(usage.model).toBeTruthy();
175
+ return [2 /*return*/];
176
+ }
177
+ });
178
+ }); }, TIMEOUT);
179
+ test('invokes a tool with parameters and reports tool invocations', function () { return __awaiter(void 0, void 0, void 0, function () {
180
+ var _a, addTool, calls, conversation, result, text, usage, toolInvocations;
181
+ return __generator(this, function (_b) {
182
+ switch (_b.label) {
183
+ case 0:
184
+ _a = createAddTool(), addTool = _a.fn, calls = _a.calls;
185
+ conversation = new Conversation_1.Conversation({
186
+ name: 'test-tool-call',
187
+ modules: [createTestModule('You are a calculator. Use the addNumbers tool to compute sums.', [addTool])],
188
+ });
189
+ return [4 /*yield*/, conversation.generateStream({
190
+ messages: ['What is 7 + 13?'],
191
+ model: TEST_MODEL,
192
+ })];
193
+ case 1:
194
+ result = _b.sent();
195
+ return [4 /*yield*/, result.text];
196
+ case 2:
197
+ text = _b.sent();
198
+ return [4 /*yield*/, result.usage];
199
+ case 3:
200
+ usage = _b.sent();
201
+ return [4 /*yield*/, result.toolInvocations];
202
+ case 4:
203
+ toolInvocations = _b.sent();
204
+ // The tool should have been called
205
+ expect(calls.length).toBeGreaterThan(0);
206
+ expect(calls[0].a + calls[0].b).toBe(20);
207
+ // The response should contain "20"
208
+ expect(text).toContain('20');
209
+ // Tool invocations should be reported
210
+ expect(toolInvocations.length).toBeGreaterThan(0);
211
+ expect(toolInvocations[0].name).toBe('addNumbers');
212
+ // Usage should reflect multiple steps (at least one tool call step + final response)
213
+ expect(usage.totalRequestsToAssistant).toBeGreaterThanOrEqual(2);
214
+ expect(usage.totalToolCalls).toBeGreaterThan(0);
215
+ expect(usage.callsPerTool['addNumbers']).toBeGreaterThan(0);
216
+ return [2 /*return*/];
217
+ }
218
+ });
219
+ }); }, TIMEOUT);
220
+ test('handles a tool with no parameters (the type: "None" regression)', function () { return __awaiter(void 0, void 0, void 0, function () {
221
+ var _a, noParamTool, callCount, conversation, result, text, toolInvocations;
222
+ return __generator(this, function (_b) {
223
+ switch (_b.label) {
224
+ case 0:
225
+ _a = createNoParamTool(), noParamTool = _a.fn, callCount = _a.callCount;
226
+ conversation = new Conversation_1.Conversation({
227
+ name: 'test-no-param-tool',
228
+ modules: [
229
+ createTestModule('You have access to a getServerTime tool. When the user asks for the time, call it.', [
230
+ noParamTool,
231
+ ]),
232
+ ],
233
+ });
234
+ return [4 /*yield*/, conversation.generateStream({
235
+ messages: ['What time is it on the server?'],
236
+ model: TEST_MODEL,
237
+ })];
238
+ case 1:
239
+ result = _b.sent();
240
+ return [4 /*yield*/, result.text];
241
+ case 2:
242
+ text = _b.sent();
243
+ return [4 /*yield*/, result.toolInvocations];
244
+ case 3:
245
+ toolInvocations = _b.sent();
246
+ // The tool should have been called
247
+ expect(callCount[0]).toBeGreaterThan(0);
248
+ expect(toolInvocations.length).toBeGreaterThan(0);
249
+ expect(toolInvocations[0].name).toBe('getServerTime');
250
+ return [2 /*return*/];
251
+ }
252
+ });
253
+ }); }, TIMEOUT);
254
+ });
255
+ //# sourceMappingURL=conversation.generateStream.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"conversation.generateStream.test.js","sourceRoot":"","sources":["../../../test/conversation/conversation.generateStream.test.ts"],"names":[],"mappings":"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"}
package/index.ts CHANGED
@@ -1,5 +1,6 @@
1
1
  export * from './src/Sentence';
2
2
  export * from './src/Paragraph';
3
+ /** @deprecated — Use `Conversation` instead of `OpenAi`. */
3
4
  export * from './src/OpenAi';
4
5
  export * from './src/code_template/CodeTemplate';
5
6
  export * from './src/Conversation';
@@ -10,9 +11,11 @@ export * from './src/Function';
10
11
  export * from './src/history/MessageModerator';
11
12
  export * from './src/history/MessageHistory';
12
13
  export * from './src/ChatCompletionMessageParamFactory';
14
+ /** @deprecated — Use `StreamResult.textStream` from `Conversation.generateStream` instead. */
13
15
  export { AssistantResponseStreamChunk } from './src/OpenAiStreamProcessor';
14
16
  export * from './src/UsageData';
15
17
  export * from './src/OpenAiResponses';
18
+ export * from './src/resolveModel';
16
19
 
17
20
  // Conversation modules
18
21
  export * from './src/fs/conversation_fs/ConversationFsModule';
@@ -22,3 +25,5 @@ export * from './src/fs/keyword_to_files_index/KeywordToFilesIndexModule';
22
25
  export * from './src/fs/keyword_to_files_index/KeywordToFilesIndexFunctions';
23
26
  export * from './src/fs/package/PackageModule';
24
27
  export * from './src/fs/package/PackageFunctions';
28
+
29
+ // bump
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@proteinjs/conversation",
3
- "version": "2.7.2",
3
+ "version": "3.0.0",
4
4
  "main": "dist/index.js",
5
5
  "types": "dist/index.d.ts",
6
6
  "publishConfig": {
@@ -28,6 +28,10 @@
28
28
  "ts-jest": "^29.1.1"
29
29
  },
30
30
  "dependencies": {
31
+ "@ai-sdk/anthropic": "^3.0.0",
32
+ "@ai-sdk/google": "^3.0.0",
33
+ "@ai-sdk/openai": "^3.0.7",
34
+ "@ai-sdk/xai": "^3.0.0",
31
35
  "@proteinjs/logger": "^1.0.15",
32
36
  "@proteinjs/util": "^1.6.0",
33
37
  "@proteinjs/util-node": "^1.7.2",
@@ -37,5 +41,6 @@
37
41
  "readline-sync": "1.4.10",
38
42
  "tiktoken": "1.0.22",
39
43
  "typescript": "5.2.2"
40
- }
44
+ },
45
+ "gitHead": "5d5d3d0eb7929a9c4516f6796be99ab63b3822b4"
41
46
  }
@@ -32,7 +32,7 @@ export class CodegenConversation {
32
32
  });
33
33
  // eslint-disable-next-line no-constant-condition
34
34
  while (true) {
35
- const userInput = this.respondToUser(responseObject.message);
35
+ const userInput = this.respondToUser(responseObject.text);
36
36
  responseObject = await conversation.generateResponse({ messages: [userInput], model: CodegenConversation.MODEL });
37
37
  }
38
38
  }