@proteinjs/conversation 1.0.5 → 1.0.7

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 (152) hide show
  1. package/.eslintrc.js +20 -0
  2. package/.prettierrc +8 -0
  3. package/CHANGELOG.md +7 -4
  4. package/LICENSE +21 -0
  5. package/dist/index.d.ts +1 -1
  6. package/dist/index.js +40 -28
  7. package/dist/src/CodegenConversation.d.ts +11 -11
  8. package/dist/src/CodegenConversation.d.ts.map +1 -1
  9. package/dist/src/CodegenConversation.js +294 -180
  10. package/dist/src/CodegenConversation.js.map +1 -1
  11. package/dist/src/Conversation.d.ts +52 -49
  12. package/dist/src/Conversation.d.ts.map +1 -1
  13. package/dist/src/Conversation.js +480 -274
  14. package/dist/src/Conversation.js.map +1 -1
  15. package/dist/src/ConversationModule.d.ts +6 -6
  16. package/dist/src/ConversationModule.js +3 -3
  17. package/dist/src/Function.d.ts +4 -4
  18. package/dist/src/Function.d.ts.map +1 -1
  19. package/dist/src/Function.js +3 -3
  20. package/dist/src/OpenAi.d.ts +42 -10
  21. package/dist/src/OpenAi.d.ts.map +1 -1
  22. package/dist/src/OpenAi.js +496 -289
  23. package/dist/src/OpenAi.js.map +1 -1
  24. package/dist/src/Paragraph.d.ts +4 -4
  25. package/dist/src/Paragraph.d.ts.map +1 -1
  26. package/dist/src/Paragraph.js +17 -16
  27. package/dist/src/Paragraph.js.map +1 -1
  28. package/dist/src/Sentence.d.ts +4 -4
  29. package/dist/src/Sentence.d.ts.map +1 -1
  30. package/dist/src/Sentence.js +21 -19
  31. package/dist/src/Sentence.js.map +1 -1
  32. package/dist/src/code_template/Code.d.ts +15 -15
  33. package/dist/src/code_template/Code.d.ts.map +1 -1
  34. package/dist/src/code_template/Code.js +167 -69
  35. package/dist/src/code_template/Code.js.map +1 -1
  36. package/dist/src/code_template/CodeTemplate.d.ts +11 -11
  37. package/dist/src/code_template/CodeTemplate.d.ts.map +1 -1
  38. package/dist/src/code_template/CodeTemplate.js +169 -79
  39. package/dist/src/code_template/CodeTemplate.js.map +1 -1
  40. package/dist/src/code_template/CodeTemplateModule.d.ts +6 -6
  41. package/dist/src/code_template/CodeTemplateModule.js +28 -26
  42. package/dist/src/code_template/Repo.d.ts +34 -38
  43. package/dist/src/code_template/Repo.d.ts.map +1 -1
  44. package/dist/src/code_template/Repo.js +291 -191
  45. package/dist/src/code_template/Repo.js.map +1 -1
  46. package/dist/src/fs/conversation_fs/ConversationFsModerator.d.ts +12 -12
  47. package/dist/src/fs/conversation_fs/ConversationFsModerator.d.ts.map +1 -1
  48. package/dist/src/fs/conversation_fs/ConversationFsModerator.js +111 -98
  49. package/dist/src/fs/conversation_fs/ConversationFsModerator.js.map +1 -1
  50. package/dist/src/fs/conversation_fs/ConversationFsModule.d.ts +11 -11
  51. package/dist/src/fs/conversation_fs/ConversationFsModule.d.ts.map +1 -1
  52. package/dist/src/fs/conversation_fs/ConversationFsModule.js +204 -99
  53. package/dist/src/fs/conversation_fs/ConversationFsModule.js.map +1 -1
  54. package/dist/src/fs/conversation_fs/FsFunctions.d.ts +58 -62
  55. package/dist/src/fs/conversation_fs/FsFunctions.d.ts.map +1 -1
  56. package/dist/src/fs/conversation_fs/FsFunctions.js +414 -266
  57. package/dist/src/fs/conversation_fs/FsFunctions.js.map +1 -1
  58. package/dist/src/fs/git/GitModule.d.ts +8 -8
  59. package/dist/src/fs/git/GitModule.d.ts.map +1 -1
  60. package/dist/src/fs/git/GitModule.js +163 -74
  61. package/dist/src/fs/git/GitModule.js.map +1 -1
  62. package/dist/src/fs/keyword_to_files_index/KeywordToFilesIndexFunctions.d.ts +16 -18
  63. package/dist/src/fs/keyword_to_files_index/KeywordToFilesIndexFunctions.d.ts.map +1 -1
  64. package/dist/src/fs/keyword_to_files_index/KeywordToFilesIndexFunctions.js +158 -58
  65. package/dist/src/fs/keyword_to_files_index/KeywordToFilesIndexFunctions.js.map +1 -1
  66. package/dist/src/fs/keyword_to_files_index/KeywordToFilesIndexModule.d.ts +27 -26
  67. package/dist/src/fs/keyword_to_files_index/KeywordToFilesIndexModule.d.ts.map +1 -1
  68. package/dist/src/fs/keyword_to_files_index/KeywordToFilesIndexModule.js +234 -133
  69. package/dist/src/fs/keyword_to_files_index/KeywordToFilesIndexModule.js.map +1 -1
  70. package/dist/src/fs/package/PackageFunctions.d.ts +54 -60
  71. package/dist/src/fs/package/PackageFunctions.d.ts.map +1 -1
  72. package/dist/src/fs/package/PackageFunctions.js +366 -223
  73. package/dist/src/fs/package/PackageFunctions.js.map +1 -1
  74. package/dist/src/fs/package/PackageModule.d.ts +24 -24
  75. package/dist/src/fs/package/PackageModule.d.ts.map +1 -1
  76. package/dist/src/fs/package/PackageModule.js +292 -163
  77. package/dist/src/fs/package/PackageModule.js.map +1 -1
  78. package/dist/src/history/MessageHistory.d.ts +12 -12
  79. package/dist/src/history/MessageHistory.d.ts.map +1 -1
  80. package/dist/src/history/MessageHistory.js +52 -43
  81. package/dist/src/history/MessageHistory.js.map +1 -1
  82. package/dist/src/history/MessageModerator.d.ts +2 -2
  83. package/dist/src/history/MessageModerator.js +3 -3
  84. package/dist/src/template/ConversationTemplate.d.ts +8 -8
  85. package/dist/src/template/ConversationTemplate.d.ts.map +1 -1
  86. package/dist/src/template/ConversationTemplate.js +3 -3
  87. package/dist/src/template/ConversationTemplateFunctions.d.ts +33 -35
  88. package/dist/src/template/ConversationTemplateFunctions.d.ts.map +1 -1
  89. package/dist/src/template/ConversationTemplateFunctions.js +176 -75
  90. package/dist/src/template/ConversationTemplateFunctions.js.map +1 -1
  91. package/dist/src/template/ConversationTemplateModule.d.ts +51 -48
  92. package/dist/src/template/ConversationTemplateModule.d.ts.map +1 -1
  93. package/dist/src/template/ConversationTemplateModule.js +211 -114
  94. package/dist/src/template/ConversationTemplateModule.js.map +1 -1
  95. package/dist/src/template/createApp/CreateAppTemplate.d.ts +1 -1
  96. package/dist/src/template/createApp/CreateAppTemplate.js +151 -59
  97. package/dist/src/template/createCode/CreateCodeConversationTemplate.d.ts +1 -1
  98. package/dist/src/template/createCode/CreateCodeConversationTemplate.d.ts.map +1 -1
  99. package/dist/src/template/createCode/CreateCodeConversationTemplate.js +183 -74
  100. package/dist/src/template/createCode/CreateCodeConversationTemplate.js.map +1 -1
  101. package/dist/src/template/createPackage/CreatePackageConversationTemplate.d.ts +1 -1
  102. package/dist/src/template/createPackage/CreatePackageConversationTemplate.d.ts.map +1 -1
  103. package/dist/src/template/createPackage/CreatePackageConversationTemplate.js +174 -84
  104. package/dist/src/template/createPackage/CreatePackageConversationTemplate.js.map +1 -1
  105. package/dist/src/template/createPackage/tsconfig.json +11 -11
  106. package/dist/test/createKeywordFilesIndex.test.d.ts +1 -1
  107. package/dist/test/createKeywordFilesIndex.test.js +132 -41
  108. package/dist/test/createKeywordFilesIndex.test.js.map +1 -1
  109. package/dist/test/openai/openai.generateList.test.d.ts +1 -1
  110. package/dist/test/openai/openai.generateList.test.js +136 -47
  111. package/dist/test/openai/openai.generateList.test.js.map +1 -1
  112. package/dist/test/openai/openai.parseCodeFromMarkdown.test.d.ts +1 -1
  113. package/dist/test/openai/openai.parseCodeFromMarkdown.test.js +15 -10
  114. package/dist/test/openai/openai.parseCodeFromMarkdown.test.js.map +1 -1
  115. package/dist/test/repo/repo.test.d.ts +1 -1
  116. package/dist/test/repo/repo.test.js +127 -38
  117. package/dist/test/repo/repo.test.js.map +1 -1
  118. package/jest.config.js +2 -2
  119. package/package.json +11 -5
  120. package/src/CodegenConversation.ts +6 -4
  121. package/src/Conversation.ts +102 -33
  122. package/src/ConversationModule.ts +2 -2
  123. package/src/Function.ts +0 -1
  124. package/src/OpenAi.ts +128 -63
  125. package/src/Paragraph.ts +3 -2
  126. package/src/Sentence.ts +5 -3
  127. package/src/code_template/Code.ts +25 -19
  128. package/src/code_template/CodeTemplate.ts +8 -7
  129. package/src/code_template/CodeTemplateModule.ts +2 -2
  130. package/src/code_template/Repo.ts +25 -19
  131. package/src/fs/conversation_fs/ConversationFsModerator.ts +34 -20
  132. package/src/fs/conversation_fs/ConversationFsModule.ts +13 -7
  133. package/src/fs/conversation_fs/FsFunctions.ts +33 -44
  134. package/src/fs/git/GitModule.ts +2 -4
  135. package/src/fs/keyword_to_files_index/KeywordToFilesIndexFunctions.ts +31 -31
  136. package/src/fs/keyword_to_files_index/KeywordToFilesIndexModule.ts +19 -18
  137. package/src/fs/package/PackageFunctions.ts +34 -41
  138. package/src/fs/package/PackageModule.ts +33 -21
  139. package/src/history/MessageHistory.ts +7 -4
  140. package/src/history/MessageModerator.ts +1 -1
  141. package/src/template/ConversationTemplate.ts +9 -9
  142. package/src/template/ConversationTemplateFunctions.ts +8 -7
  143. package/src/template/ConversationTemplateModule.ts +24 -15
  144. package/src/template/createApp/CreateAppTemplate.ts +1 -1
  145. package/src/template/createCode/CreateCodeConversationTemplate.ts +9 -11
  146. package/src/template/createPackage/CreatePackageConversationTemplate.ts +2 -9
  147. package/src/template/createPackage/jest.config.js +2 -2
  148. package/test/createKeywordFilesIndex.test.ts +3 -3
  149. package/test/openai/openai.generateList.test.ts +5 -3
  150. package/test/openai/openai.parseCodeFromMarkdown.test.ts +10 -5
  151. package/test/repo/repo.test.ts +3 -4
  152. package/tsconfig.json +16 -20
