@proteinjs/conversation 1.0.1 → 1.0.3

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 (134) hide show
  1. package/CHANGELOG.md +16 -0
  2. package/dist/index.d.ts +12 -0
  3. package/dist/index.d.ts.map +1 -0
  4. package/dist/index.js +1 -0
  5. package/dist/index.js.map +1 -0
  6. package/dist/src/CodegenConversation.d.ts +13 -0
  7. package/dist/src/CodegenConversation.d.ts.map +1 -0
  8. package/dist/src/CodegenConversation.js +128 -57
  9. package/dist/src/CodegenConversation.js.map +1 -0
  10. package/dist/src/Conversation.d.ts +60 -0
  11. package/dist/src/Conversation.d.ts.map +1 -0
  12. package/dist/src/Conversation.js +202 -102
  13. package/dist/src/Conversation.js.map +1 -0
  14. package/dist/src/ConversationModule.d.ts +12 -0
  15. package/dist/src/ConversationModule.d.ts.map +1 -0
  16. package/dist/src/ConversationModule.js +1 -0
  17. package/dist/src/ConversationModule.js.map +1 -0
  18. package/dist/src/Function.d.ts +7 -0
  19. package/dist/src/Function.d.ts.map +1 -0
  20. package/dist/src/Function.js +1 -0
  21. package/dist/src/Function.js.map +1 -0
  22. package/dist/src/OpenAi.d.ts +18 -0
  23. package/dist/src/OpenAi.d.ts.map +1 -0
  24. package/dist/src/OpenAi.js +265 -169
  25. package/dist/src/OpenAi.js.map +1 -0
  26. package/dist/src/Paragraph.d.ts +7 -0
  27. package/dist/src/Paragraph.d.ts.map +1 -0
  28. package/dist/src/Paragraph.js +9 -7
  29. package/dist/src/Paragraph.js.map +1 -0
  30. package/dist/src/Sentence.d.ts +6 -0
  31. package/dist/src/Sentence.d.ts.map +1 -0
  32. package/dist/src/Sentence.js +10 -8
  33. package/dist/src/Sentence.js.map +1 -0
  34. package/dist/src/code_template/Code.d.ts +24 -0
  35. package/dist/src/code_template/Code.d.ts.map +1 -0
  36. package/dist/src/code_template/Code.js +57 -22
  37. package/dist/src/code_template/Code.js.map +1 -0
  38. package/dist/src/code_template/CodeTemplate.d.ts +18 -0
  39. package/dist/src/code_template/CodeTemplate.d.ts.map +1 -0
  40. package/dist/src/code_template/CodeTemplate.js +68 -20
  41. package/dist/src/code_template/CodeTemplate.js.map +1 -0
  42. package/dist/src/code_template/CodeTemplateModule.d.ts +11 -0
  43. package/dist/src/code_template/CodeTemplateModule.d.ts.map +1 -0
  44. package/dist/src/code_template/CodeTemplateModule.js +20 -16
  45. package/dist/src/code_template/CodeTemplateModule.js.map +1 -0
  46. package/dist/src/code_template/Repo.d.ts +50 -0
  47. package/dist/src/code_template/Repo.d.ts.map +1 -0
  48. package/dist/src/code_template/Repo.js +161 -80
  49. package/dist/src/code_template/Repo.js.map +1 -0
  50. package/dist/src/fs/conversation_fs/ConversationFsModerator.d.ts +24 -0
  51. package/dist/src/fs/conversation_fs/ConversationFsModerator.d.ts.map +1 -0
  52. package/dist/src/fs/conversation_fs/ConversationFsModerator.js +45 -36
  53. package/dist/src/fs/conversation_fs/ConversationFsModerator.js.map +1 -0
  54. package/dist/src/fs/conversation_fs/ConversationFsModule.d.ts +18 -0
  55. package/dist/src/fs/conversation_fs/ConversationFsModule.d.ts.map +1 -0
  56. package/dist/src/fs/conversation_fs/ConversationFsModule.js +84 -41
  57. package/dist/src/fs/conversation_fs/ConversationFsModule.js.map +1 -0
  58. package/dist/src/fs/conversation_fs/FsFunctions.d.ts +82 -0
  59. package/dist/src/fs/conversation_fs/FsFunctions.d.ts.map +1 -0
  60. package/dist/src/fs/conversation_fs/FsFunctions.js +105 -30
  61. package/dist/src/fs/conversation_fs/FsFunctions.js.map +1 -0
  62. package/dist/src/fs/git/GitModule.d.ts +14 -0
  63. package/dist/src/fs/git/GitModule.d.ts.map +1 -0
  64. package/dist/src/fs/git/GitModule.js +65 -24
  65. package/dist/src/fs/git/GitModule.js.map +1 -0
  66. package/dist/src/fs/keyword_to_files_index/KeywordToFilesIndexFunctions.d.ts +23 -0
  67. package/dist/src/fs/keyword_to_files_index/KeywordToFilesIndexFunctions.d.ts.map +1 -0
  68. package/dist/src/fs/keyword_to_files_index/KeywordToFilesIndexFunctions.js +35 -5
  69. package/dist/src/fs/keyword_to_files_index/KeywordToFilesIndexFunctions.js.map +1 -0
  70. package/dist/src/fs/keyword_to_files_index/KeywordToFilesIndexModule.d.ts +34 -0
  71. package/dist/src/fs/keyword_to_files_index/KeywordToFilesIndexModule.d.ts.map +1 -0
  72. package/dist/src/fs/keyword_to_files_index/KeywordToFilesIndexModule.js +107 -50
  73. package/dist/src/fs/keyword_to_files_index/KeywordToFilesIndexModule.js.map +1 -0
  74. package/dist/src/fs/package/PackageFunctions.d.ts +79 -0
  75. package/dist/src/fs/package/PackageFunctions.d.ts.map +1 -0
  76. package/dist/src/fs/package/PackageFunctions.js +78 -16
  77. package/dist/src/fs/package/PackageFunctions.js.map +1 -0
  78. package/dist/src/fs/package/PackageModule.d.ts +34 -0
  79. package/dist/src/fs/package/PackageModule.d.ts.map +1 -0
  80. package/dist/src/fs/package/PackageModule.js +135 -62
  81. package/dist/src/fs/package/PackageModule.js.map +1 -0
  82. package/dist/src/history/MessageHistory.d.ts +17 -0
  83. package/dist/src/history/MessageHistory.d.ts.map +1 -0
  84. package/dist/src/history/MessageHistory.js +25 -22
  85. package/dist/src/history/MessageHistory.js.map +1 -0
  86. package/dist/src/history/MessageModerator.d.ts +5 -0
  87. package/dist/src/history/MessageModerator.d.ts.map +1 -0
  88. package/dist/src/history/MessageModerator.js +1 -0
  89. package/dist/src/history/MessageModerator.js.map +1 -0
  90. package/dist/src/template/ConversationTemplate.d.ts +12 -0
  91. package/dist/src/template/ConversationTemplate.d.ts.map +1 -0
  92. package/dist/src/template/ConversationTemplate.js +1 -0
  93. package/dist/src/template/ConversationTemplate.js.map +1 -0
  94. package/dist/src/template/ConversationTemplateFunctions.d.ts +44 -0
  95. package/dist/src/template/ConversationTemplateFunctions.d.ts.map +1 -0
  96. package/dist/src/template/ConversationTemplateFunctions.js +39 -4
  97. package/dist/src/template/ConversationTemplateFunctions.js.map +1 -0
  98. package/dist/src/template/ConversationTemplateModule.d.ts +65 -0
  99. package/dist/src/template/ConversationTemplateModule.d.ts.map +1 -0
  100. package/dist/src/template/ConversationTemplateModule.js +92 -47
  101. package/dist/src/template/ConversationTemplateModule.js.map +1 -0
  102. package/dist/src/template/createApp/CreateAppTemplate.d.ts +3 -0
  103. package/dist/src/template/createApp/CreateAppTemplate.d.ts.map +1 -0
  104. package/dist/src/template/createApp/CreateAppTemplate.js +44 -14
  105. package/dist/src/template/createApp/CreateAppTemplate.js.map +1 -0
  106. package/dist/src/template/createCode/CreateCodeConversationTemplate.d.ts +3 -0
  107. package/dist/src/template/createCode/CreateCodeConversationTemplate.d.ts.map +1 -0
  108. package/dist/src/template/createCode/CreateCodeConversationTemplate.js +56 -26
  109. package/dist/src/template/createCode/CreateCodeConversationTemplate.js.map +1 -0
  110. package/dist/src/template/createPackage/CreatePackageConversationTemplate.d.ts +3 -0
  111. package/dist/src/template/createPackage/CreatePackageConversationTemplate.d.ts.map +1 -0
  112. package/dist/src/template/createPackage/CreatePackageConversationTemplate.js +63 -26
  113. package/dist/src/template/createPackage/CreatePackageConversationTemplate.js.map +1 -0
  114. package/dist/test/createKeywordFilesIndex.test.d.ts +2 -0
  115. package/dist/test/createKeywordFilesIndex.test.d.ts.map +1 -0
  116. package/dist/test/createKeywordFilesIndex.test.js +37 -6
  117. package/dist/test/createKeywordFilesIndex.test.js.map +1 -0
  118. package/dist/test/openai/openai.generateList.test.d.ts +2 -0
  119. package/dist/test/openai/openai.generateList.test.d.ts.map +1 -0
  120. package/dist/test/openai/openai.generateList.test.js +43 -5
  121. package/dist/test/openai/openai.generateList.test.js.map +1 -0
  122. package/dist/test/openai/openai.parseCodeFromMarkdown.test.d.ts +2 -0
  123. package/dist/test/openai/openai.parseCodeFromMarkdown.test.d.ts.map +1 -0
  124. package/dist/test/openai/openai.parseCodeFromMarkdown.test.js +11 -10
  125. package/dist/test/openai/openai.parseCodeFromMarkdown.test.js.map +1 -0
  126. package/dist/test/repo/repo.test.d.ts +2 -0
  127. package/dist/test/repo/repo.test.d.ts.map +1 -0
  128. package/dist/test/repo/repo.test.js +33 -4
  129. package/dist/test/repo/repo.test.js.map +1 -0
  130. package/package.json +4 -3
  131. package/tsconfig.json +20 -106
  132. package/dist/jest.config.js +0 -10
  133. package/dist/src/template/createPackage/jest.config.js +0 -10
  134. package/dist/test/setup.js +0 -1
