estela 0.1.21 → 0.1.23
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 +110 -95
- package/dist/billing/sessionize.d.ts.map +1 -1
- package/dist/billing/sessionize.js +5 -2
- package/dist/billing/sessionize.js.map +1 -1
- package/dist/billing/sessionize.test.js +26 -0
- package/dist/billing/sessionize.test.js.map +1 -1
- package/dist/cli.d.ts.map +1 -1
- package/dist/cli.js +36 -0
- package/dist/cli.js.map +1 -1
- package/dist/demo.d.ts +9 -0
- package/dist/demo.d.ts.map +1 -0
- package/dist/demo.js +248 -0
- package/dist/demo.js.map +1 -0
- package/dist/demo.test.d.ts +2 -0
- package/dist/demo.test.d.ts.map +1 -0
- package/dist/demo.test.js +148 -0
- package/dist/demo.test.js.map +1 -0
- package/dist/export/share.d.ts.map +1 -1
- package/dist/export/share.js +32 -13
- package/dist/export/share.js.map +1 -1
- package/dist/i18n/en.d.ts.map +1 -1
- package/dist/i18n/en.js +18 -1
- package/dist/i18n/en.js.map +1 -1
- package/dist/server.d.ts +2 -0
- package/dist/server.d.ts.map +1 -1
- package/dist/server.js +9 -0
- package/dist/server.js.map +1 -1
- package/dist/server.test.js +24 -1
- package/dist/server.test.js.map +1 -1
- package/package.json +9 -4
- package/web/app.js +12 -7
|
@@ -0,0 +1,148 @@
|
|
|
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_test_1 = require("node:test");
|
|
41
|
+
const schema_js_1 = require("./db/schema.js");
|
|
42
|
+
const store = __importStar(require("./db/store.js"));
|
|
43
|
+
const demo_js_1 = require("./demo.js");
|
|
44
|
+
/**
|
|
45
|
+
* `estela demo`.
|
|
46
|
+
*
|
|
47
|
+
* Lo que tiene que ser cierto: que enseñe algo parecido a una instalación real
|
|
48
|
+
* usada unas semanas, que no invente futuro, y —lo importante— que no toque ni
|
|
49
|
+
* lea nada de quien la está mirando.
|
|
50
|
+
*/
|
|
51
|
+
const HOY = new Date("2026-09-15T18:00:00");
|
|
52
|
+
function demo(now = HOY) {
|
|
53
|
+
const db = (0, schema_js_1.openDatabase)(":memory:");
|
|
54
|
+
(0, demo_js_1.seedDemo)(db, { now });
|
|
55
|
+
return db;
|
|
56
|
+
}
|
|
57
|
+
(0, node_test_1.test)("demo: sale una instalación con varios proyectos y semanas de trabajo", () => {
|
|
58
|
+
const db = demo();
|
|
59
|
+
try {
|
|
60
|
+
const proyectos = store.listProjects(db);
|
|
61
|
+
strict_1.default.equal(proyectos.length, 3);
|
|
62
|
+
strict_1.default.ok(proyectos.some((p) => p.kind === "client"), "alguno de cliente, o no hay importes");
|
|
63
|
+
strict_1.default.ok(proyectos.some((p) => p.kind === "internal"), "y alguno interno");
|
|
64
|
+
const entradas = proyectos.flatMap((p) => store.getTimeEntries(db, p.id));
|
|
65
|
+
strict_1.default.ok(entradas.length > 30, `pocos bloques: ${entradas.length}`);
|
|
66
|
+
const horas = entradas.reduce((s, e) => s + e.seconds, 0) / 3600;
|
|
67
|
+
strict_1.default.ok(horas > 40 && horas < 400, `horas poco creíbles: ${horas}`);
|
|
68
|
+
// Con agente y sin agente: la demo tiene que poder enseñar las dos cosas.
|
|
69
|
+
strict_1.default.ok(entradas.some((e) => e.source === "agent"));
|
|
70
|
+
strict_1.default.ok(entradas.some((e) => e.source === "manual"), "faltan las horas anotadas a mano");
|
|
71
|
+
strict_1.default.ok(entradas.some((e) => e.aiCost.microUsd > 0), "sin coste de IA no se ve la mitad del producto");
|
|
72
|
+
}
|
|
73
|
+
finally {
|
|
74
|
+
db.close();
|
|
75
|
+
}
|
|
76
|
+
});
|
|
77
|
+
(0, node_test_1.test)("demo: no inventa trabajo en el futuro", () => {
|
|
78
|
+
// Una demo con bloques de mañana se nota al instante y tira por tierra el
|
|
79
|
+
// resto de las cifras.
|
|
80
|
+
const db = demo();
|
|
81
|
+
try {
|
|
82
|
+
const futuro = store.listProjects(db)
|
|
83
|
+
.flatMap((p) => store.getTimeEntries(db, p.id))
|
|
84
|
+
.filter((e) => e.endedAt > HOY);
|
|
85
|
+
strict_1.default.deepEqual(futuro.map((e) => e.id), []);
|
|
86
|
+
}
|
|
87
|
+
finally {
|
|
88
|
+
db.close();
|
|
89
|
+
}
|
|
90
|
+
});
|
|
91
|
+
(0, node_test_1.test)("demo: lo antiguo aparece revisado y lo reciente no", () => {
|
|
92
|
+
// Recién importado, TODO sale pendiente y el panel se llena de avisos. Una
|
|
93
|
+
// instalación con semanas de uso no está así.
|
|
94
|
+
const db = demo();
|
|
95
|
+
try {
|
|
96
|
+
const filas = db.prepare("SELECT approved, COUNT(*) AS n FROM time_entries GROUP BY approved").all();
|
|
97
|
+
const revisados = filas.find((f) => f.approved === 1)?.n ?? 0;
|
|
98
|
+
const pendientes = filas.find((f) => f.approved === 0)?.n ?? 0;
|
|
99
|
+
strict_1.default.ok(revisados > pendientes, `revisados ${revisados}, pendientes ${pendientes}`);
|
|
100
|
+
strict_1.default.ok(pendientes > 0, "algo pendiente tiene que quedar, o no se ve para qué sirve revisar");
|
|
101
|
+
}
|
|
102
|
+
finally {
|
|
103
|
+
db.close();
|
|
104
|
+
}
|
|
105
|
+
});
|
|
106
|
+
(0, node_test_1.test)("demo: hay compañeros que no usan Estela, para la vista de equipo", () => {
|
|
107
|
+
const db = demo();
|
|
108
|
+
try {
|
|
109
|
+
const autores = db.prepare("SELECT DISTINCT author_email FROM commits").all();
|
|
110
|
+
strict_1.default.ok(autores.length >= 4, `solo ${autores.length} personas commitean`);
|
|
111
|
+
// Sus commits están, pero sus horas no se imputan a nadie: se estiman.
|
|
112
|
+
const mios = db.prepare("SELECT COUNT(*) AS n FROM commits WHERE author_email = 'sam@riveradev.io'").get();
|
|
113
|
+
strict_1.default.ok(mios.n > 0 && mios.n < autores.length * 1000);
|
|
114
|
+
}
|
|
115
|
+
finally {
|
|
116
|
+
db.close();
|
|
117
|
+
}
|
|
118
|
+
});
|
|
119
|
+
(0, node_test_1.test)("demo: dos ejecuciones dan exactamente lo mismo", () => {
|
|
120
|
+
// Para que una captura de hoy y otra de dentro de un mes se puedan comparar,
|
|
121
|
+
// y para que los tests no dependan del azar.
|
|
122
|
+
const a = demo(), b = demo();
|
|
123
|
+
try {
|
|
124
|
+
const filas = (db) => db.prepare("SELECT id, seconds, description FROM time_entries ORDER BY id").all();
|
|
125
|
+
strict_1.default.deepEqual(filas(a), filas(b));
|
|
126
|
+
}
|
|
127
|
+
finally {
|
|
128
|
+
a.close();
|
|
129
|
+
b.close();
|
|
130
|
+
}
|
|
131
|
+
});
|
|
132
|
+
(0, node_test_1.test)("demo: solo escribe en la base que se le da", () => {
|
|
133
|
+
// La garantía que se le promete a quien ejecuta `estela demo`: su historial
|
|
134
|
+
// no se lee y su base no se toca. Aquí se comprueba lo segundo.
|
|
135
|
+
const real = (0, schema_js_1.openDatabase)(":memory:");
|
|
136
|
+
store.upsertClient(real, { id: "mio", name: "Cliente real", currency: "EUR" });
|
|
137
|
+
const demoDb = (0, schema_js_1.openDatabase)(":memory:");
|
|
138
|
+
try {
|
|
139
|
+
(0, demo_js_1.seedDemo)(demoDb, { now: HOY });
|
|
140
|
+
strict_1.default.deepEqual(store.listClients(real).map((c) => c.id), ["mio"]);
|
|
141
|
+
strict_1.default.equal(store.listProjects(real).length, 0);
|
|
142
|
+
}
|
|
143
|
+
finally {
|
|
144
|
+
real.close();
|
|
145
|
+
demoDb.close();
|
|
146
|
+
}
|
|
147
|
+
});
|
|
148
|
+
//# sourceMappingURL=demo.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"demo.test.js","sourceRoot":"","sources":["../src/demo.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"share.d.ts","sourceRoot":"","sources":["../../src/export/share.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAC1E,OAAO,EAA0C,KAAK,KAAK,EAAE,MAAM,gBAAgB,CAAC;
|
|
1
|
+
{"version":3,"file":"share.d.ts","sourceRoot":"","sources":["../../src/export/share.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAC1E,OAAO,EAA0C,KAAK,KAAK,EAAE,MAAM,gBAAgB,CAAC;AAGpF;;;;;;;;;;;;;;;GAeG;AAEH,MAAM,WAAW,YAAY;IAC3B,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC;IAC1B,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,OAAO,EAAE,SAAS,SAAS,EAAE,CAAC;IACvC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,iDAAiD;IACjD,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,CAAC;IAC7B,oDAAoD;IACpD,QAAQ,CAAC,WAAW,CAAC,EAAE,OAAO,CAAC;IAC/B,+DAA+D;IAC/D,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC,EAAE,EAAE,IAAI,KAAK,KAAK,GAAG,IAAI,CAAC;IAC7C;;;OAGG;IACH,QAAQ,CAAC,OAAO,CAAC,EAAE,OAAO,CAAC;IAC3B,QAAQ,CAAC,SAAS,CAAC,EAAE,CAAC,MAAM,EAAE,SAAS,MAAM,EAAE,KAAK,SAAS;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE,EAAE,CAAC;CAClG;AAQD,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,YAAY,GAAG,MAAM,CAsC9D"}
|
package/dist/export/share.js
CHANGED
|
@@ -2,6 +2,7 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.buildShareReport = buildShareReport;
|
|
4
4
|
const shared_1 = require("@estela/shared");
|
|
5
|
+
const index_js_1 = require("../i18n/index.js");
|
|
5
6
|
function buildShareReport(options) {
|
|
6
7
|
const { project, client, entries, from, to } = options;
|
|
7
8
|
const included = entries
|
|
@@ -36,7 +37,7 @@ function buildShareReport(options) {
|
|
|
36
37
|
authorName: options.authorName ?? null,
|
|
37
38
|
body: included.length
|
|
38
39
|
? rows
|
|
39
|
-
: `<p class="empty"
|
|
40
|
+
: `<p class="empty">${(0, index_js_1.tr) `No hay trabajo registrado en este periodo.`}</p>`,
|
|
40
41
|
});
|
|
41
42
|
}
|
|
42
43
|
function groupByDay(entries) {
|
|
@@ -87,10 +88,10 @@ function renderDay(day, options, showAmounts) {
|
|
|
87
88
|
function page(d) {
|
|
88
89
|
const amountBlock = d.totalAmount
|
|
89
90
|
? `<div class="kpi"><span class="kpi-v">${esc((0, shared_1.formatMoney)(d.totalAmount))}</span>
|
|
90
|
-
<span class="kpi-l"
|
|
91
|
+
<span class="kpi-l">${(0, index_js_1.tr) `valor del trabajo`}</span></div>`
|
|
91
92
|
: "";
|
|
92
93
|
return `<!doctype html>
|
|
93
|
-
<html lang="
|
|
94
|
+
<html lang="${(0, index_js_1.getLang)()}">
|
|
94
95
|
<head>
|
|
95
96
|
<meta charset="utf-8">
|
|
96
97
|
<meta name="viewport" content="width=device-width, initial-scale=1">
|
|
@@ -145,35 +146,53 @@ footer a{color:var(--jade)}
|
|
|
145
146
|
<div class="wrap">
|
|
146
147
|
<header>
|
|
147
148
|
<h1>${esc(d.project.name)}</h1>
|
|
148
|
-
<p class="meta"
|
|
149
|
-
|
|
149
|
+
<p class="meta">${d.authorName
|
|
150
|
+
? (0, index_js_1.tr) `Informe de horas de ${esc(d.authorName)} para ${esc(d.client.name)}`
|
|
151
|
+
: (0, index_js_1.tr) `Informe de horas para ${esc(d.client.name)}`} · ${(0, index_js_1.tr) `${esc(d.from)} al ${esc(d.to)}`}</p>
|
|
150
152
|
</header>
|
|
151
153
|
|
|
152
154
|
<div class="kpis">
|
|
153
155
|
<div class="kpi"><span class="kpi-v">${esc((0, shared_1.formatDuration)(d.totalSeconds))}</span>
|
|
154
|
-
<span class="kpi-l"
|
|
156
|
+
<span class="kpi-l">${(0, index_js_1.tr) `horas trabajadas`}</span></div>
|
|
155
157
|
<div class="kpi"><span class="kpi-v">${d.dayCount}</span>
|
|
156
|
-
<span class="kpi-l">${d.dayCount === 1 ?
|
|
158
|
+
<span class="kpi-l">${d.dayCount === 1 ? (0, index_js_1.tr) `día con actividad` : (0, index_js_1.tr) `días con actividad`}</span></div>
|
|
157
159
|
${amountBlock}
|
|
158
160
|
</div>
|
|
159
161
|
|
|
160
162
|
${d.body}
|
|
161
163
|
|
|
162
164
|
<footer>
|
|
163
|
-
Generado con Estela a partir de la actividad real de Git y del editor
|
|
164
|
-
Cada bloque está respaldado por sus commits
|
|
165
|
+
${(0, index_js_1.tr) `Generado con Estela a partir de la actividad real de Git y del editor.`}
|
|
166
|
+
${(0, index_js_1.tr) `Cada bloque está respaldado por sus commits.`}<br>
|
|
165
167
|
<a href="https://getestela.dev">getestela.dev</a>
|
|
166
168
|
</footer>
|
|
167
169
|
</div>
|
|
168
170
|
</body>
|
|
169
171
|
</html>`;
|
|
170
172
|
}
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
173
|
+
/**
|
|
174
|
+
* "lunes 14 de septiembre" o "Monday, September 14".
|
|
175
|
+
*
|
|
176
|
+
* A mano y no con `toLocaleDateString`: este HTML lo abre el cliente en su
|
|
177
|
+
* navegador, pero lo genera tu máquina, y el idioma tiene que ser el del
|
|
178
|
+
* documento, no el de quien lo lee ni el del sistema que lo generó.
|
|
179
|
+
*/
|
|
180
|
+
const MESES = {
|
|
181
|
+
es: ["enero", "febrero", "marzo", "abril", "mayo", "junio",
|
|
182
|
+
"julio", "agosto", "septiembre", "octubre", "noviembre", "diciembre"],
|
|
183
|
+
en: ["January", "February", "March", "April", "May", "June",
|
|
184
|
+
"July", "August", "September", "October", "November", "December"],
|
|
185
|
+
};
|
|
186
|
+
const DIAS = {
|
|
187
|
+
es: ["domingo", "lunes", "martes", "miércoles", "jueves", "viernes", "sábado"],
|
|
188
|
+
en: ["Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"],
|
|
189
|
+
};
|
|
174
190
|
function longDate(iso) {
|
|
175
191
|
const d = new Date(`${iso}T12:00:00Z`);
|
|
176
|
-
|
|
192
|
+
const lang = (0, index_js_1.getLang)();
|
|
193
|
+
const dia = DIAS[lang][d.getUTCDay()];
|
|
194
|
+
const mes = MESES[lang][d.getUTCMonth()];
|
|
195
|
+
return lang === "en" ? `${dia}, ${mes} ${d.getUTCDate()}` : `${dia} ${d.getUTCDate()} de ${mes}`;
|
|
177
196
|
}
|
|
178
197
|
function esc(text) {
|
|
179
198
|
return text.replace(/[&<>"']/g, (c) => ({ "&": "&", "<": "<", ">": ">", '"': """, "'": "'" }[c]));
|
package/dist/export/share.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"share.js","sourceRoot":"","sources":["../../src/export/share.ts"],"names":[],"mappings":";;
|
|
1
|
+
{"version":3,"file":"share.js","sourceRoot":"","sources":["../../src/export/share.ts"],"names":[],"mappings":"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"}
|
package/dist/i18n/en.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"en.d.ts","sourceRoot":"","sources":["../../src/i18n/en.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AACH,eAAO,MAAM,EAAE,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CA+
|
|
1
|
+
{"version":3,"file":"en.d.ts","sourceRoot":"","sources":["../../src/i18n/en.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AACH,eAAO,MAAM,EAAE,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CA+nBrC,CAAC"}
|
package/dist/i18n/en.js
CHANGED
|
@@ -37,8 +37,10 @@ exports.EN = {
|
|
|
37
37
|
"Interno (no facturado): IA del periodo {0} USD ": "Internal (not billed): AI for the period {0} USD ",
|
|
38
38
|
"en tarifa API equivalente.": "at equivalent API pricing.",
|
|
39
39
|
// ── billing/sessionize.ts ──
|
|
40
|
+
"{0} (+1 commit más)": "{0} (+1 more commit)",
|
|
40
41
|
"{0} (+{1} commits más)": "{0} (+{1} more commits)",
|
|
41
42
|
"Desarrollo en {0}": "Development on {0}",
|
|
43
|
+
"Desarrollo": "Development",
|
|
42
44
|
// ── billing.ts ──
|
|
43
45
|
"Necesitas una cuenta para esto. Vincúlala con:\n\n": "You need an account for this. Link it with:\n\n",
|
|
44
46
|
" estela login --email tu@correo.com\n": " estela login --email you@example.com\n",
|
|
@@ -48,7 +50,6 @@ exports.EN = {
|
|
|
48
50
|
"Actualiza con nvm (nvm install --lts) o desde https://nodejs.org, y vuelve a intentarlo.\n": "Upgrade with nvm (nvm install --lts) or from https://nodejs.org, then try again.\n",
|
|
49
51
|
// ── cli.ts ──
|
|
50
52
|
"Falta --{0}": "Missing --{0}",
|
|
51
|
-
"Desarrollo": "Development",
|
|
52
53
|
"Reunión": "Meeting",
|
|
53
54
|
"Investigación": "Research",
|
|
54
55
|
"Revisión": "Review",
|
|
@@ -58,6 +59,9 @@ exports.EN = {
|
|
|
58
59
|
"\n Estela {0}": "\n Estela {0}",
|
|
59
60
|
" Datos: {0}": " Data: {0}",
|
|
60
61
|
"\n Ctrl+C para parar.\n": "\n Ctrl+C to stop.\n",
|
|
62
|
+
"\n Estela — demo con datos inventados {0}": "\n Estela — demo with made-up data {0}",
|
|
63
|
+
" No es tu trabajo: no se ha tocado tu base ni se ha leído nada tuyo.": " This isn't your work: nothing of yours was read, and your data wasn't touched.",
|
|
64
|
+
" Para el tuyo de verdad: estela setup": " For your real one: estela setup",
|
|
61
65
|
"\nEstela\n": "\nEstela\n",
|
|
62
66
|
"Leyendo lo que tus agentes ya guardaron en disco…": "Reading what your agents already saved to disk…",
|
|
63
67
|
"\n No se han encontrado sesiones de Claude Code en ~/.claude, ni": "\n No Claude Code sessions found in ~/.claude, and no",
|
|
@@ -229,6 +233,8 @@ exports.EN = {
|
|
|
229
233
|
"La base de datos usa el esquema v{0} y esta versión de Estela entiende hasta ": "The database uses schema v{0} and this version of Estela understands up to ",
|
|
230
234
|
"v{0}. Actualiza Estela antes de continuar.": "v{0}. Update Estela before continuing.",
|
|
231
235
|
"Falló la migración v{0} ({1}): ": "Migration v{0} failed ({1}): ",
|
|
236
|
+
// ── demo.ts ──
|
|
237
|
+
"Seguimiento semanal con Northwind": "Weekly sync with Northwind",
|
|
232
238
|
// ── doctor.ts ──
|
|
233
239
|
"No hay ningún proyecto configurado": "No project is set up",
|
|
234
240
|
"Sin proyectos no se imputa nada, aunque se esté capturando trabajo.": "Without projects nothing gets assigned, even though work is being captured.",
|
|
@@ -276,6 +282,17 @@ exports.EN = {
|
|
|
276
282
|
" Nada grave: 1 aviso.": " Nothing serious: 1 warning.",
|
|
277
283
|
" Nada grave: {0} avisos.": " Nothing serious: {0} warnings.",
|
|
278
284
|
" Solo notas informativas.": " Only informational notes.",
|
|
285
|
+
// ── export/share.ts ──
|
|
286
|
+
"No hay trabajo registrado en este periodo.": "No work recorded in this period.",
|
|
287
|
+
"valor del trabajo": "value of work",
|
|
288
|
+
"Informe de horas de {0} para {1}": "Hours report by {0} for {1}",
|
|
289
|
+
"Informe de horas para {0}": "Hours report for {0}",
|
|
290
|
+
"{0} al {1}": "{0} to {1}",
|
|
291
|
+
"horas trabajadas": "hours worked",
|
|
292
|
+
"día con actividad": "day with activity",
|
|
293
|
+
"días con actividad": "days with activity",
|
|
294
|
+
"Generado con Estela a partir de la actividad real de Git y del editor.": "Generated with Estela from real Git and editor activity.",
|
|
295
|
+
"Cada bloque está respaldado por sus commits.": "Every block is backed by its commits.",
|
|
279
296
|
// ── publish.ts ──
|
|
280
297
|
"Necesitas una cuenta para publicar. Vincúlala con:\n\n": "You need an account to publish. Link it with:\n\n",
|
|
281
298
|
// ── server.ts ──
|
package/dist/i18n/en.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"en.js","sourceRoot":"","sources":["../../src/i18n/en.ts"],"names":[],"mappings":";;;AAAA;;;;;;;GAOG;AACU,QAAA,EAAE,GAA2B;IACxC,4BAA4B;IAC5B,yDAAyD,EACvD,8DAA8D;IAChE,2EAA2E,EACzE,oFAAoF;IACtF,2BAA2B;IAC3B,2DAA2D,EACzD,0CAA0C;IAC5C,0CAA0C,EACxC,wCAAwC;IAC1C,+EAA+E,EAC7E,4EAA4E;IAC9E,+DAA+D,EAC7D,uDAAuD;IACzD,kFAAkF,EAChF,+EAA+E;IACjF,+DAA+D,EAC7D,yDAAyD;IAC3D,6DAA6D,EAC3D,gEAAgE;IAClE,4DAA4D,EAC1D,yDAAyD;IAC3D,sBAAsB,EACpB,kBAAkB;IACpB,cAAc,EACZ,aAAa;IACf,gBAAgB,EACd,gBAAgB;IAClB,gBAAgB,EACd,gBAAgB;IAClB,yBAAyB,EACvB,yBAAyB;IAC3B,UAAU,EACR,aAAa;IACf,QAAQ,EACN,MAAM;IACR,QAAQ,EACN,MAAM;IACR,SAAS,EACP,QAAQ;IACV,eAAe,EACb,WAAW;IACb,2CAA2C,EACzC,0CAA0C;IAC5C,mBAAmB,EACjB,eAAe;IACjB,iDAAiD,EAC/C,mDAAmD;IACrD,4BAA4B,EAC1B,4BAA4B;IAC9B,8BAA8B;IAC9B,wBAAwB,EACtB,yBAAyB;IAC3B,mBAAmB,EACjB,oBAAoB;IACtB,mBAAmB;IACnB,oDAAoD,EAClD,iDAAiD;IACnD,wCAAwC,EACtC,0CAA0C;IAC5C,yDAAyD,EACvD,+DAA+D;IACjE,eAAe;IACf,iEAAiE,EAC/D,8DAA8D;IAChE,4FAA4F,EAC1F,oFAAoF;IACtF,eAAe;IACf,aAAa,EACX,eAAe;IACjB,
|
|
1
|
+
{"version":3,"file":"en.js","sourceRoot":"","sources":["../../src/i18n/en.ts"],"names":[],"mappings":"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"}
|
package/dist/server.d.ts
CHANGED
|
@@ -6,6 +6,8 @@ export interface ServerOptions {
|
|
|
6
6
|
readonly autoImportMinutes?: number;
|
|
7
7
|
/** Solo para tests: recibe el servidor para poder cerrarlo al terminar. */
|
|
8
8
|
readonly onServer?: (server: Server) => void;
|
|
9
|
+
/** `estela demo`: datos inventados, y ningún import que los pise. */
|
|
10
|
+
readonly demo?: boolean;
|
|
9
11
|
}
|
|
10
12
|
export interface ImportStatus {
|
|
11
13
|
readonly at: string;
|
package/dist/server.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"AAAA,OAAO,EAAsC,KAAK,MAAM,EAAuB,MAAM,WAAW,CAAC;AAoEjG,MAAM,WAAW,aAAa;IAC5B,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC;IACzB,8CAA8C;IAC9C,QAAQ,CAAC,iBAAiB,CAAC,EAAE,MAAM,CAAC;IACpC,2EAA2E;IAC3E,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,IAAI,CAAC;
|
|
1
|
+
{"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"AAAA,OAAO,EAAsC,KAAK,MAAM,EAAuB,MAAM,WAAW,CAAC;AAoEjG,MAAM,WAAW,aAAa;IAC5B,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC;IACzB,8CAA8C;IAC9C,QAAQ,CAAC,iBAAiB,CAAC,EAAE,MAAM,CAAC;IACpC,2EAA2E;IAC3E,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,IAAI,CAAC;IAC7C,qEAAqE;IACrE,QAAQ,CAAC,IAAI,CAAC,EAAE,OAAO,CAAC;CACzB;AA6ED,MAAM,WAAW,YAAY;IAC3B,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,EAAE,EAAE,OAAO,CAAC;IACrB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IAC9B,gFAAgF;IAChF,QAAQ,CAAC,OAAO,CAAC,EAAE,OAAO,CAAC;CAC5B;AAcD,wBAAgB,eAAe,IAAI,YAAY,GAAG,IAAI,CAErD;AA2CD,wBAAgB,WAAW,CAAC,OAAO,GAAE,aAAkB,GAAG,OAAO,CAAC,MAAM,CAAC,CAsBxE"}
|
package/dist/server.js
CHANGED
|
@@ -227,6 +227,10 @@ function startServer(options = {}) {
|
|
|
227
227
|
const port = options.port ?? 4319;
|
|
228
228
|
const dbPath = options.dbPath ?? schema_js_1.DEFAULT_DB_PATH;
|
|
229
229
|
const autoMinutes = options.autoImportMinutes ?? 5;
|
|
230
|
+
// En la demo, el botón "Actualizar" del panel leería los transcripts REALES
|
|
231
|
+
// de quien la está mirando y los metería en la base de ejemplo. Un flag de
|
|
232
|
+
// módulo basta: en un proceso solo hay un servidor.
|
|
233
|
+
modoDemo = options.demo === true;
|
|
230
234
|
if (autoMinutes > 0)
|
|
231
235
|
startAutoImport(dbPath, autoMinutes);
|
|
232
236
|
const server = (0, node_http_1.createServer)((req, res) => {
|
|
@@ -249,6 +253,7 @@ function startServer(options = {}) {
|
|
|
249
253
|
function handle(req, res, dbPath) {
|
|
250
254
|
return (0, index_js_2.withLang)(req.headers["x-estela-lang"] === "en" ? "en" : "es", () => handleRequest(req, res, dbPath));
|
|
251
255
|
}
|
|
256
|
+
let modoDemo = false;
|
|
252
257
|
async function handleRequest(req, res, dbPath) {
|
|
253
258
|
const url = new URL(req.url ?? "/", "http://127.0.0.1");
|
|
254
259
|
const path = url.pathname;
|
|
@@ -256,6 +261,10 @@ async function handleRequest(req, res, dbPath) {
|
|
|
256
261
|
// cinco minutos. Va antes que api() porque importOnce abre su propia conexión
|
|
257
262
|
// y no hace falta una segunda sobre el mismo fichero.
|
|
258
263
|
if (path === "/api/import" && req.method === "POST") {
|
|
264
|
+
// En demo no se importa nada: los transcripts de quien mira la demo son
|
|
265
|
+
// suyos y no tienen nada que hacer en una base de ejemplo.
|
|
266
|
+
if (modoDemo)
|
|
267
|
+
return json(res, 200, { at: new Date().toISOString(), ok: true, blocks: 0, error: null });
|
|
259
268
|
return json(res, 200, await runImport(dbPath));
|
|
260
269
|
}
|
|
261
270
|
if (path === "/api/import-status" && req.method === "GET") {
|