@@ -1,21 +1,27 @@
1
1
  import { Fs } from '@proteinjs/util-node';
2
2
  import { ConversationModule, ConversationModuleFactory } from '../../ConversationModule';
3
3
  import { Function } from '../../Function';
4
- import { packageFunctions, searchLibrariesFunction, searchLibrariesFunctionName, searchPackagesFunction, searchPackagesFunctionName } from './PackageFunctions';
4
+ import {
5
+ packageFunctions,
6
+ searchLibrariesFunction,
7
+ searchLibrariesFunctionName,
8
+ searchPackagesFunction,
9
+ searchPackagesFunctionName,
10
+ } from './PackageFunctions';
5
11
  import path from 'path';
6
12
  import { searchFilesFunctionName } from '../keyword_to_files_index/KeywordToFilesIndexFunctions';
7
13
  import { readFilesFunctionName } from '../conversation_fs/FsFunctions';
8
14
 
9
15
  export type Library = {
10
- fileName: string,
11
- filePath: string,
12
- packageName: string,
13
- }
16
+ fileName: string;
17
+ filePath: string;
18
+ packageName: string;
19
+ };
14
20
 
15
21
  export type LibraryImport = {
16
- importStatements: string[],
17
- typescriptDeclaration: string,
18
- }
22
+ importStatements: string[];
23
+ typescriptDeclaration: string;
24
+ };
19
25
 
