@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.
@@ -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,CAiD9D,CAAC"}
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 }) => (React.createElement("div", { className: 'theia-card' },
7
- React.createElement("div", { className: 'theia-card-meta' },
8
- React.createElement("span", { className: 'theia-card-request-id' },
9
- core_1.nls.localize('theia/ai/history/communication-card/requestId', 'Request ID'),
10
- ": ",
11
- entry.requestId),
12
- React.createElement("span", { className: 'theia-card-session-id' },
13
- core_1.nls.localize('theia/ai/history/communication-card/sessionId', 'Session ID'),
14
- ": ",
15
- entry.sessionId)),
16
- React.createElement("div", { className: 'theia-card-content' },
17
- entry.request && (React.createElement("div", { className: 'theia-card-request' },
18
- React.createElement("h2", null, core_1.nls.localize('theia/ai/history/communication-card/request', 'Request')),
19
- React.createElement("pre", null, entry.request))),
20
- entry.response && (React.createElement("div", { className: 'theia-card-response' },
21
- React.createElement("h2", null, core_1.nls.localize('theia/ai/history/communication-card/response', 'Response')),
22
- React.createElement("pre", null, entry.response))),
23
- (entry.systemMessage || (entry.messages && entry.messages.length > 0)) && (React.createElement("div", { className: 'theia-card-context' },
24
- React.createElement("details", null,
25
- React.createElement("summary", null,
26
- React.createElement("h2", null, core_1.nls.localize('theia/ai/history/communication-card/context', 'Context'))),
27
- (entry.systemMessage && (React.createElement("div", { className: 'theia-context-system-message' },
28
- React.createElement("h3", null, core_1.nls.localize('theia/ai/history/communication-card/systemMessage', 'System Message')),
29
- React.createElement("pre", null, entry.systemMessage)))),
30
- (entry.messages && entry.messages.length > 0) && (React.createElement("div", { className: 'theia-context-messages' },
31
- React.createElement("h3", null, core_1.nls.localize('theia/ai/history/communication-card/messages', 'Messages')),
32
- React.createElement("ul", null, entry.messages.map((message, index) => (React.createElement("li", { key: index },
33
- React.createElement("pre", null, JSON.stringify(message, undefined, 2)))))))))))),
34
- React.createElement("div", { className: 'theia-card-meta' },
35
- React.createElement("span", { className: 'theia-card-timestamp' },
36
- core_1.nls.localize('theia/ai/history/communication-card/timestamp', 'Timestamp'),
37
- ": ",
38
- new Date(entry.timestamp).toLocaleString()),
39
- entry.responseTime &&
40
- React.createElement("span", { className: 'theia-card-response-time' },
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,CAC9E,6BAAK,SAAS,EAAC,YAAY;IACvB,6BAAK,SAAS,EAAC,iBAAiB;QAC5B,8BAAM,SAAS,EAAC,uBAAuB;YAAE,UAAG,CAAC,QAAQ,CAAC,+CAA+C,EAAE,YAAY,CAAC;;YAAI,KAAK,CAAC,SAAS,CAAQ;QAC/I,8BAAM,SAAS,EAAC,uBAAuB;YAAE,UAAG,CAAC,QAAQ,CAAC,+CAA+C,EAAE,YAAY,CAAC;;YAAI,KAAK,CAAC,SAAS,CAAQ,CAC7I;IACN,6BAAK,SAAS,EAAC,oBAAoB;QAC9B,KAAK,CAAC,OAAO,IAAI,CACd,6BAAK,SAAS,EAAC,oBAAoB;YAC/B,gCAAK,UAAG,CAAC,QAAQ,CAAC,6CAA6C,EAAE,SAAS,CAAC,CAAM;YACjF,iCAAM,KAAK,CAAC,OAAO,CAAO,CACxB,CACT;QACA,KAAK,CAAC,QAAQ,IAAI,CACf,6BAAK,SAAS,EAAC,qBAAqB;YAChC,gCAAK,UAAG,CAAC,QAAQ,CAAC,8CAA8C,EAAE,UAAU,CAAC,CAAM;YACnF,iCAAM,KAAK,CAAC,QAAQ,CAAO,CACzB,CACT;QACA,CAAC,KAAK,CAAC,aAAa,IAAI,CAAC,KAAK,CAAC,QAAQ,IAAI,KAAK,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,IAAI,CACvE,6BAAK,SAAS,EAAC,oBAAoB;YAC/B;gBACI;oBAAS,gCAAK,UAAG,CAAC,QAAQ,CAAC,6CAA6C,EAAE,SAAS,CAAC,CAAM,CAAU;gBACnG,CAAC,KAAK,CAAC,aAAa,IAAI,CACrB,6BAAK,SAAS,EAAC,8BAA8B;oBACzC,gCAAK,UAAG,CAAC,QAAQ,CAAC,mDAAmD,EAAE,gBAAgB,CAAC,CAAM;oBAC9F,iCAAM,KAAK,CAAC,aAAa,CAAO,CAC9B,CACT,CAAC;gBACD,CAAC,KAAK,CAAC,QAAQ,IAAI,KAAK,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC,IAAI,CAC9C,6BAAK,SAAS,EAAC,wBAAwB;oBACnC,gCAAK,UAAG,CAAC,QAAQ,CAAC,8CAA8C,EAAE,UAAU,CAAC,CAAM;oBACnF,gCACK,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE,KAAK,EAAE,EAAE,CAAC,CACpC,4BAAI,GAAG,EAAE,KAAK;wBAAE,iCAAM,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE,SAAS,EAAE,CAAC,CAAC,CAAO,CAAK,CAC1E,CAAC,CACD,CACH,CACT,CACK,CACR,CACT,CACC;IACN,6BAAK,SAAS,EAAC,iBAAiB;QAC5B,8BAAM,SAAS,EAAC,sBAAsB;YAAE,UAAG,CAAC,QAAQ,CAAC,+CAA+C,EAAE,WAAW,CAAC;;YAAI,IAAI,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,cAAc,EAAE,CAAQ;QACvK,KAAK,CAAC,YAAY;YACf,8BAAM,SAAS,EAAC,0BAA0B;gBAAE,UAAG,CAAC,QAAQ,CAAC,kDAAkD,EAAE,eAAe,CAAC;;gBAAI,KAAK,CAAC,YAAY;qBAAU,CAC/J,CACJ,CACT,CAAC;AAjDW,QAAA,iBAAiB,qBAiD5B"}
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,wBAaG"}
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;AAEzE,CAAC,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,SAA6E;IAEzF,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"}
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', 'AI Agent History [Alpha]');
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;IAWjE,cAAc,CAAC,aAAa,EAAE,+BAA+B,GAAG,IAAI;IAiBpE,YAAY,IAAI,IAAI;CAIvB"}
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
- (_a = this.history.get(requestEntry.agentId)) === null || _a === void 0 ? void 0 : _a.push(completedEntry);
26
+ if (!this.history.has(requestEntry.agentId)) {
27
+ this.history.set(requestEntry.agentId, [completedEntry]);
29
28
  }
30
29
  else {
31
- this.history.set(requestEntry.agentId, [completedEntry]);
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 entry = this.history.get(completedEntry.agentId);
40
- if (entry) {
41
- const matchingRequest = entry.find(e => e.requestId === completedEntry.requestId);
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":"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"}
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":"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"}
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-next.47+9332521b9",
3
+ "version": "1.60.0",
4
4
  "description": "Theia - AI communication history",
5
5
  "dependencies": {
6
- "@theia/ai-core": "1.60.0-next.47+9332521b9",
7
- "@theia/core": "1.60.0-next.47+9332521b9",
8
- "@theia/filesystem": "1.60.0-next.47+9332521b9",
9
- "@theia/output": "1.60.0-next.47+9332521b9",
10
- "@theia/workspace": "1.60.0-next.47+9332521b9",
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.59.0"
48
+ "@theia/ext-scripts": "1.60.0"
49
49
  },
50
50
  "nyc": {
51
51
  "extends": "../../configs/nyc.json"
52
52
  },
53
- "gitHead": "9332521b9aa74bf534d45968905d37e30a13c3b5"
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
- <div className='theia-card'>
26
- <div className='theia-card-meta'>
27
- <span className='theia-card-request-id'>{nls.localize('theia/ai/history/communication-card/requestId', 'Request ID')}: {entry.requestId}</span>
28
- <span className='theia-card-session-id'>{nls.localize('theia/ai/history/communication-card/sessionId', 'Session ID')}: {entry.sessionId}</span>
29
- </div>
30
- <div className='theia-card-content'>
31
- {entry.request && (
32
- <div className='theia-card-request'>
33
- <h2>{nls.localize('theia/ai/history/communication-card/request', 'Request')}</h2>
34
- <pre>{entry.request}</pre>
35
- </div>
36
- )}
37
- {entry.response && (
38
- <div className='theia-card-response'>
39
- <h2>{nls.localize('theia/ai/history/communication-card/response', 'Response')}</h2>
40
- <pre>{entry.response}</pre>
41
- </div>
42
- )}
43
- {(entry.systemMessage || (entry.messages && entry.messages.length > 0)) && (
44
- <div className='theia-card-context'>
45
- <details>
46
- <summary><h2>{nls.localize('theia/ai/history/communication-card/context', 'Context')}</h2></summary>
47
- {(entry.systemMessage && (
48
- <div className='theia-context-system-message'>
49
- <h3>{nls.localize('theia/ai/history/communication-card/systemMessage', 'System Message')}</h3>
50
- <pre>{entry.systemMessage}</pre>
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
- {(entry.messages && entry.messages.length > 0) && (
54
- <div className='theia-context-messages'>
55
- <h3>{nls.localize('theia/ai/history/communication-card/messages', 'Messages')}</h3>
56
- <ul>
57
- {entry.messages.map((message, index) => (
58
- <li key={index}><pre>{JSON.stringify(message, undefined, 2)}</pre></li>
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
- </details>
64
- </div>
65
- )}
66
- </div>
67
- <div className='theia-card-meta'>
68
- <span className='theia-card-timestamp'>{nls.localize('theia/ai/history/communication-card/timestamp', 'Timestamp')}: {new Date(entry.timestamp).toLocaleString()}</span>
69
- {entry.responseTime &&
70
- <span className='theia-card-response-time'>{nls.localize('theia/ai/history/communication-card/responseTime', 'Response Time')}: {entry.responseTime}ms</span>}
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
- </div>
73
- );
106
+ );
107
+ };
@@ -34,5 +34,4 @@ export default new ContainerModule(bind => {
34
34
  createWidget: () => context.container.get<AIHistoryView>(AIHistoryView)
35
35
  })).inSingletonScope();
36
36
  bind(TabBarToolbarContribution).toService(AIHistoryViewContribution);
37
-
38
37
  });
@@ -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', 'AI Agent History [Alpha]');
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
- display: flex;
3
- flex-direction: column;
4
- align-items: center;
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
- margin: 10px 0;
10
- width: 80%;
8
+ margin: 10px 0;
9
+ width: 80%;
11
10
  }
12
11
 
13
12
  .agent-history {
14
- width: calc(80% + 16px);
15
- display: flex;
16
- align-items: center;
17
- flex-direction: column;
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
- background-color: var(--theia-sideBar-background);
22
- border: 1px solid var(--theia-sideBarSectionHeader-border);
23
- box-shadow: 0 4px 8px rgba(0, 0, 0, 0.1);
24
- padding: 15px;
25
- margin: 10px 0;
26
- width: 100%;
27
- box-sizing: border-box;
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
- display: flex;
32
- justify-content: space-between;
33
- font-size: 0.9em;
34
- padding: var(--theia-ui-padding) 0;
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
- color: var(--theia-font-color);
39
- margin-bottom: 10px;
37
+ color: var(--theia-font-color);
38
+ margin-bottom: 10px;
40
39
  }
41
40
 
42
41
  .theia-card-content h2 {
43
- font-size: var(--theia-ui-font-size2);
42
+ font-size: var(--theia-ui-font-size2);
44
43
  }
44
+
45
45
  .theia-card-content h3 {
46
- font-size: var(--theia-ui-font-size1);
47
- font-weight: bold;
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-content .theia-card-context h2 {
51
- display: inline;
76
+ .theia-card-request summary:hover,
77
+ .theia-card-response summary:hover {
78
+ background-color: var(--theia-list-hoverBackground);
52
79
  }
53
- .theia-card-content .theia-card-context ul {
54
- padding-inline-start: 20px;
80
+
81
+ .theia-card-request summary h3,
82
+ .theia-card-response summary h3 {
83
+ display: inline;
84
+ margin: 0;
55
85
  }
56
- .theia-card-content .theia-card-context pre {
57
- overflow: scroll;
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-content p {
61
- margin: var(--theia-ui-padding) 0;
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, .theia-card-response {
65
- margin-bottom: 10px;
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
- font-family: monospace;
71
- white-space: pre-wrap;
72
- word-wrap: break-word;
73
- background-color: var(--theia-sideBar-background);
74
- margin: var(--theia-ui-padding) 0;
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
- flex: 1;
133
+ flex: 1;
82
134
  }
83
135
 
84
136
  .theia-card-request-id,
85
137
  .theia-card-timestamp {
86
- text-align: left;
138
+ text-align: left;
87
139
  }
88
140
 
89
141
  .theia-card-session-id,
90
142
  .theia-card-response-time {
91
- text-align: right;
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 entry = this.history.get(completedEntry.agentId);
72
- if (entry) {
73
- const matchingRequest = entry.find(e => e.requestId === completedEntry.requestId);
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
  }