synthesisui 0.16.409 → 0.16.410
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/dist/commands/doctor.js +71 -23
- package/package.json +1 -1
package/dist/commands/doctor.js
CHANGED
|
@@ -1090,42 +1090,90 @@ export async function doctor(opts) {
|
|
|
1090
1090
|
*/
|
|
1091
1091
|
const perApp = await readWiringPerApp(root, table.slug, config.pagesDir);
|
|
1092
1092
|
const targets = perApp.length > 0 ? perApp : [{ app: null, wiring }];
|
|
1093
|
-
|
|
1094
|
-
|
|
1093
|
+
/**
|
|
1094
|
+
* OS APPS QUE PEDEM A MESMA COISA VIRAM UM BLOCO SÓ, nomeando os dois.
|
|
1095
|
+
*
|
|
1096
|
+
* O DEFEITO, e ele é meu, do PR de algumas horas atrás: no `codelevel-monorepo` os DOIS apps
|
|
1097
|
+
* resolvem para a MESMA folha (`packages/ui/src/styles/globals.css`, o pacote compartilhado),
|
|
1098
|
+
* então o comando imprimiu a mesma instrução de 40 linhas DUAS VEZES, com o mesmo caminho e o
|
|
1099
|
+
* mesmo prefixo. O dono leu a parede duas vezes (medido no repositório dele, 09/09).
|
|
1100
|
+
*
|
|
1101
|
+
* Eu tinha escrito o aviso no comentário abaixo - *"num monorepo ele apareceria em escala:
|
|
1102
|
+
* dois blocos idênticos"* - sobre o caso do app JÁ FIADO, e entreguei a duplicata no caso do
|
|
1103
|
+
* que ainda falta. Nomear cada app foi o conserto certo; repetir a instrução não.
|
|
1104
|
+
*
|
|
1105
|
+
* A CHAVE É A INSTRUÇÃO, não o app: dois apps com a mesma folha, o mesmo prefixo e os mesmos
|
|
1106
|
+
* passos pendentes recebem uma instrução só. Um monorepo onde cada app tem folha própria volta
|
|
1107
|
+
* a receber uma por app, porque ali as instruções DIFEREM - é a resposta derivada, e não uma
|
|
1108
|
+
* regra sobre quantos apps existem.
|
|
1109
|
+
*/
|
|
1110
|
+
const blocks = new Map();
|
|
1095
1111
|
for (const { app, wiring: w } of targets) {
|
|
1096
1112
|
const sheet = app
|
|
1097
1113
|
? await globalSheetOf(root, `${app}/globals.css`)
|
|
1098
1114
|
: null;
|
|
1099
1115
|
/**
|
|
1100
1116
|
* O APP QUE JÁ ESTÁ FIADO SAI DA LISTA, nomeado. Repetir o setup para quem já o fez é o
|
|
1101
|
-
* defeito de 08/09 outra vez
|
|
1102
|
-
* idênticos, um deles cobrando o que já está colado.
|
|
1117
|
+
* defeito de 08/09 outra vez.
|
|
1103
1118
|
*/
|
|
1104
1119
|
const pending = !w.imported || !w.scoped || (w.fontsWritten && !w.fontsMapped);
|
|
1105
|
-
|
|
1120
|
+
const text = pending
|
|
1121
|
+
? setupPrompt(table.slug, {
|
|
1122
|
+
tokens: !w.imported,
|
|
1123
|
+
scope: !w.scoped,
|
|
1124
|
+
/** Só é passo quando o projeto TEM o arquivo de fontes - ver `readWiring`. */
|
|
1125
|
+
type: w.fontsWritten && !w.fontsMapped,
|
|
1126
|
+
...(sheet
|
|
1127
|
+
? { sheet: { path: sheet, prefix: prefixFrom(sheet) } }
|
|
1128
|
+
: {}),
|
|
1129
|
+
/**
|
|
1130
|
+
* DUAS LINHAS COM TAILWIND, UMA SEM - a mesma decisão que o `add` já toma pelo
|
|
1131
|
+
* projeto. Dizer "as duas linhas" a um projeto que precisa de uma manda o agente
|
|
1132
|
+
* procurar o que não existe.
|
|
1133
|
+
*/
|
|
1134
|
+
imports: config.styles === "css" ? 1 : 2,
|
|
1135
|
+
}).split("\n")
|
|
1136
|
+
: [];
|
|
1137
|
+
const key = `${pending ? "p" : "ok"}|${text.join("\n")}`;
|
|
1138
|
+
const found = blocks.get(key);
|
|
1139
|
+
if (found)
|
|
1140
|
+
found.apps.push(app ?? "");
|
|
1141
|
+
else
|
|
1142
|
+
blocks.set(key, { apps: [app ?? ""], text, pending });
|
|
1143
|
+
}
|
|
1144
|
+
const anyPending = [...blocks.values()].some((b) => b.pending);
|
|
1145
|
+
if (anyPending) {
|
|
1146
|
+
console.log("");
|
|
1147
|
+
console.log(body("Paste this into your agent - it does the setup for you:"));
|
|
1148
|
+
}
|
|
1149
|
+
for (const { apps, text, pending } of blocks.values()) {
|
|
1150
|
+
const named = apps.filter(Boolean);
|
|
1151
|
+
/**
|
|
1152
|
+
* O CABEÇALHO SÓ APARECE QUANDO HÁ MAIS DE UM APP no projeto - com um só ele seria cerimônia
|
|
1153
|
+
* sobre uma lista de um, e a maioria dos projetos é assim. Com vários, ele diz de QUEM é a
|
|
1154
|
+
* instrução, e o plural sai naturalmente: "apps/landing/app and apps/web/app".
|
|
1155
|
+
*/
|
|
1156
|
+
if (targets.length > 1 && named.length > 0) {
|
|
1157
|
+
/**
|
|
1158
|
+
* A LISTA SE LÊ EM VOZ ALTA, e o número dela não é fixo: "A and B" com dois,
|
|
1159
|
+
* "A, B and C" com três. `join(" and ")` daria "A and B and C", e `"both"` mentiria
|
|
1160
|
+
* no dia em que o monorepo tiver três apps na mesma folha - o mesmo erro de
|
|
1161
|
+
* dimensionar pela amostra, na escala de uma palavra.
|
|
1162
|
+
*/
|
|
1163
|
+
const lista = named.length > 1
|
|
1164
|
+
? `${named.slice(0, -1).join(", ")} and ${named[named.length - 1]}`
|
|
1165
|
+
: named[0];
|
|
1106
1166
|
console.log("");
|
|
1107
|
-
console.log(body(pending
|
|
1108
|
-
?
|
|
1109
|
-
|
|
1167
|
+
console.log(body(` ${lista} - ${pending
|
|
1168
|
+
? named.length > 1
|
|
1169
|
+
? "need it, and the steps are the same"
|
|
1170
|
+
: "still needs it"
|
|
1171
|
+
: "already wired, nothing to paste"}`));
|
|
1110
1172
|
}
|
|
1111
1173
|
if (!pending)
|
|
1112
1174
|
continue;
|
|
1113
1175
|
console.log("");
|
|
1114
|
-
console.log(snippet(
|
|
1115
|
-
tokens: !w.imported,
|
|
1116
|
-
scope: !w.scoped,
|
|
1117
|
-
/** Só é passo quando o projeto TEM o arquivo de fontes - ver `readWiring`. */
|
|
1118
|
-
type: w.fontsWritten && !w.fontsMapped,
|
|
1119
|
-
...(sheet
|
|
1120
|
-
? { sheet: { path: sheet, prefix: prefixFrom(sheet) } }
|
|
1121
|
-
: {}),
|
|
1122
|
-
/**
|
|
1123
|
-
* DUAS LINHAS COM TAILWIND, UMA SEM - a mesma decisão que o `add` já toma pelo
|
|
1124
|
-
* projeto. Dizer "as duas linhas" a um projeto que precisa de uma manda o agente
|
|
1125
|
-
* procurar o que não existe.
|
|
1126
|
-
*/
|
|
1127
|
-
imports: config.styles === "css" ? 1 : 2,
|
|
1128
|
-
}).split("\n")));
|
|
1176
|
+
console.log(snippet(text));
|
|
1129
1177
|
}
|
|
1130
1178
|
}
|
|
1131
1179
|
}
|
package/package.json
CHANGED