@theia/ai-chat 1.60.2 → 1.61.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (118) hide show
  1. package/lib/browser/ai-chat-frontend-contribution.d.ts +11 -0
  2. package/lib/browser/ai-chat-frontend-contribution.d.ts.map +1 -0
  3. package/lib/browser/ai-chat-frontend-contribution.js +56 -0
  4. package/lib/browser/ai-chat-frontend-contribution.js.map +1 -0
  5. package/lib/browser/ai-chat-frontend-module.d.ts.map +1 -1
  6. package/lib/browser/ai-chat-frontend-module.js +21 -3
  7. package/lib/browser/ai-chat-frontend-module.js.map +1 -1
  8. package/lib/browser/change-set-decorator-service.d.ts +24 -0
  9. package/lib/browser/change-set-decorator-service.d.ts.map +1 -0
  10. package/lib/browser/change-set-decorator-service.js +66 -0
  11. package/lib/browser/change-set-decorator-service.js.map +1 -0
  12. package/lib/browser/change-set-file-element.d.ts +7 -4
  13. package/lib/browser/change-set-file-element.d.ts.map +1 -1
  14. package/lib/browser/change-set-file-element.js +20 -12
  15. package/lib/browser/change-set-file-element.js.map +1 -1
  16. package/lib/browser/change-set-file-resource.d.ts +1 -42
  17. package/lib/browser/change-set-file-resource.d.ts.map +1 -1
  18. package/lib/browser/change-set-file-resource.js +1 -136
  19. package/lib/browser/change-set-file-resource.js.map +1 -1
  20. package/lib/browser/change-set-variable.d.ts.map +1 -1
  21. package/lib/browser/change-set-variable.js +13 -4
  22. package/lib/browser/change-set-variable.js.map +1 -1
  23. package/lib/browser/context-file-variable-label-provider.js +1 -1
  24. package/lib/browser/context-file-variable-label-provider.js.map +1 -1
  25. package/lib/browser/file-chat-variable-contribution.d.ts.map +1 -1
  26. package/lib/browser/file-chat-variable-contribution.js +29 -27
  27. package/lib/browser/file-chat-variable-contribution.js.map +1 -1
  28. package/lib/browser/task-context-service.d.ts +40 -0
  29. package/lib/browser/task-context-service.d.ts.map +1 -0
  30. package/lib/browser/task-context-service.js +148 -0
  31. package/lib/browser/task-context-service.js.map +1 -0
  32. package/lib/browser/task-context-storage-service.d.ts +18 -0
  33. package/lib/browser/task-context-storage-service.d.ts.map +1 -0
  34. package/lib/browser/task-context-storage-service.js +77 -0
  35. package/lib/browser/task-context-storage-service.js.map +1 -0
  36. package/lib/browser/task-context-variable-contribution.d.ts +20 -0
  37. package/lib/browser/task-context-variable-contribution.d.ts.map +1 -0
  38. package/lib/browser/task-context-variable-contribution.js +101 -0
  39. package/lib/browser/task-context-variable-contribution.js.map +1 -0
  40. package/lib/browser/task-context-variable-label-provider.d.ts +21 -0
  41. package/lib/browser/task-context-variable-label-provider.d.ts.map +1 -0
  42. package/lib/browser/task-context-variable-label-provider.js +83 -0
  43. package/lib/browser/task-context-variable-label-provider.js.map +1 -0
  44. package/lib/browser/task-context-variable.d.ts +3 -0
  45. package/lib/browser/task-context-variable.d.ts.map +1 -0
  46. package/lib/browser/task-context-variable.js +29 -0
  47. package/lib/browser/task-context-variable.js.map +1 -0
  48. package/lib/common/chat-agents.d.ts +2 -1
  49. package/lib/common/chat-agents.d.ts.map +1 -1
  50. package/lib/common/chat-agents.js +32 -20
  51. package/lib/common/chat-agents.js.map +1 -1
  52. package/lib/common/chat-model.d.ts +191 -8
  53. package/lib/common/chat-model.d.ts.map +1 -1
  54. package/lib/common/chat-model.js +369 -12
  55. package/lib/common/chat-model.js.map +1 -1
  56. package/lib/common/chat-request-parser.d.ts +1 -1
  57. package/lib/common/chat-request-parser.d.ts.map +1 -1
  58. package/lib/common/chat-request-parser.js +1 -1
  59. package/lib/common/chat-request-parser.js.map +1 -1
  60. package/lib/common/chat-service.d.ts +2 -0
  61. package/lib/common/chat-service.d.ts.map +1 -1
  62. package/lib/common/chat-service.js +18 -25
  63. package/lib/common/chat-service.js.map +1 -1
  64. package/lib/common/chat-session-naming-service.d.ts.map +1 -1
  65. package/lib/common/chat-session-naming-service.js +9 -11
  66. package/lib/common/chat-session-naming-service.js.map +1 -1
  67. package/lib/common/chat-session-summary-agent-prompt.d.ts +5 -0
  68. package/lib/common/chat-session-summary-agent-prompt.d.ts.map +1 -0
  69. package/lib/common/chat-session-summary-agent-prompt.js +30 -0
  70. package/lib/common/chat-session-summary-agent-prompt.js.map +1 -0
  71. package/lib/common/chat-session-summary-agent.d.ts +17 -0
  72. package/lib/common/chat-session-summary-agent.d.ts.map +1 -0
  73. package/lib/common/chat-session-summary-agent.js +48 -0
  74. package/lib/common/chat-session-summary-agent.js.map +1 -0
  75. package/lib/common/context-summary-variable.js +1 -1
  76. package/lib/common/context-summary-variable.js.map +1 -1
  77. package/lib/common/parse-contents-with-incomplete-parts.spec.d.ts +2 -0
  78. package/lib/common/parse-contents-with-incomplete-parts.spec.d.ts.map +1 -0
  79. package/lib/common/parse-contents-with-incomplete-parts.spec.js +103 -0
  80. package/lib/common/parse-contents-with-incomplete-parts.spec.js.map +1 -0
  81. package/lib/common/parse-contents.d.ts +1 -0
  82. package/lib/common/parse-contents.d.ts.map +1 -1
  83. package/lib/common/parse-contents.js +45 -5
  84. package/lib/common/parse-contents.js.map +1 -1
  85. package/lib/common/parse-contents.spec.d.ts +1 -0
  86. package/lib/common/parse-contents.spec.d.ts.map +1 -1
  87. package/lib/common/parse-contents.spec.js +25 -13
  88. package/lib/common/parse-contents.spec.js.map +1 -1
  89. package/lib/common/response-content-matcher.d.ts +6 -0
  90. package/lib/common/response-content-matcher.d.ts.map +1 -1
  91. package/lib/common/response-content-matcher.js +14 -3
  92. package/lib/common/response-content-matcher.js.map +1 -1
  93. package/package.json +11 -11
  94. package/src/browser/ai-chat-frontend-contribution.ts +49 -0
  95. package/src/browser/ai-chat-frontend-module.ts +25 -4
  96. package/src/browser/change-set-decorator-service.ts +72 -0
  97. package/src/browser/change-set-file-element.ts +18 -13
  98. package/src/browser/change-set-file-resource.ts +1 -138
  99. package/src/browser/change-set-variable.ts +14 -6
  100. package/src/browser/context-file-variable-label-provider.ts +1 -1
  101. package/src/browser/file-chat-variable-contribution.ts +26 -29
  102. package/src/browser/task-context-service.ts +144 -0
  103. package/src/browser/task-context-storage-service.ts +75 -0
  104. package/src/browser/task-context-variable-contribution.ts +93 -0
  105. package/src/browser/task-context-variable-label-provider.ts +67 -0
  106. package/src/browser/task-context-variable.ts +28 -0
  107. package/src/common/chat-agents.ts +38 -22
  108. package/src/common/chat-model.ts +566 -17
  109. package/src/common/chat-request-parser.ts +2 -2
  110. package/src/common/chat-service.ts +17 -26
  111. package/src/common/chat-session-naming-service.ts +13 -15
  112. package/src/common/chat-session-summary-agent-prompt.ts +28 -0
  113. package/src/common/chat-session-summary-agent.ts +42 -0
  114. package/src/common/context-summary-variable.ts +1 -1
  115. package/src/common/parse-contents-with-incomplete-parts.spec.ts +114 -0
  116. package/src/common/parse-contents.spec.ts +24 -12
  117. package/src/common/parse-contents.ts +52 -6
  118. package/src/common/response-content-matcher.ts +21 -3
