estela 0.1.39 → 0.2.0

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.
Files changed (90) hide show
  1. package/README.md +96 -0
  2. package/dist/billing/assign.d.ts +45 -0
  3. package/dist/billing/assign.d.ts.map +1 -0
  4. package/dist/billing/assign.js +159 -0
  5. package/dist/billing/assign.js.map +1 -0
  6. package/dist/billing/assign.test.d.ts +2 -0
  7. package/dist/billing/assign.test.d.ts.map +1 -0
  8. package/dist/billing/assign.test.js +153 -0
  9. package/dist/billing/assign.test.js.map +1 -0
  10. package/dist/bin.js +23 -1
  11. package/dist/bin.js.map +1 -1
  12. package/dist/cli-import-recover.test.d.ts +2 -0
  13. package/dist/cli-import-recover.test.d.ts.map +1 -0
  14. package/dist/cli-import-recover.test.js +191 -0
  15. package/dist/cli-import-recover.test.js.map +1 -0
  16. package/dist/cli-quota.test.d.ts +2 -0
  17. package/dist/cli-quota.test.d.ts.map +1 -0
  18. package/dist/cli-quota.test.js +281 -0
  19. package/dist/cli-quota.test.js.map +1 -0
  20. package/dist/cli-statusline.test.d.ts +2 -0
  21. package/dist/cli-statusline.test.d.ts.map +1 -0
  22. package/dist/cli-statusline.test.js +333 -0
  23. package/dist/cli-statusline.test.js.map +1 -0
  24. package/dist/cli.d.ts.map +1 -1
  25. package/dist/cli.js +350 -49
  26. package/dist/cli.js.map +1 -1
  27. package/dist/db/store.d.ts +12 -1
  28. package/dist/db/store.d.ts.map +1 -1
  29. package/dist/db/store.js +52 -0
  30. package/dist/db/store.js.map +1 -1
  31. package/dist/demo.d.ts.map +1 -1
  32. package/dist/demo.js +53 -0
  33. package/dist/demo.js.map +1 -1
  34. package/dist/i18n/en.d.ts.map +1 -1
  35. package/dist/i18n/en.js +68 -0
  36. package/dist/i18n/en.js.map +1 -1
  37. package/dist/metrics/quota.d.ts +226 -0
  38. package/dist/metrics/quota.d.ts.map +1 -0
  39. package/dist/metrics/quota.js +291 -0
  40. package/dist/metrics/quota.js.map +1 -0
  41. package/dist/metrics/quota.test.d.ts +2 -0
  42. package/dist/metrics/quota.test.d.ts.map +1 -0
  43. package/dist/metrics/quota.test.js +325 -0
  44. package/dist/metrics/quota.test.js.map +1 -0
  45. package/dist/project-of.d.ts +52 -0
  46. package/dist/project-of.d.ts.map +1 -0
  47. package/dist/project-of.js +124 -0
  48. package/dist/project-of.js.map +1 -0
  49. package/dist/project-of.test.d.ts +2 -0
  50. package/dist/project-of.test.d.ts.map +1 -0
  51. package/dist/project-of.test.js +203 -0
  52. package/dist/project-of.test.js.map +1 -0
  53. package/dist/quota.d.ts +27 -0
  54. package/dist/quota.d.ts.map +1 -0
  55. package/dist/quota.js +79 -0
  56. package/dist/quota.js.map +1 -0
  57. package/dist/server.d.ts.map +1 -1
  58. package/dist/server.js +17 -26
  59. package/dist/server.js.map +1 -1
  60. package/dist/server.test.js +37 -0
  61. package/dist/server.test.js.map +1 -1
  62. package/dist/statusline-cache.d.ts +35 -0
  63. package/dist/statusline-cache.d.ts.map +1 -0
  64. package/dist/statusline-cache.js +57 -0
  65. package/dist/statusline-cache.js.map +1 -0
  66. package/dist/statusline-install.d.ts +52 -0
  67. package/dist/statusline-install.d.ts.map +1 -0
  68. package/dist/statusline-install.js +115 -0
  69. package/dist/statusline-install.js.map +1 -0
  70. package/dist/statusline-run.d.ts +8 -0
  71. package/dist/statusline-run.d.ts.map +1 -0
  72. package/dist/statusline-run.js +256 -0
  73. package/dist/statusline-run.js.map +1 -0
  74. package/dist/statusline.d.ts +71 -0
  75. package/dist/statusline.d.ts.map +1 -0
  76. package/dist/statusline.js +139 -0
  77. package/dist/statusline.js.map +1 -0
  78. package/dist/statusline.test.d.ts +2 -0
  79. package/dist/statusline.test.d.ts.map +1 -0
  80. package/dist/statusline.test.js +197 -0
  81. package/dist/statusline.test.js.map +1 -0
  82. package/dist/watchers/claude.d.ts +11 -1
  83. package/dist/watchers/claude.d.ts.map +1 -1
  84. package/dist/watchers/claude.js +32 -15
  85. package/dist/watchers/claude.js.map +1 -1
  86. package/package.json +1 -1
  87. package/web/app.css +36 -0
  88. package/web/app.js +61 -1
  89. package/web/i18n.js +28 -0
  90. package/web/index.html +4 -1
