Skip to content

Commit 53a898d

Browse files
committed
Adopt custom rel_type for command results
1 parent c5ec57a commit 53a898d

15 files changed

+34
-56
lines changed

packages/ai-bot/helpers.ts

+3-1
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,7 @@ import {
2323
APP_BOXEL_COMMAND_REQUESTS_KEY,
2424
APP_BOXEL_COMMAND_DEFINITIONS_MSGTYPE,
2525
APP_BOXEL_COMMAND_RESULT_EVENT_TYPE,
26+
APP_BOXEL_COMMAND_RESULT_REL_TYPE,
2627
APP_BOXEL_COMMAND_RESULT_WITH_OUTPUT_MSGTYPE,
2728
} from '../runtime-common/matrix-constants';
2829
import {
@@ -794,7 +795,8 @@ export function isCommandResultEvent(
794795
}
795796
return (
796797
event.type === APP_BOXEL_COMMAND_RESULT_EVENT_TYPE &&
797-
event.content['m.relates_to']?.rel_type === 'm.annotation'
798+
event.content['m.relates_to']?.rel_type ===
799+
APP_BOXEL_COMMAND_RESULT_REL_TYPE
798800
);
799801
}
800802

packages/ai-bot/tests/chat-titling-test.ts

+2-1
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@ import type { MatrixEvent as DiscreteMatrixEvent } from 'https://cardstack.com/b
44
import {
55
APP_BOXEL_COMMAND_REQUESTS_KEY,
66
APP_BOXEL_COMMAND_RESULT_EVENT_TYPE,
7+
APP_BOXEL_COMMAND_RESULT_REL_TYPE,
78
APP_BOXEL_COMMAND_RESULT_WITH_NO_OUTPUT_MSGTYPE,
89
APP_BOXEL_MESSAGE_MSGTYPE,
910
} from '@cardstack/runtime-common/matrix-constants';
@@ -416,7 +417,7 @@ module('shouldSetRoomTitle', () => {
416417
'm.relates_to': {
417418
event_id: '1',
418419
key: 'applied',
419-
rel_type: 'm.annotation',
420+
rel_type: APP_BOXEL_COMMAND_RESULT_REL_TYPE,
420421
},
421422
msgtype: APP_BOXEL_COMMAND_RESULT_WITH_NO_OUTPUT_MSGTYPE,
422423
},

packages/ai-bot/tests/prompt-construction-test.ts

+2-1
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@ import {
1414
import {
1515
APP_BOXEL_MESSAGE_MSGTYPE,
1616
APP_BOXEL_COMMAND_RESULT_EVENT_TYPE,
17+
APP_BOXEL_COMMAND_RESULT_REL_TYPE,
1718
APP_BOXEL_COMMAND_RESULT_WITH_OUTPUT_MSGTYPE,
1819
DEFAULT_LLM,
1920
APP_BOXEL_COMMAND_REQUESTS_KEY,
@@ -1678,7 +1679,7 @@ test('Return host result of tool call back to open ai', async () => {
16781679
content: {
16791680
'm.relates_to': {
16801681
event_id: 'command-event-id-1',
1681-
rel_type: 'm.annotation',
1682+
rel_type: APP_BOXEL_COMMAND_RESULT_REL_TYPE,
16821683
key: 'applied',
16831684
},
16841685
msgtype: APP_BOXEL_COMMAND_RESULT_WITH_OUTPUT_MSGTYPE,

packages/ai-bot/tests/resources/chats/connect-tool-calls-to-results.json

+1-1
Original file line numberDiff line numberDiff line change
@@ -420,7 +420,7 @@
420420
"m.relates_to": {
421421
"event_id": "$VyCYG0DAuudwMGN8hStuSVfXrjMVZu2ZcJgIs9sIwLE",
422422
"key": "applied",
423-
"rel_type": "m.annotation"
423+
"rel_type": "app.boxel.commandAnnotation"
424424
},
425425
"commandRequestId": "call_or0qFTa8y9Ef8ZVyRDNR2P1T",
426426
"data": "{\"cardEventId\":\"$dKXYGWZLmS42Yib6sDHwP1surO2PiGCr5t2XHFIGFmc\"}"

packages/ai-bot/tests/resources/chats/required-tools-multiple-messages.json

+2-2
Original file line numberDiff line numberDiff line change
@@ -355,7 +355,7 @@
355355
"m.relates_to": {
356356
"event_id": "$pZ5t1hj93dVwVcrh60-XFNeSL4ztErK6J0wAYr9hI_0",
357357
"key": "applied",
358-
"rel_type": "m.annotation"
358+
"rel_type": "app.boxel.commandAnnotation"
359359
}
360360
},
361361
"origin_server_ts": 1734900014044,
@@ -674,7 +674,7 @@
674674
"m.relates_to": {
675675
"event_id": "$BQ3wE7TxtE38oid1xynRFTglU2_2P5jJ8k01uXrHj1U",
676676
"key": "applied",
677-
"rel_type": "m.annotation"
677+
"rel_type": "app.boxel.commandAnnotation"
678678
}
679679
},
680680
"origin_server_ts": 1734900100494,

packages/ai-bot/tests/resources/chats/two-tool-calls-one-result.json

+1-1
Original file line numberDiff line numberDiff line change
@@ -428,7 +428,7 @@
428428
"m.relates_to": {
429429
"event_id": "$VyCYG0DAuudwMGN8hStuSVfXrjMVZu2ZcJgIs9sIwLE",
430430
"key": "applied",
431-
"rel_type": "m.annotation"
431+
"rel_type": "app.boxel.commandAnnotation"
432432
},
433433
"commandRequestId": "call_or0qFTa8y9Ef8ZVyRDNR2P1T",
434434
"data": "{\"cardEventId\":\"$dKXYGWZLmS42Yib6sDHwP1surO2PiGCr5t2XHFIGFmc\"}"

packages/ai-bot/tests/resources/chats/two-tool-calls-two-results.json

+2-2
Original file line numberDiff line numberDiff line change
@@ -428,7 +428,7 @@
428428
"m.relates_to": {
429429
"event_id": "$VyCYG0DAuudwMGN8hStuSVfXrjMVZu2ZcJgIs9sIwLE",
430430
"key": "applied",
431-
"rel_type": "m.annotation"
431+
"rel_type": "app.boxel.commandAnnotation"
432432
},
433433
"commandRequestId": "call_or0qFTa8y9Ef8ZVyRDNR2P1T",
434434
"data": "{\"cardEventId\":\"$dKXYGWZLmS42Yib6sDHwP1surO2PiGCr5t2XHFIGFmc\"}"
@@ -469,7 +469,7 @@
469469
"m.relates_to": {
470470
"event_id": "$VyCYG0DAuudwMGN8hStuSVfXrjMVZu2ZcJgIs9sIwLE",
471471
"key": "applied",
472-
"rel_type": "m.annotation"
472+
"rel_type": "app.boxel.commandAnnotation"
473473
},
474474
"commandRequestId": "call_or1e5Ta8y9Ef8ZVyRDNRabcd",
475475
"data": "{\"cardEventId\":\"$aBcYGWZLmS42Yib6sDHwP1surO2PiGCr5t2XHFIGF12\"}"

packages/base/matrix-event.gts

+3-2
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@ import {
1010
APP_BOXEL_CARDFRAGMENT_MSGTYPE,
1111
APP_BOXEL_COMMAND_REQUESTS_KEY,
1212
APP_BOXEL_COMMAND_RESULT_EVENT_TYPE,
13+
APP_BOXEL_COMMAND_RESULT_REL_TYPE,
1314
APP_BOXEL_COMMAND_RESULT_WITH_NO_OUTPUT_MSGTYPE,
1415
APP_BOXEL_COMMAND_RESULT_WITH_OUTPUT_MSGTYPE,
1516
APP_BOXEL_MESSAGE_MSGTYPE,
@@ -250,7 +251,7 @@ export interface CommandDefinitionsContent {
250251
}
251252
export interface CommandResultWithOutputContent {
252253
'm.relates_to': {
253-
rel_type: 'm.annotation';
254+
rel_type: typeof APP_BOXEL_COMMAND_RESULT_REL_TYPE;
254255
key: string;
255256
event_id: string;
256257
};
@@ -265,7 +266,7 @@ export interface CommandResultWithOutputContent {
265266

266267
export interface CommandResultWithNoOutputContent {
267268
'm.relates_to': {
268-
rel_type: 'm.annotation';
269+
rel_type: typeof APP_BOXEL_COMMAND_RESULT_REL_TYPE;
269270
key: string;
270271
event_id: string;
271272
};

packages/host/app/lib/matrix-classes/message-builder.ts

+2-1
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@ import { CommandRequest } from '@cardstack/runtime-common/commands';
1515
import {
1616
APP_BOXEL_COMMAND_REQUESTS_KEY,
1717
APP_BOXEL_COMMAND_RESULT_EVENT_TYPE,
18+
APP_BOXEL_COMMAND_RESULT_REL_TYPE,
1819
APP_BOXEL_COMMAND_RESULT_WITH_OUTPUT_MSGTYPE,
1920
APP_BOXEL_MESSAGE_MSGTYPE,
2021
} from '@cardstack/runtime-common/matrix-constants';
@@ -227,7 +228,7 @@ export default class MessageBuilder {
227228
let r = e.content['m.relates_to'];
228229
return (
229230
e.type === APP_BOXEL_COMMAND_RESULT_EVENT_TYPE &&
230-
r.rel_type === 'm.annotation' &&
231+
r.rel_type === APP_BOXEL_COMMAND_RESULT_REL_TYPE &&
231232
(r.event_id === this.event.event_id ||
232233
r.event_id === this.builderContext.effectiveEventId) &&
233234
e.content.commandRequestId === commandRequest.id

packages/host/app/resources/room.ts

+3-1
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@ import {
1515
APP_BOXEL_COMMAND_REQUESTS_KEY,
1616
APP_BOXEL_COMMAND_DEFINITIONS_MSGTYPE,
1717
APP_BOXEL_COMMAND_RESULT_EVENT_TYPE,
18+
APP_BOXEL_COMMAND_RESULT_REL_TYPE,
1819
DEFAULT_LLM,
1920
} from '@cardstack/runtime-common/matrix-constants';
2021

@@ -452,7 +453,8 @@ export class RoomResource extends Resource<Args> {
452453
event: MessageEvent | CardMessageEvent | CommandResultEvent,
453454
) {
454455
return event.content['m.relates_to']?.rel_type === 'm.replace' ||
455-
event.content['m.relates_to']?.rel_type === 'm.annotation'
456+
event.content['m.relates_to']?.rel_type ===
457+
APP_BOXEL_COMMAND_RESULT_REL_TYPE
456458
? event.content['m.relates_to'].event_id
457459
: event.event_id;
458460
}

packages/host/app/services/matrix-service.ts

+3-2
Original file line numberDiff line numberDiff line change
@@ -46,6 +46,7 @@ import {
4646
APP_BOXEL_CARDFRAGMENT_MSGTYPE,
4747
APP_BOXEL_COMMAND_DEFINITIONS_MSGTYPE,
4848
APP_BOXEL_COMMAND_RESULT_EVENT_TYPE,
49+
APP_BOXEL_COMMAND_RESULT_REL_TYPE,
4950
APP_BOXEL_COMMAND_RESULT_WITH_NO_OUTPUT_MSGTYPE,
5051
APP_BOXEL_COMMAND_RESULT_WITH_OUTPUT_MSGTYPE,
5152
APP_BOXEL_MESSAGE_MSGTYPE,
@@ -559,7 +560,7 @@ export default class MatrixService extends Service {
559560
'm.relates_to': {
560561
event_id: invokedToolFromEventId,
561562
key: 'applied',
562-
rel_type: 'm.annotation',
563+
rel_type: APP_BOXEL_COMMAND_RESULT_REL_TYPE,
563564
},
564565
};
565566
} else {
@@ -568,7 +569,7 @@ export default class MatrixService extends Service {
568569
'm.relates_to': {
569570
event_id: invokedToolFromEventId,
570571
key: 'applied',
571-
rel_type: 'm.annotation',
572+
rel_type: APP_BOXEL_COMMAND_RESULT_REL_TYPE,
572573
},
573574
commandRequestId: toolCallId,
574575
data: {

packages/host/tests/acceptance/commands-test.gts

+4-2
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@ import {
2020
APP_BOXEL_COMMAND_REQUESTS_KEY,
2121
APP_BOXEL_MESSAGE_MSGTYPE,
2222
APP_BOXEL_COMMAND_RESULT_EVENT_TYPE,
23+
APP_BOXEL_COMMAND_RESULT_REL_TYPE,
2324
APP_BOXEL_COMMAND_RESULT_WITH_NO_OUTPUT_MSGTYPE,
2425
} from '@cardstack/runtime-common/matrix-constants';
2526

@@ -938,7 +939,7 @@ module('Acceptance | Commands tests', function (hooks) {
938939
);
939940
assert.strictEqual(
940941
message.content['m.relates_to']?.rel_type,
941-
'm.annotation',
942+
APP_BOXEL_COMMAND_RESULT_REL_TYPE,
942943
);
943944
assert.strictEqual(message.content['m.relates_to']?.key, 'applied');
944945
assert.strictEqual(message.content.commandRequestId, 'abc123');
@@ -1125,7 +1126,8 @@ module('Acceptance | Commands tests', function (hooks) {
11251126
let commandResultEvents = await getRoomEvents(roomId).filter(
11261127
(event) =>
11271128
event.type === APP_BOXEL_COMMAND_RESULT_EVENT_TYPE &&
1128-
event.content['m.relates_to']?.rel_type === 'm.annotation' &&
1129+
event.content['m.relates_to']?.rel_type ===
1130+
APP_BOXEL_COMMAND_RESULT_REL_TYPE &&
11291131
event.content['m.relates_to']?.key === 'applied',
11301132
);
11311133
assert.equal(

packages/host/tests/helpers/mock-matrix/_server-state.ts

-37
Original file line numberDiff line numberDiff line change
@@ -230,43 +230,6 @@ export class ServerState {
230230
return matrixEvent.event_id;
231231
}
232232

233-
addReactionEvent(
234-
sender: string,
235-
roomId: string,
236-
eventId: string,
237-
status: string,
238-
) {
239-
let room = this.#rooms.get(roomId);
240-
if (!room) {
241-
throw new Error(`room ${roomId} does not exist`);
242-
}
243-
244-
let content = {
245-
'm.relates_to': {
246-
event_id: eventId,
247-
key: status,
248-
rel_type: 'm.annotation' as MatrixSDK.RelationType.Annotation,
249-
},
250-
};
251-
252-
let reactionEvent = {
253-
event_id: this.eventId(),
254-
origin_server_ts: this.#now(),
255-
room_id: roomId,
256-
type: 'm.reaction' as MatrixSDK.EventType.Reaction,
257-
sender,
258-
content,
259-
state_key: '',
260-
unsigned: { age: 0 },
261-
status: 'sent' as MatrixSDK.EventStatus.SENT,
262-
};
263-
264-
room.events.push(reactionEvent);
265-
this.#listeners.forEach((listener) => listener(reactionEvent));
266-
267-
return reactionEvent;
268-
}
269-
270233
addReceiptEvent(
271234
roomId: string,
272235
eventId: string,

packages/host/tests/integration/components/ai-assistant-panel-test.gts

+5-2
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@ import {
2020
APP_BOXEL_CARDFRAGMENT_MSGTYPE,
2121
APP_BOXEL_COMMAND_REQUESTS_KEY,
2222
APP_BOXEL_COMMAND_RESULT_EVENT_TYPE,
23+
APP_BOXEL_COMMAND_RESULT_REL_TYPE,
2324
APP_BOXEL_MESSAGE_MSGTYPE,
2425
} from '@cardstack/runtime-common/matrix-constants';
2526

@@ -2258,7 +2259,8 @@ module('Integration | ai-assistant-panel', function (hooks) {
22582259
let commandResultEvents = getRoomEvents(roomId).filter(
22592260
(event) =>
22602261
event.type === APP_BOXEL_COMMAND_RESULT_EVENT_TYPE &&
2261-
event.content['m.relates_to']?.rel_type === 'm.annotation' &&
2262+
event.content['m.relates_to']?.rel_type ===
2263+
APP_BOXEL_COMMAND_RESULT_REL_TYPE &&
22622264
event.content['m.relates_to']?.key === 'applied',
22632265
);
22642266
assert.equal(
@@ -2282,7 +2284,8 @@ module('Integration | ai-assistant-panel', function (hooks) {
22822284
commandResultEvents = await getRoomEvents(roomId).filter(
22832285
(event) =>
22842286
event.type === APP_BOXEL_COMMAND_RESULT_EVENT_TYPE &&
2285-
event.content['m.relates_to']?.rel_type === 'm.annotation' &&
2287+
event.content['m.relates_to']?.rel_type ===
2288+
APP_BOXEL_COMMAND_RESULT_REL_TYPE &&
22862289
event.content['m.relates_to']?.key === 'applied',
22872290
);
22882291
assert.equal(

packages/runtime-common/matrix-constants.ts

+1
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@ export const APP_BOXEL_MESSAGE_MSGTYPE = 'app.boxel.message';
33
export const APP_BOXEL_CARD_FORMAT = 'app.boxel.card';
44
export const APP_BOXEL_COMMAND_REQUESTS_KEY = 'app.boxel.commandRequests';
55
export const APP_BOXEL_COMMAND_RESULT_EVENT_TYPE = 'app.boxel.commandResult';
6+
export const APP_BOXEL_COMMAND_RESULT_REL_TYPE = 'app.boxel.commandAnnotation';
67
export const APP_BOXEL_COMMAND_DEFINITIONS_MSGTYPE =
78
'app.boxel.commandDefinitions';
89
export const APP_BOXEL_COMMAND_RESULT_WITH_OUTPUT_MSGTYPE =

0 commit comments

Comments
 (0)