20
26
  export class PackageModule implements ConversationModule {
21
27
  private repoPath: string;
@@ -39,11 +45,7 @@ export class PackageModule implements ConversationModule {
39
45
  }
40
46
 
41
47
  getFunctions(): Function[] {
42
- return [
43
- ...packageFunctions,
44
- searchPackagesFunction(this),
45
- searchLibrariesFunction(this),
46
- ];
48
+ return [...packageFunctions, searchPackagesFunction(this), searchLibrariesFunction(this)];
47
49
  }
48
50
 
49
51
  getMessageModerators() {
@@ -56,12 +58,16 @@ export class PackageModule implements ConversationModule {
56
58
  */
57
59
  async searchPackages(keyword: string): Promise<string[]> {
58
60
  const matchingPackageJsonPaths: string[] = [];
59
- const packageJsonFilePaths = await Fs.getFilePathsMatchingGlob(this.repoPath, '**/package.json', ['**/node_modules/**', '**/dist/**']);
61
+ const packageJsonFilePaths = await Fs.getFilePathsMatchingGlob(this.repoPath, '**/package.json', [
62
+ '**/node_modules/**',
63
+ '**/dist/**',
64
+ ]);
60
65
  const packageJsonFileMap = await Fs.readFiles(packageJsonFilePaths);
61
- for (let packageJsonFilePath of Object.keys(packageJsonFileMap)) {
66
+ for (const packageJsonFilePath of Object.keys(packageJsonFileMap)) {
62
67
  const packageJson = JSON.parse(packageJsonFileMap[packageJsonFilePath]);
63
- if (packageJson.name.toLowerCase().includes(keyword.toLocaleLowerCase()))
68
+ if (packageJson.name.toLowerCase().includes(keyword.toLocaleLowerCase())) {
64
69
  matchingPackageJsonPaths.push(packageJsonFilePath);
70
+ }
65
71
  }
66
72
 
67
73
  return matchingPackageJsonPaths;
@@ -74,15 +80,21 @@ export class PackageModule implements ConversationModule {
74
80
  */
75
81
  async searchLibraries(keyword: string): Promise<Library[]> {
76
82
  const matchingLibraries: Library[] = [];
77
- const packageJsonFilePaths = await Fs.getFilePathsMatchingGlob(this.repoPath, '**/package.json', ['**/node_modules/**', '**/dist/**']);
83
+ const packageJsonFilePaths = await Fs.getFilePathsMatchingGlob(this.repoPath, '**/package.json', [
84
+ '**/node_modules/**',
85
+ '**/dist/**',
86
+ ]);
78
87
  const packageJsonFileMap = await Fs.readFiles(packageJsonFilePaths);
79
- for (let packageJsonFilePath of Object.keys(packageJsonFileMap)) {
88
+ for (const packageJsonFilePath of Object.keys(packageJsonFileMap)) {
80
89
  const packageJson = JSON.parse(packageJsonFileMap[packageJsonFilePath]);
81
90
  const packageJsonFilePathParts = packageJsonFilePath.split(path.sep);
82
91
  packageJsonFilePathParts.pop();
83
92
  const packageDirectory = packageJsonFilePathParts.join(path.sep);
84
- const srcFilePaths = await Fs.getFilePathsMatchingGlob(path.join(packageDirectory, 'src'), '**/*.ts', ['**/node_modules/**', '**/dist/**']);
85
- for (let srcFilePath of srcFilePaths) {
93
+ const srcFilePaths = await Fs.getFilePathsMatchingGlob(path.join(packageDirectory, 'src'), '**/*.ts', [
94
+ '**/node_modules/**',
95
+ '**/dist/**',
96
+ ]);
97
+ for (const srcFilePath of srcFilePaths) {
86
98
  const fileNameWithExtension = path.basename(srcFilePath);
87
99
  if (fileNameWithExtension.includes(keyword)) {
88
100
  const fileName = path.basename(srcFilePath, path.extname(srcFilePath));
@@ -103,4 +115,4 @@ export class PackageModuleFactory implements ConversationModuleFactory {
103
115
  async createModule(repoPath: string): Promise<PackageModule> {
104
116
  return new PackageModule(repoPath);
105
117
  }
106
- }
118
+ }
@@ -20,7 +20,7 @@ export class MessageHistory {
20
20
  }
21
21
 
22
22
  toString() {
23
- return this.messages.map(message => message.content).join('. ');
23
+ return this.messages.map((message) => message.content).join('. ');
24
24
  }
25
25
 
26
26
  setMessages(messages: ChatCompletionMessageParam[]): MessageHistory {
@@ -36,19 +36,22 @@ export class MessageHistory {
36
36
  }
37
37
 
38
38
  prune() {
39
- if (this.params.enforceMessageLimit === false)
39
+ if (this.params.enforceMessageLimit === false) {
40
40
  return;
41
+ }
41
42
 
42
43
  let messageCount = 0;
43
44
  const messagesToRemoveIndexes: number[] = [];
44
45
  for (let i = this.messages.length - 1; i >= 0; i--) {
45
46
  const message = this.messages[i];
46
- if (message.role == 'system')
47
+ if (message.role == 'system') {
47
48
  continue;
49
+ }
48
50
 
49
51
  messageCount++;
50
- if (messageCount > this.params.maxMessages)
52
+ if (messageCount > this.params.maxMessages) {
51
53
  messagesToRemoveIndexes.push(i);
54
+ }
52
55
  }
53
56
 
54
57
  this.messages = this.messages.filter((message, i) => !messagesToRemoveIndexes.includes(i));
@@ -3,4 +3,4 @@ import { ChatCompletionMessageParam } from 'openai/resources/chat';
3
3
  export interface MessageModerator {
4
4
  // given a set of messages, modify and return
5
5
  observe(messages: ChatCompletionMessageParam[]): ChatCompletionMessageParam[];
6
- }
6
+ }
@@ -1,12 +1,12 @@
1
1
  export type Question = {
2
- text: string,
3
- optional?: boolean,
4
- }
2
+ text: string;
3
+ optional?: boolean;
4
+ };
5
5
 
6
6
  export type ConversationTemplate = {
7
- name: string,
8
- keywords: string[],
9
- description: string,
10
- questions: Question[],
11
- instructions: () => Promise<string[]>,
12
- }
7
+ name: string;
8
+ keywords: string[];
9
+ description: string;
10
+ questions: Question[];
11
+ instructions: () => Promise<string[]>;
12
+ };
@@ -14,12 +14,12 @@ export const searchConversationTemplatesFunction = (repo: ConversationTemplateMo
14
14
  description: 'Search for conversation template names that match this keyword',
15
15
  },
16
16
  },
17
- required: ['keyword']
17
+ required: ['keyword'],
18
18
  },
19
19
  },
20
20
  call: async (params: { keyword: string }) => repo.searchConversationTemplates(params.keyword),
21
- }
22
- }
21
+ };
22
+ };
23
23
 
24
24
  export const getConversationTemplateFunctionName = 'getConversationTemplate';
25
25
  export const getConversationTemplateFunction = (repo: ConversationTemplateModule) => {
@@ -35,9 +35,10 @@ export const getConversationTemplateFunction = (repo: ConversationTemplateModule
35
35
  description: 'Get the conversation template that has this name',
36
36
  },
37
37
  },
38
- required: ['conversationTemplateName']
38
+ required: ['conversationTemplateName'],
39
39
  },
40
40
  },
41
- call: async (params: { conversationTemplateName: string }) => await repo.getConversationTemplate(params.conversationTemplateName),
42
- }
43
- }
41
+ call: async (params: { conversationTemplateName: string }) =>
42
+ await repo.getConversationTemplate(params.conversationTemplateName),
43
+ };
44
+ };
@@ -2,7 +2,12 @@ import { Logger } from '@proteinjs/util';
2
2
  import { ConversationTemplate } from './ConversationTemplate';