@@ -1 +1 @@
1
- {"version":3,"file":"change-set-variable.d.ts","sourceRoot":"","sources":["../../src/browser/change-set-variable.ts"],"names":[],"mappings":"AAgBA,OAAO,EAAE,YAAY,EAAO,MAAM,aAAa,CAAC;AAEhD,OAAO,EAAE,UAAU,EAAE,kBAAkB,EAAE,sBAAsB,EAAE,kBAAkB,EAAE,iBAAiB,EAAE,2BAA2B,EAAE,iBAAiB,EAAE,MAAM,gBAAgB,CAAC;AAC/K,OAAO,EAAE,gBAAgB,EAAE,MAAM,8BAA8B,CAAC;AAGhE,eAAO,MAAM,2BAA2B,EAAE,UAKzC,CAAC;AAEF,qBACa,6BAA8B,YAAW,sBAAsB,EAAE,kBAAkB;IAE5F,SAAS,CAAC,QAAQ,CAAC,gBAAgB,EAAE,gBAAgB,CAAC;IAEtD,iBAAiB,CAAC,OAAO,EAAE,iBAAiB,GAAG,IAAI;IAInD,UAAU,CAAC,OAAO,EAAE,2BAA2B,EAAE,OAAO,EAAE,iBAAiB,GAAG,YAAY,CAAC,MAAM,CAAC;IAI5F,OAAO,CAAC,OAAO,EAAE,2BAA2B,EAAE,OAAO,EAAE,iBAAiB,GAAG,OAAO,CAAC,kBAAkB,GAAG,SAAS,CAAC;CAU3H"}
1
+ {"version":3,"file":"change-set-variable.d.ts","sourceRoot":"","sources":["../../src/browser/change-set-variable.ts"],"names":[],"mappings":"AAgBA,OAAO,EAAE,YAAY,EAAO,MAAM,aAAa,CAAC;AAEhD,OAAO,EAAE,UAAU,EAAE,kBAAkB,EAAE,sBAAsB,EAAE,kBAAkB,EAAE,iBAAiB,EAAE,2BAA2B,EAAE,iBAAiB,EAAE,MAAM,gBAAgB,CAAC;AAC/K,OAAO,EAAE,gBAAgB,EAAE,MAAM,8BAA8B,CAAC;AAGhE,eAAO,MAAM,2BAA2B,EAAE,UAKzC,CAAC;AAEF,qBACa,6BAA8B,YAAW,sBAAsB,EAAE,kBAAkB;IAE5F,SAAS,CAAC,QAAQ,CAAC,gBAAgB,EAAE,gBAAgB,CAAC;IAEtD,iBAAiB,CAAC,OAAO,EAAE,iBAAiB,GAAG,IAAI;IAInD,UAAU,CAAC,OAAO,EAAE,2BAA2B,EAAE,OAAO,EAAE,iBAAiB,GAAG,YAAY,CAAC,MAAM,CAAC;IAI5F,OAAO,CAAC,OAAO,EAAE,2BAA2B,EAAE,OAAO,EAAE,iBAAiB,GAAG,OAAO,CAAC,kBAAkB,GAAG,SAAS,CAAC;CAmB3H"}
@@ -22,9 +22,9 @@ const inversify_1 = require("@theia/core/shared/inversify");
22
22
  const browser_1 = require("@theia/workspace/lib/browser");
23
23
  const common_1 = require("../common");
24
24
  exports.CHANGE_SET_SUMMARY_VARIABLE = {
25
- id: 'changeSetSummary',
25
+ id: common_1.CHANGE_SET_SUMMARY_VARIABLE_ID,
26
26
  description: core_1.nls.localize('theia/ai/core/changeSetSummaryVariable/description', 'Provides a summary of the files in a change set and their contents.'),
27
- name: 'changeSetSummary',
27
+ name: common_1.CHANGE_SET_SUMMARY_VARIABLE_ID,
28
28
  };