@@ -0,0 +1,333 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || (function () {
19
+ var ownKeys = function(o) {
20
+ ownKeys = Object.getOwnPropertyNames || function (o) {
21
+ var ar = [];
22
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
+ return ar;
24
+ };
25
+ return ownKeys(o);
26
+ };
27
+ return function (mod) {
28
+ if (mod && mod.__esModule) return mod;
29
+ var result = {};
30
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
+ __setModuleDefault(result, mod);
32
+ return result;
33
+ };
34
+ })();
35
+ var __importDefault = (this && this.__importDefault) || function (mod) {
36
+ return (mod && mod.__esModule) ? mod : { "default": mod };
37
+ };
38
+ Object.defineProperty(exports, "__esModule", { value: true });
39
+ const strict_1 = __importDefault(require("node:assert/strict"));
40
+ const node_child_process_1 = require("node:child_process");
41
+ const node_fs_1 = require("node:fs");
42
+ const node_os_1 = require("node:os");
43
+ const node_path_1 = require("node:path");
44
+ const node_test_1 = require("node:test");
45
+ const shared_1 = require("@estela/shared");
46
+ const schema_js_1 = require("./db/schema.js");
47
+ const store = __importStar(require("./db/store.js"));
48
+ const statusline_js_1 = require("./statusline.js");
49
+ /**
50
+ * `estela statusline` como la ejecuta Claude Code: el JSON por stdin y la
51
+ * línea por stdout. Cada prueba con su HOME temporal: ni se lee ni se escribe
52
+ * nada de quien corre los tests.
53
+ */
54
+ const BIN = (0, node_path_1.join)(__dirname, "bin.js");
55
+ function estela(home, args, input, env = {}) {
56
+ const t0 = performance.now();
57
+ const r = (0, node_child_process_1.spawnSync)(process.execPath, [BIN, ...args], {
58
+ encoding: "utf8", input: input ?? "",
59
+ env: { ...process.env, HOME: home, USERPROFILE: home, ESTELA_LANG: "es", COLUMNS: "", NO_COLOR: "",
60
+ CLAUDE_CONFIG_DIR: (0, node_path_1.join)(home, ".claude"), ...env },
61
+ });
62
+ return { code: r.status, out: r.stdout, err: r.stderr, ms: performance.now() - t0 };
63
+ }
64
+ function entorno() {
65
+ const home = (0, node_fs_1.mkdtempSync)((0, node_path_1.join)((0, node_os_1.tmpdir)(), "estela-sl-"));
66
+ const repo = (0, node_path_1.join)(home, "repos", "web");
67
+ (0, node_fs_1.mkdirSync)(repo, { recursive: true });
68
+ return { home, repo, db: (0, node_path_1.join)(home, ".estela", "estela.db") };
69
+ }
70
+ function proyecto(db, repo, kind = "client") {
71
+ (0, node_fs_1.mkdirSync)((0, node_path_1.join)(db, ".."), { recursive: true });
72
+ const conn = (0, schema_js_1.openDatabase)(db);
73
+ try {
74
+ store.upsertClient(conn, { id: "acme", name: "ACME", currency: "EUR" });
75
+ store.upsertProject(conn, { id: "web", clientId: "acme", name: "Web", repoPaths: [repo],
76
+ billable: true, roundingMinutes: 0, aiCostPolicy: "absorbed", kind });
77
+ }
78
+ finally {
79
+ conn.close();
80
+ }
81
+ }
82
+ /** Una línea de transcript de Claude Code, a `minutos` de ahora (hacia atrás). */
83
+ function linea(id, cwd, minutos, cacheRead = 1000) {
84
+ // Nunca antes de las 00:01 de hoy: el test no puede depender de la hora.
85
+ const hoy = new Date();
86
+ hoy.setHours(0, 1, 0, 0);
87
+ const at = new Date(Math.max(hoy.getTime(), Date.now() - minutos * 60_000));
88
+ return JSON.stringify({
89
+ type: "assistant", timestamp: at.toISOString(), cwd, gitBranch: "main", version: "2.1.238", sessionId: "s1",
90
+ message: { id, model: "claude-sonnet-4-6",
91
+ usage: { input_tokens: 10, output_tokens: 100, cache_read_input_tokens: cacheRead, cache_creation_input_tokens: 0 } },
92
+ }) + "\n";
93
+ }
94
+ function transcript(home) {
95
+ const dir = (0, node_path_1.join)(home, ".claude", "projects", "-repos-web");
96
+ (0, node_fs_1.mkdirSync)(dir, { recursive: true });
97
+ return (0, node_path_1.join)(dir, "sesion.jsonl");
98
+ }
99
+ const entrada = (dir, extra = {}) => JSON.stringify({ workspace: { current_dir: dir, project_dir: dir }, ...extra });
100
+ const nc = ["statusline", "--no-color"];
101
+ // ── Lo que se enseña ────────────────────────────────────────────────────
102
+ (0, node_test_1.test)("con rate_limits enseña los dos porcentajes; sin ellos, ninguno", () => {
103
+ const { home, repo, db } = entorno();
104
+ proyecto(db, repo);
105
+ const con = estela(home, nc, entrada(repo, {
106
+ rate_limits: { five_hour: { used_percentage: 62, resets_at: 1 }, seven_day: { used_percentage: 38, resets_at: 2 } },
107
+ }));
108
+ strict_1.default.equal(con.code, 0);
109
+ strict_1.default.match(con.out, /^estela · ACME › Web · hoy 0m · semana 38 % · 5 h 62 %\n$/);
110
+ const sin = estela(home, nc, entrada(repo));
111
+ strict_1.default.equal(sin.out, "estela · ACME › Web · hoy 0m\n");
112
+ });
113
+ (0, node_test_1.test)("un directorio sin proyecto de Estela", () => {
114
+ const { home, repo, db } = entorno();
115
+ proyecto(db, repo);
116
+ // Fuera de git: no hay nada que configurar ahí, así que sin pista.
117
+ const r = estela(home, nc, entrada((0, node_path_1.join)(home, "otro")));
118
+ strict_1.default.equal(r.out, "estela · sin proyecto\n");
119
+ });
120
+ (0, node_test_1.test)("un repo sin proyecto: su raíz, también desde una subcarpeta, con la pista de setup", () => {
121
+ const { home, repo, db } = entorno();
122
+ proyecto(db, repo);
123
+ const otro = (0, node_path_1.join)(home, "repos", "facturas");
124
+ (0, node_fs_1.mkdirSync)((0, node_path_1.join)(otro, ".git"), { recursive: true });
125
+ (0, node_fs_1.mkdirSync)((0, node_path_1.join)(otro, "src", "api"), { recursive: true });
126
+ strict_1.default.equal(estela(home, nc, entrada((0, node_path_1.join)(otro, "src", "api"))).out, "estela · facturas (sin proyecto) · estela setup\n");
127
+ });
128
+ (0, node_test_1.test)("sin base de Estela todavía: sin proyecto, y no se crea ninguna base", () => {
129
+ const { home, repo, db } = entorno();
130
+ const r = estela(home, nc, entrada(repo));
131
+ strict_1.default.equal(r.code, 0);
132
+ strict_1.default.equal(r.out, "estela · sin proyecto\n");
133
+ strict_1.default.ok(!(0, node_fs_1.existsSync)(db), "la status line no es quien empieza a guardar datos");
134
+ // Sin base pero dentro de un repo, se nombra igualmente.
135
+ (0, node_fs_1.mkdirSync)((0, node_path_1.join)(repo, ".git"));
136
+ strict_1.default.equal(estela(home, nc, entrada((0, node_path_1.join)(repo, "src"))).out, "estela · web (sin proyecto) · estela setup\n");
137
+ });
138
+ (0, node_test_1.test)("JSON inválido por stdin: imprime estela y sale con 0, sin trazas", () => {
139
+ const { home } = entorno();
140
+ for (const malo of ["esto no es json", "[1,2]", "{\"workspace\":"]) {
141
+ const r = estela(home, nc, malo);
142
+ strict_1.default.equal(r.code, 0, malo);
143
+ strict_1.default.equal(r.out, "estela\n", malo);
144
+ strict_1.default.equal(r.err, "", "ni por stderr");
145
+ }
146
+ });
147
+ (0, node_test_1.test)("una base corrupta tampoco rompe la línea", () => {
148
+ const { home, repo, db } = entorno();
149
+ (0, node_fs_1.mkdirSync)((0, node_path_1.join)(db, ".."), { recursive: true });
150
+ (0, node_fs_1.writeFileSync)(db, "esto no es una base sqlite");
151
+ const r = estela(home, nc, entrada(repo));
152
+ strict_1.default.equal(r.code, 0);
153
+ strict_1.default.equal(r.out, "estela\n");
154
+ });
155
+ (0, node_test_1.test)("se recorta a COLUMNS", () => {
156
+ const { home, repo, db } = entorno();
157
+ proyecto(db, repo);
158
+ const limites = { rate_limits: { five_hour: { used_percentage: 62 }, seven_day: { used_percentage: 38 } } };
159
+ const ancho = estela(home, nc, entrada(repo, limites), { COLUMNS: "200" }).out.trimEnd();
160
+ const estrecho = estela(home, nc, entrada(repo, limites), { COLUMNS: "30" }).out.trimEnd();
161
+ strict_1.default.match(ancho, /5 h 62 %$/);
162
+ strict_1.default.ok(estrecho.length <= 30, estrecho);
163
+ strict_1.default.ok(estrecho.startsWith("estela · "), estrecho);
164
+ });
165
+ (0, node_test_1.test)("con color: estela en el verde de la marca", () => {
166
+ const { home, repo, db } = entorno();
167
+ proyecto(db, repo);
168
+ const r = estela(home, ["statusline"], entrada(repo));
169
+ strict_1.default.ok(r.out.startsWith("\x1b[38;2;70;192;167mestela"), JSON.stringify(r.out));
170
+ strict_1.default.doesNotMatch(estela(home, ["statusline"], entrada(repo), { NO_COLOR: "1" }).out, /\x1b/);
171
+ });
172
+ // ── Lectura incremental y horas ─────────────────────────────────────────
173
+ (0, node_test_1.test)("las horas de hoy son exactamente las que guarda import para los mismos turnos", () => {
174
+ const { home, repo, db } = entorno();
175
+ proyecto(db, repo);
176
+ const file = transcript(home);
177
+ (0, node_fs_1.writeFileSync)(file, [50, 44, 38, 31, 25, 12, 6].map((m, i) => linea(`msg_${i}`, repo, m)).join(""));
178
+ const linea1 = estela(home, nc, entrada(repo, { transcript_path: file }));
179
+ const hoy = /hoy (\S+)/.exec(linea1.out)?.[1];
180
+ strict_1.default.ok(hoy && hoy !== "0m", linea1.out);
181
+ // Ahora el import de verdad sobre esos mismos transcripts.
182
+ const imp = estela(home, ["import", "--db", db]);
183
+ strict_1.default.equal(imp.code, 0, imp.out + imp.err);
184
+ const conn = (0, schema_js_1.openDatabase)(db);
185
+ try {
186
+ const medidas = store.getTimeEntries(conn, "web")
187
+ .filter((e) => e.source === "agent" && (0, shared_1.localDate)(e.startedAt) === (0, shared_1.localDate)(new Date()))
188
+ .reduce((s, e) => s + e.seconds, 0);
189
+ strict_1.default.equal(hoy, (0, statusline_js_1.compactDuration)(medidas), "la status line y el informe dan la misma cifra");
190
+ }
191
+ finally {
192
+ conn.close();
193
+ }
194
+ });
195
+ (0, node_test_1.test)("lee solo lo nuevo: una línea a medias no se pierde ni se duplica", () => {
196
+ const { home, repo, db } = entorno();
197
+ proyecto(db, repo);
198
+ const file = transcript(home);
199
+ const a = linea("msg_a", repo, 20, 1000);
200
+ const b = linea("msg_b", repo, 10, 2000);
201
+ // La segunda línea aún se está escribiendo: le falta el final.
202
+ (0, node_fs_1.writeFileSync)(file, a + b.slice(0, 40));
203
+ estela(home, nc, entrada(repo, { transcript_path: file }));
204
+ const contar = () => {
205
+ const c = (0, schema_js_1.openDatabase)(db);
206
+ try {
207
+ return store.turnsBetween(c, new Date(0), new Date(Date.now() + 60_000)).map((t) => t.turnId).sort();
208
+ }
209
+ finally {
210
+ c.close();
211
+ }
212
+ };
213
+ strict_1.default.deepEqual(contar(), ["msg_a"]);
214
+ (0, node_fs_1.appendFileSync)(file, b.slice(40));
215
+ estela(home, nc, entrada(repo, { transcript_path: file }));
216
+ estela(home, nc, entrada(repo, { transcript_path: file }));
217
+ strict_1.default.deepEqual(contar(), ["msg_a", "msg_b"], "la línea completada entra una vez");
218
+ // El mismo turno repetido en el transcript (Claude Code lo hace) cuenta una vez.
219
+ (0, node_fs_1.appendFileSync)(file, b);
220
+ const r = JSON.parse(estela(home, ["quota", "--db", db, "--no-refresh", "--json"]).out);
221
+ strict_1.default.equal(r.agents[0].week.total.total, 110 + 1000 + 110 + 2000);
222
+ });
223
+ (0, node_test_1.test)("caché vacía y transcript que encoge: se vuelve a leer desde el principio", () => {
224
+ const { home, repo, db } = entorno();
225
+ proyecto(db, repo);
226
+ const file = transcript(home);
227
+ (0, node_fs_1.writeFileSync)(file, linea("msg_1", repo, 20) + linea("msg_2", repo, 15));
228
+ estela(home, nc, entrada(repo, { transcript_path: file }));
229
+ (0, node_fs_1.writeFileSync)(file, linea("msg_3", repo, 5));
230
+ const r = estela(home, nc, entrada(repo, { transcript_path: file }));
231
+ strict_1.default.equal(r.code, 0);
232
+ const c = (0, schema_js_1.openDatabase)(db);
233
+ try {
234
+ strict_1.default.ok(store.turnsBetween(c, new Date(0), new Date(Date.now() + 60_000)).some((t) => t.turnId === "msg_3"));
235
+ }
236
+ finally {
237
+ c.close();
238
+ }
239
+ });
240
+ (0, node_test_1.test)("este proyecto: su parte de los tokens de Claude Code de la semana", () => {
241
+ const { home, repo, db } = entorno();
242
+ proyecto(db, repo);
243
+ const otro = (0, node_path_1.join)(home, "repos", "otro");
244
+ const file = transcript(home);
245
+ (0, node_fs_1.writeFileSync)(file, linea("m1", repo, 30, 2890) + linea("m2", otro, 20, 8890));
246
+ const r = estela(home, nc, entrada(repo, { transcript_path: file }));
247
+ // 3000 de 12000 tokens: el 25 %.
248
+ strict_1.default.match(r.out, /este proyecto 25 %/);
249
+ });
250
+ (0, node_test_1.test)("rápida: por debajo de 100 ms en una máquina normal", () => {
251
+ const { home, repo, db } = entorno();
252
+ proyecto(db, repo);
253
+ const file = transcript(home);
254
+ (0, node_fs_1.writeFileSync)(file, Array.from({ length: 300 }, (_, i) => linea(`p${i}`, repo, 300 - i)).join(""));
255
+ estela(home, nc, entrada(repo, { transcript_path: file })); // la primera lee el fichero entero
256
+ // El mejor de cinco: los tests corren en paralelo y comparten CPU, así que
257
+ // se mide con margen. La medida limpia, a mano, da unos 50 ms.
258
+ const mejor = Math.min(...Array.from({ length: 5 }, () => estela(home, nc, entrada(repo, { transcript_path: file })).ms));
259
+ strict_1.default.ok(mejor < 250, `${mejor.toFixed(0)} ms`);
260
+ });
261
+ // ── install / uninstall de verdad ───────────────────────────────────────
262
+ (0, node_test_1.test)("install fusiona en ~/.claude/settings.json con copia; uninstall lo deja como estaba", () => {
263
+ const { home } = entorno();
264
+ const dir = (0, node_path_1.join)(home, ".claude");
265
+ (0, node_fs_1.mkdirSync)(dir, { recursive: true });
266
+ const path = (0, node_path_1.join)(dir, "settings.json");
267
+ const original = JSON.stringify({ model: "opus", permissions: { allow: ["Bash(ls)"] } }, null, 2) + "\n";
268
+ (0, node_fs_1.writeFileSync)(path, original);
269
+ const i = estela(home, ["statusline", "install"]);
270
+ strict_1.default.equal(i.code, 0, i.out + i.err);
271
+ const tras = JSON.parse((0, node_fs_1.readFileSync)(path, "utf8"));
272
+ strict_1.default.deepEqual(tras["statusLine"], { type: "command", command: "estela statusline", padding: 0 });
273
+ strict_1.default.deepEqual(tras["permissions"], { allow: ["Bash(ls)"] });
274
+ const copias = (0, node_fs_1.readdirSync)(dir).filter((n) => n.startsWith("settings.json.bak-"));
275
+ strict_1.default.equal(copias.length, 1);
276
+ strict_1.default.equal((0, node_fs_1.readFileSync)((0, node_path_1.join)(dir, copias[0]), "utf8"), original, "la copia es el original");
277
+ const u = estela(home, ["statusline", "uninstall"]);
278
+ strict_1.default.equal(u.code, 0, u.out + u.err);
279
+ strict_1.default.deepEqual(JSON.parse((0, node_fs_1.readFileSync)(path, "utf8")), JSON.parse(original));
280
+ });
281
+ (0, node_test_1.test)("install con otra status line: la enseña, no escribe nada y sale con 1", () => {
282
+ const { home } = entorno();
283
+ const path = (0, node_path_1.join)(home, ".claude", "settings.json");
284
+ (0, node_fs_1.mkdirSync)((0, node_path_1.join)(home, ".claude"), { recursive: true });
285
+ const ajena = JSON.stringify({ statusLine: { type: "command", command: "ccstatusline" } });
286
+ (0, node_fs_1.writeFileSync)(path, ajena);
287
+ const r = estela(home, ["statusline", "install"]);
288
+ strict_1.default.equal(r.code, 1);
289
+ strict_1.default.match(r.out, /ccstatusline/);
290
+ strict_1.default.match(r.out, /--append/);
291
+ strict_1.default.match(r.out, /--force/);
292
+ strict_1.default.equal((0, node_fs_1.readFileSync)(path, "utf8"), ajena, "no se tocó");
293
+ });
294
+ (0, node_test_1.test)("--append ejecuta la otra con el mismo stdin y enseña las dos", () => {
295
+ const { home, repo, db } = entorno();
296
+ proyecto(db, repo);
297
+ const r = estela(home, ["statusline", "--no-color", "--append", "cat >/dev/null; echo otra linea"], entrada(repo));
298
+ strict_1.default.equal(r.out, "estela · ACME › Web · hoy 0m | otra linea\n");
299
+ });
300
+ (0, node_test_1.test)("un turno de scratchpad se devuelve a su repo; si no se puede, no se guarda", () => {
301
+ // Guardarlo con la ruta del scratchpad lo dejaría así para siempre: el
302
+ // `import`, que sí sabría devolverlo, ya no podría reescribirlo (INSERT OR IGNORE).
303
+ const { home, repo, db } = entorno();
304
+ proyecto(db, repo);
305
+ const slug = repo.replace(/[/_.]/g, "-");
306
+ const delRepo = `/private/tmp/claude-502/${slug}/sesion/scratchpad`;
307
+ const ajeno = "/private/tmp/claude-502/-otro-sitio/sesion/scratchpad";
308
+ const file = transcript(home);
309
+ (0, node_fs_1.writeFileSync)(file, linea("sp_ok", delRepo, 20) + linea("sp_no", ajeno, 10));
310
+ estela(home, nc, entrada(repo, { transcript_path: file }));
311
+ const c = (0, schema_js_1.openDatabase)(db);
312
+ try {
313
+ const guardados = store.turnsBetween(c, new Date(0), new Date(Date.now() + 60_000));
314
+ strict_1.default.deepEqual(guardados.map((t) => [t.turnId, t.repoPath]), [["sp_ok", repo]]);
315
+ }
316
+ finally {
317
+ c.close();
318
+ }
319
+ });
320
+ (0, node_test_1.test)("una sesión en un worktree o en una subcarpeta enseña el proyecto del repo", () => {
321
+ const { home, repo, db } = entorno();
322
+ (0, node_fs_1.mkdirSync)((0, node_path_1.join)(repo, ".git", "worktrees", "web-fix"), { recursive: true });
323
+ (0, node_fs_1.writeFileSync)((0, node_path_1.join)(repo, ".git", "worktrees", "web-fix", "commondir"), "../..\n");
324
+ const wt = (0, node_path_1.join)(home, "repos", "web-fix");
325
+ (0, node_fs_1.mkdirSync)((0, node_path_1.join)(wt, "src"), { recursive: true });
326
+ (0, node_fs_1.writeFileSync)((0, node_path_1.join)(wt, ".git"), `gitdir: ${(0, node_path_1.join)(repo, ".git", "worktrees", "web-fix")}\n`);
327
+ (0, node_fs_1.mkdirSync)((0, node_path_1.join)(repo, "packages", "api"), { recursive: true });
328
+ proyecto(db, repo);
329
+ for (const dir of [(0, node_path_1.join)(wt, "src"), (0, node_path_1.join)(repo, "packages", "api")]) {
330
+ strict_1.default.match(estela(home, nc, entrada(dir)).out, /^estela · ACME › Web · hoy/, dir);
331
+ }
332
+ });
333
+ //# sourceMappingURL=cli-statusline.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cli-statusline.test.js","sourceRoot":"","sources":["../src/cli-statusline.test.ts"],"names":[],"mappings":"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"}
package/dist/cli.d.ts.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"cli.d.ts","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":";AA6CA,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAs/DpD,OAAO,EAAE,eAAe,EAAE,CAAC"}
1
+ {"version":3,"file":"cli.d.ts","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":";AA8CA,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAyxEpD,OAAO,EAAE,eAAe,EAAE,CAAC"}