@rxap/plugin-llm 20.0.0-dev.1

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 (69) hide show
  1. package/CHANGELOG.md +8 -0
  2. package/GETSTARTED.md +0 -0
  3. package/GUIDES.md +0 -0
  4. package/LICENSE.md +621 -0
  5. package/README.md +11 -0
  6. package/generators.json +36 -0
  7. package/package.json +49 -0
  8. package/src/generators/documentation/generator.d.ts +4 -0
  9. package/src/generators/documentation/generator.js +187 -0
  10. package/src/generators/documentation/generator.js.map +1 -0
  11. package/src/generators/documentation/index.d.ts +2 -0
  12. package/src/generators/documentation/index.js +7 -0
  13. package/src/generators/documentation/index.js.map +1 -0
  14. package/src/generators/documentation/schema.d.ts +13 -0
  15. package/src/generators/documentation/schema.json +34 -0
  16. package/src/generators/documentation/system-prompts/context.xsd +35 -0
  17. package/src/generators/documentation/system-prompts/exmaple.txt +134 -0
  18. package/src/generators/documentation/system-prompts/generic.txt +242 -0
  19. package/src/generators/init/generator.d.ts +4 -0
  20. package/src/generators/init/generator.js +105 -0
  21. package/src/generators/init/generator.js.map +1 -0
  22. package/src/generators/init/index.d.ts +2 -0
  23. package/src/generators/init/index.js +7 -0
  24. package/src/generators/init/index.js.map +1 -0
  25. package/src/generators/init/schema.d.ts +3 -0
  26. package/src/generators/init/schema.json +8 -0
  27. package/src/generators/package-description/generator.d.ts +4 -0
  28. package/src/generators/package-description/generator.js +53 -0
  29. package/src/generators/package-description/generator.js.map +1 -0
  30. package/src/generators/package-description/index.d.ts +2 -0
  31. package/src/generators/package-description/index.js +7 -0
  32. package/src/generators/package-description/index.js.map +1 -0
  33. package/src/generators/package-description/schema.d.ts +15 -0
  34. package/src/generators/package-description/schema.json +37 -0
  35. package/src/generators/package-description/system-prompts/generic.txt +44 -0
  36. package/src/index.d.ts +0 -0
  37. package/src/index.js +1 -0
  38. package/src/index.js.map +1 -0
  39. package/src/lib/__snapshots__/cleanup-js-doc.spec.ts.snap +32 -0
  40. package/src/lib/add-js-doc.d.ts +2 -0
  41. package/src/lib/add-js-doc.js +7 -0
  42. package/src/lib/add-js-doc.js.map +1 -0
  43. package/src/lib/assert-token-limit.d.ts +2 -0
  44. package/src/lib/assert-token-limit.js +13 -0
  45. package/src/lib/assert-token-limit.js.map +1 -0
  46. package/src/lib/cleanup-js-doc.d.ts +1 -0
  47. package/src/lib/cleanup-js-doc.js +26 -0
  48. package/src/lib/cleanup-js-doc.js.map +1 -0
  49. package/src/lib/clear-all-js-docs.d.ts +2 -0
  50. package/src/lib/clear-all-js-docs.js +23 -0
  51. package/src/lib/clear-all-js-docs.js.map +1 -0
  52. package/src/lib/clear-js-doc.d.ts +2 -0
  53. package/src/lib/clear-js-doc.js +7 -0
  54. package/src/lib/clear-js-doc.js.map +1 -0
  55. package/src/lib/completion.d.ts +11 -0
  56. package/src/lib/completion.js +49 -0
  57. package/src/lib/completion.js.map +1 -0
  58. package/src/lib/compose-context.d.ts +9 -0
  59. package/src/lib/compose-context.js +35 -0
  60. package/src/lib/compose-context.js.map +1 -0
  61. package/src/lib/count-tokens.d.ts +2 -0
  62. package/src/lib/count-tokens.js +18 -0
  63. package/src/lib/count-tokens.js.map +1 -0
  64. package/src/lib/has-js-doc.d.ts +2 -0
  65. package/src/lib/has-js-doc.js +7 -0
  66. package/src/lib/has-js-doc.js.map +1 -0
  67. package/src/lib/model.d.ts +16 -0
  68. package/src/lib/model.js +19 -0
  69. package/src/lib/model.js.map +1 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"assert-token-limit.js","sourceRoot":"","sources":["../../../../../../packages/plugin/llm/src/lib/assert-token-limit.ts"],"names":[],"mappings":";;AAMA,4CAUC;AAhBD,iDAA6C;AAC7C,mCAGiB;AAEjB,SAAgB,gBAAgB,CAAC,KAAY,EAAE,GAAG,MAAgB;IAEhE,MAAM,GAAG,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,KAAK,EAAE,EAAE,CAAC,GAAG,GAAG,IAAA,0BAAW,EAAC,KAAK,EAAE,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC;IAE9E,IAAI,GAAG,GAAG,mBAAW,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,GAAG,GAAG,EAAE,CAAC;QACtC,MAAM,IAAI,KAAK,CAAC,kBAAkB,GAAG,yCAAyC,mBAAW,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,GAAG,GAAG,EAAE,CAAC,CAAC;IAC/G,CAAC;IAED,OAAO,GAAG,CAAC;AAEb,CAAC"}
