@theia/ai-code-completion 1.63.0-next.0 → 1.63.0-next.52

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 (49) hide show
  1. package/lib/browser/ai-code-completion-frontend-module.d.ts.map +1 -1
  2. package/lib/browser/ai-code-completion-frontend-module.js +6 -4
  3. package/lib/browser/ai-code-completion-frontend-module.js.map +1 -1
  4. package/lib/browser/ai-code-completion-preference.d.ts +1 -0
  5. package/lib/browser/ai-code-completion-preference.d.ts.map +1 -1
  6. package/lib/browser/ai-code-completion-preference.js +10 -1
  7. package/lib/browser/ai-code-completion-preference.js.map +1 -1
  8. package/lib/browser/ai-code-frontend-application-contribution.d.ts +1 -0
  9. package/lib/browser/ai-code-frontend-application-contribution.d.ts.map +1 -1
  10. package/lib/browser/ai-code-frontend-application-contribution.js +18 -2
  11. package/lib/browser/ai-code-frontend-application-contribution.js.map +1 -1
  12. package/lib/browser/code-completion-agent.d.ts +0 -3
  13. package/lib/browser/code-completion-agent.d.ts.map +1 -1
  14. package/lib/browser/code-completion-agent.js +7 -45
  15. package/lib/browser/code-completion-agent.js.map +1 -1
  16. package/lib/browser/code-completion-cache.d.ts +40 -0
  17. package/lib/browser/code-completion-cache.d.ts.map +1 -0
  18. package/lib/browser/code-completion-cache.js +116 -0
  19. package/lib/browser/code-completion-cache.js.map +1 -0
  20. package/lib/browser/code-completion-prompt-template.d.ts.map +1 -1
  21. package/lib/browser/code-completion-prompt-template.js +41 -6
  22. package/lib/browser/code-completion-prompt-template.js.map +1 -1
  23. package/lib/browser/code-completion-variable-context.d.ts +11 -0
  24. package/lib/browser/code-completion-variable-context.d.ts.map +1 -0
  25. package/lib/browser/code-completion-variable-context.js +26 -0
  26. package/lib/browser/code-completion-variable-context.js.map +1 -0
  27. package/lib/browser/code-completion-variable-contribution.d.ts +16 -0
  28. package/lib/browser/code-completion-variable-contribution.d.ts.map +1 -0
  29. package/lib/browser/code-completion-variable-contribution.js +127 -0
  30. package/lib/browser/code-completion-variable-contribution.js.map +1 -0
  31. package/lib/browser/code-completion-variable-contribution.spec.d.ts +2 -0
  32. package/lib/browser/code-completion-variable-contribution.spec.d.ts.map +1 -0
  33. package/lib/browser/code-completion-variable-contribution.spec.js +143 -0
  34. package/lib/browser/code-completion-variable-contribution.spec.js.map +1 -0
  35. package/lib/browser/code-completion-variables.d.ts +6 -0
  36. package/lib/browser/code-completion-variables.d.ts.map +1 -0
  37. package/lib/browser/code-completion-variables.js +39 -0
  38. package/lib/browser/code-completion-variables.js.map +1 -0
  39. package/package.json +7 -7
  40. package/src/browser/ai-code-completion-frontend-module.ts +6 -4
  41. package/src/browser/ai-code-completion-preference.ts +10 -0
  42. package/src/browser/ai-code-frontend-application-contribution.ts +25 -3
  43. package/src/browser/code-completion-agent.ts +8 -57
  44. package/src/browser/code-completion-cache.ts +131 -0
  45. package/src/browser/code-completion-prompt-template.ts +41 -6
  46. package/src/browser/code-completion-variable-context.ts +30 -0
  47. package/src/browser/code-completion-variable-contribution.spec.ts +160 -0
  48. package/src/browser/code-completion-variable-contribution.ts +145 -0
  49. package/src/browser/code-completion-variables.ts +41 -0
@@ -1 +1 @@
1
- {"version":3,"file":"ai-code-completion-frontend-module.d.ts","sourceRoot":"","sources":["../../src/browser/ai-code-completion-frontend-module.ts"],"names":[],"mappings":"AAgBA,OAAO,EAAE,eAAe,EAAE,MAAM,8BAA8B,CAAC;;AAS/D,wBAUG"}
1
+ {"version":3,"file":"ai-code-completion-frontend-module.d.ts","sourceRoot":"","sources":["../../src/browser/ai-code-completion-frontend-module.ts"],"names":[],"mappings":"AAkBA,OAAO,EAAE,eAAe,EAAE,MAAM,8BAA8B,CAAC;;AAQ/D,wBAWG"}
@@ -15,14 +15,15 @@
15
15
  // SPDX-License-Identifier: EPL-2.0 OR GPL-2.0-only WITH Classpath-exception-2.0
16
16
  // *****************************************************************************
17
17
  Object.defineProperty(exports, "__esModule", { value: true });
18
- const inversify_1 = require("@theia/core/shared/inversify");
19
- const code_completion_agent_1 = require("./code-completion-agent");
20
- const ai_code_frontend_application_contribution_1 = require("./ai-code-frontend-application-contribution");
21
- const browser_1 = require("@theia/core/lib/browser");
22
18
  const ai_core_1 = require("@theia/ai-core");
19
+ const browser_1 = require("@theia/core/lib/browser");
20
+ const inversify_1 = require("@theia/core/shared/inversify");
23
21
  const ai_code_completion_preference_1 = require("./ai-code-completion-preference");
22
+ const ai_code_frontend_application_contribution_1 = require("./ai-code-frontend-application-contribution");
24
23
  const ai_code_inline_completion_provider_1 = require("./ai-code-inline-completion-provider");
24
+ const code_completion_agent_1 = require("./code-completion-agent");
25
25
  const code_completion_postprocessor_1 = require("./code-completion-postprocessor");
