@theia/ai-chat 1.61.0-next.8 → 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.
- package/lib/browser/ai-chat-frontend-contribution.d.ts +11 -0
- package/lib/browser/ai-chat-frontend-contribution.d.ts.map +1 -0
- package/lib/browser/ai-chat-frontend-contribution.js +56 -0
- package/lib/browser/ai-chat-frontend-contribution.js.map +1 -0
- package/lib/browser/ai-chat-frontend-module.d.ts.map +1 -1
- package/lib/browser/ai-chat-frontend-module.js +21 -3
- package/lib/browser/ai-chat-frontend-module.js.map +1 -1
- package/lib/browser/change-set-decorator-service.d.ts +24 -0
- package/lib/browser/change-set-decorator-service.d.ts.map +1 -0
- package/lib/browser/change-set-decorator-service.js +66 -0
- package/lib/browser/change-set-decorator-service.js.map +1 -0
- package/lib/browser/change-set-file-element.d.ts +7 -4
- package/lib/browser/change-set-file-element.d.ts.map +1 -1
- package/lib/browser/change-set-file-element.js +20 -12
- package/lib/browser/change-set-file-element.js.map +1 -1
- package/lib/browser/change-set-file-resource.d.ts +1 -42
- package/lib/browser/change-set-file-resource.d.ts.map +1 -1
- package/lib/browser/change-set-file-resource.js +1 -136
- package/lib/browser/change-set-file-resource.js.map +1 -1
- package/lib/browser/change-set-variable.d.ts.map +1 -1
- package/lib/browser/change-set-variable.js +13 -4
- package/lib/browser/change-set-variable.js.map +1 -1
- package/lib/browser/context-file-variable-label-provider.js +1 -1
- package/lib/browser/context-file-variable-label-provider.js.map +1 -1
- package/lib/browser/file-chat-variable-contribution.d.ts.map +1 -1
- package/lib/browser/file-chat-variable-contribution.js +29 -27
- package/lib/browser/file-chat-variable-contribution.js.map +1 -1
- package/lib/browser/task-context-service.d.ts +40 -0
- package/lib/browser/task-context-service.d.ts.map +1 -0
- package/lib/browser/task-context-service.js +148 -0
- package/lib/browser/task-context-service.js.map +1 -0
- package/lib/browser/task-context-storage-service.d.ts +18 -0
- package/lib/browser/task-context-storage-service.d.ts.map +1 -0
- package/lib/browser/task-context-storage-service.js +77 -0
- package/lib/browser/task-context-storage-service.js.map +1 -0
- package/lib/browser/task-context-variable-contribution.d.ts +20 -0
- package/lib/browser/task-context-variable-contribution.d.ts.map +1 -0
- package/lib/browser/task-context-variable-contribution.js +101 -0
- package/lib/browser/task-context-variable-contribution.js.map +1 -0
- package/lib/browser/task-context-variable-label-provider.d.ts +21 -0
- package/lib/browser/task-context-variable-label-provider.d.ts.map +1 -0
- package/lib/browser/task-context-variable-label-provider.js +83 -0
- package/lib/browser/task-context-variable-label-provider.js.map +1 -0
- package/lib/browser/task-context-variable.d.ts +3 -0
- package/lib/browser/task-context-variable.d.ts.map +1 -0
- package/lib/browser/task-context-variable.js +29 -0
- package/lib/browser/task-context-variable.js.map +1 -0
- package/lib/common/chat-agents.d.ts +2 -1
- package/lib/common/chat-agents.d.ts.map +1 -1
- package/lib/common/chat-agents.js +5 -0
- package/lib/common/chat-agents.js.map +1 -1
- package/lib/common/chat-model.d.ts +173 -8
- package/lib/common/chat-model.d.ts.map +1 -1
- package/lib/common/chat-model.js +329 -17
- package/lib/common/chat-model.js.map +1 -1
- package/lib/common/chat-request-parser.d.ts +1 -1
- package/lib/common/chat-request-parser.d.ts.map +1 -1
- package/lib/common/chat-request-parser.js +1 -1
- package/lib/common/chat-request-parser.js.map +1 -1
- package/lib/common/chat-service.d.ts +2 -0
- package/lib/common/chat-service.d.ts.map +1 -1
- package/lib/common/chat-service.js +18 -25
- package/lib/common/chat-service.js.map +1 -1
- package/lib/common/chat-session-naming-service.d.ts.map +1 -1
- package/lib/common/chat-session-naming-service.js +3 -3
- package/lib/common/chat-session-naming-service.js.map +1 -1
- package/lib/common/chat-session-summary-agent-prompt.d.ts +5 -0
- package/lib/common/chat-session-summary-agent-prompt.d.ts.map +1 -0
- package/lib/common/chat-session-summary-agent-prompt.js +30 -0
- package/lib/common/chat-session-summary-agent-prompt.js.map +1 -0
- package/lib/common/chat-session-summary-agent.d.ts +17 -0
- package/lib/common/chat-session-summary-agent.d.ts.map +1 -0
- package/lib/common/chat-session-summary-agent.js +48 -0
- package/lib/common/chat-session-summary-agent.js.map +1 -0
- package/lib/common/context-summary-variable.js +1 -1
- package/lib/common/context-summary-variable.js.map +1 -1
- package/package.json +11 -11
- package/src/browser/ai-chat-frontend-contribution.ts +49 -0
- package/src/browser/ai-chat-frontend-module.ts +25 -4
- package/src/browser/change-set-decorator-service.ts +72 -0
- package/src/browser/change-set-file-element.ts +18 -13
- package/src/browser/change-set-file-resource.ts +1 -138
- package/src/browser/change-set-variable.ts +14 -6
- package/src/browser/context-file-variable-label-provider.ts +1 -1
- package/src/browser/file-chat-variable-contribution.ts +26 -29
- package/src/browser/task-context-service.ts +144 -0
- package/src/browser/task-context-storage-service.ts +75 -0
- package/src/browser/task-context-variable-contribution.ts +93 -0
- package/src/browser/task-context-variable-label-provider.ts +67 -0
- package/src/browser/task-context-variable.ts +28 -0
- package/src/common/chat-agents.ts +6 -1
- package/src/common/chat-model.ts +507 -18
- package/src/common/chat-request-parser.ts +2 -2
- package/src/common/chat-service.ts +17 -26
- package/src/common/chat-session-naming-service.ts +4 -3
- package/src/common/chat-session-summary-agent-prompt.ts +28 -0
- package/src/common/chat-session-summary-agent.ts +42 -0
- package/src/common/context-summary-variable.ts +1 -1
|
@@ -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;
|
|
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:
|
|
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:
|
|
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
|
|
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:
|
|
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+
|
|
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.
|
|
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,
|
|
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,
|
|
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
|
|
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
|
|
55
|
-
|
|
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
|
-
|
|
61
|
-
const
|
|
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 !
|
|
72
|
-
.map(async (pick, index) =>
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
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)(
|
|
123
|
-
tslib_1.__metadata("design:type",
|
|
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":";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,4CAA4F;
|
|
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"}
|