@@ -8,169 +8,253 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
8
8
  step((generator = generator.apply(thisArg, _arguments || [])).next());
9
9
  });
10
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
+ };
11
38
  Object.defineProperty(exports, "__esModule", { value: true });
12
39
  exports.OpenAi = exports.DEFAULT_MODEL = void 0;
13
- const openai_1 = require("openai");
14
- const util_1 = require("@proteinjs/util");
15
- const MessageHistory_1 = require("./history/MessageHistory");
40
+ var openai_1 = require("openai");
41
+ var util_1 = require("@proteinjs/util");
42
+ var MessageHistory_1 = require("./history/MessageHistory");
16
43
  function delay(ms) {
17
- return new Promise(resolve => setTimeout(resolve, ms));
44
+ return new Promise(function (resolve) { return setTimeout(resolve, ms); });
18
45
  }
19
46
  exports.DEFAULT_MODEL = 'gpt-3.5-turbo';
20
- class OpenAi {
21
- static generateResponse(messages, model, history, functions, messageModerators, logLevel = 'info') {
22
- return __awaiter(this, void 0, void 0, function* () {
23
- const logger = new util_1.Logger('OpenAi.generateResponse', logLevel);
24
- const messageParams = messages.map(message => { return { role: 'user', content: message }; });
25
- if (history)
26
- history.push(messageParams);
27
- let messageParamsWithHistory = history ? history : new MessageHistory_1.MessageHistory().push(messageParams);
28
- if (messageModerators)
29
- messageParamsWithHistory = OpenAi.moderateHistory(messageParamsWithHistory, messageModerators);
30
- const response = yield OpenAi.executeRequest(messageParamsWithHistory, logLevel, functions, model);
31
- const responseMessage = response.choices[0].message;
32
- if (responseMessage.function_call) {
33
- messageParamsWithHistory.push([responseMessage]);
34
- const functionReturnMessage = yield this.callFunction(logLevel, responseMessage.function_call, functions);
35
- if (functionReturnMessage)
36
- messageParamsWithHistory.push([functionReturnMessage]);
37
- return yield this.generateResponse([], model, messageParamsWithHistory, functions, messageModerators, logLevel);
38
- }
39
- const responseText = responseMessage.content;
40
- if (!responseText) {
41
- logger.error(`Received response: ${JSON.stringify(response)}`);
42
- throw new Error(`Response was empty for messages: ${messages.join('\n')}`);
43
- }
44
- messageParamsWithHistory.push([responseMessage]);
45
- return responseText;
46
- });
47
+ var OpenAi = /** @class */ (function () {
48
+ function OpenAi() {
47
49
  }
48
- static moderateHistory(history, messageModerators) {
49
- for (let messageModerator of messageModerators)
50
+ OpenAi.generateResponse = function (messages, model, history, functions, messageModerators, logLevel) {
51
+ if (logLevel === void 0) { logLevel = 'info'; }
52
+ return __awaiter(this, void 0, void 0, function () {
53
+ var logger, messageParams, messageParamsWithHistory, response, responseMessage, functionReturnMessage, responseText;
54
+ return __generator(this, function (_a) {
55
+ switch (_a.label) {
56
+ case 0:
57
+ logger = new util_1.Logger('OpenAi.generateResponse', logLevel);
58
+ messageParams = messages.map(function (message) { return { role: 'user', content: message }; });
59
+ if (history)
60
+ history.push(messageParams);
61
+ messageParamsWithHistory = history ? history : new MessageHistory_1.MessageHistory().push(messageParams);
62
+ if (messageModerators)
63
+ messageParamsWithHistory = OpenAi.moderateHistory(messageParamsWithHistory, messageModerators);
64
+ return [4 /*yield*/, OpenAi.executeRequest(messageParamsWithHistory, logLevel, functions, model)];
65
+ case 1:
66
+ response = _a.sent();
67
+ responseMessage = response.choices[0].message;
68
+ if (!responseMessage.function_call) return [3 /*break*/, 4];
69
+ messageParamsWithHistory.push([responseMessage]);
70
+ return [4 /*yield*/, this.callFunction(logLevel, responseMessage.function_call, functions)];
71
+ case 2:
72
+ functionReturnMessage = _a.sent();
73
+ if (functionReturnMessage)
74
+ messageParamsWithHistory.push([functionReturnMessage]);
75
+ return [4 /*yield*/, this.generateResponse([], model, messageParamsWithHistory, functions, messageModerators, logLevel)];
76
+ case 3: return [2 /*return*/, _a.sent()];
77
+ case 4:
78
+ responseText = responseMessage.content;
79
+ if (!responseText) {
80
+ logger.error("Received response: ".concat(JSON.stringify(response)));
81
+ throw new Error("Response was empty for messages: ".concat(messages.join('\n')));
82
+ }
83
+ messageParamsWithHistory.push([responseMessage]);
84
+ return [2 /*return*/, responseText];
85
+ }
86
+ });
87
+ });
88
+ };
89
+ OpenAi.moderateHistory = function (history, messageModerators) {
90
+ for (var _i = 0, messageModerators_1 = messageModerators; _i < messageModerators_1.length; _i++) {
91
+ var messageModerator = messageModerators_1[_i];
50
92
  history.setMessages(messageModerator.observe(history.getMessages()));
93
+ }
51
94
  return history;
52
- }
53
- static executeRequest(messageParamsWithHistory, logLevel, functions, model) {
54
- return __awaiter(this, void 0, void 0, function* () {
55
- const logger = new util_1.Logger('OpenAi.executeRequest', logLevel);
56
- const openaiApi = new openai_1.OpenAI();
57
- let response;
58
- try {
59
- const latestMessage = messageParamsWithHistory.getMessages()[messageParamsWithHistory.getMessages().length - 1];
60
- if (latestMessage.content)
61
- logger.info(`Sending request: ${latestMessage.content}`);
62
- else if (latestMessage.role == 'function')
63
- logger.info(`Sending request: returning output of ${latestMessage.name} function`);
64
- else
65
- logger.info(`Sending request`);
66
- logger.debug(`Sending messages: ${JSON.stringify(messageParamsWithHistory.getMessages(), null, 2)}`, true);
67
- response = yield openaiApi.chat.completions.create({
68
- model: model ? model : exports.DEFAULT_MODEL,
69
- temperature: 0,
70
- messages: messageParamsWithHistory.getMessages(),
71
- functions: functions === null || functions === void 0 ? void 0 : functions.map(f => f.definition),
72
- });
73
- const responseMessage = response.choices[0].message;
74
- if (responseMessage.content)
75
- logger.info(`Received response: ${responseMessage.content}`);
76
- else if (responseMessage.function_call)
77
- logger.info(`Received response: call ${responseMessage.function_call.name} function`);
78
- else
79
- logger.info(`Received response`);
80
- if (response.usage)
81
- logger.info(JSON.stringify(response.usage));
82
- else
83
- logger.info(JSON.stringify(`Usage data missing`));
84
- }
85
- catch (error) {
86
- logger.info(`Received error response, error type: ${error.type}`);
87
- if (typeof error.status !== 'undefined' && error.status == 429) {
88
- if (error.type == 'tokens' && typeof error.headers['x-ratelimit-reset-tokens'] === 'string') {
89
- const waitTime = parseInt(error.headers['x-ratelimit-reset-tokens']);
90
- const remainingTokens = error.headers['x-ratelimit-remaining-tokens'];
91
- const delayMs = 15000;
92
- logger.warn(`Waiting to retry in ${delayMs / 1000}s, token reset in: ${waitTime}s, remaining tokens: ${remainingTokens}`);
93
- yield delay(delayMs);
94
- return yield OpenAi.executeRequest(messageParamsWithHistory, logLevel, functions, model);
95
- }
95
+ };
96
+ OpenAi.executeRequest = function (messageParamsWithHistory, logLevel, functions, model) {
97
+ return __awaiter(this, void 0, void 0, function () {
98
+ var logger, openaiApi, response, latestMessage, responseMessage, error_1, waitTime, remainingTokens, delayMs;
99
+ return __generator(this, function (_a) {
100
+ switch (_a.label) {
101
+ case 0:
102
+ logger = new util_1.Logger('OpenAi.executeRequest', logLevel);
103
+ openaiApi = new openai_1.OpenAI();
104
+ _a.label = 1;
105
+ case 1:
106
+ _a.trys.push([1, 3, , 7]);
107
+ latestMessage = messageParamsWithHistory.getMessages()[messageParamsWithHistory.getMessages().length - 1];
108
+ if (latestMessage.content)
109
+ logger.info("Sending request: ".concat(latestMessage.content));
110
+ else if (latestMessage.role == 'function')
111
+ logger.info("Sending request: returning output of ".concat(latestMessage.name, " function"));
112
+ else
113
+ logger.info("Sending request");
114
+ logger.debug("Sending messages: ".concat(JSON.stringify(messageParamsWithHistory.getMessages(), null, 2)), true);
115
+ return [4 /*yield*/, openaiApi.chat.completions.create({
116
+ model: model ? model : exports.DEFAULT_MODEL,
117
+ temperature: 0,
118
+ messages: messageParamsWithHistory.getMessages(),
119
+ functions: functions === null || functions === void 0 ? void 0 : functions.map(function (f) { return f.definition; }),
120
+ })];
121
+ case 2:
122
+ response = _a.sent();
123
+ responseMessage = response.choices[0].message;
124
+ if (responseMessage.content)
125
+ logger.info("Received response: ".concat(responseMessage.content));
126
+ else if (responseMessage.function_call)
127
+ logger.info("Received response: call ".concat(responseMessage.function_call.name, " function"));
128
+ else
129
+ logger.info("Received response");
130
+ if (response.usage)
131
+ logger.info(JSON.stringify(response.usage));
132
+ else
133
+ logger.info(JSON.stringify("Usage data missing"));
134
+ return [3 /*break*/, 7];
135
+ case 3:
136
+ error_1 = _a.sent();
137
+ logger.info("Received error response, error type: ".concat(error_1.type));
138
+ if (!(typeof error_1.status !== 'undefined' && error_1.status == 429)) return [3 /*break*/, 6];
139
+ if (!(error_1.type == 'tokens' && typeof error_1.headers['x-ratelimit-reset-tokens'] === 'string')) return [3 /*break*/, 6];
140
+ waitTime = parseInt(error_1.headers['x-ratelimit-reset-tokens']);
141
+ remainingTokens = error_1.headers['x-ratelimit-remaining-tokens'];
142
+ delayMs = 15000;
143
+ logger.warn("Waiting to retry in ".concat(delayMs / 1000, "s, token reset in: ").concat(waitTime, "s, remaining tokens: ").concat(remainingTokens));
144
+ return [4 /*yield*/, delay(delayMs)];
145
+ case 4:
146
+ _a.sent();
147
+ return [4 /*yield*/, OpenAi.executeRequest(messageParamsWithHistory, logLevel, functions, model)];
148
+ case 5: return [2 /*return*/, _a.sent()];
149
+ case 6: throw error_1;
150
+ case 7: return [2 /*return*/, response];
96
151
  }
97
- throw error;
98
- }
99
- return response;
152
+ });
100
153
  });
101
- }
102
- static callFunction(logLevel, functionCall, functions) {
103
- return __awaiter(this, void 0, void 0, function* () {
104
- const logger = new util_1.Logger('OpenAi.callFunction', logLevel);
105
- if (!functions) {
106
- const warning = `Assistant attempted to call a function when no functions were provided`;
107
- logger.warn(warning);
108
- const message = { role: 'user', content: warning };
109
- return message;
110
- }
111
- functionCall.name = functionCall.name.split('.').pop();
112
- const f = functions.find(f => f.definition.name === functionCall.name);
113
- if (!f) {
114
- const warning = `Assistant attempted to call nonexistent function: ${functionCall.name}`;
115
- logger.warn(warning);
116
- const message = { role: 'user', content: warning };
117
- return message;
118
- }
119
- let returnObject = null;
120
- try {
121
- logger.info(`Assistant calling function: ${f.definition.name}(${functionCall.arguments})`);
122
- returnObject = JSON.stringify(yield f.call(JSON.parse(functionCall.arguments)));
123
- logger.info(`Assistant called function: ${f.definition.name}(${functionCall.arguments}) => ${returnObject}`, 1000);
124
- }
125
- catch (error) {
126
- logger.error(error.message);
127
- }
128
- if (!returnObject)
129
- return;
130
- return {
131
- role: 'function',
132
- name: f.definition.name,
133
- content: returnObject,
134
- };
154
+ };
155
+ OpenAi.callFunction = function (logLevel, functionCall, functions) {
156
+ return __awaiter(this, void 0, void 0, function () {
157
+ var logger, warning, message, f, warning, message, returnObject, _a, _b, error_2;
158
+ return __generator(this, function (_c) {
159
+ switch (_c.label) {
160
+ case 0:
161
+ logger = new util_1.Logger('OpenAi.callFunction', logLevel);
162
+ if (!functions) {
163
+ warning = "Assistant attempted to call a function when no functions were provided";
164
+ logger.warn(warning);
165
+ message = { role: 'user', content: warning };
166
+ return [2 /*return*/, message];
167
+ }
168
+ functionCall.name = functionCall.name.split('.').pop();
169
+ f = functions.find(function (f) { return f.definition.name === functionCall.name; });
170
+ if (!f) {
171
+ warning = "Assistant attempted to call nonexistent function: ".concat(functionCall.name);
172
+ logger.warn(warning);
173
+ message = { role: 'user', content: warning };
174
+ return [2 /*return*/, message];
175
+ }
176
+ returnObject = null;
177
+ _c.label = 1;
178
+ case 1:
179
+ _c.trys.push([1, 3, , 4]);
180
+ logger.info("Assistant calling function: ".concat(f.definition.name, "(").concat(functionCall.arguments, ")"));
181
+ _b = (_a = JSON).stringify;
182
+ return [4 /*yield*/, f.call(JSON.parse(functionCall.arguments))];
183
+ case 2:
184
+ returnObject = _b.apply(_a, [_c.sent()]);
185
+ logger.info("Assistant called function: ".concat(f.definition.name, "(").concat(functionCall.arguments, ") => ").concat(returnObject), 1000);
186
+ return [3 /*break*/, 4];
187
+ case 3:
188
+ error_2 = _c.sent();
189
+ logger.error(error_2.message);
190
+ return [3 /*break*/, 4];
191
+ case 4:
192
+ if (!returnObject)
193
+ return [2 /*return*/];
194
+ return [2 /*return*/, {
195
+ role: 'function',
196
+ name: f.definition.name,
197
+ content: returnObject,
198
+ }];
199
+ }
200
+ });
135
201
  });
136
- }
137
- static generateCode(messages, model, history, functions, messageModerators, includeSystemMessages = true, logLevel = 'info') {
138
- return __awaiter(this, void 0, void 0, function* () {
139
- const systemMessages = [
140
- { role: 'system', content: 'Return only the code and exclude example usage, markdown, explanations, comments and notes.' },
141
- { role: 'system', content: `Write code in typescript.` },
142
- { role: 'system', content: `Declare explicit types for all function parameters.` },
143
- { role: 'system', content: 'Export all functions and objects generated.' },
144
- { role: 'system', content: 'Do not omit function implementations.' },
145
- ];
146
- const resolvedHistory = history ?
147
- includeSystemMessages ?
148
- history.push(systemMessages)
149
- :
150
- history
151
- :
152
- includeSystemMessages ?
153
- new MessageHistory_1.MessageHistory().push(systemMessages)
154
- :
155
- undefined;
156
- const code = yield this.generateResponse(messages, model, resolvedHistory, functions, messageModerators, logLevel);
157
- return this.parseCodeFromMarkdown(code);
202
+ };
203
+ OpenAi.generateCode = function (messages, model, history, functions, messageModerators, includeSystemMessages, logLevel) {
204
+ if (includeSystemMessages === void 0) { includeSystemMessages = true; }
205
+ if (logLevel === void 0) { logLevel = 'info'; }
206
+ return __awaiter(this, void 0, void 0, function () {
207
+ var systemMessages, resolvedHistory, code;
208
+ return __generator(this, function (_a) {
209
+ switch (_a.label) {
210
+ case 0:
211
+ systemMessages = [
212
+ { role: 'system', content: 'Return only the code and exclude example usage, markdown, explanations, comments and notes.' },
213
+ { role: 'system', content: "Write code in typescript." },
214
+ { role: 'system', content: "Declare explicit types for all function parameters." },
215
+ { role: 'system', content: 'Export all functions and objects generated.' },
216
+ { role: 'system', content: 'Do not omit function implementations.' },
217
+ ];
218
+ resolvedHistory = history ?
219
+ includeSystemMessages ?
220
+ history.push(systemMessages)
221
+ :
222
+ history
223
+ :
224
+ includeSystemMessages ?
225
+ new MessageHistory_1.MessageHistory().push(systemMessages)
226
+ :
227
+ undefined;
228
+ return [4 /*yield*/, this.generateResponse(messages, model, resolvedHistory, functions, messageModerators, logLevel)];
229
+ case 1:
230
+ code = _a.sent();
231
+ return [2 /*return*/, this.parseCodeFromMarkdown(code)];
232
+ }
233
+ });
158
234
  });
159
- }
160
- static updateCode(code, description, model, history, functions, messageModerators, includeSystemMessages = true, logLevel = 'info') {
161
- return __awaiter(this, void 0, void 0, function* () {
162
- return yield this.generateCode([this.updateCodeDescription(code, description)], model, history, functions, messageModerators, includeSystemMessages, logLevel);
235
+ };
236
+ OpenAi.updateCode = function (code, description, model, history, functions, messageModerators, includeSystemMessages, logLevel) {
237
+ if (includeSystemMessages === void 0) { includeSystemMessages = true; }
238
+ if (logLevel === void 0) { logLevel = 'info'; }
239
+ return __awaiter(this, void 0, void 0, function () {
240
+ return __generator(this, function (_a) {
241
+ switch (_a.label) {
242
+ case 0: return [4 /*yield*/, this.generateCode([this.updateCodeDescription(code, description)], model, history, functions, messageModerators, includeSystemMessages, logLevel)];
243
+ case 1: return [2 /*return*/, _a.sent()];
244
+ }
245
+ });
163
246
  });
164
- }
165
- static updateCodeDescription(code, description) {
166
- return `Update this code:\n\n${code}\n\n${description}`;
167
- }
168
- static parseCodeFromMarkdown(code) {
247
+ };
248
+ OpenAi.updateCodeDescription = function (code, description) {
249
+ return "Update this code:\n\n".concat(code, "\n\n").concat(description);
250
+ };
251
+ OpenAi.parseCodeFromMarkdown = function (code) {
169
252
  if (!code.match(/```([\s\S]+?)```/g))
170
253
  return code;
171
- const filteredLines = [];
172
- let inCodeBlock = false;
173
- for (let line of code.split('\n')) {
254
+ var filteredLines = [];
255
+ var inCodeBlock = false;
256
+ for (var _i = 0, _a = code.split('\n'); _i < _a.length; _i++) {
257
+ var line = _a[_i];
174
258
  if (line.startsWith('```')) {
175
259
  inCodeBlock = !inCodeBlock;
176
260
  if (!inCodeBlock)
@@ -184,26 +268,38 @@ class OpenAi {
184
268
  // we only want spaces between code blocks
185
269
  filteredLines.pop();
186
270
  return filteredLines.join('\n');
187
- }
188
- static generateList(messages, model, history, functions, messageModerators, includeSystemMessages = true, logLevel = 'info') {
189
- return __awaiter(this, void 0, void 0, function* () {
190
- const systemMessages = [
191
- { role: 'system', content: 'Return only the list and exclude example usage, markdown and all explanations, comments and notes.' },
192
- { role: 'system', content: 'Separate each item in the list by a ;' },
193
- ];
194
- const resolvedHistory = history ?
195
- includeSystemMessages ?
196
- history.push(systemMessages)
197
- :
198
- history
199
- :
200
- includeSystemMessages ?
201
- new MessageHistory_1.MessageHistory().push(systemMessages)
202
- :
203
- undefined;
204
- const list = yield this.generateResponse(messages, model, resolvedHistory, functions, messageModerators, logLevel);
205
- return list.split(';').map(item => item.trim());
271
+ };
272
+ OpenAi.generateList = function (messages, model, history, functions, messageModerators, includeSystemMessages, logLevel) {
273
+ if (includeSystemMessages === void 0) { includeSystemMessages = true; }
274
+ if (logLevel === void 0) { logLevel = 'info'; }
275
+ return __awaiter(this, void 0, void 0, function () {
276
+ var systemMessages, resolvedHistory, list;
277
+ return __generator(this, function (_a) {
278
+ switch (_a.label) {
279
+ case 0:
280
+ systemMessages = [
281
+ { role: 'system', content: 'Return only the list and exclude example usage, markdown and all explanations, comments and notes.' },
282
+ { role: 'system', content: 'Separate each item in the list by a ;' },
283
+ ];
284
+ resolvedHistory = history ?
285
+ includeSystemMessages ?
286
+ history.push(systemMessages)
287
+ :
288
+ history
289
+ :
290
+ includeSystemMessages ?
291
+ new MessageHistory_1.MessageHistory().push(systemMessages)
292
+ :
293
+ undefined;
294
+ return [4 /*yield*/, this.generateResponse(messages, model, resolvedHistory, functions, messageModerators, logLevel)];
295
+ case 1:
296
+ list = _a.sent();
297
+ return [2 /*return*/, list.split(';').map(function (item) { return item.trim(); })];
298
+ }
299
+ });
206
300
  });
207
- }
208
- }
301
+ };
302
+ return OpenAi;
303
+ }());
209
304
  exports.OpenAi = OpenAi;
305
+ //# sourceMappingURL=OpenAi.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"OpenAi.js","sourceRoot":"","sources":["../../src/OpenAi.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,7 @@
1
+ import { Sentence } from './Sentence';
2
+ export declare class Paragraph {
3
+ private sentences;
4
+ add(sentence: Sentence): this;
5
+ toString(): string;
6
+ }
7
+ //# sourceMappingURL=Paragraph.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Paragraph.d.ts","sourceRoot":"","sources":["../../src/Paragraph.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAEtC,qBAAa,SAAS;IACpB,OAAO,CAAC,SAAS,CAAkB;IAEnC,GAAG,CAAC,QAAQ,EAAE,QAAQ;IAKtB,QAAQ,IAAI,MAAM;CAMnB"}
@@ -1,18 +1,20 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.Paragraph = void 0;
4
- class Paragraph {
5
- constructor() {
4
+ var Paragraph = /** @class */ (function () {
5
+ function Paragraph() {
6
6
  this.sentences = [];
7
7
  }
8
- add(sentence) {
8
+ Paragraph.prototype.add = function (sentence) {
9
9
  this.sentences.push(sentence);
10
10
  return this;
11
- }
12
- toString() {
11
+ };
12
+ Paragraph.prototype.toString = function () {
13
13
  if (this.sentences.length == 0)
14
14
  return '';
15
15
  return this.sentences.join(' ');
16
- }
17
- }
16
+ };
17
+ return Paragraph;
18
+ }());
18
19
  exports.Paragraph = Paragraph;
20
+ //# sourceMappingURL=Paragraph.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Paragraph.js","sourceRoot":"","sources":["../../src/Paragraph.ts"],"names":[],"mappings":";;;AAEA;IAAA;QACU,cAAS,GAAe,EAAE,CAAC;IAarC,CAAC;IAXC,uBAAG,GAAH,UAAI,QAAkB;QACpB,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QAC9B,OAAO,IAAI,CAAC;IACd,CAAC;IAED,4BAAQ,GAAR;QACE,IAAI,IAAI,CAAC,SAAS,CAAC,MAAM,IAAI,CAAC;YAC5B,OAAO,EAAE,CAAC;QAEZ,OAAO,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IAClC,CAAC;IACH,gBAAC;AAAD,CAAC,AAdD,IAcC;AAdY,8BAAS"}
@@ -0,0 +1,6 @@
1
+ export declare class Sentence {
2
+ private lines;
3
+ add(line: string): this;
4
+ toString(): string;
5
+ }
6
+ //# sourceMappingURL=Sentence.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Sentence.d.ts","sourceRoot":"","sources":["../../src/Sentence.ts"],"names":[],"mappings":"AACA,qBAAa,QAAQ;IACnB,OAAO,CAAC,KAAK,CAAgB;IAE7B,GAAG,CAAC,IAAI,EAAE,MAAM;IAKhB,QAAQ,IAAI,MAAM;CAUnB"}
@@ -2,21 +2,23 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.Sentence = void 0;
4
4
  // Alina was here
5
- class Sentence {
6
- constructor() {
5
+ var Sentence = /** @class */ (function () {
6
+ function Sentence() {
7
7
  this.lines = [];
8
8
  }
9
- add(line) {
9
+ Sentence.prototype.add = function (line) {
10
10
  this.lines.push(line);
11
11
  return this;
12
- }
13
- toString() {
12
+ };
13
+ Sentence.prototype.toString = function () {
14
14
  if (this.lines.length == 0)
15
15
  return '';
16
- let sentence = this.lines.join(', ');
16
+ var sentence = this.lines.join(', ');
17
17
  if (sentence.lastIndexOf('.') != (sentence.length - 1))
18
18
  sentence += '.';
19
19
  return sentence;
20
- }
21
- }
20
+ };
21
+ return Sentence;
22
+ }());
22
23
  exports.Sentence = Sentence;
24
+ //# sourceMappingURL=Sentence.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Sentence.js","sourceRoot":"","sources":["../../src/Sentence.ts"],"names":[],"mappings":";;;AAAA,iBAAiB;AACjB;IAAA;QACU,UAAK,GAAa,EAAE,CAAC;IAiB/B,CAAC;IAfC,sBAAG,GAAH,UAAI,IAAY;QACd,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACtB,OAAO,IAAI,CAAC;IACd,CAAC;IAED,2BAAQ,GAAR;QACE,IAAI,IAAI,CAAC,KAAK,CAAC,MAAM,IAAI,CAAC;YACxB,OAAO,EAAE,CAAC;QAEZ,IAAI,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACrC,IAAI,QAAQ,CAAC,WAAW,CAAC,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC;YACpD,QAAQ,IAAI,GAAG,CAAC;QAElB,OAAO,QAAQ,CAAC;IAClB,CAAC;IACH,eAAC;AAAD,CAAC,AAlBD,IAkBC;AAlBY,4BAAQ"}
@@ -0,0 +1,24 @@
1
+ import { Conversation } from '../Conversation';
2
+ export type SourceFile = {
3
+ relativePath: string;
4
+ code: Code;
5
+ };
6
+ export type Import = {
7
+ moduleNames: string[];
8
+ importPathFromGeneratedFile: string;
9
+ sourceFilePath: string;
10
+ };
11
+ export type CodeArgs = {
12
+ conversation: Conversation;
13
+ description: string[];
14
+ imports?: Import[];
15
+ };
16
+ export declare class Code {
17
+ private args;
18
+ constructor(args: CodeArgs);
19
+ generate(): Promise<string>;
20
+ private addImports;
21
+ private declarationMessage;
22
+ private importMessage;
23
+ }
24
+ //# sourceMappingURL=Code.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Code.d.ts","sourceRoot":"","sources":["../../../src/code_template/Code.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAG/C,MAAM,MAAM,UAAU,GAAG;IACvB,YAAY,EAAE,MAAM,CAAC;IACrB,IAAI,EAAE,IAAI,CAAA;CACX,CAAA;AAED,MAAM,MAAM,MAAM,GAAG;IACnB,WAAW,EAAE,MAAM,EAAE,CAAC;IACtB,2BAA2B,EAAE,MAAM,CAAC;IACpC,cAAc,EAAE,MAAM,CAAC;CACxB,CAAA;AAED,MAAM,MAAM,QAAQ,GAAG;IACrB,YAAY,EAAE,YAAY,CAAC;IAC3B,WAAW,EAAE,MAAM,EAAE,CAAC;IACtB,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;CACpB,CAAA;AAED,qBAAa,IAAI;IACf,OAAO,CAAC,IAAI,CAAW;gBAEX,IAAI,EAAE,QAAQ;IAIpB,QAAQ,IAAI,OAAO,CAAC,MAAM,CAAC;IAOjC,OAAO,CAAC,UAAU;IAOlB,OAAO,CAAC,kBAAkB;IAM1B,OAAO,CAAC,aAAa;CAItB"}