3
3
  import { createPackageConversationTemplate } from './createPackage/CreatePackageConversationTemplate';
4
4
  import { ConversationModule, ConversationModuleFactory } from '../ConversationModule';
5
- import { getConversationTemplateFunction, getConversationTemplateFunctionName, searchConversationTemplatesFunction, searchConversationTemplatesFunctionName } from './ConversationTemplateFunctions';
5
+ import {
6
+ getConversationTemplateFunction,
7
+ getConversationTemplateFunctionName,
8
+ searchConversationTemplatesFunction,
9
+ searchConversationTemplatesFunctionName,
10
+ } from './ConversationTemplateFunctions';
6
11
  import { createCodeConversationTemplate } from './createCode/CreateCodeConversationTemplate';
7
12
  import { createAppTemplate } from './createApp/CreateAppTemplate';
8
13
 
@@ -13,9 +18,9 @@ const conversationTemplates: ConversationTemplate[] = [
13
18
  ];
14
19
 
15
20
  export type ConversationTemplateModuleParams = {
16
- conversationTemplates: { [conversationTemplateName: string]: ConversationTemplate},
17
- conversationTemplateKeywordIndex: { [keyword: string]: string[] /** conversationTemplateNames */ }
18
- }
21
+ conversationTemplates: { [conversationTemplateName: string]: ConversationTemplate };
22
+ conversationTemplateKeywordIndex: { [keyword: string]: string[] /** conversationTemplateNames */ };
23
+ };
19
24
 
