-
Notifications
You must be signed in to change notification settings - Fork 9
/
Copy pathcommand.gts
178 lines (154 loc) · 5.84 KB
/
command.gts
1
2
3
4
5
6
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
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
import {
CardDef,
Component,
StringField,
contains,
containsMany,
field,
linksTo,
linksToMany,
} from './card-api';
import CodeRefField from './code-ref';
import BooleanField from './boolean';
import NumberField from './number';
import { SkillCard } from './skill-card';
import {
JsonField,
SearchCardsByQueryInput,
SearchCardsByTypeAndTitleInput,
SearchCardsResult,
} from './commands/search-card-result';
export type CommandStatus = 'applied' | 'ready' | 'applying';
export class SaveCardInput extends CardDef {
@field realm = contains(StringField);
@field card = linksTo(CardDef);
}
export class CopyCardInput extends CardDef {
@field sourceCard = linksTo(CardDef);
@field targetUrl = contains(StringField);
@field targetStackIndex = contains(NumberField);
}
export class CopyCardResult extends CardDef {
@field newCard = linksTo(CardDef);
}
export class CopySourceInput extends CardDef {
@field fromRealmUrl = contains(StringField);
@field toRealmUrl = contains(StringField);
}
export class PatchCardInput extends CardDef {
@field cardId = contains(StringField);
@field patch = contains(JsonField);
}
export class ShowCardInput extends CardDef {
@field cardIdToShow = contains(StringField);
}
export class SwitchSubmodeInput extends CardDef {
@field submode = contains(StringField);
@field codePath = contains(StringField);
}
export class WriteTextFileInput extends CardDef {
@field content = contains(StringField);
@field realm = contains(StringField);
@field path = contains(StringField);
@field overwrite = contains(BooleanField);
}
export class CreateInstanceInput extends CardDef {
@field module = contains(CodeRefField);
@field realm = contains(StringField);
}
export class ApplySearchReplaceBlockInput extends CardDef {
@field fileContent = contains(StringField);
@field codeBlock = contains(StringField);
}
export class ApplySearchReplaceBlockResult extends CardDef {
@field resultContent = contains(StringField);
}
export class CreateAIAssistantRoomInput extends CardDef {
@field name = contains(StringField);
}
export class CreateAIAssistantRoomResult extends CardDef {
@field roomId = contains(StringField);
}
export class SetActiveLLMInput extends CardDef {
@field roomId = contains(StringField);
@field model = contains(StringField);
}
export class AddSkillsToRoomInput extends CardDef {
@field roomId = contains(StringField);
@field skills = linksToMany(SkillCard);
}
export class UpdateSkillActivationInput extends CardDef {
@field roomId = contains(StringField);
@field skillEventId = contains(StringField);
@field isActive = contains(BooleanField);
}
export class UseAiAssistantInput extends CardDef {
@field roomId = contains(StringField); // pass 'new' or leave blank to create a new room
@field roomName = contains(StringField); // only used when creating a new room
@field llmModel = contains(StringField);
@field openRoom = contains(BooleanField);
@field skillCards = linksToMany(SkillCard);
@field skillCardIds = containsMany(StringField);
@field attachedCards = linksToMany(CardDef);
@field attachedCardIds = containsMany(StringField);
@field attachedFileURLs = containsMany(StringField);
@field prompt = contains(StringField);
@field clientGeneratedId = contains(StringField);
@field openCardIds = containsMany(StringField);
}
export class SendAiAssistantMessageInput extends CardDef {
@field roomId = contains(StringField);
@field prompt = contains(StringField);
@field clientGeneratedId = contains(StringField);
@field attachedCards = linksToMany(CardDef);
@field attachedFileURLs = containsMany(StringField);
@field openCardIds = containsMany(StringField);
@field requireCommandCall = contains(BooleanField);
// This is a bit of a "fake" field in that it would not serialize properly.
// It works OK for the purposes of transient input to SendAiAssistantMessageCommand.
// The typescript type here is intended to be { command: Command<any, any, any>; autoExecute: boolean }[]
@field commands = containsMany(JsonField);
}
export class SendAiAssistantMessageResult extends CardDef {
@field roomId = contains(StringField);
@field eventId = contains(StringField);
}
export class GetBoxelUIStateResult extends CardDef {
@field submode = contains(StringField);
//TODO expand this to include more of the UI state:
// - open cards
// - current room ID
static embedded = class Embedded extends Component<
typeof GetBoxelUIStateResult
> {
<template>
<div>
<h2>Boxel UI State</h2>
<div>Submode: {{@model.submode}}</div>
</div>
</template>
};
}
export class OpenAiAssistantRoomInput extends CardDef {
@field roomId = contains(StringField);
}
export class AddFieldToCardDefinitionInput extends CardDef {
@field realm = contains(StringField);
@field path = contains(StringField);
@field cardDefinitionToModify = contains(CodeRefField);
@field fieldName = contains(StringField);
@field module = contains(StringField);
@field fieldType = contains(StringField); // 'contains' or 'containsMany'
@field fieldRef = contains(CodeRefField);
@field fieldDefinitionType = contains(StringField); // 'card' or 'field'
@field incomingRelativeTo = contains(StringField); // can be undefined when you know the url is not going to be relative
@field outgoingRelativeTo = contains(StringField); // can be undefined when you know url is not going to be relative
@field outgoingRealmURL = contains(StringField); // should be provided when the other 2 params are provided
@field addFieldAtIndex = contains(NumberField); // if provided, the field will be added at the specified index in the card's possibleFields map
@field computedFieldFunctionSourceCode = contains(StringField); // if provided, the field will be added as a computed field
}
export {
SearchCardsByQueryInput,
SearchCardsByTypeAndTitleInput,
SearchCardsResult,
};