@quantbrasil/cli 0.1.0-beta.6 → 0.1.0-beta.8
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/README.md +41 -0
- package/dist/cli/index.d.ts +6 -0
- package/dist/cli/index.d.ts.map +1 -1
- package/dist/cli/index.js +20 -1
- package/dist/cli/prompt.d.ts +1 -0
- package/dist/cli/prompt.d.ts.map +1 -1
- package/dist/cli/prompt.js +17 -0
- package/dist/cli/skills.d.ts +9 -0
- package/dist/cli/skills.d.ts.map +1 -1
- package/dist/cli/skills.js +68 -4
- package/dist/commands/screening.d.ts +120 -0
- package/dist/commands/screening.d.ts.map +1 -0
- package/dist/commands/screening.js +361 -0
- package/dist/commands/skills.js +7 -7
- package/dist/commands/update.d.ts +23 -0
- package/dist/commands/update.d.ts.map +1 -0
- package/dist/commands/update.js +209 -0
- package/dist/index.d.ts +2 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +2 -0
- package/dist/vendor/core/capabilities/index.d.ts +1 -0
- package/dist/vendor/core/capabilities/index.d.ts.map +1 -1
- package/dist/vendor/core/capabilities/index.js +1 -0
- package/dist/vendor/core/capabilities/registry.d.ts +266 -0
- package/dist/vendor/core/capabilities/registry.d.ts.map +1 -1
- package/dist/vendor/core/capabilities/registry.js +2 -0
- package/dist/vendor/core/capabilities/screening.d.ts +136 -0
- package/dist/vendor/core/capabilities/screening.d.ts.map +1 -0
- package/dist/vendor/core/capabilities/screening.js +155 -0
- package/dist/vendor/core/capabilities/types.d.ts +1 -1
- package/dist/vendor/core/capabilities/types.d.ts.map +1 -1
- package/package.json +3 -3
- package/skills/quantbrasil/SKILL.md +16 -11
- package/skills/quantbrasil/references/cli.md +53 -0
- package/skills/quantbrasil/references/costs.md +6 -1
- package/skills/quantbrasil/references/portfolios.md +13 -2
- package/skills/quantbrasil/references/quality-eval-queries.json +127 -0
- package/skills/quantbrasil/references/screening.md +212 -0
- package/skills/quantbrasil/references/unsupported.md +2 -0
- package/skills/quantbrasil/references/workflows.md +24 -0
|
@@ -138,6 +138,139 @@ export declare const capabilityRegistry: readonly [{
|
|
|
138
138
|
readonly title: "Get asset overview";
|
|
139
139
|
};
|
|
140
140
|
readonly outputModes: readonly ["json", "human"];
|
|
141
|
+
}, {
|
|
142
|
+
readonly id: "screening.universes";
|
|
143
|
+
readonly kind: "read";
|
|
144
|
+
readonly visibility: readonly ["cli", "opencode"];
|
|
145
|
+
readonly description: "Lista universos salvos e baseados em portfólios disponíveis para screening de indicadores.";
|
|
146
|
+
readonly http: {
|
|
147
|
+
readonly method: "GET";
|
|
148
|
+
readonly path: "/api/desk/tools/screening/universes";
|
|
149
|
+
readonly inputMode: "none";
|
|
150
|
+
readonly schemas: {
|
|
151
|
+
readonly request: null;
|
|
152
|
+
readonly response: "ScreeningUniversesResponse";
|
|
153
|
+
};
|
|
154
|
+
};
|
|
155
|
+
readonly cli: {
|
|
156
|
+
readonly group: "screening";
|
|
157
|
+
readonly command: "universes";
|
|
158
|
+
readonly summary: "Lista carteiras do sistema, watchlists e carteiras disponíveis para screening.";
|
|
159
|
+
readonly positional: readonly [];
|
|
160
|
+
readonly options: readonly [];
|
|
161
|
+
readonly examples: readonly ["quantbrasil screening universes"];
|
|
162
|
+
};
|
|
163
|
+
readonly tool: {
|
|
164
|
+
readonly name: "qb_screening_universes";
|
|
165
|
+
readonly title: "Listar universos de screening";
|
|
166
|
+
};
|
|
167
|
+
readonly outputModes: readonly ["json", "human"];
|
|
168
|
+
}, {
|
|
169
|
+
readonly id: "screening.indicators";
|
|
170
|
+
readonly kind: "read";
|
|
171
|
+
readonly visibility: readonly ["cli", "opencode"];
|
|
172
|
+
readonly description: "Lista indicadores, parâmetros e operadores disponíveis para screening.";
|
|
173
|
+
readonly http: {
|
|
174
|
+
readonly method: "GET";
|
|
175
|
+
readonly path: "/api/desk/tools/screening/indicators";
|
|
176
|
+
readonly inputMode: "none";
|
|
177
|
+
readonly schemas: {
|
|
178
|
+
readonly request: null;
|
|
179
|
+
readonly response: "ScreeningIndicatorsResponse";
|
|
180
|
+
};
|
|
181
|
+
};
|
|
182
|
+
readonly cli: {
|
|
183
|
+
readonly group: "screening";
|
|
184
|
+
readonly command: "indicators";
|
|
185
|
+
readonly summary: "Lista indicadores, parâmetros e exemplos disponíveis para screening.";
|
|
186
|
+
readonly positional: readonly [];
|
|
187
|
+
readonly options: readonly [];
|
|
188
|
+
readonly examples: readonly ["quantbrasil screening indicators", "quantbrasil screening indicators --json"];
|
|
189
|
+
};
|
|
190
|
+
readonly tool: {
|
|
191
|
+
readonly name: "qb_screening_indicators";
|
|
192
|
+
readonly title: "Listar indicadores de screening";
|
|
193
|
+
};
|
|
194
|
+
readonly outputModes: readonly ["json", "human"];
|
|
195
|
+
}, {
|
|
196
|
+
readonly id: "screening.run";
|
|
197
|
+
readonly kind: "read";
|
|
198
|
+
readonly visibility: readonly ["cli", "opencode"];
|
|
199
|
+
readonly description: "Executa o screener de indicadores existente sobre um universo salvo baseado em portfólio.";
|
|
200
|
+
readonly http: {
|
|
201
|
+
readonly method: "POST";
|
|
202
|
+
readonly path: "/api/desk/tools/screening/run";
|
|
203
|
+
readonly inputMode: "json_body";
|
|
204
|
+
readonly schemas: {
|
|
205
|
+
readonly request: "ScreeningRunRequest";
|
|
206
|
+
readonly response: "ScreeningRunResponse";
|
|
207
|
+
};
|
|
208
|
+
};
|
|
209
|
+
readonly cli: {
|
|
210
|
+
readonly group: "screening";
|
|
211
|
+
readonly command: "run";
|
|
212
|
+
readonly summary: "Executa screening de indicadores a partir de um payload ScreenerRequest JSON.";
|
|
213
|
+
readonly positional: readonly [];
|
|
214
|
+
readonly options: readonly [{
|
|
215
|
+
readonly kind: "option";
|
|
216
|
+
readonly flag: "--system";
|
|
217
|
+
readonly name: "system_slug";
|
|
218
|
+
readonly type: "string";
|
|
219
|
+
readonly required: false;
|
|
220
|
+
readonly placeholder: "SLUG";
|
|
221
|
+
readonly exclusiveGroup: "screening_universe_selector";
|
|
222
|
+
readonly description: "Slug da carteira do sistema retornado por `screening universes`, por exemplo acoes-mais-liquidas.";
|
|
223
|
+
}, {
|
|
224
|
+
readonly kind: "option";
|
|
225
|
+
readonly flag: "--watchlist";
|
|
226
|
+
readonly name: "watchlist_id";
|
|
227
|
+
readonly type: "integer";
|
|
228
|
+
readonly required: false;
|
|
229
|
+
readonly placeholder: "ID";
|
|
230
|
+
readonly exclusiveGroup: "screening_universe_selector";
|
|
231
|
+
readonly description: "ID da watchlist retornado por `watchlists list`.";
|
|
232
|
+
}, {
|
|
233
|
+
readonly kind: "option";
|
|
234
|
+
readonly flag: "--holding";
|
|
235
|
+
readonly name: "holding_id";
|
|
236
|
+
readonly type: "integer";
|
|
237
|
+
readonly required: false;
|
|
238
|
+
readonly placeholder: "ID";
|
|
239
|
+
readonly exclusiveGroup: "screening_universe_selector";
|
|
240
|
+
readonly description: "ID da carteira retornado por `holdings list`.";
|
|
241
|
+
}, {
|
|
242
|
+
readonly kind: "option";
|
|
243
|
+
readonly flag: "--query-file";
|
|
244
|
+
readonly name: "query_file";
|
|
245
|
+
readonly type: "string";
|
|
246
|
+
readonly required: true;
|
|
247
|
+
readonly placeholder: "ARQUIVO|-";
|
|
248
|
+
readonly description: "Caminho para um arquivo ScreenerRequest JSON completo, ou `-` para ler JSON de stdin.";
|
|
249
|
+
}, {
|
|
250
|
+
readonly kind: "option";
|
|
251
|
+
readonly flag: "--limit";
|
|
252
|
+
readonly name: "limit";
|
|
253
|
+
readonly type: "integer";
|
|
254
|
+
readonly required: false;
|
|
255
|
+
readonly placeholder: "N";
|
|
256
|
+
readonly description: "Sobrescreve o limit de topo do ScreenerRequest sem alterar o arquivo da consulta.";
|
|
257
|
+
}, {
|
|
258
|
+
readonly kind: "option";
|
|
259
|
+
readonly flag: "--sort";
|
|
260
|
+
readonly name: "sort";
|
|
261
|
+
readonly type: "enum";
|
|
262
|
+
readonly required: false;
|
|
263
|
+
readonly placeholder: "price|ticker";
|
|
264
|
+
readonly enumValues: readonly ["price", "ticker"];
|
|
265
|
+
readonly description: "Sobrescreve o sort de topo do ScreenerRequest sem alterar o arquivo da consulta.";
|
|
266
|
+
}];
|
|
267
|
+
readonly examples: readonly ["quantbrasil screening run --system acoes-mais-liquidas --query-file ./screening.json", "quantbrasil screening run --watchlist 93 --query-file ./screening.json --limit 25", "cat screening.json | quantbrasil screening run --holding 182 --query-file - --sort ticker"];
|
|
268
|
+
};
|
|
269
|
+
readonly tool: {
|
|
270
|
+
readonly name: "qb_screening_run";
|
|
271
|
+
readonly title: "Executar screening de indicadores";
|
|
272
|
+
};
|
|
273
|
+
readonly outputModes: readonly ["json", "human"];
|
|
141
274
|
}, {
|
|
142
275
|
readonly id: "watchlists.list";
|
|
143
276
|
readonly kind: "read";
|
|
@@ -899,6 +1032,139 @@ export declare function getCapabilityById(id: CapabilityId): {
|
|
|
899
1032
|
readonly title: "Get asset overview";
|
|
900
1033
|
};
|
|
901
1034
|
readonly outputModes: readonly ["json", "human"];
|
|
1035
|
+
} | {
|
|
1036
|
+
readonly id: "screening.universes";
|
|
1037
|
+
readonly kind: "read";
|
|
1038
|
+
readonly visibility: readonly ["cli", "opencode"];
|
|
1039
|
+
readonly description: "Lista universos salvos e baseados em portfólios disponíveis para screening de indicadores.";
|
|
1040
|
+
readonly http: {
|
|
1041
|
+
readonly method: "GET";
|
|
1042
|
+
readonly path: "/api/desk/tools/screening/universes";
|
|
1043
|
+
readonly inputMode: "none";
|
|
1044
|
+
readonly schemas: {
|
|
1045
|
+
readonly request: null;
|
|
1046
|
+
readonly response: "ScreeningUniversesResponse";
|
|
1047
|
+
};
|
|
1048
|
+
};
|
|
1049
|
+
readonly cli: {
|
|
1050
|
+
readonly group: "screening";
|
|
1051
|
+
readonly command: "universes";
|
|
1052
|
+
readonly summary: "Lista carteiras do sistema, watchlists e carteiras disponíveis para screening.";
|
|
1053
|
+
readonly positional: readonly [];
|
|
1054
|
+
readonly options: readonly [];
|
|
1055
|
+
readonly examples: readonly ["quantbrasil screening universes"];
|
|
1056
|
+
};
|
|
1057
|
+
readonly tool: {
|
|
1058
|
+
readonly name: "qb_screening_universes";
|
|
1059
|
+
readonly title: "Listar universos de screening";
|
|
1060
|
+
};
|
|
1061
|
+
readonly outputModes: readonly ["json", "human"];
|
|
1062
|
+
} | {
|
|
1063
|
+
readonly id: "screening.indicators";
|
|
1064
|
+
readonly kind: "read";
|
|
1065
|
+
readonly visibility: readonly ["cli", "opencode"];
|
|
1066
|
+
readonly description: "Lista indicadores, parâmetros e operadores disponíveis para screening.";
|
|
1067
|
+
readonly http: {
|
|
1068
|
+
readonly method: "GET";
|
|
1069
|
+
readonly path: "/api/desk/tools/screening/indicators";
|
|
1070
|
+
readonly inputMode: "none";
|
|
1071
|
+
readonly schemas: {
|
|
1072
|
+
readonly request: null;
|
|
1073
|
+
readonly response: "ScreeningIndicatorsResponse";
|
|
1074
|
+
};
|
|
1075
|
+
};
|
|
1076
|
+
readonly cli: {
|
|
1077
|
+
readonly group: "screening";
|
|
1078
|
+
readonly command: "indicators";
|
|
1079
|
+
readonly summary: "Lista indicadores, parâmetros e exemplos disponíveis para screening.";
|
|
1080
|
+
readonly positional: readonly [];
|
|
1081
|
+
readonly options: readonly [];
|
|
1082
|
+
readonly examples: readonly ["quantbrasil screening indicators", "quantbrasil screening indicators --json"];
|
|
1083
|
+
};
|
|
1084
|
+
readonly tool: {
|
|
1085
|
+
readonly name: "qb_screening_indicators";
|
|
1086
|
+
readonly title: "Listar indicadores de screening";
|
|
1087
|
+
};
|
|
1088
|
+
readonly outputModes: readonly ["json", "human"];
|
|
1089
|
+
} | {
|
|
1090
|
+
readonly id: "screening.run";
|
|
1091
|
+
readonly kind: "read";
|
|
1092
|
+
readonly visibility: readonly ["cli", "opencode"];
|
|
1093
|
+
readonly description: "Executa o screener de indicadores existente sobre um universo salvo baseado em portfólio.";
|
|
1094
|
+
readonly http: {
|
|
1095
|
+
readonly method: "POST";
|
|
1096
|
+
readonly path: "/api/desk/tools/screening/run";
|
|
1097
|
+
readonly inputMode: "json_body";
|
|
1098
|
+
readonly schemas: {
|
|
1099
|
+
readonly request: "ScreeningRunRequest";
|
|
1100
|
+
readonly response: "ScreeningRunResponse";
|
|
1101
|
+
};
|
|
1102
|
+
};
|
|
1103
|
+
readonly cli: {
|
|
1104
|
+
readonly group: "screening";
|
|
1105
|
+
readonly command: "run";
|
|
1106
|
+
readonly summary: "Executa screening de indicadores a partir de um payload ScreenerRequest JSON.";
|
|
1107
|
+
readonly positional: readonly [];
|
|
1108
|
+
readonly options: readonly [{
|
|
1109
|
+
readonly kind: "option";
|
|
1110
|
+
readonly flag: "--system";
|
|
1111
|
+
readonly name: "system_slug";
|
|
1112
|
+
readonly type: "string";
|
|
1113
|
+
readonly required: false;
|
|
1114
|
+
readonly placeholder: "SLUG";
|
|
1115
|
+
readonly exclusiveGroup: "screening_universe_selector";
|
|
1116
|
+
readonly description: "Slug da carteira do sistema retornado por `screening universes`, por exemplo acoes-mais-liquidas.";
|
|
1117
|
+
}, {
|
|
1118
|
+
readonly kind: "option";
|
|
1119
|
+
readonly flag: "--watchlist";
|
|
1120
|
+
readonly name: "watchlist_id";
|
|
1121
|
+
readonly type: "integer";
|
|
1122
|
+
readonly required: false;
|
|
1123
|
+
readonly placeholder: "ID";
|
|
1124
|
+
readonly exclusiveGroup: "screening_universe_selector";
|
|
1125
|
+
readonly description: "ID da watchlist retornado por `watchlists list`.";
|
|
1126
|
+
}, {
|
|
1127
|
+
readonly kind: "option";
|
|
1128
|
+
readonly flag: "--holding";
|
|
1129
|
+
readonly name: "holding_id";
|
|
1130
|
+
readonly type: "integer";
|
|
1131
|
+
readonly required: false;
|
|
1132
|
+
readonly placeholder: "ID";
|
|
1133
|
+
readonly exclusiveGroup: "screening_universe_selector";
|
|
1134
|
+
readonly description: "ID da carteira retornado por `holdings list`.";
|
|
1135
|
+
}, {
|
|
1136
|
+
readonly kind: "option";
|
|
1137
|
+
readonly flag: "--query-file";
|
|
1138
|
+
readonly name: "query_file";
|
|
1139
|
+
readonly type: "string";
|
|
1140
|
+
readonly required: true;
|
|
1141
|
+
readonly placeholder: "ARQUIVO|-";
|
|
1142
|
+
readonly description: "Caminho para um arquivo ScreenerRequest JSON completo, ou `-` para ler JSON de stdin.";
|
|
1143
|
+
}, {
|
|
1144
|
+
readonly kind: "option";
|
|
1145
|
+
readonly flag: "--limit";
|
|
1146
|
+
readonly name: "limit";
|
|
1147
|
+
readonly type: "integer";
|
|
1148
|
+
readonly required: false;
|
|
1149
|
+
readonly placeholder: "N";
|
|
1150
|
+
readonly description: "Sobrescreve o limit de topo do ScreenerRequest sem alterar o arquivo da consulta.";
|
|
1151
|
+
}, {
|
|
1152
|
+
readonly kind: "option";
|
|
1153
|
+
readonly flag: "--sort";
|
|
1154
|
+
readonly name: "sort";
|
|
1155
|
+
readonly type: "enum";
|
|
1156
|
+
readonly required: false;
|
|
1157
|
+
readonly placeholder: "price|ticker";
|
|
1158
|
+
readonly enumValues: readonly ["price", "ticker"];
|
|
1159
|
+
readonly description: "Sobrescreve o sort de topo do ScreenerRequest sem alterar o arquivo da consulta.";
|
|
1160
|
+
}];
|
|
1161
|
+
readonly examples: readonly ["quantbrasil screening run --system acoes-mais-liquidas --query-file ./screening.json", "quantbrasil screening run --watchlist 93 --query-file ./screening.json --limit 25", "cat screening.json | quantbrasil screening run --holding 182 --query-file - --sort ticker"];
|
|
1162
|
+
};
|
|
1163
|
+
readonly tool: {
|
|
1164
|
+
readonly name: "qb_screening_run";
|
|
1165
|
+
readonly title: "Executar screening de indicadores";
|
|
1166
|
+
};
|
|
1167
|
+
readonly outputModes: readonly ["json", "human"];
|
|
902
1168
|
} | {
|
|
903
1169
|
readonly id: "watchlists.list";
|
|
904
1170
|
readonly kind: "read";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"registry.d.ts","sourceRoot":"","sources":["../../src/capabilities/registry.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"registry.d.ts","sourceRoot":"","sources":["../../src/capabilities/registry.ts"],"names":[],"mappings":"AAKA,eAAO,MAAM,kBAAkB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAKrB,CAAC;AAEX,MAAM,MAAM,YAAY,GAAG,CAAC,OAAO,kBAAkB,CAAC,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC;AAErE,eAAO,MAAM,sBAAsB,EAE9B,MAAM,CAAC,YAAY,EAAE,CAAC,OAAO,kBAAkB,EAAE,MAAM,CAAC,CAAC,CAAC;AAE/D,wBAAgB,iBAAiB,CAAC,EAAE,EAAE,YAAY;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAEjD"}
|
|
@@ -1,9 +1,11 @@
|
|
|
1
1
|
import { assetCapabilities } from "./assets.js";
|
|
2
2
|
import { marketCapabilities } from "./market.js";
|
|
3
3
|
import { portfolioCapabilities } from "./portfolios.js";
|
|
4
|
+
import { screeningCapabilities } from "./screening.js";
|
|
4
5
|
export const capabilityRegistry = [
|
|
5
6
|
...marketCapabilities,
|
|
6
7
|
...assetCapabilities,
|
|
8
|
+
...screeningCapabilities,
|
|
7
9
|
...portfolioCapabilities,
|
|
8
10
|
];
|
|
9
11
|
export const capabilityRegistryById = Object.fromEntries(capabilityRegistry.map(capability => [capability.id, capability]));
|
|
@@ -0,0 +1,136 @@
|
|
|
1
|
+
export declare const screeningSortValues: readonly ["price", "ticker"];
|
|
2
|
+
export declare const screeningCapabilities: readonly [{
|
|
3
|
+
readonly id: "screening.universes";
|
|
4
|
+
readonly kind: "read";
|
|
5
|
+
readonly visibility: readonly ["cli", "opencode"];
|
|
6
|
+
readonly description: "Lista universos salvos e baseados em portfólios disponíveis para screening de indicadores.";
|
|
7
|
+
readonly http: {
|
|
8
|
+
readonly method: "GET";
|
|
9
|
+
readonly path: "/api/desk/tools/screening/universes";
|
|
10
|
+
readonly inputMode: "none";
|
|
11
|
+
readonly schemas: {
|
|
12
|
+
readonly request: null;
|
|
13
|
+
readonly response: "ScreeningUniversesResponse";
|
|
14
|
+
};
|
|
15
|
+
};
|
|
16
|
+
readonly cli: {
|
|
17
|
+
readonly group: "screening";
|
|
18
|
+
readonly command: "universes";
|
|
19
|
+
readonly summary: "Lista carteiras do sistema, watchlists e carteiras disponíveis para screening.";
|
|
20
|
+
readonly positional: readonly [];
|
|
21
|
+
readonly options: readonly [];
|
|
22
|
+
readonly examples: readonly ["quantbrasil screening universes"];
|
|
23
|
+
};
|
|
24
|
+
readonly tool: {
|
|
25
|
+
readonly name: "qb_screening_universes";
|
|
26
|
+
readonly title: "Listar universos de screening";
|
|
27
|
+
};
|
|
28
|
+
readonly outputModes: readonly ["json", "human"];
|
|
29
|
+
}, {
|
|
30
|
+
readonly id: "screening.indicators";
|
|
31
|
+
readonly kind: "read";
|
|
32
|
+
readonly visibility: readonly ["cli", "opencode"];
|
|
33
|
+
readonly description: "Lista indicadores, parâmetros e operadores disponíveis para screening.";
|
|
34
|
+
readonly http: {
|
|
35
|
+
readonly method: "GET";
|
|
36
|
+
readonly path: "/api/desk/tools/screening/indicators";
|
|
37
|
+
readonly inputMode: "none";
|
|
38
|
+
readonly schemas: {
|
|
39
|
+
readonly request: null;
|
|
40
|
+
readonly response: "ScreeningIndicatorsResponse";
|
|
41
|
+
};
|
|
42
|
+
};
|
|
43
|
+
readonly cli: {
|
|
44
|
+
readonly group: "screening";
|
|
45
|
+
readonly command: "indicators";
|
|
46
|
+
readonly summary: "Lista indicadores, parâmetros e exemplos disponíveis para screening.";
|
|
47
|
+
readonly positional: readonly [];
|
|
48
|
+
readonly options: readonly [];
|
|
49
|
+
readonly examples: readonly ["quantbrasil screening indicators", "quantbrasil screening indicators --json"];
|
|
50
|
+
};
|
|
51
|
+
readonly tool: {
|
|
52
|
+
readonly name: "qb_screening_indicators";
|
|
53
|
+
readonly title: "Listar indicadores de screening";
|
|
54
|
+
};
|
|
55
|
+
readonly outputModes: readonly ["json", "human"];
|
|
56
|
+
}, {
|
|
57
|
+
readonly id: "screening.run";
|
|
58
|
+
readonly kind: "read";
|
|
59
|
+
readonly visibility: readonly ["cli", "opencode"];
|
|
60
|
+
readonly description: "Executa o screener de indicadores existente sobre um universo salvo baseado em portfólio.";
|
|
61
|
+
readonly http: {
|
|
62
|
+
readonly method: "POST";
|
|
63
|
+
readonly path: "/api/desk/tools/screening/run";
|
|
64
|
+
readonly inputMode: "json_body";
|
|
65
|
+
readonly schemas: {
|
|
66
|
+
readonly request: "ScreeningRunRequest";
|
|
67
|
+
readonly response: "ScreeningRunResponse";
|
|
68
|
+
};
|
|
69
|
+
};
|
|
70
|
+
readonly cli: {
|
|
71
|
+
readonly group: "screening";
|
|
72
|
+
readonly command: "run";
|
|
73
|
+
readonly summary: "Executa screening de indicadores a partir de um payload ScreenerRequest JSON.";
|
|
74
|
+
readonly positional: readonly [];
|
|
75
|
+
readonly options: readonly [{
|
|
76
|
+
readonly kind: "option";
|
|
77
|
+
readonly flag: "--system";
|
|
78
|
+
readonly name: "system_slug";
|
|
79
|
+
readonly type: "string";
|
|
80
|
+
readonly required: false;
|
|
81
|
+
readonly placeholder: "SLUG";
|
|
82
|
+
readonly exclusiveGroup: "screening_universe_selector";
|
|
83
|
+
readonly description: "Slug da carteira do sistema retornado por `screening universes`, por exemplo acoes-mais-liquidas.";
|
|
84
|
+
}, {
|
|
85
|
+
readonly kind: "option";
|
|
86
|
+
readonly flag: "--watchlist";
|
|
87
|
+
readonly name: "watchlist_id";
|
|
88
|
+
readonly type: "integer";
|
|
89
|
+
readonly required: false;
|
|
90
|
+
readonly placeholder: "ID";
|
|
91
|
+
readonly exclusiveGroup: "screening_universe_selector";
|
|
92
|
+
readonly description: "ID da watchlist retornado por `watchlists list`.";
|
|
93
|
+
}, {
|
|
94
|
+
readonly kind: "option";
|
|
95
|
+
readonly flag: "--holding";
|
|
96
|
+
readonly name: "holding_id";
|
|
97
|
+
readonly type: "integer";
|
|
98
|
+
readonly required: false;
|
|
99
|
+
readonly placeholder: "ID";
|
|
100
|
+
readonly exclusiveGroup: "screening_universe_selector";
|
|
101
|
+
readonly description: "ID da carteira retornado por `holdings list`.";
|
|
102
|
+
}, {
|
|
103
|
+
readonly kind: "option";
|
|
104
|
+
readonly flag: "--query-file";
|
|
105
|
+
readonly name: "query_file";
|
|
106
|
+
readonly type: "string";
|
|
107
|
+
readonly required: true;
|
|
108
|
+
readonly placeholder: "ARQUIVO|-";
|
|
109
|
+
readonly description: "Caminho para um arquivo ScreenerRequest JSON completo, ou `-` para ler JSON de stdin.";
|
|
110
|
+
}, {
|
|
111
|
+
readonly kind: "option";
|
|
112
|
+
readonly flag: "--limit";
|
|
113
|
+
readonly name: "limit";
|
|
114
|
+
readonly type: "integer";
|
|
115
|
+
readonly required: false;
|
|
116
|
+
readonly placeholder: "N";
|
|
117
|
+
readonly description: "Sobrescreve o limit de topo do ScreenerRequest sem alterar o arquivo da consulta.";
|
|
118
|
+
}, {
|
|
119
|
+
readonly kind: "option";
|
|
120
|
+
readonly flag: "--sort";
|
|
121
|
+
readonly name: "sort";
|
|
122
|
+
readonly type: "enum";
|
|
123
|
+
readonly required: false;
|
|
124
|
+
readonly placeholder: "price|ticker";
|
|
125
|
+
readonly enumValues: readonly ["price", "ticker"];
|
|
126
|
+
readonly description: "Sobrescreve o sort de topo do ScreenerRequest sem alterar o arquivo da consulta.";
|
|
127
|
+
}];
|
|
128
|
+
readonly examples: readonly ["quantbrasil screening run --system acoes-mais-liquidas --query-file ./screening.json", "quantbrasil screening run --watchlist 93 --query-file ./screening.json --limit 25", "cat screening.json | quantbrasil screening run --holding 182 --query-file - --sort ticker"];
|
|
129
|
+
};
|
|
130
|
+
readonly tool: {
|
|
131
|
+
readonly name: "qb_screening_run";
|
|
132
|
+
readonly title: "Executar screening de indicadores";
|
|
133
|
+
};
|
|
134
|
+
readonly outputModes: readonly ["json", "human"];
|
|
135
|
+
}];
|
|
136
|
+
//# sourceMappingURL=screening.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"screening.d.ts","sourceRoot":"","sources":["../../src/capabilities/screening.ts"],"names":[],"mappings":"AAKA,eAAO,MAAM,mBAAmB,8BAA+B,CAAC;AAEhE,eAAO,MAAM,qBAAqB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAiKkB,CAAC"}
|
|
@@ -0,0 +1,155 @@
|
|
|
1
|
+
import { publicRuntimeVisibility, standardOutputModes } from "./shared.js";
|
|
2
|
+
const screeningSelectorExclusiveGroup = "screening_universe_selector";
|
|
3
|
+
export const screeningSortValues = ["price", "ticker"];
|
|
4
|
+
export const screeningCapabilities = [
|
|
5
|
+
{
|
|
6
|
+
id: "screening.universes",
|
|
7
|
+
kind: "read",
|
|
8
|
+
visibility: publicRuntimeVisibility,
|
|
9
|
+
description: "Lista universos salvos e baseados em portfólios disponíveis para screening de indicadores.",
|
|
10
|
+
http: {
|
|
11
|
+
method: "GET",
|
|
12
|
+
path: "/api/desk/tools/screening/universes",
|
|
13
|
+
inputMode: "none",
|
|
14
|
+
schemas: {
|
|
15
|
+
request: null,
|
|
16
|
+
response: "ScreeningUniversesResponse",
|
|
17
|
+
},
|
|
18
|
+
},
|
|
19
|
+
cli: {
|
|
20
|
+
group: "screening",
|
|
21
|
+
command: "universes",
|
|
22
|
+
summary: "Lista carteiras do sistema, watchlists e carteiras disponíveis para screening.",
|
|
23
|
+
positional: [],
|
|
24
|
+
options: [],
|
|
25
|
+
examples: ["quantbrasil screening universes"],
|
|
26
|
+
},
|
|
27
|
+
tool: {
|
|
28
|
+
name: "qb_screening_universes",
|
|
29
|
+
title: "Listar universos de screening",
|
|
30
|
+
},
|
|
31
|
+
outputModes: standardOutputModes,
|
|
32
|
+
},
|
|
33
|
+
{
|
|
34
|
+
id: "screening.indicators",
|
|
35
|
+
kind: "read",
|
|
36
|
+
visibility: publicRuntimeVisibility,
|
|
37
|
+
description: "Lista indicadores, parâmetros e operadores disponíveis para screening.",
|
|
38
|
+
http: {
|
|
39
|
+
method: "GET",
|
|
40
|
+
path: "/api/desk/tools/screening/indicators",
|
|
41
|
+
inputMode: "none",
|
|
42
|
+
schemas: {
|
|
43
|
+
request: null,
|
|
44
|
+
response: "ScreeningIndicatorsResponse",
|
|
45
|
+
},
|
|
46
|
+
},
|
|
47
|
+
cli: {
|
|
48
|
+
group: "screening",
|
|
49
|
+
command: "indicators",
|
|
50
|
+
summary: "Lista indicadores, parâmetros e exemplos disponíveis para screening.",
|
|
51
|
+
positional: [],
|
|
52
|
+
options: [],
|
|
53
|
+
examples: [
|
|
54
|
+
"quantbrasil screening indicators",
|
|
55
|
+
"quantbrasil screening indicators --json",
|
|
56
|
+
],
|
|
57
|
+
},
|
|
58
|
+
tool: {
|
|
59
|
+
name: "qb_screening_indicators",
|
|
60
|
+
title: "Listar indicadores de screening",
|
|
61
|
+
},
|
|
62
|
+
outputModes: standardOutputModes,
|
|
63
|
+
},
|
|
64
|
+
{
|
|
65
|
+
id: "screening.run",
|
|
66
|
+
kind: "read",
|
|
67
|
+
visibility: publicRuntimeVisibility,
|
|
68
|
+
description: "Executa o screener de indicadores existente sobre um universo salvo baseado em portfólio.",
|
|
69
|
+
http: {
|
|
70
|
+
method: "POST",
|
|
71
|
+
path: "/api/desk/tools/screening/run",
|
|
72
|
+
inputMode: "json_body",
|
|
73
|
+
schemas: {
|
|
74
|
+
request: "ScreeningRunRequest",
|
|
75
|
+
response: "ScreeningRunResponse",
|
|
76
|
+
},
|
|
77
|
+
},
|
|
78
|
+
cli: {
|
|
79
|
+
group: "screening",
|
|
80
|
+
command: "run",
|
|
81
|
+
summary: "Executa screening de indicadores a partir de um payload ScreenerRequest JSON.",
|
|
82
|
+
positional: [],
|
|
83
|
+
options: [
|
|
84
|
+
{
|
|
85
|
+
kind: "option",
|
|
86
|
+
flag: "--system",
|
|
87
|
+
name: "system_slug",
|
|
88
|
+
type: "string",
|
|
89
|
+
required: false,
|
|
90
|
+
placeholder: "SLUG",
|
|
91
|
+
exclusiveGroup: screeningSelectorExclusiveGroup,
|
|
92
|
+
description: "Slug da carteira do sistema retornado por `screening universes`, por exemplo acoes-mais-liquidas.",
|
|
93
|
+
},
|
|
94
|
+
{
|
|
95
|
+
kind: "option",
|
|
96
|
+
flag: "--watchlist",
|
|
97
|
+
name: "watchlist_id",
|
|
98
|
+
type: "integer",
|
|
99
|
+
required: false,
|
|
100
|
+
placeholder: "ID",
|
|
101
|
+
exclusiveGroup: screeningSelectorExclusiveGroup,
|
|
102
|
+
description: "ID da watchlist retornado por `watchlists list`.",
|
|
103
|
+
},
|
|
104
|
+
{
|
|
105
|
+
kind: "option",
|
|
106
|
+
flag: "--holding",
|
|
107
|
+
name: "holding_id",
|
|
108
|
+
type: "integer",
|
|
109
|
+
required: false,
|
|
110
|
+
placeholder: "ID",
|
|
111
|
+
exclusiveGroup: screeningSelectorExclusiveGroup,
|
|
112
|
+
description: "ID da carteira retornado por `holdings list`.",
|
|
113
|
+
},
|
|
114
|
+
{
|
|
115
|
+
kind: "option",
|
|
116
|
+
flag: "--query-file",
|
|
117
|
+
name: "query_file",
|
|
118
|
+
type: "string",
|
|
119
|
+
required: true,
|
|
120
|
+
placeholder: "ARQUIVO|-",
|
|
121
|
+
description: "Caminho para um arquivo ScreenerRequest JSON completo, ou `-` para ler JSON de stdin.",
|
|
122
|
+
},
|
|
123
|
+
{
|
|
124
|
+
kind: "option",
|
|
125
|
+
flag: "--limit",
|
|
126
|
+
name: "limit",
|
|
127
|
+
type: "integer",
|
|
128
|
+
required: false,
|
|
129
|
+
placeholder: "N",
|
|
130
|
+
description: "Sobrescreve o limit de topo do ScreenerRequest sem alterar o arquivo da consulta.",
|
|
131
|
+
},
|
|
132
|
+
{
|
|
133
|
+
kind: "option",
|
|
134
|
+
flag: "--sort",
|
|
135
|
+
name: "sort",
|
|
136
|
+
type: "enum",
|
|
137
|
+
required: false,
|
|
138
|
+
placeholder: "price|ticker",
|
|
139
|
+
enumValues: screeningSortValues,
|
|
140
|
+
description: "Sobrescreve o sort de topo do ScreenerRequest sem alterar o arquivo da consulta.",
|
|
141
|
+
},
|
|
142
|
+
],
|
|
143
|
+
examples: [
|
|
144
|
+
"quantbrasil screening run --system acoes-mais-liquidas --query-file ./screening.json",
|
|
145
|
+
"quantbrasil screening run --watchlist 93 --query-file ./screening.json --limit 25",
|
|
146
|
+
"cat screening.json | quantbrasil screening run --holding 182 --query-file - --sort ticker",
|
|
147
|
+
],
|
|
148
|
+
},
|
|
149
|
+
tool: {
|
|
150
|
+
name: "qb_screening_run",
|
|
151
|
+
title: "Executar screening de indicadores",
|
|
152
|
+
},
|
|
153
|
+
outputModes: standardOutputModes,
|
|
154
|
+
},
|
|
155
|
+
];
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
export type CapabilityVisibility = "cli" | "opencode";
|
|
2
2
|
export type CapabilityKind = "read" | "mutation";
|
|
3
|
-
export type CapabilityGroup = "market" | "assets" | "watchlists" | "holdings";
|
|
3
|
+
export type CapabilityGroup = "market" | "assets" | "screening" | "watchlists" | "holdings";
|
|
4
4
|
export type CapabilityHttpMethod = "GET" | "POST";
|
|
5
5
|
export type CapabilityInputMode = "none" | "query" | "json_body";
|
|
6
6
|
export type CapabilityOutputMode = "json" | "human";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/capabilities/types.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,oBAAoB,GAAG,KAAK,GAAG,UAAU,CAAC;AACtD,MAAM,MAAM,cAAc,GAAG,MAAM,GAAG,UAAU,CAAC;AACjD,MAAM,MAAM,eAAe,
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/capabilities/types.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,oBAAoB,GAAG,KAAK,GAAG,UAAU,CAAC;AACtD,MAAM,MAAM,cAAc,GAAG,MAAM,GAAG,UAAU,CAAC;AACjD,MAAM,MAAM,eAAe,GACvB,QAAQ,GACR,QAAQ,GACR,WAAW,GACX,YAAY,GACZ,UAAU,CAAC;AACf,MAAM,MAAM,oBAAoB,GAAG,KAAK,GAAG,MAAM,CAAC;AAClD,MAAM,MAAM,mBAAmB,GAAG,MAAM,GAAG,OAAO,GAAG,WAAW,CAAC;AACjE,MAAM,MAAM,oBAAoB,GAAG,MAAM,GAAG,OAAO,CAAC;AACpD,MAAM,MAAM,uBAAuB,GAC/B,QAAQ,GACR,SAAS,GACT,QAAQ,GACR,MAAM,GACN,cAAc,GACd,YAAY,CAAC;AACjB,MAAM,MAAM,0BAA0B,GAClC,YAAY,GACZ,iBAAiB,GACjB,iBAAiB,CAAC;AACtB,MAAM,MAAM,sBAAsB,GAC9B,MAAM,GACN,MAAM,GACN,OAAO,GACP,SAAS,CAAC,MAAM,GAAG,MAAM,GAAG,OAAO,CAAC,EAAE,CAAC;AAE3C,kEAAkE;AAClE,MAAM,WAAW,yBAAyB;IACxC,8EAA8E;IAC9E,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IACvB,qDAAqD;IACrD,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED,wEAAwE;AACxE,MAAM,WAAW,sBAAsB;IACrC,MAAM,EAAE,oBAAoB,CAAC;IAC7B,IAAI,EAAE,mBAAmB,MAAM,EAAE,CAAC;IAClC,SAAS,EAAE,mBAAmB,CAAC;IAC/B,OAAO,EAAE,yBAAyB,CAAC;CACpC;AAED,8DAA8D;AAC9D,MAAM,WAAW,0BAA0B;IACzC,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,IAAI,EAAE,uBAAuB,CAAC;IAC9B,QAAQ,EAAE,OAAO,CAAC;IAClB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,YAAY,CAAC,EAAE,sBAAsB,CAAC;IACtC,UAAU,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IAC/B,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,gBAAgB,CAAC,EAAE,0BAA0B,CAAC;IAC9C,cAAc,CAAC,EAAE,MAAM,CAAC;CACzB;AAED,MAAM,WAAW,gCACf,SAAQ,0BAA0B;IAClC,IAAI,EAAE,YAAY,CAAC;CACpB;AAED,MAAM,WAAW,4BACf,SAAQ,0BAA0B;IAClC,IAAI,EAAE,QAAQ,CAAC;IACf,IAAI,EAAE,KAAK,MAAM,EAAE,CAAC;CACrB;AAED,MAAM,MAAM,sBAAsB,GAC9B,gCAAgC,GAChC,4BAA4B,CAAC;AAEjC,wDAAwD;AACxD,MAAM,WAAW,qBAAqB;IACpC,KAAK,EAAE,eAAe,CAAC;IACvB,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;IAChB,UAAU,EAAE,SAAS,gCAAgC,EAAE,CAAC;IACxD,OAAO,EAAE,SAAS,4BAA4B,EAAE,CAAC;IACjD;;;;OAIG;IACH,QAAQ,EAAE,SAAS,MAAM,EAAE,CAAC;CAC7B;AAED,uDAAuD;AACvD,MAAM,WAAW,sBAAsB;IACrC,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;CACf;AAED,8EAA8E;AAC9E,MAAM,WAAW,oBAAoB;IACnC,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,cAAc,CAAC;IACrB,UAAU,EAAE,SAAS,oBAAoB,EAAE,CAAC;IAC5C,WAAW,EAAE,MAAM,CAAC;IACpB,IAAI,EAAE,sBAAsB,CAAC;IAC7B,GAAG,EAAE,qBAAqB,CAAC;IAC3B,IAAI,EAAE,sBAAsB,CAAC;IAC7B,WAAW,EAAE,SAAS,oBAAoB,EAAE,CAAC;CAC9C"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@quantbrasil/cli",
|
|
3
|
-
"version": "0.1.0-beta.
|
|
3
|
+
"version": "0.1.0-beta.8",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"description": "Public QuantBrasil CLI for deterministic operations",
|
|
6
6
|
"repository": {
|
|
@@ -41,8 +41,8 @@
|
|
|
41
41
|
"typescript": "^5.3.3",
|
|
42
42
|
"vitest": "^3.2.4",
|
|
43
43
|
"@repo/core": "0.0.0",
|
|
44
|
-
"@repo/
|
|
45
|
-
"@repo/
|
|
44
|
+
"@repo/typescript-config": "0.0.0",
|
|
45
|
+
"@repo/eslint-config": "0.0.0"
|
|
46
46
|
},
|
|
47
47
|
"scripts": {
|
|
48
48
|
"build": "pnpm --filter @repo/core build && pnpm run clean && tsc && node scripts/vendor-core.mjs",
|