20
25
  export class ConversationTemplateModule implements ConversationModule {
21
26
  private logger = new Logger(this.constructor.name);
@@ -35,10 +40,13 @@ export class ConversationTemplateModule implements ConversationModule {
35
40
  return conversationNames || [];
36
41
  }
37
42
 
38
- async getConversationTemplate(conversationTemplateName: string): Promise<Omit<ConversationTemplate, 'instructions'> & { instructions: string[] }> {
43
+ async getConversationTemplate(
44
+ conversationTemplateName: string
45
+ ): Promise<Omit<ConversationTemplate, 'instructions'> & { instructions: string[] }> {
39
46
  const conversationTemplate = this.params.conversationTemplates[conversationTemplateName];
40
- if (!conversationTemplate)
47
+ if (!conversationTemplate) {
41
48
  return {} as any;
49
+ }
42
50
 
43
51
  const instructions = await conversationTemplate.instructions();
44
52
  return Object.assign(conversationTemplate, { instructions });
@@ -54,10 +62,7 @@ export class ConversationTemplateModule implements ConversationModule {
54
62
  }
55
63
 
56
64
  getFunctions() {
57
- return [
58
- searchConversationTemplatesFunction(this),
59
- getConversationTemplateFunction(this),
60
- ];
65
+ return [searchConversationTemplatesFunction(this), getConversationTemplateFunction(this)];
61
66
  }
62
67
 
63
68
  getMessageModerators() {
@@ -67,12 +72,16 @@ export class ConversationTemplateModule implements ConversationModule {
67
72
 
68
73
  export class ConversationTemplateModuleFactory implements ConversationModuleFactory {
69
74
  async createModule(repoPath: string) {
70
- const params: ConversationTemplateModuleParams = { conversationTemplates: {}, conversationTemplateKeywordIndex: {} };
71
- for (let conversationTemplate of conversationTemplates) {
75
+ const params: ConversationTemplateModuleParams = {
76
+ conversationTemplates: {},
77
+ conversationTemplateKeywordIndex: {},
78
+ };
79
+ for (const conversationTemplate of conversationTemplates) {
72
80
  params.conversationTemplates[conversationTemplate.name] = conversationTemplate;
73
- for (let keyword of conversationTemplate.keywords) {
74
- if (!params.conversationTemplateKeywordIndex[keyword])
81
+ for (const keyword of conversationTemplate.keywords) {
82
+ if (!params.conversationTemplateKeywordIndex[keyword]) {
75
83
  params.conversationTemplateKeywordIndex[keyword] = [];
84
+ }
76
85
 
77
86
  params.conversationTemplateKeywordIndex[keyword].push(conversationTemplate.name);
78
87
  }
@@ -80,4 +89,4 @@ export class ConversationTemplateModuleFactory implements ConversationModuleFact
80
89
 
81
90
  return new ConversationTemplateModule(params);
82
91
  }
83
- }
92
+ }
@@ -30,4 +30,4 @@ export const createAppTemplate: ConversationTemplate = {
30
30
  description: 'This template will guide you through the process of creating a new app.',
31
31
  questions: createAppQuestions,
32
32
  instructions: createAppInstructions,
33
- };
33
+ };
@@ -1,17 +1,15 @@
1
1
  import { fileOrDirectoryExistsFunction, readFilesFunctionName } from '../../fs/conversation_fs/FsFunctions';
2
- import { generateTypescriptDeclarationsFunction, installPackagesFunction, searchLibrariesFunctionName, searchPackagesFunctionName } from '../../fs/package/PackageFunctions';
2
+ import {
3
+ generateTypescriptDeclarationsFunction,
4
+ installPackagesFunction,
5
+ searchLibrariesFunctionName,
6
+ searchPackagesFunctionName,
7
+ } from '../../fs/package/PackageFunctions';
3
8
  import { ConversationTemplate } from '../ConversationTemplate';
4
9
 
5
10
  export const createCodeConversationTemplate: ConversationTemplate = {
6
11
  name: 'Create code',
7
- keywords: [
8
- 'create code',
9
- 'implement',
10
- 'write code',
11
- 'generate code',
12
- 'write software',
13
- 'build something',
14
- ],
12
+ keywords: ['create code', 'implement', 'write code', 'generate code', 'write software', 'build something'],
15
13
  description: 'User and ai developing together',
16
14
  questions: [],
17
15
  instructions: async () => {
@@ -37,5 +35,5 @@ export const createCodeConversationTemplate: ConversationTemplate = {
37
35
  `3.c. When writing the code to file, if updating an existing file, be sure to read the file first to not blow away existing code. Be sure to preserve comments as well.`,
38
36
  `4. Repeat 3. unless the user asks to switch packages or files`,
39
37
  ];
40
- }
41
- }
38
+ },
39
+ };
@@ -5,14 +5,7 @@ import tConfig from './tsconfig.json';
5
5
 
6
6
  export const createPackageConversationTemplate: ConversationTemplate = {
7
7
  name: 'Create Package',
8
- keywords: [
9
- 'package',
10
- 'create package',
11
- 'create',
12
- 'create a package',
13
- 'create a new package',
14
- `new package`,
15
- ],
8
+ keywords: ['package', 'create package', 'create', 'create a package', 'create a new package', `new package`],
16
9
  description: 'Create a npm package',
17
10
  questions: [
18
11
  { text: `Which folder should the package be created in?` },
@@ -39,4 +32,4 @@ export const createPackageConversationTemplate: ConversationTemplate = {
39
32
  `If it's a typescript project, create a tsconfig.json file in the pakage directory with the following content: ${tsConfig}`,
40
33
  ];
41
34
  },
42
- }
35
+ };
@@ -4,6 +4,6 @@ module.exports = {
4
4
  transform: {
5
5
  '^.+\\.tsx?$': 'ts-jest',
6
6
  },
7
- testMatch: ["**/?(*.)+(spec|test).ts"],
7
+ testMatch: ['**/?(*.)+(spec|test).ts'],
8
8
  setupFiles: ['./test/setup'],
9
- };
9
+ };
@@ -1,7 +1,7 @@
1
1
  import { KeywordToFilesIndexModuleFactory } from '../src/fs/keyword_to_files_index/KeywordToFilesIndexModule';
2
2
 
3
- test('Create keyword-files index', async() => {
3
+ test('Create keyword-files index', async () => {
4
4
  // Example usage
5
- const index = new KeywordToFilesIndexModuleFactory().createKeywordFilesIndex(`${process.cwd()}`)
5
+ const index = new KeywordToFilesIndexModuleFactory().createKeywordFilesIndex(`${process.cwd()}`);
6
6
  console.log(JSON.stringify(index, null, 2));
7
- }, 60000)
7
+ }, 60000);
@@ -1,6 +1,8 @@
1
- import { OpenAi } from "../../src/OpenAi";
1
+ import { OpenAi } from '../../src/OpenAi';
2
2
 
3
3
  test('generateList should return an array of numbers, counting to 10', async () => {
4
4
  const numbers = ['one', 'two', 'three', 'four', 'five', 'six', 'seven', 'eight', 'nine', 'ten'];
5
- expect((await OpenAi.generateList([`Create a list of numbers spelled out, from 1 to 10`])).join(' ')).toBe(numbers.join(' '));
6
- });
5
+ expect((await OpenAi.generateList([`Create a list of numbers spelled out, from 1 to 10`])).join(' ')).toBe(
6
+ numbers.join(' ')
7
+ );
8
+ });
@@ -1,11 +1,16 @@
1
- import { OpenAi } from "../../src/OpenAi";
1
+ import { OpenAi } from '../../src/OpenAi';
2
2
 