26
+ const code_completion_variable_contribution_1 = require("./code-completion-variable-contribution");
26
27
  exports.default = new inversify_1.ContainerModule(bind => {
27
28
  bind(code_completion_agent_1.CodeCompletionAgentImpl).toSelf().inSingletonScope();
28
29
  bind(code_completion_agent_1.CodeCompletionAgent).toService(code_completion_agent_1.CodeCompletionAgentImpl);
@@ -33,5 +34,6 @@ exports.default = new inversify_1.ContainerModule(bind => {
33
34
  bind(browser_1.KeybindingContribution).toService(ai_code_frontend_application_contribution_1.AIFrontendApplicationContribution);
34
35
  bind(browser_1.PreferenceContribution).toConstantValue({ schema: ai_code_completion_preference_1.AICodeCompletionPreferencesSchema });
35
36
  bind(code_completion_postprocessor_1.CodeCompletionPostProcessor).to(code_completion_postprocessor_1.DefaultCodeCompletionPostProcessor).inSingletonScope();
37
+ bind(ai_core_1.AIVariableContribution).to(code_completion_variable_contribution_1.CodeCompletionVariableContribution).inSingletonScope();
36
38
  });
37
39
  //# sourceMappingURL=ai-code-completion-frontend-module.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"ai-code-completion-frontend-module.js","sourceRoot":"","sources":["../../src/browser/ai-code-completion-frontend-module.ts"],"names":[],"mappings":";AAAA,gFAAgF;AAChF,yCAAyC;AACzC,EAAE;AACF,2EAA2E;AAC3E,mEAAmE;AACnE,wCAAwC;AACxC,EAAE;AACF,4EAA4E;AAC5E,8EAA8E;AAC9E,6EAA6E;AAC7E,yDAAyD;AACzD,uDAAuD;AACvD,EAAE;AACF,gFAAgF;AAChF,gFAAgF;;AAEhF,4DAA+D;AAC/D,mEAAuF;AACvF,2GAAgG;AAChG,qDAA0H;AAC1H,4CAAuC;AACvC,mFAAoF;AACpF,6FAAuF;AACvF,mFAAkH;AAElH,kBAAe,IAAI,2BAAe,CAAC,IAAI,CAAC,EAAE;IACtC,IAAI,CAAC,+CAAuB,CAAC,CAAC,MAAM,EAAE,CAAC,gBAAgB,EAAE,CAAC;IAC1D,IAAI,CAAC,2CAAmB,CAAC,CAAC,SAAS,CAAC,+CAAuB,CAAC,CAAC;IAC7D,IAAI,CAAC,eAAK,CAAC,CAAC,SAAS,CAAC,+CAAuB,CAAC,CAAC;IAC/C,IAAI,CAAC,oEAA+B,CAAC,CAAC,MAAM,EAAE,CAAC,gBAAgB,EAAE,CAAC;IAClE,IAAI,CAAC,6EAAiC,CAAC,CAAC,MAAM,EAAE,CAAC,gBAAgB,EAAE,CAAC;IACpE,IAAI,CAAC,yCAA+B,CAAC,CAAC,EAAE,CAAC,6EAAiC,CAAC,CAAC;IAC5E,IAAI,CAAC,gCAAsB,CAAC,CAAC,SAAS,CAAC,6EAAiC,CAAC,CAAC;IAC1E,IAAI,CAAC,gCAAsB,CAAC,CAAC,eAAe,CAAC,EAAE,MAAM,EAAE,iEAAiC,EAAE,CAAC,CAAC;IAC5F,IAAI,CAAC,2DAA2B,CAAC,CAAC,EAAE,CAAC,kEAAkC,CAAC,CAAC,gBAAgB,EAAE,CAAC;AAChG,CAAC,CAAC,CAAC"}
1
+ {"version":3,"file":"ai-code-completion-frontend-module.js","sourceRoot":"","sources":["../../src/browser/ai-code-completion-frontend-module.ts"],"names":[],"mappings":";AAAA,gFAAgF;AAChF,yCAAyC;AACzC,EAAE;AACF,2EAA2E;AAC3E,mEAAmE;AACnE,wCAAwC;AACxC,EAAE;AACF,4EAA4E;AAC5E,8EAA8E;AAC9E,6EAA6E;AAC7E,yDAAyD;AACzD,uDAAuD;AACvD,EAAE;AACF,gFAAgF;AAChF,gFAAgF;;AAEhF,4CAA+D;AAC/D,qDAA0H;AAC1H,4DAA+D;AAC/D,mFAAoF;AACpF,2GAAgG;AAChG,6FAAuF;AACvF,mEAAuF;AACvF,mFAAkH;AAClH,mGAA6F;AAE7F,kBAAe,IAAI,2BAAe,CAAC,IAAI,CAAC,EAAE;IACtC,IAAI,CAAC,+CAAuB,CAAC,CAAC,MAAM,EAAE,CAAC,gBAAgB,EAAE,CAAC;IAC1D,IAAI,CAAC,2CAAmB,CAAC,CAAC,SAAS,CAAC,+CAAuB,CAAC,CAAC;IAC7D,IAAI,CAAC,eAAK,CAAC,CAAC,SAAS,CAAC,+CAAuB,CAAC,CAAC;IAC/C,IAAI,CAAC,oEAA+B,CAAC,CAAC,MAAM,EAAE,CAAC,gBAAgB,EAAE,CAAC;IAClE,IAAI,CAAC,6EAAiC,CAAC,CAAC,MAAM,EAAE,CAAC,gBAAgB,EAAE,CAAC;IACpE,IAAI,CAAC,yCAA+B,CAAC,CAAC,EAAE,CAAC,6EAAiC,CAAC,CAAC;IAC5E,IAAI,CAAC,gCAAsB,CAAC,CAAC,SAAS,CAAC,6EAAiC,CAAC,CAAC;IAC1E,IAAI,CAAC,gCAAsB,CAAC,CAAC,eAAe,CAAC,EAAE,MAAM,EAAE,iEAAiC,EAAE,CAAC,CAAC;IAC5F,IAAI,CAAC,2DAA2B,CAAC,CAAC,EAAE,CAAC,kEAAkC,CAAC,CAAC,gBAAgB,EAAE,CAAC;IAC5F,IAAI,CAAC,gCAAsB,CAAC,CAAC,EAAE,CAAC,0EAAkC,CAAC,CAAC,gBAAgB,EAAE,CAAC;AAC3F,CAAC,CAAC,CAAC"}
@@ -4,5 +4,6 @@ export declare const PREF_AI_INLINE_COMPLETION_DEBOUNCE_DELAY = "ai-features.cod
4
4
  export declare const PREF_AI_INLINE_COMPLETION_EXCLUDED_EXTENSIONS = "ai-features.codeCompletion.excludedFileExtensions";
5
5
  export declare const PREF_AI_INLINE_COMPLETION_MAX_CONTEXT_LINES = "ai-features.codeCompletion.maxContextLines";
6
6
  export declare const PREF_AI_INLINE_COMPLETION_STRIP_BACKTICKS = "ai-features.codeCompletion.stripBackticks";
7
+ export declare const PREF_AI_INLINE_COMPLETION_CACHE_CAPACITY = "ai-features.codeCompletion.cacheCapacity";
7
8
  export declare const AICodeCompletionPreferencesSchema: PreferenceSchema;
8
9
  //# sourceMappingURL=ai-code-completion-preference.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"ai-code-completion-preference.d.ts","sourceRoot":"","sources":["../../src/browser/ai-code-completion-preference.ts"],"names":[],"mappings":"AAgBA,OAAO,EAAE,gBAAgB,EAAE,MAAM,6DAA6D,CAAC;AAI/F,eAAO,MAAM,0CAA0C,uDAAuD,CAAC;AAC/G,eAAO,MAAM,wCAAwC,6CAA6C,CAAC;AACnG,eAAO,MAAM,6CAA6C,sDAAsD,CAAC;AACjH,eAAO,MAAM,2CAA2C,+CAA+C,CAAC;AACxG,eAAO,MAAM,yCAAyC,8CAA8C,CAAC;AAErG,eAAO,MAAM,iCAAiC,EAAE,gBA+C/C,CAAC"}
1
+ {"version":3,"file":"ai-code-completion-preference.d.ts","sourceRoot":"","sources":["../../src/browser/ai-code-completion-preference.ts"],"names":[],"mappings":"AAgBA,OAAO,EAAE,gBAAgB,EAAE,MAAM,6DAA6D,CAAC;AAI/F,eAAO,MAAM,0CAA0C,uDAAuD,CAAC;AAC/G,eAAO,MAAM,wCAAwC,6CAA6C,CAAC;AACnG,eAAO,MAAM,6CAA6C,sDAAsD,CAAC;AACjH,eAAO,MAAM,2CAA2C,+CAA+C,CAAC;AACxG,eAAO,MAAM,yCAAyC,8CAA8C,CAAC;AACrG,eAAO,MAAM,wCAAwC,6CAA6C,CAAC;AAEnG,eAAO,MAAM,iCAAiC,EAAE,gBAwD/C,CAAC"}
@@ -15,7 +15,7 @@
15
15
  // SPDX-License-Identifier: EPL-2.0 OR GPL-2.0-only WITH Classpath-exception-2.0
16
16
  // *****************************************************************************
17
17
  Object.defineProperty(exports, "__esModule", { value: true });
18
- exports.AICodeCompletionPreferencesSchema = exports.PREF_AI_INLINE_COMPLETION_STRIP_BACKTICKS = exports.PREF_AI_INLINE_COMPLETION_MAX_CONTEXT_LINES = exports.PREF_AI_INLINE_COMPLETION_EXCLUDED_EXTENSIONS = exports.PREF_AI_INLINE_COMPLETION_DEBOUNCE_DELAY = exports.PREF_AI_INLINE_COMPLETION_AUTOMATIC_ENABLE = void 0;
18
+ exports.AICodeCompletionPreferencesSchema = exports.PREF_AI_INLINE_COMPLETION_CACHE_CAPACITY = exports.PREF_AI_INLINE_COMPLETION_STRIP_BACKTICKS = exports.PREF_AI_INLINE_COMPLETION_MAX_CONTEXT_LINES = exports.PREF_AI_INLINE_COMPLETION_EXCLUDED_EXTENSIONS = exports.PREF_AI_INLINE_COMPLETION_DEBOUNCE_DELAY = exports.PREF_AI_INLINE_COMPLETION_AUTOMATIC_ENABLE = void 0;
19
19
  const ai_core_preferences_1 = require("@theia/ai-core/lib/browser/ai-core-preferences");
20
20
  const core_1 = require("@theia/core");
21
21
  exports.PREF_AI_INLINE_COMPLETION_AUTOMATIC_ENABLE = 'ai-features.codeCompletion.automaticCodeCompletion';
@@ -23,6 +23,7 @@ exports.PREF_AI_INLINE_COMPLETION_DEBOUNCE_DELAY = 'ai-features.codeCompletion.d
23
23
  exports.PREF_AI_INLINE_COMPLETION_EXCLUDED_EXTENSIONS = 'ai-features.codeCompletion.excludedFileExtensions';
24
24
  exports.PREF_AI_INLINE_COMPLETION_MAX_CONTEXT_LINES = 'ai-features.codeCompletion.maxContextLines';
25
25
  exports.PREF_AI_INLINE_COMPLETION_STRIP_BACKTICKS = 'ai-features.codeCompletion.stripBackticks';
26
+ exports.PREF_AI_INLINE_COMPLETION_CACHE_CAPACITY = 'ai-features.codeCompletion.cacheCapacity';
26
27
  exports.AICodeCompletionPreferencesSchema = {
27
28
  type: 'object',
28
29
  properties: {
@@ -64,6 +65,14 @@ exports.AICodeCompletionPreferencesSchema = {
64
65
  description: core_1.nls.localize('theia/ai/completion/stripBackticks/description', 'Remove surrounding backticks from the code returned by some LLMs. If a backtick is detected, all content after the closing\
65
66
  backtick is stripped as well. This setting helps ensure plain code is returned when language models use markdown-like formatting.'),
66
67
  default: true
68
+ },
69
+ [exports.PREF_AI_INLINE_COMPLETION_CACHE_CAPACITY]: {
70
+ title: core_1.nls.localize('theia/ai/completion/cacheCapacity/title', 'Code Completion Cache Capacity'),
71
+ type: 'number',
72
+ description: core_1.nls.localize('theia/ai/completion/cacheCapacity/description', 'Maximum number of code completions to store in the cache. A higher number can improve performance but will consume more memory.\
73
+ Minimum value is 10, recommended range is between 50-200.'),
74
+ default: 100,
75
+ minimum: 10
67
76
  }
68
77
  }
69
78
  };
@@ -1 +1 @@
1
- {"version":3,"file":"ai-code-completion-preference.js","sourceRoot":"","sources":["../../src/browser/ai-code-completion-preference.ts"],"names":[],"mappings":";AAAA,gFAAgF;AAChF,yCAAyC;AACzC,EAAE;AACF,2EAA2E;AAC3E,mEAAmE;AACnE,wCAAwC;AACxC,EAAE;AACF,4EAA4E;AAC5E,8EAA8E;AAC9E,6EAA6E;AAC7E,yDAAyD;AACzD,uDAAuD;AACvD,EAAE;AACF,gFAAgF;AAChF,gFAAgF;;;AAGhF,wFAA2F;AAC3F,sCAAkC;AAErB,QAAA,0CAA0C,GAAG,oDAAoD,CAAC;AAClG,QAAA,wCAAwC,GAAG,0CAA0C,CAAC;AACtF,QAAA,6CAA6C,GAAG,mDAAmD,CAAC;AACpG,QAAA,2CAA2C,GAAG,4CAA4C,CAAC;AAC3F,QAAA,yCAAyC,GAAG,2CAA2C,CAAC;AAExF,QAAA,iCAAiC,GAAqB;IAC/D,IAAI,EAAE,QAAQ;IACd,UAAU,EAAE;QACR,CAAC,kDAA0C,CAAC,EAAE;YAC1C,KAAK,EAAE,+CAAyB;YAChC,IAAI,EAAE,SAAS;YACf,WAAW,EAAE,UAAG,CAAC,QAAQ,CAAC,iDAAiD,EACvE;;mJAEmI,CAAC;YACxI,OAAO,EAAE,KAAK;SACjB;QACD,CAAC,gDAAwC,CAAC,EAAE;YACxC,KAAK,EAAE,UAAG,CAAC,QAAQ,CAAC,yCAAyC,EAAE,gBAAgB,CAAC;YAChF,IAAI,EAAE,QAAQ;YACd,WAAW,EAAE,UAAG,CAAC,QAAQ,CAAC,+CAA+C,EACrE;2GAC2F,CAAC;YAChG,OAAO,EAAE,GAAG;SACf;QACD,CAAC,qDAA6C,CAAC,EAAE;YAC7C,KAAK,EAAE,UAAG,CAAC,QAAQ,CAAC,4CAA4C,EAAE,0BAA0B,CAAC;YAC7F,IAAI,EAAE,OAAO;YACb,WAAW,EAAE,UAAG,CAAC,QAAQ,CAAC,kDAAkD,EAAE,oFAAoF,CAAC;YACnK,KAAK,EAAE;gBACH,IAAI,EAAE,QAAQ;aACjB;YACD,OAAO,EAAE,EAAE;SACd;QACD,CAAC,mDAA2C,CAAC,EAAE;YAC3C,KAAK,EAAE,UAAG,CAAC,QAAQ,CAAC,2CAA2C,EAAE,uBAAuB,CAAC;YACzF,IAAI,EAAE,QAAQ;YACd,WAAW,EAAE,UAAG,CAAC,QAAQ,CAAC,iDAAiD,EACvE;sHACsG,CAAC;YAC3G,OAAO,EAAE,CAAC,CAAC;YACX,OAAO,EAAE,CAAC,CAAC;SACd;QACD,CAAC,iDAAyC,CAAC,EAAE;YACzC,KAAK,EAAE,UAAG,CAAC,QAAQ,CAAC,0CAA0C,EAAE,yCAAyC,CAAC;YAC1G,IAAI,EAAE,SAAS;YACf,WAAW,EAAE,UAAG,CAAC,QAAQ,CAAC,gDAAgD,EACtE;+IAC+H,CAAC;YACpI,OAAO,EAAE,IAAI;SAChB;KACJ;CACJ,CAAC"}
1
+ {"version":3,"file":"ai-code-completion-preference.js","sourceRoot":"","sources":["../../src/browser/ai-code-completion-preference.ts"],"names":[],"mappings":";AAAA,gFAAgF;AAChF,yCAAyC;AACzC,EAAE;AACF,2EAA2E;AAC3E,mEAAmE;AACnE,wCAAwC;AACxC,EAAE;AACF,4EAA4E;AAC5E,8EAA8E;AAC9E,6EAA6E;AAC7E,yDAAyD;AACzD,uDAAuD;AACvD,EAAE;AACF,gFAAgF;AAChF,gFAAgF;;;AAGhF,wFAA2F;AAC3F,sCAAkC;AAErB,QAAA,0CAA0C,GAAG,oDAAoD,CAAC;AAClG,QAAA,wCAAwC,GAAG,0CAA0C,CAAC;AACtF,QAAA,6CAA6C,GAAG,mDAAmD,CAAC;AACpG,QAAA,2CAA2C,GAAG,4CAA4C,CAAC;AAC3F,QAAA,yCAAyC,GAAG,2CAA2C,CAAC;AACxF,QAAA,wCAAwC,GAAG,0CAA0C,CAAC;AAEtF,QAAA,iCAAiC,GAAqB;IAC/D,IAAI,EAAE,QAAQ;IACd,UAAU,EAAE;QACR,CAAC,kDAA0C,CAAC,EAAE;YAC1C,KAAK,EAAE,+CAAyB;YAChC,IAAI,EAAE,SAAS;YACf,WAAW,EAAE,UAAG,CAAC,QAAQ,CAAC,iDAAiD,EACvE;;mJAEmI,CAAC;YACxI,OAAO,EAAE,KAAK;SACjB;QACD,CAAC,gDAAwC,CAAC,EAAE;YACxC,KAAK,EAAE,UAAG,CAAC,QAAQ,CAAC,yCAAyC,EAAE,gBAAgB,CAAC;YAChF,IAAI,EAAE,QAAQ;YACd,WAAW,EAAE,UAAG,CAAC,QAAQ,CAAC,+CAA+C,EACrE;2GAC2F,CAAC;YAChG,OAAO,EAAE,GAAG;SACf;QACD,CAAC,qDAA6C,CAAC,EAAE;YAC7C,KAAK,EAAE,UAAG,CAAC,QAAQ,CAAC,4CAA4C,EAAE,0BAA0B,CAAC;YAC7F,IAAI,EAAE,OAAO;YACb,WAAW,EAAE,UAAG,CAAC,QAAQ,CAAC,kDAAkD,EAAE,oFAAoF,CAAC;YACnK,KAAK,EAAE;gBACH,IAAI,EAAE,QAAQ;aACjB;YACD,OAAO,EAAE,EAAE;SACd;QACD,CAAC,mDAA2C,CAAC,EAAE;YAC3C,KAAK,EAAE,UAAG,CAAC,QAAQ,CAAC,2CAA2C,EAAE,uBAAuB,CAAC;YACzF,IAAI,EAAE,QAAQ;YACd,WAAW,EAAE,UAAG,CAAC,QAAQ,CAAC,iDAAiD,EACvE;sHACsG,CAAC;YAC3G,OAAO,EAAE,CAAC,CAAC;YACX,OAAO,EAAE,CAAC,CAAC;SACd;QACD,CAAC,iDAAyC,CAAC,EAAE;YACzC,KAAK,EAAE,UAAG,CAAC,QAAQ,CAAC,0CAA0C,EAAE,yCAAyC,CAAC;YAC1G,IAAI,EAAE,SAAS;YACf,WAAW,EAAE,UAAG,CAAC,QAAQ,CAAC,gDAAgD,EACtE;+IAC+H,CAAC;YACpI,OAAO,EAAE,IAAI;SAChB;QACD,CAAC,gDAAwC,CAAC,EAAE;YACxC,KAAK,EAAE,UAAG,CAAC,QAAQ,CAAC,yCAAyC,EAAE,gCAAgC,CAAC;YAChG,IAAI,EAAE,QAAQ;YACd,WAAW,EAAE,UAAG,CAAC,QAAQ,CAAC,+CAA+C,EACrE;0EAC0D,CAAC;YAC/D,OAAO,EAAE,GAAG;YACZ,OAAO,EAAE,EAAE;SACd;KACJ;CACJ,CAAC"}
@@ -5,6 +5,7 @@ export declare class AIFrontendApplicationContribution implements FrontendApplic
5
5
  private inlineCodeCompletionProvider;
6
6
  protected readonly preferenceService: PreferenceService;
7
7
  protected readonly activationService: AIActivationService;
8
+ private completionCache;
8
9
  private debouncer;
9
10
  private debounceDelay;
10
11
  private toDispose;
@@ -1 +1 @@
1
- {"version":3,"file":"ai-code-frontend-application-contribution.d.ts","sourceRoot":"","sources":["../../src/browser/ai-code-frontend-application-contribution.ts"],"names":[],"mappings":"AAkBA,OAAO,EAAE,mBAAmB,EAAE,MAAM,4BAA4B,CAAC;AACjE,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACzC,OAAO,EAAE,+BAA+B,EAAE,sBAAsB,EAAE,kBAAkB,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAC;AAWzI,qBACa,iCAAkC,YAAW,+BAA+B,EAAE,sBAAsB;IAE7G,OAAO,CAAC,4BAA4B,CAAkC;IAGtE,SAAS,CAAC,QAAQ,CAAC,iBAAiB,EAAE,iBAAiB,CAAC;IAGxD,SAAS,CAAC,QAAQ,CAAC,iBAAiB,EAAE,mBAAmB,CAAC;IAE1D,OAAO,CAAC,SAAS,CAAmC;IACpD,OAAO,CAAC,aAAa,CAAS;IAE9B,OAAO,CAAC,SAAS,CAAiC;IAElD,qBAAqB,IAAI,IAAI;IAM7B,SAAS,CAAC,iBAAiB,IAAI,IAAI;IAwBnC,mBAAmB,CAAC,WAAW,EAAE,kBAAkB,GAAG,IAAI;IAQ1D,SAAS,CAAC,uBAAuB,IAAI,UAAU;CA6ClD"}
1
+ {"version":3,"file":"ai-code-frontend-application-contribution.d.ts","sourceRoot":"","sources":["../../src/browser/ai-code-frontend-application-contribution.ts"],"names":[],"mappings":"AAkBA,OAAO,EAAE,mBAAmB,EAAE,MAAM,4BAA4B,CAAC;AACjE,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACzC,OAAO,EAAE,+BAA+B,EAAE,sBAAsB,EAAE,kBAAkB,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAC;AAazI,qBACa,iCAAkC,YAAW,+BAA+B,EAAE,sBAAsB;IAE7G,OAAO,CAAC,4BAA4B,CAAkC;IAGtE,SAAS,CAAC,QAAQ,CAAC,iBAAiB,EAAE,iBAAiB,CAAC;IAGxD,SAAS,CAAC,QAAQ,CAAC,iBAAiB,EAAE,mBAAmB,CAAC;IAE1D,OAAO,CAAC,eAAe,CAA6B;IACpD,OAAO,CAAC,SAAS,CAAmC;IACpD,OAAO,CAAC,aAAa,CAAS;IAE9B,OAAO,CAAC,SAAS,CAAiC;IAElD,qBAAqB,IAAI,IAAI;IAM7B,SAAS,CAAC,iBAAiB,IAAI,IAAI;IA8BnC,mBAAmB,CAAC,WAAW,EAAE,kBAAkB,GAAG,IAAI;IAQ1D,SAAS,CAAC,uBAAuB,IAAI,UAAU;CA0DlD"}
@@ -26,8 +26,10 @@ const languages_1 = require("@theia/monaco-editor-core/esm/vs/editor/common/lang
26
26
  const ai_code_completion_preference_1 = require("./ai-code-completion-preference");
27
27
  const ai_code_inline_completion_provider_1 = require("./ai-code-inline-completion-provider");
28
28
  const code_completion_debouncer_1 = require("./code-completion-debouncer");
29
+ const code_completion_cache_1 = require("./code-completion-cache");
29
30
  let AIFrontendApplicationContribution = class AIFrontendApplicationContribution {
30
31
  constructor() {
32
+ this.completionCache = new code_completion_cache_1.CodeCompletionCache();
31
33
  this.debouncer = new code_completion_debouncer_1.InlineCompletionDebouncer();
32
34
  this.toDispose = new Map();
33
35
  }
@@ -40,6 +42,8 @@ let AIFrontendApplicationContribution = class AIFrontendApplicationContribution
40
42
  const handler = () => this.handleInlineCompletions();
41
43
  this.toDispose.set('inlineCompletions', handler());
42
44
  this.debounceDelay = this.preferenceService.get(ai_code_completion_preference_1.PREF_AI_INLINE_COMPLETION_DEBOUNCE_DELAY, 300);
45
+ const cacheCapacity = this.preferenceService.get(ai_code_completion_preference_1.PREF_AI_INLINE_COMPLETION_CACHE_CAPACITY, 100);
46
+ this.completionCache.setMaxSize(cacheCapacity);
43
47
  this.preferenceService.onPreferenceChanged(event => {
44
48
  var _a;
45
49
  if (event.preferenceName === ai_code_completion_preference_1.PREF_AI_INLINE_COMPLETION_AUTOMATIC_ENABLE
@@ -50,6 +54,9 @@ let AIFrontendApplicationContribution = class AIFrontendApplicationContribution
50
54
  if (event.preferenceName === ai_code_completion_preference_1.PREF_AI_INLINE_COMPLETION_DEBOUNCE_DELAY) {
51
55
  this.debounceDelay = event.newValue;
52
56
  }
57
+ if (event.preferenceName === ai_code_completion_preference_1.PREF_AI_INLINE_COMPLETION_CACHE_CAPACITY) {
58
+ this.completionCache.setMaxSize(event.newValue);
59
+ }
53
60
  });
54
61
  this.activationService.onDidChangeActiveStatus(change => {
55
62
  var _a;
@@ -79,9 +86,18 @@ let AIFrontendApplicationContribution = class AIFrontendApplicationContribution
79
86
  if (excludedExtensions.some(ext => fileName.endsWith(ext))) {
80
87
  return { items: [] };
81
88
  }
82
- const completionHandler = () => {
89
+ const completionHandler = async () => {
83
90
  try {
84
- return this.inlineCodeCompletionProvider.provideInlineCompletions(model, position, context, token);
91
+ const cacheKey = this.completionCache.generateKey(fileName, model, position);
92
+ const cachedCompletion = this.completionCache.get(cacheKey);
93
+ if (cachedCompletion) {
94
+ return cachedCompletion;
95
+ }
96
+ const completion = await this.inlineCodeCompletionProvider.provideInlineCompletions(model, position, context, token);
97
+ if (completion && completion.items.length > 0) {
98
+ this.completionCache.put(cacheKey, completion);
99
+ }
100
+ return completion;
85
101
  }
86
102
  catch (error) {
87
103
  console.error('Error providing inline completions:', error);
@@ -1 +1 @@
1
- {"version":3,"file":"ai-code-frontend-application-contribution.js","sourceRoot":"","sources":["../../src/browser/ai-code-frontend-application-contribution.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ai-code-frontend-application-contribution.js","sourceRoot":"","sources":["../../src/browser/ai-code-frontend-application-contribution.ts"],"names":[],"mappings":"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"}
@@ -1,7 +1,6 @@
1
1
  import { LanguageModelService } from '@theia/ai-core/lib/browser';
2
2
  import { Agent, AgentSpecificVariables, LanguageModelRegistry, LanguageModelRequirement, PromptService, PromptVariantSet } from '@theia/ai-core/lib/common';
3
3
  import { ILogger, ProgressService } from '@theia/core';
4
- import { PreferenceService } from '@theia/core/lib/browser';
5
4
  import * as monaco from '@theia/monaco-editor-core';
6
5
  import { CodeCompletionPostProcessor } from './code-completion-postprocessor';
7
6
  export declare const CodeCompletionAgent: unique symbol;
@@ -15,7 +14,6 @@ export declare class CodeCompletionAgentImpl implements CodeCompletionAgent {
15
14
  protected languageModelRegistry: LanguageModelRegistry;
16
15
  protected promptService: PromptService;
17
16
  protected progressService: ProgressService;
18
- protected preferences: PreferenceService;
19
17
  protected postProcessor: CodeCompletionPostProcessor;
20
18
  id: string;
21
19
  name: string;
@@ -25,6 +23,5 @@ export declare class CodeCompletionAgentImpl implements CodeCompletionAgent {
25
23
  readonly variables: string[];
26
24
  readonly functions: string[];
27
25
  readonly agentSpecificVariables: AgentSpecificVariables[];
28
- readonly tags?: string[] | undefined;
29
26
  }
30
27
  //# sourceMappingURL=code-completion-agent.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"code-completion-agent.d.ts","sourceRoot":"","sources":["../../src/browser/code-completion-agent.ts"],"names":[],"mappings":"AAgBA,OAAO,EAAE,oBAAoB,EAAE,MAAM,4BAA4B,CAAC;AAClE,OAAO,EACH,KAAK,EAAE,sBAAsB,EAC7B,qBAAqB,EAAE,wBAAwB,EAAE,aAAa,EAC9D,gBAAgB,EAEnB,MAAM,2BAA2B,CAAC;AACnC,OAAO,EAAgB,OAAO,EAAO,eAAe,EAAE,MAAM,aAAa,CAAC;AAC1E,OAAO,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAC;AAE5D,OAAO,KAAK,MAAM,MAAM,2BAA2B,CAAC;AAGpD,OAAO,EAAE,2BAA2B,EAAE,MAAM,iCAAiC,CAAC;AAE9E,eAAO,MAAM,mBAAmB,eAAgC,CAAC;AACjE,MAAM,WAAW,mBAAoB,SAAQ,KAAK;IAC9C,wBAAwB,CAAC,KAAK,EAAE,MAAM,CAAC,MAAM,CAAC,UAAU,EAAE,QAAQ,EAAE,MAAM,CAAC,QAAQ,EAC/E,OAAO,EAAE,MAAM,CAAC,SAAS,CAAC,uBAAuB,EAAE,KAAK,EAAE,MAAM,CAAC,iBAAiB,GAAG,OAAO,CAAC,MAAM,CAAC,SAAS,CAAC,iBAAiB,GAAG,SAAS,CAAC,CAAA;CACnJ;AAED,qBACa,uBAAwB,YAAW,mBAAmB;IAE/D,SAAS,CAAC,oBAAoB,EAAE,oBAAoB,CAAC;IAE/C,wBAAwB,CAC1B,KAAK,EAAE,MAAM,CAAC,MAAM,CAAC,UAAU,EAC/B,QAAQ,EAAE,MAAM,CAAC,QAAQ,EACzB,OAAO,EAAE,MAAM,CAAC,SAAS,CAAC,uBAAuB,EACjD,KAAK,EAAE,MAAM,CAAC,iBAAiB,GAChC,OAAO,CAAC,MAAM,CAAC,SAAS,CAAC,iBAAiB,GAAG,SAAS,CAAC;IAsH1D,SAAS,CAAC,MAAM,EAAE,OAAO,CAAC;IAG1B,SAAS,CAAC,qBAAqB,EAAE,qBAAqB,CAAC;IAGvD,SAAS,CAAC,aAAa,EAAE,aAAa,CAAC;IAGvC,SAAS,CAAC,eAAe,EAAE,eAAe,CAAC;IAG3C,SAAS,CAAC,WAAW,EAAE,iBAAiB,CAAC;IAGzC,SAAS,CAAC,aAAa,EAAE,2BAA2B,CAAC;IAErD,EAAE,SAAqB;IACvB,IAAI,SAAqB;IACzB,WAAW,SACkI;IAC7I,OAAO,EAAE,gBAAgB,EAAE,CAAyB;IACpD,yBAAyB,EAAE,wBAAwB,EAAE,CAKnD;IACF,QAAQ,CAAC,SAAS,EAAE,MAAM,EAAE,CAAM;IAClC,QAAQ,CAAC,SAAS,EAAE,MAAM,EAAE,CAAM;IAClC,QAAQ,CAAC,sBAAsB,EAAE,sBAAsB,EAAE,CAKvD;IACF,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,GAAG,SAAS,CAAC;CACxC"}
1
+ {"version":3,"file":"code-completion-agent.d.ts","sourceRoot":"","sources":["../../src/browser/code-completion-agent.ts"],"names":[],"mappings":"AAgBA,OAAO,EAAE,oBAAoB,EAAE,MAAM,4BAA4B,CAAC;AAClE,OAAO,EACH,KAAK,EAAE,sBAAsB,EAC7B,qBAAqB,EAAE,wBAAwB,EAAE,aAAa,EAC9D,gBAAgB,EAEnB,MAAM,2BAA2B,CAAC;AACnC,OAAO,EAAgB,OAAO,EAAO,eAAe,EAAE,MAAM,aAAa,CAAC;AAE1E,OAAO,KAAK,MAAM,MAAM,2BAA2B,CAAC;AAEpD,OAAO,EAAE,2BAA2B,EAAE,MAAM,iCAAiC,CAAC;AAG9E,eAAO,MAAM,mBAAmB,eAAgC,CAAC;AACjE,MAAM,WAAW,mBAAoB,SAAQ,KAAK;IAC9C,wBAAwB,CAAC,KAAK,EAAE,MAAM,CAAC,MAAM,CAAC,UAAU,EAAE,QAAQ,EAAE,MAAM,CAAC,QAAQ,EAC/E,OAAO,EAAE,MAAM,CAAC,SAAS,CAAC,uBAAuB,EAAE,KAAK,EAAE,MAAM,CAAC,iBAAiB,GAAG,OAAO,CAAC,MAAM,CAAC,SAAS,CAAC,iBAAiB,GAAG,SAAS,CAAC,CAAA;CACnJ;AAED,qBACa,uBAAwB,YAAW,mBAAmB;IAE/D,SAAS,CAAC,oBAAoB,EAAE,oBAAoB,CAAC;IAE/C,wBAAwB,CAC1B,KAAK,EAAE,MAAM,CAAC,MAAM,CAAC,UAAU,EAC/B,QAAQ,EAAE,MAAM,CAAC,QAAQ,EACzB,OAAO,EAAE,MAAM,CAAC,SAAS,CAAC,uBAAuB,EACjD,KAAK,EAAE,MAAM,CAAC,iBAAiB,GAChC,OAAO,CAAC,MAAM,CAAC,SAAS,CAAC,iBAAiB,GAAG,SAAS,CAAC;IA+E1D,SAAS,CAAC,MAAM,EAAE,OAAO,CAAC;IAG1B,SAAS,CAAC,qBAAqB,EAAE,qBAAqB,CAAC;IAGvD,SAAS,CAAC,aAAa,EAAE,aAAa,CAAC;IAGvC,SAAS,CAAC,eAAe,EAAE,eAAe,CAAC;IAG3C,SAAS,CAAC,aAAa,EAAE,2BAA2B,CAAC;IAErD,EAAE,SAAqB;IACvB,IAAI,SAAqB;IACzB,WAAW,SACkI;IAC7I,OAAO,EAAE,gBAAgB,EAAE,CAAyB;IACpD,yBAAyB,EAAE,wBAAwB,EAAE,CAKnD;IACF,QAAQ,CAAC,SAAS,EAAE,MAAM,EAAE,CAAM;IAClC,QAAQ,CAAC,SAAS,EAAE,MAAM,EAAE,CAAM;IAClC,QAAQ,CAAC,sBAAsB,EAAE,sBAAsB,EAAE,CAAM;CAClE"}
@@ -20,10 +20,8 @@ const tslib_1 = require("tslib");
20
20
  const browser_1 = require("@theia/ai-core/lib/browser");
21
21
  const common_1 = require("@theia/ai-core/lib/common");
22
22
  const core_1 = require("@theia/core");
23
- const browser_2 = require("@theia/core/lib/browser");
24
23
  const inversify_1 = require("@theia/core/shared/inversify");
25
24
  const monaco = require("@theia/monaco-editor-core");
26
- const ai_code_completion_preference_1 = require("./ai-code-completion-preference");
27
25
  const code_completion_prompt_template_1 = require("./code-completion-prompt-template");
28
26
  const code_completion_postprocessor_1 = require("./code-completion-postprocessor");
29
27
  exports.CodeCompletionAgent = Symbol('CodeCompletionAgent');
@@ -41,12 +39,7 @@ let CodeCompletionAgentImpl = class CodeCompletionAgentImpl {
41
39
  ];
42
40
  this.variables = [];
43
41
  this.functions = [];
44
- this.agentSpecificVariables = [
45
- { name: 'file', usedInPrompt: true, description: 'The uri of the file being edited.' },
46
- { name: 'language', usedInPrompt: true, description: 'The languageId of the file being edited.' },
47
- { name: 'prefix', usedInPrompt: true, description: 'The code before the current position of the cursor.' },
48
- { name: 'suffix', usedInPrompt: true, description: 'The code after the current position of the cursor.' }
49
- ];
42
+ this.agentSpecificVariables = [];
50
43
  }
51
44
  async provideInlineCompletions(model, position, context, token) {
52
45
  const progress = await this.progressService.showProgress({ text: core_1.nls.localize('theia/ai/code-completion/progressText', 'Calculating AI code completion...'), options: { location: 'window' } });
@@ -59,43 +52,16 @@ let CodeCompletionAgentImpl = class CodeCompletionAgentImpl {
59
52
  this.logger.error('No language model found for code-completion-agent');
60
53
  return undefined;
61
54
  }
62
- const maxContextLines = this.preferences.get(ai_code_completion_preference_1.PREF_AI_INLINE_COMPLETION_MAX_CONTEXT_LINES, -1);
63
- let prefixStartLine = 1;
64
- let suffixEndLine = model.getLineCount();
65
- // if maxContextLines is -1, use the full file as context without any line limit
66
- if (maxContextLines === 0) {
67
- // Only the cursor line
68
- prefixStartLine = position.lineNumber;
69
- suffixEndLine = position.lineNumber;
70
- }
71
- else if (maxContextLines > 0) {
72
- const linesBeforeCursor = position.lineNumber - 1;
73
- const linesAfterCursor = model.getLineCount() - position.lineNumber;
74
- // Allocate one more line to the prefix in case of an odd maxContextLines
75
- const prefixLines = Math.min(Math.ceil(maxContextLines / 2), linesBeforeCursor);
76
- const suffixLines = Math.min(Math.floor(maxContextLines / 2), linesAfterCursor);
77
- prefixStartLine = Math.max(1, position.lineNumber - prefixLines);
78
- suffixEndLine = Math.min(model.getLineCount(), position.lineNumber + suffixLines);
79
- }
80
- const prefix = model.getValueInRange({
81
- startLineNumber: prefixStartLine,
82
- startColumn: 1,
83
- endLineNumber: position.lineNumber,
84
- endColumn: position.column,
85
- });
86
- const suffix = model.getValueInRange({
87
- startLineNumber: position.lineNumber,
88
- startColumn: position.column,
89
- endLineNumber: suffixEndLine,
90
- endColumn: model.getLineMaxColumn(suffixEndLine),
91
- });
92
- const file = model.uri.toString(false);
93
- const language = model.getLanguageId();
55
+ const variableContext = {
56
+ model,
57
+ position,
58
+ context
59
+ };
94
60
  if (token.isCancellationRequested) {
95
61
  return undefined;
96
62
  }
97
63
  const prompt = await this.promptService
98
- .getResolvedPromptFragment('code-completion-prompt', { prefix, suffix, file, language })
64
+ .getResolvedPromptFragment('code-completion-prompt', undefined, variableContext)
99
65
  .then(p => p === null || p === void 0 ? void 0 : p.text);
100
66
  if (!prompt) {
101
67
  this.logger.error('No prompt found for code-completion-agent');
@@ -166,10 +132,6 @@ tslib_1.__decorate([
166
132
  (0, inversify_1.inject)(core_1.ProgressService),
167
133
  tslib_1.__metadata("design:type", core_1.ProgressService)
168
134
  ], CodeCompletionAgentImpl.prototype, "progressService", void 0);
169
- tslib_1.__decorate([
170
- (0, inversify_1.inject)(browser_2.PreferenceService),
171
- tslib_1.__metadata("design:type", Object)
172
- ], CodeCompletionAgentImpl.prototype, "preferences", void 0);
173
135
  tslib_1.__decorate([
174
136
  (0, inversify_1.inject)(code_completion_postprocessor_1.CodeCompletionPostProcessor),
175
137
  tslib_1.__metadata("design:type", Object)
@@ -1 +1 @@
1
- {"version":3,"file":"code-completion-agent.js","sourceRoot":"","sources":["../../src/browser/code-completion-agent.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"code-completion-agent.js","sourceRoot":"","sources":["../../src/browser/code-completion-agent.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,40 @@
1
+ import * as monaco from '@theia/monaco-editor-core';
2
+ export declare class CodeCompletionCache {
3
+ private cache;
4
+ private maxSize;
5
+ constructor();
6
+ /**
7
+ * Generate a unique cache key based on input parameters
8
+ * @param filePath Path of the current file
9
+ * @param lineNumber Current line number
10
+ * @param lineText Context prefix for completion
11
+ * @returns Unique cache key
12
+ */
13
+ generateKey(filePath: string, model: monaco.editor.ITextModel, position: monaco.Position): string;
14
+ /**
15
+ * Get a cached completion if available
16
+ * @param key Cache key
17
+ * @returns Cached completion or undefined
18
+ */
19
+ get(key: string): monaco.languages.InlineCompletions | undefined;
20
+ /**
21
+ * Store a completion in the cache
22
+ * @param key Cache key
23
+ * @param value Completion value to cache
24
+ */
25
+ put(key: string, value: monaco.languages.InlineCompletions | undefined): void;
26
+ /**
27
+ * Clear the entire cache
28
+ */
29
+ clear(): void;
30
+ /**
31
+ * Remove the least recently used entry from the cache
32
+ */
33
+ private removeLeastRecentlyUsed;
34
+ /**
35
+ * Set the maximum cache size
36
+ * @param size New maximum cache size
37
+ */
38
+ setMaxSize(size: number): void;
39
+ }
40
+ //# sourceMappingURL=code-completion-cache.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"code-completion-cache.d.ts","sourceRoot":"","sources":["../../src/browser/code-completion-cache.ts"],"names":[],"mappings":"AAiBA,OAAO,KAAK,MAAM,MAAM,2BAA2B,CAAC;AAEpD,qBACa,mBAAmB;IAC5B,OAAO,CAAC,KAAK,CAA0B;IACvC,OAAO,CAAC,OAAO,CAAO;;IAMtB;;;;;;OAMG;IACH,WAAW,CAAC,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,CAAC,MAAM,CAAC,UAAU,EAAE,QAAQ,EAAE,MAAM,CAAC,QAAQ,GAAG,MAAM;IAqBjG;;;;OAIG;IACH,GAAG,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAAC,SAAS,CAAC,iBAAiB,GAAG,SAAS;IAUhE;;;;OAIG;IACH,GAAG,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,CAAC,SAAS,CAAC,iBAAiB,GAAG,SAAS,GAAG,IAAI;IAY7E;;OAEG;IACH,KAAK,IAAI,IAAI;IAIb;;OAEG;IACH,OAAO,CAAC,uBAAuB;IAgB/B;;;OAGG;IACH,UAAU,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI;CAOjC"}
@@ -0,0 +1,116 @@
1
+ "use strict";
2
+ // *****************************************************************************
3
+ // Copyright (C) 2025 EclipseSource GmbH.
4
+ //
5
+ // This program and the accompanying materials are made available under the
6
+ // terms of the Eclipse Public License v. 2.0 which is available at
7
+ // http://www.eclipse.org/legal/epl-2.0.
8
+ //
9
+ // This Source Code may also be made available under the following Secondary
10
+ // Licenses when the conditions for such availability set forth in the Eclipse
11
+ // Public License v. 2.0 are satisfied: GNU General Public License, version 2
12
+ // with the GNU Classpath Exception which is available at
13
+ // https://www.gnu.org/software/classpath/license.html.
14
+ //
15
+ // SPDX-License-Identifier: EPL-2.0 OR GPL-2.0-only WITH Classpath-exception-2.0
16
+ // *****************************************************************************
17
+ Object.defineProperty(exports, "__esModule", { value: true });
18
+ exports.CodeCompletionCache = void 0;
19
+ const tslib_1 = require("tslib");
20
+ const inversify_1 = require("@theia/core/shared/inversify");
21
+ const monaco = require("@theia/monaco-editor-core");
22
+ let CodeCompletionCache = class CodeCompletionCache {
23
+ constructor() {
24
+ this.maxSize = 100;
25
+ this.cache = new Map();
26
+ }
27
+ /**
28
+ * Generate a unique cache key based on input parameters
29
+ * @param filePath Path of the current file
30
+ * @param lineNumber Current line number
31
+ * @param lineText Context prefix for completion
32
+ * @returns Unique cache key
33
+ */
34
+ generateKey(filePath, model, position) {
35
+ const lineNumber = position.lineNumber;
36
+ const beforeCursorLineRange = new monaco.Range(position.lineNumber, 1, position.lineNumber, position.column);
37
+ const prefix = model.getValueInRange(beforeCursorLineRange);
38
+ const afterCursorLineRange = new monaco.Range(position.lineNumber, position.column, position.lineNumber, model.getLineMaxColumn(position.lineNumber));
39
+ const suffix = model.getValueInRange(afterCursorLineRange);
40
+ const key = JSON.stringify({
41
+ filePath,
42
+ lineNumber,
43
+ prefix,
44
+ suffix
45
+ });
46
+ return key;
47
+ }
48
+ /**
49
+ * Get a cached completion if available
50
+ * @param key Cache key
51
+ * @returns Cached completion or undefined
52
+ */
53
+ get(key) {
54
+ const entry = this.cache.get(key);
55
+ if (entry) {
56
+ // Update the entry's last accessed time
57
+ entry.lastAccessed = Date.now();
58
+ return entry.value;
59
+ }
60
+ return undefined;
61
+ }
62
+ /**
63
+ * Store a completion in the cache
64
+ * @param key Cache key
65
+ * @param value Completion value to cache
66
+ */
67
+ put(key, value) {
68
+ // If cache is full, remove the least recently used entry
69
+ if (this.cache.size >= this.maxSize) {
70
+ this.removeLeastRecentlyUsed();
71
+ }
72
+ this.cache.set(key, {
73
+ value,
74
+ lastAccessed: Date.now()
75
+ });
76
+ }
77
+ /**
78
+ * Clear the entire cache
79
+ */
80
+ clear() {
81
+ this.cache.clear();
82
+ }
83
+ /**
84
+ * Remove the least recently used entry from the cache
85
+ */
86
+ removeLeastRecentlyUsed() {
87
+ let oldestKey;
88
+ let oldestTime = Infinity;
89
+ for (const [key, entry] of this.cache.entries()) {
90
+ if (entry.lastAccessed < oldestTime) {
91
+ oldestKey = key;
92
+ oldestTime = entry.lastAccessed;
93
+ }
94
+ }
95
+ if (oldestKey) {
96
+ this.cache.delete(oldestKey);
97
+ }
98
+ }
99
+ /**
100
+ * Set the maximum cache size
101
+ * @param size New maximum cache size
102
+ */
103
+ setMaxSize(size) {
104
+ this.maxSize = size;
105
+ // Trim cache if it exceeds new size
106
+ while (this.cache.size > this.maxSize) {
107
+ this.removeLeastRecentlyUsed();
108
+ }
109
+ }
110
+ };
111
+ exports.CodeCompletionCache = CodeCompletionCache;
112
+ exports.CodeCompletionCache = CodeCompletionCache = tslib_1.__decorate([
113
+ (0, inversify_1.injectable)(),
114
+ tslib_1.__metadata("design:paramtypes", [])
115
+ ], CodeCompletionCache);
116
+ //# sourceMappingURL=code-completion-cache.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"code-completion-cache.js","sourceRoot":"","sources":["../../src/browser/code-completion-cache.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"code-completion-prompt-template.d.ts","sourceRoot":"","sources":["../../src/browser/code-completion-prompt-template.ts"],"names":[],"mappings":"AAWA,OAAO,EAAE,gBAAgB,EAAE,MAAM,2BAA2B,CAAC;AAE7D,eAAO,MAAM,qBAAqB,EAAE,gBAAgB,EAgCnD,CAAC"}
1
+ {"version":3,"file":"code-completion-prompt-template.d.ts","sourceRoot":"","sources":["../../src/browser/code-completion-prompt-template.ts"],"names":[],"mappings":"AAWA,OAAO,EAAE,gBAAgB,EAAE,MAAM,2BAA2B,CAAC;AAG7D,eAAO,MAAM,qBAAqB,EAAE,gBAAgB,EAkEnD,CAAC"}
@@ -11,6 +11,7 @@
11
11
  // *****************************************************************************
12
12
  Object.defineProperty(exports, "__esModule", { value: true });
13
13
  exports.codeCompletionPrompts = void 0;
14
+ const code_completion_variables_1 = require("./code-completion-variables");
14
15
  exports.codeCompletionPrompts = [{
15
16
  id: 'code-completion-prompt',
16
17
  variants: [{
@@ -18,13 +19,47 @@ exports.codeCompletionPrompts = [{
18
19
  template: `{{!-- This prompt is licensed under the MIT License (https://opensource.org/license/mit).
19
20
  Made improvements or adaptations to this prompt template? We’d love for you to share it with the community! Contribute back here:
20
21
  https://github.com/eclipse-theia/theia/discussions/new?category=prompt-template-contribution --}}
21
- You are a code completion agent. The current file you have to complete is named {{file}}.
22
- The language of the file is {{language}}. Return your result as plain text without markdown formatting.
22
+ You are a code completion agent. The current file you have to complete is named {{${code_completion_variables_1.FILE.id}}}.
23
+ The language of the file is {{${code_completion_variables_1.LANGUAGE.id}}}. Return your result as plain text without markdown formatting.
23
24
  Finish the following code snippet.
24
25
 
25
- {{prefix}}[[MARKER]]{{suffix}}
26
+ {{${code_completion_variables_1.PREFIX.id}}}[[MARKER]]{{${code_completion_variables_1.SUFFIX.id}}}
26
27
 
27
28
  Only return the exact replacement for [[MARKER]] to complete the snippet.`
29
+ },
30
+ {
31
+ id: 'code-completion-prompt-next',
32
+ template: `{{!-- This prompt is licensed under the MIT License (https://opensource.org/license/mit).
33
+ Made improvements or adaptations to this prompt template? We'd love for you to share it with the community! Contribute back here:
34
+ https://github.com/eclipse-theia/theia/discussions/new?category=prompt-template-contribution --}}
35
+ # System Role
36
+ You are an expert AI code completion assistant focused on generating precise, contextually appropriate code snippets.
37
+
38
+ ## Code Context
39
+ \`\`\`
40
+ {{${code_completion_variables_1.PREFIX.id}}}[[MARKER]]{{${code_completion_variables_1.SUFFIX.id}}}
41
+ \`\`\`
42
+
43
+ ## Metadata
44
+ - File: {{${code_completion_variables_1.FILE.id}}}
45
+ - Programming Language: {{${code_completion_variables_1.LANGUAGE.id}}}
46
+ - Project Context: {{prompt:project-info}}
47
+
48
+ # Completion Guidelines
49
+ 1. Analyze the surrounding code context carefully.
50
+ 2. Generate ONLY the code that should replace [[MARKER]].
51
+ 3. Ensure the completion:
52
+ - Maintains the exact syntax of the surrounding code
53
+ - Follows best practices for the specific programming language
54
+ - Completes the code snippet logically and efficiently
55
+ 4. Do NOT include any explanatory text, comments, or additional instructions.
56
+ 5. Return ONLY the raw code replacement.
57
+
58
+ # Constraints
59
+ - Return strictly the code for [[MARKER]]
60
+ - Match indentation and style of surrounding code
61
+ - Prioritize readability and maintainability
62
+ - Consider language-specific idioms and patterns`
28
63
  }],
29
64
  defaultVariant: {
30
65
  id: 'code-completion-prompt-default',
@@ -33,12 +68,12 @@ Made improvements or adaptations to this prompt template? We’d love for you to
33
68
  https://github.com/eclipse-theia/theia/discussions/new?category=prompt-template-contribution --}}
34
69
  ## Code snippet
35
70
  \`\`\`
36
- {{ prefix }}[[MARKER]]{{ suffix }}
71
+ {{${code_completion_variables_1.PREFIX.id}}}[[MARKER]]{{${code_completion_variables_1.SUFFIX.id}}}
37
72
  \`\`\`
38
73
 
39
74
  ## Meta Data
40
- - File: {{file}}
41
- - Language: {{language}}
75
+ - File: {{${code_completion_variables_1.FILE.id}}}
76
+ - Language: {{${code_completion_variables_1.LANGUAGE.id}}}
42
77
 
43
78
  Replace [[MARKER]] with the exact code to complete the code snippet. Return only the replacement of [[MARKER]] as plain text.`,
44
79
  },
@@ -1 +1 @@
1
- {"version":3,"file":"code-completion-prompt-template.js","sourceRoot":"","sources":["../../src/browser/code-completion-prompt-template.ts"],"names":[],"mappings":";AAAA,qDAAqD;AACrD,gFAAgF;AAChF,oDAAoD;AACpD,EAAE;AACF,+CAA+C;AAC/C,mEAAmE;AACnE,sCAAsC;AACtC,EAAE;AACF,+BAA+B;AAC/B,gFAAgF;;;AAInE,QAAA,qBAAqB,GAAuB,CAAC;QACtD,EAAE,EAAE,wBAAwB;QAC5B,QAAQ,EAAE,CAAC;gBACP,EAAE,EAAE,iCAAiC;gBACrC,QAAQ,EAAE;;;;;;;;;0EASwD;aACrE,CAAC;QACF,cAAc,EAAE;YACZ,EAAE,EAAE,gCAAgC;YACpC,QAAQ,EAAE;;;;;;;;;;;;8HAY4G;SACzH;KACJ;CACA,CAAC"}
1
+ {"version":3,"file":"code-completion-prompt-template.js","sourceRoot":"","sources":["../../src/browser/code-completion-prompt-template.ts"],"names":[],"mappings":";AAAA,qDAAqD;AACrD,gFAAgF;AAChF,oDAAoD;AACpD,EAAE;AACF,+CAA+C;AAC/C,mEAAmE;AACnE,sCAAsC;AACtC,EAAE;AACF,+BAA+B;AAC/B,gFAAgF;;;AAGhF,2EAA6E;AAEhE,QAAA,qBAAqB,GAAuB,CAAC;QACtD,EAAE,EAAE,wBAAwB;QAC5B,QAAQ,EAAE,CAAC;gBACP,EAAE,EAAE,iCAAiC;gBACrC,QAAQ,EAAE;;;oFAGkE,gCAAI,CAAC,EAAE;gCAC3D,oCAAQ,CAAC,EAAE;;;IAGvC,kCAAM,CAAC,EAAE,iBAAiB,kCAAM,CAAC,EAAE;;0EAEmC;aACrE;YACD;gBACI,EAAE,EAAE,6BAA6B;gBACjC,QAAQ,EAAE;;;;;;;;IAQd,kCAAM,CAAC,EAAE,iBAAiB,kCAAM,CAAC,EAAE;;;;YAI3B,gCAAI,CAAC,EAAE;4BACS,oCAAQ,CAAC,EAAE;;;;;;;;;;;;;;;;;iDAiBU;aAC5C,CAAC;QACF,cAAc,EAAE;YACZ,EAAE,EAAE,gCAAgC;YACpC,QAAQ,EAAE;;;;;IAKd,kCAAM,CAAC,EAAE,iBAAiB,kCAAM,CAAC,EAAE;;;;YAI3B,gCAAI,CAAC,EAAE;gBACH,oCAAQ,CAAC,EAAE;;8HAEmG;SACzH;KACJ;CACA,CAAC"}
@@ -0,0 +1,11 @@
1
+ import { AIVariableContext } from '@theia/ai-core';
2
+ import * as monaco from '@theia/monaco-editor-core';
3
+ export interface CodeCompletionVariableContext {
4
+ model: monaco.editor.ITextModel;
5
+ position: monaco.Position;
6
+ context: monaco.languages.InlineCompletionContext;
7
+ }
8
+ export declare namespace CodeCompletionVariableContext {
9
+ function is(context: AIVariableContext): context is CodeCompletionVariableContext;
10
+ }
11
+ //# sourceMappingURL=code-completion-variable-context.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"code-completion-variable-context.d.ts","sourceRoot":"","sources":["../../src/browser/code-completion-variable-context.ts"],"names":[],"mappings":"AAgBA,OAAO,EAAE,iBAAiB,EAAE,MAAM,gBAAgB,CAAC;AACnD,OAAO,KAAK,MAAM,MAAM,2BAA2B,CAAC;AAEpD,MAAM,WAAW,6BAA6B;IAC1C,KAAK,EAAE,MAAM,CAAC,MAAM,CAAC,UAAU,CAAC;IAChC,QAAQ,EAAE,MAAM,CAAC,QAAQ,CAAC;IAC1B,OAAO,EAAE,MAAM,CAAC,SAAS,CAAC,uBAAuB,CAAA;CACpD;AAED,yBAAiB,6BAA6B,CAAC;IAC3C,SAAgB,EAAE,CAAC,OAAO,EAAE,iBAAiB,GAAG,OAAO,IAAI,6BAA6B,CAEvF;CACJ"}