@theia/ai-history 1.60.0-next.47 → 1.60.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-history-communication-card.d.ts.map +1 -1
- package/lib/browser/ai-history-communication-card.js +64 -36
- package/lib/browser/ai-history-communication-card.js.map +1 -1
- package/lib/browser/ai-history-frontend-module.d.ts.map +1 -1
- package/lib/browser/ai-history-frontend-module.js.map +1 -1
- package/lib/browser/ai-history-widget.d.ts.map +1 -1
- package/lib/browser/ai-history-widget.js +1 -1
- package/lib/browser/ai-history-widget.js.map +1 -1
- package/lib/common/communication-recording-service.d.ts.map +1 -1
- package/lib/common/communication-recording-service.js +16 -7
- package/lib/common/communication-recording-service.js.map +1 -1
- package/lib/common/communication-recording-service.spec.js +19 -17
- package/lib/common/communication-recording-service.spec.js.map +1 -1
- package/package.json +8 -8
- package/src/browser/ai-history-communication-card.tsx +79 -45
- package/src/browser/ai-history-frontend-module.ts +0 -1
- package/src/browser/ai-history-widget.tsx +1 -1
- package/src/browser/style/ai-history.css +96 -44
- package/src/common/communication-recording-service.spec.ts +18 -17
- package/src/common/communication-recording-service.ts +16 -7
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ai-history-communication-card.d.ts","sourceRoot":"","sources":["../../src/browser/ai-history-communication-card.tsx"],"names":[],"mappings":";AAeA,OAAO,EAAE,yBAAyB,EAAE,MAAM,gBAAgB,CAAC;AAE3D,OAAO,KAAK,KAAK,MAAM,0BAA0B,CAAC;AAElD,MAAM,WAAW,sBAAsB;IACnC,KAAK,EAAE,yBAAyB,CAAC;CACpC;AAED,eAAO,MAAM,iBAAiB,EAAE,KAAK,CAAC,EAAE,CAAC,sBAAsB,
|
|
1
|
+
{"version":3,"file":"ai-history-communication-card.d.ts","sourceRoot":"","sources":["../../src/browser/ai-history-communication-card.tsx"],"names":[],"mappings":";AAeA,OAAO,EAAE,yBAAyB,EAAE,MAAM,gBAAgB,CAAC;AAE3D,OAAO,KAAK,KAAK,MAAM,0BAA0B,CAAC;AAElD,MAAM,WAAW,sBAAsB;IACnC,KAAK,EAAE,yBAAyB,CAAC;CACpC;AAED,eAAO,MAAM,iBAAiB,EAAE,KAAK,CAAC,EAAE,CAAC,sBAAsB,CAmF9D,CAAC"}
|
|
@@ -3,44 +3,72 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
3
3
|
exports.CommunicationCard = void 0;
|
|
4
4
|
const core_1 = require("@theia/core");
|
|
5
5
|
const React = require("@theia/core/shared/react");
|
|
6
|
-
const CommunicationCard = ({ entry }) =>
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
6
|
+
const CommunicationCard = ({ entry }) => {
|
|
7
|
+
// Format JSON with error handling
|
|
8
|
+
const formatJson = (data) => {
|
|
9
|
+
try {
|
|
10
|
+
return JSON.stringify(data, undefined, 2);
|
|
11
|
+
}
|
|
12
|
+
catch (error) {
|
|
13
|
+
console.error('Error formatting JSON:', error);
|
|
14
|
+
return 'Error formatting data';
|
|
15
|
+
}
|
|
16
|
+
};
|
|
17
|
+
// Format the timestamp for better readability
|
|
18
|
+
const formatTimestamp = (timestamp) => new Date(timestamp).toLocaleString(undefined, {
|
|
19
|
+
year: 'numeric',
|
|
20
|
+
month: 'short',
|
|
21
|
+
day: 'numeric',
|
|
22
|
+
hour: '2-digit',
|
|
23
|
+
minute: '2-digit',
|
|
24
|
+
second: '2-digit'
|
|
25
|
+
});
|
|
26
|
+
;
|
|
27
|
+
return (React.createElement("div", { className: 'theia-card', role: "article", "aria-label": `Communication log for request ${entry.requestId}` },
|
|
28
|
+
React.createElement("div", { className: 'theia-card-meta' },
|
|
29
|
+
React.createElement("span", { className: 'theia-card-request-id' },
|
|
30
|
+
core_1.nls.localize('theia/ai/history/communication-card/requestId', 'Request ID'),
|
|
31
|
+
": ",
|
|
32
|
+
entry.requestId),
|
|
33
|
+
React.createElement("span", { className: 'theia-card-session-id' },
|
|
34
|
+
core_1.nls.localize('theia/ai/history/communication-card/sessionId', 'Session ID'),
|
|
35
|
+
": ",
|
|
36
|
+
entry.sessionId)),
|
|
37
|
+
React.createElement("div", { className: 'theia-card-content' },
|
|
38
|
+
entry.request && (React.createElement("div", { className: 'theia-card-request' },
|
|
39
|
+
React.createElement("h2", null, core_1.nls.localize('theia/ai/history/communication-card/request', 'Request')),
|
|
40
|
+
React.createElement("details", { key: `request-${entry.requestId}` },
|
|
41
|
+
React.createElement("summary", null,
|
|
42
|
+
React.createElement("h3", null,
|
|
43
|
+
core_1.nls.localize('theia/ai/history/communication-card/request/summary', 'Request'),
|
|
44
|
+
" ",
|
|
45
|
+
entry.requestId)),
|
|
46
|
+
React.createElement("div", { className: 'theia-card-request-messages' },
|
|
47
|
+
React.createElement("h4", null, core_1.nls.localize('theia/ai/history/communication-card/request/messages', 'Messages')),
|
|
48
|
+
React.createElement("ul", { className: 'theia-card-request-messages-list' }, entry.request.map((message, index) => (React.createElement("li", { key: `message-${entry.requestId}-${index}`, className: "message-item" },
|
|
49
|
+
React.createElement("pre", { className: "message-content" }, formatJson(message)))))))))),
|
|
50
|
+
entry.response && (React.createElement("div", { className: 'theia-card-response' },
|
|
51
|
+
React.createElement("h2", null, core_1.nls.localize('theia/ai/history/communication-card/response', 'Response')),
|
|
52
|
+
React.createElement("details", { key: `response-${entry.requestId}` },
|
|
53
|
+
React.createElement("summary", null,
|
|
54
|
+
React.createElement("h3", null,
|
|
55
|
+
core_1.nls.localize('theia/ai/history/communication-card/response/summary', 'Response'),
|
|
56
|
+
" ",
|
|
57
|
+
entry.requestId)),
|
|
58
|
+
React.createElement("div", { className: 'theia-card-response-messages' },
|
|
59
|
+
React.createElement("h4", null, core_1.nls.localize('theia/ai/history/communication-card/response/messages', 'Messages')),
|
|
60
|
+
React.createElement("ul", { className: 'theia-card-response-messages-list' }, entry.response.map((message, index) => (React.createElement("li", { key: `message-${entry.requestId}-${index}`, className: "message-item" },
|
|
61
|
+
React.createElement("pre", { className: "message-content" }, formatJson(message))))))))))),
|
|
62
|
+
React.createElement("div", { className: 'theia-card-meta' },
|
|
63
|
+
React.createElement("span", { className: 'theia-card-timestamp' },
|
|
64
|
+
core_1.nls.localize('theia/ai/history/communication-card/timestamp', 'Timestamp'),
|
|
65
|
+
": ",
|
|
66
|
+
formatTimestamp(entry.timestamp)),
|
|
67
|
+
entry.responseTime !== undefined && (React.createElement("span", { className: 'theia-card-response-time' },
|
|
41
68
|
core_1.nls.localize('theia/ai/history/communication-card/responseTime', 'Response Time'),
|
|
42
69
|
": ",
|
|
43
70
|
entry.responseTime,
|
|
44
|
-
"ms"))));
|
|
71
|
+
"ms")))));
|
|
72
|
+
};
|
|
45
73
|
exports.CommunicationCard = CommunicationCard;
|
|
46
74
|
//# sourceMappingURL=ai-history-communication-card.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ai-history-communication-card.js","sourceRoot":"","sources":["../../src/browser/ai-history-communication-card.tsx"],"names":[],"mappings":";;;AAgBA,sCAAkC;AAClC,kDAAkD;AAM3C,MAAM,iBAAiB,GAAqC,CAAC,EAAE,KAAK,EAAE,EAAE,EAAE,CAAC,
|
|
1
|
+
{"version":3,"file":"ai-history-communication-card.js","sourceRoot":"","sources":["../../src/browser/ai-history-communication-card.tsx"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ai-history-frontend-module.d.ts","sourceRoot":"","sources":["../../src/browser/ai-history-frontend-module.ts"],"names":[],"mappings":"AAgBA,OAAO,EAAE,eAAe,EAAE,MAAM,8BAA8B,CAAC;AAK/D,OAAO,wCAAwC,CAAC;;AAGhD,
|
|
1
|
+
{"version":3,"file":"ai-history-frontend-module.d.ts","sourceRoot":"","sources":["../../src/browser/ai-history-frontend-module.ts"],"names":[],"mappings":"AAgBA,OAAO,EAAE,eAAe,EAAE,MAAM,8BAA8B,CAAC;AAK/D,OAAO,wCAAwC,CAAC;;AAGhD,wBAYG"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ai-history-frontend-module.js","sourceRoot":"","sources":["../../src/browser/ai-history-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;AAChF,4CAA+D;AAC/D,4DAA+D;AAC/D,+FAAiG;AACjG,qDAA8E;AAC9E,uEAAsE;AACtE,2DAAoD;AACpD,kDAAgD;AAChD,mFAA0F;AAE1F,kBAAe,IAAI,2BAAe,CAAC,IAAI,CAAC,EAAE;IACtC,IAAI,CAAC,sEAAoC,CAAC,CAAC,MAAM,EAAE,CAAC,gBAAgB,EAAE,CAAC;IACvE,IAAI,CAAC,uCAA6B,CAAC,CAAC,SAAS,CAAC,sEAAoC,CAAC,CAAC;IAEpF,IAAA,8BAAoB,EAAC,IAAI,EAAE,mDAAyB,CAAC,CAAC;IAEtD,IAAI,CAAC,iCAAa,CAAC,CAAC,MAAM,EAAE,CAAC;IAC7B,IAAI,CAAC,uBAAa,CAAC,CAAC,cAAc,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;QAC3C,EAAE,EAAE,iCAAa,CAAC,EAAE;QACpB,YAAY,EAAE,GAAG,EAAE,CAAC,OAAO,CAAC,SAAS,CAAC,GAAG,CAAgB,iCAAa,CAAC;KAC1E,CAAC,CAAC,CAAC,gBAAgB,EAAE,CAAC;IACvB,IAAI,CAAC,2CAAyB,CAAC,CAAC,SAAS,CAAC,mDAAyB,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"ai-history-frontend-module.js","sourceRoot":"","sources":["../../src/browser/ai-history-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;AAChF,4CAA+D;AAC/D,4DAA+D;AAC/D,+FAAiG;AACjG,qDAA8E;AAC9E,uEAAsE;AACtE,2DAAoD;AACpD,kDAAgD;AAChD,mFAA0F;AAE1F,kBAAe,IAAI,2BAAe,CAAC,IAAI,CAAC,EAAE;IACtC,IAAI,CAAC,sEAAoC,CAAC,CAAC,MAAM,EAAE,CAAC,gBAAgB,EAAE,CAAC;IACvE,IAAI,CAAC,uCAA6B,CAAC,CAAC,SAAS,CAAC,sEAAoC,CAAC,CAAC;IAEpF,IAAA,8BAAoB,EAAC,IAAI,EAAE,mDAAyB,CAAC,CAAC;IAEtD,IAAI,CAAC,iCAAa,CAAC,CAAC,MAAM,EAAE,CAAC;IAC7B,IAAI,CAAC,uBAAa,CAAC,CAAC,cAAc,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;QAC3C,EAAE,EAAE,iCAAa,CAAC,EAAE;QACpB,YAAY,EAAE,GAAG,EAAE,CAAC,OAAO,CAAC,SAAS,CAAC,GAAG,CAAgB,iCAAa,CAAC;KAC1E,CAAC,CAAC,CAAC,gBAAgB,EAAE,CAAC;IACvB,IAAI,CAAC,2CAAyB,CAAC,CAAC,SAAS,CAAC,mDAAyB,CAAC,CAAC;AACzE,CAAC,CAAC,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ai-history-widget.d.ts","sourceRoot":"","sources":["../../src/browser/ai-history-widget.tsx"],"names":[],"mappings":";AAeA,OAAO,EAAE,KAAK,EAAE,YAAY,EAAE,6BAA6B,EAAE,yBAAyB,EAAE,0BAA0B,EAAE,MAAM,gBAAgB,CAAC;AAC3I,OAAO,EAAW,WAAW,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAC;AAE/E,OAAO,KAAK,KAAK,MAAM,0BAA0B,CAAC;AAKlD,kBAAU,aAAa,CAAC;IACpB,UAAiB,KAAK;QAClB,aAAa,EAAE,OAAO,CAAC;KAC1B;CACJ;AAED,qBACa,aAAc,SAAQ,WAAY,YAAW,cAAc;IAEpE,SAAS,CAAC,gBAAgB,EAAE,6BAA6B,CAAC;IAE1D,SAAS,CAAC,QAAQ,CAAC,YAAY,EAAE,YAAY,CAAC;IAE9C,OAAc,EAAE,SAAuB;IACvC,MAAM,CAAC,KAAK,
|
|
1
|
+
{"version":3,"file":"ai-history-widget.d.ts","sourceRoot":"","sources":["../../src/browser/ai-history-widget.tsx"],"names":[],"mappings":";AAeA,OAAO,EAAE,KAAK,EAAE,YAAY,EAAE,6BAA6B,EAAE,yBAAyB,EAAE,0BAA0B,EAAE,MAAM,gBAAgB,CAAC;AAC3I,OAAO,EAAW,WAAW,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAC;AAE/E,OAAO,KAAK,KAAK,MAAM,0BAA0B,CAAC;AAKlD,kBAAU,aAAa,CAAC;IACpB,UAAiB,KAAK;QAClB,aAAa,EAAE,OAAO,CAAC;KAC1B;CACJ;AAED,qBACa,aAAc,SAAQ,WAAY,YAAW,cAAc;IAEpE,SAAS,CAAC,gBAAgB,EAAE,6BAA6B,CAAC;IAE1D,SAAS,CAAC,QAAQ,CAAC,YAAY,EAAE,YAAY,CAAC;IAE9C,OAAc,EAAE,SAAuB;IACvC,MAAM,CAAC,KAAK,SAA2E;IAEvF,SAAS,CAAC,aAAa,CAAC,EAAE,KAAK,CAAC;IAEhC,SAAS,CAAC,MAAM,EAAE,aAAa,CAAC,KAAK,CAA4B;;IAWjE,SAAS,KAAK,KAAK,IAAI,aAAa,CAAC,KAAK,CAEzC;IAED,SAAS,KAAK,KAAK,CAAC,KAAK,EAAE,aAAa,CAAC,KAAK,EAG7C;IAED,UAAU,IAAI,MAAM;IAIpB,YAAY,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,aAAa,CAAC,KAAK,CAAC,GAAG,IAAI;IASnE,SAAS,CAAC,IAAI,IAAI,IAAI;IAQtB,SAAS,CAAC,WAAW,CAAC,KAAK,EAAE,KAAK,GAAG,SAAS,GAAG,IAAI;IAKrD,SAAS,CAAC,qBAAqB,CAAC,KAAK,EAAE,yBAAyB,GAAG,0BAA0B,GAAG,IAAI;IAMpG,MAAM,IAAI,KAAK,CAAC,SAAS;IA6BzB,SAAS,CAAC,aAAa,IAAI,KAAK,CAAC,SAAS;IAgB1C,SAAS,CAAC,OAAO,CAAC,CAAC,EAAE,KAAK,CAAC,UAAU,CAAC,cAAc,CAAC,EAAE,KAAK,EAAE,KAAK,GAAG,IAAI;IAKnE,WAAW,CAAC,aAAa,EAAE,OAAO,GAAG,IAAI;IAIhD,IAAI,eAAe,IAAI,OAAO,CAE7B;CACJ"}
|
|
@@ -114,7 +114,7 @@ let AIHistoryView = AIHistoryView_1 = class AIHistoryView extends browser_1.Reac
|
|
|
114
114
|
};
|
|
115
115
|
exports.AIHistoryView = AIHistoryView;
|
|
116
116
|
AIHistoryView.ID = 'ai-history-widget';
|
|
117
|
-
AIHistoryView.LABEL = core_1.nls.localize('theia/ai/history/view/label', '
|
|
117
|
+
AIHistoryView.LABEL = core_1.nls.localize('theia/ai/history/view/label', 'AI Agent History [Alpha]');
|
|
118
118
|
tslib_1.__decorate([
|
|
119
119
|
(0, inversify_1.inject)(ai_core_1.CommunicationRecordingService),
|
|
120
120
|
tslib_1.__metadata("design:type", Object)
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ai-history-widget.js","sourceRoot":"","sources":["../../src/browser/ai-history-widget.tsx"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"ai-history-widget.js","sourceRoot":"","sources":["../../src/browser/ai-history-widget.tsx"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"communication-recording-service.d.ts","sourceRoot":"","sources":["../../src/common/communication-recording-service.ts"],"names":[],"mappings":"AAeA,OAAO,EACH,oBAAoB,EACpB,6BAA6B,EAC7B,yBAAyB,EACzB,8BAA8B,EAC9B,0BAA0B,EAC1B,+BAA+B,EAClC,MAAM,gBAAgB,CAAC;AACxB,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,aAAa,CAAC;AAGtD,qBACa,oCAAqC,YAAW,6BAA6B;IAGtF,SAAS,CAAC,MAAM,EAAE,OAAO,CAAC;IAE1B,SAAS,CAAC,yBAAyB,qCAA4C;IAC/E,QAAQ,CAAC,kBAAkB,EAAE,KAAK,CAAC,yBAAyB,CAAC,CAAwC;IAErG,SAAS,CAAC,0BAA0B,sCAA6C;IACjF,QAAQ,CAAC,mBAAmB,EAAE,KAAK,CAAC,0BAA0B,CAAC,CAAyC;IAExG,SAAS,CAAC,yBAAyB,gBAAuB;IAC1D,QAAQ,CAAC,kBAAkB,EAAE,KAAK,CAAC,IAAI,CAAC,CAAwC;IAEhF,SAAS,CAAC,OAAO,EAAE,GAAG,CAAC,MAAM,EAAE,oBAAoB,CAAC,CAAa;IAEjE,UAAU,CAAC,OAAO,EAAE,MAAM,GAAG,oBAAoB;IAIjD,iBAAiB,CAAC,SAAS,EAAE,MAAM,GAAG,oBAAoB;IAQ1D,aAAa,CAAC,YAAY,EAAE,8BAA8B,GAAG,IAAI;
|
|
1
|
+
{"version":3,"file":"communication-recording-service.d.ts","sourceRoot":"","sources":["../../src/common/communication-recording-service.ts"],"names":[],"mappings":"AAeA,OAAO,EACH,oBAAoB,EACpB,6BAA6B,EAC7B,yBAAyB,EACzB,8BAA8B,EAC9B,0BAA0B,EAC1B,+BAA+B,EAClC,MAAM,gBAAgB,CAAC;AACxB,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,aAAa,CAAC;AAGtD,qBACa,oCAAqC,YAAW,6BAA6B;IAGtF,SAAS,CAAC,MAAM,EAAE,OAAO,CAAC;IAE1B,SAAS,CAAC,yBAAyB,qCAA4C;IAC/E,QAAQ,CAAC,kBAAkB,EAAE,KAAK,CAAC,yBAAyB,CAAC,CAAwC;IAErG,SAAS,CAAC,0BAA0B,sCAA6C;IACjF,QAAQ,CAAC,mBAAmB,EAAE,KAAK,CAAC,0BAA0B,CAAC,CAAyC;IAExG,SAAS,CAAC,yBAAyB,gBAAuB;IAC1D,QAAQ,CAAC,kBAAkB,EAAE,KAAK,CAAC,IAAI,CAAC,CAAwC;IAEhF,SAAS,CAAC,OAAO,EAAE,GAAG,CAAC,MAAM,EAAE,oBAAoB,CAAC,CAAa;IAEjE,UAAU,CAAC,OAAO,EAAE,MAAM,GAAG,oBAAoB;IAIjD,iBAAiB,CAAC,SAAS,EAAE,MAAM,GAAG,oBAAoB;IAQ1D,aAAa,CAAC,YAAY,EAAE,8BAA8B,GAAG,IAAI;IAoBjE,cAAc,CAAC,aAAa,EAAE,+BAA+B,GAAG,IAAI;IAiBpE,YAAY,IAAI,IAAI;CAIvB"}
|
|
@@ -21,14 +21,23 @@ let DefaultCommunicationRecordingService = class DefaultCommunicationRecordingSe
|
|
|
21
21
|
return Array.from(this.history.values()).reduce((acc, current) => acc.concat(current.filter(entry => entry.sessionId === sessionId)), []);
|
|
22
22
|
}
|
|
23
23
|
recordRequest(requestEntry) {
|
|
24
|
-
var _a;
|
|
25
24
|
this.logger.debug('Recording request:', requestEntry.request);
|
|
26
25
|
const completedEntry = { timestamp: Date.now(), ...requestEntry };
|
|
27
|
-
if (this.history.has(requestEntry.agentId)) {
|
|
28
|
-
|
|
26
|
+
if (!this.history.has(requestEntry.agentId)) {
|
|
27
|
+
this.history.set(requestEntry.agentId, [completedEntry]);
|
|
29
28
|
}
|
|
30
29
|
else {
|
|
31
|
-
this.history.
|
|
30
|
+
const agentHistory = this.history.get(requestEntry.agentId);
|
|
31
|
+
const existingEntryIndex = agentHistory.findIndex(e => e.requestId === requestEntry.requestId);
|
|
32
|
+
if (existingEntryIndex !== -1) {
|
|
33
|
+
agentHistory[existingEntryIndex] = {
|
|
34
|
+
...agentHistory[existingEntryIndex],
|
|
35
|
+
...completedEntry
|
|
36
|
+
};
|
|
37
|
+
}
|
|
38
|
+
else {
|
|
39
|
+
agentHistory.push(completedEntry);
|
|
40
|
+
}
|
|
32
41
|
}
|
|
33
42
|
this.onDidRecordRequestEmitter.fire(completedEntry);
|
|
34
43
|
}
|
|
@@ -36,9 +45,9 @@ let DefaultCommunicationRecordingService = class DefaultCommunicationRecordingSe
|
|
|
36
45
|
this.logger.debug('Recording response:', responseEntry.response);
|
|
37
46
|
const completedEntry = { timestamp: Date.now(), ...responseEntry };
|
|
38
47
|
if (this.history.has(completedEntry.agentId)) {
|
|
39
|
-
const
|
|
40
|
-
if (
|
|
41
|
-
const matchingRequest =
|
|
48
|
+
const agentHistory = this.history.get(completedEntry.agentId);
|
|
49
|
+
if (agentHistory) {
|
|
50
|
+
const matchingRequest = agentHistory.find(e => e.requestId === completedEntry.requestId);
|
|
42
51
|
if (!matchingRequest) {
|
|
43
52
|
throw Error('No matching request found for response');
|
|
44
53
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"communication-recording-service.js","sourceRoot":"","sources":["../../src/common/communication-recording-service.ts"],"names":[],"mappings":";;;;AAuBA,sCAAsD;AACtD,4DAAyE;AAGlE,IAAM,oCAAoC,GAA1C,MAAM,oCAAoC;IAA1C;QAKO,8BAAyB,GAAG,IAAI,cAAO,EAA6B,CAAC;QACtE,uBAAkB,GAAqC,IAAI,CAAC,yBAAyB,CAAC,KAAK,CAAC;QAE3F,+BAA0B,GAAG,IAAI,cAAO,EAA8B,CAAC;QACxE,wBAAmB,GAAsC,IAAI,CAAC,0BAA0B,CAAC,KAAK,CAAC;QAE9F,8BAAyB,GAAG,IAAI,cAAO,EAAQ,CAAC;QACjD,uBAAkB,GAAgB,IAAI,CAAC,yBAAyB,CAAC,KAAK,CAAC;QAEtE,YAAO,GAAsC,IAAI,GAAG,EAAE,CAAC;
|
|
1
|
+
{"version":3,"file":"communication-recording-service.js","sourceRoot":"","sources":["../../src/common/communication-recording-service.ts"],"names":[],"mappings":"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"}
|
|
@@ -5,37 +5,39 @@ const communication_recording_service_1 = require("./communication-recording-ser
|
|
|
5
5
|
const chai_1 = require("chai");
|
|
6
6
|
describe('DefaultCommunicationRecordingService', () => {
|
|
7
7
|
it('records history', () => {
|
|
8
|
+
var _a, _b, _c;
|
|
8
9
|
const service = new communication_recording_service_1.DefaultCommunicationRecordingService();
|
|
9
10
|
service.logger = new mock_logger_1.MockLogger();
|
|
10
|
-
service.recordRequest({ agentId: 'agent', requestId: '1', sessionId: '1', timestamp: 100, request: 'dummy request' });
|
|
11
|
+
service.recordRequest({ agentId: 'agent', requestId: '1', sessionId: '1', timestamp: 100, request: [{ type: 'text', actor: 'user', text: 'dummy request' }] });
|
|
11
12
|
const history1 = service.getHistory('agent');
|
|
12
|
-
(0, chai_1.expect)(history1[0].request).to.eq('dummy request');
|
|
13
|
-
service.recordResponse({ agentId: 'agent', requestId: '1', sessionId: '1', timestamp: 200, response: 'dummy response' });
|
|
13
|
+
(0, chai_1.expect)(((_a = history1[0].request) === null || _a === void 0 ? void 0 : _a[0]).text).to.eq('dummy request');
|
|
14
|
+
service.recordResponse({ agentId: 'agent', requestId: '1', sessionId: '1', timestamp: 200, response: [{ type: 'text', actor: 'ai', text: 'dummy response' }] });
|
|
14
15
|
const history2 = service.getHistory('agent');
|
|
15
|
-
(0, chai_1.expect)(history2[0].request).to.eq('dummy request');
|
|
16
|
-
(0, chai_1.expect)(history2[0].response).to.eq('dummy response');
|
|
16
|
+
(0, chai_1.expect)(((_b = history2[0].request) === null || _b === void 0 ? void 0 : _b[0]).text).to.eq('dummy request');
|
|
17
|
+
(0, chai_1.expect)(((_c = history2[0].response) === null || _c === void 0 ? void 0 : _c[0]).text).to.eq('dummy response');
|
|
17
18
|
});
|
|
18
19
|
it('returns session history', () => {
|
|
20
|
+
var _a, _b, _c, _d, _e, _f;
|
|
19
21
|
const service = new communication_recording_service_1.DefaultCommunicationRecordingService();
|
|
20
22
|
service.logger = new mock_logger_1.MockLogger();
|
|
21
23
|
// some requests and responses for session 1
|
|
22
|
-
service.recordRequest({ agentId: 'agent', requestId: '1', sessionId: '1', timestamp: 100, request: 'session 1 request 1' });
|
|
23
|
-
service.recordResponse({ agentId: 'agent', requestId: '1', sessionId: '1', timestamp: 200, response: 'session 1 response 1' });
|
|
24
|
-
service.recordRequest({ agentId: 'agent2', requestId: '2', sessionId: '1', timestamp: 100, request: 'session 1 request 2' });
|
|
25
|
-
service.recordResponse({ agentId: 'agent2', requestId: '2', sessionId: '1', timestamp: 200, response: 'session 1 response 2' });
|
|
24
|
+
service.recordRequest({ agentId: 'agent', requestId: '1', sessionId: '1', timestamp: 100, request: [{ type: 'text', actor: 'user', text: 'session 1 request 1' }] });
|
|
25
|
+
service.recordResponse({ agentId: 'agent', requestId: '1', sessionId: '1', timestamp: 200, response: [{ type: 'text', actor: 'ai', text: 'session 1 response 1' }] });
|
|
26
|
+
service.recordRequest({ agentId: 'agent2', requestId: '2', sessionId: '1', timestamp: 100, request: [{ type: 'text', actor: 'user', text: 'session 1 request 2' }] });
|
|
27
|
+
service.recordResponse({ agentId: 'agent2', requestId: '2', sessionId: '1', timestamp: 200, response: [{ type: 'text', actor: 'ai', text: 'session 1 response 2' }] });
|
|
26
28
|
// some requests and responses for session 2
|
|
27
|
-
service.recordRequest({ agentId: 'agent', requestId: '3', sessionId: '2', timestamp: 100, request: 'different session request' });
|
|
28
|
-
service.recordResponse({ agentId: 'agent', requestId: '3', sessionId: '2', timestamp: 200, response: 'different session request' });
|
|
29
|
+
service.recordRequest({ agentId: 'agent', requestId: '3', sessionId: '2', timestamp: 100, request: [{ type: 'text', actor: 'user', text: 'different session request' }] });
|
|
30
|
+
service.recordResponse({ agentId: 'agent', requestId: '3', sessionId: '2', timestamp: 200, response: [{ type: 'text', actor: 'ai', text: 'different session request' }] });
|
|
29
31
|
const history1 = service.getSessionHistory('1');
|
|
30
32
|
(0, chai_1.expect)(history1.length).to.eq(2);
|
|
31
|
-
(0, chai_1.expect)(history1[0].request).to.eq('session 1 request 1');
|
|
32
|
-
(0, chai_1.expect)(history1[0].response).to.eq('session 1 response 1');
|
|
33
|
-
(0, chai_1.expect)(history1[1].request).to.eq('session 1 request 2');
|
|
34
|
-
(0, chai_1.expect)(history1[1].response).to.eq('session 1 response 2');
|
|
33
|
+
(0, chai_1.expect)(((_a = history1[0].request) === null || _a === void 0 ? void 0 : _a[0]).text).to.eq('session 1 request 1');
|
|
34
|
+
(0, chai_1.expect)(((_b = history1[0].response) === null || _b === void 0 ? void 0 : _b[0]).text).to.eq('session 1 response 1');
|
|
35
|
+
(0, chai_1.expect)(((_c = history1[1].request) === null || _c === void 0 ? void 0 : _c[0]).text).to.eq('session 1 request 2');
|
|
36
|
+
(0, chai_1.expect)(((_d = history1[1].response) === null || _d === void 0 ? void 0 : _d[0]).text).to.eq('session 1 response 2');
|
|
35
37
|
const history2 = service.getSessionHistory('2');
|
|
36
38
|
(0, chai_1.expect)(history2.length).to.eq(1);
|
|
37
|
-
(0, chai_1.expect)(history2[0].request).to.eq('different session request');
|
|
38
|
-
(0, chai_1.expect)(history2[0].response).to.eq('different session request');
|
|
39
|
+
(0, chai_1.expect)(((_e = history2[0].request) === null || _e === void 0 ? void 0 : _e[0]).text).to.eq('different session request');
|
|
40
|
+
(0, chai_1.expect)(((_f = history2[0].response) === null || _f === void 0 ? void 0 : _f[0]).text).to.eq('different session request');
|
|
39
41
|
});
|
|
40
42
|
});
|
|
41
43
|
//# sourceMappingURL=communication-recording-service.spec.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"communication-recording-service.spec.js","sourceRoot":"","sources":["../../src/common/communication-recording-service.spec.ts"],"names":[],"mappings":";;AAgBA,yEAAqE;AACrE,uFAAyF;AACzF,+BAA8B;
|
|
1
|
+
{"version":3,"file":"communication-recording-service.spec.js","sourceRoot":"","sources":["../../src/common/communication-recording-service.spec.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@theia/ai-history",
|
|
3
|
-
"version": "1.60.0
|
|
3
|
+
"version": "1.60.0",
|
|
4
4
|
"description": "Theia - AI communication history",
|
|
5
5
|
"dependencies": {
|
|
6
|
-
"@theia/ai-core": "1.60.0
|
|
7
|
-
"@theia/core": "1.60.0
|
|
8
|
-
"@theia/filesystem": "1.60.0
|
|
9
|
-
"@theia/output": "1.60.0
|
|
10
|
-
"@theia/workspace": "1.60.0
|
|
6
|
+
"@theia/ai-core": "1.60.0",
|
|
7
|
+
"@theia/core": "1.60.0",
|
|
8
|
+
"@theia/filesystem": "1.60.0",
|
|
9
|
+
"@theia/output": "1.60.0",
|
|
10
|
+
"@theia/workspace": "1.60.0",
|
|
11
11
|
"minimatch": "^5.1.0",
|
|
12
12
|
"tslib": "^2.6.2"
|
|
13
13
|
},
|
|
@@ -45,10 +45,10 @@
|
|
|
45
45
|
"watch": "theiaext watch"
|
|
46
46
|
},
|
|
47
47
|
"devDependencies": {
|
|
48
|
-
"@theia/ext-scripts": "1.
|
|
48
|
+
"@theia/ext-scripts": "1.60.0"
|
|
49
49
|
},
|
|
50
50
|
"nyc": {
|
|
51
51
|
"extends": "../../configs/nyc.json"
|
|
52
52
|
},
|
|
53
|
-
"gitHead": "
|
|
53
|
+
"gitHead": "193fa55d7e26aa9dc8acba3ae3b99b0182f3603f"
|
|
54
54
|
}
|
|
@@ -21,53 +21,87 @@ export interface CommunicationCardProps {
|
|
|
21
21
|
entry: CommunicationHistoryEntry;
|
|
22
22
|
}
|
|
23
23
|
|
|
24
|
-
export const CommunicationCard: React.FC<CommunicationCardProps> = ({ entry }) =>
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
24
|
+
export const CommunicationCard: React.FC<CommunicationCardProps> = ({ entry }) => {
|
|
25
|
+
// Format JSON with error handling
|
|
26
|
+
const formatJson = (data: unknown): string => {
|
|
27
|
+
try {
|
|
28
|
+
return JSON.stringify(data, undefined, 2);
|
|
29
|
+
} catch (error) {
|
|
30
|
+
console.error('Error formatting JSON:', error);
|
|
31
|
+
return 'Error formatting data';
|
|
32
|
+
}
|
|
33
|
+
};
|
|
34
|
+
|
|
35
|
+
// Format the timestamp for better readability
|
|
36
|
+
const formatTimestamp = (timestamp: number): string =>
|
|
37
|
+
new Date(timestamp).toLocaleString(undefined, {
|
|
38
|
+
year: 'numeric',
|
|
39
|
+
month: 'short',
|
|
40
|
+
day: 'numeric',
|
|
41
|
+
hour: '2-digit',
|
|
42
|
+
minute: '2-digit',
|
|
43
|
+
second: '2-digit'
|
|
44
|
+
});
|
|
45
|
+
;
|
|
46
|
+
|
|
47
|
+
return (
|
|
48
|
+
<div className='theia-card' role="article" aria-label={`Communication log for request ${entry.requestId}`}>
|
|
49
|
+
<div className='theia-card-meta'>
|
|
50
|
+
<span className='theia-card-request-id'>{nls.localize('theia/ai/history/communication-card/requestId', 'Request ID')}: {entry.requestId}</span>
|
|
51
|
+
<span className='theia-card-session-id'>{nls.localize('theia/ai/history/communication-card/sessionId', 'Session ID')}: {entry.sessionId}</span>
|
|
52
|
+
</div>
|
|
53
|
+
<div className='theia-card-content'>
|
|
54
|
+
{entry.request && (
|
|
55
|
+
<div className='theia-card-request'>
|
|
56
|
+
<h2>{nls.localize('theia/ai/history/communication-card/request', 'Request')}</h2>
|
|
57
|
+
<details key={`request-${entry.requestId}`}>
|
|
58
|
+
<summary>
|
|
59
|
+
<h3>{nls.localize('theia/ai/history/communication-card/request/summary', 'Request')} {entry.requestId}</h3>
|
|
60
|
+
</summary>
|
|
61
|
+
<div className='theia-card-request-messages'>
|
|
62
|
+
<h4>{nls.localize('theia/ai/history/communication-card/request/messages', 'Messages')}</h4>
|
|
63
|
+
<ul className='theia-card-request-messages-list'>
|
|
64
|
+
{entry.request.map((message, index) => (
|
|
65
|
+
<li key={`message-${entry.requestId}-${index}`} className="message-item">
|
|
66
|
+
<pre className="message-content">{formatJson(message)}</pre>
|
|
67
|
+
</li>
|
|
68
|
+
))}
|
|
69
|
+
</ul>
|
|
51
70
|
</div>
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
71
|
+
</details>
|
|
72
|
+
</div>
|
|
73
|
+
)}
|
|
74
|
+
{entry.response && (
|
|
75
|
+
<div className='theia-card-response'>
|
|
76
|
+
<h2>{nls.localize('theia/ai/history/communication-card/response', 'Response')}</h2>
|
|
77
|
+
<details key={`response-${entry.requestId}`}>
|
|
78
|
+
<summary>
|
|
79
|
+
<h3>{nls.localize('theia/ai/history/communication-card/response/summary', 'Response')} {entry.requestId}</h3>
|
|
80
|
+
</summary>
|
|
81
|
+
<div className='theia-card-response-messages'>
|
|
82
|
+
<h4>{nls.localize('theia/ai/history/communication-card/response/messages', 'Messages')}</h4>
|
|
83
|
+
<ul className='theia-card-response-messages-list'>
|
|
84
|
+
{entry.response.map((message, index) => (
|
|
85
|
+
<li key={`message-${entry.requestId}-${index}`} className="message-item">
|
|
86
|
+
<pre className="message-content">{formatJson(message)}</pre>
|
|
87
|
+
</li>
|
|
59
88
|
))}
|
|
60
89
|
</ul>
|
|
61
90
|
</div>
|
|
62
|
-
|
|
63
|
-
</
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
91
|
+
</details>
|
|
92
|
+
</div>
|
|
93
|
+
)}
|
|
94
|
+
</div>
|
|
95
|
+
<div className='theia-card-meta'>
|
|
96
|
+
<span className='theia-card-timestamp'>
|
|
97
|
+
{nls.localize('theia/ai/history/communication-card/timestamp', 'Timestamp')}: {formatTimestamp(entry.timestamp)}
|
|
98
|
+
</span>
|
|
99
|
+
{entry.responseTime !== undefined && (
|
|
100
|
+
<span className='theia-card-response-time'>
|
|
101
|
+
{nls.localize('theia/ai/history/communication-card/responseTime', 'Response Time')}: {entry.responseTime}ms
|
|
102
|
+
</span>
|
|
103
|
+
)}
|
|
104
|
+
</div>
|
|
71
105
|
</div>
|
|
72
|
-
|
|
73
|
-
|
|
106
|
+
);
|
|
107
|
+
};
|
|
@@ -35,7 +35,7 @@ export class AIHistoryView extends ReactWidget implements StatefulWidget {
|
|
|
35
35
|
protected readonly agentService: AgentService;
|
|
36
36
|
|
|
37
37
|
public static ID = 'ai-history-widget';
|
|
38
|
-
static LABEL = nls.localize('theia/ai/history/view/label', '
|
|
38
|
+
static LABEL = nls.localize('theia/ai/history/view/label', 'AI Agent History [Alpha]');
|
|
39
39
|
|
|
40
40
|
protected selectedAgent?: Agent;
|
|
41
41
|
|
|
@@ -1,92 +1,144 @@
|
|
|
1
1
|
.agent-history-widget {
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
2
|
+
display: flex;
|
|
3
|
+
flex-direction: column;
|
|
4
|
+
align-items: center;
|
|
5
5
|
}
|
|
6
6
|
|
|
7
|
-
|
|
8
7
|
.agent-history-widget .theia-select-component {
|
|
9
|
-
|
|
10
|
-
|
|
8
|
+
margin: 10px 0;
|
|
9
|
+
width: 80%;
|
|
11
10
|
}
|
|
12
11
|
|
|
13
12
|
.agent-history {
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
13
|
+
width: calc(80% + 16px);
|
|
14
|
+
display: flex;
|
|
15
|
+
align-items: center;
|
|
16
|
+
flex-direction: column;
|
|
18
17
|
}
|
|
19
18
|
|
|
20
19
|
.theia-card {
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
20
|
+
background-color: var(--theia-sideBar-background);
|
|
21
|
+
border: 1px solid var(--theia-sideBarSectionHeader-border);
|
|
22
|
+
box-shadow: 0 4px 8px rgba(0, 0, 0, 0.1);
|
|
23
|
+
padding: 15px;
|
|
24
|
+
margin: 10px 0;
|
|
25
|
+
width: 100%;
|
|
26
|
+
box-sizing: border-box;
|
|
28
27
|
}
|
|
29
28
|
|
|
30
29
|
.theia-card-meta {
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
30
|
+
display: flex;
|
|
31
|
+
justify-content: space-between;
|
|
32
|
+
font-size: 0.9em;
|
|
33
|
+
padding: var(--theia-ui-padding) 0;
|
|
35
34
|
}
|
|
36
35
|
|
|
37
36
|
.theia-card-content {
|
|
38
|
-
|
|
39
|
-
|
|
37
|
+
color: var(--theia-font-color);
|
|
38
|
+
margin-bottom: 10px;
|
|
40
39
|
}
|
|
41
40
|
|
|
42
41
|
.theia-card-content h2 {
|
|
43
|
-
|
|
42
|
+
font-size: var(--theia-ui-font-size2);
|
|
44
43
|
}
|
|
44
|
+
|
|
45
45
|
.theia-card-content h3 {
|
|
46
|
-
|
|
47
|
-
|
|
46
|
+
font-size: var(--theia-ui-font-size1);
|
|
47
|
+
font-weight: bold;
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
.theia-card-content pre {
|
|
51
|
+
border-radius: 4px;
|
|
52
|
+
border: 1px solid var(--theia-sideBarSectionHeader-border);
|
|
53
|
+
background-color: var(--theia-terminal-background);
|
|
54
|
+
overflow: auto;
|
|
55
|
+
padding: 10px;
|
|
56
|
+
margin: 5px 0;
|
|
57
|
+
}
|
|
58
|
+
|
|
59
|
+
/* Common styles for request and response sections */
|
|
60
|
+
.theia-card-request details,
|
|
61
|
+
.theia-card-response details {
|
|
62
|
+
margin: 10px 0;
|
|
63
|
+
border: 1px solid var(--theia-editorWidget-border);
|
|
64
|
+
border-radius: 4px;
|
|
65
|
+
overflow: hidden;
|
|
66
|
+
}
|
|
67
|
+
|
|
68
|
+
.theia-card-request summary,
|
|
69
|
+
.theia-card-response summary {
|
|
70
|
+
padding: 10px;
|
|
71
|
+
background-color: var(--theia-editorWidget-background);
|
|
72
|
+
cursor: pointer;
|
|
73
|
+
transition: background-color 0.2s;
|
|
48
74
|
}
|
|
49
75
|
|
|
50
|
-
.theia-card-
|
|
51
|
-
|
|
76
|
+
.theia-card-request summary:hover,
|
|
77
|
+
.theia-card-response summary:hover {
|
|
78
|
+
background-color: var(--theia-list-hoverBackground);
|
|
52
79
|
}
|
|
53
|
-
|
|
54
|
-
|
|
80
|
+
|
|
81
|
+
.theia-card-request summary h3,
|
|
82
|
+
.theia-card-response summary h3 {
|
|
83
|
+
display: inline;
|
|
84
|
+
margin: 0;
|
|
55
85
|
}
|
|
56
|
-
|
|
57
|
-
|
|
86
|
+
|
|
87
|
+
.theia-card-request details > div,
|
|
88
|
+
.theia-card-response details > div {
|
|
89
|
+
padding: 0 10px 10px 10px;
|
|
90
|
+
border-top: 1px solid var(--theia-editorWidget-border);
|
|
91
|
+
background-color: var(--theia-editor-background);
|
|
92
|
+
position: relative;
|
|
58
93
|
}
|
|
59
94
|
|
|
60
|
-
.theia-card-
|
|
61
|
-
|
|
95
|
+
.theia-card-request h4,
|
|
96
|
+
.theia-card-response h4 {
|
|
97
|
+
margin-top: 12px;
|
|
98
|
+
color: var(--theia-editor-foreground);
|
|
99
|
+
font-size: var(--theia-ui-font-size1);
|
|
100
|
+
border-bottom: 1px solid var(--theia-sideBarSectionHeader-border);
|
|
101
|
+
padding-bottom: 5px;
|
|
62
102
|
}
|
|
63
103
|
|
|
64
|
-
.theia-card-request,
|
|
65
|
-
|
|
104
|
+
.theia-card-request ul,
|
|
105
|
+
.theia-card-response ul {
|
|
106
|
+
list-style: none;
|
|
107
|
+
padding-inline-start: 0;
|
|
66
108
|
}
|
|
67
109
|
|
|
68
110
|
.theia-card-request pre,
|
|
69
111
|
.theia-card-response pre {
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
112
|
+
background-color: var(--theia-editor-background);
|
|
113
|
+
}
|
|
114
|
+
|
|
115
|
+
.theia-card-request,
|
|
116
|
+
.theia-card-response {
|
|
117
|
+
margin-bottom: 10px;
|
|
118
|
+
}
|
|
119
|
+
|
|
120
|
+
/* Message lists styling */
|
|
121
|
+
.theia-card-request-messages-list li,
|
|
122
|
+
.theia-card-response-messages-list li {
|
|
123
|
+
margin-bottom: 15px;
|
|
124
|
+
position: relative;
|
|
125
|
+
padding-left: 0;
|
|
75
126
|
}
|
|
76
127
|
|
|
128
|
+
/* Meta information styling */
|
|
77
129
|
.theia-card-request-id,
|
|
78
130
|
.theia-card-session-id,
|
|
79
131
|
.theia-card-timestamp,
|
|
80
132
|
.theia-card-response-time {
|
|
81
|
-
|
|
133
|
+
flex: 1;
|
|
82
134
|
}
|
|
83
135
|
|
|
84
136
|
.theia-card-request-id,
|
|
85
137
|
.theia-card-timestamp {
|
|
86
|
-
|
|
138
|
+
text-align: left;
|
|
87
139
|
}
|
|
88
140
|
|
|
89
141
|
.theia-card-session-id,
|
|
90
142
|
.theia-card-response-time {
|
|
91
|
-
|
|
143
|
+
text-align: right;
|
|
92
144
|
}
|
|
@@ -17,46 +17,47 @@ import { ILogger } from '@theia/core';
|
|
|
17
17
|
import { MockLogger } from '@theia/core/lib/common/test/mock-logger';
|
|
18
18
|
import { DefaultCommunicationRecordingService } from './communication-recording-service';
|
|
19
19
|
import { expect } from 'chai';
|
|
20
|
+
import { TextMessage } from '@theia/ai-core';
|
|
20
21
|
|
|
21
22
|
describe('DefaultCommunicationRecordingService', () => {
|
|
22
23
|
|
|
23
24
|
it('records history', () => {
|
|
24
25
|
const service = new DefaultCommunicationRecordingService();
|
|
25
26
|
(service as unknown as { logger: ILogger }).logger = new MockLogger();
|
|
26
|
-
service.recordRequest({ agentId: 'agent', requestId: '1', sessionId: '1', timestamp: 100, request: 'dummy request' });
|
|
27
|
+
service.recordRequest({ agentId: 'agent', requestId: '1', sessionId: '1', timestamp: 100, request: [{ type: 'text', actor: 'user', text: 'dummy request' }] });
|
|
27
28
|
|
|
28
29
|
const history1 = service.getHistory('agent');
|
|
29
|
-
expect(history1[0].request).to.eq('dummy request');
|
|
30
|
+
expect((history1[0].request?.[0] as TextMessage).text).to.eq('dummy request');
|
|
30
31
|
|
|
31
|
-
service.recordResponse({ agentId: 'agent', requestId: '1', sessionId: '1', timestamp: 200, response: 'dummy response' });
|
|
32
|
+
service.recordResponse({ agentId: 'agent', requestId: '1', sessionId: '1', timestamp: 200, response: [{ type: 'text', actor: 'ai', text: 'dummy response' }] });
|
|
32
33
|
const history2 = service.getHistory('agent');
|
|
33
|
-
expect(history2[0].request).to.eq('dummy request');
|
|
34
|
-
expect(history2[0].response).to.eq('dummy response');
|
|
34
|
+
expect((history2[0].request?.[0] as TextMessage).text).to.eq('dummy request');
|
|
35
|
+
expect((history2[0].response?.[0] as TextMessage).text).to.eq('dummy response');
|
|
35
36
|
});
|
|
36
37
|
|
|
37
38
|
it('returns session history', () => {
|
|
38
39
|
const service = new DefaultCommunicationRecordingService();
|
|
39
40
|
(service as unknown as { logger: ILogger }).logger = new MockLogger();
|
|
40
41
|
// some requests and responses for session 1
|
|
41
|
-
service.recordRequest({ agentId: 'agent', requestId: '1', sessionId: '1', timestamp: 100, request: 'session 1 request 1' });
|
|
42
|
-
service.recordResponse({ agentId: 'agent', requestId: '1', sessionId: '1', timestamp: 200, response: 'session 1 response 1' });
|
|
43
|
-
service.recordRequest({ agentId: 'agent2', requestId: '2', sessionId: '1', timestamp: 100, request: 'session 1 request 2' });
|
|
44
|
-
service.recordResponse({ agentId: 'agent2', requestId: '2', sessionId: '1', timestamp: 200, response: 'session 1 response 2' });
|
|
42
|
+
service.recordRequest({ agentId: 'agent', requestId: '1', sessionId: '1', timestamp: 100, request: [{ type: 'text', actor: 'user', text: 'session 1 request 1' }] });
|
|
43
|
+
service.recordResponse({ agentId: 'agent', requestId: '1', sessionId: '1', timestamp: 200, response: [{ type: 'text', actor: 'ai', text: 'session 1 response 1' }] });
|
|
44
|
+
service.recordRequest({ agentId: 'agent2', requestId: '2', sessionId: '1', timestamp: 100, request: [{ type: 'text', actor: 'user', text: 'session 1 request 2' }] });
|
|
45
|
+
service.recordResponse({ agentId: 'agent2', requestId: '2', sessionId: '1', timestamp: 200, response: [{ type: 'text', actor: 'ai', text: 'session 1 response 2' }] });
|
|
45
46
|
// some requests and responses for session 2
|
|
46
|
-
service.recordRequest({ agentId: 'agent', requestId: '3', sessionId: '2', timestamp: 100, request: 'different session request' });
|
|
47
|
-
service.recordResponse({ agentId: 'agent', requestId: '3', sessionId: '2', timestamp: 200, response: 'different session request' });
|
|
47
|
+
service.recordRequest({ agentId: 'agent', requestId: '3', sessionId: '2', timestamp: 100, request: [{ type: 'text', actor: 'user', text: 'different session request' }] });
|
|
48
|
+
service.recordResponse({ agentId: 'agent', requestId: '3', sessionId: '2', timestamp: 200, response: [{ type: 'text', actor: 'ai', text: 'different session request' }] });
|
|
48
49
|
|
|
49
50
|
const history1 = service.getSessionHistory('1');
|
|
50
51
|
expect(history1.length).to.eq(2);
|
|
51
|
-
expect(history1[0].request).to.eq('session 1 request 1');
|
|
52
|
-
expect(history1[0].response).to.eq('session 1 response 1');
|
|
53
|
-
expect(history1[1].request).to.eq('session 1 request 2');
|
|
54
|
-
expect(history1[1].response).to.eq('session 1 response 2');
|
|
52
|
+
expect((history1[0].request?.[0] as TextMessage).text).to.eq('session 1 request 1');
|
|
53
|
+
expect((history1[0].response?.[0] as TextMessage).text).to.eq('session 1 response 1');
|
|
54
|
+
expect((history1[1].request?.[0] as TextMessage).text).to.eq('session 1 request 2');
|
|
55
|
+
expect((history1[1].response?.[0] as TextMessage).text).to.eq('session 1 response 2');
|
|
55
56
|
|
|
56
57
|
const history2 = service.getSessionHistory('2');
|
|
57
58
|
expect(history2.length).to.eq(1);
|
|
58
|
-
expect(history2[0].request).to.eq('different session request');
|
|
59
|
-
expect(history2[0].response).to.eq('different session request');
|
|
59
|
+
expect((history2[0].request?.[0] as TextMessage).text).to.eq('different session request');
|
|
60
|
+
expect((history2[0].response?.[0] as TextMessage).text).to.eq('different session request');
|
|
60
61
|
});
|
|
61
62
|
|
|
62
63
|
});
|
|
@@ -19,7 +19,7 @@ import {
|
|
|
19
19
|
CommunicationRequestEntry,
|
|
20
20
|
CommunicationRequestEntryParam,
|
|
21
21
|
CommunicationResponseEntry,
|
|
22
|
-
CommunicationResponseEntryParam
|
|
22
|
+
CommunicationResponseEntryParam,
|
|
23
23
|
} from '@theia/ai-core';
|
|
24
24
|
import { Emitter, Event, ILogger } from '@theia/core';
|
|
25
25
|
import { inject, injectable, named } from '@theia/core/shared/inversify';
|
|
@@ -56,10 +56,19 @@ export class DefaultCommunicationRecordingService implements CommunicationRecord
|
|
|
56
56
|
recordRequest(requestEntry: CommunicationRequestEntryParam): void {
|
|
57
57
|
this.logger.debug('Recording request:', requestEntry.request);
|
|
58
58
|
const completedEntry = { timestamp: Date.now(), ...requestEntry };
|
|
59
|
-
if (this.history.has(requestEntry.agentId)) {
|
|
60
|
-
this.history.get(requestEntry.agentId)?.push(completedEntry);
|
|
61
|
-
} else {
|
|
59
|
+
if (!this.history.has(requestEntry.agentId)) {
|
|
62
60
|
this.history.set(requestEntry.agentId, [completedEntry]);
|
|
61
|
+
} else {
|
|
62
|
+
const agentHistory = this.history.get(requestEntry.agentId)!;
|
|
63
|
+
const existingEntryIndex = agentHistory.findIndex(e => e.requestId === requestEntry.requestId);
|
|
64
|
+
if (existingEntryIndex !== -1) {
|
|
65
|
+
agentHistory[existingEntryIndex] = {
|
|
66
|
+
...agentHistory[existingEntryIndex],
|
|
67
|
+
...completedEntry
|
|
68
|
+
};
|
|
69
|
+
} else {
|
|
70
|
+
agentHistory.push(completedEntry);
|
|
71
|
+
}
|
|
63
72
|
}
|
|
64
73
|
this.onDidRecordRequestEmitter.fire(completedEntry);
|
|
65
74
|
}
|
|
@@ -68,9 +77,9 @@ export class DefaultCommunicationRecordingService implements CommunicationRecord
|
|
|
68
77
|
this.logger.debug('Recording response:', responseEntry.response);
|
|
69
78
|
const completedEntry = { timestamp: Date.now(), ...responseEntry };
|
|
70
79
|
if (this.history.has(completedEntry.agentId)) {
|
|
71
|
-
const
|
|
72
|
-
if (
|
|
73
|
-
const matchingRequest =
|
|
80
|
+
const agentHistory = this.history.get(completedEntry.agentId);
|
|
81
|
+
if (agentHistory) {
|
|
82
|
+
const matchingRequest = agentHistory.find(e => e.requestId === completedEntry.requestId);
|
|
74
83
|
if (!matchingRequest) {
|
|
75
84
|
throw Error('No matching request found for response');
|
|
76
85
|
}
|