3
3
  const helloWorldCode = "console.log('hello world');";
4
4
  const helloWorldWithTicksCode = "console.log('hello ```world');";
5
5
  const logXCode = "const x = 'yo';\nconsole.log(x);";
6
- const testOneBlock = "Sure! I'm a helpful chatbot.\n```typescript\n" + helloWorldCode + "\n```";
7
- const testOneBlockWithExtraTicks = "Sure! I'm a helpful chatbot.\n```typescript\n" + helloWorldWithTicksCode + "\n```";
8
- const testTwoBlocks = "Sure! I'm a helpful chatbot.\n```typescript\n" + helloWorldCode + "\n```\n\nI'm still really helpful.\n```typescript\n" + logXCode + "\n```\n\nMore unhelpful chat";
6
+ const testOneBlock = "Sure! I'm a helpful chatbot.\n```typescript\n" + helloWorldCode + '\n```';
7
+ const testOneBlockWithExtraTicks = "Sure! I'm a helpful chatbot.\n```typescript\n" + helloWorldWithTicksCode + '\n```';
8
+ const testTwoBlocks =
9
+ "Sure! I'm a helpful chatbot.\n```typescript\n" +
10
+ helloWorldCode +
11
+ "\n```\n\nI'm still really helpful.\n```typescript\n" +
12
+ logXCode +
13
+ '\n```\n\nMore unhelpful chat';
9
14
 