29
29
  let ChangeSetVariableContribution = class ChangeSetVariableContribution {
30
30
  registerVariables(service) {
@@ -35,13 +35,22 @@ let ChangeSetVariableContribution = class ChangeSetVariableContribution {
35
35
  }
36
36
  async resolve(request, context) {
37
37
  var _a;
38
- if (!common_1.ChatSessionContext.is(context) || request.variable.name !== exports.CHANGE_SET_SUMMARY_VARIABLE.name || !((_a = context.model.changeSet) === null || _a === void 0 ? void 0 : _a.getElements().length)) {
38
+ if (!common_1.ChatSessionContext.is(context) || request.variable.name !== exports.CHANGE_SET_SUMMARY_VARIABLE.name) {
39
39
  return undefined;
40
40
  }
41
+ if (!((_a = context.model.changeSet) === null || _a === void 0 ? void 0 : _a.getElements().length)) {
42
+ return {
43
+ variable: exports.CHANGE_SET_SUMMARY_VARIABLE,
44
+ value: ''
45
+ };
46
+ }
41
47
  const entries = await Promise.all(context.model.changeSet.getElements().map(async (element) => `- file: ${await this.workspaceService.getWorkspaceRelativePath(element.uri)}, status: ${element.state}`));
42
48
  return {
43
49
  variable: exports.CHANGE_SET_SUMMARY_VARIABLE,
44
- value: entries.join('\n')
50
+ value: `## Previously Proposed Changes
51
+ You have previously proposed changes for the following files. Some suggestions may have been accepted by the user, while others may still be pending.
52
+ ${entries.join('\n')}
53
+ `
45
54
  };
46
55
  }
47
56
  };
@@ -1 +1 @@
1
- {"version":3,"file":"change-set-variable.js","sourceRoot":"","sources":["../../src/browser/change-set-variable.ts"],"names":[],"mappings":";AAAA,gFAAgF;AAChF,oDAAoD;AACpD,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,sCAAgD;AAChD,4DAAkE;AAElE,0DAAgE;AAChE,sCAA+C;AAElC,QAAA,2BAA2B,GAAe;IACnD,EAAE,EAAE,kBAAkB;IACtB,WAAW,EAAE,UAAG,CAAC,QAAQ,CAAC,oDAAoD,EAAE,qEAAqE,CAAC;IAEtJ,IAAI,EAAE,kBAAkB;CAC3B,CAAC;AAGK,IAAM,6BAA6B,GAAnC,MAAM,6BAA6B;IAItC,iBAAiB,CAAC,OAA0B;QACxC,OAAO,CAAC,gBAAgB,CAAC,mCAA2B,EAAE,IAAI,CAAC,CAAC;IAChE,CAAC;IAED,UAAU,CAAC,OAAoC,EAAE,OAA0B;QACvE,OAAO,OAAO,CAAC,QAAQ,CAAC,IAAI,KAAK,mCAA2B,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;IAC/E,CAAC;IAED,KAAK,CAAC,OAAO,CAAC,OAAoC,EAAE,OAA0B;;QAC1E,IAAI,CAAC,2BAAkB,CAAC,EAAE,CAAC,OAAO,CAAC,IAAI,OAAO,CAAC,QAAQ,CAAC,IAAI,KAAK,mCAA2B,CAAC,IAAI,IAAI,CAAC,CAAA,MAAA,OAAO,CAAC,KAAK,CAAC,SAAS,0CAAE,WAAW,GAAG,MAAM,CAAA,EAAE,CAAC;YAAC,OAAO,SAAS,CAAC;QAAC,CAAC;QAC1K,MAAM,OAAO,GAAG,MAAM,OAAO,CAAC,GAAG,CAC7B,OAAO,CAAC,KAAK,CAAC,SAAS,CAAC,WAAW,EAAE,CAAC,GAAG,CAAC,KAAK,EAAC,OAAO,EAAC,EAAE,CAAC,WAAW,MAAM,IAAI,CAAC,gBAAgB,CAAC,wBAAwB,CAAC,OAAO,CAAC,GAAG,CAAC,aAAa,OAAO,CAAC,KAAK,EAAE,CAAC,CACvK,CAAC;QACF,OAAO;YACH,QAAQ,EAAE,mCAA2B;YACrC,KAAK,EAAE,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC;SAC5B,CAAC;IACN,CAAC;CACJ,CAAA;AAtBY,sEAA6B;AAEnB;IADlB,IAAA,kBAAM,EAAC,0BAAgB,CAAC;sCACY,0BAAgB;uEAAC;wCAF7C,6BAA6B;IADzC,IAAA,sBAAU,GAAE;GACA,6BAA6B,CAsBzC"}
1
+ {"version":3,"file":"change-set-variable.js","sourceRoot":"","sources":["../../src/browser/change-set-variable.ts"],"names":[],"mappings":";AAAA,gFAAgF;AAChF,oDAAoD;AACpD,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,sCAAgD;AAChD,4DAAkE;AAElE,0DAAgE;AAChE,sCAA+E;AAElE,QAAA,2BAA2B,GAAe;IACnD,EAAE,EAAE,uCAA8B;IAClC,WAAW,EAAE,UAAG,CAAC,QAAQ,CAAC,oDAAoD,EAAE,qEAAqE,CAAC;IAEtJ,IAAI,EAAE,uCAA8B;CACvC,CAAC;AAGK,IAAM,6BAA6B,GAAnC,MAAM,6BAA6B;IAItC,iBAAiB,CAAC,OAA0B;QACxC,OAAO,CAAC,gBAAgB,CAAC,mCAA2B,EAAE,IAAI,CAAC,CAAC;IAChE,CAAC;IAED,UAAU,CAAC,OAAoC,EAAE,OAA0B;QACvE,OAAO,OAAO,CAAC,QAAQ,CAAC,IAAI,KAAK,mCAA2B,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;IAC/E,CAAC;IAED,KAAK,CAAC,OAAO,CAAC,OAAoC,EAAE,OAA0B;;QAC1E,IAAI,CAAC,2BAAkB,CAAC,EAAE,CAAC,OAAO,CAAC,IAAI,OAAO,CAAC,QAAQ,CAAC,IAAI,KAAK,mCAA2B,CAAC,IAAI,EAAE,CAAC;YAAC,OAAO,SAAS,CAAC;QAAC,CAAC;QACxH,IAAI,CAAC,CAAA,MAAA,OAAO,CAAC,KAAK,CAAC,SAAS,0CAAE,WAAW,GAAG,MAAM,CAAA,EAAE,CAAC;YACjD,OAAO;gBACH,QAAQ,EAAE,mCAA2B;gBACrC,KAAK,EAAE,EAAE;aACZ,CAAC;QACN,CAAC;QACD,MAAM,OAAO,GAAG,MAAM,OAAO,CAAC,GAAG,CAC7B,OAAO,CAAC,KAAK,CAAC,SAAS,CAAC,WAAW,EAAE,CAAC,GAAG,CAAC,KAAK,EAAC,OAAO,EAAC,EAAE,CAAC,WAAW,MAAM,IAAI,CAAC,gBAAgB,CAAC,wBAAwB,CAAC,OAAO,CAAC,GAAG,CAAC,aAAa,OAAO,CAAC,KAAK,EAAE,CAAC,CACvK,CAAC;QACF,OAAO;YACH,QAAQ,EAAE,mCAA2B;YACrC,KAAK,EAAE;;EAEjB,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC;CACnB;SACQ,CAAC;IACN,CAAC;CACJ,CAAA;AA/BY,sEAA6B;AAEnB;IADlB,IAAA,kBAAM,EAAC,0BAAgB,CAAC;sCACY,0BAAgB;uEAAC;wCAF7C,6BAA6B;IADzC,IAAA,sBAAU,GAAE;GACA,6BAA6B,CA+BzC"}
@@ -39,7 +39,7 @@ let ContextFileVariableLabelProvider = class ContextFileVariableLabelProvider {
39
39
  return this.labelProvider.getLongName(this.getUri(element));
40
40
  }
41
41
  getDetails(element) {
42
- return this.changeSetFileService.getAdditionalInfo(this.getUri(element));
42
+ return this.labelProvider.getDetails(this.getUri(element));
43
43
  }
44
44
  getUri(element) {
45
45
  if (!ai_core_1.AIVariableResolutionRequest.is(element)) {
@@ -1 +1 @@
1
- {"version":3,"file":"context-file-variable-label-provider.js","sourceRoot":"","sources":["../../src/browser/context-file-variable-label-provider.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,4CAA6D;AAC7D,sCAAkC;AAClC,4DAAkE;AAClE,qDAAmF;AACnF,uEAAiE;AAG1D,IAAM,gCAAgC,GAAtC,MAAM,gCAAgC;IAQzC,SAAS,CAAC,OAAe;QACrB,IAAI,qCAA2B,CAAC,EAAE,CAAC,OAAO,CAAC,IAAI,OAAO,CAAC,QAAQ,CAAC,IAAI,KAAK,MAAM,EAAE,CAAC;YAC9E,OAAO,EAAE,CAAC;QACd,CAAC;QACD,OAAO,CAAC,CAAC,CAAC;IACd,CAAC;IAED,OAAO,CAAC,OAAe;QACnB,OAAO,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,CAAE,CAAC,CAAC;IAC7D,CAAC;IAED,OAAO,CAAC,OAAe;QACnB,OAAO,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,CAAE,CAAC,CAAC;IAC7D,CAAC;IAED,WAAW,CAAC,OAAe;QACvB,OAAO,IAAI,CAAC,aAAa,CAAC,WAAW,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,CAAE,CAAC,CAAC;IACjE,CAAC;IAED,UAAU,CAAC,OAAe;QACtB,OAAO,IAAI,CAAC,oBAAoB,CAAC,iBAAiB,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,CAAE,CAAC,CAAC;IAC9E,CAAC;IAES,MAAM,CAAC,OAAe;QAC5B,IAAI,CAAC,qCAA2B,CAAC,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC;YAC3C,OAAO,SAAS,CAAC;QACrB,CAAC;QACD,OAAO,IAAI,UAAG,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;IAChC,CAAC;CAEJ,CAAA;AAtCY,4EAAgC;AAGtB;IADlB,IAAA,kBAAM,EAAC,uBAAa,CAAC;sCACY,uBAAa;uEAAC;AAG7B;IADlB,IAAA,kBAAM,EAAC,8CAAoB,CAAC;sCACY,8CAAoB;8EAAC;2CANrD,gCAAgC;IAD5C,IAAA,sBAAU,GAAE;GACA,gCAAgC,CAsC5C"}
1
+ {"version":3,"file":"context-file-variable-label-provider.js","sourceRoot":"","sources":["../../src/browser/context-file-variable-label-provider.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,4CAA6D;AAC7D,sCAAkC;AAClC,4DAAkE;AAClE,qDAAmF;AACnF,uEAAiE;AAG1D,IAAM,gCAAgC,GAAtC,MAAM,gCAAgC;IAQzC,SAAS,CAAC,OAAe;QACrB,IAAI,qCAA2B,CAAC,EAAE,CAAC,OAAO,CAAC,IAAI,OAAO,CAAC,QAAQ,CAAC,IAAI,KAAK,MAAM,EAAE,CAAC;YAC9E,OAAO,EAAE,CAAC;QACd,CAAC;QACD,OAAO,CAAC,CAAC,CAAC;IACd,CAAC;IAED,OAAO,CAAC,OAAe;QACnB,OAAO,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,CAAE,CAAC,CAAC;IAC7D,CAAC;IAED,OAAO,CAAC,OAAe;QACnB,OAAO,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,CAAE,CAAC,CAAC;IAC7D,CAAC;IAED,WAAW,CAAC,OAAe;QACvB,OAAO,IAAI,CAAC,aAAa,CAAC,WAAW,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,CAAE,CAAC,CAAC;IACjE,CAAC;IAED,UAAU,CAAC,OAAe;QACtB,OAAO,IAAI,CAAC,aAAa,CAAC,UAAU,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,CAAE,CAAC,CAAC;IAChE,CAAC;IAES,MAAM,CAAC,OAAe;QAC5B,IAAI,CAAC,qCAA2B,CAAC,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC;YAC3C,OAAO,SAAS,CAAC;QACrB,CAAC;QACD,OAAO,IAAI,UAAG,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;IAChC,CAAC;CAEJ,CAAA;AAtCY,4EAAgC;AAGtB;IADlB,IAAA,kBAAM,EAAC,uBAAa,CAAC;sCACY,uBAAa;uEAAC;AAG7B;IADlB,IAAA,kBAAM,EAAC,8CAAoB,CAAC;sCACY,8CAAoB;8EAAC;2CANrD,gCAAgC;IAD5C,IAAA,sBAAU,GAAE;GACA,gCAAgC,CAsC5C"}
@@ -1 +1 @@
1
- {"version":3,"file":"file-chat-variable-contribution.d.ts","sourceRoot":"","sources":["../../src/browser/file-chat-variable-contribution.ts"],"names":[],"mappings":"AAgBA,OAAO,EAAE,iBAAiB,EAA2C,MAAM,gBAAgB,CAAC;AAC5F,OAAO,EAAE,oBAAoB,EAAE,4BAA4B,EAAE,uBAAuB,EAAE,MAAM,4BAA4B,CAAC;AAEzH,OAAO,EAAqB,iBAAiB,EAAO,MAAM,aAAa,CAAC;AAExE,OAAO,KAAK,MAAM,MAAM,2BAA2B,CAAC;AACpD,OAAO,EAAqB,sBAAsB,EAAE,MAAM,0DAA0D,CAAC;AACrH,OAAO,EAAE,gBAAgB,EAAE,MAAM,8BAA8B,CAAC;AAChE,OAAO,EAAE,WAAW,EAAE,MAAM,4CAA4C,CAAC;AAEzE,qBACa,4BAA6B,YAAW,4BAA4B;IAE7E,SAAS,CAAC,QAAQ,CAAC,WAAW,EAAE,WAAW,CAAC;IAG5C,SAAS,CAAC,QAAQ,CAAC,SAAS,EAAE,gBAAgB,CAAC;IAG/C,SAAS,CAAC,QAAQ,CAAC,iBAAiB,EAAE,iBAAiB,CAAC;IAGxD,SAAS,CAAC,QAAQ,CAAC,sBAAsB,EAAE,sBAAsB,CAAC;IAElE,iBAAiB,CAAC,OAAO,EAAE,uBAAuB,GAAG,IAAI;cAMzC,qBAAqB,IAAI,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC;cAuBpD,8BAA8B,CAC1C,KAAK,EAAE,MAAM,CAAC,MAAM,CAAC,UAAU,EAC/B,QAAQ,EAAE,MAAM,CAAC,QAAQ,EACzB,WAAW,CAAC,EAAE,MAAM,GACrB,OAAO,CAAC,MAAM,CAAC,SAAS,CAAC,cAAc,EAAE,GAAG,SAAS,CAAC;cAsCzC,UAAU,CAAC,KAAK,EAAE,SAAS,EAAE,CAAC,EAAE,iBAAiB,GAAG,OAAO,CAAC,oBAAoB,GAAG,SAAS,CAAC;CAiChH"}
1
+ {"version":3,"file":"file-chat-variable-contribution.d.ts","sourceRoot":"","sources":["../../src/browser/file-chat-variable-contribution.ts"],"names":[],"mappings":"AAgBA,OAAO,EAAE,iBAAiB,EAA2C,MAAM,gBAAgB,CAAC;AAC5F,OAAO,EAA+B,oBAAoB,EAAE,4BAA4B,EAAE,uBAAuB,EAAE,MAAM,4BAA4B,CAAC;AAEtJ,OAAO,EAAqB,iBAAiB,EAAO,MAAM,aAAa,CAAC;AAExE,OAAO,KAAK,MAAM,MAAM,2BAA2B,CAAC;AACpD,OAAO,EAAqB,sBAAsB,EAAE,MAAM,0DAA0D,CAAC;AACrH,OAAO,EAAE,gBAAgB,EAAE,MAAM,8BAA8B,CAAC;AAChE,OAAO,EAAE,WAAW,EAAE,MAAM,4CAA4C,CAAC;AAGzE,qBACa,4BAA6B,YAAW,4BAA4B;IAE7E,SAAS,CAAC,QAAQ,CAAC,WAAW,EAAE,WAAW,CAAC;IAG5C,SAAS,CAAC,QAAQ,CAAC,SAAS,EAAE,gBAAgB,CAAC;IAG/C,SAAS,CAAC,QAAQ,CAAC,iBAAiB,EAAE,iBAAiB,CAAC;IAGxD,SAAS,CAAC,QAAQ,CAAC,sBAAsB,EAAE,sBAAsB,CAAC;IAElE,iBAAiB,CAAC,OAAO,EAAE,uBAAuB,GAAG,IAAI;cAMzC,qBAAqB,IAAI,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC;cAuBpD,8BAA8B,CAC1C,KAAK,EAAE,MAAM,CAAC,MAAM,CAAC,UAAU,EAC/B,QAAQ,EAAE,MAAM,CAAC,QAAQ,EACzB,WAAW,CAAC,EAAE,MAAM,GACrB,OAAO,CAAC,MAAM,CAAC,SAAS,CAAC,cAAc,EAAE,GAAG,SAAS,CAAC;cAkCzC,UAAU,CAAC,KAAK,EAAE,SAAS,EAAE,CAAC,EAAE,iBAAiB,GAAG,OAAO,CAAC,oBAAoB,GAAG,SAAS,CAAC;CAiChH"}
@@ -18,13 +18,15 @@ Object.defineProperty(exports, "__esModule", { value: true });
18
18
  exports.FileChatVariableContribution = void 0;
19
19
  const tslib_1 = require("tslib");
20
20
  const ai_core_1 = require("@theia/ai-core");
21
+ const browser_1 = require("@theia/ai-core/lib/browser");
21
22
  const file_variable_contribution_1 = require("@theia/ai-core/lib/browser/file-variable-contribution");
22
23
  const core_1 = require("@theia/core");
23
24
  const inversify_1 = require("@theia/core/shared/inversify");
24
25
  const monaco = require("@theia/monaco-editor-core");
25
26
  const quick_file_select_service_1 = require("@theia/file-search/lib/browser/quick-file-select-service");
26
- const browser_1 = require("@theia/workspace/lib/browser");
27
+ const browser_2 = require("@theia/workspace/lib/browser");
27
28
  const file_service_1 = require("@theia/filesystem/lib/browser/file-service");
29
+ const ai_chat_frontend_contribution_1 = require("./ai-chat-frontend-contribution");
28
30
  let FileChatVariableContribution = class FileChatVariableContribution {
29
31
  registerVariables(service) {
30
32
  service.registerArgumentPicker(file_variable_contribution_1.FILE_VARIABLE, this.triggerArgumentPicker.bind(this));
@@ -51,35 +53,35 @@ let FileChatVariableContribution = class FileChatVariableContribution {
51
53
  });
52
54
  }
53
55
  async provideArgumentCompletionItems(model, position, matchString) {
54
- const lineContent = model.getLineContent(position.lineNumber);
55
- const indexOfVariableTrigger = lineContent.lastIndexOf(matchString !== null && matchString !== void 0 ? matchString : ai_core_1.PromptText.VARIABLE_CHAR, position.column - 1);
56
- // check if there is a variable trigger and no space typed between the variable trigger and the cursor
57
- if (indexOfVariableTrigger === -1 || lineContent.substring(indexOfVariableTrigger).includes(' ')) {
56
+ const context = browser_1.AIVariableCompletionContext.get(file_variable_contribution_1.FILE_VARIABLE.name, model, position, matchString);
57
+ if (!context) {
58
58
  return undefined;
59
59
  }
60
- // determine whether we are providing completions before or after the variable argument separator
61
- const indexOfVariableArgSeparator = lineContent.lastIndexOf(ai_core_1.PromptText.VARIABLE_SEPARATOR_CHAR, position.column - 1);
62
- const triggerCharIndex = Math.max(indexOfVariableTrigger, indexOfVariableArgSeparator);
63
- const typedWord = lineContent.substring(triggerCharIndex + 1, position.column - 1);
64
- const range = new monaco.Range(position.lineNumber, triggerCharIndex + 2, position.lineNumber, position.column);
65
- const picks = await this.quickFileSelectService.getPicks(typedWord, core_1.CancellationToken.None);
66
- const matchVariableChar = lineContent[triggerCharIndex] === (matchString ? matchString : ai_core_1.PromptText.VARIABLE_CHAR);
67
- const prefix = matchVariableChar ? file_variable_contribution_1.FILE_VARIABLE.name + ai_core_1.PromptText.VARIABLE_SEPARATOR_CHAR : '';
60
+ const { userInput, range, prefix } = context;
61
+ const picks = await this.quickFileSelectService.getPicks(userInput, core_1.CancellationToken.None);
68
62
  return Promise.all(picks
69
63
  .filter(quick_file_select_service_1.FileQuickPickItem.is)
70
64
  // only show files with highlights, if the user started typing to filter down the results
71
- .filter(p => { var _a; return !typedWord || ((_a = p.highlights) === null || _a === void 0 ? void 0 : _a.label); })
72
- .map(async (pick, index) => ({
73
- label: pick.label,
74
- kind: monaco.languages.CompletionItemKind.File,
75
- range,
76
- insertText: `${prefix}${await this.wsService.getWorkspaceRelativePath(pick.uri)}`,
77
- detail: await this.wsService.getWorkspaceRelativePath(pick.uri.parent),
78
- // don't let monaco filter the items, as we only return picks that are filtered
79
- filterText: typedWord,
80
- // keep the order of the items, but move them to the end of the list
81
- sortText: `ZZ${index.toString().padStart(4, '0')}_${pick.label}`,
82
- })));
65
+ .filter(p => { var _a; return !userInput || ((_a = p.highlights) === null || _a === void 0 ? void 0 : _a.label); })
66
+ .map(async (pick, index) => {
67
+ const relativePath = await this.wsService.getWorkspaceRelativePath(pick.uri);
68
+ return {
69
+ label: pick.label,
70
+ kind: monaco.languages.CompletionItemKind.File,
71
+ range,
72
+ insertText: `${prefix}${relativePath}`,
73
+ detail: await this.wsService.getWorkspaceRelativePath(pick.uri.parent),
74
+ // don't let monaco filter the items, as we only return picks that are filtered
75
+ filterText: userInput,
76
+ // keep the order of the items, but move them to the end of the list
77
+ sortText: `ZZ${index.toString().padStart(4, '0')}_${pick.label}`,
78
+ command: {
79
+ title: ai_chat_frontend_contribution_1.VARIABLE_ADD_CONTEXT_COMMAND.label,
80
+ id: ai_chat_frontend_contribution_1.VARIABLE_ADD_CONTEXT_COMMAND.id,
81
+ arguments: [file_variable_contribution_1.FILE_VARIABLE.name, relativePath]
82
+ }
83
+ };
84
+ }));
83
85
  }
84
86
  async handleDrop(event, _) {
85
87
  var _a;
@@ -119,8 +121,8 @@ tslib_1.__decorate([
119
121
  tslib_1.__metadata("design:type", file_service_1.FileService)
120
122
  ], FileChatVariableContribution.prototype, "fileService", void 0);
121
123
  tslib_1.__decorate([
122
- (0, inversify_1.inject)(browser_1.WorkspaceService),
123
- tslib_1.__metadata("design:type", browser_1.WorkspaceService)
124
+ (0, inversify_1.inject)(browser_2.WorkspaceService),
125
+ tslib_1.__metadata("design:type", browser_2.WorkspaceService)
124
126
  ], FileChatVariableContribution.prototype, "wsService", void 0);
125
127
  tslib_1.__decorate([
126
128
  (0, inversify_1.inject)(core_1.QuickInputService),
@@ -1 +1 @@
1
- {"version":3,"file":"file-chat-variable-contribution.js","sourceRoot":"","sources":["../../src/browser/file-chat-variable-contribution.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"file-chat-variable-contribution.js","sourceRoot":"","sources":["../../src/browser/file-chat-variable-contribution.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,40 @@
1
+ import { MaybePromise, ProgressService, URI, Event } from '@theia/core';
2
+ import { ChatAgent, ChatService, ChatSession } from '../common';
3
+ import { AgentService, PromptService } from '@theia/ai-core';
4
+ export interface SummaryMetadata {
5
+ label: string;
6
+ uri?: URI;
7
+ sessionId?: string;
8
+ }
9
+ export interface Summary extends SummaryMetadata {
10
+ summary: string;
11
+ id: string;
12
+ }
13
+ export declare const TaskContextStorageService: unique symbol;
14
+ export interface TaskContextStorageService {
15
+ onDidChange: Event<void>;
16
+ store(summary: Summary): MaybePromise<void>;
17
+ getAll(): Summary[];
18
+ get(identifier: string): Summary | undefined;
19
+ delete(identifier: string): MaybePromise<boolean>;
20
+ open(identifier: string): Promise<void>;
21
+ }
22
+ export declare class TaskContextService {
23
+ protected pendingSummaries: Map<string, Promise<Summary>>;
24
+ protected readonly chatService: ChatService;
25
+ protected readonly agentService: AgentService;
26
+ protected readonly promptService: PromptService;
27
+ protected readonly storageService: TaskContextStorageService;
28
+ protected readonly progressService: ProgressService;
29
+ get onDidChange(): Event<void>;
30
+ getAll(): Array<Summary>;
31
+ getSummary(sessionIdOrFilePath: string): Promise<string>;
32
+ /** Returns an ID that can be used to refer to the summary in the future. */
33
+ summarize(session: ChatSession, promptId?: string, agent?: ChatAgent): Promise<string>;
34
+ protected getLlmSummary(session: ChatSession, promptId?: string, agent?: ChatAgent): Promise<string>;
35
+ hasSummary(chatSession: ChatSession): boolean;
36
+ protected getSummaryForSession(chatSession: ChatSession): Summary | undefined;
37
+ getLabel(id: string): string | undefined;
38
+ open(id: string): Promise<void>;
39
+ }
40
+ //# sourceMappingURL=task-context-service.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"task-context-service.d.ts","sourceRoot":"","sources":["../../src/browser/task-context-service.ts"],"names":[],"mappings":"AAiBA,OAAO,EAAE,YAAY,EAAE,eAAe,EAAE,GAAG,EAAgB,KAAK,EAAE,MAAM,aAAa,CAAC;AACtF,OAAO,EAAE,SAAS,EAAqB,WAAW,EAAE,WAAW,EAAwE,MAAM,WAAW,CAAC;AAGzJ,OAAO,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;AAG7D,MAAM,WAAW,eAAe;IAC5B,KAAK,EAAE,MAAM,CAAC;IACd,GAAG,CAAC,EAAE,GAAG,CAAC;IACV,SAAS,CAAC,EAAE,MAAM,CAAC;CACtB;AAED,MAAM,WAAW,OAAQ,SAAQ,eAAe;IAC5C,OAAO,EAAE,MAAM,CAAC;IAChB,EAAE,EAAE,MAAM,CAAC;CACd;AAED,eAAO,MAAM,yBAAyB,eAAsC,CAAC;AAC7E,MAAM,WAAW,yBAAyB;IACtC,WAAW,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC;IACzB,KAAK,CAAC,OAAO,EAAE,OAAO,GAAG,YAAY,CAAC,IAAI,CAAC,CAAC;IAC5C,MAAM,IAAI,OAAO,EAAE,CAAC;IACpB,GAAG,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,GAAG,SAAS,CAAC;IAC7C,MAAM,CAAC,UAAU,EAAE,MAAM,GAAG,YAAY,CAAC,OAAO,CAAC,CAAC;IAClD,IAAI,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CAC3C;AAED,qBACa,kBAAkB;IAE3B,SAAS,CAAC,gBAAgB,gCAAuC;IAE5C,SAAS,CAAC,QAAQ,CAAC,WAAW,EAAE,WAAW,CAAC;IAC3C,SAAS,CAAC,QAAQ,CAAC,YAAY,EAAE,YAAY,CAAC;IAC7C,SAAS,CAAC,QAAQ,CAAC,aAAa,EAAE,aAAa,CAAC;IACpC,SAAS,CAAC,QAAQ,CAAC,cAAc,EAAE,yBAAyB,CAAC;IACvE,SAAS,CAAC,QAAQ,CAAC,eAAe,EAAE,eAAe,CAAC;IAE7E,IAAI,WAAW,IAAI,KAAK,CAAC,IAAI,CAAC,CAE7B;IAED,MAAM,IAAI,KAAK,CAAC,OAAO,CAAC;IAIlB,UAAU,CAAC,mBAAmB,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAc9D,4EAA4E;IACtE,SAAS,CAAC,OAAO,EAAE,WAAW,EAAE,QAAQ,CAAC,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,SAAS,GAAG,OAAO,CAAC,MAAM,CAAC;cA2B5E,aAAa,CAAC,OAAO,EAAE,WAAW,EAAE,QAAQ,GAAE,MAAuC,EAAE,KAAK,CAAC,EAAE,SAAS,GAAG,OAAO,CAAC,MAAM,CAAC;IAsB1I,UAAU,CAAC,WAAW,EAAE,WAAW,GAAG,OAAO;IAI7C,SAAS,CAAC,oBAAoB,CAAC,WAAW,EAAE,WAAW,GAAG,OAAO,GAAG,SAAS;IAI7E,QAAQ,CAAC,EAAE,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS;IAIxC,IAAI,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;CAGlC"}
@@ -0,0 +1,148 @@
1
+ "use strict";
2
+ // *****************************************************************************
3
+ // Copyright (C) 2025 EclipseSource GmbH and others.
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.TaskContextService = exports.TaskContextStorageService = void 0;
19
+ const tslib_1 = require("tslib");
20
+ const inversify_1 = require("@theia/core/shared/inversify");
21
+ const core_1 = require("@theia/core");
22
+ const common_1 = require("../common");
23
+ const chat_session_summary_agent_1 = require("../common/chat-session-summary-agent");
24
+ const promise_util_1 = require("@theia/core/lib/common/promise-util");
25
+ const ai_core_1 = require("@theia/ai-core");
26
+ const chat_session_summary_agent_prompt_1 = require("../common/chat-session-summary-agent-prompt");
27
+ exports.TaskContextStorageService = Symbol('TextContextStorageService');
28
+ let TaskContextService = class TaskContextService {
29
+ constructor() {
30
+ this.pendingSummaries = new Map();
31
+ }
32
+ get onDidChange() {
33
+ return this.storageService.onDidChange;
34
+ }
35
+ getAll() {
36
+ return this.storageService.getAll();
37
+ }
38
+ async getSummary(sessionIdOrFilePath) {
39
+ const existing = this.storageService.get(sessionIdOrFilePath);
40
+ if (existing) {
41
+ return existing.summary;
42
+ }
43
+ const pending = this.pendingSummaries.get(sessionIdOrFilePath);
44
+ if (pending) {
45
+ return pending.then(({ summary }) => summary);
46
+ }
47
+ const session = this.chatService.getSession(sessionIdOrFilePath);
48
+ if (session) {
49
+ return this.summarize(session);
50
+ }
51
+ throw new Error('Unable to resolve summary request.');
52
+ }
53
+ /** Returns an ID that can be used to refer to the summary in the future. */
54
+ async summarize(session, promptId, agent) {
55
+ const pending = this.pendingSummaries.get(session.id);
56
+ if (pending) {
57
+ return pending.then(({ id }) => id);
58
+ }
59
+ const existing = this.getSummaryForSession(session);
60
+ if (existing) {
61
+ return existing.id;
62
+ }
63
+ const summaryId = (0, core_1.generateUuid)();
64
+ const summaryDeferred = new promise_util_1.Deferred();
65
+ const progress = await this.progressService.showProgress({ text: `Summarize: ${session.title || session.id}`, options: { location: 'ai-chat' } });
66
+ this.pendingSummaries.set(session.id, summaryDeferred.promise);
67
+ try {
68
+ const newSummary = {
69
+ summary: await this.getLlmSummary(session, promptId, agent),
70
+ label: session.title || session.id,
71
+ sessionId: session.id,
72
+ id: summaryId
73
+ };
74
+ await this.storageService.store(newSummary);
75
+ return summaryId;
76
+ }
77
+ catch (err) {
78
+ summaryDeferred.reject(err);
79
+ throw err;
80
+ }
81
+ finally {
82
+ progress.cancel();
83
+ this.pendingSummaries.delete(session.id);
84
+ }
85
+ }
86
+ async getLlmSummary(session, promptId = chat_session_summary_agent_prompt_1.CHAT_SESSION_SUMMARY_PROMPT.id, agent) {
87
+ var _a, _b;
88
+ agent = agent || this.agentService.getAgents().find((candidate) => 'invoke' in candidate
89
+ && typeof candidate.invoke === 'function'
90
+ && candidate.id === chat_session_summary_agent_1.ChatSessionSummaryAgent.ID);
91
+ if (!agent) {
92
+ throw new Error('Unable to identify agent for summary.');
93
+ }
94
+ const model = new common_1.MutableChatModel(common_1.ChatAgentLocation.Panel);
95
+ const prompt = await this.promptService.getPrompt(promptId || chat_session_summary_agent_prompt_1.CHAT_SESSION_SUMMARY_PROMPT.id, undefined, { model: session.model });
96
+ if (!prompt) {
97
+ return '';
98
+ }
99
+ const messages = session.model.getRequests().filter((candidate) => candidate instanceof common_1.MutableChatRequestModel);
100
+ messages.forEach(message => model['_hierarchy'].append(message));
101
+ const summaryRequest = model.addRequest({
102
+ variables: (_a = prompt.variables) !== null && _a !== void 0 ? _a : [],
103
+ request: { text: prompt.text },
104
+ parts: [new common_1.ParsedChatRequestTextPart({ start: 0, endExclusive: prompt.text.length }, prompt.text)],
105
+ toolRequests: (_b = prompt.functionDescriptions) !== null && _b !== void 0 ? _b : new Map()
106
+ }, agent.id);
107
+ await agent.invoke(summaryRequest);
108
+ return summaryRequest.response.response.asDisplayString();
109
+ }
110
+ hasSummary(chatSession) {
111
+ return !!this.getSummaryForSession(chatSession);
112
+ }
113
+ getSummaryForSession(chatSession) {
114
+ return this.storageService.getAll().find(candidate => candidate.sessionId === chatSession.id);
115
+ }
116
+ getLabel(id) {
117
+ var _a;
118
+ return (_a = this.storageService.get(id)) === null || _a === void 0 ? void 0 : _a.label;
119
+ }
120
+ open(id) {
121
+ return this.storageService.open(id);
122
+ }
123
+ };
124
+ exports.TaskContextService = TaskContextService;
125
+ tslib_1.__decorate([
126
+ (0, inversify_1.inject)(common_1.ChatService),
127
+ tslib_1.__metadata("design:type", Object)
128
+ ], TaskContextService.prototype, "chatService", void 0);
129
+ tslib_1.__decorate([
130
+ (0, inversify_1.inject)(ai_core_1.AgentService),
131
+ tslib_1.__metadata("design:type", Object)
132
+ ], TaskContextService.prototype, "agentService", void 0);
133
+ tslib_1.__decorate([
134
+ (0, inversify_1.inject)(ai_core_1.PromptService),
135
+ tslib_1.__metadata("design:type", Object)
136
+ ], TaskContextService.prototype, "promptService", void 0);
137
+ tslib_1.__decorate([
138
+ (0, inversify_1.inject)(exports.TaskContextStorageService),
139
+ tslib_1.__metadata("design:type", Object)
140
+ ], TaskContextService.prototype, "storageService", void 0);
141
+ tslib_1.__decorate([
142
+ (0, inversify_1.inject)(core_1.ProgressService),
143
+ tslib_1.__metadata("design:type", core_1.ProgressService)
144
+ ], TaskContextService.prototype, "progressService", void 0);
145
+ exports.TaskContextService = TaskContextService = tslib_1.__decorate([
146
+ (0, inversify_1.injectable)()
147
+ ], TaskContextService);
148
+ //# sourceMappingURL=task-context-service.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"task-context-service.js","sourceRoot":"","sources":["../../src/browser/task-context-service.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,18 @@
1
+ import { Summary, TaskContextStorageService } from './task-context-service';
2
+ import { Emitter } from '@theia/core';
3
+ import { AIVariableResourceResolver } from '@theia/ai-core';
4
+ import { OpenerService } from '@theia/core/lib/browser';
5
+ export declare class InMemoryTaskContextStorage implements TaskContextStorageService {
6
+ protected summaries: Map<string, Summary>;
7
+ protected readonly onDidChangeEmitter: Emitter<void>;
8
+ readonly onDidChange: import("@theia/core").Event<void>;
9
+ protected readonly variableResourceResolver: AIVariableResourceResolver;
10
+ protected readonly openerService: OpenerService;
11
+ store(summary: Summary): void;
12
+ getAll(): Summary[];
13
+ get(identifier: string): Summary | undefined;
14
+ delete(identifier: string): boolean;
15
+ clear(): void;
16
+ open(identifier: string): Promise<void>;
17
+ }
18
+ //# sourceMappingURL=task-context-storage-service.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"task-context-storage-service.d.ts","sourceRoot":"","sources":["../../src/browser/task-context-storage-service.ts"],"names":[],"mappings":"AAiBA,OAAO,EAAE,OAAO,EAAE,yBAAyB,EAAE,MAAM,wBAAwB,CAAC;AAC5E,OAAO,EAAE,OAAO,EAAE,MAAM,aAAa,CAAC;AACtC,OAAO,EAAE,0BAA0B,EAAE,MAAM,gBAAgB,CAAC;AAE5D,OAAO,EAAQ,aAAa,EAAE,MAAM,yBAAyB,CAAC;AAE9D,qBACa,0BAA2B,YAAW,yBAAyB;IACxE,SAAS,CAAC,SAAS,uBAA8B;IAEjD,SAAS,CAAC,QAAQ,CAAC,kBAAkB,gBAAuB;IAC5D,QAAQ,CAAC,WAAW,oCAAiC;IAGrD,SAAS,CAAC,QAAQ,CAAC,wBAAwB,EAAE,0BAA0B,CAAC;IAGxE,SAAS,CAAC,QAAQ,CAAC,aAAa,EAAE,aAAa,CAAC;IAEhD,KAAK,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI;IAK7B,MAAM,IAAI,OAAO,EAAE;IAInB,GAAG,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,GAAG,SAAS;IAI5C,MAAM,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO;IAQnC,KAAK,IAAI,IAAI;IAOP,IAAI,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;CAUhD"}
@@ -0,0 +1,77 @@
1
+ "use strict";
2
+ // *****************************************************************************
3
+ // Copyright (C) 2025 EclipseSource GmbH and others.
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.InMemoryTaskContextStorage = void 0;
19
+ const tslib_1 = require("tslib");
20
+ const inversify_1 = require("@theia/core/shared/inversify");
21
+ const core_1 = require("@theia/core");
22
+ const ai_core_1 = require("@theia/ai-core");
23
+ const task_context_variable_1 = require("./task-context-variable");
24
+ const browser_1 = require("@theia/core/lib/browser");
25
+ let InMemoryTaskContextStorage = class InMemoryTaskContextStorage {
26
+ constructor() {
27
+ this.summaries = new Map();
28
+ this.onDidChangeEmitter = new core_1.Emitter();
29
+ this.onDidChange = this.onDidChangeEmitter.event;
30
+ }
31
+ store(summary) {
32
+ this.summaries.set(summary.id, summary);
33
+ this.onDidChangeEmitter.fire();
34
+ }
35
+ getAll() {
36
+ return Array.from(this.summaries.values());
37
+ }
38
+ get(identifier) {
39
+ return this.summaries.get(identifier);
40
+ }
41
+ delete(identifier) {
42
+ const didDelete = this.summaries.delete(identifier);
43
+ if (didDelete) {
44
+ this.onDidChangeEmitter.fire();
45
+ }
46
+ return didDelete;
47
+ }
48
+ clear() {
49
+ if (this.summaries.size) {
50
+ this.summaries.clear();
51
+ this.onDidChangeEmitter.fire();
52
+ }
53
+ }
54
+ async open(identifier) {
55
+ const summary = this.get(identifier);
56
+ if (!summary) {
57
+ throw new Error('Unable to upon requested task context: none found.');
58
+ }
59
+ const resource = this.variableResourceResolver.getOrCreate({ variable: task_context_variable_1.TASK_CONTEXT_VARIABLE, arg: identifier }, {}, summary.summary);
60
+ resource.update({ onSave: async (content) => { summary.summary = content; }, readOnly: false });
61
+ await (0, browser_1.open)(this.openerService, resource.uri);
62
+ resource.dispose();
63
+ }
64
+ };
65
+ exports.InMemoryTaskContextStorage = InMemoryTaskContextStorage;
66
+ tslib_1.__decorate([
67
+ (0, inversify_1.inject)(ai_core_1.AIVariableResourceResolver),
68
+ tslib_1.__metadata("design:type", ai_core_1.AIVariableResourceResolver)
69
+ ], InMemoryTaskContextStorage.prototype, "variableResourceResolver", void 0);
70
+ tslib_1.__decorate([
71
+ (0, inversify_1.inject)(browser_1.OpenerService),
72
+ tslib_1.__metadata("design:type", Object)
73
+ ], InMemoryTaskContextStorage.prototype, "openerService", void 0);
74
+ exports.InMemoryTaskContextStorage = InMemoryTaskContextStorage = tslib_1.__decorate([
75
+ (0, inversify_1.injectable)()
76
+ ], InMemoryTaskContextStorage);
77
+ //# sourceMappingURL=task-context-storage-service.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"task-context-storage-service.js","sourceRoot":"","sources":["../../src/browser/task-context-storage-service.ts"],"names":[],"mappings":";AAAA,gFAAgF;AAChF,oDAAoD;AACpD,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,4DAAkE;AAElE,sCAAsC;AACtC,4CAA4D;AAC5D,mEAAgE;AAChE,qDAA8D;AAGvD,IAAM,0BAA0B,GAAhC,MAAM,0BAA0B;IAAhC;QACO,cAAS,GAAG,IAAI,GAAG,EAAmB,CAAC;QAE9B,uBAAkB,GAAG,IAAI,cAAO,EAAQ,CAAC;QACnD,gBAAW,GAAG,IAAI,CAAC,kBAAkB,CAAC,KAAK,CAAC;IA8CzD,CAAC;IAtCG,KAAK,CAAC,OAAgB;QAClB,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,EAAE,OAAO,CAAC,CAAC;QACxC,IAAI,CAAC,kBAAkB,CAAC,IAAI,EAAE,CAAC;IACnC,CAAC;IAED,MAAM;QACF,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,CAAC,CAAC;IAC/C,CAAC;IAED,GAAG,CAAC,UAAkB;QAClB,OAAO,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;IAC1C,CAAC;IAED,MAAM,CAAC,UAAkB;QACrB,MAAM,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC;QACpD,IAAI,SAAS,EAAE,CAAC;YACZ,IAAI,CAAC,kBAAkB,CAAC,IAAI,EAAE,CAAC;QACnC,CAAC;QACD,OAAO,SAAS,CAAC;IACrB,CAAC;IAED,KAAK;QACD,IAAI,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,CAAC;YACtB,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,CAAC;YACvB,IAAI,CAAC,kBAAkB,CAAC,IAAI,EAAE,CAAC;QACnC,CAAC;IACL,CAAC;IAED,KAAK,CAAC,IAAI,CAAC,UAAkB;QACzB,MAAM,OAAO,GAAG,IAAI,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;QACrC,IAAI,CAAC,OAAO,EAAE,CAAC;YACX,MAAM,IAAI,KAAK,CAAC,oDAAoD,CAAC,CAAC;QAC1E,CAAC;QACD,MAAM,QAAQ,GAAG,IAAI,CAAC,wBAAwB,CAAC,WAAW,CAAC,EAAE,QAAQ,EAAE,6CAAqB,EAAE,GAAG,EAAE,UAAU,EAAE,EAAE,EAAE,EAAE,OAAO,CAAC,OAAO,CAAC,CAAC;QACtI,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,EAAE,KAAK,EAAC,OAAO,EAAC,EAAE,GAAG,OAAO,CAAC,OAAO,GAAG,OAAO,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC,CAAC;QAC9F,MAAM,IAAA,cAAI,EAAC,IAAI,CAAC,aAAa,EAAE,QAAQ,CAAC,GAAG,CAAC,CAAC;QAC7C,QAAQ,CAAC,OAAO,EAAE,CAAC;IACvB,CAAC;CACJ,CAAA;AAlDY,gEAA0B;AAOhB;IADlB,IAAA,kBAAM,EAAC,oCAA0B,CAAC;sCACU,oCAA0B;4EAAC;AAGrD;IADlB,IAAA,kBAAM,EAAC,uBAAa,CAAC;;iEAC0B;qCAVvC,0BAA0B;IADtC,IAAA,sBAAU,GAAE;GACA,0BAA0B,CAkDtC"}
@@ -0,0 +1,20 @@
1
+ import { AIVariableContext, AIVariableOpener, AIVariableResolutionRequest, AIVariableResolver, ResolvedAIContextVariable } from '@theia/ai-core';
2
+ import { FrontendVariableContribution, FrontendVariableService } from '@theia/ai-core/lib/browser';
3
+ import { MaybePromise, QuickInputService, QuickPickItem } from '@theia/core';
4
+ import { ChatService } from '../common';
5
+ import * as monaco from '@theia/monaco-editor-core';
6
+ import { TaskContextService } from './task-context-service';
7
+ export declare class TaskContextVariableContribution implements FrontendVariableContribution, AIVariableResolver, AIVariableOpener {
8
+ protected readonly quickInputService: QuickInputService;
9
+ protected readonly chatService: ChatService;
10
+ protected readonly taskContextService: TaskContextService;
11
+ registerVariables(service: FrontendVariableService): void;
12
+ protected pickSession(): Promise<string | undefined>;
13
+ protected provideCompletionItems(model: monaco.editor.ITextModel, position: monaco.Position, matchString?: string): Promise<monaco.languages.CompletionItem[] | undefined>;
14
+ protected getItems(): QuickPickItem[];
15
+ canResolve(request: AIVariableResolutionRequest, context: AIVariableContext): MaybePromise<number>;
16
+ resolve(request: AIVariableResolutionRequest, _context: AIVariableContext): Promise<ResolvedAIContextVariable | undefined>;
17
+ canOpen(request: AIVariableResolutionRequest, context: AIVariableContext): MaybePromise<number>;
18
+ open(request: AIVariableResolutionRequest, _context: AIVariableContext): Promise<void>;
19
+ }
20
+ //# sourceMappingURL=task-context-variable-contribution.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"task-context-variable-contribution.d.ts","sourceRoot":"","sources":["../../src/browser/task-context-variable-contribution.ts"],"names":[],"mappings":"AAiBA,OAAO,EAAE,iBAAiB,EAAE,gBAAgB,EAAE,2BAA2B,EAAE,kBAAkB,EAAE,yBAAyB,EAAE,MAAM,gBAAgB,CAAC;AACjJ,OAAO,EAA+B,4BAA4B,EAAE,uBAAuB,EAAE,MAAM,4BAA4B,CAAC;AAChI,OAAO,EAAE,YAAY,EAAE,iBAAiB,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAC7E,OAAO,EAAE,WAAW,EAAE,MAAM,WAAW,CAAC;AACxC,OAAO,KAAK,MAAM,MAAM,2BAA2B,CAAC;AACpD,OAAO,EAAE,kBAAkB,EAAE,MAAM,wBAAwB,CAAC;AAI5D,qBACa,+BAAgC,YAAW,4BAA4B,EAAE,kBAAkB,EAAE,gBAAgB;IAC3F,SAAS,CAAC,QAAQ,CAAC,iBAAiB,EAAE,iBAAiB,CAAC;IAC9D,SAAS,CAAC,QAAQ,CAAC,WAAW,EAAE,WAAW,CAAC;IACrC,SAAS,CAAC,QAAQ,CAAC,kBAAkB,EAAE,kBAAkB,CAAC;IAEtF,iBAAiB,CAAC,OAAO,EAAE,uBAAuB,GAAG,IAAI;cAOzC,WAAW,IAAI,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC;cAM1C,sBAAsB,CAClC,KAAK,EAAE,MAAM,CAAC,MAAM,CAAC,UAAU,EAC/B,QAAQ,EAAE,MAAM,CAAC,QAAQ,EACzB,WAAW,CAAC,EAAE,MAAM,GACrB,OAAO,CAAC,MAAM,CAAC,SAAS,CAAC,cAAc,EAAE,GAAG,SAAS,CAAC;IAmBzD,SAAS,CAAC,QAAQ,IAAI,aAAa,EAAE;IAMrC,UAAU,CAAC,OAAO,EAAE,2BAA2B,EAAE,OAAO,EAAE,iBAAiB,GAAG,YAAY,CAAC,MAAM,CAAC;IAI5F,OAAO,CAAC,OAAO,EAAE,2BAA2B,EAAE,QAAQ,EAAE,iBAAiB,GAAG,OAAO,CAAC,yBAAyB,GAAG,SAAS,CAAC;IAMhI,OAAO,CAAC,OAAO,EAAE,2BAA2B,EAAE,OAAO,EAAE,iBAAiB,GAAG,YAAY,CAAC,MAAM,CAAC;IAIzF,IAAI,CAAC,OAAO,EAAE,2BAA2B,EAAE,QAAQ,EAAE,iBAAiB,GAAG,OAAO,CAAC,IAAI,CAAC;CAI/F"}