synthesisui 0.16.446 → 0.16.448
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/agent-wiring.js +50 -3
- package/package.json +1 -1
package/dist/agent-wiring.js
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { access, mkdir, readFile, writeFile } from "node:fs/promises";
|
|
2
|
+
import { homedir } from "node:os";
|
|
2
3
|
import { dirname, join } from "node:path";
|
|
3
4
|
import { hasCodexBlock, pinnedInCodex, withCodexBlock } from "./codex-mcp.js";
|
|
4
5
|
import { wrapperSource } from "./statusline-wrapper.js";
|
|
@@ -341,7 +342,16 @@ async function wireCodexMcp(root) {
|
|
|
341
342
|
* o `settings.json`, nem o invólucro, que guardaria o comando ERRADO se fosse regravado (ele já
|
|
342
343
|
* aponta para si mesmo, e o anterior se perderia).
|
|
343
344
|
*/
|
|
344
|
-
export async function wireStatusLine(root
|
|
345
|
+
export async function wireStatusLine(root,
|
|
346
|
+
/**
|
|
347
|
+
* A CASA, INJETADA - e não lida de `process.env` dentro do teste.
|
|
348
|
+
*
|
|
349
|
+
* O teste precisa de um `~/.claude/settings.json` de mentira, e a primeira versão trocava o
|
|
350
|
+
* `HOME` do processo para consegui-lo. Duas coisas erradas nisso: o gate de provas dependentes de
|
|
351
|
+
* máquina passa a ver este spec como quem lê a casa de quem roda - e ele estaria certo, porque
|
|
352
|
+
* trocar env é global e vaza para o que roda em paralelo ao lado.
|
|
353
|
+
*/
|
|
354
|
+
home = homedir()) {
|
|
345
355
|
const rel = "_synthesisui/statusline.mjs";
|
|
346
356
|
const ours = `node ${rel}`;
|
|
347
357
|
const dir = join(root, ".claude");
|
|
@@ -349,9 +359,46 @@ export async function wireStatusLine(root) {
|
|
|
349
359
|
const settings = await readJson(path);
|
|
350
360
|
const current = settings.statusLine;
|
|
351
361
|
const command = typeof current?.command === "string" ? current.command : "";
|
|
352
|
-
|
|
362
|
+
/**
|
|
363
|
+
* "JÁ ESTÁ LÁ" SÃO DUAS COISAS: o ponteiro é nosso E o arquivo existe - 21/09, com o repositório
|
|
364
|
+
* dele na mão.
|
|
365
|
+
*
|
|
366
|
+
* Ele apagou o `_synthesisui/statusline.mjs` para recuperar a barra e rodou o `connect` de novo.
|
|
367
|
+
* A checagem olhava só o `statusLine` do settings, que continuava apontando para o nosso caminho:
|
|
368
|
+
* o comando respondeu "já está lá" e não escreveu nada. Sobrou uma configuração apontando para um
|
|
369
|
+
* arquivo ausente, e o Claude Code tenta rodá-lo a cada respiração da barra.
|
|
370
|
+
*
|
|
371
|
+
* Um ponteiro sem o arquivo é pior que nenhum dos dois - por isso ele é reescrito em vez de
|
|
372
|
+
* aceito como pronto.
|
|
373
|
+
*/
|
|
374
|
+
const jaEscrito = await access(join(root, rel))
|
|
375
|
+
.then(() => true)
|
|
376
|
+
.catch(() => false);
|
|
377
|
+
if (command.includes(rel) && jaEscrito)
|
|
353
378
|
return { status: "already there", command: ours };
|
|
354
|
-
|
|
379
|
+
/**
|
|
380
|
+
* A BARRA DELE PODE MORAR NO SETTINGS GLOBAL, E QUASE SEMPRE MORA - achado em 21/09, com o print
|
|
381
|
+
* dele na mão e o invólucro já instalado.
|
|
382
|
+
*
|
|
383
|
+
* A primeira versão olhava só o `.claude/settings.json` DO PROJETO. No repositório dele não havia
|
|
384
|
+
* `statusLine` ali - o Pulse está em `~/.claude/settings.json` -, então o invólucro nasceu com
|
|
385
|
+
* "não havia barra anterior" e deixaria de chamar o Pulse. Na sessão seguinte ele perderia a barra
|
|
386
|
+
* inteira e veria só o nosso segmento: exatamente o contrário do que ele pediu.
|
|
387
|
+
*
|
|
388
|
+
* O Claude Code resolve `statusLine` do projeto SOBRE o global, então o que a gente substitui é o
|
|
389
|
+
* que estava valendo ali - e o que estava valendo é o global quando o projeto cala.
|
|
390
|
+
*/
|
|
391
|
+
const globalPath = join(home, ".claude", "settings.json");
|
|
392
|
+
const globalSettings = await readJson(globalPath);
|
|
393
|
+
const globalLine = globalSettings.statusLine;
|
|
394
|
+
const fallback = typeof globalLine?.command === "string" ? globalLine.command : "";
|
|
395
|
+
/**
|
|
396
|
+
* E O NOSSO PRÓPRIO COMANDO NUNCA VIRA "O ANTERIOR": se o `statusLine` aponta para o invólucro e
|
|
397
|
+
* o arquivo sumiu, guardar aquilo faria o script novo chamar a si mesmo. A barra dele, nesse
|
|
398
|
+
* caso, é a do global - que é onde ela estava antes de tudo isto.
|
|
399
|
+
*/
|
|
400
|
+
const dele = command.includes(rel) ? "" : command;
|
|
401
|
+
const was = dele.trim() ? dele : fallback.trim() ? fallback : null;
|
|
355
402
|
await mkdir(join(root, "_synthesisui"), { recursive: true });
|
|
356
403
|
await writeFile(join(root, rel), wrapperSource(was), "utf8");
|
|
357
404
|
await mkdir(dir, { recursive: true });
|
package/package.json
CHANGED