10
15
  test('parseCodeFromMarkdown should parse 1 block of code', () => {
11
16
  expect(OpenAi.parseCodeFromMarkdown(testOneBlock)).toBe(helloWorldCode);
@@ -17,4 +22,4 @@ test('parseCodeFromMarkdown should parse 1 block of code that contains ticks', (
17
22
 
18
23
  test('parseCodeFromMarkdown should parse 1 block of code', () => {
19
24
  expect(OpenAi.parseCodeFromMarkdown(testTwoBlocks)).toBe(helloWorldCode + '\n\n' + logXCode);
20
- });
25
+ });
@@ -3,7 +3,6 @@ import { RepoFactory } from '../../src/code_template/Repo';
3
3
  import { Conversation } from '../../src/Conversation';
4
4
  import { Fs } from '@proteinjs/util-node';
5
5
 
6
-
7
6
  // test(`Return repo of the source files and the code they depend on`, async () => {
8
7
  // const tableTemplatePath = require.resolve('conversation/src/table.ts');
9
8
  // const repo = await new RepoFactory([tableTemplatePath]).create();
@@ -15,12 +14,12 @@ import { Fs } from '@proteinjs/util-node';
15
14
  // }, 60000);
16
15
 
17
16
  // test(`Interpret all parameters of a function`, async () => {
18
-
17
+
19
18
  // }, 60000);
20
19
 
21
20
  // test(`Gather parameter data from the user`, async () => {
22
21
  // const conversation = new Conversation();
23
-
22
+
24
23
  // }, 60000);
25
24
 
26
25
  // test(`Generate code from templates guided by user input`, async () => {
@@ -30,4 +29,4 @@ import { Fs } from '@proteinjs/util-node';
30
29
  test(`Create repo`, async () => {
31
30
  // console.log(JSON.stringify((await RepoFactory.createRepo(`${process.cwd()}`)).params, null, 4));
32
31
  // console.log(JSON.stringify(await Fs.getFilesInDirectory(`${process.cwd()}`, ['node_modules', 'dist']), null, 4));
33
- }, 60000)
32
+ }, 60000);
package/tsconfig.json CHANGED
@@ -1,23 +1,19 @@
1
1
  {
2
2
  "compilerOptions": {
3
- "rootDir": "./",
4
- "target": "es5",
5
- "module": "commonjs",
6
- "declaration": true,
7
- "declarationMap": true,
8
- "sourceMap": true,
9
- "outDir": "./dist/",
10
- "strict": true,
11
- "noImplicitAny": true,
12
- "esModuleInterop": true,
13
- "skipLibCheck": true,
14
- "forceConsistentCasingInFileNames": true,
15
- "resolveJsonModule": true,
16
- "typeRoots": [
17
- "./node_modules/@types"
18
- ],
19
- "types": [
20
- "node", "jest"
21
- ]
3
+ "rootDir": "./",
4
+ "target": "es5",
5
+ "module": "commonjs",
6
+ "declaration": true,
7
+ "declarationMap": true,
8
+ "sourceMap": true,
9
+ "outDir": "./dist/",
10
+ "strict": true,
11
+ "noImplicitAny": true,
12
+ "esModuleInterop": true,
13
+ "skipLibCheck": true,
14
+ "forceConsistentCasingInFileNames": true,
15
+ "resolveJsonModule": true,
16
+ "typeRoots": ["./node_modules/@types"],
17
+ "types": ["node", "jest"]
22
18
  }
23
- }
19
+ }