@@ -0,0 +1 @@
1
+ export declare function cleanupJsDoc(jsDoc: string): string;
@@ -0,0 +1,26 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.cleanupJsDoc = cleanupJsDoc;
4
+ function cleanupJsDoc(jsDoc) {
5
+ if (!(jsDoc.includes('/**') || jsDoc.includes('*/'))) {
6
+ return jsDoc;
7
+ }
8
+ const cleanJsDocArray = jsDoc
9
+ .split('\n')
10
+ .map(line => line
11
+ .trim()
12
+ .replace(/^\/\*\*/, '')
13
+ .replace(/^\*\//, '')
14
+ .replace(/^\*\s/, '')
15
+ .replace(/^\*$/, ''));
16
+ // cleanJsDocArray.pop();
17
+ // cleanJsDocArray.shift();
18
+ if (cleanJsDocArray[0].trim() === '') {
19
+ cleanJsDocArray.shift();
20
+ }
21
+ if (cleanJsDocArray[cleanJsDocArray.length - 1].trim() === '') {
22
+ cleanJsDocArray.pop();
23
+ }
24
+ return cleanJsDocArray.join('\n');
25
+ }
26
+ //# sourceMappingURL=cleanup-js-doc.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cleanup-js-doc.js","sourceRoot":"","sources":["../../../../../../packages/plugin/llm/src/lib/cleanup-js-doc.ts"],"names":[],"mappings":";;AAAA,oCA+BC;AA/BD,SAAgB,YAAY,CAAC,KAAa;IAExC,IAAI,CAAC,CACH,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,CAC9C,EAAE,CAAC;QACF,OAAO,KAAK,CAAC;IACf,CAAC;IAED,MAAM,eAAe,GAAG,KAAK;SAC1B,KAAK,CAAC,IAAI,CAAC;SACX,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI;SACd,IAAI,EAAE;SACN,OAAO,CAAC,SAAS,EAAE,EAAE,CAAC;SACtB,OAAO,CAAC,OAAO,EAAE,EAAE,CAAC;SACpB,OAAO,CAAC,OAAO,EAAE,EAAE,CAAC;SACpB,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,CACrB,CAAC;IAEJ,yBAAyB;IACzB,2BAA2B;IAE3B,IAAI,eAAe,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC;QACrC,eAAe,CAAC,KAAK,EAAE,CAAC;IAC1B,CAAC;IAED,IAAI,eAAe,CAAC,eAAe,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC;QAC9D,eAAe,CAAC,GAAG,EAAE,CAAC;IACxB,CAAC;IAED,OAAO,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAEpC,CAAC"}
@@ -0,0 +1,2 @@
1
+ import { SourceFile } from 'ts-morph';
2
+ export declare function clearAllJsDocs(sourceFile: SourceFile, inplace?: boolean): SourceFile;
@@ -0,0 +1,23 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.clearAllJsDocs = clearAllJsDocs;
4
+ const ts_morph_1 = require("ts-morph");
5
+ const clear_js_doc_1 = require("./clear-js-doc");
6
+ function clearAllJsDocs(sourceFile, inplace = false) {
7
+ const p = new ts_morph_1.Project({ useInMemoryFileSystem: true });
8
+ const clone = inplace ? sourceFile : p.createSourceFile('clean.ts', sourceFile.getFullText());
9
+ clone.getClasses().forEach(classD => {
10
+ (0, clear_js_doc_1.clearJsDoc)(classD);
11
+ classD.getProperties().filter(property => !property.getScope() || property.getScope() === ts_morph_1.Scope.Public).forEach(prop => (0, clear_js_doc_1.clearJsDoc)(prop));
12
+ classD.getMethods().filter(method => !method.getScope() || method.getScope() === ts_morph_1.Scope.Public).forEach(method => (0, clear_js_doc_1.clearJsDoc)(method));
13
+ });
14
+ clone.getInterfaces().forEach(interfaceD => {
15
+ (0, clear_js_doc_1.clearJsDoc)(interfaceD);
16
+ interfaceD.getProperties().forEach(prop => (0, clear_js_doc_1.clearJsDoc)(prop));
17
+ interfaceD.getMethods().forEach(method => (0, clear_js_doc_1.clearJsDoc)(method));
18
+ });
19
+ clone.getTypeAliases().forEach(alias => (0, clear_js_doc_1.clearJsDoc)(alias));
20
+ clone.getFunctions().forEach(funcD => (0, clear_js_doc_1.clearJsDoc)(funcD));
21
+ return clone;
22
+ }
23
+ //# sourceMappingURL=clear-all-js-docs.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"clear-all-js-docs.js","sourceRoot":"","sources":["../../../../../../packages/plugin/llm/src/lib/clear-all-js-docs.ts"],"names":[],"mappings":";;AAGA,wCAkBC;AArBD,uCAAsD;AACtD,iDAA4C;AAE5C,SAAgB,cAAc,CAAC,UAAsB,EAAE,OAAO,GAAG,KAAK;IACpE,MAAM,CAAC,GAAG,IAAI,kBAAO,CAAC,EAAE,qBAAqB,EAAE,IAAI,EAAE,CAAC,CAAC;IACvD,MAAM,KAAK,GAAG,OAAO,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,gBAAgB,CAAC,UAAU,EAAE,UAAU,CAAC,WAAW,EAAE,CAAC,CAAC;IAC9F,KAAK,CAAC,UAAU,EAAE,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE;QAClC,IAAA,yBAAU,EAAC,MAAM,CAAC,CAAC;QACnB,MAAM,CAAC,aAAa,EAAE,CAAC,MAAM,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,QAAQ,EAAE,IAAI,QAAQ,CAAC,QAAQ,EAAE,KAAK,gBAAK,CAAC,MAAM,CAAC,CAAC,OAAO,CAC7G,IAAI,CAAC,EAAE,CAAC,IAAA,yBAAU,EAAC,IAAI,CAAC,CAAC,CAAC;QAC5B,MAAM,CAAC,UAAU,EAAE,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,MAAM,CAAC,QAAQ,EAAE,IAAI,MAAM,CAAC,QAAQ,EAAE,KAAK,gBAAK,CAAC,MAAM,CAAC,CAAC,OAAO,CACpG,MAAM,CAAC,EAAE,CAAC,IAAA,yBAAU,EAAC,MAAM,CAAC,CAAC,CAAC;IAClC,CAAC,CAAC,CAAC;IACH,KAAK,CAAC,aAAa,EAAE,CAAC,OAAO,CAAC,UAAU,CAAC,EAAE;QACzC,IAAA,yBAAU,EAAC,UAAU,CAAC,CAAC;QACvB,UAAU,CAAC,aAAa,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC,IAAA,yBAAU,EAAC,IAAI,CAAC,CAAC,CAAC;QAC7D,UAAU,CAAC,UAAU,EAAE,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC,IAAA,yBAAU,EAAC,MAAM,CAAC,CAAC,CAAC;IAChE,CAAC,CAAC,CAAC;IACH,KAAK,CAAC,cAAc,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC,IAAA,yBAAU,EAAC,KAAK,CAAC,CAAC,CAAC;IAC3D,KAAK,CAAC,YAAY,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC,IAAA,yBAAU,EAAC,KAAK,CAAC,CAAC,CAAC;IACzD,OAAO,KAAK,CAAC;AACf,CAAC"}
@@ -0,0 +1,2 @@
1
+ import { JSDocableNode } from 'ts-morph';
2
+ export declare function clearJsDoc(node: JSDocableNode): void;
@@ -0,0 +1,7 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.clearJsDoc = clearJsDoc;
4
+ function clearJsDoc(node) {
5
+ node.getJsDocs().forEach(item => item.remove());
6
+ }
7
+ //# sourceMappingURL=clear-js-doc.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"clear-js-doc.js","sourceRoot":"","sources":["../../../../../../packages/plugin/llm/src/lib/clear-js-doc.ts"],"names":[],"mappings":";;AAEA,gCAEC;AAFD,SAAgB,UAAU,CAAC,IAAmB;IAC5C,IAAI,CAAC,SAAS,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC;AAClD,CAAC"}
@@ -0,0 +1,11 @@
1
+ import { Model } from './model';
2
+ import 'colors';
3
+ export interface CompletionOptions {
4
+ model?: Model;
5
+ maxTokens?: number;
6
+ baseUrl?: string;
7
+ apiKey?: string;
8
+ orgId?: string;
9
+ projectId?: string;
10
+ }
11
+ export declare function completion(systemPrompt: string, prompt: string, options?: CompletionOptions): Promise<string>;
@@ -0,0 +1,49 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.completion = completion;
4
+ const tslib_1 = require("tslib");
5
+ const openai_1 = require("openai");
6
+ const assert_token_limit_1 = require("./assert-token-limit");
7
+ const model_1 = require("./model");
8
+ require("colors");
9
+ function completion(systemPrompt_1, prompt_1) {
10
+ return tslib_1.__awaiter(this, arguments, void 0, function* (systemPrompt, prompt, options = {}) {
11
+ var _a;
12
+ const { model = 'openai/gpt-4o-mini', maxTokens = model_1.tokenLimits[model][1] } = options;
13
+ const count = (0, assert_token_limit_1.assertTokenLimit)(model, systemPrompt, prompt);
14
+ const input = {
15
+ model,
16
+ messages: [
17
+ {
18
+ 'role': 'system',
19
+ 'content': systemPrompt,
20
+ },
21
+ {
22
+ 'role': 'user',
23
+ 'content': prompt,
24
+ },
25
+ ],
26
+ temperature: 0,
27
+ };
28
+ if (model.startsWith('o')) {
29
+ input.max_completion_tokens = maxTokens;
30
+ }
31
+ else {
32
+ input.max_tokens = maxTokens;
33
+ }
34
+ console.log('TOKENS'.grey + ' ' + count);
35
+ const response = yield new openai_1.default({
36
+ apiKey: options.apiKey,
37
+ project: options.projectId,
38
+ organization: options.orgId,
39
+ baseURL: options.baseUrl,
40
+ }).chat.completions.create(input);
41
+ const content = (_a = response.choices[0].message) === null || _a === void 0 ? void 0 : _a.content;
42
+ if (!content) {
43
+ console.log('No content in response'.red);
44
+ throw new Error(`No content in response`);
45
+ }
46
+ return content;
47
+ });
48
+ }
49
+ //# sourceMappingURL=completion.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"completion.js","sourceRoot":"","sources":["../../../../../../packages/plugin/llm/src/lib/completion.ts"],"names":[],"mappings":";;AAmBA,gCAgDC;;AAlED,mCAA4B;AAE5B,6DAAwD;AACxD,mCAGiB;AACjB,kBAAgB;AAWhB,SAAsB,UAAU;iEAC9B,YAAoB,EACpB,MAAc,EACd,UAA6B,EAAE;;QAG/B,MAAM,EAAE,KAAK,GAAG,oBAAoB,EAAE,SAAS,GAAG,mBAAW,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,GAAG,OAAO,CAAC;QAEpF,MAAM,KAAK,GAAG,IAAA,qCAAgB,EAAC,KAAK,EAAE,YAAY,EAAE,MAAM,CAAC,CAAC;QAE5D,MAAM,KAAK,GAA2C;YACpD,KAAK;YACL,QAAQ,EAAE;gBACR;oBACE,MAAM,EAAE,QAAQ;oBAChB,SAAS,EAAE,YAAY;iBACxB;gBACD;oBACE,MAAM,EAAE,MAAM;oBACd,SAAS,EAAE,MAAM;iBAClB;aACF;YACD,WAAW,EAAE,CAAC;SACf,CAAC;QAEF,IAAI,KAAK,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;YAC1B,KAAK,CAAC,qBAAqB,GAAG,SAAS,CAAC;QAC1C,CAAC;aAAM,CAAC;YACN,KAAK,CAAC,UAAU,GAAG,SAAS,CAAC;QAC/B,CAAC;QAED,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,IAAI,GAAG,GAAG,GAAG,KAAK,CAAC,CAAC;QACzC,MAAM,QAAQ,GAAG,MAAM,IAAI,gBAAM,CAAC;YAChC,MAAM,EAAE,OAAO,CAAC,MAAM;YACtB,OAAO,EAAE,OAAO,CAAC,SAAS;YAC1B,YAAY,EAAE,OAAO,CAAC,KAAK;YAC3B,OAAO,EAAE,OAAO,CAAC,OAAO;SACzB,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QAElC,MAAM,OAAO,GAAG,MAAA,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,0CAAE,OAAO,CAAC;QAErD,IAAI,CAAC,OAAO,EAAE,CAAC;YACb,OAAO,CAAC,GAAG,CAAC,wBAAwB,CAAC,GAAG,CAAC,CAAC;YAC1C,MAAM,IAAI,KAAK,CAAC,wBAAwB,CAAC,CAAC;QAC5C,CAAC;QAED,OAAO,OAAO,CAAC;IAEjB,CAAC;CAAA"}
@@ -0,0 +1,9 @@
1
+ import { SourceFile } from 'ts-morph';
2
+ export interface ContextSourceFile {
3
+ $: {
4
+ path: string;
5
+ };
6
+ _: string;
7
+ }
8
+ export declare function sourceFileToContextSourceFile(sourceFile: SourceFile): ContextSourceFile;
9
+ export declare function composeContext(sourceFile: SourceFile): string;
@@ -0,0 +1,35 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.sourceFileToContextSourceFile = sourceFileToContextSourceFile;
4
+ exports.composeContext = composeContext;
5
+ const xml2js_1 = require("xml2js");
6
+ const clear_all_js_docs_1 = require("./clear-all-js-docs");
7
+ function sourceFileToContextSourceFile(sourceFile) {
8
+ return {
9
+ $: {
10
+ path: sourceFile.getFilePath(),
11
+ },
12
+ _: '\n' + (0, clear_all_js_docs_1.clearAllJsDocs)(sourceFile).getFullText()
13
+ };
14
+ }
15
+ function getReferenced(sourceFile) {
16
+ return [
17
+ ...sourceFile.getReferencedSourceFiles(),
18
+ ...sourceFile.getReferencedSourceFiles().map(sf => getReferenced(sf)).flat()
19
+ ];
20
+ }
21
+ function composeContext(sourceFile) {
22
+ const builder = new xml2js_1.Builder();
23
+ const context = {
24
+ referenced: { sourceFile: [] },
25
+ used: { sourceFile: [] },
26
+ };
27
+ sourceFile.getReferencingSourceFiles().forEach(sf => {
28
+ context.used.sourceFile.push(sourceFileToContextSourceFile(sf));
29
+ });
30
+ getReferenced(sourceFile).forEach(sf => {
31
+ context.referenced.sourceFile.push(sourceFileToContextSourceFile(sf));
32
+ });
33
+ return builder.buildObject(context).replace(/root>/g, 'context>') + '\n';
34
+ }
35
+ //# sourceMappingURL=compose-context.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"compose-context.js","sourceRoot":"","sources":["../../../../../../packages/plugin/llm/src/lib/compose-context.ts"],"names":[],"mappings":";;AAoBA,sEAOC;AASD,wCAmBC;AAtDD,mCAAiC;AACjC,2DAAqD;AAkBrD,SAAgB,6BAA6B,CAAC,UAAsB;IAClE,OAAO;QACL,CAAC,EAAE;YACD,IAAI,EAAE,UAAU,CAAC,WAAW,EAAE;SAC/B;QACD,CAAC,EAAE,IAAI,GAAG,IAAA,kCAAc,EAAC,UAAU,CAAC,CAAC,WAAW,EAAE;KACnD,CAAC;AACJ,CAAC;AAED,SAAS,aAAa,CAAC,UAAsB;IAC3C,OAAO;QACL,GAAG,UAAU,CAAC,wBAAwB,EAAE;QACxC,GAAG,UAAU,CAAC,wBAAwB,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,aAAa,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE;KAC7E,CAAC;AACJ,CAAC;AAED,SAAgB,cAAc,CAAC,UAAsB;IAEnD,MAAM,OAAO,GAAG,IAAI,gBAAO,EAAE,CAAC;IAE9B,MAAM,OAAO,GAAY;QACvB,UAAU,EAAE,EAAE,UAAU,EAAE,EAAE,EAAE;QAC9B,IAAI,EAAE,EAAE,UAAU,EAAE,EAAE,EAAE;KACzB,CAAC;IAEF,UAAU,CAAC,yBAAyB,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC,EAAE;QAClD,OAAO,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,6BAA6B,CAAC,EAAE,CAAC,CAAC,CAAC;IAClE,CAAC,CAAC,CAAC;IAEH,aAAa,CAAC,UAAU,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,EAAE;QACrC,OAAO,CAAC,UAAU,CAAC,UAAU,CAAC,IAAI,CAAC,6BAA6B,CAAC,EAAE,CAAC,CAAC,CAAC;IACxE,CAAC,CAAC,CAAC;IAEH,OAAO,OAAO,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC,OAAO,CAAC,QAAQ,EAAE,UAAU,CAAC,GAAG,IAAI,CAAC;AAE3E,CAAC"}
@@ -0,0 +1,2 @@
1
+ import { Model } from './model';
2
+ export declare function countTokens(model: Model, prompt: string): number;
@@ -0,0 +1,18 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.countTokens = countTokens;
4
+ const tiktoken_1 = require("tiktoken");
5
+ function countTokens(model, prompt) {
6
+ let normalizedModel;
7
+ if (model.startsWith('openai/')) {
8
+ normalizedModel = model.replace(/openai\//, '');
9
+ }
10
+ else {
11
+ normalizedModel = 'gpt-4o';
12
+ }
13
+ const enc = (0, tiktoken_1.encoding_for_model)(normalizedModel);
14
+ const count = enc.encode(prompt).length;
15
+ enc.free();
16
+ return count;
17
+ }
18
+ //# sourceMappingURL=count-tokens.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"count-tokens.js","sourceRoot":"","sources":["../../../../../../packages/plugin/llm/src/lib/count-tokens.ts"],"names":[],"mappings":";;AAMA,kCAcC;AApBD,uCAGkB;AAGlB,SAAgB,WAAW,CAAC,KAAY,EAAE,MAAc;IAEtD,IAAI,eAA8B,CAAC;IACnC,IAAI,KAAK,CAAC,UAAU,CAAC,SAAS,CAAC,EAAE,CAAC;QAChC,eAAe,GAAG,KAAK,CAAC,OAAO,CAAC,UAAU,EAAE,EAAE,CAAkB,CAAC;IACnE,CAAC;SAAM,CAAC;QACN,eAAe,GAAG,QAAQ,CAAC;IAC7B,CAAC;IACD,MAAM,GAAG,GAAG,IAAA,6BAAkB,EAAC,eAAe,CAAC,CAAC;IAChD,MAAM,KAAK,GAAG,GAAG,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC;IACxC,GAAG,CAAC,IAAI,EAAE,CAAC;IAEX,OAAO,KAAK,CAAC;AAEf,CAAC"}
@@ -0,0 +1,2 @@
1
+ import { JSDocableNode } from 'ts-morph';
2
+ export declare function hasJsDoc(node: JSDocableNode): boolean;
@@ -0,0 +1,7 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.hasJsDoc = hasJsDoc;
4
+ function hasJsDoc(node) {
5
+ return node.getJsDocs().length > 0;
6
+ }
7
+ //# sourceMappingURL=has-js-doc.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"has-js-doc.js","sourceRoot":"","sources":["../../../../../../packages/plugin/llm/src/lib/has-js-doc.ts"],"names":[],"mappings":";;AAEA,4BAEC;AAFD,SAAgB,QAAQ,CAAC,IAAmB;IAC1C,OAAO,IAAI,CAAC,SAAS,EAAE,CAAC,MAAM,GAAG,CAAC,CAAC;AACrC,CAAC"}
@@ -0,0 +1,16 @@
1
+ /**
2
+ * Model Context size https://platform.openai.com/docs/models
3
+ */
4
+ export declare const tokenLimits: {
5
+ 'anthropic/claude-3-5-sonnet': number[];
6
+ 'anthropic/claude-3-5-haiku': number[];
7
+ 'gemini/2.0-flash': number[];
8
+ 'gemini/1.5-flash': number[];
9
+ 'gemini/1.5-pro': number[];
10
+ 'openai/gpt-4o': number[];
11
+ 'openai/gpt-4o-mini': number[];
12
+ 'openai/o1': number[];
13
+ 'openai/o1-mini': number[];
14
+ 'openai/o3-mini': number[];
15
+ };
16
+ export type Model = keyof typeof tokenLimits;
@@ -0,0 +1,19 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.tokenLimits = void 0;
4
+ /**
5
+ * Model Context size https://platform.openai.com/docs/models
6
+ */
7
+ exports.tokenLimits = {
8
+ 'anthropic/claude-3-5-sonnet': [200000, 8192],
9
+ 'anthropic/claude-3-5-haiku': [200000, 8192],
10
+ 'gemini/2.0-flash': [1000000, 1000000], // $0.10 $0.40
11
+ 'gemini/1.5-flash': [128000, 128000], // $0.075 $0.30
12
+ 'gemini/1.5-pro': [128000, 128000], // $1.25 $5.00
13
+ 'openai/gpt-4o': [128000], // $2.50 $10.00
14
+ 'openai/gpt-4o-mini': [128000], // $0.15 $0.60
15
+ 'openai/o1': [200000], // $15.00 $60.00
16
+ 'openai/o1-mini': [128000], // $1.10 $4.40
17
+ 'openai/o3-mini': [200000], // $1.10 $4.40
18
+ };
19
+ //# sourceMappingURL=model.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"model.js","sourceRoot":"","sources":["../../../../../../packages/plugin/llm/src/lib/model.ts"],"names":[],"mappings":";;;AAAA;;GAEG;AACU,QAAA,WAAW,GAAG;IAEzB,6BAA6B,EAAE,CAAC,MAAO,EAAE,IAAI,CAAC;IAC9C,4BAA4B,EAAE,CAAC,MAAO,EAAE,IAAI,CAAC;IAE7C,kBAAkB,EAAE,CAAC,OAAS,EAAE,OAAS,CAAC,EAAE,cAAc;IAC1D,kBAAkB,EAAE,CAAC,MAAO,EAAC,MAAO,CAAC,EAAE,eAAe;IACtD,gBAAgB,EAAE,CAAC,MAAO,EAAC,MAAO,CAAC,EAAE,cAAc;IAEnD,eAAe,EAAE,CAAC,MAAO,CAAC,EAAE,eAAe;IAC3C,oBAAoB,EAAE,CAAC,MAAO,CAAC,EAAE,cAAc;IAC/C,WAAW,EAAE,CAAC,MAAO,CAAC,EAAE,gBAAgB;IACxC,gBAAgB,EAAE,CAAC,MAAO,CAAC,EAAE,cAAc;IAC3C,gBAAgB,EAAE,CAAC,MAAO,CAAC,EAAE,cAAc;CAE5C,CAAC"}